diff --git a/README.md b/README.md index 68b520cf..40e909c7 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ composer 2 PHP 8.1 ## Assets -``npm run encore -- dev --watch`` +``npx encore dev --watch`` ## translate @@ -58,8 +58,11 @@ Pour que les pages crudAction d'easyadmin ne plante pas, il faut exclure ainsi p 'required' => true, ], 'content' => [ - 'field_type' => CKEditorType::class, + 'field_type' => TextareaType::class, 'required' => true, + 'attr' => [ + 'class' => 'use-trumbowyg' + ] ] ]) ->hideOnIndex(); diff --git a/assets/app.js b/assets/app.js index fbeff236..3a096a97 100644 --- a/assets/app.js +++ b/assets/app.js @@ -6,9 +6,8 @@ */ // any CSS you import will output into a single css file (app.css in this case) -import './styles/app.scss'; -import 'bootstrap'; -import 'bootstrap-autocomplete'; -import 'ckeditor4'; -import 'select2'; -import './main'; +import "./styles/app.scss"; +import "bootstrap"; +import "bootstrap-autocomplete"; +import "select2"; +import "./main"; diff --git a/assets/election.js b/assets/election.js new file mode 100644 index 00000000..2ce332ec --- /dev/null +++ b/assets/election.js @@ -0,0 +1 @@ +import "./search-election"; diff --git a/assets/img/bg/election-results-bg.jpg b/assets/img/bg/election-results-bg.jpg new file mode 100644 index 00000000..9106c361 Binary files /dev/null and b/assets/img/bg/election-results-bg.jpg differ diff --git a/assets/img/bg/elections-infos-bg.jpg b/assets/img/bg/elections-infos-bg.jpg new file mode 100644 index 00000000..223c4e7f Binary files /dev/null and b/assets/img/bg/elections-infos-bg.jpg differ diff --git a/assets/img/bg/federal-infos-bg.jpg b/assets/img/bg/federal-infos-bg.jpg new file mode 100644 index 00000000..fd000959 Binary files /dev/null and b/assets/img/bg/federal-infos-bg.jpg differ diff --git a/assets/img/bg/legislatives-infos-bg.jpg b/assets/img/bg/legislatives-infos-bg.jpg new file mode 100644 index 00000000..c8ff138a Binary files /dev/null and b/assets/img/bg/legislatives-infos-bg.jpg differ diff --git a/assets/img/bg/non-federal-bg.jpg b/assets/img/bg/non-federal-bg.jpg new file mode 100644 index 00000000..b6ae909f Binary files /dev/null and b/assets/img/bg/non-federal-bg.jpg differ diff --git a/assets/img/bg/non-federal-bg.png b/assets/img/bg/non-federal-bg.png deleted file mode 100644 index b7b07021..00000000 Binary files a/assets/img/bg/non-federal-bg.png and /dev/null differ diff --git a/assets/js/i18n/fr.js b/assets/js/i18n/fr.js new file mode 100644 index 00000000..614946fd --- /dev/null +++ b/assets/js/i18n/fr.js @@ -0,0 +1,3 @@ +/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/fr",[],function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var n=e.input.length-e.maximum;return"Supprimez "+n+" caractère"+(n>1?"s":"")},inputTooShort:function(e){var n=e.minimum-e.input.length;return"Saisissez au moins "+n+" caractère"+(n>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"},removeItem:function(){return"Supprimer l'élément"},search:function(){return"Rechercher"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/assets/js/i18n/nl.js b/assets/js/i18n/nl.js new file mode 100644 index 00000000..eb1c45e0 --- /dev/null +++ b/assets/js/i18n/nl.js @@ -0,0 +1,3 @@ +/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ + +!function(){if(jQuery&&jQuery.fn&&jQuery.fn.select2&&jQuery.fn.select2.amd)var e=jQuery.fn.select2.amd;e.define("select2/i18n/nl",[],function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var n=1==e.maximum?"kan":"kunnen",r="Er "+n+" maar "+e.maximum+" item";return 1!=e.maximum&&(r+="s"),r+=" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}}),e.define,e.require}(); \ No newline at end of file diff --git a/assets/main.js b/assets/main.js index 93b9757f..f098b6e7 100644 --- a/assets/main.js +++ b/assets/main.js @@ -1,14 +1,32 @@ // PAGE -$('.page > p').wrap('
'); -$('.paragraph:odd').addClass('odd-paragraph'); -$('.paragraph:even').addClass('even-paragraph'); +$(".page > p").wrap('
'); +$(".paragraph:odd").addClass("odd-paragraph"); +$(".paragraph:even").addClass("even-paragraph"); // PARTIS -$('#showNonFederal').on('click',() =>{ - $('.federal-hidden').toggle(500); - $('#showNonFederal').fadeOut(500); -}) -$('#showDisappeared').on('click',() =>{ - $('.disappeared-hidden').toggle(500); - $('#showDisappeared').fadeOut(500); -}) \ No newline at end of file +$("#showNonFederal").on("click", () => { + $(".federal-hidden").toggle(500); + $("#showNonFederal").fadeOut(500); +}); +$("#showDisappeared").on("click", () => { + $(".disappeared-hidden").toggle(500); + $("#showDisappeared").fadeOut(500); +}); + +// TYPE ELECTION + +const $btn = $("#btn-show-more"); +const showMoreText = $btn.data("show-more"); +const showLessText = $btn.data("show-less"); +const $collapseEl = $("#election-more"); +const $firstTable = $(".history > table"); + +$collapseEl.on("show.bs.collapse", function () { + $firstTable.css("margin-bottom", 0); + $btn.text(showLessText); +}); + +$collapseEl.on("hide.bs.collapse", function () { + $firstTable.css("margin-bottom", "1rem"); + $btn.text(showMoreText); +}); diff --git a/assets/search-election.js b/assets/search-election.js new file mode 100644 index 00000000..e97e9ccd --- /dev/null +++ b/assets/search-election.js @@ -0,0 +1,91 @@ +//import des fichiers de traduction pour Select2 +import "./js/i18n/fr.js"; +import "./js/i18n/nl.js"; + +$("#selectElection").on("select2:select", function (e) { + const data = e.params.data; + const slug = data.slug; + window.location.href = `/election/${slug}`; +}); + +$(".filterSelect").select2({ + theme: "bootstrap-5", +}); + +//data-attribut dans le select sur la page Election par type +const typeId = $("#selectElection").data("type-id"); + +//configuration de l'appel API pour la recherche des élections +const apiCall = { + ajax: { + delay: 200, + data: function (params) { + //les valeurs saisies par l'utilisateur, on les nettoie et on les transforme en un objet de requête + const term = params.term?.trim() || ""; + + // /\s+/ un ou plusieurs espaces blancs et virgule + const parts = term.split(/[\s,]+/); + + let nameParts = []; + let datePart = []; + + parts.forEach((part) => { + //vérifie que ça contient uniquement des chiffres + if (/^\d+$/.test(part)) { + datePart.push(part); + } else { + nameParts.push(part); + } + }); + + let query = { + itemsPerPage: 30, + page: params.page || 1, + }; + + if (typeId) { + query["idTypeElection.id"] = typeId; + } + + if (nameParts) { + query.name = nameParts; + } + + if (datePart) { + query.date = datePart; + } + + return query; + }, + + //Réponse de l'API + processResults: function (data) { + const results = data["hydra:member"].map((item) => { + return { + id: item.id, + text: item.name + " (" + item.date + ")", // Concaténation nom + date (ce qui est affiché) + + //valeurs à envoyer dans l'événement select2:select + date: item.date, + slug: item.slug, + }; + }); + return { + results, + pagination: { + more: data["hydra:view"]["hydra:last"] !== undefined, + }, + }; + }, + }, +}; + +//Langue de l'application, on la récupère depuis l'URL +const lang = window.location.pathname.split("/")[1] || "en"; +const apiElection = apiCall; +apiElection.ajax.url = "/api/elections"; +apiElection.placeholder = $("#placeholderSelectElection").html() ?? "Select an election"; +apiElection.language = lang; + +//Initialise Select2 avec l'Api call +$("#selectElection").select2(apiElection); diff --git a/assets/search-parti.js b/assets/search-parti.js index 3c2a2d0e..0b4343b6 100644 --- a/assets/search-parti.js +++ b/assets/search-parti.js @@ -1,40 +1,42 @@ -$('.parti-search').on('change', function (e) { - window.location.href = 'parti/' + $(this).val(); +$(".parti-search").on("change", function (e) { + window.location.href = "parti/" + $(this).val(); }); $(".filterSelect").select2({ - theme: "bootstrap-5", + theme: "bootstrap-5", }); let apiCall = { - ajax: { - delay: 1000, - data: function (params) { - var query = { - itemsPerPage: 30, - page: params.page || 1, - logo: params.term - } - return query; + ajax: { + delay: 1000, + data: function (params) { + var query = { + itemsPerPage: 30, + page: params.page || 1, + logo: params.term, + }; + return query; + }, + processResults: function (data) { + let results = data["hydra:member"].map((item) => { + return { + id: item.id, + text: item.acronym, + }; + }); + return { + results, + pagination: { + more: data["hydra:view"]["hydra:last"] !== undefined, }, - processResults: function (data) { - let results = data["hydra:member"].map((item) => { - return { - "id": item.id, - "text": item.acronym - } - }) - return { - results, - pagination: { - more: data["hydra:view"]["hydra:last"] !== undefined - } - }; - } - } -} + }; + }, + }, +}; let apiParti = apiCall; -apiParti.ajax.url = '/api/partis'; -apiParti.placeholder = $('#placeholderSelectParti').html() ?? "Select a parti"; -$('#selectParti').select2(apiParti); \ No newline at end of file +apiParti.ajax.url = "/api/partis"; +apiParti.placeholder = $("#placeholderSelectParti").html() ?? "Select a parti"; +$("#selectParti").select2(apiParti); + +console.log("esai"); diff --git a/assets/styles/app.scss b/assets/styles/app.scss index e841c4dc..6cc72440 100644 --- a/assets/styles/app.scss +++ b/assets/styles/app.scss @@ -6,6 +6,7 @@ $secondary: #9f3787; $grey: #eaeff2; $white: #ffffff; $black: #000000; +$midnight-blue: #07111f; $dark: $primary; $btn-border-radius: 2em; $btn-border-radius-sm: 1em; @@ -25,25 +26,76 @@ $dropdown-dark-bg: $primary; //################# @font-face { - font-family: "MuseoModerno"; - src: url("../fonts/MuseoModerno-Regular.ttf"); - font-display: swap; + font-family: "MuseoModerno"; + src: url("../fonts/MuseoModerno-Regular.ttf"); + font-display: swap; } @font-face { - font-family: "MuseoModerno-Bold"; - src: url("../fonts/MuseoModerno-Bold.ttf"); - font-display: swap; + font-family: "MuseoModerno-Bold"; + src: url("../fonts/MuseoModerno-Bold.ttf"); + font-display: swap; } @font-face { - font-family: "PT-Bold"; - src: url("../fonts/PTS75F.ttf"); - font-display: swap; + font-family: "PT-Bold"; + src: url("../fonts/PTS75F.ttf"); + font-display: swap; } @font-face { - font-family: "PT"; - src: url("../fonts/PTS55F.ttf"); - font-display: swap; + font-family: "PT"; + src: url("../fonts/PTS55F.ttf"); + font-display: swap; +} + +//#################### +//##### MIXINS ##### +//#################### + +@mixin respond-to-mobile { + @media (max-width: 575.98px) { + @content; + } +} + +@mixin respond-to-tablet { + @media (min-width: 576px) and (max-width: 991.98px) { + @content; + } +} + +@mixin respond-to-mobile-and-tablet { + @media (max-width: 990px) { + @content; + } +} + +@mixin background-stretch($image-url, $blur: false) { + position: relative; + z-index: 1; + overflow: hidden; + + &::before { + content: ""; + position: absolute; + top: -10px; + bottom: -10px; + left: -10px; + right: -10px; + background-image: url(#{$image-url}); + background-repeat: no-repeat; + background-size: cover; + background-position: center; + z-index: -1; + filter: if($blur, blur(8px), none); + } + + &::after { + content: ""; + position: absolute; + inset: 0; + background: inherit; + z-index: 0; + } } //################## @@ -51,297 +103,346 @@ $dropdown-dark-bg: $primary; //################## body { - background-color: $white; - font-family: "PT"; + background-color: $white; + font-family: "PT"; + color: $midnight-blue; + font-size: clamp(1rem, 2vw, 1.375rem); } @media only screen and (min-width: 990px) { - .nav-link:after { - position: relative; - top: 19px; - display: block; - content: ""; - border-bottom: solid 8px transparent; - } - .nav-link.active:after, - .nav-link:not(.active):hover:after { - position: relative; - top: 19px; - display: block; - content: ""; - border-bottom: solid 8px $secondary; - animation: border_anim 0.1s linear forwards; - } + .nav-link:after { + position: relative; + top: 19px; + display: block; + content: ""; + border-bottom: solid 8px transparent; + } + .nav-link.active:after, + .nav-link:not(.active):hover:after { + position: relative; + top: 19px; + display: block; + content: ""; + border-bottom: solid 8px $secondary; + animation: border_anim 0.1s linear forwards; + } } .bg-grey { - background-color: $grey; + background-color: $grey; +} + +.bg-blue { + background-color: $primary; + color: $white; } @keyframes border_anim { - 0% { - width: 0%; - } - 100% { - width: 100%; - } + 0% { + width: 0%; + } + 100% { + width: 100%; + } +} + +.bg-midnight-blue { + background-color: $midnight-blue; + color: $white; +} + +.bg-blur { + background-color: rgba(255, 255, 255, 0.6); } a { - text-decoration: none; + text-decoration: none; } footer { - a { - color: $grey; - } - a:hover { - color: $white; - text-decoration: underline; - } - .logo { - max-height: 3em; - max-width: 90%; - } + a { + color: $grey; + } + a:hover { + color: $white; + text-decoration: underline; + } + .logo { + max-height: 3em; + max-width: 90%; + } } .nav-item { - margin-right: 1.5em; + margin-right: 1.5em; } .logo { - max-height: 2em; + max-height: 2em; } .social-logo { - height: 2em; - margin-left: 1em; - filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); + height: 2em; + margin-left: 1em; + filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); } .bg-primary { - color: $white; + color: $white; } h1, h2, h3, h4 { - font-family: "MuseoModerno-Bold"; + font-family: "MuseoModerno-bold", sans-serif; + font-weight: 700; } -h2{ - font-size: 1.7em; - margin: 1.5rem 0rem; +h2 { + font-size: 2rem; + margin: 1.5rem 0rem; } -h3{ - font-size: 1.1em; +h3 { + font-size: 1.5rem; } h1 { - font-size: calc(1.375rem + 2vw); - line-height: 1; - margin-bottom:.5em; + font-size: clamp(3rem, 5vw, 5rem); + line-height: 1; + margin-bottom: 0.5em; } .bootstrap-autocomplete.dropdown-menu { - display: block; + display: block; } .btn-secondary:hover { - background-color: $primary; - border-color: $primary; - color: $white; + background-color: $primary; + border-color: $primary; + color: $white; } @media only screen and (min-width: 990px) { - .section-2 { - background: linear-gradient(90deg, $primary 40%, $grey 40%); - } + .section-2 { + background: linear-gradient(90deg, $primary 40%, $grey 40%); + } } .section-2 { - .form-control { - background-color: $primary; - color: $white; - } - .form-control::placeholder { - color: $gray-500; - } + .form-control { + background-color: $primary; + color: $white; + } + .form-control::placeholder { + color: $gray-500; + } } .isDark { - color: $white; + color: $white; } -.illustration{ - padding:3rem; +.illustration { + padding: 3rem; +} + +.search-module { + background-color: $primary; + border-radius: 10px; + + .search-select-wrapper { + max-width: 600px; + margin: 0 auto; + } + + .custom-select { + padding: 0.6rem 1rem; + } } //#################### //##### HOMEPAGE ##### //#################### .search-part { - background-color: $primary; - @include media-breakpoint-up(lg) { - padding-right: 5em; - border-radius: 300rem; - } - img { - max-width: 5rem; - margin-bottom: 1rem; - } + background-color: $primary; + @include media-breakpoint-up(lg) { + padding-right: 5em; + border-radius: 300rem; + } + img { + max-width: 5rem; + margin-bottom: 1rem; + } } .random-part { - background-color: $grey; + background-color: $grey; } .logo-random-card { - width: 7rem; + width: 7rem; } .btn { - letter-spacing: 0.1rem; - font-family: "PT-Bold"; + letter-spacing: 0.1rem; + font-family: "PT-Bold"; } .outer { - overflow: hidden; + overflow: hidden; } .inner { - width: 150%; - display: flex; - min-height: 20vh; - position: relative; - max-height: 80vh; - h3 { - text-decoration: underline; - text-decoration-color: $secondary; - font-size: 1.5em; - } + width: 150%; + display: flex; + min-height: 20vh; + position: relative; + max-height: 80vh; + h3 { + text-decoration: underline; + text-decoration-color: $secondary; + font-size: 1.5em; + } } #map, #donut { - // height: 100%; - width: 70%; + // height: 100%; + width: 70%; } .canvas-container { - height: 100%; + height: 100%; } #switcherMap { - cursor: pointer; - height: 100%; - background-color: $primary; - transform: translate(-1px); - clip-path: polygon(0 0, 0 0, 100% 50%, 0 100%, 0 100%); - img { - width: 70%; - animation: pulse 1s linear infinite; - transition: transform 1s; - } + cursor: pointer; + height: 100%; + background-color: $primary; + transform: translate(-1px); + clip-path: polygon(0 0, 0 0, 100% 50%, 0 100%, 0 100%); + img { + width: 70%; + animation: pulse 1s linear infinite; + transition: transform 1s; + } } .switcher-bg { - background-color: $grey; + background-color: $grey; } .left { - .switcher-bg { - background-color: $primary; - } - #switcherMap { - background-color: $grey; - clip-path: polygon(100% 0, 0 50%, 100% 100%, 100% 0); - transform: translate(1px); - img { - background: $primary; - border-radius: 50%; - transform: rotate(180deg); - } + .switcher-bg { + background-color: $primary; + } + #switcherMap { + background-color: $grey; + clip-path: polygon(100% 0, 0 50%, 100% 100%, 100% 0); + transform: translate(1px); + img { + background: $primary; + border-radius: 50%; + transform: rotate(180deg); } + } } @-webkit-keyframes pulse { - 0% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } - 50% { - -webkit-transform: scale(0.9); - transform: scale(0.9); - } - 100% { - -webkit-transform: scale(1.1); - transform: scale(1.1); - } + 0% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } + 50% { + -webkit-transform: scale(0.9); + transform: scale(0.9); + } + 100% { + -webkit-transform: scale(1.1); + transform: scale(1.1); + } } @media only screen and (min-width: 768px) { - .parti-card-random { - margin-left: 10vw; - .logo-parti { - position: relative; - transform: translate(-50%, 0px); - } - .card-body { - position: relative; - transform: translate(-10%, 0px); - width: 110%; - } + .parti-card-random { + margin-left: 10vw; + .logo-parti { + position: relative; + transform: translate(-50%, 0px); + } + .card-body { + position: relative; + transform: translate(-10%, 0px); + width: 110%; } + } } .parti-card-random { - text-align: left; - hr { - border: 3px solid $secondary; - width: 30%; - opacity: 1; - } + text-align: left; + hr { + border: 3px solid $secondary; + width: 30%; + opacity: 1; + } } .parti-card { - border: 1px solid $grey; - background-color: transparent; - img { - max-width: 40%; - } - .btn:hover { - filter: invert(0.2); - } + border: 1px solid $grey; + background-color: transparent; + img { + max-width: 40%; + } + .btn:hover { + filter: invert(0.2); + } } .border-between { + .col { + border: none; + } + + @include media-breakpoint-up(md) { + .col:last-child { + border: none; + } .col { - border: none; + border-right: 2px solid $grey; } - - @include media-breakpoint-up(md) { - .col:last-child { - border: none; - } - .col { - border-right: 2px solid $grey; - } - .col:nth-child(2) { - border: none; - } + .col:nth-child(2) { + border: none; + } + } + @include media-breakpoint-up(lg) { + .col:nth-child(2) { + border-right: 2px solid $grey; } - @include media-breakpoint-up(lg) { - .col:nth-child(2) { - border-right: 2px solid $grey; - } - .col:nth-child(3) { - border: none; - } + .col:nth-child(3) { + border: none; } + } } .paragraph { - padding: 1rem 0; + padding: 1rem 0; } .odd-paragraph { - background-color: $grey; - text-align: end; - .container { - padding-left: 10rem; - } + background-color: $grey; + text-align: end; + .container { + padding-left: 10rem; + } } .even-paragraph { - .container { - padding-right: 10rem; - } + .container { + padding-right: 10rem; + } } #canvas { - height: 700px; - width: 600px; + height: 700px; + width: 600px; } .select2-container--default .select2-selection--single { - border-radius: 90px; + display: flex; + align-items: center; + text-align: start; + padding: 2rem; + border-radius: 90px; +} + +.select2-selection__rendered { + white-space: normal !important; + word-break: break-word; + line-height: 1.4; +} + +.select2-container--default .select2-selection--single .select2-selection__arrow { + display: none; +} + +.select2-results__option { + cursor: pointer; } //################## @@ -349,229 +450,412 @@ h1 { //################## #partis { - .search-part { - border-radius: 5px; - } - .subtitle { - color: $secondary; - font-weight: bold; - font-size: 0.9rem; - } - .parti-card { - border: 2px solid $white; - border-radius: 0; - } - h2, - h3 { - text-align: center; - } - hr { - border-width: 5px; - color: $secondary; - } - .non-federal { - background-image: url("../img/bg/non-federal-bg.png"); - } - .federal-hidden, - .disappeared-hidden { - display: none; - } + .search-part { + border-radius: 5px; + } + .subtitle { + color: $secondary; + font-weight: bold; + font-size: 0.9rem; + } + .parti-card { + border: 2px solid $white; + border-radius: 0; + } + h2, + h3 { + text-align: center; + } + hr { + border-width: 5px; + color: $secondary; + } + .non-federal { + background-image: url("../img/bg/non-federal-bg.jpg"); + } + .federal-hidden, + .disappeared-hidden { + display: none; + } } .isDark { - .parti-item { - border: 2px solid $white; - a { - color: $white; - } - &:hover { - background-color: $white; - a { - color: $black; - } - img{ - filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); - } - } + .parti-item { + border: 2px solid $white; + a { + color: $white; + } + &:hover { + background-color: $white; + a { + color: $black; + } + img { + filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); + } } + } } .parti-item { - text-align: center; - border: 2px solid $black; - margin: 2em; - padding: 0.5em; + text-align: center; + border: 2px solid $black; + margin: 2em; + padding: 0.5em; + a { + font-family: "MuseoModerno-Bold"; + color: $black; + font-weight: bold; + } + &:hover { + background-color: $black; a { - font-family: "MuseoModerno-Bold"; - color: $black; - font-weight: bold; + color: $white; } - &:hover { - background-color: $black; - a { - color: $white; - } - img{ - filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); - } + img { + filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); } + } } //################## //##### PARTI ###### //################## .indice { - font-weight: bold; - color: $secondary; + font-weight: bold; + color: $secondary; } -.border-blue{ - border-color:#004c93; - border-width: 2px; +.border-blue { + border-color: #004c93; + border-width: 2px; } -.icon-download{ - width: 1rem; +.icon-download { + width: 1rem; } .wiki-card { - border: 2px solid black; + border: 2px solid black; + border-radius: 8px; + padding: 20px; + margin-top: 20px; + .card { + margin-bottom: 20px; + border: none; + } + .card-header, + .card-header:first-child { + padding: 0.5rem 1rem; + border-radius: 7px; + } + .history ul { + list-style-type: none; + padding-left: 0; + } + .history ul li { + margin-bottom: 10px; + } + .logo-header { + position: relative; + top: -50px; + padding: 10px; border-radius: 8px; - padding: 20px; - margin-top: 20px; - .card { - margin-bottom: 20px; - border: none; - } - .card-header, .card-header:first-child { - padding: 0.5rem 1rem; - border-radius: 7px; + border: 2px solid black; + } + .card-image { + margin-top: -50px; + } + .wiki-subtitle { + font-family: "MuseoModerno-Bold"; + } + .social:hover { + border-radius: 5rem; + background: $secondary; + img { + filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); } - .history ul { - list-style-type: none; - padding-left: 0; + } +} +.btn-status { + background-color: $white; + color: $black; + &:hover { + background-color: $black; + color: $white; + } +} +// TIMELINE +.timeline-steps { + display: flex; + justify-content: center; + flex-wrap: wrap; + .timeline-step { + align-items: center; + display: flex; + flex-direction: column; + position: relative; + margin: 1rem; + &:hover { + .timeline-title { + font-size: 1.2rem; + transition: all 0.1s ease-in-out 0.1s; + } } - .history ul li { - margin-bottom: 10px; + .timeline-date { + margin-top: -1.5rem; + font-weight: bold; } - .logo-header { - position: relative; - top: -50px; - padding: 10px; - border-radius: 8px; - border: 2px solid black; + } +} + +@media (min-width: 768px) { + .timeline-steps .timeline-step:not(:last-child):after { + content: ""; + display: block; + border-top: 0.25rem dotted $secondary; + width: 5.3rem; + position: absolute; + left: 5.5rem; + top: 0.5rem; + } + .timeline-steps .timeline-step:not(:first-child):before { + content: ""; + display: block; + border-top: 0.25rem dotted $secondary; + width: 5.5rem; + position: absolute; + right: 5.5rem; + top: 0.5rem; + } +} + +.timeline-steps .timeline-content { + width: 10rem; + text-align: center; +} + +.timeline-steps .timeline-content .inner-circle { + border-radius: 1.5rem; + height: 1rem; + width: 1rem; + display: inline-flex; + align-items: center; + justify-content: center; + background-color: $secondary; +} + +// RESOURCE + +.resource-item { + text-align: center; + margin: 2em; + padding: 0.5em; + .status { + border: 2px solid $primary; + a { + color: $primary; } - .card-image{ - margin-top: -50px; + } + .program { + border: 2px solid $secondary; + a { + color: $secondary; } - .wiki-subtitle{ - font-family: "MuseoModerno-Bold"; + } + a { + font-family: "MuseoModerno-Bold"; + font-weight: bold; + img { + filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); } - .social:hover { - border-radius: 5rem; - background: $secondary; - img{ - filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); - } - + } + &:hover { + background-color: $primary; + a { + color: $white; } + } } -.btn-status{ - background-color: $white; - color:$black; - &:hover{ - background-color: $black; - color:$white; - } + +//################## +//### ELECTIONS #### +//################## + +.election-row { + overflow: hidden; /* Assurez-vous que le contenu est masqué pendant l'animation */ } -// TIMELINE -.timeline-steps { + +//LAYOUT +.split-layout { + .container { + @include respond-to-mobile-and-tablet { + align-items: center; + } + } + .img-container { display: flex; justify-content: center; - flex-wrap: wrap; - .timeline-step { - align-items: center; - display: flex; - flex-direction: column; - position: relative; - margin: 1rem; - &:hover{ - .timeline-title{ - font-size: 1.2rem; - transition: all 0.1s ease-in-out 0.1s; - } - } - .timeline-date { - margin-top:-1.5rem; - font-weight: bold; - } - } -} - -@media (min-width:768px) { - .timeline-steps .timeline-step:not(:last-child):after { - content: ""; - display: block; - border-top: .25rem dotted $secondary; - width: 5.3rem; - position: absolute; - left: 5.5rem; - top: .5rem - } - .timeline-steps .timeline-step:not(:first-child):before { - content: ""; - display: block; - border-top: .25rem dotted $secondary; - width: 5.5rem; - position: absolute; - right: 5.5rem; - top: .5rem + align-items: center; + flex-shrink: 0; + width: 18%; + z-index: 1000; + @include respond-to-mobile-and-tablet { + margin-bottom: -3rem; + width: 100%; + } + + img { + max-height: 150px; } + } + + .text-container { + position: relative; + flex-grow: 1; + z-index: 200; + padding: 2rem 2rem 2rem 4rem; + + @include respond-to-mobile-and-tablet { + padding-top: 4rem; + } + + &.bg-grey::before { + content: ""; + position: absolute; + top: 0; + left: -10%; + width: 110vw; + height: 100%; + background-color: $grey; + z-index: -100; + + @include respond-to-mobile-and-tablet { + content: none; + } + } + } +} + +// CARD + +.election-card-wrapper { + position: relative; + width: 100%; + margin-top: 3em; +} + +.election-card { + display: flex; + flex-direction: column; + justify-content: space-between; + position: relative; + background-color: transparent; + border: 3px solid $black; + border-radius: 10px; + padding: 1.5rem; + z-index: 1; + + .label-date { + position: absolute; + top: 0; + left: 50%; + transform: translate(-50%, -50%); + background: $midnight-blue; + color: $white; + border-radius: 10px; + padding: 0.5em 1em; + z-index: 5; + } + + h4 { + hyphens: manual; + overflow-wrap: break-word; + word-break: keep-all; + } } -.timeline-steps .timeline-content { - width: 10rem; - text-align: center +.election-card-shadow { + position: absolute; + top: 12px; + left: 12px; + width: 100%; + height: 100%; + background-color: $grey; + border-radius: 10px; + z-index: 0; } -.timeline-steps .timeline-content .inner-circle { - border-radius: 1.5rem; - height: 1rem; - width: 1rem; - display: inline-flex; - align-items: center; - justify-content: center; - background-color: $secondary +//Page index + +#elections { + .elections-infos { + @include background-stretch("../img/bg/elections-infos-bg.jpg"); + + .card { + border-radius: 10px; + } + + .card-large { + width: 75%; + + @include respond-to-mobile-and-tablet { + width: 100%; + } + } + } } +//################## +//## ELECTION TYPE## +//################## +#election { + .election-infos { + &.bg-regional { + @include background-stretch("../img/bg/federal-infos-bg.jpg", true); + } -// RESOURCE + &.bg-federal { + @include background-stretch("../img/bg/legislatives-infos-bg.jpg", true); + } + .card { + border-radius: 10px; + } -.resource-item { - text-align: center; - margin: 2em; - padding: 0.5em; - .status{ - border: 2px solid $primary; - a{ - color: $primary; - } - } - .program{ - border: 2px solid $secondary; - a{ - color: $secondary; - } + h3 { + margin-top: 1.5rem; } - a { - font-family: "MuseoModerno-Bold"; - font-weight: bold; - img{ - filter: invert(100%) sepia(16%) saturate(0%) hue-rotate(287deg) brightness(112%) contrast(100%); - } + } + + .history table { + td.left { + padding-left: 10em; + font-family: "MuseoModerno", sans-serif; + font-weight: 700; + @include respond-to-mobile-and-tablet { + padding-left: 0em; + } } - &:hover { - background-color: $primary; - a { - color: $white; - } + td.right { + padding-right: 10em; + @include respond-to-mobile-and-tablet { + padding-right: 0em; + } } -} \ No newline at end of file + } +} + +//################## +//## ELECTION DATE## +//################## + +#election-date { + .results { + background-image: url("../img/bg/election-results-bg.jpg"); + } + + .date { + font-size: 5rem; + font-weight: 700; + font-family: "MuseoModerno", sans-serif; + color: $secondary; + } +} diff --git a/assets/styles/trumbowyg-init.scss b/assets/styles/trumbowyg-init.scss new file mode 100644 index 00000000..e222090b --- /dev/null +++ b/assets/styles/trumbowyg-init.scss @@ -0,0 +1,16 @@ +$tbw-cell-vertical-padding: 4px; +$tbw-cell-horizontal-padding: 8px; +$tbw-cell-line-height: 1.5em; + +table { + margin-bottom: $tbw-cell-line-height; + border-collapse: collapse; + + th, + td { + height: calc($tbw-cell-vertical-padding * 2 + $tbw-cell-line-height); + min-width: calc($tbw-cell-horizontal-padding * 2); + padding: $tbw-cell-vertical-padding $tbw-cell-horizontal-padding; + border: 1px solid #e7eaec; + } +} diff --git a/assets/trumbowyg-init.js b/assets/trumbowyg-init.js new file mode 100644 index 00000000..7c5d2964 --- /dev/null +++ b/assets/trumbowyg-init.js @@ -0,0 +1,59 @@ +import "trumbowyg"; +import "trumbowyg/dist/ui/trumbowyg.min.css"; +import "trumbowyg/dist/langs/fr.min.js"; +import "trumbowyg/dist/langs/nl.min.js"; +import icons from "trumbowyg/dist/ui/icons.svg"; +import "trumbowyg/dist/plugins/table/trumbowyg.table.min.js"; +import "trumbowyg/dist/plugins/table/ui/trumbowyg.table.min.css"; + +$.trumbowyg.svgPath = icons; + +function getLangFromUrl() { + const match = window.location.pathname.match(/^\/(fr|en|nl)\b/); + return match ? match[1] : "en"; +} + +function missingTranslations(editorLang) { + if (editorLang === "nl") { + $.trumbowyg.langs.nl = { + ...$.trumbowyg.langs.nl, + table: "Tabel invoegen", + tableCellBackgroundColor: "Achtergrondkleur van cellen", + tableBorderColor: "Kleur van de tabelrand", + }; + } +} + +function applyTrumbowyg() { + const editorLang = getLangFromUrl(); + + missingTranslations(editorLang); + + $("textarea.use-trumbowyg").trumbowyg({ + lang: editorLang, + autogrow: true, + tagClasses: { + table: "table", + }, + + btns: [ + ["viewHTML"], + ["undo", "redo"], + ["formatting"], + ["strong", "em", "del"], + ["superscript", "subscript"], + ["link"], + ["insertImage"], + ["table"], + ["tableCellBackgroundColor", "tableBorderColor"], + ["justifyLeft", "justifyCenter", "justifyRight", "justifyFull"], + ["unorderedList", "orderedList"], + ["horizontalRule"], + ["removeformat"], + ["fullscreen"], + ], + }); +} + +document.addEventListener("DOMContentLoaded", applyTrumbowyg); +document.addEventListener("ea.collection.item-added", applyTrumbowyg); diff --git a/composer.json b/composer.json index 98f95959..8c886891 100644 --- a/composer.json +++ b/composer.json @@ -14,7 +14,6 @@ "doctrine/doctrine-migrations-bundle": "^3.3", "doctrine/orm": "^3.0", "easycorp/easyadmin-bundle": "^4.10", - "friendsofsymfony/ckeditor-bundle": "*", "knplabs/doctrine-behaviors": "dev-sf7.0 as 2.6.3", "liip/imagine-bundle": "^2.10", "nelmio/cors-bundle": "^2.2", @@ -90,8 +89,7 @@ "scripts": { "auto-scripts": { "cache:clear": "symfony-cmd", - "assets:install %PUBLIC_DIR%": "symfony-cmd", - "ckeditor:install --tag=4.22.1": "symfony-cmd" + "assets:install %PUBLIC_DIR%": "symfony-cmd" }, "post-install-cmd": [ "@auto-scripts" diff --git a/composer.lock b/composer.lock index c3bbf80f..9857e50b 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "12aad747d95fef8a9e4492ab174cec8f", + "content-hash": "1a774818158c161203128ebb0caf1dd1", "packages": [ { "name": "a2lix/auto-form-bundle", @@ -2054,87 +2054,6 @@ ], "time": "2024-03-20T12:50:41+00:00" }, - { - "name": "friendsofsymfony/ckeditor-bundle", - "version": "2.5.0", - "source": { - "type": "git", - "url": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle.git", - "reference": "9d4cd4f2db4d800164b9c3051e4bfdee21acb27f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/FriendsOfSymfony/FOSCKEditorBundle/zipball/9d4cd4f2db4d800164b9c3051e4bfdee21acb27f", - "reference": "9d4cd4f2db4d800164b9c3051e4bfdee21acb27f", - "shasum": "" - }, - "require": { - "ext-json": "*", - "ext-zip": "*", - "php": "^8.0", - "symfony/asset": "^5.4 || ^6.0 || ^7.0", - "symfony/config": "^5.4 || ^6.0 || ^7.0", - "symfony/dependency-injection": "^5.4 || ^6.0 || ^7.0", - "symfony/expression-language": "^5.4 || ^6.0 || ^7.0", - "symfony/form": "^5.4 || ^6.0 || ^7.0", - "symfony/framework-bundle": "^5.4 || ^6.0 || ^7.0", - "symfony/http-foundation": "^5.4 || ^6.0 || ^7.0", - "symfony/http-kernel": "^5.4 || ^6.0 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.0 || ^7.0", - "symfony/property-access": "^5.4 || ^6.0 || ^7.0", - "symfony/routing": "^5.4 || ^6.0 || ^7.0", - "symfony/twig-bundle": "^5.4 || ^6.0 || ^7.0", - "twig/twig": "^2.4 || ^3.0" - }, - "conflict": { - "sebastian/environment": "<1.3.4", - "sebastian/exporter": "<2.0.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^3.41", - "matthiasnoback/symfony-dependency-injection-test": "^4.0 || ^5.0", - "symfony/console": "^5.4 || ^6.0 || ^7.0", - "symfony/phpunit-bridge": "^5.4 || ^6.0 || ^7.0", - "symfony/yaml": "^5.4 || ^6.0 || ^7.0" - }, - "suggest": { - "egeloen/form-extra-bundle": "Allows to load CKEditor asynchronously" - }, - "type": "symfony-bundle", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "autoload": { - "psr-4": { - "FOS\\CKEditorBundle\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" - }, - { - "name": "FriendsOfSymfony Community", - "homepage": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/graphs/contributors" - } - ], - "description": "Provides a CKEditor integration for your Symfony project.", - "keywords": [ - "CKEditor" - ], - "support": { - "issues": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/issues", - "source": "https://github.com/FriendsOfSymfony/FOSCKEditorBundle/tree/2.5.0" - }, - "time": "2024-01-23T15:35:55+00:00" - }, { "name": "imagine/imagine", "version": "1.3.5", @@ -11495,6 +11414,6 @@ "ext-ctype": "*", "ext-iconv": "*" }, - "platform-dev": [], - "plugin-api-version": "2.3.0" + "platform-dev": {}, + "plugin-api-version": "2.6.0" } diff --git a/config/bundles.php b/config/bundles.php index c13992ca..72af628f 100644 --- a/config/bundles.php +++ b/config/bundles.php @@ -16,7 +16,6 @@ Knp\DoctrineBehaviors\DoctrineBehaviorsBundle::class => ['all' => true], A2lix\AutoFormBundle\A2lixAutoFormBundle::class => ['all' => true], A2lix\TranslationFormBundle\A2lixTranslationFormBundle::class => ['all' => true], - FOS\CKEditorBundle\FOSCKEditorBundle::class => ['all' => true], Nelmio\CorsBundle\NelmioCorsBundle::class => ['all' => true], ApiPlatform\Symfony\Bundle\ApiPlatformBundle::class => ['all' => true], Liip\ImagineBundle\LiipImagineBundle::class => ['all' => true], diff --git a/config/packages/doctrine.yaml b/config/packages/doctrine.yaml index e0559ba3..f5017246 100644 --- a/config/packages/doctrine.yaml +++ b/config/packages/doctrine.yaml @@ -1,43 +1,49 @@ doctrine: - dbal: - url: '%env(resolve:DATABASE_URL)%' + dbal: + url: "%env(resolve:DATABASE_URL)%" - # IMPORTANT: You MUST configure your server version, - # either here or in the DATABASE_URL env var (see .env file) - #server_version: '13' - orm: - auto_generate_proxy_classes: true - naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware - auto_mapping: true - mappings: - App: - is_bundle: false - dir: '%kernel.project_dir%/src/Entity' - prefix: 'App\Entity' - alias: App + # IMPORTANT: You MUST configure your server version, + # either here or in the DATABASE_URL env var (see .env file) + #server_version: '13' + orm: + auto_generate_proxy_classes: true + naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware + auto_mapping: true + mappings: + App: + is_bundle: false + dir: "%kernel.project_dir%/src/Entity" + prefix: 'App\Entity' + alias: App + dql: + datetime_functions: + MONTH: DoctrineExtensions\Query\Mysql\Month + YEAR: DoctrineExtensions\Query\Mysql\Year + DAY: DoctrineExtensions\Query\Mysql\Day + DATE_FORMAT: DoctrineExtensions\Query\Mysql\DateFormat when@test: - doctrine: - dbal: - # "TEST_TOKEN" is typically set by ParaTest - dbname_suffix: '_test%env(default::TEST_TOKEN)%' + doctrine: + dbal: + # "TEST_TOKEN" is typically set by ParaTest + dbname_suffix: "_test%env(default::TEST_TOKEN)%" when@prod: - doctrine: - orm: - metadata_cache_driver: apc - auto_generate_proxy_classes: false - query_cache_driver: - type: pool - pool: doctrine.system_cache_pool - result_cache_driver: - type: pool - pool: doctrine.result_cache_pool + doctrine: + orm: + metadata_cache_driver: apc + auto_generate_proxy_classes: false + query_cache_driver: + type: pool + pool: doctrine.system_cache_pool + result_cache_driver: + type: pool + pool: doctrine.result_cache_pool - framework: - cache: - pools: - doctrine.result_cache_pool: - adapter: cache.app - doctrine.system_cache_pool: - adapter: cache.system + framework: + cache: + pools: + doctrine.result_cache_pool: + adapter: cache.app + doctrine.system_cache_pool: + adapter: cache.system diff --git a/config/packages/fos_ckeditor.yaml b/config/packages/fos_ckeditor.yaml deleted file mode 100644 index 585a70fa..00000000 --- a/config/packages/fos_ckeditor.yaml +++ /dev/null @@ -1,43 +0,0 @@ -fos_ck_editor: - configs: - main_config: - toolbar: - - { - name: "styles", - items: - [ - "Bold", - "Italic", - "Underline", - "Strike", - "Blockquote", - "-", - "Link", - "-", - "RemoveFormat", - "-", - "NumberedList", - "BulletedList", - "-", - "Outdent", - "Indent", - "-", - "-", - "JustifyLeft", - "JustifyCenter", - "JustifyRight", - "JustifyBlock", - "-", - "Image", - "Table", - "-", - "Styles", - "Format", - "Font", - "FontSize", - "-", - "TextColor", - "BGColor", - "Source", - ], - } diff --git a/config/packages/twig.yaml b/config/packages/twig.yaml index 83560001..f9f4cc53 100644 --- a/config/packages/twig.yaml +++ b/config/packages/twig.yaml @@ -1,7 +1,5 @@ twig: default_path: '%kernel.project_dir%/templates' - form_themes: - - '@FOSCKEditor/Form/ckeditor_widget.html.twig' when@test: twig: diff --git a/migrations/Version20221217065046.php b/migrations/Version20221217065046.php index c698b52d..e3723c84 100644 --- a/migrations/Version20221217065046.php +++ b/migrations/Version20221217065046.php @@ -1,31 +1,31 @@ addSql('ALTER TABLE page ADD show_in_menu TINYINT(1) DEFAULT NULL'); - } +// public function up(Schema $schema): void +// { +// // this up() migration is auto-generated, please modify it to your needs +// $this->addSql('ALTER TABLE page ADD show_in_menu TINYINT(1) DEFAULT NULL'); +// } - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE page DROP show_in_menu'); - } -} +// public function down(Schema $schema): void +// { +// // this down() migration is auto-generated, please modify it to your needs +// $this->addSql('ALTER TABLE page DROP show_in_menu'); +// } +// } diff --git a/migrations/Version20230530162229.php b/migrations/Version20230530162229.php deleted file mode 100644 index a43fab1f..00000000 --- a/migrations/Version20230530162229.php +++ /dev/null @@ -1,41 +0,0 @@ -addSql('CREATE TABLE resultat_parti (resultat_id INT NOT NULL, parti_id INT NOT NULL, INDEX IDX_D8EDFB56D233E95C (resultat_id), INDEX IDX_D8EDFB56712547C6 (parti_id), PRIMARY KEY(resultat_id, parti_id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB'); - $this->addSql('ALTER TABLE resultat_parti ADD CONSTRAINT FK_D8EDFB56D233E95C FOREIGN KEY (resultat_id) REFERENCES resultat (id) ON DELETE CASCADE'); - $this->addSql('ALTER TABLE resultat_parti ADD CONSTRAINT FK_D8EDFB56712547C6 FOREIGN KEY (parti_id) REFERENCES parti (id) ON DELETE CASCADE'); - $this->addSql('ALTER TABLE resultat DROP FOREIGN KEY FK_E7DB5DE271E7FCCC'); - $this->addSql('DROP INDEX IDX_E7DB5DE271E7FCCC ON resultat'); - $this->addSql('ALTER TABLE resultat DROP id_party_id'); - } - - public function down(Schema $schema): void - { - // this down() migration is auto-generated, please modify it to your needs - $this->addSql('ALTER TABLE resultat_parti DROP FOREIGN KEY FK_D8EDFB56D233E95C'); - $this->addSql('ALTER TABLE resultat_parti DROP FOREIGN KEY FK_D8EDFB56712547C6'); - $this->addSql('DROP TABLE resultat_parti'); - $this->addSql('ALTER TABLE resultat ADD id_party_id INT DEFAULT NULL'); - $this->addSql('ALTER TABLE resultat ADD CONSTRAINT FK_E7DB5DE271E7FCCC FOREIGN KEY (id_party_id) REFERENCES parti (id) ON UPDATE NO ACTION ON DELETE NO ACTION'); - $this->addSql('CREATE INDEX IDX_E7DB5DE271E7FCCC ON resultat (id_party_id)'); - } -} diff --git a/migrations/Version20250519094930.php b/migrations/Version20250519094930.php new file mode 100644 index 00000000..a813daee --- /dev/null +++ b/migrations/Version20250519094930.php @@ -0,0 +1,51 @@ +addSql('ALTER TABLE task_translation DROP FOREIGN KEY FK_F21CE85D2C2AC5D3'); + $this->addSql('DROP TABLE task'); + $this->addSql('DROP TABLE task_translation'); + $this->addSql('ALTER TABLE article CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated_at updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE election ADD winner_id INT DEFAULT NULL, CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated_at updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE election ADD CONSTRAINT FK_DCA038005DFCD4B8 FOREIGN KEY (winner_id) REFERENCES parti (id)'); + $this->addSql('CREATE INDEX IDX_DCA038005DFCD4B8 ON election (winner_id)'); + $this->addSql('ALTER TABLE page CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated_at updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE resource CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated_at updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE resultat CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE updated_at updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + $this->addSql('ALTER TABLE messenger_messages CHANGE created_at created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE available_at available_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', CHANGE delivered_at delivered_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\''); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('CREATE TABLE task (id INT AUTO_INCREMENT NOT NULL, is_done TINYINT(1) DEFAULT 0 NOT NULL, PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_general_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('CREATE TABLE task_translation (id INT AUTO_INCREMENT NOT NULL, translatable_id INT DEFAULT NULL, title VARCHAR(255) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_general_ci`, description LONGTEXT CHARACTER SET utf8mb4 DEFAULT NULL COLLATE `utf8mb4_general_ci`, locale VARCHAR(5) CHARACTER SET utf8mb4 NOT NULL COLLATE `utf8mb4_general_ci`, INDEX IDX_F21CE85D2C2AC5D3 (translatable_id), UNIQUE INDEX task_translation_unique_translation (translatable_id, locale), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_general_ci` ENGINE = InnoDB COMMENT = \'\' '); + $this->addSql('ALTER TABLE task_translation ADD CONSTRAINT FK_F21CE85D2C2AC5D3 FOREIGN KEY (translatable_id) REFERENCES task (id) ON DELETE CASCADE'); + $this->addSql('ALTER TABLE article CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL'); + $this->addSql('ALTER TABLE election DROP FOREIGN KEY FK_DCA038005DFCD4B8'); + $this->addSql('DROP INDEX IDX_DCA038005DFCD4B8 ON election'); + $this->addSql('ALTER TABLE election DROP winner_id, CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL'); + $this->addSql('ALTER TABLE messenger_messages CHANGE created_at created_at DATETIME NOT NULL, CHANGE available_at available_at DATETIME NOT NULL, CHANGE delivered_at delivered_at DATETIME DEFAULT NULL'); + $this->addSql('ALTER TABLE page CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL'); + $this->addSql('ALTER TABLE resource CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL'); + $this->addSql('ALTER TABLE resultat CHANGE created_at created_at DATETIME NOT NULL, CHANGE updated_at updated_at DATETIME NOT NULL'); + } +} diff --git a/migrations/Version20250521145559.php b/migrations/Version20250521145559.php new file mode 100644 index 00000000..a13890f0 --- /dev/null +++ b/migrations/Version20250521145559.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE type_election_translation ADD title VARCHAR(255) DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE type_election_translation DROP title'); + } +} diff --git a/migrations/Version20250522135015.php b/migrations/Version20250522135015.php new file mode 100644 index 00000000..274fb40e --- /dev/null +++ b/migrations/Version20250522135015.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE type_election_translation ADD all_about LONGTEXT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE type_election_translation DROP all_about'); + } +} diff --git a/migrations/Version20250527115535.php b/migrations/Version20250527115535.php new file mode 100644 index 00000000..d4f3055a --- /dev/null +++ b/migrations/Version20250527115535.php @@ -0,0 +1,31 @@ +addSql('ALTER TABLE type_election_translation ADD next_elections LONGTEXT DEFAULT NULL'); + } + + public function down(Schema $schema): void + { + // this down() migration is auto-generated, please modify it to your needs + $this->addSql('ALTER TABLE type_election_translation DROP next_elections'); + } +} diff --git a/package-lock.json b/package-lock.json index 46581738..b0a206bf 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,12 +10,12 @@ "bootstrap-table": "^1.21.2", "chart.js": "^4.1.1", "chartjs-chart-geo": "^4.1.0", - "ckeditor4": "^4.20.1", "core-js": "^3.26.1", "d3": "^7.7.0", "select2": "^4.1.0-rc.0", "select2-bootstrap-5-theme": "^1.3.0", - "tableexport.jquery.plugin": "^1.26.0" + "tableexport.jquery.plugin": "^1.26.0", + "trumbowyg": "^2.31.0" }, "devDependencies": { "@popperjs/core": "^2.11.6", @@ -3443,11 +3443,6 @@ "node": ">=8" } }, - "node_modules/ckeditor4": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/ckeditor4/-/ckeditor4-4.20.1.tgz", - "integrity": "sha512-OywaO5CC6n5NcY98Fi4Llc/h9rgmn8uHwEIfWxulVKpu0UCdL8x9p6xCfo/ZfgQN6FTS/eZcP7XzKMuokRN+mQ==" - }, "node_modules/clean-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", @@ -8968,6 +8963,15 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, + "node_modules/trumbowyg": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/trumbowyg/-/trumbowyg-2.31.0.tgz", + "integrity": "sha512-I+DMiluTpLDx3yn6LR0TIVR7xIOjgtBQmpEE6Ofd+2yl5ruzY63q/yA/DfBuRVxdK7yDYSBe9FXpVjM1P2NdtA==", + "license": "MIT", + "peerDependencies": { + "jquery": ">=1.8" + } + }, "node_modules/tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", @@ -12230,11 +12234,6 @@ "integrity": "sha512-2CpRNYmImPx+RXKLq6jko/L07phmS9I02TyqkcNU20GCF/GgaWvc58hPtjxDX8lPpkdwc9sNh72V9k00S7ezog==", "dev": true }, - "ckeditor4": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/ckeditor4/-/ckeditor4-4.20.1.tgz", - "integrity": "sha512-OywaO5CC6n5NcY98Fi4Llc/h9rgmn8uHwEIfWxulVKpu0UCdL8x9p6xCfo/ZfgQN6FTS/eZcP7XzKMuokRN+mQ==" - }, "clean-webpack-plugin": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/clean-webpack-plugin/-/clean-webpack-plugin-4.0.0.tgz", @@ -16306,6 +16305,12 @@ } } }, + "trumbowyg": { + "version": "2.31.0", + "resolved": "https://registry.npmjs.org/trumbowyg/-/trumbowyg-2.31.0.tgz", + "integrity": "sha512-I+DMiluTpLDx3yn6LR0TIVR7xIOjgtBQmpEE6Ofd+2yl5ruzY63q/yA/DfBuRVxdK7yDYSBe9FXpVjM1P2NdtA==", + "requires": {} + }, "tslib": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", diff --git a/package.json b/package.json index 70e362e5..ab0a9d50 100644 --- a/package.json +++ b/package.json @@ -19,11 +19,11 @@ "bootstrap-table": "^1.21.2", "chart.js": "^4.1.1", "chartjs-chart-geo": "^4.1.0", - "ckeditor4": "^4.20.1", "core-js": "^3.26.1", "d3": "^7.7.0", "select2": "^4.1.0-rc.0", "select2-bootstrap-5-theme": "^1.3.0", - "tableexport.jquery.plugin": "^1.26.0" + "tableexport.jquery.plugin": "^1.26.0", + "trumbowyg": "^2.31.0" } } diff --git a/public/build/175.d89ab825.js b/public/build/175.d89ab825.js new file mode 100644 index 00000000..1d29aa67 --- /dev/null +++ b/public/build/175.d89ab825.js @@ -0,0 +1,2 @@ +/*! For license information please see 175.d89ab825.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[175],{3067:function(t,e,n){var o=n(9755);t.exports=function(t){"use strict";function e(t){return t&&"object"==typeof t&&"default"in t?t:{default:t}}var i=e(t);function r(t){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},r(t)}function a(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function s(t,e){for(var n=0;nt.length)&&(e=t.length);for(var n=0,o=new Array(e);n=t.length?{done:!0}:{done:!1,value:t[o++]}},e:function(t){throw t},f:i}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var r,a=!0,s=!1;return{s:function(){n=n.call(t)},n:function(){var t=n.next();return a=t.done,t},e:function(t){s=!0,r=t},f:function(){try{a||null==n.return||n.return()}finally{if(s)throw r}}}}var p="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{},g=function(t){return t&&t.Math==Math&&t},v=g("object"==typeof globalThis&&globalThis)||g("object"==typeof window&&window)||g("object"==typeof self&&self)||g("object"==typeof p&&p)||function(){return this}()||Function("return this")(),m={},y=function(t){try{return!!t()}catch(t){return!0}},b=!y((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]})),w=!y((function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")})),x=w,S=Function.prototype.call,O=x?S.bind(S):function(){return S.apply(S,arguments)},C={},k={}.propertyIsEnumerable,T=Object.getOwnPropertyDescriptor,P=T&&!k.call({1:2},1);C.f=P?function(t){var e=T(this,t);return!!e&&e.enumerable}:k;var I,A,E=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},R=w,j=Function.prototype,F=j.call,$=R&&j.bind.bind(F,F),D=function(t){return R?$(t):function(){return F.apply(t,arguments)}},N=D,L=N({}.toString),M=N("".slice),_=function(t){return M(L(t),8,-1)},B=_,V=D,H=function(t){if("Function"===B(t))return V(t)},W=y,U=_,z=Object,q=H("".split),G=W((function(){return!z("z").propertyIsEnumerable(0)}))?function(t){return"String"==U(t)?q(t,""):z(t)}:z,K=function(t){return null==t},X=K,Y=TypeError,J=function(t){if(X(t))throw Y("Can't call method on "+t);return t},Z=G,Q=J,tt=function(t){return Z(Q(t))},et="object"==typeof document&&document.all,nt={all:et,IS_HTMLDDA:void 0===et&&void 0!==et},ot=nt.all,it=nt.IS_HTMLDDA?function(t){return"function"==typeof t||t===ot}:function(t){return"function"==typeof t},rt=it,at=nt.all,st=nt.IS_HTMLDDA?function(t){return"object"==typeof t?null!==t:rt(t)||t===at}:function(t){return"object"==typeof t?null!==t:rt(t)},lt=v,ct=it,ut=function(t){return ct(t)?t:void 0},ht=function(t,e){return arguments.length<2?ut(lt[t]):lt[t]&<[t][e]},ft=H({}.isPrototypeOf),dt=ht("navigator","userAgent")||"",pt=v,gt=dt,vt=pt.process,mt=pt.Deno,yt=vt&&vt.versions||mt&&mt.version,bt=yt&&yt.v8;bt&&(A=(I=bt.split("."))[0]>0&&I[0]<4?1:+(I[0]+I[1])),!A&>&&(!(I=gt.match(/Edge\/(\d+)/))||I[1]>=74)&&(I=gt.match(/Chrome\/(\d+)/))&&(A=+I[1]);var wt=A,xt=wt,St=y,Ot=!!Object.getOwnPropertySymbols&&!St((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&xt&&xt<41})),Ct=Ot&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,kt=ht,Tt=it,Pt=ft,It=Object,At=Ct?function(t){return"symbol"==typeof t}:function(t){var e=kt("Symbol");return Tt(e)&&Pt(e.prototype,It(t))},Et=String,Rt=function(t){try{return Et(t)}catch(t){return"Object"}},jt=it,Ft=Rt,$t=TypeError,Dt=function(t){if(jt(t))return t;throw $t(Ft(t)+" is not a function")},Nt=Dt,Lt=K,Mt=function(t,e){var n=t[e];return Lt(n)?void 0:Nt(n)},_t=O,Bt=it,Vt=st,Ht=TypeError,Wt={exports:{}},Ut=v,zt=Object.defineProperty,qt=function(t,e){try{zt(Ut,t,{value:e,configurable:!0,writable:!0})}catch(n){Ut[t]=e}return e},Gt=qt,Kt="__core-js_shared__",Xt=v[Kt]||Gt(Kt,{}),Yt=Xt;(Wt.exports=function(t,e){return Yt[t]||(Yt[t]=void 0!==e?e:{})})("versions",[]).push({version:"3.25.5",mode:"global",copyright:"© 2014-2022 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.25.5/LICENSE",source:"https://github.com/zloirock/core-js"});var Jt=J,Zt=Object,Qt=function(t){return Zt(Jt(t))},te=Qt,ee=H({}.hasOwnProperty),ne=Object.hasOwn||function(t,e){return ee(te(t),e)},oe=H,ie=0,re=Math.random(),ae=oe(1..toString),se=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ae(++ie+re,36)},le=v,ce=Wt.exports,ue=ne,he=se,fe=Ot,de=Ct,pe=ce("wks"),ge=le.Symbol,ve=ge&&ge.for,me=de?ge:ge&&ge.withoutSetter||he,ye=function(t){if(!ue(pe,t)||!fe&&"string"!=typeof pe[t]){var e="Symbol."+t;fe&&ue(ge,t)?pe[t]=ge[t]:pe[t]=de&&ve?ve(e):me(e)}return pe[t]},be=O,we=st,xe=At,Se=Mt,Oe=function(t,e){var n,o;if("string"===e&&Bt(n=t.toString)&&!Vt(o=_t(n,t)))return o;if(Bt(n=t.valueOf)&&!Vt(o=_t(n,t)))return o;if("string"!==e&&Bt(n=t.toString)&&!Vt(o=_t(n,t)))return o;throw Ht("Can't convert object to primitive value")},Ce=TypeError,ke=ye("toPrimitive"),Te=function(t,e){if(!we(t)||xe(t))return t;var n,o=Se(t,ke);if(o){if(void 0===e&&(e="default"),n=be(o,t,e),!we(n)||xe(n))return n;throw Ce("Can't convert object to primitive value")}return void 0===e&&(e="number"),Oe(t,e)},Pe=Te,Ie=At,Ae=function(t){var e=Pe(t,"string");return Ie(e)?e:e+""},Ee=st,Re=v.document,je=Ee(Re)&&Ee(Re.createElement),Fe=function(t){return je?Re.createElement(t):{}},$e=Fe,De=!b&&!y((function(){return 7!=Object.defineProperty($e("div"),"a",{get:function(){return 7}}).a})),Ne=b,Le=O,Me=C,_e=E,Be=tt,Ve=Ae,He=ne,We=De,Ue=Object.getOwnPropertyDescriptor;m.f=Ne?Ue:function(t,e){if(t=Be(t),e=Ve(e),We)try{return Ue(t,e)}catch(t){}if(He(t,e))return _e(!Le(Me.f,t,e),t[e])};var ze={},qe=b&&y((function(){return 42!=Object.defineProperty((function(){}),"prototype",{value:42,writable:!1}).prototype})),Ge=st,Ke=String,Xe=TypeError,Ye=function(t){if(Ge(t))return t;throw Xe(Ke(t)+" is not an object")},Je=b,Ze=De,Qe=qe,tn=Ye,en=Ae,nn=TypeError,on=Object.defineProperty,rn=Object.getOwnPropertyDescriptor,an="enumerable",sn="configurable",ln="writable";ze.f=Je?Qe?function(t,e,n){if(tn(t),e=en(e),tn(n),"function"==typeof t&&"prototype"===e&&"value"in n&&ln in n&&!n.writable){var o=rn(t,e);o&&o.writable&&(t[e]=n.value,n={configurable:sn in n?n.configurable:o.configurable,enumerable:an in n?n.enumerable:o.enumerable,writable:!1})}return on(t,e,n)}:on:function(t,e,n){if(tn(t),e=en(e),tn(n),Ze)try{return on(t,e,n)}catch(t){}if("get"in n||"set"in n)throw nn("Accessors not supported");return"value"in n&&(t[e]=n.value),t};var cn=ze,un=E,hn=b?function(t,e,n){return cn.f(t,e,un(1,n))}:function(t,e,n){return t[e]=n,t},fn={exports:{}},dn=b,pn=ne,gn=Function.prototype,vn=dn&&Object.getOwnPropertyDescriptor,mn=pn(gn,"name"),yn={EXISTS:mn,PROPER:mn&&"something"===function(){}.name,CONFIGURABLE:mn&&(!dn||dn&&vn(gn,"name").configurable)},bn=it,wn=Xt,xn=H(Function.toString);bn(wn.inspectSource)||(wn.inspectSource=function(t){return xn(t)});var Sn,On,Cn,kn=wn.inspectSource,Tn=it,Pn=v.WeakMap,In=Tn(Pn)&&/native code/.test(String(Pn)),An=Wt.exports,En=se,Rn=An("keys"),jn=function(t){return Rn[t]||(Rn[t]=En(t))},Fn={},$n=In,Dn=v,Nn=st,Ln=hn,Mn=ne,_n=Xt,Bn=jn,Vn=Fn,Hn="Object already initialized",Wn=Dn.TypeError,Un=Dn.WeakMap;if($n||_n.state){var zn=_n.state||(_n.state=new Un);zn.get=zn.get,zn.has=zn.has,zn.set=zn.set,Sn=function(t,e){if(zn.has(t))throw Wn(Hn);return e.facade=t,zn.set(t,e),e},On=function(t){return zn.get(t)||{}},Cn=function(t){return zn.has(t)}}else{var qn=Bn("state");Vn[qn]=!0,Sn=function(t,e){if(Mn(t,qn))throw Wn(Hn);return e.facade=t,Ln(t,qn,e),e},On=function(t){return Mn(t,qn)?t[qn]:{}},Cn=function(t){return Mn(t,qn)}}var Gn={set:Sn,get:On,has:Cn,enforce:function(t){return Cn(t)?On(t):Sn(t,{})},getterFor:function(t){return function(e){var n;if(!Nn(e)||(n=On(e)).type!==t)throw Wn("Incompatible receiver, "+t+" required");return n}}},Kn=y,Xn=it,Yn=ne,Jn=b,Zn=yn.CONFIGURABLE,Qn=kn,to=Gn.enforce,eo=Gn.get,no=Object.defineProperty,oo=Jn&&!Kn((function(){return 8!==no((function(){}),"length",{value:8}).length})),io=String(String).split("String"),ro=fn.exports=function(t,e,n){"Symbol("===String(e).slice(0,7)&&(e="["+String(e).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),n&&n.getter&&(e="get "+e),n&&n.setter&&(e="set "+e),(!Yn(t,"name")||Zn&&t.name!==e)&&(Jn?no(t,"name",{value:e,configurable:!0}):t.name=e),oo&&n&&Yn(n,"arity")&&t.length!==n.arity&&no(t,"length",{value:n.arity});try{n&&Yn(n,"constructor")&&n.constructor?Jn&&no(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var o=to(t);return Yn(o,"source")||(o.source=io.join("string"==typeof e?e:"")),t};Function.prototype.toString=ro((function(){return Xn(this)&&eo(this).source||Qn(this)}),"toString");var ao=it,so=ze,lo=fn.exports,co=qt,uo=function(t,e,n,o){o||(o={});var i=o.enumerable,r=void 0!==o.name?o.name:e;if(ao(n)&&lo(n,r,o),o.global)i?t[e]=n:co(e,n);else{try{o.unsafe?t[e]&&(i=!0):delete t[e]}catch(t){}i?t[e]=n:so.f(t,e,{value:n,enumerable:!1,configurable:!o.nonConfigurable,writable:!o.nonWritable})}return t},ho={},fo=Math.ceil,po=Math.floor,go=Math.trunc||function(t){var e=+t;return(e>0?po:fo)(e)},vo=function(t){var e=+t;return e!=e||0===e?0:go(e)},mo=vo,yo=Math.max,bo=Math.min,wo=function(t,e){var n=mo(t);return n<0?yo(n+e,0):bo(n,e)},xo=vo,So=Math.min,Oo=function(t){return t>0?So(xo(t),9007199254740991):0},Co=Oo,ko=function(t){return Co(t.length)},To=tt,Po=wo,Io=ko,Ao=function(t){return function(e,n,o){var i,r=To(e),a=Io(r),s=Po(o,a);if(t&&n!=n){for(;a>s;)if((i=r[s++])!=i)return!0}else for(;a>s;s++)if((t||s in r)&&r[s]===n)return t||s||0;return!t&&-1}},Eo={includes:Ao(!0),indexOf:Ao(!1)},Ro=ne,jo=tt,Fo=Eo.indexOf,$o=Fn,Do=H([].push),No=function(t,e){var n,o=jo(t),i=0,r=[];for(n in o)!Ro($o,n)&&Ro(o,n)&&Do(r,n);for(;e.length>i;)Ro(o,n=e[i++])&&(~Fo(r,n)||Do(r,n));return r},Lo=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Mo=No,_o=Lo.concat("length","prototype");ho.f=Object.getOwnPropertyNames||function(t){return Mo(t,_o)};var Bo={};Bo.f=Object.getOwnPropertySymbols;var Vo=ht,Ho=ho,Wo=Bo,Uo=Ye,zo=H([].concat),qo=Vo("Reflect","ownKeys")||function(t){var e=Ho.f(Uo(t)),n=Wo.f;return n?zo(e,n(t)):e},Go=ne,Ko=qo,Xo=m,Yo=ze,Jo=y,Zo=it,Qo=/#|\.prototype\./,ti=function(t,e){var n=ni[ei(t)];return n==ii||n!=oi&&(Zo(e)?Jo(e):!!e)},ei=ti.normalize=function(t){return String(t).replace(Qo,".").toLowerCase()},ni=ti.data={},oi=ti.NATIVE="N",ii=ti.POLYFILL="P",ri=ti,ai=v,si=m.f,li=hn,ci=uo,ui=qt,hi=function(t,e,n){for(var o=Ko(e),i=Yo.f,r=Xo.f,a=0;ai;)for(var s,l=ki(arguments[i++]),c=r?Ii(xi(l),r(l)):xi(l),u=c.length,h=0;u>h;)s=c[h++],mi&&!bi(a,l,s)||(n[s]=l[s]);return n}:Ti,Ei=Ai;di({target:"Object",stat:!0,arity:2,forced:Object.assign!==Ei},{assign:Ei});var Ri={};Ri[ye("toStringTag")]="z";var ji="[object z]"===String(Ri),Fi=ji,$i=it,Di=_,Ni=ye("toStringTag"),Li=Object,Mi="Arguments"==Di(function(){return arguments}()),_i=Fi?Di:function(t){var e,n,o;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=Li(t),Ni))?n:Mi?Di(e):"Object"==(o=Di(e))&&$i(e.callee)?"Arguments":o},Bi=_i,Vi=String,Hi=function(t){if("Symbol"===Bi(t))throw TypeError("Cannot convert a Symbol value to a string");return Vi(t)},Wi="\t\n\v\f\r                 \u2028\u2029\ufeff",Ui=J,zi=Hi,qi=H("".replace),Gi="[\t\n\v\f\r                 \u2028\u2029\ufeff]",Ki=RegExp("^"+Gi+Gi+"*"),Xi=RegExp(Gi+Gi+"*$"),Yi=function(t){return function(e){var n=zi(Ui(e));return 1&t&&(n=qi(n,Ki,"")),2&t&&(n=qi(n,Xi,"")),n}},Ji={start:Yi(1),end:Yi(2),trim:Yi(3)},Zi=yn.PROPER,Qi=y,tr=Wi,er=Ji.trim;di({target:"String",proto:!0,forced:function(t){return Qi((function(){return!!tr[t]()||"​…᠎"!=="​…᠎"[t]()||Zi&&tr[t].name!==t}))}("trim")},{trim:function(){return er(this)}});var nr=y,or=function(t,e){var n=[][t];return!!n&&nr((function(){n.call(null,e||function(){return 1},1)}))},ir=di,rr=G,ar=tt,sr=or,lr=H([].join),cr=rr!=Object,ur=sr("join",",");ir({target:"Array",proto:!0,forced:cr||!ur},{join:function(t){return lr(ar(this),void 0===t?",":t)}});var hr=Ye,fr=function(){var t=hr(this),e="";return t.hasIndices&&(e+="d"),t.global&&(e+="g"),t.ignoreCase&&(e+="i"),t.multiline&&(e+="m"),t.dotAll&&(e+="s"),t.unicode&&(e+="u"),t.unicodeSets&&(e+="v"),t.sticky&&(e+="y"),e},dr=y,pr=v.RegExp,gr=dr((function(){var t=pr("a","y");return t.lastIndex=2,null!=t.exec("abcd")})),vr=gr||dr((function(){return!pr("a","y").sticky})),mr={BROKEN_CARET:gr||dr((function(){var t=pr("^r","gy");return t.lastIndex=2,null!=t.exec("str")})),MISSED_STICKY:vr,UNSUPPORTED_Y:gr},yr={},br=b,wr=qe,xr=ze,Sr=Ye,Or=tt,Cr=vi;yr.f=br&&!wr?Object.defineProperties:function(t,e){Sr(t);for(var n,o=Or(e),i=Cr(e),r=i.length,a=0;r>a;)xr.f(t,n=i[a++],o[n]);return t};var kr,Tr=ht("document","documentElement"),Pr=Ye,Ir=yr,Ar=Lo,Er=Fn,Rr=Tr,jr=Fe,Fr=jn("IE_PROTO"),$r=function(){},Dr=function(t){return" - ``` - -- `tabReplace` and `useBR` that were used in different places are also unified - into the global options object and are to be set using `configure(options)`. - This function is documented in our [API docs][]. Also note that these - parameters are gone from `highlightBlock` and `fixMarkup` which are now also - rely on `configure`. - -- We removed public-facing (though undocumented) object `hljs.LANGUAGES` which - was used to register languages with the library in favor of two new methods: - `registerLanguage` and `getLanguage`. Both are documented in our [API docs][]. - -- Result returned from `highlight` and `highlightAuto` no longer contains two - separate attributes contributing to relevance score, `relevance` and - `keyword_count`. They are now unified in `relevance`. - -Another technically compatible change that nonetheless might need attention: - -- The structure of the NPM package was refactored, so if you had installed it - locally, you'll have to update your paths. The usual `require('highlight.js')` - works as before. This is contributed by [Dmitry Smolin][]. - -New features: - -- Languages now can be recognized by multiple names like "js" for JavaScript or - "html" for, well, HTML (which earlier insisted on calling it "xml"). These - aliases can be specified in the class attribute of the code container in your - HTML as well as in various API calls. For now there are only a few very common - aliases but we'll expand it in the future. All of them are listed in the - [class reference][]. - -- Language detection can now be restricted to a subset of languages relevant in - a given context — a web page or even a single highlighting call. This is - especially useful for node.js build that includes all the known languages. - Another example is a StackOverflow-style site where users specify languages - as tags rather than in the markdown-formatted code snippets. This is - documented in the [API reference][] (see methods `highlightAuto` and - `configure`). - -- Language definition syntax streamlined with [variants][] and - [beginKeywords][]. - -New languages and styles: - -- *Oxygene* by [Carlo Kok][] -- *Mathematica* by [Daniel Kvasnička][] -- *Autohotkey* by [Seongwon Lee][] -- *Atelier* family of styles in 10 variants by [Bram de Haan][] -- *Paraíso* styles by [Jan T. Sott][] - -Miscelleanous improvements: - -- Highlighting `=>` prompts in Clojure. -- [Jeremy Hull][] fixed a lot of styles for consistency. -- Finally, highlighting PHP and HTML [mixed in peculiar ways][php-html]. -- Objective C and C# now properly highlight titles in method definition. -- Big overhaul of relevance counting for a number of languages. Please do report - bugs about mis-detection of non-trivial code snippets! - -[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html -[api docs]: http://highlightjs.readthedocs.org/en/latest/api.html -[variants]: https://groups.google.com/d/topic/highlightjs/VoGC9-1p5vk/discussion -[beginKeywords]: https://github.com/isagalaev/highlight.js/commit/6c7fdea002eb3949577a85b3f7930137c7c3038d -[php-html]: https://twitter.com/highlightjs/status/408890903017689088 - -[Carlo Kok]: https://github.com/carlokok -[Bram de Haan]: https://github.com/atelierbram -[Daniel Kvasnička]: https://github.com/dkvasnicka -[Dmitry Smolin]: https://github.com/dimsmol -[Jeremy Hull]: https://github.com/sourrust -[Seongwon Lee]: https://github.com/dlimpid -[Jan T. Sott]: https://github.com/idleberg - - -## Version 7.5 - -A catch-up release dealing with some of the accumulated contributions. This one -is probably will be the last before the 8.0 which will be slightly backwards -incompatible regarding some advanced use-cases. - -One outstanding change in this version is the addition of 6 languages to the -[hosted script][d]: Markdown, ObjectiveC, CoffeeScript, Apache, Nginx and -Makefile. It now weighs about 6K more but we're going to keep it under 30K. - -New languages: - -- OCaml by [Mehdi Dogguy][mehdid] and [Nicolas Braud-Santoni][nbraud] -- [LiveCode Server][lcs] by [Ralf Bitter][revig] -- Scilab by [Sylvestre Ledru][sylvestre] -- basic support for Makefile by [Ivan Sagalaev][isagalaev] - -Improvements: - -- Ruby's got support for characters like `?A`, `?1`, `?\012` etc. and `%r{..}` - regexps. -- Clojure now allows a function call in the beginning of s-expressions - `(($filter "myCount") (arr 1 2 3 4 5))`. -- Haskell's got new keywords and now recognizes more things like pragmas, - preprocessors, modules, containers, FFIs etc. Thanks to [Zena Treep][treep] - for the implementation and to [Jeremy Hull][sourrust] for guiding it. -- Miscelleanous fixes in PHP, Brainfuck, SCSS, Asciidoc, CMake, Python and F#. - -[mehdid]: https://github.com/mehdid -[nbraud]: https://github.com/nbraud -[revig]: https://github.com/revig -[lcs]: http://livecode.com/developers/guides/server/ -[sylvestre]: https://github.com/sylvestre -[isagalaev]: https://github.com/isagalaev -[treep]: https://github.com/treep -[sourrust]: https://github.com/sourrust -[d]: http://highlightjs.org/download/ - - -## New core developers - -The latest long period of almost complete inactivity in the project coincided -with growing interest to it led to a decision that now seems completely obvious: -we need more core developers. - -So without further ado let me welcome to the core team two long-time -contributors: [Jeremy Hull][] and [Oleg -Efimov][]. - -Hope now we'll be able to work through stuff faster! - -P.S. The historical commit is [here][1] for the record. - -[Jeremy Hull]: https://github.com/sourrust -[Oleg Efimov]: https://github.com/sannis -[1]: https://github.com/isagalaev/highlight.js/commit/f3056941bda56d2b72276b97bc0dd5f230f2473f - - -## Version 7.4 - -This long overdue version is a snapshot of the current source tree with all the -changes that happened during the past year. Sorry for taking so long! - -Along with the changes in code highlight.js has finally got its new home at -, moving from its craddle on Software Maniacs which it -outgrew a long time ago. Be sure to report any bugs about the site to -. - -On to what's new… - -New languages: - -- Handlebars templates by [Robin Ward][] -- Oracle Rules Language by [Jason Jacobson][] -- F# by [Joans Follesø][] -- AsciiDoc and Haml by [Dan Allen][] -- Lasso by [Eric Knibbe][] -- SCSS by [Kurt Emch][] -- VB.NET by [Poren Chiang][] -- Mizar by [Kelley van Evert][] - -[Robin Ward]: https://github.com/eviltrout -[Jason Jacobson]: https://github.com/jayce7 -[Joans Follesø]: https://github.com/follesoe -[Dan Allen]: https://github.com/mojavelinux -[Eric Knibbe]: https://github.com/EricFromCanada -[Kurt Emch]: https://github.com/kemch -[Poren Chiang]: https://github.com/rschiang -[Kelley van Evert]: https://github.com/kelleyvanevert - -New style themes: - -- Monokai Sublime by [noformnocontent][] -- Railscasts by [Damien White][] -- Obsidian by [Alexander Marenin][] -- Docco by [Simon Madine][] -- Mono Blue by [Ivan Sagalaev][] (uses a single color hue for everything) -- Foundation by [Dan Allen][] - -[noformnocontent]: http://nn.mit-license.org/ -[Damien White]: https://github.com/visoft -[Alexander Marenin]: https://github.com/ioncreature -[Simon Madine]: https://github.com/thingsinjars -[Ivan Sagalaev]: https://github.com/isagalaev - -Other notable changes: - -- Corrected many corner cases in CSS. -- Dropped Python 2 version of the build tool. -- Implemented building for the AMD format. -- Updated Rust keywords (thanks to [Dmitry Medvinsky][]). -- Literal regexes can now be used in language definitions. -- CoffeeScript highlighting is now significantly more robust and rich due to - input from [Cédric Néhémie][]. - -[Dmitry Medvinsky]: https://github.com/dmedvinsky -[Cédric Néhémie]: https://github.com/abe33 - - -## Version 7.3 - -- Since this version highlight.js no longer works in IE version 8 and older. - It's made it possible to reduce the library size and dramatically improve code - readability and made it easier to maintain. Time to go forward! - -- New languages: AppleScript (by [Nathan Grigg][ng] and [Dr. Drang][dd]) and - Brainfuck (by [Evgeny Stepanischev][bolk]). - -- Improvements to existing languages: - - - interpreter prompt in Python (`>>>` and `...`) - - @-properties and classes in CoffeeScript - - E4X in JavaScript (by [Oleg Efimov][oe]) - - new keywords in Perl (by [Kirk Kimmel][kk]) - - big Ruby syntax update (by [Vasily Polovnyov][vast]) - - small fixes in Bash - -- Also Oleg Efimov did a great job of moving all the docs for language and style - developers and contributors from the old wiki under the source code in the - "docs" directory. Now these docs are nicely presented at - . - -[ng]: https://github.com/nathan11g -[dd]: https://github.com/drdrang -[bolk]: https://github.com/bolknote -[oe]: https://github.com/Sannis -[kk]: https://github.com/kimmel -[vast]: https://github.com/vast - - -## Version 7.2 - -A regular bug-fix release without any significant new features. Enjoy! - - -## Version 7.1 - -A Summer crop: - -- [Marc Fornos][mf] made the definition for Clojure along with the matching - style Rainbow (which, of course, works for other languages too). -- CoffeeScript support continues to improve getting support for regular - expressions. -- Yoshihide Jimbo ported to highlight.js [five Tomorrow styles][tm] from the - [project by Chris Kempson][tm0]. -- Thanks to [Casey Duncun][cd] the library can now be built in the popular - [AMD format][amd]. -- And last but not least, we've got a fair number of correctness and consistency - fixes, including a pretty significant refactoring of Ruby. - -[mf]: https://github.com/mfornos -[tm]: http://jmblog.github.com/color-themes-for-highlightjs/ -[tm0]: https://github.com/ChrisKempson/Tomorrow-Theme -[cd]: https://github.com/caseman -[amd]: http://requirejs.org/docs/whyamd.html - - -## Version 7.0 - -The reason for the new major version update is a global change of keyword syntax -which resulted in the library getting smaller once again. For example, the -hosted build is 2K less than at the previous version while supporting two new -languages. - -Notable changes: - -- The library now works not only in a browser but also with [node.js][]. It is - installable with `npm install highlight.js`. [API][] docs are available on our - wiki. - -- The new unique feature (apparently) among syntax highlighters is highlighting - *HTTP* headers and an arbitrary language in the request body. The most useful - languages here are *XML* and *JSON* both of which highlight.js does support. - Here's [the detailed post][p] about the feature. - -- Two new style themes: a dark "south" *[Pojoaque][]* by Jason Tate and an - emulation of*XCode* IDE by [Angel Olloqui][ao]. - -- Three new languages: *D* by [Aleksandar Ružičić][ar], *R* by [Joe Cheng][jc] - and *GLSL* by [Sergey Tikhomirov][st]. - -- *Nginx* syntax has become a million times smaller and more universal thanks to - remaking it in a more generic manner that doesn't require listing all the - directives in the known universe. - -- Function titles are now highlighted in *PHP*. - -- *Haskell* and *VHDL* were significantly reworked to be more rich and correct - by their respective maintainers [Jeremy Hull][sr] and [Igor Kalnitsky][ik]. - -And last but not least, many bugs have been fixed around correctness and -language detection. - -Overall highlight.js currently supports 51 languages and 20 style themes. - -[node.js]: http://nodejs.org/ -[api]: http://softwaremaniacs.org/wiki/doku.php/highlight.js:api -[p]: http://softwaremaniacs.org/blog/2012/05/10/http-and-json-in-highlight-js/en/ -[pojoaque]: http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html -[ao]: https://github.com/angelolloqui -[ar]: https://github.com/raleksandar -[jc]: https://github.com/jcheng5 -[st]: https://github.com/tikhomirov -[sr]: https://github.com/sourrust -[ik]: https://github.com/ikalnitsky - - -## Version 6.2 - -A lot of things happened in highlight.js since the last version! We've got nine -new contributors, the discussion group came alive, and the main branch on GitHub -now counts more than 350 followers. Here are most significant results coming -from all this activity: - -- 5 (five!) new languages: Rust, ActionScript, CoffeeScript, MatLab and - experimental support for markdown. Thanks go to [Andrey Vlasovskikh][av], - [Alexander Myadzel][am], [Dmytrii Nagirniak][dn], [Oleg Efimov][oe], [Denis - Bardadym][db] and [John Crepezzi][jc]. - -- 2 new style themes: Monokai by [Luigi Maselli][lm] and stylistic imitation of - another well-known highlighter Google Code Prettify by [Aahan Krish][ak]. - -- A vast number of [correctness fixes and code refactorings][log], mostly made - by [Oleg Efimov][oe] and [Evgeny Stepanischev][es]. - -[av]: https://github.com/vlasovskikh -[am]: https://github.com/myadzel -[dn]: https://github.com/dnagir -[oe]: https://github.com/Sannis -[db]: https://github.com/btd -[jc]: https://github.com/seejohnrun -[lm]: http://grigio.org/ -[ak]: https://github.com/geekpanth3r -[es]: https://github.com/bolknote -[log]: https://github.com/isagalaev/highlight.js/commits/ - - -## Version 6.1 — Solarized - -[Jeremy Hull][jh] has implemented my dream feature — a port of [Solarized][] -style theme famous for being based on the intricate color theory to achieve -correct contrast and color perception. It is now available for highlight.js in -both variants — light and dark. - -This version also adds a new original style Arta. Its author pumbur maintains a -[heavily modified fork of highlight.js][pb] on GitHub. - -[jh]: https://github.com/sourrust -[solarized]: http://ethanschoonover.com/solarized -[pb]: https://github.com/pumbur/highlight.js - - -## Version 6.0 - -New major version of the highlighter has been built on a significantly -refactored syntax. Due to this it's even smaller than the previous one while -supporting more languages! - -New languages are: - -- Haskell by [Jeremy Hull][sourrust] -- Erlang in two varieties — module and REPL — made collectively by [Nikolay - Zakharov][desh], [Dmitry Kovega][arhibot] and [Sergey Ignatov][ignatov] -- Objective C by [Valerii Hiora][vhbit] -- Vala by [Antono Vasiljev][antono] -- Go by [Stephan Kountso][steplg] - -[sourrust]: https://github.com/sourrust -[desh]: http://desh.su/ -[arhibot]: https://github.com/arhibot -[ignatov]: https://github.com/ignatov -[vhbit]: https://github.com/vhbit -[antono]: https://github.com/antono -[steplg]: https://github.com/steplg - -Also this version is marginally faster and fixes a number of small long-standing -bugs. - -Developer overview of the new language syntax is available in a [blog post about -recent beta release][beta]. - -[beta]: http://softwaremaniacs.org/blog/2011/04/25/highlight-js-60-beta/en/ - -P.S. New version is not yet available on a Yandex' CDN, so for now you have to -download [your own copy][d]. - -[d]: /soft/highlight/en/download/ - - -## Version 5.14 - -Fixed bugs in HTML/XML detection and relevance introduced in previous -refactoring. - -Also test.html now shows the second best result of language detection by -relevance. - - -## Version 5.13 - -Past weekend began with a couple of simple additions for existing languages but -ended up in a big code refactoring bringing along nice improvements for language -developers. - -### For users - -- Description of C++ has got new keywords from the upcoming [C++ 0x][] standard. -- Description of HTML has got new tags from [HTML 5][]. -- CSS-styles have been unified to use consistent padding and also have lost - pop-outs with names of detected languages. -- [Igor Kalnitsky][ik] has sent two new language descriptions: CMake и VHDL. - -This makes total number of languages supported by highlight.js to reach 35. - -Bug fixes: - -- Custom classes on `
` tags are not being overridden anymore
-- More correct highlighting of code blocks inside non-`
` containers:
-  highlighter now doesn't insist on replacing them with its own container and
-  just replaces the contents.
-- Small fixes in browser compatibility and heuristics.
-
-[c++ 0x]: http://ru.wikipedia.org/wiki/C%2B%2B0x
-[html 5]: http://en.wikipedia.org/wiki/HTML5
-[ik]: http://kalnitsky.org.ua/
-
-### For developers
-
-The most significant change is the ability to include language submodes right
-under `contains` instead of defining explicit named submodes in the main array:
-
-    contains: [
-      'string',
-      'number',
-      {begin: '\\n', end: hljs.IMMEDIATE_RE}
-    ]
-
-This is useful for auxiliary modes needed only in one place to define parsing.
-Note that such modes often don't have `className` and hence won't generate a
-separate `` in the resulting markup. This is similar in effect to
-`noMarkup: true`. All existing languages have been refactored accordingly.
-
-Test file test.html has at last become a real test. Now it not only puts the
-detected language name under the code snippet but also tests if it matches the
-expected one. Test summary is displayed right above all language snippets.
-
-
-## CDN
-
-Fine people at [Yandex][] agreed to host highlight.js on their big fast servers.
-[Link up][l]!
-
-[yandex]: http://yandex.com/
-[l]: http://softwaremaniacs.org/soft/highlight/en/download/
-
-
-## Version 5.10 — "Paris".
-
-Though I'm on a vacation in Paris, I decided to release a new version with a
-couple of small fixes:
-
-- Tomas Vitvar discovered that TAB replacement doesn't always work when used
-  with custom markup in code
-- SQL parsing is even more rigid now and doesn't step over SmallTalk in tests
-
-
-## Version 5.9
-
-A long-awaited version is finally released.
-
-New languages:
-
-- Andrew Fedorov made a definition for Lua
-- a long-time highlight.js contributor [Peter Leonov][pl] made a definition for
-  Nginx config
-- [Vladimir Moskva][vm] made a definition for TeX
-
-[pl]: http://kung-fu-tzu.ru/
-[vm]: http://fulc.ru/
-
-Fixes for existing languages:
-
-- [Loren Segal][ls] reworked the Ruby definition and added highlighting for
-  [YARD][] inline documentation
-- the definition of SQL has become more solid and now it shouldn't be overly
-  greedy when it comes to language detection
-
-[ls]: http://gnuu.org/
-[yard]: http://yardoc.org/
-
-The highlighter has become more usable as a library allowing to do highlighting
-from initialization code of JS frameworks and in ajax methods (see.
-readme.eng.txt).
-
-Also this version drops support for the [WordPress][wp] plugin. Everyone is
-welcome to [pick up its maintenance][p] if needed.
-
-[wp]: http://wordpress.org/
-[p]: http://bazaar.launchpad.net/~isagalaev/+junk/highlight/annotate/342/src/wp_highlight.js.php
-
-
-## Version 5.8
-
-- Jan Berkel has contributed a definition for Scala. +1 to hotness!
-- All CSS-styles are rewritten to work only inside `
` tags to avoid
-  conflicts with host site styles.
-
-
-## Version 5.7.
-
-Fixed escaping of quotes in VBScript strings.
-
-
-## Version 5.5
-
-This version brings a small change: now .ini-files allow digits, underscores and
-square brackets in key names.
-
-
-## Version 5.4
-
-Fixed small but upsetting bug in the packer which caused incorrect highlighting
-of explicitly specified languages. Thanks to Andrew Fedorov for precise
-diagnostics!
-
-
-## Version 5.3
-
-The version to fulfil old promises.
-
-The most significant change is that highlight.js now preserves custom user
-markup in code along with its own highlighting markup. This means that now it's
-possible to use, say, links in code. Thanks to [Vladimir Dolzhenko][vd] for the
-[initial proposal][1] and for making a proof-of-concept patch.
-
-Also in this version:
-
-- [Vasily Polovnyov][vp] has sent a GitHub-like style and has implemented
-  support for CSS @-rules and Ruby symbols.
-- Yura Zaripov has sent two styles: Brown Paper and School Book.
-- Oleg Volchkov has sent a definition for [Parser 3][p3].
-
-[1]: http://softwaremaniacs.org/forum/highlightjs/6612/
-[p3]: http://www.parser.ru/
-[vp]: http://vasily.polovnyov.ru/
-[vd]: http://dolzhenko.blogspot.com/
-
-
-## Version 5.2
-
-- at last it's possible to replace indentation TABs with something sensible (e.g. 2 or 4 spaces)
-- new keywords and built-ins for 1C by Sergey Baranov
-- a couple of small fixes to Apache highlighting
-
-
-## Version 5.1
-
-This is one of those nice version consisting entirely of new and shiny
-contributions!
-
-- [Vladimir Ermakov][vooon] created highlighting for AVR Assembler
-- [Ruslan Keba][rukeba] created highlighting for Apache config file. Also his
-  original visual style for it is now available for all highlight.js languages
-  under the name "Magula".
-- [Shuen-Huei Guan][drake] (aka Drake) sent new keywords for RenderMan
-  languages. Also thanks go to [Konstantin Evdokimenko][ke] for his advice on
-  the matter.
-
-[vooon]: http://vehq.ru/about/
-[rukeba]: http://rukeba.com/
-[drake]: http://drakeguan.org/
-[ke]: http://k-evdokimenko.moikrug.ru/
-
-
-## Version 5.0
-
-The main change in the new major version of highlight.js is a mechanism for
-packing several languages along with the library itself into a single compressed
-file. Now sites using several languages will load considerably faster because
-the library won't dynamically include additional files while loading.
-
-Also this version fixes a long-standing bug with Javascript highlighting that
-couldn't distinguish between regular expressions and division operations.
-
-And as usually there were a couple of minor correctness fixes.
-
-Great thanks to all contributors! Keep using highlight.js.
-
-
-## Version 4.3
-
-This version comes with two contributions from [Jason Diamond][jd]:
-
-- language definition for C# (yes! it was a long-missed thing!)
-- Visual Studio-like highlighting style
-
-Plus there are a couple of minor bug fixes for parsing HTML and XML attributes.
-
-[jd]: http://jason.diamond.name/weblog/
-
-
-## Version 4.2
-
-The biggest news is highlighting for Lisp, courtesy of Vasily Polovnyov. It's
-somewhat experimental meaning that for highlighting "keywords" it doesn't use
-any pre-defined set of a Lisp dialect. Instead it tries to highlight first word
-in parentheses wherever it makes sense. I'd like to ask people programming in
-Lisp to confirm if it's a good idea and send feedback to [the forum][f].
-
-Other changes:
-
-- Smalltalk was excluded from DEFAULT_LANGUAGES to save traffic
-- [Vladimir Epifanov][voldmar] has implemented javascript style switcher for
-  test.html
-- comments now allowed inside Ruby function definition
-- [MEL][] language from [Shuen-Huei Guan][drake]
-- whitespace now allowed between `
` and ``
-- better auto-detection of C++ and PHP
-- HTML allows embedded VBScript (`<% .. %>`)
-
-[f]: http://softwaremaniacs.org/forum/highlightjs/
-[voldmar]: http://voldmar.ya.ru/
-[mel]: http://en.wikipedia.org/wiki/Maya_Embedded_Language
-[drake]: http://drakeguan.org/
-
-
-## Version 4.1
-
-Languages:
-
-- Bash from Vah
-- DOS bat-files from Alexander Makarov (Sam)
-- Diff files from Vasily Polovnyov
-- Ini files from myself though initial idea was from Sam
-
-Styles:
-
-- Zenburn from Vladimir Epifanov, this is an imitation of a
-  [well-known theme for Vim][zenburn].
-- Ascetic from myself, as a realization of ideals of non-flashy highlighting:
-  just one color in only three gradations :-)
-
-In other news. [One small bug][bug] was fixed, built-in keywords were added for
-Python and C++ which improved auto-detection for the latter (it was shame that
-[my wife's blog][alenacpp] had issues with it from time to time). And lastly
-thanks go to Sam for getting rid of my stylistic comments in code that were
-getting in the way of [JSMin][].
-
-[zenburn]: http://en.wikipedia.org/wiki/Zenburn
-[alenacpp]: http://alenacpp.blogspot.com/
-[bug]: http://softwaremaniacs.org/forum/viewtopic.php?id=1823
-[jsmin]: http://code.google.com/p/jsmin-php/
-
-
-## Version 4.0
-
-New major version is a result of vast refactoring and of many contributions.
-
-Visible new features:
-
-- Highlighting of embedded languages. Currently is implemented highlighting of
-  Javascript and CSS inside HTML.
-- Bundled 5 ready-made style themes!
-
-Invisible new features:
-
-- Highlight.js no longer pollutes global namespace. Only one object and one
-  function for backward compatibility.
-- Performance is further increased by about 15%.
-
-Changing of a major version number caused by a new format of language definition
-files. If you use some third-party language files they should be updated.
-
-
-## Version 3.5
-
-A very nice version in my opinion fixing a number of small bugs and slightly
-increased speed in a couple of corner cases. Thanks to everybody who reports
-bugs in he [forum][f] and by email!
-
-There is also a new language — XML. A custom XML formerly was detected as HTML
-and didn't highlight custom tags. In this version I tried to make custom XML to
-be detected and highlighted by its own rules. Which by the way include such
-things as CDATA sections and processing instructions (``).
-
-[f]: http://softwaremaniacs.org/forum/viewforum.php?id=6
-
-
-## Version 3.3
-
-[Vladimir Gubarkov][xonix] has provided an interesting and useful addition.
-File export.html contains a little program that shows and allows to copy and
-paste an HTML code generated by the highlighter for any code snippet. This can
-be useful in situations when one can't use the script itself on a site.
-
-
-[xonix]: http://xonixx.blogspot.com/
-
-
-## Version 3.2 consists completely of contributions:
-
-- Vladimir Gubarkov has described SmallTalk
-- Yuri Ivanov has described 1C
-- Peter Leonov has packaged the highlighter as a Firefox extension
-- Vladimir Ermakov has compiled a mod for phpBB
-
-Many thanks to you all!
-
-
-## Version 3.1
-
-Three new languages are available: Django templates, SQL and Axapta. The latter
-two are sent by [Dmitri Roudakov][1]. However I've almost entirely rewrote an
-SQL definition but I'd never started it be it from the ground up :-)
-
-The engine itself has got a long awaited feature of grouping keywords
-("keyword", "built-in function", "literal"). No more hacks!
-
-[1]: http://roudakov.ru/
-
-
-## Version 3.0
-
-It is major mainly because now highlight.js has grown large and has become
-modular. Now when you pass it a list of languages to highlight it will
-dynamically load into a browser only those languages.
-
-Also:
-
-- Konstantin Evdokimenko of [RibKit][] project has created a highlighting for
-  RenderMan Shading Language and RenderMan Interface Bytestream. Yay for more
-  languages!
-- Heuristics for C++ and HTML got better.
-- I've implemented (at last) a correct handling of backslash escapes in C-like
-  languages.
-
-There is also a small backwards incompatible change in the new version. The
-function initHighlighting that was used to initialize highlighting instead of
-initHighlightingOnLoad a long time ago no longer works. If you by chance still
-use it — replace it with the new one.
-
-[RibKit]: http://ribkit.sourceforge.net/
-
-
-## Version 2.9
-
-Highlight.js is a parser, not just a couple of regular expressions. That said
-I'm glad to announce that in the new version 2.9 has support for:
-
-- in-string substitutions for Ruby -- `#{...}`
-- strings from from numeric symbol codes (like #XX) for Delphi
-
-
-## Version 2.8
-
-A maintenance release with more tuned heuristics. Fully backwards compatible.
-
-
-## Version 2.7
-
-- Nikita Ledyaev presents highlighting for VBScript, yay!
-- A couple of bugs with escaping in strings were fixed thanks to Mickle
-- Ongoing tuning of heuristics
-
-Fixed bugs were rather unpleasant so I encourage everyone to upgrade!
-
-
-## Version 2.4
-
-- Peter Leonov provides another improved highlighting for Perl
-- Javascript gets a new kind of keywords — "literals". These are the words
-  "true", "false" and "null"
-
-Also highlight.js homepage now lists sites that use the library. Feel free to
-add your site by [dropping me a message][mail] until I find the time to build a
-submit form.
-
-[mail]: mailto:Maniac@SoftwareManiacs.Org
-
-
-## Version 2.3
-
-This version fixes IE breakage in previous version. My apologies to all who have
-already downloaded that one!
-
-
-## Version 2.2
-
-- added highlighting for Javascript
-- at last fixed parsing of Delphi's escaped apostrophes in strings
-- in Ruby fixed highlighting of keywords 'def' and 'class', same for 'sub' in
-  Perl
-
-
-## Version 2.0
-
-- Ruby support by [Anton Kovalyov][ak]
-- speed increased by orders of magnitude due to new way of parsing
-- this same way allows now correct highlighting of keywords in some tricky
-  places (like keyword "End" at the end of Delphi classes)
-
-[ak]: http://anton.kovalyov.net/
-
-
-## Version 1.0
-
-Version 1.0 of javascript syntax highlighter is released!
-
-It's the first version available with English description. Feel free to post
-your comments and question to [highlight.js forum][forum]. And don't be afraid
-if you find there some fancy Cyrillic letters -- it's for Russian users too :-)
-
-[forum]: http://softwaremaniacs.org/forum/viewforum.php?id=6
diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/LICENSE.bin b/public/build/ckeditor/plugins/codesnippet/lib/highlight/LICENSE.bin
deleted file mode 100644
index 422deb73..00000000
--- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/LICENSE.bin
+++ /dev/null
@@ -1,24 +0,0 @@
-Copyright (c) 2006, Ivan Sagalaev
-All rights reserved.
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-    * Redistributions of source code must retain the above copyright
-      notice, this list of conditions and the following disclaimer.
-    * Redistributions in binary form must reproduce the above copyright
-      notice, this list of conditions and the following disclaimer in the
-      documentation and/or other materials provided with the distribution.
-    * Neither the name of highlight.js nor the names of its contributors 
-      may be used to endorse or promote products derived from this software 
-      without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
-ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/README.ru.md b/public/build/ckeditor/plugins/codesnippet/lib/highlight/README.ru.md
deleted file mode 100644
index be85f6ad..00000000
--- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/README.ru.md
+++ /dev/null
@@ -1,171 +0,0 @@
-# Highlight.js
-
-Highlight.js нужен для подсветки синтаксиса в примерах кода в блогах,
-форумах и вообще на любых веб-страницах. Пользоваться им очень просто,
-потому что работает он автоматически: сам находит блоки кода, сам
-определяет язык, сам подсвечивает.
-
-Автоопределением языка можно управлять, когда оно не справляется само (см.
-дальше "Эвристика").
-
-
-## Простое использование
-
-Подключите библиотеку и стиль на страницу и повесть вызов подсветки на
-загрузку страницы:
-
-```html
-
-
-
-```
-
-Весь код на странице, обрамлённый в теги `
 .. 
` -будет автоматически подсвечен. Если вы используете другие теги или хотите -подсвечивать блоки кода динамически, читайте "Инициализацию вручную" ниже. - -- Вы можете скачать собственную версию "highlight.pack.js" или сослаться - на захостенный файл, как описано на странице загрузки: - - -- Стилевые темы можно найти в загруженном архиве или также использовать - захостенные. Чтобы сделать собственный стиль для своего сайта, вам - будет полезен [CSS classes reference][cr], который тоже есть в архиве. - -[cr]: http://highlightjs.readthedocs.org/en/latest/css-classes-reference.html - - -## node.js - -Highlight.js можно использовать в node.js. Библиотеку со всеми возможными языками можно -установить с NPM: - - npm install highlight.js - -Также её можно собрать из исходников с только теми языками, которые нужны: - - python3 tools/build.py -tnode lang1 lang2 .. - -Использование библиотеки: - -```javascript -var hljs = require('highlight.js'); - -// Если вы знаете язык -hljs.highlight(lang, code).value; - -// Автоопределение языка -hljs.highlightAuto(code).value; -``` - - -## AMD - -Highlight.js можно использовать с загрузчиком AMD-модулей. Для этого его -нужно собрать из исходников следующей командой: - -```bash -$ python3 tools/build.py -tamd lang1 lang2 .. -``` - -Она создаст файл `build/highlight.pack.js`, который является загружаемым -AMD-модулем и содержит все выбранные при сборке языки. Используется он так: - -```javascript -require(["highlight.js/build/highlight.pack"], function(hljs){ - - // Если вы знаете язык - hljs.highlight(lang, code).value; - - // Автоопределение языка - hljs.highlightAuto(code).value; -}); -``` - - -## Замена TABов - -Также вы можете заменить символы TAB ('\x09'), используемые для отступов, на -фиксированное количество пробелов или на отдельный ``, чтобы задать ему -какой-нибудь специальный стиль: - -```html - -``` - - -## Инициализация вручную - -Если вы используете другие теги для блоков кода, вы можете инициализировать их -явно с помощью функции `highlightBlock(code)`. Она принимает DOM-элемент с -текстом расцвечиваемого кода и опционально - строчку для замены символов TAB. - -Например с использованием jQuery код инициализации может выглядеть так: - -```javascript -$(document).ready(function() { - $('pre code').each(function(i, e) {hljs.highlightBlock(e)}); -}); -``` - -`highlightBlock` можно также использовать, чтобы подсветить блоки кода, -добавленные на страницу динамически. Только убедитесь, что вы не делаете этого -повторно для уже раскрашенных блоков. - -Если ваш блок кода использует `
` вместо переводов строки (т.е. если это не -`
`), включите опцию `useBR`:
-
-```javascript
-hljs.configure({useBR: true});
-$('div.code').each(function(i, e) {hljs.highlightBlock(e)});
-```
-
-
-## Эвристика
-
-Определение языка, на котором написан фрагмент, делается с помощью
-довольно простой эвристики: программа пытается расцветить фрагмент всеми
-языками подряд, и для каждого языка считает количество подошедших
-синтаксически конструкций и ключевых слов. Для какого языка нашлось больше,
-тот и выбирается.
-
-Это означает, что в коротких фрагментах высока вероятность ошибки, что
-периодически и случается. Чтобы указать язык фрагмента явно, надо написать
-его название в виде класса к элементу ``:
-
-```html
-
...
-``` - -Можно использовать рекомендованные в HTML5 названия классов: -"language-html", "language-php". Также можно назначать классы на элемент -`
`.
-
-Чтобы запретить расцветку фрагмента вообще, используется класс "no-highlight":
-
-```html
-
...
-``` - - -## Экспорт - -В файле export.html находится небольшая программка, которая показывает и дает -скопировать непосредственно HTML-код подсветки для любого заданного фрагмента кода. -Это может понадобится например на сайте, на котором нельзя подключить сам скрипт -highlight.js. - - -## Координаты - -- Версия: 8.0 -- URL: http://highlightjs.org/ - -Лицензионное соглашение читайте в файле LICENSE. -Список авторов и соавторов читайте в файле AUTHORS.ru.txt diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js b/public/build/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js deleted file mode 100644 index 627f79e2..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js +++ /dev/null @@ -1 +0,0 @@ -var hljs=new function(){function k(v){return v.replace(/&/gm,"&").replace(//gm,">")}function t(v){return v.nodeName.toLowerCase()}function i(w,x){var v=w&&w.exec(x);return v&&v.index==0}function d(v){return Array.prototype.map.call(v.childNodes,function(w){if(w.nodeType==3){return b.useBR?w.nodeValue.replace(/\n/g,""):w.nodeValue}if(t(w)=="br"){return"\n"}return d(w)}).join("")}function r(w){var v=(w.className+" "+(w.parentNode?w.parentNode.className:"")).split(/\s+/);v=v.map(function(x){return x.replace(/^language-/,"")});return v.filter(function(x){return j(x)||x=="no-highlight"})[0]}function o(x,y){var v={};for(var w in x){v[w]=x[w]}if(y){for(var w in y){v[w]=y[w]}}return v}function u(x){var v=[];(function w(y,z){for(var A=y.firstChild;A;A=A.nextSibling){if(A.nodeType==3){z+=A.nodeValue.length}else{if(t(A)=="br"){z+=1}else{if(A.nodeType==1){v.push({event:"start",offset:z,node:A});z=w(A,z);v.push({event:"stop",offset:z,node:A})}}}}return z})(x,0);return v}function q(w,y,C){var x=0;var F="";var z=[];function B(){if(!w.length||!y.length){return w.length?w:y}if(w[0].offset!=y[0].offset){return(w[0].offset"}function E(G){F+=""}function v(G){(G.event=="start"?A:E)(G.node)}while(w.length||y.length){var D=B();F+=k(C.substr(x,D[0].offset-x));x=D[0].offset;if(D==w){z.reverse().forEach(E);do{v(D.splice(0,1)[0]);D=B()}while(D==w&&D.length&&D[0].offset==x);z.reverse().forEach(A)}else{if(D[0].event=="start"){z.push(D[0].node)}else{z.pop()}v(D.splice(0,1)[0])}}return F+k(C.substr(x))}function m(y){function v(z){return(z&&z.source)||z}function w(A,z){return RegExp(v(A),"m"+(y.cI?"i":"")+(z?"g":""))}function x(D,C){if(D.compiled){return}D.compiled=true;D.k=D.k||D.bK;if(D.k){var z={};function E(G,F){if(y.cI){F=F.toLowerCase()}F.split(" ").forEach(function(H){var I=H.split("|");z[I[0]]=[G,I[1]?Number(I[1]):1]})}if(typeof D.k=="string"){E("keyword",D.k)}else{Object.keys(D.k).forEach(function(F){E(F,D.k[F])})}D.k=z}D.lR=w(D.l||/\b[A-Za-z0-9_]+\b/,true);if(C){if(D.bK){D.b=D.bK.split(" ").join("|")}if(!D.b){D.b=/\B|\b/}D.bR=w(D.b);if(!D.e&&!D.eW){D.e=/\B|\b/}if(D.e){D.eR=w(D.e)}D.tE=v(D.e)||"";if(D.eW&&C.tE){D.tE+=(D.e?"|":"")+C.tE}}if(D.i){D.iR=w(D.i)}if(D.r===undefined){D.r=1}if(!D.c){D.c=[]}var B=[];D.c.forEach(function(F){if(F.v){F.v.forEach(function(G){B.push(o(F,G))})}else{B.push(F=="self"?D:F)}});D.c=B;D.c.forEach(function(F){x(F,D)});if(D.starts){x(D.starts,C)}var A=D.c.map(function(F){return F.bK?"\\.?\\b("+F.b+")\\b\\.?":F.b}).concat([D.tE]).concat([D.i]).map(v).filter(Boolean);D.t=A.length?w(A.join("|"),true):{exec:function(F){return null}};D.continuation={}}x(y)}function c(S,L,J,R){function v(U,V){for(var T=0;T";U+=Z+'">';return U+X+Y}function N(){var U=k(C);if(!I.k){return U}var T="";var X=0;I.lR.lastIndex=0;var V=I.lR.exec(U);while(V){T+=U.substr(X,V.index-X);var W=E(I,V);if(W){H+=W[1];T+=w(W[0],V[0])}else{T+=V[0]}X=I.lR.lastIndex;V=I.lR.exec(U)}return T+U.substr(X)}function F(){if(I.sL&&!f[I.sL]){return k(C)}var T=I.sL?c(I.sL,C,true,I.continuation.top):g(C);if(I.r>0){H+=T.r}if(I.subLanguageMode=="continuous"){I.continuation.top=T.top}return w(T.language,T.value,false,true)}function Q(){return I.sL!==undefined?F():N()}function P(V,U){var T=V.cN?w(V.cN,"",true):"";if(V.rB){D+=T;C=""}else{if(V.eB){D+=k(U)+T;C=""}else{D+=T;C=U}}I=Object.create(V,{parent:{value:I}})}function G(T,X){C+=T;if(X===undefined){D+=Q();return 0}var V=v(X,I);if(V){D+=Q();P(V,X);return V.rB?0:X.length}var W=z(I,X);if(W){var U=I;if(!(U.rE||U.eE)){C+=X}D+=Q();do{if(I.cN){D+=""}H+=I.r;I=I.parent}while(I!=W.parent);if(U.eE){D+=k(X)}C="";if(W.starts){P(W.starts,"")}return U.rE?0:X.length}if(A(X,I)){throw new Error('Illegal lexeme "'+X+'" for mode "'+(I.cN||"")+'"')}C+=X;return X.length||1}var M=j(S);if(!M){throw new Error('Unknown language: "'+S+'"')}m(M);var I=R||M;var D="";for(var K=I;K!=M;K=K.parent){if(K.cN){D=w(K.cN,D,true)}}var C="";var H=0;try{var B,y,x=0;while(true){I.t.lastIndex=x;B=I.t.exec(L);if(!B){break}y=G(L.substr(x,B.index-x),B[0]);x=B.index+y}G(L.substr(x));for(var K=I;K.parent;K=K.parent){if(K.cN){D+=""}}return{r:H,value:D,language:S,top:I}}catch(O){if(O.message.indexOf("Illegal")!=-1){return{r:0,value:k(L)}}else{throw O}}}function g(y,x){x=x||b.languages||Object.keys(f);var v={r:0,value:k(y)};var w=v;x.forEach(function(z){if(!j(z)){return}var A=c(z,y,false);A.language=z;if(A.r>w.r){w=A}if(A.r>v.r){w=v;v=A}});if(w.language){v.second_best=w}return v}function h(v){if(b.tabReplace){v=v.replace(/^((<[^>]+>|\t)+)/gm,function(w,z,y,x){return z.replace(/\t/g,b.tabReplace)})}if(b.useBR){v=v.replace(/\n/g,"
")}return v}function p(z){var y=d(z);var A=r(z);if(A=="no-highlight"){return}var v=A?c(A,y,true):g(y);var w=u(z);if(w.length){var x=document.createElementNS("http://www.w3.org/1999/xhtml","pre");x.innerHTML=v.value;v.value=q(w,u(x),y)}v.value=h(v.value);z.innerHTML=v.value;z.className+=" hljs "+(!A&&v.language||"");z.result={language:v.language,re:v.r};if(v.second_best){z.second_best={language:v.second_best.language,re:v.second_best.r}}}var b={classPrefix:"hljs-",tabReplace:null,useBR:false,languages:undefined};function s(v){b=o(b,v)}function l(){if(l.called){return}l.called=true;var v=document.querySelectorAll("pre code");Array.prototype.forEach.call(v,p)}function a(){addEventListener("DOMContentLoaded",l,false);addEventListener("load",l,false)}var f={};var n={};function e(v,x){var w=f[v]=x(this);if(w.aliases){w.aliases.forEach(function(y){n[y]=v})}}function j(v){return f[v]||f[n[v]]}this.highlight=c;this.highlightAuto=g;this.fixMarkup=h;this.highlightBlock=p;this.configure=s;this.initHighlighting=l;this.initHighlightingOnLoad=a;this.registerLanguage=e;this.getLanguage=j;this.inherit=o;this.IR="[a-zA-Z][a-zA-Z0-9_]*";this.UIR="[a-zA-Z_][a-zA-Z0-9_]*";this.NR="\\b\\d+(\\.\\d+)?";this.CNR="(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)";this.BNR="\\b(0b[01]+)";this.RSR="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~";this.BE={b:"\\\\[\\s\\S]",r:0};this.ASM={cN:"string",b:"'",e:"'",i:"\\n",c:[this.BE]};this.QSM={cN:"string",b:'"',e:'"',i:"\\n",c:[this.BE]};this.CLCM={cN:"comment",b:"//",e:"$"};this.CBLCLM={cN:"comment",b:"/\\*",e:"\\*/"};this.HCM={cN:"comment",b:"#",e:"$"};this.NM={cN:"number",b:this.NR,r:0};this.CNM={cN:"number",b:this.CNR,r:0};this.BNM={cN:"number",b:this.BNR,r:0};this.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gim]*/,i:/\n/,c:[this.BE,{b:/\[/,e:/\]/,r:0,c:[this.BE]}]};this.TM={cN:"title",b:this.IR,r:0};this.UTM={cN:"title",b:this.UIR,r:0}}();hljs.registerLanguage("bash",function(b){var a={cN:"variable",v:[{b:/\$[\w\d#@][\w\d_]*/},{b:/\$\{(.*?)\}/}]};var d={cN:"string",b:/"/,e:/"/,c:[b.BE,a,{cN:"variable",b:/\$\(/,e:/\)/,c:[b.BE]}]};var c={cN:"string",b:/'/,e:/'/};return{l:/-?[a-z\.]+/,k:{keyword:"if then else elif fi for break continue while in do done exit return set declare case esac export exec",literal:"true false",built_in:"printf echo read cd pwd pushd popd dirs let eval unset typeset readonly getopts source shopt caller type hash bind help sudo",operator:"-ne -eq -lt -gt -f -d -e -s -l -a"},c:[{cN:"shebang",b:/^#![^\n]+sh\s*$/,r:10},{cN:"function",b:/\w[\w\d_]*\s*\(\s*\)\s*\{/,rB:true,c:[b.inherit(b.TM,{b:/\w[\w\d_]*/})],r:0},b.HCM,b.NM,d,c,a]}});hljs.registerLanguage("cs",function(b){var a="abstract as base bool break byte case catch char checked const continue decimal default delegate do double else enum event explicit extern false finally fixed float for foreach goto if implicit in int interface internal is lock long new null object operator out override params private protected public readonly ref return sbyte sealed short sizeof stackalloc static string struct switch this throw true try typeof uint ulong unchecked unsafe ushort using virtual volatile void while async await ascending descending from get group into join let orderby partial select set value var where yield";return{k:a,c:[{cN:"comment",b:"///",e:"$",rB:true,c:[{cN:"xmlDocTag",b:"///|"},{cN:"xmlDocTag",b:""}]},b.CLCM,b.CBLCLM,{cN:"preprocessor",b:"#",e:"$",k:"if else elif endif define undef warning error line region endregion pragma checksum"},{cN:"string",b:'@"',e:'"',c:[{b:'""'}]},b.ASM,b.QSM,b.CNM,{bK:"protected public private internal",e:/[{;=]/,k:a,c:[{bK:"class namespace interface",starts:{c:[b.TM]}},{b:b.IR+"\\s*\\(",rB:true,c:[b.TM]}]}]}});hljs.registerLanguage("ruby",function(e){var h="[a-zA-Z_]\\w*[!?=]?|[-+~]\\@|<<|>>|=~|===?|<=>|[<>]=?|\\*\\*|[-/+%^&*~`|]|\\[\\]=?";var g="and false then defined module in return redo if BEGIN retry end for true self when next until do begin unless END rescue nil else break undef not super class case require yield alias while ensure elsif or include attr_reader attr_writer attr_accessor";var a={cN:"yardoctag",b:"@[A-Za-z]+"};var i={cN:"comment",v:[{b:"#",e:"$",c:[a]},{b:"^\\=begin",e:"^\\=end",c:[a],r:10},{b:"^__END__",e:"\\n$"}]};var c={cN:"subst",b:"#\\{",e:"}",k:g};var d={cN:"string",c:[e.BE,c],v:[{b:/'/,e:/'/},{b:/"/,e:/"/},{b:"%[qw]?\\(",e:"\\)"},{b:"%[qw]?\\[",e:"\\]"},{b:"%[qw]?{",e:"}"},{b:"%[qw]?<",e:">",r:10},{b:"%[qw]?/",e:"/",r:10},{b:"%[qw]?%",e:"%",r:10},{b:"%[qw]?-",e:"-",r:10},{b:"%[qw]?\\|",e:"\\|",r:10},{b:/\B\?(\\\d{1,3}|\\x[A-Fa-f0-9]{1,2}|\\u[A-Fa-f0-9]{4}|\\?\S)\b/}]};var b={cN:"params",b:"\\(",e:"\\)",k:g};var f=[d,i,{cN:"class",bK:"class module",e:"$|;",i:/=/,c:[e.inherit(e.TM,{b:"[A-Za-z_]\\w*(::\\w+)*(\\?|\\!)?"}),{cN:"inheritance",b:"<\\s*",c:[{cN:"parent",b:"("+e.IR+"::)?"+e.IR}]},i]},{cN:"function",bK:"def",e:" |$|;",r:0,c:[e.inherit(e.TM,{b:h}),b,i]},{cN:"constant",b:"(::)?(\\b[A-Z]\\w*(::)?)+",r:0},{cN:"symbol",b:":",c:[d,{b:h}],r:0},{cN:"symbol",b:e.UIR+"(\\!|\\?)?:",r:0},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{cN:"variable",b:"(\\$\\W)|((\\$|\\@\\@?)(\\w+))"},{b:"("+e.RSR+")\\s*",c:[i,{cN:"regexp",c:[e.BE,c],i:/\n/,v:[{b:"/",e:"/[a-z]*"},{b:"%r{",e:"}[a-z]*"},{b:"%r\\(",e:"\\)[a-z]*"},{b:"%r!",e:"![a-z]*"},{b:"%r\\[",e:"\\][a-z]*"}]}],r:0}];c.c=f;b.c=f;return{k:g,c:f}});hljs.registerLanguage("diff",function(a){return{c:[{cN:"chunk",r:10,v:[{b:/^\@\@ +\-\d+,\d+ +\+\d+,\d+ +\@\@$/},{b:/^\*\*\* +\d+,\d+ +\*\*\*\*$/},{b:/^\-\-\- +\d+,\d+ +\-\-\-\-$/}]},{cN:"header",v:[{b:/Index: /,e:/$/},{b:/=====/,e:/=====$/},{b:/^\-\-\-/,e:/$/},{b:/^\*{3} /,e:/$/},{b:/^\+\+\+/,e:/$/},{b:/\*{5}/,e:/\*{5}$/}]},{cN:"addition",b:"^\\+",e:"$"},{cN:"deletion",b:"^\\-",e:"$"},{cN:"change",b:"^\\!",e:"$"}]}});hljs.registerLanguage("javascript",function(a){return{aliases:["js"],k:{keyword:"in if for while finally var new function do return void else break catch instanceof with throw case default try this switch continue typeof delete let yield const class",literal:"true false null undefined NaN Infinity",built_in:"eval isFinite isNaN parseFloat parseInt decodeURI decodeURIComponent encodeURI encodeURIComponent escape unescape Object Function Boolean Error EvalError InternalError RangeError ReferenceError StopIteration SyntaxError TypeError URIError Number Math Date String RegExp Array Float32Array Float64Array Int16Array Int32Array Int8Array Uint16Array Uint32Array Uint8Array Uint8ClampedArray ArrayBuffer DataView JSON Intl arguments require"},c:[{cN:"pi",b:/^\s*('|")use strict('|")/,r:10},a.ASM,a.QSM,a.CLCM,a.CBLCLM,a.CNM,{b:"("+a.RSR+"|\\b(case|return|throw)\\b)\\s*",k:"return throw case",c:[a.CLCM,a.CBLCLM,a.REGEXP_MODE,{b:/;/,r:0,sL:"xml"}],r:0},{cN:"function",bK:"function",e:/\{/,c:[a.inherit(a.TM,{b:/[A-Za-z$_][0-9A-Za-z$_]*/}),{cN:"params",b:/\(/,e:/\)/,c:[a.CLCM,a.CBLCLM],i:/["'\(]/}],i:/\[|%/},{b:/\$[(.]/},{b:"\\."+a.IR,r:0}]}});hljs.registerLanguage("xml",function(a){var c="[A-Za-z0-9\\._:-]+";var d={b:/<\?(php)?(?!\w)/,e:/\?>/,sL:"php",subLanguageMode:"continuous"};var b={eW:true,i:/]+/}]}]}]};return{aliases:["html"],cI:true,c:[{cN:"doctype",b:"",r:10,c:[{b:"\\[",e:"\\]"}]},{cN:"comment",b:"",r:10},{cN:"cdata",b:"<\\!\\[CDATA\\[",e:"\\]\\]>",r:10},{cN:"tag",b:"|$)",e:">",k:{title:"style"},c:[b],starts:{e:"",rE:true,sL:"css"}},{cN:"tag",b:"|$)",e:">",k:{title:"script"},c:[b],starts:{e:"<\/script>",rE:true,sL:"javascript"}},{b:"<%",e:"%>",sL:"vbscript"},d,{cN:"pi",b:/<\?\w+/,e:/\?>/,r:10},{cN:"tag",b:"",c:[{cN:"title",b:"[^ /><]+",r:0},b]}]}});hljs.registerLanguage("markdown",function(a){return{c:[{cN:"header",v:[{b:"^#{1,6}",e:"$"},{b:"^.+?\\n[=-]{2,}$"}]},{b:"<",e:">",sL:"xml",r:0},{cN:"bullet",b:"^([*+-]|(\\d+\\.))\\s+"},{cN:"strong",b:"[*_]{2}.+?[*_]{2}"},{cN:"emphasis",v:[{b:"\\*.+?\\*"},{b:"_.+?_",r:0}]},{cN:"blockquote",b:"^>\\s+",e:"$"},{cN:"code",v:[{b:"`.+?`"},{b:"^( {4}|\t)",e:"$",r:0}]},{cN:"horizontal_rule",b:"^[-\\*]{3,}",e:"$"},{b:"\\[.+?\\][\\(\\[].+?[\\)\\]]",rB:true,c:[{cN:"link_label",b:"\\[",e:"\\]",eB:true,rE:true,r:0},{cN:"link_url",b:"\\]\\(",e:"\\)",eB:true,eE:true},{cN:"link_reference",b:"\\]\\[",e:"\\]",eB:true,eE:true,}],r:10},{b:"^\\[.+\\]:",e:"$",rB:true,c:[{cN:"link_reference",b:"\\[",e:"\\]",eB:true,eE:true},{cN:"link_url",b:"\\s",e:"$"}]}]}});hljs.registerLanguage("css",function(a){var b="[a-zA-Z-][a-zA-Z0-9_-]*";var c={cN:"function",b:b+"\\(",e:"\\)",c:["self",a.NM,a.ASM,a.QSM]};return{cI:true,i:"[=/|']",c:[a.CBLCLM,{cN:"id",b:"\\#[A-Za-z0-9_-]+"},{cN:"class",b:"\\.[A-Za-z0-9_-]+",r:0},{cN:"attr_selector",b:"\\[",e:"\\]",i:"$"},{cN:"pseudo",b:":(:)?[a-zA-Z0-9\\_\\-\\+\\(\\)\\\"\\']+"},{cN:"at_rule",b:"@(font-face|page)",l:"[a-z-]+",k:"font-face page"},{cN:"at_rule",b:"@",e:"[{;]",c:[{cN:"keyword",b:/\S+/},{b:/\s/,eW:true,eE:true,r:0,c:[c,a.ASM,a.QSM,a.NM]}]},{cN:"tag",b:b,r:0},{cN:"rules",b:"{",e:"}",i:"[^\\s]",r:0,c:[a.CBLCLM,{cN:"rule",b:"[^\\s]",rB:true,e:";",eW:true,c:[{cN:"attribute",b:"[A-Z\\_\\.\\-]+",e:":",eE:true,i:"[^\\s]",starts:{cN:"value",eW:true,eE:true,c:[c,a.NM,a.QSM,a.ASM,a.CBLCLM,{cN:"hexcolor",b:"#[0-9A-Fa-f]+"},{cN:"important",b:"!important"}]}}]}]}]}});hljs.registerLanguage("http",function(a){return{i:"\\S",c:[{cN:"status",b:"^HTTP/[0-9\\.]+",e:"$",c:[{cN:"number",b:"\\b\\d{3}\\b"}]},{cN:"request",b:"^[A-Z]+ (.*?) HTTP/[0-9\\.]+$",rB:true,e:"$",c:[{cN:"string",b:" ",e:" ",eB:true,eE:true}]},{cN:"attribute",b:"^\\w",e:": ",eE:true,i:"\\n|\\s|=",starts:{cN:"string",e:"$"}},{b:"\\n\\n",starts:{sL:"",eW:true}}]}});hljs.registerLanguage("java",function(b){var a="false synchronized int abstract float private char boolean static null if const for true while long throw strictfp finally protected import native final return void enum else break transient new catch instanceof byte super volatile case assert short package default double public try this switch continue throws";return{k:a,i:/<\//,c:[{cN:"javadoc",b:"/\\*\\*",e:"\\*/",c:[{cN:"javadoctag",b:"(^|\\s)@[A-Za-z]+"}],r:10},b.CLCM,b.CBLCLM,b.ASM,b.QSM,{bK:"protected public private",e:/[{;=]/,k:a,c:[{cN:"class",bK:"class interface",eW:true,i:/[:"<>]/,c:[{bK:"extends implements",r:10},b.UTM]},{b:b.UIR+"\\s*\\(",rB:true,c:[b.UTM]}]},b.CNM,{cN:"annotation",b:"@[A-Za-z]+"}]}});hljs.registerLanguage("php",function(b){var e={cN:"variable",b:"\\$+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*"};var a={cN:"preprocessor",b:/<\?(php)?|\?>/};var c={cN:"string",c:[b.BE,a],v:[{b:'b"',e:'"'},{b:"b'",e:"'"},b.inherit(b.ASM,{i:null}),b.inherit(b.QSM,{i:null})]};var d={v:[b.BNM,b.CNM]};return{cI:true,k:"and include_once list abstract global private echo interface as static endswitch array null if endwhile or const for endforeach self var while isset public protected exit foreach throw elseif include __FILE__ empty require_once do xor return parent clone use __CLASS__ __LINE__ else break print eval new catch __METHOD__ case exception default die require __FUNCTION__ enddeclare final try switch continue endfor endif declare unset true false trait goto instanceof insteadof __DIR__ __NAMESPACE__ yield finally",c:[b.CLCM,b.HCM,{cN:"comment",b:"/\\*",e:"\\*/",c:[{cN:"phpdoc",b:"\\s@[A-Za-z]+"},a]},{cN:"comment",b:"__halt_compiler.+?;",eW:true,k:"__halt_compiler",l:b.UIR},{cN:"string",b:"<<<['\"]?\\w+['\"]?$",e:"^\\w+;",c:[b.BE]},a,e,{cN:"function",bK:"function",e:/[;{]/,i:"\\$|\\[|%",c:[b.UTM,{cN:"params",b:"\\(",e:"\\)",c:["self",e,b.CBLCLM,c,d]}]},{cN:"class",bK:"class interface",e:"{",i:/[:\(\$"]/,c:[{bK:"extends implements",r:10},b.UTM]},{bK:"namespace",e:";",i:/[\.']/,c:[b.UTM]},{bK:"use",e:";",c:[b.UTM]},{b:"=>"},c,d]}});hljs.registerLanguage("python",function(a){var f={cN:"prompt",b:/^(>>>|\.\.\.) /};var b={cN:"string",c:[a.BE],v:[{b:/(u|b)?r?'''/,e:/'''/,c:[f],r:10},{b:/(u|b)?r?"""/,e:/"""/,c:[f],r:10},{b:/(u|r|ur)'/,e:/'/,r:10},{b:/(u|r|ur)"/,e:/"/,r:10},{b:/(b|br)'/,e:/'/,},{b:/(b|br)"/,e:/"/,},a.ASM,a.QSM]};var d={cN:"number",r:0,v:[{b:a.BNR+"[lLjJ]?"},{b:"\\b(0o[0-7]+)[lLjJ]?"},{b:a.CNR+"[lLjJ]?"}]};var e={cN:"params",b:/\(/,e:/\)/,c:["self",f,d,b]};var c={e:/:/,i:/[${=;\n]/,c:[a.UTM,e]};return{k:{keyword:"and elif is global as in if from raise for except finally print import pass return exec else break not with class assert yield try while continue del or def lambda nonlocal|10 None True False",built_in:"Ellipsis NotImplemented"},i:/(<\/|->|\?)/,c:[f,d,b,a.HCM,a.inherit(c,{cN:"function",bK:"def",r:10}),a.inherit(c,{cN:"class",bK:"class"}),{cN:"decorator",b:/@/,e:/$/},{b:/\b(print|exec)\(/}]}});hljs.registerLanguage("sql",function(a){return{cI:true,i:/[<>]/,c:[{cN:"operator",b:"\\b(begin|end|start|commit|rollback|savepoint|lock|alter|create|drop|rename|call|delete|do|handler|insert|load|replace|select|truncate|update|set|show|pragma|grant|merge)\\b(?!:)",e:";",eW:true,k:{keyword:"all partial global month current_timestamp using go revoke smallint indicator end-exec disconnect zone with character assertion to add current_user usage input local alter match collate real then rollback get read timestamp session_user not integer bit unique day minute desc insert execute like ilike|2 level decimal drop continue isolation found where constraints domain right national some module transaction relative second connect escape close system_user for deferred section cast current sqlstate allocate intersect deallocate numeric public preserve full goto initially asc no key output collation group by union session both last language constraint column of space foreign deferrable prior connection unknown action commit view or first into float year primary cascaded except restrict set references names table outer open select size are rows from prepare distinct leading create only next inner authorization schema corresponding option declare precision immediate else timezone_minute external varying translation true case exception join hour default double scroll value cursor descriptor values dec fetch procedure delete and false int is describe char as at in varchar null trailing any absolute current_time end grant privileges when cross check write current_date pad begin temporary exec time update catalog user sql date on identity timezone_hour natural whenever interval work order cascade diagnostics nchar having left call do handler load replace truncate start lock show pragma exists number trigger if before after each row merge matched database",aggregate:"count sum min max avg"},c:[{cN:"string",b:"'",e:"'",c:[a.BE,{b:"''"}]},{cN:"string",b:'"',e:'"',c:[a.BE,{b:'""'}]},{cN:"string",b:"`",e:"`",c:[a.BE]},a.CNM]},a.CBLCLM,{cN:"comment",b:"--",e:"$"}]}});hljs.registerLanguage("ini",function(a){return{cI:true,i:/\S/,c:[{cN:"comment",b:";",e:"$"},{cN:"title",b:"^\\[",e:"\\]"},{cN:"setting",b:"^[a-z0-9\\[\\]_-]+[ \\t]*=[ \\t]*",e:"$",c:[{cN:"value",eW:true,k:"on off true false yes no",c:[a.QSM,a.NM],r:0}]}]}});hljs.registerLanguage("perl",function(c){var d="getpwent getservent quotemeta msgrcv scalar kill dbmclose undef lc ma syswrite tr send umask sysopen shmwrite vec qx utime local oct semctl localtime readpipe do return format read sprintf dbmopen pop getpgrp not getpwnam rewinddir qqfileno qw endprotoent wait sethostent bless s|0 opendir continue each sleep endgrent shutdown dump chomp connect getsockname die socketpair close flock exists index shmgetsub for endpwent redo lstat msgctl setpgrp abs exit select print ref gethostbyaddr unshift fcntl syscall goto getnetbyaddr join gmtime symlink semget splice x|0 getpeername recv log setsockopt cos last reverse gethostbyname getgrnam study formline endhostent times chop length gethostent getnetent pack getprotoent getservbyname rand mkdir pos chmod y|0 substr endnetent printf next open msgsnd readdir use unlink getsockopt getpriority rindex wantarray hex system getservbyport endservent int chr untie rmdir prototype tell listen fork shmread ucfirst setprotoent else sysseek link getgrgid shmctl waitpid unpack getnetbyname reset chdir grep split require caller lcfirst until warn while values shift telldir getpwuid my getprotobynumber delete and sort uc defined srand accept package seekdir getprotobyname semop our rename seek if q|0 chroot sysread setpwent no crypt getc chown sqrt write setnetent setpriority foreach tie sin msgget map stat getlogin unless elsif truncate exec keys glob tied closedirioctl socket readlink eval xor readline binmode setservent eof ord bind alarm pipe atan2 getgrent exp time push setgrent gt lt or ne m|0 break given say state when";var f={cN:"subst",b:"[$@]\\{",e:"\\}",k:d};var g={b:"->{",e:"}"};var a={cN:"variable",v:[{b:/\$\d/},{b:/[\$\%\@\*](\^\w\b|#\w+(\:\:\w+)*|{\w+}|\w+(\:\:\w*)*)/},{b:/[\$\%\@\*][^\s\w{]/,r:0}]};var e={cN:"comment",b:"^(__END__|__DATA__)",e:"\\n$",r:5};var h=[c.BE,f,a];var b=[a,c.HCM,e,{cN:"comment",b:"^\\=\\w",e:"\\=cut",eW:true},g,{cN:"string",c:h,v:[{b:"q[qwxr]?\\s*\\(",e:"\\)",r:5},{b:"q[qwxr]?\\s*\\[",e:"\\]",r:5},{b:"q[qwxr]?\\s*\\{",e:"\\}",r:5},{b:"q[qwxr]?\\s*\\|",e:"\\|",r:5},{b:"q[qwxr]?\\s*\\<",e:"\\>",r:5},{b:"qw\\s+q",e:"q",r:5},{b:"'",e:"'",c:[c.BE]},{b:'"',e:'"'},{b:"`",e:"`",c:[c.BE]},{b:"{\\w+}",c:[],r:0},{b:"-?\\w+\\s*\\=\\>",c:[],r:0}]},{cN:"number",b:"(\\b0[0-7_]+)|(\\b0x[0-9a-fA-F_]+)|(\\b[1-9][0-9_]*(\\.[0-9_]+)?)|[0_]\\b",r:0},{b:"(\\/\\/|"+c.RSR+"|\\b(split|return|print|reverse|grep)\\b)\\s*",k:"split return print reverse grep",r:0,c:[c.HCM,e,{cN:"regexp",b:"(s|tr|y)/(\\\\.|[^/])*/(\\\\.|[^/])*/[a-z]*",r:10},{cN:"regexp",b:"(m|qr)?/",e:"/[a-z]*",c:[c.BE],r:0}]},{cN:"sub",bK:"sub",e:"(\\s*\\(.*?\\))?[;{]",r:5},{cN:"operator",b:"-\\w\\b",r:0}];f.c=b;g.c=b;return{k:d,c:b}});hljs.registerLanguage("objectivec",function(a){var d={keyword:"int float while char export sizeof typedef const struct for union unsigned long volatile static bool mutable if do return goto void enum else break extern asm case short default double register explicit signed typename this switch continue wchar_t inline readonly assign self synchronized id nonatomic super unichar IBOutlet IBAction strong weak @private @protected @public @try @property @end @throw @catch @finally @synthesize @dynamic @selector @optional @required",literal:"false true FALSE TRUE nil YES NO NULL",built_in:"NSString NSDictionary CGRect CGPoint UIButton UILabel UITextView UIWebView MKMapView UISegmentedControl NSObject UITableViewDelegate UITableViewDataSource NSThread UIActivityIndicator UITabbar UIToolBar UIBarButtonItem UIImageView NSAutoreleasePool UITableView BOOL NSInteger CGFloat NSException NSLog NSMutableString NSMutableArray NSMutableDictionary NSURL NSIndexPath CGSize UITableViewCell UIView UIViewController UINavigationBar UINavigationController UITabBarController UIPopoverController UIPopoverControllerDelegate UIImage NSNumber UISearchBar NSFetchedResultsController NSFetchedResultsChangeType UIScrollView UIScrollViewDelegate UIEdgeInsets UIColor UIFont UIApplication NSNotFound NSNotificationCenter NSNotification UILocalNotification NSBundle NSFileManager NSTimeInterval NSDate NSCalendar NSUserDefaults UIWindow NSRange NSArray NSError NSURLRequest NSURLConnection UIInterfaceOrientation MPMoviePlayerController dispatch_once_t dispatch_queue_t dispatch_sync dispatch_async dispatch_once"};var c=/[a-zA-Z@][a-zA-Z0-9_]*/;var b="@interface @class @protocol @implementation";return{k:d,l:c,i:""}]},{cN:"preprocessor",b:"#",e:"$"},{cN:"class",b:"("+b.split(" ").join("|")+")\\b",e:"({|$)",k:b,l:c,c:[a.UTM]},{cN:"variable",b:"\\."+a.UIR,r:0}]}});hljs.registerLanguage("coffeescript",function(c){var b={keyword:"in if for while finally new do return else break catch instanceof throw try this switch continue typeof delete debugger super then unless until loop of by when and or is isnt not",literal:"true false null undefined yes no on off",reserved:"case default function var void with const let enum export import native __hasProp __extends __slice __bind __indexOf",built_in:"npm require console print module exports global window document"};var a="[A-Za-z$_][0-9A-Za-z$_]*";var f=c.inherit(c.TM,{b:a});var e={cN:"subst",b:/#\{/,e:/}/,k:b};var d=[c.BNM,c.inherit(c.CNM,{starts:{e:"(\\s*/)?",r:0}}),{cN:"string",v:[{b:/'''/,e:/'''/,c:[c.BE]},{b:/'/,e:/'/,c:[c.BE]},{b:/"""/,e:/"""/,c:[c.BE,e]},{b:/"/,e:/"/,c:[c.BE,e]}]},{cN:"regexp",v:[{b:"///",e:"///",c:[e,c.HCM]},{b:"//[gim]*",r:0},{b:"/\\S(\\\\.|[^\\n])*?/[gim]*(?=\\s|\\W|$)"}]},{cN:"property",b:"@"+a},{b:"`",e:"`",eB:true,eE:true,sL:"javascript"}];e.c=d;return{k:b,c:d.concat([{cN:"comment",b:"###",e:"###"},c.HCM,{cN:"function",b:"("+a+"\\s*=\\s*)?(\\(.*\\))?\\s*\\B[-=]>",e:"[-=]>",rB:true,c:[f,{cN:"params",b:"\\(",rB:true,c:[{b:/\(/,e:/\)/,k:b,c:["self"].concat(d)}]}]},{cN:"class",bK:"class",e:"$",i:/[:="\[\]]/,c:[{bK:"extends",eW:true,i:/[:="\[\]]/,c:[f]},f]},{cN:"attribute",b:a+":",e:":",rB:true,eE:true,r:0}])}});hljs.registerLanguage("nginx",function(c){var b={cN:"variable",v:[{b:/\$\d+/},{b:/\$\{/,e:/}/},{b:"[\\$\\@]"+c.UIR}]};var a={eW:true,l:"[a-z/_]+",k:{built_in:"on off yes no true false none blocked debug info notice warn error crit select break last permanent redirect kqueue rtsig epoll poll /dev/poll"},r:0,i:"=>",c:[c.HCM,{cN:"string",c:[c.BE,b],v:[{b:/"/,e:/"/},{b:/'/,e:/'/}]},{cN:"url",b:"([a-z]+):/",e:"\\s",eW:true,eE:true},{cN:"regexp",c:[c.BE,b],v:[{b:"\\s\\^",e:"\\s|{|;",rE:true},{b:"~\\*?\\s+",e:"\\s|{|;",rE:true},{b:"\\*(\\.[a-z\\-]+)+"},{b:"([a-z\\-]+\\.)+\\*"}]},{cN:"number",b:"\\b\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}(:\\d{1,5})?\\b"},{cN:"number",b:"\\b\\d+[kKmMgGdshdwy]*\\b",r:0},b]};return{c:[c.HCM,{b:c.UIR+"\\s",e:";|{",rB:true,c:[c.inherit(c.UTM,{starts:a})],r:0}],i:"[^\\s\\}]"}});hljs.registerLanguage("json",function(a){var e={literal:"true false null"};var d=[a.QSM,a.CNM];var c={cN:"value",e:",",eW:true,eE:true,c:d,k:e};var b={b:"{",e:"}",c:[{cN:"attribute",b:'\\s*"',e:'"\\s*:\\s*',eB:true,eE:true,c:[a.BE],i:"\\n",starts:c}],i:"\\S"};var f={b:"\\[",e:"\\]",c:[a.inherit(c,{cN:null})],i:"\\S"};d.splice(d.length,0,b,f);return{c:d,k:e,i:"\\S"}});hljs.registerLanguage("apache",function(a){var b={cN:"number",b:"[\\$%]\\d+"};return{cI:true,c:[a.HCM,{cN:"tag",b:""},{cN:"keyword",b:/\w+/,r:0,k:{common:"order deny allow setenv rewriterule rewriteengine rewritecond documentroot sethandler errordocument loadmodule options header listen serverroot servername"},starts:{e:/$/,r:0,k:{literal:"on off all"},c:[{cN:"sqbracket",b:"\\s\\[",e:"\\]$"},{cN:"cbracket",b:"[\\$%]\\{",e:"\\}",c:["self",b]},b,a.QSM]}}],i:/\S/}});hljs.registerLanguage("cpp",function(a){var b={keyword:"false int float while private char catch export virtual operator sizeof dynamic_cast|10 typedef const_cast|10 const struct for static_cast|10 union namespace unsigned long throw volatile static protected bool template mutable if public friend do return goto auto void enum else break new extern using true class asm case typeid short reinterpret_cast|10 default double register explicit signed typename try this switch continue wchar_t inline delete alignof char16_t char32_t constexpr decltype noexcept nullptr static_assert thread_local restrict _Bool complex _Complex _Imaginary",built_in:"std string cin cout cerr clog stringstream istringstream ostringstream auto_ptr deque list queue stack vector map set bitset multiset multimap unordered_set unordered_map unordered_multiset unordered_multimap array shared_ptr abort abs acos asin atan2 atan calloc ceil cosh cos exit exp fabs floor fmod fprintf fputs free frexp fscanf isalnum isalpha iscntrl isdigit isgraph islower isprint ispunct isspace isupper isxdigit tolower toupper labs ldexp log10 log malloc memchr memcmp memcpy memset modf pow printf putchar puts scanf sinh sin snprintf sprintf sqrt sscanf strcat strchr strcmp strcpy strcspn strlen strncat strncmp strncpy strpbrk strrchr strspn strstr tanh tan vfprintf vprintf vsprintf"};return{aliases:["c"],k:b,i:"",i:"\\n"},a.CLCM]},{cN:"stl_container",b:"\\b(deque|list|queue|stack|vector|map|set|bitset|multiset|multimap|unordered_map|unordered_set|unordered_multiset|unordered_multimap|array)\\s*<",e:">",k:b,r:10,c:["self"]}]}});hljs.registerLanguage("makefile",function(a){var b={cN:"variable",b:/\$\(/,e:/\)/,c:[a.BE]};return{c:[a.HCM,{b:/^\w+\s*\W*=/,rB:true,r:0,starts:{cN:"constant",e:/\s*\W*=/,eE:true,starts:{e:/$/,r:0,c:[b],}}},{cN:"title",b:/^[\w]+:\s*$/},{cN:"phony",b:/^\.PHONY:/,e:/$/,k:".PHONY",l:/[\.\w]+/},{b:/^\t+/,e:/$/,c:[a.QSM,b]}]}}); diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css deleted file mode 100644 index c2a55bbe..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css +++ /dev/null @@ -1,160 +0,0 @@ -/* -Date: 17.V.2011 -Author: pumbur -*/ - -.hljs -{ - display: block; padding: 0.5em; - background: #222; -} - -.profile .hljs-header *, -.ini .hljs-title, -.nginx .hljs-title -{ - color: #fff; -} - -.hljs-comment, -.hljs-javadoc, -.hljs-preprocessor, -.hljs-preprocessor .hljs-title, -.hljs-pragma, -.hljs-shebang, -.profile .hljs-summary, -.diff, -.hljs-pi, -.hljs-doctype, -.hljs-tag, -.hljs-template_comment, -.css .hljs-rules, -.tex .hljs-special -{ - color: #444; -} - -.hljs-string, -.hljs-symbol, -.diff .hljs-change, -.hljs-regexp, -.xml .hljs-attribute, -.smalltalk .hljs-char, -.xml .hljs-value, -.ini .hljs-value, -.clojure .hljs-attribute, -.coffeescript .hljs-attribute -{ - color: #ffcc33; -} - -.hljs-number, -.hljs-addition -{ - color: #00cc66; -} - -.hljs-built_in, -.hljs-literal, -.vhdl .hljs-typename, -.go .hljs-constant, -.go .hljs-typename, -.ini .hljs-keyword, -.lua .hljs-title, -.perl .hljs-variable, -.php .hljs-variable, -.mel .hljs-variable, -.django .hljs-variable, -.css .funtion, -.smalltalk .method, -.hljs-hexcolor, -.hljs-important, -.hljs-flow, -.hljs-inheritance, -.parser3 .hljs-variable -{ - color: #32AAEE; -} - -.hljs-keyword, -.hljs-tag .hljs-title, -.css .hljs-tag, -.css .hljs-class, -.css .hljs-id, -.css .hljs-pseudo, -.css .hljs-attr_selector, -.lisp .hljs-title, -.clojure .hljs-built_in, -.hljs-winutils, -.tex .hljs-command, -.hljs-request, -.hljs-status -{ - color: #6644aa; -} - -.hljs-title, -.ruby .hljs-constant, -.vala .hljs-constant, -.hljs-parent, -.hljs-deletion, -.hljs-template_tag, -.css .hljs-keyword, -.objectivec .hljs-class .hljs-id, -.smalltalk .hljs-class, -.lisp .hljs-keyword, -.apache .hljs-tag, -.nginx .hljs-variable, -.hljs-envvar, -.bash .hljs-variable, -.go .hljs-built_in, -.vbscript .hljs-built_in, -.lua .hljs-built_in, -.rsl .hljs-built_in, -.tail, -.avrasm .hljs-label, -.tex .hljs-formula, -.tex .hljs-formula * -{ - color: #bb1166; -} - -.hljs-yardoctag, -.hljs-phpdoc, -.profile .hljs-header, -.ini .hljs-title, -.apache .hljs-tag, -.parser3 .hljs-title -{ - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata -{ - opacity: 0.6; -} - -.hljs, -.javascript, -.css, -.xml, -.hljs-subst, -.diff .hljs-chunk, -.css .hljs-value, -.css .hljs-attribute, -.lisp .hljs-string, -.lisp .hljs-number, -.tail .hljs-params, -.hljs-container, -.haskell *, -.erlang *, -.erlang_repl * -{ - color: #aaa; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css deleted file mode 100644 index 89c5fe2f..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css +++ /dev/null @@ -1,50 +0,0 @@ -/* - -Original style from softwaremaniacs.org (c) Ivan Sagalaev - -*/ - -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-filter .hljs-argument, -.hljs-addition, -.hljs-change, -.apache .hljs-tag, -.apache .hljs-cbracket, -.nginx .hljs-built_in, -.tex .hljs-formula { - color: #888; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-shebang, -.hljs-doctype, -.hljs-pi, -.hljs-javadoc, -.hljs-deletion, -.apache .hljs-sqbracket { - color: #CCC; -} - -.hljs-keyword, -.hljs-tag .hljs-title, -.ini .hljs-title, -.lisp .hljs-title, -.clojure .hljs-title, -.http .hljs-title, -.nginx .hljs-title, -.css .hljs-tag, -.hljs-winutils, -.hljs-flow, -.apache .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css deleted file mode 100644 index 4cfc77ca..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Dune Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Dune Dark Comment */ -.hljs-comment, -.hljs-title { - color: #999580; -} - -/* Atelier Dune Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d73737; -} - -/* Atelier Dune Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #b65611; -} - -/* Atelier Dune Dark Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #cfb017; -} - -/* Atelier Dune Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #60ac39; -} - -/* Atelier Dune Dark Aqua */ -.css .hljs-hexcolor { - color: #1fad83; -} - -/* Atelier Dune Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6684e1; -} - -/* Atelier Dune Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b854d4; -} - -.hljs { - display: block; - background: #292824; - color: #a6a28c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css deleted file mode 100644 index 3501bf82..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Dune Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/dune) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Dune Light Comment */ -.hljs-comment, -.hljs-title { - color: #7d7a68; -} - -/* Atelier Dune Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d73737; -} - -/* Atelier Dune Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #b65611; -} - -/* Atelier Dune Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #cfb017; -} - -/* Atelier Dune Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #60ac39; -} - -/* Atelier Dune Light Aqua */ -.css .hljs-hexcolor { - color: #1fad83; -} - -/* Atelier Dune Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6684e1; -} - -/* Atelier Dune Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b854d4; -} - -.hljs { - display: block; - background: #fefbec; - color: #6e6b5e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css deleted file mode 100644 index 9c26b7be..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Forest Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Forest Dark Comment */ -.hljs-comment, -.hljs-title { - color: #9c9491; -} - -/* Atelier Forest Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f22c40; -} - -/* Atelier Forest Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #df5320; -} - -/* Atelier Forest Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #d5911a; -} - -/* Atelier Forest Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #5ab738; -} - -/* Atelier Forest Dark Aqua */ -.css .hljs-hexcolor { - color: #00ad9c; -} - -/* Atelier Forest Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #407ee7; -} - -/* Atelier Forest Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #6666ea; -} - -.hljs { - display: block; - background: #2c2421; - color: #a8a19f; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css deleted file mode 100644 index 3de3dadb..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Forest Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/forest) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Forest Light Comment */ -.hljs-comment, -.hljs-title { - color: #766e6b; -} - -/* Atelier Forest Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f22c40; -} - -/* Atelier Forest Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #df5320; -} - -/* Atelier Forest Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #d5911a; -} - -/* Atelier Forest Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #5ab738; -} - -/* Atelier Forest Light Aqua */ -.css .hljs-hexcolor { - color: #00ad9c; -} - -/* Atelier Forest Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #407ee7; -} - -/* Atelier Forest Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #6666ea; -} - -.hljs { - display: block; - background: #f1efee; - color: #68615e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css deleted file mode 100644 index df1446c1..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Heath Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Heath Dark Comment */ -.hljs-comment, -.hljs-title { - color: #9e8f9e; -} - -/* Atelier Heath Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ca402b; -} - -/* Atelier Heath Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #a65926; -} - -/* Atelier Heath Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #bb8a35; -} - -/* Atelier Heath Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #379a37; -} - -/* Atelier Heath Dark Aqua */ -.css .hljs-hexcolor { - color: #159393; -} - -/* Atelier Heath Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #516aec; -} - -/* Atelier Heath Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #7b59c0; -} - -.hljs { - display: block; - background: #292329; - color: #ab9bab; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css deleted file mode 100644 index a737a082..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Heath Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/heath) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Heath Light Comment */ -.hljs-comment, -.hljs-title { - color: #776977; -} - -/* Atelier Heath Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ca402b; -} - -/* Atelier Heath Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #a65926; -} - -/* Atelier Heath Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #bb8a35; -} - -/* Atelier Heath Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #379a37; -} - -/* Atelier Heath Light Aqua */ -.css .hljs-hexcolor { - color: #159393; -} - -/* Atelier Heath Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #516aec; -} - -/* Atelier Heath Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #7b59c0; -} - -.hljs { - display: block; - background: #f7f3f7; - color: #695d69; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css deleted file mode 100644 index 43c5b4ea..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Lakeside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Lakeside Dark Comment */ -.hljs-comment, -.hljs-title { - color: #7195a8; -} - -/* Atelier Lakeside Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d22d72; -} - -/* Atelier Lakeside Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #935c25; -} - -/* Atelier Lakeside Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #8a8a0f; -} - -/* Atelier Lakeside Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #568c3b; -} - -/* Atelier Lakeside Dark Aqua */ -.css .hljs-hexcolor { - color: #2d8f6f; -} - -/* Atelier Lakeside Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #257fad; -} - -/* Atelier Lakeside Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #5d5db1; -} - -.hljs { - display: block; - background: #1f292e; - color: #7ea2b4; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css deleted file mode 100644 index 5a782694..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Lakeside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/lakeside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Lakeside Light Comment */ -.hljs-comment, -.hljs-title { - color: #5a7b8c; -} - -/* Atelier Lakeside Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d22d72; -} - -/* Atelier Lakeside Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #935c25; -} - -/* Atelier Lakeside Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #8a8a0f; -} - -/* Atelier Lakeside Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #568c3b; -} - -/* Atelier Lakeside Light Aqua */ -.css .hljs-hexcolor { - color: #2d8f6f; -} - -/* Atelier Lakeside Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #257fad; -} - -/* Atelier Lakeside Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #5d5db1; -} - -.hljs { - display: block; - background: #ebf8ff; - color: #516d7b; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css deleted file mode 100644 index 3bea9b36..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Seaside Dark - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Seaside Dark Comment */ -.hljs-comment, -.hljs-title { - color: #809980; -} - -/* Atelier Seaside Dark Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #e6193c; -} - -/* Atelier Seaside Dark Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #87711d; -} - -/* Atelier Seaside Dark Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #c3c322; -} - -/* Atelier Seaside Dark Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #29a329; -} - -/* Atelier Seaside Dark Aqua */ -.css .hljs-hexcolor { - color: #1999b3; -} - -/* Atelier Seaside Dark Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #3d62f5; -} - -/* Atelier Seaside Dark Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ad2bee; -} - -.hljs { - display: block; - background: #242924; - color: #8ca68c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css deleted file mode 100644 index e86c44d6..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Base16 Atelier Seaside Light - Theme */ -/* by Bram de Haan (http://atelierbram.github.io/syntax-highlighting/atelier-schemes/seaside/) */ -/* Original Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16) */ -/* https://github.com/jmblog/color-themes-for-highlightjs */ - -/* Atelier Seaside Light Comment */ -.hljs-comment, -.hljs-title { - color: #687d68; -} - -/* Atelier Seaside Light Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #e6193c; -} - -/* Atelier Seaside Light Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #87711d; -} - -/* Atelier Seaside Light Yellow */ -.hljs-ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #c3c322; -} - -/* Atelier Seaside Light Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #29a329; -} - -/* Atelier Seaside Light Aqua */ -.css .hljs-hexcolor { - color: #1999b3; -} - -/* Atelier Seaside Light Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #3d62f5; -} - -/* Atelier Seaside Light Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ad2bee; -} - -.hljs { - display: block; - background: #f0fff0; - color: #5e6e5e; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css deleted file mode 100644 index 0838fb8f..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - -Brown Paper style from goldblog.com.ua (c) Zaripov Yura - -*/ - -.hljs { - display: block; padding: 0.5em; - background:#b7a68e url(./brown_papersq.png); -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special, -.hljs-request, -.hljs-status { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-keyword { - color: #363C69; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-number { - color: #2C009F; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula { - color: #802022; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-command { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.8; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png deleted file mode 100644 index 3813903d..00000000 Binary files a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css deleted file mode 100644 index b9426c37..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - -Dark style from softwaremaniacs.org (c) Ivan Sagalaev - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #444; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color: white; -} - -.hljs, -.hljs-subst { - color: #DDD; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.ini .hljs-title, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt, -.coffeescript .hljs-attribute { - color: #D88; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #777; -} - -.hljs-keyword, -.hljs-literal, -.hljs-title, -.css .hljs-id, -.hljs-phpdoc, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/default.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/default.css deleted file mode 100644 index ae9af353..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/default.css +++ /dev/null @@ -1,153 +0,0 @@ -/* - -Original style from softwaremaniacs.org (c) Ivan Sagalaev - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #F0F0F0; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-title, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title { - color: black; -} - -.hljs-string, -.hljs-title, -.hljs-constant, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.haml .hljs-symbol, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.bash .hljs-variable, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.tex .hljs-special, -.erlang_repl .hljs-function_or_atom, -.asciidoc .hljs-header, -.markdown .hljs-header, -.coffeescript .hljs-attribute { - color: #800; -} - -.smartquote, -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk, -.asciidoc .hljs-blockquote, -.markdown .hljs-blockquote { - color: #888; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.hljs-hexcolor, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.go .hljs-constant, -.hljs-change, -.lasso .hljs-variable, -.makefile .hljs-variable, -.asciidoc .hljs-bullet, -.markdown .hljs-bullet, -.asciidoc .hljs-link_url, -.markdown .hljs-link_url { - color: #080; -} - -.hljs-label, -.hljs-javadoc, -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-important, -.hljs-pseudo, -.hljs-pi, -.haml .hljs-bullet, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula, -.erlang_repl .hljs-reserved, -.hljs-prompt, -.asciidoc .hljs-link_label, -.markdown .hljs-link_label, -.vhdl .hljs-attribute, -.clojure .hljs-attribute, -.asciidoc .hljs-attribute, -.lasso .hljs-attribute, -.coffeescript .hljs-property, -.hljs-phony { - color: #88F -} - -.hljs-keyword, -.hljs-id, -.hljs-title, -.hljs-built_in, -.hljs-aggregate, -.css .hljs-tag, -.hljs-javadoctag, -.hljs-phpdoc, -.hljs-yardoctag, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.go .hljs-typename, -.tex .hljs-command, -.asciidoc .hljs-strong, -.markdown .hljs-strong, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.asciidoc .hljs-emphasis, -.markdown .hljs-emphasis { - font-style: italic; -} - -.nginx .hljs-built_in { - font-weight: normal; -} - -.coffeescript .javascript, -.javascript .xml, -.lasso .markup, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css deleted file mode 100644 index 5026d6cf..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css +++ /dev/null @@ -1,132 +0,0 @@ -/* -Docco style used in http://jashkenas.github.com/docco/ converted by Simon Madine (@thingsinjars) -*/ - -.hljs { - display: block; padding: 0.5em; - color: #000; - background: #f8f8ff -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-javadoc { - color: #408080; - font-style: italic -} - -.hljs-keyword, -.assignment, -.hljs-literal, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.lisp .hljs-title, -.hljs-subst { - color: #954121; -} - -.hljs-number, -.hljs-hexcolor { - color: #40a070 -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula { - color: #219161; -} - -.hljs-title, -.hljs-id { - color: #19469D; -} -.hljs-params { - color: #00F; -} - -.javascript .hljs-title, -.lisp .hljs-title, -.hljs-subst { - font-weight: normal -} - -.hljs-class .hljs-title, -.haskell .hljs-label, -.tex .hljs-command { - color: #458; - font-weight: bold -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal -} - -.hljs-attribute, -.hljs-variable, -.instancevar, -.lisp .hljs-body { - color: #008080 -} - -.hljs-regexp { - color: #B68 -} - -.hljs-class { - color: #458; - font-weight: bold -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-symbol .hljs-keyword, -.ruby .hljs-symbol .keymethods, -.lisp .hljs-keyword, -.tex .hljs-special, -.input_number { - color: #990073 -} - -.builtin, -.constructor, -.hljs-built_in, -.lisp .hljs-title { - color: #0086b3 -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold -} - -.hljs-deletion { - background: #fdd -} - -.hljs-addition { - background: #dfd -} - -.diff .hljs-change { - background: #0086b3 -} - -.hljs-chunk { - color: #aaa -} - -.tex .hljs-formula { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/far.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/far.css deleted file mode 100644 index be505362..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/far.css +++ /dev/null @@ -1,113 +0,0 @@ -/* - -FAR Style (c) MajestiC - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000080; -} - -.hljs, -.hljs-subst { - color: #0FF; -} - -.hljs-string, -.ruby .hljs-string, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.css .hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.clojure .hljs-title, -.coffeescript .hljs-attribute { - color: #FF0; -} - -.hljs-keyword, -.css .hljs-id, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.xml .hljs-tag .hljs-title, -.hljs-winutils, -.hljs-flow, -.hljs-change, -.hljs-envvar, -.bash .hljs-variable, -.tex .hljs-special, -.clojure .hljs-built_in { - color: #FFF; -} - -.hljs-comment, -.hljs-phpdoc, -.hljs-javadoc, -.java .hljs-annotation, -.hljs-template_comment, -.hljs-deletion, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #888; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.clojure .hljs-attribute { - color: #0F0; -} - -.python .hljs-decorator, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.xml .hljs-pi, -.diff .hljs-header, -.hljs-chunk, -.hljs-shebang, -.nginx .hljs-built_in, -.hljs-prompt { - color: #008080; -} - -.hljs-keyword, -.css .hljs-id, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.hljs-winutils, -.hljs-flow, -.apache .hljs-tag, -.nginx .hljs-built_in, -.tex .hljs-command, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css deleted file mode 100644 index 0710a10f..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css +++ /dev/null @@ -1,133 +0,0 @@ -/* -Description: Foundation 4 docs style for highlight.js -Author: Dan Allen -Website: http://foundation.zurb.com/docs/ -Version: 1.0 -Date: 2013-04-02 -*/ - -.hljs { - display: block; padding: 0.5em; - background: #eee; -} - -.hljs-header, -.hljs-decorator, -.hljs-annotation { - color: #000077; -} - -.hljs-horizontal_rule, -.hljs-link_url, -.hljs-emphasis, -.hljs-attribute { - color: #070; -} - -.hljs-emphasis { - font-style: italic; -} - -.hljs-link_label, -.hljs-strong, -.hljs-value, -.hljs-string, -.scss .hljs-value .hljs-string { - color: #d14; -} - -.hljs-strong { - font-weight: bold; -} - -.hljs-blockquote, -.hljs-comment { - color: #998; - font-style: italic; -} - -.asciidoc .hljs-title, -.hljs-function .hljs-title { - color: #900; -} - -.hljs-class { - color: #458; -} - -.hljs-id, -.hljs-pseudo, -.hljs-constant, -.hljs-hexcolor { - color: teal; -} - -.hljs-variable { - color: #336699; -} - -.hljs-bullet, -.hljs-javadoc { - color: #997700; -} - -.hljs-pi, -.hljs-doctype { - color: #3344bb; -} - -.hljs-code, -.hljs-number { - color: #099; -} - -.hljs-important { - color: #f00; -} - -.smartquote, -.hljs-label { - color: #970; -} - -.hljs-preprocessor, -.hljs-pragma { - color: #579; -} - -.hljs-reserved, -.hljs-keyword, -.scss .hljs-value { - color: #000; -} - -.hljs-regexp { - background-color: #fff0ff; - color: #880088; -} - -.hljs-symbol { - color: #990073; -} - -.hljs-symbol .hljs-string { - color: #a60; -} - -.hljs-tag { - color: #007700; -} - -.hljs-at_rule, -.hljs-at_rule .hljs-keyword { - color: #088; -} - -.hljs-at_rule .hljs-preprocessor { - color: #808; -} - -.scss .hljs-tag, -.scss .hljs-attribute { - color: #339; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css deleted file mode 100644 index 5517086b..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css +++ /dev/null @@ -1,125 +0,0 @@ -/* - -github.com style (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #333; - background: #f8f8f8 -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-javadoc { - color: #998; - font-style: italic -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.nginx .hljs-title, -.hljs-subst, -.hljs-request, -.hljs-status { - color: #333; - font-weight: bold -} - -.hljs-number, -.hljs-hexcolor, -.ruby .hljs-constant { - color: #099; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula { - color: #d14 -} - -.hljs-title, -.hljs-id, -.coffeescript .hljs-params, -.scss .hljs-preprocessor { - color: #900; - font-weight: bold -} - -.javascript .hljs-title, -.lisp .hljs-title, -.clojure .hljs-title, -.hljs-subst { - font-weight: normal -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.vhdl .hljs-literal, -.tex .hljs-command { - color: #458; - font-weight: bold -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword { - color: #000080; - font-weight: normal -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body { - color: #008080 -} - -.hljs-regexp { - color: #009926 -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.lisp .hljs-keyword, -.tex .hljs-special, -.hljs-prompt { - color: #990073 -} - -.hljs-built_in, -.lisp .hljs-title, -.clojure .hljs-built_in { - color: #0086b3 -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-doctype, -.hljs-shebang, -.hljs-cdata { - color: #999; - font-weight: bold -} - -.hljs-deletion { - background: #fdd -} - -.hljs-addition { - background: #dfd -} - -.diff .hljs-change { - background: #0086b3 -} - -.hljs-chunk { - color: #aaa -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css deleted file mode 100644 index 5cc49b68..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css +++ /dev/null @@ -1,147 +0,0 @@ -/* - -Google Code style (c) Aahan Krish - -*/ - -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-comment * { - color: #800; -} - -.hljs-keyword, -.method, -.hljs-list .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.hljs-tag .hljs-title, -.setting .hljs-value, -.hljs-winutils, -.tex .hljs-command, -.http .hljs-title, -.hljs-request, -.hljs-status { - color: #008; -} - -.hljs-envvar, -.tex .hljs-special { - color: #660; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.hljs-regexp, -.coffeescript .hljs-attribute { - color: #080; -} - -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.ini .hljs-title, -.hljs-shebang, -.hljs-prompt, -.hljs-hexcolor, -.hljs-rules .hljs-value, -.css .hljs-value .hljs-number, -.hljs-literal, -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number, -.css .hljs-function, -.clojure .hljs-attribute { - color: #066; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.hljs-typename, -.hljs-tag .hljs-attribute, -.hljs-doctype, -.hljs-class .hljs-id, -.hljs-built_in, -.setting, -.hljs-params, -.hljs-variable, -.clojure .hljs-title { - color: #606; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.hljs-subst { - color: #000; -} - -.css .hljs-class, -.css .hljs-id { - color: #9B703F; -} - -.hljs-value .hljs-important { - color: #ff7700; - font-weight: bold; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #444; -} - -.tex .hljs-formula { - background-color: #EEE; - font-style: italic; -} - -.diff .hljs-header, -.hljs-chunk { - color: #808080; - font-weight: bold; -} - -.diff .hljs-change { - background-color: #BCCFF9; -} - -.hljs-addition { - background-color: #BAEEBA; -} - -.hljs-deletion { - background-color: #FFC8BD; -} - -.hljs-comment .hljs-yardoctag { - font-weight: bold; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css deleted file mode 100644 index 3e810c5f..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css +++ /dev/null @@ -1,122 +0,0 @@ -/* - -Intellij Idea-like styling (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #000; - background: #fff; -} - -.hljs-subst, -.hljs-title { - font-weight: normal; - color: #000; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.diff .hljs-header { - color: #808080; - font-style: italic; -} - -.hljs-annotation, -.hljs-decorator, -.hljs-preprocessor, -.hljs-pragma, -.hljs-doctype, -.hljs-pi, -.hljs-chunk, -.hljs-shebang, -.apache .hljs-cbracket, -.hljs-prompt, -.http .hljs-title { - color: #808000; -} - -.hljs-tag, -.hljs-pi { - background: #efefef; -} - -.hljs-tag .hljs-title, -.hljs-id, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-literal, -.hljs-keyword, -.hljs-hexcolor, -.css .hljs-function, -.ini .hljs-title, -.css .hljs-class, -.hljs-list .hljs-title, -.clojure .hljs-title, -.nginx .hljs-title, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; - color: #000080; -} - -.hljs-attribute, -.hljs-rules .hljs-keyword, -.hljs-number, -.hljs-date, -.hljs-regexp, -.tex .hljs-special { - font-weight: bold; - color: #0000ff; -} - -.hljs-number, -.hljs-regexp { - font-weight: normal; -} - -.hljs-string, -.hljs-value, -.hljs-filter .hljs-argument, -.css .hljs-function .hljs-params, -.apache .hljs-tag { - color: #008000; - font-weight: bold; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-char, -.tex .hljs-formula { - color: #000; - background: #d0eded; - font-style: italic; -} - -.hljs-phpdoc, -.hljs-yardoctag, -.hljs-javadoctag { - text-decoration: underline; -} - -.hljs-variable, -.hljs-envvar, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #660e7a; -} - -.hljs-addition { - background: #baeeba; -} - -.hljs-deletion { - background: #ffc8bd; -} - -.diff .hljs-change { - background: #bccff9; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css deleted file mode 100644 index 66f7c193..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css +++ /dev/null @@ -1,105 +0,0 @@ -/* - IR_Black style (c) Vasily Mikhailitchenko -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000; color: #f8f8f8; -} - -.hljs-shebang, -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc { - color: #7c7c7c; -} - -.hljs-keyword, -.hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status, -.clojure .hljs-attribute { - color: #96CBFE; -} - -.hljs-sub .hljs-keyword, -.method, -.hljs-list .hljs-title, -.nginx .hljs-title { - color: #FFFFB6; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.coffeescript .hljs-attribute { - color: #A8FF60; -} - -.hljs-subst { - color: #DAEFA3; -} - -.hljs-regexp { - color: #E9C062; -} - -.hljs-title, -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-decorator, -.tex .hljs-special, -.haskell .hljs-type, -.hljs-constant, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.nginx .hljs-built_in { - color: #FFFFB6; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number, -.hljs-variable, -.vbscript, -.hljs-literal { - color: #C6C5FE; -} - -.css .hljs-tag { - color: #96CBFE; -} - -.css .hljs-rules .hljs-property, -.css .hljs-id { - color: #FFFFB6; -} - -.css .hljs-class { - color: #FFF; -} - -.hljs-hexcolor { - color: #C6C5FE; -} - -.hljs-number { - color:#FF73FD; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.7; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css deleted file mode 100644 index bc69a377..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css +++ /dev/null @@ -1,122 +0,0 @@ -/* -Description: Magula style for highligh.js -Author: Ruslan Keba -Website: http://rukeba.com/ -Version: 1.0 -Date: 2009-01-03 -Music: Aphex Twin / Xtal -*/ - -.hljs { - display: block; padding: 0.5em; - background-color: #f4f4f4; -} - -.hljs, -.hljs-subst, -.lisp .hljs-title, -.clojure .hljs-built_in { - color: black; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.bash .hljs-variable, -.apache .hljs-cbracket, -.coffeescript .hljs-attribute { - color: #050; -} - -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk { - color: #777; -} - -.hljs-number, -.hljs-date, -.hljs-regexp, -.hljs-literal, -.smalltalk .hljs-symbol, -.smalltalk .hljs-char, -.hljs-change, -.tex .hljs-special { - color: #800; -} - -.hljs-label, -.hljs-javadoc, -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-formula, -.hljs-prompt, -.clojure .hljs-attribute { - color: #00e; -} - -.hljs-keyword, -.hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-built_in, -.hljs-aggregate, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.xml .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; - color: navy; -} - -.nginx .hljs-built_in { - font-weight: normal; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} - -/* --- */ -.apache .hljs-tag { - font-weight: bold; - color: blue; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css deleted file mode 100644 index bfe2495b..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css +++ /dev/null @@ -1,62 +0,0 @@ -/* - Five-color theme from a single blue hue. -*/ -.hljs { - display: block; padding: 0.5em; - background: #EAEEF3; color: #00193A; -} - -.hljs-keyword, -.hljs-title, -.hljs-important, -.hljs-request, -.hljs-header, -.hljs-javadoctag { - font-weight: bold; -} - -.hljs-comment, -.hljs-chunk, -.hljs-template_comment { - color: #738191; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-built_in, -.hljs-literal, -.hljs-filename, -.hljs-value, -.hljs-addition, -.hljs-tag, -.hljs-argument, -.hljs-link_label, -.hljs-blockquote, -.hljs-header { - color: #0048AB; -} - -.hljs-decorator, -.hljs-prompt, -.hljs-yardoctag, -.hljs-subst, -.hljs-symbol, -.hljs-doctype, -.hljs-regexp, -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-attribute, -.hljs-attr_selector, -.hljs-javadoc, -.hljs-xmlDocTag, -.hljs-deletion, -.hljs-shebang, -.hljs-string .hljs-variable, -.hljs-link_url, -.hljs-bullet, -.hljs-sqbracket, -.hljs-phony { - color: #4C81C9; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css deleted file mode 100644 index 34cd4f9e..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css +++ /dev/null @@ -1,127 +0,0 @@ -/* -Monokai style - ported by Luigi Maselli - http://grigio.org -*/ - -.hljs { - display: block; padding: 0.5em; - background: #272822; -} - -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-keyword, -.hljs-literal, -.hljs-strong, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color: #F92672; -} - -.hljs { - color: #DDD; -} - -.hljs .hljs-constant, -.asciidoc .hljs-code { - color: #66D9EF; -} - -.hljs-code, -.hljs-class .hljs-title, -.hljs-header { - color: white; -} - -.hljs-link_label, -.hljs-attribute, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-value, -.hljs-regexp { - color: #BF79DB; -} - -.hljs-link_url, -.hljs-tag .hljs-value, -.hljs-string, -.hljs-bullet, -.hljs-subst, -.hljs-title, -.hljs-emphasis, -.haskell .hljs-type, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt { - color: #A6E22E; -} - -.hljs-comment, -.java .hljs-annotation, -.smartquote, -.hljs-blockquote, -.hljs-horizontal_rule, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #75715E; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-header, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css deleted file mode 100644 index 2d216333..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css +++ /dev/null @@ -1,149 +0,0 @@ -/* - -Monokai Sublime style. Derived from Monokai by noformnocontent http://nn.mit-license.org/ - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #23241f; -} - -.hljs, -.hljs-tag, -.css .hljs-rules, -.css .hljs-value, -.css .hljs-function -.hljs-preprocessor, -.hljs-pragma { - color: #f8f8f2; -} - -.hljs-strongemphasis, -.hljs-strong, -.hljs-emphasis { - color: #a8a8a2; -} - -.hljs-bullet, -.hljs-blockquote, -.hljs-horizontal_rule, -.hljs-number, -.hljs-regexp, -.alias .hljs-keyword, -.hljs-literal, -.hljs-hexcolor { - color: #ae81ff; -} - -.hljs-tag .hljs-value, -.hljs-code, -.hljs-title, -.css .hljs-class, -.hljs-class .hljs-title:last-child { - color: #a6e22e; -} - -.hljs-link_url { - font-size: 80%; -} - -.hljs-strong, -.hljs-strongemphasis { - font-weight: bold; -} - -.hljs-emphasis, -.hljs-strongemphasis, -.hljs-class .hljs-title:last-child { - font-style: italic; -} - -.hljs-keyword, -.hljs-function, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special, -.hljs-header, -.hljs-attribute, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-tag .hljs-title, -.hljs-value, -.alias .hljs-keyword:first-child, -.css .hljs-tag, -.css .unit, -.css .hljs-important { - color: #F92672; -} - -.hljs-function .hljs-keyword, -.hljs-class .hljs-keyword:first-child, -.hljs-constant, -.css .hljs-attribute { - color: #66d9ef; -} - -.hljs-variable, -.hljs-params, -.hljs-class .hljs-title { - color: #f8f8f2; -} - -.hljs-string, -.css .hljs-id, -.hljs-subst, -.haskell .hljs-type, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt, -.hljs-link_label, -.hljs-link_url { - color: #e6db74; -} - -.hljs-comment, -.hljs-javadoc, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #75715e; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata, -.xml .php, -.php .xml { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css deleted file mode 100644 index 68259fc8..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css +++ /dev/null @@ -1,154 +0,0 @@ -/** - * Obsidian style - * ported by Alexander Marenin (http://github.com/ioncreature) - */ - -.hljs { - display: block; padding: 0.5em; - background: #282B2E; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.css .hljs-id, -.tex .hljs-special { - color: #93C763; -} - -.hljs-number { - color: #FFCD22; -} - -.hljs { - color: #E0E2E4; -} - -.css .hljs-tag, -.css .hljs-pseudo { - color: #D0D2B5; -} - -.hljs-attribute, -.hljs .hljs-constant { - color: #668BB0; -} - -.xml .hljs-attribute { - color: #B3B689; -} - -.xml .hljs-tag .hljs-value { - color: #E8E2B7; -} - -.hljs-code, -.hljs-class .hljs-title, -.hljs-header { - color: white; -} - -.hljs-class, -.hljs-hexcolor { - color: #93C763; -} - -.hljs-regexp { - color: #D39745; -} - -.hljs-at_rule, -.hljs-at_rule .hljs-keyword { - color: #A082BD; -} - -.hljs-doctype { - color: #557182; -} - -.hljs-link_url, -.hljs-tag, -.hljs-tag .hljs-title, -.hljs-bullet, -.hljs-subst, -.hljs-emphasis, -.haskell .hljs-type, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.tex .hljs-command, -.hljs-prompt { - color: #8CBBAD; -} - -.hljs-string { - color: #EC7600; -} - -.hljs-comment, -.java .hljs-annotation, -.hljs-blockquote, -.hljs-horizontal_rule, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket, -.tex .hljs-formula { - color: #818E96; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.hljs-header, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-special, -.hljs-request, -.hljs-at_rule .hljs-keyword, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css deleted file mode 100644 index 55d02f1d..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css +++ /dev/null @@ -1,93 +0,0 @@ -/* - Paraíso (dark) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-title { - color: #8d8687; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99b15; -} - -/* Paraíso Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #48b685; -} - -/* Paraíso Aqua */ -.css .hljs-hexcolor { - color: #5bc4bf; -} - -/* Paraíso Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #06b6ef; -} - -/* Paraíso Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #815ba4; -} - -.hljs { - display: block; - background: #2f1e2e; - color: #a39e9b; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css deleted file mode 100644 index d29ee1b7..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css +++ /dev/null @@ -1,93 +0,0 @@ -/* - Paraíso (light) - Created by Jan T. Sott (http://github.com/idleberg) - Inspired by the art of Rubens LP (http://www.rubenslp.com.br) -*/ - -/* Paraíso Comment */ -.hljs-comment, -.hljs-title { - color: #776e71; -} - -/* Paraíso Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ef6155; -} - -/* Paraíso Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99b15; -} - -/* Paraíso Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #fec418; -} - -/* Paraíso Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #48b685; -} - -/* Paraíso Aqua */ -.css .hljs-hexcolor { - color: #5bc4bf; -} - -/* Paraíso Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #06b6ef; -} - -/* Paraíso Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #815ba4; -} - -.hljs { - display: block; - background: #e7e9db; - color: #4f424c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css deleted file mode 100644 index 86307929..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css +++ /dev/null @@ -1,106 +0,0 @@ -/* - -Pojoaque Style by Jason Tate -http://web-cms-designs.com/ftopict-10-pojoaque-style-for-highlight-js-code-highlighter.html -Based on Solarized Style from http://ethanschoonover.com/solarized - -*/ - -.hljs { - display: block; padding: 0.5em; - color: #DCCF8F; - background: url(./pojoaque.jpg) repeat scroll left top #181914; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.lisp .hljs-string, -.hljs-javadoc { - color: #586e75; - font-style: italic; -} - -.hljs-keyword, -.css .rule .hljs-keyword, -.hljs-winutils, -.javascript .hljs-title, -.method, -.hljs-addition, -.css .hljs-tag, -.clojure .hljs-title, -.nginx .hljs-title { - color: #B64926; -} - -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor { - color: #468966; -} - -.hljs-title, -.hljs-localvars, -.hljs-function .hljs-title, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.lisp .hljs-title, -.clojure .hljs-built_in, -.hljs-identifier, -.hljs-id { - color: #FFB03B; -} - -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type { - color: #b58900; -} - -.css .hljs-attribute { - color: #b89859; -} - -.css .hljs-number, -.css .hljs-hexcolor { - color: #DCCF8F; -} - -.css .hljs-class { - color: #d3a60c; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-important, -.hljs-subst, -.hljs-cdata { - color: #cb4b16; -} - -.hljs-deletion { - color: #dc322f; -} - -.tex .hljs-formula { - background: #073642; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg deleted file mode 100644 index 9c07d4ab..00000000 Binary files a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg and /dev/null differ diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css deleted file mode 100644 index 83d0cde5..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css +++ /dev/null @@ -1,182 +0,0 @@ -/* - -Railscasts-like style (c) Visoft, Inc. (Damien White) - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #232323; - color: #E6E1DC; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-shebang { - color: #BC9458; - font-style: italic; -} - -.hljs-keyword, -.ruby .hljs-function .hljs-keyword, -.hljs-request, -.hljs-status, -.nginx .hljs-title, -.method, -.hljs-list .hljs-title { - color: #C26230; -} - -.hljs-string, -.hljs-number, -.hljs-regexp, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.tex .hljs-command, -.markdown .hljs-link_label { - color: #A5C261; -} - -.hljs-subst { - color: #519F50; -} - -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-tag .hljs-title, -.hljs-doctype, -.hljs-sub .hljs-identifier, -.hljs-pi, -.input_number { - color: #E8BF6A; -} - -.hljs-identifier { - color: #D0D0FF; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc { - text-decoration: none; -} - -.hljs-constant { - color: #DA4939; -} - - -.hljs-symbol, -.hljs-built_in, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-symbol .hljs-identifier, -.markdown .hljs-link_url, -.hljs-attribute { - color: #6D9CBE; -} - -.markdown .hljs-link_url { - text-decoration: underline; -} - - - -.hljs-params, -.hljs-variable, -.clojure .hljs-attribute { - color: #D0D0FF; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.tex .hljs-special { - color: #CDA869; -} - -.css .hljs-class { - color: #9B703F; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-rules .hljs-value { - color: #CF6A4C; -} - -.css .hljs-id { - color: #8B98AB; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #8996A8 !important; -} - -.hljs-hexcolor, -.css .hljs-value .hljs-number { - color: #A5C261; -} - -.hljs-title, -.hljs-decorator, -.css .hljs-function { - color: #FFC66D; -} - -.diff .hljs-header, -.hljs-chunk { - background-color: #2F33AB; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.diff .hljs-change { - background-color: #4A410D; - color: #F8F8F8; - display: inline-block; - width: 100%; -} - -.hljs-addition { - background-color: #144212; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.hljs-deletion { - background-color: #600; - color: #E6E1DC; - display: inline-block; - width: 100%; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.7; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css deleted file mode 100644 index 08142466..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css +++ /dev/null @@ -1,112 +0,0 @@ -/* - -Style with support for rainbow parens - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #474949; color: #D1D9E1; -} - - -.hljs-body, -.hljs-collection { - color: #D1D9E1; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.lisp .hljs-string, -.hljs-javadoc { - color: #969896; - font-style: italic; -} - -.hljs-keyword, -.clojure .hljs-attribute, -.hljs-winutils, -.javascript .hljs-title, -.hljs-addition, -.css .hljs-tag { - color: #cc99cc; -} - -.hljs-number { color: #f99157; } - -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor { - color: #8abeb7; -} - -.hljs-title, -.hljs-localvars, -.hljs-function .hljs-title, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.lisp .hljs-title, -.hljs-identifier -{ - color: #b5bd68; -} - -.hljs-class .hljs-keyword -{ - color: #f2777a; -} - -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-label, -.hljs-id, -.lisp .hljs-title, -.clojure .hljs-title .hljs-built_in { - color: #ffcc66; -} - -.hljs-tag .hljs-title, -.hljs-rules .hljs-property, -.django .hljs-tag .hljs-keyword, -.clojure .hljs-title .hljs-built_in { - font-weight: bold; -} - -.hljs-attribute, -.clojure .hljs-title { - color: #81a2be; -} - -.hljs-preprocessor, -.hljs-pragma, -.hljs-pi, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-important, -.hljs-subst, -.hljs-cdata { - color: #f99157; -} - -.hljs-deletion { - color: #dc322f; -} - -.tex .hljs-formula { - background: #eee8d5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css deleted file mode 100644 index a36e8362..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css +++ /dev/null @@ -1,113 +0,0 @@ -/* - -School Book style from goldblog.com.ua (c) Zaripov Yura - -*/ - -.hljs { - display: block; padding: 15px 0.5em 0.5em 30px; - font-size: 11px !important; - line-height:16px !important; -} - -pre{ - background:#f6f6ae url(./school_book.png); - border-top: solid 2px #d2e8b9; - border-bottom: solid 1px #d2e8b9; -} - -.hljs-keyword, -.hljs-literal, -.hljs-change, -.hljs-winutils, -.hljs-flow, -.lisp .hljs-title, -.clojure .hljs-built_in, -.nginx .hljs-title, -.tex .hljs-special { - color:#005599; - font-weight:bold; -} - -.hljs, -.hljs-subst, -.hljs-tag .hljs-keyword { - color: #3E5915; -} - -.hljs-string, -.hljs-title, -.haskell .hljs-type, -.hljs-tag .hljs-value, -.css .hljs-rules .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-class .hljs-parent, -.hljs-built_in, -.sql .hljs-aggregate, -.django .hljs-template_tag, -.django .hljs-variable, -.smalltalk .hljs-class, -.hljs-javadoc, -.ruby .hljs-string, -.django .hljs-filter .hljs-argument, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-addition, -.hljs-stream, -.hljs-envvar, -.apache .hljs-tag, -.apache .hljs-cbracket, -.nginx .hljs-built_in, -.tex .hljs-command, -.coffeescript .hljs-attribute { - color: #2C009F; -} - -.hljs-comment, -.java .hljs-annotation, -.python .hljs-decorator, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-shebang, -.apache .hljs-sqbracket { - color: #E60415; -} - -.hljs-keyword, -.hljs-literal, -.css .hljs-id, -.hljs-phpdoc, -.hljs-title, -.haskell .hljs-type, -.vbscript .hljs-built_in, -.sql .hljs-aggregate, -.rsl .hljs-built_in, -.smalltalk .hljs-class, -.xml .hljs-tag .hljs-title, -.diff .hljs-header, -.hljs-chunk, -.hljs-winutils, -.bash .hljs-variable, -.apache .hljs-tag, -.tex .hljs-command, -.hljs-request, -.hljs-status { - font-weight: bold; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png deleted file mode 100644 index 956e9790..00000000 Binary files a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css deleted file mode 100644 index 970d5f81..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css +++ /dev/null @@ -1,107 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #002b36; - color: #839496; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.hljs-pi, -.lisp .hljs-string, -.hljs-javadoc { - color: #586e75; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-winutils, -.method, -.hljs-addition, -.css .hljs-tag, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor, -.hljs-link_url { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-localvars, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.hljs-identifier, -.vhdl .hljs-literal, -.hljs-id, -.css .hljs-function { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type, -.hljs-link_reference { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-preprocessor, -.hljs-preprocessor .hljs-keyword, -.hljs-pragma, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-subst, -.hljs-cdata, -.clojure .hljs-title, -.css .hljs-pseudo, -.hljs-header { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-deletion, -.hljs-important { - color: #dc322f; -} - -/* Solarized Violet */ -.hljs-link_label { - color: #6c71c4; -} - -.tex .hljs-formula { - background: #073642; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css deleted file mode 100644 index 8e1f4365..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css +++ /dev/null @@ -1,107 +0,0 @@ -/* - -Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull - -*/ - -.hljs { - display: block; - padding: 0.5em; - background: #fdf6e3; - color: #657b83; -} - -.hljs-comment, -.hljs-template_comment, -.diff .hljs-header, -.hljs-doctype, -.hljs-pi, -.lisp .hljs-string, -.hljs-javadoc { - color: #93a1a1; -} - -/* Solarized Green */ -.hljs-keyword, -.hljs-winutils, -.method, -.hljs-addition, -.css .hljs-tag, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #859900; -} - -/* Solarized Cyan */ -.hljs-number, -.hljs-command, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-phpdoc, -.tex .hljs-formula, -.hljs-regexp, -.hljs-hexcolor, -.hljs-link_url { - color: #2aa198; -} - -/* Solarized Blue */ -.hljs-title, -.hljs-localvars, -.hljs-chunk, -.hljs-decorator, -.hljs-built_in, -.hljs-identifier, -.vhdl .hljs-literal, -.hljs-id, -.css .hljs-function { - color: #268bd2; -} - -/* Solarized Yellow */ -.hljs-attribute, -.hljs-variable, -.lisp .hljs-body, -.smalltalk .hljs-number, -.hljs-constant, -.hljs-class .hljs-title, -.hljs-parent, -.haskell .hljs-type, -.hljs-link_reference { - color: #b58900; -} - -/* Solarized Orange */ -.hljs-preprocessor, -.hljs-preprocessor .hljs-keyword, -.hljs-pragma, -.hljs-shebang, -.hljs-symbol, -.hljs-symbol .hljs-string, -.diff .hljs-change, -.hljs-special, -.hljs-attr_selector, -.hljs-subst, -.hljs-cdata, -.clojure .hljs-title, -.css .hljs-pseudo, -.hljs-header { - color: #cb4b16; -} - -/* Solarized Red */ -.hljs-deletion, -.hljs-important { - color: #dc322f; -} - -/* Solarized Violet */ -.hljs-link_label { - color: #6c71c4; -} - -.tex .hljs-formula { - background: #eee8d5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css deleted file mode 100644 index 8816520c..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css +++ /dev/null @@ -1,160 +0,0 @@ -/* - -Sunburst-like style (c) Vasily Polovnyov - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #000; color: #f8f8f8; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc { - color: #aeaeae; - font-style: italic; -} - -.hljs-keyword, -.ruby .hljs-function .hljs-keyword, -.hljs-request, -.hljs-status, -.nginx .hljs-title { - color: #E28964; -} - -.hljs-function .hljs-keyword, -.hljs-sub .hljs-keyword, -.method, -.hljs-list .hljs-title { - color: #99CF50; -} - -.hljs-string, -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.tex .hljs-command, -.coffeescript .hljs-attribute { - color: #65B042; -} - -.hljs-subst { - color: #DAEFA3; -} - -.hljs-regexp { - color: #E9C062; -} - -.hljs-title, -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.hljs-shebang, -.hljs-prompt { - color: #89BDFF; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc { - text-decoration: underline; -} - -.hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-number { - color: #3387CC; -} - -.hljs-params, -.hljs-variable, -.clojure .hljs-attribute { - color: #3E87E3; -} - -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.tex .hljs-special { - color: #CDA869; -} - -.css .hljs-class { - color: #9B703F; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-rules .hljs-value { - color: #CF6A4C; -} - -.css .hljs-id { - color: #8B98AB; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-pragma { - color: #8996A8; -} - -.hljs-hexcolor, -.css .hljs-value .hljs-number { - color: #DD7B3B; -} - -.css .hljs-function { - color: #DAD085; -} - -.diff .hljs-header, -.hljs-chunk, -.tex .hljs-formula { - background-color: #0E2231; - color: #F8F8F8; - font-style: italic; -} - -.diff .hljs-change { - background-color: #4A410D; - color: #F8F8F8; -} - -.hljs-addition { - background-color: #253B22; - color: #F8F8F8; -} - -.hljs-deletion { - background-color: #420E09; - color: #F8F8F8; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css deleted file mode 100644 index e63ab3de..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Tomorrow Night Blue Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #7285b7; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #ff9da4; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #ffc58f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #ffeead; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #d1f1a9; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #99ffff; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #bbdaff; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #ebbbff; -} - -.hljs { - display: block; - background: #002451; - color: white; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css deleted file mode 100644 index 3bbf367d..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css +++ /dev/null @@ -1,92 +0,0 @@ -/* Tomorrow Night Bright Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #d54e53; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #e78c45; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #e7c547; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #b9ca4a; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #70c0b1; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #7aa6da; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #c397d8; -} - -.hljs { - display: block; - background: black; - color: #eaeaea; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css deleted file mode 100644 index b8de0dbf..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css +++ /dev/null @@ -1,92 +0,0 @@ -/* Tomorrow Night Eighties Theme */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #999999; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #f2777a; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f99157; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #ffcc66; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #99cc99; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #66cccc; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #6699cc; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #cc99cc; -} - -.hljs { - display: block; - background: #2d2d2d; - color: #cccccc; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css deleted file mode 100644 index 54ceb585..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css +++ /dev/null @@ -1,93 +0,0 @@ -/* Tomorrow Night Theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ -/* Original theme - https://github.com/chriskempson/tomorrow-theme */ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #969896; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #cc6666; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #de935f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #f0c674; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #b5bd68; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #8abeb7; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #81a2be; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #b294bb; -} - -.hljs { - display: block; - background: #1d1f21; - color: #c5c8c6; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css deleted file mode 100644 index a81a2e85..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css +++ /dev/null @@ -1,90 +0,0 @@ -/* http://jmblog.github.com/color-themes-for-google-code-highlightjs */ - -/* Tomorrow Comment */ -.hljs-comment, -.hljs-title { - color: #8e908c; -} - -/* Tomorrow Red */ -.hljs-variable, -.hljs-attribute, -.hljs-tag, -.hljs-regexp, -.ruby .hljs-constant, -.xml .hljs-tag .hljs-title, -.xml .hljs-pi, -.xml .hljs-doctype, -.html .hljs-doctype, -.css .hljs-id, -.css .hljs-class, -.css .hljs-pseudo { - color: #c82829; -} - -/* Tomorrow Orange */ -.hljs-number, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.hljs-literal, -.hljs-params, -.hljs-constant { - color: #f5871f; -} - -/* Tomorrow Yellow */ -.ruby .hljs-class .hljs-title, -.css .hljs-rules .hljs-attribute { - color: #eab700; -} - -/* Tomorrow Green */ -.hljs-string, -.hljs-value, -.hljs-inheritance, -.hljs-header, -.ruby .hljs-symbol, -.xml .hljs-cdata { - color: #718c00; -} - -/* Tomorrow Aqua */ -.css .hljs-hexcolor { - color: #3e999f; -} - -/* Tomorrow Blue */ -.hljs-function, -.python .hljs-decorator, -.python .hljs-title, -.ruby .hljs-function .hljs-title, -.ruby .hljs-title .hljs-keyword, -.perl .hljs-sub, -.javascript .hljs-title, -.coffeescript .hljs-title { - color: #4271ae; -} - -/* Tomorrow Purple */ -.hljs-keyword, -.javascript .hljs-function { - color: #8959a8; -} - -.hljs { - display: block; - background: white; - color: #4d4d4c; - padding: 0.5em; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css deleted file mode 100644 index 5ebf4541..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css +++ /dev/null @@ -1,89 +0,0 @@ -/* - -Visual Studio-like style based on original C# coloring by Jason Diamond - -*/ -.hljs { - display: block; padding: 0.5em; - background: white; color: black; -} - -.hljs-comment, -.hljs-annotation, -.hljs-template_comment, -.diff .hljs-header, -.hljs-chunk, -.apache .hljs-cbracket { - color: #008000; -} - -.hljs-keyword, -.hljs-id, -.hljs-built_in, -.smalltalk .hljs-class, -.hljs-winutils, -.bash .hljs-variable, -.tex .hljs-command, -.hljs-request, -.hljs-status, -.nginx .hljs-title, -.xml .hljs-tag, -.xml .hljs-tag .hljs-value { - color: #00f; -} - -.hljs-string, -.hljs-title, -.hljs-parent, -.hljs-tag .hljs-value, -.hljs-rules .hljs-value, -.hljs-rules .hljs-value .hljs-number, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.hljs-aggregate, -.hljs-template_tag, -.django .hljs-variable, -.hljs-addition, -.hljs-flow, -.hljs-stream, -.apache .hljs-tag, -.hljs-date, -.tex .hljs-formula, -.coffeescript .hljs-attribute { - color: #a31515; -} - -.ruby .hljs-string, -.hljs-decorator, -.hljs-filter .hljs-argument, -.hljs-localvars, -.hljs-array, -.hljs-attr_selector, -.hljs-pseudo, -.hljs-pi, -.hljs-doctype, -.hljs-deletion, -.hljs-envvar, -.hljs-shebang, -.hljs-preprocessor, -.hljs-pragma, -.userType, -.apache .hljs-sqbracket, -.nginx .hljs-built_in, -.tex .hljs-special, -.hljs-prompt { - color: #2b91af; -} - -.hljs-phpdoc, -.hljs-javadoc, -.hljs-xmlDocTag { - color: #808080; -} - -.vhdl .hljs-typename { font-weight: bold; } -.vhdl .hljs-string { color: #666666; } -.vhdl .hljs-literal { color: #a31515; } -.vhdl .hljs-attribute { color: #00B0E8; } - -.xml .hljs-attribute { color: #f00; } diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css deleted file mode 100644 index 8d54da72..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css +++ /dev/null @@ -1,158 +0,0 @@ -/* - -XCode style (c) Angel Garcia - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #fff; color: black; -} - -.hljs-comment, -.hljs-template_comment, -.hljs-javadoc, -.hljs-comment * { - color: #006a00; -} - -.hljs-keyword, -.hljs-literal, -.nginx .hljs-title { - color: #aa0d91; -} -.method, -.hljs-list .hljs-title, -.hljs-tag .hljs-title, -.setting .hljs-value, -.hljs-winutils, -.tex .hljs-command, -.http .hljs-title, -.hljs-request, -.hljs-status { - color: #008; -} - -.hljs-envvar, -.tex .hljs-special { - color: #660; -} - -.hljs-string { - color: #c41a16; -} -.hljs-tag .hljs-value, -.hljs-cdata, -.hljs-filter .hljs-argument, -.hljs-attr_selector, -.apache .hljs-cbracket, -.hljs-date, -.hljs-regexp { - color: #080; -} - -.hljs-sub .hljs-identifier, -.hljs-pi, -.hljs-tag, -.hljs-tag .hljs-keyword, -.hljs-decorator, -.ini .hljs-title, -.hljs-shebang, -.hljs-prompt, -.hljs-hexcolor, -.hljs-rules .hljs-value, -.css .hljs-value .hljs-number, -.hljs-symbol, -.hljs-symbol .hljs-string, -.hljs-number, -.css .hljs-function, -.clojure .hljs-title, -.clojure .hljs-built_in, -.hljs-function .hljs-title, -.coffeescript .hljs-attribute { - color: #1c00cf; -} - -.hljs-class .hljs-title, -.haskell .hljs-type, -.smalltalk .hljs-class, -.hljs-javadoctag, -.hljs-yardoctag, -.hljs-phpdoc, -.hljs-typename, -.hljs-tag .hljs-attribute, -.hljs-doctype, -.hljs-class .hljs-id, -.hljs-built_in, -.setting, -.hljs-params, -.clojure .hljs-attribute { - color: #5c2699; -} - -.hljs-variable { - color: #3f6e74; -} -.css .hljs-tag, -.hljs-rules .hljs-property, -.hljs-pseudo, -.hljs-subst { - color: #000; -} - -.css .hljs-class, -.css .hljs-id { - color: #9B703F; -} - -.hljs-value .hljs-important { - color: #ff7700; - font-weight: bold; -} - -.hljs-rules .hljs-keyword { - color: #C5AF75; -} - -.hljs-annotation, -.apache .hljs-sqbracket, -.nginx .hljs-built_in { - color: #9B859D; -} - -.hljs-preprocessor, -.hljs-preprocessor *, -.hljs-pragma { - color: #643820; -} - -.tex .hljs-formula { - background-color: #EEE; - font-style: italic; -} - -.diff .hljs-header, -.hljs-chunk { - color: #808080; - font-weight: bold; -} - -.diff .hljs-change { - background-color: #BCCFF9; -} - -.hljs-addition { - background-color: #BAEEBA; -} - -.hljs-deletion { - background-color: #FFC8BD; -} - -.hljs-comment .hljs-yardoctag { - font-weight: bold; -} - -.method .hljs-id { - color: #000; -} diff --git a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css b/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css deleted file mode 100644 index 3e6a6871..00000000 --- a/public/build/ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css +++ /dev/null @@ -1,116 +0,0 @@ -/* - -Zenburn style from voldmar.ru (c) Vladimir Epifanov -based on dark.css by Ivan Sagalaev - -*/ - -.hljs { - display: block; padding: 0.5em; - background: #3F3F3F; - color: #DCDCDC; -} - -.hljs-keyword, -.hljs-tag, -.css .hljs-class, -.css .hljs-id, -.lisp .hljs-title, -.nginx .hljs-title, -.hljs-request, -.hljs-status, -.clojure .hljs-attribute { - color: #E3CEAB; -} - -.django .hljs-template_tag, -.django .hljs-variable, -.django .hljs-filter .hljs-argument { - color: #DCDCDC; -} - -.hljs-number, -.hljs-date { - color: #8CD0D3; -} - -.dos .hljs-envvar, -.dos .hljs-stream, -.hljs-variable, -.apache .hljs-sqbracket { - color: #EFDCBC; -} - -.dos .hljs-flow, -.diff .hljs-change, -.python .exception, -.python .hljs-built_in, -.hljs-literal, -.tex .hljs-special { - color: #EFEFAF; -} - -.diff .hljs-chunk, -.hljs-subst { - color: #8F8F8F; -} - -.dos .hljs-keyword, -.python .hljs-decorator, -.hljs-title, -.haskell .hljs-type, -.diff .hljs-header, -.ruby .hljs-class .hljs-parent, -.apache .hljs-tag, -.nginx .hljs-built_in, -.tex .hljs-command, -.hljs-prompt { - color: #efef8f; -} - -.dos .hljs-winutils, -.ruby .hljs-symbol, -.ruby .hljs-symbol .hljs-string, -.ruby .hljs-string { - color: #DCA3A3; -} - -.diff .hljs-deletion, -.hljs-string, -.hljs-tag .hljs-value, -.hljs-preprocessor, -.hljs-pragma, -.hljs-built_in, -.sql .hljs-aggregate, -.hljs-javadoc, -.smalltalk .hljs-class, -.smalltalk .hljs-localvars, -.smalltalk .hljs-array, -.css .hljs-rules .hljs-value, -.hljs-attr_selector, -.hljs-pseudo, -.apache .hljs-cbracket, -.tex .hljs-formula, -.coffeescript .hljs-attribute { - color: #CC9393; -} - -.hljs-shebang, -.diff .hljs-addition, -.hljs-comment, -.java .hljs-annotation, -.hljs-template_comment, -.hljs-pi, -.hljs-doctype { - color: #7F9F7F; -} - -.coffeescript .javascript, -.javascript .xml, -.tex .hljs-formula, -.xml .javascript, -.xml .vbscript, -.xml .css, -.xml .hljs-cdata { - opacity: 0.5; -} diff --git a/public/build/ckeditor/plugins/codesnippet/plugin.js b/public/build/ckeditor/plugins/codesnippet/plugin.js deleted file mode 100644 index 611d9796..00000000 --- a/public/build/ckeditor/plugins/codesnippet/plugin.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function m(a){CKEDITOR.tools.extend(this,a);this.queue=[];this.init?this.init(CKEDITOR.tools.bind(function(){for(var a;a=this.queue.pop();)a.call(this);this.ready=!0},this)):this.ready=!0}function n(a){var b=a.config.codeSnippet_codeClass,e=/\r?\n/g,h=new CKEDITOR.dom.element("textarea");a.widgets.add("codeSnippet",{allowedContent:"pre; code(language-*)",requiredContent:"pre",styleableElements:"pre",template:'\x3cpre\x3e\x3ccode class\x3d"'+b+'"\x3e\x3c/code\x3e\x3c/pre\x3e',dialog:"codeSnippet", -pathName:a.lang.codesnippet.pathName,mask:!0,parts:{pre:"pre",code:"code"},highlight:function(){var d=this,c=this.data,b=function(b){d.parts.code.setHtml(a.plugins.codesnippet.isSupportedEnvironment()?b:b.replace(e,"\x3cbr\x3e"))};b(CKEDITOR.tools.htmlEncode(c.code));a._.codesnippet.highlighter.highlight(c.code,c.lang,function(d){a.fire("lockSnapshot");b(d);a.fire("unlockSnapshot")})},data:function(){var a=this.data,b=this.oldData;a.code&&this.parts.code.setHtml(CKEDITOR.tools.htmlEncode(a.code)); -b&&a.lang!=b.lang&&this.parts.code.removeClass("language-"+b.lang);a.lang&&(this.parts.code.addClass("language-"+a.lang),this.highlight());this.oldData=CKEDITOR.tools.copy(a)},upcast:function(d,c){if("pre"==d.name){for(var g=[],e=d.children,k,l=e.length-1;0<=l;l--)k=e[l],k.type==CKEDITOR.NODE_TEXT&&k.value.match(p)||g.push(k);var f;if(1==g.length&&"code"==(f=g[0]).name&&1==f.children.length&&f.children[0].type==CKEDITOR.NODE_TEXT){if(g=a._.codesnippet.langsRegex.exec(f.attributes["class"]))c.lang= -g[1];h.setHtml(f.getHtml());c.code=h.getValue();f.addClass(b);return d}}},downcast:function(a){var c=a.getFirst("code");c.children.length=0;c.removeClass(b);c.add(new CKEDITOR.htmlParser.text(CKEDITOR.tools.htmlEncode(this.data.code)));return a}});var p=/^[\s\n\r]*$/}CKEDITOR.plugins.add("codesnippet",{requires:"widget,dialog",lang:"ar,az,bg,ca,cs,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn", -icons:"codesnippet",hidpi:!0,isSupportedEnvironment:function(){return!CKEDITOR.env.ie||8b)return null;this.boxes[b].getElement().remove();return this.boxes.splice(b,1)[0]}}});l=CKEDITOR.tools.createClass({$:function(a,b,c){this.editor=a;this.cssProperty= -b;this.clickFn=c;this.rows=[];this._.addNewRow();if(this.editor.config.colorButton_renderContentColors)this.editor.once("instanceReady",function(){this.renderContentColors()},this)},statics:{renderContainer:function(a,b){a.push('\x3c/tbody\x3e\x3ctbody class\x3d"cke_colorhistory" style\x3d"display:none;"\x3e',"\x3ctr\x3e",'\x3ctd colspan\x3d"',b.config.colorButton_colorsPerRow,'" align\x3d"center"\x3e',"\x3cspan\x3e\x3chr\x3e\x3c/span\x3e","\x3c/td\x3e","\x3c/tr\x3e","\x3c/tbody\x3e\x3ctbody\x3e")}, -getRowLimit:function(a){return a.config.colorButton_historyRowLimit},getCapacity:function(a){return l.getRowLimit(a)*a.config.colorButton_colorsPerRow},colorList:CKEDITOR.tools.style.parse._colors},_:{countColors:function(){var a=CKEDITOR.tools.getStyledSpans(this.cssProperty,this.editor.editable());return CKEDITOR.tools.array.reduce(a,function(a,c){var f=this._.getHexCode(c,this.cssProperty,l.colorList);a[f]=a[f]||0;a[f]+=1;return a},{},this)},getHexCode:function(a,b,c){var f=a.getStyle(b);return f in -c?c[f].substr(1):n.normalizeColor(a.getComputedStyle(b)).toUpperCase()},sortByOccurrencesAscending:function(a,b){var c=[],f;for(f in a){var k={};k[b]=f;k.frequency=a[f];c.push(k)}c.sort(function(a,b){return b.frequency-a.frequency});this._.trimToCapacity(c);return c.reverse()},trimToCapacity:function(a){a.splice(l.getCapacity(this.editor))},addColors:function(a){CKEDITOR.tools.array.forEach(a,function(a){this.addColor(a.colorCode)},this)},extractColorBox:function(a){for(var b=0;b=c;c++)b[c]=parseInt(a.substr(2*c,2),16);return 165<=.2126*b[0]+.7152*b[1]+.0722*b[2]}function z(a){!a.name&&(a=new CKEDITOR.event(a));var c=!/mouse/.test(a.name),b=a.data.getTarget(),f;"td"==b.getName()&&(f=b.getChild(0).getHtml())&&(q(a),c?d=b:A=b,c&&b.addClass(D(f)?"cke_colordialog_focused_light":"cke_colordialog_focused_dark"),r(f))}function B(){d&&(d.removeClass("cke_colordialog_focused_light"),d.removeClass("cke_colordialog_focused_dark"));r(!1);d=null} -function q(a){if(a=!/mouse/.test(a.name)&&d)a.removeClass("cke_colordialog_focused_light"),a.removeClass("cke_colordialog_focused_dark");d||A||r(!1)}function r(a){a?(h.getById(t).setStyle("background-color",a),h.getById(u).setHtml(a)):(h.getById(t).removeStyle("background-color"),h.getById(u).setHtml("\x26nbsp;"))}function E(a){var c=a.data,b=c.getTarget(),f=c.getKeystroke(),d="rtl"==w.lang.dir;switch(f){case 38:if(a=b.getParent().getPrevious())a=a.getChild([b.getIndex()]),a.focus();c.preventDefault(); -break;case 40:(a=b.getParent().getNext())&&(a=a.getChild([b.getIndex()]))&&1==a.type&&a.focus();c.preventDefault();break;case 32:case 13:y(a);c.preventDefault();break;case d?37:39:(a=b.getNext())?1==a.type&&(a.focus(),c.preventDefault(!0)):(a=b.getParent().getNext())&&(a=a.getChild([0]))&&1==a.type&&(a.focus(),c.preventDefault(!0));break;case d?39:37:if(a=b.getPrevious())a.focus(),c.preventDefault(!0);else if(a=b.getParent().getPrevious())a=a.getLast(),a.focus(),c.preventDefault(!0)}}var v=CKEDITOR.dom.element, -h=CKEDITOR.document,g=w.lang.colordialog,m,e,C={type:"html",html:"\x26nbsp;"},n=function(a){return CKEDITOR.tools.getNextId()+"_"+a},t=n("hicolor"),u=n("hicolortext"),p=n("selhicolor"),k,d,A;(function(){function a(a,d){for(var e=a;eh;h++)c(f.$,"#"+b[g]+b[h]+b[e])}}function c(a,c){var b=new v(a.insertCell(-1));b.setAttribute("class","ColorCell cke_colordialog_colorcell");b.setAttribute("tabIndex", --1);b.setAttribute("role","gridcell");b.on("keydown",E);b.on("click",y);b.on("focus",z);b.on("blur",q);b.setStyle("background-color",c);var d=n("color_table_cell");b.setAttribute("aria-labelledby",d);b.append(CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+c+"\x3c/span\x3e",CKEDITOR.document))}k=CKEDITOR.dom.element.createFromHtml('\x3ctable tabIndex\x3d"-1" class\x3d"cke_colordialog_table" aria-label\x3d"'+g.options+'" role\x3d"grid" style\x3d"border-collapse:separate;" cellspacing\x3d"0"\x3e\x3ccaption class\x3d"cke_voice_label"\x3e'+ -g.options+'\x3c/caption\x3e\x3ctbody role\x3d"presentation"\x3e\x3c/tbody\x3e\x3c/table\x3e');k.on("mouseover",z);k.on("mouseout",q);var b="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,3);a(3,3);var f=new v(k.$.insertRow(-1));f.setAttribute("role","row");c(f.$,"#000000");for(var d=0;16>d;d++){var e=d.toString(16);c(f.$,"#"+e+e+e+e+e+e)}c(f.$,"#ffffff")})();CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.plugins.get("colordialog").path+"dialogs/colordialog.css"));return{title:g.title, -minWidth:360,minHeight:220,onShow:function(a){if(!a.data.selectionColor||a.data.selectionColor==a.data.automaticTextColor||"#rgba(0, 0, 0, 0)"==a.data.selectionColor&&"back"==a.data.type)l(),B();else{var c=a.data.selectionColor;a=this.parts.contents.getElementsByTag("td").toArray();var b;m.getContentElement("picker","selectedColor").setValue(c);CKEDITOR.tools.array.forEach(a,function(a){b=CKEDITOR.tools.convertRgbToHex(a.getStyle("background-color"));c===b&&(a.focus(),d=a)})}},onLoad:function(){m= -this},onHide:function(){l();B()},contents:[{id:"picker",label:g.title,accessKey:"I",elements:[{type:"hbox",padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"\x3cdiv\x3e\x3c/div\x3e",onLoad:function(){CKEDITOR.document.getById(this.domId).append(k)},focus:function(){(d||this.getElement().getElementsByTag("td").getItem(0)).focus()}},C,{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"\x3cspan\x3e"+g.highlight+'\x3c/span\x3e\x3cdiv id\x3d"'+t+'" style\x3d"border: 1px solid; height: 74px; width: 74px;"\x3e\x3c/div\x3e\x3cdiv id\x3d"'+ -u+'"\x3e\x26nbsp;\x3c/div\x3e\x3cspan\x3e'+g.selected+'\x3c/span\x3e\x3cdiv id\x3d"'+p+'" style\x3d"border: 1px solid; height: 20px; width: 74px;"\x3e\x3c/div\x3e'},{type:"text",label:g.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px",onChange:function(){try{h.getById(p).setStyle("background-color",this.getValue())}catch(a){l()}}},C,{type:"button",id:"clear",label:g.clear,onClick:l}]}]}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/af.js b/public/build/ckeditor/plugins/colordialog/lang/af.js deleted file mode 100644 index 9a6d5746..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","af",{clear:"Herstel",highlight:"Aktief",options:"Kleuropsies",selected:"Geselekteer",title:"Kies kleur"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ar.js b/public/build/ckeditor/plugins/colordialog/lang/ar.js deleted file mode 100644 index 3b4a4977..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ar",{clear:"مسح",highlight:"تحديد",options:"اختيارات الألوان",selected:"اللون المختار",title:"اختر اللون"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/az.js b/public/build/ckeditor/plugins/colordialog/lang/az.js deleted file mode 100644 index 03776b43..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","az",{clear:"Təmizlə",highlight:"Ayırmaq",options:"Rəng seçimləri",selected:"Seçilmiş rəng",title:"Rəngi seç"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/bg.js b/public/build/ckeditor/plugins/colordialog/lang/bg.js deleted file mode 100644 index 9bd950ab..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bg",{clear:"Изчистване",highlight:"Осветяване",options:"Цветови опции",selected:"Изберете цвят",title:"Избор на цвят"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/bn.js b/public/build/ckeditor/plugins/colordialog/lang/bn.js deleted file mode 100644 index 1cd50972..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bn",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/bs.js b/public/build/ckeditor/plugins/colordialog/lang/bs.js deleted file mode 100644 index e8ea577b..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","bs",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ca.js b/public/build/ckeditor/plugins/colordialog/lang/ca.js deleted file mode 100644 index 9e76e9e1..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ca",{clear:"Neteja",highlight:"Destacat",options:"Opcions del color",selected:"Color Seleccionat",title:"Seleccioni el color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/cs.js b/public/build/ckeditor/plugins/colordialog/lang/cs.js deleted file mode 100644 index 4de1f1fc..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","cs",{clear:"Vyčistit",highlight:"Zvýraznit",options:"Nastavení barvy",selected:"Vybráno",title:"Výběr barvy"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/cy.js b/public/build/ckeditor/plugins/colordialog/lang/cy.js deleted file mode 100644 index 6536226b..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","cy",{clear:"Clirio",highlight:"Uwcholeuo",options:"Opsiynau Lliw",selected:"Lliw a Ddewiswyd",title:"Dewis lliw"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/da.js b/public/build/ckeditor/plugins/colordialog/lang/da.js deleted file mode 100644 index df1c5c85..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","da",{clear:"Nulstil",highlight:"Markér",options:"Farvemuligheder",selected:"Valgt farve",title:"Vælg farve"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/de-ch.js b/public/build/ckeditor/plugins/colordialog/lang/de-ch.js deleted file mode 100644 index 9d156a74..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","de-ch",{clear:"Entfernen",highlight:"Hervorheben",options:"Farboptionen",selected:"Ausgewählte Farbe",title:"Farbe auswählen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/de.js b/public/build/ckeditor/plugins/colordialog/lang/de.js deleted file mode 100644 index 6ebe48e0..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","de",{clear:"Entfernen",highlight:"Hervorheben",options:"Farboptionen",selected:"Ausgewählte Farbe",title:"Farbe auswählen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/el.js b/public/build/ckeditor/plugins/colordialog/lang/el.js deleted file mode 100644 index 1447a1c4..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","el",{clear:"Εκκαθάριση",highlight:"Σήμανση",options:"Επιλογές Χρωμάτων",selected:"Επιλεγμένο Χρώμα",title:"Επιλογή χρώματος"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/en-au.js b/public/build/ckeditor/plugins/colordialog/lang/en-au.js deleted file mode 100644 index fabddc33..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-au",{clear:"Clear",highlight:"Highlight",options:"Colour Options",selected:"Selected Colour",title:"Select colour"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/en-ca.js b/public/build/ckeditor/plugins/colordialog/lang/en-ca.js deleted file mode 100644 index 535acfca..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-ca",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/en-gb.js b/public/build/ckeditor/plugins/colordialog/lang/en-gb.js deleted file mode 100644 index 1ec95ff2..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en-gb",{clear:"Clear",highlight:"Highlight",options:"Colour Options",selected:"Selected Colour",title:"Select colour"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/en.js b/public/build/ckeditor/plugins/colordialog/lang/en.js deleted file mode 100644 index 21a79bc0..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","en",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/eo.js b/public/build/ckeditor/plugins/colordialog/lang/eo.js deleted file mode 100644 index aaa8cf96..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","eo",{clear:"Forigi",highlight:"Detaloj",options:"Opcioj pri koloroj",selected:"Selektita koloro",title:"Selekti koloron"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/es-mx.js b/public/build/ckeditor/plugins/colordialog/lang/es-mx.js deleted file mode 100644 index ebef9611..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","es-mx",{clear:"Borrar",highlight:"Realce",options:"Opciones de color",selected:"Color seleccionado",title:"Selecciona un color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/es.js b/public/build/ckeditor/plugins/colordialog/lang/es.js deleted file mode 100644 index ae4688f2..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","es",{clear:"Borrar",highlight:"Muestra",options:"Opciones de colores",selected:"Elegido",title:"Elegir color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/et.js b/public/build/ckeditor/plugins/colordialog/lang/et.js deleted file mode 100644 index 4a51ac6b..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","et",{clear:"Eemalda",highlight:"Näidis",options:"Värvi valikud",selected:"Valitud värv",title:"Värvi valimine"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/eu.js b/public/build/ckeditor/plugins/colordialog/lang/eu.js deleted file mode 100644 index 4155381d..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","eu",{clear:"Garbitu",highlight:"Nabarmendu",options:"Kolore aukerak",selected:"Hautatutako kolorea",title:"Hautatu kolorea"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/fa.js b/public/build/ckeditor/plugins/colordialog/lang/fa.js deleted file mode 100644 index 8b0de9df..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fa",{clear:"پاک کردن",highlight:"متمایز",options:"گزینه​های رنگ",selected:"رنگ انتخاب شده",title:"انتخاب رنگ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/fi.js b/public/build/ckeditor/plugins/colordialog/lang/fi.js deleted file mode 100644 index 8a9a1fe3..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fi",{clear:"Poista",highlight:"Korostus",options:"Värin ominaisuudet",selected:"Valittu",title:"Valitse väri"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/fo.js b/public/build/ckeditor/plugins/colordialog/lang/fo.js deleted file mode 100644 index 575a9d47..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fo",{clear:"Strika",highlight:"Framheva",options:"Litmøguleikar",selected:"Valdur litur",title:"Vel lit"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/fr-ca.js b/public/build/ckeditor/plugins/colordialog/lang/fr-ca.js deleted file mode 100644 index d321a839..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fr-ca",{clear:"Effacer",highlight:"Surligner",options:"Options de couleur",selected:"Couleur sélectionnée",title:"Choisir une couleur"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/fr.js b/public/build/ckeditor/plugins/colordialog/lang/fr.js deleted file mode 100644 index d7699158..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","fr",{clear:"Effacer",highlight:"Pointée",options:"Options de couleur",selected:"Couleur choisie",title:"Sélectionner une couleur"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/gl.js b/public/build/ckeditor/plugins/colordialog/lang/gl.js deleted file mode 100644 index 13fcd5fb..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","gl",{clear:"Limpar",highlight:"Resaltar",options:"Opcións de cor",selected:"Cor seleccionado",title:"Seleccione unha cor"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/gu.js b/public/build/ckeditor/plugins/colordialog/lang/gu.js deleted file mode 100644 index 658cb5a3..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","gu",{clear:"સાફ કરવું",highlight:"હાઈઈટ",options:"રંગના વિકલ્પ",selected:"પસંદ કરેલો રંગ",title:"રંગ પસંદ કરો"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/he.js b/public/build/ckeditor/plugins/colordialog/lang/he.js deleted file mode 100644 index c5700716..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","he",{clear:"ניקוי",highlight:"סימון",options:"אפשרויות צבע",selected:"בחירה",title:"בחירת צבע"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/hi.js b/public/build/ckeditor/plugins/colordialog/lang/hi.js deleted file mode 100644 index d14f1a84..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hi",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/hr.js b/public/build/ckeditor/plugins/colordialog/lang/hr.js deleted file mode 100644 index 5a99c466..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hr",{clear:"Očisti",highlight:"Istaknuto",options:"Opcije boje",selected:"Odabrana boja",title:"Odaberi boju"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/hu.js b/public/build/ckeditor/plugins/colordialog/lang/hu.js deleted file mode 100644 index f905e8f0..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","hu",{clear:"Ürítés",highlight:"Nagyítás",options:"Szín opciók",selected:"Kiválasztott",title:"Válasszon színt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/id.js b/public/build/ckeditor/plugins/colordialog/lang/id.js deleted file mode 100644 index 21ca1ad2..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","id",{clear:"Hapus",highlight:"Sorot",options:"Pilihan Warna",selected:"Warna Dipilih",title:"Pilih Warna"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/is.js b/public/build/ckeditor/plugins/colordialog/lang/is.js deleted file mode 100644 index 35044395..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","is",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/it.js b/public/build/ckeditor/plugins/colordialog/lang/it.js deleted file mode 100644 index cb5ca860..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","it",{clear:"cancella",highlight:"Evidenzia",options:"Opzioni colore",selected:"Seleziona il colore",title:"Selezionare il colore"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ja.js b/public/build/ckeditor/plugins/colordialog/lang/ja.js deleted file mode 100644 index 01f28518..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ja",{clear:"クリア",highlight:"ハイライト",options:"カラーオプション",selected:"選択された色",title:"色選択"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ka.js b/public/build/ckeditor/plugins/colordialog/lang/ka.js deleted file mode 100644 index d11c4849..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ka",{clear:"გასუფთავება",highlight:"ჩვენება",options:"ფერის პარამეტრები",selected:"არჩეული ფერი",title:"ფერის შეცვლა"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/km.js b/public/build/ckeditor/plugins/colordialog/lang/km.js deleted file mode 100644 index 9be3d0f0..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","km",{clear:"សម្អាត",highlight:"បន្លិច​ពណ៌",options:"ជម្រើស​ពណ៌",selected:"ពណ៌​ដែល​បាន​រើស",title:"រើស​ពណ៌"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ko.js b/public/build/ckeditor/plugins/colordialog/lang/ko.js deleted file mode 100644 index bf8921fa..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ko",{clear:"비우기",highlight:"강조",options:"색상 옵션",selected:"선택된 색상",title:"색상 선택"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ku.js b/public/build/ckeditor/plugins/colordialog/lang/ku.js deleted file mode 100644 index 5b590758..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ku",{clear:"پاکیکەوە",highlight:"نیشانکردن",options:"هەڵبژاردەی ڕەنگەکان",selected:"ڕەنگی هەڵبژێردراو",title:"هەڵبژاردنی ڕەنگ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/lt.js b/public/build/ckeditor/plugins/colordialog/lang/lt.js deleted file mode 100644 index 4e3f2506..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","lt",{clear:"Išvalyti",highlight:"Paryškinti",options:"Spalvos nustatymai",selected:"Pasirinkta spalva",title:"Pasirinkite spalvą"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/lv.js b/public/build/ckeditor/plugins/colordialog/lang/lv.js deleted file mode 100644 index 0e4c7b8b..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","lv",{clear:"Notīrīt",highlight:"Paraugs",options:"Krāsas uzstādījumi",selected:"Izvēlētā krāsa",title:"Izvēlies krāsu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/mk.js b/public/build/ckeditor/plugins/colordialog/lang/mk.js deleted file mode 100644 index 870e2325..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","mk",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/mn.js b/public/build/ckeditor/plugins/colordialog/lang/mn.js deleted file mode 100644 index 0547d82c..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","mn",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ms.js b/public/build/ckeditor/plugins/colordialog/lang/ms.js deleted file mode 100644 index 65c6e817..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ms",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/nb.js b/public/build/ckeditor/plugins/colordialog/lang/nb.js deleted file mode 100644 index 85795e83..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","nb",{clear:"Nullstill",highlight:"Fremhevet",options:"Alternativer for farge",selected:"Valgt farge",title:"Velg farge"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/nl.js b/public/build/ckeditor/plugins/colordialog/lang/nl.js deleted file mode 100644 index c2ed1223..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","nl",{clear:"Wissen",highlight:"Actief",options:"Kleuropties",selected:"Geselecteerde kleur",title:"Selecteer kleur"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/no.js b/public/build/ckeditor/plugins/colordialog/lang/no.js deleted file mode 100644 index 7a853026..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","no",{clear:"Tøm",highlight:"Merk",options:"Alternativer for farge",selected:"Valgt",title:"Velg farge"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/oc.js b/public/build/ckeditor/plugins/colordialog/lang/oc.js deleted file mode 100644 index f4b57e43..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","oc",{clear:"Escafar",highlight:"Puntada",options:"Opcions de color",selected:"Color seleccionada",title:"Seleccionar una color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/pl.js b/public/build/ckeditor/plugins/colordialog/lang/pl.js deleted file mode 100644 index 3be00f6e..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pl",{clear:"Wyczyść",highlight:"Zaznacz",options:"Opcje koloru",selected:"Wybrany",title:"Wybierz kolor"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/pt-br.js b/public/build/ckeditor/plugins/colordialog/lang/pt-br.js deleted file mode 100644 index 90c14fd7..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pt-br",{clear:"Limpar",highlight:"Grifar",options:"Opções de Cor",selected:"Cor Selecionada",title:"Selecione uma Cor"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/pt.js b/public/build/ckeditor/plugins/colordialog/lang/pt.js deleted file mode 100644 index ac366458..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","pt",{clear:"Limpar",highlight:"Realçar",options:"Opções de cor",selected:"Cor selecionada",title:"Selecionar cor"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ro.js b/public/build/ckeditor/plugins/colordialog/lang/ro.js deleted file mode 100644 index d7c0d3e0..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ro",{clear:"Clar",highlight:"Evidențiat",options:"Opțiuni culoare",selected:"Culoare selectată",title:"Selectează culoarea"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ru.js b/public/build/ckeditor/plugins/colordialog/lang/ru.js deleted file mode 100644 index 7fe16d27..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ru",{clear:"Очистить",highlight:"Под курсором",options:"Настройки цвета",selected:"Выбранный цвет",title:"Выберите цвет"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/si.js b/public/build/ckeditor/plugins/colordialog/lang/si.js deleted file mode 100644 index 54bb6924..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","si",{clear:"පැහැදිලි",highlight:"මතුකර පෙන්වන්න",options:"වර්ණ විකල්ප",selected:"තෙරු වර්ණ",title:"වර්ණ තෝරන්න"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sk.js b/public/build/ckeditor/plugins/colordialog/lang/sk.js deleted file mode 100644 index 77777c70..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sk",{clear:"Vyčistiť",highlight:"Zvýrazniť",options:"Možnosti farby",selected:"Vybraná farba",title:"Vybrať farbu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sl.js b/public/build/ckeditor/plugins/colordialog/lang/sl.js deleted file mode 100644 index 29ac7ccf..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sl",{clear:"Počisti",highlight:"Poudarjeno",options:"Možnosti barve",selected:"Izbrana barva",title:"Izberi barvo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sq.js b/public/build/ckeditor/plugins/colordialog/lang/sq.js deleted file mode 100644 index 1c93b3b4..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sq",{clear:"Pastro",highlight:"Thekso",options:"Përzgjedhjet e Ngjyrave",selected:"Ngjyra e Përzgjedhur",title:"Përzgjidh ngjyrë"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sr-latn.js b/public/build/ckeditor/plugins/colordialog/lang/sr-latn.js deleted file mode 100644 index de708cb6..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sr-latn",{clear:"Brisanje",highlight:"Isticanje",options:"Vrste boja",selected:"Odabrano",title:"Odaberite boju"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sr.js b/public/build/ckeditor/plugins/colordialog/lang/sr.js deleted file mode 100644 index 7185b347..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sr",{clear:"Брисање",highlight:"Истицање",options:"Врсте боја",selected:"Одабрано",title:"Одаберите боју"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/sv.js b/public/build/ckeditor/plugins/colordialog/lang/sv.js deleted file mode 100644 index d527156a..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","sv",{clear:"Rensa",highlight:"Markera",options:"Färgalternativ",selected:"Vald färg",title:"Välj färg"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/th.js b/public/build/ckeditor/plugins/colordialog/lang/th.js deleted file mode 100644 index 8f352d9d..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","th",{clear:"Clear",highlight:"Highlight",options:"Color Options",selected:"Selected Color",title:"Select color"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/tr.js b/public/build/ckeditor/plugins/colordialog/lang/tr.js deleted file mode 100644 index c416c061..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","tr",{clear:"Temizle",highlight:"İşaretle",options:"Renk Seçenekleri",selected:"Seçilmiş",title:"Renk seç"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/tt.js b/public/build/ckeditor/plugins/colordialog/lang/tt.js deleted file mode 100644 index df9d32ae..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","tt",{clear:"Бушату",highlight:"Билгеләү",options:"Төс көйләүләре",selected:"Сайланган төсләр",title:"Төс сайлау"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/ug.js b/public/build/ckeditor/plugins/colordialog/lang/ug.js deleted file mode 100644 index f89a948c..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","ug",{clear:"تازىلا",highlight:"يورۇت",options:"رەڭ تاللانمىسى",selected:"رەڭ تاللاڭ",title:"رەڭ تاللاڭ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/uk.js b/public/build/ckeditor/plugins/colordialog/lang/uk.js deleted file mode 100644 index c59d1de8..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","uk",{clear:"Очистити",highlight:"Колір, на який вказує курсор",options:"Опції кольорів",selected:"Обраний колір",title:"Обрати колір"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/vi.js b/public/build/ckeditor/plugins/colordialog/lang/vi.js deleted file mode 100644 index dae8623e..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","vi",{clear:"Xóa bỏ",highlight:"Màu chọn",options:"Tùy chọn màu",selected:"Màu đã chọn",title:"Chọn màu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/zh-cn.js b/public/build/ckeditor/plugins/colordialog/lang/zh-cn.js deleted file mode 100644 index 25e3b000..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","zh-cn",{clear:"清除",highlight:"高亮",options:"颜色选项",selected:"选择颜色",title:"选择颜色"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/lang/zh.js b/public/build/ckeditor/plugins/colordialog/lang/zh.js deleted file mode 100644 index 57868b94..00000000 --- a/public/build/ckeditor/plugins/colordialog/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("colordialog","zh",{clear:"清除",highlight:"高亮",options:"色彩選項",selected:"選取的色彩",title:"選取色彩"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/colordialog/plugin.js b/public/build/ckeditor/plugins/colordialog/plugin.js deleted file mode 100644 index 23efd3bd..00000000 --- a/public/build/ckeditor/plugins/colordialog/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.colordialog={requires:"dialog",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",init:function(b){var d=new CKEDITOR.dialogCommand("colordialog");d.editorFocus=!1;b.addCommand("colordialog",d);CKEDITOR.dialog.add("colordialog",this.path+"dialogs/colordialog.js");b.getColorFromDialog=function(d, -k,g){var c,e,h,f;c=function(a){h(this);(a="ok"==a.name?this.getValueOf("picker","selectedColor"):null)&&!CKEDITOR.tools._isValidColorFormat(a)&&(a=null);/^[0-9a-f]{3}([0-9a-f]{3})?$/i.test(a)&&(a="#"+a);d.call(k,a)};e=function(a){g&&(a.data=g)};h=function(a){a.removeListener("ok",c);a.removeListener("cancel",c);a.removeListener("show",e)};f=function(a){a.on("ok",c);a.on("cancel",c);a.on("show",e,null,null,5)};b.execCommand("colordialog");if(b._.storedDialogs&&b._.storedDialogs.colordialog)f(b._.storedDialogs.colordialog); -else CKEDITOR.on("dialogDefinition",function(a){if("colordialog"==a.data.name){var b=a.data.definition;a.removeListener();b.onLoad=CKEDITOR.tools.override(b.onLoad,function(a){return function(){f(this);b.onLoad=a;"function"==typeof a&&a.call(this)}})}})}}};CKEDITOR.plugins.add("colordialog",CKEDITOR.plugins.colordialog); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg b/public/build/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg deleted file mode 100644 index 9298aefd..00000000 --- a/public/build/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg +++ /dev/null @@ -1,25 +0,0 @@ - - - - cursor_disabled - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/cursors/cursor.svg b/public/build/ckeditor/plugins/copyformatting/cursors/cursor.svg deleted file mode 100644 index 95951478..00000000 --- a/public/build/ckeditor/plugins/copyformatting/cursors/cursor.svg +++ /dev/null @@ -1,14 +0,0 @@ - - - cursor - - - - - - - - - - - diff --git a/public/build/ckeditor/plugins/copyformatting/icons/copyformatting.png b/public/build/ckeditor/plugins/copyformatting/icons/copyformatting.png deleted file mode 100644 index 11284089..00000000 Binary files a/public/build/ckeditor/plugins/copyformatting/icons/copyformatting.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png b/public/build/ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png deleted file mode 100644 index c46e5140..00000000 Binary files a/public/build/ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ar.js b/public/build/ckeditor/plugins/copyformatting/lang/ar.js deleted file mode 100644 index 78e04bf6..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ar",{label:"نسخ التنسيق",notification:{copied:"تم نسخ التنسيق",applied:"تم تطبيق التنسيق",canceled:"تم الغاء التنسيق",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/az.js b/public/build/ckeditor/plugins/copyformatting/lang/az.js deleted file mode 100644 index 11f61eaf..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","az",{label:"Formatı köçür",notification:{copied:"Format köçürülüb",applied:"Format tədbiq edilib",canceled:"Format imtina edilib",failed:"Format etmək mümkün deyil. Siz üslubları köçürmədən onları tədbiq edə bilməzsiniz."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/bg.js b/public/build/ckeditor/plugins/copyformatting/lang/bg.js deleted file mode 100644 index dab8f89a..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","bg",{label:"Копирай форматиране",notification:{copied:"Форматирането е копирано",applied:"Форматирането е приложено",canceled:"Форматирането е анулирано",failed:"Форматирането не е успешно. Не можете да прилагате стилове без първо да ги копирате."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/cs.js b/public/build/ckeditor/plugins/copyformatting/lang/cs.js deleted file mode 100644 index 714b4d18..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","cs",{label:"Kopírovat formátování",notification:{copied:"Formátování zkopírováno",applied:"Formátování použito",canceled:"Formátování zrušeno",failed:"Formátování selhalo. Nejdříve musíte styly zkopírovat, až pak je můžete použít."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/da.js b/public/build/ckeditor/plugins/copyformatting/lang/da.js deleted file mode 100644 index d80f24fd..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","da",{label:"Kopiér formatering",notification:{copied:"Formatering kopieret",applied:"Formatering anvendt",canceled:"Formatering annulleret",failed:"Formatering fejlede. Du kan ikke anvende stile uden at kopiere dem først."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/de-ch.js b/public/build/ckeditor/plugins/copyformatting/lang/de-ch.js deleted file mode 100644 index 5d27210a..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","de-ch",{label:"Formatierung kopieren",notification:{copied:"Formatierung kopiert",applied:"Formatierung angewendet",canceled:"Formatierung abgebrochen",failed:"Formatierung fehlgeschlagen. Sie können Stile nicht anwenden, ohne sie zuerst zu kopieren."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/de.js b/public/build/ckeditor/plugins/copyformatting/lang/de.js deleted file mode 100644 index fa448601..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","de",{label:"Formatierung kopieren",notification:{copied:"Formatierung kopiert",applied:"Formatierung angewendet",canceled:"Formatierung abgebrochen",failed:"Formatierung fehlgeschlagen. Sie können Stile nicht anwenden, ohne sie zuerst zu kopieren."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/el.js b/public/build/ckeditor/plugins/copyformatting/lang/el.js deleted file mode 100644 index e24b2f0c..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","el",{label:"Αντιγραφή Μορφοποίησης",notification:{copied:"Αντιγραφή μορφοποίησης",applied:"Εφαρμογή μορφοποίησης",canceled:"Ακύρωση μορφοποίησης",failed:"Η μορφοποίηση απέτυχε. Δεν μπορείτε να εφαρμόσετε στυλ πριν τα αντιγράψετε."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/en-au.js b/public/build/ckeditor/plugins/copyformatting/lang/en-au.js deleted file mode 100644 index eddcd5d0..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","en-au",{label:"Copy Formatting",notification:{copied:"Formatting copied",applied:"Formatting applied",canceled:"Formatting canceled",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/en.js b/public/build/ckeditor/plugins/copyformatting/lang/en.js deleted file mode 100644 index ea148714..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","en",{label:"Copy Formatting",notification:{copied:"Formatting copied",applied:"Formatting applied",canceled:"Formatting canceled",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/eo.js b/public/build/ckeditor/plugins/copyformatting/lang/eo.js deleted file mode 100644 index f09ba53d..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","eo",{label:"Kopii la formaton",notification:{copied:"Formato kopiita",applied:"Formato aplikita",canceled:"Formato nuligita",failed:"Malsukceso de la formato. Vi ne povas apliki stilojn se vi ne kopiis ilin antaŭe."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/es-mx.js b/public/build/ckeditor/plugins/copyformatting/lang/es-mx.js deleted file mode 100644 index 85777424..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","es-mx",{label:"Copiando formato",notification:{copied:"Formato copiado",applied:"Aplicando formato",canceled:"Cancelando formato",failed:"Formato falló. No puede aplicar estilos sin copiarlos primero."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/et.js b/public/build/ckeditor/plugins/copyformatting/lang/et.js deleted file mode 100644 index 7ef0b63e..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","et",{label:"Kopeeri vorming",notification:{copied:"Vorming on kopeeritud",applied:"Vorming on rakendatud",canceled:"Vormindamisest loobuti",failed:"Vormindamine nurjus. Stiile ei saa rakendada ilma neid enne kopeerimata."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/eu.js b/public/build/ckeditor/plugins/copyformatting/lang/eu.js deleted file mode 100644 index dfa175c5..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","eu",{label:"Kopiatu formatua",notification:{copied:"Formatua kopiatuta",applied:"Formatua aplikatuta",canceled:"Formatua bertan behera utzita",failed:"Formatuak huts egin du. Ezin dituzu estiloak kopiatu gabe aplikatu."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/fa.js b/public/build/ckeditor/plugins/copyformatting/lang/fa.js deleted file mode 100644 index 8e647841..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","fa",{label:"کپی کردن قالب بندی",notification:{copied:"قالب بندی کپی شد",applied:"قالب بندی اعمال شد",canceled:"قالب بندی لغو شد",failed:"قالب بندی ناموفق بود. شما نمیتوانید بدون اینکه ابتدا سبک ها را کپی کنید ، آنها را اعمال نمایید"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/fr.js b/public/build/ckeditor/plugins/copyformatting/lang/fr.js deleted file mode 100644 index 3e876319..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","fr",{label:"Copier le formatage",notification:{copied:"Formatage copié",applied:"Formatage appliqué",canceled:"Formatage supprimé",failed:"Échec du formatage. Vous devez d'abord copier des styles pour pouvoir les appliquer."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/gl.js b/public/build/ckeditor/plugins/copyformatting/lang/gl.js deleted file mode 100644 index 90f43c19..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","gl",{label:"Copiar o formato",notification:{copied:"Copiouse o formato",applied:"Aplicouse o formato",canceled:"Cancelouse o formatado",failed:"Produciuse un erro ao formatar. Non é posíbel aplicar estilos sen copialos antes."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/hr.js b/public/build/ckeditor/plugins/copyformatting/lang/hr.js deleted file mode 100644 index c9d5f900..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","hr",{label:"Kopiraj formatiranje",notification:{copied:"Formatiranje kopirano",applied:"Formatiranje primjenjeno",canceled:"Formatiranje poništeno",failed:"Formatiranje nije uspjelo. Nije moguće primjeniti stilove bez da ih prvo kopirate."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/hu.js b/public/build/ckeditor/plugins/copyformatting/lang/hu.js deleted file mode 100644 index c07f6b71..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","hu",{label:"Formázás másolása",notification:{copied:"Formázás másolva",applied:"Formázás alkalmazva",canceled:"Formázás megszakítva",failed:"A formázás meghiúsult. Nem alkalmazhatsz stílusokat mielőtt másolnád őket."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/it.js b/public/build/ckeditor/plugins/copyformatting/lang/it.js deleted file mode 100644 index 5a8608a5..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","it",{label:"Copia formattazione",notification:{copied:"Formattazione copiata",applied:"Formattazione applicata",canceled:"Formattazione annullata",failed:"Formattazione fallita. Non è possibile applicare stili senza averli prima copiati."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ja.js b/public/build/ckeditor/plugins/copyformatting/lang/ja.js deleted file mode 100644 index ff0ccfa1..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ja",{label:"フォーマットをコピー",notification:{copied:"コピーされたフォーマット",applied:"フォーマットを適用しました",canceled:"フォーマットを取り消しました",failed:"フォーマットのコピーに失敗しました。最初にフォーマットをコピーしてから適用してください。"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ko.js b/public/build/ckeditor/plugins/copyformatting/lang/ko.js deleted file mode 100644 index 1db13b11..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ko",{label:"양식 복사",notification:{copied:"양식이 복사 되었습니다",applied:"양식을 적용 했습니다",canceled:"양식이 취소 되었습니다",failed:"양식 적용에 실패했습니다. 양식을 복사해야 적용할 수 있습니다."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ku.js b/public/build/ckeditor/plugins/copyformatting/lang/ku.js deleted file mode 100644 index eb3bcefe..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ku",{label:"لەبەرگرتنەوەی شێواز",notification:{copied:"شێواز لەبەرگیرایەوە",applied:"شێواز بەکارهێنرا",canceled:"شێواز لابرا",failed:"شێوازکردن سەرکەوتوو نەبوو. تۆ ناتوانیت ستایلەکان بەکاربێنی بەبێ لەبەرگرتنەوەیان لە سەرەتا."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/lv.js b/public/build/ckeditor/plugins/copyformatting/lang/lv.js deleted file mode 100644 index 835680ee..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","lv",{label:"Kopēt formatējumu",notification:{copied:"Formatējums nokopēts",applied:"Formatējums uzstādīts",canceled:"Formatējums atcelts",failed:"Formatēšana neizdevās. Nevar uzstādīt stilus bez to nokopēšanas."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/nb.js b/public/build/ckeditor/plugins/copyformatting/lang/nb.js deleted file mode 100644 index 6f2c273d..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","nb",{label:"Kopier formatering",notification:{copied:"Formatering kopiert",applied:"Formatering tatt i bruk",canceled:"Formatering avbrutt",failed:"Formatering mislyktes. Du kan ikke ta i bruk stiler uten å kopiere dem først."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/nl.js b/public/build/ckeditor/plugins/copyformatting/lang/nl.js deleted file mode 100644 index 4eab7917..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","nl",{label:"Opmaakstijl kopiëren",notification:{copied:"Opmaakstijl gekopieerd",applied:"Opmaakstijl toegepast",canceled:"Opmaakstijl toepassen geannuleerd",failed:"Opmaakstijl toepassen mislukt. U kunt geen opmaakstijl toepassen zonder deze eerst te kopiëren."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/oc.js b/public/build/ckeditor/plugins/copyformatting/lang/oc.js deleted file mode 100644 index fc787e97..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","oc",{label:"Copiar lo formatatge",notification:{copied:"Formatatge copiat",applied:"Formatatge aplicat",canceled:"Formatatge anullat",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/pl.js b/public/build/ckeditor/plugins/copyformatting/lang/pl.js deleted file mode 100644 index edd24af1..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","pl",{label:"Kopiuj formatowanie",notification:{copied:"Formatowanie skopiowane",applied:"Formatowanie zastosowane",canceled:"Formatowanie przerwane",failed:"Formatowanie nie powiodło się. Nie możesz zastosować stylów bez uprzedniego ich skopiowania."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/pt-br.js b/public/build/ckeditor/plugins/copyformatting/lang/pt-br.js deleted file mode 100644 index 2376a0b2..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","pt-br",{label:"Copiar Formatação",notification:{copied:"Formatação copiada",applied:"Formatação aplicada",canceled:"Formatação cancelada",failed:"A formatação falhou. Você não pode aplicar estilos sem copiá-los antes."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/pt.js b/public/build/ckeditor/plugins/copyformatting/lang/pt.js deleted file mode 100644 index f89d92c3..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","pt",{label:"Copiar formatação",notification:{copied:"Formatação copiada",applied:"Formatação aplicada",canceled:"Formatação cancelada",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ro.js b/public/build/ckeditor/plugins/copyformatting/lang/ro.js deleted file mode 100644 index 4d2d922e..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ro",{label:"Copiere formatare",notification:{copied:"Formatare copiată",applied:"Formatare aplicată",canceled:"Formatare anulată",failed:"Formatare greșită. Nu poți aplica stiluri fără a le copia întâi."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/ru.js b/public/build/ckeditor/plugins/copyformatting/lang/ru.js deleted file mode 100644 index 8a7daa03..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","ru",{label:"Копировать форматирование",notification:{copied:"Форматирование скопировано",applied:"Форматирование применено",canceled:"Форматирование отменен",failed:"Форматирование не выполнено. Стили необходимо скопировать перед применением."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/sk.js b/public/build/ckeditor/plugins/copyformatting/lang/sk.js deleted file mode 100644 index 805f0fea..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","sk",{label:"Kopírovať formátovanie",notification:{copied:"Formátovanie skopírované",applied:"Formátovanie aplikované",canceled:"Formátovanie zrušené",failed:"Formátovanie zlyhalo. Nemôžete aplikovať štýly bez toho, aby ste ich najprv skopírovali."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/sq.js b/public/build/ckeditor/plugins/copyformatting/lang/sq.js deleted file mode 100644 index d2319e54..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","sq",{label:"Kopjo Formatimin",notification:{copied:"Formatimi u kopjua",applied:"Formatimi u aplikua",canceled:"Formatimi u ndërpre",failed:"Formatimi dështoi. Nuk mund të aplikosh stile pa i kopjuar fillimisht ato."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/sr-latn.js b/public/build/ckeditor/plugins/copyformatting/lang/sr-latn.js deleted file mode 100644 index ab0c0d6c..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","sr-latn",{label:"Kopiranje formatiranja",notification:{copied:"Kopirano formatiranje",applied:"Formatiranje primenjeno",canceled:"Formatiranje prekinuto",failed:"Formatiranje nije uspelo. Ne možete primenjivati stilove pre nego što ih kopirate."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/sr.js b/public/build/ckeditor/plugins/copyformatting/lang/sr.js deleted file mode 100644 index e62a71d5..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","sr",{label:"Копирање форматирања",notification:{copied:"Копирано форматирање",applied:"Форматирање примењено",canceled:"Форматирање примењено",failed:"Форматирање није успело. Не можете примењивати стилове пре него што их копирате."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/sv.js b/public/build/ckeditor/plugins/copyformatting/lang/sv.js deleted file mode 100644 index e0560ae5..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","sv",{label:"Kopiera formatering",notification:{copied:"Formatering kopierad",applied:"Formatering applicerad",canceled:"Formatering avbruten",failed:"Formatering misslyckades. Du kan inte applicera stilar utan att kopiera dem först."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/tr.js b/public/build/ckeditor/plugins/copyformatting/lang/tr.js deleted file mode 100644 index 27b6bcbb..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","tr",{label:"Formatı Kopyala",notification:{copied:"Formatlama Kopyalandı",applied:"Formatlama Uygulandı",canceled:"Formatlama İptal Edildi",failed:"Formatlama hatası. İlk önce onları kopyalamadan stilleri uygulayamazsınız."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/uk.js b/public/build/ckeditor/plugins/copyformatting/lang/uk.js deleted file mode 100644 index 205aa5ea..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","uk",{label:"Копіювати форматування",notification:{copied:"Форматування скопійовано",applied:"Форматування застосовано",canceled:"Форматування скасовано",failed:"Помилка форматування. Ви не можете застосовувати стилі без попереднього їх копіювання."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/vi.js b/public/build/ckeditor/plugins/copyformatting/lang/vi.js deleted file mode 100644 index 4ddc8405..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","vi",{label:"Sao chép định dạng",notification:{copied:"Formatting copied",applied:"Formatting applied",canceled:"Formatting canceled",failed:"Formatting failed. You cannot apply styles without copying them first."}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/zh-cn.js b/public/build/ckeditor/plugins/copyformatting/lang/zh-cn.js deleted file mode 100644 index afdcf8bb..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","zh-cn",{label:"格式刷",notification:{copied:"格式已复制",applied:"格式已应用",canceled:"格式已取消",failed:"格式化失败,您不能还没复制就应用格式"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/lang/zh.js b/public/build/ckeditor/plugins/copyformatting/lang/zh.js deleted file mode 100644 index 5528e32e..00000000 --- a/public/build/ckeditor/plugins/copyformatting/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("copyformatting","zh",{label:"格式化複製",notification:{copied:"已複製格式化",applied:"格式化已套用",canceled:"格式化已取消",failed:"格式化失敗。您無法在沒有複製它們前就套用樣式。"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/copyformatting/plugin.js b/public/build/ckeditor/plugins/copyformatting/plugin.js deleted file mode 100644 index b071345e..00000000 --- a/public/build/ckeditor/plugins/copyformatting/plugin.js +++ /dev/null @@ -1,28 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function k(a,b,e,d){var c=new CKEDITOR.dom.walker(a);if(a=a.startContainer.getAscendant(b,!0)||a.endContainer.getAscendant(b,!0))if(e(a),d)return;for(;a=c.next();)if(a=a.getAscendant(b,!0))if(e(a),d)break}function u(a,b){var e={ul:"ol",ol:"ul"};return-1!==l(b,function(b){return b.element===a||b.element===e[a]})}function q(a){this.styles=null;this.sticky=!1;this.editor=a;this.filter=new CKEDITOR.filter(a,a.config.copyFormatting_allowRules);!0===a.config.copyFormatting_allowRules&&(this.filter.disabled= -!0);a.config.copyFormatting_disallowRules&&this.filter.disallow(a.config.copyFormatting_disallowRules)}var l=CKEDITOR.tools.indexOf,r=CKEDITOR.tools.getMouseButton,t=!1;CKEDITOR.plugins.add("copyformatting",{lang:"ar,az,bg,cs,da,de,de-ch,el,en,en-au,eo,es-mx,et,eu,fa,fr,gl,hr,hu,it,ja,ko,ku,lv,nb,nl,oc,pl,pt,pt-br,ro,ru,sk,sq,sr,sr-latn,sv,tr,uk,vi,zh,zh-cn",icons:"copyformatting",hidpi:!0,init:function(a){var b=CKEDITOR.plugins.copyformatting;b._addScreenReaderContainer();t||(CKEDITOR.document.appendStyleSheet(this.path+ -"styles/copyformatting.css"),t=!0);a.addContentsCss&&a.addContentsCss(this.path+"styles/copyformatting.css");a.copyFormatting=new b.state(a);a.addCommand("copyFormatting",b.commands.copyFormatting);a.addCommand("applyFormatting",b.commands.applyFormatting);a.ui.addButton("CopyFormatting",{isToggle:!0,label:a.lang.copyformatting.label,command:"copyFormatting",toolbar:"cleanup,0"});a.on("contentDom",function(){var b=a.getCommand("copyFormatting"),d=a.editable(),c=d.isInline()?d:a.document,f=a.ui.get("CopyFormatting"); -d.attachListener(c,"mouseup",function(d){r(d)===CKEDITOR.MOUSE_BUTTON_LEFT&&b.state===CKEDITOR.TRISTATE_ON&&a.execCommand("applyFormatting")});d.attachListener(CKEDITOR.document,"mouseup",function(c){r(c)!==CKEDITOR.MOUSE_BUTTON_LEFT||b.state!==CKEDITOR.TRISTATE_ON||d.contains(c.data.getTarget())||a.execCommand("copyFormatting")});f&&(c=CKEDITOR.document.getById(f._.id),d.attachListener(c,"dblclick",function(){a.execCommand("copyFormatting",{sticky:!0})}),d.attachListener(c,"mouseup",function(a){a.data.stopPropagation()}))}); -a.config.copyFormatting_keystrokeCopy&&a.setKeystroke(a.config.copyFormatting_keystrokeCopy,"copyFormatting");a.on("key",function(b){var d=a.getCommand("copyFormatting");b=b.data.domEvent;b.getKeystroke&&27===b.getKeystroke()&&d.state===CKEDITOR.TRISTATE_ON&&a.execCommand("copyFormatting")});a.copyFormatting.on("extractFormatting",function(e){var d=e.data.element;if(d.contains(a.editable())||d.equals(a.editable()))return e.cancel();d=b._convertElementToStyleDef(d);if(!a.copyFormatting.filter.check(new CKEDITOR.style(d), -!0,!0))return e.cancel();e.data.styleDef=d});a.copyFormatting.on("applyFormatting",function(e){if(!e.data.preventFormatStripping){var d=e.data.range,c=b._extractStylesFromRange(a,d),f=b._determineContext(d),g,h;if(a.copyFormatting._isContextAllowed(f))for(h=0;h <\/span>/g, -""),a.replace(/<.*?>/g,"")):a.getText()}function d(a,c){var f=a,g=/\s/g,h="p br ol ul li td th div caption body".split(" "),m=!1,k=!1,p,n;do{for(p=b(f,c);!p&&f.getParent();){f=f.getParent();if(-1!==l(h,f.getName())){k=m=!0;break}p=b(f,c)}if(p&&p.getName&&-1!==l(h,p.getName())){m=!0;break}f=p}while(f&&f.getStyle&&("none"==f.getStyle("display")||!f.getText()));for(f||(f=a);f.type!==CKEDITOR.NODE_TEXT;)f=!m||c||k?f.getChild(0):f.getChild(f.getChildCount()-1);for(h=e(f);null!=(k=g.exec(h))&&(n=k.index, -c););if("number"!==typeof n&&!m)return d(f,c);if(m)c?n=0:(g=/([\.\b]*$)/,n=(k=g.exec(h))?k.index:h.length);else if(c&&(n+=1,n>h.length))return d(f);return{node:f,offset:n}}var c=/\b\w+\b/ig,f,g,h,m,k;h=m=k=a.startContainer;for(f=e(h);null!=(g=c.exec(f));)if(g.index+g[0].length>=a.startOffset)return a=g.index,c=g.index+g[0].length,0===g.index&&(g=d(h,!0),m=g.node,a=g.offset),c>=f.length&&(f=d(h),k=f.node,c=f.offset),{startNode:m,startOffset:a,endNode:k,endOffset:c};return null},_filterStyles:function(a){var b= -CKEDITOR.tools.isEmpty,e=[],d,c;for(c=0;c` which changes the cursor using inlined styles. */ -.cke_copyformatting_active, -.cke_copyformatting_active.cke_editable, -.cke_copyformatting_active .cke_editable, -.cke_copyformatting_active a, -.cke_copyformatting_active table, -.cke_copyformatting_active div[data-cke-temp], -.cke_copyformatting_tableresize_cursor div[data-cke-temp] { - cursor: url(../cursors/cursor.svg) 12 1, auto !important; -} - -.cke_screen_reader_only { - position: absolute; - clip: rect(1px, 1px, 1px, 1px); - padding: 0; - border: 0; - height: 1px; - width: 1px; - overflow: hidden; -} diff --git a/public/build/ckeditor/plugins/devtools/lang/_translationstatus.txt b/public/build/ckeditor/plugins/devtools/lang/_translationstatus.txt deleted file mode 100644 index bbd52380..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/_translationstatus.txt +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - -bg.js Found: 5 Missing: 0 -cs.js Found: 5 Missing: 0 -cy.js Found: 5 Missing: 0 -da.js Found: 5 Missing: 0 -de.js Found: 5 Missing: 0 -el.js Found: 5 Missing: 0 -eo.js Found: 5 Missing: 0 -et.js Found: 5 Missing: 0 -fa.js Found: 5 Missing: 0 -fi.js Found: 5 Missing: 0 -fr.js Found: 5 Missing: 0 -gu.js Found: 5 Missing: 0 -he.js Found: 5 Missing: 0 -hr.js Found: 5 Missing: 0 -it.js Found: 5 Missing: 0 -nb.js Found: 5 Missing: 0 -nl.js Found: 5 Missing: 0 -no.js Found: 5 Missing: 0 -pl.js Found: 5 Missing: 0 -tr.js Found: 5 Missing: 0 -ug.js Found: 5 Missing: 0 -uk.js Found: 5 Missing: 0 -vi.js Found: 5 Missing: 0 -zh-cn.js Found: 5 Missing: 0 diff --git a/public/build/ckeditor/plugins/devtools/lang/ar.js b/public/build/ckeditor/plugins/devtools/lang/ar.js deleted file mode 100644 index 02037c2c..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ar",{title:"معلومات العنصر",dialogName:"إسم نافذة الحوار",tabName:"إسم التبويب",elementId:"إسم العنصر",elementType:"نوع العنصر"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/az.js b/public/build/ckeditor/plugins/devtools/lang/az.js deleted file mode 100644 index 2000016b..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","az",{title:"Element haqqında məlumat",dialogName:"Açılan pəncərənin adı",tabName:"Vərəqin adı",elementId:"Elementin İD",elementType:"Elementin növü"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/bg.js b/public/build/ckeditor/plugins/devtools/lang/bg.js deleted file mode 100644 index 8e78a631..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","bg",{title:"Информация за елемента",dialogName:"Име на диалоговия прозорец",tabName:"Име на таб",elementId:"ID на елемента",elementType:"Тип на елемента"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ca.js b/public/build/ckeditor/plugins/devtools/lang/ca.js deleted file mode 100644 index 7ca0390e..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ca",{title:"Informació de l'element",dialogName:"Nom de la finestra de quadre de diàleg",tabName:"Nom de la pestanya",elementId:"ID de l'element",elementType:"Tipus d'element"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/cs.js b/public/build/ckeditor/plugins/devtools/lang/cs.js deleted file mode 100644 index e4bc5901..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","cs",{title:"Informace o prvku",dialogName:"Název dialogového okna",tabName:"Název karty",elementId:"ID prvku",elementType:"Typ prvku"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/cy.js b/public/build/ckeditor/plugins/devtools/lang/cy.js deleted file mode 100644 index ff84aeab..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","cy",{title:"Gwybodaeth am yr Elfen",dialogName:"Enw ffenestr y deialog",tabName:"Enw'r tab",elementId:"ID yr Elfen",elementType:"Math yr elfen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/da.js b/public/build/ckeditor/plugins/devtools/lang/da.js deleted file mode 100644 index 3c8a69b9..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","da",{title:"Information på elementet",dialogName:"Dialogboks",tabName:"Tab beskrivelse",elementId:"ID på element",elementType:"Type af element"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/de-ch.js b/public/build/ckeditor/plugins/devtools/lang/de-ch.js deleted file mode 100644 index 8e6478b5..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","de-ch",{title:"Elementinformation",dialogName:"Dialogfenstername",tabName:"Reitername",elementId:"Elementkennung",elementType:"Elementtyp"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/de.js b/public/build/ckeditor/plugins/devtools/lang/de.js deleted file mode 100644 index 4f0d26e9..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","de",{title:"Elementinformation",dialogName:"Dialogfenstername",tabName:"Reitername",elementId:"Elementkennung",elementType:"Elementtyp"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/el.js b/public/build/ckeditor/plugins/devtools/lang/el.js deleted file mode 100644 index 8d12dd5d..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","el",{title:"Πληροφορίες Στοιχείου",dialogName:"Όνομα παραθύρου διαλόγου",tabName:"Όνομα καρτέλας",elementId:"Αναγνωριστικό Στοιχείου",elementType:"Τύπος στοιχείου"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/en-au.js b/public/build/ckeditor/plugins/devtools/lang/en-au.js deleted file mode 100644 index 60536eae..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","en-au",{title:"Element Information",dialogName:"Dialog window name",tabName:"Tab name",elementId:"Element ID",elementType:"Element type"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/en-gb.js b/public/build/ckeditor/plugins/devtools/lang/en-gb.js deleted file mode 100644 index a59624c2..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","en-gb",{title:"Element Information",dialogName:"Dialogue window name",tabName:"Tab name",elementId:"Element ID",elementType:"Element type"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/en.js b/public/build/ckeditor/plugins/devtools/lang/en.js deleted file mode 100644 index fc9e51f0..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","en",{title:"Element Information",dialogName:"Dialog window name",tabName:"Tab name",elementId:"Element ID",elementType:"Element type"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/eo.js b/public/build/ckeditor/plugins/devtools/lang/eo.js deleted file mode 100644 index c00f2447..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","eo",{title:"Informo pri la elemento",dialogName:"Nomo de la dialogfenestro",tabName:"Langetnomo",elementId:"ID de la elemento",elementType:"Tipo de la elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/es-mx.js b/public/build/ckeditor/plugins/devtools/lang/es-mx.js deleted file mode 100644 index 50f0646e..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","es-mx",{title:"Información del elemento",dialogName:"Nombre de la ventana de diálogo",tabName:"Nombre de la pestaña",elementId:"ID del elemento",elementType:"Tipo de elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/es.js b/public/build/ckeditor/plugins/devtools/lang/es.js deleted file mode 100644 index 2e338dc7..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","es",{title:"Información del Elemento",dialogName:"Nombre de la ventana de diálogo",tabName:"Nombre de la pestaña",elementId:"ID del Elemento",elementType:"Tipo del elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/et.js b/public/build/ckeditor/plugins/devtools/lang/et.js deleted file mode 100644 index f8511e93..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","et",{title:"Elemendi andmed",dialogName:"Dialoogiakna nimi",tabName:"Saki nimi",elementId:"Elemendi ID",elementType:"Elemendi liik"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/eu.js b/public/build/ckeditor/plugins/devtools/lang/eu.js deleted file mode 100644 index 062d05a3..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","eu",{title:"Elementuaren informazioa",dialogName:"Elkarrizketa-koadroaren izena",tabName:"Fitxaren izena",elementId:"Elementuaren IDa",elementType:"Elementu mota"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/fa.js b/public/build/ckeditor/plugins/devtools/lang/fa.js deleted file mode 100644 index 497de28b..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","fa",{title:"اطلاعات عنصر",dialogName:"نام پنجره محاوره‌ای",tabName:"نام برگه",elementId:"ID عنصر",elementType:"نوع عنصر"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/fi.js b/public/build/ckeditor/plugins/devtools/lang/fi.js deleted file mode 100644 index 3c233f39..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","fi",{title:"Elementin tiedot",dialogName:"Dialogi-ikkunan nimi",tabName:"Välilehden nimi",elementId:"Elementin ID",elementType:"Elementin tyyppi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/fr-ca.js b/public/build/ckeditor/plugins/devtools/lang/fr-ca.js deleted file mode 100644 index 7f8c52db..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","fr-ca",{title:"Information de l'élément",dialogName:"Nom de la fenêtre",tabName:"Nom de l'onglet",elementId:"ID de l'élément",elementType:"Type de l'élément"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/fr.js b/public/build/ckeditor/plugins/devtools/lang/fr.js deleted file mode 100644 index 08604b4f..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","fr",{title:"Informations sur l'élément",dialogName:"Nom de la boîte de dialogue",tabName:"Nom de l'onglet",elementId:"ID de l'élément",elementType:"Type de l'élément"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/gl.js b/public/build/ckeditor/plugins/devtools/lang/gl.js deleted file mode 100644 index 7aa0dadb..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","gl",{title:"Información do elemento",dialogName:"Nome da xanela de diálogo",tabName:"Nome da lapela",elementId:"ID do elemento",elementType:"Tipo do elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/gu.js b/public/build/ckeditor/plugins/devtools/lang/gu.js deleted file mode 100644 index 944316fd..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/gu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","gu",{title:"પ્રાથમિક માહિતી",dialogName:"વિન્ડોનું નામ",tabName:"ટેબનું નામ",elementId:"પ્રાથમિક આઈડી",elementType:"પ્રાથમિક પ્રકાર"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/he.js b/public/build/ckeditor/plugins/devtools/lang/he.js deleted file mode 100644 index d029f9e0..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","he",{title:"מידע על האלמנט",dialogName:"שם הדיאלוג",tabName:"שם הטאב",elementId:"ID של האלמנט",elementType:"סוג האלמנט"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/hr.js b/public/build/ckeditor/plugins/devtools/lang/hr.js deleted file mode 100644 index 39858fa1..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","hr",{title:"Informacije elementa",dialogName:"Naziv prozora za dijalog",tabName:"Naziv kartice",elementId:"ID elementa",elementType:"Vrsta elementa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/hu.js b/public/build/ckeditor/plugins/devtools/lang/hu.js deleted file mode 100644 index 322f88ff..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","hu",{title:"Elem információ",dialogName:"Párbeszédablak neve",tabName:"Fül neve",elementId:"Elem ID",elementType:"Elem típusa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/id.js b/public/build/ckeditor/plugins/devtools/lang/id.js deleted file mode 100644 index 4b9857f3..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","id",{title:"Informasi Elemen",dialogName:"Nama jendela dialog",tabName:"Nama tab",elementId:"ID Elemen",elementType:"Tipe elemen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/it.js b/public/build/ckeditor/plugins/devtools/lang/it.js deleted file mode 100644 index d474256d..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","it",{title:"Informazioni elemento",dialogName:"Nome finestra di dialogo",tabName:"Nome Tab",elementId:"ID Elemento",elementType:"Tipo elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ja.js b/public/build/ckeditor/plugins/devtools/lang/ja.js deleted file mode 100644 index c011f672..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ja",{title:"エレメント情報",dialogName:"ダイアログウィンドウ名",tabName:"タブ名",elementId:"エレメントID",elementType:"要素タイプ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/km.js b/public/build/ckeditor/plugins/devtools/lang/km.js deleted file mode 100644 index 692d079f..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","km",{title:"ព័ត៌មាន​នៃ​ធាតុ",dialogName:"ឈ្មោះ​ប្រអប់​វីនដូ",tabName:"ឈ្មោះ​ផ្ទាំង",elementId:"អត្តលេខ​ធាតុ",elementType:"ប្រភេទ​ធាតុ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ko.js b/public/build/ckeditor/plugins/devtools/lang/ko.js deleted file mode 100644 index 7c581a77..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ko",{title:"구성 요소 정보",dialogName:"다이얼로그 윈도우 이름",tabName:"탭 이름",elementId:"요소 ID",elementType:"요소 형식"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ku.js b/public/build/ckeditor/plugins/devtools/lang/ku.js deleted file mode 100644 index 0770c29b..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ku",{title:"زانیاری توخم",dialogName:"ناوی پەنجەرەی دیالۆگ",tabName:"ناوی بازدەر تاب",elementId:"ناسنامەی توخم",elementType:"جۆری توخم"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/lt.js b/public/build/ckeditor/plugins/devtools/lang/lt.js deleted file mode 100644 index db3066f5..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","lt",{title:"Elemento informacija",dialogName:"Dialogo lango pavadinimas",tabName:"Auselės pavadinimas",elementId:"Elemento ID",elementType:"Elemento tipas"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/lv.js b/public/build/ckeditor/plugins/devtools/lang/lv.js deleted file mode 100644 index 64f6fb15..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","lv",{title:"Elementa informācija",dialogName:"Dialoga loga nosaukums",tabName:"Cilnes nosaukums",elementId:"Elementa ID",elementType:"Elementa tips"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/nb.js b/public/build/ckeditor/plugins/devtools/lang/nb.js deleted file mode 100644 index c8d46b74..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","nb",{title:"Elementinformasjon",dialogName:"Navn på dialogvindu",tabName:"Navn på fane",elementId:"Element-ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/nl.js b/public/build/ckeditor/plugins/devtools/lang/nl.js deleted file mode 100644 index 41ab3db0..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","nl",{title:"Elementinformatie",dialogName:"Naam dialoogvenster",tabName:"Tabnaam",elementId:"Element ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/no.js b/public/build/ckeditor/plugins/devtools/lang/no.js deleted file mode 100644 index 1fdce253..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","no",{title:"Elementinformasjon",dialogName:"Navn på dialogvindu",tabName:"Navn på fane",elementId:"Element-ID",elementType:"Elementtype"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/oc.js b/public/build/ckeditor/plugins/devtools/lang/oc.js deleted file mode 100644 index f0e6a9c4..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","oc",{title:"Informacions sus l'element",dialogName:"Nom de la bóstia de dialòg",tabName:"Nom de l'onglet",elementId:"ID de l'element",elementType:"Element tipe"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/pl.js b/public/build/ckeditor/plugins/devtools/lang/pl.js deleted file mode 100644 index a10cd29b..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","pl",{title:"Informacja o elemencie",dialogName:"Nazwa okna dialogowego",tabName:"Nazwa zakładki",elementId:"ID elementu",elementType:"Typ elementu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/pt-br.js b/public/build/ckeditor/plugins/devtools/lang/pt-br.js deleted file mode 100644 index 8b06769d..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","pt-br",{title:"Informação do Elemento",dialogName:"Nome da janela de diálogo",tabName:"Nome da aba",elementId:"ID do Elemento",elementType:"Tipo do elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/pt.js b/public/build/ckeditor/plugins/devtools/lang/pt.js deleted file mode 100644 index 82cd6ea2..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","pt",{title:"Informação do elemento",dialogName:"Nome da janela de diálogo",tabName:"Nome do separador",elementId:"ID do elemento",elementType:"Tipo de elemento"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ro.js b/public/build/ckeditor/plugins/devtools/lang/ro.js deleted file mode 100644 index 2f719f28..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ro",{title:"Informația elementului",dialogName:"Numele ferestrei de dialog",tabName:"Denumire de tab",elementId:"ID Element",elementType:"Tipul elementului"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ru.js b/public/build/ckeditor/plugins/devtools/lang/ru.js deleted file mode 100644 index 1d6bd01f..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ru",{title:"Информация об элементе",dialogName:"Имя окна диалога",tabName:"Имя вкладки",elementId:"ID элемента",elementType:"Тип элемента"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/si.js b/public/build/ckeditor/plugins/devtools/lang/si.js deleted file mode 100644 index c75042f0..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","si",{title:"මුලද්‍රව්‍ය ",dialogName:"දෙබස් කවුළුවේ නම",tabName:"තීරුවේ නම",elementId:"මුලද්‍රව්‍ය කේතය",elementType:"මුලද්‍රව්‍ය වර්ගය"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sk.js b/public/build/ckeditor/plugins/devtools/lang/sk.js deleted file mode 100644 index f6d48582..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sk",{title:"Informácie o prvku",dialogName:"Názov okna dialógu",tabName:"Názov záložky",elementId:"ID prvku",elementType:"Typ prvku"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sl.js b/public/build/ckeditor/plugins/devtools/lang/sl.js deleted file mode 100644 index 596dd989..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sl",{title:"Podatki elementa",dialogName:"Ime pogovornega okna",tabName:"Ime zavihka",elementId:"ID elementa",elementType:"Vrsta elementa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sq.js b/public/build/ckeditor/plugins/devtools/lang/sq.js deleted file mode 100644 index 00f74430..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sq",{title:"Të dhënat e elementit",dialogName:"Emri i dritares së dialogut",tabName:"Emri i fletës",elementId:"ID e elementit",elementType:"Lloji i elementit"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sr-latn.js b/public/build/ckeditor/plugins/devtools/lang/sr-latn.js deleted file mode 100644 index 31392027..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sr-latn",{title:"Informacija o elementu",dialogName:"Naziv prozora sa dijalogom",tabName:"Naziv kartice",elementId:"ID elementa",elementType:"Tip elementa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sr.js b/public/build/ckeditor/plugins/devtools/lang/sr.js deleted file mode 100644 index baebd52d..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sr",{title:"Информација о елементу",dialogName:"Назив прозора са дијалогом",tabName:"Назив картице",elementId:"ИД елемента",elementType:"Тип елемента"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/sv.js b/public/build/ckeditor/plugins/devtools/lang/sv.js deleted file mode 100644 index e4560307..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","sv",{title:"Elementinformation",dialogName:"Dialogrutans namn",tabName:"Fliknamn",elementId:"Element-ID",elementType:"Element-typ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/tr.js b/public/build/ckeditor/plugins/devtools/lang/tr.js deleted file mode 100644 index 9371f502..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","tr",{title:"Eleman Bilgisi",dialogName:"İletişim pencere ismi",tabName:"Sekme adı",elementId:"Eleman ID",elementType:"Eleman türü"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/tt.js b/public/build/ckeditor/plugins/devtools/lang/tt.js deleted file mode 100644 index 9e382546..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","tt",{title:"Элемент тасвирламасы",dialogName:"Диалог тәрәзәсе исеме",tabName:"Өстәмә бит исеме",elementId:"Элемент идентификаторы",elementType:"Элемент төре"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/ug.js b/public/build/ckeditor/plugins/devtools/lang/ug.js deleted file mode 100644 index 4323c885..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","ug",{title:"ئېلېمېنت ئۇچۇرى",dialogName:"سۆزلەشكۈ كۆزنەك ئاتى",tabName:"Tab ئاتى",elementId:"ئېلېمېنت كىملىكى",elementType:"ئېلېمېنت تىپى"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/uk.js b/public/build/ckeditor/plugins/devtools/lang/uk.js deleted file mode 100644 index 4af5b2e3..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","uk",{title:"Відомості про Елемент",dialogName:"Заголовок діалогового вікна",tabName:"Назва вкладки",elementId:"Ідентифікатор Елемента",elementType:"Тип Елемента"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/vi.js b/public/build/ckeditor/plugins/devtools/lang/vi.js deleted file mode 100644 index 3258a5e2..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","vi",{title:"Thông tin thành ph",dialogName:"Tên hộp tho",tabName:"Tên th",elementId:"Mã thành ph",elementType:"Loại thành ph"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/zh-cn.js b/public/build/ckeditor/plugins/devtools/lang/zh-cn.js deleted file mode 100644 index 519bafe2..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","zh-cn",{title:"元素信息",dialogName:"对话框窗口名称",tabName:"选项卡名称",elementId:"元素 ID",elementType:"元素类型"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/lang/zh.js b/public/build/ckeditor/plugins/devtools/lang/zh.js deleted file mode 100644 index b6087966..00000000 --- a/public/build/ckeditor/plugins/devtools/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("devtools","zh",{title:"元件資訊",dialogName:"對話視窗名稱",tabName:"標籤名稱",elementId:"元件 ID",elementType:"元件類型"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/devtools/plugin.js b/public/build/ckeditor/plugins/devtools/plugin.js deleted file mode 100644 index a7e9e68f..00000000 --- a/public/build/ckeditor/plugins/devtools/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.add("devtools",{lang:"ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,gu,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",init:function(k){k._.showDialogDefinitionTooltips=1},onLoad:function(){CKEDITOR.document.appendStyleText(CKEDITOR.config.devtools_styles||"#cke_tooltip { padding: 5px; border: 2px solid #333; background: #ffffff }#cke_tooltip h2 { font-size: 1.1em; border-bottom: 1px solid; margin: 0; padding: 1px; }#cke_tooltip ul { padding: 0pt; list-style-type: none; }")}}); -(function(){function k(a,c,b,f){a=a.lang.devtools;var l='\x3ca href\x3d"https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_dialog_definition_'+(b?"text"==b.type?"textInput":b.type:"content")+'.html" target\x3d"_blank" rel\x3d"noopener noreferrer"\x3e'+(b?b.type:"content")+"\x3c/a\x3e";c="\x3ch2\x3e"+a.title+"\x3c/h2\x3e\x3cul\x3e\x3cli\x3e\x3cstrong\x3e"+a.dialogName+"\x3c/strong\x3e : "+c.getName()+"\x3c/li\x3e\x3cli\x3e\x3cstrong\x3e"+a.tabName+"\x3c/strong\x3e : "+f+"\x3c/li\x3e";b&&(c+="\x3cli\x3e\x3cstrong\x3e"+ -a.elementId+"\x3c/strong\x3e : "+b.id+"\x3c/li\x3e");c+="\x3cli\x3e\x3cstrong\x3e"+a.elementType+"\x3c/strong\x3e : "+l+"\x3c/li\x3e";return c+"\x3c/ul\x3e"}function m(d,c,b,f,l,g){var e=c.getDocumentPosition(),h={"z-index":CKEDITOR.dialog._.currentZIndex+10,top:e.y+c.getSize("height")+"px"};a.setHtml(d(b,f,l,g));a.show();"rtl"==b.lang.dir?(d=CKEDITOR.document.getWindow().getViewPaneSize(),h.right=d.width-e.x-c.getSize("width")+"px"):h.left=e.x+"px";a.setStyles(h)}var a;CKEDITOR.on("reset",function(){a&& -a.remove();a=null});CKEDITOR.on("dialogDefinition",function(d){var c=d.editor;if(c._.showDialogDefinitionTooltips){a||(a=CKEDITOR.dom.element.createFromHtml('\x3cdiv id\x3d"cke_tooltip" tabindex\x3d"-1" style\x3d"position: absolute"\x3e\x3c/div\x3e',CKEDITOR.document),a.hide(),a.on("mouseover",function(){this.show()}),a.on("mouseout",function(){this.hide()}),a.appendTo(CKEDITOR.document.getBody()));var b=d.data.definition.dialog,f=c.config.devtools_textCallback||k;b.on("load",function(){for(var d= -b.parts.tabs.getChildren(),g,e=0,h=d.count();e img { - outline: none; - border: 1px solid #0782C1; - box-sizing: border-box; - padding: 1px; -} - -.cke_widget_wrapper_easyimage figure { - margin: 0; -} - -.easyimage img, .cke_widget_uploadeasyimage img { - display: block; - height: auto; - margin: 0 auto; - max-width: 100%; -} - -.cke_widget_wrapper_easyimage-side, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-side) > .easyimage-side, -.cke_widget_wrapper_easyimage-align-right, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-right) > .easyimage-align-right { - /* - The :not() selector will be used for Easy Image content ouside of the editor, for example: when the editor was destroyed. - See https://github.com/ckeditor/ckeditor4/pull/1150#discussion_r150415261 for more details. - */ - float: right; - max-width: 50%; - /* - In case of placement inside the parent container like a table cell, 'min-width' is needed to prevent the widget from having - tiny sizes. The `em` unit is used so it works well and has proper proportions to the textual content around (#1553). - */ - min-width: 10em; - margin-left: 1.5em; -} - -/* -Overwrite 'max-width: 50%' with 'max-width: 50vw' to prevent the native Chrome bug: -https://bugs.chromium.org/p/chromium/issues/detail?id=803045 (#1550). -*/ -body.cke_editable > .cke_widget_wrapper_easyimage-side { - max-width: 50vw; -} - -.cke_widget_wrapper_easyimage-align-left, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-left) > .easyimage-align-left { - float: left; - max-width: 50%; - min-width: 10em; - margin-right: 1.5em; -} - -.cke_widget_wrapper_easyimage-align-center, :not(.cke_widget_wrapper_easyimage):not(.cke_widget_wrapper_easyimage-align-center) > .easyimage-align-center { - margin: 0 auto; - max-width: 90%; -} - -.easyimage .cke_widget_editable { - background-color: #f7f7f7; - /* Add border so when caption is focused, blue border does not cause flickering. */ - border: 1px solid #f7f7f7; - color: #333; - padding: .8em; -} - -.cke_widget_wrapper:hover .easyimage .cke_widget_editable { - outline: 3px solid transparent; -} - -.cke_widget_wrapper .easyimage .cke_widget_editable.cke_widget_editable_focused { - background-color: #fff; - border-color: #48a3f5; - outline: none; -} - -/* Loaders */ - -.cke_widget_element.easyimage { - position: relative; -} - -.cke_loader { - position: absolute; - top: 0px; - left: 0px; - right: 0px; -} - -.cke_loader .cke_bar { - height: 10px; - background: #6a9ed1; - width: 0; -} - -/* Fancy opacity effect discussed in #1533. Transition is assigned in this awkward way so that it **does not** happen for -the initial render, otherwise it would start transitioning from opacity 1 to 0.x upon the first render. */ - -.cke_widget_wrapper_easyimage:not(.cke_widget_wrapper_uploading) figure img { - transition: opacity 0.3s ease-in-out; -} - -.cke_widget_wrapper_easyimage.cke_widget_wrapper_uploading figure img { - opacity: 0.75; -} diff --git a/public/build/ckeditor/plugins/editorplaceholder/plugin.js b/public/build/ckeditor/plugins/editorplaceholder/plugin.js deleted file mode 100644 index ef332470..00000000 --- a/public/build/ckeditor/plugins/editorplaceholder/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function c(a,b,d){var c=e;d&&(c=CKEDITOR.tools.debounce(e,d));a.on(b,c,null,{editor:a})}function e(a){var b=a.listenerData.editor;a=b.focusManager.hasFocus;var c=b.editable(),e=b.config.editorplaceholder,f=/((?:.|[\n\r])*?)<\/body>/i,g=b.config.fullPage,b=b.getData();g&&(f=b.match(f))&&1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/public/build/ckeditor/plugins/emoji/emoji.json b/public/build/ckeditor/plugins/emoji/emoji.json deleted file mode 100644 index 02be751e..00000000 --- a/public/build/ckeditor/plugins/emoji/emoji.json +++ /dev/null @@ -1 +0,0 @@ -[{"id":":grinning_face:","symbol":"😀","group":"people","keywords":["face","grin","grinning face"]},{"id":":beaming_face_with_smiling_eyes:","symbol":"😁","group":"people","keywords":["beaming face with smiling eyes","eye","face","grin","smile"]},{"id":":face_with_tears_of_joy:","symbol":"😂","group":"people","keywords":["face","face with tears of joy","joy","laugh","tear"]},{"id":":rolling_on_the_floor_laughing:","symbol":"🤣","group":"people","keywords":["face","floor","laugh","rolling","rolling on the floor laughing"]},{"id":":grinning_face_with_big_eyes:","symbol":"😃","group":"people","keywords":["face","grinning face with big eyes","mouth","open","smile"]},{"id":":grinning_face_with_smiling_eyes:","symbol":"😄","group":"people","keywords":["eye","face","grinning face with smiling eyes","mouth","open","smile"]},{"id":":grinning_face_with_sweat:","symbol":"😅","group":"people","keywords":["cold","face","grinning face with sweat","open","smile","sweat"]},{"id":":grinning_squinting_face:","symbol":"😆","group":"people","keywords":["face","grinning squinting face","laugh","mouth","satisfied","smile"]},{"id":":winking_face:","symbol":"😉","group":"people","keywords":["face","wink","winking face"]},{"id":":smiling_face_with_smiling_eyes:","symbol":"😊","group":"people","keywords":["blush","eye","face","smile","smiling face with smiling eyes"]},{"id":":face_savoring_food:","symbol":"😋","group":"people","keywords":["delicious","face","face savoring food","savouring","smile","yum"]},{"id":":smiling_face_with_sunglasses:","symbol":"😎","group":"people","keywords":["bright","cool","face","smiling face with sunglasses","sun","sunglasses"]},{"id":":smiling_face_with_heart-eyes:","symbol":"😍","group":"people","keywords":["eye","face","love","smile","smiling face with heart-eyes"]},{"id":":face_blowing_a_kiss:","symbol":"😘","group":"people","keywords":["face","face blowing a kiss","kiss"]},{"id":":kissing_face:","symbol":"😗","group":"people","keywords":["face","kiss","kissing face"]},{"id":":kissing_face_with_smiling_eyes:","symbol":"😙","group":"people","keywords":["eye","face","kiss","kissing face with smiling eyes","smile"]},{"id":":kissing_face_with_closed_eyes:","symbol":"😚","group":"people","keywords":["closed","eye","face","kiss","kissing face with closed eyes"]},{"id":":smiling_face:","symbol":"☺","group":"people","keywords":["face","outlined","relaxed","smile","smiling face"]},{"id":":slightly_smiling_face:","symbol":"🙂","group":"people","keywords":["face","slightly smiling face","smile"]},{"id":":hugging_face:","symbol":"🤗","group":"people","keywords":["face","hug","hugging"]},{"id":":star-struck:","symbol":"🤩","group":"people","keywords":["eyes","face","grinning","star","star-struck",""]},{"id":":thinking_face:","symbol":"🤔","group":"people","keywords":["face","thinking"]},{"id":":face_with_raised_eyebrow:","symbol":"🤨","group":"people","keywords":["distrust","face with raised eyebrow","skeptic",""]},{"id":":neutral_face:","symbol":"😐","group":"people","keywords":["deadpan","face","neutral"]},{"id":":expressionless_face:","symbol":"😑","group":"people","keywords":["expressionless","face","inexpressive","unexpressive"]},{"id":":face_without_mouth:","symbol":"😶","group":"people","keywords":["face","face without mouth","mouth","quiet","silent"]},{"id":":face_with_rolling_eyes:","symbol":"🙄","group":"people","keywords":["eyes","face","face with rolling eyes","rolling"]},{"id":":smirking_face:","symbol":"😏","group":"people","keywords":["face","smirk","smirking face"]},{"id":":persevering_face:","symbol":"😣","group":"people","keywords":["face","persevere","persevering face"]},{"id":":sad_but_relieved_face:","symbol":"😥","group":"people","keywords":["disappointed","face","relieved","sad but relieved face","whew"]},{"id":":face_with_open_mouth:","symbol":"😮","group":"people","keywords":["face","face with open mouth","mouth","open","sympathy"]},{"id":":zipper-mouth_face:","symbol":"🤐","group":"people","keywords":["face","mouth","zipper","zipper-mouth face"]},{"id":":hushed_face:","symbol":"😯","group":"people","keywords":["face","hushed","stunned","surprised"]},{"id":":sleepy_face:","symbol":"😪","group":"people","keywords":["face","sleep","sleepy face"]},{"id":":tired_face:","symbol":"😫","group":"people","keywords":["face","tired"]},{"id":":sleeping_face:","symbol":"😴","group":"people","keywords":["face","sleep","sleeping face","zzz"]},{"id":":relieved_face:","symbol":"😌","group":"people","keywords":["face","relieved"]},{"id":":face_with_tongue:","symbol":"😛","group":"people","keywords":["face","face with tongue","tongue"]},{"id":":winking_face_with_tongue:","symbol":"😜","group":"people","keywords":["eye","face","joke","tongue","wink","winking face with tongue"]},{"id":":squinting_face_with_tongue:","symbol":"😝","group":"people","keywords":["eye","face","horrible","squinting face with tongue","taste","tongue"]},{"id":":drooling_face:","symbol":"🤤","group":"people","keywords":["drooling","face"]},{"id":":unamused_face:","symbol":"😒","group":"people","keywords":["face","unamused","unhappy"]},{"id":":downcast_face_with_sweat:","symbol":"😓","group":"people","keywords":["cold","downcast face with sweat","face","sweat"]},{"id":":pensive_face:","symbol":"😔","group":"people","keywords":["dejected","face","pensive"]},{"id":":confused_face:","symbol":"😕","group":"people","keywords":["confused","face"]},{"id":":upside-down_face:","symbol":"🙃","group":"people","keywords":["face","upside-down"]},{"id":":money-mouth_face:","symbol":"🤑","group":"people","keywords":["face","money","money-mouth face","mouth"]},{"id":":astonished_face:","symbol":"😲","group":"people","keywords":["astonished","face","shocked","totally"]},{"id":":frowning_face:","symbol":"☹","group":"people","keywords":["face","frown","frowning face"]},{"id":":slightly_frowning_face:","symbol":"🙁","group":"people","keywords":["face","frown","slightly frowning face"]},{"id":":confounded_face:","symbol":"😖","group":"people","keywords":["confounded","face"]},{"id":":disappointed_face:","symbol":"😞","group":"people","keywords":["disappointed","face"]},{"id":":worried_face:","symbol":"😟","group":"people","keywords":["face","worried"]},{"id":":face_with_steam_from_nose:","symbol":"😤","group":"people","keywords":["face","face with steam from nose","triumph","won"]},{"id":":crying_face:","symbol":"😢","group":"people","keywords":["cry","crying face","face","sad","tear"]},{"id":":loudly_crying_face:","symbol":"😭","group":"people","keywords":["cry","face","loudly crying face","sad","sob","tear"]},{"id":":frowning_face_with_open_mouth:","symbol":"😦","group":"people","keywords":["face","frown","frowning face with open mouth","mouth","open"]},{"id":":anguished_face:","symbol":"😧","group":"people","keywords":["anguished","face"]},{"id":":fearful_face:","symbol":"😨","group":"people","keywords":["face","fear","fearful","scared"]},{"id":":weary_face:","symbol":"😩","group":"people","keywords":["face","tired","weary"]},{"id":":exploding_head:","symbol":"🤯","group":"people","keywords":["exploding head","shocked"]},{"id":":grimacing_face:","symbol":"😬","group":"people","keywords":["face","grimace","grimacing face"]},{"id":":anxious_face_with_sweat:","symbol":"😰","group":"people","keywords":["anxious face with sweat","blue","cold","face","rushed","sweat"]},{"id":":face_screaming_in_fear:","symbol":"😱","group":"people","keywords":["face","face screaming in fear","fear","munch","scared","scream"]},{"id":":flushed_face:","symbol":"😳","group":"people","keywords":["dazed","face","flushed"]},{"id":":zany_face:","symbol":"🤪","group":"people","keywords":["eye","goofy","large","small","zany face"]},{"id":":dizzy_face:","symbol":"😵","group":"people","keywords":["dizzy","face"]},{"id":":pouting_face:","symbol":"😡","group":"people","keywords":["angry","face","mad","pouting","rage","red"]},{"id":":angry_face:","symbol":"😠","group":"people","keywords":["angry","face","mad"]},{"id":":face_with_symbols_on_mouth:","symbol":"🤬","group":"people","keywords":["face with symbols on mouth","swearing",""]},{"id":":face_with_medical_mask:","symbol":"😷","group":"people","keywords":["cold","doctor","face","face with medical mask","mask","sick"]},{"id":":face_with_thermometer:","symbol":"🤒","group":"people","keywords":["face","face with thermometer","ill","sick","thermometer"]},{"id":":face_with_head-bandage:","symbol":"🤕","group":"people","keywords":["bandage","face","face with head-bandage","hurt","injury"]},{"id":":nauseated_face:","symbol":"🤢","group":"people","keywords":["face","nauseated","vomit"]},{"id":":face_vomiting:","symbol":"🤮","group":"people","keywords":["face vomiting","sick","vomit"]},{"id":":sneezing_face:","symbol":"🤧","group":"people","keywords":["face","gesundheit","sneeze","sneezing face"]},{"id":":smiling_face_with_halo:","symbol":"😇","group":"people","keywords":["angel","face","fantasy","halo","innocent","smiling face with halo"]},{"id":":cowboy_hat_face:","symbol":"🤠","group":"people","keywords":["cowboy","cowgirl","face","hat"]},{"id":":lying_face:","symbol":"🤥","group":"people","keywords":["face","lie","lying face","pinocchio"]},{"id":":shushing_face:","symbol":"🤫","group":"people","keywords":["quiet","shush","shushing face"]},{"id":":face_with_hand_over_mouth:","symbol":"🤭","group":"people","keywords":["face with hand over mouth","whoops",""]},{"id":":face_with_monocle:","symbol":"🧐","group":"people","keywords":["face with monocle","stuffy",""]},{"id":":nerd_face:","symbol":"🤓","group":"people","keywords":["face","geek","nerd"]},{"id":":smiling_face_with_horns:","symbol":"😈","group":"people","keywords":["face","fairy tale","fantasy","horns","smile","smiling face with horns"]},{"id":":angry_face_with_horns:","symbol":"👿","group":"people","keywords":["angry face with horns","demon","devil","face","fantasy","imp"]},{"id":":clown_face:","symbol":"🤡","group":"people","keywords":["clown","face"]},{"id":":ogre:","symbol":"👹","group":"people","keywords":["creature","face","fairy tale","fantasy","monster","ogre",""]},{"id":":goblin:","symbol":"👺","group":"people","keywords":["creature","face","fairy tale","fantasy","goblin","monster"]},{"id":":skull:","symbol":"💀","group":"people","keywords":["death","face","fairy tale","monster","skull"]},{"id":":skull_and_crossbones:","symbol":"☠","group":"people","keywords":["crossbones","death","face","monster","skull","skull and crossbones"]},{"id":":ghost:","symbol":"👻","group":"people","keywords":["creature","face","fairy tale","fantasy","ghost","monster"]},{"id":":alien:","symbol":"👽","group":"people","keywords":["alien","creature","extraterrestrial","face","fantasy","ufo"]},{"id":":alien_monster:","symbol":"👾","group":"people","keywords":["alien","creature","extraterrestrial","face","monster","ufo"]},{"id":":robot_face:","symbol":"🤖","group":"people","keywords":["face","monster","robot"]},{"id":":pile_of_poo:","symbol":"💩","group":"people","keywords":["dung","face","monster","pile of poo","poo","poop"]},{"id":":grinning_cat_face:","symbol":"😺","group":"people","keywords":["cat","face","grinning cat face","mouth","open","smile"]},{"id":":grinning_cat_face_with_smiling_eyes:","symbol":"😸","group":"people","keywords":["cat","eye","face","grin","grinning cat face with smiling eyes","smile"]},{"id":":cat_face_with_tears_of_joy:","symbol":"😹","group":"people","keywords":["cat","cat face with tears of joy","face","joy","tear"]},{"id":":smiling_cat_face_with_heart-eyes:","symbol":"😻","group":"people","keywords":["cat","eye","face","love","smile","smiling cat face with heart-eyes"]},{"id":":cat_face_with_wry_smile:","symbol":"😼","group":"people","keywords":["cat","cat face with wry smile","face","ironic","smile","wry"]},{"id":":kissing_cat_face:","symbol":"😽","group":"people","keywords":["cat","eye","face","kiss","kissing cat face"]},{"id":":weary_cat_face:","symbol":"🙀","group":"people","keywords":["cat","face","oh","surprised","weary"]},{"id":":crying_cat_face:","symbol":"😿","group":"people","keywords":["cat","cry","crying cat face","face","sad","tear"]},{"id":":pouting_cat_face:","symbol":"😾","group":"people","keywords":["cat","face","pouting"]},{"id":":see-no-evil_monkey:","symbol":"🙈","group":"people","keywords":["evil","face","forbidden","monkey","see","see-no-evil monkey"]},{"id":":hear-no-evil_monkey:","symbol":"🙉","group":"people","keywords":["evil","face","forbidden","hear","hear-no-evil monkey","monkey"]},{"id":":speak-no-evil_monkey:","symbol":"🙊","group":"people","keywords":["evil","face","forbidden","monkey","speak","speak-no-evil monkey"]},{"id":":baby:","symbol":"👶","group":"people","keywords":["baby","young"]},{"id":":child:","symbol":"🧒","group":"people","keywords":["child","gender-neutral","unspecified gender","young"]},{"id":":boy:","symbol":"👦","group":"people","keywords":["boy","young"]},{"id":":girl:","symbol":"👧","group":"people","keywords":["girl","Virgo","young","zodiac"]},{"id":":person:","symbol":"🧑","group":"people","keywords":["adult","gender-neutral","person","unspecified gender"]},{"id":":person_blond_hair:","symbol":"👱","group":"people","keywords":["blond","blond-haired person","person: blond hair"]},{"id":":man:","symbol":"👨","group":"people","keywords":["adult","man"]},{"id":":man_blond_hair:","symbol":"👱‍♂️","group":"people","keywords":["blond","blond-haired man","man","man: blond hair"]},{"id":":man_beard:","symbol":"🧔","group":"people","keywords":["beard","man: beard","person",""]},{"id":":woman:","symbol":"👩","group":"people","keywords":["adult","woman"]},{"id":":woman_blond_hair:","symbol":"👱‍♀️","group":"people","keywords":["blond-haired woman","blonde","woman","woman: blond hair"]},{"id":":older_person:","symbol":"🧓","group":"people","keywords":["adult","gender-neutral","old","older person","unspecified gender"]},{"id":":old_man:","symbol":"👴","group":"people","keywords":["adult","man","old"]},{"id":":old_woman:","symbol":"👵","group":"people","keywords":["adult","old","woman"]},{"id":":man_health_worker:","symbol":"👨‍⚕️","group":"people","keywords":["doctor","healthcare","man","man health worker","nurse","therapist"]},{"id":":woman_health_worker:","symbol":"👩‍⚕️","group":"people","keywords":["doctor","healthcare","nurse","therapist","woman","woman health worker"]},{"id":":man_student:","symbol":"👨‍🎓","group":"people","keywords":["graduate","man","student"]},{"id":":woman_student:","symbol":"👩‍🎓","group":"people","keywords":["graduate","student","woman"]},{"id":":man_teacher:","symbol":"👨‍🏫","group":"people","keywords":["instructor","man","professor","teacher"]},{"id":":woman_teacher:","symbol":"👩‍🏫","group":"people","keywords":["instructor","professor","teacher","woman"]},{"id":":man_judge:","symbol":"👨‍⚖️","group":"people","keywords":["justice","man","man judge","scales"]},{"id":":woman_judge:","symbol":"👩‍⚖️","group":"people","keywords":["judge","scales","woman"]},{"id":":man_farmer:","symbol":"👨‍🌾","group":"people","keywords":["farmer","gardener","man","rancher"]},{"id":":woman_farmer:","symbol":"👩‍🌾","group":"people","keywords":["farmer","gardener","rancher","woman"]},{"id":":man_cook:","symbol":"👨‍🍳","group":"people","keywords":["chef","cook","man"]},{"id":":woman_cook:","symbol":"👩‍🍳","group":"people","keywords":["chef","cook","woman"]},{"id":":man_mechanic:","symbol":"👨‍🔧","group":"people","keywords":["electrician","man","mechanic","plumber","tradesperson"]},{"id":":woman_mechanic:","symbol":"👩‍🔧","group":"people","keywords":["electrician","mechanic","plumber","tradesperson","woman"]},{"id":":man_factory_worker:","symbol":"👨‍🏭","group":"people","keywords":["assembly","factory","industrial","man","worker"]},{"id":":woman_factory_worker:","symbol":"👩‍🏭","group":"people","keywords":["assembly","factory","industrial","woman","worker"]},{"id":":man_office_worker:","symbol":"👨‍💼","group":"people","keywords":["architect","business","man","man office worker","manager","white-collar"]},{"id":":woman_office_worker:","symbol":"👩‍💼","group":"people","keywords":["architect","business","manager","white-collar","woman","woman office worker"]},{"id":":man_scientist:","symbol":"👨‍🔬","group":"people","keywords":["biologist","chemist","engineer","man","physicist","scientist"]},{"id":":woman_scientist:","symbol":"👩‍🔬","group":"people","keywords":["biologist","chemist","engineer","physicist","scientist","woman"]},{"id":":man_technologist:","symbol":"👨‍💻","group":"people","keywords":["coder","developer","inventor","man","software","technologist"]},{"id":":woman_technologist:","symbol":"👩‍💻","group":"people","keywords":["coder","developer","inventor","software","technologist","woman"]},{"id":":man_singer:","symbol":"👨‍🎤","group":"people","keywords":["actor","entertainer","man","rock","singer","star"]},{"id":":woman_singer:","symbol":"👩‍🎤","group":"people","keywords":["actor","entertainer","rock","singer","star","woman"]},{"id":":man_artist:","symbol":"👨‍🎨","group":"people","keywords":["artist","man","palette"]},{"id":":woman_artist:","symbol":"👩‍🎨","group":"people","keywords":["artist","palette","woman"]},{"id":":man_pilot:","symbol":"👨‍✈️","group":"people","keywords":["man","pilot","plane"]},{"id":":woman_pilot:","symbol":"👩‍✈️","group":"people","keywords":["pilot","plane","woman"]},{"id":":man_astronaut:","symbol":"👨‍🚀","group":"people","keywords":["astronaut","man","rocket"]},{"id":":woman_astronaut:","symbol":"👩‍🚀","group":"people","keywords":["astronaut","rocket","woman"]},{"id":":man_firefighter:","symbol":"👨‍🚒","group":"people","keywords":["firefighter","firetruck","man"]},{"id":":woman_firefighter:","symbol":"👩‍🚒","group":"people","keywords":["firefighter","firetruck","woman"]},{"id":":police_officer:","symbol":"👮","group":"people","keywords":["cop","officer","police"]},{"id":":man_police_officer:","symbol":"👮‍♂️","group":"people","keywords":["cop","man","officer","police"]},{"id":":woman_police_officer:","symbol":"👮‍♀️","group":"people","keywords":["cop","officer","police","woman"]},{"id":":detective:","symbol":"🕵","group":"people","keywords":["detective","sleuth","spy"]},{"id":":man_detective:","symbol":"🕵️‍♂️","group":"people","keywords":["detective","man","sleuth","spy"]},{"id":":woman_detective:","symbol":"🕵️‍♀️","group":"people","keywords":["detective","sleuth","spy","woman"]},{"id":":guard:","symbol":"💂","group":"people","keywords":["guard"]},{"id":":man_guard:","symbol":"💂‍♂️","group":"people","keywords":["guard","man"]},{"id":":woman_guard:","symbol":"💂‍♀️","group":"people","keywords":["guard","woman"]},{"id":":construction_worker:","symbol":"👷","group":"people","keywords":["construction","hat","worker"]},{"id":":man_construction_worker:","symbol":"👷‍♂️","group":"people","keywords":["construction","man","worker"]},{"id":":woman_construction_worker:","symbol":"👷‍♀️","group":"people","keywords":["construction","woman","worker"]},{"id":":prince:","symbol":"🤴","group":"people","keywords":["prince"]},{"id":":princess:","symbol":"👸","group":"people","keywords":["fairy tale","fantasy","princess"]},{"id":":person_wearing_turban:","symbol":"👳","group":"people","keywords":["person wearing turban","turban"]},{"id":":man_wearing_turban:","symbol":"👳‍♂️","group":"people","keywords":["man","man wearing turban","turban"]},{"id":":woman_wearing_turban:","symbol":"👳‍♀️","group":"people","keywords":["turban","woman","woman wearing turban"]},{"id":":man_with_chinese_cap:","symbol":"👲","group":"people","keywords":["gua pi mao","hat","man","man with Chinese cap"]},{"id":":woman_with_headscarf:","symbol":"🧕","group":"people","keywords":["headscarf","hijab","mantilla","tichel","woman with headscarf",""]},{"id":":man_in_tuxedo:","symbol":"🤵","group":"people","keywords":["groom","man","man in tuxedo","tuxedo"]},{"id":":bride_with_veil:","symbol":"👰","group":"people","keywords":["bride","bride with veil","veil","wedding"]},{"id":":pregnant_woman:","symbol":"🤰","group":"people","keywords":["pregnant","woman"]},{"id":":breast-feeding:","symbol":"🤱","group":"people","keywords":["baby","breast","breast-feeding","nursing"]},{"id":":baby_angel:","symbol":"👼","group":"people","keywords":["angel","baby","face","fairy tale","fantasy"]},{"id":":santa_claus:","symbol":"🎅","group":"people","keywords":["celebration","Christmas","claus","father","santa","Santa Claus"]},{"id":":mrs._claus:","symbol":"🤶","group":"people","keywords":["celebration","Christmas","claus","mother","Mrs.","Mrs. Claus"]},{"id":":mage:","symbol":"🧙","group":"people","keywords":["mage","sorcerer","sorceress","witch","wizard"]},{"id":":man_mage:","symbol":"🧙‍♂️","group":"people","keywords":["man mage","sorcerer","wizard"]},{"id":":woman_mage:","symbol":"🧙‍♀️","group":"people","keywords":["sorceress","witch","woman mage"]},{"id":":fairy:","symbol":"🧚","group":"people","keywords":["fairy","Oberon","Puck","Titania"]},{"id":":man_fairy:","symbol":"🧚‍♂️","group":"people","keywords":["man fairy","Oberon","Puck"]},{"id":":woman_fairy:","symbol":"🧚‍♀️","group":"people","keywords":["Titania","woman fairy"]},{"id":":vampire:","symbol":"🧛","group":"people","keywords":["Dracula","undead","vampire"]},{"id":":man_vampire:","symbol":"🧛‍♂️","group":"people","keywords":["Dracula","man vampire","undead"]},{"id":":woman_vampire:","symbol":"🧛‍♀️","group":"people","keywords":["undead","woman vampire"]},{"id":":merperson:","symbol":"🧜","group":"people","keywords":["mermaid","merman","merperson","merwoman"]},{"id":":merman:","symbol":"🧜‍♂️","group":"people","keywords":["merman","Triton"]},{"id":":mermaid:","symbol":"🧜‍♀️","group":"people","keywords":["mermaid","merwoman"]},{"id":":elf:","symbol":"🧝","group":"people","keywords":["elf","magical",""]},{"id":":man_elf:","symbol":"🧝‍♂️","group":"people","keywords":["magical","man elf"]},{"id":":woman_elf:","symbol":"🧝‍♀️","group":"people","keywords":["magical","woman elf"]},{"id":":genie:","symbol":"🧞","group":"people","keywords":["djinn","genie",""]},{"id":":man_genie:","symbol":"🧞‍♂️","group":"people","keywords":["djinn","man genie"]},{"id":":woman_genie:","symbol":"🧞‍♀️","group":"people","keywords":["djinn","woman genie"]},{"id":":zombie:","symbol":"🧟","group":"people","keywords":["undead","walking dead","zombie",""]},{"id":":man_zombie:","symbol":"🧟‍♂️","group":"people","keywords":["man zombie","undead","walking dead"]},{"id":":woman_zombie:","symbol":"🧟‍♀️","group":"people","keywords":["undead","walking dead","woman zombie"]},{"id":":person_frowning:","symbol":"🙍","group":"people","keywords":["frown","gesture","person frowning"]},{"id":":man_frowning:","symbol":"🙍‍♂️","group":"people","keywords":["frowning","gesture","man"]},{"id":":woman_frowning:","symbol":"🙍‍♀️","group":"people","keywords":["frowning","gesture","woman"]},{"id":":person_pouting:","symbol":"🙎","group":"people","keywords":["gesture","person pouting","pouting"]},{"id":":man_pouting:","symbol":"🙎‍♂️","group":"people","keywords":["gesture","man","pouting"]},{"id":":woman_pouting:","symbol":"🙎‍♀️","group":"people","keywords":["gesture","pouting","woman"]},{"id":":person_gesturing_no:","symbol":"🙅","group":"people","keywords":["forbidden","gesture","hand","person gesturing NO","prohibited"]},{"id":":man_gesturing_no:","symbol":"🙅‍♂️","group":"people","keywords":["forbidden","gesture","hand","man","man gesturing NO","prohibited"]},{"id":":woman_gesturing_no:","symbol":"🙅‍♀️","group":"people","keywords":["forbidden","gesture","hand","prohibited","woman","woman gesturing NO"]},{"id":":person_gesturing_ok:","symbol":"🙆","group":"people","keywords":["gesture","hand","OK","person gesturing OK"]},{"id":":man_gesturing_ok:","symbol":"🙆‍♂️","group":"people","keywords":["gesture","hand","man","man gesturing OK","OK"]},{"id":":woman_gesturing_ok:","symbol":"🙆‍♀️","group":"people","keywords":["gesture","hand","OK","woman","woman gesturing OK"]},{"id":":person_tipping_hand:","symbol":"💁","group":"people","keywords":["hand","help","information","person tipping hand","sassy","tipping"]},{"id":":man_tipping_hand:","symbol":"💁‍♂️","group":"people","keywords":["man","man tipping hand","sassy","tipping hand"]},{"id":":woman_tipping_hand:","symbol":"💁‍♀️","group":"people","keywords":["sassy","tipping hand","woman","woman tipping hand"]},{"id":":person_raising_hand:","symbol":"🙋","group":"people","keywords":["gesture","hand","happy","person raising hand","raised"]},{"id":":man_raising_hand:","symbol":"🙋‍♂️","group":"people","keywords":["gesture","man","man raising hand","raising hand"]},{"id":":woman_raising_hand:","symbol":"🙋‍♀️","group":"people","keywords":["gesture","raising hand","woman","woman raising hand"]},{"id":":person_bowing:","symbol":"🙇","group":"people","keywords":["apology","bow","gesture","person bowing","sorry"]},{"id":":man_bowing:","symbol":"🙇‍♂️","group":"people","keywords":["apology","bowing","favor","gesture","man","sorry"]},{"id":":woman_bowing:","symbol":"🙇‍♀️","group":"people","keywords":["apology","bowing","favor","gesture","sorry","woman"]},{"id":":person_facepalming:","symbol":"🤦","group":"people","keywords":["disbelief","exasperation","face","palm","person facepalming"]},{"id":":man_facepalming:","symbol":"🤦‍♂️","group":"people","keywords":["disbelief","exasperation","facepalm","man","man facepalming"]},{"id":":woman_facepalming:","symbol":"🤦‍♀️","group":"people","keywords":["disbelief","exasperation","facepalm","woman","woman facepalming"]},{"id":":person_shrugging:","symbol":"🤷","group":"people","keywords":["doubt","ignorance","indifference","person shrugging","shrug"]},{"id":":man_shrugging:","symbol":"🤷‍♂️","group":"people","keywords":["doubt","ignorance","indifference","man","man shrugging","shrug"]},{"id":":woman_shrugging:","symbol":"🤷‍♀️","group":"people","keywords":["doubt","ignorance","indifference","shrug","woman","woman shrugging"]},{"id":":person_getting_massage:","symbol":"💆","group":"people","keywords":["face","massage","person getting massage","salon"]},{"id":":man_getting_massage:","symbol":"💆‍♂️","group":"people","keywords":["face","man","man getting massage","massage"]},{"id":":woman_getting_massage:","symbol":"💆‍♀️","group":"people","keywords":["face","massage","woman","woman getting massage"]},{"id":":person_getting_haircut:","symbol":"💇","group":"people","keywords":["barber","beauty","haircut","parlor","person getting haircut"]},{"id":":man_getting_haircut:","symbol":"💇‍♂️","group":"people","keywords":["haircut","man","man getting haircut"]},{"id":":woman_getting_haircut:","symbol":"💇‍♀️","group":"people","keywords":["haircut","woman","woman getting haircut"]},{"id":":person_walking:","symbol":"🚶","group":"people","keywords":["hike","person walking","walk","walking"]},{"id":":man_walking:","symbol":"🚶‍♂️","group":"people","keywords":["hike","man","man walking","walk"]},{"id":":woman_walking:","symbol":"🚶‍♀️","group":"people","keywords":["hike","walk","woman","woman walking"]},{"id":":person_running:","symbol":"🏃","group":"people","keywords":["marathon","person running","running"]},{"id":":man_running:","symbol":"🏃‍♂️","group":"people","keywords":["man","marathon","racing","running"]},{"id":":woman_running:","symbol":"🏃‍♀️","group":"people","keywords":["marathon","racing","running","woman"]},{"id":":woman_dancing:","symbol":"💃","group":"people","keywords":["dancing","woman"]},{"id":":man_dancing:","symbol":"🕺","group":"people","keywords":["dance","man","man dancing"]},{"id":":people_with_bunny_ears:","symbol":"👯","group":"people","keywords":["bunny ear","dancer","partying","people with bunny ears"]},{"id":":men_with_bunny_ears:","symbol":"👯‍♂️","group":"people","keywords":["bunny ear","dancer","men","men with bunny ears","partying"]},{"id":":women_with_bunny_ears:","symbol":"👯‍♀️","group":"people","keywords":["bunny ear","dancer","partying","women","women with bunny ears"]},{"id":":person_in_steamy_room:","symbol":"🧖","group":"people","keywords":["person in steamy room","sauna","steam room",""]},{"id":":man_in_steamy_room:","symbol":"🧖‍♂️","group":"people","keywords":["man in steamy room","sauna","steam room"]},{"id":":woman_in_steamy_room:","symbol":"🧖‍♀️","group":"people","keywords":["sauna","steam room","woman in steamy room"]},{"id":":person_climbing:","symbol":"🧗","group":"people","keywords":["climber","person climbing"]},{"id":":man_climbing:","symbol":"🧗‍♂️","group":"people","keywords":["climber","man climbing"]},{"id":":woman_climbing:","symbol":"🧗‍♀️","group":"people","keywords":["climber","woman climbing"]},{"id":":person_in_lotus_position:","symbol":"🧘","group":"people","keywords":["meditation","person in lotus position","yoga",""]},{"id":":man_in_lotus_position:","symbol":"🧘‍♂️","group":"people","keywords":["man in lotus position","meditation","yoga"]},{"id":":woman_in_lotus_position:","symbol":"🧘‍♀️","group":"people","keywords":["meditation","woman in lotus position","yoga"]},{"id":":person_taking_bath:","symbol":"🛀","group":"people","keywords":["bath","bathtub","person taking bath"]},{"id":":person_in_bed:","symbol":"🛌","group":"people","keywords":["hotel","person in bed","sleep"]},{"id":":man_in_suit_levitating:","symbol":"🕴","group":"people","keywords":["business","man","man in suit levitating","suit"]},{"id":":speaking_head:","symbol":"🗣","group":"people","keywords":["face","head","silhouette","speak","speaking"]},{"id":":bust_in_silhouette:","symbol":"👤","group":"people","keywords":["bust","bust in silhouette","silhouette"]},{"id":":busts_in_silhouette:","symbol":"👥","group":"people","keywords":["bust","busts in silhouette","silhouette"]},{"id":":person_fencing:","symbol":"🤺","group":"people","keywords":["fencer","fencing","person fencing","sword"]},{"id":":horse_racing:","symbol":"🏇","group":"people","keywords":["horse","jockey","racehorse","racing"]},{"id":":skier:","symbol":"⛷","group":"people","keywords":["ski","skier","snow"]},{"id":":snowboarder:","symbol":"🏂","group":"people","keywords":["ski","snow","snowboard","snowboarder"]},{"id":":person_golfing:","symbol":"🏌","group":"people","keywords":["ball","golf","person golfing"]},{"id":":man_golfing:","symbol":"🏌️‍♂️","group":"people","keywords":["golf","man","man golfing"]},{"id":":woman_golfing:","symbol":"🏌️‍♀️","group":"people","keywords":["golf","woman","woman golfing"]},{"id":":person_surfing:","symbol":"🏄","group":"people","keywords":["person surfing","surfing"]},{"id":":man_surfing:","symbol":"🏄‍♂️","group":"people","keywords":["man","surfing"]},{"id":":woman_surfing:","symbol":"🏄‍♀️","group":"people","keywords":["surfing","woman"]},{"id":":person_rowing_boat:","symbol":"🚣","group":"people","keywords":["boat","person rowing boat","rowboat"]},{"id":":man_rowing_boat:","symbol":"🚣‍♂️","group":"people","keywords":["boat","man","man rowing boat","rowboat"]},{"id":":woman_rowing_boat:","symbol":"🚣‍♀️","group":"people","keywords":["boat","rowboat","woman","woman rowing boat"]},{"id":":person_swimming:","symbol":"🏊","group":"people","keywords":["person swimming","swim"]},{"id":":man_swimming:","symbol":"🏊‍♂️","group":"people","keywords":["man","man swimming","swim"]},{"id":":woman_swimming:","symbol":"🏊‍♀️","group":"people","keywords":["swim","woman","woman swimming"]},{"id":":person_bouncing_ball:","symbol":"⛹","group":"people","keywords":["ball","person bouncing ball"]},{"id":":man_bouncing_ball:","symbol":"⛹️‍♂️","group":"people","keywords":["ball","man","man bouncing ball"]},{"id":":woman_bouncing_ball:","symbol":"⛹️‍♀️","group":"people","keywords":["ball","woman","woman bouncing ball"]},{"id":":person_lifting_weights:","symbol":"🏋","group":"people","keywords":["lifter","person lifting weights","weight"]},{"id":":man_lifting_weights:","symbol":"🏋️‍♂️","group":"people","keywords":["man","man lifting weights","weight lifter"]},{"id":":woman_lifting_weights:","symbol":"🏋️‍♀️","group":"people","keywords":["weight lifter","woman","woman lifting weights"]},{"id":":person_biking:","symbol":"🚴","group":"people","keywords":["bicycle","biking","cyclist","person biking"]},{"id":":man_biking:","symbol":"🚴‍♂️","group":"people","keywords":["bicycle","biking","cyclist","man"]},{"id":":woman_biking:","symbol":"🚴‍♀️","group":"people","keywords":["bicycle","biking","cyclist","woman"]},{"id":":person_mountain_biking:","symbol":"🚵","group":"people","keywords":["bicycle","bicyclist","bike","cyclist","mountain","person mountain biking"]},{"id":":man_mountain_biking:","symbol":"🚵‍♂️","group":"people","keywords":["bicycle","bike","cyclist","man","man mountain biking","mountain"]},{"id":":woman_mountain_biking:","symbol":"🚵‍♀️","group":"people","keywords":["bicycle","bike","biking","cyclist","mountain","woman"]},{"id":":racing_car:","symbol":"🏎","group":"people","keywords":["car","racing"]},{"id":":motorcycle:","symbol":"🏍","group":"people","keywords":["motorcycle","racing"]},{"id":":person_cartwheeling:","symbol":"🤸","group":"people","keywords":["cartwheel","gymnastics","person cartwheeling"]},{"id":":man_cartwheeling:","symbol":"🤸‍♂️","group":"people","keywords":["cartwheel","gymnastics","man","man cartwheeling"]},{"id":":woman_cartwheeling:","symbol":"🤸‍♀️","group":"people","keywords":["cartwheel","gymnastics","woman","woman cartwheeling"]},{"id":":people_wrestling:","symbol":"🤼","group":"people","keywords":["people wrestling","wrestle","wrestler"]},{"id":":men_wrestling:","symbol":"🤼‍♂️","group":"people","keywords":["men","men wrestling","wrestle"]},{"id":":women_wrestling:","symbol":"🤼‍♀️","group":"people","keywords":["women","women wrestling","wrestle"]},{"id":":person_playing_water_polo:","symbol":"🤽","group":"people","keywords":["person playing water polo","polo","water"]},{"id":":man_playing_water_polo:","symbol":"🤽‍♂️","group":"people","keywords":["man","man playing water polo","water polo"]},{"id":":woman_playing_water_polo:","symbol":"🤽‍♀️","group":"people","keywords":["water polo","woman","woman playing water polo"]},{"id":":person_playing_handball:","symbol":"🤾","group":"people","keywords":["ball","handball","person playing handball"]},{"id":":man_playing_handball:","symbol":"🤾‍♂️","group":"people","keywords":["handball","man","man playing handball"]},{"id":":woman_playing_handball:","symbol":"🤾‍♀️","group":"people","keywords":["handball","woman","woman playing handball"]},{"id":":person_juggling:","symbol":"🤹","group":"people","keywords":["balance","juggle","multitask","person juggling","skill"]},{"id":":man_juggling:","symbol":"🤹‍♂️","group":"people","keywords":["juggling","man","multitask"]},{"id":":woman_juggling:","symbol":"🤹‍♀️","group":"people","keywords":["juggling","multitask","woman"]},{"id":":man_and_woman_holding_hands:","symbol":"👫","group":"people","keywords":["couple","hand","hold","man","man and woman holding hands","woman"]},{"id":":two_men_holding_hands:","symbol":"👬","group":"people","keywords":["couple","Gemini","man","twins","two men holding hands","zodiac"]},{"id":":two_women_holding_hands:","symbol":"👭","group":"people","keywords":["couple","hand","two women holding hands","woman"]},{"id":":kiss:","symbol":"💏","group":"people","keywords":["couple","kiss"]},{"id":":kiss_woman_man:","symbol":"👩‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man","woman"]},{"id":":kiss_man_man:","symbol":"👨‍❤️‍💋‍👨","group":"people","keywords":["couple","kiss","man"]},{"id":":kiss_woman_woman:","symbol":"👩‍❤️‍💋‍👩","group":"people","keywords":["couple","kiss","woman"]},{"id":":couple_with_heart:","symbol":"💑","group":"people","keywords":["couple","couple with heart","love"]},{"id":":couple_with_heart_woman_man:","symbol":"👩‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man","woman"]},{"id":":couple_with_heart_man_man:","symbol":"👨‍❤️‍👨","group":"people","keywords":["couple","couple with heart","love","man"]},{"id":":couple_with_heart_woman_woman:","symbol":"👩‍❤️‍👩","group":"people","keywords":["couple","couple with heart","love","woman"]},{"id":":family:","symbol":"👪","group":"people","keywords":["family"]},{"id":":family_man_woman_boy:","symbol":"👨‍👩‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl:","symbol":"👨‍👩‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_woman_girl_boy:","symbol":"👨‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","man","woman"]},{"id":":family_man_woman_boy_boy:","symbol":"👨‍👩‍👦‍👦","group":"people","keywords":["boy","family","man","woman"]},{"id":":family_man_woman_girl_girl:","symbol":"👨‍👩‍👧‍👧","group":"people","keywords":["family","girl","man","woman"]},{"id":":family_man_man_boy:","symbol":"👨‍👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl:","symbol":"👨‍👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_man_girl_boy:","symbol":"👨‍👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_man_boy_boy:","symbol":"👨‍👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_man_girl_girl:","symbol":"👨‍👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_woman_boy:","symbol":"👩‍👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl:","symbol":"👩‍👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_woman_girl_boy:","symbol":"👩‍👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_woman_boy_boy:","symbol":"👩‍👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_woman_girl_girl:","symbol":"👩‍👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_man_boy:","symbol":"👨‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_boy_boy:","symbol":"👨‍👦‍👦","group":"people","keywords":["boy","family","man"]},{"id":":family_man_girl:","symbol":"👨‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_man_girl_boy:","symbol":"👨‍👧‍👦","group":"people","keywords":["boy","family","girl","man"]},{"id":":family_man_girl_girl:","symbol":"👨‍👧‍👧","group":"people","keywords":["family","girl","man"]},{"id":":family_woman_boy:","symbol":"👩‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_boy_boy:","symbol":"👩‍👦‍👦","group":"people","keywords":["boy","family","woman"]},{"id":":family_woman_girl:","symbol":"👩‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":family_woman_girl_boy:","symbol":"👩‍👧‍👦","group":"people","keywords":["boy","family","girl","woman"]},{"id":":family_woman_girl_girl:","symbol":"👩‍👧‍👧","group":"people","keywords":["family","girl","woman"]},{"id":":selfie:","symbol":"🤳","group":"people","keywords":["camera","phone","selfie"]},{"id":":flexed_biceps:","symbol":"💪","group":"people","keywords":["biceps","comic","flex","flexed biceps","muscle"]},{"id":":backhand_index_pointing_left:","symbol":"👈","group":"people","keywords":["backhand","backhand index pointing left","finger","hand","index","point"]},{"id":":backhand_index_pointing_right:","symbol":"👉","group":"people","keywords":["backhand","backhand index pointing right","finger","hand","index","point"]},{"id":":index_pointing_up:","symbol":"☝","group":"people","keywords":["finger","hand","index","index pointing up","point","up"]},{"id":":backhand_index_pointing_up:","symbol":"👆","group":"people","keywords":["backhand","backhand index pointing up","finger","hand","point","up"]},{"id":":middle_finger:","symbol":"🖕","group":"people","keywords":["finger","hand","middle finger"]},{"id":":backhand_index_pointing_down:","symbol":"👇","group":"people","keywords":["backhand","backhand index pointing down","down","finger","hand","point"]},{"id":":victory_hand:","symbol":"✌","group":"people","keywords":["hand","v","victory"]},{"id":":crossed_fingers:","symbol":"🤞","group":"people","keywords":["cross","crossed fingers","finger","hand","luck"]},{"id":":vulcan_salute:","symbol":"🖖","group":"people","keywords":["finger","hand","spock","vulcan","vulcan salute"]},{"id":":sign_of_the_horns:","symbol":"🤘","group":"people","keywords":["finger","hand","horns","rock-on","sign of the horns"]},{"id":":call_me_hand:","symbol":"🤙","group":"people","keywords":["call","call me hand","hand"]},{"id":":hand_with_fingers_splayed:","symbol":"🖐","group":"people","keywords":["finger","hand","hand with fingers splayed","splayed"]},{"id":":raised_hand:","symbol":"✋","group":"people","keywords":["hand","raised hand"]},{"id":":ok_hand:","symbol":"👌","group":"people","keywords":["hand","OK"]},{"id":":thumbs_up:","symbol":"👍","group":"people","keywords":["+1","hand","thumb","thumbs up","up"]},{"id":":thumbs_down:","symbol":"👎","group":"people","keywords":["-1","down","hand","thumb","thumbs down"]},{"id":":raised_fist:","symbol":"✊","group":"people","keywords":["clenched","fist","hand","punch","raised fist"]},{"id":":oncoming_fist:","symbol":"👊","group":"people","keywords":["clenched","fist","hand","oncoming fist","punch"]},{"id":":left-facing_fist:","symbol":"🤛","group":"people","keywords":["fist","left-facing fist","leftwards"]},{"id":":right-facing_fist:","symbol":"🤜","group":"people","keywords":["fist","right-facing fist","rightwards"]},{"id":":raised_back_of_hand:","symbol":"🤚","group":"people","keywords":["backhand","raised","raised back of hand"]},{"id":":waving_hand:","symbol":"👋","group":"people","keywords":["hand","wave","waving"]},{"id":":love-you_gesture:","symbol":"🤟","group":"people","keywords":["hand","ILY","love-you gesture"]},{"id":":writing_hand:","symbol":"✍","group":"people","keywords":["hand","write","writing hand"]},{"id":":clapping_hands:","symbol":"👏","group":"people","keywords":["clap","clapping hands","hand"]},{"id":":open_hands:","symbol":"👐","group":"people","keywords":["hand","open","open hands"]},{"id":":raising_hands:","symbol":"🙌","group":"people","keywords":["celebration","gesture","hand","hooray","raised","raising hands"]},{"id":":palms_up_together:","symbol":"🤲","group":"people","keywords":["palms up together","prayer",""]},{"id":":folded_hands:","symbol":"🙏","group":"people","keywords":["ask","folded hands","hand","please","pray","thanks"]},{"id":":handshake:","symbol":"🤝","group":"people","keywords":["agreement","hand","handshake","meeting","shake"]},{"id":":nail_polish:","symbol":"💅","group":"people","keywords":["care","cosmetics","manicure","nail","polish"]},{"id":":ear:","symbol":"👂","group":"people","keywords":["body","ear"]},{"id":":nose:","symbol":"👃","group":"people","keywords":["body","nose"]},{"id":":footprints:","symbol":"👣","group":"people","keywords":["clothing","footprint","footprints","print"]},{"id":":eyes:","symbol":"👀","group":"people","keywords":["eye","eyes","face"]},{"id":":eye:","symbol":"👁","group":"people","keywords":["body","eye"]},{"id":":eye_in_speech_bubble:","symbol":"👁️‍🗨️","group":"people","keywords":["eye","eye in speech bubble","speech bubble","witness"]},{"id":":brain:","symbol":"🧠","group":"people","keywords":["brain","intelligent"]},{"id":":tongue:","symbol":"👅","group":"people","keywords":["body","tongue"]},{"id":":mouth:","symbol":"👄","group":"people","keywords":["lips","mouth"]},{"id":":kiss_mark:","symbol":"💋","group":"people","keywords":["kiss","kiss mark","lips"]},{"id":":heart_with_arrow:","symbol":"💘","group":"people","keywords":["arrow","cupid","heart with arrow"]},{"id":":heart_with_ribbon:","symbol":"💝","group":"people","keywords":["heart with ribbon","ribbon","valentine"]},{"id":":sparkling_heart:","symbol":"💖","group":"people","keywords":["excited","sparkle","sparkling heart"]},{"id":":growing_heart:","symbol":"💗","group":"people","keywords":["excited","growing","growing heart","nervous","pulse"]},{"id":":beating_heart:","symbol":"💓","group":"people","keywords":["beating","beating heart","heartbeat","pulsating"]},{"id":":revolving_hearts:","symbol":"💞","group":"people","keywords":["revolving","revolving hearts"]},{"id":":two_hearts:","symbol":"💕","group":"people","keywords":["love","two hearts"]},{"id":":love_letter:","symbol":"💌","group":"people","keywords":["heart","letter","love","mail"]},{"id":":heavy_heart_exclamation:","symbol":"❣","group":"people","keywords":["exclamation","heavy heart exclamation","mark","punctuation"]},{"id":":broken_heart:","symbol":"💔","group":"people","keywords":["break","broken","broken heart"]},{"id":":red_heart:","symbol":"❤","group":"people","keywords":["heart","red heart"]},{"id":":orange_heart:","symbol":"🧡","group":"people","keywords":["orange","orange heart"]},{"id":":yellow_heart:","symbol":"💛","group":"people","keywords":["yellow","yellow heart"]},{"id":":green_heart:","symbol":"💚","group":"people","keywords":["green","green heart"]},{"id":":blue_heart:","symbol":"💙","group":"people","keywords":["blue","blue heart"]},{"id":":purple_heart:","symbol":"💜","group":"people","keywords":["purple","purple heart"]},{"id":":black_heart:","symbol":"🖤","group":"people","keywords":["black","black heart","evil","wicked"]},{"id":":heart_decoration:","symbol":"💟","group":"people","keywords":["heart","heart decoration"]},{"id":":zzz:","symbol":"💤","group":"people","keywords":["comic","sleep","zzz"]},{"id":":anger_symbol:","symbol":"💢","group":"people","keywords":["anger symbol","angry","comic","mad"]},{"id":":bomb:","symbol":"💣","group":"people","keywords":["bomb","comic"]},{"id":":collision:","symbol":"💥","group":"people","keywords":["boom","collision","comic"]},{"id":":sweat_droplets:","symbol":"💦","group":"people","keywords":["comic","splashing","sweat","sweat droplets"]},{"id":":dashing_away:","symbol":"💨","group":"people","keywords":["comic","dash","dashing away","running"]},{"id":":dizzy:","symbol":"💫","group":"people","keywords":["comic","dizzy","star"]},{"id":":speech_balloon:","symbol":"💬","group":"people","keywords":["balloon","bubble","comic","dialog","speech"]},{"id":":left_speech_bubble:","symbol":"🗨","group":"people","keywords":["dialog","left speech bubble","speech"]},{"id":":right_anger_bubble:","symbol":"🗯","group":"people","keywords":["angry","balloon","bubble","mad","right anger bubble"]},{"id":":thought_balloon:","symbol":"💭","group":"people","keywords":["balloon","bubble","comic","thought"]},{"id":":hole:","symbol":"🕳","group":"people","keywords":["hole"]},{"id":":glasses:","symbol":"👓","group":"people","keywords":["clothing","eye","eyeglasses","eyewear","glasses"]},{"id":":sunglasses:","symbol":"🕶","group":"people","keywords":["dark","eye","eyewear","glasses","sunglasses"]},{"id":":necktie:","symbol":"👔","group":"people","keywords":["clothing","necktie","tie"]},{"id":":t-shirt:","symbol":"👕","group":"people","keywords":["clothing","shirt","t-shirt","tshirt"]},{"id":":jeans:","symbol":"👖","group":"people","keywords":["clothing","jeans","pants","trousers"]},{"id":":scarf:","symbol":"🧣","group":"people","keywords":["neck","scarf"]},{"id":":gloves:","symbol":"🧤","group":"people","keywords":["gloves","hand"]},{"id":":coat:","symbol":"🧥","group":"people","keywords":["coat","jacket"]},{"id":":socks:","symbol":"🧦","group":"people","keywords":["socks","stocking"]},{"id":":dress:","symbol":"👗","group":"people","keywords":["clothing","dress"]},{"id":":kimono:","symbol":"👘","group":"people","keywords":["clothing","kimono"]},{"id":":bikini:","symbol":"👙","group":"people","keywords":["bikini","clothing","swim"]},{"id":":woman’s_clothes:","symbol":"👚","group":"people","keywords":["clothing","woman","woman’s clothes"]},{"id":":purse:","symbol":"👛","group":"people","keywords":["clothing","coin","purse"]},{"id":":handbag:","symbol":"👜","group":"people","keywords":["bag","clothing","handbag","purse"]},{"id":":clutch_bag:","symbol":"👝","group":"people","keywords":["bag","clothing","clutch bag","pouch"]},{"id":":shopping_bags:","symbol":"🛍","group":"people","keywords":["bag","hotel","shopping","shopping bags"]},{"id":":backpack:","symbol":"🎒","group":"people","keywords":["backpack","bag","rucksack","satchel","school"]},{"id":":man’s_shoe:","symbol":"👞","group":"people","keywords":["clothing","man","man’s shoe","shoe"]},{"id":":running_shoe:","symbol":"👟","group":"people","keywords":["athletic","clothing","running shoe","shoe","sneaker"]},{"id":":high-heeled_shoe:","symbol":"👠","group":"people","keywords":["clothing","heel","high-heeled shoe","shoe","woman"]},{"id":":woman’s_sandal:","symbol":"👡","group":"people","keywords":["clothing","sandal","shoe","woman","woman’s sandal"]},{"id":":woman’s_boot:","symbol":"👢","group":"people","keywords":["boot","clothing","shoe","woman","woman’s boot"]},{"id":":crown:","symbol":"👑","group":"people","keywords":["clothing","crown","king","queen"]},{"id":":woman’s_hat:","symbol":"👒","group":"people","keywords":["clothing","hat","woman","woman’s hat"]},{"id":":top_hat:","symbol":"🎩","group":"people","keywords":["clothing","hat","top","tophat"]},{"id":":graduation_cap:","symbol":"🎓","group":"people","keywords":["cap","celebration","clothing","graduation","hat"]},{"id":":billed_cap:","symbol":"🧢","group":"people","keywords":["baseball cap","billed cap"]},{"id":":rescue_worker’s_helmet:","symbol":"⛑","group":"people","keywords":["aid","cross","face","hat","helmet","rescue worker’s helmet"]},{"id":":prayer_beads:","symbol":"📿","group":"people","keywords":["beads","clothing","necklace","prayer","religion"]},{"id":":lipstick:","symbol":"💄","group":"people","keywords":["cosmetics","lipstick","makeup"]},{"id":":ring:","symbol":"💍","group":"people","keywords":["diamond","ring"]},{"id":":gem_stone:","symbol":"💎","group":"people","keywords":["diamond","gem","gem stone","jewel"]},{"id":":monkey_face:","symbol":"🐵","group":"nature","keywords":["face","monkey"]},{"id":":monkey:","symbol":"🐒","group":"nature","keywords":["monkey"]},{"id":":gorilla:","symbol":"🦍","group":"nature","keywords":["gorilla"]},{"id":":dog_face:","symbol":"🐶","group":"nature","keywords":["dog","face","pet"]},{"id":":dog:","symbol":"🐕","group":"nature","keywords":["dog","pet"]},{"id":":poodle:","symbol":"🐩","group":"nature","keywords":["dog","poodle"]},{"id":":wolf_face:","symbol":"🐺","group":"nature","keywords":["face","wolf"]},{"id":":fox_face:","symbol":"🦊","group":"nature","keywords":["face","fox"]},{"id":":cat_face:","symbol":"🐱","group":"nature","keywords":["cat","face","pet"]},{"id":":cat:","symbol":"🐈","group":"nature","keywords":["cat","pet"]},{"id":":lion_face:","symbol":"🦁","group":"nature","keywords":["face","Leo","lion","zodiac"]},{"id":":tiger_face:","symbol":"🐯","group":"nature","keywords":["face","tiger"]},{"id":":tiger:","symbol":"🐅","group":"nature","keywords":["tiger"]},{"id":":leopard:","symbol":"🐆","group":"nature","keywords":["leopard"]},{"id":":horse_face:","symbol":"🐴","group":"nature","keywords":["face","horse"]},{"id":":horse:","symbol":"🐎","group":"nature","keywords":["equestrian","horse","racehorse","racing"]},{"id":":unicorn_face:","symbol":"🦄","group":"nature","keywords":["face","unicorn"]},{"id":":zebra:","symbol":"🦓","group":"nature","keywords":["stripe","zebra"]},{"id":":deer:","symbol":"🦌","group":"nature","keywords":["deer"]},{"id":":cow_face:","symbol":"🐮","group":"nature","keywords":["cow","face"]},{"id":":ox:","symbol":"🐂","group":"nature","keywords":["bull","ox","Taurus","zodiac"]},{"id":":water_buffalo:","symbol":"🐃","group":"nature","keywords":["buffalo","water"]},{"id":":cow:","symbol":"🐄","group":"nature","keywords":["cow"]},{"id":":pig_face:","symbol":"🐷","group":"nature","keywords":["face","pig"]},{"id":":pig:","symbol":"🐖","group":"nature","keywords":["pig","sow"]},{"id":":boar:","symbol":"🐗","group":"nature","keywords":["boar","pig"]},{"id":":pig_nose:","symbol":"🐽","group":"nature","keywords":["face","nose","pig"]},{"id":":ram:","symbol":"🐏","group":"nature","keywords":["Aries","male","ram","sheep","zodiac"]},{"id":":ewe:","symbol":"🐑","group":"nature","keywords":["ewe","female","sheep"]},{"id":":goat:","symbol":"🐐","group":"nature","keywords":["Capricorn","goat","zodiac"]},{"id":":camel:","symbol":"🐪","group":"nature","keywords":["camel","dromedary","hump"]},{"id":":two-hump_camel:","symbol":"🐫","group":"nature","keywords":["bactrian","camel","hump","two-hump camel"]},{"id":":giraffe:","symbol":"🦒","group":"nature","keywords":["giraffe","spots"]},{"id":":elephant:","symbol":"🐘","group":"nature","keywords":["elephant"]},{"id":":rhinoceros:","symbol":"🦏","group":"nature","keywords":["rhinoceros"]},{"id":":mouse_face:","symbol":"🐭","group":"nature","keywords":["face","mouse"]},{"id":":mouse:","symbol":"🐁","group":"nature","keywords":["mouse"]},{"id":":rat:","symbol":"🐀","group":"nature","keywords":["rat"]},{"id":":hamster_face:","symbol":"🐹","group":"nature","keywords":["face","hamster","pet"]},{"id":":rabbit_face:","symbol":"🐰","group":"nature","keywords":["bunny","face","pet","rabbit"]},{"id":":rabbit:","symbol":"🐇","group":"nature","keywords":["bunny","pet","rabbit"]},{"id":":chipmunk:","symbol":"🐿","group":"nature","keywords":["chipmunk","squirrel"]},{"id":":hedgehog:","symbol":"🦔","group":"nature","keywords":["hedgehog","spiny"]},{"id":":bat:","symbol":"🦇","group":"nature","keywords":["bat","vampire"]},{"id":":bear_face:","symbol":"🐻","group":"nature","keywords":["bear","face"]},{"id":":koala:","symbol":"🐨","group":"nature","keywords":["bear","koala"]},{"id":":panda_face:","symbol":"🐼","group":"nature","keywords":["face","panda"]},{"id":":paw_prints:","symbol":"🐾","group":"nature","keywords":["feet","paw","paw prints","print"]},{"id":":turkey:","symbol":"🦃","group":"nature","keywords":["bird","turkey"]},{"id":":chicken:","symbol":"🐔","group":"nature","keywords":["bird","chicken"]},{"id":":rooster:","symbol":"🐓","group":"nature","keywords":["bird","rooster"]},{"id":":hatching_chick:","symbol":"🐣","group":"nature","keywords":["baby","bird","chick","hatching"]},{"id":":baby_chick:","symbol":"🐤","group":"nature","keywords":["baby","bird","chick"]},{"id":":front-facing_baby_chick:","symbol":"🐥","group":"nature","keywords":["baby","bird","chick","front-facing baby chick"]},{"id":":bird:","symbol":"🐦","group":"nature","keywords":["bird"]},{"id":":penguin:","symbol":"🐧","group":"nature","keywords":["bird","penguin"]},{"id":":dove:","symbol":"🕊","group":"nature","keywords":["bird","dove","fly","peace"]},{"id":":eagle:","symbol":"🦅","group":"nature","keywords":["bird","eagle"]},{"id":":duck:","symbol":"🦆","group":"nature","keywords":["bird","duck"]},{"id":":owl:","symbol":"🦉","group":"nature","keywords":["bird","owl","wise"]},{"id":":frog_face:","symbol":"🐸","group":"nature","keywords":["face","frog"]},{"id":":crocodile:","symbol":"🐊","group":"nature","keywords":["crocodile"]},{"id":":turtle:","symbol":"🐢","group":"nature","keywords":["terrapin","tortoise","turtle"]},{"id":":lizard:","symbol":"🦎","group":"nature","keywords":["lizard","reptile"]},{"id":":snake:","symbol":"🐍","group":"nature","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":dragon_face:","symbol":"🐲","group":"nature","keywords":["dragon","face","fairy tale"]},{"id":":dragon:","symbol":"🐉","group":"nature","keywords":["dragon","fairy tale"]},{"id":":sauropod:","symbol":"🦕","group":"nature","keywords":["brachiosaurus","brontosaurus","diplodocus","sauropod"]},{"id":":t-rex:","symbol":"🦖","group":"nature","keywords":["T-Rex","Tyrannosaurus Rex"]},{"id":":spouting_whale:","symbol":"🐳","group":"nature","keywords":["face","spouting","whale"]},{"id":":whale:","symbol":"🐋","group":"nature","keywords":["whale"]},{"id":":dolphin:","symbol":"🐬","group":"nature","keywords":["dolphin","flipper"]},{"id":":fish:","symbol":"🐟","group":"nature","keywords":["fish","Pisces","zodiac"]},{"id":":tropical_fish:","symbol":"🐠","group":"nature","keywords":["fish","tropical"]},{"id":":blowfish:","symbol":"🐡","group":"nature","keywords":["blowfish","fish"]},{"id":":shark:","symbol":"🦈","group":"nature","keywords":["fish","shark"]},{"id":":octopus:","symbol":"🐙","group":"nature","keywords":["octopus"]},{"id":":spiral_shell:","symbol":"🐚","group":"nature","keywords":["shell","spiral"]},{"id":":crab:","symbol":"🦀","group":"nature","keywords":["Cancer","crab","zodiac"]},{"id":":shrimp:","symbol":"🦐","group":"nature","keywords":["food","shellfish","shrimp","small"]},{"id":":squid:","symbol":"🦑","group":"nature","keywords":["food","molusc","squid"]},{"id":":snail:","symbol":"🐌","group":"nature","keywords":["snail"]},{"id":":butterfly:","symbol":"🦋","group":"nature","keywords":["butterfly","insect","pretty"]},{"id":":bug:","symbol":"🐛","group":"nature","keywords":["bug","insect"]},{"id":":ant:","symbol":"🐜","group":"nature","keywords":["ant","insect"]},{"id":":honeybee:","symbol":"🐝","group":"nature","keywords":["bee","honeybee","insect"]},{"id":":lady_beetle:","symbol":"🐞","group":"nature","keywords":["beetle","insect","lady beetle","ladybird","ladybug"]},{"id":":cricket:","symbol":"🦗","group":"nature","keywords":["cricket","grasshopper",""]},{"id":":spider:","symbol":"🕷","group":"nature","keywords":["insect","spider"]},{"id":":spider_web:","symbol":"🕸","group":"nature","keywords":["spider","web"]},{"id":":scorpion:","symbol":"🦂","group":"nature","keywords":["scorpio","Scorpio","scorpion","zodiac"]},{"id":":bouquet:","symbol":"💐","group":"nature","keywords":["bouquet","flower"]},{"id":":cherry_blossom:","symbol":"🌸","group":"nature","keywords":["blossom","cherry","flower"]},{"id":":white_flower:","symbol":"💮","group":"nature","keywords":["flower","white flower"]},{"id":":rosette:","symbol":"🏵","group":"nature","keywords":["plant","rosette"]},{"id":":rose:","symbol":"🌹","group":"nature","keywords":["flower","rose"]},{"id":":wilted_flower:","symbol":"🥀","group":"nature","keywords":["flower","wilted"]},{"id":":hibiscus:","symbol":"🌺","group":"nature","keywords":["flower","hibiscus"]},{"id":":sunflower:","symbol":"🌻","group":"nature","keywords":["flower","sun","sunflower"]},{"id":":blossom:","symbol":"🌼","group":"nature","keywords":["blossom","flower"]},{"id":":tulip:","symbol":"🌷","group":"nature","keywords":["flower","tulip"]},{"id":":seedling:","symbol":"🌱","group":"nature","keywords":["seedling","young"]},{"id":":evergreen_tree:","symbol":"🌲","group":"nature","keywords":["evergreen tree","tree"]},{"id":":deciduous_tree:","symbol":"🌳","group":"nature","keywords":["deciduous","shedding","tree"]},{"id":":palm_tree:","symbol":"🌴","group":"nature","keywords":["palm","tree"]},{"id":":cactus:","symbol":"🌵","group":"nature","keywords":["cactus","plant"]},{"id":":sheaf_of_rice:","symbol":"🌾","group":"nature","keywords":["ear","grain","rice","sheaf of rice"]},{"id":":herb:","symbol":"🌿","group":"nature","keywords":["herb","leaf"]},{"id":":shamrock:","symbol":"☘","group":"nature","keywords":["plant","shamrock"]},{"id":":four_leaf_clover:","symbol":"🍀","group":"nature","keywords":["4","clover","four","four-leaf clover","leaf"]},{"id":":maple_leaf:","symbol":"🍁","group":"nature","keywords":["falling","leaf","maple"]},{"id":":fallen_leaf:","symbol":"🍂","group":"nature","keywords":["fallen leaf","falling","leaf"]},{"id":":leaf_fluttering_in_wind:","symbol":"🍃","group":"nature","keywords":["blow","flutter","leaf","leaf fluttering in wind","wind"]},{"id":":grapes:","symbol":"🍇","group":"food","keywords":["fruit","grape","grapes"]},{"id":":melon:","symbol":"🍈","group":"food","keywords":["fruit","melon"]},{"id":":watermelon:","symbol":"🍉","group":"food","keywords":["fruit","watermelon"]},{"id":":tangerine:","symbol":"🍊","group":"food","keywords":["fruit","orange","tangerine"]},{"id":":lemon:","symbol":"🍋","group":"food","keywords":["citrus","fruit","lemon"]},{"id":":banana:","symbol":"🍌","group":"food","keywords":["banana","fruit"]},{"id":":pineapple:","symbol":"🍍","group":"food","keywords":["fruit","pineapple"]},{"id":":red_apple:","symbol":"🍎","group":"food","keywords":["apple","fruit","red"]},{"id":":green_apple:","symbol":"🍏","group":"food","keywords":["apple","fruit","green"]},{"id":":pear:","symbol":"🍐","group":"food","keywords":["fruit","pear"]},{"id":":peach:","symbol":"🍑","group":"food","keywords":["fruit","peach"]},{"id":":cherries:","symbol":"🍒","group":"food","keywords":["berries","cherries","cherry","fruit","red"]},{"id":":strawberry:","symbol":"🍓","group":"food","keywords":["berry","fruit","strawberry"]},{"id":":kiwi_fruit:","symbol":"🥝","group":"food","keywords":["food","fruit","kiwi"]},{"id":":tomato:","symbol":"🍅","group":"food","keywords":["fruit","tomato","vegetable"]},{"id":":coconut:","symbol":"🥥","group":"food","keywords":["coconut","palm","piña colada"]},{"id":":avocado:","symbol":"🥑","group":"food","keywords":["avocado","food","fruit"]},{"id":":eggplant:","symbol":"🍆","group":"food","keywords":["aubergine","eggplant","vegetable"]},{"id":":potato:","symbol":"🥔","group":"food","keywords":["food","potato","vegetable"]},{"id":":carrot:","symbol":"🥕","group":"food","keywords":["carrot","food","vegetable"]},{"id":":ear_of_corn:","symbol":"🌽","group":"food","keywords":["corn","ear","ear of corn","maize","maze"]},{"id":":hot_pepper:","symbol":"🌶","group":"food","keywords":["hot","pepper"]},{"id":":cucumber:","symbol":"🥒","group":"food","keywords":["cucumber","food","pickle","vegetable"]},{"id":":broccoli:","symbol":"🥦","group":"food","keywords":["broccoli","wild cabbage"]},{"id":":mushroom:","symbol":"🍄","group":"food","keywords":["mushroom","toadstool"]},{"id":":peanuts:","symbol":"🥜","group":"food","keywords":["food","nut","peanut","peanuts","vegetable"]},{"id":":chestnut:","symbol":"🌰","group":"food","keywords":["chestnut","plant"]},{"id":":bread:","symbol":"🍞","group":"food","keywords":["bread","loaf"]},{"id":":croissant:","symbol":"🥐","group":"food","keywords":["bread","crescent roll","croissant","food","french"]},{"id":":baguette_bread:","symbol":"🥖","group":"food","keywords":["baguette","bread","food","french"]},{"id":":pretzel:","symbol":"🥨","group":"food","keywords":["pretzel","twisted",""]},{"id":":pancakes:","symbol":"🥞","group":"food","keywords":["crêpe","food","hotcake","pancake","pancakes"]},{"id":":cheese_wedge:","symbol":"🧀","group":"food","keywords":["cheese","cheese wedge"]},{"id":":meat_on_bone:","symbol":"🍖","group":"food","keywords":["bone","meat","meat on bone"]},{"id":":poultry_leg:","symbol":"🍗","group":"food","keywords":["bone","chicken","drumstick","leg","poultry"]},{"id":":cut_of_meat:","symbol":"🥩","group":"food","keywords":["chop","cut of meat","lambchop","porkchop","steak"]},{"id":":bacon:","symbol":"🥓","group":"food","keywords":["bacon","food","meat"]},{"id":":hamburger:","symbol":"🍔","group":"food","keywords":["burger","hamburger"]},{"id":":french_fries:","symbol":"🍟","group":"food","keywords":["french","fries"]},{"id":":pizza:","symbol":"🍕","group":"food","keywords":["cheese","pizza","slice"]},{"id":":hot_dog:","symbol":"🌭","group":"food","keywords":["frankfurter","hot dog","hotdog","sausage"]},{"id":":sandwich:","symbol":"🥪","group":"food","keywords":["bread","sandwich"]},{"id":":taco:","symbol":"🌮","group":"food","keywords":["mexican","taco"]},{"id":":burrito:","symbol":"🌯","group":"food","keywords":["burrito","mexican","wrap"]},{"id":":stuffed_flatbread:","symbol":"🥙","group":"food","keywords":["falafel","flatbread","food","gyro","kebab","stuffed"]},{"id":":egg:","symbol":"🥚","group":"food","keywords":["egg","food"]},{"id":":cooking:","symbol":"🍳","group":"food","keywords":["cooking","egg","frying","pan"]},{"id":":shallow_pan_of_food:","symbol":"🥘","group":"food","keywords":["casserole","food","paella","pan","shallow","shallow pan of food"]},{"id":":pot_of_food:","symbol":"🍲","group":"food","keywords":["pot","pot of food","stew"]},{"id":":bowl_with_spoon:","symbol":"🥣","group":"food","keywords":["bowl with spoon","breakfast","cereal","congee",""]},{"id":":green_salad:","symbol":"🥗","group":"food","keywords":["food","green","salad"]},{"id":":popcorn:","symbol":"🍿","group":"food","keywords":["popcorn"]},{"id":":canned_food:","symbol":"🥫","group":"food","keywords":["can","canned food"]},{"id":":bento_box:","symbol":"🍱","group":"food","keywords":["bento","box"]},{"id":":rice_cracker:","symbol":"🍘","group":"food","keywords":["cracker","rice"]},{"id":":rice_ball:","symbol":"🍙","group":"food","keywords":["ball","Japanese","rice"]},{"id":":cooked_rice:","symbol":"🍚","group":"food","keywords":["cooked","rice"]},{"id":":curry_rice:","symbol":"🍛","group":"food","keywords":["curry","rice"]},{"id":":steaming_bowl:","symbol":"🍜","group":"food","keywords":["bowl","noodle","ramen","steaming"]},{"id":":spaghetti:","symbol":"🍝","group":"food","keywords":["pasta","spaghetti"]},{"id":":roasted_sweet_potato:","symbol":"🍠","group":"food","keywords":["potato","roasted","sweet"]},{"id":":oden:","symbol":"🍢","group":"food","keywords":["kebab","oden","seafood","skewer","stick"]},{"id":":sushi:","symbol":"🍣","group":"food","keywords":["sushi"]},{"id":":fried_shrimp:","symbol":"🍤","group":"food","keywords":["fried","prawn","shrimp","tempura"]},{"id":":fish_cake_with_swirl:","symbol":"🍥","group":"food","keywords":["cake","fish","fish cake with swirl","pastry","swirl"]},{"id":":dango:","symbol":"🍡","group":"food","keywords":["dango","dessert","Japanese","skewer","stick","sweet"]},{"id":":dumpling:","symbol":"🥟","group":"food","keywords":["dumpling","empanada","gyōza","jiaozi","pierogi","potsticker"]},{"id":":fortune_cookie:","symbol":"🥠","group":"food","keywords":["fortune cookie","prophecy"]},{"id":":takeout_box:","symbol":"🥡","group":"food","keywords":["oyster pail","takeout box"]},{"id":":soft_ice_cream:","symbol":"🍦","group":"food","keywords":["cream","dessert","ice","icecream","soft","sweet"]},{"id":":shaved_ice:","symbol":"🍧","group":"food","keywords":["dessert","ice","shaved","sweet"]},{"id":":ice_cream:","symbol":"🍨","group":"food","keywords":["cream","dessert","ice","sweet"]},{"id":":doughnut:","symbol":"🍩","group":"food","keywords":["dessert","donut","doughnut","sweet"]},{"id":":cookie:","symbol":"🍪","group":"food","keywords":["cookie","dessert","sweet"]},{"id":":birthday_cake:","symbol":"🎂","group":"food","keywords":["birthday","cake","celebration","dessert","pastry","sweet"]},{"id":":shortcake:","symbol":"🍰","group":"food","keywords":["cake","dessert","pastry","shortcake","slice","sweet"]},{"id":":pie:","symbol":"🥧","group":"food","keywords":["filling","pastry","pie",""]},{"id":":chocolate_bar:","symbol":"🍫","group":"food","keywords":["bar","chocolate","dessert","sweet"]},{"id":":candy:","symbol":"🍬","group":"food","keywords":["candy","dessert","sweet"]},{"id":":lollipop:","symbol":"🍭","group":"food","keywords":["candy","dessert","lollipop","sweet"]},{"id":":custard:","symbol":"🍮","group":"food","keywords":["custard","dessert","pudding","sweet"]},{"id":":honey_pot:","symbol":"🍯","group":"food","keywords":["honey","honeypot","pot","sweet"]},{"id":":baby_bottle:","symbol":"🍼","group":"food","keywords":["baby","bottle","drink","milk"]},{"id":":glass_of_milk:","symbol":"🥛","group":"food","keywords":["drink","glass","glass of milk","milk"]},{"id":":hot_beverage:","symbol":"☕","group":"food","keywords":["beverage","coffee","drink","hot","steaming","tea"]},{"id":":teacup_without_handle:","symbol":"🍵","group":"food","keywords":["beverage","cup","drink","tea","teacup","teacup without handle"]},{"id":":sake:","symbol":"🍶","group":"food","keywords":["bar","beverage","bottle","cup","drink","sake"]},{"id":":bottle_with_popping_cork:","symbol":"🍾","group":"food","keywords":["bar","bottle","bottle with popping cork","cork","drink","popping"]},{"id":":wine_glass:","symbol":"🍷","group":"food","keywords":["bar","beverage","drink","glass","wine"]},{"id":":cocktail_glass:","symbol":"🍸","group":"food","keywords":["bar","cocktail","drink","glass"]},{"id":":tropical_drink:","symbol":"🍹","group":"food","keywords":["bar","drink","tropical"]},{"id":":beer_mug:","symbol":"🍺","group":"food","keywords":["bar","beer","drink","mug"]},{"id":":clinking_beer_mugs:","symbol":"🍻","group":"food","keywords":["bar","beer","clink","clinking beer mugs","drink","mug"]},{"id":":clinking_glasses:","symbol":"🥂","group":"food","keywords":["celebrate","clink","clinking glasses","drink","glass"]},{"id":":tumbler_glass:","symbol":"🥃","group":"food","keywords":["glass","liquor","shot","tumbler","whisky"]},{"id":":cup_with_straw:","symbol":"🥤","group":"food","keywords":["cup with straw","juice","soda",""]},{"id":":chopsticks:","symbol":"🥢","group":"food","keywords":["chopsticks","hashi",""]},{"id":":fork_and_knife_with_plate:","symbol":"🍽","group":"food","keywords":["cooking","fork","fork and knife with plate","knife","plate"]},{"id":":fork_and_knife:","symbol":"🍴","group":"food","keywords":["cooking","cutlery","fork","fork and knife","knife"]},{"id":":spoon:","symbol":"🥄","group":"food","keywords":["spoon","tableware"]},{"id":":kitchen_knife:","symbol":"🔪","group":"food","keywords":["cooking","hocho","kitchen knife","knife","tool","weapon"]},{"id":":amphora:","symbol":"🏺","group":"food","keywords":["amphora","Aquarius","cooking","drink","jug","zodiac"]},{"id":":globe_showing_europe-africa:","symbol":"🌍","group":"travel","keywords":["Africa","earth","Europe","globe","globe showing Europe-Africa","world"]},{"id":":globe_showing_americas:","symbol":"🌎","group":"travel","keywords":["Americas","earth","globe","globe showing Americas","world"]},{"id":":globe_showing_asia-australia:","symbol":"🌏","group":"travel","keywords":["Asia","Australia","earth","globe","globe showing Asia-Australia","world"]},{"id":":globe_with_meridians:","symbol":"🌐","group":"travel","keywords":["earth","globe","globe with meridians","meridians","world"]},{"id":":world_map:","symbol":"🗺","group":"travel","keywords":["map","world"]},{"id":":map_of_japan:","symbol":"🗾","group":"travel","keywords":["Japan","map","map of Japan"]},{"id":":snow-capped_mountain:","symbol":"🏔","group":"travel","keywords":["cold","mountain","snow","snow-capped mountain"]},{"id":":mountain:","symbol":"⛰","group":"travel","keywords":["mountain"]},{"id":":volcano:","symbol":"🌋","group":"travel","keywords":["eruption","mountain","volcano"]},{"id":":mount_fuji:","symbol":"🗻","group":"travel","keywords":["fuji","mount fuji","mountain"]},{"id":":camping:","symbol":"🏕","group":"travel","keywords":["camping"]},{"id":":beach_with_umbrella:","symbol":"🏖","group":"travel","keywords":["beach","beach with umbrella","umbrella"]},{"id":":desert:","symbol":"🏜","group":"travel","keywords":["desert"]},{"id":":desert_island:","symbol":"🏝","group":"travel","keywords":["desert","island"]},{"id":":national_park:","symbol":"🏞","group":"travel","keywords":["national park","park"]},{"id":":stadium:","symbol":"🏟","group":"travel","keywords":["stadium"]},{"id":":classical_building:","symbol":"🏛","group":"travel","keywords":["classical","classical building"]},{"id":":building_construction:","symbol":"🏗","group":"travel","keywords":["building construction","construction"]},{"id":":houses:","symbol":"🏘","group":"travel","keywords":["houses"]},{"id":":derelict_house:","symbol":"🏚","group":"travel","keywords":["derelict","house"]},{"id":":house:","symbol":"🏠","group":"travel","keywords":["home","house"]},{"id":":house_with_garden:","symbol":"🏡","group":"travel","keywords":["garden","home","house","house with garden"]},{"id":":office_building:","symbol":"🏢","group":"travel","keywords":["building","office building"]},{"id":":japanese_post_office:","symbol":"🏣","group":"travel","keywords":["Japanese","Japanese post office","post"]},{"id":":post_office:","symbol":"🏤","group":"travel","keywords":["European","post","post office"]},{"id":":hospital:","symbol":"🏥","group":"travel","keywords":["doctor","hospital","medicine"]},{"id":":bank:","symbol":"🏦","group":"travel","keywords":["bank","building"]},{"id":":hotel:","symbol":"🏨","group":"travel","keywords":["building","hotel"]},{"id":":love_hotel:","symbol":"🏩","group":"travel","keywords":["hotel","love"]},{"id":":convenience_store:","symbol":"🏪","group":"travel","keywords":["convenience","store"]},{"id":":school:","symbol":"🏫","group":"travel","keywords":["building","school"]},{"id":":department_store:","symbol":"🏬","group":"travel","keywords":["department","store"]},{"id":":factory:","symbol":"🏭","group":"travel","keywords":["building","factory"]},{"id":":japanese_castle:","symbol":"🏯","group":"travel","keywords":["castle","Japanese"]},{"id":":castle:","symbol":"🏰","group":"travel","keywords":["castle","European"]},{"id":":wedding:","symbol":"💒","group":"travel","keywords":["chapel","romance","wedding"]},{"id":":tokyo_tower:","symbol":"🗼","group":"travel","keywords":["Tokyo","tower"]},{"id":":statue_of_liberty:","symbol":"🗽","group":"travel","keywords":["liberty","statue","Statue of Liberty"]},{"id":":church:","symbol":"⛪","group":"travel","keywords":["Christian","church","cross","religion"]},{"id":":mosque:","symbol":"🕌","group":"travel","keywords":["islam","mosque","Muslim","religion"]},{"id":":synagogue:","symbol":"🕍","group":"travel","keywords":["Jew","Jewish","religion","synagogue","temple"]},{"id":":shinto_shrine:","symbol":"⛩","group":"travel","keywords":["religion","shinto","shrine"]},{"id":":kaaba:","symbol":"🕋","group":"travel","keywords":["islam","kaaba","Muslim","religion"]},{"id":":fountain:","symbol":"⛲","group":"travel","keywords":["fountain"]},{"id":":tent:","symbol":"⛺","group":"travel","keywords":["camping","tent"]},{"id":":foggy:","symbol":"🌁","group":"travel","keywords":["fog","foggy"]},{"id":":night_with_stars:","symbol":"🌃","group":"travel","keywords":["night","night with stars","star"]},{"id":":cityscape:","symbol":"🏙","group":"travel","keywords":["city","cityscape"]},{"id":":sunrise_over_mountains:","symbol":"🌄","group":"travel","keywords":["morning","mountain","sun","sunrise","sunrise over mountains"]},{"id":":sunrise:","symbol":"🌅","group":"travel","keywords":["morning","sun","sunrise"]},{"id":":cityscape_at_dusk:","symbol":"🌆","group":"travel","keywords":["city","cityscape at dusk","dusk","evening","landscape","sunset"]},{"id":":sunset:","symbol":"🌇","group":"travel","keywords":["dusk","sun","sunset"]},{"id":":bridge_at_night:","symbol":"🌉","group":"travel","keywords":["bridge","bridge at night","night"]},{"id":":hot_springs:","symbol":"♨","group":"travel","keywords":["hot","hotsprings","springs","steaming"]},{"id":":milky_way:","symbol":"🌌","group":"travel","keywords":["milky way","space"]},{"id":":carousel_horse:","symbol":"🎠","group":"travel","keywords":["carousel","horse"]},{"id":":ferris_wheel:","symbol":"🎡","group":"travel","keywords":["amusement park","ferris","wheel"]},{"id":":roller_coaster:","symbol":"🎢","group":"travel","keywords":["amusement park","coaster","roller"]},{"id":":barber_pole:","symbol":"💈","group":"travel","keywords":["barber","haircut","pole"]},{"id":":circus_tent:","symbol":"🎪","group":"travel","keywords":["circus","tent"]},{"id":":locomotive:","symbol":"🚂","group":"travel","keywords":["engine","locomotive","railway","steam","train"]},{"id":":railway_car:","symbol":"🚃","group":"travel","keywords":["car","electric","railway","train","tram","trolleybus"]},{"id":":high-speed_train:","symbol":"🚄","group":"travel","keywords":["high-speed train","railway","shinkansen","speed","train"]},{"id":":bullet_train:","symbol":"🚅","group":"travel","keywords":["bullet","railway","shinkansen","speed","train"]},{"id":":train:","symbol":"🚆","group":"travel","keywords":["railway","train"]},{"id":":metro:","symbol":"🚇","group":"travel","keywords":["metro","subway"]},{"id":":light_rail:","symbol":"🚈","group":"travel","keywords":["light rail","railway"]},{"id":":station:","symbol":"🚉","group":"travel","keywords":["railway","station","train"]},{"id":":tram:","symbol":"🚊","group":"travel","keywords":["tram","trolleybus"]},{"id":":monorail:","symbol":"🚝","group":"travel","keywords":["monorail","vehicle"]},{"id":":mountain_railway:","symbol":"🚞","group":"travel","keywords":["car","mountain","railway"]},{"id":":tram_car:","symbol":"🚋","group":"travel","keywords":["car","tram","trolleybus"]},{"id":":bus:","symbol":"🚌","group":"travel","keywords":["bus","vehicle"]},{"id":":oncoming_bus:","symbol":"🚍","group":"travel","keywords":["bus","oncoming"]},{"id":":trolleybus:","symbol":"🚎","group":"travel","keywords":["bus","tram","trolley","trolleybus"]},{"id":":minibus:","symbol":"🚐","group":"travel","keywords":["bus","minibus"]},{"id":":ambulance:","symbol":"🚑","group":"travel","keywords":["ambulance","vehicle"]},{"id":":fire_engine:","symbol":"🚒","group":"travel","keywords":["engine","fire","truck"]},{"id":":police_car:","symbol":"🚓","group":"travel","keywords":["car","patrol","police"]},{"id":":oncoming_police_car:","symbol":"🚔","group":"travel","keywords":["car","oncoming","police"]},{"id":":taxi:","symbol":"🚕","group":"travel","keywords":["taxi","vehicle"]},{"id":":oncoming_taxi:","symbol":"🚖","group":"travel","keywords":["oncoming","taxi"]},{"id":":automobile:","symbol":"🚗","group":"travel","keywords":["automobile","car"]},{"id":":oncoming_automobile:","symbol":"🚘","group":"travel","keywords":["automobile","car","oncoming"]},{"id":":sport_utility_vehicle:","symbol":"🚙","group":"travel","keywords":["recreational","sport utility","sport utility vehicle"]},{"id":":delivery_truck:","symbol":"🚚","group":"travel","keywords":["delivery","truck"]},{"id":":articulated_lorry:","symbol":"🚛","group":"travel","keywords":["articulated lorry","lorry","semi","truck"]},{"id":":tractor:","symbol":"🚜","group":"travel","keywords":["tractor","vehicle"]},{"id":":bicycle:","symbol":"🚲","group":"travel","keywords":["bicycle","bike"]},{"id":":kick_scooter:","symbol":"🛴","group":"travel","keywords":["kick","scooter"]},{"id":":motor_scooter:","symbol":"🛵","group":"travel","keywords":["motor","scooter"]},{"id":":bus_stop:","symbol":"🚏","group":"travel","keywords":["bus","busstop","stop"]},{"id":":motorway:","symbol":"🛣","group":"travel","keywords":["highway","motorway","road"]},{"id":":railway_track:","symbol":"🛤","group":"travel","keywords":["railway","railway track","train"]},{"id":":oil_drum:","symbol":"🛢","group":"travel","keywords":["drum","oil"]},{"id":":fuel_pump:","symbol":"⛽","group":"travel","keywords":["diesel","fuel","fuelpump","gas","pump","station"]},{"id":":police_car_light:","symbol":"🚨","group":"travel","keywords":["beacon","car","light","police","revolving"]},{"id":":horizontal_traffic_light:","symbol":"🚥","group":"travel","keywords":["horizontal traffic light","light","signal","traffic"]},{"id":":vertical_traffic_light:","symbol":"🚦","group":"travel","keywords":["light","signal","traffic","vertical traffic light"]},{"id":":stop_sign:","symbol":"🛑","group":"travel","keywords":["octagonal","sign","stop"]},{"id":":construction:","symbol":"🚧","group":"travel","keywords":["barrier","construction"]},{"id":":anchor:","symbol":"⚓","group":"travel","keywords":["anchor","ship","tool"]},{"id":":sailboat:","symbol":"⛵","group":"travel","keywords":["boat","resort","sailboat","sea","yacht"]},{"id":":canoe:","symbol":"🛶","group":"travel","keywords":["boat","canoe"]},{"id":":speedboat:","symbol":"🚤","group":"travel","keywords":["boat","speedboat"]},{"id":":passenger_ship:","symbol":"🛳","group":"travel","keywords":["passenger","ship"]},{"id":":ferry:","symbol":"⛴","group":"travel","keywords":["boat","ferry","passenger"]},{"id":":motor_boat:","symbol":"🛥","group":"travel","keywords":["boat","motor boat","motorboat"]},{"id":":ship:","symbol":"🚢","group":"travel","keywords":["boat","passenger","ship"]},{"id":":airplane:","symbol":"✈","group":"travel","keywords":["aeroplane","airplane"]},{"id":":small_airplane:","symbol":"🛩","group":"travel","keywords":["aeroplane","airplane","small airplane"]},{"id":":airplane_departure:","symbol":"🛫","group":"travel","keywords":["aeroplane","airplane","check-in","departure","departures"]},{"id":":airplane_arrival:","symbol":"🛬","group":"travel","keywords":["aeroplane","airplane","airplane arrival","arrivals","arriving","landing"]},{"id":":seat:","symbol":"💺","group":"travel","keywords":["chair","seat"]},{"id":":helicopter:","symbol":"🚁","group":"travel","keywords":["helicopter","vehicle"]},{"id":":suspension_railway:","symbol":"🚟","group":"travel","keywords":["railway","suspension"]},{"id":":mountain_cableway:","symbol":"🚠","group":"travel","keywords":["cable","gondola","mountain","mountain cableway"]},{"id":":aerial_tramway:","symbol":"🚡","group":"travel","keywords":["aerial","cable","car","gondola","tramway"]},{"id":":satellite:","symbol":"🛰","group":"travel","keywords":["satellite","space"]},{"id":":rocket:","symbol":"🚀","group":"travel","keywords":["rocket","space"]},{"id":":flying_saucer:","symbol":"🛸","group":"travel","keywords":["flying saucer","UFO"]},{"id":":bellhop_bell:","symbol":"🛎","group":"travel","keywords":["bell","bellhop","hotel"]},{"id":":hourglass_done:","symbol":"⌛","group":"travel","keywords":["hourglass done","sand","timer"]},{"id":":hourglass_not_done:","symbol":"⏳","group":"travel","keywords":["hourglass","hourglass not done","sand","timer"]},{"id":":watch:","symbol":"⌚","group":"travel","keywords":["clock","watch"]},{"id":":alarm_clock:","symbol":"⏰","group":"travel","keywords":["alarm","clock"]},{"id":":stopwatch:","symbol":"⏱","group":"travel","keywords":["clock","stopwatch"]},{"id":":timer_clock:","symbol":"⏲","group":"travel","keywords":["clock","timer"]},{"id":":mantelpiece_clock:","symbol":"🕰","group":"travel","keywords":["clock","mantelpiece clock"]},{"id":":twelve_o’clock:","symbol":"🕛","group":"travel","keywords":["00","12","12:00","clock","o’clock","twelve"]},{"id":":twelve-thirty:","symbol":"🕧","group":"travel","keywords":["12","12:30","clock","thirty","twelve","twelve-thirty"]},{"id":":one_o’clock:","symbol":"🕐","group":"travel","keywords":["00","1","1:00","clock","o’clock","one"]},{"id":":one-thirty:","symbol":"🕜","group":"travel","keywords":["1","1:30","clock","one","one-thirty","thirty"]},{"id":":two_o’clock:","symbol":"🕑","group":"travel","keywords":["00","2","2:00","clock","o’clock","two"]},{"id":":two-thirty:","symbol":"🕝","group":"travel","keywords":["2","2:30","clock","thirty","two","two-thirty"]},{"id":":three_o’clock:","symbol":"🕒","group":"travel","keywords":["00","3","3:00","clock","o’clock","three"]},{"id":":three-thirty:","symbol":"🕞","group":"travel","keywords":["3","3:30","clock","thirty","three","three-thirty"]},{"id":":four_o’clock:","symbol":"🕓","group":"travel","keywords":["00","4","4:00","clock","four","o’clock"]},{"id":":four-thirty:","symbol":"🕟","group":"travel","keywords":["4","4:30","clock","four","four-thirty","thirty"]},{"id":":five_o’clock:","symbol":"🕔","group":"travel","keywords":["00","5","5:00","clock","five","o’clock"]},{"id":":five-thirty:","symbol":"🕠","group":"travel","keywords":["5","5:30","clock","five","five-thirty","thirty"]},{"id":":six_o’clock:","symbol":"🕕","group":"travel","keywords":["00","6","6:00","clock","o’clock","six"]},{"id":":six-thirty:","symbol":"🕡","group":"travel","keywords":["6","6:30","clock","six","six-thirty","thirty"]},{"id":":seven_o’clock:","symbol":"🕖","group":"travel","keywords":["00","7","7:00","clock","o’clock","seven"]},{"id":":seven-thirty:","symbol":"🕢","group":"travel","keywords":["7","7:30","clock","seven","seven-thirty","thirty"]},{"id":":eight_o’clock:","symbol":"🕗","group":"travel","keywords":["00","8","8:00","clock","eight","o’clock"]},{"id":":eight-thirty:","symbol":"🕣","group":"travel","keywords":["8","8:30","clock","eight","eight-thirty","thirty"]},{"id":":nine_o’clock:","symbol":"🕘","group":"travel","keywords":["00","9","9:00","clock","nine","o’clock"]},{"id":":nine-thirty:","symbol":"🕤","group":"travel","keywords":["9","9:30","clock","nine","nine-thirty","thirty"]},{"id":":ten_o’clock:","symbol":"🕙","group":"travel","keywords":["00","10","10:00","clock","o’clock","ten"]},{"id":":ten-thirty:","symbol":"🕥","group":"travel","keywords":["10","10:30","clock","ten","ten-thirty","thirty"]},{"id":":eleven_o’clock:","symbol":"🕚","group":"travel","keywords":["00","11","11:00","clock","eleven","o’clock"]},{"id":":eleven-thirty:","symbol":"🕦","group":"travel","keywords":["11","11:30","clock","eleven","eleven-thirty","thirty"]},{"id":":new_moon:","symbol":"🌑","group":"travel","keywords":["dark","moon","new moon"]},{"id":":waxing_crescent_moon:","symbol":"🌒","group":"travel","keywords":["crescent","moon","waxing"]},{"id":":first_quarter_moon:","symbol":"🌓","group":"travel","keywords":["first quarter moon","moon","quarter"]},{"id":":waxing_gibbous_moon:","symbol":"🌔","group":"travel","keywords":["gibbous","moon","waxing"]},{"id":":full_moon:","symbol":"🌕","group":"travel","keywords":["full","moon"]},{"id":":waning_gibbous_moon:","symbol":"🌖","group":"travel","keywords":["gibbous","moon","waning"]},{"id":":last_quarter_moon:","symbol":"🌗","group":"travel","keywords":["last quarter moon","moon","quarter"]},{"id":":waning_crescent_moon:","symbol":"🌘","group":"travel","keywords":["crescent","moon","waning"]},{"id":":crescent_moon:","symbol":"🌙","group":"travel","keywords":["crescent","moon"]},{"id":":new_moon_face:","symbol":"🌚","group":"travel","keywords":["face","moon","new moon face"]},{"id":":first_quarter_moon_face:","symbol":"🌛","group":"travel","keywords":["face","first quarter moon face","moon","quarter"]},{"id":":last_quarter_moon_face:","symbol":"🌜","group":"travel","keywords":["face","last quarter moon face","moon","quarter"]},{"id":":thermometer:","symbol":"🌡","group":"travel","keywords":["thermometer","weather"]},{"id":":sun:","symbol":"☀","group":"travel","keywords":["bright","rays","sun","sunny"]},{"id":":full_moon_face:","symbol":"🌝","group":"travel","keywords":["bright","face","full","moon"]},{"id":":sun_with_face:","symbol":"🌞","group":"travel","keywords":["bright","face","sun","sun with face"]},{"id":":star:","symbol":"⭐","group":"travel","keywords":["star"]},{"id":":glowing_star:","symbol":"🌟","group":"travel","keywords":["glittery","glow","glowing star","shining","sparkle","star"]},{"id":":shooting_star:","symbol":"🌠","group":"travel","keywords":["falling","shooting","star"]},{"id":":cloud:","symbol":"☁","group":"travel","keywords":["cloud","weather"]},{"id":":sun_behind_cloud:","symbol":"⛅","group":"travel","keywords":["cloud","sun","sun behind cloud"]},{"id":":cloud_with_lightning_and_rain:","symbol":"⛈","group":"travel","keywords":["cloud","cloud with lightning and rain","rain","thunder"]},{"id":":sun_behind_small_cloud:","symbol":"🌤","group":"travel","keywords":["cloud","sun","sun behind small cloud"]},{"id":":sun_behind_large_cloud:","symbol":"🌥","group":"travel","keywords":["cloud","sun","sun behind large cloud"]},{"id":":sun_behind_rain_cloud:","symbol":"🌦","group":"travel","keywords":["cloud","rain","sun","sun behind rain cloud"]},{"id":":cloud_with_rain:","symbol":"🌧","group":"travel","keywords":["cloud","cloud with rain","rain"]},{"id":":cloud_with_snow:","symbol":"🌨","group":"travel","keywords":["cloud","cloud with snow","cold","snow"]},{"id":":cloud_with_lightning:","symbol":"🌩","group":"travel","keywords":["cloud","cloud with lightning","lightning"]},{"id":":tornado:","symbol":"🌪","group":"travel","keywords":["cloud","tornado","whirlwind"]},{"id":":fog:","symbol":"🌫","group":"travel","keywords":["cloud","fog"]},{"id":":wind_face:","symbol":"🌬","group":"travel","keywords":["blow","cloud","face","wind"]},{"id":":cyclone:","symbol":"🌀","group":"travel","keywords":["cyclone","dizzy","hurricane","twister","typhoon"]},{"id":":rainbow:","symbol":"🌈","group":"travel","keywords":["rain","rainbow"]},{"id":":closed_umbrella:","symbol":"🌂","group":"travel","keywords":["closed umbrella","clothing","rain","umbrella"]},{"id":":umbrella:","symbol":"☂","group":"travel","keywords":["clothing","rain","umbrella"]},{"id":":umbrella_with_rain_drops:","symbol":"☔","group":"travel","keywords":["clothing","drop","rain","umbrella","umbrella with rain drops"]},{"id":":umbrella_on_ground:","symbol":"⛱","group":"travel","keywords":["rain","sun","umbrella","umbrella on ground"]},{"id":":high_voltage:","symbol":"⚡","group":"travel","keywords":["danger","electric","high voltage","lightning","voltage","zap"]},{"id":":snowflake:","symbol":"❄","group":"travel","keywords":["cold","snow","snowflake"]},{"id":":snowman:","symbol":"☃","group":"travel","keywords":["cold","snow","snowman"]},{"id":":snowman_without_snow:","symbol":"⛄","group":"travel","keywords":["cold","snow","snowman","snowman without snow"]},{"id":":comet:","symbol":"☄","group":"travel","keywords":["comet","space"]},{"id":":fire:","symbol":"🔥","group":"travel","keywords":["fire","flame","tool"]},{"id":":droplet:","symbol":"💧","group":"travel","keywords":["cold","comic","drop","droplet","sweat"]},{"id":":water_wave:","symbol":"🌊","group":"travel","keywords":["ocean","water","wave"]},{"id":":jack-o-lantern:","symbol":"🎃","group":"activities","keywords":["celebration","halloween","jack","jack-o-lantern","lantern"]},{"id":":christmas_tree:","symbol":"🎄","group":"activities","keywords":["celebration","Christmas","tree"]},{"id":":fireworks:","symbol":"🎆","group":"activities","keywords":["celebration","fireworks"]},{"id":":sparkler:","symbol":"🎇","group":"activities","keywords":["celebration","fireworks","sparkle","sparkler"]},{"id":":sparkles:","symbol":"✨","group":"activities","keywords":["sparkle","sparkles","star"]},{"id":":balloon:","symbol":"🎈","group":"activities","keywords":["balloon","celebration"]},{"id":":party_popper:","symbol":"🎉","group":"activities","keywords":["celebration","party","popper","tada"]},{"id":":confetti_ball:","symbol":"🎊","group":"activities","keywords":["ball","celebration","confetti"]},{"id":":tanabata_tree:","symbol":"🎋","group":"activities","keywords":["banner","celebration","Japanese","tanabata tree","tree"]},{"id":":pine_decoration:","symbol":"🎍","group":"activities","keywords":["bamboo","celebration","Japanese","pine","pine decoration"]},{"id":":japanese_dolls:","symbol":"🎎","group":"activities","keywords":["celebration","doll","festival","Japanese","Japanese dolls"]},{"id":":carp_streamer:","symbol":"🎏","group":"activities","keywords":["carp","celebration","streamer"]},{"id":":wind_chime:","symbol":"🎐","group":"activities","keywords":["bell","celebration","chime","wind"]},{"id":":moon_viewing_ceremony:","symbol":"🎑","group":"activities","keywords":["celebration","ceremony","moon","moon viewing ceremony"]},{"id":":ribbon:","symbol":"🎀","group":"activities","keywords":["celebration","ribbon"]},{"id":":wrapped_gift:","symbol":"🎁","group":"activities","keywords":["box","celebration","gift","present","wrapped"]},{"id":":reminder_ribbon:","symbol":"🎗","group":"activities","keywords":["celebration","reminder","ribbon"]},{"id":":admission_tickets:","symbol":"🎟","group":"activities","keywords":["admission","admission tickets","ticket"]},{"id":":ticket:","symbol":"🎫","group":"activities","keywords":["admission","ticket"]},{"id":":military_medal:","symbol":"🎖","group":"activities","keywords":["celebration","medal","military"]},{"id":":trophy:","symbol":"🏆","group":"activities","keywords":["prize","trophy"]},{"id":":sports_medal:","symbol":"🏅","group":"activities","keywords":["medal","sports medal"]},{"id":":1st_place_medal:","symbol":"🥇","group":"activities","keywords":["1st place medal","first","gold","medal"]},{"id":":2nd_place_medal:","symbol":"🥈","group":"activities","keywords":["2nd place medal","medal","second","silver"]},{"id":":3rd_place_medal:","symbol":"🥉","group":"activities","keywords":["3rd place medal","bronze","medal","third"]},{"id":":soccer_ball:","symbol":"⚽","group":"activities","keywords":["ball","football","soccer"]},{"id":":baseball:","symbol":"⚾","group":"activities","keywords":["ball","baseball"]},{"id":":basketball:","symbol":"🏀","group":"activities","keywords":["ball","basketball","hoop"]},{"id":":volleyball:","symbol":"🏐","group":"activities","keywords":["ball","game","volleyball"]},{"id":":american_football:","symbol":"🏈","group":"activities","keywords":["american","ball","football"]},{"id":":rugby_football:","symbol":"🏉","group":"activities","keywords":["ball","football","rugby"]},{"id":":tennis:","symbol":"🎾","group":"activities","keywords":["ball","racquet","tennis"]},{"id":":bowling:","symbol":"🎳","group":"activities","keywords":["ball","bowling","game"]},{"id":":cricket_game:","symbol":"🏏","group":"activities","keywords":["ball","bat","cricket game","game"]},{"id":":field_hockey:","symbol":"🏑","group":"activities","keywords":["ball","field","game","hockey","stick"]},{"id":":ice_hockey:","symbol":"🏒","group":"activities","keywords":["game","hockey","ice","puck","stick"]},{"id":":ping_pong:","symbol":"🏓","group":"activities","keywords":["ball","bat","game","paddle","ping pong","table tennis"]},{"id":":badminton:","symbol":"🏸","group":"activities","keywords":["badminton","birdie","game","racquet","shuttlecock"]},{"id":":boxing_glove:","symbol":"🥊","group":"activities","keywords":["boxing","glove"]},{"id":":martial_arts_uniform:","symbol":"🥋","group":"activities","keywords":["judo","karate","martial arts","martial arts uniform","taekwondo","uniform"]},{"id":":goal_net:","symbol":"🥅","group":"activities","keywords":["goal","net"]},{"id":":flag_in_hole:","symbol":"⛳","group":"activities","keywords":["flag in hole","golf","hole"]},{"id":":ice_skate:","symbol":"⛸","group":"activities","keywords":["ice","skate"]},{"id":":fishing_pole:","symbol":"🎣","group":"activities","keywords":["fish","fishing pole","pole"]},{"id":":running_shirt:","symbol":"🎽","group":"activities","keywords":["athletics","running","sash","shirt"]},{"id":":skis:","symbol":"🎿","group":"activities","keywords":["ski","skis","snow"]},{"id":":sled:","symbol":"🛷","group":"activities","keywords":["sled","sledge","sleigh",""]},{"id":":curling_stone:","symbol":"🥌","group":"activities","keywords":["curling stone","game","rock"]},{"id":":direct_hit:","symbol":"🎯","group":"activities","keywords":["bullseye","dart","direct hit","game","hit","target"]},{"id":":pool_8_ball:","symbol":"🎱","group":"activities","keywords":["8","ball","billiard","eight","game","pool 8 ball"]},{"id":":crystal_ball:","symbol":"🔮","group":"activities","keywords":["ball","crystal","fairy tale","fantasy","fortune","tool"]},{"id":":video_game:","symbol":"🎮","group":"activities","keywords":["controller","game","video game"]},{"id":":joystick:","symbol":"🕹","group":"activities","keywords":["game","joystick","video game"]},{"id":":slot_machine:","symbol":"🎰","group":"activities","keywords":["game","slot","slot machine"]},{"id":":game_die:","symbol":"🎲","group":"activities","keywords":["dice","die","game"]},{"id":":spade_suit:","symbol":"♠","group":"activities","keywords":["card","game","spade suit"]},{"id":":heart_suit:","symbol":"♥","group":"activities","keywords":["card","game","heart suit"]},{"id":":diamond_suit:","symbol":"♦","group":"activities","keywords":["card","diamond suit","game"]},{"id":":club_suit:","symbol":"♣","group":"activities","keywords":["card","club suit","game"]},{"id":":joker:","symbol":"🃏","group":"activities","keywords":["card","game","joker","wildcard"]},{"id":":mahjong_red_dragon:","symbol":"🀄","group":"activities","keywords":["game","mahjong","mahjong red dragon","red"]},{"id":":flower_playing_cards:","symbol":"🎴","group":"activities","keywords":["card","flower","flower playing cards","game","Japanese","playing"]},{"id":":performing_arts:","symbol":"🎭","group":"activities","keywords":["art","mask","performing","performing arts","theater","theatre"]},{"id":":framed_picture:","symbol":"🖼","group":"activities","keywords":["art","frame","framed picture","museum","painting","picture"]},{"id":":artist_palette:","symbol":"🎨","group":"activities","keywords":["art","artist palette","museum","painting","palette"]},{"id":":muted_speaker:","symbol":"🔇","group":"objects","keywords":["mute","muted speaker","quiet","silent","speaker"]},{"id":":speaker_low_volume:","symbol":"🔈","group":"objects","keywords":["soft","speaker low volume"]},{"id":":speaker_medium_volume:","symbol":"🔉","group":"objects","keywords":["medium","speaker medium volume"]},{"id":":speaker_high_volume:","symbol":"🔊","group":"objects","keywords":["loud","speaker high volume"]},{"id":":loudspeaker:","symbol":"📢","group":"objects","keywords":["loud","loudspeaker","public address"]},{"id":":megaphone:","symbol":"📣","group":"objects","keywords":["cheering","megaphone"]},{"id":":postal_horn:","symbol":"📯","group":"objects","keywords":["horn","post","postal"]},{"id":":bell:","symbol":"🔔","group":"objects","keywords":["bell"]},{"id":":bell_with_slash:","symbol":"🔕","group":"objects","keywords":["bell","bell with slash","forbidden","mute","quiet","silent"]},{"id":":musical_score:","symbol":"🎼","group":"objects","keywords":["music","musical score","score"]},{"id":":musical_note:","symbol":"🎵","group":"objects","keywords":["music","musical note","note"]},{"id":":musical_notes:","symbol":"🎶","group":"objects","keywords":["music","musical notes","note","notes"]},{"id":":studio_microphone:","symbol":"🎙","group":"objects","keywords":["mic","microphone","music","studio"]},{"id":":level_slider:","symbol":"🎚","group":"objects","keywords":["level","music","slider"]},{"id":":control_knobs:","symbol":"🎛","group":"objects","keywords":["control","knobs","music"]},{"id":":microphone:","symbol":"🎤","group":"objects","keywords":["karaoke","mic","microphone"]},{"id":":headphone:","symbol":"🎧","group":"objects","keywords":["earbud","headphone"]},{"id":":radio:","symbol":"📻","group":"objects","keywords":["radio","video"]},{"id":":saxophone:","symbol":"🎷","group":"objects","keywords":["instrument","music","sax","saxophone"]},{"id":":guitar:","symbol":"🎸","group":"objects","keywords":["guitar","instrument","music"]},{"id":":musical_keyboard:","symbol":"🎹","group":"objects","keywords":["instrument","keyboard","music","musical keyboard","piano"]},{"id":":trumpet:","symbol":"🎺","group":"objects","keywords":["instrument","music","trumpet"]},{"id":":violin:","symbol":"🎻","group":"objects","keywords":["instrument","music","violin"]},{"id":":drum:","symbol":"🥁","group":"objects","keywords":["drum","drumsticks","music"]},{"id":":mobile_phone:","symbol":"📱","group":"objects","keywords":["cell","mobile","phone","telephone"]},{"id":":mobile_phone_with_arrow:","symbol":"📲","group":"objects","keywords":["arrow","cell","mobile","mobile phone with arrow","phone","receive"]},{"id":":telephone:","symbol":"☎","group":"objects","keywords":["phone","telephone"]},{"id":":telephone_receiver:","symbol":"📞","group":"objects","keywords":["phone","receiver","telephone"]},{"id":":pager:","symbol":"📟","group":"objects","keywords":["pager"]},{"id":":fax_machine:","symbol":"📠","group":"objects","keywords":["fax","fax machine"]},{"id":":battery:","symbol":"🔋","group":"objects","keywords":["battery"]},{"id":":electric_plug:","symbol":"🔌","group":"objects","keywords":["electric","electricity","plug"]},{"id":":laptop_computer:","symbol":"💻","group":"objects","keywords":["computer","laptop computer","pc","personal"]},{"id":":desktop_computer:","symbol":"🖥","group":"objects","keywords":["computer","desktop"]},{"id":":printer:","symbol":"🖨","group":"objects","keywords":["computer","printer"]},{"id":":keyboard:","symbol":"⌨","group":"objects","keywords":["computer","keyboard"]},{"id":":computer_mouse:","symbol":"🖱","group":"objects","keywords":["computer","computer mouse"]},{"id":":trackball:","symbol":"🖲","group":"objects","keywords":["computer","trackball"]},{"id":":computer_disk:","symbol":"💽","group":"objects","keywords":["computer","disk","minidisk","optical"]},{"id":":floppy_disk:","symbol":"💾","group":"objects","keywords":["computer","disk","floppy"]},{"id":":optical_disk:","symbol":"💿","group":"objects","keywords":["cd","computer","disk","optical"]},{"id":":dvd:","symbol":"📀","group":"objects","keywords":["blu-ray","computer","disk","dvd","optical"]},{"id":":movie_camera:","symbol":"🎥","group":"objects","keywords":["camera","cinema","movie"]},{"id":":film_frames:","symbol":"🎞","group":"objects","keywords":["cinema","film","frames","movie"]},{"id":":film_projector:","symbol":"📽","group":"objects","keywords":["cinema","film","movie","projector","video"]},{"id":":clapper_board:","symbol":"🎬","group":"objects","keywords":["clapper","clapper board","movie"]},{"id":":television:","symbol":"📺","group":"objects","keywords":["television","tv","video"]},{"id":":camera:","symbol":"📷","group":"objects","keywords":["camera","video"]},{"id":":camera_with_flash:","symbol":"📸","group":"objects","keywords":["camera","camera with flash","flash","video"]},{"id":":video_camera:","symbol":"📹","group":"objects","keywords":["camera","video"]},{"id":":videocassette:","symbol":"📼","group":"objects","keywords":["tape","vhs","video","videocassette"]},{"id":":magnifying_glass_tilted_left:","symbol":"🔍","group":"objects","keywords":["glass","magnifying","magnifying glass tilted left","search","tool"]},{"id":":magnifying_glass_tilted_right:","symbol":"🔎","group":"objects","keywords":["glass","magnifying","magnifying glass tilted right","search","tool"]},{"id":":candle:","symbol":"🕯","group":"objects","keywords":["candle","light"]},{"id":":light_bulb:","symbol":"💡","group":"objects","keywords":["bulb","comic","electric","idea","light"]},{"id":":flashlight:","symbol":"🔦","group":"objects","keywords":["electric","flashlight","light","tool","torch"]},{"id":":red_paper_lantern:","symbol":"🏮","group":"objects","keywords":["bar","lantern","light","red","red paper lantern"]},{"id":":notebook_with_decorative_cover:","symbol":"📔","group":"objects","keywords":["book","cover","decorated","notebook","notebook with decorative cover"]},{"id":":closed_book:","symbol":"📕","group":"objects","keywords":["book","closed"]},{"id":":open_book:","symbol":"📖","group":"objects","keywords":["book","open"]},{"id":":green_book:","symbol":"📗","group":"objects","keywords":["book","green"]},{"id":":blue_book:","symbol":"📘","group":"objects","keywords":["blue","book"]},{"id":":orange_book:","symbol":"📙","group":"objects","keywords":["book","orange"]},{"id":":books:","symbol":"📚","group":"objects","keywords":["book","books"]},{"id":":notebook:","symbol":"📓","group":"objects","keywords":["notebook"]},{"id":":ledger:","symbol":"📒","group":"objects","keywords":["ledger","notebook"]},{"id":":page_with_curl:","symbol":"📃","group":"objects","keywords":["curl","document","page","page with curl"]},{"id":":scroll:","symbol":"📜","group":"objects","keywords":["paper","scroll"]},{"id":":page_facing_up:","symbol":"📄","group":"objects","keywords":["document","page","page facing up"]},{"id":":newspaper:","symbol":"📰","group":"objects","keywords":["news","newspaper","paper"]},{"id":":rolled-up_newspaper:","symbol":"🗞","group":"objects","keywords":["news","newspaper","paper","rolled","rolled-up newspaper"]},{"id":":bookmark_tabs:","symbol":"📑","group":"objects","keywords":["bookmark","mark","marker","tabs"]},{"id":":bookmark:","symbol":"🔖","group":"objects","keywords":["bookmark","mark"]},{"id":":label:","symbol":"🏷","group":"objects","keywords":["label"]},{"id":":money_bag:","symbol":"💰","group":"objects","keywords":["bag","dollar","money","moneybag"]},{"id":":yen_banknote:","symbol":"💴","group":"objects","keywords":["banknote","bill","currency","money","note","yen"]},{"id":":dollar_banknote:","symbol":"💵","group":"objects","keywords":["banknote","bill","currency","dollar","money","note"]},{"id":":euro_banknote:","symbol":"💶","group":"objects","keywords":["banknote","bill","currency","euro","money","note"]},{"id":":pound_banknote:","symbol":"💷","group":"objects","keywords":["banknote","bill","currency","money","note","pound"]},{"id":":money_with_wings:","symbol":"💸","group":"objects","keywords":["banknote","bill","fly","money","money with wings","wings"]},{"id":":credit_card:","symbol":"💳","group":"objects","keywords":["card","credit","money"]},{"id":":chart_increasing_with_yen:","symbol":"💹","group":"objects","keywords":["chart","chart increasing with yen","graph","growth","money","yen"]},{"id":":currency_exchange:","symbol":"💱","group":"objects","keywords":["bank","currency","exchange","money"]},{"id":":heavy_dollar_sign:","symbol":"💲","group":"objects","keywords":["currency","dollar","heavy dollar sign","money"]},{"id":":envelope:","symbol":"✉","group":"objects","keywords":["email","envelope","letter"]},{"id":":e-mail:","symbol":"📧","group":"objects","keywords":["e-mail","email","letter","mail"]},{"id":":incoming_envelope:","symbol":"📨","group":"objects","keywords":["e-mail","email","envelope","incoming","letter","receive"]},{"id":":envelope_with_arrow:","symbol":"📩","group":"objects","keywords":["arrow","e-mail","email","envelope","envelope with arrow","outgoing"]},{"id":":outbox_tray:","symbol":"📤","group":"objects","keywords":["box","letter","mail","outbox","sent","tray"]},{"id":":inbox_tray:","symbol":"📥","group":"objects","keywords":["box","inbox","letter","mail","receive","tray"]},{"id":":package:","symbol":"📦","group":"objects","keywords":["box","package","parcel"]},{"id":":closed_mailbox_with_raised_flag:","symbol":"📫","group":"objects","keywords":["closed","closed mailbox with raised flag","mail","mailbox","postbox"]},{"id":":closed_mailbox_with_lowered_flag:","symbol":"📪","group":"objects","keywords":["closed","closed mailbox with lowered flag","lowered","mail","mailbox","postbox"]},{"id":":open_mailbox_with_raised_flag:","symbol":"📬","group":"objects","keywords":["mail","mailbox","open","open mailbox with raised flag","postbox"]},{"id":":open_mailbox_with_lowered_flag:","symbol":"📭","group":"objects","keywords":["lowered","mail","mailbox","open","open mailbox with lowered flag","postbox"]},{"id":":postbox:","symbol":"📮","group":"objects","keywords":["mail","mailbox","postbox"]},{"id":":ballot_box_with_ballot:","symbol":"🗳","group":"objects","keywords":["ballot","ballot box with ballot","box"]},{"id":":pencil:","symbol":"✏","group":"objects","keywords":["pencil"]},{"id":":black_nib:","symbol":"✒","group":"objects","keywords":["black nib","nib","pen"]},{"id":":fountain_pen:","symbol":"🖋","group":"objects","keywords":["fountain","pen"]},{"id":":pen:","symbol":"🖊","group":"objects","keywords":["ballpoint","pen"]},{"id":":paintbrush:","symbol":"🖌","group":"objects","keywords":["paintbrush","painting"]},{"id":":crayon:","symbol":"🖍","group":"objects","keywords":["crayon"]},{"id":":memo:","symbol":"📝","group":"objects","keywords":["memo","pencil"]},{"id":":briefcase:","symbol":"💼","group":"objects","keywords":["briefcase"]},{"id":":file_folder:","symbol":"📁","group":"objects","keywords":["file","folder"]},{"id":":open_file_folder:","symbol":"📂","group":"objects","keywords":["file","folder","open"]},{"id":":card_index_dividers:","symbol":"🗂","group":"objects","keywords":["card","dividers","index"]},{"id":":calendar:","symbol":"📅","group":"objects","keywords":["calendar","date"]},{"id":":tear-off_calendar:","symbol":"📆","group":"objects","keywords":["calendar","tear-off calendar"]},{"id":":spiral_notepad:","symbol":"🗒","group":"objects","keywords":["note","pad","spiral","spiral notepad"]},{"id":":spiral_calendar:","symbol":"🗓","group":"objects","keywords":["calendar","pad","spiral"]},{"id":":card_index:","symbol":"📇","group":"objects","keywords":["card","index","rolodex"]},{"id":":chart_increasing:","symbol":"📈","group":"objects","keywords":["chart","chart increasing","graph","growth","trend","upward"]},{"id":":chart_decreasing:","symbol":"📉","group":"objects","keywords":["chart","chart decreasing","down","graph","trend"]},{"id":":bar_chart:","symbol":"📊","group":"objects","keywords":["bar","chart","graph"]},{"id":":clipboard:","symbol":"📋","group":"objects","keywords":["clipboard"]},{"id":":pushpin:","symbol":"📌","group":"objects","keywords":["pin","pushpin"]},{"id":":round_pushpin:","symbol":"📍","group":"objects","keywords":["pin","pushpin","round pushpin"]},{"id":":paperclip:","symbol":"📎","group":"objects","keywords":["paperclip"]},{"id":":linked_paperclips:","symbol":"🖇","group":"objects","keywords":["link","linked paperclips","paperclip"]},{"id":":straight_ruler:","symbol":"📏","group":"objects","keywords":["ruler","straight edge","straight ruler"]},{"id":":triangular_ruler:","symbol":"📐","group":"objects","keywords":["ruler","set","triangle","triangular ruler"]},{"id":":scissors:","symbol":"✂","group":"objects","keywords":["cutting","scissors","tool"]},{"id":":card_file_box:","symbol":"🗃","group":"objects","keywords":["box","card","file"]},{"id":":file_cabinet:","symbol":"🗄","group":"objects","keywords":["cabinet","file","filing"]},{"id":":wastebasket:","symbol":"🗑","group":"objects","keywords":["wastebasket"]},{"id":":locked:","symbol":"🔒","group":"objects","keywords":["closed","locked"]},{"id":":unlocked:","symbol":"🔓","group":"objects","keywords":["lock","open","unlock","unlocked"]},{"id":":locked_with_pen:","symbol":"🔏","group":"objects","keywords":["ink","lock","locked with pen","nib","pen","privacy"]},{"id":":locked_with_key:","symbol":"🔐","group":"objects","keywords":["closed","key","lock","locked with key","secure"]},{"id":":key:","symbol":"🔑","group":"objects","keywords":["key","lock","password"]},{"id":":old_key:","symbol":"🗝","group":"objects","keywords":["clue","key","lock","old"]},{"id":":hammer:","symbol":"🔨","group":"objects","keywords":["hammer","tool"]},{"id":":pick:","symbol":"⛏","group":"objects","keywords":["mining","pick","tool"]},{"id":":hammer_and_pick:","symbol":"⚒","group":"objects","keywords":["hammer","hammer and pick","pick","tool"]},{"id":":hammer_and_wrench:","symbol":"🛠","group":"objects","keywords":["hammer","hammer and wrench","spanner","tool","wrench"]},{"id":":dagger:","symbol":"🗡","group":"objects","keywords":["dagger","knife","weapon"]},{"id":":crossed_swords:","symbol":"⚔","group":"objects","keywords":["crossed","swords","weapon"]},{"id":":pistol:","symbol":"🔫","group":"objects","keywords":["gun","handgun","pistol","revolver","tool","weapon"]},{"id":":bow_and_arrow:","symbol":"🏹","group":"objects","keywords":["archer","arrow","bow","bow and arrow","Sagittarius","zodiac"]},{"id":":shield:","symbol":"🛡","group":"objects","keywords":["shield","weapon"]},{"id":":wrench:","symbol":"🔧","group":"objects","keywords":["spanner","tool","wrench"]},{"id":":nut_and_bolt:","symbol":"🔩","group":"objects","keywords":["bolt","nut","nut and bolt","tool"]},{"id":":gear:","symbol":"⚙","group":"objects","keywords":["cog","cogwheel","gear","tool"]},{"id":":clamp:","symbol":"🗜","group":"objects","keywords":["clamp","compress","tool","vice"]},{"id":":balance_scale:","symbol":"⚖","group":"objects","keywords":["balance","justice","Libra","scale","zodiac"]},{"id":":link:","symbol":"🔗","group":"objects","keywords":["link"]},{"id":":chains:","symbol":"⛓","group":"objects","keywords":["chain","chains"]},{"id":":alembic:","symbol":"⚗","group":"objects","keywords":["alembic","chemistry","tool"]},{"id":":microscope:","symbol":"🔬","group":"objects","keywords":["microscope","science","tool"]},{"id":":telescope:","symbol":"🔭","group":"objects","keywords":["science","telescope","tool"]},{"id":":satellite_antenna:","symbol":"📡","group":"objects","keywords":["antenna","dish","satellite"]},{"id":":syringe:","symbol":"💉","group":"objects","keywords":["medicine","needle","shot","sick","syringe"]},{"id":":pill:","symbol":"💊","group":"objects","keywords":["doctor","medicine","pill","sick"]},{"id":":door:","symbol":"🚪","group":"objects","keywords":["door"]},{"id":":bed:","symbol":"🛏","group":"objects","keywords":["bed","hotel","sleep"]},{"id":":couch_and_lamp:","symbol":"🛋","group":"objects","keywords":["couch","couch and lamp","hotel","lamp"]},{"id":":toilet:","symbol":"🚽","group":"objects","keywords":["toilet"]},{"id":":shower:","symbol":"🚿","group":"objects","keywords":["shower","water"]},{"id":":bathtub:","symbol":"🛁","group":"objects","keywords":["bath","bathtub"]},{"id":":shopping_cart:","symbol":"🛒","group":"objects","keywords":["cart","shopping","trolley"]},{"id":":cigarette:","symbol":"🚬","group":"objects","keywords":["cigarette","smoking"]},{"id":":coffin:","symbol":"⚰","group":"objects","keywords":["coffin","death"]},{"id":":funeral_urn:","symbol":"⚱","group":"objects","keywords":["ashes","death","funeral","urn"]},{"id":":moai:","symbol":"🗿","group":"objects","keywords":["face","moai","moyai","statue"]},{"id":":atm_sign:","symbol":"🏧","group":"symbols","keywords":["atm","ATM sign","automated","bank","teller"]},{"id":":litter_in_bin_sign:","symbol":"🚮","group":"symbols","keywords":["litter","litter bin","litter in bin sign"]},{"id":":potable_water:","symbol":"🚰","group":"symbols","keywords":["drinking","potable","water"]},{"id":":wheelchair_symbol:","symbol":"♿","group":"symbols","keywords":["access","wheelchair symbol"]},{"id":":men’s_room:","symbol":"🚹","group":"symbols","keywords":["lavatory","man","men’s room","restroom","wc"]},{"id":":women’s_room:","symbol":"🚺","group":"symbols","keywords":["lavatory","restroom","wc","woman","women’s room"]},{"id":":restroom:","symbol":"🚻","group":"symbols","keywords":["lavatory","restroom","WC"]},{"id":":baby_symbol:","symbol":"🚼","group":"symbols","keywords":["baby","baby symbol","changing"]},{"id":":water_closet:","symbol":"🚾","group":"symbols","keywords":["closet","lavatory","restroom","water","wc"]},{"id":":passport_control:","symbol":"🛂","group":"symbols","keywords":["control","passport"]},{"id":":customs:","symbol":"🛃","group":"symbols","keywords":["customs"]},{"id":":baggage_claim:","symbol":"🛄","group":"symbols","keywords":["baggage","claim"]},{"id":":left_luggage:","symbol":"🛅","group":"symbols","keywords":["baggage","left luggage","locker","luggage"]},{"id":":warning:","symbol":"⚠","group":"symbols","keywords":["warning"]},{"id":":children_crossing:","symbol":"🚸","group":"symbols","keywords":["child","children crossing","crossing","pedestrian","traffic"]},{"id":":no_entry:","symbol":"⛔","group":"symbols","keywords":["entry","forbidden","no","not","prohibited","traffic"]},{"id":":prohibited:","symbol":"🚫","group":"symbols","keywords":["entry","forbidden","no","not","prohibited"]},{"id":":no_bicycles:","symbol":"🚳","group":"symbols","keywords":["bicycle","bike","forbidden","no","no bicycles","prohibited"]},{"id":":no_smoking:","symbol":"🚭","group":"symbols","keywords":["forbidden","no","not","prohibited","smoking"]},{"id":":no_littering:","symbol":"🚯","group":"symbols","keywords":["forbidden","litter","no","no littering","not","prohibited"]},{"id":":non-potable_water:","symbol":"🚱","group":"symbols","keywords":["non-drinking","non-potable","water"]},{"id":":no_pedestrians:","symbol":"🚷","group":"symbols","keywords":["forbidden","no","no pedestrians","not","pedestrian","prohibited"]},{"id":":no_mobile_phones:","symbol":"📵","group":"symbols","keywords":["cell","forbidden","mobile","no","no mobile phones","phone"]},{"id":":no_one_under_eighteen:","symbol":"🔞","group":"symbols","keywords":["18","age restriction","eighteen","no one under eighteen","prohibited","underage"]},{"id":":radioactive:","symbol":"☢","group":"symbols","keywords":["radioactive","sign"]},{"id":":biohazard:","symbol":"☣","group":"symbols","keywords":["biohazard","sign"]},{"id":":up_arrow:","symbol":"⬆","group":"symbols","keywords":["arrow","cardinal","direction","north","up arrow"]},{"id":":up-right_arrow:","symbol":"↗","group":"symbols","keywords":["arrow","direction","intercardinal","northeast","up-right arrow"]},{"id":":right_arrow:","symbol":"➡","group":"symbols","keywords":["arrow","cardinal","direction","east","right arrow"]},{"id":":down-right_arrow:","symbol":"↘","group":"symbols","keywords":["arrow","direction","down-right arrow","intercardinal","southeast"]},{"id":":down_arrow:","symbol":"⬇","group":"symbols","keywords":["arrow","cardinal","direction","down","south"]},{"id":":down-left_arrow:","symbol":"↙","group":"symbols","keywords":["arrow","direction","down-left arrow","intercardinal","southwest"]},{"id":":left_arrow:","symbol":"⬅","group":"symbols","keywords":["arrow","cardinal","direction","left arrow","west"]},{"id":":up-left_arrow:","symbol":"↖","group":"symbols","keywords":["arrow","direction","intercardinal","northwest","up-left arrow"]},{"id":":up-down_arrow:","symbol":"↕","group":"symbols","keywords":["arrow","up-down arrow"]},{"id":":left-right_arrow:","symbol":"↔","group":"symbols","keywords":["arrow","left-right arrow"]},{"id":":right_arrow_curving_left:","symbol":"↩","group":"symbols","keywords":["arrow","right arrow curving left"]},{"id":":left_arrow_curving_right:","symbol":"↪","group":"symbols","keywords":["arrow","left arrow curving right"]},{"id":":right_arrow_curving_up:","symbol":"⤴","group":"symbols","keywords":["arrow","right arrow curving up"]},{"id":":right_arrow_curving_down:","symbol":"⤵","group":"symbols","keywords":["arrow","down","right arrow curving down"]},{"id":":clockwise_vertical_arrows:","symbol":"🔃","group":"symbols","keywords":["arrow","clockwise","clockwise vertical arrows","reload"]},{"id":":counterclockwise_arrows_button:","symbol":"🔄","group":"symbols","keywords":["anticlockwise","arrow","counterclockwise","counterclockwise arrows button","withershins"]},{"id":":back_arrow:","symbol":"🔙","group":"symbols","keywords":["arrow","back","BACK arrow"]},{"id":":end_arrow:","symbol":"🔚","group":"symbols","keywords":["arrow","end","END arrow"]},{"id":":on!_arrow:","symbol":"🔛","group":"symbols","keywords":["arrow","mark","on","ON! arrow"]},{"id":":soon_arrow:","symbol":"🔜","group":"symbols","keywords":["arrow","soon","SOON arrow"]},{"id":":top_arrow:","symbol":"🔝","group":"symbols","keywords":["arrow","top","TOP arrow","up"]},{"id":":place_of_worship:","symbol":"🛐","group":"symbols","keywords":["place of worship","religion","worship"]},{"id":":atom_symbol:","symbol":"⚛","group":"symbols","keywords":["atheist","atom","atom symbol"]},{"id":":om:","symbol":"🕉","group":"symbols","keywords":["Hindu","om","religion"]},{"id":":star_of_david:","symbol":"✡","group":"symbols","keywords":["David","Jew","Jewish","religion","star","star of David"]},{"id":":wheel_of_dharma:","symbol":"☸","group":"symbols","keywords":["Buddhist","dharma","religion","wheel","wheel of dharma"]},{"id":":yin_yang:","symbol":"☯","group":"symbols","keywords":["religion","tao","taoist","yang","yin"]},{"id":":latin_cross:","symbol":"✝","group":"symbols","keywords":["Christian","cross","latin cross","religion"]},{"id":":orthodox_cross:","symbol":"☦","group":"symbols","keywords":["Christian","cross","orthodox cross","religion"]},{"id":":star_and_crescent:","symbol":"☪","group":"symbols","keywords":["islam","Muslim","religion","star and crescent"]},{"id":":peace_symbol:","symbol":"☮","group":"symbols","keywords":["peace","peace symbol"]},{"id":":menorah:","symbol":"🕎","group":"symbols","keywords":["candelabrum","candlestick","menorah","religion"]},{"id":":dotted_six-pointed_star:","symbol":"🔯","group":"symbols","keywords":["dotted six-pointed star","fortune","star"]},{"id":":aries:","symbol":"♈","group":"symbols","keywords":["Aries","ram","zodiac"]},{"id":":taurus:","symbol":"♉","group":"symbols","keywords":["bull","ox","Taurus","zodiac"]},{"id":":gemini:","symbol":"♊","group":"symbols","keywords":["Gemini","twins","zodiac"]},{"id":":cancer:","symbol":"♋","group":"symbols","keywords":["Cancer","crab","zodiac"]},{"id":":leo:","symbol":"♌","group":"symbols","keywords":["Leo","lion","zodiac"]},{"id":":virgo:","symbol":"♍","group":"symbols","keywords":["Virgo","zodiac"]},{"id":":libra:","symbol":"♎","group":"symbols","keywords":["balance","justice","Libra","scales","zodiac"]},{"id":":scorpio:","symbol":"♏","group":"symbols","keywords":["Scorpio","scorpion","scorpius","zodiac"]},{"id":":sagittarius:","symbol":"♐","group":"symbols","keywords":["archer","Sagittarius","zodiac"]},{"id":":capricorn:","symbol":"♑","group":"symbols","keywords":["Capricorn","goat","zodiac"]},{"id":":aquarius:","symbol":"♒","group":"symbols","keywords":["Aquarius","bearer","water","zodiac"]},{"id":":pisces:","symbol":"♓","group":"symbols","keywords":["fish","Pisces","zodiac"]},{"id":":ophiuchus:","symbol":"⛎","group":"symbols","keywords":["bearer","Ophiuchus","serpent","snake","zodiac"]},{"id":":shuffle_tracks_button:","symbol":"🔀","group":"symbols","keywords":["arrow","crossed","shuffle tracks button"]},{"id":":repeat_button:","symbol":"🔁","group":"symbols","keywords":["arrow","clockwise","repeat","repeat button"]},{"id":":repeat_single_button:","symbol":"🔂","group":"symbols","keywords":["arrow","clockwise","once","repeat single button"]},{"id":":play_button:","symbol":"▶","group":"symbols","keywords":["arrow","play","play button","right","triangle"]},{"id":":fast-forward_button:","symbol":"⏩","group":"symbols","keywords":["arrow","double","fast","fast-forward button","forward"]},{"id":":next_track_button:","symbol":"⏭","group":"symbols","keywords":["arrow","next scene","next track","next track button","triangle"]},{"id":":play_or_pause_button:","symbol":"⏯","group":"symbols","keywords":["arrow","pause","play","play or pause button","right","triangle"]},{"id":":reverse_button:","symbol":"◀","group":"symbols","keywords":["arrow","left","reverse","reverse button","triangle"]},{"id":":fast_reverse_button:","symbol":"⏪","group":"symbols","keywords":["arrow","double","fast reverse button","rewind"]},{"id":":last_track_button:","symbol":"⏮","group":"symbols","keywords":["arrow","last track button","previous scene","previous track","triangle"]},{"id":":upwards_button:","symbol":"🔼","group":"symbols","keywords":["arrow","button","red","upwards button"]},{"id":":fast_up_button:","symbol":"⏫","group":"symbols","keywords":["arrow","double","fast up button"]},{"id":":downwards_button:","symbol":"🔽","group":"symbols","keywords":["arrow","button","down","downwards button","red"]},{"id":":fast_down_button:","symbol":"⏬","group":"symbols","keywords":["arrow","double","down","fast down button"]},{"id":":pause_button:","symbol":"⏸","group":"symbols","keywords":["bar","double","pause","pause button","vertical"]},{"id":":stop_button:","symbol":"⏹","group":"symbols","keywords":["square","stop","stop button"]},{"id":":record_button:","symbol":"⏺","group":"symbols","keywords":["circle","record","record button"]},{"id":":eject_button:","symbol":"⏏","group":"symbols","keywords":["eject","eject button"]},{"id":":cinema:","symbol":"🎦","group":"symbols","keywords":["camera","cinema","film","movie"]},{"id":":dim_button:","symbol":"🔅","group":"symbols","keywords":["brightness","dim","dim button","low"]},{"id":":bright_button:","symbol":"🔆","group":"symbols","keywords":["bright","bright button","brightness"]},{"id":":antenna_bars:","symbol":"📶","group":"symbols","keywords":["antenna","antenna bars","bar","cell","mobile","phone"]},{"id":":vibration_mode:","symbol":"📳","group":"symbols","keywords":["cell","mobile","mode","phone","telephone","vibration"]},{"id":":mobile_phone_off:","symbol":"📴","group":"symbols","keywords":["cell","mobile","off","phone","telephone"]},{"id":":female_sign:","symbol":"♀","group":"symbols","keywords":["female sign","woman"]},{"id":":male_sign:","symbol":"♂","group":"symbols","keywords":["male sign","man"]},{"id":":medical_symbol:","symbol":"⚕","group":"symbols","keywords":["aesculapius","medical symbol","medicine","staff"]},{"id":":recycling_symbol:","symbol":"♻","group":"symbols","keywords":["recycle","recycling symbol"]},{"id":":fleur-de-lis:","symbol":"⚜","group":"symbols","keywords":["fleur-de-lis"]},{"id":":trident_emblem:","symbol":"🔱","group":"symbols","keywords":["anchor","emblem","ship","tool","trident"]},{"id":":name_badge:","symbol":"📛","group":"symbols","keywords":["badge","name"]},{"id":":japanese_symbol_for_beginner:","symbol":"🔰","group":"symbols","keywords":["beginner","chevron","Japanese","Japanese symbol for beginner","leaf"]},{"id":":heavy_large_circle:","symbol":"⭕","group":"symbols","keywords":["circle","heavy large circle","o"]},{"id":":white_heavy_check_mark:","symbol":"✅","group":"symbols","keywords":["check","mark","white heavy check mark"]},{"id":":ballot_box_with_check:","symbol":"☑","group":"symbols","keywords":["ballot","ballot box with check","box","check"]},{"id":":heavy_check_mark:","symbol":"✔","group":"symbols","keywords":["check","heavy check mark","mark"]},{"id":":heavy_multiplication_x:","symbol":"✖","group":"symbols","keywords":["cancel","heavy multiplication x","multiplication","multiply","x"]},{"id":":cross_mark:","symbol":"❌","group":"symbols","keywords":["cancel","cross mark","mark","multiplication","multiply","x"]},{"id":":cross_mark_button:","symbol":"❎","group":"symbols","keywords":["cross mark button","mark","square"]},{"id":":heavy_plus_sign:","symbol":"➕","group":"symbols","keywords":["heavy plus sign","math","plus"]},{"id":":heavy_minus_sign:","symbol":"➖","group":"symbols","keywords":["heavy minus sign","math","minus"]},{"id":":heavy_division_sign:","symbol":"➗","group":"symbols","keywords":["division","heavy division sign","math"]},{"id":":curly_loop:","symbol":"➰","group":"symbols","keywords":["curl","curly loop","loop"]},{"id":":double_curly_loop:","symbol":"➿","group":"symbols","keywords":["curl","double","double curly loop","loop"]},{"id":":part_alternation_mark:","symbol":"〽","group":"symbols","keywords":["mark","part","part alternation mark"]},{"id":":eight-spoked_asterisk:","symbol":"✳","group":"symbols","keywords":["asterisk","eight-spoked asterisk"]},{"id":":eight-pointed_star:","symbol":"✴","group":"symbols","keywords":["eight-pointed star","star"]},{"id":":sparkle:","symbol":"❇","group":"symbols","keywords":["sparkle"]},{"id":":double_exclamation_mark:","symbol":"‼","group":"symbols","keywords":["bangbang","double exclamation mark","exclamation","mark","punctuation"]},{"id":":exclamation_question_mark:","symbol":"⁉","group":"symbols","keywords":["exclamation","interrobang","mark","punctuation","question"]},{"id":":question_mark:","symbol":"❓","group":"symbols","keywords":["mark","punctuation","question"]},{"id":":white_question_mark:","symbol":"❔","group":"symbols","keywords":["mark","outlined","punctuation","question","white question mark"]},{"id":":white_exclamation_mark:","symbol":"❕","group":"symbols","keywords":["exclamation","mark","outlined","punctuation","white exclamation mark"]},{"id":":exclamation_mark:","symbol":"❗","group":"symbols","keywords":["exclamation","mark","punctuation"]},{"id":":wavy_dash:","symbol":"〰","group":"symbols","keywords":["dash","punctuation","wavy"]},{"id":":copyright:","symbol":"©","group":"symbols","keywords":["copyright"]},{"id":":registered:","symbol":"®","group":"symbols","keywords":["registered"]},{"id":":trade_mark:","symbol":"™","group":"symbols","keywords":["mark","tm","trade mark","trademark"]},{"id":":keycap_#:","symbol":"#️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_*:","symbol":"*️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_0:","symbol":"0️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_1:","symbol":"1️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_2:","symbol":"2️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_3:","symbol":"3️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_4:","symbol":"4️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_5:","symbol":"5️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_6:","symbol":"6️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_7:","symbol":"7️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_8:","symbol":"8️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_9:","symbol":"9️⃣","group":"symbols","keywords":["keycap"]},{"id":":keycap_10:","symbol":"🔟","group":"symbols","keywords":["keycap"]},{"id":":hundred_points:","symbol":"💯","group":"symbols","keywords":["100","full","hundred","hundred points","score"]},{"id":":input_latin_uppercase:","symbol":"🔠","group":"symbols","keywords":["ABCD","input","latin","letters","uppercase"]},{"id":":input_latin_lowercase:","symbol":"🔡","group":"symbols","keywords":["abcd","input","latin","letters","lowercase"]},{"id":":input_numbers:","symbol":"🔢","group":"symbols","keywords":["1234","input","numbers"]},{"id":":input_symbols:","symbol":"🔣","group":"symbols","keywords":["〒♪&%","input","input symbols"]},{"id":":input_latin_letters:","symbol":"🔤","group":"symbols","keywords":["abc","alphabet","input","latin","letters"]},{"id":":a_button_(blood_type):","symbol":"🅰","group":"symbols","keywords":["a","A button (blood type)","blood type"]},{"id":":ab_button_(blood_type):","symbol":"🆎","group":"symbols","keywords":["ab","AB button (blood type)","blood type"]},{"id":":b_button_(blood_type):","symbol":"🅱","group":"symbols","keywords":["b","B button (blood type)","blood type"]},{"id":":cl_button:","symbol":"🆑","group":"symbols","keywords":["cl","CL button"]},{"id":":cool_button:","symbol":"🆒","group":"symbols","keywords":["cool","COOL button"]},{"id":":free_button:","symbol":"🆓","group":"symbols","keywords":["free","FREE button"]},{"id":":information:","symbol":"ℹ","group":"symbols","keywords":["i","information"]},{"id":":id_button:","symbol":"🆔","group":"symbols","keywords":["id","ID button","identity"]},{"id":":circled_m:","symbol":"Ⓜ","group":"symbols","keywords":["circle","circled M","m"]},{"id":":new_button:","symbol":"🆕","group":"symbols","keywords":["new","NEW button"]},{"id":":ng_button:","symbol":"🆖","group":"symbols","keywords":["ng","NG button"]},{"id":":o_button_(blood_type):","symbol":"🅾","group":"symbols","keywords":["blood type","o","O button (blood type)"]},{"id":":ok_button:","symbol":"🆗","group":"symbols","keywords":["OK","OK button"]},{"id":":p_button:","symbol":"🅿","group":"symbols","keywords":["P button","parking"]},{"id":":sos_button:","symbol":"🆘","group":"symbols","keywords":["help","sos","SOS button"]},{"id":":up!_button:","symbol":"🆙","group":"symbols","keywords":["mark","up","UP! button"]},{"id":":vs_button:","symbol":"🆚","group":"symbols","keywords":["versus","vs","VS button"]},{"id":":japanese_“here”_button:","symbol":"🈁","group":"symbols","keywords":["“here”","Japanese","Japanese “here” button","katakana","ココ"]},{"id":":japanese_“service_charge”_button:","symbol":"🈂","group":"symbols","keywords":["“service charge”","Japanese","Japanese “service charge” button","katakana","サ"]},{"id":":japanese_“monthly_amount”_button:","symbol":"🈷","group":"symbols","keywords":["“monthly amount”","ideograph","Japanese","Japanese “monthly amount” button","月"]},{"id":":japanese_“not_free_of_charge”_button:","symbol":"🈶","group":"symbols","keywords":["“not free of charge”","ideograph","Japanese","Japanese “not free of charge” button","有"]},{"id":":japanese_“reserved”_button:","symbol":"🈯","group":"symbols","keywords":["“reserved”","ideograph","Japanese","Japanese “reserved” button","指"]},{"id":":japanese_“bargain”_button:","symbol":"🉐","group":"symbols","keywords":["“bargain”","ideograph","Japanese","Japanese “bargain” button","得"]},{"id":":japanese_“discount”_button:","symbol":"🈹","group":"symbols","keywords":["“discount”","ideograph","Japanese","Japanese “discount” button","割"]},{"id":":japanese_“free_of_charge”_button:","symbol":"🈚","group":"symbols","keywords":["“free of charge”","ideograph","Japanese","Japanese “free of charge” button","無"]},{"id":":japanese_“prohibited”_button:","symbol":"🈲","group":"symbols","keywords":["“prohibited”","ideograph","Japanese","Japanese “prohibited” button","禁"]},{"id":":japanese_“acceptable”_button:","symbol":"🉑","group":"symbols","keywords":["“acceptable”","ideograph","Japanese","Japanese “acceptable” button","可"]},{"id":":japanese_“application”_button:","symbol":"🈸","group":"symbols","keywords":["“application”","ideograph","Japanese","Japanese “application” button","申"]},{"id":":japanese_“passing_grade”_button:","symbol":"🈴","group":"symbols","keywords":["“passing grade”","ideograph","Japanese","Japanese “passing grade” button","合"]},{"id":":japanese_“vacancy”_button:","symbol":"🈳","group":"symbols","keywords":["“vacancy”","ideograph","Japanese","Japanese “vacancy” button","空"]},{"id":":japanese_“congratulations”_button:","symbol":"㊗","group":"symbols","keywords":["“congratulations”","ideograph","Japanese","Japanese “congratulations” button","祝"]},{"id":":japanese_“secret”_button:","symbol":"㊙","group":"symbols","keywords":["“secret”","ideograph","Japanese","Japanese “secret” button","秘"]},{"id":":japanese_“open_for_business”_button:","symbol":"🈺","group":"symbols","keywords":["“open for business”","ideograph","Japanese","Japanese “open for business” button","営"]},{"id":":japanese_“no_vacancy”_button:","symbol":"🈵","group":"symbols","keywords":["“no vacancy”","ideograph","Japanese","Japanese “no vacancy” button","満"]},{"id":":red_circle:","symbol":"🔴","group":"symbols","keywords":["circle","geometric","red"]},{"id":":blue_circle:","symbol":"🔵","group":"symbols","keywords":["blue","circle","geometric"]},{"id":":white_circle:","symbol":"⚪","group":"symbols","keywords":["circle","geometric","white circle"]},{"id":":black_circle:","symbol":"⚫","group":"symbols","keywords":["black circle","circle","geometric"]},{"id":":white_large_square:","symbol":"⬜","group":"symbols","keywords":["geometric","square","white large square"]},{"id":":black_large_square:","symbol":"⬛","group":"symbols","keywords":["black large square","geometric","square"]},{"id":":black_medium_square:","symbol":"◼","group":"symbols","keywords":["black medium square","geometric","square"]},{"id":":white_medium_square:","symbol":"◻","group":"symbols","keywords":["geometric","square","white medium square"]},{"id":":white_medium-small_square:","symbol":"◽","group":"symbols","keywords":["geometric","square","white medium-small square"]},{"id":":black_medium-small_square:","symbol":"◾","group":"symbols","keywords":["black medium-small square","geometric","square"]},{"id":":white_small_square:","symbol":"▫","group":"symbols","keywords":["geometric","square","white small square"]},{"id":":black_small_square:","symbol":"▪","group":"symbols","keywords":["black small square","geometric","square"]},{"id":":large_orange_diamond:","symbol":"🔶","group":"symbols","keywords":["diamond","geometric","large orange diamond","orange"]},{"id":":large_blue_diamond:","symbol":"🔷","group":"symbols","keywords":["blue","diamond","geometric","large blue diamond"]},{"id":":small_orange_diamond:","symbol":"🔸","group":"symbols","keywords":["diamond","geometric","orange","small orange diamond"]},{"id":":small_blue_diamond:","symbol":"🔹","group":"symbols","keywords":["blue","diamond","geometric","small blue diamond"]},{"id":":red_triangle_pointed_up:","symbol":"🔺","group":"symbols","keywords":["geometric","red","red triangle pointed up"]},{"id":":red_triangle_pointed_down:","symbol":"🔻","group":"symbols","keywords":["down","geometric","red","red triangle pointed down"]},{"id":":diamond_with_a_dot:","symbol":"💠","group":"symbols","keywords":["comic","diamond","diamond with a dot","geometric","inside"]},{"id":":radio_button:","symbol":"🔘","group":"symbols","keywords":["button","geometric","radio"]},{"id":":black_square_button:","symbol":"🔲","group":"symbols","keywords":["black square button","button","geometric","square"]},{"id":":white_square_button:","symbol":"🔳","group":"symbols","keywords":["button","geometric","outlined","square","white square button"]},{"id":":chequered_flag:","symbol":"🏁","group":"flags","keywords":["checkered","chequered","chequered flag","racing"]},{"id":":triangular_flag:","symbol":"🚩","group":"flags","keywords":["post","triangular flag"]},{"id":":crossed_flags:","symbol":"🎌","group":"flags","keywords":["celebration","cross","crossed","crossed flags","Japanese"]},{"id":":black_flag:","symbol":"🏴","group":"flags","keywords":["black flag","waving"]},{"id":":white_flag:","symbol":"🏳","group":"flags","keywords":["waving","white flag"]},{"id":":rainbow_flag:","symbol":"🏳️‍🌈","group":"flags","keywords":["rainbow","rainbow flag"]},{"id":":flag_ascension_island:","symbol":"🇦🇨","group":"flags","keywords":["flag"]},{"id":":flag_andorra:","symbol":"🇦🇩","group":"flags","keywords":["flag"]},{"id":":flag_united_arab_emirates:","symbol":"🇦🇪","group":"flags","keywords":["flag"]},{"id":":flag_afghanistan:","symbol":"🇦🇫","group":"flags","keywords":["flag"]},{"id":":flag_antigua_&_barbuda:","symbol":"🇦🇬","group":"flags","keywords":["flag"]},{"id":":flag_anguilla:","symbol":"🇦🇮","group":"flags","keywords":["flag"]},{"id":":flag_albania:","symbol":"🇦🇱","group":"flags","keywords":["flag"]},{"id":":flag_armenia:","symbol":"🇦🇲","group":"flags","keywords":["flag"]},{"id":":flag_angola:","symbol":"🇦🇴","group":"flags","keywords":["flag"]},{"id":":flag_antarctica:","symbol":"🇦🇶","group":"flags","keywords":["flag"]},{"id":":flag_argentina:","symbol":"🇦🇷","group":"flags","keywords":["flag"]},{"id":":flag_american_samoa:","symbol":"🇦🇸","group":"flags","keywords":["flag"]},{"id":":flag_austria:","symbol":"🇦🇹","group":"flags","keywords":["flag"]},{"id":":flag_australia:","symbol":"🇦🇺","group":"flags","keywords":["flag"]},{"id":":flag_aruba:","symbol":"🇦🇼","group":"flags","keywords":["flag"]},{"id":":flag_åland_islands:","symbol":"🇦🇽","group":"flags","keywords":["flag"]},{"id":":flag_azerbaijan:","symbol":"🇦🇿","group":"flags","keywords":["flag"]},{"id":":flag_bosnia_&_herzegovina:","symbol":"🇧🇦","group":"flags","keywords":["flag"]},{"id":":flag_barbados:","symbol":"🇧🇧","group":"flags","keywords":["flag"]},{"id":":flag_bangladesh:","symbol":"🇧🇩","group":"flags","keywords":["flag"]},{"id":":flag_belgium:","symbol":"🇧🇪","group":"flags","keywords":["flag"]},{"id":":flag_burkina_faso:","symbol":"🇧🇫","group":"flags","keywords":["flag"]},{"id":":flag_bulgaria:","symbol":"🇧🇬","group":"flags","keywords":["flag"]},{"id":":flag_bahrain:","symbol":"🇧🇭","group":"flags","keywords":["flag"]},{"id":":flag_burundi:","symbol":"🇧🇮","group":"flags","keywords":["flag"]},{"id":":flag_benin:","symbol":"🇧🇯","group":"flags","keywords":["flag"]},{"id":":flag_st._barthélemy:","symbol":"🇧🇱","group":"flags","keywords":["flag"]},{"id":":flag_bermuda:","symbol":"🇧🇲","group":"flags","keywords":["flag"]},{"id":":flag_brunei:","symbol":"🇧🇳","group":"flags","keywords":["flag"]},{"id":":flag_bolivia:","symbol":"🇧🇴","group":"flags","keywords":["flag"]},{"id":":flag_caribbean_netherlands:","symbol":"🇧🇶","group":"flags","keywords":["flag"]},{"id":":flag_brazil:","symbol":"🇧🇷","group":"flags","keywords":["flag"]},{"id":":flag_bahamas:","symbol":"🇧🇸","group":"flags","keywords":["flag"]},{"id":":flag_bhutan:","symbol":"🇧🇹","group":"flags","keywords":["flag"]},{"id":":flag_bouvet_island:","symbol":"🇧🇻","group":"flags","keywords":["flag"]},{"id":":flag_botswana:","symbol":"🇧🇼","group":"flags","keywords":["flag"]},{"id":":flag_belarus:","symbol":"🇧🇾","group":"flags","keywords":["flag"]},{"id":":flag_belize:","symbol":"🇧🇿","group":"flags","keywords":["flag"]},{"id":":flag_canada:","symbol":"🇨🇦","group":"flags","keywords":["flag"]},{"id":":flag_cocos_(keeling)_islands:","symbol":"🇨🇨","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_kinshasa:","symbol":"🇨🇩","group":"flags","keywords":["flag"]},{"id":":flag_central_african_republic:","symbol":"🇨🇫","group":"flags","keywords":["flag"]},{"id":":flag_congo_-_brazzaville:","symbol":"🇨🇬","group":"flags","keywords":["flag"]},{"id":":flag_switzerland:","symbol":"🇨🇭","group":"flags","keywords":["flag"]},{"id":":flag_côte_d’ivoire:","symbol":"🇨🇮","group":"flags","keywords":["flag"]},{"id":":flag_cook_islands:","symbol":"🇨🇰","group":"flags","keywords":["flag"]},{"id":":flag_chile:","symbol":"🇨🇱","group":"flags","keywords":["flag"]},{"id":":flag_cameroon:","symbol":"🇨🇲","group":"flags","keywords":["flag"]},{"id":":flag_china:","symbol":"🇨🇳","group":"flags","keywords":["flag"]},{"id":":flag_colombia:","symbol":"🇨🇴","group":"flags","keywords":["flag"]},{"id":":flag_clipperton_island:","symbol":"🇨🇵","group":"flags","keywords":["flag"]},{"id":":flag_costa_rica:","symbol":"🇨🇷","group":"flags","keywords":["flag"]},{"id":":flag_cuba:","symbol":"🇨🇺","group":"flags","keywords":["flag"]},{"id":":flag_cape_verde:","symbol":"🇨🇻","group":"flags","keywords":["flag"]},{"id":":flag_curaçao:","symbol":"🇨🇼","group":"flags","keywords":["flag"]},{"id":":flag_christmas_island:","symbol":"🇨🇽","group":"flags","keywords":["flag"]},{"id":":flag_cyprus:","symbol":"🇨🇾","group":"flags","keywords":["flag"]},{"id":":flag_czechia:","symbol":"🇨🇿","group":"flags","keywords":["flag"]},{"id":":flag_germany:","symbol":"🇩🇪","group":"flags","keywords":["flag"]},{"id":":flag_diego_garcia:","symbol":"🇩🇬","group":"flags","keywords":["flag"]},{"id":":flag_djibouti:","symbol":"🇩🇯","group":"flags","keywords":["flag"]},{"id":":flag_denmark:","symbol":"🇩🇰","group":"flags","keywords":["flag"]},{"id":":flag_dominica:","symbol":"🇩🇲","group":"flags","keywords":["flag"]},{"id":":flag_dominican_republic:","symbol":"🇩🇴","group":"flags","keywords":["flag"]},{"id":":flag_algeria:","symbol":"🇩🇿","group":"flags","keywords":["flag"]},{"id":":flag_ceuta_&_melilla:","symbol":"🇪🇦","group":"flags","keywords":["flag"]},{"id":":flag_ecuador:","symbol":"🇪🇨","group":"flags","keywords":["flag"]},{"id":":flag_estonia:","symbol":"🇪🇪","group":"flags","keywords":["flag"]},{"id":":flag_egypt:","symbol":"🇪🇬","group":"flags","keywords":["flag"]},{"id":":flag_western_sahara:","symbol":"🇪🇭","group":"flags","keywords":["flag"]},{"id":":flag_eritrea:","symbol":"🇪🇷","group":"flags","keywords":["flag"]},{"id":":flag_spain:","symbol":"🇪🇸","group":"flags","keywords":["flag"]},{"id":":flag_ethiopia:","symbol":"🇪🇹","group":"flags","keywords":["flag"]},{"id":":flag_european_union:","symbol":"🇪🇺","group":"flags","keywords":["flag"]},{"id":":flag_finland:","symbol":"🇫🇮","group":"flags","keywords":["flag"]},{"id":":flag_fiji:","symbol":"🇫🇯","group":"flags","keywords":["flag"]},{"id":":flag_falkland_islands:","symbol":"🇫🇰","group":"flags","keywords":["flag"]},{"id":":flag_micronesia:","symbol":"🇫🇲","group":"flags","keywords":["flag"]},{"id":":flag_faroe_islands:","symbol":"🇫🇴","group":"flags","keywords":["flag"]},{"id":":flag_france:","symbol":"🇫🇷","group":"flags","keywords":["flag"]},{"id":":flag_gabon:","symbol":"🇬🇦","group":"flags","keywords":["flag"]},{"id":":flag_united_kingdom:","symbol":"🇬🇧","group":"flags","keywords":["flag"]},{"id":":flag_grenada:","symbol":"🇬🇩","group":"flags","keywords":["flag"]},{"id":":flag_georgia:","symbol":"🇬🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_guiana:","symbol":"🇬🇫","group":"flags","keywords":["flag"]},{"id":":flag_guernsey:","symbol":"🇬🇬","group":"flags","keywords":["flag"]},{"id":":flag_ghana:","symbol":"🇬🇭","group":"flags","keywords":["flag"]},{"id":":flag_gibraltar:","symbol":"🇬🇮","group":"flags","keywords":["flag"]},{"id":":flag_greenland:","symbol":"🇬🇱","group":"flags","keywords":["flag"]},{"id":":flag_gambia:","symbol":"🇬🇲","group":"flags","keywords":["flag"]},{"id":":flag_guinea:","symbol":"🇬🇳","group":"flags","keywords":["flag"]},{"id":":flag_guadeloupe:","symbol":"🇬🇵","group":"flags","keywords":["flag"]},{"id":":flag_equatorial_guinea:","symbol":"🇬🇶","group":"flags","keywords":["flag"]},{"id":":flag_greece:","symbol":"🇬🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_georgia_&_south_sandwich_islands:","symbol":"🇬🇸","group":"flags","keywords":["flag"]},{"id":":flag_guatemala:","symbol":"🇬🇹","group":"flags","keywords":["flag"]},{"id":":flag_guam:","symbol":"🇬🇺","group":"flags","keywords":["flag"]},{"id":":flag_guinea-bissau:","symbol":"🇬🇼","group":"flags","keywords":["flag"]},{"id":":flag_guyana:","symbol":"🇬🇾","group":"flags","keywords":["flag"]},{"id":":flag_hong_kong_sar_china:","symbol":"🇭🇰","group":"flags","keywords":["flag"]},{"id":":flag_heard_&_mcdonald_islands:","symbol":"🇭🇲","group":"flags","keywords":["flag"]},{"id":":flag_honduras:","symbol":"🇭🇳","group":"flags","keywords":["flag"]},{"id":":flag_croatia:","symbol":"🇭🇷","group":"flags","keywords":["flag"]},{"id":":flag_haiti:","symbol":"🇭🇹","group":"flags","keywords":["flag"]},{"id":":flag_hungary:","symbol":"🇭🇺","group":"flags","keywords":["flag"]},{"id":":flag_canary_islands:","symbol":"🇮🇨","group":"flags","keywords":["flag"]},{"id":":flag_indonesia:","symbol":"🇮🇩","group":"flags","keywords":["flag"]},{"id":":flag_ireland:","symbol":"🇮🇪","group":"flags","keywords":["flag"]},{"id":":flag_israel:","symbol":"🇮🇱","group":"flags","keywords":["flag"]},{"id":":flag_isle_of_man:","symbol":"🇮🇲","group":"flags","keywords":["flag"]},{"id":":flag_india:","symbol":"🇮🇳","group":"flags","keywords":["flag"]},{"id":":flag_british_indian_ocean_territory:","symbol":"🇮🇴","group":"flags","keywords":["flag"]},{"id":":flag_iraq:","symbol":"🇮🇶","group":"flags","keywords":["flag"]},{"id":":flag_iran:","symbol":"🇮🇷","group":"flags","keywords":["flag"]},{"id":":flag_iceland:","symbol":"🇮🇸","group":"flags","keywords":["flag"]},{"id":":flag_italy:","symbol":"🇮🇹","group":"flags","keywords":["flag"]},{"id":":flag_jersey:","symbol":"🇯🇪","group":"flags","keywords":["flag"]},{"id":":flag_jamaica:","symbol":"🇯🇲","group":"flags","keywords":["flag"]},{"id":":flag_jordan:","symbol":"🇯🇴","group":"flags","keywords":["flag"]},{"id":":flag_japan:","symbol":"🇯🇵","group":"flags","keywords":["flag"]},{"id":":flag_kenya:","symbol":"🇰🇪","group":"flags","keywords":["flag"]},{"id":":flag_kyrgyzstan:","symbol":"🇰🇬","group":"flags","keywords":["flag"]},{"id":":flag_cambodia:","symbol":"🇰🇭","group":"flags","keywords":["flag"]},{"id":":flag_kiribati:","symbol":"🇰🇮","group":"flags","keywords":["flag"]},{"id":":flag_comoros:","symbol":"🇰🇲","group":"flags","keywords":["flag"]},{"id":":flag_st._kitts_&_nevis:","symbol":"🇰🇳","group":"flags","keywords":["flag"]},{"id":":flag_north_korea:","symbol":"🇰🇵","group":"flags","keywords":["flag"]},{"id":":flag_south_korea:","symbol":"🇰🇷","group":"flags","keywords":["flag"]},{"id":":flag_kuwait:","symbol":"🇰🇼","group":"flags","keywords":["flag"]},{"id":":flag_cayman_islands:","symbol":"🇰🇾","group":"flags","keywords":["flag"]},{"id":":flag_kazakhstan:","symbol":"🇰🇿","group":"flags","keywords":["flag"]},{"id":":flag_laos:","symbol":"🇱🇦","group":"flags","keywords":["flag"]},{"id":":flag_lebanon:","symbol":"🇱🇧","group":"flags","keywords":["flag"]},{"id":":flag_st._lucia:","symbol":"🇱🇨","group":"flags","keywords":["flag"]},{"id":":flag_liechtenstein:","symbol":"🇱🇮","group":"flags","keywords":["flag"]},{"id":":flag_sri_lanka:","symbol":"🇱🇰","group":"flags","keywords":["flag"]},{"id":":flag_liberia:","symbol":"🇱🇷","group":"flags","keywords":["flag"]},{"id":":flag_lesotho:","symbol":"🇱🇸","group":"flags","keywords":["flag"]},{"id":":flag_lithuania:","symbol":"🇱🇹","group":"flags","keywords":["flag"]},{"id":":flag_luxembourg:","symbol":"🇱🇺","group":"flags","keywords":["flag"]},{"id":":flag_latvia:","symbol":"🇱🇻","group":"flags","keywords":["flag"]},{"id":":flag_libya:","symbol":"🇱🇾","group":"flags","keywords":["flag"]},{"id":":flag_morocco:","symbol":"🇲🇦","group":"flags","keywords":["flag"]},{"id":":flag_monaco:","symbol":"🇲🇨","group":"flags","keywords":["flag"]},{"id":":flag_moldova:","symbol":"🇲🇩","group":"flags","keywords":["flag"]},{"id":":flag_montenegro:","symbol":"🇲🇪","group":"flags","keywords":["flag"]},{"id":":flag_st._martin:","symbol":"🇲🇫","group":"flags","keywords":["flag"]},{"id":":flag_madagascar:","symbol":"🇲🇬","group":"flags","keywords":["flag"]},{"id":":flag_marshall_islands:","symbol":"🇲🇭","group":"flags","keywords":["flag"]},{"id":":flag_macedonia:","symbol":"🇲🇰","group":"flags","keywords":["flag"]},{"id":":flag_mali:","symbol":"🇲🇱","group":"flags","keywords":["flag"]},{"id":":flag_myanmar_(burma):","symbol":"🇲🇲","group":"flags","keywords":["flag"]},{"id":":flag_mongolia:","symbol":"🇲🇳","group":"flags","keywords":["flag"]},{"id":":flag_macau_sar_china:","symbol":"🇲🇴","group":"flags","keywords":["flag"]},{"id":":flag_northern_mariana_islands:","symbol":"🇲🇵","group":"flags","keywords":["flag"]},{"id":":flag_martinique:","symbol":"🇲🇶","group":"flags","keywords":["flag"]},{"id":":flag_mauritania:","symbol":"🇲🇷","group":"flags","keywords":["flag"]},{"id":":flag_montserrat:","symbol":"🇲🇸","group":"flags","keywords":["flag"]},{"id":":flag_malta:","symbol":"🇲🇹","group":"flags","keywords":["flag"]},{"id":":flag_mauritius:","symbol":"🇲🇺","group":"flags","keywords":["flag"]},{"id":":flag_maldives:","symbol":"🇲🇻","group":"flags","keywords":["flag"]},{"id":":flag_malawi:","symbol":"🇲🇼","group":"flags","keywords":["flag"]},{"id":":flag_mexico:","symbol":"🇲🇽","group":"flags","keywords":["flag"]},{"id":":flag_malaysia:","symbol":"🇲🇾","group":"flags","keywords":["flag"]},{"id":":flag_mozambique:","symbol":"🇲🇿","group":"flags","keywords":["flag"]},{"id":":flag_namibia:","symbol":"🇳🇦","group":"flags","keywords":["flag"]},{"id":":flag_new_caledonia:","symbol":"🇳🇨","group":"flags","keywords":["flag"]},{"id":":flag_niger:","symbol":"🇳🇪","group":"flags","keywords":["flag"]},{"id":":flag_norfolk_island:","symbol":"🇳🇫","group":"flags","keywords":["flag"]},{"id":":flag_nigeria:","symbol":"🇳🇬","group":"flags","keywords":["flag"]},{"id":":flag_nicaragua:","symbol":"🇳🇮","group":"flags","keywords":["flag"]},{"id":":flag_netherlands:","symbol":"🇳🇱","group":"flags","keywords":["flag"]},{"id":":flag_norway:","symbol":"🇳🇴","group":"flags","keywords":["flag"]},{"id":":flag_nepal:","symbol":"🇳🇵","group":"flags","keywords":["flag"]},{"id":":flag_nauru:","symbol":"🇳🇷","group":"flags","keywords":["flag"]},{"id":":flag_niue:","symbol":"🇳🇺","group":"flags","keywords":["flag"]},{"id":":flag_new_zealand:","symbol":"🇳🇿","group":"flags","keywords":["flag"]},{"id":":flag_oman:","symbol":"🇴🇲","group":"flags","keywords":["flag"]},{"id":":flag_panama:","symbol":"🇵🇦","group":"flags","keywords":["flag"]},{"id":":flag_peru:","symbol":"🇵🇪","group":"flags","keywords":["flag"]},{"id":":flag_french_polynesia:","symbol":"🇵🇫","group":"flags","keywords":["flag"]},{"id":":flag_papua_new_guinea:","symbol":"🇵🇬","group":"flags","keywords":["flag"]},{"id":":flag_philippines:","symbol":"🇵🇭","group":"flags","keywords":["flag"]},{"id":":flag_pakistan:","symbol":"🇵🇰","group":"flags","keywords":["flag"]},{"id":":flag_poland:","symbol":"🇵🇱","group":"flags","keywords":["flag"]},{"id":":flag_st._pierre_&_miquelon:","symbol":"🇵🇲","group":"flags","keywords":["flag"]},{"id":":flag_pitcairn_islands:","symbol":"🇵🇳","group":"flags","keywords":["flag"]},{"id":":flag_puerto_rico:","symbol":"🇵🇷","group":"flags","keywords":["flag"]},{"id":":flag_palestinian_territories:","symbol":"🇵🇸","group":"flags","keywords":["flag"]},{"id":":flag_portugal:","symbol":"🇵🇹","group":"flags","keywords":["flag"]},{"id":":flag_palau:","symbol":"🇵🇼","group":"flags","keywords":["flag"]},{"id":":flag_paraguay:","symbol":"🇵🇾","group":"flags","keywords":["flag"]},{"id":":flag_qatar:","symbol":"🇶🇦","group":"flags","keywords":["flag"]},{"id":":flag_réunion:","symbol":"🇷🇪","group":"flags","keywords":["flag"]},{"id":":flag_romania:","symbol":"🇷🇴","group":"flags","keywords":["flag"]},{"id":":flag_serbia:","symbol":"🇷🇸","group":"flags","keywords":["flag"]},{"id":":flag_russia:","symbol":"🇷🇺","group":"flags","keywords":["flag"]},{"id":":flag_rwanda:","symbol":"🇷🇼","group":"flags","keywords":["flag"]},{"id":":flag_saudi_arabia:","symbol":"🇸🇦","group":"flags","keywords":["flag"]},{"id":":flag_solomon_islands:","symbol":"🇸🇧","group":"flags","keywords":["flag"]},{"id":":flag_seychelles:","symbol":"🇸🇨","group":"flags","keywords":["flag"]},{"id":":flag_sudan:","symbol":"🇸🇩","group":"flags","keywords":["flag"]},{"id":":flag_sweden:","symbol":"🇸🇪","group":"flags","keywords":["flag"]},{"id":":flag_singapore:","symbol":"🇸🇬","group":"flags","keywords":["flag"]},{"id":":flag_st._helena:","symbol":"🇸🇭","group":"flags","keywords":["flag"]},{"id":":flag_slovenia:","symbol":"🇸🇮","group":"flags","keywords":["flag"]},{"id":":flag_svalbard_&_jan_mayen:","symbol":"🇸🇯","group":"flags","keywords":["flag"]},{"id":":flag_slovakia:","symbol":"🇸🇰","group":"flags","keywords":["flag"]},{"id":":flag_sierra_leone:","symbol":"🇸🇱","group":"flags","keywords":["flag"]},{"id":":flag_san_marino:","symbol":"🇸🇲","group":"flags","keywords":["flag"]},{"id":":flag_senegal:","symbol":"🇸🇳","group":"flags","keywords":["flag"]},{"id":":flag_somalia:","symbol":"🇸🇴","group":"flags","keywords":["flag"]},{"id":":flag_suriname:","symbol":"🇸🇷","group":"flags","keywords":["flag"]},{"id":":flag_south_sudan:","symbol":"🇸🇸","group":"flags","keywords":["flag"]},{"id":":flag_são_tomé_&_príncipe:","symbol":"🇸🇹","group":"flags","keywords":["flag"]},{"id":":flag_el_salvador:","symbol":"🇸🇻","group":"flags","keywords":["flag"]},{"id":":flag_sint_maarten:","symbol":"🇸🇽","group":"flags","keywords":["flag"]},{"id":":flag_syria:","symbol":"🇸🇾","group":"flags","keywords":["flag"]},{"id":":flag_swaziland:","symbol":"🇸🇿","group":"flags","keywords":["flag"]},{"id":":flag_tristan_da_cunha:","symbol":"🇹🇦","group":"flags","keywords":["flag"]},{"id":":flag_turks_&_caicos_islands:","symbol":"🇹🇨","group":"flags","keywords":["flag"]},{"id":":flag_chad:","symbol":"🇹🇩","group":"flags","keywords":["flag"]},{"id":":flag_french_southern_territories:","symbol":"🇹🇫","group":"flags","keywords":["flag"]},{"id":":flag_togo:","symbol":"🇹🇬","group":"flags","keywords":["flag"]},{"id":":flag_thailand:","symbol":"🇹🇭","group":"flags","keywords":["flag"]},{"id":":flag_tajikistan:","symbol":"🇹🇯","group":"flags","keywords":["flag"]},{"id":":flag_tokelau:","symbol":"🇹🇰","group":"flags","keywords":["flag"]},{"id":":flag_timor-leste:","symbol":"🇹🇱","group":"flags","keywords":["flag"]},{"id":":flag_turkmenistan:","symbol":"🇹🇲","group":"flags","keywords":["flag"]},{"id":":flag_tunisia:","symbol":"🇹🇳","group":"flags","keywords":["flag"]},{"id":":flag_tonga:","symbol":"🇹🇴","group":"flags","keywords":["flag"]},{"id":":flag_turkey:","symbol":"🇹🇷","group":"flags","keywords":["flag"]},{"id":":flag_trinidad_&_tobago:","symbol":"🇹🇹","group":"flags","keywords":["flag"]},{"id":":flag_tuvalu:","symbol":"🇹🇻","group":"flags","keywords":["flag"]},{"id":":flag_taiwan:","symbol":"🇹🇼","group":"flags","keywords":["flag"]},{"id":":flag_tanzania:","symbol":"🇹🇿","group":"flags","keywords":["flag"]},{"id":":flag_ukraine:","symbol":"🇺🇦","group":"flags","keywords":["flag"]},{"id":":flag_uganda:","symbol":"🇺🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._outlying_islands:","symbol":"🇺🇲","group":"flags","keywords":["flag"]},{"id":":flag_united_nations:","symbol":"🇺🇳","group":"flags","keywords":["flag"]},{"id":":flag_united_states:","symbol":"🇺🇸","group":"flags","keywords":["flag"]},{"id":":flag_uruguay:","symbol":"🇺🇾","group":"flags","keywords":["flag"]},{"id":":flag_uzbekistan:","symbol":"🇺🇿","group":"flags","keywords":["flag"]},{"id":":flag_vatican_city:","symbol":"🇻🇦","group":"flags","keywords":["flag"]},{"id":":flag_st._vincent_&_grenadines:","symbol":"🇻🇨","group":"flags","keywords":["flag"]},{"id":":flag_venezuela:","symbol":"🇻🇪","group":"flags","keywords":["flag"]},{"id":":flag_british_virgin_islands:","symbol":"🇻🇬","group":"flags","keywords":["flag"]},{"id":":flag_u.s._virgin_islands:","symbol":"🇻🇮","group":"flags","keywords":["flag"]},{"id":":flag_vietnam:","symbol":"🇻🇳","group":"flags","keywords":["flag"]},{"id":":flag_vanuatu:","symbol":"🇻🇺","group":"flags","keywords":["flag"]},{"id":":flag_wallis_&_futuna:","symbol":"🇼🇫","group":"flags","keywords":["flag"]},{"id":":flag_samoa:","symbol":"🇼🇸","group":"flags","keywords":["flag"]},{"id":":flag_kosovo:","symbol":"🇽🇰","group":"flags","keywords":["flag"]},{"id":":flag_yemen:","symbol":"🇾🇪","group":"flags","keywords":["flag"]},{"id":":flag_mayotte:","symbol":"🇾🇹","group":"flags","keywords":["flag"]},{"id":":flag_south_africa:","symbol":"🇿🇦","group":"flags","keywords":["flag"]},{"id":":flag_zambia:","symbol":"🇿🇲","group":"flags","keywords":["flag"]},{"id":":flag_zimbabwe:","symbol":"🇿🇼","group":"flags","keywords":["flag"]},{"id":":flag_england:","symbol":"🏴󠁧󠁢󠁥󠁮󠁧󠁿","group":"flags","keywords":["flag"]},{"id":":flag_scotland:","symbol":"🏴󠁧󠁢󠁳󠁣󠁴󠁿","group":"flags","keywords":["flag"]},{"id":":flag_wales:","symbol":"🏴󠁧󠁢󠁷󠁬󠁳󠁿","group":"flags","keywords":["flag"]}] diff --git a/public/build/ckeditor/plugins/emoji/icons/emojipanel.png b/public/build/ckeditor/plugins/emoji/icons/emojipanel.png deleted file mode 100644 index b363553d..00000000 Binary files a/public/build/ckeditor/plugins/emoji/icons/emojipanel.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/emoji/icons/hidpi/emojipanel.png b/public/build/ckeditor/plugins/emoji/icons/hidpi/emojipanel.png deleted file mode 100644 index c8aefd01..00000000 Binary files a/public/build/ckeditor/plugins/emoji/icons/hidpi/emojipanel.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/emoji/lang/cs.js b/public/build/ckeditor/plugins/emoji/lang/cs.js deleted file mode 100644 index d1fc4f67..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","cs",{searchPlaceholder:"Vyhledat emodži...",searchLabel:"Vstupní pole používané pro vyhledávání a filtrování emodži v rámci panelu.",navigationLabel:"Procházení podle skupin emodži.",title:"Seznam emodži",groups:{people:"Lidé",nature:"Příroda a zvířata",food:"Jídlo a pití",travel:"Cestování a místa",activities:"Činnosti",objects:"Objekty",symbols:"Symboly",flags:"Vlajky"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/da.js b/public/build/ckeditor/plugins/emoji/lang/da.js deleted file mode 100644 index 3ad403cb..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","da",{searchPlaceholder:"Søg emojier...",searchLabel:"Indtastningsfelt ansvarligt for udsøgning og filtrering af emojier i panelet.",navigationLabel:"Grupperer navigation for emojisektioner.",title:"Emoji-liste",groups:{people:"Mennesker",nature:"Natur og dyr",food:"Mad og drikkelse",travel:"Rejser og steder",activities:"Aktiviteter",objects:"Objekter",symbols:"Symboler",flags:"Flag"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/de-ch.js b/public/build/ckeditor/plugins/emoji/lang/de-ch.js deleted file mode 100644 index a2ca0f45..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","de-ch",{searchPlaceholder:"Emoji suchen…",searchLabel:"Das Eingabefeld ermöglicht die Suche nach Emojis.",navigationLabel:"Navigieren Sie zwischen den Emoji-Kategorien.",title:"Emoji-Liste",groups:{people:"Personen",nature:"Natur und Tiere",food:"Essen und Getränke",travel:"Reisen und Orte",activities:"Aktivitäten",objects:"Objekte",symbols:"Symbole",flags:"Flaggen"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/de.js b/public/build/ckeditor/plugins/emoji/lang/de.js deleted file mode 100644 index 429923d9..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","de",{searchPlaceholder:"Emoji suchen…",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"Emoji-Liste",groups:{people:"Personen",nature:"Natur und Tiere",food:"Essen und Getränke",travel:"Reisen und Orte",activities:"Aktivitäten",objects:"Objekte",symbols:"Symbole",flags:"Flaggen"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/el.js b/public/build/ckeditor/plugins/emoji/lang/el.js deleted file mode 100644 index 08dd5648..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","el",{searchPlaceholder:"Αναζήτηση emoji…",searchLabel:"Το πεδίο εισαγωγής που ευθύνεται για την αναζήτηση και το φιλτράρισμα των emoji μέσα στον πίνακα.",navigationLabel:"Πλοήγηση ομάδων για τους τομείς των emoji.",title:"Λίστα emoji",groups:{people:"Άνθρωποι",nature:"Φύση και ζώα",food:"Τρόφιμα και ποτά",travel:"Ταξίδια και τοποθεσίες",activities:"Δραστηριότητες",objects:"Αντικείμενα",symbols:"Σύμβολα",flags:"Σημαίες"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/en-au.js b/public/build/ckeditor/plugins/emoji/lang/en-au.js deleted file mode 100644 index 7d5cb3c0..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","en-au",{searchPlaceholder:"Search emoji…",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"Emoji List",groups:{people:"People",nature:"Nature and animals",food:"Food and drinks",travel:"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/en.js b/public/build/ckeditor/plugins/emoji/lang/en.js deleted file mode 100644 index c9cb0dfd..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","en",{searchPlaceholder:"Search emoji…",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"Emoji List",groups:{people:"People",nature:"Nature and animals",food:"Food and drinks",travel:"Travel and places",activities:"Activities",objects:"Objects",symbols:"Symbols",flags:"Flags"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/et.js b/public/build/ckeditor/plugins/emoji/lang/et.js deleted file mode 100644 index 43c33cc9..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","et",{searchPlaceholder:"Otsi emotikoni...",searchLabel:"Lahter, mille abil paneelil otsida ja filtreerida emotikone.",navigationLabel:"Emotikonide gruppide vahel liikumine.",title:"Emotikonide loend",groups:{people:"Inimesed",nature:"Loodus ja loomad",food:"Toit ja joogid",travel:"Reisimine ja kohad",activities:"Tegevused",objects:"Asjad",symbols:"Sümbolid",flags:"Lipud"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/fa.js b/public/build/ckeditor/plugins/emoji/lang/fa.js deleted file mode 100644 index 5db25f3d..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","fa",{searchPlaceholder:"جست و جوی ایموجی",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"لیست ایموجی",groups:{people:"افراد",nature:"طبیعت و حیوانات",food:"غذا و نوشیدنی",travel:"سفر و اماکن",activities:"فعالیت ها",objects:"اشیا",symbols:"نماد‌ها",flags:"پرچم‌ها"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/fr.js b/public/build/ckeditor/plugins/emoji/lang/fr.js deleted file mode 100644 index ba206982..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","fr",{searchPlaceholder:"Chercher un émoticône",searchLabel:"Champ de saisie chargé de rechercher et de filtrer les émoticônes à l'intérieur du panneau",navigationLabel:"Catégorisation des sections d'émoticône",title:"Liste des émoticônes",groups:{people:"Personnes",nature:"Nature et animal",food:"Nourriture et boisson",travel:"Lieu et voyage",activities:"Activités",objects:"Objets",symbols:"Symboles",flags:"Drapeaux"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/gl.js b/public/build/ckeditor/plugins/emoji/lang/gl.js deleted file mode 100644 index 7159c124..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","gl",{searchPlaceholder:"Buscar emoji…",searchLabel:"Campo de entrada encargado de buscar e filtrar os emojis no panel.",navigationLabel:"Navegación de grupos para seccións de emojis.",title:"Lista de emojis",groups:{people:"Xente",nature:"Natureza e aimais",food:"Comida e bebida",travel:"Viaxes e lugares",activities:"Actividades",objects:"Obxectos",symbols:"Símbolos",flags:"Bandeiras"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/hr.js b/public/build/ckeditor/plugins/emoji/lang/hr.js deleted file mode 100644 index ba694c3b..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","hr",{searchPlaceholder:"Traži emoji",searchLabel:"Polje za unos odgovorno za traženje i filtriranje emoji-a.",navigationLabel:"Navigacijska grupa za emoji sekcije",title:"Lista emoji-a",groups:{people:"Ljudi",nature:"Priroda i životinje",food:"Hrana i pića",travel:"Putovanja i mjesta",activities:"Aktivnosti",objects:"Objekti",symbols:"Simboli",flags:"Zastave"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/hu.js b/public/build/ckeditor/plugins/emoji/lang/hu.js deleted file mode 100644 index bffd23f7..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","hu",{searchPlaceholder:"Emoji keresése...",searchLabel:"A beviteli mezőben kereshetőek és szűrhetőek az emojik a panelban.",navigationLabel:"Csoport navigáció az emoji szekciókhoz.",title:"Emoji lista",groups:{people:"Emberek",nature:"Természet és állatok",food:"Ételek és italok",travel:"Utazás és helyek",activities:"Tevékenységek",objects:"Tárgyak",symbols:"Szimbólumok",flags:"Zászlók"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/it.js b/public/build/ckeditor/plugins/emoji/lang/it.js deleted file mode 100644 index bf672dad..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","it",{searchPlaceholder:"Cerca emoji…",searchLabel:"Campo di input responsabile di ricerca e filtro delle emoji all'interno del pannello.",navigationLabel:"Navigazione tra gruppi per le sezioni di emoji.",title:"Elenco emoji",groups:{people:"Persone",nature:"Natura e animali",food:"Cibo e bevande",travel:"Viaggio e luoghi",activities:"Attività",objects:"Oggetti",symbols:"Simboli",flags:"Bandiere"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/nl.js b/public/build/ckeditor/plugins/emoji/lang/nl.js deleted file mode 100644 index 72e52671..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","nl",{searchPlaceholder:"Zoek emoji…",searchLabel:"Invoerveld verantwoordelijk voor het zoeken en filteren van emoji's in het paneel.",navigationLabel:"Groepsnavigatie voor emoji-secties.",title:"Emoji Lijst",groups:{people:"Mensen",nature:"Natuur en dieren",food:"Eten en drinken",travel:"Reizen en plaatsen",activities:"Activiteiten",objects:"Objecten",symbols:"Symbolen",flags:"Vlaggen"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/pl.js b/public/build/ckeditor/plugins/emoji/lang/pl.js deleted file mode 100644 index 09fdf6e7..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","pl",{searchPlaceholder:"Wyszukaj emoji...",searchLabel:"Pole odpowiedzialne za wyszukiwanie i filtrowanie emoji wewnątrz panelu.",navigationLabel:"Groups navigation for emoji sections.",title:"Lista emoji",groups:{people:"Ludzie",nature:"Natura i zwierzęta",food:"Jedzenie i picie",travel:"Podróże i miejsca",activities:"Aktywności",objects:"Obiekty",symbols:"Symbole",flags:"Flagi"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/pt-br.js b/public/build/ckeditor/plugins/emoji/lang/pt-br.js deleted file mode 100644 index 5b994125..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","pt-br",{searchPlaceholder:"Buscar emoji...",searchLabel:"Campo de texto responsável por buscar e filtrar emojis dentro do painel.",navigationLabel:"Agrupa a navegação das categorias de emojis.",title:"Lista de Emojis",groups:{people:"Pessoas",nature:"Natureza e animais",food:"Comidas e bebidas",travel:"Viagem e Lugares",activities:"Atividades",objects:"Objetos",symbols:"Símbolos",flags:"Bandeiras"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/sk.js b/public/build/ckeditor/plugins/emoji/lang/sk.js deleted file mode 100644 index 002b0c23..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","sk",{searchPlaceholder:"Nájsť emodži...",searchLabel:"Vstupné pole na hľadanie a filtrovanie emodži v paneli.",navigationLabel:"Emodži podľa skupín.",title:"Zoznam emodži",groups:{people:"Ľudia",nature:"Príroda a zvieratá",food:"Jedlá a nápoje",travel:"Cestovanie a miesta",activities:"Činnosti",objects:"Objekty",symbols:"Symboly",flags:"Vlajky"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/sr-latn.js b/public/build/ckeditor/plugins/emoji/lang/sr-latn.js deleted file mode 100644 index dc223ffe..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","sr-latn",{searchPlaceholder:"Traži emoji...",searchLabel:"Polje za pretraživanje i filtriranje emojia u panelu.",navigationLabel:"Grupna navigacija za emoji sekcije",title:"Lista emojia",groups:{people:"Lljudi",nature:"Priroda i životinje",food:"Hrana i piće",travel:"Putovanja i mesta",activities:"Aktivnosti",objects:"Predmeti",symbols:"Simboli",flags:"Zastave"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/sr.js b/public/build/ckeditor/plugins/emoji/lang/sr.js deleted file mode 100644 index da11e61e..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","sr",{searchPlaceholder:"Tражи емоји..",searchLabel:"Поље за претраживање и филтрирање емојиа у панелу.",navigationLabel:"Групна навигација за емоји секције",title:"Листа емојиа",groups:{people:"Људи",nature:"Природа и животиње",food:"Храна и пиће",travel:"Путовања и места",activities:"Активности",objects:"Предмети",symbols:"Симболи",flags:"Заставе"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/sv.js b/public/build/ckeditor/plugins/emoji/lang/sv.js deleted file mode 100644 index 11f38703..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","sv",{searchPlaceholder:"Sök emoji...",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"Emojilista",groups:{people:"Människor",nature:"Natur och djur",food:"Mat och dryck",travel:"Resor och platser",activities:"Aktiviteter",objects:"Objekt",symbols:"Symboler",flags:"Flaggor"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/tr.js b/public/build/ckeditor/plugins/emoji/lang/tr.js deleted file mode 100644 index aabe8f15..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","tr",{searchPlaceholder:"Emoji ara...",searchLabel:"Panel içindeki emojiyi aramaya ve filtrelemeye ait giriş alanı.",navigationLabel:"Emoji bölümleri için gezinti grupları",title:"Emoji Listesi",groups:{people:"İnsanlar",nature:"Doğa ve hayvanlar",food:"Yiyecek ve içecekler",travel:"Seyahat ve mekanlar",activities:"Faaliyetler",objects:"Nesneler",symbols:"Semboller",flags:"Bayraklar"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/uk.js b/public/build/ckeditor/plugins/emoji/lang/uk.js deleted file mode 100644 index 591a616e..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","uk",{searchPlaceholder:"Пошук емодзі…",searchLabel:"Поле введення, відповідальне за пошук та фільтрацію емодзі всередині панелі.",navigationLabel:"Групова навігація по розділах емодзі.",title:"Список емодзі",groups:{people:"Люди",nature:"Природа та тварини",food:"Їжа та напої",travel:"Подорожі та місця",activities:"Діяльність",objects:"Об'єкти",symbols:"Символи",flags:"Прапори"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/zh-cn.js b/public/build/ckeditor/plugins/emoji/lang/zh-cn.js deleted file mode 100644 index 2ecbe9f6..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","zh-cn",{searchPlaceholder:"搜索表情...",searchLabel:"Input field responsible for searching and filtering emoji inside panel.",navigationLabel:"Groups navigation for emoji sections.",title:"表情清单",groups:{people:"笑脸和人物",nature:"自然和动物",food:"食物和饮料",travel:"旅游和地方",activities:"活动和行为",objects:"物品和对象",symbols:"符号和标志",flags:"国旗和旗帜"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/lang/zh.js b/public/build/ckeditor/plugins/emoji/lang/zh.js deleted file mode 100644 index d3cf6786..00000000 --- a/public/build/ckeditor/plugins/emoji/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("emoji","zh",{searchPlaceholder:"搜尋顏文字……",searchLabel:"輸入欄位負責在面板中搜尋並過濾顏文字。",navigationLabel:"表情符號部份的群組導航。",title:"顏文字清單",groups:{people:"人們",nature:"自然與動物",food:"飲食",travel:"旅行與地點",activities:"活動",objects:"物件",symbols:"符號",flags:"旗幟"}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/plugin.js b/public/build/ckeditor/plugins/emoji/plugin.js deleted file mode 100644 index 7ac78b2f..00000000 --- a/public/build/ckeditor/plugins/emoji/plugin.js +++ /dev/null @@ -1,29 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function k(a){a.name||(a.name=e(a.id.replace(/::.*$/,":").replace(/^:|:$/g,"")));return a}var g=!1,f=CKEDITOR.tools.array,e=CKEDITOR.tools.htmlEncodeAttr,h=CKEDITOR.tools.createClass({$:function(a,d){var c=this.lang=a.lang.emoji,b=this;this.listeners=[];this.plugin=d;this.editor=a;this.groups=[{name:"people",sectionName:c.groups.people,svgId:"cke4-icon-emoji-2",position:{x:-21,y:0},items:[]},{name:"nature",sectionName:c.groups.nature,svgId:"cke4-icon-emoji-3",position:{x:-42,y:0},items:[]}, -{name:"food",sectionName:c.groups.food,svgId:"cke4-icon-emoji-4",position:{x:-63,y:0},items:[]},{name:"travel",sectionName:c.groups.travel,svgId:"cke4-icon-emoji-6",position:{x:-42,y:-21},items:[]},{name:"activities",sectionName:c.groups.activities,svgId:"cke4-icon-emoji-5",position:{x:-84,y:0},items:[]},{name:"objects",sectionName:c.groups.objects,svgId:"cke4-icon-emoji-7",position:{x:0,y:-21},items:[]},{name:"symbols",sectionName:c.groups.symbols,svgId:"cke4-icon-emoji-8",position:{x:-21,y:-21}, -items:[]},{name:"flags",sectionName:c.groups.flags,svgId:"cke4-icon-emoji-9",position:{x:-63,y:-21},items:[]}];this.elements={};a.ui.addToolbarGroup("emoji","insert");a.ui.add("EmojiPanel",CKEDITOR.UI_PANELBUTTON,{label:"emoji",title:c.title,modes:{wysiwyg:1},editorFocus:0,toolbar:"insert",panel:{css:[CKEDITOR.skin.getPath("editor"),d.path+"skins/default.css"],attributes:{role:"listbox","aria-label":c.title},markFirst:!1},onBlock:function(d,c){var e=c.keys,f="rtl"===a.lang.dir;e[f?37:39]="next";e[40]= -"next";e[9]="next";e[f?39:37]="prev";e[38]="prev";e[CKEDITOR.SHIFT+9]="prev";e[32]="click";b.blockElement=c.element;b.emojiList=b.editor._.emoji.list;b.addEmojiToGroups();c.element.getAscendant("html").addClass("cke_emoji");c.element.getDocument().appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.basePath+"contents.css"));c.element.addClass("cke_emoji-panel_block");c.element.setHtml(b.createEmojiBlock());c.element.removeAttribute("title");d.element.addClass("cke_emoji-panel");b.items=c._.getItems();b.blockObject= -c;b.elements.emojiItems=c.element.find(".cke_emoji-outer_emoji_block li \x3e a");b.elements.sectionHeaders=c.element.find(".cke_emoji-outer_emoji_block h2");b.elements.input=c.element.findOne("input");b.inputIndex=b.getItemIndex(b.items,b.elements.input);b.elements.emojiBlock=c.element.findOne(".cke_emoji-outer_emoji_block");b.elements.navigationItems=c.element.find("nav li");b.elements.statusIcon=c.element.findOne(".cke_emoji-status_icon");b.elements.statusDescription=c.element.findOne("p.cke_emoji-status_description"); -b.elements.statusName=c.element.findOne("p.cke_emoji-status_full_name");b.elements.sections=c.element.find("section");b.registerListeners()},onOpen:b.openReset()})},proto:{registerListeners:function(){f.forEach(this.listeners,function(a){var d=a.listener,c=a.event,b=a.ctx||this;f.forEach(this.blockElement.find(a.selector).toArray(),function(a){a.on(c,d,b)})},this)},createEmojiBlock:function(){var a=[];this.loadSVGNavigationIcons();a.push(this.createGroupsNavigation());a.push(this.createSearchSection()); -a.push(this.createEmojiListBlock());a.push(this.createStatusBar());return'\x3cdiv class\x3d"cke_emoji-inner_panel"\x3e'+a.join("")+"\x3c/div\x3e"},createGroupsNavigation:function(){var a,d;this.editor.plugins.emoji.isSVGSupported()?(d=CKEDITOR.env.safari?'xlink:href\x3d"#{svgId}"':'href\x3d"#{svgId}"',a=new CKEDITOR.template('\x3cli class\x3d"cke_emoji-navigation_item" data-cke-emoji-group\x3d"{group}"\x3e\x3ca href\x3d"#" title\x3d"{name}" draggable\x3d"false" _cke_focus\x3d"1"\x3e\x3csvg viewBox\x3d"0 0 34 34" aria-labelledby\x3d"{svgId}-title"\x3e\x3ctitle id\x3d"{svgId}-title"\x3e{name}\x3c/title\x3e\x3cuse '+ -d+"\x3e\x3c/use\x3e\x3c/svg\x3e\x3c/a\x3e\x3c/li\x3e"),d=f.reduce(this.groups,function(c,b){return b.items.length?c+a.output({group:e(b.name),name:e(b.sectionName),svgId:e(b.svgId),translateX:b.translate&&b.translate.x?e(b.translate.x):0,translateY:b.translate&&b.translate.y?e(b.translate.y):0}):c},"")):(d=CKEDITOR.getUrl(this.plugin.path+"assets/iconsall.png"),a=new CKEDITOR.template('\x3cli class\x3d"cke_emoji-navigation_item" data-cke-emoji-group\x3d"{group}"\x3e\x3ca href\x3d"#" draggable\x3d"false" _cke_focus\x3d"1" title\x3d"{name}"\x3e\x3cspan style\x3d"background-image:url('+ -d+');background-repeat:no-repeat;background-position:{positionX}px {positionY}px;"\x3e\x3c/span\x3e\x3c/a\x3e\x3c/li\x3e'),d=f.reduce(this.groups,function(c,b){return b.items.length?c+a.output({group:e(b.name),name:e(b.sectionName),positionX:b.position.x,positionY:b.position.y}):c},""));this.listeners.push({selector:"nav",event:"click",listener:function(a){var b=a.data.getTarget().getAscendant("li",!0);b&&(f.forEach(this.elements.navigationItems.toArray(),function(a){a.equals(b)?a.addClass("active"): -a.removeClass("active")}),this.clearSearchAndMoveFocus(b),a.data.preventDefault())}});return'\x3cnav aria-label\x3d"'+e(this.lang.navigationLabel)+'"\x3e\x3cul\x3e'+d+"\x3c/ul\x3e\x3c/nav\x3e"},createSearchSection:function(){this.listeners.push({selector:"input",event:"input",listener:CKEDITOR.tools.throttle(200,this.filter,this).input});this.listeners.push({selector:"input",event:"click",listener:function(){this.blockObject._.markItem(this.inputIndex)}});return'\x3clabel class\x3d"cke_emoji-search"\x3e'+ -this.getLoupeIcon()+'\x3cinput placeholder\x3d"'+e(this.lang.searchPlaceholder)+'" type\x3d"search" aria-label\x3d"'+e(this.lang.searchLabel)+'" role\x3d"search" _cke_focus\x3d"1"\x3e\x3c/label\x3e'},createEmojiListBlock:function(){this.listeners.push({selector:".cke_emoji-outer_emoji_block",event:"scroll",listener:CKEDITOR.tools.throttle(150,this.refreshNavigationStatus,this).input});this.listeners.push({selector:".cke_emoji-outer_emoji_block",event:"click",listener:function(a){a.data.getTarget().data("cke-emoji-name")&& -this.editor.execCommand("insertEmoji",{emojiText:a.data.getTarget().data("cke-emoji-symbol")})}});this.listeners.push({selector:".cke_emoji-outer_emoji_block",event:"mouseover",listener:function(a){this.updateStatusbar(a.data.getTarget())}});this.listeners.push({selector:".cke_emoji-outer_emoji_block",event:"keyup",listener:function(){this.updateStatusbar(this.items.getItem(this.blockObject._.focusIndex))}});return'\x3cdiv class\x3d"cke_emoji-outer_emoji_block"\x3e'+this.getEmojiSections()+"\x3c/div\x3e"}, -createStatusBar:function(){return'\x3cdiv class\x3d"cke_emoji-status_bar"\x3e\x3cdiv class\x3d"cke_emoji-status_icon"\x3e\x3c/div\x3e\x3cp class\x3d"cke_emoji-status_description"\x3e\x3c/p\x3e\x3cp class\x3d"cke_emoji-status_full_name"\x3e\x3c/p\x3e\x3c/div\x3e'},getLoupeIcon:function(){var a=CKEDITOR.getUrl(this.plugin.path+"assets/iconsall.png");return this.editor.plugins.emoji.isSVGSupported()?(a=CKEDITOR.env.safari?'xlink:href\x3d"#cke4-icon-emoji-10"':'href\x3d"#cke4-icon-emoji-10"','\x3csvg viewBox\x3d"0 0 34 34" role\x3d"img" aria-hidden\x3d"true" class\x3d"cke_emoji-search_loupe"\x3e\x3cuse '+ -a+"\x3e\x3c/use\x3e\x3c/svg\x3e"):'\x3cspan class\x3d"cke_emoji-search_loupe" aria-hidden\x3d"true" style\x3d"background-image:url('+a+');"\x3e\x3c/span\x3e'},getEmojiSections:function(){return f.reduce(this.groups,function(a,d){return d.items.length?a+this.getEmojiSection(d):a},"",this)},getEmojiSection:function(a){var d=e(a.name),c=e(a.sectionName);a=this.getEmojiListGroup(a.items);return'\x3csection data-cke-emoji-group\x3d"'+d+'" \x3e\x3ch2 id\x3d"'+d+'"\x3e'+c+"\x3c/h2\x3e\x3cul\x3e"+a+"\x3c/ul\x3e\x3c/section\x3e"}, -getEmojiListGroup:function(a){var d=new CKEDITOR.template('\x3cli class\x3d"cke_emoji-item"\x3e\x3ca draggable\x3d"false" data-cke-emoji-full-name\x3d"{id}" data-cke-emoji-name\x3d"{name}" data-cke-emoji-symbol\x3d"{symbol}" data-cke-emoji-group\x3d"{group}" data-cke-emoji-keywords\x3d"{keywords}" title\x3d"{name}" href\x3d"#" _cke_focus\x3d"1"\x3e{symbol}\x3c/a\x3e\x3c/li\x3e');return f.reduce(a,function(a,b){k(b);return a+d.output({symbol:e(b.symbol),id:e(b.id),name:b.name,group:e(b.group),keywords:e((b.keywords|| -[]).join(","))})},"",this)},filter:function(a){var d={},c="string"===typeof a?a:a.sender.getValue();f.forEach(this.elements.emojiItems.toArray(),function(a){var e;a:{e=a.data("cke-emoji-name");var f=a.data("cke-emoji-keywords");if(-1!==e.indexOf(c))e=!0;else{if(f)for(e=f.split(","),f=0;fa});c=d.length?d[0].data("cke-emoji-group"):!1;f.forEach(this.elements.navigationItems.toArray(),function(a){a.data("cke-emoji-group")===c?a.addClass("active"):a.removeClass("active")})},updateStatusbar:function(a){"a"=== -a.getName()&&a.hasAttribute("data-cke-emoji-name")&&(this.elements.statusIcon.setText(e(a.getText())),this.elements.statusDescription.setText(e(a.data("cke-emoji-name"))),this.elements.statusName.setText(e(a.data("cke-emoji-full-name"))))},clearStatusbar:function(){this.elements.statusIcon.setText("");this.elements.statusDescription.setText("");this.elements.statusName.setText("")},clearSearchAndMoveFocus:function(a){this.clearSearchInput();this.moveFocus(a.data("cke-emoji-group"))},moveFocus:function(a){a= -this.blockElement.findOne('a[data-cke-emoji-group\x3d"'+e(a)+'"]');var d;a&&(d=this.getItemIndex(this.items,a),a.focus(!0),a.getAscendant("section").getFirst().scrollIntoView(!0),this.blockObject._.markItem(d))},getItemIndex:function(a,d){return f.indexOf(a.toArray(),function(a){return a.equals(d)})},loadSVGNavigationIcons:function(){if(this.editor.plugins.emoji.isSVGSupported()){var a=this.blockElement.getDocument();CKEDITOR.ajax.load(CKEDITOR.getUrl(this.plugin.path+"assets/iconsall.svg"),function(d){var c= -new CKEDITOR.dom.element("div");c.addClass("cke_emoji-navigation_icons");c.setHtml(d);a.getBody().append(c)})}},addEmojiToGroups:function(){var a={};f.forEach(this.groups,function(d){a[d.name]=d.items},this);f.forEach(this.emojiList,function(d){a[d.group].push(d)},this)}}});CKEDITOR.plugins.add("emoji",{requires:"autocomplete,textmatch,ajax,panelbutton,floatpanel",lang:"cs,da,de,de-ch,el,en,en-au,et,fa,fr,gl,hr,hu,it,nl,pl,pt-br,sk,sr,sr-latn,sv,tr,uk,zh,zh-cn",icons:"emojipanel",hidpi:!0,isSupportedEnvironment:function(){return!CKEDITOR.env.ie|| -11<=CKEDITOR.env.version},beforeInit:function(){this.isSupportedEnvironment()&&!g&&(CKEDITOR.document.appendStyleSheet(this.path+"skins/default.css"),g=!0)},init:function(a){if(this.isSupportedEnvironment()){var d=CKEDITOR.tools.array;CKEDITOR.ajax.load(CKEDITOR.getUrl(a.config.emoji_emojiListUrl||"plugins/emoji/emoji.json"),function(c){function b(){a._.emoji.autocomplete=new CKEDITOR.plugins.autocomplete(a,{textTestCallback:e(),dataCallback:g,itemTemplate:'\x3cli data-id\x3d"{id}" class\x3d"cke_emoji-suggestion_item"\x3e\x3cspan\x3e{symbol}\x3c/span\x3e {name}\x3c/li\x3e', -outputTemplate:"{symbol}",followingSpace:a.config.emoji_followingSpace})}function e(){return function(a){return a.collapsed?CKEDITOR.plugins.textMatch.match(a,f):null}}function f(a,b){var c=a.slice(0,b),d=c.match(new RegExp("(?:\\s|^)(:\\S{"+l+"}\\S*)$"));return d?{start:c.lastIndexOf(d[1]),end:b}:null}function g(a,b){var c=a.query.substr(1).toLowerCase(),e=d.filter(h,function(a){return-1!==a.id.toLowerCase().indexOf(c)}).sort(function(a,b){var d=!a.id.substr(1).indexOf(c),e=!b.id.substr(1).indexOf(c); -return d!=e?d?-1:1:a.id>b.id?1:-1}),e=d.map(e,k);b(e)}if(null!==c){void 0===a._.emoji&&(a._.emoji={});void 0===a._.emoji.list&&(a._.emoji.list=JSON.parse(c));var h=a._.emoji.list,l=void 0===a.config.emoji_minChars?2:a.config.emoji_minChars;if("ready"!==a.status)a.once("instanceReady",b);else b()}});a.addCommand("insertEmoji",{exec:function(a,b){a.insertHtml(b.emojiText)}});a.plugins.toolbar&&new h(a,this)}},isSVGSupported:function(){return!CKEDITOR.env.ie||CKEDITOR.env.edge}})})(); -CKEDITOR.config.emoji_followingSpace=!1; \ No newline at end of file diff --git a/public/build/ckeditor/plugins/emoji/skins/default.css b/public/build/ckeditor/plugins/emoji/skins/default.css deleted file mode 100644 index 6b0d85df..00000000 --- a/public/build/ckeditor/plugins/emoji/skins/default.css +++ /dev/null @@ -1,237 +0,0 @@ -.cke_emoji { - overflow-y: hidden; - height: 100%; -} - -.cke_emoji-suggestion_item { - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - font-family: sans-serif, Arial, Verdana, "Trebuchet MS", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; -} - -.cke_emoji-suggestion_item span { - font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; -} - -.cke_emoji-panel { - width: 310px; - height: 300px; - overflow: hidden; -} - -.cke_emoji-inner_panel { - width: 100%; -} - -.cke_emoji-panel_block a { - display: inline-block; - width: 100%; - padding-top: 2px; -} - -.cke_emoji-inner_panel > h2 { - font-size: 2em; -} - -/* TOP NAVIGATION */ -.cke_emoji-navigation_icons { - display: none; -} -.cke_emoji-inner_panel > nav { - width: 100%; - height: 24px; - margin-top: 10px; - margin-bottom: 6px; - padding-bottom: 4px; - border-bottom: 1px solid #d1d1d1; -} -.cke_emoji-inner_panel > nav > ul { - margin-left: 10px; - margin-right: 10px; - margin-top: 8px; - padding: 0; - list-style-type: none; - height: 24px; -} - -.cke_emoji-inner_panel > nav li { - display: inline-block; - width: 24px; - height: auto; - margin: 0 6px; - text-align: center; -} - -.cke_browser_ie .cke_emoji-inner_panel > nav li { - height: 22px; -} - -.cke_emoji-inner_panel li svg { - opacity: 0.4; - width: 80%; -} - -.cke_emoji-inner_panel li span { - opacity: 0.4; -} - -.cke_emoji-inner_panel li:hover svg, .cke_emoji-inner_panel li:hover span{ - opacity: 1; -} - -.cke_emoji-inner_panel .active { - border-bottom: 5px solid rgba(44, 195, 255, 1); -} - -.cke_emoji-navigation_item span { - width: 21px; - height: 21px; - display: inline-block; -} - -/* SEARCHBOX */ -.cke_emoji-search { - position: relative; - height: 25px; - display: block; - border: 1px solid #d1d1d1; - margin-left: 10px; - margin-right: 10px; -} - -.cke_emoji-search .cke_emoji-search_loupe { - position: absolute; - top: 6px; - left: 6px; - display: inline-block; - width: 14px; - height: 14px; - opacity: 0.4; -} - -.cke_rtl .cke_emoji-search .cke_emoji-search_loupe { - left: auto; - right: 6px; -} - -.cke_emoji-search span { - background-repeat: no-repeat; - background-position: -60px -15px; - background-size: 75px 30px; -} - -.cke_emoji-search input { - -webkit-appearance: none; - border: none; - width: 100%; - height: 100%; - padding-left: 25px; - padding-right: 10px; - margin-left: 0 -} - -.cke_rtl .cke_emoji-search input { - padding-left: 10px; - padding-right: 25px; - margin-right: 0; -} - -/* EMOJI */ -.cke_emoji-outer_emoji_block { - height: 180px; - overflow-x: hidden; - overflow-y: auto; - margin-top: 5px; - margin-left: 10px; - margin-right: 10px; - padding-left: 2px; - padding-right: 2px; -} - -.cke_emoji-outer_emoji_block h2 { - font-size: 1.3em; - font-weight: 600; - margin: 5px 0 3px 0; -} - -.cke_emoji-outer_emoji_block ul { - margin: 0 0 15px 0; - padding: 0; - list-style-type: none; -} - -.cke_emoji-item { - font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - list-style-type: none; - display: inline-table; - width: 36px; - height: 36px; - font-size: 1.8em; - text-align: center; -} - -.cke_emoji-item:hover { - border-radius: 10%; - background-color: rgba(44, 195, 255, 0.2); -} - -.cke_emoji-item > a { - text-decoration: none; - display: table-cell; - vertical-align: middle; -} - -.cke_emoji-outer_emoji_block .hidden { - display: none -} - -/* STATUS BAR */ -.cke_emoji-status_bar { - height: 34px; - padding-left: 10px; - padding-right: 10px; - padding-top: 3px; - margin-top: 3px; - border-top: 1px solid #d1d1d1; - line-height: 1; -} - -.cke_emoji-status_bar p { - margin-top: 3px; -} - -.cke_emoji-status_bar > div { - display: inline-block; - margin-top: 3px; -} - -.cke_emoji-status_icon { - font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; - font-size: 2.2em; - float: left; - margin-right: 10px; -} - -.cke_rtl .cke_emoji-status_icon { - float: right; - margin-right: 0px; - margin-left: 10px; -} - -.cke_emoji-panel_block p { - margin-bottom: 0; -} - -p.cke_emoji-status_description { - font-weight: 600; -} - -p.cke_emoji-status_full_name { - font-size: 0.8em; - color: #d1d1d1; -} - -.cke_emoji-inner_panel a:focus, .cke_emoji-inner_panel input:focus { - outline: 2px solid #139FF7; -} diff --git a/public/build/ckeditor/plugins/exportpdf/CHANGELOG.md b/public/build/ckeditor/plugins/exportpdf/CHANGELOG.md deleted file mode 100644 index 0959eb88..00000000 --- a/public/build/ckeditor/plugins/exportpdf/CHANGELOG.md +++ /dev/null @@ -1,72 +0,0 @@ -# CKEditor 4 Export to PDF Plugin Changelog - -## ckeditor4-plugin-exportpdf 1.0.6 - -Other Changes: - -* Updated changelog. - -## ckeditor4-plugin-exportpdf 1.0.5 - -Other Changes: - -* Updated year and company name in license headers. - -## ckeditor4-plugin-exportpdf 1.0.4 - -Other Changes: - -* Updated test files. - -## ckeditor4-plugin-exportpdf 1.0.3 - -Other Changes: - -* Updated test files. - -## ckeditor4-plugin-exportpdf 1.0.2 - -Other Changes: - -* Updated year in license headers. - -## ckeditor4-plugin-exportpdf 1.0.1 - -Other Changes: - -* Improved external CSS support for [Classic Editor](https://ckeditor.com/docs/ckeditor4/latest/examples/classic.html) by handling exceptions and displaying convenient [error messages](https://ckeditor.com/docs/ckeditor4/latest/guide/dev_errors.html#exportpdf-stylesheets-incaccessible). - -## ckeditor4-plugin-exportpdf 1.0.0 - -The first stable release of the CKEditor 4 WYSIWYG Editor Export to PDF plugin. After a few months of the beta phase, testing and listening to community feedback, the CKEditor 4 Export to PDF plugin is stable and can be used with full confidence. Enjoy! - -New Features: - -* Introduced access control mechanism. The plugin now can be configured with additional [exportPdf_tokenUrl](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-exportPdf_tokenUrl) option to allow commercial use. - -## ckeditor4-plugin-exportpdf 0.1.2 - -Other Changes: - -* Improved [plugin API documentation](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-exportPdf_fileName). -* Updated Export to PDF plugin npm readme to link to the [official plugin documentation](https://ckeditor.com/docs/ckeditor4/latest/features/exporttopdf.html). - -## ckeditor4-plugin-exportpdf 0.1.1 - -Other Changes: - -* Renamed the Export to PDF plugin button from `exportPdf` to `ExportPdf`. The `ExportPdf` name should now be used while setting up a custom toolbar with the [CKEDITOR.config.toolbar](https://ckeditor.com/docs/ckeditor4/latest/api/CKEDITOR_config.html#cfg-toolbar) configuration option. - -## ckeditor4-plugin-exportpdf 0.1.0 - -The first beta release of the CKEditor 4 Export to PDF plugin. - -This plugin allows you to easily print your WYSIWYG editor content to a PDF file. When enabled, this feature sends the content of your editor together with the styles that are used to display it to the CKEditor Cloud Services HTML to PDF converter service. The service then generates a PDF document that can be downloaded by the user. - -Available features: - -* Exporting HTML content from CKEditor 4 WYSIWYG editor to PDF with a single click. -* Setting a custom name for the generated PDF file. -* Handling relative image paths. -* Changing the appearance of the PDF document (like margins, text styling, custom headers and footers etc.) with custom CSS styles. -* Pre-processing HTML content via synchronous and asynchronous code before the generation of the PDF file. diff --git a/public/build/ckeditor/plugins/exportpdf/LICENSE.md b/public/build/ckeditor/plugins/exportpdf/LICENSE.md deleted file mode 100644 index 997ae54e..00000000 --- a/public/build/ckeditor/plugins/exportpdf/LICENSE.md +++ /dev/null @@ -1,18 +0,0 @@ -Software License Agreement -========================== - -**CKEditor 4 Export to PDF plugin** (https://ckeditor.com/ckeditor-4/)
-Copyright (c) 2003-2022, [CKSource](http://cksource.com) Holding sp. z o.o. All rights reserved. - -CKEditor 4 Export to PDF plugin is licensed under a commercial license and is protected by copyright law. -For more details about available licensing options please contact us at sales@cksource.com. - -Sources of Intellectual Property Included in CKEditor 4 export to PDF ---------------------------------------------------------------------- - -Where not otherwise indicated, all CKEditor 4 Export to PDF plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. - -Trademarks ----------- - -**CKEditor** is a trademark of [CKSource](http://cksource.com) Holding sp. z o.o. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/public/build/ckeditor/plugins/exportpdf/icons/exportpdf.png b/public/build/ckeditor/plugins/exportpdf/icons/exportpdf.png deleted file mode 100644 index b28ce717..00000000 Binary files a/public/build/ckeditor/plugins/exportpdf/icons/exportpdf.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/exportpdf/icons/hidpi/exportpdf.png b/public/build/ckeditor/plugins/exportpdf/icons/hidpi/exportpdf.png deleted file mode 100644 index 916ee2b8..00000000 Binary files a/public/build/ckeditor/plugins/exportpdf/icons/hidpi/exportpdf.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/exportpdf/lang/en.js b/public/build/ckeditor/plugins/exportpdf/lang/en.js deleted file mode 100644 index 66b9bbbe..00000000 --- a/public/build/ckeditor/plugins/exportpdf/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("exportpdf","en",{documentReady:"Document is ready!",error:"Error occurred.",processingDocument:"Processing PDF document...",toolbar:"Export to PDF"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/exportpdf/plugin.js b/public/build/ckeditor/plugins/exportpdf/plugin.js deleted file mode 100644 index d4c17b34..00000000 --- a/public/build/ckeditor/plugins/exportpdf/plugin.js +++ /dev/null @@ -1,15 +0,0 @@ -var a0_0xcc11='call;open;exportPdf_appId;readAsText;destroy;application/json;exports;apply;navigator;exportPdf_fileName;fetchToken;object;showNotification;document;defineProperty;exportPdf_stylesheets;init;toolbar;blob;plugins;create;once;push;warning;\x3c/div\x3e;lang;NODE_ELEMENT;addEventListener;createTokenFetcher;data;result;response;token;application/octet-stream;Content-type;writeHtml;buildStyleHtml;basicWriter;notification;progress;string;name;createObjectURL;setInterval;exportpdf-no-token;editable;success;enable;href;click;attributes;ckeditor4-export-pdf.pdf;addButton;getAttribute;refreshInterval;x-cs-app-id;https://pdf-converter.cke-cs.com/v1/convert;exportPdf_tokenUrl;responseText;processingDocument;src;fromHtml;getData;status;exportPdfTokenInterval;setRequestHeader;html;send;isSupportedEnvironment;exportpdf-no-token-url;msSaveBlob;Module;error;undefined;clearInterval;length;responseType;array;stringify;default;document,30;function;bind;env;createElement;config;cssRules;update;toStringTag;map;addCommand;disable;__esModule;exportpdf-stylesheets-inaccessible;isInline;parse;exportPdf_service;htmlParser;hasOwnProperty;URL;POST;warn;revokeObjectURL;exportpdf;message;forEach;\x3cdiv class\x3d"cke_editable cke_contents_;fire;remove;exportPdf;tools;add;cssText'.split(";"); -(function(d,c){for(var a=++c;--a;)d.push(d.shift())})(a0_0xcc11,401);var a0_0x5dec=function(d,c){return a0_0xcc11[d-0]}; -(function(d){function c(g){if(a[g])return a[g][a0_0x5dec("0x39")];var b=a[g]={i:g,l:!1,exports:{}};d[g][a0_0x5dec("0x33")](b[a0_0x5dec("0x39")],b,b[a0_0x5dec("0x39")],c);b.l=!0;return b[a0_0x5dec("0x39")]}var a={};c.m=d;c.c=a;c.d=function(g,a,e){if(!c.o(g,a))Object[a0_0x5dec("0x41")](g,a,{enumerable:!0,get:e})};c.r=function(a){typeof Symbol!==a0_0x5dec("0xb")&&Symbol[a0_0x5dec("0x1a")]&&Object.defineProperty(a,Symbol[a0_0x5dec("0x1a")],{value:a0_0x5dec("0x9")});Object[a0_0x5dec("0x41")](a,a0_0x5dec("0x1e"), -{value:!0})};c.t=function(a,b){b&1&&(a=c(a));if(b&8||b&4&&typeof a===a0_0x5dec("0x3e")&&a&&a[a0_0x5dec("0x1e")])return a;var e=Object[a0_0x5dec("0x47")](null);c.r(e);Object[a0_0x5dec("0x41")](e,a0_0x5dec("0x11"),{enumerable:!0,value:a});if(b&2&&typeof a!=a0_0x5dec("0x5b"))for(var d in a)c.d(e,d,function(b){return a[b]}[a0_0x5dec("0x14")](null,d));return e};c.n=function(a){var b=a&&a[a0_0x5dec("0x1e")]?function(){return a[a0_0x5dec("0x11")]}:function(){return a};c.d(b,"a",b);return b};c.o=function(a, -b){return Object.prototype[a0_0x5dec("0x24")][a0_0x5dec("0x33")](a,b)};c.p="";return c(c.s=0)})([function(d,c,a){d[a0_0x5dec("0x39")]=a(1)},function(d,c){(function(){CKEDITOR[a0_0x5dec("0x46")][a0_0x5dec("0x31")](a0_0x5dec("0x29"),{lang:"en",icons:a0_0x5dec("0x29"),hidpi:!0,isSupportedEnvironment:function(){return!CKEDITOR[a0_0x5dec("0x15")].ie||10=b||8192<=b&&8202>=b||H.test(a)}function r(a){var b=d.getSelection().getRanges()[0],c=d.editable();b&&!a?(a=b.clone(),a.collapse(!0)):(a=d.createRange(),a.setStartAt(c,CKEDITOR.POSITION_AFTER_START));a.setEndAt(c,CKEDITOR.POSITION_BEFORE_END);return a}function A(a){f.find(a.getValueOf("find","txtFindFind"),a.getValueOf("find","txtFindCaseChk"),a.getValueOf("find", -"txtFindWordChk"),a.getValueOf("find","txtFindCyclic"))||alert(e.notFoundMsg)}function B(a){f.replace(a,a.getValueOf("replace","txtFindReplace"),a.getValueOf("replace","txtReplace"),a.getValueOf("replace","txtReplaceCaseChk"),a.getValueOf("replace","txtReplaceWordChk"),a.getValueOf("replace","txtReplaceCyclic"))||alert(e.notFoundMsg)}function I(a,b){var c=b.replace(J,function(a){a=a.split("");return CKEDITOR.tools.array.map(a,function(a,b){return 0===b%2?" ":a}).join("")});return a.document.createText(c)} -var C=new CKEDITOR.style(CKEDITOR.tools.extend({attributes:{"data-cke-highlight":1},fullMatch:1,ignoreReadonly:1,childRule:function(){return 0}},d.config.find_highlight,!0));n.prototype={next:function(){return this.move()},back:function(){return this.move(!0)},move:function(a){var b=this.textNode;if(null===b)return w.call(this);this._.matchBoundary=!1;if(b&&a&&0b.length){var c=this._.walker.textNode;if(c)a.setStartAfter(c);else return null}else c=b[0],b=b[b.length-1],a.setStart(c.textNode,c.offset),a.setEnd(b.textNode,b.offset+1);return a},updateFromDomRange:function(a){var b= -new n(a);this._.cursors=[];do a=b.next(),a.character&&this._.cursors.push(a);while(a.character);this._.rangeLength=this._.cursors.length},setMatched:function(){this._.isMatched=!0},clearMatched:function(){this._.isMatched=!1},isMatched:function(){return this._.isMatched},highlight:function(){if(!(1>this._.cursors.length)){this._.highlightRange&&this.removeHighlight();var a=this.toDomRange(),b=a.createBookmark();C.applyToRange(a,d);a.moveToBookmark(b);this._.highlightRange=a;b=a.startContainer;b.type!= -CKEDITOR.NODE_ELEMENT&&(b=b.getParent());b.scrollIntoView();this.updateFromDomRange(a)}},removeHighlight:function(){if(this._.highlightRange){var a=this._.highlightRange.createBookmark();C.removeFromRange(this._.highlightRange,d);this._.highlightRange.moveToBookmark(a);this.updateFromDomRange(this._.highlightRange);this._.highlightRange=null}},isReadOnly:function(){return this._.highlightRange?this._.highlightRange.startContainer.isReadOnly():0},moveBack:function(){var a=this._.walker.back(),b=this._.cursors; -a.hitMatchBoundary&&(this._.cursors=b=[]);b.unshift(a);b.length>this._.rangeLength&&b.pop();return a},moveNext:function(){var a=this._.walker.next(),b=this._.cursors;a.hitMatchBoundary&&(this._.cursors=b=[]);b.push(a);b.length>this._.rangeLength&&b.shift();return a},getEndCharacter:function(){var a=this._.cursors;return 1>a.length?null:a[a.length-1].character},getNextCharacterRange:function(a){var b,c;c=this._.cursors;c=(b=c[c.length-1])&&b.textNode?new n(y(b)):this._.walker;return new u(c,a)},getCursors:function(){return this._.cursors}}; -var D=function(a,b){var c=[-1];b&&(a=a.toLowerCase());for(var d=0;dCKEDITOR.document.$.documentMode?b.document.createElement('\x3cinput name\x3d"'+CKEDITOR.tools.htmlEncode(a)+'"\x3e'):b.document.createElement("input");a.setAttribute("type","hidden");this.commitContent(a);var a=b.createFakeElement(a,"cke_hidden","hiddenfield"),c=this.getModel(b);c?(a.replace(c),b.getSelection().selectElement(a)):b.insertElement(a);return!0},contents:[{id:"info",label:c.lang.forms.hidden.title,title:c.lang.forms.hidden.title,elements:[{id:"_cke_saved_name", -type:"text",label:c.lang.forms.hidden.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){this.getValue()?a.setAttribute("name",this.getValue()):a.removeAttribute("name")}},{id:"value",type:"text",label:c.lang.forms.hidden.value,"default":"",accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/forms/dialogs/radio.js b/public/build/ckeditor/plugins/forms/dialogs/radio.js deleted file mode 100644 index a9d2543e..00000000 --- a/public/build/ckeditor/plugins/forms/dialogs/radio.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.dialog.add("radio",function(c){return{title:c.lang.forms.checkboxAndRadio.radioTitle,minWidth:350,minHeight:140,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"input"==a.getName()&&"radio"==a.getAttribute("type")?a:null},onShow:function(){var a=this.getModel(this.getParentEditor());a&&this.setupContent(a)},onOk:function(){var a=this.getParentEditor(),b=this.getModel(a);b||(b=a.document.createElement("input"),b.setAttribute("type","radio"),a.insertElement(b));this.commitContent({element:b})}, -contents:[{id:"info",label:c.lang.forms.checkboxAndRadio.radioTitle,title:c.lang.forms.checkboxAndRadio.radioTitle,elements:[{id:"name",type:"text",label:c.lang.common.name,"default":"",accessKey:"N",setup:function(a){this.setValue(a.data("cke-saved-name")||a.getAttribute("name")||"")},commit:function(a){a=a.element;this.getValue()?a.data("cke-saved-name",this.getValue()):(a.data("cke-saved-name",!1),a.removeAttribute("name"))}},{id:"value",type:"text",label:c.lang.forms.checkboxAndRadio.value,"default":"", -accessKey:"V",setup:function(a){this.setValue(a.getAttribute("value")||"")},commit:function(a){a=a.element;this.getValue()?a.setAttribute("value",this.getValue()):a.removeAttribute("value")}},{id:"checked",type:"checkbox",label:c.lang.forms.checkboxAndRadio.selected,"default":"",accessKey:"S",value:"checked",setup:function(a){this.setValue(a.getAttribute("checked"))},commit:function(a){var b=a.element;if(CKEDITOR.env.ie){var d=b.getAttribute("checked"),e=!!this.getValue();d!=e&&(d=CKEDITOR.dom.element.createFromHtml('\x3cinput type\x3d"radio"'+ -(e?' checked\x3d"checked"':"")+"\x3e\x3c/input\x3e",c.document),b.copyAttributes(d,{type:1,checked:1}),d.replace(b),e&&d.setAttribute("checked","checked"),c.getSelection().selectElement(d),a.element=d)}else a=this.getValue(),CKEDITOR.env.webkit&&(b.$.checked=a),a?b.setAttribute("checked","checked"):b.removeAttribute("checked")}},{id:"required",type:"checkbox",label:c.lang.forms.checkboxAndRadio.required,"default":"",accessKey:"Q",value:"required",setup:CKEDITOR.plugins.forms._setupRequiredAttribute, -commit:function(a){a=a.element;this.getValue()?a.setAttribute("required","required"):a.removeAttribute("required")}}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/forms/dialogs/select.js b/public/build/ckeditor/plugins/forms/dialogs/select.js deleted file mode 100644 index d8242545..00000000 --- a/public/build/ckeditor/plugins/forms/dialogs/select.js +++ /dev/null @@ -1,21 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.dialog.add("select",function(c){function h(a,b,e,d,c){a=f(a);d=d?d.createElement("OPTION"):document.createElement("OPTION");if(a&&d&&"option"==d.getName())CKEDITOR.env.ie?(isNaN(parseInt(c,10))?a.$.options.add(d.$):a.$.options.add(d.$,c),d.$.innerHTML=0c?0:c).insertBeforeMe(d):a.append(d),d.setText(0b)return!1;a=a.getChild(b);a.setText(e);a.setValue(d);return a}function m(a){for(a=f(a);a.getChild(0)&&a.getChild(0).remove(););}function l(a,b,e){a=f(a);var d=g(a);if(0>d)return!1;b=d+b;b=0>b?0:b;b=b>=a.getChildCount()?a.getChildCount()-1:b;if(d==b)return!1;var d=a.getChild(d),c=d.getText(),r=d.getValue();d.remove();d=h(a,c,r,e?e:null,b);k(a,b);return d}function g(a){return(a=f(a))?a.$.selectedIndex:-1} -function k(a,b){a=f(a);if(0>b)return null;var e=a.getChildren().count();a.$.selectedIndex=b>=e?e-1:b;return a}function n(a){return(a=f(a))?a.getChildren():!1}function f(a){return a&&a.domId&&a.getInputElement().$?a.getInputElement():a&&a.$?a:!1}return{title:c.lang.forms.select.title,minWidth:CKEDITOR.env.ie?460:395,minHeight:CKEDITOR.env.ie?320:300,getModel:function(a){return(a=a.getSelection().getSelectedElement())&&"select"==a.getName()?a:null},onShow:function(){this.setupContent("clear");var a= -this.getModel(this.getParentEditor());if(a){this.setupContent(a.getName(),a);for(var a=n(a),b=0;barguments.length)){var f=this._||(this._={}),e=a.onContentLoad&&CKEDITOR.tools.bind(a.onContentLoad,this),g=CKEDITOR.tools.cssLength(a.width),h=CKEDITOR.tools.cssLength(a.height);f.frameId= -CKEDITOR.tools.getNextId()+"_iframe";d.on("load",function(){CKEDITOR.document.getById(f.frameId).getParent().setStyles({width:g,height:h})});var k={src:"%2",id:f.frameId,frameborder:0,allowtransparency:!0},m=[];"function"==typeof a.onContentLoad&&(k.onload="CKEDITOR.tools.callFunction(%1);");CKEDITOR.ui.dialog.uiElement.call(this,d,a,m,"iframe",{width:g,height:h},k,"");l.push('\x3cdiv style\x3d"width:'+g+";height:"+h+';" id\x3d"'+this.domId+'"\x3e\x3c/div\x3e');m=m.join("");d.on("show",function(){var b= -CKEDITOR.document.getById(f.frameId).getParent(),c=CKEDITOR.tools.addFunction(e),c=m.replace("%1",c).replace("%2",CKEDITOR.tools.htmlEncode(a.src));b.setHtml(c)})}};e.prototype=new CKEDITOR.ui.dialog.uiElement;CKEDITOR.dialog.addUIElement("iframe",{build:function(d,a,l){return new e(d,a,l)}})})()}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/image/dialogs/image.js b/public/build/ckeditor/plugins/image/dialogs/image.js deleted file mode 100644 index f9f6ce23..00000000 --- a/public/build/ckeditor/plugins/image/dialogs/image.js +++ /dev/null @@ -1,44 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){var u=function(d,k){function u(){var a=arguments,b=this.getContentElement("advanced","txtdlgGenStyle");b&&b.commit.apply(b,a);this.foreach(function(b){b.commit&&"txtdlgGenStyle"!=b.id&&b.commit.apply(b,a)})}function g(a){if(!v){v=1;var b=this.getDialog(),c=b.imageElement;if(c){this.commit(1,c);a=[].concat(a);for(var d=a.length,h,e=0;e=y?0>=n?t():A>=w?t():l():0>=n?A>=w?l():t():l():0>=y?0>=n?A>=w?l():t():l():0>=n?t():A>=w?t():l();a=B&&(u>B.width||v>B.height);15>u||15>v||a||(z={width:u,height:v},f.setAttributes(z))},m);d("mouseup",function(){for(var c;c=m.pop();)c.removeListener();h.removeClass(E);g.removeClass("cke_image_resizing");z&&(a.setData(z), -b.fire("saveSnapshot"));z=!1},m);h.addClass(E);g.addClass("cke_image_resizing")});a.on("data",function(){g["right"==a.data.align?"addClass":"removeClass"]("cke_image_resizer_left")})}function N(a){var b=[],h;return function(e){var g=a.getCommand("justify"+e);if(g){b.push(function(){g.refresh(a,a.elementPath())});if(e in{right:1,left:1,center:1})g.on("exec",function(d){var c=k(a);if(c){c.setData("align",e);for(c=b.length;c--;)b[c]();d.cancel()}});g.on("refresh",function(b){var c=k(a),g={right:1,left:1, -center:1};c&&(void 0===h&&(h=a.filter.checkFeature(a.widgets.registered.image.features.align)),h?this.setState(c.data.align==e?CKEDITOR.TRISTATE_ON:e in g?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED):this.setState(CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}}function O(a){if(a.plugins.link){var b=CKEDITOR.on("dialogDefinition",function(b){b=b.data;if("link"==b.name){b=b.definition;var e=b.onShow,g=b.onOk;b.onShow=function(){var b=k(a),c=this.getContentElement("info","linkDisplayText").getElement().getParent().getParent(); -b&&(b.inline?!b.wrapper.getAscendant("a"):1)?(this.setupContent(b.data.link||{}),c.hide()):(c.show(),e.apply(this,arguments))};b.onOk=function(){var b=k(a);if(b&&(b.inline?!b.wrapper.getAscendant("a"):1)){var c={};this.commitContent(c);b.setData("link",c)}else g.apply(this,arguments)}}});a.on("destroy",function(){b.removeListener()});a.getCommand("unlink").on("exec",function(b){var e=k(a);e&&e.parts.link&&(e.setData("link",null),this.refresh(a,a.elementPath()),b.cancel())});a.getCommand("unlink").on("refresh", -function(b){var e=k(a);e&&(this.setState(e.data.link||e.wrapper.getAscendant("a")?CKEDITOR.TRISTATE_OFF:CKEDITOR.TRISTATE_DISABLED),b.cancel())})}}function k(a){return(a=a.widgets.focused)&&"image"==a.name?a:null}function G(a){var b=a.config.image2_alignClasses;a={div:{match:r(a)},p:{match:r(a)},img:{attributes:"!src,alt,width,height"},figure:{classes:"!"+a.config.image2_captionedClass},figcaption:!0};b?(a.div.classes=b[1],a.p.classes=a.div.classes,a.img.classes=b[0]+","+b[2],a.figure.classes+=","+ -a.img.classes):(a.div.styles="text-align",a.p.styles="text-align",a.img.styles="float",a.figure.styles="float,display");return a}function H(a){a=a.config.image2_alignClasses;return{dimension:{requiredContent:"img[width,height]"},align:{requiredContent:"img"+(a?"("+a[0]+")":"{float}")},caption:{requiredContent:"figcaption"}}}function q(a){return a.data.hasCaption?a.element:a.parts.image}var P=new CKEDITOR.template('\x3cfigure class\x3d"{captionedClass}"\x3e\x3cimg alt\x3d"" src\x3d"" /\x3e\x3cfigcaption\x3e{captionPlaceholder}\x3c/figcaption\x3e\x3c/figure\x3e'), -p={left:0,center:1,right:2},L=/^\s*(\d+\%)\s*$/i;CKEDITOR.plugins.add("image2",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",requires:"widget,dialog",icons:"image",hidpi:!0,onLoad:function(){CKEDITOR.addCss('.cke_image_nocaption{line-height:0}.cke_editable.cke_image_sw, .cke_editable.cke_image_sw *{cursor:sw-resize !important}.cke_editable.cke_image_se, .cke_editable.cke_image_se *{cursor:se-resize !important}.cke_image_resizer{display:none;position:absolute;width:10px;height:10px;bottom:-5px;right:-5px;background:#000;outline:1px solid #fff;line-height:0;cursor:se-resize;}.cke_image_resizer_wrapper{position:relative;display:inline-block;line-height:0;}.cke_image_resizer.cke_image_resizer_left{right:auto;left:-5px;cursor:sw-resize;}.cke_widget_wrapper:hover .cke_image_resizer,.cke_image_resizer.cke_image_resizing{display:block}.cke_editable[contenteditable\x3d"false"] .cke_image_resizer{display:none;}.cke_widget_wrapper\x3ea{display:inline-block}')}, -init:function(a){if(!a.plugins.detectConflict("image2",["easyimage"])){var b=a.config,h=a.lang.image2,e=F(a);b.filebrowserImage2BrowseUrl=b.filebrowserImageBrowseUrl;b.filebrowserImage2UploadUrl=b.filebrowserImageUploadUrl;e.pathName=h.pathName;e.editables.caption.pathName=h.pathNameCaption;a.widgets.add("image",e);a.ui.addButton&&a.ui.addButton("Image",{label:a.lang.common.image,command:"image",toolbar:"insert,10"});a.contextMenu&&(a.addMenuGroup("image",10),a.addMenuItem("image",{label:h.menu,command:"image", -group:"image"}));CKEDITOR.dialog.add("image2",this.path+"dialogs/image2.js")}},afterInit:function(a){var b={left:1,right:1,center:1,block:1},h=N(a),e;for(e in b)h(e);O(a)}});CKEDITOR.plugins.image2={stateShifter:function(a){function b(a,b){var c={};g?c.attributes={"class":g[1]}:c.styles={"text-align":"center"};c=e.createElement(a.activeEnterMode==CKEDITOR.ENTER_P?"p":"div",c);h(c,b);b.move(c);return c}function h(b,d){if(d.getParent()){var e=a.createRange();e.moveToPosition(d,CKEDITOR.POSITION_BEFORE_START); -d.remove();c.insertElementIntoRange(b,e)}else b.replace(d)}var e=a.document,g=a.config.image2_alignClasses,d=a.config.image2_captionedClass,c=a.editable(),f=["hasCaption","align","link"],k={align:function(c,d,e){var f=c.element;c.changed.align?c.newData.hasCaption||("center"==e&&(c.deflate(),c.element=b(a,f)),c.changed.hasCaption||"center"!=d||"center"==e||(c.deflate(),d=f.findOne("a,img"),d.replace(f),c.element=d)):"center"==e&&c.changed.hasCaption&&!c.newData.hasCaption&&(c.deflate(),c.element= -b(a,f));!g&&f.is("figure")&&("center"==e?f.setStyle("display","inline-block"):f.removeStyle("display"))},hasCaption:function(b,c,f){b.changed.hasCaption&&(c=b.element.is({img:1,a:1})?b.element:b.element.findOne("a,img"),b.deflate(),f?(f=CKEDITOR.dom.element.createFromHtml(P.output({captionedClass:d,captionPlaceholder:a.lang.image2.captionPlaceholder}),e),h(f,b.element),c.replace(f.findOne("img")),b.element=f):(c.replace(b.element),b.element=c))},link:function(b,c,d){if(b.changed.link){var f=b.element.is("img")? -b.element:b.element.findOne("img"),g=b.element.is("a")?b.element:b.element.findOne("a"),h=b.element.is("a")&&!d||b.element.is("img")&&d,k;h&&b.deflate();d?(c||(k=e.createElement("a",{attributes:{href:b.newData.link.url}}),k.replace(f),f.move(k)),d=CKEDITOR.plugins.image2.getLinkAttributesGetter()(a,d),CKEDITOR.tools.isEmpty(d.set)||(k||g).setAttributes(d.set),d.removed.length&&(k||g).removeAttributes(d.removed)):(d=g.findOne("img"),d.replace(g),k=d);h&&(b.element=k)}}};return function(a){var b,c; -a.changed={};for(c=0;c(a+=l?1:-1))return;a=Math.min(a,c.length);a=Math.max(a,0);b.$.className=CKEDITOR.tools.ltrim(b.$.className.replace(this.classNameRegex,""));0a)return;a=Math.max(a, -0);a=Math.ceil(a/g)*g;b.setStyle(c,a?a+(d.config.indentUnit||"px"):"");""===b.getAttribute("style")&&b.removeAttribute("style")}CKEDITOR.dom.element.setMarker(this.database,b,"indent_processed",1)}}function m(b,c){return"ltr"==(c||b.getComputedStyle("direction"))?"margin-left":"margin-right"}var h=CKEDITOR.dtd.$listItem,p=CKEDITOR.dtd.$list,k=CKEDITOR.TRISTATE_DISABLED,n=CKEDITOR.TRISTATE_OFF;CKEDITOR.plugins.add("indentblock",{requires:"indent",init:function(b){function c(){a.specificDefinition.apply(this, -arguments);this.allowedContent={"div h1 h2 h3 h4 h5 h6 ol p pre ul":{propertiesOnly:!0,styles:d?null:"margin-left,margin-right",classes:d||null}};this.contentTransformations=[["div: splitMarginShorthand"],["h1: splitMarginShorthand"],["h2: splitMarginShorthand"],["h3: splitMarginShorthand"],["h4: splitMarginShorthand"],["h5: splitMarginShorthand"],["h6: splitMarginShorthand"],["ol: splitMarginShorthand"],["p: splitMarginShorthand"],["pre: splitMarginShorthand"],["ul: splitMarginShorthand"]];this.enterBr&& -(this.allowedContent.div=!0);this.requiredContent=(this.enterBr?"div":"p")+(d?"("+d.join(",")+")":"{margin-left}");this.jobs={20:{refresh:function(a,b){var e=b.block||b.blockLimit;if(!e.is(h))var c=e.getAscendant(h),e=c&&b.contains(c)||e;e.is(h)&&(e=e.getParent());if(this.enterBr||this.getContext(b)){if(d){var c=d,e=e.$.className.match(this.classNameRegex),f=this.isIndent,c=e?f?e[1]!=c.slice(-1):!0:f;return c?n:k}return this.isIndent?n:e?CKEDITOR[0>=(parseInt(e.getStyle(m(e)),10)||0)?"TRISTATE_DISABLED": -"TRISTATE_OFF"]:k}return k},exec:function(a){var b=a.getSelection(),b=b&&b.getRanges()[0],c;if(c=a.elementPath().contains(p))f.call(this,c,d);else for(b=b.createIterator(),a=a.config.enterMode,b.enforceRealBlocks=!0,b.enlargeBr=a!=CKEDITOR.ENTER_BR;c=b.getNextParagraph(a==CKEDITOR.ENTER_P?"p":"div");)c.isReadOnly()||f.call(this,c,d);return!0}}}}var a=CKEDITOR.plugins.indent,d=b.config.indentClasses;a.registerCommands(b,{indentblock:new c(b,"indentblock",!0),outdentblock:new c(b,"outdentblock")}); -CKEDITOR.tools.extend(c.prototype,a.specificDefinition.prototype,{context:{div:1,dl:1,h1:1,h2:1,h3:1,h4:1,h5:1,h6:1,ul:1,ol:1,p:1,pre:1,table:1},classNameRegex:d?new RegExp("(?:^|\\s+)("+d.join("|")+")(?\x3d$|\\s)"):null})}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyblock.png b/public/build/ckeditor/plugins/justify/icons/hidpi/justifyblock.png deleted file mode 100644 index 5c0cf439..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyblock.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/hidpi/justifycenter.png b/public/build/ckeditor/plugins/justify/icons/hidpi/justifycenter.png deleted file mode 100644 index fd751be5..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/hidpi/justifycenter.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyleft.png b/public/build/ckeditor/plugins/justify/icons/hidpi/justifyleft.png deleted file mode 100644 index a109ad3c..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyleft.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyright.png b/public/build/ckeditor/plugins/justify/icons/hidpi/justifyright.png deleted file mode 100644 index 5125d56f..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/hidpi/justifyright.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/justifyblock.png b/public/build/ckeditor/plugins/justify/icons/justifyblock.png deleted file mode 100644 index ffe0620c..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/justifyblock.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/justifycenter.png b/public/build/ckeditor/plugins/justify/icons/justifycenter.png deleted file mode 100644 index 8b5b40fd..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/justifycenter.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/justifyleft.png b/public/build/ckeditor/plugins/justify/icons/justifyleft.png deleted file mode 100644 index a60d0793..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/justifyleft.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/icons/justifyright.png b/public/build/ckeditor/plugins/justify/icons/justifyright.png deleted file mode 100644 index 21de8149..00000000 Binary files a/public/build/ckeditor/plugins/justify/icons/justifyright.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/justify/plugin.js b/public/build/ckeditor/plugins/justify/plugin.js deleted file mode 100644 index f55fd5b2..00000000 --- a/public/build/ckeditor/plugins/justify/plugin.js +++ /dev/null @@ -1,12 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function p(a,c){var b;if(c)b=a.getComputedStyle("text-align");else{for(;!a.hasAttribute||!a.hasAttribute("align")&&!a.getStyle("text-align");){b=a.getParent();if(!b)break;a=b}b=a.getStyle("text-align")||a.getAttribute("align")||""}b&&(b=b.replace(/(?:-(?:moz|webkit)-)?(?:start|auto)/i,""));!b&&c&&(b="rtl"==a.getComputedStyle("direction")?"right":"left");return b}function h(a,c,b){this.editor=a;this.name=c;this.value=b;this.context="p";c=a.config.justifyClasses;var f=a.config.enterMode== -CKEDITOR.ENTER_P?"p":"div";if(c){switch(b){case "left":this.cssClassName=c[0];break;case "center":this.cssClassName=c[1];break;case "right":this.cssClassName=c[2];break;case "justify":this.cssClassName=c[3]}this.cssClassRegex=new RegExp("(?:^|\\s+)(?:"+c.join("|")+")(?\x3d$|\\s)");this.requiredContent=f+"("+this.cssClassName+")"}else this.requiredContent=f+"{text-align}";this.allowedContent={"caption div h1 h2 h3 h4 h5 h6 p pre td th li":{propertiesOnly:!0,styles:this.cssClassName?null:"text-align", -classes:this.cssClassName||null}};a.config.enterMode==CKEDITOR.ENTER_BR&&(this.allowedContent.div=!0)}function l(a){var c=a.editor,b=c.createRange();b.setStartBefore(a.data.node);b.setEndAfter(a.data.node);for(var f=new CKEDITOR.dom.walker(b),d;d=f.next();)if(d.type==CKEDITOR.NODE_ELEMENT)if(!d.equals(a.data.node)&&d.getDirection())b.setStartAfter(d),f=new CKEDITOR.dom.walker(b);else{var e=c.config.justifyClasses;e&&(d.hasClass(e[0])?(d.removeClass(e[0]),d.addClass(e[2])):d.hasClass(e[2])&&(d.removeClass(e[2]), -d.addClass(e[0])));e=d.getStyle("text-align");"left"==e?d.setStyle("text-align","right"):"right"==e&&d.setStyle("text-align","left")}}h.prototype={exec:function(a){var c=a.getSelection(),b=a.config.enterMode;if(c){for(var f=c.createBookmarks(),d=c.getRanges(),e=this.cssClassName,h,g,l=a.config.useComputedState,m=d.length-1;0<=m;m--)for(h=d[m].createIterator(),h.enlargeBr=b!=CKEDITOR.ENTER_BR;g=h.getNextParagraph(b==CKEDITOR.ENTER_P?"p":"div");)if(!g.isReadOnly()){var k=g.getName(),n;n=a.activeFilter.check(k+ -"{text-align}");if((k=a.activeFilter.check(k+"("+e+")"))||n){g.removeAttribute("align");g.removeStyle("text-align");var r=e&&(g.$.className=CKEDITOR.tools.ltrim(g.$.className.replace(this.cssClassRegex,""))),q=this.state==CKEDITOR.TRISTATE_OFF&&(!l||p(g,!0)!=this.value);e&&k?q?g.addClass(e):r||g.removeAttribute("class"):q&&n&&g.setStyle("text-align",this.value)}}a.focus();a.forceNextSelectionCheck();c.selectBookmarks(f)}},refresh:function(a,c){var b=c.block||c.blockLimit,f=b.getName(),d=b.equals(a.editable()), -f=this.cssClassName?a.activeFilter.check(f+"("+this.cssClassName+")"):a.activeFilter.check(f+"{text-align}");d&&!CKEDITOR.dtd.$list[c.lastElement.getName()]?this.setState(CKEDITOR.TRISTATE_OFF):!d&&f?this.setState(p(b,this.editor.config.useComputedState)==this.value?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF):this.setState(CKEDITOR.TRISTATE_DISABLED)}};CKEDITOR.plugins.add("justify",{icons:"justifyblock,justifycenter,justifyleft,justifyright",hidpi:!0,init:function(a){if(!a.blockless){var c=new h(a, -"justifyleft","left"),b=new h(a,"justifycenter","center"),f=new h(a,"justifyright","right"),d=new h(a,"justifyblock","justify");a.addCommand("justifyleft",c);a.addCommand("justifycenter",b);a.addCommand("justifyright",f);a.addCommand("justifyblock",d);a.ui.addButton&&(a.ui.addButton("JustifyLeft",{isToggle:!0,label:a.lang.common.alignLeft,command:"justifyleft",toolbar:"align,10"}),a.ui.addButton("JustifyCenter",{isToggle:!0,label:a.lang.common.center,command:"justifycenter",toolbar:"align,20"}),a.ui.addButton("JustifyRight", -{isToggle:!0,label:a.lang.common.alignRight,command:"justifyright",toolbar:"align,30"}),a.ui.addButton("JustifyBlock",{isToggle:!0,label:a.lang.common.justify,command:"justifyblock",toolbar:"align,40"}));a.on("dirChanged",l)}}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/icons/hidpi/language.png b/public/build/ckeditor/plugins/language/icons/hidpi/language.png deleted file mode 100644 index 7159a1f6..00000000 Binary files a/public/build/ckeditor/plugins/language/icons/hidpi/language.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/language/icons/language.png b/public/build/ckeditor/plugins/language/icons/language.png deleted file mode 100644 index 145af2f0..00000000 Binary files a/public/build/ckeditor/plugins/language/icons/language.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/language/lang/ar.js b/public/build/ckeditor/plugins/language/lang/ar.js deleted file mode 100644 index b9eab564..00000000 --- a/public/build/ckeditor/plugins/language/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ar",{button:"حدد اللغة",remove:"حذف اللغة"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/az.js b/public/build/ckeditor/plugins/language/lang/az.js deleted file mode 100644 index 65e8c6c4..00000000 --- a/public/build/ckeditor/plugins/language/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","az",{button:"Dilini təyin et",remove:"Dilini sil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/bg.js b/public/build/ckeditor/plugins/language/lang/bg.js deleted file mode 100644 index abae29c9..00000000 --- a/public/build/ckeditor/plugins/language/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","bg",{button:"Задай език",remove:"Премахни език"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ca.js b/public/build/ckeditor/plugins/language/lang/ca.js deleted file mode 100644 index 5de6aa9a..00000000 --- a/public/build/ckeditor/plugins/language/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ca",{button:"Definir l'idioma",remove:"Eliminar idioma"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/cs.js b/public/build/ckeditor/plugins/language/lang/cs.js deleted file mode 100644 index 452b5de6..00000000 --- a/public/build/ckeditor/plugins/language/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","cs",{button:"Nastavit jazyk",remove:"Odstranit jazyk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/cy.js b/public/build/ckeditor/plugins/language/lang/cy.js deleted file mode 100644 index de4572e7..00000000 --- a/public/build/ckeditor/plugins/language/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","cy",{button:"Gosod iaith",remove:"Tynnu iaith"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/da.js b/public/build/ckeditor/plugins/language/lang/da.js deleted file mode 100644 index fbaf28f0..00000000 --- a/public/build/ckeditor/plugins/language/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","da",{button:"Vælg sprog",remove:"Fjern sprog"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/de-ch.js b/public/build/ckeditor/plugins/language/lang/de-ch.js deleted file mode 100644 index 3a608e79..00000000 --- a/public/build/ckeditor/plugins/language/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","de-ch",{button:"Sprache festlegen",remove:"Sprache entfernen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/de.js b/public/build/ckeditor/plugins/language/lang/de.js deleted file mode 100644 index 91c83d9e..00000000 --- a/public/build/ckeditor/plugins/language/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","de",{button:"Sprache festlegen",remove:"Sprache entfernen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/el.js b/public/build/ckeditor/plugins/language/lang/el.js deleted file mode 100644 index b6dbfe71..00000000 --- a/public/build/ckeditor/plugins/language/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","el",{button:"Θέση γλώσσας",remove:"Αφαίρεση γλώσσας"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/en-au.js b/public/build/ckeditor/plugins/language/lang/en-au.js deleted file mode 100644 index bd4144cb..00000000 --- a/public/build/ckeditor/plugins/language/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","en-au",{button:"Set language",remove:"Remove language"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/en-gb.js b/public/build/ckeditor/plugins/language/lang/en-gb.js deleted file mode 100644 index 23a1facd..00000000 --- a/public/build/ckeditor/plugins/language/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","en-gb",{button:"Set language",remove:"Remove language"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/en.js b/public/build/ckeditor/plugins/language/lang/en.js deleted file mode 100644 index 3784673a..00000000 --- a/public/build/ckeditor/plugins/language/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","en",{button:"Set language",remove:"Remove language"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/eo.js b/public/build/ckeditor/plugins/language/lang/eo.js deleted file mode 100644 index 2d3b832b..00000000 --- a/public/build/ckeditor/plugins/language/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","eo",{button:"Instali lingvon",remove:"Forigi lingvon"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/es-mx.js b/public/build/ckeditor/plugins/language/lang/es-mx.js deleted file mode 100644 index 0ad85df3..00000000 --- a/public/build/ckeditor/plugins/language/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","es-mx",{button:"Establecer idioma",remove:"Remover idioma"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/es.js b/public/build/ckeditor/plugins/language/lang/es.js deleted file mode 100644 index c247823b..00000000 --- a/public/build/ckeditor/plugins/language/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","es",{button:"Fijar lenguaje",remove:"Quitar lenguaje"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/et.js b/public/build/ckeditor/plugins/language/lang/et.js deleted file mode 100644 index 7179b13d..00000000 --- a/public/build/ckeditor/plugins/language/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","et",{button:"Määra keel",remove:"Eemalda keel"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/eu.js b/public/build/ckeditor/plugins/language/lang/eu.js deleted file mode 100644 index 9af07c8f..00000000 --- a/public/build/ckeditor/plugins/language/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","eu",{button:"Ezarri hizkuntza",remove:"Kendu hizkuntza"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/fa.js b/public/build/ckeditor/plugins/language/lang/fa.js deleted file mode 100644 index 836e7760..00000000 --- a/public/build/ckeditor/plugins/language/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","fa",{button:"تعیین زبان",remove:"حذف زبان"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/fi.js b/public/build/ckeditor/plugins/language/lang/fi.js deleted file mode 100644 index 09278224..00000000 --- a/public/build/ckeditor/plugins/language/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","fi",{button:"Aseta kieli",remove:"Poista kieli"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/fo.js b/public/build/ckeditor/plugins/language/lang/fo.js deleted file mode 100644 index e5afca87..00000000 --- a/public/build/ckeditor/plugins/language/lang/fo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","fo",{button:"Velja tungumál",remove:"Remove language"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/fr.js b/public/build/ckeditor/plugins/language/lang/fr.js deleted file mode 100644 index a7a78247..00000000 --- a/public/build/ckeditor/plugins/language/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","fr",{button:"Définir la langue",remove:"Supprimer la langue"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/gl.js b/public/build/ckeditor/plugins/language/lang/gl.js deleted file mode 100644 index dcf09f79..00000000 --- a/public/build/ckeditor/plugins/language/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","gl",{button:"Estabelezer o idioma",remove:"Retirar o idioma"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/he.js b/public/build/ckeditor/plugins/language/lang/he.js deleted file mode 100644 index e4a98528..00000000 --- a/public/build/ckeditor/plugins/language/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","he",{button:"צור שפה",remove:"הסר שפה"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/hr.js b/public/build/ckeditor/plugins/language/lang/hr.js deleted file mode 100644 index 47f3487d..00000000 --- a/public/build/ckeditor/plugins/language/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","hr",{button:"Namjesti jezik",remove:"Makni jezik"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/hu.js b/public/build/ckeditor/plugins/language/lang/hu.js deleted file mode 100644 index d3d4f3d1..00000000 --- a/public/build/ckeditor/plugins/language/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","hu",{button:"Nyelv beállítása",remove:"Nyelv eltávolítása"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/id.js b/public/build/ckeditor/plugins/language/lang/id.js deleted file mode 100644 index 822d9c40..00000000 --- a/public/build/ckeditor/plugins/language/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","id",{button:"Atur Bahasa",remove:"Hapus Bahasa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/it.js b/public/build/ckeditor/plugins/language/lang/it.js deleted file mode 100644 index 7896b183..00000000 --- a/public/build/ckeditor/plugins/language/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","it",{button:"Imposta lingua",remove:"Rimuovi lingua"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ja.js b/public/build/ckeditor/plugins/language/lang/ja.js deleted file mode 100644 index 6d1070b2..00000000 --- a/public/build/ckeditor/plugins/language/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ja",{button:"言語を設定",remove:"言語を削除"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/km.js b/public/build/ckeditor/plugins/language/lang/km.js deleted file mode 100644 index 7db4cb70..00000000 --- a/public/build/ckeditor/plugins/language/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","km",{button:"កំណត់​ភាសា",remove:"លុប​ភាសា"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ko.js b/public/build/ckeditor/plugins/language/lang/ko.js deleted file mode 100644 index 55c9e818..00000000 --- a/public/build/ckeditor/plugins/language/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ko",{button:"언어 설정",remove:"언어 설정 지우기"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ku.js b/public/build/ckeditor/plugins/language/lang/ku.js deleted file mode 100644 index 2b7ebdfb..00000000 --- a/public/build/ckeditor/plugins/language/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ku",{button:"جێگیرکردنی زمان",remove:"لابردنی زمان"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/lt.js b/public/build/ckeditor/plugins/language/lang/lt.js deleted file mode 100644 index 79a2c993..00000000 --- a/public/build/ckeditor/plugins/language/lang/lt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","lt",{button:"Nustatyti kalbą",remove:"Pašalinti kalbą"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/lv.js b/public/build/ckeditor/plugins/language/lang/lv.js deleted file mode 100644 index 1b24cc87..00000000 --- a/public/build/ckeditor/plugins/language/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","lv",{button:"Uzstādīt valodu",remove:"Noņemt valodu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/nb.js b/public/build/ckeditor/plugins/language/lang/nb.js deleted file mode 100644 index 3b38a9de..00000000 --- a/public/build/ckeditor/plugins/language/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","nb",{button:"Sett språk",remove:"Fjern språk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/nl.js b/public/build/ckeditor/plugins/language/lang/nl.js deleted file mode 100644 index bc4d96c1..00000000 --- a/public/build/ckeditor/plugins/language/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","nl",{button:"Taal instellen",remove:"Taal verwijderen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/no.js b/public/build/ckeditor/plugins/language/lang/no.js deleted file mode 100644 index e50631c7..00000000 --- a/public/build/ckeditor/plugins/language/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","no",{button:"Sett språk",remove:"Fjern språk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/oc.js b/public/build/ckeditor/plugins/language/lang/oc.js deleted file mode 100644 index 24109da2..00000000 --- a/public/build/ckeditor/plugins/language/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","oc",{button:"Definir la lenga",remove:"Suprimir la lenga"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/pl.js b/public/build/ckeditor/plugins/language/lang/pl.js deleted file mode 100644 index 9c752751..00000000 --- a/public/build/ckeditor/plugins/language/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","pl",{button:"Ustaw język",remove:"Usuń język"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/pt-br.js b/public/build/ckeditor/plugins/language/lang/pt-br.js deleted file mode 100644 index bff3a0fc..00000000 --- a/public/build/ckeditor/plugins/language/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","pt-br",{button:"Configure o Idioma",remove:"Remover Idioma"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/pt.js b/public/build/ckeditor/plugins/language/lang/pt.js deleted file mode 100644 index eea83332..00000000 --- a/public/build/ckeditor/plugins/language/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","pt",{button:"Definir Idioma",remove:"Remover idioma"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ro.js b/public/build/ckeditor/plugins/language/lang/ro.js deleted file mode 100644 index 29976a8f..00000000 --- a/public/build/ckeditor/plugins/language/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ro",{button:"Alege limba",remove:"Șterge limba deja selectată"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ru.js b/public/build/ckeditor/plugins/language/lang/ru.js deleted file mode 100644 index 9a6b828d..00000000 --- a/public/build/ckeditor/plugins/language/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ru",{button:"Установка языка",remove:"Удалить язык"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sk.js b/public/build/ckeditor/plugins/language/lang/sk.js deleted file mode 100644 index 422d805e..00000000 --- a/public/build/ckeditor/plugins/language/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sk",{button:"Nastaviť jazyk",remove:"Odstrániť jazyk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sl.js b/public/build/ckeditor/plugins/language/lang/sl.js deleted file mode 100644 index f436c891..00000000 --- a/public/build/ckeditor/plugins/language/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sl",{button:"Nastavi jezik",remove:"Odstrani jezik"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sq.js b/public/build/ckeditor/plugins/language/lang/sq.js deleted file mode 100644 index 3a27f8a3..00000000 --- a/public/build/ckeditor/plugins/language/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sq",{button:"Përzgjidhni gjuhën",remove:"Largoni gjuhën"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sr-latn.js b/public/build/ckeditor/plugins/language/lang/sr-latn.js deleted file mode 100644 index 02a5ac21..00000000 --- a/public/build/ckeditor/plugins/language/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sr-latn",{button:"Podesi jezik",remove:"Odstrani jezik"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sr.js b/public/build/ckeditor/plugins/language/lang/sr.js deleted file mode 100644 index b4a1ba00..00000000 --- a/public/build/ckeditor/plugins/language/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sr",{button:"Подеси језик",remove:"Одстрани језик"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/sv.js b/public/build/ckeditor/plugins/language/lang/sv.js deleted file mode 100644 index 635f2aec..00000000 --- a/public/build/ckeditor/plugins/language/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","sv",{button:"Sätt språk",remove:"Ta bort språk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/tr.js b/public/build/ckeditor/plugins/language/lang/tr.js deleted file mode 100644 index da0e4b7d..00000000 --- a/public/build/ckeditor/plugins/language/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","tr",{button:"Dili seç",remove:"Dili kaldır"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/tt.js b/public/build/ckeditor/plugins/language/lang/tt.js deleted file mode 100644 index db316a5d..00000000 --- a/public/build/ckeditor/plugins/language/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","tt",{button:"Тел сайлау",remove:"Телне бетерү"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/ug.js b/public/build/ckeditor/plugins/language/lang/ug.js deleted file mode 100644 index 0eb3d270..00000000 --- a/public/build/ckeditor/plugins/language/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","ug",{button:"تىل تەڭشەك",remove:"تىلنى چىقىرىۋەت"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/uk.js b/public/build/ckeditor/plugins/language/lang/uk.js deleted file mode 100644 index 21c53e24..00000000 --- a/public/build/ckeditor/plugins/language/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","uk",{button:"Установити мову",remove:"Вилучити мову"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/vi.js b/public/build/ckeditor/plugins/language/lang/vi.js deleted file mode 100644 index 52531e55..00000000 --- a/public/build/ckeditor/plugins/language/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","vi",{button:"Thiết lập ngôn ngữ",remove:"Loại bỏ ngôn ngữ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/zh-cn.js b/public/build/ckeditor/plugins/language/lang/zh-cn.js deleted file mode 100644 index 6cd2a1c5..00000000 --- a/public/build/ckeditor/plugins/language/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","zh-cn",{button:"设置语言",remove:"移除语言"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/lang/zh.js b/public/build/ckeditor/plugins/language/lang/zh.js deleted file mode 100644 index c77de912..00000000 --- a/public/build/ckeditor/plugins/language/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("language","zh",{button:"設定語言",remove:"移除語言"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/language/plugin.js b/public/build/ckeditor/plugins/language/plugin.js deleted file mode 100644 index 7117968b..00000000 --- a/public/build/ckeditor/plugins/language/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){CKEDITOR.plugins.add("language",{requires:"menubutton",lang:"ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,gl,he,hr,hu,id,it,ja,km,ko,ku,lt,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",icons:"language",hidpi:!0,init:function(a){var c=a.config.language_list||["ar:Arabic:rtl","fr:French","es:Spanish"],f=this,d=a.lang.language,e={},h,k,l,g;a.addCommand("language",{allowedContent:"span[!lang,dir]",requiredContent:"span[lang]", -contextSensitive:!0,exec:function(b,a){var c=e["language_"+a];if(c)b[c.style.checkActive(b.elementPath(),b)?"removeStyle":"applyStyle"](c.style)},refresh:function(b){this.setState(f.getCurrentLangElement(b)?CKEDITOR.TRISTATE_ON:CKEDITOR.TRISTATE_OFF)}});for(g=0;gCKEDITOR.env.version&&(b["class"]="cke_anchor");var d=a.clone(); -d.enlarge(CKEDITOR.ENLARGE_ELEMENT);for(var e=new CKEDITOR.dom.walker(d),d=d.collapsed?d.startContainer:e.next(),g=a.createBookmark();d;)d.type===CKEDITOR.NODE_ELEMENT&&d.getAttribute("data-cke-saved-name")&&(d.remove(!0),e.reset()),d=e.next();a.moveToBookmark(g);b=new CKEDITOR.style({element:"a",attributes:b});b.type=CKEDITOR.STYLE_INLINE;b.applyToRange(a)}},onShow:function(){var b=c.getSelection(),a=this.getModel(c),d=a&&a.data("cke-realelement");if(a=d?CKEDITOR.plugins.link.tryRestoreFakeAnchor(c, -a):CKEDITOR.plugins.link.getSelectedLink(c)){var e=a.data("cke-saved-name");this.setValueOf("info","txtName",e||"");!d&&b.selectElement(a)}this.getContentElement("info","txtName").focus()},contents:[{id:"info",label:c.lang.link.anchor.title,accessKey:"I",elements:[{type:"text",id:"txtName",label:c.lang.link.anchor.name,required:!0,validate:function(){var b=this.getValue();return b?/[\u0020\u0009\u000a\u000c\u000d]/g.test(b)?(alert(c.lang.link.anchor.errorWhitespace),!1):!0:(alert(c.lang.link.anchor.errorName), -!1)}}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/link/dialogs/link.js b/public/build/ckeditor/plugins/link/dialogs/link.js deleted file mode 100644 index 51bd322e..00000000 --- a/public/build/ckeditor/plugins/link/dialogs/link.js +++ /dev/null @@ -1,30 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function u(){var c=this.getDialog(),p=c._.editor,n=p.config.linkPhoneRegExp,q=p.config.linkPhoneMsg,p=CKEDITOR.dialog.validate.notEmpty(p.lang.link.noTel).apply(this);if(!c.getContentElement("info","linkType")||"tel"!=c.getValueOf("info","linkType"))return!0;if(!0!==p)return p;if(n)return CKEDITOR.dialog.validate.regex(n,q).call(this)}CKEDITOR.dialog.add("link",function(c){function p(a,b){var c=a.createRange();c.setStartBefore(b);c.setEndAfter(b);return c}var n=CKEDITOR.plugins.link,q, -t=function(){var a=this.getDialog(),b=a.getContentElement("target","popupFeatures"),a=a.getContentElement("target","linkTargetName"),r=this.getValue();if(b&&a)switch(b=b.getElement(),b.hide(),a.setValue(""),r){case "frame":a.setLabel(c.lang.link.targetFrameName);a.getElement().show();break;case "popup":b.show();a.setLabel(c.lang.link.targetPopupName);a.getElement().show();break;default:a.setValue(r),a.getElement().hide()}},d=function(a){a.target&&this.setValue(a.target[this.id]||"")},g=function(a){a.advanced&& -this.setValue(a.advanced[this.id]||"")},e=function(a){a.target||(a.target={});a.target[this.id]=this.getValue()||""},k=function(a){a.advanced||(a.advanced={});a.advanced[this.id]=this.getValue()||""},h=c.lang.common,b=c.lang.link,l;return{title:b.title,minWidth:"moono-lisa"==(CKEDITOR.skinName||c.config.skin)?450:350,minHeight:240,getModel:function(a){return n.getSelectedLink(a,!0)[0]||null},contents:[{id:"info",label:b.info,title:b.info,elements:[{type:"text",id:"linkDisplayText",label:b.displayText, -setup:function(){this.enable();this.setValue(c.getSelection().getSelectedText());q=this.getValue()},commit:function(a){a.linkText=this.isEnabled()?this.getValue():""}},{id:"linkType",type:"select",label:b.type,"default":"url",items:[[b.toUrl,"url"],[b.toAnchor,"anchor"],[b.toEmail,"email"],[b.toPhone,"tel"]],onChange:function(){var a=this.getDialog(),b=["urlOptions","anchorOptions","emailOptions","telOptions"],r=this.getValue(),f=a.definition.getContents("upload"),f=f&&f.hidden;"url"==r?(c.config.linkShowTargetTab&& -a.showPage("target"),f||a.showPage("upload")):(a.hidePage("target"),f||a.hidePage("upload"));for(f=0;f=f.length&&n.showDisplayTextForElement(m,a)?c.show():c.hide();this._.selectedElements=f;this.setupContent(b)},onOk:function(){var a={};this.commitContent(a);if(this._.selectedElements.length){var b=this._.selectedElements,h=n.getLinkAttributes(c,a),f=[],m,l,d,g,e,k;for(k=0;k/,'\x3cscript src\x3d"'+CKEDITOR.getUrl(b.config.mathJaxLib)+'"\x3e\x3c/script\x3e\x3c/head\x3e')});b.on("paste",function(a){a.data.dataValue=a.data.dataValue.replace(new RegExp("\x3cspan[^\x3e]*?"+c+".*?\x3c/span\x3e","ig"),function(a){return a.replace(/()/i,"")})})}});CKEDITOR.plugins.mathjax= -{};CKEDITOR.plugins.mathjax.fixSrc=CKEDITOR.env.gecko?"javascript:true":CKEDITOR.env.ie?"javascript:void((function(){"+encodeURIComponent("document.open();("+CKEDITOR.tools.fixDomain+")();document.close();")+"})())":"javascript:void(0)";CKEDITOR.plugins.mathjax.loadingIcon=CKEDITOR.plugins.get("mathjax").path+"images/loader.gif";CKEDITOR.plugins.mathjax.copyStyles=function(b,c){for(var a="color font-family font-style font-weight font-variant font-size".split(" "),e=0;e/)?!0:!1},convertToFakeListItem:function(c,b){p.isDegenerateListItem(c,b)&&p.assignListLevels(c, -b);this.getListItemInfo(b);if(!b.attributes["cke-dissolved"]){var d;b.forEach(function(b){!d&&"img"==b.name&&b.attributes["cke-ignored"]&&"*"==b.attributes.alt&&(d="·",b.remove())},CKEDITOR.NODE_ELEMENT);b.forEach(function(b){d||b.value.match(/^ /)||(d=b.value)},CKEDITOR.NODE_TEXT);if("undefined"==typeof d)return;b.attributes["cke-symbol"]=d.replace(/(?: | ).*$/,"");g.removeSymbolText(b)}var e=b.attributes&&n.parseCssText(b.attributes.style);if(e["margin-left"]){var f=e["margin-left"],l=b.attributes["cke-list-level"]; -(f=Math.max(CKEDITOR.tools.convertToPx(f)-40*l,0))?e["margin-left"]=f+"px":delete e["margin-left"];b.attributes.style=CKEDITOR.tools.writeCssText(e)}b.name="cke:li"},convertToRealListItems:function(c){var b=[];c.forEach(function(c){"cke:li"==c.name&&(c.name="li",b.push(c))},CKEDITOR.NODE_ELEMENT,!1);return b},removeSymbolText:function(c){var b=c.attributes["cke-symbol"],d=c.findOne(function(c){return c.value&&-1b&&(c.attributes.dir="rtl")},createList:function(c){return(c.attributes["cke-symbol"].match(/([\da-np-zA-NP-Z]).?/)||[])[1]? -new CKEDITOR.htmlParser.element("ol"):new CKEDITOR.htmlParser.element("ul")},createLists:function(c){function b(b){return CKEDITOR.tools.array.reduce(b,function(b,a){if(a.attributes&&a.attributes.style)var c=CKEDITOR.tools.parseCssText(a.attributes.style)["margin-left"];return c?b+parseInt(c,10):b},0)}var d,e,f,l=g.convertToRealListItems(c);if(0===l.length)return[];var k=g.groupLists(l);for(c=0;ch.length;){var v=g.createList(d),x=m.children;0f;f++)d[f]&&delete d[f];d[c[l].attributes["cke-list-level"]]=h;e[e.length-1].push(c[l]);f=a}[].splice.apply(b,[].concat([n.indexOf(b,c),1],e))},isAListContinuation:function(c){var b=c;do if((b=b.previous)&&b.type===CKEDITOR.NODE_ELEMENT){if(void 0===b.attributes["cke-list-level"])break;if(b.attributes["cke-list-level"]===c.attributes["cke-list-level"])return b.attributes["cke-list-id"]===c.attributes["cke-list-id"]}while(b);return!1},toArabic:function(c){return c.match(/[ivxl]/i)?c.match(/^l/i)? -50+g.toArabic(c.slice(1)):c.match(/^lx/i)?40+g.toArabic(c.slice(1)):c.match(/^x/i)?10+g.toArabic(c.slice(1)):c.match(/^ix/i)?9+g.toArabic(c.slice(2)):c.match(/^v/i)?5+g.toArabic(c.slice(1)):c.match(/^iv/i)?4+g.toArabic(c.slice(2)):c.match(/^i/i)?1+g.toArabic(c.slice(1)):g.toArabic(c.slice(1)):0},getSymbolInfo:function(c,b){var d=c.toUpperCase()==c?"upper-":"lower-",e={"·":["disc",-1],o:["circle",-2],"§":["square",-3]};if(c in e||b&&b.match(/(disc|circle|square)/))return{index:e[c][1],type:e[c][0]}; -if(c.match(/\d/))return{index:c?parseInt(g.getSubsectionSymbol(c),10):0,type:"decimal"};c=c.replace(/\W/g,"").toLowerCase();return!b&&c.match(/[ivxl]+/i)||b&&"alpha"!=b||"roman"==b?{index:g.toArabic(c),type:d+"roman"}:c.match(/[a-z]/i)?{index:c.charCodeAt(0)-97,type:d+"alpha"}:{index:-1,type:"disc"}},getListItemInfo:function(c){if(void 0!==c.attributes["cke-list-id"])return{id:c.attributes["cke-list-id"],level:c.attributes["cke-list-level"]};var b=n.parseCssText(c.attributes.style)["mso-list"],d= -{id:"0",level:"1"};b&&(b+=" ",d.level=b.match(/level(.+?)\s+/)[1],d.id=b.match(/l(\d+?)\s+/)[1]);c.attributes["cke-list-level"]=void 0!==c.attributes["cke-list-level"]?c.attributes["cke-list-level"]:d.level;c.attributes["cke-list-id"]=d.id;return d}};g=q.lists;q.heuristics={isEdgeListItem:function(c,b){if(!CKEDITOR.env.edge||!c.config.pasteFromWord_heuristicsEdgeList)return!1;var d="";b.forEach&&b.forEach(function(b){d+=b.value},CKEDITOR.NODE_TEXT);return d.match(/^(?: | )*\(?[a-zA-Z0-9]+?[\.\)](?: | ){2,}/)? -!0:p.isDegenerateListItem(c,b)},cleanupEdgeListItem:function(c){var b=!1;c.forEach(function(c){b||(c.value=c.value.replace(/^(?: |[\s])+/,""),c.value.length&&(b=!0))},CKEDITOR.NODE_TEXT)},isDegenerateListItem:function(c,b){return!!b.attributes["cke-list-level"]||b.attributes.style&&!b.attributes.style.match(/mso\-list/)&&!!b.find(function(c){if(c.type==CKEDITOR.NODE_ELEMENT&&b.name.match(/h\d/i)&&c.getHtml().match(/^[a-zA-Z0-9]+?[\.\)]$/))return!0;var e=n.parseCssText(c.attributes&&c.attributes.style, -!0);if(!e)return!1;var f=e["font-family"]||"";return(e.font||e["font-size"]||"").match(/7pt/i)&&!!c.previous||f.match(/symbol/i)},!0).length},assignListLevels:function(c,b){if(!b.attributes||void 0===b.attributes["cke-list-level"]){for(var d=[z(b)],e=[b],f=[],g=CKEDITOR.tools.array,k=g.map;b.next&&b.next.attributes&&!b.next.attributes["cke-list-level"]&&p.isDegenerateListItem(c,b.next);)b=b.next,d.push(z(b)),e.push(b);var a=k(d,function(a,b){return 0===b?0:a-d[b-1]}),h=this.guessIndentationStep(g.filter(d, -function(a){return 0!==a})),f=k(d,function(a){return Math.round(a/h)});-1!==g.indexOf(f,0)&&(f=k(f,function(a){return a+1}));g.forEach(e,function(a,b){a.attributes["cke-list-level"]=f[b]});return{indents:d,levels:f,diffs:a}}},guessIndentationStep:function(c){return c.length?Math.min.apply(null,c):null},correctLevelShift:function(c){if(this.isShifted(c)){var b=CKEDITOR.tools.array.filter(c.children,function(b){return"ul"==b.name||"ol"==b.name}),d=CKEDITOR.tools.array.reduce(b,function(b,c){return(c.children&& -1==c.children.length&&p.isShifted(c.children[0])?[c]:c.children).concat(b)},[]);CKEDITOR.tools.array.forEach(b,function(b){b.remove()});CKEDITOR.tools.array.forEach(d,function(b){c.add(b)});delete c.name}},isShifted:function(c){return"li"!==c.name?!1:0===CKEDITOR.tools.array.filter(c.children,function(b){return b.name&&("ul"==b.name||"ol"==b.name||"p"==b.name&&0===b.children.length)?!1:!0}).length}};p=q.heuristics;g.setListSymbol.removeRedundancies=function(c,b){(1===b&&"disc"===c["list-style-type"]|| -"decimal"===c["list-style-type"])&&delete c["list-style-type"]};CKEDITOR.cleanWord=CKEDITOR.pasteFilters.word=B.createFilter({rules:[t.rules,q.rules],additionalTransforms:function(c){CKEDITOR.plugins.clipboard.isCustomDataTypesSupported&&(c=t.styles.inliner.inline(c).getBody().getHtml());return c.replace(//g,"]--\x3e")}});CKEDITOR.config.pasteFromWord_heuristicsEdgeList=!0})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/pastetools/filter/common.js b/public/build/ckeditor/plugins/pastetools/filter/common.js deleted file mode 100644 index bce639a9..00000000 --- a/public/build/ckeditor/plugins/pastetools/filter/common.js +++ /dev/null @@ -1,24 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function q(a,b,c){b+=c;for(var d=a[b],e=/[\s]/;d&&e.test(d);)b+=c,d=a[b];return d}function r(a){return/%$/.test(a)?a:a+"px"}function t(a){var b=a.margin?"margin":a.MARGIN?"MARGIN":!1,c,d;if(b){d=CKEDITOR.tools.style.parse.margin(a[b]);for(c in d)a["margin-"+c]=d[c];delete a[b]}}function u(a){var b="background-color:transparent;background:transparent;background-color:none;background:none;background-position:initial initial;background-repeat:initial initial;caret-color;font-family:-webkit-standard;font-variant-caps;letter-spacing:normal;orphans;widows;text-transform:none;word-spacing:0px;-webkit-text-size-adjust:auto;-webkit-text-stroke-width:0px;text-indent:0px;margin-bottom:0in".split(";"), -c=CKEDITOR.tools.parseCssText(a.attributes.style),d,e;for(d in c)e=d+":"+c[d],CKEDITOR.tools.array.some(b,function(a){return e.substring(0,a.length).toLowerCase()===a})&&delete c[d];c=CKEDITOR.tools.writeCssText(c);""!==c?a.attributes.style=c:delete a.attributes.style}function v(a){a=a.config.font_names;var b=[];if(!a||!a.length)return!1;b=CKEDITOR.tools.array.map(a.split(";"),function(a){return-1===a.indexOf("/")?a:a.split("/")[1]});return b.length?b:!1}function w(a,b){var c=a.split(",");return CKEDITOR.tools.array.find(b, -function(a){for(var e=0;e]+src="([^"]+)[^>]+/g,b=[],e;e=c.exec(a);)b.push(e[1]);return b}function t(a){var c=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageTypes, -function(b){return b.marker.test(a)});return c?c.type:"unknown"}function h(a){var c=-1!==CKEDITOR.tools.array.indexOf(CKEDITOR.pasteFilters.image.supportedImageTypes,a.type),b=a.hex;if(!c)return null;"string"===typeof b&&(b=CKEDITOR.tools.convertHexStringToBytes(a.hex));return a.type?"data:"+a.type+";base64,"+CKEDITOR.tools.convertBytesToBase64(b):null}function m(a){return new CKEDITOR.tools.promise(function(c){CKEDITOR.ajax.load(a,function(a){a=new Uint8Array(a);var e=r(a);a=h({type:e,hex:a});c(a)}, -"arraybuffer")})}function r(a){a=a.subarray(0,4);var c=CKEDITOR.tools.array.map(a,function(a){return a.toString(16)}).join("");return(a=CKEDITOR.tools.array.find(CKEDITOR.pasteFilters.image.recognizableImageSignatures,function(a){return 0===c.indexOf(a.signature)}))?a.type:null}CKEDITOR.pasteFilters.image=function(a,c,b){var e;if(c.activeFilter&&!c.activeFilter.check("img[src]"))return a;e=q(a);return 0===e.length?a:b?u(a,b,e):v(c,a,e)};CKEDITOR.pasteFilters.image.extractFromRtf=l;CKEDITOR.pasteFilters.image.extractTagsFromHtml= -q;CKEDITOR.pasteFilters.image.getImageType=t;CKEDITOR.pasteFilters.image.createSrcWithBase64=h;CKEDITOR.pasteFilters.image.convertBlobUrlToBase64=m;CKEDITOR.pasteFilters.image.getImageTypeFromSignature=r;CKEDITOR.pasteFilters.image.supportedImageTypes=["image/png","image/jpeg","image/gif"];CKEDITOR.pasteFilters.image.recognizableImageTypes=[{marker:/\\pngblip/,type:"image/png"},{marker:/\\jpegblip/,type:"image/jpeg"},{marker:/\\emfblip/,type:"image/emf"},{marker:/\\wmetafile\d/,type:"image/wmf"}]; -CKEDITOR.pasteFilters.image.recognizableImageSignatures=[{signature:"ffd8ff",type:"image/jpeg"},{signature:"47494638",type:"image/gif"},{signature:"89504e47",type:"image/png"}]})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/dialogs/placeholder.js b/public/build/ckeditor/plugins/placeholder/dialogs/placeholder.js deleted file mode 100644 index cc99789e..00000000 --- a/public/build/ckeditor/plugins/placeholder/dialogs/placeholder.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.dialog.add("placeholder",function(a){var b=a.lang.placeholder;a=a.lang.common.generalTab;return{title:b.title,minWidth:300,minHeight:80,contents:[{id:"info",label:a,title:a,elements:[{id:"name",type:"text",style:"width: 100%;",label:b.name,"default":"",required:!0,validate:CKEDITOR.dialog.validate.regex(/^[^\[\]<>]+$/,b.invalidName),setup:function(a){this.setValue(a.data.name)},commit:function(a){a.setData("name",this.getValue())}}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/icons/hidpi/placeholder.png b/public/build/ckeditor/plugins/placeholder/icons/hidpi/placeholder.png deleted file mode 100644 index 25d23610..00000000 Binary files a/public/build/ckeditor/plugins/placeholder/icons/hidpi/placeholder.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/placeholder/icons/placeholder.png b/public/build/ckeditor/plugins/placeholder/icons/placeholder.png deleted file mode 100644 index 8d5b8195..00000000 Binary files a/public/build/ckeditor/plugins/placeholder/icons/placeholder.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/placeholder/lang/af.js b/public/build/ckeditor/plugins/placeholder/lang/af.js deleted file mode 100644 index 449af965..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/af.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","af",{title:"Plekhouer eienskappe",toolbar:"Plekhouer",name:"Plekhouer naam",invalidName:"Die plekhouer mag nie leeg wees nie, en kan geen van die volgende karakters bevat nie. [, ], \x3c, \x3e",pathName:"plekhouer"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ar.js b/public/build/ckeditor/plugins/placeholder/lang/ar.js deleted file mode 100644 index c39312d1..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ar",{title:"خصائص الربط الموضعي",toolbar:"الربط الموضعي",name:"اسم الربط الموضعي",invalidName:"لا يمكن ترك الربط الموضعي فارغا و لا أن يحتوي على الرموز التالية [, ], \x3c, \x3e",pathName:"الربط الموضعي"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/az.js b/public/build/ckeditor/plugins/placeholder/lang/az.js deleted file mode 100644 index 9ddbf3cf..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","az",{title:"Yertutanın xüsusiyyətləri",toolbar:"Yertutan",name:"Yertutanın adı",invalidName:"Yertutan boş ola bilməz, həm də [, ], \x3c, \x3e işarələrdən ehtiva edə bilməz",pathName:"yertutan"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/bg.js b/public/build/ckeditor/plugins/placeholder/lang/bg.js deleted file mode 100644 index bbeb913f..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","bg",{title:"Настройки на контейнера",toolbar:"Нов контейнер",name:"Име за заместител",invalidName:"Заместителят не може да бъде празен и не може да съдържа нито един от следните символи: [, ], \x3c, \x3e",pathName:"заместител"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ca.js b/public/build/ckeditor/plugins/placeholder/lang/ca.js deleted file mode 100644 index 4e15db17..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ca",{title:"Propietats del marcador de posició",toolbar:"Marcador de posició",name:"Nom del marcador de posició",invalidName:"El marcador de posició no pot estar en blanc ni pot contenir cap dels caràcters següents: [,],\x3c,\x3e",pathName:"marcador de posició"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/cs.js b/public/build/ckeditor/plugins/placeholder/lang/cs.js deleted file mode 100644 index aa5432dd..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","cs",{title:"Vlastnosti vyhrazeného prostoru",toolbar:"Vytvořit vyhrazený prostor",name:"Název vyhrazeného prostoru",invalidName:"Vyhrazený prostor nesmí být prázdný či obsahovat následující znaky: [, ], \x3c, \x3e",pathName:"Vyhrazený prostor"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/cy.js b/public/build/ckeditor/plugins/placeholder/lang/cy.js deleted file mode 100644 index 6388a1c5..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","cy",{title:"Priodweddau'r Daliwr Geiriau",toolbar:"Daliwr Geiriau",name:"Enw'r Daliwr Geiriau",invalidName:"Dyw'r daliwr geiriau methu â bod yn wag ac na all gynnyws y nodau [, ], \x3c, \x3e ",pathName:"daliwr geiriau"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/da.js b/public/build/ckeditor/plugins/placeholder/lang/da.js deleted file mode 100644 index 1dfae72b..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","da",{title:"Egenskaber for pladsholder",toolbar:"Opret pladsholder",name:"Navn på pladsholder",invalidName:"Pladsholderen kan ikke være tom og må ikke indeholde nogen af følgende tegn: [, ], \x3c, \x3e",pathName:"pladsholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/de-ch.js b/public/build/ckeditor/plugins/placeholder/lang/de-ch.js deleted file mode 100644 index 5d4245ca..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","de-ch",{title:"Platzhaltereinstellungen",toolbar:"Platzhalter",name:"Platzhaltername",invalidName:"Der Platzhalter darf nicht leer sein und folgende Zeichen nicht enthalten: [, ], \x3c, \x3e",pathName:"Platzhalter"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/de.js b/public/build/ckeditor/plugins/placeholder/lang/de.js deleted file mode 100644 index 51c76ed9..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","de",{title:"Platzhaltereinstellungen",toolbar:"Platzhalter",name:"Platzhaltername",invalidName:"Der Platzhalter darf nicht leer sein und folgende Zeichen nicht enthalten: [, ], \x3c, \x3e",pathName:"Platzhalter"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/el.js b/public/build/ckeditor/plugins/placeholder/lang/el.js deleted file mode 100644 index 0d156c15..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","el",{title:"Ιδιότητες Υποκαθιστόμενου Κειμένου",toolbar:"Δημιουργία Υποκαθιστόμενου Κειμένου",name:"Όνομα Υποκαθιστόμενου Κειμένου",invalidName:"Το υποκαθιστόμενου κειμένο πρέπει να μην είναι κενό και να μην έχει κανέναν από τους ακόλουθους χαρακτήρες: [, ], \x3c, \x3e",pathName:"υποκαθιστόμενο κείμενο"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/en-au.js b/public/build/ckeditor/plugins/placeholder/lang/en-au.js deleted file mode 100644 index 2f15c764..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","en-au",{title:"Placeholder Properties",toolbar:"Placeholder",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/en-gb.js b/public/build/ckeditor/plugins/placeholder/lang/en-gb.js deleted file mode 100644 index 61b56def..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","en-gb",{title:"Placeholder Properties",toolbar:"Placeholder",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of the following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/en.js b/public/build/ckeditor/plugins/placeholder/lang/en.js deleted file mode 100644 index 83f1e8f5..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","en",{title:"Placeholder Properties",toolbar:"Placeholder",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/eo.js b/public/build/ckeditor/plugins/placeholder/lang/eo.js deleted file mode 100644 index cdd64c50..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","eo",{title:"Atributoj de la rezervita spaco",toolbar:"Rezervita Spaco",name:"Nomo de la rezervita spaco",invalidName:"La rezervita spaco ne povas esti malplena kaj ne povas enteni la sekvajn signojn : [, ], \x3c, \x3e",pathName:"rezervita spaco"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/es-mx.js b/public/build/ckeditor/plugins/placeholder/lang/es-mx.js deleted file mode 100644 index 4a6f9964..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","es-mx",{title:"Propiedades del marcador de posición",toolbar:"Marcador de posición",name:"Nombre del marcador de posición",invalidName:"El marcador de posición no puede estar vacío y no puede contener alguno de los siguientes caracteres: [, ], \x3c, \x3e",pathName:"marcador de posición"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/es.js b/public/build/ckeditor/plugins/placeholder/lang/es.js deleted file mode 100644 index 6d4fad20..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","es",{title:"Propiedades del Marcador de Posición",toolbar:"Crear Marcador de Posición",name:"Nombre del Marcador de Posición",invalidName:"El marcador de posición no puede estar vacío y no puede contener ninguno de los siguientes caracteres: [, ], \x3c, \x3e",pathName:"marcador de posición"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/et.js b/public/build/ckeditor/plugins/placeholder/lang/et.js deleted file mode 100644 index 65a2dc11..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","et",{title:"Kohahoidja omadused",toolbar:"Kohahoidja loomine",name:"Kohahoidja nimi",invalidName:"Kohahoidja ei saa olla tühi ega sisaldada ühtegi järgnevatest märkidest: [, ], \x3c, \x3e",pathName:"kohahoidja"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/eu.js b/public/build/ckeditor/plugins/placeholder/lang/eu.js deleted file mode 100644 index 026f5e47..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","eu",{title:"Leku-marka propietateak",toolbar:"Leku-marka",name:"Leku-markaren izena",invalidName:"Leku-markak ezin du hutsik egon eta ezin ditu karaktere hauek eduki: [, ], \x3c, \x3e",pathName:"leku-marka"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/fa.js b/public/build/ckeditor/plugins/placeholder/lang/fa.js deleted file mode 100644 index 7aa519ef..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","fa",{title:"ویژگی‌های محل نگهداری",toolbar:"ایجاد یک محل نگهداری",name:"نام مکان نگهداری",invalidName:"مکان نگهداری نمی‌تواند خالی باشد و همچنین نمی‌تواند محتوی نویسه‌های مقابل باشد: [, ], \x3c, \x3e",pathName:"مکان نگهداری"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/fi.js b/public/build/ckeditor/plugins/placeholder/lang/fi.js deleted file mode 100644 index 267da137..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","fi",{title:"Paikkamerkin ominaisuudet",toolbar:"Luo paikkamerkki",name:"Paikkamerkin nimi",invalidName:"Paikkamerkki ei voi olla tyhjä eikä sisältää seuraavia merkkejä: [, ], \x3c, \x3e",pathName:"paikkamerkki"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/fr-ca.js b/public/build/ckeditor/plugins/placeholder/lang/fr-ca.js deleted file mode 100644 index c39a4987..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","fr-ca",{title:"Propriétés de l'espace réservé",toolbar:"Créer un espace réservé",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/fr.js b/public/build/ckeditor/plugins/placeholder/lang/fr.js deleted file mode 100644 index bef34b4e..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","fr",{title:"Propriétés de l'espace réservé",toolbar:"Espace réservé",name:"Nom de l'espace réservé",invalidName:"L'espace réservé ne peut pas être vide ni contenir l'un de ces caractères : [, ], \x3c, \x3e",pathName:"espace réservé"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/gl.js b/public/build/ckeditor/plugins/placeholder/lang/gl.js deleted file mode 100644 index 3309a4a6..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","gl",{title:"Propiedades do marcador de posición",toolbar:"Crear un marcador de posición",name:"Nome do marcador de posición",invalidName:"O marcador de posición non pode estar baleiro e non pode conter ningún dos caracteres seguintes: [, ], \x3c, \x3e",pathName:"marcador de posición"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/he.js b/public/build/ckeditor/plugins/placeholder/lang/he.js deleted file mode 100644 index 85a7fd67..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","he",{title:"מאפייני שומר מקום",toolbar:"צור שומר מקום",name:"שם שומר מקום",invalidName:"שומר מקום לא יכול להיות ריק ולא יכול להכיל את הסימנים: [, ], \x3c, \x3e",pathName:"שומר מקום"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/hr.js b/public/build/ckeditor/plugins/placeholder/lang/hr.js deleted file mode 100644 index 5d58e03f..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","hr",{title:"Svojstva rezerviranog mjesta",toolbar:"Napravi rezervirano mjesto",name:"Ime rezerviranog mjesta",invalidName:"Rezervirano mjesto ne može biti prazno niti može sadržavati ijedan od sljedećih znakova: [, ], \x3c, \x3e",pathName:"rezervirano mjesto"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/hu.js b/public/build/ckeditor/plugins/placeholder/lang/hu.js deleted file mode 100644 index 94025ef9..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","hu",{title:"Helytartó beállítások",toolbar:"Helytartó készítése",name:"Helytartó neve",invalidName:"A helytartó nem lehet üres, és nem tartalmazhatja a következő karaktereket:[, ], \x3c, \x3e ",pathName:"helytartó"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/id.js b/public/build/ckeditor/plugins/placeholder/lang/id.js deleted file mode 100644 index f1e54cbb..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","id",{title:"Properti isian sementara",toolbar:"Buat isian sementara",name:"Nama Isian Sementara",invalidName:"Isian sementara tidak boleh kosong dan tidak boleh mengandung karakter berikut: [, ], \x3c, \x3e",pathName:"isian sementara"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/it.js b/public/build/ckeditor/plugins/placeholder/lang/it.js deleted file mode 100644 index d0018394..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","it",{title:"Proprietà segnaposto",toolbar:"Crea segnaposto",name:"Nome segnaposto",invalidName:"Il segnaposto non può essere vuoto e non può contenere nessuno dei seguenti caratteri: [, ], \x3c, \x3e",pathName:"segnaposto"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ja.js b/public/build/ckeditor/plugins/placeholder/lang/ja.js deleted file mode 100644 index c2e7f429..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ja",{title:"プレースホルダのプロパティ",toolbar:"プレースホルダを作成",name:"プレースホルダ名",invalidName:"プレースホルダは空欄にできません。また、[, ], \x3c, \x3e の文字は使用できません。",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/km.js b/public/build/ckeditor/plugins/placeholder/lang/km.js deleted file mode 100644 index 72f9b887..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","km",{title:"លក្ខណៈ Placeholder",toolbar:"បង្កើត Placeholder",name:"ឈ្មោះ Placeholder",invalidName:"Placeholder មិន​អាច​ទទេរ ហើយក៏​មិន​អាច​មាន​តួ​អក្សរ​ទាំង​នេះ​ទេ៖ [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ko.js b/public/build/ckeditor/plugins/placeholder/lang/ko.js deleted file mode 100644 index a2904766..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ko",{title:"플레이스홀더 속성",toolbar:"플레이스홀더",name:"플레이스홀더 이름",invalidName:"플레이스홀더는 빈칸이거나 다음 문자열을 포함할 수 없습니다: [, ], \x3c, \x3e",pathName:"플레이스홀더"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ku.js b/public/build/ckeditor/plugins/placeholder/lang/ku.js deleted file mode 100644 index f63ffc9d..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ku",{title:"خاسیەتی شوێن هەڵگر",toolbar:"درووستکردنی شوێن هەڵگر",name:"ناوی شوێنگر",invalidName:"شوێنگر نابێت بەتاڵ بێت یان هەریەکێک لەم نووسانەی خوارەوەی تێدابێت: [, ], \x3c, \x3e",pathName:"شوێنگر"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/lv.js b/public/build/ckeditor/plugins/placeholder/lang/lv.js deleted file mode 100644 index 3324e600..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","lv",{title:"Viettura uzstādījumi",toolbar:"Izveidot vietturi",name:"Viettura nosaukums",invalidName:"Vietturis nevar būt tukšs un nevar saturēt simbolus [, ], \x3c, \x3e",pathName:"vietturis"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/nb.js b/public/build/ckeditor/plugins/placeholder/lang/nb.js deleted file mode 100644 index 6f3888e8..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","nb",{title:"Egenskaper for plassholder",toolbar:"Opprett plassholder",name:"Navn på plassholder",invalidName:"Plassholderen kan ikke være tom, og kan ikke inneholde følgende tegn: [, ], \x3c, \x3e",pathName:"plassholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/nl.js b/public/build/ckeditor/plugins/placeholder/lang/nl.js deleted file mode 100644 index b243d56b..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","nl",{title:"Eigenschappen placeholder",toolbar:"Placeholder aanmaken",name:"Naam placeholder",invalidName:"De placeholder mag niet leeg zijn, en mag niet een van de volgende tekens bevatten: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/no.js b/public/build/ckeditor/plugins/placeholder/lang/no.js deleted file mode 100644 index d1998581..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","no",{title:"Egenskaper for plassholder",toolbar:"Opprett plassholder",name:"Navn på plassholder",invalidName:"Plassholderen kan ikke være tom, og kan ikke inneholde følgende tegn: [, ], \x3c, \x3e",pathName:"plassholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/oc.js b/public/build/ckeditor/plugins/placeholder/lang/oc.js deleted file mode 100644 index e84bf8f0..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","oc",{title:"Proprietats de l'espaci reservat",toolbar:"Espaci reservat",name:"Nom de l'espaci reservat",invalidName:"L'espaci reservat pòt pas èsser void ni conténer un d'aquestes caractèrs : [, ], \x3c, \x3e",pathName:"espaci reservat"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/pl.js b/public/build/ckeditor/plugins/placeholder/lang/pl.js deleted file mode 100644 index ffd6ed8d..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","pl",{title:"Właściwości wypełniacza",toolbar:"Utwórz wypełniacz",name:"Nazwa wypełniacza",invalidName:"Wypełniacz nie może być pusty ani nie może zawierać żadnego z następujących znaków: [, ], \x3c oraz \x3e",pathName:"wypełniacz"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/pt-br.js b/public/build/ckeditor/plugins/placeholder/lang/pt-br.js deleted file mode 100644 index 846e0f8d..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","pt-br",{title:"Propriedades do Espaço Reservado",toolbar:"Criar Espaço Reservado",name:"Nome do Espaço Reservado",invalidName:"O espaço reservado não pode estar vazio e não pode conter nenhum dos seguintes caracteres: [, ], \x3c, \x3e",pathName:"Espaço Reservado"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/pt.js b/public/build/ckeditor/plugins/placeholder/lang/pt.js deleted file mode 100644 index fd178280..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","pt",{title:"Propriedades dos marcadores",toolbar:"Marcador",name:"Nome do marcador",invalidName:"O marcador não pode estar em branco e não pode conter qualquer dos seguintes carateres: [, ], \x3c, \x3e",pathName:"marcador"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ro.js b/public/build/ckeditor/plugins/placeholder/lang/ro.js deleted file mode 100644 index 4eda1f3f..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ro",{title:"Înlocuitor",toolbar:"Înlocuitor",name:"Înlocuitor",invalidName:"Nume invalid",pathName:"Cale elemente"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ru.js b/public/build/ckeditor/plugins/placeholder/lang/ru.js deleted file mode 100644 index c460bcd7..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ru",{title:"Свойства плейсхолдера",toolbar:"Создать плейсхолдер",name:"Имя плейсхолдера",invalidName:'Плейсхолдер не может быть пустым и содержать один из следующих символов: "[, ], \x3c, \x3e"',pathName:"плейсхолдер"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/si.js b/public/build/ckeditor/plugins/placeholder/lang/si.js deleted file mode 100644 index 0a9c397a..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","si",{title:"ස්ථාන හීම්කරුගේ ",toolbar:"ස්ථාන හීම්කරු නිර්මාණය කිරීම",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sk.js b/public/build/ckeditor/plugins/placeholder/lang/sk.js deleted file mode 100644 index 06be0d87..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sk",{title:"Vlastnosti placeholdera",toolbar:"Vytvoriť placeholder",name:"Názov placeholdera",invalidName:"Placeholder nemôže byť prázdny a nemôže obsahovať žiadny z nasledujúcich znakov: [,],\x3c,\x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sl.js b/public/build/ckeditor/plugins/placeholder/lang/sl.js deleted file mode 100644 index 0038c0b7..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sl",{title:"Lastnosti ograde",toolbar:"Ograda",name:"Ime ograde",invalidName:"Ograda ne more biti prazna in ne sme vsebovati katerega od naslednjih znakov: [, ], \x3c, \x3e",pathName:"ograda"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sq.js b/public/build/ckeditor/plugins/placeholder/lang/sq.js deleted file mode 100644 index f4cf1e20..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sq",{title:"Karakteristikat e Mbajtësit të Vendit",toolbar:"Krijo Mabjtës Vendi",name:"Emri i Hapësirës",invalidName:"Hapësira nuk mund të jetë e zbrazët dhe nuk mund të përmbajë asnjë nga karakteret: [, ], \x3c, \x3e",pathName:"hapësira"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sr-latn.js b/public/build/ckeditor/plugins/placeholder/lang/sr-latn.js deleted file mode 100644 index f9fe57a2..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sr-latn",{title:"Podešavanje rezervnog mesta",toolbar:"Pripremanje rezervnog mesta",name:"Naziv rezervnog mesta",invalidName:"Rezervno mesto ne može biti prazno, ne može da sadrži sledeće karaktere: [, ], \x3c, \x3e",pathName:"Rezervno mesto"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sr.js b/public/build/ckeditor/plugins/placeholder/lang/sr.js deleted file mode 100644 index 2bbafea7..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sr",{title:"Подешавање резервног места",toolbar:"Припремање резервног места",name:"Назив резервног места",invalidName:"Резервно место не може бити празно, не може да садржи следеће карактере: [, ], \x3c, \x3e",pathName:"Резервно место"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/sv.js b/public/build/ckeditor/plugins/placeholder/lang/sv.js deleted file mode 100644 index 10dbafd0..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","sv",{title:"Innehållsrutans egenskaper",toolbar:"Skapa innehållsruta",name:"Innehållsrutans namn",invalidName:"Innehållsrutan får inte vara tom och får inte innehålla någon av följande tecken: [, ], \x3c, \x3e",pathName:"innehållsruta"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/th.js b/public/build/ckeditor/plugins/placeholder/lang/th.js deleted file mode 100644 index a42c1c3b..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/th.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","th",{title:"คุณสมบัติเกี่ยวกับตัวยึด",toolbar:"สร้างตัวยึด",name:"Placeholder Name",invalidName:"The placeholder can not be empty and can not contain any of following characters: [, ], \x3c, \x3e",pathName:"placeholder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/tr.js b/public/build/ckeditor/plugins/placeholder/lang/tr.js deleted file mode 100644 index 3372f8cb..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","tr",{title:"Yer tutucu özellikleri",toolbar:"Yer tutucu oluşturun",name:"Yer Tutucu Adı",invalidName:"Yer tutucu adı boş bırakılamaz ve şu karakterleri içeremez: [, ], \x3c, \x3e",pathName:"yertutucu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/tt.js b/public/build/ckeditor/plugins/placeholder/lang/tt.js deleted file mode 100644 index fe7e9511..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","tt",{title:"Тутырма үзлекләре",toolbar:"Тутырма",name:"Тутырма исеме",invalidName:"Тутырма буш булмаска тиеш һәм эчендә алдагы символлар булмаска тиеш: [, ], \x3c, \x3e",pathName:"тутырма"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/ug.js b/public/build/ckeditor/plugins/placeholder/lang/ug.js deleted file mode 100644 index bbc7c194..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","ug",{title:"ئورۇن بەلگە خاسلىقى",toolbar:"ئورۇن بەلگە قۇر",name:"ئورۇن بەلگە ئىسمى",invalidName:"ئورۇن ئىگىلەش بەلگىسىنى قۇرۇق قۇيۇشقا بولمايدۇ ، مەزمۇنىغا كىرگۈزۈشكە بولمايدىغان بەلگىلەر : [, ], \x3c, \x3e",pathName:"ئورۇن ئىگىلەش بەلگىسى"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/uk.js b/public/build/ckeditor/plugins/placeholder/lang/uk.js deleted file mode 100644 index a2a738ca..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","uk",{title:"Налаштування Заповнювача",toolbar:"Створити Заповнювач",name:"Назва заповнювача",invalidName:"Заповнювач не може бути порожнім і не може містити наступні символи: [, ], \x3c, \x3e",pathName:"заповнювач"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/vi.js b/public/build/ckeditor/plugins/placeholder/lang/vi.js deleted file mode 100644 index 08ac6c2b..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","vi",{title:"Thuộc tính đặt chỗ",toolbar:"Tạo đặt chỗ",name:"Tên giữ chỗ",invalidName:"Giữ chỗ không thể để trống và không thể chứa bất kỳ ký tự sau: [,], \x3c, \x3e",pathName:"giữ chỗ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/zh-cn.js b/public/build/ckeditor/plugins/placeholder/lang/zh-cn.js deleted file mode 100644 index 127d4205..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","zh-cn",{title:"占位符属性",toolbar:"占位符",name:"占位符名称",invalidName:"占位符名称不能为空,并且不能包含以下字符:[、]、\x3c、\x3e",pathName:"占位符"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/lang/zh.js b/public/build/ckeditor/plugins/placeholder/lang/zh.js deleted file mode 100644 index 68c66d74..00000000 --- a/public/build/ckeditor/plugins/placeholder/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("placeholder","zh",{title:"預留位置屬性",toolbar:"建立預留位置",name:"Placeholder 名稱",invalidName:"「預留位置」不可為空白且不可包含以下字元:[, ], \x3c, \x3e",pathName:"預留位置"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/placeholder/plugin.js b/public/build/ckeditor/plugins/placeholder/plugin.js deleted file mode 100644 index bd906303..00000000 --- a/public/build/ckeditor/plugins/placeholder/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){CKEDITOR.plugins.add("placeholder",{requires:"widget,dialog",lang:"af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"placeholder",hidpi:!0,onLoad:function(){CKEDITOR.addCss(".cke_placeholder{background-color:#ff0}")},init:function(a){var b=a.lang.placeholder;CKEDITOR.dialog.add("placeholder",this.path+"dialogs/placeholder.js");a.widgets.add("placeholder", -{dialog:"placeholder",pathName:b.pathName,template:'\x3cspan class\x3d"cke_placeholder"\x3e[[]]\x3c/span\x3e',downcast:function(){return new CKEDITOR.htmlParser.text("[["+this.data.name+"]]")},init:function(){this.setData("name",this.element.getText().slice(2,-2))},data:function(){this.element.setText("[["+this.data.name+"]]")},getLabel:function(){return this.editor.lang.widget.label.replace(/%1/,this.data.name+" "+this.pathName)}});a.ui.addButton&&a.ui.addButton("CreatePlaceholder",{label:b.toolbar, -command:"placeholder",toolbar:"insert,5",icon:"placeholder"})},afterInit:function(a){var b=/\[\[([^\[\]])+\]\]/g;a.dataProcessor.dataFilter.addRules({text:function(f,d){var e=d.parent&&CKEDITOR.dtd[d.parent.name];if(!e||e.span)return f.replace(b,function(b){var c=null,c=new CKEDITOR.htmlParser.element("span",{"class":"cke_placeholder"});c.add(new CKEDITOR.htmlParser.text(b));c=a.widgets.wrapElement(c,"placeholder");return c.getOuterHtml()})}})}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/icons/hidpi/preview-rtl.png b/public/build/ckeditor/plugins/preview/icons/hidpi/preview-rtl.png deleted file mode 100644 index 530fee0d..00000000 Binary files a/public/build/ckeditor/plugins/preview/icons/hidpi/preview-rtl.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/preview/icons/hidpi/preview.png b/public/build/ckeditor/plugins/preview/icons/hidpi/preview.png deleted file mode 100644 index e9629b35..00000000 Binary files a/public/build/ckeditor/plugins/preview/icons/hidpi/preview.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/preview/icons/preview-rtl.png b/public/build/ckeditor/plugins/preview/icons/preview-rtl.png deleted file mode 100644 index fa568d47..00000000 Binary files a/public/build/ckeditor/plugins/preview/icons/preview-rtl.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/preview/icons/preview.png b/public/build/ckeditor/plugins/preview/icons/preview.png deleted file mode 100644 index 4111cc18..00000000 Binary files a/public/build/ckeditor/plugins/preview/icons/preview.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/preview/images/pagebreak.gif b/public/build/ckeditor/plugins/preview/images/pagebreak.gif deleted file mode 100644 index a27b1684..00000000 Binary files a/public/build/ckeditor/plugins/preview/images/pagebreak.gif and /dev/null differ diff --git a/public/build/ckeditor/plugins/preview/lang/af.js b/public/build/ckeditor/plugins/preview/lang/af.js deleted file mode 100644 index 97a16944..00000000 --- a/public/build/ckeditor/plugins/preview/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","af",{preview:"Voorbeeld"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ar.js b/public/build/ckeditor/plugins/preview/lang/ar.js deleted file mode 100644 index a128ad1b..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ar",{preview:"معاينة الصفحة"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/az.js b/public/build/ckeditor/plugins/preview/lang/az.js deleted file mode 100644 index 0d3f7d3a..00000000 --- a/public/build/ckeditor/plugins/preview/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","az",{preview:"Öncədən baxılması"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/bg.js b/public/build/ckeditor/plugins/preview/lang/bg.js deleted file mode 100644 index 5b88c365..00000000 --- a/public/build/ckeditor/plugins/preview/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","bg",{preview:"Преглед"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/bn.js b/public/build/ckeditor/plugins/preview/lang/bn.js deleted file mode 100644 index 6154ce30..00000000 --- a/public/build/ckeditor/plugins/preview/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","bn",{preview:"প্রাকদর্শন"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/bs.js b/public/build/ckeditor/plugins/preview/lang/bs.js deleted file mode 100644 index 1418f764..00000000 --- a/public/build/ckeditor/plugins/preview/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","bs",{preview:"Prikaži"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ca.js b/public/build/ckeditor/plugins/preview/lang/ca.js deleted file mode 100644 index 73458dd2..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ca",{preview:"Visualització prèvia"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/cs.js b/public/build/ckeditor/plugins/preview/lang/cs.js deleted file mode 100644 index f00d6eee..00000000 --- a/public/build/ckeditor/plugins/preview/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","cs",{preview:"Náhled"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/cy.js b/public/build/ckeditor/plugins/preview/lang/cy.js deleted file mode 100644 index 071c8d8d..00000000 --- a/public/build/ckeditor/plugins/preview/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","cy",{preview:"Rhagolwg"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/da.js b/public/build/ckeditor/plugins/preview/lang/da.js deleted file mode 100644 index 01f18bc8..00000000 --- a/public/build/ckeditor/plugins/preview/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","da",{preview:"Vis eksempel"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/de-ch.js b/public/build/ckeditor/plugins/preview/lang/de-ch.js deleted file mode 100644 index eee31b7c..00000000 --- a/public/build/ckeditor/plugins/preview/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","de-ch",{preview:"Vorschau"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/de.js b/public/build/ckeditor/plugins/preview/lang/de.js deleted file mode 100644 index 7c57cba3..00000000 --- a/public/build/ckeditor/plugins/preview/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","de",{preview:"Vorschau"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/el.js b/public/build/ckeditor/plugins/preview/lang/el.js deleted file mode 100644 index 4aaeeb4b..00000000 --- a/public/build/ckeditor/plugins/preview/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","el",{preview:"Προεπισκόπιση"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/en-au.js b/public/build/ckeditor/plugins/preview/lang/en-au.js deleted file mode 100644 index f10aa05e..00000000 --- a/public/build/ckeditor/plugins/preview/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","en-au",{preview:"Preview"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/en-ca.js b/public/build/ckeditor/plugins/preview/lang/en-ca.js deleted file mode 100644 index 3a7244b2..00000000 --- a/public/build/ckeditor/plugins/preview/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","en-ca",{preview:"Preview"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/en-gb.js b/public/build/ckeditor/plugins/preview/lang/en-gb.js deleted file mode 100644 index 78d19abd..00000000 --- a/public/build/ckeditor/plugins/preview/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","en-gb",{preview:"Preview"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/en.js b/public/build/ckeditor/plugins/preview/lang/en.js deleted file mode 100644 index c1901ef8..00000000 --- a/public/build/ckeditor/plugins/preview/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","en",{preview:"Preview"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/eo.js b/public/build/ckeditor/plugins/preview/lang/eo.js deleted file mode 100644 index 5fa3dd6b..00000000 --- a/public/build/ckeditor/plugins/preview/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","eo",{preview:"Vidigi Aspekton"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/es-mx.js b/public/build/ckeditor/plugins/preview/lang/es-mx.js deleted file mode 100644 index 881213c9..00000000 --- a/public/build/ckeditor/plugins/preview/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","es-mx",{preview:"Vista previa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/es.js b/public/build/ckeditor/plugins/preview/lang/es.js deleted file mode 100644 index d507847e..00000000 --- a/public/build/ckeditor/plugins/preview/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","es",{preview:"Vista Previa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/et.js b/public/build/ckeditor/plugins/preview/lang/et.js deleted file mode 100644 index a47ea46c..00000000 --- a/public/build/ckeditor/plugins/preview/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","et",{preview:"Eelvaade"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/eu.js b/public/build/ckeditor/plugins/preview/lang/eu.js deleted file mode 100644 index ac83687c..00000000 --- a/public/build/ckeditor/plugins/preview/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","eu",{preview:"Aurrebista"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/fa.js b/public/build/ckeditor/plugins/preview/lang/fa.js deleted file mode 100644 index ad85c381..00000000 --- a/public/build/ckeditor/plugins/preview/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","fa",{preview:"پیشنمایش"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/fi.js b/public/build/ckeditor/plugins/preview/lang/fi.js deleted file mode 100644 index 6785c5b8..00000000 --- a/public/build/ckeditor/plugins/preview/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","fi",{preview:"Esikatsele"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/fo.js b/public/build/ckeditor/plugins/preview/lang/fo.js deleted file mode 100644 index 779ef877..00000000 --- a/public/build/ckeditor/plugins/preview/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","fo",{preview:"Frumsýning"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/fr-ca.js b/public/build/ckeditor/plugins/preview/lang/fr-ca.js deleted file mode 100644 index 3731a101..00000000 --- a/public/build/ckeditor/plugins/preview/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","fr-ca",{preview:"Prévisualiser"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/fr.js b/public/build/ckeditor/plugins/preview/lang/fr.js deleted file mode 100644 index ca8852b4..00000000 --- a/public/build/ckeditor/plugins/preview/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","fr",{preview:"Aperçu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/gl.js b/public/build/ckeditor/plugins/preview/lang/gl.js deleted file mode 100644 index ab8a82a2..00000000 --- a/public/build/ckeditor/plugins/preview/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","gl",{preview:"Vista previa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/gu.js b/public/build/ckeditor/plugins/preview/lang/gu.js deleted file mode 100644 index e7b298b7..00000000 --- a/public/build/ckeditor/plugins/preview/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","gu",{preview:"પૂર્વદર્શન"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/he.js b/public/build/ckeditor/plugins/preview/lang/he.js deleted file mode 100644 index 420a9340..00000000 --- a/public/build/ckeditor/plugins/preview/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","he",{preview:"תצוגה מקדימה"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/hi.js b/public/build/ckeditor/plugins/preview/lang/hi.js deleted file mode 100644 index 397d2786..00000000 --- a/public/build/ckeditor/plugins/preview/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","hi",{preview:"प्रीव्यू"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/hr.js b/public/build/ckeditor/plugins/preview/lang/hr.js deleted file mode 100644 index 5a85fc9c..00000000 --- a/public/build/ckeditor/plugins/preview/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","hr",{preview:"Pregledaj"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/hu.js b/public/build/ckeditor/plugins/preview/lang/hu.js deleted file mode 100644 index b96a4360..00000000 --- a/public/build/ckeditor/plugins/preview/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","hu",{preview:"Előnézet"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/id.js b/public/build/ckeditor/plugins/preview/lang/id.js deleted file mode 100644 index 8c7819d2..00000000 --- a/public/build/ckeditor/plugins/preview/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","id",{preview:"Pratinjau"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/is.js b/public/build/ckeditor/plugins/preview/lang/is.js deleted file mode 100644 index 5fac3cd4..00000000 --- a/public/build/ckeditor/plugins/preview/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","is",{preview:"Forskoða"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/it.js b/public/build/ckeditor/plugins/preview/lang/it.js deleted file mode 100644 index a9453f97..00000000 --- a/public/build/ckeditor/plugins/preview/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","it",{preview:"Anteprima"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ja.js b/public/build/ckeditor/plugins/preview/lang/ja.js deleted file mode 100644 index 6b7cd82f..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ja",{preview:"プレビュー"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ka.js b/public/build/ckeditor/plugins/preview/lang/ka.js deleted file mode 100644 index bc1590db..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ka",{preview:"გადახედვა"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/km.js b/public/build/ckeditor/plugins/preview/lang/km.js deleted file mode 100644 index 68ab55fa..00000000 --- a/public/build/ckeditor/plugins/preview/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","km",{preview:"មើល​ជា​មុន"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ko.js b/public/build/ckeditor/plugins/preview/lang/ko.js deleted file mode 100644 index ac824da1..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ko",{preview:"미리보기"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ku.js b/public/build/ckeditor/plugins/preview/lang/ku.js deleted file mode 100644 index 19594b66..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ku",{preview:"پێشبینین"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/lt.js b/public/build/ckeditor/plugins/preview/lang/lt.js deleted file mode 100644 index 814a9213..00000000 --- a/public/build/ckeditor/plugins/preview/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","lt",{preview:"Peržiūra"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/lv.js b/public/build/ckeditor/plugins/preview/lang/lv.js deleted file mode 100644 index 7a27eb2b..00000000 --- a/public/build/ckeditor/plugins/preview/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","lv",{preview:"Priekšskatīt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/mk.js b/public/build/ckeditor/plugins/preview/lang/mk.js deleted file mode 100644 index b0beed9c..00000000 --- a/public/build/ckeditor/plugins/preview/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","mk",{preview:"Preview"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/mn.js b/public/build/ckeditor/plugins/preview/lang/mn.js deleted file mode 100644 index 6f2448c2..00000000 --- a/public/build/ckeditor/plugins/preview/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","mn",{preview:"Уридчлан харах"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ms.js b/public/build/ckeditor/plugins/preview/lang/ms.js deleted file mode 100644 index f3c596ea..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ms",{preview:"Prebiu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/nb.js b/public/build/ckeditor/plugins/preview/lang/nb.js deleted file mode 100644 index ea20b380..00000000 --- a/public/build/ckeditor/plugins/preview/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","nb",{preview:"Forhåndsvis"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/nl.js b/public/build/ckeditor/plugins/preview/lang/nl.js deleted file mode 100644 index ed67f978..00000000 --- a/public/build/ckeditor/plugins/preview/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","nl",{preview:"Voorbeeld"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/no.js b/public/build/ckeditor/plugins/preview/lang/no.js deleted file mode 100644 index 0c13be89..00000000 --- a/public/build/ckeditor/plugins/preview/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","no",{preview:"Forhåndsvis"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/oc.js b/public/build/ckeditor/plugins/preview/lang/oc.js deleted file mode 100644 index 64b0e5fd..00000000 --- a/public/build/ckeditor/plugins/preview/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","oc",{preview:"Previsualizar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/pl.js b/public/build/ckeditor/plugins/preview/lang/pl.js deleted file mode 100644 index 11f306e5..00000000 --- a/public/build/ckeditor/plugins/preview/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","pl",{preview:"Podgląd"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/pt-br.js b/public/build/ckeditor/plugins/preview/lang/pt-br.js deleted file mode 100644 index e7f58261..00000000 --- a/public/build/ckeditor/plugins/preview/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","pt-br",{preview:"Visualizar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/pt.js b/public/build/ckeditor/plugins/preview/lang/pt.js deleted file mode 100644 index 92e354db..00000000 --- a/public/build/ckeditor/plugins/preview/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","pt",{preview:"Pré-visualizar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ro.js b/public/build/ckeditor/plugins/preview/lang/ro.js deleted file mode 100644 index 646e2319..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ro",{preview:"Previzualizare"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ru.js b/public/build/ckeditor/plugins/preview/lang/ru.js deleted file mode 100644 index 11c59a41..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ru",{preview:"Предварительный просмотр"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/si.js b/public/build/ckeditor/plugins/preview/lang/si.js deleted file mode 100644 index a205a154..00000000 --- a/public/build/ckeditor/plugins/preview/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","si",{preview:"නැවත "}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sk.js b/public/build/ckeditor/plugins/preview/lang/sk.js deleted file mode 100644 index abee94b1..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sk",{preview:"Náhľad"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sl.js b/public/build/ckeditor/plugins/preview/lang/sl.js deleted file mode 100644 index a5ba8ba7..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sl",{preview:"Predogled"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sq.js b/public/build/ckeditor/plugins/preview/lang/sq.js deleted file mode 100644 index ef5e65b6..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sq",{preview:"Parashiko"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sr-latn.js b/public/build/ckeditor/plugins/preview/lang/sr-latn.js deleted file mode 100644 index 8c50b69d..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sr-latn",{preview:"Izgled stranice"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sr.js b/public/build/ckeditor/plugins/preview/lang/sr.js deleted file mode 100644 index c01f9362..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sr",{preview:"Изглед странице"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/sv.js b/public/build/ckeditor/plugins/preview/lang/sv.js deleted file mode 100644 index f5a3f5aa..00000000 --- a/public/build/ckeditor/plugins/preview/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","sv",{preview:"Förhandsgranska"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/th.js b/public/build/ckeditor/plugins/preview/lang/th.js deleted file mode 100644 index 047e25f1..00000000 --- a/public/build/ckeditor/plugins/preview/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","th",{preview:"ดูหน้าเอกสารตัวอย่าง"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/tr.js b/public/build/ckeditor/plugins/preview/lang/tr.js deleted file mode 100644 index dd331bd1..00000000 --- a/public/build/ckeditor/plugins/preview/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","tr",{preview:"Ön İzleme"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/tt.js b/public/build/ckeditor/plugins/preview/lang/tt.js deleted file mode 100644 index 9b5e62ce..00000000 --- a/public/build/ckeditor/plugins/preview/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","tt",{preview:"Карап алу"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/ug.js b/public/build/ckeditor/plugins/preview/lang/ug.js deleted file mode 100644 index 06549fd1..00000000 --- a/public/build/ckeditor/plugins/preview/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","ug",{preview:"ئالدىن كۆزەت"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/uk.js b/public/build/ckeditor/plugins/preview/lang/uk.js deleted file mode 100644 index 8d45b877..00000000 --- a/public/build/ckeditor/plugins/preview/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","uk",{preview:"Попередній перегляд"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/vi.js b/public/build/ckeditor/plugins/preview/lang/vi.js deleted file mode 100644 index ba28bcc9..00000000 --- a/public/build/ckeditor/plugins/preview/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","vi",{preview:"Xem trước"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/zh-cn.js b/public/build/ckeditor/plugins/preview/lang/zh-cn.js deleted file mode 100644 index 69445d04..00000000 --- a/public/build/ckeditor/plugins/preview/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","zh-cn",{preview:"预览"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/lang/zh.js b/public/build/ckeditor/plugins/preview/lang/zh.js deleted file mode 100644 index 2ebf415a..00000000 --- a/public/build/ckeditor/plugins/preview/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("preview","zh",{preview:"預覽"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/plugin.js b/public/build/ckeditor/plugins/preview/plugin.js deleted file mode 100644 index 86dcb4a5..00000000 --- a/public/build/ckeditor/plugins/preview/plugin.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function k(a,f){var g=CKEDITOR.plugins.getPath("preview"),b=a.config,e=a.title,h=function(){var a=location.origin,c=location.pathname;if(!b.baseHref&&!CKEDITOR.env.gecko)return"";if(b.baseHref)return'\x3cbase href\x3d"{HREF}"\x3e'.replace("{HREF}",b.baseHref);c=c.split("/");c.pop();c=c.join("/");return'\x3cbase href\x3d"{HREF}"\x3e'.replace("{HREF}",a+c+"/")}();return b.fullPage?a.getData().replace(//,"$\x26"+h).replace(/[^>]*(?=<\/title>)/,"$\x26 \x26mdash; "+e):b.docType+'\x3chtml dir\x3d"'+ -b.contentsLangDirection+'"\x3e\x3chead\x3e'+h+"\x3ctitle\x3e"+e+"\x3c/title\x3e"+CKEDITOR.tools.buildStyleHtml(b.contentsCss)+'\x3clink rel\x3d"stylesheet" media\x3d"screen" href\x3d"'+g+'styles/screen.css"\x3e\x3c/head\x3e'+function(){var b="\x3cbody\x3e",c=a.document&&a.document.getBody();if(!c)return b;c.getAttribute("id")&&(b=b.replace("\x3e",' id\x3d"'+c.getAttribute("id")+'"\x3e'));c.getAttribute("class")&&(b=b.replace("\x3e",' class\x3d"'+c.getAttribute("class")+'"\x3e'));return b}()+a.getData()+ -(f?"\x3cscript\x3e"+(CKEDITOR.env.ie?"window.onload":"document.onreadystatechange")+" \x3d function() { previewCallback(); } \x3c/script\x3e":"")+"\x3c/body\x3e\x3c/html\x3e"}function l(){var a=window.screen;return{width:Math.round(.8*a.width),height:Math.round(.7*a.height),left:Math.round(.1*a.width)}}function m(){var a=CKEDITOR.plugins.getPath("preview");return CKEDITOR.env.gecko?CKEDITOR.getUrl(a+"preview.html"):""}CKEDITOR.plugins.add("preview",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn", -icons:"preview,preview-rtl",hidpi:!0,init:function(a){a.addCommand("preview",{modes:{wysiwyg:1},canUndo:!1,readOnly:1,exec:function(){CKEDITOR.plugins.preview.createPreview(a)}});a.ui.addButton&&a.ui.addButton("Preview",{label:a.lang.preview.preview,command:"preview",toolbar:"document,40"})}});CKEDITOR.plugins.preview={createPreview:function(a,f){var g={dataValue:k(a,f)},b=l(),e;e=CKEDITOR.env.ie||CKEDITOR.env.gecko?"javascript:void( (function(){document.open();"+("("+CKEDITOR.tools.fixDomain+")();").replace(/\/\/.*?\n/g, -"").replace(/parent\./g,"window.opener.")+"document.write( window.opener._cke_htmlToLoad );document.close();window.opener._cke_htmlToLoad \x3d null;})() )":null;var h=m(),d,c;if(!1===a.fire("contentPreview",g))return!1;if(e||h)window._cke_htmlToLoad=g.dataValue;d=window.open(h,null,["toolbar\x3dyes,location\x3dno,status\x3dyes,menubar\x3dyes,scrollbars\x3dyes,resizable\x3dyes","width\x3d"+b.width,"height\x3d"+b.height,"left\x3d"+b.left].join());c=new CKEDITOR.dom.window(d);e&&d&&(d.location=e);window._cke_htmlToLoad|| -(b=d.document,b.open(),b.write(g.dataValue),b.close());f&&(d.previewCallback=function(){"complete"===d.document.readyState&&f(c)},d.previewCallback());return c}}})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/preview/preview.html b/public/build/ckeditor/plugins/preview/preview.html deleted file mode 100644 index 8c028262..00000000 --- a/public/build/ckeditor/plugins/preview/preview.html +++ /dev/null @@ -1,13 +0,0 @@ - diff --git a/public/build/ckeditor/plugins/preview/styles/screen.css b/public/build/ckeditor/plugins/preview/styles/screen.css deleted file mode 100644 index b6c5218f..00000000 --- a/public/build/ckeditor/plugins/preview/styles/screen.css +++ /dev/null @@ -1,10 +0,0 @@ -div[style*="page-break-after"] { - background:url( ../images/pagebreak.gif ) no-repeat center center; - clear:both; - width:100%; - border-top:#999 1px dotted; - border-bottom:#999 1px dotted; - padding:0; - height:7px; - cursor:default; -} diff --git a/public/build/ckeditor/plugins/print/icons/hidpi/print.png b/public/build/ckeditor/plugins/print/icons/hidpi/print.png deleted file mode 100644 index 6b62afdf..00000000 Binary files a/public/build/ckeditor/plugins/print/icons/hidpi/print.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/print/icons/print.png b/public/build/ckeditor/plugins/print/icons/print.png deleted file mode 100644 index 598e4d17..00000000 Binary files a/public/build/ckeditor/plugins/print/icons/print.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/print/lang/af.js b/public/build/ckeditor/plugins/print/lang/af.js deleted file mode 100644 index 61185ef1..00000000 --- a/public/build/ckeditor/plugins/print/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","af",{toolbar:"Druk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ar.js b/public/build/ckeditor/plugins/print/lang/ar.js deleted file mode 100644 index b61c0946..00000000 --- a/public/build/ckeditor/plugins/print/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ar",{toolbar:"طباعة"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/az.js b/public/build/ckeditor/plugins/print/lang/az.js deleted file mode 100644 index a55624e7..00000000 --- a/public/build/ckeditor/plugins/print/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","az",{toolbar:"Çap et"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/bg.js b/public/build/ckeditor/plugins/print/lang/bg.js deleted file mode 100644 index 6d929a8f..00000000 --- a/public/build/ckeditor/plugins/print/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","bg",{toolbar:"Печат"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/bn.js b/public/build/ckeditor/plugins/print/lang/bn.js deleted file mode 100644 index ea9ff918..00000000 --- a/public/build/ckeditor/plugins/print/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","bn",{toolbar:"প্রিন্ট করি"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/bs.js b/public/build/ckeditor/plugins/print/lang/bs.js deleted file mode 100644 index a6399186..00000000 --- a/public/build/ckeditor/plugins/print/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","bs",{toolbar:"Štampaj"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ca.js b/public/build/ckeditor/plugins/print/lang/ca.js deleted file mode 100644 index 76f7145f..00000000 --- a/public/build/ckeditor/plugins/print/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ca",{toolbar:"Imprimeix"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/cs.js b/public/build/ckeditor/plugins/print/lang/cs.js deleted file mode 100644 index 8927afb8..00000000 --- a/public/build/ckeditor/plugins/print/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","cs",{toolbar:"Tisk"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/cy.js b/public/build/ckeditor/plugins/print/lang/cy.js deleted file mode 100644 index 173df74e..00000000 --- a/public/build/ckeditor/plugins/print/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","cy",{toolbar:"Argraffu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/da.js b/public/build/ckeditor/plugins/print/lang/da.js deleted file mode 100644 index d816585f..00000000 --- a/public/build/ckeditor/plugins/print/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","da",{toolbar:"Udskriv"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/de-ch.js b/public/build/ckeditor/plugins/print/lang/de-ch.js deleted file mode 100644 index 847778bf..00000000 --- a/public/build/ckeditor/plugins/print/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","de-ch",{toolbar:"Drucken"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/de.js b/public/build/ckeditor/plugins/print/lang/de.js deleted file mode 100644 index a429f6cd..00000000 --- a/public/build/ckeditor/plugins/print/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","de",{toolbar:"Drucken"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/el.js b/public/build/ckeditor/plugins/print/lang/el.js deleted file mode 100644 index d5623ebd..00000000 --- a/public/build/ckeditor/plugins/print/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","el",{toolbar:"Εκτύπωση"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/en-au.js b/public/build/ckeditor/plugins/print/lang/en-au.js deleted file mode 100644 index 191384e6..00000000 --- a/public/build/ckeditor/plugins/print/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","en-au",{toolbar:"Print"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/en-ca.js b/public/build/ckeditor/plugins/print/lang/en-ca.js deleted file mode 100644 index aff5850e..00000000 --- a/public/build/ckeditor/plugins/print/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","en-ca",{toolbar:"Print"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/en-gb.js b/public/build/ckeditor/plugins/print/lang/en-gb.js deleted file mode 100644 index 84a26bdf..00000000 --- a/public/build/ckeditor/plugins/print/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","en-gb",{toolbar:"Print"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/en.js b/public/build/ckeditor/plugins/print/lang/en.js deleted file mode 100644 index 17461f29..00000000 --- a/public/build/ckeditor/plugins/print/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","en",{toolbar:"Print"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/eo.js b/public/build/ckeditor/plugins/print/lang/eo.js deleted file mode 100644 index b0580c1c..00000000 --- a/public/build/ckeditor/plugins/print/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","eo",{toolbar:"Presi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/es-mx.js b/public/build/ckeditor/plugins/print/lang/es-mx.js deleted file mode 100644 index 59fb8b40..00000000 --- a/public/build/ckeditor/plugins/print/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","es-mx",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/es.js b/public/build/ckeditor/plugins/print/lang/es.js deleted file mode 100644 index 5549ced6..00000000 --- a/public/build/ckeditor/plugins/print/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","es",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/et.js b/public/build/ckeditor/plugins/print/lang/et.js deleted file mode 100644 index cd192d60..00000000 --- a/public/build/ckeditor/plugins/print/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","et",{toolbar:"Printimine"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/eu.js b/public/build/ckeditor/plugins/print/lang/eu.js deleted file mode 100644 index 6690c535..00000000 --- a/public/build/ckeditor/plugins/print/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","eu",{toolbar:"Inprimatu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/fa.js b/public/build/ckeditor/plugins/print/lang/fa.js deleted file mode 100644 index 2445e39e..00000000 --- a/public/build/ckeditor/plugins/print/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","fa",{toolbar:"چاپ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/fi.js b/public/build/ckeditor/plugins/print/lang/fi.js deleted file mode 100644 index 2547e349..00000000 --- a/public/build/ckeditor/plugins/print/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","fi",{toolbar:"Tulosta"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/fo.js b/public/build/ckeditor/plugins/print/lang/fo.js deleted file mode 100644 index 1c93841a..00000000 --- a/public/build/ckeditor/plugins/print/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","fo",{toolbar:"Prenta"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/fr-ca.js b/public/build/ckeditor/plugins/print/lang/fr-ca.js deleted file mode 100644 index ecedc161..00000000 --- a/public/build/ckeditor/plugins/print/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","fr-ca",{toolbar:"Imprimer"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/fr.js b/public/build/ckeditor/plugins/print/lang/fr.js deleted file mode 100644 index 1ae9a1d2..00000000 --- a/public/build/ckeditor/plugins/print/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","fr",{toolbar:"Imprimer"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/gl.js b/public/build/ckeditor/plugins/print/lang/gl.js deleted file mode 100644 index 47ef182c..00000000 --- a/public/build/ckeditor/plugins/print/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","gl",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/gu.js b/public/build/ckeditor/plugins/print/lang/gu.js deleted file mode 100644 index a6c1366f..00000000 --- a/public/build/ckeditor/plugins/print/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","gu",{toolbar:"પ્રિન્ટ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/he.js b/public/build/ckeditor/plugins/print/lang/he.js deleted file mode 100644 index a9e047af..00000000 --- a/public/build/ckeditor/plugins/print/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","he",{toolbar:"הדפסה"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/hi.js b/public/build/ckeditor/plugins/print/lang/hi.js deleted file mode 100644 index 06ae5981..00000000 --- a/public/build/ckeditor/plugins/print/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","hi",{toolbar:"प्रिन्ट"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/hr.js b/public/build/ckeditor/plugins/print/lang/hr.js deleted file mode 100644 index ffbd7f74..00000000 --- a/public/build/ckeditor/plugins/print/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","hr",{toolbar:"Ispiši"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/hu.js b/public/build/ckeditor/plugins/print/lang/hu.js deleted file mode 100644 index 1b1fb4e7..00000000 --- a/public/build/ckeditor/plugins/print/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","hu",{toolbar:"Nyomtatás"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/id.js b/public/build/ckeditor/plugins/print/lang/id.js deleted file mode 100644 index 4df05eb7..00000000 --- a/public/build/ckeditor/plugins/print/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","id",{toolbar:"Cetak"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/is.js b/public/build/ckeditor/plugins/print/lang/is.js deleted file mode 100644 index 0fb61680..00000000 --- a/public/build/ckeditor/plugins/print/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","is",{toolbar:"Prenta"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/it.js b/public/build/ckeditor/plugins/print/lang/it.js deleted file mode 100644 index f8a79668..00000000 --- a/public/build/ckeditor/plugins/print/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","it",{toolbar:"Stampa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ja.js b/public/build/ckeditor/plugins/print/lang/ja.js deleted file mode 100644 index dbfd00bc..00000000 --- a/public/build/ckeditor/plugins/print/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ja",{toolbar:"印刷"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ka.js b/public/build/ckeditor/plugins/print/lang/ka.js deleted file mode 100644 index 86dc40f3..00000000 --- a/public/build/ckeditor/plugins/print/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ka",{toolbar:"ბეჭდვა"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/km.js b/public/build/ckeditor/plugins/print/lang/km.js deleted file mode 100644 index 35450b4c..00000000 --- a/public/build/ckeditor/plugins/print/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","km",{toolbar:"បោះពុម្ព"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ko.js b/public/build/ckeditor/plugins/print/lang/ko.js deleted file mode 100644 index f9e7ca3d..00000000 --- a/public/build/ckeditor/plugins/print/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ko",{toolbar:"인쇄"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ku.js b/public/build/ckeditor/plugins/print/lang/ku.js deleted file mode 100644 index fce60ec7..00000000 --- a/public/build/ckeditor/plugins/print/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ku",{toolbar:"چاپکردن"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/lt.js b/public/build/ckeditor/plugins/print/lang/lt.js deleted file mode 100644 index 1829455b..00000000 --- a/public/build/ckeditor/plugins/print/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","lt",{toolbar:"Spausdinti"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/lv.js b/public/build/ckeditor/plugins/print/lang/lv.js deleted file mode 100644 index e03d0b5d..00000000 --- a/public/build/ckeditor/plugins/print/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","lv",{toolbar:"Drukāt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/mk.js b/public/build/ckeditor/plugins/print/lang/mk.js deleted file mode 100644 index 63fd4d06..00000000 --- a/public/build/ckeditor/plugins/print/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","mk",{toolbar:"Print"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/mn.js b/public/build/ckeditor/plugins/print/lang/mn.js deleted file mode 100644 index 8df85cf9..00000000 --- a/public/build/ckeditor/plugins/print/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","mn",{toolbar:"Хэвлэх"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ms.js b/public/build/ckeditor/plugins/print/lang/ms.js deleted file mode 100644 index ca8734bd..00000000 --- a/public/build/ckeditor/plugins/print/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ms",{toolbar:"Cetak"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/nb.js b/public/build/ckeditor/plugins/print/lang/nb.js deleted file mode 100644 index e65fcfd9..00000000 --- a/public/build/ckeditor/plugins/print/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","nb",{toolbar:"Skriv ut"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/nl.js b/public/build/ckeditor/plugins/print/lang/nl.js deleted file mode 100644 index 41ecffd4..00000000 --- a/public/build/ckeditor/plugins/print/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","nl",{toolbar:"Afdrukken"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/no.js b/public/build/ckeditor/plugins/print/lang/no.js deleted file mode 100644 index afb031f3..00000000 --- a/public/build/ckeditor/plugins/print/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","no",{toolbar:"Skriv ut"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/oc.js b/public/build/ckeditor/plugins/print/lang/oc.js deleted file mode 100644 index fd3697e4..00000000 --- a/public/build/ckeditor/plugins/print/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","oc",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/pl.js b/public/build/ckeditor/plugins/print/lang/pl.js deleted file mode 100644 index 1bdbdebb..00000000 --- a/public/build/ckeditor/plugins/print/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","pl",{toolbar:"Drukuj"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/pt-br.js b/public/build/ckeditor/plugins/print/lang/pt-br.js deleted file mode 100644 index 9246c27d..00000000 --- a/public/build/ckeditor/plugins/print/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","pt-br",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/pt.js b/public/build/ckeditor/plugins/print/lang/pt.js deleted file mode 100644 index a72195ba..00000000 --- a/public/build/ckeditor/plugins/print/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","pt",{toolbar:"Imprimir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ro.js b/public/build/ckeditor/plugins/print/lang/ro.js deleted file mode 100644 index 2f331d22..00000000 --- a/public/build/ckeditor/plugins/print/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ro",{toolbar:"Printează"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ru.js b/public/build/ckeditor/plugins/print/lang/ru.js deleted file mode 100644 index 458a9c14..00000000 --- a/public/build/ckeditor/plugins/print/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ru",{toolbar:"Печать"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/si.js b/public/build/ckeditor/plugins/print/lang/si.js deleted file mode 100644 index 68d3f56d..00000000 --- a/public/build/ckeditor/plugins/print/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","si",{toolbar:"මුද්‍රණය කරන්න"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sk.js b/public/build/ckeditor/plugins/print/lang/sk.js deleted file mode 100644 index 7762bb2e..00000000 --- a/public/build/ckeditor/plugins/print/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sk",{toolbar:"Tlač"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sl.js b/public/build/ckeditor/plugins/print/lang/sl.js deleted file mode 100644 index 9f401ddb..00000000 --- a/public/build/ckeditor/plugins/print/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sl",{toolbar:"Natisni"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sq.js b/public/build/ckeditor/plugins/print/lang/sq.js deleted file mode 100644 index bfb05a47..00000000 --- a/public/build/ckeditor/plugins/print/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sq",{toolbar:"Shtype"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sr-latn.js b/public/build/ckeditor/plugins/print/lang/sr-latn.js deleted file mode 100644 index 62cdc718..00000000 --- a/public/build/ckeditor/plugins/print/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sr-latn",{toolbar:"Štampa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sr.js b/public/build/ckeditor/plugins/print/lang/sr.js deleted file mode 100644 index 74f6430e..00000000 --- a/public/build/ckeditor/plugins/print/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sr",{toolbar:"Штампа"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/sv.js b/public/build/ckeditor/plugins/print/lang/sv.js deleted file mode 100644 index 14181ba8..00000000 --- a/public/build/ckeditor/plugins/print/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","sv",{toolbar:"Skriv ut"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/th.js b/public/build/ckeditor/plugins/print/lang/th.js deleted file mode 100644 index e87d3ac2..00000000 --- a/public/build/ckeditor/plugins/print/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","th",{toolbar:"สั่งพิมพ์"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/tr.js b/public/build/ckeditor/plugins/print/lang/tr.js deleted file mode 100644 index 82f81f05..00000000 --- a/public/build/ckeditor/plugins/print/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","tr",{toolbar:"Yazdır"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/tt.js b/public/build/ckeditor/plugins/print/lang/tt.js deleted file mode 100644 index db8ff025..00000000 --- a/public/build/ckeditor/plugins/print/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","tt",{toolbar:"Бастыру"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/ug.js b/public/build/ckeditor/plugins/print/lang/ug.js deleted file mode 100644 index 6c270318..00000000 --- a/public/build/ckeditor/plugins/print/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","ug",{toolbar:"باس "}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/uk.js b/public/build/ckeditor/plugins/print/lang/uk.js deleted file mode 100644 index dfde34dc..00000000 --- a/public/build/ckeditor/plugins/print/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","uk",{toolbar:"Друк"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/vi.js b/public/build/ckeditor/plugins/print/lang/vi.js deleted file mode 100644 index 56573948..00000000 --- a/public/build/ckeditor/plugins/print/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","vi",{toolbar:"In"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/zh-cn.js b/public/build/ckeditor/plugins/print/lang/zh-cn.js deleted file mode 100644 index d7c2643d..00000000 --- a/public/build/ckeditor/plugins/print/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","zh-cn",{toolbar:"打印"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/lang/zh.js b/public/build/ckeditor/plugins/print/lang/zh.js deleted file mode 100644 index 65b8840d..00000000 --- a/public/build/ckeditor/plugins/print/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("print","zh",{toolbar:"列印"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/print/plugin.js b/public/build/ckeditor/plugins/print/plugin.js deleted file mode 100644 index 434bf162..00000000 --- a/public/build/ckeditor/plugins/print/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){CKEDITOR.plugins.add("print",{requires:"preview",lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"print,",hidpi:!0,init:function(a){a.addCommand("print",CKEDITOR.plugins.print);a.ui.addButton&&a.ui.addButton("Print",{label:a.lang.print.toolbar,command:"print",toolbar:"document,50"})}}); -CKEDITOR.plugins.print={exec:function(a){CKEDITOR.plugins.preview.createPreview(a,function(a){a=a.$;CKEDITOR.env.gecko?a.print():a.document.execCommand("Print");a.close()})},canUndo:!1,readOnly:1,modes:{wysiwyg:1}}})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/icons/hidpi/save.png b/public/build/ckeditor/plugins/save/icons/hidpi/save.png deleted file mode 100644 index e64ea052..00000000 Binary files a/public/build/ckeditor/plugins/save/icons/hidpi/save.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/save/icons/save.png b/public/build/ckeditor/plugins/save/icons/save.png deleted file mode 100644 index d79fa588..00000000 Binary files a/public/build/ckeditor/plugins/save/icons/save.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/save/lang/af.js b/public/build/ckeditor/plugins/save/lang/af.js deleted file mode 100644 index aa5b37e3..00000000 --- a/public/build/ckeditor/plugins/save/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","af",{toolbar:"Bewaar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ar.js b/public/build/ckeditor/plugins/save/lang/ar.js deleted file mode 100644 index eb09ee54..00000000 --- a/public/build/ckeditor/plugins/save/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ar",{toolbar:"حفظ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/az.js b/public/build/ckeditor/plugins/save/lang/az.js deleted file mode 100644 index b4099c52..00000000 --- a/public/build/ckeditor/plugins/save/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","az",{toolbar:"Yadda saxla"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/bg.js b/public/build/ckeditor/plugins/save/lang/bg.js deleted file mode 100644 index ecdf23c9..00000000 --- a/public/build/ckeditor/plugins/save/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","bg",{toolbar:"Запис"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/bn.js b/public/build/ckeditor/plugins/save/lang/bn.js deleted file mode 100644 index 16915cfd..00000000 --- a/public/build/ckeditor/plugins/save/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","bn",{toolbar:"সংরক্ষন করি"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/bs.js b/public/build/ckeditor/plugins/save/lang/bs.js deleted file mode 100644 index d94efe89..00000000 --- a/public/build/ckeditor/plugins/save/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","bs",{toolbar:"Snimi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ca.js b/public/build/ckeditor/plugins/save/lang/ca.js deleted file mode 100644 index 8704f585..00000000 --- a/public/build/ckeditor/plugins/save/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ca",{toolbar:"Desa"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/cs.js b/public/build/ckeditor/plugins/save/lang/cs.js deleted file mode 100644 index e337b9e4..00000000 --- a/public/build/ckeditor/plugins/save/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","cs",{toolbar:"Uložit"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/cy.js b/public/build/ckeditor/plugins/save/lang/cy.js deleted file mode 100644 index 1f8eb814..00000000 --- a/public/build/ckeditor/plugins/save/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","cy",{toolbar:"Cadw"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/da.js b/public/build/ckeditor/plugins/save/lang/da.js deleted file mode 100644 index 1ff06c69..00000000 --- a/public/build/ckeditor/plugins/save/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","da",{toolbar:"Gem"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/de-ch.js b/public/build/ckeditor/plugins/save/lang/de-ch.js deleted file mode 100644 index 5040244a..00000000 --- a/public/build/ckeditor/plugins/save/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","de-ch",{toolbar:"Speichern"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/de.js b/public/build/ckeditor/plugins/save/lang/de.js deleted file mode 100644 index 603359ba..00000000 --- a/public/build/ckeditor/plugins/save/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","de",{toolbar:"Speichern"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/el.js b/public/build/ckeditor/plugins/save/lang/el.js deleted file mode 100644 index 1aaf9ef2..00000000 --- a/public/build/ckeditor/plugins/save/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","el",{toolbar:"Αποθήκευση"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/en-au.js b/public/build/ckeditor/plugins/save/lang/en-au.js deleted file mode 100644 index 0ace64e5..00000000 --- a/public/build/ckeditor/plugins/save/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","en-au",{toolbar:"Save"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/en-ca.js b/public/build/ckeditor/plugins/save/lang/en-ca.js deleted file mode 100644 index 993a86e4..00000000 --- a/public/build/ckeditor/plugins/save/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","en-ca",{toolbar:"Save"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/en-gb.js b/public/build/ckeditor/plugins/save/lang/en-gb.js deleted file mode 100644 index 19c382db..00000000 --- a/public/build/ckeditor/plugins/save/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","en-gb",{toolbar:"Save"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/en.js b/public/build/ckeditor/plugins/save/lang/en.js deleted file mode 100644 index 1ee67693..00000000 --- a/public/build/ckeditor/plugins/save/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","en",{toolbar:"Save"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/eo.js b/public/build/ckeditor/plugins/save/lang/eo.js deleted file mode 100644 index dd7a1940..00000000 --- a/public/build/ckeditor/plugins/save/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","eo",{toolbar:"Konservi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/es-mx.js b/public/build/ckeditor/plugins/save/lang/es-mx.js deleted file mode 100644 index 7eb76ce5..00000000 --- a/public/build/ckeditor/plugins/save/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","es-mx",{toolbar:"Guardar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/es.js b/public/build/ckeditor/plugins/save/lang/es.js deleted file mode 100644 index b07eea63..00000000 --- a/public/build/ckeditor/plugins/save/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","es",{toolbar:"Guardar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/et.js b/public/build/ckeditor/plugins/save/lang/et.js deleted file mode 100644 index 5bfb76ca..00000000 --- a/public/build/ckeditor/plugins/save/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","et",{toolbar:"Salvestamine"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/eu.js b/public/build/ckeditor/plugins/save/lang/eu.js deleted file mode 100644 index fec1f853..00000000 --- a/public/build/ckeditor/plugins/save/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","eu",{toolbar:"Gorde"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/fa.js b/public/build/ckeditor/plugins/save/lang/fa.js deleted file mode 100644 index fb3f2a39..00000000 --- a/public/build/ckeditor/plugins/save/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","fa",{toolbar:"ذخیره"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/fi.js b/public/build/ckeditor/plugins/save/lang/fi.js deleted file mode 100644 index 93d4db54..00000000 --- a/public/build/ckeditor/plugins/save/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","fi",{toolbar:"Tallenna"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/fo.js b/public/build/ckeditor/plugins/save/lang/fo.js deleted file mode 100644 index 4b452683..00000000 --- a/public/build/ckeditor/plugins/save/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","fo",{toolbar:"Goym"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/fr-ca.js b/public/build/ckeditor/plugins/save/lang/fr-ca.js deleted file mode 100644 index eacb6ea5..00000000 --- a/public/build/ckeditor/plugins/save/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","fr-ca",{toolbar:"Sauvegarder"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/fr.js b/public/build/ckeditor/plugins/save/lang/fr.js deleted file mode 100644 index 8df018d5..00000000 --- a/public/build/ckeditor/plugins/save/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","fr",{toolbar:"Enregistrer"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/gl.js b/public/build/ckeditor/plugins/save/lang/gl.js deleted file mode 100644 index 1bd43328..00000000 --- a/public/build/ckeditor/plugins/save/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","gl",{toolbar:"Gardar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/gu.js b/public/build/ckeditor/plugins/save/lang/gu.js deleted file mode 100644 index 683842a8..00000000 --- a/public/build/ckeditor/plugins/save/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","gu",{toolbar:"સેવ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/he.js b/public/build/ckeditor/plugins/save/lang/he.js deleted file mode 100644 index de52496b..00000000 --- a/public/build/ckeditor/plugins/save/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","he",{toolbar:"שמירה"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/hi.js b/public/build/ckeditor/plugins/save/lang/hi.js deleted file mode 100644 index 36e3a750..00000000 --- a/public/build/ckeditor/plugins/save/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","hi",{toolbar:"सेव"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/hr.js b/public/build/ckeditor/plugins/save/lang/hr.js deleted file mode 100644 index cd0d6f42..00000000 --- a/public/build/ckeditor/plugins/save/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","hr",{toolbar:"Snimi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/hu.js b/public/build/ckeditor/plugins/save/lang/hu.js deleted file mode 100644 index e2de2005..00000000 --- a/public/build/ckeditor/plugins/save/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","hu",{toolbar:"Mentés"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/id.js b/public/build/ckeditor/plugins/save/lang/id.js deleted file mode 100644 index 7f1760b6..00000000 --- a/public/build/ckeditor/plugins/save/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","id",{toolbar:"Simpan"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/is.js b/public/build/ckeditor/plugins/save/lang/is.js deleted file mode 100644 index 5f985898..00000000 --- a/public/build/ckeditor/plugins/save/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","is",{toolbar:"Vista"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/it.js b/public/build/ckeditor/plugins/save/lang/it.js deleted file mode 100644 index fdfe51a4..00000000 --- a/public/build/ckeditor/plugins/save/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","it",{toolbar:"Salva"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ja.js b/public/build/ckeditor/plugins/save/lang/ja.js deleted file mode 100644 index 41801c4e..00000000 --- a/public/build/ckeditor/plugins/save/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ja",{toolbar:"保存"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ka.js b/public/build/ckeditor/plugins/save/lang/ka.js deleted file mode 100644 index d3d0456c..00000000 --- a/public/build/ckeditor/plugins/save/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ka",{toolbar:"ჩაწერა"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/km.js b/public/build/ckeditor/plugins/save/lang/km.js deleted file mode 100644 index 82f44957..00000000 --- a/public/build/ckeditor/plugins/save/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","km",{toolbar:"រក្សាទុក"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ko.js b/public/build/ckeditor/plugins/save/lang/ko.js deleted file mode 100644 index ac0a0be3..00000000 --- a/public/build/ckeditor/plugins/save/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ko",{toolbar:"저장"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ku.js b/public/build/ckeditor/plugins/save/lang/ku.js deleted file mode 100644 index 649a8cc1..00000000 --- a/public/build/ckeditor/plugins/save/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ku",{toolbar:"پاشکەوتکردن"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/lt.js b/public/build/ckeditor/plugins/save/lang/lt.js deleted file mode 100644 index ea89ceee..00000000 --- a/public/build/ckeditor/plugins/save/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","lt",{toolbar:"Išsaugoti"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/lv.js b/public/build/ckeditor/plugins/save/lang/lv.js deleted file mode 100644 index 6d8c0c83..00000000 --- a/public/build/ckeditor/plugins/save/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","lv",{toolbar:"Saglabāt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/mk.js b/public/build/ckeditor/plugins/save/lang/mk.js deleted file mode 100644 index 0405ba87..00000000 --- a/public/build/ckeditor/plugins/save/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","mk",{toolbar:"Save"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/mn.js b/public/build/ckeditor/plugins/save/lang/mn.js deleted file mode 100644 index ed1d40aa..00000000 --- a/public/build/ckeditor/plugins/save/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","mn",{toolbar:"Хадгалах"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ms.js b/public/build/ckeditor/plugins/save/lang/ms.js deleted file mode 100644 index 8b557e7a..00000000 --- a/public/build/ckeditor/plugins/save/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ms",{toolbar:"Simpan"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/nb.js b/public/build/ckeditor/plugins/save/lang/nb.js deleted file mode 100644 index 0bce93de..00000000 --- a/public/build/ckeditor/plugins/save/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","nb",{toolbar:"Lagre"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/nl.js b/public/build/ckeditor/plugins/save/lang/nl.js deleted file mode 100644 index 46110539..00000000 --- a/public/build/ckeditor/plugins/save/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","nl",{toolbar:"Opslaan"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/no.js b/public/build/ckeditor/plugins/save/lang/no.js deleted file mode 100644 index d58f02e4..00000000 --- a/public/build/ckeditor/plugins/save/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","no",{toolbar:"Lagre"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/oc.js b/public/build/ckeditor/plugins/save/lang/oc.js deleted file mode 100644 index 9e8419c8..00000000 --- a/public/build/ckeditor/plugins/save/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","oc",{toolbar:"Enregistrar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/pl.js b/public/build/ckeditor/plugins/save/lang/pl.js deleted file mode 100644 index 8214669e..00000000 --- a/public/build/ckeditor/plugins/save/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","pl",{toolbar:"Zapisz"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/pt-br.js b/public/build/ckeditor/plugins/save/lang/pt-br.js deleted file mode 100644 index 64c537a2..00000000 --- a/public/build/ckeditor/plugins/save/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","pt-br",{toolbar:"Salvar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/pt.js b/public/build/ckeditor/plugins/save/lang/pt.js deleted file mode 100644 index a30393be..00000000 --- a/public/build/ckeditor/plugins/save/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","pt",{toolbar:"Guardar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ro.js b/public/build/ckeditor/plugins/save/lang/ro.js deleted file mode 100644 index 05329bcd..00000000 --- a/public/build/ckeditor/plugins/save/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ro",{toolbar:"Salvează"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ru.js b/public/build/ckeditor/plugins/save/lang/ru.js deleted file mode 100644 index 9c755418..00000000 --- a/public/build/ckeditor/plugins/save/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ru",{toolbar:"Сохранить"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/si.js b/public/build/ckeditor/plugins/save/lang/si.js deleted file mode 100644 index 6305fe65..00000000 --- a/public/build/ckeditor/plugins/save/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","si",{toolbar:"ආරක්ෂා කරන්න"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sk.js b/public/build/ckeditor/plugins/save/lang/sk.js deleted file mode 100644 index f3ea59bd..00000000 --- a/public/build/ckeditor/plugins/save/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sk",{toolbar:"Uložiť"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sl.js b/public/build/ckeditor/plugins/save/lang/sl.js deleted file mode 100644 index e8ff1758..00000000 --- a/public/build/ckeditor/plugins/save/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sl",{toolbar:"Shrani"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sq.js b/public/build/ckeditor/plugins/save/lang/sq.js deleted file mode 100644 index 493dca31..00000000 --- a/public/build/ckeditor/plugins/save/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sq",{toolbar:"Ruaje"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sr-latn.js b/public/build/ckeditor/plugins/save/lang/sr-latn.js deleted file mode 100644 index fe27f2b8..00000000 --- a/public/build/ckeditor/plugins/save/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sr-latn",{toolbar:"Sačuvaj"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sr.js b/public/build/ckeditor/plugins/save/lang/sr.js deleted file mode 100644 index 3fa9e1ca..00000000 --- a/public/build/ckeditor/plugins/save/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sr",{toolbar:"Сачувај"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/sv.js b/public/build/ckeditor/plugins/save/lang/sv.js deleted file mode 100644 index a2e40dda..00000000 --- a/public/build/ckeditor/plugins/save/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","sv",{toolbar:"Spara"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/th.js b/public/build/ckeditor/plugins/save/lang/th.js deleted file mode 100644 index 8e1c28dd..00000000 --- a/public/build/ckeditor/plugins/save/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","th",{toolbar:"บันทึก"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/tr.js b/public/build/ckeditor/plugins/save/lang/tr.js deleted file mode 100644 index bb638ac3..00000000 --- a/public/build/ckeditor/plugins/save/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","tr",{toolbar:"Kaydet"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/tt.js b/public/build/ckeditor/plugins/save/lang/tt.js deleted file mode 100644 index 757f3f71..00000000 --- a/public/build/ckeditor/plugins/save/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","tt",{toolbar:"Саклау"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/ug.js b/public/build/ckeditor/plugins/save/lang/ug.js deleted file mode 100644 index 27dbe124..00000000 --- a/public/build/ckeditor/plugins/save/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","ug",{toolbar:"ساقلا"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/uk.js b/public/build/ckeditor/plugins/save/lang/uk.js deleted file mode 100644 index c1abf921..00000000 --- a/public/build/ckeditor/plugins/save/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","uk",{toolbar:"Зберегти"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/vi.js b/public/build/ckeditor/plugins/save/lang/vi.js deleted file mode 100644 index 986883b9..00000000 --- a/public/build/ckeditor/plugins/save/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","vi",{toolbar:"Lưu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/zh-cn.js b/public/build/ckeditor/plugins/save/lang/zh-cn.js deleted file mode 100644 index a2de754d..00000000 --- a/public/build/ckeditor/plugins/save/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","zh-cn",{toolbar:"保存"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/lang/zh.js b/public/build/ckeditor/plugins/save/lang/zh.js deleted file mode 100644 index 6e810611..00000000 --- a/public/build/ckeditor/plugins/save/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("save","zh",{toolbar:"儲存"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/save/plugin.js b/public/build/ckeditor/plugins/save/plugin.js deleted file mode 100644 index 9a4ede87..00000000 --- a/public/build/ckeditor/plugins/save/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){var b={readOnly:1,modes:{wysiwyg:1,source:1},exec:function(a){if(a.fire("save")&&(a=a.element.$.form))try{a.submit()}catch(b){a.submit.click&&a.submit.click()}}};CKEDITOR.plugins.add("save",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"save",hidpi:!0,init:function(a){a.elementMode== -CKEDITOR.ELEMENT_MODE_REPLACE&&(a.addCommand("save",b).startDisabled=!a.element.$.form,a.ui.addButton&&a.ui.addButton("Save",{label:a.lang.save.toolbar,command:"save",toolbar:"document,10"}))}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/scayt/CHANGELOG.md b/public/build/ckeditor/plugins/scayt/CHANGELOG.md deleted file mode 100644 index ebd566ca..00000000 --- a/public/build/ckeditor/plugins/scayt/CHANGELOG.md +++ /dev/null @@ -1,4 +0,0 @@ -SCAYT plugin for CKEditor 4 Changelog -==================== - -The full changelog of the SCAYT plugin for CKEditor 4 can be found on our website under the [release notes](https://webspellchecker.com/release-notes/) section. diff --git a/public/build/ckeditor/plugins/scayt/LICENSE.md b/public/build/ckeditor/plugins/scayt/LICENSE.md deleted file mode 100644 index 844ab4de..00000000 --- a/public/build/ckeditor/plugins/scayt/LICENSE.md +++ /dev/null @@ -1,28 +0,0 @@ -Software License Agreement -========================== - -**CKEditor SCAYT Plugin** -Copyright © 2012, [CKSource](http://cksource.com) - Frederico Knabben. All rights reserved. - -Licensed under the terms of any of the following licenses at your choice: - -* GNU General Public License Version 2 or later (the "GPL"): - http://www.gnu.org/licenses/gpl.html - -* GNU Lesser General Public License Version 2.1 or later (the "LGPL"): - http://www.gnu.org/licenses/lgpl.html - -* Mozilla Public License Version 1.1 or later (the "MPL"): - http://www.mozilla.org/MPL/MPL-1.1.html - -You are not required to, but if you want to explicitly declare the license you have chosen to be bound to when using, reproducing, modifying and distributing this software, just include a text file titled "legal.txt" in your version of this software, indicating your license choice. - -Sources of Intellectual Property Included in this plugin --------------------------------------------------------- - -Where not otherwise indicated, all plugin content is authored by CKSource engineers and consists of CKSource-owned intellectual property. In some specific instances, the plugin will incorporate work done by developers outside of CKSource with their express permission. - -Trademarks ----------- - -CKEditor is a trademark of CKSource - Frederico Knabben. All other brand and product names are trademarks, registered trademarks or service marks of their respective holders. diff --git a/public/build/ckeditor/plugins/scayt/dialogs/dialog.css b/public/build/ckeditor/plugins/scayt/dialogs/dialog.css deleted file mode 100644 index aef75684..00000000 --- a/public/build/ckeditor/plugins/scayt/dialogs/dialog.css +++ /dev/null @@ -1,23 +0,0 @@ -div.cke_dialog_ui_scaytItemList { - border: 1px solid #c9cccf; -} - -.cke_scaytItemList-child { - position: relative; - padding: 6px 30px 6px 5px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} - -.cke_scaytItemList-child:hover { - background: #ebebeb; -} - -.cke_scaytItemList-child .cke_scaytItemList_remove { - position: absolute; - top: 0; - right: 5px; - width: 26px; - height: 26px; -} diff --git a/public/build/ckeditor/plugins/scayt/dialogs/options.js b/public/build/ckeditor/plugins/scayt/dialogs/options.js deleted file mode 100644 index e47c97e9..00000000 --- a/public/build/ckeditor/plugins/scayt/dialogs/options.js +++ /dev/null @@ -1,32 +0,0 @@ -CKEDITOR.dialog.add("scaytDialog",function(d){var c=d.scayt,k='\x3cp\x3e\x3cimg alt\x3d"logo" title\x3d"logo" src\x3d"'+c.getLogo()+'" /\x3e\x3c/p\x3e\x3cp\x3e'+c.getLocal("version")+c.getVersion()+'\x3c/p\x3e\x3cp\x3e\x3ca href\x3d"'+c.getOption("CKUserManual")+'" target\x3d"_blank" style\x3d"text-decoration: underline; color: blue; cursor: pointer;"\x3e'+c.getLocal("btn_userManual")+"\x3c/a\x3e\x3c/p\x3e\x3cp\x3e"+c.getLocal("text_copyrights")+"\x3c/p\x3e",n=CKEDITOR.document,l={isChanged:function(){return null=== -this.newLang||this.currentLang===this.newLang?!1:!0},currentLang:c.getLang(),newLang:null,reset:function(){this.currentLang=c.getLang();this.newLang=null},id:"lang"},k=[{id:"options",label:c.getLocal("tab_options"),onShow:function(){},elements:[{type:"vbox",id:"scaytOptions",children:function(){var b=c.getApplicationConfig(),a=[],g={"ignore-all-caps-words":"label_allCaps","ignore-domain-names":"label_ignoreDomainNames","ignore-words-with-mixed-cases":"label_mixedCase","ignore-words-with-numbers":"label_mixedWithDigits"}, -h;for(h in b)b={type:"checkbox"},b.id=h,b.label=c.getLocal(g[h]),a.push(b);return a}(),onShow:function(){this.getChild();for(var b=d.scayt,a=0;ab[1]?c=1:a[1] div -{ - padding-bottom: 6px !important; -} - -.scayt-lang-list > div input -{ - margin-right: 4px; -} - -#scayt_about_ -{ - margin: 30px auto 0 auto; -} - -#scayt_about_ p -{ - text-align: center; - margin-bottom: 10px; -} - -.cke_dialog_contents_body div[name=dictionaries] .cke_dialog_ui_hbox_last > a.cke_dialog_ui_button -{ - margin-top: 0; -} diff --git a/public/build/ckeditor/plugins/selectall/icons/hidpi/selectall.png b/public/build/ckeditor/plugins/selectall/icons/hidpi/selectall.png deleted file mode 100644 index ef9c67bd..00000000 Binary files a/public/build/ckeditor/plugins/selectall/icons/hidpi/selectall.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/selectall/icons/selectall.png b/public/build/ckeditor/plugins/selectall/icons/selectall.png deleted file mode 100644 index 1b9a4a98..00000000 Binary files a/public/build/ckeditor/plugins/selectall/icons/selectall.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/selectall/lang/af.js b/public/build/ckeditor/plugins/selectall/lang/af.js deleted file mode 100644 index 3d9b5cbb..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","af",{toolbar:"Selekteer alles"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ar.js b/public/build/ckeditor/plugins/selectall/lang/ar.js deleted file mode 100644 index 076b910c..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ar",{toolbar:"تحديد الكل"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/az.js b/public/build/ckeditor/plugins/selectall/lang/az.js deleted file mode 100644 index 4285c9a5..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","az",{toolbar:"Hamısını seç"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/bg.js b/public/build/ckeditor/plugins/selectall/lang/bg.js deleted file mode 100644 index 5e776748..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","bg",{toolbar:"Избери всичко"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/bn.js b/public/build/ckeditor/plugins/selectall/lang/bn.js deleted file mode 100644 index 9bad2704..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","bn",{toolbar:"সব সিলেক্ট করি"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/bs.js b/public/build/ckeditor/plugins/selectall/lang/bs.js deleted file mode 100644 index 0deb72ea..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","bs",{toolbar:"Selektuj sve"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ca.js b/public/build/ckeditor/plugins/selectall/lang/ca.js deleted file mode 100644 index a573f9ad..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ca",{toolbar:"Selecciona-ho tot"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/cs.js b/public/build/ckeditor/plugins/selectall/lang/cs.js deleted file mode 100644 index 76a56f6e..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","cs",{toolbar:"Vybrat vše"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/cy.js b/public/build/ckeditor/plugins/selectall/lang/cy.js deleted file mode 100644 index e258fc79..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","cy",{toolbar:"Dewis Popeth"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/da.js b/public/build/ckeditor/plugins/selectall/lang/da.js deleted file mode 100644 index 978f67eb..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","da",{toolbar:"Vælg alt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/de-ch.js b/public/build/ckeditor/plugins/selectall/lang/de-ch.js deleted file mode 100644 index ec809886..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","de-ch",{toolbar:"Alles auswählen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/de.js b/public/build/ckeditor/plugins/selectall/lang/de.js deleted file mode 100644 index 2480c37b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","de",{toolbar:"Alles auswählen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/el.js b/public/build/ckeditor/plugins/selectall/lang/el.js deleted file mode 100644 index cd6289d4..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","el",{toolbar:"Επιλογή όλων"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/en-au.js b/public/build/ckeditor/plugins/selectall/lang/en-au.js deleted file mode 100644 index 8aaa34a2..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","en-au",{toolbar:"Select All"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/en-ca.js b/public/build/ckeditor/plugins/selectall/lang/en-ca.js deleted file mode 100644 index 6cabe918..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","en-ca",{toolbar:"Select All"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/en-gb.js b/public/build/ckeditor/plugins/selectall/lang/en-gb.js deleted file mode 100644 index f60eec16..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","en-gb",{toolbar:"Select All"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/en.js b/public/build/ckeditor/plugins/selectall/lang/en.js deleted file mode 100644 index 02b4c755..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","en",{toolbar:"Select All"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/eo.js b/public/build/ckeditor/plugins/selectall/lang/eo.js deleted file mode 100644 index 96f1f9a3..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","eo",{toolbar:"Elekti ĉion"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/es-mx.js b/public/build/ckeditor/plugins/selectall/lang/es-mx.js deleted file mode 100644 index 1de7e3a7..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","es-mx",{toolbar:"Seleccionar todo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/es.js b/public/build/ckeditor/plugins/selectall/lang/es.js deleted file mode 100644 index 06ba9825..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","es",{toolbar:"Seleccionar Todo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/et.js b/public/build/ckeditor/plugins/selectall/lang/et.js deleted file mode 100644 index 57f14c9f..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","et",{toolbar:"Kõige valimine"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/eu.js b/public/build/ckeditor/plugins/selectall/lang/eu.js deleted file mode 100644 index 565c55fd..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","eu",{toolbar:"Hautatu dena"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/fa.js b/public/build/ckeditor/plugins/selectall/lang/fa.js deleted file mode 100644 index 60e13da7..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","fa",{toolbar:"گزینش همه"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/fi.js b/public/build/ckeditor/plugins/selectall/lang/fi.js deleted file mode 100644 index 321333df..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","fi",{toolbar:"Valitse kaikki"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/fo.js b/public/build/ckeditor/plugins/selectall/lang/fo.js deleted file mode 100644 index e622ef95..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","fo",{toolbar:"Markera alt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/fr-ca.js b/public/build/ckeditor/plugins/selectall/lang/fr-ca.js deleted file mode 100644 index 01b42a4a..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","fr-ca",{toolbar:"Sélectionner tout"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/fr.js b/public/build/ckeditor/plugins/selectall/lang/fr.js deleted file mode 100644 index c9f76af2..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","fr",{toolbar:"Tout sélectionner"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/gl.js b/public/build/ckeditor/plugins/selectall/lang/gl.js deleted file mode 100644 index 358664fb..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","gl",{toolbar:"Seleccionar todo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/gu.js b/public/build/ckeditor/plugins/selectall/lang/gu.js deleted file mode 100644 index 706e9b66..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","gu",{toolbar:"બઘું પસંદ કરવું"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/he.js b/public/build/ckeditor/plugins/selectall/lang/he.js deleted file mode 100644 index 2724c2f7..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","he",{toolbar:"בחירת הכל"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/hi.js b/public/build/ckeditor/plugins/selectall/lang/hi.js deleted file mode 100644 index ecbfee9b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","hi",{toolbar:"सब सॅलॅक्ट करें"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/hr.js b/public/build/ckeditor/plugins/selectall/lang/hr.js deleted file mode 100644 index 6ab1881f..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","hr",{toolbar:"Odaberi sve"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/hu.js b/public/build/ckeditor/plugins/selectall/lang/hu.js deleted file mode 100644 index 974e4c97..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","hu",{toolbar:"Mindent kijelöl"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/id.js b/public/build/ckeditor/plugins/selectall/lang/id.js deleted file mode 100644 index e2100e09..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","id",{toolbar:"Pilih Semua"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/is.js b/public/build/ckeditor/plugins/selectall/lang/is.js deleted file mode 100644 index 6c3f1da8..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","is",{toolbar:"Velja allt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/it.js b/public/build/ckeditor/plugins/selectall/lang/it.js deleted file mode 100644 index b7d1fef1..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","it",{toolbar:"Seleziona tutto"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ja.js b/public/build/ckeditor/plugins/selectall/lang/ja.js deleted file mode 100644 index b1412bd8..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ja",{toolbar:"すべて選択"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ka.js b/public/build/ckeditor/plugins/selectall/lang/ka.js deleted file mode 100644 index 6cabf825..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ka",{toolbar:"ყველაფრის მონიშნვა"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/km.js b/public/build/ckeditor/plugins/selectall/lang/km.js deleted file mode 100644 index 66d61a0b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","km",{toolbar:"រើស​ទាំង​អស់"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ko.js b/public/build/ckeditor/plugins/selectall/lang/ko.js deleted file mode 100644 index 578b1f63..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ko",{toolbar:"모두 선택"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ku.js b/public/build/ckeditor/plugins/selectall/lang/ku.js deleted file mode 100644 index 32f5fb39..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ku",{toolbar:"هەموویی دیاریبکە"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/lt.js b/public/build/ckeditor/plugins/selectall/lang/lt.js deleted file mode 100644 index 3cdae278..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","lt",{toolbar:"Pažymėti viską"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/lv.js b/public/build/ckeditor/plugins/selectall/lang/lv.js deleted file mode 100644 index c2b56418..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","lv",{toolbar:"Iezīmēt visu"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/mk.js b/public/build/ckeditor/plugins/selectall/lang/mk.js deleted file mode 100644 index 5554a70e..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","mk",{toolbar:"Select All"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/mn.js b/public/build/ckeditor/plugins/selectall/lang/mn.js deleted file mode 100644 index b4d8c5d7..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","mn",{toolbar:"Бүгдийг нь сонгох"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ms.js b/public/build/ckeditor/plugins/selectall/lang/ms.js deleted file mode 100644 index ffb407e2..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ms",{toolbar:"Pilih Semua"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/nb.js b/public/build/ckeditor/plugins/selectall/lang/nb.js deleted file mode 100644 index 3ed5bb79..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","nb",{toolbar:"Merk alt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/nl.js b/public/build/ckeditor/plugins/selectall/lang/nl.js deleted file mode 100644 index 3e1f78d1..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","nl",{toolbar:"Alles selecteren"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/no.js b/public/build/ckeditor/plugins/selectall/lang/no.js deleted file mode 100644 index 3891eb16..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","no",{toolbar:"Merk alt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/oc.js b/public/build/ckeditor/plugins/selectall/lang/oc.js deleted file mode 100644 index ca9a3de9..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","oc",{toolbar:"Seleccionar tot"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/pl.js b/public/build/ckeditor/plugins/selectall/lang/pl.js deleted file mode 100644 index 56401f6c..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","pl",{toolbar:"Zaznacz wszystko"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/pt-br.js b/public/build/ckeditor/plugins/selectall/lang/pt-br.js deleted file mode 100644 index 75ef18c7..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","pt-br",{toolbar:"Selecionar Tudo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/pt.js b/public/build/ckeditor/plugins/selectall/lang/pt.js deleted file mode 100644 index bf57a295..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","pt",{toolbar:"Selecionar tudo"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ro.js b/public/build/ckeditor/plugins/selectall/lang/ro.js deleted file mode 100644 index 0c6248dd..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ro",{toolbar:"Selectează tot"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ru.js b/public/build/ckeditor/plugins/selectall/lang/ru.js deleted file mode 100644 index f59e8f68..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ru",{toolbar:"Выделить все"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/si.js b/public/build/ckeditor/plugins/selectall/lang/si.js deleted file mode 100644 index 81a7dfe2..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","si",{toolbar:"සියල්ලම "}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sk.js b/public/build/ckeditor/plugins/selectall/lang/sk.js deleted file mode 100644 index 7620a61b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sk",{toolbar:"Vybrať všetko"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sl.js b/public/build/ckeditor/plugins/selectall/lang/sl.js deleted file mode 100644 index c95244f2..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sl",{toolbar:"Izberi vse"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sq.js b/public/build/ckeditor/plugins/selectall/lang/sq.js deleted file mode 100644 index 7641363b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sq",{toolbar:"Përzgjidh të Gjitha"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sr-latn.js b/public/build/ckeditor/plugins/selectall/lang/sr-latn.js deleted file mode 100644 index 5a138647..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sr-latn",{toolbar:"Označi sve"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sr.js b/public/build/ckeditor/plugins/selectall/lang/sr.js deleted file mode 100644 index 8f9a8b79..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sr",{toolbar:"Означи све"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/sv.js b/public/build/ckeditor/plugins/selectall/lang/sv.js deleted file mode 100644 index ef0fdc2b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","sv",{toolbar:"Markera allt"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/th.js b/public/build/ckeditor/plugins/selectall/lang/th.js deleted file mode 100644 index 04e0757c..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","th",{toolbar:"เลือกทั้งหมด"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/tr.js b/public/build/ckeditor/plugins/selectall/lang/tr.js deleted file mode 100644 index 296f3d78..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","tr",{toolbar:"Tümünü Seç"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/tt.js b/public/build/ckeditor/plugins/selectall/lang/tt.js deleted file mode 100644 index c1ff772b..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","tt",{toolbar:"Барысын сайлау"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/ug.js b/public/build/ckeditor/plugins/selectall/lang/ug.js deleted file mode 100644 index a9a57e95..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","ug",{toolbar:"ھەممىنى تاللا"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/uk.js b/public/build/ckeditor/plugins/selectall/lang/uk.js deleted file mode 100644 index debd35bb..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","uk",{toolbar:"Виділити все"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/vi.js b/public/build/ckeditor/plugins/selectall/lang/vi.js deleted file mode 100644 index 4a364aaa..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","vi",{toolbar:"Chọn tất cả"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/zh-cn.js b/public/build/ckeditor/plugins/selectall/lang/zh-cn.js deleted file mode 100644 index 905c2db4..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","zh-cn",{toolbar:"全选"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/lang/zh.js b/public/build/ckeditor/plugins/selectall/lang/zh.js deleted file mode 100644 index 6d2db4e9..00000000 --- a/public/build/ckeditor/plugins/selectall/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("selectall","zh",{toolbar:"全選"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/selectall/plugin.js b/public/build/ckeditor/plugins/selectall/plugin.js deleted file mode 100644 index b6eba12d..00000000 --- a/public/build/ckeditor/plugins/selectall/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){CKEDITOR.plugins.add("selectall",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn",icons:"selectall",hidpi:!0,init:function(b){b.addCommand("selectAll",{modes:{wysiwyg:1,source:1},exec:function(a){var b=a.editable();if(b.is("textarea"))a=b.$,CKEDITOR.env.ie&&a.createTextRange?a.createTextRange().execCommand("SelectAll"): -(a.selectionStart=0,a.selectionEnd=a.value.length),a.focus();else{if(b.is("body"))a.document.$.execCommand("SelectAll",!1,null);else{var c=a.createRange();c.selectNodeContents(b);c.select()}a.forceNextSelectionCheck();a.selectionChange()}},canUndo:!1});b.ui.addButton&&b.ui.addButton("SelectAll",{label:b.lang.selectall.toolbar,command:"selectAll",toolbar:"selection,10"})}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/sharedspace/plugin.js b/public/build/ckeditor/plugins/sharedspace/plugin.js deleted file mode 100644 index 326a43cc..00000000 --- a/public/build/ckeditor/plugins/sharedspace/plugin.js +++ /dev/null @@ -1,7 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){function f(a,b,c){var e,d;if(c="string"==typeof c?CKEDITOR.document.getById(c):new CKEDITOR.dom.element(c))if(e=a.fire("uiSpace",{space:b,html:""}).html)a.on("uiSpace",function(a){a.data.space==b&&a.cancel()},null,null,1),d=c.append(CKEDITOR.dom.element.createFromHtml(g.output({id:a.id,name:a.name,langDir:a.lang.dir,langCode:a.langCode,space:b,spaceId:a.ui.spaceId(b),content:e}))),c.getCustomData("cke_hasshared")?d.hide():c.setCustomData("cke_hasshared",1),d.unselectable(),d.on("mousedown", -function(a){a=a.data;a.getTarget().hasAscendant("a",1)||a.preventDefault()}),a.focusManager.add(d,1),a.on("focus",function(){for(var a=0,b,e=c.getChildren();b=e.getItem(a);a++)b.type==CKEDITOR.NODE_ELEMENT&&!b.equals(d)&&b.hasClass("cke_shared")&&b.hide();d.show()}),a.on("destroy",function(){d.remove()})}var g=CKEDITOR.addTemplate("sharedcontainer",'\x3cdiv id\x3d"cke_{name}" class\x3d"cke {id} cke_reset_all cke_chrome cke_editor_{name} cke_shared cke_detached cke_{langDir} '+CKEDITOR.env.cssClass+ -'" dir\x3d"{langDir}" title\x3d"'+(CKEDITOR.env.gecko?" ":"")+'" lang\x3d"{langCode}" role\x3d"presentation"\x3e\x3cdiv class\x3d"cke_inner"\x3e\x3cdiv id\x3d"{spaceId}" class\x3d"cke_{space}" role\x3d"presentation"\x3e{content}\x3c/div\x3e\x3c/div\x3e\x3c/div\x3e');CKEDITOR.plugins.add("sharedspace",{init:function(a){a.on("loaded",function(){var b=a.config.sharedSpaces;if(b)for(var c in b)f(a,c,b[c])},null,null,9)}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png b/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png deleted file mode 100644 index 21fd33f9..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks.png b/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks.png deleted file mode 100644 index 94a8a39c..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/icons/showblocks-rtl.png b/public/build/ckeditor/plugins/showblocks/icons/showblocks-rtl.png deleted file mode 100644 index 75bfd37a..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/icons/showblocks-rtl.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/icons/showblocks.png b/public/build/ckeditor/plugins/showblocks/icons/showblocks.png deleted file mode 100644 index 09fe2c7d..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/icons/showblocks.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_address.png b/public/build/ckeditor/plugins/showblocks/images/block_address.png deleted file mode 100644 index 5abdae12..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_address.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_blockquote.png b/public/build/ckeditor/plugins/showblocks/images/block_blockquote.png deleted file mode 100644 index a8f49735..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_blockquote.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_div.png b/public/build/ckeditor/plugins/showblocks/images/block_div.png deleted file mode 100644 index 87b3c171..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_div.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h1.png b/public/build/ckeditor/plugins/showblocks/images/block_h1.png deleted file mode 100644 index 3933325c..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h1.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h2.png b/public/build/ckeditor/plugins/showblocks/images/block_h2.png deleted file mode 100644 index c99894c2..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h2.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h3.png b/public/build/ckeditor/plugins/showblocks/images/block_h3.png deleted file mode 100644 index cb73d679..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h3.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h4.png b/public/build/ckeditor/plugins/showblocks/images/block_h4.png deleted file mode 100644 index 7af6bb49..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h4.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h5.png b/public/build/ckeditor/plugins/showblocks/images/block_h5.png deleted file mode 100644 index ce5bec16..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h5.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_h6.png b/public/build/ckeditor/plugins/showblocks/images/block_h6.png deleted file mode 100644 index e67b9829..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_h6.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_p.png b/public/build/ckeditor/plugins/showblocks/images/block_p.png deleted file mode 100644 index 63a58202..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_p.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/images/block_pre.png b/public/build/ckeditor/plugins/showblocks/images/block_pre.png deleted file mode 100644 index 955a8689..00000000 Binary files a/public/build/ckeditor/plugins/showblocks/images/block_pre.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/showblocks/lang/af.js b/public/build/ckeditor/plugins/showblocks/lang/af.js deleted file mode 100644 index f54ef175..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/af.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","af",{toolbar:"Toon blokke"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ar.js b/public/build/ckeditor/plugins/showblocks/lang/ar.js deleted file mode 100644 index a3b135a9..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ar.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ar",{toolbar:"مخطط تفصيلي"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/az.js b/public/build/ckeditor/plugins/showblocks/lang/az.js deleted file mode 100644 index 29462882..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/az.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","az",{toolbar:"Blokları göstər"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/bg.js b/public/build/ckeditor/plugins/showblocks/lang/bg.js deleted file mode 100644 index ec8b4f9c..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/bg.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","bg",{toolbar:"Показва блокове"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/bn.js b/public/build/ckeditor/plugins/showblocks/lang/bn.js deleted file mode 100644 index 8f38cf2c..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/bn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","bn",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/bs.js b/public/build/ckeditor/plugins/showblocks/lang/bs.js deleted file mode 100644 index 91d8620a..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/bs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","bs",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ca.js b/public/build/ckeditor/plugins/showblocks/lang/ca.js deleted file mode 100644 index 4a23bd67..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ca",{toolbar:"Mostra els blocs"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/cs.js b/public/build/ckeditor/plugins/showblocks/lang/cs.js deleted file mode 100644 index e935394c..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/cs.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","cs",{toolbar:"Ukázat bloky"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/cy.js b/public/build/ckeditor/plugins/showblocks/lang/cy.js deleted file mode 100644 index 4fea60e5..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/cy.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","cy",{toolbar:"Dangos Blociau"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/da.js b/public/build/ckeditor/plugins/showblocks/lang/da.js deleted file mode 100644 index 1c077f17..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/da.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","da",{toolbar:"Vis afsnitsmærker"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/de-ch.js b/public/build/ckeditor/plugins/showblocks/lang/de-ch.js deleted file mode 100644 index a895e992..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/de-ch.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","de-ch",{toolbar:"Blöcke anzeigen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/de.js b/public/build/ckeditor/plugins/showblocks/lang/de.js deleted file mode 100644 index 730add99..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/de.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","de",{toolbar:"Blöcke anzeigen"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/el.js b/public/build/ckeditor/plugins/showblocks/lang/el.js deleted file mode 100644 index 67fc843d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/el.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","el",{toolbar:"Προβολή Τμημάτων"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/en-au.js b/public/build/ckeditor/plugins/showblocks/lang/en-au.js deleted file mode 100644 index 02fd8d37..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/en-au.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","en-au",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/en-ca.js b/public/build/ckeditor/plugins/showblocks/lang/en-ca.js deleted file mode 100644 index 2ddff41c..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/en-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","en-ca",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/en-gb.js b/public/build/ckeditor/plugins/showblocks/lang/en-gb.js deleted file mode 100644 index 6398feaa..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/en-gb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","en-gb",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/en.js b/public/build/ckeditor/plugins/showblocks/lang/en.js deleted file mode 100644 index 2457fa4b..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/en.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","en",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/eo.js b/public/build/ckeditor/plugins/showblocks/lang/eo.js deleted file mode 100644 index 42775ae7..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/eo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","eo",{toolbar:"Montri la blokojn"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/es-mx.js b/public/build/ckeditor/plugins/showblocks/lang/es-mx.js deleted file mode 100644 index c3398b59..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/es-mx.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","es-mx",{toolbar:"Mostrar bloques"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/es.js b/public/build/ckeditor/plugins/showblocks/lang/es.js deleted file mode 100644 index eae41486..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/es.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","es",{toolbar:"Mostrar bloques"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/et.js b/public/build/ckeditor/plugins/showblocks/lang/et.js deleted file mode 100644 index 18f1c0d5..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/et.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","et",{toolbar:"Blokkide näitamine"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/eu.js b/public/build/ckeditor/plugins/showblocks/lang/eu.js deleted file mode 100644 index f6e71f33..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/eu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","eu",{toolbar:"Erakutsi blokeak"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/fa.js b/public/build/ckeditor/plugins/showblocks/lang/fa.js deleted file mode 100644 index e290b63d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/fa.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","fa",{toolbar:"نمایش بلوک‌ها"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/fi.js b/public/build/ckeditor/plugins/showblocks/lang/fi.js deleted file mode 100644 index a2e20e26..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/fi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","fi",{toolbar:"Näytä elementit"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/fo.js b/public/build/ckeditor/plugins/showblocks/lang/fo.js deleted file mode 100644 index cea7058d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/fo.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","fo",{toolbar:"Vís blokkar"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/fr-ca.js b/public/build/ckeditor/plugins/showblocks/lang/fr-ca.js deleted file mode 100644 index be37ca35..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/fr-ca.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","fr-ca",{toolbar:"Afficher les blocs"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/fr.js b/public/build/ckeditor/plugins/showblocks/lang/fr.js deleted file mode 100644 index 49bf9394..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/fr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","fr",{toolbar:"Afficher les blocs"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/gl.js b/public/build/ckeditor/plugins/showblocks/lang/gl.js deleted file mode 100644 index b9f240c9..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/gl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","gl",{toolbar:"Amosar os bloques"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/gu.js b/public/build/ckeditor/plugins/showblocks/lang/gu.js deleted file mode 100644 index a8e7fd6c..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/gu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","gu",{toolbar:"બ્લૉક બતાવવું"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/he.js b/public/build/ckeditor/plugins/showblocks/lang/he.js deleted file mode 100644 index 7d128462..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/he.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","he",{toolbar:"הצגת בלוקים"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/hi.js b/public/build/ckeditor/plugins/showblocks/lang/hi.js deleted file mode 100644 index 68904f2d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/hi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","hi",{toolbar:"ब्लॉक दिखायें"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/hr.js b/public/build/ckeditor/plugins/showblocks/lang/hr.js deleted file mode 100644 index d6af592d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/hr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","hr",{toolbar:"Prikaži blokove"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/hu.js b/public/build/ckeditor/plugins/showblocks/lang/hu.js deleted file mode 100644 index cda541b9..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/hu.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","hu",{toolbar:"Blokkok megjelenítése"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/id.js b/public/build/ckeditor/plugins/showblocks/lang/id.js deleted file mode 100644 index 96c293cc..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/id.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","id",{toolbar:"Perlihatkan Blok"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/is.js b/public/build/ckeditor/plugins/showblocks/lang/is.js deleted file mode 100644 index 88a3ff5a..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/is.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","is",{toolbar:"Sýna blokkir"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/it.js b/public/build/ckeditor/plugins/showblocks/lang/it.js deleted file mode 100644 index 38e578fd..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/it.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","it",{toolbar:"Visualizza Blocchi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ja.js b/public/build/ckeditor/plugins/showblocks/lang/ja.js deleted file mode 100644 index a9c9736a..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ja.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ja",{toolbar:"ブロック表示"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ka.js b/public/build/ckeditor/plugins/showblocks/lang/ka.js deleted file mode 100644 index 908e8002..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ka.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ka",{toolbar:"არეების ჩვენება"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/km.js b/public/build/ckeditor/plugins/showblocks/lang/km.js deleted file mode 100644 index d6ca8298..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/km.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","km",{toolbar:"បង្ហាញ​ប្លក់"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ko.js b/public/build/ckeditor/plugins/showblocks/lang/ko.js deleted file mode 100644 index 67187345..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ko.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ko",{toolbar:"블록 보기"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ku.js b/public/build/ckeditor/plugins/showblocks/lang/ku.js deleted file mode 100644 index 2a3a1282..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ku.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ku",{toolbar:"نیشاندانی بەربەستەکان"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/lt.js b/public/build/ckeditor/plugins/showblocks/lang/lt.js deleted file mode 100644 index 66368a41..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/lt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","lt",{toolbar:"Rodyti blokus"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/lv.js b/public/build/ckeditor/plugins/showblocks/lang/lv.js deleted file mode 100644 index 12c328c1..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/lv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","lv",{toolbar:"Parādīt blokus"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/mk.js b/public/build/ckeditor/plugins/showblocks/lang/mk.js deleted file mode 100644 index a34e8a23..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/mk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","mk",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/mn.js b/public/build/ckeditor/plugins/showblocks/lang/mn.js deleted file mode 100644 index 778ad5d0..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/mn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","mn",{toolbar:"Хавтангуудыг харуулах"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ms.js b/public/build/ckeditor/plugins/showblocks/lang/ms.js deleted file mode 100644 index c6ab5f2d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ms.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ms",{toolbar:"Show Blocks"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/nb.js b/public/build/ckeditor/plugins/showblocks/lang/nb.js deleted file mode 100644 index 8bfdf0e1..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/nb.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","nb",{toolbar:"Vis blokker"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/nl.js b/public/build/ckeditor/plugins/showblocks/lang/nl.js deleted file mode 100644 index 22190dbd..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/nl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","nl",{toolbar:"Toon blokken"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/no.js b/public/build/ckeditor/plugins/showblocks/lang/no.js deleted file mode 100644 index 75702788..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/no.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","no",{toolbar:"Vis blokker"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/oc.js b/public/build/ckeditor/plugins/showblocks/lang/oc.js deleted file mode 100644 index 3e4817f5..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/oc.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","oc",{toolbar:"Afichar los blòts"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/pl.js b/public/build/ckeditor/plugins/showblocks/lang/pl.js deleted file mode 100644 index 3168b3c5..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/pl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","pl",{toolbar:"Pokaż bloki"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/pt-br.js b/public/build/ckeditor/plugins/showblocks/lang/pt-br.js deleted file mode 100644 index 3ac0ef74..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/pt-br.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","pt-br",{toolbar:"Mostrar blocos de código"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/pt.js b/public/build/ckeditor/plugins/showblocks/lang/pt.js deleted file mode 100644 index 5afaf8e7..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/pt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","pt",{toolbar:"Exibir blocos"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ro.js b/public/build/ckeditor/plugins/showblocks/lang/ro.js deleted file mode 100644 index e4dadf0a..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ro.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ro",{toolbar:"Arată blocurile"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ru.js b/public/build/ckeditor/plugins/showblocks/lang/ru.js deleted file mode 100644 index 9620b9d3..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ru.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ru",{toolbar:"Отображать блоки"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/si.js b/public/build/ckeditor/plugins/showblocks/lang/si.js deleted file mode 100644 index f67dff30..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/si.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","si",{toolbar:"කොටස පෙන්නන්න"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sk.js b/public/build/ckeditor/plugins/showblocks/lang/sk.js deleted file mode 100644 index dee77c9a..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sk",{toolbar:"Ukázať bloky"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sl.js b/public/build/ckeditor/plugins/showblocks/lang/sl.js deleted file mode 100644 index 52fca0bb..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sl.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sl",{toolbar:"Prikaži ograde"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sq.js b/public/build/ckeditor/plugins/showblocks/lang/sq.js deleted file mode 100644 index 88405f28..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sq.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sq",{toolbar:"Shfaq Blloqet"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sr-latn.js b/public/build/ckeditor/plugins/showblocks/lang/sr-latn.js deleted file mode 100644 index ff31a911..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sr-latn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sr-latn",{toolbar:"Prikaži blokove"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sr.js b/public/build/ckeditor/plugins/showblocks/lang/sr.js deleted file mode 100644 index 826b6e7f..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sr",{toolbar:"Прикажи блокове"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/sv.js b/public/build/ckeditor/plugins/showblocks/lang/sv.js deleted file mode 100644 index a05b6ccb..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/sv.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","sv",{toolbar:"Visa block"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/th.js b/public/build/ckeditor/plugins/showblocks/lang/th.js deleted file mode 100644 index 9b3951cc..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/th.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","th",{toolbar:"แสดงบล็อคข้อมูล"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/tr.js b/public/build/ckeditor/plugins/showblocks/lang/tr.js deleted file mode 100644 index 060da3aa..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/tr.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","tr",{toolbar:"Blokları Göster"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/tt.js b/public/build/ckeditor/plugins/showblocks/lang/tt.js deleted file mode 100644 index 519e6f7b..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/tt.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","tt",{toolbar:"Блокларны күрсәтү"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/ug.js b/public/build/ckeditor/plugins/showblocks/lang/ug.js deleted file mode 100644 index c44b6605..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/ug.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","ug",{toolbar:"بۆلەكنى كۆرسەت"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/uk.js b/public/build/ckeditor/plugins/showblocks/lang/uk.js deleted file mode 100644 index ca9f51c4..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/uk.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","uk",{toolbar:"Показувати блоки"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/vi.js b/public/build/ckeditor/plugins/showblocks/lang/vi.js deleted file mode 100644 index 43566240..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/vi.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","vi",{toolbar:"Hiển thị các khối"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/zh-cn.js b/public/build/ckeditor/plugins/showblocks/lang/zh-cn.js deleted file mode 100644 index abee734d..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/zh-cn.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","zh-cn",{toolbar:"显示区块"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/lang/zh.js b/public/build/ckeditor/plugins/showblocks/lang/zh.js deleted file mode 100644 index 84c1e7eb..00000000 --- a/public/build/ckeditor/plugins/showblocks/lang/zh.js +++ /dev/null @@ -1 +0,0 @@ -CKEDITOR.plugins.setLang("showblocks","zh",{toolbar:"顯示區塊"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/showblocks/plugin.js b/public/build/ckeditor/plugins/showblocks/plugin.js deleted file mode 100644 index f06a7b7f..00000000 --- a/public/build/ckeditor/plugins/showblocks/plugin.js +++ /dev/null @@ -1,9 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){var k={readOnly:1,preserveState:!0,editorFocus:!1,exec:function(a){this.toggleState();this.refresh(a)},refresh:function(a){if(a.document){var c=this.state!=CKEDITOR.TRISTATE_ON||a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&!a.focusManager.hasFocus?"removeClass":"attachClass";a.editable()[c]("cke_show_blocks")}}};CKEDITOR.plugins.add("showblocks",{lang:"af,ar,az,bg,bn,bs,ca,cs,cy,da,de,de-ch,el,en,en-au,en-ca,en-gb,eo,es,es-mx,et,eu,fa,fi,fo,fr,fr-ca,gl,gu,he,hi,hr,hu,id,is,it,ja,ka,km,ko,ku,lt,lv,mk,mn,ms,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,th,tr,tt,ug,uk,vi,zh,zh-cn", -icons:"showblocks,showblocks-rtl",hidpi:!0,onLoad:function(){var a="p div pre address blockquote h1 h2 h3 h4 h5 h6".split(" "),c,b,e,f,k=CKEDITOR.getUrl(this.path),l=!(CKEDITOR.env.ie&&9>CKEDITOR.env.version),g=l?":not([contenteditable\x3dfalse]):not(.cke_show_blocks_off)":"",d,h;for(c=b=e=f="";d=a.pop();)h=a.length?",":"",c+=".cke_show_blocks "+d+g+h,e+=".cke_show_blocks.cke_contents_ltr "+d+g+h,f+=".cke_show_blocks.cke_contents_rtl "+d+g+h,b+=".cke_show_blocks "+d+g+"{background-image:url("+CKEDITOR.getUrl(k+ -"images/block_"+d+".png")+")}";CKEDITOR.addCss((c+"{background-repeat:no-repeat;border:1px dotted gray;padding-top:8px}").concat(b,e+"{background-position:top left;padding-left:8px}",f+"{background-position:top right;padding-right:8px}"));l||CKEDITOR.addCss(".cke_show_blocks [contenteditable\x3dfalse],.cke_show_blocks .cke_show_blocks_off{border:none;padding-top:0;background-image:none}.cke_show_blocks.cke_contents_rtl [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_rtl .cke_show_blocks_off{padding-right:0}.cke_show_blocks.cke_contents_ltr [contenteditable\x3dfalse],.cke_show_blocks.cke_contents_ltr .cke_show_blocks_off{padding-left:0}")}, -init:function(a){function c(){b.refresh(a)}if(!a.blockless){var b=a.addCommand("showblocks",k);b.canUndo=!1;a.config.startupOutlineBlocks&&b.setState(CKEDITOR.TRISTATE_ON);a.ui.addButton&&a.ui.addButton("ShowBlocks",{label:a.lang.showblocks.toolbar,command:"showblocks",toolbar:"tools,20"});a.on("mode",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&&b.refresh(a)});a.elementMode==CKEDITOR.ELEMENT_MODE_INLINE&&(a.on("focus",c),a.on("blur",c));a.on("contentDom",function(){b.state!=CKEDITOR.TRISTATE_DISABLED&& -b.refresh(a)})}}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/smiley/dialogs/smiley.js b/public/build/ckeditor/plugins/smiley/dialogs/smiley.js deleted file mode 100644 index 3048f31c..00000000 --- a/public/build/ckeditor/plugins/smiley/dialogs/smiley.js +++ /dev/null @@ -1,11 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.dialog.add("smiley",function(f){for(var e=f.config,a=f.lang.smiley,h=e.smiley_images,g=e.smiley_columns||8,k,m=function(l){var c=l.data.getTarget(),b=c.getName();if("a"==b)c=c.getChild(0);else if("img"!=b)return;var b=c.getAttribute("cke_src"),a=c.getAttribute("title"),c=f.document.createElement("img",{attributes:{src:b,"data-cke-saved-src":b,title:a,alt:a,width:c.$.width,height:c.$.height}});f.insertElement(c);k.hide();l.data.preventDefault()},q=CKEDITOR.tools.addFunction(function(a,c){a= -new CKEDITOR.dom.event(a);c=new CKEDITOR.dom.element(c);var b;b=a.getKeystroke();var d="rtl"==f.lang.dir;switch(b){case 38:if(b=c.getParent().getParent().getPrevious())b=b.getChild([c.getParent().getIndex(),0]),b.focus();a.preventDefault();break;case 40:(b=c.getParent().getParent().getNext())&&(b=b.getChild([c.getParent().getIndex(),0]))&&b.focus();a.preventDefault();break;case 32:m({data:a});a.preventDefault();break;case d?37:39:if(b=c.getParent().getNext())b=b.getChild(0),b.focus(),a.preventDefault(!0); -else if(b=c.getParent().getParent().getNext())(b=b.getChild([0,0]))&&b.focus(),a.preventDefault(!0);break;case d?39:37:if(b=c.getParent().getPrevious())b=b.getChild(0),b.focus(),a.preventDefault(!0);else if(b=c.getParent().getParent().getPrevious())b=b.getLast().getChild(0),b.focus(),a.preventDefault(!0)}}),d=CKEDITOR.tools.getNextId()+"_smiley_emtions_label",d=['\x3cdiv\x3e\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+a.options+"\x3c/span\x3e",'\x3ctable role\x3d"listbox" aria-labelledby\x3d"'+ -d+'" style\x3d"width:100%;height:100%;border-collapse:separate;" cellspacing\x3d"2" cellpadding\x3d"2"',CKEDITOR.env.ie&&CKEDITOR.env.quirks?' style\x3d"position:absolute;"':"","\x3e\x3ctbody\x3e"],n=h.length,a=0;a|\+|~)/g," ");a=a.replace(/\[[^\]]*/g,"");a=a.replace(/#[^\s]*/g,"");a=a.replace(/\:{1,2}[^\s]*/g,"");a=a.replace(/\s+/g," ");a=a.split(" ");b=[];for(g=0;gp&&(p=b)}return p}function t(a){return function(){var b=this.getValue(),b=!!(CKEDITOR.dialog.validate.integer().call(this,b)&&0r.getSize("width")?"100%":500:0,getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.width)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("width",this.getValue())},setup:function(a){a=a.getStyle("width");this.setValue(a)},commit:n}]},{type:"hbox",widths:["5em"],children:[{type:"text",id:"txtHeight",requiredContent:"table{height}", -controlStyle:"width:5em",label:a.lang.common.height,title:a.lang.common.cssLengthTooltip,"default":"",getValue:v,validate:CKEDITOR.dialog.validate.cssLength(a.lang.common.invalidCssLength.replace("%1",a.lang.common.height)),onChange:function(){var a=this.getDialog().getContentElement("advanced","advStyles");a&&a.updateStyle("height",this.getValue())},setup:function(a){(a=a.getStyle("height"))&&this.setValue(a)},commit:n}]},{type:"html",html:"\x26nbsp;"},{type:"text",id:"txtCellSpace",requiredContent:"table[cellspacing]", -controlStyle:"width:3em",label:a.lang.table.cellSpace,"default":a.filter.check("table[cellspacing]")?1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellSpacing),setup:function(a){this.setValue(a.getAttribute("cellSpacing")||"")},commit:function(a,b){this.getValue()?b.setAttribute("cellSpacing",this.getValue()):b.removeAttribute("cellSpacing")}},{type:"text",id:"txtCellPad",requiredContent:"table[cellpadding]",controlStyle:"width:3em",label:a.lang.table.cellPad,"default":a.filter.check("table[cellpadding]")? -1:0,validate:CKEDITOR.dialog.validate.number(a.lang.table.invalidCellPadding),setup:function(a){this.setValue(a.getAttribute("cellPadding")||"")},commit:function(a,b){this.getValue()?b.setAttribute("cellPadding",this.getValue()):b.removeAttribute("cellPadding")}}]}]},{type:"html",align:"right",html:""},{type:"vbox",padding:0,children:[{type:"text",id:"txtCaption",requiredContent:"caption",label:a.lang.table.caption,setup:function(a){this.enable();a=a.getElementsByTag("caption");if(0a.indexOf("px")&&(a=a in h&&"none"!=b.getComputedStyle("border-style")?h[a]:0);return parseFloat(a)}function C(b){var d=[],a={},h="rtl"===b.getComputedStyle("direction"),l=CKEDITOR.tools.array.zip((new CKEDITOR.dom.nodeList(b.$.rows)).toArray(),CKEDITOR.tools.buildTableMap(b));CKEDITOR.tools.array.forEach(l, -function(e){var c=e[0].$;e=e[1];var l=-1,g=0,f=null;c?(g=new CKEDITOR.dom.element(c),f={height:g.$.offsetHeight,position:g.getDocumentPosition()}):f=void 0;for(var c=CKEDITOR.env.ie&&!CKEDITOR.env.edge,m="collapse"===b.getComputedStyle("border-collapse"),g=f.height,f=f.position,p=0;p=c.x&&a<=c.x+c.width&&b>=c.y&&b<=c.y+c.height))return c= -null,f=p=0,n.removeListener("mouseup",l),g.removeListener("mousedown",h),g.removeListener("mousemove",e),n.getBody().setStyle("cursor","auto"),y?g.remove():g.hide(),0;var d=a-Math.round(g.$.offsetWidth/2);if(f){if(d==w||d==r)return 1;d=Math.max(d,w);d=Math.min(d,r);p=d-A}g.setStyle("left",m(d));return 1}}function A(b){var d=b.data.getTarget();if("mouseout"==b.name){if(!d.is("table"))return;for(var a=new CKEDITOR.dom.element(b.data.$.relatedTarget||b.data.$.toElement);a&&a.$&&!a.equals(d)&&!a.is("body");)a= -a.getParent();if(!a||a.equals(d))return}d.getAscendant("table",1).removeCustomData("_cke_table_pillars");b.removeListener()}var m=CKEDITOR.tools.cssLength,y=CKEDITOR.env.ie&&(CKEDITOR.env.ie7Compat||CKEDITOR.env.quirks);CKEDITOR.plugins.add("tableresize",{requires:"tabletools",init:function(b){b.on("contentDom",function(){var d,a=b.editable(),h=a.isInline()?a:b.document;a.attachListener(h,"mousemove",function(a){a=a.data;var e=a.getTarget();if(e.type==CKEDITOR.NODE_ELEMENT){var c=a.getPageOffset().x, -h=a.getPageOffset().y;if(d&&d.move(c,h))B(a);else if(e.is("table")||e.getAscendant({thead:1,tbody:1,tfoot:1},1))if(a=e.getAscendant("table",1),b.editable().contains(a)){(e=a.getCustomData("_cke_table_pillars"))||(a.setCustomData("_cke_table_pillars",e=C(a)),a.on("mouseout",A),a.on("mousedown",A));a:{a=e;for(var e=0,g=a.length;e=f.x&&c<=f.x+f.width&&h>=f.y&&h<=f.y+f.height){c=f;break a}}c=null}c&&(!d&&(d=new E(b)),d.attachTo(c))}}});a.attachListener(h,"scroll",function(){var b= -a.find("table").toArray();CKEDITOR.tools.array.forEach(b,CKEDITOR.tools.debounce(function(a){a.removeCustomData("_cke_table_pillars")},200))})})}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/tableselection/styles/tableselection.css b/public/build/ckeditor/plugins/tableselection/styles/tableselection.css deleted file mode 100644 index 1f5481aa..00000000 --- a/public/build/ckeditor/plugins/tableselection/styles/tableselection.css +++ /dev/null @@ -1,36 +0,0 @@ -.cke_table-faked-selection-editor *::selection, table[data-cke-table-faked-selection-table] *::selection { - background: transparent; -} - -.cke_table-faked-selection { - background: darkgray !important; - color: black; -} -.cke_table-faked-selection a { - color: black; -} -.cke_editable:focus .cke_table-faked-selection { - /* We have to use !important here, as td might specify it's own background, thus table selection - would not be visible. */ - background: #0076cb !important; - color: white; -} -.cke_editable:focus .cke_table-faked-selection a { - color: white; -} -.cke_table-faked-selection::-moz-selection, .cke_table-faked-selection ::-moz-selection { - background: transparent; -} -.cke_table-faked-selection::selection, .cke_table-faked-selection ::selection { - background: transparent; -} - -/* Change the cursor when selecting cells (#706). - * - * This solution does not work in IE, Edge and Safari due to upstream isues: - * https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/3419602/ - * https://bugs.webkit.org/show_bug.cgi?id=53341 - */ -table[data-cke-table-faked-selection-table] { - cursor: cell; -} diff --git a/public/build/ckeditor/plugins/tabletools/dialogs/tableCell.js b/public/build/ckeditor/plugins/tabletools/dialogs/tableCell.js deleted file mode 100644 index 1ea53802..00000000 --- a/public/build/ckeditor/plugins/tabletools/dialogs/tableCell.js +++ /dev/null @@ -1,18 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.dialog.add("cellProperties",function(g){function k(a){return{isSpacer:!0,type:"html",html:"\x26nbsp;",requiredContent:a?a:void 0}}function r(){return{type:"vbox",padding:0,children:[]}}function t(a){return{requiredContent:"td{"+a+"}",type:"hbox",widths:["70%","30%"],children:[{type:"text",id:a,width:"100px",label:e[a],validate:p.number(d["invalid"+CKEDITOR.tools.capitalize(a)]),onLoad:function(){var b=this.getDialog().getContentElement("info",a+"Type").getElement(),c=this.getInputElement(), -d=c.getAttribute("aria-labelledby");c.setAttribute("aria-labelledby",[d,b.$.id].join(" "))},setup:f(function(b){var c=parseFloat(b.getAttribute(a),10);b=parseFloat(b.getStyle(a),10);if(!isNaN(b))return b;if(!isNaN(c))return c}),commit:function(b){var c=parseFloat(this.getValue(),10),d=this.getDialog().getValueOf("info",a+"Type")||u(b,a);isNaN(c)?b.removeStyle(a):b.setStyle(a,c+d);b.removeAttribute(a)},"default":""},{type:"select",id:a+"Type",label:g.lang.table[a+"Unit"],labelStyle:"visibility:hidden;display:block;width:0;overflow:hidden", -"default":"px",items:[[q.widthPx,"px"],[q.widthPc,"%"]],setup:f(function(b){return u(b,a)})}]}}function f(a){return function(b){for(var c=a(b[0]),d=1;d=n/2?h[2].children.push(a):h[0].children.push(a)});CKEDITOR.tools.array.forEach(h, -function(a){a.isSpacer||(a=a.children,a[a.length-1].isSpacer&&a.pop())});return{title:d.title,minWidth:1===h.length?205:410,minHeight:50,contents:[{id:"info",label:d.title,accessKey:"I",elements:[{type:"hbox",widths:1===h.length?["100%"]:["40%","5%","40%"],children:h}]}],getModel:function(a){return CKEDITOR.plugins.tabletools.getSelectedCells(a.getSelection())},onShow:function(){var a=this.getModel(this.getParentEditor());this.setupContent(a)},onOk:function(){for(var a=this._.editor.getSelection(), -b=a.createBookmarks(),c=this.getParentEditor(),d=this.getModel(c),e=0;e=c&&c+g.getText().length>=d)return{element:g,offset:d-c};c+=g.getText().length}return null}function m(b,d){for(var a=0;a=c;c++)b[c]=parseInt(a.substr(2*c,2),16);return 165<=.2126*b[0]+.7152*b[1]+.0722*b[2]}function H(a){var c=a.data,b=c.getTarget(),h=c.getKeystroke(),d="rtl"==f.lang.dir;switch(h){case 38:if(a=b.getParent().getPrevious())a=a.getChild([b.getIndex()]),a.focus();c.preventDefault();break;case 40:(a=b.getParent().getNext())&&(a=a.getChild([b.getIndex()]))&&1==a.type&&a.focus();c.preventDefault();break;case 32:case 13:B(a);c.preventDefault();break;case d? -37:39:(a=b.getNext())?1==a.type&&(a.focus(),c.preventDefault(!0)):(a=b.getParent().getNext())&&(a=a.getChild([0]))&&1==a.type&&(a.focus(),c.preventDefault(!0));break;case d?39:37:if(a=b.getPrevious())a.focus(),c.preventDefault(!0);else if(a=b.getParent().getPrevious())a=a.getLast(),a.focus(),c.preventDefault(!0)}}function p(a){return CKEDITOR.tools.getNextId()+"_"+a}function E(a){var c=null;q&&a&&(c=q.findOne('td[data-color\x3d"'+a+'"]'));return c}function F(a,c){var b=a||c;f.setUiColor(b);k.getContentElement("picker", -"configBox").setValue(b);if(a&&k.getContentElement("picker","predefined").getValue()!==b)k.getContentElement("picker","predefined").setValue(b);else if(c){var d=E(b);d?r(d):n();k.getContentElement("picker","selectedColor").getValue()!==b&&m(b)}}function y(a){return a.getUiColor()?CKEDITOR.tools.parseCssText("color:"+a.getUiColor(),!0).color:null}var z=CKEDITOR.dom.element,l=CKEDITOR.document,d=f.lang.uicolor,w=p("hicolor"),x=p("hicolortext"),t=p("selhicolor"),k,q,g,e,D;q=function(){function a(a,d){for(var A= -a;Ag;g++)c(f.$,"#"+h[e]+h[g]+h[A])}}function c(a,c){var b=new z(a.insertCell(-1));b.setAttribute("class","ColorCell cke_colordialog_colorcell");b.setAttribute("tabIndex",-1);b.setAttribute("role","gridcell");b.setAttribute("data-color",c);b.on("keydown",H);b.on("click",B);b.on("focus",C);b.on("blur",u);b.setStyle("background-color",c);var d=p("color_table_cell");b.setAttribute("aria-labelledby", -d);b.append(CKEDITOR.dom.element.createFromHtml('\x3cspan id\x3d"'+d+'" class\x3d"cke_voice_label"\x3e'+c+"\x3c/span\x3e",CKEDITOR.document))}var b=CKEDITOR.dom.element.createFromHtml('\x3ctable tabIndex\x3d"-1" class\x3d"cke_colordialog_table" aria-label\x3d"'+d.options+'" role\x3d"grid" style\x3d"border-collapse:separate;" cellspacing\x3d"0"\x3e\x3ccaption class\x3d"cke_voice_label"\x3e'+d.options+'\x3c/caption\x3e\x3ctbody role\x3d"presentation"\x3e\x3c/tbody\x3e\x3c/table\x3e');b.on("mouseover", -C);b.on("mouseout",u);var h="00 33 66 99 cc ff".split(" ");a(0,0);a(3,0);a(0,3);a(3,3);var e=new z(b.$.insertRow(-1));e.setAttribute("role","row");c(e.$,"#000000");for(var g=0;16>g;g++){var f=g.toString(16);c(e.$,"#"+f+f+f+f+f+f)}c(e.$,"#ffffff");return b}();CKEDITOR.document.appendStyleSheet(CKEDITOR.getUrl(CKEDITOR.plugins.get("uicolor").path+"dialogs/uicolor.css"));return{title:d.title,minWidth:360,minHeight:220,buttons:[CKEDITOR.dialog.okButton],onLoad:function(){k=this},onHide:function(){n(); -m(null);e&&(e.removeClass("cke_colordialog_focused_light"),e.removeClass("cke_colordialog_focused_dark"),e=null,v(null))},contents:[{id:"picker",label:d.title,accessKey:"I",elements:[{type:"hbox",padding:0,widths:["70%","10%","30%"],children:[{type:"html",html:"\x3cdiv\x3e\x3c/div\x3e",onLoad:function(){CKEDITOR.document.getById(this.domId).append(q)},focus:function(){var a=y(f),c=a?E(a):e||this.getElement().getElementsByTag("td").getItem(0);c&&(c&&c.focus(),a&&(r(c),m(a)))}},{type:"html",html:"\x26nbsp;"}, -{type:"vbox",padding:0,widths:["70%","5%","25%"],children:[{type:"html",html:"\x3cspan\x3e"+d.highlight+'\x3c/span\x3e\x3cdiv id\x3d"'+w+'" style\x3d"border: 1px solid; height: 74px; width: 74px;"\x3e\x3c/div\x3e\x3cdiv id\x3d"'+x+'"\x3e\x26nbsp;\x3c/div\x3e\x3cspan\x3e'+d.selected+'\x3c/span\x3e\x3cdiv id\x3d"'+t+'" style\x3d"border: 1px solid; height: 20px; width: 74px;"\x3e\x3c/div\x3e'},{type:"text",label:d.selected,labelStyle:"display:none",id:"selectedColor",style:"width: 76px;margin-top:4px", -onChange:function(){try{var a=this.getValue();a&&(l.getById(t).setStyle("background-color",a),F(a))}catch(c){n(),m(null)}}}]}]},{type:"vbox",children:[{type:"hbox",padding:0,children:[{id:"predefined",type:"select","default":"",width:"100%",label:d.predefined,items:[[""],["Light blue","#9ab8f3"],["Sand","#d2b48c"],["Metallic","#949aaa"],["Purple","#c2a3c7"],["Olive","#a2c980"],["Happy green","#9bd446"],["Jezebel Blue","#14b8c4"],["Burn","#ff89a"],["Easy red","#ff6969"],["Pisces 3","#48b4f2"],["Aquarius 5", -"#487ed4"],["Absinthe","#a8cf76"],["Scrambled Egg","#c7a622"],["Hello monday","#8e8d80"],["Lovely sunshine","#f1e8b1"],["Recycled air","#b3c593"],["Down","#bcbca4"],["Mark Twain","#cfe91d"],["Specks of dust","#d1b596"],["Lollipop","#f6ce23"]],onShow:function(){this.setValue(y(f))},onChange:function(){var a=this.getValue();a&&(F(null,a),this.focus())}}]},{id:"configBox",type:"text",label:d.config,onShow:function(){this.getInputElement().setAttribute("readonly",!0);this.setValue(y(f))},onChange:function(){var a= -this.getValue();a&&CKEDITOR.tools.style.parse._findColor(a).length&&this.setValue('config.uiColor \x3d "'+a.toLowerCase()+'"',!0)}}]}]}]}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png b/public/build/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png deleted file mode 100644 index 9caa62be..00000000 Binary files a/public/build/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/uicolor/icons/uicolor.png b/public/build/ckeditor/plugins/uicolor/icons/uicolor.png deleted file mode 100644 index f2f1de9e..00000000 Binary files a/public/build/ckeditor/plugins/uicolor/icons/uicolor.png and /dev/null differ diff --git a/public/build/ckeditor/plugins/uicolor/lang/_translationstatus.txt b/public/build/ckeditor/plugins/uicolor/lang/_translationstatus.txt deleted file mode 100644 index 1bd713aa..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/_translationstatus.txt +++ /dev/null @@ -1,27 +0,0 @@ -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - -bg.js Found: 4 Missing: 0 -cs.js Found: 4 Missing: 0 -cy.js Found: 4 Missing: 0 -da.js Found: 4 Missing: 0 -de.js Found: 4 Missing: 0 -el.js Found: 4 Missing: 0 -eo.js Found: 4 Missing: 0 -et.js Found: 4 Missing: 0 -fa.js Found: 4 Missing: 0 -fi.js Found: 4 Missing: 0 -fr.js Found: 4 Missing: 0 -he.js Found: 4 Missing: 0 -hr.js Found: 4 Missing: 0 -it.js Found: 4 Missing: 0 -mk.js Found: 4 Missing: 0 -nb.js Found: 4 Missing: 0 -nl.js Found: 4 Missing: 0 -no.js Found: 4 Missing: 0 -pl.js Found: 4 Missing: 0 -tr.js Found: 4 Missing: 0 -ug.js Found: 4 Missing: 0 -uk.js Found: 4 Missing: 0 -vi.js Found: 4 Missing: 0 -zh-cn.js Found: 4 Missing: 0 diff --git a/public/build/ckeditor/plugins/uicolor/lang/af.js b/public/build/ckeditor/plugins/uicolor/lang/af.js deleted file mode 100644 index 8acd2d64..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/af.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","af",{title:"UI kleur keuse",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Voordefinieerte kleur keuses",config:"Voeg hierdie in jou config.js lêr in"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ar.js b/public/build/ckeditor/plugins/uicolor/lang/ar.js deleted file mode 100644 index d92f293d..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ar.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ar",{title:"منتقي الألوان",options:"خيارات الالوان",highlight:"تحديد",selected:"اللون المختار",predefined:"مجموعات ألوان معرفة مسبقا",config:"قص السطر إلى الملف config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/az.js b/public/build/ckeditor/plugins/uicolor/lang/az.js deleted file mode 100644 index 8f6b7efc..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/az.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","az",{title:"Panellərin rəng seçimi",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Öncədən təyin edilmiş rənglərin yığımları",config:"Bu sətri sizin config.js faylına əlavə edin"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/bg.js b/public/build/ckeditor/plugins/uicolor/lang/bg.js deleted file mode 100644 index e39634d9..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/bg.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","bg",{title:"Избор на цвят за интерфейса",options:"Опции за цвят",highlight:"Освети",selected:"Избран цвят",predefined:"Предефинирани цветови палитри",config:"Вмъкнете този низ във вашия config.js файл"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ca.js b/public/build/ckeditor/plugins/uicolor/lang/ca.js deleted file mode 100644 index 73d70c99..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ca",{title:"UI Color Picker",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Conjunts de colors predefinits",config:"Enganxa aquest text dins el fitxer config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/cs.js b/public/build/ckeditor/plugins/uicolor/lang/cs.js deleted file mode 100644 index d488f99c..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/cs.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","cs",{title:"Výběr barvy rozhraní",options:"Nastavení barvy",highlight:"Zvýraznit",selected:"Vybráno",predefined:"Přednastavené sady barev",config:"Vložte tento řetězec do vašeho souboru config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/cy.js b/public/build/ckeditor/plugins/uicolor/lang/cy.js deleted file mode 100644 index 21022349..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/cy.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","cy",{title:"Dewisydd Lliwiau'r UI",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Setiau lliw wedi'u cyn-ddiffinio",config:"Gludwch y llinyn hwn i'ch ffeil config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/da.js b/public/build/ckeditor/plugins/uicolor/lang/da.js deleted file mode 100644 index 2936a2f2..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/da.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","da",{title:"Brugerflade på farvevælger",options:"Farvevalg",highlight:"Fremhæv",selected:"Valgt farve",predefined:"Prædefinerede farveskemaer",config:"Indsæt denne streng i din config.js fil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/de-ch.js b/public/build/ckeditor/plugins/uicolor/lang/de-ch.js deleted file mode 100644 index 9efd49c4..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/de-ch.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","de-ch",{title:"UI-Farbpipette",options:"Farboptionen",highlight:"Hervorheben",selected:"Ausgewählte Farbe",predefined:"Vordefinierte Farbsätze",config:"Fügen Sie diese Zeichenfolge in die Datei config.js ein."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/de.js b/public/build/ckeditor/plugins/uicolor/lang/de.js deleted file mode 100644 index 6b349415..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/de.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","de",{title:"UI-Farbpipette",options:"Farboptionen",highlight:"Hervorheben",selected:"Ausgewählte Farbe",predefined:"Vordefinierte Farbsätze",config:"Fügen Sie diese Zeichenfolge in die Datei config.js ein."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/el.js b/public/build/ckeditor/plugins/uicolor/lang/el.js deleted file mode 100644 index ec1d52b0..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/el.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","el",{title:"Διεπαφή Επιλογής Χρωμάτων",options:"Επιλογές χρωμάτων",highlight:"Επισήμανση",selected:"Επιλεγμένο Χρώμα",predefined:"Προκαθορισμένα σύνολα χρωμάτων",config:"Επικολλήστε αυτό το κείμενο στο αρχείο config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/en-au.js b/public/build/ckeditor/plugins/uicolor/lang/en-au.js deleted file mode 100644 index 2ad5f7e1..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/en-au.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","en-au",{title:"UI Colour Picker",options:"Colour Options",highlight:"Highlight",selected:"Selected Colour",predefined:"Predefined colour sets",config:"Paste this string into your config.js file"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/en-gb.js b/public/build/ckeditor/plugins/uicolor/lang/en-gb.js deleted file mode 100644 index 4a654dee..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/en-gb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","en-gb",{title:"UI Colour Picker",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Predefined colour sets",config:"Paste this string into your config.js file"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/en.js b/public/build/ckeditor/plugins/uicolor/lang/en.js deleted file mode 100644 index 74761c45..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/en.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","en",{title:"UI Color Picker",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Predefined color sets",config:"Paste this string into your config.js file"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/eo.js b/public/build/ckeditor/plugins/uicolor/lang/eo.js deleted file mode 100644 index 4ff546bd..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/eo.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","eo",{title:"UI Kolorselektilo",options:"Koloropcioj",highlight:"Emfazi",selected:"Selektita Koloro",predefined:"Antaŭdifinita koloraro",config:"Gluu tiun signoĉenon en vian dosieron config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/es-mx.js b/public/build/ckeditor/plugins/uicolor/lang/es-mx.js deleted file mode 100644 index 4dde437c..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/es-mx.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","es-mx",{title:"Selector de colores de la interfaz de usuario",options:"Opciones de color",highlight:"Resaltar",selected:"Color seleccionado",predefined:"Establecer color predefinido",config:"Pega esta cadena en tu archivo config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/es.js b/public/build/ckeditor/plugins/uicolor/lang/es.js deleted file mode 100644 index d14a3cfc..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/es.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","es",{title:"Recolector de Color de Interfaz de Usuario",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Conjuntos predefinidos de colores",config:"Pega esta cadena en tu archivo config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/et.js b/public/build/ckeditor/plugins/uicolor/lang/et.js deleted file mode 100644 index ce5058ff..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/et.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","et",{title:"Värvivalija kasutajaliides",options:"Värvi valikud",highlight:"Esiletõstmine",selected:"Valitud värv",predefined:"Eelmääratud värvikomplektid",config:"Aseta see sõne oma config.js faili."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/eu.js b/public/build/ckeditor/plugins/uicolor/lang/eu.js deleted file mode 100644 index 07871073..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/eu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","eu",{title:"EI kolore-hautatzailea",options:"Kolore aukerak",highlight:"Nabarmendu",selected:"Hautatutako kolorea",predefined:"Aurrez definitutako kolore multzoak",config:"Itsatsi kate hau zure config.js fitxategian"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/fa.js b/public/build/ckeditor/plugins/uicolor/lang/fa.js deleted file mode 100644 index a6ac14bb..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/fa.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","fa",{title:"انتخاب رنگ رابط کاربری",options:"گزینه های رنگ",highlight:"برجستگی",selected:"رنگ انتخاب شده",predefined:"مجموعه رنگ از پیش تعریف شده",config:"این رشته را در پروندهٔ config.js خود رونوشت کنید."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/fi.js b/public/build/ckeditor/plugins/uicolor/lang/fi.js deleted file mode 100644 index d6ab7627..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/fi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","fi",{title:"Käyttöliittymän väripaletti",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Esimääritellyt värijoukot",config:"Liitä tämä merkkijono config.js tiedostoosi"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/fr-ca.js b/public/build/ckeditor/plugins/uicolor/lang/fr-ca.js deleted file mode 100644 index aada0ded..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/fr-ca.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","fr-ca",{title:"Sélecteur de couleur",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Ensemble de couleur prédéfinies",config:"Insérez cette ligne dans votre fichier config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/fr.js b/public/build/ckeditor/plugins/uicolor/lang/fr.js deleted file mode 100644 index b13228e4..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/fr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","fr",{title:"Sélecteur de couleur",options:"Option de couleur",highlight:"Surligner",selected:"Couleur sélectionnée",predefined:"Palettes de couleurs prédéfinies",config:"Collez ce texte dans votre fichier config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/gl.js b/public/build/ckeditor/plugins/uicolor/lang/gl.js deleted file mode 100644 index b39370d9..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/gl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","gl",{title:"Recolledor de cor da interface de usuario",options:"Opcións de cor",highlight:"Resaltar",selected:"Cor seleccionado",predefined:"Conxuntos predefinidos de cores",config:"Pegue esta cadea no seu ficheiro config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/he.js b/public/build/ckeditor/plugins/uicolor/lang/he.js deleted file mode 100644 index 8b1a1a9e..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/he.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","he",{title:"בחירת צבע ממשק משתמש",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"קבוצות צבעים מוגדרות מראש",config:"הדבק את הטקסט הבא לתוך הקובץ config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/hr.js b/public/build/ckeditor/plugins/uicolor/lang/hr.js deleted file mode 100644 index 19c0f165..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/hr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","hr",{title:"UI odabir boja",options:"Opcije boja",highlight:"Označi",selected:"Odabrana boja",predefined:"Već postavljeni setovi boja",config:"Zalijepite ovaj tekst u Vašu config.js datoteku."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/hu.js b/public/build/ckeditor/plugins/uicolor/lang/hu.js deleted file mode 100644 index 0f199b9c..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/hu.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","hu",{title:"UI Színválasztó",options:"Szín beállítások",highlight:"Kiemelés",selected:"Kiválasztott szín",predefined:"Előre definiált színbeállítások",config:"Illessze be ezt a szöveget a config.js fájlba"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/id.js b/public/build/ckeditor/plugins/uicolor/lang/id.js deleted file mode 100644 index 55f31f16..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/id.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","id",{title:"Pengambil Warna UI",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Set warna belum terdefinisi.",config:"Tempel string ini ke arsip config.js anda."}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/it.js b/public/build/ckeditor/plugins/uicolor/lang/it.js deleted file mode 100644 index e0b96733..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/it.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","it",{title:"Selettore Colore UI",options:"Opzioni colore",highlight:"Evidenzia",selected:"Colore selezionato",predefined:"Set di colori predefiniti",config:"Incolla questa stringa nel tuo file config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ja.js b/public/build/ckeditor/plugins/uicolor/lang/ja.js deleted file mode 100644 index 35abde34..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ja.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ja",{title:"UIカラーピッカー",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"既定カラーセット",config:"この文字列を config.js ファイルへ貼り付け"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/km.js b/public/build/ckeditor/plugins/uicolor/lang/km.js deleted file mode 100644 index 7b1d4979..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/km.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","km",{title:"ប្រដាប់​រើស​ពណ៌",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"ឈុត​ពណ៌​កំណត់​រួច​ស្រេច",config:"បិទ​ភ្ជាប់​ខ្សែ​អក្សរ​នេះ​ទៅ​ក្នុង​ឯកសារ config.js របស់​អ្នក"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ko.js b/public/build/ckeditor/plugins/uicolor/lang/ko.js deleted file mode 100644 index 25704782..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ko.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ko",{title:"UI 색상 선택기",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"미리 정의된 색상",config:"이 문자열을 config.js 에 붙여넣으세요"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ku.js b/public/build/ckeditor/plugins/uicolor/lang/ku.js deleted file mode 100644 index 921c963b..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ku.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ku",{title:"هەڵگری ڕەنگ بۆ ڕووکاری بەکارهێنەر",options:"هه‌ڵبژارده‌ی ڕه‌نگه‌کان",highlight:"نیشانکردن",selected:"هەڵبژاردنی ڕەنگ",predefined:"کۆمەڵە ڕەنگە دیاریکراوەکانی پێشوو",config:"ئەم دەقانە بلکێنە بە پەڕگەی config.js-fil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/lv.js b/public/build/ckeditor/plugins/uicolor/lang/lv.js deleted file mode 100644 index 11cf61cc..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/lv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","lv",{title:"UI krāsas izvēle",options:"Krāsu opcijas",highlight:"Izcelt",selected:"Izvēlētā krāsa",predefined:"Predefinēti krāsu komplekti",config:"Ielīmējiet šo rindu jūsu config.js failā"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/mk.js b/public/build/ckeditor/plugins/uicolor/lang/mk.js deleted file mode 100644 index 40520b4a..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/mk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","mk",{title:"Палета со бои",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Предефинирани множества на бои",config:"Залепи го овој текст во config.js датотеката"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/nb.js b/public/build/ckeditor/plugins/uicolor/lang/nb.js deleted file mode 100644 index 4d5bf849..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/nb.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","nb",{title:"Fargevelger for brukergrensesnitt",options:"Alternativer for farge",highlight:"Fremhevet",selected:"Valgt farge",predefined:"Forhåndsdefinerte fargesett",config:"Lim inn følgende tekst i din config.js-fil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/nl.js b/public/build/ckeditor/plugins/uicolor/lang/nl.js deleted file mode 100644 index 211d5dfe..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/nl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","nl",{title:"UI Kleurenkiezer",options:"Kleurinstellingen",highlight:"Highlight",selected:"Geselecteerde kleur",predefined:"Voorgedefinieerde kleurensets",config:"Plak deze tekst in jouw config.js bestand"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/no.js b/public/build/ckeditor/plugins/uicolor/lang/no.js deleted file mode 100644 index 2dcff1f0..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/no.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","no",{title:"Fargevelger for brukergrensesnitt",options:"Fargevalg",highlight:"Highlight",selected:"Valgt farge",predefined:"Forhåndsdefinerte fargesett",config:"Lim inn følgende tekst i din config.js-fil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/oc.js b/public/build/ckeditor/plugins/uicolor/lang/oc.js deleted file mode 100644 index 877952c6..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/oc.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","oc",{title:"Selector de color",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Paletas de colors predefinidas",config:"Pegatz aqueste tèxte dins vòstre fichièr config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/pl.js b/public/build/ckeditor/plugins/uicolor/lang/pl.js deleted file mode 100644 index e85c27af..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/pl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","pl",{title:"Wybór koloru interfejsu",options:"Opcje koloru",highlight:"Podgląd",selected:"Wybrany kolor",predefined:"Predefiniowane zestawy kolorów",config:"Wklej poniższy łańcuch znaków do pliku config.js:"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/pt-br.js b/public/build/ckeditor/plugins/uicolor/lang/pt-br.js deleted file mode 100644 index 904863d5..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/pt-br.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","pt-br",{title:"Paleta de Cores",options:"Opções de cores",highlight:"Destaque",selected:"Cor Selecionada",predefined:"Conjuntos de cores predefinidos",config:"Cole o texto no seu arquivo config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/pt.js b/public/build/ckeditor/plugins/uicolor/lang/pt.js deleted file mode 100644 index efe38b0f..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/pt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","pt",{title:"Seleção de Cor da IU",options:"Color Options",highlight:"Realçar",selected:"Selected Color",predefined:"Conjuntos de cor predefinidos",config:"Colar este item no seu ficheiro config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ro.js b/public/build/ckeditor/plugins/uicolor/lang/ro.js deleted file mode 100644 index a86fa638..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ro.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ro",{title:"Interfața cu utilizatorul a Selectorului de culoare",options:"Opțiuni culoare",highlight:"Evidențiere",selected:"Culoare selectată",predefined:"Seturi de culoare predefinite",config:"Copiază această expresie în fișierul tău config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ru.js b/public/build/ckeditor/plugins/uicolor/lang/ru.js deleted file mode 100644 index 23a2b9bf..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ru.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ru",{title:"Выбор цвета интерфейса",options:"Настройки цвета",highlight:"Подсветка",selected:"Выбранный цвет",predefined:"Предопределенные цветовые схемы",config:"Вставьте эту строку в файл config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/si.js b/public/build/ckeditor/plugins/uicolor/lang/si.js deleted file mode 100644 index 9d505221..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/si.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","si",{title:"වර්ණ ",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"කලින් වෙන්කරගත් පරිදි ඇති වර්ණ",config:"මෙම අක්ෂර පේලිය ගෙන config.js ලිපිගොනුව මතින් තබන්න"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sk.js b/public/build/ckeditor/plugins/uicolor/lang/sk.js deleted file mode 100644 index 1e681070..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sk",{title:"UI výber farby",options:"Možnosti farby",highlight:"Zvýrazniť",selected:"Vybraná farba",predefined:"Preddefinované sady farieb",config:"Vložte tento reťazec do svojho súboru config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sl.js b/public/build/ckeditor/plugins/uicolor/lang/sl.js deleted file mode 100644 index 6f7f9e78..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sl.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sl",{title:"UI Izbiralec Barve",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Vnaprej določeni barvni kompleti",config:"Prilepite ta niz v vašo config.js datoteko"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sq.js b/public/build/ckeditor/plugins/uicolor/lang/sq.js deleted file mode 100644 index 7011ddab..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sq.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sq",{title:"UI Mbledhës i Ngjyrave",options:"Variantet e Ngjyrave",highlight:"Theksuar",selected:"Ngjyra e Përzgjedhur",predefined:"Setet e paradefinuara të ngjyrave",config:"Hidhni këtë varg në skedën tuaj config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sr-latn.js b/public/build/ckeditor/plugins/uicolor/lang/sr-latn.js deleted file mode 100644 index d9305996..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sr-latn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sr-latn",{title:"UI Odredjivač boje",options:"Podešavanja boje",highlight:"Istakni",selected:"Odabrana boja",predefined:"Unapred definisane boje",config:"Nalepi ovaj tekst i u config.js datoteku"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sr.js b/public/build/ckeditor/plugins/uicolor/lang/sr.js deleted file mode 100644 index ec4959ab..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sr",{title:"УИ одређивач боје",options:"Подешавања боје",highlight:"Истакни",selected:"Одабрана боја",predefined:"Унапред дефинисане боје",config:"Налепи овај текст и у config.js датотеку"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/sv.js b/public/build/ckeditor/plugins/uicolor/lang/sv.js deleted file mode 100644 index 0b4f11b7..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/sv.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","sv",{title:"UI Färgväljare",options:"Färgalternativ",highlight:"Markera",selected:"Vald färg",predefined:"Fördefinierade färguppsättningar",config:"Klistra in den här strängen i din config.js-fil"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/tr.js b/public/build/ckeditor/plugins/uicolor/lang/tr.js deleted file mode 100644 index 07f02328..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/tr.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","tr",{title:"UI Renk Seçici",options:"Renk Seçenekleri",highlight:"İşaretle",selected:"Seçilmiş Renk",predefined:"Önceden tanımlı renk seti",config:"Bu yazıyı config.js dosyasının içine yapıştırın"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/tt.js b/public/build/ckeditor/plugins/uicolor/lang/tt.js deleted file mode 100644 index 36ce5dc9..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/tt.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","tt",{title:"Интерфейс төсләрен сайлау",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Баштан билгеләнгән төсләр җыелмасы",config:"Бу юлны config.js файлына языгыз"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/ug.js b/public/build/ckeditor/plugins/uicolor/lang/ug.js deleted file mode 100644 index a0ad964b..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/ug.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","ug",{title:"ئىشلەتكۈچى ئارايۈزى رەڭ تاللىغۇچ",options:"رەڭ تاللانمىسى",highlight:"يورۇت",selected:"تاللانغان رەڭ",predefined:"ئالدىن بەلگىلەنگەن رەڭلەر",config:"بۇ ھەرپ تىزىقىنى config.js ھۆججەتكە چاپلايدۇ"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/uk.js b/public/build/ckeditor/plugins/uicolor/lang/uk.js deleted file mode 100644 index 65eddb75..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/uk.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","uk",{title:"Color Picker Інтерфейс",options:"Параметри кольору",highlight:"Попередній перегляд",selected:"Обраний колір",predefined:"Стандартний набір кольорів",config:"Вставте цей рядок у файл config.js"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/vi.js b/public/build/ckeditor/plugins/uicolor/lang/vi.js deleted file mode 100644 index f68b003f..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/vi.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","vi",{title:"Giao diện người dùng Color Picker",options:"Color Options",highlight:"Highlight",selected:"Selected Color",predefined:"Tập màu định nghĩa sẵn",config:"Dán chuỗi này vào tập tin config.js của bạn"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/zh-cn.js b/public/build/ckeditor/plugins/uicolor/lang/zh-cn.js deleted file mode 100644 index 282c833a..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/zh-cn.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","zh-cn",{title:"用户界面颜色选择器",options:"颜色选项",highlight:"高亮",selected:"已选颜色",predefined:"预定义颜色集",config:"粘贴此字符串到您的 config.js 文件"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/lang/zh.js b/public/build/ckeditor/plugins/uicolor/lang/zh.js deleted file mode 100644 index d4376e59..00000000 --- a/public/build/ckeditor/plugins/uicolor/lang/zh.js +++ /dev/null @@ -1,5 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.setLang("uicolor","zh",{title:"UI 色彩選擇器",options:"色彩選項",highlight:"突顯",selected:"選定的色彩",predefined:"設定預先定義的色彩",config:"請將此段字串複製到您的 config.js 檔案中。"}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uicolor/plugin.js b/public/build/ckeditor/plugins/uicolor/plugin.js deleted file mode 100644 index dfcd73ca..00000000 --- a/public/build/ckeditor/plugins/uicolor/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.plugins.add("uicolor",{requires:"dialog",lang:"af,ar,az,bg,ca,cs,cy,da,de,de-ch,el,en,en-au,en-gb,eo,es,es-mx,et,eu,fa,fi,fr,fr-ca,gl,he,hr,hu,id,it,ja,km,ko,ku,lv,mk,nb,nl,no,oc,pl,pt,pt-br,ro,ru,si,sk,sl,sq,sr,sr-latn,sv,tr,tt,ug,uk,vi,zh,zh-cn",icons:"uicolor",hidpi:!0,init:function(a){var b=new CKEDITOR.dialogCommand("uicolor");b.editorFocus=!1;CKEDITOR.dialog.add("uicolor",this.path+"dialogs/uicolor.js");a.addCommand("uicolor",b);a.ui.addButton&&a.ui.addButton("UIColor",{label:a.lang.uicolor.title, -command:"uicolor",toolbar:"tools,1"})}}); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/uploadfile/plugin.js b/public/build/ckeditor/plugins/uploadfile/plugin.js deleted file mode 100644 index bf2a429d..00000000 --- a/public/build/ckeditor/plugins/uploadfile/plugin.js +++ /dev/null @@ -1,6 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -(function(){CKEDITOR.plugins.add("uploadfile",{requires:"uploadwidget,link",init:function(a){if(this.isSupportedEnvironment()){var b=CKEDITOR.fileTools;b.getUploadUrl(a.config)?b.addUploadWidget(a,"uploadfile",{uploadUrl:b.getUploadUrl(a.config),fileToElement:function(c){var a=new CKEDITOR.dom.element("a");a.setText(c.name);a.setAttribute("href","#");return a},onUploaded:function(a){this.replaceWith('\x3ca href\x3d"'+a.url+'" target\x3d"_blank"\x3e'+a.fileName+"\x3c/a\x3e")}}):CKEDITOR.error("uploadfile-config")}}, -isSupportedEnvironment:function(){return CKEDITOR.plugins.clipboard.isFileApiSupported}})})(); \ No newline at end of file diff --git a/public/build/ckeditor/plugins/widget/images/handle.png b/public/build/ckeditor/plugins/widget/images/handle.png deleted file mode 100644 index ba8cda5b..00000000 Binary files a/public/build/ckeditor/plugins/widget/images/handle.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/dialog.css b/public/build/ckeditor/skins/kama/dialog.css deleted file mode 100644 index 7fe51358..00000000 --- a/public/build/ckeditor/skins/kama/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;border-radius:5px}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;overflow:auto;padding:17px 10px 5px 10px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cke_rtl .cke_dialog_footer{text-align:left}.cke_dialog_footer .cke_resizer{margin-top:24px}.cke_dialog_footer .cke_resizer_ltr{border-right-color:#ccc}.cke_dialog_footer .cke_resizer_rtl{border-left-color:#ccc}.cke_hc .cke_dialog_footer .cke_resizer{margin-bottom:1px}.cke_hc .cke_dialog_footer .cke_resizer_ltr{margin-right:1px}.cke_hc .cke_dialog_footer .cke_resizer_rtl{margin-left:1px}.cke_dialog_tabs{height:23px;display:inline-block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer}a.cke_dialog_tab:hover{background-color:#f1f1e3}.cke_hc a.cke_dialog_tab:hover{padding:2px 6px!important;border-width:3px}a.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default}.cke_hc a.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px}a.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px}.cke_dialog_close_button span{display:none}.cke_dialog_close_button:hover{background-position:0 -1045px}.cke_ltr .cke_dialog_close_button{right:10px}.cke_rtl .cke_dialog_close_button{left:10px}.cke_dialog_close_button{top:7px}div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{background-color:white;border:0;padding:0;width:100%;height:14px}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{background-color:white;border:1px solid #a0a0a0;padding:1px 0}textarea.cke_dialog_ui_input_textarea{background-color:white;border:0;padding:0;width:100%;overflow:auto;resize:none}div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0}a.cke_dialog_ui_button{border-collapse:separate;cursor:default;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;text-align:center;display:inline-block}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{width:60px;padding:5px 20px 5px;display:inline-block}a.cke_dialog_ui_button_ok{background-position:0 -1144px}a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1216px}.cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1216px}a.cke_dialog_ui_button_cancel{background-position:0 -1105px}a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1242px}.cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1242px}span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px}a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1180px}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border-width:2px}.cke_dialog_footer_buttons{display:inline-table;margin:6px 12px 0 12px;width:auto;position:relative}.cke_dialog_footer_buttons span.cke_dialog_ui_button{text-align:center}select.cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_dialog .cke_dark_background{background-color:#eaead1}.cke_dialog .cke_light_background{background-color:#ffffbe}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_tabs,.cke_hc .cke_dialog_contents,.cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid}.cke_hc .cke_dialog_title{border-top:1px solid}.cke_hc .cke_dialog_footer{border-bottom:1px solid}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}.cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit}.cke_hc a.cke_btn_locked,.cke_hc a.cke_btn_unlocked,.cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px}.cke_rtl.cke_hc a.cke_btn_locked,.cke_rtl.cke_hc a.cke_btn_unlocked,.cke_rtl.cke_hc a.cke_btn_reset{float:right}.cke_hc a.cke_btn_locked .cke_icon{display:inline}a.cke_smile img{border:2px solid #eaead1}a.cke_smile:focus img,a.cke_smile:active img,a.cke_smile:hover img{border-color:#c7c78f}.cke_hc .cke_dialog_tabs a,.cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white}.cke_hc .ImagePreviewBox{width:260px}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_dialog_ui_input_select:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/dialog_ie.css b/public/build/ckeditor/skins/kama/dialog_ie.css deleted file mode 100644 index 8167bd84..00000000 --- a/public/build/ckeditor/skins/kama/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;border-radius:5px}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;overflow:auto;padding:17px 10px 5px 10px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cke_rtl .cke_dialog_footer{text-align:left}.cke_dialog_footer .cke_resizer{margin-top:24px}.cke_dialog_footer .cke_resizer_ltr{border-right-color:#ccc}.cke_dialog_footer .cke_resizer_rtl{border-left-color:#ccc}.cke_hc .cke_dialog_footer .cke_resizer{margin-bottom:1px}.cke_hc .cke_dialog_footer .cke_resizer_ltr{margin-right:1px}.cke_hc .cke_dialog_footer .cke_resizer_rtl{margin-left:1px}.cke_dialog_tabs{height:23px;display:inline-block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer}a.cke_dialog_tab:hover{background-color:#f1f1e3}.cke_hc a.cke_dialog_tab:hover{padding:2px 6px!important;border-width:3px}a.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default}.cke_hc a.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px}a.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px}.cke_dialog_close_button span{display:none}.cke_dialog_close_button:hover{background-position:0 -1045px}.cke_ltr .cke_dialog_close_button{right:10px}.cke_rtl .cke_dialog_close_button{left:10px}.cke_dialog_close_button{top:7px}div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{background-color:white;border:0;padding:0;width:100%;height:14px}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{background-color:white;border:1px solid #a0a0a0;padding:1px 0}textarea.cke_dialog_ui_input_textarea{background-color:white;border:0;padding:0;width:100%;overflow:auto;resize:none}div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0}a.cke_dialog_ui_button{border-collapse:separate;cursor:default;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;text-align:center;display:inline-block}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{width:60px;padding:5px 20px 5px;display:inline-block}a.cke_dialog_ui_button_ok{background-position:0 -1144px}a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1216px}.cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1216px}a.cke_dialog_ui_button_cancel{background-position:0 -1105px}a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1242px}.cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1242px}span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px}a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1180px}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border-width:2px}.cke_dialog_footer_buttons{display:inline-table;margin:6px 12px 0 12px;width:auto;position:relative}.cke_dialog_footer_buttons span.cke_dialog_ui_button{text-align:center}select.cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_dialog .cke_dark_background{background-color:#eaead1}.cke_dialog .cke_light_background{background-color:#ffffbe}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_tabs,.cke_hc .cke_dialog_contents,.cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid}.cke_hc .cke_dialog_title{border-top:1px solid}.cke_hc .cke_dialog_footer{border-bottom:1px solid}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}.cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit}.cke_hc a.cke_btn_locked,.cke_hc a.cke_btn_unlocked,.cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px}.cke_rtl.cke_hc a.cke_btn_locked,.cke_rtl.cke_hc a.cke_btn_unlocked,.cke_rtl.cke_hc a.cke_btn_reset{float:right}.cke_hc a.cke_btn_locked .cke_icon{display:inline}a.cke_smile img{border:2px solid #eaead1}a.cke_smile:focus img,a.cke_smile:active img,a.cke_smile:hover img{border-color:#c7c78f}.cke_hc .cke_dialog_tabs a,.cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white}.cke_hc .ImagePreviewBox{width:260px}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_dialog_ui_input_select:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/dialog_ie7.css b/public/build/ckeditor/skins/kama/dialog_ie7.css deleted file mode 100644 index 7f91ad55..00000000 --- a/public/build/ckeditor/skins/kama/dialog_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;border-radius:5px}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;overflow:auto;padding:17px 10px 5px 10px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cke_rtl .cke_dialog_footer{text-align:left}.cke_dialog_footer .cke_resizer{margin-top:24px}.cke_dialog_footer .cke_resizer_ltr{border-right-color:#ccc}.cke_dialog_footer .cke_resizer_rtl{border-left-color:#ccc}.cke_hc .cke_dialog_footer .cke_resizer{margin-bottom:1px}.cke_hc .cke_dialog_footer .cke_resizer_ltr{margin-right:1px}.cke_hc .cke_dialog_footer .cke_resizer_rtl{margin-left:1px}.cke_dialog_tabs{height:23px;display:inline-block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer}a.cke_dialog_tab:hover{background-color:#f1f1e3}.cke_hc a.cke_dialog_tab:hover{padding:2px 6px!important;border-width:3px}a.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default}.cke_hc a.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px}a.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px}.cke_dialog_close_button span{display:none}.cke_dialog_close_button:hover{background-position:0 -1045px}.cke_ltr .cke_dialog_close_button{right:10px}.cke_rtl .cke_dialog_close_button{left:10px}.cke_dialog_close_button{top:7px}div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{background-color:white;border:0;padding:0;width:100%;height:14px}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{background-color:white;border:1px solid #a0a0a0;padding:1px 0}textarea.cke_dialog_ui_input_textarea{background-color:white;border:0;padding:0;width:100%;overflow:auto;resize:none}div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0}a.cke_dialog_ui_button{border-collapse:separate;cursor:default;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;text-align:center;display:inline-block}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{width:60px;padding:5px 20px 5px;display:inline-block}a.cke_dialog_ui_button_ok{background-position:0 -1144px}a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1216px}.cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1216px}a.cke_dialog_ui_button_cancel{background-position:0 -1105px}a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1242px}.cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1242px}span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px}a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1180px}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border-width:2px}.cke_dialog_footer_buttons{display:inline-table;margin:6px 12px 0 12px;width:auto;position:relative}.cke_dialog_footer_buttons span.cke_dialog_ui_button{text-align:center}select.cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_dialog .cke_dark_background{background-color:#eaead1}.cke_dialog .cke_light_background{background-color:#ffffbe}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_tabs,.cke_hc .cke_dialog_contents,.cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid}.cke_hc .cke_dialog_title{border-top:1px solid}.cke_hc .cke_dialog_footer{border-bottom:1px solid}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}.cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit}.cke_hc a.cke_btn_locked,.cke_hc a.cke_btn_unlocked,.cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px}.cke_rtl.cke_hc a.cke_btn_locked,.cke_rtl.cke_hc a.cke_btn_unlocked,.cke_rtl.cke_hc a.cke_btn_reset{float:right}.cke_hc a.cke_btn_locked .cke_icon{display:inline}a.cke_smile img{border:2px solid #eaead1}a.cke_smile:focus img,a.cke_smile:active img,a.cke_smile:hover img{border-color:#c7c78f}.cke_hc .cke_dialog_tabs a,.cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white}.cke_hc .ImagePreviewBox{width:260px}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_dialog_ui_input_select:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_dialog_title{margin-bottom:22px}.cke_single_page .cke_dialog_title{margin-bottom:10px}.cke_single_page .cke_dialog_footer{margin-top:22px}.cke_dialog_footer .cke_resizer{margin-top:27px}.cke_dialog_tabs{top:33px}.cke_dialog_footer_buttons{position:static;margin-top:7px;margin-right:24px}.cke_rtl .cke_dialog_footer_buttons{margin-right:0;margin-left:24px}.cke_rtl .cke_dialog_close_button{margin-top:0;position:absolute;left:10px;top:5px}span.cke_dialog_ui_buttonm{margin:2px 0}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{position:absolute}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{height:14px;position:relative} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/dialog_ie8.css b/public/build/ckeditor/skins/kama/dialog_ie8.css deleted file mode 100644 index c7a5f1e5..00000000 --- a/public/build/ckeditor/skins/kama/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;border-radius:5px}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;overflow:auto;padding:17px 10px 5px 10px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cke_rtl .cke_dialog_footer{text-align:left}.cke_dialog_footer .cke_resizer{margin-top:24px}.cke_dialog_footer .cke_resizer_ltr{border-right-color:#ccc}.cke_dialog_footer .cke_resizer_rtl{border-left-color:#ccc}.cke_hc .cke_dialog_footer .cke_resizer{margin-bottom:1px}.cke_hc .cke_dialog_footer .cke_resizer_ltr{margin-right:1px}.cke_hc .cke_dialog_footer .cke_resizer_rtl{margin-left:1px}.cke_dialog_tabs{height:23px;display:inline-block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer}a.cke_dialog_tab:hover{background-color:#f1f1e3}.cke_hc a.cke_dialog_tab:hover{padding:2px 6px!important;border-width:3px}a.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default}.cke_hc a.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px}a.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px}.cke_dialog_close_button span{display:none}.cke_dialog_close_button:hover{background-position:0 -1045px}.cke_ltr .cke_dialog_close_button{right:10px}.cke_rtl .cke_dialog_close_button{left:10px}.cke_dialog_close_button{top:7px}div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{background-color:white;border:0;padding:0;width:100%;height:14px}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{background-color:white;border:1px solid #a0a0a0;padding:1px 0}textarea.cke_dialog_ui_input_textarea{background-color:white;border:0;padding:0;width:100%;overflow:auto;resize:none}div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0}a.cke_dialog_ui_button{border-collapse:separate;cursor:default;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;text-align:center;display:inline-block}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{width:60px;padding:5px 20px 5px;display:inline-block}a.cke_dialog_ui_button_ok{background-position:0 -1144px}a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1216px}.cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1216px}a.cke_dialog_ui_button_cancel{background-position:0 -1105px}a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1242px}.cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1242px}span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px}a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1180px}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border-width:2px}.cke_dialog_footer_buttons{display:inline-table;margin:6px 12px 0 12px;width:auto;position:relative}.cke_dialog_footer_buttons span.cke_dialog_ui_button{text-align:center}select.cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_dialog .cke_dark_background{background-color:#eaead1}.cke_dialog .cke_light_background{background-color:#ffffbe}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_tabs,.cke_hc .cke_dialog_contents,.cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid}.cke_hc .cke_dialog_title{border-top:1px solid}.cke_hc .cke_dialog_footer{border-bottom:1px solid}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}.cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit}.cke_hc a.cke_btn_locked,.cke_hc a.cke_btn_unlocked,.cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px}.cke_rtl.cke_hc a.cke_btn_locked,.cke_rtl.cke_hc a.cke_btn_unlocked,.cke_rtl.cke_hc a.cke_btn_reset{float:right}.cke_hc a.cke_btn_locked .cke_icon{display:inline}a.cke_smile img{border:2px solid #eaead1}a.cke_smile:focus img,a.cke_smile:active img,a.cke_smile:hover img{border-color:#c7c78f}.cke_hc .cke_dialog_tabs a,.cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white}.cke_hc .ImagePreviewBox{width:260px}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_dialog_ui_input_select:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_rtl .cke_dialog_footer_buttons td{padding-left:2px}.cke_rtl .cke_dialog_close_button{left:8px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/dialog_iequirks.css b/public/build/ckeditor/skins/kama/dialog_iequirks.css deleted file mode 100644 index e3625b51..00000000 --- a/public/build/ckeditor/skins/kama/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;border:solid 1px #ddd;padding:5px;background-color:#fff;border-radius:5px}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:14px;padding:3px 3px 8px;cursor:move;position:relative;border-bottom:1px solid #eee}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;overflow:auto;padding:17px 10px 5px 10px;border-top-left-radius:5px;border-top-right-radius:5px;margin-top:22px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;background-color:#ebebeb;border:solid 1px #fff;border-bottom:0;border-bottom-left-radius:5px;border-bottom-right-radius:5px}.cke_rtl .cke_dialog_footer{text-align:left}.cke_dialog_footer .cke_resizer{margin-top:24px}.cke_dialog_footer .cke_resizer_ltr{border-right-color:#ccc}.cke_dialog_footer .cke_resizer_rtl{border-left-color:#ccc}.cke_hc .cke_dialog_footer .cke_resizer{margin-bottom:1px}.cke_hc .cke_dialog_footer .cke_resizer_ltr{margin-right:1px}.cke_hc .cke_dialog_footer .cke_resizer_rtl{margin-left:1px}.cke_dialog_tabs{height:23px;display:inline-block;margin-left:10px;margin-right:10px;margin-top:11px;position:absolute;z-index:2}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{background-image:url(images/sprites.png);background-repeat:repeat-x;background-position:0 -1323px;background-color:#ebebeb;height:14px;padding:4px 8px;display:inline-block;cursor:pointer}a.cke_dialog_tab:hover{background-color:#f1f1e3}.cke_hc a.cke_dialog_tab:hover{padding:2px 6px!important;border-width:3px}a.cke_dialog_tab_selected{background-position:0 -1279px;cursor:default}.cke_hc a.cke_dialog_tab_selected{padding:2px 6px!important;border-width:3px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:10px}a.cke_dialog_close_button{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:5px}.cke_dialog_close_button span{display:none}.cke_dialog_close_button:hover{background-position:0 -1045px}.cke_ltr .cke_dialog_close_button{right:10px}.cke_rtl .cke_dialog_close_button{left:10px}.cke_dialog_close_button{top:7px}div.cke_disabled .cke_dialog_ui_labeled_content *{background-color:#a0a0a0;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel{background-color:white;border:0;padding:0;width:100%;height:14px}div.cke_dialog_ui_input_text,div.cke_dialog_ui_input_password,div.cke_dialog_ui_input_tel{background-color:white;border:1px solid #a0a0a0;padding:1px 0}textarea.cke_dialog_ui_input_textarea{background-color:white;border:0;padding:0;width:100%;overflow:auto;resize:none}div.cke_dialog_ui_input_textarea{background-color:white;border:1px solid #a0a0a0;padding:1px 0}a.cke_dialog_ui_button{border-collapse:separate;cursor:default;border-radius:5px;background:transparent url(images/sprites.png) repeat-x scroll 0 -1069px;text-align:center;display:inline-block}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{width:60px;padding:5px 20px 5px;display:inline-block}a.cke_dialog_ui_button_ok{background-position:0 -1144px}a.cke_dialog_ui_button_ok span{background:transparent url(images/sprites.png) no-repeat scroll right -1216px}.cke_rtl a.cke_dialog_ui_button_ok span{background-position:left -1216px}a.cke_dialog_ui_button_cancel{background-position:0 -1105px}a.cke_dialog_ui_button_cancel span{background:transparent url(images/sprites.png) no-repeat scroll right -1242px}.cke_rtl a.cke_dialog_ui_button_cancel span{background-position:left -1242px}span.cke_dialog_ui_button{padding:2px 10px;text-align:center;color:#222;display:inline-block;cursor:default;min-width:60px}a.cke_dialog_ui_button span.cke_disabled{border:#898980 1px solid;color:#5e5e55;background-color:#c5c5b3}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1180px}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border-width:2px}.cke_dialog_footer_buttons{display:inline-table;margin:6px 12px 0 12px;width:auto;position:relative}.cke_dialog_footer_buttons span.cke_dialog_ui_button{text-align:center}select.cke_dialog_ui_input_select{border:1px solid #a0a0a0;background-color:white}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_dialog .cke_dark_background{background-color:#eaead1}.cke_dialog .cke_light_background{background-color:#ffffbe}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background-position:0 -32px;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:1px none;font-size:1px}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;background-position:0 0;background-image:url(images/mini.gif);width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_unlocked{background-position:0 -16px;background-image:url(images/mini.gif)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity=90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid black}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_tabs,.cke_hc .cke_dialog_contents,.cke_hc .cke_dialog_footer{border-left:1px solid;border-right:1px solid}.cke_hc .cke_dialog_title{border-top:1px solid}.cke_hc .cke_dialog_footer{border-bottom:1px solid}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}.cke_hc .cke_dialog_body .cke_label{display:inline;cursor:inherit}.cke_hc a.cke_btn_locked,.cke_hc a.cke_btn_unlocked,.cke_hc a.cke_btn_reset{border-style:solid;float:left;width:auto;height:auto;padding:0 2px}.cke_rtl.cke_hc a.cke_btn_locked,.cke_rtl.cke_hc a.cke_btn_unlocked,.cke_rtl.cke_hc a.cke_btn_reset{float:right}.cke_hc a.cke_btn_locked .cke_icon{display:inline}a.cke_smile img{border:2px solid #eaead1}a.cke_smile:focus img,a.cke_smile:active img,a.cke_smile:hover img{border-color:#c7c78f}.cke_hc .cke_dialog_tabs a,.cke_hc .cke_dialog_footer a{opacity:1.0;filter:alpha(opacity=100);border:1px solid white}.cke_hc .ImagePreviewBox{width:260px}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_dialog_ui_input_select:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity=0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_dialog_title{margin-bottom:22px}.cke_dialog_page_contents{position:absolute}.cke_single_page .cke_dialog_title{margin-bottom:10px}.cke_dialog_close_button{top:27px;background-image:url(images/sprites_ie6.png)}.cke_dialog_footer .cke_resizer{margin-top:27px}.cke_dialog_tabs{display:block;top:33px;margin-top:33px}.cke_rtl .cke_dialog_ui_labeled_content{_width:95%}a.cke_dialog_ui_button{background:0;padding:0}a.cke_dialog_ui_button span{width:70px;padding:5px 15px;text-align:center;color:#3b3b1f;background:#53d9f0 none;display:inline-block;cursor:default}a.cke_dialog_ui_button_ok span{background-image:none;background-color:#b8e834;margin-right:0}a.cke_dialog_ui_button_cancel span{background-image:none;background-color:#f65d20;margin-right:0}a.cke_dialog_ui_button:hover span,a.cke_dialog_ui_button:focus span,a.cke_dialog_ui_button:active span{background-image:none;background:#f7a922}div.cke_dialog_ui_input_password,textarea.cke_dialog_ui_input_textarea{width:99%}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid red!important;filter:chroma(color=red)}.cke_dialog_ui_focused,.cke_btn_over{border:1px dotted #696969!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/editor.css b/public/build/ckeditor/skins/kama/editor.css deleted file mode 100644 index a33f935f..00000000 --- a/public/build/ckeditor/skins/kama/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border-radius:5px;border:1px solid #d3d3d3;padding:5px}.cke_hc.cke_chrome{padding:2px}.cke_inner{display:block;-webkit-touch-callout:none;border-radius:5px;background:#d3d3d3 url(images/sprites.png) repeat-x 0 -1950px;background:linear-gradient(to bottom,#fff -15px,#d3d3d3 40px);padding:5px}.cke_float{background:#fff}.cke_float .cke_inner{padding-bottom:0}.cke_hc .cke_contents{border:1px solid black}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:12px 12px 0 12px;border-color:transparent #efefef transparent transparent;border-style:dashed solid dashed dashed;margin:10px 0 0;font-size:0;float:right;vertical-align:bottom;cursor:se-resize;opacity:.8}.cke_resizer_ltr{margin-left:-12px}.cke_resizer_rtl{float:left;border-color:transparent transparent transparent #efefef;border-style:dashed dashed dashed solid;margin-right:-12px;cursor:sw-resize}.cke_hc .cke_resizer{width:10px;height:10px;border:1px solid #fff;margin-left:0}.cke_hc .cke_resizer_rtl{margin-right:0}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;border-radius:3px}.cke_menu_panel{padding:2px;margin:0}.cke_combopanel{border:1px solid #8f8f73;border-top-left-radius:0;width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-family:Arial,Verdana,sans-serif;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border-radius:5px;float:left;margin:0 6px 5px 0;padding:2px;background:url(images/sprites.png) repeat-x 0 -500px;background:linear-gradient(to bottom,#fff,#d3d3d3 100px)}.cke_hc .cke_toolgroup{padding-right:0;margin-right:4px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}.cke_rtl.cke_hc .cke_toolgroup{padding-left:0;margin-left:4px}a.cke_button{display:inline-block;height:18px;padding:2px 4px;border-radius:3px;outline:0;cursor:default;float:left;border:0}a.cke_button_expandable{padding:2px 3px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_rtl.cke_hc .cke_button{margin:-2px -2px 0 4px}a.cke_button_on{background-color:#a3d7ff}.cke_hc .cke_button_on{border-width:3px;padding:1px 3px}a.cke_button_off{opacity:.7}a.cke_button_disabled{opacity:.3}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-color:#86caff}.cke_hc a.cke_button:hover{background:black}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background-color:#dff1ff;opacity:1}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;opacity:.7}a.cke_button_on:hover{background-color:#a3d7ff}a.cke_button_off:active{background-color:#dff1ff;opacity:1}a.cke_button_on:active{background-color:#86caff}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:16px;vertical-align:middle;float:left;cursor:default}.cke_hc .cke_button_label{padding:0;display:inline-block}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_button_arrow{display:inline-block;margin:7px 0 0 3px;width:0;height:0;border-width:3px;border-color:#2f2f2f transparent transparent transparent;border-style:solid dashed dashed dashed;cursor:default;vertical-align:middle}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:0 -2px 0 3px;width:auto;border:0}.cke_rtl.cke_hc .cke_button_arrow{margin:0 3px 0 -2px}.cke_toolbar_separator{float:left;border-left:solid 1px #d3d3d3;margin:3px 2px 0;height:16px}.cke_rtl .cke_toolbar_separator{border-right:solid 1px #d3d3d3;border-left:0;float:right}.cke_hc .cke_toolbar_separator{margin-left:0;width:3px}.cke_rtl.cke_hc .cke_toolbar_separator{margin:3px 0 0 2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;border:1px outset #d3d3d3;margin:11px 0 0;font-size:0;cursor:default;text-align:center}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_hc .cke_toolbox_collapser{border-width:1px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;border-width:3px;border-style:solid;border-color:transparent transparent #2f2f2f}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin:4px 2px 0 0;border-color:#2f2f2f transparent transparent}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d3d3d3;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#9d9d9d}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #ccc;background-color:#e9f5ff}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3}.cke_menubutton_on:hover,.cke_menubutton_on:focus,.cke_menubutton_on:active{border-color:#316ac5;background-color:#dff1ff}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:2px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/sprites.png);background-position:0 -1400px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-image:url(images/sprites.png);background-position:7px -1380px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity = 70);opacity:.7}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{display:inline-block;border-radius:5px;background:url(images/sprites.png) 0 -100px repeat-x;float:left;padding:2px 4px 2px 6px;height:22px;margin:0 5px 5px 0;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:hover,.cke_combo_off .cke_combo_button:focus,.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover{background:url(images/sprites.png) 0 -100px repeat-x;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc .cke_combo_button{border:1px solid black;padding:1px 3px 1px 3px}.cke_hc .cke_rtl .cke_combo_button{border:1px solid black}.cke_combo_text{line-height:24px;text-overflow:ellipsis;overflow:hidden;color:#666;float:left;cursor:default;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right}.cke_combo_inlinelabel{font-style:italic;opacity:.70}.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:focus .cke_combo_inlinelabel{opacity:1}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel{opacity:.70}.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel{opacity:1}}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 3px;width:5px}.cke_combo_arrow{margin:9px 0 0;float:left;opacity:.70;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #2f2f2f}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:4px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{margin-top:5px;float:left}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;text-decoration:none;outline:0;border:0}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#efefef;opacity:.7;color:#000}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:#222;border-radius:5px;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#96ca0a;border:1px solid #96ca0a}.cke_notification_warning{background:#fd7c44;border:1px solid #fd7c44}.cke_notification_info{background:#54d3ec;border:1px solid #01b2d2}.cke_notification_info span.cke_notification_progress{background-color:#01b2d2;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:2px;right:3px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2496px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2544px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2592px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2640px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2688px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2736px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2784px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2832px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2880px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2928px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2976px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3024px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3072px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3120px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3168px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3216px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3264px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3312px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3360px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3408px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3456px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3504px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3552px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3600px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3648px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3696px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3744px!important}.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3792px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3840px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3888px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3936px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3984px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/editor_ie.css b/public/build/ckeditor/skins/kama/editor_ie.css deleted file mode 100644 index 43abeea0..00000000 --- a/public/build/ckeditor/skins/kama/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border-radius:5px;border:1px solid #d3d3d3;padding:5px}.cke_hc.cke_chrome{padding:2px}.cke_inner{display:block;-webkit-touch-callout:none;border-radius:5px;background:#d3d3d3 url(images/sprites.png) repeat-x 0 -1950px;background:linear-gradient(to bottom,#fff -15px,#d3d3d3 40px);padding:5px}.cke_float{background:#fff}.cke_float .cke_inner{padding-bottom:0}.cke_hc .cke_contents{border:1px solid black}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:12px 12px 0 12px;border-color:transparent #efefef transparent transparent;border-style:dashed solid dashed dashed;margin:10px 0 0;font-size:0;float:right;vertical-align:bottom;cursor:se-resize;opacity:.8}.cke_resizer_ltr{margin-left:-12px}.cke_resizer_rtl{float:left;border-color:transparent transparent transparent #efefef;border-style:dashed dashed dashed solid;margin-right:-12px;cursor:sw-resize}.cke_hc .cke_resizer{width:10px;height:10px;border:1px solid #fff;margin-left:0}.cke_hc .cke_resizer_rtl{margin-right:0}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;border-radius:3px}.cke_menu_panel{padding:2px;margin:0}.cke_combopanel{border:1px solid #8f8f73;border-top-left-radius:0;width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-family:Arial,Verdana,sans-serif;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border-radius:5px;float:left;margin:0 6px 5px 0;padding:2px;background:url(images/sprites.png) repeat-x 0 -500px;background:linear-gradient(to bottom,#fff,#d3d3d3 100px)}.cke_hc .cke_toolgroup{padding-right:0;margin-right:4px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}.cke_rtl.cke_hc .cke_toolgroup{padding-left:0;margin-left:4px}a.cke_button{display:inline-block;height:18px;padding:2px 4px;border-radius:3px;outline:0;cursor:default;float:left;border:0}a.cke_button_expandable{padding:2px 3px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_rtl.cke_hc .cke_button{margin:-2px -2px 0 4px}a.cke_button_on{background-color:#a3d7ff}.cke_hc .cke_button_on{border-width:3px;padding:1px 3px}a.cke_button_off{opacity:.7}a.cke_button_disabled{opacity:.3}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-color:#86caff}.cke_hc a.cke_button:hover{background:black}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background-color:#dff1ff;opacity:1}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;opacity:.7}a.cke_button_on:hover{background-color:#a3d7ff}a.cke_button_off:active{background-color:#dff1ff;opacity:1}a.cke_button_on:active{background-color:#86caff}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:16px;vertical-align:middle;float:left;cursor:default}.cke_hc .cke_button_label{padding:0;display:inline-block}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_button_arrow{display:inline-block;margin:7px 0 0 3px;width:0;height:0;border-width:3px;border-color:#2f2f2f transparent transparent transparent;border-style:solid dashed dashed dashed;cursor:default;vertical-align:middle}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:0 -2px 0 3px;width:auto;border:0}.cke_rtl.cke_hc .cke_button_arrow{margin:0 3px 0 -2px}.cke_toolbar_separator{float:left;border-left:solid 1px #d3d3d3;margin:3px 2px 0;height:16px}.cke_rtl .cke_toolbar_separator{border-right:solid 1px #d3d3d3;border-left:0;float:right}.cke_hc .cke_toolbar_separator{margin-left:0;width:3px}.cke_rtl.cke_hc .cke_toolbar_separator{margin:3px 0 0 2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;border:1px outset #d3d3d3;margin:11px 0 0;font-size:0;cursor:default;text-align:center}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_hc .cke_toolbox_collapser{border-width:1px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;border-width:3px;border-style:solid;border-color:transparent transparent #2f2f2f}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin:4px 2px 0 0;border-color:#2f2f2f transparent transparent}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d3d3d3;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#9d9d9d}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #ccc;background-color:#e9f5ff}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3}.cke_menubutton_on:hover,.cke_menubutton_on:focus,.cke_menubutton_on:active{border-color:#316ac5;background-color:#dff1ff}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:2px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/sprites.png);background-position:0 -1400px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-image:url(images/sprites.png);background-position:7px -1380px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity = 70);opacity:.7}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{display:inline-block;border-radius:5px;background:url(images/sprites.png) 0 -100px repeat-x;float:left;padding:2px 4px 2px 6px;height:22px;margin:0 5px 5px 0;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:hover,.cke_combo_off .cke_combo_button:focus,.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover{background:url(images/sprites.png) 0 -100px repeat-x;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc .cke_combo_button{border:1px solid black;padding:1px 3px 1px 3px}.cke_hc .cke_rtl .cke_combo_button{border:1px solid black}.cke_combo_text{line-height:24px;text-overflow:ellipsis;overflow:hidden;color:#666;float:left;cursor:default;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right}.cke_combo_inlinelabel{font-style:italic;opacity:.70}.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:focus .cke_combo_inlinelabel{opacity:1}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel{opacity:.70}.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel{opacity:1}}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 3px;width:5px}.cke_combo_arrow{margin:9px 0 0;float:left;opacity:.70;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #2f2f2f}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:4px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{margin-top:5px;float:left}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;text-decoration:none;outline:0;border:0}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#efefef;opacity:.7;color:#000}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:#222;border-radius:5px;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#96ca0a;border:1px solid #96ca0a}.cke_notification_warning{background:#fd7c44;border:1px solid #fd7c44}.cke_notification_info{background:#54d3ec;border:1px solid #01b2d2}.cke_notification_info span.cke_notification_progress{background-color:#01b2d2;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:2px;right:3px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2496px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2544px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2592px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2640px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2688px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2736px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2784px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2832px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2880px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2928px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2976px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3024px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3072px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3120px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3168px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3216px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3264px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3312px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3360px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3408px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3456px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3504px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3552px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3600px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3648px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3696px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3744px!important}.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3792px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3840px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3888px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3936px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3984px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_button_off{filter:alpha(opacity = 70)}.cke_button_on{filter:alpha(opacity = 100)}.cke_button_disabled{filter:alpha(opacity = 30)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_hc .cke_button_arrow{margin-top:5px}.cke_combo_inlinelabel{filter:alpha(opacity = 70)}.cke_combo_button_off:hover .cke_combo_inlinelabel{filter:alpha(opacity = 100)}.cke_combo_button_disabled .cke_combo_inlinelabel,.cke_combo_button_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:2px outset #efefef}.cke_toolbox_collapser .cke_arrow{margin:0 1px 1px 1px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-left:2px}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{filter:alpha(opacity = 70)}.cke_resizer{filter:alpha(opacity = 80)}.cke_hc .cke_resizer{filter:none;font-size:28px}.cke_menuarrow{position:absolute;right:2px}.cke_rtl .cke_menuarrow{position:absolute;left:2px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first{padding-left:10px!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/editor_ie7.css b/public/build/ckeditor/skins/kama/editor_ie7.css deleted file mode 100644 index dce879e5..00000000 --- a/public/build/ckeditor/skins/kama/editor_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border-radius:5px;border:1px solid #d3d3d3;padding:5px}.cke_hc.cke_chrome{padding:2px}.cke_inner{display:block;-webkit-touch-callout:none;border-radius:5px;background:#d3d3d3 url(images/sprites.png) repeat-x 0 -1950px;background:linear-gradient(to bottom,#fff -15px,#d3d3d3 40px);padding:5px}.cke_float{background:#fff}.cke_float .cke_inner{padding-bottom:0}.cke_hc .cke_contents{border:1px solid black}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:12px 12px 0 12px;border-color:transparent #efefef transparent transparent;border-style:dashed solid dashed dashed;margin:10px 0 0;font-size:0;float:right;vertical-align:bottom;cursor:se-resize;opacity:.8}.cke_resizer_ltr{margin-left:-12px}.cke_resizer_rtl{float:left;border-color:transparent transparent transparent #efefef;border-style:dashed dashed dashed solid;margin-right:-12px;cursor:sw-resize}.cke_hc .cke_resizer{width:10px;height:10px;border:1px solid #fff;margin-left:0}.cke_hc .cke_resizer_rtl{margin-right:0}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;border-radius:3px}.cke_menu_panel{padding:2px;margin:0}.cke_combopanel{border:1px solid #8f8f73;border-top-left-radius:0;width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-family:Arial,Verdana,sans-serif;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border-radius:5px;float:left;margin:0 6px 5px 0;padding:2px;background:url(images/sprites.png) repeat-x 0 -500px;background:linear-gradient(to bottom,#fff,#d3d3d3 100px)}.cke_hc .cke_toolgroup{padding-right:0;margin-right:4px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}.cke_rtl.cke_hc .cke_toolgroup{padding-left:0;margin-left:4px}a.cke_button{display:inline-block;height:18px;padding:2px 4px;border-radius:3px;outline:0;cursor:default;float:left;border:0}a.cke_button_expandable{padding:2px 3px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_rtl.cke_hc .cke_button{margin:-2px -2px 0 4px}a.cke_button_on{background-color:#a3d7ff}.cke_hc .cke_button_on{border-width:3px;padding:1px 3px}a.cke_button_off{opacity:.7}a.cke_button_disabled{opacity:.3}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-color:#86caff}.cke_hc a.cke_button:hover{background:black}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background-color:#dff1ff;opacity:1}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;opacity:.7}a.cke_button_on:hover{background-color:#a3d7ff}a.cke_button_off:active{background-color:#dff1ff;opacity:1}a.cke_button_on:active{background-color:#86caff}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:16px;vertical-align:middle;float:left;cursor:default}.cke_hc .cke_button_label{padding:0;display:inline-block}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_button_arrow{display:inline-block;margin:7px 0 0 3px;width:0;height:0;border-width:3px;border-color:#2f2f2f transparent transparent transparent;border-style:solid dashed dashed dashed;cursor:default;vertical-align:middle}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:0 -2px 0 3px;width:auto;border:0}.cke_rtl.cke_hc .cke_button_arrow{margin:0 3px 0 -2px}.cke_toolbar_separator{float:left;border-left:solid 1px #d3d3d3;margin:3px 2px 0;height:16px}.cke_rtl .cke_toolbar_separator{border-right:solid 1px #d3d3d3;border-left:0;float:right}.cke_hc .cke_toolbar_separator{margin-left:0;width:3px}.cke_rtl.cke_hc .cke_toolbar_separator{margin:3px 0 0 2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;border:1px outset #d3d3d3;margin:11px 0 0;font-size:0;cursor:default;text-align:center}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_hc .cke_toolbox_collapser{border-width:1px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;border-width:3px;border-style:solid;border-color:transparent transparent #2f2f2f}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin:4px 2px 0 0;border-color:#2f2f2f transparent transparent}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d3d3d3;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#9d9d9d}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #ccc;background-color:#e9f5ff}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3}.cke_menubutton_on:hover,.cke_menubutton_on:focus,.cke_menubutton_on:active{border-color:#316ac5;background-color:#dff1ff}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:2px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/sprites.png);background-position:0 -1400px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-image:url(images/sprites.png);background-position:7px -1380px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity = 70);opacity:.7}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{display:inline-block;border-radius:5px;background:url(images/sprites.png) 0 -100px repeat-x;float:left;padding:2px 4px 2px 6px;height:22px;margin:0 5px 5px 0;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:hover,.cke_combo_off .cke_combo_button:focus,.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover{background:url(images/sprites.png) 0 -100px repeat-x;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc .cke_combo_button{border:1px solid black;padding:1px 3px 1px 3px}.cke_hc .cke_rtl .cke_combo_button{border:1px solid black}.cke_combo_text{line-height:24px;text-overflow:ellipsis;overflow:hidden;color:#666;float:left;cursor:default;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right}.cke_combo_inlinelabel{font-style:italic;opacity:.70}.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:focus .cke_combo_inlinelabel{opacity:1}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel{opacity:.70}.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel{opacity:1}}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 3px;width:5px}.cke_combo_arrow{margin:9px 0 0;float:left;opacity:.70;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #2f2f2f}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:4px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{margin-top:5px;float:left}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;text-decoration:none;outline:0;border:0}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#efefef;opacity:.7;color:#000}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:#222;border-radius:5px;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#96ca0a;border:1px solid #96ca0a}.cke_notification_warning{background:#fd7c44;border:1px solid #fd7c44}.cke_notification_info{background:#54d3ec;border:1px solid #01b2d2}.cke_notification_info span.cke_notification_progress{background-color:#01b2d2;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:2px;right:3px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2496px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2544px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2592px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2640px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2688px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2736px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2784px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2832px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2880px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2928px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2976px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3024px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3072px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3120px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3168px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3216px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3264px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3312px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3360px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3408px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3456px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3504px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3552px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3600px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3648px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3696px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3744px!important}.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3792px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3840px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3888px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3936px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3984px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_button_off{filter:alpha(opacity = 70)}.cke_button_on{filter:alpha(opacity = 100)}.cke_button_disabled{filter:alpha(opacity = 30)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_hc .cke_button_arrow{margin-top:5px}.cke_combo_inlinelabel{filter:alpha(opacity = 70)}.cke_combo_button_off:hover .cke_combo_inlinelabel{filter:alpha(opacity = 100)}.cke_combo_button_disabled .cke_combo_inlinelabel,.cke_combo_button_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:2px outset #efefef}.cke_toolbox_collapser .cke_arrow{margin:0 1px 1px 1px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-left:2px}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{filter:alpha(opacity = 70)}.cke_resizer{filter:alpha(opacity = 80)}.cke_hc .cke_resizer{filter:none;font-size:28px}.cke_menuarrow{position:absolute;right:2px}.cke_rtl .cke_menuarrow{position:absolute;left:2px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first{padding-left:10px!important}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:22px}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle;padding-bottom:8px}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:3px;height:5px;padding:0;position:absolute;right:8px;top:11px;background-position:0 -1411px}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -1390px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/editor_ie8.css b/public/build/ckeditor/skins/kama/editor_ie8.css deleted file mode 100644 index 91013abb..00000000 --- a/public/build/ckeditor/skins/kama/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border-radius:5px;border:1px solid #d3d3d3;padding:5px}.cke_hc.cke_chrome{padding:2px}.cke_inner{display:block;-webkit-touch-callout:none;border-radius:5px;background:#d3d3d3 url(images/sprites.png) repeat-x 0 -1950px;background:linear-gradient(to bottom,#fff -15px,#d3d3d3 40px);padding:5px}.cke_float{background:#fff}.cke_float .cke_inner{padding-bottom:0}.cke_hc .cke_contents{border:1px solid black}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:12px 12px 0 12px;border-color:transparent #efefef transparent transparent;border-style:dashed solid dashed dashed;margin:10px 0 0;font-size:0;float:right;vertical-align:bottom;cursor:se-resize;opacity:.8}.cke_resizer_ltr{margin-left:-12px}.cke_resizer_rtl{float:left;border-color:transparent transparent transparent #efefef;border-style:dashed dashed dashed solid;margin-right:-12px;cursor:sw-resize}.cke_hc .cke_resizer{width:10px;height:10px;border:1px solid #fff;margin-left:0}.cke_hc .cke_resizer_rtl{margin-right:0}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;border-radius:3px}.cke_menu_panel{padding:2px;margin:0}.cke_combopanel{border:1px solid #8f8f73;border-top-left-radius:0;width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-family:Arial,Verdana,sans-serif;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border-radius:5px;float:left;margin:0 6px 5px 0;padding:2px;background:url(images/sprites.png) repeat-x 0 -500px;background:linear-gradient(to bottom,#fff,#d3d3d3 100px)}.cke_hc .cke_toolgroup{padding-right:0;margin-right:4px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}.cke_rtl.cke_hc .cke_toolgroup{padding-left:0;margin-left:4px}a.cke_button{display:inline-block;height:18px;padding:2px 4px;border-radius:3px;outline:0;cursor:default;float:left;border:0}a.cke_button_expandable{padding:2px 3px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_rtl.cke_hc .cke_button{margin:-2px -2px 0 4px}a.cke_button_on{background-color:#a3d7ff}.cke_hc .cke_button_on{border-width:3px;padding:1px 3px}a.cke_button_off{opacity:.7}a.cke_button_disabled{opacity:.3}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-color:#86caff}.cke_hc a.cke_button:hover{background:black}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background-color:#dff1ff;opacity:1}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;opacity:.7}a.cke_button_on:hover{background-color:#a3d7ff}a.cke_button_off:active{background-color:#dff1ff;opacity:1}a.cke_button_on:active{background-color:#86caff}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:16px;vertical-align:middle;float:left;cursor:default}.cke_hc .cke_button_label{padding:0;display:inline-block}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_button_arrow{display:inline-block;margin:7px 0 0 3px;width:0;height:0;border-width:3px;border-color:#2f2f2f transparent transparent transparent;border-style:solid dashed dashed dashed;cursor:default;vertical-align:middle}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:0 -2px 0 3px;width:auto;border:0}.cke_rtl.cke_hc .cke_button_arrow{margin:0 3px 0 -2px}.cke_toolbar_separator{float:left;border-left:solid 1px #d3d3d3;margin:3px 2px 0;height:16px}.cke_rtl .cke_toolbar_separator{border-right:solid 1px #d3d3d3;border-left:0;float:right}.cke_hc .cke_toolbar_separator{margin-left:0;width:3px}.cke_rtl.cke_hc .cke_toolbar_separator{margin:3px 0 0 2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;border:1px outset #d3d3d3;margin:11px 0 0;font-size:0;cursor:default;text-align:center}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_hc .cke_toolbox_collapser{border-width:1px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;border-width:3px;border-style:solid;border-color:transparent transparent #2f2f2f}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin:4px 2px 0 0;border-color:#2f2f2f transparent transparent}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d3d3d3;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#9d9d9d}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #ccc;background-color:#e9f5ff}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3}.cke_menubutton_on:hover,.cke_menubutton_on:focus,.cke_menubutton_on:active{border-color:#316ac5;background-color:#dff1ff}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:2px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/sprites.png);background-position:0 -1400px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-image:url(images/sprites.png);background-position:7px -1380px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity = 70);opacity:.7}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{display:inline-block;border-radius:5px;background:url(images/sprites.png) 0 -100px repeat-x;float:left;padding:2px 4px 2px 6px;height:22px;margin:0 5px 5px 0;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:hover,.cke_combo_off .cke_combo_button:focus,.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover{background:url(images/sprites.png) 0 -100px repeat-x;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc .cke_combo_button{border:1px solid black;padding:1px 3px 1px 3px}.cke_hc .cke_rtl .cke_combo_button{border:1px solid black}.cke_combo_text{line-height:24px;text-overflow:ellipsis;overflow:hidden;color:#666;float:left;cursor:default;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right}.cke_combo_inlinelabel{font-style:italic;opacity:.70}.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:focus .cke_combo_inlinelabel{opacity:1}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel{opacity:.70}.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel{opacity:1}}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 3px;width:5px}.cke_combo_arrow{margin:9px 0 0;float:left;opacity:.70;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #2f2f2f}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:4px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{margin-top:5px;float:left}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;text-decoration:none;outline:0;border:0}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#efefef;opacity:.7;color:#000}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:#222;border-radius:5px;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#96ca0a;border:1px solid #96ca0a}.cke_notification_warning{background:#fd7c44;border:1px solid #fd7c44}.cke_notification_info{background:#54d3ec;border:1px solid #01b2d2}.cke_notification_info span.cke_notification_progress{background-color:#01b2d2;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:2px;right:3px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2496px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2544px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2592px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2640px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2688px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2736px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2784px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2832px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2880px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2928px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2976px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3024px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3072px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3120px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3168px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3216px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3264px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3312px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3360px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3408px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3456px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3504px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3552px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3600px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3648px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3696px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3744px!important}.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3792px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3840px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3888px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3936px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3984px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_button_off{filter:alpha(opacity = 70)}.cke_button_on{filter:alpha(opacity = 100)}.cke_button_disabled{filter:alpha(opacity = 30)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_hc .cke_button_arrow{margin-top:5px}.cke_combo_inlinelabel{filter:alpha(opacity = 70)}.cke_combo_button_off:hover .cke_combo_inlinelabel{filter:alpha(opacity = 100)}.cke_combo_button_disabled .cke_combo_inlinelabel,.cke_combo_button_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:2px outset #efefef}.cke_toolbox_collapser .cke_arrow{margin:0 1px 1px 1px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-left:2px}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{filter:alpha(opacity = 70)}.cke_resizer{filter:alpha(opacity = 80)}.cke_hc .cke_resizer{filter:none;font-size:28px}.cke_menuarrow{position:absolute;right:2px}.cke_rtl .cke_menuarrow{position:absolute;left:2px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first{padding-left:10px!important}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/editor_iequirks.css b/public/build/ckeditor/skins/kama/editor_iequirks.css deleted file mode 100644 index d6e7b5ba..00000000 --- a/public/build/ckeditor/skins/kama/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border-radius:5px;border:1px solid #d3d3d3;padding:5px}.cke_hc.cke_chrome{padding:2px}.cke_inner{display:block;-webkit-touch-callout:none;border-radius:5px;background:#d3d3d3 url(images/sprites.png) repeat-x 0 -1950px;background:linear-gradient(to bottom,#fff -15px,#d3d3d3 40px);padding:5px}.cke_float{background:#fff}.cke_float .cke_inner{padding-bottom:0}.cke_hc .cke_contents{border:1px solid black}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{white-space:normal}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:12px 12px 0 12px;border-color:transparent #efefef transparent transparent;border-style:dashed solid dashed dashed;margin:10px 0 0;font-size:0;float:right;vertical-align:bottom;cursor:se-resize;opacity:.8}.cke_resizer_ltr{margin-left:-12px}.cke_resizer_rtl{float:left;border-color:transparent transparent transparent #efefef;border-style:dashed dashed dashed solid;margin-right:-12px;cursor:sw-resize}.cke_hc .cke_resizer{width:10px;height:10px;border:1px solid #fff;margin-left:0}.cke_hc .cke_resizer_rtl{margin-right:0}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;border:1px solid #8f8f73;background-color:#fff;width:120px;height:100px;overflow:hidden;border-radius:3px}.cke_menu_panel{padding:2px;margin:0}.cke_combopanel{border:1px solid #8f8f73;border-top-left-radius:0;width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-family:Arial,Verdana,sans-serif;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0}.cke_panel_listItem a{padding:2px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #ccc;background-color:#e9f5ff}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#316ac5;background-color:#dff1ff}.cke_hc .cke_panel_listItem.cke_selected a,.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border-width:3px;padding:0}.cke_panel_grouptitle{font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif;font-weight:bold;white-space:nowrap;background-color:#dcdcdc;color:#000;margin:0;padding:3px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:3px;margin-bottom:3px}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#316ac5 1px solid;background-color:#dff1ff}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#316ac5 1px solid;background-color:#dff1ff}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border-radius:5px;float:left;margin:0 6px 5px 0;padding:2px;background:url(images/sprites.png) repeat-x 0 -500px;background:linear-gradient(to bottom,#fff,#d3d3d3 100px)}.cke_hc .cke_toolgroup{padding-right:0;margin-right:4px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}.cke_rtl.cke_hc .cke_toolgroup{padding-left:0;margin-left:4px}a.cke_button{display:inline-block;height:18px;padding:2px 4px;border-radius:3px;outline:0;cursor:default;float:left;border:0}a.cke_button_expandable{padding:2px 3px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}.cke_rtl.cke_hc .cke_button{margin:-2px -2px 0 4px}a.cke_button_on{background-color:#a3d7ff}.cke_hc .cke_button_on{border-width:3px;padding:1px 3px}a.cke_button_off{opacity:.7}a.cke_button_disabled{opacity:.3}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{background-color:#86caff}.cke_hc a.cke_button:hover{background:black}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background-color:#dff1ff;opacity:1}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;opacity:.7}a.cke_button_on:hover{background-color:#a3d7ff}a.cke_button_off:active{background-color:#dff1ff;opacity:1}a.cke_button_on:active{background-color:#86caff}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:16px;vertical-align:middle;float:left;cursor:default}.cke_hc .cke_button_label{padding:0;display:inline-block}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_button_arrow{display:inline-block;margin:7px 0 0 3px;width:0;height:0;border-width:3px;border-color:#2f2f2f transparent transparent transparent;border-style:solid dashed dashed dashed;cursor:default;vertical-align:middle}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:0 -2px 0 3px;width:auto;border:0}.cke_rtl.cke_hc .cke_button_arrow{margin:0 3px 0 -2px}.cke_toolbar_separator{float:left;border-left:solid 1px #d3d3d3;margin:3px 2px 0;height:16px}.cke_rtl .cke_toolbar_separator{border-right:solid 1px #d3d3d3;border-left:0;float:right}.cke_hc .cke_toolbar_separator{margin-left:0;width:3px}.cke_rtl.cke_hc .cke_toolbar_separator{margin:3px 0 0 2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;border:1px outset #d3d3d3;margin:11px 0 0;font-size:0;cursor:default;text-align:center}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_hc .cke_toolbox_collapser{border-width:1px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;border-width:3px;border-style:solid;border-color:transparent transparent #2f2f2f}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin:4px 2px 0 0;border-color:#2f2f2f transparent transparent}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d3d3d3;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#9d9d9d}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #ccc;background-color:#e9f5ff}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3}.cke_menubutton_on:hover,.cke_menubutton_on:focus,.cke_menubutton_on:active{border-color:#316ac5;background-color:#dff1ff}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:2px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/sprites.png);background-position:0 -1400px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-image:url(images/sprites.png);background-position:7px -1380px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px;filter:alpha(opacity = 70);opacity:.7}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{display:inline-block;border-radius:5px;background:url(images/sprites.png) 0 -100px repeat-x;float:left;padding:2px 4px 2px 6px;height:22px;margin:0 5px 5px 0;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:hover,.cke_combo_off .cke_combo_button:focus,.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover{background:url(images/sprites.png) 0 -100px repeat-x;background:linear-gradient(to top,#fff,#d3d3d3 100px)}.cke_combo_off .cke_combo_button:active{background:#dff1ff;outline:0}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc .cke_combo_button{border:1px solid black;padding:1px 3px 1px 3px}.cke_hc .cke_rtl .cke_combo_button{border:1px solid black}.cke_combo_text{line-height:24px;text-overflow:ellipsis;overflow:hidden;color:#666;float:left;cursor:default;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right}.cke_combo_inlinelabel{font-style:italic;opacity:.70}.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel,.cke_combo_off .cke_combo_button:focus .cke_combo_inlinelabel{opacity:1}@media screen and (hover:none){.cke_combo_off .cke_combo_button:hover .cke_combo_inlinelabel{opacity:.70}.cke_combo_off .cke_combo_button:active .cke_combo_inlinelabel{opacity:1}}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 3px;width:5px}.cke_combo_arrow{margin:9px 0 0;float:left;opacity:.70;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #2f2f2f}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:4px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{margin-top:5px;float:left}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:1px 4px 0;color:#60676a;cursor:default;text-decoration:none;outline:0;border:0}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#efefef;opacity:.7;color:#000}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:#222;border-radius:5px;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#96ca0a;border:1px solid #96ca0a}.cke_notification_warning{background:#fd7c44;border:1px solid #fd7c44}.cke_notification_info{background:#54d3ec;border:1px solid #01b2d2}.cke_notification_info span.cke_notification_progress{background-color:#01b2d2;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/sprites.png);background-repeat:no-repeat;background-position:0 -1022px;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:2px;right:3px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2496px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2544px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2592px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2640px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2688px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2736px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2784px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2832px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2880px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2928px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2976px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3024px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3072px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3120px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3168px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3216px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3264px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3312px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3360px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3408px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3456px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3504px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3552px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3600px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3648px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3696px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3744px!important}.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3792px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3840px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3888px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3936px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -3984px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_button_off{filter:alpha(opacity = 70)}.cke_button_on{filter:alpha(opacity = 100)}.cke_button_disabled{filter:alpha(opacity = 30)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_hc .cke_button_arrow{margin-top:5px}.cke_combo_inlinelabel{filter:alpha(opacity = 70)}.cke_combo_button_off:hover .cke_combo_inlinelabel{filter:alpha(opacity = 100)}.cke_combo_button_disabled .cke_combo_inlinelabel,.cke_combo_button_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:2px outset #efefef}.cke_toolbox_collapser .cke_arrow{margin:0 1px 1px 1px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-left:2px}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{filter:alpha(opacity = 70)}.cke_resizer{filter:alpha(opacity = 80)}.cke_hc .cke_resizer{filter:none;font-size:28px}.cke_menuarrow{position:absolute;right:2px}.cke_rtl .cke_menuarrow{position:absolute;left:2px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first{padding-left:10px!important}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *{float:none}.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon,.cke_rtl .cke_button_arrow{vertical-align:top;display:inline-block}.cke_toolgroup,.cke_combo_button,.cke_combo_arrow,.cke_button_arrow,.cke_toolbox_collapser,.cke_resizer{background-image:url(images/sprites_ie6.png)}.cke_toolgroup{background-color:#fff;display:inline-block;padding:2px}.cke_inner{padding-top:2px;background-color:#d3d3d3;background-image:none}.cke_toolbar{margin:2px 0}.cke_rtl .cke_toolbar{margin-bottom:-1px;margin-top:-1px}.cke_toolbar_separator{vertical-align:top}.cke_toolbox{width:100%;float:left;padding-bottom:4px}.cke_rtl .cke_toolbox{margin-top:2px;margin-bottom:-4px}.cke_combo_button{background-color:#fff}.cke_rtl .cke_combo_button{padding-right:6px;padding-left:0}.cke_combo_text{line-height:21px}.cke_ltr .cke_combo_open{margin-left:-3px}.cke_combo_arrow{background-position:2px -1467px;margin:2px 0 0;border:0;width:8px;height:13px}.cke_rtl .cke_button_arrow{background-position-x:0}.cke_toolbox_collapser .cke_arrow{display:block;visibility:hidden;font-size:0;color:transparent;border:0}.cke_button_arrow{background-position:2px -1467px;margin:0;border:0;width:8px;height:15px}.cke_ltr .cke_button_arrow{background-position:0 -1467px;margin-left:-3px}.cke_toolbox_collapser{background-position:3px -1367px}.cke_toolbox_collapser_min{background-position:4px -1387px;margin:2px 0 0}.cke_rtl .cke_toolbox_collapser_min{background-position:4px -1408px}.cke_resizer{background-position:0 -1427px;width:12px;height:12px;border:0;margin:9px 0 0;vertical-align:baseline}.cke_dialog_tabs{position:absolute;top:38px;left:0}.cke_dialog_body{clear:both;margin-top:20px}a.cke_dialog_ui_button{background:url(images/sprites.png) repeat_x 0 _ 1069px}a.cke_dialog_ui_button:hover,a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{background-position:0 -1179px}a.cke_dialog_ui_button_ok{background:url(images/sprites.png) repeat_x 0 _ 1144px}a.cke_dialog_ui_button_cancel{background:url(images/sprites.png) repeat_x 0 _ 1105px}a.cke_dialog_ui_button_ok span,a.cke_dialog_ui_button_cancel span{background-image:none}.cke_menubutton_label{height:25px}.cke_menuarrow{background-image:url(images/sprites_ie6.png)}.cke_menuitem .cke_icon,.cke_button_icon,.cke_menuitem .cke_disabled .cke_icon,.cke_button_disabled .cke_button_icon{filter:""}.cke_menuseparator{font-size:0}.cke_colorbox{font-size:0}.cke_source{white-space:normal} \ No newline at end of file diff --git a/public/build/ckeditor/skins/kama/icons.png b/public/build/ckeditor/skins/kama/icons.png deleted file mode 100644 index 171f6f23..00000000 Binary files a/public/build/ckeditor/skins/kama/icons.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/icons_hidpi.png b/public/build/ckeditor/skins/kama/icons_hidpi.png deleted file mode 100644 index f3969a4a..00000000 Binary files a/public/build/ckeditor/skins/kama/icons_hidpi.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/dialog_sides.gif b/public/build/ckeditor/skins/kama/images/dialog_sides.gif deleted file mode 100644 index b5d9a532..00000000 Binary files a/public/build/ckeditor/skins/kama/images/dialog_sides.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/dialog_sides.png b/public/build/ckeditor/skins/kama/images/dialog_sides.png deleted file mode 100644 index 2df7a15b..00000000 Binary files a/public/build/ckeditor/skins/kama/images/dialog_sides.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/dialog_sides_rtl.png b/public/build/ckeditor/skins/kama/images/dialog_sides_rtl.png deleted file mode 100644 index b179935f..00000000 Binary files a/public/build/ckeditor/skins/kama/images/dialog_sides_rtl.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/mini.gif b/public/build/ckeditor/skins/kama/images/mini.gif deleted file mode 100644 index babc31a5..00000000 Binary files a/public/build/ckeditor/skins/kama/images/mini.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/spinner.gif b/public/build/ckeditor/skins/kama/images/spinner.gif deleted file mode 100644 index d898d41f..00000000 Binary files a/public/build/ckeditor/skins/kama/images/spinner.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/sprites.png b/public/build/ckeditor/skins/kama/images/sprites.png deleted file mode 100644 index 5fc409d1..00000000 Binary files a/public/build/ckeditor/skins/kama/images/sprites.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/sprites_ie6.png b/public/build/ckeditor/skins/kama/images/sprites_ie6.png deleted file mode 100644 index 070a8cee..00000000 Binary files a/public/build/ckeditor/skins/kama/images/sprites_ie6.png and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/images/toolbar_start.gif b/public/build/ckeditor/skins/kama/images/toolbar_start.gif deleted file mode 100644 index 94aa4abc..00000000 Binary files a/public/build/ckeditor/skins/kama/images/toolbar_start.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/kama/readme.md b/public/build/ckeditor/skins/kama/readme.md deleted file mode 100644 index cf7b5c28..00000000 --- a/public/build/ckeditor/skins/kama/readme.md +++ /dev/null @@ -1,38 +0,0 @@ -"Kama" Skin -==================== - -"Kama" is the default skin of CKEditor 3.x. -It's been ported to CKEditor 4 and fully featured. - -For more information about skins, please check the [CKEditor Skin SDK](https://ckeditor.com/docs/ckeditor4/latest/guide/skin_sdk_intro.html) -documentation. - -Directory Structure -------------------- - -CSS parts: -- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, -- **mainui.css**: the file contains styles of entire editor outline structures, -- **toolbar.css**: the file contains styles of the editor toolbar space (top), -- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, -- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded -until the first panel open up, -- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), -- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, -it's not loaded until the first menu open up, -- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, -- **reset.css**: the file defines the basis of style resets among all editor UI spaces, -- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, -- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. - -Other parts: -- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, -- **icons/**: contains all skin defined icons, -- **images/**: contains a fill general used images. - -License -------- - -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - -For licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license) diff --git a/public/build/ckeditor/skins/kama/skin.js b/public/build/ckeditor/skins/kama/skin.js deleted file mode 100644 index fd82d3a6..00000000 --- a/public/build/ckeditor/skins/kama/skin.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.skin.name="kama";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8"; -CKEDITOR.skin.chameleon=function(d,c){var b,a="."+d.id;"editor"==c?b=a+" .cke_inner,"+a+" .cke_dialog_tab{background-color:$color;linear-gradient( to bottom,#fff -15px,$color 40px );}"+a+" .cke_toolgroup{linear-gradient( to bottom,#fff,$color 100px );}"+a+" .cke_combo_button{linear-gradient( to top,#fff,$color 100px );}"+a+" .cke_dialog_contents,"+a+" .cke_dialog_footer{background-color:$color !important;}"+a+" .cke_dialog_tab:hover,"+a+" .cke_dialog_tab:active,"+a+" .cke_dialog_tab:focus,"+a+" .cke_dialog_tab_selected{background-color:$color;background-image:none;}": -"panel"==c&&(b=".cke_menubutton_icon{background-color:$color !important;border-color:$color !important;}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:$color !important;border-color:$color !important;}.cke_menubutton:hover .cke_menubutton_label,.cke_menubutton:focus .cke_menubutton_label,.cke_menubutton:active .cke_menubutton_label{background-color:$color !important;}.cke_menubutton_disabled:hover .cke_menubutton_label,.cke_menubutton_disabled:focus .cke_menubutton_label,.cke_menubutton_disabled:active .cke_menubutton_label{background-color: transparent !important;}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:$color !important;border-color:$color !important;}.cke_menubutton_disabled .cke_menubutton_icon{background-color:$color !important;border-color:$color !important;}.cke_menuseparator{background-color:$color !important;}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:$color !important;}"); -return b}; \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/dialog.css b/public/build/ckeditor/skins/moono-lisa/dialog.css deleted file mode 100644 index 1ad56a0f..00000000 --- a/public/build/ckeditor/skins/moono-lisa/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/dialog_ie.css b/public/build/ckeditor/skins/moono-lisa/dialog_ie.css deleted file mode 100644 index 36c5914d..00000000 --- a/public/build/ckeditor/skins/moono-lisa/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/dialog_ie8.css b/public/build/ckeditor/skins/moono-lisa/dialog_ie8.css deleted file mode 100644 index 0be81077..00000000 --- a/public/build/ckeditor/skins/moono-lisa/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button{min-height:18px}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{min-height:18px}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus{padding-top:4px;padding-bottom:2px}select.cke_dialog_ui_input_select{width:100%!important}select.cke_dialog_ui_input_select:focus{margin-left:1px;width:100%!important;padding-top:2px;padding-bottom:2px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/dialog_iequirks.css b/public/build/ckeditor/skins/moono-lisa/dialog_iequirks.css deleted file mode 100644 index d90e1000..00000000 --- a/public/build/ckeditor/skins/moono-lisa/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#fff}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:12px;cursor:move;position:relative;color:#484848;border-bottom:1px solid #d1d1d1;padding:12px 19px 12px 12px;background:#f8f8f8;letter-spacing:.3px}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border:2px solid rgba(102,102,102,0.2);border-left-color:rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:43px;border-top:1px solid #d1d1d1}.cke_dialog_contents_body{overflow:auto;padding:9px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:33px;display:inline-block;margin:9px 0 0;position:absolute;z-index:2;left:11px}.cke_rtl .cke_dialog_tabs{left:auto;right:11px}a.cke_dialog_tab{height:25px;padding:4px 8px;display:inline-block;cursor:pointer;line-height:26px;outline:0;color:#484848;border:1px solid #d1d1d1;border-radius:3px 3px 0 0;background:#f8f8f8;min-width:90px;text-align:center;margin-left:-1px;letter-spacing:.3px}a.cke_dialog_tab:hover{background-color:#fff}a.cke_dialog_tab:focus{border:2px solid #139ff7;border-bottom-color:#d1d1d1;padding:3px 7px;position:relative;z-index:1}a.cke_dialog_tab_selected{background:#fff;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{border-bottom-color:#fff}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:16px;width:16px;top:11px;z-index:5;opacity:.7;filter:alpha(opacity = 70)}.cke_rtl .cke_dialog_close_button{left:12px}.cke_ltr .cke_dialog_close_button{right:12px}.cke_hc a.cke_dialog_close_button{background-image:none}.cke_hidpi a.cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}a.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}a.cke_dialog_close_button span{display:none}.cke_hc a.cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%;margin-top:12px}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #bcbcbc;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:2px;min-height:28px;margin-left:1px}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:2px solid #139ff7}input.cke_dialog_ui_input_text:focus{padding-left:5px}textarea.cke_dialog_ui_input_textarea:focus{padding:3px 5px}select.cke_dialog_ui_input_select:focus{margin:0;width:100%!important}input.cke_dialog_ui_checkbox_input,input.cke_dialog_ui_radio_input{margin-left:1px;margin-right:2px}input.cke_dialog_ui_checkbox_input:focus,input.cke_dialog_ui_checkbox_input:active,input.cke_dialog_ui_radio_input:focus,input.cke_dialog_ui_radio_input:active{border:0;outline:2px solid #139ff7}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 1px;margin:0;text-align:center;color:#484848;vertical-align:middle;cursor:pointer;border:1px solid #bcbcbc;border-radius:2px;background:#f8f8f8;letter-spacing:.3px;line-height:18px;box-sizing:border-box}.cke_hc a.cke_dialog_ui_button{border-width:3px}span.cke_dialog_ui_button{padding:0 10px;cursor:pointer}a.cke_dialog_ui_button:hover{background:#fff}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border:2px solid #139ff7;outline:0;padding:3px 0}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;background:#09863e;border:1px solid #09863e}.cke_hc a.cke_dialog_ui_button{border:1px solid #bcbcbc}a.cke_dialog_ui_button_ok:hover{background:#53aa78;border-color:#53aa78}a.cke_dialog_ui_button_ok:focus{box-shadow:inset 0 0 0 2px #FFF}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#139ff7}.cke_hc a.cke_dialog_ui_button_ok:hover,.cke_hc a.cke_dialog_ui_button_ok:focus,.cke_hc a.cke_dialog_ui_button_ok:active{border-color:#484848}a.cke_dialog_ui_button_ok.cke_disabled{background:#d1d1d1;border-color:#d1d1d1;cursor:default}a.cke_dialog_ui_button_ok.cke_disabled span{cursor:default}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:28px;line-height:28px;background-color:#fff;border:1px solid #bcbcbc;padding:3px 3px 3px 6px;outline:0;border-radius:2px;margin:0 1px;box-sizing:border-box;width:calc(100% - 2px)!important}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog_ui_labeled_label{margin-left:1px}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog .cke_dark_background{background-color:transparent}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked,.cke_dialog a.cke_btn_reset{margin:2px}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_dialog a.cke_btn_over,.cke_dialog a.cke_btn_locked:hover,.cke_dialog a.cke_btn_locked:focus,.cke_dialog a.cke_btn_locked:active,.cke_dialog a.cke_btn_unlocked:hover,.cke_dialog a.cke_btn_unlocked:focus,.cke_dialog a.cke_btn_unlocked:active,.cke_dialog a.cke_btn_reset:hover,.cke_dialog a.cke_btn_reset:focus,.cke_dialog a.cke_btn_reset:active{cursor:pointer;outline:0;margin:0;border:2px solid #139ff7}.cke_dialog fieldset{border:1px solid #bcbcbc}.cke_dialog fieldset legend{padding:0 6px}.cke_dialog_ui_checkbox,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{display:inline-block}.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox{padding-top:5px}.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input,.cke_dialog fieldset .cke_dialog_ui_vbox .cke_dialog_ui_checkbox .cke_dialog_ui_checkbox_input+label{vertical-align:middle}.cke_dialog .ImagePreviewBox{border:1px ridge #bcbcbc;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;cursor:default;letter-spacing:.3px}.cke_dialog_body label+.cke_dialog_ui_labeled_content{margin-top:2px}.cke_dialog_contents_body .cke_dialog_ui_text,.cke_dialog_contents_body .cke_dialog_ui_select,.cke_dialog_contents_body .cke_dialog_ui_hbox_last>a.cke_dialog_ui_button{margin-top:4px}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:2px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_dialog_contents_body .cke_accessibility_legend{margin:2px 7px 2px 2px}.cke_dialog_contents_body .cke_accessibility_legend:focus,.cke_dialog_contents_body .cke_accessibility_legend:active{outline:0;border:2px solid #139ff7;margin:0 5px 0 0}.cke_dialog_contents_body input[type=file]:focus,.cke_dialog_contents_body input[type=file]:active{border:2px solid #139ff7}.cke_dialog_find_fieldset{margin-top:10px!important}.cke_dialog_image_ratiolock{margin-top:52px!important}.cke_dialog_forms_select_order label.cke_dialog_ui_labeled_label{margin-left:0}.cke_dialog_forms_select_order div.cke_dialog_ui_input_select{width:100%}.cke_dialog_forms_select_order_txtsize .cke_dialog_ui_hbox_last{padding-top:4px}.cke_dialog_image_url .cke_dialog_ui_hbox_last{vertical-align:bottom}a.cke_dialog_ui_button.cke_dialog_image_browse{margin-top:10px}.cke_dialog_contents_body .cke_tpl_list{border:#bcbcbc 1px solid;margin:1px}.cke_dialog_contents_body .cke_tpl_list:focus,.cke_dialog_contents_body .cke_tpl_list:active{outline:0;margin:0;border:2px solid #139ff7}.cke_dialog_contents_body .cke_tpl_list a:focus,.cke_dialog_contents_body .cke_tpl_list a:active{outline:0}.cke_dialog_contents_body .cke_tpl_list a:focus .cke_tpl_item,.cke_dialog_contents_body .cke_tpl_list a:active .cke_tpl_item{border:2px solid #139ff7;padding:6px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/editor.css b/public/build/ckeditor/skins/moono-lisa/editor.css deleted file mode 100644 index b868993e..00000000 --- a/public/build/ckeditor/skins/moono-lisa/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/editor_gecko.css b/public/build/ckeditor/skins/moono-lisa/editor_gecko.css deleted file mode 100644 index 51221b4a..00000000 --- a/public/build/ckeditor/skins/moono-lisa/editor_gecko.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/editor_ie.css b/public/build/ckeditor/skins/moono-lisa/editor_ie.css deleted file mode 100644 index 63189659..00000000 --- a/public/build/ckeditor/skins/moono-lisa/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/editor_ie8.css b/public/build/ckeditor/skins/moono-lisa/editor_ie8.css deleted file mode 100644 index 88ee89ba..00000000 --- a/public/build/ckeditor/skins/moono-lisa/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbar{position:relative}.cke_rtl .cke_toolbar_end{right:auto;left:0}.cke_toolbar_end:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:1px;right:2px}.cke_rtl .cke_toolbar_end:after{right:auto;left:2px}.cke_hc .cke_toolbar_end:after{top:2px;right:5px;border-color:#000}.cke_hc.cke_rtl .cke_toolbar_end:after{right:auto;left:5px}.cke_combo+.cke_toolbar_end:after,.cke_toolbar.cke_toolbar_last .cke_toolbar_end:after{content:none;border:0}.cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:0}.cke_rtl .cke_combo+.cke_toolgroup+.cke_toolbar_end:after{right:auto;left:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/editor_iequirks.css b/public/build/ckeditor/skins/moono-lisa/editor_iequirks.css deleted file mode 100644 index ad407085..00000000 --- a/public/build/ckeditor/skins/moono-lisa/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #d1d1d1;padding:0}.cke_inner{display:block;background:#fff;padding:0;-webkit-touch-callout:none}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #d1d1d1;background:#f8f8f8;padding:6px 8px 2px;white-space:normal}.cke_float .cke_top{border:1px solid #d1d1d1}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #d1d1d1;background:#f8f8f8}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #bcbcbc transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #bcbcbc;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #d1d1d1}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_block:focus{outline:0}.cke_panel_list{margin:0;padding:0;list-style-type:none;white-space:nowrap}.cke_panel_listItem{margin:0;padding:0}.cke_panel_listItem a{padding:6px 7px;display:block;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis}.cke_hc .cke_panel_listItem a{border-style:none}.cke_panel_listItem.cke_selected a,.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{background-color:#e9e9e9}.cke_panel_listItem a:focus{outline:1px dotted #000}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:4px 5px}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:6px 6px 7px 6px;color:#484848;border-bottom:1px solid #d1d1d1;background:#f8f8f8}.cke_colorblock{padding:10px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}a.cke_colorbox{padding:2px;float:left;width:20px;height:20px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{outline:0;padding:0;border:2px solid #139ff7}a:hover.cke_colorbox{border-color:#bcbcbc}span.cke_colorbox{width:20px;height:20px;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:3px;display:block;cursor:pointer}a.cke_colorauto{padding:0;border:1px solid transparent;margin-bottom:6px;height:26px;line-height:26px}a.cke_colormore{margin-top:10px;height:20px;line-height:19px}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{outline:0;border:#139ff7 1px solid;background-color:#f8f8f8}a:hover.cke_colorauto,a:hover.cke_colormore{border-color:#bcbcbc}.cke_colorauto span.cke_colorbox{width:18px;height:18px;border:1px solid #808080;margin-left:1px;margin-top:3px}.cke_rtl .cke_colorauto span.cke_colorbox{margin-left:0;margin-right:1px}span.cke_colorbox[style*="#ffffff"],span.cke_colorbox[style*="#FFFFFF"],span.cke_colorbox[style="background-color:#fff"],span.cke_colorbox[style="background-color:#FFF"],span.cke_colorbox[style*="rgb(255,255,255)"],span.cke_colorbox[style*="rgb(255, 255, 255)"]{border:1px solid #808080;width:18px;height:18px}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{border:0;float:left;margin:1px 2px 6px 0;padding-right:3px}.cke_rtl .cke_toolgroup{float:right;margin:1px 0 6px 2px;padding-left:3px;padding-right:0}.cke_hc .cke_toolgroup{margin-right:5px;margin-bottom:5px}.cke_hc.cke_rtl .cke_toolgroup{margin-right:0;margin-left:5px}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0;position:relative}a.cke_button_expandable{padding:4px 5px}.cke_rtl a.cke_button{float:right}.cke_hc a.cke_button{border:1px solid black;padding:3px 5px;margin:0 3px 5px 0}.cke_hc.cke_rtl a.cke_button{margin:0 0 5px 3px}a.cke_button_on{background:#fff;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_on{padding:3px 4px}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:hover,a.cke_button_expandable.cke_button_off:focus,a.cke_button_expandable.cke_button_off:active{padding:3px 4px}.cke_hc a.cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active{background:#e5e5e5;border:3px solid #000;padding:1px 3px}@media screen and (hover:none){a.cke_button_off:hover{background:transparent;border:0;padding:4px 6px}a.cke_button_expandable.cke_button_off:hover{padding:4px 5px}a.cke_button_off:active{background:#e5e5e5;border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_off:active{padding:3px 4px}}a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{border:0;padding:4px 6px;background-color:transparent}a.cke_button_expandable.cke_button_disabled:hover,a.cke_button_expandable.cke_button_disabled:active{padding:4px 5px}a.cke_button_disabled:focus{border:1px #bcbcbc solid;padding:3px 5px}a.cke_button_expandable.cke_button_disabled:focus{padding:3px 4px}.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border:1px solid #acacac;padding:3px 5px;margin:0 3px 5px 0}.cke_hc a.cke_button_disabled:focus{border:3px solid #000;padding:1px 3px}.cke_hc.cke_rtl a.cke_button_disabled:hover,.cke_hc.cke_rtl a.cke_button_disabled:focus,.cke_hc.cke_rtl a.cke_button_disabled:active{margin:0 0 5px 3px}a.cke_button_disabled .cke_button_icon,a.cke_button_disabled .cke_button_arrow{opacity:.3}.cke_hc a.cke_button_disabled{border-color:#acacac}.cke_hc a.cke_button_disabled .cke_button_icon,.cke_hc a.cke_button_disabled .cke_button_label{opacity:.5}.cke_toolgroup a.cke_button:last-child:after,.cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:4px;top:0;right:-3px}.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-right:0;right:auto;border-left:1px solid #bcbcbc;top:0;left:-3px}.cke_hc .cke_toolgroup a.cke_button:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{border-color:#000;top:0;right:-7px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_disabled:hover:last-child:after{top:0;right:auto;left:-7px}.cke_toolgroup a.cke_button:hover:last-child:after,.cke_toolgroup a.cke_button:focus:last-child:after,.cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:-4px}.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_rtl .cke_toolgroup a.cke_button:focus:last-child:after,.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-1px;right:auto;left:-4px}.cke_hc .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:-9px}.cke_hc.cke_rtl .cke_toolgroup a.cke_button:hover:last-child:after,.cke_hc.cke_rtl .cke_toolgroup a.cke_button.cke_button_on:last-child:after{top:-2px;right:auto;left:-9px}.cke_toolbar.cke_toolbar_last .cke_toolgroup a.cke_button:last-child:after{content:none;border:0;width:0;height:0}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#484848}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px 0 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#bcbcbc;margin:4px 2px 0 2px;height:18px;width:1px}.cke_rtl .cke_toolbar_separator{float:right}.cke_hc .cke_toolbar_separator{background-color:#000;margin-left:2px;margin-right:5px;margin-bottom:9px}.cke_hc.cke_rtl .cke_toolbar_separator{margin-left:5px;margin-right:2px}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #bcbcbc}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser:hover{background:#e5e5e5}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border:3px solid transparent;border-bottom-color:#484848}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#484848}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0}.cke_menuitem span{cursor:default}.cke_menubutton{display:block}.cke_hc .cke_menubutton{padding:2px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#e9e9e9;display:block;outline:1px dotted}.cke_menubutton:hover{outline:0}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_disabled:hover,.cke_menubutton_disabled:focus,.cke_menubutton_disabled:active{background-color:transparent;outline:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#f8f8f8;padding:6px 4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#e9e9e9}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{background-color:#f8f8f8;outline:0}.cke_menuitem .cke_menubutton_on{background-color:#e9e9e9;border:1px solid #dedede;outline:0}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px;background-color:#e9e9e9}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d1d1d1;height:1px}.cke_menuarrow{background:transparent url(images/arrow.png) no-repeat 0 10px;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_hc .cke_menuarrow{background-image:none}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left;position:relative;margin-bottom:5px}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:1px;margin-bottom:10px}.cke_combo:after{content:"";position:absolute;height:18px;width:0;border-right:1px solid #bcbcbc;margin-top:5px;top:0;right:0}.cke_rtl .cke_combo:after{border-right:0;border-left:1px solid #bcbcbc;right:auto;left:0}.cke_hc .cke_combo:after{border-color:#000}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0;padding:1px}.cke_rtl a.cke_combo_button{float:right}.cke_hc a.cke_combo_button{padding:4px}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus,.cke_combo_off a.cke_combo_button:active{background:#e5e5e5;border:1px solid #bcbcbc;padding:0 0 0 1px;margin-left:-1px}.cke_combo_off a.cke_combo_button:focus{outline:0}.cke_combo_on a.cke_combo_button,.cke_combo_off a.cke_combo_button:active{background:#fff}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:transparent;border-color:transparent}.cke_combo_off a.cke_combo_button:active{background:#fff;border:1px solid #bcbcbc}}.cke_rtl .cke_combo_on a.cke_combo_button,.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:0 1px 0 0;margin-left:0;margin-right:-1px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border:3px solid #000;padding:1px 1px 1px 2px}.cke_hc.cke_rtl .cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_combo_off a.cke_combo_button:active{padding:1px 2px 1px 1px}.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 0 0 3px;margin-left:-3px}.cke_rtl .cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_rtl .cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0 3px 0 0;margin-left:0;margin-right:-3px}.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 1px 1px 7px;margin-left:-6px}.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc.cke_rtl .cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px 7px 1px 1px;margin-left:0;margin-right:-6px}.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:0;margin:0}.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbox .cke_toolbar:first-child>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_on a.cke_combo_button,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_toolbar_break+.cke_toolbar>.cke_toolbar_start+.cke_combo_off a.cke_combo_button:active{padding:1px;margin:0}.cke_toolbar .cke_combo+.cke_toolbar_end,.cke_toolbar .cke_combo+.cke_toolgroup{margin-right:0;margin-left:2px}.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:2px}.cke_hc .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:5px}.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolbar_end,.cke_hc.cke_rtl .cke_toolbar .cke_combo+.cke_toolgroup{margin-left:0;margin-right:5px}.cke_toolbar.cke_toolbar_last .cke_combo:nth-last-child(-n+2):after{content:none;border:0;width:0;height:0}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#484848;width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 10px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #484848}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#484848;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#e5e5e5}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combopanel__fontsize{width:135px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;text-align:center;opacity:.95;filter:alpha(opacity = 95);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono-lisa/icons.png b/public/build/ckeditor/skins/moono-lisa/icons.png deleted file mode 100644 index 01c50c70..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/icons.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/icons_hidpi.png b/public/build/ckeditor/skins/moono-lisa/icons_hidpi.png deleted file mode 100644 index 8514547e..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/icons_hidpi.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/arrow.png b/public/build/ckeditor/skins/moono-lisa/images/arrow.png deleted file mode 100644 index d72b5f3b..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/arrow.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/close.png b/public/build/ckeditor/skins/moono-lisa/images/close.png deleted file mode 100644 index 40caa6dd..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/close.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/hidpi/close.png b/public/build/ckeditor/skins/moono-lisa/images/hidpi/close.png deleted file mode 100644 index fa00f4fc..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/hidpi/close.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png b/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png deleted file mode 100644 index c8997890..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock.png b/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock.png deleted file mode 100644 index 25ad0f4a..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/hidpi/lock.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/hidpi/refresh.png b/public/build/ckeditor/skins/moono-lisa/images/hidpi/refresh.png deleted file mode 100644 index 117a2d4a..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/hidpi/refresh.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/lock-open.png b/public/build/ckeditor/skins/moono-lisa/images/lock-open.png deleted file mode 100644 index 42df5f41..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/lock-open.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/lock.png b/public/build/ckeditor/skins/moono-lisa/images/lock.png deleted file mode 100644 index bde67727..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/lock.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/refresh.png b/public/build/ckeditor/skins/moono-lisa/images/refresh.png deleted file mode 100644 index e363764e..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/refresh.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/images/spinner.gif b/public/build/ckeditor/skins/moono-lisa/images/spinner.gif deleted file mode 100644 index d898d41f..00000000 Binary files a/public/build/ckeditor/skins/moono-lisa/images/spinner.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/moono-lisa/readme.md b/public/build/ckeditor/skins/moono-lisa/readme.md deleted file mode 100644 index 0835f431..00000000 --- a/public/build/ckeditor/skins/moono-lisa/readme.md +++ /dev/null @@ -1,46 +0,0 @@ -"Moono-lisa" Skin -================= - -This skin has been made a **default skin** starting from CKEditor 4.6.0 and is maintained by the core developers. - -For more information about skins, please check the [CKEditor Skin SDK](https://ckeditor.com/docs/ckeditor4/latest/guide/skin_sdk_intro.html) -documentation. - -Features -------------------- -"Moono-lisa" is a monochromatic skin, which offers a modern, flat and minimalistic look which blends very well in modern design. -It comes with the following features: - -- Chameleon feature with brightness. -- High-contrast compatibility. -- Graphics source provided in SVG. - -Directory Structure -------------------- - -CSS parts: -- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, -- **mainui.css**: the file contains styles of entire editor outline structures, -- **toolbar.css**: the file contains styles of the editor toolbar space (top), -- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, -- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded -until the first panel open up, -- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), -- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, -it's not loaded until the first menu open up, -- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, -- **reset.css**: the file defines the basis of style resets among all editor UI spaces, -- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, -- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. - -Other parts: -- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, -- **images/**: contains a fill general used images, -- **dev/**: contains SVG and PNG source of the skin icons. - -License -------- - -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - -For licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license) diff --git a/public/build/ckeditor/skins/moono/dialog.css b/public/build/ckeditor/skins/moono/dialog.css deleted file mode 100644 index 1f5a0bc1..00000000 --- a/public/build/ckeditor/skins/moono/dialog.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/dialog_ie.css b/public/build/ckeditor/skins/moono/dialog_ie.css deleted file mode 100644 index 7e9511ff..00000000 --- a/public/build/ckeditor/skins/moono/dialog_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/dialog_ie7.css b/public/build/ckeditor/skins/moono/dialog_ie7.css deleted file mode 100644 index 4fd6b413..00000000 --- a/public/build/ckeditor/skins/moono/dialog_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_title{zoom:1}.cke_dialog_footer{border-top:1px solid #bfbfbf}.cke_dialog_footer_buttons{position:static}.cke_dialog_footer_buttons a.cke_dialog_ui_button{vertical-align:top}.cke_dialog .cke_resizer_ltr{padding-left:4px}.cke_dialog .cke_resizer_rtl{padding-right:4px}.cke_dialog_ui_input_text,.cke_dialog_ui_input_password,.cke_dialog_ui_input_tel,.cke_dialog_ui_input_textarea,.cke_dialog_ui_input_select{padding:0!important}.cke_dialog_ui_checkbox_input,.cke_dialog_ui_ratio_input,.cke_btn_reset,.cke_btn_locked,.cke_btn_unlocked{border:1px solid transparent!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/dialog_ie8.css b/public/build/ckeditor/skins/moono/dialog_ie8.css deleted file mode 100644 index 27d539fb..00000000 --- a/public/build/ckeditor/skins/moono/dialog_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{display:block} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/dialog_iequirks.css b/public/build/ckeditor/skins/moono/dialog_iequirks.css deleted file mode 100644 index 51d5b96b..00000000 --- a/public/build/ckeditor/skins/moono/dialog_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_dialog{visibility:visible}.cke_dialog_body{z-index:1;background:#eaeaea;border:1px solid #b2b2b2;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_dialog strong{font-weight:bold}.cke_dialog_title{font-weight:bold;font-size:13px;cursor:move;position:relative;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #999;padding:6px 10px;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_dialog_spinner{border-radius:50%;width:12px;height:12px;overflow:hidden;text-indent:-9999em;border-top:2px solid rgba(102,102,102,0.2);border-right:2px solid rgba(102,102,102,0.2);border-bottom:2px solid rgba(102,102,102,0.2);border-left:2px solid rgba(102,102,102,1);-webkit-animation:dialog_spinner 1s infinite linear;animation:dialog_spinner 1s infinite linear}.cke_browser_ie8 .cke_dialog_spinner,.cke_browser_ie9 .cke_dialog_spinner{background:url(images/spinner.gif) center top no-repeat;width:16px;height:16px;border:0}@-webkit-keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes dialog_spinner{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.cke_dialog_contents{background-color:#fff;overflow:auto;padding:15px 10px 5px 10px;margin-top:30px;border-top:1px solid #bfbfbf;border-radius:0 0 3px 3px}.cke_dialog_contents_body{overflow:auto;padding:17px 10px 5px 10px;margin-top:22px}.cke_dialog_footer{text-align:right;position:relative;border:0;outline:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;border-radius:0 0 2px 2px;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_rtl .cke_dialog_footer{text-align:left}.cke_hc .cke_dialog_footer{outline:0;border-top:1px solid #fff}.cke_dialog .cke_resizer{margin-top:22px}.cke_dialog .cke_resizer_rtl{margin-left:5px}.cke_dialog .cke_resizer_ltr{margin-right:5px}.cke_dialog_tabs{height:24px;display:inline-block;margin:5px 0 0;position:absolute;z-index:2;left:10px}.cke_rtl .cke_dialog_tabs{right:10px}a.cke_dialog_tab{height:16px;padding:4px 8px;margin-right:3px;display:inline-block;cursor:pointer;line-height:16px;outline:0;color:#595959;border:1px solid #bfbfbf;border-radius:3px 3px 0 0;background:#d4d4d4;background-image:linear-gradient(to bottom,#fafafa,#ededed);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#fafafa',endColorstr='#ededed')}.cke_rtl a.cke_dialog_tab{margin-right:0;margin-left:3px}a.cke_dialog_tab:hover,a.cke_dialog_tab:focus{background:#ebebeb;background:linear-gradient(to bottom,#ebebeb 0,#dfdfdf 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ebebeb',endColorstr='#dfdfdf',GradientType=0)}a.cke_dialog_tab_selected{background:#fff;color:#383838;border-bottom-color:#fff;cursor:default;filter:none}a.cke_dialog_tab_selected:hover,a.cke_dialog_tab_selected:focus{background:#ededed;background:linear-gradient(to bottom,#ededed 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed',endColorstr='#ffffff',GradientType=0)}.cke_hc a.cke_dialog_tab:hover,.cke_hc a.cke_dialog_tab:focus,.cke_hc a.cke_dialog_tab_selected{border:3px solid;padding:2px 6px}.cke_hc a.cke_dialog_tab:focus{text-decoration:underline}a.cke_dialog_tab_disabled{color:#bababa;cursor:default}.cke_single_page .cke_dialog_tabs{display:none}.cke_single_page .cke_dialog_contents{padding-top:5px;margin-top:0;border-top:0}a.cke_dialog_close_button{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:4px;z-index:5;opacity:.8;filter:alpha(opacity = 80)}.cke_dialog_close_button:hover{opacity:1;filter:alpha(opacity = 100)}.cke_hidpi .cke_dialog_close_button{background-image:url(images/hidpi/close.png);background-size:16px}.cke_dialog_close_button span{display:none}.cke_hc .cke_dialog_close_button span{display:inline;cursor:pointer;font-weight:bold;position:relative;top:3px}.cke_ltr .cke_dialog_close_button{right:5px}.cke_rtl .cke_dialog_close_button{left:6px}.cke_dialog_close_button{top:4px}div.cke_disabled .cke_dialog_ui_labeled_content div *{background-color:#ddd;cursor:default}.cke_dialog_ui_labeled_required{font-weight:bold;font-size:1.2em}.cke_dialog_ui_vbox table,.cke_dialog_ui_hbox table{margin:auto}.cke_dialog_ui_vbox_child{padding:5px 0}.cke_dialog_ui_hbox{width:100%}.cke_dialog_ui_hbox_first,.cke_dialog_ui_hbox_child,.cke_dialog_ui_hbox_last{vertical-align:top}.cke_ltr .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_ui_hbox_child{padding-right:10px}.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_child{padding-left:10px}.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_ltr .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-right:5px}.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_footer_buttons .cke_dialog_ui_hbox_child{padding-left:5px;padding-right:0}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:1px solid}textarea.cke_dialog_ui_input_textarea{overflow:auto;resize:none}input.cke_dialog_ui_input_text,input.cke_dialog_ui_input_password,input.cke_dialog_ui_input_tel,textarea.cke_dialog_ui_input_textarea{background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:4px 6px;outline:0;width:100%;*width:95%;box-sizing:border-box;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}input.cke_dialog_ui_input_text:hover,input.cke_dialog_ui_input_password:hover,input.cke_dialog_ui_input_tel:hover,textarea.cke_dialog_ui_input_textarea:hover{border:1px solid #aeb3b9;border-top-color:#a0a6ad}input.cke_dialog_ui_input_text:focus,input.cke_dialog_ui_input_password:focus,input.cke_dialog_ui_input_tel:focus,textarea.cke_dialog_ui_input_textarea:focus,select.cke_dialog_ui_input_select:focus{outline:0;border:1px solid #139ff7;border-top-color:#1392e9}a.cke_dialog_ui_button{display:inline-block;*display:inline;*zoom:1;padding:4px 0;margin:0;text-align:center;color:#333;vertical-align:middle;cursor:pointer;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}span.cke_dialog_ui_button{padding:0 10px}a.cke_dialog_ui_button:hover{border-color:#9e9e9e;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_dialog_ui_button:focus,a.cke_dialog_ui_button:active{border-color:#969696;outline:0;box-shadow:0 0 6px rgba(0,0,0,.4) inset}.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button:focus,.cke_hc a.cke_dialog_ui_button:active{border:3px solid;padding-top:1px;padding-bottom:1px}.cke_hc a.cke_dialog_ui_button:hover span,.cke_hc a.cke_dialog_ui_button:focus span,.cke_hc a.cke_dialog_ui_button:active span{padding-left:10px;padding-right:10px}.cke_dialog_footer_buttons a.cke_dialog_ui_button span{color:inherit;font-size:12px;font-weight:bold;line-height:18px;padding:0 12px}a.cke_dialog_ui_button_ok{color:#fff;text-shadow:0 -1px 0 #55830c;border-color:#62a60a #62a60a #4d9200;background:#69b10b;background-image:linear-gradient(to bottom,#9ad717,#69b10b);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#9ad717',endColorstr='#69b10b')}a.cke_dialog_ui_button_ok:hover{border-color:#5b9909 #5b9909 #478500;background:#88be14;background:linear-gradient(to bottom,#88be14 0,#5d9c0a 100%);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#88be14',endColorstr='#5d9c0a',GradientType=0)}a.cke_dialog_ui_button_ok.cke_disabled{border-color:#7d9f51;background:#8dad62;background-image:-webkit-gradient(linear,0 0,0 100%,from(#b3d271),to(#8dad62));background-image:-webkit-linear-gradient(top,#b3d271,#8dad62);background-image:-o-linear-gradient(top,#b3d271,#8dad62);background-image:linear-gradient(to bottom,#b3d271,#8dad62);background-image:-moz-linear-gradient(top,#b3d271,#8dad62);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#B3D271',endColorstr='#8DAD62')}a.cke_dialog_ui_button_ok.cke_disabled span{color:#e0e8d1}a.cke_dialog_ui_button span{text-shadow:0 1px 0 #fff}a.cke_dialog_ui_button_ok span{text-shadow:0 -1px 0 #55830c}span.cke_dialog_ui_button{cursor:pointer}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active,a.cke_dialog_ui_button_cancel:focus,a.cke_dialog_ui_button_cancel:active{border-width:2px;padding:3px 0}a.cke_dialog_ui_button_ok:focus,a.cke_dialog_ui_button_ok:active{border-color:#568c0a}a.cke_dialog_ui_button_ok.cke_disabled:focus,a.cke_dialog_ui_button_ok.cke_disabled:active{border-color:#6f8c49}a.cke_dialog_ui_button_ok:focus span,a.cke_dialog_ui_button_ok:active span,a.cke_dialog_ui_button_cancel:focus span,a.cke_dialog_ui_button_cancel:active span{padding:0 11px}.cke_dialog_footer_buttons{display:inline-table;margin:5px;width:auto;position:relative;vertical-align:middle}div.cke_dialog_ui_input_select{display:table}select.cke_dialog_ui_input_select{height:25px;line-height:25px;background-color:#fff;border:1px solid #c9cccf;border-top-color:#aeb3b9;padding:3px 3px 3px 6px;outline:0;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15) inset}.cke_dialog_ui_input_file{width:100%;height:25px}.cke_hc .cke_dialog_ui_labeled_content input:focus,.cke_hc .cke_dialog_ui_labeled_content select:focus,.cke_hc .cke_dialog_ui_labeled_content textarea:focus{outline:1px dotted}.cke_dialog .cke_dark_background{background-color:#dedede}.cke_dialog .cke_light_background{background-color:#ebebeb}.cke_dialog .cke_centered{text-align:center}.cke_dialog a.cke_btn_reset{float:right;background:url(images/refresh.png) top left no-repeat;width:16px;height:16px;border:1px none;font-size:1px}.cke_hidpi .cke_dialog a.cke_btn_reset{background-size:16px;background-image:url(images/hidpi/refresh.png)}.cke_rtl .cke_dialog a.cke_btn_reset{float:left}.cke_dialog a.cke_btn_locked,.cke_dialog a.cke_btn_unlocked{float:left;width:16px;height:16px;background-repeat:no-repeat;border:none 1px;font-size:1px}.cke_dialog a.cke_btn_locked .cke_icon{display:none}.cke_rtl .cke_dialog a.cke_btn_locked,.cke_rtl .cke_dialog a.cke_btn_unlocked{float:right}.cke_dialog a.cke_btn_locked{background-image:url(images/lock.png)}.cke_dialog a.cke_btn_unlocked{background-image:url(images/lock-open.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked,.cke_hidpi .cke_dialog a.cke_btn_locked{background-size:16px}.cke_hidpi .cke_dialog a.cke_btn_locked{background-image:url(images/hidpi/lock.png)}.cke_hidpi .cke_dialog a.cke_btn_unlocked{background-image:url(images/hidpi/lock-open.png)}.cke_dialog .cke_btn_over{border:outset 1px;cursor:pointer}.cke_dialog .ImagePreviewBox{border:2px ridge black;overflow:scroll;height:200px;width:300px;padding:2px;background-color:white}.cke_dialog .ImagePreviewBox table td{white-space:normal}.cke_dialog .ImagePreviewLoader{position:absolute;white-space:normal;overflow:hidden;height:160px;width:230px;margin:2px;padding:2px;opacity:.9;filter:alpha(opacity = 90);background-color:#e4e4e4}.cke_dialog .cke_pastetext{width:346px;height:170px}.cke_dialog .cke_pastetext textarea{width:340px;height:170px;resize:none}.cke_dialog iframe.cke_pasteframe{width:346px;height:130px;background-color:white;border:1px solid #aeb3b9;border-radius:3px}.cke_dialog .cke_hand{cursor:pointer}.cke_disabled{color:#a0a0a0}.cke_dialog_body .cke_label{display:none}.cke_dialog_body label{display:inline;margin-bottom:auto;cursor:default}.cke_dialog_body label.cke_required{font-weight:bold}a.cke_smile{overflow:hidden;display:block;text-align:center;padding:.3em 0}a.cke_smile img{vertical-align:middle}a.cke_specialchar{cursor:inherit;display:block;height:1.25em;padding:.2em .3em;text-align:center}a.cke_smile,a.cke_specialchar{border:1px solid transparent}a.cke_smile:hover,a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:hover,a.cke_specialchar:focus,a.cke_specialchar:active{background:#fff;outline:0}a.cke_smile:hover,a.cke_specialchar:hover{border-color:#888}a.cke_smile:focus,a.cke_smile:active,a.cke_specialchar:focus,a.cke_specialchar:active{border-color:#139ff7}.cke_dialog_contents a.colorChooser{display:block;margin-top:6px;margin-left:10px;width:80px}.cke_rtl .cke_dialog_contents a.colorChooser{margin-right:10px}.cke_dialog_ui_checkbox_input:focus,.cke_dialog_ui_radio_input:focus,.cke_btn_over{outline:1px dotted #696969}.cke_iframe_shim{display:block;position:absolute;top:0;left:0;z-index:-1;filter:alpha(opacity = 0);width:100%;height:100%}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{padding-right:2px}.cke_rtl div.cke_dialog_ui_input_text,.cke_rtl div.cke_dialog_ui_input_password,.cke_rtl div.cke_dialog_ui_input_tel{padding-left:2px}.cke_rtl div.cke_dialog_ui_input_text{padding-right:1px}.cke_rtl .cke_dialog_ui_vbox_child,.cke_rtl .cke_dialog_ui_hbox_child,.cke_rtl .cke_dialog_ui_hbox_first,.cke_rtl .cke_dialog_ui_hbox_last{padding-right:2px!important}.cke_hc .cke_dialog_title,.cke_hc .cke_dialog_footer,.cke_hc a.cke_dialog_tab,.cke_hc a.cke_dialog_ui_button,.cke_hc a.cke_dialog_ui_button:hover,.cke_hc a.cke_dialog_ui_button_ok,.cke_hc a.cke_dialog_ui_button_ok:hover{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_hc div.cke_dialog_ui_input_text,.cke_hc div.cke_dialog_ui_input_password,.cke_hc div.cke_dialog_ui_input_tel,.cke_hc div.cke_dialog_ui_input_textarea,.cke_hc div.cke_dialog_ui_input_select,.cke_hc div.cke_dialog_ui_input_file{border:0}.cke_dialog_footer{filter:""} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor.css b/public/build/ckeditor/skins/moono/editor.css deleted file mode 100644 index 95207046..00000000 --- a/public/build/ckeditor/skins/moono/editor.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor_gecko.css b/public/build/ckeditor/skins/moono/editor_gecko.css deleted file mode 100644 index f6f596f8..00000000 --- a/public/build/ckeditor/skins/moono/editor_gecko.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}.cke_bottom{padding-bottom:3px}.cke_combo_text{margin-bottom:-1px;margin-top:1px} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor_ie.css b/public/build/ckeditor/skins/moono/editor_ie.css deleted file mode 100644 index 8aa8b9a0..00000000 --- a/public/build/ckeditor/skins/moono/editor_ie.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor_ie7.css b/public/build/ckeditor/skins/moono/editor_ie7.css deleted file mode 100644 index de7b03c5..00000000 --- a/public/build/ckeditor/skins/moono/editor_ie7.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_toolbox{display:inline-block;padding-bottom:5px;height:100%}.cke_rtl .cke_toolbox{padding-bottom:0}.cke_toolbar{margin-bottom:5px}.cke_rtl .cke_toolbar{margin-bottom:0}.cke_toolgroup{height:26px}.cke_toolgroup,.cke_combo{position:relative}a.cke_button{float:none;vertical-align:top}.cke_toolbar_separator{display:inline-block;float:none;vertical-align:top;background-color:#c0c0c0}.cke_toolbox_collapser .cke_arrow{margin-top:0}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_rtl .cke_button_arrow{padding-top:8px;margin-right:2px}.cke_rtl .cke_combo_inlinelabel{display:table-cell;vertical-align:middle}.cke_menubutton{display:block;height:24px}.cke_menubutton_inner{display:block;position:relative}.cke_menubutton_icon{height:16px;width:16px}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:inline-block}.cke_menubutton_label{width:auto;vertical-align:top;line-height:24px;height:24px;margin:0 10px 0 0}.cke_menuarrow{width:5px;height:6px;padding:0;position:absolute;right:8px;top:10px;background-position:0 0}.cke_rtl .cke_menubutton_icon{position:absolute;right:0;top:0}.cke_rtl .cke_menubutton_label{float:right;clear:both;margin:0 24px 0 10px}.cke_hc .cke_rtl .cke_menubutton_label{margin-right:0}.cke_rtl .cke_menuarrow{left:8px;right:auto;background-position:0 -24px}.cke_hc .cke_menuarrow{top:5px;padding:0 5px}.cke_rtl input.cke_dialog_ui_input_text,.cke_rtl input.cke_dialog_ui_input_password,.cke_rtl input.cke_dialog_ui_input_tel{position:relative}.cke_wysiwyg_div{padding-top:0!important;padding-bottom:0!important} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor_ie8.css b/public/build/ckeditor/skins/moono/editor_ie8.css deleted file mode 100644 index 17576850..00000000 --- a/public/build/ckeditor/skins/moono/editor_ie8.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_toolbox_collapser .cke_arrow{border-width:4px}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{border-width:3px}.cke_toolbox_collapser .cke_arrow{margin-top:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/editor_iequirks.css b/public/build/ckeditor/skins/moono/editor_iequirks.css deleted file mode 100644 index 397baf4a..00000000 --- a/public/build/ckeditor/skins/moono/editor_iequirks.css +++ /dev/null @@ -1,5 +0,0 @@ -/* -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. -For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -.cke_reset{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none}.cke_reset_all,.cke_reset_all *,.cke_reset_all a,.cke_reset_all textarea{margin:0;padding:0;border:0;background:transparent;text-decoration:none;width:auto;height:auto;vertical-align:baseline;box-sizing:content-box;position:static;transition:none;border-collapse:collapse;font:normal normal normal 12px Arial,Helvetica,Tahoma,Verdana,Sans-Serif;color:#000;text-align:left;white-space:nowrap;cursor:auto;float:none}.cke_reset_all .cke_rtl *{text-align:right}.cke_reset_all iframe{vertical-align:inherit}.cke_reset_all textarea{white-space:pre-wrap}.cke_reset_all textarea,.cke_reset_all input[type="text"],.cke_reset_all input[type="password"]{cursor:text}.cke_reset_all textarea[disabled],.cke_reset_all input[type="text"][disabled],.cke_reset_all input[type="password"][disabled]{cursor:default}.cke_reset_all fieldset{padding:10px;border:2px groove #e0dfe3}.cke_reset_all select{box-sizing:border-box}.cke_reset_all select[multiple] option:checked{background-color:#cecece}.cke_reset_all table{table-layout:auto}.cke_chrome{display:block;border:1px solid #b6b6b6;padding:0;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_inner{display:block;-webkit-touch-callout:none;background:#fff;padding:0}.cke_float{border:0}.cke_float .cke_inner{padding-bottom:0}.cke_top,.cke_contents,.cke_bottom{display:block;overflow:hidden}.cke_top{border-bottom:1px solid #b6b6b6;padding:6px 8px 2px;white-space:normal;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_float .cke_top{border:1px solid #b6b6b6;border-bottom-color:#999}.cke_bottom{padding:6px 8px 2px;position:relative;border-top:1px solid #bfbfbf;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#ebebeb,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ebebeb',endColorstr='#cfd1cf')}.cke_browser_ios .cke_contents{overflow-y:auto;-webkit-overflow-scrolling:touch}.cke_resizer{width:0;height:0;overflow:hidden;width:0;height:0;overflow:hidden;border-width:10px 10px 0 0;border-color:transparent #666 transparent transparent;border-style:dashed solid dashed dashed;font-size:0;vertical-align:bottom;margin-top:6px;margin-bottom:2px;box-shadow:0 1px 0 rgba(255,255,255,.3)}.cke_hc .cke_resizer{font-size:15px;width:auto;height:auto;border-width:0}.cke_resizer_ltr{cursor:se-resize;float:right;margin-right:-4px}.cke_resizer_rtl{border-width:10px 0 0 10px;border-color:transparent transparent transparent #a5a5a5;border-style:dashed dashed dashed solid;cursor:sw-resize;float:left;margin-left:-4px;right:auto}.cke_wysiwyg_div{display:block;height:100%;overflow:auto;padding:0 8px;outline-style:none;box-sizing:border-box}.cke_panel{visibility:visible;width:120px;height:100px;overflow:hidden;background-color:#fff;border:1px solid #b6b6b6;border-bottom-color:#999;border-radius:3px;box-shadow:0 0 3px rgba(0,0,0,.15)}.cke_menu_panel{padding:0;margin:0}.cke_combopanel{width:150px;height:170px}.cke_panel_frame{width:100%;height:100%;font-size:12px;overflow:auto;overflow-x:hidden}.cke_panel_container{overflow-y:auto;overflow-x:hidden}.cke_panel_list{list-style-type:none;margin:3px;padding:0;white-space:nowrap}.cke_panel_listItem{margin:0;padding-bottom:1px}.cke_panel_listItem a{padding:3px 4px;display:block;border:1px solid #fff;color:inherit!important;text-decoration:none;overflow:hidden;text-overflow:ellipsis;border-radius:2px}* html .cke_panel_listItem a{width:100%;color:#000}*:first-child+html .cke_panel_listItem a{color:#000}.cke_panel_listItem.cke_selected a{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_panel_listItem a:hover,.cke_panel_listItem a:focus,.cke_panel_listItem a:active{border-color:#dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_hc .cke_panel_listItem a{border-style:none}.cke_hc .cke_panel_listItem a:hover,.cke_hc .cke_panel_listItem a:focus,.cke_hc .cke_panel_listItem a:active{border:2px solid;padding:1px 2px}.cke_panel_grouptitle{cursor:default;font-size:11px;font-weight:bold;white-space:nowrap;margin:0;padding:4px 6px;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.75);border-bottom:1px solid #b6b6b6;border-radius:2px 2px 0 0;box-shadow:0 1px 0 #fff inset;background:#cfd1cf;background-image:linear-gradient(to bottom,#f5f5f5,#cfd1cf);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f5f5f5',endColorstr='#cfd1cf')}.cke_panel_listItem p,.cke_panel_listItem h1,.cke_panel_listItem h2,.cke_panel_listItem h3,.cke_panel_listItem h4,.cke_panel_listItem h5,.cke_panel_listItem h6,.cke_panel_listItem pre{margin-top:0;margin-bottom:0}.cke_colorblock{padding:3px;font-size:11px;font-family:'Microsoft Sans Serif',Tahoma,Arial,Verdana,Sans-Serif}.cke_colorblock,.cke_colorblock a{text-decoration:none;color:#000}span.cke_colorbox{width:10px;height:10px;border:#808080 1px solid;float:left}.cke_rtl span.cke_colorbox{float:right}a.cke_colorbox{border:#fff 1px solid;padding:2px;float:left;width:12px;height:12px}.cke_rtl a.cke_colorbox{float:right}a:hover.cke_colorbox,a:focus.cke_colorbox,a:active.cke_colorbox{border:#b6b6b6 1px solid;background-color:#e5e5e5}a.cke_colorauto,a.cke_colormore{border:#fff 1px solid;padding:2px;display:block;cursor:pointer}a:hover.cke_colorauto,a:hover.cke_colormore,a:focus.cke_colorauto,a:focus.cke_colormore,a:active.cke_colorauto,a:active.cke_colormore{border:#b6b6b6 1px solid;background-color:#e5e5e5}.cke_toolbar{float:left}.cke_rtl .cke_toolbar{float:right}.cke_toolgroup{float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_hc .cke_toolgroup{border:0;margin-right:10px;margin-bottom:10px}.cke_rtl .cke_toolgroup{float:right;margin-left:6px;margin-right:0}a.cke_button{display:inline-block;height:18px;padding:4px 6px;outline:0;cursor:default;float:left;border:0}a.cke_button.cke_button_expandable{padding:4px 5px}.cke_ltr .cke_button:last-child,.cke_rtl .cke_button:first-child{border-radius:0 2px 2px 0}.cke_ltr .cke_button:first-child,.cke_rtl .cke_button:last-child{border-radius:2px 0 0 2px}.cke_rtl .cke_button{float:right}.cke_hc .cke_button{border:1px solid black;padding:3px 5px;margin:-2px 4px 0 -2px}a.cke_button_on{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2);background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc a.cke_button_disabled:hover,.cke_hc a.cke_button_disabled:focus,.cke_hc a.cke_button_disabled:active{border-width:3px;padding:1px 3px}.cke_button_disabled .cke_button_icon{opacity:.3}.cke_hc .cke_button_disabled{opacity:.5}a.cke_button_on:hover,a.cke_button_on:focus,a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:hover,a.cke_button_off:focus,a.cke_button_off:active,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}@media screen and (hover:none){a.cke_button_off:hover,a.cke_button_disabled:hover{box-shadow:none;background:transparent;filter:none}a.cke_button_on:hover{box-shadow:0 1px 5px rgba(0,0,0,.6) inset,0 1px 0 rgba(0,0,0,.2)}a.cke_button_off:active,a.cke_button_disabled:active{box-shadow:0 0 1px rgba(0,0,0,.3) inset;background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}a.cke_button_on:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_button_icon{cursor:inherit;background-repeat:no-repeat;margin-top:1px;width:16px;height:16px;float:left;display:inline-block}.cke_rtl .cke_button_icon{float:right}.cke_hc .cke_button_icon{display:none}.cke_button_label{display:none;padding-left:3px;margin-top:1px;line-height:17px;vertical-align:middle;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5)}.cke_rtl .cke_button_label{padding-right:3px;padding-left:0;float:right}.cke_hc .cke_button_label{padding:0;display:inline-block;font-size:12px}.cke_button_arrow{display:inline-block;margin:8px 0 0 3px;width:0;height:0;cursor:default;vertical-align:top;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_rtl .cke_button_arrow{margin-right:5px;margin-left:0}.cke_hc .cke_button_arrow{font-size:10px;margin:3px -2px 0 3px;width:auto;border:0}.cke_toolbar_separator{float:left;background-color:#c0c0c0;background-color:rgba(0,0,0,.2);margin:5px 2px 0;height:18px;width:1px;box-shadow:1px 0 1px rgba(255,255,255,.5)}.cke_rtl .cke_toolbar_separator{float:right;box-shadow:-1px 0 1px rgba(255,255,255,.1)}.cke_hc .cke_toolbar_separator{width:0;border-left:1px solid;margin:1px 5px 0 0}.cke_toolbar_break{display:block;clear:left}.cke_rtl .cke_toolbar_break{clear:right}a.cke_toolbox_collapser{width:12px;height:11px;float:right;margin:11px 0 0;font-size:0;cursor:default;text-align:center;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_toolbox_collapser:hover{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc')}.cke_toolbox_collapser.cke_toolbox_collapser_min{margin:0 2px 4px}.cke_rtl .cke_toolbox_collapser{float:left}.cke_toolbox_collapser .cke_arrow{display:inline-block;height:0;width:0;font-size:0;margin-top:1px;border-left:3px solid transparent;border-right:3px solid transparent;border-bottom:3px solid #474747;border-top:3px solid transparent}.cke_toolbox_collapser.cke_toolbox_collapser_min .cke_arrow{margin-top:4px;border-bottom-color:transparent;border-top-color:#474747}.cke_hc .cke_toolbox_collapser .cke_arrow{font-size:8px;width:auto;border:0;margin-top:0;margin-right:2px}.cke_menubutton{display:block}.cke_menuitem span{cursor:default}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#d3d3d3;display:block}.cke_hc .cke_menubutton{padding:2px}.cke_hc .cke_menubutton:hover,.cke_hc .cke_menubutton:focus,.cke_hc .cke_menubutton:active{border:2px solid;padding:0}.cke_menubutton_inner{display:table-row}.cke_menubutton_icon,.cke_menubutton_label,.cke_menuarrow{display:table-cell}.cke_menubutton_icon{background-color:#d7d8d7;opacity:.70;filter:alpha(opacity=70);padding:4px}.cke_hc .cke_menubutton_icon{height:16px;width:0;padding:4px 0}.cke_menubutton:hover .cke_menubutton_icon,.cke_menubutton:focus .cke_menubutton_icon,.cke_menubutton:active .cke_menubutton_icon{background-color:#d0d2d0}.cke_menubutton_disabled:hover .cke_menubutton_icon,.cke_menubutton_disabled:focus .cke_menubutton_icon,.cke_menubutton_disabled:active .cke_menubutton_icon{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_label{padding:0 5px;background-color:transparent;width:100%;vertical-align:middle}.cke_menubutton_shortcut{color:#979797}.cke_menubutton_disabled .cke_menubutton_label{opacity:.3;filter:alpha(opacity=30)}.cke_menubutton_on{border:1px solid #dedede;background-color:#f2f2f2;box-shadow:0 0 2px rgba(0,0,0,.1) inset}.cke_menubutton_on .cke_menubutton_icon{padding-right:3px}.cke_menubutton:hover,.cke_menubutton:focus,.cke_menubutton:active{background-color:#eff0ef}.cke_panel_frame .cke_menubutton_label{display:none}.cke_menuseparator{background-color:#d3d3d3;height:1px;filter:alpha(opacity=70);opacity:.70}.cke_menuarrow{background-image:url(images/arrow.png);background-position:0 10px;background-repeat:no-repeat;padding:0 5px}.cke_rtl .cke_menuarrow{background-position:5px -13px;background-repeat:no-repeat}.cke_menuarrow span{display:none}.cke_hc .cke_menuarrow span{vertical-align:middle;display:inline}.cke_combo{display:inline-block;float:left}.cke_rtl .cke_combo{float:right}.cke_hc .cke_combo{margin-top:-2px}.cke_combo_label{display:none;float:left;line-height:26px;vertical-align:top;margin-right:5px}.cke_rtl .cke_combo_label{float:right;margin-left:5px;margin-right:0}a.cke_combo_button{cursor:default;display:inline-block;float:left;margin:0 6px 5px 0;border:1px solid #a6a6a6;border-bottom-color:#979797;border-radius:3px;box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset;background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4')}.cke_combo_off a.cke_combo_button:hover,.cke_combo_off a.cke_combo_button:focus{background:#ccc;background-image:linear-gradient(to bottom,#f2f2f2,#ccc);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#f2f2f2',endColorstr='#cccccc');outline:0}.cke_combo_off a.cke_combo_button:active,.cke_combo_on a.cke_combo_button{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:hover,.cke_combo_on a.cke_combo_button:focus,.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}@media screen and (hover:none){.cke_combo_off a.cke_combo_button:hover{background:#e4e4e4;background-image:linear-gradient(to bottom,#fff,#e4e4e4);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#ffffff',endColorstr='#e4e4e4');outline:0}.cke_combo_on a.cke_combo_button:hover{box-shadow:0 1px 0 rgba(255,255,255,.5),0 0 2px rgba(255,255,255,.15) inset,0 1px 0 rgba(255,255,255,.15) inset}.cke_combo_off a.cke_combo_button:active{border:1px solid #777;box-shadow:0 1px 0 rgba(255,255,255,.5),0 1px 5px rgba(0,0,0,.6) inset;background:#b5b5b5;background-image:linear-gradient(to bottom,#aaa,#cacaca);filter:progid:DXImageTransform.Microsoft.gradient(gradientType=0,startColorstr='#aaaaaa',endColorstr='#cacaca')}.cke_combo_on a.cke_combo_button:active{box-shadow:0 1px 6px rgba(0,0,0,.7) inset,0 1px 0 rgba(0,0,0,.2)}}.cke_rtl .cke_combo_button{float:right;margin-left:5px;margin-right:0}.cke_hc a.cke_combo_button{padding:3px}.cke_hc .cke_combo_on a.cke_combo_button,.cke_hc .cke_combo_off a.cke_combo_button:hover,.cke_hc .cke_combo_off a.cke_combo_button:focus,.cke_hc .cke_combo_off a.cke_combo_button:active{border-width:3px;padding:1px}.cke_combo_text{line-height:26px;padding-left:10px;text-overflow:ellipsis;overflow:hidden;float:left;cursor:default;color:#474747;text-shadow:0 1px 0 rgba(255,255,255,.5);width:60px}.cke_rtl .cke_combo_text{float:right;text-align:right;padding-left:0;padding-right:10px}.cke_hc .cke_combo_text{line-height:18px;font-size:12px}.cke_combo_open{cursor:default;display:inline-block;font-size:0;height:19px;line-height:17px;margin:1px 7px 1px;width:5px}.cke_hc .cke_combo_open{height:12px}.cke_combo_arrow{cursor:default;margin:11px 0 0;float:left;height:0;width:0;font-size:0;border-left:3px solid transparent;border-right:3px solid transparent;border-top:3px solid #474747}.cke_hc .cke_combo_arrow{font-size:10px;width:auto;border:0;margin-top:3px}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{opacity:.3}.cke_path{float:left;margin:-2px 0 2px}a.cke_path_item,span.cke_path_empty{display:inline-block;float:left;padding:3px 4px;margin-right:2px;cursor:default;text-decoration:none;outline:0;border:0;color:#4c4c4c;text-shadow:0 1px 0 #fff;font-weight:bold;font-size:11px}.cke_rtl .cke_path,.cke_rtl .cke_path_item,.cke_rtl .cke_path_empty{float:right}a.cke_path_item:hover,a.cke_path_item:focus,a.cke_path_item:active{background-color:#bfbfbf;color:#333;text-shadow:0 1px 0 rgba(255,255,255,.5);border-radius:2px;box-shadow:0 0 4px rgba(0,0,0,.5) inset,0 1px 0 rgba(255,255,255,.5)}.cke_hc a.cke_path_item:hover,.cke_hc a.cke_path_item:focus,.cke_hc a.cke_path_item:active{border:2px solid;padding:1px 2px}.cke_button__source_label,.cke_button__sourcedialog_label{display:inline}.cke_combo__fontsize .cke_combo_text{width:30px}.cke_combopanel__fontsize{width:120px}textarea.cke_source{font-family:'Courier New',Monospace;font-size:small;background-color:#fff;white-space:pre-wrap;border:0;padding:0;margin:0;display:block}.cke_wysiwyg_frame,.cke_wysiwyg_div{background-color:#fff}.cke_notifications_area{pointer-events:none}.cke_notification{pointer-events:auto;position:relative;margin:10px;width:300px;color:white;border-radius:3px;text-align:center;opacity:.95;filter:alpha(opacity = 95);box-shadow:2px 2px 3px 0 rgba(50,50,50,0.3);-webkit-animation:fadeIn .7s;animation:fadeIn .7s}.cke_notification_message a{color:#12306f}@-webkit-keyframes fadeIn{from{opacity:.4}to{opacity:.95}}@keyframes fadeIn{from{opacity:.4}to{opacity:.95}}.cke_notification_success{background:#72b572;border:1px solid #63a563}.cke_notification_warning{background:#c83939;border:1px solid #902b2b}.cke_notification_info{background:#2e9ad0;border:1px solid #0f74a8}.cke_notification_info span.cke_notification_progress{background-color:#0f74a8;display:block;padding:0;margin:0;height:100%;overflow:hidden;position:absolute;z-index:1}.cke_notification_message{position:relative;margin:4px 23px 3px;font-family:Arial,Helvetica,sans-serif;font-size:12px;line-height:18px;z-index:4;text-overflow:ellipsis;overflow:hidden}.cke_notification_close{background-image:url(images/close.png);background-repeat:no-repeat;background-position:50%;position:absolute;cursor:pointer;text-align:center;height:20px;width:20px;top:1px;right:1px;padding:0;margin:0;z-index:5;opacity:.6;filter:alpha(opacity = 60)}.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_notification_close span{display:none}.cke_notification_warning a.cke_notification_close{opacity:.8;filter:alpha(opacity = 80)}.cke_notification_warning a.cke_notification_close:hover{opacity:1;filter:alpha(opacity = 100)}.cke_chrome{visibility:inherit}.cke_voice_label{display:none}legend.cke_voice_label{display:none}.cke_button__about_icon{background:url(icons.png?t=MAUF) no-repeat 0 -0px!important}.cke_rtl .cke_button__anchor_icon,.cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -24px!important}.cke_ltr .cke_button__anchor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -48px!important}.cke_button__bgcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -72px!important}.cke_button__bidiltr_icon{background:url(icons.png?t=MAUF) no-repeat 0 -96px!important}.cke_button__bidirtl_icon{background:url(icons.png?t=MAUF) no-repeat 0 -120px!important}.cke_button__blockquote_icon{background:url(icons.png?t=MAUF) no-repeat 0 -144px!important}.cke_button__bold_icon{background:url(icons.png?t=MAUF) no-repeat 0 -168px!important}.cke_rtl .cke_button__bulletedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -192px!important}.cke_ltr .cke_button__bulletedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -216px!important}.cke_button__button_icon{background:url(icons.png?t=MAUF) no-repeat 0 -240px!important}.cke_button__checkbox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -264px!important}.cke_button__codesnippet_icon{background:url(icons.png?t=MAUF) no-repeat 0 -288px!important}.cke_rtl .cke_button__copy_icon,.cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -312px!important}.cke_ltr .cke_button__copy_icon{background:url(icons.png?t=MAUF) no-repeat 0 -336px!important}.cke_button__copyformatting_icon{background:url(icons.png?t=MAUF) no-repeat 0 -360px!important}.cke_button__creatediv_icon{background:url(icons.png?t=MAUF) no-repeat 0 -384px!important}.cke_rtl .cke_button__cut_icon,.cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -408px!important}.cke_ltr .cke_button__cut_icon{background:url(icons.png?t=MAUF) no-repeat 0 -432px!important}.cke_rtl .cke_button__docprops_icon,.cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -456px!important}.cke_ltr .cke_button__docprops_icon{background:url(icons.png?t=MAUF) no-repeat 0 -480px!important}.cke_rtl .cke_button__find_icon,.cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -504px!important}.cke_ltr .cke_button__find_icon{background:url(icons.png?t=MAUF) no-repeat 0 -528px!important}.cke_button__form_icon{background:url(icons.png?t=MAUF) no-repeat 0 -552px!important}.cke_button__hiddenfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -576px!important}.cke_button__horizontalrule_icon{background:url(icons.png?t=MAUF) no-repeat 0 -600px!important}.cke_button__iframe_icon{background:url(icons.png?t=MAUF) no-repeat 0 -624px!important}.cke_button__image_icon{background:url(icons.png?t=MAUF) no-repeat 0 -648px!important}.cke_button__imagebutton_icon{background:url(icons.png?t=MAUF) no-repeat 0 -672px!important}.cke_rtl .cke_button__indent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -696px!important}.cke_ltr .cke_button__indent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -720px!important}.cke_button__italic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -744px!important}.cke_button__justifyblock_icon{background:url(icons.png?t=MAUF) no-repeat 0 -768px!important}.cke_button__justifycenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -792px!important}.cke_button__justifyleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -816px!important}.cke_button__justifyright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -840px!important}.cke_button__language_icon{background:url(icons.png?t=MAUF) no-repeat 0 -864px!important}.cke_button__link_icon{background:url(icons.png?t=MAUF) no-repeat 0 -888px!important}.cke_button__maximize_icon{background:url(icons.png?t=MAUF) no-repeat 0 -912px!important}.cke_rtl .cke_button__newpage_icon,.cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -936px!important}.cke_ltr .cke_button__newpage_icon{background:url(icons.png?t=MAUF) no-repeat 0 -960px!important}.cke_rtl .cke_button__numberedlist_icon,.cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -984px!important}.cke_ltr .cke_button__numberedlist_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1008px!important}.cke_rtl .cke_button__outdent_icon,.cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1032px!important}.cke_ltr .cke_button__outdent_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1056px!important}.cke_rtl .cke_button__pagebreak_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1080px!important}.cke_ltr .cke_button__pagebreak_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1104px!important}.cke_rtl .cke_button__paste_icon,.cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1128px!important}.cke_ltr .cke_button__paste_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1152px!important}.cke_rtl .cke_button__pastefromword_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1176px!important}.cke_ltr .cke_button__pastefromword_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1200px!important}.cke_rtl .cke_button__pastetext_icon,.cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1224px!important}.cke_ltr .cke_button__pastetext_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1248px!important}.cke_button__placeholder_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1272px!important}.cke_rtl .cke_button__preview_icon,.cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1296px!important}.cke_ltr .cke_button__preview_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1320px!important}.cke_button__print_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1344px!important}.cke_button__radio_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1368px!important}.cke_rtl .cke_button__redo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1392px!important}.cke_ltr .cke_button__redo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1416px!important}.cke_button__removeformat_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1440px!important}.cke_button__replace_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1464px!important}.cke_button__save_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1488px!important}.cke_button__scayt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1512px!important}.cke_rtl .cke_button__select_icon,.cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1536px!important}.cke_ltr .cke_button__select_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1560px!important}.cke_button__selectall_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1584px!important}.cke_rtl .cke_button__showblocks_icon,.cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1608px!important}.cke_ltr .cke_button__showblocks_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1632px!important}.cke_button__smiley_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1656px!important}.cke_rtl .cke_button__source_icon,.cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1680px!important}.cke_ltr .cke_button__source_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1704px!important}.cke_rtl .cke_button__sourcedialog_icon,.cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1728px!important}.cke_ltr .cke_button__sourcedialog_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1752px!important}.cke_button__specialchar_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1776px!important}.cke_button__strike_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1800px!important}.cke_button__subscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1824px!important}.cke_button__superscript_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1848px!important}.cke_button__table_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1872px!important}.cke_rtl .cke_button__templates_icon,.cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1896px!important}.cke_ltr .cke_button__templates_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1920px!important}.cke_rtl .cke_button__textarea_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1944px!important}.cke_ltr .cke_button__textarea_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1968px!important}.cke_button__textcolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -1992px!important}.cke_rtl .cke_button__textfield_icon,.cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2016px!important}.cke_ltr .cke_button__textfield_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2040px!important}.cke_button__uicolor_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2064px!important}.cke_button__underline_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2088px!important}.cke_rtl .cke_button__undo_icon,.cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2112px!important}.cke_ltr .cke_button__undo_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2136px!important}.cke_button__unlink_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2160px!important}.cke_button__easyimagealigncenter_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2184px!important}.cke_button__easyimagealignleft_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2208px!important}.cke_button__easyimagealignright_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2232px!important}.cke_button__easyimagealt_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2256px!important}.cke_button__easyimagefull_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2280px!important}.cke_button__easyimageside_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2304px!important}.cke_button__easyimageupload_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2328px!important}.cke_button__embed_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2352px!important}.cke_button__embedsemantic_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2376px!important}.cke_button__emojipanel_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2400px!important}.cke_button__exportpdf_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2424px!important}.cke_button__mathjax_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2448px!important}.cke_button__simplebox_icon{background:url(icons.png?t=MAUF) no-repeat 0 -2472px!important}.cke_hidpi .cke_button__about_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -0px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__anchor_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -24px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__anchor_icon,.cke_ltr.cke_hidpi .cke_button__anchor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -48px!important;background-size:16px!important}.cke_hidpi .cke_button__bgcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -72px!important;background-size:16px!important}.cke_hidpi .cke_button__bidiltr_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -96px!important;background-size:16px!important}.cke_hidpi .cke_button__bidirtl_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -120px!important;background-size:16px!important}.cke_hidpi .cke_button__blockquote_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -144px!important;background-size:16px!important}.cke_hidpi .cke_button__bold_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -168px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__bulletedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -192px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__bulletedlist_icon,.cke_ltr.cke_hidpi .cke_button__bulletedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -216px!important;background-size:16px!important}.cke_hidpi .cke_button__button_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -240px!important;background-size:16px!important}.cke_hidpi .cke_button__checkbox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -264px!important;background-size:16px!important}.cke_hidpi .cke_button__codesnippet_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -288px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__copy_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -312px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__copy_icon,.cke_ltr.cke_hidpi .cke_button__copy_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -336px!important;background-size:16px!important}.cke_hidpi .cke_button__copyformatting_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -360px!important;background-size:16px!important}.cke_hidpi .cke_button__creatediv_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -384px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__cut_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -408px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__cut_icon,.cke_ltr.cke_hidpi .cke_button__cut_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -432px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__docprops_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -456px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__docprops_icon,.cke_ltr.cke_hidpi .cke_button__docprops_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -480px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__find_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -504px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__find_icon,.cke_ltr.cke_hidpi .cke_button__find_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -528px!important;background-size:16px!important}.cke_hidpi .cke_button__form_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -552px!important;background-size:16px!important}.cke_hidpi .cke_button__hiddenfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -576px!important;background-size:16px!important}.cke_hidpi .cke_button__horizontalrule_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -600px!important;background-size:16px!important}.cke_hidpi .cke_button__iframe_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -624px!important;background-size:16px!important}.cke_hidpi .cke_button__image_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -648px!important;background-size:16px!important}.cke_hidpi .cke_button__imagebutton_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -672px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__indent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -696px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__indent_icon,.cke_ltr.cke_hidpi .cke_button__indent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -720px!important;background-size:16px!important}.cke_hidpi .cke_button__italic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -744px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyblock_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -768px!important;background-size:16px!important}.cke_hidpi .cke_button__justifycenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -792px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -816px!important;background-size:16px!important}.cke_hidpi .cke_button__justifyright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -840px!important;background-size:16px!important}.cke_hidpi .cke_button__language_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -864px!important;background-size:16px!important}.cke_hidpi .cke_button__link_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -888px!important;background-size:16px!important}.cke_hidpi .cke_button__maximize_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -912px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__newpage_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -936px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__newpage_icon,.cke_ltr.cke_hidpi .cke_button__newpage_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -960px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__numberedlist_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -984px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__numberedlist_icon,.cke_ltr.cke_hidpi .cke_button__numberedlist_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1008px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__outdent_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1032px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__outdent_icon,.cke_ltr.cke_hidpi .cke_button__outdent_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1056px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pagebreak_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1080px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pagebreak_icon,.cke_ltr.cke_hidpi .cke_button__pagebreak_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1104px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__paste_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1128px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__paste_icon,.cke_ltr.cke_hidpi .cke_button__paste_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1152px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastefromword_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1176px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastefromword_icon,.cke_ltr.cke_hidpi .cke_button__pastefromword_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1200px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__pastetext_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1224px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__pastetext_icon,.cke_ltr.cke_hidpi .cke_button__pastetext_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1248px!important;background-size:16px!important}.cke_hidpi .cke_button__placeholder_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1272px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__preview_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1296px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__preview_icon,.cke_ltr.cke_hidpi .cke_button__preview_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1320px!important;background-size:16px!important}.cke_hidpi .cke_button__print_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1344px!important;background-size:16px!important}.cke_hidpi .cke_button__radio_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1368px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__redo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1392px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__redo_icon,.cke_ltr.cke_hidpi .cke_button__redo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1416px!important;background-size:16px!important}.cke_hidpi .cke_button__removeformat_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1440px!important;background-size:16px!important}.cke_hidpi .cke_button__replace_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1464px!important;background-size:16px!important}.cke_hidpi .cke_button__save_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1488px!important;background-size:16px!important}.cke_hidpi .cke_button__scayt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1512px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__select_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1536px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__select_icon,.cke_ltr.cke_hidpi .cke_button__select_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1560px!important;background-size:16px!important}.cke_hidpi .cke_button__selectall_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1584px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__showblocks_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1608px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__showblocks_icon,.cke_ltr.cke_hidpi .cke_button__showblocks_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1632px!important;background-size:16px!important}.cke_hidpi .cke_button__smiley_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1656px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__source_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1680px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__source_icon,.cke_ltr.cke_hidpi .cke_button__source_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1704px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__sourcedialog_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1728px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__sourcedialog_icon,.cke_ltr.cke_hidpi .cke_button__sourcedialog_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1752px!important;background-size:16px!important}.cke_hidpi .cke_button__specialchar_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1776px!important;background-size:16px!important}.cke_hidpi .cke_button__strike_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1800px!important;background-size:16px!important}.cke_hidpi .cke_button__subscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1824px!important;background-size:16px!important}.cke_hidpi .cke_button__superscript_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1848px!important;background-size:16px!important}.cke_hidpi .cke_button__table_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1872px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__templates_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1896px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__templates_icon,.cke_ltr.cke_hidpi .cke_button__templates_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1920px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textarea_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1944px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textarea_icon,.cke_ltr.cke_hidpi .cke_button__textarea_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1968px!important;background-size:16px!important}.cke_hidpi .cke_button__textcolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -1992px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__textfield_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2016px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__textfield_icon,.cke_ltr.cke_hidpi .cke_button__textfield_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2040px!important;background-size:16px!important}.cke_hidpi .cke_button__uicolor_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2064px!important;background-size:16px!important}.cke_hidpi .cke_button__underline_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2088px!important;background-size:16px!important}.cke_rtl.cke_hidpi .cke_button__undo_icon,.cke_hidpi .cke_mixed_dir_content .cke_rtl .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2112px!important;background-size:16px!important}.cke_hidpi .cke_ltr .cke_button__undo_icon,.cke_ltr.cke_hidpi .cke_button__undo_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2136px!important;background-size:16px!important}.cke_hidpi .cke_button__unlink_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2160px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealigncenter_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2184px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignleft_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2208px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealignright_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2232px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagealt_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2256px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimagefull_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2280px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageside_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2304px!important;background-size:16px!important}.cke_hidpi .cke_button__easyimageupload_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2328px!important;background-size:16px!important}.cke_hidpi .cke_button__embed_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2352px!important;background-size:16px!important}.cke_hidpi .cke_button__embedsemantic_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2376px!important;background-size:16px!important}.cke_hidpi .cke_button__emojipanel_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2400px!important;background-size:16px!important}.cke_hidpi .cke_button__exportpdf_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2424px!important;background-size:16px!important}.cke_hidpi .cke_button__mathjax_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -2448px!important;background-size:16px!important}.cke_hidpi .cke_button__simplebox_icon{background:url(icons_hidpi.png?t=MAUF) no-repeat 0 -4944px!important}a.cke_button_disabled,a.cke_button_disabled:hover,a.cke_button_disabled:focus,a.cke_button_disabled:active{filter:alpha(opacity = 30)}.cke_button_disabled .cke_button_icon{filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#00ffffff,endColorstr=#00ffffff)}.cke_button_off:hover,.cke_button_off:focus,.cke_button_off:active{filter:alpha(opacity = 100)}.cke_combo_disabled .cke_combo_inlinelabel,.cke_combo_disabled .cke_combo_open{filter:alpha(opacity = 30)}.cke_toolbox_collapser{border:1px solid #a6a6a6}.cke_toolbox_collapser .cke_arrow{margin-top:1px}.cke_hc .cke_top,.cke_hc .cke_bottom,.cke_hc .cke_combo_button,.cke_hc a.cke_combo_button:hover,.cke_hc a.cke_combo_button:focus,.cke_hc .cke_toolgroup,.cke_hc .cke_button_on,.cke_hc a.cke_button_off:hover,.cke_hc a.cke_button_off:focus,.cke_hc a.cke_button_off:active,.cke_hc .cke_toolbox_collapser,.cke_hc .cke_toolbox_collapser:hover,.cke_hc .cke_panel_grouptitle{filter:progid:DXImageTransform.Microsoft.gradient(enabled=false)}.cke_top,.cke_contents,.cke_bottom{width:100%}.cke_button_arrow{font-size:0}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_button,.cke_rtl .cke_button *,.cke_rtl .cke_combo,.cke_rtl .cke_combo *,.cke_rtl .cke_path_item,.cke_rtl .cke_path_item *,.cke_rtl .cke_path_empty{float:none}.cke_rtl .cke_toolgroup,.cke_rtl .cke_toolbar_separator,.cke_rtl .cke_combo_button,.cke_rtl .cke_combo_button *,.cke_rtl .cke_button,.cke_rtl .cke_button_icon{display:inline-block;vertical-align:top}.cke_rtl .cke_button_icon{float:none}.cke_resizer{width:10px}.cke_source{white-space:normal}.cke_bottom{position:static}.cke_colorbox{font-size:0} \ No newline at end of file diff --git a/public/build/ckeditor/skins/moono/icons.png b/public/build/ckeditor/skins/moono/icons.png deleted file mode 100644 index 84991cb3..00000000 Binary files a/public/build/ckeditor/skins/moono/icons.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/icons_hidpi.png b/public/build/ckeditor/skins/moono/icons_hidpi.png deleted file mode 100644 index 206c17e8..00000000 Binary files a/public/build/ckeditor/skins/moono/icons_hidpi.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/anchor.png b/public/build/ckeditor/skins/moono/images/anchor.png deleted file mode 100644 index 1c802f59..00000000 Binary files a/public/build/ckeditor/skins/moono/images/anchor.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/arrow.png b/public/build/ckeditor/skins/moono/images/arrow.png deleted file mode 100644 index d72b5f3b..00000000 Binary files a/public/build/ckeditor/skins/moono/images/arrow.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/close.png b/public/build/ckeditor/skins/moono/images/close.png deleted file mode 100644 index 2d029773..00000000 Binary files a/public/build/ckeditor/skins/moono/images/close.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/hidpi/anchor.png b/public/build/ckeditor/skins/moono/images/hidpi/anchor.png deleted file mode 100644 index 17cca974..00000000 Binary files a/public/build/ckeditor/skins/moono/images/hidpi/anchor.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/hidpi/close.png b/public/build/ckeditor/skins/moono/images/hidpi/close.png deleted file mode 100644 index de4eedf6..00000000 Binary files a/public/build/ckeditor/skins/moono/images/hidpi/close.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/hidpi/lock-open.png b/public/build/ckeditor/skins/moono/images/hidpi/lock-open.png deleted file mode 100644 index 594f0d33..00000000 Binary files a/public/build/ckeditor/skins/moono/images/hidpi/lock-open.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/hidpi/lock.png b/public/build/ckeditor/skins/moono/images/hidpi/lock.png deleted file mode 100644 index 1e23a0b2..00000000 Binary files a/public/build/ckeditor/skins/moono/images/hidpi/lock.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/hidpi/refresh.png b/public/build/ckeditor/skins/moono/images/hidpi/refresh.png deleted file mode 100644 index 42d94a91..00000000 Binary files a/public/build/ckeditor/skins/moono/images/hidpi/refresh.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/lock-open.png b/public/build/ckeditor/skins/moono/images/lock-open.png deleted file mode 100644 index 7d24c5f8..00000000 Binary files a/public/build/ckeditor/skins/moono/images/lock-open.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/lock.png b/public/build/ckeditor/skins/moono/images/lock.png deleted file mode 100644 index 8baeaa4b..00000000 Binary files a/public/build/ckeditor/skins/moono/images/lock.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/refresh.png b/public/build/ckeditor/skins/moono/images/refresh.png deleted file mode 100644 index d8106b03..00000000 Binary files a/public/build/ckeditor/skins/moono/images/refresh.png and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/images/spinner.gif b/public/build/ckeditor/skins/moono/images/spinner.gif deleted file mode 100644 index d898d41f..00000000 Binary files a/public/build/ckeditor/skins/moono/images/spinner.gif and /dev/null differ diff --git a/public/build/ckeditor/skins/moono/readme.md b/public/build/ckeditor/skins/moono/readme.md deleted file mode 100644 index 37709c95..00000000 --- a/public/build/ckeditor/skins/moono/readme.md +++ /dev/null @@ -1,49 +0,0 @@ -"Moono" Skin -==================== - -This skin has been chosen for the **default skin** of CKEditor 4.x.x (replaced by "Moono-lisa" skin since CKEditor 4.6.0), -elected from the CKEditor [skin contest](https://ckeditor.com/blog/CKEditor-4-Skin-Contest-Winner/) and further shaped by -the CKEditor team. "Moono" is maintained by the core developers. - -For more information about skins, please check the [CKEditor Skin SDK](https://ckeditor.com/docs/ckeditor4/latest/guide/skin_sdk_intro.html) -documentation. - -Features -------------------- -"Moono" is a monochromatic skin, which offers a modern look coupled with gradients and transparency. -It comes with the following features: - -- Chameleon feature with brightness, -- high-contrast compatibility, -- graphics source provided in SVG. - -Directory Structure -------------------- - -CSS parts: -- **editor.css**: the main CSS file. It's simply loading several other files, for easier maintenance, -- **mainui.css**: the file contains styles of entire editor outline structures, -- **toolbar.css**: the file contains styles of the editor toolbar space (top), -- **richcombo.css**: the file contains styles of the rich combo ui elements on toolbar, -- **panel.css**: the file contains styles of the rich combo drop-down, it's not loaded -until the first panel open up, -- **elementspath.css**: the file contains styles of the editor elements path bar (bottom), -- **menu.css**: the file contains styles of all editor menus including context menu and button drop-down, -it's not loaded until the first menu open up, -- **dialog.css**: the CSS files for the dialog UI, it's not loaded until the first dialog open, -- **reset.css**: the file defines the basis of style resets among all editor UI spaces, -- **preset.css**: the file defines the default styles of some UI elements reflecting the skin preference, -- **editor_XYZ.css** and **dialog_XYZ.css**: browser specific CSS hacks. - -Other parts: -- **skin.js**: the only JavaScript part of the skin that registers the skin, its browser specific files and its icons and defines the Chameleon feature, -- **icons/**: contains all skin defined icons, -- **images/**: contains a fill general used images, -- **dev/**: contains SVG source of the skin icons. - -License -------- - -Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - -For licensing, see LICENSE.md or [https://ckeditor.com/legal/ckeditor-oss-license](https://ckeditor.com/legal/ckeditor-oss-license) diff --git a/public/build/ckeditor/skins/moono/skin.js b/public/build/ckeditor/skins/moono/skin.js deleted file mode 100644 index 7d1c37b0..00000000 --- a/public/build/ckeditor/skins/moono/skin.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license -*/ -CKEDITOR.skin.name="moono";CKEDITOR.skin.ua_editor="ie,iequirks,ie7,ie8,gecko";CKEDITOR.skin.ua_dialog="ie,iequirks,ie7,ie8"; -CKEDITOR.skin.chameleon=function(){var b=function(){return function(b,e){for(var a=b.match(/[^#]./g),c=0;3>c;c++){var f=c,d;d=parseInt(a[c],16);d=("0"+(0>e?0|d*(1+e):0|d+(255-d)*e).toString(16)).slice(-2);a[f]=d}return"#"+a.join("")}}(),c=function(){var b=new CKEDITOR.template("background:#{to};background-image:linear-gradient(to bottom,{from},{to});filter:progid:DXImageTransform.Microsoft.gradient(gradientType\x3d0,startColorstr\x3d'{from}',endColorstr\x3d'{to}');");return function(c,a){return b.output({from:c, -to:a})}}(),f={editor:new CKEDITOR.template("{id}.cke_chrome [border-color:{defaultBorder};] {id} .cke_top [ {defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_bottom [{defaultGradient}border-top-color:{defaultBorder};] {id} .cke_resizer [border-right-color:{ckeResizer}] {id} .cke_dialog_title [{defaultGradient}border-bottom-color:{defaultBorder};] {id} .cke_dialog_footer [{defaultGradient}outline-color:{defaultBorder};border-top-color:{defaultBorder};] {id} .cke_dialog_tab [{lightGradient}border-color:{defaultBorder};] {id} .cke_dialog_tab:hover [{mediumGradient}] {id} .cke_dialog_contents [border-top-color:{defaultBorder};] {id} .cke_dialog_tab_selected, {id} .cke_dialog_tab_selected:hover [background:{dialogTabSelected};border-bottom-color:{dialogTabSelectedBorder};] {id} .cke_dialog_body [background:{dialogBody};border-color:{defaultBorder};] {id} .cke_toolgroup [{lightGradient}border-color:{defaultBorder};] {id} a.cke_button_off:hover, {id} a.cke_button_off:focus, {id} a.cke_button_off:active [{mediumGradient}] {id} .cke_button_on [{ckeButtonOn}] {id} .cke_toolbar_separator [background-color: {ckeToolbarSeparator};] {id} .cke_combo_button [border-color:{defaultBorder};{lightGradient}] {id} a.cke_combo_button:hover, {id} a.cke_combo_button:focus, {id} .cke_combo_on a.cke_combo_button [border-color:{defaultBorder};{mediumGradient}] {id} .cke_path_item [color:{elementsPathColor};] {id} a.cke_path_item:hover, {id} a.cke_path_item:focus, {id} a.cke_path_item:active [background-color:{elementsPathBg};] {id}.cke_panel [border-color:{defaultBorder};] "), -panel:new CKEDITOR.template(".cke_panel_grouptitle [{lightGradient}border-color:{defaultBorder};] .cke_menubutton_icon [background-color:{menubuttonIcon};] .cke_menubutton:hover .cke_menubutton_icon, .cke_menubutton:focus .cke_menubutton_icon, .cke_menubutton:active .cke_menubutton_icon [background-color:{menubuttonIconHover};] .cke_menuseparator [background-color:{menubuttonIcon};] a:hover.cke_colorbox, a:focus.cke_colorbox, a:active.cke_colorbox [border-color:{defaultBorder};] a:hover.cke_colorauto, a:hover.cke_colormore, a:focus.cke_colorauto, a:focus.cke_colormore, a:active.cke_colorauto, a:active.cke_colormore [background-color:{ckeColorauto};border-color:{defaultBorder};] ")}; -return function(g,e){var a=g.uiColor,a={id:"."+g.id,defaultBorder:b(a,-.1),defaultGradient:c(b(a,.9),a),lightGradient:c(b(a,1),b(a,.7)),mediumGradient:c(b(a,.8),b(a,.5)),ckeButtonOn:c(b(a,.6),b(a,.7)),ckeResizer:b(a,-.4),ckeToolbarSeparator:b(a,.5),ckeColorauto:b(a,.8),dialogBody:b(a,.7),dialogTabSelected:c("#FFFFFF","#FFFFFF"),dialogTabSelectedBorder:"#FFF",elementsPathColor:b(a,-.6),elementsPathBg:a,menubuttonIcon:b(a,.5),menubuttonIconHover:b(a,.3)};return f[e].output(a).replace(/\[/g,"{").replace(/\]/g, -"}")}}(); \ No newline at end of file diff --git a/public/build/ckeditor/styles.js b/public/build/ckeditor/styles.js deleted file mode 100644 index 78141dc3..00000000 --- a/public/build/ckeditor/styles.js +++ /dev/null @@ -1,137 +0,0 @@ -/** - * Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. - * For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license - */ - -// This file contains style definitions that can be used by CKEditor plugins. -// -// The most common use for it is the "stylescombo" plugin which shows the Styles drop-down -// list containing all styles in the editor toolbar. Other plugins, like -// the "div" plugin, use a subset of the styles for their features. -// -// If you do not have plugins that depend on this file in your editor build, you can simply -// ignore it. Otherwise it is strongly recommended to customize this file to match your -// website requirements and design properly. -// -// For more information refer to: https://ckeditor.com/docs/ckeditor4/latest/guide/dev_styles.html#style-rules - -CKEDITOR.stylesSet.add( 'default', [ - /* Block styles */ - - // These styles are already available in the "Format" drop-down list ("format" plugin), - // so they are not needed here by default. You may enable them to avoid - // placing the "Format" combo in the toolbar, maintaining the same features. - /* - { name: 'Paragraph', element: 'p' }, - { name: 'Heading 1', element: 'h1' }, - { name: 'Heading 2', element: 'h2' }, - { name: 'Heading 3', element: 'h3' }, - { name: 'Heading 4', element: 'h4' }, - { name: 'Heading 5', element: 'h5' }, - { name: 'Heading 6', element: 'h6' }, - { name: 'Preformatted Text',element: 'pre' }, - { name: 'Address', element: 'address' }, - */ - - { name: 'Italic Title', element: 'h2', styles: { 'font-style': 'italic' } }, - { name: 'Subtitle', element: 'h3', styles: { 'color': '#aaa', 'font-style': 'italic' } }, - { - name: 'Special Container', - element: 'div', - styles: { - padding: '5px 10px', - background: '#eee', - border: '1px solid #ccc' - } - }, - - /* Inline styles */ - - // These are core styles available as toolbar buttons. You may opt enabling - // some of them in the Styles drop-down list, removing them from the toolbar. - // (This requires the "stylescombo" plugin.) - /* - { name: 'Strong', element: 'strong', overrides: 'b' }, - { name: 'Emphasis', element: 'em' , overrides: 'i' }, - { name: 'Underline', element: 'u' }, - { name: 'Strikethrough', element: 'strike' }, - { name: 'Subscript', element: 'sub' }, - { name: 'Superscript', element: 'sup' }, - */ - - { name: 'Marker', element: 'span', attributes: { 'class': 'marker' } }, - - { name: 'Big', element: 'big' }, - { name: 'Small', element: 'small' }, - { name: 'Typewriter', element: 'tt' }, - - { name: 'Computer Code', element: 'code' }, - { name: 'Keyboard Phrase', element: 'kbd' }, - { name: 'Sample Text', element: 'samp' }, - { name: 'Variable', element: 'var' }, - - { name: 'Deleted Text', element: 'del' }, - { name: 'Inserted Text', element: 'ins' }, - - { name: 'Cited Work', element: 'cite' }, - { name: 'Inline Quotation', element: 'q' }, - - { name: 'Language: RTL', element: 'span', attributes: { 'dir': 'rtl' } }, - { name: 'Language: LTR', element: 'span', attributes: { 'dir': 'ltr' } }, - - /* Object styles */ - - { - name: 'Styled Image (left)', - element: 'img', - attributes: { 'class': 'left' } - }, - - { - name: 'Styled Image (right)', - element: 'img', - attributes: { 'class': 'right' } - }, - - { - name: 'Compact Table', - element: 'table', - attributes: { - cellpadding: '5', - cellspacing: '0', - border: '1', - bordercolor: '#ccc' - }, - styles: { - 'border-collapse': 'collapse' - } - }, - - { name: 'Borderless Table', element: 'table', styles: { 'border-style': 'hidden', 'background-color': '#E6E6FA' } }, - { name: 'Square Bulleted List', element: 'ul', styles: { 'list-style-type': 'square' } }, - - /* Widget styles */ - - { name: 'Clean Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-clean' } }, - { name: 'Grayscale Image', type: 'widget', widget: 'image', attributes: { 'class': 'image-grayscale' } }, - - { name: 'Featured Snippet', type: 'widget', widget: 'codeSnippet', attributes: { 'class': 'code-featured' } }, - - { name: 'Featured Formula', type: 'widget', widget: 'mathjax', attributes: { 'class': 'math-featured' } }, - - { name: '240p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-240p' }, group: 'size' }, - { name: '360p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-360p' }, group: 'size' }, - { name: '480p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-480p' }, group: 'size' }, - { name: '720p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-720p' }, group: 'size' }, - { name: '1080p', type: 'widget', widget: 'embedSemantic', attributes: { 'class': 'embed-1080p' }, group: 'size' }, - - // Adding space after the style name is an intended workaround. For now, there - // is no option to create two styles with the same name for different widget types. See https://dev.ckeditor.com/ticket/16664. - { name: '240p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-240p' }, group: 'size' }, - { name: '360p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-360p' }, group: 'size' }, - { name: '480p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-480p' }, group: 'size' }, - { name: '720p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-720p' }, group: 'size' }, - { name: '1080p ', type: 'widget', widget: 'embed', attributes: { 'class': 'embed-1080p' }, group: 'size' } - -] ); - diff --git a/public/build/ckeditor/vendor/promise.js b/public/build/ckeditor/vendor/promise.js deleted file mode 100644 index c4d99120..00000000 --- a/public/build/ckeditor/vendor/promise.js +++ /dev/null @@ -1,13 +0,0 @@ -(function(v,w){"object"===typeof exports&&"undefined"!==typeof module?module.exports=w():"function"===typeof define&&define.amd?define(w):v.ES6Promise=w()})(this,function(){function v(a){return"function"===typeof a}function w(){return function(){return process.nextTick(n)}}function R(){return"undefined"!==typeof B?function(){B(n)}:C()}function S(){var a=0,b=new J(n),c=document.createTextNode("");b.observe(c,{characterData:!0});return function(){c.data=a=++a%2}}function T(){var a=new MessageChannel; -a.port1.onmessage=n;return function(){return a.port2.postMessage(0)}}function C(){var a=setTimeout;return function(){return a(n,1)}}function n(){for(var a=0;a{"use strict";r(3210),r(4916),r(3123),r(9554),r(1539),r(4747),r(7601),r(7658),r(8309),r(1249),r(1636),r(4692);var n,i=r(9755);i("#selectElection").on("select2:select",(function(e){var t=e.params.data.slug;window.location.href="/election/".concat(t)})),i(".filterSelect").select2({theme:"bootstrap-5"});var o=i("#selectElection").data("type-id"),a={ajax:{delay:200,data:function(e){var t,r=((null===(t=e.term)||void 0===t?void 0:t.trim())||"").split(/[\s,]+/),n=[],i=[];r.forEach((function(e){/^\d+$/.test(e)?i.push(e):n.push(e)}));var a={itemsPerPage:30,page:e.page||1};return o&&(a["idTypeElection.id"]=o),n&&(a.name=n),i&&(a.date=i),a},processResults:function(e){return{results:e["hydra:member"].map((function(e){return{id:e.id,text:e.name+" ("+e.date+")",date:e.date,slug:e.slug}})),pagination:{more:void 0!==e["hydra:view"]["hydra:last"]}}}}},u=window.location.pathname.split("/")[1]||"en",c=a;c.ajax.url="/api/elections",c.placeholder=null!==(n=i("#placeholderSelectElection").html())&&void 0!==n?n:"Select an election",c.language=u,i("#selectElection").select2(c)},1636:(e,t,r)=>{var n=r(9755);!function(){if(n&&n.fn&&n.fn.select2&&n.fn.select2.amd)var e=n.fn.select2.amd;e.define("select2/i18n/fr",[],(function(){return{errorLoading:function(){return"Les résultats ne peuvent pas être chargés."},inputTooLong:function(e){var t=e.input.length-e.maximum;return"Supprimez "+t+" caractère"+(t>1?"s":"")},inputTooShort:function(e){var t=e.minimum-e.input.length;return"Saisissez au moins "+t+" caractère"+(t>1?"s":"")},loadingMore:function(){return"Chargement de résultats supplémentaires…"},maximumSelected:function(e){return"Vous pouvez seulement sélectionner "+e.maximum+" élément"+(e.maximum>1?"s":"")},noResults:function(){return"Aucun résultat trouvé"},searching:function(){return"Recherche en cours…"},removeAllItems:function(){return"Supprimer tous les éléments"},removeItem:function(){return"Supprimer l'élément"},search:function(){return"Rechercher"}}})),e.define,e.require}()},4692:(e,t,r)=>{var n=r(9755);!function(){if(n&&n.fn&&n.fn.select2&&n.fn.select2.amd)var e=n.fn.select2.amd;e.define("select2/i18n/nl",[],(function(){return{errorLoading:function(){return"De resultaten konden niet worden geladen."},inputTooLong:function(e){return"Gelieve "+(e.input.length-e.maximum)+" karakters te verwijderen"},inputTooShort:function(e){return"Gelieve "+(e.minimum-e.input.length)+" of meer karakters in te voeren"},loadingMore:function(){return"Meer resultaten laden…"},maximumSelected:function(e){var t="Er "+(1==e.maximum?"kan":"kunnen")+" maar "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t+" worden geselecteerd"},noResults:function(){return"Geen resultaten gevonden…"},searching:function(){return"Zoeken…"},removeAllItems:function(){return"Verwijder alle items"}}})),e.define,e.require}()},9483:(e,t,r)=>{var n=r(4411),i=r(6330),o=TypeError;e.exports=function(e){if(n(e))return e;throw o(i(e)+" is not a constructor")}},1530:(e,t,r)=>{"use strict";var n=r(8710).charAt;e.exports=function(e,t,r){return t+(r?n(e,t).length:1)}},8533:(e,t,r)=>{"use strict";var n=r(2092).forEach,i=r(2133)("forEach");e.exports=i?[].forEach:function(e){return n(this,e,arguments.length>1?arguments[1]:void 0)}},3658:(e,t,r)=>{"use strict";var n=r(9781),i=r(3157),o=TypeError,a=Object.getOwnPropertyDescriptor,u=n&&!function(){if(void 0!==this)return!0;try{Object.defineProperty([],"length",{writable:!1}).length=1}catch(e){return e instanceof TypeError}}();e.exports=u?function(e,t){if(i(e)&&!a(e,"length").writable)throw o("Cannot set read only .length");return e.length=t}:function(e,t){return e.length=t}},7207:e=>{var t=TypeError;e.exports=function(e){if(e>9007199254740991)throw t("Maximum allowed index exceeded");return e}},8324:e=>{e.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:(e,t,r)=>{var n=r(317)("span").classList,i=n&&n.constructor&&n.constructor.prototype;e.exports=i===Object.prototype?void 0:i},7007:(e,t,r)=>{"use strict";r(4916);var n=r(1470),i=r(8052),o=r(2261),a=r(7293),u=r(5112),c=r(8880),s=u("species"),l=RegExp.prototype;e.exports=function(e,t,r,f){var p=u(e),d=!a((function(){var t={};return t[p]=function(){return 7},7!=""[e](t)})),v=d&&!a((function(){var t=!1,r=/a/;return"split"===e&&((r={}).constructor={},r.constructor[s]=function(){return r},r.flags="",r[p]=/./[p]),r.exec=function(){return t=!0,null},r[p](""),!t}));if(!d||!v||r){var g=n(/./[p]),h=t(p,""[e],(function(e,t,r,i,a){var u=n(e),c=t.exec;return c===o||c===l.exec?d&&!a?{done:!0,value:g(t,r,i)}:{done:!0,value:u(r,t,i)}:{done:!1}}));i(String.prototype,e,h[0]),i(l,p,h[1])}f&&c(l[p],"sham",!0)}},2104:(e,t,r)=>{var n=r(4374),i=Function.prototype,o=i.apply,a=i.call;e.exports="object"==typeof Reflect&&Reflect.apply||(n?a.bind(o):function(){return a.apply(o,arguments)})},490:(e,t,r)=>{var n=r(5005);e.exports=n("document","documentElement")},7850:(e,t,r)=>{var n=r(111),i=r(4326),o=r(5112)("match");e.exports=function(e){var t;return n(e)&&(void 0!==(t=e[o])?!!t:"RegExp"==i(e))}},30:(e,t,r)=>{var n,i=r(9670),o=r(6048),a=r(748),u=r(3501),c=r(490),s=r(317),l=r(6200),f="prototype",p="script",d=l("IE_PROTO"),v=function(){},g=function(e){return"<"+p+">"+e+""},h=function(e){e.write(g("")),e.close();var t=e.parentWindow.Object;return e=null,t},m=function(){try{n=new ActiveXObject("htmlfile")}catch(e){}var e,t,r;m="undefined"!=typeof document?document.domain&&n?h(n):(t=s("iframe"),r="java"+p+":",t.style.display="none",c.appendChild(t),t.src=String(r),(e=t.contentWindow.document).open(),e.write(g("document.F=Object")),e.close(),e.F):h(n);for(var i=a.length;i--;)delete m[f][a[i]];return m()};u[d]=!0,e.exports=Object.create||function(e,t){var r;return null!==e?(v[f]=i(e),r=new v,v[f]=null,r[d]=e):r=m(),void 0===t?r:o.f(r,t)}},6048:(e,t,r)=>{var n=r(9781),i=r(3353),o=r(3070),a=r(9670),u=r(5656),c=r(1956);t.f=n&&!i?Object.defineProperties:function(e,t){a(e);for(var r,n=u(t),i=c(t),s=i.length,l=0;s>l;)o.f(e,r=i[l++],n[r]);return e}},1956:(e,t,r)=>{var n=r(6324),i=r(748);e.exports=Object.keys||function(e){return n(e,i)}},288:(e,t,r)=>{"use strict";var n=r(1694),i=r(648);e.exports=n?{}.toString:function(){return"[object "+i(this)+"]"}},7651:(e,t,r)=>{var n=r(6916),i=r(9670),o=r(614),a=r(4326),u=r(2261),c=TypeError;e.exports=function(e,t){var r=e.exec;if(o(r)){var s=n(r,e,t);return null!==s&&i(s),s}if("RegExp"===a(e))return n(u,e,t);throw c("RegExp#exec called on incompatible receiver")}},2261:(e,t,r)=>{"use strict";var n,i,o=r(6916),a=r(1702),u=r(1340),c=r(7066),s=r(2999),l=r(2309),f=r(30),p=r(9909).get,d=r(9441),v=r(7168),g=l("native-string-replace",String.prototype.replace),h=RegExp.prototype.exec,m=h,x=a("".charAt),y=a("".indexOf),E=a("".replace),S=a("".slice),b=(i=/b*/g,o(h,n=/a/,"a"),o(h,i,"a"),0!==n.lastIndex||0!==i.lastIndex),R=s.BROKEN_CARET,L=void 0!==/()??/.exec("")[1];(b||L||R||d||v)&&(m=function(e){var t,r,n,i,a,s,l,d=this,v=p(d),w=u(e),T=v.raw;if(T)return T.lastIndex=d.lastIndex,t=o(m,T,w),d.lastIndex=T.lastIndex,t;var I=v.groups,O=R&&d.sticky,k=o(c,d),A=d.source,C=0,j=w;if(O&&(k=E(k,"y",""),-1===y(k,"g")&&(k+="g"),j=S(w,d.lastIndex),d.lastIndex>0&&(!d.multiline||d.multiline&&"\n"!==x(w,d.lastIndex-1))&&(A="(?: "+A+")",j=" "+j,C++),r=new RegExp("^(?:"+A+")",k)),L&&(r=new RegExp("^"+A+"$(?!\\s)",k)),b&&(n=d.lastIndex),i=o(h,O?r:d,j),O?i?(i.input=S(i.input,C),i[0]=S(i[0],C),i.index=d.lastIndex,d.lastIndex+=i[0].length):d.lastIndex=0:b&&i&&(d.lastIndex=d.global?i.index+i[0].length:n),L&&i&&i.length>1&&o(g,i[0],r,(function(){for(a=1;a{"use strict";var n=r(9670);e.exports=function(){var e=n(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},2999:(e,t,r)=>{var n=r(7293),i=r(7854).RegExp,o=n((function(){var e=i("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),a=o||n((function(){return!i("a","y").sticky})),u=o||n((function(){var e=i("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));e.exports={BROKEN_CARET:u,MISSED_STICKY:a,UNSUPPORTED_Y:o}},9441:(e,t,r)=>{var n=r(7293),i=r(7854).RegExp;e.exports=n((function(){var e=i(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))},7168:(e,t,r)=>{var n=r(7293),i=r(7854).RegExp;e.exports=n((function(){var e=i("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},6707:(e,t,r)=>{var n=r(9670),i=r(9483),o=r(8554),a=r(5112)("species");e.exports=function(e,t){var r,u=n(e).constructor;return void 0===u||o(r=n(u)[a])?t:i(r)}},8710:(e,t,r)=>{var n=r(1702),i=r(9303),o=r(1340),a=r(4488),u=n("".charAt),c=n("".charCodeAt),s=n("".slice),l=function(e){return function(t,r){var n,l,f=o(a(t)),p=i(r),d=f.length;return p<0||p>=d?e?"":void 0:(n=c(f,p))<55296||n>56319||p+1===d||(l=c(f,p+1))<56320||l>57343?e?u(f,p):n:e?s(f,p,p+2):l-56320+(n-55296<<10)+65536}};e.exports={codeAt:l(!1),charAt:l(!0)}},6091:(e,t,r)=>{var n=r(6530).PROPER,i=r(7293),o=r(1361);e.exports=function(e){return i((function(){return!!o[e]()||"​…᠎"!=="​…᠎"[e]()||n&&o[e].name!==e}))}},3111:(e,t,r)=>{var n=r(1702),i=r(4488),o=r(1340),a=r(1361),u=n("".replace),c="["+a+"]",s=RegExp("^"+c+c+"*"),l=RegExp(c+c+"*$"),f=function(e){return function(t){var r=o(i(t));return 1&e&&(r=u(r,s,"")),2&e&&(r=u(r,l,"")),r}};e.exports={start:f(1),end:f(2),trim:f(3)}},1361:e=>{e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},9554:(e,t,r)=>{"use strict";var n=r(2109),i=r(8533);n({target:"Array",proto:!0,forced:[].forEach!=i},{forEach:i})},1249:(e,t,r)=>{"use strict";var n=r(2109),i=r(2092).map;n({target:"Array",proto:!0,forced:!r(1194)("map")},{map:function(e){return i(this,e,arguments.length>1?arguments[1]:void 0)}})},7658:(e,t,r)=>{"use strict";var n=r(2109),i=r(7908),o=r(6244),a=r(3658),u=r(7207),c=r(7293)((function(){return 4294967297!==[].push.call({length:4294967296},1)})),s=!function(){try{Object.defineProperty([],"length",{writable:!1}).push()}catch(e){return e instanceof TypeError}}();n({target:"Array",proto:!0,arity:1,forced:c||s},{push:function(e){var t=i(this),r=o(t),n=arguments.length;u(r+n);for(var c=0;c{var n=r(9781),i=r(6530).EXISTS,o=r(1702),a=r(3070).f,u=Function.prototype,c=o(u.toString),s=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,l=o(s.exec);n&&!i&&a(u,"name",{configurable:!0,get:function(){try{return l(s,c(this))[1]}catch(e){return""}}})},1539:(e,t,r)=>{var n=r(1694),i=r(8052),o=r(288);n||i(Object.prototype,"toString",o,{unsafe:!0})},4916:(e,t,r)=>{"use strict";var n=r(2109),i=r(2261);n({target:"RegExp",proto:!0,forced:/./.exec!==i},{exec:i})},7601:(e,t,r)=>{"use strict";r(4916);var n,i,o=r(2109),a=r(6916),u=r(614),c=r(9670),s=r(1340),l=(n=!1,(i=/[ac]/).exec=function(){return n=!0,/./.exec.apply(this,arguments)},!0===i.test("abc")&&n),f=/./.test;o({target:"RegExp",proto:!0,forced:!l},{test:function(e){var t=c(this),r=s(e),n=t.exec;if(!u(n))return a(f,t,r);var i=a(n,t,r);return null!==i&&(c(i),!0)}})},3123:(e,t,r)=>{"use strict";var n=r(2104),i=r(6916),o=r(1702),a=r(7007),u=r(9670),c=r(8554),s=r(7850),l=r(4488),f=r(6707),p=r(1530),d=r(7466),v=r(1340),g=r(8173),h=r(1589),m=r(7651),x=r(2261),y=r(2999),E=r(7293),S=y.UNSUPPORTED_Y,b=4294967295,R=Math.min,L=[].push,w=o(/./.exec),T=o(L),I=o("".slice);a("split",(function(e,t,r){var o;return o="c"=="abbc".split(/(b)*/)[1]||4!="test".split(/(?:)/,-1).length||2!="ab".split(/(?:ab)*/).length||4!=".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length?function(e,r){var o=v(l(this)),a=void 0===r?b:r>>>0;if(0===a)return[];if(void 0===e)return[o];if(!s(e))return i(t,o,e,a);for(var u,c,f,p=[],d=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),g=0,m=new RegExp(e.source,d+"g");(u=i(x,m,o))&&!((c=m.lastIndex)>g&&(T(p,I(o,g,u.index)),u.length>1&&u.index=a));)m.lastIndex===u.index&&m.lastIndex++;return g===o.length?!f&&w(m,"")||T(p,""):T(p,I(o,g)),p.length>a?h(p,0,a):p}:"0".split(void 0,0).length?function(e,r){return void 0===e&&0===r?[]:i(t,this,e,r)}:t,[function(t,r){var n=l(this),a=c(t)?void 0:g(t,e);return a?i(a,t,n,r):i(o,v(n),t,r)},function(e,n){var i=u(this),a=v(e),c=r(o,i,a,n,o!==t);if(c.done)return c.value;var s=f(i,RegExp),l=i.unicode,g=(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(S?"g":"y"),h=new s(S?"^(?:"+i.source+")":i,g),x=void 0===n?b:n>>>0;if(0===x)return[];if(0===a.length)return null===m(h,a)?[a]:[];for(var y=0,E=0,L=[];E{"use strict";var n=r(2109),i=r(3111).trim;n({target:"String",proto:!0,forced:r(6091)("trim")},{trim:function(){return i(this)}})},4747:(e,t,r)=>{var n=r(7854),i=r(8324),o=r(8509),a=r(8533),u=r(8880),c=function(e){if(e&&e.forEach!==a)try{u(e,"forEach",a)}catch(t){e.forEach=a}};for(var s in i)i[s]&&c(n[s]&&n[s].prototype);c(o)}},e=>{e.O(0,[755,865],(()=>{return t=1248,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/public/build/election.26f19cac.js.LICENSE.txt b/public/build/election.26f19cac.js.LICENSE.txt new file mode 100644 index 00000000..849ce751 --- /dev/null +++ b/public/build/election.26f19cac.js.LICENSE.txt @@ -0,0 +1 @@ +/*! Select2 4.1.0-rc.0 | https://github.com/select2/select2/blob/master/LICENSE.md */ diff --git a/public/build/entrypoints.json b/public/build/entrypoints.json index 61681fb4..ddf4e23e 100644 --- a/public/build/entrypoints.json +++ b/public/build/entrypoints.json @@ -2,46 +2,76 @@ "entrypoints": { "app": { "js": [ - "/build/runtime.js", - "/build/vendors-node_modules_jquery_dist_jquery_js.js", - "/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.js", - "/build/app.js" + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/471.7ea42d3c.js", + "/build/app.4a5e1740.js" ], "css": [ - "/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.css", - "/build/app.css" + "/build/471.9be1b4fe.css", + "/build/app.3044f0a6.css" ] }, "home": { "js": [ - "/build/runtime.js", - "/build/vendors-node_modules_jquery_dist_jquery_js.js", - "/build/vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2.js", - "/build/vendors-node_modules_chart_js_auto_auto_js.js", - "/build/vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-d9685c.js", - "/build/home.js" + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/865.4367d039.js", + "/build/920.093c2efa.js", + "/build/676.8055c8bf.js", + "/build/201.fa351aff.js", + "/build/home.db89cec4.js" ] }, "parti": { "js": [ - "/build/runtime.js", - "/build/vendors-node_modules_jquery_dist_jquery_js.js", - "/build/vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2.js", - "/build/vendors-node_modules_chart_js_auto_auto_js.js", - "/build/vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c.js", - "/build/parti.js" + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/865.4367d039.js", + "/build/920.093c2efa.js", + "/build/175.d89ab825.js", + "/build/parti.a5a882d8.js" ] }, "table": { "js": [ - "/build/runtime.js", - "/build/vendors-node_modules_jquery_dist_jquery_js.js", - "/build/vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2.js", - "/build/vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c.js", - "/build/table.js" + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/865.4367d039.js", + "/build/175.d89ab825.js", + "/build/table.957edfbd.js" ], "css": [ - "/build/table.css" + "/build/table.1ddcb887.css" + ] + }, + "election": { + "js": [ + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/865.4367d039.js", + "/build/election.26f19cac.js" + ] + }, + "trumbowyg": { + "js": [ + "/build/runtime.3cfbb063.js", + "/build/755.1af907cb.js", + "/build/865.4367d039.js", + "/build/676.8055c8bf.js", + "/build/trumbowyg.2aa8b209.js" + ], + "css": [ + "/build/904.37a35d24.css" + ] + }, + "trumbowyg-style": { + "js": [ + "/build/runtime.3cfbb063.js", + "/build/trumbowyg-style.bb54538b.js" + ], + "css": [ + "/build/trumbowyg-style.0c4698fd.css" ] } } diff --git a/public/build/home.db89cec4.js b/public/build/home.db89cec4.js new file mode 100644 index 00000000..17b5d0d4 --- /dev/null +++ b/public/build/home.db89cec4.js @@ -0,0 +1,2 @@ +/*! For license information please see home.db89cec4.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[177],{9291:(t,e,r)=>{"use strict";r(1539),r(8674),r(1249),r(9070),r(2526),r(1817),r(2165),r(6992),r(8783),r(3948),r(2443),r(9341),r(3706),r(2703),r(8011),r(489),r(9554),r(1703),r(6647),r(7658),r(4747),r(8309),r(8304),r(5069),r(7042);var n=r(9085),o=r(8143),i=r(3161),a=r(4998);function c(t){return c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},c(t)}function u(){u=function(){return t};var t={},e=Object.prototype,r=e.hasOwnProperty,n=Object.defineProperty||function(t,e,r){t[e]=r.value},o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",s=o.toStringTag||"@@toStringTag";function l(t,e,r){return Object.defineProperty(t,e,{value:r,enumerable:!0,configurable:!0,writable:!0}),t[e]}try{l({},"")}catch(t){l=function(t,e,r){return t[e]=r}}function f(t,e,r,o){var i=e&&e.prototype instanceof d?e:d,a=Object.create(i.prototype),c=new _(o||[]);return n(a,"_invoke",{value:E(t,r,c)}),a}function h(t,e,r){try{return{type:"normal",arg:t.call(e,r)}}catch(t){return{type:"throw",arg:t}}}t.wrap=f;var p={};function d(){}function v(){}function y(){}var m={};l(m,i,(function(){return this}));var g=Object.getPrototypeOf,w=g&&g(g(k([])));w&&w!==e&&r.call(w,i)&&(m=w);var b=y.prototype=d.prototype=Object.create(m);function x(t){["next","throw","return"].forEach((function(e){l(t,e,(function(t){return this._invoke(e,t)}))}))}function L(t,e){function o(n,i,a,u){var s=h(t[n],t,i);if("throw"!==s.type){var l=s.arg,f=l.value;return f&&"object"==c(f)&&r.call(f,"__await")?e.resolve(f.__await).then((function(t){o("next",t,a,u)}),(function(t){o("throw",t,a,u)})):e.resolve(f).then((function(t){l.value=t,a(l)}),(function(t){return o("throw",t,a,u)}))}u(s.arg)}var i;n(this,"_invoke",{value:function(t,r){function n(){return new e((function(e,n){o(t,r,e,n)}))}return i=i?i.then(n,n):n()}})}function E(t,e,r){var n="suspendedStart";return function(o,i){if("executing"===n)throw new Error("Generator is already running");if("completed"===n){if("throw"===o)throw i;return P()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=j(a,r);if(c){if(c===p)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if("suspendedStart"===n)throw n="completed",r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n="executing";var u=h(t,e,r);if("normal"===u.type){if(n=r.done?"completed":"suspendedYield",u.arg===p)continue;return{value:u.arg,done:r.done}}"throw"===u.type&&(n="completed",r.method="throw",r.arg=u.arg)}}}function j(t,e){var r=e.method,n=t.iterator[r];if(void 0===n)return e.delegate=null,"throw"===r&&t.iterator.return&&(e.method="return",e.arg=void 0,j(t,e),"throw"===e.method)||"return"!==r&&(e.method="throw",e.arg=new TypeError("The iterator does not provide a '"+r+"' method")),p;var o=h(n,t.iterator,e.arg);if("throw"===o.type)return e.method="throw",e.arg=o.arg,e.delegate=null,p;var i=o.arg;return i?i.done?(e[t.resultName]=i.value,e.next=t.nextLoc,"return"!==e.method&&(e.method="next",e.arg=void 0),e.delegate=null,p):i:(e.method="throw",e.arg=new TypeError("iterator result is not an object"),e.delegate=null,p)}function C(t){var e={tryLoc:t[0]};1 in t&&(e.catchLoc=t[1]),2 in t&&(e.finallyLoc=t[2],e.afterLoc=t[3]),this.tryEntries.push(e)}function O(t){var e=t.completion||{};e.type="normal",delete e.arg,t.completion=e}function _(t){this.tryEntries=[{tryLoc:"root"}],t.forEach(C,this),this.reset(!0)}function k(t){if(t){var e=t[i];if(e)return e.call(t);if("function"==typeof t.next)return t;if(!isNaN(t.length)){var n=-1,o=function e(){for(;++n=0;--o){var i=this.tryEntries[o],a=i.completion;if("root"===i.tryLoc)return n("end");if(i.tryLoc<=this.prev){var c=r.call(i,"catchLoc"),u=r.call(i,"finallyLoc");if(c&&u){if(this.prev=0;--n){var o=this.tryEntries[n];if(o.tryLoc<=this.prev&&r.call(o,"finallyLoc")&&this.prev=0;--e){var r=this.tryEntries[e];if(r.finallyLoc===t)return this.complete(r.completion,r.afterLoc),O(r),p}},catch:function(t){for(var e=this.tryEntries.length-1;e>=0;--e){var r=this.tryEntries[e];if(r.tryLoc===t){var n=r.completion;if("throw"===n.type){var o=n.arg;O(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(t,e,r){return this.delegate={iterator:k(t),resultName:e,nextLoc:r},"next"===this.method&&(this.arg=void 0),p}},t}function s(t,e,r,n,o,i,a){try{var c=t[i](a),u=c.value}catch(t){return void r(t)}c.done?e(u):Promise.resolve(u).then(n,o)}function l(t){return function(){var e=this,r=arguments;return new Promise((function(n,o){var i=t.apply(e,r);function a(t){s(i,n,o,a,c,"next",t)}function c(t){s(i,n,o,a,c,"throw",t)}a(void 0)}))}}r(9755)(document).ready(l(u().mark((function t(){var e,r,c,s,l;return u().wrap((function(t){for(;;)switch(t.prev=t.next){case 0:return t.next=2,fetch("/map/belgium-map.json").then((function(t){return t.json()})).catch((function(t){return console.log(t)}));case 2:e=t.sent,r=i.Z(e,e.objects.municipalities).features,c=a.ZP(),new o.C6(document.getElementById("mapMap").getContext("2d"),{type:"choropleth",data:{labels:r.map((function(t){return t.properties.name_fr})),datasets:[{label:"municipalities",outline:r,data:r.map((function(t){return{feature:t,value:t.properties.name_fr?t.properties.population:10}}))}]},options:{plugins:{legend:{display:!1}},scales:{projection:{axis:"x",projection:c}}}}),s={type:"doughnut",data:{responsive:!0,labels:["Red","Blue","Yellow"],datasets:[{label:"My First Dataset",data:[300,50,100],backgroundColor:["rgb(255, 99, 132)","rgb(54, 162, 235)","rgb(255, 205, 86)"],hoverOffset:1}]},options:{rotation:-90,circumference:180}},l=new n.ZP(document.getElementById("donutGraph").getContext("2d"),s),window.addEventListener("before",(function(){l.resize(500,500)})),window.addEventListener("afterprint",(function(){l.resize()}));case 11:case"end":return t.stop()}}),t)}))));r(1175);var f=r(9755);f("#switcherMap").on("click",(function(){f(".inner").hasClass("left")?(f(".inner").removeClass("left"),f(".inner").animate({right:"0%"}),f("#map").removeClass("text-end"),f("#map").addClass("text-center"),f("#donut").addClass("text-start"),f("#donut").removeClass("text-center")):(f(".inner").addClass("left"),f(".inner").animate({right:"50%"}),f("#donut").removeClass("text-start"),f("#donut").addClass("text-center"),f("#map").addClass("text-end"),f("#map").removeClass("text-center"))}))},1175:(t,e,r)=>{var n,o=r(9755);r(1249),o(".parti-search").on("change",(function(t){window.location.href="parti/"+o(this).val()})),o(".filterSelect").select2({theme:"bootstrap-5"});var i={ajax:{delay:1e3,data:function(t){return{itemsPerPage:30,page:t.page||1,logo:t.term}},processResults:function(t){return{results:t["hydra:member"].map((function(t){return{id:t.id,text:t.acronym}})),pagination:{more:void 0!==t["hydra:view"]["hydra:last"]}}}}};i.ajax.url="/api/partis",i.placeholder=null!==(n=o("#placeholderSelectParti").html())&&void 0!==n?n:"Select a parti",o("#selectParti").select2(i),console.log("esai")}},t=>{t.O(0,[755,865,920,676,201],(()=>{return e=9291,t(t.s=e);var e}));t.O()}]); \ No newline at end of file diff --git a/public/build/home.db89cec4.js.LICENSE.txt b/public/build/home.db89cec4.js.LICENSE.txt new file mode 100644 index 00000000..ae386fb7 --- /dev/null +++ b/public/build/home.db89cec4.js.LICENSE.txt @@ -0,0 +1 @@ +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ diff --git a/public/build/home.js b/public/build/home.js deleted file mode 100644 index 3cbe3095..00000000 --- a/public/build/home.js +++ /dev/null @@ -1,276 +0,0 @@ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["home"],{ - -/***/ "./assets/home.js": -/*!************************!*\ - !*** ./assets/home.js ***! - \************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var _map__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./map */ "./assets/map.js"); -/* harmony import */ var _search_parti__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./search-parti */ "./assets/search-parti.js"); -/* harmony import */ var _search_parti__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_search_parti__WEBPACK_IMPORTED_MODULE_1__); -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); - - -$("#switcherMap").on('click', function () { - if ($('.inner').hasClass('left')) { - $('.inner').removeClass('left'); - $('.inner').animate({ - right: '0%' - }); - $('#map').removeClass('text-end'); - $('#map').addClass('text-center'); - $('#donut').addClass('text-start'); - $('#donut').removeClass('text-center'); - } else { - $('.inner').addClass('left'); - $('.inner').animate({ - right: '50%' - }); - $('#donut').removeClass('text-start'); - $('#donut').addClass('text-center'); - $('#map').addClass('text-end'); - $('#map').removeClass('text-center'); - } -}); - -/***/ }), - -/***/ "./assets/map.js": -/*!***********************!*\ - !*** ./assets/map.js ***! - \***********************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.to-string.js */ "./node_modules/core-js/modules/es.object.to-string.js"); -/* harmony import */ var core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_to_string_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.promise.js */ "./node_modules/core-js/modules/es.promise.js"); -/* harmony import */ var core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_promise_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.object.define-property.js */ "./node_modules/core-js/modules/es.object.define-property.js"); -/* harmony import */ var core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_define_property_js__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.symbol.js */ "./node_modules/core-js/modules/es.symbol.js"); -/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/es.symbol.description.js */ "./node_modules/core-js/modules/es.symbol.description.js"); -/* harmony import */ var core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_description_js__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! core-js/modules/es.symbol.iterator.js */ "./node_modules/core-js/modules/es.symbol.iterator.js"); -/* harmony import */ var core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_iterator_js__WEBPACK_IMPORTED_MODULE_6__); -/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! core-js/modules/es.array.iterator.js */ "./node_modules/core-js/modules/es.array.iterator.js"); -/* harmony import */ var core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_iterator_js__WEBPACK_IMPORTED_MODULE_7__); -/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! core-js/modules/es.string.iterator.js */ "./node_modules/core-js/modules/es.string.iterator.js"); -/* harmony import */ var core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_iterator_js__WEBPACK_IMPORTED_MODULE_8__); -/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! core-js/modules/web.dom-collections.iterator.js */ "./node_modules/core-js/modules/web.dom-collections.iterator.js"); -/* harmony import */ var core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_iterator_js__WEBPACK_IMPORTED_MODULE_9__); -/* harmony import */ var core_js_modules_es_symbol_async_iterator_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! core-js/modules/es.symbol.async-iterator.js */ "./node_modules/core-js/modules/es.symbol.async-iterator.js"); -/* harmony import */ var core_js_modules_es_symbol_async_iterator_js__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_async_iterator_js__WEBPACK_IMPORTED_MODULE_10__); -/* harmony import */ var core_js_modules_es_symbol_to_string_tag_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! core-js/modules/es.symbol.to-string-tag.js */ "./node_modules/core-js/modules/es.symbol.to-string-tag.js"); -/* harmony import */ var core_js_modules_es_symbol_to_string_tag_js__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_to_string_tag_js__WEBPACK_IMPORTED_MODULE_11__); -/* harmony import */ var core_js_modules_es_json_to_string_tag_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! core-js/modules/es.json.to-string-tag.js */ "./node_modules/core-js/modules/es.json.to-string-tag.js"); -/* harmony import */ var core_js_modules_es_json_to_string_tag_js__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_json_to_string_tag_js__WEBPACK_IMPORTED_MODULE_12__); -/* harmony import */ var core_js_modules_es_math_to_string_tag_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! core-js/modules/es.math.to-string-tag.js */ "./node_modules/core-js/modules/es.math.to-string-tag.js"); -/* harmony import */ var core_js_modules_es_math_to_string_tag_js__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_math_to_string_tag_js__WEBPACK_IMPORTED_MODULE_13__); -/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! core-js/modules/es.object.create.js */ "./node_modules/core-js/modules/es.object.create.js"); -/* harmony import */ var core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_create_js__WEBPACK_IMPORTED_MODULE_14__); -/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! core-js/modules/es.object.get-prototype-of.js */ "./node_modules/core-js/modules/es.object.get-prototype-of.js"); -/* harmony import */ var core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_get_prototype_of_js__WEBPACK_IMPORTED_MODULE_15__); -/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! core-js/modules/es.array.for-each.js */ "./node_modules/core-js/modules/es.array.for-each.js"); -/* harmony import */ var core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_for_each_js__WEBPACK_IMPORTED_MODULE_16__); -/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! core-js/modules/es.error.cause.js */ "./node_modules/core-js/modules/es.error.cause.js"); -/* harmony import */ var core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_cause_js__WEBPACK_IMPORTED_MODULE_17__); -/* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! core-js/modules/es.error.to-string.js */ "./node_modules/core-js/modules/es.error.to-string.js"); -/* harmony import */ var core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_18___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_error_to_string_js__WEBPACK_IMPORTED_MODULE_18__); -/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! core-js/modules/es.array.push.js */ "./node_modules/core-js/modules/es.array.push.js"); -/* harmony import */ var core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_19___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_push_js__WEBPACK_IMPORTED_MODULE_19__); -/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each.js */ "./node_modules/core-js/modules/web.dom-collections.for-each.js"); -/* harmony import */ var core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each_js__WEBPACK_IMPORTED_MODULE_20__); -/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); -/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_21__); -/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! core-js/modules/es.object.set-prototype-of.js */ "./node_modules/core-js/modules/es.object.set-prototype-of.js"); -/* harmony import */ var core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_22___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_set_prototype_of_js__WEBPACK_IMPORTED_MODULE_22__); -/* harmony import */ var core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! core-js/modules/es.array.reverse.js */ "./node_modules/core-js/modules/es.array.reverse.js"); -/* harmony import */ var core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_23___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_reverse_js__WEBPACK_IMPORTED_MODULE_23__); -/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! core-js/modules/es.array.slice.js */ "./node_modules/core-js/modules/es.array.slice.js"); -/* harmony import */ var core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_24___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_slice_js__WEBPACK_IMPORTED_MODULE_24__); -/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! chart.js/auto */ "./node_modules/chart.js/auto/auto.js"); -/* harmony import */ var chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! chartjs-chart-geo */ "./node_modules/chartjs-chart-geo/build/index.js"); -/* harmony import */ var chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! chartjs-chart-geo */ "./node_modules/topojson-client/src/index.js"); -/* harmony import */ var chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! chartjs-chart-geo */ "./node_modules/d3-geo/src/projection/mercator.js"); -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); -function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); } -function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; } - - - - - - - - - - - - - - - - - - - - - - - - - -function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } } -function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; } - - - -$(document).ready( /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/_regeneratorRuntime().mark(function _callee() { - var belgium, municipalities, projection, data, config, donut; - return _regeneratorRuntime().wrap(function _callee$(_context) { - while (1) { - switch (_context.prev = _context.next) { - case 0: - _context.next = 2; - return fetch('/map/belgium-map.json').then(function (r) { - return r.json(); - })["catch"](function (e) { - return console.log(e); - }); - case 2: - belgium = _context.sent; - municipalities = chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_26__.feature(belgium, belgium.objects.municipalities).features; - projection = chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_27__["default"](); - new chartjs_chart_geo__WEBPACK_IMPORTED_MODULE_28__.ChoroplethChart(document.getElementById('mapMap').getContext('2d'), { - type: 'choropleth', - data: { - labels: municipalities.map(function (d) { - return d.properties.name_fr; - }), - datasets: [{ - label: 'municipalities', - outline: municipalities, - data: municipalities.map(function (d) { - return { - feature: d, - value: d.properties.name_fr ? d.properties.population : 10 - }; - }) - }] - }, - options: { - plugins: { - legend: { - display: false - } - }, - scales: { - projection: { - axis: 'x', - projection: projection - } - } - } - }); - - // DONUT - data = { - responsive: true, - labels: ['Red', 'Blue', 'Yellow'], - datasets: [{ - label: 'My First Dataset', - data: [300, 50, 100], - backgroundColor: ['rgb(255, 99, 132)', 'rgb(54, 162, 235)', 'rgb(255, 205, 86)'], - hoverOffset: 1 - }] - }; - config = { - type: 'doughnut', - data: data, - options: { - rotation: -90, - circumference: 180 - } - }; - donut = new chart_js_auto__WEBPACK_IMPORTED_MODULE_25__["default"](document.getElementById('donutGraph').getContext('2d'), config); - window.addEventListener('before', function () { - donut.resize(500, 500); - }); - window.addEventListener('afterprint', function () { - donut.resize(); - }); - case 11: - case "end": - return _context.stop(); - } - } - }, _callee); -}))); - -/***/ }), - -/***/ "./assets/search-parti.js": -/*!********************************!*\ - !*** ./assets/search-parti.js ***! - \********************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); -var _$$html; -__webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); -$('.parti-search').on('change', function (e) { - window.location.href = 'parti/' + $(this).val(); -}); -$(".filterSelect").select2({ - theme: "bootstrap-5" -}); -var apiCall = { - ajax: { - delay: 1000, - data: function data(params) { - var query = { - itemsPerPage: 30, - page: params.page || 1, - logo: params.term - }; - return query; - }, - processResults: function processResults(data) { - var results = data["hydra:member"].map(function (item) { - return { - "id": item.id, - "text": item.acronym - }; - }); - return { - results: results, - pagination: { - more: data["hydra:view"]["hydra:last"] !== undefined - } - }; - } - } -}; -var apiParti = apiCall; -apiParti.ajax.url = '/api/partis'; -apiParti.placeholder = (_$$html = $('#placeholderSelectParti').html()) !== null && _$$html !== void 0 ? _$$html : "Select a parti"; -$('#selectParti').select2(apiParti); - -/***/ }) - -}, -/******/ __webpack_require__ => { // webpackRuntimeModules -/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ __webpack_require__.O(0, ["vendors-node_modules_jquery_dist_jquery_js","vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2","vendors-node_modules_chart_js_auto_auto_js","vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-d9685c"], () => (__webpack_exec__("./assets/home.js"))); -/******/ var __webpack_exports__ = __webpack_require__.O(); -/******/ } -]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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LENBQUMsVUFBQ3lDLElBQUksRUFBSztRQUM3QyxPQUFPO1VBQ0gsSUFBSSxFQUFFQSxJQUFJLENBQUNDLEVBQUU7VUFDYixNQUFNLEVBQUVELElBQUksQ0FBQ0U7UUFDakIsQ0FBQztNQUNMLENBQUMsQ0FBQztNQUNGLE9BQU87UUFDSEgsT0FBTyxFQUFQQSxPQUFPO1FBQ1BJLFVBQVUsRUFBRTtVQUNSQyxJQUFJLEVBQUUvQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUtnRDtRQUMvQztNQUNKLENBQUM7SUFDTDtFQUNKO0FBQ0osQ0FBQztBQUVELElBQUlDLFFBQVEsR0FBR2pCLE9BQU87QUFDdEJpQixRQUFRLENBQUNoQixJQUFJLENBQUNpQixHQUFHLEdBQUcsYUFBYTtBQUNqQ0QsUUFBUSxDQUFDRSxXQUFXLGNBQUdqRixDQUFDLENBQUMseUJBQXlCLENBQUMsQ0FBQ2tGLElBQUksRUFBRSw2Q0FBSSxnQkFBZ0I7QUFDOUVsRixDQUFDLENBQUMsY0FBYyxDQUFDLENBQUM0RCxPQUFPLENBQUNtQixRQUFRLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvaG9tZS5qcyIsIndlYnBhY2s6Ly8vLi9hc3NldHMvbWFwLmpzIiwid2VicGFjazovLy8uL2Fzc2V0cy9zZWFyY2gtcGFydGkuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXG5pbXBvcnQgJy4vbWFwJztcbmltcG9ydCAnLi9zZWFyY2gtcGFydGknO1xuJChcIiNzd2l0Y2hlck1hcFwiKS5vbiggJ2NsaWNrJywgKCkgPT4ge1xuICAgIGlmICgkKCcuaW5uZXInKS5oYXNDbGFzcygnbGVmdCcpKXtcbiAgICAgICAgJCgnLmlubmVyJykucmVtb3ZlQ2xhc3MoJ2xlZnQnKTtcbiAgICAgICAgJCgnLmlubmVyJykuYW5pbWF0ZSh7cmlnaHQ6ICcwJSd9KTtcbiAgICAgICAgJCgnI21hcCcpLnJlbW92ZUNsYXNzKCd0ZXh0LWVuZCcpO1xuICAgICAgICAkKCcjbWFwJykuYWRkQ2xhc3MoJ3RleHQtY2VudGVyJyk7XG4gICAgICAgICQoJyNkb251dCcpLmFkZENsYXNzKCd0ZXh0LXN0YXJ0Jyk7XG4gICAgICAgICQoJyNkb251dCcpLnJlbW92ZUNsYXNzKCd0ZXh0LWNlbnRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgICQoJy5pbm5lcicpLmFkZENsYXNzKCdsZWZ0Jyk7XG4gICAgICAgICQoJy5pbm5lcicpLmFuaW1hdGUoe3JpZ2h0OiAnNTAlJ30pOyAgICBcbiAgICAgICAgJCgnI2RvbnV0JykucmVtb3ZlQ2xhc3MoJ3RleHQtc3RhcnQnKTtcbiAgICAgICAgJCgnI2RvbnV0JykuYWRkQ2xhc3MoJ3RleHQtY2VudGVyJyk7XG4gICAgICAgICQoJyNtYXAnKS5hZGRDbGFzcygndGV4dC1lbmQnKTtcbiAgICAgICAgJCgnI21hcCcpLnJlbW92ZUNsYXNzKCd0ZXh0LWNlbnRlcicpO1xuICAgIH1cbn0pOyIsImltcG9ydCBDaGFydCBmcm9tICdjaGFydC5qcy9hdXRvJztcbmltcG9ydCB7IENob3JvcGxldGhDaGFydCB9IGZyb20gJ2NoYXJ0anMtY2hhcnQtZ2VvJztcbmltcG9ydCAqIGFzIENoYXJ0R2VvIGZyb20gJ2NoYXJ0anMtY2hhcnQtZ2VvJztcbiQoZG9jdW1lbnQpLnJlYWR5KGFzeW5jICgpID0+IHtcbiAgICBjb25zdCBiZWxnaXVtID0gYXdhaXQgZmV0Y2goJy9tYXAvYmVsZ2l1bS1tYXAuanNvbicpLnRoZW4ociA9PiB7XG4gICAgICAgIHJldHVybiByLmpzb24oKTtcbiAgICB9KS5jYXRjaChlID0+XG4gICAgICAgIGNvbnNvbGUubG9nKGUpKTtcblxuICAgIGNvbnN0IG11bmljaXBhbGl0aWVzID0gQ2hhcnRHZW8udG9wb2pzb24uZmVhdHVyZShiZWxnaXVtLCBiZWxnaXVtLm9iamVjdHMubXVuaWNpcGFsaXRpZXMpLmZlYXR1cmVzO1xuICAgIHZhciBwcm9qZWN0aW9uID0gQ2hhcnRHZW8uZ2VvTWVyY2F0b3IoKVxuICAgIG5ldyBDaG9yb3BsZXRoQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcE1hcCcpLmdldENvbnRleHQoJzJkJyksXG4gICAgICAgIHtcbiAgICAgICAgICAgIHR5cGU6ICdjaG9yb3BsZXRoJyxcbiAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICBsYWJlbHM6IG11bmljaXBhbGl0aWVzLm1hcCgoZCkgPT4gKGQucHJvcGVydGllcy5uYW1lX2ZyKSksXG4gICAgICAgICAgICAgICAgZGF0YXNldHM6IFtcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6ICdtdW5pY2lwYWxpdGllcycsXG4gICAgICAgICAgICAgICAgICAgICAgICBvdXRsaW5lOiBtdW5pY2lwYWxpdGllcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGRhdGE6IG11bmljaXBhbGl0aWVzLm1hcCgoZCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmVhdHVyZTogZCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGQucHJvcGVydGllcy5uYW1lX2ZyID8gZC5wcm9wZXJ0aWVzLnBvcHVsYXRpb24gOiAxMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgXSxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICAgICAgcGx1Z2luczoge1xuICAgICAgICAgICAgICAgICAgICBsZWdlbmQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BsYXk6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBzY2FsZXM6IHtcbiAgICAgICAgICAgICAgICAgICAgcHJvamVjdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICAgICAgYXhpczogJ3gnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdGlvbjogcHJvamVjdGlvbixcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG5cblxuICAgIC8vIERPTlVUXG4gICAgY29uc3QgZGF0YSA9IHtcbiAgICAgICAgcmVzcG9uc2l2ZTogdHJ1ZSxcbiAgICAgICAgbGFiZWxzOiBbXG4gICAgICAgICAgICAnUmVkJyxcbiAgICAgICAgICAgICdCbHVlJyxcbiAgICAgICAgICAgICdZZWxsb3cnXG4gICAgICAgIF0sXG4gICAgICAgIGRhdGFzZXRzOiBbe1xuICAgICAgICAgICAgbGFiZWw6ICdNeSBGaXJzdCBEYXRhc2V0JyxcbiAgICAgICAgICAgIGRhdGE6IFszMDAsIDUwLCAxMDBdLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiBbXG4gICAgICAgICAgICAgICAgJ3JnYigyNTUsIDk5LCAxMzIpJyxcbiAgICAgICAgICAgICAgICAncmdiKDU0LCAxNjIsIDIzNSknLFxuICAgICAgICAgICAgICAgICdyZ2IoMjU1LCAyMDUsIDg2KSdcbiAgICAgICAgICAgIF0sXG4gICAgICAgICAgICBob3Zlck9mZnNldDogMVxuICAgICAgICB9XVxuICAgIH07XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICB0eXBlOiAnZG91Z2hudXQnLFxuICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgICByb3RhdGlvbjogLTkwLFxuICAgICAgICAgICAgY2lyY3VtZmVyZW5jZTogMTgwLFxuICAgICAgICB9XG4gICAgfTtcbiAgICBsZXQgZG9udXQgPSBuZXcgQ2hhcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RvbnV0R3JhcGgnKS5nZXRDb250ZXh0KCcyZCcpLCBjb25maWcpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignYmVmb3JlJywgKCkgPT4ge1xuICAgICAgICBkb251dC5yZXNpemUoNTAwLCA1MDApO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhZnRlcnByaW50JywgKCkgPT4ge1xuICAgICAgICBkb251dC5yZXNpemUoKTtcbiAgICB9KTtcbn0pXG4iLCIkKCcucGFydGktc2VhcmNoJykub24oJ2NoYW5nZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSAncGFydGkvJyArICQodGhpcykudmFsKCk7XG59KTtcblxuJChcIi5maWx0ZXJTZWxlY3RcIikuc2VsZWN0Mih7XG4gICAgdGhlbWU6IFwiYm9vdHN0cmFwLTVcIixcbn0pO1xuXG5sZXQgYXBpQ2FsbCA9IHtcbiAgICBhamF4OiB7XG4gICAgICAgIGRlbGF5OiAxMDAwLFxuICAgICAgICBkYXRhOiBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICAgICAgICB2YXIgcXVlcnkgPSB7XG4gICAgICAgICAgICAgICAgaXRlbXNQZXJQYWdlOiAzMCxcbiAgICAgICAgICAgICAgICBwYWdlOiBwYXJhbXMucGFnZSB8fCAxLFxuICAgICAgICAgICAgICAgIGxvZ286IHBhcmFtcy50ZXJtXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gcXVlcnk7XG4gICAgICAgIH0sXG4gICAgICAgIHByb2Nlc3NSZXN1bHRzOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICAgICAgbGV0IHJlc3VsdHMgPSBkYXRhW1wiaHlkcmE6bWVtYmVyXCJdLm1hcCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIFwiaWRcIjogaXRlbS5pZCxcbiAgICAgICAgICAgICAgICAgICAgXCJ0ZXh0XCI6IGl0ZW0uYWNyb255bVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIHJlc3VsdHMsXG4gICAgICAgICAgICAgICAgcGFnaW5hdGlvbjoge1xuICAgICAgICAgICAgICAgICAgICBtb3JlOiBkYXRhW1wiaHlkcmE6dmlld1wiXVtcImh5ZHJhOmxhc3RcIl0gIT09IHVuZGVmaW5lZFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9XG59XG5cbmxldCBhcGlQYXJ0aSA9IGFwaUNhbGw7XG5hcGlQYXJ0aS5hamF4LnVybCA9ICcvYXBpL3BhcnRpcyc7XG5hcGlQYXJ0aS5wbGFjZWhvbGRlciA9ICQoJyNwbGFjZWhvbGRlclNlbGVjdFBhcnRpJykuaHRtbCgpID8/IFwiU2VsZWN0IGEgcGFydGlcIjtcbiQoJyNzZWxlY3RQYXJ0aScpLnNlbGVjdDIoYXBpUGFydGkpOyJdLCJuYW1lcyI6WyIkIiwib24iLCJoYXNDbGFzcyIsInJlbW92ZUNsYXNzIiwiYW5pbWF0ZSIsInJpZ2h0IiwiYWRkQ2xhc3MiLCJDaGFydCIsIkNob3JvcGxldGhDaGFydCIsIkNoYXJ0R2VvIiwiZG9jdW1lbnQiLCJyZWFkeSIsImZldGNoIiwidGhlbiIsInIiLCJqc29uIiwiZSIsImNvbnNvbGUiLCJsb2ciLCJiZWxnaXVtIiwibXVuaWNpcGFsaXRpZXMiLCJ0b3BvanNvbiIsImZlYXR1cmUiLCJvYmplY3RzIiwiZmVhdHVyZXMiLCJwcm9qZWN0aW9uIiwiZ2VvTWVyY2F0b3IiLCJnZXRFbGVtZW50QnlJZCIsImdldENvbnRleHQiLCJ0eXBlIiwiZGF0YSIsImxhYmVscyIsIm1hcCIsImQiLCJwcm9wZXJ0aWVzIiwibmFtZV9mciIsImRhdGFzZXRzIiwibGFiZWwiLCJvdXRsaW5lIiwidmFsdWUiLCJwb3B1bGF0aW9uIiwib3B0aW9ucyIsInBsdWdpbnMiLCJsZWdlbmQiLCJkaXNwbGF5Iiwic2NhbGVzIiwiYXhpcyIsInJlc3BvbnNpdmUiLCJiYWNrZ3JvdW5kQ29sb3IiLCJob3Zlck9mZnNldCIsImNvbmZpZyIsInJvdGF0aW9uIiwiY2lyY3VtZmVyZW5jZSIsImRvbnV0Iiwid2luZG93IiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlc2l6ZSIsImxvY2F0aW9uIiwiaHJlZiIsInZhbCIsInNlbGVjdDIiLCJ0aGVtZSIsImFwaUNhbGwiLCJhamF4IiwiZGVsYXkiLCJwYXJhbXMiLCJxdWVyeSIsIml0ZW1zUGVyUGFnZSIsInBhZ2UiLCJsb2dvIiwidGVybSIsInByb2Nlc3NSZXN1bHRzIiwicmVzdWx0cyIsIml0ZW0iLCJpZCIsImFjcm9ueW0iLCJwYWdpbmF0aW9uIiwibW9yZSIsInVuZGVmaW5lZCIsImFwaVBhcnRpIiwidXJsIiwicGxhY2Vob2xkZXIiLCJodG1sIl0sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/public/build/images/election-results-bg.338ec5d2.jpg b/public/build/images/election-results-bg.338ec5d2.jpg new file mode 100644 index 00000000..9106c361 Binary files /dev/null and b/public/build/images/election-results-bg.338ec5d2.jpg differ diff --git a/public/build/images/elections-infos-bg.6694c177.jpg b/public/build/images/elections-infos-bg.6694c177.jpg new file mode 100644 index 00000000..223c4e7f Binary files /dev/null and b/public/build/images/elections-infos-bg.6694c177.jpg differ diff --git a/public/build/images/federal-infos-bg.da0be29f.jpg b/public/build/images/federal-infos-bg.da0be29f.jpg new file mode 100644 index 00000000..fd000959 Binary files /dev/null and b/public/build/images/federal-infos-bg.da0be29f.jpg differ diff --git a/public/build/images/icons.1fc6296b.svg b/public/build/images/icons.1fc6296b.svg new file mode 100644 index 00000000..819315f1 --- /dev/null +++ b/public/build/images/icons.1fc6296b.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/public/build/images/legislatives-infos-bg.917f73ab.jpg b/public/build/images/legislatives-infos-bg.917f73ab.jpg new file mode 100644 index 00000000..c8ff138a Binary files /dev/null and b/public/build/images/legislatives-infos-bg.917f73ab.jpg differ diff --git a/public/build/images/non-federal-bg.d99b76c9.jpg b/public/build/images/non-federal-bg.d99b76c9.jpg new file mode 100644 index 00000000..b6ae909f Binary files /dev/null and b/public/build/images/non-federal-bg.d99b76c9.jpg differ diff --git a/public/build/images/non-federal-bg.eeea4710.png b/public/build/images/non-federal-bg.eeea4710.png deleted file mode 100644 index b7b07021..00000000 Binary files a/public/build/images/non-federal-bg.eeea4710.png and /dev/null differ diff --git a/public/build/manifest.json b/public/build/manifest.json index 2a0350b6..7dbec14d 100644 --- a/public/build/manifest.json +++ b/public/build/manifest.json @@ -1,2733 +1,34 @@ { - "build/app.css": "/build/app.css", - "build/app.js": "/build/app.js", - "build/home.js": "/build/home.js", - "build/parti.js": "/build/parti.js", - "build/table.css": "/build/table.css", - "build/table.js": "/build/table.js", - "build/runtime.js": "/build/runtime.js", - "build/vendors-node_modules_jquery_dist_jquery_js.js": "/build/vendors-node_modules_jquery_dist_jquery_js.js", - "build/vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2.js": "/build/vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2.js", - "build/vendors-node_modules_chart_js_auto_auto_js.js": "/build/vendors-node_modules_chart_js_auto_auto_js.js", - "build/vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c.js": "/build/vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c.js", - "build/vendors-node_modules_symfony_webpack-encore_lib_webpack_copy-files-loader_js_context_home_rem-677765.js": "/build/vendors-node_modules_symfony_webpack-encore_lib_webpack_copy-files-loader_js_context_home_rem-677765.js", - "build/vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-d9685c.js": "/build/vendors-node_modules_core-js_modules_es_array_for-each_js-node_modules_core-js_modules_es_arr-d9685c.js", - "build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.css": "/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.css", - "build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.js": "/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-4aa02f.js", - "build/ckeditor/ckeditor.js": "/build/ckeditor/ckeditor.js", + "build/app.css": "/build/app.3044f0a6.css", + "build/app.js": "/build/app.4a5e1740.js", + "build/home.js": "/build/home.db89cec4.js", + "build/parti.js": "/build/parti.a5a882d8.js", + "build/table.css": "/build/table.1ddcb887.css", + "build/table.js": "/build/table.957edfbd.js", + "build/election.js": "/build/election.26f19cac.js", + "build/trumbowyg.js": "/build/trumbowyg.2aa8b209.js", + "build/trumbowyg-style.css": "/build/trumbowyg-style.0c4698fd.css", + "build/trumbowyg-style.js": "/build/trumbowyg-style.bb54538b.js", + "build/runtime.js": "/build/runtime.3cfbb063.js", + "build/755.1af907cb.js": "/build/755.1af907cb.js", + "build/865.4367d039.js": "/build/865.4367d039.js", + "build/920.093c2efa.js": "/build/920.093c2efa.js", + "build/175.d89ab825.js": "/build/175.d89ab825.js", + "build/676.8055c8bf.js": "/build/676.8055c8bf.js", + "build/201.fa351aff.js": "/build/201.fa351aff.js", + "build/471.9be1b4fe.css": "/build/471.9be1b4fe.css", + "build/471.7ea42d3c.js": "/build/471.7ea42d3c.js", + "build/904.37a35d24.css": "/build/904.37a35d24.css", "build/fonts/PTS75F.ttf": "/build/fonts/PTS75F.67299b07.ttf", "build/fonts/PTS55F.ttf": "/build/fonts/PTS55F.6b198b59.ttf", - "build/images/non-federal-bg.png": "/build/images/non-federal-bg.eeea4710.png", "build/fonts/bootstrap-icons.woff?": "/build/fonts/bootstrap-icons.6959d0d9.woff", - "build/ckeditor/plugins/emoji/emoji.json": "/build/ckeditor/plugins/emoji/emoji.json", "build/fonts/bootstrap-icons.woff2?": "/build/fonts/bootstrap-icons.b2e5aab6.woff2", + "build/images/legislatives-infos-bg.jpg": "/build/images/legislatives-infos-bg.917f73ab.jpg", + "build/images/federal-infos-bg.jpg": "/build/images/federal-infos-bg.da0be29f.jpg", + "build/images/election-results-bg.jpg": "/build/images/election-results-bg.338ec5d2.jpg", + "build/images/elections-infos-bg.jpg": "/build/images/elections-infos-bg.6694c177.jpg", "build/fonts/MuseoModerno-Regular.ttf": "/build/fonts/MuseoModerno-Regular.6019bae4.ttf", "build/fonts/MuseoModerno-Bold.ttf": "/build/fonts/MuseoModerno-Bold.7c88dff0.ttf", - "build/ckeditor/skins/moono/icons_hidpi.png": "/build/ckeditor/skins/moono/icons_hidpi.png", - "build/ckeditor/skins/moono-lisa/editor_ie8.css": "/build/ckeditor/skins/moono-lisa/editor_ie8.css", - "build/ckeditor/skins/moono-lisa/editor_iequirks.css": "/build/ckeditor/skins/moono-lisa/editor_iequirks.css", - "build/ckeditor/skins/moono-lisa/editor_ie.css": "/build/ckeditor/skins/moono-lisa/editor_ie.css", - "build/ckeditor/skins/moono-lisa/editor_gecko.css": "/build/ckeditor/skins/moono-lisa/editor_gecko.css", - "build/ckeditor/skins/moono-lisa/editor.css": "/build/ckeditor/skins/moono-lisa/editor.css", - "build/ckeditor/skins/moono/editor_ie7.css": "/build/ckeditor/skins/moono/editor_ie7.css", - "build/ckeditor/skins/moono/editor_iequirks.css": "/build/ckeditor/skins/moono/editor_iequirks.css", - "build/ckeditor/skins/moono/editor_ie8.css": "/build/ckeditor/skins/moono/editor_ie8.css", - "build/ckeditor/skins/moono/editor_ie.css": "/build/ckeditor/skins/moono/editor_ie.css", - "build/ckeditor/skins/moono/editor_gecko.css": "/build/ckeditor/skins/moono/editor_gecko.css", - "build/ckeditor/skins/moono/editor.css": "/build/ckeditor/skins/moono/editor.css", - "build/ckeditor/skins/kama/editor_iequirks.css": "/build/ckeditor/skins/kama/editor_iequirks.css", - "build/ckeditor/skins/kama/editor_ie7.css": "/build/ckeditor/skins/kama/editor_ie7.css", - "build/ckeditor/skins/kama/editor_ie8.css": "/build/ckeditor/skins/kama/editor_ie8.css", - "build/ckeditor/skins/kama/editor_ie.css": "/build/ckeditor/skins/kama/editor_ie.css", - "build/ckeditor/skins/kama/editor.css": "/build/ckeditor/skins/kama/editor.css", - "build/ckeditor/plugins/icons_hidpi.png": "/build/ckeditor/plugins/icons_hidpi.png", - "build/ckeditor/skins/moono-lisa/icons_hidpi.png": "/build/ckeditor/skins/moono-lisa/icons_hidpi.png", - "build/ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md": "/build/ckeditor/plugins/codesnippet/lib/highlight/CHANGES.md", - "build/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js": "/build/ckeditor/plugins/codesnippet/lib/highlight/highlight.pack.js", - "build/ckeditor/lang/km.js": "/build/ckeditor/lang/km.js", - "build/ckeditor/plugins/image/dialogs/image.js": "/build/ckeditor/plugins/image/dialogs/image.js", - "build/ckeditor/lang/ka.js": "/build/ckeditor/lang/ka.js", - "build/ckeditor/skins/moono/icons.png": "/build/ckeditor/skins/moono/icons.png", - "build/ckeditor/lang/gu.js": "/build/ckeditor/lang/gu.js", - "build/ckeditor/lang/el.js": "/build/ckeditor/lang/el.js", - "build/ckeditor/plugins/pastefromword/filter/default.js": "/build/ckeditor/plugins/pastefromword/filter/default.js", - "build/ckeditor/lang/th.js": "/build/ckeditor/lang/th.js", - "build/ckeditor/lang/uk.js": "/build/ckeditor/lang/uk.js", - "build/ckeditor/lang/ru.js": "/build/ckeditor/lang/ru.js", - "build/ckeditor/skins/kama/icons_hidpi.png": "/build/ckeditor/skins/kama/icons_hidpi.png", - "build/ckeditor/lang/bg.js": "/build/ckeditor/lang/bg.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_papersq.png", - "build/ckeditor/lang/ku.js": "/build/ckeditor/lang/ku.js", - "build/ckeditor/lang/ug.js": "/build/ckeditor/lang/ug.js", - "build/ckeditor/lang/sr.js": "/build/ckeditor/lang/sr.js", - "build/ckeditor/lang/si.js": "/build/ckeditor/lang/si.js", - "build/ckeditor/lang/fa.js": "/build/ckeditor/lang/fa.js", - "build/ckeditor/plugins/scayt/dialogs/options.js": "/build/ckeditor/plugins/scayt/dialogs/options.js", - "build/ckeditor/lang/hi.js": "/build/ckeditor/lang/hi.js", - "build/ckeditor/lang/bn.js": "/build/ckeditor/lang/bn.js", - "build/ckeditor/lang/tt.js": "/build/ckeditor/lang/tt.js", - "build/ckeditor/lang/mn.js": "/build/ckeditor/lang/mn.js", - "build/ckeditor/skins/moono-lisa/dialog_ie8.css": "/build/ckeditor/skins/moono-lisa/dialog_ie8.css", - "build/ckeditor/lang/ar.js": "/build/ckeditor/lang/ar.js", - "build/ckeditor/skins/moono/dialog_ie7.css": "/build/ckeditor/skins/moono/dialog_ie7.css", - "build/ckeditor/lang/he.js": "/build/ckeditor/lang/he.js", - "build/ckeditor/skins/moono/dialog_ie8.css": "/build/ckeditor/skins/moono/dialog_ie8.css", - "build/ckeditor/lang/ja.js": "/build/ckeditor/lang/ja.js", - "build/ckeditor/skins/moono-lisa/dialog_iequirks.css": "/build/ckeditor/skins/moono-lisa/dialog_iequirks.css", - "build/ckeditor/skins/moono-lisa/dialog_ie.css": "/build/ckeditor/skins/moono-lisa/dialog_ie.css", - "build/ckeditor/skins/moono/dialog_iequirks.css": "/build/ckeditor/skins/moono/dialog_iequirks.css", - "build/ckeditor/skins/moono/dialog_ie.css": "/build/ckeditor/skins/moono/dialog_ie.css", - "build/ckeditor/plugins/image2/plugin.js": "/build/ckeditor/plugins/image2/plugin.js", - "build/ckeditor/lang/vi.js": "/build/ckeditor/lang/vi.js", - "build/ckeditor/lang/ro.js": "/build/ckeditor/lang/ro.js", - "build/ckeditor/lang/fr.js": "/build/ckeditor/lang/fr.js", - "build/ckeditor/skins/moono-lisa/dialog.css": "/build/ckeditor/skins/moono-lisa/dialog.css", - "build/ckeditor/lang/oc.js": "/build/ckeditor/lang/oc.js", - "build/ckeditor/lang/sq.js": "/build/ckeditor/lang/sq.js", - "build/ckeditor/skins/moono/dialog.css": "/build/ckeditor/skins/moono/dialog.css", - "build/ckeditor/lang/hu.js": "/build/ckeditor/lang/hu.js", - "build/ckeditor/lang/it.js": "/build/ckeditor/lang/it.js", - "build/ckeditor/lang/es-mx.js": "/build/ckeditor/lang/es-mx.js", - "build/ckeditor/lang/mk.js": "/build/ckeditor/lang/mk.js", - "build/ckeditor/lang/es.js": "/build/ckeditor/lang/es.js", - "build/ckeditor/lang/pt-br.js": "/build/ckeditor/lang/pt-br.js", - "build/ckeditor/lang/lv.js": "/build/ckeditor/lang/lv.js", - "build/ckeditor/lang/pl.js": "/build/ckeditor/lang/pl.js", - "build/ckeditor/lang/gl.js": "/build/ckeditor/lang/gl.js", - "build/ckeditor/lang/sk.js": "/build/ckeditor/lang/sk.js", - "build/ckeditor/lang/de-ch.js": "/build/ckeditor/lang/de-ch.js", - "build/ckeditor/lang/de.js": "/build/ckeditor/lang/de.js", - "build/ckeditor/lang/pt.js": "/build/ckeditor/lang/pt.js", - "build/ckeditor/lang/ca.js": "/build/ckeditor/lang/ca.js", - "build/ckeditor/lang/tr.js": "/build/ckeditor/lang/tr.js", - "build/ckeditor/lang/cs.js": "/build/ckeditor/lang/cs.js", - "build/ckeditor/plugins/link/dialogs/link.js": "/build/ckeditor/plugins/link/dialogs/link.js", - "build/ckeditor/plugins/colorbutton/plugin.js": "/build/ckeditor/plugins/colorbutton/plugin.js", - "build/ckeditor/lang/lt.js": "/build/ckeditor/lang/lt.js", - "build/ckeditor/lang/fr-ca.js": "/build/ckeditor/lang/fr-ca.js", - "build/ckeditor/lang/eu.js": "/build/ckeditor/lang/eu.js", - "build/ckeditor/lang/az.js": "/build/ckeditor/lang/az.js", - "build/ckeditor/lang/ko.js": "/build/ckeditor/lang/ko.js", - "build/ckeditor/plugins/emoji/plugin.js": "/build/ckeditor/plugins/emoji/plugin.js", - "build/ckeditor/lang/fi.js": "/build/ckeditor/lang/fi.js", - "build/ckeditor/lang/eo.js": "/build/ckeditor/lang/eo.js", - "build/ckeditor/lang/fo.js": "/build/ckeditor/lang/fo.js", - "build/ckeditor/lang/nl.js": "/build/ckeditor/lang/nl.js", - "build/ckeditor/lang/da.js": "/build/ckeditor/lang/da.js", - "build/ckeditor/lang/sr-latn.js": "/build/ckeditor/lang/sr-latn.js", - "build/ckeditor/lang/sl.js": "/build/ckeditor/lang/sl.js", - "build/ckeditor/plugins/copyformatting/plugin.js": "/build/ckeditor/plugins/copyformatting/plugin.js", - "build/ckeditor/lang/is.js": "/build/ckeditor/lang/is.js", - "build/ckeditor/lang/sv.js": "/build/ckeditor/lang/sv.js", - "build/ckeditor/lang/et.js": "/build/ckeditor/lang/et.js", - "build/ckeditor/lang/cy.js": "/build/ckeditor/lang/cy.js", - "build/ckeditor/lang/hr.js": "/build/ckeditor/lang/hr.js", - "build/ckeditor/lang/id.js": "/build/ckeditor/lang/id.js", - "build/ckeditor/plugins/icons.png": "/build/ckeditor/plugins/icons.png", - "build/ckeditor/skins/moono-lisa/icons.png": "/build/ckeditor/skins/moono-lisa/icons.png", - "build/ckeditor/lang/no.js": "/build/ckeditor/lang/no.js", - "build/ckeditor/lang/nb.js": "/build/ckeditor/lang/nb.js", - "build/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png": "/build/ckeditor/plugins/about/dialogs/hidpi/logo_ckeditor.png", - "build/ckeditor/plugins/emoji/assets/iconsall.svg": "/build/ckeditor/plugins/emoji/assets/iconsall.svg", - "build/ckeditor/lang/ms.js": "/build/ckeditor/lang/ms.js", - "build/ckeditor/lang/bs.js": "/build/ckeditor/lang/bs.js", - "build/ckeditor/lang/en-gb.js": "/build/ckeditor/lang/en-gb.js", - "build/ckeditor/lang/en.js": "/build/ckeditor/lang/en.js", - "build/ckeditor/lang/en-au.js": "/build/ckeditor/lang/en-au.js", - "build/ckeditor/lang/en-ca.js": "/build/ckeditor/lang/en-ca.js", - "build/ckeditor/lang/af.js": "/build/ckeditor/lang/af.js", - "build/ckeditor/lang/zh-cn.js": "/build/ckeditor/lang/zh-cn.js", - "build/ckeditor/lang/zh.js": "/build/ckeditor/lang/zh.js", - "build/ckeditor/skins/kama/icons.png": "/build/ckeditor/skins/kama/icons.png", - "build/ckeditor/plugins/find/dialogs/find.js": "/build/ckeditor/plugins/find/dialogs/find.js", - "build/ckeditor/plugins/autocomplete/plugin.js": "/build/ckeditor/plugins/autocomplete/plugin.js", - "build/ckeditor/plugins/docprops/dialogs/docprops.js": "/build/ckeditor/plugins/docprops/dialogs/docprops.js", - "build/ckeditor/skins/kama/dialog_iequirks.css": "/build/ckeditor/skins/kama/dialog_iequirks.css", - "build/ckeditor/skins/kama/dialog_ie7.css": "/build/ckeditor/skins/kama/dialog_ie7.css", - "build/ckeditor/plugins/pastetools/filter/common.js": "/build/ckeditor/plugins/pastetools/filter/common.js", - "build/ckeditor/skins/kama/dialog_ie8.css": "/build/ckeditor/skins/kama/dialog_ie8.css", - "build/ckeditor/skins/kama/dialog_ie.css": "/build/ckeditor/skins/kama/dialog_ie.css", - "build/ckeditor/plugins/bbcode/plugin.js": "/build/ckeditor/plugins/bbcode/plugin.js", - "build/ckeditor/skins/kama/dialog.css": "/build/ckeditor/skins/kama/dialog.css", - "build/ckeditor/plugins/balloonpanel/plugin.js": "/build/ckeditor/plugins/balloonpanel/plugin.js", - "build/ckeditor/plugins/table/dialogs/table.js": "/build/ckeditor/plugins/table/dialogs/table.js", - "build/ckeditor/plugins/imagebase/plugin.js": "/build/ckeditor/plugins/imagebase/plugin.js", - "build/ckeditor/plugins/forms/dialogs/select.js": "/build/ckeditor/plugins/forms/dialogs/select.js", - "build/ckeditor/plugins/balloontoolbar/plugin.js": "/build/ckeditor/plugins/balloontoolbar/plugin.js", - "build/ckeditor/plugins/exportpdf/plugin.js": "/build/ckeditor/plugins/exportpdf/plugin.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/el.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/el.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/README.ru.md": "/build/ckeditor/plugins/codesnippet/lib/highlight/README.ru.md", - "build/ckeditor/plugins/easyimage/plugin.js": "/build/ckeditor/plugins/easyimage/plugin.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/el.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/el.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ku.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ku.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ru.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ru.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sr.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sr.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sr.js", - "build/ckeditor/plugins/tabletools/dialogs/tableCell.js": "/build/ckeditor/plugins/tabletools/dialogs/tableCell.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ug.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/uk.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/tt.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/tt.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ru.js", - "build/ckeditor/plugins/uicolor/dialogs/uicolor.js": "/build/ckeditor/plugins/uicolor/dialogs/uicolor.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/uk.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/uk.js", - "build/ckeditor/vendor/promise.js": "/build/ckeditor/vendor/promise.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/fa.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/si.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/si.js", - "build/ckeditor/skins/kama/images/sprites.png": "/build/ckeditor/skins/kama/images/sprites.png", - "build/ckeditor/plugins/mathjax/plugin.js": "/build/ckeditor/plugins/mathjax/plugin.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/vi.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/vi.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ku.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/fa.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/fa.js", - "build/ckeditor/plugins/font/plugin.js": "/build/ckeditor/plugins/font/plugin.js", - "build/ckeditor/plugins/about/dialogs/logo_ckeditor.png": "/build/ckeditor/plugins/about/dialogs/logo_ckeditor.png", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ko.js", - "build/ckeditor/styles.js": "/build/ckeditor/styles.js", - "build/ckeditor/plugins/image2/dialogs/image2.js": "/build/ckeditor/plugins/image2/dialogs/image2.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/vi.js", - "build/ckeditor/plugins/colordialog/dialogs/colordialog.js": "/build/ckeditor/plugins/colordialog/dialogs/colordialog.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/fr.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/it.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/it.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/km.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/km.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ja.js", - "build/ckeditor/plugins/tableresize/plugin.js": "/build/ckeditor/plugins/tableresize/plugin.js", - "build/ckeditor/plugins/forms/plugin.js": "/build/ckeditor/plugins/forms/plugin.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/pl.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/oc.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/oc.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/lv.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/lv.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/it.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/it.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ca.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ca.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/gl.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/gl.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ug.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ug.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sq.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sq.js", - "build/ckeditor/plugins/specialchar/dialogs/specialchar.js": "/build/ckeditor/plugins/specialchar/dialogs/specialchar.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/he.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/he.js", - "build/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css": "/build/ckeditor/plugins/balloonpanel/skins/moono/balloonpanel.css", - "build/ckeditor/plugins/specialchar/dialogs/lang/cs.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/cs.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/es.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/es.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/he.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/he.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/cs.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ko.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ko.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sq.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/fr-ca.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/cy.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/cy.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/si.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/si.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sr-latn.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/es-mx.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/lv.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/bg.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/bg.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/gl.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/pt.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/pt.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/de-ch.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/es.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/es.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/de.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/de.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/eo.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ar.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ar.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/es-mx.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/es-mx.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ca.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sk.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sk.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sk.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/hu.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/km.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/km.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/fi.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/nl.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/nl.js", - "build/ckeditor/plugins/bidi/plugin.js": "/build/ckeditor/plugins/bidi/plugin.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sr-latn.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sr-latn.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/de-ch.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/pt-br.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/ro.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ro.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/th.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/th.js", - "build/ckeditor/plugins/div/dialogs/div.js": "/build/ckeditor/plugins/div/dialogs/div.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/de.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/de.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/lt.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/lt.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/fi.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/fi.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/mk.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/tr.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/th.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/th.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/pt.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/id.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/id.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/bg.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/en-au.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/en-au.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/en-ca.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/en-gb.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/eu.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/eu.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/en.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/en.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ro.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sl.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/af.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/af.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/nl.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/tt.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/eu.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/tr.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/tr.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/nb.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/no.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/no.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/et.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/et.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/gu.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/hr.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/hr.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/zh-cn.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/cy.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/sv.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sl.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sl.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/zh.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/ar.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/pl.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/pl.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/az.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/az.js", - "build/ckeditor/plugins/emoji/skins/default.css": "/build/ckeditor/plugins/emoji/skins/default.css", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/hr.js", - "build/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css": "/build/ckeditor/plugins/balloonpanel/skins/kama/balloonpanel.css", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/da.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/da.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/hi.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/lt.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/mn.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/en-au.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/en-au.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/en-gb.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/fo.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/en.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/en.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/zh.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/zh.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/af.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/af.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/hu.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/hu.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/zh-cn.js", - "build/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css": "/build/ckeditor/plugins/balloonpanel/skins/moono-lisa/balloonpanel.css", - "build/ckeditor/plugins/codesnippet/plugin.js": "/build/ckeditor/plugins/codesnippet/plugin.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/eo.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/eo.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/id.js": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/id.js", - "build/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg": "/build/ckeditor/plugins/copyformatting/cursors/cursor-disabled.svg", - "build/ckeditor/plugins/specialchar/dialogs/lang/ja.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/ja.js", - "build/ckeditor/plugins/justify/plugin.js": "/build/ckeditor/plugins/justify/plugin.js", - "build/ckeditor/plugins/pastetools/filter/image.js": "/build/ckeditor/plugins/pastetools/filter/image.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/fr.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/fr.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/oc.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/oc.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/pt-br.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/et.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/et.js", - "build/ckeditor/plugins/clipboard/dialogs/paste.js": "/build/ckeditor/plugins/clipboard/dialogs/paste.js", - "build/ckeditor/skins/moono/skin.js": "/build/ckeditor/skins/moono/skin.js", - "build/ckeditor/plugins/embedbase/plugin.js": "/build/ckeditor/plugins/embedbase/plugin.js", - "build/ckeditor/plugins/pastefromlibreoffice/filter/default.js": "/build/ckeditor/plugins/pastefromlibreoffice/filter/default.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/sv.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/sv.js", - "build/ckeditor/plugins/smiley/dialogs/smiley.js": "/build/ckeditor/plugins/smiley/dialogs/smiley.js", - "build/ckeditor/plugins/easyimage/styles/easyimage.css": "/build/ckeditor/plugins/easyimage/styles/easyimage.css", - "build/ckeditor/plugins/specialchar/dialogs/lang/nb.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/nb.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/no.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/no.js", - "build/ckeditor/plugins/forms/dialogs/textfield.js": "/build/ckeditor/plugins/forms/dialogs/textfield.js", - "build/ckeditor/plugins/iframe/dialogs/iframe.js": "/build/ckeditor/plugins/iframe/dialogs/iframe.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/az.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/az.js", - "build/ckeditor/plugins/templates/dialogs/templates.js": "/build/ckeditor/plugins/templates/dialogs/templates.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/da.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/da.js", - "build/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js": "/build/ckeditor/plugins/specialchar/dialogs/lang/fr-ca.js", - "build/ckeditor/adapters/jquery.js": "/build/ckeditor/adapters/jquery.js", - "build/ckeditor/plugins/codesnippetgeshi/plugin.js": "/build/ckeditor/plugins/codesnippetgeshi/plugin.js", - "build/ckeditor/plugins/preview/plugin.js": "/build/ckeditor/plugins/preview/plugin.js", - "build/ckeditor/contents.css": "/build/ckeditor/contents.css", - "build/ckeditor/plugins/exportpdf/CHANGELOG.md": "/build/ckeditor/plugins/exportpdf/CHANGELOG.md", - "build/ckeditor/skins/kama/images/spinner.gif": "/build/ckeditor/skins/kama/images/spinner.gif", - "build/ckeditor/skins/moono-lisa/images/spinner.gif": "/build/ckeditor/skins/moono-lisa/images/spinner.gif", - "build/ckeditor/skins/moono/images/spinner.gif": "/build/ckeditor/skins/moono/images/spinner.gif", - "build/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js": "/build/ckeditor/plugins/a11yhelp/dialogs/a11yhelp.js", - "build/ckeditor/plugins/indentblock/plugin.js": "/build/ckeditor/plugins/indentblock/plugin.js", - "build/ckeditor/plugins/liststyle/dialogs/liststyle.js": "/build/ckeditor/plugins/liststyle/dialogs/liststyle.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/default.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/default.css", - "build/ckeditor/plugins/copyformatting/cursors/cursor.svg": "/build/ckeditor/plugins/copyformatting/cursors/cursor.svg", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/railscasts.css", - "build/ckeditor/plugins/devtools/plugin.js": "/build/ckeditor/plugins/devtools/plugin.js", - "build/ckeditor/plugins/pagebreak/plugin.js": "/build/ckeditor/plugins/pagebreak/plugin.js", - "build/ckeditor/skins/kama/images/sprites_ie6.png": "/build/ckeditor/skins/kama/images/sprites_ie6.png", - "build/ckeditor/plugins/forms/dialogs/checkbox.js": "/build/ckeditor/plugins/forms/dialogs/checkbox.js", - "build/ckeditor/plugins/language/plugin.js": "/build/ckeditor/plugins/language/plugin.js", - "build/ckeditor/plugins/balloontoolbar/skins/default.css": "/build/ckeditor/plugins/balloontoolbar/skins/default.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/arta.css", - "build/ckeditor/skins/moono/readme.md": "/build/ckeditor/skins/moono/readme.md", - "build/ckeditor/plugins/adobeair/plugin.js": "/build/ckeditor/plugins/adobeair/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai_sublime.css", - "build/ckeditor/plugins/showblocks/plugin.js": "/build/ckeditor/plugins/showblocks/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/obsidian.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/xcode.css", - "build/ckeditor/plugins/mentions/plugin.js": "/build/ckeditor/plugins/mentions/plugin.js", - "build/ckeditor/plugins/autoembed/plugin.js": "/build/ckeditor/plugins/autoembed/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/sunburst.css", - "build/ckeditor/plugins/forms/dialogs/radio.js": "/build/ckeditor/plugins/forms/dialogs/radio.js", - "build/ckeditor/plugins/colorbutton/lang/ka.js": "/build/ckeditor/plugins/colorbutton/lang/ka.js", - "build/ckeditor/plugins/forms/lang/ka.js": "/build/ckeditor/plugins/forms/lang/ka.js", - "build/ckeditor/plugins/forms/dialogs/textarea.js": "/build/ckeditor/plugins/forms/dialogs/textarea.js", - "build/ckeditor/plugins/colorbutton/lang/uk.js": "/build/ckeditor/plugins/colorbutton/lang/uk.js", - "build/ckeditor/skins/moono/images/hidpi/refresh.png": "/build/ckeditor/skins/moono/images/hidpi/refresh.png", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/googlecode.css", - "build/ckeditor/skins/moono-lisa/readme.md": "/build/ckeditor/skins/moono-lisa/readme.md", - "build/ckeditor/plugins/colorbutton/lang/ru.js": "/build/ckeditor/plugins/colorbutton/lang/ru.js", - "build/ckeditor/plugins/div/plugin.js": "/build/ckeditor/plugins/div/plugin.js", - "build/ckeditor/plugins/dialogadvtab/plugin.js": "/build/ckeditor/plugins/dialogadvtab/plugin.js", - "build/ckeditor/plugins/pastefromgdocs/filter/default.js": "/build/ckeditor/plugins/pastefromgdocs/filter/default.js", - "build/ckeditor/plugins/link/dialogs/anchor.js": "/build/ckeditor/plugins/link/dialogs/anchor.js", - "build/ckeditor/plugins/colorbutton/lang/bg.js": "/build/ckeditor/plugins/colorbutton/lang/bg.js", - "build/ckeditor/plugins/forms/lang/th.js": "/build/ckeditor/plugins/forms/lang/th.js", - "build/ckeditor/plugins/colorbutton/lang/ku.js": "/build/ckeditor/plugins/colorbutton/lang/ku.js", - "build/ckeditor/lang/_translationstatus.txt": "/build/ckeditor/lang/_translationstatus.txt", - "build/ckeditor/plugins/docprops/lang/gu.js": "/build/ckeditor/plugins/docprops/lang/gu.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/monokai.css", - "build/ckeditor/plugins/forms/dialogs/form.js": "/build/ckeditor/plugins/forms/dialogs/form.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.css", - "build/ckeditor/plugins/forms/lang/km.js": "/build/ckeditor/plugins/forms/lang/km.js", - "build/ckeditor/plugins/autogrow/plugin.js": "/build/ckeditor/plugins/autogrow/plugin.js", - "build/ckeditor/plugins/docprops/lang/hi.js": "/build/ckeditor/plugins/docprops/lang/hi.js", - "build/ckeditor/plugins/docprops/lang/km.js": "/build/ckeditor/plugins/docprops/lang/km.js", - "build/ckeditor/plugins/colorbutton/lang/el.js": "/build/ckeditor/plugins/colorbutton/lang/el.js", - "build/ckeditor/plugins/textmatch/plugin.js": "/build/ckeditor/plugins/textmatch/plugin.js", - "build/ckeditor/plugins/docprops/lang/ka.js": "/build/ckeditor/plugins/docprops/lang/ka.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/magula.css", - "build/ckeditor/skins/kama/skin.js": "/build/ckeditor/skins/kama/skin.js", - "build/ckeditor/plugins/autolink/plugin.js": "/build/ckeditor/plugins/autolink/plugin.js", - "build/ckeditor/plugins/colorbutton/lang/sr.js": "/build/ckeditor/plugins/colorbutton/lang/sr.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/far.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/far.css", - "build/ckeditor/plugins/panelbutton/plugin.js": "/build/ckeditor/plugins/panelbutton/plugin.js", - "build/ckeditor/plugins/docprops/lang/th.js": "/build/ckeditor/plugins/docprops/lang/th.js", - "build/ckeditor/plugins/forms/lang/gu.js": "/build/ckeditor/plugins/forms/lang/gu.js", - "build/ckeditor/plugins/forms/lang/hi.js": "/build/ckeditor/plugins/forms/lang/hi.js", - "build/ckeditor/plugins/iframedialog/plugin.js": "/build/ckeditor/plugins/iframedialog/plugin.js", - "build/ckeditor/plugins/forms/lang/bn.js": "/build/ckeditor/plugins/forms/lang/bn.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/zenburn.css", - "build/ckeditor/plugins/colorbutton/lang/fa.js": "/build/ckeditor/plugins/colorbutton/lang/fa.js", - "build/ckeditor/plugins/templates/templates/default.js": "/build/ckeditor/plugins/templates/templates/default.js", - "build/ckeditor/skins/kama/readme.md": "/build/ckeditor/skins/kama/readme.md", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/docco.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/brown_paper.css", - "build/ckeditor/plugins/forms/lang/ru.js": "/build/ckeditor/plugins/forms/lang/ru.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.light.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/dark.css", - "build/ckeditor/plugins/forms/dialogs/button.js": "/build/ckeditor/plugins/forms/dialogs/button.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-lakeside.dark.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.light.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/idea.css", - "build/ckeditor/plugins/colorbutton/lang/gu.js": "/build/ckeditor/plugins/colorbutton/lang/gu.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-seaside.dark.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.light.css", - "build/ckeditor/plugins/iframe/icons/hidpi/iframe.png": "/build/ckeditor/plugins/iframe/icons/hidpi/iframe.png", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-forest.dark.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.light.css", - "build/ckeditor/plugins/about/dialogs/about.js": "/build/ckeditor/plugins/about/dialogs/about.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-heath.dark.css", - "build/ckeditor/plugins/colorbutton/lang/ug.js": "/build/ckeditor/plugins/colorbutton/lang/ug.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.light.css", - "build/ckeditor/plugins/forms/lang/el.js": "/build/ckeditor/plugins/forms/lang/el.js", - "build/ckeditor/plugins/forms/lang/sr.js": "/build/ckeditor/plugins/forms/lang/sr.js", - "build/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png": "/build/ckeditor/plugins/uicolor/icons/hidpi/uicolor.png", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/atelier-dune.dark.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/github.css", - "build/ckeditor/plugins/docprops/lang/bn.js": "/build/ckeditor/plugins/docprops/lang/bn.js", - "build/ckeditor/plugins/iframe/plugin.js": "/build/ckeditor/plugins/iframe/plugin.js", - "build/ckeditor/plugins/docprops/lang/el.js": "/build/ckeditor/plugins/docprops/lang/el.js", - "build/ckeditor/plugins/forms/lang/uk.js": "/build/ckeditor/plugins/forms/lang/uk.js", - "build/ckeditor/plugins/colorbutton/lang/km.js": "/build/ckeditor/plugins/colorbutton/lang/km.js", - "build/ckeditor/plugins/forms/lang/bg.js": "/build/ckeditor/plugins/forms/lang/bg.js", - "build/ckeditor/plugins/forms/lang/ug.js": "/build/ckeditor/plugins/forms/lang/ug.js", - "build/ckeditor/plugins/colorbutton/lang/sq.js": "/build/ckeditor/plugins/colorbutton/lang/sq.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.css", - "build/ckeditor/plugins/docprops/lang/ru.js": "/build/ckeditor/plugins/docprops/lang/ru.js", - "build/ckeditor/skins/moono/images/hidpi/close.png": "/build/ckeditor/skins/moono/images/hidpi/close.png", - "build/ckeditor/plugins/cloudservices/plugin.js": "/build/ckeditor/plugins/cloudservices/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/foundation.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_dark.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/solarized_light.css", - "build/ckeditor/plugins/colorbutton/lang/ar.js": "/build/ckeditor/plugins/colorbutton/lang/ar.js", - "build/ckeditor/plugins/smiley/icons/hidpi/smiley.png": "/build/ckeditor/plugins/smiley/icons/hidpi/smiley.png", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/rainbow.css", - "build/ckeditor/plugins/forms/dialogs/hiddenfield.js": "/build/ckeditor/plugins/forms/dialogs/hiddenfield.js", - "build/ckeditor/plugins/colorbutton/lang/tt.js": "/build/ckeditor/plugins/colorbutton/lang/tt.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-blue.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night.css", - "build/ckeditor/plugins/emoji/icons/hidpi/emojipanel.png": "/build/ckeditor/plugins/emoji/icons/hidpi/emojipanel.png", - "build/ckeditor/plugins/div/icons/hidpi/creatediv.png": "/build/ckeditor/plugins/div/icons/hidpi/creatediv.png", - "build/ckeditor/plugins/docprops/lang/uk.js": "/build/ckeditor/plugins/docprops/lang/uk.js", - "build/ckeditor/plugins/liststyle/plugin.js": "/build/ckeditor/plugins/liststyle/plugin.js", - "build/ckeditor/plugins/placeholder/plugin.js": "/build/ckeditor/plugins/placeholder/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/vs.css", - "build/ckeditor/skins/moono/images/hidpi/lock.png": "/build/ckeditor/skins/moono/images/hidpi/lock.png", - "build/ckeditor/plugins/forms/lang/ku.js": "/build/ckeditor/plugins/forms/lang/ku.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-eighties.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow-night-bright.css", - "build/ckeditor/plugins/docprops/lang/ug.js": "/build/ckeditor/plugins/docprops/lang/ug.js", - "build/ckeditor/plugins/docprops/lang/si.js": "/build/ckeditor/plugins/docprops/lang/si.js", - "build/ckeditor/plugins/docprops/lang/sr.js": "/build/ckeditor/plugins/docprops/lang/sr.js", - "build/ckeditor/skins/moono-lisa/images/hidpi/refresh.png": "/build/ckeditor/skins/moono-lisa/images/hidpi/refresh.png", - "build/ckeditor/plugins/forms/lang/tt.js": "/build/ckeditor/plugins/forms/lang/tt.js", - "build/ckeditor/plugins/textwatcher/plugin.js": "/build/ckeditor/plugins/textwatcher/plugin.js", - "build/ckeditor/plugins/forms/lang/si.js": "/build/ckeditor/plugins/forms/lang/si.js", - "build/ckeditor/plugins/image/images/noimage.png": "/build/ckeditor/plugins/image/images/noimage.png", - "build/ckeditor/plugins/forms/lang/mn.js": "/build/ckeditor/plugins/forms/lang/mn.js", - "build/ckeditor/plugins/docprops/lang/ku.js": "/build/ckeditor/plugins/docprops/lang/ku.js", - "build/ckeditor/plugins/sharedspace/plugin.js": "/build/ckeditor/plugins/sharedspace/plugin.js", - "build/ckeditor/plugins/forms/lang/fa.js": "/build/ckeditor/plugins/forms/lang/fa.js", - "build/ckeditor/plugins/colorbutton/lang/cs.js": "/build/ckeditor/plugins/colorbutton/lang/cs.js", - "build/ckeditor/plugins/colorbutton/lang/he.js": "/build/ckeditor/plugins/colorbutton/lang/he.js", - "build/ckeditor/plugins/emoji/assets/iconsall.png": "/build/ckeditor/plugins/emoji/assets/iconsall.png", - "build/ckeditor/plugins/templates/dialogs/templates.css": "/build/ckeditor/plugins/templates/dialogs/templates.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.light.css", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/paraiso.dark.css", - "build/ckeditor/skins/moono/images/hidpi/lock-open.png": "/build/ckeditor/skins/moono/images/hidpi/lock-open.png", - "build/ckeditor/plugins/docprops/lang/mn.js": "/build/ckeditor/plugins/docprops/lang/mn.js", - "build/ckeditor/plugins/placeholder/icons/hidpi/placeholder.png": "/build/ckeditor/plugins/placeholder/icons/hidpi/placeholder.png", - "build/ckeditor/plugins/colorbutton/lang/sk.js": "/build/ckeditor/plugins/colorbutton/lang/sk.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ir_black.css", - "build/ckeditor/plugins/colorbutton/lang/pt.js": "/build/ckeditor/plugins/colorbutton/lang/pt.js", - "build/ckeditor/plugins/colorbutton/lang/ro.js": "/build/ckeditor/plugins/colorbutton/lang/ro.js", - "build/ckeditor/plugins/forms/lang/ar.js": "/build/ckeditor/plugins/forms/lang/ar.js", - "build/ckeditor/plugins/colordialog/plugin.js": "/build/ckeditor/plugins/colordialog/plugin.js", - "build/ckeditor/plugins/colorbutton/lang/pl.js": "/build/ckeditor/plugins/colorbutton/lang/pl.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/tomorrow.css", - "build/ckeditor/plugins/colorbutton/lang/fi.js": "/build/ckeditor/plugins/colorbutton/lang/fi.js", - "build/ckeditor/plugins/copyformatting/styles/copyformatting.css": "/build/ckeditor/plugins/copyformatting/styles/copyformatting.css", - "build/ckeditor/skins/moono/images/hidpi/anchor.png": "/build/ckeditor/skins/moono/images/hidpi/anchor.png", - "build/ckeditor/plugins/colorbutton/lang/ko.js": "/build/ckeditor/plugins/colorbutton/lang/ko.js", - "build/ckeditor/plugins/colorbutton/lang/tr.js": "/build/ckeditor/plugins/colorbutton/lang/tr.js", - "build/ckeditor/plugins/colorbutton/lang/et.js": "/build/ckeditor/plugins/colorbutton/lang/et.js", - "build/ckeditor/plugins/colorbutton/lang/lv.js": "/build/ckeditor/plugins/colorbutton/lang/lv.js", - "build/ckeditor/plugins/colorbutton/lang/mn.js": "/build/ckeditor/plugins/colorbutton/lang/mn.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/LICENSE": "/build/ckeditor/plugins/codesnippet/lib/highlight/LICENSE.bin", - "build/ckeditor/plugins/embedsemantic/plugin.js": "/build/ckeditor/plugins/embedsemantic/plugin.js", - "build/ckeditor/plugins/mathjax/dialogs/mathjax.js": "/build/ckeditor/plugins/mathjax/dialogs/mathjax.js", - "build/ckeditor/plugins/colorbutton/lang/az.js": "/build/ckeditor/plugins/colorbutton/lang/az.js", - "build/ckeditor/plugins/scayt/LICENSE.md": "/build/ckeditor/plugins/scayt/LICENSE.md", - "build/ckeditor/plugins/colorbutton/lang/eo.js": "/build/ckeditor/plugins/colorbutton/lang/eo.js", - "build/ckeditor/plugins/colorbutton/lang/pt-br.js": "/build/ckeditor/plugins/colorbutton/lang/pt-br.js", - "build/ckeditor/plugins/colorbutton/lang/hu.js": "/build/ckeditor/plugins/colorbutton/lang/hu.js", - "build/ckeditor/plugins/forms/lang/az.js": "/build/ckeditor/plugins/forms/lang/az.js", - "build/ckeditor/plugins/colorbutton/lang/eu.js": "/build/ckeditor/plugins/colorbutton/lang/eu.js", - "build/ckeditor/plugins/colorbutton/lang/it.js": "/build/ckeditor/plugins/colorbutton/lang/it.js", - "build/ckeditor/plugins/colorbutton/lang/es-mx.js": "/build/ckeditor/plugins/colorbutton/lang/es-mx.js", - "build/ckeditor/plugins/colorbutton/lang/gl.js": "/build/ckeditor/plugins/colorbutton/lang/gl.js", - "build/ckeditor/plugins/docprops/lang/fa.js": "/build/ckeditor/plugins/docprops/lang/fa.js", - "build/ckeditor/plugins/colorbutton/lang/vi.js": "/build/ckeditor/plugins/colorbutton/lang/vi.js", - "build/ckeditor/plugins/colorbutton/lang/sr-latn.js": "/build/ckeditor/plugins/colorbutton/lang/sr-latn.js", - "build/ckeditor/plugins/colorbutton/lang/th.js": "/build/ckeditor/plugins/colorbutton/lang/th.js", - "build/ckeditor/plugins/colorbutton/lang/lt.js": "/build/ckeditor/plugins/colorbutton/lang/lt.js", - "build/ckeditor/plugins/smiley/plugin.js": "/build/ckeditor/plugins/smiley/plugin.js", - "build/ckeditor/plugins/colorbutton/lang/bn.js": "/build/ckeditor/plugins/colorbutton/lang/bn.js", - "build/ckeditor/plugins/mathjax/icons/hidpi/mathjax.png": "/build/ckeditor/plugins/mathjax/icons/hidpi/mathjax.png", - "build/ckeditor/plugins/colorbutton/lang/hr.js": "/build/ckeditor/plugins/colorbutton/lang/hr.js", - "build/ckeditor/plugins/colorbutton/lang/hi.js": "/build/ckeditor/plugins/colorbutton/lang/hi.js", - "build/ckeditor/plugins/colorbutton/lang/es.js": "/build/ckeditor/plugins/colorbutton/lang/es.js", - "build/ckeditor/plugins/docprops/lang/ar.js": "/build/ckeditor/plugins/docprops/lang/ar.js", - "build/ckeditor/plugins/forms/icons/hidpi/radio.png": "/build/ckeditor/plugins/forms/icons/hidpi/radio.png", - "build/ckeditor/plugins/colorbutton/lang/de-ch.js": "/build/ckeditor/plugins/colorbutton/lang/de-ch.js", - "build/ckeditor/plugins/forms/lang/ja.js": "/build/ckeditor/plugins/forms/lang/ja.js", - "build/ckeditor/plugins/forms/lang/he.js": "/build/ckeditor/plugins/forms/lang/he.js", - "build/ckeditor/plugins/forms/lang/vi.js": "/build/ckeditor/plugins/forms/lang/vi.js", - "build/ckeditor/plugins/colorbutton/lang/de.js": "/build/ckeditor/plugins/colorbutton/lang/de.js", - "build/ckeditor/plugins/colorbutton/lang/zh-cn.js": "/build/ckeditor/plugins/colorbutton/lang/zh-cn.js", - "build/ckeditor/plugins/colorbutton/lang/fr.js": "/build/ckeditor/plugins/colorbutton/lang/fr.js", - "build/ckeditor/plugins/colorbutton/lang/si.js": "/build/ckeditor/plugins/colorbutton/lang/si.js", - "build/ckeditor/plugins/colorbutton/lang/fo.js": "/build/ckeditor/plugins/colorbutton/lang/fo.js", - "build/ckeditor/plugins/find/icons/hidpi/replace.png": "/build/ckeditor/plugins/find/icons/hidpi/replace.png", - "build/ckeditor/plugins/colorbutton/lang/id.js": "/build/ckeditor/plugins/colorbutton/lang/id.js", - "build/ckeditor/plugins/forms/lang/hu.js": "/build/ckeditor/plugins/forms/lang/hu.js", - "build/ckeditor/plugins/forms/lang/sk.js": "/build/ckeditor/plugins/forms/lang/sk.js", - "build/ckeditor/plugins/docprops/lang/bg.js": "/build/ckeditor/plugins/docprops/lang/bg.js", - "build/ckeditor/plugins/colorbutton/lang/fr-ca.js": "/build/ckeditor/plugins/colorbutton/lang/fr-ca.js", - "build/ckeditor/plugins/colorbutton/lang/nl.js": "/build/ckeditor/plugins/colorbutton/lang/nl.js", - "build/ckeditor/plugins/colorbutton/lang/sl.js": "/build/ckeditor/plugins/colorbutton/lang/sl.js", - "build/ckeditor/plugins/find/icons/hidpi/find-rtl.png": "/build/ckeditor/plugins/find/icons/hidpi/find-rtl.png", - "build/ckeditor/plugins/find/icons/hidpi/find.png": "/build/ckeditor/plugins/find/icons/hidpi/find.png", - "build/ckeditor/plugins/colorbutton/lang/oc.js": "/build/ckeditor/plugins/colorbutton/lang/oc.js", - "build/ckeditor/plugins/colorbutton/lang/ca.js": "/build/ckeditor/plugins/colorbutton/lang/ca.js", - "build/ckeditor/plugins/colorbutton/lang/cy.js": "/build/ckeditor/plugins/colorbutton/lang/cy.js", - "build/ckeditor/plugins/colorbutton/lang/en-gb.js": "/build/ckeditor/plugins/colorbutton/lang/en-gb.js", - "build/ckeditor/plugins/colorbutton/lang/en-au.js": "/build/ckeditor/plugins/colorbutton/lang/en-au.js", - "build/ckeditor/plugins/colorbutton/lang/en-ca.js": "/build/ckeditor/plugins/colorbutton/lang/en-ca.js", - "build/ckeditor/plugins/colorbutton/lang/ms.js": "/build/ckeditor/plugins/colorbutton/lang/ms.js", - "build/ckeditor/plugins/colorbutton/lang/nb.js": "/build/ckeditor/plugins/colorbutton/lang/nb.js", - "build/ckeditor/plugins/colorbutton/lang/no.js": "/build/ckeditor/plugins/colorbutton/lang/no.js", - "build/ckeditor/plugins/colorbutton/lang/af.js": "/build/ckeditor/plugins/colorbutton/lang/af.js", - "build/ckeditor/plugins/colorbutton/lang/en.js": "/build/ckeditor/plugins/colorbutton/lang/en.js", - "build/ckeditor/plugins/colorbutton/lang/mk.js": "/build/ckeditor/plugins/colorbutton/lang/mk.js", - "build/ckeditor/plugins/colorbutton/lang/is.js": "/build/ckeditor/plugins/colorbutton/lang/is.js", - "build/ckeditor/plugins/colorbutton/lang/bs.js": "/build/ckeditor/plugins/colorbutton/lang/bs.js", - "build/ckeditor/plugins/forms/lang/es-mx.js": "/build/ckeditor/plugins/forms/lang/es-mx.js", - "build/ckeditor/plugins/colorbutton/lang/ja.js": "/build/ckeditor/plugins/colorbutton/lang/ja.js", - "build/ckeditor/plugins/forms/lang/ro.js": "/build/ckeditor/plugins/forms/lang/ro.js", - "build/ckeditor/plugins/forms/lang/fr.js": "/build/ckeditor/plugins/forms/lang/fr.js", - "build/ckeditor/config.js": "/build/ckeditor/config.js", - "build/ckeditor/plugins/forms/icons/hidpi/imagebutton.png": "/build/ckeditor/plugins/forms/icons/hidpi/imagebutton.png", - "build/ckeditor/plugins/forms/lang/oc.js": "/build/ckeditor/plugins/forms/lang/oc.js", - "build/ckeditor/plugins/colorbutton/lang/da.js": "/build/ckeditor/plugins/colorbutton/lang/da.js", - "build/ckeditor/plugins/colorbutton/lang/zh.js": "/build/ckeditor/plugins/colorbutton/lang/zh.js", - "build/ckeditor/plugins/forms/lang/sq.js": "/build/ckeditor/plugins/forms/lang/sq.js", - "build/ckeditor/plugins/docprops/lang/he.js": "/build/ckeditor/plugins/docprops/lang/he.js", - "build/ckeditor/plugins/colorbutton/lang/sv.js": "/build/ckeditor/plugins/colorbutton/lang/sv.js", - "build/ckeditor/plugins/docprops/lang/sq.js": "/build/ckeditor/plugins/docprops/lang/sq.js", - "build/ckeditor/plugins/forms/lang/fr-ca.js": "/build/ckeditor/plugins/forms/lang/fr-ca.js", - "build/ckeditor/plugins/forms/lang/lv.js": "/build/ckeditor/plugins/forms/lang/lv.js", - "build/ckeditor/plugins/forms/lang/gl.js": "/build/ckeditor/plugins/forms/lang/gl.js", - "build/ckeditor/plugins/forms/lang/eu.js": "/build/ckeditor/plugins/forms/lang/eu.js", - "build/ckeditor/plugins/docprops/lang/tt.js": "/build/ckeditor/plugins/docprops/lang/tt.js", - "build/ckeditor/plugins/docprops/lang/ro.js": "/build/ckeditor/plugins/docprops/lang/ro.js", - "build/ckeditor/plugins/docprops/lang/vi.js": "/build/ckeditor/plugins/docprops/lang/vi.js", - "build/ckeditor/plugins/forms/lang/pl.js": "/build/ckeditor/plugins/forms/lang/pl.js", - "build/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png": "/build/ckeditor/plugins/colorbutton/icons/hidpi/textcolor.png", - "build/ckeditor/plugins/docprops/lang/es-mx.js": "/build/ckeditor/plugins/docprops/lang/es-mx.js", - "build/ckeditor/plugins/forms/lang/pt.js": "/build/ckeditor/plugins/forms/lang/pt.js", - "build/ckeditor/plugins/forms/lang/es.js": "/build/ckeditor/plugins/forms/lang/es.js", - "build/ckeditor/plugins/scayt/dialogs/toolbar.css": "/build/ckeditor/plugins/scayt/dialogs/toolbar.css", - "build/ckeditor/plugins/stylesheetparser/plugin.js": "/build/ckeditor/plugins/stylesheetparser/plugin.js", - "build/ckeditor/plugins/forms/lang/ca.js": "/build/ckeditor/plugins/forms/lang/ca.js", - "build/ckeditor/plugins/docprops/lang/eu.js": "/build/ckeditor/plugins/docprops/lang/eu.js", - "build/ckeditor/plugins/forms/lang/lt.js": "/build/ckeditor/plugins/forms/lang/lt.js", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealt.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealt.png", - "build/ckeditor/plugins/forms/lang/eo.js": "/build/ckeditor/plugins/forms/lang/eo.js", - "build/ckeditor/plugins/docprops/lang/ja.js": "/build/ckeditor/plugins/docprops/lang/ja.js", - "build/ckeditor/plugins/forms/lang/sr-latn.js": "/build/ckeditor/plugins/forms/lang/sr-latn.js", - "build/ckeditor/plugins/docprops/lang/gl.js": "/build/ckeditor/plugins/docprops/lang/gl.js", - "build/ckeditor/plugins/forms/lang/cs.js": "/build/ckeditor/plugins/forms/lang/cs.js", - "build/ckeditor/plugins/forms/lang/pt-br.js": "/build/ckeditor/plugins/forms/lang/pt-br.js", - "build/ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png": "/build/ckeditor/plugins/balloonpanel/skins/moono/images/hidpi/close.png", - "build/ckeditor/plugins/docprops/lang/lt.js": "/build/ckeditor/plugins/docprops/lang/lt.js", - "build/ckeditor/plugins/forms/lang/nl.js": "/build/ckeditor/plugins/forms/lang/nl.js", - "build/ckeditor/plugins/docprops/lang/pt-br.js": "/build/ckeditor/plugins/docprops/lang/pt-br.js", - "build/ckeditor/plugins/forms/lang/sl.js": "/build/ckeditor/plugins/forms/lang/sl.js", - "build/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png": "/build/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/hidpi/close.png", - "build/ckeditor/plugins/preview/icons/hidpi/preview.png": "/build/ckeditor/plugins/preview/icons/hidpi/preview.png", - "build/ckeditor/plugins/docprops/lang/fr.js": "/build/ckeditor/plugins/docprops/lang/fr.js", - "build/ckeditor/plugins/docprops/lang/ca.js": "/build/ckeditor/plugins/docprops/lang/ca.js", - "build/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png": "/build/ckeditor/plugins/colorbutton/icons/hidpi/bgcolor.png", - "build/ckeditor/plugins/docprops/lang/pt.js": "/build/ckeditor/plugins/docprops/lang/pt.js", - "build/ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png": "/build/ckeditor/plugins/copyformatting/icons/hidpi/copyformatting.png", - "build/ckeditor/plugins/forms/lang/fo.js": "/build/ckeditor/plugins/forms/lang/fo.js", - "build/ckeditor/plugins/smiley/images/angel_smile.gif": "/build/ckeditor/plugins/smiley/images/angel_smile.gif", - "build/ckeditor/plugins/docprops/lang/oc.js": "/build/ckeditor/plugins/docprops/lang/oc.js", - "build/ckeditor/plugins/forms/lang/de-ch.js": "/build/ckeditor/plugins/forms/lang/de-ch.js", - "build/ckeditor/plugins/preview/icons/hidpi/preview-rtl.png": "/build/ckeditor/plugins/preview/icons/hidpi/preview-rtl.png", - "build/ckeditor/plugins/editorplaceholder/plugin.js": "/build/ckeditor/plugins/editorplaceholder/plugin.js", - "build/ckeditor/plugins/smiley/images/devil_smile.gif": "/build/ckeditor/plugins/smiley/images/devil_smile.gif", - "build/ckeditor/plugins/forms/lang/de.js": "/build/ckeditor/plugins/forms/lang/de.js", - "build/ckeditor/skins/moono-lisa/images/hidpi/close.png": "/build/ckeditor/skins/moono-lisa/images/hidpi/close.png", - "build/ckeditor/plugins/docprops/lang/az.js": "/build/ckeditor/plugins/docprops/lang/az.js", - "build/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css": "/build/ckeditor/plugins/balloontoolbar/skins/moono-lisa/balloontoolbar.css", - "build/ckeditor/plugins/smiley/images/shades_smile.gif": "/build/ckeditor/plugins/smiley/images/shades_smile.gif", - "build/ckeditor/plugins/docprops/lang/pl.js": "/build/ckeditor/plugins/docprops/lang/pl.js", - "build/ckeditor/plugins/forms/lang/tr.js": "/build/ckeditor/plugins/forms/lang/tr.js", - "build/ckeditor/plugins/forms/lang/ko.js": "/build/ckeditor/plugins/forms/lang/ko.js", - "build/ckeditor/plugins/templates/plugin.js": "/build/ckeditor/plugins/templates/plugin.js", - "build/ckeditor/plugins/smiley/images/angry_smile.png": "/build/ckeditor/plugins/smiley/images/angry_smile.png", - "build/ckeditor/plugins/smiley/images/devil_smile.png": "/build/ckeditor/plugins/smiley/images/devil_smile.png", - "build/ckeditor/plugins/smiley/images/angry_smile.gif": "/build/ckeditor/plugins/smiley/images/angry_smile.gif", - "build/ckeditor/plugins/forms/lang/ms.js": "/build/ckeditor/plugins/forms/lang/ms.js", - "build/ckeditor/plugins/smiley/images/cry_smile.png": "/build/ckeditor/plugins/smiley/images/cry_smile.png", - "build/ckeditor/plugins/docprops/lang/de-ch.js": "/build/ckeditor/plugins/docprops/lang/de-ch.js", - "build/ckeditor/plugins/docprops/lang/sk.js": "/build/ckeditor/plugins/docprops/lang/sk.js", - "build/ckeditor/plugins/forms/lang/it.js": "/build/ckeditor/plugins/forms/lang/it.js", - "build/ckeditor/plugins/smiley/images/tongue_smile.gif": "/build/ckeditor/plugins/smiley/images/tongue_smile.gif", - "build/ckeditor/plugins/smiley/images/tounge_smile.gif": "/build/ckeditor/plugins/smiley/images/tounge_smile.gif", - "build/ckeditor/plugins/docprops/lang/de.js": "/build/ckeditor/plugins/docprops/lang/de.js", - "build/ckeditor/plugins/smiley/images/regular_smile.gif": "/build/ckeditor/plugins/smiley/images/regular_smile.gif", - "build/ckeditor/plugins/forms/lang/no.js": "/build/ckeditor/plugins/forms/lang/no.js", - "build/ckeditor/plugins/forms/lang/sv.js": "/build/ckeditor/plugins/forms/lang/sv.js", - "build/ckeditor/plugins/docprops/lang/lv.js": "/build/ckeditor/plugins/docprops/lang/lv.js", - "build/ckeditor/plugins/forms/lang/fi.js": "/build/ckeditor/plugins/forms/lang/fi.js", - "build/ckeditor/plugins/smiley/images/shades_smile.png": "/build/ckeditor/plugins/smiley/images/shades_smile.png", - "build/ckeditor/plugins/smiley/images/confused_smile.gif": "/build/ckeditor/plugins/smiley/images/confused_smile.gif", - "build/ckeditor/plugins/smiley/images/wink_smile.gif": "/build/ckeditor/plugins/smiley/images/wink_smile.gif", - "build/ckeditor/plugins/smiley/images/teeth_smile.gif": "/build/ckeditor/plugins/smiley/images/teeth_smile.gif", - "build/ckeditor/plugins/forms/lang/da.js": "/build/ckeditor/plugins/forms/lang/da.js", - "build/ckeditor/plugins/docprops/lang/es.js": "/build/ckeditor/plugins/docprops/lang/es.js", - "build/ckeditor/plugins/docprops/lang/ko.js": "/build/ckeditor/plugins/docprops/lang/ko.js", - "build/ckeditor/plugins/forms/lang/nb.js": "/build/ckeditor/plugins/forms/lang/nb.js", - "build/ckeditor/plugins/codesnippet/dialogs/codesnippet.js": "/build/ckeditor/plugins/codesnippet/dialogs/codesnippet.js", - "build/ckeditor/plugins/docprops/lang/fo.js": "/build/ckeditor/plugins/docprops/lang/fo.js", - "build/ckeditor/plugins/docprops/lang/cy.js": "/build/ckeditor/plugins/docprops/lang/cy.js", - "build/ckeditor/plugins/forms/lang/cy.js": "/build/ckeditor/plugins/forms/lang/cy.js", - "build/ckeditor/plugins/docprops/lang/tr.js": "/build/ckeditor/plugins/docprops/lang/tr.js", - "build/ckeditor/plugins/forms/lang/hr.js": "/build/ckeditor/plugins/forms/lang/hr.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/pojoaque.jpg", - "build/ckeditor/plugins/smiley/images/teeth_smile.png": "/build/ckeditor/plugins/smiley/images/teeth_smile.png", - "build/ckeditor/plugins/docprops/lang/id.js": "/build/ckeditor/plugins/docprops/lang/id.js", - "build/ckeditor/plugins/docprops/lang/et.js": "/build/ckeditor/plugins/docprops/lang/et.js", - "build/ckeditor/plugins/docprops/lang/it.js": "/build/ckeditor/plugins/docprops/lang/it.js", - "build/ckeditor/plugins/docprops/lang/mk.js": "/build/ckeditor/plugins/docprops/lang/mk.js", - "build/ckeditor/plugins/docprops/lang/hu.js": "/build/ckeditor/plugins/docprops/lang/hu.js", - "build/ckeditor/plugins/docprops/lang/sr-latn.js": "/build/ckeditor/plugins/docprops/lang/sr-latn.js", - "build/ckeditor/plugins/smiley/images/angel_smile.png": "/build/ckeditor/plugins/smiley/images/angel_smile.png", - "build/ckeditor/plugins/forms/lang/af.js": "/build/ckeditor/plugins/forms/lang/af.js", - "build/ckeditor/plugins/forms/lang/is.js": "/build/ckeditor/plugins/forms/lang/is.js", - "build/ckeditor/plugins/docprops/lang/cs.js": "/build/ckeditor/plugins/docprops/lang/cs.js", - "build/ckeditor/plugins/forms/lang/id.js": "/build/ckeditor/plugins/forms/lang/id.js", - "build/ckeditor/plugins/docprops/lang/ms.js": "/build/ckeditor/plugins/docprops/lang/ms.js", - "build/ckeditor/plugins/docprops/lang/nl.js": "/build/ckeditor/plugins/docprops/lang/nl.js", - "build/ckeditor/plugins/forms/lang/et.js": "/build/ckeditor/plugins/forms/lang/et.js", - "build/ckeditor/plugins/docprops/lang/en-au.js": "/build/ckeditor/plugins/docprops/lang/en-au.js", - "build/ckeditor/plugins/docprops/lang/en-gb.js": "/build/ckeditor/plugins/docprops/lang/en-gb.js", - "build/ckeditor/plugins/docprops/lang/hr.js": "/build/ckeditor/plugins/docprops/lang/hr.js", - "build/ckeditor/plugins/docprops/lang/en-ca.js": "/build/ckeditor/plugins/docprops/lang/en-ca.js", - "build/ckeditor/plugins/forms/lang/en-gb.js": "/build/ckeditor/plugins/forms/lang/en-gb.js", - "build/ckeditor/plugins/forms/lang/en-au.js": "/build/ckeditor/plugins/forms/lang/en-au.js", - "build/ckeditor/plugins/forms/lang/en-ca.js": "/build/ckeditor/plugins/forms/lang/en-ca.js", - "build/ckeditor/plugins/docprops/lang/bs.js": "/build/ckeditor/plugins/docprops/lang/bs.js", - "build/ckeditor/plugins/docprops/lang/en.js": "/build/ckeditor/plugins/docprops/lang/en.js", - "build/ckeditor/plugins/forms/lang/bs.js": "/build/ckeditor/plugins/forms/lang/bs.js", - "build/ckeditor/plugins/forms/lang/en.js": "/build/ckeditor/plugins/forms/lang/en.js", - "build/ckeditor/plugins/forms/lang/mk.js": "/build/ckeditor/plugins/forms/lang/mk.js", - "build/ckeditor/plugins/docprops/lang/da.js": "/build/ckeditor/plugins/docprops/lang/da.js", - "build/ckeditor/plugins/docprops/lang/af.js": "/build/ckeditor/plugins/docprops/lang/af.js", - "build/ckeditor/plugins/docprops/lang/is.js": "/build/ckeditor/plugins/docprops/lang/is.js", - "build/ckeditor/plugins/forms/lang/zh-cn.js": "/build/ckeditor/plugins/forms/lang/zh-cn.js", - "build/ckeditor/plugins/smiley/images/embarrassed_smile.png": "/build/ckeditor/plugins/smiley/images/embarrassed_smile.png", - "build/ckeditor/plugins/tableselection/styles/tableselection.css": "/build/ckeditor/plugins/tableselection/styles/tableselection.css", - "build/ckeditor/plugins/docprops/lang/nb.js": "/build/ckeditor/plugins/docprops/lang/nb.js", - "build/ckeditor/plugins/smiley/images/broken_heart.png": "/build/ckeditor/plugins/smiley/images/broken_heart.png", - "build/ckeditor/plugins/docprops/lang/fi.js": "/build/ckeditor/plugins/docprops/lang/fi.js", - "build/ckeditor/plugins/docprops/lang/fr-ca.js": "/build/ckeditor/plugins/docprops/lang/fr-ca.js", - "build/ckeditor/plugins/docprops/lang/sl.js": "/build/ckeditor/plugins/docprops/lang/sl.js", - "build/ckeditor/plugins/smiley/images/tongue_smile.png": "/build/ckeditor/plugins/smiley/images/tongue_smile.png", - "build/ckeditor/plugins/forms/icons/hidpi/hiddenfield.png": "/build/ckeditor/plugins/forms/icons/hidpi/hiddenfield.png", - "build/ckeditor/plugins/smiley/images/omg_smile.png": "/build/ckeditor/plugins/smiley/images/omg_smile.png", - "build/ckeditor/plugins/docprops/lang/eo.js": "/build/ckeditor/plugins/docprops/lang/eo.js", - "build/ckeditor/plugins/embedbase/dialogs/embedbase.js": "/build/ckeditor/plugins/embedbase/dialogs/embedbase.js", - "build/ckeditor/plugins/selectall/icons/hidpi/selectall.png": "/build/ckeditor/plugins/selectall/icons/hidpi/selectall.png", - "build/ckeditor/plugins/smiley/images/sad_smile.png": "/build/ckeditor/plugins/smiley/images/sad_smile.png", - "build/ckeditor/plugins/smiley/images/wink_smile.png": "/build/ckeditor/plugins/smiley/images/wink_smile.png", - "build/ckeditor/plugins/docprops/lang/sv.js": "/build/ckeditor/plugins/docprops/lang/sv.js", - "build/ckeditor/plugins/forms/lang/zh.js": "/build/ckeditor/plugins/forms/lang/zh.js", - "build/ckeditor/plugins/docprops/lang/zh.js": "/build/ckeditor/plugins/docprops/lang/zh.js", - "build/ckeditor/plugins/link/images/hidpi/anchor.png": "/build/ckeditor/plugins/link/images/hidpi/anchor.png", - "build/ckeditor/plugins/docprops/lang/no.js": "/build/ckeditor/plugins/docprops/lang/no.js", - "build/ckeditor/plugins/smiley/images/confused_smile.png": "/build/ckeditor/plugins/smiley/images/confused_smile.png", - "build/ckeditor/plugins/smiley/images/regular_smile.png": "/build/ckeditor/plugins/smiley/images/regular_smile.png", - "build/ckeditor/plugins/forms/icons/hidpi/textarea-rtl.png": "/build/ckeditor/plugins/forms/icons/hidpi/textarea-rtl.png", - "build/ckeditor/plugins/embed/plugin.js": "/build/ckeditor/plugins/embed/plugin.js", - "build/ckeditor/plugins/selectall/plugin.js": "/build/ckeditor/plugins/selectall/plugin.js", - "build/ckeditor/plugins/docprops/lang/zh-cn.js": "/build/ckeditor/plugins/docprops/lang/zh-cn.js", - "build/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png": "/build/ckeditor/skins/moono-lisa/images/hidpi/lock-open.png", - "build/ckeditor/plugins/liststyle/lang/ka.js": "/build/ckeditor/plugins/liststyle/lang/ka.js", - "build/ckeditor/skins/moono-lisa/images/hidpi/lock.png": "/build/ckeditor/skins/moono-lisa/images/hidpi/lock.png", - "build/ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png": "/build/ckeditor/plugins/docprops/icons/hidpi/docprops-rtl.png", - "build/ckeditor/skins/moono/images/refresh.png": "/build/ckeditor/skins/moono/images/refresh.png", - "build/ckeditor/plugins/forms/icons/hidpi/textarea.png": "/build/ckeditor/plugins/forms/icons/hidpi/textarea.png", - "build/ckeditor/plugins/codesnippet/icons/hidpi/codesnippet.png": "/build/ckeditor/plugins/codesnippet/icons/hidpi/codesnippet.png", - "build/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png": "/build/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog.png", - "build/ckeditor/plugins/find/plugin.js": "/build/ckeditor/plugins/find/plugin.js", - "build/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png": "/build/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.png", - "build/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css": "/build/ckeditor/plugins/balloontoolbar/skins/moono/balloontoolbar.css", - "build/ckeditor/plugins/forms/icons/hidpi/checkbox.png": "/build/ckeditor/plugins/forms/icons/hidpi/checkbox.png", - "build/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png": "/build/ckeditor/plugins/sourcedialog/icons/hidpi/sourcedialog-rtl.png", - "build/ckeditor/plugins/docprops/icons/hidpi/docprops.png": "/build/ckeditor/plugins/docprops/icons/hidpi/docprops.png", - "build/ckeditor/plugins/smiley/images/kiss.png": "/build/ckeditor/plugins/smiley/images/kiss.png", - "build/ckeditor/plugins/smiley/images/heart.png": "/build/ckeditor/plugins/smiley/images/heart.png", - "build/ckeditor/plugins/smiley/images/thumbs_down.png": "/build/ckeditor/plugins/smiley/images/thumbs_down.png", - "build/ckeditor/plugins/liststyle/lang/km.js": "/build/ckeditor/plugins/liststyle/lang/km.js", - "build/ckeditor/plugins/exportpdf/LICENSE.md": "/build/ckeditor/plugins/exportpdf/LICENSE.md", - "build/ckeditor/plugins/liststyle/lang/ug.js": "/build/ckeditor/plugins/liststyle/lang/ug.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/mono-blue.css", - "build/ckeditor/plugins/smiley/images/thumbs_up.png": "/build/ckeditor/plugins/smiley/images/thumbs_up.png", - "build/ckeditor/plugins/uicolor/icons/uicolor.png": "/build/ckeditor/plugins/uicolor/icons/uicolor.png", - "build/ckeditor/plugins/docprops/plugin.js": "/build/ckeditor/plugins/docprops/plugin.js", - "build/ckeditor/plugins/bidi/icons/hidpi/bidirtl.png": "/build/ckeditor/plugins/bidi/icons/hidpi/bidirtl.png", - "build/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css": "/build/ckeditor/plugins/balloontoolbar/skins/kama/balloontoolbar.css", - "build/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js": "/build/ckeditor/plugins/sourcedialog/dialogs/sourcedialog.js", - "build/ckeditor/plugins/exportpdf/icons/hidpi/exportpdf.png": "/build/ckeditor/plugins/exportpdf/icons/hidpi/exportpdf.png", - "build/ckeditor/plugins/embedbase/lang/el.js": "/build/ckeditor/plugins/embedbase/lang/el.js", - "build/ckeditor/plugins/image2/lang/km.js": "/build/ckeditor/plugins/image2/lang/km.js", - "build/ckeditor/skins/moono/images/anchor.png": "/build/ckeditor/skins/moono/images/anchor.png", - "build/ckeditor/plugins/print/icons/hidpi/print.png": "/build/ckeditor/plugins/print/icons/hidpi/print.png", - "build/ckeditor/plugins/devtools/lang/_translationstatus.txt": "/build/ckeditor/plugins/devtools/lang/_translationstatus.txt", - "build/ckeditor/plugins/uicolor/lang/_translationstatus.txt": "/build/ckeditor/plugins/uicolor/lang/_translationstatus.txt", - "build/ckeditor/plugins/forms/icons/hidpi/select-rtl.png": "/build/ckeditor/plugins/forms/icons/hidpi/select-rtl.png", - "build/ckeditor/plugins/smiley/images/lightbulb.png": "/build/ckeditor/plugins/smiley/images/lightbulb.png", - "build/ckeditor/plugins/showblocks/icons/hidpi/showblocks.png": "/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks.png", - "build/ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png": "/build/ckeditor/plugins/showblocks/icons/hidpi/showblocks-rtl.png", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimageupload.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimageupload.png", - "build/ckeditor/plugins/forms/icons/hidpi/select.png": "/build/ckeditor/plugins/forms/icons/hidpi/select.png", - "build/ckeditor/plugins/image2/icons/hidpi/image.png": "/build/ckeditor/plugins/image2/icons/hidpi/image.png", - "build/ckeditor/plugins/print/plugin.js": "/build/ckeditor/plugins/print/plugin.js", - "build/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt": "/build/ckeditor/plugins/a11yhelp/dialogs/lang/_translationstatus.txt", - "build/ckeditor/plugins/image2/lang/th.js": "/build/ckeditor/plugins/image2/lang/th.js", - "build/ckeditor/plugins/bidi/icons/hidpi/bidiltr.png": "/build/ckeditor/plugins/bidi/icons/hidpi/bidiltr.png", - "build/ckeditor/plugins/save/plugin.js": "/build/ckeditor/plugins/save/plugin.js", - "build/ckeditor/skins/moono/images/close.png": "/build/ckeditor/skins/moono/images/close.png", - "build/ckeditor/plugins/newpage/plugin.js": "/build/ckeditor/plugins/newpage/plugin.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/ascetic.css", - "build/ckeditor/plugins/liststyle/lang/ru.js": "/build/ckeditor/plugins/liststyle/lang/ru.js", - "build/ckeditor/skins/moono/images/lock.png": "/build/ckeditor/skins/moono/images/lock.png", - "build/ckeditor/plugins/placeholder/icons/placeholder.png": "/build/ckeditor/plugins/placeholder/icons/placeholder.png", - "build/ckeditor/plugins/find/lang/ka.js": "/build/ckeditor/plugins/find/lang/ka.js", - "build/ckeditor/plugins/forms/icons/hidpi/button.png": "/build/ckeditor/plugins/forms/icons/hidpi/button.png", - "build/ckeditor/plugins/liststyle/lang/el.js": "/build/ckeditor/plugins/liststyle/lang/el.js", - "build/ckeditor/plugins/balloonpanel/skins/moono/images/close.png": "/build/ckeditor/plugins/balloonpanel/skins/moono/images/close.png", - "build/ckeditor/plugins/smiley/images/omg_smile.gif": "/build/ckeditor/plugins/smiley/images/omg_smile.gif", - "build/ckeditor/plugins/image2/lang/el.js": "/build/ckeditor/plugins/image2/lang/el.js", - "build/ckeditor/plugins/iframe/icons/iframe.png": "/build/ckeditor/plugins/iframe/icons/iframe.png", - "build/ckeditor/plugins/image2/lang/uk.js": "/build/ckeditor/plugins/image2/lang/uk.js", - "build/ckeditor/plugins/pagebreak/icons/hidpi/pagebreak.png": "/build/ckeditor/plugins/pagebreak/icons/hidpi/pagebreak.png", - "build/ckeditor/plugins/save/icons/hidpi/save.png": "/build/ckeditor/plugins/save/icons/hidpi/save.png", - "build/ckeditor/plugins/pagebreak/icons/hidpi/pagebreak-rtl.png": "/build/ckeditor/plugins/pagebreak/icons/hidpi/pagebreak-rtl.png", - "build/ckeditor/plugins/forms/icons/hidpi/textfield-rtl.png": "/build/ckeditor/plugins/forms/icons/hidpi/textfield-rtl.png", - "build/ckeditor/plugins/forms/icons/hidpi/textfield.png": "/build/ckeditor/plugins/forms/icons/hidpi/textfield.png", - "build/ckeditor/plugins/easyimage/dialogs/easyimagealt.js": "/build/ckeditor/plugins/easyimage/dialogs/easyimagealt.js", - "build/ckeditor/skins/moono/images/lock-open.png": "/build/ckeditor/skins/moono/images/lock-open.png", - "build/ckeditor/plugins/sourcedialog/plugin.js": "/build/ckeditor/plugins/sourcedialog/plugin.js", - "build/ckeditor/plugins/liststyle/lang/gu.js": "/build/ckeditor/plugins/liststyle/lang/gu.js", - "build/ckeditor/plugins/templates/icons/hidpi/templates-rtl.png": "/build/ckeditor/plugins/templates/icons/hidpi/templates-rtl.png", - "build/ckeditor/plugins/templates/icons/hidpi/templates.png": "/build/ckeditor/plugins/templates/icons/hidpi/templates.png", - "build/ckeditor/plugins/language/icons/hidpi/language.png": "/build/ckeditor/plugins/language/icons/hidpi/language.png", - "build/ckeditor/plugins/smiley/images/cry_smile.gif": "/build/ckeditor/plugins/smiley/images/cry_smile.gif", - "build/ckeditor/plugins/embedbase/lang/ku.js": "/build/ckeditor/plugins/embedbase/lang/ku.js", - "build/ckeditor/plugins/colordialog/dialogs/colordialog.css": "/build/ckeditor/plugins/colordialog/dialogs/colordialog.css", - "build/ckeditor/plugins/uicolor/dialogs/uicolor.css": "/build/ckeditor/plugins/uicolor/dialogs/uicolor.css", - "build/ckeditor/plugins/image2/lang/bg.js": "/build/ckeditor/plugins/image2/lang/bg.js", - "build/ckeditor/plugins/autocomplete/skins/default.css": "/build/ckeditor/plugins/autocomplete/skins/default.css", - "build/ckeditor/plugins/smiley/images/embaressed_smile.gif": "/build/ckeditor/plugins/smiley/images/embaressed_smile.gif", - "build/ckeditor/plugins/smiley/images/embarrassed_smile.gif": "/build/ckeditor/plugins/smiley/images/embarrassed_smile.gif", - "build/ckeditor/plugins/liststyle/lang/he.js": "/build/ckeditor/plugins/liststyle/lang/he.js", - "build/ckeditor/plugins/liststyle/lang/uk.js": "/build/ckeditor/plugins/liststyle/lang/uk.js", - "build/ckeditor/plugins/liststyle/lang/ku.js": "/build/ckeditor/plugins/liststyle/lang/ku.js", - "build/ckeditor/plugins/mathjax/images/loader.gif": "/build/ckeditor/plugins/mathjax/images/loader.gif", - "build/ckeditor/plugins/smiley/icons/smiley.png": "/build/ckeditor/plugins/smiley/icons/smiley.png", - "build/ckeditor/plugins/smiley/images/sad_smile.gif": "/build/ckeditor/plugins/smiley/images/sad_smile.gif", - "build/ckeditor/plugins/image2/lang/ru.js": "/build/ckeditor/plugins/image2/lang/ru.js", - "build/ckeditor/plugins/uploadfile/plugin.js": "/build/ckeditor/plugins/uploadfile/plugin.js", - "build/ckeditor/plugins/image2/lang/ka.js": "/build/ckeditor/plugins/image2/lang/ka.js", - "build/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif": "/build/ckeditor/plugins/smiley/images/whatchutalkingabout_smile.gif", - "build/ckeditor/plugins/liststyle/lang/sr.js": "/build/ckeditor/plugins/liststyle/lang/sr.js", - "build/ckeditor/plugins/smiley/images/envelope.png": "/build/ckeditor/plugins/smiley/images/envelope.png", - "build/ckeditor/plugins/colorbutton/icons/textcolor.png": "/build/ckeditor/plugins/colorbutton/icons/textcolor.png", - "build/ckeditor/skins/moono-lisa/images/refresh.png": "/build/ckeditor/skins/moono-lisa/images/refresh.png", - "build/ckeditor/plugins/forms/icons/imagebutton.png": "/build/ckeditor/plugins/forms/icons/imagebutton.png", - "build/ckeditor/plugins/div/lang/ka.js": "/build/ckeditor/plugins/div/lang/ka.js", - "build/ckeditor/plugins/link/images/anchor.png": "/build/ckeditor/plugins/link/images/anchor.png", - "build/ckeditor/plugins/div/lang/gu.js": "/build/ckeditor/plugins/div/lang/gu.js", - "build/ckeditor/plugins/liststyle/lang/bg.js": "/build/ckeditor/plugins/liststyle/lang/bg.js", - "build/ckeditor/plugins/selectall/icons/selectall.png": "/build/ckeditor/plugins/selectall/icons/selectall.png", - "build/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt": "/build/ckeditor/plugins/specialchar/dialogs/lang/_translationstatus.txt", - "build/ckeditor/plugins/embedbase/lang/uk.js": "/build/ckeditor/plugins/embedbase/lang/uk.js", - "build/ckeditor/plugins/find/lang/km.js": "/build/ckeditor/plugins/find/lang/km.js", - "build/ckeditor/plugins/smiley/images/broken_heart.gif": "/build/ckeditor/plugins/smiley/images/broken_heart.gif", - "build/ckeditor/plugins/image2/lang/sr.js": "/build/ckeditor/plugins/image2/lang/sr.js", - "build/ckeditor/plugins/embed/icons/hidpi/embed.png": "/build/ckeditor/plugins/embed/icons/hidpi/embed.png", - "build/ckeditor/plugins/embedsemantic/icons/hidpi/embedsemantic.png": "/build/ckeditor/plugins/embedsemantic/icons/hidpi/embedsemantic.png", - "build/ckeditor/plugins/embedbase/lang/bg.js": "/build/ckeditor/plugins/embedbase/lang/bg.js", - "build/ckeditor/plugins/uicolor/plugin.js": "/build/ckeditor/plugins/uicolor/plugin.js", - "build/ckeditor/plugins/placeholder/lang/el.js": "/build/ckeditor/plugins/placeholder/lang/el.js", - "build/ckeditor/plugins/smiley/images/thumbs_down.gif": "/build/ckeditor/plugins/smiley/images/thumbs_down.gif", - "build/ckeditor/plugins/smiley/images/thumbs_up.gif": "/build/ckeditor/plugins/smiley/images/thumbs_up.gif", - "build/ckeditor/plugins/embedbase/lang/sr.js": "/build/ckeditor/plugins/embedbase/lang/sr.js", - "build/ckeditor/plugins/liststyle/lang/fa.js": "/build/ckeditor/plugins/liststyle/lang/fa.js", - "build/ckeditor/plugins/copyformatting/icons/copyformatting.png": "/build/ckeditor/plugins/copyformatting/icons/copyformatting.png", - "build/ckeditor/plugins/mathjax/icons/mathjax.png": "/build/ckeditor/plugins/mathjax/icons/mathjax.png", - "build/ckeditor/plugins/div/lang/km.js": "/build/ckeditor/plugins/div/lang/km.js", - "build/ckeditor/plugins/embedbase/lang/fa.js": "/build/ckeditor/plugins/embedbase/lang/fa.js", - "build/ckeditor/plugins/find/icons/find-rtl.png": "/build/ckeditor/plugins/find/icons/find-rtl.png", - "build/ckeditor/plugins/find/icons/find.png": "/build/ckeditor/plugins/find/icons/find.png", - "build/ckeditor/plugins/smiley/images/heart.gif": "/build/ckeditor/plugins/smiley/images/heart.gif", - "build/ckeditor/plugins/image2/lang/bn.js": "/build/ckeditor/plugins/image2/lang/bn.js", - "build/ckeditor/plugins/div/lang/th.js": "/build/ckeditor/plugins/div/lang/th.js", - "build/ckeditor/plugins/smiley/images/kiss.gif": "/build/ckeditor/plugins/smiley/images/kiss.gif", - "build/ckeditor/plugins/embedbase/lang/ru.js": "/build/ckeditor/plugins/embedbase/lang/ru.js", - "build/ckeditor/plugins/image2/lang/ug.js": "/build/ckeditor/plugins/image2/lang/ug.js", - "build/ckeditor/plugins/image2/lang/si.js": "/build/ckeditor/plugins/image2/lang/si.js", - "build/ckeditor/plugins/emoji/lang/el.js": "/build/ckeditor/plugins/emoji/lang/el.js", - "build/ckeditor/plugins/templates/lang/th.js": "/build/ckeditor/plugins/templates/lang/th.js", - "build/ckeditor/plugins/newpage/icons/hidpi/newpage.png": "/build/ckeditor/plugins/newpage/icons/hidpi/newpage.png", - "build/ckeditor/plugins/liststyle/lang/pt-br.js": "/build/ckeditor/plugins/liststyle/lang/pt-br.js", - "build/ckeditor/plugins/liststyle/lang/vi.js": "/build/ckeditor/plugins/liststyle/lang/vi.js", - "build/ckeditor/plugins/emoji/icons/emojipanel.png": "/build/ckeditor/plugins/emoji/icons/emojipanel.png", - "build/ckeditor/plugins/image2/lang/hi.js": "/build/ckeditor/plugins/image2/lang/hi.js", - "build/ckeditor/plugins/forms/icons/hidpi/form.png": "/build/ckeditor/plugins/forms/icons/hidpi/form.png", - "build/ckeditor/plugins/smiley/images/lightbulb.gif": "/build/ckeditor/plugins/smiley/images/lightbulb.gif", - "build/ckeditor/plugins/forms/icons/radio.png": "/build/ckeditor/plugins/forms/icons/radio.png", - "build/ckeditor/plugins/liststyle/lang/az.js": "/build/ckeditor/plugins/liststyle/lang/az.js", - "build/ckeditor/plugins/find/lang/tt.js": "/build/ckeditor/plugins/find/lang/tt.js", - "build/ckeditor/plugins/newpage/icons/hidpi/newpage-rtl.png": "/build/ckeditor/plugins/newpage/icons/hidpi/newpage-rtl.png", - "build/ckeditor/plugins/find/lang/el.js": "/build/ckeditor/plugins/find/lang/el.js", - "build/ckeditor/plugins/image2/lang/gu.js": "/build/ckeditor/plugins/image2/lang/gu.js", - "build/ckeditor/plugins/find/lang/gu.js": "/build/ckeditor/plugins/find/lang/gu.js", - "build/ckeditor/plugins/image2/lang/ku.js": "/build/ckeditor/plugins/image2/lang/ku.js", - "build/ckeditor/plugins/div/lang/uk.js": "/build/ckeditor/plugins/div/lang/uk.js", - "build/ckeditor/plugins/liststyle/lang/ja.js": "/build/ckeditor/plugins/liststyle/lang/ja.js", - "build/ckeditor/plugins/image2/lang/fa.js": "/build/ckeditor/plugins/image2/lang/fa.js", - "build/ckeditor/plugins/image2/lang/mk.js": "/build/ckeditor/plugins/image2/lang/mk.js", - "build/ckeditor/plugins/liststyle/lang/gl.js": "/build/ckeditor/plugins/liststyle/lang/gl.js", - "build/ckeditor/plugins/div/lang/ru.js": "/build/ckeditor/plugins/div/lang/ru.js", - "build/ckeditor/plugins/preview/icons/preview.png": "/build/ckeditor/plugins/preview/icons/preview.png", - "build/ckeditor/plugins/liststyle/lang/tt.js": "/build/ckeditor/plugins/liststyle/lang/tt.js", - "build/ckeditor/plugins/liststyle/lang/it.js": "/build/ckeditor/plugins/liststyle/lang/it.js", - "build/ckeditor/plugins/liststyle/lang/fr.js": "/build/ckeditor/plugins/liststyle/lang/fr.js", - "build/ckeditor/plugins/templates/lang/km.js": "/build/ckeditor/plugins/templates/lang/km.js", - "build/ckeditor/plugins/div/lang/si.js": "/build/ckeditor/plugins/div/lang/si.js", - "build/ckeditor/plugins/find/lang/ku.js": "/build/ckeditor/plugins/find/lang/ku.js", - "build/ckeditor/plugins/liststyle/lang/oc.js": "/build/ckeditor/plugins/liststyle/lang/oc.js", - "build/ckeditor/plugins/preview/icons/preview-rtl.png": "/build/ckeditor/plugins/preview/icons/preview-rtl.png", - "build/ckeditor/plugins/find/lang/hi.js": "/build/ckeditor/plugins/find/lang/hi.js", - "build/ckeditor/plugins/div/lang/el.js": "/build/ckeditor/plugins/div/lang/el.js", - "build/ckeditor/plugins/image2/lang/tt.js": "/build/ckeditor/plugins/image2/lang/tt.js", - "build/ckeditor/plugins/image2/lang/mn.js": "/build/ckeditor/plugins/image2/lang/mn.js", - "build/ckeditor/plugins/emoji/lang/uk.js": "/build/ckeditor/plugins/emoji/lang/uk.js", - "build/ckeditor/plugins/liststyle/lang/eu.js": "/build/ckeditor/plugins/liststyle/lang/eu.js", - "build/ckeditor/plugins/placeholder/dialogs/placeholder.js": "/build/ckeditor/plugins/placeholder/dialogs/placeholder.js", - "build/ckeditor/plugins/colorbutton/icons/bgcolor.png": "/build/ckeditor/plugins/colorbutton/icons/bgcolor.png", - "build/ckeditor/plugins/divarea/plugin.js": "/build/ckeditor/plugins/divarea/plugin.js", - "build/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png": "/build/ckeditor/plugins/balloonpanel/skins/moono-lisa/images/close.png", - "build/ckeditor/skins/moono-lisa/images/close.png": "/build/ckeditor/skins/moono-lisa/images/close.png", - "build/ckeditor/plugins/forms/icons/hiddenfield.png": "/build/ckeditor/plugins/forms/icons/hiddenfield.png", - "build/ckeditor/plugins/liststyle/lang/es-mx.js": "/build/ckeditor/plugins/liststyle/lang/es-mx.js", - "build/ckeditor/plugins/liststyle/lang/es.js": "/build/ckeditor/plugins/liststyle/lang/es.js", - "build/ckeditor/plugins/liststyle/lang/lt.js": "/build/ckeditor/plugins/liststyle/lang/lt.js", - "build/ckeditor/plugins/find/lang/ug.js": "/build/ckeditor/plugins/find/lang/ug.js", - "build/ckeditor/plugins/embedbase/lang/ko.js": "/build/ckeditor/plugins/embedbase/lang/ko.js", - "build/ckeditor/plugins/liststyle/lang/da.js": "/build/ckeditor/plugins/liststyle/lang/da.js", - "build/ckeditor/plugins/liststyle/lang/sk.js": "/build/ckeditor/plugins/liststyle/lang/sk.js", - "build/ckeditor/plugins/liststyle/lang/hr.js": "/build/ckeditor/plugins/liststyle/lang/hr.js", - "build/ckeditor/plugins/easyimage/lang/bg.js": "/build/ckeditor/plugins/easyimage/lang/bg.js", - "build/ckeditor/plugins/div/lang/mn.js": "/build/ckeditor/plugins/div/lang/mn.js", - "build/ckeditor/plugins/liststyle/lang/fr-ca.js": "/build/ckeditor/plugins/liststyle/lang/fr-ca.js", - "build/ckeditor/plugins/easyimage/lang/uk.js": "/build/ckeditor/plugins/easyimage/lang/uk.js", - "build/ckeditor/plugins/find/lang/th.js": "/build/ckeditor/plugins/find/lang/th.js", - "build/ckeditor/plugins/embedbase/lang/eo.js": "/build/ckeditor/plugins/embedbase/lang/eo.js", - "build/ckeditor/plugins/div/lang/bg.js": "/build/ckeditor/plugins/div/lang/bg.js", - "build/ckeditor/plugins/liststyle/lang/fo.js": "/build/ckeditor/plugins/liststyle/lang/fo.js", - "build/ckeditor/plugins/liststyle/lang/nl.js": "/build/ckeditor/plugins/liststyle/lang/nl.js", - "build/ckeditor/plugins/div/lang/hi.js": "/build/ckeditor/plugins/div/lang/hi.js", - "build/ckeditor/plugins/embedbase/lang/pl.js": "/build/ckeditor/plugins/embedbase/lang/pl.js", - "build/ckeditor/plugins/liststyle/lang/fi.js": "/build/ckeditor/plugins/liststyle/lang/fi.js", - "build/ckeditor/plugins/liststyle/lang/sq.js": "/build/ckeditor/plugins/liststyle/lang/sq.js", - "build/ckeditor/plugins/placeholder/lang/ug.js": "/build/ckeditor/plugins/placeholder/lang/ug.js", - "build/ckeditor/plugins/embedbase/lang/ug.js": "/build/ckeditor/plugins/embedbase/lang/ug.js", - "build/ckeditor/plugins/find/lang/mk.js": "/build/ckeditor/plugins/find/lang/mk.js", - "build/ckeditor/plugins/liststyle/lang/eo.js": "/build/ckeditor/plugins/liststyle/lang/eo.js", - "build/ckeditor/plugins/liststyle/lang/pl.js": "/build/ckeditor/plugins/liststyle/lang/pl.js", - "build/ckeditor/plugins/uicolor/lang/km.js": "/build/ckeditor/plugins/uicolor/lang/km.js", - "build/ckeditor/plugins/liststyle/lang/af.js": "/build/ckeditor/plugins/liststyle/lang/af.js", - "build/ckeditor/plugins/embedbase/lang/az.js": "/build/ckeditor/plugins/embedbase/lang/az.js", - "build/ckeditor/plugins/embedbase/lang/ca.js": "/build/ckeditor/plugins/embedbase/lang/ca.js", - "build/ckeditor/plugins/placeholder/lang/sr.js": "/build/ckeditor/plugins/placeholder/lang/sr.js", - "build/ckeditor/plugins/find/lang/fa.js": "/build/ckeditor/plugins/find/lang/fa.js", - "build/ckeditor/plugins/liststyle/lang/lv.js": "/build/ckeditor/plugins/liststyle/lang/lv.js", - "build/ckeditor/plugins/image2/lang/ar.js": "/build/ckeditor/plugins/image2/lang/ar.js", - "build/ckeditor/plugins/liststyle/lang/hu.js": "/build/ckeditor/plugins/liststyle/lang/hu.js", - "build/ckeditor/plugins/liststyle/lang/si.js": "/build/ckeditor/plugins/liststyle/lang/si.js", - "build/ckeditor/plugins/liststyle/lang/sr-latn.js": "/build/ckeditor/plugins/liststyle/lang/sr-latn.js", - "build/ckeditor/plugins/find/lang/bn.js": "/build/ckeditor/plugins/find/lang/bn.js", - "build/ckeditor/plugins/find/lang/bg.js": "/build/ckeditor/plugins/find/lang/bg.js", - "build/ckeditor/plugins/liststyle/lang/zh-cn.js": "/build/ckeditor/plugins/liststyle/lang/zh-cn.js", - "build/ckeditor/plugins/justify/icons/hidpi/justifycenter.png": "/build/ckeditor/plugins/justify/icons/hidpi/justifycenter.png", - "build/ckeditor/plugins/easyimage/lang/ru.js": "/build/ckeditor/plugins/easyimage/lang/ru.js", - "build/ckeditor/plugins/liststyle/lang/ro.js": "/build/ckeditor/plugins/liststyle/lang/ro.js", - "build/ckeditor/plugins/image2/lang/ja.js": "/build/ckeditor/plugins/image2/lang/ja.js", - "build/ckeditor/plugins/liststyle/lang/pt.js": "/build/ckeditor/plugins/liststyle/lang/pt.js", - "build/ckeditor/plugins/div/lang/ku.js": "/build/ckeditor/plugins/div/lang/ku.js", - "build/ckeditor/plugins/sourcedialog/icons/sourcedialog.png": "/build/ckeditor/plugins/sourcedialog/icons/sourcedialog.png", - "build/ckeditor/plugins/div/icons/creatediv.png": "/build/ckeditor/plugins/div/icons/creatediv.png", - "build/ckeditor/plugins/image2/lang/fr.js": "/build/ckeditor/plugins/image2/lang/fr.js", - "build/ckeditor/plugins/justify/icons/hidpi/justifyleft.png": "/build/ckeditor/plugins/justify/icons/hidpi/justifyleft.png", - "build/ckeditor/plugins/liststyle/lang/cs.js": "/build/ckeditor/plugins/liststyle/lang/cs.js", - "build/ckeditor/plugins/templates/lang/hi.js": "/build/ckeditor/plugins/templates/lang/hi.js", - "build/ckeditor/plugins/forms/icons/textarea-rtl.png": "/build/ckeditor/plugins/forms/icons/textarea-rtl.png", - "build/ckeditor/plugins/liststyle/lang/de-ch.js": "/build/ckeditor/plugins/liststyle/lang/de-ch.js", - "build/ckeditor/plugins/embedbase/lang/it.js": "/build/ckeditor/plugins/embedbase/lang/it.js", - "build/ckeditor/plugins/embedbase/lang/ro.js": "/build/ckeditor/plugins/embedbase/lang/ro.js", - "build/ckeditor/plugins/liststyle/lang/no.js": "/build/ckeditor/plugins/liststyle/lang/no.js", - "build/ckeditor/plugins/placeholder/lang/fa.js": "/build/ckeditor/plugins/placeholder/lang/fa.js", - "build/ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png": "/build/ckeditor/plugins/sourcedialog/icons/sourcedialog-rtl.png", - "build/ckeditor/plugins/justify/icons/justifycenter.png": "/build/ckeditor/plugins/justify/icons/justifycenter.png", - "build/ckeditor/plugins/placeholder/lang/bg.js": "/build/ckeditor/plugins/placeholder/lang/bg.js", - "build/ckeditor/plugins/embedbase/lang/fr.js": "/build/ckeditor/plugins/embedbase/lang/fr.js", - "build/ckeditor/plugins/image2/lang/lv.js": "/build/ckeditor/plugins/image2/lang/lv.js", - "build/ckeditor/plugins/liststyle/lang/de.js": "/build/ckeditor/plugins/liststyle/lang/de.js", - "build/ckeditor/plugins/uicolor/lang/ku.js": "/build/ckeditor/plugins/uicolor/lang/ku.js", - "build/ckeditor/plugins/div/lang/sr.js": "/build/ckeditor/plugins/div/lang/sr.js", - "build/ckeditor/plugins/liststyle/lang/ko.js": "/build/ckeditor/plugins/liststyle/lang/ko.js", - "build/ckeditor/plugins/embedbase/lang/de-ch.js": "/build/ckeditor/plugins/embedbase/lang/de-ch.js", - "build/ckeditor/plugins/div/lang/tt.js": "/build/ckeditor/plugins/div/lang/tt.js", - "build/ckeditor/plugins/embedbase/lang/oc.js": "/build/ckeditor/plugins/embedbase/lang/oc.js", - "build/ckeditor/plugins/emoji/lang/sr.js": "/build/ckeditor/plugins/emoji/lang/sr.js", - "build/ckeditor/plugins/liststyle/lang/tr.js": "/build/ckeditor/plugins/liststyle/lang/tr.js", - "build/ckeditor/plugins/embedbase/lang/de.js": "/build/ckeditor/plugins/embedbase/lang/de.js", - "build/ckeditor/plugins/liststyle/lang/nb.js": "/build/ckeditor/plugins/liststyle/lang/nb.js", - "build/ckeditor/plugins/image2/lang/az.js": "/build/ckeditor/plugins/image2/lang/az.js", - "build/ckeditor/plugins/liststyle/lang/sv.js": "/build/ckeditor/plugins/liststyle/lang/sv.js", - "build/ckeditor/plugins/templates/templates/images/template3.gif": "/build/ckeditor/plugins/templates/templates/images/template3.gif", - "build/ckeditor/plugins/embedbase/lang/ar.js": "/build/ckeditor/plugins/embedbase/lang/ar.js", - "build/ckeditor/plugins/image2/lang/he.js": "/build/ckeditor/plugins/image2/lang/he.js", - "build/ckeditor/plugins/image2/lang/ro.js": "/build/ckeditor/plugins/image2/lang/ro.js", - "build/ckeditor/plugins/div/lang/fa.js": "/build/ckeditor/plugins/div/lang/fa.js", - "build/ckeditor/plugins/image2/lang/nl.js": "/build/ckeditor/plugins/image2/lang/nl.js", - "build/ckeditor/plugins/templates/lang/gu.js": "/build/ckeditor/plugins/templates/lang/gu.js", - "build/ckeditor/plugins/placeholder/lang/ru.js": "/build/ckeditor/plugins/placeholder/lang/ru.js", - "build/ckeditor/plugins/easyimage/lang/el.js": "/build/ckeditor/plugins/easyimage/lang/el.js", - "build/ckeditor/plugins/docprops/icons/docprops.png": "/build/ckeditor/plugins/docprops/icons/docprops.png", - "build/ckeditor/plugins/find/icons/replace.png": "/build/ckeditor/plugins/find/icons/replace.png", - "build/ckeditor/plugins/justify/icons/hidpi/justifyright.png": "/build/ckeditor/plugins/justify/icons/hidpi/justifyright.png", - "build/ckeditor/plugins/placeholder/lang/km.js": "/build/ckeditor/plugins/placeholder/lang/km.js", - "build/ckeditor/plugins/uicolor/lang/el.js": "/build/ckeditor/plugins/uicolor/lang/el.js", - "build/ckeditor/plugins/liststyle/lang/id.js": "/build/ckeditor/plugins/liststyle/lang/id.js", - "build/ckeditor/plugins/embedbase/lang/sq.js": "/build/ckeditor/plugins/embedbase/lang/sq.js", - "build/ckeditor/plugins/placeholder/lang/uk.js": "/build/ckeditor/plugins/placeholder/lang/uk.js", - "build/ckeditor/plugins/easyimage/icons/easyimagealt.png": "/build/ckeditor/plugins/easyimage/icons/easyimagealt.png", - "build/ckeditor/plugins/codesnippet/lang/el.js": "/build/ckeditor/plugins/codesnippet/lang/el.js", - "build/ckeditor/plugins/forms/icons/checkbox.png": "/build/ckeditor/plugins/forms/icons/checkbox.png", - "build/ckeditor/plugins/liststyle/lang/et.js": "/build/ckeditor/plugins/liststyle/lang/et.js", - "build/ckeditor/plugins/docprops/icons/docprops-rtl.png": "/build/ckeditor/plugins/docprops/icons/docprops-rtl.png", - "build/ckeditor/plugins/image2/lang/vi.js": "/build/ckeditor/plugins/image2/lang/vi.js", - "build/ckeditor/plugins/liststyle/lang/zh.js": "/build/ckeditor/plugins/liststyle/lang/zh.js", - "build/ckeditor/plugins/image2/lang/sq.js": "/build/ckeditor/plugins/image2/lang/sq.js", - "build/ckeditor/plugins/div/lang/ug.js": "/build/ckeditor/plugins/div/lang/ug.js", - "build/ckeditor/plugins/templates/templates/images/template1.gif": "/build/ckeditor/plugins/templates/templates/images/template1.gif", - "build/ckeditor/plugins/embedbase/lang/hu.js": "/build/ckeditor/plugins/embedbase/lang/hu.js", - "build/ckeditor/plugins/find/lang/uk.js": "/build/ckeditor/plugins/find/lang/uk.js", - "build/ckeditor/plugins/find/lang/he.js": "/build/ckeditor/plugins/find/lang/he.js", - "build/ckeditor/plugins/liststyle/lang/mn.js": "/build/ckeditor/plugins/liststyle/lang/mn.js", - "build/ckeditor/plugins/find/lang/sr.js": "/build/ckeditor/plugins/find/lang/sr.js", - "build/ckeditor/plugins/image2/lang/fr-ca.js": "/build/ckeditor/plugins/image2/lang/fr-ca.js", - "build/ckeditor/plugins/image2/lang/oc.js": "/build/ckeditor/plugins/image2/lang/oc.js", - "build/ckeditor/plugins/image2/lang/pt-br.js": "/build/ckeditor/plugins/image2/lang/pt-br.js", - "build/ckeditor/plugins/div/lang/he.js": "/build/ckeditor/plugins/div/lang/he.js", - "build/ckeditor/plugins/liststyle/lang/cy.js": "/build/ckeditor/plugins/liststyle/lang/cy.js", - "build/ckeditor/plugins/liststyle/lang/en-au.js": "/build/ckeditor/plugins/liststyle/lang/en-au.js", - "build/ckeditor/plugins/liststyle/lang/en-ca.js": "/build/ckeditor/plugins/liststyle/lang/en-ca.js", - "build/ckeditor/plugins/liststyle/lang/en-gb.js": "/build/ckeditor/plugins/liststyle/lang/en-gb.js", - "build/ckeditor/plugins/embedbase/lang/es-mx.js": "/build/ckeditor/plugins/embedbase/lang/es-mx.js", - "build/ckeditor/plugins/embedbase/lang/gl.js": "/build/ckeditor/plugins/embedbase/lang/gl.js", - "build/ckeditor/plugins/justify/icons/hidpi/justifyblock.png": "/build/ckeditor/plugins/justify/icons/hidpi/justifyblock.png", - "build/ckeditor/plugins/codesnippet/icons/codesnippet.png": "/build/ckeditor/plugins/codesnippet/icons/codesnippet.png", - "build/ckeditor/plugins/easyimage/lang/sr.js": "/build/ckeditor/plugins/easyimage/lang/sr.js", - "build/ckeditor/plugins/templates/lang/bn.js": "/build/ckeditor/plugins/templates/lang/bn.js", - "build/ckeditor/plugins/liststyle/lang/ar.js": "/build/ckeditor/plugins/liststyle/lang/ar.js", - "build/ckeditor/plugins/liststyle/lang/bn.js": "/build/ckeditor/plugins/liststyle/lang/bn.js", - "build/ckeditor/plugins/liststyle/lang/bs.js": "/build/ckeditor/plugins/liststyle/lang/bs.js", - "build/ckeditor/plugins/liststyle/lang/ca.js": "/build/ckeditor/plugins/liststyle/lang/ca.js", - "build/ckeditor/plugins/liststyle/lang/en.js": "/build/ckeditor/plugins/liststyle/lang/en.js", - "build/ckeditor/plugins/liststyle/lang/hi.js": "/build/ckeditor/plugins/liststyle/lang/hi.js", - "build/ckeditor/plugins/liststyle/lang/is.js": "/build/ckeditor/plugins/liststyle/lang/is.js", - "build/ckeditor/plugins/liststyle/lang/mk.js": "/build/ckeditor/plugins/liststyle/lang/mk.js", - "build/ckeditor/plugins/liststyle/lang/ms.js": "/build/ckeditor/plugins/liststyle/lang/ms.js", - "build/ckeditor/plugins/liststyle/lang/sl.js": "/build/ckeditor/plugins/liststyle/lang/sl.js", - "build/ckeditor/plugins/liststyle/lang/th.js": "/build/ckeditor/plugins/liststyle/lang/th.js", - "build/ckeditor/plugins/easyimage/lang/ku.js": "/build/ckeditor/plugins/easyimage/lang/ku.js", - "build/ckeditor/plugins/image2/lang/ko.js": "/build/ckeditor/plugins/image2/lang/ko.js", - "build/ckeditor/plugins/uicolor/lang/si.js": "/build/ckeditor/plugins/uicolor/lang/si.js", - "build/ckeditor/plugins/embedbase/lang/pt-br.js": "/build/ckeditor/plugins/embedbase/lang/pt-br.js", - "build/ckeditor/plugins/exportpdf/icons/exportpdf.png": "/build/ckeditor/plugins/exportpdf/icons/exportpdf.png", - "build/ckeditor/plugins/image2/lang/es-mx.js": "/build/ckeditor/plugins/image2/lang/es-mx.js", - "build/ckeditor/plugins/find/lang/ru.js": "/build/ckeditor/plugins/find/lang/ru.js", - "build/ckeditor/plugins/forms/icons/textarea.png": "/build/ckeditor/plugins/forms/icons/textarea.png", - "build/ckeditor/plugins/uicolor/lang/ug.js": "/build/ckeditor/plugins/uicolor/lang/ug.js", - "build/ckeditor/plugins/div/lang/vi.js": "/build/ckeditor/plugins/div/lang/vi.js", - "build/ckeditor/plugins/div/lang/ja.js": "/build/ckeditor/plugins/div/lang/ja.js", - "build/ckeditor/plugins/image2/lang/eu.js": "/build/ckeditor/plugins/image2/lang/eu.js", - "build/ckeditor/plugins/placeholder/lang/ar.js": "/build/ckeditor/plugins/placeholder/lang/ar.js", - "build/ckeditor/plugins/div/lang/ar.js": "/build/ckeditor/plugins/div/lang/ar.js", - "build/ckeditor/plugins/image2/lang/ca.js": "/build/ckeditor/plugins/image2/lang/ca.js", - "build/ckeditor/plugins/image2/lang/pt.js": "/build/ckeditor/plugins/image2/lang/pt.js", - "build/ckeditor/plugins/div/lang/az.js": "/build/ckeditor/plugins/div/lang/az.js", - "build/ckeditor/plugins/embedbase/lang/tr.js": "/build/ckeditor/plugins/embedbase/lang/tr.js", - "build/ckeditor/plugins/placeholder/lang/ku.js": "/build/ckeditor/plugins/placeholder/lang/ku.js", - "build/ckeditor/plugins/placeholder/lang/si.js": "/build/ckeditor/plugins/placeholder/lang/si.js", - "build/ckeditor/plugins/image2/lang/it.js": "/build/ckeditor/plugins/image2/lang/it.js", - "build/ckeditor/plugins/embedbase/lang/nl.js": "/build/ckeditor/plugins/embedbase/lang/nl.js", - "build/ckeditor/plugins/embedbase/lang/es.js": "/build/ckeditor/plugins/embedbase/lang/es.js", - "build/ckeditor/plugins/image2/lang/es.js": "/build/ckeditor/plugins/image2/lang/es.js", - "build/ckeditor/plugins/image2/lang/hu.js": "/build/ckeditor/plugins/image2/lang/hu.js", - "build/ckeditor/plugins/uicolor/lang/fa.js": "/build/ckeditor/plugins/uicolor/lang/fa.js", - "build/ckeditor/plugins/uicolor/lang/ru.js": "/build/ckeditor/plugins/uicolor/lang/ru.js", - "build/ckeditor/plugins/image2/lang/de-ch.js": "/build/ckeditor/plugins/image2/lang/de-ch.js", - "build/ckeditor/plugins/image2/lang/eo.js": "/build/ckeditor/plugins/image2/lang/eo.js", - "build/ckeditor/skins/moono-lisa/images/lock-open.png": "/build/ckeditor/skins/moono-lisa/images/lock-open.png", - "build/ckeditor/plugins/image2/lang/fi.js": "/build/ckeditor/plugins/image2/lang/fi.js", - "build/ckeditor/plugins/image2/lang/tr.js": "/build/ckeditor/plugins/image2/lang/tr.js", - "build/ckeditor/plugins/uicolor/lang/bg.js": "/build/ckeditor/plugins/uicolor/lang/bg.js", - "build/ckeditor/plugins/image2/lang/cs.js": "/build/ckeditor/plugins/image2/lang/cs.js", - "build/ckeditor/plugins/image2/lang/de.js": "/build/ckeditor/plugins/image2/lang/de.js", - "build/ckeditor/plugins/image2/lang/gl.js": "/build/ckeditor/plugins/image2/lang/gl.js", - "build/ckeditor/plugins/uicolor/lang/uk.js": "/build/ckeditor/plugins/uicolor/lang/uk.js", - "build/ckeditor/plugins/embedbase/lang/eu.js": "/build/ckeditor/plugins/embedbase/lang/eu.js", - "build/ckeditor/plugins/embedbase/lang/lv.js": "/build/ckeditor/plugins/embedbase/lang/lv.js", - "build/ckeditor/plugins/placeholder/lang/es.js": "/build/ckeditor/plugins/placeholder/lang/es.js", - "build/ckeditor/plugins/smiley/images/envelope.gif": "/build/ckeditor/plugins/smiley/images/envelope.gif", - "build/ckeditor/skins/moono-lisa/images/lock.png": "/build/ckeditor/skins/moono-lisa/images/lock.png", - "build/ckeditor/plugins/embedbase/lang/sr-latn.js": "/build/ckeditor/plugins/embedbase/lang/sr-latn.js", - "build/ckeditor/plugins/image2/lang/sk.js": "/build/ckeditor/plugins/image2/lang/sk.js", - "build/ckeditor/plugins/image2/lang/pl.js": "/build/ckeditor/plugins/image2/lang/pl.js", - "build/ckeditor/plugins/placeholder/lang/es-mx.js": "/build/ckeditor/plugins/placeholder/lang/es-mx.js", - "build/ckeditor/plugins/div/lang/gl.js": "/build/ckeditor/plugins/div/lang/gl.js", - "build/ckeditor/plugins/find/lang/ar.js": "/build/ckeditor/plugins/find/lang/ar.js", - "build/ckeditor/plugins/image2/lang/da.js": "/build/ckeditor/plugins/image2/lang/da.js", - "build/ckeditor/plugins/placeholder/lang/gl.js": "/build/ckeditor/plugins/placeholder/lang/gl.js", - "build/ckeditor/plugins/easyimage/icons/easyimageupload.png": "/build/ckeditor/plugins/easyimage/icons/easyimageupload.png", - "build/ckeditor/plugins/image2/icons/image.png": "/build/ckeditor/plugins/image2/icons/image.png", - "build/ckeditor/plugins/placeholder/lang/th.js": "/build/ckeditor/plugins/placeholder/lang/th.js", - "build/ckeditor/plugins/placeholder/lang/tt.js": "/build/ckeditor/plugins/placeholder/lang/tt.js", - "build/ckeditor/plugins/templates/templates/images/template2.gif": "/build/ckeditor/plugins/templates/templates/images/template2.gif", - "build/ckeditor/plugins/div/lang/ca.js": "/build/ckeditor/plugins/div/lang/ca.js", - "build/ckeditor/plugins/embedbase/lang/sv.js": "/build/ckeditor/plugins/embedbase/lang/sv.js", - "build/ckeditor/plugins/div/lang/eu.js": "/build/ckeditor/plugins/div/lang/eu.js", - "build/ckeditor/plugins/emoji/lang/fa.js": "/build/ckeditor/plugins/emoji/lang/fa.js", - "build/ckeditor/plugins/image2/lang/sr-latn.js": "/build/ckeditor/plugins/image2/lang/sr-latn.js", - "build/ckeditor/plugins/div/lang/es-mx.js": "/build/ckeditor/plugins/div/lang/es-mx.js", - "build/ckeditor/plugins/image2/lang/no.js": "/build/ckeditor/plugins/image2/lang/no.js", - "build/ckeditor/plugins/forms/icons/button.png": "/build/ckeditor/plugins/forms/icons/button.png", - "build/ckeditor/plugins/image2/lang/nb.js": "/build/ckeditor/plugins/image2/lang/nb.js", - "build/ckeditor/plugins/embedbase/lang/ja.js": "/build/ckeditor/plugins/embedbase/lang/ja.js", - "build/ckeditor/plugins/easyimage/lang/ar.js": "/build/ckeditor/plugins/easyimage/lang/ar.js", - "build/ckeditor/plugins/find/lang/ja.js": "/build/ckeditor/plugins/find/lang/ja.js", - "build/ckeditor/plugins/image2/lang/af.js": "/build/ckeditor/plugins/image2/lang/af.js", - "build/ckeditor/plugins/image2/lang/sv.js": "/build/ckeditor/plugins/image2/lang/sv.js", - "build/ckeditor/plugins/showblocks/icons/showblocks-rtl.png": "/build/ckeditor/plugins/showblocks/icons/showblocks-rtl.png", - "build/ckeditor/plugins/find/lang/mn.js": "/build/ckeditor/plugins/find/lang/mn.js", - "build/ckeditor/plugins/div/lang/lt.js": "/build/ckeditor/plugins/div/lang/lt.js", - "build/ckeditor/plugins/div/lang/ro.js": "/build/ckeditor/plugins/div/lang/ro.js", - "build/ckeditor/plugins/image2/lang/sl.js": "/build/ckeditor/plugins/image2/lang/sl.js", - "build/ckeditor/plugins/div/lang/hu.js": "/build/ckeditor/plugins/div/lang/hu.js", - "build/ckeditor/plugins/uicolor/lang/sr.js": "/build/ckeditor/plugins/uicolor/lang/sr.js", - "build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png": "/build/ckeditor/plugins/codesnippet/lib/highlight/styles/school_book.png", - "build/ckeditor/plugins/div/lang/sq.js": "/build/ckeditor/plugins/div/lang/sq.js", - "build/ckeditor/plugins/placeholder/lang/ja.js": "/build/ckeditor/plugins/placeholder/lang/ja.js", - "build/ckeditor/plugins/div/lang/pl.js": "/build/ckeditor/plugins/div/lang/pl.js", - "build/ckeditor/plugins/div/lang/ko.js": "/build/ckeditor/plugins/div/lang/ko.js", - "build/ckeditor/plugins/embedbase/lang/hr.js": "/build/ckeditor/plugins/embedbase/lang/hr.js", - "build/ckeditor/plugins/image2/lang/cy.js": "/build/ckeditor/plugins/image2/lang/cy.js", - "build/ckeditor/plugins/showblocks/icons/showblocks.png": "/build/ckeditor/plugins/showblocks/icons/showblocks.png", - "build/ckeditor/plugins/embedbase/lang/nb.js": "/build/ckeditor/plugins/embedbase/lang/nb.js", - "build/ckeditor/plugins/image2/lang/lt.js": "/build/ckeditor/plugins/image2/lang/lt.js", - "build/ckeditor/plugins/templates/lang/si.js": "/build/ckeditor/plugins/templates/lang/si.js", - "build/ckeditor/plugins/div/lang/pt-br.js": "/build/ckeditor/plugins/div/lang/pt-br.js", - "build/ckeditor/plugins/embedbase/lang/sk.js": "/build/ckeditor/plugins/embedbase/lang/sk.js", - "build/ckeditor/plugins/placeholder/lang/pt-br.js": "/build/ckeditor/plugins/placeholder/lang/pt-br.js", - "build/ckeditor/plugins/templates/lang/sr.js": "/build/ckeditor/plugins/templates/lang/sr.js", - "build/ckeditor/plugins/uicolor/lang/tt.js": "/build/ckeditor/plugins/uicolor/lang/tt.js", - "build/ckeditor/plugins/easyimage/lang/fa.js": "/build/ckeditor/plugins/easyimage/lang/fa.js", - "build/ckeditor/plugins/embedbase/lang/pt.js": "/build/ckeditor/plugins/embedbase/lang/pt.js", - "build/ckeditor/plugins/image2/lang/fo.js": "/build/ckeditor/plugins/image2/lang/fo.js", - "build/ckeditor/plugins/placeholder/lang/ca.js": "/build/ckeditor/plugins/placeholder/lang/ca.js", - "build/ckeditor/plugins/placeholder/lang/he.js": "/build/ckeditor/plugins/placeholder/lang/he.js", - "build/ckeditor/plugins/devtools/lang/km.js": "/build/ckeditor/plugins/devtools/lang/km.js", - "build/ckeditor/plugins/div/lang/mk.js": "/build/ckeditor/plugins/div/lang/mk.js", - "build/ckeditor/plugins/codesnippet/lang/bg.js": "/build/ckeditor/plugins/codesnippet/lang/bg.js", - "build/ckeditor/plugins/embedbase/lang/da.js": "/build/ckeditor/plugins/embedbase/lang/da.js", - "build/ckeditor/plugins/bidi/icons/bidirtl.png": "/build/ckeditor/plugins/bidi/icons/bidirtl.png", - "build/ckeditor/plugins/emoji/lang/fr.js": "/build/ckeditor/plugins/emoji/lang/fr.js", - "build/ckeditor/plugins/find/lang/sk.js": "/build/ckeditor/plugins/find/lang/sk.js", - "build/ckeditor/plugins/image2/lang/et.js": "/build/ckeditor/plugins/image2/lang/et.js", - "build/ckeditor/plugins/embedbase/lang/en-au.js": "/build/ckeditor/plugins/embedbase/lang/en-au.js", - "build/ckeditor/plugins/embedbase/lang/id.js": "/build/ckeditor/plugins/embedbase/lang/id.js", - "build/ckeditor/plugins/codesnippet/lang/ar.js": "/build/ckeditor/plugins/codesnippet/lang/ar.js", - "build/ckeditor/plugins/placeholder/lang/hr.js": "/build/ckeditor/plugins/placeholder/lang/hr.js", - "build/ckeditor/plugins/bidi/icons/bidiltr.png": "/build/ckeditor/plugins/bidi/icons/bidiltr.png", - "build/ckeditor/plugins/devtools/lang/si.js": "/build/ckeditor/plugins/devtools/lang/si.js", - "build/ckeditor/plugins/embedbase/lang/en.js": "/build/ckeditor/plugins/embedbase/lang/en.js", - "build/ckeditor/plugins/easyimage/lang/ro.js": "/build/ckeditor/plugins/easyimage/lang/ro.js", - "build/ckeditor/plugins/find/lang/es.js": "/build/ckeditor/plugins/find/lang/es.js", - "build/ckeditor/plugins/div/lang/lv.js": "/build/ckeditor/plugins/div/lang/lv.js", - "build/ckeditor/plugins/find/lang/az.js": "/build/ckeditor/plugins/find/lang/az.js", - "build/ckeditor/plugins/pagebreak/icons/pagebreak-rtl.png": "/build/ckeditor/plugins/pagebreak/icons/pagebreak-rtl.png", - "build/ckeditor/plugins/uicolor/lang/mk.js": "/build/ckeditor/plugins/uicolor/lang/mk.js", - "build/ckeditor/plugins/div/lang/fr.js": "/build/ckeditor/plugins/div/lang/fr.js", - "build/ckeditor/plugins/div/lang/it.js": "/build/ckeditor/plugins/div/lang/it.js", - "build/ckeditor/plugins/div/lang/oc.js": "/build/ckeditor/plugins/div/lang/oc.js", - "build/ckeditor/plugins/placeholder/lang/cs.js": "/build/ckeditor/plugins/placeholder/lang/cs.js", - "build/ckeditor/plugins/div/lang/cy.js": "/build/ckeditor/plugins/div/lang/cy.js", - "build/ckeditor/plugins/div/lang/pt.js": "/build/ckeditor/plugins/div/lang/pt.js", - "build/ckeditor/plugins/codesnippet/lang/uk.js": "/build/ckeditor/plugins/codesnippet/lang/uk.js", - "build/ckeditor/plugins/find/lang/vi.js": "/build/ckeditor/plugins/find/lang/vi.js", - "build/ckeditor/plugins/div/lang/de-ch.js": "/build/ckeditor/plugins/div/lang/de-ch.js", - "build/ckeditor/plugins/div/lang/sl.js": "/build/ckeditor/plugins/div/lang/sl.js", - "build/ckeditor/plugins/embedbase/lang/cs.js": "/build/ckeditor/plugins/embedbase/lang/cs.js", - "build/ckeditor/plugins/templates/lang/mn.js": "/build/ckeditor/plugins/templates/lang/mn.js", - "build/ckeditor/plugins/easyimage/lang/fr.js": "/build/ckeditor/plugins/easyimage/lang/fr.js", - "build/ckeditor/plugins/image2/lang/hr.js": "/build/ckeditor/plugins/image2/lang/hr.js", - "build/ckeditor/plugins/placeholder/lang/sq.js": "/build/ckeditor/plugins/placeholder/lang/sq.js", - "build/ckeditor/plugins/copyformatting/lang/uk.js": "/build/ckeditor/plugins/copyformatting/lang/uk.js", - "build/ckeditor/plugins/devtools/lang/el.js": "/build/ckeditor/plugins/devtools/lang/el.js", - "build/ckeditor/plugins/devtools/lang/gu.js": "/build/ckeditor/plugins/devtools/lang/gu.js", - "build/ckeditor/plugins/div/lang/et.js": "/build/ckeditor/plugins/div/lang/et.js", - "build/ckeditor/plugins/uicolor/lang/ro.js": "/build/ckeditor/plugins/uicolor/lang/ro.js", - "build/ckeditor/plugins/image2/lang/en-au.js": "/build/ckeditor/plugins/image2/lang/en-au.js", - "build/ckeditor/plugins/image2/lang/en-ca.js": "/build/ckeditor/plugins/image2/lang/en-ca.js", - "build/ckeditor/plugins/image2/lang/en-gb.js": "/build/ckeditor/plugins/image2/lang/en-gb.js", - "build/ckeditor/plugins/pagebreak/icons/pagebreak.png": "/build/ckeditor/plugins/pagebreak/icons/pagebreak.png", - "build/ckeditor/plugins/uicolor/lang/he.js": "/build/ckeditor/plugins/uicolor/lang/he.js", - "build/ckeditor/plugins/div/lang/cs.js": "/build/ckeditor/plugins/div/lang/cs.js", - "build/ckeditor/plugins/div/lang/de.js": "/build/ckeditor/plugins/div/lang/de.js", - "build/ckeditor/plugins/emoji/lang/zh-cn.js": "/build/ckeditor/plugins/emoji/lang/zh-cn.js", - "build/ckeditor/plugins/image2/lang/bs.js": "/build/ckeditor/plugins/image2/lang/bs.js", - "build/ckeditor/plugins/image2/lang/ms.js": "/build/ckeditor/plugins/image2/lang/ms.js", - "build/ckeditor/plugins/placeholder/lang/sr-latn.js": "/build/ckeditor/plugins/placeholder/lang/sr-latn.js", - "build/ckeditor/plugins/div/lang/fo.js": "/build/ckeditor/plugins/div/lang/fo.js", - "build/ckeditor/plugins/image2/lang/id.js": "/build/ckeditor/plugins/image2/lang/id.js", - "build/ckeditor/plugins/image2/lang/is.js": "/build/ckeditor/plugins/image2/lang/is.js", - "build/ckeditor/plugins/div/lang/fi.js": "/build/ckeditor/plugins/div/lang/fi.js", - "build/ckeditor/plugins/div/lang/sk.js": "/build/ckeditor/plugins/div/lang/sk.js", - "build/ckeditor/plugins/find/lang/ro.js": "/build/ckeditor/plugins/find/lang/ro.js", - "build/ckeditor/plugins/image2/lang/en.js": "/build/ckeditor/plugins/image2/lang/en.js", - "build/ckeditor/plugins/placeholder/lang/fr-ca.js": "/build/ckeditor/plugins/placeholder/lang/fr-ca.js", - "build/ckeditor/plugins/placeholder/lang/fr.js": "/build/ckeditor/plugins/placeholder/lang/fr.js", - "build/ckeditor/plugins/placeholder/lang/ko.js": "/build/ckeditor/plugins/placeholder/lang/ko.js", - "build/ckeditor/plugins/placeholder/lang/pl.js": "/build/ckeditor/plugins/placeholder/lang/pl.js", - "build/ckeditor/plugins/devtools/lang/uk.js": "/build/ckeditor/plugins/devtools/lang/uk.js", - "build/ckeditor/plugins/easyimage/lang/pl.js": "/build/ckeditor/plugins/easyimage/lang/pl.js", - "build/ckeditor/plugins/forms/icons/select-rtl.png": "/build/ckeditor/plugins/forms/icons/select-rtl.png", - "build/ckeditor/plugins/templates/lang/uk.js": "/build/ckeditor/plugins/templates/lang/uk.js", - "build/ckeditor/plugins/uicolor/lang/ar.js": "/build/ckeditor/plugins/uicolor/lang/ar.js", - "build/ckeditor/plugins/div/lang/es.js": "/build/ckeditor/plugins/div/lang/es.js", - "build/ckeditor/plugins/placeholder/lang/eo.js": "/build/ckeditor/plugins/placeholder/lang/eo.js", - "build/ckeditor/plugins/placeholder/lang/sv.js": "/build/ckeditor/plugins/placeholder/lang/sv.js", - "build/ckeditor/plugins/copyformatting/lang/ru.js": "/build/ckeditor/plugins/copyformatting/lang/ru.js", - "build/ckeditor/plugins/div/lang/eo.js": "/build/ckeditor/plugins/div/lang/eo.js", - "build/ckeditor/plugins/embedbase/lang/zh.js": "/build/ckeditor/plugins/embedbase/lang/zh.js", - "build/ckeditor/plugins/copyformatting/lang/bg.js": "/build/ckeditor/plugins/copyformatting/lang/bg.js", - "build/ckeditor/plugins/div/lang/en-au.js": "/build/ckeditor/plugins/div/lang/en-au.js", - "build/ckeditor/plugins/div/lang/en-ca.js": "/build/ckeditor/plugins/div/lang/en-ca.js", - "build/ckeditor/plugins/div/lang/en-gb.js": "/build/ckeditor/plugins/div/lang/en-gb.js", - "build/ckeditor/plugins/div/lang/hr.js": "/build/ckeditor/plugins/div/lang/hr.js", - "build/ckeditor/plugins/div/lang/sv.js": "/build/ckeditor/plugins/div/lang/sv.js", - "build/ckeditor/plugins/emoji/lang/hu.js": "/build/ckeditor/plugins/emoji/lang/hu.js", - "build/ckeditor/plugins/find/lang/pt-br.js": "/build/ckeditor/plugins/find/lang/pt-br.js", - "build/ckeditor/plugins/codesnippet/lang/sr.js": "/build/ckeditor/plugins/codesnippet/lang/sr.js", - "build/ckeditor/plugins/forms/icons/select.png": "/build/ckeditor/plugins/forms/icons/select.png", - "build/ckeditor/plugins/div/lang/bs.js": "/build/ckeditor/plugins/div/lang/bs.js", - "build/ckeditor/plugins/div/lang/tr.js": "/build/ckeditor/plugins/div/lang/tr.js", - "build/ckeditor/plugins/templates/lang/ka.js": "/build/ckeditor/plugins/templates/lang/ka.js", - "build/ckeditor/plugins/codesnippet/lang/ja.js": "/build/ckeditor/plugins/codesnippet/lang/ja.js", - "build/ckeditor/plugins/codesnippet/lang/th.js": "/build/ckeditor/plugins/codesnippet/lang/th.js", - "build/ckeditor/plugins/div/lang/bn.js": "/build/ckeditor/plugins/div/lang/bn.js", - "build/ckeditor/plugins/div/lang/en.js": "/build/ckeditor/plugins/div/lang/en.js", - "build/ckeditor/plugins/div/lang/is.js": "/build/ckeditor/plugins/div/lang/is.js", - "build/ckeditor/plugins/div/lang/ms.js": "/build/ckeditor/plugins/div/lang/ms.js", - "build/ckeditor/plugins/find/lang/pt.js": "/build/ckeditor/plugins/find/lang/pt.js", - "build/ckeditor/plugins/placeholder/lang/oc.js": "/build/ckeditor/plugins/placeholder/lang/oc.js", - "build/ckeditor/plugins/easyimage/lang/it.js": "/build/ckeditor/plugins/easyimage/lang/it.js", - "build/ckeditor/plugins/devtools/lang/tt.js": "/build/ckeditor/plugins/devtools/lang/tt.js", - "build/ckeditor/plugins/div/lang/fr-ca.js": "/build/ckeditor/plugins/div/lang/fr-ca.js", - "build/ckeditor/plugins/find/lang/lt.js": "/build/ckeditor/plugins/find/lang/lt.js", - "build/ckeditor/plugins/codesnippet/lang/ug.js": "/build/ckeditor/plugins/codesnippet/lang/ug.js", - "build/ckeditor/plugins/div/lang/nb.js": "/build/ckeditor/plugins/div/lang/nb.js", - "build/ckeditor/plugins/div/lang/nl.js": "/build/ckeditor/plugins/div/lang/nl.js", - "build/ckeditor/plugins/div/lang/no.js": "/build/ckeditor/plugins/div/lang/no.js", - "build/ckeditor/plugins/easyimage/lang/sq.js": "/build/ckeditor/plugins/easyimage/lang/sq.js", - "build/ckeditor/plugins/embedbase/lang/et.js": "/build/ckeditor/plugins/embedbase/lang/et.js", - "build/ckeditor/plugins/emoji/lang/pt-br.js": "/build/ckeditor/plugins/emoji/lang/pt-br.js", - "build/ckeditor/plugins/placeholder/lang/sk.js": "/build/ckeditor/plugins/placeholder/lang/sk.js", - "build/ckeditor/plugins/div/lang/da.js": "/build/ckeditor/plugins/div/lang/da.js", - "build/ckeditor/plugins/find/lang/ca.js": "/build/ckeditor/plugins/find/lang/ca.js", - "build/ckeditor/plugins/image2/lang/zh-cn.js": "/build/ckeditor/plugins/image2/lang/zh-cn.js", - "build/ckeditor/plugins/newpage/icons/newpage.png": "/build/ckeditor/plugins/newpage/icons/newpage.png", - "build/ckeditor/plugins/templates/lang/ja.js": "/build/ckeditor/plugins/templates/lang/ja.js", - "build/ckeditor/plugins/easyimage/lang/de-ch.js": "/build/ckeditor/plugins/easyimage/lang/de-ch.js", - "build/ckeditor/plugins/placeholder/lang/id.js": "/build/ckeditor/plugins/placeholder/lang/id.js", - "build/ckeditor/plugins/emoji/lang/it.js": "/build/ckeditor/plugins/emoji/lang/it.js", - "build/ckeditor/plugins/placeholder/lang/vi.js": "/build/ckeditor/plugins/placeholder/lang/vi.js", - "build/ckeditor/plugins/templates/icons/templates-rtl.png": "/build/ckeditor/plugins/templates/icons/templates-rtl.png", - "build/ckeditor/plugins/templates/icons/templates.png": "/build/ckeditor/plugins/templates/icons/templates.png", - "build/ckeditor/plugins/codesnippet/lang/ru.js": "/build/ckeditor/plugins/codesnippet/lang/ru.js", - "build/ckeditor/plugins/div/lang/sr-latn.js": "/build/ckeditor/plugins/div/lang/sr-latn.js", - "build/ckeditor/plugins/easyimage/lang/de.js": "/build/ckeditor/plugins/easyimage/lang/de.js", - "build/ckeditor/plugins/emoji/lang/cs.js": "/build/ckeditor/plugins/emoji/lang/cs.js", - "build/ckeditor/plugins/find/lang/gl.js": "/build/ckeditor/plugins/find/lang/gl.js", - "build/ckeditor/plugins/find/lang/si.js": "/build/ckeditor/plugins/find/lang/si.js", - "build/ckeditor/plugins/newpage/icons/newpage-rtl.png": "/build/ckeditor/plugins/newpage/icons/newpage-rtl.png", - "build/ckeditor/plugins/placeholder/lang/nl.js": "/build/ckeditor/plugins/placeholder/lang/nl.js", - "build/ckeditor/plugins/templates/lang/el.js": "/build/ckeditor/plugins/templates/lang/el.js", - "build/ckeditor/plugins/templates/lang/ru.js": "/build/ckeditor/plugins/templates/lang/ru.js", - "build/ckeditor/plugins/print/icons/print.png": "/build/ckeditor/plugins/print/icons/print.png", - "build/ckeditor/plugins/placeholder/lang/da.js": "/build/ckeditor/plugins/placeholder/lang/da.js", - "build/ckeditor/plugins/placeholder/lang/hu.js": "/build/ckeditor/plugins/placeholder/lang/hu.js", - "build/ckeditor/plugins/uicolor/lang/az.js": "/build/ckeditor/plugins/uicolor/lang/az.js", - "build/ckeditor/plugins/uicolor/lang/vi.js": "/build/ckeditor/plugins/uicolor/lang/vi.js", - "build/ckeditor/plugins/codesnippet/lang/es-mx.js": "/build/ckeditor/plugins/codesnippet/lang/es-mx.js", - "build/ckeditor/plugins/codesnippet/lang/es.js": "/build/ckeditor/plugins/codesnippet/lang/es.js", - "build/ckeditor/plugins/codesnippet/lang/ku.js": "/build/ckeditor/plugins/codesnippet/lang/ku.js", - "build/ckeditor/plugins/codesnippet/lang/sk.js": "/build/ckeditor/plugins/codesnippet/lang/sk.js", - "build/ckeditor/plugins/codesnippet/lang/tt.js": "/build/ckeditor/plugins/codesnippet/lang/tt.js", - "build/ckeditor/plugins/find/lang/hu.js": "/build/ckeditor/plugins/find/lang/hu.js", - "build/ckeditor/plugins/uicolor/lang/es-mx.js": "/build/ckeditor/plugins/uicolor/lang/es-mx.js", - "build/ckeditor/plugins/div/lang/id.js": "/build/ckeditor/plugins/div/lang/id.js", - "build/ckeditor/plugins/easyimage/lang/pt-br.js": "/build/ckeditor/plugins/easyimage/lang/pt-br.js", - "build/ckeditor/plugins/emoji/lang/tr.js": "/build/ckeditor/plugins/emoji/lang/tr.js", - "build/ckeditor/plugins/easyimage/lang/nl.js": "/build/ckeditor/plugins/easyimage/lang/nl.js", - "build/ckeditor/plugins/find/lang/sq.js": "/build/ckeditor/plugins/find/lang/sq.js", - "build/ckeditor/plugins/codesnippet/lang/gl.js": "/build/ckeditor/plugins/codesnippet/lang/gl.js", - "build/ckeditor/plugins/placeholder/lang/it.js": "/build/ckeditor/plugins/placeholder/lang/it.js", - "build/ckeditor/plugins/codesnippet/lang/pt-br.js": "/build/ckeditor/plugins/codesnippet/lang/pt-br.js", - "build/ckeditor/plugins/devtools/lang/bg.js": "/build/ckeditor/plugins/devtools/lang/bg.js", - "build/ckeditor/plugins/emoji/lang/gl.js": "/build/ckeditor/plugins/emoji/lang/gl.js", - "build/ckeditor/plugins/language/icons/language.png": "/build/ckeditor/plugins/language/icons/language.png", - "build/ckeditor/plugins/placeholder/lang/en-gb.js": "/build/ckeditor/plugins/placeholder/lang/en-gb.js", - "build/ckeditor/plugins/placeholder/lang/pt.js": "/build/ckeditor/plugins/placeholder/lang/pt.js", - "build/ckeditor/plugins/devtools/lang/sr.js": "/build/ckeditor/plugins/devtools/lang/sr.js", - "build/ckeditor/plugins/placeholder/lang/nb.js": "/build/ckeditor/plugins/placeholder/lang/nb.js", - "build/ckeditor/plugins/placeholder/lang/no.js": "/build/ckeditor/plugins/placeholder/lang/no.js", - "build/ckeditor/plugins/codesnippet/lang/it.js": "/build/ckeditor/plugins/codesnippet/lang/it.js", - "build/ckeditor/plugins/emoji/lang/nl.js": "/build/ckeditor/plugins/emoji/lang/nl.js", - "build/ckeditor/plugins/image2/lang/zh.js": "/build/ckeditor/plugins/image2/lang/zh.js", - "build/ckeditor/plugins/uicolor/lang/gl.js": "/build/ckeditor/plugins/uicolor/lang/gl.js", - "build/ckeditor/plugins/easyimage/lang/sk.js": "/build/ckeditor/plugins/easyimage/lang/sk.js", - "build/ckeditor/plugins/save/icons/save.png": "/build/ckeditor/plugins/save/icons/save.png", - "build/ckeditor/plugins/find/lang/fr.js": "/build/ckeditor/plugins/find/lang/fr.js", - "build/ckeditor/plugins/placeholder/lang/en-au.js": "/build/ckeditor/plugins/placeholder/lang/en-au.js", - "build/ckeditor/plugins/uicolor/lang/es.js": "/build/ckeditor/plugins/uicolor/lang/es.js", - "build/ckeditor/plugins/uicolor/lang/sq.js": "/build/ckeditor/plugins/uicolor/lang/sq.js", - "build/ckeditor/plugins/div/lang/zh-cn.js": "/build/ckeditor/plugins/div/lang/zh-cn.js", - "build/ckeditor/plugins/easyimage/lang/gl.js": "/build/ckeditor/plugins/easyimage/lang/gl.js", - "build/ckeditor/plugins/easyimage/lang/sr-latn.js": "/build/ckeditor/plugins/easyimage/lang/sr-latn.js", - "build/ckeditor/plugins/emoji/lang/da.js": "/build/ckeditor/plugins/emoji/lang/da.js", - "build/ckeditor/plugins/emoji/lang/pl.js": "/build/ckeditor/plugins/emoji/lang/pl.js", - "build/ckeditor/plugins/placeholder/lang/cy.js": "/build/ckeditor/plugins/placeholder/lang/cy.js", - "build/ckeditor/plugins/uicolor/lang/hu.js": "/build/ckeditor/plugins/uicolor/lang/hu.js", - "build/ckeditor/plugins/copyformatting/lang/sr.js": "/build/ckeditor/plugins/copyformatting/lang/sr.js", - "build/ckeditor/plugins/easyimage/lang/hr.js": "/build/ckeditor/plugins/easyimage/lang/hr.js", - "build/ckeditor/plugins/find/lang/tr.js": "/build/ckeditor/plugins/find/lang/tr.js", - "build/ckeditor/plugins/find/lang/oc.js": "/build/ckeditor/plugins/find/lang/oc.js", - "build/ckeditor/plugins/placeholder/lang/en.js": "/build/ckeditor/plugins/placeholder/lang/en.js", - "build/ckeditor/plugins/easyimage/lang/az.js": "/build/ckeditor/plugins/easyimage/lang/az.js", - "build/ckeditor/plugins/placeholder/lang/fi.js": "/build/ckeditor/plugins/placeholder/lang/fi.js", - "build/ckeditor/plugins/uicolor/lang/fr.js": "/build/ckeditor/plugins/uicolor/lang/fr.js", - "build/ckeditor/plugins/copyformatting/lang/el.js": "/build/ckeditor/plugins/copyformatting/lang/el.js", - "build/ckeditor/plugins/emoji/lang/de.js": "/build/ckeditor/plugins/emoji/lang/de.js", - "build/ckeditor/plugins/placeholder/lang/af.js": "/build/ckeditor/plugins/placeholder/lang/af.js", - "build/ckeditor/plugins/uicolor/lang/nb.js": "/build/ckeditor/plugins/uicolor/lang/nb.js", - "build/ckeditor/plugins/easyimage/lang/da.js": "/build/ckeditor/plugins/easyimage/lang/da.js", - "build/ckeditor/plugins/easyimage/lang/hu.js": "/build/ckeditor/plugins/easyimage/lang/hu.js", - "build/ckeditor/plugins/easyimage/lang/nb.js": "/build/ckeditor/plugins/easyimage/lang/nb.js", - "build/ckeditor/plugins/placeholder/lang/de-ch.js": "/build/ckeditor/plugins/placeholder/lang/de-ch.js", - "build/ckeditor/plugins/placeholder/lang/et.js": "/build/ckeditor/plugins/placeholder/lang/et.js", - "build/ckeditor/plugins/div/lang/zh.js": "/build/ckeditor/plugins/div/lang/zh.js", - "build/ckeditor/plugins/easyimage/lang/lv.js": "/build/ckeditor/plugins/easyimage/lang/lv.js", - "build/ckeditor/plugins/easyimage/lang/tt.js": "/build/ckeditor/plugins/easyimage/lang/tt.js", - "build/ckeditor/plugins/find/lang/ko.js": "/build/ckeditor/plugins/find/lang/ko.js", - "build/ckeditor/plugins/emoji/lang/en-au.js": "/build/ckeditor/plugins/emoji/lang/en-au.js", - "build/ckeditor/plugins/uicolor/lang/eu.js": "/build/ckeditor/plugins/uicolor/lang/eu.js", - "build/ckeditor/plugins/find/lang/de-ch.js": "/build/ckeditor/plugins/find/lang/de-ch.js", - "build/ckeditor/plugins/placeholder/lang/de.js": "/build/ckeditor/plugins/placeholder/lang/de.js", - "build/ckeditor/plugins/uicolor/lang/fr-ca.js": "/build/ckeditor/plugins/uicolor/lang/fr-ca.js", - "build/ckeditor/plugins/div/lang/af.js": "/build/ckeditor/plugins/div/lang/af.js", - "build/ckeditor/plugins/forms/icons/textfield-rtl.png": "/build/ckeditor/plugins/forms/icons/textfield-rtl.png", - "build/ckeditor/plugins/forms/icons/textfield.png": "/build/ckeditor/plugins/forms/icons/textfield.png", - "build/ckeditor/plugins/scayt/dialogs/dialog.css": "/build/ckeditor/plugins/scayt/dialogs/dialog.css", - "build/ckeditor/plugins/uicolor/lang/fi.js": "/build/ckeditor/plugins/uicolor/lang/fi.js", - "build/ckeditor/plugins/uicolor/lang/pl.js": "/build/ckeditor/plugins/uicolor/lang/pl.js", - "build/ckeditor/plugins/uicolor/lang/tr.js": "/build/ckeditor/plugins/uicolor/lang/tr.js", - "build/ckeditor/plugins/codesnippet/lang/az.js": "/build/ckeditor/plugins/codesnippet/lang/az.js", - "build/ckeditor/plugins/easyimage/lang/pt.js": "/build/ckeditor/plugins/easyimage/lang/pt.js", - "build/ckeditor/plugins/emoji/lang/en.js": "/build/ckeditor/plugins/emoji/lang/en.js", - "build/ckeditor/plugins/placeholder/lang/tr.js": "/build/ckeditor/plugins/placeholder/lang/tr.js", - "build/ckeditor/plugins/templates/lang/vi.js": "/build/ckeditor/plugins/templates/lang/vi.js", - "build/ckeditor/plugins/codesnippet/lang/pt.js": "/build/ckeditor/plugins/codesnippet/lang/pt.js", - "build/ckeditor/plugins/emoji/lang/sv.js": "/build/ckeditor/plugins/emoji/lang/sv.js", - "build/ckeditor/plugins/find/lang/de.js": "/build/ckeditor/plugins/find/lang/de.js", - "build/ckeditor/plugins/placeholder/lang/az.js": "/build/ckeditor/plugins/placeholder/lang/az.js", - "build/ckeditor/plugins/uicolor/lang/de-ch.js": "/build/ckeditor/plugins/uicolor/lang/de-ch.js", - "build/ckeditor/plugins/uicolor/lang/ja.js": "/build/ckeditor/plugins/uicolor/lang/ja.js", - "build/ckeditor/plugins/codesnippet/lang/fa.js": "/build/ckeditor/plugins/codesnippet/lang/fa.js", - "build/ckeditor/plugins/easyimage/lang/et.js": "/build/ckeditor/plugins/easyimage/lang/et.js", - "build/ckeditor/plugins/find/lang/is.js": "/build/ckeditor/plugins/find/lang/is.js", - "build/ckeditor/plugins/find/lang/it.js": "/build/ckeditor/plugins/find/lang/it.js", - "build/ckeditor/plugins/codesnippet/lang/ca.js": "/build/ckeditor/plugins/codesnippet/lang/ca.js", - "build/ckeditor/plugins/easyimage/lang/cs.js": "/build/ckeditor/plugins/easyimage/lang/cs.js", - "build/ckeditor/plugins/emoji/lang/et.js": "/build/ckeditor/plugins/emoji/lang/et.js", - "build/ckeditor/plugins/placeholder/lang/eu.js": "/build/ckeditor/plugins/placeholder/lang/eu.js", - "build/ckeditor/plugins/codesnippet/lang/ko.js": "/build/ckeditor/plugins/codesnippet/lang/ko.js", - "build/ckeditor/plugins/copyformatting/lang/ku.js": "/build/ckeditor/plugins/copyformatting/lang/ku.js", - "build/ckeditor/plugins/emoji/lang/de-ch.js": "/build/ckeditor/plugins/emoji/lang/de-ch.js", - "build/ckeditor/plugins/uicolor/lang/de.js": "/build/ckeditor/plugins/uicolor/lang/de.js", - "build/ckeditor/plugins/uicolor/lang/oc.js": "/build/ckeditor/plugins/uicolor/lang/oc.js", - "build/ckeditor/plugins/copyformatting/lang/fa.js": "/build/ckeditor/plugins/copyformatting/lang/fa.js", - "build/ckeditor/plugins/find/lang/pl.js": "/build/ckeditor/plugins/find/lang/pl.js", - "build/ckeditor/plugins/placeholder/lang/zh.js": "/build/ckeditor/plugins/placeholder/lang/zh.js", - "build/ckeditor/plugins/uicolor/lang/cs.js": "/build/ckeditor/plugins/uicolor/lang/cs.js", - "build/ckeditor/plugins/uicolor/lang/et.js": "/build/ckeditor/plugins/uicolor/lang/et.js", - "build/ckeditor/plugins/uicolor/lang/zh.js": "/build/ckeditor/plugins/uicolor/lang/zh.js", - "build/ckeditor/plugins/find/lang/sl.js": "/build/ckeditor/plugins/find/lang/sl.js", - "build/ckeditor/plugins/mathjax/lang/km.js": "/build/ckeditor/plugins/mathjax/lang/km.js", - "build/ckeditor/plugins/uicolor/lang/no.js": "/build/ckeditor/plugins/uicolor/lang/no.js", - "build/ckeditor/plugins/easyimage/lang/en-au.js": "/build/ckeditor/plugins/easyimage/lang/en-au.js", - "build/ckeditor/plugins/easyimage/lang/no.js": "/build/ckeditor/plugins/easyimage/lang/no.js", - "build/ckeditor/plugins/easyimage/lang/tr.js": "/build/ckeditor/plugins/easyimage/lang/tr.js", - "build/ckeditor/plugins/find/lang/es-mx.js": "/build/ckeditor/plugins/find/lang/es-mx.js", - "build/ckeditor/plugins/find/lang/nl.js": "/build/ckeditor/plugins/find/lang/nl.js", - "build/ckeditor/plugins/uicolor/lang/sk.js": "/build/ckeditor/plugins/uicolor/lang/sk.js", - "build/ckeditor/plugins/uicolor/lang/sv.js": "/build/ckeditor/plugins/uicolor/lang/sv.js", - "build/ckeditor/plugins/codesnippet/lang/sq.js": "/build/ckeditor/plugins/codesnippet/lang/sq.js", - "build/ckeditor/plugins/find/lang/eu.js": "/build/ckeditor/plugins/find/lang/eu.js", - "build/ckeditor/plugins/uicolor/lang/nl.js": "/build/ckeditor/plugins/uicolor/lang/nl.js", - "build/ckeditor/plugins/emoji/lang/sr-latn.js": "/build/ckeditor/plugins/emoji/lang/sr-latn.js", - "build/ckeditor/plugins/find/lang/eo.js": "/build/ckeditor/plugins/find/lang/eo.js", - "build/ckeditor/plugins/find/lang/lv.js": "/build/ckeditor/plugins/find/lang/lv.js", - "build/ckeditor/plugins/uicolor/lang/cy.js": "/build/ckeditor/plugins/uicolor/lang/cy.js", - "build/ckeditor/plugins/uicolor/lang/it.js": "/build/ckeditor/plugins/uicolor/lang/it.js", - "build/ckeditor/plugins/uicolor/lang/lv.js": "/build/ckeditor/plugins/uicolor/lang/lv.js", - "build/ckeditor/plugins/uicolor/lang/sl.js": "/build/ckeditor/plugins/uicolor/lang/sl.js", - "build/ckeditor/plugins/codesnippet/lang/he.js": "/build/ckeditor/plugins/codesnippet/lang/he.js", - "build/ckeditor/plugins/devtools/lang/ru.js": "/build/ckeditor/plugins/devtools/lang/ru.js", - "build/ckeditor/plugins/devtools/lang/ug.js": "/build/ckeditor/plugins/devtools/lang/ug.js", - "build/ckeditor/plugins/easyimage/lang/en.js": "/build/ckeditor/plugins/easyimage/lang/en.js", - "build/ckeditor/plugins/codesnippet/lang/km.js": "/build/ckeditor/plugins/codesnippet/lang/km.js", - "build/ckeditor/plugins/emoji/lang/hr.js": "/build/ckeditor/plugins/emoji/lang/hr.js", - "build/ckeditor/plugins/find/lang/cy.js": "/build/ckeditor/plugins/find/lang/cy.js", - "build/ckeditor/plugins/find/lang/fr-ca.js": "/build/ckeditor/plugins/find/lang/fr-ca.js", - "build/ckeditor/plugins/find/lang/hr.js": "/build/ckeditor/plugins/find/lang/hr.js", - "build/ckeditor/plugins/find/lang/ms.js": "/build/ckeditor/plugins/find/lang/ms.js", - "build/ckeditor/plugins/placeholder/lang/lv.js": "/build/ckeditor/plugins/placeholder/lang/lv.js", - "build/ckeditor/plugins/uicolor/lang/ko.js": "/build/ckeditor/plugins/uicolor/lang/ko.js", - "build/ckeditor/plugins/uicolor/lang/pt.js": "/build/ckeditor/plugins/uicolor/lang/pt.js", - "build/ckeditor/plugins/codesnippet/lang/lt.js": "/build/ckeditor/plugins/codesnippet/lang/lt.js", - "build/ckeditor/plugins/templates/lang/ku.js": "/build/ckeditor/plugins/templates/lang/ku.js", - "build/ckeditor/plugins/uicolor/lang/pt-br.js": "/build/ckeditor/plugins/uicolor/lang/pt-br.js", - "build/ckeditor/plugins/codesnippet/lang/oc.js": "/build/ckeditor/plugins/codesnippet/lang/oc.js", - "build/ckeditor/plugins/devtools/lang/ku.js": "/build/ckeditor/plugins/devtools/lang/ku.js", - "build/ckeditor/plugins/emoji/lang/sk.js": "/build/ckeditor/plugins/emoji/lang/sk.js", - "build/ckeditor/plugins/find/lang/sr-latn.js": "/build/ckeditor/plugins/find/lang/sr-latn.js", - "build/ckeditor/plugins/uicolor/lang/ca.js": "/build/ckeditor/plugins/uicolor/lang/ca.js", - "build/ckeditor/plugins/uicolor/lang/id.js": "/build/ckeditor/plugins/uicolor/lang/id.js", - "build/ckeditor/plugins/codesnippet/lang/fr.js": "/build/ckeditor/plugins/codesnippet/lang/fr.js", - "build/ckeditor/plugins/uicolor/lang/sr-latn.js": "/build/ckeditor/plugins/uicolor/lang/sr-latn.js", - "build/ckeditor/plugins/codesnippet/lang/de-ch.js": "/build/ckeditor/plugins/codesnippet/lang/de-ch.js", - "build/ckeditor/plugins/codesnippet/lang/ro.js": "/build/ckeditor/plugins/codesnippet/lang/ro.js", - "build/ckeditor/plugins/easyimage/lang/sv.js": "/build/ckeditor/plugins/easyimage/lang/sv.js", - "build/ckeditor/plugins/find/lang/nb.js": "/build/ckeditor/plugins/find/lang/nb.js", - "build/ckeditor/plugins/find/lang/no.js": "/build/ckeditor/plugins/find/lang/no.js", - "build/ckeditor/plugins/mathjax/lang/ug.js": "/build/ckeditor/plugins/mathjax/lang/ug.js", - "build/ckeditor/plugins/placeholder/lang/zh-cn.js": "/build/ckeditor/plugins/placeholder/lang/zh-cn.js", - "build/ckeditor/plugins/uicolor/lang/da.js": "/build/ckeditor/plugins/uicolor/lang/da.js", - "build/ckeditor/plugins/codesnippet/lang/vi.js": "/build/ckeditor/plugins/codesnippet/lang/vi.js", - "build/ckeditor/plugins/embedbase/lang/zh-cn.js": "/build/ckeditor/plugins/embedbase/lang/zh-cn.js", - "build/ckeditor/plugins/find/lang/bs.js": "/build/ckeditor/plugins/find/lang/bs.js", - "build/ckeditor/plugins/placeholder/lang/sl.js": "/build/ckeditor/plugins/placeholder/lang/sl.js", - "build/ckeditor/plugins/uicolor/lang/hr.js": "/build/ckeditor/plugins/uicolor/lang/hr.js", - "build/ckeditor/plugins/uicolor/lang/zh-cn.js": "/build/ckeditor/plugins/uicolor/lang/zh-cn.js", - "build/ckeditor/plugins/copyformatting/lang/ja.js": "/build/ckeditor/plugins/copyformatting/lang/ja.js", - "build/ckeditor/plugins/find/lang/cs.js": "/build/ckeditor/plugins/find/lang/cs.js", - "build/ckeditor/plugins/uicolor/lang/en-au.js": "/build/ckeditor/plugins/uicolor/lang/en-au.js", - "build/ckeditor/plugins/uicolor/lang/eo.js": "/build/ckeditor/plugins/uicolor/lang/eo.js", - "build/ckeditor/plugins/codesnippet/lang/de.js": "/build/ckeditor/plugins/codesnippet/lang/de.js", - "build/ckeditor/plugins/codesnippet/lang/zh.js": "/build/ckeditor/plugins/codesnippet/lang/zh.js", - "build/ckeditor/plugins/templates/lang/fa.js": "/build/ckeditor/plugins/templates/lang/fa.js", - "build/ckeditor/plugins/codesnippet/lang/hu.js": "/build/ckeditor/plugins/codesnippet/lang/hu.js", - "build/ckeditor/plugins/find/lang/et.js": "/build/ckeditor/plugins/find/lang/et.js", - "build/ckeditor/plugins/uicolor/lang/en-gb.js": "/build/ckeditor/plugins/uicolor/lang/en-gb.js", - "build/ckeditor/plugins/codesnippet/lang/hr.js": "/build/ckeditor/plugins/codesnippet/lang/hr.js", - "build/ckeditor/plugins/easyimage/lang/zh-cn.js": "/build/ckeditor/plugins/easyimage/lang/zh-cn.js", - "build/ckeditor/plugins/find/lang/fo.js": "/build/ckeditor/plugins/find/lang/fo.js", - "build/ckeditor/plugins/emoji/lang/zh.js": "/build/ckeditor/plugins/emoji/lang/zh.js", - "build/ckeditor/plugins/codesnippet/lang/cs.js": "/build/ckeditor/plugins/codesnippet/lang/cs.js", - "build/ckeditor/plugins/codesnippet/lang/lv.js": "/build/ckeditor/plugins/codesnippet/lang/lv.js", - "build/ckeditor/plugins/uicolor/lang/af.js": "/build/ckeditor/plugins/uicolor/lang/af.js", - "build/ckeditor/plugins/find/lang/da.js": "/build/ckeditor/plugins/find/lang/da.js", - "build/ckeditor/plugins/find/lang/zh.js": "/build/ckeditor/plugins/find/lang/zh.js", - "build/ckeditor/plugins/templates/lang/ro.js": "/build/ckeditor/plugins/templates/lang/ro.js", - "build/ckeditor/plugins/uicolor/lang/en.js": "/build/ckeditor/plugins/uicolor/lang/en.js", - "build/ckeditor/plugins/codesnippet/lang/tr.js": "/build/ckeditor/plugins/codesnippet/lang/tr.js", - "build/ckeditor/plugins/codesnippet/lang/en-au.js": "/build/ckeditor/plugins/codesnippet/lang/en-au.js", - "build/ckeditor/plugins/codesnippet/lang/en-gb.js": "/build/ckeditor/plugins/codesnippet/lang/en-gb.js", - "build/ckeditor/plugins/codesnippet/lang/id.js": "/build/ckeditor/plugins/codesnippet/lang/id.js", - "build/ckeditor/plugins/embed/icons/embed.png": "/build/ckeditor/plugins/embed/icons/embed.png", - "build/ckeditor/plugins/embedsemantic/icons/embedsemantic.png": "/build/ckeditor/plugins/embedsemantic/icons/embedsemantic.png", - "build/ckeditor/plugins/codesnippet/lang/sr-latn.js": "/build/ckeditor/plugins/codesnippet/lang/sr-latn.js", - "build/ckeditor/plugins/devtools/lang/ar.js": "/build/ckeditor/plugins/devtools/lang/ar.js", - "build/ckeditor/plugins/codesnippet/lang/en.js": "/build/ckeditor/plugins/codesnippet/lang/en.js", - "build/ckeditor/plugins/codesnippet/lang/fr-ca.js": "/build/ckeditor/plugins/codesnippet/lang/fr-ca.js", - "build/ckeditor/plugins/easyimage/lang/zh.js": "/build/ckeditor/plugins/easyimage/lang/zh.js", - "build/ckeditor/plugins/devtools/lang/es-mx.js": "/build/ckeditor/plugins/devtools/lang/es-mx.js", - "build/ckeditor/plugins/codesnippet/lang/eu.js": "/build/ckeditor/plugins/codesnippet/lang/eu.js", - "build/ckeditor/plugins/codesnippet/lang/zh-cn.js": "/build/ckeditor/plugins/codesnippet/lang/zh-cn.js", - "build/ckeditor/plugins/devtools/lang/ca.js": "/build/ckeditor/plugins/devtools/lang/ca.js", - "build/ckeditor/plugins/find/lang/af.js": "/build/ckeditor/plugins/find/lang/af.js", - "build/ckeditor/plugins/devtools/lang/es.js": "/build/ckeditor/plugins/devtools/lang/es.js", - "build/ckeditor/plugins/iframe/lang/el.js": "/build/ckeditor/plugins/iframe/lang/el.js", - "build/ckeditor/plugins/iframe/lang/ku.js": "/build/ckeditor/plugins/iframe/lang/ku.js", - "build/ckeditor/plugins/codesnippet/lang/pl.js": "/build/ckeditor/plugins/codesnippet/lang/pl.js", - "build/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css": "/build/ckeditor/plugins/scayt/skins/moono-lisa/scayt.css", - "build/ckeditor/plugins/codesnippet/lang/fi.js": "/build/ckeditor/plugins/codesnippet/lang/fi.js", - "build/ckeditor/plugins/find/lang/id.js": "/build/ckeditor/plugins/find/lang/id.js", - "build/ckeditor/plugins/forms/icons/form.png": "/build/ckeditor/plugins/forms/icons/form.png", - "build/ckeditor/plugins/devtools/lang/fr.js": "/build/ckeditor/plugins/devtools/lang/fr.js", - "build/ckeditor/plugins/find/lang/fi.js": "/build/ckeditor/plugins/find/lang/fi.js", - "build/ckeditor/plugins/flash/plugin.js": "/build/ckeditor/plugins/flash/plugin.js", - "build/ckeditor/plugins/codesnippet/lang/da.js": "/build/ckeditor/plugins/codesnippet/lang/da.js", - "build/ckeditor/plugins/codesnippet/lang/nb.js": "/build/ckeditor/plugins/codesnippet/lang/nb.js", - "build/ckeditor/plugins/codesnippet/lang/sl.js": "/build/ckeditor/plugins/codesnippet/lang/sl.js", - "build/ckeditor/plugins/find/lang/sv.js": "/build/ckeditor/plugins/find/lang/sv.js", - "build/ckeditor/plugins/find/lang/en-au.js": "/build/ckeditor/plugins/find/lang/en-au.js", - "build/ckeditor/plugins/find/lang/en-ca.js": "/build/ckeditor/plugins/find/lang/en-ca.js", - "build/ckeditor/plugins/find/lang/en-gb.js": "/build/ckeditor/plugins/find/lang/en-gb.js", - "build/ckeditor/plugins/codesnippet/lang/eo.js": "/build/ckeditor/plugins/codesnippet/lang/eo.js", - "build/ckeditor/plugins/codesnippet/lang/et.js": "/build/ckeditor/plugins/codesnippet/lang/et.js", - "build/ckeditor/plugins/find/lang/en.js": "/build/ckeditor/plugins/find/lang/en.js", - "build/ckeditor/plugins/templates/lang/bg.js": "/build/ckeditor/plugins/templates/lang/bg.js", - "build/ckeditor/plugins/codesnippet/lang/sv.js": "/build/ckeditor/plugins/codesnippet/lang/sv.js", - "build/ckeditor/plugins/devtools/lang/fa.js": "/build/ckeditor/plugins/devtools/lang/fa.js", - "build/ckeditor/plugins/mathjax/lang/tt.js": "/build/ckeditor/plugins/mathjax/lang/tt.js", - "build/ckeditor/plugins/codesnippet/lang/no.js": "/build/ckeditor/plugins/codesnippet/lang/no.js", - "build/ckeditor/plugins/codesnippet/lang/nl.js": "/build/ckeditor/plugins/codesnippet/lang/nl.js", - "build/ckeditor/plugins/devtools/lang/fr-ca.js": "/build/ckeditor/plugins/devtools/lang/fr-ca.js", - "build/ckeditor/plugins/devtools/lang/he.js": "/build/ckeditor/plugins/devtools/lang/he.js", - "build/ckeditor/plugins/devtools/lang/pt.js": "/build/ckeditor/plugins/devtools/lang/pt.js", - "build/ckeditor/plugins/devtools/lang/az.js": "/build/ckeditor/plugins/devtools/lang/az.js", - "build/ckeditor/plugins/devtools/lang/eu.js": "/build/ckeditor/plugins/devtools/lang/eu.js", - "build/ckeditor/plugins/devtools/lang/oc.js": "/build/ckeditor/plugins/devtools/lang/oc.js", - "build/ckeditor/plugins/devtools/lang/sq.js": "/build/ckeditor/plugins/devtools/lang/sq.js", - "build/ckeditor/plugins/devtools/lang/ja.js": "/build/ckeditor/plugins/devtools/lang/ja.js", - "build/ckeditor/plugins/devtools/lang/eo.js": "/build/ckeditor/plugins/devtools/lang/eo.js", - "build/ckeditor/plugins/devtools/lang/gl.js": "/build/ckeditor/plugins/devtools/lang/gl.js", - "build/ckeditor/plugins/devtools/lang/pt-br.js": "/build/ckeditor/plugins/devtools/lang/pt-br.js", - "build/ckeditor/plugins/find/lang/zh-cn.js": "/build/ckeditor/plugins/find/lang/zh-cn.js", - "build/ckeditor/plugins/templates/lang/pt-br.js": "/build/ckeditor/plugins/templates/lang/pt-br.js", - "build/ckeditor/plugins/devtools/lang/ro.js": "/build/ckeditor/plugins/devtools/lang/ro.js", - "build/ckeditor/plugins/devtools/lang/lt.js": "/build/ckeditor/plugins/devtools/lang/lt.js", - "build/ckeditor/plugins/devtools/lang/sr-latn.js": "/build/ckeditor/plugins/devtools/lang/sr-latn.js", - "build/ckeditor/plugins/mathjax/lang/bg.js": "/build/ckeditor/plugins/mathjax/lang/bg.js", - "build/ckeditor/plugins/devtools/lang/ko.js": "/build/ckeditor/plugins/devtools/lang/ko.js", - "build/ckeditor/plugins/templates/lang/tt.js": "/build/ckeditor/plugins/templates/lang/tt.js", - "build/ckeditor/plugins/devtools/lang/lv.js": "/build/ckeditor/plugins/devtools/lang/lv.js", - "build/ckeditor/plugins/devtools/lang/hr.js": "/build/ckeditor/plugins/devtools/lang/hr.js", - "build/ckeditor/plugins/devtools/lang/pl.js": "/build/ckeditor/plugins/devtools/lang/pl.js", - "build/ckeditor/plugins/templates/lang/fo.js": "/build/ckeditor/plugins/templates/lang/fo.js", - "build/ckeditor/plugins/devtools/lang/fi.js": "/build/ckeditor/plugins/devtools/lang/fi.js", - "build/ckeditor/plugins/devtools/lang/da.js": "/build/ckeditor/plugins/devtools/lang/da.js", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealigncenter.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealigncenter.png", - "build/ckeditor/plugins/mathjax/lang/el.js": "/build/ckeditor/plugins/mathjax/lang/el.js", - "build/ckeditor/plugins/devtools/lang/cy.js": "/build/ckeditor/plugins/devtools/lang/cy.js", - "build/ckeditor/plugins/devtools/lang/it.js": "/build/ckeditor/plugins/devtools/lang/it.js", - "build/ckeditor/plugins/justify/icons/justifyright.png": "/build/ckeditor/plugins/justify/icons/justifyright.png", - "build/ckeditor/plugins/templates/lang/lt.js": "/build/ckeditor/plugins/templates/lang/lt.js", - "build/ckeditor/plugins/templates/lang/tr.js": "/build/ckeditor/plugins/templates/lang/tr.js", - "build/ckeditor/plugins/mathjax/lang/zh-cn.js": "/build/ckeditor/plugins/mathjax/lang/zh-cn.js", - "build/ckeditor/plugins/templates/lang/he.js": "/build/ckeditor/plugins/templates/lang/he.js", - "build/ckeditor/plugins/devtools/lang/de-ch.js": "/build/ckeditor/plugins/devtools/lang/de-ch.js", - "build/ckeditor/plugins/devtools/lang/en-gb.js": "/build/ckeditor/plugins/devtools/lang/en-gb.js", - "build/ckeditor/plugins/devtools/lang/nb.js": "/build/ckeditor/plugins/devtools/lang/nb.js", - "build/ckeditor/plugins/devtools/lang/no.js": "/build/ckeditor/plugins/devtools/lang/no.js", - "build/ckeditor/plugins/devtools/lang/sk.js": "/build/ckeditor/plugins/devtools/lang/sk.js", - "build/ckeditor/plugins/devtools/lang/sl.js": "/build/ckeditor/plugins/devtools/lang/sl.js", - "build/ckeditor/plugins/devtools/lang/zh-cn.js": "/build/ckeditor/plugins/devtools/lang/zh-cn.js", - "build/ckeditor/plugins/iframe/lang/km.js": "/build/ckeditor/plugins/iframe/lang/km.js", - "build/ckeditor/plugins/devtools/lang/cs.js": "/build/ckeditor/plugins/devtools/lang/cs.js", - "build/ckeditor/plugins/devtools/lang/en-au.js": "/build/ckeditor/plugins/devtools/lang/en-au.js", - "build/ckeditor/plugins/devtools/lang/vi.js": "/build/ckeditor/plugins/devtools/lang/vi.js", - "build/ckeditor/plugins/justify/icons/justifyleft.png": "/build/ckeditor/plugins/justify/icons/justifyleft.png", - "build/ckeditor/plugins/templates/lang/ca.js": "/build/ckeditor/plugins/templates/lang/ca.js", - "build/ckeditor/plugins/devtools/lang/de.js": "/build/ckeditor/plugins/devtools/lang/de.js", - "build/ckeditor/plugins/devtools/lang/tr.js": "/build/ckeditor/plugins/devtools/lang/tr.js", - "build/ckeditor/plugins/templates/lang/es.js": "/build/ckeditor/plugins/templates/lang/es.js", - "build/ckeditor/plugins/templates/lang/ug.js": "/build/ckeditor/plugins/templates/lang/ug.js", - "build/ckeditor/plugins/devtools/lang/en.js": "/build/ckeditor/plugins/devtools/lang/en.js", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignleft.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignleft.png", - "build/ckeditor/plugins/mathjax/lang/uk.js": "/build/ckeditor/plugins/mathjax/lang/uk.js", - "build/ckeditor/plugins/templates/lang/sr-latn.js": "/build/ckeditor/plugins/templates/lang/sr-latn.js", - "build/ckeditor/plugins/devtools/lang/hu.js": "/build/ckeditor/plugins/devtools/lang/hu.js", - "build/ckeditor/plugins/iframe/lang/ka.js": "/build/ckeditor/plugins/iframe/lang/ka.js", - "build/ckeditor/plugins/devtools/lang/et.js": "/build/ckeditor/plugins/devtools/lang/et.js", - "build/ckeditor/plugins/devtools/lang/nl.js": "/build/ckeditor/plugins/devtools/lang/nl.js", - "build/ckeditor/plugins/devtools/lang/sv.js": "/build/ckeditor/plugins/devtools/lang/sv.js", - "build/ckeditor/plugins/devtools/lang/id.js": "/build/ckeditor/plugins/devtools/lang/id.js", - "build/ckeditor/plugins/devtools/lang/zh.js": "/build/ckeditor/plugins/devtools/lang/zh.js", - "build/ckeditor/plugins/templates/lang/pl.js": "/build/ckeditor/plugins/templates/lang/pl.js", - "build/ckeditor/plugins/autoembed/lang/km.js": "/build/ckeditor/plugins/autoembed/lang/km.js", - "build/ckeditor/plugins/templates/lang/da.js": "/build/ckeditor/plugins/templates/lang/da.js", - "build/ckeditor/plugins/templates/lang/is.js": "/build/ckeditor/plugins/templates/lang/is.js", - "build/ckeditor/plugins/templates/lang/cs.js": "/build/ckeditor/plugins/templates/lang/cs.js", - "build/ckeditor/plugins/mathjax/lang/sr.js": "/build/ckeditor/plugins/mathjax/lang/sr.js", - "build/ckeditor/plugins/placeholder/lang/ro.js": "/build/ckeditor/plugins/placeholder/lang/ro.js", - "build/ckeditor/plugins/templates/lang/ar.js": "/build/ckeditor/plugins/templates/lang/ar.js", - "build/ckeditor/plugins/templates/lang/lv.js": "/build/ckeditor/plugins/templates/lang/lv.js", - "build/ckeditor/plugins/templates/lang/hu.js": "/build/ckeditor/plugins/templates/lang/hu.js", - "build/ckeditor/plugins/templates/lang/sl.js": "/build/ckeditor/plugins/templates/lang/sl.js", - "build/ckeditor/plugins/iframe/lang/uk.js": "/build/ckeditor/plugins/iframe/lang/uk.js", - "build/ckeditor/plugins/font/lang/el.js": "/build/ckeditor/plugins/font/lang/el.js", - "build/ckeditor/plugins/font/lang/km.js": "/build/ckeditor/plugins/font/lang/km.js", - "build/ckeditor/plugins/mathjax/lang/fa.js": "/build/ckeditor/plugins/mathjax/lang/fa.js", - "build/ckeditor/plugins/templates/lang/nl.js": "/build/ckeditor/plugins/templates/lang/nl.js", - "build/ckeditor/plugins/iframe/lang/ru.js": "/build/ckeditor/plugins/iframe/lang/ru.js", - "build/ckeditor/plugins/mathjax/lang/ru.js": "/build/ckeditor/plugins/mathjax/lang/ru.js", - "build/ckeditor/plugins/copyformatting/lang/sk.js": "/build/ckeditor/plugins/copyformatting/lang/sk.js", - "build/ckeditor/plugins/justify/icons/justifyblock.png": "/build/ckeditor/plugins/justify/icons/justifyblock.png", - "build/ckeditor/plugins/copyformatting/lang/ko.js": "/build/ckeditor/plugins/copyformatting/lang/ko.js", - "build/ckeditor/plugins/copyformatting/lang/nl.js": "/build/ckeditor/plugins/copyformatting/lang/nl.js", - "build/ckeditor/plugins/iframe/lang/gu.js": "/build/ckeditor/plugins/iframe/lang/gu.js", - "build/ckeditor/plugins/iframe/lang/ug.js": "/build/ckeditor/plugins/iframe/lang/ug.js", - "build/ckeditor/plugins/templates/lang/sq.js": "/build/ckeditor/plugins/templates/lang/sq.js", - "build/ckeditor/plugins/copyformatting/lang/cs.js": "/build/ckeditor/plugins/copyformatting/lang/cs.js", - "build/ckeditor/plugins/iframe/lang/eo.js": "/build/ckeditor/plugins/iframe/lang/eo.js", - "build/ckeditor/plugins/templates/lang/sv.js": "/build/ckeditor/plugins/templates/lang/sv.js", - "build/ckeditor/plugins/iframe/lang/oc.js": "/build/ckeditor/plugins/iframe/lang/oc.js", - "build/ckeditor/plugins/copyformatting/lang/pl.js": "/build/ckeditor/plugins/copyformatting/lang/pl.js", - "build/ckeditor/plugins/mathjax/lang/ku.js": "/build/ckeditor/plugins/mathjax/lang/ku.js", - "build/ckeditor/plugins/copyformatting/lang/de-ch.js": "/build/ckeditor/plugins/copyformatting/lang/de-ch.js", - "build/ckeditor/plugins/font/lang/si.js": "/build/ckeditor/plugins/font/lang/si.js", - "build/ckeditor/plugins/iframe/lang/fr.js": "/build/ckeditor/plugins/iframe/lang/fr.js", - "build/ckeditor/plugins/templates/lang/es-mx.js": "/build/ckeditor/plugins/templates/lang/es-mx.js", - "build/ckeditor/plugins/mathjax/lang/ko.js": "/build/ckeditor/plugins/mathjax/lang/ko.js", - "build/ckeditor/plugins/templates/lang/ms.js": "/build/ckeditor/plugins/templates/lang/ms.js", - "build/ckeditor/plugins/iframe/lang/sr.js": "/build/ckeditor/plugins/iframe/lang/sr.js", - "build/ckeditor/plugins/templates/lang/af.js": "/build/ckeditor/plugins/templates/lang/af.js", - "build/ckeditor/plugins/copyformatting/lang/de.js": "/build/ckeditor/plugins/copyformatting/lang/de.js", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignright.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimagealignright.png", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimageside.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimageside.png", - "build/ckeditor/plugins/iframe/lang/si.js": "/build/ckeditor/plugins/iframe/lang/si.js", - "build/ckeditor/plugins/copyformatting/lang/ar.js": "/build/ckeditor/plugins/copyformatting/lang/ar.js", - "build/ckeditor/plugins/copyformatting/lang/sr-latn.js": "/build/ckeditor/plugins/copyformatting/lang/sr-latn.js", - "build/ckeditor/plugins/iframe/lang/he.js": "/build/ckeditor/plugins/iframe/lang/he.js", - "build/ckeditor/plugins/mathjax/lang/ar.js": "/build/ckeditor/plugins/mathjax/lang/ar.js", - "build/ckeditor/plugins/copyformatting/lang/az.js": "/build/ckeditor/plugins/copyformatting/lang/az.js", - "build/ckeditor/plugins/templates/lang/et.js": "/build/ckeditor/plugins/templates/lang/et.js", - "build/ckeditor/plugins/imagebase/lang/bg.js": "/build/ckeditor/plugins/imagebase/lang/bg.js", - "build/ckeditor/plugins/templates/lang/az.js": "/build/ckeditor/plugins/templates/lang/az.js", - "build/ckeditor/plugins/templates/lang/eo.js": "/build/ckeditor/plugins/templates/lang/eo.js", - "build/ckeditor/plugins/copyformatting/lang/hr.js": "/build/ckeditor/plugins/copyformatting/lang/hr.js", - "build/ckeditor/plugins/copyformatting/lang/it.js": "/build/ckeditor/plugins/copyformatting/lang/it.js", - "build/ckeditor/plugins/templates/lang/fr.js": "/build/ckeditor/plugins/templates/lang/fr.js", - "build/ckeditor/plugins/imagebase/lang/ru.js": "/build/ckeditor/plugins/imagebase/lang/ru.js", - "build/ckeditor/plugins/copyformatting/lang/hu.js": "/build/ckeditor/plugins/copyformatting/lang/hu.js", - "build/ckeditor/plugins/templates/lang/fr-ca.js": "/build/ckeditor/plugins/templates/lang/fr-ca.js", - "build/ckeditor/plugins/copyformatting/lang/sv.js": "/build/ckeditor/plugins/copyformatting/lang/sv.js", - "build/ckeditor/plugins/language/lang/el.js": "/build/ckeditor/plugins/language/lang/el.js", - "build/ckeditor/plugins/language/lang/km.js": "/build/ckeditor/plugins/language/lang/km.js", - "build/ckeditor/plugins/language/lang/uk.js": "/build/ckeditor/plugins/language/lang/uk.js", - "build/ckeditor/plugins/templates/lang/oc.js": "/build/ckeditor/plugins/templates/lang/oc.js", - "build/ckeditor/plugins/copyformatting/lang/tr.js": "/build/ckeditor/plugins/copyformatting/lang/tr.js", - "build/ckeditor/plugins/iframe/lang/bg.js": "/build/ckeditor/plugins/iframe/lang/bg.js", - "build/ckeditor/plugins/templates/lang/hr.js": "/build/ckeditor/plugins/templates/lang/hr.js", - "build/ckeditor/plugins/language/lang/ku.js": "/build/ckeditor/plugins/language/lang/ku.js", - "build/ckeditor/plugins/language/lang/ru.js": "/build/ckeditor/plugins/language/lang/ru.js", - "build/ckeditor/plugins/copyformatting/lang/pt-br.js": "/build/ckeditor/plugins/copyformatting/lang/pt-br.js", - "build/ckeditor/plugins/imagebase/lang/el.js": "/build/ckeditor/plugins/imagebase/lang/el.js", - "build/ckeditor/plugins/imagebase/lang/uk.js": "/build/ckeditor/plugins/imagebase/lang/uk.js", - "build/ckeditor/plugins/language/lang/sr.js": "/build/ckeditor/plugins/language/lang/sr.js", - "build/ckeditor/plugins/bidi/lang/ka.js": "/build/ckeditor/plugins/bidi/lang/ka.js", - "build/ckeditor/plugins/imagebase/lang/ug.js": "/build/ckeditor/plugins/imagebase/lang/ug.js", - "build/ckeditor/plugins/templates/lang/de-ch.js": "/build/ckeditor/plugins/templates/lang/de-ch.js", - "build/ckeditor/plugins/templates/lang/sk.js": "/build/ckeditor/plugins/templates/lang/sk.js", - "build/ckeditor/plugins/copyformatting/lang/fr.js": "/build/ckeditor/plugins/copyformatting/lang/fr.js", - "build/ckeditor/plugins/copyformatting/lang/gl.js": "/build/ckeditor/plugins/copyformatting/lang/gl.js", - "build/ckeditor/plugins/copyformatting/lang/nb.js": "/build/ckeditor/plugins/copyformatting/lang/nb.js", - "build/ckeditor/plugins/font/lang/mn.js": "/build/ckeditor/plugins/font/lang/mn.js", - "build/ckeditor/plugins/language/lang/ug.js": "/build/ckeditor/plugins/language/lang/ug.js", - "build/ckeditor/plugins/language/lang/vi.js": "/build/ckeditor/plugins/language/lang/vi.js", - "build/ckeditor/plugins/mathjax/lang/oc.js": "/build/ckeditor/plugins/mathjax/lang/oc.js", - "build/ckeditor/plugins/imagebase/lang/fa.js": "/build/ckeditor/plugins/imagebase/lang/fa.js", - "build/ckeditor/plugins/mathjax/lang/he.js": "/build/ckeditor/plugins/mathjax/lang/he.js", - "build/ckeditor/plugins/smiley/lang/km.js": "/build/ckeditor/plugins/smiley/lang/km.js", - "build/ckeditor/plugins/templates/lang/ko.js": "/build/ckeditor/plugins/templates/lang/ko.js", - "build/ckeditor/plugins/copyformatting/lang/lv.js": "/build/ckeditor/plugins/copyformatting/lang/lv.js", - "build/ckeditor/plugins/mathjax/lang/fr.js": "/build/ckeditor/plugins/mathjax/lang/fr.js", - "build/ckeditor/plugins/templates/lang/de.js": "/build/ckeditor/plugins/templates/lang/de.js", - "build/ckeditor/plugins/colordialog/lang/ka.js": "/build/ckeditor/plugins/colordialog/lang/ka.js", - "build/ckeditor/plugins/font/lang/ka.js": "/build/ckeditor/plugins/font/lang/ka.js", - "build/ckeditor/plugins/templates/lang/eu.js": "/build/ckeditor/plugins/templates/lang/eu.js", - "build/ckeditor/plugins/copyformatting/lang/da.js": "/build/ckeditor/plugins/copyformatting/lang/da.js", - "build/ckeditor/plugins/language/lang/bg.js": "/build/ckeditor/plugins/language/lang/bg.js", - "build/ckeditor/plugins/mathjax/lang/de.js": "/build/ckeditor/plugins/mathjax/lang/de.js", - "build/ckeditor/plugins/mathjax/lang/ja.js": "/build/ckeditor/plugins/mathjax/lang/ja.js", - "build/ckeditor/plugins/mathjax/lang/pl.js": "/build/ckeditor/plugins/mathjax/lang/pl.js", - "build/ckeditor/plugins/templates/lang/it.js": "/build/ckeditor/plugins/templates/lang/it.js", - "build/ckeditor/plugins/copyformatting/lang/pt.js": "/build/ckeditor/plugins/copyformatting/lang/pt.js", - "build/ckeditor/plugins/imagebase/lang/ku.js": "/build/ckeditor/plugins/imagebase/lang/ku.js", - "build/ckeditor/plugins/language/lang/tt.js": "/build/ckeditor/plugins/language/lang/tt.js", - "build/ckeditor/plugins/mathjax/lang/es-mx.js": "/build/ckeditor/plugins/mathjax/lang/es-mx.js", - "build/ckeditor/plugins/copyformatting/lang/et.js": "/build/ckeditor/plugins/copyformatting/lang/et.js", - "build/ckeditor/plugins/font/lang/gu.js": "/build/ckeditor/plugins/font/lang/gu.js", - "build/ckeditor/plugins/iframe/lang/tr.js": "/build/ckeditor/plugins/iframe/lang/tr.js", - "build/ckeditor/plugins/language/lang/hu.js": "/build/ckeditor/plugins/language/lang/hu.js", - "build/ckeditor/plugins/language/lang/ro.js": "/build/ckeditor/plugins/language/lang/ro.js", - "build/ckeditor/plugins/copyformatting/lang/eu.js": "/build/ckeditor/plugins/copyformatting/lang/eu.js", - "build/ckeditor/plugins/copyformatting/lang/sq.js": "/build/ckeditor/plugins/copyformatting/lang/sq.js", - "build/ckeditor/plugins/imagebase/lang/fr.js": "/build/ckeditor/plugins/imagebase/lang/fr.js", - "build/ckeditor/plugins/imagebase/lang/it.js": "/build/ckeditor/plugins/imagebase/lang/it.js", - "build/ckeditor/plugins/mathjax/lang/gl.js": "/build/ckeditor/plugins/mathjax/lang/gl.js", - "build/ckeditor/plugins/mathjax/lang/tr.js": "/build/ckeditor/plugins/mathjax/lang/tr.js", - "build/ckeditor/plugins/templates/lang/pt.js": "/build/ckeditor/plugins/templates/lang/pt.js", - "build/ckeditor/plugins/copyformatting/lang/vi.js": "/build/ckeditor/plugins/copyformatting/lang/vi.js", - "build/ckeditor/plugins/iframe/lang/az.js": "/build/ckeditor/plugins/iframe/lang/az.js", - "build/ckeditor/plugins/mathjax/lang/az.js": "/build/ckeditor/plugins/mathjax/lang/az.js", - "build/ckeditor/plugins/mathjax/lang/sq.js": "/build/ckeditor/plugins/mathjax/lang/sq.js", - "build/ckeditor/plugins/mathjax/lang/sr-latn.js": "/build/ckeditor/plugins/mathjax/lang/sr-latn.js", - "build/ckeditor/plugins/iframe/lang/ja.js": "/build/ckeditor/plugins/iframe/lang/ja.js", - "build/ckeditor/plugins/imagebase/lang/sr.js": "/build/ckeditor/plugins/imagebase/lang/sr.js", - "build/ckeditor/plugins/language/lang/de-ch.js": "/build/ckeditor/plugins/language/lang/de-ch.js", - "build/ckeditor/plugins/language/lang/fr.js": "/build/ckeditor/plugins/language/lang/fr.js", - "build/ckeditor/plugins/templates/lang/en-au.js": "/build/ckeditor/plugins/templates/lang/en-au.js", - "build/ckeditor/plugins/templates/lang/en-ca.js": "/build/ckeditor/plugins/templates/lang/en-ca.js", - "build/ckeditor/plugins/templates/lang/en-gb.js": "/build/ckeditor/plugins/templates/lang/en-gb.js", - "build/ckeditor/plugins/copyformatting/lang/eo.js": "/build/ckeditor/plugins/copyformatting/lang/eo.js", - "build/ckeditor/plugins/imagebase/lang/az.js": "/build/ckeditor/plugins/imagebase/lang/az.js", - "build/ckeditor/plugins/language/lang/gl.js": "/build/ckeditor/plugins/language/lang/gl.js", - "build/ckeditor/plugins/language/lang/ko.js": "/build/ckeditor/plugins/language/lang/ko.js", - "build/ckeditor/plugins/mathjax/lang/cs.js": "/build/ckeditor/plugins/mathjax/lang/cs.js", - "build/ckeditor/plugins/mathjax/lang/fi.js": "/build/ckeditor/plugins/mathjax/lang/fi.js", - "build/ckeditor/plugins/autoembed/lang/uk.js": "/build/ckeditor/plugins/autoembed/lang/uk.js", - "build/ckeditor/plugins/iframe/images/placeholder.png": "/build/ckeditor/plugins/iframe/images/placeholder.png", - "build/ckeditor/plugins/language/lang/pt-br.js": "/build/ckeditor/plugins/language/lang/pt-br.js", - "build/ckeditor/plugins/language/lang/sq.js": "/build/ckeditor/plugins/language/lang/sq.js", - "build/ckeditor/plugins/mathjax/lang/pt-br.js": "/build/ckeditor/plugins/mathjax/lang/pt-br.js", - "build/ckeditor/plugins/mathjax/lang/pt.js": "/build/ckeditor/plugins/mathjax/lang/pt.js", - "build/ckeditor/plugins/templates/lang/gl.js": "/build/ckeditor/plugins/templates/lang/gl.js", - "build/ckeditor/plugins/imagebase/lang/pt-br.js": "/build/ckeditor/plugins/imagebase/lang/pt-br.js", - "build/ckeditor/plugins/language/lang/ar.js": "/build/ckeditor/plugins/language/lang/ar.js", - "build/ckeditor/plugins/language/lang/de.js": "/build/ckeditor/plugins/language/lang/de.js", - "build/ckeditor/plugins/language/lang/es-mx.js": "/build/ckeditor/plugins/language/lang/es-mx.js", - "build/ckeditor/plugins/language/lang/fa.js": "/build/ckeditor/plugins/language/lang/fa.js", - "build/ckeditor/plugins/mathjax/lang/ca.js": "/build/ckeditor/plugins/mathjax/lang/ca.js", - "build/ckeditor/plugins/mathjax/lang/lv.js": "/build/ckeditor/plugins/mathjax/lang/lv.js", - "build/ckeditor/plugins/mathjax/lang/sk.js": "/build/ckeditor/plugins/mathjax/lang/sk.js", - "build/ckeditor/plugins/templates/lang/bs.js": "/build/ckeditor/plugins/templates/lang/bs.js", - "build/ckeditor/plugins/templates/lang/cy.js": "/build/ckeditor/plugins/templates/lang/cy.js", - "build/ckeditor/plugins/templates/lang/en.js": "/build/ckeditor/plugins/templates/lang/en.js", - "build/ckeditor/plugins/templates/lang/mk.js": "/build/ckeditor/plugins/templates/lang/mk.js", - "build/ckeditor/plugins/copyformatting/lang/oc.js": "/build/ckeditor/plugins/copyformatting/lang/oc.js", - "build/ckeditor/plugins/copyformatting/lang/ro.js": "/build/ckeditor/plugins/copyformatting/lang/ro.js", - "build/ckeditor/plugins/imagebase/lang/nl.js": "/build/ckeditor/plugins/imagebase/lang/nl.js", - "build/ckeditor/plugins/language/lang/lt.js": "/build/ckeditor/plugins/language/lang/lt.js", - "build/ckeditor/plugins/language/lang/oc.js": "/build/ckeditor/plugins/language/lang/oc.js", - "build/ckeditor/plugins/copyformatting/lang/en-au.js": "/build/ckeditor/plugins/copyformatting/lang/en-au.js", - "build/ckeditor/plugins/iframe/lang/ar.js": "/build/ckeditor/plugins/iframe/lang/ar.js", - "build/ckeditor/plugins/imagebase/lang/gl.js": "/build/ckeditor/plugins/imagebase/lang/gl.js", - "build/ckeditor/plugins/language/lang/sk.js": "/build/ckeditor/plugins/language/lang/sk.js", - "build/ckeditor/plugins/mathjax/lang/de-ch.js": "/build/ckeditor/plugins/mathjax/lang/de-ch.js", - "build/ckeditor/plugins/templates/lang/nb.js": "/build/ckeditor/plugins/templates/lang/nb.js", - "build/ckeditor/plugins/templates/lang/no.js": "/build/ckeditor/plugins/templates/lang/no.js", - "build/ckeditor/plugins/iframe/lang/ko.js": "/build/ckeditor/plugins/iframe/lang/ko.js", - "build/ckeditor/plugins/imagebase/lang/de-ch.js": "/build/ckeditor/plugins/imagebase/lang/de-ch.js", - "build/ckeditor/plugins/imagebase/lang/lt.js": "/build/ckeditor/plugins/imagebase/lang/lt.js", - "build/ckeditor/plugins/imagebase/lang/ro.js": "/build/ckeditor/plugins/imagebase/lang/ro.js", - "build/ckeditor/plugins/language/lang/ca.js": "/build/ckeditor/plugins/language/lang/ca.js", - "build/ckeditor/plugins/language/lang/eu.js": "/build/ckeditor/plugins/language/lang/eu.js", - "build/ckeditor/plugins/language/lang/lv.js": "/build/ckeditor/plugins/language/lang/lv.js", - "build/ckeditor/plugins/language/lang/sr-latn.js": "/build/ckeditor/plugins/language/lang/sr-latn.js", - "build/ckeditor/plugins/mathjax/lang/hr.js": "/build/ckeditor/plugins/mathjax/lang/hr.js", - "build/ckeditor/plugins/mathjax/lang/id.js": "/build/ckeditor/plugins/mathjax/lang/id.js", - "build/ckeditor/plugins/imagebase/lang/hu.js": "/build/ckeditor/plugins/imagebase/lang/hu.js", - "build/ckeditor/plugins/language/lang/en-au.js": "/build/ckeditor/plugins/language/lang/en-au.js", - "build/ckeditor/plugins/language/lang/en-gb.js": "/build/ckeditor/plugins/language/lang/en-gb.js", - "build/ckeditor/plugins/language/lang/fo.js": "/build/ckeditor/plugins/language/lang/fo.js", - "build/ckeditor/plugins/language/lang/ja.js": "/build/ckeditor/plugins/language/lang/ja.js", - "build/ckeditor/plugins/language/lang/nl.js": "/build/ckeditor/plugins/language/lang/nl.js", - "build/ckeditor/plugins/mathjax/lang/et.js": "/build/ckeditor/plugins/mathjax/lang/et.js", - "build/ckeditor/plugins/mathjax/lang/sl.js": "/build/ckeditor/plugins/mathjax/lang/sl.js", - "build/ckeditor/plugins/copyformatting/lang/en.js": "/build/ckeditor/plugins/copyformatting/lang/en.js", - "build/ckeditor/plugins/language/lang/cs.js": "/build/ckeditor/plugins/language/lang/cs.js", - "build/ckeditor/plugins/language/lang/eo.js": "/build/ckeditor/plugins/language/lang/eo.js", - "build/ckeditor/plugins/language/lang/es.js": "/build/ckeditor/plugins/language/lang/es.js", - "build/ckeditor/plugins/mathjax/lang/eu.js": "/build/ckeditor/plugins/mathjax/lang/eu.js", - "build/ckeditor/plugins/preview/preview.html": "/build/ckeditor/plugins/preview/preview.html", - "build/ckeditor/plugins/copyformatting/lang/zh.js": "/build/ckeditor/plugins/copyformatting/lang/zh.js", - "build/ckeditor/plugins/imagebase/lang/de.js": "/build/ckeditor/plugins/imagebase/lang/de.js", - "build/ckeditor/plugins/imagebase/lang/lv.js": "/build/ckeditor/plugins/imagebase/lang/lv.js", - "build/ckeditor/plugins/imagebase/lang/pt.js": "/build/ckeditor/plugins/imagebase/lang/pt.js", - "build/ckeditor/plugins/language/lang/it.js": "/build/ckeditor/plugins/language/lang/it.js", - "build/ckeditor/plugins/language/lang/pt.js": "/build/ckeditor/plugins/language/lang/pt.js", - "build/ckeditor/plugins/mathjax/lang/eo.js": "/build/ckeditor/plugins/mathjax/lang/eo.js", - "build/ckeditor/plugins/mathjax/lang/it.js": "/build/ckeditor/plugins/mathjax/lang/it.js", - "build/ckeditor/plugins/templates/lang/fi.js": "/build/ckeditor/plugins/templates/lang/fi.js", - "build/ckeditor/plugins/imagebase/lang/pl.js": "/build/ckeditor/plugins/imagebase/lang/pl.js", - "build/ckeditor/plugins/language/lang/en.js": "/build/ckeditor/plugins/language/lang/en.js", - "build/ckeditor/plugins/language/lang/sl.js": "/build/ckeditor/plugins/language/lang/sl.js", - "build/ckeditor/plugins/language/lang/zh-cn.js": "/build/ckeditor/plugins/language/lang/zh-cn.js", - "build/ckeditor/plugins/autoembed/lang/bg.js": "/build/ckeditor/plugins/autoembed/lang/bg.js", - "build/ckeditor/plugins/iframe/lang/ca.js": "/build/ckeditor/plugins/iframe/lang/ca.js", - "build/ckeditor/plugins/imagebase/lang/sr-latn.js": "/build/ckeditor/plugins/imagebase/lang/sr-latn.js", - "build/ckeditor/plugins/imagebase/lang/tr.js": "/build/ckeditor/plugins/imagebase/lang/tr.js", - "build/ckeditor/plugins/language/lang/az.js": "/build/ckeditor/plugins/language/lang/az.js", - "build/ckeditor/plugins/language/lang/he.js": "/build/ckeditor/plugins/language/lang/he.js", - "build/ckeditor/plugins/language/lang/sv.js": "/build/ckeditor/plugins/language/lang/sv.js", - "build/ckeditor/plugins/mathjax/lang/vi.js": "/build/ckeditor/plugins/mathjax/lang/vi.js", - "build/ckeditor/plugins/colordialog/lang/si.js": "/build/ckeditor/plugins/colordialog/lang/si.js", - "build/ckeditor/plugins/iframe/lang/fa.js": "/build/ckeditor/plugins/iframe/lang/fa.js", - "build/ckeditor/plugins/iframe/lang/fi.js": "/build/ckeditor/plugins/iframe/lang/fi.js", - "build/ckeditor/plugins/iframe/lang/gl.js": "/build/ckeditor/plugins/iframe/lang/gl.js", - "build/ckeditor/plugins/imagebase/lang/en-au.js": "/build/ckeditor/plugins/imagebase/lang/en-au.js", - "build/ckeditor/plugins/imagebase/lang/et.js": "/build/ckeditor/plugins/imagebase/lang/et.js", - "build/ckeditor/plugins/imagebase/lang/sk.js": "/build/ckeditor/plugins/imagebase/lang/sk.js", - "build/ckeditor/plugins/language/lang/hr.js": "/build/ckeditor/plugins/language/lang/hr.js", - "build/ckeditor/plugins/templates/lang/id.js": "/build/ckeditor/plugins/templates/lang/id.js", - "build/ckeditor/plugins/autoembed/lang/el.js": "/build/ckeditor/plugins/autoembed/lang/el.js", - "build/ckeditor/plugins/iframe/lang/es.js": "/build/ckeditor/plugins/iframe/lang/es.js", - "build/ckeditor/plugins/iframe/lang/pl.js": "/build/ckeditor/plugins/iframe/lang/pl.js", - "build/ckeditor/plugins/imagebase/lang/cs.js": "/build/ckeditor/plugins/imagebase/lang/cs.js", - "build/ckeditor/plugins/imagebase/lang/zh-cn.js": "/build/ckeditor/plugins/imagebase/lang/zh-cn.js", - "build/ckeditor/plugins/imagebase/lang/zh.js": "/build/ckeditor/plugins/imagebase/lang/zh.js", - "build/ckeditor/plugins/language/lang/et.js": "/build/ckeditor/plugins/language/lang/et.js", - "build/ckeditor/plugins/language/lang/pl.js": "/build/ckeditor/plugins/language/lang/pl.js", - "build/ckeditor/plugins/language/lang/zh.js": "/build/ckeditor/plugins/language/lang/zh.js", - "build/ckeditor/plugins/mathjax/lang/lt.js": "/build/ckeditor/plugins/mathjax/lang/lt.js", - "build/ckeditor/plugins/easyimage/icons/hidpi/easyimagefull.png": "/build/ckeditor/plugins/easyimage/icons/hidpi/easyimagefull.png", - "build/ckeditor/plugins/imagebase/lang/hr.js": "/build/ckeditor/plugins/imagebase/lang/hr.js", - "build/ckeditor/plugins/imagebase/lang/nb.js": "/build/ckeditor/plugins/imagebase/lang/nb.js", - "build/ckeditor/plugins/imagebase/lang/sq.js": "/build/ckeditor/plugins/imagebase/lang/sq.js", - "build/ckeditor/plugins/language/lang/fi.js": "/build/ckeditor/plugins/language/lang/fi.js", - "build/ckeditor/plugins/language/lang/id.js": "/build/ckeditor/plugins/language/lang/id.js", - "build/ckeditor/plugins/language/lang/nb.js": "/build/ckeditor/plugins/language/lang/nb.js", - "build/ckeditor/plugins/language/lang/no.js": "/build/ckeditor/plugins/language/lang/no.js", - "build/ckeditor/plugins/mathjax/lang/ro.js": "/build/ckeditor/plugins/mathjax/lang/ro.js", - "build/ckeditor/plugins/smiley/lang/th.js": "/build/ckeditor/plugins/smiley/lang/th.js", - "build/ckeditor/plugins/copyformatting/lang/es-mx.js": "/build/ckeditor/plugins/copyformatting/lang/es-mx.js", - "build/ckeditor/plugins/imagebase/lang/da.js": "/build/ckeditor/plugins/imagebase/lang/da.js", - "build/ckeditor/plugins/imagebase/lang/en.js": "/build/ckeditor/plugins/imagebase/lang/en.js", - "build/ckeditor/plugins/language/lang/cy.js": "/build/ckeditor/plugins/language/lang/cy.js", - "build/ckeditor/plugins/language/lang/da.js": "/build/ckeditor/plugins/language/lang/da.js", - "build/ckeditor/plugins/mathjax/lang/es.js": "/build/ckeditor/plugins/mathjax/lang/es.js", - "build/ckeditor/plugins/mathjax/lang/nb.js": "/build/ckeditor/plugins/mathjax/lang/nb.js", - "build/ckeditor/plugins/iframe/lang/fr-ca.js": "/build/ckeditor/plugins/iframe/lang/fr-ca.js", - "build/ckeditor/plugins/language/lang/tr.js": "/build/ckeditor/plugins/language/lang/tr.js", - "build/ckeditor/plugins/dialog/styles/dialog.css": "/build/ckeditor/plugins/dialog/styles/dialog.css", - "build/ckeditor/plugins/colordialog/lang/gu.js": "/build/ckeditor/plugins/colordialog/lang/gu.js", - "build/ckeditor/plugins/colordialog/lang/km.js": "/build/ckeditor/plugins/colordialog/lang/km.js", - "build/ckeditor/plugins/imagebase/lang/sv.js": "/build/ckeditor/plugins/imagebase/lang/sv.js", - "build/ckeditor/plugins/mathjax/lang/cy.js": "/build/ckeditor/plugins/mathjax/lang/cy.js", - "build/ckeditor/plugins/mathjax/lang/en-au.js": "/build/ckeditor/plugins/mathjax/lang/en-au.js", - "build/ckeditor/plugins/templates/lang/zh.js": "/build/ckeditor/plugins/templates/lang/zh.js", - "build/ckeditor/plugins/autoembed/lang/fa.js": "/build/ckeditor/plugins/autoembed/lang/fa.js", - "build/ckeditor/plugins/iframe/lang/es-mx.js": "/build/ckeditor/plugins/iframe/lang/es-mx.js", - "build/ckeditor/plugins/iframe/lang/sq.js": "/build/ckeditor/plugins/iframe/lang/sq.js", - "build/ckeditor/plugins/mathjax/lang/da.js": "/build/ckeditor/plugins/mathjax/lang/da.js", - "build/ckeditor/plugins/mathjax/lang/hu.js": "/build/ckeditor/plugins/mathjax/lang/hu.js", - "build/ckeditor/plugins/colordialog/lang/uk.js": "/build/ckeditor/plugins/colordialog/lang/uk.js", - "build/ckeditor/plugins/mathjax/lang/en-gb.js": "/build/ckeditor/plugins/mathjax/lang/en-gb.js", - "build/ckeditor/plugins/mathjax/lang/zh.js": "/build/ckeditor/plugins/mathjax/lang/zh.js", - "build/ckeditor/plugins/font/lang/tt.js": "/build/ckeditor/plugins/font/lang/tt.js", - "build/ckeditor/plugins/mathjax/lang/en.js": "/build/ckeditor/plugins/mathjax/lang/en.js", - "build/ckeditor/plugins/mathjax/lang/no.js": "/build/ckeditor/plugins/mathjax/lang/no.js", - "build/ckeditor/plugins/preview/styles/screen.css": "/build/ckeditor/plugins/preview/styles/screen.css", - "build/ckeditor/plugins/iframe/lang/vi.js": "/build/ckeditor/plugins/iframe/lang/vi.js", - "build/ckeditor/plugins/mathjax/lang/nl.js": "/build/ckeditor/plugins/mathjax/lang/nl.js", - "build/ckeditor/plugins/iframe/lang/pt.js": "/build/ckeditor/plugins/iframe/lang/pt.js", - "build/ckeditor/plugins/iframe/lang/tt.js": "/build/ckeditor/plugins/iframe/lang/tt.js", - "build/ckeditor/plugins/mathjax/lang/sv.js": "/build/ckeditor/plugins/mathjax/lang/sv.js", - "build/ckeditor/plugins/iframe/lang/cs.js": "/build/ckeditor/plugins/iframe/lang/cs.js", - "build/ckeditor/plugins/iframe/lang/eu.js": "/build/ckeditor/plugins/iframe/lang/eu.js", - "build/ckeditor/plugins/mathjax/lang/af.js": "/build/ckeditor/plugins/mathjax/lang/af.js", - "build/ckeditor/plugins/templates/lang/zh-cn.js": "/build/ckeditor/plugins/templates/lang/zh-cn.js", - "build/ckeditor/plugins/autoembed/lang/ku.js": "/build/ckeditor/plugins/autoembed/lang/ku.js", - "build/ckeditor/plugins/font/lang/bg.js": "/build/ckeditor/plugins/font/lang/bg.js", - "build/ckeditor/plugins/autoembed/lang/ru.js": "/build/ckeditor/plugins/autoembed/lang/ru.js", - "build/ckeditor/plugins/bidi/lang/km.js": "/build/ckeditor/plugins/bidi/lang/km.js", - "build/ckeditor/plugins/colordialog/lang/ku.js": "/build/ckeditor/plugins/colordialog/lang/ku.js", - "build/ckeditor/plugins/font/lang/sr.js": "/build/ckeditor/plugins/font/lang/sr.js", - "build/ckeditor/plugins/iframe/lang/hu.js": "/build/ckeditor/plugins/iframe/lang/hu.js", - "build/ckeditor/plugins/iframe/lang/ro.js": "/build/ckeditor/plugins/iframe/lang/ro.js", - "build/ckeditor/plugins/iframe/lang/de-ch.js": "/build/ckeditor/plugins/iframe/lang/de-ch.js", - "build/ckeditor/plugins/colordialog/lang/el.js": "/build/ckeditor/plugins/colordialog/lang/el.js", - "build/ckeditor/plugins/font/lang/th.js": "/build/ckeditor/plugins/font/lang/th.js", - "build/ckeditor/plugins/iframe/lang/no.js": "/build/ckeditor/plugins/iframe/lang/no.js", - "build/ckeditor/plugins/copyformatting/lang/zh-cn.js": "/build/ckeditor/plugins/copyformatting/lang/zh-cn.js", - "build/ckeditor/plugins/iframe/lang/nb.js": "/build/ckeditor/plugins/iframe/lang/nb.js", - "build/ckeditor/plugins/font/lang/ug.js": "/build/ckeditor/plugins/font/lang/ug.js", - "build/ckeditor/plugins/iframe/lang/sr-latn.js": "/build/ckeditor/plugins/iframe/lang/sr-latn.js", - "build/ckeditor/plugins/autoembed/lang/sr.js": "/build/ckeditor/plugins/autoembed/lang/sr.js", - "build/ckeditor/plugins/autoembed/lang/ug.js": "/build/ckeditor/plugins/autoembed/lang/ug.js", - "build/ckeditor/plugins/autoembed/lang/mk.js": "/build/ckeditor/plugins/autoembed/lang/mk.js", - "build/ckeditor/plugins/scayt/CHANGELOG.md": "/build/ckeditor/plugins/scayt/CHANGELOG.md", - "build/ckeditor/plugins/colordialog/lang/ru.js": "/build/ckeditor/plugins/colordialog/lang/ru.js", - "build/ckeditor/plugins/iframe/lang/sk.js": "/build/ckeditor/plugins/iframe/lang/sk.js", - "build/ckeditor/plugins/iframe/lang/pt-br.js": "/build/ckeditor/plugins/iframe/lang/pt-br.js", - "build/ckeditor/plugins/iframe/lang/de.js": "/build/ckeditor/plugins/iframe/lang/de.js", - "build/ckeditor/plugins/iframe/lang/da.js": "/build/ckeditor/plugins/iframe/lang/da.js", - "build/ckeditor/plugins/font/lang/ru.js": "/build/ckeditor/plugins/font/lang/ru.js", - "build/ckeditor/plugins/iframe/lang/hr.js": "/build/ckeditor/plugins/iframe/lang/hr.js", - "build/ckeditor/plugins/widget/images/handle.png": "/build/ckeditor/plugins/widget/images/handle.png", - "build/ckeditor/plugins/font/lang/ku.js": "/build/ckeditor/plugins/font/lang/ku.js", - "build/ckeditor/plugins/iframe/lang/fo.js": "/build/ckeditor/plugins/iframe/lang/fo.js", - "build/ckeditor/plugins/iframe/lang/id.js": "/build/ckeditor/plugins/iframe/lang/id.js", - "build/ckeditor/plugins/colordialog/lang/bg.js": "/build/ckeditor/plugins/colordialog/lang/bg.js", - "build/ckeditor/plugins/iframe/lang/et.js": "/build/ckeditor/plugins/iframe/lang/et.js", - "build/ckeditor/plugins/iframe/lang/cy.js": "/build/ckeditor/plugins/iframe/lang/cy.js", - "build/ckeditor/plugins/iframe/lang/sl.js": "/build/ckeditor/plugins/iframe/lang/sl.js", - "build/ckeditor/plugins/font/lang/ja.js": "/build/ckeditor/plugins/font/lang/ja.js", - "build/ckeditor/plugins/iframe/lang/en-au.js": "/build/ckeditor/plugins/iframe/lang/en-au.js", - "build/ckeditor/plugins/iframe/lang/en-ca.js": "/build/ckeditor/plugins/iframe/lang/en-ca.js", - "build/ckeditor/plugins/iframe/lang/en-gb.js": "/build/ckeditor/plugins/iframe/lang/en-gb.js", - "build/ckeditor/plugins/font/lang/gl.js": "/build/ckeditor/plugins/font/lang/gl.js", - "build/ckeditor/plugins/font/lang/sq.js": "/build/ckeditor/plugins/font/lang/sq.js", - "build/ckeditor/plugins/iframe/lang/it.js": "/build/ckeditor/plugins/iframe/lang/it.js", - "build/ckeditor/plugins/iframe/lang/nl.js": "/build/ckeditor/plugins/iframe/lang/nl.js", - "build/ckeditor/plugins/iframe/lang/sv.js": "/build/ckeditor/plugins/iframe/lang/sv.js", - "build/ckeditor/plugins/pagebreak/lang/gu.js": "/build/ckeditor/plugins/pagebreak/lang/gu.js", - "build/ckeditor/plugins/iframe/lang/lt.js": "/build/ckeditor/plugins/iframe/lang/lt.js", - "build/ckeditor/plugins/smiley/lang/ug.js": "/build/ckeditor/plugins/smiley/lang/ug.js", - "build/ckeditor/plugins/iframe/lang/bn.js": "/build/ckeditor/plugins/iframe/lang/bn.js", - "build/ckeditor/plugins/iframe/lang/bs.js": "/build/ckeditor/plugins/iframe/lang/bs.js", - "build/ckeditor/plugins/iframe/lang/en.js": "/build/ckeditor/plugins/iframe/lang/en.js", - "build/ckeditor/plugins/iframe/lang/hi.js": "/build/ckeditor/plugins/iframe/lang/hi.js", - "build/ckeditor/plugins/iframe/lang/is.js": "/build/ckeditor/plugins/iframe/lang/is.js", - "build/ckeditor/plugins/iframe/lang/mk.js": "/build/ckeditor/plugins/iframe/lang/mk.js", - "build/ckeditor/plugins/iframe/lang/mn.js": "/build/ckeditor/plugins/iframe/lang/mn.js", - "build/ckeditor/plugins/iframe/lang/ms.js": "/build/ckeditor/plugins/iframe/lang/ms.js", - "build/ckeditor/plugins/iframe/lang/th.js": "/build/ckeditor/plugins/iframe/lang/th.js", - "build/ckeditor/plugins/bidi/lang/el.js": "/build/ckeditor/plugins/bidi/lang/el.js", - "build/ckeditor/plugins/bidi/lang/gu.js": "/build/ckeditor/plugins/bidi/lang/gu.js", - "build/ckeditor/plugins/font/lang/ca.js": "/build/ckeditor/plugins/font/lang/ca.js", - "build/ckeditor/plugins/smiley/lang/vi.js": "/build/ckeditor/plugins/smiley/lang/vi.js", - "build/ckeditor/plugins/smiley/lang/ka.js": "/build/ckeditor/plugins/smiley/lang/ka.js", - "build/ckeditor/plugins/colordialog/lang/tt.js": "/build/ckeditor/plugins/colordialog/lang/tt.js", - "build/ckeditor/plugins/iframe/lang/lv.js": "/build/ckeditor/plugins/iframe/lang/lv.js", - "build/ckeditor/plugins/font/lang/ar.js": "/build/ckeditor/plugins/font/lang/ar.js", - "build/ckeditor/plugins/font/lang/uk.js": "/build/ckeditor/plugins/font/lang/uk.js", - "build/ckeditor/plugins/font/lang/da.js": "/build/ckeditor/plugins/font/lang/da.js", - "build/ckeditor/plugins/font/lang/hi.js": "/build/ckeditor/plugins/font/lang/hi.js", - "build/ckeditor/plugins/font/lang/pt.js": "/build/ckeditor/plugins/font/lang/pt.js", - "build/ckeditor/plugins/iframe/lang/zh-cn.js": "/build/ckeditor/plugins/iframe/lang/zh-cn.js", - "build/ckeditor/plugins/pagebreak/lang/km.js": "/build/ckeditor/plugins/pagebreak/lang/km.js", - "build/ckeditor/plugins/font/lang/eu.js": "/build/ckeditor/plugins/font/lang/eu.js", - "build/ckeditor/plugins/font/lang/fa.js": "/build/ckeditor/plugins/font/lang/fa.js", - "build/ckeditor/plugins/sourcedialog/lang/gu.js": "/build/ckeditor/plugins/sourcedialog/lang/gu.js", - "build/ckeditor/plugins/colordialog/lang/fa.js": "/build/ckeditor/plugins/colordialog/lang/fa.js", - "build/ckeditor/plugins/iframe/lang/af.js": "/build/ckeditor/plugins/iframe/lang/af.js", - "build/ckeditor/plugins/iframe/lang/zh.js": "/build/ckeditor/plugins/iframe/lang/zh.js", - "build/ckeditor/plugins/pagebreak/lang/si.js": "/build/ckeditor/plugins/pagebreak/lang/si.js", - "build/ckeditor/plugins/font/lang/de-ch.js": "/build/ckeditor/plugins/font/lang/de-ch.js", - "build/ckeditor/plugins/magicline/images/hidpi/icon.png": "/build/ckeditor/plugins/magicline/images/hidpi/icon.png", - "build/ckeditor/plugins/autoembed/lang/ja.js": "/build/ckeditor/plugins/autoembed/lang/ja.js", - "build/ckeditor/plugins/bidi/lang/si.js": "/build/ckeditor/plugins/bidi/lang/si.js", - "build/ckeditor/plugins/font/lang/az.js": "/build/ckeditor/plugins/font/lang/az.js", - "build/ckeditor/plugins/font/lang/bn.js": "/build/ckeditor/plugins/font/lang/bn.js", - "build/ckeditor/plugins/font/lang/nl.js": "/build/ckeditor/plugins/font/lang/nl.js", - "build/ckeditor/plugins/colordialog/lang/sr.js": "/build/ckeditor/plugins/colordialog/lang/sr.js", - "build/ckeditor/plugins/font/lang/de.js": "/build/ckeditor/plugins/font/lang/de.js", - "build/ckeditor/plugins/font/lang/is.js": "/build/ckeditor/plugins/font/lang/is.js", - "build/ckeditor/plugins/smiley/lang/si.js": "/build/ckeditor/plugins/smiley/lang/si.js", - "build/ckeditor/plugins/colordialog/lang/ar.js": "/build/ckeditor/plugins/colordialog/lang/ar.js", - "build/ckeditor/plugins/font/lang/es-mx.js": "/build/ckeditor/plugins/font/lang/es-mx.js", - "build/ckeditor/plugins/font/lang/it.js": "/build/ckeditor/plugins/font/lang/it.js", - "build/ckeditor/plugins/font/lang/oc.js": "/build/ckeditor/plugins/font/lang/oc.js", - "build/ckeditor/plugins/autoembed/lang/de-ch.js": "/build/ckeditor/plugins/autoembed/lang/de-ch.js", - "build/ckeditor/plugins/font/lang/sk.js": "/build/ckeditor/plugins/font/lang/sk.js", - "build/ckeditor/plugins/imagebase/styles/imagebase.css": "/build/ckeditor/plugins/imagebase/styles/imagebase.css", - "build/ckeditor/plugins/autoembed/lang/ar.js": "/build/ckeditor/plugins/autoembed/lang/ar.js", - "build/ckeditor/plugins/font/lang/fr.js": "/build/ckeditor/plugins/font/lang/fr.js", - "build/ckeditor/plugins/autoembed/lang/hu.js": "/build/ckeditor/plugins/autoembed/lang/hu.js", - "build/ckeditor/plugins/font/lang/sr-latn.js": "/build/ckeditor/plugins/font/lang/sr-latn.js", - "build/ckeditor/plugins/autoembed/lang/de.js": "/build/ckeditor/plugins/autoembed/lang/de.js", - "build/ckeditor/plugins/autoembed/lang/lt.js": "/build/ckeditor/plugins/autoembed/lang/lt.js", - "build/ckeditor/plugins/colordialog/lang/ug.js": "/build/ckeditor/plugins/colordialog/lang/ug.js", - "build/ckeditor/plugins/font/lang/lt.js": "/build/ckeditor/plugins/font/lang/lt.js", - "build/ckeditor/skins/moono-lisa/images/arrow.png": "/build/ckeditor/skins/moono-lisa/images/arrow.png", - "build/ckeditor/skins/moono/images/arrow.png": "/build/ckeditor/skins/moono/images/arrow.png", - "build/ckeditor/plugins/autoembed/lang/it.js": "/build/ckeditor/plugins/autoembed/lang/it.js", - "build/ckeditor/plugins/autoembed/lang/pl.js": "/build/ckeditor/plugins/autoembed/lang/pl.js", - "build/ckeditor/plugins/autoembed/lang/ro.js": "/build/ckeditor/plugins/autoembed/lang/ro.js", - "build/ckeditor/plugins/font/lang/sl.js": "/build/ckeditor/plugins/font/lang/sl.js", - "build/ckeditor/plugins/autoembed/lang/sq.js": "/build/ckeditor/plugins/autoembed/lang/sq.js", - "build/ckeditor/plugins/font/lang/fi.js": "/build/ckeditor/plugins/font/lang/fi.js", - "build/ckeditor/plugins/font/lang/lv.js": "/build/ckeditor/plugins/font/lang/lv.js", - "build/ckeditor/plugins/font/lang/nb.js": "/build/ckeditor/plugins/font/lang/nb.js", - "build/ckeditor/plugins/font/lang/sv.js": "/build/ckeditor/plugins/font/lang/sv.js", - "build/ckeditor/plugins/smiley/lang/gu.js": "/build/ckeditor/plugins/smiley/lang/gu.js", - "build/ckeditor/plugins/autoembed/lang/tr.js": "/build/ckeditor/plugins/autoembed/lang/tr.js", - "build/ckeditor/plugins/autoembed/lang/zh-cn.js": "/build/ckeditor/plugins/autoembed/lang/zh-cn.js", - "build/ckeditor/plugins/font/lang/hu.js": "/build/ckeditor/plugins/font/lang/hu.js", - "build/ckeditor/plugins/autoembed/lang/az.js": "/build/ckeditor/plugins/autoembed/lang/az.js", - "build/ckeditor/plugins/font/lang/vi.js": "/build/ckeditor/plugins/font/lang/vi.js", - "build/ckeditor/plugins/autoembed/lang/et.js": "/build/ckeditor/plugins/autoembed/lang/et.js", - "build/ckeditor/plugins/colordialog/lang/fr-ca.js": "/build/ckeditor/plugins/colordialog/lang/fr-ca.js", - "build/ckeditor/plugins/font/lang/fo.js": "/build/ckeditor/plugins/font/lang/fo.js", - "build/ckeditor/plugins/font/lang/pl.js": "/build/ckeditor/plugins/font/lang/pl.js", - "build/ckeditor/plugins/font/lang/zh.js": "/build/ckeditor/plugins/font/lang/zh.js", - "build/ckeditor/skins/kama/images/mini.gif": "/build/ckeditor/skins/kama/images/mini.gif", - "build/ckeditor/plugins/autoembed/lang/oc.js": "/build/ckeditor/plugins/autoembed/lang/oc.js", - "build/ckeditor/plugins/font/lang/cy.js": "/build/ckeditor/plugins/font/lang/cy.js", - "build/ckeditor/plugins/font/lang/eo.js": "/build/ckeditor/plugins/font/lang/eo.js", - "build/ckeditor/plugins/font/lang/hr.js": "/build/ckeditor/plugins/font/lang/hr.js", - "build/ckeditor/plugins/pagebreak/lang/ka.js": "/build/ckeditor/plugins/pagebreak/lang/ka.js", - "build/ckeditor/plugins/autoembed/lang/es-mx.js": "/build/ckeditor/plugins/autoembed/lang/es-mx.js", - "build/ckeditor/plugins/bidi/lang/mk.js": "/build/ckeditor/plugins/bidi/lang/mk.js", - "build/ckeditor/plugins/bidi/lang/ru.js": "/build/ckeditor/plugins/bidi/lang/ru.js", - "build/ckeditor/plugins/colordialog/lang/ja.js": "/build/ckeditor/plugins/colordialog/lang/ja.js", - "build/ckeditor/plugins/colordialog/lang/sq.js": "/build/ckeditor/plugins/colordialog/lang/sq.js", - "build/ckeditor/plugins/exportpdf/lang/en.js": "/build/ckeditor/plugins/exportpdf/lang/en.js", - "build/ckeditor/plugins/font/lang/no.js": "/build/ckeditor/plugins/font/lang/no.js", - "build/ckeditor/plugins/autoembed/lang/fr.js": "/build/ckeditor/plugins/autoembed/lang/fr.js", - "build/ckeditor/plugins/autoembed/lang/ko.js": "/build/ckeditor/plugins/autoembed/lang/ko.js", - "build/ckeditor/plugins/colordialog/lang/lt.js": "/build/ckeditor/plugins/colordialog/lang/lt.js", - "build/ckeditor/plugins/font/lang/ko.js": "/build/ckeditor/plugins/font/lang/ko.js", - "build/ckeditor/plugins/forms/images/hiddenfield.gif": "/build/ckeditor/plugins/forms/images/hiddenfield.gif", - "build/ckeditor/plugins/autoembed/lang/sk.js": "/build/ckeditor/plugins/autoembed/lang/sk.js", - "build/ckeditor/plugins/autoembed/lang/sr-latn.js": "/build/ckeditor/plugins/autoembed/lang/sr-latn.js", - "build/ckeditor/plugins/colordialog/lang/fr.js": "/build/ckeditor/plugins/colordialog/lang/fr.js", - "build/ckeditor/plugins/font/lang/cs.js": "/build/ckeditor/plugins/font/lang/cs.js", - "build/ckeditor/plugins/font/lang/es.js": "/build/ckeditor/plugins/font/lang/es.js", - "build/ckeditor/plugins/font/lang/id.js": "/build/ckeditor/plugins/font/lang/id.js", - "build/ckeditor/plugins/font/lang/he.js": "/build/ckeditor/plugins/font/lang/he.js", - "build/ckeditor/plugins/font/lang/pt-br.js": "/build/ckeditor/plugins/font/lang/pt-br.js", - "build/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png": "/build/ckeditor/plugins/magicline/images/hidpi/icon-rtl.png", - "build/ckeditor/plugins/bidi/lang/bg.js": "/build/ckeditor/plugins/bidi/lang/bg.js", - "build/ckeditor/plugins/colordialog/lang/it.js": "/build/ckeditor/plugins/colordialog/lang/it.js", - "build/ckeditor/plugins/colordialog/lang/lv.js": "/build/ckeditor/plugins/colordialog/lang/lv.js", - "build/ckeditor/plugins/font/lang/tr.js": "/build/ckeditor/plugins/font/lang/tr.js", - "build/ckeditor/plugins/autoembed/lang/es.js": "/build/ckeditor/plugins/autoembed/lang/es.js", - "build/ckeditor/plugins/autoembed/lang/gl.js": "/build/ckeditor/plugins/autoembed/lang/gl.js", - "build/ckeditor/plugins/autoembed/lang/lv.js": "/build/ckeditor/plugins/autoembed/lang/lv.js", - "build/ckeditor/plugins/colordialog/lang/he.js": "/build/ckeditor/plugins/colordialog/lang/he.js", - "build/ckeditor/plugins/autoembed/lang/nl.js": "/build/ckeditor/plugins/autoembed/lang/nl.js", - "build/ckeditor/plugins/autoembed/lang/pt-br.js": "/build/ckeditor/plugins/autoembed/lang/pt-br.js", - "build/ckeditor/plugins/colordialog/lang/de-ch.js": "/build/ckeditor/plugins/colordialog/lang/de-ch.js", - "build/ckeditor/plugins/colordialog/lang/es-mx.js": "/build/ckeditor/plugins/colordialog/lang/es-mx.js", - "build/ckeditor/plugins/colordialog/lang/oc.js": "/build/ckeditor/plugins/colordialog/lang/oc.js", - "build/ckeditor/plugins/colordialog/lang/ro.js": "/build/ckeditor/plugins/colordialog/lang/ro.js", - "build/ckeditor/plugins/font/lang/af.js": "/build/ckeditor/plugins/font/lang/af.js", - "build/ckeditor/plugins/font/lang/zh-cn.js": "/build/ckeditor/plugins/font/lang/zh-cn.js", - "build/ckeditor/plugins/autoembed/lang/ca.js": "/build/ckeditor/plugins/autoembed/lang/ca.js", - "build/ckeditor/plugins/autoembed/lang/eu.js": "/build/ckeditor/plugins/autoembed/lang/eu.js", - "build/ckeditor/plugins/autoembed/lang/sv.js": "/build/ckeditor/plugins/autoembed/lang/sv.js", - "build/ckeditor/plugins/smiley/lang/ro.js": "/build/ckeditor/plugins/smiley/lang/ro.js", - "build/ckeditor/plugins/bidi/lang/ar.js": "/build/ckeditor/plugins/bidi/lang/ar.js", - "build/ckeditor/plugins/colordialog/lang/ca.js": "/build/ckeditor/plugins/colordialog/lang/ca.js", - "build/ckeditor/plugins/pagebreak/lang/bg.js": "/build/ckeditor/plugins/pagebreak/lang/bg.js", - "build/ckeditor/plugins/colordialog/lang/de.js": "/build/ckeditor/plugins/colordialog/lang/de.js", - "build/ckeditor/plugins/font/lang/en-au.js": "/build/ckeditor/plugins/font/lang/en-au.js", - "build/ckeditor/plugins/font/lang/en-ca.js": "/build/ckeditor/plugins/font/lang/en-ca.js", - "build/ckeditor/plugins/font/lang/en-gb.js": "/build/ckeditor/plugins/font/lang/en-gb.js", - "build/ckeditor/plugins/smiley/lang/ku.js": "/build/ckeditor/plugins/smiley/lang/ku.js", - "build/ckeditor/plugins/autoembed/lang/nb.js": "/build/ckeditor/plugins/autoembed/lang/nb.js", - "build/ckeditor/plugins/colordialog/lang/eu.js": "/build/ckeditor/plugins/colordialog/lang/eu.js", - "build/ckeditor/plugins/autoembed/lang/id.js": "/build/ckeditor/plugins/autoembed/lang/id.js", - "build/ckeditor/plugins/colordialog/lang/gl.js": "/build/ckeditor/plugins/colordialog/lang/gl.js", - "build/ckeditor/plugins/autoembed/lang/da.js": "/build/ckeditor/plugins/autoembed/lang/da.js", - "build/ckeditor/plugins/autoembed/lang/en-au.js": "/build/ckeditor/plugins/autoembed/lang/en-au.js", - "build/ckeditor/plugins/autoembed/lang/pt.js": "/build/ckeditor/plugins/autoembed/lang/pt.js", - "build/ckeditor/plugins/bidi/lang/sr.js": "/build/ckeditor/plugins/bidi/lang/sr.js", - "build/ckeditor/plugins/bidi/lang/uk.js": "/build/ckeditor/plugins/bidi/lang/uk.js", - "build/ckeditor/plugins/colordialog/lang/sk.js": "/build/ckeditor/plugins/colordialog/lang/sk.js", - "build/ckeditor/plugins/colordialog/lang/vi.js": "/build/ckeditor/plugins/colordialog/lang/vi.js", - "build/ckeditor/plugins/font/lang/bs.js": "/build/ckeditor/plugins/font/lang/bs.js", - "build/ckeditor/plugins/font/lang/en.js": "/build/ckeditor/plugins/font/lang/en.js", - "build/ckeditor/plugins/font/lang/fr-ca.js": "/build/ckeditor/plugins/font/lang/fr-ca.js", - "build/ckeditor/plugins/font/lang/mk.js": "/build/ckeditor/plugins/font/lang/mk.js", - "build/ckeditor/plugins/smiley/lang/el.js": "/build/ckeditor/plugins/smiley/lang/el.js", - "build/ckeditor/plugins/smiley/lang/hi.js": "/build/ckeditor/plugins/smiley/lang/hi.js", - "build/ckeditor/plugins/autoembed/lang/vi.js": "/build/ckeditor/plugins/autoembed/lang/vi.js", - "build/ckeditor/plugins/colordialog/lang/eo.js": "/build/ckeditor/plugins/colordialog/lang/eo.js", - "build/ckeditor/plugins/colordialog/lang/hu.js": "/build/ckeditor/plugins/colordialog/lang/hu.js", - "build/ckeditor/plugins/colordialog/lang/pt-br.js": "/build/ckeditor/plugins/colordialog/lang/pt-br.js", - "build/ckeditor/plugins/dialog/dialogDefinition.js": "/build/ckeditor/plugins/dialog/dialogDefinition.js", - "build/ckeditor/plugins/templates/templatedefinition.js": "/build/ckeditor/plugins/templates/templatedefinition.js", - "build/ckeditor/plugins/autoembed/lang/cs.js": "/build/ckeditor/plugins/autoembed/lang/cs.js", - "build/ckeditor/plugins/autoembed/lang/eo.js": "/build/ckeditor/plugins/autoembed/lang/eo.js", - "build/ckeditor/plugins/colordialog/lang/az.js": "/build/ckeditor/plugins/colordialog/lang/az.js", - "build/ckeditor/plugins/colordialog/lang/nb.js": "/build/ckeditor/plugins/colordialog/lang/nb.js", - "build/ckeditor/plugins/autoembed/lang/en.js": "/build/ckeditor/plugins/autoembed/lang/en.js", - "build/ckeditor/plugins/font/lang/et.js": "/build/ckeditor/plugins/font/lang/et.js", - "build/ckeditor/plugins/bidi/lang/ku.js": "/build/ckeditor/plugins/bidi/lang/ku.js", - "build/ckeditor/plugins/bidi/lang/ug.js": "/build/ckeditor/plugins/bidi/lang/ug.js", - "build/ckeditor/plugins/colordialog/lang/en-au.js": "/build/ckeditor/plugins/colordialog/lang/en-au.js", - "build/ckeditor/plugins/colordialog/lang/en-gb.js": "/build/ckeditor/plugins/colordialog/lang/en-gb.js", - "build/ckeditor/plugins/font/lang/ro.js": "/build/ckeditor/plugins/font/lang/ro.js", - "build/ckeditor/plugins/autoembed/lang/zh.js": "/build/ckeditor/plugins/autoembed/lang/zh.js", - "build/ckeditor/plugins/colordialog/lang/pt.js": "/build/ckeditor/plugins/colordialog/lang/pt.js", - "build/ckeditor/plugins/colordialog/lang/sl.js": "/build/ckeditor/plugins/colordialog/lang/sl.js", - "build/ckeditor/plugins/colordialog/lang/ko.js": "/build/ckeditor/plugins/colordialog/lang/ko.js", - "build/ckeditor/plugins/colordialog/lang/nl.js": "/build/ckeditor/plugins/colordialog/lang/nl.js", - "build/ckeditor/plugins/pagebreak/lang/el.js": "/build/ckeditor/plugins/pagebreak/lang/el.js", - "build/ckeditor/plugins/pagebreak/lang/ru.js": "/build/ckeditor/plugins/pagebreak/lang/ru.js", - "build/ckeditor/plugins/colordialog/lang/cs.js": "/build/ckeditor/plugins/colordialog/lang/cs.js", - "build/ckeditor/plugins/colordialog/lang/en-ca.js": "/build/ckeditor/plugins/colordialog/lang/en-ca.js", - "build/ckeditor/plugins/colordialog/lang/et.js": "/build/ckeditor/plugins/colordialog/lang/et.js", - "build/ckeditor/plugins/colordialog/lang/cy.js": "/build/ckeditor/plugins/colordialog/lang/cy.js", - "build/ckeditor/plugins/colordialog/lang/sr-latn.js": "/build/ckeditor/plugins/colordialog/lang/sr-latn.js", - "build/ckeditor/plugins/colordialog/lang/bn.js": "/build/ckeditor/plugins/colordialog/lang/bn.js", - "build/ckeditor/plugins/colordialog/lang/bs.js": "/build/ckeditor/plugins/colordialog/lang/bs.js", - "build/ckeditor/plugins/colordialog/lang/en.js": "/build/ckeditor/plugins/colordialog/lang/en.js", - "build/ckeditor/plugins/colordialog/lang/fi.js": "/build/ckeditor/plugins/colordialog/lang/fi.js", - "build/ckeditor/plugins/colordialog/lang/hi.js": "/build/ckeditor/plugins/colordialog/lang/hi.js", - "build/ckeditor/plugins/colordialog/lang/is.js": "/build/ckeditor/plugins/colordialog/lang/is.js", - "build/ckeditor/plugins/colordialog/lang/mk.js": "/build/ckeditor/plugins/colordialog/lang/mk.js", - "build/ckeditor/plugins/colordialog/lang/mn.js": "/build/ckeditor/plugins/colordialog/lang/mn.js", - "build/ckeditor/plugins/colordialog/lang/ms.js": "/build/ckeditor/plugins/colordialog/lang/ms.js", - "build/ckeditor/plugins/colordialog/lang/th.js": "/build/ckeditor/plugins/colordialog/lang/th.js", - "build/ckeditor/plugins/colordialog/lang/tr.js": "/build/ckeditor/plugins/colordialog/lang/tr.js", - "build/ckeditor/plugins/font/lang/ms.js": "/build/ckeditor/plugins/font/lang/ms.js", - "build/ckeditor/plugins/colordialog/lang/hr.js": "/build/ckeditor/plugins/colordialog/lang/hr.js", - "build/ckeditor/plugins/smiley/lang/bg.js": "/build/ckeditor/plugins/smiley/lang/bg.js", - "build/ckeditor/plugins/bidi/lang/mn.js": "/build/ckeditor/plugins/bidi/lang/mn.js", - "build/ckeditor/plugins/colordialog/lang/da.js": "/build/ckeditor/plugins/colordialog/lang/da.js", - "build/ckeditor/plugins/colordialog/lang/es.js": "/build/ckeditor/plugins/colordialog/lang/es.js", - "build/ckeditor/plugins/colordialog/lang/zh-cn.js": "/build/ckeditor/plugins/colordialog/lang/zh-cn.js", - "build/ckeditor/plugins/colordialog/lang/zh.js": "/build/ckeditor/plugins/colordialog/lang/zh.js", - "build/ckeditor/plugins/easyimage/icons/easyimagealigncenter.png": "/build/ckeditor/plugins/easyimage/icons/easyimagealigncenter.png", - "build/ckeditor/plugins/pagebreak/lang/th.js": "/build/ckeditor/plugins/pagebreak/lang/th.js", - "build/ckeditor/plugins/smiley/lang/bn.js": "/build/ckeditor/plugins/smiley/lang/bn.js", - "build/ckeditor/plugins/bidi/lang/ko.js": "/build/ckeditor/plugins/bidi/lang/ko.js", - "build/ckeditor/plugins/pagebreak/lang/hi.js": "/build/ckeditor/plugins/pagebreak/lang/hi.js", - "build/ckeditor/plugins/showblocks/images/block_blockquote.png": "/build/ckeditor/plugins/showblocks/images/block_blockquote.png", - "build/ckeditor/plugins/autoembed/lang/hr.js": "/build/ckeditor/plugins/autoembed/lang/hr.js", - "build/ckeditor/plugins/smiley/lang/mn.js": "/build/ckeditor/plugins/smiley/lang/mn.js", - "build/ckeditor/plugins/colordialog/lang/pl.js": "/build/ckeditor/plugins/colordialog/lang/pl.js", - "build/ckeditor/plugins/colordialog/lang/sv.js": "/build/ckeditor/plugins/colordialog/lang/sv.js", - "build/ckeditor/plugins/easyimage/icons/easyimagealignleft.png": "/build/ckeditor/plugins/easyimage/icons/easyimagealignleft.png", - "build/ckeditor/plugins/showblocks/images/block_address.png": "/build/ckeditor/plugins/showblocks/images/block_address.png", - "build/ckeditor/plugins/bidi/lang/he.js": "/build/ckeditor/plugins/bidi/lang/he.js", - "build/ckeditor/plugins/bidi/lang/sq.js": "/build/ckeditor/plugins/bidi/lang/sq.js", - "build/ckeditor/plugins/colordialog/lang/fo.js": "/build/ckeditor/plugins/colordialog/lang/fo.js", - "build/ckeditor/plugins/colordialog/lang/id.js": "/build/ckeditor/plugins/colordialog/lang/id.js", - "build/ckeditor/plugins/bidi/lang/pt-br.js": "/build/ckeditor/plugins/bidi/lang/pt-br.js", - "build/ckeditor/plugins/smiley/lang/ar.js": "/build/ckeditor/plugins/smiley/lang/ar.js", - "build/ckeditor/plugins/smiley/lang/sr.js": "/build/ckeditor/plugins/smiley/lang/sr.js", - "build/ckeditor/plugins/smiley/lang/uk.js": "/build/ckeditor/plugins/smiley/lang/uk.js", - "build/ckeditor/plugins/bidi/lang/fr.js": "/build/ckeditor/plugins/bidi/lang/fr.js", - "build/ckeditor/plugins/colordialog/lang/af.js": "/build/ckeditor/plugins/colordialog/lang/af.js", - "build/ckeditor/plugins/colordialog/lang/no.js": "/build/ckeditor/plugins/colordialog/lang/no.js", - "build/ckeditor/plugins/easyimage/icons/easyimagealignright.png": "/build/ckeditor/plugins/easyimage/icons/easyimagealignright.png", - "build/ckeditor/plugins/easyimage/icons/easyimageside.png": "/build/ckeditor/plugins/easyimage/icons/easyimageside.png", - "build/ckeditor/plugins/bidi/lang/oc.js": "/build/ckeditor/plugins/bidi/lang/oc.js", - "build/ckeditor/plugins/bidi/lang/pt.js": "/build/ckeditor/plugins/bidi/lang/pt.js", - "build/ckeditor/plugins/easyimage/icons/easyimagefull.png": "/build/ckeditor/plugins/easyimage/icons/easyimagefull.png", - "build/ckeditor/plugins/smiley/lang/fa.js": "/build/ckeditor/plugins/smiley/lang/fa.js", - "build/ckeditor/plugins/bidi/lang/es-mx.js": "/build/ckeditor/plugins/bidi/lang/es-mx.js", - "build/ckeditor/plugins/bidi/lang/it.js": "/build/ckeditor/plugins/bidi/lang/it.js", - "build/ckeditor/plugins/pagebreak/lang/tt.js": "/build/ckeditor/plugins/pagebreak/lang/tt.js", - "build/ckeditor/plugins/bidi/lang/es.js": "/build/ckeditor/plugins/bidi/lang/es.js", - "build/ckeditor/plugins/bidi/lang/ro.js": "/build/ckeditor/plugins/bidi/lang/ro.js", - "build/ckeditor/plugins/smiley/lang/he.js": "/build/ckeditor/plugins/smiley/lang/he.js", - "build/ckeditor/plugins/bidi/lang/vi.js": "/build/ckeditor/plugins/bidi/lang/vi.js", - "build/ckeditor/plugins/pagebreak/lang/az.js": "/build/ckeditor/plugins/pagebreak/lang/az.js", - "build/ckeditor/plugins/pagebreak/lang/sr.js": "/build/ckeditor/plugins/pagebreak/lang/sr.js", - "build/ckeditor/plugins/pagebreak/lang/uk.js": "/build/ckeditor/plugins/pagebreak/lang/uk.js", - "build/ckeditor/plugins/bidi/lang/gl.js": "/build/ckeditor/plugins/bidi/lang/gl.js", - "build/ckeditor/plugins/bidi/lang/pl.js": "/build/ckeditor/plugins/bidi/lang/pl.js", - "build/ckeditor/plugins/magicline/images/icon-rtl.png": "/build/ckeditor/plugins/magicline/images/icon-rtl.png", - "build/ckeditor/plugins/smiley/lang/ru.js": "/build/ckeditor/plugins/smiley/lang/ru.js", - "build/ckeditor/plugins/smiley/lang/tt.js": "/build/ckeditor/plugins/smiley/lang/tt.js", - "build/ckeditor/plugins/bidi/lang/sv.js": "/build/ckeditor/plugins/bidi/lang/sv.js", - "build/ckeditor/plugins/pagebreak/lang/ku.js": "/build/ckeditor/plugins/pagebreak/lang/ku.js", - "build/ckeditor/plugins/bidi/lang/fr-ca.js": "/build/ckeditor/plugins/bidi/lang/fr-ca.js", - "build/ckeditor/plugins/bidi/lang/eu.js": "/build/ckeditor/plugins/bidi/lang/eu.js", - "build/ckeditor/plugins/bidi/lang/ja.js": "/build/ckeditor/plugins/bidi/lang/ja.js", - "build/ckeditor/plugins/smiley/lang/fr-ca.js": "/build/ckeditor/plugins/smiley/lang/fr-ca.js", - "build/ckeditor/plugins/pagebreak/lang/it.js": "/build/ckeditor/plugins/pagebreak/lang/it.js", - "build/ckeditor/plugins/magicline/images/icon.png": "/build/ckeditor/plugins/magicline/images/icon.png", - "build/ckeditor/plugins/bidi/lang/ca.js": "/build/ckeditor/plugins/bidi/lang/ca.js", - "build/ckeditor/plugins/pagebreak/lang/fa.js": "/build/ckeditor/plugins/pagebreak/lang/fa.js", - "build/ckeditor/plugins/bidi/lang/fa.js": "/build/ckeditor/plugins/bidi/lang/fa.js", - "build/ckeditor/plugins/bidi/lang/nl.js": "/build/ckeditor/plugins/bidi/lang/nl.js", - "build/ckeditor/plugins/smiley/lang/hu.js": "/build/ckeditor/plugins/smiley/lang/hu.js", - "build/ckeditor/plugins/smiley/lang/eo.js": "/build/ckeditor/plugins/smiley/lang/eo.js", - "build/ckeditor/plugins/smiley/lang/fr.js": "/build/ckeditor/plugins/smiley/lang/fr.js", - "build/ckeditor/plugins/smiley/lang/gl.js": "/build/ckeditor/plugins/smiley/lang/gl.js", - "build/ckeditor/plugins/bidi/lang/de-ch.js": "/build/ckeditor/plugins/bidi/lang/de-ch.js", - "build/ckeditor/plugins/showblocks/images/block_pre.png": "/build/ckeditor/plugins/showblocks/images/block_pre.png", - "build/ckeditor/plugins/smiley/lang/cs.js": "/build/ckeditor/plugins/smiley/lang/cs.js", - "build/ckeditor/plugins/smiley/lang/es.js": "/build/ckeditor/plugins/smiley/lang/es.js", - "build/ckeditor/skins/kama/images/dialog_sides_rtl.png": "/build/ckeditor/skins/kama/images/dialog_sides_rtl.png", - "build/ckeditor/plugins/bidi/lang/cy.js": "/build/ckeditor/plugins/bidi/lang/cy.js", - "build/ckeditor/plugins/bidi/lang/da.js": "/build/ckeditor/plugins/bidi/lang/da.js", - "build/ckeditor/plugins/bidi/lang/eo.js": "/build/ckeditor/plugins/bidi/lang/eo.js", - "build/ckeditor/plugins/bidi/lang/lv.js": "/build/ckeditor/plugins/bidi/lang/lv.js", - "build/ckeditor/plugins/bidi/lang/nb.js": "/build/ckeditor/plugins/bidi/lang/nb.js", - "build/ckeditor/plugins/bidi/lang/no.js": "/build/ckeditor/plugins/bidi/lang/no.js", - "build/ckeditor/plugins/pagebreak/lang/es-mx.js": "/build/ckeditor/plugins/pagebreak/lang/es-mx.js", - "build/ckeditor/plugins/showblocks/images/block_div.png": "/build/ckeditor/plugins/showblocks/images/block_div.png", - "build/ckeditor/plugins/showblocks/images/block_h2.png": "/build/ckeditor/plugins/showblocks/images/block_h2.png", - "build/ckeditor/plugins/bidi/lang/en-au.js": "/build/ckeditor/plugins/bidi/lang/en-au.js", - "build/ckeditor/plugins/bidi/lang/en-ca.js": "/build/ckeditor/plugins/bidi/lang/en-ca.js", - "build/ckeditor/plugins/bidi/lang/en-gb.js": "/build/ckeditor/plugins/bidi/lang/en-gb.js", - "build/ckeditor/plugins/pagebreak/lang/mn.js": "/build/ckeditor/plugins/pagebreak/lang/mn.js", - "build/ckeditor/plugins/showblocks/images/block_h5.png": "/build/ckeditor/plugins/showblocks/images/block_h5.png", - "build/ckeditor/plugins/smiley/lang/ko.js": "/build/ckeditor/plugins/smiley/lang/ko.js", - "build/ckeditor/plugins/smiley/lang/lt.js": "/build/ckeditor/plugins/smiley/lang/lt.js", - "build/ckeditor/plugins/smiley/lang/lv.js": "/build/ckeditor/plugins/smiley/lang/lv.js", - "build/ckeditor/plugins/bidi/lang/az.js": "/build/ckeditor/plugins/bidi/lang/az.js", - "build/ckeditor/plugins/bidi/lang/de.js": "/build/ckeditor/plugins/bidi/lang/de.js", - "build/ckeditor/plugins/bidi/lang/fi.js": "/build/ckeditor/plugins/bidi/lang/fi.js", - "build/ckeditor/plugins/bidi/lang/id.js": "/build/ckeditor/plugins/bidi/lang/id.js", - "build/ckeditor/plugins/bidi/lang/tt.js": "/build/ckeditor/plugins/bidi/lang/tt.js", - "build/ckeditor/plugins/pagebreak/lang/ug.js": "/build/ckeditor/plugins/pagebreak/lang/ug.js", - "build/ckeditor/plugins/smiley/lang/eu.js": "/build/ckeditor/plugins/smiley/lang/eu.js", - "build/ckeditor/plugins/smiley/lang/pt.js": "/build/ckeditor/plugins/smiley/lang/pt.js", - "build/ckeditor/plugins/sourcedialog/lang/km.js": "/build/ckeditor/plugins/sourcedialog/lang/km.js", - "build/ckeditor/plugins/sourcedialog/lang/si.js": "/build/ckeditor/plugins/sourcedialog/lang/si.js", - "build/ckeditor/skins/kama/images/dialog_sides.png": "/build/ckeditor/skins/kama/images/dialog_sides.png", - "build/ckeditor/plugins/pagebreak/lang/id.js": "/build/ckeditor/plugins/pagebreak/lang/id.js", - "build/ckeditor/plugins/smiley/lang/cy.js": "/build/ckeditor/plugins/smiley/lang/cy.js", - "build/ckeditor/plugins/smiley/lang/ja.js": "/build/ckeditor/plugins/smiley/lang/ja.js", - "build/ckeditor/plugins/smiley/lang/pt-br.js": "/build/ckeditor/plugins/smiley/lang/pt-br.js", - "build/ckeditor/plugins/smiley/lang/zh-cn.js": "/build/ckeditor/plugins/smiley/lang/zh-cn.js", - "build/ckeditor/plugins/smiley/lang/zh.js": "/build/ckeditor/plugins/smiley/lang/zh.js", - "build/ckeditor/plugins/bidi/lang/bn.js": "/build/ckeditor/plugins/bidi/lang/bn.js", - "build/ckeditor/plugins/bidi/lang/bs.js": "/build/ckeditor/plugins/bidi/lang/bs.js", - "build/ckeditor/plugins/bidi/lang/en.js": "/build/ckeditor/plugins/bidi/lang/en.js", - "build/ckeditor/plugins/bidi/lang/fo.js": "/build/ckeditor/plugins/bidi/lang/fo.js", - "build/ckeditor/plugins/bidi/lang/hi.js": "/build/ckeditor/plugins/bidi/lang/hi.js", - "build/ckeditor/plugins/bidi/lang/is.js": "/build/ckeditor/plugins/bidi/lang/is.js", - "build/ckeditor/plugins/bidi/lang/ms.js": "/build/ckeditor/plugins/bidi/lang/ms.js", - "build/ckeditor/plugins/bidi/lang/sl.js": "/build/ckeditor/plugins/bidi/lang/sl.js", - "build/ckeditor/plugins/bidi/lang/th.js": "/build/ckeditor/plugins/bidi/lang/th.js", - "build/ckeditor/plugins/showblocks/images/block_h3.png": "/build/ckeditor/plugins/showblocks/images/block_h3.png", - "build/ckeditor/plugins/showblocks/images/block_h4.png": "/build/ckeditor/plugins/showblocks/images/block_h4.png", - "build/ckeditor/plugins/showblocks/images/block_h6.png": "/build/ckeditor/plugins/showblocks/images/block_h6.png", - "build/ckeditor/plugins/smiley/lang/sk.js": "/build/ckeditor/plugins/smiley/lang/sk.js", - "build/ckeditor/plugins/bidi/lang/sr-latn.js": "/build/ckeditor/plugins/bidi/lang/sr-latn.js", - "build/ckeditor/plugins/pagebreak/lang/oc.js": "/build/ckeditor/plugins/pagebreak/lang/oc.js", - "build/ckeditor/plugins/smiley/lang/az.js": "/build/ckeditor/plugins/smiley/lang/az.js", - "build/ckeditor/plugins/pagebreak/lang/fr-ca.js": "/build/ckeditor/plugins/pagebreak/lang/fr-ca.js", - "build/ckeditor/plugins/pagebreak/lang/ko.js": "/build/ckeditor/plugins/pagebreak/lang/ko.js", - "build/ckeditor/plugins/pagebreak/lang/sk.js": "/build/ckeditor/plugins/pagebreak/lang/sk.js", - "build/ckeditor/plugins/smiley/lang/es-mx.js": "/build/ckeditor/plugins/smiley/lang/es-mx.js", - "build/ckeditor/plugins/pagebreak/lang/fr.js": "/build/ckeditor/plugins/pagebreak/lang/fr.js", - "build/ckeditor/plugins/pagebreak/lang/ro.js": "/build/ckeditor/plugins/pagebreak/lang/ro.js", - "build/ckeditor/plugins/showblocks/images/block_h1.png": "/build/ckeditor/plugins/showblocks/images/block_h1.png", - "build/ckeditor/plugins/bidi/lang/lt.js": "/build/ckeditor/plugins/bidi/lang/lt.js", - "build/ckeditor/plugins/smiley/lang/ca.js": "/build/ckeditor/plugins/smiley/lang/ca.js", - "build/ckeditor/plugins/smiley/lang/et.js": "/build/ckeditor/plugins/smiley/lang/et.js", - "build/ckeditor/plugins/smiley/lang/oc.js": "/build/ckeditor/plugins/smiley/lang/oc.js", - "build/ckeditor/plugins/smiley/lang/sr-latn.js": "/build/ckeditor/plugins/smiley/lang/sr-latn.js", - "build/ckeditor/plugins/pagebreak/lang/eu.js": "/build/ckeditor/plugins/pagebreak/lang/eu.js", - "build/ckeditor/plugins/smiley/lang/af.js": "/build/ckeditor/plugins/smiley/lang/af.js", - "build/ckeditor/plugins/bidi/lang/af.js": "/build/ckeditor/plugins/bidi/lang/af.js", - "build/ckeditor/plugins/bidi/lang/et.js": "/build/ckeditor/plugins/bidi/lang/et.js", - "build/ckeditor/plugins/bidi/lang/hr.js": "/build/ckeditor/plugins/bidi/lang/hr.js", - "build/ckeditor/plugins/bidi/lang/hu.js": "/build/ckeditor/plugins/bidi/lang/hu.js", - "build/ckeditor/plugins/pagebreak/lang/ar.js": "/build/ckeditor/plugins/pagebreak/lang/ar.js", - "build/ckeditor/plugins/pagebreak/lang/de-ch.js": "/build/ckeditor/plugins/pagebreak/lang/de-ch.js", - "build/ckeditor/plugins/preview/lang/th.js": "/build/ckeditor/plugins/preview/lang/th.js", - "build/ckeditor/plugins/smiley/lang/de-ch.js": "/build/ckeditor/plugins/smiley/lang/de-ch.js", - "build/ckeditor/plugins/smiley/lang/pl.js": "/build/ckeditor/plugins/smiley/lang/pl.js", - "build/ckeditor/plugins/sourcedialog/lang/th.js": "/build/ckeditor/plugins/sourcedialog/lang/th.js", - "build/ckeditor/plugins/pagebreak/lang/lv.js": "/build/ckeditor/plugins/pagebreak/lang/lv.js", - "build/ckeditor/plugins/smiley/lang/fi.js": "/build/ckeditor/plugins/smiley/lang/fi.js", - "build/ckeditor/plugins/smiley/lang/it.js": "/build/ckeditor/plugins/smiley/lang/it.js", - "build/ckeditor/plugins/showblocks/images/block_p.png": "/build/ckeditor/plugins/showblocks/images/block_p.png", - "build/ckeditor/plugins/smiley/lang/da.js": "/build/ckeditor/plugins/smiley/lang/da.js", - "build/ckeditor/plugins/smiley/lang/fo.js": "/build/ckeditor/plugins/smiley/lang/fo.js", - "build/ckeditor/plugins/smiley/lang/sv.js": "/build/ckeditor/plugins/smiley/lang/sv.js", - "build/ckeditor/plugins/bidi/lang/zh-cn.js": "/build/ckeditor/plugins/bidi/lang/zh-cn.js", - "build/ckeditor/plugins/newpage/lang/th.js": "/build/ckeditor/plugins/newpage/lang/th.js", - "build/ckeditor/plugins/pagebreak/lang/cy.js": "/build/ckeditor/plugins/pagebreak/lang/cy.js", - "build/ckeditor/plugins/pagebreak/lang/de.js": "/build/ckeditor/plugins/pagebreak/lang/de.js", - "build/ckeditor/plugins/smiley/lang/de.js": "/build/ckeditor/plugins/smiley/lang/de.js", - "build/ckeditor/plugins/smiley/lang/en-au.js": "/build/ckeditor/plugins/smiley/lang/en-au.js", - "build/ckeditor/plugins/smiley/lang/en-ca.js": "/build/ckeditor/plugins/smiley/lang/en-ca.js", - "build/ckeditor/plugins/smiley/lang/en-gb.js": "/build/ckeditor/plugins/smiley/lang/en-gb.js", - "build/ckeditor/plugins/smiley/lang/nb.js": "/build/ckeditor/plugins/smiley/lang/nb.js", - "build/ckeditor/plugins/smiley/lang/no.js": "/build/ckeditor/plugins/smiley/lang/no.js", - "build/ckeditor/plugins/smiley/lang/sl.js": "/build/ckeditor/plugins/smiley/lang/sl.js", - "build/ckeditor/plugins/pagebreak/lang/sq.js": "/build/ckeditor/plugins/pagebreak/lang/sq.js", - "build/ckeditor/plugins/smiley/lang/hr.js": "/build/ckeditor/plugins/smiley/lang/hr.js", - "build/ckeditor/plugins/sourcedialog/lang/sr.js": "/build/ckeditor/plugins/sourcedialog/lang/sr.js", - "build/ckeditor/plugins/pagebreak/lang/lt.js": "/build/ckeditor/plugins/pagebreak/lang/lt.js", - "build/ckeditor/plugins/smiley/lang/bs.js": "/build/ckeditor/plugins/smiley/lang/bs.js", - "build/ckeditor/plugins/smiley/lang/id.js": "/build/ckeditor/plugins/smiley/lang/id.js", - "build/ckeditor/plugins/smiley/lang/sq.js": "/build/ckeditor/plugins/smiley/lang/sq.js", - "build/ckeditor/plugins/smiley/lang/tr.js": "/build/ckeditor/plugins/smiley/lang/tr.js", - "build/ckeditor/plugins/pagebreak/lang/ja.js": "/build/ckeditor/plugins/pagebreak/lang/ja.js", - "build/ckeditor/plugins/pagebreak/lang/pt-br.js": "/build/ckeditor/plugins/pagebreak/lang/pt-br.js", - "build/ckeditor/plugins/selectall/lang/ka.js": "/build/ckeditor/plugins/selectall/lang/ka.js", - "build/ckeditor/plugins/smiley/lang/en.js": "/build/ckeditor/plugins/smiley/lang/en.js", - "build/ckeditor/plugins/smiley/lang/mk.js": "/build/ckeditor/plugins/smiley/lang/mk.js", - "build/ckeditor/plugins/smiley/lang/ms.js": "/build/ckeditor/plugins/smiley/lang/ms.js", - "build/ckeditor/plugins/pagebreak/lang/sr-latn.js": "/build/ckeditor/plugins/pagebreak/lang/sr-latn.js", - "build/ckeditor/plugins/smiley/lang/nl.js": "/build/ckeditor/plugins/smiley/lang/nl.js", - "build/ckeditor/plugins/pagebreak/lang/en-au.js": "/build/ckeditor/plugins/pagebreak/lang/en-au.js", - "build/ckeditor/plugins/pagebreak/lang/en-ca.js": "/build/ckeditor/plugins/pagebreak/lang/en-ca.js", - "build/ckeditor/plugins/pagebreak/lang/en-gb.js": "/build/ckeditor/plugins/pagebreak/lang/en-gb.js", - "build/ckeditor/plugins/pagebreak/lang/sv.js": "/build/ckeditor/plugins/pagebreak/lang/sv.js", - "build/ckeditor/plugins/sourcedialog/lang/pl.js": "/build/ckeditor/plugins/sourcedialog/lang/pl.js", - "build/ckeditor/plugins/pagebreak/lang/et.js": "/build/ckeditor/plugins/pagebreak/lang/et.js", - "build/ckeditor/plugins/pagebreak/lang/gl.js": "/build/ckeditor/plugins/pagebreak/lang/gl.js", - "build/ckeditor/plugins/pagebreak/lang/pl.js": "/build/ckeditor/plugins/pagebreak/lang/pl.js", - "build/ckeditor/plugins/pagebreak/lang/pt.js": "/build/ckeditor/plugins/pagebreak/lang/pt.js", - "build/ckeditor/plugins/bidi/lang/cs.js": "/build/ckeditor/plugins/bidi/lang/cs.js", - "build/ckeditor/plugins/bidi/lang/sk.js": "/build/ckeditor/plugins/bidi/lang/sk.js", - "build/ckeditor/plugins/bidi/lang/tr.js": "/build/ckeditor/plugins/bidi/lang/tr.js", - "build/ckeditor/plugins/pagebreak/lang/es.js": "/build/ckeditor/plugins/pagebreak/lang/es.js", - "build/ckeditor/plugins/pagebreak/lang/he.js": "/build/ckeditor/plugins/pagebreak/lang/he.js", - "build/ckeditor/plugins/sourcedialog/lang/ka.js": "/build/ckeditor/plugins/sourcedialog/lang/ka.js", - "build/ckeditor/plugins/pagebreak/lang/bs.js": "/build/ckeditor/plugins/pagebreak/lang/bs.js", - "build/ckeditor/plugins/pagebreak/lang/en.js": "/build/ckeditor/plugins/pagebreak/lang/en.js", - "build/ckeditor/plugins/pagebreak/lang/eo.js": "/build/ckeditor/plugins/pagebreak/lang/eo.js", - "build/ckeditor/plugins/pagebreak/lang/hr.js": "/build/ckeditor/plugins/pagebreak/lang/hr.js", - "build/ckeditor/plugins/pagebreak/lang/mk.js": "/build/ckeditor/plugins/pagebreak/lang/mk.js", - "build/ckeditor/plugins/pagebreak/lang/ms.js": "/build/ckeditor/plugins/pagebreak/lang/ms.js", - "build/ckeditor/plugins/pagebreak/lang/nb.js": "/build/ckeditor/plugins/pagebreak/lang/nb.js", - "build/ckeditor/plugins/pagebreak/lang/no.js": "/build/ckeditor/plugins/pagebreak/lang/no.js", - "build/ckeditor/plugins/smiley/lang/is.js": "/build/ckeditor/plugins/smiley/lang/is.js", - "build/ckeditor/plugins/bidi/lang/zh.js": "/build/ckeditor/plugins/bidi/lang/zh.js", - "build/ckeditor/plugins/pagebreak/lang/ca.js": "/build/ckeditor/plugins/pagebreak/lang/ca.js", - "build/ckeditor/plugins/showblocks/lang/th.js": "/build/ckeditor/plugins/showblocks/lang/th.js", - "build/ckeditor/plugins/pagebreak/lang/hu.js": "/build/ckeditor/plugins/pagebreak/lang/hu.js", - "build/ckeditor/plugins/preview/lang/ru.js": "/build/ckeditor/plugins/preview/lang/ru.js", - "build/ckeditor/plugins/showblocks/lang/ka.js": "/build/ckeditor/plugins/showblocks/lang/ka.js", - "build/ckeditor/plugins/sourcedialog/lang/bg.js": "/build/ckeditor/plugins/sourcedialog/lang/bg.js", - "build/ckeditor/plugins/sourcedialog/lang/ru.js": "/build/ckeditor/plugins/sourcedialog/lang/ru.js", - "build/ckeditor/plugins/pagebreak/lang/cs.js": "/build/ckeditor/plugins/pagebreak/lang/cs.js", - "build/ckeditor/plugins/pagebreak/lang/zh.js": "/build/ckeditor/plugins/pagebreak/lang/zh.js", - "build/ckeditor/skins/kama/images/toolbar_start.gif": "/build/ckeditor/skins/kama/images/toolbar_start.gif", - "build/ckeditor/plugins/pagebreak/lang/bn.js": "/build/ckeditor/plugins/pagebreak/lang/bn.js", - "build/ckeditor/plugins/showblocks/lang/ku.js": "/build/ckeditor/plugins/showblocks/lang/ku.js", - "build/ckeditor/plugins/showblocks/lang/mn.js": "/build/ckeditor/plugins/showblocks/lang/mn.js", - "build/ckeditor/plugins/sourcedialog/lang/hi.js": "/build/ckeditor/plugins/sourcedialog/lang/hi.js", - "build/ckeditor/plugins/selectall/lang/gu.js": "/build/ckeditor/plugins/selectall/lang/gu.js", - "build/ckeditor/plugins/selectall/lang/hi.js": "/build/ckeditor/plugins/selectall/lang/hi.js", - "build/ckeditor/plugins/sourcedialog/lang/pt-br.js": "/build/ckeditor/plugins/sourcedialog/lang/pt-br.js", - "build/ckeditor/plugins/pagebreak/images/pagebreak.gif": "/build/ckeditor/plugins/pagebreak/images/pagebreak.gif", - "build/ckeditor/plugins/pagebreak/lang/nl.js": "/build/ckeditor/plugins/pagebreak/lang/nl.js", - "build/ckeditor/plugins/pagebreak/lang/sl.js": "/build/ckeditor/plugins/pagebreak/lang/sl.js", - "build/ckeditor/plugins/pagebreak/lang/zh-cn.js": "/build/ckeditor/plugins/pagebreak/lang/zh-cn.js", - "build/ckeditor/plugins/preview/images/pagebreak.gif": "/build/ckeditor/plugins/preview/images/pagebreak.gif", - "build/ckeditor/plugins/sourcedialog/lang/el.js": "/build/ckeditor/plugins/sourcedialog/lang/el.js", - "build/ckeditor/plugins/sourcedialog/lang/ku.js": "/build/ckeditor/plugins/sourcedialog/lang/ku.js", - "build/ckeditor/plugins/sourcedialog/lang/tt.js": "/build/ckeditor/plugins/sourcedialog/lang/tt.js", - "build/ckeditor/plugins/sourcedialog/lang/uk.js": "/build/ckeditor/plugins/sourcedialog/lang/uk.js", - "build/ckeditor/plugins/sourcedialog/lang/sr-latn.js": "/build/ckeditor/plugins/sourcedialog/lang/sr-latn.js", - "build/ckeditor/plugins/pagebreak/lang/af.js": "/build/ckeditor/plugins/pagebreak/lang/af.js", - "build/ckeditor/plugins/selectall/lang/bn.js": "/build/ckeditor/plugins/selectall/lang/bn.js", - "build/ckeditor/plugins/showblocks/lang/gu.js": "/build/ckeditor/plugins/showblocks/lang/gu.js", - "build/ckeditor/plugins/showblocks/lang/hi.js": "/build/ckeditor/plugins/showblocks/lang/hi.js", - "build/ckeditor/plugins/showblocks/lang/si.js": "/build/ckeditor/plugins/showblocks/lang/si.js", - "build/ckeditor/plugins/pagebreak/lang/fi.js": "/build/ckeditor/plugins/pagebreak/lang/fi.js", - "build/ckeditor/plugins/pagebreak/lang/is.js": "/build/ckeditor/plugins/pagebreak/lang/is.js", - "build/ckeditor/plugins/pagebreak/lang/vi.js": "/build/ckeditor/plugins/pagebreak/lang/vi.js", - "build/ckeditor/plugins/showblocks/lang/km.js": "/build/ckeditor/plugins/showblocks/lang/km.js", - "build/ckeditor/plugins/print/lang/si.js": "/build/ckeditor/plugins/print/lang/si.js", - "build/ckeditor/plugins/selectall/lang/km.js": "/build/ckeditor/plugins/selectall/lang/km.js", - "build/ckeditor/plugins/selectall/lang/th.js": "/build/ckeditor/plugins/selectall/lang/th.js", - "build/ckeditor/plugins/sourcedialog/lang/ar.js": "/build/ckeditor/plugins/sourcedialog/lang/ar.js", - "build/ckeditor/plugins/sourcedialog/lang/bn.js": "/build/ckeditor/plugins/sourcedialog/lang/bn.js", - "build/ckeditor/plugins/sourcedialog/lang/sl.js": "/build/ckeditor/plugins/sourcedialog/lang/sl.js", - "build/ckeditor/plugins/preview/lang/uk.js": "/build/ckeditor/plugins/preview/lang/uk.js", - "build/ckeditor/plugins/showblocks/lang/tt.js": "/build/ckeditor/plugins/showblocks/lang/tt.js", - "build/ckeditor/plugins/sourcedialog/lang/es.js": "/build/ckeditor/plugins/sourcedialog/lang/es.js", - "build/ckeditor/plugins/sourcedialog/lang/hu.js": "/build/ckeditor/plugins/sourcedialog/lang/hu.js", - "build/ckeditor/plugins/pagebreak/lang/da.js": "/build/ckeditor/plugins/pagebreak/lang/da.js", - "build/ckeditor/plugins/pagebreak/lang/fo.js": "/build/ckeditor/plugins/pagebreak/lang/fo.js", - "build/ckeditor/plugins/sourcedialog/lang/de-ch.js": "/build/ckeditor/plugins/sourcedialog/lang/de-ch.js", - "build/ckeditor/plugins/newpage/lang/ka.js": "/build/ckeditor/plugins/newpage/lang/ka.js", - "build/ckeditor/plugins/pagebreak/lang/tr.js": "/build/ckeditor/plugins/pagebreak/lang/tr.js", - "build/ckeditor/plugins/selectall/lang/mn.js": "/build/ckeditor/plugins/selectall/lang/mn.js", - "build/ckeditor/plugins/showblocks/lang/el.js": "/build/ckeditor/plugins/showblocks/lang/el.js", - "build/ckeditor/plugins/showblocks/lang/ru.js": "/build/ckeditor/plugins/showblocks/lang/ru.js", - "build/ckeditor/plugins/showblocks/lang/uk.js": "/build/ckeditor/plugins/showblocks/lang/uk.js", - "build/ckeditor/plugins/sourcedialog/lang/et.js": "/build/ckeditor/plugins/sourcedialog/lang/et.js", - "build/ckeditor/plugins/sourcedialog/lang/ug.js": "/build/ckeditor/plugins/sourcedialog/lang/ug.js", - "build/ckeditor/plugins/selectall/lang/ku.js": "/build/ckeditor/plugins/selectall/lang/ku.js", - "build/ckeditor/plugins/showblocks/lang/bg.js": "/build/ckeditor/plugins/showblocks/lang/bg.js", - "build/ckeditor/plugins/showblocks/lang/sr.js": "/build/ckeditor/plugins/showblocks/lang/sr.js", - "build/ckeditor/plugins/sourcedialog/lang/bs.js": "/build/ckeditor/plugins/sourcedialog/lang/bs.js", - "build/ckeditor/plugins/sourcedialog/lang/ca.js": "/build/ckeditor/plugins/sourcedialog/lang/ca.js", - "build/ckeditor/plugins/sourcedialog/lang/de.js": "/build/ckeditor/plugins/sourcedialog/lang/de.js", - "build/ckeditor/plugins/sourcedialog/lang/eu.js": "/build/ckeditor/plugins/sourcedialog/lang/eu.js", - "build/ckeditor/plugins/sourcedialog/lang/ja.js": "/build/ckeditor/plugins/sourcedialog/lang/ja.js", - "build/ckeditor/plugins/sourcedialog/lang/lt.js": "/build/ckeditor/plugins/sourcedialog/lang/lt.js", - "build/ckeditor/plugins/sourcedialog/lang/lv.js": "/build/ckeditor/plugins/sourcedialog/lang/lv.js", - "build/ckeditor/plugins/sourcedialog/lang/zh.js": "/build/ckeditor/plugins/sourcedialog/lang/zh.js", - "build/ckeditor/plugins/newpage/lang/bn.js": "/build/ckeditor/plugins/newpage/lang/bn.js", - "build/ckeditor/plugins/save/lang/si.js": "/build/ckeditor/plugins/save/lang/si.js", - "build/ckeditor/plugins/showblocks/lang/pt-br.js": "/build/ckeditor/plugins/showblocks/lang/pt-br.js", - "build/ckeditor/plugins/newpage/lang/km.js": "/build/ckeditor/plugins/newpage/lang/km.js", - "build/ckeditor/plugins/preview/lang/bn.js": "/build/ckeditor/plugins/preview/lang/bn.js", - "build/ckeditor/plugins/preview/lang/gu.js": "/build/ckeditor/plugins/preview/lang/gu.js", - "build/ckeditor/plugins/preview/lang/km.js": "/build/ckeditor/plugins/preview/lang/km.js", - "build/ckeditor/plugins/showblocks/lang/ug.js": "/build/ckeditor/plugins/showblocks/lang/ug.js", - "build/ckeditor/plugins/sourcedialog/lang/fa.js": "/build/ckeditor/plugins/sourcedialog/lang/fa.js", - "build/ckeditor/plugins/sourcedialog/lang/he.js": "/build/ckeditor/plugins/sourcedialog/lang/he.js", - "build/ckeditor/plugins/sourcedialog/lang/it.js": "/build/ckeditor/plugins/sourcedialog/lang/it.js", - "build/ckeditor/plugins/sourcedialog/lang/nl.js": "/build/ckeditor/plugins/sourcedialog/lang/nl.js", - "build/ckeditor/plugins/sourcedialog/lang/vi.js": "/build/ckeditor/plugins/sourcedialog/lang/vi.js", - "build/ckeditor/plugins/preview/lang/sr.js": "/build/ckeditor/plugins/preview/lang/sr.js", - "build/ckeditor/plugins/print/lang/bn.js": "/build/ckeditor/plugins/print/lang/bn.js", - "build/ckeditor/plugins/selectall/lang/tt.js": "/build/ckeditor/plugins/selectall/lang/tt.js", - "build/ckeditor/plugins/showblocks/lang/fa.js": "/build/ckeditor/plugins/showblocks/lang/fa.js", - "build/ckeditor/plugins/sourcedialog/lang/en-au.js": "/build/ckeditor/plugins/sourcedialog/lang/en-au.js", - "build/ckeditor/plugins/sourcedialog/lang/en-ca.js": "/build/ckeditor/plugins/sourcedialog/lang/en-ca.js", - "build/ckeditor/plugins/sourcedialog/lang/en-gb.js": "/build/ckeditor/plugins/sourcedialog/lang/en-gb.js", - "build/ckeditor/plugins/sourcedialog/lang/es-mx.js": "/build/ckeditor/plugins/sourcedialog/lang/es-mx.js", - "build/ckeditor/plugins/sourcedialog/lang/fr-ca.js": "/build/ckeditor/plugins/sourcedialog/lang/fr-ca.js", - "build/ckeditor/plugins/sourcedialog/lang/zh-cn.js": "/build/ckeditor/plugins/sourcedialog/lang/zh-cn.js", - "build/ckeditor/plugins/newpage/lang/si.js": "/build/ckeditor/plugins/newpage/lang/si.js", - "build/ckeditor/plugins/save/lang/bn.js": "/build/ckeditor/plugins/save/lang/bn.js", - "build/ckeditor/plugins/sourcedialog/lang/az.js": "/build/ckeditor/plugins/sourcedialog/lang/az.js", - "build/ckeditor/plugins/newpage/lang/ru.js": "/build/ckeditor/plugins/newpage/lang/ru.js", - "build/ckeditor/plugins/preview/lang/ka.js": "/build/ckeditor/plugins/preview/lang/ka.js", - "build/ckeditor/plugins/preview/lang/mn.js": "/build/ckeditor/plugins/preview/lang/mn.js", - "build/ckeditor/plugins/selectall/lang/bg.js": "/build/ckeditor/plugins/selectall/lang/bg.js", - "build/ckeditor/plugins/selectall/lang/ug.js": "/build/ckeditor/plugins/selectall/lang/ug.js", - "build/ckeditor/plugins/showblocks/lang/vi.js": "/build/ckeditor/plugins/showblocks/lang/vi.js", - "build/ckeditor/plugins/preview/lang/el.js": "/build/ckeditor/plugins/preview/lang/el.js", - "build/ckeditor/plugins/showblocks/lang/hu.js": "/build/ckeditor/plugins/showblocks/lang/hu.js", - "build/ckeditor/plugins/sourcedialog/lang/en.js": "/build/ckeditor/plugins/sourcedialog/lang/en.js", - "build/ckeditor/plugins/sourcedialog/lang/fr.js": "/build/ckeditor/plugins/sourcedialog/lang/fr.js", - "build/ckeditor/plugins/sourcedialog/lang/id.js": "/build/ckeditor/plugins/sourcedialog/lang/id.js", - "build/ckeditor/plugins/sourcedialog/lang/is.js": "/build/ckeditor/plugins/sourcedialog/lang/is.js", - "build/ckeditor/plugins/sourcedialog/lang/ko.js": "/build/ckeditor/plugins/sourcedialog/lang/ko.js", - "build/ckeditor/plugins/sourcedialog/lang/mn.js": "/build/ckeditor/plugins/sourcedialog/lang/mn.js", - "build/ckeditor/plugins/sourcedialog/lang/ms.js": "/build/ckeditor/plugins/sourcedialog/lang/ms.js", - "build/ckeditor/plugins/sourcedialog/lang/sq.js": "/build/ckeditor/plugins/sourcedialog/lang/sq.js", - "build/ckeditor/plugins/sourcedialog/lang/sv.js": "/build/ckeditor/plugins/sourcedialog/lang/sv.js", - "build/ckeditor/plugins/sourcedialog/lang/tr.js": "/build/ckeditor/plugins/sourcedialog/lang/tr.js", - "build/ckeditor/plugins/newpage/lang/bg.js": "/build/ckeditor/plugins/newpage/lang/bg.js", - "build/ckeditor/plugins/newpage/lang/gu.js": "/build/ckeditor/plugins/newpage/lang/gu.js", - "build/ckeditor/plugins/newpage/lang/sr.js": "/build/ckeditor/plugins/newpage/lang/sr.js", - "build/ckeditor/plugins/newpage/lang/uk.js": "/build/ckeditor/plugins/newpage/lang/uk.js", - "build/ckeditor/plugins/preview/lang/ar.js": "/build/ckeditor/plugins/preview/lang/ar.js", - "build/ckeditor/plugins/print/lang/th.js": "/build/ckeditor/plugins/print/lang/th.js", - "build/ckeditor/plugins/selectall/lang/el.js": "/build/ckeditor/plugins/selectall/lang/el.js", - "build/ckeditor/plugins/selectall/lang/ru.js": "/build/ckeditor/plugins/selectall/lang/ru.js", - "build/ckeditor/plugins/selectall/lang/uk.js": "/build/ckeditor/plugins/selectall/lang/uk.js", - "build/ckeditor/plugins/preview/lang/hi.js": "/build/ckeditor/plugins/preview/lang/hi.js", - "build/ckeditor/plugins/selectall/lang/si.js": "/build/ckeditor/plugins/selectall/lang/si.js", - "build/ckeditor/plugins/showblocks/lang/ar.js": "/build/ckeditor/plugins/showblocks/lang/ar.js", - "build/ckeditor/plugins/showblocks/lang/fr-ca.js": "/build/ckeditor/plugins/showblocks/lang/fr-ca.js", - "build/ckeditor/plugins/showblocks/lang/he.js": "/build/ckeditor/plugins/showblocks/lang/he.js", - "build/ckeditor/plugins/showblocks/lang/sr-latn.js": "/build/ckeditor/plugins/showblocks/lang/sr-latn.js", - "build/ckeditor/plugins/sourcedialog/lang/cs.js": "/build/ckeditor/plugins/sourcedialog/lang/cs.js", - "build/ckeditor/plugins/sourcedialog/lang/da.js": "/build/ckeditor/plugins/sourcedialog/lang/da.js", - "build/ckeditor/plugins/sourcedialog/lang/eo.js": "/build/ckeditor/plugins/sourcedialog/lang/eo.js", - "build/ckeditor/plugins/sourcedialog/lang/fi.js": "/build/ckeditor/plugins/sourcedialog/lang/fi.js", - "build/ckeditor/plugins/sourcedialog/lang/fo.js": "/build/ckeditor/plugins/sourcedialog/lang/fo.js", - "build/ckeditor/plugins/sourcedialog/lang/gl.js": "/build/ckeditor/plugins/sourcedialog/lang/gl.js", - "build/ckeditor/plugins/sourcedialog/lang/nb.js": "/build/ckeditor/plugins/sourcedialog/lang/nb.js", - "build/ckeditor/plugins/sourcedialog/lang/no.js": "/build/ckeditor/plugins/sourcedialog/lang/no.js", - "build/ckeditor/plugins/sourcedialog/lang/pt.js": "/build/ckeditor/plugins/sourcedialog/lang/pt.js", - "build/ckeditor/plugins/sourcedialog/lang/ro.js": "/build/ckeditor/plugins/sourcedialog/lang/ro.js", - "build/ckeditor/plugins/sourcedialog/lang/sk.js": "/build/ckeditor/plugins/sourcedialog/lang/sk.js", - "build/ckeditor/plugins/newpage/lang/ku.js": "/build/ckeditor/plugins/newpage/lang/ku.js", - "build/ckeditor/plugins/preview/lang/he.js": "/build/ckeditor/plugins/preview/lang/he.js", - "build/ckeditor/plugins/preview/lang/ug.js": "/build/ckeditor/plugins/preview/lang/ug.js", - "build/ckeditor/plugins/selectall/lang/fr-ca.js": "/build/ckeditor/plugins/selectall/lang/fr-ca.js", - "build/ckeditor/plugins/selectall/lang/sq.js": "/build/ckeditor/plugins/selectall/lang/sq.js", - "build/ckeditor/plugins/preview/lang/az.js": "/build/ckeditor/plugins/preview/lang/az.js", - "build/ckeditor/plugins/preview/lang/ca.js": "/build/ckeditor/plugins/preview/lang/ca.js", - "build/ckeditor/plugins/print/lang/km.js": "/build/ckeditor/plugins/print/lang/km.js", - "build/ckeditor/plugins/showblocks/lang/de-ch.js": "/build/ckeditor/plugins/showblocks/lang/de-ch.js", - "build/ckeditor/plugins/showblocks/lang/et.js": "/build/ckeditor/plugins/showblocks/lang/et.js", - "build/ckeditor/plugins/sourcedialog/lang/af.js": "/build/ckeditor/plugins/sourcedialog/lang/af.js", - "build/ckeditor/plugins/sourcedialog/lang/cy.js": "/build/ckeditor/plugins/sourcedialog/lang/cy.js", - "build/ckeditor/plugins/sourcedialog/lang/hr.js": "/build/ckeditor/plugins/sourcedialog/lang/hr.js", - "build/ckeditor/plugins/sourcedialog/lang/oc.js": "/build/ckeditor/plugins/sourcedialog/lang/oc.js", - "build/ckeditor/plugins/newpage/lang/mn.js": "/build/ckeditor/plugins/newpage/lang/mn.js", - "build/ckeditor/plugins/save/lang/km.js": "/build/ckeditor/plugins/save/lang/km.js", - "build/ckeditor/plugins/selectall/lang/ar.js": "/build/ckeditor/plugins/selectall/lang/ar.js", - "build/ckeditor/plugins/selectall/lang/de-ch.js": "/build/ckeditor/plugins/selectall/lang/de-ch.js", - "build/ckeditor/plugins/selectall/lang/es-mx.js": "/build/ckeditor/plugins/selectall/lang/es-mx.js", - "build/ckeditor/plugins/selectall/lang/sr.js": "/build/ckeditor/plugins/selectall/lang/sr.js", - "build/ckeditor/plugins/showblocks/lang/az.js": "/build/ckeditor/plugins/showblocks/lang/az.js", - "build/ckeditor/plugins/showblocks/lang/da.js": "/build/ckeditor/plugins/showblocks/lang/da.js", - "build/ckeditor/plugins/showblocks/lang/es-mx.js": "/build/ckeditor/plugins/showblocks/lang/es-mx.js", - "build/ckeditor/plugins/showblocks/lang/fr.js": "/build/ckeditor/plugins/showblocks/lang/fr.js", - "build/ckeditor/plugins/showblocks/lang/it.js": "/build/ckeditor/plugins/showblocks/lang/it.js", - "build/ckeditor/plugins/showblocks/lang/ja.js": "/build/ckeditor/plugins/showblocks/lang/ja.js", - "build/ckeditor/plugins/showblocks/lang/oc.js": "/build/ckeditor/plugins/showblocks/lang/oc.js", - "build/ckeditor/plugins/preview/lang/sr-latn.js": "/build/ckeditor/plugins/preview/lang/sr-latn.js", - "build/ckeditor/plugins/selectall/lang/fr.js": "/build/ckeditor/plugins/selectall/lang/fr.js", - "build/ckeditor/plugins/selectall/lang/pt-br.js": "/build/ckeditor/plugins/selectall/lang/pt-br.js", - "build/ckeditor/plugins/showblocks/lang/eo.js": "/build/ckeditor/plugins/showblocks/lang/eo.js", - "build/ckeditor/plugins/showblocks/lang/fi.js": "/build/ckeditor/plugins/showblocks/lang/fi.js", - "build/ckeditor/plugins/showblocks/lang/gl.js": "/build/ckeditor/plugins/showblocks/lang/gl.js", - "build/ckeditor/plugins/showblocks/lang/tr.js": "/build/ckeditor/plugins/showblocks/lang/tr.js", - "build/ckeditor/plugins/newpage/lang/ar.js": "/build/ckeditor/plugins/newpage/lang/ar.js", - "build/ckeditor/plugins/newpage/lang/el.js": "/build/ckeditor/plugins/newpage/lang/el.js", - "build/ckeditor/plugins/newpage/lang/fa.js": "/build/ckeditor/plugins/newpage/lang/fa.js", - "build/ckeditor/plugins/newpage/lang/hi.js": "/build/ckeditor/plugins/newpage/lang/hi.js", - "build/ckeditor/plugins/print/lang/gu.js": "/build/ckeditor/plugins/print/lang/gu.js", - "build/ckeditor/plugins/print/lang/hi.js": "/build/ckeditor/plugins/print/lang/hi.js", - "build/ckeditor/plugins/save/lang/ku.js": "/build/ckeditor/plugins/save/lang/ku.js", - "build/ckeditor/plugins/selectall/lang/ca.js": "/build/ckeditor/plugins/selectall/lang/ca.js", - "build/ckeditor/plugins/selectall/lang/fa.js": "/build/ckeditor/plugins/selectall/lang/fa.js", - "build/ckeditor/plugins/selectall/lang/he.js": "/build/ckeditor/plugins/selectall/lang/he.js", - "build/ckeditor/plugins/selectall/lang/lt.js": "/build/ckeditor/plugins/selectall/lang/lt.js", - "build/ckeditor/plugins/selectall/lang/vi.js": "/build/ckeditor/plugins/selectall/lang/vi.js", - "build/ckeditor/plugins/showblocks/lang/ca.js": "/build/ckeditor/plugins/showblocks/lang/ca.js", - "build/ckeditor/plugins/showblocks/lang/de.js": "/build/ckeditor/plugins/showblocks/lang/de.js", - "build/ckeditor/plugins/showblocks/lang/eu.js": "/build/ckeditor/plugins/showblocks/lang/eu.js", - "build/ckeditor/plugins/showblocks/lang/hr.js": "/build/ckeditor/plugins/showblocks/lang/hr.js", - "build/ckeditor/plugins/showblocks/lang/id.js": "/build/ckeditor/plugins/showblocks/lang/id.js", - "build/ckeditor/plugins/showblocks/lang/lv.js": "/build/ckeditor/plugins/showblocks/lang/lv.js", - "build/ckeditor/plugins/showblocks/lang/ro.js": "/build/ckeditor/plugins/showblocks/lang/ro.js", - "build/ckeditor/plugins/newpage/lang/ja.js": "/build/ckeditor/plugins/newpage/lang/ja.js", - "build/ckeditor/plugins/newpage/lang/sr-latn.js": "/build/ckeditor/plugins/newpage/lang/sr-latn.js", - "build/ckeditor/plugins/selectall/lang/az.js": "/build/ckeditor/plugins/selectall/lang/az.js", - "build/ckeditor/plugins/selectall/lang/de.js": "/build/ckeditor/plugins/selectall/lang/de.js", - "build/ckeditor/plugins/selectall/lang/es.js": "/build/ckeditor/plugins/selectall/lang/es.js", - "build/ckeditor/plugins/selectall/lang/gl.js": "/build/ckeditor/plugins/selectall/lang/gl.js", - "build/ckeditor/plugins/selectall/lang/hu.js": "/build/ckeditor/plugins/selectall/lang/hu.js", - "build/ckeditor/plugins/selectall/lang/nl.js": "/build/ckeditor/plugins/selectall/lang/nl.js", - "build/ckeditor/plugins/selectall/lang/pl.js": "/build/ckeditor/plugins/selectall/lang/pl.js", - "build/ckeditor/plugins/selectall/lang/sr-latn.js": "/build/ckeditor/plugins/selectall/lang/sr-latn.js", - "build/ckeditor/plugins/showblocks/lang/es.js": "/build/ckeditor/plugins/showblocks/lang/es.js", - "build/ckeditor/plugins/showblocks/lang/sl.js": "/build/ckeditor/plugins/showblocks/lang/sl.js", - "build/ckeditor/plugins/showblocks/lang/zh-cn.js": "/build/ckeditor/plugins/showblocks/lang/zh-cn.js", - "build/ckeditor/plugins/preview/lang/fr-ca.js": "/build/ckeditor/plugins/preview/lang/fr-ca.js", - "build/ckeditor/plugins/preview/lang/tt.js": "/build/ckeditor/plugins/preview/lang/tt.js", - "build/ckeditor/plugins/save/lang/el.js": "/build/ckeditor/plugins/save/lang/el.js", - "build/ckeditor/plugins/selectall/lang/af.js": "/build/ckeditor/plugins/selectall/lang/af.js", - "build/ckeditor/plugins/selectall/lang/et.js": "/build/ckeditor/plugins/selectall/lang/et.js", - "build/ckeditor/plugins/selectall/lang/it.js": "/build/ckeditor/plugins/selectall/lang/it.js", - "build/ckeditor/plugins/selectall/lang/ja.js": "/build/ckeditor/plugins/selectall/lang/ja.js", - "build/ckeditor/plugins/selectall/lang/oc.js": "/build/ckeditor/plugins/selectall/lang/oc.js", - "build/ckeditor/plugins/selectall/lang/pt.js": "/build/ckeditor/plugins/selectall/lang/pt.js", - "build/ckeditor/plugins/selectall/lang/ro.js": "/build/ckeditor/plugins/selectall/lang/ro.js", - "build/ckeditor/plugins/selectall/lang/sk.js": "/build/ckeditor/plugins/selectall/lang/sk.js", - "build/ckeditor/plugins/showblocks/lang/cy.js": "/build/ckeditor/plugins/showblocks/lang/cy.js", - "build/ckeditor/plugins/showblocks/lang/en-au.js": "/build/ckeditor/plugins/showblocks/lang/en-au.js", - "build/ckeditor/plugins/showblocks/lang/en-ca.js": "/build/ckeditor/plugins/showblocks/lang/en-ca.js", - "build/ckeditor/plugins/showblocks/lang/en-gb.js": "/build/ckeditor/plugins/showblocks/lang/en-gb.js", - "build/ckeditor/plugins/showblocks/lang/sk.js": "/build/ckeditor/plugins/showblocks/lang/sk.js", - "build/ckeditor/plugins/newpage/lang/es-mx.js": "/build/ckeditor/plugins/newpage/lang/es-mx.js", - "build/ckeditor/plugins/newpage/lang/fr-ca.js": "/build/ckeditor/plugins/newpage/lang/fr-ca.js", - "build/ckeditor/plugins/preview/lang/fa.js": "/build/ckeditor/plugins/preview/lang/fa.js", - "build/ckeditor/plugins/preview/lang/ku.js": "/build/ckeditor/plugins/preview/lang/ku.js", - "build/ckeditor/plugins/preview/lang/sv.js": "/build/ckeditor/plugins/preview/lang/sv.js", - "build/ckeditor/plugins/print/lang/ka.js": "/build/ckeditor/plugins/print/lang/ka.js", - "build/ckeditor/plugins/selectall/lang/fi.js": "/build/ckeditor/plugins/selectall/lang/fi.js", - "build/ckeditor/plugins/selectall/lang/lv.js": "/build/ckeditor/plugins/selectall/lang/lv.js", - "build/ckeditor/plugins/selectall/lang/tr.js": "/build/ckeditor/plugins/selectall/lang/tr.js", - "build/ckeditor/plugins/showblocks/lang/cs.js": "/build/ckeditor/plugins/showblocks/lang/cs.js", - "build/ckeditor/plugins/showblocks/lang/is.js": "/build/ckeditor/plugins/showblocks/lang/is.js", - "build/ckeditor/plugins/showblocks/lang/ko.js": "/build/ckeditor/plugins/showblocks/lang/ko.js", - "build/ckeditor/plugins/showblocks/lang/lt.js": "/build/ckeditor/plugins/showblocks/lang/lt.js", - "build/ckeditor/plugins/showblocks/lang/pt.js": "/build/ckeditor/plugins/showblocks/lang/pt.js", - "build/ckeditor/plugins/showblocks/lang/sq.js": "/build/ckeditor/plugins/showblocks/lang/sq.js", - "build/ckeditor/plugins/newpage/lang/eu.js": "/build/ckeditor/plugins/newpage/lang/eu.js", - "build/ckeditor/plugins/newpage/lang/lt.js": "/build/ckeditor/plugins/newpage/lang/lt.js", - "build/ckeditor/plugins/newpage/lang/ug.js": "/build/ckeditor/plugins/newpage/lang/ug.js", - "build/ckeditor/plugins/preview/lang/eo.js": "/build/ckeditor/plugins/preview/lang/eo.js", - "build/ckeditor/plugins/preview/lang/es-mx.js": "/build/ckeditor/plugins/preview/lang/es-mx.js", - "build/ckeditor/plugins/preview/lang/ja.js": "/build/ckeditor/plugins/preview/lang/ja.js", - "build/ckeditor/plugins/preview/lang/pt.js": "/build/ckeditor/plugins/preview/lang/pt.js", - "build/ckeditor/plugins/save/lang/ka.js": "/build/ckeditor/plugins/save/lang/ka.js", - "build/ckeditor/plugins/save/lang/ru.js": "/build/ckeditor/plugins/save/lang/ru.js", - "build/ckeditor/plugins/save/lang/th.js": "/build/ckeditor/plugins/save/lang/th.js", - "build/ckeditor/plugins/selectall/lang/en-au.js": "/build/ckeditor/plugins/selectall/lang/en-au.js", - "build/ckeditor/plugins/selectall/lang/en-ca.js": "/build/ckeditor/plugins/selectall/lang/en-ca.js", - "build/ckeditor/plugins/selectall/lang/en-gb.js": "/build/ckeditor/plugins/selectall/lang/en-gb.js", - "build/ckeditor/plugins/selectall/lang/ko.js": "/build/ckeditor/plugins/selectall/lang/ko.js", - "build/ckeditor/plugins/showblocks/lang/fo.js": "/build/ckeditor/plugins/showblocks/lang/fo.js", - "build/ckeditor/plugins/showblocks/lang/nl.js": "/build/ckeditor/plugins/showblocks/lang/nl.js", - "build/ckeditor/plugins/showblocks/lang/pl.js": "/build/ckeditor/plugins/showblocks/lang/pl.js", - "build/ckeditor/plugins/showblocks/lang/zh.js": "/build/ckeditor/plugins/showblocks/lang/zh.js", - "build/ckeditor/plugins/newpage/lang/cs.js": "/build/ckeditor/plugins/newpage/lang/cs.js", - "build/ckeditor/plugins/newpage/lang/cy.js": "/build/ckeditor/plugins/newpage/lang/cy.js", - "build/ckeditor/plugins/newpage/lang/oc.js": "/build/ckeditor/plugins/newpage/lang/oc.js", - "build/ckeditor/plugins/newpage/lang/sk.js": "/build/ckeditor/plugins/newpage/lang/sk.js", - "build/ckeditor/plugins/preview/lang/bg.js": "/build/ckeditor/plugins/preview/lang/bg.js", - "build/ckeditor/plugins/preview/lang/lv.js": "/build/ckeditor/plugins/preview/lang/lv.js", - "build/ckeditor/plugins/preview/lang/ro.js": "/build/ckeditor/plugins/preview/lang/ro.js", - "build/ckeditor/plugins/print/lang/el.js": "/build/ckeditor/plugins/print/lang/el.js", - "build/ckeditor/plugins/selectall/lang/bs.js": "/build/ckeditor/plugins/selectall/lang/bs.js", - "build/ckeditor/plugins/selectall/lang/cy.js": "/build/ckeditor/plugins/selectall/lang/cy.js", - "build/ckeditor/plugins/selectall/lang/eo.js": "/build/ckeditor/plugins/selectall/lang/eo.js", - "build/ckeditor/plugins/selectall/lang/eu.js": "/build/ckeditor/plugins/selectall/lang/eu.js", - "build/ckeditor/plugins/selectall/lang/sv.js": "/build/ckeditor/plugins/selectall/lang/sv.js", - "build/ckeditor/plugins/showblocks/lang/af.js": "/build/ckeditor/plugins/showblocks/lang/af.js", - "build/ckeditor/plugins/showblocks/lang/bn.js": "/build/ckeditor/plugins/showblocks/lang/bn.js", - "build/ckeditor/plugins/showblocks/lang/bs.js": "/build/ckeditor/plugins/showblocks/lang/bs.js", - "build/ckeditor/plugins/showblocks/lang/en.js": "/build/ckeditor/plugins/showblocks/lang/en.js", - "build/ckeditor/plugins/showblocks/lang/mk.js": "/build/ckeditor/plugins/showblocks/lang/mk.js", - "build/ckeditor/plugins/showblocks/lang/ms.js": "/build/ckeditor/plugins/showblocks/lang/ms.js", - "build/ckeditor/plugins/showblocks/lang/nb.js": "/build/ckeditor/plugins/showblocks/lang/nb.js", - "build/ckeditor/plugins/showblocks/lang/no.js": "/build/ckeditor/plugins/showblocks/lang/no.js", - "build/ckeditor/plugins/newpage/lang/az.js": "/build/ckeditor/plugins/newpage/lang/az.js", - "build/ckeditor/plugins/newpage/lang/bs.js": "/build/ckeditor/plugins/newpage/lang/bs.js", - "build/ckeditor/plugins/newpage/lang/de-ch.js": "/build/ckeditor/plugins/newpage/lang/de-ch.js", - "build/ckeditor/plugins/newpage/lang/es.js": "/build/ckeditor/plugins/newpage/lang/es.js", - "build/ckeditor/plugins/newpage/lang/fo.js": "/build/ckeditor/plugins/newpage/lang/fo.js", - "build/ckeditor/plugins/newpage/lang/fr.js": "/build/ckeditor/plugins/newpage/lang/fr.js", - "build/ckeditor/plugins/newpage/lang/hr.js": "/build/ckeditor/plugins/newpage/lang/hr.js", - "build/ckeditor/plugins/newpage/lang/ko.js": "/build/ckeditor/plugins/newpage/lang/ko.js", - "build/ckeditor/plugins/newpage/lang/nl.js": "/build/ckeditor/plugins/newpage/lang/nl.js", - "build/ckeditor/plugins/newpage/lang/ro.js": "/build/ckeditor/plugins/newpage/lang/ro.js", - "build/ckeditor/plugins/newpage/lang/tt.js": "/build/ckeditor/plugins/newpage/lang/tt.js", - "build/ckeditor/plugins/preview/lang/oc.js": "/build/ckeditor/plugins/preview/lang/oc.js", - "build/ckeditor/plugins/preview/lang/pt-br.js": "/build/ckeditor/plugins/preview/lang/pt-br.js", - "build/ckeditor/plugins/preview/lang/si.js": "/build/ckeditor/plugins/preview/lang/si.js", - "build/ckeditor/plugins/save/lang/mn.js": "/build/ckeditor/plugins/save/lang/mn.js", - "build/ckeditor/plugins/save/lang/uk.js": "/build/ckeditor/plugins/save/lang/uk.js", - "build/ckeditor/plugins/selectall/lang/cs.js": "/build/ckeditor/plugins/selectall/lang/cs.js", - "build/ckeditor/plugins/selectall/lang/fo.js": "/build/ckeditor/plugins/selectall/lang/fo.js", - "build/ckeditor/plugins/selectall/lang/hr.js": "/build/ckeditor/plugins/selectall/lang/hr.js", - "build/ckeditor/plugins/selectall/lang/id.js": "/build/ckeditor/plugins/selectall/lang/id.js", - "build/ckeditor/plugins/selectall/lang/ms.js": "/build/ckeditor/plugins/selectall/lang/ms.js", - "build/ckeditor/plugins/showblocks/lang/sv.js": "/build/ckeditor/plugins/showblocks/lang/sv.js", - "build/ckeditor/plugins/newpage/lang/ca.js": "/build/ckeditor/plugins/newpage/lang/ca.js", - "build/ckeditor/plugins/newpage/lang/gl.js": "/build/ckeditor/plugins/newpage/lang/gl.js", - "build/ckeditor/plugins/newpage/lang/id.js": "/build/ckeditor/plugins/newpage/lang/id.js", - "build/ckeditor/plugins/newpage/lang/it.js": "/build/ckeditor/plugins/newpage/lang/it.js", - "build/ckeditor/plugins/newpage/lang/ms.js": "/build/ckeditor/plugins/newpage/lang/ms.js", - "build/ckeditor/plugins/newpage/lang/pt.js": "/build/ckeditor/plugins/newpage/lang/pt.js", - "build/ckeditor/plugins/newpage/lang/zh.js": "/build/ckeditor/plugins/newpage/lang/zh.js", - "build/ckeditor/plugins/preview/lang/da.js": "/build/ckeditor/plugins/preview/lang/da.js", - "build/ckeditor/plugins/preview/lang/es.js": "/build/ckeditor/plugins/preview/lang/es.js", - "build/ckeditor/plugins/preview/lang/gl.js": "/build/ckeditor/plugins/preview/lang/gl.js", - "build/ckeditor/plugins/preview/lang/ko.js": "/build/ckeditor/plugins/preview/lang/ko.js", - "build/ckeditor/plugins/preview/lang/nb.js": "/build/ckeditor/plugins/preview/lang/nb.js", - "build/ckeditor/plugins/preview/lang/no.js": "/build/ckeditor/plugins/preview/lang/no.js", - "build/ckeditor/plugins/preview/lang/vi.js": "/build/ckeditor/plugins/preview/lang/vi.js", - "build/ckeditor/plugins/print/lang/ku.js": "/build/ckeditor/plugins/print/lang/ku.js", - "build/ckeditor/plugins/print/lang/tt.js": "/build/ckeditor/plugins/print/lang/tt.js", - "build/ckeditor/plugins/selectall/lang/en.js": "/build/ckeditor/plugins/selectall/lang/en.js", - "build/ckeditor/plugins/selectall/lang/is.js": "/build/ckeditor/plugins/selectall/lang/is.js", - "build/ckeditor/plugins/selectall/lang/mk.js": "/build/ckeditor/plugins/selectall/lang/mk.js", - "build/ckeditor/plugins/selectall/lang/sl.js": "/build/ckeditor/plugins/selectall/lang/sl.js", - "build/ckeditor/plugins/newpage/lang/af.js": "/build/ckeditor/plugins/newpage/lang/af.js", - "build/ckeditor/plugins/newpage/lang/en-au.js": "/build/ckeditor/plugins/newpage/lang/en-au.js", - "build/ckeditor/plugins/newpage/lang/en-ca.js": "/build/ckeditor/plugins/newpage/lang/en-ca.js", - "build/ckeditor/plugins/newpage/lang/en-gb.js": "/build/ckeditor/plugins/newpage/lang/en-gb.js", - "build/ckeditor/plugins/newpage/lang/he.js": "/build/ckeditor/plugins/newpage/lang/he.js", - "build/ckeditor/plugins/newpage/lang/pl.js": "/build/ckeditor/plugins/newpage/lang/pl.js", - "build/ckeditor/plugins/newpage/lang/vi.js": "/build/ckeditor/plugins/newpage/lang/vi.js", - "build/ckeditor/plugins/preview/lang/de-ch.js": "/build/ckeditor/plugins/preview/lang/de-ch.js", - "build/ckeditor/plugins/preview/lang/fo.js": "/build/ckeditor/plugins/preview/lang/fo.js", - "build/ckeditor/plugins/preview/lang/tr.js": "/build/ckeditor/plugins/preview/lang/tr.js", - "build/ckeditor/plugins/save/lang/fr-ca.js": "/build/ckeditor/plugins/save/lang/fr-ca.js", - "build/ckeditor/plugins/save/lang/sr.js": "/build/ckeditor/plugins/save/lang/sr.js", - "build/ckeditor/plugins/selectall/lang/da.js": "/build/ckeditor/plugins/selectall/lang/da.js", - "build/ckeditor/plugins/selectall/lang/zh-cn.js": "/build/ckeditor/plugins/selectall/lang/zh-cn.js", - "build/ckeditor/plugins/newpage/lang/de.js": "/build/ckeditor/plugins/newpage/lang/de.js", - "build/ckeditor/plugins/newpage/lang/eo.js": "/build/ckeditor/plugins/newpage/lang/eo.js", - "build/ckeditor/plugins/newpage/lang/is.js": "/build/ckeditor/plugins/newpage/lang/is.js", - "build/ckeditor/plugins/newpage/lang/lv.js": "/build/ckeditor/plugins/newpage/lang/lv.js", - "build/ckeditor/plugins/newpage/lang/sl.js": "/build/ckeditor/plugins/newpage/lang/sl.js", - "build/ckeditor/plugins/newpage/lang/tr.js": "/build/ckeditor/plugins/newpage/lang/tr.js", - "build/ckeditor/plugins/preview/lang/en-au.js": "/build/ckeditor/plugins/preview/lang/en-au.js", - "build/ckeditor/plugins/preview/lang/en-ca.js": "/build/ckeditor/plugins/preview/lang/en-ca.js", - "build/ckeditor/plugins/preview/lang/en-gb.js": "/build/ckeditor/plugins/preview/lang/en-gb.js", - "build/ckeditor/plugins/preview/lang/eu.js": "/build/ckeditor/plugins/preview/lang/eu.js", - "build/ckeditor/plugins/preview/lang/fi.js": "/build/ckeditor/plugins/preview/lang/fi.js", - "build/ckeditor/plugins/preview/lang/hu.js": "/build/ckeditor/plugins/preview/lang/hu.js", - "build/ckeditor/plugins/preview/lang/lt.js": "/build/ckeditor/plugins/preview/lang/lt.js", - "build/ckeditor/plugins/print/lang/mn.js": "/build/ckeditor/plugins/print/lang/mn.js", - "build/ckeditor/plugins/print/lang/ru.js": "/build/ckeditor/plugins/print/lang/ru.js", - "build/ckeditor/plugins/print/lang/sr-latn.js": "/build/ckeditor/plugins/print/lang/sr-latn.js", - "build/ckeditor/plugins/print/lang/sr.js": "/build/ckeditor/plugins/print/lang/sr.js", - "build/ckeditor/plugins/save/lang/sr-latn.js": "/build/ckeditor/plugins/save/lang/sr-latn.js", - "build/ckeditor/plugins/selectall/lang/nb.js": "/build/ckeditor/plugins/selectall/lang/nb.js", - "build/ckeditor/plugins/selectall/lang/no.js": "/build/ckeditor/plugins/selectall/lang/no.js", - "build/ckeditor/plugins/newpage/lang/fi.js": "/build/ckeditor/plugins/newpage/lang/fi.js", - "build/ckeditor/plugins/newpage/lang/hu.js": "/build/ckeditor/plugins/newpage/lang/hu.js", - "build/ckeditor/plugins/newpage/lang/sq.js": "/build/ckeditor/plugins/newpage/lang/sq.js", - "build/ckeditor/plugins/newpage/lang/zh-cn.js": "/build/ckeditor/plugins/newpage/lang/zh-cn.js", - "build/ckeditor/plugins/preview/lang/af.js": "/build/ckeditor/plugins/preview/lang/af.js", - "build/ckeditor/plugins/preview/lang/hr.js": "/build/ckeditor/plugins/preview/lang/hr.js", - "build/ckeditor/plugins/preview/lang/id.js": "/build/ckeditor/plugins/preview/lang/id.js", - "build/ckeditor/plugins/preview/lang/is.js": "/build/ckeditor/plugins/preview/lang/is.js", - "build/ckeditor/plugins/preview/lang/it.js": "/build/ckeditor/plugins/preview/lang/it.js", - "build/ckeditor/plugins/preview/lang/nl.js": "/build/ckeditor/plugins/preview/lang/nl.js", - "build/ckeditor/plugins/preview/lang/sl.js": "/build/ckeditor/plugins/preview/lang/sl.js", - "build/ckeditor/plugins/preview/lang/sq.js": "/build/ckeditor/plugins/preview/lang/sq.js", - "build/ckeditor/plugins/preview/lang/zh-cn.js": "/build/ckeditor/plugins/preview/lang/zh-cn.js", - "build/ckeditor/plugins/print/lang/es-mx.js": "/build/ckeditor/plugins/print/lang/es-mx.js", - "build/ckeditor/plugins/print/lang/fr-ca.js": "/build/ckeditor/plugins/print/lang/fr-ca.js", - "build/ckeditor/plugins/print/lang/pt-br.js": "/build/ckeditor/plugins/print/lang/pt-br.js", - "build/ckeditor/plugins/save/lang/de-ch.js": "/build/ckeditor/plugins/save/lang/de-ch.js", - "build/ckeditor/plugins/save/lang/et.js": "/build/ckeditor/plugins/save/lang/et.js", - "build/ckeditor/plugins/save/lang/tt.js": "/build/ckeditor/plugins/save/lang/tt.js", - "build/ckeditor/plugins/newpage/lang/en.js": "/build/ckeditor/plugins/newpage/lang/en.js", - "build/ckeditor/plugins/newpage/lang/et.js": "/build/ckeditor/plugins/newpage/lang/et.js", - "build/ckeditor/plugins/newpage/lang/mk.js": "/build/ckeditor/plugins/newpage/lang/mk.js", - "build/ckeditor/plugins/preview/lang/bs.js": "/build/ckeditor/plugins/preview/lang/bs.js", - "build/ckeditor/plugins/preview/lang/cy.js": "/build/ckeditor/plugins/preview/lang/cy.js", - "build/ckeditor/plugins/preview/lang/de.js": "/build/ckeditor/plugins/preview/lang/de.js", - "build/ckeditor/plugins/preview/lang/et.js": "/build/ckeditor/plugins/preview/lang/et.js", - "build/ckeditor/plugins/preview/lang/pl.js": "/build/ckeditor/plugins/preview/lang/pl.js", - "build/ckeditor/plugins/preview/lang/sk.js": "/build/ckeditor/plugins/preview/lang/sk.js", - "build/ckeditor/plugins/print/lang/ar.js": "/build/ckeditor/plugins/print/lang/ar.js", - "build/ckeditor/plugins/print/lang/bg.js": "/build/ckeditor/plugins/print/lang/bg.js", - "build/ckeditor/plugins/print/lang/de-ch.js": "/build/ckeditor/plugins/print/lang/de-ch.js", - "build/ckeditor/plugins/print/lang/et.js": "/build/ckeditor/plugins/print/lang/et.js", - "build/ckeditor/plugins/print/lang/he.js": "/build/ckeditor/plugins/print/lang/he.js", - "build/ckeditor/plugins/print/lang/hu.js": "/build/ckeditor/plugins/print/lang/hu.js", - "build/ckeditor/plugins/print/lang/lt.js": "/build/ckeditor/plugins/print/lang/lt.js", - "build/ckeditor/plugins/print/lang/ro.js": "/build/ckeditor/plugins/print/lang/ro.js", - "build/ckeditor/plugins/save/lang/az.js": "/build/ckeditor/plugins/save/lang/az.js", - "build/ckeditor/plugins/save/lang/fr.js": "/build/ckeditor/plugins/save/lang/fr.js", - "build/ckeditor/plugins/save/lang/oc.js": "/build/ckeditor/plugins/save/lang/oc.js", - "build/ckeditor/plugins/selectall/lang/zh.js": "/build/ckeditor/plugins/selectall/lang/zh.js", - "build/ckeditor/plugins/newpage/lang/da.js": "/build/ckeditor/plugins/newpage/lang/da.js", - "build/ckeditor/plugins/newpage/lang/nb.js": "/build/ckeditor/plugins/newpage/lang/nb.js", - "build/ckeditor/plugins/newpage/lang/no.js": "/build/ckeditor/plugins/newpage/lang/no.js", - "build/ckeditor/plugins/newpage/lang/pt-br.js": "/build/ckeditor/plugins/newpage/lang/pt-br.js", - "build/ckeditor/plugins/newpage/lang/sv.js": "/build/ckeditor/plugins/newpage/lang/sv.js", - "build/ckeditor/plugins/preview/lang/cs.js": "/build/ckeditor/plugins/preview/lang/cs.js", - "build/ckeditor/plugins/preview/lang/en.js": "/build/ckeditor/plugins/preview/lang/en.js", - "build/ckeditor/plugins/preview/lang/fr.js": "/build/ckeditor/plugins/preview/lang/fr.js", - "build/ckeditor/plugins/preview/lang/mk.js": "/build/ckeditor/plugins/preview/lang/mk.js", - "build/ckeditor/plugins/print/lang/ca.js": "/build/ckeditor/plugins/print/lang/ca.js", - "build/ckeditor/plugins/print/lang/eu.js": "/build/ckeditor/plugins/print/lang/eu.js", - "build/ckeditor/plugins/print/lang/nl.js": "/build/ckeditor/plugins/print/lang/nl.js", - "build/ckeditor/plugins/print/lang/zh-cn.js": "/build/ckeditor/plugins/print/lang/zh-cn.js", - "build/ckeditor/plugins/save/lang/bg.js": "/build/ckeditor/plugins/save/lang/bg.js", - "build/ckeditor/plugins/save/lang/es-mx.js": "/build/ckeditor/plugins/save/lang/es-mx.js", - "build/ckeditor/plugins/save/lang/fa.js": "/build/ckeditor/plugins/save/lang/fa.js", - "build/ckeditor/plugins/save/lang/he.js": "/build/ckeditor/plugins/save/lang/he.js", - "build/ckeditor/plugins/save/lang/lt.js": "/build/ckeditor/plugins/save/lang/lt.js", - "build/ckeditor/plugins/save/lang/ug.js": "/build/ckeditor/plugins/save/lang/ug.js", - "build/ckeditor/plugins/preview/lang/ms.js": "/build/ckeditor/plugins/preview/lang/ms.js", - "build/ckeditor/plugins/preview/lang/zh.js": "/build/ckeditor/plugins/preview/lang/zh.js", - "build/ckeditor/plugins/print/lang/bs.js": "/build/ckeditor/plugins/print/lang/bs.js", - "build/ckeditor/plugins/print/lang/cy.js": "/build/ckeditor/plugins/print/lang/cy.js", - "build/ckeditor/plugins/print/lang/en-au.js": "/build/ckeditor/plugins/print/lang/en-au.js", - "build/ckeditor/plugins/print/lang/en-ca.js": "/build/ckeditor/plugins/print/lang/en-ca.js", - "build/ckeditor/plugins/print/lang/en-gb.js": "/build/ckeditor/plugins/print/lang/en-gb.js", - "build/ckeditor/plugins/print/lang/es.js": "/build/ckeditor/plugins/print/lang/es.js", - "build/ckeditor/plugins/print/lang/fr.js": "/build/ckeditor/plugins/print/lang/fr.js", - "build/ckeditor/plugins/print/lang/gl.js": "/build/ckeditor/plugins/print/lang/gl.js", - "build/ckeditor/plugins/print/lang/nb.js": "/build/ckeditor/plugins/print/lang/nb.js", - "build/ckeditor/plugins/print/lang/no.js": "/build/ckeditor/plugins/print/lang/no.js", - "build/ckeditor/plugins/print/lang/oc.js": "/build/ckeditor/plugins/print/lang/oc.js", - "build/ckeditor/plugins/print/lang/pt.js": "/build/ckeditor/plugins/print/lang/pt.js", - "build/ckeditor/plugins/print/lang/sv.js": "/build/ckeditor/plugins/print/lang/sv.js", - "build/ckeditor/plugins/print/lang/uk.js": "/build/ckeditor/plugins/print/lang/uk.js", - "build/ckeditor/plugins/save/lang/de.js": "/build/ckeditor/plugins/save/lang/de.js", - "build/ckeditor/plugins/save/lang/gu.js": "/build/ckeditor/plugins/save/lang/gu.js", - "build/ckeditor/plugins/save/lang/hi.js": "/build/ckeditor/plugins/save/lang/hi.js", - "build/ckeditor/plugins/save/lang/lv.js": "/build/ckeditor/plugins/save/lang/lv.js", - "build/ckeditor/plugins/save/lang/pt-br.js": "/build/ckeditor/plugins/save/lang/pt-br.js", - "build/ckeditor/plugins/save/lang/ro.js": "/build/ckeditor/plugins/save/lang/ro.js", - "build/ckeditor/plugins/save/lang/zh-cn.js": "/build/ckeditor/plugins/save/lang/zh-cn.js", - "build/ckeditor/plugins/print/lang/az.js": "/build/ckeditor/plugins/print/lang/az.js", - "build/ckeditor/plugins/print/lang/da.js": "/build/ckeditor/plugins/print/lang/da.js", - "build/ckeditor/plugins/print/lang/de.js": "/build/ckeditor/plugins/print/lang/de.js", - "build/ckeditor/plugins/print/lang/fi.js": "/build/ckeditor/plugins/print/lang/fi.js", - "build/ckeditor/plugins/print/lang/hr.js": "/build/ckeditor/plugins/print/lang/hr.js", - "build/ckeditor/plugins/print/lang/lv.js": "/build/ckeditor/plugins/print/lang/lv.js", - "build/ckeditor/plugins/print/lang/sl.js": "/build/ckeditor/plugins/print/lang/sl.js", - "build/ckeditor/plugins/print/lang/tr.js": "/build/ckeditor/plugins/print/lang/tr.js", - "build/ckeditor/plugins/print/lang/ug.js": "/build/ckeditor/plugins/print/lang/ug.js", - "build/ckeditor/plugins/save/lang/eo.js": "/build/ckeditor/plugins/save/lang/eo.js", - "build/ckeditor/plugins/save/lang/fi.js": "/build/ckeditor/plugins/save/lang/fi.js", - "build/ckeditor/plugins/save/lang/sk.js": "/build/ckeditor/plugins/save/lang/sk.js", - "build/ckeditor/plugins/print/lang/fa.js": "/build/ckeditor/plugins/print/lang/fa.js", - "build/ckeditor/plugins/print/lang/fo.js": "/build/ckeditor/plugins/print/lang/fo.js", - "build/ckeditor/plugins/print/lang/is.js": "/build/ckeditor/plugins/print/lang/is.js", - "build/ckeditor/plugins/print/lang/it.js": "/build/ckeditor/plugins/print/lang/it.js", - "build/ckeditor/plugins/print/lang/ja.js": "/build/ckeditor/plugins/print/lang/ja.js", - "build/ckeditor/plugins/print/lang/ko.js": "/build/ckeditor/plugins/print/lang/ko.js", - "build/ckeditor/plugins/print/lang/pl.js": "/build/ckeditor/plugins/print/lang/pl.js", - "build/ckeditor/plugins/print/lang/sq.js": "/build/ckeditor/plugins/print/lang/sq.js", - "build/ckeditor/plugins/print/lang/zh.js": "/build/ckeditor/plugins/print/lang/zh.js", - "build/ckeditor/plugins/save/lang/cs.js": "/build/ckeditor/plugins/save/lang/cs.js", - "build/ckeditor/plugins/save/lang/en-au.js": "/build/ckeditor/plugins/save/lang/en-au.js", - "build/ckeditor/plugins/save/lang/en-ca.js": "/build/ckeditor/plugins/save/lang/en-ca.js", - "build/ckeditor/plugins/save/lang/en-gb.js": "/build/ckeditor/plugins/save/lang/en-gb.js", - "build/ckeditor/plugins/save/lang/es.js": "/build/ckeditor/plugins/save/lang/es.js", - "build/ckeditor/plugins/save/lang/hu.js": "/build/ckeditor/plugins/save/lang/hu.js", - "build/ckeditor/plugins/save/lang/nl.js": "/build/ckeditor/plugins/save/lang/nl.js", - "build/ckeditor/plugins/save/lang/pt.js": "/build/ckeditor/plugins/save/lang/pt.js", - "build/ckeditor/plugins/print/lang/en.js": "/build/ckeditor/plugins/print/lang/en.js", - "build/ckeditor/plugins/print/lang/eo.js": "/build/ckeditor/plugins/print/lang/eo.js", - "build/ckeditor/plugins/print/lang/id.js": "/build/ckeditor/plugins/print/lang/id.js", - "build/ckeditor/plugins/print/lang/mk.js": "/build/ckeditor/plugins/print/lang/mk.js", - "build/ckeditor/plugins/print/lang/ms.js": "/build/ckeditor/plugins/print/lang/ms.js", - "build/ckeditor/plugins/print/lang/sk.js": "/build/ckeditor/plugins/print/lang/sk.js", - "build/ckeditor/plugins/save/lang/af.js": "/build/ckeditor/plugins/save/lang/af.js", - "build/ckeditor/plugins/save/lang/ar.js": "/build/ckeditor/plugins/save/lang/ar.js", - "build/ckeditor/plugins/save/lang/gl.js": "/build/ckeditor/plugins/save/lang/gl.js", - "build/ckeditor/plugins/save/lang/id.js": "/build/ckeditor/plugins/save/lang/id.js", - "build/ckeditor/plugins/save/lang/ja.js": "/build/ckeditor/plugins/save/lang/ja.js", - "build/ckeditor/plugins/save/lang/ko.js": "/build/ckeditor/plugins/save/lang/ko.js", - "build/ckeditor/plugins/save/lang/ms.js": "/build/ckeditor/plugins/save/lang/ms.js", - "build/ckeditor/plugins/save/lang/pl.js": "/build/ckeditor/plugins/save/lang/pl.js", - "build/ckeditor/plugins/save/lang/sl.js": "/build/ckeditor/plugins/save/lang/sl.js", - "build/ckeditor/plugins/save/lang/tr.js": "/build/ckeditor/plugins/save/lang/tr.js", - "build/ckeditor/plugins/save/lang/zh.js": "/build/ckeditor/plugins/save/lang/zh.js", - "build/ckeditor/plugins/print/lang/af.js": "/build/ckeditor/plugins/print/lang/af.js", - "build/ckeditor/plugins/print/lang/cs.js": "/build/ckeditor/plugins/print/lang/cs.js", - "build/ckeditor/plugins/save/lang/bs.js": "/build/ckeditor/plugins/save/lang/bs.js", - "build/ckeditor/plugins/save/lang/eu.js": "/build/ckeditor/plugins/save/lang/eu.js", - "build/ckeditor/plugins/save/lang/hr.js": "/build/ckeditor/plugins/save/lang/hr.js", - "build/ckeditor/plugins/save/lang/is.js": "/build/ckeditor/plugins/save/lang/is.js", - "build/ckeditor/plugins/save/lang/it.js": "/build/ckeditor/plugins/save/lang/it.js", - "build/ckeditor/plugins/save/lang/nb.js": "/build/ckeditor/plugins/save/lang/nb.js", - "build/ckeditor/plugins/save/lang/no.js": "/build/ckeditor/plugins/save/lang/no.js", - "build/ckeditor/plugins/save/lang/sq.js": "/build/ckeditor/plugins/save/lang/sq.js", - "build/ckeditor/plugins/save/lang/sv.js": "/build/ckeditor/plugins/save/lang/sv.js", - "build/ckeditor/plugins/save/lang/ca.js": "/build/ckeditor/plugins/save/lang/ca.js", - "build/ckeditor/plugins/save/lang/cy.js": "/build/ckeditor/plugins/save/lang/cy.js", - "build/ckeditor/plugins/save/lang/en.js": "/build/ckeditor/plugins/save/lang/en.js", - "build/ckeditor/plugins/save/lang/fo.js": "/build/ckeditor/plugins/save/lang/fo.js", - "build/ckeditor/plugins/save/lang/mk.js": "/build/ckeditor/plugins/save/lang/mk.js", - "build/ckeditor/plugins/save/lang/vi.js": "/build/ckeditor/plugins/save/lang/vi.js", - "build/ckeditor/plugins/print/lang/vi.js": "/build/ckeditor/plugins/print/lang/vi.js", - "build/ckeditor/plugins/save/lang/da.js": "/build/ckeditor/plugins/save/lang/da.js", - "build/ckeditor/skins/kama/images/dialog_sides.gif": "/build/ckeditor/skins/kama/images/dialog_sides.gif", - "build/ckeditor/plugins/exportpdf/plugindefinition.js": "/build/ckeditor/plugins/exportpdf/plugindefinition.js", - "build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7.js": "/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7.js" + "build/images/non-federal-bg.jpg": "/build/images/non-federal-bg.d99b76c9.jpg", + "build/images/icons.svg": "/build/images/icons.1fc6296b.svg" } \ No newline at end of file diff --git a/public/build/parti.a5a882d8.js b/public/build/parti.a5a882d8.js new file mode 100644 index 00000000..154f95c6 --- /dev/null +++ b/public/build/parti.a5a882d8.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[25],{2021:(e,t,a)=>{a(2707),a(1249),a(7179),a(3067),a(956);var r=a(9085),n=a(9755);n(".filterSelect").select2({theme:"bootstrap-5"}),n(".filterSelect").on("change",(function(){n("#table").bootstrapTable("refresh")})),window.queryParams=function(e){return e},window.ajaxRequest=function(e){var t={};e.data.limit?(t.itemsPerPage=e.data.limit,t.page=e.data.offset/e.data.limit+1):t.pagination=!1,e.data.sort&&(t["order["+e.data.sort+"]"]=e.data.order),t["parti.id"]=n("#partiId").val();n.get("/api/resultats?"+n.param(t)).then((function(t){var a=t["hydra:member"];a.total=t["hydra:totalItems"],e.success(a)}))},n("#show-more-program").on("click",(function(){n(".resource-program.hidden").each((function(e){n(this).delay(200*e).fadeIn(300,(function(){n(this).removeClass("d-none")}))})),n(this).hide()})),n("#show-more-status").on("click",(function(){n(".resource-status.hidden").each((function(e){n(this).delay(200*e).fadeIn(300,(function(){n(this).removeClass("d-none")}))})),n(this).hide()})),n(".pdf-link").on("click",(function(e){e.preventDefault();var t=n(this).attr("href");n("#pdfIframe").attr("src",t),n("#pdfModal").modal("show")}));var o={type:"bar",options:{scales:{x:{min:dataset[0].year}}},data:{labels:dataset.map((function(e){return e.year})),datasets:[{label:labelBarChart,data:dataset.map((function(e){return e.number})),backgroundColor:"#a4d0fa",borderColor:"#004c93",borderWidth:1}]},responsive:!0},i=new r.ZP(document.getElementById("membersChart").getContext("2d"),o);window.addEventListener("before",(function(){i.resize(500,500)})),window.addEventListener("afterprint",(function(){i.resize()}))}},e=>{e.O(0,[755,865,920,175],(()=>{return t=2021,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/public/build/parti.js b/public/build/parti.js deleted file mode 100644 index 102faa58..00000000 --- a/public/build/parti.js +++ /dev/null @@ -1,123 +0,0 @@ -"use strict"; -(self["webpackChunk"] = self["webpackChunk"] || []).push([["parti"],{ - -/***/ "./assets/parti.js": -/*!*************************!*\ - !*** ./assets/parti.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ "./node_modules/core-js/modules/es.array.sort.js"); -/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tableexport.jquery.plugin */ "./node_modules/tableexport.jquery.plugin/tableExport.min.js"); -/* harmony import */ var tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var bootstrap_table__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! bootstrap-table */ "./node_modules/bootstrap-table/dist/bootstrap-table.min.js"); -/* harmony import */ var bootstrap_table__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(bootstrap_table__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! bootstrap-table/dist/extensions/export/bootstrap-table-export */ "./node_modules/bootstrap-table/dist/extensions/export/bootstrap-table-export.js"); -/* harmony import */ var bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_4__); -/* harmony import */ var chart_js_auto__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! chart.js/auto */ "./node_modules/chart.js/auto/auto.js"); -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); - - - - - - -$(".filterSelect").select2({ - theme: "bootstrap-5" -}); -$(".filterSelect").on("change", refreshTable); -function refreshTable() { - $("#table").bootstrapTable("refresh"); -} -window.queryParams = function (params) { - return params; -}; -window.ajaxRequest = function (params) { - var parameters = {}; - if (params.data.limit) { - parameters.itemsPerPage = params.data.limit; - parameters.page = params.data.offset / params.data.limit + 1; - } else { - parameters.pagination = false; - } - if (params.data.sort) { - parameters["order[" + params.data.sort + "]"] = params.data.order; - } - parameters["parti.id"] = $("#partiId").val(); - var url = "/api/resultats"; - $.get(url + "?" + $.param(parameters)).then(function (res) { - var result = res["hydra:member"]; - result.total = res["hydra:totalItems"]; - params.success(result); - }); -}; -$("#show-more-program").on("click", function () { - $(".resource-program.hidden").each(function (index) { - $(this).delay(index * 200).fadeIn(300, function () { - $(this).removeClass("d-none"); - }); - }); - $(this).hide(); -}); -$("#show-more-status").on("click", function () { - $(".resource-status.hidden").each(function (index) { - $(this).delay(index * 200).fadeIn(300, function () { - $(this).removeClass("d-none"); - }); - }); - $(this).hide(); -}); -$(".pdf-link").on("click", function (event) { - event.preventDefault(); - var pdfUrl = $(this).attr("href"); - $("#pdfIframe").attr("src", pdfUrl); // Définit l'URL de l'iframe à l'URL du PDF - $("#pdfModal").modal("show"); // Affiche la modale -}); - -var config = { - type: "bar", - options: { - scales: { - x: { - min: dataset[0].year - } - } - }, - data: { - labels: dataset.map(function (item) { - return item.year; - }), - datasets: [{ - label: labelBarChart, - data: dataset.map(function (item) { - return item.number; - }), - backgroundColor: "#a4d0fa", - borderColor: "#004c93", - borderWidth: 1 - }] - }, - responsive: true -}; -var barChart = new chart_js_auto__WEBPACK_IMPORTED_MODULE_5__["default"](document.getElementById("membersChart").getContext("2d"), config); -window.addEventListener("before", function () { - barChart.resize(500, 500); -}); -window.addEventListener("afterprint", function () { - barChart.resize(); -}); - -/***/ }) - -}, -/******/ __webpack_require__ => { // webpackRuntimeModules -/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ __webpack_require__.O(0, ["vendors-node_modules_jquery_dist_jquery_js","vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2","vendors-node_modules_chart_js_auto_auto_js","vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c"], () => (__webpack_exec__("./assets/parti.js"))); -/******/ var __webpack_exports__ = __webpack_require__.O(); -/******/ } -]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q3BCLENBQUMsQ0FBQztNQUNGQyxlQUFlLEVBQUUsU0FBUztNQUMxQkMsV0FBVyxFQUFFLFNBQVM7TUFDdEJDLFdBQVcsRUFBRTtJQUNmLENBQUM7RUFFTCxDQUFDO0VBQ0RDLFVBQVUsRUFBRTtBQUNkLENBQUM7QUFFRCxJQUFJQyxRQUFRLEdBQUcsSUFBSTNELHFEQUFLLENBQ3RCNEQsUUFBUSxDQUFDQyxjQUFjLENBQUMsY0FBYyxDQUFDLENBQUNDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFDeER0QixNQUFNLENBQ1A7QUFFRGpDLE1BQU0sQ0FBQ3dELGdCQUFnQixDQUFDLFFBQVEsRUFBRSxZQUFNO0VBQ3RDSixRQUFRLENBQUNLLE1BQU0sQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDO0FBQzNCLENBQUMsQ0FBQztBQUNGekQsTUFBTSxDQUFDd0QsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLFlBQU07RUFDMUNKLFFBQVEsQ0FBQ0ssTUFBTSxFQUFFO0FBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXMiOlsid2VicGFjazovLy8uL2Fzc2V0cy9wYXJ0aS5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgXCJ0YWJsZWV4cG9ydC5qcXVlcnkucGx1Z2luXCI7XG5pbXBvcnQgXCJib290c3RyYXAtdGFibGVcIjtcbmltcG9ydCBcImJvb3RzdHJhcC10YWJsZS9kaXN0L2V4dGVuc2lvbnMvZXhwb3J0L2Jvb3RzdHJhcC10YWJsZS1leHBvcnRcIjtcbmltcG9ydCBDaGFydCBmcm9tIFwiY2hhcnQuanMvYXV0b1wiO1xuXG4kKFwiLmZpbHRlclNlbGVjdFwiKS5zZWxlY3QyKHtcbiAgdGhlbWU6IFwiYm9vdHN0cmFwLTVcIixcbn0pO1xuJChcIi5maWx0ZXJTZWxlY3RcIikub24oXCJjaGFuZ2VcIiwgcmVmcmVzaFRhYmxlKTtcblxuZnVuY3Rpb24gcmVmcmVzaFRhYmxlKCkge1xuICAkKFwiI3RhYmxlXCIpLmJvb3RzdHJhcFRhYmxlKFwicmVmcmVzaFwiKTtcbn1cbndpbmRvdy5xdWVyeVBhcmFtcyA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgcmV0dXJuIHBhcmFtcztcbn07XG5cbndpbmRvdy5hamF4UmVxdWVzdCA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgbGV0IHBhcmFtZXRlcnMgPSB7fTtcbiAgaWYgKHBhcmFtcy5kYXRhLmxpbWl0KSB7XG4gICAgcGFyYW1ldGVycy5pdGVtc1BlclBhZ2UgPSBwYXJhbXMuZGF0YS5saW1pdDtcbiAgICBwYXJhbWV0ZXJzLnBhZ2UgPSBwYXJhbXMuZGF0YS5vZmZzZXQgLyBwYXJhbXMuZGF0YS5saW1pdCArIDE7XG4gIH0gZWxzZSB7XG4gICAgcGFyYW1ldGVycy5wYWdpbmF0aW9uID0gZmFsc2U7XG4gIH1cbiAgaWYgKHBhcmFtcy5kYXRhLnNvcnQpIHtcbiAgICBwYXJhbWV0ZXJzW1wib3JkZXJbXCIgKyBwYXJhbXMuZGF0YS5zb3J0ICsgXCJdXCJdID0gcGFyYW1zLmRhdGEub3JkZXI7XG4gIH1cbiAgcGFyYW1ldGVyc1tcInBhcnRpLmlkXCJdID0gJChcIiNwYXJ0aUlkXCIpLnZhbCgpO1xuXG4gIHZhciB1cmwgPSBcIi9hcGkvcmVzdWx0YXRzXCI7XG5cbiAgJC5nZXQodXJsICsgXCI/XCIgKyAkLnBhcmFtKHBhcmFtZXRlcnMpKS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICBsZXQgcmVzdWx0ID0gcmVzW1wiaHlkcmE6bWVtYmVyXCJdO1xuICAgIHJlc3VsdC50b3RhbCA9IHJlc1tcImh5ZHJhOnRvdGFsSXRlbXNcIl07XG4gICAgcGFyYW1zLnN1Y2Nlc3MocmVzdWx0KTtcbiAgfSk7XG59O1xuXG4kKFwiI3Nob3ctbW9yZS1wcm9ncmFtXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAkKFwiLnJlc291cmNlLXByb2dyYW0uaGlkZGVuXCIpLmVhY2goZnVuY3Rpb24gKGluZGV4KSB7XG4gICAgJCh0aGlzKVxuICAgICAgLmRlbGF5KGluZGV4ICogMjAwKVxuICAgICAgLmZhZGVJbigzMDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgJCh0aGlzKS5yZW1vdmVDbGFzcyhcImQtbm9uZVwiKTtcbiAgICAgIH0pO1xuICB9KTtcbiAgJCh0aGlzKS5oaWRlKCk7XG59KTtcblxuJChcIiNzaG93LW1vcmUtc3RhdHVzXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKCkge1xuICAkKFwiLnJlc291cmNlLXN0YXR1cy5oaWRkZW5cIikuZWFjaChmdW5jdGlvbiAoaW5kZXgpIHtcbiAgICAkKHRoaXMpXG4gICAgICAuZGVsYXkoaW5kZXggKiAyMDApXG4gICAgICAuZmFkZUluKDMwMCwgZnVuY3Rpb24gKCkge1xuICAgICAgICAkKHRoaXMpLnJlbW92ZUNsYXNzKFwiZC1ub25lXCIpO1xuICAgICAgfSk7XG4gIH0pO1xuICAkKHRoaXMpLmhpZGUoKTtcbn0pO1xuXG4kKFwiLnBkZi1saW5rXCIpLm9uKFwiY2xpY2tcIiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIHZhciBwZGZVcmwgPSAkKHRoaXMpLmF0dHIoXCJocmVmXCIpO1xuICAkKFwiI3BkZklmcmFtZVwiKS5hdHRyKFwic3JjXCIsIHBkZlVybCk7IC8vIETDqWZpbml0IGwnVVJMIGRlIGwnaWZyYW1lIMOgIGwnVVJMIGR1IFBERlxuICAkKFwiI3BkZk1vZGFsXCIpLm1vZGFsKFwic2hvd1wiKTsgLy8gQWZmaWNoZSBsYSBtb2RhbGVcbn0pO1xuXG5jb25zdCBjb25maWcgPSB7XG4gIHR5cGU6IFwiYmFyXCIsXG4gIG9wdGlvbnM6IHtcbiAgICBzY2FsZXM6IHtcbiAgICAgIHg6IHtcbiAgICAgICAgbWluOiBkYXRhc2V0WzBdLnllYXIsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGRhdGE6IHtcbiAgICBsYWJlbHM6IGRhdGFzZXQubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS55ZWFyO1xuICAgIH0pLFxuICAgIGRhdGFzZXRzOiBbXG4gICAgICB7XG4gICAgICAgIGxhYmVsOiBsYWJlbEJhckNoYXJ0LFxuICAgICAgICBkYXRhOiBkYXRhc2V0Lm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiBpdGVtLm51bWJlcjtcbiAgICAgICAgfSksXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjYTRkMGZhXCIsXG4gICAgICAgIGJvcmRlckNvbG9yOiBcIiMwMDRjOTNcIixcbiAgICAgICAgYm9yZGVyV2lkdGg6IDEsXG4gICAgICB9LFxuICAgIF0sXG4gIH0sXG4gIHJlc3BvbnNpdmU6IHRydWUsXG59O1xuXG5sZXQgYmFyQ2hhcnQgPSBuZXcgQ2hhcnQoXG4gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKFwibWVtYmVyc0NoYXJ0XCIpLmdldENvbnRleHQoXCIyZFwiKSxcbiAgY29uZmlnXG4pO1xuXG53aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImJlZm9yZVwiLCAoKSA9PiB7XG4gIGJhckNoYXJ0LnJlc2l6ZSg1MDAsIDUwMCk7XG59KTtcbndpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwiYWZ0ZXJwcmludFwiLCAoKSA9PiB7XG4gIGJhckNoYXJ0LnJlc2l6ZSgpO1xufSk7XG4iXSwibmFtZXMiOlsiQ2hhcnQiLCIkIiwic2VsZWN0MiIsInRoZW1lIiwib24iLCJyZWZyZXNoVGFibGUiLCJib290c3RyYXBUYWJsZSIsIndpbmRvdyIsInF1ZXJ5UGFyYW1zIiwicGFyYW1zIiwiYWpheFJlcXVlc3QiLCJwYXJhbWV0ZXJzIiwiZGF0YSIsImxpbWl0IiwiaXRlbXNQZXJQYWdlIiwicGFnZSIsIm9mZnNldCIsInBhZ2luYXRpb24iLCJzb3J0Iiwib3JkZXIiLCJ2YWwiLCJ1cmwiLCJnZXQiLCJwYXJhbSIsInRoZW4iLCJyZXMiLCJyZXN1bHQiLCJ0b3RhbCIsInN1Y2Nlc3MiLCJlYWNoIiwiaW5kZXgiLCJkZWxheSIsImZhZGVJbiIsInJlbW92ZUNsYXNzIiwiaGlkZSIsImV2ZW50IiwicHJldmVudERlZmF1bHQiLCJwZGZVcmwiLCJhdHRyIiwibW9kYWwiLCJjb25maWciLCJ0eXBlIiwib3B0aW9ucyIsInNjYWxlcyIsIngiLCJtaW4iLCJkYXRhc2V0IiwieWVhciIsImxhYmVscyIsIm1hcCIsIml0ZW0iLCJkYXRhc2V0cyIsImxhYmVsIiwibGFiZWxCYXJDaGFydCIsIm51bWJlciIsImJhY2tncm91bmRDb2xvciIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJyZXNwb25zaXZlIiwiYmFyQ2hhcnQiLCJkb2N1bWVudCIsImdldEVsZW1lbnRCeUlkIiwiZ2V0Q29udGV4dCIsImFkZEV2ZW50TGlzdGVuZXIiLCJyZXNpemUiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/public/build/runtime.3cfbb063.js b/public/build/runtime.3cfbb063.js new file mode 100644 index 00000000..3770dc6e --- /dev/null +++ b/public/build/runtime.3cfbb063.js @@ -0,0 +1 @@ +(()=>{"use strict";var e,r={},t={};function o(e){var n=t[e];if(void 0!==n)return n.exports;var i=t[e]={exports:{}};return r[e].call(i.exports,i,i.exports,o),i.exports}o.m=r,e=[],o.O=(r,t,n,i)=>{if(!t){var l=1/0;for(s=0;s=i)&&Object.keys(o.O).every((e=>o.O[e](t[u])))?t.splice(u--,1):(a=!1,i0&&e[s-1][2]>i;s--)e[s]=e[s-1];e[s]=[t,n,i]},o.n=e=>{var r=e&&e.__esModule?()=>e.default:()=>e;return o.d(r,{a:r}),r},o.d=(e,r)=>{for(var t in r)o.o(r,t)&&!o.o(e,t)&&Object.defineProperty(e,t,{enumerable:!0,get:r[t]})},o.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),o.o=(e,r)=>Object.prototype.hasOwnProperty.call(e,r),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.p="/build/",(()=>{var e={666:0,904:0};o.O.j=r=>0===e[r];var r=(r,t)=>{var n,i,[l,a,u]=t,f=0;if(l.some((r=>0!==e[r]))){for(n in a)o.o(a,n)&&(o.m[n]=a[n]);if(u)var s=u(o)}for(r&&r(t);f { // webpackBootstrap -/******/ "use strict"; -/******/ var __webpack_modules__ = ({}); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __webpack_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__); -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/******/ // expose the modules object (__webpack_modules__) -/******/ __webpack_require__.m = __webpack_modules__; -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/chunk loaded */ -/******/ (() => { -/******/ var deferred = []; -/******/ __webpack_require__.O = (result, chunkIds, fn, priority) => { -/******/ if(chunkIds) { -/******/ priority = priority || 0; -/******/ for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1]; -/******/ deferred[i] = [chunkIds, fn, priority]; -/******/ return; -/******/ } -/******/ var notFulfilled = Infinity; -/******/ for (var i = 0; i < deferred.length; i++) { -/******/ var [chunkIds, fn, priority] = deferred[i]; -/******/ var fulfilled = true; -/******/ for (var j = 0; j < chunkIds.length; j++) { -/******/ if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) { -/******/ chunkIds.splice(j--, 1); -/******/ } else { -/******/ fulfilled = false; -/******/ if(priority < notFulfilled) notFulfilled = priority; -/******/ } -/******/ } -/******/ if(fulfilled) { -/******/ deferred.splice(i--, 1) -/******/ var r = fn(); -/******/ if (r !== undefined) result = r; -/******/ } -/******/ } -/******/ return result; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/compat get default export */ -/******/ (() => { -/******/ // getDefaultExport function for compatibility with non-harmony modules -/******/ __webpack_require__.n = (module) => { -/******/ var getter = module && module.__esModule ? -/******/ () => (module['default']) : -/******/ () => (module); -/******/ __webpack_require__.d(getter, { a: getter }); -/******/ return getter; -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/define property getters */ -/******/ (() => { -/******/ // define getter functions for harmony exports -/******/ __webpack_require__.d = (exports, definition) => { -/******/ for(var key in definition) { -/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { -/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); -/******/ } -/******/ } -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/global */ -/******/ (() => { -/******/ __webpack_require__.g = (function() { -/******/ if (typeof globalThis === 'object') return globalThis; -/******/ try { -/******/ return this || new Function('return this')(); -/******/ } catch (e) { -/******/ if (typeof window === 'object') return window; -/******/ } -/******/ })(); -/******/ })(); -/******/ -/******/ /* webpack/runtime/hasOwnProperty shorthand */ -/******/ (() => { -/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) -/******/ })(); -/******/ -/******/ /* webpack/runtime/make namespace object */ -/******/ (() => { -/******/ // define __esModule on exports -/******/ __webpack_require__.r = (exports) => { -/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { -/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); -/******/ } -/******/ Object.defineProperty(exports, '__esModule', { value: true }); -/******/ }; -/******/ })(); -/******/ -/******/ /* webpack/runtime/publicPath */ -/******/ (() => { -/******/ __webpack_require__.p = "/build/"; -/******/ })(); -/******/ -/******/ /* webpack/runtime/jsonp chunk loading */ -/******/ (() => { -/******/ // no baseURI -/******/ -/******/ // object to store loaded and loading chunks -/******/ // undefined = chunk not loaded, null = chunk preloaded/prefetched -/******/ // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded -/******/ var installedChunks = { -/******/ "runtime": 0 -/******/ }; -/******/ -/******/ // no chunk on demand loading -/******/ -/******/ // no prefetching -/******/ -/******/ // no preloaded -/******/ -/******/ // no HMR -/******/ -/******/ // no HMR manifest -/******/ -/******/ __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0); -/******/ -/******/ // install a JSONP callback for chunk loading -/******/ var webpackJsonpCallback = (parentChunkLoadingFunction, data) => { -/******/ var [chunkIds, moreModules, runtime] = data; -/******/ // add "moreModules" to the modules object, -/******/ // then flag all "chunkIds" as loaded and fire callback -/******/ var moduleId, chunkId, i = 0; -/******/ if(chunkIds.some((id) => (installedChunks[id] !== 0))) { -/******/ for(moduleId in moreModules) { -/******/ if(__webpack_require__.o(moreModules, moduleId)) { -/******/ __webpack_require__.m[moduleId] = moreModules[moduleId]; -/******/ } -/******/ } -/******/ if(runtime) var result = runtime(__webpack_require__); -/******/ } -/******/ if(parentChunkLoadingFunction) parentChunkLoadingFunction(data); -/******/ for(;i < chunkIds.length; i++) { -/******/ chunkId = chunkIds[i]; -/******/ if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) { -/******/ installedChunks[chunkId][0](); -/******/ } -/******/ installedChunks[chunkId] = 0; -/******/ } -/******/ return __webpack_require__.O(result); -/******/ } -/******/ -/******/ var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || []; -/******/ chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0)); -/******/ chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal)); -/******/ })(); -/******/ -/************************************************************************/ -/******/ -/******/ -/******/ })() -; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVudGltZS5qcyIsIm1hcHBpbmdzIjoiOzs7O1VBQUE7VUFDQTs7VUFFQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOztVQUVBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBOzs7OztXQ3pCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLCtCQUErQix3Q0FBd0M7V0FDdkU7V0FDQTtXQUNBO1dBQ0E7V0FDQSxpQkFBaUIscUJBQXFCO1dBQ3RDO1dBQ0E7V0FDQSxrQkFBa0IscUJBQXFCO1dBQ3ZDO1dBQ0E7V0FDQSxLQUFLO1dBQ0w7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBOzs7OztXQzNCQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsaUNBQWlDLFdBQVc7V0FDNUM7V0FDQTs7Ozs7V0NQQTtXQUNBO1dBQ0E7V0FDQTtXQUNBLHlDQUF5Qyx3Q0FBd0M7V0FDakY7V0FDQTtXQUNBOzs7OztXQ1BBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsR0FBRztXQUNIO1dBQ0E7V0FDQSxDQUFDOzs7OztXQ1BEOzs7OztXQ0FBO1dBQ0E7V0FDQTtXQUNBLHVEQUF1RCxpQkFBaUI7V0FDeEU7V0FDQSxnREFBZ0QsYUFBYTtXQUM3RDs7Ozs7V0NOQTs7Ozs7V0NBQTs7V0FFQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7O1dBRUE7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0EsTUFBTSxxQkFBcUI7V0FDM0I7V0FDQTtXQUNBO1dBQ0E7V0FDQTtXQUNBO1dBQ0E7V0FDQTs7V0FFQTtXQUNBO1dBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jaHVuayBsb2FkZWQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9nbG9iYWwiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vL3dlYnBhY2svcnVudGltZS9wdWJsaWNQYXRoIiwid2VicGFjazovLy93ZWJwYWNrL3J1bnRpbWUvanNvbnAgY2h1bmsgbG9hZGluZyIsIndlYnBhY2s6Ly8vd2VicGFjay9iZWZvcmUtc3RhcnR1cCIsIndlYnBhY2s6Ly8vd2VicGFjay9zdGFydHVwIiwid2VicGFjazovLy93ZWJwYWNrL2FmdGVyLXN0YXJ0dXAiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbi8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG5fX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBfX3dlYnBhY2tfbW9kdWxlc19fO1xuXG4iLCJ2YXIgZGVmZXJyZWQgPSBbXTtcbl9fd2VicGFja19yZXF1aXJlX18uTyA9IChyZXN1bHQsIGNodW5rSWRzLCBmbiwgcHJpb3JpdHkpID0+IHtcblx0aWYoY2h1bmtJZHMpIHtcblx0XHRwcmlvcml0eSA9IHByaW9yaXR5IHx8IDA7XG5cdFx0Zm9yKHZhciBpID0gZGVmZXJyZWQubGVuZ3RoOyBpID4gMCAmJiBkZWZlcnJlZFtpIC0gMV1bMl0gPiBwcmlvcml0eTsgaS0tKSBkZWZlcnJlZFtpXSA9IGRlZmVycmVkW2kgLSAxXTtcblx0XHRkZWZlcnJlZFtpXSA9IFtjaHVua0lkcywgZm4sIHByaW9yaXR5XTtcblx0XHRyZXR1cm47XG5cdH1cblx0dmFyIG5vdEZ1bGZpbGxlZCA9IEluZmluaXR5O1xuXHRmb3IgKHZhciBpID0gMDsgaSA8IGRlZmVycmVkLmxlbmd0aDsgaSsrKSB7XG5cdFx0dmFyIFtjaHVua0lkcywgZm4sIHByaW9yaXR5XSA9IGRlZmVycmVkW2ldO1xuXHRcdHZhciBmdWxmaWxsZWQgPSB0cnVlO1xuXHRcdGZvciAodmFyIGogPSAwOyBqIDwgY2h1bmtJZHMubGVuZ3RoOyBqKyspIHtcblx0XHRcdGlmICgocHJpb3JpdHkgJiAxID09PSAwIHx8IG5vdEZ1bGZpbGxlZCA+PSBwcmlvcml0eSkgJiYgT2JqZWN0LmtleXMoX193ZWJwYWNrX3JlcXVpcmVfXy5PKS5ldmVyeSgoa2V5KSA9PiAoX193ZWJwYWNrX3JlcXVpcmVfXy5PW2tleV0oY2h1bmtJZHNbal0pKSkpIHtcblx0XHRcdFx0Y2h1bmtJZHMuc3BsaWNlKGotLSwgMSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRmdWxmaWxsZWQgPSBmYWxzZTtcblx0XHRcdFx0aWYocHJpb3JpdHkgPCBub3RGdWxmaWxsZWQpIG5vdEZ1bGZpbGxlZCA9IHByaW9yaXR5O1xuXHRcdFx0fVxuXHRcdH1cblx0XHRpZihmdWxmaWxsZWQpIHtcblx0XHRcdGRlZmVycmVkLnNwbGljZShpLS0sIDEpXG5cdFx0XHR2YXIgciA9IGZuKCk7XG5cdFx0XHRpZiAociAhPT0gdW5kZWZpbmVkKSByZXN1bHQgPSByO1xuXHRcdH1cblx0fVxuXHRyZXR1cm4gcmVzdWx0O1xufTsiLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18uZyA9IChmdW5jdGlvbigpIHtcblx0aWYgKHR5cGVvZiBnbG9iYWxUaGlzID09PSAnb2JqZWN0JykgcmV0dXJuIGdsb2JhbFRoaXM7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIHRoaXMgfHwgbmV3IEZ1bmN0aW9uKCdyZXR1cm4gdGhpcycpKCk7XG5cdH0gY2F0Y2ggKGUpIHtcblx0XHRpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCcpIHJldHVybiB3aW5kb3c7XG5cdH1cbn0pKCk7IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiL2J1aWxkL1wiOyIsIi8vIG5vIGJhc2VVUklcblxuLy8gb2JqZWN0IHRvIHN0b3JlIGxvYWRlZCBhbmQgbG9hZGluZyBjaHVua3Ncbi8vIHVuZGVmaW5lZCA9IGNodW5rIG5vdCBsb2FkZWQsIG51bGwgPSBjaHVuayBwcmVsb2FkZWQvcHJlZmV0Y2hlZFxuLy8gW3Jlc29sdmUsIHJlamVjdCwgUHJvbWlzZV0gPSBjaHVuayBsb2FkaW5nLCAwID0gY2h1bmsgbG9hZGVkXG52YXIgaW5zdGFsbGVkQ2h1bmtzID0ge1xuXHRcInJ1bnRpbWVcIjogMFxufTtcblxuLy8gbm8gY2h1bmsgb24gZGVtYW5kIGxvYWRpbmdcblxuLy8gbm8gcHJlZmV0Y2hpbmdcblxuLy8gbm8gcHJlbG9hZGVkXG5cbi8vIG5vIEhNUlxuXG4vLyBubyBITVIgbWFuaWZlc3RcblxuX193ZWJwYWNrX3JlcXVpcmVfXy5PLmogPSAoY2h1bmtJZCkgPT4gKGluc3RhbGxlZENodW5rc1tjaHVua0lkXSA9PT0gMCk7XG5cbi8vIGluc3RhbGwgYSBKU09OUCBjYWxsYmFjayBmb3IgY2h1bmsgbG9hZGluZ1xudmFyIHdlYnBhY2tKc29ucENhbGxiYWNrID0gKHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uLCBkYXRhKSA9PiB7XG5cdHZhciBbY2h1bmtJZHMsIG1vcmVNb2R1bGVzLCBydW50aW1lXSA9IGRhdGE7XG5cdC8vIGFkZCBcIm1vcmVNb2R1bGVzXCIgdG8gdGhlIG1vZHVsZXMgb2JqZWN0LFxuXHQvLyB0aGVuIGZsYWcgYWxsIFwiY2h1bmtJZHNcIiBhcyBsb2FkZWQgYW5kIGZpcmUgY2FsbGJhY2tcblx0dmFyIG1vZHVsZUlkLCBjaHVua0lkLCBpID0gMDtcblx0aWYoY2h1bmtJZHMuc29tZSgoaWQpID0+IChpbnN0YWxsZWRDaHVua3NbaWRdICE9PSAwKSkpIHtcblx0XHRmb3IobW9kdWxlSWQgaW4gbW9yZU1vZHVsZXMpIHtcblx0XHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhtb3JlTW9kdWxlcywgbW9kdWxlSWQpKSB7XG5cdFx0XHRcdF9fd2VicGFja19yZXF1aXJlX18ubVttb2R1bGVJZF0gPSBtb3JlTW9kdWxlc1ttb2R1bGVJZF07XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGlmKHJ1bnRpbWUpIHZhciByZXN1bHQgPSBydW50aW1lKF9fd2VicGFja19yZXF1aXJlX18pO1xuXHR9XG5cdGlmKHBhcmVudENodW5rTG9hZGluZ0Z1bmN0aW9uKSBwYXJlbnRDaHVua0xvYWRpbmdGdW5jdGlvbihkYXRhKTtcblx0Zm9yKDtpIDwgY2h1bmtJZHMubGVuZ3RoOyBpKyspIHtcblx0XHRjaHVua0lkID0gY2h1bmtJZHNbaV07XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGluc3RhbGxlZENodW5rcywgY2h1bmtJZCkgJiYgaW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdKSB7XG5cdFx0XHRpbnN0YWxsZWRDaHVua3NbY2h1bmtJZF1bMF0oKTtcblx0XHR9XG5cdFx0aW5zdGFsbGVkQ2h1bmtzW2NodW5rSWRdID0gMDtcblx0fVxuXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXy5PKHJlc3VsdCk7XG59XG5cbnZhciBjaHVua0xvYWRpbmdHbG9iYWwgPSBzZWxmW1wid2VicGFja0NodW5rXCJdID0gc2VsZltcIndlYnBhY2tDaHVua1wiXSB8fCBbXTtcbmNodW5rTG9hZGluZ0dsb2JhbC5mb3JFYWNoKHdlYnBhY2tKc29ucENhbGxiYWNrLmJpbmQobnVsbCwgMCkpO1xuY2h1bmtMb2FkaW5nR2xvYmFsLnB1c2ggPSB3ZWJwYWNrSnNvbnBDYWxsYmFjay5iaW5kKG51bGwsIGNodW5rTG9hZGluZ0dsb2JhbC5wdXNoLmJpbmQoY2h1bmtMb2FkaW5nR2xvYmFsKSk7IiwiIiwiIiwiIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/public/build/table.1ddcb887.css b/public/build/table.1ddcb887.css new file mode 100644 index 00000000..56528eba --- /dev/null +++ b/public/build/table.1ddcb887.css @@ -0,0 +1 @@ +.bootstrap-table .fixed-table-toolbar:after{clear:both;content:"";display:block}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{margin-bottom:10px;margin-top:10px;position:relative}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-bottom-left-radius:4px;border-top-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-bottom-right-radius:4px;border-top-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{-ms-overflow-style:scrollbar;max-height:300px;overflow:auto;text-align:left;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{clear:both;display:block;font-weight:400;line-height:1.4286;padding:3px 20px}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{left:auto;right:0}.bootstrap-table .fixed-table-container{clear:both;position:relative}.bootstrap-table .fixed-table-container .table{margin-bottom:0!important;width:100%}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{box-sizing:border-box;vertical-align:middle}.bootstrap-table .fixed-table-container .table thead th{margin:0;padding:0;vertical-align:bottom}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{overflow:hidden;padding:.75rem;text-overflow:ellipsis;vertical-align:bottom;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{background-position:100%;background-repeat:no-repeat;cursor:pointer;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{display:inline-block;font-weight:700;min-width:30%;text-align:left!important;width:auto!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{text-align:left!important;width:100%!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{height:100%;overflow-x:auto;overflow-y:auto}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;bottom:0;display:flex;justify-content:center;max-width:100%;opacity:0;position:absolute;transition:visibility 0s,opacity .15s ease-in-out;visibility:hidden;width:100%;z-index:1000}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{opacity:1;visibility:visible}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap:after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap:before{animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;content:"";display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap:after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap:after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap:before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination:after{clear:both;content:"";display:block}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-bottom:10px;margin-top:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{display:inline-block;position:relative;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a:before{content:"\2B05"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a:after{content:"\27A1"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{cursor:default;pointer-events:none}.bootstrap-table.fullscreen{background:#fff;height:100vh;left:0;overflow-y:scroll;position:fixed;top:0;width:100%!important;z-index:1050}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{height:200px;width:100%}div.fixed-table-scroll-outer{height:150px;left:0;overflow:hidden;top:0;visibility:hidden;width:200px}@keyframes loading{0%{opacity:0}50%{opacity:1}to{opacity:0}} \ No newline at end of file diff --git a/public/build/table.957edfbd.js b/public/build/table.957edfbd.js new file mode 100644 index 00000000..35e1340e --- /dev/null +++ b/public/build/table.957edfbd.js @@ -0,0 +1 @@ +(self.webpackChunk=self.webpackChunk||[]).push([[986],{8922:(e,t,a)=>{"use strict";a(1249),a(8309),a(2707),a(7179),a(3067),a(956);var r,l=a(9755);l(".filterSelect").select2({theme:"bootstrap-5"}),l(".filterSelect").on("change",(function(){l("#table").bootstrapTable("refresh")}));var n={ajax:{delay:1e3,data:function(e){return{itemsPerPage:30,page:e.page||1,name:e.term}},processResults:function(e){return{results:e["hydra:member"].map((function(e){var t;return{id:e.id,text:null!==(t=e.name)&&void 0!==t?t:e.acronym}})),pagination:{more:void 0!==e["hydra:view"]["hydra:last"]}}}}},i=n;i.ajax.url="/api/partis",i.placeholder=null!==(r=l("#placeholderSelectParti").html())&&void 0!==r?r:"Select a parti",l("#selectParti").select2(i);var c=n;c.ajax.url="/api/regions",c.placeholder="Select a region",l("#selectRegion").select2(c);var o=n;o.ajax.url="/api/provinces",o.placeholder="Select a province",l("#selectProvince").select2(o);var s=n;s.ajax.url="/api/arrondissements",s.placeholder="Select a arrondissement",l("#selectArrondissement").select2(s);var d=n;d.ajax.url="/api/cantons",d.placeholder="Select a canton",l("#selectCanton").select2(d);var u=n;u.ajax.url="/api/communes",u.placeholder="Select a commune",l("#selectCommune").select2(u);var m=n;m.ajax.url="/api/elections",m.placeholder="Select a election",l("#selectElection").select2(m),window.queryParams=function(e){return console.log("queryParams",e),e},window.ajaxRequest=function(e){var t={};e.data.limit?(t.itemsPerPage=e.data.limit,t.page=e.data.offset/e.data.limit+1):t.pagination=!1,e.data.sort&&(t["order["+e.data.sort+"]"]=e.data.order),l(l("#selectParti")[0]).val().length>0&&(t["parti.id"]=l(l("#selectParti")[0]).val()),l(l("#selectRegion")[0]).val().length>0&&(t["idRegion.id"]=l(l("#selectRegion")[0]).val()),l(l("#selectProvince")[0]).val().length>0&&(t["idProvince.id"]=l(l("#selectProvince")[0]).val()),l(l("#selectArrondissement")[0]).val().length>0&&(t["idArrondissement.id"]=l(l("#selectArrondissement")[0]).val()),l(l("#selectCanton")[0]).val().length>0&&(t["idCanton.id"]=l(l("#selectCanton")[0]).val()),l(l("#selectCommune")[0]).val().length>0&&(t["idCommune.id"]=l(l("#selectCommune")[0]).val()),l(l("#selectElection")[0]).val().length>0&&(t["idElection.id"]=l(l("#selectElection")[0]).val());l.get("/api/resultats?"+l.param(t)).then((function(t){var a=t["hydra:member"];a.total=t["hydra:totalItems"],e.success(a)}))}},1249:(e,t,a)=>{"use strict";var r=a(2109),l=a(2092).map;r({target:"Array",proto:!0,forced:!a(1194)("map")},{map:function(e){return l(this,e,arguments.length>1?arguments[1]:void 0)}})},8309:(e,t,a)=>{var r=a(9781),l=a(6530).EXISTS,n=a(1702),i=a(3070).f,c=Function.prototype,o=n(c.toString),s=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,d=n(s.exec);r&&!l&&i(c,"name",{configurable:!0,get:function(){try{return d(s,o(this))[1]}catch(e){return""}}})}},e=>{e.O(0,[755,865,175],(()=>{return t=8922,e(e.s=t);var t}));e.O()}]); \ No newline at end of file diff --git a/public/build/table.css b/public/build/table.css deleted file mode 100644 index 7d02bbee..00000000 --- a/public/build/table.css +++ /dev/null @@ -1,15 +0,0 @@ -/*!**************************************************************************************************************************************************!*\ - !*** css ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[1].oneOf[1].use[1]!./node_modules/bootstrap-table/dist/bootstrap-table.min.css ***! - \**************************************************************************************************************************************************/ -/** - * bootstrap-table - An extended table to integration with some of the most widely used CSS frameworks. (Supports Bootstrap, Semantic UI, Bulma, Material Design, Foundation) - * - * @version v1.21.2 - * @homepage https://bootstrap-table.com - * @author wenzhixin (http://wenzhixin.net.cn/) - * @license MIT - */ - -.bootstrap-table .fixed-table-toolbar::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-toolbar .bs-bars,.bootstrap-table .fixed-table-toolbar .columns,.bootstrap-table .fixed-table-toolbar .search{position:relative;margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group{display:inline-block;margin-left:-1px!important}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group>.btn{border-radius:0}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:first-child>.btn{border-top-left-radius:4px;border-bottom-left-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .btn-group>.btn-group:last-child>.btn{border-top-right-radius:4px;border-bottom-right-radius:4px}.bootstrap-table .fixed-table-toolbar .columns .dropdown-menu{text-align:left;max-height:300px;overflow:auto;-ms-overflow-style:scrollbar;z-index:1001}.bootstrap-table .fixed-table-toolbar .columns label{display:block;padding:3px 20px;clear:both;font-weight:400;line-height:1.4286}.bootstrap-table .fixed-table-toolbar .columns-left{margin-right:5px}.bootstrap-table .fixed-table-toolbar .columns-right{margin-left:5px}.bootstrap-table .fixed-table-toolbar .pull-right .dropdown-menu{right:0;left:auto}.bootstrap-table .fixed-table-container{position:relative;clear:both}.bootstrap-table .fixed-table-container .table{width:100%;margin-bottom:0!important}.bootstrap-table .fixed-table-container .table td,.bootstrap-table .fixed-table-container .table th{vertical-align:middle;box-sizing:border-box}.bootstrap-table .fixed-table-container .table thead th{vertical-align:bottom;padding:0;margin:0}.bootstrap-table .fixed-table-container .table thead th:focus{outline:0 solid transparent}.bootstrap-table .fixed-table-container .table thead th.detail{width:30px}.bootstrap-table .fixed-table-container .table thead th .th-inner{padding:.75rem;vertical-align:bottom;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bootstrap-table .fixed-table-container .table thead th .sortable{cursor:pointer;background-position:right;background-repeat:no-repeat;padding-right:30px!important}.bootstrap-table .fixed-table-container .table thead th .sortable.sortable-center{padding-left:20px!important;padding-right:20px!important}.bootstrap-table .fixed-table-container .table thead th .both{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAQAAADYWf5HAAAAkElEQVQoz7X QMQ5AQBCF4dWQSJxC5wwax1Cq1e7BAdxD5SL+Tq/QCM1oNiJidwox0355mXnG/DrEtIQ6azioNZQxI0ykPhTQIwhCR+BmBYtlK7kLJYwWCcJA9M4qdrZrd8pPjZWPtOqdRQy320YSV17OatFC4euts6z39GYMKRPCTKY9UnPQ6P+GtMRfGtPnBCiqhAeJPmkqAAAAAElFTkSuQmCC")}.bootstrap-table .fixed-table-container .table thead th .asc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZ0lEQVQ4y2NgGLKgquEuFxBPAGI2ahhWCsS/gDibUoO0gPgxEP8H4ttArEyuQYxAPBdqEAxPBImTY5gjEL9DM+wTENuQahAvEO9DMwiGdwAxOymGJQLxTyD+jgWDxCMZRsEoGAVoAADeemwtPcZI2wAAAABJRU5ErkJggg==)}.bootstrap-table .fixed-table-container .table thead th .desc{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABMAAAATCAYAAAByUDbMAAAAZUlEQVQ4y2NgGAWjYBSggaqGu5FA/BOIv2PBIPFEUgxjB+IdQPwfC94HxLykus4GiD+hGfQOiB3J8SojEE9EM2wuSJzcsFMG4ttQgx4DsRalkZENxL+AuJQaMcsGxBOAmGvopk8AVz1sLZgg0bsAAAAASUVORK5CYII=)}.bootstrap-table .fixed-table-container .table tbody tr.selected td{background-color:rgba(0,0,0,.075)}.bootstrap-table .fixed-table-container .table tbody tr.no-records-found td{text-align:center}.bootstrap-table .fixed-table-container .table tbody tr .card-view{display:flex}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-title{font-weight:700;display:inline-block;min-width:30%;width:auto!important;text-align:left!important}.bootstrap-table .fixed-table-container .table tbody tr .card-view .card-view-value{width:100%!important;text-align:left!important}.bootstrap-table .fixed-table-container .table .bs-checkbox{text-align:center}.bootstrap-table .fixed-table-container .table .bs-checkbox label{margin-bottom:0}.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=checkbox],.bootstrap-table .fixed-table-container .table .bs-checkbox label input[type=radio]{margin:0 auto!important}.bootstrap-table .fixed-table-container .table.table-sm .th-inner{padding:.3rem}.bootstrap-table .fixed-table-container.fixed-height:not(.has-footer){border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height.has-card-view{border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .fixed-table-border{border-left:1px solid #dee2e6;border-right:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table thead th{border-bottom:1px solid #dee2e6}.bootstrap-table .fixed-table-container.fixed-height .table-dark thead th{border-bottom:1px solid #32383e}.bootstrap-table .fixed-table-container .fixed-table-header{overflow:hidden}.bootstrap-table .fixed-table-container .fixed-table-body{overflow-x:auto;overflow-y:auto;height:100%}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading{align-items:center;background:#fff;display:flex;justify-content:center;position:absolute;bottom:0;width:100%;max-width:100%;z-index:1000;transition:visibility 0s,opacity .15s ease-in-out;opacity:0;visibility:hidden}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.open{visibility:visible;opacity:1}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap{align-items:baseline;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .loading-text{margin-right:6px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap{align-items:center;display:flex;justify-content:center}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::before{content:"";animation-duration:1.5s;animation-iteration-count:infinite;animation-name:loading;background:#212529;border-radius:50%;display:block;height:5px;margin:0 4px;opacity:0;width:5px}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-dot{animation-delay:.3s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading .loading-wrap .animation-wrap::after{animation-delay:.6s}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark{background:#212529}.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-dot,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::after,.bootstrap-table .fixed-table-container .fixed-table-body .fixed-table-loading.table-dark .animation-wrap::before{background:#fff}.bootstrap-table .fixed-table-container .fixed-table-footer{overflow:hidden}.bootstrap-table .fixed-table-pagination::after{content:"";display:block;clear:both}.bootstrap-table .fixed-table-pagination>.pagination,.bootstrap-table .fixed-table-pagination>.pagination-detail{margin-top:10px;margin-bottom:10px}.bootstrap-table .fixed-table-pagination>.pagination-detail .pagination-info{line-height:34px;margin-right:5px}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list{display:inline-block}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group{position:relative;display:inline-block;vertical-align:middle}.bootstrap-table .fixed-table-pagination>.pagination-detail .page-list .btn-group .dropdown-menu{margin-bottom:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination{margin:0}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a{color:#c8c8c8}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::before{content:"\2B05"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.page-intermediate a::after{content:"\27A1"}.bootstrap-table .fixed-table-pagination>.pagination ul.pagination li.disabled a{pointer-events:none;cursor:default}.bootstrap-table.fullscreen{position:fixed;top:0;left:0;z-index:1050;width:100%!important;background:#fff;height:calc(100vh);overflow-y:scroll}.bootstrap-table.bootstrap4 .pagination-lg .page-link,.bootstrap-table.bootstrap5 .pagination-lg .page-link{padding:.5rem 1rem}.bootstrap-table.bootstrap5 .float-left{float:left}.bootstrap-table.bootstrap5 .float-right{float:right}div.fixed-table-scroll-inner{width:100%;height:200px}div.fixed-table-scroll-outer{top:0;left:0;visibility:hidden;width:200px;height:150px;overflow:hidden}@keyframes loading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} - -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQyxrRkFBa0YsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMscUJBQXFCLENBQUMsaUdBQWlHLGVBQWUsQ0FBQyxtRUFBbUUsUUFBUSxDQUFDLDBGQUEwRixhQUFhLENBQUMsa0dBQWtHLGVBQWUsQ0FBQyxpR0FBaUcsZUFBZSxDQUFDLGlGQUFpRixtQkFBbUIsQ0FBQyxjQUFjLENBQUMsNEJBQTRCLGNBQWMsQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxvQkFBb0IsQ0FBQyxlQUFlLENBQUMsa0JBQWtCLENBQUMsaUJBQWlCLENBQUMsNEdBQTRHLGtCQUFrQixDQUFDLHdDQUF3QyxVQUFVLENBQUMseUNBQXlDLFdBQVcsQ0FBQyw2QkFBNkIsVUFBVSxDQUFDLFlBQVksQ0FBQyw2QkFBNkIsS0FBSyxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsWUFBWSxDQUFDLGVBQWUsQ0FBQyxtQkFBbUIsR0FBRyxTQUFTLENBQUMsSUFBSSxTQUFTLENBQUMsS0FBSyxTQUFTLENBQUMsd3BCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC10YWJsZS9kaXN0L2Jvb3RzdHJhcC10YWJsZS5taW4uY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICAqIGJvb3RzdHJhcC10YWJsZSAtIEFuIGV4dGVuZGVkIHRhYmxlIHRvIGludGVncmF0aW9uIHdpdGggc29tZSBvZiB0aGUgbW9zdCB3aWRlbHkgdXNlZCBDU1MgZnJhbWV3b3Jrcy4gKFN1cHBvcnRzIEJvb3RzdHJhcCwgU2VtYW50aWMgVUksIEJ1bG1hLCBNYXRlcmlhbCBEZXNpZ24sIEZvdW5kYXRpb24pXG4gICpcbiAgKiBAdmVyc2lvbiB2MS4yMS4yXG4gICogQGhvbWVwYWdlIGh0dHBzOi8vYm9vdHN0cmFwLXRhYmxlLmNvbVxuICAqIEBhdXRob3Igd2VuemhpeGluIDx3ZW56aGl4aW4yMDEwQGdtYWlsLmNvbT4gKGh0dHA6Ly93ZW56aGl4aW4ubmV0LmNuLylcbiAgKiBAbGljZW5zZSBNSVRcbiAgKi9cblxuLmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhcjo6YWZ0ZXJ7Y29udGVudDpcIlwiO2Rpc3BsYXk6YmxvY2s7Y2xlYXI6Ym90aH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS10b29sYmFyIC5icy1iYXJzLC5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXRvb2xiYXIgLmNvbHVtbnMsLmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhciAuc2VhcmNoe3Bvc2l0aW9uOnJlbGF0aXZlO21hcmdpbi10b3A6MTBweDttYXJnaW4tYm90dG9tOjEwcHh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhciAuY29sdW1ucyAuYnRuLWdyb3VwPi5idG4tZ3JvdXB7ZGlzcGxheTppbmxpbmUtYmxvY2s7bWFyZ2luLWxlZnQ6LTFweCFpbXBvcnRhbnR9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhciAuY29sdW1ucyAuYnRuLWdyb3VwPi5idG4tZ3JvdXA+LmJ0bntib3JkZXItcmFkaXVzOjB9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhciAuY29sdW1ucyAuYnRuLWdyb3VwPi5idG4tZ3JvdXA6Zmlyc3QtY2hpbGQ+LmJ0bntib3JkZXItdG9wLWxlZnQtcmFkaXVzOjRweDtib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjRweH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS10b29sYmFyIC5jb2x1bW5zIC5idG4tZ3JvdXA+LmJ0bi1ncm91cDpsYXN0LWNoaWxkPi5idG57Ym9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NHB4O2JvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjRweH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS10b29sYmFyIC5jb2x1bW5zIC5kcm9wZG93bi1tZW51e3RleHQtYWxpZ246bGVmdDttYXgtaGVpZ2h0OjMwMHB4O292ZXJmbG93OmF1dG87LW1zLW92ZXJmbG93LXN0eWxlOnNjcm9sbGJhcjt6LWluZGV4OjEwMDF9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtdG9vbGJhciAuY29sdW1ucyBsYWJlbHtkaXNwbGF5OmJsb2NrO3BhZGRpbmc6M3B4IDIwcHg7Y2xlYXI6Ym90aDtmb250LXdlaWdodDo0MDA7bGluZS1oZWlnaHQ6MS40Mjg2fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXRvb2xiYXIgLmNvbHVtbnMtbGVmdHttYXJnaW4tcmlnaHQ6NXB4fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXRvb2xiYXIgLmNvbHVtbnMtcmlnaHR7bWFyZ2luLWxlZnQ6NXB4fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXRvb2xiYXIgLnB1bGwtcmlnaHQgLmRyb3Bkb3duLW1lbnV7cmlnaHQ6MDtsZWZ0OmF1dG99LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVye3Bvc2l0aW9uOnJlbGF0aXZlO2NsZWFyOmJvdGh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZXt3aWR0aDoxMDAlO21hcmdpbi1ib3R0b206MCFpbXBvcnRhbnR9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0ZCwuYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIHRoe3ZlcnRpY2FsLWFsaWduOm1pZGRsZTtib3gtc2l6aW5nOmJvcmRlci1ib3h9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0aGVhZCB0aHt2ZXJ0aWNhbC1hbGlnbjpib3R0b207cGFkZGluZzowO21hcmdpbjowfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgdGhlYWQgdGg6Zm9jdXN7b3V0bGluZTowIHNvbGlkIHRyYW5zcGFyZW50fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgdGhlYWQgdGguZGV0YWlse3dpZHRoOjMwcHh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0aGVhZCB0aCAudGgtaW5uZXJ7cGFkZGluZzouNzVyZW07dmVydGljYWwtYWxpZ246Ym90dG9tO292ZXJmbG93OmhpZGRlbjt0ZXh0LW92ZXJmbG93OmVsbGlwc2lzO3doaXRlLXNwYWNlOm5vd3JhcH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIHRoZWFkIHRoIC5zb3J0YWJsZXtjdXJzb3I6cG9pbnRlcjtiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0O2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDtwYWRkaW5nLXJpZ2h0OjMwcHghaW1wb3J0YW50fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgdGhlYWQgdGggLnNvcnRhYmxlLnNvcnRhYmxlLWNlbnRlcntwYWRkaW5nLWxlZnQ6MjBweCFpbXBvcnRhbnQ7cGFkZGluZy1yaWdodDoyMHB4IWltcG9ydGFudH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIHRoZWFkIHRoIC5ib3Roe2JhY2tncm91bmQtaW1hZ2U6dXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCTUFBQUFUQ0FRQUFBRFlXZjVIQUFBQWtFbEVRVlFvejdYIFFNUTVBUUJDRjRkV1FTSnhDNXd3YXgxQ3ExZTdCQWR4RDVTTCtUcS9RQ00xb05pSmlkd294MDM1NW1YbkcvRHJFdElRNmF6aW9OWlF4STB5a1BoVFFJd2hDUitCbUJZdGxLN2tMSll3V0NjSkE5TTRxZHJacmQ4cFBqWldQdE9xZFJReTMyMFlTVjE3T2F0RkM0ZXV0czZ6MzlHWU1LUlBDVEtZOVVuUFE2UCtHdE1SZkd0UG5CQ2lxaEFlSlBta3FBQUFBQUVsRlRrU3VRbUNDXCIpfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgdGhlYWQgdGggLmFzY3tiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQk1BQUFBVENBWUFBQUJ5VURiTUFBQUFaMGxFUVZRNHkyTmdHTEtncXVFdUZ4QlBBR0kyYWhoV0NzUy9nRGliVW9PMGdQZ3hFUDhINHR0QXJFeXVRWXhBUEJkcUVBeFBCSW1UWTVnakVMOURNK3dURU51UWFoQXZFTzlETXdpR2R3QXhPeW1HSlFMeFR5RCtqZ1dEeENNWlJzRW9HQVZvQUFEZWVtd3RQY1pJMndBQUFBQkpSVTVFcmtKZ2dnPT1cIil9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0aGVhZCB0aCAuZGVzY3tiYWNrZ3JvdW5kLWltYWdlOnVybChcImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQk1BQUFBVENBWUFBQUJ5VURiTUFBQUFaVWxFUVZRNHkyTmdHQVdqWUJTZ2dhcUd1NUZBL0JPSXYyUEJJUEZFVWd4akIrSWRRUHdmQzk0SHhMeWt1czRHaUQraEdmUU9pQjNKOFNvakVFOUVNMnd1U0p6Y3NGTUc0dHRRZ3g0RHNSYWxrWkVOeEwrQXVKUWFNY3NHeEJPQW1Hdm9wazhBVnoxc0xaZ2cwYnNBQUFBQVNVVk9SSzVDWUlJPSBcIil9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0Ym9keSB0ci5zZWxlY3RlZCB0ZHtiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMCwwLDAsLjA3NSl9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0Ym9keSB0ci5uby1yZWNvcmRzLWZvdW5kIHRke3RleHQtYWxpZ246Y2VudGVyfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgdGJvZHkgdHIgLmNhcmQtdmlld3tkaXNwbGF5OmZsZXh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC50YWJsZSB0Ym9keSB0ciAuY2FyZC12aWV3IC5jYXJkLXZpZXctdGl0bGV7Zm9udC13ZWlnaHQ6NzAwO2Rpc3BsYXk6aW5saW5lLWJsb2NrO21pbi13aWR0aDozMCU7d2lkdGg6YXV0byFpbXBvcnRhbnQ7dGV4dC1hbGlnbjpsZWZ0IWltcG9ydGFudH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIHRib2R5IHRyIC5jYXJkLXZpZXcgLmNhcmQtdmlldy12YWx1ZXt3aWR0aDoxMDAlIWltcG9ydGFudDt0ZXh0LWFsaWduOmxlZnQhaW1wb3J0YW50fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgLmJzLWNoZWNrYm94e3RleHQtYWxpZ246Y2VudGVyfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAudGFibGUgLmJzLWNoZWNrYm94IGxhYmVse21hcmdpbi1ib3R0b206MH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIC5icy1jaGVja2JveCBsYWJlbCBpbnB1dFt0eXBlPWNoZWNrYm94XSwuYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlIC5icy1jaGVja2JveCBsYWJlbCBpbnB1dFt0eXBlPXJhZGlvXXttYXJnaW46MCBhdXRvIWltcG9ydGFudH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLnRhYmxlLnRhYmxlLXNtIC50aC1pbm5lcntwYWRkaW5nOi4zcmVtfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lci5maXhlZC1oZWlnaHQ6bm90KC5oYXMtZm9vdGVyKXtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGVlMmU2fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lci5maXhlZC1oZWlnaHQuaGFzLWNhcmQtdmlld3tib3JkZXItdG9wOjFweCBzb2xpZCAjZGVlMmU2O2JvcmRlci1ib3R0b206MXB4IHNvbGlkICNkZWUyZTZ9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyLmZpeGVkLWhlaWdodCAuZml4ZWQtdGFibGUtYm9yZGVye2JvcmRlci1sZWZ0OjFweCBzb2xpZCAjZGVlMmU2O2JvcmRlci1yaWdodDoxcHggc29saWQgI2RlZTJlNn0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIuZml4ZWQtaGVpZ2h0IC50YWJsZSB0aGVhZCB0aHtib3JkZXItYm90dG9tOjFweCBzb2xpZCAjZGVlMmU2fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lci5maXhlZC1oZWlnaHQgLnRhYmxlLWRhcmsgdGhlYWQgdGh7Ym9yZGVyLWJvdHRvbToxcHggc29saWQgIzMyMzgzZX0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWhlYWRlcntvdmVyZmxvdzpoaWRkZW59LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5e292ZXJmbG93LXg6YXV0bztvdmVyZmxvdy15OmF1dG87aGVpZ2h0OjEwMCV9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5IC5maXhlZC10YWJsZS1sb2FkaW5ne2FsaWduLWl0ZW1zOmNlbnRlcjtiYWNrZ3JvdW5kOiNmZmY7ZGlzcGxheTpmbGV4O2p1c3RpZnktY29udGVudDpjZW50ZXI7cG9zaXRpb246YWJzb2x1dGU7Ym90dG9tOjA7d2lkdGg6MTAwJTttYXgtd2lkdGg6MTAwJTt6LWluZGV4OjEwMDA7dHJhbnNpdGlvbjp2aXNpYmlsaXR5IDBzLG9wYWNpdHkgLjE1cyBlYXNlLWluLW91dDtvcGFjaXR5OjA7dmlzaWJpbGl0eTpoaWRkZW59LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5IC5maXhlZC10YWJsZS1sb2FkaW5nLm9wZW57dmlzaWJpbGl0eTp2aXNpYmxlO29wYWNpdHk6MX0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcgLmxvYWRpbmctd3JhcHthbGlnbi1pdGVtczpiYXNlbGluZTtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcgLmxvYWRpbmctd3JhcCAubG9hZGluZy10ZXh0e21hcmdpbi1yaWdodDo2cHh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5IC5maXhlZC10YWJsZS1sb2FkaW5nIC5sb2FkaW5nLXdyYXAgLmFuaW1hdGlvbi13cmFwe2FsaWduLWl0ZW1zOmNlbnRlcjtkaXNwbGF5OmZsZXg7anVzdGlmeS1jb250ZW50OmNlbnRlcn0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcgLmxvYWRpbmctd3JhcCAuYW5pbWF0aW9uLWRvdCwuYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcgLmxvYWRpbmctd3JhcCAuYW5pbWF0aW9uLXdyYXA6OmFmdGVyLC5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAuZml4ZWQtdGFibGUtYm9keSAuZml4ZWQtdGFibGUtbG9hZGluZyAubG9hZGluZy13cmFwIC5hbmltYXRpb24td3JhcDo6YmVmb3Jle2NvbnRlbnQ6XCJcIjthbmltYXRpb24tZHVyYXRpb246MS41czthbmltYXRpb24taXRlcmF0aW9uLWNvdW50OmluZmluaXRlO2FuaW1hdGlvbi1uYW1lOmxvYWRpbmc7YmFja2dyb3VuZDojMjEyNTI5O2JvcmRlci1yYWRpdXM6NTAlO2Rpc3BsYXk6YmxvY2s7aGVpZ2h0OjVweDttYXJnaW46MCA0cHg7b3BhY2l0eTowO3dpZHRoOjVweH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcgLmxvYWRpbmctd3JhcCAuYW5pbWF0aW9uLWRvdHthbmltYXRpb24tZGVsYXk6LjNzfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLWNvbnRhaW5lciAuZml4ZWQtdGFibGUtYm9keSAuZml4ZWQtdGFibGUtbG9hZGluZyAubG9hZGluZy13cmFwIC5hbmltYXRpb24td3JhcDo6YWZ0ZXJ7YW5pbWF0aW9uLWRlbGF5Oi42c30uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcudGFibGUtZGFya3tiYWNrZ3JvdW5kOiMyMTI1Mjl9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5IC5maXhlZC10YWJsZS1sb2FkaW5nLnRhYmxlLWRhcmsgLmFuaW1hdGlvbi1kb3QsLmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1ib2R5IC5maXhlZC10YWJsZS1sb2FkaW5nLnRhYmxlLWRhcmsgLmFuaW1hdGlvbi13cmFwOjphZnRlciwuYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1jb250YWluZXIgLmZpeGVkLXRhYmxlLWJvZHkgLmZpeGVkLXRhYmxlLWxvYWRpbmcudGFibGUtZGFyayAuYW5pbWF0aW9uLXdyYXA6OmJlZm9yZXtiYWNrZ3JvdW5kOiNmZmZ9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtY29udGFpbmVyIC5maXhlZC10YWJsZS1mb290ZXJ7b3ZlcmZsb3c6aGlkZGVufS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb246OmFmdGVye2NvbnRlbnQ6XCJcIjtkaXNwbGF5OmJsb2NrO2NsZWFyOmJvdGh9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtcGFnaW5hdGlvbj4ucGFnaW5hdGlvbiwuYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1wYWdpbmF0aW9uPi5wYWdpbmF0aW9uLWRldGFpbHttYXJnaW4tdG9wOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb24+LnBhZ2luYXRpb24tZGV0YWlsIC5wYWdpbmF0aW9uLWluZm97bGluZS1oZWlnaHQ6MzRweDttYXJnaW4tcmlnaHQ6NXB4fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb24+LnBhZ2luYXRpb24tZGV0YWlsIC5wYWdlLWxpc3R7ZGlzcGxheTppbmxpbmUtYmxvY2t9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtcGFnaW5hdGlvbj4ucGFnaW5hdGlvbi1kZXRhaWwgLnBhZ2UtbGlzdCAuYnRuLWdyb3Vwe3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO3ZlcnRpY2FsLWFsaWduOm1pZGRsZX0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1wYWdpbmF0aW9uPi5wYWdpbmF0aW9uLWRldGFpbCAucGFnZS1saXN0IC5idG4tZ3JvdXAgLmRyb3Bkb3duLW1lbnV7bWFyZ2luLWJvdHRvbTowfS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb24+LnBhZ2luYXRpb24gdWwucGFnaW5hdGlvbnttYXJnaW46MH0uYm9vdHN0cmFwLXRhYmxlIC5maXhlZC10YWJsZS1wYWdpbmF0aW9uPi5wYWdpbmF0aW9uIHVsLnBhZ2luYXRpb24gbGkucGFnZS1pbnRlcm1lZGlhdGUgYXtjb2xvcjojYzhjOGM4fS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb24+LnBhZ2luYXRpb24gdWwucGFnaW5hdGlvbiBsaS5wYWdlLWludGVybWVkaWF0ZSBhOjpiZWZvcmV7Y29udGVudDpcIlxcMkIwNVwifS5ib290c3RyYXAtdGFibGUgLmZpeGVkLXRhYmxlLXBhZ2luYXRpb24+LnBhZ2luYXRpb24gdWwucGFnaW5hdGlvbiBsaS5wYWdlLWludGVybWVkaWF0ZSBhOjphZnRlcntjb250ZW50OlwiXFwyN0ExXCJ9LmJvb3RzdHJhcC10YWJsZSAuZml4ZWQtdGFibGUtcGFnaW5hdGlvbj4ucGFnaW5hdGlvbiB1bC5wYWdpbmF0aW9uIGxpLmRpc2FibGVkIGF7cG9pbnRlci1ldmVudHM6bm9uZTtjdXJzb3I6ZGVmYXVsdH0uYm9vdHN0cmFwLXRhYmxlLmZ1bGxzY3JlZW57cG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDowO3otaW5kZXg6MTA1MDt3aWR0aDoxMDAlIWltcG9ydGFudDtiYWNrZ3JvdW5kOiNmZmY7aGVpZ2h0OmNhbGMoMTAwdmgpO292ZXJmbG93LXk6c2Nyb2xsfS5ib290c3RyYXAtdGFibGUuYm9vdHN0cmFwNCAucGFnaW5hdGlvbi1sZyAucGFnZS1saW5rLC5ib290c3RyYXAtdGFibGUuYm9vdHN0cmFwNSAucGFnaW5hdGlvbi1sZyAucGFnZS1saW5re3BhZGRpbmc6LjVyZW0gMXJlbX0uYm9vdHN0cmFwLXRhYmxlLmJvb3RzdHJhcDUgLmZsb2F0LWxlZnR7ZmxvYXQ6bGVmdH0uYm9vdHN0cmFwLXRhYmxlLmJvb3RzdHJhcDUgLmZsb2F0LXJpZ2h0e2Zsb2F0OnJpZ2h0fWRpdi5maXhlZC10YWJsZS1zY3JvbGwtaW5uZXJ7d2lkdGg6MTAwJTtoZWlnaHQ6MjAwcHh9ZGl2LmZpeGVkLXRhYmxlLXNjcm9sbC1vdXRlcnt0b3A6MDtsZWZ0OjA7dmlzaWJpbGl0eTpoaWRkZW47d2lkdGg6MjAwcHg7aGVpZ2h0OjE1MHB4O292ZXJmbG93OmhpZGRlbn1Aa2V5ZnJhbWVzIGxvYWRpbmd7MCV7b3BhY2l0eTowfTUwJXtvcGFjaXR5OjF9MTAwJXtvcGFjaXR5OjB9fSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/public/build/table.js b/public/build/table.js deleted file mode 100644 index 4af9265c..00000000 --- a/public/build/table.js +++ /dev/null @@ -1,197 +0,0 @@ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["table"],{ - -/***/ "./assets/table.js": -/*!*************************!*\ - !*** ./assets/table.js ***! - \*************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.map.js */ "./node_modules/core-js/modules/es.array.map.js"); -/* harmony import */ var core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name.js */ "./node_modules/core-js/modules/es.function.name.js"); -/* harmony import */ var core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name_js__WEBPACK_IMPORTED_MODULE_1__); -/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.array.sort.js */ "./node_modules/core-js/modules/es.array.sort.js"); -/* harmony import */ var core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_sort_js__WEBPACK_IMPORTED_MODULE_2__); -/* harmony import */ var tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tableexport.jquery.plugin */ "./node_modules/tableexport.jquery.plugin/tableExport.min.js"); -/* harmony import */ var tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tableexport_jquery_plugin__WEBPACK_IMPORTED_MODULE_3__); -/* harmony import */ var bootstrap_table_dist_bootstrap_table_min_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! bootstrap-table/dist/bootstrap-table.min.css */ "./node_modules/bootstrap-table/dist/bootstrap-table.min.css"); -/* harmony import */ var bootstrap_table__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! bootstrap-table */ "./node_modules/bootstrap-table/dist/bootstrap-table.min.js"); -/* harmony import */ var bootstrap_table__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(bootstrap_table__WEBPACK_IMPORTED_MODULE_5__); -/* harmony import */ var bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! bootstrap-table/dist/extensions/export/bootstrap-table-export */ "./node_modules/bootstrap-table/dist/extensions/export/bootstrap-table-export.js"); -/* harmony import */ var bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(bootstrap_table_dist_extensions_export_bootstrap_table_export__WEBPACK_IMPORTED_MODULE_6__); -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); -var _$$html; - - - - - - - -$(".filterSelect").select2({ - theme: "bootstrap-5" -}); -$('.filterSelect').on('change', refreshTable); -var apiCall = { - ajax: { - delay: 1000, - data: function data(params) { - var query = { - itemsPerPage: 30, - page: params.page || 1, - name: params.term - }; - return query; - }, - processResults: function processResults(data) { - var results = data["hydra:member"].map(function (item) { - var _item$name; - return { - "id": item.id, - "text": (_item$name = item.name) !== null && _item$name !== void 0 ? _item$name : item.acronym - }; - }); - return { - results: results, - pagination: { - more: data["hydra:view"]["hydra:last"] !== undefined - } - }; - } - } -}; -var apiParti = apiCall; -apiParti.ajax.url = '/api/partis'; -apiParti.placeholder = (_$$html = $('#placeholderSelectParti').html()) !== null && _$$html !== void 0 ? _$$html : "Select a parti"; -$('#selectParti').select2(apiParti); -var apiRegion = apiCall; -apiRegion.ajax.url = '/api/regions'; -apiRegion.placeholder = "Select a region"; -$('#selectRegion').select2(apiRegion); -var apiProvince = apiCall; -apiProvince.ajax.url = '/api/provinces'; -apiProvince.placeholder = "Select a province"; -$('#selectProvince').select2(apiProvince); -var apiArrondissement = apiCall; -apiArrondissement.ajax.url = '/api/arrondissements'; -apiArrondissement.placeholder = "Select a arrondissement"; -$('#selectArrondissement').select2(apiArrondissement); -var apiCanton = apiCall; -apiCanton.ajax.url = '/api/cantons'; -apiCanton.placeholder = "Select a canton"; -$('#selectCanton').select2(apiCanton); -var apiCommune = apiCall; -apiCommune.ajax.url = '/api/communes'; -apiCommune.placeholder = "Select a commune"; -$('#selectCommune').select2(apiCommune); -var apiElection = apiCall; -apiElection.ajax.url = '/api/elections'; -apiElection.placeholder = "Select a election"; -$('#selectElection').select2(apiElection); -function refreshTable() { - $('#table').bootstrapTable('refresh'); -} -window.queryParams = function (params) { - console.log('queryParams', params); - return params; -}; -window.ajaxRequest = function (params) { - var parameters = {}; - if (params.data.limit) { - parameters.itemsPerPage = params.data.limit; - parameters.page = params.data.offset / params.data.limit + 1; - } else { - parameters.pagination = false; - } - if (params.data.sort) { - parameters['order[' + params.data.sort + ']'] = params.data.order; - } - if ($($('#selectParti')[0]).val().length > 0) { - parameters['parti.id'] = $($('#selectParti')[0]).val(); - } - if ($($('#selectRegion')[0]).val().length > 0) { - parameters['idRegion.id'] = $($('#selectRegion')[0]).val(); - } - if ($($('#selectProvince')[0]).val().length > 0) { - parameters['idProvince.id'] = $($('#selectProvince')[0]).val(); - } - if ($($('#selectArrondissement')[0]).val().length > 0) { - parameters['idArrondissement.id'] = $($('#selectArrondissement')[0]).val(); - } - if ($($('#selectCanton')[0]).val().length > 0) { - parameters['idCanton.id'] = $($('#selectCanton')[0]).val(); - } - if ($($('#selectCommune')[0]).val().length > 0) { - parameters['idCommune.id'] = $($('#selectCommune')[0]).val(); - } - if ($($('#selectElection')[0]).val().length > 0) { - parameters['idElection.id'] = $($('#selectElection')[0]).val(); - } - var url = '/api/resultats'; - $.get(url + '?' + $.param(parameters)).then(function (res) { - var result = res['hydra:member']; - result.total = res['hydra:totalItems']; - params.success(result); - }); -}; - -/***/ }), - -/***/ "./node_modules/core-js/modules/es.function.name.js": -/*!**********************************************************!*\ - !*** ./node_modules/core-js/modules/es.function.name.js ***! - \**********************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ "./node_modules/core-js/internals/descriptors.js"); -var FUNCTION_NAME_EXISTS = (__webpack_require__(/*! ../internals/function-name */ "./node_modules/core-js/internals/function-name.js").EXISTS); -var uncurryThis = __webpack_require__(/*! ../internals/function-uncurry-this */ "./node_modules/core-js/internals/function-uncurry-this.js"); -var defineProperty = (__webpack_require__(/*! ../internals/object-define-property */ "./node_modules/core-js/internals/object-define-property.js").f); - -var FunctionPrototype = Function.prototype; -var functionToString = uncurryThis(FunctionPrototype.toString); -var nameRE = /function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/; -var regExpExec = uncurryThis(nameRE.exec); -var NAME = 'name'; - -// Function instances `.name` property -// https://tc39.es/ecma262/#sec-function-instances-name -if (DESCRIPTORS && !FUNCTION_NAME_EXISTS) { - defineProperty(FunctionPrototype, NAME, { - configurable: true, - get: function () { - try { - return regExpExec(nameRE, functionToString(this))[1]; - } catch (error) { - return ''; - } - } - }); -} - - -/***/ }), - -/***/ "./node_modules/bootstrap-table/dist/bootstrap-table.min.css": -/*!*******************************************************************!*\ - !*** ./node_modules/bootstrap-table/dist/bootstrap-table.min.css ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -// extracted by mini-css-extract-plugin - - -/***/ }) - -}, -/******/ __webpack_require__ => { // webpackRuntimeModules -/******/ var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId)) -/******/ __webpack_require__.O(0, ["vendors-node_modules_jquery_dist_jquery_js","vendors-node_modules_core-js_internals_array-method-is-strict_js-node_modules_core-js_interna-a257e2","vendors-node_modules_bootstrap-table_dist_bootstrap-table_min_js-node_modules_bootstrap-table-51d94c"], () => (__webpack_exec__("./assets/table.js"))); -/******/ var __webpack_exports__ = __webpack_require__.O(); -/******/ } -]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Q0FBQztJQUNoQ0MsTUFBTSxDQUFDQyxLQUFLLEdBQUdGLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQztJQUN0Q3pDLE1BQU0sQ0FBQzRDLE9BQU8sQ0FBQ0YsTUFBTSxDQUFDO0VBQzFCLENBQUMsQ0FBQztBQUNOLENBQUM7Ozs7Ozs7Ozs7QUMzSEQsa0JBQWtCLG1CQUFPLENBQUMsaUZBQTBCO0FBQ3BELDJCQUEyQixtSEFBNEM7QUFDdkUsa0JBQWtCLG1CQUFPLENBQUMscUdBQW9DO0FBQzlELHFCQUFxQixnSUFBZ0Q7O0FBRXJFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7QUN4QkEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9hc3NldHMvdGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtdGFibGUvZGlzdC9ib290c3RyYXAtdGFibGUubWluLmNzcz9hNWUzIl0sInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0ICd0YWJsZWV4cG9ydC5qcXVlcnkucGx1Z2luJztcbmltcG9ydCAnYm9vdHN0cmFwLXRhYmxlL2Rpc3QvYm9vdHN0cmFwLXRhYmxlLm1pbi5jc3MnO1xuaW1wb3J0ICdib290c3RyYXAtdGFibGUnO1xuaW1wb3J0ICdib290c3RyYXAtdGFibGUvZGlzdC9leHRlbnNpb25zL2V4cG9ydC9ib290c3RyYXAtdGFibGUtZXhwb3J0JztcblxuJChcIi5maWx0ZXJTZWxlY3RcIikuc2VsZWN0Mih7XG4gICAgdGhlbWU6IFwiYm9vdHN0cmFwLTVcIixcbn0pO1xuJCgnLmZpbHRlclNlbGVjdCcpLm9uKCdjaGFuZ2UnLHJlZnJlc2hUYWJsZSlcblxubGV0IGFwaUNhbGwgPSB7XG4gICAgYWpheDoge1xuICAgICAgICBkZWxheTogMTAwMCxcbiAgICAgICAgZGF0YTogZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgICAgICAgdmFyIHF1ZXJ5ID0ge1xuICAgICAgICAgICAgICAgIGl0ZW1zUGVyUGFnZTogMzAsXG4gICAgICAgICAgICAgICAgcGFnZTogcGFyYW1zLnBhZ2UgfHwgMSxcbiAgICAgICAgICAgICAgICBuYW1lOiBwYXJhbXMudGVybVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHF1ZXJ5O1xuICAgICAgICB9LFxuICAgICAgICBwcm9jZXNzUmVzdWx0czogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgICAgIGxldCByZXN1bHRzID0gZGF0YVtcImh5ZHJhOm1lbWJlclwiXS5tYXAoKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBcImlkXCI6IGl0ZW0uaWQsXG4gICAgICAgICAgICAgICAgICAgIFwidGV4dFwiOiBpdGVtLm5hbWUgPz8gaXRlbS5hY3JvbnltXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgcmVzdWx0cyxcbiAgICAgICAgICAgICAgICBwYWdpbmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgICAgIG1vcmU6IGRhdGFbXCJoeWRyYTp2aWV3XCJdW1wiaHlkcmE6bGFzdFwiXSAhPT0gdW5kZWZpbmVkXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH1cbn1cblxubGV0IGFwaVBhcnRpID0gYXBpQ2FsbDtcbmFwaVBhcnRpLmFqYXgudXJsID0gJy9hcGkvcGFydGlzJztcbmFwaVBhcnRpLnBsYWNlaG9sZGVyID0gJCgnI3BsYWNlaG9sZGVyU2VsZWN0UGFydGknKS5odG1sKCkgPz8gXCJTZWxlY3QgYSBwYXJ0aVwiO1xuJCgnI3NlbGVjdFBhcnRpJykuc2VsZWN0MihhcGlQYXJ0aSk7XG5cbmxldCBhcGlSZWdpb24gPSBhcGlDYWxsO1xuYXBpUmVnaW9uLmFqYXgudXJsID0gJy9hcGkvcmVnaW9ucyc7XG5hcGlSZWdpb24ucGxhY2Vob2xkZXIgPSBcIlNlbGVjdCBhIHJlZ2lvblwiO1xuJCgnI3NlbGVjdFJlZ2lvbicpLnNlbGVjdDIoYXBpUmVnaW9uKTtcblxubGV0IGFwaVByb3ZpbmNlID0gYXBpQ2FsbDtcbmFwaVByb3ZpbmNlLmFqYXgudXJsID0gJy9hcGkvcHJvdmluY2VzJztcbmFwaVByb3ZpbmNlLnBsYWNlaG9sZGVyID0gXCJTZWxlY3QgYSBwcm92aW5jZVwiO1xuJCgnI3NlbGVjdFByb3ZpbmNlJykuc2VsZWN0MihhcGlQcm92aW5jZSk7XG5cbmxldCBhcGlBcnJvbmRpc3NlbWVudCA9IGFwaUNhbGw7XG5hcGlBcnJvbmRpc3NlbWVudC5hamF4LnVybCA9ICcvYXBpL2Fycm9uZGlzc2VtZW50cyc7XG5hcGlBcnJvbmRpc3NlbWVudC5wbGFjZWhvbGRlciA9IFwiU2VsZWN0IGEgYXJyb25kaXNzZW1lbnRcIjtcbiQoJyNzZWxlY3RBcnJvbmRpc3NlbWVudCcpLnNlbGVjdDIoYXBpQXJyb25kaXNzZW1lbnQpO1xuXG5sZXQgYXBpQ2FudG9uID0gYXBpQ2FsbDtcbmFwaUNhbnRvbi5hamF4LnVybCA9ICcvYXBpL2NhbnRvbnMnO1xuYXBpQ2FudG9uLnBsYWNlaG9sZGVyID0gXCJTZWxlY3QgYSBjYW50b25cIjtcbiQoJyNzZWxlY3RDYW50b24nKS5zZWxlY3QyKGFwaUNhbnRvbik7XG5cbmxldCBhcGlDb21tdW5lID0gYXBpQ2FsbDtcbmFwaUNvbW11bmUuYWpheC51cmwgPSAnL2FwaS9jb21tdW5lcyc7XG5hcGlDb21tdW5lLnBsYWNlaG9sZGVyID0gXCJTZWxlY3QgYSBjb21tdW5lXCI7XG4kKCcjc2VsZWN0Q29tbXVuZScpLnNlbGVjdDIoYXBpQ29tbXVuZSk7XG5cbmxldCBhcGlFbGVjdGlvbiA9IGFwaUNhbGw7XG5hcGlFbGVjdGlvbi5hamF4LnVybCA9ICcvYXBpL2VsZWN0aW9ucyc7XG5hcGlFbGVjdGlvbi5wbGFjZWhvbGRlciA9IFwiU2VsZWN0IGEgZWxlY3Rpb25cIjtcbiQoJyNzZWxlY3RFbGVjdGlvbicpLnNlbGVjdDIoYXBpRWxlY3Rpb24pO1xuXG5mdW5jdGlvbiByZWZyZXNoVGFibGUoKXtcbiAgICAkKCcjdGFibGUnKS5ib290c3RyYXBUYWJsZSgncmVmcmVzaCcpXG59XG53aW5kb3cucXVlcnlQYXJhbXMgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgY29uc29sZS5sb2coJ3F1ZXJ5UGFyYW1zJywgcGFyYW1zKVxuICAgIHJldHVybiBwYXJhbXM7XG59XG5cbndpbmRvdy5hamF4UmVxdWVzdCA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICBsZXQgcGFyYW1ldGVycyA9IHt9O1xuICAgIGlmIChwYXJhbXMuZGF0YS5saW1pdCkge1xuICAgICAgICBwYXJhbWV0ZXJzLml0ZW1zUGVyUGFnZSA9IHBhcmFtcy5kYXRhLmxpbWl0O1xuICAgICAgICBwYXJhbWV0ZXJzLnBhZ2UgPSBwYXJhbXMuZGF0YS5vZmZzZXQgLyBwYXJhbXMuZGF0YS5saW1pdCArIDE7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBwYXJhbWV0ZXJzLnBhZ2luYXRpb24gPSBmYWxzZTtcbiAgICB9XG4gICAgaWYgKHBhcmFtcy5kYXRhLnNvcnQpIHtcbiAgICAgICAgcGFyYW1ldGVyc1snb3JkZXJbJyArIHBhcmFtcy5kYXRhLnNvcnQgKyAnXSddID0gcGFyYW1zLmRhdGEub3JkZXI7XG4gICAgfVxuICAgIGlmICgkKCQoJyNzZWxlY3RQYXJ0aScpWzBdKS52YWwoKS5sZW5ndGggPiAwKXtcbiAgICAgICAgcGFyYW1ldGVyc1sncGFydGkuaWQnXSA9ICQoJCgnI3NlbGVjdFBhcnRpJylbMF0pLnZhbCgpO1xuICAgIH1cbiAgICBpZiAoJCgkKCcjc2VsZWN0UmVnaW9uJylbMF0pLnZhbCgpLmxlbmd0aCA+IDApe1xuICAgICAgICBwYXJhbWV0ZXJzWydpZFJlZ2lvbi5pZCddID0gJCgkKCcjc2VsZWN0UmVnaW9uJylbMF0pLnZhbCgpO1xuICAgIH1cbiAgICBpZiAoJCgkKCcjc2VsZWN0UHJvdmluY2UnKVswXSkudmFsKCkubGVuZ3RoID4gMCl7XG4gICAgICAgIHBhcmFtZXRlcnNbJ2lkUHJvdmluY2UuaWQnXSA9ICQoJCgnI3NlbGVjdFByb3ZpbmNlJylbMF0pLnZhbCgpO1xuICAgIH1cbiAgICBpZiAoJCgkKCcjc2VsZWN0QXJyb25kaXNzZW1lbnQnKVswXSkudmFsKCkubGVuZ3RoID4gMCl7XG4gICAgICAgIHBhcmFtZXRlcnNbJ2lkQXJyb25kaXNzZW1lbnQuaWQnXSA9ICQoJCgnI3NlbGVjdEFycm9uZGlzc2VtZW50JylbMF0pLnZhbCgpO1xuICAgIH1cbiAgICBpZiAoJCgkKCcjc2VsZWN0Q2FudG9uJylbMF0pLnZhbCgpLmxlbmd0aCA+IDApe1xuICAgICAgICBwYXJhbWV0ZXJzWydpZENhbnRvbi5pZCddID0gJCgkKCcjc2VsZWN0Q2FudG9uJylbMF0pLnZhbCgpO1xuICAgIH1cbiAgICBpZiAoJCgkKCcjc2VsZWN0Q29tbXVuZScpWzBdKS52YWwoKS5sZW5ndGggPiAwKXtcbiAgICAgICAgcGFyYW1ldGVyc1snaWRDb21tdW5lLmlkJ10gPSAkKCQoJyNzZWxlY3RDb21tdW5lJylbMF0pLnZhbCgpO1xuICAgIH1cblxuICAgIGlmICgkKCQoJyNzZWxlY3RFbGVjdGlvbicpWzBdKS52YWwoKS5sZW5ndGggPiAwKXtcbiAgICAgICAgcGFyYW1ldGVyc1snaWRFbGVjdGlvbi5pZCddID0gJCgkKCcjc2VsZWN0RWxlY3Rpb24nKVswXSkudmFsKCk7XG4gICAgfVxuXG4gICAgdmFyIHVybCA9ICcvYXBpL3Jlc3VsdGF0cyc7XG4gICAgJC5nZXQodXJsICsgJz8nICsgJC5wYXJhbShwYXJhbWV0ZXJzKSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSByZXNbJ2h5ZHJhOm1lbWJlciddO1xuICAgICAgICByZXN1bHQudG90YWwgPSByZXNbJ2h5ZHJhOnRvdGFsSXRlbXMnXTtcbiAgICAgICAgcGFyYW1zLnN1Y2Nlc3MocmVzdWx0KVxuICAgIH0pXG59IiwidmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi4vaW50ZXJuYWxzL2Rlc2NyaXB0b3JzJyk7XG52YXIgRlVOQ1RJT05fTkFNRV9FWElTVFMgPSByZXF1aXJlKCcuLi9pbnRlcm5hbHMvZnVuY3Rpb24tbmFtZScpLkVYSVNUUztcbnZhciB1bmN1cnJ5VGhpcyA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9mdW5jdGlvbi11bmN1cnJ5LXRoaXMnKTtcbnZhciBkZWZpbmVQcm9wZXJ0eSA9IHJlcXVpcmUoJy4uL2ludGVybmFscy9vYmplY3QtZGVmaW5lLXByb3BlcnR5JykuZjtcblxudmFyIEZ1bmN0aW9uUHJvdG90eXBlID0gRnVuY3Rpb24ucHJvdG90eXBlO1xudmFyIGZ1bmN0aW9uVG9TdHJpbmcgPSB1bmN1cnJ5VGhpcyhGdW5jdGlvblByb3RvdHlwZS50b1N0cmluZyk7XG52YXIgbmFtZVJFID0gL2Z1bmN0aW9uXFxiKD86XFxzfFxcL1xcKltcXFNcXHNdKj9cXCpcXC98XFwvXFwvW15cXG5cXHJdKltcXG5cXHJdKykqKFteXFxzKC9dKikvO1xudmFyIHJlZ0V4cEV4ZWMgPSB1bmN1cnJ5VGhpcyhuYW1lUkUuZXhlYyk7XG52YXIgTkFNRSA9ICduYW1lJztcblxuLy8gRnVuY3Rpb24gaW5zdGFuY2VzIGAubmFtZWAgcHJvcGVydHlcbi8vIGh0dHBzOi8vdGMzOS5lcy9lY21hMjYyLyNzZWMtZnVuY3Rpb24taW5zdGFuY2VzLW5hbWVcbmlmIChERVNDUklQVE9SUyAmJiAhRlVOQ1RJT05fTkFNRV9FWElTVFMpIHtcbiAgZGVmaW5lUHJvcGVydHkoRnVuY3Rpb25Qcm90b3R5cGUsIE5BTUUsIHtcbiAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gcmVnRXhwRXhlYyhuYW1lUkUsIGZ1bmN0aW9uVG9TdHJpbmcodGhpcykpWzFdO1xuICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgcmV0dXJuICcnO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59XG4iLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiXSwibmFtZXMiOlsiJCIsInNlbGVjdDIiLCJ0aGVtZSIsIm9uIiwicmVmcmVzaFRhYmxlIiwiYXBpQ2FsbCIsImFqYXgiLCJkZWxheSIsImRhdGEiLCJwYXJhbXMiLCJxdWVyeSIsIml0ZW1zUGVyUGFnZSIsInBhZ2UiLCJuYW1lIiwidGVybSIsInByb2Nlc3NSZXN1bHRzIiwicmVzdWx0cyIsIm1hcCIsIml0ZW0iLCJpZCIsImFjcm9ueW0iLCJwYWdpbmF0aW9uIiwibW9yZSIsInVuZGVmaW5lZCIsImFwaVBhcnRpIiwidXJsIiwicGxhY2Vob2xkZXIiLCJodG1sIiwiYXBpUmVnaW9uIiwiYXBpUHJvdmluY2UiLCJhcGlBcnJvbmRpc3NlbWVudCIsImFwaUNhbnRvbiIsImFwaUNvbW11bmUiLCJhcGlFbGVjdGlvbiIsImJvb3RzdHJhcFRhYmxlIiwid2luZG93IiwicXVlcnlQYXJhbXMiLCJjb25zb2xlIiwibG9nIiwiYWpheFJlcXVlc3QiLCJwYXJhbWV0ZXJzIiwibGltaXQiLCJvZmZzZXQiLCJzb3J0Iiwib3JkZXIiLCJ2YWwiLCJsZW5ndGgiLCJnZXQiLCJwYXJhbSIsInRoZW4iLCJyZXMiLCJyZXN1bHQiLCJ0b3RhbCIsInN1Y2Nlc3MiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/public/build/trumbowyg-style.0c4698fd.css b/public/build/trumbowyg-style.0c4698fd.css new file mode 100644 index 00000000..b49d18a3 --- /dev/null +++ b/public/build/trumbowyg-style.0c4698fd.css @@ -0,0 +1 @@ +table{border-collapse:collapse;margin-bottom:1.5em}table td,table th{border:1px solid #e7eaec;height:calc(8px + 1.5em);min-width:16px;padding:4px 8px} \ No newline at end of file diff --git a/public/build/trumbowyg-style.bb54538b.js b/public/build/trumbowyg-style.bb54538b.js new file mode 100644 index 00000000..a4f0db60 --- /dev/null +++ b/public/build/trumbowyg-style.bb54538b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunk=self.webpackChunk||[]).push([[227],{3411:()=>{}},s=>{var e;e=3411,s(s.s=e)}]); \ No newline at end of file diff --git a/public/build/trumbowyg.2aa8b209.js b/public/build/trumbowyg.2aa8b209.js new file mode 100644 index 00000000..a4c364c0 --- /dev/null +++ b/public/build/trumbowyg.2aa8b209.js @@ -0,0 +1,2 @@ +/*! For license information please see trumbowyg.2aa8b209.js.LICENSE.txt */ +(self.webpackChunk=self.webpackChunk||[]).push([[763],{8134:(e,t,n)=>{"use strict";n(4916),n(4723),n(6649),n(6078),n(2526),n(1817),n(1539),n(1703),n(6647),n(9653),n(9070),n(7941),n(7327),n(5003),n(7658),n(9554),n(4747),n(9337),n(3321),n(2165),n(6992),n(8783),n(3948),n(4753),n(1638),n(9565);const a=n.p+"images/icons.1fc6296b.svg";n(4054);var o=n(9755);function r(e){return r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},r(e)}function l(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function i(e){for(var t=1;t{"use strict";var a=n(8710).charAt;e.exports=function(e,t,n){return t+(n?a(e,t).length:1)}},8709:(e,t,n)=>{"use strict";var a=n(9670),o=n(2140),r=TypeError;e.exports=function(e){if(a(this),"string"===e||"default"===e)e="string";else if("number"!==e)throw r("Incorrect hint");return o(this,e)}},7007:(e,t,n)=>{"use strict";n(4916);var a=n(1470),o=n(8052),r=n(2261),l=n(7293),i=n(5112),s=n(8880),d=i("species"),c=RegExp.prototype;e.exports=function(e,t,n,u){var f=i(e),b=!l((function(){var t={};return t[f]=function(){return 7},7!=""[e](t)})),g=b&&!l((function(){var t=!1,n=/a/;return"split"===e&&((n={}).constructor={},n.constructor[d]=function(){return n},n.flags="",n[f]=/./[f]),n.exec=function(){return t=!0,null},n[f](""),!t}));if(!b||!g||n){var p=a(/./[f]),h=t(f,""[e],(function(e,t,n,o,l){var i=a(e),s=t.exec;return s===r||s===c.exec?b&&!l?{done:!0,value:p(t,n,o)}:{done:!0,value:i(n,t,o)}:{done:!1}}));o(String.prototype,e,h[0]),o(c,f,h[1])}u&&s(c[f],"sham",!0)}},7651:(e,t,n)=>{var a=n(6916),o=n(9670),r=n(614),l=n(4326),i=n(2261),s=TypeError;e.exports=function(e,t){var n=e.exec;if(r(n)){var d=a(n,e,t);return null!==d&&o(d),d}if("RegExp"===l(e))return a(i,e,t);throw s("RegExp#exec called on incompatible receiver")}},2261:(e,t,n)=>{"use strict";var a,o,r=n(6916),l=n(1702),i=n(1340),s=n(7066),d=n(2999),c=n(2309),u=n(30),f=n(9909).get,b=n(9441),g=n(7168),p=c("native-string-replace",String.prototype.replace),h=RegExp.prototype.exec,m=h,v=l("".charAt),w=l("".indexOf),x=l("".replace),C=l("".slice),y=(o=/b*/g,r(h,a=/a/,"a"),r(h,o,"a"),0!==a.lastIndex||0!==o.lastIndex),A=d.BROKEN_CARET,k=void 0!==/()??/.exec("")[1];(y||k||A||b||g)&&(m=function(e){var t,n,a,o,l,d,c,b=this,g=f(b),T=i(e),$=g.raw;if($)return $.lastIndex=b.lastIndex,t=r(m,$,T),b.lastIndex=$.lastIndex,t;var R=g.groups,I=A&&b.sticky,D=r(s,b),B=b.source,S=0,E=T;if(I&&(D=x(D,"y",""),-1===w(D,"g")&&(D+="g"),E=C(T,b.lastIndex),b.lastIndex>0&&(!b.multiline||b.multiline&&"\n"!==v(T,b.lastIndex-1))&&(B="(?: "+B+")",E=" "+E,S++),n=new RegExp("^(?:"+B+")",D)),k&&(n=new RegExp("^"+B+"$(?!\\s)",D)),y&&(a=b.lastIndex),o=r(h,I?n:b,E),I?o?(o.input=C(o.input,S),o[0]=C(o[0],S),o.index=b.lastIndex,b.lastIndex+=o[0].length):b.lastIndex=0:y&&o&&(b.lastIndex=b.global?o.index+o[0].length:a),k&&o&&o.length>1&&r(p,o[0],n,(function(){for(l=1;l{"use strict";var a=n(9670);e.exports=function(){var e=a(this),t="";return e.hasIndices&&(t+="d"),e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.dotAll&&(t+="s"),e.unicode&&(t+="u"),e.unicodeSets&&(t+="v"),e.sticky&&(t+="y"),t}},2999:(e,t,n)=>{var a=n(7293),o=n(7854).RegExp,r=a((function(){var e=o("a","y");return e.lastIndex=2,null!=e.exec("abcd")})),l=r||a((function(){return!o("a","y").sticky})),i=r||a((function(){var e=o("^r","gy");return e.lastIndex=2,null!=e.exec("str")}));e.exports={BROKEN_CARET:i,MISSED_STICKY:l,UNSUPPORTED_Y:r}},9441:(e,t,n)=>{var a=n(7293),o=n(7854).RegExp;e.exports=a((function(){var e=o(".","s");return!(e.dotAll&&e.exec("\n")&&"s"===e.flags)}))},7168:(e,t,n)=>{var a=n(7293),o=n(7854).RegExp;e.exports=a((function(){var e=o("(?b)","g");return"b"!==e.exec("b").groups.a||"bc"!=="b".replace(e,"$c")}))},3111:(e,t,n)=>{var a=n(1702),o=n(4488),r=n(1340),l=n(1361),i=a("".replace),s="["+l+"]",d=RegExp("^"+s+s+"*"),c=RegExp(s+s+"*$"),u=function(e){return function(t){var n=r(o(t));return 1&e&&(n=i(n,d,"")),2&e&&(n=i(n,c,"")),n}};e.exports={start:u(1),end:u(2),trim:u(3)}},863:(e,t,n)=>{var a=n(1702);e.exports=a(1..valueOf)},1361:e=>{e.exports="\t\n\v\f\r                 \u2028\u2029\ufeff"},7327:(e,t,n)=>{"use strict";var a=n(2109),o=n(2092).filter;a({target:"Array",proto:!0,forced:!n(1194)("filter")},{filter:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}})},6078:(e,t,n)=>{var a=n(2597),o=n(8052),r=n(8709),l=n(5112)("toPrimitive"),i=Date.prototype;a(i,l)||o(i,l,r)},9653:(e,t,n)=>{"use strict";var a=n(9781),o=n(7854),r=n(1702),l=n(4705),i=n(8052),s=n(2597),d=n(9587),c=n(7976),u=n(2190),f=n(7593),b=n(7293),g=n(8006).f,p=n(1236).f,h=n(3070).f,m=n(863),v=n(3111).trim,w="Number",x=o[w],C=x.prototype,y=o.TypeError,A=r("".slice),k=r("".charCodeAt),T=function(e){var t=f(e,"number");return"bigint"==typeof t?t:$(t)},$=function(e){var t,n,a,o,r,l,i,s,d=f(e,"number");if(u(d))throw y("Cannot convert a Symbol value to a number");if("string"==typeof d&&d.length>2)if(d=v(d),43===(t=k(d,0))||45===t){if(88===(n=k(d,2))||120===n)return NaN}else if(48===t){switch(k(d,1)){case 66:case 98:a=2,o=49;break;case 79:case 111:a=8,o=55;break;default:return+d}for(l=(r=A(d,2)).length,i=0;io)return NaN;return parseInt(r,a)}return+d};if(l(w,!x(" 0o1")||!x("0b1")||x("+0x1"))){for(var R,I=function(e){var t=arguments.length<1?0:x(T(e)),n=this;return c(C,n)&&b((function(){m(n)}))?d(Object(t),n,I):t},D=a?g(x):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),B=0;D.length>B;B++)s(x,R=D[B])&&!s(I,R)&&h(I,R,p(x,R));I.prototype=C,C.constructor=I,i(o,w,I,{constructor:!0})}},3321:(e,t,n)=>{var a=n(2109),o=n(9781),r=n(6048).f;a({target:"Object",stat:!0,forced:Object.defineProperties!==r,sham:!o},{defineProperties:r})},5003:(e,t,n)=>{var a=n(2109),o=n(7293),r=n(5656),l=n(1236).f,i=n(9781),s=o((function(){l(1)}));a({target:"Object",stat:!0,forced:!i||s,sham:!i},{getOwnPropertyDescriptor:function(e,t){return l(r(e),t)}})},9337:(e,t,n)=>{var a=n(2109),o=n(9781),r=n(3887),l=n(5656),i=n(1236),s=n(6135);a({target:"Object",stat:!0,sham:!o},{getOwnPropertyDescriptors:function(e){for(var t,n,a=l(e),o=i.f,d=r(a),c={},u=0;d.length>u;)void 0!==(n=o(a,t=d[u++]))&&s(c,t,n);return c}})},7941:(e,t,n)=>{var a=n(2109),o=n(7908),r=n(1956);a({target:"Object",stat:!0,forced:n(7293)((function(){r(1)}))},{keys:function(e){return r(o(e))}})},4916:(e,t,n)=>{"use strict";var a=n(2109),o=n(2261);a({target:"RegExp",proto:!0,forced:/./.exec!==o},{exec:o})},4723:(e,t,n)=>{"use strict";var a=n(6916),o=n(7007),r=n(9670),l=n(8554),i=n(7466),s=n(1340),d=n(4488),c=n(8173),u=n(1530),f=n(7651);o("match",(function(e,t,n){return[function(t){var n=d(this),o=l(t)?void 0:c(t,e);return o?a(o,t,n):new RegExp(t)[e](s(n))},function(e){var a=r(this),o=s(e),l=n(t,a,o);if(l.done)return l.value;if(!a.global)return f(a,o);var d=a.unicode;a.lastIndex=0;for(var c,b=[],g=0;null!==(c=f(a,o));){var p=s(c[0]);b[g]=p,""===p&&(a.lastIndex=u(o,i(a.lastIndex),d)),g++}return 0===g?null:b}]}))},6649:(e,t,n)=>{var a=n(6800),o=n(6532);a("toPrimitive"),o()},1638:(e,t,n)=>{n(9755).trumbowyg.langs.fr={viewHTML:"Voir le HTML",undo:"Annuler",redo:"Refaire",formatting:"Format",p:"Paragraphe",blockquote:"Citation",code:"Code",header:"Titre",bold:"Gras",italic:"Italique",strikethrough:"Barré",underline:"Souligné",strong:"Fort",em:"Emphase",del:"Supprimé",superscript:"Exposant",subscript:"Indice",unorderedList:"Liste à puces",orderedList:"Liste ordonnée",insertImage:"Insérer une image",insertVideo:"Insérer une video",link:"Lien",createLink:"Insérer un lien",unlink:"Supprimer le lien",_self:"Même onglet (par défaut)",_blank:"Nouvel onglet",justifyLeft:"Aligner à gauche",justifyCenter:"Centrer",justifyRight:"Aligner à droite",justifyFull:"Justifier",horizontalRule:"Insérer un séparateur horizontal",removeformat:"Supprimer formatage",fullscreen:"Plein écran",close:"Fermer",submit:"Valider",reset:"Annuler",required:"Obligatoire",description:"Description",title:"Titre",text:"Texte",target:"Cible"}},9565:(e,t,n)=>{n(9755).trumbowyg.langs.nl={viewHTML:"HTML bekijken",undo:"Ongedaan maken",redo:"Opnieuw",formatting:"Opmaak",p:"Paragraaf",blockquote:"Citaat",code:"Code",header:"Kop",bold:"Vet",italic:"Cursief",strikethrough:"Doorhalen",underline:"Onderlijnen",strong:"Sterk",em:"Nadruk",del:"Verwijderd",unorderedList:"Ongenummerde lijst",orderedList:"Genummerde lijst",insertImage:"Afbeelding invoegen",insertVideo:"Video invoegen",link:"Link",createLink:"Link maken",unlink:"Link verwijderen",justifyLeft:"Links uitlijnen",justifyCenter:"Centreren",justifyRight:"Rechts uitlijnen",justifyFull:"Uitvullen",horizontalRule:"Horizontale lijn",removeFormat:"Opmaak verwijderen",fullscreen:"Volledig scherm",close:"Sluiten",submit:"Opslaan",reset:"Annuleren",required:"Verplicht",description:"Omschrijving",title:"Titel",text:"Tekst",target:"Doel",width:"Breedte"}},4054:(e,t,n)=>{!function(e){"use strict";function t(e,t){var n,a;return function(){var o=this,r=(new Date).getTime(),l=arguments;if(n&&r",a);if(0===o.$box.find("."+n+"-"+t).length?o.$box.append(l.hide()):l=o.$box.find("."+n+"-"+t),l.html(""),o.$box.find("."+o.o.prefix+"table-button").hasClass(o.o.prefix+"active-button")){var s=e(o.doc.getSelection().anchorNode).closest("table",o.$ed[0]),d=u(s),f=void 0!==r;e(o.o.plugins.table.dropdown).each((function(t,n){l.append(e("
",{html:o.lang[n.title]?o.lang[n.title]:n.title,class:o.o.prefix+"table-dropdown-title"})).text();var a=e("
",{class:o.o.prefix+"dropdown-button-group"});e(n.buttons).each((function(t,n){if(("tableAddHeaderRow"!==n||0===e("thead",s).length)&&("tableMergeCells"!==n||f)){if("tableUnmergeCells"===n){var r=!1;if(O((function(e){var t=e.is("[colspan]")||e.is("[rowspan]");r=r||t}),d),!r)return}a.append(o.buildSubBtn(n))}})),l.append(a)}))}else{var b=e("");e("").appendTo(b);for(var g=0;g").appendTo(b),h=0;h").appendTo(p);b.find("td").on("mouseover",i),b.find("td").on("mousedown",c),l.append(b),l.append(e('
1x1
'))}o.dropdown(t)},class:o.o.prefix+"open-dropdown"},i=function(t){var n=e(t.target).closest("table",o.$ed[0]),a=this.cellIndex,r=this.parentNode.rowIndex;n.find("td").removeClass("active");for(var l=0;l<=r;l+=1)for(var i=0;i<=a;i+=1)n.find("tr:nth-of-type("+(l+1)+")").find("td:nth-of-type("+(i+1)+")").addClass("active");n.next(".trumbowyg-table-size").html(a+1+"x"+(r+1))},s=function(t){var n=o.o.tagClasses[t.tagName.toLowerCase()];n&&e(t).addClass(n)},d=function(t){s(t[0]),e("*",t).each((function(e,t){s(t)}))},c=function(){o.saveRange();var t=e("
"),n=e(""),a=e("");a.appendTo(n);for(var r=0;r<=this.cellIndex;r+=1)e(""),i=this.cellIndex,s=this.parentNode.rowIndex,c=0;c<=s;c+=1)for(var u=e("").appendTo(l),f=0;f<=i;f+=1)e(""),i=e("").appendTo(l),s=0;s").appendTo(i);t.prepend(l),d(t),M()}))},m=function(t=!1){return f((function(n,a,r,l){var i=l[e("tr",n).index(a)],s=e(r).closest("td, th"),c=R(s[0],i);if(t)c=Math.max(0,c-1);else{var u=s.attr("colspan");c+=parseInt(u||1,10)-1}for(var f=l.length,b=t&&0===c,g=0;g1){var d=A(o,[i,l]);d.element.setAttribute("colspan",d.colspan-1)}else s.element.remove()}k(),F()}))},A=function(e,t,n=!0){if(void 0!==t){var a=e[t[0]][t[1]];return n&&void 0!==a.mergedIn&&(a=e[a.mergedIn[0]][a.mergedIn[1]]),a}},k=function(t){var n=u(t),a=e("tr",t);e(n).each((function(t,o){o.every((function(e){return void 0!==e.mergedIn}))&&(e(n[t-1]).each((function(e,t){void 0!==t.mergedIn&&(t=A(n,t.mergedIn)),t.rowspan-=1,t.rowspan<=1?t.element.removeAttribute("rowspan"):t.element.setAttribute("rowspan",t.rowspan)})),a[t].remove())})),e('[class=""]',t).removeAttr("class"),e('[style=""]',t).removeAttr("style")},T={title:o.lang.tableMergeCells,text:o.lang.tableMergeCells,ico:"table-merge",fn:f((function(t,n,a,o){if(function(t){if(0===r.length)return!1;var n=r[0],a=A(t,n).tag;if(!r.every((function(e){return A(t,e).tag===a})))return!1;var o=[],l=[];if(e(r).each((function(e,n){for(var a=n[0],r=n[1],i=t[a][r],s=a+i.rowspan;a1&&s.attr("rowspan",b),g>1&&s.attr("colspan",g),k(t),M()}}}))},$={title:o.lang.tableUnmergeCells,text:o.lang.tableUnmergeCells,ico:"table-unmerge",fn:f((function(t,n,a,r){O((function(n){n.removeAttr("colspan").removeAttr("rowspan");for(var a=e("tr",t).index(n.closest("tr")),l=R(n[0],r[a]),i=r[a][l],s=0;s1){var i=t.getRangeAt(0),s=t.getRangeAt(n-1);a=i.startContainer.childNodes[i.startOffset],l=s.startContainer.childNodes[s.startOffset]}var d=e(a).closest("td, th"),c=e(l).closest("td, th"),f=d.closest("table"),b=c.closest("table");if(e('[class="'+B+'"]',o.$ed).removeAttr("class"),e("."+B,o.$ed).removeClass(B),0===f.length&&0===b.length||f[0]!==b[0]||d[0]===c[0])e("."+D,o.$ed).removeClass(D);else{f.addClass(D);var g=u(f),p=e("tr",f),h=d.closest("tr"),m=p.index(h),v=c.closest("tr"),w=p.index(v),x=R(d[0],g[m]),C=R(c[0],g[w]),y=Math.min(m,w),A=Math.max(m,w),k=Math.min(x,C),T=Math.max(x,C),$=[];p.each((function(t,n){tA||e("td, th",n).each((function(n,a){var o=R(a,g[t]);oT||($.push([t,o]),e(a).addClass(B))}))})),r=$}}))}));var S,E,L,O=function(t,n){if(void 0!==r)e(r).each((function(a,o){var r=A(n,o,!1);void 0===r.mergedIn&&t(e(r.element))}));else{var a=e(o.doc.getSelection().anchorNode).closest("td, th");if(0===a.length)return;t(a)}},P="trumbowyg-table-handle-for",M=t((function(){if(o.o.plugins.table.allowHorizontalResize){var t=e("."+o.o.prefix+"table-resize-layers",o.$edBox),n=t.length>0;n||(t=e("
",{class:o.o.prefix+"table-resize-layers"}).appendTo(o.$edBox)),e("."+o.o.prefix+"table-resize-vertical-handle",t).each((function(t,n){e(n).off().remove()})),e("td, th",o.$ed).each((function(n,a){e("
",{class:o.o.prefix+"table-resize-vertical-handle"}).prop(P,a).on("mousedown.tbwTable",(function(t){t.preventDefault(),t.stopPropagation();var n=e(t.target).prop(P);S=e(n).closest("table"),E=u(S);var a=e("tr",S),o=e(n).closest("tr"),r=a.index(o),l=E[r],i=R(n,l),s=E[r][i];void 0!==s.mergedIn&&(s=E[s.mergedIn[0]][s.mergedIn[1]]),L=i+s.colspan-1,N(S,E),z(S,E),F(),S.css({maxWidth:""})})).appendTo(t)})),F(),n||(e(o.doc).on("mousemove.tbwTable",(function(t){if(void 0!==L){t.preventDefault(),t.stopPropagation();var n=S[0].getBoundingClientRect(),a=t.pageX-n.left-(j(E,L).element.getBoundingClientRect().left-n.left),o=e("col",S)[L];e(o).css({width:a}),F()}})).on("mouseup.tbwTable",(function(e){void 0!==L&&(e.preventDefault(),e.stopPropagation(),N(S,E),V(S,E),S=void 0,E=void 0,L=void 0,o.syncCode(),F())})),e(window).on("resize.tbwTable",(function(){F()})))}}),100),N=function(t,n){var a=e("colgroup",t);0===a.length&&(a=e("
").prependTo(t));for(var o=n[0].length,r=e("col",a).length;r").appendTo(a)},j=function(e,t){var n,a=0;do{n=e[a][t],a+=1}while(void 0===n.element||1!==n.colspan);return n},H=function(t,n,a=!1){var o=e("colgroup",t),r=e("col",o),l=Math.ceil(t[0].getBoundingClientRect().width);t.css({maxWidth:l});for(var i=n[0].length,s=[],d=0;d=0?n.push("tableBorderColor"+l):n.push("freeTableBorderColor")}}if(!e.style)return n;var i=e.style.verticalAlign;""!==i&&n.push("tableVerticalAlign"+a(i));var s=e.style.backgroundColor;if(("TH"===e.tagName||"TD"===e.tagName)&&""!==s){var d=r(s);t.o.plugins.table.colorList.indexOf(d)>=0?n.push("tableCellBackgroundColor"+d):n.push("freeTableCellBackgroundColor")}return n}}}})}(n(9755))},4753:(e,t,n)=>{var a=n(9755);a.trumbowyg={langs:{en:{viewHTML:"View HTML",undo:"Undo",redo:"Redo",formatting:"Formatting",p:"Paragraph",blockquote:"Quote",code:"Code",header:"Header",bold:"Bold",italic:"Italic",strikethrough:"Strikethrough",underline:"Underline",strong:"Strong",em:"Emphasis",del:"Deleted",superscript:"Superscript",subscript:"Subscript",unorderedList:"Unordered list",orderedList:"Ordered list",insertImage:"Insert Image",link:"Link",createLink:"Insert link",unlink:"Remove link",_self:"Same tab (default)",_blank:"New tab",justifyLeft:"Align Left",justifyCenter:"Align Center",justifyRight:"Align Right",justifyFull:"Align Justify",horizontalRule:"Insert horizontal rule",removeformat:"Remove format",fullscreen:"Fullscreen",close:"Close",submit:"Confirm",reset:"Cancel",required:"Required",description:"Description",title:"Title",text:"Text",target:"Target",width:"Width"}},plugins:{},svgPath:null,svgAbsoluteUseHref:!1,hideButtonTexts:null},Object.defineProperty(a.trumbowyg,"defaultOptions",{value:{lang:"en",fixedBtnPane:!1,fixedFullWidth:!1,autogrow:!1,autogrowOnEnter:!1,imageWidthModalEdit:!1,hideButtonTexts:null,prefix:"trumbowyg-",tagClasses:{},semantic:!0,semanticKeepAttributes:!1,resetCss:!1,removeformatPasted:!1,tabToIndent:!1,tagsToRemove:[],tagsToKeep:["hr","img","embed","iframe","input"],btns:[["viewHTML"],["undo","redo"],["formatting"],["strong","em","del"],["superscript","subscript"],["link"],["insertImage"],["justifyLeft","justifyCenter","justifyRight","justifyFull"],["unorderedList","orderedList"],["horizontalRule"],["removeformat"],["fullscreen"]],btnsDef:{},changeActiveDropdownIcon:!1,inlineElementsSelector:"a,abbr,acronym,b,caption,cite,code,col,dfn,dir,dt,dd,em,font,hr,i,kbd,li,q,span,strikeout,strong,sub,sup,u",pasteHandlers:[],plugins:{},urlProtocol:!1,minimalLinks:!1,linkTargets:["_self","_blank"],svgPath:null},writable:!1,enumerable:!0,configurable:!1}),function(e,t,n,a){"use strict";var o="tbwconfirm",r="tbwcancel";a.fn.trumbowyg=function(e,t){var n="trumbowyg";if(e===Object(e)||!e)return this.each((function(){a(this).data(n)||a(this).data(n,new l(this,e))}));if(1===this.length)try{var o=a(this).data(n);switch(e){case"execCmd":return o.execCmd(t.cmd,t.param,t.forceCss,t.skipTrumbowyg);case"openModal":return o.openModal(t.title,t.content);case"closeModal":return o.closeModal();case"openModalInsert":return o.openModalInsert(t.title,t.fields,t.callback);case"saveRange":return o.saveRange();case"getRange":return o.range;case"getRangeText":return o.getRangeText();case"restoreRange":return o.restoreRange();case"enable":return o.setDisabled(!1);case"disable":return o.setDisabled(!0);case"toggle":return o.toggle();case"destroy":return o.destroy();case"empty":return o.empty();case"html":return o.html(t)}}catch(e){}return!1};var l=function(o,r){var l=this,i="trumbowyg-icons",s=a.trumbowyg;l.doc=o.ownerDocument||n,l.$ta=a(o),l.$c=a(o),null!=(r=r||{}).lang||null!=s.langs[r.lang]?l.lang=a.extend(!0,{},s.langs.en,s.langs[r.lang]):l.lang=s.langs.en,l.hideButtonTexts=null!=s.hideButtonTexts?s.hideButtonTexts:r.hideButtonTexts;var d=null!=s.svgPath?s.svgPath:r.svgPath;if(l.hasSvg=!1!==d,!1!==d&&(s.svgAbsoluteUseHref||0===a("#"+i,l.doc).length)){if(null==d)a("script[src]").each((function(e,t){var n=t.src,a=n.match("trumbowyg(.min)?.js");null!=a&&(d=n.substring(0,n.indexOf(a[0]))+"ui/icons.svg")}));if(null==d)console.warn("You must define svgPath: https://goo.gl/CfTY9U");else if(!s.svgAbsoluteUseHref){var c=l.doc.createElement("div");c.style.width="0",c.style.height="0",c.style.overflow="hidden",c.style.visibility="hidden",c.id=i,l.doc.body.insertBefore(c,l.doc.body.childNodes[0]),fetch(d,{method:"GET",headers:{"Content-Type":"application/x-www-form-urlencoded; charset=UTF-8"}}).then((e=>{e.text().then((e=>{c.innerHTML=e}))}))}}var u=l.doc.querySelector("base")?t.location.href.replace(t.location.hash,""):"";l.svgPath=s.svgAbsoluteUseHref?d:u;var f=l.lang.header,b=function(){return(t.chrome||t.Intl&&Intl.v8BreakIterator)&&"CSS"in t};l.btnsDef={viewHTML:{fn:"toggle",class:"trumbowyg-not-disable"},undo:{isSupported:b,key:"Z"},redo:{isSupported:b,key:"Y"},p:{fn:"formatBlock"},blockquote:{fn:"formatBlock"},h1:{fn:"formatBlock",title:f+" 1"},h2:{fn:"formatBlock",title:f+" 2"},h3:{fn:"formatBlock",title:f+" 3"},h4:{fn:"formatBlock",title:f+" 4"},h5:{fn:"formatBlock",title:f+" 5"},h6:{fn:"formatBlock",title:f+" 6"},subscript:{tag:"sub"},superscript:{tag:"sup"},bold:{key:"B",tag:"b"},italic:{key:"I",tag:"i"},underline:{tag:"u"},strikethrough:{tag:"strike"},strong:{fn:"bold",key:"B"},em:{fn:"italic",key:"I"},del:{fn:"strikethrough"},createLink:{key:"K",tag:"a"},unlink:{},insertImage:{},justifyLeft:{tag:"left",forceCss:!0},justifyCenter:{tag:"center",forceCss:!0},justifyRight:{tag:"right",forceCss:!0},justifyFull:{tag:"justify",forceCss:!0},unorderedList:{fn:"insertUnorderedList",tag:"ul"},orderedList:{fn:"insertOrderedList",tag:"ol"},horizontalRule:{fn:"insertHorizontalRule"},removeformat:{},fullscreen:{class:"trumbowyg-not-disable"},close:{fn:"destroy",class:"trumbowyg-not-disable"},formatting:{dropdown:["p","blockquote","h1","h2","h3","h4"],ico:"p"},link:{dropdown:["createLink","unlink"]}},l.o=a.extend(!0,{},s.defaultOptions,r),l.o.hasOwnProperty("imgDblClickHandler")||(l.o.imgDblClickHandler=l.getDefaultImgDblClickHandler()),l.urlPrefix=l.setupUrlPrefix(),l.disabled=l.o.disabled||"TEXTAREA"===o.nodeName&&o.disabled,r.btns?l.o.btns=r.btns:l.o.semantic||(l.o.btns[3]=["bold","italic","underline","strikethrough"]),a.each(l.o.btnsDef,(function(e,t){l.addBtnDef(e,t)})),l.eventNamespace="trumbowyg-event",l.keys=[],l.tagToButton={},l.tagHandlers=[],l.pasteHandlers=[].concat(l.o.pasteHandlers),l.isIE=-1!==e.userAgent.indexOf("MSIE")||-1!==e.appVersion.indexOf("Trident/"),l.isMac=-1!==e.platform.toUpperCase().indexOf("MAC"),l.init()};l.prototype={DEFAULT_SEMANTIC_MAP:{b:"strong",i:"em",s:"del",strike:"del",div:"p"},init:function(){var e=this;e.height=e.$ta.outerHeight()-39,e.initPlugins();try{e.doc.execCommand("enableObjectResizing",!1,!1),e.doc.execCommand("defaultParagraphSeparator",!1,"p")}catch(e){}e.buildEditor(),e.buildBtnPane(),e.fixedBtnPaneEvents(),e.buildOverlay(),setTimeout((function(){e.disabled&&e.setDisabled(!0),e.$c.trigger("tbwinit")}))},addBtnDef:function(e,t){this.btnsDef[e]=a.extend(t,this.btnsDef[e]||{})},setupUrlPrefix:function(){var e=this.o.urlProtocol;if(e)return"string"!=typeof e?"https://":e.replace("://","")+"://"},buildEditor:function(){var e=this,n=e.o.prefix,o="";e.$box=a("
",{class:n+"box "+n+"editor-visible "+n+e.o.lang+" trumbowyg"}),e.$edBox=a("
",{class:n+"editor-box"}),e.isTextarea=e.$ta.is("textarea"),e.isTextarea?(o=e.$ta.val(),e.$ed=a("
").appendTo(e.$edBox),e.$box.insertAfter(e.$ta).append(e.$edBox,e.$ta)):(e.$ed=e.$ta,o=e.$ed.html(),e.$ta=a("' + - '' - ); - - this.$searchContainer = $search; - this.$search = $search.find('textarea'); - - this.$search.prop('autocomplete', this.options.get('autocomplete')); - this.$search.attr('aria-label', searchLabel()); - - var $rendered = decorated.call(this); - - this._transferTabIndex(); - $rendered.append(this.$searchContainer); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - var resultsId = container.id + '-results'; - var selectionId = container.id + '-container'; - - decorated.call(this, container, $container); - - self.$search.attr('aria-describedby', selectionId); - - container.on('open', function () { - self.$search.attr('aria-controls', resultsId); - self.$search.trigger('focus'); - }); - - container.on('close', function () { - self.$search.val(''); - self.resizeSearch(); - self.$search.removeAttr('aria-controls'); - self.$search.removeAttr('aria-activedescendant'); - self.$search.trigger('focus'); - }); - - container.on('enable', function () { - self.$search.prop('disabled', false); - - self._transferTabIndex(); - }); - - container.on('disable', function () { - self.$search.prop('disabled', true); - }); - - container.on('focus', function (evt) { - self.$search.trigger('focus'); - }); - - container.on('results:focus', function (params) { - if (params.data._resultId) { - self.$search.attr('aria-activedescendant', params.data._resultId); - } else { - self.$search.removeAttr('aria-activedescendant'); - } - }); - - this.$selection.on('focusin', '.select2-search--inline', function (evt) { - self.trigger('focus', evt); - }); - - this.$selection.on('focusout', '.select2-search--inline', function (evt) { - self._handleBlur(evt); - }); - - this.$selection.on('keydown', '.select2-search--inline', function (evt) { - evt.stopPropagation(); - - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - - var key = evt.which; - - if (key === KEYS.BACKSPACE && self.$search.val() === '') { - var $previousChoice = self.$selection - .find('.select2-selection__choice').last(); - - if ($previousChoice.length > 0) { - var item = Utils.GetData($previousChoice[0], 'data'); - - self.searchRemoveChoice(item); - - evt.preventDefault(); - } - } - }); - - this.$selection.on('click', '.select2-search--inline', function (evt) { - if (self.$search.val()) { - evt.stopPropagation(); - } - }); - - // Try to detect the IE version should the `documentMode` property that - // is stored on the document. This is only implemented in IE and is - // slightly cleaner than doing a user agent check. - // This property is not available in Edge, but Edge also doesn't have - // this bug. - var msie = document.documentMode; - var disableInputEvents = msie && msie <= 11; - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$selection.on( - 'input.searchcheck', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents) { - self.$selection.off('input.search input.searchcheck'); - return; - } - - // Unbind the duplicated `keyup` event - self.$selection.off('keyup.search'); - } - ); - - this.$selection.on( - 'keyup.search input.search', - '.select2-search--inline', - function (evt) { - // IE will trigger the `input` event when a placeholder is used on a - // search box. To get around this issue, we are forced to ignore all - // `input` events in IE and keep using `keyup`. - if (disableInputEvents && evt.type === 'input') { - self.$selection.off('input.search input.searchcheck'); - return; - } - - var key = evt.which; - - // We can freely ignore events from modifier keys - if (key == KEYS.SHIFT || key == KEYS.CTRL || key == KEYS.ALT) { - return; - } - - // Tabbing will be handled during the `keydown` phase - if (key == KEYS.TAB) { - return; - } - - self.handleSearch(evt); - } - ); - }; - - /** - * This method will transfer the tabindex attribute from the rendered - * selection to the search box. This allows for the search box to be used as - * the primary focus instead of the selection container. - * - * @private - */ - Search.prototype._transferTabIndex = function (decorated) { - this.$search.attr('tabindex', this.$selection.attr('tabindex')); - this.$selection.attr('tabindex', '-1'); - }; - - Search.prototype.createPlaceholder = function (decorated, placeholder) { - this.$search.attr('placeholder', placeholder.text); - }; - - Search.prototype.update = function (decorated, data) { - var searchHadFocus = this.$search[0] == document.activeElement; - - this.$search.attr('placeholder', ''); - - decorated.call(this, data); - - this.resizeSearch(); - if (searchHadFocus) { - this.$search.trigger('focus'); - } - }; - - Search.prototype.handleSearch = function () { - this.resizeSearch(); - - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.searchRemoveChoice = function (decorated, item) { - this.trigger('unselect', { - data: item - }); - - this.$search.val(item.text); - this.handleSearch(); - }; - - Search.prototype.resizeSearch = function () { - this.$search.css('width', '25px'); - - var width = '100%'; - - if (this.$search.attr('placeholder') === '') { - var minimumWidth = this.$search.val().length + 1; - - width = (minimumWidth * 0.75) + 'em'; - } - - this.$search.css('width', width); - }; - - return Search; -}); - -S2.define('select2/selection/selectionCss',[ - '../utils' -], function (Utils) { - function SelectionCSS () { } - - SelectionCSS.prototype.render = function (decorated) { - var $selection = decorated.call(this); - - var selectionCssClass = this.options.get('selectionCssClass') || ''; - - if (selectionCssClass.indexOf(':all:') !== -1) { - selectionCssClass = selectionCssClass.replace(':all:', ''); - - Utils.copyNonInternalCssClasses($selection[0], this.$element[0]); - } - - $selection.addClass(selectionCssClass); - - return $selection; - }; - - return SelectionCSS; -}); - -S2.define('select2/selection/eventRelay',[ - 'jquery' -], function ($) { - function EventRelay () { } - - EventRelay.prototype.bind = function (decorated, container, $container) { - var self = this; - var relayEvents = [ - 'open', 'opening', - 'close', 'closing', - 'select', 'selecting', - 'unselect', 'unselecting', - 'clear', 'clearing' - ]; - - var preventableEvents = [ - 'opening', 'closing', 'selecting', 'unselecting', 'clearing' - ]; - - decorated.call(this, container, $container); - - container.on('*', function (name, params) { - // Ignore events that should not be relayed - if (relayEvents.indexOf(name) === -1) { - return; - } - - // The parameters should always be an object - params = params || {}; - - // Generate the jQuery event for the Select2 event - var evt = $.Event('select2:' + name, { - params: params - }); - - self.$element.trigger(evt); - - // Only handle preventable events if it was one - if (preventableEvents.indexOf(name) === -1) { - return; - } - - params.prevented = evt.isDefaultPrevented(); - }); - }; - - return EventRelay; -}); - -S2.define('select2/translation',[ - 'jquery', - 'require' -], function ($, require) { - function Translation (dict) { - this.dict = dict || {}; - } - - Translation.prototype.all = function () { - return this.dict; - }; - - Translation.prototype.get = function (key) { - return this.dict[key]; - }; - - Translation.prototype.extend = function (translation) { - this.dict = $.extend({}, translation.all(), this.dict); - }; - - // Static functions - - Translation._cache = {}; - - Translation.loadPath = function (path) { - if (!(path in Translation._cache)) { - var translations = require(path); - - Translation._cache[path] = translations; - } - - return new Translation(Translation._cache[path]); - }; - - return Translation; -}); - -S2.define('select2/diacritics',[ - -], function () { - var diacritics = { - '\u24B6': 'A', - '\uFF21': 'A', - '\u00C0': 'A', - '\u00C1': 'A', - '\u00C2': 'A', - '\u1EA6': 'A', - '\u1EA4': 'A', - '\u1EAA': 'A', - '\u1EA8': 'A', - '\u00C3': 'A', - '\u0100': 'A', - '\u0102': 'A', - '\u1EB0': 'A', - '\u1EAE': 'A', - '\u1EB4': 'A', - '\u1EB2': 'A', - '\u0226': 'A', - '\u01E0': 'A', - '\u00C4': 'A', - '\u01DE': 'A', - '\u1EA2': 'A', - '\u00C5': 'A', - '\u01FA': 'A', - '\u01CD': 'A', - '\u0200': 'A', - '\u0202': 'A', - '\u1EA0': 'A', - '\u1EAC': 'A', - '\u1EB6': 'A', - '\u1E00': 'A', - '\u0104': 'A', - '\u023A': 'A', - '\u2C6F': 'A', - '\uA732': 'AA', - '\u00C6': 'AE', - '\u01FC': 'AE', - '\u01E2': 'AE', - '\uA734': 'AO', - '\uA736': 'AU', - '\uA738': 'AV', - '\uA73A': 'AV', - '\uA73C': 'AY', - '\u24B7': 'B', - '\uFF22': 'B', - '\u1E02': 'B', - '\u1E04': 'B', - '\u1E06': 'B', - '\u0243': 'B', - '\u0182': 'B', - '\u0181': 'B', - '\u24B8': 'C', - '\uFF23': 'C', - '\u0106': 'C', - '\u0108': 'C', - '\u010A': 'C', - '\u010C': 'C', - '\u00C7': 'C', - '\u1E08': 'C', - '\u0187': 'C', - '\u023B': 'C', - '\uA73E': 'C', - '\u24B9': 'D', - '\uFF24': 'D', - '\u1E0A': 'D', - '\u010E': 'D', - '\u1E0C': 'D', - '\u1E10': 'D', - '\u1E12': 'D', - '\u1E0E': 'D', - '\u0110': 'D', - '\u018B': 'D', - '\u018A': 'D', - '\u0189': 'D', - '\uA779': 'D', - '\u01F1': 'DZ', - '\u01C4': 'DZ', - '\u01F2': 'Dz', - '\u01C5': 'Dz', - '\u24BA': 'E', - '\uFF25': 'E', - '\u00C8': 'E', - '\u00C9': 'E', - '\u00CA': 'E', - '\u1EC0': 'E', - '\u1EBE': 'E', - '\u1EC4': 'E', - '\u1EC2': 'E', - '\u1EBC': 'E', - '\u0112': 'E', - '\u1E14': 'E', - '\u1E16': 'E', - '\u0114': 'E', - '\u0116': 'E', - '\u00CB': 'E', - '\u1EBA': 'E', - '\u011A': 'E', - '\u0204': 'E', - '\u0206': 'E', - '\u1EB8': 'E', - '\u1EC6': 'E', - '\u0228': 'E', - '\u1E1C': 'E', - '\u0118': 'E', - '\u1E18': 'E', - '\u1E1A': 'E', - '\u0190': 'E', - '\u018E': 'E', - '\u24BB': 'F', - '\uFF26': 'F', - '\u1E1E': 'F', - '\u0191': 'F', - '\uA77B': 'F', - '\u24BC': 'G', - '\uFF27': 'G', - '\u01F4': 'G', - '\u011C': 'G', - '\u1E20': 'G', - '\u011E': 'G', - '\u0120': 'G', - '\u01E6': 'G', - '\u0122': 'G', - '\u01E4': 'G', - '\u0193': 'G', - '\uA7A0': 'G', - '\uA77D': 'G', - '\uA77E': 'G', - '\u24BD': 'H', - '\uFF28': 'H', - '\u0124': 'H', - '\u1E22': 'H', - '\u1E26': 'H', - '\u021E': 'H', - '\u1E24': 'H', - '\u1E28': 'H', - '\u1E2A': 'H', - '\u0126': 'H', - '\u2C67': 'H', - '\u2C75': 'H', - '\uA78D': 'H', - '\u24BE': 'I', - '\uFF29': 'I', - '\u00CC': 'I', - '\u00CD': 'I', - '\u00CE': 'I', - '\u0128': 'I', - '\u012A': 'I', - '\u012C': 'I', - '\u0130': 'I', - '\u00CF': 'I', - '\u1E2E': 'I', - '\u1EC8': 'I', - '\u01CF': 'I', - '\u0208': 'I', - '\u020A': 'I', - '\u1ECA': 'I', - '\u012E': 'I', - '\u1E2C': 'I', - '\u0197': 'I', - '\u24BF': 'J', - '\uFF2A': 'J', - '\u0134': 'J', - '\u0248': 'J', - '\u24C0': 'K', - '\uFF2B': 'K', - '\u1E30': 'K', - '\u01E8': 'K', - '\u1E32': 'K', - '\u0136': 'K', - '\u1E34': 'K', - '\u0198': 'K', - '\u2C69': 'K', - '\uA740': 'K', - '\uA742': 'K', - '\uA744': 'K', - '\uA7A2': 'K', - '\u24C1': 'L', - '\uFF2C': 'L', - '\u013F': 'L', - '\u0139': 'L', - '\u013D': 'L', - '\u1E36': 'L', - '\u1E38': 'L', - '\u013B': 'L', - '\u1E3C': 'L', - '\u1E3A': 'L', - '\u0141': 'L', - '\u023D': 'L', - '\u2C62': 'L', - '\u2C60': 'L', - '\uA748': 'L', - '\uA746': 'L', - '\uA780': 'L', - '\u01C7': 'LJ', - '\u01C8': 'Lj', - '\u24C2': 'M', - '\uFF2D': 'M', - '\u1E3E': 'M', - '\u1E40': 'M', - '\u1E42': 'M', - '\u2C6E': 'M', - '\u019C': 'M', - '\u24C3': 'N', - '\uFF2E': 'N', - '\u01F8': 'N', - '\u0143': 'N', - '\u00D1': 'N', - '\u1E44': 'N', - '\u0147': 'N', - '\u1E46': 'N', - '\u0145': 'N', - '\u1E4A': 'N', - '\u1E48': 'N', - '\u0220': 'N', - '\u019D': 'N', - '\uA790': 'N', - '\uA7A4': 'N', - '\u01CA': 'NJ', - '\u01CB': 'Nj', - '\u24C4': 'O', - '\uFF2F': 'O', - '\u00D2': 'O', - '\u00D3': 'O', - '\u00D4': 'O', - '\u1ED2': 'O', - '\u1ED0': 'O', - '\u1ED6': 'O', - '\u1ED4': 'O', - '\u00D5': 'O', - '\u1E4C': 'O', - '\u022C': 'O', - '\u1E4E': 'O', - '\u014C': 'O', - '\u1E50': 'O', - '\u1E52': 'O', - '\u014E': 'O', - '\u022E': 'O', - '\u0230': 'O', - '\u00D6': 'O', - '\u022A': 'O', - '\u1ECE': 'O', - '\u0150': 'O', - '\u01D1': 'O', - '\u020C': 'O', - '\u020E': 'O', - '\u01A0': 'O', - '\u1EDC': 'O', - '\u1EDA': 'O', - '\u1EE0': 'O', - '\u1EDE': 'O', - '\u1EE2': 'O', - '\u1ECC': 'O', - '\u1ED8': 'O', - '\u01EA': 'O', - '\u01EC': 'O', - '\u00D8': 'O', - '\u01FE': 'O', - '\u0186': 'O', - '\u019F': 'O', - '\uA74A': 'O', - '\uA74C': 'O', - '\u0152': 'OE', - '\u01A2': 'OI', - '\uA74E': 'OO', - '\u0222': 'OU', - '\u24C5': 'P', - '\uFF30': 'P', - '\u1E54': 'P', - '\u1E56': 'P', - '\u01A4': 'P', - '\u2C63': 'P', - '\uA750': 'P', - '\uA752': 'P', - '\uA754': 'P', - '\u24C6': 'Q', - '\uFF31': 'Q', - '\uA756': 'Q', - '\uA758': 'Q', - '\u024A': 'Q', - '\u24C7': 'R', - '\uFF32': 'R', - '\u0154': 'R', - '\u1E58': 'R', - '\u0158': 'R', - '\u0210': 'R', - '\u0212': 'R', - '\u1E5A': 'R', - '\u1E5C': 'R', - '\u0156': 'R', - '\u1E5E': 'R', - '\u024C': 'R', - '\u2C64': 'R', - '\uA75A': 'R', - '\uA7A6': 'R', - '\uA782': 'R', - '\u24C8': 'S', - '\uFF33': 'S', - '\u1E9E': 'S', - '\u015A': 'S', - '\u1E64': 'S', - '\u015C': 'S', - '\u1E60': 'S', - '\u0160': 'S', - '\u1E66': 'S', - '\u1E62': 'S', - '\u1E68': 'S', - '\u0218': 'S', - '\u015E': 'S', - '\u2C7E': 'S', - '\uA7A8': 'S', - '\uA784': 'S', - '\u24C9': 'T', - '\uFF34': 'T', - '\u1E6A': 'T', - '\u0164': 'T', - '\u1E6C': 'T', - '\u021A': 'T', - '\u0162': 'T', - '\u1E70': 'T', - '\u1E6E': 'T', - '\u0166': 'T', - '\u01AC': 'T', - '\u01AE': 'T', - '\u023E': 'T', - '\uA786': 'T', - '\uA728': 'TZ', - '\u24CA': 'U', - '\uFF35': 'U', - '\u00D9': 'U', - '\u00DA': 'U', - '\u00DB': 'U', - '\u0168': 'U', - '\u1E78': 'U', - '\u016A': 'U', - '\u1E7A': 'U', - '\u016C': 'U', - '\u00DC': 'U', - '\u01DB': 'U', - '\u01D7': 'U', - '\u01D5': 'U', - '\u01D9': 'U', - '\u1EE6': 'U', - '\u016E': 'U', - '\u0170': 'U', - '\u01D3': 'U', - '\u0214': 'U', - '\u0216': 'U', - '\u01AF': 'U', - '\u1EEA': 'U', - '\u1EE8': 'U', - '\u1EEE': 'U', - '\u1EEC': 'U', - '\u1EF0': 'U', - '\u1EE4': 'U', - '\u1E72': 'U', - '\u0172': 'U', - '\u1E76': 'U', - '\u1E74': 'U', - '\u0244': 'U', - '\u24CB': 'V', - '\uFF36': 'V', - '\u1E7C': 'V', - '\u1E7E': 'V', - '\u01B2': 'V', - '\uA75E': 'V', - '\u0245': 'V', - '\uA760': 'VY', - '\u24CC': 'W', - '\uFF37': 'W', - '\u1E80': 'W', - '\u1E82': 'W', - '\u0174': 'W', - '\u1E86': 'W', - '\u1E84': 'W', - '\u1E88': 'W', - '\u2C72': 'W', - '\u24CD': 'X', - '\uFF38': 'X', - '\u1E8A': 'X', - '\u1E8C': 'X', - '\u24CE': 'Y', - '\uFF39': 'Y', - '\u1EF2': 'Y', - '\u00DD': 'Y', - '\u0176': 'Y', - '\u1EF8': 'Y', - '\u0232': 'Y', - '\u1E8E': 'Y', - '\u0178': 'Y', - '\u1EF6': 'Y', - '\u1EF4': 'Y', - '\u01B3': 'Y', - '\u024E': 'Y', - '\u1EFE': 'Y', - '\u24CF': 'Z', - '\uFF3A': 'Z', - '\u0179': 'Z', - '\u1E90': 'Z', - '\u017B': 'Z', - '\u017D': 'Z', - '\u1E92': 'Z', - '\u1E94': 'Z', - '\u01B5': 'Z', - '\u0224': 'Z', - '\u2C7F': 'Z', - '\u2C6B': 'Z', - '\uA762': 'Z', - '\u24D0': 'a', - '\uFF41': 'a', - '\u1E9A': 'a', - '\u00E0': 'a', - '\u00E1': 'a', - '\u00E2': 'a', - '\u1EA7': 'a', - '\u1EA5': 'a', - '\u1EAB': 'a', - '\u1EA9': 'a', - '\u00E3': 'a', - '\u0101': 'a', - '\u0103': 'a', - '\u1EB1': 'a', - '\u1EAF': 'a', - '\u1EB5': 'a', - '\u1EB3': 'a', - '\u0227': 'a', - '\u01E1': 'a', - '\u00E4': 'a', - '\u01DF': 'a', - '\u1EA3': 'a', - '\u00E5': 'a', - '\u01FB': 'a', - '\u01CE': 'a', - '\u0201': 'a', - '\u0203': 'a', - '\u1EA1': 'a', - '\u1EAD': 'a', - '\u1EB7': 'a', - '\u1E01': 'a', - '\u0105': 'a', - '\u2C65': 'a', - '\u0250': 'a', - '\uA733': 'aa', - '\u00E6': 'ae', - '\u01FD': 'ae', - '\u01E3': 'ae', - '\uA735': 'ao', - '\uA737': 'au', - '\uA739': 'av', - '\uA73B': 'av', - '\uA73D': 'ay', - '\u24D1': 'b', - '\uFF42': 'b', - '\u1E03': 'b', - '\u1E05': 'b', - '\u1E07': 'b', - '\u0180': 'b', - '\u0183': 'b', - '\u0253': 'b', - '\u24D2': 'c', - '\uFF43': 'c', - '\u0107': 'c', - '\u0109': 'c', - '\u010B': 'c', - '\u010D': 'c', - '\u00E7': 'c', - '\u1E09': 'c', - '\u0188': 'c', - '\u023C': 'c', - '\uA73F': 'c', - '\u2184': 'c', - '\u24D3': 'd', - '\uFF44': 'd', - '\u1E0B': 'd', - '\u010F': 'd', - '\u1E0D': 'd', - '\u1E11': 'd', - '\u1E13': 'd', - '\u1E0F': 'd', - '\u0111': 'd', - '\u018C': 'd', - '\u0256': 'd', - '\u0257': 'd', - '\uA77A': 'd', - '\u01F3': 'dz', - '\u01C6': 'dz', - '\u24D4': 'e', - '\uFF45': 'e', - '\u00E8': 'e', - '\u00E9': 'e', - '\u00EA': 'e', - '\u1EC1': 'e', - '\u1EBF': 'e', - '\u1EC5': 'e', - '\u1EC3': 'e', - '\u1EBD': 'e', - '\u0113': 'e', - '\u1E15': 'e', - '\u1E17': 'e', - '\u0115': 'e', - '\u0117': 'e', - '\u00EB': 'e', - '\u1EBB': 'e', - '\u011B': 'e', - '\u0205': 'e', - '\u0207': 'e', - '\u1EB9': 'e', - '\u1EC7': 'e', - '\u0229': 'e', - '\u1E1D': 'e', - '\u0119': 'e', - '\u1E19': 'e', - '\u1E1B': 'e', - '\u0247': 'e', - '\u025B': 'e', - '\u01DD': 'e', - '\u24D5': 'f', - '\uFF46': 'f', - '\u1E1F': 'f', - '\u0192': 'f', - '\uA77C': 'f', - '\u24D6': 'g', - '\uFF47': 'g', - '\u01F5': 'g', - '\u011D': 'g', - '\u1E21': 'g', - '\u011F': 'g', - '\u0121': 'g', - '\u01E7': 'g', - '\u0123': 'g', - '\u01E5': 'g', - '\u0260': 'g', - '\uA7A1': 'g', - '\u1D79': 'g', - '\uA77F': 'g', - '\u24D7': 'h', - '\uFF48': 'h', - '\u0125': 'h', - '\u1E23': 'h', - '\u1E27': 'h', - '\u021F': 'h', - '\u1E25': 'h', - '\u1E29': 'h', - '\u1E2B': 'h', - '\u1E96': 'h', - '\u0127': 'h', - '\u2C68': 'h', - '\u2C76': 'h', - '\u0265': 'h', - '\u0195': 'hv', - '\u24D8': 'i', - '\uFF49': 'i', - '\u00EC': 'i', - '\u00ED': 'i', - '\u00EE': 'i', - '\u0129': 'i', - '\u012B': 'i', - '\u012D': 'i', - '\u00EF': 'i', - '\u1E2F': 'i', - '\u1EC9': 'i', - '\u01D0': 'i', - '\u0209': 'i', - '\u020B': 'i', - '\u1ECB': 'i', - '\u012F': 'i', - '\u1E2D': 'i', - '\u0268': 'i', - '\u0131': 'i', - '\u24D9': 'j', - '\uFF4A': 'j', - '\u0135': 'j', - '\u01F0': 'j', - '\u0249': 'j', - '\u24DA': 'k', - '\uFF4B': 'k', - '\u1E31': 'k', - '\u01E9': 'k', - '\u1E33': 'k', - '\u0137': 'k', - '\u1E35': 'k', - '\u0199': 'k', - '\u2C6A': 'k', - '\uA741': 'k', - '\uA743': 'k', - '\uA745': 'k', - '\uA7A3': 'k', - '\u24DB': 'l', - '\uFF4C': 'l', - '\u0140': 'l', - '\u013A': 'l', - '\u013E': 'l', - '\u1E37': 'l', - '\u1E39': 'l', - '\u013C': 'l', - '\u1E3D': 'l', - '\u1E3B': 'l', - '\u017F': 'l', - '\u0142': 'l', - '\u019A': 'l', - '\u026B': 'l', - '\u2C61': 'l', - '\uA749': 'l', - '\uA781': 'l', - '\uA747': 'l', - '\u01C9': 'lj', - '\u24DC': 'm', - '\uFF4D': 'm', - '\u1E3F': 'm', - '\u1E41': 'm', - '\u1E43': 'm', - '\u0271': 'm', - '\u026F': 'm', - '\u24DD': 'n', - '\uFF4E': 'n', - '\u01F9': 'n', - '\u0144': 'n', - '\u00F1': 'n', - '\u1E45': 'n', - '\u0148': 'n', - '\u1E47': 'n', - '\u0146': 'n', - '\u1E4B': 'n', - '\u1E49': 'n', - '\u019E': 'n', - '\u0272': 'n', - '\u0149': 'n', - '\uA791': 'n', - '\uA7A5': 'n', - '\u01CC': 'nj', - '\u24DE': 'o', - '\uFF4F': 'o', - '\u00F2': 'o', - '\u00F3': 'o', - '\u00F4': 'o', - '\u1ED3': 'o', - '\u1ED1': 'o', - '\u1ED7': 'o', - '\u1ED5': 'o', - '\u00F5': 'o', - '\u1E4D': 'o', - '\u022D': 'o', - '\u1E4F': 'o', - '\u014D': 'o', - '\u1E51': 'o', - '\u1E53': 'o', - '\u014F': 'o', - '\u022F': 'o', - '\u0231': 'o', - '\u00F6': 'o', - '\u022B': 'o', - '\u1ECF': 'o', - '\u0151': 'o', - '\u01D2': 'o', - '\u020D': 'o', - '\u020F': 'o', - '\u01A1': 'o', - '\u1EDD': 'o', - '\u1EDB': 'o', - '\u1EE1': 'o', - '\u1EDF': 'o', - '\u1EE3': 'o', - '\u1ECD': 'o', - '\u1ED9': 'o', - '\u01EB': 'o', - '\u01ED': 'o', - '\u00F8': 'o', - '\u01FF': 'o', - '\u0254': 'o', - '\uA74B': 'o', - '\uA74D': 'o', - '\u0275': 'o', - '\u0153': 'oe', - '\u01A3': 'oi', - '\u0223': 'ou', - '\uA74F': 'oo', - '\u24DF': 'p', - '\uFF50': 'p', - '\u1E55': 'p', - '\u1E57': 'p', - '\u01A5': 'p', - '\u1D7D': 'p', - '\uA751': 'p', - '\uA753': 'p', - '\uA755': 'p', - '\u24E0': 'q', - '\uFF51': 'q', - '\u024B': 'q', - '\uA757': 'q', - '\uA759': 'q', - '\u24E1': 'r', - '\uFF52': 'r', - '\u0155': 'r', - '\u1E59': 'r', - '\u0159': 'r', - '\u0211': 'r', - '\u0213': 'r', - '\u1E5B': 'r', - '\u1E5D': 'r', - '\u0157': 'r', - '\u1E5F': 'r', - '\u024D': 'r', - '\u027D': 'r', - '\uA75B': 'r', - '\uA7A7': 'r', - '\uA783': 'r', - '\u24E2': 's', - '\uFF53': 's', - '\u00DF': 's', - '\u015B': 's', - '\u1E65': 's', - '\u015D': 's', - '\u1E61': 's', - '\u0161': 's', - '\u1E67': 's', - '\u1E63': 's', - '\u1E69': 's', - '\u0219': 's', - '\u015F': 's', - '\u023F': 's', - '\uA7A9': 's', - '\uA785': 's', - '\u1E9B': 's', - '\u24E3': 't', - '\uFF54': 't', - '\u1E6B': 't', - '\u1E97': 't', - '\u0165': 't', - '\u1E6D': 't', - '\u021B': 't', - '\u0163': 't', - '\u1E71': 't', - '\u1E6F': 't', - '\u0167': 't', - '\u01AD': 't', - '\u0288': 't', - '\u2C66': 't', - '\uA787': 't', - '\uA729': 'tz', - '\u24E4': 'u', - '\uFF55': 'u', - '\u00F9': 'u', - '\u00FA': 'u', - '\u00FB': 'u', - '\u0169': 'u', - '\u1E79': 'u', - '\u016B': 'u', - '\u1E7B': 'u', - '\u016D': 'u', - '\u00FC': 'u', - '\u01DC': 'u', - '\u01D8': 'u', - '\u01D6': 'u', - '\u01DA': 'u', - '\u1EE7': 'u', - '\u016F': 'u', - '\u0171': 'u', - '\u01D4': 'u', - '\u0215': 'u', - '\u0217': 'u', - '\u01B0': 'u', - '\u1EEB': 'u', - '\u1EE9': 'u', - '\u1EEF': 'u', - '\u1EED': 'u', - '\u1EF1': 'u', - '\u1EE5': 'u', - '\u1E73': 'u', - '\u0173': 'u', - '\u1E77': 'u', - '\u1E75': 'u', - '\u0289': 'u', - '\u24E5': 'v', - '\uFF56': 'v', - '\u1E7D': 'v', - '\u1E7F': 'v', - '\u028B': 'v', - '\uA75F': 'v', - '\u028C': 'v', - '\uA761': 'vy', - '\u24E6': 'w', - '\uFF57': 'w', - '\u1E81': 'w', - '\u1E83': 'w', - '\u0175': 'w', - '\u1E87': 'w', - '\u1E85': 'w', - '\u1E98': 'w', - '\u1E89': 'w', - '\u2C73': 'w', - '\u24E7': 'x', - '\uFF58': 'x', - '\u1E8B': 'x', - '\u1E8D': 'x', - '\u24E8': 'y', - '\uFF59': 'y', - '\u1EF3': 'y', - '\u00FD': 'y', - '\u0177': 'y', - '\u1EF9': 'y', - '\u0233': 'y', - '\u1E8F': 'y', - '\u00FF': 'y', - '\u1EF7': 'y', - '\u1E99': 'y', - '\u1EF5': 'y', - '\u01B4': 'y', - '\u024F': 'y', - '\u1EFF': 'y', - '\u24E9': 'z', - '\uFF5A': 'z', - '\u017A': 'z', - '\u1E91': 'z', - '\u017C': 'z', - '\u017E': 'z', - '\u1E93': 'z', - '\u1E95': 'z', - '\u01B6': 'z', - '\u0225': 'z', - '\u0240': 'z', - '\u2C6C': 'z', - '\uA763': 'z', - '\u0386': '\u0391', - '\u0388': '\u0395', - '\u0389': '\u0397', - '\u038A': '\u0399', - '\u03AA': '\u0399', - '\u038C': '\u039F', - '\u038E': '\u03A5', - '\u03AB': '\u03A5', - '\u038F': '\u03A9', - '\u03AC': '\u03B1', - '\u03AD': '\u03B5', - '\u03AE': '\u03B7', - '\u03AF': '\u03B9', - '\u03CA': '\u03B9', - '\u0390': '\u03B9', - '\u03CC': '\u03BF', - '\u03CD': '\u03C5', - '\u03CB': '\u03C5', - '\u03B0': '\u03C5', - '\u03CE': '\u03C9', - '\u03C2': '\u03C3', - '\u2019': '\'' - }; - - return diacritics; -}); - -S2.define('select2/data/base',[ - '../utils' -], function (Utils) { - function BaseAdapter ($element, options) { - BaseAdapter.__super__.constructor.call(this); - } - - Utils.Extend(BaseAdapter, Utils.Observable); - - BaseAdapter.prototype.current = function (callback) { - throw new Error('The `current` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.query = function (params, callback) { - throw new Error('The `query` method must be defined in child classes.'); - }; - - BaseAdapter.prototype.bind = function (container, $container) { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.destroy = function () { - // Can be implemented in subclasses - }; - - BaseAdapter.prototype.generateResultId = function (container, data) { - var id = container.id + '-result-'; - - id += Utils.generateChars(4); - - if (data.id != null) { - id += '-' + data.id.toString(); - } else { - id += '-' + Utils.generateChars(4); - } - return id; - }; - - return BaseAdapter; -}); - -S2.define('select2/data/select',[ - './base', - '../utils', - 'jquery' -], function (BaseAdapter, Utils, $) { - function SelectAdapter ($element, options) { - this.$element = $element; - this.options = options; - - SelectAdapter.__super__.constructor.call(this); - } - - Utils.Extend(SelectAdapter, BaseAdapter); - - SelectAdapter.prototype.current = function (callback) { - var self = this; - - var data = Array.prototype.map.call( - this.$element[0].querySelectorAll(':checked'), - function (selectedElement) { - return self.item($(selectedElement)); - } - ); - - callback(data); - }; - - SelectAdapter.prototype.select = function (data) { - var self = this; - - data.selected = true; - - // If data.element is a DOM node, use it instead - if ( - data.element != null && data.element.tagName.toLowerCase() === 'option' - ) { - data.element.selected = true; - - this.$element.trigger('input').trigger('change'); - - return; - } - - if (this.$element.prop('multiple')) { - this.current(function (currentData) { - var val = []; - - data = [data]; - data.push.apply(data, currentData); - - for (var d = 0; d < data.length; d++) { - var id = data[d].id; - - if (val.indexOf(id) === -1) { - val.push(id); - } - } - - self.$element.val(val); - self.$element.trigger('input').trigger('change'); - }); - } else { - var val = data.id; - - this.$element.val(val); - this.$element.trigger('input').trigger('change'); - } - }; - - SelectAdapter.prototype.unselect = function (data) { - var self = this; - - if (!this.$element.prop('multiple')) { - return; - } - - data.selected = false; - - if ( - data.element != null && - data.element.tagName.toLowerCase() === 'option' - ) { - data.element.selected = false; - - this.$element.trigger('input').trigger('change'); - - return; - } - - this.current(function (currentData) { - var val = []; - - for (var d = 0; d < currentData.length; d++) { - var id = currentData[d].id; - - if (id !== data.id && val.indexOf(id) === -1) { - val.push(id); - } - } - - self.$element.val(val); - - self.$element.trigger('input').trigger('change'); - }); - }; - - SelectAdapter.prototype.bind = function (container, $container) { - var self = this; - - this.container = container; - - container.on('select', function (params) { - self.select(params.data); - }); - - container.on('unselect', function (params) { - self.unselect(params.data); - }); - }; - - SelectAdapter.prototype.destroy = function () { - // Remove anything added to child elements - this.$element.find('*').each(function () { - // Remove any custom data set by Select2 - Utils.RemoveData(this); - }); - }; - - SelectAdapter.prototype.query = function (params, callback) { - var data = []; - var self = this; - - var $options = this.$element.children(); - - $options.each(function () { - if ( - this.tagName.toLowerCase() !== 'option' && - this.tagName.toLowerCase() !== 'optgroup' - ) { - return; - } - - var $option = $(this); - - var option = self.item($option); - - var matches = self.matches(params, option); - - if (matches !== null) { - data.push(matches); - } - }); - - callback({ - results: data - }); - }; - - SelectAdapter.prototype.addOptions = function ($options) { - this.$element.append($options); - }; - - SelectAdapter.prototype.option = function (data) { - var option; - - if (data.children) { - option = document.createElement('optgroup'); - option.label = data.text; - } else { - option = document.createElement('option'); - - if (option.textContent !== undefined) { - option.textContent = data.text; - } else { - option.innerText = data.text; - } - } - - if (data.id !== undefined) { - option.value = data.id; - } - - if (data.disabled) { - option.disabled = true; - } - - if (data.selected) { - option.selected = true; - } - - if (data.title) { - option.title = data.title; - } - - var normalizedData = this._normalizeItem(data); - normalizedData.element = option; - - // Override the option's data with the combined data - Utils.StoreData(option, 'data', normalizedData); - - return $(option); - }; - - SelectAdapter.prototype.item = function ($option) { - var data = {}; - - data = Utils.GetData($option[0], 'data'); - - if (data != null) { - return data; - } - - var option = $option[0]; - - if (option.tagName.toLowerCase() === 'option') { - data = { - id: $option.val(), - text: $option.text(), - disabled: $option.prop('disabled'), - selected: $option.prop('selected'), - title: $option.prop('title') - }; - } else if (option.tagName.toLowerCase() === 'optgroup') { - data = { - text: $option.prop('label'), - children: [], - title: $option.prop('title') - }; - - var $children = $option.children('option'); - var children = []; - - for (var c = 0; c < $children.length; c++) { - var $child = $($children[c]); - - var child = this.item($child); - - children.push(child); - } - - data.children = children; - } - - data = this._normalizeItem(data); - data.element = $option[0]; - - Utils.StoreData($option[0], 'data', data); - - return data; - }; - - SelectAdapter.prototype._normalizeItem = function (item) { - if (item !== Object(item)) { - item = { - id: item, - text: item - }; - } - - item = $.extend({}, { - text: '' - }, item); - - var defaults = { - selected: false, - disabled: false - }; - - if (item.id != null) { - item.id = item.id.toString(); - } - - if (item.text != null) { - item.text = item.text.toString(); - } - - if (item._resultId == null && item.id && this.container != null) { - item._resultId = this.generateResultId(this.container, item); - } - - return $.extend({}, defaults, item); - }; - - SelectAdapter.prototype.matches = function (params, data) { - var matcher = this.options.get('matcher'); - - return matcher(params, data); - }; - - return SelectAdapter; -}); - -S2.define('select2/data/array',[ - './select', - '../utils', - 'jquery' -], function (SelectAdapter, Utils, $) { - function ArrayAdapter ($element, options) { - this._dataToConvert = options.get('data') || []; - - ArrayAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(ArrayAdapter, SelectAdapter); - - ArrayAdapter.prototype.bind = function (container, $container) { - ArrayAdapter.__super__.bind.call(this, container, $container); - - this.addOptions(this.convertToOptions(this._dataToConvert)); - }; - - ArrayAdapter.prototype.select = function (data) { - var $option = this.$element.find('option').filter(function (i, elm) { - return elm.value == data.id.toString(); - }); - - if ($option.length === 0) { - $option = this.option(data); - - this.addOptions($option); - } - - ArrayAdapter.__super__.select.call(this, data); - }; - - ArrayAdapter.prototype.convertToOptions = function (data) { - var self = this; - - var $existing = this.$element.find('option'); - var existingIds = $existing.map(function () { - return self.item($(this)).id; - }).get(); - - var $options = []; - - // Filter out all items except for the one passed in the argument - function onlyItem (item) { - return function () { - return $(this).val() == item.id; - }; - } - - for (var d = 0; d < data.length; d++) { - var item = this._normalizeItem(data[d]); - - // Skip items which were pre-loaded, only merge the data - if (existingIds.indexOf(item.id) >= 0) { - var $existingOption = $existing.filter(onlyItem(item)); - - var existingData = this.item($existingOption); - var newData = $.extend(true, {}, item, existingData); - - var $newOption = this.option(newData); - - $existingOption.replaceWith($newOption); - - continue; - } - - var $option = this.option(item); - - if (item.children) { - var $children = this.convertToOptions(item.children); - - $option.append($children); - } - - $options.push($option); - } - - return $options; - }; - - return ArrayAdapter; -}); - -S2.define('select2/data/ajax',[ - './array', - '../utils', - 'jquery' -], function (ArrayAdapter, Utils, $) { - function AjaxAdapter ($element, options) { - this.ajaxOptions = this._applyDefaults(options.get('ajax')); - - if (this.ajaxOptions.processResults != null) { - this.processResults = this.ajaxOptions.processResults; - } - - AjaxAdapter.__super__.constructor.call(this, $element, options); - } - - Utils.Extend(AjaxAdapter, ArrayAdapter); - - AjaxAdapter.prototype._applyDefaults = function (options) { - var defaults = { - data: function (params) { - return $.extend({}, params, { - q: params.term - }); - }, - transport: function (params, success, failure) { - var $request = $.ajax(params); - - $request.then(success); - $request.fail(failure); - - return $request; - } - }; - - return $.extend({}, defaults, options, true); - }; - - AjaxAdapter.prototype.processResults = function (results) { - return results; - }; - - AjaxAdapter.prototype.query = function (params, callback) { - var matches = []; - var self = this; - - if (this._request != null) { - // JSONP requests cannot always be aborted - if (typeof this._request.abort === 'function') { - this._request.abort(); - } - - this._request = null; - } - - var options = $.extend({ - type: 'GET' - }, this.ajaxOptions); - - if (typeof options.url === 'function') { - options.url = options.url.call(this.$element, params); - } - - if (typeof options.data === 'function') { - options.data = options.data.call(this.$element, params); - } - - function request () { - var $request = options.transport(options, function (data) { - var results = self.processResults(data, params); - - if (self.options.get('debug') && window.console && console.error) { - // Check to make sure that the response included a `results` key. - if (!results || !results.results || !Array.isArray(results.results)) { - console.error( - 'Select2: The AJAX results did not return an array in the ' + - '`results` key of the response.' - ); - } - } - - callback(results); - }, function () { - // Attempt to detect if a request was aborted - // Only works if the transport exposes a status property - if ('status' in $request && - ($request.status === 0 || $request.status === '0')) { - return; - } - - self.trigger('results:message', { - message: 'errorLoading' - }); - }); - - self._request = $request; - } - - if (this.ajaxOptions.delay && params.term != null) { - if (this._queryTimeout) { - window.clearTimeout(this._queryTimeout); - } - - this._queryTimeout = window.setTimeout(request, this.ajaxOptions.delay); - } else { - request(); - } - }; - - return AjaxAdapter; -}); - -S2.define('select2/data/tags',[ - 'jquery' -], function ($) { - function Tags (decorated, $element, options) { - var tags = options.get('tags'); - - var createTag = options.get('createTag'); - - if (createTag !== undefined) { - this.createTag = createTag; - } - - var insertTag = options.get('insertTag'); - - if (insertTag !== undefined) { - this.insertTag = insertTag; - } - - decorated.call(this, $element, options); - - if (Array.isArray(tags)) { - for (var t = 0; t < tags.length; t++) { - var tag = tags[t]; - var item = this._normalizeItem(tag); - - var $option = this.option(item); - - this.$element.append($option); - } - } - } - - Tags.prototype.query = function (decorated, params, callback) { - var self = this; - - this._removeOldTags(); - - if (params.term == null || params.page != null) { - decorated.call(this, params, callback); - return; - } - - function wrapper (obj, child) { - var data = obj.results; - - for (var i = 0; i < data.length; i++) { - var option = data[i]; - - var checkChildren = ( - option.children != null && - !wrapper({ - results: option.children - }, true) - ); - - var optionText = (option.text || '').toUpperCase(); - var paramsTerm = (params.term || '').toUpperCase(); - - var checkText = optionText === paramsTerm; - - if (checkText || checkChildren) { - if (child) { - return false; - } - - obj.data = data; - callback(obj); - - return; - } - } - - if (child) { - return true; - } - - var tag = self.createTag(params); - - if (tag != null) { - var $option = self.option(tag); - $option.attr('data-select2-tag', 'true'); - - self.addOptions([$option]); - - self.insertTag(data, tag); - } - - obj.results = data; - - callback(obj); - } - - decorated.call(this, params, wrapper); - }; - - Tags.prototype.createTag = function (decorated, params) { - if (params.term == null) { - return null; - } - - var term = params.term.trim(); - - if (term === '') { - return null; - } - - return { - id: term, - text: term - }; - }; - - Tags.prototype.insertTag = function (_, data, tag) { - data.unshift(tag); - }; - - Tags.prototype._removeOldTags = function (_) { - var $options = this.$element.find('option[data-select2-tag]'); - - $options.each(function () { - if (this.selected) { - return; - } - - $(this).remove(); - }); - }; - - return Tags; -}); - -S2.define('select2/data/tokenizer',[ - 'jquery' -], function ($) { - function Tokenizer (decorated, $element, options) { - var tokenizer = options.get('tokenizer'); - - if (tokenizer !== undefined) { - this.tokenizer = tokenizer; - } - - decorated.call(this, $element, options); - } - - Tokenizer.prototype.bind = function (decorated, container, $container) { - decorated.call(this, container, $container); - - this.$search = container.dropdown.$search || container.selection.$search || - $container.find('.select2-search__field'); - }; - - Tokenizer.prototype.query = function (decorated, params, callback) { - var self = this; - - function createAndSelect (data) { - // Normalize the data object so we can use it for checks - var item = self._normalizeItem(data); - - // Check if the data object already exists as a tag - // Select it if it doesn't - var $existingOptions = self.$element.find('option').filter(function () { - return $(this).val() === item.id; - }); - - // If an existing option wasn't found for it, create the option - if (!$existingOptions.length) { - var $option = self.option(item); - $option.attr('data-select2-tag', true); - - self._removeOldTags(); - self.addOptions([$option]); - } - - // Select the item, now that we know there is an option for it - select(item); - } - - function select (data) { - self.trigger('select', { - data: data - }); - } - - params.term = params.term || ''; - - var tokenData = this.tokenizer(params, this.options, createAndSelect); - - if (tokenData.term !== params.term) { - // Replace the search term if we have the search box - if (this.$search.length) { - this.$search.val(tokenData.term); - this.$search.trigger('focus'); - } - - params.term = tokenData.term; - } - - decorated.call(this, params, callback); - }; - - Tokenizer.prototype.tokenizer = function (_, params, options, callback) { - var separators = options.get('tokenSeparators') || []; - var term = params.term; - var i = 0; - - var createTag = this.createTag || function (params) { - return { - id: params.term, - text: params.term - }; - }; - - while (i < term.length) { - var termChar = term[i]; - - if (separators.indexOf(termChar) === -1) { - i++; - - continue; - } - - var part = term.substr(0, i); - var partParams = $.extend({}, params, { - term: part - }); - - var data = createTag(partParams); - - if (data == null) { - i++; - continue; - } - - callback(data); - - // Reset the term to not include the tokenized portion - term = term.substr(i + 1) || ''; - i = 0; - } - - return { - term: term - }; - }; - - return Tokenizer; -}); - -S2.define('select2/data/minimumInputLength',[ - -], function () { - function MinimumInputLength (decorated, $e, options) { - this.minimumInputLength = options.get('minimumInputLength'); - - decorated.call(this, $e, options); - } - - MinimumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (params.term.length < this.minimumInputLength) { - this.trigger('results:message', { - message: 'inputTooShort', - args: { - minimum: this.minimumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MinimumInputLength; -}); - -S2.define('select2/data/maximumInputLength',[ - -], function () { - function MaximumInputLength (decorated, $e, options) { - this.maximumInputLength = options.get('maximumInputLength'); - - decorated.call(this, $e, options); - } - - MaximumInputLength.prototype.query = function (decorated, params, callback) { - params.term = params.term || ''; - - if (this.maximumInputLength > 0 && - params.term.length > this.maximumInputLength) { - this.trigger('results:message', { - message: 'inputTooLong', - args: { - maximum: this.maximumInputLength, - input: params.term, - params: params - } - }); - - return; - } - - decorated.call(this, params, callback); - }; - - return MaximumInputLength; -}); - -S2.define('select2/data/maximumSelectionLength',[ - -], function (){ - function MaximumSelectionLength (decorated, $e, options) { - this.maximumSelectionLength = options.get('maximumSelectionLength'); - - decorated.call(this, $e, options); - } - - MaximumSelectionLength.prototype.bind = - function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function () { - self._checkIfMaximumSelected(); - }); - }; - - MaximumSelectionLength.prototype.query = - function (decorated, params, callback) { - var self = this; - - this._checkIfMaximumSelected(function () { - decorated.call(self, params, callback); - }); - }; - - MaximumSelectionLength.prototype._checkIfMaximumSelected = - function (_, successCallback) { - var self = this; - - this.current(function (currentData) { - var count = currentData != null ? currentData.length : 0; - if (self.maximumSelectionLength > 0 && - count >= self.maximumSelectionLength) { - self.trigger('results:message', { - message: 'maximumSelected', - args: { - maximum: self.maximumSelectionLength - } - }); - return; - } - - if (successCallback) { - successCallback(); - } - }); - }; - - return MaximumSelectionLength; -}); - -S2.define('select2/dropdown',[ - 'jquery', - './utils' -], function ($, Utils) { - function Dropdown ($element, options) { - this.$element = $element; - this.options = options; - - Dropdown.__super__.constructor.call(this); - } - - Utils.Extend(Dropdown, Utils.Observable); - - Dropdown.prototype.render = function () { - var $dropdown = $( - '' + - '' + - '' - ); - - $dropdown.attr('dir', this.options.get('dir')); - - this.$dropdown = $dropdown; - - return $dropdown; - }; - - Dropdown.prototype.bind = function () { - // Should be implemented in subclasses - }; - - Dropdown.prototype.position = function ($dropdown, $container) { - // Should be implemented in subclasses - }; - - Dropdown.prototype.destroy = function () { - // Remove the dropdown from the DOM - this.$dropdown.remove(); - }; - - return Dropdown; -}); - -S2.define('select2/dropdown/search',[ - 'jquery' -], function ($) { - function Search () { } - - Search.prototype.render = function (decorated) { - var $rendered = decorated.call(this); - var searchLabel = this.options.get('translations').get('search'); - - var $search = $( - '' + - '' + - '' - ); - - this.$searchContainer = $search; - this.$search = $search.find('input'); - - this.$search.prop('autocomplete', this.options.get('autocomplete')); - this.$search.attr('aria-label', searchLabel()); - - $rendered.prepend($search); - - return $rendered; - }; - - Search.prototype.bind = function (decorated, container, $container) { - var self = this; - - var resultsId = container.id + '-results'; - - decorated.call(this, container, $container); - - this.$search.on('keydown', function (evt) { - self.trigger('keypress', evt); - - self._keyUpPrevented = evt.isDefaultPrevented(); - }); - - // Workaround for browsers which do not support the `input` event - // This will prevent double-triggering of events for browsers which support - // both the `keyup` and `input` events. - this.$search.on('input', function (evt) { - // Unbind the duplicated `keyup` event - $(this).off('keyup'); - }); - - this.$search.on('keyup input', function (evt) { - self.handleSearch(evt); - }); - - container.on('open', function () { - self.$search.attr('tabindex', 0); - self.$search.attr('aria-controls', resultsId); - - self.$search.trigger('focus'); - - window.setTimeout(function () { - self.$search.trigger('focus'); - }, 0); - }); - - container.on('close', function () { - self.$search.attr('tabindex', -1); - self.$search.removeAttr('aria-controls'); - self.$search.removeAttr('aria-activedescendant'); - - self.$search.val(''); - self.$search.trigger('blur'); - }); - - container.on('focus', function () { - if (!container.isOpen()) { - self.$search.trigger('focus'); - } - }); - - container.on('results:all', function (params) { - if (params.query.term == null || params.query.term === '') { - var showSearch = self.showSearch(params); - - if (showSearch) { - self.$searchContainer[0].classList.remove('select2-search--hide'); - } else { - self.$searchContainer[0].classList.add('select2-search--hide'); - } - } - }); - - container.on('results:focus', function (params) { - if (params.data._resultId) { - self.$search.attr('aria-activedescendant', params.data._resultId); - } else { - self.$search.removeAttr('aria-activedescendant'); - } - }); - }; - - Search.prototype.handleSearch = function (evt) { - if (!this._keyUpPrevented) { - var input = this.$search.val(); - - this.trigger('query', { - term: input - }); - } - - this._keyUpPrevented = false; - }; - - Search.prototype.showSearch = function (_, params) { - return true; - }; - - return Search; -}); - -S2.define('select2/dropdown/hidePlaceholder',[ - -], function () { - function HidePlaceholder (decorated, $element, options, dataAdapter) { - this.placeholder = this.normalizePlaceholder(options.get('placeholder')); - - decorated.call(this, $element, options, dataAdapter); - } - - HidePlaceholder.prototype.append = function (decorated, data) { - data.results = this.removePlaceholder(data.results); - - decorated.call(this, data); - }; - - HidePlaceholder.prototype.normalizePlaceholder = function (_, placeholder) { - if (typeof placeholder === 'string') { - placeholder = { - id: '', - text: placeholder - }; - } - - return placeholder; - }; - - HidePlaceholder.prototype.removePlaceholder = function (_, data) { - var modifiedData = data.slice(0); - - for (var d = data.length - 1; d >= 0; d--) { - var item = data[d]; - - if (this.placeholder.id === item.id) { - modifiedData.splice(d, 1); - } - } - - return modifiedData; - }; - - return HidePlaceholder; -}); - -S2.define('select2/dropdown/infiniteScroll',[ - 'jquery' -], function ($) { - function InfiniteScroll (decorated, $element, options, dataAdapter) { - this.lastParams = {}; - - decorated.call(this, $element, options, dataAdapter); - - this.$loadingMore = this.createLoadingMore(); - this.loading = false; - } - - InfiniteScroll.prototype.append = function (decorated, data) { - this.$loadingMore.remove(); - this.loading = false; - - decorated.call(this, data); - - if (this.showLoadingMore(data)) { - this.$results.append(this.$loadingMore); - this.loadMoreIfNeeded(); - } - }; - - InfiniteScroll.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('query', function (params) { - self.lastParams = params; - self.loading = true; - }); - - container.on('query:append', function (params) { - self.lastParams = params; - self.loading = true; - }); - - this.$results.on('scroll', this.loadMoreIfNeeded.bind(this)); - }; - - InfiniteScroll.prototype.loadMoreIfNeeded = function () { - var isLoadMoreVisible = $.contains( - document.documentElement, - this.$loadingMore[0] - ); - - if (this.loading || !isLoadMoreVisible) { - return; - } - - var currentOffset = this.$results.offset().top + - this.$results.outerHeight(false); - var loadingMoreOffset = this.$loadingMore.offset().top + - this.$loadingMore.outerHeight(false); - - if (currentOffset + 50 >= loadingMoreOffset) { - this.loadMore(); - } - }; - - InfiniteScroll.prototype.loadMore = function () { - this.loading = true; - - var params = $.extend({}, {page: 1}, this.lastParams); - - params.page++; - - this.trigger('query:append', params); - }; - - InfiniteScroll.prototype.showLoadingMore = function (_, data) { - return data.pagination && data.pagination.more; - }; - - InfiniteScroll.prototype.createLoadingMore = function () { - var $option = $( - '
  • ' - ); - - var message = this.options.get('translations').get('loadingMore'); - - $option.html(message(this.lastParams)); - - return $option; - }; - - return InfiniteScroll; -}); - -S2.define('select2/dropdown/attachBody',[ - 'jquery', - '../utils' -], function ($, Utils) { - function AttachBody (decorated, $element, options) { - this.$dropdownParent = $(options.get('dropdownParent') || document.body); - - decorated.call(this, $element, options); - } - - AttachBody.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('open', function () { - self._showDropdown(); - self._attachPositioningHandler(container); - - // Must bind after the results handlers to ensure correct sizing - self._bindContainerResultHandlers(container); - }); - - container.on('close', function () { - self._hideDropdown(); - self._detachPositioningHandler(container); - }); - - this.$dropdownContainer.on('mousedown', function (evt) { - evt.stopPropagation(); - }); - }; - - AttachBody.prototype.destroy = function (decorated) { - decorated.call(this); - - this.$dropdownContainer.remove(); - }; - - AttachBody.prototype.position = function (decorated, $dropdown, $container) { - // Clone all of the container classes - $dropdown.attr('class', $container.attr('class')); - - $dropdown[0].classList.remove('select2'); - $dropdown[0].classList.add('select2-container--open'); - - $dropdown.css({ - position: 'absolute', - top: -999999 - }); - - this.$container = $container; - }; - - AttachBody.prototype.render = function (decorated) { - var $container = $(''); - - var $dropdown = decorated.call(this); - $container.append($dropdown); - - this.$dropdownContainer = $container; - - return $container; - }; - - AttachBody.prototype._hideDropdown = function (decorated) { - this.$dropdownContainer.detach(); - }; - - AttachBody.prototype._bindContainerResultHandlers = - function (decorated, container) { - - // These should only be bound once - if (this._containerResultsHandlersBound) { - return; - } - - var self = this; - - container.on('results:all', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:append', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('results:message', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('select', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - container.on('unselect', function () { - self._positionDropdown(); - self._resizeDropdown(); - }); - - this._containerResultsHandlersBound = true; - }; - - AttachBody.prototype._attachPositioningHandler = - function (decorated, container) { - var self = this; - - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.each(function () { - Utils.StoreData(this, 'select2-scroll-position', { - x: $(this).scrollLeft(), - y: $(this).scrollTop() - }); - }); - - $watchers.on(scrollEvent, function (ev) { - var position = Utils.GetData(this, 'select2-scroll-position'); - $(this).scrollTop(position.y); - }); - - $(window).on(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent, - function (e) { - self._positionDropdown(); - self._resizeDropdown(); - }); - }; - - AttachBody.prototype._detachPositioningHandler = - function (decorated, container) { - var scrollEvent = 'scroll.select2.' + container.id; - var resizeEvent = 'resize.select2.' + container.id; - var orientationEvent = 'orientationchange.select2.' + container.id; - - var $watchers = this.$container.parents().filter(Utils.hasScroll); - $watchers.off(scrollEvent); - - $(window).off(scrollEvent + ' ' + resizeEvent + ' ' + orientationEvent); - }; - - AttachBody.prototype._positionDropdown = function () { - var $window = $(window); - - var isCurrentlyAbove = this.$dropdown[0].classList - .contains('select2-dropdown--above'); - var isCurrentlyBelow = this.$dropdown[0].classList - .contains('select2-dropdown--below'); - - var newDirection = null; - - var offset = this.$container.offset(); - - offset.bottom = offset.top + this.$container.outerHeight(false); - - var container = { - height: this.$container.outerHeight(false) - }; - - container.top = offset.top; - container.bottom = offset.top + container.height; - - var dropdown = { - height: this.$dropdown.outerHeight(false) - }; - - var viewport = { - top: $window.scrollTop(), - bottom: $window.scrollTop() + $window.height() - }; - - var enoughRoomAbove = viewport.top < (offset.top - dropdown.height); - var enoughRoomBelow = viewport.bottom > (offset.bottom + dropdown.height); - - var css = { - left: offset.left, - top: container.bottom - }; - - // Determine what the parent element is to use for calculating the offset - var $offsetParent = this.$dropdownParent; - - // For statically positioned elements, we need to get the element - // that is determining the offset - if ($offsetParent.css('position') === 'static') { - $offsetParent = $offsetParent.offsetParent(); - } - - var parentOffset = { - top: 0, - left: 0 - }; - - if ( - $.contains(document.body, $offsetParent[0]) || - $offsetParent[0].isConnected - ) { - parentOffset = $offsetParent.offset(); - } - - css.top -= parentOffset.top; - css.left -= parentOffset.left; - - if (!isCurrentlyAbove && !isCurrentlyBelow) { - newDirection = 'below'; - } - - if (!enoughRoomBelow && enoughRoomAbove && !isCurrentlyAbove) { - newDirection = 'above'; - } else if (!enoughRoomAbove && enoughRoomBelow && isCurrentlyAbove) { - newDirection = 'below'; - } - - if (newDirection == 'above' || - (isCurrentlyAbove && newDirection !== 'below')) { - css.top = container.top - parentOffset.top - dropdown.height; - } - - if (newDirection != null) { - this.$dropdown[0].classList.remove('select2-dropdown--below'); - this.$dropdown[0].classList.remove('select2-dropdown--above'); - this.$dropdown[0].classList.add('select2-dropdown--' + newDirection); - - this.$container[0].classList.remove('select2-container--below'); - this.$container[0].classList.remove('select2-container--above'); - this.$container[0].classList.add('select2-container--' + newDirection); - } - - this.$dropdownContainer.css(css); - }; - - AttachBody.prototype._resizeDropdown = function () { - var css = { - width: this.$container.outerWidth(false) + 'px' - }; - - if (this.options.get('dropdownAutoWidth')) { - css.minWidth = css.width; - css.position = 'relative'; - css.width = 'auto'; - } - - this.$dropdown.css(css); - }; - - AttachBody.prototype._showDropdown = function (decorated) { - this.$dropdownContainer.appendTo(this.$dropdownParent); - - this._positionDropdown(); - this._resizeDropdown(); - }; - - return AttachBody; -}); - -S2.define('select2/dropdown/minimumResultsForSearch',[ - -], function () { - function countResults (data) { - var count = 0; - - for (var d = 0; d < data.length; d++) { - var item = data[d]; - - if (item.children) { - count += countResults(item.children); - } else { - count++; - } - } - - return count; - } - - function MinimumResultsForSearch (decorated, $element, options, dataAdapter) { - this.minimumResultsForSearch = options.get('minimumResultsForSearch'); - - if (this.minimumResultsForSearch < 0) { - this.minimumResultsForSearch = Infinity; - } - - decorated.call(this, $element, options, dataAdapter); - } - - MinimumResultsForSearch.prototype.showSearch = function (decorated, params) { - if (countResults(params.data.results) < this.minimumResultsForSearch) { - return false; - } - - return decorated.call(this, params); - }; - - return MinimumResultsForSearch; -}); - -S2.define('select2/dropdown/selectOnClose',[ - '../utils' -], function (Utils) { - function SelectOnClose () { } - - SelectOnClose.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('close', function (params) { - self._handleSelectOnClose(params); - }); - }; - - SelectOnClose.prototype._handleSelectOnClose = function (_, params) { - if (params && params.originalSelect2Event != null) { - var event = params.originalSelect2Event; - - // Don't select an item if the close event was triggered from a select or - // unselect event - if (event._type === 'select' || event._type === 'unselect') { - return; - } - } - - var $highlightedResults = this.getHighlightedResults(); - - // Only select highlighted results - if ($highlightedResults.length < 1) { - return; - } - - var data = Utils.GetData($highlightedResults[0], 'data'); - - // Don't re-select already selected resulte - if ( - (data.element != null && data.element.selected) || - (data.element == null && data.selected) - ) { - return; - } - - this.trigger('select', { - data: data - }); - }; - - return SelectOnClose; -}); - -S2.define('select2/dropdown/closeOnSelect',[ - -], function () { - function CloseOnSelect () { } - - CloseOnSelect.prototype.bind = function (decorated, container, $container) { - var self = this; - - decorated.call(this, container, $container); - - container.on('select', function (evt) { - self._selectTriggered(evt); - }); - - container.on('unselect', function (evt) { - self._selectTriggered(evt); - }); - }; - - CloseOnSelect.prototype._selectTriggered = function (_, evt) { - var originalEvent = evt.originalEvent; - - // Don't close if the control key is being held - if (originalEvent && (originalEvent.ctrlKey || originalEvent.metaKey)) { - return; - } - - this.trigger('close', { - originalEvent: originalEvent, - originalSelect2Event: evt - }); - }; - - return CloseOnSelect; -}); - -S2.define('select2/dropdown/dropdownCss',[ - '../utils' -], function (Utils) { - function DropdownCSS () { } - - DropdownCSS.prototype.render = function (decorated) { - var $dropdown = decorated.call(this); - - var dropdownCssClass = this.options.get('dropdownCssClass') || ''; - - if (dropdownCssClass.indexOf(':all:') !== -1) { - dropdownCssClass = dropdownCssClass.replace(':all:', ''); - - Utils.copyNonInternalCssClasses($dropdown[0], this.$element[0]); - } - - $dropdown.addClass(dropdownCssClass); - - return $dropdown; - }; - - return DropdownCSS; -}); - -S2.define('select2/dropdown/tagsSearchHighlight',[ - '../utils' -], function (Utils) { - function TagsSearchHighlight () { } - - TagsSearchHighlight.prototype.highlightFirstItem = function (decorated) { - var $options = this.$results - .find( - '.select2-results__option--selectable' + - ':not(.select2-results__option--selected)' - ); - - if ($options.length > 0) { - var $firstOption = $options.first(); - var data = Utils.GetData($firstOption[0], 'data'); - var firstElement = data.element; - - if (firstElement && firstElement.getAttribute) { - if (firstElement.getAttribute('data-select2-tag') === 'true') { - $firstOption.trigger('mouseenter'); - - return; - } - } - } - - decorated.call(this); - }; - - return TagsSearchHighlight; -}); - -S2.define('select2/i18n/en',[],function () { - // English - return { - errorLoading: function () { - return 'The results could not be loaded.'; - }, - inputTooLong: function (args) { - var overChars = args.input.length - args.maximum; - - var message = 'Please delete ' + overChars + ' character'; - - if (overChars != 1) { - message += 's'; - } - - return message; - }, - inputTooShort: function (args) { - var remainingChars = args.minimum - args.input.length; - - var message = 'Please enter ' + remainingChars + ' or more characters'; - - return message; - }, - loadingMore: function () { - return 'Loading more results…'; - }, - maximumSelected: function (args) { - var message = 'You can only select ' + args.maximum + ' item'; - - if (args.maximum != 1) { - message += 's'; - } - - return message; - }, - noResults: function () { - return 'No results found'; - }, - searching: function () { - return 'Searching…'; - }, - removeAllItems: function () { - return 'Remove all items'; - }, - removeItem: function () { - return 'Remove item'; - }, - search: function() { - return 'Search'; - } - }; -}); - -S2.define('select2/defaults',[ - 'jquery', - - './results', - - './selection/single', - './selection/multiple', - './selection/placeholder', - './selection/allowClear', - './selection/search', - './selection/selectionCss', - './selection/eventRelay', - - './utils', - './translation', - './diacritics', - - './data/select', - './data/array', - './data/ajax', - './data/tags', - './data/tokenizer', - './data/minimumInputLength', - './data/maximumInputLength', - './data/maximumSelectionLength', - - './dropdown', - './dropdown/search', - './dropdown/hidePlaceholder', - './dropdown/infiniteScroll', - './dropdown/attachBody', - './dropdown/minimumResultsForSearch', - './dropdown/selectOnClose', - './dropdown/closeOnSelect', - './dropdown/dropdownCss', - './dropdown/tagsSearchHighlight', - - './i18n/en' -], function ($, - - ResultsList, - - SingleSelection, MultipleSelection, Placeholder, AllowClear, - SelectionSearch, SelectionCSS, EventRelay, - - Utils, Translation, DIACRITICS, - - SelectData, ArrayData, AjaxData, Tags, Tokenizer, - MinimumInputLength, MaximumInputLength, MaximumSelectionLength, - - Dropdown, DropdownSearch, HidePlaceholder, InfiniteScroll, - AttachBody, MinimumResultsForSearch, SelectOnClose, CloseOnSelect, - DropdownCSS, TagsSearchHighlight, - - EnglishTranslation) { - function Defaults () { - this.reset(); - } - - Defaults.prototype.apply = function (options) { - options = $.extend(true, {}, this.defaults, options); - - if (options.dataAdapter == null) { - if (options.ajax != null) { - options.dataAdapter = AjaxData; - } else if (options.data != null) { - options.dataAdapter = ArrayData; - } else { - options.dataAdapter = SelectData; - } - - if (options.minimumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MinimumInputLength - ); - } - - if (options.maximumInputLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumInputLength - ); - } - - if (options.maximumSelectionLength > 0) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - MaximumSelectionLength - ); - } - - if (options.tags) { - options.dataAdapter = Utils.Decorate(options.dataAdapter, Tags); - } - - if (options.tokenSeparators != null || options.tokenizer != null) { - options.dataAdapter = Utils.Decorate( - options.dataAdapter, - Tokenizer - ); - } - } - - if (options.resultsAdapter == null) { - options.resultsAdapter = ResultsList; - - if (options.ajax != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - InfiniteScroll - ); - } - - if (options.placeholder != null) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - HidePlaceholder - ); - } - - if (options.selectOnClose) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - SelectOnClose - ); - } - - if (options.tags) { - options.resultsAdapter = Utils.Decorate( - options.resultsAdapter, - TagsSearchHighlight - ); - } - } - - if (options.dropdownAdapter == null) { - if (options.multiple) { - options.dropdownAdapter = Dropdown; - } else { - var SearchableDropdown = Utils.Decorate(Dropdown, DropdownSearch); - - options.dropdownAdapter = SearchableDropdown; - } - - if (options.minimumResultsForSearch !== 0) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - MinimumResultsForSearch - ); - } - - if (options.closeOnSelect) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - CloseOnSelect - ); - } - - if (options.dropdownCssClass != null) { - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - DropdownCSS - ); - } - - options.dropdownAdapter = Utils.Decorate( - options.dropdownAdapter, - AttachBody - ); - } - - if (options.selectionAdapter == null) { - if (options.multiple) { - options.selectionAdapter = MultipleSelection; - } else { - options.selectionAdapter = SingleSelection; - } - - // Add the placeholder mixin if a placeholder was specified - if (options.placeholder != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - Placeholder - ); - } - - if (options.allowClear) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - AllowClear - ); - } - - if (options.multiple) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionSearch - ); - } - - if (options.selectionCssClass != null) { - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - SelectionCSS - ); - } - - options.selectionAdapter = Utils.Decorate( - options.selectionAdapter, - EventRelay - ); - } - - // If the defaults were not previously applied from an element, it is - // possible for the language option to have not been resolved - options.language = this._resolveLanguage(options.language); - - // Always fall back to English since it will always be complete - options.language.push('en'); - - var uniqueLanguages = []; - - for (var l = 0; l < options.language.length; l++) { - var language = options.language[l]; - - if (uniqueLanguages.indexOf(language) === -1) { - uniqueLanguages.push(language); - } - } - - options.language = uniqueLanguages; - - options.translations = this._processTranslations( - options.language, - options.debug - ); - - return options; - }; - - Defaults.prototype.reset = function () { - function stripDiacritics (text) { - // Used 'uni range + named function' from http://jsperf.com/diacritics/18 - function match(a) { - return DIACRITICS[a] || a; - } - - return text.replace(/[^\u0000-\u007E]/g, match); - } - - function matcher (params, data) { - // Always return the object if there is nothing to compare - if (params.term == null || params.term.trim() === '') { - return data; - } - - // Do a recursive check for options with children - if (data.children && data.children.length > 0) { - // Clone the data object if there are children - // This is required as we modify the object to remove any non-matches - var match = $.extend(true, {}, data); - - // Check each child of the option - for (var c = data.children.length - 1; c >= 0; c--) { - var child = data.children[c]; - - var matches = matcher(params, child); - - // If there wasn't a match, remove the object in the array - if (matches == null) { - match.children.splice(c, 1); - } - } - - // If any children matched, return the new object - if (match.children.length > 0) { - return match; - } - - // If there were no matching children, check just the plain object - return matcher(params, match); - } - - var original = stripDiacritics(data.text).toUpperCase(); - var term = stripDiacritics(params.term).toUpperCase(); - - // Check if the text contains the term - if (original.indexOf(term) > -1) { - return data; - } - - // If it doesn't contain the term, don't return anything - return null; - } - - this.defaults = { - amdLanguageBase: './i18n/', - autocomplete: 'off', - closeOnSelect: true, - debug: false, - dropdownAutoWidth: false, - escapeMarkup: Utils.escapeMarkup, - language: {}, - matcher: matcher, - minimumInputLength: 0, - maximumInputLength: 0, - maximumSelectionLength: 0, - minimumResultsForSearch: 0, - selectOnClose: false, - scrollAfterSelect: false, - sorter: function (data) { - return data; - }, - templateResult: function (result) { - return result.text; - }, - templateSelection: function (selection) { - return selection.text; - }, - theme: 'default', - width: 'resolve' - }; - }; - - Defaults.prototype.applyFromElement = function (options, $element) { - var optionLanguage = options.language; - var defaultLanguage = this.defaults.language; - var elementLanguage = $element.prop('lang'); - var parentLanguage = $element.closest('[lang]').prop('lang'); - - var languages = Array.prototype.concat.call( - this._resolveLanguage(elementLanguage), - this._resolveLanguage(optionLanguage), - this._resolveLanguage(defaultLanguage), - this._resolveLanguage(parentLanguage) - ); - - options.language = languages; - - return options; - }; - - Defaults.prototype._resolveLanguage = function (language) { - if (!language) { - return []; - } - - if ($.isEmptyObject(language)) { - return []; - } - - if ($.isPlainObject(language)) { - return [language]; - } - - var languages; - - if (!Array.isArray(language)) { - languages = [language]; - } else { - languages = language; - } - - var resolvedLanguages = []; - - for (var l = 0; l < languages.length; l++) { - resolvedLanguages.push(languages[l]); - - if (typeof languages[l] === 'string' && languages[l].indexOf('-') > 0) { - // Extract the region information if it is included - var languageParts = languages[l].split('-'); - var baseLanguage = languageParts[0]; - - resolvedLanguages.push(baseLanguage); - } - } - - return resolvedLanguages; - }; - - Defaults.prototype._processTranslations = function (languages, debug) { - var translations = new Translation(); - - for (var l = 0; l < languages.length; l++) { - var languageData = new Translation(); - - var language = languages[l]; - - if (typeof language === 'string') { - try { - // Try to load it with the original name - languageData = Translation.loadPath(language); - } catch (e) { - try { - // If we couldn't load it, check if it wasn't the full path - language = this.defaults.amdLanguageBase + language; - languageData = Translation.loadPath(language); - } catch (ex) { - // The translation could not be loaded at all. Sometimes this is - // because of a configuration problem, other times this can be - // because of how Select2 helps load all possible translation files - if (debug && window.console && console.warn) { - console.warn( - 'Select2: The language file for "' + language + '" could ' + - 'not be automatically loaded. A fallback will be used instead.' - ); - } - } - } - } else if ($.isPlainObject(language)) { - languageData = new Translation(language); - } else { - languageData = language; - } - - translations.extend(languageData); - } - - return translations; - }; - - Defaults.prototype.set = function (key, value) { - var camelKey = $.camelCase(key); - - var data = {}; - data[camelKey] = value; - - var convertedData = Utils._convertData(data); - - $.extend(true, this.defaults, convertedData); - }; - - var defaults = new Defaults(); - - return defaults; -}); - -S2.define('select2/options',[ - 'jquery', - './defaults', - './utils' -], function ($, Defaults, Utils) { - function Options (options, $element) { - this.options = options; - - if ($element != null) { - this.fromElement($element); - } - - if ($element != null) { - this.options = Defaults.applyFromElement(this.options, $element); - } - - this.options = Defaults.apply(this.options); - } - - Options.prototype.fromElement = function ($e) { - var excludedData = ['select2']; - - if (this.options.multiple == null) { - this.options.multiple = $e.prop('multiple'); - } - - if (this.options.disabled == null) { - this.options.disabled = $e.prop('disabled'); - } - - if (this.options.autocomplete == null && $e.prop('autocomplete')) { - this.options.autocomplete = $e.prop('autocomplete'); - } - - if (this.options.dir == null) { - if ($e.prop('dir')) { - this.options.dir = $e.prop('dir'); - } else if ($e.closest('[dir]').prop('dir')) { - this.options.dir = $e.closest('[dir]').prop('dir'); - } else { - this.options.dir = 'ltr'; - } - } - - $e.prop('disabled', this.options.disabled); - $e.prop('multiple', this.options.multiple); - - if (Utils.GetData($e[0], 'select2Tags')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-select2-tags` attribute has been changed to ' + - 'use the `data-data` and `data-tags="true"` attributes and will be ' + - 'removed in future versions of Select2.' - ); - } - - Utils.StoreData($e[0], 'data', Utils.GetData($e[0], 'select2Tags')); - Utils.StoreData($e[0], 'tags', true); - } - - if (Utils.GetData($e[0], 'ajaxUrl')) { - if (this.options.debug && window.console && console.warn) { - console.warn( - 'Select2: The `data-ajax-url` attribute has been changed to ' + - '`data-ajax--url` and support for the old attribute will be removed' + - ' in future versions of Select2.' - ); - } - - $e.attr('ajax--url', Utils.GetData($e[0], 'ajaxUrl')); - Utils.StoreData($e[0], 'ajax-Url', Utils.GetData($e[0], 'ajaxUrl')); - } - - var dataset = {}; - - function upperCaseLetter(_, letter) { - return letter.toUpperCase(); - } - - // Pre-load all of the attributes which are prefixed with `data-` - for (var attr = 0; attr < $e[0].attributes.length; attr++) { - var attributeName = $e[0].attributes[attr].name; - var prefix = 'data-'; - - if (attributeName.substr(0, prefix.length) == prefix) { - // Get the contents of the attribute after `data-` - var dataName = attributeName.substring(prefix.length); - - // Get the data contents from the consistent source - // This is more than likely the jQuery data helper - var dataValue = Utils.GetData($e[0], dataName); - - // camelCase the attribute name to match the spec - var camelDataName = dataName.replace(/-([a-z])/g, upperCaseLetter); - - // Store the data attribute contents into the dataset since - dataset[camelDataName] = dataValue; - } - } - - // Prefer the element's `dataset` attribute if it exists - // jQuery 1.x does not correctly handle data attributes with multiple dashes - if ($.fn.jquery && $.fn.jquery.substr(0, 2) == '1.' && $e[0].dataset) { - dataset = $.extend(true, {}, $e[0].dataset, dataset); - } - - // Prefer our internal data cache if it exists - var data = $.extend(true, {}, Utils.GetData($e[0]), dataset); - - data = Utils._convertData(data); - - for (var key in data) { - if (excludedData.indexOf(key) > -1) { - continue; - } - - if ($.isPlainObject(this.options[key])) { - $.extend(this.options[key], data[key]); - } else { - this.options[key] = data[key]; - } - } - - return this; - }; - - Options.prototype.get = function (key) { - return this.options[key]; - }; - - Options.prototype.set = function (key, val) { - this.options[key] = val; - }; - - return Options; -}); - -S2.define('select2/core',[ - 'jquery', - './options', - './utils', - './keys' -], function ($, Options, Utils, KEYS) { - var Select2 = function ($element, options) { - if (Utils.GetData($element[0], 'select2') != null) { - Utils.GetData($element[0], 'select2').destroy(); - } - - this.$element = $element; - - this.id = this._generateId($element); - - options = options || {}; - - this.options = new Options(options, $element); - - Select2.__super__.constructor.call(this); - - // Set up the tabindex - - var tabindex = $element.attr('tabindex') || 0; - Utils.StoreData($element[0], 'old-tabindex', tabindex); - $element.attr('tabindex', '-1'); - - // Set up containers and adapters - - var DataAdapter = this.options.get('dataAdapter'); - this.dataAdapter = new DataAdapter($element, this.options); - - var $container = this.render(); - - this._placeContainer($container); - - var SelectionAdapter = this.options.get('selectionAdapter'); - this.selection = new SelectionAdapter($element, this.options); - this.$selection = this.selection.render(); - - this.selection.position(this.$selection, $container); - - var DropdownAdapter = this.options.get('dropdownAdapter'); - this.dropdown = new DropdownAdapter($element, this.options); - this.$dropdown = this.dropdown.render(); - - this.dropdown.position(this.$dropdown, $container); - - var ResultsAdapter = this.options.get('resultsAdapter'); - this.results = new ResultsAdapter($element, this.options, this.dataAdapter); - this.$results = this.results.render(); - - this.results.position(this.$results, this.$dropdown); - - // Bind events - - var self = this; - - // Bind the container to all of the adapters - this._bindAdapters(); - - // Register any DOM event handlers - this._registerDomEvents(); - - // Register any internal event handlers - this._registerDataEvents(); - this._registerSelectionEvents(); - this._registerDropdownEvents(); - this._registerResultsEvents(); - this._registerEvents(); - - // Set the initial state - this.dataAdapter.current(function (initialData) { - self.trigger('selection:update', { - data: initialData - }); - }); - - // Hide the original select - $element[0].classList.add('select2-hidden-accessible'); - $element.attr('aria-hidden', 'true'); - - // Synchronize any monitored attributes - this._syncAttributes(); - - Utils.StoreData($element[0], 'select2', this); - - // Ensure backwards compatibility with $element.data('select2'). - $element.data('select2', this); - }; - - Utils.Extend(Select2, Utils.Observable); - - Select2.prototype._generateId = function ($element) { - var id = ''; - - if ($element.attr('id') != null) { - id = $element.attr('id'); - } else if ($element.attr('name') != null) { - id = $element.attr('name') + '-' + Utils.generateChars(2); - } else { - id = Utils.generateChars(4); - } - - id = id.replace(/(:|\.|\[|\]|,)/g, ''); - id = 'select2-' + id; - - return id; - }; - - Select2.prototype._placeContainer = function ($container) { - $container.insertAfter(this.$element); - - var width = this._resolveWidth(this.$element, this.options.get('width')); - - if (width != null) { - $container.css('width', width); - } - }; - - Select2.prototype._resolveWidth = function ($element, method) { - var WIDTH = /^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i; - - if (method == 'resolve') { - var styleWidth = this._resolveWidth($element, 'style'); - - if (styleWidth != null) { - return styleWidth; - } - - return this._resolveWidth($element, 'element'); - } - - if (method == 'element') { - var elementWidth = $element.outerWidth(false); - - if (elementWidth <= 0) { - return 'auto'; - } - - return elementWidth + 'px'; - } - - if (method == 'style') { - var style = $element.attr('style'); - - if (typeof(style) !== 'string') { - return null; - } - - var attrs = style.split(';'); - - for (var i = 0, l = attrs.length; i < l; i = i + 1) { - var attr = attrs[i].replace(/\s/g, ''); - var matches = attr.match(WIDTH); - - if (matches !== null && matches.length >= 1) { - return matches[1]; - } - } - - return null; - } - - if (method == 'computedstyle') { - var computedStyle = window.getComputedStyle($element[0]); - - return computedStyle.width; - } - - return method; - }; - - Select2.prototype._bindAdapters = function () { - this.dataAdapter.bind(this, this.$container); - this.selection.bind(this, this.$container); - - this.dropdown.bind(this, this.$container); - this.results.bind(this, this.$container); - }; - - Select2.prototype._registerDomEvents = function () { - var self = this; - - this.$element.on('change.select2', function () { - self.dataAdapter.current(function (data) { - self.trigger('selection:update', { - data: data - }); - }); - }); - - this.$element.on('focus.select2', function (evt) { - self.trigger('focus', evt); - }); - - this._syncA = Utils.bind(this._syncAttributes, this); - this._syncS = Utils.bind(this._syncSubtree, this); - - this._observer = new window.MutationObserver(function (mutations) { - self._syncA(); - self._syncS(mutations); - }); - this._observer.observe(this.$element[0], { - attributes: true, - childList: true, - subtree: false - }); - }; - - Select2.prototype._registerDataEvents = function () { - var self = this; - - this.dataAdapter.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerSelectionEvents = function () { - var self = this; - var nonRelayEvents = ['toggle', 'focus']; - - this.selection.on('toggle', function () { - self.toggleDropdown(); - }); - - this.selection.on('focus', function (params) { - self.focus(params); - }); - - this.selection.on('*', function (name, params) { - if (nonRelayEvents.indexOf(name) !== -1) { - return; - } - - self.trigger(name, params); - }); - }; - - Select2.prototype._registerDropdownEvents = function () { - var self = this; - - this.dropdown.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerResultsEvents = function () { - var self = this; - - this.results.on('*', function (name, params) { - self.trigger(name, params); - }); - }; - - Select2.prototype._registerEvents = function () { - var self = this; - - this.on('open', function () { - self.$container[0].classList.add('select2-container--open'); - }); - - this.on('close', function () { - self.$container[0].classList.remove('select2-container--open'); - }); - - this.on('enable', function () { - self.$container[0].classList.remove('select2-container--disabled'); - }); - - this.on('disable', function () { - self.$container[0].classList.add('select2-container--disabled'); - }); - - this.on('blur', function () { - self.$container[0].classList.remove('select2-container--focus'); - }); - - this.on('query', function (params) { - if (!self.isOpen()) { - self.trigger('open', {}); - } - - this.dataAdapter.query(params, function (data) { - self.trigger('results:all', { - data: data, - query: params - }); - }); - }); - - this.on('query:append', function (params) { - this.dataAdapter.query(params, function (data) { - self.trigger('results:append', { - data: data, - query: params - }); - }); - }); - - this.on('keypress', function (evt) { - var key = evt.which; - - if (self.isOpen()) { - if (key === KEYS.ESC || (key === KEYS.UP && evt.altKey)) { - self.close(evt); - - evt.preventDefault(); - } else if (key === KEYS.ENTER || key === KEYS.TAB) { - self.trigger('results:select', {}); - - evt.preventDefault(); - } else if ((key === KEYS.SPACE && evt.ctrlKey)) { - self.trigger('results:toggle', {}); - - evt.preventDefault(); - } else if (key === KEYS.UP) { - self.trigger('results:previous', {}); - - evt.preventDefault(); - } else if (key === KEYS.DOWN) { - self.trigger('results:next', {}); - - evt.preventDefault(); - } - } else { - if (key === KEYS.ENTER || key === KEYS.SPACE || - (key === KEYS.DOWN && evt.altKey)) { - self.open(); - - evt.preventDefault(); - } - } - }); - }; - - Select2.prototype._syncAttributes = function () { - this.options.set('disabled', this.$element.prop('disabled')); - - if (this.isDisabled()) { - if (this.isOpen()) { - this.close(); - } - - this.trigger('disable', {}); - } else { - this.trigger('enable', {}); - } - }; - - Select2.prototype._isChangeMutation = function (mutations) { - var self = this; - - if (mutations.addedNodes && mutations.addedNodes.length > 0) { - for (var n = 0; n < mutations.addedNodes.length; n++) { - var node = mutations.addedNodes[n]; - - if (node.selected) { - return true; - } - } - } else if (mutations.removedNodes && mutations.removedNodes.length > 0) { - return true; - } else if (Array.isArray(mutations)) { - return mutations.some(function (mutation) { - return self._isChangeMutation(mutation); - }); - } - - return false; - }; - - Select2.prototype._syncSubtree = function (mutations) { - var changed = this._isChangeMutation(mutations); - var self = this; - - // Only re-pull the data if we think there is a change - if (changed) { - this.dataAdapter.current(function (currentData) { - self.trigger('selection:update', { - data: currentData - }); - }); - } - }; - - /** - * Override the trigger method to automatically trigger pre-events when - * there are events that can be prevented. - */ - Select2.prototype.trigger = function (name, args) { - var actualTrigger = Select2.__super__.trigger; - var preTriggerMap = { - 'open': 'opening', - 'close': 'closing', - 'select': 'selecting', - 'unselect': 'unselecting', - 'clear': 'clearing' - }; - - if (args === undefined) { - args = {}; - } - - if (name in preTriggerMap) { - var preTriggerName = preTriggerMap[name]; - var preTriggerArgs = { - prevented: false, - name: name, - args: args - }; - - actualTrigger.call(this, preTriggerName, preTriggerArgs); - - if (preTriggerArgs.prevented) { - args.prevented = true; - - return; - } - } - - actualTrigger.call(this, name, args); - }; - - Select2.prototype.toggleDropdown = function () { - if (this.isDisabled()) { - return; - } - - if (this.isOpen()) { - this.close(); - } else { - this.open(); - } - }; - - Select2.prototype.open = function () { - if (this.isOpen()) { - return; - } - - if (this.isDisabled()) { - return; - } - - this.trigger('query', {}); - }; - - Select2.prototype.close = function (evt) { - if (!this.isOpen()) { - return; - } - - this.trigger('close', { originalEvent : evt }); - }; - - /** - * Helper method to abstract the "enabled" (not "disabled") state of this - * object. - * - * @return {true} if the instance is not disabled. - * @return {false} if the instance is disabled. - */ - Select2.prototype.isEnabled = function () { - return !this.isDisabled(); - }; - - /** - * Helper method to abstract the "disabled" state of this object. - * - * @return {true} if the disabled option is true. - * @return {false} if the disabled option is false. - */ - Select2.prototype.isDisabled = function () { - return this.options.get('disabled'); - }; - - Select2.prototype.isOpen = function () { - return this.$container[0].classList.contains('select2-container--open'); - }; - - Select2.prototype.hasFocus = function () { - return this.$container[0].classList.contains('select2-container--focus'); - }; - - Select2.prototype.focus = function (data) { - // No need to re-trigger focus events if we are already focused - if (this.hasFocus()) { - return; - } - - this.$container[0].classList.add('select2-container--focus'); - this.trigger('focus', {}); - }; - - Select2.prototype.enable = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("enable")` method has been deprecated and will' + - ' be removed in later Select2 versions. Use $element.prop("disabled")' + - ' instead.' - ); - } - - if (args == null || args.length === 0) { - args = [true]; - } - - var disabled = !args[0]; - - this.$element.prop('disabled', disabled); - }; - - Select2.prototype.data = function () { - if (this.options.get('debug') && - arguments.length > 0 && window.console && console.warn) { - console.warn( - 'Select2: Data can no longer be set using `select2("data")`. You ' + - 'should consider setting the value instead using `$element.val()`.' - ); - } - - var data = []; - - this.dataAdapter.current(function (currentData) { - data = currentData; - }); - - return data; - }; - - Select2.prototype.val = function (args) { - if (this.options.get('debug') && window.console && console.warn) { - console.warn( - 'Select2: The `select2("val")` method has been deprecated and will be' + - ' removed in later Select2 versions. Use $element.val() instead.' - ); - } - - if (args == null || args.length === 0) { - return this.$element.val(); - } - - var newVal = args[0]; - - if (Array.isArray(newVal)) { - newVal = newVal.map(function (obj) { - return obj.toString(); - }); - } - - this.$element.val(newVal).trigger('input').trigger('change'); - }; - - Select2.prototype.destroy = function () { - Utils.RemoveData(this.$container[0]); - this.$container.remove(); - - this._observer.disconnect(); - this._observer = null; - - this._syncA = null; - this._syncS = null; - - this.$element.off('.select2'); - this.$element.attr('tabindex', - Utils.GetData(this.$element[0], 'old-tabindex')); - - this.$element[0].classList.remove('select2-hidden-accessible'); - this.$element.attr('aria-hidden', 'false'); - Utils.RemoveData(this.$element[0]); - this.$element.removeData('select2'); - - this.dataAdapter.destroy(); - this.selection.destroy(); - this.dropdown.destroy(); - this.results.destroy(); - - this.dataAdapter = null; - this.selection = null; - this.dropdown = null; - this.results = null; - }; - - Select2.prototype.render = function () { - var $container = $( - '' + - '' + - '' + - '' - ); - - $container.attr('dir', this.options.get('dir')); - - this.$container = $container; - - this.$container[0].classList - .add('select2-container--' + this.options.get('theme')); - - Utils.StoreData($container[0], 'element', this.$element); - - return $container; - }; - - return Select2; -}); - -S2.define('jquery-mousewheel',[ - 'jquery' -], function ($) { - // Used to shim jQuery.mousewheel for non-full builds. - return $; -}); - -S2.define('jquery.select2',[ - 'jquery', - 'jquery-mousewheel', - - './select2/core', - './select2/defaults', - './select2/utils' -], function ($, _, Select2, Defaults, Utils) { - if ($.fn.select2 == null) { - // All methods that should return the element - var thisMethods = ['open', 'close', 'destroy']; - - $.fn.select2 = function (options) { - options = options || {}; - - if (typeof options === 'object') { - this.each(function () { - var instanceOptions = $.extend(true, {}, options); - - var instance = new Select2($(this), instanceOptions); - }); - - return this; - } else if (typeof options === 'string') { - var ret; - var args = Array.prototype.slice.call(arguments, 1); - - this.each(function () { - var instance = Utils.GetData(this, 'select2'); - - if (instance == null && window.console && console.error) { - console.error( - 'The select2(\'' + options + '\') method was called on an ' + - 'element that is not using Select2.' - ); - } - - ret = instance[options].apply(instance, args); - }); - - // Check if we should be returning `this` - if (thisMethods.indexOf(options) > -1) { - return this; - } - - return ret; - } else { - throw new Error('Invalid arguments for Select2: ' + options); - } - }; - } - - if ($.fn.select2.defaults == null) { - $.fn.select2.defaults = Defaults; - } - - return Select2; -}); - - // Return the AMD loader configuration so it can be used outside of this file - return { - define: S2.define, - require: S2.require - }; -}()); - - // Autoload the jQuery bindings - // We know that all of the modules exist above this, so we're safe - var select2 = S2.require('jquery.select2'); - - // Hold the AMD module references on the jQuery function that was just loaded - // This allows Select2 to use the internal loader outside of this file, such - // as in the language files. - jQuery.fn.select2.amd = S2; - - // Return the Select2 instance for anyone who is importing it. - return select2; -})); - - -/***/ }) - -}]); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVuZG9ycy1ub2RlX21vZHVsZXNfYm9vdHN0cmFwLWF1dG9jb21wbGV0ZV9kaXN0X2xhdGVzdF9ib290c3RyYXAtYXV0b2NvbXBsZXRlX2pzLW5vZGVfbW9kdWxlLTRhYTAyZi5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUErRDtBQUNOO0FBQ1E7QUFDSjtBQUNFO0FBQ1I7QUFDWjtBQUNrQjtBQUNsQjtBQUNnQjtBQUNWO0FBQ007QUFDRDtBQUNwQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHNFQUFzRSxhQUFhO0FBQ25GO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFTztBQUNQO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsK0JBQStCO0FBQy9CLHVCQUF1QjtBQUN2QjtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1Asb0JBQW9CO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QztBQUN4QztBQUNBLHFCQUFxQixtRUFBUyxjQUFjLDJFQUFpQix5Q0FBeUMsMkVBQWlCO0FBQ3ZILGtCQUFrQiwyRUFBaUI7QUFDbkMsV0FBVztBQUNYOztBQUVBLCtCQUErQixvRUFBYyxDQUFDLGlFQUFXLHlEQUF5RDs7QUFFbEg7QUFDQTtBQUNBLFNBQVMsR0FBRztBQUNaOztBQUVBLFlBQVksSUFBcUM7QUFDakQsMEJBQTBCLDhEQUFRO0FBQ2xDO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVSx1RUFBaUI7O0FBRTNCLGNBQWMsc0VBQWdCLDhCQUE4QiwyQ0FBSTtBQUNoRTtBQUNBO0FBQ0E7QUFDQSxhQUFhOztBQUViO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtDQUFrQywwRUFBZ0I7QUFDbEQ7QUFDQTtBQUNBO0FBQ0EseURBQXlEO0FBQ3pEOzs7QUFHQTtBQUNBO0FBQ0EsV0FBVztBQUNYO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0EsY0FBYyxJQUFxQztBQUNuRDtBQUNBOztBQUVBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQSxxQkFBcUIsMEVBQWdCLFlBQVksMEVBQWU7QUFDaEUsa0JBQWtCLHdFQUFhO0FBQy9CLFdBQVc7QUFDWDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG1EQUFtRDtBQUNuRDtBQUNBO0FBQ0EsNkNBQTZDLEtBQUs7O0FBRWxEO0FBQ0Esc0VBQXNFO0FBQ3RFLFNBQVM7QUFDVDs7QUFFQSw0QkFBNEIsdUNBQXVDO0FBQ25FLGNBQWMsSUFBcUM7QUFDbkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGdFQUFnRTtBQUNoRTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxhQUFhO0FBQ2I7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBO0FBQ0EsY0FBYywrREFBUTtBQUN0QjtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxVQUFVLElBQXFDO0FBQy9DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUssR0FBRztBQUNSO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esb0RBQW9EO0FBQ3BEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7O0FBRVg7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDTyxtREFBbUQ7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2hRWDtBQUNoQztBQUNmLDJEQUEyRDs7QUFFM0Q7QUFDQTtBQUNBLElBQUk7QUFDSix1QkFBdUIsNERBQVk7QUFDbkM7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsVUFBVTs7O0FBR1Y7QUFDQSxRQUFRO0FBQ1IsTUFBTTs7O0FBR047QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3RCMkQ7QUFDbEI7QUFDRjtBQUNjO0FBQ3RDO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCLDZEQUFhO0FBQ25DLHVDQUF1QyxxREFBSztBQUM1Qyx3Q0FBd0MscURBQUs7QUFDN0M7O0FBRUEsYUFBYSx5REFBUyxZQUFZLHlEQUFTO0FBQzNDOztBQUVBLDBCQUEwQixnRUFBZ0I7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3hDdUM7QUFDWTtBQUNBO0FBQ0k7QUFDSjtBQUNNO0FBQ0o7QUFDTTtBQUNJO0FBQ2hCO0FBQ1Y7QUFDTTtBQUNpQjtBQUNoQjs7QUFFNUM7QUFDQSxhQUFhLHFFQUFxQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDRCQUE0QiwrQ0FBUSxHQUFHLHNFQUFnQixDQUFDLCtEQUFlLHVCQUF1Qix5REFBUywwRUFBMEUsc0VBQWdCLENBQUMsK0RBQWUsQ0FBQyxrRUFBa0I7QUFDcE8sRUFBRTtBQUNGO0FBQ0E7OztBQUdBO0FBQ0Esd0JBQXdCLGlFQUFpQixDQUFDLDZEQUFhO0FBQ3ZELHdEQUF3RCxnRUFBZ0I7QUFDeEUsNENBQTRDLDZEQUFhLFlBQVksZ0VBQWU7O0FBRXBGLE9BQU8seURBQVM7QUFDaEI7QUFDQSxJQUFJOzs7QUFHSjtBQUNBLFdBQVcseURBQVMsb0JBQW9CLHlEQUFRLG9DQUFvQyw0REFBVztBQUMvRixHQUFHO0FBQ0gsRUFBRTtBQUNGOzs7QUFHZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0Isb0RBQUc7QUFDckIsb0JBQW9CLG9EQUFHO0FBQ3ZCLHFCQUFxQixvREFBRztBQUN4QixtQkFBbUIsb0RBQUc7QUFDdEI7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3JFK0Q7QUFDaEI7QUFDSjtBQUNLO0FBQ1c7QUFDRjtBQUNSO0FBQ1I7O0FBRXpDO0FBQ0E7QUFDQSxlQUFlLHFEQUFLO0FBQ3BCLGVBQWUscURBQUs7QUFDcEI7QUFDQSxFQUFFO0FBQ0Y7OztBQUdlO0FBQ2Y7QUFDQTtBQUNBOztBQUVBLGdDQUFnQyw2REFBYTtBQUM3Qyw2QkFBNkIsNkRBQWE7QUFDMUMsd0JBQXdCLGtFQUFrQjtBQUMxQyxhQUFhLHFFQUFxQjtBQUNsQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsUUFBUSwyREFBVztBQUNuQixJQUFJLDhEQUFjO0FBQ2xCLGVBQWUsNkRBQWE7QUFDNUI7O0FBRUEsUUFBUSw2REFBYTtBQUNyQixnQkFBZ0IscUVBQXFCO0FBQ3JDO0FBQ0E7QUFDQSxNQUFNO0FBQ04sa0JBQWtCLG1FQUFtQjtBQUNyQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDekR1QztBQUN4QjtBQUNmLFNBQVMseURBQVM7QUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7QUNINEM7QUFDN0I7QUFDZjtBQUNBLFdBQVcseURBQVM7QUFDcEI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMeUQ7QUFDSjtBQUNNO0FBQ1I7QUFDWixDQUFDO0FBQ3hDOztBQUVlO0FBQ2Y7O0FBRUEsYUFBYSxrRUFBa0I7QUFDL0Isa0JBQWtCLCtEQUFlO0FBQ2pDO0FBQ0EsY0FBYyxtREFBRztBQUNqQixlQUFlLG1EQUFHO0FBQ2xCLGtDQUFrQyxtRUFBbUI7QUFDckQ7O0FBRUEsTUFBTSxnRUFBZ0I7QUFDdEIsU0FBUyxtREFBRztBQUNaOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUM1QmU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7O0FDTCtELENBQUM7QUFDaEU7O0FBRWU7QUFDZixtQkFBbUIscUVBQXFCLFdBQVc7QUFDbkQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUN4QmU7QUFDZjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRm1EO0FBQ1o7QUFDUztBQUNhO0FBQzlDO0FBQ2YsZUFBZSx5REFBUyxXQUFXLDZEQUFhO0FBQ2hELFdBQVcsK0RBQWU7QUFDMUIsSUFBSTtBQUNKLFdBQVcsb0VBQW9CO0FBQy9CO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNWdUM7QUFDSTtBQUNVO0FBQ1M7QUFDYjtBQUNGO0FBQ0M7O0FBRWhEO0FBQ0EsT0FBTyw2REFBYTtBQUNwQixFQUFFLGdFQUFnQjtBQUNsQjtBQUNBOztBQUVBO0FBQ0EsRUFBRTtBQUNGOzs7QUFHQTtBQUNBLGtDQUFrQywrREFBVztBQUM3Qyw2QkFBNkIsK0RBQVc7O0FBRXhDLGNBQWMsNkRBQWE7QUFDM0I7QUFDQSxxQkFBcUIsZ0VBQWdCOztBQUVyQztBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsNkRBQWE7O0FBRWpDLE1BQU0sNERBQVk7QUFDbEI7QUFDQTs7QUFFQSxTQUFTLDZEQUFhLDBDQUEwQywyREFBVztBQUMzRSxjQUFjLGdFQUFnQixlQUFlO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFO0FBQ0Y7OztBQUdlO0FBQ2YsZUFBZSx5REFBUztBQUN4Qjs7QUFFQSx5QkFBeUIsOERBQWMsa0JBQWtCLGdFQUFnQjtBQUN6RTtBQUNBOztBQUVBLHVCQUF1QiwyREFBVyw2QkFBNkIsMkRBQVcsNkJBQTZCLGdFQUFnQjtBQUN2SDtBQUNBOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ3BFMkM7QUFDYztBQUNWO0FBQ2hDO0FBQ2YsTUFBTSwyREFBVztBQUNqQjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJLDREQUFZO0FBQ2hCO0FBQ0EsSUFBSSxrRUFBa0I7O0FBRXRCO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNsQitDO0FBQ0U7QUFDTjtBQUNLO0FBQ2pDO0FBQ2YsNENBQTRDLDJEQUFXO0FBQ3ZEO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLDZEQUFhLFVBQVUsOERBQWM7QUFDM0M7QUFDQTs7QUFFQSx5QkFBeUIsNkRBQWE7QUFDdEM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNmdUM7QUFDa0I7QUFDRTtBQUNOO0FBQ3RDO0FBQ2YsWUFBWSx5REFBUztBQUNyQixhQUFhLGtFQUFrQjtBQUMvQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHlCQUF5QixnRUFBZ0I7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyxtRUFBbUI7QUFDOUI7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUM5QmU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ1h1QztBQUN4QjtBQUNmLFlBQVkseURBQVM7QUFDckI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1QrRDtBQUNOO0FBQ047QUFDcEM7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVMscUVBQXFCLENBQUMsa0VBQWtCLGtCQUFrQiwrREFBZTtBQUNsRjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDWnVDOztBQUV2QztBQUNBLG1CQUFtQix5REFBUztBQUM1QjtBQUNBOztBQUVBO0FBQ0EsbUJBQW1CLHlEQUFTO0FBQzVCO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIseURBQVM7QUFDNUI7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEJnRDtBQUNqQztBQUNmLGdEQUFnRCwrREFBVztBQUMzRDs7Ozs7Ozs7Ozs7Ozs7OztBQ0hxRDtBQUN0QztBQUNmO0FBQ0EsMEJBQTBCLGdFQUFnQjtBQUMxQztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7OztBQ1QyQztBQUM1QjtBQUNmLHVDQUF1QywyREFBVztBQUNsRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ0htRDtBQUNKO0FBQ1I7QUFDVTtBQUNqRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRWU7QUFDZjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEscUJBQXFCLCtEQUFlO0FBQ3BDO0FBQ0EsWUFBWSx5REFBUztBQUNyQiwrREFBK0QsOERBQWM7QUFDN0U7QUFDQTtBQUNBLHVDQUF1Qyw2REFBYTtBQUNwRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN6Qk87QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDUDtBQUNBLENBQUM7QUFDTTtBQUNQO0FBQ0EsQ0FBQyxPQUFPOztBQUVEO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDOUJvQjtBQUNVLENBQUM7O0FBRWdFLENBQUM7O0FBRTVELENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNMVTtBQUNLLENBQUM7QUFDNUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3Qzs7QUFFeEMsU0FBUyx1RUFBYSxjQUFjLHFFQUFXO0FBQy9DO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSx1SEFBdUg7O0FBRXZIO0FBQ0E7QUFDQTtBQUNBLE9BQU8sSUFBSSxHQUFHOztBQUVkLFdBQVcsdUVBQWEsY0FBYyxxRUFBVztBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLO0FBQ0w7QUFDQSxFQUFFOzs7QUFHRixpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNuRjJEO0FBQ0Y7QUFDVjtBQUNjO0FBQ2M7QUFDaEM7QUFDb0I7QUFDTjtBQUNhO0FBQ1osQ0FBQzs7QUFFNUQ7QUFDQSxvRUFBb0U7QUFDcEU7QUFDQSxHQUFHO0FBQ0gsU0FBUyx3RUFBa0IseUNBQXlDLHFFQUFlLFVBQVUscURBQWM7QUFDM0c7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCLHNFQUFnQjtBQUN0QyxhQUFhLDhFQUF3QjtBQUNyQyxvQkFBb0IsMkNBQUksRUFBRSw0Q0FBSztBQUMvQjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxrQkFBa0IsdUVBQWE7QUFDL0IsK0JBQStCLDBDQUFHLEdBQUcsMkNBQUk7QUFDekMsK0JBQStCLDZDQUFNLEdBQUcsNENBQUs7QUFDN0M7QUFDQTtBQUNBLDBCQUEwQix5RUFBZTtBQUN6QztBQUNBLHVEQUF1RDtBQUN2RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLHdEQUFNLG9CQUFvQjs7QUFFekM7QUFDQSx5REFBeUQ7QUFDekQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLElBQXFDO0FBQzNDLFNBQVMsdUVBQWE7QUFDdEI7QUFDQTtBQUNBOztBQUVBLE9BQU8sa0VBQVE7QUFDZixRQUFRLElBQXFDO0FBQzdDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEVBQUU7OztBQUdGLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwRzJEO0FBQ0U7QUFDWjtBQUNrQjtBQUNKO0FBQ0o7QUFDUjtBQUNYLENBQUM7O0FBRTFDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPLHFEQUFLO0FBQ1osT0FBTyxxREFBSztBQUNaO0FBQ0E7O0FBRU87QUFDUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxjQUFjLDJDQUFJO0FBQ2xCLGNBQWMsMENBQUc7QUFDakI7O0FBRUE7QUFDQSx1QkFBdUIseUVBQWU7QUFDdEM7QUFDQTs7QUFFQSx5QkFBeUIsbUVBQVM7QUFDbEMscUJBQXFCLDRFQUFrQjs7QUFFdkMsVUFBVSwwRUFBZ0I7QUFDMUI7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047O0FBRUEsc0JBQXNCLDBDQUFHLG1CQUFtQiwyQ0FBSSxrQkFBa0IsNENBQUssbUJBQW1CLDBDQUFHO0FBQzdGLGNBQWMsNkNBQU07QUFDcEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0IsMkNBQUksbUJBQW1CLDBDQUFHLGtCQUFrQiw2Q0FBTSxtQkFBbUIsMENBQUc7QUFDOUYsY0FBYyw0Q0FBSztBQUNuQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsMkJBQTJCLG9DQUFvQztBQUMvRDs7QUFFQSx5QkFBeUIscUNBQXFDO0FBQzlEOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxNQUFNLElBQXFDO0FBQzNDLDZCQUE2QiwwRUFBZ0I7O0FBRTdDO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZUFBZSxzRUFBZ0I7QUFDL0IsZUFBZSxrRUFBWTtBQUMzQjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDLG1EQUFtRDtBQUM3RjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLHlDQUF5QyxrREFBa0Q7QUFDM0Y7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUEsNENBQTRDO0FBQzVDO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7QUNwTGlELENBQUM7O0FBRW5EO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsZUFBZSxtRUFBUztBQUN4Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsRUFBRTs7O0FBR0YsaUVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxzQkFBc0I7QUFDdEI7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRG1FO0FBQ1I7QUFDMEI7QUFDOUI7QUFDWTtBQUNBO0FBQ2hCLENBQUM7O0FBRXJEO0FBQ0EsTUFBTSxzRUFBZ0IsZ0JBQWdCLDJDQUFJO0FBQzFDO0FBQ0E7O0FBRUEsMEJBQTBCLDBFQUFvQjtBQUM5QyxVQUFVLG1GQUE2QixnQ0FBZ0MsbUZBQTZCO0FBQ3BHOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixzRUFBZ0I7QUFDdEM7QUFDQSxpR0FBaUcsMEVBQW9CO0FBQ3JIO0FBQ0Esc0JBQXNCLHNFQUFnQixnQkFBZ0IsMkNBQUksR0FBRywwRUFBb0I7QUFDakY7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGtCQUFrQix1QkFBdUI7QUFDekM7O0FBRUEseUJBQXlCLHNFQUFnQjs7QUFFekMsMkJBQTJCLGtFQUFZLGdCQUFnQiw0Q0FBSztBQUM1RCxzQkFBc0IsMENBQUcsRUFBRSw2Q0FBTTtBQUNqQztBQUNBLG1CQUFtQixvRUFBYztBQUNqQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDREQUE0RCw0Q0FBSyxHQUFHLDJDQUFJLHNCQUFzQiw2Q0FBTSxHQUFHLDBDQUFHOztBQUUxRztBQUNBLDBCQUEwQiwwRUFBb0I7QUFDOUM7O0FBRUEsMkJBQTJCLDBFQUFvQjtBQUMvQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDtBQUNBLE9BQU87O0FBRVA7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxrQ0FBa0MsUUFBUTtBQUMxQzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7OztBQUdGLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDbEpzRDtBQUNDOztBQUV4RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVUsMENBQUcsRUFBRSw0Q0FBSyxFQUFFLDZDQUFNLEVBQUUsMkNBQUk7QUFDbEM7QUFDQSxHQUFHO0FBQ0g7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCLG9FQUFjO0FBQ3hDO0FBQ0EsR0FBRztBQUNILDBCQUEwQixvRUFBYztBQUN4QztBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDRDQUE0QztBQUM1QztBQUNBO0FBQ0EsR0FBRztBQUNILEVBQUU7OztBQUdGLGlFQUFlO0FBQ2Y7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDNUR5RDtBQUNaO0FBQ2dCO0FBQ0U7QUFDcEI7QUFDQTtBQUNJO0FBQ2M7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNQRjtBQUNELENBQUM7O0FBRXJEO0FBQ1Asc0JBQXNCLHNFQUFnQjtBQUN0Qyx3QkFBd0IsMkNBQUksRUFBRSwwQ0FBRzs7QUFFakMsbUVBQW1FO0FBQ25FO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVUsMkNBQUksRUFBRSw0Q0FBSztBQUNyQjtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGFBQWEsd0RBQWlCO0FBQzlCO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRixpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7O0FDckR1RDs7QUFFeEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw4QkFBOEIsb0VBQWM7QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsRUFBRTs7O0FBR0YsaUVBQWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4QjZEO0FBQ0Y7QUFDZ0I7QUFDNUI7QUFDWTtBQUNGO0FBQ0k7QUFDTjtBQUNKO0FBQ1k7QUFDRTs7QUFFbEU7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpQkFBaUIsb0VBQWM7QUFDL0I7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0gsc0JBQXNCLHNFQUFnQjtBQUN0QyxrQkFBa0Isa0VBQVk7QUFDOUI7QUFDQSxpQkFBaUIsOEVBQXdCO0FBQ3pDLGdCQUFnQixnRUFBVTtBQUMxQjtBQUNBO0FBQ0E7QUFDQSw0RkFBNEY7QUFDNUY7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSxzQ0FBc0MsMENBQUcsR0FBRywyQ0FBSTtBQUNoRCxxQ0FBcUMsNkNBQU0sR0FBRyw0Q0FBSztBQUNuRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsK0JBQStCLDRDQUFLO0FBQ3BDLCtCQUErQiw0Q0FBSywyQ0FBMkM7QUFDL0U7O0FBRUE7QUFDQSw2Q0FBNkMsdUVBQWE7QUFDMUQ7QUFDQTtBQUNBO0FBQ0EseUhBQXlILHdFQUFrQjtBQUMzSTtBQUNBLHVEQUF1RDtBQUN2RDtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxtQkFBbUIsd0RBQU07QUFDekI7QUFDQTtBQUNBLG9EQUFvRCx5RUFBZTtBQUNuRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQix3REFBTSxVQUFVLG9EQUFPLHlDQUF5QyxvREFBTztBQUNqRztBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSx1Q0FBdUMsMENBQUcsR0FBRywyQ0FBSTs7QUFFakQsc0NBQXNDLDZDQUFNLEdBQUcsNENBQUs7O0FBRXBEOztBQUVBOztBQUVBOztBQUVBOztBQUVBLHdCQUF3QiwwQ0FBRyxFQUFFLDJDQUFJOztBQUVqQzs7QUFFQTs7QUFFQTs7QUFFQSxvREFBb0QsZ0VBQWMsb0NBQW9DLHdEQUFNOztBQUU1RztBQUNBO0FBQ0E7O0FBRUE7QUFDQSxFQUFFOzs7QUFHRixpRUFBZTtBQUNmO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM3SW1FO0FBQ1Q7QUFDRjtBQUNBO0FBQ0o7QUFDckQsd0JBQXdCLG9FQUFjLEVBQUUsbUVBQWEsRUFBRSxtRUFBYSxFQUFFLGlFQUFXO0FBQ2pGLGdDQUFnQyxpRUFBZTtBQUMvQztBQUNBLENBQUMsR0FBRzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ1JnRTtBQUNUO0FBQ0Y7QUFDQTtBQUNKO0FBQ1Y7QUFDSjtBQUNzQjtBQUNwQjtBQUNGO0FBQ3ZDLHdCQUF3QixvRUFBYyxFQUFFLG1FQUFhLEVBQUUsbUVBQWEsRUFBRSxpRUFBVyxFQUFFLDREQUFNLEVBQUUsMERBQUksRUFBRSxxRUFBZSxFQUFFLDJEQUFLLEVBQUUsMERBQUk7QUFDN0gsZ0NBQWdDLGlFQUFlO0FBQy9DO0FBQ0EsQ0FBQyxHQUFHOztBQUV1RSxDQUFDOztBQUVSLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQ2pCeEI7QUFDa0Q7QUFDOUM7QUFDSTtBQUN0QztBQUNmO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlFQUFpRSxpREFBYTtBQUM5RSxrQkFBa0IsNERBQVk7QUFDOUIsZ0RBQWdELDBEQUFtQixHQUFHLGlFQUEwQjtBQUNoRyxXQUFXLDREQUFZO0FBQ3ZCLEdBQUcsSUFBSSxxREFBYztBQUNyQjtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBOztBQUVBLFFBQVEsSUFBcUM7QUFDN0M7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0EscUJBQXFCLDhEQUFjO0FBQ25DO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxFQUFFLGdFQUFnQjtBQUN2QjtBQUNBLEdBQUcsSUFBSTtBQUNQO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUM5Q3FEO0FBQ1I7QUFDd0I7QUFDRjtBQUNwRDtBQUNmO0FBQ0E7QUFDQTtBQUNBLGtDQUFrQyxnRUFBZ0I7QUFDbEQsOEJBQThCLDREQUFZO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVMsMENBQUc7QUFDWjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsNkNBQU07QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsNENBQUs7QUFDZDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLFNBQVMsMkNBQUk7QUFDYjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxpQ0FBaUMsd0VBQXdCOztBQUV6RDtBQUNBOztBQUVBO0FBQ0EsV0FBVyw0Q0FBSztBQUNoQjtBQUNBOztBQUVBLFdBQVcsMENBQUc7QUFDZDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNyRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNkOEQ7QUFDTTtBQUNNO0FBQ3pCO0FBQ0k7QUFDMEQ7QUFDeEQ7QUFDRTtBQUNOLENBQUM7O0FBRXJDO0FBQ2Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdEQUFnRCxzREFBZTtBQUMvRDtBQUNBLHdEQUF3RCwrQ0FBUTtBQUNoRTtBQUNBLDBEQUEwRCw2Q0FBTTtBQUNoRTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHNCQUFzQixrRUFBa0IseUNBQXlDLCtEQUFlLFVBQVUscURBQWM7QUFDeEgsc0NBQXNDLDZDQUFNLEdBQUcsZ0RBQVMsR0FBRyw2Q0FBTTtBQUNqRTtBQUNBO0FBQ0EsMkJBQTJCLHlFQUFlLENBQUMsbUVBQVMsZ0RBQWdELDRFQUFrQjtBQUN0SCw0QkFBNEIsK0VBQXFCO0FBQ2pELHNCQUFzQiw4REFBYztBQUNwQztBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSCx5QkFBeUIsZ0VBQWdCLGlCQUFpQjtBQUMxRCw2Q0FBNkMsNkNBQU0sMkNBQTJDO0FBQzlGOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLCtDQUErQzs7QUFFL0MseUJBQXlCLDZDQUFNO0FBQy9CO0FBQ0E7QUFDQSxzQkFBc0IsNENBQUssRUFBRSw2Q0FBTTtBQUNuQyxrQkFBa0IsMENBQUcsRUFBRSw2Q0FBTTtBQUM3QjtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNoRWU7QUFDZjtBQUNBO0FBQ0E7QUFDQSxHQUFHLElBQUk7QUFDUDs7Ozs7Ozs7Ozs7Ozs7O0FDTGU7QUFDZix5RkFBeUYsYUFBYTtBQUN0RztBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQ1JlO0FBQ2Y7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDRm1DO0FBQ3BCO0FBQ2Y7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDSGU7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDUGU7QUFDZjtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNGQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDZTtBQUNmO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQ1ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7QUNSZTtBQUNmO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDRk87QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNGUTtBQUNmO0FBQ0E7QUFDQSxzREFBc0Q7QUFDdEQsK0JBQStCO0FBQy9CLDRCQUE0QjtBQUM1QixLQUFLO0FBQ0w7QUFDQSxHQUFHLElBQUksR0FBRzs7QUFFVjtBQUNBO0FBQ0EsR0FBRztBQUNIOzs7Ozs7Ozs7Ozs7Ozs7O0FDYnlEO0FBQzFDO0FBQ2YseUJBQXlCLEVBQUUsa0VBQWtCO0FBQzdDOzs7Ozs7Ozs7Ozs7Ozs7O0FDSDZDLENBQUM7O0FBRTlDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRWU7QUFDZjtBQUNBLDJDQUEyQzs7QUFFM0MsU0FBUyw0REFBcUI7QUFDOUI7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQzNDZTtBQUNmLHlCQUF5QjtBQUN6QjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7O0FDUGU7QUFDZjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7Ozs7Ozs7Ozs7Ozs7OztBQ1ZlO0FBQ2Y7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDVmlDO0FBQ1k7QUFDN0M7QUFDQTtBQUNBO0FBQ2U7QUFDZjtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQU07QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDBCQUEwQixzREFBTTtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBLGNBQWMsNkRBQXNCO0FBQ3BDLDBCQUEwQixzREFBTSwrREFBK0QsMERBQW1CO0FBQ2xIOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQU07QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLDBCQUEwQixzREFBTTtBQUNoQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsMEJBQTBCLHNEQUFNO0FBQ2hDOztBQUVBOztBQUVBO0FBQ0E7QUFDQSwwQkFBMEIsc0RBQU07QUFDaEM7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsa0JBQWtCO0FBQzdCOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCx3QkFBd0Isc0RBQU07QUFDOUI7QUFDQSxPQUFPO0FBQ1AsS0FBSztBQUNMLEdBQUc7QUFDSDs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNoRjJEO0FBQ3BEO0FBQ1AsU0FBUyw2Q0FBTyxNQUFNLDZDQUFPO0FBQzdCO0FBQ087QUFDUDtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ1BBLGFBQWEsU0FBUyxjQUFjLDRCQUE0QixZQUFZLHFCQUFxQiwyREFBMkQsZ0NBQWdDLHFDQUFxQyxvQkFBb0IsRUFBRSxpQkFBaUIsNEZBQTRGLGVBQWUsd0NBQXdDLFNBQVMsRUFBRSxtQkFBbUIsOEJBQThCLHFEQUFxRCwwQkFBMEIsNkNBQTZDLHNCQUFzQiw2REFBNkQsWUFBWSxlQUFlLFNBQVMsaUJBQWlCLGlDQUFpQyxpQkFBaUIsWUFBWSxVQUFVLHNCQUFzQixtQkFBbUIsaURBQWlELGlCQUFpQixrQkFBa0IsYUFBYSx3Q0FBd0MsU0FBUyxHQUFHLHlCQUF5QixpQ0FBaUMsYUFBYSxnQ0FBZ0MsY0FBYyxnQkFBZ0IsZ0RBQWdELE9BQU8sZUFBZSxhQUFhLG1CQUFtQiw2RUFBNkUsZ0JBQWdCLGNBQWMsNEJBQTRCLGlEQUFpRCxPQUFPLDZDQUE2Qyx1Q0FBdUMsa0NBQWtDLFdBQVcscUNBQXFDLFNBQVMsNkJBQTZCLENBQUMsd0lBQXdJLFFBQVEsQ0FBQyx1QkFBdUIsNkRBQTZELDRCQUE0QixLQUFLLDZCQUE2QixNQUFNLDhDQUE4Qyw4QkFBOEIsYUFBYSxHQUFHLG9DQUFvQyxHQUFHLFlBQVksY0FBYyxlQUFlLENBQUMsYUFBYSx1QkFBdUIsMENBQTBDLFNBQVMsd0NBQXdDLG9CQUFvQixrQ0FBa0MscUJBQXFCLEdBQUcsaUJBQWlCLG9CQUFvQix5SUFBeUksbUNBQW1DLGFBQWEsQ0FBQyxVQUFVLHVCQUF1QixpQ0FBaUMsRUFBRSxTQUFTLENBQUMsbUhBQW1ILDJFQUEyRSx3Q0FBd0MsTUFBTSxDQUFDLCtCQUErQiw2QkFBNkIsb0NBQW9DLFlBQVksZ0JBQWdCLGdDQUFnQyxVQUFVLHlDQUF5QyxpQkFBaUIseUNBQXlDLGlCQUFpQiw4Q0FBOEMsZ0JBQWdCLENBQUMsd0VBQXdFLENBQUMscURBQXFELDhDQUE4QyxlQUFlLHVCQUF1Qix5Q0FBeUMsOEJBQThCLGtEQUFrRCxlQUFlLHNCQUFzQiwrQkFBK0IscURBQXFELGVBQWUsd0JBQXdCLCtCQUErQixtREFBbUQsZUFBZSwyQkFBMkIsK0JBQStCLHdDQUF3QyxxQkFBcUIsdURBQXVELHlIQUF5SCwwQ0FBMEMsdUJBQXVCLHdDQUF3Qyw0Q0FBNEMsb0RBQW9ELGVBQWUsOERBQThELCtCQUErQiw4QkFBOEIsdURBQXVELGdDQUFnQyxrQkFBa0IsNkJBQTZCLHVEQUF1RCx1Q0FBdUMsc0RBQXNELDJDQUEyQywrQ0FBK0MsU0FBUyxpQkFBaUIseURBQXlELFNBQVMsd0NBQXdDLFdBQVcseUNBQXlDLFNBQVMsdURBQXVELDBCQUEwQix3QkFBd0IsT0FBTyxzRUFBc0UsbUJBQW1CLENBQUMsVUFBVSxTQUFTLENBQUMsc0ZBQXNGLEdBQUcsS0FBSyxNQUFNLENBQUMsVUFBVSxTQUFTLENBQUMsbUZBQW1GLG1CQUFtQixpREFBaUQsMkNBQTJDLEdBQUcsZ0JBQWdCLG9CQUFvQix5SUFBeUksdUNBQXVDLE9BQU8sQ0FBQyxVQUFVLHVCQUF1QixpQ0FBaUMsRUFBRSw2QkFBNkIsNkJBQTZCLFNBQVMsQ0FBQyxvSEFBb0gsMkVBQTJFLG9EQUFvRCxNQUFNLENBQUMsK0JBQStCLGdEQUFnRCxvQ0FBb0MsWUFBWSxnQkFBZ0IsZ0NBQWdDLFVBQVUseUNBQXlDLGlCQUFpQix5Q0FBeUMsaUJBQWlCLDBEQUEwRCxnQkFBZ0IsQ0FBQyxxRkFBcUYsQ0FBQyxxREFBcUQsMERBQTBELGVBQWUsdUJBQXVCLHlDQUF5Qyw4QkFBOEIsa0RBQWtELGVBQWUsc0JBQXNCLCtCQUErQixxREFBcUQsZUFBZSx3QkFBd0IsK0JBQStCLG1EQUFtRCxlQUFlLDJCQUEyQiwrQkFBK0Isd0NBQXdDLHFCQUFxQixtRUFBbUUsaUpBQWlKLDBDQUEwQyx1QkFBdUIsd0NBQXdDLHdEQUF3RCxvREFBb0QsZUFBZSxvRkFBb0YsK0JBQStCLDhCQUE4QixnQkFBZ0IsZ0JBQWdCLG9GQUFvRixnQ0FBZ0Msa0JBQWtCLDZCQUE2QixxR0FBcUcsdUNBQXVDLHNEQUFzRCwyQ0FBMkMsK0NBQStDLFNBQVMsaUJBQWlCLHlEQUF5RCxTQUFTLHdDQUF3QyxXQUFXLHlDQUF5QyxTQUFTLHVEQUF1RCwwQkFBMEIsd0JBQXdCLE9BQU8sc0VBQXNFLG1CQUFtQixDQUFDLFNBQVMsaUNBQWlDLDZDQUE2Qyw2REFBNkQsa0NBQWtDLDRDQUE0QyxLQUFLLE1BQU0sQ0FBQyxTQUFTLHdHQUF3RyxpREFBaUQsMkNBQTJDLEdBQUcsZ0JBQWdCLGdCQUFnQixnSEFBZ0gsbUNBQW1DLDZKQUE2Siw4RUFBOEUsc0JBQXNCLENBQUMsb0lBQW9JLENBQUMsYUFBYSxzRkFBc0YseURBQXlELHlCQUF5Qiw2VUFBNlUsb0NBQW9DLHNCQUFzQiw0Q0FBNEMsTUFBTSwyQ0FBMkMsQ0FBQyxxUkFBcVIsU0FBUyw0Q0FBNEMsTUFBTSxDQUFDLFlBQVksK0pBQStKLE1BQU0sQ0FBQyxZQUFZLHVUQUF1VCxpQ0FBaUMsbUdBQW1HLDZCQUE2QixzWEFBc1gsa0RBQWtELFdBQVcsb0NBQW9DLGdCQUFnQiwwSkFBMEosTUFBTSx3TUFBd00sTUFBTSw4QkFBOEIsTUFBTSxtQ0FBbUMscUNBQXFDLGdCQUFnQiw4REFBOEQsNkJBQTZCLE1BQU0sc0JBQXNCLDZCQUE2QixtQkFBbUIsbUJBQW1CLG9DQUFvQyxpRkFBaUYsZUFBZSx1bEJBQXVsQixxREFBcUQsa0RBQWtELHFDQUFxQyx1QkFBdUIsMEJBQTBCLEtBQUssR0FBRyxzQ0FBc0Msc0xBQXNMLHlDQUF5QywyQ0FBMkMsa0VBQWtFLGFBQWEsbUJBQW1CLHVCQUF1Qix3Q0FBd0MsV0FBVywrRkFBK0Ysd0JBQXdCLCtFQUErRSx3QkFBd0IsR0FBRyw0Q0FBNEMsbUlBQW1JLDBDQUEwQyx5Q0FBeUMsb0RBQW9ELFlBQVkscUNBQXFDLHdCQUF3QixPQUFPLG9GQUFvRiw4RUFBOEUscUNBQXFDLDZDQUE2QywwQkFBMEIsT0FBTyxXQUFXLG1CQUFtQixxQ0FBcUMsb0xBQW9MLHlCQUF5QixHQUFHLGlCQUFpQiwyQkFBMkIsNkJBQTZCLE1BQU0sb0ZBQW9GLElBQUksQ0FBQyxNQUFNLGtCQUFrQjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBejdkO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDeUM7O0FBRXpDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3Q0FBd0M7O0FBRXhDO0FBQ0E7QUFDQSxjQUFjLE9BQU87QUFDckI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7QUFFSjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxzREFBc0Q7QUFDdEQ7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBLDBCQUEwQiw0QkFBNEI7QUFDdEQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0EsbUVBQW1FOztBQUVuRTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsbUdBQW1HOztBQUVuRzs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxhQUFhO0FBQ3hCO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBLHdCQUF3QjtBQUN4Qjs7QUFFQTtBQUNBLE1BQU0sb0NBQWE7QUFDbkIsV0FBVyxvQ0FBYTtBQUN4Qjs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxJQUFJO0FBQ0o7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUc7QUFDSDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQTtBQUNBO0FBQ0EsWUFBWSxjQUFjO0FBQzFCOzs7QUFHQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsMEJBQTBCOztBQUUxQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtQkFBbUIsSUFBSSxJQUFJLFdBQVc7QUFDdEM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTSxTQUFTLDJCQUEyQjtBQUMxQztBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUzs7QUFFVDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxtREFBbUQ7O0FBRW5EO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZ0hBQWdIO0FBQ2hIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLCtEQUErRDtBQUMvRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHOztBQUVIO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esc0RBQXNEO0FBQ3REO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsT0FBTztBQUNQO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGlEQUFpRDtBQUNqRDs7QUFFQTtBQUNBO0FBQ0EsbUdBQW1HLGtDQUFrQztBQUNySTtBQUNBOztBQUVBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLDBDQUEwQyxrQkFBa0I7QUFDNUQ7O0FBRUE7QUFDQTtBQUNBLG9DQUFvQyxzQkFBc0I7QUFDMUQsR0FBRzs7QUFFSDtBQUNBLHVDQUF1QyxzQkFBc0I7QUFDN0QsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0EseURBQXlELHNCQUFzQjtBQUMvRTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGtHQUFrRzs7QUFFbEcsYUFBYTtBQUNiLDBEQUEwRDtBQUMxRCwwRUFBMEU7QUFDMUUsa0RBQWtEO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLCtCQUErQixvQ0FBb0MsWUFBWSxTQUFTLG1CQUFtQixVQUFVLHVCQUF1QixjQUFjO0FBQzFKO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBLGlEQUFpRDtBQUNqRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlCQUFpQixVQUFVO0FBQzNCOztBQUVBO0FBQ0EsZUFBZSxjQUFjO0FBQzdCOztBQUVBO0FBQ0EsY0FBYyxLQUFLLEVBQUUsZUFBZTtBQUNwQzs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxxQ0FBcUMsb0JBQW9CO0FBQ3pEO0FBQ0EsNkRBQTZELEtBQUs7QUFDbEU7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxvRUFBb0UsS0FBSztBQUN6RSw0REFBNEQ7O0FBRTVEO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLFdBQVc7QUFDbkMsNEJBQTRCLFlBQVk7QUFDeEMsOEJBQThCLFlBQVk7QUFDMUM7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixXQUFXO0FBQ25DO0FBQ0E7QUFDQTtBQUNBLHVDQUF1QyxZQUFZLEVBQUUsZUFBZTtBQUNwRTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0EsR0FBRzs7QUFFSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxHQUFHOztBQUVIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUgsK0JBQStCO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEdBQUc7O0FBRUg7QUFDQSw4SUFBOEksU0FBUztBQUN2SjtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esc0NBQXNDLFlBQVk7QUFDbEQsb0NBQW9DLFlBQVk7QUFDaEQsa0NBQWtDLFlBQVk7QUFDOUMsd0NBQXdDLFlBQVk7QUFDcEQsb0NBQW9DLFlBQVk7QUFDaEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsV0FBVztBQUNuQztBQUNBO0FBQ0E7QUFDQSxvQ0FBb0M7O0FBRXBDO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCLFlBQVk7QUFDeEMsMEJBQTBCLFlBQVk7QUFDdEMsa0NBQWtDLFlBQVk7QUFDOUMsd0NBQXdDLFlBQVk7QUFDcEQsd0NBQXdDLFlBQVk7QUFDcEQscUNBQXFDLFlBQVk7QUFDakQscUNBQXFDLFlBQVksRUFBRSxlQUFlO0FBQ2xFLHVDQUF1QyxZQUFZLEVBQUUsZUFBZTtBQUNwRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSw0RUFBNEUsTUFBTTs7QUFFbEY7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtB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RUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLHdDQUF3QyxPQUFPO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0Esd0JBQXdCLFdBQVc7QUFDbkMsa0NBQWtDLFlBQVk7QUFDOUMsd0NBQXdDLFlBQVk7QUFDcEQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLDZDQUE2Qzs7QUFFN0M7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBLE1BQU07O0FBRU47QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsV0FBVztBQUNuQztBQUNBO0FBQ0EsNEJBQTRCLFlBQVk7QUFDeEMsK0NBQStDLFlBQVk7QUFDM0QsZ0NBQWdDLFlBQVk7QUFDNUMsNEJBQTRCLFlBQVk7QUFDeEMsOEJBQThCLFlBQVk7QUFDMUMsZ0NBQWdDLFlBQVk7QUFDNUMsNENBQTRDLFlBQVk7QUFDeEQsb0RBQW9ELFlBQVk7QUFDaEUsa0RBQWtELFlBQVk7QUFDOUQsdUNBQXVDLFlBQVksRUFBRSxlQUFlO0FBQ3BFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsNERBQTREOztBQUU1RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLHlDQUF5QyxlQUFlO0FBQ3hEOztBQUVBO0FBQ0E7QUFDQSx5Q0FBeUMsZUFBZTtBQUN4RDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnREFBZ0QsT0FBTztBQUN2RDs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTCxHQUFHLEdBQUc7O0FBRU47O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSx3QkFBd0IsV0FBVztBQUNuQztBQUNBLHFDQUFxQyxZQUFZLEVBQUUsZUFBZTtBQUNsRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSw0QkFBNEIsWUFBWTtBQUN4Qyw4QkFBOEIsWUFBWTtBQUMxQyw0QkFBNEIsWUFBWTtBQUN4Qyw2Q0FBNkMsWUFBWTtBQUN6RCxnQ0FBZ0MsWUFBWTtBQUM1Qyw4QkFBOEIsWUFBWTtBQUMxQyx1Q0FBdUMsWUFBWSxFQUFFLGVBQWU7QUFDcEUsZ0RBQWdELFlBQVk7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTzs7O0FBR1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0wsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBQUcsR0FBRzs7QUFFTjs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7QUFDRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHVJQUF1STs7QUFFdkk7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLGFBQWE7QUFDYixPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsNkJBQTZCO0FBQzdCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQkFBMkIsaUJBQWlCO0FBQzVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsZUFBZSwyQ0FBTTtBQUNyQjtBQUNBOztBQUVBLDRCQUE0Qjs7QUFFNUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsNkJBQTZCOztBQUU3Qjs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07OztBQUdOOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNOztBQUVOO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsMENBQTBDO0FBQzFDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUEsNkNBQTZDO0FBQzdDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSw0REFBNEQ7OztBQUc1RDtBQUNBO0FBQ0E7O0FBRUEsZ0VBQWdFOztBQUVoRSw0QkFBNEIsc0JBQXNCO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ04sb0RBQW9EO0FBQ3BEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsV0FBVyx3REFBbUI7QUFDOUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsTUFBTTs7QUFFTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBLHVCQUF1QixzQkFBc0I7QUFDN0M7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDtBQUNBLGFBQWE7QUFDYjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7QUFDVCxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxTQUFTO0FBQ1Q7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsaUVBQWlFOzs7QUFHakU7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsZUFBZTtBQUNmLDREQUE0RDtBQUM1RDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsK0JBQStCO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxnREFBZ0QsT0FBTztBQUN2RDs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7O0FBR0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG9CQUFvQjtBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSx3QkFBd0I7QUFDeEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixXQUFXO0FBQ25DO0FBQ0Esa0NBQWtDLFlBQVk7QUFDOUMsNEJBQTRCLFlBQVk7QUFDeEMscUNBQXFDLFlBQVksRUFBRSxhQUFhO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwrQkFBK0IsbUJBQW1CLElBQUksb0JBQW9CLElBQUksbUJBQW1CLElBQUksb0JBQW9CO0FBQ3pIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsNEJBQTRCOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLElBQUk7OztBQUdKO0FBQ0EsbUVBQW1FLHFCQUFxQjtBQUN4RixnRUFBZ0U7O0FBRWhFLDJDQUEyQyxjQUFjOztBQUV6RDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFNOzs7QUFHTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQSxVQUFVOzs7QUFHVjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQSw2REFBNkQsZ0JBQWdCOztBQUU3RTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBLDJHQUEyRzs7QUFFM0c7QUFDQSx5QkFBeUI7O0FBRXpCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFFBQVE7OztBQUdSO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvRkFBb0Y7O0FBRXBGO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSwrQ0FBK0Msc0JBQXNCLEdBQUcsb0JBQW9COztBQUU1RjtBQUNBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsZ0RBQWdELE9BQU87QUFDdkQ7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHdCQUF3QixXQUFXO0FBQ25DLDRCQUE0QixZQUFZO0FBQ3hDLGdDQUFnQyxZQUFZO0FBQzVDLDRCQUE0QixZQUFZO0FBQ3hDLDhCQUE4QixZQUFZO0FBQzFDLHFDQUFxQyxZQUFZO0FBQ2pELGdDQUFnQyxZQUFZO0FBQzVDLG1DQUFtQyxZQUFZO0FBQy9DO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DLDZCQUE2QixvQkFBb0IsNkJBQTZCLGdCQUFnQiw2QkFBNkI7QUFDOUoseUdBQXlHOztBQUV6RywrQkFBK0IsZUFBZSxJQUFJLHFCQUFxQjtBQUN2RSx3Q0FBd0Msa0JBQWtCLDJCQUEyQixrQkFBa0IsNEJBQTRCLGtCQUFrQjtBQUNySjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxjQUFjO0FBQ2QsZ0NBQWdDLG1CQUFtQix5QkFBeUIsb0JBQW9CO0FBQ2hHLE1BQU07OztBQUdOOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTs7O0FBR047O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQSxxREFBcUQ7OztBQUdyRDtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsdURBQXVEOzs7QUFHdkQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSw2QkFBNkI7O0FBRTdCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx5REFBeUQ7OztBQUd6RDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsbUVBQW1FLFNBQVM7QUFDNUU7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLElBQUk7OztBQUdKO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGdEQUFnRCxPQUFPO0FBQ3ZEOztBQUVBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDO0FBQ0Q7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNEO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHNCQUFzQixTQUFTO0FBQy9CLG9DQUFvQyxVQUFVO0FBQzlDLGtDQUFrQyxVQUFVO0FBQzVDLGdDQUFnQyxVQUFVO0FBQzFDLGtDQUFrQyxVQUFVO0FBQzVDLDBCQUEwQixVQUFVO0FBQ3BDLDhCQUE4QixVQUFVO0FBQ3hDLDBCQUEwQixVQUFVO0FBQ3BDLDRCQUE0QixVQUFVO0FBQ3RDO0FBQ0EsZ0NBQWdDOztBQUVoQztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxxREFBcUQ7OztBQUdyRDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLG9EQUFvRDs7O0FBR3BEOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxJQUFJOzs7QUFHSjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsSUFBSTs7O0FBR0o7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxrREFBa0QsT0FBTztBQUN6RDs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7QUFHQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFa0g7QUFDbEg7Ozs7Ozs7Ozs7O0FDamxLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFlBQVksb0ZBQW9GLHdDQUF3QyxXQUFXLDRHQUE0RyxnQ0FBZ0MsdUNBQXVDLG1DQUFtQyw0REFBNEQsV0FBVyxLQUFLLHdCQUF3QixNQUFNLE9BQU8sT0FBTztBQUNqZSxpSUFBaUksc0tBQXNLLFNBQVMsc0JBQXNCLDZEQUE2RCxpQ0FBaUMsNkJBQTZCO0FBQ2pjLG1DQUFtQyxrQ0FBa0MscUJBQXFCLGFBQWEsSUFBSSx3UUFBd1EsV0FBVyxhQUFhLFVBQVUsWUFBWSxLQUFLLFNBQVMsbUJBQW1CLGFBQWEsSUFBSSwwQ0FBMEMsU0FBUztBQUN0Z0IsR0FBRyxPQUFPLElBQUksVUFBVSxrREFBa0Qsb0lBQW9JLDhCQUE4Qiw2Q0FBNkMsK0JBQStCLEtBQUssSUFBSSx1QkFBdUIsVUFBVSw0Q0FBNEMsR0FBRywwQkFBMEIsTUFBTSxlQUFlLHFCQUFxQixpQ0FBaUMsU0FBUztBQUMvZixXQUFXLFNBQVMsNENBQTRDLHdDQUF3QyxpQ0FBaUMsbUNBQW1DLHFDQUFxQyxjQUFjLGNBQWMsNkJBQTZCLGtCQUFrQiw0Q0FBNEMsRUFBRSw2QkFBNkIsRUFBRSxlQUFlLFlBQVksbUJBQW1CLGFBQWEsNkJBQTZCLDZCQUE2QixXQUFXO0FBQ3plLFdBQVcsV0FBVyxPQUFPLHFCQUFxQixxQkFBcUIsOEJBQThCLHdCQUF3QixvQkFBb0IsR0FBRyxvRkFBb0YsZ0NBQWdDLGFBQWEsc0JBQXNCLDRCQUE0Qiw0QkFBNEIsY0FBYyxZQUFZLGlCQUFpQixPQUFPLGFBQWEscUJBQXFCLEtBQUssa0RBQWtEO0FBQzllLGFBQWEsT0FBTyxrQkFBa0IsaUJBQWlCLG1EQUFtRCxpQkFBaUIsbUJBQW1CLGdDQUFnQyw2QkFBNkIsb0JBQW9CLDRCQUE0QixvQ0FBb0MsNEJBQTRCLFNBQVMsaUJBQWlCLHFCQUFxQixJQUFJLGtCQUFrQixLQUFLLHVCQUF1QixpQkFBaUIsSUFBSSxRQUFRLE1BQU0sTUFBTSxrQkFBa0I7QUFDdmQsTUFBTSxXQUFXLEtBQUssb0JBQW9CLDBCQUEwQixVQUFVLCtCQUErQix1Q0FBdUMsZUFBZSxrQ0FBa0MsSUFBSSxJQUFJLFVBQVUsNEJBQTRCLG1CQUFtQixrQkFBa0IsU0FBUyw4QkFBOEIsaUJBQWlCLE1BQU0sNEJBQTRCLCtCQUErQiwrQkFBK0IsZ0JBQWdCLHVCQUF1QiwwQkFBMEI7QUFDamYsb0NBQW9DLElBQUksZ0RBQWdELDBDQUEwQywwQkFBMEIsOENBQThDLEtBQUsseUJBQXlCLGVBQWUseURBQXlELGtEQUFrRCxLQUFLLHlCQUF5QixlQUFlLDZEQUE2RDtBQUM1Yyx1Q0FBdUMsbUhBQW1ILDBTQUEwUyxxQkFBcUI7QUFDemQsMEJBQTBCLHFDQUFxQyxxREFBcUQsMkRBQTJELFFBQVEsc01BQXNNLCtGQUErRjtBQUM1ZCw0REFBNEQsWUFBWSxtRUFBbUUsbUNBQW1DLDhDQUE4Qyw2QkFBNkIsa0ZBQWtGLDhDQUE4QyxvRkFBb0Y7QUFDN2Msd0NBQXdDLG9DQUFvQyxTQUFTLDRDQUE0QyxxQ0FBcUMsaUNBQWlDLGdFQUFnRSxLQUFLLDZCQUE2Qix1Q0FBdUMseUJBQXlCLHNDQUFzQywwREFBMEQsK0JBQStCO0FBQ3hlLFlBQVksK0NBQStDLFlBQVksNkJBQTZCLDJEQUEyRCwwRUFBMEUsK0NBQStDLFNBQVMsRUFBRSxJQUFJLCtCQUErQixxS0FBcUs7QUFDM2UsOENBQThDLHlDQUF5QyxFQUFFLDhCQUE4QixrRUFBa0UsMENBQTBDLEVBQUUsK0JBQStCLHVDQUF1QyxnRUFBZ0UseUVBQXlFLGlEQUFpRDtBQUNyZSxJQUFJLCtCQUErQixZQUFZLGtCQUFrQixvQkFBb0IsZ0JBQWdCLHdDQUF3Qyx3Q0FBd0MsRUFBRSxXQUFXLHNCQUFzQixhQUFhLG1DQUFtQyxvQkFBb0IsVUFBVSw2Q0FBNkMseUNBQXlDLHdFQUF3RSxrQkFBa0IsbUJBQW1CO0FBQ3plLFdBQVcsMERBQTBELGtCQUFrQiw4Q0FBOEMsY0FBYyxFQUFFLDRKQUE0SixJQUFJLEVBQUUsTUFBTSx5REFBeUQsaUJBQWlCLG1FQUFtRSwrQkFBK0IsS0FBSyxFQUFFO0FBQ2hmLENBQUMsMkJBQTJCLG1CQUFtQix1Q0FBdUMsWUFBWSxXQUFXLDJCQUEyQixTQUFTLHdCQUF3QixZQUFZLFdBQVcsd0JBQXdCLFNBQVMsbUJBQW1CLE1BQU0sMEJBQTBCLEtBQUssWUFBWSxXQUFXLG9DQUFvQyxTQUFTO0FBQzdWLFdBQVcsb0JBQW9CLDJDQUEyQyxTQUFTLDBCQUEwQix5RUFBeUUsb0JBQW9CLDJCQUEyQixxR0FBcUcsWUFBWSxJQUFJLEtBQUssdUJBQXVCLHVFQUF1RSw4Q0FBOEMsRUFBRSxTQUFTO0FBQ3RmLDJCQUEyQixtQkFBbUIsY0FBYyxhQUFhLGtCQUFrQixRQUFRLEdBQUcscUJBQXFCLFNBQVMscUJBQXFCLDBEQUEwRCxxQkFBcUIsK0NBQStDLFNBQVMsaUNBQWlDLHdCQUF3QixVQUFVLEtBQUssT0FBTyxTQUFTLFNBQVMsK0JBQStCO0FBQ2hhLHNEQUFzRCxtQkFBbUIsK0NBQStDLGlDQUFpQyxHQUFHLDhCQUE4QixlQUFlLG1CQUFtQixXQUFXLDBCQUEwQixrS0FBa0ssa0JBQWtCLHdCQUF3QjtBQUM3YyxTQUFTLHFCQUFxQixxQkFBcUIsR0FBRyx3QkFBd0Isc0JBQXNCLDRCQUE0Qix3REFBd0QsR0FBRyw0QkFBNEIsb0NBQW9DLHdDQUF3QyxrR0FBa0csVUFBVSxTQUFTLG1DQUFtQyxPQUFPLFVBQVUsRUFBRSxHQUFHO0FBQ2pkLDRDQUE0QyxXQUFXLElBQUksZ0NBQWdDLDBFQUEwRSxrQ0FBa0MsR0FBRywrQkFBK0IsR0FBRyw0Q0FBNEMsbUJBQW1CLEVBQUUsOEJBQThCLEdBQUcsMEJBQTBCLFFBQVEsa0JBQWtCLFdBQVcsd0JBQXdCLGtDQUFrQyx3QkFBd0Isa0JBQWtCLElBQUk7QUFDcmYsOERBQThELFNBQVMsd0JBQXdCLFdBQVcsd0JBQXdCLFNBQVMsZ0NBQWdDLGNBQWMsU0FBUywrQkFBK0IscUNBQXFDLE9BQU8sd0JBQXdCLE1BQU0sa0JBQWtCLHVCQUF1QixnQkFBZ0Isd0JBQXdCLE9BQU8sYUFBYSxLQUFLLDBCQUEwQix3Q0FBd0MsaUJBQWlCO0FBQ3hlLG1CQUFtQix3QkFBd0Isb0JBQW9CLHFCQUFxQixtQkFBbUIsd0JBQXdCLG9CQUFvQixxQkFBcUIsbUJBQW1CLHdCQUF3Qix5QkFBeUIsK0NBQStDLElBQUksS0FBSyxvQkFBb0IsS0FBSyxpQ0FBaUMsSUFBSSxlQUFlLElBQUkseUJBQXlCLFNBQVMsc0JBQXNCLGtDQUFrQyxzQkFBc0I7QUFDcmUsR0FBRyw4Q0FBOEMsa0JBQWtCLG1FQUFtRSx5QkFBeUIsK0NBQStDLFlBQVksa0JBQWtCLG1DQUFtQyxFQUFFLDBCQUEwQix3QkFBd0IsSUFBSSxZQUFZLFdBQVcsd0RBQXdELHlCQUF5QjtBQUMvYSxpRUFBaUUsMkJBQTJCLHdCQUF3QixZQUFZLEVBQUUsaUNBQWlDLHVCQUF1QixTQUFTLDJCQUEyQix5QkFBeUIsa0NBQWtDLElBQUksNEJBQTRCLFVBQVUsMEJBQTBCLFdBQVcsa0VBQWtFLHNCQUFzQiwwQkFBMEIsbUJBQW1CO0FBQzdlLFNBQVMsMEJBQTBCLDBCQUEwQixRQUFRLG1CQUFtQixpR0FBaUcsYUFBYSxZQUFZLFdBQVcsWUFBWSxXQUFXLDRFQUE0RSxrQkFBa0Isc0JBQXNCLHlCQUF5QixzQkFBc0Isb0JBQW9CLHNCQUFzQixjQUFjLFVBQVUsd0JBQXdCO0FBQ2pmLFdBQVcscUJBQXFCLGlDQUFpQyxJQUFJLEtBQUssbUJBQW1CLElBQUksTUFBTSxNQUFNLFdBQVcsU0FBUyxtQkFBbUIsdURBQXVELG1CQUFtQixrQkFBa0IsdUJBQXVCLDZCQUE2QixhQUFhLEtBQUssZ0NBQWdDLGlEQUFpRCw4QkFBOEIsU0FBUyx5QkFBeUIsS0FBSyxLQUFLLDZCQUE2QjtBQUM5ZSxrQkFBa0IsVUFBVSxRQUFRLElBQUksd0RBQXdELHFCQUFxQixFQUFFLDBCQUEwQiw4QkFBOEIsRUFBRSxFQUFFLElBQUksS0FBSywyQkFBMkIsa0JBQWtCLHdFQUF3RSxjQUFjLEVBQUUsaUNBQWlDLGVBQWUsdUJBQXVCLG9DQUFvQyw4QkFBOEIsU0FBUztBQUNuZCw4QkFBOEIsc0VBQXNFLFNBQVMsY0FBYyxpQkFBaUIseUJBQXlCLGdCQUFnQixVQUFVLHNCQUFzQixnR0FBZ0csT0FBTyxFQUFFLFNBQVMsNEJBQTRCLFdBQVcsOEJBQThCLFlBQVksaUJBQWlCLEdBQUcsK0JBQStCLE1BQU0sbUJBQW1CO0FBQ3BlLGtDQUFrQyx3Q0FBd0MsU0FBUyx3QkFBd0IscUNBQXFDLG9DQUFvQyxTQUFTLDRCQUE0Qix1QkFBdUIsSUFBSSxjQUFjLFNBQVMsOEJBQThCLDZHQUE2RyxpREFBaUQsc0JBQXNCLEVBQUUsc0JBQXNCLFdBQVcsS0FBSztBQUNyZ0IsOEJBQThCLE1BQU0sU0FBUyxnREFBZ0QsWUFBWSxrQkFBa0IsVUFBVSw4QkFBOEIscUNBQXFDLG1DQUFtQyxvTUFBb00sSUFBSSw2Q0FBNkM7QUFDaGUsR0FBRyx1QkFBdUIsSUFBSSw4QkFBOEIsU0FBUywrQ0FBK0Msc0NBQXNDLFNBQVMsaUNBQWlDLGlDQUFpQyw4QkFBOEIsd0JBQXdCLFNBQVMsZ0NBQWdDLHdEQUF3RCw4REFBOEQsb0RBQW9EO0FBQzllLG9DQUFvQyxzR0FBc0csT0FBTyxrQkFBa0Isc0NBQXNDLGlHQUFpRyxrQkFBa0Isa0NBQWtDLFdBQVcsV0FBVztBQUNwWCxTQUFTLFlBQVkseUJBQXlCLHFFQUFxRSxXQUFXLHlCQUF5Qiw4Q0FBOEMscUJBQXFCLGNBQWMsc0dBQXNHLGlCQUFpQixLQUFLLDBDQUEwQyxRQUFRLFdBQVc7QUFDamEsbUJBQW1CLElBQUksMENBQTBDLFNBQVMsdUJBQXVCLCtDQUErQyxLQUFLLFlBQVksaURBQWlELE1BQU0seVFBQXlRLElBQUksVUFBVSxTQUFTO0FBQ3hmLDJCQUEyQixnRkFBZ0Ysb0NBQW9DLCtFQUErRSxnSEFBZ0gsV0FBVyxLQUFLLFdBQVcsMkJBQTJCLDZCQUE2QixxQ0FBcUMsd0JBQXdCLFFBQVEsSUFBSTtBQUMxZSxVQUFVLFNBQVMsa0NBQWtDLHNCQUFzQixRQUFRLElBQUksTUFBTSx1Q0FBdUMsZUFBZSxJQUFJLFdBQVcsbUJBQW1CLHlCQUF5QixnQ0FBZ0MsYUFBYSxRQUFRLElBQUksc0dBQXNHLFNBQVMsUUFBUSxPQUFPO0FBQ3JZLHVMQUF1TCxRQUFRLHNCQUFzQixtRUFBbUUsa0JBQWtCLEdBQUcsNENBQTRDLFNBQVMsb0JBQW9CLDhEQUE4RDtBQUNwYixRQUFRLEVBQUUsNkJBQTZCLGNBQWMsY0FBYyxnQkFBZ0IsaUJBQWlCLGVBQWUsUUFBUSx5QkFBeUIsaUJBQWlCLG9CQUFvQixNQUFNLG9CQUFvQixNQUFNLG9CQUFvQixNQUFNLG9CQUFvQixTQUFTLG9CQUFvQixrREFBa0Qsd0JBQXdCLG9IQUFvSDtBQUNsZSxZQUFZLDRCQUE0QixFQUFFLFlBQVksRUFBRSxnRUFBZ0UsS0FBSyxRQUFRLHVCQUF1QixTQUFTLDZCQUE2QiwyQkFBMkIsRUFBRSxTQUFTLHNCQUFzQix1QkFBdUIsSUFBSSxFQUFFLGtDQUFrQyxLQUFLLHlCQUF5QixpQkFBaUIsUUFBUSxJQUFJLHVCQUF1QixxQkFBcUIsaUJBQWlCLFdBQVcsK0JBQStCLFNBQVM7QUFDeGUsT0FBTyxZQUFZLFdBQVcsMkJBQTJCLFNBQVMsdUJBQXVCLHNCQUFzQixxQkFBcUIsMkJBQTJCLHNCQUFzQixZQUFZLFdBQVcsbUNBQW1DLFNBQVMsbUJBQW1CLGdEQUFnRCxlQUFlLEVBQUUsb0JBQW9CLG1DQUFtQyw2Q0FBNkMsR0FBRyxTQUFTO0FBQzViLG9CQUFvQiwwRUFBMEUsZUFBZSxFQUFFLG9CQUFvQiwwRUFBMEUsWUFBWSxFQUFFLGtCQUFrQiw4RUFBOEUsdUVBQXVFLEtBQUssK0JBQStCLFdBQVcsc0JBQXNCLFNBQVMseUJBQXlCO0FBQ3plLCtCQUErQixXQUFXLGlDQUFpQyxTQUFTLHVCQUF1QixtQ0FBbUMsb0NBQW9DLFlBQVkscUJBQXFCLCtDQUErQyw2Q0FBNkMsbUZBQW1GLEVBQUUsVUFBVSx1Q0FBdUMsY0FBYyxNQUFNLHdCQUF3QixhQUFhO0FBQzllLE9BQU8sc0NBQXNDLDZCQUE2Qiw2QkFBNkIsZ0JBQWdCLHdEQUF3RCxXQUFXLFlBQVksc0NBQXNDLHVCQUF1Qix3QkFBd0IsV0FBVyxhQUFhLGlCQUFpQixtQkFBbUIsbUJBQW1CLHdCQUF3QixTQUFTLGtCQUFrQixlQUFlLHdCQUF3QjtBQUNwYyx5QkFBeUIsdURBQXVELG1DQUFtQywwQ0FBMEMsNkJBQTZCLDhDQUE4QywwQkFBMEIsK0JBQStCLGtDQUFrQyx3REFBd0QsY0FBYyxRQUFRLG1CQUFtQixtQkFBbUIsbUJBQW1CLG1CQUFtQixJQUFJLGNBQWM7QUFDL2UsVUFBVSxzQkFBc0Isa0NBQWtDLGNBQWMsNkVBQTZFLDRCQUE0QixPQUFPLFFBQVEsb0JBQW9CLGtGQUFrRixVQUFVLGFBQWEsVUFBVSx3QkFBd0IsUUFBUSxtQkFBbUIsMkNBQTJDLHlCQUF5QiwyQ0FBMkM7QUFDamYsd0pBQXdKLEVBQUUsMENBQTBDLDhCQUE4QixRQUFRLDBFQUEwRSwyQkFBMkIsd0RBQXdELFNBQVMsR0FBRyxFQUFFLGlGQUFpRixRQUFRLEdBQUcsWUFBWTtBQUM3ZixxQkFBcUIsdUJBQXVCLGtEQUFrRCxTQUFTLEdBQUcsSUFBSSxFQUFFLG9EQUFvRCxvREFBb0QsNkJBQTZCLCtCQUErQiw4QkFBOEIsMkJBQTJCLDRDQUE0QyxzQ0FBc0MsbUJBQW1CLEtBQUssZUFBZSwyQkFBMkIsU0FBUyxLQUFLLEtBQUs7QUFDcGYsR0FBRyxpTkFBaU4sSUFBSSxvREFBb0QsS0FBSyxJQUFJLE1BQU0sSUFBSSwyQkFBMkIsS0FBSztBQUMvVCwrS0FBK0ssSUFBSSwyRUFBMkUsRUFBRSxXQUFXLEdBQUcsT0FBTyxhQUFhLHFEQUFxRCxpQkFBaUIsZ0VBQWdFLGFBQWEsbURBQW1ELE1BQU07QUFDOWUsWUFBWSxTQUFTLDBCQUEwQixVQUFVLG9CQUFvQixVQUFVLCtCQUErQixTQUFTLDJCQUEyQixhQUFhLDBEQUEwRCxlQUFlLHFCQUFxQiw4QkFBOEIsY0FBYyxjQUFjLCtHQUErRyxLQUFLLHNCQUFzQixRQUFRLG9CQUFvQixzQkFBc0I7QUFDM2YsYUFBYSxRQUFRLFFBQVEsS0FBSyxXQUFXLFNBQVMsbURBQW1ELFdBQVcsd0JBQXdCLFVBQVUsMENBQTBDLG9CQUFvQiwyREFBMkQsOEJBQThCLGlCQUFpQixrREFBa0QsUUFBUSxLQUFLLHdCQUF3QixLQUFLLGFBQWEsS0FBSyxXQUFXLE9BQU8sY0FBYyxVQUFVLGlCQUFpQixLQUFLO0FBQzVlLFNBQVMsaUJBQWlCLDhCQUE4QixRQUFRLDRDQUE0QyxLQUFLLDRDQUE0QyxLQUFLLFVBQVUsNENBQTRDLG1CQUFtQixnTkFBZ04sU0FBUyxpQkFBaUIsWUFBWTtBQUNqZSxxS0FBcUssU0FBUyxrSkFBa0osa0JBQWtCLGVBQWUsWUFBWSxlQUFlLG9CQUFvQixxQkFBcUIsdUJBQXVCO0FBQzViLDZDQUE2QyxVQUFVLG1HQUFtRyxlQUFlLHdOQUF3TixZQUFZLHlEQUF5RCxnQkFBZ0I7QUFDdGQsK0JBQStCLGVBQWUsbUVBQW1FLGdCQUFnQiwwSUFBMEksRUFBRSxTQUFTLGtDQUFrQyxTQUFTLCtCQUErQixrQkFBa0Isb0NBQW9DLHlCQUF5QixvQkFBb0I7QUFDbmMscUNBQXFDLGlDQUFpQyxTQUFTLDRCQUE0QixhQUFhLHFEQUFxRCwwQkFBMEIsNEJBQTRCLGFBQWEsd0RBQXdELHNCQUFzQix1Q0FBdUMsdUNBQXVDLHFCQUFxQiw0QkFBNEIsMEJBQTBCO0FBQ3ZkLE9BQU8sa0tBQWtLLGlSQUFpUixjQUFjLDZDQUE2QztBQUNyZixjQUFjLG1CQUFtQixvRUFBb0UsT0FBTyxzQkFBc0IsTUFBTSx3REFBd0QsRUFBRSxTQUFTLGdCQUFnQixpREFBaUQsUUFBUSwrQ0FBK0MsMkpBQTJKO0FBQzlkLFdBQVcsNEJBQTRCLDhEQUE4RCwwQkFBMEIsMkRBQTJELGlJQUFpSSwrQkFBK0IsSUFBSSxtREFBbUQsWUFBWSxXQUFXO0FBQ3hhLE1BQU0sYUFBYSxTQUFTLHVEQUF1RCx5REFBeUQsZUFBZSxTQUFTLCtCQUErQixLQUFLLEVBQUUscUJBQXFCLElBQUksdUJBQXVCLFNBQVMsV0FBVyw4QkFBOEIseUJBQXlCLGVBQWUsUUFBUSxhQUFhLDRCQUE0QixpQ0FBaUMscUNBQXFDLCtCQUErQjtBQUMxZSxjQUFjLGlDQUFpQyxpQkFBaUIsNkJBQTZCLDBCQUEwQix5QkFBeUIsZ0JBQWdCLHlCQUF5QixnR0FBZ0csOEJBQThCLGlFQUFpRTtBQUN4WCwwSkFBMEo7QUFDMUosc0RBQXNELHVCQUF1QixpQkFBaUIsU0FBUyxxQkFBcUIsY0FBYyxrREFBa0QseUpBQXlKLGVBQWUsWUFBWSxXQUFXLGFBQWEsY0FBYywyRUFBMkUsNENBQTRDO0FBQzdnQixZQUFZLHdDQUF3QyxhQUFhLG9CQUFvQixzQkFBc0IsMEJBQTBCLEtBQUssMkJBQTJCLDhIQUE4SCxTQUFTLHdCQUF3QiwrQkFBK0Isb0JBQW9CLDJCQUEyQix5QkFBeUIsb0RBQW9ELFNBQVMsMEJBQTBCO0FBQ2xnQixLQUFLLFNBQVMsNEJBQTRCLDJDQUEyQyxTQUFTLHdCQUF3QiwyREFBMkQsUUFBUSxFQUFFLG9CQUFvQixzQ0FBc0MsSUFBSSxTQUFTLHdCQUF3Qix3RkFBd0Ysc0JBQXNCLGdCQUFnQixvQ0FBb0M7QUFDNWIsS0FBSyxrQkFBa0IsMkZBQTJGLHdHQUF3Ryx5QkFBeUIsU0FBUyxtQ0FBbUMsZUFBZSxRQUFRLGNBQWMsb0JBQW9CLHFDQUFxQyxNQUFNLE9BQU8sb0VBQW9FLGlCQUFpQixLQUFLLDhCQUE4QixFQUFFO0FBQ3BnQix5QkFBeUIsY0FBYyx1RUFBdUUsdUNBQXVDLGVBQWUsUUFBUSxjQUFjLG9CQUFvQixtQ0FBbUMsTUFBTSxPQUFPLG9FQUFvRSxxQkFBcUIsS0FBSyw4QkFBOEIsRUFBRSwrQkFBK0Isa0JBQWtCO0FBQzdhLEVBQUUseUJBQXlCLGVBQWUscUVBQXFFLG1CQUFtQixTQUFTLHFCQUFxQixlQUFlLGlEQUFpRCxtQkFBbUIsU0FBUyx1QkFBdUIsd0JBQXdCLDRIQUE0SCx3QkFBd0IsZ0JBQWdCLDRCQUE0QjtBQUMzZSxTQUFTLCtCQUErQiw4QkFBOEIseUNBQXlDLDBDQUEwQyw2QkFBNkIsdUJBQXVCLFlBQVkseUJBQXlCLG1CQUFtQixpRUFBaUUsMkNBQTJDLG9FQUFvRSxlQUFlO0FBQ3BjLDRCQUE0QixtRkFBbUYsZ0xBQWdMLG9CQUFvQixpQkFBaUIsMENBQTBDLElBQUksMkZBQTJGO0FBQzdjLHVGQUF1Riw0QkFBNEIsaUJBQWlCLG9CQUFvQixvREFBb0QsMERBQTBELHFDQUFxQyxFQUFFLEtBQUssRUFBRSxFQUFFLG1FQUFtRSxJQUFJLGVBQWUsU0FBUyxRQUFRLFlBQVksNEJBQTRCLGFBQWEsb0JBQW9CLEtBQUssRUFBRSxFQUFFO0FBQy9lLHFDQUFxQyxlQUFlLFNBQVMsb0JBQW9CLDBCQUEwQixvQkFBb0IsNEJBQTRCLE1BQU0sVUFBVSxlQUFlLG9DQUFvQyxpQkFBaUIsWUFBWSxxQkFBcUIscUJBQXFCLFdBQVcsaUJBQWlCLGFBQWEsYUFBYSxrQkFBa0IsVUFBVSxtQ0FBbUMsRUFBRSwrQkFBK0Isd0RBQXdEO0FBQ25mLCtEQUErRCxLQUFLLFdBQVcsVUFBVSxPQUFPLGtCQUFrQixVQUFVLGlDQUFpQyxFQUFFLCtCQUErQix3REFBd0QsK0ZBQStGLEtBQUssV0FBVyxVQUFVLE1BQU0seUhBQXlILHdCQUF3QjtBQUN0Z0IsS0FBSyx1REFBdUQsdURBQXVELDJHQUEyRyxLQUFLLEVBQUUsRUFBRSxtQ0FBbUMsc0ZBQXNGLGdCQUFnQixVQUFVLGtDQUFrQyxvQ0FBb0M7QUFDaGMscURBQXFELGlCQUFpQixlQUFlLDRCQUE0QixtREFBbUQsT0FBTyxnSUFBZ0ksOEJBQThCLGFBQWEsNEJBQTRCLHVDQUF1QyxhQUFhLE9BQU87QUFDN2EscUJBQXFCLHFCQUFxQiwwQkFBMEIsK0NBQStDLG9DQUFvQyxvQ0FBb0MsbUhBQW1ILHlEQUF5RCw4QkFBOEIsc0RBQXNELEtBQUssdUNBQXVDLGlCQUFpQjtBQUN4Zix1QkFBdUIsRUFBRSwwQkFBMEIsNkJBQTZCLDRCQUE0QixrQ0FBa0MsWUFBWSxLQUFLLDZDQUE2Qyx3Q0FBd0MseUJBQXlCLG9CQUFvQiw2QkFBNkIsdUNBQXVDLGlGQUFpRixTQUFTLHdCQUF3QjtBQUN2ZCxNQUFNLGtCQUFrQix5QkFBeUIsc0JBQXNCLE1BQU0sSUFBSSx1QkFBdUIsU0FBUyxZQUFZLG1DQUFtQyxxQkFBcUIsb0VBQW9FLDRCQUE0QixxQ0FBcUMsY0FBYyxLQUFLLFdBQVcsc0JBQXNCLHNCQUFzQixLQUFLLHNCQUFzQjtBQUMvWixHQUFHLElBQUksT0FBTyx1QkFBdUIsdUNBQXVDLGdDQUFnQywyREFBMkQsaUVBQWlFLG9CQUFvQiw2Q0FBNkMsNkdBQTZHLG9CQUFvQiw2Q0FBNkMsK0JBQStCLHdEQUF3RDtBQUM5aUIscUJBQXFCLHdFQUF3RSxtQkFBbUIsbUNBQW1DLHdJQUF3SSxtQkFBbUIsZ0JBQWdCLGVBQWUsa0JBQWtCLDZEQUE2RCxxQkFBcUIsbUVBQW1FO0FBQ3BmLDZCQUE2QiwwQ0FBMEMsc0hBQXNILFVBQVUsb0NBQW9DLFNBQVMsa0NBQWtDLGlCQUFpQixxQkFBcUIscUJBQXFCLDhFQUE4RSxvQkFBb0IsbURBQW1ELGdDQUFnQyxHQUFHO0FBQ3pnQixtQ0FBbUMsMERBQTBELG9DQUFvQyxzQ0FBc0MsaUlBQWlJLHdHQUF3Ryx3Q0FBd0MsYUFBYSw2QkFBNkI7QUFDbGUsa0JBQWtCLHdOQUF3TixxQ0FBcUMsT0FBTyxPQUFPLDRCQUE0QixrREFBa0QsMkRBQTJELG1EQUFtRDtBQUN6ZCxzQ0FBc0MsaUNBQWlDLHdDQUF3QyxzREFBc0QsWUFBWSxnQkFBZ0IsdURBQXVELGNBQWMsU0FBUyxnRUFBZ0Usa0JBQWtCLDRCQUE0QixnQkFBZ0IsdUNBQXVDLGtEQUFrRCxjQUFjO0FBQ3BmLG9CQUFvQixJQUFJLDJEQUEyRCxTQUFTLG9JQUFvSSxzREFBc0Qsa0RBQWtELHdCQUF3QixZQUFZLGFBQWEsdUJBQXVCLHdCQUF3QixzQkFBc0IsWUFBWSwyQkFBMkIsYUFBYTtBQUNsZix3Q0FBd0MsWUFBWSxhQUFhLGlDQUFpQyx1SkFBdUosWUFBWSxzQkFBc0IsNkJBQTZCLHNCQUFzQiw0REFBNEQscUVBQXFFLFNBQVMsd0JBQXdCLDZCQUE2QjtBQUM3Z0IsbURBQW1ELGFBQWEscUJBQXFCLHFCQUFxQix3QkFBd0IsZ0hBQWdILHlCQUF5QixrQ0FBa0MscUJBQXFCLGtFQUFrRSxtQkFBbUI7QUFDdloseUJBQXlCLDJCQUEyQixpREFBaUQsc0JBQXNCLGlCQUFpQixvQ0FBb0MsNEJBQTRCLHdDQUF3QyxzQ0FBc0MsZUFBZSw4RkFBOEYsb0JBQW9CLGFBQWEsNkJBQTZCLHVEQUF1RDtBQUM1ZixJQUFJLGFBQWEsYUFBYSx5RkFBeUYsa0JBQWtCLGFBQWEsSUFBSSxlQUFlLFdBQVcsbUJBQW1CLHNEQUFzRCxzQkFBc0IsdUJBQXVCLG9EQUFvRCx5QkFBeUIsb0VBQW9FLGdEQUFnRDtBQUMzZSxtQkFBbUIsMkJBQTJCLDhCQUE4QixpQ0FBaUMsbUNBQW1DLHFDQUFxQyxzRUFBc0UsNkRBQTZELElBQUksYUFBYSx5Q0FBeUMsNkNBQTZDLGlCQUFpQixjQUFjLGlCQUFpQixTQUFTLFNBQVM7QUFDamUsc0RBQXNELGdCQUFnQixzQkFBc0IsVUFBVSwyQkFBMkIsVUFBVSxhQUFhLDBCQUEwQixvQkFBb0Isa0NBQWtDLGdCQUFnQixnQkFBZ0IsbUJBQW1CLHVDQUF1QywyQkFBMkIsa0JBQWtCLGlDQUFpQyxrRkFBa0YsVUFBVTtBQUM1ZSxZQUFZLE1BQU0sZ0NBQWdDLE1BQU0sK0JBQStCLHlGQUF5RixrSEFBa0gsNENBQTRDLHlDQUF5QztBQUN2WCxLQUFLLGdDQUFnQyxHQUFHLDZCQUE2QixRQUFRLHVCQUF1QixpQ0FBaUMsUUFBUSxXQUFXLHdFQUF3RSxTQUFTLHdCQUF3QixvREFBb0QsMEJBQTBCLE9BQU8scURBQXFELDBGQUEwRjtBQUNyZSxNQUFNLGtDQUFrQyxhQUFhLGlFQUFpRSxtQkFBbUIsbUNBQW1DLHVCQUF1QixVQUFVLFNBQVMsMEZBQTBGLHNCQUFzQiwwR0FBMEcsb0JBQW9CLGdEQUFnRDtBQUNwZixxQkFBcUIsc0NBQXNDLGtCQUFrQix1QkFBdUIsdUJBQXVCLHlCQUF5QixvQkFBb0Isb0NBQW9DLDhDQUE4Qyx1QkFBdUIscUNBQXFDLHdCQUF3QixVQUFVLHNCQUFzQixxQkFBcUIsb0JBQW9CLHNCQUFzQix3QkFBd0I7QUFDcmMsU0FBUyxxQkFBcUIsdUJBQXVCLGdFQUFnRSxTQUFTLHNCQUFzQiwwREFBMEQsZUFBZSxxQkFBcUIseURBQXlELFlBQVksbUJBQW1CLGdDQUFnQyxTQUFTLHdCQUF3QixxQkFBcUI7QUFDaGEsdU5BQXVOLHlCQUF5QixzQkFBc0IsZUFBZSxrR0FBa0csa0dBQWtHO0FBQ3pkLDZJQUE2SSxtQkFBbUIsbUJBQW1CLDBEQUEwRCx1QkFBdUIsbUdBQW1HLFlBQVksc0JBQXNCLG1HQUFtRztBQUM1ZSxtSUFBbUksVUFBVSxvQ0FBb0MsdURBQXVELDZDQUE2QyxJQUFJLEtBQUssbUJBQW1CLGdNQUFnTSxTQUFTO0FBQzFmLHdGQUF3RixnQ0FBZ0MsV0FBVyxLQUFLLFdBQVcsbUJBQW1CLG9EQUFvRCxpQ0FBaUMsaUNBQWlDLFNBQVMsWUFBWSxzQ0FBc0MsbUNBQW1DLDhEQUE4RCx5QkFBeUIsY0FBYztBQUMvZCxxQ0FBcUMsOENBQThDLHNDQUFzQyw0R0FBNEcsd0JBQXdCLDBEQUEwRCw2Q0FBNkMsZUFBZSwyQ0FBMkMsbUJBQW1CLGdDQUFnQyw0QkFBNEI7QUFDN2UsTUFBTSxTQUFTLE1BQU0sVUFBVSxjQUFjLCtDQUErQyxVQUFVLGVBQWUsa0NBQWtDLDBCQUEwQixrQkFBa0IscUNBQXFDLGFBQWEsb0RBQW9ELHVGQUF1RixxQkFBcUIscUNBQXFDLFNBQVMsc0JBQXNCLHFCQUFxQjtBQUM5ZSxzREFBc0QsbUJBQW1CLHlIQUF5SCxtQkFBbUIsZ0JBQWdCLHlCQUF5QixFQUFFLHlCQUF5QixvQkFBb0IseUJBQXlCLGFBQWEsb0ZBQW9GO0FBQ3ZhLDhIQUE4SCxZQUFZLDJEQUEyRCx1Q0FBdUMsd0JBQXdCLFVBQVUsNkJBQTZCLFlBQVksR0FBRyw2QkFBNkIseUNBQXlDLFlBQVksc0JBQXNCLGVBQWUsWUFBWSw0QkFBNEIsa0JBQWtCO0FBQzNlLGtGQUFrRixnR0FBZ0csMEJBQTBCLEdBQUcsZ0NBQWdDLHlDQUF5QyxXQUFXLCtCQUErQix1RkFBdUYseUJBQXlCLG1CQUFtQjtBQUNyYyxtSkFBbUosS0FBSyx3Q0FBd0MsMkNBQTJDLGlCQUFpQixXQUFXLHFCQUFxQixXQUFXLG9DQUFvQyxnQ0FBZ0MsUUFBUSxXQUFXLDRCQUE0Qix3QkFBd0IscURBQXFELFlBQVksdUJBQXVCO0FBQzFnQixNQUFNLFlBQVksd0JBQXdCLHVMQUF1TCx5QkFBeUIscUVBQXFFLG9CQUFvQix1Q0FBdUMsdURBQXVELElBQUksd0RBQXdELGtDQUFrQztBQUMvZ0IsS0FBSyxvQkFBb0IsRUFBRSxxREFBcUQsZ0JBQWdCLFlBQVksaUNBQWlDLDhFQUE4RSxpR0FBaUcsa0lBQWtJO0FBQzliLDRDQUE0QyxvTUFBb00sdUJBQXVCLDRDQUE0QyxFQUFFLGlDQUFpQywrQkFBK0IsMkRBQTJELEtBQUssZ0JBQWdCO0FBQ3JjLElBQUksd0RBQXdELDhKQUE4SiwySEFBMkgsT0FBTyxTQUFTLDRCQUE0Qix1QkFBdUIsTUFBTTtBQUM5Wiw2RUFBNkUsb0JBQW9CLElBQUksdUJBQXVCLG1DQUFtQyxXQUFXLHdCQUF3QixrQ0FBa0MsWUFBWSxnQkFBZ0IsaUdBQWlHLGdCQUFnQixPQUFPLFNBQVMsMkJBQTJCLGtDQUFrQyxXQUFXLFVBQVUsZ0JBQWdCO0FBQ25lLHNCQUFzQixTQUFTLGdCQUFnQiwwREFBMEQseUJBQXlCLGtCQUFrQixtQ0FBbUMsMkVBQTJFLDBFQUEwRSxnQkFBZ0IsWUFBWSxtQ0FBbUMscUJBQXFCLHlDQUF5Qyw0QkFBNEI7QUFDcmUsT0FBTyxtQ0FBbUMsb0NBQW9DLDJDQUEyQyw0QkFBNEIsMEJBQTBCLFdBQVcsVUFBVSxpREFBaUQsMkJBQTJCLGdDQUFnQyx3Q0FBd0MseUNBQXlDLE1BQU0sNkRBQTZELDJCQUEyQjtBQUMvZCx5Q0FBeUMsd0NBQXdDLE1BQU0sNEtBQTRLLDZCQUE2QixhQUFhLElBQUkseUJBQXlCLFNBQVMsWUFBWSw4REFBOEQsOEJBQThCLHdCQUF3QixRQUFRLFlBQVksV0FBVyxLQUFLO0FBQ3ZmLGtDQUFrQywyRUFBMkUsb0hBQW9ILG9FQUFvRSx3QkFBd0Isc0JBQXNCLHlCQUF5QixnQ0FBZ0MsdUJBQXVCLHFCQUFxQjtBQUN4YixtREFBbUQsV0FBVyxxQkFBcUIscUJBQXFCLGdCQUFnQixtQkFBbUIsZ0NBQWdDLG1CQUFtQixhQUFhLDJCQUEyQixjQUFjLGtCQUFrQixjQUFjLHdDQUF3Qyw0QkFBNEIsZ0NBQWdDLCtCQUErQixjQUFjLDRFQUE0RTtBQUNqZixZQUFZLCtEQUErRCxFQUFFLDBCQUEwQiwyTUFBMk0sb0JBQW9CLFlBQVksMENBQTBDLHNEQUFzRCxZQUFZLHVCQUF1QiwrQkFBK0I7QUFDcGYsY0FBYyw4SkFBOEosWUFBWSxrQkFBa0IsY0FBYyxnRUFBZ0UsSUFBSSxTQUFTLHFCQUFxQixjQUFjLGtDQUFrQyxJQUFJLDBDQUEwQyx5QkFBeUIsdUNBQXVDLFdBQVc7QUFDbmUsWUFBWSxZQUFZLG9GQUFvRixnQ0FBZ0Msc0JBQXNCLDRDQUE0Qyw0Q0FBNEMscUJBQXFCLGlCQUFpQixvQkFBb0IsdUJBQXVCLGtEQUFrRDtBQUM3WCxPQUFPLEVBQUUsT0FBTyxrS0FBa0ssdURBQXVELDZHQUE2RyxxREFBcUQ7QUFDM1ksRUFBRSx1QkFBdUIsVUFBVSw2Q0FBNkMsdUJBQXVCLHFFQUFxRSwrRkFBK0YsaUVBQWlFLE1BQU0sZ0RBQWdELG9CQUFvQixzQ0FBc0MsNEJBQTRCO0FBQ3hkLEtBQUssS0FBSyw0UEFBNFAsb0dBQW9HLGlCQUFpQixhQUFhLGdCQUFnQixpQkFBaUIsMEJBQTBCLGtCQUFrQixlQUFlO0FBQ3BlLEtBQUssYUFBYSx5QkFBeUIsaUJBQWlCLDZHQUE2Ryx5QkFBeUIsOEdBQThHLDhCQUE4QixzR0FBc0csd0JBQXdCO0FBQzVjLHVFQUF1RSw4QkFBOEIsc0dBQXNHLHdDQUF3QyxrQkFBa0IsNEJBQTRCLEdBQUc7QUFDcFMsb0VBQW9FLEtBQUssZUFBZSxFQUFFLGVBQWUsNENBQTRDLGVBQWUsbUNBQW1DLGVBQWUsV0FBVyx5QkFBeUIsY0FBYyxpQkFBaUIsaUJBQWlCLEtBQUssU0FBUyxnREFBZ0QsY0FBYyxhQUFhLFVBQVUsUUFBUSxlQUFlLGFBQWEsaUJBQWlCLG9CQUFvQixxQkFBcUI7QUFDM2UsR0FBRyx5QkFBeUIsNEJBQTRCLDBCQUEwQiw0QkFBNEIsd0JBQXdCLG9CQUFvQix5QkFBeUIsc0JBQXNCLGtCQUFrQixvQkFBb0IsWUFBWSxFQUFFLE9BQU8sdUxBQXVMLElBQUksb0JBQW9CO0FBQ25kLFlBQVksOEtBQThLLDhDQUE4QyxtQkFBbUIsK0RBQStELGdEQUFnRCwyQkFBMkIsS0FBSyxHQUFHLDJDQUEyQyxjQUFjO0FBQ3RjLG1CQUFtQixRQUFRLDREQUE0RCxjQUFjLGdCQUFnQiw0Q0FBNEMsbUJBQW1CLE1BQU0scUpBQXFKLGdCQUFnQiwwQ0FBMEMsa0VBQWtFLG1CQUFtQjtBQUM5ZCx3Q0FBd0MsZ0JBQWdCLDJDQUEyQyxtQkFBbUIsd0JBQXdCLHNDQUFzQyxjQUFjLG1CQUFtQixtQkFBbUIsaUZBQWlGLG9IQUFvSCxnQkFBZ0IscUNBQXFDLG1CQUFtQjtBQUNyZix5Q0FBeUMscUNBQXFDLGdCQUFnQiwyQkFBMkIseUhBQXlILDBHQUEwRyx3Q0FBd0MsbUJBQW1CLG1CQUFtQixnQkFBZ0Isb0NBQW9DO0FBQzlkLFlBQVksbUJBQW1CLGdDQUFnQyxJQUFJLG1DQUFtQyxXQUFXLG9IQUFvSCxRQUFRLEdBQUcsMENBQTBDLFNBQVMsdUJBQXVCLG9CQUFvQixFQUFFLHlDQUF5QyxtQkFBbUI7QUFDNVksOEZBQThGLGdCQUFnQixtREFBbUQsV0FBVywrQkFBK0IsWUFBWSw2RkFBNkYsK0NBQStDLDJFQUEyRSxrQkFBa0IseUNBQXlDO0FBQ3plLG9CQUFvQiwwQkFBMEIsWUFBWSxjQUFjLGtIQUFrSCxzQkFBc0Isb0JBQW9CLG9DQUFvQyxpQkFBaUIsNkRBQTZELFNBQVMsYUFBYSx3Q0FBd0MsUUFBUSxJQUFJLDJDQUEyQyxXQUFXLGFBQWE7QUFDbmUsYUFBYSx3VkFBd1Ysa0ZBQWtGLFlBQVksbUJBQW1CLHFCQUFxQjtBQUMzZSxnQkFBZ0IsT0FBTyxrRkFBa0YsMEpBQTBKLEtBQUssd0lBQXdJO0FBQ2haLFVBQVUsOEZBQThGLEtBQUssS0FBSyxPQUFPLGNBQWMsNkhBQTZILEVBQUUsRUFBRSxtQkFBbUIsS0FBSyxNQUFNLFNBQVMsSUFBSSxJQUFJLFFBQVEsS0FBSyxvRUFBb0UsS0FBSztBQUM3WSxLQUFLLGFBQWEsRUFBRSxhQUFhLElBQUksUUFBUSxhQUFhLDhHQUE4RyxtQkFBbUIsZ0xBQWdMLGNBQWMsMEVBQTBFLG1CQUFtQjtBQUN0ZCxnRUFBZ0UsY0FBYyxrQkFBa0IsTUFBTSwyREFBMkQsZ0JBQWdCLGtDQUFrQyxHQUFHLE9BQU8sd0tBQXdLLHNEQUFzRDtBQUMzYiw4QkFBOEIsaUJBQWlCLHdDQUF3QywwQ0FBMEMsK0JBQStCLHNDQUFzQywyQkFBMkIsMkJBQTJCLFNBQVMsc0JBQXNCLDRKQUE0SixrQkFBa0IsMkJBQTJCO0FBQ3BlLDBEQUEwRCxTQUFTLDRCQUE0QixpQ0FBaUMsK0JBQStCLHVEQUF1RCx5REFBeUQsU0FBUyxvQkFBb0IsOEpBQThKLDRCQUE0QixjQUFjLGtDQUFrQztBQUN0aEIseUhBQXlILFNBQVMsS0FBSyx1RUFBdUUsc0NBQXNDLHlCQUF5Qiw2QkFBNkIsb0JBQW9CLEdBQUcsbUZBQW1GLG9DQUFvQztBQUN4YiwrRUFBK0UsZUFBZSxrRUFBa0UsZUFBZSxnQkFBZ0Isa0dBQWtHLE9BQU8sMEVBQTBFLDRCQUE0QixjQUFjLCtCQUErQixJQUFJLFFBQVE7QUFDdmMsbUZBQW1GLHVDQUF1Qyx1Q0FBdUMsR0FBRyxRQUFRLElBQUksdUNBQXVDLElBQUksUUFBUSxLQUFLLEtBQUssK0JBQStCLElBQUksUUFBUSxnREFBZ0QsZ0ZBQWdGLElBQUk7QUFDNVosOEJBQThCLGNBQWMsV0FBVyxnQkFBZ0IseUNBQXlDLE1BQU0sa0JBQWtCLDZJQUE2SSwwREFBMEQsbUJBQW1CLHdCQUF3QixzREFBc0QsSUFBSSxtREFBbUQ7QUFDdmUsMEJBQTBCLE9BQU8sK0lBQStJLDhCQUE4QixVQUFVLCtIQUErSCxjQUFjLG1CQUFtQixxQ0FBcUM7QUFDN1osa0dBQWtHLDZCQUE2QixvRkFBb0YsNEVBQTRFLHdDQUF3QyxLQUFLLFVBQVUsWUFBWSxlQUFlLDJCQUEyQiwyQkFBMkI7QUFDdmEsd0NBQXdDLEtBQUssVUFBVSxZQUFZLGVBQWUsMkJBQTJCLG9EQUFvRCxPQUFPLHVCQUF1QixpQ0FBaUMsdUxBQXVMLGdDQUFnQyxxQkFBcUI7QUFDNWMsa0dBQWtHLG9CQUFvQixpQkFBaUIsOEZBQThGLDZCQUE2Qiw4Q0FBOEMsOEZBQThGLDRGQUE0RjtBQUMxZSxHQUFHLDhEQUE4RCwyQ0FBMkMsMERBQTBELEtBQUssa0RBQWtELDhJQUE4SSxvQ0FBb0MsbUJBQW1CLE1BQU0sa0JBQWtCLFFBQVEsb0JBQW9CLGlCQUFpQjtBQUN2ZSx3SEFBd0gsdUJBQXVCLGNBQWMsa0ZBQWtGLGtCQUFrQixnQ0FBZ0MsZ0JBQWdCLDJDQUEyQyw2QkFBNkIsd0JBQXdCLDZEQUE2RCxXQUFXLEVBQUU7QUFDM2Qsa0NBQWtDLHNCQUFzQixTQUFTLG9DQUFvQyxVQUFVLHFDQUFxQyxzREFBc0QsK0JBQStCLFlBQVkscUJBQXFCLHNCQUFzQix1QkFBdUIsc0xBQXNMLFdBQVc7QUFDeGYsRUFBRSxFQUFFLFVBQVUsd0JBQXdCLDhDQUE4QyxnRkFBZ0Ysa0JBQWtCLEtBQUssRUFBRSx5REFBeUQsS0FBSyx3RkFBd0YsMElBQTBJLGNBQWM7QUFDM2UsS0FBSyxtREFBbUQsU0FBUywwREFBMEQsT0FBTyxNQUFNLGtCQUFrQixZQUFZLDRDQUE0QyxNQUFNLGtCQUFrQixXQUFXLElBQUksT0FBTyxNQUFNLElBQUksWUFBWSx3QkFBd0Isb0JBQW9CLGlCQUFpQixTQUFTLE9BQU87QUFDblcsa0RBQWtELEtBQUssS0FBSyxFQUFFLFVBQVUsd0JBQXdCLDhDQUE4QyxnRkFBZ0YsY0FBYyxLQUFLLEVBQUUsRUFBRSxLQUFLLHVGQUF1Rix1Q0FBdUMsNkdBQTZHLGNBQWM7QUFDbmYsS0FBSyw2Q0FBNkMsU0FBUywwREFBMEQsT0FBTyxNQUFNLGtCQUFrQixZQUFZLFNBQVMsa0NBQWtDLE1BQU0sY0FBYyxXQUFXLElBQUksT0FBTyxNQUFNLElBQUksWUFBWSx3QkFBd0IsdUVBQXVFLE1BQU0sa0hBQWtILFlBQVk7QUFDOWUsK0JBQStCLCtDQUErQyw2QkFBNkIsb0ZBQW9GLEtBQUssNEJBQTRCLG1GQUFtRixnQkFBZ0IsT0FBTyxRQUFRLFNBQVMsaUJBQWlCLFdBQVcsU0FBUyxTQUFTLGVBQWUsV0FBVyw0QkFBNEIsVUFBVSxVQUFVLG1CQUFtQixPQUFPO0FBQzdlLHlIQUF5SCwyQ0FBMkMsZUFBZSw2QkFBNkIseUVBQXlFLHdCQUF3QixvQkFBb0IscUVBQXFFLGVBQWUsYUFBYSwyQ0FBMkMsNkJBQTZCO0FBQzllLDJDQUEyQyxXQUFXLGtCQUFrQixPQUFPLDBIQUEwSCx3QkFBd0Isd0JBQXdCLHVIQUF1SCxvQkFBb0IsMEJBQTBCO0FBQzlaLE1BQU0scUhBQXFILDhHQUE4RyxnR0FBZ0csd0JBQXdCLHNGQUFzRixNQUFNLHNCQUFzQiwwQkFBMEI7QUFDN2Usa0xBQWtMLHdDQUF3QyxVQUFVLCtJQUErSTtBQUNuWCxpQkFBaUIsd0JBQXdCLHdCQUF3QixpQkFBaUIseURBQXlELGdDQUFnQyx5RUFBeUUsdUJBQXVCLDhCQUE4QixxQkFBcUIsa0JBQWtCLHlCQUF5Qiw4Q0FBOEMsd0NBQXdDLGdDQUFnQyxtQkFBbUI7QUFDbGYsNERBQTRELHdCQUF3QixrR0FBa0csMkJBQTJCLG1CQUFtQiwrREFBK0QsUUFBUSxzQkFBc0Isb0dBQW9HLHlCQUF5QixpQkFBaUI7QUFDL2Msb0JBQW9CLFFBQVEsMkJBQTJCLDRDQUE0Qyw0QkFBNEIsMENBQTBDLHlCQUF5QiwwQ0FBMEMsMEJBQTBCLHdDQUF3QywwQkFBMEIsVUFBVSxzREFBc0QsTUFBTTtBQUM5WSxtQkFBbUIsTUFBTSwyREFBMkQsTUFBTSx1REFBdUQsUUFBUSx3QkFBd0IsVUFBVSxvREFBb0QsTUFBTSwySEFBMkgsTUFBTSx5REFBeUQsTUFBTSxxREFBcUQsUUFBUTtBQUNsZixHQUFHLDZEQUE2RCxpQkFBaUIsOENBQThDLG1DQUFtQyxTQUFTLG1CQUFtQixtQkFBbUIsY0FBYyxnQkFBZ0IsdUJBQXVCLFNBQVMsMEJBQTBCLHlKQUF5SixrREFBa0Q7QUFDcGYsK0hBQStILDhCQUE4Qiw0QkFBNEIsc0JBQXNCO0FBQy9NLHVDQUF1QyxPQUFPLDZFQUE2RSw0QkFBNEIsK0JBQStCLDhDQUE4Qyx5REFBeUQsY0FBYyxpQkFBaUIsbURBQW1ELFNBQVMsbUNBQW1DLGNBQWMsbUJBQW1CO0FBQzViLHNDQUFzQywyRUFBMkUsbUJBQW1CLDRGQUE0Rix3Q0FBd0MsZ0dBQWdHLHdCQUF3Qix3QkFBd0IsbUVBQW1FLG9CQUFvQjtBQUMvZSxXQUFXLHNDQUFzQyx1Q0FBdUMsY0FBYyw2RkFBNkYsNkJBQTZCLGlCQUFpQiw2Q0FBNkMsK0JBQStCLDZDQUE2QyxxSEFBcUgsZUFBZTtBQUM5ZSxXQUFXLGVBQWUsZUFBZSxrRUFBa0UsNkJBQTZCLGdCQUFnQix5QkFBeUIsNkJBQTZCLHlDQUF5QyxnSEFBZ0gsZUFBZSw0REFBNEQsZUFBZSxlQUFlO0FBQ2hkLDZCQUE2QixnQkFBZ0Isd0JBQXdCLGlDQUFpQyxtQkFBbUIsY0FBYyx5REFBeUQsNkJBQTZCLGNBQWMsVUFBVSxvQkFBb0IsNkJBQTZCLG1CQUFtQixhQUFhLHNEQUFzRCw2QkFBNkIsY0FBYyxVQUFVLGdCQUFnQiwwQkFBMEIsZ0JBQWdCLEtBQUssRUFBRSxFQUFFO0FBQ3BmLHVCQUF1QixnRkFBZ0YsK0ZBQStGLGdCQUFnQixTQUFTLGtCQUFrQiw4Q0FBOEMseUJBQXlCLCtDQUErQztBQUN2VyxHQUFHLFlBQVksRUFBRSxFQUFFLCtCQUErQiw0TUFBNE0sSUFBSSxNQUFNLDJJQUEySTtBQUNuWixtSUFBbUkscUJBQXFCLGtGQUFrRiwwQ0FBMEMsSUFBSSxVQUFVLDZDQUE2Qyw2RUFBNkUsb0ZBQW9GO0FBQ2hmLCtCQUErQix1WkFBdVosdUJBQXVCLFVBQVUsb0NBQW9DLDZDQUE2QztBQUN4aUIsaUNBQWlDLGdEQUFnRCw0QkFBNEIsbUJBQW1CLGFBQWEsd0dBQXdHLDZHQUE2Ryx3QkFBd0IsbUJBQW1CLGVBQWUsVUFBVSx3Q0FBd0MsZ0NBQWdDO0FBQzllLHVGQUF1Riw4QkFBOEIsd0JBQXdCLHVGQUF1RixtRkFBbUYsTUFBTSxnREFBZ0Qsc0hBQXNIO0FBQ25lLGtKQUFrSiwyQkFBMkIsb0VBQW9FLG1EQUFtRCxhQUFhLHFLQUFxSyxtQkFBbUI7QUFDemUsWUFBWSxXQUFXLDJCQUEyQixnQkFBZ0IsNkNBQTZDLFNBQVMseUNBQXlDLHNIQUFzSCxzTUFBc007QUFDN2QsNkJBQTZCLG9FQUFvRSxZQUFZLDJEQUEyRCw0Q0FBNEMsb0JBQW9CLHVDQUF1QyxzQ0FBc0Msa0RBQWtELE1BQU0sK0RBQStELDBDQUEwQztBQUN0ZCx5Q0FBeUMscUJBQXFCLCtCQUErQixTQUFTLCtDQUErQyxjQUFjLDZDQUE2QywyQ0FBMkMsb0RBQW9ELG1FQUFtRSxFQUFFLDhDQUE4QyxNQUFNLEtBQUssSUFBSSxrQkFBa0IsTUFBTTtBQUN6YztBQUNBLFNBQVMsa0JBQWtCLDBCQUEwQixJQUFJLHdFQUF3RSxtQ0FBbUMscUNBQXFDLFNBQVMsY0FBYyxrQkFBa0IsWUFBWSxNQUFNLGVBQWUseUJBQXlCLHVJQUF1SSxXQUFXLE9BQU87QUFDcmMsMExBQTBMLGtEQUFrRCxnREFBZ0QsbURBQW1ELDZDQUE2QyxxQkFBcUIsWUFBWSwwQkFBMEIsOENBQThDLG1CQUFtQjtBQUN4ZixNQUFNLGFBQWEsNENBQTRDLGtDQUFrQyxzQkFBc0IsOEJBQThCLG9CQUFvQixxQkFBcUIsc0VBQXNFLGlDQUFpQyxZQUFZO0FBQ2pULG9DQUFvQyxXQUFXLDJDQUEyQyxtREFBbUQseUJBQXlCLFlBQVksb0NBQW9DLE1BQU0sc0dBQXNHLHVDQUF1Qyx5Q0FBeUMsZUFBZSwrQkFBK0IsWUFBWSxLQUFLO0FBQ2pkLFVBQVUsU0FBUyxNQUFNLHVXQUF1VyxjQUFjO0FBQzlZLFVBQVUsR0FBRyxjQUFjLFNBQVMsc0JBQXNCLGlFQUFpRSwyQkFBMkIsU0FBUyxvQkFBb0IsR0FBRyxrQkFBa0IsVUFBVSxZQUFZLGtCQUFrQixHQUFHLHVCQUF1QixRQUFRLE9BQU8sZUFBZSx3R0FBd0csb0NBQW9DLGdDQUFnQyxxQkFBcUI7QUFDemUsWUFBWSx3Q0FBd0MsMEJBQTBCLG9CQUFvQixnRUFBZ0UsU0FBUyxrQkFBa0IsZUFBZSxZQUFZLGVBQWUsaUVBQWlFLCtHQUErRyxrQkFBa0IsSUFBSSxnQkFBZ0IsYUFBYSw2QkFBNkI7QUFDdmUsU0FBUywwQkFBMEIsK0hBQStILDhCQUE4QixxTUFBcU0sMkJBQTJCLDRDQUE0QyxvQkFBb0I7QUFDaGUsZ0JBQWdCLDhFQUE4RSxxQ0FBcUMsc0RBQXNELHFEQUFxRCxpRkFBaUYsc0hBQXNIO0FBQ3JiO0FBQ0EsZ01BQWdNLGlCQUFpQixJQUFJLGtCQUFrQixrQkFBa0IseUJBQXlCLEVBQUUsRUFBRSxvRUFBb0UsNERBQTRELEtBQUssa0JBQWtCLHVFQUF1RTtBQUNwZixFQUFFLFlBQVksTUFBTSxrREFBa0QsS0FBSyxHQUFHLGVBQWUseUNBQXlDLElBQUksY0FBYyxNQUFNLCtFQUErRSxJQUFJLEtBQUssaUJBQWlCLHlFQUF5RSxlQUFlLFNBQVMsS0FBSyw2RUFBNkUsdUJBQXVCLGNBQWMsa0JBQWtCLEVBQUU7QUFDbmYsY0FBYyw2Q0FBNkMsS0FBSyxHQUFHLElBQUksSUFBSSxlQUFlLDJDQUEyQyxNQUFNLElBQUksSUFBSSxjQUFjLElBQUksNkNBQTZDLGlDQUFpQyxzQkFBc0IsT0FBTyxvRkFBb0Ysd0RBQXdELGVBQWUsR0FBRyxpQkFBaUIsVUFBVTtBQUN6YywrZUFBK2U7QUFDL2UsOEpBQThKLGdKQUFnSiwwRkFBMEYsU0FBUyxvQ0FBb0MsY0FBYyxrQ0FBa0M7QUFDcmUsb0NBQW9DLE1BQU0saUNBQWlDLFdBQVcsdURBQXVELG9CQUFvQixrQ0FBa0MsZ0JBQWdCLHNCQUFzQix5RUFBeUUsNEJBQTRCLDREQUE0RCwyQkFBMkIsdUNBQXVDO0FBQzVjLGdEQUFnRCxrQ0FBa0MsZ0RBQWdELGdDQUFnQyxnQkFBZ0Isc0RBQXNELE1BQU0sOEJBQThCLHFFQUFxRSw4QkFBOEIsT0FBTyxVQUFVLDZFQUE2RSxFQUFFLDBCQUEwQjtBQUN6ZSxDQUFDLGtCQUFrQixnTEFBZ0wsb0JBQW9CLDBDQUEwQyxzQkFBc0IsK0VBQStFLDhCQUE4QixhQUFhLG1CQUFtQixTQUFTLHdCQUF3QjtBQUNyYyx3RUFBd0UscUlBQXFJO0FBQzdNLHVMQUF1TCxZQUFZLHNCQUFzQixRQUFRLEtBQUssWUFBWSxPQUFPLHdCQUF3Qix1QkFBdUIsUUFBUSxNQUFNLGlDQUFpQyxtQ0FBbUMsUUFBUSxxQ0FBcUMsbURBQW1ELHlCQUF5QixZQUFZO0FBQy9mLGdCQUFnQix3REFBd0QsWUFBWSxtRUFBbUUsS0FBSyxVQUFVLCtCQUErQixvQkFBb0Isc0JBQXNCLFVBQVUsVUFBVSxhQUFhLFlBQVksTUFBTSxJQUFJLGVBQWUsSUFBSSxLQUFLLFVBQVUsbURBQW1ELElBQUksYUFBYSx3QkFBd0IsS0FBSyxZQUFZLE9BQU8sT0FBTyxLQUFLLFNBQVM7QUFDamQsc0NBQXNDLElBQUksd0JBQXdCLG9CQUFvQixvREFBb0QsK0RBQStELG1GQUFtRixlQUFlLG9CQUFvQjtBQUMvVCx3Q0FBd0MsWUFBWSxZQUFZLGlCQUFpQixvQkFBb0IsS0FBSyx5QkFBeUIsSUFBSSw2QkFBNkIsS0FBSyxVQUFVLGdCQUFnQixrQkFBa0IsZUFBZSxtQkFBbUIsaUNBQWlDLFNBQVMsa0JBQWtCLHlCQUF5QiwyQkFBMkIsMEVBQTBFLDBEQUEwRDtBQUMzZSxZQUFZLE1BQU0saUNBQWlDLElBQUksa0NBQWtDLElBQUksVUFBVSx3Q0FBd0MsZ0JBQWdCLGVBQWUsb0JBQW9CLHVDQUF1QyxTQUFTLGtCQUFrQiwrQ0FBK0Msb0JBQW9CLFNBQVMsZ0JBQWdCLGVBQWUsbUJBQW1CLDhGQUE4RjtBQUNoZSwwQ0FBMEMsUUFBUSxPQUFPLHlCQUF5QixjQUFjLGdCQUFnQiw4QkFBOEIsWUFBWSwyQ0FBMkMsV0FBVyxrQ0FBa0MsNENBQTRDLGlFQUFpRSwwRUFBMEUsZ0JBQWdCLGVBQWUsY0FBYyxXQUFXO0FBQ2plLFVBQVUsc0JBQXNCLHNFQUFzRSxTQUFTLGNBQWMsZUFBZSw0QkFBNEIsYUFBYSxTQUFTLHlCQUF5QixTQUFTLGNBQWMsZ0JBQWdCLEtBQUssV0FBVyxhQUFhLG1GQUFtRiw4Q0FBOEMsd0JBQXdCLFNBQVMsZ0JBQWdCLG9CQUFvQjtBQUNqZSxjQUFjLDZFQUE2RSwwREFBMEQsMkNBQTJDLG9CQUFvQixVQUFVLDBDQUEwQyxzQ0FBc0MsR0FBRyxxQkFBcUIseUJBQXlCLElBQUksa0JBQWtCLElBQUksUUFBUSxTQUFTLGNBQWMsbURBQW1ELEtBQUssUUFBUSxXQUFXLGdCQUFnQixLQUFLLGVBQWUsR0FBRztBQUMxZ0IsT0FBTyxNQUFNLDZCQUE2Qix5QkFBeUIsZ0NBQWdDLDRCQUE0QixpQkFBaUIsT0FBTywyQkFBMkIsZ0JBQWdCLGVBQWUsMEdBQTBHLEtBQUssU0FBUyxLQUFLLHdCQUF3QixJQUFJLHlCQUF5QixPQUFPLFFBQVEsd0JBQXdCLElBQUksZ0JBQWdCLHdCQUF3QixJQUFJLGtCQUFrQjtBQUM1ZSxhQUFhLElBQUksa0JBQWtCLElBQUksWUFBWSxtQ0FBbUMsb0JBQW9CLG9CQUFvQixpQkFBaUIsMENBQTBDLGdCQUFnQixpREFBaUQsS0FBSyxlQUFlLGtCQUFrQixxQkFBcUIscUJBQXFCLHNJQUFzSSxvQ0FBb0M7QUFDcGYsNkJBQTZCLG9DQUFvQyxJQUFJLG9CQUFvQixxQ0FBcUMsUUFBUSxXQUFXLDBDQUEwQywwQ0FBMEMsMENBQTBDLHVCQUF1QixTQUFTLG9EQUFvRCw4Q0FBOEMsU0FBUyxjQUFjLFdBQVcsNERBQTREO0FBQy9lLHlDQUF5QyxjQUFjLHFCQUFxQixlQUFlLGtCQUFrQix3REFBd0QsMERBQTBELGNBQWMsZUFBZSw4RUFBOEUsTUFBTSx5Q0FBeUMsU0FBUyxjQUFjLGVBQWUsbUJBQW1CLFdBQVcsbUJBQW1CLDhCQUE4QixhQUFhO0FBQzNmLGNBQWMsdUVBQXVFLGtCQUFrQixhQUFhLDBGQUEwRix1QkFBdUIsY0FBYyxtS0FBbUssS0FBSyxtQkFBbUIsR0FBRyxPQUFPLHlCQUF5QixJQUFJO0FBQ3JkLFlBQVksS0FBSyxRQUFRLEtBQUssNkJBQTZCLFNBQVMseUJBQXlCLEVBQUUsS0FBSyxXQUFXLGlGQUFpRixJQUFJLCtKQUErSix5QkFBeUI7QUFDNVgsbUJBQW1CLG1CQUFtQixHQUFHLFlBQVksVUFBVSxpQkFBaUIsK0JBQStCLHVCQUF1QiwyQkFBMkIsa0JBQWtCLFFBQVEsUUFBUSxXQUFXLG9FQUFvRSxhQUFhLE9BQU8sZ0JBQWdCLDBEQUEwRCw4QkFBOEIsdUVBQXVFLFVBQVUsRUFBRSw2QkFBNkI7QUFDOWYsY0FBYyx5Q0FBeUMsU0FBUyxnQkFBZ0IsUUFBUSx1RUFBdUUsUUFBUSxxQ0FBcUMsa0JBQWtCLEVBQUUsY0FBYyxtQkFBbUIsZUFBZSxjQUFjLHFCQUFxQixTQUFTLHFGQUFxRiw0QkFBNEIsOEJBQThCLHVCQUF1QjtBQUNsZSxHQUFHLDJCQUEyQixpQkFBaUIsaUJBQWlCLHVDQUF1QyxRQUFRLGNBQWMsV0FBVyxZQUFZLGtCQUFrQixXQUFXLFlBQVksbUJBQW1CLGVBQWUsa0JBQWtCLHdDQUF3QyxzREFBc0QsVUFBVSxxQkFBcUIsOEJBQThCO0FBQzVZLHFIQUFxSCx3REFBd0QsNkJBQTZCLDJCQUEyQixzQkFBc0IseUJBQXlCLFFBQVEsNkJBQTZCLHFDQUFxQyx1RkFBdUYsb0JBQW9CLEtBQUssZUFBZSxnQkFBZ0I7QUFDN2UsK0RBQStELGlMQUFpTCxtQ0FBbUMsUUFBUSxXQUFXLDJCQUEyQixTQUFTLG9EQUFvRCxTQUFTLDJCQUEyQiwwQkFBMEI7QUFDNWIsVUFBVSxvREFBb0Qsc0JBQXNCLGtDQUFrQyxtREFBbUQsMEhBQTBILHFCQUFxQix5REFBeUQsZUFBZSxLQUFLLEdBQUcsS0FBSyxNQUFNLEdBQUcsNkNBQTZDLGVBQWUsT0FBTyxLQUFLLFVBQVUsYUFBYTtBQUNyZixTQUFTLGlEQUFpRCxLQUFLLFFBQVEsMkNBQTJDLGdGQUFnRixZQUFZLGNBQWMsVUFBVSxpQkFBaUIsTUFBTSxLQUFLLDZEQUE2RCxVQUFVLFVBQVUsbURBQW1ELEtBQUssVUFBVSwrREFBK0Q7QUFDcGQsMkNBQTJDLE1BQU0saUZBQWlGLE1BQU0sOEZBQThGLFNBQVMsMEJBQTBCLDhCQUE4QiwwQ0FBMEMsd0RBQXdELG9CQUFvQixpQkFBaUIsc0JBQXNCLDBCQUEwQjtBQUM5ZCxNQUFNLDZEQUE2RCxTQUFTLDZCQUE2QixzQkFBc0IsZUFBZSxRQUFRLGVBQWUsbUZBQW1GLE1BQU0sUUFBUSxXQUFXLHNCQUFzQiw2QkFBNkIsZ0NBQWdDLGtEQUFrRCw4QkFBOEIsd0JBQXdCLDhCQUE4QjtBQUMxZSw2QkFBNkIsb0NBQW9DLGtEQUFrRCxxQ0FBcUMsOEdBQThHLGdDQUFnQyxRQUFRLHNCQUFzQiwrQkFBK0IsUUFBUSxXQUFXLEtBQUssT0FBTywwREFBMEQsS0FBSyxRQUFRLFdBQVc7QUFDcGQsa05BQWtOLHlEQUF5RCxFQUFFLElBQUksZ0JBQWdCLGVBQWUsdUJBQXVCLDBCQUEwQiw4QkFBOEIsbUJBQW1CLElBQUksa0NBQWtDLFNBQVMsUUFBUSx1QkFBdUI7QUFDaGUsd0JBQXdCLDBEQUEwRCxVQUFVLDJCQUEyQixrQkFBa0Isb0NBQW9DLGNBQWMsNkJBQTZCLGNBQWMsOENBQThDLDhEQUE4RCxzREFBc0Qsc0ZBQXNGLElBQUk7QUFDbGUsb0VBQW9FLHFDQUFxQywrQ0FBK0MsUUFBUSxXQUFXLG1CQUFtQixLQUFLLFlBQVksc0VBQXNFLEVBQUUsaU5BQWlOO0FBQ3hlLDJCQUEyQixTQUFTLGdDQUFnQywwQkFBMEIsZ0VBQWdFLHFCQUFxQixrQkFBa0IsNkJBQTZCLHVCQUF1QixVQUFVLDhCQUE4QiwwQkFBMEIsb0JBQW9CLGlEQUFpRCx3Q0FBd0Msd0NBQXdDO0FBQ2hkLDhDQUE4Qyw4Q0FBOEMseUJBQXlCLHFCQUFxQixTQUFTLG9CQUFvQiwwQ0FBMEMsY0FBYywyQkFBMkIsZ0NBQWdDLE9BQU8sZ0NBQWdDLElBQUksa0ZBQWtGLDhCQUE4QixlQUFlLHFEQUFxRCxJQUFJLEtBQUs7QUFDbGdCLEdBQUcsU0FBUyxJQUFJLElBQUksOENBQThDLDZEQUE2RCx3Q0FBd0Msd0JBQXdCLDhCQUE4QiwrQkFBK0IsNkJBQTZCLGtDQUFrQyxtQ0FBbUMsK0JBQStCLE9BQU8scUJBQXFCLHNCQUFzQiw4Q0FBOEMsdUJBQXVCO0FBQ3BmLGtDQUFrQyxPQUFPLHlCQUF5QixzREFBc0QsbUVBQW1FLG1CQUFtQiw4QkFBOEIsMEJBQTBCLHlCQUF5Qiw2Q0FBNkMsMEJBQTBCLGtDQUFrQyw4QkFBOEIsd0JBQXdCLDhDQUE4Qyx5QkFBeUI7QUFDcmdCLGlDQUFpQyxvQkFBb0IseURBQXlELDRDQUE0Qyw0Q0FBNEMsNENBQTRDLHdCQUF3Qiw2QkFBNkIsK0NBQStDLG1EQUFtRCxNQUFNLG1EQUFtRCxNQUFNO0FBQ3hjLE1BQU0sbURBQW1ELE1BQU0sK0NBQStDLE1BQU0sdURBQXVELGtDQUFrQyxjQUFjLCtCQUErQixpQ0FBaUMsa0NBQWtDLGdDQUFnQyxvQkFBb0IsMEVBQTBFLGlCQUFpQixvQkFBb0IsTUFBTTtBQUN0ZSxJQUFJLE1BQU0sb0JBQW9CLE1BQU0sb0JBQW9CLHdCQUF3Qix3Q0FBd0MsK0JBQStCLEtBQUssMERBQTBELGlCQUFpQix1RUFBdUUsVUFBVSxxQ0FBcUMsMEJBQTBCLCtCQUErQixjQUFjLGtDQUFrQyx3Q0FBd0M7QUFDOWUsR0FBRyx3QkFBd0IsUUFBUSxVQUFVLGFBQWEseUJBQXlCLGVBQWUsaUNBQWlDLGtCQUFrQix5Q0FBeUMsMEJBQTBCLHVMQUF1TCxpQkFBaUIsZ0JBQWdCLG1CQUFtQixxQkFBcUIsa0JBQWtCLGFBQWEsa0JBQWtCO0FBQ3pnQixHQUFHLDhCQUE4Qiw4QkFBOEIsNEJBQTRCLG1CQUFtQix5Q0FBeUMsd0NBQXdDLHFFQUFxRSxvQkFBb0IsYUFBYSxVQUFVLG1CQUFtQixzQ0FBc0MsZ0JBQWdCLGVBQWUsdUJBQXVCLDRFQUE0RSxPQUFPLGdCQUFnQjtBQUNqZ0IsWUFBWSxrQkFBa0IsZ0JBQWdCLHFCQUFxQixvQkFBb0IsaUNBQWlDLHFDQUFxQyw0Q0FBNEMsb0JBQW9CLG1DQUFtQyxrREFBa0QsZ0NBQWdDLG9DQUFvQyx5Q0FBeUMsZ0RBQWdELG1CQUFtQjtBQUNsZSxHQUFHLFFBQVEsVUFBVSxZQUFZLFlBQVksb0JBQW9CLFNBQVMsNERBQTRELHFCQUFxQixxQkFBcUIsRUFBRSxnQ0FBZ0Msd0JBQXdCLHVDQUF1Qyx3QkFBd0IsU0FBUyxlQUFlLHFDQUFxQyxxQ0FBcUMsbUJBQW1CLHVCQUF1QixrRUFBa0U7QUFDdmYsV0FBVyxlQUFlLFdBQVcsNllBQTZZLE1BQU0seUJBQXlCLHNCQUFzQjtBQUN2ZSxxQkFBcUIsV0FBVyxhQUFhLDhCQUE4QixXQUFXLGdGQUFnRixzQkFBc0IscUJBQXFCLG1EQUFtRCxvRUFBb0Usb0NBQW9DLGtDQUFrQyxTQUFTLGFBQWEsVUFBVSxjQUFjLG9DQUFvQyxRQUFRLE1BQU0sT0FBTztBQUNyZixPQUFPLHlCQUF5QixXQUFXLGdCQUFnQiwyQ0FBMkMsa0NBQWtDLGVBQWUsS0FBSyxvQkFBb0IsZ0JBQWdCLCtFQUErRSxpQkFBaUIsT0FBTyxXQUFXLFlBQVksWUFBWSxXQUFXLGNBQWMsZUFBZSxnQkFBZ0IsS0FBSyxzQkFBc0IsVUFBVSxrQkFBa0IseUNBQXlDLGlCQUFpQjtBQUNuZixNQUFNLEVBQUUseUdBQXlHLDRGQUE0Rix3QkFBd0Isc0JBQXNCLGdCQUFnQixpQkFBaUIsUUFBUSxJQUFJLHdCQUF3QixnQkFBZ0IsaUJBQWlCLFFBQVEsR0FBRywyQ0FBMkMsb0VBQW9FLFlBQVksSUFBSSxhQUFhO0FBQ3hmLGlCQUFpQixhQUFhLE1BQU0sdURBQXVELFNBQVMscUJBQXFCLFdBQVcsUUFBUSxnQ0FBZ0MsMkJBQTJCLFVBQVUsV0FBVyxFQUFFLDJCQUEyQixJQUFJLDBDQUEwQyxnQkFBZ0IsZ0JBQWdCLG1CQUFtQixlQUFlLGtCQUFrQixRQUFRLGdCQUFnQixxQ0FBcUMsa0JBQWtCO0FBQzFjLDhCQUE4QiwrQkFBK0IsU0FBUyx1QkFBdUIsb0VBQW9FLG1CQUFtQixpQkFBaUIsZ0NBQWdDLHFCQUFxQix3QkFBd0Isc0RBQXNELHlCQUF5Qix3QkFBd0IsdUVBQXVFLDZCQUE2QjtBQUM3ZCxZQUFZLElBQUksU0FBUyxHQUFHLHlCQUF5QixlQUFlLFlBQVksV0FBVywwQkFBMEIsY0FBYyxzQkFBc0Isd0NBQXdDLGlEQUFpRCxLQUFLLEtBQUssV0FBVyxLQUFLLFdBQVcsb0NBQW9DLEtBQUssMEJBQTBCLFVBQVUsa0JBQWtCLGNBQWMsMkNBQTJDO0FBQy9hLG9EQUFvRCxZQUFZLFdBQVcsMEJBQTBCLFdBQVcsS0FBSyxXQUFXLGlCQUFpQixPQUFPLFlBQVksUUFBUSxvSkFBb0osU0FBUyx1QkFBdUIsUUFBUSxlQUFlLDBCQUEwQiwyQkFBMkIsV0FBVyxZQUFZLDJCQUEyQixVQUFVO0FBQ3hlLDhCQUE4QixJQUFJLG1HQUFtRyw4REFBOEQsVUFBVSxPQUFPLHVDQUF1QyxXQUFXLDBCQUEwQiwyQkFBMkIsS0FBSyxpR0FBaUcsd0JBQXdCLFFBQVEsZ0JBQWdCO0FBQ2pkLEtBQUssa0JBQWtCLGtDQUFrQyxFQUFFLHNCQUFzQiwwQkFBMEIsMkNBQTJDLE9BQU8seUJBQXlCLG9CQUFvQixjQUFjLGtCQUFrQixjQUFjLFFBQVEsYUFBYSxZQUFZLHdCQUF3QixvQkFBb0IsdUJBQXVCLHFCQUFxQiw2RUFBNkUsMkJBQTJCLGlCQUFpQix5QkFBeUI7QUFDbmdCLG1CQUFtQixvSUFBb0ksb0JBQW9CLHFCQUFxQiw0QkFBNEIsU0FBUywwQkFBMEIscUJBQXFCLG1CQUFtQixrREFBa0QscUJBQXFCLDZCQUE2QixvREFBb0Qsa0JBQWtCLDBCQUEwQjtBQUMzZSxlQUFlLG9HQUFvRyxpRUFBaUUsMklBQTJJLHFHQUFxRyxlQUFlLG1CQUFtQjtBQUN0Yyw0QkFBNEIsaURBQWlELFVBQVUsaUJBQWlCLGtCQUFrQix5QkFBeUIsbUNBQW1DLHVCQUF1QiwyREFBMkQsOEJBQThCLGtEQUFrRCwwREFBMEQsc0JBQXNCLHNDQUFzQyxvQkFBb0IsRUFBRTtBQUNwZSxXQUFXLDhCQUE4QixFQUFFLGtCQUFrQixxREFBcUQsbUNBQW1DLDZCQUE2QixxQ0FBcUMseUJBQXlCLHNDQUFzQyxxQ0FBcUMsYUFBYSxzQ0FBc0MsY0FBYyxFQUFFLDJDQUEyQyxtQkFBbUIscUNBQXFDO0FBQ2plLDZCQUE2QixTQUFTLGFBQWEsdUJBQXVCLDZCQUE2QixTQUFTLGdCQUFnQiw2SkFBNkosYUFBYSxzQkFBc0Isd0JBQXdCLGdCQUFnQixvR0FBb0csa0JBQWtCLE1BQU07QUFDcGUsMkRBQTJELGNBQWMsNEJBQTRCLGVBQWUseUNBQXlDLEVBQUUsd0pBQXdKLCtDQUErQyxLQUFLLEVBQUUsU0FBUyxnQkFBZ0IscUNBQXFDLE1BQU0sMENBQTBDO0FBQzNkLE1BQU0sbUJBQW1CLFdBQVcsbVRBQW1ULDRIQUE0SDtBQUNuZCxzQ0FBc0Msd0VBQXdFLHVGQUF1RixtQ0FBbUMsMkJBQTJCLGtEQUFrRCwrQ0FBK0MsS0FBSyxFQUFFLGdFQUFnRSx1Q0FBdUMsY0FBYztBQUNoZSxXQUFXLEtBQUssRUFBRSxjQUFjLDRFQUE0RSxpREFBaUQsYUFBYSx3Q0FBd0MsdUVBQXVFLHVGQUF1RjtBQUNoWCxZQUFZLHFCQUFxQixLQUFLLEVBQUUsY0FBYywyQkFBMkIsMkJBQTJCLG9CQUFvQixTQUFTLEVBQUUsY0FBYyxLQUFLLEVBQUUsY0FBYyxjQUFjLGVBQWUsMkNBQTJDLDJCQUEyQix1RUFBdUUsd0dBQXdHO0FBQ2hjLHFDQUFxQyxtQ0FBbUMsK0NBQStDLG1CQUFtQixrQ0FBa0MsY0FBYyxnQkFBZ0IsMENBQTBDLDJDQUEyQywwQkFBMEIsVUFBVSwwQ0FBMEMsc0NBQXNDLEVBQUU7QUFDclosaVBBQWlQLFVBQVUsVUFBVSx3Q0FBd0Msc0NBQXNDLGdEQUFnRCxXQUFXLGdCQUFnQixXQUFXLEtBQUssV0FBVztBQUN6YixzQkFBc0IsNEJBQTRCLGtEQUFrRCxRQUFRLG9DQUFvQywwRUFBMEUsa0JBQWtCLHFCQUFxQix3Q0FBd0MsRUFBRSxFQUFFLGFBQWEsbUJBQW1CLHdEQUF3RCxxQkFBcUIsK0RBQStEO0FBQ3pkLGFBQWEsU0FBUyxTQUFTLGdCQUFnQixjQUFjLDhFQUE4RSxrREFBa0QseUVBQXlFLHNCQUFzQixjQUFjLHVCQUF1QixnREFBZ0Qsc0RBQXNELFdBQVcsS0FBSyxvREFBb0Q7QUFDM2UseURBQXlELHdCQUF3QixxSkFBcUosb0NBQW9DLHNDQUFzQyxrQkFBa0IsYUFBYSxpREFBaUQsU0FBUyw2QkFBNkIsWUFBWSxXQUFXLEtBQUssV0FBVztBQUM3YyxDQUFDLHdCQUF3QixLQUFLLFVBQVUsMEJBQTBCLHVCQUF1QixtRUFBbUUscUJBQXFCLDBCQUEwQiwwQkFBMEIsY0FBYyxrQkFBa0IsOEVBQThFLGNBQWMsNkJBQTZCLDREQUE0RDtBQUMxYiwrQ0FBK0Msa0JBQWtCLElBQUksMkJBQTJCLDZCQUE2Qiw2QkFBNkIsR0FBRyxxQkFBcUIsdUNBQXVDLDJCQUEyQixpQkFBaUIsb0JBQW9CLGdDQUFnQyx1RUFBdUUsT0FBTywwQkFBMEIsRUFBRSx5QkFBeUIsd0JBQXdCLHFCQUFxQjtBQUN6ZSxzQkFBc0IsNkNBQTZDLHlCQUF5QixPQUFPLHNCQUFzQixrQkFBa0Isc0JBQXNCLDhEQUE4RCx3QkFBd0Isc0JBQXNCLHdDQUF3QywyQkFBMkIsNEJBQTRCLHdCQUF3QixZQUFZO0FBQ2haLHVGQUF1Rix3QkFBd0Isd0JBQXdCLHFCQUFxQiwrQkFBK0Isa0JBQWtCLHVJQUF1SSxHQUFHLGFBQWEsMkJBQTJCLG1CQUFtQix3QkFBd0IsK0JBQStCO0FBQ3pjLDRFQUE0RSxTQUFTLDBCQUEwQiw0QkFBNEIseUJBQXlCLGFBQWEsbUVBQW1FLGlDQUFpQywyQ0FBMkMsaUNBQWlDLG9CQUFvQixFQUFFLEdBQUcsYUFBYSwyQkFBMkIsd0JBQXdCLGdDQUFnQyx5QkFBeUI7QUFDbmYsV0FBVyx1SUFBdUksNEJBQTRCLHdCQUF3QiwyQkFBMkIsRUFBRSx3QkFBd0IsMEJBQTBCLDJCQUEyQiw2QkFBNkIsNkJBQTZCLCtEQUErRCxvQ0FBb0MsU0FBUyx1QkFBdUI7QUFDN2UsR0FBRyw4RkFBOEYsZ0NBQWdDLFFBQVEsV0FBVyw2Q0FBNkMsNENBQTRDLHVCQUF1QixrQkFBa0IseUJBQXlCLHVCQUF1QixzRUFBc0UsdUJBQXVCLHdDQUF3QywwQkFBMEIsb0JBQW9CO0FBQ3pmLHdCQUF3QiwySUFBMkksSUFBSSw0RUFBNEUsbUNBQW1DLG9EQUFvRCxNQUFNLHdGQUF3RiwyQ0FBMkMsd0NBQXdDO0FBQzNmLGFBQWEsd0JBQXdCLGlDQUFpQyw2QkFBNkIsbUJBQW1CLDZPQUE2TyxrQ0FBa0Msc0RBQXNEO0FBQzNiLCtJQUErSSw4QkFBOEIsU0FBUyx1QkFBdUIsb0RBQW9ELHdCQUF3QixpQ0FBaUMsRUFBRSw4Q0FBOEMsMENBQTBDLGtDQUFrQztBQUN0YixDQUFDLDhCQUE4QixzREFBc0QsVUFBVSxTQUFTLGdFQUFnRSw4RUFBOEUsa0JBQWtCLHdDQUF3QyxpQkFBaUIsaURBQWlELGtCQUFrQixFQUFFLE9BQU87QUFDN1kseUNBQXlDLDZCQUE2QixFQUFFLDZCQUE2QixvR0FBb0csNkJBQTZCLEdBQUcsSUFBSSxrQkFBa0IsbUJBQW1CLHdEQUF3RCwrQ0FBK0MsNkNBQTZDLHdEQUF3RDtBQUM5ZCw4U0FBOFM7QUFDOVMsa0ZBQWtGLFFBQVEsb0tBQW9LLFlBQVkseUZBQXlGLGtJQUFrSTtBQUNyZSxDQUFDLHNCQUFzQix3QkFBd0Isb0JBQW9CLHFCQUFxQix1QkFBdUIsbUJBQW1CLGtCQUFrQixnQ0FBZ0MsRUFBRSxVQUFVLHlDQUF5QyxvQkFBb0Isa0NBQWtDLGdHQUFnRyxtQkFBbUIsU0FBUyxrQkFBa0IsZ0JBQWdCLG9DQUFvQyxRQUFRLFVBQVU7QUFDbmYsT0FBTyxVQUFVLFlBQVksRUFBRSx5QkFBeUIsdUJBQXVCLGlEQUFpRCxzQkFBc0Isb0NBQW9DLGlDQUFpQyxxREFBcUQsK0RBQStELGFBQWEsUUFBUSxXQUFXLFFBQVEsb0JBQW9CLDZCQUE2Qiw0QkFBNEIsMERBQTBEO0FBQzlmLHdCQUF3Qix5REFBeUQsd0NBQXdDLHNCQUFzQixxQ0FBcUMsa0JBQWtCLHNCQUFzQixxQkFBcUIseUNBQXlDLG1CQUFtQixzQkFBc0Isa0JBQWtCLGlCQUFpQixpQkFBaUIscUJBQXFCLDZCQUE2QixnQkFBZ0IsV0FBVywwQkFBMEI7QUFDOWQsYUFBYSxvQ0FBb0Msa0JBQWtCLHdGQUF3RixjQUFjLGtCQUFrQixjQUFjLGlCQUFpQix5QkFBeUIsMEdBQTBHLGNBQWMsa0JBQWtCLE9BQU8scUJBQXFCLGlCQUFpQix5QkFBeUI7QUFDbmMsWUFBWSxxQkFBcUIsaUJBQWlCLGdCQUFnQixZQUFZLHFCQUFxQixxQkFBcUIsMEJBQTBCLHNEQUFzRCxtQkFBbUIsWUFBWSxtREFBbUQsZ0JBQWdCLHFCQUFxQiwwQkFBMEIsNERBQTRELGlCQUFpQixhQUFhLG1CQUFtQixlQUFlLEtBQUssaUNBQWlDLEVBQUU7QUFDN2YsV0FBVyxZQUFZLHNCQUFzQixvQkFBb0IsWUFBWSxTQUFTLHFCQUFxQix5REFBeUQsOEJBQThCLGVBQWUsd0RBQXdELGFBQWEsUUFBUSxnQkFBZ0IsMkZBQTJGLGdEQUFnRCxpQkFBaUI7QUFDMWMsR0FBRyxvREFBb0QsYUFBYSxTQUFTLHlCQUF5QixrQkFBa0IsdUJBQXVCLDBCQUEwQixxQ0FBcUMsYUFBYSxRQUFRLGlCQUFpQix1RkFBdUYsNkNBQTZDLHFFQUFxRSx5QkFBeUIsa0JBQWtCLG9CQUFvQixFQUFFO0FBQzlmLHdCQUF3QixzQ0FBc0MsY0FBYyx3RkFBd0YsMkNBQTJDLGlDQUFpQyxzQkFBc0IsYUFBYSxHQUFHLDhGQUE4RixhQUFhLGVBQWUsd0JBQXdCLHVCQUF1QixxQkFBcUIsRUFBRTtBQUN0ZCxXQUFXLGlCQUFpQixpQkFBaUIsUUFBUSxvQ0FBb0MsWUFBWSxjQUFjLDZHQUE2Ryw2QkFBNkIsdUJBQXVCLHdFQUF3RSxVQUFVLDJCQUEyQixFQUFFLE9BQU8sd0RBQXdELGlCQUFpQixLQUFLO0FBQ3hkLDBDQUEwQyxzREFBc0QsY0FBYyxNQUFNLDBCQUEwQixXQUFXLEtBQUsscUVBQXFFLHFJQUFxSSxhQUFhLEtBQUssU0FBUyxnQkFBZ0IsY0FBYyx1REFBdUQ7QUFDeGQsS0FBSyxvR0FBb0csa0JBQWtCLFVBQVUsUUFBUSxtREFBbUQsK0dBQStHLDZEQUE2RCxnQkFBZ0Isa0VBQWtFLFFBQVE7QUFDdGMsMEdBQTBHLGdCQUFnQixnSEFBZ0gscU5BQXFOLDhCQUE4QjtBQUM3ZCxHQUFHLCtCQUErQixvQkFBb0Isa0JBQWtCLEtBQUssaUJBQWlCLEtBQUssZUFBZSwwQ0FBMEMsT0FBTyxzQkFBc0IscUJBQXFCLEtBQUssS0FBSyx1SEFBdUgsc0NBQXNDO0FBQ3JYLHNCQUFzQiw2RUFBNkUsTUFBTSxxRUFBcUUseUVBQXlFLEtBQUssYUFBYSxNQUFNLEtBQUssSUFBSSxXQUFXLHNCQUFzQix5QkFBeUIscUJBQXFCLEtBQUsscUJBQXFCLGNBQWMsT0FBTyxzQkFBc0IsZ0JBQWdCO0FBQzViLFNBQVMsU0FBUyxRQUFRLFdBQVcsS0FBSyxXQUFXLGNBQWMsSUFBSSwwT0FBME8sY0FBYyxtQkFBbUIsY0FBYyxtQkFBbUIscUJBQXFCLDZGQUE2RjtBQUNyZSx3RUFBd0UseURBQXlELEtBQUssSUFBSSxJQUFJLDhCQUE4QixHQUFHLGtCQUFrQixrQ0FBa0MsNkJBQTZCLE1BQU0sV0FBVyxzQkFBc0IseUNBQXlDLHdCQUF3QixJQUFJLElBQUksMkNBQTJDLFdBQVcsUUFBUSxLQUFLLGlCQUFpQixLQUFLLFVBQVU7QUFDbmQsQ0FBQyx1REFBdUQsbUNBQW1DLGtDQUFrQyxNQUFNLDRHQUE0RyxvQkFBb0IsWUFBWSxPQUFPLFNBQVMsYUFBYSxjQUFjLDRCQUE0QiwrSEFBK0gsc0JBQXNCO0FBQzNlLGlCQUFpQiw0QkFBNEIsZ0NBQWdDLGtDQUFrQywyQkFBMkIsb0NBQW9DLDZCQUE2QixRQUFRLHVCQUF1Qiw0Q0FBNEMseUJBQXlCLGtCQUFrQiwwQkFBMEIsbUNBQW1DLDhCQUE4Qix1Q0FBdUMsK0JBQStCLElBQUk7QUFDdGUsZUFBZSxJQUFJLHNCQUFzQix5QkFBeUIsdUNBQXVDLFdBQVcsZ0JBQWdCLFlBQVksV0FBVyw0RUFBNEUsOEJBQThCLGVBQWUsbUNBQW1DLDJCQUEyQixhQUFhLGNBQWMsb0JBQW9CLFFBQVEsb0RBQW9ELHVEQUF1RCxjQUFjO0FBQ2xnQiwrQkFBK0IsNEJBQTRCLDhCQUE4QixzQkFBc0Isd0JBQXdCLHFCQUFxQix3QkFBd0IscUJBQXFCLHVCQUF1QixRQUFRLHVCQUF1QixNQUFNLHlEQUF5RCwyQkFBMkIseUJBQXlCLEVBQUUsa0VBQWtFO0FBQ3RiLEtBQUssaURBQWlELHVEQUF1RCx1Q0FBdUMsZ0RBQWdELHVDQUF1QyxxQkFBcUIsZUFBZSw2QkFBNkIsNkNBQTZDLCtCQUErQiwrQ0FBK0Msd0JBQXdCLGtDQUFrQztBQUNqZSxLQUFLLHFDQUFxQyxzQkFBc0IsZ0NBQWdDLHlCQUF5QiwwRkFBMEYsSUFBSSxlQUFlLG1CQUFtQixzQkFBc0IsbUNBQW1DLDJCQUEyQixTQUFTLHNCQUFzQixhQUFhO0FBQ3pYLCtGQUErRiwrQkFBK0IseURBQXlELEVBQUUsdUNBQXVDLGFBQWEsb0JBQW9CLHVDQUF1Qyw2QkFBNkIsRUFBRSx5QkFBeUIsK0NBQStDLElBQUksWUFBWSxnQ0FBZ0MsRUFBRSxzQ0FBc0MsdUJBQXVCO0FBQzlmLHdCQUF3QixzQkFBc0IsS0FBSyxXQUFXLG9CQUFvQixpS0FBaUssUUFBUSxJQUFJLGlJQUFpSSx3QkFBd0IsaURBQWlELG9CQUFvQixTQUFTO0FBQ3RlLEdBQUcsc0NBQXNDLE9BQU8seUlBQXlJLFdBQVcsY0FBYyxnQkFBZ0IsY0FBYywrR0FBK0csbUJBQW1CLEVBQUUsZ0JBQWdCLG1CQUFtQiw0Q0FBNEMsb0JBQW9CLDJCQUEyQixFQUFFO0FBQ3BmLDBGQUEwRixRQUFRLFdBQVcsa0JBQWtCLG1TQUFtUyxpQkFBaUIsZ0JBQWdCO0FBQ25jLHFEQUFxRCxNQUFNLDZRQUE2USxPQUFPLFlBQVksdUNBQXVDLE1BQU0sbUNBQW1DLHVEQUF1RCxlQUFlO0FBQ2pmLFlBQVksbUJBQW1CLG1EQUFtRCxtQkFBbUIsdUVBQXVFLEtBQUssYUFBYSxRQUFRLFVBQVUsV0FBVyx5RUFBeUUsSUFBSSxTQUFTLGdCQUFnQix1RUFBdUUsY0FBYyxzQ0FBc0MsUUFBUSxjQUFjLFNBQVMsY0FBYyxpQkFBaUI7QUFDMWYsS0FBSyxjQUFjLFNBQVMsY0FBYyxtSUFBbUksY0FBYyxnR0FBZ0csZ0JBQWdCLHNDQUFzQyxtQkFBbUIsV0FBVywyQkFBMkIsY0FBYyxlQUFlO0FBQ3ZhLDBCQUEwQixjQUFjLGVBQWUsK0JBQStCLHFDQUFxQyxNQUFNLG1DQUFtQyxnQkFBZ0IsbUNBQW1DLHlDQUF5QyxpR0FBaUcsU0FBUyxFQUFFLGdCQUFnQixtQ0FBbUMsOERBQThELHdCQUF3QjtBQUNyZixxQkFBcUIseUVBQXlFLEVBQUUsY0FBYyxpQ0FBaUMsNkJBQTZCLEVBQUUsY0FBYyw2QkFBNkIsY0FBYyw4QkFBOEIsb0JBQW9CLEVBQUUseURBQXlELEVBQUUsY0FBYywyQkFBMkIsZUFBZSxFQUFFLEdBQUcsaUNBQWlDLDZCQUE2QixFQUFFLGdCQUFnQjtBQUNuZSwyQkFBMkIsZUFBZSxpQ0FBaUMsNkJBQTZCLGFBQWEscUJBQXFCLGlCQUFpQixtQkFBbUIsRUFBRSxrQkFBa0IscUVBQXFFLEtBQUssNEJBQTRCLDJCQUEyQiw0SEFBNEgsaURBQWlELGVBQWU7QUFDL2YsV0FBVyx5QkFBeUIsRUFBRSxZQUFZLFdBQVcsaUNBQWlDLDhCQUE4QixZQUFZLEVBQUUsNEJBQTRCLGVBQWUseUJBQXlCLEVBQUUsOEJBQThCLHVCQUF1QixFQUFFLGdFQUFnRSxFQUFFLDhHQUE4RywyQkFBMkIsZUFBZTtBQUNqZSxHQUFHLDhCQUE4QixRQUFRLDBCQUEwQixFQUFFLEVBQUUsRUFBRSx5RkFBeUYsbURBQW1ELEVBQUUsTUFBTSx1Q0FBdUMsZUFBZSxjQUFjLGlEQUFpRCxpREFBaUQsZ0RBQWdELGNBQWMsY0FBYyxjQUFjLEVBQUU7QUFDL2QsQ0FBQyxjQUFjLEVBQUUsY0FBYyxjQUFjLGNBQWMsRUFBRSx3QkFBd0IsY0FBYyxFQUFFLDBCQUEwQixNQUFNLHFDQUFxQywrRUFBK0UsU0FBUyw0TkFBNE4sR0FBRztBQUNqZSwrQ0FBK0Msa0dBQWtHLDhCQUE4QixpQkFBaUIsd0JBQXdCLG1EQUFtRCx5Q0FBeUMsc0JBQXNCLE9BQU8sT0FBTyw2REFBNkQsdURBQXVEO0FBQzVjLGlEQUFpRCxjQUFjLGNBQWMsMEJBQTBCLHNHQUFzRyxjQUFjLDBCQUEwQixpREFBaUQsZUFBZSwwQkFBMEIsU0FBUyx3REFBd0QsdUJBQXVCLGdCQUFnQixpQkFBaUIsZUFBZSxnQ0FBZ0M7QUFDdmYsaUJBQWlCLHFFQUFxRSxvSEFBb0gsY0FBYyxnQ0FBZ0MsaURBQWlELGVBQWUsZ0NBQWdDLDhDQUE4QyxlQUFlLGdDQUFnQyxrQ0FBa0MsVUFBVTtBQUNqZSxnQkFBZ0IsT0FBTyxTQUFTLG1CQUFtQixnQkFBZ0Isc0NBQXNDLHlCQUF5QiwwQkFBMEIsd0hBQXdILHdDQUF3Qyx3QkFBd0IsbUhBQW1ILFlBQVksNEJBQTRCO0FBQy9lLElBQUksMENBQTBDLGtEQUFrRCx3Q0FBd0Msc0ZBQXNGLFlBQVksMkJBQTJCLHdCQUF3Qiw2QkFBNkIsd0JBQXdCLG1DQUFtQyxjQUFjLGdCQUFnQixhQUFhLGNBQWM7QUFDOWEsMEJBQTBCLDRCQUE0QixVQUFVLG9CQUFvQixJQUFJLCtHQUErRyxtQkFBbUIsbUNBQW1DLDREQUE0RCxrSUFBa0ksSUFBSSxVQUFVLGtCQUFrQixlQUFlO0FBQzFlLFFBQVEsK0NBQStDLDBCQUEwQiw0QkFBNEIsZUFBZSxtQkFBbUIsc0ZBQXNGLElBQUksa0pBQWtKLGNBQWMsbUJBQW1CLE1BQU0sK0JBQStCLHNDQUFzQyxXQUFXO0FBQ2xmLDhDQUE4QyxTQUFTLG1CQUFtQix1Q0FBdUMsUUFBUSx1SEFBdUgsMEVBQTBFLGdCQUFnQixFQUFFLG1CQUFtQixjQUFjLGFBQWEsU0FBUyxrQkFBa0IseURBQXlELGtCQUFrQjtBQUNoZSw2QkFBNkIsa0JBQWtCLCtCQUErQixvQ0FBb0MsbUJBQW1CLG9CQUFvQixtREFBbUQsa0RBQWtELG1CQUFtQixvQkFBb0Isd0NBQXdDLDJDQUEyQyxvQkFBb0IsYUFBYSxvQkFBb0I7QUFDN2EsaURBQWlELHNCQUFzQix3QkFBd0IsdUJBQXVCLEVBQUUsRUFBRTtBQUMxSCxzR0FBc0csYUFBYSxnQkFBZ0IsWUFBWSxXQUFXLEtBQUssV0FBVyxjQUFjLHNCQUFzQixTQUFTLGNBQWMsNkRBQTZELCtDQUErQyxxQkFBcUIscUJBQXFCLEtBQUssY0FBYyxNQUFNLGtCQUFrQixxQkFBcUIsR0FBRyxxQkFBcUIsc0JBQXNCLFdBQVcsZUFBZTtBQUNuZ0IsZUFBZSxpQkFBaUIsRUFBRSxLQUFLLG1DQUFtQyxTQUFTLCtKQUErSixrQ0FBa0MsNEJBQTRCLElBQUksVUFBVSxtQkFBbUIsS0FBSyxPQUFPLGlCQUFpQixXQUFXLHlCQUF5QixVQUFVLEdBQUcsMERBQTBELFlBQVk7QUFDcmUsTUFBTSxpQkFBaUIsbUNBQW1DLFlBQVksK0pBQStKLHNDQUFzQyxnQ0FBZ0MsUUFBUSxpREFBaUQsMENBQTBDLFNBQVMscUZBQXFGLDBCQUEwQixjQUFjLFVBQVU7QUFDOWhCLGdCQUFnQiw0Q0FBNEMscUJBQXFCLEVBQUUsT0FBTyw2QkFBNkIsc0JBQXNCLHlJQUF5SSxxQkFBcUIsV0FBVyxxQ0FBcUMsR0FBRyxvQkFBb0IsWUFBWSxjQUFjLG1CQUFtQixrRkFBa0Y7QUFDamYsY0FBYyxPQUFPLE9BQU8sc0JBQXNCLDBDQUEwQywwRkFBMEYsc0RBQXNELGtFQUFrRSxzQkFBc0IsZUFBZSx3QkFBd0IsMkJBQTJCLE1BQU0sRUFBRSxTQUFTLHFEQUFxRCxTQUFTO0FBQ3JkLEdBQUcsMENBQTBDLG1CQUFtQiwrREFBK0QsZ0RBQWdELGVBQWUsUUFBUSxZQUFZLFlBQVkscURBQXFELFdBQVcsS0FBSyxZQUFZLE1BQU0sd0RBQXdELHVDQUF1QyxTQUFTLHlEQUF5RCxrQkFBa0I7QUFDeGUsMkJBQTJCLGVBQWUsNEJBQTRCLDRCQUE0QixJQUFJLGVBQWUsSUFBSSxrQ0FBa0MsK0JBQStCLDBCQUEwQiw0QkFBNEIsc0VBQXNFLG1DQUFtQyxFQUFFLDBCQUEwQixjQUFjLHdDQUF3Qyx3REFBd0Q7QUFDbmUsU0FBUyxtQ0FBbUMsSUFBSSxtREFBbUQsWUFBWSxvQkFBb0IsMENBQTBDLDBCQUEwQixtQkFBbUIscUJBQXFCLGtFQUFrRSx1QkFBdUIsSUFBSSxxQkFBcUIseUJBQXlCLDBDQUEwQyxrQkFBa0IsbUJBQW1CLG1CQUFtQjtBQUM1ZCwyQ0FBMkMsV0FBVyxrQkFBa0IsYUFBYSwyQkFBMkIsb0NBQW9DLHFDQUFxQyxTQUFTLG9CQUFvQixtQkFBbUIsV0FBVyxRQUFRLHVCQUF1QixLQUFLLHVCQUF1QiwrRUFBK0UscUNBQXFDLFNBQVMsdUJBQXVCO0FBQ25jLFlBQVksNENBQTRDLGtCQUFrQiwyQ0FBMkMsVUFBVSxFQUFFLGtCQUFrQixzQkFBc0Isc0JBQXNCLG1DQUFtQyx5Q0FBeUMseUJBQXlCLCtCQUErQixnSkFBZ0osc0JBQXNCO0FBQ3plLCtEQUErRCw4QkFBOEIsU0FBUyxPQUFPLGlDQUFpQyxFQUFFLHdMQUF3TCxhQUFhLHlCQUF5QixZQUFZLFdBQVcsb0JBQW9CLFVBQVUsS0FBSyxjQUFjLFFBQVEsSUFBSSxJQUFJLEdBQUcsOEJBQThCO0FBQ3ZlLHNCQUFzQixpREFBaUQsMkZBQTJGLDRCQUE0QixFQUFFLHNCQUFzQixxREFBcUQsZ0ZBQWdGLGFBQWEsOEZBQThGLDZCQUE2Qix3QkFBd0I7QUFDM2YsaUVBQWlFLEVBQUUsZUFBZSxrQkFBa0IsaUNBQWlDLDZCQUE2QixrQ0FBa0MsWUFBWSxTQUFTLG1DQUFtQyxXQUFXLGNBQWMsR0FBRyxpQkFBaUIsNEJBQTRCLDZDQUE2QyxpQ0FBaUMsYUFBYSxjQUFjLFNBQVMsNEJBQTRCLFdBQVcsMkJBQTJCLHFCQUFxQjtBQUM5Z0IsMkNBQTJDLCtEQUErRCx5RkFBeUYsOEJBQThCLHVDQUF1QyxrQkFBa0IsdUhBQXVIO0FBQ2paLHdXQUF3Vyx5QkFBeUIsa0JBQWtCLGNBQWMsY0FBYyx1QkFBdUIsd0JBQXdCLGVBQWU7QUFDN2UsaUJBQWlCLGVBQWUsaUJBQWlCLDRCQUE0QixzQ0FBc0MsZ0JBQWdCLDBCQUEwQixrQkFBa0IsdUNBQXVDLFlBQVksNEJBQTRCLGlCQUFpQixFQUFFLFVBQVUsOEJBQThCLFVBQVUsZ0dBQWdHLElBQUk7QUFDdmEsQ0FBQyxvQkFBb0IsK0RBQStELDZCQUE2QixrREFBa0QsRUFBRSwrQ0FBK0Msb0JBQW9CLHVDQUF1QyxrQkFBa0Isd0hBQXdILGlDQUFpQztBQUMxYixpRkFBaUYsd0JBQXdCLHlCQUF5QiwyS0FBMkssZUFBZSxpQkFBaUIsNEJBQTRCLHNDQUFzQyxHQUFHLEVBQUUsa0JBQWtCLFNBQVMsYUFBYSxvQ0FBb0M7QUFDaGUsWUFBWSxnS0FBZ0ssY0FBYyw2REFBNkQsb0JBQW9CLDJCQUEyQix1QkFBdUIscUNBQXFDLFNBQVMsWUFBWSxLQUFLLGFBQWEsSUFBSSxxQ0FBcUMsTUFBTSxLQUFLLFNBQVMscUNBQXFDLFFBQVEsWUFBWSxTQUFTO0FBQ3hnQiwrQ0FBK0MsS0FBSyxnRUFBZ0UsS0FBSyx5Q0FBeUMsV0FBVyx5QkFBeUIsU0FBUywwREFBMEQsUUFBUSxLQUFLLFNBQVMsUUFBUSxVQUFVLG9FQUFvRSxRQUFRLEtBQUssV0FBVyxNQUFNLFFBQVEsVUFBVSxRQUFRLHVEQUF1RDtBQUNwZSxzYUFBc2EsR0FBRyx5RUFBeUU7QUFDbGYsRUFBRSw0Q0FBNEMsb0NBQW9DLHVDQUF1QyxpQkFBaUIsa0JBQWtCLG1EQUFtRCx5RUFBeUUsdUJBQXVCLDZDQUE2QyxVQUFVLEVBQUUsc0JBQXNCLCtCQUErQixrREFBa0Qsa0NBQWtDO0FBQ2pmLHFDQUFxQywrQkFBK0Isd0RBQXdELFdBQVcsS0FBSyxrQkFBa0IsaUJBQWlCLGtDQUFrQyxrRkFBa0YsOENBQThDLGtDQUFrQyxxQkFBcUIsZ0RBQWdELCtCQUErQixTQUFTO0FBQ2hlLGNBQWMsMEJBQTBCLHVCQUF1QiwwQkFBMEIsV0FBVyxrREFBa0QsMkJBQTJCLGNBQWMsd0JBQXdCLG9DQUFvQyxnREFBZ0QsZUFBZSxPQUFPLG1DQUFtQyxVQUFVLHVDQUF1QywyQkFBMkIsU0FBUywrQkFBK0I7QUFDeGQsMEJBQTBCLHNCQUFzQiwrREFBK0QsSUFBSSxJQUFJLG1EQUFtRCxnSUFBZ0ksd0NBQXdDLDhEQUE4RCxJQUFJLHNFQUFzRSx3QkFBd0I7QUFDbGYscUJBQXFCLDBEQUEwRCwwRUFBMEUsVUFBVSxpREFBaUQsMEJBQTBCLG9CQUFvQixnRUFBZ0UsR0FBRyxtREFBbUQsbURBQW1ELDZCQUE2QixrRUFBa0UsRUFBRTtBQUM1Z0IsaURBQWlELGNBQWMsb0ZBQW9GLDRLQUE0SywyS0FBMks7QUFDMWUsOENBQThDLGdRQUFnUSxzQ0FBc0MsY0FBYyxnQkFBZ0IscUJBQXFCLDhDQUE4QztBQUNyYix5REFBeUQsY0FBYyx5QkFBeUIsMkZBQTJGLGNBQWMsa0JBQWtCLGdCQUFnQixtQkFBbUIsdUVBQXVFLHlIQUF5SCxjQUFjLCtDQUErQztBQUMzZixlQUFlLEVBQUUsY0FBYyxjQUFjLE9BQU8sd0JBQXdCLHFCQUFxQixpREFBaUQsa0NBQWtDLGtDQUFrQztBQUN0TixjQUFjLDJDQUEyQyxrQkFBa0Isb0pBQW9KLGNBQWMsNEhBQTRILGNBQWMsMkNBQTJDLGNBQWMsZUFBZSxrQ0FBa0Msc0JBQXNCLHVCQUF1QjtBQUM5Z0IsR0FBRyxrQkFBa0IsNkJBQTZCLGNBQWMsc0RBQXNELEtBQUssV0FBVywyQkFBMkIsZ0JBQWdCLDhDQUE4QywwQ0FBMEMsa0JBQWtCLGNBQWMsdUJBQXVCLGlCQUFpQixhQUFhLFFBQVEsaUJBQWlCLE1BQU0sMkhBQTJIO0FBQ3hmLE9BQU8sNkpBQTZKLElBQUksdUlBQXVJLHVCQUF1QixlQUFlLG1CQUFtQixvQkFBb0Isd0JBQXdCLFNBQVMsNkJBQTZCO0FBQzFiLGlFQUFpRSxrQkFBa0IsOENBQThDLHVHQUF1Ryx1REFBdUQsNEJBQTRCLHlDQUF5QyxnRUFBZ0UseUJBQXlCLFNBQVMsMkJBQTJCO0FBQ2plLElBQUksS0FBSyxTQUFTLDBCQUEwQixXQUFXLHlCQUF5Qiw2QkFBNkIsaUdBQWlHLHlCQUF5QixvQ0FBb0MsMEZBQTBGLDBCQUEwQiwyQkFBMkIsbURBQW1EO0FBQzdjLDJCQUEyQix3QkFBd0Isb0JBQW9CLHlEQUF5RCxzQ0FBc0Msd0hBQXdILG9EQUFvRCw0QkFBNEIsa0JBQWtCLFVBQVUsdUJBQXVCLHVDQUF1QyxzQkFBc0IsV0FBVyxRQUFRO0FBQ2pmLEVBQUUsRUFBRSxxQ0FBcUMsc0JBQXNCLG9DQUFvQyxZQUFZLEVBQUUsNkJBQTZCLGtCQUFrQixVQUFVLHVCQUF1QixrRkFBa0Ysd0JBQXdCLGdIQUFnSCxtQkFBbUI7QUFDOWEsZ0tBQWdLLG9CQUFvQixRQUFRLHdDQUF3QyxzQkFBc0Isc0NBQXNDLDhFQUE4RSw4QkFBOEIsb0JBQW9CLG9FQUFvRTtBQUNwZSxnQkFBZ0Isc0RBQXNELFFBQVEsVUFBVSx5RUFBeUUscUNBQXFDLDZDQUE2QyxLQUFLLEtBQUssb0JBQW9CLDJKQUEySixnQkFBZ0IsU0FBUyx1QkFBdUI7QUFDNWQsZ0JBQWdCLDJCQUEyQiwrQ0FBK0MsOEJBQThCLHFCQUFxQixxQkFBcUIsaURBQWlELFNBQVMseUJBQXlCLGdEQUFnRCw2Q0FBNkMsbUJBQW1CLHVCQUF1QiwyQ0FBMkMsWUFBWSxFQUFFLHNCQUFzQixJQUFJLHlCQUF5QixTQUFTO0FBQ2pmLGdDQUFnQyxxQ0FBcUMsNEJBQTRCLDBCQUEwQixtQkFBbUIscUJBQXFCLG9EQUFvRCxnQ0FBZ0MsYUFBYSw2Q0FBNkMsMENBQTBDLEtBQUsscUZBQXFGLEtBQUssUUFBUSxTQUFTO0FBQzNjLGlIQUFpSCxhQUFhLG9FQUFvRSx5T0FBeU8sV0FBVztBQUN0YixtQkFBbUIsdUNBQXVDLGtDQUFrQyxJQUFJLGlCQUFpQiw4QkFBOEIsb0VBQW9FLEdBQUcsd0NBQXdDLHFCQUFxQixtQkFBbUIsaUJBQWlCLG1DQUFtQyx1QkFBdUIsa0JBQWtCLHVEQUF1RCxvQ0FBb0MsV0FBVyx1QkFBdUI7QUFDaGdCLDJCQUEyQixxQ0FBcUMscUNBQXFDLHVCQUF1Qiw4QkFBOEIsZUFBZSxnQ0FBZ0Msc0VBQXNFLG9DQUFvQywyQkFBMkIsNkJBQTZCLDRCQUE0QjtBQUN2WSxzREFBc0QsbUNBQW1DLGFBQWEsZ0NBQWdDLHFCQUFxQixzQkFBc0Isc0JBQXNCLE1BQU0sZ0JBQWdCLG1GQUFtRixHQUFHLDZDQUE2QyxVQUFVLGlCQUFpQixXQUFXLEtBQUssUUFBUSxLQUFLLEtBQUssK0VBQStFO0FBQzVlLHVEQUF1RCxpQ0FBaUMsU0FBUyxrQkFBa0Isa0JBQWtCLGlEQUFpRCxxQkFBcUIsc0ZBQXNGLFNBQVMsR0FBRyxvQkFBb0IsT0FBTyxnREFBZ0QsdUJBQXVCLE9BQU8sZ0RBQWdELDJCQUEyQixPQUFPO0FBQ3hlLDJCQUEyQix1QkFBdUIsT0FBTywrQ0FBK0MsdUJBQXVCLHNEQUFzRCxPQUFPLCtDQUErQywyREFBMkQsT0FBTyxrREFBa0QsMkJBQTJCLE9BQU8sK0NBQStDLHdCQUF3QixPQUFPLDZCQUE2QjtBQUM1ZSx5TkFBeU4saUVBQWlFLG9EQUFvRCxnQ0FBZ0MsMEJBQTBCLGlCQUFpQixlQUFlLDJCQUEyQixpQkFBaUIsZUFBZTtBQUNuZSxXQUFXLCtDQUErQyxlQUFlLCtDQUErQyxpQkFBaUIsbUJBQW1CLDBLQUEwSyxvQkFBb0IseUJBQXlCLDZGQUE2RiwyQkFBMkIsUUFBUTtBQUNuZix1Q0FBdUMseUJBQXlCLDhCQUE4QiwwQkFBMEIsaUJBQWlCLGtFQUFrRSxxQ0FBcUMsa0RBQWtELHdCQUF3QixNQUFNLGtEQUFrRDtBQUNsWCx1RUFBdUUsdUNBQXVDLHNDQUFzQywyRUFBMkUsNkNBQTZDLFNBQVMsdUVBQXVFLHFEQUFxRCxFQUFFLE9BQU8sVUFBVSx3Q0FBd0MsdUJBQXVCO0FBQ25lLHFCQUFxQiw2QkFBNkIsV0FBVyxNQUFNLG1CQUFtQixzQ0FBc0MsNkZBQTZGLGNBQWMsZ0ZBQWdGLDBCQUEwQixnREFBZ0Qsa0JBQWtCLGdGQUFnRixVQUFVLE1BQU0sS0FBSztBQUN4ZixHQUFHLGtEQUFrRCxtQkFBbUIsaUJBQWlCLFdBQVcsY0FBYyxZQUFZO0FBQzlIO0FBQ0EsOEdBQThHLFVBQVUsRUFBRSx1R0FBdUcscUpBQXFKLEVBQUUsZ0RBQWdELHVCQUF1QixHQUFHLDRCQUE0Qix3QkFBd0I7QUFDdGYscURBQXFELHNGQUFzRix5QkFBeUIsOEpBQThKLEVBQUUsa0VBQWtFLHdGQUF3RixFQUFFO0FBQ2hlLHNCQUFzQix5R0FBeUcsc0JBQXNCLDRCQUE0QixjQUFjLEVBQUUsbUVBQW1FLGlFQUFpRSxpREFBaUQsbUVBQW1FLEdBQUcsNkRBQTZEO0FBQ3pmLCtCQUErQiwwREFBMEQsOEJBQThCLGdCQUFnQixrQkFBa0IsY0FBYywwR0FBMEcsaURBQWlELHVEQUF1RCxpREFBaUQsdUJBQXVCLFdBQVcsS0FBSyxTQUFTLHNCQUFzQjtBQUNoZiwwQkFBMEIsS0FBSyx1QkFBdUIsTUFBTSxtQ0FBbUMsbUJBQW1CLHNCQUFzQiwrQkFBK0IsOEJBQThCLFVBQVUscUJBQXFCLE1BQU0sVUFBVTtBQUNwUCxpSEFBaUgsYUFBYSxrQ0FBa0MsdUJBQXVCLFVBQVUsaUJBQWlCLHdCQUF3QixNQUFNLElBQUksK0VBQStFLFNBQVMsK0JBQStCLFVBQVUsSUFBSSwyQkFBMkIsaUNBQWlDLG9CQUFvQiwyQ0FBMkM7QUFDcGYsU0FBUywyQkFBMkIseUJBQXlCLHVDQUF1QyxrQ0FBa0Msd0NBQXdDLDZIQUE2SCxFQUFFLCtDQUErQyxzQkFBc0IsaUJBQWlCLDhCQUE4QjtBQUNqYSxNQUFNLDBCQUEwQix5Q0FBeUMsZUFBZSxpQ0FBaUMsU0FBUyx5TkFBeU4sRUFBRSxtQ0FBbUMsZ0JBQWdCLHVCQUF1QjtBQUN2YSxxQkFBcUIsRUFBRSxFQUFFLDBDQUEwQyxlQUFlLHVCQUF1QixtQkFBbUIsb0JBQW9CLGNBQWMsK0JBQStCLHNDQUFzQyxnQ0FBZ0MsMkJBQTJCLHFDQUFxQyxRQUFRLDBGQUEwRjtBQUNyYSx3REFBd0QsWUFBWSxxQ0FBcUMsRUFBRSxFQUFFLCtCQUErQixZQUFZLDZEQUE2RCxlQUFlLEdBQUcsc0NBQXNDLHNDQUFzQyw4QkFBOEIsOEJBQThCLGtGQUFrRixjQUFjLHFDQUFxQztBQUNwZixXQUFXLGNBQWMscUNBQXFDLGdCQUFnQiwwQ0FBMEMsc0JBQXNCLCtGQUErRixJQUFJLG9RQUFvUTtBQUNyZixvRkFBb0Ysa0JBQWtCLDZCQUE2QixFQUFFLCtCQUErQiw4QkFBOEIsU0FBUyxnQkFBZ0IsbUZBQW1GLG1CQUFtQixJQUFJLCtEQUErRCxlQUFlLFNBQVMsY0FBYyx1RUFBdUUsY0FBYztBQUMvZiw4REFBOEQsb0JBQW9CLG9CQUFvQiwyQ0FBMkMsNk5BQTZOLGdCQUFnQixnQkFBZ0Isa0ZBQWtGO0FBQ2hlLHlDQUF5QyxzQkFBc0Isb0VBQW9FLHNCQUFzQiwrRUFBK0UsSUFBSSx3Q0FBd0MsMkJBQTJCLFlBQVksWUFBWSx5QkFBeUIsc0JBQXNCLHNDQUFzQyx1QkFBdUI7QUFDbmIsT0FBTyxHQUFHLDRGQUE0RiwrREFBK0Qsc0hBQXNILCtEQUErRCxpREFBaUQseURBQXlELGlCQUFpQix3QkFBd0I7QUFDN2UsMEVBQTBFLG1CQUFtQixLQUFLLHVEQUF1RCxtREFBbUQsc0JBQXNCLCtDQUErQyxnQkFBZ0Isa0dBQWtHLHFCQUFxQixlQUFlLHNEQUFzRDtBQUM3ZCxzQkFBc0Isa0JBQWtCLHdCQUF3QixXQUFXLG9CQUFvQixjQUFjLHFCQUFxQixpSUFBaUksUUFBUSxVQUFVLHVDQUF1QyxxQkFBcUIsK0JBQStCLFNBQVMsR0FBRyxxQ0FBcUMsYUFBYSx5Q0FBeUMsMkJBQTJCLFNBQVMsV0FBVztBQUN0Z0IsdUJBQXVCLGtEQUFrRCxtREFBbUQsZUFBZSxRQUFRLG1DQUFtQyw0SUFBNEksRUFBRSxtQ0FBbUMsYUFBYSxnREFBZ0QscUVBQXFFLE1BQU07QUFDL2UsbUZBQW1GLDBCQUEwQixJQUFJLGdCQUFnQixJQUFJLHVDQUF1QywrQkFBK0IsWUFBWSxnQkFBZ0IsSUFBSSxNQUFNLFVBQVUsYUFBYSxlQUFlLElBQUksZ0JBQWdCLE1BQU0sMEJBQTBCLHlCQUF5QjtBQUNwVyxxQkFBcUIsbURBQW1ELFdBQVcsS0FBSyxPQUFPLGlIQUFpSCxVQUFVLHlLQUF5SyxXQUFXLEtBQUssZ0JBQWdCO0FBQ25hLDJJQUEySSwyQ0FBMkMsdUNBQXVDLEtBQUsseUJBQXlCLG1CQUFtQixtQkFBbUIsV0FBVywyQkFBMkIsRUFBRSxnQkFBZ0IsT0FBTyxNQUFNLElBQUksZ0JBQWdCLG9FQUFvRSxLQUFLLGNBQWMsS0FBSyxnQkFBZ0IsY0FBYztBQUNwZixHQUFHLFdBQVcsa0NBQWtDLEtBQUssNEdBQTRHLHlCQUF5QixLQUFLLE1BQU0sS0FBSyxVQUFVLGlCQUFpQixJQUFJLDBCQUEwQixpR0FBaUcsY0FBYyx5RkFBeUY7QUFDM2MsMkNBQTJDLGtCQUFrQixzQkFBc0IsVUFBVSxPQUFPLHNCQUFzQiwwQkFBMEIsa0JBQWtCLHdGQUF3RixVQUFVLFVBQVUsaUZBQWlGLEtBQUssMEJBQTBCLG1CQUFtQjtBQUNyWiw0QkFBNEIscUJBQXFCLHFCQUFxQixXQUFXLHlCQUF5QixFQUFFLHdFQUF3RSxLQUFLLHNDQUFzQyxPQUFPLFFBQVEsTUFBTSxhQUFhLGtEQUFrRCxlQUFlLHlCQUF5QixHQUFHLGFBQWEsY0FBYyw2QkFBNkIsc0JBQXNCLGNBQWM7QUFDMWIsd0JBQXdCLHNDQUFzQyxTQUFTLGtCQUFrQixtQ0FBbUMsY0FBYyxTQUFTLGNBQWMsa0JBQWtCLE1BQU0sTUFBTSxzSkFBc0osbUJBQW1CLHdEQUF3RCw0QkFBNEIsNEJBQTRCLFlBQVksZ0JBQWdCO0FBQ3BmLG9CQUFvQixzRkFBc0YsU0FBUyxnR0FBZ0csd0JBQXdCLDhMQUE4TCxHQUFHLGFBQWEsY0FBYyw2QkFBNkI7QUFDcGUsR0FBRyxjQUFjLGdHQUFnRyx3QkFBd0Isb0VBQW9FLFNBQVMsbUJBQW1CLDhCQUE4QixZQUFZLGdCQUFnQixzQkFBc0Isc0ZBQXNGLFNBQVM7QUFDeFosNEhBQTRILEdBQUcsR0FBRyxLQUFLLHFCQUFxQiwwSUFBMEksY0FBYyxhQUFhLHFHQUFxRztBQUN0YSxpQkFBaUIsbUJBQW1CLHdCQUF3Qiw0REFBNEQsK0VBQStFLHlCQUF5Qiw2QkFBNkIsWUFBWSxrQkFBa0IsR0FBRyxRQUFRLG9CQUFvQiwyREFBMkQsb0RBQW9ELE9BQU8sc0JBQXNCO0FBQ3RjLHlHQUF5Ryw4Q0FBOEMsb0JBQW9CLGFBQWEsR0FBRyxzQ0FBc0MsY0FBYyxvQkFBb0IsdUlBQXVJLGlEQUFpRCxjQUFjLG9CQUFvQixrQkFBa0I7QUFDL2Usd0JBQXdCLEVBQUUsOEJBQThCLG1DQUFtQyxVQUFVLHNCQUFzQixxRUFBcUUsT0FBTyxtQkFBbUIsVUFBVSxzRUFBc0Usa0dBQWtHLGFBQWEsZ0JBQWdCLG9CQUFvQjtBQUM3YixrQkFBa0IsS0FBSyxPQUFPLFVBQVUsY0FBYyxzQkFBc0IsaUJBQWlCLGdCQUFnQixnQ0FBZ0MsNkJBQTZCLDBCQUEwQixTQUFTLE9BQU8sTUFBTSwwQkFBMEIsc0hBQXNILG9FQUFvRTtBQUM5YSxtQ0FBbUMsNkpBQTZKLHFCQUFxQix3QkFBd0IsMElBQTBJLGdCQUFnQixzRUFBc0UsNENBQTRDO0FBQ3pmLGtHQUFrRyxXQUFXLGFBQWEsUUFBUSwwQkFBMEIsaURBQWlELGdDQUFnQyx1Q0FBdUMsa0NBQWtDLHlDQUF5QyxxQkFBcUIsZ0RBQWdEO0FBQ3BhLDJEQUEyRCw2QkFBNkIsV0FBVyxhQUFhLGtCQUFrQixjQUFjLG1HQUFtRyxzQkFBc0Isa0NBQWtDLGdDQUFnQyw2QkFBNkIsd0NBQXdDLHNGQUFzRjtBQUN0ZSxnRkFBZ0YsS0FBSyw2RUFBNkUsOEpBQThKLGNBQWMscURBQXFELGdCQUFnQix3Q0FBd0MsU0FBUyxnQkFBZ0I7QUFDcGQsa0RBQWtELG9EQUFvRCxPQUFPLHFCQUFxQixPQUFPLHdCQUF3QiwwQkFBMEIsb0NBQW9DLHFDQUFxQyx3QkFBd0IsNkNBQTZDLGlCQUFpQixRQUFRLHNFQUFzRTtBQUN4YSxpSEFBaUgsNEJBQTRCLDhEQUE4RCwyRUFBMkUsSUFBSSxtREFBbUQsaURBQWlELHNCQUFzQixzQkFBc0I7QUFDMWEsZ2NBQWdjLDBCQUEwQixVQUFVLDhCQUE4QjtBQUNsZ0Isb0RBQW9ELG1FQUFtRSxtQkFBbUIseUJBQXlCLHFEQUFxRCwrQ0FBK0MsdUNBQXVDLG1CQUFtQiwyREFBMkQsa0NBQWtDLGtIQUFrSDtBQUNoaEIsdUNBQXVDLHlFQUF5RSw2QkFBNkIsc0JBQXNCLHlKQUF5SixHQUFHLGNBQWMsY0FBYyx1RUFBdUUsZ0JBQWdCLG9EQUFvRCxRQUFRO0FBQzllLG9DQUFvQyxXQUFXLGlDQUFpQyxVQUFVLEtBQUssbUNBQW1DLFVBQVUsS0FBSyxzQkFBc0IsK0lBQStJLGNBQWMsUUFBUSxXQUFXLDZDQUE2QyxTQUFTLGNBQWMsY0FBYyxtQkFBbUIsV0FBVyxRQUFRLFlBQVkseUJBQXlCO0FBQ3BmLGFBQWEsUUFBUSxXQUFXLDBDQUEwQyxVQUFVLDZCQUE2QixTQUFTLGNBQWMsT0FBTyxrQkFBa0IsUUFBUSxXQUFXLDBKQUEwSix1QkFBdUIsY0FBYywyQ0FBMkMsYUFBYSxLQUFLLDBDQUEwQyxXQUFXLGNBQWM7QUFDbmYsZUFBZSx1Q0FBdUMsK0JBQStCLDBDQUEwQyxvQkFBb0IsaUJBQWlCLGNBQWMsYUFBYSx1QkFBdUIsS0FBSyxrQ0FBa0MsYUFBYSw2QkFBNkIsTUFBTSx1QkFBdUIsTUFBTSwrQkFBK0IsSUFBSTtBQUM3VywyTUFBMk0sa0NBQWtDLEtBQUssc0VBQXNFLHFDQUFxQywrQ0FBK0MsS0FBSyxtQkFBbUI7QUFDcGEsOEJBQThCLHFCQUFxQixtU0FBbVMsbUJBQW1CLEdBQUcsYUFBYSxLQUFLLDBEQUEwRCxhQUFhLE9BQU87QUFDNWMsSUFBSSxjQUFjLDZFQUE2RSxjQUFjLGdCQUFnQiw0RkFBNEYsbURBQW1ELCtFQUErRSxxR0FBcUcsY0FBYyxRQUFRO0FBQ3RkLHFDQUFxQyxTQUFTLGdCQUFnQiwrQ0FBK0MsTUFBTSxXQUFXLGlHQUFpRyw4Q0FBOEMsUUFBUSx3Q0FBd0MsRUFBRSxzQ0FBc0MsRUFBRSxzREFBc0QscURBQXFELDRCQUE0QjtBQUM5ZSwwSkFBMEosZ0JBQWdCLG1DQUFtQyxnQkFBZ0Isa0JBQWtCLGdCQUFnQixpREFBaUQsc0xBQXNMLE1BQU0sYUFBYSxRQUFRLFNBQVMsZ0JBQWdCO0FBQzFoQixxQ0FBcUMsdUJBQXVCLHVCQUF1QixvRkFBb0YsV0FBVyxjQUFjLDhDQUE4QywyQ0FBMkMsb0JBQW9CLG1CQUFtQix5QkFBeUIsK0JBQStCLGNBQWMsT0FBTyxvQkFBb0IsbUJBQW1CLDRCQUE0QixTQUFTO0FBQ3pkLDBZQUEwWSxjQUFjLFlBQVksV0FBVyxLQUFLLFdBQVcsa0RBQWtELGlCQUFpQjtBQUNsZ0IsbUJBQW1CLHVFQUF1RSxtRkFBbUYsbUJBQW1CLGlCQUFpQiw4Q0FBOEMseUZBQXlGLHNFQUFzRSw2QkFBNkIsd0JBQXdCO0FBQ25kLGdCQUFnQixnQkFBZ0Isa0JBQWtCLDZCQUE2Qiw4R0FBOEcsU0FBUyxVQUFVLFVBQVUsU0FBUyxpS0FBaUssY0FBYyxtQkFBbUIsNkJBQTZCO0FBQ2xjLFVBQVUsY0FBYyxtQkFBbUIsbUNBQW1DLDZUQUE2VCxpQkFBaUIsT0FBTyxtQ0FBbUMsR0FBRywwQ0FBMEMsYUFBYTtBQUNoZ0IsaUJBQWlCLHVCQUF1QixlQUFlLDZCQUE2QixhQUFhLCtDQUErQyxTQUFTLGFBQWEsOEJBQThCLDhCQUE4QixzREFBc0Qsb0ZBQW9GLGNBQWMsUUFBUSxtRkFBbUY7QUFDcmQsNERBQTRELGNBQWMsbUJBQW1CLHNEQUFzRCx3RUFBd0UsK0RBQStELDhHQUE4RywyREFBMkQsbUJBQW1CO0FBQ3RkLDZGQUE2RixlQUFlLHdGQUF3RixpREFBaUQsK0RBQStELHdFQUF3RSxpRUFBaUUscUJBQXFCLElBQUksZUFBZTtBQUNyZSx1QkFBdUIsSUFBSSxFQUFFLDhPQUE4Tyw0Q0FBNEMsb0RBQW9ELHlEQUF5RCxJQUFJLEVBQUUsd0JBQXdCLE1BQU0sMkNBQTJDO0FBQ25mLHlIQUF5SCxFQUFFLHlDQUF5QyxnSEFBZ0gsT0FBTyxFQUFFLGlDQUFpQyxtREFBbUQsUUFBUSw2QkFBNkIsY0FBYyxXQUFXLE1BQU0sNEJBQTRCLElBQUksbUNBQW1DLFVBQVU7QUFDbGdCLGtFQUFrRSxZQUFZLGFBQWEsZ0NBQWdDLDhCQUE4Qiw4QkFBOEIsV0FBVyxTQUFTLDRFQUE0RSx3QkFBd0IsSUFBSSx1Q0FBdUMsVUFBVSxnQkFBZ0Isb0JBQW9CLGtCQUFrQixtQkFBbUIsRUFBRSxnRkFBZ0Y7QUFDL2Ysc0NBQXNDLEdBQUcsMENBQTBDLGdDQUFnQyxxQ0FBcUMsbUNBQW1DLG1EQUFtRCx3RkFBd0YsNEJBQTRCLHFCQUFxQixFQUFFLGlEQUFpRCxNQUFNLDBDQUEwQyxJQUFJLEVBQUU7QUFDaGUscUJBQXFCLGFBQWEsSUFBSSxFQUFFLDhFQUE4RSw4REFBOEQsd0JBQXdCLGlHQUFpRyxlQUFlLGdEQUFnRCxFQUFFLDBCQUEwQixvQkFBb0IseUJBQXlCLEVBQUUsbUNBQW1DLG9CQUFvQixFQUFFO0FBQ2hmLGVBQWUsNEJBQTRCLHlCQUF5QixvQ0FBb0MscUJBQXFCLEVBQUUsK0JBQStCLG9GQUFvRiwwS0FBMEssZ0JBQWdCLHVCQUF1QixzQkFBc0IsdUJBQXVCLGFBQWE7QUFDN2Ysa0JBQWtCLGVBQWUsZ0VBQWdFLElBQUksRUFBRSxFQUFFLCtEQUErRCxlQUFlLGtDQUFrQyx3REFBd0QsZ0dBQWdHLGVBQWUsZ0NBQWdDLGdCQUFnQixlQUFlLCtCQUErQiwyQkFBMkI7QUFDemYsV0FBVyxnQ0FBZ0MscUNBQXFDLGNBQWMsRUFBRSxzREFBc0Qsb0JBQW9CLG1EQUFtRCw2TUFBNk0sd0RBQXdEO0FBQ2xlLDhCQUE4QixvREFBb0QsMEJBQTBCLG1HQUFtRyxzREFBc0QsNEJBQTRCLDJEQUEyRCw2REFBNkQscUNBQXFDLHdEQUF3RDtBQUN0ZiwrQ0FBK0MsbUhBQW1ILHVCQUF1QixVQUFVLDBCQUEwQiwwQkFBMEIsNkJBQTZCLG1DQUFtQyx3Q0FBd0MsUUFBUSxTQUFTLHdDQUF3QyxxQkFBcUIsbUVBQW1FO0FBQ2hmLDRCQUE0QixnQkFBZ0IsUUFBUSxVQUFVLDZHQUE2RyxtQkFBbUIsUUFBUSwyR0FBMkcsS0FBSyxJQUFJLGtCQUFrQixVQUFVLG9FQUFvRTtBQUMxWixxS0FBcUssYUFBYSxPQUFPLDhJQUE4SSw4Q0FBOEMsNEZBQTRGLEVBQUUsa0NBQWtDLHFCQUFxQjtBQUMxZ0IsNElBQTRJLHNCQUFzQixtQkFBbUIsd0JBQXdCLDhCQUE4QixJQUFJLGdDQUFnQyx1Q0FBdUMsNkNBQTZDLDZEQUE2RCxVQUFVLGdCQUFnQixZQUFZLG1CQUFtQix3QkFBd0I7QUFDamYsMkNBQTJDLCtDQUErQyx5QkFBeUIseUNBQXlDLHNKQUFzSixnQkFBZ0Isc0JBQXNCLG1CQUFtQixjQUFjLDRDQUE0QyxvQkFBb0IsZ0JBQWdCLGNBQWMsd0JBQXdCLDZCQUE2QjtBQUM1Z0IsVUFBVSxtRUFBbUUsS0FBSyx5R0FBeUcsa0JBQWtCLFlBQVkseUJBQXlCLDhCQUE4Qix1QkFBdUIsZ0NBQWdDLDJDQUEyQyxlQUFlLDZEQUE2RCw0QkFBNEIsRUFBRTtBQUM1ZCxlQUFlLFNBQVMsc0VBQXNFLE9BQU8sdUJBQXVCLHNCQUFzQixpREFBaUQsMkNBQTJDLGFBQWEsbUNBQW1DLEtBQUssSUFBSSxLQUFLLHlHQUF5RyxTQUFTLE9BQU8seUJBQXlCLE9BQU87QUFDcmMsa0JBQWtCLDZEQUE2RCxlQUFlLDZVQUE2VSxrQ0FBa0MsaUJBQWlCLFdBQVcsS0FBSztBQUM5ZSxpRUFBaUUsMENBQTBDLEtBQUssdUNBQXVDLHVDQUF1QyxVQUFVLFNBQVMsVUFBVSxjQUFjLDhCQUE4QixlQUFlLFlBQVksZUFBZSxLQUFLLHNCQUFzQixvQ0FBb0Msa0VBQWtFLDREQUE0RCxVQUFVO0FBQ3hmLG1CQUFtQiw4QkFBOEIseURBQXlELHFEQUFxRCw4QkFBOEIsbUJBQW1CLGlEQUFpRCxNQUFNLHVCQUF1QixpRUFBaUUsdURBQXVELE1BQU0sbUZBQW1GLEtBQUssaUJBQWlCO0FBQ3JnQix3R0FBd0csb0JBQW9CLG1CQUFtQixzREFBc0QsbUZBQW1GLGlDQUFpQyxvQkFBb0Isd0JBQXdCLE9BQU8seURBQXlELCtCQUErQixtQkFBbUI7QUFDdmQsZ0RBQWdELDJDQUEyQyxZQUFZLDJDQUEyQyxvRkFBb0Ysc0NBQXNDLGNBQWMsRUFBRSw0REFBNEQsNEJBQTRCLG1CQUFtQixpREFBaUQ7QUFDeGIsYUFBYSx3QkFBd0IsaUJBQWlCLGlCQUFpQix1QkFBdUIsMEJBQTBCLHVCQUF1Qiw0QkFBNEIsZ0JBQWdCLG9CQUFvQixrQkFBa0Isc0VBQXNFLGdCQUFnQixhQUFhO0FBQ3BVLDZFQUE2RSxrQkFBa0IsZ0JBQWdCLGNBQWMsdUJBQXVCLDREQUE0RCx5QkFBeUIsbUNBQW1DLE1BQU0scUJBQXFCLHVCQUF1QixXQUFXLHlCQUF5QixtQkFBbUIsb0NBQW9DLDJDQUEyQyxhQUFhLDJCQUEyQjtBQUM1ZSxvQkFBb0IsaUJBQWlCLHVCQUF1QiwwQkFBMEIseURBQXlELGFBQWEsK0JBQStCLFdBQVcsMkZBQTJGLDhCQUE4QixvQ0FBb0MsY0FBYyxxQkFBcUIsWUFBWSxtQ0FBbUMsS0FBSyxNQUFNLEdBQUcsUUFBUTtBQUMzYyxtTUFBbU0sU0FBUyxrQkFBa0IsMkhBQTJILFFBQVEsaUVBQWlFLEtBQUssTUFBTSxzQ0FBc0Msa0JBQWtCLEdBQUc7QUFDeGUsTUFBTSxzRUFBc0UsT0FBTyxjQUFjLFVBQVUsMkdBQTJHLDJCQUEyQixrQkFBa0IsV0FBVyxPQUFPLFVBQVUsMk1BQTJNO0FBQzFlLGNBQWMsaUJBQWlCLHNDQUFzQyx5QkFBeUIsMkJBQTJCLHVVQUF1VTtBQUNoYyxvQkFBb0IsV0FBVyxpTUFBaU0sS0FBSyxtQkFBbUIsYUFBYSx1QkFBdUIsUUFBUSxXQUFXLEtBQUs7QUFDcFQsMkRBQTJELDJDQUEyQyxnQkFBZ0IsU0FBUyxPQUFPLGdDQUFnQywrUUFBK1EsNkNBQTZDLElBQUk7QUFDdGUsYUFBYSxTQUFTLDBHQUEwRyxjQUFjLGVBQWUsYUFBYSxvQ0FBb0Msb0JBQW9CLHVCQUF1QiwyRUFBMkUsYUFBYSxPQUFPLHVEQUF1RCxvQkFBb0IsaUJBQWlCLHVDQUF1QztBQUMzZCxFQUFFLGtDQUFrQyxnQ0FBZ0MsY0FBYyxhQUFhLHVCQUF1QixrQ0FBa0MscUJBQXFCLCtCQUErQixpREFBaUQsdUNBQXVDLHVCQUF1Qiw2QkFBNkIsd0JBQXdCLHVCQUF1QixvQ0FBb0MsNkJBQTZCLHNDQUFzQztBQUM5ZSxhQUFhLFNBQVMsOEJBQThCLHVDQUF1QywwQkFBMEIsU0FBUyw2QkFBNkIsbUJBQW1CLFdBQVcsS0FBSyx3Q0FBd0MsdUJBQXVCLFVBQVUscUpBQXFKLGtEQUFrRCxZQUFZLDhCQUE4QjtBQUN4ZixpQkFBaUIsdUZBQXVGLDJCQUEyQiw4RUFBOEUsNEJBQTRCLDRDQUE0Qyx1QkFBdUIsSUFBSSxvQ0FBb0MsVUFBVSxnQkFBZ0Isa0dBQWtHLGdCQUFnQixZQUFZO0FBQ2hmLGFBQWEsdUNBQXVDLFlBQVksd0NBQXdDLGdDQUFnQyxTQUFTLG9CQUFvQiw4REFBOEQsY0FBYyxpQkFBaUIsNEZBQTRGLEtBQUssbUZBQW1GLHlEQUF5RDtBQUMvZSxnQkFBZ0IsOEJBQThCLHFDQUFxQyxTQUFTLHlEQUF5RCxPQUFPLDhDQUE4QywrQkFBK0IsU0FBUyx5REFBeUQsRUFBRSxFQUFFLEtBQUssMkJBQTJCLEtBQUs7QUFDcFYsNENBQTRDLDhEQUE4RCwwQkFBMEIsU0FBUyx3SEFBd0gsSUFBSSxLQUFLLDhEQUE4RCw4REFBOEQsb0NBQW9DO0FBQzlhLHdDQUF3QyxLQUFLLG1MQUFtTCxjQUFjLGdFQUFnRSxLQUFLLGtCQUFrQixVQUFVLDRCQUE0Qix1QkFBdUIsb0VBQW9FLEtBQUssS0FBSyxLQUFLLFNBQVMsS0FBSyxFQUFFO0FBQ3JlLEdBQUcsZ0dBQWdHLCtFQUErRSxnQkFBZ0Isa0NBQWtDLDRCQUE0QixnQ0FBZ0M7QUFDaFMsaUJBQWlCLFFBQVEsb0JBQW9CLCtCQUErQixvQ0FBb0MsY0FBYyxhQUFhLHNIQUFzSCxvQkFBb0IsS0FBSyxvQkFBb0IscUNBQXFDLHFDQUFxQyxRQUFRLG9CQUFvQixLQUFLLGdCQUFnQixxQ0FBcUMscUNBQXFDO0FBQ25mLGlCQUFpQixvQkFBb0IscUNBQXFDLCtFQUErRSxnQkFBZ0IscUVBQXFFLG9FQUFvRSxzQ0FBc0MsTUFBTTtBQUM5Viw2REFBNkQsTUFBTSxJQUFJLFNBQVMsS0FBSyxnQkFBZ0IscUJBQXFCLHlCQUF5QixpQkFBaUIsWUFBWSxJQUFJLHFEQUFxRCxLQUFLLHVCQUF1QixJQUFJLFFBQVEsYUFBYTtBQUM5UixJQUFJLG9CQUFvQixtQ0FBbUMsY0FBYyxTQUFTLHNCQUFzQixpRUFBaUUsMkJBQTJCLFNBQVMsY0FBYyxzREFBc0Qsa0dBQWtHLGNBQWMsaUNBQWlDLHdFQUF3RTtBQUMxZSxlQUFlLDhDQUE4QyxnRkFBZ0YsY0FBYyxnREFBZ0QsdUJBQXVCLG9FQUFvRSx5QkFBeUIsdUJBQXVCLHdGQUF3RixvQkFBb0IsY0FBYztBQUNoZCx1QkFBdUIsZ0RBQWdELFlBQVksdUJBQXVCLCtNQUErTSxvQkFBb0IsZ0JBQWdCLFNBQVMsZ0VBQWdFLDJDQUEyQyxVQUFVLElBQUk7QUFDL2QsY0FBYyw2Q0FBNkMsc0RBQXNELCtCQUErQixTQUFTLGtDQUFrQyxvQkFBb0IsMkNBQTJDLFlBQVksNkNBQTZDLCtCQUErQix3QkFBd0Isa0JBQWtCLElBQUkscURBQXFELGFBQWEsTUFBTSxVQUFVO0FBQ2xkLDZKQUE2SixhQUFhLGNBQWMsU0FBUyx1R0FBdUcsd0NBQXdDLHdEQUF3RCxVQUFVLEVBQUUsU0FBUyxrQkFBa0IsY0FBYztBQUM3YixnQkFBZ0IsU0FBUyxTQUFTLFNBQVMsRUFBRSwwQkFBMEIsZ0JBQWdCLE1BQU0sbUVBQW1FLFlBQVksV0FBVyxLQUFLLHVIQUF1SCw2QkFBNkIsd0NBQXdDLDhDQUE4QyxrQkFBa0IscURBQXFELEdBQUcsZUFBZSx1Q0FBdUM7QUFDdGlCLGdCQUFnQixFQUFFLE1BQU0sZ0JBQWdCLGFBQWEsWUFBWSxrQkFBa0IsWUFBWSxnQkFBZ0Isa0lBQWtJLDBKQUEwSjtBQUMzWSxzQkFBc0IsNk1BQTZNLGNBQWMsbUVBQW1FLE9BQU8sa0RBQWtELDRFQUE0RSxLQUFLLDZDQUE2QztBQUMzZSxLQUFLLGlDQUFpQyxXQUFXLEtBQUssZ0JBQWdCLHdCQUF3QixjQUFjLCtFQUErRSxRQUFRLGdCQUFnQiw4REFBOEQsc0NBQXNDLG1EQUFtRCxLQUFLLG9CQUFvQixtREFBbUQsS0FBSyxrQkFBa0IsYUFBYTtBQUMxZCxxSUFBcUksa0JBQWtCLE1BQU0sWUFBWSxtQkFBbUIsZ0NBQWdDLHVCQUF1QixTQUFTLGdJQUFnSSxTQUFTLGdCQUFnQixxRUFBcUU7QUFDMWQsTUFBTSw2QkFBNkIseURBQXlELFNBQVMsZ0JBQWdCLGlEQUFpRCxZQUFZLEVBQUUsY0FBYyxzQ0FBc0Msc0JBQXNCLDRCQUE0QixNQUFNLG1DQUFtQyxZQUFZLFdBQVcsS0FBSyxlQUFlLG9HQUFvRyxnQkFBZ0IsRUFBRSxNQUFNO0FBQzFlLG1CQUFtQiw0Q0FBNEMsU0FBUyxrQkFBa0IsdUNBQXVDLG9DQUFvQyx5Q0FBeUMsZ0JBQWdCLGdCQUFnQiw2REFBNkQsdURBQXVELDBEQUEwRDtBQUM1WixTQUFTLGtCQUFrQixvQkFBb0IsMkNBQTJDLCtCQUErQixtQkFBbUIsa0JBQWtCLGtCQUFrQixPQUFPLG9PQUFvTyxJQUFJO0FBQy9aLGlDQUFpQyxXQUFXLGlHQUFpRyw2QkFBNkIsK0VBQStFLG1CQUFtQiw4Q0FBOEMsZ0VBQWdFLCtEQUErRDtBQUN6YixjQUFjLCtGQUErRixpRUFBaUUsUUFBUSxlQUFlLDBCQUEwQixrQkFBa0IsMkVBQTJFLDRDQUE0Qyx1QkFBdUIsd0NBQXdDLGtDQUFrQyxvQkFBb0Isb0JBQW9CO0FBQ2pmLDZEQUE2RCw0Q0FBNEMsdUJBQXVCLHdDQUF3QyxrQ0FBa0Msb0JBQW9CLDBCQUEwQiwrSEFBK0gsNEJBQTRCLDZCQUE2QjtBQUNoYiwwQ0FBMEMsK0JBQStCLDJCQUEyQixVQUFVLDJCQUEyQixrQkFBa0Isd0ZBQXdGLGlGQUFpRixXQUFXLDZFQUE2RSxxQ0FBcUMsa0JBQWtCO0FBQ25kLDRDQUE0QyxnREFBZ0QsU0FBUyxpQ0FBaUMsdUNBQXVDLDhCQUE4QixrQkFBa0IsNERBQTRELHNFQUFzRSxTQUFTLGlDQUFpQyx3QkFBd0Isa0RBQWtELGtCQUFrQjtBQUNyZSxtQ0FBbUMsbUNBQW1DLGVBQWUsS0FBSyxRQUFRLG9CQUFvQixrQ0FBa0MsMkRBQTJELFlBQVksVUFBVSxjQUFjLHdGQUF3RixlQUFlLG1CQUFtQixjQUFjLGNBQWMsU0FBUyx1Q0FBdUMsMENBQTBDLDJCQUEyQjtBQUNsZ0IsOEJBQThCLFFBQVEsV0FBVyxzQ0FBc0MsY0FBYyxxQkFBcUIsdUJBQXVCLGlCQUFpQiw0QkFBNEIsU0FBUywwQkFBMEIseUNBQXlDLHFCQUFxQixnQ0FBZ0MsbURBQW1ELGdFQUFnRSwwQ0FBMEMsa0JBQWtCLDBCQUEwQjtBQUN4Z0Isd0NBQXdDLFlBQVksY0FBYywyREFBMkQsMkJBQTJCLElBQUksZ0JBQWdCLG1DQUFtQyxHQUFHLHVCQUF1QixvREFBb0Qsa0JBQWtCLGlDQUFpQyxxQ0FBcUMsNENBQTRDLGtCQUFrQixRQUFRLGNBQWMsMkJBQTJCO0FBQ3BlLENBQUMsaUNBQWlDLE9BQU8sc0NBQXNDLHNMQUFzTCx1Q0FBdUMsc0RBQXNELGlDQUFpQyxrREFBa0QsVUFBVTtBQUMvYiw0REFBNEQsNkxBQTZMLHVDQUF1Qyw2QkFBNkIsa0RBQWtELHFDQUFxQyx1Q0FBdUM7QUFDM2IsWUFBWSxZQUFZLFdBQVcsS0FBSyw4RkFBOEYsbUJBQW1CLEdBQUcsUUFBUSxhQUFhLEVBQUUsd0JBQXdCLGNBQWMseUJBQXlCLGVBQWUsMEJBQTBCLHdEQUF3RCxLQUFLLGdFQUFnRSxrQkFBa0Isd0RBQXdELEtBQUs7QUFDdmUsMEJBQTBCLDRGQUE0RixzQ0FBc0MsMkJBQTJCLHlCQUF5QixLQUFLLGFBQWEsaURBQWlELEtBQUssMkNBQTJDLGtJQUFrSSx5QkFBeUIsRUFBRTtBQUNoZSxZQUFZLDZDQUE2QyxPQUFPLEVBQUUsbUZBQW1GLEdBQUcsY0FBYyxrQkFBa0Isb0NBQW9DLE9BQU8sNEJBQTRCLDRDQUE0QyxlQUFlLGNBQWMsMkRBQTJELGtDQUFrQywyQ0FBMkMsS0FBSyxFQUFFLDZCQUE2QjtBQUNwZixhQUFhLDZDQUE2QyxzQ0FBc0MsOENBQThDLHNDQUFzQyxRQUFRLEdBQUcsa0VBQWtFLCtDQUErQztBQUNoVCxHQUFHLDZCQUE2QixLQUFLLDZDQUE2QyxpSEFBaUgseUJBQXlCLGtEQUFrRCwrQkFBK0Isa0NBQWtDLGNBQWMsZ0JBQWdCLDRDQUE0QztBQUN6WixlQUFlLFNBQVMsZ0JBQWdCLDRGQUE0RixTQUFTLGNBQWMseURBQXlELEVBQUUsTUFBTSxrQkFBa0IsNEJBQTRCLGNBQWMsaUJBQWlCLDJCQUEyQixpREFBaUQsZ0JBQWdCLDBCQUEwQixzQkFBc0IscUJBQXFCLFFBQVEsa0JBQWtCO0FBQ3BlLCtFQUErRSw4Q0FBOEMsNEJBQTRCLG1EQUFtRCwwRUFBMEUscUVBQXFFLG1CQUFtQixtREFBbUQsK0VBQStFO0FBQ2hmLGdCQUFnQixvQkFBb0IsK0hBQStILG1CQUFtQix5Q0FBeUMsbURBQW1ELGdOQUFnTjtBQUNsZSxnQkFBZ0Isb0JBQW9CLE1BQU0sbURBQW1ELG1KQUFtSixrRUFBa0UsNEJBQTRCLGdDQUFnQyxJQUFJO0FBQ2xYLEtBQUssb0RBQW9ELCtHQUErRyxFQUFFLG1DQUFtQyxxQkFBcUIsc0JBQXNCLHVCQUF1QixxQ0FBcUMsVUFBVSxzQkFBc0IsNkJBQTZCLHFDQUFxQywwREFBMEQsd0JBQXdCO0FBQ3hlLGdDQUFnQyxLQUFLLHlCQUF5Qix3Q0FBd0MsU0FBUyxxRkFBcUYseUNBQXlDLDhQQUE4UCxxQ0FBcUM7QUFDaGhCLEtBQUsseUNBQXlDLCtCQUErQix3RUFBd0Usd0VBQXdFLDhHQUE4RyxjQUFjLFFBQVEsNEdBQTRHLE9BQU87QUFDcGQsNkZBQTZGLDBDQUEwQyw2RUFBNkUsMENBQTBDLG1CQUFtQixxREFBcUQsa0hBQWtILDREQUE0RDtBQUNwZixDQUFDLGlFQUFpRSxvREFBb0QsMENBQTBDLDZFQUE2RSwwQ0FBMEMsd05BQXdOO0FBQy9lLEtBQUssNERBQTRELFVBQVUsR0FBRyw0SUFBNEksZ0VBQWdFLHdCQUF3QixjQUFjLHdDQUF3Qyx3QkFBd0Isc0VBQXNFLDZDQUE2QztBQUNuZixXQUFXLGtCQUFrQixvR0FBb0csNkJBQTZCLG9DQUFvQyxLQUFLLGtFQUFrRSxTQUFTLHlDQUF5QyxvTkFBb047QUFDL2dCLHlCQUF5QixrQkFBa0Isa0JBQWtCLG9CQUFvQixzQkFBc0IsaUJBQWlCLHVFQUF1RSx1QkFBdUIsMEJBQTBCLDhDQUE4Qyw4Q0FBOEMsdUZBQXVGLE1BQU0sUUFBUSxVQUFVLG1CQUFtQixNQUFNLG1CQUFtQixNQUFNO0FBQzdlLFVBQVUsZUFBZSxVQUFVLElBQUksd0NBQXdDLGdCQUFnQixvQkFBb0Isb0JBQW9CLGVBQWUsVUFBVSx5S0FBeUssRUFBRSxtQ0FBbUMsRUFBRSxtQ0FBbUMsRUFBRSxtQ0FBbUMsRUFBRTtBQUMxYiw0REFBNEQsRUFBRSw2REFBNkQ7QUFDM0g7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixFQUFFLG9FQUFvRSxzQ0FBc0MsMERBQTBELG9DQUFvQyw0R0FBNEcsbURBQW1ELDJDQUEyQywwQkFBMEIsUUFBUSxLQUFLLEdBQUc7QUFDdGQsNkJBQTZCLCtGQUErRix1Q0FBdUMsNkJBQTZCLCtCQUErQixTQUFTLHFDQUFxQyxVQUFVLDJIQUEySCxxQkFBcUI7QUFDdmEsYUFBYSxtQkFBbUIsR0FBRyxrQkFBa0Isd0JBQXdCLElBQUksS0FBSyxtQkFBbUIsb0VBQW9FLEtBQUssU0FBUyxLQUFLLEtBQUssV0FBVyx1QkFBdUIsU0FBUyxhQUFhLGtCQUFrQixZQUFZLGlCQUFpQix1Q0FBdUMsb0JBQW9CLG9CQUFvQixnQkFBZ0IsbUNBQW1DLFlBQVksV0FBVyxtQ0FBbUMsU0FBUztBQUNqZixLQUFLLFVBQVUsbUNBQW1DLHNCQUFzQixFQUFFLGdEQUFnRCxtQkFBbUIseUNBQXlDLCtDQUErQyw2REFBNkQsdUJBQXVCLEVBQUUsK0JBQStCLGdCQUFnQixtREFBbUQsS0FBSyxJQUFJLDJCQUEyQixZQUFZLDBCQUEwQixNQUFNO0FBQzdlLGdKQUFnSixzQkFBc0IsZ0VBQWdFLGlDQUFpQywyREFBMkQsU0FBUyxzR0FBc0csNkNBQTZDLCtCQUErQjtBQUM3ZixtQkFBbUIsd0JBQXdCLHFCQUFxQixtQkFBbUIscUJBQXFCLHFCQUFxQiw4QkFBOEIsMkRBQTJELG1CQUFtQixxSUFBcUkseUhBQXlILFNBQVM7QUFDaGYsR0FBRyxxRkFBcUYsYUFBYSxrQkFBa0IsMElBQTBJLDRDQUE0Qyx3TEFBd0w7QUFDcmUsT0FBTyxnQ0FBZ0MsdUNBQXVDLFNBQVMsbUNBQW1DLGdEQUFnRCxnREFBZ0QsbUNBQW1DLE9BQU8sMEJBQTBCLG1EQUFtRCxPQUFPLHlCQUF5QixtQkFBbUIsV0FBVyxrQkFBa0IsMkJBQTJCLEtBQUssdUNBQXVDO0FBQ3hlLEVBQUUsU0FBUyxFQUFFLGlCQUFpQixJQUFJLDBCQUEwQixtQ0FBbUMsRUFBRSwwQkFBMEIsbUJBQW1CLDBFQUEwRSxNQUFNLFlBQVksSUFBSSxnQ0FBZ0MsSUFBSSwyRUFBMkUsV0FBVyw2QkFBNkIsbUJBQW1CLGNBQWMsS0FBSyx1Q0FBdUMsY0FBYyxjQUFjO0FBQzllLHFDQUFxQyxTQUFTLDhCQUE4QixpQkFBaUIsY0FBYyx1Q0FBdUMsU0FBUyw2QkFBNkIsWUFBWSxjQUFjLG1DQUFtQyxjQUFjLGFBQWEsc0dBQXNHLGNBQWMsNENBQTRDLCtDQUErQyxnQkFBZ0I7QUFDL2UsRUFBRSxXQUFXLDhGQUE4RixZQUFZLE1BQU0scUNBQXFDLGdCQUFnQix3REFBd0QsT0FBTyxjQUFjLG1CQUFtQiw0RkFBNEYsU0FBUyxrQkFBa0IsVUFBVSx1Q0FBdUMsbUJBQW1CLFdBQVcsc0JBQXNCLEdBQUc7QUFDamYsRUFBRSxXQUFXLG1DQUFtQyxXQUFXLEtBQUssVUFBVSxRQUFRLFdBQVcsaUNBQWlDLGdDQUFnQyxLQUFLLElBQUksUUFBUSxXQUFXLGlDQUFpQywyRkFBMkYsU0FBUyxlQUFlLDhCQUE4Qix5SEFBeUgsT0FBTyxTQUFTO0FBQ3JmLG9CQUFvQiw2QkFBNkIsU0FBUywyQkFBMkIsa0JBQWtCLCtCQUErQixvQ0FBb0MsRUFBRSxrQ0FBa0MsTUFBTSx3RUFBd0UsbUJBQW1CLGlCQUFpQix5QkFBeUIsNkJBQTZCLDBEQUEwRCw4QkFBOEIsc0JBQXNCLElBQUk7QUFDeGUsQ0FBQyxzQkFBc0Isb0JBQW9CLHdCQUF3QiwyQkFBMkIsbUNBQW1DLGVBQWUsd0NBQXdDLDZEQUE2RCxVQUFVLFdBQVcsU0FBUyxnQkFBZ0IsRUFBRSx1Q0FBdUMseUNBQXlDLDJDQUEyQyxlQUFlLGNBQWM7QUFDN2IsK0JBQStCLFdBQVcsVUFBVSwwQkFBMEIsNENBQTRDLGFBQWEsRUFBRSxFQUFFLHdFQUF3RSxvQkFBb0IsbUJBQW1CLGtEQUFrRCxFQUFFLGNBQWMscUVBQXFFLFNBQVMsa0JBQWtCLGNBQWMsaUJBQWlCO0FBQzNiLHdDQUF3QyxJQUFJLHdGQUF3Riw0QkFBNEIsU0FBUyxtQkFBbUIsV0FBVyxvREFBb0Qsd0NBQXdDLG1CQUFtQixHQUFHLHlCQUF5Qiw0QkFBNEIsMERBQTBELFdBQVcsdUZBQXVGO0FBQzFnQiw2SkFBNkosaUJBQWlCLHFCQUFxQixnQ0FBZ0MsSUFBSSxLQUFLLFVBQVUsb0JBQW9CLDZEQUE2RCxPQUFPLHNCQUFzQixNQUFNLCtCQUErQixHQUFHLDJCQUEyQixlQUFlLEdBQUcsSUFBSSw2QkFBNkIsbUJBQW1CLHFCQUFxQixlQUFlLEdBQUcsSUFBSSwrQkFBK0IsbUJBQW1CLGtCQUFrQixlQUFlLEdBQUcsSUFBSSxrQ0FBa0MsV0FBVyxHQUFHLElBQUkscUNBQXFDLG1CQUFtQixxQkFBcUIsZUFBZSxHQUFHLElBQUksc0NBQXNDLG1CQUFtQixlQUFlLGVBQWUsR0FBRyxJQUFJLG1DQUFtQyxXQUFXLGNBQWMsZUFBZSxHQUFHLElBQUkseUNBQXlDLGlCQUFpQixHQUFHLElBQUksd0NBQXdDLGVBQWUsR0FBRyxJQUFJLDJCQUEyQixJQUFJLDRDQUE0QyxtQkFBbUIscUJBQXFCLHlCQUF5QixHQUFHLElBQUksOEJBQThCLFlBQVksY0FBYyxlQUFlLEdBQUcsSUFBSSx3QkFBd0IsSUFBSSx3QkFBd0IsSUFBSSwyQ0FBMkMsZ0JBQWdCLGNBQWMsdUJBQXVCLEdBQUcsSUFBSSxrQ0FBa0MsYUFBYSxjQUFjLHVCQUF1QixHQUFHLElBQUksd0JBQXdCLElBQUksOENBQThDLElBQUksMkZBQTJGLHVCQUF1QixlQUFlLHVCQUF1QixHQUFHLElBQUksMEJBQTBCLElBQUksMEJBQTBCLElBQUksZ0RBQWdELHVCQUF1QixrQkFBa0IsZ0JBQWdCLEdBQUcsSUFBSSxnQ0FBZ0MsdUJBQXVCLEdBQUcsSUFBSSx1QkFBdUIsbUJBQW1CLEdBQUcsSUFBSSx1QkFBdUIsSUFBSSx1QkFBdUIsSUFBSSwwQ0FBMEMsZ0JBQWdCLEdBQUcsR0FBRywwQkFBMEIsZUFBZTtBQUMxckUsc0VBQXNFLGlCQUFpQixjQUFjLGVBQWUsMENBQTBDLGdCQUFnQix3RkFBd0YsaUJBQWlCLHlKQUF5SixxQkFBcUIsa0xBQWtMLGdCQUFnQix3Q0FBd0MsZ0JBQWdCLDZEQUE2RCxlQUFlLGtIQUFrSCxjQUFjLGNBQWMsZUFBZTtBQUN4NkIscUJBQXFCLHlCQUF5QiwwWUFBMFksc0NBQXNDLG1CQUFtQixJQUFJO0FBQ3JmLGlDQUFpQyxrQkFBa0Isa0JBQWtCLGtCQUFrQixFQUFFLG9EQUFvRCwrQkFBK0IsdUJBQXVCLG1CQUFtQix5QkFBeUIsV0FBVyw4Q0FBOEMsY0FBYyxJQUFJLHNCQUFzQixnREFBZ0QsSUFBSSxzQkFBc0IsOENBQThDLElBQUkscUJBQXFCO0FBQ2plLG9CQUFvQixtQkFBbUIscUNBQXFDLHlCQUF5QixpQ0FBaUMsMkJBQTJCLG1DQUFtQyx5QkFBeUIseUJBQXlCLDJCQUEyQix5REFBeUQsdUJBQXVCLHNEQUFzRCw4Q0FBOEMsZ0RBQWdELHNCQUFzQixFQUFFO0FBQzdnQixNQUFNLHdDQUF3QyxxQkFBcUIscUNBQXFDLCtEQUErRCxTQUFTLGVBQWUsd0JBQXdCLG9JQUFvSSwwQ0FBMEMsaUNBQWlDLDBCQUEwQixxQkFBcUI7QUFDcmQsU0FBUyxtQkFBbUIsT0FBTyw2QkFBNkIsaURBQWlELHFFQUFxRSx5Q0FBeUM7QUFDL04sa01BQWtNLGlEQUFpRCxrT0FBa08sRUFBRTtBQUN2ZCw2RkFBNkYsRUFBRSx3REFBd0Qsa0JBQWtCLEdBQUcsMkJBQTJCLDBCQUEwQixlQUFlLGdFQUFnRSx3REFBd0QsdUNBQXVDLHVDQUF1Qyx3QkFBd0IscUNBQXFDO0FBQ25mLFVBQVUsdUJBQXVCLDZDQUE2QyxrQ0FBa0MsRUFBRSwyQ0FBMkMsd0VBQXdFLDBCQUEwQixVQUFVLG9CQUFvQixnQkFBZ0IsRUFBRSw2REFBNkQsbUZBQW1GLGlEQUFpRDtBQUNoZixvQ0FBb0Msc0RBQXNELDJDQUEyQyw2QkFBNkIsa0JBQWtCLEdBQUcsMEJBQTBCLDBCQUEwQixlQUFlLHdFQUF3RSx1Q0FBdUMsaUJBQWlCLGtCQUFrQiw0REFBNEQ7QUFDeGMscUJBQXFCLGlDQUFpQyxrQ0FBa0MsSUFBSSw2REFBNkQsb0NBQW9DLHNEQUFzRCxrSEFBa0gsa0VBQWtFO0FBQ3ZhLGtCQUFrQixHQUFHLDBCQUEwQiwwQkFBMEIscUJBQXFCLHlCQUF5QixFQUFFLHVDQUF1Qyx5RUFBeUUsOEJBQThCLElBQUksZ0VBQWdFLG1EQUFtRCw0RUFBNEUsS0FBSyxvQ0FBb0M7QUFDbmYsNENBQTRDLGtFQUFrRSxpS0FBaUssa0JBQWtCLEdBQUcsdUJBQXVCLDBCQUEwQixlQUFlLHNFQUFzRSx1Q0FBdUMsZ0JBQWdCO0FBQ2plLGtCQUFrQiw2REFBNkQsd0VBQXdFLGlCQUFpQixLQUFLLHdKQUF3SixJQUFJLDBCQUEwQiwrQkFBK0IsSUFBSSxRQUFRLFFBQVEsb0ZBQW9GLE1BQU07QUFDaGYseUJBQXlCLEtBQUssS0FBSyx5REFBeUQsdUJBQXVCLCtEQUErRCxZQUFZLHFEQUFxRCxnQkFBZ0IsT0FBTyxtQkFBbUIscUNBQXFDLGtCQUFrQixFQUFFLG1CQUFtQix3QkFBd0IscUJBQXFCLGlEQUFpRCxlQUFlLHdCQUF3QixFQUFFO0FBQ2hmLFdBQVcsdUJBQXVCLHdCQUF3QixZQUFZLHlCQUF5QixVQUFVLHdCQUF3QixFQUFFLDJCQUEyQix3QkFBd0IsS0FBSyxzQ0FBc0MsRUFBRSxJQUFJLGlCQUFpQixPQUFPLDhCQUE4QixJQUFJLGVBQWUsMENBQTBDLHVEQUF1RDtBQUNqWixvQkFBb0IsbUhBQW1ILHdCQUF3QiwwQkFBMEIscUJBQXFCLHVDQUF1QywrQ0FBK0MsNkRBQTZELDhCQUE4QixJQUFJLDREQUE0RCxrQkFBa0I7QUFDamQsa0NBQWtDLG1GQUFtRixpREFBaUQsZUFBZSxpQ0FBaUMsNkNBQTZDLEtBQUssY0FBYyxpQ0FBaUMsNkdBQTZHLCtDQUErQztBQUNuZCx1QkFBdUIsNEVBQTRFLHVCQUF1QixrQkFBa0IsR0FBRyxzQkFBc0IsMEJBQTBCLHlDQUF5Qyw0Q0FBNEMsd0JBQXdCLEVBQUUsdUNBQXVDLHVCQUF1QixzRkFBc0YsRUFBRTtBQUNwYyxXQUFXLGtEQUFrRCxrTUFBa00sb0NBQW9DLHNDQUFzQyxpQ0FBaUMsaUJBQWlCLEtBQUssVUFBVSxnQ0FBZ0Msa0JBQWtCLEdBQUcsNEJBQTRCLFdBQVcsMEJBQTBCO0FBQ2hnQixHQUFHLHVDQUF1Qyw4QkFBOEIsZ0JBQWdCLG9FQUFvRSxzQkFBc0IsZUFBZSxzQkFBc0IsNkVBQTZFLHVCQUF1QiwrREFBK0QsRUFBRSw0Q0FBNEMsaUJBQWlCO0FBQ3piLFFBQVEsdUJBQXVCLDBCQUEwQixrQkFBa0IsMERBQTBELGNBQWMsTUFBTSxpQkFBaUIsc0JBQXNCLHNDQUFzQyxvQkFBb0IsbURBQW1ELDBCQUEwQixrRUFBa0Usc0JBQXNCLHlCQUF5QixvREFBb0Q7QUFDNWUsK0JBQStCLGdDQUFnQyxjQUFjLFFBQVEsWUFBWSw2RUFBNkUsU0FBUyxvR0FBb0csWUFBWSxXQUFXLGlCQUFpQixrQkFBa0IsR0FBRyxLQUFLLG1FQUFtRTtBQUNoYSxDQUFDLHFCQUFxQixnREFBZ0QseUdBQXlHLFlBQVkscUJBQXFCLGdEQUFnRCx5REFBeUQsbUJBQW1CLEtBQUssNEZBQTRGLGlCQUFpQiw2Q0FBNkMscUJBQXFCLEVBQUU7QUFDbGdCLGtCQUFrQixtQkFBbUIsd0JBQXdCLGlDQUFpQyxvQkFBb0IsbUJBQW1CLDJDQUEyQyxzQkFBc0IsZ0RBQWdELHNCQUFzQix1QkFBdUIseUNBQXlDLHlEQUF5RCxzQkFBc0IsMkJBQTJCLHdCQUF3QixHQUFHLDRCQUE0QixhQUFhO0FBQzFmLHlCQUF5QixhQUFhLHNCQUFzQixLQUFLLG9HQUFvRywyQkFBMkIsaURBQWlELGtCQUFrQiw2QkFBNkIsc0JBQXNCLDBCQUEwQixlQUFlLElBQUksbUJBQW1CLDZCQUE2QixzQkFBc0IsMEJBQTBCLDhCQUE4QixJQUFJLHdCQUF3QixjQUFjO0FBQzNnQixxQkFBcUIsY0FBYyxxQkFBcUIsbURBQW1ELDJCQUEyQixVQUFVLDZFQUE2RSxxQkFBcUIsaUVBQWlFLGlCQUFpQixnQ0FBZ0MsNEJBQTRCLFNBQVMsZ0NBQWdDLDZCQUE2QixtQkFBbUIsOEJBQThCO0FBQ3ZmLDZFQUE2RSwrQkFBK0IscURBQXFELHNCQUFzQixPQUFPLHVFQUF1RSxpR0FBaUcsMkJBQTJCLGtDQUFrQyxxQkFBcUI7QUFDeGIsMkJBQTJCLFdBQVcsbUNBQW1DLDZFQUE2RSxZQUFZLG9CQUFvQixtQ0FBbUMsWUFBWSxrQkFBa0IsbUNBQW1DLFdBQVcsYUFBYSxZQUFZLHNCQUFzQixPQUFPLDhGQUE4RiwyQkFBMkIsb0NBQW9DO0FBQ3hmLHVCQUF1QixtQ0FBbUMsd0JBQXdCLFFBQVEsRUFBRSxZQUFZLHFCQUFxQix3Q0FBd0Msd0JBQXdCLGdDQUFnQyxrQkFBa0IsdUJBQXVCLG9GQUFvRix1QkFBdUIsbUNBQW1DLGtDQUFrQyxXQUFXLCtDQUErQyxrQkFBa0IsRUFBRTtBQUNwZ0IsTUFBTSxPQUFPLG9CQUFvQixhQUFhLHNCQUFzQixPQUFPLDJGQUEyRix1QkFBdUIsZ0NBQWdDLHFCQUFxQiw2Q0FBNkMsd0JBQXdCLFFBQVEsRUFBRSxZQUFZLHFCQUFxQiw4QkFBOEIsV0FBVywwREFBMEQsWUFBWSx3QkFBd0I7QUFDemUsRUFBRSxRQUFRLFdBQVcsb0NBQW9DLDBCQUEwQixPQUFPLDBCQUEwQixrQkFBa0IsdUJBQXVCLG9GQUFvRix1QkFBdUIscUNBQXFDLFdBQVcsc0RBQXNELFdBQVcsNERBQTRELGlDQUFpQyxFQUFFLEVBQUUsT0FBTztBQUNqZSxjQUFjLE9BQU8saUdBQWlHLDJCQUEyQixtRUFBbUUsK0ZBQStGLG1CQUFtQiw4Q0FBOEMsWUFBWSxzQkFBc0IsbURBQW1ELDRCQUE0QjtBQUNyZSxzQkFBc0IsNkJBQTZCLDhCQUE4QixFQUFFLEdBQUcsdUpBQXVKLFlBQVksa0JBQWtCLGFBQWEsV0FBVyxTQUFTLHlDQUF5Qyx5QkFBeUIseUlBQXlJLGtCQUFrQix3QkFBd0I7QUFDamlCO0FBQ0Esa0RBQWtELHVEQUF1RCwwQ0FBMEMsaURBQWlELCtCQUErQixZQUFZLFFBQVEsV0FBVyxrQkFBa0IsNE1BQTRNO0FBQ2hlLHNDQUFzQyx3QkFBd0IscUVBQXFFLHlDQUF5Qyx5REFBeUQsaUNBQWlDLGlDQUFpQyxHQUFHLHlDQUF5QyxxQkFBcUIsMENBQTBDLHlCQUF5QixvQkFBb0Isa0JBQWtCLHVCQUF1QjtBQUN4ZSxpQ0FBaUMsOENBQThDLG9CQUFvQixzQkFBc0IsRUFBRSxPQUFPLHdDQUF3QyxxQkFBcUIsc0JBQXNCLEtBQUssc0VBQXNFLDhGQUE4Rix1Q0FBdUMsMkNBQTJDO0FBQ2hkLDJDQUEyQywyQ0FBMkMsd0NBQXdDLHlDQUF5Qyx5Q0FBeUMsdUNBQXVDLDZDQUE2Qyx1Q0FBdUMseUNBQXlDLHNCQUFzQixxQ0FBcUMscUJBQXFCLEtBQUssU0FBUyxVQUFVO0FBQzVkLE1BQU0sa0RBQWtELEdBQUcsa01BQWtNLGNBQWMsa0JBQWtCLHNDQUFzQyx5QkFBeUIsYUFBYSx5R0FBeUcsTUFBTTtBQUN4ZCxtREFBbUQsWUFBWSxhQUFhLHVHQUF1RyxNQUFNLHlGQUF5RixZQUFZLGdCQUFnQiwyREFBMkQsSUFBSSxLQUFLLHFDQUFxQztBQUN2WiwySEFBMkgsZ0JBQWdCLDZCQUE2QiwyRUFBMkUsNENBQTRDLFlBQVksdUJBQXVCLGNBQWMsRUFBRSxhQUFhLDZCQUE2QixxQ0FBcUMsY0FBYztBQUMvYSxXQUFXLG9PQUFvTyw2REFBNkQsK0VBQStFLHlGQUF5RixzQ0FBc0M7QUFDMWYsOEJBQThCLGlCQUFpQixLQUFLLGlMQUFpTCxpQkFBaUIsaUJBQWlCLE9BQU8saUJBQWlCLHNIQUFzSCxrQkFBa0IsZUFBZSxrQkFBa0IsZ0JBQWdCLDRCQUE0QjtBQUNwZixlQUFlLHNCQUFzQixzQ0FBc0Msc0JBQXNCLDJCQUEyQix3QkFBd0IsVUFBVSxxQkFBcUIsRUFBRSx3QkFBd0IsdUJBQXVCLEVBQUUsdUJBQXVCLHNCQUFzQixFQUFFLGNBQWMsYUFBYSxXQUFXLG9DQUFvQyxpQkFBaUIsdUJBQXVCLDZCQUE2QixFQUFFLGdCQUFnQixjQUFjLDJCQUEyQixPQUFPO0FBQ3RlLEdBQUcsOEJBQThCLGdCQUFnQixRQUFRLFVBQVUsOEJBQThCLGNBQWMsY0FBYyxxSEFBcUgsR0FBRyxTQUFTLE9BQU8sT0FBTyw2RkFBNkYsMkVBQTJFLGdCQUFnQixnQkFBZ0IsY0FBYztBQUNsZSxhQUFhLGdEQUFnRCw4Q0FBOEMsMkJBQTJCLHVDQUF1QyxnQ0FBZ0MsK0JBQStCLDRHQUE0Ryw4QkFBOEIseUNBQXlDLGVBQWUsa0JBQWtCLDZDQUE2QztBQUM3ZSxhQUFhLFdBQVcsR0FBRyx1Q0FBdUMsb0NBQW9DLGtDQUFrQyxrQkFBa0IsbUdBQW1HLHdCQUF3QixJQUFJLGNBQWMsY0FBYztBQUNyVCxzQkFBc0IsV0FBVyxXQUFXLGlDQUFpQywyQ0FBMkMsZ0JBQWdCLGdCQUFnQixpR0FBaUcsbUdBQW1HLGNBQWMsOENBQThDLHNCQUFzQix3QkFBd0IsYUFBYTtBQUNuZCxHQUFHLGdEQUFnRCx1QkFBdUIsMkJBQTJCLHVDQUF1Qyw4QkFBOEIsaUNBQWlDLGlDQUFpQyxtQ0FBbUMsK0VBQStFLGNBQWMscUJBQXFCLGNBQWM7QUFDL1kscUJBQXFCLDhHQUE4RyxvQkFBb0IsYUFBYSxRQUFRLE1BQU0saUNBQWlDLDREQUE0RCwwREFBMEQsR0FBRyx5QkFBeUIsa0RBQWtELG9DQUFvQyxrQ0FBa0M7QUFDN2QsMkVBQTJFLHFDQUFxQyxFQUFFLHVCQUF1QixTQUFTLDBIQUEwSDtBQUM1USxvQ0FBb0MsMkJBQTJCLEVBQUUsMEJBQTBCLGlDQUFpQyxHQUFHLGtCQUFrQixpSkFBaUosc0JBQXNCLHdCQUF3QixvQkFBb0IsY0FBYyx5QkFBeUIsY0FBYztBQUN6WiwrR0FBK0csd0RBQXdELDRHQUE0RyxnQkFBZ0IsVUFBVSxXQUFXLEtBQUssYUFBYSxhQUFhO0FBQ3ZWLElBQUksaUxBQWlMLHNDQUFzQyxpQ0FBaUMsMEJBQTBCLGlCQUFpQixLQUFLLDZDQUE2QyxPQUFPLE1BQU0sV0FBVyxhQUFhO0FBQzlYLG1JQUFtSSxzQkFBc0IsSUFBSSxpREFBaUQsY0FBYywyREFBMkQsdUNBQXVDLGNBQWMsdUhBQXVIO0FBQ25jLCtHQUErRyxjQUFjLHVIQUF1SCwrSkFBK0osc0JBQXNCLHdCQUF3QjtBQUNqYyxnQkFBZ0IsRUFBRSxjQUFjLGdCQUFnQiw0QkFBNEIsS0FBSyxxREFBcUQsMkJBQTJCLGdCQUFnQix1REFBdUQsY0FBYyx1SUFBdUksV0FBVyxvQkFBb0IsTUFBTSxXQUFXLFFBQVEsaURBQWlELFNBQVMseURBQXlELEdBQUc7QUFDM2lCLDZCQUE2QixRQUFRLDBOQUEwTixHQUFHLDBHQUEwRyxHQUFHLDZFQUE2RSxXQUFXLCtHQUErRyxHQUFHLDhLQUE4SyxHQUFHLGlJQUFpSSxHQUFHO0FBQzkyQiw4QkFBOEIsYUFBYSxvQkFBb0IscUJBQXFCLDhFQUE4RSxFQUFFLHVCQUF1QixJQUFJLHNCQUFzQixjQUFjLG9CQUFvQixPQUFPLGtCQUFrQiw0QkFBNEIsMkJBQTJCLElBQUksZ0NBQWdDLFVBQVUsMEJBQTBCLEdBQUcsS0FBSyw2Q0FBNkMsa0JBQWtCO0FBQ3RkLHlCQUF5QixPQUFPLHdCQUF3QixjQUFjLDhCQUE4QixhQUFhLGtDQUFrQyxjQUFjLG9DQUFvQyxnRUFBZ0UsTUFBTSw2REFBNkQsMEVBQTBFO0FBQ2xaLCtEQUErRCwwTkFBME4sMkdBQTJHLFFBQVEsd0JBQXdCLFlBQVk7QUFDaGIsWUFBWSxNQUFNLGNBQWMsdURBQXVELDZIQUE2SCxLQUFLLHlGQUF5RixnQ0FBZ0MsMEJBQTBCLGdCQUFnQixPQUFPLFFBQVEsMERBQTBELGlCQUFpQixPQUFPLGlCQUFpQixZQUFZO0FBQzFmLFVBQVUsZ0JBQWdCLGdCQUFnQixtQkFBbUIsUUFBUSwwSUFBMEksbUJBQW1CLHFDQUFxQyx5Q0FBeUMsU0FBUyxHQUFHLDJCQUEyQixnREFBZ0QsNkJBQTZCLCtCQUErQiwwQkFBMEI7QUFDN2QsQ0FBQyxnQ0FBZ0MsZUFBZSwyREFBMkQsb0NBQW9DLEdBQUcsUUFBUSxXQUFXLHNDQUFzQyxXQUFXLGdCQUFnQixnQkFBZ0IsdUJBQXVCLDZEQUE2RCxXQUFXLDJCQUEyQixxQ0FBcUMscUNBQXFDLHFDQUFxQztBQUMvZCxZQUFZLHVCQUF1QixzQkFBc0IsdUJBQXVCLElBQUksMkNBQTJDLEVBQUUsc0NBQXNDLDJDQUEyQywrQ0FBK0MsRUFBRSx5QkFBeUIsMEJBQTBCLCtEQUErRCx5QkFBeUIsY0FBYyxlQUFlLG9EQUFvRDtBQUMvZCx5Q0FBeUMsVUFBVSxFQUFFLGNBQWMsNkJBQTZCLGNBQWMsbUhBQW1ILEVBQUUsY0FBYyx3Q0FBd0MseUJBQXlCLFFBQVEsb0JBQW9CLHdCQUF3QixPQUFPLG1CQUFtQixxQkFBcUIsd0JBQXdCLDBCQUEwQix1QkFBdUI7QUFDOWQsUUFBUSxFQUFFLDBCQUEwQiw4QkFBOEIsbURBQW1ELGNBQWMsV0FBVyxFQUFFLEVBQUUsa0NBQWtDLGdHQUFnRyxFQUFFLDBCQUEwQixJQUFJLHNCQUFzQjtBQUMxVSxzREFBc0QsdUJBQXVCLG9EQUFvRCx1Q0FBdUMsV0FBVyxjQUFjLE9BQU8sUUFBUSxRQUFRLDhFQUE4RSxRQUFRLG9CQUFvQix1Q0FBdUMsdUNBQXVDLHlCQUF5QjtBQUN6YSxpQ0FBaUMsT0FBTyxLQUFLLHVEQUF1RCwrRUFBK0UsZUFBZSxzQ0FBc0MsUUFBUSxXQUFXLGtDQUFrQywyQkFBMkIsbUJBQW1CLFlBQVksd0JBQXdCLHNCQUFzQixtRkFBbUY7QUFDeGQsQ0FBQyw2QkFBNkIsZ0JBQWdCLG9CQUFvQixpQkFBaUIsZ0JBQWdCLCtCQUErQiwyQkFBMkIsRUFBRSxtREFBbUQsMERBQTBELHNHQUFzRyxvQkFBb0IsbUJBQW1CLG9CQUFvQixnQ0FBZ0MsT0FBTztBQUNwZCxHQUFHLHNCQUFzQixnRUFBZ0UsMkNBQTJDLDBKQUEwSiwySEFBMkgsaUJBQWlCLFNBQVMsV0FBVyxHQUFHLG9CQUFvQjtBQUNyZCxlQUFlLG9CQUFvQix3QkFBd0IsK0JBQStCLGtCQUFrQixpQkFBaUIsNEdBQTRHLDRGQUE0RixvSkFBb0osYUFBYTtBQUN0ZSxnREFBZ0QsNEVBQTRFLGtGQUFrRixzRUFBc0U7QUFDcFIsMklBQTJJLGtCQUFrQixnQkFBZ0IsbUJBQW1CLDBDQUEwQyxnRUFBZ0UsTUFBTSxvQ0FBb0MsK0JBQStCO0FBQ25YLGtCQUFrQixrSUFBa0kscUNBQXFDLGNBQWMsUUFBUSw0Q0FBNEMsdUJBQXVCLEVBQUUsK0JBQStCLG1CQUFtQixFQUFFLHNDQUFzQyx1REFBdUQseUJBQXlCLGlDQUFpQyxFQUFFLFdBQVcsbUJBQW1CO0FBQy9mLGtCQUFrQixxQkFBcUIseUVBQXlFLHdIQUF3SCxvRkFBb0YsZ0JBQWdCLGdCQUFnQixnQkFBZ0IscUJBQXFCLGdHQUFnRyxZQUFZLGtCQUFrQjtBQUMvZixZQUFZLHFCQUFxQixrQkFBa0IsZ0JBQWdCLGFBQWEsMkJBQTJCLGdCQUFnQix5QkFBeUIsNEJBQTRCLEVBQUUsMEJBQTBCLGdCQUFnQix5QkFBeUIsc0ZBQXNGLDhCQUE4QixFQUFFLGlCQUFpQixrQ0FBa0MsbUJBQW1CLEVBQUUsc0NBQXNDO0FBQ3pkLHFCQUFxQiw2QkFBNkIsa0RBQWtELFlBQVksbUNBQW1DLHFDQUFxQyx3QkFBd0IscUlBQXFJLHVEQUF1RCx3QkFBd0Isc0JBQXNCO0FBQzFiLEdBQUcsS0FBSyxxQ0FBcUMsOEJBQThCLDRCQUE0QixvQkFBb0IsVUFBVSxzQkFBc0Isd0JBQXdCLG1DQUFtQyxJQUFJLDJCQUEyQix5QkFBeUIscUNBQXFDLEVBQUUsMkNBQTJDLHFCQUFxQixzRUFBc0U7QUFDM2IsOERBQThELHFJQUFxSSxFQUFFLDhCQUE4QixvQkFBb0IsWUFBWSx5SEFBeUgsaUJBQWlCLGtEQUFrRCxrQ0FBa0M7QUFDamUsUUFBUSxlQUFlLGlEQUFpRCwwVEFBMFQsb0NBQW9DLHdCQUF3Qiw0QkFBNEI7QUFDMWQsaUJBQWlCLG1CQUFtQiw0QkFBNEIsZ0NBQWdDLGlCQUFpQiwwQkFBMEIsbUdBQW1HLHdCQUF3QixnSEFBZ0gsdUNBQXVDLEdBQUcsMEJBQTBCLDRDQUE0QztBQUN0ZSw2Q0FBNkMsbUNBQW1DLHFCQUFxQix5Q0FBeUMsc0NBQXNDLDBGQUEwRixVQUFVLGlCQUFpQixzQkFBc0IsbUVBQW1FLHdCQUF3QixvRkFBb0Ysc0JBQXNCO0FBQ3BnQixrQ0FBa0MsOElBQThJLHNCQUFzQixzRkFBc0YsdUJBQXVCLHNCQUFzQixvQkFBb0IsbUJBQW1CLGlDQUFpQyx5QkFBeUIsZUFBZSwwQkFBMEIsOENBQThDO0FBQ2pnQiwyQkFBMkIsK0NBQStDLHVCQUF1Qix5QkFBeUIsbUJBQW1CLGlDQUFpQywyQkFBMkIsbUNBQW1DLDBCQUEwQixrQ0FBa0MseUJBQXlCLHdCQUF3Qiw0QkFBNEIscUJBQXFCLCtCQUErQixrRUFBa0U7QUFDM2UsR0FBRywwRkFBMEYsS0FBSyw2Q0FBNkMsY0FBYywwQkFBMEIsc0NBQXNDLHNCQUFzQixrQkFBa0IsYUFBYSxrQ0FBa0Msd0JBQXdCLHlDQUF5QyxZQUFZLDZCQUE2QixTQUFTLGtDQUFrQztBQUN6YyxNQUFNLDREQUE0RCxzQ0FBc0MsR0FBRyxnREFBZ0QsMEJBQTBCLHFEQUFxRCx3SUFBd0ksc0JBQXNCLHNCQUFzQiwyRkFBMkY7QUFDemYscUJBQXFCLGVBQWUscUJBQXFCLDZEQUE2RCxtQkFBbUIseUhBQXlILHVDQUF1QyxpREFBaUQsbUZBQW1GLG9CQUFvQixvQ0FBb0MsdUJBQXVCLG9DQUFvQztBQUNoaUIsNkJBQTZCLDRCQUE0QixxQ0FBcUMsa0JBQWtCLFVBQVUscUJBQXFCLG9CQUFvQixRQUFRLDhCQUE4QixtR0FBbUcsZ0JBQWdCLGtCQUFrQixRQUFRLGtCQUFrQixRQUFRLGdCQUFnQix1QkFBdUIseUNBQXlDLGNBQWMsRUFBRSxjQUFjLE1BQU0sU0FBUywyQkFBMkI7QUFDeGdCLGNBQWMsUUFBUSw4QkFBOEIsK0dBQStHLGdCQUFnQixzQkFBc0IsUUFBUSxrQkFBa0IsUUFBUSxnQkFBZ0IsdUJBQXVCLHlDQUF5QyxjQUFjLEVBQUUsY0FBYyxNQUFNLFNBQVMsOEJBQThCLCtCQUErQixFQUFFLG1CQUFtQixvQkFBb0IscUJBQXFCO0FBQ25lLDRDQUE0QyxzREFBc0QsR0FBRyxrSUFBa0ksc0JBQXNCLGNBQWMsT0FBTyxrREFBa0QsWUFBWSx1QkFBdUIsTUFBTSxjQUFjLE9BQU8sS0FBSyxvQ0FBb0MsMENBQTBDLGlCQUFpQixVQUFVLFNBQVM7QUFDemYsa0JBQWtCLGNBQWMsT0FBTyxLQUFLLGdDQUFnQyxxQ0FBcUMsYUFBYSxhQUFhLHdCQUF3QiwwQkFBMEIsdUJBQXVCLHlCQUF5QiwyQkFBMkIsNEJBQTRCLHlCQUF5QiwyQkFBMkIsNEJBQTRCLG1CQUFtQiwwQkFBMEIsb0JBQW9CLGFBQWEsZ0JBQWdCLHFDQUFxQztBQUN2ZixrQkFBa0IsdUNBQXVDLG9CQUFvQixnQ0FBZ0MsUUFBUSxNQUFNLFlBQVksb0JBQW9CLGtDQUFrQywwQkFBMEIsc0VBQXNFLHlCQUF5QixpR0FBaUc7QUFDdlosSUFBSSxPQUFPLFNBQVMsdUNBQXVDLGdDQUFnQywrQkFBK0Isb0VBQW9FLFdBQVcsc0JBQXNCLEtBQUsscUJBQXFCLHVCQUF1QiwyQkFBMkIsd0JBQXdCLEdBQUcsK0ZBQStGLDhCQUE4QixpQ0FBaUMsaUJBQWlCO0FBQ3JmLEVBQUUsNkJBQTZCLHlDQUF5QyxnQkFBZ0IsSUFBSSxrRUFBa0Usa0NBQWtDLG1CQUFtQixtQkFBbUIsWUFBWSwwREFBMEQsbUJBQW1CLEVBQUUsNkRBQTZELGdHQUFnRyxtQkFBbUI7QUFDamYsMEJBQTBCLEdBQUcsZ0dBQWdHLGtCQUFrQiwyQ0FBMkMsR0FBRyxpQ0FBaUMsdUJBQXVCLGlGQUFpRixXQUFXLHVCQUF1QiwwQkFBMEIsTUFBTSxnQkFBZ0IsbUJBQW1CLHFFQUFxRTtBQUNoZixXQUFXLGtCQUFrQixnQkFBZ0IsZ0JBQWdCLG9CQUFvQixFQUFFLHVCQUF1QixlQUFlLHVCQUF1QixHQUFHLEVBQUUsOEJBQThCLDJIQUEySCxtQ0FBbUMsSUFBSSwwQkFBMEIsMEJBQTBCLGtCQUFrQixFQUFFLHFFQUFxRTtBQUNsZSw4QkFBOEIsNkNBQTZDLFlBQVksYUFBYSxjQUFjLGdFQUFnRSxRQUFRLFdBQVcsS0FBSyxzQ0FBc0Msc0NBQXNDLDZDQUE2QywwREFBMEQsK0VBQStFLDBCQUEwQjtBQUN0ZSxnQ0FBZ0MsbUZBQW1GLDBDQUEwQyxTQUFTLGtDQUFrQyxvQ0FBb0Msa0JBQWtCLEdBQUcsMEJBQTBCLDBCQUEwQixrQkFBa0IsRUFBRSxnRUFBZ0UsNkNBQTZDLFlBQVksZUFBZSxvQkFBb0IsWUFBWTtBQUNqZix1RUFBdUUscUJBQXFCLGlDQUFpQyxHQUFHLCtCQUErQixHQUFHLHdDQUF3QyxHQUFHLFlBQVksc0hBQXNILDRCQUE0QixZQUFZLFdBQVcsS0FBSyxTQUFTLG1EQUFtRCxpQ0FBaUM7QUFDcGUscUVBQXFFLHVEQUF1RCxtRkFBbUYsMENBQTBDLFNBQVMsaUZBQWlGLHVDQUF1QyxrQkFBa0IsS0FBSyxJQUFJLHdDQUF3QyxzQkFBc0IsNkNBQTZDO0FBQ2hnQiwyQkFBMkIseUJBQXlCLHNCQUFzQixxQkFBcUIsd0JBQXdCLG1DQUFtQyx3QkFBd0IsUUFBUSxFQUFFLFlBQVkscUJBQXFCLHlDQUF5QyxzQkFBc0IsU0FBUyw0QkFBNEIsaUNBQWlDLHdFQUF3RSxFQUFFLGtCQUFrQix5QkFBeUI7QUFDdmQsK0JBQStCLFlBQVksa0JBQWtCLGlEQUFpRCxZQUFZLDRCQUE0Qiw0Q0FBNEMsdUJBQXVCLDhCQUE4QixFQUFFLEdBQUcsdUpBQXVKLFlBQVksa0JBQWtCLHFCQUFxQixvQkFBb0Isc0JBQXNCO0FBQ2hmLFFBQVEsc0JBQXNCLHFCQUFxQiwwQkFBMEIsYUFBYSx5QkFBeUIsb0JBQW9CLHdCQUF3Qix1REFBdUQsMkJBQTJCLG1CQUFtQix3QkFBd0IsbURBQW1ELDhCQUE4QixzQkFBc0Isa0RBQWtELHNCQUFzQiwwQ0FBMEM7QUFDcmYsdUJBQXVCLGtEQUFrRCwwRkFBMEYscUJBQXFCLHNEQUFzRCxrQkFBa0Isd0pBQXdKLEtBQUssOERBQThELFlBQVksT0FBTztBQUM5ZSxLQUFLLHFDQUFxQyxxQkFBcUIsS0FBSyxTQUFTLFVBQVUsaUVBQWlFLG1EQUFtRCx1Q0FBdUMsdUNBQXVDLElBQUkscUNBQXFDLGtCQUFrQixrQ0FBa0Msa0NBQWtDLGlCQUFpQixpQkFBaUIseUNBQXlDLG1CQUFtQixFQUFFO0FBQ3hmLDBCQUEwQixZQUFZLDZMQUE2TCxLQUFLLHVCQUF1Qix3QkFBd0IsMEJBQTBCLHFCQUFxQixnQkFBZ0IsbUJBQW1CLHlDQUF5QyxxQ0FBcUMsUUFBUSxXQUFXO0FBQzFjLFdBQVcsZ0RBQWdELDRDQUE0QywyQkFBMkIsWUFBWSxXQUFXLEtBQUssbUJBQW1CLHFDQUFxQyxlQUFlLHFCQUFxQixrQ0FBa0MsaUJBQWlCLElBQUksc0JBQXNCLGtDQUFrQztBQUN6VyxnQkFBZ0IsSUFBSSxxQkFBcUIsdUJBQXVCLG9CQUFvQix1QkFBdUIsdUJBQXVCLGtDQUFrQyxzQ0FBc0MsSUFBSSx3QkFBd0Isa0NBQWtDLHNDQUFzQyxJQUFJLHlCQUF5QixrQ0FBa0MsaUNBQWlDLEdBQUcsNEJBQTRCLGdEQUFnRCxzQ0FBc0MsRUFBRTtBQUNyZ0IsR0FBRyxzQkFBc0Isa0NBQWtDLFlBQVksSUFBSSx3QkFBd0Isa0NBQWtDLFlBQVksTUFBTSw0Q0FBNEMsK0NBQStDLFVBQVUsK0JBQStCLFVBQVUsNkJBQTZCLEtBQUssMkJBQTJCLDhCQUE4QixFQUFFLElBQUksaURBQWlELDJCQUEyQjtBQUNsZCw2Q0FBNkMsd0VBQXdFLG1GQUFtRixLQUFLLGtIQUFrSCw2RUFBNkU7QUFDNVksdUJBQXVCLFdBQVcsaUNBQWlDLDhCQUE4QixpQkFBaUIsZ0JBQWdCLFVBQVUsRUFBRSwrQkFBK0IscUNBQXFDLDRFQUE0RSwrQkFBK0IsMkNBQTJDLGlCQUFpQixFQUFFLGNBQWMsaUNBQWlDLGtDQUFrQztBQUM1Yyw2VEFBNlQsa0JBQWtCLFdBQVcseUJBQXlCLGdCQUFnQix3R0FBd0c7QUFDM2Usb0NBQW9DLGlDQUFpQyx5QkFBeUIsRUFBRSxRQUFRLG1CQUFtQix1QkFBdUIsRUFBRSwyQ0FBMkMsZ0VBQWdFLHVDQUF1QyxzQ0FBc0MsR0FBRyxFQUFFLGlDQUFpQyxtQ0FBbUMsZ0VBQWdFLFNBQVMsb0JBQW9CO0FBQ2xmLEdBQUcsYUFBYSx3Q0FBd0MsNERBQTRELEVBQUUsMkRBQTJELHNDQUFzQyxpQkFBaUIsNEJBQTRCLE1BQU0sd0JBQXdCLFdBQVcsYUFBYSx1Q0FBdUMseUNBQXlDLEVBQUUsNENBQTRDLGVBQWUsR0FBRyxrQ0FBa0M7QUFDNWUsaURBQWlELEdBQUcsSUFBSSx1Q0FBdUMsMEJBQTBCLHlCQUF5Qix3Q0FBd0MsdUNBQXVDLHNDQUFzQywrQ0FBK0MsNENBQTRDLGtEQUFrRCx5Q0FBeUMsaUNBQWlDO0FBQzlkLG1CQUFtQixrREFBa0QsOERBQThELGtEQUFrRCw4REFBOEQsc0VBQXNFLHVHQUF1Ryx1QkFBdUIscUNBQXFDO0FBQzVkLDhCQUE4Qiw0Q0FBNEMsY0FBYyx1Q0FBdUMsMEJBQTBCLDBIQUEwSCxJQUFJLG1DQUFtQywrQkFBK0Isb0NBQW9DLDJCQUEyQix1Q0FBdUMsWUFBWSxvQ0FBb0M7QUFDL2UsbUJBQW1CLHVDQUF1QyxjQUFjLHlDQUF5QyxjQUFjLHVEQUF1RCxPQUFPLGlCQUFpQixnRkFBZ0YsTUFBTSwwQkFBMEIsb0JBQW9CLHNDQUFzQyxvREFBb0QsY0FBYyx3REFBd0Q7QUFDbGYsSUFBSSxNQUFNLG9EQUFvRCxrQkFBa0Isd0RBQXdELFVBQVUsT0FBTyx5QkFBeUIsa0RBQWtELDZCQUE2QixTQUFTLHVCQUF1QixXQUFXO0FBQzVTLDREQUE0RCxtQkFBbUIsS0FBSyxRQUFRLFdBQVcsZ0RBQWdELE9BQU8sZ0NBQWdDLGVBQWUsaUJBQWlCLFdBQVcsV0FBVyxFQUFFLGdCQUFnQix5QkFBeUIsaUJBQWlCLHVCQUF1QixJQUFJLEtBQUssV0FBVywyQ0FBMkMsb0RBQW9ELGFBQWE7QUFDdmMsYUFBYSxlQUFlLHlDQUF5Qyx5QkFBeUIsV0FBVyx5QkFBeUIsaUNBQWlDLEtBQUssU0FBUyx1QkFBdUIsRUFBRSxhQUFhLGNBQWMsRUFBRSwwQ0FBMEMsZ0JBQWdCLElBQUksTUFBTSxnQkFBZ0Isc0hBQXNILHdDQUF3QyxLQUFLLEtBQUssU0FBUyxXQUFXO0FBQ3ZmLDJSQUEyUix3Q0FBd0MsaUJBQWlCLEtBQUssS0FBSyxPQUFPLEdBQUcsSUFBSSx5Q0FBeUMsdUJBQXVCLDJEQUEyRCxLQUFLLFFBQVE7QUFDcGYsR0FBRyxjQUFjLGtEQUFrRCxTQUFTLG9DQUFvQyxnREFBZ0QsK0lBQStJLDZGQUE2RixhQUFhLG1DQUFtQyw0Q0FBNEM7QUFDeGUsTUFBTSxxQkFBcUIsV0FBVyx1QkFBdUIsd0hBQXdILGdGQUFnRixtQ0FBbUMsaUJBQWlCLHdGQUF3RixxRkFBcUYsSUFBSSxFQUFFO0FBQzVlLFdBQVcsZ0JBQWdCLDhCQUE4QiwwRUFBMEUsRUFBRSwyQkFBMkIsbUNBQW1DLDBGQUEwRixjQUFjLFdBQVcsY0FBYyxzQkFBc0IsbUNBQW1DLGlFQUFpRTtBQUM5YixNQUFNLDBCQUEwQixxQkFBcUIsbUJBQW1CLEVBQUUscUNBQXFDLGlCQUFpQixjQUFjLHNDQUFzQyxhQUFhLHlDQUF5QyxFQUFFLGlCQUFpQiw2Q0FBNkMsRUFBRSxhQUFhLHNDQUFzQyxzQkFBc0IsV0FBVyxNQUFNLDhCQUE4QixtQ0FBbUMsUUFBUSxzQkFBc0I7QUFDcmUsQ0FBQyx1Q0FBdUMsRUFBRSxTQUFTLFVBQVUsdUJBQXVCLHVCQUF1Qix5Q0FBeUMsMkVBQTJFLEdBQUcsRUFBRSxhQUFhLGdCQUFnQiwwQ0FBMEMsa0JBQWtCLGtEQUFrRCxvQkFBb0IsU0FBUyw0Q0FBNEMsNEJBQTRCLFVBQVU7QUFDOWQsbURBQW1ELDBCQUEwQixrREFBa0QsdVFBQXVRLHFFQUFxRTtBQUMzYyxzREFBc0QsdUZBQXVGLHlCQUF5Qix5QkFBeUIsaUJBQWlCLDBDQUEwQyxrQkFBa0IsMEJBQTBCLHNCQUFzQiwrREFBK0QsMkJBQTJCLCtDQUErQyxrQ0FBa0M7QUFDdmUsNkJBQTZCLGlCQUFpQiwrQ0FBK0MsRUFBRSwrREFBK0QsZ0NBQWdDLHVDQUF1Qyx3QkFBd0IsWUFBWSw4TkFBOE4sWUFBWTtBQUNuZixXQUFXLGlCQUFpQixTQUFTLEVBQUUsU0FBUyxzQkFBc0Isa0ZBQWtGLG1DQUFtQyx1Q0FBdUMsd0NBQXdDLGtEQUFrRCxTQUFTLG1DQUFtQyw4Q0FBOEMsOEJBQThCLGFBQWE7QUFDamMsa0RBQWtELHlKQUF5SiwyQ0FBMkMsU0FBUyxPQUFPLGFBQWEsZ0JBQWdCLDJCQUEyQiwrQkFBK0IsNEdBQTRHLGVBQWUsb0JBQW9CO0FBQzVlLEdBQUcsdUlBQXVJLDJCQUEyQiwrREFBK0QscUNBQXFDLHNEQUFzRCwwQ0FBMEMsU0FBUyw2QkFBNkIsa0RBQWtELG9DQUFvQztBQUNyZSx3Q0FBd0Msc0RBQXNELHVDQUF1Qyw2QkFBNkIsa0RBQWtELGdEQUFnRCxnREFBZ0Qsb0RBQW9ELHFEQUFxRCxzQ0FBc0Msb0JBQW9CLGFBQWE7QUFDcGUsa0JBQWtCLG9NQUFvTSxnQ0FBZ0MscUlBQXFJO0FBQzNYLHFEQUFxRCx3RUFBd0UsMEVBQTBFLGlDQUFpQyx1QkFBdUIsK0JBQStCLHlDQUF5Qyx1QkFBdUIsZUFBZSxpREFBaUQsRUFBRTtBQUNoYSxZQUFZLGdUQUFnVCxnQ0FBZ0MsY0FBYyxxQkFBcUIsR0FBRyxvQ0FBb0MsTUFBTSxZQUFZLFFBQVEsSUFBSSwwRUFBMEUsUUFBUTtBQUN0aEIsYUFBYSxNQUFNLDZFQUE2RSxHQUFHLDhCQUE4QixHQUFHLGlDQUFpQyxTQUFTLHFCQUFxQixhQUFhLEVBQUUsa0JBQWtCLGVBQWUsRUFBRSx3RUFBd0UsSUFBSSxnRkFBZ0YsSUFBSSxTQUFTLGtDQUFrQztBQUNoYyw2REFBNkQsVUFBVSxRQUFRLGtEQUFrRCxRQUFRLFFBQVEsZ0RBQWdELFFBQVEsT0FBTyxhQUFhLHFEQUFxRCxTQUFTLGtCQUFrQixNQUFNLGtCQUFrQiw4QkFBOEIsR0FBRyxnREFBZ0QsS0FBSyxtQ0FBbUMsTUFBTSw4QkFBOEIsR0FBRyxxRUFBcUUsbUJBQW1CLGFBQWEsY0FBYyxVQUFVO0FBQ2xtQiw0R0FBNEcsMERBQTBELCtCQUErQix1QkFBdUIsZ0VBQWdFLEVBQUUsNEJBQTRCLCtCQUErQiw4QkFBOEIsaUVBQWlFLDBCQUEwQixFQUFFLFdBQVc7QUFDL2QsQ0FBQyxtQkFBbUIsbUNBQW1DLDhCQUE4QixxQkFBcUIsYUFBYSxhQUFhLGlNQUFpTSwyRkFBMkYsZ0JBQWdCLE9BQU8sMkNBQTJDLHFDQUFxQztBQUN2Z0IsbUJBQW1CLHFCQUFxQixvQkFBb0IsdUJBQXVCLDBDQUEwQywrRUFBK0UsMkNBQTJDLE1BQU0sMkRBQTJELFNBQVMsTUFBTSxrREFBa0QsOEJBQThCLFlBQVksaUJBQWlCLEVBQUUsZ0JBQWdCLG9DQUFvQztBQUMxZSxxREFBcUQsdUpBQXVKLHVCQUF1QixtR0FBbUcsTUFBTSx5REFBeUQsMERBQTBELFNBQVM7QUFDeGMseUZBQXlGLE9BQU8sd0dBQXdHLDBCQUEwQix1QkFBdUIsSUFBSSx3SUFBd0ksMENBQTBDLEdBQUc7QUFDbGIsb0pBQW9KO0FBQ3BKLHlIQUF5SCxjQUFjLGlDQUFpQyxTQUFTLHNCQUFzQiw0QkFBNEIsZUFBZSwyQ0FBMkMsaU1BQWlNLHFCQUFxQixvQkFBb0I7QUFDdmdCLHNCQUFzQix3Q0FBd0MsV0FBVyw0RkFBNEYsMEJBQTBCLDhDQUE4QyxrQ0FBa0MsY0FBYyxjQUFjLGFBQWEsdUVBQXVFLFdBQVcsS0FBSyxXQUFXLFdBQVcsNkJBQTZCLE9BQU8sRUFBRSxpQkFBaUIsaUJBQWlCLFdBQVc7QUFDeGYsc0JBQXNCLHVCQUF1QixTQUFTLGFBQWEsUUFBUSxPQUFPLG1JQUFtSSxlQUFlLEVBQUUsd0NBQXdDLHdFQUF3RSxFQUFFLFNBQVMsZ0JBQWdCLGFBQWEsa0RBQWtELFVBQVUsWUFBWTtBQUN0YywwREFBMEQsY0FBYyxlQUFlLFFBQVEsV0FBVyxlQUFlLDJKQUEySixTQUFTLGtCQUFrQiw2Q0FBNkMsNENBQTRDLCtDQUErQyw0QkFBNEIsY0FBYztBQUNqZSxxQkFBcUIsc0RBQXNELEVBQUUsNkNBQTZDLEVBQUUsMERBQTBELEVBQUUsYUFBYSxNQUFNLG9EQUFvRCxFQUFFLGtFQUFrRSxFQUFFLGFBQWEsRUFBRSxjQUFjLE1BQU0sY0FBYyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsY0FBYyxFQUFFLGFBQWEsR0FBRyxpQkFBaUIsa0JBQWtCLDZCQUE2QjtBQUN2ZixJQUFJLHFCQUFxQixlQUFlLGVBQWUsYUFBYSxVQUFVLFNBQVMsT0FBTyxPQUFPLG1CQUFtQiw2QkFBNkIsb0VBQW9FLGtCQUFrQiwyQkFBMkIsZ0NBQWdDLG1DQUFtQyxzQkFBc0IsNkZBQTZGLFVBQVUsa0NBQWtDLG9CQUFvQjtBQUM1Ziw0TEFBNEwsWUFBWSxnQ0FBZ0MsYUFBYSxTQUFTLFdBQVcsMENBQTBDLG1CQUFtQixtQkFBbUIsU0FBUyx5RUFBeUUsbUJBQW1CO0FBQzliLElBQUksbUJBQW1CLDRDQUE0QyxTQUFTLDRCQUE0QixzQ0FBc0MsbUVBQW1FLFVBQVUsMkJBQTJCLDJDQUEyQyxtQkFBbUIsZ0JBQWdCO0FBQ3BVLGtDQUFrQyxtREFBbUQsbUtBQW1LLG1EQUFtRCxJQUFJLEtBQUssdURBQXVELG9IQUFvSCxLQUFLLGFBQWE7QUFDamYsRUFBRSxXQUFXLEtBQUssYUFBYSxNQUFNLGtCQUFrQixnQkFBZ0Isb0JBQW9CLGlEQUFpRCxZQUFZLFdBQVcsd0NBQXdDLEtBQUssa0JBQWtCLE9BQU8sNkJBQTZCLEdBQUcsZUFBZSx5REFBeUQsc0pBQXNKO0FBQ3ZlLDhEQUE4RCxpRUFBaUUsa0JBQWtCLDJDQUEyQyxtSEFBbUgsY0FBYyxPQUFPLG1DQUFtQyxnRkFBZ0YscURBQXFEO0FBQzVlLDZDQUE2Qyw0Q0FBNEMsaUNBQWlDLEVBQUUsMEJBQTBCLGlDQUFpQyxFQUFFLGdDQUFnQyw0QkFBNEIsOExBQThMO0FBQ25iLHlJQUF5SSxnQ0FBZ0MsaURBQWlELGlCQUFpQiw0R0FBNEcsRUFBRSxRQUFRLG9CQUFvQixFQUFFLDhGQUE4RjtBQUNyZCxrSUFBa0ksd0NBQXdDLDJHQUEyRyw2QkFBNkIsd0JBQXdCLHlCQUF5QixFQUFFLDBCQUEwQixpQkFBaUIsZ0JBQWdCLDRCQUE0QixXQUFXLHlCQUF5QixXQUFXO0FBQzNlLDZHQUE2RyxFQUFFLDBCQUEwQiw0QkFBNEIsMkJBQTJCLEVBQUUsK0JBQStCLGdEQUFnRCxxQ0FBcUMsRUFBRSx1Q0FBdUMsa0JBQWtCLE9BQU8scUJBQXFCLHlGQUF5RixZQUFZLEdBQUc7QUFDcmYsc0RBQXNELGdDQUFnQyxRQUFRLE1BQU0seUNBQXlDLGlCQUFpQixHQUFHLHlCQUF5QixtREFBbUQseUJBQXlCLE9BQU8sMENBQTBDLE9BQU8sT0FBTywyQ0FBMkMsaUJBQWlCLEdBQUcsa0VBQWtFO0FBQ3RjLDhCQUE4QixrQkFBa0Isd0JBQXdCLG9GQUFvRiw4QkFBOEIsa0ZBQWtGLGtCQUFrQixVQUFVLEVBQUUseUJBQXlCLGNBQWMsYUFBYSxtQkFBbUIsd0RBQXdELGtCQUFrQjtBQUMzYix1REFBdUQsZUFBZSxjQUFjLHNCQUFzQixvQ0FBb0MsZ0JBQWdCLGtDQUFrQyx5Q0FBeUMsRUFBRSwyREFBMkQsaURBQWlELG1FQUFtRSxrREFBa0QsZUFBZSw0QkFBNEI7QUFDdmYsS0FBSyxFQUFFLE1BQU0sd0ZBQXdGLGtCQUFrQixFQUFFLDBCQUEwQixnQkFBZ0IsRUFBRSxnQkFBZ0IsY0FBYyxPQUFPLGtIQUFrSCxzQkFBc0IsTUFBTSxnQkFBZ0IsMEJBQTBCLFNBQVMsc0NBQXNDLFNBQVMsS0FBSztBQUMvYixXQUFXLGFBQWEsT0FBTyxzRUFBc0UsZ0JBQWdCLDhCQUE4Qix3TEFBd0wsd0JBQXdCLDJCQUEyQix1Q0FBdUMsRUFBRSx3Q0FBd0M7QUFDL2MsaVNBQWlTLG1JQUFtSSx1QkFBdUIsWUFBWSwwQkFBMEIsYUFBYSxJQUFJLHNCQUFzQjtBQUN4Z0IsRUFBRSxNQUFNLGFBQWEsSUFBSSxzQkFBc0IsSUFBSSxLQUFLLGNBQWMsaURBQWlELE1BQU0sVUFBVSxxRkFBcUYsc0JBQXNCLFNBQVMsYUFBYSwwQ0FBMEMsNkJBQTZCO0FBQy9VLDBDQUEwQywrQ0FBK0MsTUFBTSxnQkFBZ0IsOENBQThDLFdBQVcsR0FBRywrQkFBK0IsNkNBQTZDLGdEQUFnRCxvR0FBb0csaUJBQWlCLHNDQUFzQyxFQUFFLHdCQUF3QjtBQUM1ZCwwTkFBME4sYUFBYSxpS0FBaUssRUFBRSx1RkFBdUY7QUFDamUsbUlBQW1JLHNDQUFzQyw2RUFBNkUsYUFBYSw0QkFBNEIsd0JBQXdCLGlCQUFpQiw2Q0FBNkMsbUJBQW1CLEdBQUcsMERBQTBELHNCQUFzQjtBQUMzZCxHQUFHLHNCQUFzQiwyQkFBMkIscUJBQXFCLFdBQVcsTUFBTSxtRkFBbUYsc0NBQXNDLGVBQWUsS0FBSyxhQUFhLDBEQUEwRCwyQkFBMkIsS0FBSyxVQUFVLElBQUkscUJBQXFCLFNBQVMseUVBQXlFLFdBQVcsU0FBUyxjQUFjLDRDQUE0QztBQUNqaEIseUNBQXlDLElBQUksaURBQWlELE1BQU0sMEZBQTBGLHVCQUF1QixNQUFNLGNBQWMsT0FBTyxvRUFBb0UsMkJBQTJCLG1DQUFtQywrRkFBK0YsT0FBTyxxQkFBcUI7QUFDN2UsNERBQTRELFVBQVUsRUFBRSxhQUFhLHNCQUFzQixpQkFBaUIsdUNBQXVDLHlDQUF5QyxrQ0FBa0Msd0JBQXdCLGNBQWMsNkNBQTZDLDRDQUE0QyxjQUFjLG1DQUFtQywyQ0FBMkMsbUJBQW1CLGdCQUFnQjtBQUM1ZSxzR0FBc0cseUNBQXlDLFlBQVksY0FBYyxxQkFBcUIsMEJBQTBCLGtCQUFrQixxQ0FBcUMsT0FBTyw4Q0FBOEMsRUFBRSxXQUFXLDJCQUEyQiwrQkFBK0IsbURBQW1ELG9EQUFvRDtBQUNsZixHQUFHLEdBQUcsRUFBRSxvREFBb0QsNEVBQTRFLG1GQUFtRix3QkFBd0IsRUFBRSxFQUFFLEVBQUUsSUFBSSxZQUFZLHNCQUFzQiwwQkFBMEIsa0JBQWtCLGtDQUFrQyx5Q0FBeUMsRUFBRSxpQ0FBaUMsNENBQTRDLEVBQUU7QUFDdmUsZUFBZSxnQ0FBZ0MsNEJBQTRCLHdDQUF3QywrQkFBK0IsSUFBSSxpQ0FBaUMsY0FBYyxtQkFBbUIsV0FBVyxVQUFVLGNBQWMsbUJBQW1CLFdBQVcsR0FBRyxrRkFBa0YsRUFBRSxrQkFBa0IsZ0JBQWdCLCtCQUErQixtQkFBbUIsS0FBSyxjQUFjLGdCQUFnQjtBQUN2ZSxhQUFhLGlKQUFpSixtQkFBbUIsNkNBQTZDLDRCQUE0QixhQUFhLGNBQWMsd0JBQXdCLG1HQUFtRyx5QkFBeUIsMkdBQTJHLDRCQUE0QixvREFBb0Q7QUFDcG1CLHNCQUFzQixnQkFBZ0IsY0FBYyxxRkFBcUYsaUdBQWlHLHVDQUF1Qyx1QkFBdUIsRUFBRSw4QkFBOEIsa0tBQWtLLEVBQUU7QUFDNWUsK0ZBQStGLHNEQUFzRCx1RkFBdUYseUxBQXlMLEdBQUcsZUFBZSxxQkFBcUIsaUJBQWlCLGNBQWMsY0FBYyxhQUFhO0FBQ3RnQixFQUFFLEdBQUcsc0VBQXNFLFNBQVMsU0FBUyxPQUFPLGdCQUFnQixzSkFBc0osV0FBVyxJQUFJLGlEQUFpRCw4REFBOEQsa0JBQWtCLDJDQUEyQywwQ0FBMEM7QUFDL2UseUJBQXlCLGVBQWUsbUJBQW1CLGdCQUFnQixzRUFBc0Usd0RBQXdELG9HQUFvRyxTQUFTLGNBQWMsd0JBQXdCLHdDQUF3QyxjQUFjLGlDQUFpQyw2QkFBNkIsa0JBQWtCLFdBQVcsS0FBSztBQUNsZixjQUFjLElBQUksb0NBQW9DLGtEQUFrRCxnREFBZ0Qsb0NBQW9DLGdCQUFnQixXQUFXLEtBQUssNkJBQTZCLElBQUksMEJBQTBCLGtCQUFrQixPQUFPLHNDQUFzQyxtQkFBbUIsbUJBQW1CLCtDQUErQyxjQUFjLGlEQUFpRDtBQUMxZSw0R0FBNEcsaUNBQWlDLGlDQUFpQyxrQ0FBa0MsaUVBQWlFLDJDQUEyQyw0QkFBNEIsY0FBYywwQ0FBMEMsa0RBQWtEO0FBQ2xjLGtGQUFrRixnQkFBZ0IsZ0NBQWdDLDhEQUE4RCxpRUFBaUUsMENBQTBDLDZDQUE2QyxLQUFLLHlCQUF5QjtBQUN0WCx5QkFBeUIsRUFBRSxzQ0FBc0Msc0VBQXNFLHlCQUF5QixpRUFBaUUsa0RBQWtELGNBQWMsaUJBQWlCLDJEQUEyRCxzQ0FBc0MsYUFBYSxpREFBaUQ7QUFDamQsc0JBQXNCLHdCQUF3QixnRkFBZ0YsaUJBQWlCLEVBQUUsTUFBTSxrQ0FBa0Msa0ZBQWtGLGNBQWMsaUZBQWlGLGNBQWMsd0ZBQXdGLFlBQVksRUFBRSxjQUFjO0FBQzVlLDhFQUE4RSwrQkFBK0IsMEZBQTBGLGNBQWMseUVBQXlFLFNBQVMsNEZBQTRGLGdCQUFnQjtBQUNuWixzQkFBc0IsYUFBYSxpS0FBaUssdUJBQXVCLEtBQUssS0FBSywyRUFBMkUsNkdBQTZHLCtDQUErQyx5QkFBeUIsTUFBTTtBQUMzZSxpQkFBaUIsaUJBQWlCLGlCQUFpQixvQkFBb0IsS0FBSyxtQkFBbUIscUJBQXFCLE9BQU8sY0FBYyx5QkFBeUIsdUNBQXVDLDhCQUE4QixnREFBZ0QscUJBQXFCLHFDQUFxQyx1REFBdUQsdUJBQXVCLEtBQUssc0NBQXNDO0FBQzFjLElBQUksdUJBQXVCLEtBQUssc0NBQXNDLGdEQUFnRCx1QkFBdUIsS0FBSyxtQkFBbUIsb0JBQW9CLFdBQVcsY0FBYyx5QkFBeUIsdUZBQXVGLHNCQUFzQixtREFBbUQsMkNBQTJDO0FBQ3RiLG9CQUFvQixjQUFjLHlCQUF5Qiw2Q0FBNkMsZ0ZBQWdGLHVIQUF1SCxpQ0FBaUMsVUFBVSxTQUFTLEdBQUc7QUFDdFcseURBQXlELCtDQUErQywwQ0FBMEMsaUJBQWlCLGdJQUFnSSxPQUFPLHdDQUF3QyxvQ0FBb0Msa0NBQWtDLGtFQUFrRTtBQUMxZCxjQUFjLHdEQUF3RCxzREFBc0QsbUJBQW1CLGNBQWMseUJBQXlCLFNBQVMsMk1BQTJNLCtDQUErQyx5QkFBeUI7QUFDbGQscURBQXFELGtFQUFrRSx3REFBd0QscURBQXFELGtEQUFrRCxTQUFTLGNBQWMscUJBQXFCLHVCQUF1QixxQkFBcUIsY0FBYyx5QkFBeUIsU0FBUyw2RUFBNkUscUJBQXFCO0FBQ2hnQixJQUFJLGdCQUFnQiwrQkFBK0Isc0JBQXNCLDZCQUE2QixJQUFJLEdBQUcsRUFBRSw0QkFBNEIsNkJBQTZCLG1EQUFtRDtBQUMzTixxREFBcUQsdUdBQXVHLHdDQUF3QztBQUNwTSxNQUFNLDJCQUEyQixtQkFBbUIsMEVBQTBFLDBDQUEwQyxrQkFBa0IsUUFBUSw4Q0FBOEM7QUFDaFAsc0JBQXNCLHVCQUF1Qix3SEFBd0gsOENBQThDLHFDQUFxQyxnTUFBZ00sZ0NBQWdDO0FBQ3hkLG1CQUFtQix1QkFBdUIsdUJBQXVCLGFBQWEsRUFBRSx1SUFBdUksdUVBQXVFLCtCQUErQiw0QkFBNEIsY0FBYyxZQUFZLGNBQWMsaUhBQWlIO0FBQ2xmLG9CQUFvQiw0QkFBNEIsa0JBQWtCLDRFQUE0RSxvQkFBb0IsS0FBSyxxQ0FBcUMsSUFBSSx5QkFBeUIsc0NBQXNDLDZGQUE2Riw0Q0FBNEM7QUFDeFosZ0ZBQWdGLGdHQUFnRyxLQUFLLDhFQUE4RSxrQ0FBa0MsVUFBVSwyQ0FBMkMsSUFBSSxpQkFBaUIsU0FBUyxLQUFLLFVBQVUsMEJBQTBCLFVBQVUsVUFBVSwwQkFBMEIsV0FBVyxNQUFNO0FBQ2hlLHdEQUF3RCw0QkFBNEIsbURBQW1ELFdBQVcsS0FBSyx5RUFBeUUseUhBQXlILG9CQUFvQixvR0FBb0csZ0JBQWdCLFNBQVMsYUFBYSxpQkFBaUIsU0FBUztBQUNqaEIsbUNBQW1DLHVFQUF1RSxrQ0FBa0Msc0hBQXNILHNCQUFzQixrQ0FBa0MsbUJBQW1CLHFDQUFxQyxrQ0FBa0Msd0JBQXdCLDBEQUEwRDtBQUN0ZSw0QkFBNEIsMEZBQTBGLFNBQVMscUNBQXFDLDZGQUE2Rix5Q0FBeUMsd0JBQXdCLHdFQUF3RSxzREFBc0QsY0FBYyxRQUFRO0FBQ3RkLGdCQUFnQix1REFBdUQsa0JBQWtCLCtFQUErRSxzRkFBc0Ysd0JBQXdCLG9FQUFvRTtBQUMxVixrQ0FBa0MsdUNBQXVDLGtDQUFrQyxtREFBbUQsc0JBQXNCLDBCQUEwQiw4REFBOEQsaUNBQWlDLHVGQUF1RixTQUFTLHdCQUF3QixTQUFTLEtBQUssMENBQTBDO0FBQzdkLDBEQUEwRCxzRkFBc0YsU0FBUyx1QkFBdUIsMEJBQTBCLDZGQUE2RixxTUFBcU0sU0FBUztBQUNyZixHQUFHLFdBQVcsb0JBQW9CLG9DQUFvQyw2QkFBNkIsbUpBQW1KLHNCQUFzQixjQUFjLHVCQUF1QixtQkFBbUIsd0VBQXdFLG1CQUFtQixrQkFBa0IsV0FBVyxpQkFBaUIsMERBQTBEO0FBQ3ZnQixFQUFFLHNCQUFzQix1QkFBdUIsd0JBQXdCLGdDQUFnQyxzQ0FBc0MsZ0JBQWdCLHVCQUF1QixXQUFXLDRCQUE0QixtREFBbUQsMEJBQTBCLGtEQUFrRCxpQ0FBaUMsOERBQThELHFCQUFxQjtBQUM5YyxpQ0FBaUMsbUVBQW1FLDJCQUEyQixrRUFBa0UsbUNBQW1DLEVBQUUsa0RBQWtELG9CQUFvQixRQUFRLEdBQUcsaUNBQWlDLGlGQUFpRixPQUFPLEVBQUUsb0VBQW9FO0FBQ3RmLEVBQUUsc0JBQXNCLHlCQUF5QixzQkFBc0Isb0JBQW9CLGtEQUFrRCxTQUFTLHFCQUFxQiw4RkFBOEYsbUNBQW1DLE1BQU0sSUFBSSwyRkFBMkYsV0FBVyx3QkFBd0IsY0FBYyxrQ0FBa0Msd0JBQXdCO0FBQzVmLHFDQUFxQyx5QkFBeUIsOENBQThDLFdBQVcsK0ZBQStGLDhGQUE4RixXQUFXLDREQUE0RCxxQkFBcUIsMENBQTBDO0FBQzFiLEtBQUssZ0VBQWdFLDJEQUEyRCxzQkFBc0IsNkVBQTZFLDZDQUE2QyxnQ0FBZ0Msd0RBQXdELElBQUksNkpBQTZKLFdBQVc7QUFDcGhCLG9DQUFvQyx1QkFBdUIscURBQXFELGNBQWMsc0lBQXNJLHFCQUFxQix1QkFBdUIsdUNBQXVDLDZEQUE2RCwrQkFBK0IsSUFBSSwyREFBMkQsU0FBUyx3Q0FBd0M7QUFDbmlCLGdEQUFnRCxzRUFBc0UsbUVBQW1FLE9BQU8sSUFBSSwrR0FBK0csU0FBUyxPQUFPLFNBQVMsd0JBQXdCLGdDQUFnQyx3QkFBd0IsSUFBSSx1Q0FBdUMsU0FBUyxhQUFhLG9DQUFvQztBQUNqZ0Isd0RBQXdELHdGQUF3RixTQUFTLGlDQUFpQyxzSkFBc0osNkJBQTZCLDJDQUEyQyxtREFBbUQsT0FBTyxTQUFTLHlDQUF5QztBQUNwZ0IsNkNBQTZDLGlDQUFpQyxPQUFPLHlCQUF5QixtQkFBbUIsTUFBTSw2SEFBNkgsU0FBUyxpQ0FBaUMsU0FBUywrR0FBK0csOEJBQThCO0FBQ3BjLHlEQUF5RCw4QkFBOEIsdUJBQXVCLDhEQUE4RCxFQUFFLDBCQUEwQixnQ0FBZ0MsaUNBQWlDLDRCQUE0QixvQkFBb0IsRUFBRSxtQ0FBbUMsZ0JBQWdCLGdEQUFnRCxRQUFRLFlBQVksMkJBQTJCLG1CQUFtQjtBQUNoZSxzREFBc0QsU0FBUyxVQUFVLEdBQUcsVUFBVSxLQUFLLDZCQUE2QixVQUFVLHFCQUFxQixLQUFLLEtBQUssSUFBSSxxQkFBcUIsUUFBUSw2QkFBNkIsTUFBTSx3RUFBd0UsR0FBRyxnRkFBZ0YsSUFBSSxnSUFBZ0ksSUFBSSxXQUFXLElBQUksWUFBWSxTQUFTLGtCQUFrQixJQUFJLHFDQUFxQyxJQUFJLHFCQUFxQix1QkFBdUIsT0FBTztBQUM5cEIsNkJBQTZCLHFCQUFxQixPQUFPLHdKQUF3SixpQ0FBaUMsb0JBQW9CLE9BQU8sa0JBQWtCLHFGQUFxRiwrQkFBK0IsdURBQXVELEVBQUUsNERBQTREO0FBQ3hnQixHQUFHLDZCQUE2QixRQUFRLHdDQUF3QyxxR0FBcUcsRUFBRSxNQUFNLGtDQUFrQywyQkFBMkIsaUZBQWlGO0FBQzNVLDRGQUE0RixPQUFPLGNBQWMsaUJBQWlCLGlEQUFpRCxzQ0FBc0MsZ0JBQWdCLFVBQVUsa0JBQWtCLDRHQUE0RyxzQ0FBc0MsaUNBQWlDLGlCQUFpQixLQUFLLFFBQVEsa0JBQWtCO0FBQ3hlLE1BQU0sRUFBRSxjQUFjLGFBQWEsU0FBUyx3QkFBd0IsaUhBQWlILHVDQUF1QyxTQUFTLHNCQUFzQix3QkFBd0IsdUJBQXVCLG1CQUFtQixxSEFBcUgsWUFBWSxzQkFBc0IsOEJBQThCO0FBQ2xmLEdBQUcsaUVBQWlFLFNBQVMsU0FBUyxvQkFBb0Isc0NBQXNDLG9EQUFvRCxnQkFBZ0IsMkRBQTJELFlBQVksc0NBQXNDLFNBQVMsZ0JBQWdCLEdBQUcsaUNBQWlDLDRCQUE0QjtBQUMxWiw4QkFBOEIsRUFBRSxhQUFhLHFCQUFxQixrQ0FBa0MsSUFBSSxxQkFBcUIseUpBQXlKLGdDQUFnQyxzQkFBc0Isb0VBQW9FLHVDQUF1QyxLQUFLO0FBQzViLDRDQUE0QyxJQUFJLG9CQUFvQixNQUFNLDJHQUEyRyxxQkFBcUIscUNBQXFDLFFBQVEsZ0JBQWdCLG9DQUFvQyxpQkFBaUIsa0ZBQWtGLHlCQUF5QixtQkFBbUIsVUFBVTtBQUNwYyxFQUFFLGlCQUFpQixtREFBbUQsb0JBQW9CLFlBQVksTUFBTSwwREFBMEQsZ0NBQWdDLHdCQUF3Qix3QkFBd0IsRUFBRSxrREFBa0Qsb0JBQW9CLFlBQVksTUFBTSxPQUFPLGlFQUFpRTtBQUN4WixzQkFBc0IsMEVBQTBFLEtBQUssV0FBVyxFQUFFLHNDQUFzQyxpQkFBaUIsYUFBYSxzQkFBc0Isa0dBQWtHLFdBQVcsa0lBQWtJLG1DQUFtQyxHQUFHLFNBQVMsU0FBUztBQUNuZiw0QkFBNEIsb0JBQW9CLGFBQWEsU0FBUyxnQkFBZ0IsNEdBQTRHLHNCQUFzQixrQkFBa0Isc0NBQXNDLHVCQUF1QixlQUFlLFFBQVEsaUtBQWlLLGVBQWU7QUFDOWUsR0FBRyxxQ0FBcUMsa0JBQWtCLE9BQU8sUUFBUSx1QkFBdUIsa0NBQWtDLDRCQUE0QixzQ0FBc0Msc0JBQXNCLGdDQUFnQyxpQ0FBaUMsb0NBQW9DLGdEQUFnRCxtQkFBbUIsK0JBQStCO0FBQ2phLHFCQUFxQixnUEFBZ1AsUUFBUSx1REFBdUQsd0VBQXdFLG9DQUFvQyx3Q0FBd0MsYUFBYTtBQUNyZSxXQUFXLEVBQUUsZ0JBQWdCLGtDQUFrQyxrQ0FBa0Msc0VBQXNFLGFBQWEsMEJBQTBCLFlBQVkscU5BQXFOLCtCQUErQixrQkFBa0IsaUJBQWlCLG1CQUFtQjtBQUNwZ0Isc0RBQXNELGlDQUFpQyxrQ0FBa0MscUJBQXFCLGFBQWEsdURBQXVELDJDQUEyQyxpREFBaUQsT0FBTyxxQ0FBcUMscUNBQXFDLFFBQVEsdUJBQXVCLGVBQWU7QUFDN2EscUNBQXFDLDRGQUE0Riw4QkFBOEIsMkJBQTJCLDhGQUE4Riw0QkFBNEIsMkVBQTJFLDZCQUE2Qix3QkFBd0IsMEJBQTBCO0FBQzljLGlJQUFpSSw4R0FBOEcsUUFBUSxxRUFBcUU7QUFDNVQsc0hBQXNILHFCQUFxQixvRUFBb0Usb0NBQW9DLGFBQWEsdUJBQXVCLEVBQUUsZ0JBQWdCLE9BQU8sT0FBTywwQkFBMEIscUNBQXFDLCtFQUErRSxhQUFhLGtCQUFrQjtBQUNwZSw0Q0FBNEMsbUJBQW1CLHdFQUF3RSxxRUFBcUUsMEVBQTBFLHFDQUFxQyxTQUFTLDhCQUE4QixlQUFlLG9DQUFvQyx1QkFBdUIsNkJBQTZCO0FBQ3pjLDhCQUE4QixrQkFBa0Isd0JBQXdCLG9DQUFvQyx3Q0FBd0MsMkVBQTJFLGlCQUFpQixtREFBbUQscUNBQXFDLGtCQUFrQiw4REFBOEQsaUJBQWlCO0FBQ3phLHdDQUF3QyxlQUFlLHdEQUF3RCwwRkFBMEYsMEJBQTBCLDRCQUE0QixzQ0FBc0MsdUJBQXVCLG1CQUFtQiw0QkFBNEIsbUJBQW1CLG1DQUFtQztBQUNqYSwrQkFBK0IscUNBQXFDLDRCQUE0QixTQUFTLHlKQUF5SiwwQ0FBMEMsTUFBTSx1QkFBdUIseUJBQXlCLDBFQUEwRSxFQUFFLDJDQUEyQztBQUN6ZCxFQUFFLFlBQVksV0FBVywrQkFBK0IsUUFBUSxFQUFFLEVBQUUsZ0NBQWdDLDZDQUE2Qyw2REFBNkQsbUJBQW1CLEtBQUssV0FBVyxnQkFBZ0IsNkJBQTZCLGFBQWEsNEJBQTRCLG9EQUFvRCwyQkFBMkIseUNBQXlDLDBCQUEwQixhQUFhO0FBQ3RlLFlBQVksY0FBYyxhQUFhLGNBQWMscUJBQXFCLG1GQUFtRixFQUFFLHlEQUF5RCxHQUFHLDRDQUE0QyxNQUFNLGdCQUFnQixRQUFRLElBQUksWUFBWSxLQUFLLGFBQWEsTUFBTSxpRUFBaUUsS0FBSyxrQkFBa0IsVUFBVSx3QkFBd0IsR0FBRyxpQ0FBaUMsU0FBUyxxQkFBcUIsU0FBUyxHQUFHLGFBQWE7QUFDbGlCLEtBQUssd0VBQXdFLElBQUksZ0ZBQWdGLCtCQUErQixJQUFJLGtDQUFrQyxxR0FBcUcsd0RBQXdELFFBQVEsRUFBRSxNQUFNLEVBQUUsOENBQThDLFVBQVUsRUFBRSxNQUFNLEVBQUUsZ0RBQWdELFFBQVEsRUFBRSxNQUFNLEdBQUcsYUFBYTtBQUN2aUIsd0lBQXdJLFNBQVMsa0JBQWtCLFVBQVUsNEVBQTRFLE1BQU0sY0FBYyxjQUFjLFVBQVUsd0NBQXdDLEdBQUcsb0VBQW9FLGFBQWE7QUFDamEsbURBQW1ELE1BQU0seUlBQXlJLFNBQVMsZ0JBQWdCLDBDQUEwQyxnQkFBZ0IsMEJBQTBCLG1DQUFtQyxjQUFjLGNBQWMsb0JBQW9CLHdCQUF3Qiw4QkFBOEIsVUFBVTtBQUNsYyxXQUFXLHdDQUF3Qyx5QkFBeUIseUJBQXlCLElBQUksa0JBQWtCLHlHQUF5RyxpQkFBaUIsWUFBWSxXQUFXLEtBQUssa0JBQWtCLHFCQUFxQixpQ0FBaUMsc0ZBQXNGLHFCQUFxQixZQUFZLHlCQUF5QjtBQUN6ZSxtQ0FBbUMsc0JBQXNCLGtCQUFrQiw2Q0FBNkMsU0FBUyxtQkFBbUIsMkJBQTJCLHlCQUF5QixxQ0FBcUMsK0JBQStCLHdGQUF3RixvQkFBb0IscUJBQXFCLDBFQUEwRSxnQkFBZ0I7QUFDdmUsMkJBQTJCLHNGQUFzRixzQkFBc0IsWUFBWSxJQUFJLGdDQUFnQyxRQUFRLGdCQUFnQixxQ0FBcUMsbUJBQW1CLHNCQUFzQixjQUFjLHdCQUF3Qiw2REFBNkQsdUNBQXVDLCtEQUErRCxPQUFPO0FBQzdlLHdHQUF3RywyQ0FBMkMsb0NBQW9DLE9BQU8sb0JBQW9CLG9GQUFvRix3Q0FBd0MsK0JBQStCLE9BQU8sbURBQW1ELGNBQWMsYUFBYSxhQUFhLFlBQVksYUFBYTtBQUN4ZSxVQUFVLDZEQUE2RCx3Q0FBd0MsbUNBQW1DLDJCQUEyQixrQkFBa0IsMENBQTBDLG9FQUFvRSx5REFBeUQsb0NBQW9DLDZHQUE2RztBQUN2ZixNQUFNLHVEQUF1RCxvQ0FBb0MsT0FBTywwREFBMEQsb0JBQW9CLG9EQUFvRCx5Q0FBeUMsdUJBQXVCLE9BQU8sS0FBSyxvTEFBb0wsSUFBSSxLQUFLO0FBQ25mLEtBQUssMkdBQTJHLG1CQUFtQix1QkFBdUIsc0JBQXNCLCtCQUErQiw0RkFBNEYsdUJBQXVCLHlCQUF5Qix5QkFBeUIsa0JBQWtCLCtCQUErQixtQ0FBbUMsbUNBQW1DO0FBQzNlLFlBQVkscUJBQXFCLEVBQUUseUJBQXlCLHVEQUF1RCxTQUFTLEVBQUUsOENBQThDLGtCQUFrQiw4QkFBOEIsdUNBQXVDLEVBQUUsc0NBQXNDLGNBQWMsWUFBWSxRQUFRLHVCQUF1QjtBQUNwVyxpQkFBaUIsYUFBYSxtQ0FBbUMsd0VBQXdFLDRFQUE0RSxjQUFjLGdEQUFnRCwwSUFBMEksNENBQTRDLEdBQUc7QUFDNWMscWRBQXFkLG1CQUFtQjtBQUN4ZSxVQUFVLFFBQVEsd0RBQXdELGdCQUFnQixFQUFFLDJPQUEyTyxrQ0FBa0MseURBQXlELGlDQUFpQyx1QkFBdUIsT0FBTztBQUNqZSx1Q0FBdUMsMENBQTBDLEVBQUUsUUFBUSx3QkFBd0IsYUFBYSxLQUFLLFFBQVEsK0JBQStCLFNBQVMscUVBQXFFLG9DQUFvQywwQ0FBMEMsb0dBQW9HLHlDQUF5QyxLQUFLO0FBQzFkLHlCQUF5Qiw4T0FBOE8scUNBQXFDLHNCQUFzQiw4QkFBOEIsT0FBTyx3QkFBd0IsaUJBQWlCLEtBQUssMkJBQTJCLHFEQUFxRCxFQUFFO0FBQ3ZlLHNCQUFzQixtRUFBbUUsa0RBQWtELHFEQUFxRCx3QkFBd0IsaU9BQWlPLEVBQUUsd0JBQXdCO0FBQ25kLDZCQUE2QixpRUFBaUUsRUFBRSw0QkFBNEIsaUJBQWlCLG1HQUFtRyxxRUFBcUUsK0RBQStELEVBQUUsaURBQWlELGdFQUFnRSxhQUFhO0FBQ3BmLEdBQUcsY0FBYyxZQUFZLE1BQU0sbUtBQW1LLDJDQUEyQyxpREFBaUQsRUFBRSxVQUFVLGFBQWEsNkRBQTZELGdCQUFnQixjQUFjLDJEQUEyRDtBQUNqZCx5TEFBeUwsNEJBQTRCLDBCQUEwQix5QkFBeUIsMkJBQTJCLEVBQUUsWUFBWSwrRUFBK0UsaUJBQWlCLDRCQUE0QixvQkFBb0IseUJBQXlCO0FBQzFkLHVGQUF1RixpSkFBaUosNEJBQTRCLCtCQUErQiw4REFBOEQsU0FBUyxFQUFFLG1DQUFtQyxpRkFBaUYsSUFBSSxFQUFFO0FBQ3RlLG9JQUFvSSw0SEFBNEgsWUFBWSxXQUFXLEtBQUssZ0JBQWdCLFdBQVcsSUFBSSxNQUFNLE9BQU8sK0JBQStCLFdBQVcsUUFBUSxJQUFJLHNFQUFzRTtBQUNwYyxxQ0FBcUMsZUFBZSxvQ0FBb0MsSUFBSSxxRUFBcUUsZ0JBQWdCLDZCQUE2QixRQUFRLEVBQUUsRUFBRSxtQkFBbUIsMkJBQTJCLGlEQUFpRCxxREFBcUQsT0FBTyxjQUFjLDJDQUEyQztBQUM5YSxvQkFBb0IsTUFBTSx3RUFBd0UsSUFBSSxnRkFBZ0YsSUFBSSxxREFBcUQsR0FBRyxZQUFZLFFBQVEsdURBQXVELE1BQU0sK0VBQStFLG9EQUFvRCxVQUFVLEVBQUUsTUFBTSxVQUFVLDJDQUEyQyxRQUFRLEVBQUUsTUFBTSxHQUFHLGFBQWEsbUNBQW1DLE1BQU0sTUFBTSxLQUFLO0FBQ2ptQixxQ0FBcUMsaUJBQWlCLGtCQUFrQiwwRUFBMEUsMkJBQTJCLG9DQUFvQyxHQUFHLEVBQUUsY0FBYyxnQkFBZ0IsUUFBUSwyQkFBMkIsWUFBWSxnREFBZ0QsOENBQThDLGFBQWEsd0JBQXdCLG1CQUFtQix1QkFBdUIsa0JBQWtCLEVBQUUsZUFBZTtBQUNuZixRQUFRLHVCQUF1Qiw0QkFBNEIscUJBQXFCLGFBQWEseURBQXlELCtCQUErQixpQkFBaUIsZ0RBQWdELHNDQUFzQyxtQ0FBbUMsMENBQTBDLCtFQUErRSw0QkFBNEI7QUFDcGQsbUNBQW1DLEdBQUcsOEJBQThCLG9DQUFvQyxvQkFBb0IsaUJBQWlCLHVDQUF1QyxXQUFXLG9IQUFvSCxLQUFLLDZCQUE2Qiw2REFBNkQsV0FBVyw0RUFBNEU7QUFDemUsNEJBQTRCLDJEQUEyRCw4REFBOEQsR0FBRyxFQUFFLHlCQUF5Qiw4QkFBOEIsa0JBQWtCLGtDQUFrQyxvQ0FBb0MsWUFBWSxjQUFjLGFBQWEsbURBQW1ELGtCQUFrQix3Q0FBd0Msb0NBQW9DLGlCQUFpQjtBQUNsZixHQUFHLGdDQUFnQyw4QkFBOEIsc0NBQXNDLHdDQUF3QyxpSkFBaUoseUNBQXlDLGdDQUFnQyxFQUFFLDBEQUEwRCxjQUFjLGdCQUFnQixhQUFhLElBQUk7QUFDcGQsQ0FBQywrQkFBK0Isc0RBQXNELHNCQUFzQixtQkFBbUIseUNBQXlDLDRCQUE0QixlQUFlLDZFQUE2RSxlQUFlLHdCQUF3QixrQ0FBa0MsY0FBYyxjQUFjLGNBQWMsNENBQTRDLDRCQUE0QixpQkFBaUIsS0FBSyw0QkFBNEI7QUFDN2dCLGNBQWMsbUJBQW1CLGtCQUFrQixHQUFHLDZDQUE2Qyx1QkFBdUIsbUJBQW1CLFFBQVEsV0FBVyx3Q0FBd0MsT0FBTyxNQUFNLDhLQUE4SyxzQ0FBc0MsMkJBQTJCLDRCQUE0QixLQUFLO0FBQ3JlLEdBQUcsY0FBYyxNQUFNLGtFQUFrRSwyQ0FBMkMsMEJBQTBCLG1CQUFtQixrRkFBa0YsZ0JBQWdCLE1BQU0seUZBQXlGLEtBQUssa0RBQWtELHlCQUF5Qix1QkFBdUIsV0FBVyxLQUFLLGFBQWE7QUFDdGYsb0NBQW9DLGdHQUFnRyxpQkFBaUIsbUNBQW1DLFNBQVMseUdBQXlHLG1CQUFtQixFQUFFLGdDQUFnQyxvREFBb0QsRUFBRSwyQkFBMkIsS0FBSyxNQUFNLGdCQUFnQjtBQUMzYyw4QkFBOEIsT0FBTywwQkFBMEIsa0pBQWtKLHdKQUF3SjtBQUN6VyxpQkFBaUIsU0FBUyxjQUFjLGlEQUFpRCxjQUFjLGtCQUFrQixxSUFBcUksbUNBQW1DLG1DQUFtQyxjQUFjLDJDQUEyQyxpQ0FBaUMsdUJBQXVCLHNCQUFzQjtBQUMzYyxHQUFHLHlCQUF5QixrSUFBa0ksT0FBTyxnQ0FBZ0Msb0NBQW9DLHlGQUF5RixnQ0FBZ0MsZUFBZSw2Q0FBNkMsbUNBQW1DLDhCQUE4QixzQkFBc0I7QUFDcmYsb0RBQW9ELEVBQUUsa0VBQWtFLFNBQVMsV0FBVyxHQUFHLEVBQUUsK0JBQStCLDREQUE0RCxvQkFBb0IscUJBQXFCLHNDQUFzQyxjQUFjLG9CQUFvQiwrREFBK0Qsb0JBQW9CLEtBQUssb0JBQW9CO0FBQ3pjLHlFQUF5RSx1Q0FBdUMsV0FBVyxLQUFLLDRDQUE0QyxjQUFjLG1FQUFtRSxlQUFlLGtEQUFrRCxpRUFBaUUsMkNBQTJDLGdDQUFnQyxzQ0FBc0M7QUFDaGYsZ0NBQWdDLGtCQUFrQiw2Q0FBNkMscUNBQXFDLDZCQUE2Qix3Q0FBd0MsZUFBZSxPQUFPLDRCQUE0QixRQUFRLFdBQVcsNENBQTRDLDRCQUE0QixnQkFBZ0IsV0FBVyxxQkFBcUIsZ0JBQWdCLEVBQUUsZ0JBQWdCLFVBQVUsNEJBQTRCLG9CQUFvQjtBQUNsZSxVQUFVLE1BQU0sSUFBSSxrQkFBa0IsMEJBQTBCLDZCQUE2QixjQUFjLFNBQVMsZ1JBQWdSLDhCQUE4QixtQ0FBbUMsa0JBQWtCLGNBQWM7QUFDcmUsOElBQThJLEtBQUsscUVBQXFFLCtEQUErRCxvQkFBb0IsS0FBSyxvQkFBb0IsK0lBQStJLE9BQU8sUUFBUSxXQUFXO0FBQzdlLGVBQWUsVUFBVSxXQUFXLG9DQUFvQyw4QkFBOEIsa0JBQWtCLHFCQUFxQixvQkFBb0IsSUFBSSw2R0FBNkcsTUFBTSxJQUFJLGtCQUFrQixnQ0FBZ0MsZ0JBQWdCLFlBQVkseUJBQXlCLDRCQUE0Qix1QkFBdUIsb0JBQW9CLFlBQVksK0JBQStCO0FBQ3JmLG9JQUFvSSxjQUFjLGNBQWMsc0NBQXNDLHFGQUFxRixJQUFJLEtBQUssY0FBYyxnSkFBZ0osa0JBQWtCLHVCQUF1QjtBQUMzZSwwQkFBMEIsY0FBYyxtUEFBbVAseUVBQXlFLHVFQUF1RTtBQUMzYSwyRUFBMkUsS0FBSywyQ0FBMkMsRUFBRSxnQkFBZ0IsVUFBVSxZQUFZLHFGQUFxRixtREFBbUQsV0FBVyxZQUFZLGVBQWUsMkNBQTJDLDZCQUE2Qix3QkFBd0Isb0JBQW9CO0FBQ3JjLHlCQUF5QixvQkFBb0IsV0FBVyx1QkFBdUIsY0FBYyw4RUFBOEUsT0FBTyxVQUFVLG9GQUFvRixvQkFBb0IsK0JBQStCLHVCQUF1QixnQ0FBZ0MsNEJBQTRCLFNBQVMsVUFBVSxnQ0FBZ0MsSUFBSSxLQUFLLG9CQUFvQjtBQUN0ZSwrRUFBK0UscUNBQXFDLE9BQU8seUNBQXlDLHVKQUF1SixrRUFBa0UsVUFBVSxrQ0FBa0MsSUFBSTtBQUM3YSwyQ0FBMkMsU0FBUyxpQ0FBaUMsU0FBUyxnQ0FBZ0MsOEpBQThKLEVBQUUsV0FBVyxnQkFBZ0IsNEJBQTRCLGdCQUFnQiwwR0FBMEcsaUNBQWlDO0FBQ2hmLHdCQUF3QixRQUFRLG9CQUFvQix1Q0FBdUMsSUFBSSxxUUFBcVEsNkJBQTZCO0FBQ2pZLDhMQUE4TCxRQUFRLElBQUkseUVBQXlFLDREQUE0RCw4Q0FBOEMsSUFBSSw4QkFBOEIseUNBQXlDLFNBQVMsa0NBQWtDO0FBQ25mLGNBQWMsT0FBTyx3QkFBd0IsdUJBQXVCLDBNQUEwTSw2QkFBNkI7QUFDM1MsNERBQTRELDZCQUE2QixrQ0FBa0MsWUFBWSxPQUFPLElBQUksaUJBQWlCLE9BQU8sZ0RBQWdELHdCQUF3QixFQUFFLEVBQUUsd0pBQXdKLG9CQUFvQix5QkFBeUIsaUJBQWlCLCtCQUErQix3QkFBd0IsT0FBTztBQUMxZ0IsZUFBZSx1RUFBdUUsYUFBYSxpQkFBaUIsY0FBYywrREFBK0QsZ0JBQWdCLHlFQUF5RSxrREFBa0QsU0FBUyxjQUFjLFNBQVMsa0NBQWtDLHNCQUFzQiw4Q0FBOEMsVUFBVSxTQUFTO0FBQ3JlLHFEQUFxRCxzQ0FBc0MsbUJBQW1CLGtCQUFrQix3QkFBd0IsOEZBQThGLCtIQUErSCx5Q0FBeUMsMEJBQTBCLDBCQUEwQixFQUFFO0FBQ3BkLFlBQVksMEdBQTBHLHFHQUFxRyxxQkFBcUIscURBQXFELHVCQUF1QiwyQ0FBMkMsbURBQW1ELDBFQUEwRSxlQUFlO0FBQ25mLGVBQWUsMkNBQTJDLGdFQUFnRSxvQkFBb0Isc0VBQXNFLElBQUksTUFBTSw2R0FBNkcsb0JBQW9CLDJFQUEyRSxTQUFTLFdBQVc7QUFDOWIsMEhBQTBILFFBQVEsV0FBVyxZQUFZLHdDQUF3QyxxQkFBcUIsVUFBVSx1QkFBdUIsNkNBQTZDLGtJQUFrSSw2QkFBNkIsdUNBQXVDO0FBQzFlLGlLQUFpSyxtR0FBbUcsaUNBQWlDLG1HQUFtRywwQkFBMEIsaUNBQWlDLDJCQUEyQixTQUFTLEVBQUU7QUFDemUsbUJBQW1CLG1CQUFtQiwrREFBK0Qsd0JBQXdCLG9CQUFvQixzQkFBc0IsMERBQTBELFlBQVksTUFBTSxNQUFNO0FBQ3pQLG9SQUFvUix5QkFBeUIsS0FBSyxvQkFBb0I7QUFDdFUsdUNBQXVDLDRCQUE0QixzT0FBc08sWUFBWSw0QkFBNEIscURBQXFELHVCQUF1QiwyQkFBMkIscUJBQXFCLG1EQUFtRDtBQUNoZ0IsMkpBQTJKLFNBQVMsWUFBWTtBQUNoTCxrQkFBa0Isc0JBQXNCLHFCQUFxQixJQUFJLElBQUksRUFBRSxjQUFjLGtCQUFrQiw2QkFBNkIsc0JBQXNCLHlCQUF5QixzQkFBc0IsbURBQW1ELHVCQUF1QixpREFBaUQsd0JBQXdCLGNBQWMsaUNBQWlDLHFCQUFxQixJQUFJLDBCQUEwQixZQUFZLGNBQWMsZ0RBQWdEO0FBQ3hnQixpRUFBaUUsS0FBSyw2QkFBNkIsNEJBQTRCLGlCQUFpQixTQUFTLGlDQUFpQyxpQkFBaUIsc0JBQXNCLE9BQU8sVUFBVSxpQ0FBaUMsTUFBTSxFQUFFLDJCQUEyQixPQUFPLFVBQVUsaUNBQWlDLCtCQUErQixFQUFFLGlFQUFpRSxFQUFFO0FBQzVjLHVDQUF1QywyQkFBMkIsNkJBQTZCLGNBQWMsTUFBTSx1SUFBdUksc0NBQXNDLDZCQUE2QixnQ0FBZ0MsY0FBYyxPQUFPO0FBQ2xYLFlBQVksWUFBWSxnQkFBZ0Isb0NBQW9DLGlDQUFpQyxrQkFBa0IsaUJBQWlCLFdBQVcsZ0JBQWdCLG1DQUFtQyxPQUFPLHVDQUF1Qyw4Q0FBOEMsZ0JBQWdCLG1CQUFtQixtQkFBbUIsbUJBQW1CLHlIQUF5SDtBQUM1ZSwyQkFBMkIsNEZBQTRGLEtBQUssdU9BQXVPLHVDQUF1QyxvQ0FBb0MsOEJBQThCLHNDQUFzQywwQkFBMEI7QUFDNWdCLFlBQVksa0JBQWtCLFdBQVcscUJBQXFCLE9BQU8sc0NBQXNDLDZCQUE2QixxRkFBcUYsNkVBQTZFLDRCQUE0QixXQUFXLFFBQVEsNEJBQTRCLFdBQVcsT0FBTyxzQkFBc0Isa0JBQWtCLGNBQWMsb0JBQW9CLGtCQUFrQjtBQUNuZSw2S0FBNkssa0VBQWtFLEtBQUssTUFBTSw4REFBOEQsc0JBQXNCLDRIQUE0SCwrQ0FBK0M7QUFDemYsRUFBRSxLQUFLLGdCQUFnQixtREFBbUQsb0ZBQW9GLGdCQUFnQiwrQkFBK0IsdUNBQXVDLHlGQUF5RixvQ0FBb0MsMkdBQTJHO0FBQzVkLGlHQUFpRyxvTEFBb0wsV0FBVyxxQkFBcUIsMkJBQTJCLGNBQWMsMklBQTJJO0FBQ3plO0FBQ0EsZ09BQWdPLDRCQUE0QixZQUFZLGVBQWUsYUFBYSxjQUFjLGdCQUFnQixRQUFRLFNBQVMsbUVBQW1FLHFFQUFxRSxtQkFBbUI7QUFDOWUsdUJBQXVCLEVBQUUsVUFBVSxTQUFTLEVBQUUscUJBQXFCLFVBQVUsZUFBZSxzQ0FBc0MsNEJBQTRCLFNBQVMsRUFBRSxjQUFjLE9BQU8sUUFBUSxXQUFXLEtBQUssa0JBQWtCLG1CQUFtQixFQUFFLFdBQVcseUJBQXlCLFNBQVMsaUNBQWlDLHNCQUFzQixjQUFjLFlBQVksY0FBYztBQUN6WSxFQUFFLEVBQUUsZUFBZSx3Q0FBd0MsU0FBUywrQ0FBK0M7QUFDbkg7QUFDQSxzREFBc0Qsb0RBQW9ELGVBQWUseURBQXlELG9HQUFvRyxZQUFZLGlCQUFpQixvQ0FBb0MsRUFBRSx1Q0FBdUMsSUFBSSxFQUFFO0FBQ3RZLDRIQUE0SCx3QkFBd0IsV0FBVyxXQUFXLHFIQUFxSCxzSEFBc0gsZUFBZSxlQUFlO0FBQ25iLFNBQVMscU5BQXFOLGdDQUFnQyxlQUFlLElBQUksdUhBQXVILFNBQVMseUJBQXlCLFVBQVUsMEJBQTBCLGNBQWMsY0FBYztBQUMxZSxHQUFHLGtCQUFrQix5Q0FBeUMsY0FBYyxpQkFBaUIsb0tBQW9LLGtJQUFrSSxnQkFBZ0Isd0NBQXdDLHNCQUFzQixzQkFBc0I7QUFDdmUsY0FBYyxvQkFBb0Isa0JBQWtCLFVBQVUsaUJBQWlCLFFBQVEsV0FBVyxRQUFRLG1CQUFtQixrQkFBa0IsUUFBUSxXQUFXLHlCQUF5QixvQkFBb0IsVUFBVSxtQkFBbUIsT0FBTyxFQUFFLGtDQUFrQyx1QkFBdUIsNEJBQTRCLHFDQUFxQyx3QkFBd0Isa0NBQWtDLDJCQUEyQiw2QkFBNkIsY0FBYztBQUMvZSxZQUFZLHVDQUF1QyxxQkFBcUIsNENBQTRDLFlBQVksV0FBVyxvRUFBb0Usc0RBQXNELCtDQUErQyxjQUFjLGdCQUFnQixzQ0FBc0MseUNBQXlDLElBQUksaUNBQWlDO0FBQ3RjLHVDQUF1QyxnQkFBZ0IsU0FBUyxtRkFBbUYsNEJBQTRCLGNBQWMsaUJBQWlCLEVBQUUsYUFBYSx1QkFBdUIsT0FBTywwQkFBMEIseUJBQXlCLE9BQU8sa0JBQWtCLCtCQUErQixTQUFTLHVCQUF1QixZQUFZLHNCQUFzQiw4Q0FBOEMsV0FBVyxhQUFhO0FBQzllLEdBQUcsV0FBVywrQkFBK0IsV0FBVyw0QkFBNEIsV0FBVyxjQUFjLGNBQWMsY0FBYyxZQUFZLGlCQUFpQix3Q0FBd0MsMEJBQTBCLHNCQUFzQixrQkFBa0IscUJBQXFCLHlCQUF5QixxQkFBcUIscUNBQXFDLHlCQUF5Qix5QkFBeUIsa0JBQWtCLFlBQVksb0JBQW9CLGlCQUFpQjtBQUM3ZSwwQkFBMEIsMkJBQTJCLHNCQUFzQixZQUFZLG9IQUFvSCw4QkFBOEIsNEdBQTRHLG1DQUFtQyxhQUFhLHFGQUFxRixhQUFhO0FBQ3ZlLHdCQUF3QixzQkFBc0IsbUJBQW1CLFVBQVUsS0FBSyxZQUFZLFlBQVksMENBQTBDLDRGQUE0RiwyRUFBMkUsb0JBQW9CLFdBQVc7QUFDeFYsbUNBQW1DLEtBQUssV0FBVyxhQUFhLDRFQUE0RSxXQUFXLEtBQUssV0FBVyxvQ0FBb0MsaUJBQWlCLGlDQUFpQyw0REFBNEQsMEJBQTBCLGNBQWMsOEVBQThFLGFBQWEsY0FBYyxtQkFBbUIsb0JBQW9CLHVCQUF1QjtBQUN4Z0Isd0NBQXdDLHdDQUF3QyxvQkFBb0IsU0FBUywwQ0FBMEMsRUFBRSwwQ0FBMEMsMkRBQTJELGdDQUFnQztBQUM5UixnQ0FBZ0MsK0JBQStCLHdCQUF3QiwrT0FBK08sRUFBRSxjQUFjLGdCQUFnQixTQUFTLDhEQUE4RCxjQUFjLHdEQUF3RCxjQUFjO0FBQ2pnQiwwQ0FBMEMsb0JBQW9CLEVBQUUsY0FBYyxNQUFNLDZDQUE2QyxhQUFhLDZDQUE2Qyx1QkFBdUIsa09BQWtPLGtCQUFrQixvQ0FBb0M7QUFDMWUsd0JBQXdCLDRCQUE0QixzRkFBc0YsY0FBYyx5Q0FBeUMscUhBQXFILGlDQUFpQyxzRUFBc0UsYUFBYSx1QkFBdUIseUNBQXlDO0FBQzFlLGdIQUFnSCxrQkFBa0IsbUJBQW1CLGtCQUFrQixvQ0FBb0Msb0NBQW9DLG9CQUFvQixnQkFBZ0Isb0JBQW9CLG9DQUFvQyxJQUFJLG9KQUFvSjtBQUNuZSxtREFBbUQsa0NBQWtDLHdCQUF3Qix1R0FBdUcsaURBQWlELHVMQUF1TCxnQkFBZ0Isc0JBQXNCO0FBQ2xlLGlHQUFpRyxnQ0FBZ0MsZ0JBQWdCLDZIQUE2SCw0QkFBNEIsd0NBQXdDLG9GQUFvRixLQUFLLFNBQVMsVUFBVSxvQkFBb0IsWUFBWTtBQUM5ZCxnQkFBZ0IsY0FBYyxTQUFTLElBQUksd0NBQXdDLFVBQVUsY0FBYyxnREFBZ0Qsa0JBQWtCLG9CQUFvQixJQUFJLFlBQVksR0FBRyxZQUFZLFdBQVcsNEJBQTRCLFNBQVMscURBQXFELGdCQUFnQixpSEFBaUgsMENBQTBDO0FBQ2hmLHlSQUF5UixvQ0FBb0MsNENBQTRDLGtEQUFrRCwwQkFBMEIsb0RBQW9ELEdBQUcsRUFBRTtBQUM5ZSxZQUFZLGtFQUFrRSxvQkFBb0IseUhBQXlILEVBQUUsY0FBYyxjQUFjLG1DQUFtQyxvQkFBb0Isb0JBQW9CLGtCQUFrQixtQkFBbUIseUJBQXlCLGNBQWMsOEJBQThCLFVBQVUsdUNBQXVDLE1BQU07QUFDcmUsU0FBUyxNQUFNLG1FQUFtRSxJQUFJLDhJQUE4SSxtQkFBbUIsbUJBQW1CLHlCQUF5QixZQUFZLDhCQUE4QixPQUFPLEVBQUUsc0JBQXNCLHVCQUF1QixvQkFBb0Isb0JBQW9CLHNCQUFzQixXQUFXO0FBQzVjLHlkQUF5ZCxHQUFHLE1BQU0saURBQWlELEtBQUssaUJBQWlCLElBQUkscUNBQXFDLE1BQU0sZUFBZSxTQUFTO0FBQ2huQixrQ0FBa0MsUUFBUSx1REFBdUQsU0FBUyxtQ0FBbUMsTUFBTSxrREFBa0QsS0FBSyxpRUFBaUUsS0FBSyx5Q0FBeUMsV0FBVyxxRUFBcUUsTUFBTSxnREFBZ0QsUUFBUSwwSEFBMEg7QUFDamtCLCtFQUErRSx3RkFBd0YsOEVBQThFLGlCQUFpQiw2QkFBNkIsU0FBUyxzREFBc0QsRUFBRSx5QkFBeUIsS0FBSyx1QkFBdUIsdUJBQXVCLHVCQUF1QixFQUFFLHVCQUF1QixTQUFTO0FBQ3plLFNBQVMsbUNBQW1DLG1DQUFtQyxFQUFFLDBCQUEwQixtQ0FBbUMsbUNBQW1DLG9CQUFvQixXQUFXLEVBQUUsa0NBQWtDLHlCQUF5QiwrREFBK0Qsc0NBQXNDLGlCQUFpQix5QkFBeUIsUUFBUSxnQkFBZ0IsRUFBRSxxQ0FBcUMsbUNBQW1DO0FBQzlmLCtGQUErRixNQUFNLHVFQUF1RSxHQUFHLHNFQUFzRSxHQUFHLHNEQUFzRCxNQUFNLG9EQUFvRCw4QkFBOEIsSUFBSSxtQkFBbUIsUUFBUSw2QkFBNkIsUUFBUSxJQUFJLElBQUksS0FBSyxhQUFhLHVCQUF1QixLQUFLO0FBQ2hnQiwwREFBMEQsR0FBRyxvREFBb0QsOERBQThELE1BQU0sc0JBQXNCLHVEQUF1RCw4RUFBOEUsa0RBQWtELDZDQUE2QyxRQUFRLG9DQUFvQyxFQUFFO0FBQzdkLCtCQUErQiw0QkFBNEIsZ0NBQWdDLHlDQUF5QyxZQUFZLGFBQWEsWUFBWSxhQUFhLDJCQUEyQix3Q0FBd0MsbUNBQW1DLHNCQUFzQixzQkFBc0IsZ0JBQWdCLGlCQUFpQixJQUFJLGlCQUFpQixtQkFBbUIsZ0JBQWdCLGtDQUFrQyxFQUFFLHNCQUFzQjtBQUMzZCx1QkFBdUIscUJBQXFCLG1FQUFtRSxxQkFBcUIsa0NBQWtDLFFBQVEscUJBQXFCLFFBQVEsb0JBQW9CLGlDQUFpQyw4REFBOEQsa0JBQWtCLE1BQU0sb0RBQW9ELEdBQUcsaURBQWlEO0FBQzliLGtGQUFrRixxQ0FBcUMsd0JBQXdCLGVBQWUsaUNBQWlDLG1CQUFtQixrQ0FBa0MsYUFBYSxHQUFHLG1CQUFtQixlQUFlLHFEQUFxRCxtQkFBbUIsc0JBQXNCLG9CQUFvQix1QkFBdUIsOEJBQThCLFNBQVMsdUJBQXVCO0FBQzdlLG1FQUFtRSxxRkFBcUYsc0JBQXNCLCtFQUErRSxvQkFBb0Isa0VBQWtFLGtEQUFrRDtBQUNyWSxJQUFJLGtCQUFrQixtQ0FBbUMsa0JBQWtCLDRDQUE0QywyQkFBMkIsaUZBQWlGLDRCQUE0QiwrQkFBK0IsV0FBVyxxQ0FBcUMsNkJBQTZCLEVBQUUsb0JBQW9CLGlDQUFpQyxrQkFBa0IsbUJBQW1CLDhCQUE4QjtBQUNyZSxnQ0FBZ0Msc0JBQXNCLGtEQUFrRCxZQUFZLFdBQVcseUNBQXlDLHdEQUF3RCwrQkFBK0Isc0JBQXNCLG9GQUFvRixtQkFBbUIscUJBQXFCLGdEQUFnRCwwRUFBMEU7QUFDM2dCLGVBQWUsRUFBRSxnQkFBZ0Isb0JBQW9CLE9BQU8sMEJBQTBCLHlCQUF5QixVQUFVLE1BQU0sR0FBRyxvQ0FBb0MsOERBQThELHNFQUFzRSxhQUFhLHdCQUF3QixHQUFHLGtDQUFrQyxPQUFPLElBQUksNkNBQTZDLEdBQUcsdUNBQXVDLE1BQU0sMERBQTBELE1BQU07QUFDNWhCLHVFQUF1RSxRQUFRLG1FQUFtRSxHQUFHLHlDQUF5Qyx3RUFBd0UsSUFBSSxnRkFBZ0YsSUFBSSxrQ0FBa0MsaUdBQWlHLDZEQUE2RCxVQUFVLGFBQWEsa0RBQWtELFFBQVEsUUFBUTtBQUN2bkIsZ0NBQWdDLFFBQVEsT0FBTyxhQUFhLHNCQUFzQixHQUFHLDJEQUEyRCxNQUFNLHdIQUF3SCw2QkFBNkIsNkZBQTZGLGtDQUFrQyxrREFBa0QsY0FBYztBQUMxZSxHQUFHLGlDQUFpQyxVQUFVLGVBQWUsRUFBRSxpQkFBaUIsa0JBQWtCLHVDQUF1QyxrRUFBa0UsNkJBQTZCLFNBQVMsbURBQW1ELG9CQUFvQixRQUFRLDBCQUEwQixlQUFlLFFBQVEsdUJBQXVCLFNBQVMsaUJBQWlCLGtCQUFrQixzQkFBc0IsYUFBYSwwQ0FBMEM7QUFDamdCLG9FQUFvRSwyREFBMkQsaUJBQWlCLGtCQUFrQiw2REFBNkQsaUZBQWlGLDhCQUE4QixhQUFhLGNBQWMsR0FBRyxpQ0FBaUMsaURBQWlELHFCQUFxQixVQUFVO0FBQzdkLG9CQUFvQixLQUFLLFdBQVcsbUJBQW1CLG9DQUFvQyx1REFBdUQsWUFBWSx5REFBeUQsMkNBQTJDLHNEQUFzRCwrREFBK0QsK0NBQStDLDRCQUE0Qix1QkFBdUIsVUFBVTtBQUNuZSxHQUFHLE1BQU0scUJBQXFCLG1CQUFtQiwwQ0FBMEMsdUJBQXVCLEVBQUUsSUFBSSxjQUFjLEdBQUcsdUxBQXVMLGNBQWMsaUNBQWlDLFNBQVMseUJBQXlCLGtCQUFrQjtBQUNuYSxzR0FBc0csb0JBQW9CLHlCQUF5QixpQ0FBaUMsU0FBUyxtREFBbUQsd0JBQXdCLHFCQUFxQiw0QkFBNEIsc0ZBQXNGLFNBQVMsOEJBQThCLHNCQUFzQixXQUFXLHdCQUF3QjtBQUMvZSxzQkFBc0IsVUFBVSxlQUFlLGNBQWMsc0NBQXNDLFNBQVMsbUNBQW1DLHdCQUF3Qix3QkFBd0IsZUFBZSxvREFBb0QseUlBQXlJLGdFQUFnRTtBQUMzYyxhQUFhLHFCQUFxQix3QkFBd0Isc0JBQXNCLHdCQUF3QixrQkFBa0Isb0JBQW9CLHNCQUFzQix3QkFBd0IsdUJBQXVCLHlCQUF5QixvQkFBb0Isc0JBQXNCLHFCQUFxQixxQkFBcUIsdUJBQXVCLHdCQUF3QiwwQkFBMEIsbUJBQW1CO0FBQzVaLG1CQUFtQixzQkFBc0Isb0JBQW9CLGlGQUFpRiwwQkFBMEIsb0dBQW9HLDJEQUEyRCxnQkFBZ0IscUJBQXFCLG9CQUFvQixtQkFBbUIsMEVBQTBFLG9CQUFvQjtBQUNqZixzR0FBc0csb0JBQW9CLDBEQUEwRCxtQkFBbUIsRUFBRSxvQkFBb0Isb0JBQW9CLHlFQUF5RSw2QkFBNkIsR0FBRyxpQkFBaUIsUUFBUSxVQUFVLFNBQVMsbUJBQW1CLHVDQUF1QyxFQUFFLGlEQUFpRDtBQUNuZiwwQkFBMEIsa0NBQWtDLHNDQUFzQyxpQkFBaUIsMkRBQTJELE9BQU8sY0FBYyxXQUFXLEtBQUssZ0RBQWdELHNHQUFzRyxtQ0FBbUMsNkVBQTZFO0FBQ3pkLDJCQUEyQiwyQkFBMkIsaUJBQWlCLDhCQUE4QixnQkFBZ0Isa0JBQWtCLG9DQUFvQyxxQkFBcUIsVUFBVSx1QkFBdUIsT0FBTyxzQkFBc0IsdUJBQXVCLDBCQUEwQixFQUFFLG9DQUFvQyxzQkFBc0IsdUJBQXVCLElBQUkscUJBQXFCLG1DQUFtQyxzQkFBc0IsY0FBYyxlQUFlO0FBQ2pmLElBQUksK0NBQStDLE9BQU8sa0JBQWtCLE9BQU8sbUJBQW1CLGVBQWUsNERBQTRELG9CQUFvQixzQkFBc0IsTUFBTSwyRUFBMkUsNENBQTRDLElBQUksaUNBQWlDLEdBQUcsR0FBRyxHQUFHLEdBQUcsR0FBRyxHQUFHLElBQUksUUFBUSwrQkFBK0IsWUFBWSw2QkFBNkIsY0FBYztBQUNqZixDQUFDLGNBQWMsaUNBQWlDLGtCQUFrQiw0QkFBNEIsYUFBYSw0QkFBNEIsYUFBYSw0QkFBNEIsYUFBYSw0QkFBNEIsYUFBYSw0QkFBNEIsYUFBYSw0QkFBNEIsYUFBYSxZQUFZLE9BQU8sNEJBQTRCLHFDQUFxQyxtQkFBbUIsMkNBQTJDLHVDQUF1QyxpQkFBaUI7QUFDbGdCLG1GQUFtRixpRkFBaUYsSUFBSSxFQUFFLHNDQUFzQyxpQkFBaUIsOEJBQThCLHFEQUFxRCxzR0FBc0csMEJBQTBCLGtEQUFrRDtBQUN0ZSxhQUFhLFlBQVksMkJBQTJCLDZCQUE2Qix5QkFBeUIsc0JBQXNCLGdCQUFnQixzQkFBc0IsZUFBZSxnQkFBZ0IscUJBQXFCLGlDQUFpQywwRUFBMEUsbUhBQW1ILGVBQWUsRUFBRSxFQUFFLG9CQUFvQixpQkFBaUIsRUFBRTtBQUNsZixDQUFDLDBCQUEwQixFQUFFLHVCQUF1Qiw0QkFBNEIsRUFBRSxxQkFBcUIsMEJBQTBCLEVBQUUsUUFBUSxvQkFBb0Isc0JBQXNCLGlGQUFpRiw2RkFBNkYsNkJBQTZCLHFCQUFxQiw0QkFBNEIsc0JBQXNCO0FBQ3ZjLDJJQUEySSxzQ0FBc0MsMkJBQTJCLHlCQUF5QixzR0FBc0csYUFBYSx3Q0FBd0Msc0JBQXNCLHNCQUFzQjtBQUM1YSw4RkFBOEYscUNBQXFDLDJCQUEyQix3RUFBd0UscUJBQXFCLGtCQUFrQiwrRUFBK0Usc0JBQXNCLHFCQUFxQixrQ0FBa0MseUNBQXlDLHNCQUFzQjtBQUN4ZSxnRUFBZ0UsZ0JBQWdCLHdCQUF3QiwwRUFBMEUsZ0JBQWdCLGtCQUFrQixpQkFBaUIsZ0JBQWdCLHNCQUFzQixxQkFBcUIsZUFBZSxvQkFBb0Isd0JBQXdCLHNCQUFzQixvREFBb0QsYUFBYSxnQkFBZ0IsNkNBQTZDO0FBQy9lLGtFQUFrRSxjQUFjLDBCQUEwQiwrQkFBK0IsK0JBQStCLFNBQVMsOEJBQThCLG1DQUFtQyw4REFBOEQsMERBQTBELHFCQUFxQixzR0FBc0csRUFBRTtBQUN2ZSxrRUFBa0UsRUFBRSxNQUFNLHlEQUF5RCw4RUFBOEUsTUFBTSxvREFBb0QsTUFBTSx5REFBeUQsR0FBRyx3Q0FBd0MsOERBQThELEVBQUUsK0JBQStCLHFCQUFxQjtBQUN6ZSxtRUFBbUUsRUFBRSxnQ0FBZ0MsT0FBTyx1REFBdUQsRUFBRSxxREFBcUQsaUJBQWlCLDZCQUE2QixHQUFHLHVCQUF1QixjQUFjLGdDQUFnQyxNQUFNLGlEQUFpRCxhQUFhO0FBQ3BaLFlBQVksRUFBRSwyQkFBMkIsV0FBVyx1SUFBdUksR0FBRyxpRUFBaUUsRUFBRSw0REFBNEQsZ0JBQWdCLDRCQUE0QixNQUFNLGlDQUFpQyxzQ0FBc0MsU0FBUyxjQUFjLE9BQU8sVUFBVSxjQUFjO0FBQzVlLDREQUE0RCwrR0FBK0csdUJBQXVCLGVBQWUsVUFBVSxXQUFXLDBCQUEwQiw0QkFBNEIsWUFBWSxnQkFBZ0Isc0RBQXNELFVBQVUsZ0JBQWdCLHdEQUF3RCxvQkFBb0IsZ0JBQWdCO0FBQ3BlLGlGQUFpRixhQUFhLGFBQWEsMkNBQTJDLHFCQUFxQixFQUFFLGVBQWUsbUJBQW1CLHFHQUFxRyxvQ0FBb0MsaUJBQWlCLDREQUE0RCxFQUFFLGlCQUFpQix1QkFBdUIsc0JBQXNCO0FBQ3JlLGlCQUFpQixjQUFjLEdBQUcsRUFBRSw4REFBOEQsOENBQThDLEdBQUcsd0pBQXdKLDZEQUE2RCx1Q0FBdUM7QUFDL1ksOENBQThDLDBDQUEwQyxhQUFhLEdBQUcsb0VBQW9FLGdEQUFnRCxzQ0FBc0MsZUFBZSxjQUFjLEdBQUcsb0lBQW9JLDZEQUE2RDtBQUNuZSxHQUFHLDRKQUE0SixpREFBaUQseURBQXlELG1FQUFtRSx1SEFBdUgsNEJBQTRCO0FBQy9kLHVCQUF1Qix3REFBd0QsMERBQTBELFVBQVUsMkJBQTJCLGNBQWMsaUNBQWlDLGNBQWMsOEJBQThCLElBQUksZ0NBQWdDLDZDQUE2QyxnQkFBZ0IsaUhBQWlILFdBQVc7QUFDdGUseUVBQXlFLFlBQVksa0JBQWtCLGNBQWMsK0JBQStCLE1BQU0scUJBQXFCLGtEQUFrRCxTQUFTLFlBQVksaUNBQWlDLGlCQUFpQixFQUFFLEdBQUcsU0FBUyw2QkFBNkIsZ0RBQWdELGNBQWMsaUZBQWlGO0FBQ2xlLDBHQUEwRyx1QkFBdUIscUJBQXFCLDhHQUE4RyxxQkFBcUIsYUFBYSxtQkFBbUIsZ0JBQWdCLGdCQUFnQixjQUFjLDRCQUE0QixFQUFFLG1DQUFtQyxrQkFBa0IsaUJBQWlCO0FBQzNjLHdGQUF3RixFQUFFLE9BQU8sdUZBQXVGLHVEQUF1RCwyQ0FBMkMsR0FBRywyREFBMkQsdURBQXVELEdBQUcsa0RBQWtEO0FBQ3BjLHdDQUF3Qyx3Q0FBd0Msd0NBQXdDLDREQUE0RCwyQkFBMkIsNkRBQTZELDJCQUEyQixxRUFBcUUsR0FBRyx3REFBd0QsNERBQTREO0FBQ25lLFlBQVksbUNBQW1DLFVBQVUsS0FBSywyTkFBMk4sY0FBYywrQkFBK0IsaUJBQWlCLGdCQUFnQiwyREFBMkQsZUFBZSxnQ0FBZ0MsUUFBUTtBQUN6ZCx3Q0FBd0MsZUFBZSw4RUFBOEUsT0FBTywyREFBMkQsU0FBUyxnRUFBZ0UsRUFBRSxxREFBcUQsa0NBQWtDLGtEQUFrRCxpRUFBaUUsU0FBUztBQUNyZSx1QkFBdUIsd0RBQXdELEVBQUUsMkVBQTJFLFNBQVMsRUFBRSxxQ0FBcUMsdUJBQXVCLHFDQUFxQyxVQUFVLGNBQWMsMEdBQTBHLEVBQUUsaURBQWlELHdCQUF3QjtBQUNyZCwwRkFBMEYsR0FBRyxFQUFFLGdGQUFnRiwyQkFBMkIsOFRBQThULGtCQUFrQjtBQUMxaEIsb0RBQW9ELGtPQUFrTyx1QkFBdUIsOEJBQThCLHVFQUF1RSw2QkFBNkIsUUFBUSxXQUFXO0FBQ2xjLElBQUksYUFBYSx3RUFBd0UsbUJBQW1CLGdCQUFnQiw4QkFBOEIsd0lBQXdJLGlCQUFpQiw2REFBNkQsOEVBQThFLEVBQUUsUUFBUSxpQkFBaUI7QUFDemQsYUFBYSxvREFBb0QsRUFBRSxTQUFTLGtEQUFrRCxrRkFBa0YsOEJBQThCLHNDQUFzQyxtQ0FBbUMsMklBQTJJLEdBQUc7QUFDcmMsS0FBSyxRQUFRLHFGQUFxRixpQ0FBaUMsY0FBYyxlQUFlLGFBQWEsZUFBZSxzQkFBc0IsMkJBQTJCLElBQUksNEdBQTRHLHVDQUF1QyxHQUFHLHNEQUFzRCxnQ0FBZ0M7QUFDN2QsaUJBQWlCLHNCQUFzQixhQUFhLDhCQUE4QixlQUFlLHFDQUFxQyx3Q0FBd0MscUNBQXFDLDhDQUE4QyxxQ0FBcUMsTUFBTSx3Q0FBd0Msa0NBQWtDLDRGQUE0Rix3QkFBd0IsZUFBZTtBQUN6Zix3QkFBd0IsOEJBQThCLHlEQUF5RCxtREFBbUQsUUFBUSxHQUFHLDhDQUE4QyxxREFBcUQsMENBQTBDLFNBQVMsaUNBQWlDLHdDQUF3QyxlQUFlO0FBQzNaLEdBQUcsa0RBQWtELE1BQU0sc0NBQXNDLDhEQUE4RCxNQUFNLHVDQUF1QyxVQUFVLG9HQUFvRywyQkFBMkIsd0JBQXdCLGlDQUFpQztBQUM5WSxrQkFBa0IsTUFBTSw0RUFBNEUsb0NBQW9DLE1BQU0saURBQWlELHVDQUF1QyxrTEFBa0wsMENBQTBDLEtBQUssSUFBSTtBQUMzYyxXQUFXLFVBQVUsWUFBWSxTQUFTLHdCQUF3QixhQUFhLEdBQUcsb0NBQW9DLHFFQUFxRSw0QkFBNEIsZUFBZSw4Q0FBOEMsMENBQTBDLDREQUE0RCxHQUFHLCtFQUErRSx1Q0FBdUM7QUFDbmYsT0FBTyw2Q0FBNkMseUNBQXlDLE9BQU8sa0VBQWtFLG9CQUFvQiw2RkFBNkYsb0NBQW9DLGtDQUFrQyxpQkFBaUIsb0JBQW9CO0FBQ2xZLHdFQUF3RSwwRUFBMEUsc0JBQXNCLDZEQUE2RCxFQUFFLGlCQUFpQixvQ0FBb0MsdUJBQXVCLHdEQUF3RCw4SUFBOEk7QUFDemYsNEVBQTRFLDBDQUEwQyx3Q0FBd0MsaUJBQWlCLCtDQUErQyw0SEFBNEgsK0ZBQStGLCtCQUErQjtBQUN4ZCxZQUFZLHFCQUFxQiw0QkFBNEIsdUNBQXVDLDBFQUEwRSxFQUFFLDJCQUEyQixrQkFBa0Isa0RBQWtELDRCQUE0QixHQUFHLGNBQWMsZ0JBQWdCLGdCQUFnQixnQ0FBZ0MsY0FBYyxnQkFBZ0IsdUVBQXVFLFdBQVc7QUFDNWUsMkNBQTJDLDZCQUE2QixZQUFZLGtCQUFrQixPQUFPLE9BQU8sZ0JBQWdCLGFBQWEsMkJBQTJCLGtCQUFrQixrREFBa0QsbUVBQW1FLEVBQUUsa0JBQWtCLGdCQUFnQixnQkFBZ0Isc0NBQXNDLHlCQUF5QiwyQkFBMkIsRUFBRSw4Q0FBOEMsZ0JBQWdCO0FBQ2pnQixjQUFjLGtIQUFrSCx3SkFBd0osS0FBSyxrQkFBa0IseURBQXlELFlBQVksa0hBQWtIO0FBQ3RlLElBQUkscUJBQXFCLFdBQVcsZ0NBQWdDLHNEQUFzRCxlQUFlLHlCQUF5QixpQkFBaUIsc0JBQXNCLGtCQUFrQiwwQ0FBMEMsd0JBQXdCLG1CQUFtQixjQUFjLCtCQUErQixhQUFhLCtCQUErQixHQUFHLFlBQVksa0JBQWtCLGlDQUFpQyxxQ0FBcUM7QUFDaGYsMEJBQTBCLG9DQUFvQyxVQUFVLFlBQVksbUJBQW1CLGtDQUFrQyxxQ0FBcUMsb0NBQW9DLG9DQUFvQyxVQUFVLHFCQUFxQiwwQ0FBMEMsWUFBWSxzQkFBc0IsVUFBVSxpQ0FBaUMsaUZBQWlGLGtCQUFrQjtBQUMvZSxnRkFBZ0YsZUFBZSxhQUFhLGFBQWEsVUFBVSx3QkFBd0IsbVFBQW1RO0FBQzlaLG9OQUFvTjtBQUNwTixvREFBb0Qsc0ZBQXNGLG1EQUFtRCxrQkFBa0Isa0JBQWtCLG9CQUFvQixxQ0FBcUMsSUFBSSxzRUFBc0UsZ0JBQWdCLDBCQUEwQixFQUFFLDRCQUE0QixJQUFJLCtCQUErQixVQUFVLG1CQUFtQjtBQUM1ZSwyQ0FBMkMsV0FBVyxnQkFBZ0IscUJBQXFCLGlFQUFpRSxLQUFLLGlCQUFpQixpRUFBaUUsMEJBQTBCLEVBQUUsNkJBQTZCLDBCQUEwQixFQUFFLFNBQVMsa0JBQWtCLGlEQUFpRDtBQUNwWiw2RUFBNkUsMEJBQTBCLEtBQUssa0RBQWtELG1DQUFtQyxZQUFZLDBCQUEwQixnQkFBZ0IsT0FBTyxrQkFBa0IsVUFBVSxpQkFBaUIsY0FBYyx5SEFBeUgsZ0JBQWdCLGlDQUFpQztBQUNuZSxtQkFBbUIsaUJBQWlCLHdEQUF3RCxFQUFFLHVCQUF1QixFQUFFLGlFQUFpRSxnQkFBZ0IsbUJBQW1CLHFDQUFxQyxNQUFNLHVCQUF1QiwrREFBK0QsNERBQTRELFlBQVksWUFBWSxNQUFNO0FBQ3RiLHVHQUF1RyxJQUFJLGdCQUFnQixvREFBb0QsYUFBYSw0Q0FBNEMsY0FBYyw2Q0FBNkMsY0FBYyxrQkFBa0IsTUFBTSxvQkFBb0Isd0JBQXdCLDBFQUEwRSxTQUFTLGNBQWMsU0FBUyxtQkFBbUI7QUFDbGYsZ0JBQWdCLGtDQUFrQyxnQkFBZ0IsZUFBZSxxQ0FBcUMsSUFBSSw2QkFBNkIsSUFBSSw4Q0FBOEMsU0FBUyxrQkFBa0Isd0NBQXdDLGtDQUFrQyxFQUFFLGVBQWUsT0FBTyxzREFBc0QsY0FBYyxzREFBc0QsS0FBSztBQUNyYyx1RkFBdUYsc0JBQXNCLEVBQUUsa0JBQWtCLDhEQUE4RCxzQkFBc0IsR0FBRyxvQ0FBb0MsT0FBTztBQUNuUSxnQ0FBZ0MsY0FBYyxnREFBZ0Qsa0JBQWtCLE9BQU8sa0RBQWtELHlDQUF5QyxvREFBb0QsaUJBQWlCLG1EQUFtRCxnQkFBZ0IsTUFBTSw2Q0FBNkMsU0FBUyxrREFBa0QsK0NBQStDO0FBQ3ZmLG1TQUFtUyw0QkFBNEIsb0JBQW9CLHNDQUFzQyxLQUFLLEtBQUssS0FBSyxZQUFZLElBQUk7QUFDeFosMEZBQTBGLGNBQWMsZ0NBQWdDLGlDQUFpQyw2QkFBNkIsK0JBQStCLHVEQUF1RCxxREFBcUQsNkJBQTZCLDRCQUE0QiwyQkFBMkIsc0NBQXNDLEVBQUUsVUFBVSwyQ0FBMkM7QUFDbGdCLE1BQU0sa0JBQWtCLDRCQUE0QixxQkFBcUIsb0VBQW9FLDBCQUEwQixlQUFlLEtBQUssZ0JBQWdCLHFDQUFxQyxnQkFBZ0Isa0JBQWtCLEVBQUUsYUFBYSxpQ0FBaUMsMERBQTBELFVBQVUsUUFBUTtBQUM5WSxTQUFTLE9BQU8sa0RBQWtELGdCQUFnQixNQUFNLG9CQUFvQiw2REFBNkQsaUJBQWlCLEVBQUUsY0FBYyxjQUFjLHFCQUFxQixjQUFjLEdBQUcscUJBQXFCLGNBQWMsR0FBRyxjQUFjLEtBQUssOEJBQThCLGtDQUFrQyxpQkFBaUIsa0RBQWtEO0FBQzFiLGdOQUFnTix1REFBdUQsT0FBTyx5QkFBeUIsNkJBQTZCLDZCQUE2QiwyQ0FBMkMsS0FBSyw4REFBOEQsS0FBSztBQUNwZCwyQkFBMkIsc0RBQXNELHVDQUF1QyxzRUFBc0UsZ0JBQWdCLGdEQUFnRCxzRUFBc0UsZ0JBQWdCLGlCQUFpQixnR0FBZ0csd0NBQXdDO0FBQzdlLG1CQUFtQixLQUFLLFFBQVEsc0NBQXNDLG1HQUFtRyw0Q0FBNEMsd0NBQXdDLGVBQWUsMkNBQTJDLG1EQUFtRCxxREFBcUQsOERBQThELEtBQUs7QUFDbGUsaUJBQWlCLE9BQU8sdUNBQXVDLHdCQUF3QixVQUFVLGlCQUFpQixLQUFLLDBOQUEwTixNQUFNLHlDQUF5QyxzR0FBc0c7QUFDdGUsR0FBRyxPQUFPLGdEQUFnRCxrRUFBa0UsOENBQThDLGVBQWUsY0FBYyx3T0FBd08sWUFBWSxTQUFTLGVBQWU7QUFDbmQsWUFBWSxJQUFJLGdEQUFnRCxZQUFZLDhEQUE4RCxRQUFRLHlCQUF5Qix1SkFBdUosRUFBRSxRQUFRLEVBQUUsa0pBQWtKO0FBQ2hlLHlEQUF5RCwyREFBMkQsV0FBVyxZQUFZLFdBQVcsY0FBYyxhQUFhLFdBQVcsa0JBQWtCLGVBQWUsZ0JBQWdCLGtDQUFrQyxjQUFjLG1CQUFtQixxQ0FBcUMsMEJBQTBCLHdCQUF3Qiw0QkFBNEIsYUFBYSxvQkFBb0IsMkJBQTJCLFlBQVksZ0JBQWdCO0FBQzNmLFFBQVEsaUJBQWlCLGdCQUFnQixvQ0FBb0Msc0RBQXNELHVCQUF1Qix3QkFBd0IsMEJBQTBCLGFBQWEsYUFBYSx3Q0FBd0MseUhBQXlILDRHQUE0RyxjQUFjO0FBQ2pnQixnQkFBZ0IsNkRBQTZELG9CQUFvQixtQkFBbUIsZUFBZSxpQkFBaUIsSUFBSSxVQUFVLFVBQVUsOEJBQThCLHlCQUF5Qix5QkFBeUIsaUJBQWlCLDhCQUE4QixjQUFjLEVBQUUseUJBQXlCLHlCQUF5QixpQkFBaUIsNkJBQTZCLGNBQWMsRUFBRSxzQkFBc0IsT0FBTyxPQUFPO0FBQy9jLG1DQUFtQyw2Q0FBNkMsOERBQThELDhEQUE4RCxVQUFVLFVBQVUsa0JBQWtCLGdCQUFnQiw0R0FBNEcsbUJBQW1CLGFBQWEsUUFBUSxVQUFVLGNBQWM7QUFDOWEsa0NBQWtDLGlCQUFpQixxQ0FBcUMsa0tBQWtLLGNBQWMsbUVBQW1FLHlDQUF5QyxXQUFXLEtBQUssbUNBQW1DLHdFQUF3RTtBQUMvZSxnQkFBZ0IsMEZBQTBGLEtBQUssS0FBSyx3QkFBd0IsbUNBQW1DLGdCQUFnQixlQUFlLE9BQU8sK0NBQStDLDZCQUE2Qix1Q0FBdUMsb0JBQW9CLEtBQUssU0FBUyxnQkFBZ0IsaUJBQWlCLHNDQUFzQyx5Q0FBeUMsS0FBSyxjQUFjLDZCQUE2QjtBQUMxZ0IscUJBQXFCLFlBQVksV0FBVyxrSUFBa0ksc0RBQXNELGlDQUFpQyxpQkFBaUIsYUFBYSwwQkFBMEIsbUNBQW1DLGdEQUFnRCwrRUFBK0U7QUFDL2QsQ0FBQyxPQUFPLG1EQUFtRCwyQ0FBMkMsdUNBQXVDLDhEQUE4RCwyQkFBMkIsc0JBQXNCLHVCQUF1QixtQkFBbUIsd0JBQXdCLEtBQUsscUJBQXFCLHNEQUFzRCw2QkFBNkIsc0NBQXNDLGlCQUFpQjtBQUNsZSxrQkFBa0IsZ0JBQWdCLGdHQUFnRyxpREFBaUQsaURBQWlELEdBQUcsMkRBQTJELG9DQUFvQyx5RUFBeUUsa0VBQWtFLHNDQUFzQztBQUN2ZixHQUFHLHNCQUFzQixrRkFBa0YsZUFBZSxhQUFhLDBEQUEwRCxFQUFFLDRCQUE0QixJQUFJLDBCQUEwQixhQUFhLGlDQUFpQyxFQUFFLHlCQUF5QiwwQ0FBMEMsNkJBQTZCLG9CQUFvQixXQUFXO0FBQzVhLGtCQUFrQixnQkFBZ0IsMkZBQTJGLHNDQUFzQyxzQkFBc0IsMEJBQTBCLCtCQUErQiwyRUFBMkUsOEJBQThCLEtBQUssaUJBQWlCLDRHQUE0RyxFQUFFLG1CQUFtQjtBQUNsZiw0T0FBNE8sU0FBUyxhQUFhLDhCQUE4QixZQUFZLEVBQUUsMkNBQTJDLDRFQUE0RSxFQUFFLHVCQUF1QiwrQkFBK0I7QUFDN2QsOEJBQThCLGdCQUFnQiwrSUFBK0ksK0JBQStCLHlDQUF5QyxJQUFJLEVBQUUsb0VBQW9FLGNBQWMsNkJBQTZCLEVBQUUseUJBQXlCLFdBQVcsMEJBQTBCLGlDQUFpQyxrQ0FBa0MsSUFBSTtBQUNqZ0Isd0NBQXdDLFNBQVMsSUFBSSx3Q0FBd0MsV0FBVyx3RUFBd0UseUVBQXlFLGdCQUFnQix3QkFBd0IsK0JBQStCLG1CQUFtQixhQUFhLHVEQUF1RCw2RUFBNkUsWUFBWTtBQUNoZixHQUFHLHdCQUF3QixhQUFhLDZDQUE2Qyx5REFBeUQsa0JBQWtCLFdBQVcsU0FBUywyQkFBMkIsc0NBQXNDLHdCQUF3QixFQUFFLDRHQUE0RyxrQ0FBa0MsY0FBYyw2QkFBNkIsZUFBZSxFQUFFLHlCQUF5QixhQUFhO0FBQy9mLCtCQUErQiwwQkFBMEIsVUFBVSxJQUFJLDJDQUEyQyxVQUFVLElBQUksOENBQThDLFVBQVUsWUFBWSxnQkFBZ0IsNEdBQTRHLFVBQVUsa0NBQWtDLCtCQUErQiwwREFBMEQscUNBQXFDO0FBQzFlLGtCQUFrQixnQkFBZ0Isa0JBQWtCLDZDQUE2QyxrQkFBa0Isb0NBQW9DLG9DQUFvQyxFQUFFLGFBQWEsbUJBQW1CLHNCQUFzQixVQUFVLGtCQUFrQixvQkFBb0IsZ0NBQWdDLHdDQUF3Qyx5RUFBeUUsbUJBQW1CLFVBQVUsT0FBTyxxQkFBcUI7QUFDN2UsYUFBYSx3QkFBd0IseUJBQXlCLHVCQUF1QixvQkFBb0Isd0JBQXdCLHFCQUFxQiwwQkFBMEIsOEJBQThCLEdBQUcsY0FBYyxnQkFBZ0IsaURBQWlELHNCQUFzQixxQkFBcUIsdURBQXVELEVBQUUsZ0JBQWdCLGdCQUFnQix5QkFBeUIsT0FBTyxFQUFFLGNBQWM7QUFDcGQsY0FBYyxxRUFBcUUsS0FBSyxtREFBbUQsNkNBQTZDLEVBQUUsZ0JBQWdCLFlBQVksMkRBQTJELDRDQUE0Qyw2Q0FBNkMsRUFBRSxzQkFBc0IsV0FBVyxpQkFBaUIsMENBQTBDLGFBQWEsb0JBQW9CLEVBQUUsUUFBUTtBQUNuZixTQUFTLHVDQUF1QyxhQUFhLGlCQUFpQixRQUFRLHFCQUFxQiw4Q0FBOEMsc0JBQXNCLDhCQUE4Qix5QkFBeUIsMkJBQTJCLGlCQUFpQixPQUFPLGlCQUFpQiw4QkFBOEIsRUFBRSx3QkFBd0IsUUFBUSxnQkFBZ0IsRUFBRSxtQ0FBbUMscURBQXFELG1CQUFtQixrQ0FBa0M7QUFDemdCLDZCQUE2QixVQUFVLHdDQUF3Qyx1RkFBdUYscUJBQXFCLDZFQUE2RSxjQUFjLDJDQUEyQyxxQkFBcUIsRUFBRSwyQ0FBMkMsYUFBYSxlQUFlLG9CQUFvQixnQ0FBZ0MsTUFBTTtBQUN6ZCxxRkFBcUYsOEJBQThCLGdCQUFnQiwwSkFBMEosZ0NBQWdDLEVBQUUsYUFBYSxxQ0FBcUM7QUFDalgsbUVBQW1FLDBEQUEwRCxjQUFjLHVDQUF1Qyx1Q0FBdUMseURBQXlELHVCQUF1Qiw2R0FBNkcsaUVBQWlFLHNCQUFzQjtBQUM3ZSw4REFBOEQsZ0JBQWdCLDZDQUE2QyxxREFBcUQsS0FBSyxHQUFHLEVBQUUsY0FBYyw2Q0FBNkMsd0RBQXdELGdEQUFnRCx1REFBdUQsa0JBQWtCLGtDQUFrQztBQUN4YyxZQUFZLHVCQUF1QiwrSkFBK0osU0FBUyx3SUFBd0ksc0JBQXNCLHdGQUF3RixnQkFBZ0I7QUFDamQsYUFBYSxtREFBbUQscURBQXFELEtBQUssSUFBSSxFQUFFLGNBQWMsc0NBQXNDLHVDQUF1Qyx5UUFBeVE7QUFDcGUsQ0FBQyx1Q0FBdUMsSUFBSSx1QkFBdUIsa0ZBQWtGLEdBQUcsRUFBRSw2REFBNkQsa0ZBQWtGLEVBQUUsdUJBQXVCLHNHQUFzRyxtRUFBbUU7QUFDM2Usd0dBQXdHLGlCQUFpQixzQkFBc0IsMklBQTJJLDBCQUEwQixlQUFlLHNDQUFzQyxnQkFBZ0I7QUFDelgsa1hBQWtYLElBQUksTUFBTSxHQUFHLEVBQUUsY0FBYyxPQUFPLHVDQUF1QztBQUM3Yix5VEFBeVQsdUJBQXVCLGdDQUFnQyxJQUFJLGtDQUFrQyxzQ0FBc0M7QUFDNWIsbUNBQW1DLDRCQUE0Qiw4QkFBOEIseURBQXlELHlFQUF5RSxFQUFFLGlFQUFpRSwwQ0FBMEMsRUFBRSw4QkFBOEIsMkNBQTJDLEdBQUcsRUFBRSx3Q0FBd0MsaUJBQWlCO0FBQ3JkLCtDQUErQyw4RUFBOEUsR0FBRyxpQ0FBaUMsVUFBVSxjQUFjLGlCQUFpQjtBQUMxTSxjQUFjLHFDQUFxQyxHQUFHLG1CQUFtQixFQUFFLG1DQUFtQyxpRUFBaUUsOENBQThDLHNEQUFzRCxtREFBbUQsS0FBSyw4REFBOEQsZ0JBQWdCLG9CQUFvQixxREFBcUQsZUFBZTtBQUNqZixvTUFBb00sb0JBQW9CLDRCQUE0QixtQ0FBbUMsc0JBQXNCLDBDQUEwQyxXQUFXLDZCQUE2QixVQUFVLDZEQUE2RDtBQUN0YyxJQUFJLG1DQUFtQywyUEFBMlAsaUJBQWlCLGNBQWMsb0VBQW9FLDJCQUEyQixpRUFBaUU7QUFDamUsaUNBQWlDLHFCQUFxQixhQUFhLGdEQUFnRCw4Q0FBOEMsOEZBQThGLHFGQUFxRix5Q0FBeUMsb0RBQW9ELHNEQUFzRDtBQUN2ZSx3QkFBd0Isc0RBQXNELDBCQUEwQiw4T0FBOE8sd0JBQXdCLEdBQUcscURBQXFELEdBQUcseUJBQXlCO0FBQ2xjLDJEQUEyRCxvQ0FBb0Msa0NBQWtDLHNFQUFzRSxxQ0FBcUMsRUFBRSwwQkFBMEIsaUNBQWlDLEVBQUUsMkJBQTJCLDJCQUEyQixTQUFTLHFDQUFxQyxtQ0FBbUM7QUFDbGIsdUtBQXVLLDZEQUE2RCxhQUFhLDRCQUE0QixvRUFBb0UsSUFBSSxxQ0FBcUMseUNBQXlDLGtCQUFrQix3REFBd0Q7QUFDN2UseUdBQXlHLE9BQU8sdUNBQXVDLHFDQUFxQywwQ0FBMEMsK0RBQStELHdFQUF3RSxPQUFPLHdDQUF3QztBQUM1WiwrREFBK0QsMENBQTBDLE9BQU8sbURBQW1ELHNDQUFzQyxlQUFlLGFBQWEscUJBQXFCLGFBQWEsVUFBVSxTQUFTLG1CQUFtQix3Q0FBd0MsRUFBRSx3QkFBd0Isd0VBQXdFO0FBQ3ZiLENBQUMsd0ZBQXdGLDBKQUEwSixvRkFBb0YsU0FBUyx5Q0FBeUMsc0NBQXNDLEtBQUssdURBQXVEO0FBQzNkLFlBQVksa0JBQWtCLGtCQUFrQixtQ0FBbUMsdUVBQXVFLEVBQUUsV0FBVyxFQUFFLGtCQUFrQixvQ0FBb0MsbUJBQW1CLG9CQUFvQixnQkFBZ0IscUZBQXFGLHFCQUFxQixrQ0FBa0MseUNBQXlDO0FBQzNjLG9CQUFvQix5Q0FBeUMsOENBQThDLHNDQUFzQyw4RUFBOEUsNkJBQTZCLHFCQUFxQixXQUFXLG9DQUFvQywyQ0FBMkMsRUFBRSxtQkFBbUIsY0FBYyxxR0FBcUc7QUFDbmYsQ0FBQywrVkFBK1YsZ0RBQWdELDhDQUE4Qyw2Q0FBNkM7QUFDM2UsbUdBQW1HLFVBQVUsRUFBRSx3RUFBd0Usa0JBQWtCLHlJQUF5SSxTQUFTLG9GQUFvRixrQkFBa0IsY0FBYyxrQkFBa0Isc0JBQXNCLEdBQUc7QUFDMWYseUJBQXlCLG9DQUFvQyw4QkFBOEIsOERBQThELFdBQVcsdUJBQXVCLHlGQUF5RixXQUFXLDhCQUE4Qiw0QkFBNEIsaUJBQWlCLGNBQWMsNkNBQTZDLGdFQUFnRSxFQUFFO0FBQ3ZlLENBQUMsaUJBQWlCLDBCQUEwQiw4QkFBOEIsRUFBRSw2QkFBNkIsaUJBQWlCLDRCQUE0Qiw4QkFBOEIsRUFBRSwyQkFBMkIsaUJBQWlCLDBCQUEwQiw4QkFBOEIsRUFBRSwwQkFBMEIsaUJBQWlCLGlDQUFpQyw4QkFBOEIsRUFBRSxHQUFHLGFBQWEsd0VBQXdFLGFBQWE7QUFDN2UseUNBQXlDLGVBQWUsMEVBQTBFLGFBQWEsc0VBQXNFLFlBQVksOEVBQThFLHVCQUF1QixnRUFBZ0U7QUFDdFksdUtBQXVLLEVBQUUsa0JBQWtCLHdCQUF3Qix3RkFBd0YsYUFBYSxjQUFjLDhEQUE4RCxjQUFjLG1CQUFtQix1Q0FBdUM7QUFDNWMsR0FBRyw4RUFBOEUsUUFBUSwrQkFBK0IsMENBQTBDLHFDQUFxQyxZQUFZLFdBQVcsMEpBQTBKLGdCQUFnQixjQUFjLHVFQUF1RSxnQkFBZ0I7QUFDN2UscUNBQXFDLElBQUksbUJBQW1CLDJDQUEyQyxxQkFBcUIsMkNBQTJDLHlDQUF5QyxpREFBaUQsTUFBTSxpQkFBaUIscUJBQXFCLHFDQUFxQyw2QkFBNkI7QUFDL1csb1VBQW9VLGVBQWUsMENBQTBDLFdBQVcsR0FBRyxFQUFFLGlDQUFpQyxxQkFBcUI7QUFDbmMsNEJBQTRCLDREQUE0RCxFQUFFLG9DQUFvQyxtRkFBbUYsd0JBQXdCLE1BQU0sRUFBRSw0QkFBNEIsTUFBTSwwRUFBMEUsOEpBQThKO0FBQzNmLHdCQUF3QiwwQkFBMEIsSUFBSSxzRUFBc0UsZUFBZSxxQ0FBcUMsZ0dBQWdHLHlCQUF5QiwwSEFBMEgsaUNBQWlDLGtCQUFrQixPQUFPLEVBQUUsZ0NBQWdDO0FBQy9mLENBQUMsZUFBZSxrQkFBa0IsRUFBRSxlQUFlLDZCQUE2QixvREFBb0QsNEJBQTRCLGVBQWUsNkJBQTZCLG9EQUFvRCw0QkFBNEIsZUFBZSxvQ0FBb0MscUNBQXFDLEVBQUUseUNBQXlDLHNEQUFzRCxFQUFFLHlDQUF5QztBQUNoZ0IsbURBQW1ELEVBQUUseUJBQXlCLDZCQUE2QixtQ0FBbUMsK0VBQStFLGlEQUFpRCwrRUFBK0UsMkdBQTJHO0FBQ3hjLGlGQUFpRiwyR0FBMkcscURBQXFELDJKQUEySjtBQUM1WSxFQUFFLDJJQUEySSwwSUFBMEkseUZBQXlGLGNBQWMsdURBQXVELHdEQUF3RDtBQUM3ZSx3REFBd0QsRUFBRSx5RkFBeUYsbUNBQW1DLHVGQUF1RiwrRUFBK0UsK0VBQStFO0FBQzNhLHNFQUFzRSxrSkFBa0osMkZBQTJGLHVJQUF1STtBQUMxYiw0Q0FBNEMsbUdBQW1HLG1HQUFtRyxnSUFBZ0ksNkhBQTZIO0FBQy9lLDJHQUEyRyw0SUFBNEkseUNBQXlDO0FBQ2hTLHNLQUFzSyxpREFBaUQsaUJBQWlCLFdBQVcsS0FBSyw4QkFBOEIsK0JBQStCLHVCQUF1QixTQUFTLDJCQUEyQixzQ0FBc0MsNEJBQTRCLHFCQUFxQixLQUFLLHFCQUFxQjtBQUNqZSwySUFBMkksK0hBQStILGVBQWUsU0FBUywySEFBMkgsVUFBVSxhQUFhLGVBQWUsVUFBVSxpQkFBaUI7QUFDOWQsa0pBQWtKLHlCQUF5QixXQUFXLEVBQUUsZUFBZSxVQUFVLGlCQUFpQixxTUFBcU0seUJBQXlCLFdBQVcsRUFBRSxlQUFlLGlDQUFpQztBQUM3Ziw4QkFBOEIsVUFBVSxPQUFPLE9BQU8sY0FBYyw4RUFBOEUsc0JBQXNCLGtCQUFrQixpRkFBaUYsMEJBQTBCLFlBQVksK0VBQStFLGNBQWMsc0JBQXNCLDRCQUE0QixNQUFNLGVBQWU7QUFDcmQsK0NBQStDLDRCQUE0Qiw2QkFBNkIsMEJBQTBCLDBDQUEwQyxpQkFBaUIsNkVBQTZFLDBCQUEwQiw2QkFBNkIsMEJBQTBCLDBDQUEwQyxtQkFBbUIsb0ZBQW9GO0FBQzVlLGVBQWUsNkJBQTZCLDBCQUEwQiwwQ0FBMEMsY0FBYyw2RUFBNkUsMEJBQTBCLCtCQUErQixRQUFRLDBCQUEwQiwwSEFBMEgsZUFBZSw4RUFBOEUsd0JBQXdCO0FBQ3JoQixpQkFBaUIsaUZBQWlGLCtCQUErQiwwQ0FBMEMsUUFBUSxLQUFLLHlFQUF5RSx3REFBd0QsV0FBVyxLQUFLLDhFQUE4RSw4RUFBOEU7QUFDcmUsa0JBQWtCLHFEQUFxRCxnREFBZ0QseURBQXlELHdHQUF3RywrRkFBK0YsVUFBVSw4Q0FBOEMsYUFBYSxXQUFXO0FBQ3ZjLG9HQUFvRyxxREFBcUQsNkJBQTZCLG9GQUFvRixrQkFBa0Isb0NBQW9DLG1IQUFtSCxFQUFFLFNBQVMsNkJBQTZCO0FBQzNkLElBQUkseUdBQXlHLG1CQUFtQixtQkFBbUIsMEZBQTBGLGNBQWM7QUFDM1AsNk5BQTZOLHVCQUF1QiwyRUFBMkUscURBQXFEO0FBQ3BYLCtQQUErUCxlQUFlLG1CQUFtQix1RkFBdUYsR0FBRyxTQUFTLCtCQUErQixPQUFPLGlCQUFpQixVQUFVLFNBQVMsT0FBTywwQkFBMEI7QUFDL2Usa0NBQWtDLGVBQWUsRUFBRSxhQUFhLDBCQUEwQixpQkFBaUIsK0NBQStDLG9GQUFvRixlQUFlLDJCQUEyQixXQUFXLEtBQUssT0FBTyxlQUFlLGdCQUFnQixhQUFhLFNBQVMsR0FBRyxTQUFTLFFBQVEsVUFBVSwwQ0FBMEMsc0JBQXNCLGtDQUFrQztBQUNwZSxxSUFBcUksdUJBQXVCLHdNQUF3TSwwQkFBMEIsY0FBYyxxRkFBcUYsc0NBQXNDO0FBQ3ZnQixzVkFBc1YsOEJBQThCLGlDQUFpQywwQkFBMEIsTUFBTTtBQUNyYixnRUFBZ0Usb0NBQW9DLGtHQUFrRyx5QkFBeUIsb0NBQW9DLG9DQUFvQyxjQUFjLHVDQUF1QyxhQUFhLEVBQUUsTUFBTSwrRUFBK0UsTUFBTSxHQUFHO0FBQ3pjO0FBQ0EscU9BQXFPLG9GQUFvRix3RUFBd0Usd0VBQXdFO0FBQ3pjLDRCQUE0QixxSEFBcUgsaUhBQWlILDJJQUEySTtBQUM3WSxNQUFNLElBQUksT0FBTyxTQUFTLDZEQUE2RCw2Q0FBNkMsWUFBWSxVQUFVLDBCQUEwQixxSEFBcUgscUNBQXFDLEVBQUUsNkNBQTZDLDRFQUE0RSxxREFBcUQ7QUFDOWYsNENBQTRDLDhCQUE4QixFQUFFLG1EQUFtRCxpREFBaUQsOENBQThDLEVBQUUsVUFBVSxzRkFBc0YsOEJBQThCLEVBQUUscUJBQXFCLDJCQUEyQixlQUFlLGlEQUFpRCxnQ0FBZ0M7QUFDaGYsYUFBYSxnQ0FBZ0Msc0NBQXNDLDhJQUE4SSxPQUFPLGdFQUFnRSw0Q0FBNEMsa0JBQWtCLDJCQUEyQiw4REFBOEQsdUNBQXVDO0FBQ3RlLFVBQVUsbUVBQW1FLDBCQUEwQix1Q0FBdUMsdUNBQXVDLG1FQUFtRSxHQUFHLCtDQUErQyxTQUFTLGVBQWUsOENBQThDLHVDQUF1Qyx1Q0FBdUM7QUFDOWIsb0JBQW9CLGVBQWUsb0NBQW9DLDJDQUEyQyx5QkFBeUIsNEJBQTRCLGVBQWUsaUNBQWlDLFdBQVcsRUFBRSxJQUFJLEVBQUUseUNBQXlDLHVDQUF1Qyx1Q0FBdUMseUJBQXlCLHNDQUFzQyxxQkFBcUIsSUFBSSxFQUFFLHNDQUFzQyxnREFBZ0Q7QUFDamhCLDBCQUEwQiw4REFBOEQsa0JBQWtCLHdCQUF3QixzRkFBc0YseUlBQXlJLG9CQUFvQixVQUFVLEVBQUUsOERBQThELGtCQUFrQixpQkFBaUI7QUFDbGUsMElBQTBJLEVBQUUsOENBQThDLDBHQUEwRyw4Q0FBOEMsbUJBQW1CLHlEQUF5RDtBQUM5WiwyRkFBMkYsMEJBQTBCLGdCQUFnQixhQUFhLFVBQVUsR0FBRyxhQUFhLE9BQU8sNERBQTRELG1CQUFtQixnQkFBZ0IscUJBQXFCLGVBQWUsbUVBQW1FLHVDQUF1QyxvQ0FBb0MsT0FBTyxVQUFVLG1CQUFtQixNQUFNO0FBQzllLHNEQUFzRCxrQ0FBa0Msa0JBQWtCLDREQUE0RCxrRkFBa0Ysa0ZBQWtGLG1GQUFtRiw2QkFBNkIsVUFBVTtBQUNwYyxxQkFBcUIsbUJBQW1CLGtCQUFrQixvQ0FBb0MsYUFBYSxtRUFBbUUsdUJBQXVCLGtEQUFrRCxnQkFBZ0IsNkJBQTZCLGtEQUFrRCxFQUFFLHVDQUF1QyxTQUFTO0FBQ3hZLG9DQUFvQyxFQUFFLHVCQUF1QixzQkFBc0Isa0JBQWtCLGtCQUFrQixlQUFlLFVBQVUsa0JBQWtCLGVBQWUseUNBQXlDLDJGQUEyRixFQUFFLGVBQWUsVUFBVSxrQkFBa0IsZUFBZSxpQkFBaUIsMkRBQTJELEVBQUUsa0NBQWtDLEdBQUcsRUFBRTtBQUN0ZSxZQUFZLGtCQUFrQiwwSkFBMEoscUJBQXFCLHdCQUF3QixtQ0FBbUMseURBQXlELDhHQUE4RyxrQkFBa0Isd0JBQXdCO0FBQ3pkLE1BQU0sd0RBQXdELHFCQUFxQix3QkFBd0Isc0VBQXNFLEVBQUUsRUFBRSxjQUFjLG1DQUFtQyxpQkFBaUIsYUFBYSxvREFBb0QsWUFBWSw2REFBNkQsMkRBQTJELFlBQVksZ0JBQWdCLGdEQUFnRDtBQUN4Z0IsNEJBQTRCLCtCQUErQixxRUFBcUUsbUNBQW1DLHlHQUF5Ryw0RUFBNEUsNEJBQTRCLG1GQUFtRixpQ0FBaUM7QUFDeGUsSUFBSSx3QkFBd0Isa0pBQWtKLDBCQUEwQixJQUFJLEVBQUUseUNBQXlDLHlDQUF5QywrRUFBK0UsRUFBRSx1QkFBdUIsNkZBQTZGLEVBQUU7QUFDdmUsMEJBQTBCLEVBQUUsa0NBQWtDLDhCQUE4QixvQkFBb0IsaUJBQWlCLG9CQUFvQiw4QkFBOEIsb0JBQW9CLHVCQUF1Qix3QkFBd0IsMkJBQTJCLHdCQUF3Qix5QkFBeUIsNERBQTRELG1CQUFtQiw4QkFBOEIsdUJBQXVCLGdCQUFnQixFQUFFO0FBQ3hkLENBQUMsVUFBVSxRQUFRLE9BQU8sbUJBQW1CLDRDQUE0QywwQ0FBMEMsNERBQTRELCtDQUErQyxjQUFjLHFDQUFxQyxnQkFBZ0I7QUFDalQsbUpBQW1KLG9DQUFvQyxXQUFXLHNFQUFzRSw0QkFBNEIsZ0JBQWdCLHdHQUF3RyxzRkFBc0Y7QUFDbGYsa0JBQWtCLDRCQUE0QixFQUFFLFFBQVEsVUFBVSxZQUFZLEVBQUUsOENBQThDLDJFQUEyRSxHQUFHLDRDQUE0QyxlQUFlLHdDQUF3QyxRQUFRLGFBQWEsd0hBQXdILElBQUksWUFBWSxXQUFXLFdBQVcsV0FBVyxXQUFXLFdBQVcsV0FBVyxXQUFXLFVBQVUsV0FBVyxZQUFZLFNBQVMsWUFBWSxVQUFVLFNBQVMsVUFBVSxVQUFVLFdBQVcsU0FBUyxTQUFTLFVBQVUsU0FBUyxVQUFVLFVBQVUsV0FBVyxXQUFXLFVBQVUsWUFBWSxXQUFXLFVBQVUsVUFBVSxXQUFXLFlBQVksWUFBWSxZQUFZLFlBQVksWUFBWSxZQUFZLFdBQVcsWUFBWSxVQUFVLFdBQVcsV0FBVyxZQUFZLFlBQVksWUFBWSxXQUFXLFVBQVUsWUFBWSxZQUFZLFdBQVcsVUFBVSxTQUFTLFlBQVksWUFBWSxZQUFZLFdBQVcsWUFBWSxVQUFVLFdBQVcsWUFBWSxZQUFZLFlBQVksV0FBVyxVQUFVLFlBQVksV0FBVyxXQUFXLFlBQVksWUFBWSxXQUFXLFlBQVksVUFBVSxXQUFXLFdBQVcsWUFBWSxZQUFZLFlBQVksV0FBVyxVQUFVLFlBQVksWUFBWSxXQUFXLFVBQVUsU0FBUyxZQUFZLFlBQVksWUFBWSxXQUFXLFlBQVksVUFBVSxZQUFZLFlBQVksWUFBWSxZQUFZLFdBQVcsVUFBVSxZQUFZLFdBQVcsVUFBVSxXQUFXLFdBQVcsVUFBVSw0QkFBNEIsV0FBVyxXQUFXLFdBQVcsWUFBWSxXQUFXLFdBQVcsVUFBVSxVQUFVLFVBQVUsVUFBVSxXQUFXLFVBQVU7QUFDOXNELFdBQVcsb0NBQW9DLHNDQUFzQyx3Q0FBd0MsV0FBVyw2QkFBNkIsb0JBQW9CLDZCQUE2QixJQUFJO0FBQzFOLDJGQUEyRixxQkFBcUIsNkJBQTZCLEdBQUcsRUFBRSxnQ0FBZ0Msc0JBQXNCLG1CQUFtQixZQUFZLFdBQVcsbUNBQW1DLEVBQUUsNEJBQTRCLDZFQUE2RSx1RkFBdUYsMkJBQTJCLGlCQUFpQjtBQUNuZ0IsVUFBVSxJQUFJLGVBQWUsSUFBSSxzSkFBc0osY0FBYyxxQkFBcUIsVUFBVSx1QkFBdUIsT0FBTyxzQkFBc0IsMkRBQTJELHlEQUF5RCx1QkFBdUIscUJBQXFCLG1DQUFtQyxzQkFBc0I7QUFDamYseUJBQXlCLElBQUksS0FBSyxPQUFPLHNEQUFzRCx1QkFBdUIsUUFBUSxrQkFBa0IsT0FBTyxtQkFBbUIsa0hBQWtILGVBQWUsaUJBQWlCLGdCQUFnQixzQkFBc0IsOERBQThELGlDQUFpQztBQUNqYywrQkFBK0Isd0ZBQXdGLHdGQUF3RixvQkFBb0Isc0JBQXNCLE1BQU0sa0VBQWtFLDJDQUEyQyxrQkFBa0IsS0FBSyxNQUFNLEdBQUcsRUFBRSxjQUFjLGNBQWMsT0FBTyxpQ0FBaUMsVUFBVSxrQkFBa0IsMEJBQTBCO0FBQ3hnQixtQkFBbUIsMEVBQTBFLFVBQVUsS0FBSywyREFBMkQsb0RBQW9ELHdCQUF3QixTQUFTLFlBQVksNEVBQTRFLHFDQUFxQyxFQUFFO0FBQzNYLGNBQWMsS0FBSyxrSUFBa0ksSUFBSSxxRkFBcUYsNEJBQTRCLGFBQWEsVUFBVSxXQUFXLE9BQU8sc0JBQXNCLG9CQUFvQixJQUFJLGlCQUFpQixzQ0FBc0MsSUFBSSxpQkFBaUIsMkNBQTJDLDRCQUE0QixpQkFBaUI7QUFDcmdCLDZEQUE2RCxJQUFJLFFBQVEsNEJBQTRCLGdEQUFnRCxFQUFFLDRCQUE0Qix3SUFBd0ksRUFBRSxnREFBZ0Qsb0RBQW9ELG1DQUFtQywwQ0FBMEMsRUFBRTtBQUNoZixjQUFjLGtEQUFrRCw4REFBOEQsRUFBRSxFQUFFLHVDQUF1QyxJQUFJLE1BQU0sZ0RBQWdELG1EQUFtRCxnREFBZ0QsRUFBRSw2QkFBNkIsV0FBVyw0REFBNEQsS0FBSyxpQ0FBaUMsNENBQTRDO0FBQzlmLE1BQU0sSUFBSSxNQUFNLGtEQUFrRCxhQUFhLDREQUE0RCwrRkFBK0Ysb0RBQW9ELEVBQUUsNkJBQTZCLFdBQVcsZ0VBQWdFLEtBQUssaUNBQWlDLG9EQUFvRCxhQUFhLElBQUksTUFBTTtBQUN6ZixhQUFhLEtBQUssWUFBWSxJQUFJLE1BQU0sMkJBQTJCLGFBQWEsK0JBQStCLG1DQUFtQyxjQUFjLGtDQUFrQyxFQUFFLHlDQUF5Qyx1RkFBdUYsRUFBRSxpQkFBaUIsbUJBQW1CLHlEQUF5RCxzQ0FBc0MsNkJBQTZCLCtDQUErQywwQkFBMEIsZ0JBQWdCLEdBQUcscURBQXFELGtCQUFrQjtBQUN6b0Isb0lBQW9JLE1BQU0sK0VBQStFLGtDQUFrQyxhQUFhLE1BQU0sd0VBQXdFLG1EQUFtRCxlQUFlO0FBQ3haLDZGQUE2Rix5RkFBeUYsd0VBQXdFLEdBQUcsR0FBRyxrRkFBa0YsOEJBQThCLGlCQUFpQiwwQ0FBMEMsTUFBTSxtQ0FBbUM7QUFDeGQsMEJBQTBCLGtCQUFrQixtREFBbUQsV0FBVyxhQUFhLEdBQUcsd0NBQXdDLG9EQUFvRCxFQUFFLDBEQUEwRCxvRUFBb0UsZ0NBQWdDLE9BQU8sNkRBQTZELGNBQWM7QUFDeGMsU0FBUyxFQUFFLCtCQUErQiw4REFBOEQsRUFBRSxvREFBb0QsT0FBTywrREFBK0QsSUFBSSxhQUFhLGdCQUFnQixjQUFjLGdFQUFnRSxjQUFjLG9CQUFvQjtBQUNyWCxpQ0FBaUMsY0FBYyxlQUFlLDRCQUE0QixXQUFXLEtBQUssV0FBVyxzREFBc0QsVUFBVSx1QkFBdUIsS0FBSyxtQ0FBbUMsY0FBYyxXQUFXLDZFQUE2RSxVQUFVLG9IQUFvSDtBQUN4ZCxTQUFTLGdCQUFnQixpVUFBaVUsVUFBVSxLQUFLLE1BQU07QUFDL1csbUJBQW1CLGVBQWUscUNBQXFDLFNBQVMsY0FBYyx3Q0FBd0Msc0xBQXNMLFVBQVUsUUFBUSxLQUFLLEtBQUssMkRBQTJELFdBQVcsS0FBSyxnRUFBZ0U7QUFDbmUsOElBQThJLGlCQUFpQixVQUFVLFdBQVcsc0RBQXNELHNFQUFzRSxlQUFlLEtBQUssWUFBWSw2Q0FBNkMsd0dBQXdHLFlBQVksY0FBYztBQUMvZiw4QkFBOEIsV0FBVyxLQUFLLHlCQUF5QixnQkFBZ0IsV0FBVyxnQkFBZ0IsMkJBQTJCLFdBQVcsS0FBSyxjQUFjLGlCQUFpQixTQUFTLGdCQUFnQiwySUFBMkksSUFBSSxLQUFLLDRCQUE0QixnQkFBZ0IsVUFBVSxRQUFRLElBQUk7QUFDM2Esc0lBQXNJLFNBQVMsY0FBYyxjQUFjLHdCQUF3Qix5QkFBeUIsT0FBTyx5Q0FBeUMsaUJBQWlCLDRCQUE0QiwrQkFBK0IsbUVBQW1FLDhEQUE4RDtBQUN6ZCwyQ0FBMkMsa0JBQWtCLHlDQUF5Qyx1SEFBdUgsVUFBVSxRQUFRLGVBQWUsSUFBSSw4QkFBOEIsSUFBSSx3REFBd0QsUUFBUSxLQUFLLFlBQVksV0FBVztBQUNoWSw4Q0FBOEMsK0pBQStKLDJGQUEyRixTQUFTLGdCQUFnQix3Q0FBd0MsVUFBVSxLQUFLLE1BQU0sZ0JBQWdCLGdCQUFnQixzQ0FBc0MsY0FBYyx3Q0FBd0M7QUFDMWYsMERBQTBELEdBQUcsUUFBUSxhQUFhLFlBQVksS0FBSyxTQUFTLHNEQUFzRCxRQUFRLFNBQVMsNEdBQTRHLHdDQUF3QyxJQUFJLFFBQVEsd0NBQXdDLG1CQUFtQiw0RkFBNEYsVUFBVTtBQUNwZixXQUFXLEtBQUssWUFBWSw4RkFBOEYscUdBQXFHLGdCQUFnQiwwQ0FBMEMsaUVBQWlFLDRCQUE0QiwyRkFBMkYsYUFBYSxrQkFBa0I7QUFDaGYsa0NBQWtDLFFBQVEsY0FBYyxLQUFLLDRCQUE0Qiw4Q0FBOEMsb0JBQW9CLGtCQUFrQixhQUFhLGdIQUFnSCxPQUFPLDBCQUEwQix1R0FBdUcsTUFBTSxNQUFNLElBQUksZ0RBQWdEO0FBQ2xmLE9BQU8saUVBQWlFLFNBQVMsU0FBUyx1QkFBdUIsb0VBQW9FLGtCQUFrQiw2REFBNkQsUUFBUSxXQUFXLEtBQUssT0FBTyxxSEFBcUgsb0JBQW9CO0FBQzVhLDZDQUE2QyxLQUFLLDBJQUEwSSxJQUFJLG1CQUFtQixrQkFBa0IsZ0JBQWdCLGdEQUFnRCxnREFBZ0Qsc0NBQXNDLFlBQVksVUFBVSxLQUFLLHNEQUFzRCxTQUFTLGdCQUFnQixXQUFXO0FBQ2hmLGtCQUFrQixjQUFjLGlJQUFpSSxRQUFRLGlCQUFpQixtR0FBbUcsV0FBVyxzQ0FBc0MsNENBQTRDLE1BQU0sWUFBWSxlQUFlLCtFQUErRSxXQUFXO0FBQ3JmLGdCQUFnQixjQUFjLGNBQWMsbUNBQW1DLG1DQUFtQyxTQUFTLGdCQUFnQixXQUFXLHVCQUF1QixjQUFjLDJIQUEySCwwQ0FBMEMsS0FBSyx1QkFBdUIsV0FBVyxLQUFLLFdBQVcsYUFBYSxvQ0FBb0MsUUFBUSxXQUFXLG1CQUFtQjtBQUM5ZSxpQkFBaUIsZ0JBQWdCLGNBQWMsY0FBYyxtQ0FBbUMsbUNBQW1DLFNBQVMsNkJBQTZCLDZCQUE2QixxREFBcUQsY0FBYyxrQ0FBa0MsRUFBRSx5Q0FBeUMsMEJBQTBCLFVBQVUsdURBQXVELEVBQUUsZ0JBQWdCLHdCQUF3QixnQkFBZ0I7QUFDM2UsbUNBQW1DLE9BQU8sR0FBRyxRQUFRLEdBQUcsY0FBYyxHQUFHLGtCQUFrQixHQUFHLGFBQWEsR0FBRyxnQkFBZ0IsR0FBRyxZQUFZLHVDQUF1QyxrRUFBa0Usc0JBQXNCLGlGQUFpRiwrREFBK0QsOEJBQThCLG9FQUFvRTtBQUM5ZixrQkFBa0Isc0VBQXNFLEVBQUUsdUJBQXVCLGVBQWUsbUJBQW1CLHlDQUF5QyxtQkFBbUIsK0NBQStDLDRCQUE0QixJQUFJLHVCQUF1QixPQUFPLG1CQUFtQixpQ0FBaUMsbUJBQW1CLG9EQUFvRCxVQUFVLFVBQVUsbURBQW1EO0FBQzlmLHdCQUF3QixJQUFJLHVCQUF1QixPQUFPLG1CQUFtQiw0Q0FBNEMsbUJBQW1CLCtDQUErQyx1Q0FBdUMsR0FBRyxJQUFJLHVFQUF1RSxpQkFBaUIseUNBQXlDLG1CQUFtQixnQkFBZ0IsR0FBRyx1QkFBdUIseUNBQXlDLG1CQUFtQixPQUFPLFNBQVM7QUFDbmYsc0JBQXNCLHlDQUF5QyxtQkFBbUIsT0FBTyxNQUFNLEdBQUcsb0JBQW9CLHlDQUF5QyxtQkFBbUIsbUJBQW1CLEdBQUcsMEJBQTBCLHlDQUF5QyxtQkFBbUIsT0FBTyxTQUFTLEdBQUcseUJBQXlCLHlDQUF5QyxtQkFBbUIsT0FBTyxNQUFNLEdBQUcsa0JBQWtCLHlDQUF5QyxtQkFBbUIsTUFBTSxHQUFHO0FBQzdlLEdBQUcsOEZBQThGLDJCQUEyQixjQUFjLEdBQUcsc0JBQXNCLDhFQUE4RSxtQ0FBbUMsY0FBYyxHQUFHLHFCQUFxQiw4RUFBOEUsa0NBQWtDLGNBQWMsR0FBRyx5QkFBeUI7QUFDcGQsaUJBQWlCLHdCQUF3QixHQUFHLDJCQUEyQiw0RUFBNEUsd0JBQXdCLEdBQUcsd0JBQXdCLHlDQUF5QyxtQkFBbUIsU0FBUyxHQUFHLHVCQUF1Qix5Q0FBeUMsbUJBQW1CLE1BQU0sR0FBRyxnQ0FBZ0MsV0FBVyxnRUFBZ0U7QUFDcmQsQ0FBQztBQUNELDRCQUE0Qix3R0FBd0csVUFBVSx5QkFBeUIsK0VBQStFLHdCQUF3Qiw4RUFBOEUsbUJBQW1CLHdFQUF3RSxrQkFBa0I7QUFDemMsU0FBUyx3QkFBd0IsNEVBQTRFLHVCQUF1QiwwRUFBMEUsNkJBQTZCLHNGQUFzRiwyQkFBMkIsa0ZBQWtGLHVCQUF1QjtBQUNyYyxTQUFTLFdBQVcsOERBQThELE9BQU8sK0hBQStILHdCQUF3Qiw0RUFBNEUsdUJBQXVCLDJFQUEyRSxrQkFBa0Isb0VBQW9FO0FBQ3BmLGFBQWEsb0VBQW9FLE9BQU8sd0lBQXdJLDJCQUEyQixxRkFBcUYsMEJBQTBCLG9GQUFvRixxQkFBcUI7QUFDbmQsaUNBQWlDLEVBQUUseURBQXlELHFCQUFxQixVQUFVLHVCQUF1QixpR0FBaUcsTUFBTSxFQUFFLGtFQUFrRSwrREFBK0Qsb0RBQW9ELFdBQVcsT0FBTyxtQ0FBbUM7QUFDcmUsS0FBSyxjQUFjLFdBQVcsS0FBSyxLQUFLLElBQUksaUJBQWlCLGlCQUFpQixrQ0FBa0MsS0FBSyxvQkFBb0IsWUFBWSxRQUFRLFFBQVEsS0FBSywwRUFBMEUsY0FBYyxLQUFLLG9CQUFvQixZQUFZLElBQUksOEJBQThCLE9BQU8sdUJBQXVCLFNBQVMsd0RBQXdELGNBQWM7QUFDdGIsZ0JBQWdCLGlIQUFpSCxLQUFLLGtDQUFrQyxVQUFVLFVBQVUsK0JBQStCLFFBQVEsY0FBYyxzQkFBc0IsSUFBSSxNQUFNLFFBQVEsY0FBYyxzQkFBc0IsSUFBSSxNQUFNLG1CQUFtQixRQUFRLEtBQUssWUFBWSxLQUFLO0FBQ3hYLHFCQUFxQix3Q0FBd0MsU0FBUyxjQUFjLHNGQUFzRixnQkFBZ0IseUhBQXlILHVCQUF1Qiw2REFBNkQsUUFBUSxZQUFZLDBEQUEwRDtBQUNyZCxJQUFJLHlCQUF5QixPQUFPLFVBQVUseURBQXlELGdCQUFnQixhQUFhLFFBQVEsV0FBVywyRUFBMkUsaUNBQWlDLGNBQWMsc0RBQXNELCtEQUErRCxrQkFBa0IsNEJBQTRCLHVCQUF1QixNQUFNO0FBQ2pkLDJDQUEyQywrQ0FBK0Msb0ZBQW9GLGVBQWUsaUZBQWlGLFdBQVcsU0FBUyxRQUFRLGNBQWMsMkpBQTJKO0FBQ25kLGdDQUFnQyxRQUFRLG1EQUFtRCx3R0FBd0csU0FBUyx1QkFBdUIsUUFBUSxXQUFXLCtDQUErQyw4SUFBOEksMEJBQTBCLGNBQWM7QUFDM2QsZUFBZSxjQUFjLGdCQUFnQix1RkFBdUYsY0FBYyxzRUFBc0Usb0JBQW9CLHNHQUFzRyxvSEFBb0gsVUFBVTtBQUNoZCxTQUFTLDZFQUE2RSwyR0FBMkcsVUFBVSx3Q0FBd0MsZ0RBQWdELGtMQUFrTCxVQUFVO0FBQy9kLFFBQVEsU0FBUyxvSkFBb0osVUFBVSxrREFBa0QsY0FBYyxrREFBa0QsWUFBWSwwRkFBMEYsVUFBVSxrREFBa0QsZ0JBQWdCLGNBQWMsV0FBVztBQUM1ZSw4S0FBOEssNEZBQTRGLDJDQUEyQyxlQUFlLCtEQUErRDtBQUNuWSwwS0FBMEssV0FBVyxxQkFBcUIsbUJBQW1CLHlCQUF5QixvREFBb0QsT0FBTyxjQUFjLG1EQUFtRCxtREFBbUQsUUFBUTtBQUM3YSxjQUFjLGNBQWMsNEJBQTRCLGtCQUFrQixxQ0FBcUMsNkZBQTZGLEVBQUUsb0NBQW9DLDhEQUE4RCxjQUFjLE9BQU8sVUFBVSxXQUFXLGVBQWUsOEJBQThCLFlBQVksNkJBQTZCLFdBQVcsdUJBQXVCLHlDQUF5QztBQUMzZixhQUFhLDZCQUE2QixpQkFBaUIsc0JBQXNCLDhCQUE4Qix3Q0FBd0MsbURBQW1ELG1DQUFtQyw0QkFBNEIsR0FBRyxrQkFBa0IseUVBQXlFLFFBQVEsY0FBYyxzREFBc0QsSUFBSSxRQUFRLFNBQVM7QUFDeGMsMkNBQTJDLGlDQUFpQyw4Q0FBOEMsc0NBQXNDLDhCQUE4QixvQkFBb0IsaUdBQWlHLElBQUksbUdBQW1HLCtDQUErQyw4QkFBOEI7QUFDdmUscUNBQXFDLGNBQWMsT0FBTyxrQkFBa0IsOEJBQThCLG9CQUFvQiwwREFBMEQsSUFBSSxvREFBb0QsMEJBQTBCLG1DQUFtQyxvQkFBb0IsWUFBWSxXQUFXLHNCQUFzQiw2Q0FBNkMscUJBQXFCLHlEQUF5RCxHQUFHLE9BQU8sb0JBQW9CLGNBQWM7QUFDcmhCLGdCQUFnQix3QkFBd0IsV0FBVyxjQUFjLGtFQUFrRSxnQkFBZ0IsS0FBSyxnSkFBZ0osbUJBQW1CLGdCQUFnQix1Q0FBdUMsUUFBUSxFQUFFLG1GQUFtRjtBQUMvYyxpRkFBaUYsZUFBZSxpSEFBaUgsTUFBTSxNQUFNLG9DQUFvQyxvQkFBb0IsK0NBQStDLG1CQUFtQixPQUFPO0FBQzlWLCtJQUErSSxxQkFBcUIsc0RBQXNELHVCQUF1QixtQ0FBbUMsaUJBQWlCLHlCQUF5QixJQUFJLGlDQUFpQyxtQkFBbUIsMkNBQTJDLG1CQUFtQix1REFBdUQ7QUFDM2UsdUJBQXVCLFNBQVMsd0NBQXdDLHlEQUF5RCx5Q0FBeUMsdUJBQXVCLGNBQWMsRUFBRSxtREFBbUQsNEJBQTRCLDZDQUE2QyxTQUFTLFFBQVEsV0FBVyw0RUFBNEUsY0FBYztBQUNuYyxpRkFBaUYsaUNBQWlDLHdOQUF3TixtREFBbUQsaURBQWlELDBDQUEwQztBQUN4ZCxDQUFDLGtEQUFrRCxjQUFjLDBCQUEwQixtQ0FBbUMsVUFBVSxtQ0FBbUMsdURBQXVELGdCQUFnQixFQUFFLG1CQUFtQix5Q0FBeUMsZ0JBQWdCLHlCQUF5QiwwREFBMEQsMkNBQTJDLG9DQUFvQyxFQUFFO0FBQ3BlLDBCQUEwQixxQkFBcUIsOEdBQThHLDZDQUE2QyxTQUFTLHVEQUF1RCxpRkFBaUYsaURBQWlELGlFQUFpRSxzQkFBc0IsVUFBVTtBQUM3ZSxJQUFJLE9BQU8sa0NBQWtDLDBCQUEwQixRQUFRLDZCQUE2QixZQUFZLFlBQVksbUJBQW1CLHNFQUFzRSxxRUFBcUUsZ0JBQWdCLDBCQUEwQixtQ0FBbUMsaUVBQWlFO0FBQ2hiLCtDQUErQyxRQUFRLFdBQVcsWUFBWSxxREFBcUQsa0JBQWtCLGdNQUFnTSxrQkFBa0IsMENBQTBDLG1FQUFtRTtBQUNwZCxxREFBcUQsZ0JBQWdCLHVDQUF1QyxVQUFVLEtBQUssUUFBUSxXQUFXLFlBQVksbUVBQW1FLGVBQWUsdUNBQXVDLG1CQUFtQixrQkFBa0IsdUJBQXVCLDRCQUE0QixvQkFBb0IsdUNBQXVDLGtFQUFrRTtBQUN4ZSx5QkFBeUIsbUJBQW1CLDhCQUE4QixxQkFBcUIsb0JBQW9CLGNBQWMsaUJBQWlCLDBFQUEwRSxrQkFBa0IsdUlBQXVJLGtEQUFrRCxVQUFVLHlDQUF5QztBQUMxZCxVQUFVLHVDQUF1QyxrQ0FBa0MsdUNBQXVDLHVEQUF1RCw2SUFBNkksZ0tBQWdLLHFCQUFxQjtBQUNuZixpRUFBaUUsMEJBQTBCLGlDQUFpQyxRQUFRLElBQUksRUFBRSwyQkFBMkIsZ0JBQWdCLG1EQUFtRCxZQUFZLElBQUksNkVBQTZFLFVBQVUsNkJBQTZCLGlCQUFpQixjQUFjLGlEQUFpRCxhQUFhLDBDQUEwQztBQUNuZixnRkFBZ0YsZ0JBQWdCLHVEQUF1RCw2QkFBNkIseUJBQXlCLGdCQUFnQix1REFBdUQsNkJBQTZCLEVBQUUsNERBQTRELHNCQUFzQiwwRUFBMEU7QUFDL2MsNkJBQTZCLDRCQUE0QiwyQkFBMkIsZ0NBQWdDLG1DQUFtQyxFQUFFLHVDQUF1QyxnQ0FBZ0MsdUJBQXVCLEVBQUUsbUNBQW1DLDhCQUE4QixFQUFFLGVBQWUsbUJBQW1CLHdDQUF3Qyx3REFBd0QseUJBQXlCO0FBQ3ZkLGtCQUFrQixHQUFHLHVCQUF1QixVQUFVLHdCQUF3QixpQ0FBaUMsMkJBQTJCLEVBQUUsZ0NBQWdDLFNBQVMseUNBQXlDLEVBQUUsbUNBQW1DLEVBQUUseUJBQXlCLG9EQUFvRCwyQkFBMkIsaUJBQWlCLHlCQUF5QixzQ0FBc0MscUJBQXFCLHFCQUFxQjtBQUN2ZSxhQUFhLGdEQUFnRCxrREFBa0QsR0FBRyxhQUFhLG1CQUFtQixtREFBbUQsMEJBQTBCLDJFQUEyRSxvRUFBb0UsMEJBQTBCLHdCQUF3Qiw2QkFBNkIsK0NBQStDLGtCQUFrQjtBQUM5ZixHQUFHLGNBQWMsdUJBQXVCLDZCQUE2QixpQkFBaUIsaUJBQWlCLHNCQUFzQiwyQkFBMkIsZUFBZSx5QkFBeUIseUJBQXlCLHFDQUFxQyxxQ0FBcUMsaUJBQWlCLGdCQUFnQixzQkFBc0Isa0JBQWtCLDhEQUE4RCxtQkFBbUIsa0NBQWtDLGlCQUFpQjtBQUNoZixVQUFVLDRCQUE0Qiw0REFBNEQsb0RBQW9ELDZCQUE2Qiw2Q0FBNkMsZ0NBQWdDLHVCQUF1QixvQkFBb0IsNEJBQTRCLFNBQVMsMEJBQTBCLG9CQUFvQiw0Q0FBNEMsYUFBYSxXQUFXLHFDQUFxQztBQUN2ZSxrR0FBa0csaUJBQWlCLG1CQUFtQiw2Q0FBNkMsY0FBYyxvQkFBb0IsaUJBQWlCLDBCQUEwQiwyQ0FBMkMsNkJBQTZCLEtBQUssS0FBSyxpREFBaUQsd0JBQXdCLFdBQVcscURBQXFELFlBQVkscUJBQXFCO0FBQzVmLGFBQWEscUJBQXFCLGtDQUFrQyxpQkFBaUIsb0JBQW9CLGNBQWMsNEJBQTRCLG9DQUFvQyxTQUFTLGlCQUFpQixxREFBcUQsNEJBQTRCLG9DQUFvQyxTQUFTLG9CQUFvQixpQkFBaUIsMEJBQTBCLHNDQUFzQyw2Q0FBNkMsS0FBSztBQUN0ZSxPQUFPLGFBQWEscUJBQXFCLDZCQUE2QixtQ0FBbUMscUNBQXFDLDJGQUEyRixvQkFBb0IsbUNBQW1DLHVCQUF1QixTQUFTLEtBQUssV0FBVyxVQUFVLEtBQUssNEJBQTRCLDZEQUE2RCxhQUFhLG1CQUFtQixtQkFBbUI7QUFDM2Usc0JBQXNCLHlCQUF5QixpQkFBaUIsd0JBQXdCLFdBQVcsNEJBQTRCLG9DQUFvQywyQkFBMkIsNEJBQTRCLHNCQUFzQix5Q0FBeUMsYUFBYSwwQkFBMEIsOEJBQThCLGlDQUFpQywwQkFBMEIsa0JBQWtCLHNDQUFzQyxrQ0FBa0M7QUFDbmYsWUFBWSxpREFBaUQsa0NBQWtDLGtFQUFrRSxnREFBZ0QsY0FBYywwQkFBMEIsc0JBQXNCLG1EQUFtRCxvRUFBb0UseUJBQXlCLG9DQUFvQyxhQUFhLDBCQUEwQjtBQUMxZSxhQUFhLHNHQUFzRyxrQkFBa0IsNkJBQTZCLHFCQUFxQixjQUFjLFNBQVMsdUNBQXVDLFlBQVksV0FBVyxLQUFLLGtCQUFrQiw4SkFBOEosV0FBVztBQUM1YyxZQUFZLG1CQUFtQix5QkFBeUIsMEJBQTBCLDRCQUE0QixhQUFhLHNCQUFzQixzQkFBc0IseUZBQXlGO0FBQ2hRLHdDQUF3QyxvQkFBb0Isa0RBQWtELEtBQUssb0NBQW9DLG1DQUFtQyx5Q0FBeUMsOElBQThJLHFCQUFxQix1QkFBdUIsa0JBQWtCLDJDQUEyQztBQUMxZCxnSUFBZ0ksc0RBQXNELDZCQUE2Qix1QkFBdUIsMkRBQTJELGNBQWMscUNBQXFDLHlCQUF5Qix1Q0FBdUMseUJBQXlCLDRCQUE0QjtBQUM3YyxPQUFPLHlDQUF5QyxlQUFlLHNEQUFzRCxnQkFBZ0IsNEVBQTRFLGlEQUFpRCxrRUFBa0UsaUVBQWlFLDJEQUEyRDtBQUNoYyxtQkFBbUIsb0JBQW9CLGdCQUFnQiwyREFBMkQsMkJBQTJCLGtCQUFrQixzREFBc0QsZUFBZSxhQUFhLGlCQUFpQixtQkFBbUIsbUJBQW1CLEVBQUUsdUJBQXVCLDBCQUEwQixpREFBaUQsNEJBQTRCLElBQUksc0NBQXNDLFNBQVMscUJBQXFCO0FBQ2hmLCtCQUErQix1QkFBdUIseUJBQXlCLG9CQUFvQix1QkFBdUIsOEJBQThCLHlCQUF5QiwrQ0FBK0MsNkJBQTZCLElBQUksd0JBQXdCLDJCQUEyQixnQ0FBZ0MsSUFBSSx5QkFBeUIsU0FBUyxxQkFBcUIsV0FBVyxzQ0FBc0MsNEJBQTRCLDRCQUE0QjtBQUN4Zix3QkFBd0IsZ0JBQWdCLDRCQUE0QiwyREFBMkQsT0FBTyxxQ0FBcUMsOENBQThDLCtDQUErQyxnQkFBZ0IsOEJBQThCLFNBQVMsS0FBSyxnQkFBZ0IsbUJBQW1CLDRCQUE0QiwrSUFBK0k7QUFDbGhCLE1BQU0sZUFBZSxnQkFBZ0IsOENBQThDLHFCQUFxQiwySUFBMkkseUNBQXlDLHlDQUF5Qyx5Q0FBeUMsc0NBQXNDLGlFQUFpRSx1QkFBdUI7QUFDNWUscUJBQXFCLG1HQUFtRyxzRkFBc0YsT0FBTywrQkFBK0IsNkJBQTZCLGtCQUFrQixnSEFBZ0gsVUFBVSx5QkFBeUIsYUFBYSxjQUFjLGlDQUFpQyxjQUFjLGNBQWMscUNBQXFDLDhEQUE4RDtBQUNqbkIsdUZBQXVGLElBQUksb0VBQW9FLHNHQUFzRyxJQUFJLHNFQUFzRSxxQ0FBcUMsRUFBRSxjQUFjLE1BQU0sc0dBQXNHO0FBQ2hmLG1DQUFtQyxrQ0FBa0MsNEJBQTRCLDJCQUEyQiw0QkFBNEIsYUFBYSxrQkFBa0Isd0ZBQXdGLDhDQUE4Qyx3SkFBd0osRUFBRTtBQUN2ZCx3QkFBd0IsbUJBQW1CLG1CQUFtQixVQUFVLEVBQUUsd0ZBQXdGLFVBQVUsRUFBRSxpQkFBaUIsOENBQThDLHFCQUFxQixTQUFTLDREQUE0RCx3REFBd0QsMkRBQTJELG1CQUFtQixnQ0FBZ0M7QUFDN2UsV0FBVyxVQUFVLG9CQUFvQixrQkFBa0Isc0JBQXNCLDBCQUEwQixrQkFBa0IscUJBQXFCLE1BQU0seUlBQXlJLDRJQUE0SSx1QkFBdUIsOEJBQThCLFVBQVU7QUFDNWUsMkJBQTJCLGlDQUFpQyxzRUFBc0UseUdBQXlHLHdCQUF3QixzQkFBc0IsY0FBYyxLQUFLLEVBQUUsS0FBSyxpQkFBaUIsa0RBQWtELGlFQUFpRSx5REFBeUQscUJBQXFCO0FBQ3JnQixjQUFjLDJDQUEyQyx1QkFBdUIsNkVBQTZFLFdBQVcsRUFBRSxvQ0FBb0MsV0FBVyxFQUFFLGdDQUFnQyx5QkFBeUIsaUJBQWlCLGdDQUFnQyx5QkFBeUIsaUJBQWlCLEtBQUssS0FBSyxFQUFFLG9CQUFvQix5QkFBeUIsdUJBQXVCLHdCQUF3Qix5QkFBeUIseUJBQXlCO0FBQ3pnQix3QkFBd0Isa0JBQWtCLHdEQUF3RCxpQkFBaUIscU1BQXFNLHdCQUF3QixhQUFhLGtCQUFrQixnQkFBZ0IseUVBQXlFO0FBQ3hjLHdMQUF3TCxtQkFBbUIsTUFBTSxrQkFBa0I7QUFDbk8sOEdBQThHLHVCQUF1QixtQkFBbUIsWUFBWSxxQkFBcUIsaUJBQWlCLEtBQUssb0VBQW9FLFFBQVEsV0FBVyxvQkFBb0IsY0FBYyxxQkFBcUIsRUFBRSxNQUFNLHFCQUFxQixxQkFBcUIsRUFBRSxhQUFhLHFCQUFxQixFQUFFLDRDQUE0QztBQUNqZSxLQUFLLHdDQUF3QyxFQUFFLHlCQUF5QixPQUFPLDRIQUE0SCxJQUFJLCtFQUErRSxhQUFhLHFCQUFxQix1RUFBdUUsc0VBQXNFLHNCQUFzQjtBQUNuZSxTQUFTLGlCQUFpQix1QkFBdUIsc0JBQXNCLHNCQUFzQixTQUFTLGtCQUFrQixzQkFBc0Isd0JBQXdCLHlEQUF5RCx5QkFBeUIsVUFBVSxrQ0FBa0MsNEVBQTRFLGtCQUFrQixNQUFNLGdGQUFnRjtBQUN4ZCxNQUFNLG1DQUFtQyxrQ0FBa0MsZ0NBQWdDLGVBQWUsU0FBUyx3QkFBd0Isb0RBQW9ELDRGQUE0RixnR0FBZ0csZ0dBQWdHO0FBQzNlLHlPQUF5Tyw0QkFBNEIsbURBQW1ELFNBQVMsb0JBQW9CLHdEQUF3RCwyQkFBMkIsU0FBUyx1QkFBdUIsaUJBQWlCLGlCQUFpQix3QkFBd0I7QUFDbGdCLG1CQUFtQixRQUFRLDhGQUE4RiwwQkFBMEIsd0NBQXdDLGtEQUFrRCw4Q0FBOEMsbUVBQW1FLDJCQUEyQixvQkFBb0IseUZBQXlGO0FBQ3RlLEVBQUUsaUlBQWlJLFdBQVcsT0FBTyx3QkFBd0IsSUFBSSxvQkFBb0IsNEJBQTRCLDRCQUE0QixjQUFjLGNBQWMsbURBQW1ELHdDQUF3QyxpQkFBaUIsd0JBQXdCLHVDQUF1Qyw4QkFBOEIsV0FBVztBQUM3ZSx5Q0FBeUMsOEVBQThFLG9DQUFvQyxJQUFJLGVBQWUsa0NBQWtDLHFDQUFxQyxFQUFFLHlCQUF5QixvREFBb0QsRUFBRSxzREFBc0QsSUFBSSxFQUFFLGtDQUFrQyxpR0FBaUc7QUFDcmdCLDJDQUEyQyxlQUFlLHlEQUF5RCxtQ0FBbUMsdUhBQXVILHFIQUFxSCxvRkFBb0YsU0FBUywyQkFBMkI7QUFDMWYsaUNBQWlDLDhJQUE4SSx5R0FBeUcsa0dBQWtHLDRCQUE0QjtBQUN0WixTQUFTLG9DQUFvQyw2Q0FBNkMsbU9BQW1PLHVCQUF1Qix5RUFBeUUsMEJBQTBCLG1EQUFtRDtBQUMxZSxxREFBcUQsa0NBQWtDLGFBQWEsa0lBQWtJLEVBQUUsU0FBUyw0QkFBNEIsTUFBTSwwRkFBMEYsb0NBQW9DLGdEQUFnRCxXQUFXO0FBQzVjLHdVQUF3VSwrQkFBK0IsZ0lBQWdJO0FBQ3ZlLHNCQUFzQixxQ0FBcUMsV0FBVyw4REFBOEQsbUJBQW1CLDZDQUE2QyxtQkFBbUIsMkJBQTJCLGNBQWMsY0FBYyxtQkFBbUIsa0JBQWtCLGlCQUFpQixvREFBb0QsUUFBUSxtREFBbUQsUUFBUSxRQUFRLDBCQUEwQjtBQUM3ZCx3QkFBd0IsUUFBUSxRQUFRLFFBQVEsUUFBUSxRQUFRLHNCQUFzQixlQUFlLDhCQUE4Qiw0RkFBNEYsMkxBQTJMLHVGQUF1RjtBQUNqZiwrQkFBK0IsVUFBVSx1QkFBdUIsZUFBZSwwRkFBMEYsbUJBQW1CLDZEQUE2RCxrQkFBa0IsUUFBUSw0QkFBNEIseUZBQXlGLGtCQUFrQixvQ0FBb0MsY0FBYyxVQUFVLHVCQUF1QjtBQUM3ZSx5TUFBeU0sZ0JBQWdCLHFCQUFxQixtQkFBbUIsYUFBYSw4QkFBOEIsd0JBQXdCLDhCQUE4QiwyQkFBMkIsdUJBQXVCLEVBQUUsb0JBQW9CO0FBQzFhLHFHQUFxRyxZQUFZLHdFQUF3RSw2Q0FBNkMsU0FBUyxRQUFRLDhCQUE4Qiw4QkFBOEIsa0RBQWtELEVBQUUseUJBQXlCLG1CQUFtQixtQkFBbUIsRUFBRSxFQUFFLFNBQVMsa0RBQWtEO0FBQ3JlLDhHQUE4RyxFQUFFLGdCQUFnQixnQkFBZ0IsOEJBQThCLFFBQVEsV0FBVyw0REFBNEQsU0FBUyxrQkFBa0Isc0RBQXNELGNBQWMsRUFBRSw0QkFBNEIsNERBQTRELHNDQUFzQztBQUM1ZCxlQUFlLGdCQUFnQixlQUFlLGlCQUFpQiw0QkFBNEIsd0JBQXdCLFNBQVMsRUFBRSxpQkFBaUIsMkJBQTJCLGNBQWMsU0FBUyxnQ0FBZ0Msc0RBQXNELE1BQU0sNEVBQTRFLHVDQUF1QyxLQUFLLHlDQUF5QyxJQUFJLGdCQUFnQixJQUFJLEtBQUssZUFBZTtBQUMxZSxLQUFLLEdBQUcsSUFBSSxZQUFZLGdCQUFnQixVQUFVLEtBQUssUUFBUSxLQUFLLEtBQUssd0dBQXdHLDhDQUE4QyxjQUFjLGtFQUFrRSx1QkFBdUIsaUlBQWlJLFNBQVM7QUFDaGQsMkNBQTJDLFNBQVMsb0RBQW9ELGNBQWMsMEJBQTBCLGtCQUFrQixhQUFhLGNBQWMsMEJBQTBCLGtCQUFrQixXQUFXLGtCQUFrQix1REFBdUQsd0JBQXdCLDBCQUEwQixFQUFFLE9BQU87QUFDeFgsU0FBUyxjQUFjLDZDQUE2QyxPQUFPLG1DQUFtQyxjQUFjLDBHQUEwRyxzREFBc0QsZUFBZSxxREFBcUQsSUFBSSxlQUFlLElBQUksMkJBQTJCLFFBQVEsSUFBSSxrQkFBa0I7QUFDaGIsd0dBQXdHLGdCQUFnQixPQUFPLDhMQUE4TCxrQkFBa0Isa0NBQWtDLDJCQUEyQixrQkFBa0IsNEJBQTRCLGVBQWUsb0NBQW9DO0FBQzdlLFdBQVcsaUJBQWlCLFdBQVcsZ0JBQWdCLG9FQUFvRSxjQUFjLHVDQUF1QyxvQkFBb0IsZUFBZSx1QkFBdUI7QUFDMU8sb0hBQW9ILHlCQUF5QixjQUFjLHFEQUFxRCxnRUFBZ0UsRUFBRSxFQUFFLGdCQUFnQiw4QkFBOEIsY0FBYyw0Q0FBNEMsNkJBQTZCLG9CQUFvQjtBQUM3YSwyQkFBMkIsRUFBRSx3QkFBd0IsZ0JBQWdCLDBFQUEwRSw4R0FBOEcsaUNBQWlDLGtEQUFrRCxpQ0FBaUMsbUJBQW1CLCtEQUErRDtBQUNuYyw2RUFBNkUsdVVBQXVVLEVBQUUsNkJBQTZCLG1CQUFtQix5QkFBeUI7QUFDL2QsQ0FBQyxTQUFTLHNCQUFzQixnSUFBZ0ksK0JBQStCLE1BQU0sb0JBQW9CLCtCQUErQixrREFBa0Qsb0JBQW9CLDRCQUE0Qiw2REFBNkQsZ0RBQWdELFdBQVcsbURBQW1EO0FBQ3JnQixjQUFjLDJCQUEyQixnQkFBZ0IsNkJBQTZCLEVBQUUsS0FBSyxFQUFFLGNBQWMsZUFBZSw2QkFBNkIsbURBQW1ELDJDQUEyQyx5QkFBeUIsMkRBQTJELElBQUk7QUFDL1UsZ0VBQWdFLEVBQUUsd0NBQXdDLGlDQUFpQyxFQUFFLHlEQUF5RCxzQkFBc0Isd0RBQXdELEVBQUUsRUFBRSxFQUFFLCtCQUErQixxQ0FBcUMsa0ZBQWtGLHVCQUF1QixFQUFFLGNBQWMsY0FBYztBQUNyZSxZQUFZLG1EQUFtRCxrQkFBa0IsdUJBQXVCLDhWQUE4VixTQUFTLGNBQWMsY0FBYyxjQUFjO0FBQ3pmLHVDQUF1QyxlQUFlLDZCQUE2QixtQkFBbUIsNkJBQTZCLDRCQUE0QixFQUFFLGNBQWMsYUFBYSx1QkFBdUIsMENBQTBDLDhDQUE4Qyw2RkFBNkYsY0FBYyxvRkFBb0YsYUFBYTtBQUN2ZixlQUFlLHlCQUF5Qiw2QkFBNkIsK0NBQStDLGlCQUFpQixFQUFFLEVBQUUsNkNBQTZDLDBDQUEwQyxtQ0FBbUMsbUlBQW1JLGtGQUFrRixFQUFFLDRCQUE0QixjQUFjO0FBQ3BnQix1QkFBdUIsTUFBTSxzQkFBc0IsZ0RBQWdELEVBQUUsY0FBYyxvQkFBb0IsZ0NBQWdDLDBDQUEwQyw4QkFBOEIsT0FBTyxxQ0FBcUMscUJBQXFCLHNDQUFzQyxPQUFPLFdBQVcsb0ZBQW9GLFNBQVM7QUFDcmMsZ0NBQWdDLFVBQVUsNkJBQTZCLHdGQUF3RiwwQ0FBMEMscUZBQXFGLHdIQUF3SCwyQkFBMkIsY0FBYyxnQ0FBZ0M7QUFDL2QsMkNBQTJDLFlBQVksRUFBRSxXQUFXLFlBQVksMkNBQTJDLHdIQUF3SCw4R0FBOEcsU0FBUywwQkFBMEIsZUFBZSxtQ0FBbUMsaUJBQWlCLEVBQUUsY0FBYyxtQkFBbUI7QUFDMWUsWUFBWSxhQUFhLGtFQUFrRSxzQkFBc0IsRUFBRSxzQkFBc0IseUZBQXlGLHlCQUF5QixvTkFBb04sY0FBYyw0QkFBNEI7QUFDemYsNkRBQTZELElBQUksaUpBQWlKLElBQUksaUJBQWlCLGNBQWMsRUFBRSxnQ0FBZ0Msc0NBQXNDLGlCQUFpQixjQUFjLHlCQUF5QixTQUFTLHNDQUFzQztBQUNwYSxxQkFBcUIsRUFBRSxtQ0FBbUMsaUNBQWlDLGVBQWUsMENBQTBDLDZCQUE2Qiw0QkFBNEIsRUFBRSxjQUFjLDBDQUEwQyxPQUFPLG1CQUFtQix5Q0FBeUMsOEJBQThCLG9CQUFvQixZQUFZLG1CQUFtQixJQUFJLFlBQVksbUJBQW1CLHdCQUF3Qiw4QkFBOEI7QUFDcGYsc0JBQXNCLFVBQVUsNkhBQTZILG1FQUFtRSxTQUFTLDhDQUE4QyxLQUFLLFVBQVUsNkJBQTZCLGtDQUFrQyxjQUFjLCtCQUErQixvRkFBb0YsRUFBRTtBQUN4ZSxLQUFLLFFBQVEsT0FBTyx3QkFBd0IsR0FBRyxNQUFNLDhCQUE4QixVQUFVLDRDQUE0QywyQkFBMkIsY0FBYyxXQUFXLGdCQUFnQixrQkFBa0IsaUVBQWlFLDBEQUEwRCwwQkFBMEIsK0RBQStELGFBQWEsNkJBQTZCLGdCQUFnQiwwQ0FBMEM7QUFDdmhCLGdCQUFnQiw4QkFBOEIsNkJBQTZCLHlCQUF5QixpQkFBaUIsdUNBQXVDLDZEQUE2RCx5QkFBeUIscUZBQXFGLDJKQUEySixjQUFjO0FBQ2hmLGtFQUFrRSxhQUFhLGlFQUFpRSxzRkFBc0YsYUFBYSxrREFBa0QsNEZBQTRGLGNBQWMsNEJBQTRCLGlFQUFpRTtBQUM1ZSxZQUFZLHNCQUFzQixlQUFlLHVDQUF1QyxnQkFBZ0IseUdBQXlHLEtBQUssS0FBSyxLQUFLLE1BQU0sTUFBTSxNQUFNLEtBQUssZ0ZBQWdGLHlCQUF5QixtRkFBbUYsRUFBRSx3Q0FBd0M7QUFDN2QsdUJBQXVCLGlCQUFpQixvREFBb0Qsd0RBQXdELHVCQUF1QixLQUFLLDZDQUE2QyxnQ0FBZ0MsT0FBTyxrREFBa0QsU0FBUyxnQkFBZ0IsK0JBQStCLHFCQUFxQixFQUFFLDhCQUE4Qiw4QkFBOEIsY0FBYztBQUMvYyxNQUFNLGdCQUFnQiwyQ0FBMkMsWUFBWSxRQUFRLEtBQUssc0lBQXNJLFdBQVcsY0FBYyxzQkFBc0IsZUFBZSxzRUFBc0UsV0FBVyxJQUFJLGVBQWUsb0JBQW9CLGdCQUFnQjtBQUN0YSxJQUFJLHdCQUF3QixVQUFVLGdDQUFnQyx5QkFBeUIsbUJBQW1CLG1CQUFtQixFQUFFLEVBQUUsdUNBQXVDLHNCQUFzQixVQUFVLElBQUksRUFBRSw4QkFBOEIsc0JBQXNCLFVBQVUsSUFBSSxFQUFFLHVCQUF1Qiw0QkFBNEIscURBQXFELHVCQUF1QixVQUFVLEVBQUUsRUFBRSw4REFBOEQ7QUFDcmUsU0FBUyxzQkFBc0Isc0NBQXNDLDBDQUEwQyxFQUFFLFdBQVcsY0FBYyw0Q0FBNEMseUVBQXlFLDRFQUE0RSx1QkFBdUIsU0FBUyxjQUFjLGlCQUFpQix1Q0FBdUMsa0NBQWtDLDBCQUEwQjtBQUM3ZSw0RUFBNEUsb0ZBQW9GLDBCQUEwQixZQUFZLDBFQUEwRSx5SUFBeUk7QUFDelosa0NBQWtDLElBQUksZUFBZSxnQkFBZ0Isa0VBQWtFLHFGQUFxRiw4RkFBOEYsaUVBQWlFLGFBQWEsRUFBRSxnRUFBZ0U7QUFDMWMsMklBQTJJLGdGQUFnRixvQ0FBb0Msd0JBQXdCLEVBQUUseURBQXlELHNCQUFzQiwyQ0FBMkMsS0FBSztBQUN4WixZQUFZLDBCQUEwQixFQUFFLDBCQUEwQixlQUFlLGFBQWEsTUFBTSxjQUFjLFVBQVUsb0JBQW9CLFFBQVEsV0FBVyw0RkFBNEYsbUZBQW1GLG9DQUFvQyxHQUFHLHFDQUFxQyxnQkFBZ0Isa0JBQWtCLFNBQVMsRUFBRSxrRUFBa0U7QUFDN2dCLG9IQUFvSCxxQ0FBcUMsbUVBQW1FLGNBQWMsY0FBYyx5REFBeUQsRUFBRSxrQ0FBa0Msb0NBQW9DLG1CQUFtQixVQUFVLEdBQUcsb0JBQW9CLGdCQUFnQixFQUFFLDBDQUEwQztBQUN6ZSxrREFBa0QsZUFBZSxXQUFXLHVCQUF1QiwwQkFBMEIsU0FBUyx3Q0FBd0MsNEJBQTRCLEtBQUssRUFBRSxjQUFjLHVCQUF1QixjQUFjLHNIQUFzSCx3Q0FBd0Msd0NBQXdDLGlCQUFpQixjQUFjO0FBQ3plLDRDQUE0QyxjQUFjLGNBQWMsa0JBQWtCLDZGQUE2RixjQUFjLGtCQUFrQix1QkFBdUIsSUFBSSxFQUFFLGtDQUFrQyxLQUFLLGNBQWMsZ0JBQWdCLG9FQUFvRSxnQ0FBZ0M7QUFDN1osY0FBYyxTQUFTLG1CQUFtQiwrQ0FBK0MsaUJBQWlCLGNBQWMsRUFBRSw2QkFBNkIsSUFBSSxzRUFBc0UsU0FBUyxpQ0FBaUMsZ0NBQWdDLHFCQUFxQixpRUFBaUUsbUJBQW1CLE1BQU07QUFDMVosa0VBQWtFLG9CQUFvQiwyR0FBMkcsdUNBQXVDLGFBQWEsNENBQTRDLGtCQUFrQiw2REFBNkQsSUFBSSxLQUFLLGdDQUFnQyxZQUFZLFdBQVc7QUFDaGIsTUFBTSxTQUFTLDJCQUEyQixpREFBaUQsK0JBQStCLHdFQUF3RSxzRUFBc0Usc0dBQXNHLDBCQUEwQixpQ0FBaUMsbUNBQW1DLGtCQUFrQjtBQUM5ZCxXQUFXLGtCQUFrQix3QkFBd0IseUJBQXlCLGtCQUFrQix3QkFBd0IsNkJBQTZCLFNBQVMsNEVBQTRFLDRCQUE0QiwwRUFBMEUsa0RBQWtELGtEQUFrRCxFQUFFLCtCQUErQjtBQUNyZCxrQkFBa0IscUZBQXFGLGtCQUFrQixhQUFhLG1CQUFtQixxQkFBcUIsaURBQWlELDBCQUEwQixlQUFlLCtDQUErQywwQkFBMEIsbUlBQW1JLDBCQUEwQixxQkFBcUIsWUFBWSxtQ0FBbUMsa0JBQWtCLFdBQVcsU0FBUyxjQUFjLGFBQWEsMEJBQTBCLGNBQWMsZ0VBQWdFLFlBQVksZ0JBQWdCLHlDQUF5QyxVQUFVLDZFQUE2RSxjQUFjLDRCQUE0QixZQUFZLFdBQVcsWUFBWSxxQkFBcUIsaUJBQWlCLGtCQUFrQixNQUFNLE9BQU8sV0FBVyxZQUFZLGNBQWMseUJBQXlCLGtCQUFrQixjQUFjLHVFQUF1RSx1QkFBdUI7QUFDcnNDLE1BQU0sd0JBQXdCLG9FQUFvRSx1QkFBdUIsa0RBQWtELGlDQUFpQyxxR0FBcUcsMkNBQTJDLEVBQUUsS0FBSyxtQkFBbUIsRUFBRSxhQUFhLG1EQUFtRCxrQkFBa0IsbUNBQW1DO0FBQzdlLFlBQVksNkJBQTZCLDJEQUEyRCxPQUFPLFVBQVUscUJBQXFCLCtFQUErRSxvQkFBb0IsZUFBZSx5REFBeUQsb0JBQW9CLG1IQUFtSCxFQUFFLG1CQUFtQixFQUFFLFNBQVMsK0JBQStCLCtCQUErQjtBQUMxaEIsMEJBQTBCLCtCQUErQixzRUFBc0UsdUVBQXVFLG1CQUFtQixxQ0FBcUMsNkJBQTZCLHFDQUFxQyxXQUFXLGdDQUFnQyxZQUFZLDBCQUEwQixrREFBa0QsR0FBRyxpQkFBaUIscUJBQXFCO0FBQzVlLG9CQUFvQixxR0FBcUcsc0NBQXNDLG1CQUFtQixtQkFBbUIsdUJBQXVCLHdEQUF3RCxhQUFhLDRCQUE0QixpQ0FBaUMsMEJBQTBCLHlCQUF5QixVQUFVLGdDQUFnQyx3QkFBd0IsSUFBSTtBQUN2ZCxzQkFBc0IseUNBQXlDLDhCQUE4QixzSUFBc0kseUJBQXlCLGNBQWMsd0NBQXdDLE9BQU8sY0FBYyxxQkFBcUIsa0JBQWtCLFdBQVcsV0FBVyw2QkFBNkIsbUJBQW1CLGtDQUFrQyxnQ0FBZ0M7QUFDdGYsdUJBQXVCLGlGQUFpRixrQkFBa0IsaUNBQWlDLCtJQUErSSx1QkFBdUIsc0RBQXNELDJCQUEyQixJQUFJLHlFQUF5RSxTQUFTLHNCQUFzQjtBQUM5ZixzQ0FBc0MsVUFBVSw2QkFBNkIsd0JBQXdCLDJCQUEyQixzQ0FBc0MsU0FBUywyQkFBMkIsRUFBRSxpQ0FBaUMsa0JBQWtCLHNDQUFzQyxjQUFjLEtBQUssVUFBVSxtQ0FBbUMsZ0JBQWdCLDJCQUEyQixlQUFlLHNDQUFzQyxzQkFBc0IscUJBQXFCO0FBQ2hmLDJGQUEyRixpR0FBaUcsbUJBQW1CLDJCQUEyQiwyREFBMkQsd0JBQXdCLDZEQUE2RCw4QkFBOEIsY0FBYyxrREFBa0Q7QUFDeGQscUJBQXFCLGtCQUFrQixpR0FBaUcsd0hBQXdILG1DQUFtQyxzQkFBc0IseURBQXlELG1FQUFtRSxXQUFXLE1BQU0sK0JBQStCLFNBQVM7QUFDOWUsS0FBSyxTQUFTLGdDQUFnQyx3Q0FBd0MsYUFBYSxxQkFBcUIseUJBQXlCLGdEQUFnRCx3QkFBd0IsWUFBWSw4QkFBOEIsT0FBTyxNQUFNLGVBQWUsS0FBSyxVQUFVLCtCQUErQixTQUFTLHFCQUFxQixxQkFBcUIsd0VBQXdFO0FBQ3hjLG1OQUFtTixrQkFBa0IsK0JBQStCLDZCQUE2Qiw0QkFBNEIsMkJBQTJCLG1DQUFtQyxhQUFhLHdDQUF3QyxtQ0FBbUM7QUFDbmQsK0JBQStCLDhFQUE4RSxpTkFBaU4seUJBQXlCLGlCQUFpQixPQUFPLG1CQUFtQixRQUFRLGdEQUFnRCw0Q0FBNEMsUUFBUTtBQUM5ZSw4QkFBOEIsa0JBQWtCLHlCQUF5QixnQ0FBZ0MsSUFBSSxXQUFXLGNBQWMsOEJBQThCLG1CQUFtQixtQkFBbUIseURBQXlELDJCQUEyQixtQkFBbUIsbUJBQW1CLEdBQUcsSUFBSSxTQUFTLHVCQUF1QiwrRUFBK0UsNkJBQTZCO0FBQ3ZkLCtCQUErQiw0QkFBNEIsNERBQTRELHNCQUFzQixnQ0FBZ0MsNEJBQTRCLHlDQUF5QywrREFBK0QsNkNBQTZDLHVDQUF1QyxzRkFBc0Y7QUFDM2QsNFJBQTRSLCtCQUErQix1QkFBdUIsZ0JBQWdCLFlBQVksNkZBQTZGLFlBQVkscUJBQXFCO0FBQzVlLGNBQWMsb0JBQW9CLG1DQUFtQyxrQkFBa0IsaUNBQWlDLE1BQU0sK0JBQStCLHFCQUFxQiw2QkFBNkIsb0JBQW9CLHdCQUF3QixTQUFTLDBCQUEwQixvQ0FBb0MseUJBQXlCLDRCQUE0QixtREFBbUQseUJBQXlCLFlBQVksdUJBQXVCO0FBQ3RlLElBQUksNkNBQTZDLEtBQUssUUFBUSx3Q0FBd0MsaURBQWlELFlBQVksd0JBQXdCLCtEQUErRCw0QkFBNEIsWUFBWSx5QkFBeUIsZ0VBQWdFLGlDQUFpQyxZQUFZLHNDQUFzQztBQUM5YyxHQUFHLGlDQUFpQyxxR0FBcUcsMkJBQTJCLDZIQUE2SCx3Q0FBd0Msa0NBQWtDLDRGQUE0RiwrQkFBK0I7QUFDdGUsdUVBQXVFLHdDQUF3Qyx1RkFBdUYsa0NBQWtDLGtGQUFrRixpQ0FBaUMscUVBQXFFLGlDQUFpQztBQUNqYywwQkFBMEIsb0VBQW9FLG9DQUFvQyxxRUFBcUUsb0NBQW9DLGlGQUFpRiw2Q0FBNkMsaUdBQWlHLG9CQUFvQjtBQUM5ZCx3Q0FBd0MseUJBQXlCLHFEQUFxRCwrQ0FBK0Msc0NBQXNDLG1FQUFtRSxFQUFFLGdCQUFnQixvQ0FBb0Msb0JBQW9CLDhEQUE4RCxtRUFBbUUsR0FBRyxFQUFFO0FBQzlkLEdBQUcsOEJBQThCLHdCQUF3QixrQ0FBa0MsZ0JBQWdCLDBCQUEwQiwwQkFBMEIsSUFBSSwwQkFBMEIsMEpBQTBKLGlCQUFpQixxQ0FBcUMsRUFBRSxhQUFhLCtEQUErRCxFQUFFO0FBQzdkLDBCQUEwQixjQUFjLGVBQWUsaUJBQWlCLDZCQUE2QiwrR0FBK0csUUFBUSxtQkFBbUI7QUFDL08sTUFBTSxpSUFBaUksdUJBQXVCLFlBQVksdUJBQXVCLHdDQUF3QywrQ0FBK0MsbUJBQW1CLHdCQUF3QixXQUFXLG1CQUFtQiw4Q0FBOEMsYUFBYSxtQ0FBbUMsV0FBVyxtQkFBbUIsbUJBQW1CO0FBQ2hmLGlDQUFpQyxJQUFJLElBQUksR0FBRyxVQUFVLHVCQUF1Qix3QkFBd0Isd0JBQXdCLDJDQUEyQyxFQUFFLDBCQUEwQixlQUFlLG1CQUFtQixnS0FBZ0ssa0JBQWtCLGNBQWMsdUJBQXVCLHVDQUF1QztBQUNwZSxnQ0FBZ0MsZUFBZSx1REFBdUQsY0FBYyxrQkFBa0IsbUJBQW1CLG9CQUFvQiwrQ0FBK0Msd0JBQXdCLEVBQUUsYUFBYSx1QkFBdUIsUUFBUSwyQkFBMkIsa0RBQWtELG1CQUFtQix3Q0FBd0MsbUNBQW1DLDJCQUEyQixvQkFBb0I7QUFDNWYsTUFBTSxjQUFjLDRCQUE0QixTQUFTLG1CQUFtQiwyQkFBMkIseUNBQXlDLDBCQUEwQixzRUFBc0UsdUJBQXVCLHFEQUFxRCx5QkFBeUIsMEJBQTBCLDZCQUE2Qix1QkFBdUIsZ0NBQWdDLDBCQUEwQjtBQUM3ZCw4QkFBOEIsRUFBRSxvQ0FBb0MsNkJBQTZCLHVGQUF1RixrRkFBa0YsZ0NBQWdDLHNEQUFzRCxnQkFBZ0IsRUFBRSxzQkFBc0Isa0JBQWtCLG9CQUFvQiw4QkFBOEIsU0FBUyx5QkFBeUI7QUFDOWUsR0FBRyxnSUFBZ0ksMkJBQTJCLDBCQUEwQixjQUFjLHdCQUF3QixtQkFBbUIsZ0JBQWdCLHdDQUF3QyxhQUFhLGdCQUFnQiwwQkFBMEIsb0JBQW9CLHVDQUF1QywyQkFBMkIseUJBQXlCLG1CQUFtQjtBQUNsZSxHQUFHLGtDQUFrQyxtQkFBbUIsOEVBQThFLG1CQUFtQix1Q0FBdUMsdUJBQXVCLDBCQUEwQix3Q0FBd0MsMENBQTBDLCtDQUErQywyQkFBMkIscUNBQXFDLDhFQUE4RSxzREFBc0Q7QUFDdGpCLGtDQUFrQyxzREFBc0QsRUFBRSwwQ0FBMEMsRUFBRSwwQ0FBMEMsZ0NBQWdDLHVFQUF1RSx3REFBd0QsaUVBQWlFLEVBQUUsNENBQTRDLFNBQVM7QUFDdmMsd0RBQXdELDJCQUEyQixJQUFJLGdGQUFnRix5QkFBeUIsa0NBQWtDLDZOQUE2TixjQUFjLHlCQUF5QixvQkFBb0Isd0NBQXdDO0FBQ2xpQixnQkFBZ0IsK0hBQStILDBCQUEwQixrRUFBa0UscUNBQXFDLHVCQUF1QixtQkFBbUI7QUFDMVQsMkJBQTJCLHlCQUF5Qiw0SEFBNEgsRUFBRSxXQUFXLDJCQUEyQixxQ0FBcUMsS0FBSyxtRUFBbUUsMENBQTBDLCtCQUErQiw0QkFBNEIsMEJBQTBCLDZCQUE2Qix3QkFBd0IsZUFBZTtBQUN4Z0IsMkJBQTJCLHdFQUF3RSx1QkFBdUIsbURBQW1ELDZFQUE2RSxFQUFFLG1CQUFtQiw2QkFBNkIsaUJBQWlCLHVDQUF1QyxFQUFFLGlDQUFpQyxhQUFhLHdDQUF3QztBQUM1Yix5SUFBeUksdUJBQXVCLG1EQUFtRCxpSEFBaUgsRUFBRSxFQUFFLGFBQWEseUJBQXlCLHdDQUF3QyxxQkFBcUIsR0FBRywrQ0FBK0MsRUFBRSwyQkFBMkI7QUFDMWYsU0FBUyxFQUFFLHdCQUF3QixjQUFjLHdDQUF3QyxFQUFFLHdCQUF3QixjQUFjLGlGQUFpRixHQUFHLEVBQUUsMkJBQTJCLGNBQWMsZ0JBQWdCLGlCQUFpQixjQUFjLHlHQUF5RyxLQUFLLGtFQUFrRSxRQUFRO0FBQ3ZlLENBQUMsMENBQTBDLDJDQUEyQyxhQUFhLEdBQUcsbUNBQW1DLHFEQUFxRCxrQkFBa0Isa0NBQWtDLDREQUE0RCw0SEFBNEgsbUNBQW1DLHNDQUFzQztBQUNuZixxQ0FBcUMsc0NBQXNDLHFDQUFxQyxxRkFBcUYsU0FBUyxRQUFRLFVBQVUseUJBQXlCLDBDQUEwQyx3QkFBd0IsdUJBQXVCLG1LQUFtSztBQUNyZix5QkFBeUIsZ0RBQWdELFNBQVMsOEZBQThGLHlCQUF5QiwwQkFBMEIsZ0JBQWdCLFFBQVEsWUFBWSxLQUFLLGVBQWUsOEZBQThGLGtGQUFrRjtBQUMzYyxnRkFBZ0YseUJBQXlCLEtBQUssRUFBRSxjQUFjLGNBQWMsY0FBYyxTQUFTLHdDQUF3QyxzQ0FBc0MsT0FBTyxZQUFZLFlBQVksNENBQTRDLE1BQU0sY0FBYyxzQ0FBc0MsNEJBQTRCO0FBQ2xaLDZCQUE2QixFQUFFLGtCQUFrQix1QkFBdUIsNkRBQTZELCtCQUErQixtRUFBbUUsc0VBQXNFLHFCQUFxQiw4RUFBOEUsNEJBQTRCLFNBQVMsK0JBQStCLGFBQWE7QUFDamUsV0FBVyxxRkFBcUYsZ0tBQWdLLG1IQUFtSCxxREFBcUQscUJBQXFCLEVBQUUsRUFBRSxLQUFLLElBQUksOENBQThDLFVBQVU7QUFDbGdCLHdHQUF3Ryw0QkFBNEIseURBQXlELGtDQUFrQyxJQUFJLG9EQUFvRCxzQkFBc0IsK0RBQStELFdBQVcseUJBQXlCLEVBQUUseURBQXlELElBQUksc0JBQXNCLFdBQVcsRUFBRTtBQUNsZiw0Q0FBNEMsVUFBVSxFQUFFLGtEQUFrRCxnQ0FBZ0Msc0RBQXNELHFDQUFxQywrQ0FBK0MscUJBQXFCLDREQUE0RCxzQkFBc0Isb0JBQW9CLElBQUksVUFBVSxjQUFjLGFBQWEsTUFBTSwyREFBMkQ7QUFDemYsc0NBQXNDLDJGQUEyRixFQUFFLGNBQWMsaUJBQWlCLDBCQUEwQixtQkFBbUIseUVBQXlFLGlGQUFpRixVQUFVLG1GQUFtRixhQUFhLFNBQVMsd0NBQXdDLG1EQUFtRCx3QkFBd0I7QUFDL2tCLFdBQVcsNkZBQTZGLHFCQUFxQixxQkFBcUIsR0FBRyx1Q0FBdUMsdUJBQXVCLDJCQUEyQiwrQkFBK0IsZUFBZSxnQkFBZ0IsSUFBSSxhQUFhLFlBQVksYUFBYSxHQUFHLDJCQUEyQixlQUFlLEdBQUcsb0JBQW9CLE1BQU0sb0NBQW9DLGlCQUFpQixpQ0FBaUMsaUNBQWlDLG9CQUFvQixjQUFjO0FBQ3pqQix1QkFBdUIsRUFBRSxnQ0FBZ0MsY0FBYyxzQkFBc0IseUhBQXlILG9CQUFvQiw2QkFBNkIsRUFBRSx1QkFBdUIsaUJBQWlCLEVBQUUsS0FBSyxjQUFjLHNCQUFzQix1QkFBdUIsY0FBYyxFQUFFLGFBQWEsbUNBQW1DLFlBQVksV0FBVyxLQUFLLFdBQVc7QUFDMWQsZ0NBQWdDLHNCQUFzQixLQUFLLHNCQUFzQixzREFBc0QsRUFBRSxxQ0FBcUMsd0JBQXdCLEVBQUUsYUFBYSxzQkFBc0IsK0JBQStCLGlCQUFpQiwwQ0FBMEMsY0FBYyxzQkFBc0IsYUFBYSxxQ0FBcUMsRUFBRSx1QkFBdUIscURBQXFELHdCQUF3QjtBQUNqZ0Isd0dBQXdHLDBCQUEwQixpSEFBaUgsYUFBYSwyQkFBMkIsRUFBRSxzREFBc0QseUJBQXlCLFlBQVksOERBQThELG9CQUFvQjtBQUMxYyxFQUFFLHdGQUF3RiwrREFBK0QsTUFBTSxrSkFBa0osY0FBYyxxQ0FBcUMsb0NBQW9DLG1CQUFtQixjQUFjLGtCQUFrQixFQUFFLDBCQUEwQixrQkFBa0IsRUFBRSxpQkFBaUI7QUFDNWYseUJBQXlCLEVBQUUsUUFBUSx1QkFBdUIsR0FBRyxFQUFFLHFEQUFxRCxrQ0FBa0Msb0RBQW9ELHVCQUF1Qiw4QkFBOEIsYUFBYSxnQ0FBZ0MsaUVBQWlFLHNDQUFzQyxPQUFPLHVFQUF1RTtBQUNqZSxPQUFPLHdDQUF3QyxrQkFBa0Isb0VBQW9FLEtBQUssd0JBQXdCLGVBQWUsTUFBTSxxSUFBcUksNERBQTRELG1GQUFtRiwrQ0FBK0M7QUFDMWYsSUFBSSxTQUFTLDJDQUEyQyxtQkFBbUIsU0FBUyxHQUFHLDRCQUE0QjtBQUNuSCxxVUFBcVU7QUFDclUsMkVBQTJFLHNHQUFzRywwRUFBMEUsZ0lBQWdJLGtCQUFrQjtBQUM3WSxVQUFVLGdCQUFnQiw2QkFBNkIsaUVBQWlFLHFCQUFxQiw4SkFBOEosMklBQTJJLCtCQUErQixrQkFBa0I7QUFDdmUsR0FBRyx1QkFBdUIsc0JBQXNCLDJCQUEyQix5QkFBeUIsSUFBSSxXQUFXLFNBQVMsc0JBQXNCLFdBQVcsTUFBTSxxQkFBcUIsMkJBQTJCLGNBQWMsc0pBQXNKLGtHQUFrRztBQUN6ZCxzUEFBc1Asa0NBQWtDLGdCQUFnQixnQkFBZ0IsU0FBUyxrQkFBa0IsMkVBQTJFLG1CQUFtQix5QkFBeUI7QUFDMWMsOEJBQThCLDJDQUEyQyx5Q0FBeUMseURBQXlELDhHQUE4RyxFQUFFO0FBQzNSLDZDQUE2QyxvQkFBb0Isb0NBQW9DLGVBQWUsWUFBWSxXQUFXLCtCQUErQixzQ0FBc0M7QUFDaE47QUFDQSxhQUFhLElBQUk7Ozs7Ozs7Ozs7O0FDcnhDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsTUFBTSxJQUEwQztBQUNoRDtBQUNBLElBQUksaUNBQU8sQ0FBQyx5RUFBUSxDQUFDLG9DQUFFLE9BQU87QUFBQTtBQUFBO0FBQUEsa0dBQUM7QUFDL0IsSUFBSSxLQUFLLEVBcUJOO0FBQ0gsRUFBRTtBQUNGO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE9BQU8sZUFBZTtBQUN0QixXQUFXLFdBQVcsT0FBTztBQUM3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxvQkFBb0I7QUFDcEIsb0JBQW9CO0FBQ3BCLG1CQUFtQjtBQUNuQixxQkFBcUI7QUFDckI7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLFFBQVE7QUFDdkIsZUFBZSxRQUFRO0FBQ3ZCO0FBQ0EsaUJBQWlCLFFBQVE7QUFDekI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSx3QkFBd0IsaUJBQWlCO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSx1Q0FBdUMsT0FBTztBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQSwrQ0FBK0MsT0FBTztBQUN0RDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZDtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWM7QUFDZCwwQ0FBMEM7QUFDMUM7QUFDQSxTQUFTO0FBQ1Q7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLHdCQUF3QixpQkFBaUI7QUFDekM7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FBQ2xCO0FBQ0E7QUFDQSxrQkFBa0I7QUFDbEI7QUFDQTtBQUNBO0FBQ0Esa0JBQWtCO0FB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QUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxVQUFVO0FBQ1Y7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUCxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBLHNCQUFzQiwwQkFBMEI7QUFDaEQ7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsZ0NBQWdDO0FBQ2hDLFFBQVE7QUFDUjtBQUNBO0FBQ0EsU0FBUztBQUNUO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsVUFBVTtBQUNWO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1gsVUFBVTtBQUNWLGtDQUFrQztBQUNsQzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsbUNBQW1DO0FBQ25DOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDO0FBQzNDO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxvQkFBb0IsaUJBQWlCO0FBQ3JDO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBLDZCQUE2QjtBQUM3Qjs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EseUNBQXlDO0FBQ3pDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87O0FBRVA7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwyQkFBMkI7QUFDM0I7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBLHdCQUF3QixpQkFBaUI7QUFDekM7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxNQUFNO0FBQ047O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsc0JBQXNCLHdCQUF3QjtBQUM5Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsc0JBQXNCLHNCQUFzQjtBQUM1Qzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLHNCQUFzQjtBQUN0QjtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsc0JBQXNCO0FBQ3RCOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLG9CQUFvQixpQkFBaUI7QUFDckM7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsdUNBQXVDOztBQUV2Qzs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDBCQUEwQjtBQUMxQjtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1A7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSxzQkFBc0I7QUFDdEI7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsT0FBTztBQUNQO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87O0FBRVA7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLE1BQU07QUFDTjtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLHNCQUFzQixpQkFBaUI7QUFDdkM7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsc0JBQXNCLGlCQUFpQjtBQUN2Qzs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVc7QUFDWDs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPOztBQUVQO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0EsT0FBTzs7QUFFUDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTzs7QUFFUDtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXO0FBQ1g7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBLE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLFVBQVU7QUFDVjtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsT0FBTztBQUNQOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBLGtDQUFrQyxRQUFRO0FBQzFDOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQSw0QkFBNEIsR0FBRyxRQUFROztBQUV2Qzs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0EsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLE1BQU07QUFDTjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGlCQUFpQjtBQUNyQzs7QUFFQTtBQUNBO0FBQ0EsUUFBUTtBQUNSO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLEtBQUs7QUFDTDtBQUNBOztBQUVBOztBQUVBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0E7QUFDQTtBQUNBLENBQUM7O0FBRUQ7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSwrQkFBK0I7O0FBRS9CO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjtBQUNBLFFBQVE7QUFDUjtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLFFBQVE7QUFDUjs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7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QUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxDQUFDOztBQUVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsTUFBTTtBQUNOO0FBQ0EsTUFBTTtBQUNOO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsZ0NBQWdDOztBQUVoQyx3Q0FBd0MsT0FBTztBQUMvQztBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUCxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxLQUFLO0FBQ0w7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsS0FBSztBQUNMOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7QUFDQSwrQkFBK0I7QUFDL0I7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxTQUFTO0FBQ1QsT0FBTztBQUNQLEtBQUs7O0FBRUw7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFNBQVM7QUFDVCxPQUFPO0FBQ1AsS0FBSzs7QUFFTDtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFVBQVU7QUFDViwyQ0FBMkM7O0FBRTNDO0FBQ0EsVUFBVTtBQUNWLDJDQUEyQzs7QUFFM0M7QUFDQSxVQUFVO0FBQ1YsNkNBQTZDOztBQUU3QztBQUNBLFVBQVU7QUFDVix5Q0FBeUM7O0FBRXpDO0FBQ0E7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBLGdDQUFnQztBQUNoQyxNQUFNO0FBQ04sK0JBQStCO0FBQy9CO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBLHNCQUFzQixpQ0FBaUM7QUFDdkQ7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxNQUFNO0FBQ047QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsNEJBQTRCLHFCQUFxQjtBQUNqRDs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGNBQWMsTUFBTTtBQUNwQixjQUFjLE9BQU87QUFDckI7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsY0FBYyxNQUFNO0FBQ3BCLGNBQWMsT0FBTztBQUNyQjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw0QkFBNEI7QUFDNUI7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxLQUFLOztBQUVMO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLE9BQU87QUFDUDs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsaURBQWlEOztBQUVqRDtBQUNBLFNBQVM7O0FBRVQ7QUFDQSxRQUFRO0FBQ1I7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLFNBQVM7O0FBRVQ7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxRQUFRO0FBQ1I7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLENBQUMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2NyZWF0ZVBvcHBlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9jb250YWlucy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q2xpcHBpbmdSZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Q29tcHV0ZWRTdHlsZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRSZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldExheW91dFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Tm9kZVNjcm9sbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0UGFyZW50Tm9kZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0Vmlld3BvcnRSZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2dldFdpbmRvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9nZXRXaW5kb3dTY3JvbGwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvZ2V0V2luZG93U2Nyb2xsQmFyWC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvZG9tLXV0aWxzL2lzTGF5b3V0Vmlld3BvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNTY3JvbGxQYXJlbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvaXNUYWJsZUVsZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9kb20tdXRpbHMvbGlzdFNjcm9sbFBhcmVudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9lbnVtcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2FwcGx5U3R5bGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2Fycm93LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi9tb2RpZmllcnMvZmxpcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9oaWRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL29mZnNldC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvbW9kaWZpZXJzL3ByZXZlbnRPdmVyZmxvdy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3BvcHBlci1saXRlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvcG9wcGVyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvY29tcHV0ZUF1dG9QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9jb21wdXRlT2Zmc2V0cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2RlYm91bmNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZGV0ZWN0T3ZlcmZsb3cuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9leHBhbmRUb0hhc2hNYXAuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9mb3JtYXQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRBbHRBeGlzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE1haW5BeGlzRnJvbVBsYWNlbWVudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9nZXRWYXJpYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tYXRoLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvbWVyZ2VCeU5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9tZXJnZVBhZGRpbmdPYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy9vcmRlck1vZGlmaWVycy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0Bwb3BwZXJqcy9jb3JlL2xpYi91dGlscy91bmlxdWVCeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3VzZXJBZ2VudC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHBvcHBlcmpzL2NvcmUvbGliL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AcG9wcGVyanMvY29yZS9saWIvdXRpbHMvd2l0aGluLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ib290c3RyYXAtYXV0b2NvbXBsZXRlL2Rpc3QvbGF0ZXN0L2Jvb3RzdHJhcC1hdXRvY29tcGxldGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2Jvb3RzdHJhcC9kaXN0L2pzL2Jvb3RzdHJhcC5lc20uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NrZWRpdG9yNC9ja2VkaXRvci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc2VsZWN0Mi9kaXN0L2pzL3NlbGVjdDIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGdldENvbXBvc2l0ZVJlY3QgZnJvbSBcIi4vZG9tLXV0aWxzL2dldENvbXBvc2l0ZVJlY3QuanNcIjtcbmltcG9ydCBnZXRMYXlvdXRSZWN0IGZyb20gXCIuL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgbGlzdFNjcm9sbFBhcmVudHMgZnJvbSBcIi4vZG9tLXV0aWxzL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2RvbS11dGlscy9nZXRPZmZzZXRQYXJlbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2RvbS11dGlscy9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgb3JkZXJNb2RpZmllcnMgZnJvbSBcIi4vdXRpbHMvb3JkZXJNb2RpZmllcnMuanNcIjtcbmltcG9ydCBkZWJvdW5jZSBmcm9tIFwiLi91dGlscy9kZWJvdW5jZS5qc1wiO1xuaW1wb3J0IHZhbGlkYXRlTW9kaWZpZXJzIGZyb20gXCIuL3V0aWxzL3ZhbGlkYXRlTW9kaWZpZXJzLmpzXCI7XG5pbXBvcnQgdW5pcXVlQnkgZnJvbSBcIi4vdXRpbHMvdW5pcXVlQnkuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuL3V0aWxzL2dldEJhc2VQbGFjZW1lbnQuanNcIjtcbmltcG9ydCBtZXJnZUJ5TmFtZSBmcm9tIFwiLi91dGlscy9tZXJnZUJ5TmFtZS5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgeyBpc0VsZW1lbnQgfSBmcm9tIFwiLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgYXV0byB9IGZyb20gXCIuL2VudW1zLmpzXCI7XG52YXIgSU5WQUxJRF9FTEVNRU5UX0VSUk9SID0gJ1BvcHBlcjogSW52YWxpZCByZWZlcmVuY2Ugb3IgcG9wcGVyIGFyZ3VtZW50IHByb3ZpZGVkLiBUaGV5IG11c3QgYmUgZWl0aGVyIGEgRE9NIGVsZW1lbnQgb3IgdmlydHVhbCBlbGVtZW50Lic7XG52YXIgSU5GSU5JVEVfTE9PUF9FUlJPUiA9ICdQb3BwZXI6IEFuIGluZmluaXRlIGxvb3AgaW4gdGhlIG1vZGlmaWVycyBjeWNsZSBoYXMgYmVlbiBkZXRlY3RlZCEgVGhlIGN5Y2xlIGhhcyBiZWVuIGludGVycnVwdGVkIHRvIHByZXZlbnQgYSBicm93c2VyIGNyYXNoLic7XG52YXIgREVGQVVMVF9PUFRJT05TID0ge1xuICBwbGFjZW1lbnQ6ICdib3R0b20nLFxuICBtb2RpZmllcnM6IFtdLFxuICBzdHJhdGVneTogJ2Fic29sdXRlJ1xufTtcblxuZnVuY3Rpb24gYXJlVmFsaWRFbGVtZW50cygpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgfVxuXG4gIHJldHVybiAhYXJncy5zb21lKGZ1bmN0aW9uIChlbGVtZW50KSB7XG4gICAgcmV0dXJuICEoZWxlbWVudCAmJiB0eXBlb2YgZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QgPT09ICdmdW5jdGlvbicpO1xuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBvcHBlckdlbmVyYXRvcihnZW5lcmF0b3JPcHRpb25zKSB7XG4gIGlmIChnZW5lcmF0b3JPcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBnZW5lcmF0b3JPcHRpb25zID0ge307XG4gIH1cblxuICB2YXIgX2dlbmVyYXRvck9wdGlvbnMgPSBnZW5lcmF0b3JPcHRpb25zLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmID0gX2dlbmVyYXRvck9wdGlvbnMuZGVmYXVsdE1vZGlmaWVycyxcbiAgICAgIGRlZmF1bHRNb2RpZmllcnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYgPT09IHZvaWQgMCA/IFtdIDogX2dlbmVyYXRvck9wdGlvbnMkZGVmLFxuICAgICAgX2dlbmVyYXRvck9wdGlvbnMkZGVmMiA9IF9nZW5lcmF0b3JPcHRpb25zLmRlZmF1bHRPcHRpb25zLFxuICAgICAgZGVmYXVsdE9wdGlvbnMgPSBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyID09PSB2b2lkIDAgPyBERUZBVUxUX09QVElPTlMgOiBfZ2VuZXJhdG9yT3B0aW9ucyRkZWYyO1xuICByZXR1cm4gZnVuY3Rpb24gY3JlYXRlUG9wcGVyKHJlZmVyZW5jZSwgcG9wcGVyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgICAgb3B0aW9ucyA9IGRlZmF1bHRPcHRpb25zO1xuICAgIH1cblxuICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgIHBsYWNlbWVudDogJ2JvdHRvbScsXG4gICAgICBvcmRlcmVkTW9kaWZpZXJzOiBbXSxcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfT1BUSU9OUywgZGVmYXVsdE9wdGlvbnMpLFxuICAgICAgbW9kaWZpZXJzRGF0YToge30sXG4gICAgICBlbGVtZW50czoge1xuICAgICAgICByZWZlcmVuY2U6IHJlZmVyZW5jZSxcbiAgICAgICAgcG9wcGVyOiBwb3BwZXJcbiAgICAgIH0sXG4gICAgICBhdHRyaWJ1dGVzOiB7fSxcbiAgICAgIHN0eWxlczoge31cbiAgICB9O1xuICAgIHZhciBlZmZlY3RDbGVhbnVwRm5zID0gW107XG4gICAgdmFyIGlzRGVzdHJveWVkID0gZmFsc2U7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgc2V0T3B0aW9uczogZnVuY3Rpb24gc2V0T3B0aW9ucyhzZXRPcHRpb25zQWN0aW9uKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gdHlwZW9mIHNldE9wdGlvbnNBY3Rpb24gPT09ICdmdW5jdGlvbicgPyBzZXRPcHRpb25zQWN0aW9uKHN0YXRlLm9wdGlvbnMpIDogc2V0T3B0aW9uc0FjdGlvbjtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBzdGF0ZS5vcHRpb25zID0gT2JqZWN0LmFzc2lnbih7fSwgZGVmYXVsdE9wdGlvbnMsIHN0YXRlLm9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICBzdGF0ZS5zY3JvbGxQYXJlbnRzID0ge1xuICAgICAgICAgIHJlZmVyZW5jZTogaXNFbGVtZW50KHJlZmVyZW5jZSkgPyBsaXN0U2Nyb2xsUGFyZW50cyhyZWZlcmVuY2UpIDogcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ID8gbGlzdFNjcm9sbFBhcmVudHMocmVmZXJlbmNlLmNvbnRleHRFbGVtZW50KSA6IFtdLFxuICAgICAgICAgIHBvcHBlcjogbGlzdFNjcm9sbFBhcmVudHMocG9wcGVyKVxuICAgICAgICB9OyAvLyBPcmRlcnMgdGhlIG1vZGlmaWVycyBiYXNlZCBvbiB0aGVpciBkZXBlbmRlbmNpZXMgYW5kIGBwaGFzZWBcbiAgICAgICAgLy8gcHJvcGVydGllc1xuXG4gICAgICAgIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXJNb2RpZmllcnMobWVyZ2VCeU5hbWUoW10uY29uY2F0KGRlZmF1bHRNb2RpZmllcnMsIHN0YXRlLm9wdGlvbnMubW9kaWZpZXJzKSkpOyAvLyBTdHJpcCBvdXQgZGlzYWJsZWQgbW9kaWZpZXJzXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycyA9IG9yZGVyZWRNb2RpZmllcnMuZmlsdGVyKGZ1bmN0aW9uIChtKSB7XG4gICAgICAgICAgcmV0dXJuIG0uZW5hYmxlZDtcbiAgICAgICAgfSk7IC8vIFZhbGlkYXRlIHRoZSBwcm92aWRlZCBtb2RpZmllcnMgc28gdGhhdCB0aGUgY29uc3VtZXIgd2lsbCBnZXQgd2FybmVkXG4gICAgICAgIC8vIGlmIG9uZSBvZiB0aGUgbW9kaWZpZXJzIGlzIGludmFsaWQgZm9yIGFueSByZWFzb25cblxuICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgdmFyIG1vZGlmaWVycyA9IHVuaXF1ZUJ5KFtdLmNvbmNhdChvcmRlcmVkTW9kaWZpZXJzLCBzdGF0ZS5vcHRpb25zLm1vZGlmaWVycyksIGZ1bmN0aW9uIChfcmVmKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IF9yZWYubmFtZTtcbiAgICAgICAgICAgIHJldHVybiBuYW1lO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycyk7XG5cbiAgICAgICAgICBpZiAoZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5vcHRpb25zLnBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICAgICAgICAgIHZhciBmbGlwTW9kaWZpZXIgPSBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZpbmQoZnVuY3Rpb24gKF9yZWYyKSB7XG4gICAgICAgICAgICAgIHZhciBuYW1lID0gX3JlZjIubmFtZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5hbWUgPT09ICdmbGlwJztcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoIWZsaXBNb2RpZmllcikge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFsnUG9wcGVyOiBcImF1dG9cIiBwbGFjZW1lbnRzIHJlcXVpcmUgdGhlIFwiZmxpcFwiIG1vZGlmaWVyIGJlJywgJ3ByZXNlbnQgYW5kIGVuYWJsZWQgdG8gd29yay4nXS5qb2luKCcgJykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIHZhciBfZ2V0Q29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUocG9wcGVyKSxcbiAgICAgICAgICAgICAgbWFyZ2luVG9wID0gX2dldENvbXB1dGVkU3R5bGUubWFyZ2luVG9wLFxuICAgICAgICAgICAgICBtYXJnaW5SaWdodCA9IF9nZXRDb21wdXRlZFN0eWxlLm1hcmdpblJpZ2h0LFxuICAgICAgICAgICAgICBtYXJnaW5Cb3R0b20gPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5Cb3R0b20sXG4gICAgICAgICAgICAgIG1hcmdpbkxlZnQgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5tYXJnaW5MZWZ0OyAvLyBXZSBubyBsb25nZXIgdGFrZSBpbnRvIGFjY291bnQgYG1hcmdpbnNgIG9uIHRoZSBwb3BwZXIsIGFuZCBpdCBjYW5cbiAgICAgICAgICAvLyBjYXVzZSBidWdzIHdpdGggcG9zaXRpb25pbmcsIHNvIHdlJ2xsIHdhcm4gdGhlIGNvbnN1bWVyXG5cblxuICAgICAgICAgIGlmIChbbWFyZ2luVG9wLCBtYXJnaW5SaWdodCwgbWFyZ2luQm90dG9tLCBtYXJnaW5MZWZ0XS5zb21lKGZ1bmN0aW9uIChtYXJnaW4pIHtcbiAgICAgICAgICAgIHJldHVybiBwYXJzZUZsb2F0KG1hcmdpbik7XG4gICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihbJ1BvcHBlcjogQ1NTIFwibWFyZ2luXCIgc3R5bGVzIGNhbm5vdCBiZSB1c2VkIHRvIGFwcGx5IHBhZGRpbmcnLCAnYmV0d2VlbiB0aGUgcG9wcGVyIGFuZCBpdHMgcmVmZXJlbmNlIGVsZW1lbnQgb3IgYm91bmRhcnkuJywgJ1RvIHJlcGxpY2F0ZSBtYXJnaW4sIHVzZSB0aGUgYG9mZnNldGAgbW9kaWZpZXIsIGFzIHdlbGwgYXMnLCAndGhlIGBwYWRkaW5nYCBvcHRpb24gaW4gdGhlIGBwcmV2ZW50T3ZlcmZsb3dgIGFuZCBgZmxpcGAnLCAnbW9kaWZpZXJzLiddLmpvaW4oJyAnKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcnVuTW9kaWZpZXJFZmZlY3RzKCk7XG4gICAgICAgIHJldHVybiBpbnN0YW5jZS51cGRhdGUoKTtcbiAgICAgIH0sXG4gICAgICAvLyBTeW5jIHVwZGF0ZSDigJMgaXQgd2lsbCBhbHdheXMgYmUgZXhlY3V0ZWQsIGV2ZW4gaWYgbm90IG5lY2Vzc2FyeS4gVGhpc1xuICAgICAgLy8gaXMgdXNlZnVsIGZvciBsb3cgZnJlcXVlbmN5IHVwZGF0ZXMgd2hlcmUgc3luYyBiZWhhdmlvciBzaW1wbGlmaWVzIHRoZVxuICAgICAgLy8gbG9naWMuXG4gICAgICAvLyBGb3IgaGlnaCBmcmVxdWVuY3kgdXBkYXRlcyAoZS5nLiBgcmVzaXplYCBhbmQgYHNjcm9sbGAgZXZlbnRzKSwgYWx3YXlzXG4gICAgICAvLyBwcmVmZXIgdGhlIGFzeW5jIFBvcHBlciN1cGRhdGUgbWV0aG9kXG4gICAgICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoKSB7XG4gICAgICAgIGlmIChpc0Rlc3Ryb3llZCkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBfc3RhdGUkZWxlbWVudHMgPSBzdGF0ZS5lbGVtZW50cyxcbiAgICAgICAgICAgIHJlZmVyZW5jZSA9IF9zdGF0ZSRlbGVtZW50cy5yZWZlcmVuY2UsXG4gICAgICAgICAgICBwb3BwZXIgPSBfc3RhdGUkZWxlbWVudHMucG9wcGVyOyAvLyBEb24ndCBwcm9jZWVkIGlmIGByZWZlcmVuY2VgIG9yIGBwb3BwZXJgIGFyZSBub3QgdmFsaWQgZWxlbWVudHNcbiAgICAgICAgLy8gYW55bW9yZVxuXG4gICAgICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKElOVkFMSURfRUxFTUVOVF9FUlJPUik7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIFN0b3JlIHRoZSByZWZlcmVuY2UgYW5kIHBvcHBlciByZWN0cyB0byBiZSByZWFkIGJ5IG1vZGlmaWVyc1xuXG5cbiAgICAgICAgc3RhdGUucmVjdHMgPSB7XG4gICAgICAgICAgcmVmZXJlbmNlOiBnZXRDb21wb3NpdGVSZWN0KHJlZmVyZW5jZSwgZ2V0T2Zmc2V0UGFyZW50KHBvcHBlciksIHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCcpLFxuICAgICAgICAgIHBvcHBlcjogZ2V0TGF5b3V0UmVjdChwb3BwZXIpXG4gICAgICAgIH07IC8vIE1vZGlmaWVycyBoYXZlIHRoZSBhYmlsaXR5IHRvIHJlc2V0IHRoZSBjdXJyZW50IHVwZGF0ZSBjeWNsZS4gVGhlXG4gICAgICAgIC8vIG1vc3QgY29tbW9uIHVzZSBjYXNlIGZvciB0aGlzIGlzIHRoZSBgZmxpcGAgbW9kaWZpZXIgY2hhbmdpbmcgdGhlXG4gICAgICAgIC8vIHBsYWNlbWVudCwgd2hpY2ggdGhlbiBuZWVkcyB0byByZS1ydW4gYWxsIHRoZSBtb2RpZmllcnMsIGJlY2F1c2UgdGhlXG4gICAgICAgIC8vIGxvZ2ljIHdhcyBwcmV2aW91c2x5IHJhbiBmb3IgdGhlIHByZXZpb3VzIHBsYWNlbWVudCBhbmQgaXMgdGhlcmVmb3JlXG4gICAgICAgIC8vIHN0YWxlL2luY29ycmVjdFxuXG4gICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgIHN0YXRlLnBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50OyAvLyBPbiBlYWNoIHVwZGF0ZSBjeWNsZSwgdGhlIGBtb2RpZmllcnNEYXRhYCBwcm9wZXJ0eSBmb3IgZWFjaCBtb2RpZmllclxuICAgICAgICAvLyBpcyBmaWxsZWQgd2l0aCB0aGUgaW5pdGlhbCBkYXRhIHNwZWNpZmllZCBieSB0aGUgbW9kaWZpZXIuIFRoaXMgbWVhbnNcbiAgICAgICAgLy8gaXQgZG9lc24ndCBwZXJzaXN0IGFuZCBpcyBmcmVzaCBvbiBlYWNoIHVwZGF0ZS5cbiAgICAgICAgLy8gVG8gZW5zdXJlIHBlcnNpc3RlbnQgZGF0YSwgdXNlIGAke25hbWV9I3BlcnNpc3RlbnRgXG5cbiAgICAgICAgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5mb3JFYWNoKGZ1bmN0aW9uIChtb2RpZmllcikge1xuICAgICAgICAgIHJldHVybiBzdGF0ZS5tb2RpZmllcnNEYXRhW21vZGlmaWVyLm5hbWVdID0gT2JqZWN0LmFzc2lnbih7fSwgbW9kaWZpZXIuZGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgICB2YXIgX19kZWJ1Z19sb29wc19fID0gMDtcblxuICAgICAgICBmb3IgKHZhciBpbmRleCA9IDA7IGluZGV4IDwgc3RhdGUub3JkZXJlZE1vZGlmaWVycy5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgICAgICAgICBfX2RlYnVnX2xvb3BzX18gKz0gMTtcblxuICAgICAgICAgICAgaWYgKF9fZGVidWdfbG9vcHNfXyA+IDEwMCkge1xuICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKElORklOSVRFX0xPT1BfRVJST1IpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBpZiAoc3RhdGUucmVzZXQgPT09IHRydWUpIHtcbiAgICAgICAgICAgIHN0YXRlLnJlc2V0ID0gZmFsc2U7XG4gICAgICAgICAgICBpbmRleCA9IC0xO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgdmFyIF9zdGF0ZSRvcmRlcmVkTW9kaWZpZSA9IHN0YXRlLm9yZGVyZWRNb2RpZmllcnNbaW5kZXhdLFxuICAgICAgICAgICAgICBmbiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5mbixcbiAgICAgICAgICAgICAgX3N0YXRlJG9yZGVyZWRNb2RpZmllMiA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5vcHRpb25zLFxuICAgICAgICAgICAgICBfb3B0aW9ucyA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZTIgPT09IHZvaWQgMCA/IHt9IDogX3N0YXRlJG9yZGVyZWRNb2RpZmllMixcbiAgICAgICAgICAgICAgbmFtZSA9IF9zdGF0ZSRvcmRlcmVkTW9kaWZpZS5uYW1lO1xuXG4gICAgICAgICAgaWYgKHR5cGVvZiBmbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgc3RhdGUgPSBmbih7XG4gICAgICAgICAgICAgIHN0YXRlOiBzdGF0ZSxcbiAgICAgICAgICAgICAgb3B0aW9uczogX29wdGlvbnMsXG4gICAgICAgICAgICAgIG5hbWU6IG5hbWUsXG4gICAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZVxuICAgICAgICAgICAgfSkgfHwgc3RhdGU7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9LFxuICAgICAgLy8gQXN5bmMgYW5kIG9wdGltaXN0aWNhbGx5IG9wdGltaXplZCB1cGRhdGUg4oCTIGl0IHdpbGwgbm90IGJlIGV4ZWN1dGVkIGlmXG4gICAgICAvLyBub3QgbmVjZXNzYXJ5IChkZWJvdW5jZWQgdG8gcnVuIGF0IG1vc3Qgb25jZS1wZXItdGljaylcbiAgICAgIHVwZGF0ZTogZGVib3VuY2UoZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5mb3JjZVVwZGF0ZSgpO1xuICAgICAgICAgIHJlc29sdmUoc3RhdGUpO1xuICAgICAgICB9KTtcbiAgICAgIH0pLFxuICAgICAgZGVzdHJveTogZnVuY3Rpb24gZGVzdHJveSgpIHtcbiAgICAgICAgY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpO1xuICAgICAgICBpc0Rlc3Ryb3llZCA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGlmICghYXJlVmFsaWRFbGVtZW50cyhyZWZlcmVuY2UsIHBvcHBlcikpIHtcbiAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihJTlZBTElEX0VMRU1FTlRfRVJST1IpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgfVxuXG4gICAgaW5zdGFuY2Uuc2V0T3B0aW9ucyhvcHRpb25zKS50aGVuKGZ1bmN0aW9uIChzdGF0ZSkge1xuICAgICAgaWYgKCFpc0Rlc3Ryb3llZCAmJiBvcHRpb25zLm9uRmlyc3RVcGRhdGUpIHtcbiAgICAgICAgb3B0aW9ucy5vbkZpcnN0VXBkYXRlKHN0YXRlKTtcbiAgICAgIH1cbiAgICB9KTsgLy8gTW9kaWZpZXJzIGhhdmUgdGhlIGFiaWxpdHkgdG8gZXhlY3V0ZSBhcmJpdHJhcnkgY29kZSBiZWZvcmUgdGhlIGZpcnN0XG4gICAgLy8gdXBkYXRlIGN5Y2xlIHJ1bnMuIFRoZXkgd2lsbCBiZSBleGVjdXRlZCBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGUgdXBkYXRlXG4gICAgLy8gY3ljbGUuIFRoaXMgaXMgdXNlZnVsIHdoZW4gYSBtb2RpZmllciBhZGRzIHNvbWUgcGVyc2lzdGVudCBkYXRhIHRoYXRcbiAgICAvLyBvdGhlciBtb2RpZmllcnMgbmVlZCB0byB1c2UsIGJ1dCB0aGUgbW9kaWZpZXIgaXMgcnVuIGFmdGVyIHRoZSBkZXBlbmRlbnRcbiAgICAvLyBvbmUuXG5cbiAgICBmdW5jdGlvbiBydW5Nb2RpZmllckVmZmVjdHMoKSB7XG4gICAgICBzdGF0ZS5vcmRlcmVkTW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKF9yZWYzKSB7XG4gICAgICAgIHZhciBuYW1lID0gX3JlZjMubmFtZSxcbiAgICAgICAgICAgIF9yZWYzJG9wdGlvbnMgPSBfcmVmMy5vcHRpb25zLFxuICAgICAgICAgICAgb3B0aW9ucyA9IF9yZWYzJG9wdGlvbnMgPT09IHZvaWQgMCA/IHt9IDogX3JlZjMkb3B0aW9ucyxcbiAgICAgICAgICAgIGVmZmVjdCA9IF9yZWYzLmVmZmVjdDtcblxuICAgICAgICBpZiAodHlwZW9mIGVmZmVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIHZhciBjbGVhbnVwRm4gPSBlZmZlY3Qoe1xuICAgICAgICAgICAgc3RhdGU6IHN0YXRlLFxuICAgICAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgICAgIGluc3RhbmNlOiBpbnN0YW5jZSxcbiAgICAgICAgICAgIG9wdGlvbnM6IG9wdGlvbnNcbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHZhciBub29wRm4gPSBmdW5jdGlvbiBub29wRm4oKSB7fTtcblxuICAgICAgICAgIGVmZmVjdENsZWFudXBGbnMucHVzaChjbGVhbnVwRm4gfHwgbm9vcEZuKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2xlYW51cE1vZGlmaWVyRWZmZWN0cygpIHtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMuZm9yRWFjaChmdW5jdGlvbiAoZm4pIHtcbiAgICAgICAgcmV0dXJuIGZuKCk7XG4gICAgICB9KTtcbiAgICAgIGVmZmVjdENsZWFudXBGbnMgPSBbXTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG59XG5leHBvcnQgdmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3IoKTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbnRhaW5zKHBhcmVudCwgY2hpbGQpIHtcbiAgdmFyIHJvb3ROb2RlID0gY2hpbGQuZ2V0Um9vdE5vZGUgJiYgY2hpbGQuZ2V0Um9vdE5vZGUoKTsgLy8gRmlyc3QsIGF0dGVtcHQgd2l0aCBmYXN0ZXIgbmF0aXZlIG1ldGhvZFxuXG4gIGlmIChwYXJlbnQuY29udGFpbnMoY2hpbGQpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gdGhlbiBmYWxsYmFjayB0byBjdXN0b20gaW1wbGVtZW50YXRpb24gd2l0aCBTaGFkb3cgRE9NIHN1cHBvcnRcbiAgZWxzZSBpZiAocm9vdE5vZGUgJiYgaXNTaGFkb3dSb290KHJvb3ROb2RlKSkge1xuICAgICAgdmFyIG5leHQgPSBjaGlsZDtcblxuICAgICAgZG8ge1xuICAgICAgICBpZiAobmV4dCAmJiBwYXJlbnQuaXNTYW1lTm9kZShuZXh0KSkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXTogbmVlZCBhIGJldHRlciB3YXkgdG8gaGFuZGxlIHRoaXMuLi5cblxuXG4gICAgICAgIG5leHQgPSBuZXh0LnBhcmVudE5vZGUgfHwgbmV4dC5ob3N0O1xuICAgICAgfSB3aGlsZSAobmV4dCk7XG4gICAgfSAvLyBHaXZlIHVwLCB0aGUgcmVzdWx0IGlzIGZhbHNlXG5cblxuICByZXR1cm4gZmFsc2U7XG59IiwiaW1wb3J0IHsgaXNFbGVtZW50LCBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IHsgcm91bmQgfSBmcm9tIFwiLi4vdXRpbHMvbWF0aC5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc0xheW91dFZpZXdwb3J0IGZyb20gXCIuL2lzTGF5b3V0Vmlld3BvcnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCBpbmNsdWRlU2NhbGUsIGlzRml4ZWRTdHJhdGVneSkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuXG4gIGlmIChpc0ZpeGVkU3RyYXRlZ3kgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWRTdHJhdGVneSA9IGZhbHNlO1xuICB9XG5cbiAgdmFyIGNsaWVudFJlY3QgPSBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB2YXIgc2NhbGVYID0gMTtcbiAgdmFyIHNjYWxlWSA9IDE7XG5cbiAgaWYgKGluY2x1ZGVTY2FsZSAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpKSB7XG4gICAgc2NhbGVYID0gZWxlbWVudC5vZmZzZXRXaWR0aCA+IDAgPyByb3VuZChjbGllbnRSZWN0LndpZHRoKSAvIGVsZW1lbnQub2Zmc2V0V2lkdGggfHwgMSA6IDE7XG4gICAgc2NhbGVZID0gZWxlbWVudC5vZmZzZXRIZWlnaHQgPiAwID8gcm91bmQoY2xpZW50UmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMSA6IDE7XG4gIH1cblxuICB2YXIgX3JlZiA9IGlzRWxlbWVudChlbGVtZW50KSA/IGdldFdpbmRvdyhlbGVtZW50KSA6IHdpbmRvdyxcbiAgICAgIHZpc3VhbFZpZXdwb3J0ID0gX3JlZi52aXN1YWxWaWV3cG9ydDtcblxuICB2YXIgYWRkVmlzdWFsT2Zmc2V0cyA9ICFpc0xheW91dFZpZXdwb3J0KCkgJiYgaXNGaXhlZFN0cmF0ZWd5O1xuICB2YXIgeCA9IChjbGllbnRSZWN0LmxlZnQgKyAoYWRkVmlzdWFsT2Zmc2V0cyAmJiB2aXN1YWxWaWV3cG9ydCA/IHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQgOiAwKSkgLyBzY2FsZVg7XG4gIHZhciB5ID0gKGNsaWVudFJlY3QudG9wICsgKGFkZFZpc3VhbE9mZnNldHMgJiYgdmlzdWFsVmlld3BvcnQgPyB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3AgOiAwKSkgLyBzY2FsZVk7XG4gIHZhciB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGggLyBzY2FsZVg7XG4gIHZhciBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlWTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgdG9wOiB5LFxuICAgIHJpZ2h0OiB4ICsgd2lkdGgsXG4gICAgYm90dG9tOiB5ICsgaGVpZ2h0LFxuICAgIGxlZnQ6IHgsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiaW1wb3J0IHsgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRWaWV3cG9ydFJlY3QgZnJvbSBcIi4vZ2V0Vmlld3BvcnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRSZWN0IGZyb20gXCIuL2dldERvY3VtZW50UmVjdC5qc1wiO1xuaW1wb3J0IGxpc3RTY3JvbGxQYXJlbnRzIGZyb20gXCIuL2xpc3RTY3JvbGxQYXJlbnRzLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuL2dldE9mZnNldFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRDb21wdXRlZFN0eWxlIGZyb20gXCIuL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgY29udGFpbnMgZnJvbSBcIi4vY29udGFpbnMuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4uL3V0aWxzL3JlY3RUb0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCB7IG1heCwgbWluIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgZmFsc2UsIHN0cmF0ZWd5ID09PSAnZml4ZWQnKTtcbiAgcmVjdC50b3AgPSByZWN0LnRvcCArIGVsZW1lbnQuY2xpZW50VG9wO1xuICByZWN0LmxlZnQgPSByZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIHJlY3QuYm90dG9tID0gcmVjdC50b3AgKyBlbGVtZW50LmNsaWVudEhlaWdodDtcbiAgcmVjdC5yaWdodCA9IHJlY3QubGVmdCArIGVsZW1lbnQuY2xpZW50V2lkdGg7XG4gIHJlY3Qud2lkdGggPSBlbGVtZW50LmNsaWVudFdpZHRoO1xuICByZWN0LmhlaWdodCA9IGVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuICByZWN0LnggPSByZWN0LmxlZnQ7XG4gIHJlY3QueSA9IHJlY3QudG9wO1xuICByZXR1cm4gcmVjdDtcbn1cblxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgY2xpcHBpbmdQYXJlbnQsIHN0cmF0ZWd5KSB7XG4gIHJldHVybiBjbGlwcGluZ1BhcmVudCA9PT0gdmlld3BvcnQgPyByZWN0VG9DbGllbnRSZWN0KGdldFZpZXdwb3J0UmVjdChlbGVtZW50LCBzdHJhdGVneSkpIDogaXNFbGVtZW50KGNsaXBwaW5nUGFyZW50KSA/IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSkgOiByZWN0VG9DbGllbnRSZWN0KGdldERvY3VtZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpKTtcbn0gLy8gQSBcImNsaXBwaW5nIHBhcmVudFwiIGlzIGFuIG92ZXJmbG93YWJsZSBjb250YWluZXIgd2l0aCB0aGUgY2hhcmFjdGVyaXN0aWMgb2Zcbi8vIGNsaXBwaW5nIChvciBoaWRpbmcpIG92ZXJmbG93aW5nIGVsZW1lbnRzIHdpdGggYSBwb3NpdGlvbiBkaWZmZXJlbnQgZnJvbVxuLy8gYGluaXRpYWxgXG5cblxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIHtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IGxpc3RTY3JvbGxQYXJlbnRzKGdldFBhcmVudE5vZGUoZWxlbWVudCkpO1xuICB2YXIgY2FuRXNjYXBlQ2xpcHBpbmcgPSBbJ2Fic29sdXRlJywgJ2ZpeGVkJ10uaW5kZXhPZihnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpLnBvc2l0aW9uKSA+PSAwO1xuICB2YXIgY2xpcHBlckVsZW1lbnQgPSBjYW5Fc2NhcGVDbGlwcGluZyAmJiBpc0hUTUxFbGVtZW50KGVsZW1lbnQpID8gZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpIDogZWxlbWVudDtcblxuICBpZiAoIWlzRWxlbWVudChjbGlwcGVyRWxlbWVudCkpIHtcbiAgICByZXR1cm4gW107XG4gIH0gLy8gJEZsb3dGaXhNZVtpbmNvbXBhdGlibGUtcmV0dXJuXTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL2Zsb3cvaXNzdWVzLzE0MTRcblxuXG4gIHJldHVybiBjbGlwcGluZ1BhcmVudHMuZmlsdGVyKGZ1bmN0aW9uIChjbGlwcGluZ1BhcmVudCkge1xuICAgIHJldHVybiBpc0VsZW1lbnQoY2xpcHBpbmdQYXJlbnQpICYmIGNvbnRhaW5zKGNsaXBwaW5nUGFyZW50LCBjbGlwcGVyRWxlbWVudCkgJiYgZ2V0Tm9kZU5hbWUoY2xpcHBpbmdQYXJlbnQpICE9PSAnYm9keSc7XG4gIH0pO1xufSAvLyBHZXRzIHRoZSBtYXhpbXVtIGFyZWEgdGhhdCB0aGUgZWxlbWVudCBpcyB2aXNpYmxlIGluIGR1ZSB0byBhbnkgbnVtYmVyIG9mXG4vLyBjbGlwcGluZyBwYXJlbnRzXG5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KGVsZW1lbnQsIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KSB7XG4gIHZhciBtYWluQ2xpcHBpbmdQYXJlbnRzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ1BhcmVudHMnID8gZ2V0Q2xpcHBpbmdQYXJlbnRzKGVsZW1lbnQpIDogW10uY29uY2F0KGJvdW5kYXJ5KTtcbiAgdmFyIGNsaXBwaW5nUGFyZW50cyA9IFtdLmNvbmNhdChtYWluQ2xpcHBpbmdQYXJlbnRzLCBbcm9vdEJvdW5kYXJ5XSk7XG4gIHZhciBmaXJzdENsaXBwaW5nUGFyZW50ID0gY2xpcHBpbmdQYXJlbnRzWzBdO1xuICB2YXIgY2xpcHBpbmdSZWN0ID0gY2xpcHBpbmdQYXJlbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjUmVjdCwgY2xpcHBpbmdQYXJlbnQpIHtcbiAgICB2YXIgcmVjdCA9IGdldENsaWVudFJlY3RGcm9tTWl4ZWRUeXBlKGVsZW1lbnQsIGNsaXBwaW5nUGFyZW50LCBzdHJhdGVneSk7XG4gICAgYWNjUmVjdC50b3AgPSBtYXgocmVjdC50b3AsIGFjY1JlY3QudG9wKTtcbiAgICBhY2NSZWN0LnJpZ2h0ID0gbWluKHJlY3QucmlnaHQsIGFjY1JlY3QucmlnaHQpO1xuICAgIGFjY1JlY3QuYm90dG9tID0gbWluKHJlY3QuYm90dG9tLCBhY2NSZWN0LmJvdHRvbSk7XG4gICAgYWNjUmVjdC5sZWZ0ID0gbWF4KHJlY3QubGVmdCwgYWNjUmVjdC5sZWZ0KTtcbiAgICByZXR1cm4gYWNjUmVjdDtcbiAgfSwgZ2V0Q2xpZW50UmVjdEZyb21NaXhlZFR5cGUoZWxlbWVudCwgZmlyc3RDbGlwcGluZ1BhcmVudCwgc3RyYXRlZ3kpKTtcbiAgY2xpcHBpbmdSZWN0LndpZHRoID0gY2xpcHBpbmdSZWN0LnJpZ2h0IC0gY2xpcHBpbmdSZWN0LmxlZnQ7XG4gIGNsaXBwaW5nUmVjdC5oZWlnaHQgPSBjbGlwcGluZ1JlY3QuYm90dG9tIC0gY2xpcHBpbmdSZWN0LnRvcDtcbiAgY2xpcHBpbmdSZWN0LnggPSBjbGlwcGluZ1JlY3QubGVmdDtcbiAgY2xpcHBpbmdSZWN0LnkgPSBjbGlwcGluZ1JlY3QudG9wO1xuICByZXR1cm4gY2xpcHBpbmdSZWN0O1xufSIsImltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZVNjcm9sbCBmcm9tIFwiLi9nZXROb2RlU2Nyb2xsLmpzXCI7XG5pbXBvcnQgZ2V0Tm9kZU5hbWUgZnJvbSBcIi4vZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi9pbnN0YW5jZU9mLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuL2dldERvY3VtZW50RWxlbWVudC5qc1wiO1xuaW1wb3J0IGlzU2Nyb2xsUGFyZW50IGZyb20gXCIuL2lzU2Nyb2xsUGFyZW50LmpzXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi91dGlscy9tYXRoLmpzXCI7XG5cbmZ1bmN0aW9uIGlzRWxlbWVudFNjYWxlZChlbGVtZW50KSB7XG4gIHZhciByZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgdmFyIHNjYWxlWCA9IHJvdW5kKHJlY3Qud2lkdGgpIC8gZWxlbWVudC5vZmZzZXRXaWR0aCB8fCAxO1xuICB2YXIgc2NhbGVZID0gcm91bmQocmVjdC5oZWlnaHQpIC8gZWxlbWVudC5vZmZzZXRIZWlnaHQgfHwgMTtcbiAgcmV0dXJuIHNjYWxlWCAhPT0gMSB8fCBzY2FsZVkgIT09IDE7XG59IC8vIFJldHVybnMgdGhlIGNvbXBvc2l0ZSByZWN0IG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gaXRzIG9mZnNldFBhcmVudC5cbi8vIENvbXBvc2l0ZSBtZWFucyBpdCB0YWtlcyBpbnRvIGFjY291bnQgdHJhbnNmb3JtcyBhcyB3ZWxsIGFzIGxheW91dC5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wb3NpdGVSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnQsIGlzRml4ZWQpIHtcbiAgaWYgKGlzRml4ZWQgPT09IHZvaWQgMCkge1xuICAgIGlzRml4ZWQgPSBmYWxzZTtcbiAgfVxuXG4gIHZhciBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgdmFyIG9mZnNldFBhcmVudElzU2NhbGVkID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpICYmIGlzRWxlbWVudFNjYWxlZChvZmZzZXRQYXJlbnQpO1xuICB2YXIgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIHZhciByZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnRPclZpcnR1YWxFbGVtZW50LCBvZmZzZXRQYXJlbnRJc1NjYWxlZCwgaXNGaXhlZCk7XG4gIHZhciBzY3JvbGwgPSB7XG4gICAgc2Nyb2xsTGVmdDogMCxcbiAgICBzY3JvbGxUb3A6IDBcbiAgfTtcbiAgdmFyIG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50IHx8ICFpc09mZnNldFBhcmVudEFuRWxlbWVudCAmJiAhaXNGaXhlZCkge1xuICAgIGlmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpICE9PSAnYm9keScgfHwgLy8gaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMDc4XG4gICAgaXNTY3JvbGxQYXJlbnQoZG9jdW1lbnRFbGVtZW50KSkge1xuICAgICAgc2Nyb2xsID0gZ2V0Tm9kZVNjcm9sbChvZmZzZXRQYXJlbnQpO1xuICAgIH1cblxuICAgIGlmIChpc0hUTUxFbGVtZW50KG9mZnNldFBhcmVudCkpIHtcbiAgICAgIG9mZnNldHMgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qob2Zmc2V0UGFyZW50LCB0cnVlKTtcbiAgICAgIG9mZnNldHMueCArPSBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSArPSBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH0gZWxzZSBpZiAoZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBvZmZzZXRzLnggPSBnZXRXaW5kb3dTY3JvbGxCYXJYKGRvY3VtZW50RWxlbWVudCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufSIsImltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGdldFdpbmRvdyhlbGVtZW50KS5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xufSIsImltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSB7XG4gIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl06IGFzc3VtZSBib2R5IGlzIGFsd2F5cyBhdmFpbGFibGVcbiAgcmV0dXJuICgoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5vd25lckRvY3VtZW50IDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gIGVsZW1lbnQuZG9jdW1lbnQpIHx8IHdpbmRvdy5kb2N1bWVudCkuZG9jdW1lbnRFbGVtZW50O1xufSIsImltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsIGZyb20gXCIuL2dldFdpbmRvd1Njcm9sbC5qc1wiO1xuaW1wb3J0IHsgbWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gR2V0cyB0aGUgZW50aXJlIHNpemUgb2YgdGhlIHNjcm9sbGFibGUgZG9jdW1lbnQgYXJlYSwgZXZlbiBleHRlbmRpbmcgb3V0c2lkZVxuLy8gb2YgdGhlIGA8aHRtbD5gIGFuZCBgPGJvZHk+YCByZWN0IGJvdW5kcyBpZiBob3Jpem9udGFsbHkgc2Nyb2xsYWJsZVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICB2YXIgX2VsZW1lbnQkb3duZXJEb2N1bWVuO1xuXG4gIHZhciBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICB2YXIgd2luU2Nyb2xsID0gZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpO1xuICB2YXIgYm9keSA9IChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keTtcbiAgdmFyIHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkgPyBib2R5LnNjcm9sbFdpZHRoIDogMCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKTtcbiAgdmFyIGhlaWdodCA9IG1heChodG1sLnNjcm9sbEhlaWdodCwgaHRtbC5jbGllbnRIZWlnaHQsIGJvZHkgPyBib2R5LnNjcm9sbEhlaWdodCA6IDAsIGJvZHkgPyBib2R5LmNsaWVudEhlaWdodCA6IDApO1xuICB2YXIgeCA9IC13aW5TY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIHZhciB5ID0gLXdpblNjcm9sbC5zY3JvbGxUb3A7XG5cbiAgaWYgKGdldENvbXB1dGVkU3R5bGUoYm9keSB8fCBodG1sKS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keSA/IGJvZHkuY2xpZW50V2lkdGggOiAwKSAtIHdpZHRoO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0SFRNTEVsZW1lbnRTY3JvbGwoZWxlbWVudCkge1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IGVsZW1lbnQuc2Nyb2xsTGVmdCxcbiAgICBzY3JvbGxUb3A6IGVsZW1lbnQuc2Nyb2xsVG9wXG4gIH07XG59IiwiaW1wb3J0IGdldEJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjsgLy8gUmV0dXJucyB0aGUgbGF5b3V0IHJlY3Qgb2YgYW4gZWxlbWVudCByZWxhdGl2ZSB0byBpdHMgb2Zmc2V0UGFyZW50LiBMYXlvdXRcbi8vIG1lYW5zIGl0IGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQgdHJhbnNmb3Jtcy5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TGF5b3V0UmVjdChlbGVtZW50KSB7XG4gIHZhciBjbGllbnRSZWN0ID0gZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGVsZW1lbnQpOyAvLyBVc2UgdGhlIGNsaWVudFJlY3Qgc2l6ZXMgaWYgaXQncyBub3QgYmVlbiB0cmFuc2Zvcm1lZC5cbiAgLy8gRml4ZXMgaHR0cHM6Ly9naXRodWIuY29tL3BvcHBlcmpzL3BvcHBlci1jb3JlL2lzc3Vlcy8xMjIzXG5cbiAgdmFyIHdpZHRoID0gZWxlbWVudC5vZmZzZXRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuXG4gIGlmIChNYXRoLmFicyhjbGllbnRSZWN0LndpZHRoIC0gd2lkdGgpIDw9IDEpIHtcbiAgICB3aWR0aCA9IGNsaWVudFJlY3Qud2lkdGg7XG4gIH1cblxuICBpZiAoTWF0aC5hYnMoY2xpZW50UmVjdC5oZWlnaHQgLSBoZWlnaHQpIDw9IDEpIHtcbiAgICBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodDtcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgeDogZWxlbWVudC5vZmZzZXRMZWZ0LFxuICAgIHk6IGVsZW1lbnQub2Zmc2V0VG9wLFxuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldE5vZGVOYW1lKGVsZW1lbnQpIHtcbiAgcmV0dXJuIGVsZW1lbnQgPyAoZWxlbWVudC5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6IG51bGw7XG59IiwiaW1wb3J0IGdldFdpbmRvd1Njcm9sbCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGwuanNcIjtcbmltcG9ydCBnZXRXaW5kb3cgZnJvbSBcIi4vZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGdldEhUTUxFbGVtZW50U2Nyb2xsIGZyb20gXCIuL2dldEhUTUxFbGVtZW50U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXROb2RlU2Nyb2xsKG5vZGUpIHtcbiAgaWYgKG5vZGUgPT09IGdldFdpbmRvdyhub2RlKSB8fCAhaXNIVE1MRWxlbWVudChub2RlKSkge1xuICAgIHJldHVybiBnZXRXaW5kb3dTY3JvbGwobm9kZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGdldEhUTUxFbGVtZW50U2Nyb2xsKG5vZGUpO1xuICB9XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldENvbXB1dGVkU3R5bGUgZnJvbSBcIi4vZ2V0Q29tcHV0ZWRTdHlsZS5qc1wiO1xuaW1wb3J0IHsgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IGlzVGFibGVFbGVtZW50IGZyb20gXCIuL2lzVGFibGVFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0UGFyZW50Tm9kZSBmcm9tIFwiLi9nZXRQYXJlbnROb2RlLmpzXCI7XG5pbXBvcnQgZ2V0VUFTdHJpbmcgZnJvbSBcIi4uL3V0aWxzL3VzZXJBZ2VudC5qc1wiO1xuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQpIHtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGVsZW1lbnQpIHx8IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9wb3BwZXJqcy9wb3BwZXItY29yZS9pc3N1ZXMvODM3XG4gIGdldENvbXB1dGVkU3R5bGUoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBlbGVtZW50Lm9mZnNldFBhcmVudDtcbn0gLy8gYC5vZmZzZXRQYXJlbnRgIHJlcG9ydHMgYG51bGxgIGZvciBmaXhlZCBlbGVtZW50cywgd2hpbGUgYWJzb2x1dGUgZWxlbWVudHNcbi8vIHJldHVybiB0aGUgY29udGFpbmluZyBibG9ja1xuXG5cbmZ1bmN0aW9uIGdldENvbnRhaW5pbmdCbG9jayhlbGVtZW50KSB7XG4gIHZhciBpc0ZpcmVmb3ggPSAvZmlyZWZveC9pLnRlc3QoZ2V0VUFTdHJpbmcoKSk7XG4gIHZhciBpc0lFID0gL1RyaWRlbnQvaS50ZXN0KGdldFVBU3RyaW5nKCkpO1xuXG4gIGlmIChpc0lFICYmIGlzSFRNTEVsZW1lbnQoZWxlbWVudCkpIHtcbiAgICAvLyBJbiBJRSA5LCAxMCBhbmQgMTEgZml4ZWQgZWxlbWVudHMgY29udGFpbmluZyBibG9jayBpcyBhbHdheXMgZXN0YWJsaXNoZWQgYnkgdGhlIHZpZXdwb3J0XG4gICAgdmFyIGVsZW1lbnRDc3MgPSBnZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRDc3MucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG5cbiAgaWYgKGlzU2hhZG93Um9vdChjdXJyZW50Tm9kZSkpIHtcbiAgICBjdXJyZW50Tm9kZSA9IGN1cnJlbnROb2RlLmhvc3Q7XG4gIH1cblxuICB3aGlsZSAoaXNIVE1MRWxlbWVudChjdXJyZW50Tm9kZSkgJiYgWydodG1sJywgJ2JvZHknXS5pbmRleE9mKGdldE5vZGVOYW1lKGN1cnJlbnROb2RlKSkgPCAwKSB7XG4gICAgdmFyIGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudE5vZGUpOyAvLyBUaGlzIGlzIG5vbi1leGhhdXN0aXZlIGJ1dCBjb3ZlcnMgdGhlIG1vc3QgY29tbW9uIENTUyBwcm9wZXJ0aWVzIHRoYXRcbiAgICAvLyBjcmVhdGUgYSBjb250YWluaW5nIGJsb2NrLlxuICAgIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG5cbiAgICBpZiAoY3NzLnRyYW5zZm9ybSAhPT0gJ25vbmUnIHx8IGNzcy5wZXJzcGVjdGl2ZSAhPT0gJ25vbmUnIHx8IGNzcy5jb250YWluID09PSAncGFpbnQnIHx8IFsndHJhbnNmb3JtJywgJ3BlcnNwZWN0aXZlJ10uaW5kZXhPZihjc3Mud2lsbENoYW5nZSkgIT09IC0xIHx8IGlzRmlyZWZveCAmJiBjc3Mud2lsbENoYW5nZSA9PT0gJ2ZpbHRlcicgfHwgaXNGaXJlZm94ICYmIGNzcy5maWx0ZXIgJiYgY3NzLmZpbHRlciAhPT0gJ25vbmUnKSB7XG4gICAgICByZXR1cm4gY3VycmVudE5vZGU7XG4gICAgfSBlbHNlIHtcbiAgICAgIGN1cnJlbnROb2RlID0gY3VycmVudE5vZGUucGFyZW50Tm9kZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn0gLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cblxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPZmZzZXRQYXJlbnQoZWxlbWVudCkge1xuICB2YXIgd2luZG93ID0gZ2V0V2luZG93KGVsZW1lbnQpO1xuICB2YXIgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChlbGVtZW50KTtcblxuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykge1xuICAgIG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQob2Zmc2V0UGFyZW50KTtcbiAgfVxuXG4gIGlmIChvZmZzZXRQYXJlbnQgJiYgKGdldE5vZGVOYW1lKG9mZnNldFBhcmVudCkgPT09ICdodG1sJyB8fCBnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnYm9keScgJiYgZ2V0Q29tcHV0ZWRTdHlsZShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJykpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG9mZnNldFBhcmVudCB8fCBnZXRDb250YWluaW5nQmxvY2soZWxlbWVudCkgfHwgd2luZG93O1xufSIsImltcG9ydCBnZXROb2RlTmFtZSBmcm9tIFwiLi9nZXROb2RlTmFtZS5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCB7IGlzU2hhZG93Um9vdCB9IGZyb20gXCIuL2luc3RhbmNlT2YuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFBhcmVudE5vZGUoZWxlbWVudCkge1xuICBpZiAoZ2V0Tm9kZU5hbWUoZWxlbWVudCkgPT09ICdodG1sJykge1xuICAgIHJldHVybiBlbGVtZW50O1xuICB9XG5cbiAgcmV0dXJuICgvLyB0aGlzIGlzIGEgcXVpY2tlciAoYnV0IGxlc3MgdHlwZSBzYWZlKSB3YXkgdG8gc2F2ZSBxdWl0ZSBzb21lIGJ5dGVzIGZyb20gdGhlIGJ1bmRsZVxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLXJldHVybl1cbiAgICAvLyAkRmxvd0ZpeE1lW3Byb3AtbWlzc2luZ11cbiAgICBlbGVtZW50LmFzc2lnbmVkU2xvdCB8fCAvLyBzdGVwIGludG8gdGhlIHNoYWRvdyBET00gb2YgdGhlIHBhcmVudCBvZiBhIHNsb3R0ZWQgbm9kZVxuICAgIGVsZW1lbnQucGFyZW50Tm9kZSB8fCAoIC8vIERPTSBFbGVtZW50IGRldGVjdGVkXG4gICAgaXNTaGFkb3dSb290KGVsZW1lbnQpID8gZWxlbWVudC5ob3N0IDogbnVsbCkgfHwgLy8gU2hhZG93Um9vdCBkZXRlY3RlZFxuICAgIC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBIVE1MRWxlbWVudCBpcyBhIE5vZGVcbiAgICBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkgLy8gZmFsbGJhY2tcblxuICApO1xufSIsImltcG9ydCBnZXRQYXJlbnROb2RlIGZyb20gXCIuL2dldFBhcmVudE5vZGUuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4vaW5zdGFuY2VPZi5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0U2Nyb2xsUGFyZW50KG5vZGUpIHtcbiAgaWYgKFsnaHRtbCcsICdib2R5JywgJyNkb2N1bWVudCddLmluZGV4T2YoZ2V0Tm9kZU5hbWUobm9kZSkpID49IDApIHtcbiAgICAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS1yZXR1cm5dOiBhc3N1bWUgYm9keSBpcyBhbHdheXMgYXZhaWxhYmxlXG4gICAgcmV0dXJuIG5vZGUub3duZXJEb2N1bWVudC5ib2R5O1xuICB9XG5cbiAgaWYgKGlzSFRNTEVsZW1lbnQobm9kZSkgJiYgaXNTY3JvbGxQYXJlbnQobm9kZSkpIHtcbiAgICByZXR1cm4gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBnZXRTY3JvbGxQYXJlbnQoZ2V0UGFyZW50Tm9kZShub2RlKSk7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4vZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93U2Nyb2xsQmFyWCBmcm9tIFwiLi9nZXRXaW5kb3dTY3JvbGxCYXJYLmpzXCI7XG5pbXBvcnQgaXNMYXlvdXRWaWV3cG9ydCBmcm9tIFwiLi9pc0xheW91dFZpZXdwb3J0LmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgdmFyIHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgdmFyIGh0bWwgPSBnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCk7XG4gIHZhciB2aXN1YWxWaWV3cG9ydCA9IHdpbi52aXN1YWxWaWV3cG9ydDtcbiAgdmFyIHdpZHRoID0gaHRtbC5jbGllbnRXaWR0aDtcbiAgdmFyIGhlaWdodCA9IGh0bWwuY2xpZW50SGVpZ2h0O1xuICB2YXIgeCA9IDA7XG4gIHZhciB5ID0gMDtcblxuICBpZiAodmlzdWFsVmlld3BvcnQpIHtcbiAgICB3aWR0aCA9IHZpc3VhbFZpZXdwb3J0LndpZHRoO1xuICAgIGhlaWdodCA9IHZpc3VhbFZpZXdwb3J0LmhlaWdodDtcbiAgICB2YXIgbGF5b3V0Vmlld3BvcnQgPSBpc0xheW91dFZpZXdwb3J0KCk7XG5cbiAgICBpZiAobGF5b3V0Vmlld3BvcnQgfHwgIWxheW91dFZpZXdwb3J0ICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogd2lkdGgsXG4gICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgeDogeCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCksXG4gICAgeTogeVxuICB9O1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIGlmIChub2RlID09IG51bGwpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG5cbiAgaWYgKG5vZGUudG9TdHJpbmcoKSAhPT0gJ1tvYmplY3QgV2luZG93XScpIHtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9IG5vZGUub3duZXJEb2N1bWVudDtcbiAgICByZXR1cm4gb3duZXJEb2N1bWVudCA/IG93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93IDogd2luZG93O1xuICB9XG5cbiAgcmV0dXJuIG5vZGU7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFdpbmRvd1Njcm9sbChub2RlKSB7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3cobm9kZSk7XG4gIHZhciBzY3JvbGxMZWZ0ID0gd2luLnBhZ2VYT2Zmc2V0O1xuICB2YXIgc2Nyb2xsVG9wID0gd2luLnBhZ2VZT2Zmc2V0O1xuICByZXR1cm4ge1xuICAgIHNjcm9sbExlZnQ6IHNjcm9sbExlZnQsXG4gICAgc2Nyb2xsVG9wOiBzY3JvbGxUb3BcbiAgfTtcbn0iLCJpbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IGdldERvY3VtZW50RWxlbWVudCBmcm9tIFwiLi9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRXaW5kb3dTY3JvbGwgZnJvbSBcIi4vZ2V0V2luZG93U2Nyb2xsLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgLy8gUG9wcGVyIDEgaXMgYnJva2VuIGluIHRoaXMgY2FzZSBhbmQgbmV2ZXIgaGFkIGEgYnVnIHJlcG9ydCBzbyBsZXQncyBhc3N1bWVcbiAgLy8gaXQncyBub3QgYW4gaXNzdWUuIEkgZG9uJ3QgdGhpbmsgYW55b25lIGV2ZXIgc3BlY2lmaWVzIHdpZHRoIG9uIDxodG1sPlxuICAvLyBhbnl3YXkuXG4gIC8vIEJyb3dzZXJzIHdoZXJlIHRoZSBsZWZ0IHNjcm9sbGJhciBkb2Vzbid0IGNhdXNlIGFuIGlzc3VlIHJlcG9ydCBgMGAgZm9yXG4gIC8vIHRoaXMgKGUuZy4gRWRnZSAyMDE5LCBJRTExLCBTYWZhcmkpXG4gIHJldHVybiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpKS5sZWZ0ICsgZ2V0V2luZG93U2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59IiwiaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcblxuZnVuY3Rpb24gaXNFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuRWxlbWVudDtcbiAgcmV0dXJuIG5vZGUgaW5zdGFuY2VvZiBPd25FbGVtZW50IHx8IG5vZGUgaW5zdGFuY2VvZiBFbGVtZW50O1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KG5vZGUpIHtcbiAgdmFyIE93bkVsZW1lbnQgPSBnZXRXaW5kb3cobm9kZSkuSFRNTEVsZW1lbnQ7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgSFRNTEVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzU2hhZG93Um9vdChub2RlKSB7XG4gIC8vIElFIDExIGhhcyBubyBTaGFkb3dSb290XG4gIGlmICh0eXBlb2YgU2hhZG93Um9vdCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgT3duRWxlbWVudCA9IGdldFdpbmRvdyhub2RlKS5TaGFkb3dSb290O1xuICByZXR1cm4gbm9kZSBpbnN0YW5jZW9mIE93bkVsZW1lbnQgfHwgbm9kZSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3Q7XG59XG5cbmV4cG9ydCB7IGlzRWxlbWVudCwgaXNIVE1MRWxlbWVudCwgaXNTaGFkb3dSb290IH07IiwiaW1wb3J0IGdldFVBU3RyaW5nIGZyb20gXCIuLi91dGlscy91c2VyQWdlbnQuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGlzTGF5b3V0Vmlld3BvcnQoKSB7XG4gIHJldHVybiAhL14oKD8hY2hyb21lfGFuZHJvaWQpLikqc2FmYXJpL2kudGVzdChnZXRVQVN0cmluZygpKTtcbn0iLCJpbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi9nZXRDb21wdXRlZFN0eWxlLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1Njcm9sbFBhcmVudChlbGVtZW50KSB7XG4gIC8vIEZpcmVmb3ggd2FudHMgdXMgdG8gY2hlY2sgYC14YCBhbmQgYC15YCB2YXJpYXRpb25zIGFzIHdlbGxcbiAgdmFyIF9nZXRDb21wdXRlZFN0eWxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KSxcbiAgICAgIG92ZXJmbG93ID0gX2dldENvbXB1dGVkU3R5bGUub3ZlcmZsb3csXG4gICAgICBvdmVyZmxvd1ggPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1gsXG4gICAgICBvdmVyZmxvd1kgPSBfZ2V0Q29tcHV0ZWRTdHlsZS5vdmVyZmxvd1k7XG5cbiAgcmV0dXJuIC9hdXRvfHNjcm9sbHxvdmVybGF5fGhpZGRlbi8udGVzdChvdmVyZmxvdyArIG92ZXJmbG93WSArIG92ZXJmbG93WCk7XG59IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuL2dldE5vZGVOYW1lLmpzXCI7XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBpc1RhYmxlRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiBbJ3RhYmxlJywgJ3RkJywgJ3RoJ10uaW5kZXhPZihnZXROb2RlTmFtZShlbGVtZW50KSkgPj0gMDtcbn0iLCJpbXBvcnQgZ2V0U2Nyb2xsUGFyZW50IGZyb20gXCIuL2dldFNjcm9sbFBhcmVudC5qc1wiO1xuaW1wb3J0IGdldFBhcmVudE5vZGUgZnJvbSBcIi4vZ2V0UGFyZW50Tm9kZS5qc1wiO1xuaW1wb3J0IGdldFdpbmRvdyBmcm9tIFwiLi9nZXRXaW5kb3cuanNcIjtcbmltcG9ydCBpc1Njcm9sbFBhcmVudCBmcm9tIFwiLi9pc1Njcm9sbFBhcmVudC5qc1wiO1xuLypcbmdpdmVuIGEgRE9NIGVsZW1lbnQsIHJldHVybiB0aGUgbGlzdCBvZiBhbGwgc2Nyb2xsIHBhcmVudHMsIHVwIHRoZSBsaXN0IG9mIGFuY2Vzb3JzXG51bnRpbCB3ZSBnZXQgdG8gdGhlIHRvcCB3aW5kb3cgb2JqZWN0LiBUaGlzIGxpc3QgaXMgd2hhdCB3ZSBhdHRhY2ggc2Nyb2xsIGxpc3RlbmVyc1xudG8sIGJlY2F1c2UgaWYgYW55IG9mIHRoZXNlIHBhcmVudCBlbGVtZW50cyBzY3JvbGwsIHdlJ2xsIG5lZWQgdG8gcmUtY2FsY3VsYXRlIHRoZVxucmVmZXJlbmNlIGVsZW1lbnQncyBwb3NpdGlvbi5cbiovXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxpc3RTY3JvbGxQYXJlbnRzKGVsZW1lbnQsIGxpc3QpIHtcbiAgdmFyIF9lbGVtZW50JG93bmVyRG9jdW1lbjtcblxuICBpZiAobGlzdCA9PT0gdm9pZCAwKSB7XG4gICAgbGlzdCA9IFtdO1xuICB9XG5cbiAgdmFyIHNjcm9sbFBhcmVudCA9IGdldFNjcm9sbFBhcmVudChlbGVtZW50KTtcbiAgdmFyIGlzQm9keSA9IHNjcm9sbFBhcmVudCA9PT0gKChfZWxlbWVudCRvd25lckRvY3VtZW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfZWxlbWVudCRvd25lckRvY3VtZW4uYm9keSk7XG4gIHZhciB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsUGFyZW50KTtcbiAgdmFyIHRhcmdldCA9IGlzQm9keSA/IFt3aW5dLmNvbmNhdCh3aW4udmlzdWFsVmlld3BvcnQgfHwgW10sIGlzU2Nyb2xsUGFyZW50KHNjcm9sbFBhcmVudCkgPyBzY3JvbGxQYXJlbnQgOiBbXSkgOiBzY3JvbGxQYXJlbnQ7XG4gIHZhciB1cGRhdGVkTGlzdCA9IGxpc3QuY29uY2F0KHRhcmdldCk7XG4gIHJldHVybiBpc0JvZHkgPyB1cGRhdGVkTGlzdCA6IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhbGxdOiBpc0JvZHkgdGVsbHMgdXMgdGFyZ2V0IHdpbGwgYmUgYW4gSFRNTEVsZW1lbnQgaGVyZVxuICB1cGRhdGVkTGlzdC5jb25jYXQobGlzdFNjcm9sbFBhcmVudHMoZ2V0UGFyZW50Tm9kZSh0YXJnZXQpKSk7XG59IiwiZXhwb3J0IHZhciB0b3AgPSAndG9wJztcbmV4cG9ydCB2YXIgYm90dG9tID0gJ2JvdHRvbSc7XG5leHBvcnQgdmFyIHJpZ2h0ID0gJ3JpZ2h0JztcbmV4cG9ydCB2YXIgbGVmdCA9ICdsZWZ0JztcbmV4cG9ydCB2YXIgYXV0byA9ICdhdXRvJztcbmV4cG9ydCB2YXIgYmFzZVBsYWNlbWVudHMgPSBbdG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0XTtcbmV4cG9ydCB2YXIgc3RhcnQgPSAnc3RhcnQnO1xuZXhwb3J0IHZhciBlbmQgPSAnZW5kJztcbmV4cG9ydCB2YXIgY2xpcHBpbmdQYXJlbnRzID0gJ2NsaXBwaW5nUGFyZW50cyc7XG5leHBvcnQgdmFyIHZpZXdwb3J0ID0gJ3ZpZXdwb3J0JztcbmV4cG9ydCB2YXIgcG9wcGVyID0gJ3BvcHBlcic7XG5leHBvcnQgdmFyIHJlZmVyZW5jZSA9ICdyZWZlcmVuY2UnO1xuZXhwb3J0IHZhciB2YXJpYXRpb25QbGFjZW1lbnRzID0gLyojX19QVVJFX18qL2Jhc2VQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCArIFwiLVwiICsgc3RhcnQsIHBsYWNlbWVudCArIFwiLVwiICsgZW5kXSk7XG59LCBbXSk7XG5leHBvcnQgdmFyIHBsYWNlbWVudHMgPSAvKiNfX1BVUkVfXyovW10uY29uY2F0KGJhc2VQbGFjZW1lbnRzLCBbYXV0b10pLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIGFjYy5jb25jYXQoW3BsYWNlbWVudCwgcGxhY2VtZW50ICsgXCItXCIgKyBzdGFydCwgcGxhY2VtZW50ICsgXCItXCIgKyBlbmRdKTtcbn0sIFtdKTsgLy8gbW9kaWZpZXJzIHRoYXQgbmVlZCB0byByZWFkIHRoZSBET01cblxuZXhwb3J0IHZhciBiZWZvcmVSZWFkID0gJ2JlZm9yZVJlYWQnO1xuZXhwb3J0IHZhciByZWFkID0gJ3JlYWQnO1xuZXhwb3J0IHZhciBhZnRlclJlYWQgPSAnYWZ0ZXJSZWFkJzsgLy8gcHVyZS1sb2dpYyBtb2RpZmllcnNcblxuZXhwb3J0IHZhciBiZWZvcmVNYWluID0gJ2JlZm9yZU1haW4nO1xuZXhwb3J0IHZhciBtYWluID0gJ21haW4nO1xuZXhwb3J0IHZhciBhZnRlck1haW4gPSAnYWZ0ZXJNYWluJzsgLy8gbW9kaWZpZXIgd2l0aCB0aGUgcHVycG9zZSB0byB3cml0ZSB0byB0aGUgRE9NIChvciB3cml0ZSBpbnRvIGEgZnJhbWV3b3JrIHN0YXRlKVxuXG5leHBvcnQgdmFyIGJlZm9yZVdyaXRlID0gJ2JlZm9yZVdyaXRlJztcbmV4cG9ydCB2YXIgd3JpdGUgPSAnd3JpdGUnO1xuZXhwb3J0IHZhciBhZnRlcldyaXRlID0gJ2FmdGVyV3JpdGUnO1xuZXhwb3J0IHZhciBtb2RpZmllclBoYXNlcyA9IFtiZWZvcmVSZWFkLCByZWFkLCBhZnRlclJlYWQsIGJlZm9yZU1haW4sIG1haW4sIGFmdGVyTWFpbiwgYmVmb3JlV3JpdGUsIHdyaXRlLCBhZnRlcldyaXRlXTsiLCJleHBvcnQgKiBmcm9tIFwiLi9lbnVtcy5qc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IHsgcG9wcGVyR2VuZXJhdG9yLCBkZXRlY3RPdmVyZmxvdywgY3JlYXRlUG9wcGVyIGFzIGNyZWF0ZVBvcHBlckJhc2UgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgfSBmcm9tIFwiLi9wb3BwZXIuanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IiwiaW1wb3J0IGdldE5vZGVOYW1lIGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0Tm9kZU5hbWUuanNcIjtcbmltcG9ydCB7IGlzSFRNTEVsZW1lbnQgfSBmcm9tIFwiLi4vZG9tLXV0aWxzL2luc3RhbmNlT2YuanNcIjsgLy8gVGhpcyBtb2RpZmllciB0YWtlcyB0aGUgc3R5bGVzIHByZXBhcmVkIGJ5IHRoZSBgY29tcHV0ZVN0eWxlc2AgbW9kaWZpZXJcbi8vIGFuZCBhcHBsaWVzIHRoZW0gdG8gdGhlIEhUTUxFbGVtZW50cyBzdWNoIGFzIHBvcHBlciBhbmQgYXJyb3dcblxuZnVuY3Rpb24gYXBwbHlTdHlsZXMoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlO1xuICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgIHZhciBzdHlsZSA9IHN0YXRlLnN0eWxlc1tuYW1lXSB8fCB7fTtcbiAgICB2YXIgYXR0cmlidXRlcyA9IHN0YXRlLmF0dHJpYnV0ZXNbbmFtZV0gfHwge307XG4gICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTsgLy8gYXJyb3cgaXMgb3B0aW9uYWwgKyB2aXJ0dWFsIGVsZW1lbnRzXG5cbiAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyBGbG93IGRvZXNuJ3Qgc3VwcG9ydCB0byBleHRlbmQgdGhpcyBwcm9wZXJ0eSwgYnV0IGl0J3MgdGhlIG1vc3RcbiAgICAvLyBlZmZlY3RpdmUgd2F5IHRvIGFwcGx5IHN0eWxlcyB0byBhbiBIVE1MRWxlbWVudFxuICAgIC8vICRGbG93Rml4TWVbY2Fubm90LXdyaXRlXVxuXG5cbiAgICBPYmplY3QuYXNzaWduKGVsZW1lbnQuc3R5bGUsIHN0eWxlKTtcbiAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICB2YXIgdmFsdWUgPSBhdHRyaWJ1dGVzW25hbWVdO1xuXG4gICAgICBpZiAodmFsdWUgPT09IGZhbHNlKSB7XG4gICAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUobmFtZSwgdmFsdWUgPT09IHRydWUgPyAnJyA6IHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmMikge1xuICB2YXIgc3RhdGUgPSBfcmVmMi5zdGF0ZTtcbiAgdmFyIGluaXRpYWxTdHlsZXMgPSB7XG4gICAgcG9wcGVyOiB7XG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHRvcDogJzAnLFxuICAgICAgbWFyZ2luOiAnMCdcbiAgICB9LFxuICAgIGFycm93OiB7XG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJ1xuICAgIH0sXG4gICAgcmVmZXJlbmNlOiB7fVxuICB9O1xuICBPYmplY3QuYXNzaWduKHN0YXRlLmVsZW1lbnRzLnBvcHBlci5zdHlsZSwgaW5pdGlhbFN0eWxlcy5wb3BwZXIpO1xuICBzdGF0ZS5zdHlsZXMgPSBpbml0aWFsU3R5bGVzO1xuXG4gIGlmIChzdGF0ZS5lbGVtZW50cy5hcnJvdykge1xuICAgIE9iamVjdC5hc3NpZ24oc3RhdGUuZWxlbWVudHMuYXJyb3cuc3R5bGUsIGluaXRpYWxTdHlsZXMuYXJyb3cpO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBPYmplY3Qua2V5cyhzdGF0ZS5lbGVtZW50cykuZm9yRWFjaChmdW5jdGlvbiAobmFtZSkge1xuICAgICAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1tuYW1lXTtcbiAgICAgIHZhciBhdHRyaWJ1dGVzID0gc3RhdGUuYXR0cmlidXRlc1tuYW1lXSB8fCB7fTtcbiAgICAgIHZhciBzdHlsZVByb3BlcnRpZXMgPSBPYmplY3Qua2V5cyhzdGF0ZS5zdHlsZXMuaGFzT3duUHJvcGVydHkobmFtZSkgPyBzdGF0ZS5zdHlsZXNbbmFtZV0gOiBpbml0aWFsU3R5bGVzW25hbWVdKTsgLy8gU2V0IGFsbCB2YWx1ZXMgdG8gYW4gZW1wdHkgc3RyaW5nIHRvIHVuc2V0IHRoZW1cblxuICAgICAgdmFyIHN0eWxlID0gc3R5bGVQcm9wZXJ0aWVzLnJlZHVjZShmdW5jdGlvbiAoc3R5bGUsIHByb3BlcnR5KSB7XG4gICAgICAgIHN0eWxlW3Byb3BlcnR5XSA9ICcnO1xuICAgICAgICByZXR1cm4gc3R5bGU7XG4gICAgICB9LCB7fSk7IC8vIGFycm93IGlzIG9wdGlvbmFsICsgdmlydHVhbCBlbGVtZW50c1xuXG4gICAgICBpZiAoIWlzSFRNTEVsZW1lbnQoZWxlbWVudCkgfHwgIWdldE5vZGVOYW1lKGVsZW1lbnQpKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgT2JqZWN0LmFzc2lnbihlbGVtZW50LnN0eWxlLCBzdHlsZSk7XG4gICAgICBPYmplY3Qua2V5cyhhdHRyaWJ1dGVzKS5mb3JFYWNoKGZ1bmN0aW9uIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnYXBwbHlTdHlsZXMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGFwcGx5U3R5bGVzLFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsnY29tcHV0ZVN0eWxlcyddXG59OyIsImltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TGF5b3V0UmVjdCBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldExheW91dFJlY3QuanNcIjtcbmltcG9ydCBjb250YWlucyBmcm9tIFwiLi4vZG9tLXV0aWxzL2NvbnRhaW5zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCB7IHdpdGhpbiB9IGZyb20gXCIuLi91dGlscy93aXRoaW4uanNcIjtcbmltcG9ydCBtZXJnZVBhZGRpbmdPYmplY3QgZnJvbSBcIi4uL3V0aWxzL21lcmdlUGFkZGluZ09iamVjdC5qc1wiO1xuaW1wb3J0IGV4cGFuZFRvSGFzaE1hcCBmcm9tIFwiLi4vdXRpbHMvZXhwYW5kVG9IYXNoTWFwLmpzXCI7XG5pbXBvcnQgeyBsZWZ0LCByaWdodCwgYmFzZVBsYWNlbWVudHMsIHRvcCwgYm90dG9tIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgeyBpc0hUTUxFbGVtZW50IH0gZnJvbSBcIi4uL2RvbS11dGlscy9pbnN0YW5jZU9mLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHRvUGFkZGluZ09iamVjdCA9IGZ1bmN0aW9uIHRvUGFkZGluZ09iamVjdChwYWRkaW5nLCBzdGF0ZSkge1xuICBwYWRkaW5nID0gdHlwZW9mIHBhZGRpbmcgPT09ICdmdW5jdGlvbicgPyBwYWRkaW5nKE9iamVjdC5hc3NpZ24oe30sIHN0YXRlLnJlY3RzLCB7XG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSkpIDogcGFkZGluZztcbiAgcmV0dXJuIG1lcmdlUGFkZGluZ09iamVjdCh0eXBlb2YgcGFkZGluZyAhPT0gJ251bWJlcicgPyBwYWRkaW5nIDogZXhwYW5kVG9IYXNoTWFwKHBhZGRpbmcsIGJhc2VQbGFjZW1lbnRzKSk7XG59O1xuXG5mdW5jdGlvbiBhcnJvdyhfcmVmKSB7XG4gIHZhciBfc3RhdGUkbW9kaWZpZXJzRGF0YSQ7XG5cbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG5hbWUgPSBfcmVmLm5hbWUsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgYXJyb3dFbGVtZW50ID0gc3RhdGUuZWxlbWVudHMuYXJyb3c7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQoc3RhdGUucGxhY2VtZW50KTtcbiAgdmFyIGF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBpc1ZlcnRpY2FsID0gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDA7XG4gIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gIGlmICghYXJyb3dFbGVtZW50IHx8ICFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIHBhZGRpbmdPYmplY3QgPSB0b1BhZGRpbmdPYmplY3Qob3B0aW9ucy5wYWRkaW5nLCBzdGF0ZSk7XG4gIHZhciBhcnJvd1JlY3QgPSBnZXRMYXlvdXRSZWN0KGFycm93RWxlbWVudCk7XG4gIHZhciBtaW5Qcm9wID0gYXhpcyA9PT0gJ3knID8gdG9wIDogbGVmdDtcbiAgdmFyIG1heFByb3AgPSBheGlzID09PSAneScgPyBib3R0b20gOiByaWdodDtcbiAgdmFyIGVuZERpZmYgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbbGVuXSArIHN0YXRlLnJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5wb3BwZXJbbGVuXTtcbiAgdmFyIHN0YXJ0RGlmZiA9IHBvcHBlck9mZnNldHNbYXhpc10gLSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2VbYXhpc107XG4gIHZhciBhcnJvd09mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChhcnJvd0VsZW1lbnQpO1xuICB2YXIgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXhpcyA9PT0gJ3knID8gYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50SGVpZ2h0IHx8IDAgOiBhcnJvd09mZnNldFBhcmVudC5jbGllbnRXaWR0aCB8fCAwIDogMDtcbiAgdmFyIGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyOyAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIHBvcHBlciBpZiB0aGUgY2VudGVyIHBvaW50IGlzXG4gIC8vIG91dHNpZGUgb2YgdGhlIHBvcHBlciBib3VuZHNcblxuICB2YXIgbWluID0gcGFkZGluZ09iamVjdFttaW5Qcm9wXTtcbiAgdmFyIG1heCA9IGNsaWVudFNpemUgLSBhcnJvd1JlY3RbbGVuXSAtIHBhZGRpbmdPYmplY3RbbWF4UHJvcF07XG4gIHZhciBjZW50ZXIgPSBjbGllbnRTaXplIC8gMiAtIGFycm93UmVjdFtsZW5dIC8gMiArIGNlbnRlclRvUmVmZXJlbmNlO1xuICB2YXIgb2Zmc2V0ID0gd2l0aGluKG1pbiwgY2VudGVyLCBtYXgpOyAvLyBQcmV2ZW50cyBicmVha2luZyBzeW50YXggaGlnaGxpZ2h0aW5nLi4uXG5cbiAgdmFyIGF4aXNQcm9wID0gYXhpcztcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IChfc3RhdGUkbW9kaWZpZXJzRGF0YSQgPSB7fSwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkW2F4aXNQcm9wXSA9IG9mZnNldCwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkLmNlbnRlck9mZnNldCA9IG9mZnNldCAtIGNlbnRlciwgX3N0YXRlJG1vZGlmaWVyc0RhdGEkKTtcbn1cblxuZnVuY3Rpb24gZWZmZWN0KF9yZWYyKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYyLnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWYyLm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRlbGVtZW50ID0gb3B0aW9ucy5lbGVtZW50LFxuICAgICAgYXJyb3dFbGVtZW50ID0gX29wdGlvbnMkZWxlbWVudCA9PT0gdm9pZCAwID8gJ1tkYXRhLXBvcHBlci1hcnJvd10nIDogX29wdGlvbnMkZWxlbWVudDtcblxuICBpZiAoYXJyb3dFbGVtZW50ID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH0gLy8gQ1NTIHNlbGVjdG9yXG5cblxuICBpZiAodHlwZW9mIGFycm93RWxlbWVudCA9PT0gJ3N0cmluZycpIHtcbiAgICBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5wb3BwZXIucXVlcnlTZWxlY3RvcihhcnJvd0VsZW1lbnQpO1xuXG4gICAgaWYgKCFhcnJvd0VsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH1cblxuICBpZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiKSB7XG4gICAgaWYgKCFpc0hUTUxFbGVtZW50KGFycm93RWxlbWVudCkpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBlbGVtZW50IG11c3QgYmUgYW4gSFRNTEVsZW1lbnQgKG5vdCBhbiBTVkdFbGVtZW50KS4nLCAnVG8gdXNlIGFuIFNWRyBhcnJvdywgd3JhcCBpdCBpbiBhbiBIVE1MRWxlbWVudCB0aGF0IHdpbGwgYmUgdXNlZCBhcycsICd0aGUgYXJyb3cuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBpZiAoIWNvbnRhaW5zKHN0YXRlLmVsZW1lbnRzLnBvcHBlciwgYXJyb3dFbGVtZW50KSkge1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFwiYXJyb3dcIiBtb2RpZmllclxcJ3MgYGVsZW1lbnRgIG11c3QgYmUgYSBjaGlsZCBvZiB0aGUgcG9wcGVyJywgJ2VsZW1lbnQuJ10uam9pbignICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm47XG4gIH1cblxuICBzdGF0ZS5lbGVtZW50cy5hcnJvdyA9IGFycm93RWxlbWVudDtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IGFycm93LFxuICBlZmZlY3Q6IGVmZmVjdCxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddXG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgZW5kIH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7XG5pbXBvcnQgZ2V0RG9jdW1lbnRFbGVtZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0RG9jdW1lbnRFbGVtZW50LmpzXCI7XG5pbXBvcnQgZ2V0Q29tcHV0ZWRTdHlsZSBmcm9tIFwiLi4vZG9tLXV0aWxzL2dldENvbXB1dGVkU3R5bGUuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG52YXIgdW5zZXRTaWRlcyA9IHtcbiAgdG9wOiAnYXV0bycsXG4gIHJpZ2h0OiAnYXV0bycsXG4gIGJvdHRvbTogJ2F1dG8nLFxuICBsZWZ0OiAnYXV0bydcbn07IC8vIFJvdW5kIHRoZSBvZmZzZXRzIHRvIHRoZSBuZWFyZXN0IHN1aXRhYmxlIHN1YnBpeGVsIGJhc2VkIG9uIHRoZSBEUFIuXG4vLyBab29taW5nIGNhbiBjaGFuZ2UgdGhlIERQUiwgYnV0IGl0IHNlZW1zIHRvIHJlcG9ydCBhIHZhbHVlIHRoYXQgd2lsbFxuLy8gY2xlYW5seSBkaXZpZGUgdGhlIHZhbHVlcyBpbnRvIHRoZSBhcHByb3ByaWF0ZSBzdWJwaXhlbHMuXG5cbmZ1bmN0aW9uIHJvdW5kT2Zmc2V0c0J5RFBSKF9yZWYpIHtcbiAgdmFyIHggPSBfcmVmLngsXG4gICAgICB5ID0gX3JlZi55O1xuICB2YXIgd2luID0gd2luZG93O1xuICB2YXIgZHByID0gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbiAgcmV0dXJuIHtcbiAgICB4OiByb3VuZCh4ICogZHByKSAvIGRwciB8fCAwLFxuICAgIHk6IHJvdW5kKHkgKiBkcHIpIC8gZHByIHx8IDBcbiAgfTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG1hcFRvU3R5bGVzKF9yZWYyKSB7XG4gIHZhciBfT2JqZWN0JGFzc2lnbjI7XG5cbiAgdmFyIHBvcHBlciA9IF9yZWYyLnBvcHBlcixcbiAgICAgIHBvcHBlclJlY3QgPSBfcmVmMi5wb3BwZXJSZWN0LFxuICAgICAgcGxhY2VtZW50ID0gX3JlZjIucGxhY2VtZW50LFxuICAgICAgdmFyaWF0aW9uID0gX3JlZjIudmFyaWF0aW9uLFxuICAgICAgb2Zmc2V0cyA9IF9yZWYyLm9mZnNldHMsXG4gICAgICBwb3NpdGlvbiA9IF9yZWYyLnBvc2l0aW9uLFxuICAgICAgZ3B1QWNjZWxlcmF0aW9uID0gX3JlZjIuZ3B1QWNjZWxlcmF0aW9uLFxuICAgICAgYWRhcHRpdmUgPSBfcmVmMi5hZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0cyA9IF9yZWYyLnJvdW5kT2Zmc2V0cyxcbiAgICAgIGlzRml4ZWQgPSBfcmVmMi5pc0ZpeGVkO1xuICB2YXIgX29mZnNldHMkeCA9IG9mZnNldHMueCxcbiAgICAgIHggPSBfb2Zmc2V0cyR4ID09PSB2b2lkIDAgPyAwIDogX29mZnNldHMkeCxcbiAgICAgIF9vZmZzZXRzJHkgPSBvZmZzZXRzLnksXG4gICAgICB5ID0gX29mZnNldHMkeSA9PT0gdm9pZCAwID8gMCA6IF9vZmZzZXRzJHk7XG5cbiAgdmFyIF9yZWYzID0gdHlwZW9mIHJvdW5kT2Zmc2V0cyA9PT0gJ2Z1bmN0aW9uJyA/IHJvdW5kT2Zmc2V0cyh7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH0pIDoge1xuICAgIHg6IHgsXG4gICAgeTogeVxuICB9O1xuXG4gIHggPSBfcmVmMy54O1xuICB5ID0gX3JlZjMueTtcbiAgdmFyIGhhc1ggPSBvZmZzZXRzLmhhc093blByb3BlcnR5KCd4Jyk7XG4gIHZhciBoYXNZID0gb2Zmc2V0cy5oYXNPd25Qcm9wZXJ0eSgneScpO1xuICB2YXIgc2lkZVggPSBsZWZ0O1xuICB2YXIgc2lkZVkgPSB0b3A7XG4gIHZhciB3aW4gPSB3aW5kb3c7XG5cbiAgaWYgKGFkYXB0aXZlKSB7XG4gICAgdmFyIG9mZnNldFBhcmVudCA9IGdldE9mZnNldFBhcmVudChwb3BwZXIpO1xuICAgIHZhciBoZWlnaHRQcm9wID0gJ2NsaWVudEhlaWdodCc7XG4gICAgdmFyIHdpZHRoUHJvcCA9ICdjbGllbnRXaWR0aCc7XG5cbiAgICBpZiAob2Zmc2V0UGFyZW50ID09PSBnZXRXaW5kb3cocG9wcGVyKSkge1xuICAgICAgb2Zmc2V0UGFyZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KHBvcHBlcik7XG5cbiAgICAgIGlmIChnZXRDb21wdXRlZFN0eWxlKG9mZnNldFBhcmVudCkucG9zaXRpb24gIT09ICdzdGF0aWMnICYmIHBvc2l0aW9uID09PSAnYWJzb2x1dGUnKSB7XG4gICAgICAgIGhlaWdodFByb3AgPSAnc2Nyb2xsSGVpZ2h0JztcbiAgICAgICAgd2lkdGhQcm9wID0gJ3Njcm9sbFdpZHRoJztcbiAgICAgIH1cbiAgICB9IC8vICRGbG93Rml4TWVbaW5jb21wYXRpYmxlLWNhc3RdOiBmb3JjZSB0eXBlIHJlZmluZW1lbnQsIHdlIGNvbXBhcmUgb2Zmc2V0UGFyZW50IHdpdGggd2luZG93IGFib3ZlLCBidXQgRmxvdyBkb2Vzbid0IGRldGVjdCBpdFxuXG5cbiAgICBvZmZzZXRQYXJlbnQgPSBvZmZzZXRQYXJlbnQ7XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSB0b3AgfHwgKHBsYWNlbWVudCA9PT0gbGVmdCB8fCBwbGFjZW1lbnQgPT09IHJpZ2h0KSAmJiB2YXJpYXRpb24gPT09IGVuZCkge1xuICAgICAgc2lkZVkgPSBib3R0b207XG4gICAgICB2YXIgb2Zmc2V0WSA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LmhlaWdodCA6IC8vICRGbG93Rml4TWVbcHJvcC1taXNzaW5nXVxuICAgICAgb2Zmc2V0UGFyZW50W2hlaWdodFByb3BdO1xuICAgICAgeSAtPSBvZmZzZXRZIC0gcG9wcGVyUmVjdC5oZWlnaHQ7XG4gICAgICB5ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG5cbiAgICBpZiAocGxhY2VtZW50ID09PSBsZWZ0IHx8IChwbGFjZW1lbnQgPT09IHRvcCB8fCBwbGFjZW1lbnQgPT09IGJvdHRvbSkgJiYgdmFyaWF0aW9uID09PSBlbmQpIHtcbiAgICAgIHNpZGVYID0gcmlnaHQ7XG4gICAgICB2YXIgb2Zmc2V0WCA9IGlzRml4ZWQgJiYgb2Zmc2V0UGFyZW50ID09PSB3aW4gJiYgd2luLnZpc3VhbFZpZXdwb3J0ID8gd2luLnZpc3VhbFZpZXdwb3J0LndpZHRoIDogLy8gJEZsb3dGaXhNZVtwcm9wLW1pc3NpbmddXG4gICAgICBvZmZzZXRQYXJlbnRbd2lkdGhQcm9wXTtcbiAgICAgIHggLT0gb2Zmc2V0WCAtIHBvcHBlclJlY3Qud2lkdGg7XG4gICAgICB4ICo9IGdwdUFjY2VsZXJhdGlvbiA/IDEgOiAtMTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0gT2JqZWN0LmFzc2lnbih7XG4gICAgcG9zaXRpb246IHBvc2l0aW9uXG4gIH0sIGFkYXB0aXZlICYmIHVuc2V0U2lkZXMpO1xuXG4gIHZhciBfcmVmNCA9IHJvdW5kT2Zmc2V0cyA9PT0gdHJ1ZSA/IHJvdW5kT2Zmc2V0c0J5RFBSKHtcbiAgICB4OiB4LFxuICAgIHk6IHlcbiAgfSkgOiB7XG4gICAgeDogeCxcbiAgICB5OiB5XG4gIH07XG5cbiAgeCA9IF9yZWY0Lng7XG4gIHkgPSBfcmVmNC55O1xuXG4gIGlmIChncHVBY2NlbGVyYXRpb24pIHtcbiAgICB2YXIgX09iamVjdCRhc3NpZ247XG5cbiAgICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCAoX09iamVjdCRhc3NpZ24gPSB7fSwgX09iamVjdCRhc3NpZ25bc2lkZVldID0gaGFzWSA/ICcwJyA6ICcnLCBfT2JqZWN0JGFzc2lnbltzaWRlWF0gPSBoYXNYID8gJzAnIDogJycsIF9PYmplY3QkYXNzaWduLnRyYW5zZm9ybSA9ICh3aW4uZGV2aWNlUGl4ZWxSYXRpbyB8fCAxKSA8PSAxID8gXCJ0cmFuc2xhdGUoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweClcIiA6IFwidHJhbnNsYXRlM2QoXCIgKyB4ICsgXCJweCwgXCIgKyB5ICsgXCJweCwgMClcIiwgX09iamVjdCRhc3NpZ24pKTtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBjb21tb25TdHlsZXMsIChfT2JqZWN0JGFzc2lnbjIgPSB7fSwgX09iamVjdCRhc3NpZ24yW3NpZGVZXSA9IGhhc1kgPyB5ICsgXCJweFwiIDogJycsIF9PYmplY3QkYXNzaWduMltzaWRlWF0gPSBoYXNYID8geCArIFwicHhcIiA6ICcnLCBfT2JqZWN0JGFzc2lnbjIudHJhbnNmb3JtID0gJycsIF9PYmplY3QkYXNzaWduMikpO1xufVxuXG5mdW5jdGlvbiBjb21wdXRlU3R5bGVzKF9yZWY1KSB7XG4gIHZhciBzdGF0ZSA9IF9yZWY1LnN0YXRlLFxuICAgICAgb3B0aW9ucyA9IF9yZWY1Lm9wdGlvbnM7XG4gIHZhciBfb3B0aW9ucyRncHVBY2NlbGVyYXQgPSBvcHRpb25zLmdwdUFjY2VsZXJhdGlvbixcbiAgICAgIGdwdUFjY2VsZXJhdGlvbiA9IF9vcHRpb25zJGdwdUFjY2VsZXJhdCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJGdwdUFjY2VsZXJhdCxcbiAgICAgIF9vcHRpb25zJGFkYXB0aXZlID0gb3B0aW9ucy5hZGFwdGl2ZSxcbiAgICAgIGFkYXB0aXZlID0gX29wdGlvbnMkYWRhcHRpdmUgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhZGFwdGl2ZSxcbiAgICAgIF9vcHRpb25zJHJvdW5kT2Zmc2V0cyA9IG9wdGlvbnMucm91bmRPZmZzZXRzLFxuICAgICAgcm91bmRPZmZzZXRzID0gX29wdGlvbnMkcm91bmRPZmZzZXRzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcm91bmRPZmZzZXRzO1xuXG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICB2YXIgdHJhbnNpdGlvblByb3BlcnR5ID0gZ2V0Q29tcHV0ZWRTdHlsZShzdGF0ZS5lbGVtZW50cy5wb3BwZXIpLnRyYW5zaXRpb25Qcm9wZXJ0eSB8fCAnJztcblxuICAgIGlmIChhZGFwdGl2ZSAmJiBbJ3RyYW5zZm9ybScsICd0b3AnLCAncmlnaHQnLCAnYm90dG9tJywgJ2xlZnQnXS5zb21lKGZ1bmN0aW9uIChwcm9wZXJ0eSkge1xuICAgICAgcmV0dXJuIHRyYW5zaXRpb25Qcm9wZXJ0eS5pbmRleE9mKHByb3BlcnR5KSA+PSAwO1xuICAgIH0pKSB7XG4gICAgICBjb25zb2xlLndhcm4oWydQb3BwZXI6IERldGVjdGVkIENTUyB0cmFuc2l0aW9ucyBvbiBhdCBsZWFzdCBvbmUgb2YgdGhlIGZvbGxvd2luZycsICdDU1MgcHJvcGVydGllczogXCJ0cmFuc2Zvcm1cIiwgXCJ0b3BcIiwgXCJyaWdodFwiLCBcImJvdHRvbVwiLCBcImxlZnRcIi4nLCAnXFxuXFxuJywgJ0Rpc2FibGUgdGhlIFwiY29tcHV0ZVN0eWxlc1wiIG1vZGlmaWVyXFwncyBgYWRhcHRpdmVgIG9wdGlvbiB0byBhbGxvdycsICdmb3Igc21vb3RoIHRyYW5zaXRpb25zLCBvciByZW1vdmUgdGhlc2UgcHJvcGVydGllcyBmcm9tIHRoZSBDU1MnLCAndHJhbnNpdGlvbiBkZWNsYXJhdGlvbiBvbiB0aGUgcG9wcGVyIGVsZW1lbnQgaWYgb25seSB0cmFuc2l0aW9uaW5nJywgJ29wYWNpdHkgb3IgYmFja2dyb3VuZC1jb2xvciBmb3IgZXhhbXBsZS4nLCAnXFxuXFxuJywgJ1dlIHJlY29tbWVuZCB1c2luZyB0aGUgcG9wcGVyIGVsZW1lbnQgYXMgYSB3cmFwcGVyIGFyb3VuZCBhbiBpbm5lcicsICdlbGVtZW50IHRoYXQgY2FuIGhhdmUgYW55IENTUyBwcm9wZXJ0eSB0cmFuc2l0aW9uZWQgZm9yIGFuaW1hdGlvbnMuJ10uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICB2YXIgY29tbW9uU3R5bGVzID0ge1xuICAgIHBsYWNlbWVudDogZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpLFxuICAgIHZhcmlhdGlvbjogZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCksXG4gICAgcG9wcGVyOiBzdGF0ZS5lbGVtZW50cy5wb3BwZXIsXG4gICAgcG9wcGVyUmVjdDogc3RhdGUucmVjdHMucG9wcGVyLFxuICAgIGdwdUFjY2VsZXJhdGlvbjogZ3B1QWNjZWxlcmF0aW9uLFxuICAgIGlzRml4ZWQ6IHN0YXRlLm9wdGlvbnMuc3RyYXRlZ3kgPT09ICdmaXhlZCdcbiAgfTtcblxuICBpZiAoc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuc3R5bGVzLnBvcHBlciwgbWFwVG9TdHlsZXMoT2JqZWN0LmFzc2lnbih7fSwgY29tbW9uU3R5bGVzLCB7XG4gICAgICBvZmZzZXRzOiBzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMsXG4gICAgICBwb3NpdGlvbjogc3RhdGUub3B0aW9ucy5zdHJhdGVneSxcbiAgICAgIGFkYXB0aXZlOiBhZGFwdGl2ZSxcbiAgICAgIHJvdW5kT2Zmc2V0czogcm91bmRPZmZzZXRzXG4gICAgfSkpKTtcbiAgfVxuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLmFycm93ICE9IG51bGwpIHtcbiAgICBzdGF0ZS5zdHlsZXMuYXJyb3cgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5zdHlsZXMuYXJyb3csIG1hcFRvU3R5bGVzKE9iamVjdC5hc3NpZ24oe30sIGNvbW1vblN0eWxlcywge1xuICAgICAgb2Zmc2V0czogc3RhdGUubW9kaWZpZXJzRGF0YS5hcnJvdyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgYWRhcHRpdmU6IGZhbHNlLFxuICAgICAgcm91bmRPZmZzZXRzOiByb3VuZE9mZnNldHNcbiAgICB9KSkpO1xuICB9XG5cbiAgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIgPSBPYmplY3QuYXNzaWduKHt9LCBzdGF0ZS5hdHRyaWJ1dGVzLnBvcHBlciwge1xuICAgICdkYXRhLXBvcHBlci1wbGFjZW1lbnQnOiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdjb21wdXRlU3R5bGVzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdiZWZvcmVXcml0ZScsXG4gIGZuOiBjb21wdXRlU3R5bGVzLFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0V2luZG93IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0V2luZG93LmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxudmFyIHBhc3NpdmUgPSB7XG4gIHBhc3NpdmU6IHRydWVcbn07XG5cbmZ1bmN0aW9uIGVmZmVjdChfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBpbnN0YW5jZSA9IF9yZWYuaW5zdGFuY2UsXG4gICAgICBvcHRpb25zID0gX3JlZi5vcHRpb25zO1xuICB2YXIgX29wdGlvbnMkc2Nyb2xsID0gb3B0aW9ucy5zY3JvbGwsXG4gICAgICBzY3JvbGwgPSBfb3B0aW9ucyRzY3JvbGwgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRzY3JvbGwsXG4gICAgICBfb3B0aW9ucyRyZXNpemUgPSBvcHRpb25zLnJlc2l6ZSxcbiAgICAgIHJlc2l6ZSA9IF9vcHRpb25zJHJlc2l6ZSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlc2l6ZTtcbiAgdmFyIHdpbmRvdyA9IGdldFdpbmRvdyhzdGF0ZS5lbGVtZW50cy5wb3BwZXIpO1xuICB2YXIgc2Nyb2xsUGFyZW50cyA9IFtdLmNvbmNhdChzdGF0ZS5zY3JvbGxQYXJlbnRzLnJlZmVyZW5jZSwgc3RhdGUuc2Nyb2xsUGFyZW50cy5wb3BwZXIpO1xuXG4gIGlmIChzY3JvbGwpIHtcbiAgICBzY3JvbGxQYXJlbnRzLmZvckVhY2goZnVuY3Rpb24gKHNjcm9sbFBhcmVudCkge1xuICAgICAgc2Nyb2xsUGFyZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfSk7XG4gIH1cblxuICBpZiAocmVzaXplKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gIH1cblxuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIGlmIChzY3JvbGwpIHtcbiAgICAgIHNjcm9sbFBhcmVudHMuZm9yRWFjaChmdW5jdGlvbiAoc2Nyb2xsUGFyZW50KSB7XG4gICAgICAgIHNjcm9sbFBhcmVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBpbnN0YW5jZS51cGRhdGUsIHBhc3NpdmUpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgaWYgKHJlc2l6ZSkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIGluc3RhbmNlLnVwZGF0ZSwgcGFzc2l2ZSk7XG4gICAgfVxuICB9O1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZXZlbnRMaXN0ZW5lcnMnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ3dyaXRlJyxcbiAgZm46IGZ1bmN0aW9uIGZuKCkge30sXG4gIGVmZmVjdDogZWZmZWN0LFxuICBkYXRhOiB7fVxufTsiLCJpbXBvcnQgZ2V0T3Bwb3NpdGVQbGFjZW1lbnQgZnJvbSBcIi4uL3V0aWxzL2dldE9wcG9zaXRlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGRldGVjdE92ZXJmbG93IGZyb20gXCIuLi91dGlscy9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVBdXRvUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9jb21wdXRlQXV0b1BsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgYm90dG9tLCB0b3AsIHN0YXJ0LCByaWdodCwgbGVmdCwgYXV0byB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi4vdXRpbHMvZ2V0VmFyaWF0aW9uLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRGYWxsYmFja1BsYWNlbWVudHMocGxhY2VtZW50KSB7XG4gIGlmIChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8pIHtcbiAgICByZXR1cm4gW107XG4gIH1cblxuICB2YXIgb3Bwb3NpdGVQbGFjZW1lbnQgPSBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICByZXR1cm4gW2dldE9wcG9zaXRlVmFyaWF0aW9uUGxhY2VtZW50KHBsYWNlbWVudCksIG9wcG9zaXRlUGxhY2VtZW50LCBnZXRPcHBvc2l0ZVZhcmlhdGlvblBsYWNlbWVudChvcHBvc2l0ZVBsYWNlbWVudCldO1xufVxuXG5mdW5jdGlvbiBmbGlwKF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhW25hbWVdLl9za2lwKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIF9vcHRpb25zJG1haW5BeGlzID0gb3B0aW9ucy5tYWluQXhpcyxcbiAgICAgIGNoZWNrTWFpbkF4aXMgPSBfb3B0aW9ucyRtYWluQXhpcyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJG1haW5BeGlzLFxuICAgICAgX29wdGlvbnMkYWx0QXhpcyA9IG9wdGlvbnMuYWx0QXhpcyxcbiAgICAgIGNoZWNrQWx0QXhpcyA9IF9vcHRpb25zJGFsdEF4aXMgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzID0gb3B0aW9ucy5mYWxsYmFja1BsYWNlbWVudHMsXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPSBvcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgZmxpcFZhcmlhdGlvbnMgPSBfb3B0aW9ucyRmbGlwVmFyaWF0aW8gPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyRmbGlwVmFyaWF0aW8sXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHMgPSBvcHRpb25zLmFsbG93ZWRBdXRvUGxhY2VtZW50cztcbiAgdmFyIHByZWZlcnJlZFBsYWNlbWVudCA9IHN0YXRlLm9wdGlvbnMucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocHJlZmVycmVkUGxhY2VtZW50KTtcbiAgdmFyIGlzQmFzZVBsYWNlbWVudCA9IGJhc2VQbGFjZW1lbnQgPT09IHByZWZlcnJlZFBsYWNlbWVudDtcbiAgdmFyIGZhbGxiYWNrUGxhY2VtZW50cyA9IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyB8fCAoaXNCYXNlUGxhY2VtZW50IHx8ICFmbGlwVmFyaWF0aW9ucyA/IFtnZXRPcHBvc2l0ZVBsYWNlbWVudChwcmVmZXJyZWRQbGFjZW1lbnQpXSA6IGdldEV4cGFuZGVkRmFsbGJhY2tQbGFjZW1lbnRzKHByZWZlcnJlZFBsYWNlbWVudCkpO1xuICB2YXIgcGxhY2VtZW50cyA9IFtwcmVmZXJyZWRQbGFjZW1lbnRdLmNvbmNhdChmYWxsYmFja1BsYWNlbWVudHMpLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICByZXR1cm4gYWNjLmNvbmNhdChnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCkgPT09IGF1dG8gPyBjb21wdXRlQXV0b1BsYWNlbWVudChzdGF0ZSwge1xuICAgICAgcGxhY2VtZW50OiBwbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgICByb290Qm91bmRhcnk6IHJvb3RCb3VuZGFyeSxcbiAgICAgIHBhZGRpbmc6IHBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9uczogZmxpcFZhcmlhdGlvbnMsXG4gICAgICBhbGxvd2VkQXV0b1BsYWNlbWVudHM6IGFsbG93ZWRBdXRvUGxhY2VtZW50c1xuICAgIH0pIDogcGxhY2VtZW50KTtcbiAgfSwgW10pO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciBjaGVja3NNYXAgPSBuZXcgTWFwKCk7XG4gIHZhciBtYWtlRmFsbGJhY2tDaGVja3MgPSB0cnVlO1xuICB2YXIgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gcGxhY2VtZW50c1swXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHBsYWNlbWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcGxhY2VtZW50ID0gcGxhY2VtZW50c1tpXTtcblxuICAgIHZhciBfYmFzZVBsYWNlbWVudCA9IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KTtcblxuICAgIHZhciBpc1N0YXJ0VmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCkgPT09IHN0YXJ0O1xuICAgIHZhciBpc1ZlcnRpY2FsID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKF9iYXNlUGxhY2VtZW50KSA+PSAwO1xuICAgIHZhciBsZW4gPSBpc1ZlcnRpY2FsID8gJ3dpZHRoJyA6ICdoZWlnaHQnO1xuICAgIHZhciBvdmVyZmxvdyA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgYWx0Qm91bmRhcnk6IGFsdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pO1xuICAgIHZhciBtYWluVmFyaWF0aW9uU2lkZSA9IGlzVmVydGljYWwgPyBpc1N0YXJ0VmFyaWF0aW9uID8gcmlnaHQgOiBsZWZ0IDogaXNTdGFydFZhcmlhdGlvbiA/IGJvdHRvbSA6IHRvcDtcblxuICAgIGlmIChyZWZlcmVuY2VSZWN0W2xlbl0gPiBwb3BwZXJSZWN0W2xlbl0pIHtcbiAgICAgIG1haW5WYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIH1cblxuICAgIHZhciBhbHRWYXJpYXRpb25TaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpblZhcmlhdGlvblNpZGUpO1xuICAgIHZhciBjaGVja3MgPSBbXTtcblxuICAgIGlmIChjaGVja01haW5BeGlzKSB7XG4gICAgICBjaGVja3MucHVzaChvdmVyZmxvd1tfYmFzZVBsYWNlbWVudF0gPD0gMCk7XG4gICAgfVxuXG4gICAgaWYgKGNoZWNrQWx0QXhpcykge1xuICAgICAgY2hlY2tzLnB1c2gob3ZlcmZsb3dbbWFpblZhcmlhdGlvblNpZGVdIDw9IDAsIG92ZXJmbG93W2FsdFZhcmlhdGlvblNpZGVdIDw9IDApO1xuICAgIH1cblxuICAgIGlmIChjaGVja3MuZXZlcnkoZnVuY3Rpb24gKGNoZWNrKSB7XG4gICAgICByZXR1cm4gY2hlY2s7XG4gICAgfSkpIHtcbiAgICAgIGZpcnN0Rml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudDtcbiAgICAgIG1ha2VGYWxsYmFja0NoZWNrcyA9IGZhbHNlO1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgY2hlY2tzTWFwLnNldChwbGFjZW1lbnQsIGNoZWNrcyk7XG4gIH1cblxuICBpZiAobWFrZUZhbGxiYWNrQ2hlY2tzKSB7XG4gICAgLy8gYDJgIG1heSBiZSBkZXNpcmVkIGluIHNvbWUgY2FzZXMg4oCTIHJlc2VhcmNoIGxhdGVyXG4gICAgdmFyIG51bWJlck9mQ2hlY2tzID0gZmxpcFZhcmlhdGlvbnMgPyAzIDogMTtcblxuICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKF9pKSB7XG4gICAgICB2YXIgZml0dGluZ1BsYWNlbWVudCA9IHBsYWNlbWVudHMuZmluZChmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgICAgIHZhciBjaGVja3MgPSBjaGVja3NNYXAuZ2V0KHBsYWNlbWVudCk7XG5cbiAgICAgICAgaWYgKGNoZWNrcykge1xuICAgICAgICAgIHJldHVybiBjaGVja3Muc2xpY2UoMCwgX2kpLmV2ZXJ5KGZ1bmN0aW9uIChjaGVjaykge1xuICAgICAgICAgICAgcmV0dXJuIGNoZWNrO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgaWYgKGZpdHRpbmdQbGFjZW1lbnQpIHtcbiAgICAgICAgZmlyc3RGaXR0aW5nUGxhY2VtZW50ID0gZml0dGluZ1BsYWNlbWVudDtcbiAgICAgICAgcmV0dXJuIFwiYnJlYWtcIjtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZm9yICh2YXIgX2kgPSBudW1iZXJPZkNoZWNrczsgX2kgPiAwOyBfaS0tKSB7XG4gICAgICB2YXIgX3JldCA9IF9sb29wKF9pKTtcblxuICAgICAgaWYgKF9yZXQgPT09IFwiYnJlYWtcIikgYnJlYWs7XG4gICAgfVxuICB9XG5cbiAgaWYgKHN0YXRlLnBsYWNlbWVudCAhPT0gZmlyc3RGaXR0aW5nUGxhY2VtZW50KSB7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXS5fc2tpcCA9IHRydWU7XG4gICAgc3RhdGUucGxhY2VtZW50ID0gZmlyc3RGaXR0aW5nUGxhY2VtZW50O1xuICAgIHN0YXRlLnJlc2V0ID0gdHJ1ZTtcbiAgfVxufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnZmxpcCcsXG4gIGVuYWJsZWQ6IHRydWUsXG4gIHBoYXNlOiAnbWFpbicsXG4gIGZuOiBmbGlwLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ29mZnNldCddLFxuICBkYXRhOiB7XG4gICAgX3NraXA6IGZhbHNlXG4gIH1cbn07IiwiaW1wb3J0IHsgdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0IH0gZnJvbSBcIi4uL2VudW1zLmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5cbmZ1bmN0aW9uIGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0LCBwcmV2ZW50ZWRPZmZzZXRzKSB7XG4gIGlmIChwcmV2ZW50ZWRPZmZzZXRzID09PSB2b2lkIDApIHtcbiAgICBwcmV2ZW50ZWRPZmZzZXRzID0ge1xuICAgICAgeDogMCxcbiAgICAgIHk6IDBcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICB0b3A6IG92ZXJmbG93LnRvcCAtIHJlY3QuaGVpZ2h0IC0gcHJldmVudGVkT2Zmc2V0cy55LFxuICAgIHJpZ2h0OiBvdmVyZmxvdy5yaWdodCAtIHJlY3Qud2lkdGggKyBwcmV2ZW50ZWRPZmZzZXRzLngsXG4gICAgYm90dG9tOiBvdmVyZmxvdy5ib3R0b20gLSByZWN0LmhlaWdodCArIHByZXZlbnRlZE9mZnNldHMueSxcbiAgICBsZWZ0OiBvdmVyZmxvdy5sZWZ0IC0gcmVjdC53aWR0aCAtIHByZXZlbnRlZE9mZnNldHMueFxuICB9O1xufVxuXG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIFt0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnRdLnNvbWUoZnVuY3Rpb24gKHNpZGUpIHtcbiAgICByZXR1cm4gb3ZlcmZsb3dbc2lkZV0gPj0gMDtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIGhpZGUoX3JlZikge1xuICB2YXIgc3RhdGUgPSBfcmVmLnN0YXRlLFxuICAgICAgbmFtZSA9IF9yZWYubmFtZTtcbiAgdmFyIHJlZmVyZW5jZVJlY3QgPSBzdGF0ZS5yZWN0cy5yZWZlcmVuY2U7XG4gIHZhciBwb3BwZXJSZWN0ID0gc3RhdGUucmVjdHMucG9wcGVyO1xuICB2YXIgcHJldmVudGVkT2Zmc2V0cyA9IHN0YXRlLm1vZGlmaWVyc0RhdGEucHJldmVudE92ZXJmbG93O1xuICB2YXIgcmVmZXJlbmNlT3ZlcmZsb3cgPSBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwge1xuICAgIGVsZW1lbnRDb250ZXh0OiAncmVmZXJlbmNlJ1xuICB9KTtcbiAgdmFyIHBvcHBlckFsdE92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBhbHRCb3VuZGFyeTogdHJ1ZVxuICB9KTtcbiAgdmFyIHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKHJlZmVyZW5jZU92ZXJmbG93LCByZWZlcmVuY2VSZWN0KTtcbiAgdmFyIHBvcHBlckVzY2FwZU9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhwb3BwZXJBbHRPdmVyZmxvdywgcG9wcGVyUmVjdCwgcHJldmVudGVkT2Zmc2V0cyk7XG4gIHZhciBpc1JlZmVyZW5jZUhpZGRlbiA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChyZWZlcmVuY2VDbGlwcGluZ09mZnNldHMpO1xuICB2YXIgaGFzUG9wcGVyRXNjYXBlZCA9IGlzQW55U2lkZUZ1bGx5Q2xpcHBlZChwb3BwZXJFc2NhcGVPZmZzZXRzKTtcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IHtcbiAgICByZWZlcmVuY2VDbGlwcGluZ09mZnNldHM6IHJlZmVyZW5jZUNsaXBwaW5nT2Zmc2V0cyxcbiAgICBwb3BwZXJFc2NhcGVPZmZzZXRzOiBwb3BwZXJFc2NhcGVPZmZzZXRzLFxuICAgIGlzUmVmZXJlbmNlSGlkZGVuOiBpc1JlZmVyZW5jZUhpZGRlbixcbiAgICBoYXNQb3BwZXJFc2NhcGVkOiBoYXNQb3BwZXJFc2NhcGVkXG4gIH07XG4gIHN0YXRlLmF0dHJpYnV0ZXMucG9wcGVyID0gT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUuYXR0cmlidXRlcy5wb3BwZXIsIHtcbiAgICAnZGF0YS1wb3BwZXItcmVmZXJlbmNlLWhpZGRlbic6IGlzUmVmZXJlbmNlSGlkZGVuLFxuICAgICdkYXRhLXBvcHBlci1lc2NhcGVkJzogaGFzUG9wcGVyRXNjYXBlZFxuICB9KTtcbn0gLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgbmFtZTogJ2hpZGUnLFxuICBlbmFibGVkOiB0cnVlLFxuICBwaGFzZTogJ21haW4nLFxuICByZXF1aXJlc0lmRXhpc3RzOiBbJ3ByZXZlbnRPdmVyZmxvdyddLFxuICBmbjogaGlkZVxufTsiLCJleHBvcnQgeyBkZWZhdWx0IGFzIGFwcGx5U3R5bGVzIH0gZnJvbSBcIi4vYXBwbHlTdHlsZXMuanNcIjtcbmV4cG9ydCB7IGRlZmF1bHQgYXMgYXJyb3cgfSBmcm9tIFwiLi9hcnJvdy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBjb21wdXRlU3R5bGVzIH0gZnJvbSBcIi4vY29tcHV0ZVN0eWxlcy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBldmVudExpc3RlbmVycyB9IGZyb20gXCIuL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGZsaXAgfSBmcm9tIFwiLi9mbGlwLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGhpZGUgfSBmcm9tIFwiLi9oaWRlLmpzXCI7XG5leHBvcnQgeyBkZWZhdWx0IGFzIG9mZnNldCB9IGZyb20gXCIuL29mZnNldC5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwb3BwZXJPZmZzZXRzIH0gZnJvbSBcIi4vcG9wcGVyT2Zmc2V0cy5qc1wiO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBwcmV2ZW50T3ZlcmZsb3cgfSBmcm9tIFwiLi9wcmV2ZW50T3ZlcmZsb3cuanNcIjsiLCJpbXBvcnQgZ2V0QmFzZVBsYWNlbWVudCBmcm9tIFwiLi4vdXRpbHMvZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IHsgdG9wLCBsZWZ0LCByaWdodCwgcGxhY2VtZW50cyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCBmdW5jdGlvbiBkaXN0YW5jZUFuZFNraWRkaW5nVG9YWShwbGFjZW1lbnQsIHJlY3RzLCBvZmZzZXQpIHtcbiAgdmFyIGJhc2VQbGFjZW1lbnQgPSBnZXRCYXNlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHZhciBpbnZlcnREaXN0YW5jZSA9IFtsZWZ0LCB0b3BdLmluZGV4T2YoYmFzZVBsYWNlbWVudCkgPj0gMCA/IC0xIDogMTtcblxuICB2YXIgX3JlZiA9IHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicgPyBvZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgcmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudFxuICB9KSkgOiBvZmZzZXQsXG4gICAgICBza2lkZGluZyA9IF9yZWZbMF0sXG4gICAgICBkaXN0YW5jZSA9IF9yZWZbMV07XG5cbiAgc2tpZGRpbmcgPSBza2lkZGluZyB8fCAwO1xuICBkaXN0YW5jZSA9IChkaXN0YW5jZSB8fCAwKSAqIGludmVydERpc3RhbmNlO1xuICByZXR1cm4gW2xlZnQsIHJpZ2h0XS5pbmRleE9mKGJhc2VQbGFjZW1lbnQpID49IDAgPyB7XG4gICAgeDogZGlzdGFuY2UsXG4gICAgeTogc2tpZGRpbmdcbiAgfSA6IHtcbiAgICB4OiBza2lkZGluZyxcbiAgICB5OiBkaXN0YW5jZVxuICB9O1xufVxuXG5mdW5jdGlvbiBvZmZzZXQoX3JlZjIpIHtcbiAgdmFyIHN0YXRlID0gX3JlZjIuc3RhdGUsXG4gICAgICBvcHRpb25zID0gX3JlZjIub3B0aW9ucyxcbiAgICAgIG5hbWUgPSBfcmVmMi5uYW1lO1xuICB2YXIgX29wdGlvbnMkb2Zmc2V0ID0gb3B0aW9ucy5vZmZzZXQsXG4gICAgICBvZmZzZXQgPSBfb3B0aW9ucyRvZmZzZXQgPT09IHZvaWQgMCA/IFswLCAwXSA6IF9vcHRpb25zJG9mZnNldDtcbiAgdmFyIGRhdGEgPSBwbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRpc3RhbmNlQW5kU2tpZGRpbmdUb1hZKHBsYWNlbWVudCwgc3RhdGUucmVjdHMsIG9mZnNldCk7XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICB2YXIgX2RhdGEkc3RhdGUkcGxhY2VtZW50ID0gZGF0YVtzdGF0ZS5wbGFjZW1lbnRdLFxuICAgICAgeCA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC54LFxuICAgICAgeSA9IF9kYXRhJHN0YXRlJHBsYWNlbWVudC55O1xuXG4gIGlmIChzdGF0ZS5tb2RpZmllcnNEYXRhLnBvcHBlck9mZnNldHMgIT0gbnVsbCkge1xuICAgIHN0YXRlLm1vZGlmaWVyc0RhdGEucG9wcGVyT2Zmc2V0cy54ICs9IHg7XG4gICAgc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzLnkgKz0geTtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAnb2Zmc2V0JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgcmVxdWlyZXM6IFsncG9wcGVyT2Zmc2V0cyddLFxuICBmbjogb2Zmc2V0XG59OyIsImltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi4vdXRpbHMvY29tcHV0ZU9mZnNldHMuanNcIjtcblxuZnVuY3Rpb24gcG9wcGVyT2Zmc2V0cyhfcmVmKSB7XG4gIHZhciBzdGF0ZSA9IF9yZWYuc3RhdGUsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICAvLyBPZmZzZXRzIGFyZSB0aGUgYWN0dWFsIHBvc2l0aW9uIHRoZSBwb3BwZXIgbmVlZHMgdG8gaGF2ZSB0byBiZVxuICAvLyBwcm9wZXJseSBwb3NpdGlvbmVkIG5lYXIgaXRzIHJlZmVyZW5jZSBlbGVtZW50XG4gIC8vIFRoaXMgaXMgdGhlIG1vc3QgYmFzaWMgcGxhY2VtZW50LCBhbmQgd2lsbCBiZSBhZGp1c3RlZCBieVxuICAvLyB0aGUgbW9kaWZpZXJzIGluIHRoZSBuZXh0IHN0ZXBcbiAgc3RhdGUubW9kaWZpZXJzRGF0YVtuYW1lXSA9IGNvbXB1dGVPZmZzZXRzKHtcbiAgICByZWZlcmVuY2U6IHN0YXRlLnJlY3RzLnJlZmVyZW5jZSxcbiAgICBlbGVtZW50OiBzdGF0ZS5yZWN0cy5wb3BwZXIsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBzdGF0ZS5wbGFjZW1lbnRcbiAgfSk7XG59IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIG5hbWU6ICdwb3BwZXJPZmZzZXRzJyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdyZWFkJyxcbiAgZm46IHBvcHBlck9mZnNldHMsXG4gIGRhdGE6IHt9XG59OyIsImltcG9ydCB7IHRvcCwgbGVmdCwgcmlnaHQsIGJvdHRvbSwgc3RhcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBnZXRCYXNlUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRCYXNlUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50IGZyb20gXCIuLi91dGlscy9nZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQuanNcIjtcbmltcG9ydCBnZXRBbHRBeGlzIGZyb20gXCIuLi91dGlscy9nZXRBbHRBeGlzLmpzXCI7XG5pbXBvcnQgeyB3aXRoaW4sIHdpdGhpbk1heENsYW1wIH0gZnJvbSBcIi4uL3V0aWxzL3dpdGhpbi5qc1wiO1xuaW1wb3J0IGdldExheW91dFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRMYXlvdXRSZWN0LmpzXCI7XG5pbXBvcnQgZ2V0T2Zmc2V0UGFyZW50IGZyb20gXCIuLi9kb20tdXRpbHMvZ2V0T2Zmc2V0UGFyZW50LmpzXCI7XG5pbXBvcnQgZGV0ZWN0T3ZlcmZsb3cgZnJvbSBcIi4uL3V0aWxzL2RldGVjdE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgZ2V0VmFyaWF0aW9uIGZyb20gXCIuLi91dGlscy9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRGcmVzaFNpZGVPYmplY3QgZnJvbSBcIi4uL3V0aWxzL2dldEZyZXNoU2lkZU9iamVjdC5qc1wiO1xuaW1wb3J0IHsgbWluIGFzIG1hdGhNaW4sIG1heCBhcyBtYXRoTWF4IH0gZnJvbSBcIi4uL3V0aWxzL21hdGguanNcIjtcblxuZnVuY3Rpb24gcHJldmVudE92ZXJmbG93KF9yZWYpIHtcbiAgdmFyIHN0YXRlID0gX3JlZi5zdGF0ZSxcbiAgICAgIG9wdGlvbnMgPSBfcmVmLm9wdGlvbnMsXG4gICAgICBuYW1lID0gX3JlZi5uYW1lO1xuICB2YXIgX29wdGlvbnMkbWFpbkF4aXMgPSBvcHRpb25zLm1haW5BeGlzLFxuICAgICAgY2hlY2tNYWluQXhpcyA9IF9vcHRpb25zJG1haW5BeGlzID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkbWFpbkF4aXMsXG4gICAgICBfb3B0aW9ucyRhbHRBeGlzID0gb3B0aW9ucy5hbHRBeGlzLFxuICAgICAgY2hlY2tBbHRBeGlzID0gX29wdGlvbnMkYWx0QXhpcyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfb3B0aW9ucyRhbHRBeGlzLFxuICAgICAgYm91bmRhcnkgPSBvcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gb3B0aW9ucy5yb290Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IG9wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBwYWRkaW5nID0gb3B0aW9ucy5wYWRkaW5nLFxuICAgICAgX29wdGlvbnMkdGV0aGVyID0gb3B0aW9ucy50ZXRoZXIsXG4gICAgICB0ZXRoZXIgPSBfb3B0aW9ucyR0ZXRoZXIgPT09IHZvaWQgMCA/IHRydWUgOiBfb3B0aW9ucyR0ZXRoZXIsXG4gICAgICBfb3B0aW9ucyR0ZXRoZXJPZmZzZXQgPSBvcHRpb25zLnRldGhlck9mZnNldCxcbiAgICAgIHRldGhlck9mZnNldCA9IF9vcHRpb25zJHRldGhlck9mZnNldCA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHRldGhlck9mZnNldDtcbiAgdmFyIG92ZXJmbG93ID0gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIHtcbiAgICBib3VuZGFyeTogYm91bmRhcnksXG4gICAgcm9vdEJvdW5kYXJ5OiByb290Qm91bmRhcnksXG4gICAgcGFkZGluZzogcGFkZGluZyxcbiAgICBhbHRCb3VuZGFyeTogYWx0Qm91bmRhcnlcbiAgfSk7XG4gIHZhciBiYXNlUGxhY2VtZW50ID0gZ2V0QmFzZVBsYWNlbWVudChzdGF0ZS5wbGFjZW1lbnQpO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHN0YXRlLnBsYWNlbWVudCk7XG4gIHZhciBpc0Jhc2VQbGFjZW1lbnQgPSAhdmFyaWF0aW9uO1xuICB2YXIgbWFpbkF4aXMgPSBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQoYmFzZVBsYWNlbWVudCk7XG4gIHZhciBhbHRBeGlzID0gZ2V0QWx0QXhpcyhtYWluQXhpcyk7XG4gIHZhciBwb3BwZXJPZmZzZXRzID0gc3RhdGUubW9kaWZpZXJzRGF0YS5wb3BwZXJPZmZzZXRzO1xuICB2YXIgcmVmZXJlbmNlUmVjdCA9IHN0YXRlLnJlY3RzLnJlZmVyZW5jZTtcbiAgdmFyIHBvcHBlclJlY3QgPSBzdGF0ZS5yZWN0cy5wb3BwZXI7XG4gIHZhciB0ZXRoZXJPZmZzZXRWYWx1ZSA9IHR5cGVvZiB0ZXRoZXJPZmZzZXQgPT09ICdmdW5jdGlvbicgPyB0ZXRoZXJPZmZzZXQoT2JqZWN0LmFzc2lnbih7fSwgc3RhdGUucmVjdHMsIHtcbiAgICBwbGFjZW1lbnQ6IHN0YXRlLnBsYWNlbWVudFxuICB9KSkgOiB0ZXRoZXJPZmZzZXQ7XG4gIHZhciBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUgPSB0eXBlb2YgdGV0aGVyT2Zmc2V0VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZSxcbiAgICBhbHRBeGlzOiB0ZXRoZXJPZmZzZXRWYWx1ZVxuICB9IDogT2JqZWN0LmFzc2lnbih7XG4gICAgbWFpbkF4aXM6IDAsXG4gICAgYWx0QXhpczogMFxuICB9LCB0ZXRoZXJPZmZzZXRWYWx1ZSk7XG4gIHZhciBvZmZzZXRNb2RpZmllclN0YXRlID0gc3RhdGUubW9kaWZpZXJzRGF0YS5vZmZzZXQgPyBzdGF0ZS5tb2RpZmllcnNEYXRhLm9mZnNldFtzdGF0ZS5wbGFjZW1lbnRdIDogbnVsbDtcbiAgdmFyIGRhdGEgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG5cbiAgaWYgKCFwb3BwZXJPZmZzZXRzKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICB2YXIgX29mZnNldE1vZGlmaWVyU3RhdGUkO1xuXG4gICAgdmFyIG1haW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/IHRvcCA6IGxlZnQ7XG4gICAgdmFyIGFsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3knID8gYm90dG9tIDogcmlnaHQ7XG4gICAgdmFyIGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnaGVpZ2h0JyA6ICd3aWR0aCc7XG4gICAgdmFyIG9mZnNldCA9IHBvcHBlck9mZnNldHNbbWFpbkF4aXNdO1xuICAgIHZhciBtaW4gPSBvZmZzZXQgKyBvdmVyZmxvd1ttYWluU2lkZV07XG4gICAgdmFyIG1heCA9IG9mZnNldCAtIG92ZXJmbG93W2FsdFNpZGVdO1xuICAgIHZhciBhZGRpdGl2ZSA9IHRldGhlciA/IC1wb3BwZXJSZWN0W2xlbl0gLyAyIDogMDtcbiAgICB2YXIgbWluTGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IHJlZmVyZW5jZVJlY3RbbGVuXSA6IHBvcHBlclJlY3RbbGVuXTtcbiAgICB2YXIgbWF4TGVuID0gdmFyaWF0aW9uID09PSBzdGFydCA/IC1wb3BwZXJSZWN0W2xlbl0gOiAtcmVmZXJlbmNlUmVjdFtsZW5dOyAvLyBXZSBuZWVkIHRvIGluY2x1ZGUgdGhlIGFycm93IGluIHRoZSBjYWxjdWxhdGlvbiBzbyB0aGUgYXJyb3cgZG9lc24ndCBnb1xuICAgIC8vIG91dHNpZGUgdGhlIHJlZmVyZW5jZSBib3VuZHNcblxuICAgIHZhciBhcnJvd0VsZW1lbnQgPSBzdGF0ZS5lbGVtZW50cy5hcnJvdztcbiAgICB2YXIgYXJyb3dSZWN0ID0gdGV0aGVyICYmIGFycm93RWxlbWVudCA/IGdldExheW91dFJlY3QoYXJyb3dFbGVtZW50KSA6IHtcbiAgICAgIHdpZHRoOiAwLFxuICAgICAgaGVpZ2h0OiAwXG4gICAgfTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nT2JqZWN0ID0gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddID8gc3RhdGUubW9kaWZpZXJzRGF0YVsnYXJyb3cjcGVyc2lzdGVudCddLnBhZGRpbmcgOiBnZXRGcmVzaFNpZGVPYmplY3QoKTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWluID0gYXJyb3dQYWRkaW5nT2JqZWN0W21haW5TaWRlXTtcbiAgICB2YXIgYXJyb3dQYWRkaW5nTWF4ID0gYXJyb3dQYWRkaW5nT2JqZWN0W2FsdFNpZGVdOyAvLyBJZiB0aGUgcmVmZXJlbmNlIGxlbmd0aCBpcyBzbWFsbGVyIHRoYW4gdGhlIGFycm93IGxlbmd0aCwgd2UgZG9uJ3Qgd2FudFxuICAgIC8vIHRvIGluY2x1ZGUgaXRzIGZ1bGwgc2l6ZSBpbiB0aGUgY2FsY3VsYXRpb24uIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGxcbiAgICAvLyBhbmQgbmVhciB0aGUgZWRnZSBvZiBhIGJvdW5kYXJ5LCB0aGUgcG9wcGVyIGNhbiBvdmVyZmxvdyBldmVuIGlmIHRoZVxuICAgIC8vIHJlZmVyZW5jZSBpcyBub3Qgb3ZlcmZsb3dpbmcgYXMgd2VsbCAoZS5nLiB2aXJ0dWFsIGVsZW1lbnRzIHdpdGggbm9cbiAgICAvLyB3aWR0aCBvciBoZWlnaHQpXG5cbiAgICB2YXIgYXJyb3dMZW4gPSB3aXRoaW4oMCwgcmVmZXJlbmNlUmVjdFtsZW5dLCBhcnJvd1JlY3RbbGVuXSk7XG4gICAgdmFyIG1pbk9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IHJlZmVyZW5jZVJlY3RbbGVuXSAvIDIgLSBhZGRpdGl2ZSAtIGFycm93TGVuIC0gYXJyb3dQYWRkaW5nTWluIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzIDogbWluTGVuIC0gYXJyb3dMZW4gLSBhcnJvd1BhZGRpbmdNaW4gLSBub3JtYWxpemVkVGV0aGVyT2Zmc2V0VmFsdWUubWFpbkF4aXM7XG4gICAgdmFyIG1heE9mZnNldCA9IGlzQmFzZVBsYWNlbWVudCA/IC1yZWZlcmVuY2VSZWN0W2xlbl0gLyAyICsgYWRkaXRpdmUgKyBhcnJvd0xlbiArIGFycm93UGFkZGluZ01heCArIG5vcm1hbGl6ZWRUZXRoZXJPZmZzZXRWYWx1ZS5tYWluQXhpcyA6IG1heExlbiArIGFycm93TGVuICsgYXJyb3dQYWRkaW5nTWF4ICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLm1haW5BeGlzO1xuICAgIHZhciBhcnJvd09mZnNldFBhcmVudCA9IHN0YXRlLmVsZW1lbnRzLmFycm93ICYmIGdldE9mZnNldFBhcmVudChzdGF0ZS5lbGVtZW50cy5hcnJvdyk7XG4gICAgdmFyIGNsaWVudE9mZnNldCA9IGFycm93T2Zmc2V0UGFyZW50ID8gbWFpbkF4aXMgPT09ICd5JyA/IGFycm93T2Zmc2V0UGFyZW50LmNsaWVudFRvcCB8fCAwIDogYXJyb3dPZmZzZXRQYXJlbnQuY2xpZW50TGVmdCB8fCAwIDogMDtcbiAgICB2YXIgb2Zmc2V0TW9kaWZpZXJWYWx1ZSA9IChfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQgPSBvZmZzZXRNb2RpZmllclN0YXRlID09IG51bGwgPyB2b2lkIDAgOiBvZmZzZXRNb2RpZmllclN0YXRlW21haW5BeGlzXSkgIT0gbnVsbCA/IF9vZmZzZXRNb2RpZmllclN0YXRlJCA6IDA7XG4gICAgdmFyIHRldGhlck1pbiA9IG9mZnNldCArIG1pbk9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWUgLSBjbGllbnRPZmZzZXQ7XG4gICAgdmFyIHRldGhlck1heCA9IG9mZnNldCArIG1heE9mZnNldCAtIG9mZnNldE1vZGlmaWVyVmFsdWU7XG4gICAgdmFyIHByZXZlbnRlZE9mZnNldCA9IHdpdGhpbih0ZXRoZXIgPyBtYXRoTWluKG1pbiwgdGV0aGVyTWluKSA6IG1pbiwgb2Zmc2V0LCB0ZXRoZXIgPyBtYXRoTWF4KG1heCwgdGV0aGVyTWF4KSA6IG1heCk7XG4gICAgcG9wcGVyT2Zmc2V0c1ttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQ7XG4gICAgZGF0YVttYWluQXhpc10gPSBwcmV2ZW50ZWRPZmZzZXQgLSBvZmZzZXQ7XG4gIH1cblxuICBpZiAoY2hlY2tBbHRBeGlzKSB7XG4gICAgdmFyIF9vZmZzZXRNb2RpZmllclN0YXRlJDI7XG5cbiAgICB2YXIgX21haW5TaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IHRvcCA6IGxlZnQ7XG5cbiAgICB2YXIgX2FsdFNpZGUgPSBtYWluQXhpcyA9PT0gJ3gnID8gYm90dG9tIDogcmlnaHQ7XG5cbiAgICB2YXIgX29mZnNldCA9IHBvcHBlck9mZnNldHNbYWx0QXhpc107XG5cbiAgICB2YXIgX2xlbiA9IGFsdEF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcblxuICAgIHZhciBfbWluID0gX29mZnNldCArIG92ZXJmbG93W19tYWluU2lkZV07XG5cbiAgICB2YXIgX21heCA9IF9vZmZzZXQgLSBvdmVyZmxvd1tfYWx0U2lkZV07XG5cbiAgICB2YXIgaXNPcmlnaW5TaWRlID0gW3RvcCwgbGVmdF0uaW5kZXhPZihiYXNlUGxhY2VtZW50KSAhPT0gLTE7XG5cbiAgICB2YXIgX29mZnNldE1vZGlmaWVyVmFsdWUgPSAoX29mZnNldE1vZGlmaWVyU3RhdGUkMiA9IG9mZnNldE1vZGlmaWVyU3RhdGUgPT0gbnVsbCA/IHZvaWQgMCA6IG9mZnNldE1vZGlmaWVyU3RhdGVbYWx0QXhpc10pICE9IG51bGwgPyBfb2Zmc2V0TW9kaWZpZXJTdGF0ZSQyIDogMDtcblxuICAgIHZhciBfdGV0aGVyTWluID0gaXNPcmlnaW5TaWRlID8gX21pbiA6IF9vZmZzZXQgLSByZWZlcmVuY2VSZWN0W19sZW5dIC0gcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlICsgbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXM7XG5cbiAgICB2YXIgX3RldGhlck1heCA9IGlzT3JpZ2luU2lkZSA/IF9vZmZzZXQgKyByZWZlcmVuY2VSZWN0W19sZW5dICsgcG9wcGVyUmVjdFtfbGVuXSAtIF9vZmZzZXRNb2RpZmllclZhbHVlIC0gbm9ybWFsaXplZFRldGhlck9mZnNldFZhbHVlLmFsdEF4aXMgOiBfbWF4O1xuXG4gICAgdmFyIF9wcmV2ZW50ZWRPZmZzZXQgPSB0ZXRoZXIgJiYgaXNPcmlnaW5TaWRlID8gd2l0aGluTWF4Q2xhbXAoX3RldGhlck1pbiwgX29mZnNldCwgX3RldGhlck1heCkgOiB3aXRoaW4odGV0aGVyID8gX3RldGhlck1pbiA6IF9taW4sIF9vZmZzZXQsIHRldGhlciA/IF90ZXRoZXJNYXggOiBfbWF4KTtcblxuICAgIHBvcHBlck9mZnNldHNbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0O1xuICAgIGRhdGFbYWx0QXhpc10gPSBfcHJldmVudGVkT2Zmc2V0IC0gX29mZnNldDtcbiAgfVxuXG4gIHN0YXRlLm1vZGlmaWVyc0RhdGFbbmFtZV0gPSBkYXRhO1xufSAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cblxuZXhwb3J0IGRlZmF1bHQge1xuICBuYW1lOiAncHJldmVudE92ZXJmbG93JyxcbiAgZW5hYmxlZDogdHJ1ZSxcbiAgcGhhc2U6ICdtYWluJyxcbiAgZm46IHByZXZlbnRPdmVyZmxvdyxcbiAgcmVxdWlyZXNJZkV4aXN0czogWydvZmZzZXQnXVxufTsiLCJpbXBvcnQgeyBwb3BwZXJHZW5lcmF0b3IsIGRldGVjdE92ZXJmbG93IH0gZnJvbSBcIi4vY3JlYXRlUG9wcGVyLmpzXCI7XG5pbXBvcnQgZXZlbnRMaXN0ZW5lcnMgZnJvbSBcIi4vbW9kaWZpZXJzL2V2ZW50TGlzdGVuZXJzLmpzXCI7XG5pbXBvcnQgcG9wcGVyT2Zmc2V0cyBmcm9tIFwiLi9tb2RpZmllcnMvcG9wcGVyT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IGNvbXB1dGVTdHlsZXMgZnJvbSBcIi4vbW9kaWZpZXJzL2NvbXB1dGVTdHlsZXMuanNcIjtcbmltcG9ydCBhcHBseVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvYXBwbHlTdHlsZXMuanNcIjtcbnZhciBkZWZhdWx0TW9kaWZpZXJzID0gW2V2ZW50TGlzdGVuZXJzLCBwb3BwZXJPZmZzZXRzLCBjb21wdXRlU3R5bGVzLCBhcHBseVN0eWxlc107XG52YXIgY3JlYXRlUG9wcGVyID0gLyojX19QVVJFX18qL3BvcHBlckdlbmVyYXRvcih7XG4gIGRlZmF1bHRNb2RpZmllcnM6IGRlZmF1bHRNb2RpZmllcnNcbn0pOyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLXVudXNlZC1tb2R1bGVzXG5cbmV4cG9ydCB7IGNyZWF0ZVBvcHBlciwgcG9wcGVyR2VuZXJhdG9yLCBkZWZhdWx0TW9kaWZpZXJzLCBkZXRlY3RPdmVyZmxvdyB9OyIsImltcG9ydCB7IHBvcHBlckdlbmVyYXRvciwgZGV0ZWN0T3ZlcmZsb3cgfSBmcm9tIFwiLi9jcmVhdGVQb3BwZXIuanNcIjtcbmltcG9ydCBldmVudExpc3RlbmVycyBmcm9tIFwiLi9tb2RpZmllcnMvZXZlbnRMaXN0ZW5lcnMuanNcIjtcbmltcG9ydCBwb3BwZXJPZmZzZXRzIGZyb20gXCIuL21vZGlmaWVycy9wb3BwZXJPZmZzZXRzLmpzXCI7XG5pbXBvcnQgY29tcHV0ZVN0eWxlcyBmcm9tIFwiLi9tb2RpZmllcnMvY29tcHV0ZVN0eWxlcy5qc1wiO1xuaW1wb3J0IGFwcGx5U3R5bGVzIGZyb20gXCIuL21vZGlmaWVycy9hcHBseVN0eWxlcy5qc1wiO1xuaW1wb3J0IG9mZnNldCBmcm9tIFwiLi9tb2RpZmllcnMvb2Zmc2V0LmpzXCI7XG5pbXBvcnQgZmxpcCBmcm9tIFwiLi9tb2RpZmllcnMvZmxpcC5qc1wiO1xuaW1wb3J0IHByZXZlbnRPdmVyZmxvdyBmcm9tIFwiLi9tb2RpZmllcnMvcHJldmVudE92ZXJmbG93LmpzXCI7XG5pbXBvcnQgYXJyb3cgZnJvbSBcIi4vbW9kaWZpZXJzL2Fycm93LmpzXCI7XG5pbXBvcnQgaGlkZSBmcm9tIFwiLi9tb2RpZmllcnMvaGlkZS5qc1wiO1xudmFyIGRlZmF1bHRNb2RpZmllcnMgPSBbZXZlbnRMaXN0ZW5lcnMsIHBvcHBlck9mZnNldHMsIGNvbXB1dGVTdHlsZXMsIGFwcGx5U3R5bGVzLCBvZmZzZXQsIGZsaXAsIHByZXZlbnRPdmVyZmxvdywgYXJyb3csIGhpZGVdO1xudmFyIGNyZWF0ZVBvcHBlciA9IC8qI19fUFVSRV9fKi9wb3BwZXJHZW5lcmF0b3Ioe1xuICBkZWZhdWx0TW9kaWZpZXJzOiBkZWZhdWx0TW9kaWZpZXJzXG59KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIsIHBvcHBlckdlbmVyYXRvciwgZGVmYXVsdE1vZGlmaWVycywgZGV0ZWN0T3ZlcmZsb3cgfTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIGltcG9ydC9uby11bnVzZWQtbW9kdWxlc1xuXG5leHBvcnQgeyBjcmVhdGVQb3BwZXIgYXMgY3JlYXRlUG9wcGVyTGl0ZSB9IGZyb20gXCIuL3BvcHBlci1saXRlLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0ICogZnJvbSBcIi4vbW9kaWZpZXJzL2luZGV4LmpzXCI7IiwiaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCB7IHZhcmlhdGlvblBsYWNlbWVudHMsIGJhc2VQbGFjZW1lbnRzLCBwbGFjZW1lbnRzIGFzIGFsbFBsYWNlbWVudHMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCBkZXRlY3RPdmVyZmxvdyBmcm9tIFwiLi9kZXRlY3RPdmVyZmxvdy5qc1wiO1xuaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gY29tcHV0ZUF1dG9QbGFjZW1lbnQoc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBib3VuZGFyeSA9IF9vcHRpb25zLmJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBmbGlwVmFyaWF0aW9ucyA9IF9vcHRpb25zLmZsaXBWYXJpYXRpb25zLFxuICAgICAgX29wdGlvbnMkYWxsb3dlZEF1dG9QID0gX29wdGlvbnMuYWxsb3dlZEF1dG9QbGFjZW1lbnRzLFxuICAgICAgYWxsb3dlZEF1dG9QbGFjZW1lbnRzID0gX29wdGlvbnMkYWxsb3dlZEF1dG9QID09PSB2b2lkIDAgPyBhbGxQbGFjZW1lbnRzIDogX29wdGlvbnMkYWxsb3dlZEF1dG9QO1xuICB2YXIgdmFyaWF0aW9uID0gZ2V0VmFyaWF0aW9uKHBsYWNlbWVudCk7XG4gIHZhciBwbGFjZW1lbnRzID0gdmFyaWF0aW9uID8gZmxpcFZhcmlhdGlvbnMgPyB2YXJpYXRpb25QbGFjZW1lbnRzIDogdmFyaWF0aW9uUGxhY2VtZW50cy5maWx0ZXIoZnVuY3Rpb24gKHBsYWNlbWVudCkge1xuICAgIHJldHVybiBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA9PT0gdmFyaWF0aW9uO1xuICB9KSA6IGJhc2VQbGFjZW1lbnRzO1xuICB2YXIgYWxsb3dlZFBsYWNlbWVudHMgPSBwbGFjZW1lbnRzLmZpbHRlcihmdW5jdGlvbiAocGxhY2VtZW50KSB7XG4gICAgcmV0dXJuIGFsbG93ZWRBdXRvUGxhY2VtZW50cy5pbmRleE9mKHBsYWNlbWVudCkgPj0gMDtcbiAgfSk7XG5cbiAgaWYgKGFsbG93ZWRQbGFjZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIGFsbG93ZWRQbGFjZW1lbnRzID0gcGxhY2VtZW50cztcblxuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoWydQb3BwZXI6IFRoZSBgYWxsb3dlZEF1dG9QbGFjZW1lbnRzYCBvcHRpb24gZGlkIG5vdCBhbGxvdyBhbnknLCAncGxhY2VtZW50cy4gRW5zdXJlIHRoZSBgcGxhY2VtZW50YCBvcHRpb24gbWF0Y2hlcyB0aGUgdmFyaWF0aW9uJywgJ29mIHRoZSBhbGxvd2VkIHBsYWNlbWVudHMuJywgJ0ZvciBleGFtcGxlLCBcImF1dG9cIiBjYW5ub3QgYmUgdXNlZCB0byBhbGxvdyBcImJvdHRvbS1zdGFydFwiLicsICdVc2UgXCJhdXRvLXN0YXJ0XCIgaW5zdGVhZC4nXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfSAvLyAkRmxvd0ZpeE1lW2luY29tcGF0aWJsZS10eXBlXTogRmxvdyBzZWVtcyB0byBoYXZlIHByb2JsZW1zIHdpdGggdHdvIGFycmF5IHVuaW9ucy4uLlxuXG5cbiAgdmFyIG92ZXJmbG93cyA9IGFsbG93ZWRQbGFjZW1lbnRzLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBwbGFjZW1lbnQpIHtcbiAgICBhY2NbcGxhY2VtZW50XSA9IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudCxcbiAgICAgIGJvdW5kYXJ5OiBib3VuZGFyeSxcbiAgICAgIHJvb3RCb3VuZGFyeTogcm9vdEJvdW5kYXJ5LFxuICAgICAgcGFkZGluZzogcGFkZGluZ1xuICAgIH0pW2dldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KV07XG4gICAgcmV0dXJuIGFjYztcbiAgfSwge30pO1xuICByZXR1cm4gT2JqZWN0LmtleXMob3ZlcmZsb3dzKS5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgcmV0dXJuIG92ZXJmbG93c1thXSAtIG92ZXJmbG93c1tiXTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEJhc2VQbGFjZW1lbnQgZnJvbSBcIi4vZ2V0QmFzZVBsYWNlbWVudC5qc1wiO1xuaW1wb3J0IGdldFZhcmlhdGlvbiBmcm9tIFwiLi9nZXRWYXJpYXRpb24uanNcIjtcbmltcG9ydCBnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQgZnJvbSBcIi4vZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50LmpzXCI7XG5pbXBvcnQgeyB0b3AsIHJpZ2h0LCBib3R0b20sIGxlZnQsIHN0YXJ0LCBlbmQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGNvbXB1dGVPZmZzZXRzKF9yZWYpIHtcbiAgdmFyIHJlZmVyZW5jZSA9IF9yZWYucmVmZXJlbmNlLFxuICAgICAgZWxlbWVudCA9IF9yZWYuZWxlbWVudCxcbiAgICAgIHBsYWNlbWVudCA9IF9yZWYucGxhY2VtZW50O1xuICB2YXIgYmFzZVBsYWNlbWVudCA9IHBsYWNlbWVudCA/IGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciB2YXJpYXRpb24gPSBwbGFjZW1lbnQgPyBnZXRWYXJpYXRpb24ocGxhY2VtZW50KSA6IG51bGw7XG4gIHZhciBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZWxlbWVudC53aWR0aCAvIDI7XG4gIHZhciBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGVsZW1lbnQuaGVpZ2h0IC8gMjtcbiAgdmFyIG9mZnNldHM7XG5cbiAgc3dpdGNoIChiYXNlUGxhY2VtZW50KSB7XG4gICAgY2FzZSB0b3A6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiBjb21tb25YLFxuICAgICAgICB5OiByZWZlcmVuY2UueSAtIGVsZW1lbnQuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGJvdHRvbTpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55ICsgcmVmZXJlbmNlLmhlaWdodFxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSByaWdodDpcbiAgICAgIG9mZnNldHMgPSB7XG4gICAgICAgIHg6IHJlZmVyZW5jZS54ICsgcmVmZXJlbmNlLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG5cbiAgICBjYXNlIGxlZnQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGVsZW1lbnQud2lkdGgsXG4gICAgICAgIHk6IGNvbW1vbllcbiAgICAgIH07XG4gICAgICBicmVhaztcblxuICAgIGRlZmF1bHQ6XG4gICAgICBvZmZzZXRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnlcbiAgICAgIH07XG4gIH1cblxuICB2YXIgbWFpbkF4aXMgPSBiYXNlUGxhY2VtZW50ID8gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGJhc2VQbGFjZW1lbnQpIDogbnVsbDtcblxuICBpZiAobWFpbkF4aXMgIT0gbnVsbCkge1xuICAgIHZhciBsZW4gPSBtYWluQXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xuXG4gICAgc3dpdGNoICh2YXJpYXRpb24pIHtcbiAgICAgIGNhc2Ugc3RhcnQ6XG4gICAgICAgIG9mZnNldHNbbWFpbkF4aXNdID0gb2Zmc2V0c1ttYWluQXhpc10gLSAocmVmZXJlbmNlW2xlbl0gLyAyIC0gZWxlbWVudFtsZW5dIC8gMik7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBjYXNlIGVuZDpcbiAgICAgICAgb2Zmc2V0c1ttYWluQXhpc10gPSBvZmZzZXRzW21haW5BeGlzXSArIChyZWZlcmVuY2VbbGVuXSAvIDIgLSBlbGVtZW50W2xlbl0gLyAyKTtcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGRlZmF1bHQ6XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG9mZnNldHM7XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGVib3VuY2UoZm4pIHtcbiAgdmFyIHBlbmRpbmc7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKCFwZW5kaW5nKSB7XG4gICAgICBwZW5kaW5nID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcGVuZGluZyA9IHVuZGVmaW5lZDtcbiAgICAgICAgICByZXNvbHZlKGZuKCkpO1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHJldHVybiBwZW5kaW5nO1xuICB9O1xufSIsImltcG9ydCBnZXRDbGlwcGluZ1JlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRDbGlwcGluZ1JlY3QuanNcIjtcbmltcG9ydCBnZXREb2N1bWVudEVsZW1lbnQgZnJvbSBcIi4uL2RvbS11dGlscy9nZXREb2N1bWVudEVsZW1lbnQuanNcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4uL2RvbS11dGlscy9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanNcIjtcbmltcG9ydCBjb21wdXRlT2Zmc2V0cyBmcm9tIFwiLi9jb21wdXRlT2Zmc2V0cy5qc1wiO1xuaW1wb3J0IHJlY3RUb0NsaWVudFJlY3QgZnJvbSBcIi4vcmVjdFRvQ2xpZW50UmVjdC5qc1wiO1xuaW1wb3J0IHsgY2xpcHBpbmdQYXJlbnRzLCByZWZlcmVuY2UsIHBvcHBlciwgYm90dG9tLCB0b3AsIHJpZ2h0LCBiYXNlUGxhY2VtZW50cywgdmlld3BvcnQgfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmltcG9ydCB7IGlzRWxlbWVudCB9IGZyb20gXCIuLi9kb20tdXRpbHMvaW5zdGFuY2VPZi5qc1wiO1xuaW1wb3J0IG1lcmdlUGFkZGluZ09iamVjdCBmcm9tIFwiLi9tZXJnZVBhZGRpbmdPYmplY3QuanNcIjtcbmltcG9ydCBleHBhbmRUb0hhc2hNYXAgZnJvbSBcIi4vZXhwYW5kVG9IYXNoTWFwLmpzXCI7IC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBpbXBvcnQvbm8tdW51c2VkLW1vZHVsZXNcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHZhciBfb3B0aW9ucyA9IG9wdGlvbnMsXG4gICAgICBfb3B0aW9ucyRwbGFjZW1lbnQgPSBfb3B0aW9ucy5wbGFjZW1lbnQsXG4gICAgICBwbGFjZW1lbnQgPSBfb3B0aW9ucyRwbGFjZW1lbnQgPT09IHZvaWQgMCA/IHN0YXRlLnBsYWNlbWVudCA6IF9vcHRpb25zJHBsYWNlbWVudCxcbiAgICAgIF9vcHRpb25zJHN0cmF0ZWd5ID0gX29wdGlvbnMuc3RyYXRlZ3ksXG4gICAgICBzdHJhdGVneSA9IF9vcHRpb25zJHN0cmF0ZWd5ID09PSB2b2lkIDAgPyBzdGF0ZS5zdHJhdGVneSA6IF9vcHRpb25zJHN0cmF0ZWd5LFxuICAgICAgX29wdGlvbnMkYm91bmRhcnkgPSBfb3B0aW9ucy5ib3VuZGFyeSxcbiAgICAgIGJvdW5kYXJ5ID0gX29wdGlvbnMkYm91bmRhcnkgPT09IHZvaWQgMCA/IGNsaXBwaW5nUGFyZW50cyA6IF9vcHRpb25zJGJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMucm9vdEJvdW5kYXJ5LFxuICAgICAgcm9vdEJvdW5kYXJ5ID0gX29wdGlvbnMkcm9vdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyB2aWV3cG9ydCA6IF9vcHRpb25zJHJvb3RCb3VuZGFyeSxcbiAgICAgIF9vcHRpb25zJGVsZW1lbnRDb250ZSA9IF9vcHRpb25zLmVsZW1lbnRDb250ZXh0LFxuICAgICAgZWxlbWVudENvbnRleHQgPSBfb3B0aW9ucyRlbGVtZW50Q29udGUgPT09IHZvaWQgMCA/IHBvcHBlciA6IF9vcHRpb25zJGVsZW1lbnRDb250ZSxcbiAgICAgIF9vcHRpb25zJGFsdEJvdW5kYXJ5ID0gX29wdGlvbnMuYWx0Qm91bmRhcnksXG4gICAgICBhbHRCb3VuZGFyeSA9IF9vcHRpb25zJGFsdEJvdW5kYXJ5ID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGFsdEJvdW5kYXJ5LFxuICAgICAgX29wdGlvbnMkcGFkZGluZyA9IF9vcHRpb25zLnBhZGRpbmcsXG4gICAgICBwYWRkaW5nID0gX29wdGlvbnMkcGFkZGluZyA9PT0gdm9pZCAwID8gMCA6IF9vcHRpb25zJHBhZGRpbmc7XG4gIHZhciBwYWRkaW5nT2JqZWN0ID0gbWVyZ2VQYWRkaW5nT2JqZWN0KHR5cGVvZiBwYWRkaW5nICE9PSAnbnVtYmVyJyA/IHBhZGRpbmcgOiBleHBhbmRUb0hhc2hNYXAocGFkZGluZywgYmFzZVBsYWNlbWVudHMpKTtcbiAgdmFyIGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gcG9wcGVyID8gcmVmZXJlbmNlIDogcG9wcGVyO1xuICB2YXIgcG9wcGVyUmVjdCA9IHN0YXRlLnJlY3RzLnBvcHBlcjtcbiAgdmFyIGVsZW1lbnQgPSBzdGF0ZS5lbGVtZW50c1thbHRCb3VuZGFyeSA/IGFsdENvbnRleHQgOiBlbGVtZW50Q29udGV4dF07XG4gIHZhciBjbGlwcGluZ0NsaWVudFJlY3QgPSBnZXRDbGlwcGluZ1JlY3QoaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgZ2V0RG9jdW1lbnRFbGVtZW50KHN0YXRlLmVsZW1lbnRzLnBvcHBlciksIGJvdW5kYXJ5LCByb290Qm91bmRhcnksIHN0cmF0ZWd5KTtcbiAgdmFyIHJlZmVyZW5jZUNsaWVudFJlY3QgPSBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc3RhdGUuZWxlbWVudHMucmVmZXJlbmNlKTtcbiAgdmFyIHBvcHBlck9mZnNldHMgPSBjb21wdXRlT2Zmc2V0cyh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VDbGllbnRSZWN0LFxuICAgIGVsZW1lbnQ6IHBvcHBlclJlY3QsXG4gICAgc3RyYXRlZ3k6ICdhYnNvbHV0ZScsXG4gICAgcGxhY2VtZW50OiBwbGFjZW1lbnRcbiAgfSk7XG4gIHZhciBwb3BwZXJDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChPYmplY3QuYXNzaWduKHt9LCBwb3BwZXJSZWN0LCBwb3BwZXJPZmZzZXRzKSk7XG4gIHZhciBlbGVtZW50Q2xpZW50UmVjdCA9IGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgPyBwb3BwZXJDbGllbnRSZWN0IDogcmVmZXJlbmNlQ2xpZW50UmVjdDsgLy8gcG9zaXRpdmUgPSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgcmVjdFxuICAvLyAwIG9yIG5lZ2F0aXZlID0gd2l0aGluIHRoZSBjbGlwcGluZyByZWN0XG5cbiAgdmFyIG92ZXJmbG93T2Zmc2V0cyA9IHtcbiAgICB0b3A6IGNsaXBwaW5nQ2xpZW50UmVjdC50b3AgLSBlbGVtZW50Q2xpZW50UmVjdC50b3AgKyBwYWRkaW5nT2JqZWN0LnRvcCxcbiAgICBib3R0b206IGVsZW1lbnRDbGllbnRSZWN0LmJvdHRvbSAtIGNsaXBwaW5nQ2xpZW50UmVjdC5ib3R0b20gKyBwYWRkaW5nT2JqZWN0LmJvdHRvbSxcbiAgICBsZWZ0OiBjbGlwcGluZ0NsaWVudFJlY3QubGVmdCAtIGVsZW1lbnRDbGllbnRSZWN0LmxlZnQgKyBwYWRkaW5nT2JqZWN0LmxlZnQsXG4gICAgcmlnaHQ6IGVsZW1lbnRDbGllbnRSZWN0LnJpZ2h0IC0gY2xpcHBpbmdDbGllbnRSZWN0LnJpZ2h0ICsgcGFkZGluZ09iamVjdC5yaWdodFxuICB9O1xuICB2YXIgb2Zmc2V0RGF0YSA9IHN0YXRlLm1vZGlmaWVyc0RhdGEub2Zmc2V0OyAvLyBPZmZzZXRzIGNhbiBiZSBhcHBsaWVkIG9ubHkgdG8gdGhlIHBvcHBlciBlbGVtZW50XG5cbiAgaWYgKGVsZW1lbnRDb250ZXh0ID09PSBwb3BwZXIgJiYgb2Zmc2V0RGF0YSkge1xuICAgIHZhciBvZmZzZXQgPSBvZmZzZXREYXRhW3BsYWNlbWVudF07XG4gICAgT2JqZWN0LmtleXMob3ZlcmZsb3dPZmZzZXRzKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHZhciBtdWx0aXBseSA9IFtyaWdodCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/IDEgOiAtMTtcbiAgICAgIHZhciBheGlzID0gW3RvcCwgYm90dG9tXS5pbmRleE9mKGtleSkgPj0gMCA/ICd5JyA6ICd4JztcbiAgICAgIG92ZXJmbG93T2Zmc2V0c1trZXldICs9IG9mZnNldFtheGlzXSAqIG11bHRpcGx5O1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIG92ZXJmbG93T2Zmc2V0cztcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBleHBhbmRUb0hhc2hNYXAodmFsdWUsIGtleXMpIHtcbiAgcmV0dXJuIGtleXMucmVkdWNlKGZ1bmN0aW9uIChoYXNoTWFwLCBrZXkpIHtcbiAgICBoYXNoTWFwW2tleV0gPSB2YWx1ZTtcbiAgICByZXR1cm4gaGFzaE1hcDtcbiAgfSwge30pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZvcm1hdChzdHIpIHtcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgcmV0dXJuIFtdLmNvbmNhdChhcmdzKS5yZWR1Y2UoZnVuY3Rpb24gKHAsIGMpIHtcbiAgICByZXR1cm4gcC5yZXBsYWNlKC8lcy8sIGMpO1xuICB9LCBzdHIpO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEFsdEF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3gnID8gJ3knIDogJ3gnO1xufSIsImltcG9ydCB7IGF1dG8gfSBmcm9tIFwiLi4vZW51bXMuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldEJhc2VQbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVswXTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRGcmVzaFNpZGVPYmplY3QoKSB7XG4gIHJldHVybiB7XG4gICAgdG9wOiAwLFxuICAgIHJpZ2h0OiAwLFxuICAgIGJvdHRvbTogMCxcbiAgICBsZWZ0OiAwXG4gIH07XG59IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkge1xuICByZXR1cm4gWyd0b3AnLCAnYm90dG9tJ10uaW5kZXhPZihwbGFjZW1lbnQpID49IDAgPyAneCcgOiAneSc7XG59IiwidmFyIGhhc2ggPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgZnVuY3Rpb24gKG1hdGNoZWQpIHtcbiAgICByZXR1cm4gaGFzaFttYXRjaGVkXTtcbiAgfSk7XG59IiwidmFyIGhhc2ggPSB7XG4gIHN0YXJ0OiAnZW5kJyxcbiAgZW5kOiAnc3RhcnQnXG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZ2V0T3Bwb3NpdGVWYXJpYXRpb25QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQucmVwbGFjZSgvc3RhcnR8ZW5kL2csIGZ1bmN0aW9uIChtYXRjaGVkKSB7XG4gICAgcmV0dXJuIGhhc2hbbWF0Y2hlZF07XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGdldFZhcmlhdGlvbihwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5zcGxpdCgnLScpWzFdO1xufSIsImV4cG9ydCB2YXIgbWF4ID0gTWF0aC5tYXg7XG5leHBvcnQgdmFyIG1pbiA9IE1hdGgubWluO1xuZXhwb3J0IHZhciByb3VuZCA9IE1hdGgucm91bmQ7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbWVyZ2VCeU5hbWUobW9kaWZpZXJzKSB7XG4gIHZhciBtZXJnZWQgPSBtb2RpZmllcnMucmVkdWNlKGZ1bmN0aW9uIChtZXJnZWQsIGN1cnJlbnQpIHtcbiAgICB2YXIgZXhpc3RpbmcgPSBtZXJnZWRbY3VycmVudC5uYW1lXTtcbiAgICBtZXJnZWRbY3VycmVudC5uYW1lXSA9IGV4aXN0aW5nID8gT2JqZWN0LmFzc2lnbih7fSwgZXhpc3RpbmcsIGN1cnJlbnQsIHtcbiAgICAgIG9wdGlvbnM6IE9iamVjdC5hc3NpZ24oe30sIGV4aXN0aW5nLm9wdGlvbnMsIGN1cnJlbnQub3B0aW9ucyksXG4gICAgICBkYXRhOiBPYmplY3QuYXNzaWduKHt9LCBleGlzdGluZy5kYXRhLCBjdXJyZW50LmRhdGEpXG4gICAgfSkgOiBjdXJyZW50O1xuICAgIHJldHVybiBtZXJnZWQ7XG4gIH0sIHt9KTsgLy8gSUUxMSBkb2VzIG5vdCBzdXBwb3J0IE9iamVjdC52YWx1ZXNcblxuICByZXR1cm4gT2JqZWN0LmtleXMobWVyZ2VkKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgIHJldHVybiBtZXJnZWRba2V5XTtcbiAgfSk7XG59IiwiaW1wb3J0IGdldEZyZXNoU2lkZU9iamVjdCBmcm9tIFwiLi9nZXRGcmVzaFNpZGVPYmplY3QuanNcIjtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG1lcmdlUGFkZGluZ09iamVjdChwYWRkaW5nT2JqZWN0KSB7XG4gIHJldHVybiBPYmplY3QuYXNzaWduKHt9LCBnZXRGcmVzaFNpZGVPYmplY3QoKSwgcGFkZGluZ09iamVjdCk7XG59IiwiaW1wb3J0IHsgbW9kaWZpZXJQaGFzZXMgfSBmcm9tIFwiLi4vZW51bXMuanNcIjsgLy8gc291cmNlOiBodHRwczovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy80OTg3NTI1NVxuXG5mdW5jdGlvbiBvcmRlcihtb2RpZmllcnMpIHtcbiAgdmFyIG1hcCA9IG5ldyBNYXAoKTtcbiAgdmFyIHZpc2l0ZWQgPSBuZXcgU2V0KCk7XG4gIHZhciByZXN1bHQgPSBbXTtcbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgbWFwLnNldChtb2RpZmllci5uYW1lLCBtb2RpZmllcik7XG4gIH0pOyAvLyBPbiB2aXNpdGluZyBvYmplY3QsIGNoZWNrIGZvciBpdHMgZGVwZW5kZW5jaWVzIGFuZCB2aXNpdCB0aGVtIHJlY3Vyc2l2ZWx5XG5cbiAgZnVuY3Rpb24gc29ydChtb2RpZmllcikge1xuICAgIHZpc2l0ZWQuYWRkKG1vZGlmaWVyLm5hbWUpO1xuICAgIHZhciByZXF1aXJlcyA9IFtdLmNvbmNhdChtb2RpZmllci5yZXF1aXJlcyB8fCBbXSwgbW9kaWZpZXIucmVxdWlyZXNJZkV4aXN0cyB8fCBbXSk7XG4gICAgcmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAoZGVwKSB7XG4gICAgICBpZiAoIXZpc2l0ZWQuaGFzKGRlcCkpIHtcbiAgICAgICAgdmFyIGRlcE1vZGlmaWVyID0gbWFwLmdldChkZXApO1xuXG4gICAgICAgIGlmIChkZXBNb2RpZmllcikge1xuICAgICAgICAgIHNvcnQoZGVwTW9kaWZpZXIpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzdWx0LnB1c2gobW9kaWZpZXIpO1xuICB9XG5cbiAgbW9kaWZpZXJzLmZvckVhY2goZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgaWYgKCF2aXNpdGVkLmhhcyhtb2RpZmllci5uYW1lKSkge1xuICAgICAgLy8gY2hlY2sgZm9yIHZpc2l0ZWQgb2JqZWN0XG4gICAgICBzb3J0KG1vZGlmaWVyKTtcbiAgICB9XG4gIH0pO1xuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBvcmRlck1vZGlmaWVycyhtb2RpZmllcnMpIHtcbiAgLy8gb3JkZXIgYmFzZWQgb24gZGVwZW5kZW5jaWVzXG4gIHZhciBvcmRlcmVkTW9kaWZpZXJzID0gb3JkZXIobW9kaWZpZXJzKTsgLy8gb3JkZXIgYmFzZWQgb24gcGhhc2VcblxuICByZXR1cm4gbW9kaWZpZXJQaGFzZXMucmVkdWNlKGZ1bmN0aW9uIChhY2MsIHBoYXNlKSB7XG4gICAgcmV0dXJuIGFjYy5jb25jYXQob3JkZXJlZE1vZGlmaWVycy5maWx0ZXIoZnVuY3Rpb24gKG1vZGlmaWVyKSB7XG4gICAgICByZXR1cm4gbW9kaWZpZXIucGhhc2UgPT09IHBoYXNlO1xuICAgIH0pKTtcbiAgfSwgW10pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlY3RUb0NsaWVudFJlY3QocmVjdCkge1xuICByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcmVjdCwge1xuICAgIGxlZnQ6IHJlY3QueCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICByaWdodDogcmVjdC54ICsgcmVjdC53aWR0aCxcbiAgICBib3R0b206IHJlY3QueSArIHJlY3QuaGVpZ2h0XG4gIH0pO1xufSIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHVuaXF1ZUJ5KGFyciwgZm4pIHtcbiAgdmFyIGlkZW50aWZpZXJzID0gbmV3IFNldCgpO1xuICByZXR1cm4gYXJyLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgIHZhciBpZGVudGlmaWVyID0gZm4oaXRlbSk7XG5cbiAgICBpZiAoIWlkZW50aWZpZXJzLmhhcyhpZGVudGlmaWVyKSkge1xuICAgICAgaWRlbnRpZmllcnMuYWRkKGlkZW50aWZpZXIpO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuICB9KTtcbn0iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBnZXRVQVN0cmluZygpIHtcbiAgdmFyIHVhRGF0YSA9IG5hdmlnYXRvci51c2VyQWdlbnREYXRhO1xuXG4gIGlmICh1YURhdGEgIT0gbnVsbCAmJiB1YURhdGEuYnJhbmRzKSB7XG4gICAgcmV0dXJuIHVhRGF0YS5icmFuZHMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICByZXR1cm4gaXRlbS5icmFuZCArIFwiL1wiICsgaXRlbS52ZXJzaW9uO1xuICAgIH0pLmpvaW4oJyAnKTtcbiAgfVxuXG4gIHJldHVybiBuYXZpZ2F0b3IudXNlckFnZW50O1xufSIsImltcG9ydCBmb3JtYXQgZnJvbSBcIi4vZm9ybWF0LmpzXCI7XG5pbXBvcnQgeyBtb2RpZmllclBoYXNlcyB9IGZyb20gXCIuLi9lbnVtcy5qc1wiO1xudmFyIElOVkFMSURfTU9ESUZJRVJfRVJST1IgPSAnUG9wcGVyOiBtb2RpZmllciBcIiVzXCIgcHJvdmlkZWQgYW4gaW52YWxpZCAlcyBwcm9wZXJ0eSwgZXhwZWN0ZWQgJXMgYnV0IGdvdCAlcyc7XG52YXIgTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SID0gJ1BvcHBlcjogbW9kaWZpZXIgXCIlc1wiIHJlcXVpcmVzIFwiJXNcIiwgYnV0IFwiJXNcIiBtb2RpZmllciBpcyBub3QgYXZhaWxhYmxlJztcbnZhciBWQUxJRF9QUk9QRVJUSUVTID0gWyduYW1lJywgJ2VuYWJsZWQnLCAncGhhc2UnLCAnZm4nLCAnZWZmZWN0JywgJ3JlcXVpcmVzJywgJ29wdGlvbnMnXTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHZhbGlkYXRlTW9kaWZpZXJzKG1vZGlmaWVycykge1xuICBtb2RpZmllcnMuZm9yRWFjaChmdW5jdGlvbiAobW9kaWZpZXIpIHtcbiAgICBbXS5jb25jYXQoT2JqZWN0LmtleXMobW9kaWZpZXIpLCBWQUxJRF9QUk9QRVJUSUVTKSAvLyBJRTExLWNvbXBhdGlibGUgcmVwbGFjZW1lbnQgZm9yIGBuZXcgU2V0KGl0ZXJhYmxlKWBcbiAgICAuZmlsdGVyKGZ1bmN0aW9uICh2YWx1ZSwgaW5kZXgsIHNlbGYpIHtcbiAgICAgIHJldHVybiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleDtcbiAgICB9KS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ25hbWUnOlxuICAgICAgICAgIGlmICh0eXBlb2YgbW9kaWZpZXIubmFtZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIFN0cmluZyhtb2RpZmllci5uYW1lKSwgJ1wibmFtZVwiJywgJ1wic3RyaW5nXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5uYW1lKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnZW5hYmxlZCc6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5lbmFibGVkICE9PSAnYm9vbGVhbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVuYWJsZWRcIicsICdcImJvb2xlYW5cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmVuYWJsZWQpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdwaGFzZSc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyUGhhc2VzLmluZGV4T2YobW9kaWZpZXIucGhhc2UpIDwgMCkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicGhhc2VcIicsIFwiZWl0aGVyIFwiICsgbW9kaWZpZXJQaGFzZXMuam9pbignLCAnKSwgXCJcXFwiXCIgKyBTdHJpbmcobW9kaWZpZXIucGhhc2UpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdmbic6XG4gICAgICAgICAgaWYgKHR5cGVvZiBtb2RpZmllci5mbiAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wiZm5cIicsICdcImZ1bmN0aW9uXCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5mbikgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VmZmVjdCc6XG4gICAgICAgICAgaWYgKG1vZGlmaWVyLmVmZmVjdCAhPSBudWxsICYmIHR5cGVvZiBtb2RpZmllci5lZmZlY3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoZm9ybWF0KElOVkFMSURfTU9ESUZJRVJfRVJST1IsIG1vZGlmaWVyLm5hbWUsICdcImVmZmVjdFwiJywgJ1wiZnVuY3Rpb25cIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLmZuKSArIFwiXFxcIlwiKSk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAncmVxdWlyZXMnOlxuICAgICAgICAgIGlmIChtb2RpZmllci5yZXF1aXJlcyAhPSBudWxsICYmICFBcnJheS5pc0FycmF5KG1vZGlmaWVyLnJlcXVpcmVzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNcIicsICdcImFycmF5XCInLCBcIlxcXCJcIiArIFN0cmluZyhtb2RpZmllci5yZXF1aXJlcykgKyBcIlxcXCJcIikpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3JlcXVpcmVzSWZFeGlzdHMnOlxuICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShtb2RpZmllci5yZXF1aXJlc0lmRXhpc3RzKSkge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoSU5WQUxJRF9NT0RJRklFUl9FUlJPUiwgbW9kaWZpZXIubmFtZSwgJ1wicmVxdWlyZXNJZkV4aXN0c1wiJywgJ1wiYXJyYXlcIicsIFwiXFxcIlwiICsgU3RyaW5nKG1vZGlmaWVyLnJlcXVpcmVzSWZFeGlzdHMpICsgXCJcXFwiXCIpKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdvcHRpb25zJzpcbiAgICAgICAgY2FzZSAnZGF0YSc6XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKFwiUG9wcGVySlM6IGFuIGludmFsaWQgcHJvcGVydHkgaGFzIGJlZW4gcHJvdmlkZWQgdG8gdGhlIFxcXCJcIiArIG1vZGlmaWVyLm5hbWUgKyBcIlxcXCIgbW9kaWZpZXIsIHZhbGlkIHByb3BlcnRpZXMgYXJlIFwiICsgVkFMSURfUFJPUEVSVElFUy5tYXAoZnVuY3Rpb24gKHMpIHtcbiAgICAgICAgICAgIHJldHVybiBcIlxcXCJcIiArIHMgKyBcIlxcXCJcIjtcbiAgICAgICAgICB9KS5qb2luKCcsICcpICsgXCI7IGJ1dCBcXFwiXCIgKyBrZXkgKyBcIlxcXCIgd2FzIHByb3ZpZGVkLlwiKTtcbiAgICAgIH1cblxuICAgICAgbW9kaWZpZXIucmVxdWlyZXMgJiYgbW9kaWZpZXIucmVxdWlyZXMuZm9yRWFjaChmdW5jdGlvbiAocmVxdWlyZW1lbnQpIHtcbiAgICAgICAgaWYgKG1vZGlmaWVycy5maW5kKGZ1bmN0aW9uIChtb2QpIHtcbiAgICAgICAgICByZXR1cm4gbW9kLm5hbWUgPT09IHJlcXVpcmVtZW50O1xuICAgICAgICB9KSA9PSBudWxsKSB7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihmb3JtYXQoTUlTU0lOR19ERVBFTkRFTkNZX0VSUk9SLCBTdHJpbmcobW9kaWZpZXIubmFtZSksIHJlcXVpcmVtZW50LCByZXF1aXJlbWVudCkpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG59IiwiaW1wb3J0IHsgbWF4IGFzIG1hdGhNYXgsIG1pbiBhcyBtYXRoTWluIH0gZnJvbSBcIi4vbWF0aC5qc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHdpdGhpbihtaW4sIHZhbHVlLCBtYXgpIHtcbiAgcmV0dXJuIG1hdGhNYXgobWluLCBtYXRoTWluKHZhbHVlLCBtYXgpKTtcbn1cbmV4cG9ydCBmdW5jdGlvbiB3aXRoaW5NYXhDbGFtcChtaW4sIHZhbHVlLCBtYXgpIHtcbiAgdmFyIHYgPSB3aXRoaW4obWluLCB2YWx1ZSwgbWF4KTtcbiAgcmV0dXJuIHYgPiBtYXggPyBtYXggOiB2O1xufSIsIiFmdW5jdGlvbih0KXt2YXIgZT17fTtmdW5jdGlvbiBzKGkpe2lmKGVbaV0pcmV0dXJuIGVbaV0uZXhwb3J0czt2YXIgbz1lW2ldPXtpOmksbDohMSxleHBvcnRzOnt9fTtyZXR1cm4gdFtpXS5jYWxsKG8uZXhwb3J0cyxvLG8uZXhwb3J0cyxzKSxvLmw9ITAsby5leHBvcnRzfXMubT10LHMuYz1lLHMuZD1mdW5jdGlvbih0LGUsaSl7cy5vKHQsZSl8fE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LGUse2VudW1lcmFibGU6ITAsZ2V0Oml9KX0scy5yPWZ1bmN0aW9uKHQpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBTeW1ib2wmJlN5bWJvbC50b1N0cmluZ1RhZyYmT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsU3ltYm9sLnRvU3RyaW5nVGFnLHt2YWx1ZTpcIk1vZHVsZVwifSksT2JqZWN0LmRlZmluZVByb3BlcnR5KHQsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9LHMudD1mdW5jdGlvbih0LGUpe2lmKDEmZSYmKHQ9cyh0KSksOCZlKXJldHVybiB0O2lmKDQmZSYmXCJvYmplY3RcIj09dHlwZW9mIHQmJnQmJnQuX19lc01vZHVsZSlyZXR1cm4gdDt2YXIgaT1PYmplY3QuY3JlYXRlKG51bGwpO2lmKHMucihpKSxPYmplY3QuZGVmaW5lUHJvcGVydHkoaSxcImRlZmF1bHRcIix7ZW51bWVyYWJsZTohMCx2YWx1ZTp0fSksMiZlJiZcInN0cmluZ1wiIT10eXBlb2YgdClmb3IodmFyIG8gaW4gdClzLmQoaSxvLGZ1bmN0aW9uKGUpe3JldHVybiB0W2VdfS5iaW5kKG51bGwsbykpO3JldHVybiBpfSxzLm49ZnVuY3Rpb24odCl7dmFyIGU9dCYmdC5fX2VzTW9kdWxlP2Z1bmN0aW9uKCl7cmV0dXJuIHQuZGVmYXVsdH06ZnVuY3Rpb24oKXtyZXR1cm4gdH07cmV0dXJuIHMuZChlLFwiYVwiLGUpLGV9LHMubz1mdW5jdGlvbih0LGUpe3JldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwodCxlKX0scy5wPVwiXCIscyhzLnM9MCl9KFtmdW5jdGlvbih0LGUscyl7XCJ1c2Ugc3RyaWN0XCI7cy5yKGUpLHMuZChlLFwiQXV0b0NvbXBsZXRlXCIsKGZ1bmN0aW9uKCl7cmV0dXJuIGF9KSk7dmFyIGksbz0oaT1mdW5jdGlvbih0LGUpe3JldHVybihpPU9iamVjdC5zZXRQcm90b3R5cGVPZnx8e19fcHJvdG9fXzpbXX1pbnN0YW5jZW9mIEFycmF5JiZmdW5jdGlvbih0LGUpe3QuX19wcm90b19fPWV9fHxmdW5jdGlvbih0LGUpe2Zvcih2YXIgcyBpbiBlKWUuaGFzT3duUHJvcGVydHkocykmJih0W3NdPWVbc10pfSkodCxlKX0sZnVuY3Rpb24odCxlKXtmdW5jdGlvbiBzKCl7dGhpcy5jb25zdHJ1Y3Rvcj10fWkodCxlKSx0LnByb3RvdHlwZT1udWxsPT09ZT9PYmplY3QuY3JlYXRlKGUpOihzLnByb3RvdHlwZT1lLnByb3RvdHlwZSxuZXcgcyl9KSxuPWZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGUoZSl7cmV0dXJuIHQuY2FsbCh0aGlzLGUpfHx0aGlzfXJldHVybiBvKGUsdCksZS5wcm90b3R5cGUuZ2V0RGVmYXVsdHM9ZnVuY3Rpb24oKXtyZXR1cm57dXJsOlwiXCIsbWV0aG9kOlwiZ2V0XCIscXVlcnlLZXk6XCJxXCIsZXh0cmFEYXRhOnt9LHRpbWVvdXQ6dm9pZCAwLHJlcXVlc3RUaHJvdHRsaW5nOjUwMH19LGUucHJvdG90eXBlLnNlYXJjaD1mdW5jdGlvbih0LGUpe3ZhciBzPXRoaXM7bnVsbCE9dGhpcy5qcVhIUiYmdGhpcy5qcVhIUi5hYm9ydCgpO3ZhciBpPXt9O2lbdGhpcy5fc2V0dGluZ3MucXVlcnlLZXldPXQsJC5leHRlbmQoaSx0aGlzLl9zZXR0aW5ncy5leHRyYURhdGEpLHRoaXMucmVxdWVzdFRJRCYmd2luZG93LmNsZWFyVGltZW91dCh0aGlzLnJlcXVlc3RUSUQpLHRoaXMucmVxdWVzdFRJRD13aW5kb3cuc2V0VGltZW91dCgoZnVuY3Rpb24oKXtzLmpxWEhSPSQuYWpheChzLl9zZXR0aW5ncy51cmwse21ldGhvZDpzLl9zZXR0aW5ncy5tZXRob2QsZGF0YTppLHRpbWVvdXQ6cy5fc2V0dGluZ3MudGltZW91dH0pLHMuanFYSFIuZG9uZSgoZnVuY3Rpb24odCl7ZSh0KX0pKSxzLmpxWEhSLmZhaWwoKGZ1bmN0aW9uKHQpe3ZhciBlO251bGw9PT0oZT1zLl9zZXR0aW5ncyl8fHZvaWQgMD09PWV8fGUuZmFpbCh0KX0pKSxzLmpxWEhSLmFsd2F5cygoZnVuY3Rpb24oKXtzLmpxWEhSPW51bGx9KSl9KSx0aGlzLl9zZXR0aW5ncy5yZXF1ZXN0VGhyb3R0bGluZyl9LGV9KGZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0KXt0aGlzLl9zZXR0aW5ncz0kLmV4dGVuZCghMCx7fSx0aGlzLmdldERlZmF1bHRzKCksdCl9cmV0dXJuIHQucHJvdG90eXBlLmdldERlZmF1bHRzPWZ1bmN0aW9uKCl7cmV0dXJue319LHQucHJvdG90eXBlLmdldFJlc3VsdHM9ZnVuY3Rpb24odCxlLHMpe3JldHVybiB0aGlzLnJlc3VsdHN9LHQucHJvdG90eXBlLnNlYXJjaD1mdW5jdGlvbih0LGUpe2UodGhpcy5nZXRSZXN1bHRzKCkpfSx0fSgpKSxyPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gdCh0LGUscyxpKXt0aGlzLmluaXRpYWxpemVkPSExLHRoaXMuc2hvd249ITEsdGhpcy5pdGVtcz1bXSx0aGlzLmRkTW91c2VvdmVyPSExLHRoaXMuXyRlbD10LHRoaXMuZm9ybWF0SXRlbT1lLHRoaXMuYXV0b1NlbGVjdD1zLHRoaXMubm9SZXN1bHRzVGV4dD1pfXJldHVybiB0LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcyxlPSQuZXh0ZW5kKHt9LHRoaXMuXyRlbC5wb3NpdGlvbigpLHtoZWlnaHQ6dGhpcy5fJGVsWzBdLm9mZnNldEhlaWdodH0pO3RoaXMuX2RkPSQoXCI8dWwgLz5cIiksdGhpcy5fZGQuYWRkQ2xhc3MoXCJib290c3RyYXAtYXV0b2NvbXBsZXRlIGRyb3Bkb3duLW1lbnVcIiksdGhpcy5fZGQuaW5zZXJ0QWZ0ZXIodGhpcy5fJGVsKSx0aGlzLl9kZC5jc3Moe3RvcDplLnRvcCt0aGlzLl8kZWwub3V0ZXJIZWlnaHQoKSxsZWZ0OmUubGVmdCx3aWR0aDp0aGlzLl8kZWwub3V0ZXJXaWR0aCgpfSksdGhpcy5fZGQub24oXCJjbGlja1wiLFwibGlcIiwoZnVuY3Rpb24oZSl7dmFyIHM9JChlLmN1cnJlbnRUYXJnZXQpLmRhdGEoXCJpdGVtXCIpO3QuaXRlbVNlbGVjdGVkTGF1bmNoRXZlbnQocyl9KSksdGhpcy5fZGQub24oXCJrZXl1cFwiLChmdW5jdGlvbihlKXtpZih0LnNob3duKXtzd2l0Y2goZS53aGljaCl7Y2FzZSAyNzp0LmhpZGUoKSx0Ll8kZWwuZm9jdXMoKX1yZXR1cm4hMX19KSksdGhpcy5fZGQub24oXCJtb3VzZWVudGVyXCIsKGZ1bmN0aW9uKGUpe3QuZGRNb3VzZW92ZXI9ITB9KSksdGhpcy5fZGQub24oXCJtb3VzZWxlYXZlXCIsKGZ1bmN0aW9uKGUpe3QuZGRNb3VzZW92ZXI9ITF9KSksdGhpcy5fZGQub24oXCJtb3VzZWVudGVyXCIsXCJsaVwiLChmdW5jdGlvbihlKXt0LmhhdmVSZXN1bHRzJiYoJChlLmN1cnJlbnRUYXJnZXQpLmNsb3Nlc3QoXCJ1bFwiKS5maW5kKFwibGkuYWN0aXZlXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLCQoZS5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcyhcImFjdGl2ZVwiKSx0Lm1vdXNlb3Zlcj0hMCl9KSksdGhpcy5fZGQub24oXCJtb3VzZWxlYXZlXCIsXCJsaVwiLChmdW5jdGlvbihlKXt0Lm1vdXNlb3Zlcj0hMX0pKSx0aGlzLmluaXRpYWxpemVkPSEwfSx0LnByb3RvdHlwZS5jaGVja0luaXRpYWxpemVkPWZ1bmN0aW9uKCl7dGhpcy5pbml0aWFsaXplZHx8dGhpcy5pbml0KCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlzTW91c2VPdmVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlb3Zlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJpc0RkTW91c2VPdmVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRkTW91c2VvdmVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImhhdmVSZXN1bHRzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zLmxlbmd0aD4wfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZvY3VzTmV4dEl0ZW09ZnVuY3Rpb24odCl7aWYodGhpcy5oYXZlUmVzdWx0cyl7dmFyIGU9dGhpcy5fZGQuZmluZChcImxpLmFjdGl2ZVwiKSxzPXQ/ZS5wcmV2KCk6ZS5uZXh0KCk7MD09PXMubGVuZ3RoJiYocz10P3RoaXMuX2RkLmZpbmQoXCJsaVwiKS5sYXN0KCk6dGhpcy5fZGQuZmluZChcImxpXCIpLmZpcnN0KCkpLGUucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIikscy5hZGRDbGFzcyhcImFjdGl2ZVwiKX19LHQucHJvdG90eXBlLmZvY3VzUHJldmlvdXNJdGVtPWZ1bmN0aW9uKCl7dGhpcy5mb2N1c05leHRJdGVtKCEwKX0sdC5wcm90b3R5cGUuc2VsZWN0Rm9jdXNJdGVtPWZ1bmN0aW9uKCl7dGhpcy5fZGQuZmluZChcImxpLmFjdGl2ZVwiKS50cmlnZ2VyKFwiY2xpY2tcIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlzSXRlbUZvY3VzZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5pc1Nob3duKCkmJnRoaXMuX2RkLmZpbmQoXCJsaS5hY3RpdmVcIikubGVuZ3RoPjApfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLnNob3c9ZnVuY3Rpb24oKXt0aGlzLnNob3dufHwodGhpcy5fZGQuZHJvcGRvd24oKS5zaG93KCksdGhpcy5zaG93bj0hMCl9LHQucHJvdG90eXBlLmlzU2hvd249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93bn0sdC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe3RoaXMuc2hvd24mJih0aGlzLl9kZC5kcm9wZG93bigpLmhpZGUoKSx0aGlzLnNob3duPSExKX0sdC5wcm90b3R5cGUudXBkYXRlSXRlbXM9ZnVuY3Rpb24odCxlKXt0aGlzLml0ZW1zPXQsdGhpcy5zZWFyY2hUZXh0PWUsdGhpcy5yZWZyZXNoSXRlbUxpc3QoKX0sdC5wcm90b3R5cGUuc2hvd01hdGNoZWRUZXh0PWZ1bmN0aW9uKHQsZSl7dmFyIHM9dC50b0xvd2VyQ2FzZSgpLmluZGV4T2YoZS50b0xvd2VyQ2FzZSgpKTtpZihzPi0xKXt2YXIgaT1zK2UubGVuZ3RoO3JldHVybiB0LnNsaWNlKDAscykrXCI8Yj5cIit0LnNsaWNlKHMsaSkrXCI8L2I+XCIrdC5zbGljZShpKX1yZXR1cm4gdH0sdC5wcm90b3R5cGUucmVmcmVzaEl0ZW1MaXN0PWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmNoZWNrSW5pdGlhbGl6ZWQoKSx0aGlzLl9kZC5lbXB0eSgpO3ZhciBlPVtdO2lmKHRoaXMuaXRlbXMubGVuZ3RoPjApdGhpcy5pdGVtcy5mb3JFYWNoKChmdW5jdGlvbihzKXt2YXIgaSxvLG49dC5mb3JtYXRJdGVtKHMpO1wic3RyaW5nXCI9PXR5cGVvZiBuJiYobj17dGV4dDpufSksaT10LnNob3dNYXRjaGVkVGV4dChuLnRleHQsdC5zZWFyY2hUZXh0KSxvPXZvaWQgMCE9PW4uaHRtbD9uLmh0bWw6aTt2YXIgcj1uLmRpc2FibGVkLGw9JChcIjxsaSA+XCIpO2wuYXBwZW5kKCQoXCI8YT5cIikuYXR0cihcImhyZWZcIixcIiMhXCIpLmh0bWwobykpLmRhdGEoXCJpdGVtXCIscyksciYmbC5hZGRDbGFzcyhcImRpc2FibGVkXCIpLGUucHVzaChsKX0pKTtlbHNle3ZhciBzPSQoXCI8bGkgPlwiKTtzLmFwcGVuZCgkKFwiPGE+XCIpLmF0dHIoXCJocmVmXCIsXCIjIVwiKS5odG1sKHRoaXMubm9SZXN1bHRzVGV4dCkpLmFkZENsYXNzKFwiZGlzYWJsZWRcIiksZS5wdXNoKHMpfXRoaXMuX2RkLmFwcGVuZChlKX0sdC5wcm90b3R5cGUuaXRlbVNlbGVjdGVkTGF1bmNoRXZlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fJGVsLnRyaWdnZXIoXCJhdXRvY29tcGxldGUuc2VsZWN0XCIsdCl9LHR9KCksbD1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlLHMsaSl7dGhpcy5pbml0aWFsaXplZD0hMSx0aGlzLnNob3duPSExLHRoaXMuaXRlbXM9W10sdGhpcy5kZE1vdXNlb3Zlcj0hMSx0aGlzLl8kZWw9dCx0aGlzLmZvcm1hdEl0ZW09ZSx0aGlzLmF1dG9TZWxlY3Q9cyx0aGlzLm5vUmVzdWx0c1RleHQ9aX1yZXR1cm4gdC5wcm90b3R5cGUuZ2V0RWxQb3M9ZnVuY3Rpb24oKXtyZXR1cm4gJC5leHRlbmQoe30sdGhpcy5fJGVsLnBvc2l0aW9uKCkse2hlaWdodDp0aGlzLl8kZWxbMF0ub2Zmc2V0SGVpZ2h0fSl9LHQucHJvdG90eXBlLmluaXQ9ZnVuY3Rpb24oKXt2YXIgdD10aGlzLGU9dGhpcy5nZXRFbFBvcygpO3RoaXMuX2RkPSQoXCI8ZGl2IC8+XCIpLHRoaXMuX2RkLmFkZENsYXNzKFwiYm9vdHN0cmFwLWF1dG9jb21wbGV0ZSBkcm9wZG93bi1tZW51XCIpLHRoaXMuX2RkLmluc2VydEFmdGVyKHRoaXMuXyRlbCksdGhpcy5fZGQuY3NzKHt0b3A6ZS50b3ArdGhpcy5fJGVsLm91dGVySGVpZ2h0KCksbGVmdDplLmxlZnQsd2lkdGg6dGhpcy5fJGVsLm91dGVyV2lkdGgoKX0pLHRoaXMuX2RkLm9uKFwiY2xpY2tcIixcIi5kcm9wZG93bi1pdGVtXCIsKGZ1bmN0aW9uKGUpe3ZhciBzPSQoZS5jdXJyZW50VGFyZ2V0KS5kYXRhKFwiaXRlbVwiKTt0Lml0ZW1TZWxlY3RlZExhdW5jaEV2ZW50KHMpLGUucHJldmVudERlZmF1bHQoKX0pKSx0aGlzLl9kZC5vbihcImtleXVwXCIsKGZ1bmN0aW9uKGUpe2lmKHQuc2hvd24pe3N3aXRjaChlLndoaWNoKXtjYXNlIDI3OnQuaGlkZSgpLHQuXyRlbC5mb2N1cygpfXJldHVybiExfX0pKSx0aGlzLl9kZC5vbihcIm1vdXNlZW50ZXJcIiwoZnVuY3Rpb24oZSl7dC5kZE1vdXNlb3Zlcj0hMH0pKSx0aGlzLl9kZC5vbihcIm1vdXNlbGVhdmVcIiwoZnVuY3Rpb24oZSl7dC5kZE1vdXNlb3Zlcj0hMX0pKSx0aGlzLl9kZC5vbihcIm1vdXNlZW50ZXJcIixcIi5kcm9wZG93bi1pdGVtXCIsKGZ1bmN0aW9uKGUpe3QuaGF2ZVJlc3VsdHMmJigkKGUuY3VycmVudFRhcmdldCkuY2xvc2VzdChcImRpdlwiKS5maW5kKFwiLmRyb3Bkb3duLWl0ZW0uYWN0aXZlXCIpLnJlbW92ZUNsYXNzKFwiYWN0aXZlXCIpLCQoZS5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcyhcImFjdGl2ZVwiKSx0Lm1vdXNlb3Zlcj0hMCl9KSksdGhpcy5fZGQub24oXCJtb3VzZWxlYXZlXCIsXCIuZHJvcGRvd24taXRlbVwiLChmdW5jdGlvbihlKXt0Lm1vdXNlb3Zlcj0hMX0pKSx0aGlzLmluaXRpYWxpemVkPSEwfSx0LnByb3RvdHlwZS5jaGVja0luaXRpYWxpemVkPWZ1bmN0aW9uKCl7dGhpcy5pbml0aWFsaXplZHx8dGhpcy5pbml0KCl9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlzTW91c2VPdmVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1vdXNlb3Zlcn0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSxPYmplY3QuZGVmaW5lUHJvcGVydHkodC5wcm90b3R5cGUsXCJpc0RkTW91c2VPdmVyXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRkTW91c2VvdmVyfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImhhdmVSZXN1bHRzXCIse2dldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLml0ZW1zLmxlbmd0aD4wfSxlbnVtZXJhYmxlOiExLGNvbmZpZ3VyYWJsZTohMH0pLHQucHJvdG90eXBlLmZvY3VzTmV4dEl0ZW09ZnVuY3Rpb24odCl7aWYodGhpcy5oYXZlUmVzdWx0cyl7dmFyIGU9dGhpcy5fZGQuZmluZChcIi5kcm9wZG93bi1pdGVtLmFjdGl2ZVwiKSxzPXQ/ZS5wcmV2KCk6ZS5uZXh0KCk7MD09PXMubGVuZ3RoJiYocz10P3RoaXMuX2RkLmZpbmQoXCIuZHJvcGRvd24taXRlbVwiKS5sYXN0KCk6dGhpcy5fZGQuZmluZChcIi5kcm9wZG93bi1pdGVtXCIpLmZpcnN0KCkpLGUucmVtb3ZlQ2xhc3MoXCJhY3RpdmVcIikscy5hZGRDbGFzcyhcImFjdGl2ZVwiKX19LHQucHJvdG90eXBlLmZvY3VzUHJldmlvdXNJdGVtPWZ1bmN0aW9uKCl7dGhpcy5mb2N1c05leHRJdGVtKCEwKX0sdC5wcm90b3R5cGUuc2VsZWN0Rm9jdXNJdGVtPWZ1bmN0aW9uKCl7dGhpcy5fZGQuZmluZChcIi5kcm9wZG93bi1pdGVtLmFjdGl2ZVwiKS50cmlnZ2VyKFwiY2xpY2tcIil9LE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0LnByb3RvdHlwZSxcImlzSXRlbUZvY3VzZWRcIix7Z2V0OmZ1bmN0aW9uKCl7cmV0dXJuISEodGhpcy5fZGQmJnRoaXMuaXNTaG93bigpJiZ0aGlzLl9kZC5maW5kKFwiLmRyb3Bkb3duLWl0ZW0uYWN0aXZlXCIpLmxlbmd0aD4wKX0sZW51bWVyYWJsZTohMSxjb25maWd1cmFibGU6ITB9KSx0LnByb3RvdHlwZS5zaG93PWZ1bmN0aW9uKCl7aWYoIXRoaXMuc2hvd24pe3RoaXMuZ2V0RWxQb3MoKTt0aGlzLl9kZC5hZGRDbGFzcyhcInNob3dcIiksdGhpcy5zaG93bj0hMCx0aGlzLl8kZWwudHJpZ2dlcihcImF1dG9jb21wbGV0ZS5kZC5zaG93blwiKX19LHQucHJvdG90eXBlLmlzU2hvd249ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5zaG93bn0sdC5wcm90b3R5cGUuaGlkZT1mdW5jdGlvbigpe3RoaXMuc2hvd24mJih0aGlzLl9kZC5yZW1vdmVDbGFzcyhcInNob3dcIiksdGhpcy5zaG93bj0hMSx0aGlzLl8kZWwudHJpZ2dlcihcImF1dG9jb21wbGV0ZS5kZC5oaWRkZW5cIikpfSx0LnByb3RvdHlwZS51cGRhdGVJdGVtcz1mdW5jdGlvbih0LGUpe3RoaXMuaXRlbXM9dCx0aGlzLnNlYXJjaFRleHQ9ZSx0aGlzLnJlZnJlc2hJdGVtTGlzdCgpfSx0LnByb3RvdHlwZS5zaG93TWF0Y2hlZFRleHQ9ZnVuY3Rpb24odCxlKXt2YXIgcz10LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihlLnRvTG93ZXJDYXNlKCkpO2lmKHM+LTEpe3ZhciBpPXMrZS5sZW5ndGg7cmV0dXJuIHQuc2xpY2UoMCxzKStcIjxiPlwiK3Quc2xpY2UocyxpKStcIjwvYj5cIit0LnNsaWNlKGkpfXJldHVybiB0fSx0LnByb3RvdHlwZS5yZWZyZXNoSXRlbUxpc3Q9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuY2hlY2tJbml0aWFsaXplZCgpLHRoaXMuX2RkLmVtcHR5KCk7dmFyIGU9W107aWYodGhpcy5pdGVtcy5sZW5ndGg+MCl0aGlzLml0ZW1zLmZvckVhY2goKGZ1bmN0aW9uKHMpe3ZhciBpLG8sbj10LmZvcm1hdEl0ZW0ocyk7XCJzdHJpbmdcIj09dHlwZW9mIG4mJihuPXt0ZXh0Om59KSxpPXQuc2hvd01hdGNoZWRUZXh0KG4udGV4dCx0LnNlYXJjaFRleHQpLG89dm9pZCAwIT09bi5odG1sP24uaHRtbDppO3ZhciByPW4uZGlzYWJsZWQsbD0kKFwiPGEgPlwiKTtsLmFkZENsYXNzKFwiZHJvcGRvd24taXRlbVwiKS5jc3Moe292ZXJmbG93OlwiaGlkZGVuXCIsXCJ0ZXh0LW92ZXJmbG93XCI6XCJlbGxpcHNpc1wifSkuaHRtbChvKS5kYXRhKFwiaXRlbVwiLHMpLHImJmwuYWRkQ2xhc3MoXCJkaXNhYmxlZFwiKSxlLnB1c2gobCl9KSksdGhpcy5fZGQuYXBwZW5kKGUpLHRoaXMuc2hvdygpO2Vsc2UgaWYoXCJcIj09PXRoaXMubm9SZXN1bHRzVGV4dCl0aGlzLmhpZGUoKTtlbHNle3ZhciBzPSQoXCI8YSA+XCIpO3MuYWRkQ2xhc3MoXCJkcm9wZG93bi1pdGVtIGRpc2FibGVkXCIpLmh0bWwodGhpcy5ub1Jlc3VsdHNUZXh0KSxlLnB1c2gocyksdGhpcy5fZGQuYXBwZW5kKGUpLHRoaXMuc2hvdygpfX0sdC5wcm90b3R5cGUuaXRlbVNlbGVjdGVkTGF1bmNoRXZlbnQ9ZnVuY3Rpb24odCl7dGhpcy5fJGVsLnRyaWdnZXIoXCJhdXRvY29tcGxldGUuc2VsZWN0XCIsdCl9LHR9KCksYT1mdW5jdGlvbigpe2Z1bmN0aW9uIHQodCxlKXt0aGlzLl9zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLl9kZWZhdWx0VmFsdWU9bnVsbCx0aGlzLl9kZWZhdWx0VGV4dD1udWxsLHRoaXMuX2lzU2VsZWN0RWxlbWVudD0hMSx0aGlzLl9zZXR0aW5ncz17cmVzb2x2ZXI6XCJhamF4XCIscmVzb2x2ZXJTZXR0aW5nczp7fSxtaW5MZW5ndGg6Myx2YWx1ZUtleTpcInZhbHVlXCIsZm9ybWF0UmVzdWx0OnRoaXMuZGVmYXVsdEZvcm1hdFJlc3VsdCxhdXRvU2VsZWN0OiEwLG5vUmVzdWx0c1RleHQ6XCJObyByZXN1bHRzXCIsYm9vdHN0cmFwVmVyc2lvbjpcImF1dG9cIixwcmV2ZW50RW50ZXI6ITEsZXZlbnRzOnt0eXBlZDpudWxsLHNlYXJjaFByZTpudWxsLHNlYXJjaDpudWxsLHNlYXJjaFBvc3Q6bnVsbCxzZWxlY3Q6bnVsbCxmb2N1czpudWxsfX0sdGhpcy5fZWw9dCx0aGlzLl8kZWw9JCh0aGlzLl9lbCksdGhpcy5fJGVsLmlzKFwic2VsZWN0XCIpJiYodGhpcy5faXNTZWxlY3RFbGVtZW50PSEwKSx0aGlzLm1hbmFnZUlubGluZURhdGFBdHRyaWJ1dGVzKCksXCJvYmplY3RcIj09dHlwZW9mIGUmJih0aGlzLl9zZXR0aW5ncz0kLmV4dGVuZCghMCx7fSx0aGlzLmdldFNldHRpbmdzKCksZSkpLHRoaXMuX2lzU2VsZWN0RWxlbWVudCYmdGhpcy5jb252ZXJ0U2VsZWN0VG9UZXh0KCksdGhpcy5pbml0KCl9cmV0dXJuIHQucHJvdG90eXBlLm1hbmFnZUlubGluZURhdGFBdHRyaWJ1dGVzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5nZXRTZXR0aW5ncygpO3RoaXMuXyRlbC5kYXRhKFwidXJsXCIpJiYodC5yZXNvbHZlclNldHRpbmdzLnVybD10aGlzLl8kZWwuZGF0YShcInVybFwiKSksdGhpcy5fJGVsLmRhdGEoXCJkZWZhdWx0LXZhbHVlXCIpJiYodGhpcy5fZGVmYXVsdFZhbHVlPXRoaXMuXyRlbC5kYXRhKFwiZGVmYXVsdC12YWx1ZVwiKSksdGhpcy5fJGVsLmRhdGEoXCJkZWZhdWx0LXRleHRcIikmJih0aGlzLl9kZWZhdWx0VGV4dD10aGlzLl8kZWwuZGF0YShcImRlZmF1bHQtdGV4dFwiKSksdm9pZCAwIT09dGhpcy5fJGVsLmRhdGEoXCJub3Jlc3VsdHMtdGV4dFwiKSYmKHQubm9SZXN1bHRzVGV4dD10aGlzLl8kZWwuZGF0YShcIm5vcmVzdWx0cy10ZXh0XCIpKX0sdC5wcm90b3R5cGUuZ2V0U2V0dGluZ3M9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0dGluZ3N9LHQucHJvdG90eXBlLmdldEJvb3RzdHJhcFZlcnNpb249ZnVuY3Rpb24oKXt2YXIgdDtcImF1dG9cIj09PXRoaXMuX3NldHRpbmdzLmJvb3RzdHJhcFZlcnNpb24/dD0kLmZuLmJ1dHRvbi5Db25zdHJ1Y3Rvci5WRVJTSU9OLnNwbGl0KFwiLlwiKS5tYXAocGFyc2VJbnQpOlwiNFwiPT09dGhpcy5fc2V0dGluZ3MuYm9vdHN0cmFwVmVyc2lvbj90PVs0XTpcIjNcIj09PXRoaXMuX3NldHRpbmdzLmJvb3RzdHJhcFZlcnNpb24/dD1bM106KGNvbnNvbGUuZXJyb3IoXCJJTlZBTElEIHZhbHVlIGZvciAnYm9vdHN0cmFwVmVyc2lvbicgc2V0dGluZ3MgcHJvcGVydHk6IFwiK3RoaXMuX3NldHRpbmdzLmJvb3RzdHJhcFZlcnNpb24rXCIgZGVmYXVsdGluZyB0byA0XCIpLHQ9WzRdKTtyZXR1cm4gdH0sdC5wcm90b3R5cGUuY29udmVydFNlbGVjdFRvVGV4dD1mdW5jdGlvbigpe3ZhciBlPSQoXCI8aW5wdXQ+XCIpO2UuYXR0cihcInR5cGVcIixcImhpZGRlblwiKSxlLmF0dHIoXCJuYW1lXCIsdGhpcy5fJGVsLmF0dHIoXCJuYW1lXCIpKSx0aGlzLl9kZWZhdWx0VmFsdWUmJmUudmFsKHRoaXMuX2RlZmF1bHRWYWx1ZSksdGhpcy5fc2VsZWN0SGlkZGVuRmllbGQ9ZSxlLmluc2VydEFmdGVyKHRoaXMuXyRlbCk7dmFyIHM9JChcIjxpbnB1dD5cIik7cy5hdHRyKFwidHlwZVwiLFwic2VhcmNoXCIpLHMuYXR0cihcIm5hbWVcIix0aGlzLl8kZWwuYXR0cihcIm5hbWVcIikrXCJfdGV4dFwiKSxzLmF0dHIoXCJpZFwiLHRoaXMuXyRlbC5hdHRyKFwiaWRcIikpLHMuYXR0cihcImRpc2FibGVkXCIsdGhpcy5fJGVsLmF0dHIoXCJkaXNhYmxlZFwiKSkscy5hdHRyKFwicGxhY2Vob2xkZXJcIix0aGlzLl8kZWwuYXR0cihcInBsYWNlaG9sZGVyXCIpKSxzLmF0dHIoXCJhdXRvY29tcGxldGVcIixcIm9mZlwiKSxzLmFkZENsYXNzKHRoaXMuXyRlbC5hdHRyKFwiY2xhc3NcIikpLHRoaXMuX2RlZmF1bHRUZXh0JiZzLnZhbCh0aGlzLl9kZWZhdWx0VGV4dCk7dmFyIGk9dGhpcy5fJGVsLmF0dHIoXCJyZXF1aXJlZFwiKTtpJiZzLmF0dHIoXCJyZXF1aXJlZFwiLGkpLHMuZGF0YSh0Lk5BTUUsdGhpcyksdGhpcy5fJGVsLnJlcGxhY2VXaXRoKHMpLHRoaXMuXyRlbD1zLHRoaXMuX2VsPXMuZ2V0KDApfSx0LnByb3RvdHlwZS5pbml0PWZ1bmN0aW9uKCl7dGhpcy5iaW5kRGVmYXVsdEV2ZW50TGlzdGVuZXJzKCksXCJhamF4XCI9PT10aGlzLl9zZXR0aW5ncy5yZXNvbHZlciYmKHRoaXMucmVzb2x2ZXI9bmV3IG4odGhpcy5fc2V0dGluZ3MucmVzb2x2ZXJTZXR0aW5ncykpLDQ9PT10aGlzLmdldEJvb3RzdHJhcFZlcnNpb24oKVswXT90aGlzLl9kZD1uZXcgbCh0aGlzLl8kZWwsdGhpcy5fc2V0dGluZ3MuZm9ybWF0UmVzdWx0LHRoaXMuX3NldHRpbmdzLmF1dG9TZWxlY3QsdGhpcy5fc2V0dGluZ3Mubm9SZXN1bHRzVGV4dCk6dGhpcy5fZGQ9bmV3IHIodGhpcy5fJGVsLHRoaXMuX3NldHRpbmdzLmZvcm1hdFJlc3VsdCx0aGlzLl9zZXR0aW5ncy5hdXRvU2VsZWN0LHRoaXMuX3NldHRpbmdzLm5vUmVzdWx0c1RleHQpfSx0LnByb3RvdHlwZS5iaW5kRGVmYXVsdEV2ZW50TGlzdGVuZXJzPWZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLl8kZWwub24oXCJrZXlkb3duXCIsKGZ1bmN0aW9uKGUpe3N3aXRjaChlLndoaWNoKXtjYXNlIDk6dC5fZGQuaXNJdGVtRm9jdXNlZD90Ll9kZC5zZWxlY3RGb2N1c0l0ZW0oKTp0Ll9zZWxlY3RlZEl0ZW18fFwiXCIhPT10Ll8kZWwudmFsKCkmJnQuXyRlbC50cmlnZ2VyKFwiYXV0b2NvbXBsZXRlLmZyZWV2YWx1ZVwiLHQuXyRlbC52YWwoKSksdC5fZGQuaGlkZSgpO2JyZWFrO2Nhc2UgMTM6dC5fZGQuaXNJdGVtRm9jdXNlZD90Ll9kZC5zZWxlY3RGb2N1c0l0ZW0oKTp0Ll9zZWxlY3RlZEl0ZW18fFwiXCIhPT10Ll8kZWwudmFsKCkmJnQuXyRlbC50cmlnZ2VyKFwiYXV0b2NvbXBsZXRlLmZyZWV2YWx1ZVwiLHQuXyRlbC52YWwoKSksdC5fZGQuaGlkZSgpLHQuX3NldHRpbmdzLnByZXZlbnRFbnRlciYmZS5wcmV2ZW50RGVmYXVsdCgpO2JyZWFrO2Nhc2UgNDA6dC5fZGQuZm9jdXNOZXh0SXRlbSgpO2JyZWFrO2Nhc2UgMzg6dC5fZGQuZm9jdXNQcmV2aW91c0l0ZW0oKX19KSksdGhpcy5fJGVsLm9uKFwia2V5dXBcIiwoZnVuY3Rpb24oZSl7c3dpdGNoKGUud2hpY2gpe2Nhc2UgMTY6Y2FzZSAxNzpjYXNlIDE4OmNhc2UgMzk6Y2FzZSAzNzpjYXNlIDM2OmNhc2UgMzU6YnJlYWs7Y2FzZSAxMzpjYXNlIDI3OnQuX2RkLmhpZGUoKTticmVhaztjYXNlIDQwOmNhc2UgMzg6YnJlYWs7ZGVmYXVsdDp0Ll9zZWxlY3RlZEl0ZW09bnVsbDt2YXIgcz10Ll8kZWwudmFsKCk7dC5oYW5kbGVyVHlwZWQocyl9fSkpLHRoaXMuXyRlbC5vbihcImJsdXJcIiwoZnVuY3Rpb24oZSl7IXQuX2RkLmlzTW91c2VPdmVyJiZ0Ll9kZC5pc0RkTW91c2VPdmVyJiZ0Ll9kZC5pc1Nob3duKCk/KHNldFRpbWVvdXQoKGZ1bmN0aW9uKCl7dC5fJGVsLmZvY3VzKCl9KSksdC5fJGVsLmZvY3VzKCkpOnQuX2RkLmlzTW91c2VPdmVyfHwodC5faXNTZWxlY3RFbGVtZW50P3QuX2RkLmlzSXRlbUZvY3VzZWQ/dC5fZGQuc2VsZWN0Rm9jdXNJdGVtKCk6bnVsbCE9PXQuX3NlbGVjdGVkSXRlbSYmXCJcIiE9PXQuXyRlbC52YWwoKT90Ll8kZWwudHJpZ2dlcihcImF1dG9jb21wbGV0ZS5zZWxlY3RcIix0Ll9zZWxlY3RlZEl0ZW0pOlwiXCIhPT10Ll8kZWwudmFsKCkmJm51bGwhPT10Ll9kZWZhdWx0VmFsdWU/KHQuXyRlbC52YWwodC5fZGVmYXVsdFRleHQpLHQuX3NlbGVjdEhpZGRlbkZpZWxkLnZhbCh0Ll9kZWZhdWx0VmFsdWUpLHQuX3NlbGVjdGVkSXRlbT1udWxsLHQuXyRlbC50cmlnZ2VyKFwiYXV0b2NvbXBsZXRlLnNlbGVjdFwiLHQuX3NlbGVjdGVkSXRlbSkpOih0Ll8kZWwudmFsKFwiXCIpLHQuX3NlbGVjdEhpZGRlbkZpZWxkLnZhbChcIlwiKSx0Ll9zZWxlY3RlZEl0ZW09bnVsbCx0Ll8kZWwudHJpZ2dlcihcImF1dG9jb21wbGV0ZS5zZWxlY3RcIix0Ll9zZWxlY3RlZEl0ZW0pKTpudWxsPT09dC5fc2VsZWN0ZWRJdGVtJiZ0Ll8kZWwudHJpZ2dlcihcImF1dG9jb21wbGV0ZS5mcmVldmFsdWVcIix0Ll8kZWwudmFsKCkpLHQuX2RkLmhpZGUoKSl9KSksdGhpcy5fJGVsLm9uKFwiYXV0b2NvbXBsZXRlLnNlbGVjdFwiLChmdW5jdGlvbihlLHMpe3QuX3NlbGVjdGVkSXRlbT1zLHQuaXRlbVNlbGVjdGVkRGVmYXVsdEhhbmRsZXIocyl9KSksdGhpcy5fJGVsLm9uKFwicGFzdGVcIiwoZnVuY3Rpb24oZSl7c2V0VGltZW91dCgoZnVuY3Rpb24oKXt0Ll8kZWwudHJpZ2dlcihcImtleXVwXCIsZSl9KSwwKX0pKX0sdC5wcm90b3R5cGUuaGFuZGxlclR5cGVkPWZ1bmN0aW9uKHQpeyhudWxsPT09dGhpcy5fc2V0dGluZ3MuZXZlbnRzLnR5cGVkfHwodD10aGlzLl9zZXR0aW5ncy5ldmVudHMudHlwZWQodCx0aGlzLl8kZWwpKSkmJih0Lmxlbmd0aD49dGhpcy5fc2V0dGluZ3MubWluTGVuZ3RoPyh0aGlzLl9zZWFyY2hUZXh0PXQsdGhpcy5oYW5kbGVyUHJlU2VhcmNoKCkpOnRoaXMuX2RkLmhpZGUoKSl9LHQucHJvdG90eXBlLmhhbmRsZXJQcmVTZWFyY2g9ZnVuY3Rpb24oKXtpZihudWxsIT09dGhpcy5fc2V0dGluZ3MuZXZlbnRzLnNlYXJjaFByZSl7dmFyIHQ9dGhpcy5fc2V0dGluZ3MuZXZlbnRzLnNlYXJjaFByZSh0aGlzLl9zZWFyY2hUZXh0LHRoaXMuXyRlbCk7aWYoIXQpcmV0dXJuO3RoaXMuX3NlYXJjaFRleHQ9dH10aGlzLmhhbmRsZXJEb1NlYXJjaCgpfSx0LnByb3RvdHlwZS5oYW5kbGVyRG9TZWFyY2g9ZnVuY3Rpb24oKXt2YXIgdD10aGlzO251bGwhPT10aGlzLl9zZXR0aW5ncy5ldmVudHMuc2VhcmNoP3RoaXMuX3NldHRpbmdzLmV2ZW50cy5zZWFyY2godGhpcy5fc2VhcmNoVGV4dCwoZnVuY3Rpb24oZSl7dC5wb3N0U2VhcmNoQ2FsbGJhY2soZSl9KSx0aGlzLl8kZWwpOnRoaXMucmVzb2x2ZXImJnRoaXMucmVzb2x2ZXIuc2VhcmNoKHRoaXMuX3NlYXJjaFRleHQsKGZ1bmN0aW9uKGUpe3QucG9zdFNlYXJjaENhbGxiYWNrKGUpfSkpfSx0LnByb3RvdHlwZS5wb3N0U2VhcmNoQ2FsbGJhY2s9ZnVuY3Rpb24odCl7dGhpcy5fc2V0dGluZ3MuZXZlbnRzLnNlYXJjaFBvc3QmJlwiYm9vbGVhblwiPT10eXBlb2YodD10aGlzLl9zZXR0aW5ncy5ldmVudHMuc2VhcmNoUG9zdCh0LHRoaXMuXyRlbCkpJiYhdHx8dGhpcy5oYW5kbGVyU3RhcnRTaG93KHQpfSx0LnByb3RvdHlwZS5oYW5kbGVyU3RhcnRTaG93PWZ1bmN0aW9uKHQpe3RoaXMuX2RkLnVwZGF0ZUl0ZW1zKHQsdGhpcy5fc2VhcmNoVGV4dCl9LHQucHJvdG90eXBlLml0ZW1TZWxlY3RlZERlZmF1bHRIYW5kbGVyPWZ1bmN0aW9uKHQpe2lmKG51bGwhPXQpe3ZhciBlPXRoaXMuX3NldHRpbmdzLmZvcm1hdFJlc3VsdCh0KTtcInN0cmluZ1wiPT10eXBlb2YgZSYmKGU9e3RleHQ6ZX0pLHRoaXMuXyRlbC52YWwoZS50ZXh0KSx0aGlzLl9pc1NlbGVjdEVsZW1lbnQmJnRoaXMuX3NlbGVjdEhpZGRlbkZpZWxkLnZhbChlLnZhbHVlKX1lbHNlIHRoaXMuXyRlbC52YWwoXCJcIiksdGhpcy5faXNTZWxlY3RFbGVtZW50JiZ0aGlzLl9zZWxlY3RIaWRkZW5GaWVsZC52YWwoXCJcIik7dGhpcy5fc2VsZWN0ZWRJdGVtPXQsdGhpcy5fZGQuaGlkZSgpfSx0LnByb3RvdHlwZS5kZWZhdWx0Rm9ybWF0UmVzdWx0PWZ1bmN0aW9uKHQpe3JldHVyblwic3RyaW5nXCI9PXR5cGVvZiB0P3t0ZXh0OnR9OnQudGV4dD90Ont0ZXh0OnQudG9TdHJpbmcoKX19LHQucHJvdG90eXBlLm1hbmFnZUFQST1mdW5jdGlvbih0LGUpe1wic2V0XCI9PT10P3RoaXMuaXRlbVNlbGVjdGVkRGVmYXVsdEhhbmRsZXIoZSk6XCJjbGVhclwiPT09dD90aGlzLml0ZW1TZWxlY3RlZERlZmF1bHRIYW5kbGVyKG51bGwpOlwic2hvd1wiPT09dD90aGlzLl8kZWwudHJpZ2dlcihcImtleXVwXCIpOlwidXBkYXRlUmVzb2x2ZXJcIj09PXQmJih0aGlzLnJlc29sdmVyPW5ldyBuKGUpKX0sdC5OQU1FPVwiYXV0b0NvbXBsZXRlXCIsdH0oKTshZnVuY3Rpb24odCxlLHMpe3QuZm5bYS5OQU1FXT1mdW5jdGlvbihlLHMpe3JldHVybiB0aGlzLmVhY2goKGZ1bmN0aW9uKCl7dmFyIGk7KGk9dCh0aGlzKS5kYXRhKGEuTkFNRSkpfHwoaT1uZXcgYSh0aGlzLGUpLHQodGhpcykuZGF0YShhLk5BTUUsaSkpLGkubWFuYWdlQVBJKGUscyl9KSl9fShqUXVlcnksd2luZG93LGRvY3VtZW50KX1dKTsiLCIvKiFcbiAgKiBCb290c3RyYXAgdjUuMi4zIChodHRwczovL2dldGJvb3RzdHJhcC5jb20vKVxuICAqIENvcHlyaWdodCAyMDExLTIwMjIgVGhlIEJvb3RzdHJhcCBBdXRob3JzIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvZ3JhcGhzL2NvbnRyaWJ1dG9ycylcbiAgKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAgKi9cbmltcG9ydCAqIGFzIFBvcHBlciBmcm9tICdAcG9wcGVyanMvY29yZSc7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogdXRpbC9pbmRleC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5jb25zdCBNQVhfVUlEID0gMTAwMDAwMDtcbmNvbnN0IE1JTExJU0VDT05EU19NVUxUSVBMSUVSID0gMTAwMDtcbmNvbnN0IFRSQU5TSVRJT05fRU5EID0gJ3RyYW5zaXRpb25lbmQnOyAvLyBTaG91dC1vdXQgQW5ndXMgQ3JvbGwgKGh0dHBzOi8vZ29vLmdsL3B4d1FHcClcblxuY29uc3QgdG9UeXBlID0gb2JqZWN0ID0+IHtcbiAgaWYgKG9iamVjdCA9PT0gbnVsbCB8fCBvYmplY3QgPT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBgJHtvYmplY3R9YDtcbiAgfVxuXG4gIHJldHVybiBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwob2JqZWN0KS5tYXRjaCgvXFxzKFthLXpdKykvaSlbMV0udG9Mb3dlckNhc2UoKTtcbn07XG4vKipcbiAqIFB1YmxpYyBVdGlsIEFQSVxuICovXG5cblxuY29uc3QgZ2V0VUlEID0gcHJlZml4ID0+IHtcbiAgZG8ge1xuICAgIHByZWZpeCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBNQVhfVUlEKTtcbiAgfSB3aGlsZSAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJlZml4KSk7XG5cbiAgcmV0dXJuIHByZWZpeDtcbn07XG5cbmNvbnN0IGdldFNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGxldCBzZWxlY3RvciA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLWJzLXRhcmdldCcpO1xuXG4gIGlmICghc2VsZWN0b3IgfHwgc2VsZWN0b3IgPT09ICcjJykge1xuICAgIGxldCBocmVmQXR0cmlidXRlID0gZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2hyZWYnKTsgLy8gVGhlIG9ubHkgdmFsaWQgY29udGVudCB0aGF0IGNvdWxkIGRvdWJsZSBhcyBhIHNlbGVjdG9yIGFyZSBJRHMgb3IgY2xhc3NlcyxcbiAgICAvLyBzbyBldmVyeXRoaW5nIHN0YXJ0aW5nIHdpdGggYCNgIG9yIGAuYC4gSWYgYSBcInJlYWxcIiBVUkwgaXMgdXNlZCBhcyB0aGUgc2VsZWN0b3IsXG4gICAgLy8gYGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JgIHdpbGwgcmlnaHRmdWxseSBjb21wbGFpbiBpdCBpcyBpbnZhbGlkLlxuICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvaXNzdWVzLzMyMjczXG5cbiAgICBpZiAoIWhyZWZBdHRyaWJ1dGUgfHwgIWhyZWZBdHRyaWJ1dGUuaW5jbHVkZXMoJyMnKSAmJiAhaHJlZkF0dHJpYnV0ZS5zdGFydHNXaXRoKCcuJykpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0gLy8gSnVzdCBpbiBjYXNlIHNvbWUgQ01TIHB1dHMgb3V0IGEgZnVsbCBVUkwgd2l0aCB0aGUgYW5jaG9yIGFwcGVuZGVkXG5cblxuICAgIGlmIChocmVmQXR0cmlidXRlLmluY2x1ZGVzKCcjJykgJiYgIWhyZWZBdHRyaWJ1dGUuc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgICBocmVmQXR0cmlidXRlID0gYCMke2hyZWZBdHRyaWJ1dGUuc3BsaXQoJyMnKVsxXX1gO1xuICAgIH1cblxuICAgIHNlbGVjdG9yID0gaHJlZkF0dHJpYnV0ZSAmJiBocmVmQXR0cmlidXRlICE9PSAnIycgPyBocmVmQXR0cmlidXRlLnRyaW0oKSA6IG51bGw7XG4gIH1cblxuICByZXR1cm4gc2VsZWN0b3I7XG59O1xuXG5jb25zdCBnZXRTZWxlY3RvckZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG5cbiAgaWYgKHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpID8gc2VsZWN0b3IgOiBudWxsO1xuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59O1xuXG5jb25zdCBnZXRFbGVtZW50RnJvbVNlbGVjdG9yID0gZWxlbWVudCA9PiB7XG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3IoZWxlbWVudCk7XG4gIHJldHVybiBzZWxlY3RvciA/IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpIDogbnVsbDtcbn07XG5cbmNvbnN0IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50ID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCkge1xuICAgIHJldHVybiAwO1xuICB9IC8vIEdldCB0cmFuc2l0aW9uLWR1cmF0aW9uIG9mIHRoZSBlbGVtZW50XG5cblxuICBsZXQge1xuICAgIHRyYW5zaXRpb25EdXJhdGlvbixcbiAgICB0cmFuc2l0aW9uRGVsYXlcbiAgfSA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsZW1lbnQpO1xuICBjb25zdCBmbG9hdFRyYW5zaXRpb25EdXJhdGlvbiA9IE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbik7XG4gIGNvbnN0IGZsb2F0VHJhbnNpdGlvbkRlbGF5ID0gTnVtYmVyLnBhcnNlRmxvYXQodHJhbnNpdGlvbkRlbGF5KTsgLy8gUmV0dXJuIDAgaWYgZWxlbWVudCBvciB0cmFuc2l0aW9uIGR1cmF0aW9uIGlzIG5vdCBmb3VuZFxuXG4gIGlmICghZmxvYXRUcmFuc2l0aW9uRHVyYXRpb24gJiYgIWZsb2F0VHJhbnNpdGlvbkRlbGF5KSB7XG4gICAgcmV0dXJuIDA7XG4gIH0gLy8gSWYgbXVsdGlwbGUgZHVyYXRpb25zIGFyZSBkZWZpbmVkLCB0YWtlIHRoZSBmaXJzdFxuXG5cbiAgdHJhbnNpdGlvbkR1cmF0aW9uID0gdHJhbnNpdGlvbkR1cmF0aW9uLnNwbGl0KCcsJylbMF07XG4gIHRyYW5zaXRpb25EZWxheSA9IHRyYW5zaXRpb25EZWxheS5zcGxpdCgnLCcpWzBdO1xuICByZXR1cm4gKE51bWJlci5wYXJzZUZsb2F0KHRyYW5zaXRpb25EdXJhdGlvbikgKyBOdW1iZXIucGFyc2VGbG9hdCh0cmFuc2l0aW9uRGVsYXkpKSAqIE1JTExJU0VDT05EU19NVUxUSVBMSUVSO1xufTtcblxuY29uc3QgdHJpZ2dlclRyYW5zaXRpb25FbmQgPSBlbGVtZW50ID0+IHtcbiAgZWxlbWVudC5kaXNwYXRjaEV2ZW50KG5ldyBFdmVudChUUkFOU0lUSU9OX0VORCkpO1xufTtcblxuY29uc3QgaXNFbGVtZW50ID0gb2JqZWN0ID0+IHtcbiAgaWYgKCFvYmplY3QgfHwgdHlwZW9mIG9iamVjdCAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodHlwZW9mIG9iamVjdC5qcXVlcnkgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgb2JqZWN0ID0gb2JqZWN0WzBdO1xuICB9XG5cbiAgcmV0dXJuIHR5cGVvZiBvYmplY3Qubm9kZVR5cGUgIT09ICd1bmRlZmluZWQnO1xufTtcblxuY29uc3QgZ2V0RWxlbWVudCA9IG9iamVjdCA9PiB7XG4gIC8vIGl0J3MgYSBqUXVlcnkgb2JqZWN0IG9yIGEgbm9kZSBlbGVtZW50XG4gIGlmIChpc0VsZW1lbnQob2JqZWN0KSkge1xuICAgIHJldHVybiBvYmplY3QuanF1ZXJ5ID8gb2JqZWN0WzBdIDogb2JqZWN0O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBvYmplY3QgPT09ICdzdHJpbmcnICYmIG9iamVjdC5sZW5ndGggPiAwKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Iob2JqZWN0KTtcbiAgfVxuXG4gIHJldHVybiBudWxsO1xufTtcblxuY29uc3QgaXNWaXNpYmxlID0gZWxlbWVudCA9PiB7XG4gIGlmICghaXNFbGVtZW50KGVsZW1lbnQpIHx8IGVsZW1lbnQuZ2V0Q2xpZW50UmVjdHMoKS5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBlbGVtZW50SXNWaXNpYmxlID0gZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKCd2aXNpYmlsaXR5JykgPT09ICd2aXNpYmxlJzsgLy8gSGFuZGxlIGBkZXRhaWxzYCBlbGVtZW50IGFzIGl0cyBjb250ZW50IG1heSBmYWxzaWUgYXBwZWFyIHZpc2libGUgd2hlbiBpdCBpcyBjbG9zZWRcblxuICBjb25zdCBjbG9zZWREZXRhaWxzID0gZWxlbWVudC5jbG9zZXN0KCdkZXRhaWxzOm5vdChbb3Blbl0pJyk7XG5cbiAgaWYgKCFjbG9zZWREZXRhaWxzKSB7XG4gICAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG4gIH1cblxuICBpZiAoY2xvc2VkRGV0YWlscyAhPT0gZWxlbWVudCkge1xuICAgIGNvbnN0IHN1bW1hcnkgPSBlbGVtZW50LmNsb3Nlc3QoJ3N1bW1hcnknKTtcblxuICAgIGlmIChzdW1tYXJ5ICYmIHN1bW1hcnkucGFyZW50Tm9kZSAhPT0gY2xvc2VkRGV0YWlscykge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIGlmIChzdW1tYXJ5ID09PSBudWxsKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnRJc1Zpc2libGU7XG59O1xuXG5jb25zdCBpc0Rpc2FibGVkID0gZWxlbWVudCA9PiB7XG4gIGlmICghZWxlbWVudCB8fCBlbGVtZW50Lm5vZGVUeXBlICE9PSBOb2RlLkVMRU1FTlRfTk9ERSkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgaWYgKGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKCdkaXNhYmxlZCcpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodHlwZW9mIGVsZW1lbnQuZGlzYWJsZWQgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZGlzYWJsZWQ7XG4gIH1cblxuICByZXR1cm4gZWxlbWVudC5oYXNBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgJiYgZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2Rpc2FibGVkJykgIT09ICdmYWxzZSc7XG59O1xuXG5jb25zdCBmaW5kU2hhZG93Um9vdCA9IGVsZW1lbnQgPT4ge1xuICBpZiAoIWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5hdHRhY2hTaGFkb3cpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfSAvLyBDYW4gZmluZCB0aGUgc2hhZG93IHJvb3Qgb3RoZXJ3aXNlIGl0J2xsIHJldHVybiB0aGUgZG9jdW1lbnRcblxuXG4gIGlmICh0eXBlb2YgZWxlbWVudC5nZXRSb290Tm9kZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNvbnN0IHJvb3QgPSBlbGVtZW50LmdldFJvb3ROb2RlKCk7XG4gICAgcmV0dXJuIHJvb3QgaW5zdGFuY2VvZiBTaGFkb3dSb290ID8gcm9vdCA6IG51bGw7XG4gIH1cblxuICBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QpIHtcbiAgICByZXR1cm4gZWxlbWVudDtcbiAgfSAvLyB3aGVuIHdlIGRvbid0IGZpbmQgYSBzaGFkb3cgcm9vdFxuXG5cbiAgaWYgKCFlbGVtZW50LnBhcmVudE5vZGUpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBmaW5kU2hhZG93Um9vdChlbGVtZW50LnBhcmVudE5vZGUpO1xufTtcblxuY29uc3Qgbm9vcCA9ICgpID0+IHt9O1xuLyoqXG4gKiBUcmljayB0byByZXN0YXJ0IGFuIGVsZW1lbnQncyBhbmltYXRpb25cbiAqXG4gKiBAcGFyYW0ge0hUTUxFbGVtZW50fSBlbGVtZW50XG4gKiBAcmV0dXJuIHZvaWRcbiAqXG4gKiBAc2VlIGh0dHBzOi8vd3d3LmNoYXJpc3RoZW8uaW8vYmxvZy8yMDIxLzAyL3Jlc3RhcnQtYS1jc3MtYW5pbWF0aW9uLXdpdGgtamF2YXNjcmlwdC8jcmVzdGFydGluZy1hLWNzcy1hbmltYXRpb25cbiAqL1xuXG5cbmNvbnN0IHJlZmxvdyA9IGVsZW1lbnQgPT4ge1xuICBlbGVtZW50Lm9mZnNldEhlaWdodDsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby11bnVzZWQtZXhwcmVzc2lvbnNcbn07XG5cbmNvbnN0IGdldGpRdWVyeSA9ICgpID0+IHtcbiAgaWYgKHdpbmRvdy5qUXVlcnkgJiYgIWRvY3VtZW50LmJvZHkuaGFzQXR0cmlidXRlKCdkYXRhLWJzLW5vLWpxdWVyeScpKSB7XG4gICAgcmV0dXJuIHdpbmRvdy5qUXVlcnk7XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn07XG5cbmNvbnN0IERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MgPSBbXTtcblxuY29uc3Qgb25ET01Db250ZW50TG9hZGVkID0gY2FsbGJhY2sgPT4ge1xuICBpZiAoZG9jdW1lbnQucmVhZHlTdGF0ZSA9PT0gJ2xvYWRpbmcnKSB7XG4gICAgLy8gYWRkIGxpc3RlbmVyIG9uIHRoZSBmaXJzdCBjYWxsIHdoZW4gdGhlIGRvY3VtZW50IGlzIGluIGxvYWRpbmcgc3RhdGVcbiAgICBpZiAoIURPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MubGVuZ3RoKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdET01Db250ZW50TG9hZGVkJywgKCkgPT4ge1xuICAgICAgICBmb3IgKGNvbnN0IGNhbGxiYWNrIG9mIERPTUNvbnRlbnRMb2FkZWRDYWxsYmFja3MpIHtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBET01Db250ZW50TG9hZGVkQ2FsbGJhY2tzLnB1c2goY2FsbGJhY2spO1xuICB9IGVsc2Uge1xuICAgIGNhbGxiYWNrKCk7XG4gIH1cbn07XG5cbmNvbnN0IGlzUlRMID0gKCkgPT4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmRpciA9PT0gJ3J0bCc7XG5cbmNvbnN0IGRlZmluZUpRdWVyeVBsdWdpbiA9IHBsdWdpbiA9PiB7XG4gIG9uRE9NQ29udGVudExvYWRlZCgoKSA9PiB7XG4gICAgY29uc3QgJCA9IGdldGpRdWVyeSgpO1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBpZiAqL1xuXG4gICAgaWYgKCQpIHtcbiAgICAgIGNvbnN0IG5hbWUgPSBwbHVnaW4uTkFNRTtcbiAgICAgIGNvbnN0IEpRVUVSWV9OT19DT05GTElDVCA9ICQuZm5bbmFtZV07XG4gICAgICAkLmZuW25hbWVdID0gcGx1Z2luLmpRdWVyeUludGVyZmFjZTtcbiAgICAgICQuZm5bbmFtZV0uQ29uc3RydWN0b3IgPSBwbHVnaW47XG5cbiAgICAgICQuZm5bbmFtZV0ubm9Db25mbGljdCA9ICgpID0+IHtcbiAgICAgICAgJC5mbltuYW1lXSA9IEpRVUVSWV9OT19DT05GTElDVDtcbiAgICAgICAgcmV0dXJuIHBsdWdpbi5qUXVlcnlJbnRlcmZhY2U7XG4gICAgICB9O1xuICAgIH1cbiAgfSk7XG59O1xuXG5jb25zdCBleGVjdXRlID0gY2FsbGJhY2sgPT4ge1xuICBpZiAodHlwZW9mIGNhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgY2FsbGJhY2soKTtcbiAgfVxufTtcblxuY29uc3QgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbiA9IChjYWxsYmFjaywgdHJhbnNpdGlvbkVsZW1lbnQsIHdhaXRGb3JUcmFuc2l0aW9uID0gdHJ1ZSkgPT4ge1xuICBpZiAoIXdhaXRGb3JUcmFuc2l0aW9uKSB7XG4gICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgZHVyYXRpb25QYWRkaW5nID0gNTtcbiAgY29uc3QgZW11bGF0ZWREdXJhdGlvbiA9IGdldFRyYW5zaXRpb25EdXJhdGlvbkZyb21FbGVtZW50KHRyYW5zaXRpb25FbGVtZW50KSArIGR1cmF0aW9uUGFkZGluZztcbiAgbGV0IGNhbGxlZCA9IGZhbHNlO1xuXG4gIGNvbnN0IGhhbmRsZXIgPSAoe1xuICAgIHRhcmdldFxuICB9KSA9PiB7XG4gICAgaWYgKHRhcmdldCAhPT0gdHJhbnNpdGlvbkVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjYWxsZWQgPSB0cnVlO1xuICAgIHRyYW5zaXRpb25FbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoVFJBTlNJVElPTl9FTkQsIGhhbmRsZXIpO1xuICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICB9O1xuXG4gIHRyYW5zaXRpb25FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoVFJBTlNJVElPTl9FTkQsIGhhbmRsZXIpO1xuICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICBpZiAoIWNhbGxlZCkge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodHJhbnNpdGlvbkVsZW1lbnQpO1xuICAgIH1cbiAgfSwgZW11bGF0ZWREdXJhdGlvbik7XG59O1xuLyoqXG4gKiBSZXR1cm4gdGhlIHByZXZpb3VzL25leHQgZWxlbWVudCBvZiBhIGxpc3QuXG4gKlxuICogQHBhcmFtIHthcnJheX0gbGlzdCAgICBUaGUgbGlzdCBvZiBlbGVtZW50c1xuICogQHBhcmFtIGFjdGl2ZUVsZW1lbnQgICBUaGUgYWN0aXZlIGVsZW1lbnRcbiAqIEBwYXJhbSBzaG91bGRHZXROZXh0ICAgQ2hvb3NlIHRvIGdldCBuZXh0IG9yIHByZXZpb3VzIGVsZW1lbnRcbiAqIEBwYXJhbSBpc0N5Y2xlQWxsb3dlZFxuICogQHJldHVybiB7RWxlbWVudHxlbGVtfSBUaGUgcHJvcGVyIGVsZW1lbnRcbiAqL1xuXG5cbmNvbnN0IGdldE5leHRBY3RpdmVFbGVtZW50ID0gKGxpc3QsIGFjdGl2ZUVsZW1lbnQsIHNob3VsZEdldE5leHQsIGlzQ3ljbGVBbGxvd2VkKSA9PiB7XG4gIGNvbnN0IGxpc3RMZW5ndGggPSBsaXN0Lmxlbmd0aDtcbiAgbGV0IGluZGV4ID0gbGlzdC5pbmRleE9mKGFjdGl2ZUVsZW1lbnQpOyAvLyBpZiB0aGUgZWxlbWVudCBkb2VzIG5vdCBleGlzdCBpbiB0aGUgbGlzdCByZXR1cm4gYW4gZWxlbWVudFxuICAvLyBkZXBlbmRpbmcgb24gdGhlIGRpcmVjdGlvbiBhbmQgaWYgY3ljbGUgaXMgYWxsb3dlZFxuXG4gIGlmIChpbmRleCA9PT0gLTEpIHtcbiAgICByZXR1cm4gIXNob3VsZEdldE5leHQgJiYgaXNDeWNsZUFsbG93ZWQgPyBsaXN0W2xpc3RMZW5ndGggLSAxXSA6IGxpc3RbMF07XG4gIH1cblxuICBpbmRleCArPSBzaG91bGRHZXROZXh0ID8gMSA6IC0xO1xuXG4gIGlmIChpc0N5Y2xlQWxsb3dlZCkge1xuICAgIGluZGV4ID0gKGluZGV4ICsgbGlzdExlbmd0aCkgJSBsaXN0TGVuZ3RoO1xuICB9XG5cbiAgcmV0dXJuIGxpc3RbTWF0aC5tYXgoMCwgTWF0aC5taW4oaW5kZXgsIGxpc3RMZW5ndGggLSAxKSldO1xufTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBkb20vZXZlbnQtaGFuZGxlci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IG5hbWVzcGFjZVJlZ2V4ID0gL1teLl0qKD89XFwuLiopXFwufC4qLztcbmNvbnN0IHN0cmlwTmFtZVJlZ2V4ID0gL1xcLi4qLztcbmNvbnN0IHN0cmlwVWlkUmVnZXggPSAvOjpcXGQrJC87XG5jb25zdCBldmVudFJlZ2lzdHJ5ID0ge307IC8vIEV2ZW50cyBzdG9yYWdlXG5cbmxldCB1aWRFdmVudCA9IDE7XG5jb25zdCBjdXN0b21FdmVudHMgPSB7XG4gIG1vdXNlZW50ZXI6ICdtb3VzZW92ZXInLFxuICBtb3VzZWxlYXZlOiAnbW91c2VvdXQnXG59O1xuY29uc3QgbmF0aXZlRXZlbnRzID0gbmV3IFNldChbJ2NsaWNrJywgJ2RibGNsaWNrJywgJ21vdXNldXAnLCAnbW91c2Vkb3duJywgJ2NvbnRleHRtZW51JywgJ21vdXNld2hlZWwnLCAnRE9NTW91c2VTY3JvbGwnLCAnbW91c2VvdmVyJywgJ21vdXNlb3V0JywgJ21vdXNlbW92ZScsICdzZWxlY3RzdGFydCcsICdzZWxlY3RlbmQnLCAna2V5ZG93bicsICdrZXlwcmVzcycsICdrZXl1cCcsICdvcmllbnRhdGlvbmNoYW5nZScsICd0b3VjaHN0YXJ0JywgJ3RvdWNobW92ZScsICd0b3VjaGVuZCcsICd0b3VjaGNhbmNlbCcsICdwb2ludGVyZG93bicsICdwb2ludGVybW92ZScsICdwb2ludGVydXAnLCAncG9pbnRlcmxlYXZlJywgJ3BvaW50ZXJjYW5jZWwnLCAnZ2VzdHVyZXN0YXJ0JywgJ2dlc3R1cmVjaGFuZ2UnLCAnZ2VzdHVyZWVuZCcsICdmb2N1cycsICdibHVyJywgJ2NoYW5nZScsICdyZXNldCcsICdzZWxlY3QnLCAnc3VibWl0JywgJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnLCAnbG9hZCcsICd1bmxvYWQnLCAnYmVmb3JldW5sb2FkJywgJ3Jlc2l6ZScsICdtb3ZlJywgJ0RPTUNvbnRlbnRMb2FkZWQnLCAncmVhZHlzdGF0ZWNoYW5nZScsICdlcnJvcicsICdhYm9ydCcsICdzY3JvbGwnXSk7XG4vKipcbiAqIFByaXZhdGUgbWV0aG9kc1xuICovXG5cbmZ1bmN0aW9uIG1ha2VFdmVudFVpZChlbGVtZW50LCB1aWQpIHtcbiAgcmV0dXJuIHVpZCAmJiBgJHt1aWR9Ojoke3VpZEV2ZW50Kyt9YCB8fCBlbGVtZW50LnVpZEV2ZW50IHx8IHVpZEV2ZW50Kys7XG59XG5cbmZ1bmN0aW9uIGdldEVsZW1lbnRFdmVudHMoZWxlbWVudCkge1xuICBjb25zdCB1aWQgPSBtYWtlRXZlbnRVaWQoZWxlbWVudCk7XG4gIGVsZW1lbnQudWlkRXZlbnQgPSB1aWQ7XG4gIGV2ZW50UmVnaXN0cnlbdWlkXSA9IGV2ZW50UmVnaXN0cnlbdWlkXSB8fCB7fTtcbiAgcmV0dXJuIGV2ZW50UmVnaXN0cnlbdWlkXTtcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBmbikge1xuICByZXR1cm4gZnVuY3Rpb24gaGFuZGxlcihldmVudCkge1xuICAgIGh5ZHJhdGVPYmooZXZlbnQsIHtcbiAgICAgIGRlbGVnYXRlVGFyZ2V0OiBlbGVtZW50XG4gICAgfSk7XG5cbiAgICBpZiAoaGFuZGxlci5vbmVPZmYpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgZm4pO1xuICAgIH1cblxuICAgIHJldHVybiBmbi5hcHBseShlbGVtZW50LCBbZXZlbnRdKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgc2VsZWN0b3IsIGZuKSB7XG4gIHJldHVybiBmdW5jdGlvbiBoYW5kbGVyKGV2ZW50KSB7XG4gICAgY29uc3QgZG9tRWxlbWVudHMgPSBlbGVtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuXG4gICAgZm9yIChsZXQge1xuICAgICAgdGFyZ2V0XG4gICAgfSA9IGV2ZW50OyB0YXJnZXQgJiYgdGFyZ2V0ICE9PSB0aGlzOyB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZSkge1xuICAgICAgZm9yIChjb25zdCBkb21FbGVtZW50IG9mIGRvbUVsZW1lbnRzKSB7XG4gICAgICAgIGlmIChkb21FbGVtZW50ICE9PSB0YXJnZXQpIHtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGh5ZHJhdGVPYmooZXZlbnQsIHtcbiAgICAgICAgICBkZWxlZ2F0ZVRhcmdldDogdGFyZ2V0XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmIChoYW5kbGVyLm9uZU9mZikge1xuICAgICAgICAgIEV2ZW50SGFuZGxlci5vZmYoZWxlbWVudCwgZXZlbnQudHlwZSwgc2VsZWN0b3IsIGZuKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmbi5hcHBseSh0YXJnZXQsIFtldmVudF0pO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZnVuY3Rpb24gZmluZEhhbmRsZXIoZXZlbnRzLCBjYWxsYWJsZSwgZGVsZWdhdGlvblNlbGVjdG9yID0gbnVsbCkge1xuICByZXR1cm4gT2JqZWN0LnZhbHVlcyhldmVudHMpLmZpbmQoZXZlbnQgPT4gZXZlbnQuY2FsbGFibGUgPT09IGNhbGxhYmxlICYmIGV2ZW50LmRlbGVnYXRpb25TZWxlY3RvciA9PT0gZGVsZWdhdGlvblNlbGVjdG9yKTtcbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gIGNvbnN0IGlzRGVsZWdhdGVkID0gdHlwZW9mIGhhbmRsZXIgPT09ICdzdHJpbmcnOyAvLyB0b2RvOiB0b29sdGlwIHBhc3NlcyBgZmFsc2VgIGluc3RlYWQgb2Ygc2VsZWN0b3IsIHNvIHdlIG5lZWQgdG8gY2hlY2tcblxuICBjb25zdCBjYWxsYWJsZSA9IGlzRGVsZWdhdGVkID8gZGVsZWdhdGlvbkZ1bmN0aW9uIDogaGFuZGxlciB8fCBkZWxlZ2F0aW9uRnVuY3Rpb247XG4gIGxldCB0eXBlRXZlbnQgPSBnZXRUeXBlRXZlbnQob3JpZ2luYWxUeXBlRXZlbnQpO1xuXG4gIGlmICghbmF0aXZlRXZlbnRzLmhhcyh0eXBlRXZlbnQpKSB7XG4gICAgdHlwZUV2ZW50ID0gb3JpZ2luYWxUeXBlRXZlbnQ7XG4gIH1cblxuICByZXR1cm4gW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XTtcbn1cblxuZnVuY3Rpb24gYWRkSGFuZGxlcihlbGVtZW50LCBvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBvbmVPZmYpIHtcbiAgaWYgKHR5cGVvZiBvcmlnaW5hbFR5cGVFdmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBsZXQgW2lzRGVsZWdhdGVkLCBjYWxsYWJsZSwgdHlwZUV2ZW50XSA9IG5vcm1hbGl6ZVBhcmFtZXRlcnMob3JpZ2luYWxUeXBlRXZlbnQsIGhhbmRsZXIsIGRlbGVnYXRpb25GdW5jdGlvbik7IC8vIGluIGNhc2Ugb2YgbW91c2VlbnRlciBvciBtb3VzZWxlYXZlIHdyYXAgdGhlIGhhbmRsZXIgd2l0aGluIGEgZnVuY3Rpb24gdGhhdCBjaGVja3MgZm9yIGl0cyBET00gcG9zaXRpb25cbiAgLy8gdGhpcyBwcmV2ZW50cyB0aGUgaGFuZGxlciBmcm9tIGJlaW5nIGRpc3BhdGNoZWQgdGhlIHNhbWUgd2F5IGFzIG1vdXNlb3ZlciBvciBtb3VzZW91dCBkb2VzXG5cbiAgaWYgKG9yaWdpbmFsVHlwZUV2ZW50IGluIGN1c3RvbUV2ZW50cykge1xuICAgIGNvbnN0IHdyYXBGdW5jdGlvbiA9IGZuID0+IHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgaWYgKCFldmVudC5yZWxhdGVkVGFyZ2V0IHx8IGV2ZW50LnJlbGF0ZWRUYXJnZXQgIT09IGV2ZW50LmRlbGVnYXRlVGFyZ2V0ICYmICFldmVudC5kZWxlZ2F0ZVRhcmdldC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KSkge1xuICAgICAgICAgIHJldHVybiBmbi5jYWxsKHRoaXMsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgY2FsbGFibGUgPSB3cmFwRnVuY3Rpb24oY2FsbGFibGUpO1xuICB9XG5cbiAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgY29uc3QgaGFuZGxlcnMgPSBldmVudHNbdHlwZUV2ZW50XSB8fCAoZXZlbnRzW3R5cGVFdmVudF0gPSB7fSk7XG4gIGNvbnN0IHByZXZpb3VzRnVuY3Rpb24gPSBmaW5kSGFuZGxlcihoYW5kbGVycywgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpO1xuXG4gIGlmIChwcmV2aW91c0Z1bmN0aW9uKSB7XG4gICAgcHJldmlvdXNGdW5jdGlvbi5vbmVPZmYgPSBwcmV2aW91c0Z1bmN0aW9uLm9uZU9mZiAmJiBvbmVPZmY7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3QgdWlkID0gbWFrZUV2ZW50VWlkKGNhbGxhYmxlLCBvcmlnaW5hbFR5cGVFdmVudC5yZXBsYWNlKG5hbWVzcGFjZVJlZ2V4LCAnJykpO1xuICBjb25zdCBmbiA9IGlzRGVsZWdhdGVkID8gYm9vdHN0cmFwRGVsZWdhdGlvbkhhbmRsZXIoZWxlbWVudCwgaGFuZGxlciwgY2FsbGFibGUpIDogYm9vdHN0cmFwSGFuZGxlcihlbGVtZW50LCBjYWxsYWJsZSk7XG4gIGZuLmRlbGVnYXRpb25TZWxlY3RvciA9IGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGw7XG4gIGZuLmNhbGxhYmxlID0gY2FsbGFibGU7XG4gIGZuLm9uZU9mZiA9IG9uZU9mZjtcbiAgZm4udWlkRXZlbnQgPSB1aWQ7XG4gIGhhbmRsZXJzW3VpZF0gPSBmbjtcbiAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKHR5cGVFdmVudCwgZm4sIGlzRGVsZWdhdGVkKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvblNlbGVjdG9yKSB7XG4gIGNvbnN0IGZuID0gZmluZEhhbmRsZXIoZXZlbnRzW3R5cGVFdmVudF0sIGhhbmRsZXIsIGRlbGVnYXRpb25TZWxlY3Rvcik7XG5cbiAgaWYgKCFmbikge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0eXBlRXZlbnQsIGZuLCBCb29sZWFuKGRlbGVnYXRpb25TZWxlY3RvcikpO1xuICBkZWxldGUgZXZlbnRzW3R5cGVFdmVudF1bZm4udWlkRXZlbnRdO1xufVxuXG5mdW5jdGlvbiByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCB0eXBlRXZlbnQsIG5hbWVzcGFjZSkge1xuICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuXG4gIGZvciAoY29uc3QgaGFuZGxlcktleSBvZiBPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkpIHtcbiAgICBpZiAoaGFuZGxlcktleS5pbmNsdWRlcyhuYW1lc3BhY2UpKSB7XG4gICAgICBjb25zdCBldmVudCA9IHN0b3JlRWxlbWVudEV2ZW50W2hhbmRsZXJLZXldO1xuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgZXZlbnQuY2FsbGFibGUsIGV2ZW50LmRlbGVnYXRpb25TZWxlY3Rvcik7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFR5cGVFdmVudChldmVudCkge1xuICAvLyBhbGxvdyB0byBnZXQgdGhlIG5hdGl2ZSBldmVudHMgZnJvbSBuYW1lc3BhY2VkIGV2ZW50cyAoJ2NsaWNrLmJzLmJ1dHRvbicgLS0+ICdjbGljaycpXG4gIGV2ZW50ID0gZXZlbnQucmVwbGFjZShzdHJpcE5hbWVSZWdleCwgJycpO1xuICByZXR1cm4gY3VzdG9tRXZlbnRzW2V2ZW50XSB8fCBldmVudDtcbn1cblxuY29uc3QgRXZlbnRIYW5kbGVyID0ge1xuICBvbihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgYWRkSGFuZGxlcihlbGVtZW50LCBldmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uLCBmYWxzZSk7XG4gIH0sXG5cbiAgb25lKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24pIHtcbiAgICBhZGRIYW5kbGVyKGVsZW1lbnQsIGV2ZW50LCBoYW5kbGVyLCBkZWxlZ2F0aW9uRnVuY3Rpb24sIHRydWUpO1xuICB9LFxuXG4gIG9mZihlbGVtZW50LCBvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKSB7XG4gICAgaWYgKHR5cGVvZiBvcmlnaW5hbFR5cGVFdmVudCAhPT0gJ3N0cmluZycgfHwgIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBbaXNEZWxlZ2F0ZWQsIGNhbGxhYmxlLCB0eXBlRXZlbnRdID0gbm9ybWFsaXplUGFyYW1ldGVycyhvcmlnaW5hbFR5cGVFdmVudCwgaGFuZGxlciwgZGVsZWdhdGlvbkZ1bmN0aW9uKTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IHR5cGVFdmVudCAhPT0gb3JpZ2luYWxUeXBlRXZlbnQ7XG4gICAgY29uc3QgZXZlbnRzID0gZ2V0RWxlbWVudEV2ZW50cyhlbGVtZW50KTtcbiAgICBjb25zdCBzdG9yZUVsZW1lbnRFdmVudCA9IGV2ZW50c1t0eXBlRXZlbnRdIHx8IHt9O1xuICAgIGNvbnN0IGlzTmFtZXNwYWNlID0gb3JpZ2luYWxUeXBlRXZlbnQuc3RhcnRzV2l0aCgnLicpO1xuXG4gICAgaWYgKHR5cGVvZiBjYWxsYWJsZSAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgIC8vIFNpbXBsZXN0IGNhc2U6IGhhbmRsZXIgaXMgcGFzc2VkLCByZW1vdmUgdGhhdCBsaXN0ZW5lciBPTkxZLlxuICAgICAgaWYgKCFPYmplY3Qua2V5cyhzdG9yZUVsZW1lbnRFdmVudCkubGVuZ3RoKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcmVtb3ZlSGFuZGxlcihlbGVtZW50LCBldmVudHMsIHR5cGVFdmVudCwgY2FsbGFibGUsIGlzRGVsZWdhdGVkID8gaGFuZGxlciA6IG51bGwpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc05hbWVzcGFjZSkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50RXZlbnQgb2YgT2JqZWN0LmtleXMoZXZlbnRzKSkge1xuICAgICAgICByZW1vdmVOYW1lc3BhY2VkSGFuZGxlcnMoZWxlbWVudCwgZXZlbnRzLCBlbGVtZW50RXZlbnQsIG9yaWdpbmFsVHlwZUV2ZW50LnNsaWNlKDEpKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGtleUhhbmRsZXJzIG9mIE9iamVjdC5rZXlzKHN0b3JlRWxlbWVudEV2ZW50KSkge1xuICAgICAgY29uc3QgaGFuZGxlcktleSA9IGtleUhhbmRsZXJzLnJlcGxhY2Uoc3RyaXBVaWRSZWdleCwgJycpO1xuXG4gICAgICBpZiAoIWluTmFtZXNwYWNlIHx8IG9yaWdpbmFsVHlwZUV2ZW50LmluY2x1ZGVzKGhhbmRsZXJLZXkpKSB7XG4gICAgICAgIGNvbnN0IGV2ZW50ID0gc3RvcmVFbGVtZW50RXZlbnRba2V5SGFuZGxlcnNdO1xuICAgICAgICByZW1vdmVIYW5kbGVyKGVsZW1lbnQsIGV2ZW50cywgdHlwZUV2ZW50LCBldmVudC5jYWxsYWJsZSwgZXZlbnQuZGVsZWdhdGlvblNlbGVjdG9yKTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG5cbiAgdHJpZ2dlcihlbGVtZW50LCBldmVudCwgYXJncykge1xuICAgIGlmICh0eXBlb2YgZXZlbnQgIT09ICdzdHJpbmcnIHx8ICFlbGVtZW50KSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBjb25zdCAkID0gZ2V0alF1ZXJ5KCk7XG4gICAgY29uc3QgdHlwZUV2ZW50ID0gZ2V0VHlwZUV2ZW50KGV2ZW50KTtcbiAgICBjb25zdCBpbk5hbWVzcGFjZSA9IGV2ZW50ICE9PSB0eXBlRXZlbnQ7XG4gICAgbGV0IGpRdWVyeUV2ZW50ID0gbnVsbDtcbiAgICBsZXQgYnViYmxlcyA9IHRydWU7XG4gICAgbGV0IG5hdGl2ZURpc3BhdGNoID0gdHJ1ZTtcbiAgICBsZXQgZGVmYXVsdFByZXZlbnRlZCA9IGZhbHNlO1xuXG4gICAgaWYgKGluTmFtZXNwYWNlICYmICQpIHtcbiAgICAgIGpRdWVyeUV2ZW50ID0gJC5FdmVudChldmVudCwgYXJncyk7XG4gICAgICAkKGVsZW1lbnQpLnRyaWdnZXIoalF1ZXJ5RXZlbnQpO1xuICAgICAgYnViYmxlcyA9ICFqUXVlcnlFdmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpO1xuICAgICAgbmF0aXZlRGlzcGF0Y2ggPSAhalF1ZXJ5RXZlbnQuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQoKTtcbiAgICAgIGRlZmF1bHRQcmV2ZW50ZWQgPSBqUXVlcnlFdmVudC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9XG5cbiAgICBsZXQgZXZ0ID0gbmV3IEV2ZW50KGV2ZW50LCB7XG4gICAgICBidWJibGVzLFxuICAgICAgY2FuY2VsYWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIGV2dCA9IGh5ZHJhdGVPYmooZXZ0LCBhcmdzKTtcblxuICAgIGlmIChkZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAobmF0aXZlRGlzcGF0Y2gpIHtcbiAgICAgIGVsZW1lbnQuZGlzcGF0Y2hFdmVudChldnQpO1xuICAgIH1cblxuICAgIGlmIChldnQuZGVmYXVsdFByZXZlbnRlZCAmJiBqUXVlcnlFdmVudCkge1xuICAgICAgalF1ZXJ5RXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gZXZ0O1xuICB9XG5cbn07XG5cbmZ1bmN0aW9uIGh5ZHJhdGVPYmoob2JqLCBtZXRhKSB7XG4gIGZvciAoY29uc3QgW2tleSwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKG1ldGEgfHwge30pKSB7XG4gICAgdHJ5IHtcbiAgICAgIG9ialtrZXldID0gdmFsdWU7XG4gICAgfSBjYXRjaCAoX3VudXNlZCkge1xuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcblxuICAgICAgICBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICB9XG5cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBvYmo7XG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogZG9tL2RhdGEuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5jb25zdCBlbGVtZW50TWFwID0gbmV3IE1hcCgpO1xuY29uc3QgRGF0YSA9IHtcbiAgc2V0KGVsZW1lbnQsIGtleSwgaW5zdGFuY2UpIHtcbiAgICBpZiAoIWVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICBlbGVtZW50TWFwLnNldChlbGVtZW50LCBuZXcgTWFwKCkpO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7IC8vIG1ha2UgaXQgY2xlYXIgd2Ugb25seSB3YW50IG9uZSBpbnN0YW5jZSBwZXIgZWxlbWVudFxuICAgIC8vIGNhbiBiZSByZW1vdmVkIGxhdGVyIHdoZW4gbXVsdGlwbGUga2V5L2luc3RhbmNlcyBhcmUgZmluZSB0byBiZSB1c2VkXG5cbiAgICBpZiAoIWluc3RhbmNlTWFwLmhhcyhrZXkpICYmIGluc3RhbmNlTWFwLnNpemUgIT09IDApIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1jb25zb2xlXG4gICAgICBjb25zb2xlLmVycm9yKGBCb290c3RyYXAgZG9lc24ndCBhbGxvdyBtb3JlIHRoYW4gb25lIGluc3RhbmNlIHBlciBlbGVtZW50LiBCb3VuZCBpbnN0YW5jZTogJHtBcnJheS5mcm9tKGluc3RhbmNlTWFwLmtleXMoKSlbMF19LmApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGluc3RhbmNlTWFwLnNldChrZXksIGluc3RhbmNlKTtcbiAgfSxcblxuICBnZXQoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKGVsZW1lbnRNYXAuaGFzKGVsZW1lbnQpKSB7XG4gICAgICByZXR1cm4gZWxlbWVudE1hcC5nZXQoZWxlbWVudCkuZ2V0KGtleSkgfHwgbnVsbDtcbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbDtcbiAgfSxcblxuICByZW1vdmUoZWxlbWVudCwga2V5KSB7XG4gICAgaWYgKCFlbGVtZW50TWFwLmhhcyhlbGVtZW50KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGluc3RhbmNlTWFwID0gZWxlbWVudE1hcC5nZXQoZWxlbWVudCk7XG4gICAgaW5zdGFuY2VNYXAuZGVsZXRlKGtleSk7IC8vIGZyZWUgdXAgZWxlbWVudCByZWZlcmVuY2VzIGlmIHRoZXJlIGFyZSBubyBpbnN0YW5jZXMgbGVmdCBmb3IgYW4gZWxlbWVudFxuXG4gICAgaWYgKGluc3RhbmNlTWFwLnNpemUgPT09IDApIHtcbiAgICAgIGVsZW1lbnRNYXAuZGVsZXRlKGVsZW1lbnQpO1xuICAgIH1cbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRvbS9tYW5pcHVsYXRvci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5mdW5jdGlvbiBub3JtYWxpemVEYXRhKHZhbHVlKSB7XG4gIGlmICh2YWx1ZSA9PT0gJ3RydWUnKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAodmFsdWUgPT09ICdmYWxzZScpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAodmFsdWUgPT09IE51bWJlcih2YWx1ZSkudG9TdHJpbmcoKSkge1xuICAgIHJldHVybiBOdW1iZXIodmFsdWUpO1xuICB9XG5cbiAgaWYgKHZhbHVlID09PSAnJyB8fCB2YWx1ZSA9PT0gJ251bGwnKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlICE9PSAnc3RyaW5nJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHRyeSB7XG4gICAgcmV0dXJuIEpTT04ucGFyc2UoZGVjb2RlVVJJQ29tcG9uZW50KHZhbHVlKSk7XG4gIH0gY2F0Y2ggKF91bnVzZWQpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gbm9ybWFsaXplRGF0YUtleShrZXkpIHtcbiAgcmV0dXJuIGtleS5yZXBsYWNlKC9bQS1aXS9nLCBjaHIgPT4gYC0ke2Noci50b0xvd2VyQ2FzZSgpfWApO1xufVxuXG5jb25zdCBNYW5pcHVsYXRvciA9IHtcbiAgc2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCBrZXksIHZhbHVlKSB7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCwgdmFsdWUpO1xuICB9LFxuXG4gIHJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwga2V5KSB7XG4gICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYGRhdGEtYnMtJHtub3JtYWxpemVEYXRhS2V5KGtleSl9YCk7XG4gIH0sXG5cbiAgZ2V0RGF0YUF0dHJpYnV0ZXMoZWxlbWVudCkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZXMgPSB7fTtcbiAgICBjb25zdCBic0tleXMgPSBPYmplY3Qua2V5cyhlbGVtZW50LmRhdGFzZXQpLmZpbHRlcihrZXkgPT4ga2V5LnN0YXJ0c1dpdGgoJ2JzJykgJiYgIWtleS5zdGFydHNXaXRoKCdic0NvbmZpZycpKTtcblxuICAgIGZvciAoY29uc3Qga2V5IG9mIGJzS2V5cykge1xuICAgICAgbGV0IHB1cmVLZXkgPSBrZXkucmVwbGFjZSgvXmJzLywgJycpO1xuICAgICAgcHVyZUtleSA9IHB1cmVLZXkuY2hhckF0KDApLnRvTG93ZXJDYXNlKCkgKyBwdXJlS2V5LnNsaWNlKDEsIHB1cmVLZXkubGVuZ3RoKTtcbiAgICAgIGF0dHJpYnV0ZXNbcHVyZUtleV0gPSBub3JtYWxpemVEYXRhKGVsZW1lbnQuZGF0YXNldFtrZXldKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgfSxcblxuICBnZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIGtleSkge1xuICAgIHJldHVybiBub3JtYWxpemVEYXRhKGVsZW1lbnQuZ2V0QXR0cmlidXRlKGBkYXRhLWJzLSR7bm9ybWFsaXplRGF0YUtleShrZXkpfWApKTtcbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvY29uZmlnLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIENvbmZpZyB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiB7fTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIHt9O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignWW91IGhhdmUgdG8gaW1wbGVtZW50IHRoZSBzdGF0aWMgbWV0aG9kIFwiTkFNRVwiLCBmb3IgZWFjaCBjb21wb25lbnQhJyk7XG4gIH1cblxuICBfZ2V0Q29uZmlnKGNvbmZpZykge1xuICAgIGNvbmZpZyA9IHRoaXMuX21lcmdlQ29uZmlnT2JqKGNvbmZpZyk7XG4gICAgY29uZmlnID0gdGhpcy5fY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpO1xuXG4gICAgdGhpcy5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIF9tZXJnZUNvbmZpZ09iaihjb25maWcsIGVsZW1lbnQpIHtcbiAgICBjb25zdCBqc29uQ29uZmlnID0gaXNFbGVtZW50KGVsZW1lbnQpID8gTWFuaXB1bGF0b3IuZ2V0RGF0YUF0dHJpYnV0ZShlbGVtZW50LCAnY29uZmlnJykgOiB7fTsgLy8gdHJ5IHRvIHBhcnNlXG5cbiAgICByZXR1cm4geyAuLi50aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHQsXG4gICAgICAuLi4odHlwZW9mIGpzb25Db25maWcgPT09ICdvYmplY3QnID8ganNvbkNvbmZpZyA6IHt9KSxcbiAgICAgIC4uLihpc0VsZW1lbnQoZWxlbWVudCkgPyBNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlcyhlbGVtZW50KSA6IHt9KSxcbiAgICAgIC4uLih0eXBlb2YgY29uZmlnID09PSAnb2JqZWN0JyA/IGNvbmZpZyA6IHt9KVxuICAgIH07XG4gIH1cblxuICBfdHlwZUNoZWNrQ29uZmlnKGNvbmZpZywgY29uZmlnVHlwZXMgPSB0aGlzLmNvbnN0cnVjdG9yLkRlZmF1bHRUeXBlKSB7XG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBvZiBPYmplY3Qua2V5cyhjb25maWdUeXBlcykpIHtcbiAgICAgIGNvbnN0IGV4cGVjdGVkVHlwZXMgPSBjb25maWdUeXBlc1twcm9wZXJ0eV07XG4gICAgICBjb25zdCB2YWx1ZSA9IGNvbmZpZ1twcm9wZXJ0eV07XG4gICAgICBjb25zdCB2YWx1ZVR5cGUgPSBpc0VsZW1lbnQodmFsdWUpID8gJ2VsZW1lbnQnIDogdG9UeXBlKHZhbHVlKTtcblxuICAgICAgaWYgKCFuZXcgUmVnRXhwKGV4cGVjdGVkVHlwZXMpLnRlc3QodmFsdWVUeXBlKSkge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGAke3RoaXMuY29uc3RydWN0b3IuTkFNRS50b1VwcGVyQ2FzZSgpfTogT3B0aW9uIFwiJHtwcm9wZXJ0eX1cIiBwcm92aWRlZCB0eXBlIFwiJHt2YWx1ZVR5cGV9XCIgYnV0IGV4cGVjdGVkIHR5cGUgXCIke2V4cGVjdGVkVHlwZXN9XCIuYCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiBiYXNlLWNvbXBvbmVudC5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IFZFUlNJT04gPSAnNS4yLjMnO1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQmFzZUNvbXBvbmVudCBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgZWxlbWVudCA9IGdldEVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICBEYXRhLnNldCh0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkRBVEFfS0VZLCB0aGlzKTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgRGF0YS5yZW1vdmUodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5EQVRBX0tFWSk7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLkVWRU5UX0tFWSk7XG5cbiAgICBmb3IgKGNvbnN0IHByb3BlcnR5TmFtZSBvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlOYW1lcyh0aGlzKSkge1xuICAgICAgdGhpc1twcm9wZXJ0eU5hbWVdID0gbnVsbDtcbiAgICB9XG4gIH1cblxuICBfcXVldWVDYWxsYmFjayhjYWxsYmFjaywgZWxlbWVudCwgaXNBbmltYXRlZCA9IHRydWUpIHtcbiAgICBleGVjdXRlQWZ0ZXJUcmFuc2l0aW9uKGNhbGxiYWNrLCBlbGVtZW50LCBpc0FuaW1hdGVkKTtcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gdGhpcy5fbWVyZ2VDb25maWdPYmooY29uZmlnLCB0aGlzLl9lbGVtZW50KTtcbiAgICBjb25maWcgPSB0aGlzLl9jb25maWdBZnRlck1lcmdlKGNvbmZpZyk7XG5cbiAgICB0aGlzLl90eXBlQ2hlY2tDb25maWcoY29uZmlnKTtcblxuICAgIHJldHVybiBjb25maWc7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgZ2V0SW5zdGFuY2UoZWxlbWVudCkge1xuICAgIHJldHVybiBEYXRhLmdldChnZXRFbGVtZW50KGVsZW1lbnQpLCB0aGlzLkRBVEFfS0VZKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIGNvbmZpZyA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0SW5zdGFuY2UoZWxlbWVudCkgfHwgbmV3IHRoaXMoZWxlbWVudCwgdHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgPyBjb25maWcgOiBudWxsKTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgVkVSU0lPTigpIHtcbiAgICByZXR1cm4gVkVSU0lPTjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgREFUQV9LRVkoKSB7XG4gICAgcmV0dXJuIGBicy4ke3RoaXMuTkFNRX1gO1xuICB9XG5cbiAgc3RhdGljIGdldCBFVkVOVF9LRVkoKSB7XG4gICAgcmV0dXJuIGAuJHt0aGlzLkRBVEFfS0VZfWA7XG4gIH1cblxuICBzdGF0aWMgZXZlbnROYW1lKG5hbWUpIHtcbiAgICByZXR1cm4gYCR7bmFtZX0ke3RoaXMuRVZFTlRfS0VZfWA7XG4gIH1cblxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvY29tcG9uZW50LWZ1bmN0aW9ucy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5cbmNvbnN0IGVuYWJsZURpc21pc3NUcmlnZ2VyID0gKGNvbXBvbmVudCwgbWV0aG9kID0gJ2hpZGUnKSA9PiB7XG4gIGNvbnN0IGNsaWNrRXZlbnQgPSBgY2xpY2suZGlzbWlzcyR7Y29tcG9uZW50LkVWRU5UX0tFWX1gO1xuICBjb25zdCBuYW1lID0gY29tcG9uZW50Lk5BTUU7XG4gIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgY2xpY2tFdmVudCwgYFtkYXRhLWJzLWRpc21pc3M9XCIke25hbWV9XCJdYCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG5cbiAgICBpZiAoaXNEaXNhYmxlZCh0aGlzKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcykgfHwgdGhpcy5jbG9zZXN0KGAuJHtuYW1lfWApO1xuICAgIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50LmdldE9yQ3JlYXRlSW5zdGFuY2UodGFyZ2V0KTsgLy8gTWV0aG9kIGFyZ3VtZW50IGlzIGxlZnQsIGZvciBBbGVydCBhbmQgb25seSwgYXMgaXQgZG9lc24ndCBpbXBsZW1lbnQgdGhlICdoaWRlJyBtZXRob2RcblxuICAgIGluc3RhbmNlW21ldGhvZF0oKTtcbiAgfSk7XG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGFsZXJ0LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRmID0gJ2FsZXJ0JztcbmNvbnN0IERBVEFfS0VZJGEgPSAnYnMuYWxlcnQnO1xuY29uc3QgRVZFTlRfS0VZJGIgPSBgLiR7REFUQV9LRVkkYX1gO1xuY29uc3QgRVZFTlRfQ0xPU0UgPSBgY2xvc2Uke0VWRU5UX0tFWSRifWA7XG5jb25zdCBFVkVOVF9DTE9TRUQgPSBgY2xvc2VkJHtFVkVOVF9LRVkkYn1gO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDUgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckOCA9ICdzaG93Jztcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEFsZXJ0IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIC8vIEdldHRlcnNcbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGY7XG4gIH0gLy8gUHVibGljXG5cblxuICBjbG9zZSgpIHtcbiAgICBjb25zdCBjbG9zZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xPU0UpO1xuXG4gICAgaWYgKGNsb3NlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckOCk7XG5cbiAgICBjb25zdCBpc0FuaW1hdGVkID0gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDUpO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB0aGlzLl9kZXN0cm95RWxlbWVudCgpLCB0aGlzLl9lbGVtZW50LCBpc0FuaW1hdGVkKTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfZGVzdHJveUVsZW1lbnQoKSB7XG4gICAgdGhpcy5fZWxlbWVudC5yZW1vdmUoKTtcblxuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0NMT1NFRCk7XG4gICAgdGhpcy5kaXNwb3NlKCk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEFsZXJ0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoQWxlcnQsICdjbG9zZScpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQWxlcnQpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGJ1dHRvbi5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkZSA9ICdidXR0b24nO1xuY29uc3QgREFUQV9LRVkkOSA9ICdicy5idXR0b24nO1xuY29uc3QgRVZFTlRfS0VZJGEgPSBgLiR7REFUQV9LRVkkOX1gO1xuY29uc3QgREFUQV9BUElfS0VZJDYgPSAnLmRhdGEtYXBpJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFJDMgPSAnYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiYnV0dG9uXCJdJztcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYgPSBgY2xpY2ske0VWRU5UX0tFWSRhfSR7REFUQV9BUElfS0VZJDZ9YDtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIEJ1dHRvbiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRlO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgdG9nZ2xlKCkge1xuICAgIC8vIFRvZ2dsZSBjbGFzcyBhbmQgc3luYyB0aGUgYGFyaWEtcHJlc3NlZGAgYXR0cmlidXRlIHdpdGggdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgYC50b2dnbGUoKWAgbWV0aG9kXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtcHJlc3NlZCcsIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnRvZ2dsZShDTEFTU19OQU1FX0FDVElWRSQzKSk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IEJ1dHRvbi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpO1xuXG4gICAgICBpZiAoY29uZmlnID09PSAndG9nZ2xlJykge1xuICAgICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIERhdGEgQVBJIGltcGxlbWVudGF0aW9uXG4gKi9cblxuXG5FdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0NMSUNLX0RBVEFfQVBJJDYsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDUsIGV2ZW50ID0+IHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgY29uc3QgYnV0dG9uID0gZXZlbnQudGFyZ2V0LmNsb3Nlc3QoU0VMRUNUT1JfREFUQV9UT0dHTEUkNSk7XG4gIGNvbnN0IGRhdGEgPSBCdXR0b24uZ2V0T3JDcmVhdGVJbnN0YW5jZShidXR0b24pO1xuICBkYXRhLnRvZ2dsZSgpO1xufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihCdXR0b24pO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRvbS9zZWxlY3Rvci1lbmdpbmUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBTZWxlY3RvckVuZ2luZSA9IHtcbiAgZmluZChzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiBbXS5jb25jYXQoLi4uRWxlbWVudC5wcm90b3R5cGUucXVlcnlTZWxlY3RvckFsbC5jYWxsKGVsZW1lbnQsIHNlbGVjdG9yKSk7XG4gIH0sXG5cbiAgZmluZE9uZShzZWxlY3RvciwgZWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgIHJldHVybiBFbGVtZW50LnByb3RvdHlwZS5xdWVyeVNlbGVjdG9yLmNhbGwoZWxlbWVudCwgc2VsZWN0b3IpO1xuICB9LFxuXG4gIGNoaWxkcmVuKGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgcmV0dXJuIFtdLmNvbmNhdCguLi5lbGVtZW50LmNoaWxkcmVuKS5maWx0ZXIoY2hpbGQgPT4gY2hpbGQubWF0Y2hlcyhzZWxlY3RvcikpO1xuICB9LFxuXG4gIHBhcmVudHMoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCBwYXJlbnRzID0gW107XG4gICAgbGV0IGFuY2VzdG9yID0gZWxlbWVudC5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuXG4gICAgd2hpbGUgKGFuY2VzdG9yKSB7XG4gICAgICBwYXJlbnRzLnB1c2goYW5jZXN0b3IpO1xuICAgICAgYW5jZXN0b3IgPSBhbmNlc3Rvci5wYXJlbnROb2RlLmNsb3Nlc3Qoc2VsZWN0b3IpO1xuICAgIH1cblxuICAgIHJldHVybiBwYXJlbnRzO1xuICB9LFxuXG4gIHByZXYoZWxlbWVudCwgc2VsZWN0b3IpIHtcbiAgICBsZXQgcHJldmlvdXMgPSBlbGVtZW50LnByZXZpb3VzRWxlbWVudFNpYmxpbmc7XG5cbiAgICB3aGlsZSAocHJldmlvdXMpIHtcbiAgICAgIGlmIChwcmV2aW91cy5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW3ByZXZpb3VzXTtcbiAgICAgIH1cblxuICAgICAgcHJldmlvdXMgPSBwcmV2aW91cy5wcmV2aW91c0VsZW1lbnRTaWJsaW5nO1xuICAgIH1cblxuICAgIHJldHVybiBbXTtcbiAgfSxcblxuICAvLyBUT0RPOiB0aGlzIGlzIG5vdyB1bnVzZWQ7IHJlbW92ZSBsYXRlciBhbG9uZyB3aXRoIHByZXYoKVxuICBuZXh0KGVsZW1lbnQsIHNlbGVjdG9yKSB7XG4gICAgbGV0IG5leHQgPSBlbGVtZW50Lm5leHRFbGVtZW50U2libGluZztcblxuICAgIHdoaWxlIChuZXh0KSB7XG4gICAgICBpZiAobmV4dC5tYXRjaGVzKHNlbGVjdG9yKSkge1xuICAgICAgICByZXR1cm4gW25leHRdO1xuICAgICAgfVxuXG4gICAgICBuZXh0ID0gbmV4dC5uZXh0RWxlbWVudFNpYmxpbmc7XG4gICAgfVxuXG4gICAgcmV0dXJuIFtdO1xuICB9LFxuXG4gIGZvY3VzYWJsZUNoaWxkcmVuKGVsZW1lbnQpIHtcbiAgICBjb25zdCBmb2N1c2FibGVzID0gWydhJywgJ2J1dHRvbicsICdpbnB1dCcsICd0ZXh0YXJlYScsICdzZWxlY3QnLCAnZGV0YWlscycsICdbdGFiaW5kZXhdJywgJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJ10ubWFwKHNlbGVjdG9yID0+IGAke3NlbGVjdG9yfTpub3QoW3RhYmluZGV4Xj1cIi1cIl0pYCkuam9pbignLCcpO1xuICAgIHJldHVybiB0aGlzLmZpbmQoZm9jdXNhYmxlcywgZWxlbWVudCkuZmlsdGVyKGVsID0+ICFpc0Rpc2FibGVkKGVsKSAmJiBpc1Zpc2libGUoZWwpKTtcbiAgfVxuXG59O1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvc3dpcGUuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGQgPSAnc3dpcGUnO1xuY29uc3QgRVZFTlRfS0VZJDkgPSAnLmJzLnN3aXBlJztcbmNvbnN0IEVWRU5UX1RPVUNIU1RBUlQgPSBgdG91Y2hzdGFydCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1RPVUNITU9WRSA9IGB0b3VjaG1vdmUke0VWRU5UX0tFWSQ5fWA7XG5jb25zdCBFVkVOVF9UT1VDSEVORCA9IGB0b3VjaGVuZCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IEVWRU5UX1BPSU5URVJET1dOID0gYHBvaW50ZXJkb3duJHtFVkVOVF9LRVkkOX1gO1xuY29uc3QgRVZFTlRfUE9JTlRFUlVQID0gYHBvaW50ZXJ1cCR7RVZFTlRfS0VZJDl9YDtcbmNvbnN0IFBPSU5URVJfVFlQRV9UT1VDSCA9ICd0b3VjaCc7XG5jb25zdCBQT0lOVEVSX1RZUEVfUEVOID0gJ3Blbic7XG5jb25zdCBDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQgPSAncG9pbnRlci1ldmVudCc7XG5jb25zdCBTV0lQRV9USFJFU0hPTEQgPSA0MDtcbmNvbnN0IERlZmF1bHQkYyA9IHtcbiAgZW5kQ2FsbGJhY2s6IG51bGwsXG4gIGxlZnRDYWxsYmFjazogbnVsbCxcbiAgcmlnaHRDYWxsYmFjazogbnVsbFxufTtcbmNvbnN0IERlZmF1bHRUeXBlJGMgPSB7XG4gIGVuZENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgbGVmdENhbGxiYWNrOiAnKGZ1bmN0aW9ufG51bGwpJyxcbiAgcmlnaHRDYWxsYmFjazogJyhmdW5jdGlvbnxudWxsKSdcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBTd2lwZSBleHRlbmRzIENvbmZpZyB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKCk7XG4gICAgdGhpcy5fZWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgICBpZiAoIWVsZW1lbnQgfHwgIVN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9kZWx0YVggPSAwO1xuICAgIHRoaXMuX3N1cHBvcnRQb2ludGVyRXZlbnRzID0gQm9vbGVhbih3aW5kb3cuUG9pbnRlckV2ZW50KTtcblxuICAgIHRoaXMuX2luaXRFdmVudHMoKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkYztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJGM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkZDtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVkkOSk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX3N0YXJ0KGV2ZW50KSB7XG4gICAgaWYgKCF0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cykge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQudG91Y2hlc1swXS5jbGllbnRYO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9ldmVudElzUG9pbnRlclBlblRvdWNoKGV2ZW50KSkge1xuICAgICAgdGhpcy5fZGVsdGFYID0gZXZlbnQuY2xpZW50WDtcbiAgICB9XG4gIH1cblxuICBfZW5kKGV2ZW50KSB7XG4gICAgaWYgKHRoaXMuX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpKSB7XG4gICAgICB0aGlzLl9kZWx0YVggPSBldmVudC5jbGllbnRYIC0gdGhpcy5fZGVsdGFYO1xuICAgIH1cblxuICAgIHRoaXMuX2hhbmRsZVN3aXBlKCk7XG5cbiAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5lbmRDYWxsYmFjayk7XG4gIH1cblxuICBfbW92ZShldmVudCkge1xuICAgIHRoaXMuX2RlbHRhWCA9IGV2ZW50LnRvdWNoZXMgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPiAxID8gMCA6IGV2ZW50LnRvdWNoZXNbMF0uY2xpZW50WCAtIHRoaXMuX2RlbHRhWDtcbiAgfVxuXG4gIF9oYW5kbGVTd2lwZSgpIHtcbiAgICBjb25zdCBhYnNEZWx0YVggPSBNYXRoLmFicyh0aGlzLl9kZWx0YVgpO1xuXG4gICAgaWYgKGFic0RlbHRhWCA8PSBTV0lQRV9USFJFU0hPTEQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBkaXJlY3Rpb24gPSBhYnNEZWx0YVggLyB0aGlzLl9kZWx0YVg7XG4gICAgdGhpcy5fZGVsdGFYID0gMDtcblxuICAgIGlmICghZGlyZWN0aW9uKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXhlY3V0ZShkaXJlY3Rpb24gPiAwID8gdGhpcy5fY29uZmlnLnJpZ2h0Q2FsbGJhY2sgOiB0aGlzLl9jb25maWcubGVmdENhbGxiYWNrKTtcbiAgfVxuXG4gIF9pbml0RXZlbnRzKCkge1xuICAgIGlmICh0aGlzLl9zdXBwb3J0UG9pbnRlckV2ZW50cykge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1BPSU5URVJET1dOLCBldmVudCA9PiB0aGlzLl9zdGFydChldmVudCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1BPSU5URVJVUCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSk7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1BPSU5URVJfRVZFTlQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfVE9VQ0hTVEFSVCwgZXZlbnQgPT4gdGhpcy5fc3RhcnQoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSE1PVkUsIGV2ZW50ID0+IHRoaXMuX21vdmUoZXZlbnQpKTtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9UT1VDSEVORCwgZXZlbnQgPT4gdGhpcy5fZW5kKGV2ZW50KSk7XG4gICAgfVxuICB9XG5cbiAgX2V2ZW50SXNQb2ludGVyUGVuVG91Y2goZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fc3VwcG9ydFBvaW50ZXJFdmVudHMgJiYgKGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfUEVOIHx8IGV2ZW50LnBvaW50ZXJUeXBlID09PSBQT0lOVEVSX1RZUEVfVE9VQ0gpO1xuICB9IC8vIFN0YXRpY1xuXG5cbiAgc3RhdGljIGlzU3VwcG9ydGVkKCkge1xuICAgIHJldHVybiAnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgfHwgbmF2aWdhdG9yLm1heFRvdWNoUG9pbnRzID4gMDtcbiAgfVxuXG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogY2Fyb3VzZWwuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGMgPSAnY2Fyb3VzZWwnO1xuY29uc3QgREFUQV9LRVkkOCA9ICdicy5jYXJvdXNlbCc7XG5jb25zdCBFVkVOVF9LRVkkOCA9IGAuJHtEQVRBX0tFWSQ4fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNSA9ICcuZGF0YS1hcGknO1xuY29uc3QgQVJST1dfTEVGVF9LRVkkMSA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFRfS0VZJDEgPSAnQXJyb3dSaWdodCc7XG5jb25zdCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUID0gNTAwOyAvLyBUaW1lIGZvciBtb3VzZSBjb21wYXQgZXZlbnRzIHRvIGZpcmUgYWZ0ZXIgdG91Y2hcblxuY29uc3QgT1JERVJfTkVYVCA9ICduZXh0JztcbmNvbnN0IE9SREVSX1BSRVYgPSAncHJldic7XG5jb25zdCBESVJFQ1RJT05fTEVGVCA9ICdsZWZ0JztcbmNvbnN0IERJUkVDVElPTl9SSUdIVCA9ICdyaWdodCc7XG5jb25zdCBFVkVOVF9TTElERSA9IGBzbGlkZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX1NMSUQgPSBgc2xpZCR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0tFWURPV04kMSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTU9VU0VFTlRFUiQxID0gYG1vdXNlZW50ZXIke0VWRU5UX0tFWSQ4fWA7XG5jb25zdCBFVkVOVF9NT1VTRUxFQVZFJDEgPSBgbW91c2VsZWF2ZSR7RVZFTlRfS0VZJDh9YDtcbmNvbnN0IEVWRU5UX0RSQUdfU1RBUlQgPSBgZHJhZ3N0YXJ0JHtFVkVOVF9LRVkkOH1gO1xuY29uc3QgRVZFTlRfTE9BRF9EQVRBX0FQSSQzID0gYGxvYWQke0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RBVEFfQVBJJDUgPSBgY2xpY2ske0VWRU5UX0tFWSQ4fSR7REFUQV9BUElfS0VZJDV9YDtcbmNvbnN0IENMQVNTX05BTUVfQ0FST1VTRUwgPSAnY2Fyb3VzZWwnO1xuY29uc3QgQ0xBU1NfTkFNRV9BQ1RJVkUkMiA9ICdhY3RpdmUnO1xuY29uc3QgQ0xBU1NfTkFNRV9TTElERSA9ICdzbGlkZSc7XG5jb25zdCBDTEFTU19OQU1FX0VORCA9ICdjYXJvdXNlbC1pdGVtLWVuZCc7XG5jb25zdCBDTEFTU19OQU1FX1NUQVJUID0gJ2Nhcm91c2VsLWl0ZW0tc3RhcnQnO1xuY29uc3QgQ0xBU1NfTkFNRV9ORVhUID0gJ2Nhcm91c2VsLWl0ZW0tbmV4dCc7XG5jb25zdCBDTEFTU19OQU1FX1BSRVYgPSAnY2Fyb3VzZWwtaXRlbS1wcmV2JztcbmNvbnN0IFNFTEVDVE9SX0FDVElWRSA9ICcuYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0lURU0gPSAnLmNhcm91c2VsLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfQUNUSVZFX0lURU0gPSBTRUxFQ1RPUl9BQ1RJVkUgKyBTRUxFQ1RPUl9JVEVNO1xuY29uc3QgU0VMRUNUT1JfSVRFTV9JTUcgPSAnLmNhcm91c2VsLWl0ZW0gaW1nJztcbmNvbnN0IFNFTEVDVE9SX0lORElDQVRPUlMgPSAnLmNhcm91c2VsLWluZGljYXRvcnMnO1xuY29uc3QgU0VMRUNUT1JfREFUQV9TTElERSA9ICdbZGF0YS1icy1zbGlkZV0sIFtkYXRhLWJzLXNsaWRlLXRvXSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1JJREUgPSAnW2RhdGEtYnMtcmlkZT1cImNhcm91c2VsXCJdJztcbmNvbnN0IEtFWV9UT19ESVJFQ1RJT04gPSB7XG4gIFtBUlJPV19MRUZUX0tFWSQxXTogRElSRUNUSU9OX1JJR0hULFxuICBbQVJST1dfUklHSFRfS0VZJDFdOiBESVJFQ1RJT05fTEVGVFxufTtcbmNvbnN0IERlZmF1bHQkYiA9IHtcbiAgaW50ZXJ2YWw6IDUwMDAsXG4gIGtleWJvYXJkOiB0cnVlLFxuICBwYXVzZTogJ2hvdmVyJyxcbiAgcmlkZTogZmFsc2UsXG4gIHRvdWNoOiB0cnVlLFxuICB3cmFwOiB0cnVlXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkYiA9IHtcbiAgaW50ZXJ2YWw6ICcobnVtYmVyfGJvb2xlYW4pJyxcbiAgLy8gVE9ETzp2NiByZW1vdmUgYm9vbGVhbiBzdXBwb3J0XG4gIGtleWJvYXJkOiAnYm9vbGVhbicsXG4gIHBhdXNlOiAnKHN0cmluZ3xib29sZWFuKScsXG4gIHJpZGU6ICcoYm9vbGVhbnxzdHJpbmcpJyxcbiAgdG91Y2g6ICdib29sZWFuJyxcbiAgd3JhcDogJ2Jvb2xlYW4nXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQ2Fyb3VzZWwgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9pbnRlcnZhbCA9IG51bGw7XG4gICAgdGhpcy5fYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgdGhpcy5faXNTbGlkaW5nID0gZmFsc2U7XG4gICAgdGhpcy50b3VjaFRpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbnVsbDtcbiAgICB0aGlzLl9pbmRpY2F0b3JzRWxlbWVudCA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfSU5ESUNBVE9SUywgdGhpcy5fZWxlbWVudCk7XG5cbiAgICB0aGlzLl9hZGRFdmVudExpc3RlbmVycygpO1xuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5yaWRlID09PSBDTEFTU19OQU1FX0NBUk9VU0VMKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCRiO1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkYjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSRjO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgbmV4dCgpIHtcbiAgICB0aGlzLl9zbGlkZShPUkRFUl9ORVhUKTtcbiAgfVxuXG4gIG5leHRXaGVuVmlzaWJsZSgpIHtcbiAgICAvLyBGSVhNRSBUT0RPIHVzZSBgZG9jdW1lbnQudmlzaWJpbGl0eVN0YXRlYFxuICAgIC8vIERvbid0IGNhbGwgbmV4dCB3aGVuIHRoZSBwYWdlIGlzbid0IHZpc2libGVcbiAgICAvLyBvciB0aGUgY2Fyb3VzZWwgb3IgaXRzIHBhcmVudCBpc24ndCB2aXNpYmxlXG4gICAgaWYgKCFkb2N1bWVudC5oaWRkZW4gJiYgaXNWaXNpYmxlKHRoaXMuX2VsZW1lbnQpKSB7XG4gICAgICB0aGlzLm5leHQoKTtcbiAgICB9XG4gIH1cblxuICBwcmV2KCkge1xuICAgIHRoaXMuX3NsaWRlKE9SREVSX1BSRVYpO1xuICB9XG5cbiAgcGF1c2UoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgdHJpZ2dlclRyYW5zaXRpb25FbmQodGhpcy5fZWxlbWVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuICB9XG5cbiAgY3ljbGUoKSB7XG4gICAgdGhpcy5fY2xlYXJJbnRlcnZhbCgpO1xuXG4gICAgdGhpcy5fdXBkYXRlSW50ZXJ2YWwoKTtcblxuICAgIHRoaXMuX2ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4gdGhpcy5uZXh0V2hlblZpc2libGUoKSwgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgfVxuXG4gIF9tYXliZUVuYWJsZUN5Y2xlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnJpZGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5faXNTbGlkaW5nKSB7XG4gICAgICBFdmVudEhhbmRsZXIub25lKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NMSUQsICgpID0+IHRoaXMuY3ljbGUoKSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jeWNsZSgpO1xuICB9XG5cbiAgdG8oaW5kZXgpIHtcbiAgICBjb25zdCBpdGVtcyA9IHRoaXMuX2dldEl0ZW1zKCk7XG5cbiAgICBpZiAoaW5kZXggPiBpdGVtcy5sZW5ndGggLSAxIHx8IGluZGV4IDwgMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9pc1NsaWRpbmcpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfU0xJRCwgKCkgPT4gdGhpcy50byhpbmRleCkpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUluZGV4ID0gdGhpcy5fZ2V0SXRlbUluZGV4KHRoaXMuX2dldEFjdGl2ZSgpKTtcblxuICAgIGlmIChhY3RpdmVJbmRleCA9PT0gaW5kZXgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBvcmRlciA9IGluZGV4ID4gYWN0aXZlSW5kZXggPyBPUkRFUl9ORVhUIDogT1JERVJfUFJFVjtcblxuICAgIHRoaXMuX3NsaWRlKG9yZGVyLCBpdGVtc1tpbmRleF0pO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAodGhpcy5fc3dpcGVIZWxwZXIpIHtcbiAgICAgIHRoaXMuX3N3aXBlSGVscGVyLmRpc3Bvc2UoKTtcbiAgICB9XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgY29uZmlnLmRlZmF1bHRJbnRlcnZhbCA9IGNvbmZpZy5pbnRlcnZhbDtcbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIGlmICh0aGlzLl9jb25maWcua2V5Ym9hcmQpIHtcbiAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOJDEsIGV2ZW50ID0+IHRoaXMuX2tleWRvd24oZXZlbnQpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlID09PSAnaG92ZXInKSB7XG4gICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VFTlRFUiQxLCAoKSA9PiB0aGlzLnBhdXNlKCkpO1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFTEVBVkUkMSwgKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvdWNoICYmIFN3aXBlLmlzU3VwcG9ydGVkKCkpIHtcbiAgICAgIHRoaXMuX2FkZFRvdWNoRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBfYWRkVG91Y2hFdmVudExpc3RlbmVycygpIHtcbiAgICBmb3IgKGNvbnN0IGltZyBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0lURU1fSU1HLCB0aGlzLl9lbGVtZW50KSkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9uKGltZywgRVZFTlRfRFJBR19TVEFSVCwgZXZlbnQgPT4gZXZlbnQucHJldmVudERlZmF1bHQoKSk7XG4gICAgfVxuXG4gICAgY29uc3QgZW5kQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fY29uZmlnLnBhdXNlICE9PSAnaG92ZXInKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH0gLy8gSWYgaXQncyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlLCBtb3VzZWVudGVyL2xlYXZlIGFyZSBmaXJlZCBhc1xuICAgICAgLy8gcGFydCBvZiB0aGUgbW91c2UgY29tcGF0aWJpbGl0eSBldmVudHMgb24gZmlyc3QgdGFwIC0gdGhlIGNhcm91c2VsXG4gICAgICAvLyB3b3VsZCBzdG9wIGN5Y2xpbmcgdW50aWwgdXNlciB0YXBwZWQgb3V0IG9mIGl0O1xuICAgICAgLy8gaGVyZSwgd2UgbGlzdGVuIGZvciB0b3VjaGVuZCwgZXhwbGljaXRseSBwYXVzZSB0aGUgY2Fyb3VzZWxcbiAgICAgIC8vIChhcyBpZiBpdCdzIHRoZSBzZWNvbmQgdGltZSB3ZSB0YXAgb24gaXQsIG1vdXNlZW50ZXIgY29tcGF0IGV2ZW50XG4gICAgICAvLyBpcyBOT1QgZmlyZWQpIGFuZCBhZnRlciBhIHRpbWVvdXQgKHRvIGFsbG93IGZvciBtb3VzZSBjb21wYXRpYmlsaXR5XG4gICAgICAvLyBldmVudHMgdG8gZmlyZSkgd2UgZXhwbGljaXRseSByZXN0YXJ0IGN5Y2xpbmdcblxuXG4gICAgICB0aGlzLnBhdXNlKCk7XG5cbiAgICAgIGlmICh0aGlzLnRvdWNoVGltZW91dCkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGhpcy50b3VjaFRpbWVvdXQpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLnRvdWNoVGltZW91dCA9IHNldFRpbWVvdXQoKCkgPT4gdGhpcy5fbWF5YmVFbmFibGVDeWNsZSgpLCBUT1VDSEVWRU5UX0NPTVBBVF9XQUlUICsgdGhpcy5fY29uZmlnLmludGVydmFsKTtcbiAgICB9O1xuXG4gICAgY29uc3Qgc3dpcGVDb25maWcgPSB7XG4gICAgICBsZWZ0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX0xFRlQpKSxcbiAgICAgIHJpZ2h0Q2FsbGJhY2s6ICgpID0+IHRoaXMuX3NsaWRlKHRoaXMuX2RpcmVjdGlvblRvT3JkZXIoRElSRUNUSU9OX1JJR0hUKSksXG4gICAgICBlbmRDYWxsYmFjazogZW5kQ2FsbEJhY2tcbiAgICB9O1xuICAgIHRoaXMuX3N3aXBlSGVscGVyID0gbmV3IFN3aXBlKHRoaXMuX2VsZW1lbnQsIHN3aXBlQ29uZmlnKTtcbiAgfVxuXG4gIF9rZXlkb3duKGV2ZW50KSB7XG4gICAgaWYgKC9pbnB1dHx0ZXh0YXJlYS9pLnRlc3QoZXZlbnQudGFyZ2V0LnRhZ05hbWUpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGlyZWN0aW9uID0gS0VZX1RPX0RJUkVDVElPTltldmVudC5rZXldO1xuXG4gICAgaWYgKGRpcmVjdGlvbikge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgdGhpcy5fc2xpZGUodGhpcy5fZGlyZWN0aW9uVG9PcmRlcihkaXJlY3Rpb24pKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0SXRlbUluZGV4KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gdGhpcy5fZ2V0SXRlbXMoKS5pbmRleE9mKGVsZW1lbnQpO1xuICB9XG5cbiAgX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQoaW5kZXgpIHtcbiAgICBpZiAoIXRoaXMuX2luZGljYXRvcnNFbGVtZW50KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgYWN0aXZlSW5kaWNhdG9yID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9BQ1RJVkUsIHRoaXMuX2luZGljYXRvcnNFbGVtZW50KTtcbiAgICBhY3RpdmVJbmRpY2F0b3IuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQyKTtcbiAgICBhY3RpdmVJbmRpY2F0b3IucmVtb3ZlQXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnKTtcbiAgICBjb25zdCBuZXdBY3RpdmVJbmRpY2F0b3IgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKGBbZGF0YS1icy1zbGlkZS10bz1cIiR7aW5kZXh9XCJdYCwgdGhpcy5faW5kaWNhdG9yc0VsZW1lbnQpO1xuXG4gICAgaWYgKG5ld0FjdGl2ZUluZGljYXRvcikge1xuICAgICAgbmV3QWN0aXZlSW5kaWNhdG9yLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBuZXdBY3RpdmVJbmRpY2F0b3Iuc2V0QXR0cmlidXRlKCdhcmlhLWN1cnJlbnQnLCAndHJ1ZScpO1xuICAgIH1cbiAgfVxuXG4gIF91cGRhdGVJbnRlcnZhbCgpIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5fYWN0aXZlRWxlbWVudCB8fCB0aGlzLl9nZXRBY3RpdmUoKTtcblxuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRJbnRlcnZhbCA9IE51bWJlci5wYXJzZUludChlbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1pbnRlcnZhbCcpLCAxMCk7XG4gICAgdGhpcy5fY29uZmlnLmludGVydmFsID0gZWxlbWVudEludGVydmFsIHx8IHRoaXMuX2NvbmZpZy5kZWZhdWx0SW50ZXJ2YWw7XG4gIH1cblxuICBfc2xpZGUob3JkZXIsIGVsZW1lbnQgPSBudWxsKSB7XG4gICAgaWYgKHRoaXMuX2lzU2xpZGluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLl9nZXRBY3RpdmUoKTtcblxuICAgIGNvbnN0IGlzTmV4dCA9IG9yZGVyID09PSBPUkRFUl9ORVhUO1xuICAgIGNvbnN0IG5leHRFbGVtZW50ID0gZWxlbWVudCB8fCBnZXROZXh0QWN0aXZlRWxlbWVudCh0aGlzLl9nZXRJdGVtcygpLCBhY3RpdmVFbGVtZW50LCBpc05leHQsIHRoaXMuX2NvbmZpZy53cmFwKTtcblxuICAgIGlmIChuZXh0RWxlbWVudCA9PT0gYWN0aXZlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IG5leHRFbGVtZW50SW5kZXggPSB0aGlzLl9nZXRJdGVtSW5kZXgobmV4dEVsZW1lbnQpO1xuXG4gICAgY29uc3QgdHJpZ2dlckV2ZW50ID0gZXZlbnROYW1lID0+IHtcbiAgICAgIHJldHVybiBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBldmVudE5hbWUsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogbmV4dEVsZW1lbnQsXG4gICAgICAgIGRpcmVjdGlvbjogdGhpcy5fb3JkZXJUb0RpcmVjdGlvbihvcmRlciksXG4gICAgICAgIGZyb206IHRoaXMuX2dldEl0ZW1JbmRleChhY3RpdmVFbGVtZW50KSxcbiAgICAgICAgdG86IG5leHRFbGVtZW50SW5kZXhcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICBjb25zdCBzbGlkZUV2ZW50ID0gdHJpZ2dlckV2ZW50KEVWRU5UX1NMSURFKTtcblxuICAgIGlmIChzbGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWFjdGl2ZUVsZW1lbnQgfHwgIW5leHRFbGVtZW50KSB7XG4gICAgICAvLyBTb21lIHdlaXJkbmVzcyBpcyBoYXBwZW5pbmcsIHNvIHdlIGJhaWxcbiAgICAgIC8vIHRvZG86IGNoYW5nZSB0ZXN0cyB0aGF0IHVzZSBlbXB0eSBkaXZzIHRvIGF2b2lkIHRoaXMgY2hlY2tcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0N5Y2xpbmcgPSBCb29sZWFuKHRoaXMuX2ludGVydmFsKTtcbiAgICB0aGlzLnBhdXNlKCk7XG4gICAgdGhpcy5faXNTbGlkaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3NldEFjdGl2ZUluZGljYXRvckVsZW1lbnQobmV4dEVsZW1lbnRJbmRleCk7XG5cbiAgICB0aGlzLl9hY3RpdmVFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgY29uc3QgZGlyZWN0aW9uYWxDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX1NUQVJUIDogQ0xBU1NfTkFNRV9FTkQ7XG4gICAgY29uc3Qgb3JkZXJDbGFzc05hbWUgPSBpc05leHQgPyBDTEFTU19OQU1FX05FWFQgOiBDTEFTU19OQU1FX1BSRVY7XG4gICAgbmV4dEVsZW1lbnQuY2xhc3NMaXN0LmFkZChvcmRlckNsYXNzTmFtZSk7XG4gICAgcmVmbG93KG5leHRFbGVtZW50KTtcbiAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoZGlyZWN0aW9uYWxDbGFzc05hbWUpO1xuXG4gICAgY29uc3QgY29tcGxldGVDYWxsQmFjayA9ICgpID0+IHtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoZGlyZWN0aW9uYWxDbGFzc05hbWUsIG9yZGVyQ2xhc3NOYW1lKTtcbiAgICAgIG5leHRFbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMik7XG4gICAgICBhY3RpdmVFbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUkMiwgb3JkZXJDbGFzc05hbWUsIGRpcmVjdGlvbmFsQ2xhc3NOYW1lKTtcbiAgICAgIHRoaXMuX2lzU2xpZGluZyA9IGZhbHNlO1xuICAgICAgdHJpZ2dlckV2ZW50KEVWRU5UX1NMSUQpO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbEJhY2ssIGFjdGl2ZUVsZW1lbnQsIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG5cbiAgICBpZiAoaXNDeWNsaW5nKSB7XG4gICAgICB0aGlzLmN5Y2xlKCk7XG4gICAgfVxuICB9XG5cbiAgX2lzQW5pbWF0ZWQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0xJREUpO1xuICB9XG5cbiAgX2dldEFjdGl2ZSgpIHtcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9BQ1RJVkVfSVRFTSwgdGhpcy5fZWxlbWVudCk7XG4gIH1cblxuICBfZ2V0SXRlbXMoKSB7XG4gICAgcmV0dXJuIFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfSVRFTSwgdGhpcy5fZWxlbWVudCk7XG4gIH1cblxuICBfY2xlYXJJbnRlcnZhbCgpIHtcbiAgICBpZiAodGhpcy5faW50ZXJ2YWwpIHtcbiAgICAgIGNsZWFySW50ZXJ2YWwodGhpcy5faW50ZXJ2YWwpO1xuICAgICAgdGhpcy5faW50ZXJ2YWwgPSBudWxsO1xuICAgIH1cbiAgfVxuXG4gIF9kaXJlY3Rpb25Ub09yZGVyKGRpcmVjdGlvbikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gZGlyZWN0aW9uID09PSBESVJFQ1RJT05fTEVGVCA/IE9SREVSX1BSRVYgOiBPUkRFUl9ORVhUO1xuICAgIH1cblxuICAgIHJldHVybiBkaXJlY3Rpb24gPT09IERJUkVDVElPTl9MRUZUID8gT1JERVJfTkVYVCA6IE9SREVSX1BSRVY7XG4gIH1cblxuICBfb3JkZXJUb0RpcmVjdGlvbihvcmRlcikge1xuICAgIGlmIChpc1JUTCgpKSB7XG4gICAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fTEVGVCA6IERJUkVDVElPTl9SSUdIVDtcbiAgICB9XG5cbiAgICByZXR1cm4gb3JkZXIgPT09IE9SREVSX1BSRVYgPyBESVJFQ1RJT05fUklHSFQgOiBESVJFQ1RJT05fTEVGVDtcbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgZGF0YS50byhjb25maWcpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnID09PSAnc3RyaW5nJykge1xuICAgICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQ1LCBTRUxFQ1RPUl9EQVRBX1NMSURFLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKTtcblxuICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0NBUk9VU0VMKSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIGNvbnN0IGNhcm91c2VsID0gQ2Fyb3VzZWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBjb25zdCBzbGlkZUluZGV4ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtc2xpZGUtdG8nKTtcblxuICBpZiAoc2xpZGVJbmRleCkge1xuICAgIGNhcm91c2VsLnRvKHNsaWRlSW5kZXgpO1xuXG4gICAgY2Fyb3VzZWwuX21heWJlRW5hYmxlQ3ljbGUoKTtcblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChNYW5pcHVsYXRvci5nZXREYXRhQXR0cmlidXRlKHRoaXMsICdzbGlkZScpID09PSAnbmV4dCcpIHtcbiAgICBjYXJvdXNlbC5uZXh0KCk7XG5cbiAgICBjYXJvdXNlbC5fbWF5YmVFbmFibGVDeWNsZSgpO1xuXG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY2Fyb3VzZWwucHJldigpO1xuXG4gIGNhcm91c2VsLl9tYXliZUVuYWJsZUN5Y2xlKCk7XG59KTtcbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEkkMywgKCkgPT4ge1xuICBjb25zdCBjYXJvdXNlbHMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfUklERSk7XG5cbiAgZm9yIChjb25zdCBjYXJvdXNlbCBvZiBjYXJvdXNlbHMpIHtcbiAgICBDYXJvdXNlbC5nZXRPckNyZWF0ZUluc3RhbmNlKGNhcm91c2VsKTtcbiAgfVxufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihDYXJvdXNlbCk7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogY29sbGFwc2UuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJGIgPSAnY29sbGFwc2UnO1xuY29uc3QgREFUQV9LRVkkNyA9ICdicy5jb2xsYXBzZSc7XG5jb25zdCBFVkVOVF9LRVkkNyA9IGAuJHtEQVRBX0tFWSQ3fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkNCA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVZFTlRfU0hPVyQ2ID0gYHNob3cke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9TSE9XTiQ2ID0gYHNob3duJHtFVkVOVF9LRVkkN31gO1xuY29uc3QgRVZFTlRfSElERSQ2ID0gYGhpZGUke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9ISURERU4kNiA9IGBoaWRkZW4ke0VWRU5UX0tFWSQ3fWA7XG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSQ0ID0gYGNsaWNrJHtFVkVOVF9LRVkkN30ke0RBVEFfQVBJX0tFWSQ0fWA7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNyA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfQ09MTEFQU0UgPSAnY29sbGFwc2UnO1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTSU5HID0gJ2NvbGxhcHNpbmcnO1xuY29uc3QgQ0xBU1NfTkFNRV9DT0xMQVBTRUQgPSAnY29sbGFwc2VkJztcbmNvbnN0IENMQVNTX05BTUVfREVFUEVSX0NISUxEUkVOID0gYDpzY29wZSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfSAuJHtDTEFTU19OQU1FX0NPTExBUFNFfWA7XG5jb25zdCBDTEFTU19OQU1FX0hPUklaT05UQUwgPSAnY29sbGFwc2UtaG9yaXpvbnRhbCc7XG5jb25zdCBXSURUSCA9ICd3aWR0aCc7XG5jb25zdCBIRUlHSFQgPSAnaGVpZ2h0JztcbmNvbnN0IFNFTEVDVE9SX0FDVElWRVMgPSAnLmNvbGxhcHNlLnNob3csIC5jb2xsYXBzZS5jb2xsYXBzaW5nJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQgPSAnW2RhdGEtYnMtdG9nZ2xlPVwiY29sbGFwc2VcIl0nO1xuY29uc3QgRGVmYXVsdCRhID0ge1xuICBwYXJlbnQ6IG51bGwsXG4gIHRvZ2dsZTogdHJ1ZVxufTtcbmNvbnN0IERlZmF1bHRUeXBlJGEgPSB7XG4gIHBhcmVudDogJyhudWxsfGVsZW1lbnQpJyxcbiAgdG9nZ2xlOiAnYm9vbGVhbidcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBDb2xsYXBzZSBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IGZhbHNlO1xuICAgIHRoaXMuX3RyaWdnZXJBcnJheSA9IFtdO1xuICAgIGNvbnN0IHRvZ2dsZUxpc3QgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtIG9mIHRvZ2dsZUxpc3QpIHtcbiAgICAgIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudChlbGVtKTtcbiAgICAgIGNvbnN0IGZpbHRlckVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yKS5maWx0ZXIoZm91bmRFbGVtZW50ID0+IGZvdW5kRWxlbWVudCA9PT0gdGhpcy5fZWxlbWVudCk7XG5cbiAgICAgIGlmIChzZWxlY3RvciAhPT0gbnVsbCAmJiBmaWx0ZXJFbGVtZW50Lmxlbmd0aCkge1xuICAgICAgICB0aGlzLl90cmlnZ2VyQXJyYXkucHVzaChlbGVtKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9pbml0aWFsaXplQ2hpbGRyZW4oKTtcblxuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgdGhpcy5fYWRkQXJpYUFuZENvbGxhcHNlZENsYXNzKHRoaXMuX3RyaWdnZXJBcnJheSwgdGhpcy5faXNTaG93bigpKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnRvZ2dsZSkge1xuICAgICAgdGhpcy50b2dnbGUoKTtcbiAgICB9XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JGE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSRhO1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGI7XG4gIH0gLy8gUHVibGljXG5cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2hvdygpO1xuICAgIH1cbiAgfVxuXG4gIHNob3coKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCB0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgYWN0aXZlQ2hpbGRyZW4gPSBbXTsgLy8gZmluZCBhY3RpdmUgY2hpbGRyZW5cblxuICAgIGlmICh0aGlzLl9jb25maWcucGFyZW50KSB7XG4gICAgICBhY3RpdmVDaGlsZHJlbiA9IHRoaXMuX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihTRUxFQ1RPUl9BQ1RJVkVTKS5maWx0ZXIoZWxlbWVudCA9PiBlbGVtZW50ICE9PSB0aGlzLl9lbGVtZW50KS5tYXAoZWxlbWVudCA9PiBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKGVsZW1lbnQsIHtcbiAgICAgICAgdG9nZ2xlOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cblxuICAgIGlmIChhY3RpdmVDaGlsZHJlbi5sZW5ndGggJiYgYWN0aXZlQ2hpbGRyZW5bMF0uX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHN0YXJ0RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDYpO1xuXG4gICAgaWYgKHN0YXJ0RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGZvciAoY29uc3QgYWN0aXZlSW5zdGFuY2Ugb2YgYWN0aXZlQ2hpbGRyZW4pIHtcbiAgICAgIGFjdGl2ZUluc3RhbmNlLmhpZGUoKTtcbiAgICB9XG5cbiAgICBjb25zdCBkaW1lbnNpb24gPSB0aGlzLl9nZXREaW1lbnNpb24oKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNFKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gMDtcblxuICAgIHRoaXMuX2FkZEFyaWFBbmRDb2xsYXBzZWRDbGFzcyh0aGlzLl90cmlnZ2VyQXJyYXksIHRydWUpO1xuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSwgQ0xBU1NfTkFNRV9TSE9XJDcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSAnJztcbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1dOJDYpO1xuICAgIH07XG5cbiAgICBjb25zdCBjYXBpdGFsaXplZERpbWVuc2lvbiA9IGRpbWVuc2lvblswXS50b1VwcGVyQ2FzZSgpICsgZGltZW5zaW9uLnNsaWNlKDEpO1xuICAgIGNvbnN0IHNjcm9sbFNpemUgPSBgc2Nyb2xsJHtjYXBpdGFsaXplZERpbWVuc2lvbn1gO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50W3Njcm9sbFNpemVdfXB4YDtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzVHJhbnNpdGlvbmluZyB8fCAhdGhpcy5faXNTaG93bigpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgc3RhcnRFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNik7XG5cbiAgICBpZiAoc3RhcnRFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZGltZW5zaW9uID0gdGhpcy5fZ2V0RGltZW5zaW9uKCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlW2RpbWVuc2lvbl0gPSBgJHt0aGlzLl9lbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpW2RpbWVuc2lvbl19cHhgO1xuICAgIHJlZmxvdyh0aGlzLl9lbGVtZW50KTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQ09MTEFQU0UsIENMQVNTX05BTUVfU0hPVyQ3KTtcblxuICAgIGZvciAoY29uc3QgdHJpZ2dlciBvZiB0aGlzLl90cmlnZ2VyQXJyYXkpIHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKHRyaWdnZXIpO1xuXG4gICAgICBpZiAoZWxlbWVudCAmJiAhdGhpcy5faXNTaG93bihlbGVtZW50KSkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW3RyaWdnZXJdLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0NPTExBUFNJTkcpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9DT0xMQVBTRSk7XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ2KTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZVtkaW1lbnNpb25dID0gJyc7XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0cnVlKTtcbiAgfVxuXG4gIF9pc1Nob3duKGVsZW1lbnQgPSB0aGlzLl9lbGVtZW50KSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyQ3KTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfY29uZmlnQWZ0ZXJNZXJnZShjb25maWcpIHtcbiAgICBjb25maWcudG9nZ2xlID0gQm9vbGVhbihjb25maWcudG9nZ2xlKTsgLy8gQ29lcmNlIHN0cmluZyB2YWx1ZXNcblxuICAgIGNvbmZpZy5wYXJlbnQgPSBnZXRFbGVtZW50KGNvbmZpZy5wYXJlbnQpO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfZ2V0RGltZW5zaW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0hPUklaT05UQUwpID8gV0lEVEggOiBIRUlHSFQ7XG4gIH1cblxuICBfaW5pdGlhbGl6ZUNoaWxkcmVuKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLnBhcmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNoaWxkcmVuID0gdGhpcy5fZ2V0Rmlyc3RMZXZlbENoaWxkcmVuKFNFTEVDVE9SX0RBVEFfVE9HR0xFJDQpO1xuXG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGNoaWxkcmVuKSB7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IoZWxlbWVudCk7XG5cbiAgICAgIGlmIChzZWxlY3RlZCkge1xuICAgICAgICB0aGlzLl9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3MoW2VsZW1lbnRdLCB0aGlzLl9pc1Nob3duKHNlbGVjdGVkKSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgX2dldEZpcnN0TGV2ZWxDaGlsZHJlbihzZWxlY3Rvcikge1xuICAgIGNvbnN0IGNoaWxkcmVuID0gU2VsZWN0b3JFbmdpbmUuZmluZChDTEFTU19OQU1FX0RFRVBFUl9DSElMRFJFTiwgdGhpcy5fY29uZmlnLnBhcmVudCk7IC8vIHJlbW92ZSBjaGlsZHJlbiBpZiBncmVhdGVyIGRlcHRoXG5cbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChzZWxlY3RvciwgdGhpcy5fY29uZmlnLnBhcmVudCkuZmlsdGVyKGVsZW1lbnQgPT4gIWNoaWxkcmVuLmluY2x1ZGVzKGVsZW1lbnQpKTtcbiAgfVxuXG4gIF9hZGRBcmlhQW5kQ29sbGFwc2VkQ2xhc3ModHJpZ2dlckFycmF5LCBpc09wZW4pIHtcbiAgICBpZiAoIXRyaWdnZXJBcnJheS5sZW5ndGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgdHJpZ2dlckFycmF5KSB7XG4gICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoQ0xBU1NfTkFNRV9DT0xMQVBTRUQsICFpc09wZW4pO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCBpc09wZW4pO1xuICAgIH1cbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgY29uc3QgX2NvbmZpZyA9IHt9O1xuXG4gICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnICYmIC9zaG93fGhpZGUvLnRlc3QoY29uZmlnKSkge1xuICAgICAgX2NvbmZpZy50b2dnbGUgPSBmYWxzZTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBDb2xsYXBzZS5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIF9jb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkNCwgU0VMRUNUT1JfREFUQV9UT0dHTEUkNCwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIC8vIHByZXZlbnREZWZhdWx0IG9ubHkgZm9yIDxhPiBlbGVtZW50cyAod2hpY2ggY2hhbmdlIHRoZSBVUkwpIG5vdCBpbnNpZGUgdGhlIGNvbGxhcHNpYmxlIGVsZW1lbnRcbiAgaWYgKGV2ZW50LnRhcmdldC50YWdOYW1lID09PSAnQScgfHwgZXZlbnQuZGVsZWdhdGVUYXJnZXQgJiYgZXZlbnQuZGVsZWdhdGVUYXJnZXQudGFnTmFtZSA9PT0gJ0EnKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdG9yID0gZ2V0U2VsZWN0b3JGcm9tRWxlbWVudCh0aGlzKTtcbiAgY29uc3Qgc2VsZWN0b3JFbGVtZW50cyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoc2VsZWN0b3IpO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBzZWxlY3RvckVsZW1lbnRzKSB7XG4gICAgQ29sbGFwc2UuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50LCB7XG4gICAgICB0b2dnbGU6IGZhbHNlXG4gICAgfSkudG9nZ2xlKCk7XG4gIH1cbn0pO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oQ29sbGFwc2UpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IGRyb3Bkb3duLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSRhID0gJ2Ryb3Bkb3duJztcbmNvbnN0IERBVEFfS0VZJDYgPSAnYnMuZHJvcGRvd24nO1xuY29uc3QgRVZFTlRfS0VZJDYgPSBgLiR7REFUQV9LRVkkNn1gO1xuY29uc3QgREFUQV9BUElfS0VZJDMgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVTQ0FQRV9LRVkkMiA9ICdFc2NhcGUnO1xuY29uc3QgVEFCX0tFWSQxID0gJ1RhYic7XG5jb25zdCBBUlJPV19VUF9LRVkkMSA9ICdBcnJvd1VwJztcbmNvbnN0IEFSUk9XX0RPV05fS0VZJDEgPSAnQXJyb3dEb3duJztcbmNvbnN0IFJJR0hUX01PVVNFX0JVVFRPTiA9IDI7IC8vIE1vdXNlRXZlbnQuYnV0dG9uIHZhbHVlIGZvciB0aGUgc2Vjb25kYXJ5IGJ1dHRvbiwgdXN1YWxseSB0aGUgcmlnaHQgYnV0dG9uXG5cbmNvbnN0IEVWRU5UX0hJREUkNSA9IGBoaWRlJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfSElEREVOJDUgPSBgaGlkZGVuJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfU0hPVyQ1ID0gYHNob3cke0VWRU5UX0tFWSQ2fWA7XG5jb25zdCBFVkVOVF9TSE9XTiQ1ID0gYHNob3duJHtFVkVOVF9LRVkkNn1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMyA9IGBjbGljayR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9EQVRBX0FQSSA9IGBrZXlkb3duJHtFVkVOVF9LRVkkNn0ke0RBVEFfQVBJX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9LRVlVUF9EQVRBX0FQSSA9IGBrZXl1cCR7RVZFTlRfS0VZJDZ9JHtEQVRBX0FQSV9LRVkkM31gO1xuY29uc3QgQ0xBU1NfTkFNRV9TSE9XJDYgPSAnc2hvdyc7XG5jb25zdCBDTEFTU19OQU1FX0RST1BVUCA9ICdkcm9wdXAnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QRU5EID0gJ2Ryb3BlbmQnO1xuY29uc3QgQ0xBU1NfTkFNRV9EUk9QU1RBUlQgPSAnZHJvcHN0YXJ0JztcbmNvbnN0IENMQVNTX05BTUVfRFJPUFVQX0NFTlRFUiA9ICdkcm9wdXAtY2VudGVyJztcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSID0gJ2Ryb3Bkb3duLWNlbnRlcic7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzID0gJ1tkYXRhLWJzLXRvZ2dsZT1cImRyb3Bkb3duXCJdOm5vdCguZGlzYWJsZWQpOm5vdCg6ZGlzYWJsZWQpJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOID0gYCR7U0VMRUNUT1JfREFUQV9UT0dHTEUkM30uJHtDTEFTU19OQU1FX1NIT1ckNn1gO1xuY29uc3QgU0VMRUNUT1JfTUVOVSA9ICcuZHJvcGRvd24tbWVudSc7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVIgPSAnLm5hdmJhcic7XG5jb25zdCBTRUxFQ1RPUl9OQVZCQVJfTkFWID0gJy5uYXZiYXItbmF2JztcbmNvbnN0IFNFTEVDVE9SX1ZJU0lCTEVfSVRFTVMgPSAnLmRyb3Bkb3duLW1lbnUgLmRyb3Bkb3duLWl0ZW06bm90KC5kaXNhYmxlZCk6bm90KDpkaXNhYmxlZCknO1xuY29uc3QgUExBQ0VNRU5UX1RPUCA9IGlzUlRMKCkgPyAndG9wLWVuZCcgOiAndG9wLXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BFTkQgPSBpc1JUTCgpID8gJ3RvcC1zdGFydCcgOiAndG9wLWVuZCc7XG5jb25zdCBQTEFDRU1FTlRfQk9UVE9NID0gaXNSVEwoKSA/ICdib3R0b20tZW5kJyA6ICdib3R0b20tc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0JPVFRPTUVORCA9IGlzUlRMKCkgPyAnYm90dG9tLXN0YXJ0JyA6ICdib3R0b20tZW5kJztcbmNvbnN0IFBMQUNFTUVOVF9SSUdIVCA9IGlzUlRMKCkgPyAnbGVmdC1zdGFydCcgOiAncmlnaHQtc3RhcnQnO1xuY29uc3QgUExBQ0VNRU5UX0xFRlQgPSBpc1JUTCgpID8gJ3JpZ2h0LXN0YXJ0JyA6ICdsZWZ0LXN0YXJ0JztcbmNvbnN0IFBMQUNFTUVOVF9UT1BDRU5URVIgPSAndG9wJztcbmNvbnN0IFBMQUNFTUVOVF9CT1RUT01DRU5URVIgPSAnYm90dG9tJztcbmNvbnN0IERlZmF1bHQkOSA9IHtcbiAgYXV0b0Nsb3NlOiB0cnVlLFxuICBib3VuZGFyeTogJ2NsaXBwaW5nUGFyZW50cycsXG4gIGRpc3BsYXk6ICdkeW5hbWljJyxcbiAgb2Zmc2V0OiBbMCwgMl0sXG4gIHBvcHBlckNvbmZpZzogbnVsbCxcbiAgcmVmZXJlbmNlOiAndG9nZ2xlJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDkgPSB7XG4gIGF1dG9DbG9zZTogJyhib29sZWFufHN0cmluZyknLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBkaXNwbGF5OiAnc3RyaW5nJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwb3BwZXJDb25maWc6ICcobnVsbHxvYmplY3R8ZnVuY3Rpb24pJyxcbiAgcmVmZXJlbmNlOiAnKHN0cmluZ3xlbGVtZW50fG9iamVjdCknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgRHJvcGRvd24gZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTtcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIHRoaXMuX3BhcmVudCA9IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZTsgLy8gZHJvcGRvd24gd3JhcHBlclxuICAgIC8vIHRvZG86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMi9mb3Jtcy9pbnB1dC1ncm91cC9cblxuICAgIHRoaXMuX21lbnUgPSBTZWxlY3RvckVuZ2luZS5uZXh0KHRoaXMuX2VsZW1lbnQsIFNFTEVDVE9SX01FTlUpWzBdIHx8IFNlbGVjdG9yRW5naW5lLnByZXYodGhpcy5fZWxlbWVudCwgU0VMRUNUT1JfTUVOVSlbMF0gfHwgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9NRU5VLCB0aGlzLl9wYXJlbnQpO1xuICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKCk7XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ5O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJGE7XG4gIH0gLy8gUHVibGljXG5cblxuICB0b2dnbGUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2hvd24oKSA/IHRoaXMuaGlkZSgpIDogdGhpcy5zaG93KCk7XG4gIH1cblxuICBzaG93KCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8IHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiB0aGlzLl9lbGVtZW50XG4gICAgfTtcbiAgICBjb25zdCBzaG93RXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XJDUsIHJlbGF0ZWRUYXJnZXQpO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fY3JlYXRlUG9wcGVyKCk7IC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG5cblxuICAgIGlmICgnb250b3VjaHN0YXJ0JyBpbiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgIXRoaXMuX3BhcmVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUl9OQVYpKSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5mb2N1cygpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCB0cnVlKTtcblxuICAgIHRoaXMuX21lbnUuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckNik7XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuXG4gICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPV04kNSwgcmVsYXRlZFRhcmdldCk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmIChpc0Rpc2FibGVkKHRoaXMuX2VsZW1lbnQpIHx8ICF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCByZWxhdGVkVGFyZ2V0ID0ge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGhpcy5fZWxlbWVudFxuICAgIH07XG5cbiAgICB0aGlzLl9jb21wbGV0ZUhpZGUocmVsYXRlZFRhcmdldCk7XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGlmICh0aGlzLl9wb3BwZXIpIHtcbiAgICAgIHRoaXMuX3BvcHBlci5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgdXBkYXRlKCkge1xuICAgIHRoaXMuX2luTmF2YmFyID0gdGhpcy5fZGV0ZWN0TmF2YmFyKCk7XG5cbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIudXBkYXRlKCk7XG4gICAgfVxuICB9IC8vIFByaXZhdGVcblxuXG4gIF9jb21wbGV0ZUhpZGUocmVsYXRlZFRhcmdldCkge1xuICAgIGNvbnN0IGhpZGVFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJREUkNSwgcmVsYXRlZFRhcmdldCk7XG5cbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSByZW1vdmUgdGhlIGV4dHJhXG4gICAgLy8gZW1wdHkgbW91c2VvdmVyIGxpc3RlbmVycyB3ZSBhZGRlZCBmb3IgaU9TIHN1cHBvcnRcblxuXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAodGhpcy5fcG9wcGVyKSB7XG4gICAgICB0aGlzLl9wb3BwZXIuZGVzdHJveSgpO1xuICAgIH1cblxuICAgIHRoaXMuX21lbnUuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1ckNik7XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDYpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcblxuICAgIE1hbmlwdWxhdG9yLnJlbW92ZURhdGFBdHRyaWJ1dGUodGhpcy5fbWVudSwgJ3BvcHBlcicpO1xuICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0hJRERFTiQ1LCByZWxhdGVkVGFyZ2V0KTtcbiAgfVxuXG4gIF9nZXRDb25maWcoY29uZmlnKSB7XG4gICAgY29uZmlnID0gc3VwZXIuX2dldENvbmZpZyhjb25maWcpO1xuXG4gICAgaWYgKHR5cGVvZiBjb25maWcucmVmZXJlbmNlID09PSAnb2JqZWN0JyAmJiAhaXNFbGVtZW50KGNvbmZpZy5yZWZlcmVuY2UpICYmIHR5cGVvZiBjb25maWcucmVmZXJlbmNlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgLy8gUG9wcGVyIHZpcnR1YWwgZWxlbWVudHMgcmVxdWlyZSBhIGdldEJvdW5kaW5nQ2xpZW50UmVjdCBtZXRob2RcbiAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYCR7TkFNRSRhLnRvVXBwZXJDYXNlKCl9OiBPcHRpb24gXCJyZWZlcmVuY2VcIiBwcm92aWRlZCB0eXBlIFwib2JqZWN0XCIgd2l0aG91dCBhIHJlcXVpcmVkIFwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCIgbWV0aG9kLmApO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfY3JlYXRlUG9wcGVyKCkge1xuICAgIGlmICh0eXBlb2YgUG9wcGVyID09PSAndW5kZWZpbmVkJykge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQm9vdHN0cmFwXFwncyBkcm9wZG93bnMgcmVxdWlyZSBQb3BwZXIgKGh0dHBzOi8vcG9wcGVyLmpzLm9yZyknKTtcbiAgICB9XG5cbiAgICBsZXQgcmVmZXJlbmNlRWxlbWVudCA9IHRoaXMuX2VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLnJlZmVyZW5jZSA9PT0gJ3BhcmVudCcpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSB0aGlzLl9wYXJlbnQ7XG4gICAgfSBlbHNlIGlmIChpc0VsZW1lbnQodGhpcy5fY29uZmlnLnJlZmVyZW5jZSkpIHtcbiAgICAgIHJlZmVyZW5jZUVsZW1lbnQgPSBnZXRFbGVtZW50KHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UpO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIHRoaXMuX2NvbmZpZy5yZWZlcmVuY2UgPT09ICdvYmplY3QnKSB7XG4gICAgICByZWZlcmVuY2VFbGVtZW50ID0gdGhpcy5fY29uZmlnLnJlZmVyZW5jZTtcbiAgICB9XG5cbiAgICBjb25zdCBwb3BwZXJDb25maWcgPSB0aGlzLl9nZXRQb3BwZXJDb25maWcoKTtcblxuICAgIHRoaXMuX3BvcHBlciA9IFBvcHBlci5jcmVhdGVQb3BwZXIocmVmZXJlbmNlRWxlbWVudCwgdGhpcy5fbWVudSwgcG9wcGVyQ29uZmlnKTtcbiAgfVxuXG4gIF9pc1Nob3duKCkge1xuICAgIHJldHVybiB0aGlzLl9tZW51LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NIT1ckNik7XG4gIH1cblxuICBfZ2V0UGxhY2VtZW50KCkge1xuICAgIGNvbnN0IHBhcmVudERyb3Bkb3duID0gdGhpcy5fcGFyZW50O1xuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BFTkQpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX1JJR0hUO1xuICAgIH1cblxuICAgIGlmIChwYXJlbnREcm9wZG93bi5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9EUk9QU1RBUlQpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX0xFRlQ7XG4gICAgfVxuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BVUF9DRU5URVIpKSB7XG4gICAgICByZXR1cm4gUExBQ0VNRU5UX1RPUENFTlRFUjtcbiAgICB9XG5cbiAgICBpZiAocGFyZW50RHJvcGRvd24uY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfRFJPUERPV05fQ0VOVEVSKSkge1xuICAgICAgcmV0dXJuIFBMQUNFTUVOVF9CT1RUT01DRU5URVI7XG4gICAgfSAvLyBXZSBuZWVkIHRvIHRyaW0gdGhlIHZhbHVlIGJlY2F1c2UgY3VzdG9tIHByb3BlcnRpZXMgY2FuIGFsc28gaW5jbHVkZSBzcGFjZXNcblxuXG4gICAgY29uc3QgaXNFbmQgPSBnZXRDb21wdXRlZFN0eWxlKHRoaXMuX21lbnUpLmdldFByb3BlcnR5VmFsdWUoJy0tYnMtcG9zaXRpb24nKS50cmltKCkgPT09ICdlbmQnO1xuXG4gICAgaWYgKHBhcmVudERyb3Bkb3duLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BVUCkpIHtcbiAgICAgIHJldHVybiBpc0VuZCA/IFBMQUNFTUVOVF9UT1BFTkQgOiBQTEFDRU1FTlRfVE9QO1xuICAgIH1cblxuICAgIHJldHVybiBpc0VuZCA/IFBMQUNFTUVOVF9CT1RUT01FTkQgOiBQTEFDRU1FTlRfQk9UVE9NO1xuICB9XG5cbiAgX2RldGVjdE5hdmJhcigpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX05BVkJBUikgIT09IG51bGw7XG4gIH1cblxuICBfZ2V0T2Zmc2V0KCkge1xuICAgIGNvbnN0IHtcbiAgICAgIG9mZnNldFxuICAgIH0gPSB0aGlzLl9jb25maWc7XG5cbiAgICBpZiAodHlwZW9mIG9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHJldHVybiBvZmZzZXQuc3BsaXQoJywnKS5tYXAodmFsdWUgPT4gTnVtYmVyLnBhcnNlSW50KHZhbHVlLCAxMCkpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gcG9wcGVyRGF0YSA9PiBvZmZzZXQocG9wcGVyRGF0YSwgdGhpcy5fZWxlbWVudCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9mZnNldDtcbiAgfVxuXG4gIF9nZXRQb3BwZXJDb25maWcoKSB7XG4gICAgY29uc3QgZGVmYXVsdEJzUG9wcGVyQ29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50OiB0aGlzLl9nZXRQbGFjZW1lbnQoKSxcbiAgICAgIG1vZGlmaWVyczogW3tcbiAgICAgICAgbmFtZTogJ3ByZXZlbnRPdmVyZmxvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBib3VuZGFyeTogdGhpcy5fY29uZmlnLmJvdW5kYXJ5XG4gICAgICAgIH1cbiAgICAgIH0sIHtcbiAgICAgICAgbmFtZTogJ29mZnNldCcsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBvZmZzZXQ6IHRoaXMuX2dldE9mZnNldCgpXG4gICAgICAgIH1cbiAgICAgIH1dXG4gICAgfTsgLy8gRGlzYWJsZSBQb3BwZXIgaWYgd2UgaGF2ZSBhIHN0YXRpYyBkaXNwbGF5IG9yIERyb3Bkb3duIGlzIGluIE5hdmJhclxuXG4gICAgaWYgKHRoaXMuX2luTmF2YmFyIHx8IHRoaXMuX2NvbmZpZy5kaXNwbGF5ID09PSAnc3RhdGljJykge1xuICAgICAgTWFuaXB1bGF0b3Iuc2V0RGF0YUF0dHJpYnV0ZSh0aGlzLl9tZW51LCAncG9wcGVyJywgJ3N0YXRpYycpOyAvLyB0b2RvOnY2IHJlbW92ZVxuXG4gICAgICBkZWZhdWx0QnNQb3BwZXJDb25maWcubW9kaWZpZXJzID0gW3tcbiAgICAgICAgbmFtZTogJ2FwcGx5U3R5bGVzJyxcbiAgICAgICAgZW5hYmxlZDogZmFsc2VcbiAgICAgIH1dO1xuICAgIH1cblxuICAgIHJldHVybiB7IC4uLmRlZmF1bHRCc1BvcHBlckNvbmZpZyxcbiAgICAgIC4uLih0eXBlb2YgdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyA9PT0gJ2Z1bmN0aW9uJyA/IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcoZGVmYXVsdEJzUG9wcGVyQ29uZmlnKSA6IHRoaXMuX2NvbmZpZy5wb3BwZXJDb25maWcpXG4gICAgfTtcbiAgfVxuXG4gIF9zZWxlY3RNZW51SXRlbSh7XG4gICAga2V5LFxuICAgIHRhcmdldFxuICB9KSB7XG4gICAgY29uc3QgaXRlbXMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX1ZJU0lCTEVfSVRFTVMsIHRoaXMuX21lbnUpLmZpbHRlcihlbGVtZW50ID0+IGlzVmlzaWJsZShlbGVtZW50KSk7XG5cbiAgICBpZiAoIWl0ZW1zLmxlbmd0aCkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gaWYgdGFyZ2V0IGlzbid0IGluY2x1ZGVkIGluIGl0ZW1zIChlLmcuIHdoZW4gZXhwYW5kaW5nIHRoZSBkcm9wZG93bilcbiAgICAvLyBhbGxvdyBjeWNsaW5nIHRvIGdldCB0aGUgbGFzdCBpdGVtIGluIGNhc2Uga2V5IGVxdWFscyBBUlJPV19VUF9LRVlcblxuXG4gICAgZ2V0TmV4dEFjdGl2ZUVsZW1lbnQoaXRlbXMsIHRhcmdldCwga2V5ID09PSBBUlJPV19ET1dOX0tFWSQxLCAhaXRlbXMuaW5jbHVkZXModGFyZ2V0KSkuZm9jdXMoKTtcbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgY2xlYXJNZW51cyhldmVudCkge1xuICAgIGlmIChldmVudC5idXR0b24gPT09IFJJR0hUX01PVVNFX0JVVFRPTiB8fCBldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LmtleSAhPT0gVEFCX0tFWSQxKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3Qgb3BlblRvZ2dsZXMgPSBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX1NIT1dOKTtcblxuICAgIGZvciAoY29uc3QgdG9nZ2xlIG9mIG9wZW5Ub2dnbGVzKSB7XG4gICAgICBjb25zdCBjb250ZXh0ID0gRHJvcGRvd24uZ2V0SW5zdGFuY2UodG9nZ2xlKTtcblxuICAgICAgaWYgKCFjb250ZXh0IHx8IGNvbnRleHQuX2NvbmZpZy5hdXRvQ2xvc2UgPT09IGZhbHNlKSB7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBjb25zdCBjb21wb3NlZFBhdGggPSBldmVudC5jb21wb3NlZFBhdGgoKTtcbiAgICAgIGNvbnN0IGlzTWVudVRhcmdldCA9IGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhjb250ZXh0Ll9tZW51KTtcblxuICAgICAgaWYgKGNvbXBvc2VkUGF0aC5pbmNsdWRlcyhjb250ZXh0Ll9lbGVtZW50KSB8fCBjb250ZXh0Ll9jb25maWcuYXV0b0Nsb3NlID09PSAnaW5zaWRlJyAmJiAhaXNNZW51VGFyZ2V0IHx8IGNvbnRleHQuX2NvbmZpZy5hdXRvQ2xvc2UgPT09ICdvdXRzaWRlJyAmJiBpc01lbnVUYXJnZXQpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIFRhYiBuYXZpZ2F0aW9uIHRocm91Z2ggdGhlIGRyb3Bkb3duIG1lbnUgb3IgZXZlbnRzIGZyb20gY29udGFpbmVkIGlucHV0cyBzaG91bGRuJ3QgY2xvc2UgdGhlIG1lbnVcblxuXG4gICAgICBpZiAoY29udGV4dC5fbWVudS5jb250YWlucyhldmVudC50YXJnZXQpICYmIChldmVudC50eXBlID09PSAna2V5dXAnICYmIGV2ZW50LmtleSA9PT0gVEFCX0tFWSQxIHx8IC9pbnB1dHxzZWxlY3R8b3B0aW9ufHRleHRhcmVhfGZvcm0vaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQ6IGNvbnRleHQuX2VsZW1lbnRcbiAgICAgIH07XG5cbiAgICAgIGlmIChldmVudC50eXBlID09PSAnY2xpY2snKSB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXQuY2xpY2tFdmVudCA9IGV2ZW50O1xuICAgICAgfVxuXG4gICAgICBjb250ZXh0Ll9jb21wbGV0ZUhpZGUocmVsYXRlZFRhcmdldCk7XG4gICAgfVxuICB9XG5cbiAgc3RhdGljIGRhdGFBcGlLZXlkb3duSGFuZGxlcihldmVudCkge1xuICAgIC8vIElmIG5vdCBhbiBVUCB8IERPV04gfCBFU0NBUEUga2V5ID0+IG5vdCBhIGRyb3Bkb3duIGNvbW1hbmRcbiAgICAvLyBJZiBpbnB1dC90ZXh0YXJlYSAmJiBpZiBrZXkgaXMgb3RoZXIgdGhhbiBFU0NBUEUgPT4gbm90IGEgZHJvcGRvd24gY29tbWFuZFxuICAgIGNvbnN0IGlzSW5wdXQgPSAvaW5wdXR8dGV4dGFyZWEvaS50ZXN0KGV2ZW50LnRhcmdldC50YWdOYW1lKTtcbiAgICBjb25zdCBpc0VzY2FwZUV2ZW50ID0gZXZlbnQua2V5ID09PSBFU0NBUEVfS0VZJDI7XG4gICAgY29uc3QgaXNVcE9yRG93bkV2ZW50ID0gW0FSUk9XX1VQX0tFWSQxLCBBUlJPV19ET1dOX0tFWSQxXS5pbmNsdWRlcyhldmVudC5rZXkpO1xuXG4gICAgaWYgKCFpc1VwT3JEb3duRXZlbnQgJiYgIWlzRXNjYXBlRXZlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoaXNJbnB1dCAmJiAhaXNFc2NhcGVFdmVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7IC8vIHRvZG86IHY2IHJldmVydCAjMzcwMTEgJiBjaGFuZ2UgbWFya3VwIGh0dHBzOi8vZ2V0Ym9vdHN0cmFwLmNvbS9kb2NzLzUuMi9mb3Jtcy9pbnB1dC1ncm91cC9cblxuICAgIGNvbnN0IGdldFRvZ2dsZUJ1dHRvbiA9IHRoaXMubWF0Y2hlcyhTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzKSA/IHRoaXMgOiBTZWxlY3RvckVuZ2luZS5wcmV2KHRoaXMsIFNFTEVDVE9SX0RBVEFfVE9HR0xFJDMpWzBdIHx8IFNlbGVjdG9yRW5naW5lLm5leHQodGhpcywgU0VMRUNUT1JfREFUQV9UT0dHTEUkMylbMF0gfHwgU2VsZWN0b3JFbmdpbmUuZmluZE9uZShTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzLCBldmVudC5kZWxlZ2F0ZVRhcmdldC5wYXJlbnROb2RlKTtcbiAgICBjb25zdCBpbnN0YW5jZSA9IERyb3Bkb3duLmdldE9yQ3JlYXRlSW5zdGFuY2UoZ2V0VG9nZ2xlQnV0dG9uKTtcblxuICAgIGlmIChpc1VwT3JEb3duRXZlbnQpIHtcbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgaW5zdGFuY2Uuc2hvdygpO1xuXG4gICAgICBpbnN0YW5jZS5fc2VsZWN0TWVudUl0ZW0oZXZlbnQpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKGluc3RhbmNlLl9pc1Nob3duKCkpIHtcbiAgICAgIC8vIGVsc2UgaXMgZXNjYXBlIGFuZCB3ZSBjaGVjayBpZiBpdCBpcyBzaG93blxuICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBpbnN0YW5jZS5oaWRlKCk7XG4gICAgICBnZXRUb2dnbGVCdXR0b24uZm9jdXMoKTtcbiAgICB9XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9LRVlET1dOX0RBVEFfQVBJLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzLCBEcm9wZG93bi5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9LRVlET1dOX0RBVEFfQVBJLCBTRUxFQ1RPUl9NRU5VLCBEcm9wZG93bi5kYXRhQXBpS2V5ZG93bkhhbmRsZXIpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQzLCBEcm9wZG93bi5jbGVhck1lbnVzKTtcbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZVVBfREFUQV9BUEksIERyb3Bkb3duLmNsZWFyTWVudXMpO1xuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQzLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQzLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgRHJvcGRvd24uZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzKS50b2dnbGUoKTtcbn0pO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oRHJvcGRvd24pO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvc2Nyb2xsQmFyLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgU0VMRUNUT1JfRklYRURfQ09OVEVOVCA9ICcuZml4ZWQtdG9wLCAuZml4ZWQtYm90dG9tLCAuaXMtZml4ZWQsIC5zdGlja3ktdG9wJztcbmNvbnN0IFNFTEVDVE9SX1NUSUNLWV9DT05URU5UID0gJy5zdGlja3ktdG9wJztcbmNvbnN0IFBST1BFUlRZX1BBRERJTkcgPSAncGFkZGluZy1yaWdodCc7XG5jb25zdCBQUk9QRVJUWV9NQVJHSU4gPSAnbWFyZ2luLXJpZ2h0Jztcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFNjcm9sbEJhckhlbHBlciB7XG4gIGNvbnN0cnVjdG9yKCkge1xuICAgIHRoaXMuX2VsZW1lbnQgPSBkb2N1bWVudC5ib2R5O1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgZ2V0V2lkdGgoKSB7XG4gICAgLy8gaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9pbm5lcldpZHRoI3VzYWdlX25vdGVzXG4gICAgY29uc3QgZG9jdW1lbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gTWF0aC5hYnMod2luZG93LmlubmVyV2lkdGggLSBkb2N1bWVudFdpZHRoKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgY29uc3Qgd2lkdGggPSB0aGlzLmdldFdpZHRoKCk7XG5cbiAgICB0aGlzLl9kaXNhYmxlT3ZlckZsb3coKTsgLy8gZ2l2ZSBwYWRkaW5nIHRvIGVsZW1lbnQgdG8gYmFsYW5jZSB0aGUgaGlkZGVuIHNjcm9sbGJhciB3aWR0aFxuXG5cbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCBQUk9QRVJUWV9QQURESU5HLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlICsgd2lkdGgpOyAvLyB0cmljazogV2UgYWRqdXN0IHBvc2l0aXZlIHBhZGRpbmdSaWdodCBhbmQgbmVnYXRpdmUgbWFyZ2luUmlnaHQgdG8gc3RpY2t5LXRvcCBlbGVtZW50cyB0byBrZWVwIHNob3dpbmcgZnVsbHdpZHRoXG5cblxuICAgIHRoaXMuX3NldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQsIFBST1BFUlRZX1BBRERJTkcsIGNhbGN1bGF0ZWRWYWx1ZSA9PiBjYWxjdWxhdGVkVmFsdWUgKyB3aWR0aCk7XG5cbiAgICB0aGlzLl9zZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCwgUFJPUEVSVFlfTUFSR0lOLCBjYWxjdWxhdGVkVmFsdWUgPT4gY2FsY3VsYXRlZFZhbHVlIC0gd2lkdGgpO1xuICB9XG5cbiAgcmVzZXQoKSB7XG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyh0aGlzLl9lbGVtZW50LCAnb3ZlcmZsb3cnKTtcblxuICAgIHRoaXMuX3Jlc2V0RWxlbWVudEF0dHJpYnV0ZXModGhpcy5fZWxlbWVudCwgUFJPUEVSVFlfUEFERElORyk7XG5cbiAgICB0aGlzLl9yZXNldEVsZW1lbnRBdHRyaWJ1dGVzKFNFTEVDVE9SX0ZJWEVEX0NPTlRFTlQsIFBST1BFUlRZX1BBRERJTkcpO1xuXG4gICAgdGhpcy5fcmVzZXRFbGVtZW50QXR0cmlidXRlcyhTRUxFQ1RPUl9TVElDS1lfQ09OVEVOVCwgUFJPUEVSVFlfTUFSR0lOKTtcbiAgfVxuXG4gIGlzT3ZlcmZsb3dpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMuZ2V0V2lkdGgoKSA+IDA7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2Rpc2FibGVPdmVyRmxvdygpIHtcbiAgICB0aGlzLl9zYXZlSW5pdGlhbEF0dHJpYnV0ZSh0aGlzLl9lbGVtZW50LCAnb3ZlcmZsb3cnKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3cgPSAnaGlkZGVuJztcbiAgfVxuXG4gIF9zZXRFbGVtZW50QXR0cmlidXRlcyhzZWxlY3Rvciwgc3R5bGVQcm9wZXJ0eSwgY2FsbGJhY2spIHtcbiAgICBjb25zdCBzY3JvbGxiYXJXaWR0aCA9IHRoaXMuZ2V0V2lkdGgoKTtcblxuICAgIGNvbnN0IG1hbmlwdWxhdGlvbkNhbGxCYWNrID0gZWxlbWVudCA9PiB7XG4gICAgICBpZiAoZWxlbWVudCAhPT0gdGhpcy5fZWxlbWVudCAmJiB3aW5kb3cuaW5uZXJXaWR0aCA+IGVsZW1lbnQuY2xpZW50V2lkdGggKyBzY3JvbGxiYXJXaWR0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX3NhdmVJbml0aWFsQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHkpO1xuXG4gICAgICBjb25zdCBjYWxjdWxhdGVkVmFsdWUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpO1xuICAgICAgZWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShzdHlsZVByb3BlcnR5LCBgJHtjYWxsYmFjayhOdW1iZXIucGFyc2VGbG9hdChjYWxjdWxhdGVkVmFsdWUpKX1weGApO1xuICAgIH07XG5cbiAgICB0aGlzLl9hcHBseU1hbmlwdWxhdGlvbkNhbGxiYWNrKHNlbGVjdG9yLCBtYW5pcHVsYXRpb25DYWxsQmFjayk7XG4gIH1cblxuICBfc2F2ZUluaXRpYWxBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IGFjdHVhbFZhbHVlID0gZWxlbWVudC5zdHlsZS5nZXRQcm9wZXJ0eVZhbHVlKHN0eWxlUHJvcGVydHkpO1xuXG4gICAgaWYgKGFjdHVhbFZhbHVlKSB7XG4gICAgICBNYW5pcHVsYXRvci5zZXREYXRhQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlUHJvcGVydHksIGFjdHVhbFZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBfcmVzZXRFbGVtZW50QXR0cmlidXRlcyhzZWxlY3Rvciwgc3R5bGVQcm9wZXJ0eSkge1xuICAgIGNvbnN0IG1hbmlwdWxhdGlvbkNhbGxCYWNrID0gZWxlbWVudCA9PiB7XG4gICAgICBjb25zdCB2YWx1ZSA9IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSk7IC8vIFdlIG9ubHkgd2FudCB0byByZW1vdmUgdGhlIHByb3BlcnR5IGlmIHRoZSB2YWx1ZSBpcyBgbnVsbGA7IHRoZSB2YWx1ZSBjYW4gYWxzbyBiZSB6ZXJvXG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICBlbGVtZW50LnN0eWxlLnJlbW92ZVByb3BlcnR5KHN0eWxlUHJvcGVydHkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIE1hbmlwdWxhdG9yLnJlbW92ZURhdGFBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVQcm9wZXJ0eSk7XG4gICAgICBlbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KHN0eWxlUHJvcGVydHksIHZhbHVlKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fYXBwbHlNYW5pcHVsYXRpb25DYWxsYmFjayhzZWxlY3RvciwgbWFuaXB1bGF0aW9uQ2FsbEJhY2spO1xuICB9XG5cbiAgX2FwcGx5TWFuaXB1bGF0aW9uQ2FsbGJhY2soc2VsZWN0b3IsIGNhbGxCYWNrKSB7XG4gICAgaWYgKGlzRWxlbWVudChzZWxlY3RvcikpIHtcbiAgICAgIGNhbGxCYWNrKHNlbGVjdG9yKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKGNvbnN0IHNlbCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKHNlbGVjdG9yLCB0aGlzLl9lbGVtZW50KSkge1xuICAgICAgY2FsbEJhY2soc2VsKTtcbiAgICB9XG4gIH1cblxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvYmFja2Ryb3AuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDkgPSAnYmFja2Ryb3AnO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDQgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNSA9ICdzaG93JztcbmNvbnN0IEVWRU5UX01PVVNFRE9XTiA9IGBtb3VzZWRvd24uYnMuJHtOQU1FJDl9YDtcbmNvbnN0IERlZmF1bHQkOCA9IHtcbiAgY2xhc3NOYW1lOiAnbW9kYWwtYmFja2Ryb3AnLFxuICBjbGlja0NhbGxiYWNrOiBudWxsLFxuICBpc0FuaW1hdGVkOiBmYWxzZSxcbiAgaXNWaXNpYmxlOiB0cnVlLFxuICAvLyBpZiBmYWxzZSwgd2UgdXNlIHRoZSBiYWNrZHJvcCBoZWxwZXIgd2l0aG91dCBhZGRpbmcgYW55IGVsZW1lbnQgdG8gdGhlIGRvbVxuICByb290RWxlbWVudDogJ2JvZHknIC8vIGdpdmUgdGhlIGNob2ljZSB0byBwbGFjZSBiYWNrZHJvcCB1bmRlciBkaWZmZXJlbnQgZWxlbWVudHNcblxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDggPSB7XG4gIGNsYXNzTmFtZTogJ3N0cmluZycsXG4gIGNsaWNrQ2FsbGJhY2s6ICcoZnVuY3Rpb258bnVsbCknLFxuICBpc0FuaW1hdGVkOiAnYm9vbGVhbicsXG4gIGlzVmlzaWJsZTogJ2Jvb2xlYW4nLFxuICByb290RWxlbWVudDogJyhlbGVtZW50fHN0cmluZyknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgQmFja2Ryb3AgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICAgIHRoaXMuX2lzQXBwZW5kZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9lbGVtZW50ID0gbnVsbDtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkODtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDg7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkOTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIHNob3coY2FsbGJhY2spIHtcbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5pc1Zpc2libGUpIHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2FwcGVuZCgpO1xuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnQoKTtcblxuICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgcmVmbG93KGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckNSk7XG5cbiAgICB0aGlzLl9lbXVsYXRlQW5pbWF0aW9uKCgpID0+IHtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgaGlkZShjYWxsYmFjaykge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmlzVmlzaWJsZSkge1xuICAgICAgZXhlY3V0ZShjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZ2V0RWxlbWVudCgpLmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDUpO1xuXG4gICAgdGhpcy5fZW11bGF0ZUFuaW1hdGlvbigoKSA9PiB7XG4gICAgICB0aGlzLmRpc3Bvc2UoKTtcbiAgICAgIGV4ZWN1dGUoY2FsbGJhY2spO1xuICAgIH0pO1xuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzQXBwZW5kZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBFdmVudEhhbmRsZXIub2ZmKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFRE9XTik7XG5cbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZSgpO1xuXG4gICAgdGhpcy5faXNBcHBlbmRlZCA9IGZhbHNlO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9nZXRFbGVtZW50KCkge1xuICAgIGlmICghdGhpcy5fZWxlbWVudCkge1xuICAgICAgY29uc3QgYmFja2Ryb3AgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGJhY2tkcm9wLmNsYXNzTmFtZSA9IHRoaXMuX2NvbmZpZy5jbGFzc05hbWU7XG5cbiAgICAgIGlmICh0aGlzLl9jb25maWcuaXNBbmltYXRlZCkge1xuICAgICAgICBiYWNrZHJvcC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfRkFERSQ0KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudCA9IGJhY2tkcm9wO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9lbGVtZW50O1xuICB9XG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgLy8gdXNlIGdldEVsZW1lbnQoKSB3aXRoIHRoZSBkZWZhdWx0IFwiYm9keVwiIHRvIGdldCBhIGZyZXNoIEVsZW1lbnQgb24gZWFjaCBpbnN0YW50aWF0aW9uXG4gICAgY29uZmlnLnJvb3RFbGVtZW50ID0gZ2V0RWxlbWVudChjb25maWcucm9vdEVsZW1lbnQpO1xuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfYXBwZW5kKCkge1xuICAgIGlmICh0aGlzLl9pc0FwcGVuZGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgZWxlbWVudCA9IHRoaXMuX2dldEVsZW1lbnQoKTtcblxuICAgIHRoaXMuX2NvbmZpZy5yb290RWxlbWVudC5hcHBlbmQoZWxlbWVudCk7XG5cbiAgICBFdmVudEhhbmRsZXIub24oZWxlbWVudCwgRVZFTlRfTU9VU0VET1dOLCAoKSA9PiB7XG4gICAgICBleGVjdXRlKHRoaXMuX2NvbmZpZy5jbGlja0NhbGxiYWNrKTtcbiAgICB9KTtcbiAgICB0aGlzLl9pc0FwcGVuZGVkID0gdHJ1ZTtcbiAgfVxuXG4gIF9lbXVsYXRlQW5pbWF0aW9uKGNhbGxiYWNrKSB7XG4gICAgZXhlY3V0ZUFmdGVyVHJhbnNpdGlvbihjYWxsYmFjaywgdGhpcy5fZ2V0RWxlbWVudCgpLCB0aGlzLl9jb25maWcuaXNBbmltYXRlZCk7XG4gIH1cblxufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvZm9jdXN0cmFwLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ4ID0gJ2ZvY3VzdHJhcCc7XG5jb25zdCBEQVRBX0tFWSQ1ID0gJ2JzLmZvY3VzdHJhcCc7XG5jb25zdCBFVkVOVF9LRVkkNSA9IGAuJHtEQVRBX0tFWSQ1fWA7XG5jb25zdCBFVkVOVF9GT0NVU0lOJDIgPSBgZm9jdXNpbiR7RVZFTlRfS0VZJDV9YDtcbmNvbnN0IEVWRU5UX0tFWURPV05fVEFCID0gYGtleWRvd24udGFiJHtFVkVOVF9LRVkkNX1gO1xuY29uc3QgVEFCX0tFWSA9ICdUYWInO1xuY29uc3QgVEFCX05BVl9GT1JXQVJEID0gJ2ZvcndhcmQnO1xuY29uc3QgVEFCX05BVl9CQUNLV0FSRCA9ICdiYWNrd2FyZCc7XG5jb25zdCBEZWZhdWx0JDcgPSB7XG4gIGF1dG9mb2N1czogdHJ1ZSxcbiAgdHJhcEVsZW1lbnQ6IG51bGwgLy8gVGhlIGVsZW1lbnQgdG8gdHJhcCBmb2N1cyBpbnNpZGUgb2ZcblxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDcgPSB7XG4gIGF1dG9mb2N1czogJ2Jvb2xlYW4nLFxuICB0cmFwRWxlbWVudDogJ2VsZW1lbnQnXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgRm9jdXNUcmFwIGV4dGVuZHMgQ29uZmlnIHtcbiAgY29uc3RydWN0b3IoY29uZmlnKSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLl9jb25maWcgPSB0aGlzLl9nZXRDb25maWcoY29uZmlnKTtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPSBudWxsO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ3O1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNztcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ4O1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgYWN0aXZhdGUoKSB7XG4gICAgaWYgKHRoaXMuX2lzQWN0aXZlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2NvbmZpZy5hdXRvZm9jdXMpIHtcbiAgICAgIHRoaXMuX2NvbmZpZy50cmFwRWxlbWVudC5mb2N1cygpO1xuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSQ1KTsgLy8gZ3VhcmQgYWdhaW5zdCBpbmZpbml0ZSBmb2N1cyBsb29wXG5cbiAgICBFdmVudEhhbmRsZXIub24oZG9jdW1lbnQsIEVWRU5UX0ZPQ1VTSU4kMiwgZXZlbnQgPT4gdGhpcy5faGFuZGxlRm9jdXNpbihldmVudCkpO1xuICAgIEV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfS0VZRE9XTl9UQUIsIGV2ZW50ID0+IHRoaXMuX2hhbmRsZUtleWRvd24oZXZlbnQpKTtcbiAgICB0aGlzLl9pc0FjdGl2ZSA9IHRydWU7XG4gIH1cblxuICBkZWFjdGl2YXRlKCkge1xuICAgIGlmICghdGhpcy5faXNBY3RpdmUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0FjdGl2ZSA9IGZhbHNlO1xuICAgIEV2ZW50SGFuZGxlci5vZmYoZG9jdW1lbnQsIEVWRU5UX0tFWSQ1KTtcbiAgfSAvLyBQcml2YXRlXG5cblxuICBfaGFuZGxlRm9jdXNpbihldmVudCkge1xuICAgIGNvbnN0IHtcbiAgICAgIHRyYXBFbGVtZW50XG4gICAgfSA9IHRoaXMuX2NvbmZpZztcblxuICAgIGlmIChldmVudC50YXJnZXQgPT09IGRvY3VtZW50IHx8IGV2ZW50LnRhcmdldCA9PT0gdHJhcEVsZW1lbnQgfHwgdHJhcEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGVsZW1lbnRzID0gU2VsZWN0b3JFbmdpbmUuZm9jdXNhYmxlQ2hpbGRyZW4odHJhcEVsZW1lbnQpO1xuXG4gICAgaWYgKGVsZW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdHJhcEVsZW1lbnQuZm9jdXMoKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuX2xhc3RUYWJOYXZEaXJlY3Rpb24gPT09IFRBQl9OQVZfQkFDS1dBUkQpIHtcbiAgICAgIGVsZW1lbnRzW2VsZW1lbnRzLmxlbmd0aCAtIDFdLmZvY3VzKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGVsZW1lbnRzWzBdLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgX2hhbmRsZUtleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoZXZlbnQua2V5ICE9PSBUQUJfS0VZKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fbGFzdFRhYk5hdkRpcmVjdGlvbiA9IGV2ZW50LnNoaWZ0S2V5ID8gVEFCX05BVl9CQUNLV0FSRCA6IFRBQl9OQVZfRk9SV0FSRDtcbiAgfVxuXG59XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogbW9kYWwuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDcgPSAnbW9kYWwnO1xuY29uc3QgREFUQV9LRVkkNCA9ICdicy5tb2RhbCc7XG5jb25zdCBFVkVOVF9LRVkkNCA9IGAuJHtEQVRBX0tFWSQ0fWA7XG5jb25zdCBEQVRBX0FQSV9LRVkkMiA9ICcuZGF0YS1hcGknO1xuY29uc3QgRVNDQVBFX0tFWSQxID0gJ0VzY2FwZSc7XG5jb25zdCBFVkVOVF9ISURFJDQgPSBgaGlkZSR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0hJREVfUFJFVkVOVEVEJDEgPSBgaGlkZVByZXZlbnRlZCR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQ0ID0gYGhpZGRlbiR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1NIT1ckNCA9IGBzaG93JHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfU0hPV04kNCA9IGBzaG93biR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX1JFU0laRSQxID0gYHJlc2l6ZSR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX0NMSUNLX0RJU01JU1MgPSBgY2xpY2suZGlzbWlzcyR7RVZFTlRfS0VZJDR9YDtcbmNvbnN0IEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTID0gYG1vdXNlZG93bi5kaXNtaXNzJHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfS0VZRE9XTl9ESVNNSVNTJDEgPSBga2V5ZG93bi5kaXNtaXNzJHtFVkVOVF9LRVkkNH1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMiA9IGBjbGljayR7RVZFTlRfS0VZJDR9JHtEQVRBX0FQSV9LRVkkMn1gO1xuY29uc3QgQ0xBU1NfTkFNRV9PUEVOID0gJ21vZGFsLW9wZW4nO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDMgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckNCA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfU1RBVElDID0gJ21vZGFsLXN0YXRpYyc7XG5jb25zdCBPUEVOX1NFTEVDVE9SJDEgPSAnLm1vZGFsLnNob3cnO1xuY29uc3QgU0VMRUNUT1JfRElBTE9HID0gJy5tb2RhbC1kaWFsb2cnO1xuY29uc3QgU0VMRUNUT1JfTU9EQUxfQk9EWSA9ICcubW9kYWwtYm9keSc7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQyID0gJ1tkYXRhLWJzLXRvZ2dsZT1cIm1vZGFsXCJdJztcbmNvbnN0IERlZmF1bHQkNiA9IHtcbiAgYmFja2Ryb3A6IHRydWUsXG4gIGZvY3VzOiB0cnVlLFxuICBrZXlib2FyZDogdHJ1ZVxufTtcbmNvbnN0IERlZmF1bHRUeXBlJDYgPSB7XG4gIGJhY2tkcm9wOiAnKGJvb2xlYW58c3RyaW5nKScsXG4gIGZvY3VzOiAnYm9vbGVhbicsXG4gIGtleWJvYXJkOiAnYm9vbGVhbidcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBNb2RhbCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2RpYWxvZyA9IFNlbGVjdG9yRW5naW5lLmZpbmRPbmUoU0VMRUNUT1JfRElBTE9HLCB0aGlzLl9lbGVtZW50KTtcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpO1xuICAgIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKTtcbiAgICB0aGlzLl9pc1Nob3duID0gZmFsc2U7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fc2Nyb2xsQmFyID0gbmV3IFNjcm9sbEJhckhlbHBlcigpO1xuXG4gICAgdGhpcy5fYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQkNjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdFR5cGUoKSB7XG4gICAgcmV0dXJuIERlZmF1bHRUeXBlJDY7XG4gIH1cblxuICBzdGF0aWMgZ2V0IE5BTUUoKSB7XG4gICAgcmV0dXJuIE5BTUUkNztcbiAgfSAvLyBQdWJsaWNcblxuXG4gIHRvZ2dsZShyZWxhdGVkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuX2lzU2hvd24gPyB0aGlzLmhpZGUoKSA6IHRoaXMuc2hvdyhyZWxhdGVkVGFyZ2V0KTtcbiAgfVxuXG4gIHNob3cocmVsYXRlZFRhcmdldCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duIHx8IHRoaXMuX2lzVHJhbnNpdGlvbmluZykge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1ckNCwge1xuICAgICAgcmVsYXRlZFRhcmdldFxuICAgIH0pO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTaG93biA9IHRydWU7XG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3Njcm9sbEJhci5oaWRlKCk7XG5cbiAgICBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9PUEVOKTtcblxuICAgIHRoaXMuX2FkanVzdERpYWxvZygpO1xuXG4gICAgdGhpcy5fYmFja2Ryb3Auc2hvdygoKSA9PiB0aGlzLl9zaG93RWxlbWVudChyZWxhdGVkVGFyZ2V0KSk7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmICghdGhpcy5faXNTaG93biB8fCB0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDQpO1xuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlO1xuICAgIHRoaXMuX2lzVHJhbnNpdGlvbmluZyA9IHRydWU7XG5cbiAgICB0aGlzLl9mb2N1c3RyYXAuZGVhY3RpdmF0ZSgpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQ0KTtcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soKCkgPT4gdGhpcy5faGlkZU1vZGFsKCksIHRoaXMuX2VsZW1lbnQsIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIGZvciAoY29uc3QgaHRtbEVsZW1lbnQgb2YgW3dpbmRvdywgdGhpcy5fZGlhbG9nXSkge1xuICAgICAgRXZlbnRIYW5kbGVyLm9mZihodG1sRWxlbWVudCwgRVZFTlRfS0VZJDQpO1xuICAgIH1cblxuICAgIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCk7XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH1cblxuICBoYW5kbGVVcGRhdGUoKSB7XG4gICAgdGhpcy5fYWRqdXN0RGlhbG9nKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHtcbiAgICByZXR1cm4gbmV3IEJhY2tkcm9wKHtcbiAgICAgIGlzVmlzaWJsZTogQm9vbGVhbih0aGlzLl9jb25maWcuYmFja2Ryb3ApLFxuICAgICAgLy8gJ3N0YXRpYycgb3B0aW9uIHdpbGwgYmUgdHJhbnNsYXRlZCB0byB0cnVlLCBhbmQgYm9vbGVhbnMgd2lsbCBrZWVwIHRoZWlyIHZhbHVlLFxuICAgICAgaXNBbmltYXRlZDogdGhpcy5faXNBbmltYXRlZCgpXG4gICAgfSk7XG4gIH1cblxuICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHtcbiAgICByZXR1cm4gbmV3IEZvY3VzVHJhcCh7XG4gICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG5cbiAgX3Nob3dFbGVtZW50KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICAvLyB0cnkgdG8gYXBwZW5kIGR5bmFtaWMgbW9kYWxcbiAgICBpZiAoIWRvY3VtZW50LmJvZHkuY29udGFpbnModGhpcy5fZWxlbWVudCkpIHtcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kKHRoaXMuX2VsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMuX2VsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdibG9jayc7XG5cbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLW1vZGFsJywgdHJ1ZSk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgncm9sZScsICdkaWFsb2cnKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2Nyb2xsVG9wID0gMDtcbiAgICBjb25zdCBtb2RhbEJvZHkgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX01PREFMX0JPRFksIHRoaXMuX2RpYWxvZyk7XG5cbiAgICBpZiAobW9kYWxCb2R5KSB7XG4gICAgICBtb2RhbEJvZHkuc2Nyb2xsVG9wID0gMDtcbiAgICB9XG5cbiAgICByZWZsb3codGhpcy5fZWxlbWVudCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDQpO1xuXG4gICAgY29uc3QgdHJhbnNpdGlvbkNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5mb2N1cykge1xuICAgICAgICB0aGlzLl9mb2N1c3RyYXAuYWN0aXZhdGUoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiQ0LCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKHRyYW5zaXRpb25Db21wbGV0ZSwgdGhpcy5fZGlhbG9nLCB0aGlzLl9pc0FuaW1hdGVkKCkpO1xuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOX0RJU01JU1MkMSwgZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50LmtleSAhPT0gRVNDQVBFX0tFWSQxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCk7XG4gICAgfSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHdpbmRvdywgRVZFTlRfUkVTSVpFJDEsICgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc1Nob3duICYmICF0aGlzLl9pc1RyYW5zaXRpb25pbmcpIHtcbiAgICAgICAgdGhpcy5fYWRqdXN0RGlhbG9nKCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFRE9XTl9ESVNNSVNTLCBldmVudCA9PiB7XG4gICAgICAvLyBhIGJhZCB0cmljayB0byBzZWdyZWdhdGUgY2xpY2tzIHRoYXQgbWF5IHN0YXJ0IGluc2lkZSBkaWFsb2cgYnV0IGVuZCBvdXRzaWRlLCBhbmQgYXZvaWQgbGlzdGVuIHRvIHNjcm9sbGJhciBjbGlja3NcbiAgICAgIEV2ZW50SGFuZGxlci5vbmUodGhpcy5fZWxlbWVudCwgRVZFTlRfQ0xJQ0tfRElTTUlTUywgZXZlbnQyID0+IHtcbiAgICAgICAgaWYgKHRoaXMuX2VsZW1lbnQgIT09IGV2ZW50LnRhcmdldCB8fCB0aGlzLl9lbGVtZW50ICE9PSBldmVudDIudGFyZ2V0KSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgICB0aGlzLl90cmlnZ2VyQmFja2Ryb3BUcmFuc2l0aW9uKCk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmJhY2tkcm9wKSB7XG4gICAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgX2hpZGVNb2RhbCgpIHtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG5cbiAgICB0aGlzLl9lbGVtZW50LnNldEF0dHJpYnV0ZSgnYXJpYS1oaWRkZW4nLCB0cnVlKTtcblxuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCdhcmlhLW1vZGFsJyk7XG5cbiAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgncm9sZScpO1xuXG4gICAgdGhpcy5faXNUcmFuc2l0aW9uaW5nID0gZmFsc2U7XG5cbiAgICB0aGlzLl9iYWNrZHJvcC5oaWRlKCgpID0+IHtcbiAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX09QRU4pO1xuXG4gICAgICB0aGlzLl9yZXNldEFkanVzdG1lbnRzKCk7XG5cbiAgICAgIHRoaXMuX3Njcm9sbEJhci5yZXNldCgpO1xuXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kNCk7XG4gICAgfSk7XG4gIH1cblxuICBfaXNBbmltYXRlZCgpIHtcbiAgICByZXR1cm4gdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfTkFNRV9GQURFJDMpO1xuICB9XG5cbiAgX3RyaWdnZXJCYWNrZHJvcFRyYW5zaXRpb24oKSB7XG4gICAgY29uc3QgaGlkZUV2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERV9QUkVWRU5URUQkMSk7XG5cbiAgICBpZiAoaGlkZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc01vZGFsT3ZlcmZsb3dpbmcgPSB0aGlzLl9lbGVtZW50LnNjcm9sbEhlaWdodCA+IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQ7XG4gICAgY29uc3QgaW5pdGlhbE92ZXJmbG93WSA9IHRoaXMuX2VsZW1lbnQuc3R5bGUub3ZlcmZsb3dZOyAvLyByZXR1cm4gaWYgdGhlIGZvbGxvd2luZyBiYWNrZ3JvdW5kIHRyYW5zaXRpb24gaGFzbid0IHlldCBjb21wbGV0ZWRcblxuICAgIGlmIChpbml0aWFsT3ZlcmZsb3dZID09PSAnaGlkZGVuJyB8fCB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX1NUQVRJQykpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAoIWlzTW9kYWxPdmVyZmxvd2luZykge1xuICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSAnaGlkZGVuJztcbiAgICB9XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TVEFUSUMpO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjaygoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TVEFUSUMpO1xuXG4gICAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKCgpID0+IHtcbiAgICAgICAgdGhpcy5fZWxlbWVudC5zdHlsZS5vdmVyZmxvd1kgPSBpbml0aWFsT3ZlcmZsb3dZO1xuICAgICAgfSwgdGhpcy5fZGlhbG9nKTtcbiAgICB9LCB0aGlzLl9kaWFsb2cpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5mb2N1cygpO1xuICB9XG4gIC8qKlxuICAgKiBUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gaGFuZGxlIG92ZXJmbG93aW5nIG1vZGFsc1xuICAgKi9cblxuXG4gIF9hZGp1c3REaWFsb2coKSB7XG4gICAgY29uc3QgaXNNb2RhbE92ZXJmbG93aW5nID0gdGhpcy5fZWxlbWVudC5zY3JvbGxIZWlnaHQgPiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0O1xuXG4gICAgY29uc3Qgc2Nyb2xsYmFyV2lkdGggPSB0aGlzLl9zY3JvbGxCYXIuZ2V0V2lkdGgoKTtcblxuICAgIGNvbnN0IGlzQm9keU92ZXJmbG93aW5nID0gc2Nyb2xsYmFyV2lkdGggPiAwO1xuXG4gICAgaWYgKGlzQm9keU92ZXJmbG93aW5nICYmICFpc01vZGFsT3ZlcmZsb3dpbmcpIHtcbiAgICAgIGNvbnN0IHByb3BlcnR5ID0gaXNSVEwoKSA/ICdwYWRkaW5nTGVmdCcgOiAncGFkZGluZ1JpZ2h0JztcbiAgICAgIHRoaXMuX2VsZW1lbnQuc3R5bGVbcHJvcGVydHldID0gYCR7c2Nyb2xsYmFyV2lkdGh9cHhgO1xuICAgIH1cblxuICAgIGlmICghaXNCb2R5T3ZlcmZsb3dpbmcgJiYgaXNNb2RhbE92ZXJmbG93aW5nKSB7XG4gICAgICBjb25zdCBwcm9wZXJ0eSA9IGlzUlRMKCkgPyAncGFkZGluZ1JpZ2h0JyA6ICdwYWRkaW5nTGVmdCc7XG4gICAgICB0aGlzLl9lbGVtZW50LnN0eWxlW3Byb3BlcnR5XSA9IGAke3Njcm9sbGJhcldpZHRofXB4YDtcbiAgICB9XG4gIH1cblxuICBfcmVzZXRBZGp1c3RtZW50cygpIHtcbiAgICB0aGlzLl9lbGVtZW50LnN0eWxlLnBhZGRpbmdMZWZ0ID0gJyc7XG4gICAgdGhpcy5fZWxlbWVudC5zdHlsZS5wYWRkaW5nUmlnaHQgPSAnJztcbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnLCByZWxhdGVkVGFyZ2V0KSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0aGlzLCBjb25maWcpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAodHlwZW9mIGRhdGFbY29uZmlnXSA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKHJlbGF0ZWRUYXJnZXQpO1xuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbihkb2N1bWVudCwgRVZFTlRfQ0xJQ0tfREFUQV9BUEkkMiwgU0VMRUNUT1JfREFUQV9UT0dHTEUkMiwgZnVuY3Rpb24gKGV2ZW50KSB7XG4gIGNvbnN0IHRhcmdldCA9IGdldEVsZW1lbnRGcm9tU2VsZWN0b3IodGhpcyk7XG5cbiAgaWYgKFsnQScsICdBUkVBJ10uaW5jbHVkZXModGhpcy50YWdOYW1lKSkge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gIH1cblxuICBFdmVudEhhbmRsZXIub25lKHRhcmdldCwgRVZFTlRfU0hPVyQ0LCBzaG93RXZlbnQgPT4ge1xuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgLy8gb25seSByZWdpc3RlciBmb2N1cyByZXN0b3JlciBpZiBtb2RhbCB3aWxsIGFjdHVhbGx5IGdldCBzaG93blxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIEV2ZW50SGFuZGxlci5vbmUodGFyZ2V0LCBFVkVOVF9ISURERU4kNCwgKCkgPT4ge1xuICAgICAgaWYgKGlzVmlzaWJsZSh0aGlzKSkge1xuICAgICAgICB0aGlzLmZvY3VzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH0pOyAvLyBhdm9pZCBjb25mbGljdCB3aGVuIGNsaWNraW5nIG1vZGFsIHRvZ2dsZXIgd2hpbGUgYW5vdGhlciBvbmUgaXMgb3BlblxuXG4gIGNvbnN0IGFscmVhZHlPcGVuID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShPUEVOX1NFTEVDVE9SJDEpO1xuXG4gIGlmIChhbHJlYWR5T3Blbikge1xuICAgIE1vZGFsLmdldEluc3RhbmNlKGFscmVhZHlPcGVuKS5oaWRlKCk7XG4gIH1cblxuICBjb25zdCBkYXRhID0gTW9kYWwuZ2V0T3JDcmVhdGVJbnN0YW5jZSh0YXJnZXQpO1xuICBkYXRhLnRvZ2dsZSh0aGlzKTtcbn0pO1xuZW5hYmxlRGlzbWlzc1RyaWdnZXIoTW9kYWwpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oTW9kYWwpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IG9mZmNhbnZhcy5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkNiA9ICdvZmZjYW52YXMnO1xuY29uc3QgREFUQV9LRVkkMyA9ICdicy5vZmZjYW52YXMnO1xuY29uc3QgRVZFTlRfS0VZJDMgPSBgLiR7REFUQV9LRVkkM31gO1xuY29uc3QgREFUQV9BUElfS0VZJDEgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVWRU5UX0xPQURfREFUQV9BUEkkMiA9IGBsb2FkJHtFVkVOVF9LRVkkM30ke0RBVEFfQVBJX0tFWSQxfWA7XG5jb25zdCBFU0NBUEVfS0VZID0gJ0VzY2FwZSc7XG5jb25zdCBDTEFTU19OQU1FX1NIT1ckMyA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfU0hPV0lORyQxID0gJ3Nob3dpbmcnO1xuY29uc3QgQ0xBU1NfTkFNRV9ISURJTkcgPSAnaGlkaW5nJztcbmNvbnN0IENMQVNTX05BTUVfQkFDS0RST1AgPSAnb2ZmY2FudmFzLWJhY2tkcm9wJztcbmNvbnN0IE9QRU5fU0VMRUNUT1IgPSAnLm9mZmNhbnZhcy5zaG93JztcbmNvbnN0IEVWRU5UX1NIT1ckMyA9IGBzaG93JHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfU0hPV04kMyA9IGBzaG93biR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0hJREUkMyA9IGBoaWRlJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgRVZFTlRfSElERV9QUkVWRU5URUQgPSBgaGlkZVByZXZlbnRlZCR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX0hJRERFTiQzID0gYGhpZGRlbiR7RVZFTlRfS0VZJDN9YDtcbmNvbnN0IEVWRU5UX1JFU0laRSA9IGByZXNpemUke0VWRU5UX0tFWSQzfWA7XG5jb25zdCBFVkVOVF9DTElDS19EQVRBX0FQSSQxID0gYGNsaWNrJHtFVkVOVF9LRVkkM30ke0RBVEFfQVBJX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9LRVlET1dOX0RJU01JU1MgPSBga2V5ZG93bi5kaXNtaXNzJHtFVkVOVF9LRVkkM31gO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUkMSA9ICdbZGF0YS1icy10b2dnbGU9XCJvZmZjYW52YXNcIl0nO1xuY29uc3QgRGVmYXVsdCQ1ID0ge1xuICBiYWNrZHJvcDogdHJ1ZSxcbiAga2V5Ym9hcmQ6IHRydWUsXG4gIHNjcm9sbDogZmFsc2Vcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ1ID0ge1xuICBiYWNrZHJvcDogJyhib29sZWFufHN0cmluZyknLFxuICBrZXlib2FyZDogJ2Jvb2xlYW4nLFxuICBzY3JvbGw6ICdib29sZWFuJ1xufTtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIE9mZmNhbnZhcyBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX2lzU2hvd24gPSBmYWxzZTtcbiAgICB0aGlzLl9iYWNrZHJvcCA9IHRoaXMuX2luaXRpYWxpemVCYWNrRHJvcCgpO1xuICAgIHRoaXMuX2ZvY3VzdHJhcCA9IHRoaXMuX2luaXRpYWxpemVGb2N1c1RyYXAoKTtcblxuICAgIHRoaXMuX2FkZEV2ZW50TGlzdGVuZXJzKCk7XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDU7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQ1O1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDY7XG4gIH0gLy8gUHVibGljXG5cblxuICB0b2dnbGUocmVsYXRlZFRhcmdldCkge1xuICAgIHJldHVybiB0aGlzLl9pc1Nob3duID8gdGhpcy5oaWRlKCkgOiB0aGlzLnNob3cocmVsYXRlZFRhcmdldCk7XG4gIH1cblxuICBzaG93KHJlbGF0ZWRUYXJnZXQpIHtcbiAgICBpZiAodGhpcy5faXNTaG93bikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIEVWRU5UX1NIT1ckMywge1xuICAgICAgcmVsYXRlZFRhcmdldFxuICAgIH0pO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5faXNTaG93biA9IHRydWU7XG5cbiAgICB0aGlzLl9iYWNrZHJvcC5zaG93KCk7XG5cbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwpIHtcbiAgICAgIG5ldyBTY3JvbGxCYXJIZWxwZXIoKS5oaWRlKCk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnLCB0cnVlKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdyb2xlJywgJ2RpYWxvZycpO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPV0lORyQxKTtcblxuICAgIGNvbnN0IGNvbXBsZXRlQ2FsbEJhY2sgPSAoKSA9PiB7XG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5zY3JvbGwgfHwgdGhpcy5fY29uZmlnLmJhY2tkcm9wKSB7XG4gICAgICAgIHRoaXMuX2ZvY3VzdHJhcC5hY3RpdmF0ZSgpO1xuICAgICAgfVxuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDMpO1xuXG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XSU5HJDEpO1xuXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTiQzLCB7XG4gICAgICAgIHJlbGF0ZWRUYXJnZXRcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlQ2FsbEJhY2ssIHRoaXMuX2VsZW1lbnQsIHRydWUpO1xuICB9XG5cbiAgaGlkZSgpIHtcbiAgICBpZiAoIXRoaXMuX2lzU2hvd24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFJDMpO1xuXG4gICAgaWYgKGhpZGVFdmVudC5kZWZhdWx0UHJldmVudGVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZm9jdXN0cmFwLmRlYWN0aXZhdGUoKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuYmx1cigpO1xuXG4gICAgdGhpcy5faXNTaG93biA9IGZhbHNlO1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfSElESU5HKTtcblxuICAgIHRoaXMuX2JhY2tkcm9wLmhpZGUoKTtcblxuICAgIGNvbnN0IGNvbXBsZXRlQ2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDMsIENMQVNTX05BTUVfSElESU5HKTtcblxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtbW9kYWwnKTtcblxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ3JvbGUnKTtcblxuICAgICAgaWYgKCF0aGlzLl9jb25maWcuc2Nyb2xsKSB7XG4gICAgICAgIG5ldyBTY3JvbGxCYXJIZWxwZXIoKS5yZXNldCgpO1xuICAgICAgfVxuXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURERU4kMyk7XG4gICAgfTtcblxuICAgIHRoaXMuX3F1ZXVlQ2FsbGJhY2soY29tcGxldGVDYWxsYmFjaywgdGhpcy5fZWxlbWVudCwgdHJ1ZSk7XG4gIH1cblxuICBkaXNwb3NlKCkge1xuICAgIHRoaXMuX2JhY2tkcm9wLmRpc3Bvc2UoKTtcblxuICAgIHRoaXMuX2ZvY3VzdHJhcC5kZWFjdGl2YXRlKCk7XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2luaXRpYWxpemVCYWNrRHJvcCgpIHtcbiAgICBjb25zdCBjbGlja0NhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElERV9QUkVWRU5URUQpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH07IC8vICdzdGF0aWMnIG9wdGlvbiB3aWxsIGJlIHRyYW5zbGF0ZWQgdG8gdHJ1ZSwgYW5kIGJvb2xlYW5zIHdpbGwga2VlcCB0aGVpciB2YWx1ZVxuXG5cbiAgICBjb25zdCBpc1Zpc2libGUgPSBCb29sZWFuKHRoaXMuX2NvbmZpZy5iYWNrZHJvcCk7XG4gICAgcmV0dXJuIG5ldyBCYWNrZHJvcCh7XG4gICAgICBjbGFzc05hbWU6IENMQVNTX05BTUVfQkFDS0RST1AsXG4gICAgICBpc1Zpc2libGUsXG4gICAgICBpc0FuaW1hdGVkOiB0cnVlLFxuICAgICAgcm9vdEVsZW1lbnQ6IHRoaXMuX2VsZW1lbnQucGFyZW50Tm9kZSxcbiAgICAgIGNsaWNrQ2FsbGJhY2s6IGlzVmlzaWJsZSA/IGNsaWNrQ2FsbGJhY2sgOiBudWxsXG4gICAgfSk7XG4gIH1cblxuICBfaW5pdGlhbGl6ZUZvY3VzVHJhcCgpIHtcbiAgICByZXR1cm4gbmV3IEZvY3VzVHJhcCh7XG4gICAgICB0cmFwRWxlbWVudDogdGhpcy5fZWxlbWVudFxuICAgIH0pO1xuICB9XG5cbiAgX2FkZEV2ZW50TGlzdGVuZXJzKCkge1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9LRVlET1dOX0RJU01JU1MsIGV2ZW50ID0+IHtcbiAgICAgIGlmIChldmVudC5rZXkgIT09IEVTQ0FQRV9LRVkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuX2NvbmZpZy5rZXlib2FyZCkge1xuICAgICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFX1BSRVZFTlRFRCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5oaWRlKCk7XG4gICAgfSk7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmIChkYXRhW2NvbmZpZ10gPT09IHVuZGVmaW5lZCB8fCBjb25maWcuc3RhcnRzV2l0aCgnXycpIHx8IGNvbmZpZyA9PT0gJ2NvbnN0cnVjdG9yJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSQxLCBTRUxFQ1RPUl9EQVRBX1RPR0dMRSQxLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgY29uc3QgdGFyZ2V0ID0gZ2V0RWxlbWVudEZyb21TZWxlY3Rvcih0aGlzKTtcblxuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGlmIChpc0Rpc2FibGVkKHRoaXMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgRXZlbnRIYW5kbGVyLm9uZSh0YXJnZXQsIEVWRU5UX0hJRERFTiQzLCAoKSA9PiB7XG4gICAgLy8gZm9jdXMgb24gdHJpZ2dlciB3aGVuIGl0IGlzIGNsb3NlZFxuICAgIGlmIChpc1Zpc2libGUodGhpcykpIHtcbiAgICAgIHRoaXMuZm9jdXMoKTtcbiAgICB9XG4gIH0pOyAvLyBhdm9pZCBjb25mbGljdCB3aGVuIGNsaWNraW5nIGEgdG9nZ2xlciBvZiBhbiBvZmZjYW52YXMsIHdoaWxlIGFub3RoZXIgaXMgb3BlblxuXG4gIGNvbnN0IGFscmVhZHlPcGVuID0gU2VsZWN0b3JFbmdpbmUuZmluZE9uZShPUEVOX1NFTEVDVE9SKTtcblxuICBpZiAoYWxyZWFkeU9wZW4gJiYgYWxyZWFkeU9wZW4gIT09IHRhcmdldCkge1xuICAgIE9mZmNhbnZhcy5nZXRJbnN0YW5jZShhbHJlYWR5T3BlbikuaGlkZSgpO1xuICB9XG5cbiAgY29uc3QgZGF0YSA9IE9mZmNhbnZhcy5nZXRPckNyZWF0ZUluc3RhbmNlKHRhcmdldCk7XG4gIGRhdGEudG9nZ2xlKHRoaXMpO1xufSk7XG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJJDIsICgpID0+IHtcbiAgZm9yIChjb25zdCBzZWxlY3RvciBvZiBTZWxlY3RvckVuZ2luZS5maW5kKE9QRU5fU0VMRUNUT1IpKSB7XG4gICAgT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2Uoc2VsZWN0b3IpLnNob3coKTtcbiAgfVxufSk7XG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9SRVNJWkUsICgpID0+IHtcbiAgZm9yIChjb25zdCBlbGVtZW50IG9mIFNlbGVjdG9yRW5naW5lLmZpbmQoJ1thcmlhLW1vZGFsXVtjbGFzcyo9c2hvd11bY2xhc3MqPW9mZmNhbnZhcy1dJykpIHtcbiAgICBpZiAoZ2V0Q29tcHV0ZWRTdHlsZShlbGVtZW50KS5wb3NpdGlvbiAhPT0gJ2ZpeGVkJykge1xuICAgICAgT2ZmY2FudmFzLmdldE9yQ3JlYXRlSW5zdGFuY2UoZWxlbWVudCkuaGlkZSgpO1xuICAgIH1cbiAgfVxufSk7XG5lbmFibGVEaXNtaXNzVHJpZ2dlcihPZmZjYW52YXMpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oT2ZmY2FudmFzKTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB1dGlsL3Nhbml0aXplci5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG5jb25zdCB1cmlBdHRyaWJ1dGVzID0gbmV3IFNldChbJ2JhY2tncm91bmQnLCAnY2l0ZScsICdocmVmJywgJ2l0ZW10eXBlJywgJ2xvbmdkZXNjJywgJ3Bvc3RlcicsICdzcmMnLCAneGxpbms6aHJlZiddKTtcbmNvbnN0IEFSSUFfQVRUUklCVVRFX1BBVFRFUk4gPSAvXmFyaWEtW1xcdy1dKiQvaTtcbi8qKlxuICogQSBwYXR0ZXJuIHRoYXQgcmVjb2duaXplcyBhIGNvbW1vbmx5IHVzZWZ1bCBzdWJzZXQgb2YgVVJMcyB0aGF0IGFyZSBzYWZlLlxuICpcbiAqIFNob3V0LW91dCB0byBBbmd1bGFyIGh0dHBzOi8vZ2l0aHViLmNvbS9hbmd1bGFyL2FuZ3VsYXIvYmxvYi8xMi4yLngvcGFja2FnZXMvY29yZS9zcmMvc2FuaXRpemF0aW9uL3VybF9zYW5pdGl6ZXIudHNcbiAqL1xuXG5jb25zdCBTQUZFX1VSTF9QQVRURVJOID0gL14oPzooPzpodHRwcz98bWFpbHRvfGZ0cHx0ZWx8ZmlsZXxzbXMpOnxbXiMmLzo/XSooPzpbIy8/XXwkKSkvaTtcbi8qKlxuICogQSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBzYWZlIGRhdGEgVVJMcy4gT25seSBtYXRjaGVzIGltYWdlLCB2aWRlbyBhbmQgYXVkaW8gdHlwZXMuXG4gKlxuICogU2hvdXQtb3V0IHRvIEFuZ3VsYXIgaHR0cHM6Ly9naXRodWIuY29tL2FuZ3VsYXIvYW5ndWxhci9ibG9iLzEyLjIueC9wYWNrYWdlcy9jb3JlL3NyYy9zYW5pdGl6YXRpb24vdXJsX3Nhbml0aXplci50c1xuICovXG5cbmNvbnN0IERBVEFfVVJMX1BBVFRFUk4gPSAvXmRhdGE6KD86aW1hZ2VcXC8oPzpibXB8Z2lmfGpwZWd8anBnfHBuZ3x0aWZmfHdlYnApfHZpZGVvXFwvKD86bXBlZ3xtcDR8b2dnfHdlYm0pfGF1ZGlvXFwvKD86bXAzfG9nYXxvZ2d8b3B1cykpO2Jhc2U2NCxbXFxkKy9hLXpdKz0qJC9pO1xuXG5jb25zdCBhbGxvd2VkQXR0cmlidXRlID0gKGF0dHJpYnV0ZSwgYWxsb3dlZEF0dHJpYnV0ZUxpc3QpID0+IHtcbiAgY29uc3QgYXR0cmlidXRlTmFtZSA9IGF0dHJpYnV0ZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmIChhbGxvd2VkQXR0cmlidXRlTGlzdC5pbmNsdWRlcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgIGlmICh1cmlBdHRyaWJ1dGVzLmhhcyhhdHRyaWJ1dGVOYW1lKSkge1xuICAgICAgcmV0dXJuIEJvb2xlYW4oU0FGRV9VUkxfUEFUVEVSTi50ZXN0KGF0dHJpYnV0ZS5ub2RlVmFsdWUpIHx8IERBVEFfVVJMX1BBVFRFUk4udGVzdChhdHRyaWJ1dGUubm9kZVZhbHVlKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWU7XG4gIH0gLy8gQ2hlY2sgaWYgYSByZWd1bGFyIGV4cHJlc3Npb24gdmFsaWRhdGVzIHRoZSBhdHRyaWJ1dGUuXG5cblxuICByZXR1cm4gYWxsb3dlZEF0dHJpYnV0ZUxpc3QuZmlsdGVyKGF0dHJpYnV0ZVJlZ2V4ID0+IGF0dHJpYnV0ZVJlZ2V4IGluc3RhbmNlb2YgUmVnRXhwKS5zb21lKHJlZ2V4ID0+IHJlZ2V4LnRlc3QoYXR0cmlidXRlTmFtZSkpO1xufTtcblxuY29uc3QgRGVmYXVsdEFsbG93bGlzdCA9IHtcbiAgLy8gR2xvYmFsIGF0dHJpYnV0ZXMgYWxsb3dlZCBvbiBhbnkgc3VwcGxpZWQgZWxlbWVudCBiZWxvdy5cbiAgJyonOiBbJ2NsYXNzJywgJ2RpcicsICdpZCcsICdsYW5nJywgJ3JvbGUnLCBBUklBX0FUVFJJQlVURV9QQVRURVJOXSxcbiAgYTogWyd0YXJnZXQnLCAnaHJlZicsICd0aXRsZScsICdyZWwnXSxcbiAgYXJlYTogW10sXG4gIGI6IFtdLFxuICBicjogW10sXG4gIGNvbDogW10sXG4gIGNvZGU6IFtdLFxuICBkaXY6IFtdLFxuICBlbTogW10sXG4gIGhyOiBbXSxcbiAgaDE6IFtdLFxuICBoMjogW10sXG4gIGgzOiBbXSxcbiAgaDQ6IFtdLFxuICBoNTogW10sXG4gIGg2OiBbXSxcbiAgaTogW10sXG4gIGltZzogWydzcmMnLCAnc3Jjc2V0JywgJ2FsdCcsICd0aXRsZScsICd3aWR0aCcsICdoZWlnaHQnXSxcbiAgbGk6IFtdLFxuICBvbDogW10sXG4gIHA6IFtdLFxuICBwcmU6IFtdLFxuICBzOiBbXSxcbiAgc21hbGw6IFtdLFxuICBzcGFuOiBbXSxcbiAgc3ViOiBbXSxcbiAgc3VwOiBbXSxcbiAgc3Ryb25nOiBbXSxcbiAgdTogW10sXG4gIHVsOiBbXVxufTtcbmZ1bmN0aW9uIHNhbml0aXplSHRtbCh1bnNhZmVIdG1sLCBhbGxvd0xpc3QsIHNhbml0aXplRnVuY3Rpb24pIHtcbiAgaWYgKCF1bnNhZmVIdG1sLmxlbmd0aCkge1xuICAgIHJldHVybiB1bnNhZmVIdG1sO1xuICB9XG5cbiAgaWYgKHNhbml0aXplRnVuY3Rpb24gJiYgdHlwZW9mIHNhbml0aXplRnVuY3Rpb24gPT09ICdmdW5jdGlvbicpIHtcbiAgICByZXR1cm4gc2FuaXRpemVGdW5jdGlvbih1bnNhZmVIdG1sKTtcbiAgfVxuXG4gIGNvbnN0IGRvbVBhcnNlciA9IG5ldyB3aW5kb3cuRE9NUGFyc2VyKCk7XG4gIGNvbnN0IGNyZWF0ZWREb2N1bWVudCA9IGRvbVBhcnNlci5wYXJzZUZyb21TdHJpbmcodW5zYWZlSHRtbCwgJ3RleHQvaHRtbCcpO1xuICBjb25zdCBlbGVtZW50cyA9IFtdLmNvbmNhdCguLi5jcmVhdGVkRG9jdW1lbnQuYm9keS5xdWVyeVNlbGVjdG9yQWxsKCcqJykpO1xuXG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBlbGVtZW50cykge1xuICAgIGNvbnN0IGVsZW1lbnROYW1lID0gZWxlbWVudC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgaWYgKCFPYmplY3Qua2V5cyhhbGxvd0xpc3QpLmluY2x1ZGVzKGVsZW1lbnROYW1lKSkge1xuICAgICAgZWxlbWVudC5yZW1vdmUoKTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGF0dHJpYnV0ZUxpc3QgPSBbXS5jb25jYXQoLi4uZWxlbWVudC5hdHRyaWJ1dGVzKTtcbiAgICBjb25zdCBhbGxvd2VkQXR0cmlidXRlcyA9IFtdLmNvbmNhdChhbGxvd0xpc3RbJyonXSB8fCBbXSwgYWxsb3dMaXN0W2VsZW1lbnROYW1lXSB8fCBbXSk7XG5cbiAgICBmb3IgKGNvbnN0IGF0dHJpYnV0ZSBvZiBhdHRyaWJ1dGVMaXN0KSB7XG4gICAgICBpZiAoIWFsbG93ZWRBdHRyaWJ1dGUoYXR0cmlidXRlLCBhbGxvd2VkQXR0cmlidXRlcykpIHtcbiAgICAgICAgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoYXR0cmlidXRlLm5vZGVOYW1lKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY3JlYXRlZERvY3VtZW50LmJvZHkuaW5uZXJIVE1MO1xufVxuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHV0aWwvdGVtcGxhdGUtZmFjdG9yeS5qc1xuICogTGljZW5zZWQgdW5kZXIgTUlUIChodHRwczovL2dpdGh1Yi5jb20vdHdicy9ib290c3RyYXAvYmxvYi9tYWluL0xJQ0VOU0UpXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICovXG4vKipcbiAqIENvbnN0YW50c1xuICovXG5cbmNvbnN0IE5BTUUkNSA9ICdUZW1wbGF0ZUZhY3RvcnknO1xuY29uc3QgRGVmYXVsdCQ0ID0ge1xuICBhbGxvd0xpc3Q6IERlZmF1bHRBbGxvd2xpc3QsXG4gIGNvbnRlbnQ6IHt9LFxuICAvLyB7IHNlbGVjdG9yIDogdGV4dCAsICBzZWxlY3RvcjIgOiB0ZXh0MiAsIH1cbiAgZXh0cmFDbGFzczogJycsXG4gIGh0bWw6IGZhbHNlLFxuICBzYW5pdGl6ZTogdHJ1ZSxcbiAgc2FuaXRpemVGbjogbnVsbCxcbiAgdGVtcGxhdGU6ICc8ZGl2PjwvZGl2Pidcbn07XG5jb25zdCBEZWZhdWx0VHlwZSQ0ID0ge1xuICBhbGxvd0xpc3Q6ICdvYmplY3QnLFxuICBjb250ZW50OiAnb2JqZWN0JyxcbiAgZXh0cmFDbGFzczogJyhzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgaHRtbDogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZTogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJyxcbiAgdGVtcGxhdGU6ICdzdHJpbmcnXG59O1xuY29uc3QgRGVmYXVsdENvbnRlbnRUeXBlID0ge1xuICBlbnRyeTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbnxudWxsKScsXG4gIHNlbGVjdG9yOiAnKHN0cmluZ3xlbGVtZW50KSdcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUZW1wbGF0ZUZhY3RvcnkgZXh0ZW5kcyBDb25maWcge1xuICBjb25zdHJ1Y3Rvcihjb25maWcpIHtcbiAgICBzdXBlcigpO1xuICAgIHRoaXMuX2NvbmZpZyA9IHRoaXMuX2dldENvbmZpZyhjb25maWcpO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQ0O1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkNDtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQ1O1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgZ2V0Q29udGVudCgpIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLl9jb25maWcuY29udGVudCkubWFwKGNvbmZpZyA9PiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihjb25maWcpKS5maWx0ZXIoQm9vbGVhbik7XG4gIH1cblxuICBoYXNDb250ZW50KCkge1xuICAgIHJldHVybiB0aGlzLmdldENvbnRlbnQoKS5sZW5ndGggPiAwO1xuICB9XG5cbiAgY2hhbmdlQ29udGVudChjb250ZW50KSB7XG4gICAgdGhpcy5fY2hlY2tDb250ZW50KGNvbnRlbnQpO1xuXG4gICAgdGhpcy5fY29uZmlnLmNvbnRlbnQgPSB7IC4uLnRoaXMuX2NvbmZpZy5jb250ZW50LFxuICAgICAgLi4uY29udGVudFxuICAgIH07XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0h0bWwoKSB7XG4gICAgY29uc3QgdGVtcGxhdGVXcmFwcGVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgdGVtcGxhdGVXcmFwcGVyLmlubmVySFRNTCA9IHRoaXMuX21heWJlU2FuaXRpemUodGhpcy5fY29uZmlnLnRlbXBsYXRlKTtcblxuICAgIGZvciAoY29uc3QgW3NlbGVjdG9yLCB0ZXh0XSBvZiBPYmplY3QuZW50cmllcyh0aGlzLl9jb25maWcuY29udGVudCkpIHtcbiAgICAgIHRoaXMuX3NldENvbnRlbnQodGVtcGxhdGVXcmFwcGVyLCB0ZXh0LCBzZWxlY3Rvcik7XG4gICAgfVxuXG4gICAgY29uc3QgdGVtcGxhdGUgPSB0ZW1wbGF0ZVdyYXBwZXIuY2hpbGRyZW5bMF07XG5cbiAgICBjb25zdCBleHRyYUNsYXNzID0gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmV4dHJhQ2xhc3MpO1xuXG4gICAgaWYgKGV4dHJhQ2xhc3MpIHtcbiAgICAgIHRlbXBsYXRlLmNsYXNzTGlzdC5hZGQoLi4uZXh0cmFDbGFzcy5zcGxpdCgnICcpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGVtcGxhdGU7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX3R5cGVDaGVja0NvbmZpZyhjb25maWcpIHtcbiAgICBzdXBlci5fdHlwZUNoZWNrQ29uZmlnKGNvbmZpZyk7XG5cbiAgICB0aGlzLl9jaGVja0NvbnRlbnQoY29uZmlnLmNvbnRlbnQpO1xuICB9XG5cbiAgX2NoZWNrQ29udGVudChhcmcpIHtcbiAgICBmb3IgKGNvbnN0IFtzZWxlY3RvciwgY29udGVudF0gb2YgT2JqZWN0LmVudHJpZXMoYXJnKSkge1xuICAgICAgc3VwZXIuX3R5cGVDaGVja0NvbmZpZyh7XG4gICAgICAgIHNlbGVjdG9yLFxuICAgICAgICBlbnRyeTogY29udGVudFxuICAgICAgfSwgRGVmYXVsdENvbnRlbnRUeXBlKTtcbiAgICB9XG4gIH1cblxuICBfc2V0Q29udGVudCh0ZW1wbGF0ZSwgY29udGVudCwgc2VsZWN0b3IpIHtcbiAgICBjb25zdCB0ZW1wbGF0ZUVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yLCB0ZW1wbGF0ZSk7XG5cbiAgICBpZiAoIXRlbXBsYXRlRWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnRlbnQgPSB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbihjb250ZW50KTtcblxuICAgIGlmICghY29udGVudCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LnJlbW92ZSgpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChpc0VsZW1lbnQoY29udGVudCkpIHtcbiAgICAgIHRoaXMuX3B1dEVsZW1lbnRJblRlbXBsYXRlKGdldEVsZW1lbnQoY29udGVudCksIHRlbXBsYXRlRWxlbWVudCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5fY29uZmlnLmh0bWwpIHtcbiAgICAgIHRlbXBsYXRlRWxlbWVudC5pbm5lckhUTUwgPSB0aGlzLl9tYXliZVNhbml0aXplKGNvbnRlbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRlbXBsYXRlRWxlbWVudC50ZXh0Q29udGVudCA9IGNvbnRlbnQ7XG4gIH1cblxuICBfbWF5YmVTYW5pdGl6ZShhcmcpIHtcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnLnNhbml0aXplID8gc2FuaXRpemVIdG1sKGFyZywgdGhpcy5fY29uZmlnLmFsbG93TGlzdCwgdGhpcy5fY29uZmlnLnNhbml0aXplRm4pIDogYXJnO1xuICB9XG5cbiAgX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nID8gYXJnKHRoaXMpIDogYXJnO1xuICB9XG5cbiAgX3B1dEVsZW1lbnRJblRlbXBsYXRlKGVsZW1lbnQsIHRlbXBsYXRlRWxlbWVudCkge1xuICAgIGlmICh0aGlzLl9jb25maWcuaHRtbCkge1xuICAgICAgdGVtcGxhdGVFbGVtZW50LmlubmVySFRNTCA9ICcnO1xuICAgICAgdGVtcGxhdGVFbGVtZW50LmFwcGVuZChlbGVtZW50KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0ZW1wbGF0ZUVsZW1lbnQudGV4dENvbnRlbnQgPSBlbGVtZW50LnRleHRDb250ZW50O1xuICB9XG5cbn1cblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB0b29sdGlwLmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQ0ID0gJ3Rvb2x0aXAnO1xuY29uc3QgRElTQUxMT1dFRF9BVFRSSUJVVEVTID0gbmV3IFNldChbJ3Nhbml0aXplJywgJ2FsbG93TGlzdCcsICdzYW5pdGl6ZUZuJ10pO1xuY29uc3QgQ0xBU1NfTkFNRV9GQURFJDIgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX01PREFMID0gJ21vZGFsJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQyID0gJ3Nob3cnO1xuY29uc3QgU0VMRUNUT1JfVE9PTFRJUF9JTk5FUiA9ICcudG9vbHRpcC1pbm5lcic7XG5jb25zdCBTRUxFQ1RPUl9NT0RBTCA9IGAuJHtDTEFTU19OQU1FX01PREFMfWA7XG5jb25zdCBFVkVOVF9NT0RBTF9ISURFID0gJ2hpZGUuYnMubW9kYWwnO1xuY29uc3QgVFJJR0dFUl9IT1ZFUiA9ICdob3Zlcic7XG5jb25zdCBUUklHR0VSX0ZPQ1VTID0gJ2ZvY3VzJztcbmNvbnN0IFRSSUdHRVJfQ0xJQ0sgPSAnY2xpY2snO1xuY29uc3QgVFJJR0dFUl9NQU5VQUwgPSAnbWFudWFsJztcbmNvbnN0IEVWRU5UX0hJREUkMiA9ICdoaWRlJztcbmNvbnN0IEVWRU5UX0hJRERFTiQyID0gJ2hpZGRlbic7XG5jb25zdCBFVkVOVF9TSE9XJDIgPSAnc2hvdyc7XG5jb25zdCBFVkVOVF9TSE9XTiQyID0gJ3Nob3duJztcbmNvbnN0IEVWRU5UX0lOU0VSVEVEID0gJ2luc2VydGVkJztcbmNvbnN0IEVWRU5UX0NMSUNLJDEgPSAnY2xpY2snO1xuY29uc3QgRVZFTlRfRk9DVVNJTiQxID0gJ2ZvY3VzaW4nO1xuY29uc3QgRVZFTlRfRk9DVVNPVVQkMSA9ICdmb2N1c291dCc7XG5jb25zdCBFVkVOVF9NT1VTRUVOVEVSID0gJ21vdXNlZW50ZXInO1xuY29uc3QgRVZFTlRfTU9VU0VMRUFWRSA9ICdtb3VzZWxlYXZlJztcbmNvbnN0IEF0dGFjaG1lbnRNYXAgPSB7XG4gIEFVVE86ICdhdXRvJyxcbiAgVE9QOiAndG9wJyxcbiAgUklHSFQ6IGlzUlRMKCkgPyAnbGVmdCcgOiAncmlnaHQnLFxuICBCT1RUT006ICdib3R0b20nLFxuICBMRUZUOiBpc1JUTCgpID8gJ3JpZ2h0JyA6ICdsZWZ0J1xufTtcbmNvbnN0IERlZmF1bHQkMyA9IHtcbiAgYWxsb3dMaXN0OiBEZWZhdWx0QWxsb3dsaXN0LFxuICBhbmltYXRpb246IHRydWUsXG4gIGJvdW5kYXJ5OiAnY2xpcHBpbmdQYXJlbnRzJyxcbiAgY29udGFpbmVyOiBmYWxzZSxcbiAgY3VzdG9tQ2xhc3M6ICcnLFxuICBkZWxheTogMCxcbiAgZmFsbGJhY2tQbGFjZW1lbnRzOiBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddLFxuICBodG1sOiBmYWxzZSxcbiAgb2Zmc2V0OiBbMCwgMF0sXG4gIHBsYWNlbWVudDogJ3RvcCcsXG4gIHBvcHBlckNvbmZpZzogbnVsbCxcbiAgc2FuaXRpemU6IHRydWUsXG4gIHNhbml0aXplRm46IG51bGwsXG4gIHNlbGVjdG9yOiBmYWxzZSxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwidG9vbHRpcFwiIHJvbGU9XCJ0b29sdGlwXCI+JyArICc8ZGl2IGNsYXNzPVwidG9vbHRpcC1hcnJvd1wiPjwvZGl2PicgKyAnPGRpdiBjbGFzcz1cInRvb2x0aXAtaW5uZXJcIj48L2Rpdj4nICsgJzwvZGl2PicsXG4gIHRpdGxlOiAnJyxcbiAgdHJpZ2dlcjogJ2hvdmVyIGZvY3VzJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDMgPSB7XG4gIGFsbG93TGlzdDogJ29iamVjdCcsXG4gIGFuaW1hdGlvbjogJ2Jvb2xlYW4nLFxuICBib3VuZGFyeTogJyhzdHJpbmd8ZWxlbWVudCknLFxuICBjb250YWluZXI6ICcoc3RyaW5nfGVsZW1lbnR8Ym9vbGVhbiknLFxuICBjdXN0b21DbGFzczogJyhzdHJpbmd8ZnVuY3Rpb24pJyxcbiAgZGVsYXk6ICcobnVtYmVyfG9iamVjdCknLFxuICBmYWxsYmFja1BsYWNlbWVudHM6ICdhcnJheScsXG4gIGh0bWw6ICdib29sZWFuJyxcbiAgb2Zmc2V0OiAnKGFycmF5fHN0cmluZ3xmdW5jdGlvbiknLFxuICBwbGFjZW1lbnQ6ICcoc3RyaW5nfGZ1bmN0aW9uKScsXG4gIHBvcHBlckNvbmZpZzogJyhudWxsfG9iamVjdHxmdW5jdGlvbiknLFxuICBzYW5pdGl6ZTogJ2Jvb2xlYW4nLFxuICBzYW5pdGl6ZUZuOiAnKG51bGx8ZnVuY3Rpb24pJyxcbiAgc2VsZWN0b3I6ICcoc3RyaW5nfGJvb2xlYW4pJyxcbiAgdGVtcGxhdGU6ICdzdHJpbmcnLFxuICB0aXRsZTogJyhzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknLFxuICB0cmlnZ2VyOiAnc3RyaW5nJ1xufTtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRvb2x0aXAgZXh0ZW5kcyBCYXNlQ29tcG9uZW50IHtcbiAgY29uc3RydWN0b3IoZWxlbWVudCwgY29uZmlnKSB7XG4gICAgaWYgKHR5cGVvZiBQb3BwZXIgPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdCb290c3RyYXBcXCdzIHRvb2x0aXBzIHJlcXVpcmUgUG9wcGVyIChodHRwczovL3BvcHBlci5qcy5vcmcpJyk7XG4gICAgfVxuXG4gICAgc3VwZXIoZWxlbWVudCwgY29uZmlnKTsgLy8gUHJpdmF0ZVxuXG4gICAgdGhpcy5faXNFbmFibGVkID0gdHJ1ZTtcbiAgICB0aGlzLl90aW1lb3V0ID0gMDtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXIgPSB7fTtcbiAgICB0aGlzLl9wb3BwZXIgPSBudWxsO1xuICAgIHRoaXMuX3RlbXBsYXRlRmFjdG9yeSA9IG51bGw7XG4gICAgdGhpcy5fbmV3Q29udGVudCA9IG51bGw7IC8vIFByb3RlY3RlZFxuXG4gICAgdGhpcy50aXAgPSBudWxsO1xuXG4gICAgdGhpcy5fc2V0TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAoIXRoaXMuX2NvbmZpZy5zZWxlY3Rvcikge1xuICAgICAgdGhpcy5fZml4VGl0bGUoKTtcbiAgICB9XG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDM7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQzO1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDQ7XG4gIH0gLy8gUHVibGljXG5cblxuICBlbmFibGUoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGRpc2FibGUoKSB7XG4gICAgdGhpcy5faXNFbmFibGVkID0gZmFsc2U7XG4gIH1cblxuICB0b2dnbGVFbmFibGVkKCkge1xuICAgIHRoaXMuX2lzRW5hYmxlZCA9ICF0aGlzLl9pc0VuYWJsZWQ7XG4gIH1cblxuICB0b2dnbGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc0VuYWJsZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyLmNsaWNrID0gIXRoaXMuX2FjdGl2ZVRyaWdnZXIuY2xpY2s7XG5cbiAgICBpZiAodGhpcy5faXNTaG93bigpKSB7XG4gICAgICB0aGlzLl9sZWF2ZSgpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fZW50ZXIoKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgY2xlYXJUaW1lb3V0KHRoaXMuX3RpbWVvdXQpO1xuICAgIEV2ZW50SGFuZGxlci5vZmYodGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX01PREFMKSwgRVZFTlRfTU9EQUxfSElERSwgdGhpcy5faGlkZU1vZGFsSGFuZGxlcik7XG5cbiAgICBpZiAodGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RpdGxlJywgdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnKSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuXG4gICAgc3VwZXIuZGlzcG9zZSgpO1xuICB9XG5cbiAgc2hvdygpIHtcbiAgICBpZiAodGhpcy5fZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09PSAnbm9uZScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlIHVzZSBzaG93IG9uIHZpc2libGUgZWxlbWVudHMnKTtcbiAgICB9XG5cbiAgICBpZiAoISh0aGlzLl9pc1dpdGhDb250ZW50KCkgJiYgdGhpcy5faXNFbmFibGVkKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHNob3dFdmVudCA9IEV2ZW50SGFuZGxlci50cmlnZ2VyKHRoaXMuX2VsZW1lbnQsIHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX1NIT1ckMikpO1xuICAgIGNvbnN0IHNoYWRvd1Jvb3QgPSBmaW5kU2hhZG93Um9vdCh0aGlzLl9lbGVtZW50KTtcblxuICAgIGNvbnN0IGlzSW5UaGVEb20gPSAoc2hhZG93Um9vdCB8fCB0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KS5jb250YWlucyh0aGlzLl9lbGVtZW50KTtcblxuICAgIGlmIChzaG93RXZlbnQuZGVmYXVsdFByZXZlbnRlZCB8fCAhaXNJblRoZURvbSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gdG9kbyB2NiByZW1vdmUgdGhpcyBPUiBtYWtlIGl0IG9wdGlvbmFsXG5cblxuICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKTtcblxuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKTtcblxuICAgIHRoaXMuX2VsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLWRlc2NyaWJlZGJ5JywgdGlwLmdldEF0dHJpYnV0ZSgnaWQnKSk7XG5cbiAgICBjb25zdCB7XG4gICAgICBjb250YWluZXJcbiAgICB9ID0gdGhpcy5fY29uZmlnO1xuXG4gICAgaWYgKCF0aGlzLl9lbGVtZW50Lm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNvbnRhaW5zKHRoaXMudGlwKSkge1xuICAgICAgY29udGFpbmVyLmFwcGVuZCh0aXApO1xuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSU5TRVJURUQpKTtcbiAgICB9XG5cbiAgICB0aGlzLl9wb3BwZXIgPSB0aGlzLl9jcmVhdGVQb3BwZXIodGlwKTtcbiAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX1NIT1ckMik7IC8vIElmIHRoaXMgaXMgYSB0b3VjaC1lbmFibGVkIGRldmljZSB3ZSBhZGQgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHRvIHRoZSBib2R5J3MgaW1tZWRpYXRlIGNoaWxkcmVuO1xuICAgIC8vIG9ubHkgbmVlZGVkIGJlY2F1c2Ugb2YgYnJva2VuIGV2ZW50IGRlbGVnYXRpb24gb24gaU9TXG4gICAgLy8gaHR0cHM6Ly93d3cucXVpcmtzbW9kZS5vcmcvYmxvZy9hcmNoaXZlcy8yMDE0LzAyL21vdXNlX2V2ZW50X2J1Yi5odG1sXG5cbiAgICBpZiAoJ29udG91Y2hzdGFydCcgaW4gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgW10uY29uY2F0KC4uLmRvY3VtZW50LmJvZHkuY2hpbGRyZW4pKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbihlbGVtZW50LCAnbW91c2VvdmVyJywgbm9vcCk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uc3QgY29tcGxldGUgPSAoKSA9PiB7XG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9TSE9XTiQyKSk7XG5cbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHRoaXMuX2xlYXZlKCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2lzSG92ZXJlZCA9IGZhbHNlO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLnRpcCwgdGhpcy5faXNBbmltYXRlZCgpKTtcbiAgfVxuXG4gIGhpZGUoKSB7XG4gICAgaWYgKCF0aGlzLl9pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9ISURFJDIpKTtcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IHRpcCA9IHRoaXMuX2dldFRpcEVsZW1lbnQoKTtcblxuICAgIHRpcC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPVyQyKTsgLy8gSWYgdGhpcyBpcyBhIHRvdWNoLWVuYWJsZWQgZGV2aWNlIHdlIHJlbW92ZSB0aGUgZXh0cmFcbiAgICAvLyBlbXB0eSBtb3VzZW92ZXIgbGlzdGVuZXJzIHdlIGFkZGVkIGZvciBpT1Mgc3VwcG9ydFxuXG4gICAgaWYgKCdvbnRvdWNoc3RhcnQnIGluIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkge1xuICAgICAgZm9yIChjb25zdCBlbGVtZW50IG9mIFtdLmNvbmNhdCguLi5kb2N1bWVudC5ib2R5LmNoaWxkcmVuKSkge1xuICAgICAgICBFdmVudEhhbmRsZXIub2ZmKGVsZW1lbnQsICdtb3VzZW92ZXInLCBub29wKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9hY3RpdmVUcmlnZ2VyW1RSSUdHRVJfQ0xJQ0tdID0gZmFsc2U7XG4gICAgdGhpcy5fYWN0aXZlVHJpZ2dlcltUUklHR0VSX0ZPQ1VTXSA9IGZhbHNlO1xuICAgIHRoaXMuX2FjdGl2ZVRyaWdnZXJbVFJJR0dFUl9IT1ZFUl0gPSBmYWxzZTtcbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBudWxsOyAvLyBpdCBpcyBhIHRyaWNrIHRvIHN1cHBvcnQgbWFudWFsIHRyaWdnZXJpbmdcblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgaWYgKHRoaXMuX2lzV2l0aEFjdGl2ZVRyaWdnZXIoKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICAgIHRoaXMuX2Rpc3Bvc2VQb3BwZXIoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfSElEREVOJDIpKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy50aXAsIHRoaXMuX2lzQW5pbWF0ZWQoKSk7XG4gIH1cblxuICB1cGRhdGUoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLnVwZGF0ZSgpO1xuICAgIH1cbiAgfSAvLyBQcm90ZWN0ZWRcblxuXG4gIF9pc1dpdGhDb250ZW50KCkge1xuICAgIHJldHVybiBCb29sZWFuKHRoaXMuX2dldFRpdGxlKCkpO1xuICB9XG5cbiAgX2dldFRpcEVsZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLnRpcCkge1xuICAgICAgdGhpcy50aXAgPSB0aGlzLl9jcmVhdGVUaXBFbGVtZW50KHRoaXMuX25ld0NvbnRlbnQgfHwgdGhpcy5fZ2V0Q29udGVudEZvclRlbXBsYXRlKCkpO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLnRpcDtcbiAgfVxuXG4gIF9jcmVhdGVUaXBFbGVtZW50KGNvbnRlbnQpIHtcbiAgICBjb25zdCB0aXAgPSB0aGlzLl9nZXRUZW1wbGF0ZUZhY3RvcnkoY29udGVudCkudG9IdG1sKCk7IC8vIHRvZG86IHJlbW92ZSB0aGlzIGNoZWNrIG9uIHY2XG5cblxuICAgIGlmICghdGlwKSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aXAuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0ZBREUkMiwgQ0xBU1NfTkFNRV9TSE9XJDIpOyAvLyB0b2RvOiBvbiB2NiB0aGUgZm9sbG93aW5nIGNhbiBiZSBhY2hpZXZlZCB3aXRoIENTUyBvbmx5XG5cbiAgICB0aXAuY2xhc3NMaXN0LmFkZChgYnMtJHt0aGlzLmNvbnN0cnVjdG9yLk5BTUV9LWF1dG9gKTtcbiAgICBjb25zdCB0aXBJZCA9IGdldFVJRCh0aGlzLmNvbnN0cnVjdG9yLk5BTUUpLnRvU3RyaW5nKCk7XG4gICAgdGlwLnNldEF0dHJpYnV0ZSgnaWQnLCB0aXBJZCk7XG5cbiAgICBpZiAodGhpcy5faXNBbmltYXRlZCgpKSB7XG4gICAgICB0aXAuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0ZBREUkMik7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRpcDtcbiAgfVxuXG4gIHNldENvbnRlbnQoY29udGVudCkge1xuICAgIHRoaXMuX25ld0NvbnRlbnQgPSBjb250ZW50O1xuXG4gICAgaWYgKHRoaXMuX2lzU2hvd24oKSkge1xuICAgICAgdGhpcy5fZGlzcG9zZVBvcHBlcigpO1xuXG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBfZ2V0VGVtcGxhdGVGYWN0b3J5KGNvbnRlbnQpIHtcbiAgICBpZiAodGhpcy5fdGVtcGxhdGVGYWN0b3J5KSB7XG4gICAgICB0aGlzLl90ZW1wbGF0ZUZhY3RvcnkuY2hhbmdlQ29udGVudChjb250ZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdGVtcGxhdGVGYWN0b3J5ID0gbmV3IFRlbXBsYXRlRmFjdG9yeSh7IC4uLnRoaXMuX2NvbmZpZyxcbiAgICAgICAgLy8gdGhlIGBjb250ZW50YCB2YXIgaGFzIHRvIGJlIGFmdGVyIGB0aGlzLl9jb25maWdgXG4gICAgICAgIC8vIHRvIG92ZXJyaWRlIGNvbmZpZy5jb250ZW50IGluIGNhc2Ugb2YgcG9wb3ZlclxuICAgICAgICBjb250ZW50LFxuICAgICAgICBleHRyYUNsYXNzOiB0aGlzLl9yZXNvbHZlUG9zc2libGVGdW5jdGlvbih0aGlzLl9jb25maWcuY3VzdG9tQ2xhc3MpXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVGYWN0b3J5O1xuICB9XG5cbiAgX2dldENvbnRlbnRGb3JUZW1wbGF0ZSgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgW1NFTEVDVE9SX1RPT0xUSVBfSU5ORVJdOiB0aGlzLl9nZXRUaXRsZSgpXG4gICAgfTtcbiAgfVxuXG4gIF9nZXRUaXRsZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLnRpdGxlKSB8fCB0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnZGF0YS1icy1vcmlnaW5hbC10aXRsZScpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpIHtcbiAgICByZXR1cm4gdGhpcy5jb25zdHJ1Y3Rvci5nZXRPckNyZWF0ZUluc3RhbmNlKGV2ZW50LmRlbGVnYXRlVGFyZ2V0LCB0aGlzLl9nZXREZWxlZ2F0ZUNvbmZpZygpKTtcbiAgfVxuXG4gIF9pc0FuaW1hdGVkKCkge1xuICAgIHJldHVybiB0aGlzLl9jb25maWcuYW5pbWF0aW9uIHx8IHRoaXMudGlwICYmIHRoaXMudGlwLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMik7XG4gIH1cblxuICBfaXNTaG93bigpIHtcbiAgICByZXR1cm4gdGhpcy50aXAgJiYgdGhpcy50aXAuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyQyKTtcbiAgfVxuXG4gIF9jcmVhdGVQb3BwZXIodGlwKSB7XG4gICAgY29uc3QgcGxhY2VtZW50ID0gdHlwZW9mIHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQgPT09ICdmdW5jdGlvbicgPyB0aGlzLl9jb25maWcucGxhY2VtZW50LmNhbGwodGhpcywgdGlwLCB0aGlzLl9lbGVtZW50KSA6IHRoaXMuX2NvbmZpZy5wbGFjZW1lbnQ7XG4gICAgY29uc3QgYXR0YWNobWVudCA9IEF0dGFjaG1lbnRNYXBbcGxhY2VtZW50LnRvVXBwZXJDYXNlKCldO1xuICAgIHJldHVybiBQb3BwZXIuY3JlYXRlUG9wcGVyKHRoaXMuX2VsZW1lbnQsIHRpcCwgdGhpcy5fZ2V0UG9wcGVyQ29uZmlnKGF0dGFjaG1lbnQpKTtcbiAgfVxuXG4gIF9nZXRPZmZzZXQoKSB7XG4gICAgY29uc3Qge1xuICAgICAgb2Zmc2V0XG4gICAgfSA9IHRoaXMuX2NvbmZpZztcblxuICAgIGlmICh0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIG9mZnNldC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VJbnQodmFsdWUsIDEwKSk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvZmZzZXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIHJldHVybiBwb3BwZXJEYXRhID0+IG9mZnNldChwb3BwZXJEYXRhLCB0aGlzLl9lbGVtZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2Zmc2V0O1xuICB9XG5cbiAgX3Jlc29sdmVQb3NzaWJsZUZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB0eXBlb2YgYXJnID09PSAnZnVuY3Rpb24nID8gYXJnLmNhbGwodGhpcy5fZWxlbWVudCkgOiBhcmc7XG4gIH1cblxuICBfZ2V0UG9wcGVyQ29uZmlnKGF0dGFjaG1lbnQpIHtcbiAgICBjb25zdCBkZWZhdWx0QnNQb3BwZXJDb25maWcgPSB7XG4gICAgICBwbGFjZW1lbnQ6IGF0dGFjaG1lbnQsXG4gICAgICBtb2RpZmllcnM6IFt7XG4gICAgICAgIG5hbWU6ICdmbGlwJyxcbiAgICAgICAgb3B0aW9uczoge1xuICAgICAgICAgIGZhbGxiYWNrUGxhY2VtZW50czogdGhpcy5fY29uZmlnLmZhbGxiYWNrUGxhY2VtZW50c1xuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgb2Zmc2V0OiB0aGlzLl9nZXRPZmZzZXQoKVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdwcmV2ZW50T3ZlcmZsb3cnLFxuICAgICAgICBvcHRpb25zOiB7XG4gICAgICAgICAgYm91bmRhcnk6IHRoaXMuX2NvbmZpZy5ib3VuZGFyeVxuICAgICAgICB9XG4gICAgICB9LCB7XG4gICAgICAgIG5hbWU6ICdhcnJvdycsXG4gICAgICAgIG9wdGlvbnM6IHtcbiAgICAgICAgICBlbGVtZW50OiBgLiR7dGhpcy5jb25zdHJ1Y3Rvci5OQU1FfS1hcnJvd2BcbiAgICAgICAgfVxuICAgICAgfSwge1xuICAgICAgICBuYW1lOiAncHJlU2V0UGxhY2VtZW50JyxcbiAgICAgICAgZW5hYmxlZDogdHJ1ZSxcbiAgICAgICAgcGhhc2U6ICdiZWZvcmVNYWluJyxcbiAgICAgICAgZm46IGRhdGEgPT4ge1xuICAgICAgICAgIC8vIFByZS1zZXQgUG9wcGVyJ3MgcGxhY2VtZW50IGF0dHJpYnV0ZSBpbiBvcmRlciB0byByZWFkIHRoZSBhcnJvdyBzaXplcyBwcm9wZXJseS5cbiAgICAgICAgICAvLyBPdGhlcndpc2UsIFBvcHBlciBtaXhlcyB1cCB0aGUgd2lkdGggYW5kIGhlaWdodCBkaW1lbnNpb25zIHNpbmNlIHRoZSBpbml0aWFsIGFycm93IHN0eWxlIGlzIGZvciB0b3AgcGxhY2VtZW50XG4gICAgICAgICAgdGhpcy5fZ2V0VGlwRWxlbWVudCgpLnNldEF0dHJpYnV0ZSgnZGF0YS1wb3BwZXItcGxhY2VtZW50JywgZGF0YS5zdGF0ZS5wbGFjZW1lbnQpO1xuICAgICAgICB9XG4gICAgICB9XVxuICAgIH07XG4gICAgcmV0dXJuIHsgLi4uZGVmYXVsdEJzUG9wcGVyQ29uZmlnLFxuICAgICAgLi4uKHR5cGVvZiB0aGlzLl9jb25maWcucG9wcGVyQ29uZmlnID09PSAnZnVuY3Rpb24nID8gdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZyhkZWZhdWx0QnNQb3BwZXJDb25maWcpIDogdGhpcy5fY29uZmlnLnBvcHBlckNvbmZpZylcbiAgICB9O1xuICB9XG5cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBjb25zdCB0cmlnZ2VycyA9IHRoaXMuX2NvbmZpZy50cmlnZ2VyLnNwbGl0KCcgJyk7XG5cbiAgICBmb3IgKGNvbnN0IHRyaWdnZXIgb2YgdHJpZ2dlcnMpIHtcbiAgICAgIGlmICh0cmlnZ2VyID09PSAnY2xpY2snKSB7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9DTElDSyQxKSwgdGhpcy5fY29uZmlnLnNlbGVjdG9yLCBldmVudCA9PiB7XG4gICAgICAgICAgY29uc3QgY29udGV4dCA9IHRoaXMuX2luaXRpYWxpemVPbkRlbGVnYXRlZFRhcmdldChldmVudCk7XG5cbiAgICAgICAgICBjb250ZXh0LnRvZ2dsZSgpO1xuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSBpZiAodHJpZ2dlciAhPT0gVFJJR0dFUl9NQU5VQUwpIHtcbiAgICAgICAgY29uc3QgZXZlbnRJbiA9IHRyaWdnZXIgPT09IFRSSUdHRVJfSE9WRVIgPyB0aGlzLmNvbnN0cnVjdG9yLmV2ZW50TmFtZShFVkVOVF9NT1VTRUVOVEVSKSA6IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX0ZPQ1VTSU4kMSk7XG4gICAgICAgIGNvbnN0IGV2ZW50T3V0ID0gdHJpZ2dlciA9PT0gVFJJR0dFUl9IT1ZFUiA/IHRoaXMuY29uc3RydWN0b3IuZXZlbnROYW1lKEVWRU5UX01PVVNFTEVBVkUpIDogdGhpcy5jb25zdHJ1Y3Rvci5ldmVudE5hbWUoRVZFTlRfRk9DVVNPVVQkMSk7XG4gICAgICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBldmVudEluLCB0aGlzLl9jb25maWcuc2VsZWN0b3IsIGV2ZW50ID0+IHtcbiAgICAgICAgICBjb25zdCBjb250ZXh0ID0gdGhpcy5faW5pdGlhbGl6ZU9uRGVsZWdhdGVkVGFyZ2V0KGV2ZW50KTtcblxuICAgICAgICAgIGNvbnRleHQuX2FjdGl2ZVRyaWdnZXJbZXZlbnQudHlwZSA9PT0gJ2ZvY3VzaW4nID8gVFJJR0dFUl9GT0NVUyA6IFRSSUdHRVJfSE9WRVJdID0gdHJ1ZTtcblxuICAgICAgICAgIGNvbnRleHQuX2VudGVyKCk7XG4gICAgICAgIH0pO1xuICAgICAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgZXZlbnRPdXQsIHRoaXMuX2NvbmZpZy5zZWxlY3RvciwgZXZlbnQgPT4ge1xuICAgICAgICAgIGNvbnN0IGNvbnRleHQgPSB0aGlzLl9pbml0aWFsaXplT25EZWxlZ2F0ZWRUYXJnZXQoZXZlbnQpO1xuXG4gICAgICAgICAgY29udGV4dC5fYWN0aXZlVHJpZ2dlcltldmVudC50eXBlID09PSAnZm9jdXNvdXQnID8gVFJJR0dFUl9GT0NVUyA6IFRSSUdHRVJfSE9WRVJdID0gY29udGV4dC5fZWxlbWVudC5jb250YWlucyhldmVudC5yZWxhdGVkVGFyZ2V0KTtcblxuICAgICAgICAgIGNvbnRleHQuX2xlYXZlKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgICBpZiAodGhpcy5fZWxlbWVudCkge1xuICAgICAgICB0aGlzLmhpZGUoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQuY2xvc2VzdChTRUxFQ1RPUl9NT0RBTCksIEVWRU5UX01PREFMX0hJREUsIHRoaXMuX2hpZGVNb2RhbEhhbmRsZXIpO1xuICB9XG5cbiAgX2ZpeFRpdGxlKCkge1xuICAgIGNvbnN0IHRpdGxlID0gdGhpcy5fZWxlbWVudC5nZXRBdHRyaWJ1dGUoJ3RpdGxlJyk7XG5cbiAgICBpZiAoIXRpdGxlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKCF0aGlzLl9lbGVtZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1sYWJlbCcpICYmICF0aGlzLl9lbGVtZW50LnRleHRDb250ZW50LnRyaW0oKSkge1xuICAgICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtbGFiZWwnLCB0aXRsZSk7XG4gICAgfVxuXG4gICAgdGhpcy5fZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtYnMtb3JpZ2luYWwtdGl0bGUnLCB0aXRsZSk7IC8vIERPIE5PVCBVU0UgSVQuIElzIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cblxuICAgIHRoaXMuX2VsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0aXRsZScpO1xuICB9XG5cbiAgX2VudGVyKCkge1xuICAgIGlmICh0aGlzLl9pc1Nob3duKCkgfHwgdGhpcy5faXNIb3ZlcmVkKSB7XG4gICAgICB0aGlzLl9pc0hvdmVyZWQgPSB0cnVlO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2lzSG92ZXJlZCA9IHRydWU7XG5cbiAgICB0aGlzLl9zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5zaG93KCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5LnNob3cpO1xuICB9XG5cbiAgX2xlYXZlKCkge1xuICAgIGlmICh0aGlzLl9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9pc0hvdmVyZWQgPSBmYWxzZTtcblxuICAgIHRoaXMuX3NldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKCF0aGlzLl9pc0hvdmVyZWQpIHtcbiAgICAgICAgdGhpcy5oaWRlKCk7XG4gICAgICB9XG4gICAgfSwgdGhpcy5fY29uZmlnLmRlbGF5LmhpZGUpO1xuICB9XG5cbiAgX3NldFRpbWVvdXQoaGFuZGxlciwgdGltZW91dCkge1xuICAgIGNsZWFyVGltZW91dCh0aGlzLl90aW1lb3V0KTtcbiAgICB0aGlzLl90aW1lb3V0ID0gc2V0VGltZW91dChoYW5kbGVyLCB0aW1lb3V0KTtcbiAgfVxuXG4gIF9pc1dpdGhBY3RpdmVUcmlnZ2VyKCkge1xuICAgIHJldHVybiBPYmplY3QudmFsdWVzKHRoaXMuX2FjdGl2ZVRyaWdnZXIpLmluY2x1ZGVzKHRydWUpO1xuICB9XG5cbiAgX2dldENvbmZpZyhjb25maWcpIHtcbiAgICBjb25zdCBkYXRhQXR0cmlidXRlcyA9IE1hbmlwdWxhdG9yLmdldERhdGFBdHRyaWJ1dGVzKHRoaXMuX2VsZW1lbnQpO1xuXG4gICAgZm9yIChjb25zdCBkYXRhQXR0cmlidXRlIG9mIE9iamVjdC5rZXlzKGRhdGFBdHRyaWJ1dGVzKSkge1xuICAgICAgaWYgKERJU0FMTE9XRURfQVRUUklCVVRFUy5oYXMoZGF0YUF0dHJpYnV0ZSkpIHtcbiAgICAgICAgZGVsZXRlIGRhdGFBdHRyaWJ1dGVzW2RhdGFBdHRyaWJ1dGVdO1xuICAgICAgfVxuICAgIH1cblxuICAgIGNvbmZpZyA9IHsgLi4uZGF0YUF0dHJpYnV0ZXMsXG4gICAgICAuLi4odHlwZW9mIGNvbmZpZyA9PT0gJ29iamVjdCcgJiYgY29uZmlnID8gY29uZmlnIDoge30pXG4gICAgfTtcbiAgICBjb25maWcgPSB0aGlzLl9tZXJnZUNvbmZpZ09iaihjb25maWcpO1xuICAgIGNvbmZpZyA9IHRoaXMuX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKTtcblxuICAgIHRoaXMuX3R5cGVDaGVja0NvbmZpZyhjb25maWcpO1xuXG4gICAgcmV0dXJuIGNvbmZpZztcbiAgfVxuXG4gIF9jb25maWdBZnRlck1lcmdlKGNvbmZpZykge1xuICAgIGNvbmZpZy5jb250YWluZXIgPSBjb25maWcuY29udGFpbmVyID09PSBmYWxzZSA/IGRvY3VtZW50LmJvZHkgOiBnZXRFbGVtZW50KGNvbmZpZy5jb250YWluZXIpO1xuXG4gICAgaWYgKHR5cGVvZiBjb25maWcuZGVsYXkgPT09ICdudW1iZXInKSB7XG4gICAgICBjb25maWcuZGVsYXkgPSB7XG4gICAgICAgIHNob3c6IGNvbmZpZy5kZWxheSxcbiAgICAgICAgaGlkZTogY29uZmlnLmRlbGF5XG4gICAgICB9O1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgY29uZmlnLnRpdGxlID09PSAnbnVtYmVyJykge1xuICAgICAgY29uZmlnLnRpdGxlID0gY29uZmlnLnRpdGxlLnRvU3RyaW5nKCk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25maWcuY29udGVudCA9PT0gJ251bWJlcicpIHtcbiAgICAgIGNvbmZpZy5jb250ZW50ID0gY29uZmlnLmNvbnRlbnQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2dldERlbGVnYXRlQ29uZmlnKCkge1xuICAgIGNvbnN0IGNvbmZpZyA9IHt9O1xuXG4gICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5fY29uZmlnKSB7XG4gICAgICBpZiAodGhpcy5jb25zdHJ1Y3Rvci5EZWZhdWx0W2tleV0gIT09IHRoaXMuX2NvbmZpZ1trZXldKSB7XG4gICAgICAgIGNvbmZpZ1trZXldID0gdGhpcy5fY29uZmlnW2tleV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgY29uZmlnLnNlbGVjdG9yID0gZmFsc2U7XG4gICAgY29uZmlnLnRyaWdnZXIgPSAnbWFudWFsJzsgLy8gSW4gdGhlIGZ1dHVyZSBjYW4gYmUgcmVwbGFjZWQgd2l0aDpcbiAgICAvLyBjb25zdCBrZXlzV2l0aERpZmZlcmVudFZhbHVlcyA9IE9iamVjdC5lbnRyaWVzKHRoaXMuX2NvbmZpZykuZmlsdGVyKGVudHJ5ID0+IHRoaXMuY29uc3RydWN0b3IuRGVmYXVsdFtlbnRyeVswXV0gIT09IHRoaXMuX2NvbmZpZ1tlbnRyeVswXV0pXG4gICAgLy8gYE9iamVjdC5mcm9tRW50cmllcyhrZXlzV2l0aERpZmZlcmVudFZhbHVlcylgXG5cbiAgICByZXR1cm4gY29uZmlnO1xuICB9XG5cbiAgX2Rpc3Bvc2VQb3BwZXIoKSB7XG4gICAgaWYgKHRoaXMuX3BvcHBlcikge1xuICAgICAgdGhpcy5fcG9wcGVyLmRlc3Ryb3koKTtcblxuICAgICAgdGhpcy5fcG9wcGVyID0gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50aXApIHtcbiAgICAgIHRoaXMudGlwLnJlbW92ZSgpO1xuICAgICAgdGhpcy50aXAgPSBudWxsO1xuICAgIH1cbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gVG9vbHRpcC5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMsIGNvbmZpZyk7XG5cbiAgICAgIGlmICh0eXBlb2YgY29uZmlnICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBObyBtZXRob2QgbmFtZWQgXCIke2NvbmZpZ31cImApO1xuICAgICAgfVxuXG4gICAgICBkYXRhW2NvbmZpZ10oKTtcbiAgICB9KTtcbiAgfVxuXG59XG4vKipcbiAqIGpRdWVyeVxuICovXG5cblxuZGVmaW5lSlF1ZXJ5UGx1Z2luKFRvb2x0aXApO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHBvcG92ZXIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDMgPSAncG9wb3Zlcic7XG5jb25zdCBTRUxFQ1RPUl9USVRMRSA9ICcucG9wb3Zlci1oZWFkZXInO1xuY29uc3QgU0VMRUNUT1JfQ09OVEVOVCA9ICcucG9wb3Zlci1ib2R5JztcbmNvbnN0IERlZmF1bHQkMiA9IHsgLi4uVG9vbHRpcC5EZWZhdWx0LFxuICBjb250ZW50OiAnJyxcbiAgb2Zmc2V0OiBbMCwgOF0sXG4gIHBsYWNlbWVudDogJ3JpZ2h0JyxcbiAgdGVtcGxhdGU6ICc8ZGl2IGNsYXNzPVwicG9wb3ZlclwiIHJvbGU9XCJ0b29sdGlwXCI+JyArICc8ZGl2IGNsYXNzPVwicG9wb3Zlci1hcnJvd1wiPjwvZGl2PicgKyAnPGgzIGNsYXNzPVwicG9wb3Zlci1oZWFkZXJcIj48L2gzPicgKyAnPGRpdiBjbGFzcz1cInBvcG92ZXItYm9keVwiPjwvZGl2PicgKyAnPC9kaXY+JyxcbiAgdHJpZ2dlcjogJ2NsaWNrJ1xufTtcbmNvbnN0IERlZmF1bHRUeXBlJDIgPSB7IC4uLlRvb2x0aXAuRGVmYXVsdFR5cGUsXG4gIGNvbnRlbnQ6ICcobnVsbHxzdHJpbmd8ZWxlbWVudHxmdW5jdGlvbiknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgUG9wb3ZlciBleHRlbmRzIFRvb2x0aXAge1xuICAvLyBHZXR0ZXJzXG4gIHN0YXRpYyBnZXQgRGVmYXVsdCgpIHtcbiAgICByZXR1cm4gRGVmYXVsdCQyO1xuICB9XG5cbiAgc3RhdGljIGdldCBEZWZhdWx0VHlwZSgpIHtcbiAgICByZXR1cm4gRGVmYXVsdFR5cGUkMjtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQzO1xuICB9IC8vIE92ZXJyaWRlc1xuXG5cbiAgX2lzV2l0aENvbnRlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldFRpdGxlKCkgfHwgdGhpcy5fZ2V0Q29udGVudCgpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9nZXRDb250ZW50Rm9yVGVtcGxhdGUoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtTRUxFQ1RPUl9USVRMRV06IHRoaXMuX2dldFRpdGxlKCksXG4gICAgICBbU0VMRUNUT1JfQ09OVEVOVF06IHRoaXMuX2dldENvbnRlbnQoKVxuICAgIH07XG4gIH1cblxuICBfZ2V0Q29udGVudCgpIHtcbiAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVBvc3NpYmxlRnVuY3Rpb24odGhpcy5fY29uZmlnLmNvbnRlbnQpO1xuICB9IC8vIFN0YXRpY1xuXG5cbiAgc3RhdGljIGpRdWVyeUludGVyZmFjZShjb25maWcpIHtcbiAgICByZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIGNvbnN0IGRhdGEgPSBQb3BvdmVyLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2NvbmZpZ10gPT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogalF1ZXJ5XG4gKi9cblxuXG5kZWZpbmVKUXVlcnlQbHVnaW4oUG9wb3Zlcik7XG5cbi8qKlxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEJvb3RzdHJhcCAodjUuMi4zKTogc2Nyb2xsc3B5LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSQyID0gJ3Njcm9sbHNweSc7XG5jb25zdCBEQVRBX0tFWSQyID0gJ2JzLnNjcm9sbHNweSc7XG5jb25zdCBFVkVOVF9LRVkkMiA9IGAuJHtEQVRBX0tFWSQyfWA7XG5jb25zdCBEQVRBX0FQSV9LRVkgPSAnLmRhdGEtYXBpJztcbmNvbnN0IEVWRU5UX0FDVElWQVRFID0gYGFjdGl2YXRlJHtFVkVOVF9LRVkkMn1gO1xuY29uc3QgRVZFTlRfQ0xJQ0sgPSBgY2xpY2ske0VWRU5UX0tFWSQyfWA7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJJDEgPSBgbG9hZCR7RVZFTlRfS0VZJDJ9JHtEQVRBX0FQSV9LRVl9YDtcbmNvbnN0IENMQVNTX05BTUVfRFJPUERPV05fSVRFTSA9ICdkcm9wZG93bi1pdGVtJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFJDEgPSAnYWN0aXZlJztcbmNvbnN0IFNFTEVDVE9SX0RBVEFfU1BZID0gJ1tkYXRhLWJzLXNweT1cInNjcm9sbFwiXSc7XG5jb25zdCBTRUxFQ1RPUl9UQVJHRVRfTElOS1MgPSAnW2hyZWZdJztcbmNvbnN0IFNFTEVDVE9SX05BVl9MSVNUX0dST1VQID0gJy5uYXYsIC5saXN0LWdyb3VwJztcbmNvbnN0IFNFTEVDVE9SX05BVl9MSU5LUyA9ICcubmF2LWxpbmsnO1xuY29uc3QgU0VMRUNUT1JfTkFWX0lURU1TID0gJy5uYXYtaXRlbSc7XG5jb25zdCBTRUxFQ1RPUl9MSVNUX0lURU1TID0gJy5saXN0LWdyb3VwLWl0ZW0nO1xuY29uc3QgU0VMRUNUT1JfTElOS19JVEVNUyA9IGAke1NFTEVDVE9SX05BVl9MSU5LU30sICR7U0VMRUNUT1JfTkFWX0lURU1TfSA+ICR7U0VMRUNUT1JfTkFWX0xJTktTfSwgJHtTRUxFQ1RPUl9MSVNUX0lURU1TfWA7XG5jb25zdCBTRUxFQ1RPUl9EUk9QRE9XTiA9ICcuZHJvcGRvd24nO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFJDEgPSAnLmRyb3Bkb3duLXRvZ2dsZSc7XG5jb25zdCBEZWZhdWx0JDEgPSB7XG4gIG9mZnNldDogbnVsbCxcbiAgLy8gVE9ETzogdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJzBweCAwcHggLTI1JScsXG4gIHNtb290aFNjcm9sbDogZmFsc2UsXG4gIHRhcmdldDogbnVsbCxcbiAgdGhyZXNob2xkOiBbMC4xLCAwLjUsIDFdXG59O1xuY29uc3QgRGVmYXVsdFR5cGUkMSA9IHtcbiAgb2Zmc2V0OiAnKG51bWJlcnxudWxsKScsXG4gIC8vIFRPRE8gdjYgQGRlcHJlY2F0ZWQsIGtlZXAgaXQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnNcbiAgcm9vdE1hcmdpbjogJ3N0cmluZycsXG4gIHNtb290aFNjcm9sbDogJ2Jvb2xlYW4nLFxuICB0YXJnZXQ6ICdlbGVtZW50JyxcbiAgdGhyZXNob2xkOiAnYXJyYXknXG59O1xuLyoqXG4gKiBDbGFzcyBkZWZpbml0aW9uXG4gKi9cblxuY2xhc3MgU2Nyb2xsU3B5IGV4dGVuZHMgQmFzZUNvbXBvbmVudCB7XG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQsIGNvbmZpZykge1xuICAgIHN1cGVyKGVsZW1lbnQsIGNvbmZpZyk7IC8vIHRoaXMuX2VsZW1lbnQgaXMgdGhlIG9ic2VydmFibGVzQ29udGFpbmVyIGFuZCBjb25maWcudGFyZ2V0IHRoZSBtZW51IGxpbmtzIHdyYXBwZXJcblxuICAgIHRoaXMuX3RhcmdldExpbmtzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICB0aGlzLl9yb290RWxlbWVudCA9IGdldENvbXB1dGVkU3R5bGUodGhpcy5fZWxlbWVudCkub3ZlcmZsb3dZID09PSAndmlzaWJsZScgPyBudWxsIDogdGhpcy5fZWxlbWVudDtcbiAgICB0aGlzLl9hY3RpdmVUYXJnZXQgPSBudWxsO1xuICAgIHRoaXMuX29ic2VydmVyID0gbnVsbDtcbiAgICB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEgPSB7XG4gICAgICB2aXNpYmxlRW50cnlUb3A6IDAsXG4gICAgICBwYXJlbnRTY3JvbGxUb3A6IDBcbiAgICB9O1xuICAgIHRoaXMucmVmcmVzaCgpOyAvLyBpbml0aWFsaXplXG4gIH0gLy8gR2V0dGVyc1xuXG5cbiAgc3RhdGljIGdldCBEZWZhdWx0KCkge1xuICAgIHJldHVybiBEZWZhdWx0JDE7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZSQxO1xuICB9XG5cbiAgc3RhdGljIGdldCBOQU1FKCkge1xuICAgIHJldHVybiBOQU1FJDI7XG4gIH0gLy8gUHVibGljXG5cblxuICByZWZyZXNoKCkge1xuICAgIHRoaXMuX2luaXRpYWxpemVUYXJnZXRzQW5kT2JzZXJ2YWJsZXMoKTtcblxuICAgIHRoaXMuX21heWJlRW5hYmxlU21vb3RoU2Nyb2xsKCk7XG5cbiAgICBpZiAodGhpcy5fb2JzZXJ2ZXIpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fb2JzZXJ2ZXIgPSB0aGlzLl9nZXROZXdPYnNlcnZlcigpO1xuICAgIH1cblxuICAgIGZvciAoY29uc3Qgc2VjdGlvbiBvZiB0aGlzLl9vYnNlcnZhYmxlU2VjdGlvbnMudmFsdWVzKCkpIHtcbiAgICAgIHRoaXMuX29ic2VydmVyLm9ic2VydmUoc2VjdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZGlzcG9zZSgpIHtcbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG5cbiAgICBzdXBlci5kaXNwb3NlKCk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX2NvbmZpZ0FmdGVyTWVyZ2UoY29uZmlnKSB7XG4gICAgLy8gVE9ETzogb24gdjYgdGFyZ2V0IHNob3VsZCBiZSBnaXZlbiBleHBsaWNpdGx5ICYgcmVtb3ZlIHRoZSB7dGFyZ2V0OiAnc3MtdGFyZ2V0J30gY2FzZVxuICAgIGNvbmZpZy50YXJnZXQgPSBnZXRFbGVtZW50KGNvbmZpZy50YXJnZXQpIHx8IGRvY3VtZW50LmJvZHk7IC8vIFRPRE86IHY2IE9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IHJlYXNvbnMuIFVzZSByb290TWFyZ2luIG9ubHlcblxuICAgIGNvbmZpZy5yb290TWFyZ2luID0gY29uZmlnLm9mZnNldCA/IGAke2NvbmZpZy5vZmZzZXR9cHggMHB4IC0zMCVgIDogY29uZmlnLnJvb3RNYXJnaW47XG5cbiAgICBpZiAodHlwZW9mIGNvbmZpZy50aHJlc2hvbGQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb25maWcudGhyZXNob2xkID0gY29uZmlnLnRocmVzaG9sZC5zcGxpdCgnLCcpLm1hcCh2YWx1ZSA9PiBOdW1iZXIucGFyc2VGbG9hdCh2YWx1ZSkpO1xuICAgIH1cblxuICAgIHJldHVybiBjb25maWc7XG4gIH1cblxuICBfbWF5YmVFbmFibGVTbW9vdGhTY3JvbGwoKSB7XG4gICAgaWYgKCF0aGlzLl9jb25maWcuc21vb3RoU2Nyb2xsKSB7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyB1bnJlZ2lzdGVyIGFueSBwcmV2aW91cyBsaXN0ZW5lcnNcblxuXG4gICAgRXZlbnRIYW5kbGVyLm9mZih0aGlzLl9jb25maWcudGFyZ2V0LCBFVkVOVF9DTElDSyk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2NvbmZpZy50YXJnZXQsIEVWRU5UX0NMSUNLLCBTRUxFQ1RPUl9UQVJHRVRfTElOS1MsIGV2ZW50ID0+IHtcbiAgICAgIGNvbnN0IG9ic2VydmFibGVTZWN0aW9uID0gdGhpcy5fb2JzZXJ2YWJsZVNlY3Rpb25zLmdldChldmVudC50YXJnZXQuaGFzaCk7XG5cbiAgICAgIGlmIChvYnNlcnZhYmxlU2VjdGlvbikge1xuICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICBjb25zdCByb290ID0gdGhpcy5fcm9vdEVsZW1lbnQgfHwgd2luZG93O1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBvYnNlcnZhYmxlU2VjdGlvbi5vZmZzZXRUb3AgLSB0aGlzLl9lbGVtZW50Lm9mZnNldFRvcDtcblxuICAgICAgICBpZiAocm9vdC5zY3JvbGxUbykge1xuICAgICAgICAgIHJvb3Quc2Nyb2xsVG8oe1xuICAgICAgICAgICAgdG9wOiBoZWlnaHQsXG4gICAgICAgICAgICBiZWhhdmlvcjogJ3Ntb290aCdcbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH0gLy8gQ2hyb21lIDYwIGRvZXNuJ3Qgc3VwcG9ydCBgc2Nyb2xsVG9gXG5cblxuICAgICAgICByb290LnNjcm9sbFRvcCA9IGhlaWdodDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIF9nZXROZXdPYnNlcnZlcigpIHtcbiAgICBjb25zdCBvcHRpb25zID0ge1xuICAgICAgcm9vdDogdGhpcy5fcm9vdEVsZW1lbnQsXG4gICAgICB0aHJlc2hvbGQ6IHRoaXMuX2NvbmZpZy50aHJlc2hvbGQsXG4gICAgICByb290TWFyZ2luOiB0aGlzLl9jb25maWcucm9vdE1hcmdpblxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihlbnRyaWVzID0+IHRoaXMuX29ic2VydmVyQ2FsbGJhY2soZW50cmllcyksIG9wdGlvbnMpO1xuICB9IC8vIFRoZSBsb2dpYyBvZiBzZWxlY3Rpb25cblxuXG4gIF9vYnNlcnZlckNhbGxiYWNrKGVudHJpZXMpIHtcbiAgICBjb25zdCB0YXJnZXRFbGVtZW50ID0gZW50cnkgPT4gdGhpcy5fdGFyZ2V0TGlua3MuZ2V0KGAjJHtlbnRyeS50YXJnZXQuaWR9YCk7XG5cbiAgICBjb25zdCBhY3RpdmF0ZSA9IGVudHJ5ID0+IHtcbiAgICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS52aXNpYmxlRW50cnlUb3AgPSBlbnRyeS50YXJnZXQub2Zmc2V0VG9wO1xuXG4gICAgICB0aGlzLl9wcm9jZXNzKHRhcmdldEVsZW1lbnQoZW50cnkpKTtcbiAgICB9O1xuXG4gICAgY29uc3QgcGFyZW50U2Nyb2xsVG9wID0gKHRoaXMuX3Jvb3RFbGVtZW50IHx8IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCkuc2Nyb2xsVG9wO1xuICAgIGNvbnN0IHVzZXJTY3JvbGxzRG93biA9IHBhcmVudFNjcm9sbFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEucGFyZW50U2Nyb2xsVG9wO1xuICAgIHRoaXMuX3ByZXZpb3VzU2Nyb2xsRGF0YS5wYXJlbnRTY3JvbGxUb3AgPSBwYXJlbnRTY3JvbGxUb3A7XG5cbiAgICBmb3IgKGNvbnN0IGVudHJ5IG9mIGVudHJpZXMpIHtcbiAgICAgIGlmICghZW50cnkuaXNJbnRlcnNlY3RpbmcpIHtcbiAgICAgICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gbnVsbDtcblxuICAgICAgICB0aGlzLl9jbGVhckFjdGl2ZUNsYXNzKHRhcmdldEVsZW1lbnQoZW50cnkpKTtcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZW50cnlJc0xvd2VyVGhhblByZXZpb3VzID0gZW50cnkudGFyZ2V0Lm9mZnNldFRvcCA+PSB0aGlzLl9wcmV2aW91c1Njcm9sbERhdGEudmlzaWJsZUVudHJ5VG9wOyAvLyBpZiB3ZSBhcmUgc2Nyb2xsaW5nIGRvd24sIHBpY2sgdGhlIGJpZ2dlciBvZmZzZXRUb3BcblxuICAgICAgaWYgKHVzZXJTY3JvbGxzRG93biAmJiBlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpOyAvLyBpZiBwYXJlbnQgaXNuJ3Qgc2Nyb2xsZWQsIGxldCdzIGtlZXAgdGhlIGZpcnN0IHZpc2libGUgaXRlbSwgYnJlYWtpbmcgdGhlIGl0ZXJhdGlvblxuXG4gICAgICAgIGlmICghcGFyZW50U2Nyb2xsVG9wKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIGlmIHdlIGFyZSBzY3JvbGxpbmcgdXAsIHBpY2sgdGhlIHNtYWxsZXN0IG9mZnNldFRvcFxuXG5cbiAgICAgIGlmICghdXNlclNjcm9sbHNEb3duICYmICFlbnRyeUlzTG93ZXJUaGFuUHJldmlvdXMpIHtcbiAgICAgICAgYWN0aXZhdGUoZW50cnkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIF9pbml0aWFsaXplVGFyZ2V0c0FuZE9ic2VydmFibGVzKCkge1xuICAgIHRoaXMuX3RhcmdldExpbmtzID0gbmV3IE1hcCgpO1xuICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucyA9IG5ldyBNYXAoKTtcbiAgICBjb25zdCB0YXJnZXRMaW5rcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoU0VMRUNUT1JfVEFSR0VUX0xJTktTLCB0aGlzLl9jb25maWcudGFyZ2V0KTtcblxuICAgIGZvciAoY29uc3QgYW5jaG9yIG9mIHRhcmdldExpbmtzKSB7XG4gICAgICAvLyBlbnN1cmUgdGhhdCB0aGUgYW5jaG9yIGhhcyBhbiBpZCBhbmQgaXMgbm90IGRpc2FibGVkXG4gICAgICBpZiAoIWFuY2hvci5oYXNoIHx8IGlzRGlzYWJsZWQoYW5jaG9yKSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY29uc3Qgb2JzZXJ2YWJsZVNlY3Rpb24gPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKGFuY2hvci5oYXNoLCB0aGlzLl9lbGVtZW50KTsgLy8gZW5zdXJlIHRoYXQgdGhlIG9ic2VydmFibGVTZWN0aW9uIGV4aXN0cyAmIGlzIHZpc2libGVcblxuICAgICAgaWYgKGlzVmlzaWJsZShvYnNlcnZhYmxlU2VjdGlvbikpIHtcbiAgICAgICAgdGhpcy5fdGFyZ2V0TGlua3Muc2V0KGFuY2hvci5oYXNoLCBhbmNob3IpO1xuXG4gICAgICAgIHRoaXMuX29ic2VydmFibGVTZWN0aW9ucy5zZXQoYW5jaG9yLmhhc2gsIG9ic2VydmFibGVTZWN0aW9uKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfcHJvY2Vzcyh0YXJnZXQpIHtcbiAgICBpZiAodGhpcy5fYWN0aXZlVGFyZ2V0ID09PSB0YXJnZXQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhckFjdGl2ZUNsYXNzKHRoaXMuX2NvbmZpZy50YXJnZXQpO1xuXG4gICAgdGhpcy5fYWN0aXZlVGFyZ2V0ID0gdGFyZ2V0O1xuICAgIHRhcmdldC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuXG4gICAgdGhpcy5fYWN0aXZhdGVQYXJlbnRzKHRhcmdldCk7XG5cbiAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9BQ1RJVkFURSwge1xuICAgICAgcmVsYXRlZFRhcmdldDogdGFyZ2V0XG4gICAgfSk7XG4gIH1cblxuICBfYWN0aXZhdGVQYXJlbnRzKHRhcmdldCkge1xuICAgIC8vIEFjdGl2YXRlIGRyb3Bkb3duIHBhcmVudHNcbiAgICBpZiAodGFyZ2V0LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0RST1BET1dOX0lURU0pKSB7XG4gICAgICBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSQxLCB0YXJnZXQuY2xvc2VzdChTRUxFQ1RPUl9EUk9QRE9XTikpLmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9BQ1RJVkUkMSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZm9yIChjb25zdCBsaXN0R3JvdXAgb2YgU2VsZWN0b3JFbmdpbmUucGFyZW50cyh0YXJnZXQsIFNFTEVDVE9SX05BVl9MSVNUX0dST1VQKSkge1xuICAgICAgLy8gU2V0IHRyaWdnZXJlZCBsaW5rcyBwYXJlbnRzIGFzIGFjdGl2ZVxuICAgICAgLy8gV2l0aCBib3RoIDx1bD4gYW5kIDxuYXY+IG1hcmt1cCBhIHBhcmVudCBpcyB0aGUgcHJldmlvdXMgc2libGluZyBvZiBhbnkgbmF2IGFuY2VzdG9yXG4gICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgU2VsZWN0b3JFbmdpbmUucHJldihsaXN0R3JvdXAsIFNFTEVDVE9SX0xJTktfSVRFTVMpKSB7XG4gICAgICAgIGl0ZW0uY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBfY2xlYXJBY3RpdmVDbGFzcyhwYXJlbnQpIHtcbiAgICBwYXJlbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0FDVElWRSQxKTtcbiAgICBjb25zdCBhY3RpdmVOb2RlcyA9IFNlbGVjdG9yRW5naW5lLmZpbmQoYCR7U0VMRUNUT1JfVEFSR0VUX0xJTktTfS4ke0NMQVNTX05BTUVfQUNUSVZFJDF9YCwgcGFyZW50KTtcblxuICAgIGZvciAoY29uc3Qgbm9kZSBvZiBhY3RpdmVOb2Rlcykge1xuICAgICAgbm9kZS5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfQUNUSVZFJDEpO1xuICAgIH1cbiAgfSAvLyBTdGF0aWNcblxuXG4gIHN0YXRpYyBqUXVlcnlJbnRlcmZhY2UoY29uZmlnKSB7XG4gICAgcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBkYXRhID0gU2Nyb2xsU3B5LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgIT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgaWYgKGRhdGFbY29uZmlnXSA9PT0gdW5kZWZpbmVkIHx8IGNvbmZpZy5zdGFydHNXaXRoKCdfJykgfHwgY29uZmlnID09PSAnY29uc3RydWN0b3InKSB7XG4gICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICB9XG5cbiAgICAgIGRhdGFbY29uZmlnXSgpO1xuICAgIH0pO1xuICB9XG5cbn1cbi8qKlxuICogRGF0YSBBUEkgaW1wbGVtZW50YXRpb25cbiAqL1xuXG5cbkV2ZW50SGFuZGxlci5vbih3aW5kb3csIEVWRU5UX0xPQURfREFUQV9BUEkkMSwgKCkgPT4ge1xuICBmb3IgKGNvbnN0IHNweSBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfU1BZKSkge1xuICAgIFNjcm9sbFNweS5nZXRPckNyZWF0ZUluc3RhbmNlKHNweSk7XG4gIH1cbn0pO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oU2Nyb2xsU3B5KTtcblxuLyoqXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQm9vdHN0cmFwICh2NS4yLjMpOiB0YWIuanNcbiAqIExpY2Vuc2VkIHVuZGVyIE1JVCAoaHR0cHM6Ly9naXRodWIuY29tL3R3YnMvYm9vdHN0cmFwL2Jsb2IvbWFpbi9MSUNFTlNFKVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqL1xuLyoqXG4gKiBDb25zdGFudHNcbiAqL1xuXG5jb25zdCBOQU1FJDEgPSAndGFiJztcbmNvbnN0IERBVEFfS0VZJDEgPSAnYnMudGFiJztcbmNvbnN0IEVWRU5UX0tFWSQxID0gYC4ke0RBVEFfS0VZJDF9YDtcbmNvbnN0IEVWRU5UX0hJREUkMSA9IGBoaWRlJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfSElEREVOJDEgPSBgaGlkZGVuJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfU0hPVyQxID0gYHNob3cke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9TSE9XTiQxID0gYHNob3duJHtFVkVOVF9LRVkkMX1gO1xuY29uc3QgRVZFTlRfQ0xJQ0tfREFUQV9BUEkgPSBgY2xpY2ske0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9LRVlET1dOID0gYGtleWRvd24ke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBFVkVOVF9MT0FEX0RBVEFfQVBJID0gYGxvYWQke0VWRU5UX0tFWSQxfWA7XG5jb25zdCBBUlJPV19MRUZUX0tFWSA9ICdBcnJvd0xlZnQnO1xuY29uc3QgQVJST1dfUklHSFRfS0VZID0gJ0Fycm93UmlnaHQnO1xuY29uc3QgQVJST1dfVVBfS0VZID0gJ0Fycm93VXAnO1xuY29uc3QgQVJST1dfRE9XTl9LRVkgPSAnQXJyb3dEb3duJztcbmNvbnN0IENMQVNTX05BTUVfQUNUSVZFID0gJ2FjdGl2ZSc7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUkMSA9ICdmYWRlJztcbmNvbnN0IENMQVNTX05BTUVfU0hPVyQxID0gJ3Nob3cnO1xuY29uc3QgQ0xBU1NfRFJPUERPV04gPSAnZHJvcGRvd24nO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJy5kcm9wZG93bi10b2dnbGUnO1xuY29uc3QgU0VMRUNUT1JfRFJPUERPV05fTUVOVSA9ICcuZHJvcGRvd24tbWVudSc7XG5jb25zdCBOT1RfU0VMRUNUT1JfRFJPUERPV05fVE9HR0xFID0gJzpub3QoLmRyb3Bkb3duLXRvZ2dsZSknO1xuY29uc3QgU0VMRUNUT1JfVEFCX1BBTkVMID0gJy5saXN0LWdyb3VwLCAubmF2LCBbcm9sZT1cInRhYmxpc3RcIl0nO1xuY29uc3QgU0VMRUNUT1JfT1VURVIgPSAnLm5hdi1pdGVtLCAubGlzdC1ncm91cC1pdGVtJztcbmNvbnN0IFNFTEVDVE9SX0lOTkVSID0gYC5uYXYtbGluayR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX0sIC5saXN0LWdyb3VwLWl0ZW0ke05PVF9TRUxFQ1RPUl9EUk9QRE9XTl9UT0dHTEV9LCBbcm9sZT1cInRhYlwiXSR7Tk9UX1NFTEVDVE9SX0RST1BET1dOX1RPR0dMRX1gO1xuY29uc3QgU0VMRUNUT1JfREFUQV9UT0dHTEUgPSAnW2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCBbZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCBbZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdJzsgLy8gdG9kbzp2NjogY291bGQgYmUgb25seSBgdGFiYFxuXG5jb25zdCBTRUxFQ1RPUl9JTk5FUl9FTEVNID0gYCR7U0VMRUNUT1JfSU5ORVJ9LCAke1NFTEVDVE9SX0RBVEFfVE9HR0xFfWA7XG5jb25zdCBTRUxFQ1RPUl9EQVRBX1RPR0dMRV9BQ1RJVkUgPSBgLiR7Q0xBU1NfTkFNRV9BQ1RJVkV9W2RhdGEtYnMtdG9nZ2xlPVwidGFiXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJwaWxsXCJdLCAuJHtDTEFTU19OQU1FX0FDVElWRX1bZGF0YS1icy10b2dnbGU9XCJsaXN0XCJdYDtcbi8qKlxuICogQ2xhc3MgZGVmaW5pdGlvblxuICovXG5cbmNsYXNzIFRhYiBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50KSB7XG4gICAgc3VwZXIoZWxlbWVudCk7XG4gICAgdGhpcy5fcGFyZW50ID0gdGhpcy5fZWxlbWVudC5jbG9zZXN0KFNFTEVDVE9SX1RBQl9QQU5FTCk7XG5cbiAgICBpZiAoIXRoaXMuX3BhcmVudCkge1xuICAgICAgcmV0dXJuOyAvLyB0b2RvOiBzaG91bGQgVGhyb3cgZXhjZXB0aW9uIG9uIHY2XG4gICAgICAvLyB0aHJvdyBuZXcgVHlwZUVycm9yKGAke2VsZW1lbnQub3V0ZXJIVE1MfSBoYXMgbm90IGEgdmFsaWQgcGFyZW50ICR7U0VMRUNUT1JfSU5ORVJfRUxFTX1gKVxuICAgIH0gLy8gU2V0IHVwIGluaXRpYWwgYXJpYSBhdHRyaWJ1dGVzXG5cblxuICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzKHRoaXMuX3BhcmVudCwgdGhpcy5fZ2V0Q2hpbGRyZW4oKSk7XG5cbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfS0VZRE9XTiwgZXZlbnQgPT4gdGhpcy5fa2V5ZG93bihldmVudCkpO1xuICB9IC8vIEdldHRlcnNcblxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRSQxO1xuICB9IC8vIFB1YmxpY1xuXG5cbiAgc2hvdygpIHtcbiAgICAvLyBTaG93cyB0aGlzIGVsZW0gYW5kIGRlYWN0aXZhdGUgdGhlIGFjdGl2ZSBzaWJsaW5nIGlmIGV4aXN0c1xuICAgIGNvbnN0IGlubmVyRWxlbSA9IHRoaXMuX2VsZW1lbnQ7XG5cbiAgICBpZiAodGhpcy5fZWxlbUlzQWN0aXZlKGlubmVyRWxlbSkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9IC8vIFNlYXJjaCBmb3IgYWN0aXZlIHRhYiBvbiBzYW1lIHBhcmVudCB0byBkZWFjdGl2YXRlIGl0XG5cblxuICAgIGNvbnN0IGFjdGl2ZSA9IHRoaXMuX2dldEFjdGl2ZUVsZW0oKTtcblxuICAgIGNvbnN0IGhpZGVFdmVudCA9IGFjdGl2ZSA/IEV2ZW50SGFuZGxlci50cmlnZ2VyKGFjdGl2ZSwgRVZFTlRfSElERSQxLCB7XG4gICAgICByZWxhdGVkVGFyZ2V0OiBpbm5lckVsZW1cbiAgICB9KSA6IG51bGw7XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIoaW5uZXJFbGVtLCBFVkVOVF9TSE9XJDEsIHtcbiAgICAgIHJlbGF0ZWRUYXJnZXQ6IGFjdGl2ZVxuICAgIH0pO1xuXG4gICAgaWYgKHNob3dFdmVudC5kZWZhdWx0UHJldmVudGVkIHx8IGhpZGVFdmVudCAmJiBoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX2RlYWN0aXZhdGUoYWN0aXZlLCBpbm5lckVsZW0pO1xuXG4gICAgdGhpcy5fYWN0aXZhdGUoaW5uZXJFbGVtLCBhY3RpdmUpO1xuICB9IC8vIFByaXZhdGVcblxuXG4gIF9hY3RpdmF0ZShlbGVtZW50LCByZWxhdGVkRWxlbSkge1xuICAgIGlmICghZWxlbWVudCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGVsZW1lbnQuY2xhc3NMaXN0LmFkZChDTEFTU19OQU1FX0FDVElWRSk7XG5cbiAgICB0aGlzLl9hY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBhY3RpdmF0ZS9zaG93IHRoZSBwcm9wZXIgc2VjdGlvblxuXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKCd0YWJpbmRleCcpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCB0cnVlKTtcblxuICAgICAgdGhpcy5fdG9nZ2xlRHJvcERvd24oZWxlbWVudCwgdHJ1ZSk7XG5cbiAgICAgIEV2ZW50SGFuZGxlci50cmlnZ2VyKGVsZW1lbnQsIEVWRU5UX1NIT1dOJDEsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogcmVsYXRlZEVsZW1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMSkpO1xuICB9XG5cbiAgX2RlYWN0aXZhdGUoZWxlbWVudCwgcmVsYXRlZEVsZW0pIHtcbiAgICBpZiAoIWVsZW1lbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICAgIGVsZW1lbnQuYmx1cigpO1xuXG4gICAgdGhpcy5fZGVhY3RpdmF0ZShnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGVsZW1lbnQpKTsgLy8gU2VhcmNoIGFuZCBkZWFjdGl2YXRlIHRoZSBzaG93biBzZWN0aW9uIHRvb1xuXG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIGlmIChlbGVtZW50LmdldEF0dHJpYnV0ZSgncm9sZScpICE9PSAndGFiJykge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoQ0xBU1NfTkFNRV9TSE9XJDEpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKCdhcmlhLXNlbGVjdGVkJywgZmFsc2UpO1xuICAgICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgICAgIHRoaXMuX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIGZhbHNlKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIoZWxlbWVudCwgRVZFTlRfSElEREVOJDEsIHtcbiAgICAgICAgcmVsYXRlZFRhcmdldDogcmVsYXRlZEVsZW1cbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCBlbGVtZW50LCBlbGVtZW50LmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0ZBREUkMSkpO1xuICB9XG5cbiAgX2tleWRvd24oZXZlbnQpIHtcbiAgICBpZiAoIVtBUlJPV19MRUZUX0tFWSwgQVJST1dfUklHSFRfS0VZLCBBUlJPV19VUF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IC8vIHN0b3BQcm9wYWdhdGlvbi9wcmV2ZW50RGVmYXVsdCBib3RoIGFkZGVkIHRvIHN1cHBvcnQgdXAvZG93biBrZXlzIHdpdGhvdXQgc2Nyb2xsaW5nIHRoZSBwYWdlXG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGNvbnN0IGlzTmV4dCA9IFtBUlJPV19SSUdIVF9LRVksIEFSUk9XX0RPV05fS0VZXS5pbmNsdWRlcyhldmVudC5rZXkpO1xuICAgIGNvbnN0IG5leHRBY3RpdmVFbGVtZW50ID0gZ2V0TmV4dEFjdGl2ZUVsZW1lbnQodGhpcy5fZ2V0Q2hpbGRyZW4oKS5maWx0ZXIoZWxlbWVudCA9PiAhaXNEaXNhYmxlZChlbGVtZW50KSksIGV2ZW50LnRhcmdldCwgaXNOZXh0LCB0cnVlKTtcblxuICAgIGlmIChuZXh0QWN0aXZlRWxlbWVudCkge1xuICAgICAgbmV4dEFjdGl2ZUVsZW1lbnQuZm9jdXMoe1xuICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICB9KTtcbiAgICAgIFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKG5leHRBY3RpdmVFbGVtZW50KS5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgX2dldENoaWxkcmVuKCkge1xuICAgIC8vIGNvbGxlY3Rpb24gb2YgaW5uZXIgZWxlbWVudHNcbiAgICByZXR1cm4gU2VsZWN0b3JFbmdpbmUuZmluZChTRUxFQ1RPUl9JTk5FUl9FTEVNLCB0aGlzLl9wYXJlbnQpO1xuICB9XG5cbiAgX2dldEFjdGl2ZUVsZW0oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2dldENoaWxkcmVuKCkuZmluZChjaGlsZCA9PiB0aGlzLl9lbGVtSXNBY3RpdmUoY2hpbGQpKSB8fCBudWxsO1xuICB9XG5cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzKHBhcmVudCwgY2hpbGRyZW4pIHtcbiAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyhwYXJlbnQsICdyb2xlJywgJ3RhYmxpc3QnKTtcblxuICAgIGZvciAoY29uc3QgY2hpbGQgb2YgY2hpbGRyZW4pIHtcbiAgICAgIHRoaXMuX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZChjaGlsZCk7XG4gICAgfVxuICB9XG5cbiAgX3NldEluaXRpYWxBdHRyaWJ1dGVzT25DaGlsZChjaGlsZCkge1xuICAgIGNoaWxkID0gdGhpcy5fZ2V0SW5uZXJFbGVtZW50KGNoaWxkKTtcblxuICAgIGNvbnN0IGlzQWN0aXZlID0gdGhpcy5fZWxlbUlzQWN0aXZlKGNoaWxkKTtcblxuICAgIGNvbnN0IG91dGVyRWxlbSA9IHRoaXMuX2dldE91dGVyRWxlbWVudChjaGlsZCk7XG5cbiAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ2FyaWEtc2VsZWN0ZWQnLCBpc0FjdGl2ZSk7XG5cbiAgICBpZiAob3V0ZXJFbGVtICE9PSBjaGlsZCkge1xuICAgICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMob3V0ZXJFbGVtLCAncm9sZScsICdwcmVzZW50YXRpb24nKTtcbiAgICB9XG5cbiAgICBpZiAoIWlzQWN0aXZlKSB7XG4gICAgICBjaGlsZC5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHMoY2hpbGQsICdyb2xlJywgJ3RhYicpOyAvLyBzZXQgYXR0cmlidXRlcyB0byB0aGUgcmVsYXRlZCBwYW5lbCB0b29cblxuXG4gICAgdGhpcy5fc2V0SW5pdGlhbEF0dHJpYnV0ZXNPblRhcmdldFBhbmVsKGNoaWxkKTtcbiAgfVxuXG4gIF9zZXRJbml0aWFsQXR0cmlidXRlc09uVGFyZ2V0UGFuZWwoY2hpbGQpIHtcbiAgICBjb25zdCB0YXJnZXQgPSBnZXRFbGVtZW50RnJvbVNlbGVjdG9yKGNoaWxkKTtcblxuICAgIGlmICghdGFyZ2V0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5fc2V0QXR0cmlidXRlSWZOb3RFeGlzdHModGFyZ2V0LCAncm9sZScsICd0YWJwYW5lbCcpO1xuXG4gICAgaWYgKGNoaWxkLmlkKSB7XG4gICAgICB0aGlzLl9zZXRBdHRyaWJ1dGVJZk5vdEV4aXN0cyh0YXJnZXQsICdhcmlhLWxhYmVsbGVkYnknLCBgIyR7Y2hpbGQuaWR9YCk7XG4gICAgfVxuICB9XG5cbiAgX3RvZ2dsZURyb3BEb3duKGVsZW1lbnQsIG9wZW4pIHtcbiAgICBjb25zdCBvdXRlckVsZW0gPSB0aGlzLl9nZXRPdXRlckVsZW1lbnQoZWxlbWVudCk7XG5cbiAgICBpZiAoIW91dGVyRWxlbS5jbGFzc0xpc3QuY29udGFpbnMoQ0xBU1NfRFJPUERPV04pKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgdG9nZ2xlID0gKHNlbGVjdG9yLCBjbGFzc05hbWUpID0+IHtcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSBTZWxlY3RvckVuZ2luZS5maW5kT25lKHNlbGVjdG9yLCBvdXRlckVsZW0pO1xuXG4gICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICBlbGVtZW50LmNsYXNzTGlzdC50b2dnbGUoY2xhc3NOYW1lLCBvcGVuKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdG9nZ2xlKFNFTEVDVE9SX0RST1BET1dOX1RPR0dMRSwgQ0xBU1NfTkFNRV9BQ1RJVkUpO1xuICAgIHRvZ2dsZShTRUxFQ1RPUl9EUk9QRE9XTl9NRU5VLCBDTEFTU19OQU1FX1NIT1ckMSk7XG4gICAgb3V0ZXJFbGVtLnNldEF0dHJpYnV0ZSgnYXJpYS1leHBhbmRlZCcsIG9wZW4pO1xuICB9XG5cbiAgX3NldEF0dHJpYnV0ZUlmTm90RXhpc3RzKGVsZW1lbnQsIGF0dHJpYnV0ZSwgdmFsdWUpIHtcbiAgICBpZiAoIWVsZW1lbnQuaGFzQXR0cmlidXRlKGF0dHJpYnV0ZSkpIHtcbiAgICAgIGVsZW1lbnQuc2V0QXR0cmlidXRlKGF0dHJpYnV0ZSwgdmFsdWUpO1xuICAgIH1cbiAgfVxuXG4gIF9lbGVtSXNBY3RpdmUoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmNsYXNzTGlzdC5jb250YWlucyhDTEFTU19OQU1FX0FDVElWRSk7XG4gIH0gLy8gVHJ5IHRvIGdldCB0aGUgaW5uZXIgZWxlbWVudCAodXN1YWxseSB0aGUgLm5hdi1saW5rKVxuXG5cbiAgX2dldElubmVyRWxlbWVudChlbGVtKSB7XG4gICAgcmV0dXJuIGVsZW0ubWF0Y2hlcyhTRUxFQ1RPUl9JTk5FUl9FTEVNKSA/IGVsZW0gOiBTZWxlY3RvckVuZ2luZS5maW5kT25lKFNFTEVDVE9SX0lOTkVSX0VMRU0sIGVsZW0pO1xuICB9IC8vIFRyeSB0byBnZXQgdGhlIG91dGVyIGVsZW1lbnQgKHVzdWFsbHkgdGhlIC5uYXYtaXRlbSlcblxuXG4gIF9nZXRPdXRlckVsZW1lbnQoZWxlbSkge1xuICAgIHJldHVybiBlbGVtLmNsb3Nlc3QoU0VMRUNUT1JfT1VURVIpIHx8IGVsZW07XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRhYi5nZXRPckNyZWF0ZUluc3RhbmNlKHRoaXMpO1xuXG4gICAgICBpZiAodHlwZW9mIGNvbmZpZyAhPT0gJ3N0cmluZycpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBpZiAoZGF0YVtjb25maWddID09PSB1bmRlZmluZWQgfHwgY29uZmlnLnN0YXJ0c1dpdGgoJ18nKSB8fCBjb25maWcgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgTm8gbWV0aG9kIG5hbWVkIFwiJHtjb25maWd9XCJgKTtcbiAgICAgIH1cblxuICAgICAgZGF0YVtjb25maWddKCk7XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuRXZlbnRIYW5kbGVyLm9uKGRvY3VtZW50LCBFVkVOVF9DTElDS19EQVRBX0FQSSwgU0VMRUNUT1JfREFUQV9UT0dHTEUsIGZ1bmN0aW9uIChldmVudCkge1xuICBpZiAoWydBJywgJ0FSRUEnXS5pbmNsdWRlcyh0aGlzLnRhZ05hbWUpKSB7XG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgfVxuXG4gIGlmIChpc0Rpc2FibGVkKHRoaXMpKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgVGFiLmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcykuc2hvdygpO1xufSk7XG4vKipcbiAqIEluaXRpYWxpemUgb24gZm9jdXNcbiAqL1xuXG5FdmVudEhhbmRsZXIub24od2luZG93LCBFVkVOVF9MT0FEX0RBVEFfQVBJLCAoKSA9PiB7XG4gIGZvciAoY29uc3QgZWxlbWVudCBvZiBTZWxlY3RvckVuZ2luZS5maW5kKFNFTEVDVE9SX0RBVEFfVE9HR0xFX0FDVElWRSkpIHtcbiAgICBUYWIuZ2V0T3JDcmVhdGVJbnN0YW5jZShlbGVtZW50KTtcbiAgfVxufSk7XG4vKipcbiAqIGpRdWVyeVxuICovXG5cbmRlZmluZUpRdWVyeVBsdWdpbihUYWIpO1xuXG4vKipcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBCb290c3RyYXAgKHY1LjIuMyk6IHRvYXN0LmpzXG4gKiBMaWNlbnNlZCB1bmRlciBNSVQgKGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21haW4vTElDRU5TRSlcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKi9cbi8qKlxuICogQ29uc3RhbnRzXG4gKi9cblxuY29uc3QgTkFNRSA9ICd0b2FzdCc7XG5jb25zdCBEQVRBX0tFWSA9ICdicy50b2FzdCc7XG5jb25zdCBFVkVOVF9LRVkgPSBgLiR7REFUQV9LRVl9YDtcbmNvbnN0IEVWRU5UX01PVVNFT1ZFUiA9IGBtb3VzZW92ZXIke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfTU9VU0VPVVQgPSBgbW91c2VvdXQke0VWRU5UX0tFWX1gO1xuY29uc3QgRVZFTlRfRk9DVVNJTiA9IGBmb2N1c2luJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0ZPQ1VTT1VUID0gYGZvY3Vzb3V0JHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX0hJREUgPSBgaGlkZSR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9ISURERU4gPSBgaGlkZGVuJHtFVkVOVF9LRVl9YDtcbmNvbnN0IEVWRU5UX1NIT1cgPSBgc2hvdyR7RVZFTlRfS0VZfWA7XG5jb25zdCBFVkVOVF9TSE9XTiA9IGBzaG93biR7RVZFTlRfS0VZfWA7XG5jb25zdCBDTEFTU19OQU1FX0ZBREUgPSAnZmFkZSc7XG5jb25zdCBDTEFTU19OQU1FX0hJREUgPSAnaGlkZSc7IC8vIEBkZXByZWNhdGVkIC0ga2VwdCBoZXJlIG9ubHkgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5XG5cbmNvbnN0IENMQVNTX05BTUVfU0hPVyA9ICdzaG93JztcbmNvbnN0IENMQVNTX05BTUVfU0hPV0lORyA9ICdzaG93aW5nJztcbmNvbnN0IERlZmF1bHRUeXBlID0ge1xuICBhbmltYXRpb246ICdib29sZWFuJyxcbiAgYXV0b2hpZGU6ICdib29sZWFuJyxcbiAgZGVsYXk6ICdudW1iZXInXG59O1xuY29uc3QgRGVmYXVsdCA9IHtcbiAgYW5pbWF0aW9uOiB0cnVlLFxuICBhdXRvaGlkZTogdHJ1ZSxcbiAgZGVsYXk6IDUwMDBcbn07XG4vKipcbiAqIENsYXNzIGRlZmluaXRpb25cbiAqL1xuXG5jbGFzcyBUb2FzdCBleHRlbmRzIEJhc2VDb21wb25lbnQge1xuICBjb25zdHJ1Y3RvcihlbGVtZW50LCBjb25maWcpIHtcbiAgICBzdXBlcihlbGVtZW50LCBjb25maWcpO1xuICAgIHRoaXMuX3RpbWVvdXQgPSBudWxsO1xuICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBmYWxzZTtcbiAgICB0aGlzLl9oYXNLZXlib2FyZEludGVyYWN0aW9uID0gZmFsc2U7XG5cbiAgICB0aGlzLl9zZXRMaXN0ZW5lcnMoKTtcbiAgfSAvLyBHZXR0ZXJzXG5cblxuICBzdGF0aWMgZ2V0IERlZmF1bHQoKSB7XG4gICAgcmV0dXJuIERlZmF1bHQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0IERlZmF1bHRUeXBlKCkge1xuICAgIHJldHVybiBEZWZhdWx0VHlwZTtcbiAgfVxuXG4gIHN0YXRpYyBnZXQgTkFNRSgpIHtcbiAgICByZXR1cm4gTkFNRTtcbiAgfSAvLyBQdWJsaWNcblxuXG4gIHNob3coKSB7XG4gICAgY29uc3Qgc2hvd0V2ZW50ID0gRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfU0hPVyk7XG5cbiAgICBpZiAoc2hvd0V2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9jbGVhclRpbWVvdXQoKTtcblxuICAgIGlmICh0aGlzLl9jb25maWcuYW5pbWF0aW9uKSB7XG4gICAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9GQURFKTtcbiAgICB9XG5cbiAgICBjb25zdCBjb21wbGV0ZSA9ICgpID0+IHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1dJTkcpO1xuXG4gICAgICBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9TSE9XTik7XG5cbiAgICAgIHRoaXMuX21heWJlU2NoZWR1bGVIaWRlKCk7XG4gICAgfTtcblxuICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX0hJREUpOyAvLyBAZGVwcmVjYXRlZFxuXG5cbiAgICByZWZsb3codGhpcy5fZWxlbWVudCk7XG5cbiAgICB0aGlzLl9lbGVtZW50LmNsYXNzTGlzdC5hZGQoQ0xBU1NfTkFNRV9TSE9XLCBDTEFTU19OQU1FX1NIT1dJTkcpO1xuXG4gICAgdGhpcy5fcXVldWVDYWxsYmFjayhjb21wbGV0ZSwgdGhpcy5fZWxlbWVudCwgdGhpcy5fY29uZmlnLmFuaW1hdGlvbik7XG4gIH1cblxuICBoaWRlKCkge1xuICAgIGlmICghdGhpcy5pc1Nob3duKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBoaWRlRXZlbnQgPSBFdmVudEhhbmRsZXIudHJpZ2dlcih0aGlzLl9lbGVtZW50LCBFVkVOVF9ISURFKTtcblxuICAgIGlmIChoaWRlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGNvbnN0IGNvbXBsZXRlID0gKCkgPT4ge1xuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfSElERSk7IC8vIEBkZXByZWNhdGVkXG5cblxuICAgICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKENMQVNTX05BTUVfU0hPV0lORywgQ0xBU1NfTkFNRV9TSE9XKTtcblxuICAgICAgRXZlbnRIYW5kbGVyLnRyaWdnZXIodGhpcy5fZWxlbWVudCwgRVZFTlRfSElEREVOKTtcbiAgICB9O1xuXG4gICAgdGhpcy5fZWxlbWVudC5jbGFzc0xpc3QuYWRkKENMQVNTX05BTUVfU0hPV0lORyk7XG5cbiAgICB0aGlzLl9xdWV1ZUNhbGxiYWNrKGNvbXBsZXRlLCB0aGlzLl9lbGVtZW50LCB0aGlzLl9jb25maWcuYW5pbWF0aW9uKTtcbiAgfVxuXG4gIGRpc3Bvc2UoKSB7XG4gICAgdGhpcy5fY2xlYXJUaW1lb3V0KCk7XG5cbiAgICBpZiAodGhpcy5pc1Nob3duKCkpIHtcbiAgICAgIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZShDTEFTU19OQU1FX1NIT1cpO1xuICAgIH1cblxuICAgIHN1cGVyLmRpc3Bvc2UoKTtcbiAgfVxuXG4gIGlzU2hvd24oKSB7XG4gICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQuY2xhc3NMaXN0LmNvbnRhaW5zKENMQVNTX05BTUVfU0hPVyk7XG4gIH0gLy8gUHJpdmF0ZVxuXG5cbiAgX21heWJlU2NoZWR1bGVIaWRlKCkge1xuICAgIGlmICghdGhpcy5fY29uZmlnLmF1dG9oaWRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gfHwgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMuX3RpbWVvdXQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0sIHRoaXMuX2NvbmZpZy5kZWxheSk7XG4gIH1cblxuICBfb25JbnRlcmFjdGlvbihldmVudCwgaXNJbnRlcmFjdGluZykge1xuICAgIHN3aXRjaCAoZXZlbnQudHlwZSkge1xuICAgICAgY2FzZSAnbW91c2VvdmVyJzpcbiAgICAgIGNhc2UgJ21vdXNlb3V0JzpcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMuX2hhc01vdXNlSW50ZXJhY3Rpb24gPSBpc0ludGVyYWN0aW5nO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG5cbiAgICAgIGNhc2UgJ2ZvY3VzaW4nOlxuICAgICAgY2FzZSAnZm9jdXNvdXQnOlxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5faGFzS2V5Ym9hcmRJbnRlcmFjdGlvbiA9IGlzSW50ZXJhY3Rpbmc7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNJbnRlcmFjdGluZykge1xuICAgICAgdGhpcy5fY2xlYXJUaW1lb3V0KCk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBuZXh0RWxlbWVudCA9IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG5cbiAgICBpZiAodGhpcy5fZWxlbWVudCA9PT0gbmV4dEVsZW1lbnQgfHwgdGhpcy5fZWxlbWVudC5jb250YWlucyhuZXh0RWxlbWVudCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLl9tYXliZVNjaGVkdWxlSGlkZSgpO1xuICB9XG5cbiAgX3NldExpc3RlbmVycygpIHtcbiAgICBFdmVudEhhbmRsZXIub24odGhpcy5fZWxlbWVudCwgRVZFTlRfTU9VU0VPVkVSLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX01PVVNFT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICAgIEV2ZW50SGFuZGxlci5vbih0aGlzLl9lbGVtZW50LCBFVkVOVF9GT0NVU0lOLCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCB0cnVlKSk7XG4gICAgRXZlbnRIYW5kbGVyLm9uKHRoaXMuX2VsZW1lbnQsIEVWRU5UX0ZPQ1VTT1VULCBldmVudCA9PiB0aGlzLl9vbkludGVyYWN0aW9uKGV2ZW50LCBmYWxzZSkpO1xuICB9XG5cbiAgX2NsZWFyVGltZW91dCgpIHtcbiAgICBjbGVhclRpbWVvdXQodGhpcy5fdGltZW91dCk7XG4gICAgdGhpcy5fdGltZW91dCA9IG51bGw7XG4gIH0gLy8gU3RhdGljXG5cblxuICBzdGF0aWMgalF1ZXJ5SW50ZXJmYWNlKGNvbmZpZykge1xuICAgIHJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgZGF0YSA9IFRvYXN0LmdldE9yQ3JlYXRlSW5zdGFuY2UodGhpcywgY29uZmlnKTtcblxuICAgICAgaWYgKHR5cGVvZiBjb25maWcgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGF0YVtjb25maWddID09PSAndW5kZWZpbmVkJykge1xuICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYE5vIG1ldGhvZCBuYW1lZCBcIiR7Y29uZmlnfVwiYCk7XG4gICAgICAgIH1cblxuICAgICAgICBkYXRhW2NvbmZpZ10odGhpcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxufVxuLyoqXG4gKiBEYXRhIEFQSSBpbXBsZW1lbnRhdGlvblxuICovXG5cblxuZW5hYmxlRGlzbWlzc1RyaWdnZXIoVG9hc3QpO1xuLyoqXG4gKiBqUXVlcnlcbiAqL1xuXG5kZWZpbmVKUXVlcnlQbHVnaW4oVG9hc3QpO1xuXG5leHBvcnQgeyBBbGVydCwgQnV0dG9uLCBDYXJvdXNlbCwgQ29sbGFwc2UsIERyb3Bkb3duLCBNb2RhbCwgT2ZmY2FudmFzLCBQb3BvdmVyLCBTY3JvbGxTcHksIFRhYiwgVG9hc3QsIFRvb2x0aXAgfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWJvb3RzdHJhcC5lc20uanMubWFwXG4iLCLvu78vKlxuQ29weXJpZ2h0IChjKSAyMDAzLTIwMjIsIENLU291cmNlIEhvbGRpbmcgc3AuIHogby5vLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxuRm9yIGxpY2Vuc2luZywgc2VlIExJQ0VOU0UubWQgb3IgaHR0cHM6Ly9ja2VkaXRvci5jb20vbGVnYWwvY2tlZGl0b3Itb3NzLWxpY2Vuc2UvXG4qL1xuKGZ1bmN0aW9uKCl7d2luZG93LkNLRURJVE9SJiZ3aW5kb3cuQ0tFRElUT1IuZG9tfHwod2luZG93LkNLRURJVE9SfHwod2luZG93LkNLRURJVE9SPWZ1bmN0aW9uKCl7dmFyIGE9LyhefC4qW1xcXFxcXC9dKWNrZWRpdG9yXFwuanMoPzpcXD8uKnw7LiopPyQvaSxmPXt0aW1lc3RhbXA6XCJNQVVGXCIsdmVyc2lvbjpcIjQuMjAuMSAoU3RhbmRhcmQpXCIscmV2aXNpb246XCJiNTIwYWEyYjQwXCIscm5kOk1hdGguZmxvb3IoOTAwKk1hdGgucmFuZG9tKCkpKzEwMCxfOntwZW5kaW5nOltdLGJhc2VQYXRoU3JjUGF0dGVybjphfSxzdGF0dXM6XCJ1bmxvYWRlZFwiLGJhc2VQYXRoOmZ1bmN0aW9uKCl7dmFyIGM9d2luZG93LkNLRURJVE9SX0JBU0VQQVRIfHxcIlwiO2lmKCFjKWZvcih2YXIgYj1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcInNjcmlwdFwiKSxlPTA7ZTxiLmxlbmd0aDtlKyspe3ZhciBtPWJbZV0uc3JjLm1hdGNoKGEpO2lmKG0pe2M9bVsxXTticmVha319LTE9PWMuaW5kZXhPZihcIjovXCIpJiZcblwiLy9cIiE9Yy5zbGljZSgwLDIpJiYoYz0wPT09Yy5pbmRleE9mKFwiL1wiKT9sb2NhdGlvbi5ocmVmLm1hdGNoKC9eLio/OlxcL1xcL1teXFwvXSovKVswXStjOmxvY2F0aW9uLmhyZWYubWF0Y2goL15bXlxcP10qXFwvKD86KS8pWzBdK2MpO2lmKCFjKXRocm93J1RoZSBDS0VkaXRvciBpbnN0YWxsYXRpb24gcGF0aCBjb3VsZCBub3QgYmUgYXV0b21hdGljYWxseSBkZXRlY3RlZC4gUGxlYXNlIHNldCB0aGUgZ2xvYmFsIHZhcmlhYmxlIFwiQ0tFRElUT1JfQkFTRVBBVEhcIiBiZWZvcmUgY3JlYXRpbmcgZWRpdG9yIGluc3RhbmNlcy4nO3JldHVybiBjfSgpLGdldFVybDpmdW5jdGlvbihhKXstMT09YS5pbmRleE9mKFwiOi9cIikmJjAhPT1hLmluZGV4T2YoXCIvXCIpJiYoYT10aGlzLmJhc2VQYXRoK2EpO3JldHVybiBhPXRoaXMuYXBwZW5kVGltZXN0YW1wKGEpfSxhcHBlbmRUaW1lc3RhbXA6ZnVuY3Rpb24oYSl7aWYoIXRoaXMudGltZXN0YW1wfHxcIi9cIj09PWEuY2hhckF0KGEubGVuZ3RoLTEpfHwvWyY/XXQ9Ly50ZXN0KGEpKXJldHVybiBhO1xudmFyIGI9MDw9YS5pbmRleE9mKFwiP1wiKT9cIlxceDI2XCI6XCI/XCI7cmV0dXJuIGErYitcInRcXHgzZFwiK3RoaXMudGltZXN0YW1wfSxkb21SZWFkeTpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt0cnl7ZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcj8oZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixhLCExKSx3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcImxvYWRcIixhLCExKSxiKCkpOmRvY3VtZW50LmF0dGFjaEV2ZW50JiZcImNvbXBsZXRlXCI9PT1kb2N1bWVudC5yZWFkeVN0YXRlJiYoZG9jdW1lbnQuZGV0YWNoRXZlbnQoXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIixhKSx3aW5kb3cuZGV0YWNoRXZlbnQoXCJvbmxvYWRcIixhKSxiKCkpfWNhdGNoKGUpe319ZnVuY3Rpb24gYigpe2Zvcih2YXIgYTthPWUuc2hpZnQoKTspYSgpfXZhciBlPVtdO3JldHVybiBmdW5jdGlvbihiKXtmdW5jdGlvbiBkKCl7dHJ5e2RvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbChcImxlZnRcIil9Y2F0Y2goZyl7c2V0VGltZW91dChkLFxuMSk7cmV0dXJufWEoKX1lLnB1c2goYik7XCJjb21wbGV0ZVwiPT09ZG9jdW1lbnQucmVhZHlTdGF0ZSYmc2V0VGltZW91dChhLDEpO2lmKDE9PWUubGVuZ3RoKWlmKGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIpZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcihcIkRPTUNvbnRlbnRMb2FkZWRcIixhLCExKSx3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihcImxvYWRcIixhLCExKTtlbHNlIGlmKGRvY3VtZW50LmF0dGFjaEV2ZW50KXtkb2N1bWVudC5hdHRhY2hFdmVudChcIm9ucmVhZHlzdGF0ZWNoYW5nZVwiLGEpO3dpbmRvdy5hdHRhY2hFdmVudChcIm9ubG9hZFwiLGEpO2I9ITE7dHJ5e2I9IXdpbmRvdy5mcmFtZUVsZW1lbnR9Y2F0Y2goaCl7fWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmZCgpfX19KCl9LGU9d2luZG93LkNLRURJVE9SX0dFVFVSTDtpZihlKXt2YXIgYj1mLmdldFVybDtmLmdldFVybD1mdW5jdGlvbihhKXtyZXR1cm4gZS5jYWxsKGYsYSl8fGIuY2FsbChmLGEpfX1yZXR1cm4gZn0oKSksXG5mdW5jdGlvbigpe3ZhciBhPXt9O0NLRURJVE9SLmV2ZW50fHwoQ0tFRElUT1IuZXZlbnQ9ZnVuY3Rpb24oKXt9LENLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uPWZ1bmN0aW9uKGEpe3ZhciBlPUNLRURJVE9SLmV2ZW50LnByb3RvdHlwZSxiO2ZvcihiIGluIGUpbnVsbD09YVtiXSYmKGFbYl09ZVtiXSl9LENLRURJVE9SLmV2ZW50LnByb3RvdHlwZT1mdW5jdGlvbigpe2Z1bmN0aW9uIGYoYSl7dmFyIGs9ZSh0aGlzKTtyZXR1cm4ga1thXXx8KGtbYV09bmV3IGIoYSkpfXZhciBlPWZ1bmN0aW9uKGEpe2E9YS5nZXRQcml2YXRlJiZhLmdldFByaXZhdGUoKXx8YS5ffHwoYS5fPXt9KTtyZXR1cm4gYS5ldmVudHN8fChhLmV2ZW50cz17fSl9LGI9ZnVuY3Rpb24oYSl7dGhpcy5uYW1lPWE7dGhpcy5saXN0ZW5lcnM9W119O2IucHJvdG90eXBlPXtnZXRMaXN0ZW5lckluZGV4OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj0wLGU9dGhpcy5saXN0ZW5lcnM7YjxlLmxlbmd0aDtiKyspaWYoZVtiXS5mbj09XG5hKXJldHVybiBiO3JldHVybi0xfX07cmV0dXJue2RlZmluZTpmdW5jdGlvbihhLGIpe3ZhciBlPWYuY2FsbCh0aGlzLGEpO0NLRURJVE9SLnRvb2xzLmV4dGVuZChlLGIsITApfSxvbjpmdW5jdGlvbihjLGIsZSxtLGQpe2Z1bmN0aW9uIGgobixkLGgsdyl7bj17bmFtZTpjLHNlbmRlcjp0aGlzLGVkaXRvcjpuLGRhdGE6ZCxsaXN0ZW5lckRhdGE6bSxzdG9wOmgsY2FuY2VsOncscmVtb3ZlTGlzdGVuZXI6Z307cmV0dXJuITE9PT1iLmNhbGwoZSxuKT9hOm4uZGF0YX1mdW5jdGlvbiBnKCl7bi5yZW1vdmVMaXN0ZW5lcihjLGIpfXZhciBuPXRoaXMsdz1mLmNhbGwodGhpcyxjKTtpZigwPncuZ2V0TGlzdGVuZXJJbmRleChiKSl7dz13Lmxpc3RlbmVycztlfHwoZT10aGlzKTtpc05hTihkKSYmKGQ9MTApO2guZm49YjtoLnByaW9yaXR5PWQ7Zm9yKHZhciB4PXcubGVuZ3RoLTE7MDw9eDt4LS0paWYod1t4XS5wcmlvcml0eTw9ZClyZXR1cm4gdy5zcGxpY2UoeCsxLDAsaCkse3JlbW92ZUxpc3RlbmVyOmd9O1xudy51bnNoaWZ0KGgpfXJldHVybntyZW1vdmVMaXN0ZW5lcjpnfX0sb25jZTpmdW5jdGlvbigpe3ZhciBhPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cyksYj1hWzFdO2FbMV09ZnVuY3Rpb24oYSl7YS5yZW1vdmVMaXN0ZW5lcigpO3JldHVybiBiLmFwcGx5KHRoaXMsYXJndW1lbnRzKX07cmV0dXJuIHRoaXMub24uYXBwbHkodGhpcyxhKX0sY2FwdHVyZTpmdW5jdGlvbigpe0NLRURJVE9SLmV2ZW50LnVzZUNhcHR1cmU9MTt2YXIgYT10aGlzLm9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtDS0VESVRPUi5ldmVudC51c2VDYXB0dXJlPTA7cmV0dXJuIGF9LGZpcmU6ZnVuY3Rpb24oKXt2YXIgYz0wLGI9ZnVuY3Rpb24oKXtjPTF9LGw9MCxtPWZ1bmN0aW9uKCl7bD0xfTtyZXR1cm4gZnVuY3Rpb24oZCxoLGcpe3ZhciBuPWUodGhpcylbZF07ZD1jO3ZhciB3PWw7Yz1sPTA7aWYobil7dmFyIGY9bi5saXN0ZW5lcnM7aWYoZi5sZW5ndGgpZm9yKHZhciBmPWYuc2xpY2UoMCksXG5yLHA9MDtwPGYubGVuZ3RoO3ArKyl7aWYobi5lcnJvclByb29mKXRyeXtyPWZbcF0uY2FsbCh0aGlzLGcsaCxiLG0pfWNhdGNoKHUpe31lbHNlIHI9ZltwXS5jYWxsKHRoaXMsZyxoLGIsbSk7cj09PWE/bD0xOlwidW5kZWZpbmVkXCIhPXR5cGVvZiByJiYoaD1yKTtpZihjfHxsKWJyZWFrfX1oPWw/ITE6XCJ1bmRlZmluZWRcIj09dHlwZW9mIGg/ITA6aDtjPWQ7bD13O3JldHVybiBofX0oKSxmaXJlT25jZTpmdW5jdGlvbihhLGIsbCl7Yj10aGlzLmZpcmUoYSxiLGwpO2RlbGV0ZSBlKHRoaXMpW2FdO3JldHVybiBifSxyZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbihhLGIpe3ZhciBsPWUodGhpcylbYV07aWYobCl7dmFyIG09bC5nZXRMaXN0ZW5lckluZGV4KGIpOzA8PW0mJmwubGlzdGVuZXJzLnNwbGljZShtLDEpfX0scmVtb3ZlQWxsTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dmFyIGE9ZSh0aGlzKSxiO2ZvcihiIGluIGEpZGVsZXRlIGFbYl19LGhhc0xpc3RlbmVyczpmdW5jdGlvbihhKXtyZXR1cm4oYT1cbmUodGhpcylbYV0pJiYwPGEubGlzdGVuZXJzLmxlbmd0aH19fSgpKX0oKSxDS0VESVRPUi5lZGl0b3J8fChDS0VESVRPUi5lZGl0b3I9ZnVuY3Rpb24oKXtDS0VESVRPUi5fLnBlbmRpbmcucHVzaChbdGhpcyxhcmd1bWVudHNdKTtDS0VESVRPUi5ldmVudC5jYWxsKHRoaXMpfSxDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmZpcmU9ZnVuY3Rpb24oYSxmKXthIGlue2luc3RhbmNlUmVhZHk6MSxsb2FkZWQ6MX0mJih0aGlzW2FdPSEwKTtyZXR1cm4gQ0tFRElUT1IuZXZlbnQucHJvdG90eXBlLmZpcmUuY2FsbCh0aGlzLGEsZix0aGlzKX0sQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5maXJlT25jZT1mdW5jdGlvbihhLGYpe2EgaW57aW5zdGFuY2VSZWFkeToxLGxvYWRlZDoxfSYmKHRoaXNbYV09ITApO3JldHVybiBDS0VESVRPUi5ldmVudC5wcm90b3R5cGUuZmlyZU9uY2UuY2FsbCh0aGlzLGEsZix0aGlzKX0sQ0tFRElUT1IuZXZlbnQuaW1wbGVtZW50T24oQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZSkpLFxuQ0tFRElUT1IuZW52fHwoQ0tFRElUT1IuZW52PWZ1bmN0aW9uKCl7dmFyIGE9bmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpLGY9YS5tYXRjaCgvZWRnZVsgXFwvXShcXGQrLj9cXGQqKS8pLGU9LTE8YS5pbmRleE9mKFwidHJpZGVudC9cIiksZT0hKCFmJiYhZSksZT17aWU6ZSxlZGdlOiEhZix3ZWJraXQ6IWUmJi0xPGEuaW5kZXhPZihcIiBhcHBsZXdlYmtpdC9cIiksYWlyOi0xPGEuaW5kZXhPZihcIiBhZG9iZWFpci9cIiksbWFjOi0xPGEuaW5kZXhPZihcIm1hY2ludG9zaFwiKSxxdWlya3M6XCJCYWNrQ29tcGF0XCI9PWRvY3VtZW50LmNvbXBhdE1vZGUmJighZG9jdW1lbnQuZG9jdW1lbnRNb2RlfHwxMD5kb2N1bWVudC5kb2N1bWVudE1vZGUpLG1vYmlsZTotMTxhLmluZGV4T2YoXCJtb2JpbGVcIiksaU9TOi8oaXBhZHxpcGhvbmV8aXBvZCkvLnRlc3QoYSksaXNDdXN0b21Eb21haW46ZnVuY3Rpb24oKXtpZighdGhpcy5pZSlyZXR1cm4hMTt2YXIgYT1kb2N1bWVudC5kb21haW4sYj13aW5kb3cubG9jYXRpb24uaG9zdG5hbWU7XG5yZXR1cm4gYSE9YiYmYSE9XCJbXCIrYitcIl1cIn0sc2VjdXJlOlwiaHR0cHM6XCI9PWxvY2F0aW9uLnByb3RvY29sfTtlLmdlY2tvPVwiR2Vja29cIj09bmF2aWdhdG9yLnByb2R1Y3QmJiFlLndlYmtpdCYmIWUuaWU7ZS53ZWJraXQmJigtMTxhLmluZGV4T2YoXCJjaHJvbWVcIik/ZS5jaHJvbWU9ITA6ZS5zYWZhcmk9ITApO3ZhciBiPTA7ZS5pZSYmKGI9Zj9wYXJzZUZsb2F0KGZbMV0pOmUucXVpcmtzfHwhZG9jdW1lbnQuZG9jdW1lbnRNb2RlP3BhcnNlRmxvYXQoYS5tYXRjaCgvbXNpZSAoXFxkKykvKVsxXSk6ZG9jdW1lbnQuZG9jdW1lbnRNb2RlLGUuaWU5Q29tcGF0PTk9PWIsZS5pZThDb21wYXQ9OD09YixlLmllN0NvbXBhdD03PT1iLGUuaWU2Q29tcGF0PTc+Ynx8ZS5xdWlya3MpO2UuZ2Vja28mJihmPWEubWF0Y2goL3J2OihbXFxkXFwuXSspLykpJiYoZj1mWzFdLnNwbGl0KFwiLlwiKSxiPTFFNCpmWzBdKzEwMCooZlsxXXx8MCkrMSooZlsyXXx8MCkpO2UuYWlyJiYoYj1wYXJzZUZsb2F0KGEubWF0Y2goLyBhZG9iZWFpclxcLyhcXGQrKS8pWzFdKSk7XG5lLndlYmtpdCYmKGI9cGFyc2VGbG9hdChhLm1hdGNoKC8gYXBwbGV3ZWJraXRcXC8oXFxkKykvKVsxXSkpO2UudmVyc2lvbj1iO2UuaXNDb21wYXRpYmxlPSEoZS5pZSYmNz5iKSYmIShlLmdlY2tvJiY0RTQ+YikmJiEoZS53ZWJraXQmJjUzND5iKTtlLmhpZHBpPTI8PXdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvO2UubmVlZHNCckZpbGxlcj1lLmdlY2tvfHxlLndlYmtpdHx8ZS5pZSYmMTA8YjtlLm5lZWRzTmJzcEZpbGxlcj1lLmllJiYxMT5iO2UuY3NzQ2xhc3M9XCJja2VfYnJvd3Nlcl9cIisoZS5pZT9cImllXCI6ZS5nZWNrbz9cImdlY2tvXCI6ZS53ZWJraXQ/XCJ3ZWJraXRcIjpcInVua25vd25cIik7ZS5xdWlya3MmJihlLmNzc0NsYXNzKz1cIiBja2VfYnJvd3Nlcl9xdWlya3NcIik7ZS5pZSYmKGUuY3NzQ2xhc3MrPVwiIGNrZV9icm93c2VyX2llXCIrKGUucXVpcmtzP1wiNiBja2VfYnJvd3Nlcl9pZXF1aXJrc1wiOmUudmVyc2lvbikpO2UuYWlyJiYoZS5jc3NDbGFzcys9XCIgY2tlX2Jyb3dzZXJfYWlyXCIpO1xuZS5pT1MmJihlLmNzc0NsYXNzKz1cIiBja2VfYnJvd3Nlcl9pb3NcIik7ZS5oaWRwaSYmKGUuY3NzQ2xhc3MrPVwiIGNrZV9oaWRwaVwiKTtyZXR1cm4gZX0oKSksXCJ1bmxvYWRlZFwiPT1DS0VESVRPUi5zdGF0dXMmJmZ1bmN0aW9uKCl7Q0tFRElUT1IuZXZlbnQuaW1wbGVtZW50T24oQ0tFRElUT1IpO0NLRURJVE9SLmxvYWRGdWxsQ29yZT1mdW5jdGlvbigpe2lmKFwiYmFzaWNfcmVhZHlcIiE9Q0tFRElUT1Iuc3RhdHVzKUNLRURJVE9SLmxvYWRGdWxsQ29yZS5fbG9hZD0xO2Vsc2V7ZGVsZXRlIENLRURJVE9SLmxvYWRGdWxsQ29yZTt2YXIgYT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO2EudHlwZT1cInRleHQvamF2YXNjcmlwdFwiO2Euc3JjPUNLRURJVE9SLmJhc2VQYXRoK1wiY2tlZGl0b3IuanNcIjtkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF0uYXBwZW5kQ2hpbGQoYSl9fTtDS0VESVRPUi5sb2FkRnVsbENvcmVUaW1lb3V0PTA7Q0tFRElUT1IuYWRkPVxuZnVuY3Rpb24oYSl7KHRoaXMuXy5wZW5kaW5nfHwodGhpcy5fLnBlbmRpbmc9W10pKS5wdXNoKGEpfTsoZnVuY3Rpb24oKXtDS0VESVRPUi5kb21SZWFkeShmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLmxvYWRGdWxsQ29yZSxmPUNLRURJVE9SLmxvYWRGdWxsQ29yZVRpbWVvdXQ7YSYmKENLRURJVE9SLnN0YXR1cz1cImJhc2ljX3JlYWR5XCIsYSYmYS5fbG9hZD9hKCk6ZiYmc2V0VGltZW91dChmdW5jdGlvbigpe0NLRURJVE9SLmxvYWRGdWxsQ29yZSYmQ0tFRElUT1IubG9hZEZ1bGxDb3JlKCl9LDFFMypmKSl9KX0pKCk7Q0tFRElUT1Iuc3RhdHVzPVwiYmFzaWNfbG9hZGVkXCJ9KCksXCJ1c2Ugc3RyaWN0XCIsQ0tFRElUT1IuVkVSQk9TSVRZX1dBUk49MSxDS0VESVRPUi5WRVJCT1NJVFlfRVJST1I9MixDS0VESVRPUi52ZXJib3NpdHk9Q0tFRElUT1IuVkVSQk9TSVRZX1dBUk58Q0tFRElUT1IuVkVSQk9TSVRZX0VSUk9SLENLRURJVE9SLndhcm49ZnVuY3Rpb24oYSxmKXtDS0VESVRPUi52ZXJib3NpdHkmXG5DS0VESVRPUi5WRVJCT1NJVFlfV0FSTiYmQ0tFRElUT1IuZmlyZShcImxvZ1wiLHt0eXBlOlwid2FyblwiLGVycm9yQ29kZTphLGFkZGl0aW9uYWxEYXRhOmZ9KX0sQ0tFRElUT1IuZXJyb3I9ZnVuY3Rpb24oYSxmKXtDS0VESVRPUi52ZXJib3NpdHkmQ0tFRElUT1IuVkVSQk9TSVRZX0VSUk9SJiZDS0VESVRPUi5maXJlKFwibG9nXCIse3R5cGU6XCJlcnJvclwiLGVycm9yQ29kZTphLGFkZGl0aW9uYWxEYXRhOmZ9KX0sQ0tFRElUT1Iub24oXCJsb2dcIixmdW5jdGlvbihhKXtpZih3aW5kb3cuY29uc29sZSYmd2luZG93LmNvbnNvbGUubG9nKXt2YXIgZj1jb25zb2xlW2EuZGF0YS50eXBlXT9hLmRhdGEudHlwZTpcImxvZ1wiLGU9YS5kYXRhLmVycm9yQ29kZTtpZihhPWEuZGF0YS5hZGRpdGlvbmFsRGF0YSljb25zb2xlW2ZdKFwiW0NLRURJVE9SXSBFcnJvciBjb2RlOiBcIitlK1wiLlwiLGEpO2Vsc2UgY29uc29sZVtmXShcIltDS0VESVRPUl0gRXJyb3IgY29kZTogXCIrZStcIi5cIik7Y29uc29sZVtmXShcIltDS0VESVRPUl0gRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBlcnJvciBnbyB0byBodHRwczovL2NrZWRpdG9yLmNvbS9kb2NzL2NrZWRpdG9yNC9sYXRlc3QvZ3VpZGUvZGV2X2Vycm9ycy5odG1sI1wiK1xuZSl9fSxudWxsLG51bGwsOTk5KSxDS0VESVRPUi5kb209e30sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsZyxkKXt0aGlzLl9taW5JbnRlcnZhbD1hO3RoaXMuX2NvbnRleHQ9ZDt0aGlzLl9sYXN0T3V0cHV0PXRoaXMuX3NjaGVkdWxlZFRpbWVyPTA7dGhpcy5fb3V0cHV0PUNLRURJVE9SLnRvb2xzLmJpbmQoZyxkfHx7fSk7dmFyIGI9dGhpczt0aGlzLmlucHV0PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe2IuX2xhc3RPdXRwdXQ9KG5ldyBEYXRlKS5nZXRUaW1lKCk7Yi5fc2NoZWR1bGVkVGltZXI9MDtiLl9jYWxsKCl9aWYoIWIuX3NjaGVkdWxlZFRpbWVyfHwhMSE9PWIuX3Jlc2NoZWR1bGUoKSl7dmFyIG49KG5ldyBEYXRlKS5nZXRUaW1lKCktYi5fbGFzdE91dHB1dDtuPGIuX21pbkludGVydmFsP2IuX3NjaGVkdWxlZFRpbWVyPXNldFRpbWVvdXQoYSxiLl9taW5JbnRlcnZhbC1uKTphKCl9fX1mdW5jdGlvbiBmKG4sZyxkKXthLmNhbGwodGhpcyxuLGcsZCk7dGhpcy5fYXJncz1bXTtcbnZhciBiPXRoaXM7dGhpcy5pbnB1dD1DS0VESVRPUi50b29scy5vdmVycmlkZSh0aGlzLmlucHV0LGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2IuX2FyZ3M9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTthLmNhbGwodGhpcyl9fSl9dmFyIGU9W10sYj1DS0VESVRPUi5lbnYuZ2Vja28/XCItbW96LVwiOkNLRURJVE9SLmVudi53ZWJraXQ/XCItd2Via2l0LVwiOkNLRURJVE9SLmVudi5pZT9cIi1tcy1cIjpcIlwiLGM9LyYvZyxrPS8+L2csbD0vPC9nLG09L1wiL2csZD0vJihsdHxndHxhbXB8cXVvdHxuYnNwfHNoeXwjXFxkezEsNX0pOy9nLGg9e2x0OlwiXFx4M2NcIixndDpcIlxceDNlXCIsYW1wOlwiXFx4MjZcIixxdW90OidcIicsbmJzcDpcIsKgXCIsc2h5Olwiwq1cIn0sZz1mdW5jdGlvbihhLGcpe3JldHVyblwiI1wiPT1nWzBdP1N0cmluZy5mcm9tQ2hhckNvZGUocGFyc2VJbnQoZy5zbGljZSgxKSwxMCkpOmhbZ119O0NLRURJVE9SLm9uKFwicmVzZXRcIixmdW5jdGlvbigpe2U9W119KTtDS0VESVRPUi50b29scz1cbnthcnJheUNvbXBhcmU6ZnVuY3Rpb24oYSxnKXtpZighYSYmIWcpcmV0dXJuITA7aWYoIWF8fCFnfHxhLmxlbmd0aCE9Zy5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspaWYoYVtkXSE9Z1tkXSlyZXR1cm4hMTtyZXR1cm4hMH0sZ2V0SW5kZXg6ZnVuY3Rpb24oYSxnKXtmb3IodmFyIGQ9MDtkPGEubGVuZ3RoOysrZClpZihnKGFbZF0pKXJldHVybiBkO3JldHVybi0xfSxjbG9uZTpmdW5jdGlvbihhKXt2YXIgZztpZihhJiZhIGluc3RhbmNlb2YgQXJyYXkpe2c9W107Zm9yKHZhciBkPTA7ZDxhLmxlbmd0aDtkKyspZ1tkXT1DS0VESVRPUi50b29scy5jbG9uZShhW2RdKTtyZXR1cm4gZ31pZihudWxsPT09YXx8XCJvYmplY3RcIiE9dHlwZW9mIGF8fGEgaW5zdGFuY2VvZiBTdHJpbmd8fGEgaW5zdGFuY2VvZiBOdW1iZXJ8fGEgaW5zdGFuY2VvZiBCb29sZWFufHxhIGluc3RhbmNlb2YgRGF0ZXx8YSBpbnN0YW5jZW9mIFJlZ0V4cHx8YS5ub2RlVHlwZXx8YS53aW5kb3c9PT1cbmEpcmV0dXJuIGE7Zz1uZXcgYS5jb25zdHJ1Y3Rvcjtmb3IoZCBpbiBhKWdbZF09Q0tFRElUT1IudG9vbHMuY2xvbmUoYVtkXSk7cmV0dXJuIGd9LGNhcGl0YWxpemU6ZnVuY3Rpb24oYSxnKXtyZXR1cm4gYS5jaGFyQXQoMCkudG9VcHBlckNhc2UoKSsoZz9hLnNsaWNlKDEpOmEuc2xpY2UoMSkudG9Mb3dlckNhc2UoKSl9LGV4dGVuZDpmdW5jdGlvbihhKXt2YXIgZz1hcmd1bWVudHMubGVuZ3RoLGQsYjtcImJvb2xlYW5cIj09dHlwZW9mKGQ9YXJndW1lbnRzW2ctMV0pP2ctLTpcImJvb2xlYW5cIj09dHlwZW9mKGQ9YXJndW1lbnRzW2ctMl0pJiYoYj1hcmd1bWVudHNbZy0xXSxnLT0yKTtmb3IodmFyIGM9MTtjPGc7YysrKXt2YXIgaD1hcmd1bWVudHNbY118fHt9O0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goQ0tFRElUT1IudG9vbHMub2JqZWN0LmtleXMoaCksZnVuY3Rpb24oZyl7aWYoITA9PT1kfHxudWxsPT1hW2ddKWlmKCFifHxnIGluIGIpYVtnXT1oW2ddfSl9cmV0dXJuIGF9LFxucHJvdG90eXBlZENvcHk6ZnVuY3Rpb24oYSl7dmFyIGc9ZnVuY3Rpb24oKXt9O2cucHJvdG90eXBlPWE7cmV0dXJuIG5ldyBnfSxjb3B5OmZ1bmN0aW9uKGEpe3ZhciBnPXt9LGQ7Zm9yKGQgaW4gYSlnW2RdPWFbZF07cmV0dXJuIGd9LGlzQXJyYXk6ZnVuY3Rpb24oYSl7cmV0dXJuXCJbb2JqZWN0IEFycmF5XVwiPT1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYSl9LGlzRW1wdHk6ZnVuY3Rpb24oYSl7Zm9yKHZhciBnIGluIGEpaWYoYS5oYXNPd25Qcm9wZXJ0eShnKSlyZXR1cm4hMTtyZXR1cm4hMH0sY3NzVmVuZG9yUHJlZml4OmZ1bmN0aW9uKGEsZyxkKXtpZihkKXJldHVybiBiK2ErXCI6XCIrZytcIjtcIithK1wiOlwiK2c7ZD17fTtkW2FdPWc7ZFtiK2FdPWc7cmV0dXJuIGR9LGNzc1N0eWxlVG9Eb21TdHlsZTpmdW5jdGlvbigpe3ZhciBhPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIikuc3R5bGUsZz1cInVuZGVmaW5lZFwiIT10eXBlb2YgYS5jc3NGbG9hdD9cImNzc0Zsb2F0XCI6XG5cInVuZGVmaW5lZFwiIT10eXBlb2YgYS5zdHlsZUZsb2F0P1wic3R5bGVGbG9hdFwiOlwiZmxvYXRcIjtyZXR1cm4gZnVuY3Rpb24oYSl7cmV0dXJuXCJmbG9hdFwiPT1hP2c6YS5yZXBsYWNlKC8tLi9nLGZ1bmN0aW9uKGEpe3JldHVybiBhLnN1YnN0cigxKS50b1VwcGVyQ2FzZSgpfSl9fSgpLGJ1aWxkU3R5bGVIdG1sOmZ1bmN0aW9uKGEpe2E9W10uY29uY2F0KGEpO2Zvcih2YXIgZyxkPVtdLGI9MDtiPGEubGVuZ3RoO2IrKylpZihnPWFbYl0pL0BpbXBvcnR8W3t9XS8udGVzdChnKT9kLnB1c2goXCJcXHgzY3N0eWxlXFx4M2VcIitnK1wiXFx4M2Mvc3R5bGVcXHgzZVwiKTooZz1DS0VESVRPUi5hcHBlbmRUaW1lc3RhbXAoZyksZC5wdXNoKCdcXHgzY2xpbmsgdHlwZVxceDNkXCJ0ZXh0L2Nzc1wiIHJlbFxceDNkc3R5bGVzaGVldCBocmVmXFx4M2RcIicrZysnXCJcXHgzZScpKTtyZXR1cm4gZC5qb2luKFwiXCIpfSxodG1sRW5jb2RlOmZ1bmN0aW9uKGEpe3JldHVybiB2b2lkIDA9PT1hfHxudWxsPT09YT9cIlwiOlN0cmluZyhhKS5yZXBsYWNlKGMsXG5cIlxceDI2YW1wO1wiKS5yZXBsYWNlKGssXCJcXHgyNmd0O1wiKS5yZXBsYWNlKGwsXCJcXHgyNmx0O1wiKX0saHRtbERlY29kZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGQsZyl9LGh0bWxFbmNvZGVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5odG1sRW5jb2RlKGEpLnJlcGxhY2UobSxcIlxceDI2cXVvdDtcIil9LGh0bWxEZWNvZGVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5odG1sRGVjb2RlKGEpfSx0cmFuc2Zvcm1QbGFpblRleHRUb0h0bWw6ZnVuY3Rpb24oYSxnKXt2YXIgZD1nPT1DS0VESVRPUi5FTlRFUl9CUixiPXRoaXMuaHRtbEVuY29kZShhLnJlcGxhY2UoL1xcclxcbi9nLFwiXFxuXCIpKSxiPWIucmVwbGFjZSgvXFx0L2csXCJcXHgyNm5ic3A7XFx4MjZuYnNwOyBcXHgyNm5ic3A7XCIpLGM9Zz09Q0tFRElUT1IuRU5URVJfUD9cInBcIjpcImRpdlwiO2lmKCFkKXt2YXIgaD0vXFxuezJ9L2c7aWYoaC50ZXN0KGIpKXZhciBlPVwiXFx4M2NcIitjK1wiXFx4M2VcIixtPVxuXCJcXHgzYy9cIitjK1wiXFx4M2VcIixiPWUrYi5yZXBsYWNlKGgsZnVuY3Rpb24oKXtyZXR1cm4gbStlfSkrbX1iPWIucmVwbGFjZSgvXFxuL2csXCJcXHgzY2JyXFx4M2VcIik7ZHx8KGI9Yi5yZXBsYWNlKG5ldyBSZWdFeHAoXCJcXHgzY2JyXFx4M2UoP1xceDNkXFx4M2MvXCIrYytcIlxceDNlKVwiKSxmdW5jdGlvbihhKXtyZXR1cm4gQ0tFRElUT1IudG9vbHMucmVwZWF0KGEsMil9KSk7Yj1iLnJlcGxhY2UoL14gfCAkL2csXCJcXHgyNm5ic3A7XCIpO3JldHVybiBiPWIucmVwbGFjZSgvKD58XFxzKSAvZyxmdW5jdGlvbihhLGcpe3JldHVybiBnK1wiXFx4MjZuYnNwO1wifSkucmVwbGFjZSgvICg/PTwpL2csXCJcXHgyNm5ic3A7XCIpfSxnZXROZXh0TnVtYmVyOmZ1bmN0aW9uKCl7dmFyIGE9MDtyZXR1cm4gZnVuY3Rpb24oKXtyZXR1cm4rK2F9fSgpLGdldE5leHRJZDpmdW5jdGlvbigpe3JldHVyblwiY2tlX1wiK3RoaXMuZ2V0TmV4dE51bWJlcigpfSxnZXRVbmlxdWVJZDpmdW5jdGlvbigpe2Zvcih2YXIgYT1cImVcIixnPTA7OD5nO2crKylhKz1cbk1hdGguZmxvb3IoNjU1MzYqKDErTWF0aC5yYW5kb20oKSkpLnRvU3RyaW5nKDE2KS5zdWJzdHJpbmcoMSk7cmV0dXJuIGF9LG92ZXJyaWRlOmZ1bmN0aW9uKGEsZyl7dmFyIGQ9ZyhhKTtkLnByb3RvdHlwZT1hLnByb3RvdHlwZTtyZXR1cm4gZH0sc2V0VGltZW91dDpmdW5jdGlvbihhLGcsZCxiLGMpe2N8fChjPXdpbmRvdyk7ZHx8KGQ9Yyk7cmV0dXJuIGMuc2V0VGltZW91dChmdW5jdGlvbigpe2I/YS5hcHBseShkLFtdLmNvbmNhdChiKSk6YS5hcHBseShkKX0sZ3x8MCl9LGRlYm91bmNlOmZ1bmN0aW9uKGEsZyl7dmFyIGQ7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxjPWFyZ3VtZW50cztjbGVhclRpbWVvdXQoZCk7ZD1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZD1udWxsO2EuYXBwbHkoYixjKX0sZyl9fSx0aHJvdHRsZTpmdW5jdGlvbihhLGcsZCl7cmV0dXJuIG5ldyB0aGlzLmJ1ZmZlcnMudGhyb3R0bGUoYSxnLGQpfSx0cmltOmZ1bmN0aW9uKCl7dmFyIGE9Lyg/Ol5bIFxcdFxcblxccl0rKXwoPzpbIFxcdFxcblxccl0rJCkvZztcbnJldHVybiBmdW5jdGlvbihnKXtyZXR1cm4gZy5yZXBsYWNlKGEsXCJcIil9fSgpLGx0cmltOmZ1bmN0aW9uKCl7dmFyIGE9L15bIFxcdFxcblxccl0rL2c7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiBnLnJlcGxhY2UoYSxcIlwiKX19KCkscnRyaW06ZnVuY3Rpb24oKXt2YXIgYT0vWyBcXHRcXG5cXHJdKyQvZztyZXR1cm4gZnVuY3Rpb24oZyl7cmV0dXJuIGcucmVwbGFjZShhLFwiXCIpfX0oKSxpbmRleE9mOmZ1bmN0aW9uKGEsZyl7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZylmb3IodmFyIGQ9MCxiPWEubGVuZ3RoO2Q8YjtkKyspe2lmKGcoYVtkXSkpcmV0dXJuIGR9ZWxzZXtpZihhLmluZGV4T2YpcmV0dXJuIGEuaW5kZXhPZihnKTtkPTA7Zm9yKGI9YS5sZW5ndGg7ZDxiO2QrKylpZihhW2RdPT09ZylyZXR1cm4gZH1yZXR1cm4tMX0sc2VhcmNoOmZ1bmN0aW9uKGEsZyl7dmFyIGQ9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihhLGcpO3JldHVybiAwPD1kP2FbZF06bnVsbH0sYmluZDpmdW5jdGlvbihhLFxuZyl7dmFyIGQ9QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzLDIpO3JldHVybiBmdW5jdGlvbigpe3JldHVybiBhLmFwcGx5KGcsZC5jb25jYXQoQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKSkpfX0sY3JlYXRlQ2xhc3M6ZnVuY3Rpb24oYSl7dmFyIGc9YS4kLGQ9YS5iYXNlLGI9YS5wcml2YXRlc3x8YS5fLGM9YS5wcm90bzthPWEuc3RhdGljczshZyYmKGc9ZnVuY3Rpb24oKXtkJiZ0aGlzLmJhc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpfSk7aWYoYil2YXIgaD1nLGc9ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl98fCh0aGlzLl89e30pLGc7Zm9yKGcgaW4gYil7dmFyIGQ9YltnXTthW2ddPVwiZnVuY3Rpb25cIj09dHlwZW9mIGQ/Q0tFRElUT1IudG9vbHMuYmluZChkLHRoaXMpOmR9aC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O2QmJihnLnByb3RvdHlwZT10aGlzLnByb3RvdHlwZWRDb3B5KGQucHJvdG90eXBlKSxnLnByb3RvdHlwZS5jb25zdHJ1Y3Rvcj1cbmcsZy5iYXNlPWQsZy5iYXNlUHJvdG89ZC5wcm90b3R5cGUsZy5wcm90b3R5cGUuYmFzZT1mdW5jdGlvbiBxKCl7dGhpcy5iYXNlPWQucHJvdG90eXBlLmJhc2U7ZC5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dGhpcy5iYXNlPXF9KTtjJiZ0aGlzLmV4dGVuZChnLnByb3RvdHlwZSxjLCEwKTthJiZ0aGlzLmV4dGVuZChnLGEsITApO3JldHVybiBnfSxhZGRGdW5jdGlvbjpmdW5jdGlvbihhLGcpe3JldHVybiBlLnB1c2goZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShnfHx0aGlzLGFyZ3VtZW50cyl9KS0xfSxyZW1vdmVGdW5jdGlvbjpmdW5jdGlvbihhKXtlW2FdPW51bGx9LGNhbGxGdW5jdGlvbjpmdW5jdGlvbihhKXt2YXIgZz1lW2FdO3JldHVybiBnJiZnLmFwcGx5KHdpbmRvdyxBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMSkpfSxjc3NMZW5ndGg6ZnVuY3Rpb24oKXt2YXIgYT0vXi0/XFxkK1xcLj9cXGQqcHgkLyxnO3JldHVybiBmdW5jdGlvbihkKXtnPUNLRURJVE9SLnRvb2xzLnRyaW0oZCtcblwiXCIpK1wicHhcIjtyZXR1cm4gYS50ZXN0KGcpP2c6ZHx8XCJcIn19KCksY29udmVydFRvUHg6ZnVuY3Rpb24oKXt2YXIgYSxnO3JldHVybiBmdW5jdGlvbihkKXtpZighYXx8YS5pc0RldGFjaGVkKCkpYT1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NkaXYgc3R5bGVcXHgzZFwicG9zaXRpb246YWJzb2x1dGU7bGVmdDotOTk5OXB4O3RvcDotOTk5OXB4O21hcmdpbjowcHg7cGFkZGluZzowcHg7Ym9yZGVyOjBweDtcIlxceDNlXFx4M2MvZGl2XFx4M2UnLENLRURJVE9SLmRvY3VtZW50KSxDS0VESVRPUi5kb2N1bWVudC5nZXRCb2R5KCkuYXBwZW5kKGEpO2lmKCEvJSQvLnRlc3QoZCkpe3ZhciBiPTA+cGFyc2VGbG9hdChkKTtiJiYoZD1kLnJlcGxhY2UoXCItXCIsXCJcIikpO2Euc2V0U3R5bGUoXCJ3aWR0aFwiLGQpO2c9YS5nZXRDbGllbnRSZWN0KCk7ZD1NYXRoLnJvdW5kKGcud2lkdGgpO3JldHVybiBiPy1kOmR9cmV0dXJuIGR9fSgpLHJlcGVhdDpmdW5jdGlvbihhLGcpe3JldHVybiBBcnJheShnK1xuMSkuam9pbihhKX0sdHJ5VGhlc2U6ZnVuY3Rpb24oKXtmb3IodmFyIGEsZz0wLGQ9YXJndW1lbnRzLmxlbmd0aDtnPGQ7ZysrKXt2YXIgYj1hcmd1bWVudHNbZ107dHJ5e2E9YigpO2JyZWFrfWNhdGNoKGMpe319cmV0dXJuIGF9LGdlbktleTpmdW5jdGlvbigpe3JldHVybiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpLmpvaW4oXCItXCIpfSxkZWZlcjpmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgZz1hcmd1bWVudHMsZD10aGlzO3dpbmRvdy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5hcHBseShkLGcpfSwwKX19LG5vcm1hbGl6ZUNzc1RleHQ6ZnVuY3Rpb24oYSxnKXt2YXIgZD1bXSxiLGM9Q0tFRElUT1IudG9vbHMucGFyc2VDc3NUZXh0KGEsITAsZyk7Zm9yKGIgaW4gYylkLnB1c2goYitcIjpcIitjW2JdKTtkLnNvcnQoKTtyZXR1cm4gZC5sZW5ndGg/ZC5qb2luKFwiO1wiKStcIjtcIjpcIlwifSxjb252ZXJ0UmdiVG9IZXg6ZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvKD86cmdiXFwoXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccyosXFxzKihcXGQrKVxccypcXCkpL2dpLFxuZnVuY3Rpb24oYSxnLGQsbil7YT1bZyxkLG5dO2ZvcihnPTA7Mz5nO2crKylhW2ddPShcIjBcIitwYXJzZUludChhW2ddLDEwKS50b1N0cmluZygxNikpLnNsaWNlKC0yKTtyZXR1cm5cIiNcIithLmpvaW4oXCJcIil9KX0sbm9ybWFsaXplSGV4OmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoLyMoKFswLTlhLWZdezN9KXsxLDJ9KSgkfDt8XFxzKykvZ2ksZnVuY3Rpb24oYSxnLGQsbil7YT1nLnRvTG93ZXJDYXNlKCk7Mz09YS5sZW5ndGgmJihhPWEuc3BsaXQoXCJcIiksYT1bYVswXSxhWzBdLGFbMV0sYVsxXSxhWzJdLGFbMl1dLmpvaW4oXCJcIikpO3JldHVyblwiI1wiK2Erbn0pfSxfaXNWYWxpZENvbG9yRm9ybWF0OmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiExO2E9YS5yZXBsYWNlKC9cXHMrL2csXCJcIik7cmV0dXJuL15bYS16MC05KCkjJSwuL10rJC9pLnRlc3QoYSl9LHBhcnNlQ3NzVGV4dDpmdW5jdGlvbihhLGcsZCl7dmFyIGI9e307ZCYmKGE9KG5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcInNwYW5cIikpLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsXG5hKS5nZXRBdHRyaWJ1dGUoXCJzdHlsZVwiKXx8XCJcIik7YSYmKGE9Q0tFRElUT1IudG9vbHMubm9ybWFsaXplSGV4KENLRURJVE9SLnRvb2xzLmNvbnZlcnRSZ2JUb0hleChhKSkpO2lmKCFhfHxcIjtcIj09YSlyZXR1cm4gYjthLnJlcGxhY2UoLyZxdW90Oy9nLCdcIicpLnJlcGxhY2UoL1xccyooW146O1xcc10rKVxccyo6XFxzKihbXjtdKylcXHMqKD89O3wkKS9nLGZ1bmN0aW9uKGEsZCxuKXtnJiYoZD1kLnRvTG93ZXJDYXNlKCksXCJmb250LWZhbWlseVwiPT1kJiYobj1uLnJlcGxhY2UoL1xccyosXFxzKi9nLFwiLFwiKSksbj1DS0VESVRPUi50b29scy50cmltKG4pKTtiW2RdPW59KTtyZXR1cm4gYn0sd3JpdGVDc3NUZXh0OmZ1bmN0aW9uKGEsZyl7dmFyIGQsYj1bXTtmb3IoZCBpbiBhKWIucHVzaChkK1wiOlwiK2FbZF0pO2cmJmIuc29ydCgpO3JldHVybiBiLmpvaW4oXCI7IFwiKX0sb2JqZWN0Q29tcGFyZTpmdW5jdGlvbihhLGcsZCl7dmFyIGI7aWYoIWEmJiFnKXJldHVybiEwO2lmKCFhfHwhZylyZXR1cm4hMTtcbmZvcihiIGluIGEpaWYoYVtiXSE9Z1tiXSlyZXR1cm4hMTtpZighZClmb3IoYiBpbiBnKWlmKGFbYl0hPWdbYl0pcmV0dXJuITE7cmV0dXJuITB9LG9iamVjdEtleXM6ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLm9iamVjdC5rZXlzKGEpfSxjb252ZXJ0QXJyYXlUb09iamVjdDpmdW5jdGlvbihhLGcpe3ZhciBkPXt9OzE9PWFyZ3VtZW50cy5sZW5ndGgmJihnPSEwKTtmb3IodmFyIGI9MCxjPWEubGVuZ3RoO2I8YzsrK2IpZFthW2JdXT1nO3JldHVybiBkfSxnZXRTdHlsZWRTcGFuczpmdW5jdGlvbihhLGcpe3ZhciBkPUNLRURJVE9SLmVudi5pZSYmOD09Q0tFRElUT1IuZW52LnZlcnNpb24/YS50b1VwcGVyQ2FzZSgpOmEsZD1nLmZpbmQoXCJzcGFuW3N0eWxlKlxceDNkXCIrZCtcIl1cIikudG9BcnJheSgpO3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoZCxmdW5jdGlvbihnKXtyZXR1cm4hIWcuZ2V0U3R5bGUoYSl9KX0sZml4RG9tYWluOmZ1bmN0aW9uKCl7Zm9yKHZhciBhOzspdHJ5e2E9XG53aW5kb3cucGFyZW50LmRvY3VtZW50LmRvbWFpbjticmVha31jYXRjaChnKXthPWE/YS5yZXBsYWNlKC8uKz8oPzpcXC58JCkvLFwiXCIpOmRvY3VtZW50LmRvbWFpbjtpZighYSlicmVhaztkb2N1bWVudC5kb21haW49YX1yZXR1cm4hIWF9LGV2ZW50c0J1ZmZlcjpmdW5jdGlvbihhLGcsZCl7cmV0dXJuIG5ldyB0aGlzLmJ1ZmZlcnMuZXZlbnQoYSxnLGQpfSxlbmFibGVIdG1sNUVsZW1lbnRzOmZ1bmN0aW9uKGEsZyl7Zm9yKHZhciBkPVwiYWJiciBhcnRpY2xlIGFzaWRlIGF1ZGlvIGJkaSBjYW52YXMgZGF0YSBkYXRhbGlzdCBkZXRhaWxzIGZpZ2NhcHRpb24gZmlndXJlIGZvb3RlciBoZWFkZXIgaGdyb3VwIG1haW4gbWFyayBtZXRlciBuYXYgb3V0cHV0IHByb2dyZXNzIHNlY3Rpb24gc3VtbWFyeSB0aW1lIHZpZGVvXCIuc3BsaXQoXCIgXCIpLGI9ZC5sZW5ndGgsYztiLS07KWM9YS5jcmVhdGVFbGVtZW50KGRbYl0pLGcmJmEuYXBwZW5kQ2hpbGQoYyl9LGNoZWNrSWZBbnlBcnJheUl0ZW1NYXRjaGVzOmZ1bmN0aW9uKGEsXG5nKXtmb3IodmFyIGQ9MCxiPWEubGVuZ3RoO2Q8YjsrK2QpaWYoYVtkXS5tYXRjaChnKSlyZXR1cm4hMDtyZXR1cm4hMX0sY2hlY2tJZkFueU9iamVjdFByb3BlcnR5TWF0Y2hlczpmdW5jdGlvbihhLGcpe2Zvcih2YXIgZCBpbiBhKWlmKGQubWF0Y2goZykpcmV0dXJuITA7cmV0dXJuITF9LGtleXN0cm9rZVRvU3RyaW5nOmZ1bmN0aW9uKGEsZyl7dmFyIGQ9dGhpcy5rZXlzdHJva2VUb0FycmF5KGEsZyk7ZC5kaXNwbGF5PWQuZGlzcGxheS5qb2luKFwiK1wiKTtkLmFyaWE9ZC5hcmlhLmpvaW4oXCIrXCIpO3JldHVybiBkfSxrZXlzdHJva2VUb0FycmF5OmZ1bmN0aW9uKGEsZyl7dmFyIGQ9ZyYxNjcxMTY4MCxiPWcmNjU1MzUsYz1DS0VESVRPUi5lbnYubWFjLGg9W10sZT1bXTtkJkNLRURJVE9SLkNUUkwmJihoLnB1c2goYz9cIuKMmFwiOmFbMTddKSxlLnB1c2goYz9hWzIyNF06YVsxN10pKTtkJkNLRURJVE9SLkFMVCYmKGgucHVzaChjP1wi4oylXCI6YVsxOF0pLGUucHVzaChhWzE4XSkpO2QmQ0tFRElUT1IuU0hJRlQmJlxuKGgucHVzaChjP1wi4oenXCI6YVsxNl0pLGUucHVzaChhWzE2XSkpO2ImJihhW2JdPyhoLnB1c2goYVtiXSksZS5wdXNoKGFbYl0pKTooaC5wdXNoKFN0cmluZy5mcm9tQ2hhckNvZGUoYikpLGUucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGIpKSkpO3JldHVybntkaXNwbGF5OmgsYXJpYTplfX0sdHJhbnNwYXJlbnRJbWFnZURhdGE6XCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhBUUFCQVBBQkFQLy8vd0FBQUNINUJBRUtBQUFBTEFBQUFBQUJBQUVBQUFJQ1JBRUFPd1xceDNkXFx4M2RcIixnZXRDb29raWU6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7Zm9yKHZhciBnPWRvY3VtZW50LmNvb2tpZS5zcGxpdChcIjtcIiksZCxiLGM9MDtjPGcubGVuZ3RoO2MrKylpZihkPWdbY10uc3BsaXQoXCJcXHgzZFwiKSxiPWRlY29kZVVSSUNvbXBvbmVudChDS0VESVRPUi50b29scy50cmltKGRbMF0pLnRvTG93ZXJDYXNlKCkpLGI9PT1hKXJldHVybiBkZWNvZGVVUklDb21wb25lbnQoMTxkLmxlbmd0aD9cbmRbMV06XCJcIik7cmV0dXJuIG51bGx9LHNldENvb2tpZTpmdW5jdGlvbihhLGcpe2RvY3VtZW50LmNvb2tpZT1lbmNvZGVVUklDb21wb25lbnQoYSkrXCJcXHgzZFwiK2VuY29kZVVSSUNvbXBvbmVudChnKStcIjtwYXRoXFx4M2QvXCJ9LGdldENzcmZUb2tlbjpmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLnRvb2xzLmdldENvb2tpZShcImNrQ3NyZlRva2VuXCIpO2lmKCFhfHw0MCE9YS5sZW5ndGgpe3ZhciBhPVtdLGc9XCJcIjtpZih3aW5kb3cuY3J5cHRvJiZ3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcylhPW5ldyBVaW50OEFycmF5KDQwKSx3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhhKTtlbHNlIGZvcih2YXIgZD0wOzQwPmQ7ZCsrKWEucHVzaChNYXRoLmZsb29yKDI1NipNYXRoLnJhbmRvbSgpKSk7Zm9yKGQ9MDtkPGEubGVuZ3RoO2QrKyl2YXIgYj1cImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6MDEyMzQ1Njc4OVwiLmNoYXJBdChhW2RdJTM2KSxnPWcrKC41PE1hdGgucmFuZG9tKCk/XG5iLnRvVXBwZXJDYXNlKCk6Yik7YT1nO0NLRURJVE9SLnRvb2xzLnNldENvb2tpZShcImNrQ3NyZlRva2VuXCIsYSl9cmV0dXJuIGF9LGVzY2FwZUNzczpmdW5jdGlvbihhKXtpZihhKWlmKHdpbmRvdy5DU1MmJkNTUy5lc2NhcGUpYT1DU1MuZXNjYXBlKGEpO2Vsc2V7YT1TdHJpbmcoYSk7Zm9yKHZhciBnPWEubGVuZ3RoLGQ9LTEsYixjPVwiXCIsaD1hLmNoYXJDb2RlQXQoMCk7KytkPGc7KWI9YS5jaGFyQ29kZUF0KGQpLGM9MD09Yj9jK1wi77+9XCI6MTI3PT1ifHwxPD1iJiYzMT49Ynx8MD09ZCYmNDg8PWImJjU3Pj1ifHwxPT1kJiY0ODw9YiYmNTc+PWImJjQ1PT1oP2MrKFwiXFxcXFwiK2IudG9TdHJpbmcoMTYpK1wiIFwiKTowPT1kJiYxPT1nJiY0NT09Yj9jKyhcIlxcXFxcIithLmNoYXJBdChkKSk6MTI4PD1ifHw0NT09Ynx8OTU9PWJ8fDQ4PD1iJiY1Nz49Ynx8NjU8PWImJjkwPj1ifHw5Nzw9YiYmMTIyPj1iP2MrYS5jaGFyQXQoZCk6YysoXCJcXFxcXCIrYS5jaGFyQXQoZCkpO2E9Y31lbHNlIGE9XCJcIjtyZXR1cm4gYX0sXG5nZXRNb3VzZUJ1dHRvbjpmdW5jdGlvbihhKXtyZXR1cm4oYT1hJiZhLmRhdGE/YS5kYXRhLiQ6YSk/Q0tFRElUT1IudG9vbHMubm9ybWFsaXplTW91c2VCdXR0b24oYS5idXR0b24pOiExfSxub3JtYWxpemVNb3VzZUJ1dHRvbjpmdW5jdGlvbihhLGcpe2lmKCFDS0VESVRPUi5lbnYuaWV8fDk8PUNLRURJVE9SLmVudi52ZXJzaW9uJiYhQ0tFRElUT1IuZW52LmllNkNvbXBhdClyZXR1cm4gYTtmb3IodmFyIGQ9W1tDS0VESVRPUi5NT1VTRV9CVVRUT05fTEVGVCwxXSxbQ0tFRElUT1IuTU9VU0VfQlVUVE9OX01JRERMRSw0XSxbQ0tFRElUT1IuTU9VU0VfQlVUVE9OX1JJR0hULDJdXSxiPTA7YjxkLmxlbmd0aDtiKyspe3ZhciBjPWRbYl07aWYoY1swXT09PWEmJmcpcmV0dXJuIGNbMV07aWYoIWcmJmNbMV09PT1hKXJldHVybiBjWzBdfX0sY29udmVydEhleFN0cmluZ1RvQnl0ZXM6ZnVuY3Rpb24oYSl7dmFyIGc9W10sZD1hLmxlbmd0aC8yLGI7Zm9yKGI9MDtiPGQ7YisrKWcucHVzaChwYXJzZUludChhLnN1YnN0cigyKlxuYiwyKSwxNikpO3JldHVybiBnfSxjb252ZXJ0Qnl0ZXNUb0Jhc2U2NDpmdW5jdGlvbihhKXt2YXIgZz1cIlwiLGQ9YS5sZW5ndGgsYjtmb3IoYj0wO2I8ZDtiKz0zKXt2YXIgYz1hLnNsaWNlKGIsYiszKSxoPWMubGVuZ3RoLGU9W10sbTtpZigzPmgpZm9yKG09aDszPm07bSsrKWNbbV09MDtlWzBdPShjWzBdJjI1Mik+PjI7ZVsxXT0oY1swXSYzKTw8NHxjWzFdPj40O2VbMl09KGNbMV0mMTUpPDwyfChjWzJdJjE5Mik+PjY7ZVszXT1jWzJdJjYzO2ZvcihtPTA7ND5tO20rKylnPW08PWg/ZytcIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky9cIi5jaGFyQXQoZVttXSk6ZytcIlxceDNkXCJ9cmV0dXJuIGd9LHN0eWxlOntwYXJzZTp7X2JvcmRlclN0eWxlOlwibm9uZSBoaWRkZW4gZG90dGVkIGRhc2hlZCBzb2xpZCBkb3VibGUgZ3Jvb3ZlIHJpZGdlIGluc2V0IG91dHNldFwiLnNwbGl0KFwiIFwiKSxfd2lkdGhSZWdFeHA6L14odGhpbnxtZWRpdW18dGhpY2t8W1xcKy1dP1xcZCsoXFwuXFxkKyk/W2EteiVdK3xbXFwrLV0/MCsoXFwuMCspP3xcXC5cXGQrW2EteiVdKykkLyxcbl9yZ2JhUmVnRXhwOi9yZ2JhP1xcKFxccypcXGQrJT9cXHMqLFxccypcXGQrJT9cXHMqLFxccypcXGQrJT9cXHMqKD86LFxccypbMC05Ll0rXFxzKik/XFwpL2dpLF9oc2xhUmVnRXhwOi9oc2xhP1xcKFxccypbMC05Ll0rXFxzKixcXHMqXFxkKyVcXHMqLFxccypcXGQrJVxccyooPzosXFxzKlswLTkuXStcXHMqKT9cXCkvZ2ksYmFja2dyb3VuZDpmdW5jdGlvbihhKXt2YXIgZz17fSxkPXRoaXMuX2ZpbmRDb2xvcihhKTtkLmxlbmd0aCYmKGcuY29sb3I9ZFswXSxDS0VESVRPUi50b29scy5hcnJheS5mb3JFYWNoKGQsZnVuY3Rpb24oZyl7YT1hLnJlcGxhY2UoZyxcIlwiKX0pKTtpZihhPUNLRURJVE9SLnRvb2xzLnRyaW0oYSkpZy51bnByb2Nlc3NlZD1hO3JldHVybiBnfSxtYXJnaW46ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLnN0eWxlLnBhcnNlLnNpZGVTaG9ydGhhbmQoYSxmdW5jdGlvbihhKXtyZXR1cm4gYS5tYXRjaCgvKD86XFwtP1tcXC5cXGRdKyg/OiV8XFx3Kil8YXV0b3xpbmhlcml0fGluaXRpYWx8dW5zZXR8cmV2ZXJ0KS9nKXx8XG5bXCIwcHhcIl19KX0sc2lkZVNob3J0aGFuZDpmdW5jdGlvbihhLGcpe2Z1bmN0aW9uIGQoYSl7Yi50b3A9Y1thWzBdXTtiLnJpZ2h0PWNbYVsxXV07Yi5ib3R0b209Y1thWzJdXTtiLmxlZnQ9Y1thWzNdXX12YXIgYj17fSxjPWc/ZyhhKTphLnNwbGl0KC9cXHMrLyk7c3dpdGNoKGMubGVuZ3RoKXtjYXNlIDE6ZChbMCwwLDAsMF0pO2JyZWFrO2Nhc2UgMjpkKFswLDEsMCwxXSk7YnJlYWs7Y2FzZSAzOmQoWzAsMSwyLDFdKTticmVhaztjYXNlIDQ6ZChbMCwxLDIsM10pfXJldHVybiBifSxib3JkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLnN0eWxlLmJvcmRlci5mcm9tQ3NzUnVsZShhKX0sX2ZpbmRDb2xvcjpmdW5jdGlvbihhKXt2YXIgZz1bXSxkPUNLRURJVE9SLnRvb2xzLmFycmF5LGc9Zy5jb25jYXQoYS5tYXRjaCh0aGlzLl9yZ2JhUmVnRXhwKXx8W10pLGc9Zy5jb25jYXQoYS5tYXRjaCh0aGlzLl9oc2xhUmVnRXhwKXx8W10pO3JldHVybiBnPWcuY29uY2F0KGQuZmlsdGVyKGEuc3BsaXQoL1xccysvKSxcbmZ1bmN0aW9uKGEpe3JldHVybiBhLm1hdGNoKC9eXFwjW2EtZjAtOV17M30oPzpbYS1mMC05XXszfSk/JC9naSk/ITA6YS50b0xvd2VyQ2FzZSgpaW4gQ0tFRElUT1IudG9vbHMuc3R5bGUucGFyc2UuX2NvbG9yc30pKX19fSxhcnJheTp7ZmlsdGVyOmZ1bmN0aW9uKGEsZyxkKXt2YXIgYj1bXTt0aGlzLmZvckVhY2goYSxmdW5jdGlvbihjLGgpe2cuY2FsbChkLGMsaCxhKSYmYi5wdXNoKGMpfSk7cmV0dXJuIGJ9LGZpbmQ6ZnVuY3Rpb24oYSxnLGQpe2Zvcih2YXIgYj1hLmxlbmd0aCxjPTA7YzxiOyl7aWYoZy5jYWxsKGQsYVtjXSxjLGEpKXJldHVybiBhW2NdO2MrK319LGZvckVhY2g6ZnVuY3Rpb24oYSxnLGQpe3ZhciBiPWEubGVuZ3RoLGM7Zm9yKGM9MDtjPGI7YysrKWcuY2FsbChkLGFbY10sYyxhKX0sbWFwOmZ1bmN0aW9uKGEsZyxkKXtmb3IodmFyIGI9W10sYz0wO2M8YS5sZW5ndGg7YysrKWIucHVzaChnLmNhbGwoZCxhW2NdLGMsYSkpO3JldHVybiBifSxyZWR1Y2U6ZnVuY3Rpb24oYSxcbmcsZCxiKXtmb3IodmFyIGM9MDtjPGEubGVuZ3RoO2MrKylkPWcuY2FsbChiLGQsYVtjXSxjLGEpO3JldHVybiBkfSxldmVyeTpmdW5jdGlvbihhLGcsZCl7aWYoIWEubGVuZ3RoKXJldHVybiEwO2c9dGhpcy5maWx0ZXIoYSxnLGQpO3JldHVybiBhLmxlbmd0aD09PWcubGVuZ3RofSxzb21lOmZ1bmN0aW9uKGEsZyxkKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylpZihnLmNhbGwoZCxhW2JdLGIsYSkpcmV0dXJuITA7cmV0dXJuITF9LHppcDpmdW5jdGlvbihhLGcpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5tYXAoYSxmdW5jdGlvbihhLGQpe3JldHVyblthLGdbZF1dfSl9LHVuaXF1ZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5maWx0ZXIoYSxmdW5jdGlvbihnLGQpe3JldHVybiBkPT09Q0tFRElUT1IudG9vbHMuYXJyYXkuaW5kZXhPZihhLGcpfSl9fSxvYmplY3Q6e0RPTlRfRU5VTVM6XCJ0b1N0cmluZyB0b0xvY2FsZVN0cmluZyB2YWx1ZU9mIGhhc093blByb3BlcnR5IGlzUHJvdG90eXBlT2YgcHJvcGVydHlJc0VudW1lcmFibGUgY29uc3RydWN0b3JcIi5zcGxpdChcIiBcIiksXG5lbnRyaWVzOmZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5tYXAoQ0tFRElUT1IudG9vbHMub2JqZWN0LmtleXMoYSksZnVuY3Rpb24oZyl7cmV0dXJuW2csYVtnXV19KX0sdmFsdWVzOmZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5tYXAoQ0tFRElUT1IudG9vbHMub2JqZWN0LmtleXMoYSksZnVuY3Rpb24oZyl7cmV0dXJuIGFbZ119KX0sa2V5czpmdW5jdGlvbihhKXt2YXIgZz1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LGQ9W10sYj1DS0VESVRPUi50b29scy5vYmplY3QuRE9OVF9FTlVNUztpZihDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24mJighYXx8XCJvYmplY3RcIiE9PXR5cGVvZiBhKSl7Zz1bXTtpZihcInN0cmluZ1wiPT09dHlwZW9mIGEpZm9yKGQ9MDtkPGEubGVuZ3RoO2QrKylnLnB1c2goU3RyaW5nKGQpKTtyZXR1cm4gZ31mb3IodmFyIGMgaW4gYSlkLnB1c2goYyk7aWYoQ0tFRElUT1IuZW52LmllJiZcbjk+Q0tFRElUT1IuZW52LnZlcnNpb24pZm9yKGM9MDtjPGIubGVuZ3RoO2MrKylnLmNhbGwoYSxiW2NdKSYmZC5wdXNoKGJbY10pO3JldHVybiBkfSxmaW5kS2V5OmZ1bmN0aW9uKGEsZyl7aWYoXCJvYmplY3RcIiE9PXR5cGVvZiBhKXJldHVybiBudWxsO2Zvcih2YXIgZCBpbiBhKWlmKGFbZF09PT1nKXJldHVybiBkO3JldHVybiBudWxsfSxtZXJnZTpmdW5jdGlvbihhLGcpe3ZhciBkPUNLRURJVE9SLnRvb2xzLGI9ZC5jbG9uZShhKSxjPWQuY2xvbmUoZyk7ZC5hcnJheS5mb3JFYWNoKGQub2JqZWN0LmtleXMoYyksZnVuY3Rpb24oYSl7YlthXT1cIm9iamVjdFwiPT09dHlwZW9mIGNbYV0mJlwib2JqZWN0XCI9PT10eXBlb2YgYlthXT9kLm9iamVjdC5tZXJnZShiW2FdLGNbYV0pOmNbYV19KTtyZXR1cm4gYn19LGdldEFic29sdXRlUmVjdFBvc2l0aW9uOmZ1bmN0aW9uKGEsZyl7ZnVuY3Rpb24gZChhKXtpZihhKXt2YXIgZz1hLmdldENsaWVudFJlY3QoKTtiLnRvcCs9Zy50b3A7Yi5sZWZ0Kz1cbmcubGVmdDtcInhcImluIGImJlwieVwiaW4gYiYmKGIueCs9Zy54LGIueSs9Zy55KTtkKGEuZ2V0V2luZG93KCkuZ2V0RnJhbWUoKSl9fXZhciBiPUNLRURJVE9SLnRvb2xzLmNvcHkoZyk7ZChhLmdldEZyYW1lKCkpO3ZhciBjPUNLRURJVE9SLmRvY3VtZW50LmdldFdpbmRvdygpLmdldFNjcm9sbFBvc2l0aW9uKCk7Yi50b3ArPWMueTtiLmxlZnQrPWMueDtcInhcImluIGImJlwieVwiaW4gYiYmKGIueSs9Yy55LGIueCs9Yy54KTtiLnJpZ2h0PWIubGVmdCtiLndpZHRoO2IuYm90dG9tPWIudG9wK2IuaGVpZ2h0O3JldHVybiBifX07YS5wcm90b3R5cGU9e3Jlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fbGFzdE91dHB1dD0wO3RoaXMuX2NsZWFyVGltZXIoKX0sX3Jlc2NoZWR1bGU6ZnVuY3Rpb24oKXtyZXR1cm4hMX0sX2NhbGw6ZnVuY3Rpb24oKXt0aGlzLl9vdXRwdXQoKX0sX2NsZWFyVGltZXI6ZnVuY3Rpb24oKXt0aGlzLl9zY2hlZHVsZWRUaW1lciYmY2xlYXJUaW1lb3V0KHRoaXMuX3NjaGVkdWxlZFRpbWVyKTtcbnRoaXMuX3NjaGVkdWxlZFRpbWVyPTB9fTtmLnByb3RvdHlwZT1DS0VESVRPUi50b29scy5wcm90b3R5cGVkQ29weShhLnByb3RvdHlwZSk7Zi5wcm90b3R5cGUuX3Jlc2NoZWR1bGU9ZnVuY3Rpb24oKXt0aGlzLl9zY2hlZHVsZWRUaW1lciYmdGhpcy5fY2xlYXJUaW1lcigpfTtmLnByb3RvdHlwZS5fY2FsbD1mdW5jdGlvbigpe3RoaXMuX291dHB1dC5hcHBseSh0aGlzLl9jb250ZXh0LHRoaXMuX2FyZ3MpfTtDS0VESVRPUi50b29scy5idWZmZXJzPXt9O0NLRURJVE9SLnRvb2xzLmJ1ZmZlcnMuZXZlbnQ9YTtDS0VESVRPUi50b29scy5idWZmZXJzLnRocm90dGxlPWY7Q0tFRElUT1IudG9vbHMuc3R5bGUuYm9yZGVyPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKGEpe2E9YXx8e307dGhpcy53aWR0aD1hLndpZHRoO3RoaXMuc3R5bGU9YS5zdHlsZTt0aGlzLmNvbG9yPWEuY29sb3I7dGhpcy5fLm5vcm1hbGl6ZSgpfSxfOntub3JtYWxpemVNYXA6e2NvbG9yOltbL3dpbmRvd3RleHQvZyxcblwiYmxhY2tcIl1dfSxub3JtYWxpemU6ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gdGhpcy5fLm5vcm1hbGl6ZU1hcCl7dmFyIGc9dGhpc1thXTtnJiYodGhpc1thXT1DS0VESVRPUi50b29scy5hcnJheS5yZWR1Y2UodGhpcy5fLm5vcm1hbGl6ZU1hcFthXSxmdW5jdGlvbihhLGcpe3JldHVybiBhLnJlcGxhY2UoZ1swXSxnWzFdKX0sZykpfX19LHByb3RvOnt0b1N0cmluZzpmdW5jdGlvbigpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoW3RoaXMud2lkdGgsdGhpcy5zdHlsZSx0aGlzLmNvbG9yXSxmdW5jdGlvbihhKXtyZXR1cm4hIWF9KS5qb2luKFwiIFwiKX19LHN0YXRpY3M6e2Zyb21Dc3NSdWxlOmZ1bmN0aW9uKGEpe3ZhciBnPXt9LGQ9YS5zcGxpdCgvXFxzKy9nKTthPUNLRURJVE9SLnRvb2xzLnN0eWxlLnBhcnNlLl9maW5kQ29sb3IoYSk7YS5sZW5ndGgmJihnLmNvbG9yPWFbMF0pO0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goZCxmdW5jdGlvbihhKXtnLnN0eWxlfHxcbi0xPT09Q0tFRElUT1IudG9vbHMuaW5kZXhPZihDS0VESVRPUi50b29scy5zdHlsZS5wYXJzZS5fYm9yZGVyU3R5bGUsYSk/IWcud2lkdGgmJkNLRURJVE9SLnRvb2xzLnN0eWxlLnBhcnNlLl93aWR0aFJlZ0V4cC50ZXN0KGEpJiYoZy53aWR0aD1hKTpnLnN0eWxlPWF9KTtyZXR1cm4gbmV3IENLRURJVE9SLnRvb2xzLnN0eWxlLmJvcmRlcihnKX0sc3BsaXRDc3NWYWx1ZXM6ZnVuY3Rpb24oYSxnKXtnPWd8fHt9O3ZhciBkPUNLRURJVE9SLnRvb2xzLmFycmF5LnJlZHVjZShbXCJ3aWR0aFwiLFwic3R5bGVcIixcImNvbG9yXCJdLGZ1bmN0aW9uKGQsYil7dmFyIGM9YVtcImJvcmRlci1cIitiXXx8Z1tiXTtkW2JdPWM/Q0tFRElUT1IudG9vbHMuc3R5bGUucGFyc2Uuc2lkZVNob3J0aGFuZChjKTpudWxsO3JldHVybiBkfSx7fSk7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5LnJlZHVjZShbXCJ0b3BcIixcInJpZ2h0XCIsXCJib3R0b21cIixcImxlZnRcIl0sZnVuY3Rpb24oZyxiKXt2YXIgYz17fSxoO2ZvcihoIGluIGQpe3ZhciBlPVxuYVtcImJvcmRlci1cIitiK1wiLVwiK2hdO2NbaF09ZT9lOmRbaF0mJmRbaF1bYl19Z1tcImJvcmRlci1cIitiXT1uZXcgQ0tFRElUT1IudG9vbHMuc3R5bGUuYm9yZGVyKGMpO3JldHVybiBnfSx7fSl9fX0pO0NLRURJVE9SLnRvb2xzLmFycmF5LmluZGV4T2Y9Q0tFRElUT1IudG9vbHMuaW5kZXhPZjtDS0VESVRPUi50b29scy5hcnJheS5pc0FycmF5PUNLRURJVE9SLnRvb2xzLmlzQXJyYXk7Q0tFRElUT1IuTU9VU0VfQlVUVE9OX0xFRlQ9MDtDS0VESVRPUi5NT1VTRV9CVVRUT05fTUlERExFPTE7Q0tFRElUT1IuTU9VU0VfQlVUVE9OX1JJR0hUPTJ9KCksQ0tFRElUT1IuZHRkPWZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IudG9vbHMuZXh0ZW5kLGY9ZnVuY3Rpb24oYSxnKXtmb3IodmFyIGQ9Q0tFRElUT1IudG9vbHMuY2xvbmUoYSksYj0xO2I8YXJndW1lbnRzLmxlbmd0aDtiKyspe2c9YXJndW1lbnRzW2JdO2Zvcih2YXIgYyBpbiBnKWRlbGV0ZSBkW2NdfXJldHVybiBkfSxlPXt9LGI9e30sXG5jPXthZGRyZXNzOjEsYXJ0aWNsZToxLGFzaWRlOjEsYmxvY2txdW90ZToxLGRldGFpbHM6MSxkaXY6MSxkbDoxLGZpZWxkc2V0OjEsZmlndXJlOjEsZm9vdGVyOjEsZm9ybToxLGgxOjEsaDI6MSxoMzoxLGg0OjEsaDU6MSxoNjoxLGhlYWRlcjoxLGhncm91cDoxLGhyOjEsbWFpbjoxLG1lbnU6MSxuYXY6MSxvbDoxLHA6MSxwcmU6MSxzZWN0aW9uOjEsdGFibGU6MSx1bDoxfSxrPXtjb21tYW5kOjEsbGluazoxLG1ldGE6MSxub3NjcmlwdDoxLHNjcmlwdDoxLHN0eWxlOjF9LGw9e30sbT17XCIjXCI6MX0sZD17Y2VudGVyOjEsZGlyOjEsbm9mcmFtZXM6MX07YShlLHthOjEsYWJicjoxLGFyZWE6MSxhdWRpbzoxLGI6MSxiZGk6MSxiZG86MSxicjoxLGJ1dHRvbjoxLGNhbnZhczoxLGNpdGU6MSxjb2RlOjEsY29tbWFuZDoxLGRhdGFsaXN0OjEsZGVsOjEsZGZuOjEsZW06MSxlbWJlZDoxLGk6MSxpZnJhbWU6MSxpbWc6MSxpbnB1dDoxLGluczoxLGtiZDoxLGtleWdlbjoxLGxhYmVsOjEsbWFwOjEsXG5tYXJrOjEsbWV0ZXI6MSxub3NjcmlwdDoxLG9iamVjdDoxLG91dHB1dDoxLHByb2dyZXNzOjEscToxLHJ1Ynk6MSxzOjEsc2FtcDoxLHNjcmlwdDoxLHNlbGVjdDoxLHNtYWxsOjEsc3BhbjoxLHN0cm9uZzoxLHN1YjoxLHN1cDoxLHRleHRhcmVhOjEsdGltZToxLHU6MSxcInZhclwiOjEsdmlkZW86MSx3YnI6MX0sbSx7YWNyb255bToxLGFwcGxldDoxLGJhc2Vmb250OjEsYmlnOjEsZm9udDoxLGlzaW5kZXg6MSxzdHJpa2U6MSxzdHlsZToxLHR0OjF9KTthKGIsYyxlLGQpO2Y9e2E6ZihlLHthOjEsYnV0dG9uOjF9KSxhYmJyOmUsYWRkcmVzczpiLGFyZWE6bCxhcnRpY2xlOmIsYXNpZGU6YixhdWRpbzphKHtzb3VyY2U6MSx0cmFjazoxfSxiKSxiOmUsYmFzZTpsLGJkaTplLGJkbzplLGJsb2NrcXVvdGU6Yixib2R5OmIsYnI6bCxidXR0b246ZihlLHthOjEsYnV0dG9uOjF9KSxjYW52YXM6ZSxjYXB0aW9uOmIsY2l0ZTplLGNvZGU6ZSxjb2w6bCxjb2xncm91cDp7Y29sOjF9LGNvbW1hbmQ6bCxcbmRhdGFsaXN0OmEoe29wdGlvbjoxfSxlKSxkZDpiLGRlbDplLGRldGFpbHM6YSh7c3VtbWFyeToxfSxiKSxkZm46ZSxkaXY6YixkbDp7ZHQ6MSxkZDoxfSxkdDpiLGVtOmUsZW1iZWQ6bCxmaWVsZHNldDphKHtsZWdlbmQ6MX0sYiksZmlnY2FwdGlvbjpiLGZpZ3VyZTphKHtmaWdjYXB0aW9uOjF9LGIpLGZvb3RlcjpiLGZvcm06YixoMTplLGgyOmUsaDM6ZSxoNDplLGg1OmUsaDY6ZSxoZWFkOmEoe3RpdGxlOjEsYmFzZToxfSxrKSxoZWFkZXI6YixoZ3JvdXA6e2gxOjEsaDI6MSxoMzoxLGg0OjEsaDU6MSxoNjoxfSxocjpsLGh0bWw6YSh7aGVhZDoxLGJvZHk6MX0sYixrKSxpOmUsaWZyYW1lOm0saW1nOmwsaW5wdXQ6bCxpbnM6ZSxrYmQ6ZSxrZXlnZW46bCxsYWJlbDplLGxlZ2VuZDplLGxpOmIsbGluazpsLG1haW46YixtYXA6YixtYXJrOmUsbWVudTphKHtsaToxfSxiKSxtZXRhOmwsbWV0ZXI6ZihlLHttZXRlcjoxfSksbmF2OmIsbm9zY3JpcHQ6YSh7bGluazoxLG1ldGE6MSxzdHlsZToxfSxcbmUpLG9iamVjdDphKHtwYXJhbToxfSxlKSxvbDp7bGk6MX0sb3B0Z3JvdXA6e29wdGlvbjoxfSxvcHRpb246bSxvdXRwdXQ6ZSxwOmUscGFyYW06bCxwcmU6ZSxwcm9ncmVzczpmKGUse3Byb2dyZXNzOjF9KSxxOmUscnA6ZSxydDplLHJ1Ynk6YSh7cnA6MSxydDoxfSxlKSxzOmUsc2FtcDplLHNjcmlwdDptLHNlY3Rpb246YixzZWxlY3Q6e29wdGdyb3VwOjEsb3B0aW9uOjF9LHNtYWxsOmUsc291cmNlOmwsc3BhbjplLHN0cm9uZzplLHN0eWxlOm0sc3ViOmUsc3VtbWFyeTphKHtoMToxLGgyOjEsaDM6MSxoNDoxLGg1OjEsaDY6MX0sZSksc3VwOmUsdGFibGU6e2NhcHRpb246MSxjb2xncm91cDoxLHRoZWFkOjEsdGZvb3Q6MSx0Ym9keToxLHRyOjF9LHRib2R5Ont0cjoxfSx0ZDpiLHRleHRhcmVhOm0sdGZvb3Q6e3RyOjF9LHRoOmIsdGhlYWQ6e3RyOjF9LHRpbWU6ZihlLHt0aW1lOjF9KSx0aXRsZTptLHRyOnt0aDoxLHRkOjF9LHRyYWNrOmwsdTplLHVsOntsaToxfSxcInZhclwiOmUsXG52aWRlbzphKHtzb3VyY2U6MSx0cmFjazoxfSxiKSx3YnI6bCxhY3JvbnltOmUsYXBwbGV0OmEoe3BhcmFtOjF9LGIpLGJhc2Vmb250OmwsYmlnOmUsY2VudGVyOmIsZGlhbG9nOmwsZGlyOntsaToxfSxmb250OmUsaXNpbmRleDpsLG5vZnJhbWVzOmIsc3RyaWtlOmUsdHQ6ZX07YShmLHskYmxvY2s6YSh7YXVkaW86MSxkZDoxLGR0OjEsZmlnY2FwdGlvbjoxLGxpOjEsdmlkZW86MX0sYyxkKSwkYmxvY2tMaW1pdDp7YXJ0aWNsZToxLGFzaWRlOjEsYXVkaW86MSxib2R5OjEsY2FwdGlvbjoxLGRldGFpbHM6MSxkaXI6MSxkaXY6MSxkbDoxLGZpZWxkc2V0OjEsZmlnY2FwdGlvbjoxLGZpZ3VyZToxLGZvb3RlcjoxLGZvcm06MSxoZWFkZXI6MSxoZ3JvdXA6MSxtYWluOjEsbWVudToxLG5hdjoxLG9sOjEsc2VjdGlvbjoxLHRhYmxlOjEsdGQ6MSx0aDoxLHRyOjEsdWw6MSx2aWRlbzoxfSwkY2RhdGE6e3NjcmlwdDoxLHN0eWxlOjF9LCRlZGl0YWJsZTp7YWRkcmVzczoxLGFydGljbGU6MSxcbmFzaWRlOjEsYmxvY2txdW90ZToxLGJvZHk6MSxkZXRhaWxzOjEsZGl2OjEsZmllbGRzZXQ6MSxmaWdjYXB0aW9uOjEsZm9vdGVyOjEsZm9ybToxLGgxOjEsaDI6MSxoMzoxLGg0OjEsaDU6MSxoNjoxLGhlYWRlcjoxLGhncm91cDoxLG1haW46MSxuYXY6MSxwOjEscHJlOjEsc2VjdGlvbjoxfSwkZW1wdHk6e2FyZWE6MSxiYXNlOjEsYmFzZWZvbnQ6MSxicjoxLGNvbDoxLGNvbW1hbmQ6MSxkaWFsb2c6MSxlbWJlZDoxLGhyOjEsaW1nOjEsaW5wdXQ6MSxpc2luZGV4OjEsa2V5Z2VuOjEsbGluazoxLG1ldGE6MSxwYXJhbToxLHNvdXJjZToxLHRyYWNrOjEsd2JyOjF9LCRpbmxpbmU6ZSwkbGlzdDp7ZGw6MSxvbDoxLHVsOjF9LCRsaXN0SXRlbTp7ZGQ6MSxkdDoxLGxpOjF9LCRub25Cb2R5Q29udGVudDphKHtib2R5OjEsaGVhZDoxLGh0bWw6MX0sZi5oZWFkKSwkbm9uRWRpdGFibGU6e2FwcGxldDoxLGF1ZGlvOjEsYnV0dG9uOjEsZW1iZWQ6MSxpZnJhbWU6MSxtYXA6MSxvYmplY3Q6MSxcbm9wdGlvbjoxLHBhcmFtOjEsc2NyaXB0OjEsdGV4dGFyZWE6MSx2aWRlbzoxfSwkb2JqZWN0OnthcHBsZXQ6MSxhdWRpbzoxLGJ1dHRvbjoxLGhyOjEsaWZyYW1lOjEsaW1nOjEsaW5wdXQ6MSxvYmplY3Q6MSxzZWxlY3Q6MSx0YWJsZToxLHRleHRhcmVhOjEsdmlkZW86MX0sJHJlbW92ZUVtcHR5OnthYmJyOjEsYWNyb255bToxLGI6MSxiZGk6MSxiZG86MSxiaWc6MSxjaXRlOjEsY29kZToxLGRlbDoxLGRmbjoxLGVtOjEsZm9udDoxLGk6MSxpbnM6MSxsYWJlbDoxLGtiZDoxLG1hcms6MSxtZXRlcjoxLG91dHB1dDoxLHE6MSxydWJ5OjEsczoxLHNhbXA6MSxzbWFsbDoxLHNwYW46MSxzdHJpa2U6MSxzdHJvbmc6MSxzdWI6MSxzdXA6MSx0aW1lOjEsdHQ6MSx1OjEsXCJ2YXJcIjoxfSwkdGFiSW5kZXg6e2E6MSxhcmVhOjEsYnV0dG9uOjEsaW5wdXQ6MSxvYmplY3Q6MSxzZWxlY3Q6MSx0ZXh0YXJlYToxfSwkdGFibGVDb250ZW50OntjYXB0aW9uOjEsY29sOjEsY29sZ3JvdXA6MSx0Ym9keToxLFxudGQ6MSx0Zm9vdDoxLHRoOjEsdGhlYWQ6MSx0cjoxfSwkdHJhbnNwYXJlbnQ6e2E6MSxhdWRpbzoxLGNhbnZhczoxLGRlbDoxLGluczoxLG1hcDoxLG5vc2NyaXB0OjEsb2JqZWN0OjEsdmlkZW86MX0sJGludGVybWVkaWF0ZTp7Y2FwdGlvbjoxLGNvbGdyb3VwOjEsZGQ6MSxkdDoxLGZpZ2NhcHRpb246MSxsZWdlbmQ6MSxsaToxLG9wdGdyb3VwOjEsb3B0aW9uOjEscnA6MSxydDoxLHN1bW1hcnk6MSx0Ym9keToxLHRkOjEsdGZvb3Q6MSx0aDoxLHRoZWFkOjEsdHI6MX19KTtyZXR1cm4gZn0oKSxDS0VESVRPUi5kb20uZXZlbnQ9ZnVuY3Rpb24oYSl7dGhpcy4kPWF9LENLRURJVE9SLmRvbS5ldmVudC5wcm90b3R5cGU9e2dldEtleTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQua2V5Q29kZXx8dGhpcy4kLndoaWNofSxnZXRLZXlzdHJva2U6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEtleSgpO2lmKHRoaXMuJC5jdHJsS2V5fHx0aGlzLiQubWV0YUtleSlhKz1DS0VESVRPUi5DVFJMO1xudGhpcy4kLnNoaWZ0S2V5JiYoYSs9Q0tFRElUT1IuU0hJRlQpO3RoaXMuJC5hbHRLZXkmJihhKz1DS0VESVRPUi5BTFQpO3JldHVybiBhfSxwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbihhKXt2YXIgZj10aGlzLiQ7Zi5wcmV2ZW50RGVmYXVsdD9mLnByZXZlbnREZWZhdWx0KCk6Zi5yZXR1cm5WYWx1ZT0hMTthJiZ0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxzdG9wUHJvcGFnYXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiQ7YS5zdG9wUHJvcGFnYXRpb24/YS5zdG9wUHJvcGFnYXRpb24oKTphLmNhbmNlbEJ1YmJsZT0hMH0sZ2V0VGFyZ2V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kLnRhcmdldHx8dGhpcy4kLnNyY0VsZW1lbnQ7cmV0dXJuIGE/bmV3IENLRURJVE9SLmRvbS5ub2RlKGEpOm51bGx9LGdldFBoYXNlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJC5ldmVudFBoYXNlfHwyfSxnZXRQYWdlT2Zmc2V0OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRUYXJnZXQoKS5nZXREb2N1bWVudCgpLiQ7XG5yZXR1cm57eDp0aGlzLiQucGFnZVh8fHRoaXMuJC5jbGllbnRYKyhhLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxhLmJvZHkuc2Nyb2xsTGVmdCkseTp0aGlzLiQucGFnZVl8fHRoaXMuJC5jbGllbnRZKyhhLmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3B8fGEuYm9keS5zY3JvbGxUb3ApfX19LENLRURJVE9SLkNUUkw9MTExNDExMixDS0VESVRPUi5TSElGVD0yMjI4MjI0LENLRURJVE9SLkFMVD00NDU2NDQ4LENLRURJVE9SLkVWRU5UX1BIQVNFX0NBUFRVUklORz0xLENLRURJVE9SLkVWRU5UX1BIQVNFX0FUX1RBUkdFVD0yLENLRURJVE9SLkVWRU5UX1BIQVNFX0JVQkJMSU5HPTMsQ0tFRElUT1IuSElTVE9SWV9OQVRJVkU9MSxDS0VESVRPUi5ISVNUT1JZX0hBU0g9MixDS0VESVRPUi5ISVNUT1JZX09GRj0wLENLRURJVE9SLmRvbS5kb21PYmplY3Q9ZnVuY3Rpb24oYSl7YSYmKHRoaXMuJD1hKX0sQ0tFRElUT1IuZG9tLmRvbU9iamVjdC5wcm90b3R5cGU9ZnVuY3Rpb24oKXt2YXIgYT1cbmZ1bmN0aW9uKGEsZSl7cmV0dXJuIGZ1bmN0aW9uKGIpe1widW5kZWZpbmVkXCIhPXR5cGVvZiBDS0VESVRPUiYmYS5maXJlKGUsbmV3IENLRURJVE9SLmRvbS5ldmVudChiKSl9fTtyZXR1cm57Z2V0UHJpdmF0ZTpmdW5jdGlvbigpe3ZhciBhOyhhPXRoaXMuZ2V0Q3VzdG9tRGF0YShcIl9cIikpfHx0aGlzLnNldEN1c3RvbURhdGEoXCJfXCIsYT17fSk7cmV0dXJuIGF9LG9uOmZ1bmN0aW9uKGYpe3ZhciBlPXRoaXMuZ2V0Q3VzdG9tRGF0YShcIl9ja2VfbmF0aXZlTGlzdGVuZXJzXCIpO2V8fChlPXt9LHRoaXMuc2V0Q3VzdG9tRGF0YShcIl9ja2VfbmF0aXZlTGlzdGVuZXJzXCIsZSkpO2VbZl18fChlPWVbZl09YSh0aGlzLGYpLHRoaXMuJC5hZGRFdmVudExpc3RlbmVyP3RoaXMuJC5hZGRFdmVudExpc3RlbmVyKGYsZSwhIUNLRURJVE9SLmV2ZW50LnVzZUNhcHR1cmUpOnRoaXMuJC5hdHRhY2hFdmVudCYmdGhpcy4kLmF0dGFjaEV2ZW50KFwib25cIitmLGUpKTtyZXR1cm4gQ0tFRElUT1IuZXZlbnQucHJvdG90eXBlLm9uLmFwcGx5KHRoaXMsXG5hcmd1bWVudHMpfSxyZW1vdmVMaXN0ZW5lcjpmdW5jdGlvbihhKXtDS0VESVRPUi5ldmVudC5wcm90b3R5cGUucmVtb3ZlTGlzdGVuZXIuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmhhc0xpc3RlbmVycyhhKSl7dmFyIGU9dGhpcy5nZXRDdXN0b21EYXRhKFwiX2NrZV9uYXRpdmVMaXN0ZW5lcnNcIiksYj1lJiZlW2FdO2ImJih0aGlzLiQucmVtb3ZlRXZlbnRMaXN0ZW5lcj90aGlzLiQucmVtb3ZlRXZlbnRMaXN0ZW5lcihhLGIsITEpOnRoaXMuJC5kZXRhY2hFdmVudCYmdGhpcy4kLmRldGFjaEV2ZW50KFwib25cIithLGIpLGRlbGV0ZSBlW2FdKX19LHJlbW92ZUFsbExpc3RlbmVyczpmdW5jdGlvbigpe3RyeXt2YXIgYT10aGlzLmdldEN1c3RvbURhdGEoXCJfY2tlX25hdGl2ZUxpc3RlbmVyc1wiKSxlO2ZvcihlIGluIGEpe3ZhciBiPWFbZV07dGhpcy4kLmRldGFjaEV2ZW50P3RoaXMuJC5kZXRhY2hFdmVudChcIm9uXCIrZSxiKTp0aGlzLiQucmVtb3ZlRXZlbnRMaXN0ZW5lciYmdGhpcy4kLnJlbW92ZUV2ZW50TGlzdGVuZXIoZSxcbmIsITEpO2RlbGV0ZSBhW2VdfX1jYXRjaChjKXtpZighQ0tFRElUT1IuZW52LmVkZ2V8fC0yMTQ2ODI4MjE4IT09Yy5udW1iZXIpdGhyb3cgYzt9Q0tFRElUT1IuZXZlbnQucHJvdG90eXBlLnJlbW92ZUFsbExpc3RlbmVycy5jYWxsKHRoaXMpfX19KCksZnVuY3Rpb24oYSl7dmFyIGY9e307Q0tFRElUT1Iub24oXCJyZXNldFwiLGZ1bmN0aW9uKCl7Zj17fX0pO2EuZXF1YWxzPWZ1bmN0aW9uKGEpe3RyeXtyZXR1cm4gYSYmYS4kPT09dGhpcy4kfWNhdGNoKGIpe3JldHVybiExfX07YS5zZXRDdXN0b21EYXRhPWZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5nZXRVbmlxdWVJZCgpOyhmW2NdfHwoZltjXT17fSkpW2FdPWI7cmV0dXJuIHRoaXN9O2EuZ2V0Q3VzdG9tRGF0YT1mdW5jdGlvbihhKXt2YXIgYj10aGlzLiRbXCJkYXRhLWNrZS1leHBhbmRvXCJdO3JldHVybihiPWImJmZbYl0pJiZhIGluIGI/YlthXTpudWxsfTthLnJlbW92ZUN1c3RvbURhdGE9ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy4kW1wiZGF0YS1ja2UtZXhwYW5kb1wiXSxcbmI9YiYmZltiXSxjLGs7YiYmKGM9YlthXSxrPWEgaW4gYixkZWxldGUgYlthXSk7cmV0dXJuIGs/YzpudWxsfTthLmNsZWFyQ3VzdG9tRGF0YT1mdW5jdGlvbigpe3RoaXMucmVtb3ZlQWxsTGlzdGVuZXJzKCk7dmFyIGE9dGhpcy5nZXRVbmlxdWVJZCgpO2EmJmRlbGV0ZSBmW2FdfTthLmdldFVuaXF1ZUlkPWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJFtcImRhdGEtY2tlLWV4cGFuZG9cIl18fCh0aGlzLiRbXCJkYXRhLWNrZS1leHBhbmRvXCJdPUNLRURJVE9SLnRvb2xzLmdldE5leHROdW1iZXIoKSl9O0NLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKGEpfShDS0VESVRPUi5kb20uZG9tT2JqZWN0LnByb3RvdHlwZSksQ0tFRElUT1IuZG9tLm5vZGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/bmV3IENLRURJVE9SLmRvbVthLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX0RPQ1VNRU5UP1wiZG9jdW1lbnRcIjphLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQ/XCJlbGVtZW50XCI6YS5ub2RlVHlwZT09XG5DS0VESVRPUi5OT0RFX1RFWFQ/XCJ0ZXh0XCI6YS5ub2RlVHlwZT09Q0tFRElUT1IuTk9ERV9DT01NRU5UP1wiY29tbWVudFwiOmEubm9kZVR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQ/XCJkb2N1bWVudEZyYWdtZW50XCI6XCJkb21PYmplY3RcIl0oYSk6dGhpc30sQ0tFRElUT1IuZG9tLm5vZGUucHJvdG90eXBlPW5ldyBDS0VESVRPUi5kb20uZG9tT2JqZWN0LENLRURJVE9SLk5PREVfRUxFTUVOVD0xLENLRURJVE9SLk5PREVfRE9DVU1FTlQ9OSxDS0VESVRPUi5OT0RFX1RFWFQ9MyxDS0VESVRPUi5OT0RFX0NPTU1FTlQ9OCxDS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UPTExLENLRURJVE9SLlBPU0lUSU9OX0lERU5USUNBTD0wLENLRURJVE9SLlBPU0lUSU9OX0RJU0NPTk5FQ1RFRD0xLENLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lORz0yLENLRURJVE9SLlBPU0lUSU9OX1BSRUNFRElORz00LENLRURJVE9SLlBPU0lUSU9OX0lTX0NPTlRBSU5FRD04LENLRURJVE9SLlBPU0lUSU9OX0NPTlRBSU5TPVxuMTYsQ0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmRvbS5ub2RlLnByb3RvdHlwZSx7YXBwZW5kVG86ZnVuY3Rpb24oYSxmKXthLmFwcGVuZCh0aGlzLGYpO3JldHVybiBhfSxjbG9uZTpmdW5jdGlvbihhLGYpe2Z1bmN0aW9uIGUoYil7YltcImRhdGEtY2tlLWV4cGFuZG9cIl0mJihiW1wiZGF0YS1ja2UtZXhwYW5kb1wiXT0hMSk7aWYoYi5ub2RlVHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxiLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UKWlmKGZ8fGIubm9kZVR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVHx8Yi5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiLCExKSxhKXtiPWIuY2hpbGROb2Rlcztmb3IodmFyIGM9MDtjPGIubGVuZ3RoO2MrKyllKGJbY10pfX1mdW5jdGlvbiBiKGMpe2lmKGMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxjLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQpe2lmKGMudHlwZSE9Q0tFRElUT1IuTk9ERV9ET0NVTUVOVF9GUkFHTUVOVCl7dmFyIGU9XG5jLmdldE5hbWUoKTtcIjpcIj09ZVswXSYmYy5yZW5hbWVOb2RlKGUuc3Vic3RyaW5nKDEpKX1pZihhKWZvcihlPTA7ZTxjLmdldENoaWxkQ291bnQoKTtlKyspYihjLmdldENoaWxkKGUpKX19dmFyIGM9dGhpcy4kLmNsb25lTm9kZShhKTtlKGMpO2M9bmV3IENLRURJVE9SLmRvbS5ub2RlKGMpO0NLRURJVE9SLmVudi5pZSYmOT5DS0VESVRPUi5lbnYudmVyc2lvbiYmKHRoaXMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHx0aGlzLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQpJiZiKGMpO3JldHVybiBjfSxoYXNQcmV2aW91czpmdW5jdGlvbigpe3JldHVybiEhdGhpcy4kLnByZXZpb3VzU2libGluZ30saGFzTmV4dDpmdW5jdGlvbigpe3JldHVybiEhdGhpcy4kLm5leHRTaWJsaW5nfSxpbnNlcnRBZnRlcjpmdW5jdGlvbihhKXthLiQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy4kLGEuJC5uZXh0U2libGluZyk7cmV0dXJuIGF9LGluc2VydEJlZm9yZTpmdW5jdGlvbihhKXthLiQucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUodGhpcy4kLFxuYS4kKTtyZXR1cm4gYX0saW5zZXJ0QmVmb3JlTWU6ZnVuY3Rpb24oYSl7dGhpcy4kLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEuJCx0aGlzLiQpO3JldHVybiBhfSxnZXRBZGRyZXNzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZj1bXSxlPXRoaXMuZ2V0RG9jdW1lbnQoKS4kLmRvY3VtZW50RWxlbWVudCxiPXRoaXM7YiYmYiE9ZTspe3ZhciBjPWIuZ2V0UGFyZW50KCk7YyYmZi51bnNoaWZ0KHRoaXMuZ2V0SW5kZXguY2FsbChiLGEpKTtiPWN9cmV0dXJuIGZ9LGdldERvY3VtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnQodGhpcy4kLm93bmVyRG9jdW1lbnR8fHRoaXMuJC5wYXJlbnROb2RlLm93bmVyRG9jdW1lbnQpfSxnZXRJbmRleDpmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGEsYil7dmFyIGM9Yj9hLmdldE5leHQoKTphLmdldFByZXZpb3VzKCk7cmV0dXJuIGMmJmMudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUP2MuaXNFbXB0eSgpP2YoYyxiKTpjOlxubnVsbH12YXIgZT10aGlzLGI9LTEsYztpZighdGhpcy5nZXRQYXJlbnQoKXx8YSYmZS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJmUuaXNFbXB0eSgpJiYhZihlKSYmIWYoZSwhMCkpcmV0dXJuLTE7ZG8gaWYoIWF8fGUuZXF1YWxzKHRoaXMpfHxlLnR5cGUhPUNLRURJVE9SLk5PREVfVEVYVHx8IWMmJiFlLmlzRW1wdHkoKSliKyssYz1lLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVDt3aGlsZShlPWUuZ2V0UHJldmlvdXMoKSk7cmV0dXJuIGJ9LGdldE5leHRTb3VyY2VOb2RlOmZ1bmN0aW9uKGEsZixlKXtpZihlJiYhZS5jYWxsKXt2YXIgYj1lO2U9ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZXF1YWxzKGIpfX1hPSFhJiZ0aGlzLmdldEZpcnN0JiZ0aGlzLmdldEZpcnN0KCk7dmFyIGM7aWYoIWEpe2lmKHRoaXMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZlJiYhMT09PWUodGhpcywhMCkpcmV0dXJuIG51bGw7YT10aGlzLmdldE5leHQoKX1mb3IoOyFhJiYoYz0oY3x8dGhpcykuZ2V0UGFyZW50KCkpOyl7aWYoZSYmXG4hMT09PWUoYywhMCkpcmV0dXJuIG51bGw7YT1jLmdldE5leHQoKX1yZXR1cm4hYXx8ZSYmITE9PT1lKGEpP251bGw6ZiYmZiE9YS50eXBlP2EuZ2V0TmV4dFNvdXJjZU5vZGUoITEsZixlKTphfSxnZXRQcmV2aW91c1NvdXJjZU5vZGU6ZnVuY3Rpb24oYSxmLGUpe2lmKGUmJiFlLmNhbGwpe3ZhciBiPWU7ZT1mdW5jdGlvbihhKXtyZXR1cm4hYS5lcXVhbHMoYil9fWE9IWEmJnRoaXMuZ2V0TGFzdCYmdGhpcy5nZXRMYXN0KCk7dmFyIGM7aWYoIWEpe2lmKHRoaXMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZlJiYhMT09PWUodGhpcywhMCkpcmV0dXJuIG51bGw7YT10aGlzLmdldFByZXZpb3VzKCl9Zm9yKDshYSYmKGM9KGN8fHRoaXMpLmdldFBhcmVudCgpKTspe2lmKGUmJiExPT09ZShjLCEwKSlyZXR1cm4gbnVsbDthPWMuZ2V0UHJldmlvdXMoKX1yZXR1cm4hYXx8ZSYmITE9PT1lKGEpP251bGw6ZiYmYS50eXBlIT1mP2EuZ2V0UHJldmlvdXNTb3VyY2VOb2RlKCExLGYsZSk6XG5hfSxnZXRQcmV2aW91czpmdW5jdGlvbihhKXt2YXIgZj10aGlzLiQsZTtkbyBlPShmPWYucHJldmlvdXNTaWJsaW5nKSYmMTAhPWYubm9kZVR5cGUmJm5ldyBDS0VESVRPUi5kb20ubm9kZShmKTt3aGlsZShlJiZhJiYhYShlKSk7cmV0dXJuIGV9LGdldE5leHQ6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy4kLGU7ZG8gZT0oZj1mLm5leHRTaWJsaW5nKSYmbmV3IENLRURJVE9SLmRvbS5ub2RlKGYpO3doaWxlKGUmJmEmJiFhKGUpKTtyZXR1cm4gZX0sZ2V0UGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuJC5wYXJlbnROb2RlO3JldHVybiBmJiYoZi5ub2RlVHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxhJiZmLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UKT9uZXcgQ0tFRElUT1IuZG9tLm5vZGUoZik6bnVsbH0sZ2V0UGFyZW50czpmdW5jdGlvbihhKXt2YXIgZj10aGlzLGU9W107ZG8gZVthP1wicHVzaFwiOlwidW5zaGlmdFwiXShmKTt3aGlsZShmPWYuZ2V0UGFyZW50KCkpO1xucmV0dXJuIGV9LGdldENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGEpe2lmKGEuZXF1YWxzKHRoaXMpKXJldHVybiB0aGlzO2lmKGEuY29udGFpbnMmJmEuY29udGFpbnModGhpcykpcmV0dXJuIGE7dmFyIGY9dGhpcy5jb250YWlucz90aGlzOnRoaXMuZ2V0UGFyZW50KCk7ZG8gaWYoZi5jb250YWlucyhhKSlyZXR1cm4gZjt3aGlsZShmPWYuZ2V0UGFyZW50KCkpO3JldHVybiBudWxsfSxnZXRQb3NpdGlvbjpmdW5jdGlvbihhKXt2YXIgZj10aGlzLiQsZT1hLiQ7aWYoZi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gZi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihlKTtpZihmPT1lKXJldHVybiBDS0VESVRPUi5QT1NJVElPTl9JREVOVElDQUw7aWYodGhpcy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXtpZihmLmNvbnRhaW5zKXtpZihmLmNvbnRhaW5zKGUpKXJldHVybiBDS0VESVRPUi5QT1NJVElPTl9DT05UQUlOUytcbkNLRURJVE9SLlBPU0lUSU9OX1BSRUNFRElORztpZihlLmNvbnRhaW5zKGYpKXJldHVybiBDS0VESVRPUi5QT1NJVElPTl9JU19DT05UQUlORUQrQ0tFRElUT1IuUE9TSVRJT05fRk9MTE9XSU5HfWlmKFwic291cmNlSW5kZXhcImluIGYpcmV0dXJuIDA+Zi5zb3VyY2VJbmRleHx8MD5lLnNvdXJjZUluZGV4P0NLRURJVE9SLlBPU0lUSU9OX0RJU0NPTk5FQ1RFRDpmLnNvdXJjZUluZGV4PGUuc291cmNlSW5kZXg/Q0tFRElUT1IuUE9TSVRJT05fUFJFQ0VESU5HOkNLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lOR31mPXRoaXMuZ2V0QWRkcmVzcygpO2E9YS5nZXRBZGRyZXNzKCk7Zm9yKHZhciBlPU1hdGgubWluKGYubGVuZ3RoLGEubGVuZ3RoKSxiPTA7YjxlO2IrKylpZihmW2JdIT1hW2JdKXJldHVybiBmW2JdPGFbYl0/Q0tFRElUT1IuUE9TSVRJT05fUFJFQ0VESU5HOkNLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lORztyZXR1cm4gZi5sZW5ndGg8YS5sZW5ndGg/Q0tFRElUT1IuUE9TSVRJT05fQ09OVEFJTlMrXG5DS0VESVRPUi5QT1NJVElPTl9QUkVDRURJTkc6Q0tFRElUT1IuUE9TSVRJT05fSVNfQ09OVEFJTkVEK0NLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lOR30sZ2V0QXNjZW5kYW50OmZ1bmN0aW9uKGEsZil7dmFyIGU9dGhpcy4kLGIsYztmfHwoZT1lLnBhcmVudE5vZGUpO1wiZnVuY3Rpb25cIj09dHlwZW9mIGE/KGM9ITAsYj1hKTooYz0hMSxiPWZ1bmN0aW9uKGIpe2I9XCJzdHJpbmdcIj09dHlwZW9mIGIubm9kZU5hbWU/Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpOlwiXCI7cmV0dXJuXCJzdHJpbmdcIj09dHlwZW9mIGE/Yj09YTpiIGluIGF9KTtmb3IoO2U7KXtpZihiKGM/bmV3IENLRURJVE9SLmRvbS5ub2RlKGUpOmUpKXJldHVybiBuZXcgQ0tFRElUT1IuZG9tLm5vZGUoZSk7dHJ5e2U9ZS5wYXJlbnROb2RlfWNhdGNoKGspe2U9bnVsbH19cmV0dXJuIG51bGx9LGhhc0FzY2VuZGFudDpmdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMuJDtmfHwoZT1lLnBhcmVudE5vZGUpO2Zvcig7ZTspe2lmKGUubm9kZU5hbWUmJlxuZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT1hKXJldHVybiEwO2U9ZS5wYXJlbnROb2RlfXJldHVybiExfSxtb3ZlOmZ1bmN0aW9uKGEsZil7YS5hcHBlbmQodGhpcy5yZW1vdmUoKSxmKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuJCxlPWYucGFyZW50Tm9kZTtpZihlKXtpZihhKWZvcig7YT1mLmZpcnN0Q2hpbGQ7KWUuaW5zZXJ0QmVmb3JlKGYucmVtb3ZlQ2hpbGQoYSksZik7ZS5yZW1vdmVDaGlsZChmKX1yZXR1cm4gdGhpc30scmVwbGFjZTpmdW5jdGlvbihhKXt0aGlzLmluc2VydEJlZm9yZShhKTthLnJlbW92ZSgpfSx0cmltOmZ1bmN0aW9uKCl7dGhpcy5sdHJpbSgpO3RoaXMucnRyaW0oKX0sbHRyaW06ZnVuY3Rpb24oKXtmb3IodmFyIGE7dGhpcy5nZXRGaXJzdCYmKGE9dGhpcy5nZXRGaXJzdCgpKTspe2lmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUKXt2YXIgZj1DS0VESVRPUi50b29scy5sdHJpbShhLmdldFRleHQoKSksZT1hLmdldExlbmd0aCgpO2lmKGYpZi5sZW5ndGg8XG5lJiYoYS5zcGxpdChlLWYubGVuZ3RoKSx0aGlzLiQucmVtb3ZlQ2hpbGQodGhpcy4kLmZpcnN0Q2hpbGQpKTtlbHNle2EucmVtb3ZlKCk7Y29udGludWV9fWJyZWFrfX0scnRyaW06ZnVuY3Rpb24oKXtmb3IodmFyIGE7dGhpcy5nZXRMYXN0JiYoYT10aGlzLmdldExhc3QoKSk7KXtpZihhLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCl7dmFyIGY9Q0tFRElUT1IudG9vbHMucnRyaW0oYS5nZXRUZXh0KCkpLGU9YS5nZXRMZW5ndGgoKTtpZihmKWYubGVuZ3RoPGUmJihhLnNwbGl0KGYubGVuZ3RoKSx0aGlzLiQubGFzdENoaWxkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy4kLmxhc3RDaGlsZCkpO2Vsc2V7YS5yZW1vdmUoKTtjb250aW51ZX19YnJlYWt9Q0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXImJihhPXRoaXMuJC5sYXN0Q2hpbGQpJiYxPT1hLnR5cGUmJlwiYnJcIj09YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZhLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYSl9LGlzUmVhZE9ubHk6ZnVuY3Rpb24oYSl7dmFyIGY9XG50aGlzO3RoaXMudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoZj10aGlzLmdldFBhcmVudCgpKTtDS0VESVRPUi5lbnYuZWRnZSYmZiYmZi5pcyhcInRleHRhcmVhXCIsXCJpbnB1dFwiKSYmKGE9ITApO2lmKCFhJiZmJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgZi4kLmlzQ29udGVudEVkaXRhYmxlKXJldHVybiEoZi4kLmlzQ29udGVudEVkaXRhYmxlfHxmLmRhdGEoXCJja2UtZWRpdGFibGVcIikpO2Zvcig7Zjspe2lmKGYuZGF0YShcImNrZS1lZGl0YWJsZVwiKSlyZXR1cm4hMTtpZihmLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSlyZXR1cm5cImZhbHNlXCI9PWYuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpO2Y9Zi5nZXRQYXJlbnQoKX1yZXR1cm4hMH19KSxDS0VESVRPUi5kb20ud2luZG93PWZ1bmN0aW9uKGEpe0NLRURJVE9SLmRvbS5kb21PYmplY3QuY2FsbCh0aGlzLGEpfSxDS0VESVRPUi5kb20ud2luZG93LnByb3RvdHlwZT1uZXcgQ0tFRElUT1IuZG9tLmRvbU9iamVjdCxcbkNLRURJVE9SLnRvb2xzLmV4dGVuZChDS0VESVRPUi5kb20ud2luZG93LnByb3RvdHlwZSx7Zm9jdXM6ZnVuY3Rpb24oKXt0aGlzLiQuZm9jdXMoKX0sZ2V0Vmlld1BhbmVTaXplOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kLmRvY3VtZW50LGY9XCJDU1MxQ29tcGF0XCI9PWEuY29tcGF0TW9kZTtyZXR1cm57d2lkdGg6KGY/YS5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGg6YS5ib2R5LmNsaWVudFdpZHRoKXx8MCxoZWlnaHQ6KGY/YS5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0OmEuYm9keS5jbGllbnRIZWlnaHQpfHwwfX0sZ2V0U2Nyb2xsUG9zaXRpb246ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiQ7aWYoXCJwYWdlWE9mZnNldFwiaW4gYSlyZXR1cm57eDphLnBhZ2VYT2Zmc2V0fHwwLHk6YS5wYWdlWU9mZnNldHx8MH07YT1hLmRvY3VtZW50O3JldHVybnt4OmEuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGEuYm9keS5zY3JvbGxMZWZ0fHwwLHk6YS5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxcbmEuYm9keS5zY3JvbGxUb3B8fDB9fSxnZXRGcmFtZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJC5mcmFtZUVsZW1lbnQ7cmV0dXJuIGE/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50LmdldChhKTpudWxsfX0pLENLRURJVE9SLmRvbS5kb2N1bWVudD1mdW5jdGlvbihhKXtDS0VESVRPUi5kb20uZG9tT2JqZWN0LmNhbGwodGhpcyxhKX0sQ0tFRElUT1IuZG9tLmRvY3VtZW50LnByb3RvdHlwZT1uZXcgQ0tFRElUT1IuZG9tLmRvbU9iamVjdCxDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZG9tLmRvY3VtZW50LnByb3RvdHlwZSx7dHlwZTpDS0VESVRPUi5OT0RFX0RPQ1VNRU5ULGFwcGVuZFN0eWxlU2hlZXQ6ZnVuY3Rpb24oYSl7YT1DS0VESVRPUi5hcHBlbmRUaW1lc3RhbXAoYSk7aWYodGhpcy4kLmNyZWF0ZVN0eWxlU2hlZXQpdGhpcy4kLmNyZWF0ZVN0eWxlU2hlZXQoYSk7ZWxzZXt2YXIgZj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJsaW5rXCIpO2Yuc2V0QXR0cmlidXRlcyh7cmVsOlwic3R5bGVzaGVldFwiLFxudHlwZTpcInRleHQvY3NzXCIsaHJlZjphfSk7dGhpcy5nZXRIZWFkKCkuYXBwZW5kKGYpfX0sYXBwZW5kU3R5bGVUZXh0OmZ1bmN0aW9uKGEpe2lmKHRoaXMuJC5jcmVhdGVTdHlsZVNoZWV0KXt2YXIgZj10aGlzLiQuY3JlYXRlU3R5bGVTaGVldChcIlwiKTtmLmNzc1RleHQ9YX1lbHNle3ZhciBlPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcInN0eWxlXCIsdGhpcyk7ZS5hcHBlbmQobmV3IENLRURJVE9SLmRvbS50ZXh0KGEsdGhpcykpO3RoaXMuZ2V0SGVhZCgpLmFwcGVuZChlKX1yZXR1cm4gZnx8ZS4kLnNoZWV0fSxjcmVhdGVFbGVtZW50OmZ1bmN0aW9uKGEsZil7dmFyIGU9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEsdGhpcyk7ZiYmKGYuYXR0cmlidXRlcyYmZS5zZXRBdHRyaWJ1dGVzKGYuYXR0cmlidXRlcyksZi5zdHlsZXMmJmUuc2V0U3R5bGVzKGYuc3R5bGVzKSk7cmV0dXJuIGV9LGNyZWF0ZVRleHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20udGV4dChhLFxudGhpcyl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5nZXRXaW5kb3coKS5mb2N1cygpfSxnZXRBY3RpdmU6ZnVuY3Rpb24oKXt2YXIgYTt0cnl7YT10aGlzLiQuYWN0aXZlRWxlbWVudH1jYXRjaChmKXtyZXR1cm4gbnVsbH1yZXR1cm4gbmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEpfSxnZXRCeUlkOmZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuJC5nZXRFbGVtZW50QnlJZChhKSk/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEpOm51bGx9LGdldEJ5QWRkcmVzczpmdW5jdGlvbihhLGYpe2Zvcih2YXIgZT10aGlzLiQuZG9jdW1lbnRFbGVtZW50LGI9MDtlJiZiPGEubGVuZ3RoO2IrKyl7dmFyIGM9YVtiXTtpZihmKWZvcih2YXIgaz0tMSxsPTA7bDxlLmNoaWxkTm9kZXMubGVuZ3RoO2wrKyl7dmFyIG09ZS5jaGlsZE5vZGVzW2xdO2lmKCEwIT09Znx8MyE9bS5ub2RlVHlwZXx8IW0ucHJldmlvdXNTaWJsaW5nfHwzIT1tLnByZXZpb3VzU2libGluZy5ub2RlVHlwZSlpZihrKyssaz09XG5jKXtlPW07YnJlYWt9fWVsc2UgZT1lLmNoaWxkTm9kZXNbY119cmV0dXJuIGU/bmV3IENLRURJVE9SLmRvbS5ub2RlKGUpOm51bGx9LGdldEVsZW1lbnRzQnlUYWc6ZnVuY3Rpb24oYSxmKXtDS0VESVRPUi5lbnYuaWUmJjg+PWRvY3VtZW50LmRvY3VtZW50TW9kZXx8IWZ8fChhPWYrXCI6XCIrYSk7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20ubm9kZUxpc3QodGhpcy4kLmdldEVsZW1lbnRzQnlUYWdOYW1lKGEpKX0sZ2V0SGVhZDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImhlYWRcIilbMF07cmV0dXJuIGE9YT9uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYSk6dGhpcy5nZXREb2N1bWVudEVsZW1lbnQoKS5hcHBlbmQobmV3IENLRURJVE9SLmRvbS5lbGVtZW50KFwiaGVhZFwiKSwhMCl9LGdldEJvZHk6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLmRvbS5lbGVtZW50KHRoaXMuJC5ib2R5KX0sZ2V0RG9jdW1lbnRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20uZWxlbWVudCh0aGlzLiQuZG9jdW1lbnRFbGVtZW50KX0sXG5nZXRXaW5kb3c6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLmRvbS53aW5kb3codGhpcy4kLnBhcmVudFdpbmRvd3x8dGhpcy4kLmRlZmF1bHRWaWV3KX0sd3JpdGU6ZnVuY3Rpb24oYSl7dGhpcy4kLm9wZW4oXCJ0ZXh0L2h0bWxcIixcInJlcGxhY2VcIik7Q0tFRElUT1IuZW52LmllJiYoYT1hLnJlcGxhY2UoLyg/Ol5cXHMqPCFET0NUWVBFW14+XSo/Pil8Xi9pLCckXFx4MjZcXG5cXHgzY3NjcmlwdCBkYXRhLWNrZS10ZW1wXFx4M2RcIjFcIlxceDNlKCcrQ0tFRElUT1IudG9vbHMuZml4RG9tYWluK1wiKSgpO1xceDNjL3NjcmlwdFxceDNlXCIpKTt0aGlzLiQud3JpdGUoYSk7dGhpcy4kLmNsb3NlKCl9LGZpbmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20ubm9kZUxpc3QodGhpcy4kLnF1ZXJ5U2VsZWN0b3JBbGwoYSkpfSxmaW5kT25lOmZ1bmN0aW9uKGEpe3JldHVybihhPXRoaXMuJC5xdWVyeVNlbGVjdG9yKGEpKT9uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYSk6bnVsbH0sXG5fZ2V0SHRtbDVTaGl2RnJhZzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0Q3VzdG9tRGF0YShcImh0bWw1U2hpdkZyYWdcIik7YXx8KGE9dGhpcy4kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKSxDS0VESVRPUi50b29scy5lbmFibGVIdG1sNUVsZW1lbnRzKGEsITApLHRoaXMuc2V0Q3VzdG9tRGF0YShcImh0bWw1U2hpdkZyYWdcIixhKSk7cmV0dXJuIGF9fSksQ0tFRElUT1IuZG9tLm5vZGVMaXN0PWZ1bmN0aW9uKGEpe3RoaXMuJD1hfSxDS0VESVRPUi5kb20ubm9kZUxpc3QucHJvdG90eXBlPXtjb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQubGVuZ3RofSxnZXRJdGVtOmZ1bmN0aW9uKGEpe3JldHVybiAwPmF8fGE+PXRoaXMuJC5sZW5ndGg/bnVsbDooYT10aGlzLiRbYV0pP25ldyBDS0VESVRPUi5kb20ubm9kZShhKTpudWxsfSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5Lm1hcCh0aGlzLiQsZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20ubm9kZShhKX0pfX0sXG5DS0VESVRPUi5kb20uZWxlbWVudD1mdW5jdGlvbihhLGYpe1wic3RyaW5nXCI9PXR5cGVvZiBhJiYoYT0oZj9mLiQ6ZG9jdW1lbnQpLmNyZWF0ZUVsZW1lbnQoYSkpO0NLRURJVE9SLmRvbS5kb21PYmplY3QuY2FsbCh0aGlzLGEpfSxDS0VESVRPUi5kb20uZWxlbWVudC5nZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuKGE9XCJzdHJpbmdcIj09dHlwZW9mIGE/ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoYSl8fGRvY3VtZW50LmdldEVsZW1lbnRzQnlOYW1lKGEpWzBdOmEpJiYoYS4kP2E6bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEpKX0sQ0tFRElUT1IuZG9tLmVsZW1lbnQucHJvdG90eXBlPW5ldyBDS0VESVRPUi5kb20ubm9kZSxDS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbD1mdW5jdGlvbihhLGYpe3ZhciBlPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImRpdlwiLGYpO2Uuc2V0SHRtbChhKTtyZXR1cm4gZS5nZXRGaXJzdCgpLnJlbW92ZSgpfSxDS0VESVRPUi5kb20uZWxlbWVudC5zZXRNYXJrZXI9XG5mdW5jdGlvbihhLGYsZSxiKXt2YXIgYz1mLmdldEN1c3RvbURhdGEoXCJsaXN0X21hcmtlcl9pZFwiKXx8Zi5zZXRDdXN0b21EYXRhKFwibGlzdF9tYXJrZXJfaWRcIixDS0VESVRPUi50b29scy5nZXROZXh0TnVtYmVyKCkpLmdldEN1c3RvbURhdGEoXCJsaXN0X21hcmtlcl9pZFwiKSxrPWYuZ2V0Q3VzdG9tRGF0YShcImxpc3RfbWFya2VyX25hbWVzXCIpfHxmLnNldEN1c3RvbURhdGEoXCJsaXN0X21hcmtlcl9uYW1lc1wiLHt9KS5nZXRDdXN0b21EYXRhKFwibGlzdF9tYXJrZXJfbmFtZXNcIik7YVtjXT1mO2tbZV09MTtyZXR1cm4gZi5zZXRDdXN0b21EYXRhKGUsYil9LENLRURJVE9SLmRvbS5lbGVtZW50LmNsZWFyQWxsTWFya2Vycz1mdW5jdGlvbihhKXtmb3IodmFyIGYgaW4gYSlDS0VESVRPUi5kb20uZWxlbWVudC5jbGVhck1hcmtlcnMoYSxhW2ZdLDEpfSxDS0VESVRPUi5kb20uZWxlbWVudC5jbGVhck1hcmtlcnM9ZnVuY3Rpb24oYSxmLGUpe3ZhciBiPWYuZ2V0Q3VzdG9tRGF0YShcImxpc3RfbWFya2VyX25hbWVzXCIpLFxuYz1mLmdldEN1c3RvbURhdGEoXCJsaXN0X21hcmtlcl9pZFwiKSxrO2ZvcihrIGluIGIpZi5yZW1vdmVDdXN0b21EYXRhKGspO2YucmVtb3ZlQ3VzdG9tRGF0YShcImxpc3RfbWFya2VyX25hbWVzXCIpO2UmJihmLnJlbW92ZUN1c3RvbURhdGEoXCJsaXN0X21hcmtlcl9pZFwiKSxkZWxldGUgYVtjXSl9LGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGQpe3JldHVybi0xPChcIiBcIithK1wiIFwiKS5yZXBsYWNlKGssXCIgXCIpLmluZGV4T2YoXCIgXCIrZCtcIiBcIil9ZnVuY3Rpb24gZihhKXt2YXIgZD0hMDthLiQuaWR8fChhLiQuaWQ9XCJja2VfdG1wX1wiK0NLRURJVE9SLnRvb2xzLmdldE5leHROdW1iZXIoKSxkPSExKTtyZXR1cm4gZnVuY3Rpb24oKXtkfHxhLnJlbW92ZUF0dHJpYnV0ZShcImlkXCIpfX1mdW5jdGlvbiBlKGEsZCl7dmFyIGI9Q0tFRElUT1IudG9vbHMuZXNjYXBlQ3NzKGEuJC5pZCk7cmV0dXJuXCIjXCIrYitcIiBcIitkLnNwbGl0KC8sXFxzKi8pLmpvaW4oXCIsICNcIitiK1wiIFwiKX1mdW5jdGlvbiBiKGEpe2Zvcih2YXIgZD1cbjAsYj0wLGc9bFthXS5sZW5ndGg7YjxnO2IrKylkKz1wYXJzZUZsb2F0KHRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShsW2FdW2JdKXx8MCwxMCl8fDA7cmV0dXJuIGR9dmFyIGM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcIl9cIikuY2xhc3NMaXN0LGM9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBjJiZudWxsIT09U3RyaW5nKGMuYWRkKS5tYXRjaCgvXFxbTmF0aXZlIGNvZGVcXF0vZ2kpLGs9L1tcXG5cXHRcXHJdL2c7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmRvbS5lbGVtZW50LnByb3RvdHlwZSx7dHlwZTpDS0VESVRPUi5OT0RFX0VMRU1FTlQsYWRkQ2xhc3M6Yz9mdW5jdGlvbihhKXt0aGlzLiQuY2xhc3NMaXN0LmFkZChhKTtyZXR1cm4gdGhpc306ZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy4kLmNsYXNzTmFtZTtkJiYoYShkLGIpfHwoZCs9XCIgXCIrYikpO3RoaXMuJC5jbGFzc05hbWU9ZHx8YjtyZXR1cm4gdGhpc30scmVtb3ZlQ2xhc3M6Yz9mdW5jdGlvbihhKXt2YXIgZD10aGlzLiQ7ZC5jbGFzc0xpc3QucmVtb3ZlKGEpO1xuZC5jbGFzc05hbWV8fGQucmVtb3ZlQXR0cmlidXRlKFwiY2xhc3NcIik7cmV0dXJuIHRoaXN9OmZ1bmN0aW9uKGIpe3ZhciBkPXRoaXMuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIik7ZCYmYShkLGIpJiYoKGQ9ZC5yZXBsYWNlKG5ldyBSZWdFeHAoXCIoPzpefFxcXFxzKylcIitiK1wiKD9cXHgzZFxcXFxzfCQpXCIpLFwiXCIpLnJlcGxhY2UoL15cXHMrLyxcIlwiKSk/dGhpcy5zZXRBdHRyaWJ1dGUoXCJjbGFzc1wiLGQpOnRoaXMucmVtb3ZlQXR0cmlidXRlKFwiY2xhc3NcIikpO3JldHVybiB0aGlzfSxoYXNDbGFzczpmdW5jdGlvbihiKXtyZXR1cm4gYSh0aGlzLiQuY2xhc3NOYW1lLGIpfSxhcHBlbmQ6ZnVuY3Rpb24oYSxkKXtcInN0cmluZ1wiPT10eXBlb2YgYSYmKGE9dGhpcy5nZXREb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoYSkpO2Q/dGhpcy4kLmluc2VydEJlZm9yZShhLiQsdGhpcy4kLmZpcnN0Q2hpbGQpOnRoaXMuJC5hcHBlbmRDaGlsZChhLiQpO3JldHVybiBhfSxhcHBlbmRIdG1sOmZ1bmN0aW9uKGEpe2lmKHRoaXMuJC5jaGlsZE5vZGVzLmxlbmd0aCl7dmFyIGQ9XG5uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJkaXZcIix0aGlzLmdldERvY3VtZW50KCkpO2Quc2V0SHRtbChhKTtkLm1vdmVDaGlsZHJlbih0aGlzKX1lbHNlIHRoaXMuc2V0SHRtbChhKX0sYXBwZW5kVGV4dDpmdW5jdGlvbihhKXtudWxsIT10aGlzLiQudGV4dCYmQ0tFRElUT1IuZW52LmllJiY5PkNLRURJVE9SLmVudi52ZXJzaW9uP3RoaXMuJC50ZXh0Kz1hOnRoaXMuYXBwZW5kKG5ldyBDS0VESVRPUi5kb20udGV4dChhKSl9LGFwcGVuZEJvZ3VzOmZ1bmN0aW9uKGEpe2lmKGF8fENLRURJVE9SLmVudi5uZWVkc0JyRmlsbGVyKXtmb3IoYT10aGlzLmdldExhc3QoKTthJiZhLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmIUNLRURJVE9SLnRvb2xzLnJ0cmltKGEuZ2V0VGV4dCgpKTspYT1hLmdldFByZXZpb3VzKCk7YSYmYS5pcyYmYS5pcyhcImJyXCIpfHwoYT10aGlzLmdldERvY3VtZW50KCkuY3JlYXRlRWxlbWVudChcImJyXCIpLENLRURJVE9SLmVudi5nZWNrbyYmYS5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXG5cIl9tb3pcIiksdGhpcy5hcHBlbmQoYSkpfX0sYnJlYWtQYXJlbnQ6ZnVuY3Rpb24oYSxkKXt2YXIgYj1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKHRoaXMuZ2V0RG9jdW1lbnQoKSk7Yi5zZXRTdGFydEFmdGVyKHRoaXMpO2Iuc2V0RW5kQWZ0ZXIoYSk7dmFyIGc9Yi5leHRyYWN0Q29udGVudHMoITEsZHx8ITEpLGM7Yi5pbnNlcnROb2RlKHRoaXMucmVtb3ZlKCkpO2lmKENLRURJVE9SLmVudi5pZSYmIUNLRURJVE9SLmVudi5lZGdlKXtmb3IoYj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJkaXZcIik7Yz1nLmdldEZpcnN0KCk7KWMuJC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3ImJihjLiQuc3R5bGUuYmFja2dyb3VuZENvbG9yPWMuJC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IpLGIuYXBwZW5kKGMpO2IuaW5zZXJ0QWZ0ZXIodGhpcyk7Yi5yZW1vdmUoITApfWVsc2UgZy5pbnNlcnRBZnRlck5vZGUodGhpcyl9LGNvbnRhaW5zOmRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP2Z1bmN0aW9uKGEpe3JldHVybiEhKHRoaXMuJC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbihhLiQpJlxuMTYpfTpmdW5jdGlvbihhKXt2YXIgZD10aGlzLiQ7cmV0dXJuIGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UP2QuY29udGFpbnMoYS5nZXRQYXJlbnQoKS4kKTpkIT1hLiQmJmQuY29udGFpbnMoYS4kKX0sZm9jdXM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dHJ5e3RoaXMuJC5mb2N1cygpfWNhdGNoKGQpe319cmV0dXJuIGZ1bmN0aW9uKGQpe2Q/Q0tFRElUT1IudG9vbHMuc2V0VGltZW91dChhLDEwMCx0aGlzKTphLmNhbGwodGhpcyl9fSgpLGdldEh0bWw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiQuaW5uZXJIVE1MO3JldHVybiBDS0VESVRPUi5lbnYuaWU/YS5yZXBsYWNlKC88XFw/W14+XSo+L2csXCJcIik6YX0sZ2V0T3V0ZXJIdG1sOmZ1bmN0aW9uKCl7aWYodGhpcy4kLm91dGVySFRNTClyZXR1cm4gdGhpcy4kLm91dGVySFRNTC5yZXBsYWNlKC88XFw/W14+XSo+LyxcIlwiKTt2YXIgYT10aGlzLiQub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiZGl2XCIpO2EuYXBwZW5kQ2hpbGQodGhpcy4kLmNsb25lTm9kZSghMCkpO1xucmV0dXJuIGEuaW5uZXJIVE1MfSxnZXRDbGllbnRSZWN0OmZ1bmN0aW9uKGEpe3ZhciBkPUNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSx0aGlzLiQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkpOyFkLndpZHRoJiYoZC53aWR0aD1kLnJpZ2h0LWQubGVmdCk7IWQuaGVpZ2h0JiYoZC5oZWlnaHQ9ZC5ib3R0b20tZC50b3ApO3JldHVybiBhP0NLRURJVE9SLnRvb2xzLmdldEFic29sdXRlUmVjdFBvc2l0aW9uKHRoaXMuZ2V0V2luZG93KCksZCk6ZH0sc2V0SHRtbDpDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24/ZnVuY3Rpb24oYSl7dHJ5e3ZhciBkPXRoaXMuJDtpZih0aGlzLmdldFBhcmVudCgpKXJldHVybiBkLmlubmVySFRNTD1hO3ZhciBiPXRoaXMuZ2V0RG9jdW1lbnQoKS5fZ2V0SHRtbDVTaGl2RnJhZygpO2IuYXBwZW5kQ2hpbGQoZCk7ZC5pbm5lckhUTUw9YTtiLnJlbW92ZUNoaWxkKGQpO3JldHVybiBhfWNhdGNoKGcpe3RoaXMuJC5pbm5lckhUTUw9XCJcIjtcbmQ9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KFwiYm9keVwiLHRoaXMuZ2V0RG9jdW1lbnQoKSk7ZC4kLmlubmVySFRNTD1hO2ZvcihkPWQuZ2V0Q2hpbGRyZW4oKTtkLmNvdW50KCk7KXRoaXMuYXBwZW5kKGQuZ2V0SXRlbSgwKSk7cmV0dXJuIGF9fTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kLmlubmVySFRNTD1hfSxzZXRUZXh0OmZ1bmN0aW9uKCl7dmFyIGE9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInBcIik7YS5pbm5lckhUTUw9XCJ4XCI7YT1hLnRleHRDb250ZW50O3JldHVybiBmdW5jdGlvbihkKXt0aGlzLiRbYT9cInRleHRDb250ZW50XCI6XCJpbm5lclRleHRcIl09ZH19KCksZ2V0QXR0cmlidXRlOmZ1bmN0aW9uKCl7dmFyIGE9ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuJC5nZXRBdHRyaWJ1dGUoYSwyKX07cmV0dXJuIENLRURJVE9SLmVudi5pZSYmKENLRURJVE9SLmVudi5pZTdDb21wYXR8fENLRURJVE9SLmVudi5xdWlya3MpP2Z1bmN0aW9uKGEpe3N3aXRjaChhKXtjYXNlIFwiY2xhc3NcIjphPVxuXCJjbGFzc05hbWVcIjticmVhaztjYXNlIFwiaHR0cC1lcXVpdlwiOmE9XCJodHRwRXF1aXZcIjticmVhaztjYXNlIFwibmFtZVwiOnJldHVybiB0aGlzLiQubmFtZTtjYXNlIFwidGFiaW5kZXhcIjpyZXR1cm4gYT10aGlzLiQuZ2V0QXR0cmlidXRlKGEsMiksMCE9PWEmJjA9PT10aGlzLiQudGFiSW5kZXgmJihhPW51bGwpLGE7Y2FzZSBcImNoZWNrZWRcIjpyZXR1cm4gYT10aGlzLiQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oYSksKGEuc3BlY2lmaWVkP2Eubm9kZVZhbHVlOnRoaXMuJC5jaGVja2VkKT9cImNoZWNrZWRcIjpudWxsO2Nhc2UgXCJoc3BhY2VcIjpjYXNlIFwidmFsdWVcIjpyZXR1cm4gdGhpcy4kW2FdO2Nhc2UgXCJzdHlsZVwiOnJldHVybiB0aGlzLiQuc3R5bGUuY3NzVGV4dDtjYXNlIFwiY29udGVudGVkaXRhYmxlXCI6Y2FzZSBcImNvbnRlbnRFZGl0YWJsZVwiOnJldHVybiB0aGlzLiQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oXCJjb250ZW50RWRpdGFibGVcIikuc3BlY2lmaWVkP3RoaXMuJC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIik6XG5udWxsfXJldHVybiB0aGlzLiQuZ2V0QXR0cmlidXRlKGEsMil9OmF9KCksZ2V0QXR0cmlidXRlczpmdW5jdGlvbihhKXt2YXIgZD17fSxiPXRoaXMuJC5hdHRyaWJ1dGVzLGc7YT1DS0VESVRPUi50b29scy5pc0FycmF5KGEpP2E6W107Zm9yKGc9MDtnPGIubGVuZ3RoO2crKyktMT09PUNLRURJVE9SLnRvb2xzLmluZGV4T2YoYSxiW2ddLm5hbWUpJiYoZFtiW2ddLm5hbWVdPWJbZ10udmFsdWUpO3JldHVybiBkfSxnZXRDaGlsZHJlbjpmdW5jdGlvbigpe3JldHVybiBuZXcgQ0tFRElUT1IuZG9tLm5vZGVMaXN0KHRoaXMuJC5jaGlsZE5vZGVzKX0sZ2V0Q2xpZW50U2l6ZTpmdW5jdGlvbigpe3JldHVybnt3aWR0aDp0aGlzLiQuY2xpZW50V2lkdGgsaGVpZ2h0OnRoaXMuJC5jbGllbnRIZWlnaHR9fSxnZXRDb21wdXRlZFN0eWxlOmRvY3VtZW50LmRlZmF1bHRWaWV3JiZkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlP2Z1bmN0aW9uKGEpe3ZhciBkPXRoaXMuZ2V0V2luZG93KCkuJC5nZXRDb21wdXRlZFN0eWxlKHRoaXMuJCxcbm51bGwpO3JldHVybiBkP2QuZ2V0UHJvcGVydHlWYWx1ZShhKTpcIlwifTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy4kLmN1cnJlbnRTdHlsZVtDS0VESVRPUi50b29scy5jc3NTdHlsZVRvRG9tU3R5bGUoYSldfSxnZXREdGQ6ZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi5kdGRbdGhpcy5nZXROYW1lKCldO3RoaXMuZ2V0RHRkPWZ1bmN0aW9uKCl7cmV0dXJuIGF9O3JldHVybiBhfSxnZXRFbGVtZW50c0J5VGFnOkNLRURJVE9SLmRvbS5kb2N1bWVudC5wcm90b3R5cGUuZ2V0RWxlbWVudHNCeVRhZyxnZXRUYWJJbmRleDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuJC50YWJJbmRleDtyZXR1cm4gMCE9PWF8fENLRURJVE9SLmR0ZC4kdGFiSW5kZXhbdGhpcy5nZXROYW1lKCldfHwwPT09cGFyc2VJbnQodGhpcy5nZXRBdHRyaWJ1dGUoXCJ0YWJpbmRleFwiKSwxMCk/YTotMX0sZ2V0VGV4dDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQudGV4dENvbnRlbnR8fHRoaXMuJC5pbm5lclRleHR8fFwiXCJ9LFxuZ2V0V2luZG93OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnQoKS5nZXRXaW5kb3coKX0sZ2V0SWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kLmlkfHxudWxsfSxnZXROYW1lQXR0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJC5uYW1lfHxudWxsfSxnZXROYW1lOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy4kLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoQ0tFRElUT1IuZW52LmllJiY4Pj1kb2N1bWVudC5kb2N1bWVudE1vZGUpe3ZhciBkPXRoaXMuJC5zY29wZU5hbWU7XCJIVE1MXCIhPWQmJihhPWQudG9Mb3dlckNhc2UoKStcIjpcIithKX10aGlzLmdldE5hbWU9ZnVuY3Rpb24oKXtyZXR1cm4gYX07cmV0dXJuIHRoaXMuZ2V0TmFtZSgpfSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQudmFsdWV9LGdldEZpcnN0OmZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMuJC5maXJzdENoaWxkOyhkPWQmJm5ldyBDS0VESVRPUi5kb20ubm9kZShkKSkmJmEmJiFhKGQpJiYoZD1kLmdldE5leHQoYSkpO1xucmV0dXJuIGR9LGdldExhc3Q6ZnVuY3Rpb24oYSl7dmFyIGQ9dGhpcy4kLmxhc3RDaGlsZDsoZD1kJiZuZXcgQ0tFRElUT1IuZG9tLm5vZGUoZCkpJiZhJiYhYShkKSYmKGQ9ZC5nZXRQcmV2aW91cyhhKSk7cmV0dXJuIGR9LGdldFN0eWxlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLiQuc3R5bGVbQ0tFRElUT1IudG9vbHMuY3NzU3R5bGVUb0RvbVN0eWxlKGEpXX0saXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldE5hbWUoKTtpZihcIm9iamVjdFwiPT10eXBlb2YgYXJndW1lbnRzWzBdKXJldHVybiEhYXJndW1lbnRzWzBdW2FdO2Zvcih2YXIgZD0wO2Q8YXJndW1lbnRzLmxlbmd0aDtkKyspaWYoYXJndW1lbnRzW2RdPT1hKXJldHVybiEwO3JldHVybiExfSxpc0VkaXRhYmxlOmZ1bmN0aW9uKGEpe3ZhciBkPXRoaXMuZ2V0TmFtZSgpO3JldHVybiB0aGlzLmlzUmVhZE9ubHkoKXx8XCJub25lXCI9PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShcImRpc3BsYXlcIil8fFwiaGlkZGVuXCI9PXRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShcInZpc2liaWxpdHlcIil8fFxuQ0tFRElUT1IuZHRkLiRub25FZGl0YWJsZVtkXXx8Q0tFRElUT1IuZHRkLiRlbXB0eVtkXXx8dGhpcy5pcyhcImFcIikmJih0aGlzLmRhdGEoXCJja2Utc2F2ZWQtbmFtZVwiKXx8dGhpcy5oYXNBdHRyaWJ1dGUoXCJuYW1lXCIpKSYmIXRoaXMuZ2V0Q2hpbGRDb3VudCgpPyExOiExIT09YT8oYT1DS0VESVRPUi5kdGRbZF18fENLRURJVE9SLmR0ZC5zcGFuLCEoIWF8fCFhW1wiI1wiXSkpOiEwfSxpc0lkZW50aWNhbDpmdW5jdGlvbihhKXt2YXIgZD10aGlzLmNsb25lKDAsMSk7YT1hLmNsb25lKDAsMSk7ZC5yZW1vdmVBdHRyaWJ1dGVzKFtcIl9tb3pfZGlydHlcIixcImRhdGEtY2tlLWV4cGFuZG9cIixcImRhdGEtY2tlLXNhdmVkLWhyZWZcIixcImRhdGEtY2tlLXNhdmVkLW5hbWVcIl0pO2EucmVtb3ZlQXR0cmlidXRlcyhbXCJfbW96X2RpcnR5XCIsXCJkYXRhLWNrZS1leHBhbmRvXCIsXCJkYXRhLWNrZS1zYXZlZC1ocmVmXCIsXCJkYXRhLWNrZS1zYXZlZC1uYW1lXCJdKTtpZihkLiQuaXNFcXVhbE5vZGUpcmV0dXJuIGQuJC5zdHlsZS5jc3NUZXh0PVxuQ0tFRElUT1IudG9vbHMubm9ybWFsaXplQ3NzVGV4dChkLiQuc3R5bGUuY3NzVGV4dCksYS4kLnN0eWxlLmNzc1RleHQ9Q0tFRElUT1IudG9vbHMubm9ybWFsaXplQ3NzVGV4dChhLiQuc3R5bGUuY3NzVGV4dCksZC4kLmlzRXF1YWxOb2RlKGEuJCk7ZD1kLmdldE91dGVySHRtbCgpO2E9YS5nZXRPdXRlckh0bWwoKTtpZihDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24mJnRoaXMuaXMoXCJhXCIpKXt2YXIgYj10aGlzLmdldFBhcmVudCgpO2IudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYj1iLmNsb25lKCksYi5zZXRIdG1sKGQpLGQ9Yi5nZXRIdG1sKCksYi5zZXRIdG1sKGEpLGE9Yi5nZXRIdG1sKCkpfXJldHVybiBkPT1hfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXt2YXIgYT0odGhpcy4kLm9mZnNldEhlaWdodHx8dGhpcy4kLm9mZnNldFdpZHRoKSYmXCJoaWRkZW5cIiE9dGhpcy5nZXRDb21wdXRlZFN0eWxlKFwidmlzaWJpbGl0eVwiKSxkLGI7YSYmQ0tFRElUT1IuZW52LndlYmtpdCYmXG4oZD10aGlzLmdldFdpbmRvdygpLCFkLmVxdWFscyhDS0VESVRPUi5kb2N1bWVudC5nZXRXaW5kb3coKSkmJihiPWQuJC5mcmFtZUVsZW1lbnQpJiYoYT0obmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGIpKS5pc1Zpc2libGUoKSkpO3JldHVybiEhYX0saXNFbXB0eUlubGluZVJlbW92ZWFibGU6ZnVuY3Rpb24oKXtpZighQ0tFRElUT1IuZHRkLiRyZW1vdmVFbXB0eVt0aGlzLmdldE5hbWUoKV0pcmV0dXJuITE7Zm9yKHZhciBhPXRoaXMuZ2V0Q2hpbGRyZW4oKSxkPTAsYj1hLmNvdW50KCk7ZDxiO2QrKyl7dmFyIGc9YS5nZXRJdGVtKGQpO2lmKGcudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHwhZy5kYXRhKFwiY2tlLWJvb2ttYXJrXCIpKWlmKGcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYhZy5pc0VtcHR5SW5saW5lUmVtb3ZlYWJsZSgpfHxnLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmQ0tFRElUT1IudG9vbHMudHJpbShnLmdldFRleHQoKSkpcmV0dXJuITF9cmV0dXJuITB9LFxuaGFzQXR0cmlidXRlczpDS0VESVRPUi5lbnYuaWUmJihDS0VESVRPUi5lbnYuaWU3Q29tcGF0fHxDS0VESVRPUi5lbnYucXVpcmtzKT9mdW5jdGlvbigpe2Zvcih2YXIgYT10aGlzLiQuYXR0cmlidXRlcyxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBiPWFbZF07c3dpdGNoKGIubm9kZU5hbWUpe2Nhc2UgXCJjbGFzc1wiOmlmKHRoaXMuZ2V0QXR0cmlidXRlKFwiY2xhc3NcIikpcmV0dXJuITA7Y2FzZSBcImRhdGEtY2tlLWV4cGFuZG9cIjpjb250aW51ZTtkZWZhdWx0OmlmKGIuc3BlY2lmaWVkKXJldHVybiEwfX1yZXR1cm4hMX06ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiQuYXR0cmlidXRlcyxkPWEubGVuZ3RoLGI9e1wiZGF0YS1ja2UtZXhwYW5kb1wiOjEsX21vel9kaXJ0eToxfTtyZXR1cm4gMDxkJiYoMjxkfHwhYlthWzBdLm5vZGVOYW1lXXx8Mj09ZCYmIWJbYVsxXS5ub2RlTmFtZV0pfSxoYXNBdHRyaWJ1dGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGQpe3ZhciBiPXRoaXMuJC5hdHRyaWJ1dGVzLmdldE5hbWVkSXRlbShkKTtcbmlmKFwiaW5wdXRcIj09dGhpcy5nZXROYW1lKCkpc3dpdGNoKGQpe2Nhc2UgXCJjbGFzc1wiOnJldHVybiAwPHRoaXMuJC5jbGFzc05hbWUubGVuZ3RoO2Nhc2UgXCJjaGVja2VkXCI6cmV0dXJuISF0aGlzLiQuY2hlY2tlZDtjYXNlIFwidmFsdWVcIjpyZXR1cm4gZD10aGlzLmdldEF0dHJpYnV0ZShcInR5cGVcIiksXCJjaGVja2JveFwiPT1kfHxcInJhZGlvXCI9PWQ/XCJvblwiIT10aGlzLiQudmFsdWU6ISF0aGlzLiQudmFsdWV9cmV0dXJuIGI/Yi5zcGVjaWZpZWQ6ITF9cmV0dXJuIENLRURJVE9SLmVudi5pZT84PkNLRURJVE9SLmVudi52ZXJzaW9uP2Z1bmN0aW9uKGQpe3JldHVyblwibmFtZVwiPT1kPyEhdGhpcy4kLm5hbWU6YS5jYWxsKHRoaXMsZCl9OmE6ZnVuY3Rpb24oYSl7cmV0dXJuISF0aGlzLiQuYXR0cmlidXRlcy5nZXROYW1lZEl0ZW0oYSl9fSgpLGhpZGU6ZnVuY3Rpb24oKXt0aGlzLnNldFN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKX0sbW92ZUNoaWxkcmVuOmZ1bmN0aW9uKGEsZCl7dmFyIGI9dGhpcy4kO1xuYT1hLiQ7aWYoYiE9YSl7dmFyIGc7aWYoZClmb3IoO2c9Yi5sYXN0Q2hpbGQ7KWEuaW5zZXJ0QmVmb3JlKGIucmVtb3ZlQ2hpbGQoZyksYS5maXJzdENoaWxkKTtlbHNlIGZvcig7Zz1iLmZpcnN0Q2hpbGQ7KWEuYXBwZW5kQ2hpbGQoYi5yZW1vdmVDaGlsZChnKSl9fSxtZXJnZVNpYmxpbmdzOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGIsZyl7aWYoYiYmYi50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpe2Zvcih2YXIgYz1bXTtiLmRhdGEoXCJja2UtYm9va21hcmtcIil8fGIuaXNFbXB0eUlubGluZVJlbW92ZWFibGUoKTspaWYoYy5wdXNoKGIpLGI9Zz9iLmdldE5leHQoKTpiLmdldFByZXZpb3VzKCksIWJ8fGIudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXJldHVybjtpZihkLmlzSWRlbnRpY2FsKGIpKXtmb3IodmFyIGU9Zz9kLmdldExhc3QoKTpkLmdldEZpcnN0KCk7Yy5sZW5ndGg7KWMuc2hpZnQoKS5tb3ZlKGQsIWcpO2IubW92ZUNoaWxkcmVuKGQsIWcpO2IucmVtb3ZlKCk7XG5lJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5tZXJnZVNpYmxpbmdzKCl9fX1yZXR1cm4gZnVuY3Rpb24oZCl7aWYoITE9PT1kfHxDS0VESVRPUi5kdGQuJHJlbW92ZUVtcHR5W3RoaXMuZ2V0TmFtZSgpXXx8dGhpcy5pcyhcImFcIikpYSh0aGlzLHRoaXMuZ2V0TmV4dCgpLCEwKSxhKHRoaXMsdGhpcy5nZXRQcmV2aW91cygpKX19KCksc2hvdzpmdW5jdGlvbigpe3RoaXMuc2V0U3R5bGVzKHtkaXNwbGF5OlwiXCIsdmlzaWJpbGl0eTpcIlwifSl9LHNldEF0dHJpYnV0ZTpmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGEsYil7dGhpcy4kLnNldEF0dHJpYnV0ZShhLGIpO3JldHVybiB0aGlzfTtyZXR1cm4gQ0tFRElUT1IuZW52LmllJiYoQ0tFRElUT1IuZW52LmllN0NvbXBhdHx8Q0tFRElUT1IuZW52LnF1aXJrcyk/ZnVuY3Rpb24oZCxiKXtcImNsYXNzXCI9PWQ/dGhpcy4kLmNsYXNzTmFtZT1iOlwic3R5bGVcIj09ZD90aGlzLiQuc3R5bGUuY3NzVGV4dD1iOlwidGFiaW5kZXhcIj09ZD9cbnRoaXMuJC50YWJJbmRleD1iOlwiY2hlY2tlZFwiPT1kP3RoaXMuJC5jaGVja2VkPWI6XCJjb250ZW50ZWRpdGFibGVcIj09ZD9hLmNhbGwodGhpcyxcImNvbnRlbnRFZGl0YWJsZVwiLGIpOmEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfTpDS0VESVRPUi5lbnYuaWU4Q29tcGF0JiZDS0VESVRPUi5lbnYuc2VjdXJlP2Z1bmN0aW9uKGQsYil7aWYoXCJzcmNcIj09ZCYmYi5tYXRjaCgvXmh0dHA6XFwvXFwvLykpdHJ5e2EuYXBwbHkodGhpcyxhcmd1bWVudHMpfWNhdGNoKGcpe31lbHNlIGEuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfTphfSgpLHNldEF0dHJpYnV0ZXM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBkIGluIGEpdGhpcy5zZXRBdHRyaWJ1dGUoZCxhW2RdKTtyZXR1cm4gdGhpc30sc2V0VmFsdWU6ZnVuY3Rpb24oYSl7dGhpcy4kLnZhbHVlPWE7cmV0dXJuIHRoaXN9LHJlbW92ZUF0dHJpYnV0ZTpmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGEpe3RoaXMuJC5yZW1vdmVBdHRyaWJ1dGUoYSl9O1xucmV0dXJuIENLRURJVE9SLmVudi5pZSYmKENLRURJVE9SLmVudi5pZTdDb21wYXR8fENLRURJVE9SLmVudi5xdWlya3MpP2Z1bmN0aW9uKGEpe1wiY2xhc3NcIj09YT9hPVwiY2xhc3NOYW1lXCI6XCJ0YWJpbmRleFwiPT1hP2E9XCJ0YWJJbmRleFwiOlwiY29udGVudGVkaXRhYmxlXCI9PWEmJihhPVwiY29udGVudEVkaXRhYmxlXCIpO3RoaXMuJC5yZW1vdmVBdHRyaWJ1dGUoYSl9OmF9KCkscmVtb3ZlQXR0cmlidXRlczpmdW5jdGlvbihhKXtpZihDS0VESVRPUi50b29scy5pc0FycmF5KGEpKWZvcih2YXIgZD0wO2Q8YS5sZW5ndGg7ZCsrKXRoaXMucmVtb3ZlQXR0cmlidXRlKGFbZF0pO2Vsc2UgZm9yKGQgaW4gYT1hfHx0aGlzLmdldEF0dHJpYnV0ZXMoKSxhKWEuaGFzT3duUHJvcGVydHkoZCkmJnRoaXMucmVtb3ZlQXR0cmlidXRlKGQpfSxyZW1vdmVTdHlsZTpmdW5jdGlvbihhKXt2YXIgZD10aGlzLiQuc3R5bGU7aWYoZC5yZW1vdmVQcm9wZXJ0eXx8XCJib3JkZXJcIiE9YSYmXCJtYXJnaW5cIiE9YSYmXCJwYWRkaW5nXCIhPVxuYSlkLnJlbW92ZVByb3BlcnR5P2QucmVtb3ZlUHJvcGVydHkoYSk6ZC5yZW1vdmVBdHRyaWJ1dGUoQ0tFRElUT1IudG9vbHMuY3NzU3R5bGVUb0RvbVN0eWxlKGEpKSx0aGlzLiQuc3R5bGUuY3NzVGV4dHx8dGhpcy5yZW1vdmVBdHRyaWJ1dGUoXCJzdHlsZVwiKTtlbHNle3ZhciBiPVtcInRvcFwiLFwibGVmdFwiLFwicmlnaHRcIixcImJvdHRvbVwiXSxnO1wiYm9yZGVyXCI9PWEmJihnPVtcImNvbG9yXCIsXCJzdHlsZVwiLFwid2lkdGhcIl0pO2Zvcih2YXIgZD1bXSxjPTA7YzxiLmxlbmd0aDtjKyspaWYoZylmb3IodmFyIGU9MDtlPGcubGVuZ3RoO2UrKylkLnB1c2goW2EsYltjXSxnW2VdXS5qb2luKFwiLVwiKSk7ZWxzZSBkLnB1c2goW2EsYltjXV0uam9pbihcIi1cIikpO2ZvcihhPTA7YTxkLmxlbmd0aDthKyspdGhpcy5yZW1vdmVTdHlsZShkW2FdKX19LHNldFN0eWxlOmZ1bmN0aW9uKGEsZCl7dGhpcy4kLnN0eWxlW0NLRURJVE9SLnRvb2xzLmNzc1N0eWxlVG9Eb21TdHlsZShhKV09ZDtyZXR1cm4gdGhpc30sc2V0U3R5bGVzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZCBpbiBhKXRoaXMuc2V0U3R5bGUoZCxcbmFbZF0pO3JldHVybiB0aGlzfSxzZXRPcGFjaXR5OmZ1bmN0aW9uKGEpe0NLRURJVE9SLmVudi5pZSYmOT5DS0VESVRPUi5lbnYudmVyc2lvbj8oYT1NYXRoLnJvdW5kKDEwMCphKSx0aGlzLnNldFN0eWxlKFwiZmlsdGVyXCIsMTAwPD1hP1wiXCI6XCJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eVxceDNkXCIrYStcIilcIikpOnRoaXMuc2V0U3R5bGUoXCJvcGFjaXR5XCIsYSl9LHVuc2VsZWN0YWJsZTpmdW5jdGlvbigpe3RoaXMuc2V0U3R5bGVzKENLRURJVE9SLnRvb2xzLmNzc1ZlbmRvclByZWZpeChcInVzZXItc2VsZWN0XCIsXCJub25lXCIpKTtpZihDS0VESVRPUi5lbnYuaWUpe3RoaXMuc2V0QXR0cmlidXRlKFwidW5zZWxlY3RhYmxlXCIsXCJvblwiKTtmb3IodmFyIGEsZD10aGlzLmdldEVsZW1lbnRzQnlUYWcoXCIqXCIpLGI9MCxnPWQuY291bnQoKTtiPGc7YisrKWE9ZC5nZXRJdGVtKGIpLGEuc2V0QXR0cmlidXRlKFwidW5zZWxlY3RhYmxlXCIsXCJvblwiKX19LGdldFBvc2l0aW9uZWRBbmNlc3RvcjpmdW5jdGlvbigpe2Zvcih2YXIgYT1cbnRoaXM7XCJodG1sXCIhPWEuZ2V0TmFtZSgpOyl7aWYoXCJzdGF0aWNcIiE9YS5nZXRDb21wdXRlZFN0eWxlKFwicG9zaXRpb25cIikpcmV0dXJuIGE7YT1hLmdldFBhcmVudCgpfXJldHVybiBudWxsfSxnZXREb2N1bWVudFBvc2l0aW9uOmZ1bmN0aW9uKGEpe3ZhciBkPTAsYj0wLGc9dGhpcy5nZXREb2N1bWVudCgpLGM9Zy5nZXRCb2R5KCksZT1cIkJhY2tDb21wYXRcIj09Zy4kLmNvbXBhdE1vZGU7aWYoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCYmKENLRURJVE9SLmVudi5pZT84IT09Q0tFRElUT1IuZW52LnZlcnNpb246MSkpe3ZhciBrPXRoaXMuJC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxsPWcuJC5kb2N1bWVudEVsZW1lbnQsZj1sLmNsaWVudFRvcHx8Yy4kLmNsaWVudFRvcHx8MCx1PWwuY2xpZW50TGVmdHx8Yy4kLmNsaWVudExlZnR8fDAsej0hMDtDS0VESVRPUi5lbnYuaWUmJih6PWcuZ2V0RG9jdW1lbnRFbGVtZW50KCkuY29udGFpbnModGhpcyksXG5nPWcuZ2V0Qm9keSgpLmNvbnRhaW5zKHRoaXMpLHo9ZSYmZ3x8IWUmJnopO3omJihDS0VESVRPUi5lbnYud2Via2l0fHxDS0VESVRPUi5lbnYuaWUmJjEyPD1DS0VESVRPUi5lbnYudmVyc2lvbj8oZD1jLiQuc2Nyb2xsTGVmdHx8bC5zY3JvbGxMZWZ0LGI9Yy4kLnNjcm9sbFRvcHx8bC5zY3JvbGxUb3ApOihiPWU/Yy4kOmwsZD1iLnNjcm9sbExlZnQsYj1iLnNjcm9sbFRvcCksZD1rLmxlZnQrZC11LGI9ay50b3ArYi1mKX1lbHNlIGZvcihmPXRoaXMsdT1udWxsO2YmJlwiYm9keVwiIT1mLmdldE5hbWUoKSYmXCJodG1sXCIhPWYuZ2V0TmFtZSgpOyl7ZCs9Zi4kLm9mZnNldExlZnQtZi4kLnNjcm9sbExlZnQ7Yis9Zi4kLm9mZnNldFRvcC1mLiQuc2Nyb2xsVG9wO2YuZXF1YWxzKHRoaXMpfHwoZCs9Zi4kLmNsaWVudExlZnR8fDAsYis9Zi4kLmNsaWVudFRvcHx8MCk7Zm9yKDt1JiYhdS5lcXVhbHMoZik7KWQtPXUuJC5zY3JvbGxMZWZ0LGItPXUuJC5zY3JvbGxUb3AsdT11LmdldFBhcmVudCgpO1xudT1mO2Y9KGs9Zi4kLm9mZnNldFBhcmVudCk/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGspOm51bGx9YSYmKGs9dGhpcy5nZXRXaW5kb3coKSxmPWEuZ2V0V2luZG93KCksIWsuZXF1YWxzKGYpJiZrLiQuZnJhbWVFbGVtZW50JiYoYT0obmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGsuJC5mcmFtZUVsZW1lbnQpKS5nZXREb2N1bWVudFBvc2l0aW9uKGEpLGQrPWEueCxiKz1hLnkpKTtkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0fHwhQ0tFRElUT1IuZW52LmdlY2tvfHxlfHwoZCs9dGhpcy4kLmNsaWVudExlZnQ/MTowLGIrPXRoaXMuJC5jbGllbnRUb3A/MTowKTtyZXR1cm57eDpkLHk6Yn19LHNjcm9sbEludG9WaWV3OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0UGFyZW50KCk7aWYoYil7ZG8gaWYoKGIuJC5jbGllbnRXaWR0aCYmYi4kLmNsaWVudFdpZHRoPGIuJC5zY3JvbGxXaWR0aHx8Yi4kLmNsaWVudEhlaWdodCYmYi4kLmNsaWVudEhlaWdodDxcbmIuJC5zY3JvbGxIZWlnaHQpJiYhYi5pcyhcImJvZHlcIikmJnRoaXMuc2Nyb2xsSW50b1BhcmVudChiLGEsMSksYi5pcyhcImh0bWxcIikpe3ZhciBjPWIuZ2V0V2luZG93KCk7dHJ5e3ZhciBnPWMuJC5mcmFtZUVsZW1lbnQ7ZyYmKGI9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGcpKX1jYXRjaChlKXt9fXdoaWxlKGI9Yi5nZXRQYXJlbnQoKSl9fSxzY3JvbGxJbnRvUGFyZW50OmZ1bmN0aW9uKGEsYixjKXt2YXIgZyxlLGssZjtmdW5jdGlvbiBsKGcsYil7L2JvZHl8aHRtbC8udGVzdChhLmdldE5hbWUoKSk/YS5nZXRXaW5kb3coKS4kLnNjcm9sbEJ5KGcsYik6KGEuJC5zY3JvbGxMZWZ0Kz1nLGEuJC5zY3JvbGxUb3ArPWIpfWZ1bmN0aW9uIHAoYSxnKXt2YXIgYj17eDowLHk6MH07aWYoIWEuaXMoej9cImJvZHlcIjpcImh0bWxcIikpe3ZhciBkPWEuJC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtiLng9ZC5sZWZ0O2IueT1kLnRvcH1kPWEuZ2V0V2luZG93KCk7ZC5lcXVhbHMoZyl8fChkPXAoQ0tFRElUT1IuZG9tLmVsZW1lbnQuZ2V0KGQuJC5mcmFtZUVsZW1lbnQpLFxuZyksYi54Kz1kLngsYi55Kz1kLnkpO3JldHVybiBifWZ1bmN0aW9uIHUoYSxnKXtyZXR1cm4gcGFyc2VJbnQoYS5nZXRDb21wdXRlZFN0eWxlKFwibWFyZ2luLVwiK2cpfHwwLDEwKXx8MH0hYSYmKGE9dGhpcy5nZXRXaW5kb3coKSk7az1hLmdldERvY3VtZW50KCk7dmFyIHo9XCJCYWNrQ29tcGF0XCI9PWsuJC5jb21wYXRNb2RlO2EgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20ud2luZG93JiYoYT16P2suZ2V0Qm9keSgpOmsuZ2V0RG9jdW1lbnRFbGVtZW50KCkpO0NLRURJVE9SLmVudi53ZWJraXQmJihrPXRoaXMuZ2V0RWRpdG9yKCExKSkmJihrLl8ucHJldmlvdXNTY3JvbGxUb3A9bnVsbCk7az1hLmdldFdpbmRvdygpO2U9cCh0aGlzLGspO3ZhciBxPXAoYSxrKSxBPXRoaXMuJC5vZmZzZXRIZWlnaHQ7Zz10aGlzLiQub2Zmc2V0V2lkdGg7dmFyIHk9YS4kLmNsaWVudEhlaWdodCx0PWEuJC5jbGllbnRXaWR0aDtrPWUueC11KHRoaXMsXCJsZWZ0XCIpLXEueHx8MDtmPWUueS11KHRoaXMsXCJ0b3BcIiktXG5xLnl8fDA7Zz1lLngrZyt1KHRoaXMsXCJyaWdodFwiKS0ocS54K3QpfHwwO2U9ZS55K0ErdSh0aGlzLFwiYm90dG9tXCIpLShxLnkreSl8fDA7KDA+Znx8MDxlKSYmbCgwLCEwPT09Yj9mOiExPT09Yj9lOjA+Zj9mOmUpO2MmJigwPmt8fDA8ZykmJmwoMD5rP2s6ZywwKX0sc2V0U3RhdGU6ZnVuY3Rpb24oYSxiLGMpe2I9Ynx8XCJja2VcIjtzd2l0Y2goYSl7Y2FzZSBDS0VESVRPUi5UUklTVEFURV9PTjp0aGlzLmFkZENsYXNzKGIrXCJfb25cIik7dGhpcy5yZW1vdmVDbGFzcyhiK1wiX29mZlwiKTt0aGlzLnJlbW92ZUNsYXNzKGIrXCJfZGlzYWJsZWRcIik7YyYmdGhpcy5zZXRBdHRyaWJ1dGUoXCJhcmlhLXByZXNzZWRcIiwhMCk7YyYmdGhpcy5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpO2JyZWFrO2Nhc2UgQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQ6dGhpcy5hZGRDbGFzcyhiK1wiX2Rpc2FibGVkXCIpO3RoaXMucmVtb3ZlQ2xhc3MoYitcIl9vZmZcIik7dGhpcy5yZW1vdmVDbGFzcyhiK1wiX29uXCIpO1xuYyYmdGhpcy5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIsITApO2MmJnRoaXMucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIpO2JyZWFrO2RlZmF1bHQ6dGhpcy5hZGRDbGFzcyhiK1wiX29mZlwiKSx0aGlzLnJlbW92ZUNsYXNzKGIrXCJfb25cIiksdGhpcy5yZW1vdmVDbGFzcyhiK1wiX2Rpc2FibGVkXCIpLGMmJnRoaXMucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIpLGMmJnRoaXMucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1kaXNhYmxlZFwiKX19LGdldEZyYW1lRG9jdW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLiQ7dHJ5e2EuY29udGVudFdpbmRvdy5kb2N1bWVudH1jYXRjaChiKXthLnNyYz1hLnNyY31yZXR1cm4gYSYmbmV3IENLRURJVE9SLmRvbS5kb2N1bWVudChhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQpfSxjb3B5QXR0cmlidXRlczpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuJC5hdHRyaWJ1dGVzO2I9Ynx8e307Zm9yKHZhciBnPTA7ZzxjLmxlbmd0aDtnKyspe3ZhciBlPVxuY1tnXSxrPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSxmO2lmKCEoayBpbiBiKSlpZihcImNoZWNrZWRcIj09ayYmKGY9dGhpcy5nZXRBdHRyaWJ1dGUoaykpKWEuc2V0QXR0cmlidXRlKGssZik7ZWxzZSBpZighQ0tFRElUT1IuZW52LmllfHx0aGlzLmhhc0F0dHJpYnV0ZShrKSlmPXRoaXMuZ2V0QXR0cmlidXRlKGspLG51bGw9PT1mJiYoZj1lLm5vZGVWYWx1ZSksYS5zZXRBdHRyaWJ1dGUoayxmKX1cIlwiIT09dGhpcy4kLnN0eWxlLmNzc1RleHQmJihhLiQuc3R5bGUuY3NzVGV4dD10aGlzLiQuc3R5bGUuY3NzVGV4dCl9LHJlbmFtZU5vZGU6ZnVuY3Rpb24oYSl7aWYodGhpcy5nZXROYW1lKCkhPWEpe3ZhciBiPXRoaXMuZ2V0RG9jdW1lbnQoKTthPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChhLGIpO3RoaXMuY29weUF0dHJpYnV0ZXMoYSk7dGhpcy5tb3ZlQ2hpbGRyZW4oYSk7dGhpcy5nZXRQYXJlbnQoITApJiZ0aGlzLiQucGFyZW50Tm9kZS5yZXBsYWNlQ2hpbGQoYS4kLHRoaXMuJCk7XG5hLiRbXCJkYXRhLWNrZS1leHBhbmRvXCJdPXRoaXMuJFtcImRhdGEtY2tlLWV4cGFuZG9cIl07dGhpcy4kPWEuJDtkZWxldGUgdGhpcy5nZXROYW1lfX0sZ2V0Q2hpbGQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsYyl7dmFyIGc9Yi5jaGlsZE5vZGVzO2lmKDA8PWMmJmM8Zy5sZW5ndGgpcmV0dXJuIGdbY119cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuJDtpZihiLnNsaWNlKWZvcihiPWIuc2xpY2UoKTswPGIubGVuZ3RoJiZjOyljPWEoYyxiLnNoaWZ0KCkpO2Vsc2UgYz1hKGMsYik7cmV0dXJuIGM/bmV3IENLRURJVE9SLmRvbS5ub2RlKGMpOm51bGx9fSgpLGdldENoaWxkQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy4kLmNoaWxkTm9kZXMubGVuZ3RofSxkaXNhYmxlQ29udGV4dE1lbnU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3JldHVybiBiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYi5oYXNDbGFzcyhcImNrZV9lbmFibGVfY29udGV4dF9tZW51XCIpfXRoaXMub24oXCJjb250ZXh0bWVudVwiLFxuZnVuY3Rpb24oYil7Yi5kYXRhLmdldFRhcmdldCgpLmdldEFzY2VuZGFudChhLCEwKXx8Yi5kYXRhLnByZXZlbnREZWZhdWx0KCl9KX0sZ2V0RGlyZWN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBhP3RoaXMuZ2V0Q29tcHV0ZWRTdHlsZShcImRpcmVjdGlvblwiKXx8dGhpcy5nZXREaXJlY3Rpb24oKXx8dGhpcy5nZXRQYXJlbnQoKSYmdGhpcy5nZXRQYXJlbnQoKS5nZXREaXJlY3Rpb24oMSl8fHRoaXMuZ2V0RG9jdW1lbnQoKS4kLmRpcnx8XCJsdHJcIjp0aGlzLmdldFN0eWxlKFwiZGlyZWN0aW9uXCIpfHx0aGlzLmdldEF0dHJpYnV0ZShcImRpclwiKX0sZGF0YTpmdW5jdGlvbihhLGIpe2E9XCJkYXRhLVwiK2E7aWYodm9pZCAwPT09YilyZXR1cm4gdGhpcy5nZXRBdHRyaWJ1dGUoYSk7ITE9PT1iP3RoaXMucmVtb3ZlQXR0cmlidXRlKGEpOnRoaXMuc2V0QXR0cmlidXRlKGEsYik7cmV0dXJuIG51bGx9LGdldEVkaXRvcjpmdW5jdGlvbihhKXt2YXIgYj1DS0VESVRPUi5pbnN0YW5jZXMsYyxnLGU7YT1cbmF8fHZvaWQgMD09PWE7Zm9yKGMgaW4gYilpZihnPWJbY10sZy5lbGVtZW50LmVxdWFscyh0aGlzKSYmZy5lbGVtZW50TW9kZSE9Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0FQUEVORFRPfHwhYSYmKGU9Zy5lZGl0YWJsZSgpKSYmKGUuZXF1YWxzKHRoaXMpfHxlLmNvbnRhaW5zKHRoaXMpKSlyZXR1cm4gZztyZXR1cm4gbnVsbH0sZmluZDpmdW5jdGlvbihhKXt2YXIgYj1mKHRoaXMpO2E9bmV3IENLRURJVE9SLmRvbS5ub2RlTGlzdCh0aGlzLiQucXVlcnlTZWxlY3RvckFsbChlKHRoaXMsYSkpKTtiKCk7cmV0dXJuIGF9LGZpbmRPbmU6ZnVuY3Rpb24oYSl7dmFyIGI9Zih0aGlzKTthPXRoaXMuJC5xdWVyeVNlbGVjdG9yKGUodGhpcyxhKSk7YigpO3JldHVybiBhP25ldyBDS0VESVRPUi5kb20uZWxlbWVudChhKTpudWxsfSxmb3JFYWNoOmZ1bmN0aW9uKGEsYixjKXtpZighKGN8fGImJnRoaXMudHlwZSE9YikpdmFyIGc9YSh0aGlzKTtpZighMSE9PWcpe2M9dGhpcy5nZXRDaGlsZHJlbigpO1xuZm9yKHZhciBlPTA7ZTxjLmNvdW50KCk7ZSsrKWc9Yy5nZXRJdGVtKGUpLGcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UP2cuZm9yRWFjaChhLGIpOmImJmcudHlwZSE9Ynx8YShnKX19LGZpcmVFdmVudEhhbmRsZXI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1cIm9uXCIrYSxnPXRoaXMuJDtpZihDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24pe3ZhciBlPWcub3duZXJEb2N1bWVudC5jcmVhdGVFdmVudE9iamVjdCgpLGs7Zm9yKGsgaW4gYillW2tdPWJba107Zy5maXJlRXZlbnQoYyxlKX1lbHNlIGdbZ1thXT9hOmNdKGIpfSxpc0RldGFjaGVkOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXREb2N1bWVudCgpLGI9YS5nZXREb2N1bWVudEVsZW1lbnQoKTtyZXR1cm4gYi5lcXVhbHModGhpcyl8fGIuY29udGFpbnModGhpcyk/IUNLRURJVE9SLmVudi5pZXx8ODxDS0VESVRPUi5lbnYudmVyc2lvbiYmIUNLRURJVE9SLmVudi5xdWlya3M/IWEuJC5kZWZhdWx0VmlldzpcbiExOiEwfX0pO3ZhciBsPXt3aWR0aDpbXCJib3JkZXItbGVmdC13aWR0aFwiLFwiYm9yZGVyLXJpZ2h0LXdpZHRoXCIsXCJwYWRkaW5nLWxlZnRcIixcInBhZGRpbmctcmlnaHRcIl0saGVpZ2h0OltcImJvcmRlci10b3Atd2lkdGhcIixcImJvcmRlci1ib3R0b20td2lkdGhcIixcInBhZGRpbmctdG9wXCIsXCJwYWRkaW5nLWJvdHRvbVwiXX07Q0tFRElUT1IuZG9tLmVsZW1lbnQucHJvdG90eXBlLnNldFNpemU9ZnVuY3Rpb24oYSxkLGMpe1wibnVtYmVyXCI9PXR5cGVvZiBkJiYoIWN8fENLRURJVE9SLmVudi5pZSYmQ0tFRElUT1IuZW52LnF1aXJrc3x8KGQtPWIuY2FsbCh0aGlzLGEpKSx0aGlzLnNldFN0eWxlKGEsZCtcInB4XCIpKX07Q0tFRElUT1IuZG9tLmVsZW1lbnQucHJvdG90eXBlLmdldFNpemU9ZnVuY3Rpb24oYSxkKXt2YXIgYz1NYXRoLm1heCh0aGlzLiRbXCJvZmZzZXRcIitDS0VESVRPUi50b29scy5jYXBpdGFsaXplKGEpXSx0aGlzLiRbXCJjbGllbnRcIitDS0VESVRPUi50b29scy5jYXBpdGFsaXplKGEpXSl8fFxuMDtkJiYoYy09Yi5jYWxsKHRoaXMsYSkpO3JldHVybiBjfX0oKSxDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudD1mdW5jdGlvbihhKXthPWF8fENLRURJVE9SLmRvY3VtZW50O3RoaXMuJD1hLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlQ/YS4kLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTphfSxDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQucHJvdG90eXBlLENLRURJVE9SLmRvbS5lbGVtZW50LnByb3RvdHlwZSx7dHlwZTpDS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5ULGluc2VydEFmdGVyTm9kZTpmdW5jdGlvbihhKXthPWEuJDthLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMuJCxhLm5leHRTaWJsaW5nKX0sZ2V0SHRtbDpmdW5jdGlvbigpe3ZhciBhPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImRpdlwiKTt0aGlzLmNsb25lKDEsMSkuYXBwZW5kVG8oYSk7cmV0dXJuIGEuZ2V0SHRtbCgpLnJlcGxhY2UoL1xccypkYXRhLWNrZS1leHBhbmRvPVwiLio/XCIvZyxcblwiXCIpfX0sITAse2FwcGVuZDoxLGFwcGVuZEJvZ3VzOjEsY2xvbmU6MSxnZXRGaXJzdDoxLGdldEh0bWw6MSxnZXRMYXN0OjEsZ2V0UGFyZW50OjEsZ2V0TmV4dDoxLGdldFByZXZpb3VzOjEsYXBwZW5kVG86MSxtb3ZlQ2hpbGRyZW46MSxpbnNlcnRCZWZvcmU6MSxpbnNlcnRBZnRlck5vZGU6MSxyZXBsYWNlOjEsdHJpbToxLHR5cGU6MSxsdHJpbToxLHJ0cmltOjEsZ2V0RG9jdW1lbnQ6MSxnZXRDaGlsZENvdW50OjEsZ2V0Q2hpbGQ6MSxnZXRDaGlsZHJlbjoxfSksQ0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmRvbS5kb2N1bWVudEZyYWdtZW50LnByb3RvdHlwZSxDS0VESVRPUi5kb20uZG9jdW1lbnQucHJvdG90eXBlLCEwLHtmaW5kOjEsZmluZE9uZToxfSksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7dmFyIGc9dGhpcy5yYW5nZTtpZih0aGlzLl8uZW5kKXJldHVybiBudWxsO2lmKCF0aGlzLl8uc3RhcnQpe3RoaXMuXy5zdGFydD0xO2lmKGcuY29sbGFwc2VkKXJldHVybiB0aGlzLmVuZCgpLFxubnVsbDtnLm9wdGltaXplKCl9dmFyIGQsYz1nLnN0YXJ0Q29udGFpbmVyO2Q9Zy5lbmRDb250YWluZXI7dmFyIGU9Zy5zdGFydE9mZnNldCxoPWcuZW5kT2Zmc2V0LG4saz10aGlzLmd1YXJkLGY9dGhpcy50eXBlLGw9YT9cImdldFByZXZpb3VzU291cmNlTm9kZVwiOlwiZ2V0TmV4dFNvdXJjZU5vZGVcIjtpZighYSYmIXRoaXMuXy5ndWFyZExUUil7dmFyIG09ZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQ/ZDpkLmdldFBhcmVudCgpLEQ9ZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQ/ZC5nZXRDaGlsZChoKTpkLmdldE5leHQoKTt0aGlzLl8uZ3VhcmRMVFI9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oIWJ8fCFtLmVxdWFscyhhKSkmJighRHx8IWEuZXF1YWxzKEQpKSYmKGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHwhYnx8IWEuZXF1YWxzKGcucm9vdCkpfX1pZihhJiYhdGhpcy5fLmd1YXJkUlRMKXt2YXIgQz1jLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVD9jOmMuZ2V0UGFyZW50KCksXG5GPWMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UP2U/Yy5nZXRDaGlsZChlLTEpOm51bGw6Yy5nZXRQcmV2aW91cygpO3RoaXMuXy5ndWFyZFJUTD1mdW5jdGlvbihhLGIpe3JldHVybighYnx8IUMuZXF1YWxzKGEpKSYmKCFGfHwhYS5lcXVhbHMoRikpJiYoYS50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlR8fCFifHwhYS5lcXVhbHMoZy5yb290KSl9fXZhciBKPWE/dGhpcy5fLmd1YXJkUlRMOnRoaXMuXy5ndWFyZExUUjtuPWs/ZnVuY3Rpb24oYSxiKXtyZXR1cm4hMT09PUooYSxiKT8hMTprKGEsYil9Oko7dGhpcy5jdXJyZW50P2Q9dGhpcy5jdXJyZW50W2xdKCExLGYsbik6KGE/ZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihkPTA8aD9kLmdldENoaWxkKGgtMSk6ITE9PT1uKGQsITApP251bGw6ZC5nZXRQcmV2aW91c1NvdXJjZU5vZGUoITAsZixuKSk6KGQ9YyxkLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKChkPWQuZ2V0Q2hpbGQoZSkpfHwoZD0hMT09PVxubihjLCEwKT9udWxsOmMuZ2V0TmV4dFNvdXJjZU5vZGUoITAsZixuKSkpKSxkJiYhMT09PW4oZCkmJihkPW51bGwpKTtmb3IoO2QmJiF0aGlzLl8uZW5kOyl7dGhpcy5jdXJyZW50PWQ7aWYoIXRoaXMuZXZhbHVhdG9yfHwhMSE9PXRoaXMuZXZhbHVhdG9yKGQpKXtpZighYilyZXR1cm4gZH1lbHNlIGlmKGImJnRoaXMuZXZhbHVhdG9yKXJldHVybiExO2Q9ZFtsXSghMSxmLG4pfXRoaXMuZW5kKCk7cmV0dXJuIHRoaXMuY3VycmVudD1udWxsfWZ1bmN0aW9uIGYoYil7Zm9yKHZhciBnLGQ9bnVsbDtnPWEuY2FsbCh0aGlzLGIpOylkPWc7cmV0dXJuIGR9Q0tFRElUT1IuZG9tLndhbGtlcj1DS0VESVRPUi50b29scy5jcmVhdGVDbGFzcyh7JDpmdW5jdGlvbihhKXt0aGlzLnJhbmdlPWE7dGhpcy5fPXt9fSxwcm90bzp7ZW5kOmZ1bmN0aW9uKCl7dGhpcy5fLmVuZD0xfSxuZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIGEuY2FsbCh0aGlzKX0scHJldmlvdXM6ZnVuY3Rpb24oKXtyZXR1cm4gYS5jYWxsKHRoaXMsXG4xKX0sY2hlY2tGb3J3YXJkOmZ1bmN0aW9uKCl7cmV0dXJuITEhPT1hLmNhbGwodGhpcywwLDEpfSxjaGVja0JhY2t3YXJkOmZ1bmN0aW9uKCl7cmV0dXJuITEhPT1hLmNhbGwodGhpcywxLDEpfSxsYXN0Rm9yd2FyZDpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcyl9LGxhc3RCYWNrd2FyZDpmdW5jdGlvbigpe3JldHVybiBmLmNhbGwodGhpcywxKX0scmVzZXQ6ZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5jdXJyZW50O3RoaXMuXz17fX19fSk7dmFyIGU9e2Jsb2NrOjEsXCJsaXN0LWl0ZW1cIjoxLHRhYmxlOjEsXCJ0YWJsZS1yb3ctZ3JvdXBcIjoxLFwidGFibGUtaGVhZGVyLWdyb3VwXCI6MSxcInRhYmxlLWZvb3Rlci1ncm91cFwiOjEsXCJ0YWJsZS1yb3dcIjoxLFwidGFibGUtY29sdW1uLWdyb3VwXCI6MSxcInRhYmxlLWNvbHVtblwiOjEsXCJ0YWJsZS1jZWxsXCI6MSxcInRhYmxlLWNhcHRpb25cIjoxfSxiPXthYnNvbHV0ZToxLGZpeGVkOjF9O0NLRURJVE9SLmRvbS5lbGVtZW50LnByb3RvdHlwZS5pc0Jsb2NrQm91bmRhcnk9XG5mdW5jdGlvbihhKXtyZXR1cm5cIm5vbmVcIiE9dGhpcy5nZXRDb21wdXRlZFN0eWxlKFwiZmxvYXRcIil8fHRoaXMuZ2V0Q29tcHV0ZWRTdHlsZShcInBvc2l0aW9uXCIpaW4gYnx8IWVbdGhpcy5nZXRDb21wdXRlZFN0eWxlKFwiZGlzcGxheVwiKV0/ISEodGhpcy5pcyhDS0VESVRPUi5kdGQuJGJsb2NrKXx8YSYmdGhpcy5pcyhhKSk6ITB9O0NLRURJVE9SLmRvbS53YWxrZXIuYmxvY2tCb3VuZGFyeT1mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7cmV0dXJuIShiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYi5pc0Jsb2NrQm91bmRhcnkoYSkpfX07Q0tFRElUT1IuZG9tLndhbGtlci5saXN0SXRlbUJvdW5kYXJ5PWZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmxvY2tCb3VuZGFyeSh7YnI6MX0pfTtDS0VESVRPUi5kb20ud2Fsa2VyLmJvb2ttYXJrPWZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYSYmYS5nZXROYW1lJiZcInNwYW5cIj09YS5nZXROYW1lKCkmJmEuZGF0YShcImNrZS1ib29rbWFya1wiKX1cbnJldHVybiBmdW5jdGlvbihkKXt2YXIgYyxlO2M9ZCYmZC50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihlPWQuZ2V0UGFyZW50KCkpJiZnKGUpO2M9YT9jOmN8fGcoZCk7cmV0dXJuISEoYl5jKX19O0NLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBnO2ImJmIudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoZz0hQ0tFRElUT1IudG9vbHMudHJpbShiLmdldFRleHQoKSl8fENLRURJVE9SLmVudi53ZWJraXQmJmIuZ2V0VGV4dCgpPT1DS0VESVRPUi5kb20uc2VsZWN0aW9uLkZJTExJTkdfQ0hBUl9TRVFVRU5DRSk7cmV0dXJuISEoYV5nKX19O0NLRURJVE9SLmRvbS53YWxrZXIuaW52aXNpYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPUNLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXMoKSxnPUNLRURJVE9SLmVudi53ZWJraXQ/MTowO3JldHVybiBmdW5jdGlvbihkKXtiKGQpP2Q9MTooZC50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJlxuKGQ9ZC5nZXRQYXJlbnQoKSksZD1kLiQub2Zmc2V0V2lkdGg8PWcpO3JldHVybiEhKGFeZCl9fTtDS0VESVRPUi5kb20ud2Fsa2VyLm5vZGVUeXBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGcpe3JldHVybiEhKGJeZy50eXBlPT1hKX19O0NLRURJVE9SLmRvbS53YWxrZXIuYm9ndXM9ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXtyZXR1cm4hayhhKSYmIWwoYSl9cmV0dXJuIGZ1bmN0aW9uKGcpe3ZhciBkPUNLRURJVE9SLmVudi5uZWVkc0JyRmlsbGVyP2cuaXMmJmcuaXMoXCJiclwiKTpnLmdldFRleHQmJmMudGVzdChnLmdldFRleHQoKSk7ZCYmKGQ9Zy5nZXRQYXJlbnQoKSxnPWcuZ2V0TmV4dChiKSxkPWQuaXNCbG9ja0JvdW5kYXJ5KCkmJighZ3x8Zy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmcuaXNCbG9ja0JvdW5kYXJ5KCkpKTtyZXR1cm4hIShhXmQpfX07Q0tFRElUT1IuZG9tLndhbGtlci50ZW1wPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtiLnR5cGUhPVxuQ0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYj1iLmdldFBhcmVudCgpKTtiPWImJmIuaGFzQXR0cmlidXRlKFwiZGF0YS1ja2UtdGVtcFwiKTtyZXR1cm4hIShhXmIpfX07dmFyIGM9L15bXFx0XFxyXFxuIF0qKD86Jm5ic3A7fFxceGEwKSQvLGs9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcygpLGw9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyaygpLG09Q0tFRElUT1IuZG9tLndhbGtlci50ZW1wKCksZD1mdW5jdGlvbihhKXtyZXR1cm4gbChhKXx8ayhhKXx8YS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEuaXMoQ0tFRElUT1IuZHRkLiRpbmxpbmUpJiYhYS5pcyhDS0VESVRPUi5kdGQuJGVtcHR5KX07Q0tFRElUT1IuZG9tLndhbGtlci5pZ25vcmVkPWZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbihiKXtiPWsoYil8fGwoYil8fG0oYik7cmV0dXJuISEoYV5iKX19O3ZhciBoPUNLRURJVE9SLmRvbS53YWxrZXIuaWdub3JlZCgpO0NLRURJVE9SLmRvbS53YWxrZXIuZW1wdHk9XG5mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYil7Zm9yKHZhciBnPTAsZD1iLmdldENoaWxkQ291bnQoKTtnPGQ7KytnKWlmKCFoKGIuZ2V0Q2hpbGQoZykpKXJldHVybiEhYTtyZXR1cm4hYX19O3ZhciBnPUNLRURJVE9SLmRvbS53YWxrZXIuZW1wdHkoKSxuPUNLRURJVE9SLmRvbS53YWxrZXIudmFsaWRFbXB0eUJsb2NrQ29udGFpbmVycz1DS0VESVRPUi50b29scy5leHRlbmQoZnVuY3Rpb24oYSl7dmFyIGI9e30sZztmb3IoZyBpbiBhKUNLRURJVE9SLmR0ZFtnXVtcIiNcIl0mJihiW2ddPTEpO3JldHVybiBifShDS0VESVRPUi5kdGQuJGJsb2NrKSx7Y2FwdGlvbjoxLHRkOjEsdGg6MX0pO0NLRURJVE9SLmRvbS53YWxrZXIuZWRpdGFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2I9aChiKT8hMTpiLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVHx8Yi50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihiLmlzKENLRURJVE9SLmR0ZC4kaW5saW5lKXx8Yi5pcyhcImhyXCIpfHxcblwiZmFsc2VcIj09Yi5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIil8fCFDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlciYmYi5pcyhuKSYmZyhiKSk/ITA6ITE7cmV0dXJuISEoYV5iKX19O0NLRURJVE9SLmRvbS5lbGVtZW50LnByb3RvdHlwZS5nZXRCb2d1cz1mdW5jdGlvbigpe3ZhciBhPXRoaXM7ZG8gYT1hLmdldFByZXZpb3VzU291cmNlTm9kZSgpO3doaWxlKGQoYSkpO3JldHVybiBhJiYoQ0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXI/YS5pcyYmYS5pcyhcImJyXCIpOmEuZ2V0VGV4dCYmYy50ZXN0KGEuZ2V0VGV4dCgpKSk/YTohMX19KCksXCJ1c2Ugc3RyaWN0XCIsQ0tFRElUT1IuZG9tLnJhbmdlPWZ1bmN0aW9uKGEpe3RoaXMuZW5kT2Zmc2V0PXRoaXMuZW5kQ29udGFpbmVyPXRoaXMuc3RhcnRPZmZzZXQ9dGhpcy5zdGFydENvbnRhaW5lcj1udWxsO3RoaXMuY29sbGFwc2VkPSEwO3ZhciBmPWEgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uZG9jdW1lbnQ7dGhpcy5kb2N1bWVudD1cbmY/YTphLmdldERvY3VtZW50KCk7dGhpcy5yb290PWY/YS5nZXRCb2R5KCk6YX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2EuY29sbGFwc2VkPWEuc3RhcnRDb250YWluZXImJmEuZW5kQ29udGFpbmVyJiZhLnN0YXJ0Q29udGFpbmVyLmVxdWFscyhhLmVuZENvbnRhaW5lcikmJmEuc3RhcnRPZmZzZXQ9PWEuZW5kT2Zmc2V0fWZ1bmN0aW9uIGYoYSxiLGQsYyxlKXtmdW5jdGlvbiBoKGEsYixnLGQpe3ZhciBjPWc/YS5nZXRQcmV2aW91cygpOmEuZ2V0TmV4dCgpO2lmKGQmJmwpcmV0dXJuIGM7eXx8ZD9iLmFwcGVuZChhLmNsb25lKCEwLGUpLGcpOihhLnJlbW92ZSgpLG0mJmIuYXBwZW5kKGEsZykpO3JldHVybiBjfWZ1bmN0aW9uIGsoKXt2YXIgYSxiLGcsZD1NYXRoLm1pbihILmxlbmd0aCxFLmxlbmd0aCk7Zm9yKGE9MDthPGQ7YSsrKWlmKGI9SFthXSxnPUVbYV0sIWIuZXF1YWxzKGcpKXJldHVybiBhO3JldHVybiBhLTF9ZnVuY3Rpb24gZigpe3ZhciBiPVAtMSxkPUomJksmJlxuIXQuZXF1YWxzKHYpO2I8TC0xfHxiPE4tMXx8ZD8oZD9hLm1vdmVUb1Bvc2l0aW9uKHYsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKTpOPT1iKzEmJkY/YS5tb3ZlVG9Qb3NpdGlvbihFW2JdLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpOmEubW92ZVRvUG9zaXRpb24oRVtiKzFdLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksYyYmKGI9SFtiKzFdKSYmYi50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihkPUNLRURJVE9SLmRvbS5lbGVtZW50LmNyZWF0ZUZyb21IdG1sKCdcXHgzY3NwYW4gZGF0YS1ja2UtYm9va21hcmtcXHgzZFwiMVwiIHN0eWxlXFx4M2RcImRpc3BsYXk6bm9uZVwiXFx4M2VcXHgyNm5ic3A7XFx4M2Mvc3BhblxceDNlJyxhLmRvY3VtZW50KSxkLmluc2VydEFmdGVyKGIpLGIubWVyZ2VTaWJsaW5ncyghMSksYS5tb3ZlVG9Cb29rbWFyayh7c3RhcnROb2RlOmR9KSkpOmEuY29sbGFwc2UoITApfWEub3B0aW1pemVCb29rbWFyaygpO3ZhciBsPTA9PT1cbmIsbT0xPT1iLHk9Mj09YjtiPXl8fG07dmFyIHQ9YS5zdGFydENvbnRhaW5lcix2PWEuZW5kQ29udGFpbmVyLEI9YS5zdGFydE9mZnNldCxEPWEuZW5kT2Zmc2V0LEMsRixKLEssRyxNO2lmKHkmJnYudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYodC5lcXVhbHModil8fHQudHlwZT09PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmdC5nZXRGaXJzdCgpLmVxdWFscyh2KSkpZC5hcHBlbmQoYS5kb2N1bWVudC5jcmVhdGVUZXh0KHYuc3Vic3RyaW5nKEIsRCkpKTtlbHNle3YudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUP3k/TT0hMDp2PXYuc3BsaXQoRCk6MDx2LmdldENoaWxkQ291bnQoKT9EPj12LmdldENoaWxkQ291bnQoKT8odj12LmdldENoaWxkKEQtMSksRj0hMCk6dj12LmdldENoaWxkKEQpOks9Rj0hMDt0LnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVD95P0c9ITA6dC5zcGxpdChCKTowPHQuZ2V0Q2hpbGRDb3VudCgpPzA9PT1CPyh0PXQuZ2V0Q2hpbGQoQiksQz0hMCk6dD10LmdldENoaWxkKEItXG4xKTpKPUM9ITA7Zm9yKHZhciBIPXQuZ2V0UGFyZW50cygpLEU9di5nZXRQYXJlbnRzKCksUD1rKCksTD1ILmxlbmd0aC0xLE49RS5sZW5ndGgtMSxPPWQsWCxTLFksZWE9LTEsVT1QO1U8PUw7VSsrKXtTPUhbVV07WT1TLmdldE5leHQoKTtmb3IoVSE9THx8Uy5lcXVhbHMoRVtVXSkmJkw8Tj9iJiYoWD1PLmFwcGVuZChTLmNsb25lKDAsZSkpKTpDP2goUyxPLCExLEopOkcmJk8uYXBwZW5kKGEuZG9jdW1lbnQuY3JlYXRlVGV4dChTLnN1YnN0cmluZyhCKSkpO1k7KXtpZihZLmVxdWFscyhFW1VdKSl7ZWE9VTticmVha31ZPWgoWSxPKX1PPVh9Tz1kO2ZvcihVPVA7VTw9TjtVKyspaWYoZD1FW1VdLFk9ZC5nZXRQcmV2aW91cygpLGQuZXF1YWxzKEhbVV0pKWImJihPPU8uZ2V0Q2hpbGQoMCkpO2Vsc2V7VSE9Tnx8ZC5lcXVhbHMoSFtVXSkmJk48TD9iJiYoWD1PLmFwcGVuZChkLmNsb25lKDAsZSkpKTpGP2goZCxPLCExLEspOk0mJk8uYXBwZW5kKGEuZG9jdW1lbnQuY3JlYXRlVGV4dChkLnN1YnN0cmluZygwLFxuRCkpKTtpZihVPmVhKWZvcig7WTspWT1oKFksTywhMCk7Tz1YfXl8fGYoKX19ZnVuY3Rpb24gZSgpe3ZhciBhPSExLGI9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcygpLGQ9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyayghMCksYz1DS0VESVRPUi5kb20ud2Fsa2VyLmJvZ3VzKCk7cmV0dXJuIGZ1bmN0aW9uKGUpe3JldHVybiBkKGUpfHxiKGUpPyEwOmMoZSkmJiFhP2E9ITA6ZS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJihlLmhhc0FzY2VuZGFudChcInByZVwiKXx8Q0tFRElUT1IudG9vbHMudHJpbShlLmdldFRleHQoKSkubGVuZ3RoKXx8ZS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJiFlLmlzKGspPyExOiEwfX1mdW5jdGlvbiBiKGEpe3ZhciBiPUNLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXMoKSxkPUNLRURJVE9SLmRvbS53YWxrZXIuYm9va21hcmsoMSk7cmV0dXJuIGZ1bmN0aW9uKGMpe3JldHVybiBkKGMpfHxiKGMpPyEwOiFhJiZsKGMpfHxcbmMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZjLmlzKENLRURJVE9SLmR0ZC4kcmVtb3ZlRW1wdHkpfX1mdW5jdGlvbiBjKGEpe3JldHVybiBmdW5jdGlvbigpe3ZhciBiO3JldHVybiB0aGlzW2E/XCJnZXRQcmV2aW91c05vZGVcIjpcImdldE5leHROb2RlXCJdKGZ1bmN0aW9uKGEpeyFiJiZoKGEpJiYoYj1hKTtyZXR1cm4gZChhKSYmIShsKGEpJiZhLmVxdWFscyhiKSl9KX19dmFyIGs9e2FiYnI6MSxhY3JvbnltOjEsYjoxLGJkbzoxLGJpZzoxLGNpdGU6MSxjb2RlOjEsZGVsOjEsZGZuOjEsZW06MSxmb250OjEsaToxLGluczoxLGxhYmVsOjEsa2JkOjEscToxLHNhbXA6MSxzbWFsbDoxLHNwYW46MSxzdHJpa2U6MSxzdHJvbmc6MSxzdWI6MSxzdXA6MSx0dDoxLHU6MSxcInZhclwiOjF9LGw9Q0tFRElUT1IuZG9tLndhbGtlci5ib2d1cygpLG09L15bXFx0XFxyXFxuIF0qKD86Jm5ic3A7fFxceGEwKSQvLGQ9Q0tFRElUT1IuZG9tLndhbGtlci5lZGl0YWJsZSgpLGg9Q0tFRElUT1IuZG9tLndhbGtlci5pZ25vcmVkKCEwKTtcbkNLRURJVE9SLmRvbS5yYW5nZS5wcm90b3R5cGU9e2Nsb25lOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IENLRURJVE9SLmRvbS5yYW5nZSh0aGlzLnJvb3QpO2EuX3NldFN0YXJ0Q29udGFpbmVyKHRoaXMuc3RhcnRDb250YWluZXIpO2Euc3RhcnRPZmZzZXQ9dGhpcy5zdGFydE9mZnNldDthLl9zZXRFbmRDb250YWluZXIodGhpcy5lbmRDb250YWluZXIpO2EuZW5kT2Zmc2V0PXRoaXMuZW5kT2Zmc2V0O2EuY29sbGFwc2VkPXRoaXMuY29sbGFwc2VkO3JldHVybiBhfSxjb2xsYXBzZTpmdW5jdGlvbihhKXthPyh0aGlzLl9zZXRFbmRDb250YWluZXIodGhpcy5zdGFydENvbnRhaW5lciksdGhpcy5lbmRPZmZzZXQ9dGhpcy5zdGFydE9mZnNldCk6KHRoaXMuX3NldFN0YXJ0Q29udGFpbmVyKHRoaXMuZW5kQ29udGFpbmVyKSx0aGlzLnN0YXJ0T2Zmc2V0PXRoaXMuZW5kT2Zmc2V0KTt0aGlzLmNvbGxhcHNlZD0hMH0sY2xvbmVDb250ZW50czpmdW5jdGlvbihhKXt2YXIgYj1uZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQodGhpcy5kb2N1bWVudCk7XG50aGlzLmNvbGxhcHNlZHx8Zih0aGlzLDIsYiwhMSxcInVuZGVmaW5lZFwiPT10eXBlb2YgYT8hMDphKTtyZXR1cm4gYn0sZGVsZXRlQ29udGVudHM6ZnVuY3Rpb24oYSl7dGhpcy5jb2xsYXBzZWR8fGYodGhpcywwLG51bGwsYSl9LGV4dHJhY3RDb250ZW50czpmdW5jdGlvbihhLGIpe3ZhciBkPW5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudCh0aGlzLmRvY3VtZW50KTt0aGlzLmNvbGxhcHNlZHx8Zih0aGlzLDEsZCxhLFwidW5kZWZpbmVkXCI9PXR5cGVvZiBiPyEwOmIpO3JldHVybiBkfSxlcXVhbHM6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuc3RhcnRPZmZzZXQ9PT1hLnN0YXJ0T2Zmc2V0JiZ0aGlzLmVuZE9mZnNldD09PWEuZW5kT2Zmc2V0JiZ0aGlzLnN0YXJ0Q29udGFpbmVyLmVxdWFscyhhLnN0YXJ0Q29udGFpbmVyKSYmdGhpcy5lbmRDb250YWluZXIuZXF1YWxzKGEuZW5kQ29udGFpbmVyKX0sY3JlYXRlQm9va21hcms6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXtyZXR1cm4gYS5nZXRBc2NlbmRhbnQoZnVuY3Rpb24oYSl7dmFyIGI7XG5pZihiPWEuZGF0YSYmYS5kYXRhKFwiY2tlLXRlbXBcIikpYj0tMT09PUNLRURJVE9SLnRvb2xzLmFycmF5LmluZGV4T2YoW1wiY2tlX2NvcHliaW5cIixcImNrZV9wYXN0ZWJpblwiXSxhLmdldEF0dHJpYnV0ZShcImlkXCIpKTtyZXR1cm4gYn0sITApfXZhciBkPXRoaXMuc3RhcnRDb250YWluZXIsYz10aGlzLmVuZENvbnRhaW5lcixlPXRoaXMuY29sbGFwc2VkLGgsayxmLGw7aD10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzcGFuXCIpO2guZGF0YShcImNrZS1ib29rbWFya1wiLDEpO2guc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJub25lXCIpO2guc2V0SHRtbChcIlxceDI2bmJzcDtcIik7YSYmKGY9XCJja2VfYm1fXCIrQ0tFRElUT1IudG9vbHMuZ2V0TmV4dE51bWJlcigpLGguc2V0QXR0cmlidXRlKFwiaWRcIixmKyhlP1wiQ1wiOlwiU1wiKSkpO2V8fChrPWguY2xvbmUoKSxrLnNldEh0bWwoXCJcXHgyNm5ic3A7XCIpLGEmJmsuc2V0QXR0cmlidXRlKFwiaWRcIixmK1wiRVwiKSxsPXRoaXMuY2xvbmUoKSxiKGMpJiYoYz1iKGMpLFxubC5tb3ZlVG9Qb3NpdGlvbihjLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCkpLGwuY29sbGFwc2UoKSxsLmluc2VydE5vZGUoaykpO2w9dGhpcy5jbG9uZSgpO2IoZCkmJihjPWIoZCksbC5tb3ZlVG9Qb3NpdGlvbihjLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCkpO2wuY29sbGFwc2UoITApO2wuaW5zZXJ0Tm9kZShoKTtrPyh0aGlzLnNldFN0YXJ0QWZ0ZXIoaCksdGhpcy5zZXRFbmRCZWZvcmUoaykpOnRoaXMubW92ZVRvUG9zaXRpb24oaCxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpO3JldHVybntzdGFydE5vZGU6YT9mKyhlP1wiQ1wiOlwiU1wiKTpoLGVuZE5vZGU6YT9mK1wiRVwiOmssc2VyaWFsaXphYmxlOmEsY29sbGFwc2VkOmV9fSxjcmVhdGVCb29rbWFyazI6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3ZhciBnPWIuY29udGFpbmVyLGM9Yi5vZmZzZXQsZTtlPWc7dmFyIGg9YztlPWUudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHwwPT09aHx8aD09ZS5nZXRDaGlsZENvdW50KCk/XG4wOmUuZ2V0Q2hpbGQoaC0xKS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJmUuZ2V0Q2hpbGQoaCkudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUO2UmJihnPWcuZ2V0Q2hpbGQoYy0xKSxjPWcuZ2V0TGVuZ3RoKCkpO2lmKGcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYwPGMpe2E6e2ZvcihlPWc7Yy0tOylpZihoPWUuZ2V0Q2hpbGQoYykuZ2V0SW5kZXgoITApLDA8PWgpe2M9aDticmVhayBhfWM9LTF9Yys9MX1pZihnLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCl7ZT1nO2ZvcihoPTA7KGU9ZS5nZXRQcmV2aW91cygpKSYmZS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQ7KWgrPWUuZ2V0VGV4dCgpLnJlcGxhY2UoQ0tFRElUT1IuZG9tLnNlbGVjdGlvbi5GSUxMSU5HX0NIQVJfU0VRVUVOQ0UsXCJcIikubGVuZ3RoO2U9aDtnLmlzRW1wdHkoKT8oaD1nLmdldFByZXZpb3VzKGQpLGU/KGM9ZSxnPWg/aC5nZXROZXh0KCk6Zy5nZXRQYXJlbnQoKS5nZXRGaXJzdCgpKTooZz1nLmdldFBhcmVudCgpLFxuYz1oP2guZ2V0SW5kZXgoITApKzE6MCkpOmMrPWV9Yi5jb250YWluZXI9ZztiLm9mZnNldD1jfWZ1bmN0aW9uIGIoYSxnKXt2YXIgZD1nLmdldEN1c3RvbURhdGEoXCJja2UtZmlsbGluZ0NoYXJcIik7aWYoZCl7dmFyIGM9YS5jb250YWluZXI7ZC5lcXVhbHMoYykmJihhLm9mZnNldC09Q0tFRElUT1IuZG9tLnNlbGVjdGlvbi5GSUxMSU5HX0NIQVJfU0VRVUVOQ0UubGVuZ3RoLDA+PWEub2Zmc2V0JiYoYS5vZmZzZXQ9Yy5nZXRJbmRleCgpLGEuY29udGFpbmVyPWMuZ2V0UGFyZW50KCkpKX19dmFyIGQ9Q0tFRElUT1IuZG9tLndhbGtlci5ub2RlVHlwZShDS0VESVRPUi5OT0RFX1RFWFQsITApO3JldHVybiBmdW5jdGlvbihkKXt2YXIgYz10aGlzLmNvbGxhcHNlZCxlPXtjb250YWluZXI6dGhpcy5zdGFydENvbnRhaW5lcixvZmZzZXQ6dGhpcy5zdGFydE9mZnNldH0saD17Y29udGFpbmVyOnRoaXMuZW5kQ29udGFpbmVyLG9mZnNldDp0aGlzLmVuZE9mZnNldH07ZCYmKGEoZSksYihlLHRoaXMucm9vdCksXG5jfHwoYShoKSxiKGgsdGhpcy5yb290KSkpO3JldHVybntzdGFydDplLmNvbnRhaW5lci5nZXRBZGRyZXNzKGQpLGVuZDpjP251bGw6aC5jb250YWluZXIuZ2V0QWRkcmVzcyhkKSxzdGFydE9mZnNldDplLm9mZnNldCxlbmRPZmZzZXQ6aC5vZmZzZXQsbm9ybWFsaXplZDpkLGNvbGxhcHNlZDpjLGlzMjohMH19fSgpLG1vdmVUb0Jvb2ttYXJrOmZ1bmN0aW9uKGEpe2lmKGEuaXMyKXt2YXIgYj10aGlzLmRvY3VtZW50LmdldEJ5QWRkcmVzcyhhLnN0YXJ0LGEubm9ybWFsaXplZCksZD1hLnN0YXJ0T2Zmc2V0LGM9YS5lbmQmJnRoaXMuZG9jdW1lbnQuZ2V0QnlBZGRyZXNzKGEuZW5kLGEubm9ybWFsaXplZCk7YT1hLmVuZE9mZnNldDt0aGlzLnNldFN0YXJ0KGIsZCk7Yz90aGlzLnNldEVuZChjLGEpOnRoaXMuY29sbGFwc2UoITApfWVsc2UgYj0oZD1hLnNlcmlhbGl6YWJsZSk/dGhpcy5kb2N1bWVudC5nZXRCeUlkKGEuc3RhcnROb2RlKTphLnN0YXJ0Tm9kZSxhPWQ/dGhpcy5kb2N1bWVudC5nZXRCeUlkKGEuZW5kTm9kZSk6XG5hLmVuZE5vZGUsdGhpcy5zZXRTdGFydEJlZm9yZShiKSxiLnJlbW92ZSgpLGE/KHRoaXMuc2V0RW5kQmVmb3JlKGEpLGEucmVtb3ZlKCkpOnRoaXMuY29sbGFwc2UoITApfSxnZXRCb3VuZGFyeU5vZGVzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5zdGFydENvbnRhaW5lcixiPXRoaXMuZW5kQ29udGFpbmVyLGQ9dGhpcy5zdGFydE9mZnNldCxjPXRoaXMuZW5kT2Zmc2V0LGU7aWYoYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpaWYoZT1hLmdldENoaWxkQ291bnQoKSxlPmQpYT1hLmdldENoaWxkKGQpO2Vsc2UgaWYoMT5lKWE9YS5nZXRQcmV2aW91c1NvdXJjZU5vZGUoKTtlbHNle2ZvcihhPWEuJDthLmxhc3RDaGlsZDspYT1hLmxhc3RDaGlsZDthPW5ldyBDS0VESVRPUi5kb20ubm9kZShhKTthPWEuZ2V0TmV4dFNvdXJjZU5vZGUoKXx8YX1pZihiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVClpZihlPWIuZ2V0Q2hpbGRDb3VudCgpLGU+YyliPWIuZ2V0Q2hpbGQoYykuZ2V0UHJldmlvdXNTb3VyY2VOb2RlKCEwKTtcbmVsc2UgaWYoMT5lKWI9Yi5nZXRQcmV2aW91c1NvdXJjZU5vZGUoKTtlbHNle2ZvcihiPWIuJDtiLmxhc3RDaGlsZDspYj1iLmxhc3RDaGlsZDtiPW5ldyBDS0VESVRPUi5kb20ubm9kZShiKX1hLmdldFBvc2l0aW9uKGIpJkNLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lORyYmKGE9Yik7cmV0dXJue3N0YXJ0Tm9kZTphLGVuZE5vZGU6Yn19LGdldENvbW1vbkFuY2VzdG9yOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5zdGFydENvbnRhaW5lcixjPXRoaXMuZW5kQ29udGFpbmVyLGQ9ZC5lcXVhbHMoYyk/YSYmZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJnRoaXMuc3RhcnRPZmZzZXQ9PXRoaXMuZW5kT2Zmc2V0LTE/ZC5nZXRDaGlsZCh0aGlzLnN0YXJ0T2Zmc2V0KTpkOmQuZ2V0Q29tbW9uQW5jZXN0b3IoYyk7cmV0dXJuIGImJiFkLmlzP2QuZ2V0UGFyZW50KCk6ZH0sb3B0aW1pemU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnN0YXJ0Q29udGFpbmVyLGI9dGhpcy5zdGFydE9mZnNldDtcbmEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYj9iPj1hLmdldExlbmd0aCgpJiZ0aGlzLnNldFN0YXJ0QWZ0ZXIoYSk6dGhpcy5zZXRTdGFydEJlZm9yZShhKSk7YT10aGlzLmVuZENvbnRhaW5lcjtiPXRoaXMuZW5kT2Zmc2V0O2EudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYj9iPj1hLmdldExlbmd0aCgpJiZ0aGlzLnNldEVuZEFmdGVyKGEpOnRoaXMuc2V0RW5kQmVmb3JlKGEpKX0sb3B0aW1pemVCb29rbWFyazpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc3RhcnRDb250YWluZXIsYj10aGlzLmVuZENvbnRhaW5lcjthLmlzJiZhLmlzKFwic3BhblwiKSYmYS5kYXRhKFwiY2tlLWJvb2ttYXJrXCIpJiZ0aGlzLnNldFN0YXJ0QXQoYSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO2ImJmIuaXMmJmIuaXMoXCJzcGFuXCIpJiZiLmRhdGEoXCJja2UtYm9va21hcmtcIikmJnRoaXMuc2V0RW5kQXQoYixDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpfSx0cmltOmZ1bmN0aW9uKGEsXG5iKXt2YXIgZD10aGlzLnN0YXJ0Q29udGFpbmVyLGM9dGhpcy5zdGFydE9mZnNldCxlPXRoaXMuY29sbGFwc2VkO2lmKCghYXx8ZSkmJmQmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUKXtpZihjKWlmKGM+PWQuZ2V0TGVuZ3RoKCkpYz1kLmdldEluZGV4KCkrMSxkPWQuZ2V0UGFyZW50KCk7ZWxzZXt2YXIgaD1kLnNwbGl0KGMpLGM9ZC5nZXRJbmRleCgpKzEsZD1kLmdldFBhcmVudCgpO3RoaXMuc3RhcnRDb250YWluZXIuZXF1YWxzKHRoaXMuZW5kQ29udGFpbmVyKT90aGlzLnNldEVuZChoLHRoaXMuZW5kT2Zmc2V0LXRoaXMuc3RhcnRPZmZzZXQpOmQuZXF1YWxzKHRoaXMuZW5kQ29udGFpbmVyKSYmKHRoaXMuZW5kT2Zmc2V0Kz0xKX1lbHNlIGM9ZC5nZXRJbmRleCgpLGQ9ZC5nZXRQYXJlbnQoKTt0aGlzLnNldFN0YXJ0KGQsYyk7aWYoZSl7dGhpcy5jb2xsYXBzZSghMCk7cmV0dXJufX1kPXRoaXMuZW5kQ29udGFpbmVyO2M9dGhpcy5lbmRPZmZzZXQ7Ynx8ZXx8IWR8fGQudHlwZSE9XG5DS0VESVRPUi5OT0RFX1RFWFR8fChjPyhjPj1kLmdldExlbmd0aCgpfHxkLnNwbGl0KGMpLGM9ZC5nZXRJbmRleCgpKzEpOmM9ZC5nZXRJbmRleCgpLGQ9ZC5nZXRQYXJlbnQoKSx0aGlzLnNldEVuZChkLGMpKX0sZW5sYXJnZTpmdW5jdGlvbihhLGIpe2Z1bmN0aW9uIGQoYSl7cmV0dXJuIGEmJmEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKT9udWxsOmF9ZnVuY3Rpb24gYyhhLGIsZCl7dmFyIGc9bmV3IENLRURJVE9SLmRvbS5yYW5nZShkKTtnLnNldFN0YXJ0KGEsYik7Zy5zZXRFbmRBdChkLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpO2Q9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoZyk7Zm9yKGQuZ3VhcmQ9ZnVuY3Rpb24oYSl7cmV0dXJuIShhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5pc0Jsb2NrQm91bmRhcnkoKSl9O2c9ZC5uZXh0KCk7KXtpZihnLnR5cGUhPUNLRURJVE9SLk5PREVfVEVYVClyZXR1cm4hMTtcbmg9ZyE9YT9nLmdldFRleHQoKTpnLnN1YnN0cmluZyhiKTtpZihlLnRlc3QoaCkpcmV0dXJuITF9cmV0dXJuITB9dmFyIGU9bmV3IFJlZ0V4cCgvW15cXHNcXHVmZWZmXS8pLGgsaztzd2l0Y2goYSl7Y2FzZSBDS0VESVRPUi5FTkxBUkdFX0lOTElORTp2YXIgZj0xO2Nhc2UgQ0tFRElUT1IuRU5MQVJHRV9FTEVNRU5UOmlmKHRoaXMuY29sbGFwc2VkKWJyZWFrO3ZhciBsPXRoaXMuZ2V0Q29tbW9uQW5jZXN0b3IoKTtrPXRoaXMucm9vdDt2YXIgbSx5LHQsdixCLEQ9ITEsQztDPXRoaXMuc3RhcnRDb250YWluZXI7dmFyIEY9dGhpcy5zdGFydE9mZnNldDtDLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVD8oRiYmKEM9IUNLRURJVE9SLnRvb2xzLnRyaW0oQy5zdWJzdHJpbmcoMCxGKSkubGVuZ3RoJiZDLEQ9ISFDKSxDJiYoKHY9Qy5nZXRQcmV2aW91cygpKXx8KHQ9Qy5nZXRQYXJlbnQoKSkpKTooRiYmKHY9Qy5nZXRDaGlsZChGLTEpfHxDLmdldExhc3QoKSksdnx8KHQ9QykpO2Zvcih0PWQodCk7dHx8XG52Oyl7aWYodCYmIXYpeyFCJiZ0LmVxdWFscyhsKSYmKEI9ITApO2lmKGY/dC5pc0Jsb2NrQm91bmRhcnkoKTohay5jb250YWlucyh0KSlicmVhaztEJiZcImlubGluZVwiPT10LmdldENvbXB1dGVkU3R5bGUoXCJkaXNwbGF5XCIpfHwoRD0hMSxCP209dDp0aGlzLnNldFN0YXJ0QmVmb3JlKHQpKTt2PXQuZ2V0UHJldmlvdXMoKX1mb3IoO3Y7KWlmKEM9ITEsdi50eXBlPT1DS0VESVRPUi5OT0RFX0NPTU1FTlQpdj12LmdldFByZXZpb3VzKCk7ZWxzZXtpZih2LnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCloPXYuZ2V0VGV4dCgpLGUudGVzdChoKSYmKHY9bnVsbCksQz0vW1xcc1xcdWZlZmZdJC8udGVzdChoKTtlbHNlIGlmKCh2LiQub2Zmc2V0V2lkdGg+KENLRURJVE9SLmVudi53ZWJraXQ/MTowKXx8YiYmdi5pcyhcImJyXCIpKSYmIXYuZGF0YShcImNrZS1ib29rbWFya1wiKSlpZihEJiZDS0VESVRPUi5kdGQuJHJlbW92ZUVtcHR5W3YuZ2V0TmFtZSgpXSl7aD12LmdldFRleHQoKTtpZihlLnRlc3QoaCkpdj1cbm51bGw7ZWxzZSBmb3IodmFyIEY9di4kLmdldEVsZW1lbnRzQnlUYWdOYW1lKFwiKlwiKSxKPTAsSztLPUZbSisrXTspaWYoIUNLRURJVE9SLmR0ZC4kcmVtb3ZlRW1wdHlbSy5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSl7dj1udWxsO2JyZWFrfXYmJihDPSEhaC5sZW5ndGgpfWVsc2Ugdj1udWxsO0MmJihEP0I/bT10OnQmJnRoaXMuc2V0U3RhcnRCZWZvcmUodCk6RD0hMCk7aWYodil7Qz12LmdldFByZXZpb3VzKCk7aWYoIXQmJiFDKXt0PXY7dj1udWxsO2JyZWFrfXY9Q31lbHNlIHQ9bnVsbH10JiYodD1kKHQuZ2V0UGFyZW50KCkpKX1DPXRoaXMuZW5kQ29udGFpbmVyO0Y9dGhpcy5lbmRPZmZzZXQ7dD12PW51bGw7Qj1EPSExO0MudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUP0NLRURJVE9SLnRvb2xzLnRyaW0oQy5zdWJzdHJpbmcoRikpLmxlbmd0aD9EPSEwOihEPSFDLmdldExlbmd0aCgpLEY9PUMuZ2V0TGVuZ3RoKCk/KHY9Qy5nZXROZXh0KCkpfHwodD1DLmdldFBhcmVudCgpKTpjKEMsXG5GLGspJiYodD1DLmdldFBhcmVudCgpKSk6KHY9Qy5nZXRDaGlsZChGKSl8fCh0PUMpO2Zvcig7dHx8djspe2lmKHQmJiF2KXshQiYmdC5lcXVhbHMobCkmJihCPSEwKTtpZihmP3QuaXNCbG9ja0JvdW5kYXJ5KCk6IWsuY29udGFpbnModCkpYnJlYWs7RCYmXCJpbmxpbmVcIj09dC5nZXRDb21wdXRlZFN0eWxlKFwiZGlzcGxheVwiKXx8KEQ9ITEsQj95PXQ6dCYmdGhpcy5zZXRFbmRBZnRlcih0KSk7dj10LmdldE5leHQoKX1mb3IoO3Y7KXtDPSExO2lmKHYudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUKWg9di5nZXRUZXh0KCksYyh2LDAsayl8fCh2PW51bGwpLEM9L15bXFxzXFx1ZmVmZl0vLnRlc3QoaCk7ZWxzZSBpZih2LnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCl7aWYoKDA8di4kLm9mZnNldFdpZHRofHxiJiZ2LmlzKFwiYnJcIikpJiYhdi5kYXRhKFwiY2tlLWJvb2ttYXJrXCIpKWlmKEQmJkNLRURJVE9SLmR0ZC4kcmVtb3ZlRW1wdHlbdi5nZXROYW1lKCldKXtoPXYuZ2V0VGV4dCgpO2lmKGUudGVzdChoKSl2PVxubnVsbDtlbHNlIGZvcihGPXYuJC5nZXRFbGVtZW50c0J5VGFnTmFtZShcIipcIiksSj0wO0s9RltKKytdOylpZighQ0tFRElUT1IuZHRkLiRyZW1vdmVFbXB0eVtLLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKXt2PW51bGw7YnJlYWt9diYmKEM9ISFoLmxlbmd0aCl9ZWxzZSB2PW51bGx9ZWxzZSBDPTE7QyYmRCYmKEI/eT10OnRoaXMuc2V0RW5kQWZ0ZXIodCkpO2lmKHYpe0M9di5nZXROZXh0KCk7aWYoIXQmJiFDKXt0PXY7dj1udWxsO2JyZWFrfXY9Q31lbHNlIHQ9bnVsbH10JiYodD1kKHQuZ2V0UGFyZW50KCkpKX1tJiZ5JiYobD1tLmNvbnRhaW5zKHkpP3k6bSx0aGlzLnNldFN0YXJ0QmVmb3JlKGwpLHRoaXMuc2V0RW5kQWZ0ZXIobCkpO2JyZWFrO2Nhc2UgQ0tFRElUT1IuRU5MQVJHRV9CTE9DS19DT05URU5UUzpjYXNlIENLRURJVE9SLkVOTEFSR0VfTElTVF9JVEVNX0NPTlRFTlRTOnQ9bmV3IENLRURJVE9SLmRvbS5yYW5nZSh0aGlzLnJvb3QpO2s9dGhpcy5yb290O3Quc2V0U3RhcnRBdChrLFxuQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpO3Quc2V0RW5kKHRoaXMuc3RhcnRDb250YWluZXIsdGhpcy5zdGFydE9mZnNldCk7dD1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcih0KTt2YXIgRyxNLEg9Q0tFRElUT1IuZG9tLndhbGtlci5ibG9ja0JvdW5kYXJ5KGE9PUNLRURJVE9SLkVOTEFSR0VfTElTVF9JVEVNX0NPTlRFTlRTP3ticjoxfTpudWxsKSxFPW51bGwsUD1mdW5jdGlvbihhKXtpZihhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJmYWxzZVwiPT1hLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSlpZihFKXtpZihFLmVxdWFscyhhKSl7RT1udWxsO3JldHVybn19ZWxzZSBFPWE7ZWxzZSBpZihFKXJldHVybjt2YXIgYj1IKGEpO2J8fChHPWEpO3JldHVybiBifSxmPWZ1bmN0aW9uKGEpe3ZhciBiPVAoYSk7IWImJmEuaXMmJmEuaXMoXCJiclwiKSYmKE09YSk7cmV0dXJuIGJ9O3QuZ3VhcmQ9UDt0PXQubGFzdEJhY2t3YXJkKCk7Rz1HfHxrO3RoaXMuc2V0U3RhcnRBdChHLFxuIUcuaXMoXCJiclwiKSYmKCF0JiZ0aGlzLmNoZWNrU3RhcnRPZkJsb2NrKCl8fHQmJkcuY29udGFpbnModCkpP0NLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUOkNLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCk7aWYoYT09Q0tFRElUT1IuRU5MQVJHRV9MSVNUX0lURU1fQ09OVEVOVFMpe3Q9dGhpcy5jbG9uZSgpO3Q9bmV3IENLRURJVE9SLmRvbS53YWxrZXIodCk7dmFyIEw9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcygpLE49Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyaygpO3QuZXZhbHVhdG9yPWZ1bmN0aW9uKGEpe3JldHVybiFMKGEpJiYhTihhKX07aWYoKHQ9dC5wcmV2aW91cygpKSYmdC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJnQuaXMoXCJiclwiKSlicmVha310PXRoaXMuY2xvbmUoKTt0LmNvbGxhcHNlKCk7dC5zZXRFbmRBdChrLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpO3Q9bmV3IENLRURJVE9SLmRvbS53YWxrZXIodCk7dC5ndWFyZD1cbmE9PUNLRURJVE9SLkVOTEFSR0VfTElTVF9JVEVNX0NPTlRFTlRTP2Y6UDtHPUU9TT1udWxsO3Q9dC5sYXN0Rm9yd2FyZCgpO0c9R3x8azt0aGlzLnNldEVuZEF0KEcsIXQmJnRoaXMuY2hlY2tFbmRPZkJsb2NrKCl8fHQmJkcuY29udGFpbnModCk/Q0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORDpDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO00mJnRoaXMuc2V0RW5kQWZ0ZXIoTSl9fSxzaHJpbms6ZnVuY3Rpb24oYSxiLGQpe3ZhciBjPVwiYm9vbGVhblwiPT09dHlwZW9mIGQ/ZDpkJiZcImJvb2xlYW5cIj09PXR5cGVvZiBkLnNocmlua09uQmxvY2tCb3VuZGFyeT9kLnNocmlua09uQmxvY2tCb3VuZGFyeTohMCxlPWQmJmQuc2tpcEJvZ3VzO2lmKCF0aGlzLmNvbGxhcHNlZCl7YT1hfHxDS0VESVRPUi5TSFJJTktfVEVYVDt2YXIgaD10aGlzLmNsb25lKCksaz10aGlzLnN0YXJ0Q29udGFpbmVyLGY9dGhpcy5lbmRDb250YWluZXIsbD10aGlzLnN0YXJ0T2Zmc2V0LG09dGhpcy5lbmRPZmZzZXQsXG55PWQ9MTtrJiZrLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKGw/bD49ay5nZXRMZW5ndGgoKT9oLnNldFN0YXJ0QWZ0ZXIoayk6KGguc2V0U3RhcnRCZWZvcmUoayksZD0wKTpoLnNldFN0YXJ0QmVmb3JlKGspKTtmJiZmLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKG0/bT49Zi5nZXRMZW5ndGgoKT9oLnNldEVuZEFmdGVyKGYpOihoLnNldEVuZEFmdGVyKGYpLHk9MCk6aC5zZXRFbmRCZWZvcmUoZikpO3ZhciBoPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGgpLHQ9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyaygpLHY9Q0tFRElUT1IuZG9tLndhbGtlci5ib2d1cygpO2guZXZhbHVhdG9yPWZ1bmN0aW9uKGIpe3JldHVybiBiLnR5cGU9PShhPT1DS0VESVRPUi5TSFJJTktfRUxFTUVOVD9DS0VESVRPUi5OT0RFX0VMRU1FTlQ6Q0tFRElUT1IuTk9ERV9URVhUKX07dmFyIEI7aC5ndWFyZD1mdW5jdGlvbihiLGQpe2lmKGUmJnYoYil8fHQoYikpcmV0dXJuITA7aWYoYT09Q0tFRElUT1IuU0hSSU5LX0VMRU1FTlQmJlxuYi50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFR8fGQmJmIuZXF1YWxzKEIpfHwhMT09PWMmJmIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZiLmlzQmxvY2tCb3VuZGFyeSgpfHxiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYi5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpcmV0dXJuITE7ZHx8Yi50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlR8fChCPWIpO3JldHVybiEwfTtkJiYoaz1oW2E9PUNLRURJVE9SLlNIUklOS19FTEVNRU5UP1wibGFzdEZvcndhcmRcIjpcIm5leHRcIl0oKSkmJnRoaXMuc2V0U3RhcnRBdChrLGI/Q0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQ6Q0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKTt5JiYoaC5yZXNldCgpLChoPWhbYT09Q0tFRElUT1IuU0hSSU5LX0VMRU1FTlQ/XCJsYXN0QmFja3dhcmRcIjpcInByZXZpb3VzXCJdKCkpJiZ0aGlzLnNldEVuZEF0KGgsYj9DS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EOkNLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCkpO1xucmV0dXJuISghZCYmIXkpfX0saW5zZXJ0Tm9kZTpmdW5jdGlvbihhKXt0aGlzLm9wdGltaXplQm9va21hcmsoKTt0aGlzLnRyaW0oITEsITApO3ZhciBiPXRoaXMuc3RhcnRDb250YWluZXIsZD1iLmdldENoaWxkKHRoaXMuc3RhcnRPZmZzZXQpO2Q/YS5pbnNlcnRCZWZvcmUoZCk6Yi5hcHBlbmQoYSk7YS5nZXRQYXJlbnQoKSYmYS5nZXRQYXJlbnQoKS5lcXVhbHModGhpcy5lbmRDb250YWluZXIpJiZ0aGlzLmVuZE9mZnNldCsrO3RoaXMuc2V0U3RhcnRCZWZvcmUoYSl9LG1vdmVUb1Bvc2l0aW9uOmZ1bmN0aW9uKGEsYil7dGhpcy5zZXRTdGFydEF0KGEsYik7dGhpcy5jb2xsYXBzZSghMCl9LG1vdmVUb1JhbmdlOmZ1bmN0aW9uKGEpe3RoaXMuc2V0U3RhcnQoYS5zdGFydENvbnRhaW5lcixhLnN0YXJ0T2Zmc2V0KTt0aGlzLnNldEVuZChhLmVuZENvbnRhaW5lcixhLmVuZE9mZnNldCl9LHNlbGVjdE5vZGVDb250ZW50czpmdW5jdGlvbihhKXt0aGlzLnNldFN0YXJ0KGEsMCk7dGhpcy5zZXRFbmQoYSxcbmEudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUP2EuZ2V0TGVuZ3RoKCk6YS5nZXRDaGlsZENvdW50KCkpfSxzZXRTdGFydDpmdW5jdGlvbihiLGQpe2IudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZDS0VESVRPUi5kdGQuJGVtcHR5W2IuZ2V0TmFtZSgpXSYmKGQ9Yi5nZXRJbmRleCgpLGI9Yi5nZXRQYXJlbnQoKSk7dGhpcy5fc2V0U3RhcnRDb250YWluZXIoYik7dGhpcy5zdGFydE9mZnNldD1kO3RoaXMuZW5kQ29udGFpbmVyfHwodGhpcy5fc2V0RW5kQ29udGFpbmVyKGIpLHRoaXMuZW5kT2Zmc2V0PWQpO2EodGhpcyl9LHNldEVuZDpmdW5jdGlvbihiLGQpe2IudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZDS0VESVRPUi5kdGQuJGVtcHR5W2IuZ2V0TmFtZSgpXSYmKGQ9Yi5nZXRJbmRleCgpKzEsYj1iLmdldFBhcmVudCgpKTt0aGlzLl9zZXRFbmRDb250YWluZXIoYik7dGhpcy5lbmRPZmZzZXQ9ZDt0aGlzLnN0YXJ0Q29udGFpbmVyfHwodGhpcy5fc2V0U3RhcnRDb250YWluZXIoYiksXG50aGlzLnN0YXJ0T2Zmc2V0PWQpO2EodGhpcyl9LHNldFN0YXJ0QWZ0ZXI6ZnVuY3Rpb24oYSl7dGhpcy5zZXRTdGFydChhLmdldFBhcmVudCgpLGEuZ2V0SW5kZXgoKSsxKX0sc2V0U3RhcnRCZWZvcmU6ZnVuY3Rpb24oYSl7dGhpcy5zZXRTdGFydChhLmdldFBhcmVudCgpLGEuZ2V0SW5kZXgoKSl9LHNldEVuZEFmdGVyOmZ1bmN0aW9uKGEpe3RoaXMuc2V0RW5kKGEuZ2V0UGFyZW50KCksYS5nZXRJbmRleCgpKzEpfSxzZXRFbmRCZWZvcmU6ZnVuY3Rpb24oYSl7dGhpcy5zZXRFbmQoYS5nZXRQYXJlbnQoKSxhLmdldEluZGV4KCkpfSxzZXRTdGFydEF0OmZ1bmN0aW9uKGIsZCl7c3dpdGNoKGQpe2Nhc2UgQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQ6dGhpcy5zZXRTdGFydChiLDApO2JyZWFrO2Nhc2UgQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORDpiLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVD90aGlzLnNldFN0YXJ0KGIsYi5nZXRMZW5ndGgoKSk6dGhpcy5zZXRTdGFydChiLFxuYi5nZXRDaGlsZENvdW50KCkpO2JyZWFrO2Nhc2UgQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUOnRoaXMuc2V0U3RhcnRCZWZvcmUoYik7YnJlYWs7Y2FzZSBDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQ6dGhpcy5zZXRTdGFydEFmdGVyKGIpfWEodGhpcyl9LHNldEVuZEF0OmZ1bmN0aW9uKGIsZCl7c3dpdGNoKGQpe2Nhc2UgQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQ6dGhpcy5zZXRFbmQoYiwwKTticmVhaztjYXNlIENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQ6Yi50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQ/dGhpcy5zZXRFbmQoYixiLmdldExlbmd0aCgpKTp0aGlzLnNldEVuZChiLGIuZ2V0Q2hpbGRDb3VudCgpKTticmVhaztjYXNlIENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVDp0aGlzLnNldEVuZEJlZm9yZShiKTticmVhaztjYXNlIENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORDp0aGlzLnNldEVuZEFmdGVyKGIpfWEodGhpcyl9LGZpeEJsb2NrOmZ1bmN0aW9uKGEsXG5iKXt2YXIgZD10aGlzLmNyZWF0ZUJvb2ttYXJrKCksYz10aGlzLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYik7dGhpcy5jb2xsYXBzZShhKTt0aGlzLmVubGFyZ2UoQ0tFRElUT1IuRU5MQVJHRV9CTE9DS19DT05URU5UUyk7dGhpcy5leHRyYWN0Q29udGVudHMoKS5hcHBlbmRUbyhjKTtjLnRyaW0oKTt0aGlzLmluc2VydE5vZGUoYyk7dmFyIGU9Yy5nZXRCb2d1cygpO2UmJmUucmVtb3ZlKCk7Yy5hcHBlbmRCb2d1cygpO3RoaXMubW92ZVRvQm9va21hcmsoZCk7cmV0dXJuIGN9LHNwbGl0QmxvY2s6ZnVuY3Rpb24oYSxiKXt2YXIgZD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKHRoaXMuc3RhcnRDb250YWluZXIsdGhpcy5yb290KSxjPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgodGhpcy5lbmRDb250YWluZXIsdGhpcy5yb290KSxlPWQuYmxvY2ssaD1jLmJsb2NrLGs9bnVsbDtpZighZC5ibG9ja0xpbWl0LmVxdWFscyhjLmJsb2NrTGltaXQpKXJldHVybiBudWxsO1wiYnJcIiE9XG5hJiYoZXx8KGU9dGhpcy5maXhCbG9jayghMCxhKSxoPShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKHRoaXMuZW5kQ29udGFpbmVyLHRoaXMucm9vdCkpLmJsb2NrKSxofHwoaD10aGlzLmZpeEJsb2NrKCExLGEpKSk7ZD1lJiZ0aGlzLmNoZWNrU3RhcnRPZkJsb2NrKCk7Yz1oJiZ0aGlzLmNoZWNrRW5kT2ZCbG9jaygpO3RoaXMuZGVsZXRlQ29udGVudHMoKTtlJiZlLmVxdWFscyhoKSYmKGM/KGs9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aCh0aGlzLnN0YXJ0Q29udGFpbmVyLHRoaXMucm9vdCksdGhpcy5tb3ZlVG9Qb3NpdGlvbihoLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCksaD1udWxsKTpkPyhrPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgodGhpcy5zdGFydENvbnRhaW5lcix0aGlzLnJvb3QpLHRoaXMubW92ZVRvUG9zaXRpb24oZSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpLGU9bnVsbCk6KGg9dGhpcy5zcGxpdEVsZW1lbnQoZSxifHxcbiExKSxlLmlzKFwidWxcIixcIm9sXCIpfHxlLmFwcGVuZEJvZ3VzKCkpKTtyZXR1cm57cHJldmlvdXNCbG9jazplLG5leHRCbG9jazpoLHdhc1N0YXJ0T2ZCbG9jazpkLHdhc0VuZE9mQmxvY2s6YyxlbGVtZW50UGF0aDprfX0sc3BsaXRFbGVtZW50OmZ1bmN0aW9uKGEsYil7aWYoIXRoaXMuY29sbGFwc2VkKXJldHVybiBudWxsO3RoaXMuc2V0RW5kQXQoYSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKTt2YXIgZD10aGlzLmV4dHJhY3RDb250ZW50cyghMSxifHwhMSksYz1hLmNsb25lKCExLGJ8fCExKTtkLmFwcGVuZFRvKGMpO2MuaW5zZXJ0QWZ0ZXIoYSk7dGhpcy5tb3ZlVG9Qb3NpdGlvbihhLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCk7cmV0dXJuIGN9LHJlbW92ZUVtcHR5QmxvY2tzQXRFbmQ6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe3JldHVybiBmdW5jdGlvbihhKXtyZXR1cm4gYihhKXx8ZChhKXx8YS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEuaXNFbXB0eUlubGluZVJlbW92ZWFibGUoKXx8XG5jLmlzKFwidGFibGVcIikmJmEuaXMoXCJjYXB0aW9uXCIpPyExOiEwfX12YXIgYj1DS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKCksZD1DS0VESVRPUi5kb20ud2Fsa2VyLmJvb2ttYXJrKCExKTtyZXR1cm4gZnVuY3Rpb24oYil7Zm9yKHZhciBkPXRoaXMuY3JlYXRlQm9va21hcmsoKSxjPXRoaXNbYj9cImVuZFBhdGhcIjpcInN0YXJ0UGF0aFwiXSgpLGU9Yy5ibG9ja3x8Yy5ibG9ja0xpbWl0LGg7ZSYmIWUuZXF1YWxzKGMucm9vdCkmJiFlLmdldEZpcnN0KGEoZSkpOyloPWUuZ2V0UGFyZW50KCksdGhpc1tiP1wic2V0RW5kQXRcIjpcInNldFN0YXJ0QXRcIl0oZSxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpLGUucmVtb3ZlKDEpLGU9aDt0aGlzLm1vdmVUb0Jvb2ttYXJrKGQpfX0oKSxzdGFydFBhdGg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aCh0aGlzLnN0YXJ0Q29udGFpbmVyLHRoaXMucm9vdCl9LGVuZFBhdGg6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aCh0aGlzLmVuZENvbnRhaW5lcixcbnRoaXMucm9vdCl9LGNoZWNrQm91bmRhcnlPZkVsZW1lbnQ6ZnVuY3Rpb24oYSxkKXt2YXIgYz1kPT1DS0VESVRPUi5TVEFSVCxlPXRoaXMuY2xvbmUoKTtlLmNvbGxhcHNlKGMpO2VbYz9cInNldFN0YXJ0QXRcIjpcInNldEVuZEF0XCJdKGEsYz9DS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVDpDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKTtlPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGUpO2UuZXZhbHVhdG9yPWIoYyk7cmV0dXJuIGVbYz9cImNoZWNrQmFja3dhcmRcIjpcImNoZWNrRm9yd2FyZFwiXSgpfSxjaGVja1N0YXJ0T2ZCbG9jazpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnN0YXJ0Q29udGFpbmVyLGQ9dGhpcy5zdGFydE9mZnNldDtDS0VESVRPUi5lbnYuaWUmJmQmJmIudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoYj1DS0VESVRPUi50b29scy5sdHJpbShiLnN1YnN0cmluZygwLGQpKSxtLnRlc3QoYikmJnRoaXMudHJpbSgwLDEpKTthfHx0aGlzLnRyaW0oKTthPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgodGhpcy5zdGFydENvbnRhaW5lcixcbnRoaXMucm9vdCk7Yj10aGlzLmNsb25lKCk7Yi5jb2xsYXBzZSghMCk7Yi5zZXRTdGFydEF0KGEuYmxvY2t8fGEuYmxvY2tMaW1pdCxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVCk7YT1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihiKTthLmV2YWx1YXRvcj1lKCk7cmV0dXJuIGEuY2hlY2tCYWNrd2FyZCgpfSxjaGVja0VuZE9mQmxvY2s6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lbmRDb250YWluZXIsZD10aGlzLmVuZE9mZnNldDtDS0VESVRPUi5lbnYuaWUmJmIudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoYj1DS0VESVRPUi50b29scy5ydHJpbShiLnN1YnN0cmluZyhkKSksbS50ZXN0KGIpJiZ0aGlzLnRyaW0oMSwwKSk7YXx8dGhpcy50cmltKCk7YT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKHRoaXMuZW5kQ29udGFpbmVyLHRoaXMucm9vdCk7Yj10aGlzLmNsb25lKCk7Yi5jb2xsYXBzZSghMSk7Yi5zZXRFbmRBdChhLmJsb2NrfHxhLmJsb2NrTGltaXQsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7XG5hPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGIpO2EuZXZhbHVhdG9yPWUoKTtyZXR1cm4gYS5jaGVja0ZvcndhcmQoKX0sZ2V0UHJldmlvdXNOb2RlOmZ1bmN0aW9uKGEsYixkKXt2YXIgYz10aGlzLmNsb25lKCk7Yy5jb2xsYXBzZSgxKTtjLnNldFN0YXJ0QXQoZHx8dGhpcy5yb290LENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKTtkPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGMpO2QuZXZhbHVhdG9yPWE7ZC5ndWFyZD1iO3JldHVybiBkLnByZXZpb3VzKCl9LGdldE5leHROb2RlOmZ1bmN0aW9uKGEsYixkKXt2YXIgYz10aGlzLmNsb25lKCk7Yy5jb2xsYXBzZSgpO2Muc2V0RW5kQXQoZHx8dGhpcy5yb290LENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpO2Q9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYyk7ZC5ldmFsdWF0b3I9YTtkLmd1YXJkPWI7cmV0dXJuIGQubmV4dCgpfSxjaGVja1JlYWRPbmx5OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe2Zvcig7Yjspe2lmKGIudHlwZT09XG5DS0VESVRPUi5OT0RFX0VMRU1FTlQpe2lmKFwiZmFsc2VcIj09Yi5nZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIikmJiFiLmRhdGEoXCJja2UtZWRpdGFibGVcIikpcmV0dXJuIDA7aWYoYi5pcyhcImh0bWxcIil8fFwidHJ1ZVwiPT1iLmdldEF0dHJpYnV0ZShcImNvbnRlbnRFZGl0YWJsZVwiKSYmKGIuY29udGFpbnMoZCl8fGIuZXF1YWxzKGQpKSlicmVha31iPWIuZ2V0UGFyZW50KCl9cmV0dXJuIDF9cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zdGFydENvbnRhaW5lcixkPXRoaXMuZW5kQ29udGFpbmVyO3JldHVybiEoYShiLGQpJiZhKGQsYikpfX0oKSxtb3ZlVG9FbGVtZW50RWRpdGFibGVQb3NpdGlvbjpmdW5jdGlvbihhLGIpe2lmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYhYS5pc0VkaXRhYmxlKCExKSlyZXR1cm4gdGhpcy5tb3ZlVG9Qb3NpdGlvbihhLGI/Q0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EOkNLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksXG4hMDtmb3IodmFyIGQ9MDthOyl7aWYoYS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQpe2ImJnRoaXMuZW5kQ29udGFpbmVyJiZ0aGlzLmNoZWNrRW5kT2ZCbG9jaygpJiZtLnRlc3QoYS5nZXRUZXh0KCkpP3RoaXMubW92ZVRvUG9zaXRpb24oYSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpOnRoaXMubW92ZVRvUG9zaXRpb24oYSxiP0NLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORDpDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO2Q9MTticmVha31pZihhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVClpZihhLmlzRWRpdGFibGUoKSl0aGlzLm1vdmVUb1Bvc2l0aW9uKGEsYj9DS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EOkNLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSxkPTE7ZWxzZSBpZihiJiZhLmlzKFwiYnJcIikmJnRoaXMuZW5kQ29udGFpbmVyJiZ0aGlzLmNoZWNrRW5kT2ZCbG9jaygpKXRoaXMubW92ZVRvUG9zaXRpb24oYSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO1xuZWxzZSBpZihcImZhbHNlXCI9PWEuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpJiZhLmlzKENLRURJVE9SLmR0ZC4kYmxvY2spKXJldHVybiB0aGlzLnNldFN0YXJ0QmVmb3JlKGEpLHRoaXMuc2V0RW5kQWZ0ZXIoYSksITA7dmFyIGM9YSxlPWQsaz12b2lkIDA7Yy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmMuaXNFZGl0YWJsZSghMSkmJihrPWNbYj9cImdldExhc3RcIjpcImdldEZpcnN0XCJdKGgpKTtlfHxrfHwoaz1jW2I/XCJnZXRQcmV2aW91c1wiOlwiZ2V0TmV4dFwiXShoKSk7YT1rfXJldHVybiEhZH0sbW92ZVRvQ2xvc2VzdEVkaXRhYmxlUG9zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgZCxjPTAsZSxoLGs9W0NLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlRdO2E/KGQ9bmV3IENLRURJVE9SLmRvbS5yYW5nZSh0aGlzLnJvb3QpLGQubW92ZVRvUG9zaXRpb24oYSxrW2I/MDoxXSkpOmQ9dGhpcy5jbG9uZSgpO2lmKGEmJlxuIWEuaXMoQ0tFRElUT1IuZHRkLiRibG9jaykpYz0xO2Vsc2UgaWYoZT1kW2I/XCJnZXROZXh0RWRpdGFibGVOb2RlXCI6XCJnZXRQcmV2aW91c0VkaXRhYmxlTm9kZVwiXSgpKWM9MSwoaD1lLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCkmJmUuaXMoQ0tFRElUT1IuZHRkLiRibG9jaykmJlwiZmFsc2VcIj09ZS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik/KGQuc2V0U3RhcnRBdChlLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksZC5zZXRFbmRBdChlLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCkpOiFDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlciYmaCYmZS5pcyhDS0VESVRPUi5kb20ud2Fsa2VyLnZhbGlkRW1wdHlCbG9ja0NvbnRhaW5lcnMpPyhkLnNldEVuZChlLDApLGQuY29sbGFwc2UoKSk6ZC5tb3ZlVG9Qb3NpdGlvbihlLGtbYj8xOjBdKTtjJiZ0aGlzLm1vdmVUb1JhbmdlKGQpO3JldHVybiEhY30sbW92ZVRvRWxlbWVudEVkaXRTdGFydDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tb3ZlVG9FbGVtZW50RWRpdGFibGVQb3NpdGlvbihhKX0sXG5tb3ZlVG9FbGVtZW50RWRpdEVuZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5tb3ZlVG9FbGVtZW50RWRpdGFibGVQb3NpdGlvbihhLCEwKX0sZ2V0RW5jbG9zZWROb2RlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5jbG9uZSgpO2Eub3B0aW1pemUoKTtpZihhLnN0YXJ0Q29udGFpbmVyLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVHx8YS5lbmRDb250YWluZXIudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXJldHVybiBudWxsO3ZhciBhPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGEpLGI9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyayghMSwhMCksZD1DS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKCEwKTthLmV2YWx1YXRvcj1mdW5jdGlvbihhKXtyZXR1cm4gZChhKSYmYihhKX07dmFyIGM9YS5uZXh0KCk7YS5yZXNldCgpO3JldHVybiBjJiZjLmVxdWFscyhhLnByZXZpb3VzKCkpP2M6bnVsbH0sZ2V0VG91Y2hlZFN0YXJ0Tm9kZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc3RhcnRDb250YWluZXI7XG5yZXR1cm4gdGhpcy5jb2xsYXBzZWR8fGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UP2E6YS5nZXRDaGlsZCh0aGlzLnN0YXJ0T2Zmc2V0KXx8YX0sZ2V0VG91Y2hlZEVuZE5vZGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVuZENvbnRhaW5lcjtyZXR1cm4gdGhpcy5jb2xsYXBzZWR8fGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UP2E6YS5nZXRDaGlsZCh0aGlzLmVuZE9mZnNldC0xKXx8YX0sZ2V0TmV4dEVkaXRhYmxlTm9kZTpjKCksZ2V0UHJldmlvdXNFZGl0YWJsZU5vZGU6YygxKSxfZ2V0VGFibGVFbGVtZW50OmZ1bmN0aW9uKGEpe2E9YXx8e3RkOjEsdGg6MSx0cjoxLHRib2R5OjEsdGhlYWQ6MSx0Zm9vdDoxLHRhYmxlOjF9O3ZhciBiPXRoaXMuZ2V0VG91Y2hlZFN0YXJ0Tm9kZSgpLGQ9dGhpcy5nZXRUb3VjaGVkRW5kTm9kZSgpLGM9Yi5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSxkPWQuZ2V0QXNjZW5kYW50KFwidGFibGVcIiwhMCk7cmV0dXJuIGMmJiF0aGlzLnJvb3QuY29udGFpbnMoYyk/XG5udWxsOnRoaXMuZ2V0RW5jbG9zZWROb2RlKCk/dGhpcy5nZXRFbmNsb3NlZE5vZGUoKS5nZXRBc2NlbmRhbnQoYSwhMCk6YyYmZCYmKGMuZXF1YWxzKGQpfHxjLmNvbnRhaW5zKGQpfHxkLmNvbnRhaW5zKGMpKT9iLmdldEFzY2VuZGFudChhLCEwKTpudWxsfSxzY3JvbGxJbnRvVmlldzpmdW5jdGlvbigpe3ZhciBhPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChcIlxceDNjc3BhblxceDNlXFx4MjZuYnNwO1xceDNjL3NwYW5cXHgzZVwiLHRoaXMuZG9jdW1lbnQpLGIsZCxjLGU9dGhpcy5jbG9uZSgpO2Uub3B0aW1pemUoKTsoYz1lLnN0YXJ0Q29udGFpbmVyLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCk/KGQ9ZS5zdGFydENvbnRhaW5lci5nZXRUZXh0KCksYj1lLnN0YXJ0Q29udGFpbmVyLnNwbGl0KGUuc3RhcnRPZmZzZXQpLGEuaW5zZXJ0QWZ0ZXIoZS5zdGFydENvbnRhaW5lcikpOmUuaW5zZXJ0Tm9kZShhKTthLnNjcm9sbEludG9WaWV3KCk7YyYmKGUuc3RhcnRDb250YWluZXIuc2V0VGV4dChkKSxcbmIucmVtb3ZlKCkpO2EucmVtb3ZlKCl9LGdldENsaWVudFJlY3RzOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe3ZhciBjPUNLRURJVE9SLnRvb2xzLmFycmF5Lm1hcChiLGZ1bmN0aW9uKGEpe3JldHVybiBhfSksZz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKGQucm9vdCksZSxoLGs7ZC5zdGFydENvbnRhaW5lciBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50JiYoaD0wPT09ZC5zdGFydE9mZnNldCYmZC5zdGFydENvbnRhaW5lci5oYXNBdHRyaWJ1dGUoXCJkYXRhLXdpZGdldFwiKSk7ZC5lbmRDb250YWluZXIgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uZWxlbWVudCYmKGs9KGs9ZC5lbmRPZmZzZXQ9PT0oZC5lbmRDb250YWluZXIuZ2V0Q2hpbGRDb3VudD9kLmVuZENvbnRhaW5lci5nZXRDaGlsZENvdW50KCk6ZC5lbmRDb250YWluZXIubGVuZ3RoKSkmJmQuZW5kQ29udGFpbmVyLmhhc0F0dHJpYnV0ZShcImRhdGEtd2lkZ2V0XCIpKTtoJiZnLnNldFN0YXJ0KGQuc3RhcnRDb250YWluZXIuZ2V0UGFyZW50KCksXG5kLnN0YXJ0Q29udGFpbmVyLmdldEluZGV4KCkpO2smJmcuc2V0RW5kKGQuZW5kQ29udGFpbmVyLmdldFBhcmVudCgpLGQuZW5kQ29udGFpbmVyLmdldEluZGV4KCkrMSk7aWYoaHx8aylkPWc7Zz1kLmNsb25lQ29udGVudHMoKS5maW5kKFwiW2RhdGEtY2tlLXdpZGdldC1pZF1cIikudG9BcnJheSgpO2lmKGc9Q0tFRElUT1IudG9vbHMuYXJyYXkubWFwKGcsZnVuY3Rpb24oYSl7dmFyIGI9ZC5yb290LmVkaXRvcjthPWEuZ2V0QXR0cmlidXRlKFwiZGF0YS1ja2Utd2lkZ2V0LWlkXCIpO3JldHVybiBiLndpZGdldHMuaW5zdGFuY2VzW2FdLmVsZW1lbnR9KSlyZXR1cm4gZz1DS0VESVRPUi50b29scy5hcnJheS5tYXAoZyxmdW5jdGlvbihhKXt2YXIgYjtiPWEuZ2V0UGFyZW50KCkuaGFzQ2xhc3MoXCJja2Vfd2lkZ2V0X3dyYXBwZXJcIik/YS5nZXRQYXJlbnQoKTphO2U9dGhpcy5yb290LmdldERvY3VtZW50KCkuJC5jcmVhdGVSYW5nZSgpO2Uuc2V0U3RhcnQoYi5nZXRQYXJlbnQoKS4kLGIuZ2V0SW5kZXgoKSk7XG5lLnNldEVuZChiLmdldFBhcmVudCgpLiQsYi5nZXRJbmRleCgpKzEpO2I9ZS5nZXRDbGllbnRSZWN0cygpO2Iud2lkZ2V0UmVjdD1hLmdldENsaWVudFJlY3QoKTtyZXR1cm4gYn0sZCksQ0tFRElUT1IudG9vbHMuYXJyYXkuZm9yRWFjaChnLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoZyl7Q0tFRElUT1IudG9vbHMuYXJyYXkuZm9yRWFjaChjLGZ1bmN0aW9uKGIsZSl7dmFyIGg9Q0tFRElUT1IudG9vbHMub2JqZWN0Q29tcGFyZShhW2ddLGIpO2h8fChoPUNLRURJVE9SLnRvb2xzLm9iamVjdENvbXBhcmUoYS53aWRnZXRSZWN0LGIpKTtoJiYoQXJyYXkucHJvdG90eXBlLnNwbGljZS5jYWxsKGMsZSxhLmxlbmd0aC1nLGEud2lkZ2V0UmVjdCksZD0hMCl9KTtkfHwoZzxjLmxlbmd0aC0xP2IoZysxKTpjLnB1c2goYS53aWRnZXRSZWN0KSl9dmFyIGQ7YigwKX0pLGN9ZnVuY3Rpb24gYihhLGQsZyl7dmFyIGU7ZC5jb2xsYXBzZWQ/Zy5zdGFydENvbnRhaW5lciBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50P1xuKGE9Zy5jaGVja1N0YXJ0T2ZCbG9jaygpLGU9bmV3IENLRURJVE9SLmRvbS50ZXh0KFwi4oCLXCIpLGE/Zy5zdGFydENvbnRhaW5lci5hcHBlbmQoZSwhMCk6MD09PWcuc3RhcnRPZmZzZXQ/ZS5pbnNlcnRCZWZvcmUoZy5zdGFydENvbnRhaW5lci5nZXRGaXJzdCgpKTooZz1nLnN0YXJ0Q29udGFpbmVyLmdldENoaWxkcmVuKCkuZ2V0SXRlbShnLnN0YXJ0T2Zmc2V0LTEpLGUuaW5zZXJ0QWZ0ZXIoZykpLGQuc2V0U3RhcnQoZS4kLDApLGQuc2V0RW5kKGUuJCwwKSxhPWQuZ2V0Q2xpZW50UmVjdHMoKSxlLnJlbW92ZSgpKTpnLnN0YXJ0Q29udGFpbmVyIGluc3RhbmNlb2YgQ0tFRElUT1IuZG9tLnRleHQmJihcIlwiPT09Zy5zdGFydENvbnRhaW5lci5nZXRUZXh0KCk/KGcuc3RhcnRDb250YWluZXIuc2V0VGV4dChcIuKAi1wiKSxhPWQuZ2V0Q2xpZW50UmVjdHMoKSxnLnN0YXJ0Q29udGFpbmVyLnNldFRleHQoXCJcIikpOmE9W2MoZy5jcmVhdGVCb29rbWFyaygpKV0pOmE9W2MoZy5jcmVhdGVCb29rbWFyaygpKV07XG5yZXR1cm4gYX1mdW5jdGlvbiBkKGEsYixjKXthPUNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxhKTtiJiYoYT1DS0VESVRPUi50b29scy5nZXRBYnNvbHV0ZVJlY3RQb3NpdGlvbihjLmRvY3VtZW50LmdldFdpbmRvdygpLGEpKTshYS53aWR0aCYmKGEud2lkdGg9YS5yaWdodC1hLmxlZnQpOyFhLmhlaWdodCYmKGEuaGVpZ2h0PWEuYm90dG9tLWEudG9wKTtyZXR1cm4gYX1mdW5jdGlvbiBjKGEpe3ZhciBiPWEuc3RhcnROb2RlO2E9YS5lbmROb2RlO3ZhciBkO2Iuc2V0VGV4dChcIuKAi1wiKTtiLnJlbW92ZVN0eWxlKFwiZGlzcGxheVwiKTthPyhhLnNldFRleHQoXCLigItcIiksYS5yZW1vdmVTdHlsZShcImRpc3BsYXlcIiksZD1bYi5nZXRDbGllbnRSZWN0KCksYS5nZXRDbGllbnRSZWN0KCldLGEucmVtb3ZlKCkpOmQ9W2IuZ2V0Q2xpZW50UmVjdCgpLGIuZ2V0Q2xpZW50UmVjdCgpXTtiLnJlbW92ZSgpO3JldHVybntyaWdodDpNYXRoLm1heChkWzBdLnJpZ2h0LGRbMV0ucmlnaHQpLGJvdHRvbTpNYXRoLm1heChkWzBdLmJvdHRvbSxcbmRbMV0uYm90dG9tKSxsZWZ0Ok1hdGgubWluKGRbMF0ubGVmdCxkWzFdLmxlZnQpLHRvcDpNYXRoLm1pbihkWzBdLnRvcCxkWzFdLnRvcCksd2lkdGg6TWF0aC5hYnMoZFswXS5sZWZ0LWRbMV0ubGVmdCksaGVpZ2h0Ok1hdGgubWF4KGRbMF0uYm90dG9tLGRbMV0uYm90dG9tKS1NYXRoLm1pbihkWzBdLnRvcCxkWzFdLnRvcCl9fXJldHVybiB2b2lkIDAhPT1kb2N1bWVudC5nZXRTZWxlY3Rpb24/ZnVuY3Rpb24oYyl7dmFyIGU9dGhpcy5yb290LmdldERvY3VtZW50KCkuJC5jcmVhdGVSYW5nZSgpLGg7ZS5zZXRTdGFydCh0aGlzLnN0YXJ0Q29udGFpbmVyLiQsdGhpcy5zdGFydE9mZnNldCk7ZS5zZXRFbmQodGhpcy5lbmRDb250YWluZXIuJCx0aGlzLmVuZE9mZnNldCk7aD1lLmdldENsaWVudFJlY3RzKCk7aD1hKGgsdGhpcyk7aC5sZW5ndGh8fChoPWIoaCxlLHRoaXMpKTtyZXR1cm4gQ0tFRElUT1IudG9vbHMuYXJyYXkubWFwKGgsZnVuY3Rpb24oYSl7cmV0dXJuIGQoYSxjLHRoaXMpfSxcbnRoaXMpfTpmdW5jdGlvbihhKXtyZXR1cm5bZChjKHRoaXMuY3JlYXRlQm9va21hcmsoKSksYSx0aGlzKV19fSgpLF9zZXRTdGFydENvbnRhaW5lcjpmdW5jdGlvbihhKXt0aGlzLnN0YXJ0Q29udGFpbmVyPWF9LF9zZXRFbmRDb250YWluZXI6ZnVuY3Rpb24oYSl7dGhpcy5lbmRDb250YWluZXI9YX0sX2ZpbmQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLmdldENvbW1vbkFuY2VzdG9yKCksYz10aGlzLmdldEJvdW5kYXJ5Tm9kZXMoKSxlPVtdLGgsayxmLGw7aWYoZCYmZC5maW5kKWZvcihrPWQuZmluZChhKSxoPTA7aDxrLmNvdW50KCk7aCsrKWlmKGQ9ay5nZXRJdGVtKGgpLGJ8fCFkLmlzUmVhZE9ubHkoKSlmPWQuZ2V0UG9zaXRpb24oYy5zdGFydE5vZGUpJkNLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lOR3x8Yy5zdGFydE5vZGUuZXF1YWxzKGQpLGw9ZC5nZXRQb3NpdGlvbihjLmVuZE5vZGUpJkNLRURJVE9SLlBPU0lUSU9OX1BSRUNFRElORytDS0VESVRPUi5QT1NJVElPTl9JU19DT05UQUlORUR8fFxuYy5lbmROb2RlLmVxdWFscyhkKSxmJiZsJiZlLnB1c2goZCk7cmV0dXJuIGV9fTtDS0VESVRPUi5kb20ucmFuZ2UubWVyZ2VSYW5nZXM9ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5LnJlZHVjZShhLGZ1bmN0aW9uKGEsYil7dmFyIGQ9YVthLmxlbmd0aC0xXSxjPSExO2I9Yi5jbG9uZSgpO2IuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0VMRU1FTlQpO2lmKGQpe3ZhciBnPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UoYi5yb290KSxjPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGcpLGU9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcygpO2cuc2V0U3RhcnQoZC5lbmRDb250YWluZXIsZC5lbmRPZmZzZXQpO2cuc2V0RW5kKGIuc3RhcnRDb250YWluZXIsYi5zdGFydE9mZnNldCk7Zm9yKGc9Yy5uZXh0KCk7ZShnKXx8Yi5lbmRDb250YWluZXIuZXF1YWxzKGcpOylnPWMubmV4dCgpO2M9IWd9Yz9kLnNldEVuZChiLmVuZENvbnRhaW5lcixiLmVuZE9mZnNldCk6XG5hLnB1c2goYik7cmV0dXJuIGF9LFtdKX19KCksQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQ9MSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EPTIsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUPTMsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EPTQsQ0tFRElUT1IuRU5MQVJHRV9FTEVNRU5UPTEsQ0tFRElUT1IuRU5MQVJHRV9CTE9DS19DT05URU5UUz0yLENLRURJVE9SLkVOTEFSR0VfTElTVF9JVEVNX0NPTlRFTlRTPTMsQ0tFRElUT1IuRU5MQVJHRV9JTkxJTkU9NCxDS0VESVRPUi5TVEFSVD0xLENLRURJVE9SLkVORD0yLENLRURJVE9SLlNIUklOS19FTEVNRU5UPTEsQ0tFRElUT1IuU0hSSU5LX1RFWFQ9MixcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7MT5hcmd1bWVudHMubGVuZ3RofHwodGhpcy5yYW5nZT1hLHRoaXMuZm9yY2VCckJyZWFrPTAsdGhpcy5lbmxhcmdlQnI9MSx0aGlzLmVuZm9yY2VSZWFsQmxvY2tzPTAsdGhpcy5ffHxcbih0aGlzLl89e30pKX1mdW5jdGlvbiBmKGEpe3ZhciBiPVtdO2EuZm9yRWFjaChmdW5jdGlvbihhKXtpZihcInRydWVcIj09YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpcmV0dXJuIGIucHVzaChhKSwhMX0sQ0tFRElUT1IuTk9ERV9FTEVNRU5ULCEwKTtyZXR1cm4gYn1mdW5jdGlvbiBlKGEsYixkLGMpe2E6e251bGw9PWMmJihjPWYoZCkpO2Zvcih2YXIgaztrPWMuc2hpZnQoKTspaWYoay5nZXREdGQoKS5wKXtjPXtlbGVtZW50OmsscmVtYWluaW5nOmN9O2JyZWFrIGF9Yz1udWxsfWlmKCFjKXJldHVybiAwO2lmKChrPUNLRURJVE9SLmZpbHRlci5pbnN0YW5jZXNbYy5lbGVtZW50LmRhdGEoXCJja2UtZmlsdGVyXCIpXSkmJiFrLmNoZWNrKGIpKXJldHVybiBlKGEsYixkLGMucmVtYWluaW5nKTtiPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UoYy5lbGVtZW50KTtiLnNlbGVjdE5vZGVDb250ZW50cyhjLmVsZW1lbnQpO2I9Yi5jcmVhdGVJdGVyYXRvcigpO2IuZW5sYXJnZUJyPVxuYS5lbmxhcmdlQnI7Yi5lbmZvcmNlUmVhbEJsb2Nrcz1hLmVuZm9yY2VSZWFsQmxvY2tzO2IuYWN0aXZlRmlsdGVyPWIuZmlsdGVyPWs7YS5fLm5lc3RlZEVkaXRhYmxlPXtlbGVtZW50OmMuZWxlbWVudCxjb250YWluZXI6ZCxyZW1haW5pbmc6Yy5yZW1haW5pbmcsaXRlcmF0b3I6Yn07cmV0dXJuIDF9ZnVuY3Rpb24gYihhLGIsZCl7aWYoIWIpcmV0dXJuITE7YT1hLmNsb25lKCk7YS5jb2xsYXBzZSghZCk7cmV0dXJuIGEuY2hlY2tCb3VuZGFyeU9mRWxlbWVudChiLGQ/Q0tFRElUT1IuU1RBUlQ6Q0tFRElUT1IuRU5EKX12YXIgYz0vXltcXHJcXG5cXHQgXSskLyxrPUNLRURJVE9SLmRvbS53YWxrZXIuYm9va21hcmsoITEsITApLGw9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcyghMCksbT1mdW5jdGlvbihhKXtyZXR1cm4gayhhKSYmbChhKX0sZD17ZGQ6MSxkdDoxLGxpOjF9O2EucHJvdG90eXBlPXtnZXROZXh0UGFyYWdyYXBoOmZ1bmN0aW9uKGEpe3ZhciBnLGYsbCx4LHI7XG5hPWF8fFwicFwiO2lmKHRoaXMuXy5uZXN0ZWRFZGl0YWJsZSl7aWYoZz10aGlzLl8ubmVzdGVkRWRpdGFibGUuaXRlcmF0b3IuZ2V0TmV4dFBhcmFncmFwaChhKSlyZXR1cm4gdGhpcy5hY3RpdmVGaWx0ZXI9dGhpcy5fLm5lc3RlZEVkaXRhYmxlLml0ZXJhdG9yLmFjdGl2ZUZpbHRlcixnO3RoaXMuYWN0aXZlRmlsdGVyPXRoaXMuZmlsdGVyO2lmKGUodGhpcyxhLHRoaXMuXy5uZXN0ZWRFZGl0YWJsZS5jb250YWluZXIsdGhpcy5fLm5lc3RlZEVkaXRhYmxlLnJlbWFpbmluZykpcmV0dXJuIHRoaXMuYWN0aXZlRmlsdGVyPXRoaXMuXy5uZXN0ZWRFZGl0YWJsZS5pdGVyYXRvci5hY3RpdmVGaWx0ZXIsdGhpcy5fLm5lc3RlZEVkaXRhYmxlLml0ZXJhdG9yLmdldE5leHRQYXJhZ3JhcGgoYSk7dGhpcy5fLm5lc3RlZEVkaXRhYmxlPW51bGx9aWYoIXRoaXMucmFuZ2Uucm9vdC5nZXREdGQoKVthXSlyZXR1cm4gbnVsbDtpZighdGhpcy5fLnN0YXJ0ZWQpe3ZhciBwPXRoaXMucmFuZ2UuY2xvbmUoKTtcbmY9cC5zdGFydFBhdGgoKTt2YXIgdT1wLmVuZFBhdGgoKSx6PSFwLmNvbGxhcHNlZCYmYihwLGYuYmxvY2spLHE9IXAuY29sbGFwc2VkJiZiKHAsdS5ibG9jaywxKTtwLnNocmluayhDS0VESVRPUi5TSFJJTktfRUxFTUVOVCwhMCk7eiYmcC5zZXRTdGFydEF0KGYuYmxvY2ssQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7cSYmcC5zZXRFbmRBdCh1LmJsb2NrLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKTtmPXAuZW5kQ29udGFpbmVyLmhhc0FzY2VuZGFudChcInByZVwiLCEwKXx8cC5zdGFydENvbnRhaW5lci5oYXNBc2NlbmRhbnQoXCJwcmVcIiwhMCk7cC5lbmxhcmdlKHRoaXMuZm9yY2VCckJyZWFrJiYhZnx8IXRoaXMuZW5sYXJnZUJyP0NLRURJVE9SLkVOTEFSR0VfTElTVF9JVEVNX0NPTlRFTlRTOkNLRURJVE9SLkVOTEFSR0VfQkxPQ0tfQ09OVEVOVFMpO3AuY29sbGFwc2VkfHwoZj1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihwLmNsb25lKCkpLHU9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyayghMCxcbiEwKSxmLmV2YWx1YXRvcj11LHRoaXMuXy5uZXh0Tm9kZT1mLm5leHQoKSxmPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKHAuY2xvbmUoKSksZi5ldmFsdWF0b3I9dSxmPWYucHJldmlvdXMoKSx0aGlzLl8ubGFzdE5vZGU9Zi5nZXROZXh0U291cmNlTm9kZSghMCxudWxsLHAucm9vdCksdGhpcy5fLmxhc3ROb2RlJiZ0aGlzLl8ubGFzdE5vZGUudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYhQ0tFRElUT1IudG9vbHMudHJpbSh0aGlzLl8ubGFzdE5vZGUuZ2V0VGV4dCgpKSYmdGhpcy5fLmxhc3ROb2RlLmdldFBhcmVudCgpLmlzQmxvY2tCb3VuZGFyeSgpJiYodT10aGlzLnJhbmdlLmNsb25lKCksdS5tb3ZlVG9Qb3NpdGlvbih0aGlzLl8ubGFzdE5vZGUsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EKSx1LmNoZWNrRW5kT2ZCbG9jaygpJiYodT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKHUuZW5kQ29udGFpbmVyLHUucm9vdCksdGhpcy5fLmxhc3ROb2RlPSh1LmJsb2NrfHxcbnUuYmxvY2tMaW1pdCkuZ2V0TmV4dFNvdXJjZU5vZGUoITApKSksdGhpcy5fLmxhc3ROb2RlJiZwLnJvb3QuY29udGFpbnModGhpcy5fLmxhc3ROb2RlKXx8KHRoaXMuXy5sYXN0Tm9kZT10aGlzLl8uZG9jRW5kTWFya2VyPXAuZG9jdW1lbnQuY3JlYXRlVGV4dChcIlwiKSx0aGlzLl8ubGFzdE5vZGUuaW5zZXJ0QWZ0ZXIoZikpLHA9bnVsbCk7dGhpcy5fLnN0YXJ0ZWQ9MTtmPXB9dT10aGlzLl8ubmV4dE5vZGU7cD10aGlzLl8ubGFzdE5vZGU7Zm9yKHRoaXMuXy5uZXh0Tm9kZT1udWxsO3U7KXt2YXIgej0wLHE9dS5oYXNBc2NlbmRhbnQoXCJwcmVcIiksQT11LnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVCx5PTA7aWYoQSl1LnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmYy50ZXN0KHUuZ2V0VGV4dCgpKSYmKEE9MCk7ZWxzZXt2YXIgdD11LmdldE5hbWUoKTtpZihDS0VESVRPUi5kdGQuJGJsb2NrW3RdJiZcImZhbHNlXCI9PXUuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKXtnPVxudTtlKHRoaXMsYSxnKTticmVha31lbHNlIGlmKHUuaXNCbG9ja0JvdW5kYXJ5KHRoaXMuZm9yY2VCckJyZWFrJiYhcSYme2JyOjF9KSl7aWYoXCJiclwiPT10KUE9MTtlbHNlIGlmKCFmJiYhdS5nZXRDaGlsZENvdW50KCkmJlwiaHJcIiE9dCl7Zz11O2w9dS5lcXVhbHMocCk7YnJlYWt9ZiYmKGYuc2V0RW5kQXQodSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpLFwiYnJcIiE9dCYmKHRoaXMuXy5uZXh0Tm9kZT11KSk7ej0xfWVsc2V7aWYodS5nZXRGaXJzdCgpKXtmfHwoZj10aGlzLnJhbmdlLmNsb25lKCksZi5zZXRTdGFydEF0KHUsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKSk7dT11LmdldEZpcnN0KCk7Y29udGludWV9QT0xfX1BJiYhZiYmKGY9dGhpcy5yYW5nZS5jbG9uZSgpLGYuc2V0U3RhcnRBdCh1LENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCkpO2w9KCF6fHxBKSYmdS5lcXVhbHMocCk7aWYoZiYmIXopZm9yKDshdS5nZXROZXh0KG0pJiYhbDspe3Q9XG51LmdldFBhcmVudCgpO2lmKHQuaXNCbG9ja0JvdW5kYXJ5KHRoaXMuZm9yY2VCckJyZWFrJiYhcSYme2JyOjF9KSl7ej0xO0E9MDtsfHx0LmVxdWFscyhwKTtmLnNldEVuZEF0KHQsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7YnJlYWt9dT10O0E9MTtsPXUuZXF1YWxzKHApO3k9MX1BJiZmLnNldEVuZEF0KHUsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EKTt1PXRoaXMuX2dldE5leHRTb3VyY2VOb2RlKHUseSxwKTtpZigobD0hdSl8fHomJmYpYnJlYWt9aWYoIWcpe2lmKCFmKXJldHVybiB0aGlzLl8uZG9jRW5kTWFya2VyJiZ0aGlzLl8uZG9jRW5kTWFya2VyLnJlbW92ZSgpLHRoaXMuXy5uZXh0Tm9kZT1udWxsO2c9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChmLnN0YXJ0Q29udGFpbmVyLGYucm9vdCk7dT1nLmJsb2NrTGltaXQ7ej17ZGl2OjEsdGg6MSx0ZDoxfTtnPWcuYmxvY2s7IWcmJnUmJiF0aGlzLmVuZm9yY2VSZWFsQmxvY2tzJiZ6W3UuZ2V0TmFtZSgpXSYmXG5mLmNoZWNrU3RhcnRPZkJsb2NrKCkmJmYuY2hlY2tFbmRPZkJsb2NrKCkmJiF1LmVxdWFscyhmLnJvb3QpP2c9dTohZ3x8dGhpcy5lbmZvcmNlUmVhbEJsb2NrcyYmZy5pcyhkKT8oZz10aGlzLnJhbmdlLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoYSksZi5leHRyYWN0Q29udGVudHMoKS5hcHBlbmRUbyhnKSxnLnRyaW0oKSxmLmluc2VydE5vZGUoZykseD1yPSEwKTpcImxpXCIhPWcuZ2V0TmFtZSgpP2YuY2hlY2tTdGFydE9mQmxvY2soKSYmZi5jaGVja0VuZE9mQmxvY2soKXx8KGc9Zy5jbG9uZSghMSksZi5leHRyYWN0Q29udGVudHMoKS5hcHBlbmRUbyhnKSxnLnRyaW0oKSxyPWYuc3BsaXRCbG9jaygpLHg9IXIud2FzU3RhcnRPZkJsb2NrLHI9IXIud2FzRW5kT2ZCbG9jayxmLmluc2VydE5vZGUoZykpOmx8fCh0aGlzLl8ubmV4dE5vZGU9Zy5lcXVhbHMocCk/bnVsbDp0aGlzLl9nZXROZXh0U291cmNlTm9kZShmLmdldEJvdW5kYXJ5Tm9kZXMoKS5lbmROb2RlLDEscCkpfXgmJih4PVxuZy5nZXRQcmV2aW91cygpKSYmeC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihcImJyXCI9PXguZ2V0TmFtZSgpP3gucmVtb3ZlKCk6eC5nZXRMYXN0KCkmJlwiYnJcIj09eC5nZXRMYXN0KCkuJC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiZ4LmdldExhc3QoKS5yZW1vdmUoKSk7ciYmKHg9Zy5nZXRMYXN0KCkpJiZ4LnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJiclwiPT14LmdldE5hbWUoKSYmKCFDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlcnx8eC5nZXRQcmV2aW91cyhrKXx8eC5nZXROZXh0KGspKSYmeC5yZW1vdmUoKTt0aGlzLl8ubmV4dE5vZGV8fCh0aGlzLl8ubmV4dE5vZGU9bHx8Zy5lcXVhbHMocCl8fCFwP251bGw6dGhpcy5fZ2V0TmV4dFNvdXJjZU5vZGUoZywxLHApKTtyZXR1cm4gZ30sX2dldE5leHRTb3VyY2VOb2RlOmZ1bmN0aW9uKGEsYixkKXtmdW5jdGlvbiBjKGEpe3JldHVybiEoYS5lcXVhbHMoZCl8fGEuZXF1YWxzKGUpKX12YXIgZT10aGlzLnJhbmdlLnJvb3Q7XG5mb3IoYT1hLmdldE5leHRTb3VyY2VOb2RlKGIsbnVsbCxjKTshayhhKTspYT1hLmdldE5leHRTb3VyY2VOb2RlKGIsbnVsbCxjKTtyZXR1cm4gYX19O0NLRURJVE9SLmRvbS5yYW5nZS5wcm90b3R5cGUuY3JlYXRlSXRlcmF0b3I9ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IGEodGhpcyl9fSgpLENLRURJVE9SLmNvbW1hbmQ9ZnVuY3Rpb24oYSxmKXt0aGlzLnVpSXRlbXM9W107dGhpcy5leGVjPWZ1bmN0aW9uKGIpe2lmKHRoaXMuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEfHwhdGhpcy5jaGVja0FsbG93ZWQoKSlyZXR1cm4hMTt0aGlzLmVkaXRvckZvY3VzJiZhLmZvY3VzKCk7cmV0dXJuITE9PT10aGlzLmZpcmUoXCJleGVjXCIpPyEwOiExIT09Zi5leGVjLmNhbGwodGhpcyxhLGIpfTt0aGlzLnJlZnJlc2g9ZnVuY3Rpb24oYSxjKXtpZighdGhpcy5yZWFkT25seSYmYS5yZWFkT25seSlyZXR1cm4hMDtpZih0aGlzLmNvbnRleHQmJiFjLmlzQ29udGV4dEZvcih0aGlzLmNvbnRleHQpfHxcbiF0aGlzLmNoZWNrQWxsb3dlZCghMCkpcmV0dXJuIHRoaXMuZGlzYWJsZSgpLCEwO3RoaXMuc3RhcnREaXNhYmxlZHx8dGhpcy5lbmFibGUoKTt0aGlzLm1vZGVzJiYhdGhpcy5tb2Rlc1thLm1vZGVdJiZ0aGlzLmRpc2FibGUoKTtyZXR1cm4hMT09PXRoaXMuZmlyZShcInJlZnJlc2hcIix7ZWRpdG9yOmEscGF0aDpjfSk/ITA6Zi5yZWZyZXNoJiYhMSE9PWYucmVmcmVzaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9O3ZhciBlO3RoaXMuY2hlY2tBbGxvd2VkPWZ1bmN0aW9uKGIpe3JldHVybiBifHxcImJvb2xlYW5cIiE9dHlwZW9mIGU/ZT1hLmFjdGl2ZUZpbHRlci5jaGVja0ZlYXR1cmUodGhpcyk6ZX07Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsZix7bW9kZXM6e3d5c2l3eWc6MX0sZWRpdG9yRm9jdXM6MSxjb250ZXh0U2Vuc2l0aXZlOiEhZi5jb250ZXh0LHN0YXRlOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEfSk7Q0tFRElUT1IuZXZlbnQuY2FsbCh0aGlzKX0sQ0tFRElUT1IuY29tbWFuZC5wcm90b3R5cGU9XG57ZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQmJnRoaXMuY2hlY2tBbGxvd2VkKCkmJnRoaXMuc2V0U3RhdGUodGhpcy5wcmVzZXJ2ZVN0YXRlJiZcInVuZGVmaW5lZFwiIT10eXBlb2YgdGhpcy5wcmV2aW91c1N0YXRlP3RoaXMucHJldmlvdXNTdGF0ZTpDS0VESVRPUi5UUklTVEFURV9PRkYpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCl9LHNldFN0YXRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuc3RhdGU9PWF8fGEhPUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEJiYhdGhpcy5jaGVja0FsbG93ZWQoKSlyZXR1cm4hMTt0aGlzLnByZXZpb3VzU3RhdGU9dGhpcy5zdGF0ZTt0aGlzLnN0YXRlPWE7dGhpcy5maXJlKFwic3RhdGVcIik7cmV0dXJuITB9LHRvZ2dsZVN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfT0ZGP3RoaXMuc2V0U3RhdGUoQ0tFRElUT1IuVFJJU1RBVEVfT04pOlxudGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfT04mJnRoaXMuc2V0U3RhdGUoQ0tFRElUT1IuVFJJU1RBVEVfT0ZGKX19LENLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKENLRURJVE9SLmNvbW1hbmQucHJvdG90eXBlKSxDS0VESVRPUi5FTlRFUl9QPTEsQ0tFRElUT1IuRU5URVJfQlI9MixDS0VESVRPUi5FTlRFUl9ESVY9MyxDS0VESVRPUi5jb25maWc9e2N1c3RvbUNvbmZpZzpcImNvbmZpZy5qc1wiLGF1dG9VcGRhdGVFbGVtZW50OiEwLGxhbmd1YWdlOlwiXCIsZGVmYXVsdExhbmd1YWdlOlwiZW5cIixjb250ZW50c0xhbmdEaXJlY3Rpb246XCJcIixlbnRlck1vZGU6Q0tFRElUT1IuRU5URVJfUCxmb3JjZUVudGVyTW9kZTohMSxzaGlmdEVudGVyTW9kZTpDS0VESVRPUi5FTlRFUl9CUixkb2NUeXBlOlwiXFx4M2MhRE9DVFlQRSBodG1sXFx4M2VcIixib2R5SWQ6XCJcIixib2R5Q2xhc3M6XCJcIixmdWxsUGFnZTohMSxoZWlnaHQ6MjAwLGNvbnRlbnRzQ3NzOkNLRURJVE9SLmdldFVybChcImNvbnRlbnRzLmNzc1wiKSxcbmV4dHJhUGx1Z2luczpcIlwiLHJlbW92ZVBsdWdpbnM6XCJcIixwcm90ZWN0ZWRTb3VyY2U6W10sdGFiSW5kZXg6MCx1c2VDb21wdXRlZFN0YXRlOiEwLHdpZHRoOlwiXCIsYmFzZUZsb2F0WkluZGV4OjFFNCxibG9ja2VkS2V5c3Ryb2tlczpbQ0tFRElUT1IuQ1RSTCs2NixDS0VESVRPUi5DVFJMKzczLENLRURJVE9SLkNUUkwrODVdfSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGQsYyxnKXt2YXIgZSxoO2E9W107Zm9yKGUgaW4gYil7aD1iW2VdO2g9XCJib29sZWFuXCI9PXR5cGVvZiBoP3t9OlwiZnVuY3Rpb25cIj09dHlwZW9mIGg/e21hdGNoOmh9OkooaCk7XCIkXCIhPWUuY2hhckF0KDApJiYoaC5lbGVtZW50cz1lKTtkJiYoaC5mZWF0dXJlTmFtZT1kLnRvTG93ZXJDYXNlKCkpO3ZhciBrPWg7ay5lbGVtZW50cz1sKGsuZWxlbWVudHMsL1xccysvKXx8bnVsbDtrLnByb3BlcnRpZXNPbmx5PWsucHJvcGVydGllc09ubHl8fCEwPT09ay5lbGVtZW50czt2YXIgZj0vXFxzKixcXHMqLyxuPXZvaWQgMDtmb3IobiBpbiBNKXtrW25dPVxubChrW25dLGYpfHxudWxsO3ZhciBtPWssTj1IW25dLHU9bChrW0hbbl1dLGYpLEw9a1tuXSx2PVtdLEk9ITAscT12b2lkIDA7dT9JPSExOnU9e307Zm9yKHEgaW4gTClcIiFcIj09cS5jaGFyQXQoMCkmJihxPXEuc2xpY2UoMSksdi5wdXNoKHEpLHVbcV09ITAsST0hMSk7Zm9yKDtxPXYucG9wKCk7KUxbcV09TFtcIiFcIitxXSxkZWxldGUgTFtcIiFcIitxXTttW05dPShJPyExOnUpfHxudWxsfWsubWF0Y2g9ay5tYXRjaHx8bnVsbDtjLnB1c2goaCk7YS5wdXNoKGgpfWI9Zy5lbGVtZW50cztnPWcuZ2VuZXJpYzt2YXIgdztkPTA7Zm9yKGM9YS5sZW5ndGg7ZDxjOysrZCl7ZT1KKGFbZF0pO2g9ITA9PT1lLmNsYXNzZXN8fCEwPT09ZS5zdHlsZXN8fCEwPT09ZS5hdHRyaWJ1dGVzO2s9ZTtuPU49Zj12b2lkIDA7Zm9yKGYgaW4gTSlrW2ZdPXooa1tmXSk7bT0hMDtmb3IobiBpbiBIKXtmPUhbbl07Tj1rW2ZdO3U9W107TD12b2lkIDA7Zm9yKEwgaW4gTiktMTxMLmluZGV4T2YoXCIqXCIpP3UucHVzaChuZXcgUmVnRXhwKFwiXlwiK1xuTC5yZXBsYWNlKC9cXCovZyxcIi4qXCIpK1wiJFwiKSk6dS5wdXNoKEwpO049dTtOLmxlbmd0aCYmKGtbZl09TixtPSExKX1rLm5vdGhpbmdSZXF1aXJlZD1tO2subm9Qcm9wZXJ0aWVzPSEoay5hdHRyaWJ1dGVzfHxrLmNsYXNzZXN8fGsuc3R5bGVzKTtpZighMD09PWUuZWxlbWVudHN8fG51bGw9PT1lLmVsZW1lbnRzKWdbaD9cInVuc2hpZnRcIjpcInB1c2hcIl0oZSk7ZWxzZSBmb3IodyBpbiBrPWUuZWxlbWVudHMsZGVsZXRlIGUuZWxlbWVudHMsaylpZihiW3ddKWJbd11baD9cInVuc2hpZnRcIjpcInB1c2hcIl0oZSk7ZWxzZSBiW3ddPVtlXX19ZnVuY3Rpb24gZihhLGIsZCxjKXtpZighYS5tYXRjaHx8YS5tYXRjaChiKSlpZihjfHxtKGEsYikpaWYoYS5wcm9wZXJ0aWVzT25seXx8KGQudmFsaWQ9ITApLGQuYWxsQXR0cmlidXRlc3x8KGQuYWxsQXR0cmlidXRlcz1lKGEuYXR0cmlidXRlcyxiLmF0dHJpYnV0ZXMsZC52YWxpZEF0dHJpYnV0ZXMpKSxkLmFsbFN0eWxlc3x8KGQuYWxsU3R5bGVzPWUoYS5zdHlsZXMsXG5iLnN0eWxlcyxkLnZhbGlkU3R5bGVzKSksIWQuYWxsQ2xhc3Nlcyl7YT1hLmNsYXNzZXM7Yj1iLmNsYXNzZXM7Yz1kLnZhbGlkQ2xhc3NlcztpZihhKWlmKCEwPT09YSlhPSEwO2Vsc2V7Zm9yKHZhciBnPTAsaD1iLmxlbmd0aCxrO2c8aDsrK2cpaz1iW2ddLGNba118fChjW2tdPWEoaykpO2E9ITF9ZWxzZSBhPSExO2QuYWxsQ2xhc3Nlcz1hfX1mdW5jdGlvbiBlKGEsYixkKXtpZighYSlyZXR1cm4hMTtpZighMD09PWEpcmV0dXJuITA7Zm9yKHZhciBjIGluIGIpZFtjXXx8KGRbY109YShjKSk7cmV0dXJuITF9ZnVuY3Rpb24gYihhLGIsZCl7aWYoIWEubWF0Y2h8fGEubWF0Y2goYikpe2lmKGEubm9Qcm9wZXJ0aWVzKXJldHVybiExO2QuaGFkSW52YWxpZEF0dHJpYnV0ZT1jKGEuYXR0cmlidXRlcyxiLmF0dHJpYnV0ZXMpfHxkLmhhZEludmFsaWRBdHRyaWJ1dGU7ZC5oYWRJbnZhbGlkU3R5bGU9YyhhLnN0eWxlcyxiLnN0eWxlcyl8fGQuaGFkSW52YWxpZFN0eWxlO2E9YS5jbGFzc2VzO1xuYj1iLmNsYXNzZXM7aWYoYSl7Zm9yKHZhciBnPSExLGU9ITA9PT1hLGg9Yi5sZW5ndGg7aC0tOylpZihlfHxhKGJbaF0pKWIuc3BsaWNlKGgsMSksZz0hMDthPWd9ZWxzZSBhPSExO2QuaGFkSW52YWxpZENsYXNzPWF8fGQuaGFkSW52YWxpZENsYXNzfX1mdW5jdGlvbiBjKGEsYil7aWYoIWEpcmV0dXJuITE7dmFyIGQ9ITEsYz0hMD09PWEsZztmb3IoZyBpbiBiKWlmKGN8fGEoZykpZGVsZXRlIGJbZ10sZD0hMDtyZXR1cm4gZH1mdW5jdGlvbiBrKGEsYixkKXtpZihhLmRpc2FibGVkfHxhLmN1c3RvbUNvbmZpZyYmIWR8fCFiKXJldHVybiExO2EuXy5jYWNoZWRDaGVja3M9e307cmV0dXJuITB9ZnVuY3Rpb24gbChhLGIpe2lmKCFhKXJldHVybiExO2lmKCEwPT09YSlyZXR1cm4gYTtpZihcInN0cmluZ1wiPT10eXBlb2YgYSlyZXR1cm4gYT1LKGEpLFwiKlwiPT1hPyEwOkNLRURJVE9SLnRvb2xzLmNvbnZlcnRBcnJheVRvT2JqZWN0KGEuc3BsaXQoYikpO2lmKENLRURJVE9SLnRvb2xzLmlzQXJyYXkoYSkpcmV0dXJuIGEubGVuZ3RoP1xuQ0tFRElUT1IudG9vbHMuY29udmVydEFycmF5VG9PYmplY3QoYSk6ITE7dmFyIGQ9e30sYz0wLGc7Zm9yKGcgaW4gYSlkW2ddPWFbZ10sYysrO3JldHVybiBjP2Q6ITF9ZnVuY3Rpb24gbShhLGIpe2lmKGEubm90aGluZ1JlcXVpcmVkKXJldHVybiEwO3ZhciBjLGcsZSxoO2lmKGU9YS5yZXF1aXJlZENsYXNzZXMpZm9yKGg9Yi5jbGFzc2VzLGM9MDtjPGUubGVuZ3RoOysrYylpZihnPWVbY10sXCJzdHJpbmdcIj09dHlwZW9mIGcpe2lmKC0xPT1DS0VESVRPUi50b29scy5pbmRleE9mKGgsZykpcmV0dXJuITF9ZWxzZSBpZighQ0tFRElUT1IudG9vbHMuY2hlY2tJZkFueUFycmF5SXRlbU1hdGNoZXMoaCxnKSlyZXR1cm4hMTtyZXR1cm4gZChiLnN0eWxlcyxhLnJlcXVpcmVkU3R5bGVzKSYmZChiLmF0dHJpYnV0ZXMsYS5yZXF1aXJlZEF0dHJpYnV0ZXMpfWZ1bmN0aW9uIGQoYSxiKXtpZighYilyZXR1cm4hMDtmb3IodmFyIGQ9MCxjO2Q8Yi5sZW5ndGg7KytkKWlmKGM9YltkXSxcInN0cmluZ1wiPT1cbnR5cGVvZiBjKXtpZighKGMgaW4gYSkpcmV0dXJuITF9ZWxzZSBpZighQ0tFRElUT1IudG9vbHMuY2hlY2tJZkFueU9iamVjdFByb3BlcnR5TWF0Y2hlcyhhLGMpKXJldHVybiExO3JldHVybiEwfWZ1bmN0aW9uIGgoYSl7aWYoIWEpcmV0dXJue307YT1hLnNwbGl0KC9cXHMqLFxccyovKS5zb3J0KCk7Zm9yKHZhciBiPXt9O2EubGVuZ3RoOyliW2Euc2hpZnQoKV09XCJja2UtdGVzdFwiO3JldHVybiBifWZ1bmN0aW9uIGcoYSl7dmFyIGIsZCxjLGcsZT17fSxoPTE7Zm9yKGE9SyhhKTtiPWEubWF0Y2goRSk7KShkPWJbMl0pPyhjPW4oZCxcInN0eWxlc1wiKSxnPW4oZCxcImF0dHJzXCIpLGQ9bihkLFwiY2xhc3Nlc1wiKSk6Yz1nPWQ9bnVsbCxlW1wiJFwiK2grK109e2VsZW1lbnRzOmJbMV0sY2xhc3NlczpkLHN0eWxlczpjLGF0dHJpYnV0ZXM6Z30sYT1hLnNsaWNlKGJbMF0ubGVuZ3RoKTtyZXR1cm4gZX1mdW5jdGlvbiBuKGEsYil7dmFyIGQ9YS5tYXRjaChQW2JdKTtyZXR1cm4gZD9LKGRbMV0pOm51bGx9XG5mdW5jdGlvbiB3KGEpe3ZhciBiPWEuc3R5bGVCYWNrdXA9YS5hdHRyaWJ1dGVzLnN0eWxlLGQ9YS5jbGFzc0JhY2t1cD1hLmF0dHJpYnV0ZXNbXCJjbGFzc1wiXTthLnN0eWxlc3x8KGEuc3R5bGVzPUNLRURJVE9SLnRvb2xzLnBhcnNlQ3NzVGV4dChifHxcIlwiLDEpKTthLmNsYXNzZXN8fChhLmNsYXNzZXM9ZD9kLnNwbGl0KC9cXHMrLyk6W10pfWZ1bmN0aW9uIHgoYSxkLGMsZyl7dmFyIGU9MCxoO2cudG9IdG1sJiYoZC5uYW1lPWQubmFtZS5yZXBsYWNlKEwsXCIkMVwiKSk7aWYoZy5kb0NhbGxiYWNrcyYmYS5lbGVtZW50Q2FsbGJhY2tzKXthOntoPWEuZWxlbWVudENhbGxiYWNrcztmb3IodmFyIGs9MCxsPWgubGVuZ3RoLG47azxsOysraylpZihuPWhba10oZCkpe2g9bjticmVhayBhfWg9dm9pZCAwfWlmKGgpcmV0dXJuIGh9aWYoZy5kb1RyYW5zZm9ybSYmKGg9YS5fLnRyYW5zZm9ybWF0aW9uc1tkLm5hbWVdKSl7dyhkKTtmb3Ioaz0wO2s8aC5sZW5ndGg7KytrKXQoYSxkLGhba10pO3AoZCl9aWYoZy5kb0ZpbHRlcil7YTp7az1cbmQubmFtZTtsPWEuXzthPWwuYWxsb3dlZFJ1bGVzLmVsZW1lbnRzW2tdO2g9bC5hbGxvd2VkUnVsZXMuZ2VuZXJpYztrPWwuZGlzYWxsb3dlZFJ1bGVzLmVsZW1lbnRzW2tdO2w9bC5kaXNhbGxvd2VkUnVsZXMuZ2VuZXJpYztuPWcuc2tpcFJlcXVpcmVkO3ZhciBtPXt2YWxpZDohMSx2YWxpZEF0dHJpYnV0ZXM6e30sdmFsaWRDbGFzc2VzOnt9LHZhbGlkU3R5bGVzOnt9LGFsbEF0dHJpYnV0ZXM6ITEsYWxsQ2xhc3NlczohMSxhbGxTdHlsZXM6ITEsaGFkSW52YWxpZEF0dHJpYnV0ZTohMSxoYWRJbnZhbGlkQ2xhc3M6ITEsaGFkSW52YWxpZFN0eWxlOiExfSx2LHE7aWYoYXx8aCl7dyhkKTtpZihrKWZvcih2PTAscT1rLmxlbmd0aDt2PHE7Kyt2KWlmKCExPT09YihrW3ZdLGQsbSkpe2E9bnVsbDticmVhayBhfWlmKGwpZm9yKHY9MCxxPWwubGVuZ3RoO3Y8cTsrK3YpYihsW3ZdLGQsbSk7aWYoYSlmb3Iodj0wLHE9YS5sZW5ndGg7djxxOysrdilmKGFbdl0sZCxtLG4pO2lmKGgpZm9yKHY9XG4wLHE9aC5sZW5ndGg7djxxOysrdilmKGhbdl0sZCxtLG4pO2E9bX1lbHNlIGE9bnVsbH1pZighYXx8IWEudmFsaWQpcmV0dXJuIGMucHVzaChkKSwxO3E9YS52YWxpZEF0dHJpYnV0ZXM7dmFyIEY9YS52YWxpZFN0eWxlcztoPWEudmFsaWRDbGFzc2VzO3ZhciBrPWQuYXR0cmlidXRlcyx6PWQuc3R5bGVzLGw9ZC5jbGFzc2VzO249ZC5jbGFzc0JhY2t1cDt2YXIgRD1kLnN0eWxlQmFja3VwLEksSixLPVtdLG09W10sQz0vXmRhdGEtY2tlLS87dj0hMTtkZWxldGUgay5zdHlsZTtkZWxldGUga1tcImNsYXNzXCJdO2RlbGV0ZSBkLmNsYXNzQmFja3VwO2RlbGV0ZSBkLnN0eWxlQmFja3VwO2lmKCFhLmFsbEF0dHJpYnV0ZXMpZm9yKEkgaW4gaylxW0ldfHwoQy50ZXN0KEkpP0k9PShKPUkucmVwbGFjZSgvXmRhdGEtY2tlLXNhdmVkLS8sXCJcIikpfHxxW0pdfHwoZGVsZXRlIGtbSV0sdj0hMCk6KGRlbGV0ZSBrW0ldLHY9ITApKTtpZighYS5hbGxTdHlsZXN8fGEuaGFkSW52YWxpZFN0eWxlKXtmb3IoSSBpbiB6KWEuYWxsU3R5bGVzfHxcbkZbSV0/Sy5wdXNoKEkrXCI6XCIreltJXSk6dj0hMDtLLmxlbmd0aCYmKGsuc3R5bGU9Sy5zb3J0KCkuam9pbihcIjsgXCIpKX1lbHNlIEQmJihrLnN0eWxlPUQpO2lmKCFhLmFsbENsYXNzZXN8fGEuaGFkSW52YWxpZENsYXNzKXtmb3IoST0wO0k8bC5sZW5ndGg7KytJKShhLmFsbENsYXNzZXN8fGhbbFtJXV0pJiZtLnB1c2gobFtJXSk7bS5sZW5ndGgmJihrW1wiY2xhc3NcIl09bS5zb3J0KCkuam9pbihcIiBcIikpO24mJm0ubGVuZ3RoPG4uc3BsaXQoL1xccysvKS5sZW5ndGgmJih2PSEwKX1lbHNlIG4mJihrW1wiY2xhc3NcIl09bik7diYmKGU9MSk7aWYoIWcuc2tpcEZpbmFsVmFsaWRhdGlvbiYmIXUoZCkpcmV0dXJuIGMucHVzaChkKSwxfWcudG9IdG1sJiYoZC5uYW1lPWQubmFtZS5yZXBsYWNlKE4sXCJja2U6JDFcIikpO3JldHVybiBlfWZ1bmN0aW9uIHIoYSl7dmFyIGI9W10sZDtmb3IoZCBpbiBhKS0xPGQuaW5kZXhPZihcIipcIikmJmIucHVzaChkLnJlcGxhY2UoL1xcKi9nLFwiLipcIikpO3JldHVybiBiLmxlbmd0aD9cbm5ldyBSZWdFeHAoXCJeKD86XCIrYi5qb2luKFwifFwiKStcIikkXCIpOm51bGx9ZnVuY3Rpb24gcChhKXt2YXIgYj1hLmF0dHJpYnV0ZXMsZDtkZWxldGUgYi5zdHlsZTtkZWxldGUgYltcImNsYXNzXCJdO2lmKGQ9Q0tFRElUT1IudG9vbHMud3JpdGVDc3NUZXh0KGEuc3R5bGVzLCEwKSliLnN0eWxlPWQ7YS5jbGFzc2VzLmxlbmd0aCYmKGJbXCJjbGFzc1wiXT1hLmNsYXNzZXMuc29ydCgpLmpvaW4oXCIgXCIpKX1mdW5jdGlvbiB1KGEpe3N3aXRjaChhLm5hbWUpe2Nhc2UgXCJhXCI6aWYoIShhLmNoaWxkcmVuLmxlbmd0aHx8YS5hdHRyaWJ1dGVzLm5hbWV8fGEuYXR0cmlidXRlcy5pZCkpcmV0dXJuITE7YnJlYWs7Y2FzZSBcImltZ1wiOmlmKCFhLmF0dHJpYnV0ZXMuc3JjKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIHooYSl7aWYoIWEpcmV0dXJuITE7aWYoITA9PT1hKXJldHVybiEwO3ZhciBiPXIoYSk7cmV0dXJuIGZ1bmN0aW9uKGQpe3JldHVybiBkIGluIGF8fGImJmQubWF0Y2goYil9fWZ1bmN0aW9uIHEoKXtyZXR1cm4gbmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudChcImJyXCIpfVxuZnVuY3Rpb24gQShhKXtyZXR1cm4gYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihcImJyXCI9PWEubmFtZXx8Ri4kYmxvY2tbYS5uYW1lXSl9ZnVuY3Rpb24geShhLGIsZCl7dmFyIGM9YS5uYW1lO2lmKEYuJGVtcHR5W2NdfHwhYS5jaGlsZHJlbi5sZW5ndGgpXCJoclwiPT1jJiZcImJyXCI9PWI/YS5yZXBsYWNlV2l0aChxKCkpOihhLnBhcmVudCYmZC5wdXNoKHtjaGVjazpcIml0XCIsZWw6YS5wYXJlbnR9KSxhLnJlbW92ZSgpKTtlbHNlIGlmKEYuJGJsb2NrW2NdfHxcInRyXCI9PWMpaWYoXCJiclwiPT1iKWEucHJldmlvdXMmJiFBKGEucHJldmlvdXMpJiYoYj1xKCksYi5pbnNlcnRCZWZvcmUoYSkpLGEubmV4dCYmIUEoYS5uZXh0KSYmKGI9cSgpLGIuaW5zZXJ0QWZ0ZXIoYSkpLGEucmVwbGFjZVdpdGhDaGlsZHJlbigpO2Vsc2V7dmFyIGM9YS5jaGlsZHJlbixnO2I6e2c9RltiXTtmb3IodmFyIGU9MCxoPWMubGVuZ3RoLGs7ZTxoOysrZSlpZihrPWNbZV0say50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJlxuIWdbay5uYW1lXSl7Zz0hMTticmVhayBifWc9ITB9aWYoZylhLm5hbWU9YixhLmF0dHJpYnV0ZXM9e30sZC5wdXNoKHtjaGVjazpcInBhcmVudC1kb3duXCIsZWw6YX0pO2Vsc2V7Zz1hLnBhcmVudDtmb3IodmFyIGU9Zy50eXBlPT1DS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UfHxcImJvZHlcIj09Zy5uYW1lLGYsbCxoPWMubGVuZ3RoOzA8aDspaz1jWy0taF0sZSYmKGsudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUfHxrLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmRi4kaW5saW5lW2submFtZV0pPyhmfHwoZj1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50KGIpLGYuaW5zZXJ0QWZ0ZXIoYSksZC5wdXNoKHtjaGVjazpcInBhcmVudC1kb3duXCIsZWw6Zn0pKSxmLmFkZChrLDApKTooZj1udWxsLGw9RltnLm5hbWVdfHxGLnNwYW4say5pbnNlcnRBZnRlcihhKSxnLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlR8fGsudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxcbmxbay5uYW1lXXx8ZC5wdXNoKHtjaGVjazpcImVsLXVwXCIsZWw6a30pKTthLnJlbW92ZSgpfX1lbHNlIGMgaW57c3R5bGU6MSxzY3JpcHQ6MX0/YS5yZW1vdmUoKTooYS5wYXJlbnQmJmQucHVzaCh7Y2hlY2s6XCJpdFwiLGVsOmEucGFyZW50fSksYS5yZXBsYWNlV2l0aENoaWxkcmVuKCkpfWZ1bmN0aW9uIHQoYSxiLGQpe3ZhciBjLGc7Zm9yKGM9MDtjPGQubGVuZ3RoOysrYylpZihnPWRbY10sIShnLmNoZWNrJiYhYS5jaGVjayhnLmNoZWNrLCExKXx8Zy5sZWZ0JiYhZy5sZWZ0KGIpKSl7Zy5yaWdodChiLE8pO2JyZWFrfX1mdW5jdGlvbiB2KGEsYil7dmFyIGQ9Yi5nZXREZWZpbml0aW9uKCksYz1kLmF0dHJpYnV0ZXMsZz1kLnN0eWxlcyxlLGgsayxmO2lmKGEubmFtZSE9ZC5lbGVtZW50KXJldHVybiExO2ZvcihlIGluIGMpaWYoXCJjbGFzc1wiPT1lKWZvcihkPWNbZV0uc3BsaXQoL1xccysvKSxrPWEuY2xhc3Nlcy5qb2luKFwifFwiKTtmPWQucG9wKCk7KXtpZigtMT09ay5pbmRleE9mKGYpKXJldHVybiExfWVsc2UgaWYoYS5hdHRyaWJ1dGVzW2VdIT1cbmNbZV0pcmV0dXJuITE7Zm9yKGggaW4gZylpZihhLnN0eWxlc1toXSE9Z1toXSlyZXR1cm4hMTtyZXR1cm4hMH1mdW5jdGlvbiBCKGEsYil7dmFyIGQsYztcInN0cmluZ1wiPT10eXBlb2YgYT9kPWE6YSBpbnN0YW5jZW9mIENLRURJVE9SLnN0eWxlP2M9YTooZD1hWzBdLGM9YVsxXSk7cmV0dXJuW3tlbGVtZW50OmQsbGVmdDpjLHJpZ2h0OmZ1bmN0aW9uKGEsZCl7ZC50cmFuc2Zvcm0oYSxiKX19XX1mdW5jdGlvbiBEKGEpe3JldHVybiBmdW5jdGlvbihiKXtyZXR1cm4gdihiLGEpfX1mdW5jdGlvbiBDKGEpe3JldHVybiBmdW5jdGlvbihiLGQpe2RbYV0oYil9fXZhciBGPUNLRURJVE9SLmR0ZCxKPUNLRURJVE9SLnRvb2xzLmNvcHksSz1DS0VESVRPUi50b29scy50cmltLEc9W1wiXCIsXCJwXCIsXCJiclwiLFwiZGl2XCJdO0NLRURJVE9SLkZJTFRFUl9TS0lQX1RSRUU9MjtDS0VESVRPUi5maWx0ZXI9ZnVuY3Rpb24oYSxiKXt0aGlzLmFsbG93ZWRDb250ZW50PVtdO3RoaXMuZGlzYWxsb3dlZENvbnRlbnQ9XG5bXTt0aGlzLmVsZW1lbnRDYWxsYmFja3M9bnVsbDt0aGlzLmRpc2FibGVkPSExO3RoaXMuZWRpdG9yPW51bGw7dGhpcy5pZD1DS0VESVRPUi50b29scy5nZXROZXh0TnVtYmVyKCk7dGhpcy5fPXthbGxvd2VkUnVsZXM6e2VsZW1lbnRzOnt9LGdlbmVyaWM6W119LGRpc2FsbG93ZWRSdWxlczp7ZWxlbWVudHM6e30sZ2VuZXJpYzpbXX0sdHJhbnNmb3JtYXRpb25zOnt9LGNhY2hlZFRlc3RzOnt9LGNhY2hlZENoZWNrczp7fX07Q0tFRElUT1IuZmlsdGVyLmluc3RhbmNlc1t0aGlzLmlkXT10aGlzO3ZhciBkPXRoaXMuZWRpdG9yPWEgaW5zdGFuY2VvZiBDS0VESVRPUi5lZGl0b3I/YTpudWxsO2lmKGQmJiFiKXt0aGlzLmN1c3RvbUNvbmZpZz0hMDt2YXIgYz1kLmNvbmZpZy5hbGxvd2VkQ29udGVudDshMD09PWM/dGhpcy5kaXNhYmxlZD0hMDooY3x8KHRoaXMuY3VzdG9tQ29uZmlnPSExKSx0aGlzLmFsbG93KGMsXCJjb25maWdcIiwxKSx0aGlzLmFsbG93KGQuY29uZmlnLmV4dHJhQWxsb3dlZENvbnRlbnQsXG5cImV4dHJhXCIsMSksdGhpcy5hbGxvdyhHW2QuZW50ZXJNb2RlXStcIiBcIitHW2Quc2hpZnRFbnRlck1vZGVdLFwiZGVmYXVsdFwiLDEpLHRoaXMuZGlzYWxsb3coZC5jb25maWcuZGlzYWxsb3dlZENvbnRlbnQpKX1lbHNlIHRoaXMuY3VzdG9tQ29uZmlnPSExLHRoaXMuYWxsb3coYnx8YSxcImRlZmF1bHRcIiwxKX07Q0tFRElUT1IuZmlsdGVyLmluc3RhbmNlcz17fTtDS0VESVRPUi5maWx0ZXIucHJvdG90eXBlPXthbGxvdzpmdW5jdGlvbihiLGQsYyl7aWYoIWsodGhpcyxiLGMpKXJldHVybiExO3ZhciBlLGg7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGIpYj1nKGIpO2Vsc2UgaWYoYiBpbnN0YW5jZW9mIENLRURJVE9SLnN0eWxlKXtpZihiLnRvQWxsb3dlZENvbnRlbnRSdWxlcylyZXR1cm4gdGhpcy5hbGxvdyhiLnRvQWxsb3dlZENvbnRlbnRSdWxlcyh0aGlzLmVkaXRvciksZCxjKTtlPWIuZ2V0RGVmaW5pdGlvbigpO2I9e307Yz1lLmF0dHJpYnV0ZXM7YltlLmVsZW1lbnRdPWU9e3N0eWxlczplLnN0eWxlcyxcbnJlcXVpcmVkU3R5bGVzOmUuc3R5bGVzJiZDS0VESVRPUi50b29scy5vYmplY3Qua2V5cyhlLnN0eWxlcyl9O2MmJihjPUooYyksZS5jbGFzc2VzPWNbXCJjbGFzc1wiXT9jW1wiY2xhc3NcIl0uc3BsaXQoL1xccysvKTpudWxsLGUucmVxdWlyZWRDbGFzc2VzPWUuY2xhc3NlcyxkZWxldGUgY1tcImNsYXNzXCJdLGUuYXR0cmlidXRlcz1jLGUucmVxdWlyZWRBdHRyaWJ1dGVzPWMmJkNLRURJVE9SLnRvb2xzLm9iamVjdC5rZXlzKGMpKX1lbHNlIGlmKENLRURJVE9SLnRvb2xzLmlzQXJyYXkoYikpe2ZvcihlPTA7ZTxiLmxlbmd0aDsrK2UpaD10aGlzLmFsbG93KGJbZV0sZCxjKTtyZXR1cm4gaH1hKHRoaXMsYixkLHRoaXMuYWxsb3dlZENvbnRlbnQsdGhpcy5fLmFsbG93ZWRSdWxlcyk7cmV0dXJuITB9LGFwcGx5VG86ZnVuY3Rpb24oYSxiLGQsYyl7aWYodGhpcy5kaXNhYmxlZClyZXR1cm4hMTt2YXIgZz10aGlzLGU9W10saD10aGlzLmVkaXRvciYmdGhpcy5lZGl0b3IuY29uZmlnLnByb3RlY3RlZFNvdXJjZSxcbmssZj0hMSxsPXtkb0ZpbHRlcjohZCxkb1RyYW5zZm9ybTohMCxkb0NhbGxiYWNrczohMCx0b0h0bWw6Yn07YS5mb3JFYWNoKGZ1bmN0aW9uKGEpe2lmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXtpZihcIm9mZlwiPT1hLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS1maWx0ZXJcIl0pcmV0dXJuITE7aWYoIWJ8fFwic3BhblwiIT1hLm5hbWV8fCF+Q0tFRElUT1IudG9vbHMub2JqZWN0LmtleXMoYS5hdHRyaWJ1dGVzKS5qb2luKFwifFwiKS5pbmRleE9mKFwiZGF0YS1ja2UtXCIpKWlmKGs9eChnLGEsZSxsKSxrJjEpZj0hMDtlbHNlIGlmKGsmMilyZXR1cm4hMX1lbHNlIGlmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9DT01NRU5UJiZhLnZhbHVlLm1hdGNoKC9eXFx7Y2tlX3Byb3RlY3RlZFxcfSg/IVxce0NcXH0pLykpe3ZhciBkO2E6e3ZhciBjPWRlY29kZVVSSUNvbXBvbmVudChhLnZhbHVlLnJlcGxhY2UoL15cXHtja2VfcHJvdGVjdGVkXFx9LyxcIlwiKSk7ZD1bXTt2YXIgbixtLE47aWYoaClmb3IobT0wO208XG5oLmxlbmd0aDsrK20paWYoKE49Yy5tYXRjaChoW21dKSkmJk5bMF0ubGVuZ3RoPT1jLmxlbmd0aCl7ZD0hMDticmVhayBhfWM9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChjKTsxPT1jLmNoaWxkcmVuLmxlbmd0aCYmKG49Yy5jaGlsZHJlblswXSkudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZ4KGcsbixkLGwpO2Q9IWQubGVuZ3RofWR8fGUucHVzaChhKX19LG51bGwsITApO2UubGVuZ3RoJiYoZj0hMCk7dmFyIG47YT1bXTtjPUdbY3x8KHRoaXMuZWRpdG9yP3RoaXMuZWRpdG9yLmVudGVyTW9kZTpDS0VESVRPUi5FTlRFUl9QKV07Zm9yKHZhciBtO2Q9ZS5wb3AoKTspZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQ/eShkLGMsYSk6ZC5yZW1vdmUoKTtmb3IoO249YS5wb3AoKTspaWYoZD1uLmVsLGQucGFyZW50KXN3aXRjaChtPUZbZC5wYXJlbnQubmFtZV18fEYuc3BhbixuLmNoZWNrKXtjYXNlIFwiaXRcIjpGLiRyZW1vdmVFbXB0eVtkLm5hbWVdJiZcbiFkLmNoaWxkcmVuLmxlbmd0aD95KGQsYyxhKTp1KGQpfHx5KGQsYyxhKTticmVhaztjYXNlIFwiZWwtdXBcIjpkLnBhcmVudC50eXBlPT1DS0VESVRPUi5OT0RFX0RPQ1VNRU5UX0ZSQUdNRU5UfHxtW2QubmFtZV18fHkoZCxjLGEpO2JyZWFrO2Nhc2UgXCJwYXJlbnQtZG93blwiOmQucGFyZW50LnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlR8fG1bZC5uYW1lXXx8eShkLnBhcmVudCxjLGEpfXJldHVybiBmfSxjaGVja0ZlYXR1cmU6ZnVuY3Rpb24oYSl7aWYodGhpcy5kaXNhYmxlZHx8IWEpcmV0dXJuITA7YS50b0ZlYXR1cmUmJihhPWEudG9GZWF0dXJlKHRoaXMuZWRpdG9yKSk7cmV0dXJuIWEucmVxdWlyZWRDb250ZW50fHx0aGlzLmNoZWNrKGEucmVxdWlyZWRDb250ZW50KX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITB9LGRpc2FsbG93OmZ1bmN0aW9uKGIpe2lmKCFrKHRoaXMsYiwhMCkpcmV0dXJuITE7XCJzdHJpbmdcIj09dHlwZW9mIGImJihiPVxuZyhiKSk7YSh0aGlzLGIsbnVsbCx0aGlzLmRpc2FsbG93ZWRDb250ZW50LHRoaXMuXy5kaXNhbGxvd2VkUnVsZXMpO3JldHVybiEwfSxhZGRDb250ZW50Rm9ybXM6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuZGlzYWJsZWQmJmEpe3ZhciBiLGQsYz1bXSxnO2ZvcihiPTA7YjxhLmxlbmd0aCYmIWc7KytiKWQ9YVtiXSwoXCJzdHJpbmdcIj09dHlwZW9mIGR8fGQgaW5zdGFuY2VvZiBDS0VESVRPUi5zdHlsZSkmJnRoaXMuY2hlY2soZCkmJihnPWQpO2lmKGcpe2ZvcihiPTA7YjxhLmxlbmd0aDsrK2IpYy5wdXNoKEIoYVtiXSxnKSk7dGhpcy5hZGRUcmFuc2Zvcm1hdGlvbnMoYyl9fX0sYWRkRWxlbWVudENhbGxiYWNrOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudENhbGxiYWNrc3x8KHRoaXMuZWxlbWVudENhbGxiYWNrcz1bXSk7dGhpcy5lbGVtZW50Q2FsbGJhY2tzLnB1c2goYSl9LGFkZEZlYXR1cmU6ZnVuY3Rpb24oYSl7aWYodGhpcy5kaXNhYmxlZHx8IWEpcmV0dXJuITA7YS50b0ZlYXR1cmUmJlxuKGE9YS50b0ZlYXR1cmUodGhpcy5lZGl0b3IpKTt0aGlzLmFsbG93KGEuYWxsb3dlZENvbnRlbnQsYS5uYW1lKTt0aGlzLmFkZFRyYW5zZm9ybWF0aW9ucyhhLmNvbnRlbnRUcmFuc2Zvcm1hdGlvbnMpO3RoaXMuYWRkQ29udGVudEZvcm1zKGEuY29udGVudEZvcm1zKTtyZXR1cm4gYS5yZXF1aXJlZENvbnRlbnQmJih0aGlzLmN1c3RvbUNvbmZpZ3x8dGhpcy5kaXNhbGxvd2VkQ29udGVudC5sZW5ndGgpP3RoaXMuY2hlY2soYS5yZXF1aXJlZENvbnRlbnQpOiEwfSxhZGRUcmFuc2Zvcm1hdGlvbnM6ZnVuY3Rpb24oYSl7dmFyIGIsZDtpZighdGhpcy5kaXNhYmxlZCYmYSl7dmFyIGM9dGhpcy5fLnRyYW5zZm9ybWF0aW9ucyxnO2ZvcihnPTA7ZzxhLmxlbmd0aDsrK2cpe2I9YVtnXTt2YXIgZT12b2lkIDAsaD12b2lkIDAsaz12b2lkIDAsZj12b2lkIDAsbD12b2lkIDAsbj12b2lkIDA7ZD1bXTtmb3IoaD0wO2g8Yi5sZW5ndGg7KytoKWs9YltoXSxcInN0cmluZ1wiPT10eXBlb2Ygaz8oaz1cbmsuc3BsaXQoL1xccyo6XFxzKi8pLGY9a1swXSxsPW51bGwsbj1rWzFdKTooZj1rLmNoZWNrLGw9ay5sZWZ0LG49ay5yaWdodCksZXx8KGU9ayxlPWUuZWxlbWVudD9lLmVsZW1lbnQ6Zj9mLm1hdGNoKC9eKFthLXowLTldKykvaSlbMF06ZS5sZWZ0LmdldERlZmluaXRpb24oKS5lbGVtZW50KSxsIGluc3RhbmNlb2YgQ0tFRElUT1Iuc3R5bGUmJihsPUQobCkpLGQucHVzaCh7Y2hlY2s6Zj09ZT9udWxsOmYsbGVmdDpsLHJpZ2h0Olwic3RyaW5nXCI9PXR5cGVvZiBuP0Mobik6bn0pO2I9ZTtjW2JdfHwoY1tiXT1bXSk7Y1tiXS5wdXNoKGQpfX19LGNoZWNrOmZ1bmN0aW9uKGEsYixkKXtpZih0aGlzLmRpc2FibGVkKXJldHVybiEwO2lmKENLRURJVE9SLnRvb2xzLmlzQXJyYXkoYSkpe2Zvcih2YXIgYz1hLmxlbmd0aDtjLS07KWlmKHRoaXMuY2hlY2soYVtjXSxiLGQpKXJldHVybiEwO3JldHVybiExfXZhciBlLGs7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGEpe2s9YStcIlxceDNjXCIrKCExPT09Yj9cIjBcIjpcblwiMVwiKSsoZD9cIjFcIjpcIjBcIikrXCJcXHgzZVwiO2lmKGsgaW4gdGhpcy5fLmNhY2hlZENoZWNrcylyZXR1cm4gdGhpcy5fLmNhY2hlZENoZWNrc1trXTtlPWcoYSkuJDE7dmFyIGY9ZS5zdHlsZXMsYz1lLmNsYXNzZXM7ZS5uYW1lPWUuZWxlbWVudHM7ZS5jbGFzc2VzPWM9Yz9jLnNwbGl0KC9cXHMqLFxccyovKTpbXTtlLnN0eWxlcz1oKGYpO2UuYXR0cmlidXRlcz1oKGUuYXR0cmlidXRlcyk7ZS5jaGlsZHJlbj1bXTtjLmxlbmd0aCYmKGUuYXR0cmlidXRlc1tcImNsYXNzXCJdPWMuam9pbihcIiBcIikpO2YmJihlLmF0dHJpYnV0ZXMuc3R5bGU9Q0tFRElUT1IudG9vbHMud3JpdGVDc3NUZXh0KGUuc3R5bGVzKSl9ZWxzZSBlPWEuZ2V0RGVmaW5pdGlvbigpLGY9ZS5zdHlsZXMsYz1lLmF0dHJpYnV0ZXN8fHt9LGYmJiFDS0VESVRPUi50b29scy5pc0VtcHR5KGYpPyhmPUooZiksYy5zdHlsZT1DS0VESVRPUi50b29scy53cml0ZUNzc1RleHQoZiwhMCkpOmY9e30sZT17bmFtZTplLmVsZW1lbnQsYXR0cmlidXRlczpjLFxuY2xhc3NlczpjW1wiY2xhc3NcIl0/Y1tcImNsYXNzXCJdLnNwbGl0KC9cXHMrLyk6W10sc3R5bGVzOmYsY2hpbGRyZW46W119O3ZhciBmPUNLRURJVE9SLnRvb2xzLmNsb25lKGUpLGw9W10sbjtpZighMSE9PWImJihuPXRoaXMuXy50cmFuc2Zvcm1hdGlvbnNbZS5uYW1lXSkpe2ZvcihjPTA7YzxuLmxlbmd0aDsrK2MpdCh0aGlzLGUsbltjXSk7cChlKX14KHRoaXMsZixsLHtkb0ZpbHRlcjohMCxkb1RyYW5zZm9ybTohMSE9PWIsc2tpcFJlcXVpcmVkOiFkLHNraXBGaW5hbFZhbGlkYXRpb246IWR9KTswPGwubGVuZ3RoP2Q9ITE6KChiPWUuYXR0cmlidXRlc1tcImNsYXNzXCJdKSYmKGUuYXR0cmlidXRlc1tcImNsYXNzXCJdPWUuYXR0cmlidXRlc1tcImNsYXNzXCJdLnNwbGl0KFwiIFwiKS5zb3J0KCkuam9pbihcIiBcIikpLGQ9Q0tFRElUT1IudG9vbHMub2JqZWN0Q29tcGFyZShlLmF0dHJpYnV0ZXMsZi5hdHRyaWJ1dGVzLCEwKSxiJiYoZS5hdHRyaWJ1dGVzW1wiY2xhc3NcIl09YikpO1wic3RyaW5nXCI9PXR5cGVvZiBhJiZcbih0aGlzLl8uY2FjaGVkQ2hlY2tzW2tdPWQpO3JldHVybiBkfSxnZXRBbGxvd2VkRW50ZXJNb2RlOmZ1bmN0aW9uKCl7dmFyIGE9W1wicFwiLFwiZGl2XCIsXCJiclwiXSxiPXtwOkNLRURJVE9SLkVOVEVSX1AsZGl2OkNLRURJVE9SLkVOVEVSX0RJVixicjpDS0VESVRPUi5FTlRFUl9CUn07cmV0dXJuIGZ1bmN0aW9uKGQsYyl7dmFyIGc9YS5zbGljZSgpLGU7aWYodGhpcy5jaGVjayhHW2RdKSlyZXR1cm4gZDtmb3IoY3x8KGc9Zy5yZXZlcnNlKCkpO2U9Zy5wb3AoKTspaWYodGhpcy5jaGVjayhlKSlyZXR1cm4gYltlXTtyZXR1cm4gQ0tFRElUT1IuRU5URVJfQlJ9fSgpLGNsb25lOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IENLRURJVE9SLmZpbHRlcixiPUNLRURJVE9SLnRvb2xzLmNsb25lO2EuYWxsb3dlZENvbnRlbnQ9Yih0aGlzLmFsbG93ZWRDb250ZW50KTthLl8uYWxsb3dlZFJ1bGVzPWIodGhpcy5fLmFsbG93ZWRSdWxlcyk7YS5kaXNhbGxvd2VkQ29udGVudD1iKHRoaXMuZGlzYWxsb3dlZENvbnRlbnQpO1xuYS5fLmRpc2FsbG93ZWRSdWxlcz1iKHRoaXMuXy5kaXNhbGxvd2VkUnVsZXMpO2EuXy50cmFuc2Zvcm1hdGlvbnM9Yih0aGlzLl8udHJhbnNmb3JtYXRpb25zKTthLmRpc2FibGVkPXRoaXMuZGlzYWJsZWQ7YS5lZGl0b3I9dGhpcy5lZGl0b3I7cmV0dXJuIGF9LGRlc3Ryb3k6ZnVuY3Rpb24oKXtkZWxldGUgQ0tFRElUT1IuZmlsdGVyLmluc3RhbmNlc1t0aGlzLmlkXTtkZWxldGUgdGhpcy5fO2RlbGV0ZSB0aGlzLmFsbG93ZWRDb250ZW50O2RlbGV0ZSB0aGlzLmRpc2FsbG93ZWRDb250ZW50fX07dmFyIE09e3N0eWxlczoxLGF0dHJpYnV0ZXM6MSxjbGFzc2VzOjF9LEg9e3N0eWxlczpcInJlcXVpcmVkU3R5bGVzXCIsYXR0cmlidXRlczpcInJlcXVpcmVkQXR0cmlidXRlc1wiLGNsYXNzZXM6XCJyZXF1aXJlZENsYXNzZXNcIn0sRT0vXihbYS16MC05XFwtKlxcc10rKSgoPzpcXHMqXFx7WyFcXHdcXC0sXFxzXFwqXStcXH1cXHMqfFxccypcXFtbIVxcd1xcLSxcXHNcXCpdK1xcXVxccyp8XFxzKlxcKFshXFx3XFwtLFxcc1xcKl0rXFwpXFxzKil7MCwzfSkoPzo7XFxzKnwkKS9pLFxuUD17c3R5bGVzOi97KFtefV0rKX0vLGF0dHJzOi9cXFsoW15cXF1dKylcXF0vLGNsYXNzZXM6L1xcKChbXlxcKV0rKVxcKS99LEw9L15ja2U6KG9iamVjdHxlbWJlZHxwYXJhbSkkLyxOPS9eKG9iamVjdHxlbWJlZHxwYXJhbSkkLyxPO089Q0tFRElUT1IuZmlsdGVyLnRyYW5zZm9ybWF0aW9uc1Rvb2xzPXtzaXplVG9TdHlsZTpmdW5jdGlvbihhKXt0aGlzLmxlbmd0aFRvU3R5bGUoYSxcIndpZHRoXCIpO3RoaXMubGVuZ3RoVG9TdHlsZShhLFwiaGVpZ2h0XCIpfSxzaXplVG9BdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7dGhpcy5sZW5ndGhUb0F0dHJpYnV0ZShhLFwid2lkdGhcIik7dGhpcy5sZW5ndGhUb0F0dHJpYnV0ZShhLFwiaGVpZ2h0XCIpfSxsZW5ndGhUb1N0eWxlOmZ1bmN0aW9uKGEsYixkKXtkPWR8fGI7aWYoIShkIGluIGEuc3R5bGVzKSl7dmFyIGM9YS5hdHRyaWJ1dGVzW2JdO2MmJigvXlxcZCskLy50ZXN0KGMpJiYoYys9XCJweFwiKSxhLnN0eWxlc1tkXT1jKX1kZWxldGUgYS5hdHRyaWJ1dGVzW2JdfSxcbmxlbmd0aFRvQXR0cmlidXRlOmZ1bmN0aW9uKGEsYixkKXtkPWR8fGI7aWYoIShkIGluIGEuYXR0cmlidXRlcykpe3ZhciBjPWEuc3R5bGVzW2JdLGc9YyYmYy5tYXRjaCgvXihcXGQrKSg/OlxcLlxcZCopP3B4JC8pO2c/YS5hdHRyaWJ1dGVzW2RdPWdbMV06XCJja2UtdGVzdFwiPT1jJiYoYS5hdHRyaWJ1dGVzW2RdPVwiY2tlLXRlc3RcIil9ZGVsZXRlIGEuc3R5bGVzW2JdfSxhbGlnbm1lbnRUb1N0eWxlOmZ1bmN0aW9uKGEpe2lmKCEoXCJmbG9hdFwiaW4gYS5zdHlsZXMpKXt2YXIgYj1hLmF0dHJpYnV0ZXMuYWxpZ247aWYoXCJsZWZ0XCI9PWJ8fFwicmlnaHRcIj09YilhLnN0eWxlc1tcImZsb2F0XCJdPWJ9ZGVsZXRlIGEuYXR0cmlidXRlcy5hbGlnbn0sYWxpZ25tZW50VG9BdHRyaWJ1dGU6ZnVuY3Rpb24oYSl7aWYoIShcImFsaWduXCJpbiBhLmF0dHJpYnV0ZXMpKXt2YXIgYj1hLnN0eWxlc1tcImZsb2F0XCJdO2lmKFwibGVmdFwiPT1ifHxcInJpZ2h0XCI9PWIpYS5hdHRyaWJ1dGVzLmFsaWduPWJ9ZGVsZXRlIGEuc3R5bGVzW1wiZmxvYXRcIl19LFxuc3BsaXRCb3JkZXJTaG9ydGhhbmQ6ZnVuY3Rpb24oYSl7aWYoYS5zdHlsZXMuYm9yZGVyKXt2YXIgYj1DS0VESVRPUi50b29scy5zdHlsZS5wYXJzZS5ib3JkZXIoYS5zdHlsZXMuYm9yZGVyKTtiLmNvbG9yJiYoYS5zdHlsZXNbXCJib3JkZXItY29sb3JcIl09Yi5jb2xvcik7Yi5zdHlsZSYmKGEuc3R5bGVzW1wiYm9yZGVyLXN0eWxlXCJdPWIuc3R5bGUpO2Iud2lkdGgmJihhLnN0eWxlc1tcImJvcmRlci13aWR0aFwiXT1iLndpZHRoKTtkZWxldGUgYS5zdHlsZXMuYm9yZGVyfX0sbGlzdFR5cGVUb1N0eWxlOmZ1bmN0aW9uKGEpe2lmKGEuYXR0cmlidXRlcy50eXBlKXN3aXRjaChhLmF0dHJpYnV0ZXMudHlwZSl7Y2FzZSBcImFcIjphLnN0eWxlc1tcImxpc3Qtc3R5bGUtdHlwZVwiXT1cImxvd2VyLWFscGhhXCI7YnJlYWs7Y2FzZSBcIkFcIjphLnN0eWxlc1tcImxpc3Qtc3R5bGUtdHlwZVwiXT1cInVwcGVyLWFscGhhXCI7YnJlYWs7Y2FzZSBcImlcIjphLnN0eWxlc1tcImxpc3Qtc3R5bGUtdHlwZVwiXT1cImxvd2VyLXJvbWFuXCI7XG5icmVhaztjYXNlIFwiSVwiOmEuc3R5bGVzW1wibGlzdC1zdHlsZS10eXBlXCJdPVwidXBwZXItcm9tYW5cIjticmVhaztjYXNlIFwiMVwiOmEuc3R5bGVzW1wibGlzdC1zdHlsZS10eXBlXCJdPVwiZGVjaW1hbFwiO2JyZWFrO2RlZmF1bHQ6YS5zdHlsZXNbXCJsaXN0LXN0eWxlLXR5cGVcIl09YS5hdHRyaWJ1dGVzLnR5cGV9fSxzcGxpdE1hcmdpblNob3J0aGFuZDpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGMpe2Euc3R5bGVzW1wibWFyZ2luLXRvcFwiXT1kW2NbMF1dO2Euc3R5bGVzW1wibWFyZ2luLXJpZ2h0XCJdPWRbY1sxXV07YS5zdHlsZXNbXCJtYXJnaW4tYm90dG9tXCJdPWRbY1syXV07YS5zdHlsZXNbXCJtYXJnaW4tbGVmdFwiXT1kW2NbM11dfWlmKGEuc3R5bGVzLm1hcmdpbil7dmFyIGQ9YS5zdHlsZXMubWFyZ2luLm1hdGNoKC8oYXV0b3wwfCg/OlxcLT9bXFwuXFxkXSsoPzpcXHcrfCUpKSkvZyl8fFtcIjBweFwiXTtzd2l0Y2goZC5sZW5ndGgpe2Nhc2UgMTpiKFswLDAsMCwwXSk7YnJlYWs7Y2FzZSAyOmIoWzAsMSwwLFxuMV0pO2JyZWFrO2Nhc2UgMzpiKFswLDEsMiwxXSk7YnJlYWs7Y2FzZSA0OmIoWzAsMSwyLDNdKX1kZWxldGUgYS5zdHlsZXMubWFyZ2lufX0sbWF0Y2hlc1N0eWxlOnYsdHJhbnNmb3JtOmZ1bmN0aW9uKGEsYil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGIpYS5uYW1lPWI7ZWxzZXt2YXIgZD1iLmdldERlZmluaXRpb24oKSxjPWQuc3R5bGVzLGc9ZC5hdHRyaWJ1dGVzLGUsaCxrLGY7YS5uYW1lPWQuZWxlbWVudDtmb3IoZSBpbiBnKWlmKFwiY2xhc3NcIj09ZSlmb3IoZD1hLmNsYXNzZXMuam9pbihcInxcIiksaz1nW2VdLnNwbGl0KC9cXHMrLyk7Zj1rLnBvcCgpOyktMT09ZC5pbmRleE9mKGYpJiZhLmNsYXNzZXMucHVzaChmKTtlbHNlIGEuYXR0cmlidXRlc1tlXT1nW2VdO2ZvcihoIGluIGMpYS5zdHlsZXNbaF09Y1toXX19fX0oKSxmdW5jdGlvbigpe0NLRURJVE9SLmZvY3VzTWFuYWdlcj1mdW5jdGlvbihhKXtpZihhLmZvY3VzTWFuYWdlcilyZXR1cm4gYS5mb2N1c01hbmFnZXI7dGhpcy5oYXNGb2N1cz1cbiExO3RoaXMuY3VycmVudEFjdGl2ZT1udWxsO3RoaXMuXz17ZWRpdG9yOmF9O3JldHVybiB0aGlzfTtDS0VESVRPUi5mb2N1c01hbmFnZXIuXz17Ymx1ckRlbGF5OjIwMH07Q0tFRElUT1IuZm9jdXNNYW5hZ2VyLnByb3RvdHlwZT17Zm9jdXM6ZnVuY3Rpb24oYSl7dGhpcy5fLnRpbWVyJiZjbGVhclRpbWVvdXQodGhpcy5fLnRpbWVyKTthJiYodGhpcy5jdXJyZW50QWN0aXZlPWEpO3RoaXMuaGFzRm9jdXN8fHRoaXMuXy5sb2NrZWR8fCgoYT1DS0VESVRPUi5jdXJyZW50SW5zdGFuY2UpJiZhLmZvY3VzTWFuYWdlci5ibHVyKDEpLHRoaXMuaGFzRm9jdXM9ITAsKGE9dGhpcy5fLmVkaXRvci5jb250YWluZXIpJiZhLmFkZENsYXNzKFwiY2tlX2ZvY3VzXCIpLHRoaXMuXy5lZGl0b3IuZmlyZShcImZvY3VzXCIpKX0sbG9jazpmdW5jdGlvbigpe3RoaXMuXy5sb2NrZWQ9MX0sdW5sb2NrOmZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuXy5sb2NrZWR9LGJsdXI6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gZigpe2lmKHRoaXMuaGFzRm9jdXMpe3RoaXMuaGFzRm9jdXM9XG4hMTt2YXIgYT10aGlzLl8uZWRpdG9yLmNvbnRhaW5lcjthJiZhLnJlbW92ZUNsYXNzKFwiY2tlX2ZvY3VzXCIpO3RoaXMuXy5lZGl0b3IuZmlyZShcImJsdXJcIil9fWlmKCF0aGlzLl8ubG9ja2VkKXt0aGlzLl8udGltZXImJmNsZWFyVGltZW91dCh0aGlzLl8udGltZXIpO3ZhciBlPUNLRURJVE9SLmZvY3VzTWFuYWdlci5fLmJsdXJEZWxheTthfHwhZT9mLmNhbGwodGhpcyk6dGhpcy5fLnRpbWVyPUNLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5fLnRpbWVyO2YuY2FsbCh0aGlzKX0sZSx0aGlzKX19LGFkZDpmdW5jdGlvbihhLGYpe3ZhciBlPWEuZ2V0Q3VzdG9tRGF0YShcImZvY3VzbWFuYWdlclwiKTtpZighZXx8ZSE9dGhpcyl7ZSYmZS5yZW1vdmUoYSk7dmFyIGU9XCJmb2N1c1wiLGI9XCJibHVyXCI7ZiYmKENLRURJVE9SLmVudi5pZT8oZT1cImZvY3VzaW5cIixiPVwiZm9jdXNvdXRcIik6Q0tFRElUT1IuZXZlbnQudXNlQ2FwdHVyZT0xKTt2YXIgYz17Ymx1cjpmdW5jdGlvbigpe2EuZXF1YWxzKHRoaXMuY3VycmVudEFjdGl2ZSkmJlxudGhpcy5ibHVyKCl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5mb2N1cyhhKX19O2Eub24oZSxjLmZvY3VzLHRoaXMpO2Eub24oYixjLmJsdXIsdGhpcyk7ZiYmKENLRURJVE9SLmV2ZW50LnVzZUNhcHR1cmU9MCk7YS5zZXRDdXN0b21EYXRhKFwiZm9jdXNtYW5hZ2VyXCIsdGhpcyk7YS5zZXRDdXN0b21EYXRhKFwiZm9jdXNtYW5hZ2VyX2hhbmRsZXJzXCIsYyl9fSxyZW1vdmU6ZnVuY3Rpb24oYSl7YS5yZW1vdmVDdXN0b21EYXRhKFwiZm9jdXNtYW5hZ2VyXCIpO3ZhciBmPWEucmVtb3ZlQ3VzdG9tRGF0YShcImZvY3VzbWFuYWdlcl9oYW5kbGVyc1wiKTthLnJlbW92ZUxpc3RlbmVyKFwiYmx1clwiLGYuYmx1cik7YS5yZW1vdmVMaXN0ZW5lcihcImZvY3VzXCIsZi5mb2N1cyl9fX0oKSxDS0VESVRPUi5rZXlzdHJva2VIYW5kbGVyPWZ1bmN0aW9uKGEpe2lmKGEua2V5c3Ryb2tlSGFuZGxlcilyZXR1cm4gYS5rZXlzdHJva2VIYW5kbGVyO3RoaXMua2V5c3Ryb2tlcz17fTt0aGlzLmJsb2NrZWRLZXlzdHJva2VzPVxue307dGhpcy5fPXtlZGl0b3I6YX07cmV0dXJuIHRoaXN9LGZ1bmN0aW9uKCl7dmFyIGEsZj1mdW5jdGlvbihiKXtiPWIuZGF0YTt2YXIgYz1iLmdldEtleXN0cm9rZSgpLGU9dGhpcy5rZXlzdHJva2VzW2NdLGY9dGhpcy5fLmVkaXRvcjthPSExPT09Zi5maXJlKFwia2V5XCIse2tleUNvZGU6Yyxkb21FdmVudDpifSk7YXx8KGUmJihhPSExIT09Zi5leGVjQ29tbWFuZChlLHtmcm9tOlwia2V5c3Ryb2tlSGFuZGxlclwifSkpLGF8fChhPSEhdGhpcy5ibG9ja2VkS2V5c3Ryb2tlc1tjXSkpO2EmJmIucHJldmVudERlZmF1bHQoITApO3JldHVybiFhfSxlPWZ1bmN0aW9uKGIpe2EmJihhPSExLGIuZGF0YS5wcmV2ZW50RGVmYXVsdCghMCkpfTtDS0VESVRPUi5rZXlzdHJva2VIYW5kbGVyLnByb3RvdHlwZT17YXR0YWNoOmZ1bmN0aW9uKGEpe2Eub24oXCJrZXlkb3duXCIsZix0aGlzKTtpZihDS0VESVRPUi5lbnYuZ2Vja28mJkNLRURJVE9SLmVudi5tYWMpYS5vbihcImtleXByZXNzXCIsZSx0aGlzKX19fSgpLFxuZnVuY3Rpb24oKXtDS0VESVRPUi5sYW5nPXtsYW5ndWFnZXM6e2FmOjEsYXI6MSxhejoxLGJnOjEsYm46MSxiczoxLGNhOjEsY3M6MSxjeToxLGRhOjEsZGU6MSxcImRlLWNoXCI6MSxlbDoxLFwiZW4tYXVcIjoxLFwiZW4tY2FcIjoxLFwiZW4tZ2JcIjoxLGVuOjEsZW86MSxlczoxLFwiZXMtbXhcIjoxLGV0OjEsZXU6MSxmYToxLGZpOjEsZm86MSxcImZyLWNhXCI6MSxmcjoxLGdsOjEsZ3U6MSxoZToxLGhpOjEsaHI6MSxodToxLGlkOjEsaXM6MSxpdDoxLGphOjEsa2E6MSxrbToxLGtvOjEsa3U6MSxsdDoxLGx2OjEsbWs6MSxtbjoxLG1zOjEsbmI6MSxubDoxLG5vOjEsb2M6MSxwbDoxLFwicHQtYnJcIjoxLHB0OjEscm86MSxydToxLHNpOjEsc2s6MSxzbDoxLHNxOjEsXCJzci1sYXRuXCI6MSxzcjoxLHN2OjEsdGg6MSx0cjoxLHR0OjEsdWc6MSx1azoxLHZpOjEsXCJ6aC1jblwiOjEsemg6MX0scnRsOnthcjoxLGZhOjEsaGU6MSxrdToxLHVnOjF9LGxvYWQ6ZnVuY3Rpb24oYSxmLGUpe2EmJkNLRURJVE9SLmxhbmcubGFuZ3VhZ2VzW2FdfHxcbihhPXRoaXMuZGV0ZWN0KGYsYSkpO3ZhciBiPXRoaXM7Zj1mdW5jdGlvbigpe2JbYV0uZGlyPWIucnRsW2FdP1wicnRsXCI6XCJsdHJcIjtlKGEsYlthXSl9O3RoaXNbYV0/ZigpOkNLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKENLRURJVE9SLmdldFVybChcImxhbmcvXCIrYStcIi5qc1wiKSxmLHRoaXMpfSxkZXRlY3Q6ZnVuY3Rpb24oYSxmKXt2YXIgZT10aGlzLmxhbmd1YWdlcztmPWZ8fG5hdmlnYXRvci51c2VyTGFuZ3VhZ2V8fG5hdmlnYXRvci5sYW5ndWFnZXx8YTt2YXIgYj1mLnRvTG93ZXJDYXNlKCkubWF0Y2goLyhbYS16XSspKD86LShbYS16XSspKT8vKSxjPWJbMV0sYj1iWzJdO2VbYytcIi1cIitiXT9jPWMrXCItXCIrYjplW2NdfHwoYz1udWxsKTtDS0VESVRPUi5sYW5nLmRldGVjdD1jP2Z1bmN0aW9uKCl7cmV0dXJuIGN9OmZ1bmN0aW9uKGEpe3JldHVybiBhfTtyZXR1cm4gY3x8YX19fSgpLENLRURJVE9SLnNjcmlwdExvYWRlcj1mdW5jdGlvbigpe3ZhciBhPXt9LGY9e307cmV0dXJue2xvYWQ6ZnVuY3Rpb24oZSxcbmIsYyxrKXt2YXIgbD1cInN0cmluZ1wiPT10eXBlb2YgZTtsJiYoZT1bZV0pO2N8fChjPUNLRURJVE9SKTt2YXIgbT1lLmxlbmd0aCxkPW0saD1bXSxnPVtdLG49ZnVuY3Rpb24oYSl7YiYmKGw/Yi5jYWxsKGMsYSk6Yi5jYWxsKGMsaCxnKSl9O2lmKDA9PT1kKW4oITApO2Vsc2V7dmFyIHc9ZnVuY3Rpb24oYSxiKXsoYj9oOmcpLnB1c2goYSk7MD49LS1kJiYoayYmQ0tFRElUT1IuZG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCkucmVtb3ZlU3R5bGUoXCJjdXJzb3JcIiksbihiKSl9LHg9ZnVuY3Rpb24oYixkKXthW2JdPTE7dmFyIGM9ZltiXTtkZWxldGUgZltiXTtmb3IodmFyIGc9MDtnPGMubGVuZ3RoO2crKyljW2ddKGIsZCl9LHI9ZnVuY3Rpb24oZCl7aWYoYVtkXSl3KGQsITApO2Vsc2V7dmFyIGM9ZltkXXx8KGZbZF09W10pO2MucHVzaCh3KTtpZighKDE8Yy5sZW5ndGgpKXt2YXIgZz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJzY3JpcHRcIik7Zy5zZXRBdHRyaWJ1dGVzKHt0eXBlOlwidGV4dC9qYXZhc2NyaXB0XCIsXG5zcmM6ZH0pO2ImJihDS0VESVRPUi5lbnYuaWUmJig4Pj1DS0VESVRPUi5lbnYudmVyc2lvbnx8Q0tFRElUT1IuZW52LmllOUNvbXBhdCk/Zy4kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpe2lmKFwibG9hZGVkXCI9PWcuJC5yZWFkeVN0YXRlfHxcImNvbXBsZXRlXCI9PWcuJC5yZWFkeVN0YXRlKWcuJC5vbnJlYWR5c3RhdGVjaGFuZ2U9bnVsbCx4KGQsITApfTooZy4kLm9ubG9hZD1mdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtnLiQub25sb2FkPW51bGw7Zy4kLm9uZXJyb3I9bnVsbDt4KGQsITApfSwwKX0sZy4kLm9uZXJyb3I9ZnVuY3Rpb24oKXtnLiQub25sb2FkPW51bGw7Zy4kLm9uZXJyb3I9bnVsbDt4KGQsITEpfSkpO2cuYXBwZW5kVG8oQ0tFRElUT1IuZG9jdW1lbnQuZ2V0SGVhZCgpKX19fTtrJiZDS0VESVRPUi5kb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKS5zZXRTdHlsZShcImN1cnNvclwiLFwid2FpdFwiKTtmb3IodmFyIHA9MDtwPG07cCsrKXIoZVtwXSl9fSxcbnF1ZXVlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBjOyhjPWJbMF0pJiZ0aGlzLmxvYWQoYy5zY3JpcHRVcmwsYy5jYWxsYmFjayxDS0VESVRPUiwwKX12YXIgYj1bXTtyZXR1cm4gZnVuY3Rpb24oYyxrKXt2YXIgZj10aGlzO2IucHVzaCh7c2NyaXB0VXJsOmMsY2FsbGJhY2s6ZnVuY3Rpb24oKXtrJiZrLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtiLnNoaWZ0KCk7YS5jYWxsKGYpfX0pOzE9PWIubGVuZ3RoJiZhLmNhbGwodGhpcyl9fSgpfX0oKSxDS0VESVRPUi5yZXNvdXJjZU1hbmFnZXI9ZnVuY3Rpb24oYSxmKXt0aGlzLmJhc2VQYXRoPWE7dGhpcy5maWxlTmFtZT1mO3RoaXMucmVnaXN0ZXJlZD17fTt0aGlzLmxvYWRlZD17fTt0aGlzLmV4dGVybmFscz17fTt0aGlzLl89e3dhaXRpbmdMaXN0Ont9fX0sQ0tFRElUT1IucmVzb3VyY2VNYW5hZ2VyLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGEsZil7aWYodGhpcy5yZWdpc3RlcmVkW2FdKXRocm93IEVycm9yKCdbQ0tFRElUT1IucmVzb3VyY2VNYW5hZ2VyLmFkZF0gVGhlIHJlc291cmNlIG5hbWUgXCInK1xuYSsnXCIgaXMgYWxyZWFkeSByZWdpc3RlcmVkLicpO3ZhciBlPXRoaXMucmVnaXN0ZXJlZFthXT1mfHx7fTtlLm5hbWU9YTtlLnBhdGg9dGhpcy5nZXRQYXRoKGEpO0NLRURJVE9SLmZpcmUoYStDS0VESVRPUi50b29scy5jYXBpdGFsaXplKHRoaXMuZmlsZU5hbWUpK1wiUmVhZHlcIixlKTtyZXR1cm4gdGhpcy5nZXQoYSl9LGdldDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5yZWdpc3RlcmVkW2FdfHxudWxsfSxnZXRQYXRoOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZXh0ZXJuYWxzW2FdO3JldHVybiBDS0VESVRPUi5nZXRVcmwoZiYmZi5kaXJ8fHRoaXMuYmFzZVBhdGgrYStcIi9cIil9LGdldEZpbGVQYXRoOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZXh0ZXJuYWxzW2FdO3JldHVybiBDS0VESVRPUi5nZXRVcmwodGhpcy5nZXRQYXRoKGEpKyhmP2YuZmlsZTp0aGlzLmZpbGVOYW1lK1wiLmpzXCIpKX0sYWRkRXh0ZXJuYWw6ZnVuY3Rpb24oYSxmLGUpe2V8fChmPWYucmVwbGFjZSgvW15cXC9dKyQvLFxuZnVuY3Rpb24oYSl7ZT1hO3JldHVyblwiXCJ9KSk7ZT1lfHx0aGlzLmZpbGVOYW1lK1wiLmpzXCI7YT1hLnNwbGl0KFwiLFwiKTtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl0aGlzLmV4dGVybmFsc1thW2JdXT17ZGlyOmYsZmlsZTplfX0sbG9hZDpmdW5jdGlvbihhLGYsZSl7Q0tFRElUT1IudG9vbHMuaXNBcnJheShhKXx8KGE9YT9bYV06W10pO2Zvcih2YXIgYj10aGlzLmxvYWRlZCxjPXRoaXMucmVnaXN0ZXJlZCxrPVtdLGw9e30sbT17fSxkPTA7ZDxhLmxlbmd0aDtkKyspe3ZhciBoPWFbZF07aWYoaClpZihiW2hdfHxjW2hdKW1baF09dGhpcy5nZXQoaCk7ZWxzZXt2YXIgZz10aGlzLmdldEZpbGVQYXRoKGgpO2sucHVzaChnKTtnIGluIGx8fChsW2ddPVtdKTtsW2ddLnB1c2goaCl9fUNLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKGssZnVuY3Rpb24oYSxkKXtpZihkLmxlbmd0aCl0aHJvdyBFcnJvcignW0NLRURJVE9SLnJlc291cmNlTWFuYWdlci5sb2FkXSBSZXNvdXJjZSBuYW1lIFwiJytcbmxbZFswXV0uam9pbihcIixcIikrJ1wiIHdhcyBub3QgZm91bmQgYXQgXCInK2RbMF0rJ1wiLicpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKWZvcih2YXIgZz1sW2FbY11dLGg9MDtoPGcubGVuZ3RoO2grKyl7dmFyIGs9Z1toXTttW2tdPXRoaXMuZ2V0KGspO2Jba109MX1mLmNhbGwoZSxtKX0sdGhpcyl9fSxDS0VESVRPUi5wbHVnaW5zPW5ldyBDS0VESVRPUi5yZXNvdXJjZU1hbmFnZXIoXCJwbHVnaW5zL1wiLFwicGx1Z2luXCIpLENLRURJVE9SLnBsdWdpbnMubG9hZD1DS0VESVRPUi50b29scy5vdmVycmlkZShDS0VESVRPUi5wbHVnaW5zLmxvYWQsZnVuY3Rpb24oYSl7dmFyIGY9e307cmV0dXJuIGZ1bmN0aW9uKGUsYixjKXt2YXIgaz17fSxsPWZ1bmN0aW9uKGUpe2EuY2FsbCh0aGlzLGUsZnVuY3Rpb24oYSl7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKGssYSk7dmFyIGU9W10sZztmb3IoZyBpbiBhKXt2YXIgbj1hW2ddLG09biYmbi5yZXF1aXJlcztpZighZltnXSl7aWYobi5pY29ucylmb3IodmFyIHg9XG5uLmljb25zLnNwbGl0KFwiLFwiKSxyPXgubGVuZ3RoO3ItLTspQ0tFRElUT1Iuc2tpbi5hZGRJY29uKHhbcl0sbi5wYXRoK1wiaWNvbnMvXCIrKENLRURJVE9SLmVudi5oaWRwaSYmbi5oaWRwaT9cImhpZHBpL1wiOlwiXCIpK3hbcl0rXCIucG5nXCIpO24uaXNTdXBwb3J0ZWRFbnZpcm9ubWVudD1uLmlzU3VwcG9ydGVkRW52aXJvbm1lbnR8fGZ1bmN0aW9uKCl7cmV0dXJuITB9O2ZbZ109MX1pZihtKWZvcihtLnNwbGl0JiYobT1tLnNwbGl0KFwiLFwiKSksbj0wO248bS5sZW5ndGg7bisrKWtbbVtuXV18fGUucHVzaChtW25dKX1pZihlLmxlbmd0aClsLmNhbGwodGhpcyxlKTtlbHNle2ZvcihnIGluIGspbj1rW2ddLG4ub25Mb2FkJiYhbi5vbkxvYWQuX2NhbGxlZCYmKCExPT09bi5vbkxvYWQoKSYmZGVsZXRlIGtbZ10sbi5vbkxvYWQuX2NhbGxlZD0xKTtiJiZiLmNhbGwoY3x8d2luZG93LGspfX0sdGhpcyl9O2wuY2FsbCh0aGlzLGUpfX0pLENLRURJVE9SLnBsdWdpbnMuc2V0TGFuZz1mdW5jdGlvbihhLFxuZixlKXt2YXIgYj10aGlzLmdldChhKTthPWIubGFuZ0VudHJpZXN8fChiLmxhbmdFbnRyaWVzPXt9KTtiPWIubGFuZ3x8KGIubGFuZz1bXSk7Yi5zcGxpdCYmKGI9Yi5zcGxpdChcIixcIikpOy0xPT1DS0VESVRPUi50b29scy5pbmRleE9mKGIsZikmJmIucHVzaChmKTthW2ZdPWV9LENLRURJVE9SLnVpPWZ1bmN0aW9uKGEpe2lmKGEudWkpcmV0dXJuIGEudWk7dGhpcy5pdGVtcz17fTt0aGlzLmluc3RhbmNlcz17fTt0aGlzLmVkaXRvcj1hO3RoaXMuXz17aGFuZGxlcnM6e319O3JldHVybiB0aGlzfSxDS0VESVRPUi51aS5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihhLGYsZSl7ZS5uYW1lPWEudG9Mb3dlckNhc2UoKTt2YXIgYj10aGlzLml0ZW1zW2FdPXt0eXBlOmYsY29tbWFuZDplLmNvbW1hbmR8fG51bGwsYXJnczpBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMsMil9O0NLRURJVE9SLnRvb2xzLmV4dGVuZChiLGUpfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuaW5zdGFuY2VzW2FdfSxcbmNyZWF0ZTpmdW5jdGlvbihhKXt2YXIgZj10aGlzLml0ZW1zW2FdLGU9ZiYmdGhpcy5fLmhhbmRsZXJzW2YudHlwZV0sYj1mJiZmLmNvbW1hbmQmJnRoaXMuZWRpdG9yLmdldENvbW1hbmQoZi5jb21tYW5kKSxlPWUmJmUuY3JlYXRlLmFwcGx5KHRoaXMsZi5hcmdzKTt0aGlzLmluc3RhbmNlc1thXT1lO2ImJmIudWlJdGVtcy5wdXNoKGUpO2UmJiFlLnR5cGUmJihlLnR5cGU9Zi50eXBlKTtyZXR1cm4gZX0sYWRkSGFuZGxlcjpmdW5jdGlvbihhLGYpe3RoaXMuXy5oYW5kbGVyc1thXT1mfSxzcGFjZTpmdW5jdGlvbihhKXtyZXR1cm4gQ0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLnNwYWNlSWQoYSkpfSxzcGFjZUlkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVkaXRvci5pZCtcIl9cIithfX0sQ0tFRElUT1IuZXZlbnQuaW1wbGVtZW50T24oQ0tFRElUT1IudWkpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGQsYyl7Q0tFRElUT1IuZXZlbnQuY2FsbCh0aGlzKTthPWEmJkNLRURJVE9SLnRvb2xzLmNsb25lKGEpO1xuaWYodm9pZCAwIT09ZCl7aWYoIShkIGluc3RhbmNlb2YgQ0tFRElUT1IuZG9tLmVsZW1lbnQpKXRocm93IEVycm9yKFwiRXhwZWN0IGVsZW1lbnQgb2YgdHlwZSBDS0VESVRPUi5kb20uZWxlbWVudC5cIik7aWYoIWMpdGhyb3cgRXJyb3IoXCJPbmUgb2YgdGhlIGVsZW1lbnQgbW9kZXMgbXVzdCBiZSBzcGVjaWZpZWQuXCIpO2lmKENLRURJVE9SLmVudi5pZSYmQ0tFRElUT1IuZW52LnF1aXJrcyYmYz09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORSl0aHJvdyBFcnJvcihcIklubGluZSBlbGVtZW50IG1vZGUgaXMgbm90IHN1cHBvcnRlZCBvbiBJRSBxdWlya3MuXCIpO2lmKCFlKGQsYykpdGhyb3cgRXJyb3IoJ1RoZSBzcGVjaWZpZWQgZWxlbWVudCBtb2RlIGlzIG5vdCBzdXBwb3J0ZWQgb24gZWxlbWVudDogXCInK2QuZ2V0TmFtZSgpKydcIi4nKTt0aGlzLmVsZW1lbnQ9ZDt0aGlzLmVsZW1lbnRNb2RlPWM7dGhpcy5uYW1lPXRoaXMuZWxlbWVudE1vZGUhPUNLRURJVE9SLkVMRU1FTlRfTU9ERV9BUFBFTkRUTyYmXG4oZC5nZXRJZCgpfHxkLmdldE5hbWVBdHQoKSl9ZWxzZSB0aGlzLmVsZW1lbnRNb2RlPUNLRURJVE9SLkVMRU1FTlRfTU9ERV9OT05FO3RoaXMuXz17fTt0aGlzLmNvbW1hbmRzPXt9O3RoaXMudGVtcGxhdGVzPXt9O3RoaXMubmFtZT10aGlzLm5hbWV8fGYoKTt0aGlzLmlkPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpO3RoaXMuc3RhdHVzPVwidW5sb2FkZWRcIjt0aGlzLmNvbmZpZz1DS0VESVRPUi50b29scy5wcm90b3R5cGVkQ29weShDS0VESVRPUi5jb25maWcpO3RoaXMudWk9bmV3IENLRURJVE9SLnVpKHRoaXMpO3RoaXMuZm9jdXNNYW5hZ2VyPW5ldyBDS0VESVRPUi5mb2N1c01hbmFnZXIodGhpcyk7dGhpcy5rZXlzdHJva2VIYW5kbGVyPW5ldyBDS0VESVRPUi5rZXlzdHJva2VIYW5kbGVyKHRoaXMpO3RoaXMub24oXCJyZWFkT25seVwiLGIpO3RoaXMub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixmdW5jdGlvbihhKXtrKHRoaXMsYS5kYXRhLnBhdGgpfSk7dGhpcy5vbihcImFjdGl2ZUZpbHRlckNoYW5nZVwiLFxuZnVuY3Rpb24oKXtrKHRoaXMsdGhpcy5lbGVtZW50UGF0aCgpLCEwKX0pO3RoaXMub24oXCJtb2RlXCIsYik7Q0tFRElUT1IuZG9tLnNlbGVjdGlvbi5zZXR1cEVkaXRvck9wdGltaXphdGlvbih0aGlzKTt0aGlzLm9uKFwiaW5zdGFuY2VSZWFkeVwiLGZ1bmN0aW9uKCl7aWYodGhpcy5jb25maWcuc3RhcnR1cEZvY3VzKXtpZihcImVuZFwiPT09dGhpcy5jb25maWcuc3RhcnR1cEZvY3VzKXt2YXIgYT10aGlzLmNyZWF0ZVJhbmdlKCk7YS5zZWxlY3ROb2RlQ29udGVudHModGhpcy5lZGl0YWJsZSgpKTthLnNocmluayhDS0VESVRPUi5TSFJJTktfRUxFTUVOVCwhMCk7YS5jb2xsYXBzZSgpO3RoaXMuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFthXSl9dGhpcy5mb2N1cygpfX0pO0NLRURJVE9SLmZpcmUoXCJpbnN0YW5jZUNyZWF0ZWRcIixudWxsLHRoaXMpO0NLRURJVE9SLmFkZCh0aGlzKTtDS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5pc0Rlc3Ryb3llZCgpfHxcbnRoaXMuaXNEZXRhY2hlZCgpfHxtKHRoaXMsYSl9LDAsdGhpcyl9ZnVuY3Rpb24gZigpe2RvIHZhciBhPVwiZWRpdG9yXCIrICsrcjt3aGlsZShDS0VESVRPUi5pbnN0YW5jZXNbYV0pO3JldHVybiBhfWZ1bmN0aW9uIGUoYSxiKXtyZXR1cm4gYj09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORT9hLmlzKENLRURJVE9SLmR0ZC4kZWRpdGFibGUpfHxhLmlzKFwidGV4dGFyZWFcIik6Yj09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0U/IWEuaXMoQ0tFRElUT1IuZHRkLiRub25Cb2R5Q29udGVudCk6MX1mdW5jdGlvbiBiKCl7dmFyIGE9dGhpcy5jb21tYW5kcyxiO2ZvcihiIGluIGEpYyh0aGlzLGFbYl0pfWZ1bmN0aW9uIGMoYSxiKXtiW2Iuc3RhcnREaXNhYmxlZD9cImRpc2FibGVcIjphLnJlYWRPbmx5JiYhYi5yZWFkT25seT9cImRpc2FibGVcIjpiLm1vZGVzW2EubW9kZV0/XCJlbmFibGVcIjpcImRpc2FibGVcIl0oKX1mdW5jdGlvbiBrKGEsYixkKXtpZihiKXt2YXIgYyxnLGU9YS5jb21tYW5kcztcbmZvcihnIGluIGUpYz1lW2ddLChkfHxjLmNvbnRleHRTZW5zaXRpdmUpJiZjLnJlZnJlc2goYSxiKX19ZnVuY3Rpb24gbChhKXt2YXIgYj1hLmNvbmZpZy5jdXN0b21Db25maWc7aWYoIWIpcmV0dXJuITE7dmFyIGI9Q0tFRElUT1IuZ2V0VXJsKGIpLGQ9cFtiXXx8KHBbYl09e30pO2QuZm4/KGQuZm4uY2FsbChhLGEuY29uZmlnKSxDS0VESVRPUi5nZXRVcmwoYS5jb25maWcuY3VzdG9tQ29uZmlnKSE9YiYmbChhKXx8YS5maXJlT25jZShcImN1c3RvbUNvbmZpZ0xvYWRlZFwiKSk6Q0tFRElUT1Iuc2NyaXB0TG9hZGVyLnF1ZXVlKGIsZnVuY3Rpb24oKXtkLmZuPWQuZm58fENLRURJVE9SLmVkaXRvckNvbmZpZ3x8ZnVuY3Rpb24oKXt9O2woYSl9KTtyZXR1cm4hMH1mdW5jdGlvbiBtKGEsYil7YS5vbihcImN1c3RvbUNvbmZpZ0xvYWRlZFwiLGZ1bmN0aW9uKCl7aWYoYil7aWYoYi5vbilmb3IodmFyIGMgaW4gYi5vbilhLm9uKGMsYi5vbltjXSk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKGEuY29uZmlnLFxuYiwhMCk7ZGVsZXRlIGEuY29uZmlnLm9ufWM9YS5jb25maWc7YS5yZWFkT25seT1jLnJlYWRPbmx5PyEwOmEuZWxlbWVudE1vZGU9PUNLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkU/YS5lbGVtZW50LmlzKFwidGV4dGFyZWFcIik/YS5lbGVtZW50Lmhhc0F0dHJpYnV0ZShcImRpc2FibGVkXCIpfHxhLmVsZW1lbnQuaGFzQXR0cmlidXRlKFwicmVhZG9ubHlcIik6YS5lbGVtZW50LmlzUmVhZE9ubHkoKTphLmVsZW1lbnRNb2RlPT1DS0VESVRPUi5FTEVNRU5UX01PREVfUkVQTEFDRT9hLmVsZW1lbnQuaGFzQXR0cmlidXRlKFwiZGlzYWJsZWRcIil8fGEuZWxlbWVudC5oYXNBdHRyaWJ1dGUoXCJyZWFkb25seVwiKTohMTthLmJsb2NrbGVzcz1hLmVsZW1lbnRNb2RlPT1DS0VESVRPUi5FTEVNRU5UX01PREVfSU5MSU5FPyEoYS5lbGVtZW50LmlzKFwidGV4dGFyZWFcIil8fENLRURJVE9SLmR0ZFthLmVsZW1lbnQuZ2V0TmFtZSgpXS5wKTohMTthLnRhYkluZGV4PWMudGFiSW5kZXh8fGEuZWxlbWVudCYmXG5hLmVsZW1lbnQuZ2V0QXR0cmlidXRlKFwidGFiaW5kZXhcIil8fDA7YS5hY3RpdmVFbnRlck1vZGU9YS5lbnRlck1vZGU9YS5ibG9ja2xlc3M/Q0tFRElUT1IuRU5URVJfQlI6Yy5lbnRlck1vZGU7YS5hY3RpdmVTaGlmdEVudGVyTW9kZT1hLnNoaWZ0RW50ZXJNb2RlPWEuYmxvY2tsZXNzP0NLRURJVE9SLkVOVEVSX0JSOmMuc2hpZnRFbnRlck1vZGU7Yy5za2luJiYoQ0tFRElUT1Iuc2tpbk5hbWU9Yy5za2luKTthLmZpcmVPbmNlKFwiY29uZmlnTG9hZGVkXCIpO2EuZGF0YVByb2Nlc3Nvcj1uZXcgQ0tFRElUT1IuaHRtbERhdGFQcm9jZXNzb3IoYSk7YS5maWx0ZXI9YS5hY3RpdmVGaWx0ZXI9bmV3IENLRURJVE9SLmZpbHRlcihhKTtkKGEpfSk7YiYmbnVsbCE9Yi5jdXN0b21Db25maWcmJihhLmNvbmZpZy5jdXN0b21Db25maWc9Yi5jdXN0b21Db25maWcpO2woYSl8fGEuZmlyZU9uY2UoXCJjdXN0b21Db25maWdMb2FkZWRcIil9ZnVuY3Rpb24gZChhKXtDS0VESVRPUi5za2luLmxvYWRQYXJ0KFwiZWRpdG9yXCIsXG5mdW5jdGlvbigpe2goYSl9KX1mdW5jdGlvbiBoKGEpe0NLRURJVE9SLmxhbmcubG9hZChhLmNvbmZpZy5sYW5ndWFnZSxhLmNvbmZpZy5kZWZhdWx0TGFuZ3VhZ2UsZnVuY3Rpb24oYixkKXt2YXIgYz1hLmNvbmZpZy50aXRsZSxlPWEuY29uZmlnLmFwcGxpY2F0aW9uVGl0bGU7YS5sYW5nQ29kZT1iO2EubGFuZz1DS0VESVRPUi50b29scy5wcm90b3R5cGVkQ29weShkKTthLnRpdGxlPVwic3RyaW5nXCI9PXR5cGVvZiBjfHwhMT09PWM/YzpbYS5sYW5nLmVkaXRvcixhLm5hbWVdLmpvaW4oXCIsIFwiKTthLmFwcGxpY2F0aW9uVGl0bGU9XCJzdHJpbmdcIj09dHlwZW9mIGV8fCExPT09ZT9lOlthLmxhbmcuYXBwbGljYXRpb24sYS5uYW1lXS5qb2luKFwiLCBcIik7YS5jb25maWcuY29udGVudHNMYW5nRGlyZWN0aW9ufHwoYS5jb25maWcuY29udGVudHNMYW5nRGlyZWN0aW9uPWEuZWxlbWVudE1vZGU9PUNLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkU/YS5lbGVtZW50LmdldERpcmVjdGlvbigxKTpcbmEubGFuZy5kaXIpO2EuZmlyZShcImxhbmdMb2FkZWRcIik7ZyhhKX0pfWZ1bmN0aW9uIGcoYSl7YS5nZXRTdHlsZXNTZXQoZnVuY3Rpb24oYil7YS5vbmNlKFwibG9hZGVkXCIsZnVuY3Rpb24oKXthLmZpcmUoXCJzdHlsZXNTZXRcIix7c3R5bGVzOmJ9KX0sbnVsbCxudWxsLDEpO24oYSl9KX1mdW5jdGlvbiBuKGEpe2Z1bmN0aW9uIGIoYSl7aWYoIWEpcmV0dXJuXCJcIjtDS0VESVRPUi50b29scy5pc0FycmF5KGEpJiYoYT1hLmpvaW4oXCIsXCIpKTtyZXR1cm4gYS5yZXBsYWNlKC9cXHMvZyxcIlwiKX12YXIgZD1hLmNvbmZpZyxjPWIoZC5wbHVnaW5zKSxnPWIoZC5leHRyYVBsdWdpbnMpLGU9YihkLnJlbW92ZVBsdWdpbnMpO2lmKGcpdmFyIGg9bmV3IFJlZ0V4cChcIig/Ol58LCkoPzpcIitnLnJlcGxhY2UoLywvZyxcInxcIikrXCIpKD9cXHgzZCx8JClcIixcImdcIiksYz1jLnJlcGxhY2UoaCxcIlwiKSxjPWMrKFwiLFwiK2cpO2lmKGUpdmFyIGs9bmV3IFJlZ0V4cChcIig/Ol58LCkoPzpcIitlLnJlcGxhY2UoLywvZyxcInxcIikrXG5cIikoP1xceDNkLHwkKVwiLFwiZ1wiKSxjPWMucmVwbGFjZShrLFwiXCIpO0NLRURJVE9SLmVudi5haXImJihjKz1cIixhZG9iZWFpclwiKTtDS0VESVRPUi5wbHVnaW5zLmxvYWQoYy5zcGxpdChcIixcIiksZnVuY3Rpb24oYil7dmFyIGM9W10sZz1bXSxlPVtdO2EucGx1Z2lucz1DS0VESVRPUi50b29scy5leHRlbmQoe30sYS5wbHVnaW5zLGIpO2Zvcih2YXIgaCBpbiBiKXt2YXIgZj1iW2hdLGw9Zi5sYW5nLG49bnVsbCxtPWYucmVxdWlyZXMsdjtDS0VESVRPUi50b29scy5pc0FycmF5KG0pJiYobT1tLmpvaW4oXCIsXCIpKTtpZihtJiYodj1tLm1hdGNoKGspKSlmb3IoO209di5wb3AoKTspQ0tFRElUT1IuZXJyb3IoXCJlZGl0b3ItcGx1Z2luLXJlcXVpcmVkXCIse3BsdWdpbjptLnJlcGxhY2UoXCIsXCIsXCJcIikscmVxdWlyZWRCeTpofSk7bCYmIWEubGFuZ1toXSYmKGwuc3BsaXQmJihsPWwuc3BsaXQoXCIsXCIpKSwwPD1DS0VESVRPUi50b29scy5pbmRleE9mKGwsYS5sYW5nQ29kZSk/bj1hLmxhbmdDb2RlOihuPVxuYS5sYW5nQ29kZS5yZXBsYWNlKC8tLiovLFwiXCIpLG49biE9YS5sYW5nQ29kZSYmMDw9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihsLG4pP246MDw9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihsLFwiZW5cIik/XCJlblwiOmxbMF0pLGYubGFuZ0VudHJpZXMmJmYubGFuZ0VudHJpZXNbbl0/KGEubGFuZ1toXT1mLmxhbmdFbnRyaWVzW25dLG49bnVsbCk6ZS5wdXNoKENLRURJVE9SLmdldFVybChmLnBhdGgrXCJsYW5nL1wiK24rXCIuanNcIikpKTtnLnB1c2gobik7Yy5wdXNoKGYpfUNLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKGUsZnVuY3Rpb24oKXtpZighYS5pc0Rlc3Ryb3llZCgpJiYhYS5pc0RldGFjaGVkKCkpe2Zvcih2YXIgYj1bXCJiZWZvcmVJbml0XCIsXCJpbml0XCIsXCJhZnRlckluaXRcIl0sZT0wO2U8Yi5sZW5ndGg7ZSsrKWZvcih2YXIgaD0wO2g8Yy5sZW5ndGg7aCsrKXt2YXIgaz1jW2hdOzA9PT1lJiZnW2hdJiZrLmxhbmcmJmsubGFuZ0VudHJpZXMmJihhLmxhbmdbay5uYW1lXT1rLmxhbmdFbnRyaWVzW2dbaF1dKTtcbmlmKGtbYltlXV0pa1tiW2VdXShhKX1hLmZpcmVPbmNlKFwicGx1Z2luc0xvYWRlZFwiKTtkLmtleXN0cm9rZXMmJmEuc2V0S2V5c3Ryb2tlKGEuY29uZmlnLmtleXN0cm9rZXMpO2ZvcihoPTA7aDxhLmNvbmZpZy5ibG9ja2VkS2V5c3Ryb2tlcy5sZW5ndGg7aCsrKWEua2V5c3Ryb2tlSGFuZGxlci5ibG9ja2VkS2V5c3Ryb2tlc1thLmNvbmZpZy5ibG9ja2VkS2V5c3Ryb2tlc1toXV09MTthLnN0YXR1cz1cImxvYWRlZFwiO2EuZmlyZU9uY2UoXCJsb2FkZWRcIik7Q0tFRElUT1IuZmlyZShcImluc3RhbmNlTG9hZGVkXCIsbnVsbCxhKX19KX0pfWZ1bmN0aW9uIHcoKXt2YXIgYT10aGlzLmVsZW1lbnQ7aWYoYSYmdGhpcy5lbGVtZW50TW9kZSE9Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0FQUEVORFRPKXt2YXIgYj10aGlzLmdldERhdGEoKTt0aGlzLmNvbmZpZy5odG1sRW5jb2RlT3V0cHV0JiYoYj1DS0VESVRPUi50b29scy5odG1sRW5jb2RlKGIpKTthLmlzKFwidGV4dGFyZWFcIik/YS5zZXRWYWx1ZShiKTpcbmEuc2V0SHRtbChiKTtyZXR1cm4hMH1yZXR1cm4hMX1mdW5jdGlvbiB4KGEsYil7ZnVuY3Rpb24gZChhKXt2YXIgYj1hLnN0YXJ0Q29udGFpbmVyLGM9YS5lbmRDb250YWluZXIsZz1iLmlzJiZiLmlzKFwidHJcIiksZT1iLmlzJiZiLmlzKFwidGRcIik7YT1lJiZiLmVxdWFscyhjKSYmYS5lbmRPZmZzZXQ9PT1iLmdldENoaWxkQ291bnQoKTtiPWUmJjE9PT1iLmdldENoaWxkQ291bnQoKSYmXCJpbWdcIj09PWIuZ2V0Q2hpbGRyZW4oKS5nZXRJdGVtKDApLmdldE5hbWUoKTtyZXR1cm4gZ3x8YSYmIWI/ITA6ITF9ZnVuY3Rpb24gYyhhKXt2YXIgYj1hLnN0YXJ0Q29udGFpbmVyO3JldHVybiBiLmlzKFwidHJcIik/YS5jbG9uZUNvbnRlbnRzKCk6Yi5jbG9uZSghMCl9Zm9yKHZhciBnPW5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudCxlLGgsayxmPTA7ZjxhLmxlbmd0aDtmKyspe3ZhciBsPWFbZl0sbj1sLnN0YXJ0Q29udGFpbmVyLmdldEFzY2VuZGFudChcInRyXCIsITApO2QobCk/KGV8fChlPVxubi5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKS5jbG9uZSgpLGUuYXBwZW5kKG4uZ2V0QXNjZW5kYW50KHt0aGVhZDoxLHRib2R5OjEsdGZvb3Q6MX0pLmNsb25lKCkpLGcuYXBwZW5kKGUpLGU9ZS5maW5kT25lKFwidGhlYWQsIHRib2R5LCB0Zm9vdFwiKSksaCYmaC5lcXVhbHMobil8fChoPW4saz1uLmNsb25lKCksZS5hcHBlbmQoaykpLGsuYXBwZW5kKGMobCkpKTpnLmFwcGVuZChsLmNsb25lQ29udGVudHMoKSl9cmV0dXJuIGU/ZzpiLmdldEh0bWxGcm9tUmFuZ2UoYVswXSl9YS5wcm90b3R5cGU9Q0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZTtDS0VESVRPUi5lZGl0b3I9YTt2YXIgcj0wLHA9e307Q0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmVkaXRvci5wcm90b3R5cGUse3BsdWdpbnM6e2RldGVjdENvbmZsaWN0OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBjPWJbZF07aWYodGhpc1tjXSlyZXR1cm4gQ0tFRElUT1Iud2FybihcImVkaXRvci1wbHVnaW4tY29uZmxpY3RcIixcbntwbHVnaW46YSxyZXBsYWNlZFdpdGg6Y30pLCEwfXJldHVybiExfX0sYWRkQ29tbWFuZDpmdW5jdGlvbihhLGIpe2IubmFtZT1hLnRvTG93ZXJDYXNlKCk7dmFyIGQ9YiBpbnN0YW5jZW9mIENLRURJVE9SLmNvbW1hbmQ/YjpuZXcgQ0tFRElUT1IuY29tbWFuZCh0aGlzLGIpO3RoaXMubW9kZSYmYyh0aGlzLGQpO3JldHVybiB0aGlzLmNvbW1hbmRzW2FdPWR9LF9hdHRhY2hUb0Zvcm06ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe2QudXBkYXRlRWxlbWVudCgpO2QuXy5yZXF1aXJlZCYmIWMuZ2V0VmFsdWUoKSYmITE9PT1kLmZpcmUoXCJyZXF1aXJlZFwiKSYmYi5kYXRhLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gYihhKXtyZXR1cm4hIShhJiZhLmNhbGwmJmEuYXBwbHkpfXZhciBkPXRoaXMsYz1kLmVsZW1lbnQsZz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYy4kLmZvcm0pO2MuaXMoXCJ0ZXh0YXJlYVwiKSYmZyYmKGcub24oXCJzdWJtaXRcIixhKSxiKGcuJC5zdWJtaXQpJiYoZy4kLnN1Ym1pdD1cbkNLRURJVE9SLnRvb2xzLm92ZXJyaWRlKGcuJC5zdWJtaXQsZnVuY3Rpb24oYil7cmV0dXJuIGZ1bmN0aW9uKCl7YSgpO2IuYXBwbHk/Yi5hcHBseSh0aGlzKTpiKCl9fSkpLGQub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtnLnJlbW92ZUxpc3RlbmVyKFwic3VibWl0XCIsYSl9KSl9LGRlc3Ryb3k6ZnVuY3Rpb24oYSl7dmFyIGI9Q0tFRElUT1IuZmlsdGVyLmluc3RhbmNlcyxkPXRoaXM7dGhpcy5maXJlKFwiYmVmb3JlRGVzdHJveVwiKTshYSYmdy5jYWxsKHRoaXMpO3RoaXMuZWRpdGFibGUobnVsbCk7dGhpcy5maWx0ZXImJmRlbGV0ZSB0aGlzLmZpbHRlcjtDS0VESVRPUi50b29scy5hcnJheS5mb3JFYWNoKENLRURJVE9SLnRvb2xzLm9iamVjdC5rZXlzKGIpLGZ1bmN0aW9uKGEpe2E9YlthXTtkPT09YS5lZGl0b3ImJmEuZGVzdHJveSgpfSk7ZGVsZXRlIHRoaXMuYWN0aXZlRmlsdGVyO3RoaXMuc3RhdHVzPVwiZGVzdHJveWVkXCI7dGhpcy5maXJlKFwiZGVzdHJveVwiKTt0aGlzLnJlbW92ZUFsbExpc3RlbmVycygpO1xuQ0tFRElUT1IucmVtb3ZlKHRoaXMpO0NLRURJVE9SLmZpcmUoXCJpbnN0YW5jZURlc3Ryb3llZFwiLG51bGwsdGhpcyl9LGVsZW1lbnRQYXRoOmZ1bmN0aW9uKGEpe2lmKCFhKXthPXRoaXMuZ2V0U2VsZWN0aW9uKCk7aWYoIWEpcmV0dXJuIG51bGw7YT1hLmdldFN0YXJ0RWxlbWVudCgpfXJldHVybiBhP25ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgoYSx0aGlzLmVkaXRhYmxlKCkpOm51bGx9LGNyZWF0ZVJhbmdlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lZGl0YWJsZSgpO3JldHVybiBhP25ldyBDS0VESVRPUi5kb20ucmFuZ2UoYSk6bnVsbH0sZXhlY0NvbW1hbmQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLmdldENvbW1hbmQoYSksYz17bmFtZTphLGNvbW1hbmREYXRhOmJ8fHt9LGNvbW1hbmQ6ZH07cmV0dXJuIGQmJmQuc3RhdGUhPUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEJiYhMSE9PXRoaXMuZmlyZShcImJlZm9yZUNvbW1hbmRFeGVjXCIsYykmJihjLnJldHVyblZhbHVlPVxuZC5leGVjKGMuY29tbWFuZERhdGEpLCFkLmFzeW5jJiYhMSE9PXRoaXMuZmlyZShcImFmdGVyQ29tbWFuZEV4ZWNcIixjKSk/Yy5yZXR1cm5WYWx1ZTohMX0sZ2V0Q29tbWFuZDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5jb21tYW5kc1thXX0sZ2V0RGF0YTpmdW5jdGlvbihhKXshYSYmdGhpcy5maXJlKFwiYmVmb3JlR2V0RGF0YVwiKTt2YXIgYj10aGlzLl8uZGF0YTtcInN0cmluZ1wiIT10eXBlb2YgYiYmKGI9KGI9dGhpcy5lbGVtZW50KSYmdGhpcy5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0U/Yi5pcyhcInRleHRhcmVhXCIpP2IuZ2V0VmFsdWUoKTpiLmdldEh0bWwoKTpcIlwiKTtiPXtkYXRhVmFsdWU6Yn07IWEmJnRoaXMuZmlyZShcImdldERhdGFcIixiKTtyZXR1cm4gYi5kYXRhVmFsdWV9LGdldFNuYXBzaG90OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5maXJlKFwiZ2V0U25hcHNob3RcIik7XCJzdHJpbmdcIiE9dHlwZW9mIGEmJihhPShhPXRoaXMuZWxlbWVudCkmJnRoaXMuZWxlbWVudE1vZGU9PVxuQ0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0U/YS5pcyhcInRleHRhcmVhXCIpP2EuZ2V0VmFsdWUoKTphLmdldEh0bWwoKTpcIlwiKTtyZXR1cm4gYX0sbG9hZFNuYXBzaG90OmZ1bmN0aW9uKGEpe3RoaXMuZmlyZShcImxvYWRTbmFwc2hvdFwiLGEpfSxzZXREYXRhOmZ1bmN0aW9uKGEsYixkKXt2YXIgYz0hMCxnPWI7YiYmXCJvYmplY3RcIj09dHlwZW9mIGImJihkPWIuaW50ZXJuYWwsZz1iLmNhbGxiYWNrLGM9IWIubm9TbmFwc2hvdCk7IWQmJmMmJnRoaXMuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtpZihnfHwhZCl0aGlzLm9uY2UoXCJkYXRhUmVhZHlcIixmdW5jdGlvbihhKXshZCYmYyYmdGhpcy5maXJlKFwic2F2ZVNuYXBzaG90XCIpO2cmJmcuY2FsbChhLmVkaXRvcil9KTthPXtkYXRhVmFsdWU6YX07IWQmJnRoaXMuZmlyZShcInNldERhdGFcIixhKTt0aGlzLl8uZGF0YT1hLmRhdGFWYWx1ZTshZCYmdGhpcy5maXJlKFwiYWZ0ZXJTZXREYXRhXCIsYSl9LHNldFJlYWRPbmx5OmZ1bmN0aW9uKGEpe2E9XG5udWxsPT1hfHxhO3RoaXMucmVhZE9ubHkhPWEmJih0aGlzLnJlYWRPbmx5PWEsdGhpcy5rZXlzdHJva2VIYW5kbGVyLmJsb2NrZWRLZXlzdHJva2VzWzhdPSthLHRoaXMuZWRpdGFibGUoKS5zZXRSZWFkT25seShhKSx0aGlzLmZpcmUoXCJyZWFkT25seVwiKSl9LGluc2VydEh0bWw6ZnVuY3Rpb24oYSxiLGQpe3RoaXMuZmlyZShcImluc2VydEh0bWxcIix7ZGF0YVZhbHVlOmEsbW9kZTpiLHJhbmdlOmR9KX0saW5zZXJ0VGV4dDpmdW5jdGlvbihhKXt0aGlzLmZpcmUoXCJpbnNlcnRUZXh0XCIsYSl9LGluc2VydEVsZW1lbnQ6ZnVuY3Rpb24oYSl7dGhpcy5maXJlKFwiaW5zZXJ0RWxlbWVudFwiLGEpfSxnZXRTZWxlY3RlZEh0bWw6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lZGl0YWJsZSgpLGQ9dGhpcy5nZXRTZWxlY3Rpb24oKSxkPWQmJmQuZ2V0UmFuZ2VzKCk7aWYoIWJ8fCFkfHwwPT09ZC5sZW5ndGgpcmV0dXJuIG51bGw7Yj14KGQsYik7cmV0dXJuIGE/Yi5nZXRIdG1sKCk6Yn0sZXh0cmFjdFNlbGVjdGVkSHRtbDpmdW5jdGlvbihhLFxuYil7dmFyIGQ9dGhpcy5lZGl0YWJsZSgpLGM9dGhpcy5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKSxnPW5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudCxlO2lmKCFkfHwwPT09Yy5sZW5ndGgpcmV0dXJuIG51bGw7Zm9yKGU9MDtlPGMubGVuZ3RoO2UrKylnLmFwcGVuZChkLmV4dHJhY3RIdG1sRnJvbVJhbmdlKGNbZV0sYikpO2J8fHRoaXMuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFtjWzBdXSk7cmV0dXJuIGE/Zy5nZXRIdG1sKCk6Z30sZm9jdXM6ZnVuY3Rpb24oKXt0aGlzLmZpcmUoXCJiZWZvcmVGb2N1c1wiKX0sY2hlY2tEaXJ0eTpmdW5jdGlvbigpe3JldHVyblwicmVhZHlcIj09dGhpcy5zdGF0dXMmJnRoaXMuXy5wcmV2aW91c1ZhbHVlIT09dGhpcy5nZXRTbmFwc2hvdCgpfSxyZXNldERpcnR5OmZ1bmN0aW9uKCl7dGhpcy5fLnByZXZpb3VzVmFsdWU9dGhpcy5nZXRTbmFwc2hvdCgpfSx1cGRhdGVFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHcuY2FsbCh0aGlzKX0sXG5zZXRLZXlzdHJva2U6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5rZXlzdHJva2VIYW5kbGVyLmtleXN0cm9rZXMsYj1DS0VESVRPUi50b29scy5pc0FycmF5KGFyZ3VtZW50c1swXSk/YXJndW1lbnRzWzBdOltbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKV0sZCxjLGc9Yi5sZW5ndGg7Zy0tOylkPWJbZ10sYz0wLENLRURJVE9SLnRvb2xzLmlzQXJyYXkoZCkmJihjPWRbMV0sZD1kWzBdKSxjP2FbZF09YzpkZWxldGUgYVtkXX0sZ2V0Q29tbWFuZEtleXN0cm9rZTpmdW5jdGlvbihhLGIpe3ZhciBkPVwic3RyaW5nXCI9PT10eXBlb2YgYT90aGlzLmdldENvbW1hbmQoYSk6YSxjPVtdO2lmKGQpe3ZhciBnPUNLRURJVE9SLnRvb2xzLm9iamVjdC5maW5kS2V5KHRoaXMuY29tbWFuZHMsZCksZT10aGlzLmtleXN0cm9rZUhhbmRsZXIua2V5c3Ryb2tlcztpZihkLmZha2VLZXlzdHJva2UpYy5wdXNoKGQuZmFrZUtleXN0cm9rZSk7ZWxzZSBmb3IodmFyIGggaW4gZSllW2hdPT09ZyYmYy5wdXNoKGgpfXJldHVybiBiP1xuYzpjWzBdfHxudWxsfSxhZGRGZWF0dXJlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmZpbHRlci5hZGRGZWF0dXJlKGEpfSxzZXRBY3RpdmVGaWx0ZXI6ZnVuY3Rpb24oYSl7YXx8KGE9dGhpcy5maWx0ZXIpO3RoaXMuYWN0aXZlRmlsdGVyIT09YSYmKHRoaXMuYWN0aXZlRmlsdGVyPWEsdGhpcy5maXJlKFwiYWN0aXZlRmlsdGVyQ2hhbmdlXCIpLGE9PT10aGlzLmZpbHRlcj90aGlzLnNldEFjdGl2ZUVudGVyTW9kZShudWxsLG51bGwpOnRoaXMuc2V0QWN0aXZlRW50ZXJNb2RlKGEuZ2V0QWxsb3dlZEVudGVyTW9kZSh0aGlzLmVudGVyTW9kZSksYS5nZXRBbGxvd2VkRW50ZXJNb2RlKHRoaXMuc2hpZnRFbnRlck1vZGUsITApKSl9LHNldEFjdGl2ZUVudGVyTW9kZTpmdW5jdGlvbihhLGIpe2E9YT90aGlzLmJsb2NrbGVzcz9DS0VESVRPUi5FTlRFUl9CUjphOnRoaXMuZW50ZXJNb2RlO2I9Yj90aGlzLmJsb2NrbGVzcz9DS0VESVRPUi5FTlRFUl9CUjpiOnRoaXMuc2hpZnRFbnRlck1vZGU7XG5pZih0aGlzLmFjdGl2ZUVudGVyTW9kZSE9YXx8dGhpcy5hY3RpdmVTaGlmdEVudGVyTW9kZSE9Yil0aGlzLmFjdGl2ZUVudGVyTW9kZT1hLHRoaXMuYWN0aXZlU2hpZnRFbnRlck1vZGU9Yix0aGlzLmZpcmUoXCJhY3RpdmVFbnRlck1vZGVDaGFuZ2VcIil9LHNob3dOb3RpZmljYXRpb246ZnVuY3Rpb24oYSl7YWxlcnQoYSl9LGlzRGV0YWNoZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIXRoaXMuY29udGFpbmVyJiZ0aGlzLmNvbnRhaW5lci5pc0RldGFjaGVkKCl9LGlzRGVzdHJveWVkOmZ1bmN0aW9uKCl7cmV0dXJuXCJkZXN0cm95ZWRcIj09PXRoaXMuc3RhdHVzfX0pO0NLRURJVE9SLmVkaXRvci5fZ2V0RWRpdG9yRWxlbWVudD1mdW5jdGlvbihhKXtpZighQ0tFRElUT1IuZW52LmlzQ29tcGF0aWJsZSlyZXR1cm4gbnVsbDt2YXIgYj1DS0VESVRPUi5kb20uZWxlbWVudC5nZXQoYSk7cmV0dXJuIGI/Yi5nZXRFZGl0b3IoKT8oQ0tFRElUT1IuZXJyb3IoXCJlZGl0b3ItZWxlbWVudC1jb25mbGljdFwiLFxue2VkaXRvck5hbWU6Yi5nZXRFZGl0b3IoKS5uYW1lfSksbnVsbCk6YjooQ0tFRElUT1IuZXJyb3IoXCJlZGl0b3ItaW5jb3JyZWN0LWVsZW1lbnRcIix7ZWxlbWVudDphfSksbnVsbCl9O0NLRURJVE9SLmVkaXRvci5pbml0aWFsaXplRGVsYXllZEVkaXRvckNyZWF0aW9uPWZ1bmN0aW9uKGEsYixkKXtpZihiLmRlbGF5SWZEZXRhY2hlZF9jYWxsYmFjaylyZXR1cm4gQ0tFRElUT1Iud2FybihcImVkaXRvci1kZWxheWVkLWNyZWF0aW9uXCIse21ldGhvZDpcImNhbGxiYWNrXCJ9KSxiLmRlbGF5SWZEZXRhY2hlZF9jYWxsYmFjayhmdW5jdGlvbigpe0NLRURJVE9SW2RdKGEsYik7Q0tFRElUT1Iud2FybihcImVkaXRvci1kZWxheWVkLWNyZWF0aW9uLXN1Y2Nlc3NcIix7bWV0aG9kOlwiY2FsbGJhY2tcIn0pfSksbnVsbDt2YXIgYz12b2lkIDA9PT1iLmRlbGF5SWZEZXRhY2hlZF9pbnRlcnZhbD9DS0VESVRPUi5jb25maWcuZGVsYXlJZkRldGFjaGVkX2ludGVydmFsOmIuZGVsYXlJZkRldGFjaGVkX2ludGVydmFsO1xuQ0tFRElUT1Iud2FybihcImVkaXRvci1kZWxheWVkLWNyZWF0aW9uXCIse21ldGhvZDpcImludGVydmFsIC0gXCIrYytcIiBtc1wifSk7dmFyIGc9c2V0SW50ZXJ2YWwoZnVuY3Rpb24oKXthLmlzRGV0YWNoZWQoKXx8KGNsZWFySW50ZXJ2YWwoZyksQ0tFRElUT1JbZF0oYSxiKSxDS0VESVRPUi53YXJuKFwiZWRpdG9yLWRlbGF5ZWQtY3JlYXRpb24tc3VjY2Vzc1wiLHttZXRob2Q6XCJpbnRlcnZhbCAtIFwiK2MrXCIgbXNcIn0pKX0sYyk7cmV0dXJuIGZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChnKX19O0NLRURJVE9SLmVkaXRvci5zaG91bGREZWxheUVkaXRvckNyZWF0aW9uPWZ1bmN0aW9uKGEsYil7Q0tFRElUT1IuZWRpdG9yLm1lcmdlRGVsYXllZENyZWF0aW9uQ29uZmlncyhiKTtyZXR1cm4gYiYmYi5kZWxheUlmRGV0YWNoZWQmJmEuaXNEZXRhY2hlZCgpfTtDS0VESVRPUi5lZGl0b3IubWVyZ2VEZWxheWVkQ3JlYXRpb25Db25maWdzPWZ1bmN0aW9uKGEpe2EmJihhLmRlbGF5SWZEZXRhY2hlZD1cImJvb2xlYW5cIj09PVxudHlwZW9mIGEuZGVsYXlJZkRldGFjaGVkP2EuZGVsYXlJZkRldGFjaGVkOkNLRURJVE9SLmNvbmZpZy5kZWxheUlmRGV0YWNoZWQsYS5kZWxheUlmRGV0YWNoZWRfaW50ZXJ2YWw9aXNOYU4oYS5kZWxheUlmRGV0YWNoZWRfaW50ZXJ2YWwpP0NLRURJVE9SLmNvbmZpZy5kZWxheUlmRGV0YWNoZWRfaW50ZXJ2YWw6YS5kZWxheUlmRGV0YWNoZWRfaW50ZXJ2YWwsYS5kZWxheUlmRGV0YWNoZWRfY2FsbGJhY2s9YS5kZWxheUlmRGV0YWNoZWRfY2FsbGJhY2t8fENLRURJVE9SLmNvbmZpZy5kZWxheUlmRGV0YWNoZWRfY2FsbGJhY2spfX0oKSxDS0VESVRPUi5FTEVNRU5UX01PREVfTk9ORT0wLENLRURJVE9SLkVMRU1FTlRfTU9ERV9SRVBMQUNFPTEsQ0tFRElUT1IuRUxFTUVOVF9NT0RFX0FQUEVORFRPPTIsQ0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORT0zLENLRURJVE9SLmNvbmZpZy5kZWxheUlmRGV0YWNoZWQ9ITEsQ0tFRElUT1IuY29uZmlnLmRlbGF5SWZEZXRhY2hlZF9jYWxsYmFjaz1cbnZvaWQgMCxDS0VESVRPUi5jb25maWcuZGVsYXlJZkRldGFjaGVkX2ludGVydmFsPTUwLENLRURJVE9SLmh0bWxQYXJzZXI9ZnVuY3Rpb24oKXt0aGlzLl89e2h0bWxQYXJ0c1JlZ2V4Oi88KD86KD86XFwvKFtePl0rKT4pfCg/OiEtLShbXFxTfFxcc10qPyktLSE/Pil8KD86KFteXFwvXFxzPl0rKSgoPzpcXHMrW1xcd1xcLTouXSsoPzpcXHMqPVxccyo/KD86KD86XCJbXlwiXSpcIil8KD86J1teJ10qJyl8W15cXHNcIidcXC8+XSspKT8pKilbXFxTXFxzXSo/KFxcLz8pPikpL2d9fSxmdW5jdGlvbigpe3ZhciBhPS8oW1xcd1xcLTouXSspKD86KD86XFxzKj1cXHMqKD86KD86XCIoW15cIl0qKVwiKXwoPzonKFteJ10qKScpfChbXlxccz5dKykpKXwoPz1cXHN8JCkpL2csZj17Y2hlY2tlZDoxLGNvbXBhY3Q6MSxkZWNsYXJlOjEsZGVmZXI6MSxkaXNhYmxlZDoxLGlzbWFwOjEsbXVsdGlwbGU6MSxub2hyZWY6MSxub3Jlc2l6ZToxLG5vc2hhZGU6MSxub3dyYXA6MSxyZWFkb25seToxLHNlbGVjdGVkOjF9O0NLRURJVE9SLmh0bWxQYXJzZXIucHJvdG90eXBlPVxue29uVGFnT3BlbjpmdW5jdGlvbigpe30sb25UYWdDbG9zZTpmdW5jdGlvbigpe30sb25UZXh0OmZ1bmN0aW9uKCl7fSxvbkNEQVRBOmZ1bmN0aW9uKCl7fSxvbkNvbW1lbnQ6ZnVuY3Rpb24oKXt9LHBhcnNlOmZ1bmN0aW9uKGUpe2Zvcih2YXIgYixjLGs9MCxsO2I9dGhpcy5fLmh0bWxQYXJ0c1JlZ2V4LmV4ZWMoZSk7KXtjPWIuaW5kZXg7aWYoYz5rKWlmKGs9ZS5zdWJzdHJpbmcoayxjKSxsKWwucHVzaChrKTtlbHNlIHRoaXMub25UZXh0KGspO2s9dGhpcy5fLmh0bWxQYXJ0c1JlZ2V4Lmxhc3RJbmRleDtpZihjPWJbMV0paWYoYz1jLnRvTG93ZXJDYXNlKCksbCYmQ0tFRElUT1IuZHRkLiRjZGF0YVtjXSYmKHRoaXMub25DREFUQShsLmpvaW4oXCJcIikpLGw9bnVsbCksIWwpe3RoaXMub25UYWdDbG9zZShjKTtjb250aW51ZX1pZihsKWwucHVzaChiWzBdKTtlbHNlIGlmKGM9YlszXSl7aWYoYz1jLnRvTG93ZXJDYXNlKCksIS89XCIvLnRlc3QoYykpe3ZhciBtPXt9LGQsaD1iWzRdO2I9XG4hIWJbNV07aWYoaClmb3IoO2Q9YS5leGVjKGgpOyl7dmFyIGc9ZFsxXS50b0xvd2VyQ2FzZSgpO2Q9ZFsyXXx8ZFszXXx8ZFs0XXx8XCJcIjttW2ddPSFkJiZmW2ddP2c6Q0tFRElUT1IudG9vbHMuaHRtbERlY29kZUF0dHIoZCl9dGhpcy5vblRhZ09wZW4oYyxtLGIpOyFsJiZDS0VESVRPUi5kdGQuJGNkYXRhW2NdJiYobD1bXSl9fWVsc2UgaWYoYz1iWzJdKXRoaXMub25Db21tZW50KGMpfWlmKGUubGVuZ3RoPmspdGhpcy5vblRleHQoZS5zdWJzdHJpbmcoayxlLmxlbmd0aCkpfX19KCksQ0tFRElUT1IuaHRtbFBhcnNlci5iYXNpY1dyaXRlcj1DS0VESVRPUi50b29scy5jcmVhdGVDbGFzcyh7JDpmdW5jdGlvbigpe3RoaXMuXz17b3V0cHV0OltdfX0scHJvdG86e29wZW5UYWc6ZnVuY3Rpb24oYSl7dGhpcy5fLm91dHB1dC5wdXNoKFwiXFx4M2NcIixhKX0sb3BlblRhZ0Nsb3NlOmZ1bmN0aW9uKGEsZil7Zj90aGlzLl8ub3V0cHV0LnB1c2goXCIgL1xceDNlXCIpOnRoaXMuXy5vdXRwdXQucHVzaChcIlxceDNlXCIpfSxcbmF0dHJpYnV0ZTpmdW5jdGlvbihhLGYpe1wic3RyaW5nXCI9PXR5cGVvZiBmJiYoZj1DS0VESVRPUi50b29scy5odG1sRW5jb2RlQXR0cihmKSk7dGhpcy5fLm91dHB1dC5wdXNoKFwiIFwiLGEsJ1xceDNkXCInLGYsJ1wiJyl9LGNsb3NlVGFnOmZ1bmN0aW9uKGEpe3RoaXMuXy5vdXRwdXQucHVzaChcIlxceDNjL1wiLGEsXCJcXHgzZVwiKX0sdGV4dDpmdW5jdGlvbihhKXt0aGlzLl8ub3V0cHV0LnB1c2goYSl9LGNvbW1lbnQ6ZnVuY3Rpb24oYSl7dGhpcy5fLm91dHB1dC5wdXNoKFwiXFx4M2MhLS1cIixhLFwiLS1cXHgzZVwiKX0sd3JpdGU6ZnVuY3Rpb24oYSl7dGhpcy5fLm91dHB1dC5wdXNoKGEpfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuXy5vdXRwdXQ9W107dGhpcy5fLmluZGVudD0hMX0sZ2V0SHRtbDpmdW5jdGlvbihhKXt2YXIgZj10aGlzLl8ub3V0cHV0LmpvaW4oXCJcIik7YSYmdGhpcy5yZXNldCgpO3JldHVybiBmfX19KSxcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe0NLRURJVE9SLmh0bWxQYXJzZXIubm9kZT1cbmZ1bmN0aW9uKCl7fTtDS0VESVRPUi5odG1sUGFyc2VyLm5vZGUucHJvdG90eXBlPXtyZW1vdmU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnBhcmVudC5jaGlsZHJlbixmPUNLRURJVE9SLnRvb2xzLmluZGV4T2YoYSx0aGlzKSxlPXRoaXMucHJldmlvdXMsYj10aGlzLm5leHQ7ZSYmKGUubmV4dD1iKTtiJiYoYi5wcmV2aW91cz1lKTthLnNwbGljZShmLDEpO3RoaXMucGFyZW50PW51bGx9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMucGFyZW50LmNoaWxkcmVuLGU9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihmLHRoaXMpLGI9YS5wcmV2aW91cz10aGlzLnByZXZpb3VzLGM9YS5uZXh0PXRoaXMubmV4dDtiJiYoYi5uZXh0PWEpO2MmJihjLnByZXZpb3VzPWEpO2ZbZV09YTthLnBhcmVudD10aGlzLnBhcmVudDt0aGlzLnBhcmVudD1udWxsfSxpbnNlcnRBZnRlcjpmdW5jdGlvbihhKXt2YXIgZj1hLnBhcmVudC5jaGlsZHJlbixlPUNLRURJVE9SLnRvb2xzLmluZGV4T2YoZixcbmEpLGI9YS5uZXh0O2Yuc3BsaWNlKGUrMSwwLHRoaXMpO3RoaXMubmV4dD1hLm5leHQ7dGhpcy5wcmV2aW91cz1hO2EubmV4dD10aGlzO2ImJihiLnByZXZpb3VzPXRoaXMpO3RoaXMucGFyZW50PWEucGFyZW50fSxpbnNlcnRCZWZvcmU6ZnVuY3Rpb24oYSl7dmFyIGY9YS5wYXJlbnQuY2hpbGRyZW4sZT1DS0VESVRPUi50b29scy5pbmRleE9mKGYsYSk7Zi5zcGxpY2UoZSwwLHRoaXMpO3RoaXMubmV4dD1hOyh0aGlzLnByZXZpb3VzPWEucHJldmlvdXMpJiYoYS5wcmV2aW91cy5uZXh0PXRoaXMpO2EucHJldmlvdXM9dGhpczt0aGlzLnBhcmVudD1hLnBhcmVudH0sZ2V0QXNjZW5kYW50OmZ1bmN0aW9uKGEpe3ZhciBmPVwiZnVuY3Rpb25cIj09dHlwZW9mIGE/YTpcInN0cmluZ1wiPT10eXBlb2YgYT9mdW5jdGlvbihiKXtyZXR1cm4gYi5uYW1lPT1hfTpmdW5jdGlvbihiKXtyZXR1cm4gYi5uYW1lIGluIGF9LGU9dGhpcy5wYXJlbnQ7Zm9yKDtlJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVDspe2lmKGYoZSkpcmV0dXJuIGU7XG5lPWUucGFyZW50fXJldHVybiBudWxsfSx3cmFwV2l0aDpmdW5jdGlvbihhKXt0aGlzLnJlcGxhY2VXaXRoKGEpO2EuYWRkKHRoaXMpO3JldHVybiBhfSxnZXRJbmRleDpmdW5jdGlvbigpe3JldHVybiBDS0VESVRPUi50b29scy5pbmRleE9mKHRoaXMucGFyZW50LmNoaWxkcmVuLHRoaXMpfSxnZXRGaWx0ZXJDb250ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhfHx7fX19fSgpLFwidXNlIHN0cmljdFwiLENLRURJVE9SLmh0bWxQYXJzZXIuY29tbWVudD1mdW5jdGlvbihhKXt0aGlzLnZhbHVlPWE7dGhpcy5fPXtpc0Jsb2NrTGlrZTohMX19LENLRURJVE9SLmh0bWxQYXJzZXIuY29tbWVudC5wcm90b3R5cGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLm5vZGUse3R5cGU6Q0tFRElUT1IuTk9ERV9DT01NRU5ULGZpbHRlcjpmdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMudmFsdWU7aWYoIShlPWEub25Db21tZW50KGYsZSx0aGlzKSkpcmV0dXJuIHRoaXMucmVtb3ZlKCksXG4hMTtpZihcInN0cmluZ1wiIT10eXBlb2YgZSlyZXR1cm4gdGhpcy5yZXBsYWNlV2l0aChlKSwhMTt0aGlzLnZhbHVlPWU7cmV0dXJuITB9LHdyaXRlSHRtbDpmdW5jdGlvbihhLGYpe2YmJnRoaXMuZmlsdGVyKGYpO2EuY29tbWVudCh0aGlzLnZhbHVlKX19KSxcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe0NLRURJVE9SLmh0bWxQYXJzZXIudGV4dD1mdW5jdGlvbihhKXt0aGlzLnZhbHVlPWE7dGhpcy5fPXtpc0Jsb2NrTGlrZTohMX19O0NLRURJVE9SLmh0bWxQYXJzZXIudGV4dC5wcm90b3R5cGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLm5vZGUse3R5cGU6Q0tFRElUT1IuTk9ERV9URVhULGZpbHRlcjpmdW5jdGlvbihhLGYpe2lmKCEodGhpcy52YWx1ZT1hLm9uVGV4dChmLHRoaXMudmFsdWUsdGhpcykpKXJldHVybiB0aGlzLnJlbW92ZSgpLCExfSx3cml0ZUh0bWw6ZnVuY3Rpb24oYSxmKXtmJiZ0aGlzLmZpbHRlcihmKTthLnRleHQodGhpcy52YWx1ZSl9fSl9KCksXG5cInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe0NLRURJVE9SLmh0bWxQYXJzZXIuY2RhdGE9ZnVuY3Rpb24oYSl7dGhpcy52YWx1ZT1hfTtDS0VESVRPUi5odG1sUGFyc2VyLmNkYXRhLnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLmh0bWxQYXJzZXIubm9kZSx7dHlwZTpDS0VESVRPUi5OT0RFX1RFWFQsZmlsdGVyOmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZ2V0QXNjZW5kYW50KFwic3R5bGVcIik7aWYoZiYmZi5nZXRBc2NlbmRhbnQoe21hdGg6MSxzdmc6MX0pKXt2YXIgZj1DS0VESVRPUi5odG1sUGFyc2VyLmZyYWdtZW50LmZyb21IdG1sKHRoaXMudmFsdWUpLGU9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXI7YS5hcHBseVRvKGYpO2Yud3JpdGVIdG1sKGUpO3RoaXMudmFsdWU9ZS5nZXRIdG1sKCl9fSx3cml0ZUh0bWw6ZnVuY3Rpb24oYSl7YS53cml0ZSh0aGlzLnZhbHVlKX19KX0oKSxcInVzZSBzdHJpY3RcIixDS0VESVRPUi5odG1sUGFyc2VyLmZyYWdtZW50PVxuZnVuY3Rpb24oKXt0aGlzLmNoaWxkcmVuPVtdO3RoaXMucGFyZW50PW51bGw7dGhpcy5fPXtpc0Jsb2NrTGlrZTohMCxoYXNJbmxpbmVTdGFydGVkOiExfX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS1zdXJ2aXZlXCJdPyExOlwiYVwiPT1hLm5hbWUmJmEuYXR0cmlidXRlcy5ocmVmfHxDS0VESVRPUi5kdGQuJHJlbW92ZUVtcHR5W2EubmFtZV19dmFyIGY9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHt0YWJsZToxLHVsOjEsb2w6MSxkbDoxfSxDS0VESVRPUi5kdGQudGFibGUsQ0tFRElUT1IuZHRkLnVsLENLRURJVE9SLmR0ZC5vbCxDS0VESVRPUi5kdGQuZGwpLGU9e29sOjEsdWw6MX0sYj1DS0VESVRPUi50b29scy5leHRlbmQoe30se2h0bWw6MX0sQ0tFRElUT1IuZHRkLmh0bWwsQ0tFRElUT1IuZHRkLmJvZHksQ0tFRElUT1IuZHRkLmhlYWQse3N0eWxlOjEsc2NyaXB0OjF9KSxjPXt1bDpcImxpXCIsb2w6XCJsaVwiLGRsOlwiZGRcIix0YWJsZTpcInRib2R5XCIsXG50Ym9keTpcInRyXCIsdGhlYWQ6XCJ0clwiLHRmb290OlwidHJcIix0cjpcInRkXCJ9O0NLRURJVE9SLmh0bWxQYXJzZXIuZnJhZ21lbnQuZnJvbUh0bWw9ZnVuY3Rpb24oayxsLG0pe2Z1bmN0aW9uIGQoYSl7dmFyIGI7aWYoMDx1Lmxlbmd0aClmb3IodmFyIGQ9MDtkPHUubGVuZ3RoO2QrKyl7dmFyIGM9dVtkXSxnPWMubmFtZSxlPUNLRURJVE9SLmR0ZFtnXSxrPXEubmFtZSYmQ0tFRElUT1IuZHRkW3EubmFtZV07ayYmIWtbZ118fGEmJmUmJiFlW2FdJiZDS0VESVRPUi5kdGRbYV0/Zz09cS5uYW1lJiYobihxLHEucGFyZW50LDEpLGQtLSk6KGJ8fChoKCksYj0xKSxjPWMuY2xvbmUoKSxjLnBhcmVudD1xLHE9Yyx1LnNwbGljZShkLDEpLGQtLSl9fWZ1bmN0aW9uIGgoKXtmb3IoO3oubGVuZ3RoOyluKHouc2hpZnQoKSxxKX1mdW5jdGlvbiBnKGEpe2lmKGEuXy5pc0Jsb2NrTGlrZSYmXCJwcmVcIiE9YS5uYW1lJiZcInRleHRhcmVhXCIhPWEubmFtZSl7dmFyIGI9YS5jaGlsZHJlbi5sZW5ndGgsZD1hLmNoaWxkcmVuW2ItXG4xXSxjO2QmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoKGM9Q0tFRElUT1IudG9vbHMucnRyaW0oZC52YWx1ZSkpP2QudmFsdWU9YzphLmNoaWxkcmVuLmxlbmd0aD1iLTEpfX1mdW5jdGlvbiBuKGIsZCxjKXtkPWR8fHF8fHA7dmFyIGU9cTt2b2lkIDA9PT1iLnByZXZpb3VzJiYodyhkLGIpJiYocT1kLHIub25UYWdPcGVuKG0se30pLGIucmV0dXJuUG9pbnQ9ZD1xKSxnKGIpLGEoYikmJiFiLmNoaWxkcmVuLmxlbmd0aHx8ZC5hZGQoYiksXCJwcmVcIj09Yi5uYW1lJiYoeT0hMSksXCJ0ZXh0YXJlYVwiPT1iLm5hbWUmJihBPSExKSk7Yi5yZXR1cm5Qb2ludD8ocT1iLnJldHVyblBvaW50LGRlbGV0ZSBiLnJldHVyblBvaW50KTpxPWM/ZDplfWZ1bmN0aW9uIHcoYSxiKXtpZigoYT09cHx8XCJib2R5XCI9PWEubmFtZSkmJm0mJighYS5uYW1lfHxDS0VESVRPUi5kdGRbYS5uYW1lXVttXSkpe3ZhciBkLGM7cmV0dXJuKGQ9Yi5hdHRyaWJ1dGVzJiYoYz1iLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS1yZWFsLWVsZW1lbnQtdHlwZVwiXSk/XG5jOmIubmFtZSkmJmQgaW4gQ0tFRElUT1IuZHRkLiRpbmxpbmUmJiEoZCBpbiBDS0VESVRPUi5kdGQuaGVhZCkmJiFiLmlzT3JwaGFufHxiLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVH19ZnVuY3Rpb24geChhLGIpe3JldHVybiBhIGluIENLRURJVE9SLmR0ZC4kbGlzdEl0ZW18fGEgaW4gQ0tFRElUT1IuZHRkLiR0YWJsZUNvbnRlbnQ/YT09Ynx8XCJkdFwiPT1hJiZcImRkXCI9PWJ8fFwiZGRcIj09YSYmXCJkdFwiPT1iOiExfXZhciByPW5ldyBDS0VESVRPUi5odG1sUGFyc2VyLHA9bCBpbnN0YW5jZW9mIENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudD9sOlwic3RyaW5nXCI9PXR5cGVvZiBsP25ldyBDS0VESVRPUi5odG1sUGFyc2VyLmVsZW1lbnQobCk6bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZnJhZ21lbnQsdT1bXSx6PVtdLHE9cCxBPVwidGV4dGFyZWFcIj09cC5uYW1lLHk9XCJwcmVcIj09cC5uYW1lO3Iub25UYWdPcGVuPWZ1bmN0aW9uKGMsZyxrLGwpe2c9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudChjLFxuZyk7Zy5pc1Vua25vd24mJmsmJihnLmlzRW1wdHk9ITApO2cuaXNPcHRpb25hbENsb3NlPWw7aWYoYShnKSl1LnB1c2goZyk7ZWxzZXtpZihcInByZVwiPT1jKXk9ITA7ZWxzZXtpZihcImJyXCI9PWMmJnkpe3EuYWRkKG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLnRleHQoXCJcXG5cIikpO3JldHVybn1cInRleHRhcmVhXCI9PWMmJihBPSEwKX1pZihcImJyXCI9PWMpei5wdXNoKGcpO2Vsc2V7Zm9yKDshKGw9KGs9cS5uYW1lKT9DS0VESVRPUi5kdGRba118fChxLl8uaXNCbG9ja0xpa2U/Q0tFRElUT1IuZHRkLmRpdjpDS0VESVRPUi5kdGQuc3Bhbik6YixnLmlzVW5rbm93bnx8cS5pc1Vua25vd258fGxbY10pOylpZihxLmlzT3B0aW9uYWxDbG9zZSlyLm9uVGFnQ2xvc2Uoayk7ZWxzZSBpZihjIGluIGUmJmsgaW4gZSlrPXEuY2hpbGRyZW4sKGs9a1trLmxlbmd0aC0xXSkmJlwibGlcIj09ay5uYW1lfHxuKGs9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudChcImxpXCIpLHEpLCFnLnJldHVyblBvaW50JiZcbihnLnJldHVyblBvaW50PXEpLHE9aztlbHNlIGlmKGMgaW4gQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSYmIXgoYyxrKSlyLm9uVGFnT3BlbihcImxpXCI9PWM/XCJ1bFwiOlwiZGxcIix7fSwwLDEpO2Vsc2UgaWYoayBpbiBmJiYheChjLGspKSFnLnJldHVyblBvaW50JiYoZy5yZXR1cm5Qb2ludD1xKSxxPXEucGFyZW50O2Vsc2UgaWYoayBpbiBDS0VESVRPUi5kdGQuJGlubGluZSYmdS51bnNoaWZ0KHEpLHEucGFyZW50KW4ocSxxLnBhcmVudCwxKTtlbHNle2cuaXNPcnBoYW49MTticmVha31kKGMpO2goKTtnLnBhcmVudD1xO2cuaXNFbXB0eT9uKGcpOnE9Z319fTtyLm9uVGFnQ2xvc2U9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiPXUubGVuZ3RoLTE7MDw9YjtiLS0paWYoYT09dVtiXS5uYW1lKXt1LnNwbGljZShiLDEpO3JldHVybn1mb3IodmFyIGQ9W10sYz1bXSxnPXE7ZyE9cCYmZy5uYW1lIT1hOylnLl8uaXNCbG9ja0xpa2V8fGMudW5zaGlmdChnKSxkLnB1c2goZyksZz1nLnJldHVyblBvaW50fHxcbmcucGFyZW50O2lmKGchPXApe2ZvcihiPTA7YjxkLmxlbmd0aDtiKyspe3ZhciBlPWRbYl07bihlLGUucGFyZW50KX1xPWc7Zy5fLmlzQmxvY2tMaWtlP2goKTooYj1DS0VESVRPUi5jb25maWcuc2hpZnRMaW5lQnJlYWtzLCEwIT09YiYmei5sZW5ndGgmJihcImZ1bmN0aW9uXCIhPT10eXBlb2YgYj9oKCk6KGI9Yih6W3oubGVuZ3RoLTFdKSwhMCE9PWImJihoKCksYiBpbnN0YW5jZW9mIENLRURJVE9SLmh0bWxQYXJzZXIudGV4dCYmcS5hZGQoYiksYiBpbnN0YW5jZW9mIENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudCYmbihiLHEpKSkpKTtuKGcsZy5wYXJlbnQpO2c9PXEmJihxPXEucGFyZW50KTt1PXUuY29uY2F0KGMpfVwiYm9keVwiPT1hJiYobT0hMSl9O3Iub25UZXh0PWZ1bmN0aW9uKGEpe2lmKCEocS5fLmhhc0lubGluZVN0YXJ0ZWQmJiF6Lmxlbmd0aHx8eXx8QSkmJihhPUNLRURJVE9SLnRvb2xzLmx0cmltKGEpLDA9PT1hLmxlbmd0aCkpcmV0dXJuO3ZhciBnPXEubmFtZSxlPWc/XG5DS0VESVRPUi5kdGRbZ118fChxLl8uaXNCbG9ja0xpa2U/Q0tFRElUT1IuZHRkLmRpdjpDS0VESVRPUi5kdGQuc3Bhbik6YjtpZighQSYmIWVbXCIjXCJdJiZnIGluIGYpci5vblRhZ09wZW4oY1tnXXx8XCJcIiksci5vblRleHQoYSk7ZWxzZXtoKCk7ZCgpO3l8fEF8fChhPWEucmVwbGFjZSgvW1xcdFxcclxcbiBdezIsfXxbXFx0XFxyXFxuXS9nLFwiIFwiKSk7YT1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci50ZXh0KGEpO2lmKHcocSxhKSl0aGlzLm9uVGFnT3BlbihtLHt9LDAsMSk7cS5hZGQoYSl9fTtyLm9uQ0RBVEE9ZnVuY3Rpb24oYSl7cS5hZGQobmV3IENLRURJVE9SLmh0bWxQYXJzZXIuY2RhdGEoYSkpfTtyLm9uQ29tbWVudD1mdW5jdGlvbihhKXtoKCk7ZCgpO3EuYWRkKG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLmNvbW1lbnQoYSkpfTtyLnBhcnNlKGspO2ZvcihoKCk7cSE9cDspbihxLHEucGFyZW50LDEpO2cocCk7cmV0dXJuIHB9O0NLRURJVE9SLmh0bWxQYXJzZXIuZnJhZ21lbnQucHJvdG90eXBlPVxue3R5cGU6Q0tFRElUT1IuTk9ERV9ET0NVTUVOVF9GUkFHTUVOVCxhZGQ6ZnVuY3Rpb24oYSxiKXtpc05hTihiKSYmKGI9dGhpcy5jaGlsZHJlbi5sZW5ndGgpO3ZhciBjPTA8Yj90aGlzLmNoaWxkcmVuW2ItMV06bnVsbDtpZihjKXtpZihhLl8uaXNCbG9ja0xpa2UmJmMudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoYy52YWx1ZT1DS0VESVRPUi50b29scy5ydHJpbShjLnZhbHVlKSwwPT09Yy52YWx1ZS5sZW5ndGgpKXt0aGlzLmNoaWxkcmVuLnBvcCgpO3RoaXMuYWRkKGEpO3JldHVybn1jLm5leHQ9YX1hLnByZXZpb3VzPWM7YS5wYXJlbnQ9dGhpczt0aGlzLmNoaWxkcmVuLnNwbGljZShiLDAsYSk7dGhpcy5fLmhhc0lubGluZVN0YXJ0ZWR8fCh0aGlzLl8uaGFzSW5saW5lU3RhcnRlZD1hLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVHx8YS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJiFhLl8uaXNCbG9ja0xpa2UpfSxmaWx0ZXI6ZnVuY3Rpb24oYSxiKXtiPXRoaXMuZ2V0RmlsdGVyQ29udGV4dChiKTtcbmEub25Sb290KGIsdGhpcyk7dGhpcy5maWx0ZXJDaGlsZHJlbihhLCExLGIpfSxmaWx0ZXJDaGlsZHJlbjpmdW5jdGlvbihhLGIsYyl7aWYodGhpcy5jaGlsZHJlbkZpbHRlcmVkQnkhPWEuaWQpe2M9dGhpcy5nZXRGaWx0ZXJDb250ZXh0KGMpO2lmKGImJiF0aGlzLnBhcmVudClhLm9uUm9vdChjLHRoaXMpO3RoaXMuY2hpbGRyZW5GaWx0ZXJlZEJ5PWEuaWQ7Zm9yKGI9MDtiPHRoaXMuY2hpbGRyZW4ubGVuZ3RoO2IrKykhMT09PXRoaXMuY2hpbGRyZW5bYl0uZmlsdGVyKGEsYykmJmItLX19LHdyaXRlSHRtbDpmdW5jdGlvbihhLGIpe2ImJnRoaXMuZmlsdGVyKGIpO3RoaXMud3JpdGVDaGlsZHJlbkh0bWwoYSl9LHdyaXRlQ2hpbGRyZW5IdG1sOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmdldEZpbHRlckNvbnRleHQoKTtpZihjJiYhdGhpcy5wYXJlbnQmJmIpYi5vblJvb3QoZCx0aGlzKTtiJiZ0aGlzLmZpbHRlckNoaWxkcmVuKGIsITEsZCk7Yj0wO2M9dGhpcy5jaGlsZHJlbjtcbmZvcihkPWMubGVuZ3RoO2I8ZDtiKyspY1tiXS53cml0ZUh0bWwoYSl9LGZvckVhY2g6ZnVuY3Rpb24oYSxiLGMpe2lmKCEoY3x8YiYmdGhpcy50eXBlIT1iKSl2YXIgZD1hKHRoaXMpO2lmKCExIT09ZCl7Yz10aGlzLmNoaWxkcmVuO2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKWQ9Y1tlXSxkLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVD9kLmZvckVhY2goYSxiKTpiJiZkLnR5cGUhPWJ8fGEoZCl9fSxnZXRGaWx0ZXJDb250ZXh0OmZ1bmN0aW9uKGEpe3JldHVybiBhfHx7fX19O0NLRURJVE9SLmNvbmZpZy5zaGlmdExpbmVCcmVha3M9ITB9KCksXCJ1c2Ugc3RyaWN0XCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7dGhpcy5ydWxlcz1bXX1mdW5jdGlvbiBmKGUsYixjLGspe3ZhciBmLG07Zm9yKGYgaW4gYikobT1lW2ZdKXx8KG09ZVtmXT1uZXcgYSksbS5hZGQoYltmXSxjLGspfUNLRURJVE9SLmh0bWxQYXJzZXIuZmlsdGVyPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKGUpe3RoaXMuaWQ9XG5DS0VESVRPUi50b29scy5nZXROZXh0TnVtYmVyKCk7dGhpcy5lbGVtZW50TmFtZVJ1bGVzPW5ldyBhO3RoaXMuYXR0cmlidXRlTmFtZVJ1bGVzPW5ldyBhO3RoaXMuZWxlbWVudHNSdWxlcz17fTt0aGlzLmF0dHJpYnV0ZXNSdWxlcz17fTt0aGlzLnRleHRSdWxlcz1uZXcgYTt0aGlzLmNvbW1lbnRSdWxlcz1uZXcgYTt0aGlzLnJvb3RSdWxlcz1uZXcgYTtlJiZ0aGlzLmFkZFJ1bGVzKGUsMTApfSxwcm90bzp7YWRkUnVsZXM6ZnVuY3Rpb24oYSxiKXt2YXIgYztcIm51bWJlclwiPT10eXBlb2YgYj9jPWI6YiYmXCJwcmlvcml0eVwiaW4gYiYmKGM9Yi5wcmlvcml0eSk7XCJudW1iZXJcIiE9dHlwZW9mIGMmJihjPTEwKTtcIm9iamVjdFwiIT10eXBlb2YgYiYmKGI9e30pO2EuZWxlbWVudE5hbWVzJiZ0aGlzLmVsZW1lbnROYW1lUnVsZXMuYWRkTWFueShhLmVsZW1lbnROYW1lcyxjLGIpO2EuYXR0cmlidXRlTmFtZXMmJnRoaXMuYXR0cmlidXRlTmFtZVJ1bGVzLmFkZE1hbnkoYS5hdHRyaWJ1dGVOYW1lcyxcbmMsYik7YS5lbGVtZW50cyYmZih0aGlzLmVsZW1lbnRzUnVsZXMsYS5lbGVtZW50cyxjLGIpO2EuYXR0cmlidXRlcyYmZih0aGlzLmF0dHJpYnV0ZXNSdWxlcyxhLmF0dHJpYnV0ZXMsYyxiKTthLnRleHQmJnRoaXMudGV4dFJ1bGVzLmFkZChhLnRleHQsYyxiKTthLmNvbW1lbnQmJnRoaXMuY29tbWVudFJ1bGVzLmFkZChhLmNvbW1lbnQsYyxiKTthLnJvb3QmJnRoaXMucm9vdFJ1bGVzLmFkZChhLnJvb3QsYyxiKX0sYXBwbHlUbzpmdW5jdGlvbihhKXthLmZpbHRlcih0aGlzKX0sb25FbGVtZW50TmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVsZW1lbnROYW1lUnVsZXMuZXhlY09uTmFtZShhLGIpfSxvbkF0dHJpYnV0ZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5hdHRyaWJ1dGVOYW1lUnVsZXMuZXhlY09uTmFtZShhLGIpfSxvblRleHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiB0aGlzLnRleHRSdWxlcy5leGVjKGEsYixjKX0sb25Db21tZW50OmZ1bmN0aW9uKGEsXG5iLGMpe3JldHVybiB0aGlzLmNvbW1lbnRSdWxlcy5leGVjKGEsYixjKX0sb25Sb290OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMucm9vdFJ1bGVzLmV4ZWMoYSxiKX0sb25FbGVtZW50OmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPVt0aGlzLmVsZW1lbnRzUnVsZXNbXCJeXCJdLHRoaXMuZWxlbWVudHNSdWxlc1tiLm5hbWVdLHRoaXMuZWxlbWVudHNSdWxlcy4kXSxrLGY9MDszPmY7ZisrKWlmKGs9Y1tmXSl7az1rLmV4ZWMoYSxiLHRoaXMpO2lmKCExPT09aylyZXR1cm4gbnVsbDtpZihrJiZrIT1iKXJldHVybiB0aGlzLm9uTm9kZShhLGspO2lmKGIucGFyZW50JiYhYi5uYW1lKWJyZWFrfXJldHVybiBifSxvbk5vZGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLnR5cGU7cmV0dXJuIGM9PUNLRURJVE9SLk5PREVfRUxFTUVOVD90aGlzLm9uRWxlbWVudChhLGIpOmM9PUNLRURJVE9SLk5PREVfVEVYVD9uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci50ZXh0KHRoaXMub25UZXh0KGEsYi52YWx1ZSxcbmIpKTpjPT1DS0VESVRPUi5OT0RFX0NPTU1FTlQ/bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuY29tbWVudCh0aGlzLm9uQ29tbWVudChhLGIudmFsdWUsYikpOm51bGx9LG9uQXR0cmlidXRlOmZ1bmN0aW9uKGEsYixjLGspe3JldHVybihjPXRoaXMuYXR0cmlidXRlc1J1bGVzW2NdKT9jLmV4ZWMoYSxrLGIsdGhpcyk6a319fSk7Q0tFRElUT1IuaHRtbFBhcnNlci5maWx0ZXJSdWxlc0dyb3VwPWE7YS5wcm90b3R5cGU9e2FkZDpmdW5jdGlvbihhLGIsYyl7dGhpcy5ydWxlcy5zcGxpY2UodGhpcy5maW5kSW5kZXgoYiksMCx7dmFsdWU6YSxwcmlvcml0eTpiLG9wdGlvbnM6Y30pfSxhZGRNYW55OmZ1bmN0aW9uKGEsYixjKXtmb3IodmFyIGs9W3RoaXMuZmluZEluZGV4KGIpLDBdLGY9MCxtPWEubGVuZ3RoO2Y8bTtmKyspay5wdXNoKHt2YWx1ZTphW2ZdLHByaW9yaXR5OmIsb3B0aW9uczpjfSk7dGhpcy5ydWxlcy5zcGxpY2UuYXBwbHkodGhpcy5ydWxlcyxrKX0sZmluZEluZGV4OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1cbnRoaXMucnVsZXMsYz1iLmxlbmd0aC0xOzA8PWMmJmE8YltjXS5wcmlvcml0eTspYy0tO3JldHVybiBjKzF9LGV4ZWM6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iIGluc3RhbmNlb2YgQ0tFRElUT1IuaHRtbFBhcnNlci5ub2RlfHxiIGluc3RhbmNlb2YgQ0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudCxrPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxmPXRoaXMucnVsZXMsbT1mLmxlbmd0aCxkLGgsZyxuO2ZvcihuPTA7bjxtO24rKylpZihjJiYoZD1iLnR5cGUsaD1iLm5hbWUpLGc9ZltuXSwhKGEubm9uRWRpdGFibGUmJiFnLm9wdGlvbnMuYXBwbHlUb0FsbHx8YS5uZXN0ZWRFZGl0YWJsZSYmZy5vcHRpb25zLmV4Y2x1ZGVOZXN0ZWRFZGl0YWJsZSkpe2c9Zy52YWx1ZS5hcHBseShudWxsLGspO2lmKCExPT09Z3x8YyYmZyYmKGcubmFtZSE9aHx8Zy50eXBlIT1kKSlyZXR1cm4gZztudWxsIT1nJiYoa1swXT1iPWcpfXJldHVybiBifSxleGVjT25OYW1lOmZ1bmN0aW9uKGEsXG5iKXtmb3IodmFyIGM9MCxrPXRoaXMucnVsZXMsZj1rLmxlbmd0aCxtO2ImJmM8ZjtjKyspbT1rW2NdLGEubm9uRWRpdGFibGUmJiFtLm9wdGlvbnMuYXBwbHlUb0FsbHx8YS5uZXN0ZWRFZGl0YWJsZSYmbS5vcHRpb25zLmV4Y2x1ZGVOZXN0ZWRFZGl0YWJsZXx8KGI9Yi5yZXBsYWNlKG0udmFsdWVbMF0sbS52YWx1ZVsxXSkpO3JldHVybiBifX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsZCl7ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYXx8Q0tFRElUT1IuZW52Lm5lZWRzTmJzcEZpbGxlcj9uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci50ZXh0KFwiwqBcIik6bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudChcImJyXCIse1wiZGF0YS1ja2UtYm9ndXNcIjoxfSl9ZnVuY3Rpb24gaChhLGQpe3JldHVybiBmdW5jdGlvbihjKXtpZihjLnR5cGUhPUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQpe3ZhciBoPVtdLGw9ZShjKSxuLE47aWYobClmb3IoZihsLDEpJiZoLnB1c2gobCk7bDspayhsKSYmXG4obj1iKGwpKSYmZihuKSYmKChOPWIobikpJiYhayhOKT9oLnB1c2gobik6KGcobSkuaW5zZXJ0QWZ0ZXIobiksbi5yZW1vdmUoKSkpLGw9bC5wcmV2aW91cztmb3IobD0wO2w8aC5sZW5ndGg7bCsrKWhbbF0ucmVtb3ZlKCk7aWYoaD0hYXx8ITEhPT0oXCJmdW5jdGlvblwiPT10eXBlb2YgZD9kKGMpOmQpKW18fENLRURJVE9SLmVudi5uZWVkc0JyRmlsbGVyfHxjLnR5cGUhPUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQ/bXx8Q0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXJ8fCEoNzxkb2N1bWVudC5kb2N1bWVudE1vZGV8fGMubmFtZSBpbiBDS0VESVRPUi5kdGQudHJ8fGMubmFtZSBpbiBDS0VESVRPUi5kdGQuJGxpc3RJdGVtKT8oaD1lKGMpLGg9IWh8fFwiZm9ybVwiPT1jLm5hbWUmJlwiaW5wdXRcIj09aC5uYW1lKTpoPSExOmg9ITE7aCYmYy5hZGQoZyhhKSl9fX1mdW5jdGlvbiBmKGEsYil7aWYoKCFtfHxDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlcikmJmEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZcblwiYnJcIj09YS5uYW1lJiYhYS5hdHRyaWJ1dGVzW1wiZGF0YS1ja2UtZW9sXCJdKXJldHVybiEwO3ZhciBkO3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKGQ9YS52YWx1ZS5tYXRjaCh6KSkmJihkLmluZGV4JiYoKG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLnRleHQoYS52YWx1ZS5zdWJzdHJpbmcoMCxkLmluZGV4KSkpLmluc2VydEJlZm9yZShhKSxhLnZhbHVlPWRbMF0pLCFDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlciYmbSYmKCFifHxhLnBhcmVudC5uYW1lIGluIEwpfHwhbSYmKChkPWEucHJldmlvdXMpJiZcImJyXCI9PWQubmFtZXx8IWR8fGsoZCkpKT8hMDohMX12YXIgbj17ZWxlbWVudHM6e319LG09XCJodG1sXCI9PWQsTD1DS0VESVRPUi50b29scy5leHRlbmQoe30sdCksdztmb3IodyBpbiBMKVwiI1wiaW4gQVt3XXx8ZGVsZXRlIExbd107Zm9yKHcgaW4gTCluLmVsZW1lbnRzW3ddPWgobSxhLmNvbmZpZy5maWxsRW1wdHlCbG9ja3MpO24ucm9vdD1oKG0sITEpO24uZWxlbWVudHMuYnI9XG5mdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oZCl7aWYoZC5wYXJlbnQudHlwZSE9Q0tFRElUT1IuTk9ERV9ET0NVTUVOVF9GUkFHTUVOVCl7dmFyIGU9ZC5hdHRyaWJ1dGVzO2lmKFwiZGF0YS1ja2UtYm9ndXNcImluIGV8fFwiZGF0YS1ja2UtZW9sXCJpbiBlKWRlbGV0ZSBlW1wiZGF0YS1ja2UtYm9ndXNcIl07ZWxzZXtmb3IoZT1kLm5leHQ7ZSYmYyhlKTspZT1lLm5leHQ7dmFyIGg9YihkKTshZSYmayhkLnBhcmVudCk/bChkLnBhcmVudCxnKGEpKTprKGUpJiZoJiYhayhoKSYmZyhhKS5pbnNlcnRCZWZvcmUoZSl9fX19KG0pO3JldHVybiBufWZ1bmN0aW9uIGYoYSxiKXtyZXR1cm4gYSE9Q0tFRElUT1IuRU5URVJfQlImJiExIT09Yj9hPT1DS0VESVRPUi5FTlRFUl9ESVY/XCJkaXZcIjpcInBcIjohMX1mdW5jdGlvbiBlKGEpe2ZvcihhPWEuY2hpbGRyZW5bYS5jaGlsZHJlbi5sZW5ndGgtMV07YSYmYyhhKTspYT1hLnByZXZpb3VzO3JldHVybiBhfWZ1bmN0aW9uIGIoYSl7Zm9yKGE9YS5wcmV2aW91czthJiZcbmMoYSk7KWE9YS5wcmV2aW91cztyZXR1cm4gYX1mdW5jdGlvbiBjKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmIUNLRURJVE9SLnRvb2xzLnRyaW0oYS52YWx1ZSl8fGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS1ib29rbWFya1wiXX1mdW5jdGlvbiBrKGEpe3JldHVybiBhJiYoYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEubmFtZSBpbiB0fHxhLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQpfWZ1bmN0aW9uIGwoYSxiKXt2YXIgZD1hLmNoaWxkcmVuW2EuY2hpbGRyZW4ubGVuZ3RoLTFdO2EuY2hpbGRyZW4ucHVzaChiKTtiLnBhcmVudD1hO2QmJihkLm5leHQ9YixiLnByZXZpb3VzPWQpfWZ1bmN0aW9uIG0oYSl7YT1hLmF0dHJpYnV0ZXM7XCJmYWxzZVwiIT1hLmNvbnRlbnRlZGl0YWJsZSYmKGFbXCJkYXRhLWNrZS1lZGl0YWJsZVwiXT1hLmNvbnRlbnRlZGl0YWJsZT9cInRydWVcIjoxKTtcbmEuY29udGVudGVkaXRhYmxlPVwiZmFsc2VcIn1mdW5jdGlvbiBkKGEpe2E9YS5hdHRyaWJ1dGVzO3N3aXRjaChhW1wiZGF0YS1ja2UtZWRpdGFibGVcIl0pe2Nhc2UgXCJ0cnVlXCI6YS5jb250ZW50ZWRpdGFibGU9XCJ0cnVlXCI7YnJlYWs7Y2FzZSBcIjFcIjpkZWxldGUgYS5jb250ZW50ZWRpdGFibGV9fWZ1bmN0aW9uIGgoYSxiKXtyZXR1cm4gYS5yZXBsYWNlKEYsZnVuY3Rpb24oYSxkLGMpe3JldHVyblwiXFx4M2NcIitkK2MucmVwbGFjZShKLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIEsudGVzdChkKSYmLTE9PWMuaW5kZXhPZihcImRhdGEtY2tlLXNhdmVkLVwiK2QpP1wiIGRhdGEtY2tlLXNhdmVkLVwiK2ErXCIgZGF0YS1ja2UtXCIrYitcIi1cIithOmF9KStcIlxceDNlXCJ9KX1mdW5jdGlvbiBnKGEsYil7cmV0dXJuIGEucmVwbGFjZShiLGZ1bmN0aW9uKGEsYixkKXswPT09YS5pbmRleE9mKFwiXFx4M2N0ZXh0YXJlYVwiKSYmKGE9Yit4KGQpLnJlcGxhY2UoLzwvZyxcIlxceDI2bHQ7XCIpLnJlcGxhY2UoLz4vZyxcIlxceDI2Z3Q7XCIpK1xuXCJcXHgzYy90ZXh0YXJlYVxceDNlXCIpO3JldHVyblwiXFx4M2Nja2U6ZW5jb2RlZFxceDNlXCIrZW5jb2RlVVJJQ29tcG9uZW50KGEpK1wiXFx4M2MvY2tlOmVuY29kZWRcXHgzZVwifSl9ZnVuY3Rpb24gbihhKXtyZXR1cm4gYS5yZXBsYWNlKEgsZnVuY3Rpb24oYSxiKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGIpfSl9ZnVuY3Rpb24gdyhhKXtyZXR1cm4gYS5yZXBsYWNlKC9cXHgzYyEtLSg/IXtja2VfcHJvdGVjdGVkfSlbXFxzXFxTXSs/LS1cXHgzZS9nLGZ1bmN0aW9uKGEpe3JldHVyblwiXFx4M2MhLS1cIitxK1wie0N9XCIrZW5jb2RlVVJJQ29tcG9uZW50KGEpLnJlcGxhY2UoLy0tL2csXCIlMkQlMkRcIikrXCItLVxceDNlXCJ9KX1mdW5jdGlvbiB4KGEpe3JldHVybiBhLnJlcGxhY2UoL1xceDNjIS0tXFx7Y2tlX3Byb3RlY3RlZFxcfVxce0NcXH0oW1xcc1xcU10rPyktLVxceDNlL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGIpfSl9ZnVuY3Rpb24gcihhLGIpe3ZhciBkPWIuXy5kYXRhU3RvcmU7XG5yZXR1cm4gYS5yZXBsYWNlKC9cXHgzYyEtLVxce2NrZV9wcm90ZWN0ZWRcXH0oW1xcc1xcU10rPyktLVxceDNlL2csZnVuY3Rpb24oYSxiKXtyZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KGIpfSkucmVwbGFjZSgvXFx7Y2tlX3Byb3RlY3RlZF8oXFxkKylcXH0vZyxmdW5jdGlvbihhLGIpe3JldHVybiBkJiZkW2JdfHxcIlwifSl9ZnVuY3Rpb24gcChhLGIsZCl7dmFyIGM9W10sZz1iLmNvbmZpZy5wcm90ZWN0ZWRTb3VyY2UsZT1iLl8uZGF0YVN0b3JlfHwoYi5fLmRhdGFTdG9yZT17aWQ6MX0pLGg9bmV3IFJlZ0V4cChcIlxceDNjXFxcXCEtLVxcXFx7Y2tlX3RlbXBfXCIrZCtcIihjb21tZW50KT9cXFxcfShcXFxcZCo/KS0tXFx4M2VcIixcImdcIiksZz1bLzxzY3JpcHRbXFxzXFxTXSo/KDxcXC9zY3JpcHQ+fCQpL2dpLC88bm9zY3JpcHRbXFxzXFxTXSo/PFxcL25vc2NyaXB0Pi9naSwvPG1ldGFbXFxzXFxTXSo/XFwvPz4vZ2ldLmNvbmNhdChnKTthPWEucmVwbGFjZSgvXFx4M2MhLS1bXFxzXFxTXSo/LS1cXHgzZS9nLGZ1bmN0aW9uKGEpe3JldHVyblwiXFx4M2MhLS17Y2tlX3RlbXBfXCIrXG5kK1wiY29tbWVudH1cIisoYy5wdXNoKGEpLTEpK1wiLS1cXHgzZVwifSk7Zm9yKHZhciBrPTA7azxnLmxlbmd0aDtrKyspYT1hLnJlcGxhY2UoZ1trXSxmdW5jdGlvbihhKXthPWEucmVwbGFjZShoLGZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gY1tkXX0pO3JldHVybiBoLnRlc3QoYSk/YTpcIlxceDNjIS0te2NrZV90ZW1wX1wiK2QrXCJ9XCIrKGMucHVzaChhKS0xKStcIi0tXFx4M2VcIn0pO2E9YS5yZXBsYWNlKGgsZnVuY3Rpb24oYSxiLGQpe3JldHVyblwiXFx4M2MhLS1cIitxKyhiP1wie0N9XCI6XCJcIikrZW5jb2RlVVJJQ29tcG9uZW50KGNbZF0pLnJlcGxhY2UoLy0tL2csXCIlMkQlMkRcIikrXCItLVxceDNlXCJ9KTthPWEucmVwbGFjZSgvPFxcdysoPzpcXHMrKD86KD86W15cXHM9Pl0rXFxzKj1cXHMqKD86W14nXCJcXHM+XSt8J1teJ10qJ3xcIlteXCJdKlwiKSl8W15cXHM9XFwvPl0rKSkrXFxzKlxcLz8+L2csZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFx4M2MhLS1cXHtja2VfcHJvdGVjdGVkXFx9KFtePl0qKS0tXFx4M2UvZyxmdW5jdGlvbihhLFxuYil7ZVtlLmlkXT1kZWNvZGVVUklDb21wb25lbnQoYik7cmV0dXJuXCJ7Y2tlX3Byb3RlY3RlZF9cIitlLmlkKysgK1wifVwifSl9KTtyZXR1cm4gYT1hLnJlcGxhY2UoLzwodGl0bGV8aWZyYW1lfHRleHRhcmVhKShbXj5dKik+KFtcXHNcXFNdKj8pPFxcL1xcMT4vZyxmdW5jdGlvbihhLGQsYyxnKXtyZXR1cm5cIlxceDNjXCIrZCtjK1wiXFx4M2VcIityKHgoZyksYikrXCJcXHgzYy9cIitkK1wiXFx4M2VcIn0pfXZhciB1O0NLRURJVE9SLmh0bWxEYXRhUHJvY2Vzc29yPWZ1bmN0aW9uKGIpe3ZhciBkLGMsZT10aGlzO3RoaXMuZWRpdG9yPWI7dGhpcy5kYXRhRmlsdGVyPWQ9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZmlsdGVyO3RoaXMuaHRtbEZpbHRlcj1jPW5ldyBDS0VESVRPUi5odG1sUGFyc2VyLmZpbHRlcjt0aGlzLndyaXRlcj1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci5iYXNpY1dyaXRlcjtkLmFkZFJ1bGVzKHYpO2QuYWRkUnVsZXMoQix7YXBwbHlUb0FsbDohMH0pO2QuYWRkUnVsZXMoYShiLFwiZGF0YVwiKSxcbnthcHBseVRvQWxsOiEwfSk7Yy5hZGRSdWxlcyhEKTtjLmFkZFJ1bGVzKEMse2FwcGx5VG9BbGw6ITB9KTtjLmFkZFJ1bGVzKGEoYixcImh0bWxcIikse2FwcGx5VG9BbGw6ITB9KTtiLm9uKFwidG9IdG1sXCIsZnVuY3Rpb24oYSl7dmFyIGQ7dmFyIGM9d2luZG93LmNyeXB0b3x8d2luZG93Lm1zQ3J5cHRvO2Q9Yz9jLmdldFJhbmRvbVZhbHVlcyhuZXcgVWludDMyQXJyYXkoMSkpWzBdOk1hdGguZmxvb3IoOUU5Kk1hdGgucmFuZG9tKCkrMUU5KTthPWEuZGF0YTt2YXIgYz1hLmRhdGFWYWx1ZSxjPXUoYyksYz1wKGMsYixkKSxjPWcoYyxNKSxjPWgoYyxkKSxjPWcoYyxHKSxjPWMucmVwbGFjZShFLFwiJDFja2U6JDJcIiksYz1jLnJlcGxhY2UoTCxcIlxceDNjY2tlOiQxJDJcXHgzZVxceDNjL2NrZTokMVxceDNlXCIpLGM9Yy5yZXBsYWNlKC8oPHByZVxcYltePl0qPikoXFxyXFxufFxcbikvZyxcIiQxJDIkMlwiKSxjPWMucmVwbGFjZSgvKFteYS16MC05PFxcLV0pKG9uXFx3ezMsfSkoPyE+KS9naSxcIiQxZGF0YS1ja2UtXCIrXG5kK1wiLSQyXCIpLGU9YS5jb250ZXh0fHxiLmVkaXRhYmxlKCkuZ2V0TmFtZSgpLGs7Q0tFRElUT1IuZW52LmllJiY5PkNLRURJVE9SLmVudi52ZXJzaW9uJiZcInByZVwiPT1lJiYoZT1cImRpdlwiLGM9XCJcXHgzY3ByZVxceDNlXCIrYytcIlxceDNjL3ByZVxceDNlXCIsaz0xKTtlPWIuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlKTtlLnNldEh0bWwoXCJhXCIrYyk7Yz1lLmdldEh0bWwoKS5zdWJzdHIoMSk7Yz1jLnJlcGxhY2UobmV3IFJlZ0V4cChcImRhdGEtY2tlLVwiK2QrXCItXCIsXCJpZ1wiKSxcIlwiKTtrJiYoYz1jLnJlcGxhY2UoL148cHJlPnw8XFwvcHJlPiQvZ2ksXCJcIikpO2M9Yy5yZXBsYWNlKFAsXCIkMSQyXCIpO2M9bihjKTtjPXgoYyk7ZD0hMT09PWEuZml4Rm9yQm9keT8hMTpmKGEuZW50ZXJNb2RlLGIuY29uZmlnLmF1dG9QYXJhZ3JhcGgpO2M9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChjLGEuY29udGV4dCxkKTtkJiYoaz1jLCFrLmNoaWxkcmVuLmxlbmd0aCYmQ0tFRElUT1IuZHRkW2submFtZV1bZF0mJlxuKGQ9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudChkKSxrLmFkZChkKSkpO2EuZGF0YVZhbHVlPWN9LG51bGwsbnVsbCw1KTtiLm9uKFwidG9IdG1sXCIsZnVuY3Rpb24oYSl7YS5kYXRhLmZpbHRlci5hcHBseVRvKGEuZGF0YS5kYXRhVmFsdWUsITAsYS5kYXRhLmRvbnRGaWx0ZXIsYS5kYXRhLmVudGVyTW9kZSkmJmIuZmlyZShcImRhdGFGaWx0ZXJlZFwiKX0sbnVsbCxudWxsLDYpO2Iub24oXCJ0b0h0bWxcIixmdW5jdGlvbihhKXthLmRhdGEuZGF0YVZhbHVlLmZpbHRlckNoaWxkcmVuKGUuZGF0YUZpbHRlciwhMCl9LG51bGwsbnVsbCwxMCk7Yi5vbihcInRvSHRtbFwiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhO3ZhciBiPWEuZGF0YVZhbHVlLGQ9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXI7Yi53cml0ZUNoaWxkcmVuSHRtbChkKTtiPWQuZ2V0SHRtbCghMCk7YS5kYXRhVmFsdWU9dyhiKX0sbnVsbCxudWxsLDE1KTtiLm9uKFwidG9EYXRhRm9ybWF0XCIsZnVuY3Rpb24oYSl7dmFyIGQ9XG5hLmRhdGEuZGF0YVZhbHVlO2EuZGF0YS5lbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX0JSJiYoZD1kLnJlcGxhY2UoL148YnIgKlxcLz8+L2ksXCJcIikpO2EuZGF0YS5kYXRhVmFsdWU9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChkLGEuZGF0YS5jb250ZXh0LGYoYS5kYXRhLmVudGVyTW9kZSxiLmNvbmZpZy5hdXRvUGFyYWdyYXBoKSl9LG51bGwsbnVsbCw1KTtiLm9uKFwidG9EYXRhRm9ybWF0XCIsZnVuY3Rpb24oYSl7YS5kYXRhLmRhdGFWYWx1ZS5maWx0ZXJDaGlsZHJlbihlLmh0bWxGaWx0ZXIsITApfSxudWxsLG51bGwsMTApO2Iub24oXCJ0b0RhdGFGb3JtYXRcIixmdW5jdGlvbihhKXthLmRhdGEuZmlsdGVyLmFwcGx5VG8oYS5kYXRhLmRhdGFWYWx1ZSwhMSwhMCl9LG51bGwsbnVsbCwxMSk7Yi5vbihcInRvRGF0YUZvcm1hdFwiLGZ1bmN0aW9uKGEpe3ZhciBkPWEuZGF0YS5kYXRhVmFsdWUsYz1lLndyaXRlcjtjLnJlc2V0KCk7ZC53cml0ZUNoaWxkcmVuSHRtbChjKTtcbmQ9Yy5nZXRIdG1sKCEwKTtkPXgoZCk7ZD1yKGQsYik7YS5kYXRhLmRhdGFWYWx1ZT1kfSxudWxsLG51bGwsMTUpfTtDS0VESVRPUi5odG1sRGF0YVByb2Nlc3Nvci5wcm90b3R5cGU9e3RvSHRtbDpmdW5jdGlvbihhLGIsZCxjKXt2YXIgZz10aGlzLmVkaXRvcixlLGgsayxmO2ImJlwib2JqZWN0XCI9PXR5cGVvZiBiPyhlPWIuY29udGV4dCxkPWIuZml4Rm9yQm9keSxjPWIuZG9udEZpbHRlcixoPWIuZmlsdGVyLGs9Yi5lbnRlck1vZGUsZj1iLnByb3RlY3RlZFdoaXRlc3BhY2VzKTplPWI7ZXx8bnVsbD09PWV8fChlPWcuZWRpdGFibGUoKS5nZXROYW1lKCkpO3JldHVybiBnLmZpcmUoXCJ0b0h0bWxcIix7ZGF0YVZhbHVlOmEsY29udGV4dDplLGZpeEZvckJvZHk6ZCxkb250RmlsdGVyOmMsZmlsdGVyOmh8fGcuZmlsdGVyLGVudGVyTW9kZTprfHxnLmVudGVyTW9kZSxwcm90ZWN0ZWRXaGl0ZXNwYWNlczpmfSkuZGF0YVZhbHVlfSx0b0RhdGFGb3JtYXQ6ZnVuY3Rpb24oYSxiKXt2YXIgZCxcbmMsZztiJiYoZD1iLmNvbnRleHQsYz1iLmZpbHRlcixnPWIuZW50ZXJNb2RlKTtkfHxudWxsPT09ZHx8KGQ9dGhpcy5lZGl0b3IuZWRpdGFibGUoKS5nZXROYW1lKCkpO3JldHVybiB0aGlzLmVkaXRvci5maXJlKFwidG9EYXRhRm9ybWF0XCIse2RhdGFWYWx1ZTphLGZpbHRlcjpjfHx0aGlzLmVkaXRvci5maWx0ZXIsY29udGV4dDpkLGVudGVyTW9kZTpnfHx0aGlzLmVkaXRvci5lbnRlck1vZGV9KS5kYXRhVmFsdWV9LHByb3RlY3RTb3VyY2U6ZnVuY3Rpb24oYSl7cmV0dXJuIHAoYSx0aGlzLmVkaXRvcil9LHVucHJvdGVjdFNvdXJjZTpmdW5jdGlvbihhKXtyZXR1cm4gcihhLHRoaXMuZWRpdG9yKX0sdW5wcm90ZWN0UmVhbENvbW1lbnRzOmZ1bmN0aW9uKGEpe3JldHVybiB4KGEpfX07dmFyIHo9Lyg/OiZuYnNwO3xcXHhhMCkkLyxxPVwie2NrZV9wcm90ZWN0ZWR9XCIsQT1DS0VESVRPUi5kdGQseT1cImNhcHRpb24gY29sZ3JvdXAgY29sIHRoZWFkIHRmb290IHRib2R5XCIuc3BsaXQoXCIgXCIpLFxudD1DS0VESVRPUi50b29scy5leHRlbmQoe30sQS4kYmxvY2tMaW1pdCxBLiRibG9jayksdj17ZWxlbWVudHM6e2lucHV0Om0sdGV4dGFyZWE6bX19LEI9e2F0dHJpYnV0ZU5hbWVzOltbL15vbi8sXCJkYXRhLWNrZS1wYS1vblwiXSxbL15zcmNkb2MvLFwiZGF0YS1ja2UtcGEtc3JjZG9jXCJdLFsvXmRhdGEtY2tlLWV4cGFuZG8kLyxcIlwiXV0sZWxlbWVudHM6e2lmcmFtZTpmdW5jdGlvbihhKXtpZihhLmF0dHJpYnV0ZXMmJmEuYXR0cmlidXRlcy5zcmMpe3ZhciBiPWEuYXR0cmlidXRlcy5zcmMudG9Mb3dlckNhc2UoKS5yZXBsYWNlKC9bXmEtel0vZ2ksXCJcIik7aWYoMD09PWIuaW5kZXhPZihcImphdmFzY3JpcHRcIil8fDA9PT1iLmluZGV4T2YoXCJkYXRhXCIpKWEuYXR0cmlidXRlc1tcImRhdGEtY2tlLXBhLXNyY1wiXT1hLmF0dHJpYnV0ZXMuc3JjLGRlbGV0ZSBhLmF0dHJpYnV0ZXMuc3JjfX19fSxEPXtlbGVtZW50czp7ZW1iZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5wYXJlbnQ7aWYoYiYmXCJvYmplY3RcIj09XG5iLm5hbWUpe3ZhciBkPWIuYXR0cmlidXRlcy53aWR0aCxiPWIuYXR0cmlidXRlcy5oZWlnaHQ7ZCYmKGEuYXR0cmlidXRlcy53aWR0aD1kKTtiJiYoYS5hdHRyaWJ1dGVzLmhlaWdodD1iKX19LGE6ZnVuY3Rpb24oYSl7dmFyIGI9YS5hdHRyaWJ1dGVzO2lmKCEoYS5jaGlsZHJlbi5sZW5ndGh8fGIubmFtZXx8Yi5pZHx8YS5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utc2F2ZWQtbmFtZVwiXSkpcmV0dXJuITF9fX0sQz17ZWxlbWVudE5hbWVzOltbL15ja2U6LyxcIlwiXSxbL15cXD94bWw6bmFtZXNwYWNlJC8sXCJcIl1dLGF0dHJpYnV0ZU5hbWVzOltbL15kYXRhLWNrZS0oc2F2ZWR8cGEpLS8sXCJcIl0sWy9eZGF0YS1ja2UtLiovLFwiXCJdLFtcImhpZGVmb2N1c1wiLFwiXCJdXSxlbGVtZW50czp7JDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXM7aWYoYil7aWYoYltcImRhdGEtY2tlLXRlbXBcIl0pcmV0dXJuITE7Zm9yKHZhciBkPVtcIm5hbWVcIixcImhyZWZcIixcInNyY1wiXSxjLGc9MDtnPGQubGVuZ3RoO2crKyljPVxuXCJkYXRhLWNrZS1zYXZlZC1cIitkW2ddLGMgaW4gYiYmZGVsZXRlIGJbZFtnXV19cmV0dXJuIGF9LHRhYmxlOmZ1bmN0aW9uKGEpe2EuY2hpbGRyZW4uc2xpY2UoMCkuc29ydChmdW5jdGlvbihhLGIpe3ZhciBkLGM7YS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmIudHlwZT09YS50eXBlJiYoZD1DS0VESVRPUi50b29scy5pbmRleE9mKHksYS5uYW1lKSxjPUNLRURJVE9SLnRvb2xzLmluZGV4T2YoeSxiLm5hbWUpKTstMTxkJiYtMTxjJiZkIT1jfHwoZD1hLnBhcmVudD9hLmdldEluZGV4KCk6LTEsYz1iLnBhcmVudD9iLmdldEluZGV4KCk6LTEpO3JldHVybiBkPmM/MTotMX0pfSxwYXJhbTpmdW5jdGlvbihhKXthLmNoaWxkcmVuPVtdO2EuaXNFbXB0eT0hMDtyZXR1cm4gYX0sc3BhbjpmdW5jdGlvbihhKXtcIkFwcGxlLXN0eWxlLXNwYW5cIj09YS5hdHRyaWJ1dGVzW1wiY2xhc3NcIl0mJmRlbGV0ZSBhLm5hbWV9LGh0bWw6ZnVuY3Rpb24oYSl7ZGVsZXRlIGEuYXR0cmlidXRlcy5jb250ZW50ZWRpdGFibGU7XG5kZWxldGUgYS5hdHRyaWJ1dGVzW1wiY2xhc3NcIl19LGJvZHk6ZnVuY3Rpb24oYSl7ZGVsZXRlIGEuYXR0cmlidXRlcy5zcGVsbGNoZWNrO2RlbGV0ZSBhLmF0dHJpYnV0ZXMuY29udGVudGVkaXRhYmxlfSxzdHlsZTpmdW5jdGlvbihhKXt2YXIgYj1hLmNoaWxkcmVuWzBdO2ImJmIudmFsdWUmJihiLnZhbHVlPUNLRURJVE9SLnRvb2xzLnRyaW0oYi52YWx1ZSkpO2EuYXR0cmlidXRlcy50eXBlfHwoYS5hdHRyaWJ1dGVzLnR5cGU9XCJ0ZXh0L2Nzc1wiKX0sdGl0bGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5jaGlsZHJlblswXTshYiYmbChhLGI9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIudGV4dCk7Yi52YWx1ZT1hLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS10aXRsZVwiXXx8XCJcIn0saW5wdXQ6ZCx0ZXh0YXJlYTpkfSxhdHRyaWJ1dGVzOntcImNsYXNzXCI6ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLmx0cmltKGEucmVwbGFjZSgvKD86XnxcXHMrKWNrZV9bXlxcc10qL2csXCJcIikpfHwhMX19fTtcbkNLRURJVE9SLmVudi5pZSYmKEMuYXR0cmlidXRlcy5zdHlsZT1mdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKC8oXnw7KShbXlxcOl0rKS9nLGZ1bmN0aW9uKGEpe3JldHVybiBhLnRvTG93ZXJDYXNlKCl9KX0pO3ZhciBGPS88KGF8YXJlYXxpbWd8aW5wdXR8c291cmNlKVxcYihbXj5dKik+L2dpLEo9LyhbXFx3LTpdKylcXHMqPVxccyooPzooPzpcIlteXCJdKlwiKXwoPzonW14nXSonKXwoPzpbXiBcIic+XSspKS9naSxLPS9eKGhyZWZ8c3JjfG5hbWUpJC9pLEc9Lyg/OjxzdHlsZSg/PVsgPl0pW14+XSo+W1xcc1xcU10qPzxcXC9zdHlsZT4pfCg/OjwoOj9saW5rfG1ldGF8YmFzZSlbXj5dKj4pL2dpLE09Lyg8dGV4dGFyZWEoPz1bID5dKVtePl0qPikoW1xcc1xcU10qPykoPzo8XFwvdGV4dGFyZWE+KS9naSxIPS88Y2tlOmVuY29kZWQ+KFtePF0qKTxcXC9ja2U6ZW5jb2RlZD4vZ2ksRT0vKDxcXC8/KSgoPzpvYmplY3R8ZW1iZWR8cGFyYW18aHRtbHxib2R5fGhlYWR8dGl0bGUpKFtcXHNdW14+XSopPz4pL2dpLFxuUD0vKDxcXC8/KWNrZTooKD86aHRtbHxib2R5fGhlYWR8dGl0bGUpW14+XSo+KS9naSxMPS88Y2tlOihwYXJhbXxlbWJlZCkoW14+XSo/KVxcLz8+KD8hXFxzKjxcXC9ja2U6XFwxKS9naTt1PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZz1iW2NdO2cubGFzdEluZGV4PTA7aWYoZy50ZXN0KGQpKXJldHVybiEwfXJldHVybiExfWZ1bmN0aW9uIGIoYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5LnJlZHVjZShhLnNwbGl0KFwiXCIpLGZ1bmN0aW9uKGEsYil7dmFyIGM9Yi50b0xvd2VyQ2FzZSgpLGc9Yi50b1VwcGVyQ2FzZSgpLGU9ZChjKTtjIT09ZyYmKGUrPVwifFwiK2QoZykpO3JldHVybiBhKyhcIihcIitlK1wiKVwiKX0sXCJcIil9ZnVuY3Rpb24gZChhKXt2YXIgYjtiPWEuY2hhckNvZGVBdCgwKTt2YXIgYz1iLnRvU3RyaW5nKDE2KTtiPXtodG1sQ29kZTpcIlxceDI2I1wiK2IrXCI7P1wiLGhleDpcIlxceDI2I3gwKlwiK2MrXCI7P1wiLGVudGl0eTp7XCJcXHgzY1wiOlwiXFx4MjZsdDtcIixcblwiXFx4M2VcIjpcIlxceDI2Z3Q7XCIsXCI6XCI6XCJcXHgyNmNvbG9uO1wifVthXX07Zm9yKHZhciBnIGluIGIpYltnXSYmKGErPVwifFwiK2JbZ10pO3JldHVybiBhfXZhciBjPVtuZXcgUmVnRXhwKFwiKFwiK2IoXCJcXHgzY2NrZTplbmNvZGVkXFx4M2VcIikrXCIoLio/KVwiK2IoXCJcXHgzYy9ja2U6ZW5jb2RlZFxceDNlXCIpK1wiKXwoXCIrYihcIlxceDNjXCIpK2IoXCIvXCIpK1wiP1wiK2IoXCJja2U6ZW5jb2RlZFxceDNlXCIpK1wiKVwiLFwiZ2lcIiksbmV3IFJlZ0V4cChcIigoXCIrYihcIntja2VfcHJvdGVjdGVkXCIpK1wiKShfWzAtOV0qKT9cIitiKFwifVwiKStcIilcIixcImdpXCIpLC88ISg/OlxccyotXFxzKil7MiwzfSE/XFxzKj4vZ107cmV0dXJuIGZ1bmN0aW9uKGIpe2Zvcig7YShjLGIpOylmb3IodmFyIGQ9YyxnPTA7ZzxkLmxlbmd0aDtnKyspYj1iLnJlcGxhY2UoZFtnXSxcIlwiKTtyZXR1cm4gYn19KCl9KCksXCJ1c2Ugc3RyaWN0XCIsQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50PWZ1bmN0aW9uKGEsZil7dGhpcy5uYW1lPWE7dGhpcy5hdHRyaWJ1dGVzPVxuZnx8e307dGhpcy5jaGlsZHJlbj1bXTt2YXIgZT1hfHxcIlwiLGI9ZS5tYXRjaCgvXmNrZTooLiopLyk7YiYmKGU9YlsxXSk7ZT0hIShDS0VESVRPUi5kdGQuJG5vbkJvZHlDb250ZW50W2VdfHxDS0VESVRPUi5kdGQuJGJsb2NrW2VdfHxDS0VESVRPUi5kdGQuJGxpc3RJdGVtW2VdfHxDS0VESVRPUi5kdGQuJHRhYmxlQ29udGVudFtlXXx8Q0tFRElUT1IuZHRkLiRub25FZGl0YWJsZVtlXXx8XCJiclwiPT1lKTt0aGlzLmlzRW1wdHk9ISFDS0VESVRPUi5kdGQuJGVtcHR5W2FdO3RoaXMuaXNVbmtub3duPSFDS0VESVRPUi5kdGRbYV07dGhpcy5fPXtpc0Jsb2NrTGlrZTplLGhhc0lubGluZVN0YXJ0ZWQ6dGhpcy5pc0VtcHR5fHwhZX19LENLRURJVE9SLmh0bWxQYXJzZXIuY3NzU3R5bGU9ZnVuY3Rpb24oYSl7dmFyIGY9e307KChhIGluc3RhbmNlb2YgQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50P2EuYXR0cmlidXRlcy5zdHlsZTphKXx8XCJcIikucmVwbGFjZSgvJnF1b3Q7L2csJ1wiJykucmVwbGFjZSgvXFxzKihbXiA6O10rKVxccyo6XFxzKihbXjtdKylcXHMqKD89O3wkKS9nLFxuZnVuY3Rpb24oYSxiLGMpe1wiZm9udC1mYW1pbHlcIj09YiYmKGM9Yy5yZXBsYWNlKC9bXCInXS9nLFwiXCIpKTtmW2IudG9Mb3dlckNhc2UoKV09Y30pO3JldHVybntydWxlczpmLHBvcHVsYXRlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMudG9TdHJpbmcoKTtiJiYoYSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50P2Euc2V0QXR0cmlidXRlKFwic3R5bGVcIixiKTphIGluc3RhbmNlb2YgQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50P2EuYXR0cmlidXRlcy5zdHlsZT1iOmEuc3R5bGU9Yil9LHRvU3RyaW5nOmZ1bmN0aW9uKCl7dmFyIGE9W10sYjtmb3IoYiBpbiBmKWZbYl0mJmEucHVzaChiLFwiOlwiLGZbYl0sXCI7XCIpO3JldHVybiBhLmpvaW4oXCJcIil9fX0sZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBmdW5jdGlvbihjKXtyZXR1cm4gYy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihcInN0cmluZ1wiPT10eXBlb2YgYT9jLm5hbWU9PWE6Yy5uYW1lIGluIGEpfX12YXIgZj1cbmZ1bmN0aW9uKGEsYyl7YT1hWzBdO2M9Y1swXTtyZXR1cm4gYTxjPy0xOmE+Yz8xOjB9LGU9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5wcm90b3R5cGU7Q0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50LnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLmh0bWxQYXJzZXIubm9kZSx7dHlwZTpDS0VESVRPUi5OT0RFX0VMRU1FTlQsYWRkOmUuYWRkLGNsb25lOmZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLmVsZW1lbnQodGhpcy5uYW1lLHRoaXMuYXR0cmlidXRlcyl9LGZpbHRlcjpmdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMsZixtO2M9ZS5nZXRGaWx0ZXJDb250ZXh0KGMpO2lmKCFlLnBhcmVudClhLm9uUm9vdChjLGUpO2Zvcig7Oyl7Zj1lLm5hbWU7aWYoIShtPWEub25FbGVtZW50TmFtZShjLGYpKSlyZXR1cm4gdGhpcy5yZW1vdmUoKSwhMTtlLm5hbWU9bTtpZighKGU9YS5vbkVsZW1lbnQoYyxlKSkpcmV0dXJuIHRoaXMucmVtb3ZlKCksXG4hMTtpZihlIT09dGhpcylyZXR1cm4gdGhpcy5yZXBsYWNlV2l0aChlKSwhMTtpZihlLm5hbWU9PWYpYnJlYWs7aWYoZS50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpcmV0dXJuIHRoaXMucmVwbGFjZVdpdGgoZSksITE7aWYoIWUubmFtZSlyZXR1cm4gdGhpcy5yZXBsYWNlV2l0aENoaWxkcmVuKCksITF9Zj1lLmF0dHJpYnV0ZXM7dmFyIGQsaDtmb3IoZCBpbiBmKXtmb3IobT1mW2RdOzspaWYoaD1hLm9uQXR0cmlidXRlTmFtZShjLGQpKWlmKGghPWQpZGVsZXRlIGZbZF0sZD1oO2Vsc2UgYnJlYWs7ZWxzZXtkZWxldGUgZltkXTticmVha31oJiYoITE9PT0obT1hLm9uQXR0cmlidXRlKGMsZSxoLG0pKT9kZWxldGUgZltoXTpmW2hdPW0pfWUuaXNFbXB0eXx8dGhpcy5maWx0ZXJDaGlsZHJlbihhLCExLGMpO3JldHVybiEwfSxmaWx0ZXJDaGlsZHJlbjplLmZpbHRlckNoaWxkcmVuLHdyaXRlSHRtbDpmdW5jdGlvbihhLGMpe2MmJnRoaXMuZmlsdGVyKGMpO3ZhciBlPXRoaXMubmFtZSxcbmw9W10sbT10aGlzLmF0dHJpYnV0ZXMsZCxoO2Eub3BlblRhZyhlLG0pO2ZvcihkIGluIG0pbC5wdXNoKFtkLG1bZF1dKTthLnNvcnRBdHRyaWJ1dGVzJiZsLnNvcnQoZik7ZD0wO2ZvcihoPWwubGVuZ3RoO2Q8aDtkKyspbT1sW2RdLGEuYXR0cmlidXRlKG1bMF0sbVsxXSk7YS5vcGVuVGFnQ2xvc2UoZSx0aGlzLmlzRW1wdHkpO3RoaXMud3JpdGVDaGlsZHJlbkh0bWwoYSk7dGhpcy5pc0VtcHR5fHxhLmNsb3NlVGFnKGUpfSx3cml0ZUNoaWxkcmVuSHRtbDplLndyaXRlQ2hpbGRyZW5IdG1sLHJlcGxhY2VXaXRoQ2hpbGRyZW46ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5jaGlsZHJlbixjPWEubGVuZ3RoO2M7KWFbLS1jXS5pbnNlcnRBZnRlcih0aGlzKTt0aGlzLnJlbW92ZSgpfSxmb3JFYWNoOmUuZm9yRWFjaCxnZXRGaXJzdDpmdW5jdGlvbihiKXtpZighYilyZXR1cm4gdGhpcy5jaGlsZHJlbi5sZW5ndGg/dGhpcy5jaGlsZHJlblswXTpudWxsO1wiZnVuY3Rpb25cIiE9dHlwZW9mIGImJlxuKGI9YShiKSk7Zm9yKHZhciBjPTAsZT10aGlzLmNoaWxkcmVuLmxlbmd0aDtjPGU7KytjKWlmKGIodGhpcy5jaGlsZHJlbltjXSkpcmV0dXJuIHRoaXMuY2hpbGRyZW5bY107cmV0dXJuIG51bGx9LGdldEh0bWw6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci5iYXNpY1dyaXRlcjt0aGlzLndyaXRlQ2hpbGRyZW5IdG1sKGEpO3JldHVybiBhLmdldEh0bWwoKX0sc2V0SHRtbDpmdW5jdGlvbihhKXthPXRoaXMuY2hpbGRyZW49Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChhKS5jaGlsZHJlbjtmb3IodmFyIGM9MCxlPWEubGVuZ3RoO2M8ZTsrK2MpYVtjXS5wYXJlbnQ9dGhpc30sZ2V0T3V0ZXJIdG1sOmZ1bmN0aW9uKCl7dmFyIGE9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXI7dGhpcy53cml0ZUh0bWwoYSk7cmV0dXJuIGEuZ2V0SHRtbCgpfSxzcGxpdDpmdW5jdGlvbihhKXtmb3IodmFyIGM9dGhpcy5jaGlsZHJlbi5zcGxpY2UoYSxcbnRoaXMuY2hpbGRyZW4ubGVuZ3RoLWEpLGU9dGhpcy5jbG9uZSgpLGY9MDtmPGMubGVuZ3RoOysrZiljW2ZdLnBhcmVudD1lO2UuY2hpbGRyZW49YztjWzBdJiYoY1swXS5wcmV2aW91cz1udWxsKTswPGEmJih0aGlzLmNoaWxkcmVuW2EtMV0ubmV4dD1udWxsKTt0aGlzLnBhcmVudC5hZGQoZSx0aGlzLmdldEluZGV4KCkrMSk7cmV0dXJuIGV9LGZpbmQ6ZnVuY3Rpb24oYSxjKXt2b2lkIDA9PT1jJiYoYz0hMSk7dmFyIGU9W10sZjtmb3IoZj0wO2Y8dGhpcy5jaGlsZHJlbi5sZW5ndGg7ZisrKXt2YXIgbT10aGlzLmNoaWxkcmVuW2ZdO1wiZnVuY3Rpb25cIj09dHlwZW9mIGEmJmEobSk/ZS5wdXNoKG0pOlwic3RyaW5nXCI9PXR5cGVvZiBhJiZtLm5hbWU9PT1hJiZlLnB1c2gobSk7YyYmbS5maW5kJiYoZT1lLmNvbmNhdChtLmZpbmQoYSxjKSkpfXJldHVybiBlfSxmaW5kT25lOmZ1bmN0aW9uKGEsYyl7dmFyIGU9bnVsbCxmPUNLRURJVE9SLnRvb2xzLmFycmF5LmZpbmQodGhpcy5jaGlsZHJlbixcbmZ1bmN0aW9uKGYpe3ZhciBkPVwiZnVuY3Rpb25cIj09PXR5cGVvZiBhP2EoZik6Zi5uYW1lPT09YTtpZihkfHwhYylyZXR1cm4gZDtmLmNoaWxkcmVuJiZmLmZpbmRPbmUmJihlPWYuZmluZE9uZShhLCEwKSk7cmV0dXJuISFlfSk7cmV0dXJuIGV8fGZ8fG51bGx9LGFkZENsYXNzOmZ1bmN0aW9uKGEpe2lmKCF0aGlzLmhhc0NsYXNzKGEpKXt2YXIgYz10aGlzLmF0dHJpYnV0ZXNbXCJjbGFzc1wiXXx8XCJcIjt0aGlzLmF0dHJpYnV0ZXNbXCJjbGFzc1wiXT1jKyhjP1wiIFwiOlwiXCIpK2F9fSxyZW1vdmVDbGFzczpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmF0dHJpYnV0ZXNbXCJjbGFzc1wiXTtjJiYoKGM9Q0tFRElUT1IudG9vbHMudHJpbShjLnJlcGxhY2UobmV3IFJlZ0V4cChcIig/OlxcXFxzK3xeKVwiK2ErXCIoPzpcXFxccyt8JClcIiksXCIgXCIpKSk/dGhpcy5hdHRyaWJ1dGVzW1wiY2xhc3NcIl09YzpkZWxldGUgdGhpcy5hdHRyaWJ1dGVzW1wiY2xhc3NcIl0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYz10aGlzLmF0dHJpYnV0ZXNbXCJjbGFzc1wiXTtcbnJldHVybiBjPyhuZXcgUmVnRXhwKFwiKD86XnxcXFxccylcIithK1wiKD9cXHgzZFxcXFxzfCQpXCIpKS50ZXN0KGMpOiExfSxnZXRGaWx0ZXJDb250ZXh0OmZ1bmN0aW9uKGEpe3ZhciBjPVtdO2F8fChhPXtub25FZGl0YWJsZTohMSxuZXN0ZWRFZGl0YWJsZTohMX0pO2Eubm9uRWRpdGFibGV8fFwiZmFsc2VcIiE9dGhpcy5hdHRyaWJ1dGVzLmNvbnRlbnRlZGl0YWJsZT9hLm5vbkVkaXRhYmxlJiYhYS5uZXN0ZWRFZGl0YWJsZSYmXCJ0cnVlXCI9PXRoaXMuYXR0cmlidXRlcy5jb250ZW50ZWRpdGFibGUmJmMucHVzaChcIm5lc3RlZEVkaXRhYmxlXCIsITApOmMucHVzaChcIm5vbkVkaXRhYmxlXCIsITApO2lmKGMubGVuZ3RoKXthPUNLRURJVE9SLnRvb2xzLmNvcHkoYSk7Zm9yKHZhciBlPTA7ZTxjLmxlbmd0aDtlKz0yKWFbY1tlXV09Y1tlKzFdfXJldHVybiBhfX0sITApfSgpLGZ1bmN0aW9uKCl7dmFyIGE9L3soW159XSspfS9nO0NLRURJVE9SLnRlbXBsYXRlPWZ1bmN0aW9uKGEpe3RoaXMuc291cmNlPVwiZnVuY3Rpb25cIj09PVxudHlwZW9mIGE/YTpTdHJpbmcoYSl9O0NLRURJVE9SLnRlbXBsYXRlLnByb3RvdHlwZS5vdXRwdXQ9ZnVuY3Rpb24oZixlKXt2YXIgYj0oXCJmdW5jdGlvblwiPT09dHlwZW9mIHRoaXMuc291cmNlP3RoaXMuc291cmNlKGYpOnRoaXMuc291cmNlKS5yZXBsYWNlKGEsZnVuY3Rpb24oYSxiKXtyZXR1cm4gdm9pZCAwIT09ZltiXT9mW2JdOmF9KTtyZXR1cm4gZT9lLnB1c2goYik6Yn19KCksZGVsZXRlIENLRURJVE9SLmxvYWRGdWxsQ29yZSxDS0VESVRPUi5pbnN0YW5jZXM9e30sQ0tFRElUT1IuZG9jdW1lbnQ9bmV3IENLRURJVE9SLmRvbS5kb2N1bWVudChkb2N1bWVudCksQ0tFRElUT1IuYWRkPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGYoKXtDS0VESVRPUi5jdXJyZW50SW5zdGFuY2U9PWEmJihDS0VESVRPUi5jdXJyZW50SW5zdGFuY2U9bnVsbCxDS0VESVRPUi5maXJlKFwiY3VycmVudEluc3RhbmNlXCIpKX1DS0VESVRPUi5pbnN0YW5jZXNbYS5uYW1lXT1hO2Eub24oXCJmb2N1c1wiLGZ1bmN0aW9uKCl7Q0tFRElUT1IuY3VycmVudEluc3RhbmNlIT1cbmEmJihDS0VESVRPUi5jdXJyZW50SW5zdGFuY2U9YSxDS0VESVRPUi5maXJlKFwiY3VycmVudEluc3RhbmNlXCIpKX0pO2Eub24oXCJibHVyXCIsZik7YS5vbihcImRlc3Ryb3lcIixmKTtDS0VESVRPUi5maXJlKFwiaW5zdGFuY2VcIixudWxsLGEpfSxDS0VESVRPUi5yZW1vdmU9ZnVuY3Rpb24oYSl7ZGVsZXRlIENLRURJVE9SLmluc3RhbmNlc1thLm5hbWVdfSxmdW5jdGlvbigpe3ZhciBhPXt9O0NLRURJVE9SLmFkZFRlbXBsYXRlPWZ1bmN0aW9uKGYsZSl7dmFyIGI9YVtmXTtpZihiKXJldHVybiBiO2I9e25hbWU6Zixzb3VyY2U6ZX07Q0tFRElUT1IuZmlyZShcInRlbXBsYXRlXCIsYik7cmV0dXJuIGFbZl09bmV3IENLRURJVE9SLnRlbXBsYXRlKGIuc291cmNlKX07Q0tFRElUT1IuZ2V0VGVtcGxhdGU9ZnVuY3Rpb24oZil7cmV0dXJuIGFbZl19fSgpLGZ1bmN0aW9uKCl7dmFyIGE9W107Q0tFRElUT1IuYWRkQ3NzPWZ1bmN0aW9uKGYpe2EucHVzaChmKX07Q0tFRElUT1IuZ2V0Q3NzPWZ1bmN0aW9uKCl7cmV0dXJuIGEuam9pbihcIlxcblwiKX19KCksXG5DS0VESVRPUi5vbihcImluc3RhbmNlRGVzdHJveWVkXCIsZnVuY3Rpb24oKXtDS0VESVRPUi50b29scy5pc0VtcHR5KHRoaXMuaW5zdGFuY2VzKSYmQ0tFRElUT1IuZmlyZShcInJlc2V0XCIpfSksQ0tFRElUT1IuVFJJU1RBVEVfT049MSxDS0VESVRPUi5UUklTVEFURV9PRkY9MixDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRD0wLGZ1bmN0aW9uKCl7Q0tFRElUT1IuaW5saW5lPWZ1bmN0aW9uKGEsZil7YT1DS0VESVRPUi5lZGl0b3IuX2dldEVkaXRvckVsZW1lbnQoYSk7aWYoIWEpcmV0dXJuIG51bGw7aWYoQ0tFRElUT1IuZWRpdG9yLnNob3VsZERlbGF5RWRpdG9yQ3JlYXRpb24oYSxmKSlyZXR1cm4gQ0tFRElUT1IuZWRpdG9yLmluaXRpYWxpemVEZWxheWVkRWRpdG9yQ3JlYXRpb24oYSxmLFwiaW5saW5lXCIpO3ZhciBlPWEuaXMoXCJ0ZXh0YXJlYVwiKT9hOm51bGwsYj1lP2UuZ2V0VmFsdWUoKTphLmdldEh0bWwoKSxjPW5ldyBDS0VESVRPUi5lZGl0b3IoZixhLENLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkUpO1xuZT8oYy5zZXREYXRhKGIsbnVsbCwhMCksYT1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NkaXYgY29udGVudGVkaXRhYmxlXFx4M2RcIicrISFjLnJlYWRPbmx5KydcIiBjbGFzc1xceDNkXCJja2VfdGV4dGFyZWFfaW5saW5lXCJcXHgzZScrZS5nZXRWYWx1ZSgpK1wiXFx4M2MvZGl2XFx4M2VcIixDS0VESVRPUi5kb2N1bWVudCksYS5pbnNlcnRBZnRlcihlKSxlLmhpZGUoKSxlLiQuZm9ybSYmYy5fYXR0YWNoVG9Gb3JtKCkpOihmJiZcInVuZGVmaW5lZFwiIT09dHlwZW9mIGYucmVhZE9ubHkmJiFmLnJlYWRPbmx5JiZhLnNldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiLFwidHJ1ZVwiKSxjLnNldERhdGEoYixudWxsLCEwKSk7Yy5vbihcImxvYWRlZFwiLGZ1bmN0aW9uKCl7Yy5maXJlKFwidWlSZWFkeVwiKTtjLmVkaXRhYmxlKGEpO2MuY29udGFpbmVyPWE7Yy51aS5jb250ZW50c0VsZW1lbnQ9YTtjLnNldERhdGEoYy5nZXREYXRhKDEpKTtjLnJlc2V0RGlydHkoKTtjLmZpcmUoXCJjb250ZW50RG9tXCIpO1xuYy5tb2RlPVwid3lzaXd5Z1wiO2MuZmlyZShcIm1vZGVcIik7Yy5zdGF0dXM9XCJyZWFkeVwiO2MuZmlyZU9uY2UoXCJpbnN0YW5jZVJlYWR5XCIpO0NLRURJVE9SLmZpcmUoXCJpbnN0YW5jZVJlYWR5XCIsbnVsbCxjKX0sbnVsbCxudWxsLDFFNCk7Yy5vbihcImRlc3Ryb3lcIixmdW5jdGlvbigpe3ZhciBhPWMuY29udGFpbmVyO2UmJmEmJihhLmNsZWFyQ3VzdG9tRGF0YSgpLGEucmVtb3ZlKCkpO2UmJmUuc2hvdygpO2MuZWxlbWVudC5jbGVhckN1c3RvbURhdGEoKTtkZWxldGUgYy5lbGVtZW50fSk7cmV0dXJuIGN9O0NLRURJVE9SLmlubGluZUFsbD1mdW5jdGlvbigpe3ZhciBhLGYsZTtmb3IoZSBpbiBDS0VESVRPUi5kdGQuJGVkaXRhYmxlKWZvcih2YXIgYj1DS0VESVRPUi5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnKGUpLGM9MCxrPWIuY291bnQoKTtjPGs7YysrKWE9Yi5nZXRJdGVtKGMpLFwidHJ1ZVwiIT1hLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKXx8YS5nZXRFZGl0b3IoKXx8KGY9XG57ZWxlbWVudDphLGNvbmZpZzp7fX0sITEhPT1DS0VESVRPUi5maXJlKFwiaW5saW5lXCIsZikmJkNLRURJVE9SLmlubGluZShhLGYuY29uZmlnKSl9O0NLRURJVE9SLmRvbVJlYWR5KGZ1bmN0aW9uKCl7IUNLRURJVE9SLmRpc2FibGVBdXRvSW5saW5lJiZDS0VESVRPUi5pbmxpbmVBbGwoKX0pfSgpLENLRURJVE9SLnJlcGxhY2VDbGFzcz1cImNrZWRpdG9yXCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYyxrLGwpe2E9Q0tFRElUT1IuZWRpdG9yLl9nZXRFZGl0b3JFbGVtZW50KGEpO2lmKCFhKXJldHVybiBudWxsO2lmKENLRURJVE9SLmVkaXRvci5zaG91bGREZWxheUVkaXRvckNyZWF0aW9uKGEsYykpcmV0dXJuIENLRURJVE9SLmVkaXRvci5pbml0aWFsaXplRGVsYXllZEVkaXRvckNyZWF0aW9uKGEsYyxcInJlcGxhY2VcIik7dmFyIG09bmV3IENLRURJVE9SLmVkaXRvcihjLGEsbCk7bD09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0UmJihhLnNldFN0eWxlKFwidmlzaWJpbGl0eVwiLFxuXCJoaWRkZW5cIiksbS5fLnJlcXVpcmVkPWEuaGFzQXR0cmlidXRlKFwicmVxdWlyZWRcIiksYS5yZW1vdmVBdHRyaWJ1dGUoXCJyZXF1aXJlZFwiKSk7ayYmbS5zZXREYXRhKGssbnVsbCwhMCk7bS5vbihcImxvYWRlZFwiLGZ1bmN0aW9uKCl7bS5pc0Rlc3Ryb3llZCgpfHxtLmlzRGV0YWNoZWQoKXx8KGUobSksbD09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0UmJm0uY29uZmlnLmF1dG9VcGRhdGVFbGVtZW50JiZhLiQuZm9ybSYmbS5fYXR0YWNoVG9Gb3JtKCksbS5zZXRNb2RlKG0uY29uZmlnLnN0YXJ0dXBNb2RlLGZ1bmN0aW9uKCl7bS5yZXNldERpcnR5KCk7bS5zdGF0dXM9XCJyZWFkeVwiO20uZmlyZU9uY2UoXCJpbnN0YW5jZVJlYWR5XCIpO0NLRURJVE9SLmZpcmUoXCJpbnN0YW5jZVJlYWR5XCIsbnVsbCxtKX0pKX0pO20ub24oXCJkZXN0cm95XCIsZik7cmV0dXJuIG19ZnVuY3Rpb24gZigpe3ZhciBhPXRoaXMuY29udGFpbmVyLGM9dGhpcy5lbGVtZW50O2EmJihhLmNsZWFyQ3VzdG9tRGF0YSgpLFxuYS5yZW1vdmUoKSk7YyYmKGMuY2xlYXJDdXN0b21EYXRhKCksdGhpcy5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX1JFUExBQ0UmJihjLnNob3coKSx0aGlzLl8ucmVxdWlyZWQmJmMuc2V0QXR0cmlidXRlKFwicmVxdWlyZWRcIixcInJlcXVpcmVkXCIpKSxkZWxldGUgdGhpcy5lbGVtZW50KX1mdW5jdGlvbiBlKGEpe3ZhciBjPWEubmFtZSxlPWEuZWxlbWVudCxmPWEuZWxlbWVudE1vZGUsbT1hLmZpcmUoXCJ1aVNwYWNlXCIse3NwYWNlOlwidG9wXCIsaHRtbDpcIlwifSkuaHRtbCxkPWEuZmlyZShcInVpU3BhY2VcIix7c3BhY2U6XCJib3R0b21cIixodG1sOlwiXCJ9KS5odG1sLGg9bmV3IENLRURJVE9SLnRlbXBsYXRlKCdcXHgzY3tvdXRlckVsfSBpZFxceDNkXCJja2Vfe25hbWV9XCIgY2xhc3NcXHgzZFwie2lkfSBja2UgY2tlX3Jlc2V0IGNrZV9jaHJvbWUgY2tlX2VkaXRvcl97bmFtZX0gY2tlX3tsYW5nRGlyfSAnK0NLRURJVE9SLmVudi5jc3NDbGFzcysnXCIgIGRpclxceDNkXCJ7bGFuZ0Rpcn1cIiBsYW5nXFx4M2RcIntsYW5nQ29kZX1cIiByb2xlXFx4M2RcImFwcGxpY2F0aW9uXCInK1xuKGEuYXBwbGljYXRpb25UaXRsZT8nIGFyaWEtbGFiZWxsZWRieVxceDNkXCJja2Vfe25hbWV9X2FyaWFsYmxcIic6XCJcIikrXCJcXHgzZVwiKyhhLmFwcGxpY2F0aW9uVGl0bGU/J1xceDNjc3BhbiBpZFxceDNkXCJja2Vfe25hbWV9X2FyaWFsYmxcIiBjbGFzc1xceDNkXCJja2Vfdm9pY2VfbGFiZWxcIlxceDNle3ZvaWNlTGFiZWx9XFx4M2Mvc3BhblxceDNlJzpcIlwiKSsnXFx4M2N7b3V0ZXJFbH0gY2xhc3NcXHgzZFwiY2tlX2lubmVyIGNrZV9yZXNldFwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZXt0b3BIdG1sfVxceDNje291dGVyRWx9IGlkXFx4M2RcIntjb250ZW50SWR9XCIgY2xhc3NcXHgzZFwiY2tlX2NvbnRlbnRzIGNrZV9yZXNldFwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZVxceDNjL3tvdXRlckVsfVxceDNle2JvdHRvbUh0bWx9XFx4M2Mve291dGVyRWx9XFx4M2VcXHgzYy97b3V0ZXJFbH1cXHgzZScpLGM9Q0tFRElUT1IuZG9tLmVsZW1lbnQuY3JlYXRlRnJvbUh0bWwoaC5vdXRwdXQoe2lkOmEuaWQsbmFtZTpjLGxhbmdEaXI6YS5sYW5nLmRpcixcbmxhbmdDb2RlOmEubGFuZ0NvZGUsdm9pY2VMYWJlbDphLmFwcGxpY2F0aW9uVGl0bGUsdG9wSHRtbDptPydcXHgzY3NwYW4gaWRcXHgzZFwiJythLnVpLnNwYWNlSWQoXCJ0b3BcIikrJ1wiIGNsYXNzXFx4M2RcImNrZV90b3AgY2tlX3Jlc2V0X2FsbFwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCIgc3R5bGVcXHgzZFwiaGVpZ2h0OmF1dG9cIlxceDNlJyttK1wiXFx4M2Mvc3BhblxceDNlXCI6XCJcIixjb250ZW50SWQ6YS51aS5zcGFjZUlkKFwiY29udGVudHNcIiksYm90dG9tSHRtbDpkPydcXHgzY3NwYW4gaWRcXHgzZFwiJythLnVpLnNwYWNlSWQoXCJib3R0b21cIikrJ1wiIGNsYXNzXFx4M2RcImNrZV9ib3R0b20gY2tlX3Jlc2V0X2FsbFwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZScrZCtcIlxceDNjL3NwYW5cXHgzZVwiOlwiXCIsb3V0ZXJFbDpDS0VESVRPUi5lbnYuaWU/XCJzcGFuXCI6XCJkaXZcIn0pKTtmPT1DS0VESVRPUi5FTEVNRU5UX01PREVfUkVQTEFDRT8oZS5oaWRlKCksYy5pbnNlcnRBZnRlcihlKSk6ZS5hcHBlbmQoYyk7YS5jb250YWluZXI9XG5jO2EudWkuY29udGVudHNFbGVtZW50PWEudWkuc3BhY2UoXCJjb250ZW50c1wiKTttJiZhLnVpLnNwYWNlKFwidG9wXCIpLnVuc2VsZWN0YWJsZSgpO2QmJmEudWkuc3BhY2UoXCJib3R0b21cIikudW5zZWxlY3RhYmxlKCk7ZT1hLmNvbmZpZy53aWR0aDtmPWEuY29uZmlnLmhlaWdodDtlJiZjLnNldFN0eWxlKFwid2lkdGhcIixDS0VESVRPUi50b29scy5jc3NMZW5ndGgoZSkpO2YmJmEudWkuc3BhY2UoXCJjb250ZW50c1wiKS5zZXRTdHlsZShcImhlaWdodFwiLENLRURJVE9SLnRvb2xzLmNzc0xlbmd0aChmKSk7Yy5kaXNhYmxlQ29udGV4dE1lbnUoKTtDS0VESVRPUi5lbnYud2Via2l0JiZjLm9uKFwiZm9jdXNcIixmdW5jdGlvbigpe2EuZm9jdXMoKX0pO2EuZmlyZU9uY2UoXCJ1aVJlYWR5XCIpfUNLRURJVE9SLnJlcGxhY2U9ZnVuY3Rpb24oYixjKXtyZXR1cm4gYShiLGMsbnVsbCxDS0VESVRPUi5FTEVNRU5UX01PREVfUkVQTEFDRSl9O0NLRURJVE9SLmFwcGVuZFRvPWZ1bmN0aW9uKGIsYyxlKXtyZXR1cm4gYShiLFxuYyxlLENLRURJVE9SLkVMRU1FTlRfTU9ERV9BUFBFTkRUTyl9O0NLRURJVE9SLnJlcGxhY2VBbGw9ZnVuY3Rpb24oKXtmb3IodmFyIGE9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJ0ZXh0YXJlYVwiKSxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBlPW51bGwsZj1hW2NdO2lmKGYubmFtZXx8Zi5pZCl7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGFyZ3VtZW50c1swXSl7aWYoIShuZXcgUmVnRXhwKFwiKD86XnxcXFxccylcIithcmd1bWVudHNbMF0rXCIoPzokfFxcXFxzKVwiKSkudGVzdChmLmNsYXNzTmFtZSkpY29udGludWV9ZWxzZSBpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhcmd1bWVudHNbMF0mJihlPXt9LCExPT09YXJndW1lbnRzWzBdKGYsZSkpKWNvbnRpbnVlO3RoaXMucmVwbGFjZShmLGUpfX19O0NLRURJVE9SLmVkaXRvci5wcm90b3R5cGUuYWRkTW9kZT1mdW5jdGlvbihhLGMpeyh0aGlzLl8ubW9kZXN8fCh0aGlzLl8ubW9kZXM9e30pKVthXT1jfTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLnNldE1vZGU9XG5mdW5jdGlvbihhLGMpe3ZhciBlPXRoaXMsZj10aGlzLl8ubW9kZXM7aWYoYSE9ZS5tb2RlJiZmJiZmW2FdKXtlLmZpcmUoXCJiZWZvcmVTZXRNb2RlXCIsYSk7aWYoZS5tb2RlKXt2YXIgbT1lLmNoZWNrRGlydHkoKSxmPWUuXy5wcmV2aW91c01vZGVEYXRhLGQsaD0wO2UuZmlyZShcImJlZm9yZU1vZGVVbmxvYWRcIik7ZS5lZGl0YWJsZSgwKTtlLl8ucHJldmlvdXNNb2RlPWUubW9kZTtlLl8ucHJldmlvdXNNb2RlRGF0YT1kPWUuZ2V0RGF0YSgxKTtcInNvdXJjZVwiPT1lLm1vZGUmJmY9PWQmJihlLmZpcmUoXCJsb2NrU25hcHNob3RcIix7Zm9yY2VVcGRhdGU6ITB9KSxoPTEpO2UudWkuc3BhY2UoXCJjb250ZW50c1wiKS5zZXRIdG1sKFwiXCIpO2UubW9kZT1cIlwifWVsc2UgZS5fLnByZXZpb3VzTW9kZURhdGE9ZS5nZXREYXRhKDEpO3RoaXMuXy5tb2Rlc1thXShmdW5jdGlvbigpe2UubW9kZT1hO3ZvaWQgMCE9PW0mJiFtJiZlLnJlc2V0RGlydHkoKTtoP2UuZmlyZShcInVubG9ja1NuYXBzaG90XCIpOlwid3lzaXd5Z1wiPT1cbmEmJmUuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5pc0Rlc3Ryb3llZCgpfHxlLmlzRGV0YWNoZWQoKXx8KGUuZmlyZShcIm1vZGVcIiksYyYmYy5jYWxsKGUpKX0sMCl9KX19O0NLRURJVE9SLmVkaXRvci5wcm90b3R5cGUucmVzaXplPWZ1bmN0aW9uKGEsYyxlLGYpe3ZhciBtPXRoaXMuY29udGFpbmVyLGQ9dGhpcy51aS5zcGFjZShcImNvbnRlbnRzXCIpLGg9Q0tFRElUT1IuZW52LndlYmtpdCYmdGhpcy5kb2N1bWVudCYmdGhpcy5kb2N1bWVudC5nZXRXaW5kb3coKS4kLmZyYW1lRWxlbWVudDtmPWY/dGhpcy5jb250YWluZXIuZ2V0Rmlyc3QoZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmhhc0NsYXNzKFwiY2tlX2lubmVyXCIpfSk6bTtpZihhfHwwPT09YSlhPUNLRURJVE9SLnRvb2xzLmNvbnZlcnRUb1B4KENLRURJVE9SLnRvb2xzLmNzc0xlbmd0aChhKSk7Zi5zZXRTaXplKFwid2lkdGhcIixhLCEwKTtoJiZcbihoLnN0eWxlLndpZHRoPVwiMSVcIik7Yz1DS0VESVRPUi50b29scy5jb252ZXJ0VG9QeChDS0VESVRPUi50b29scy5jc3NMZW5ndGgoYykpO3ZhciBnPShmLiQub2Zmc2V0SGVpZ2h0fHwwKS0oZC4kLmNsaWVudEhlaWdodHx8MCksbT1NYXRoLm1heChjLShlPzA6ZyksMCk7Yz1lP2MrZzpjO2Quc2V0U3R5bGUoXCJoZWlnaHRcIixDS0VESVRPUi50b29scy5jc3NMZW5ndGgobSkpO2gmJihoLnN0eWxlLndpZHRoPVwiMTAwJVwiKTt0aGlzLmZpcmUoXCJyZXNpemVcIix7b3V0ZXJIZWlnaHQ6Yyxjb250ZW50c0hlaWdodDptLG91dGVyV2lkdGg6YXx8Zi5nZXRTaXplKFwid2lkdGhcIil9KX07Q0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5nZXRSZXNpemFibGU9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/dGhpcy51aS5zcGFjZShcImNvbnRlbnRzXCIpOnRoaXMuY29udGFpbmVyfTtDS0VESVRPUi5kb21SZWFkeShmdW5jdGlvbigpe0NLRURJVE9SLnJlcGxhY2VDbGFzcyYmQ0tFRElUT1IucmVwbGFjZUFsbChDS0VESVRPUi5yZXBsYWNlQ2xhc3MpfSl9KCksXG5DS0VESVRPUi5jb25maWcuc3RhcnR1cE1vZGU9XCJ3eXNpd3lnXCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBjPWEuZWRpdG9yLGc9YS5kYXRhLnBhdGgsZT1nLmJsb2NrTGltaXQsaD1hLmRhdGEuc2VsZWN0aW9uLGs9aC5nZXRSYW5nZXMoKVswXSxsO2lmKENLRURJVE9SLmVudi5nZWNrb3x8Q0tFRElUT1IuZW52LmllJiZDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlcilpZihoPWYoaCxnKSloLmFwcGVuZEJvZ3VzKCksbD1DS0VESVRPUi5lbnYuaWUmJiFDS0VESVRPUi5lbnYuZWRnZXx8Q0tFRElUT1IuZW52LmVkZ2UmJmMuXy5wcmV2aW91c0FjdGl2ZTtkKGMsZy5ibG9jayxlKSYmay5jb2xsYXBzZWQmJiFrLmdldENvbW1vbkFuY2VzdG9yKCkuaXNSZWFkT25seSgpJiYoZz1rLmNsb25lKCksZy5lbmxhcmdlKENLRURJVE9SLkVOTEFSR0VfQkxPQ0tfQ09OVEVOVFMpLGU9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoZyksZS5ndWFyZD1mdW5jdGlvbihhKXtyZXR1cm4hYihhKXx8XG5hLnR5cGU9PUNLRURJVE9SLk5PREVfQ09NTUVOVHx8YS5pc1JlYWRPbmx5KCl9LCFlLmNoZWNrRm9yd2FyZCgpfHxnLmNoZWNrU3RhcnRPZkJsb2NrKCkmJmcuY2hlY2tFbmRPZkJsb2NrKCkpJiYoYz1rLmZpeEJsb2NrKCEwLGMuYWN0aXZlRW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9ESVY/XCJkaXZcIjpcInBcIiksQ0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXJ8fChjPWMuZ2V0Rmlyc3QoYikpJiZjLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmQ0tFRElUT1IudG9vbHMudHJpbShjLmdldFRleHQoKSkubWF0Y2goL14oPzombmJzcDt8XFx4YTApJC8pJiZjLnJlbW92ZSgpLGw9MSxhLmNhbmNlbCgpKTtsJiZrLnNlbGVjdCgpfWZ1bmN0aW9uIGYoYSxkKXtpZihhLmlzRmFrZSlyZXR1cm4gMDt2YXIgYz1kLmJsb2NrfHxkLmJsb2NrTGltaXQsZz1jJiZjLmdldExhc3QoYik7aWYoISghY3x8IWMuaXNCbG9ja0JvdW5kYXJ5KCl8fGcmJmcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZcbmcuaXNCbG9ja0JvdW5kYXJ5KCl8fGMuaXMoXCJwcmVcIil8fGMuZ2V0Qm9ndXMoKSkpcmV0dXJuIGN9ZnVuY3Rpb24gZShhKXt2YXIgYj1hLmRhdGEuZ2V0VGFyZ2V0KCk7Yi5pcyhcImlucHV0XCIpJiYoYj1iLmdldEF0dHJpYnV0ZShcInR5cGVcIiksXCJzdWJtaXRcIiE9YiYmXCJyZXNldFwiIT1ifHxhLmRhdGEucHJldmVudERlZmF1bHQoKSl9ZnVuY3Rpb24gYihhKXtyZXR1cm4geChhKSYmcihhKX1mdW5jdGlvbiBjKGEsYil7cmV0dXJuIGZ1bmN0aW9uKGQpe3ZhciBjPWQuZGF0YS4kLnRvRWxlbWVudHx8ZC5kYXRhLiQuZnJvbUVsZW1lbnR8fGQuZGF0YS4kLnJlbGF0ZWRUYXJnZXQ7KGM9YyYmYy5ub2RlVHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UP25ldyBDS0VESVRPUi5kb20uZWxlbWVudChjKTpudWxsKSYmKGIuZXF1YWxzKGMpfHxiLmNvbnRhaW5zKGMpKXx8YS5jYWxsKHRoaXMsZCl9fWZ1bmN0aW9uIGsoYSl7cmV0dXJuISFhLmdldFJhbmdlcygpWzBdLnN0YXJ0UGF0aCgpLmNvbnRhaW5zKHt0YWJsZToxLFxudWw6MSxvbDoxLGRsOjF9KX1mdW5jdGlvbiBsKGEpe2Z1bmN0aW9uIGQoYSl7dmFyIGc9e3RhYmxlOjEsdWw6MSxvbDoxLGRsOjF9O3JldHVybiBmdW5jdGlvbihkLGUpe2UmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZkLmlzKGcpJiYoYz1kKTtpZighKGV8fCFiKGQpfHxhJiZ1KGQpKSlyZXR1cm4hMX19dmFyIGMsZz1hLmdldFJhbmdlcygpWzBdLGU9YS5yb290O3JldHVybiBrKGEpJiYoYT1nLmNsb25lKCksYS5jb2xsYXBzZSgxKSxhLnNldFN0YXJ0QXQoZSxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVCksZT1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihhKSxlLmd1YXJkPWQoKSxlLmNoZWNrQmFja3dhcmQoKSxjKT8oYT1nLmNsb25lKCksYS5jb2xsYXBzZSgpLGEuc2V0RW5kQXQoYyxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpLGU9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYSksZS5ndWFyZD1kKCEwKSxjPSExLGUuY2hlY2tGb3J3YXJkKCksYyk6bnVsbH1cbmZ1bmN0aW9uIG0oYSl7cmV0dXJuIGEuYmxvY2suZ2V0UGFyZW50KCkuZ2V0Q2hpbGRDb3VudCgpfWZ1bmN0aW9uIGQoYSxiLGQpe3JldHVybiExIT09YS5jb25maWcuYXV0b1BhcmFncmFwaCYmYS5hY3RpdmVFbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX0JSJiYoYS5lZGl0YWJsZSgpLmVxdWFscyhkKSYmIWJ8fGImJlwidHJ1ZVwiPT1iLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSl9ZnVuY3Rpb24gaChhKXtyZXR1cm4gYS5hY3RpdmVFbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX0JSJiYhMSE9PWEuY29uZmlnLmF1dG9QYXJhZ3JhcGg/YS5hY3RpdmVFbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX0RJVj9cImRpdlwiOlwicFwiOiExfWZ1bmN0aW9uIGcoYSl7YSYmYS5pc0VtcHR5SW5saW5lUmVtb3ZlYWJsZSgpJiZhLnJlbW92ZSgpfWZ1bmN0aW9uIG4oYSl7dmFyIGI9YS5lZGl0b3I7Yi5nZXRTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmZpcmUoXCJzYXZlU25hcHNob3RcIil9LFxuMCl9ZnVuY3Rpb24gdyhhLGIsZCl7dmFyIGM9YS5nZXRDb21tb25BbmNlc3RvcihiKTtmb3IoYj1hPWQ/YjphOyhhPWEuZ2V0UGFyZW50KCkpJiYhYy5lcXVhbHMoYSkmJjE9PWEuZ2V0Q2hpbGRDb3VudCgpOyliPWE7Yi5yZW1vdmUoKX12YXIgeCxyLHAsdSx6LHEsQSx5LHQsdixCPXt1bDoxLG9sOjEsZGw6MX07Q0tFRElUT1IuZWRpdGFibGU9Q0tFRElUT1IudG9vbHMuY3JlYXRlQ2xhc3Moe2Jhc2U6Q0tFRElUT1IuZG9tLmVsZW1lbnQsJDpmdW5jdGlvbihhLGIpe3RoaXMuYmFzZShiLiR8fGIpO3RoaXMuZWRpdG9yPWE7dGhpcy5zdGF0dXM9XCJ1bmxvYWRlZFwiO3RoaXMuaGFzRm9jdXM9ITE7dGhpcy5zZXR1cCgpfSxwcm90bzp7Zm9jdXM6ZnVuY3Rpb24oKXt2YXIgYTtpZihDS0VESVRPUi5lbnYud2Via2l0JiYhdGhpcy5oYXNGb2N1cyYmKGE9dGhpcy5lZGl0b3IuXy5wcmV2aW91c0FjdGl2ZXx8dGhpcy5nZXREb2N1bWVudCgpLmdldEFjdGl2ZSgpLHRoaXMuY29udGFpbnMoYSkpKXthLmZvY3VzKCk7XG5yZXR1cm59Q0tFRElUT1IuZW52LmVkZ2UmJjE0PENLRURJVE9SLmVudi52ZXJzaW9uJiYhdGhpcy5oYXNGb2N1cyYmdGhpcy5nZXREb2N1bWVudCgpLmVxdWFscyhDS0VESVRPUi5kb2N1bWVudCkmJih0aGlzLmVkaXRvci5fLnByZXZpb3VzU2Nyb2xsVG9wPXRoaXMuJC5zY3JvbGxUb3ApO3RyeXtpZighQ0tFRElUT1IuZW52LmllfHxDS0VESVRPUi5lbnYuZWRnZSYmMTQ8Q0tFRElUT1IuZW52LnZlcnNpb258fCF0aGlzLmdldERvY3VtZW50KCkuZXF1YWxzKENLRURJVE9SLmRvY3VtZW50KSlpZihDS0VESVRPUi5lbnYuY2hyb21lKXt2YXIgYj10aGlzLiQuc2Nyb2xsVG9wO3RoaXMuJC5mb2N1cygpO3RoaXMuJC5zY3JvbGxUb3A9Yn1lbHNlIHRoaXMuJC5mb2N1cygpO2Vsc2UgdGhpcy4kLnNldEFjdGl2ZSgpfWNhdGNoKGQpe2lmKCFDS0VESVRPUi5lbnYuaWUpdGhyb3cgZDt9Q0tFRElUT1IuZW52LnNhZmFyaSYmIXRoaXMuaXNJbmxpbmUoKSYmKGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QWN0aXZlKCksXG5hLmVxdWFscyh0aGlzLmdldFdpbmRvdygpLmdldEZyYW1lKCkpfHx0aGlzLmdldFdpbmRvdygpLmZvY3VzKCkpfSxvbjpmdW5jdGlvbihhLGIpe3ZhciBkPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtDS0VESVRPUi5lbnYuaWUmJi9eZm9jdXN8Ymx1ciQvLmV4ZWMoYSkmJihhPVwiZm9jdXNcIj09YT9cImZvY3VzaW5cIjpcImZvY3Vzb3V0XCIsYj1jKGIsdGhpcyksZFswXT1hLGRbMV09Yik7cmV0dXJuIENLRURJVE9SLmRvbS5lbGVtZW50LnByb3RvdHlwZS5vbi5hcHBseSh0aGlzLGQpfSxhdHRhY2hMaXN0ZW5lcjpmdW5jdGlvbihhKXshdGhpcy5fLmxpc3RlbmVycyYmKHRoaXMuXy5saXN0ZW5lcnM9W10pO3ZhciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxiPWEub24uYXBwbHkoYSxiKTt0aGlzLl8ubGlzdGVuZXJzLnB1c2goYik7cmV0dXJuIGJ9LGNsZWFyTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLmxpc3RlbmVycztcbnRyeXtmb3IoO2EubGVuZ3RoOylhLnBvcCgpLnJlbW92ZUxpc3RlbmVyKCl9Y2F0Y2goYil7fX0scmVzdG9yZUF0dHJzOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLmF0dHJDaGFuZ2VzLGIsZDtmb3IoZCBpbiBhKWEuaGFzT3duUHJvcGVydHkoZCkmJihiPWFbZF0sbnVsbCE9PWI/dGhpcy5zZXRBdHRyaWJ1dGUoZCxiKTp0aGlzLnJlbW92ZUF0dHJpYnV0ZShkKSl9LGF0dGFjaENsYXNzOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0Q3VzdG9tRGF0YShcImNsYXNzZXNcIik7dGhpcy5oYXNDbGFzcyhhKXx8KCFiJiYoYj1bXSksYi5wdXNoKGEpLHRoaXMuc2V0Q3VzdG9tRGF0YShcImNsYXNzZXNcIixiKSx0aGlzLmFkZENsYXNzKGEpKX0sY2hhbmdlQXR0cjpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuZ2V0QXR0cmlidXRlKGEpO2IhPT1kJiYoIXRoaXMuXy5hdHRyQ2hhbmdlcyYmKHRoaXMuXy5hdHRyQ2hhbmdlcz17fSksYSBpbiB0aGlzLl8uYXR0ckNoYW5nZXN8fCh0aGlzLl8uYXR0ckNoYW5nZXNbYV09XG5kKSx0aGlzLnNldEF0dHJpYnV0ZShhLGIpKX0saW5zZXJ0VGV4dDpmdW5jdGlvbihhKXt0aGlzLmVkaXRvci5mb2N1cygpO3RoaXMuaW5zZXJ0SHRtbCh0aGlzLnRyYW5zZm9ybVBsYWluVGV4dFRvSHRtbChhKSxcInRleHRcIil9LHRyYW5zZm9ybVBsYWluVGV4dFRvSHRtbDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKS5nZXRTdGFydEVsZW1lbnQoKS5oYXNBc2NlbmRhbnQoXCJwcmVcIiwhMCk/Q0tFRElUT1IuRU5URVJfQlI6dGhpcy5lZGl0b3IuYWN0aXZlRW50ZXJNb2RlO3JldHVybiBDS0VESVRPUi50b29scy50cmFuc2Zvcm1QbGFpblRleHRUb0h0bWwoYSxiKX0saW5zZXJ0SHRtbDpmdW5jdGlvbihhLGIsZCl7dmFyIGM9dGhpcy5lZGl0b3I7Yy5mb2N1cygpO2MuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtkfHwoZD1jLmdldFNlbGVjdGlvbigpLmdldFJhbmdlcygpWzBdKTtxKHRoaXMsYnx8XCJodG1sXCIsYSxkKTtkLnNlbGVjdCgpO24odGhpcyk7dGhpcy5lZGl0b3IuZmlyZShcImFmdGVySW5zZXJ0SHRtbFwiLFxue30pfSxpbnNlcnRIdG1sSW50b1JhbmdlOmZ1bmN0aW9uKGEsYixkKXtxKHRoaXMsZHx8XCJodG1sXCIsYSxiKTt0aGlzLmVkaXRvci5maXJlKFwiYWZ0ZXJJbnNlcnRIdG1sXCIse2ludG9SYW5nZTpifSl9LGluc2VydEVsZW1lbnQ6ZnVuY3Rpb24oYSxkKXt2YXIgYz10aGlzLmVkaXRvcjtjLmZvY3VzKCk7Yy5maXJlKFwic2F2ZVNuYXBzaG90XCIpO3ZhciBnPWMuYWN0aXZlRW50ZXJNb2RlLGM9Yy5nZXRTZWxlY3Rpb24oKSxlPWEuZ2V0TmFtZSgpLGU9Q0tFRElUT1IuZHRkLiRibG9ja1tlXTtkfHwoZD1jLmdldFJhbmdlcygpWzBdKTt0aGlzLmluc2VydEVsZW1lbnRJbnRvUmFuZ2UoYSxkKSYmKGQubW92ZVRvUG9zaXRpb24oYSxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpLGUmJigoZT1hLmdldE5leHQoZnVuY3Rpb24oYSl7cmV0dXJuIGIoYSkmJiF1KGEpfSkpJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5pcyhDS0VESVRPUi5kdGQuJGJsb2NrKT9lLmdldER0ZCgpW1wiI1wiXT9cbmQubW92ZVRvRWxlbWVudEVkaXRTdGFydChlKTpkLm1vdmVUb0VsZW1lbnRFZGl0RW5kKGEpOmV8fGc9PUNLRURJVE9SLkVOVEVSX0JSfHwoZT1kLmZpeEJsb2NrKCEwLGc9PUNLRURJVE9SLkVOVEVSX0RJVj9cImRpdlwiOlwicFwiKSxkLm1vdmVUb0VsZW1lbnRFZGl0U3RhcnQoZSkpKSk7Yy5zZWxlY3RSYW5nZXMoW2RdKTtuKHRoaXMpfSxpbnNlcnRFbGVtZW50SW50b1NlbGVjdGlvbjpmdW5jdGlvbihhKXt0aGlzLmluc2VydEVsZW1lbnQoYSl9LGluc2VydEVsZW1lbnRJbnRvUmFuZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLmVkaXRvcixjPWQuY29uZmlnLmVudGVyTW9kZSxlPWEuZ2V0TmFtZSgpLGg9Q0tFRElUT1IuZHRkLiRibG9ja1tlXTtpZihiLmNoZWNrUmVhZE9ubHkoKSlyZXR1cm4hMTtiLmRlbGV0ZUNvbnRlbnRzKDEpO2Iuc3RhcnRDb250YWluZXIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYi5zdGFydENvbnRhaW5lci5pcyh7dHI6MSx0YWJsZToxLHRib2R5OjEsXG50aGVhZDoxLHRmb290OjF9KT9BKGIpOmIuc3RhcnRDb250YWluZXIuaXMoQ0tFRElUT1IuZHRkLiRsaXN0KSYmeShiKSk7dmFyIGYsaztpZihoKWZvcig7KGY9Yi5nZXRDb21tb25BbmNlc3RvcigwLDEpKSYmKGs9Q0tFRElUT1IuZHRkW2YuZ2V0TmFtZSgpXSkmJigha3x8IWtbZV0pOylpZihmLmdldE5hbWUoKWluIENLRURJVE9SLmR0ZC5zcGFuKXt2YXIgaD1iLnNwbGl0RWxlbWVudChmKSxsPWIuY3JlYXRlQm9va21hcmsoKTtnKGYpO2coaCk7Yi5tb3ZlVG9Cb29rbWFyayhsKX1lbHNlIGIuY2hlY2tTdGFydE9mQmxvY2soKSYmYi5jaGVja0VuZE9mQmxvY2soKT8oYi5zZXRTdGFydEJlZm9yZShmKSxiLmNvbGxhcHNlKCEwKSxmLnJlbW92ZSgpKTpiLnNwbGl0QmxvY2soYz09Q0tFRElUT1IuRU5URVJfRElWP1wiZGl2XCI6XCJwXCIsZC5lZGl0YWJsZSgpKTtiLmluc2VydE5vZGUoYSk7cmV0dXJuITB9LHNldERhdGE6ZnVuY3Rpb24oYSxiKXtifHwoYT10aGlzLmVkaXRvci5kYXRhUHJvY2Vzc29yLnRvSHRtbChhKSk7XG50aGlzLnNldEh0bWwoYSk7dGhpcy5maXhJbml0aWFsU2VsZWN0aW9uKCk7XCJ1bmxvYWRlZFwiPT10aGlzLnN0YXR1cyYmKHRoaXMuc3RhdHVzPVwicmVhZHlcIik7dGhpcy5lZGl0b3IuZmlyZShcImRhdGFSZWFkeVwiKX0sZ2V0RGF0YTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmdldEh0bWwoKTthfHwoYj10aGlzLmVkaXRvci5kYXRhUHJvY2Vzc29yLnRvRGF0YUZvcm1hdChiKSk7cmV0dXJuIGJ9LHNldFJlYWRPbmx5OmZ1bmN0aW9uKGEpe3RoaXMuc2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIsU3RyaW5nKCFhKSk7dGhpcy5zZXRBdHRyaWJ1dGUoXCJhcmlhLXJlYWRvbmx5XCIsU3RyaW5nKGEpKX0sZGV0YWNoOmZ1bmN0aW9uKCl7dGhpcy5zdGF0dXM9XCJkZXRhY2hlZFwiO3RoaXMuZWRpdG9yLnNldERhdGEodGhpcy5lZGl0b3IuZ2V0RGF0YSgpLHtpbnRlcm5hbDohMH0pO3RoaXMuY2xlYXJMaXN0ZW5lcnMoKTt0cnl7dGhpcy5fLmNsZWFuQ3VzdG9tRGF0YSgpfWNhdGNoKGEpe2lmKCFDS0VESVRPUi5lbnYuaWV8fFxuLTIxNDY4MjgyMTghPT1hLm51bWJlcil0aHJvdyBhO310aGlzLmVkaXRvci5maXJlKFwiY29udGVudERvbVVubG9hZFwiKTtkZWxldGUgdGhpcy5lZGl0b3IuZG9jdW1lbnQ7ZGVsZXRlIHRoaXMuZWRpdG9yLndpbmRvdztkZWxldGUgdGhpcy5lZGl0b3J9LGlzSW5saW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RG9jdW1lbnQoKS5lcXVhbHMoQ0tFRElUT1IuZG9jdW1lbnQpfSxmaXhJbml0aWFsU2VsZWN0aW9uOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYSgpe3ZhciBiPWQuZ2V0RG9jdW1lbnQoKS4kLGM9Yi5nZXRTZWxlY3Rpb24oKSxnO2E6aWYoYy5hbmNob3JOb2RlJiZjLmFuY2hvck5vZGU9PWQuJClnPSEwO2Vsc2V7aWYoQ0tFRElUT1IuZW52LndlYmtpdCYmKGc9ZC5nZXREb2N1bWVudCgpLmdldEFjdGl2ZSgpKSYmZy5lcXVhbHMoZCkmJiFjLmFuY2hvck5vZGUpe2c9ITA7YnJlYWsgYX1nPXZvaWQgMH1nJiYoZz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKGQpLGcubW92ZVRvRWxlbWVudEVkaXRTdGFydChkKSxcbmI9Yi5jcmVhdGVSYW5nZSgpLGIuc2V0U3RhcnQoZy5zdGFydENvbnRhaW5lci4kLGcuc3RhcnRPZmZzZXQpLGIuY29sbGFwc2UoITApLGMucmVtb3ZlQWxsUmFuZ2VzKCksYy5hZGRSYW5nZShiKSl9ZnVuY3Rpb24gYigpe3ZhciBhPWQuZ2V0RG9jdW1lbnQoKS4kLGM9YS5zZWxlY3Rpb24sZz1kLmdldERvY3VtZW50KCkuZ2V0QWN0aXZlKCk7XCJOb25lXCI9PWMudHlwZSYmZy5lcXVhbHMoZCkmJihjPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UoZCksYT1hLmJvZHkuY3JlYXRlVGV4dFJhbmdlKCksYy5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KGQpLGM9Yy5zdGFydENvbnRhaW5lcixjLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKGM9Yy5nZXRQYXJlbnQoKSksYS5tb3ZlVG9FbGVtZW50VGV4dChjLiQpLGEuY29sbGFwc2UoITApLGEuc2VsZWN0KCkpfXZhciBkPXRoaXM7aWYoQ0tFRElUT1IuZW52LmllJiYoOT5DS0VESVRPUi5lbnYudmVyc2lvbnx8Q0tFRElUT1IuZW52LnF1aXJrcykpdGhpcy5oYXNGb2N1cyYmXG4odGhpcy5mb2N1cygpLGIoKSk7ZWxzZSBpZih0aGlzLmhhc0ZvY3VzKXRoaXMuZm9jdXMoKSxhKCk7ZWxzZSB0aGlzLm9uY2UoXCJmb2N1c1wiLGZ1bmN0aW9uKCl7YSgpfSxudWxsLG51bGwsLTk5OSl9LGdldEh0bWxGcm9tUmFuZ2U6ZnVuY3Rpb24oYSl7aWYoYS5jb2xsYXBzZWQpcmV0dXJuIG5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudChhLmRvY3VtZW50KTthPXtkb2M6dGhpcy5nZXREb2N1bWVudCgpLHJhbmdlOmEuY2xvbmUoKX07dC5lb2wuZGV0ZWN0KGEsdGhpcyk7dC5ib2d1cy5leGNsdWRlKGEpO3QuY2VsbC5zaHJpbmsoYSk7YS5mcmFnbWVudD1hLnJhbmdlLmNsb25lQ29udGVudHMoKTt0LnRyZWUucmVidWlsZChhLHRoaXMpO3QuZW9sLmZpeChhLHRoaXMpO3JldHVybiBuZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQoYS5mcmFnbWVudC4kKX0sZXh0cmFjdEh0bWxGcm9tUmFuZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD12LGM9e3JhbmdlOmEsZG9jOmEuZG9jdW1lbnR9LFxuZz10aGlzLmdldEh0bWxGcm9tUmFuZ2UoYSk7aWYoYS5jb2xsYXBzZWQpcmV0dXJuIGEub3B0aW1pemUoKSxnO2EuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0lOTElORSwxKTtkLnRhYmxlLmRldGVjdFB1cmdlKGMpO2MuYm9va21hcms9YS5jcmVhdGVCb29rbWFyaygpO2RlbGV0ZSBjLnJhbmdlO3ZhciBlPXRoaXMuZWRpdG9yLmNyZWF0ZVJhbmdlKCk7ZS5tb3ZlVG9Qb3NpdGlvbihjLmJvb2ttYXJrLnN0YXJ0Tm9kZSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO2MudGFyZ2V0Qm9va21hcms9ZS5jcmVhdGVCb29rbWFyaygpO2QubGlzdC5kZXRlY3RNZXJnZShjLHRoaXMpO2QudGFibGUuZGV0ZWN0UmFuZ2VzKGMsdGhpcyk7ZC5ibG9jay5kZXRlY3RNZXJnZShjLHRoaXMpO2MudGFibGVDb250ZW50c1Jhbmdlcz8oZC50YWJsZS5kZWxldGVSYW5nZXMoYyksYS5tb3ZlVG9Cb29rbWFyayhjLmJvb2ttYXJrKSxjLnJhbmdlPWEpOihhLm1vdmVUb0Jvb2ttYXJrKGMuYm9va21hcmspLFxuYy5yYW5nZT1hLGEuZXh0cmFjdENvbnRlbnRzKGQuZGV0ZWN0RXh0cmFjdE1lcmdlKGMpKSk7YS5tb3ZlVG9Cb29rbWFyayhjLnRhcmdldEJvb2ttYXJrKTthLm9wdGltaXplKCk7ZC5maXhVbmVkaXRhYmxlUmFuZ2VQb3NpdGlvbihhKTtkLmxpc3QubWVyZ2UoYyx0aGlzKTtkLnRhYmxlLnB1cmdlKGMsdGhpcyk7ZC5ibG9jay5tZXJnZShjLHRoaXMpO2lmKGIpe2Q9YS5zdGFydFBhdGgoKTtpZihjPWEuY2hlY2tTdGFydE9mQmxvY2soKSYmYS5jaGVja0VuZE9mQmxvY2soKSYmZC5ibG9jayYmIWEucm9vdC5lcXVhbHMoZC5ibG9jaykpe2E6e3ZhciBjPWQuYmxvY2suZ2V0RWxlbWVudHNCeVRhZyhcInNwYW5cIiksZT0wLGg7aWYoYylmb3IoO2g9Yy5nZXRJdGVtKGUrKyk7KWlmKCFyKGgpKXtjPSEwO2JyZWFrIGF9Yz0hMX1jPSFjfWMmJihhLm1vdmVUb1Bvc2l0aW9uKGQuYmxvY2ssQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKSxkLmJsb2NrLnJlbW92ZSgpKX1lbHNlIGQuYXV0b1BhcmFncmFwaCh0aGlzLmVkaXRvcixcbmEpLHAoYS5zdGFydENvbnRhaW5lcikmJmEuc3RhcnRDb250YWluZXIuYXBwZW5kQm9ndXMoKTthLnN0YXJ0Q29udGFpbmVyLm1lcmdlU2libGluZ3MoKTtyZXR1cm4gZ30sc2V0dXA6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVkaXRvcjt0aGlzLmF0dGFjaExpc3RlbmVyKGEsXCJiZWZvcmVHZXREYXRhXCIsZnVuY3Rpb24oKXt2YXIgYj10aGlzLmdldERhdGEoKTt0aGlzLmlzKFwidGV4dGFyZWFcIil8fCExIT09YS5jb25maWcuaWdub3JlRW1wdHlQYXJhZ3JhcGgmJihiPWIucmVwbGFjZSh6LGZ1bmN0aW9uKGEsYil7cmV0dXJuIGJ9KSk7YS5zZXREYXRhKGIsbnVsbCwxKX0sdGhpcyk7dGhpcy5hdHRhY2hMaXN0ZW5lcihhLFwiZ2V0U25hcHNob3RcIixmdW5jdGlvbihhKXthLmRhdGE9dGhpcy5nZXREYXRhKDEpfSx0aGlzKTt0aGlzLmF0dGFjaExpc3RlbmVyKGEsXCJhZnRlclNldERhdGFcIixmdW5jdGlvbigpe3RoaXMuc2V0RGF0YShhLmdldERhdGEoMSkpfSx0aGlzKTt0aGlzLmF0dGFjaExpc3RlbmVyKGEsXG5cImxvYWRTbmFwc2hvdFwiLGZ1bmN0aW9uKGEpe3RoaXMuc2V0RGF0YShhLmRhdGEsMSl9LHRoaXMpO3RoaXMuYXR0YWNoTGlzdGVuZXIoYSxcImJlZm9yZUZvY3VzXCIsZnVuY3Rpb24oKXt2YXIgYj1hLmdldFNlbGVjdGlvbigpOyhiPWImJmIuZ2V0TmF0aXZlKCkpJiZcIkNvbnRyb2xcIj09Yi50eXBlfHx0aGlzLmZvY3VzKCl9LHRoaXMpO3RoaXMuYXR0YWNoTGlzdGVuZXIoYSxcImluc2VydEh0bWxcIixmdW5jdGlvbihhKXt0aGlzLmluc2VydEh0bWwoYS5kYXRhLmRhdGFWYWx1ZSxhLmRhdGEubW9kZSxhLmRhdGEucmFuZ2UpfSx0aGlzKTt0aGlzLmF0dGFjaExpc3RlbmVyKGEsXCJpbnNlcnRFbGVtZW50XCIsZnVuY3Rpb24oYSl7dGhpcy5pbnNlcnRFbGVtZW50KGEuZGF0YSl9LHRoaXMpO3RoaXMuYXR0YWNoTGlzdGVuZXIoYSxcImluc2VydFRleHRcIixmdW5jdGlvbihhKXt0aGlzLmluc2VydFRleHQoYS5kYXRhKX0sdGhpcyk7dGhpcy5zZXRSZWFkT25seShhLnJlYWRPbmx5KTt0aGlzLmF0dGFjaENsYXNzKFwiY2tlX2VkaXRhYmxlXCIpO1xuYS5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORT90aGlzLmF0dGFjaENsYXNzKFwiY2tlX2VkaXRhYmxlX2lubGluZVwiKTphLmVsZW1lbnRNb2RlIT1DS0VESVRPUi5FTEVNRU5UX01PREVfUkVQTEFDRSYmYS5lbGVtZW50TW9kZSE9Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0FQUEVORFRPfHx0aGlzLmF0dGFjaENsYXNzKFwiY2tlX2VkaXRhYmxlX3RoZW1lZFwiKTt0aGlzLmF0dGFjaENsYXNzKFwiY2tlX2NvbnRlbnRzX1wiK2EuY29uZmlnLmNvbnRlbnRzTGFuZ0RpcmVjdGlvbik7YS5rZXlzdHJva2VIYW5kbGVyLmJsb2NrZWRLZXlzdHJva2VzWzhdPSthLnJlYWRPbmx5O2Eua2V5c3Ryb2tlSGFuZGxlci5hdHRhY2godGhpcyk7dGhpcy5vbihcImJsdXJcIixmdW5jdGlvbigpe3RoaXMuaGFzRm9jdXM9ITF9LG51bGwsbnVsbCwtMSk7dGhpcy5vbihcImZvY3VzXCIsZnVuY3Rpb24oKXt0aGlzLmhhc0ZvY3VzPSEwfSxudWxsLG51bGwsLTEpO2lmKENLRURJVE9SLmVudi53ZWJraXQpdGhpcy5vbihcInNjcm9sbFwiLFxuZnVuY3Rpb24oKXthLl8ucHJldmlvdXNTY3JvbGxUb3A9YS5lZGl0YWJsZSgpLiQuc2Nyb2xsVG9wfSxudWxsLG51bGwsLTEpO2lmKENLRURJVE9SLmVudi5lZGdlJiYxNDxDS0VESVRPUi5lbnYudmVyc2lvbil7dmFyIGQ9ZnVuY3Rpb24oKXt2YXIgYj1hLmVkaXRhYmxlKCk7bnVsbCE9YS5fLnByZXZpb3VzU2Nyb2xsVG9wJiZiLmdldERvY3VtZW50KCkuZXF1YWxzKENLRURJVE9SLmRvY3VtZW50KSYmKGIuJC5zY3JvbGxUb3A9YS5fLnByZXZpb3VzU2Nyb2xsVG9wLGEuXy5wcmV2aW91c1Njcm9sbFRvcD1udWxsLHRoaXMucmVtb3ZlTGlzdGVuZXIoXCJzY3JvbGxcIixkKSl9O3RoaXMub24oXCJzY3JvbGxcIixkKX1hLmZvY3VzTWFuYWdlci5hZGQodGhpcyk7dGhpcy5lcXVhbHMoQ0tFRElUT1IuZG9jdW1lbnQuZ2V0QWN0aXZlKCkpJiYodGhpcy5oYXNGb2N1cz0hMCxhLm9uY2UoXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXthLmZvY3VzTWFuYWdlci5mb2N1cyh0aGlzKX0sdGhpcykpO3RoaXMuaXNJbmxpbmUoKSYmXG50aGlzLmNoYW5nZUF0dHIoXCJ0YWJpbmRleFwiLGEudGFiSW5kZXgpO2lmKCF0aGlzLmlzKFwidGV4dGFyZWFcIikpe2EuZG9jdW1lbnQ9dGhpcy5nZXREb2N1bWVudCgpO2Eud2luZG93PXRoaXMuZ2V0V2luZG93KCk7dmFyIGM9YS5kb2N1bWVudDt0aGlzLmNoYW5nZUF0dHIoXCJzcGVsbGNoZWNrXCIsIWEuY29uZmlnLmRpc2FibGVOYXRpdmVTcGVsbENoZWNrZXIpO3ZhciBnPWEuY29uZmlnLmNvbnRlbnRzTGFuZ0RpcmVjdGlvbjt0aGlzLmdldERpcmVjdGlvbigxKSE9ZyYmdGhpcy5jaGFuZ2VBdHRyKFwiZGlyXCIsZyk7dmFyIGg9Q0tFRElUT1IuZ2V0Q3NzKCk7aWYoaCl7dmFyIGc9Yy5nZXRIZWFkKCksZj1nLmdldEN1c3RvbURhdGEoXCJzdHlsZXNoZWV0XCIpO2Y/aCE9Zi5nZXRUZXh0KCkmJihDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24/Zi4kLnN0eWxlU2hlZXQuY3NzVGV4dD1oOmYuc2V0VGV4dChoKSk6KGg9Yy5hcHBlbmRTdHlsZVRleHQoaCksaD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoaC5vd25lck5vZGV8fFxuaC5vd25pbmdFbGVtZW50KSxnLnNldEN1c3RvbURhdGEoXCJzdHlsZXNoZWV0XCIsaCksaC5kYXRhKFwiY2tlLXRlbXBcIiwxKSl9Zz1jLmdldEN1c3RvbURhdGEoXCJzdHlsZXNoZWV0X3JlZlwiKXx8MDtjLnNldEN1c3RvbURhdGEoXCJzdHlsZXNoZWV0X3JlZlwiLGcrMSk7dGhpcy5zZXRDdXN0b21EYXRhKFwiY2tlX2luY2x1ZGVSZWFkb25seVwiLCFhLmNvbmZpZy5kaXNhYmxlUmVhZG9ubHlTdHlsaW5nKTt0aGlzLmF0dGFjaExpc3RlbmVyKHRoaXMsXCJjbGlja1wiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhO3ZhciBiPShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGEuZ2V0VGFyZ2V0KCksdGhpcykpLmNvbnRhaW5zKFwiYVwiKTtiJiYyIT1hLiQuYnV0dG9uJiZiLmlzUmVhZE9ubHkoKSYmYS5wcmV2ZW50RGVmYXVsdCgpfSk7dmFyIG49ezg6MSw0NjoxfTt0aGlzLmF0dGFjaExpc3RlbmVyKGEsXCJrZXlcIixmdW5jdGlvbihiKXtpZihhLnJlYWRPbmx5KXJldHVybiEwO3ZhciBkPWIuZGF0YS5kb21FdmVudC5nZXRLZXkoKSxcbmMsZz1hLmdldFNlbGVjdGlvbigpO2lmKDAhPT1nLmdldFJhbmdlcygpLmxlbmd0aCl7aWYoZCBpbiBuKXt2YXIgZTtiPWcuZ2V0UmFuZ2VzKClbMF07dmFyIGg9Yi5zdGFydFBhdGgoKSxmLHcsdixkPTg9PWQscT0hMTtpZihDS0VESVRPUi5lbnYuaWUmJjExPkNLRURJVE9SLmVudi52ZXJzaW9uJiZnLmdldFNlbGVjdGVkRWxlbWVudCgpKWU9Zy5nZXRTZWxlY3RlZEVsZW1lbnQoKTtlbHNlIGlmKGsoZykpe3ZhciB1PW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGIpLHQ9Yi5jb2xsYXBzZWQ/Yi5zdGFydENvbnRhaW5lcjp1Lm5leHQoKSxxPSExLEY7aWYoYi5jaGVja1N0YXJ0T2ZCbG9jaygpKXtGPWIuc3RhcnRQYXRoKCkuYmxvY2t8fGIuc3RhcnRQYXRoKCkuYmxvY2tMaW1pdDt2YXIgeT1GLmdldE5hbWUoKTtGPS0xIT09Q0tFRElUT1IudG9vbHMuYXJyYXkuaW5kZXhPZihbXCJkZFwiLFwiZHRcIixcImxpXCJdLHkpJiZudWxsPT09Ri5nZXRQcmV2aW91cygpfWVsc2UgRj0hMTtpZihGKXtmb3IoO3QmJlxuIXE7KXE9dC4kLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkscT0hIUJbcV0sdD11Lm5leHQoKTt1PW0oYi5zdGFydFBhdGgoKSk7dD1tKGIuZW5kUGF0aCgpKTtxPXF8fHUhPT10fWVsc2UgcT12b2lkIDA7cXx8KGU9bChnKSl9ZXx8cT8oYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLHE/KChjPWIuc3RhcnRDb250YWluZXIuZ2V0QXNjZW5kYW50KEIsITApKT8oYi5zZXRTdGFydChjLDApLGIuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0VMRU1FTlQpLGU9Yik6ZT1udWxsLGUuZGVsZXRlQ29udGVudHMoKSk6KGIubW92ZVRvUG9zaXRpb24oZSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpLGUucmVtb3ZlKCkpLGIuc2VsZWN0KCksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLGM9MSk6Yi5jb2xsYXBzZWQmJigoZj1oLmJsb2NrKSYmKHY9ZltkP1wiZ2V0UHJldmlvdXNcIjpcImdldE5leHRcIl0oeCkpJiZ2LnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmdi5pcyhcInRhYmxlXCIpJiZiW2Q/XCJjaGVja1N0YXJ0T2ZCbG9ja1wiOlxuXCJjaGVja0VuZE9mQmxvY2tcIl0oKT8oYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLGJbZD9cImNoZWNrRW5kT2ZCbG9ja1wiOlwiY2hlY2tTdGFydE9mQmxvY2tcIl0oKSYmZi5yZW1vdmUoKSxiW1wibW92ZVRvRWxlbWVudEVkaXRcIisoZD9cIkVuZFwiOlwiU3RhcnRcIildKHYpLGIuc2VsZWN0KCksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLGM9MSk6aC5ibG9ja0xpbWl0JiZoLmJsb2NrTGltaXQuaXMoXCJ0ZFwiKSYmKHc9aC5ibG9ja0xpbWl0LmdldEFzY2VuZGFudChcInRhYmxlXCIpKSYmYi5jaGVja0JvdW5kYXJ5T2ZFbGVtZW50KHcsZD9DS0VESVRPUi5TVEFSVDpDS0VESVRPUi5FTkQpJiYodj13W2Q/XCJnZXRQcmV2aW91c1wiOlwiZ2V0TmV4dFwiXSh4KSk/KGEuZmlyZShcInNhdmVTbmFwc2hvdFwiKSxiW1wibW92ZVRvRWxlbWVudEVkaXRcIisoZD9cIkVuZFwiOlwiU3RhcnRcIildKHYpLGIuY2hlY2tTdGFydE9mQmxvY2soKSYmYi5jaGVja0VuZE9mQmxvY2soKT92LnJlbW92ZSgpOmIuc2VsZWN0KCksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLFxuYz0xKToodz1oLmNvbnRhaW5zKFtcInRkXCIsXCJ0aFwiLFwiY2FwdGlvblwiXSkpJiZiLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQodyxkP0NLRURJVE9SLlNUQVJUOkNLRURJVE9SLkVORCkmJihjPTEpKX1yZXR1cm4hY319KTthLmJsb2NrbGVzcyYmQ0tFRElUT1IuZW52LmllJiZDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlciYmdGhpcy5hdHRhY2hMaXN0ZW5lcih0aGlzLFwia2V5dXBcIixmdW5jdGlvbihkKXtkLmRhdGEuZ2V0S2V5c3Ryb2tlKClpbiBuJiYhdGhpcy5nZXRGaXJzdChiKSYmKHRoaXMuYXBwZW5kQm9ndXMoKSxkPWEuY3JlYXRlUmFuZ2UoKSxkLm1vdmVUb1Bvc2l0aW9uKHRoaXMsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpLGQuc2VsZWN0KCkpfSk7dGhpcy5hdHRhY2hMaXN0ZW5lcih0aGlzLFwiZGJsY2xpY2tcIixmdW5jdGlvbihiKXtpZihhLnJlYWRPbmx5KXJldHVybiExO2I9e2VsZW1lbnQ6Yi5kYXRhLmdldFRhcmdldCgpfTthLmZpcmUoXCJkb3VibGVjbGlja1wiLGIpfSk7XG5DS0VESVRPUi5lbnYuaWUmJnRoaXMuYXR0YWNoTGlzdGVuZXIodGhpcyxcImNsaWNrXCIsZSk7Q0tFRElUT1IuZW52LmllJiYhQ0tFRElUT1IuZW52LmVkZ2V8fHRoaXMuYXR0YWNoTGlzdGVuZXIodGhpcyxcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGIpe3ZhciBkPWIuZGF0YS5nZXRUYXJnZXQoKTtkLmlzKFwiaW1nXCIsXCJoclwiLFwiaW5wdXRcIixcInRleHRhcmVhXCIsXCJzZWxlY3RcIikmJiFkLmlzUmVhZE9ubHkoKSYmKGEuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0RWxlbWVudChkKSxkLmlzKFwiaW5wdXRcIixcInRleHRhcmVhXCIsXCJzZWxlY3RcIikmJmIuZGF0YS5wcmV2ZW50RGVmYXVsdCgpKX0pO0NLRURJVE9SLmVudi5lZGdlJiZ0aGlzLmF0dGFjaExpc3RlbmVyKHRoaXMsXCJtb3VzZXVwXCIsZnVuY3Rpb24oYil7KGI9Yi5kYXRhLmdldFRhcmdldCgpKSYmYi5pcyhcImltZ1wiKSYmIWIuaXNSZWFkT25seSgpJiZhLmdldFNlbGVjdGlvbigpLnNlbGVjdEVsZW1lbnQoYil9KTtDS0VESVRPUi5lbnYuZ2Vja28mJnRoaXMuYXR0YWNoTGlzdGVuZXIodGhpcyxcblwibW91c2V1cFwiLGZ1bmN0aW9uKGIpe2lmKDI9PWIuZGF0YS4kLmJ1dHRvbiYmKGI9Yi5kYXRhLmdldFRhcmdldCgpLCFiLmdldEFzY2VuZGFudChcInRhYmxlXCIpJiYhYi5nZXRPdXRlckh0bWwoKS5yZXBsYWNlKHosXCJcIikpKXt2YXIgZD1hLmNyZWF0ZVJhbmdlKCk7ZC5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KGIpO2Quc2VsZWN0KCEwKX19KTtDS0VESVRPUi5lbnYud2Via2l0JiYodGhpcy5hdHRhY2hMaXN0ZW5lcih0aGlzLFwiY2xpY2tcIixmdW5jdGlvbihhKXthLmRhdGEuZ2V0VGFyZ2V0KCkuaXMoXCJpbnB1dFwiLFwic2VsZWN0XCIpJiZhLmRhdGEucHJldmVudERlZmF1bHQoKX0pLHRoaXMuYXR0YWNoTGlzdGVuZXIodGhpcyxcIm1vdXNldXBcIixmdW5jdGlvbihhKXthLmRhdGEuZ2V0VGFyZ2V0KCkuaXMoXCJpbnB1dFwiLFwidGV4dGFyZWFcIikmJmEuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfSkpO0NLRURJVE9SLmVudi53ZWJraXQmJnRoaXMuYXR0YWNoTGlzdGVuZXIoYSxcImtleVwiLGZ1bmN0aW9uKGIpe2lmKGEucmVhZE9ubHkpcmV0dXJuITA7XG52YXIgZD1iLmRhdGEuZG9tRXZlbnQuZ2V0S2V5KCk7aWYoZCBpbiBuJiYoYj1hLmdldFNlbGVjdGlvbigpLDAhPT1iLmdldFJhbmdlcygpLmxlbmd0aCkpe3ZhciBkPTg9PWQsYz1iLmdldFJhbmdlcygpWzBdO2I9Yy5zdGFydFBhdGgoKTtpZihjLmNvbGxhcHNlZClhOnt2YXIgZz1iLmJsb2NrO2lmKGcmJmNbZD9cImNoZWNrU3RhcnRPZkJsb2NrXCI6XCJjaGVja0VuZE9mQmxvY2tcIl0oITApJiZjLm1vdmVUb0Nsb3Nlc3RFZGl0YWJsZVBvc2l0aW9uKGcsIWQpJiZjLmNvbGxhcHNlZCl7aWYoYy5zdGFydENvbnRhaW5lci50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpe3ZhciBlPWMuc3RhcnRDb250YWluZXIuZ2V0Q2hpbGQoYy5zdGFydE9mZnNldC0oZD8xOjApKTtpZihlJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5pcyhcImhyXCIpKXthLmZpcmUoXCJzYXZlU25hcHNob3RcIik7ZS5yZW1vdmUoKTtiPSEwO2JyZWFrIGF9fWM9Yy5zdGFydFBhdGgoKS5ibG9jaztpZighY3x8XG5jJiZjLmNvbnRhaW5zKGcpKWI9dm9pZCAwO2Vsc2V7YS5maXJlKFwic2F2ZVNuYXBzaG90XCIpO3ZhciBoOyhoPShkP2M6ZykuZ2V0Qm9ndXMoKSkmJmgucmVtb3ZlKCk7aD1hLmdldFNlbGVjdGlvbigpO2U9aC5jcmVhdGVCb29rbWFya3MoKTsoZD9nOmMpLm1vdmVDaGlsZHJlbihkP2M6ZywhMSk7Yi5sYXN0RWxlbWVudC5tZXJnZVNpYmxpbmdzKCk7dyhnLGMsIWQpO2guc2VsZWN0Qm9va21hcmtzKGUpO2I9ITB9fWVsc2UgYj0hMX1lbHNlIGQ9YyxoPWIuYmxvY2ssYz1kLmVuZFBhdGgoKS5ibG9jayxoJiZjJiYhaC5lcXVhbHMoYyk/KGEuZmlyZShcInNhdmVTbmFwc2hvdFwiKSwoZz1oLmdldEJvZ3VzKCkpJiZnLnJlbW92ZSgpLGQuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0lOTElORSksZC5kZWxldGVDb250ZW50cygpLGMuZ2V0UGFyZW50KCkmJihjLm1vdmVDaGlsZHJlbihoLCExKSxiLmxhc3RFbGVtZW50Lm1lcmdlU2libGluZ3MoKSx3KGgsYywhMCkpLGQ9YS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKVswXSxcbmQuY29sbGFwc2UoMSksZC5vcHRpbWl6ZSgpLFwiXCI9PT1kLnN0YXJ0Q29udGFpbmVyLmdldEh0bWwoKSYmZC5zdGFydENvbnRhaW5lci5hcHBlbmRCb2d1cygpLGQuc2VsZWN0KCksYj0hMCk6Yj0hMTtpZighYilyZXR1cm47YS5nZXRTZWxlY3Rpb24oKS5zY3JvbGxJbnRvVmlldygpO2EuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtyZXR1cm4hMX19LHRoaXMsbnVsbCwxMDApfX0sZ2V0VW5pcXVlSWQ6ZnVuY3Rpb24oKXt2YXIgYTt0cnl7dGhpcy5fLmV4cGFuZG9OdW1iZXI9YT1DS0VESVRPUi5kb20uZG9tT2JqZWN0LnByb3RvdHlwZS5nZXRVbmlxdWVJZC5jYWxsKHRoaXMpfWNhdGNoKGIpe2E9dGhpcy5fJiZ0aGlzLl8uZXhwYW5kb051bWJlcn1yZXR1cm4gYX19LF86e2NsZWFuQ3VzdG9tRGF0YTpmdW5jdGlvbigpe3RoaXMucmVtb3ZlQ2xhc3MoXCJja2VfZWRpdGFibGVcIik7dGhpcy5yZXN0b3JlQXR0cnMoKTtmb3IodmFyIGE9dGhpcy5yZW1vdmVDdXN0b21EYXRhKFwiY2xhc3Nlc1wiKTthJiZcbmEubGVuZ3RoOyl0aGlzLnJlbW92ZUNsYXNzKGEucG9wKCkpO2lmKCF0aGlzLmlzKFwidGV4dGFyZWFcIikpe3ZhciBhPXRoaXMuZ2V0RG9jdW1lbnQoKSxiPWEuZ2V0SGVhZCgpO2lmKGIuZ2V0Q3VzdG9tRGF0YShcInN0eWxlc2hlZXRcIikpe3ZhciBkPWEuZ2V0Q3VzdG9tRGF0YShcInN0eWxlc2hlZXRfcmVmXCIpOy0tZD9hLnNldEN1c3RvbURhdGEoXCJzdHlsZXNoZWV0X3JlZlwiLGQpOihhLnJlbW92ZUN1c3RvbURhdGEoXCJzdHlsZXNoZWV0X3JlZlwiKSxiLnJlbW92ZUN1c3RvbURhdGEoXCJzdHlsZXNoZWV0XCIpLnJlbW92ZSgpKX19fX19KTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmVkaXRhYmxlPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuXy5lZGl0YWJsZTtpZihiJiZhKXJldHVybiAwO2lmKCFhcmd1bWVudHMubGVuZ3RoKXJldHVybiBiO2E/Yj1hIGluc3RhbmNlb2YgQ0tFRElUT1IuZWRpdGFibGU/YTpuZXcgQ0tFRElUT1IuZWRpdGFibGUodGhpcyxhKTooYiYmYi5kZXRhY2goKSxiPVxubnVsbCk7cmV0dXJuIHRoaXMuXy5lZGl0YWJsZT1ifTtDS0VESVRPUi5vbihcImluc3RhbmNlTG9hZGVkXCIsZnVuY3Rpb24oYil7dmFyIGQ9Yi5lZGl0b3I7ZC5vbihcImluc2VydEVsZW1lbnRcIixmdW5jdGlvbihhKXthPWEuZGF0YTthLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKGEuaXMoXCJpbnB1dFwiKXx8YS5pcyhcInRleHRhcmVhXCIpKSYmKFwiZmFsc2VcIiE9YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIikmJmEuZGF0YShcImNrZS1lZGl0YWJsZVwiLGEuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpP1widHJ1ZVwiOlwiMVwiKSxhLnNldEF0dHJpYnV0ZShcImNvbnRlbnRFZGl0YWJsZVwiLCExKSl9KTtkLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsZnVuY3Rpb24oYil7aWYoIWQucmVhZE9ubHkpe3ZhciBjPWQuZ2V0U2VsZWN0aW9uKCk7YyYmIWMuaXNMb2NrZWQmJihjPWQuY2hlY2tEaXJ0eSgpLGQuZmlyZShcImxvY2tTbmFwc2hvdFwiKSxhKGIpLGQuZmlyZShcInVubG9ja1NuYXBzaG90XCIpLFxuIWMmJmQucmVzZXREaXJ0eSgpKX19KX0pO0NLRURJVE9SLm9uKFwiaW5zdGFuY2VDcmVhdGVkXCIsZnVuY3Rpb24oYSl7dmFyIGI9YS5lZGl0b3I7Yi5vbihcIm1vZGVcIixmdW5jdGlvbigpe3ZhciBhPWIuZWRpdGFibGUoKTtpZihhJiZhLmlzSW5saW5lKCkpe3ZhciBkPWIudGl0bGU7YS5jaGFuZ2VBdHRyKFwicm9sZVwiLFwidGV4dGJveFwiKTthLmNoYW5nZUF0dHIoXCJhcmlhLW11bHRpbGluZVwiLFwidHJ1ZVwiKTtkJiZhLmNoYW5nZUF0dHIoXCJhcmlhLWxhYmVsXCIsZCk7ZCYmYS5jaGFuZ2VBdHRyKFwidGl0bGVcIixkKTt2YXIgYz1iLmZpcmUoXCJhcmlhRWRpdG9ySGVscExhYmVsXCIse30pLmxhYmVsO2lmKGMmJihkPXRoaXMudWkuc3BhY2UodGhpcy5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORT9cInRvcFwiOlwiY29udGVudHNcIikpKXt2YXIgZz1DS0VESVRPUi50b29scy5nZXROZXh0SWQoKSxjPUNLRURJVE9SLmRvbS5lbGVtZW50LmNyZWF0ZUZyb21IdG1sKCdcXHgzY3NwYW4gaWRcXHgzZFwiJytcbmcrJ1wiIGNsYXNzXFx4M2RcImNrZV92b2ljZV9sYWJlbFwiXFx4M2UnK2MrXCJcXHgzYy9zcGFuXFx4M2VcIik7ZC5hcHBlbmQoYyk7YS5jaGFuZ2VBdHRyKFwiYXJpYS1kZXNjcmliZWRieVwiLGcpfX19KX0pO0NLRURJVE9SLmFkZENzcyhcIi5ja2VfZWRpdGFibGV7Y3Vyc29yOnRleHR9LmNrZV9lZGl0YWJsZSBpbWcsLmNrZV9lZGl0YWJsZSBpbnB1dCwuY2tlX2VkaXRhYmxlIHRleHRhcmVhe2N1cnNvcjpkZWZhdWx0fVwiKTt4PUNLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXMoITApO3I9Q0tFRElUT1IuZG9tLndhbGtlci5ib29rbWFyayghMSwhMCk7cD1DS0VESVRPUi5kb20ud2Fsa2VyLmVtcHR5KCk7dT1DS0VESVRPUi5kb20ud2Fsa2VyLmJvZ3VzKCk7ej0vKF58PGJvZHlcXGJbXj5dKj4pXFxzKjwocHxkaXZ8YWRkcmVzc3xoXFxkfGNlbnRlcnxwcmUpW14+XSo+XFxzKig/OjxicltePl0qPnwmbmJzcDt8XFx1MDBBMHwmIzE2MDspP1xccyooOj88XFwvXFwyPik/XFxzKig/PSR8PFxcL2JvZHk+KS9naTtxPVxuZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe3JldHVybiBiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVH1mdW5jdGlvbiBjKGIsZCl7dmFyIGcsZSxoLGYsaz1bXSxsPWQucmFuZ2Uuc3RhcnRDb250YWluZXI7Zz1kLnJhbmdlLnN0YXJ0UGF0aCgpO2Zvcih2YXIgbD1tW2wuZ2V0TmFtZSgpXSxuPTAsTD1iLmdldENoaWxkcmVuKCksdz1MLmNvdW50KCksdj0tMSxxPS0xLHQ9MCx1PWcuY29udGFpbnMobS4kbGlzdCk7bjx3OysrbilnPUwuZ2V0SXRlbShuKSxhKGcpPyhoPWcuZ2V0TmFtZSgpLHUmJmggaW4gQ0tFRElUT1IuZHRkLiRsaXN0P2s9ay5jb25jYXQoYyhnLGQpKTooZj0hIWxbaF0sXCJiclwiIT1ofHwhZy5kYXRhKFwiY2tlLWVvbFwiKXx8biYmbiE9dy0xfHwodD0oZT1uP2tbbi0xXS5ub2RlOkwuZ2V0SXRlbShuKzEpKSYmKCFhKGUpfHwhZS5pcyhcImJyXCIpKSxlPWUmJmEoZSkmJm0uJGJsb2NrW2UuZ2V0TmFtZSgpXSksLTEhPXZ8fGZ8fCh2PW4pLGZ8fChxPW4pLGsucHVzaCh7aXNFbGVtZW50OjEsXG5pc0xpbmVCcmVhazp0LGlzQmxvY2s6Zy5pc0Jsb2NrQm91bmRhcnkoKSxoYXNCbG9ja1NpYmxpbmc6ZSxub2RlOmcsbmFtZTpoLGFsbG93ZWQ6Zn0pLGU9dD0wKSk6ay5wdXNoKHtpc0VsZW1lbnQ6MCxub2RlOmcsYWxsb3dlZDoxfSk7LTE8diYmKGtbdl0uZmlyc3ROb3RBbGxvd2VkPTEpOy0xPHEmJihrW3FdLmxhc3ROb3RBbGxvd2VkPTEpO3JldHVybiBrfWZ1bmN0aW9uIGUoYixkKXt2YXIgYz1bXSxnPWIuZ2V0Q2hpbGRyZW4oKSxoPWcuY291bnQoKSxmLGs9MCxsPW1bZF0sbj0hYi5pcyhtLiRpbmxpbmUpfHxiLmlzKFwiYnJcIik7Zm9yKG4mJmMucHVzaChcIiBcIik7azxoO2srKylmPWcuZ2V0SXRlbShrKSxhKGYpJiYhZi5pcyhsKT9jPWMuY29uY2F0KGUoZixkKSk6Yy5wdXNoKGYpO24mJmMucHVzaChcIiBcIik7cmV0dXJuIGN9ZnVuY3Rpb24gZihiKXtyZXR1cm4gYShiLnN0YXJ0Q29udGFpbmVyKSYmYi5zdGFydENvbnRhaW5lci5nZXRDaGlsZChiLnN0YXJ0T2Zmc2V0LTEpfWZ1bmN0aW9uIGsoYil7cmV0dXJuIGImJlxuYShiKSYmKGIuaXMobS4kcmVtb3ZlRW1wdHkpfHxiLmlzKFwiYVwiKSYmIWIuaXNCbG9ja0JvdW5kYXJ5KCkpfWZ1bmN0aW9uIGwoYixkLGMsZyl7dmFyIGU9Yi5jbG9uZSgpLGgsZjtlLnNldEVuZEF0KGQsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7KGg9KG5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGUpKS5uZXh0KCkpJiZhKGgpJiZ3W2guZ2V0TmFtZSgpXSYmKGY9aC5nZXRQcmV2aW91cygpKSYmYShmKSYmIWYuZ2V0UGFyZW50KCkuZXF1YWxzKGIuc3RhcnRDb250YWluZXIpJiZjLmNvbnRhaW5zKGYpJiZnLmNvbnRhaW5zKGgpJiZoLmlzSWRlbnRpY2FsKGYpJiYoaC5tb3ZlQ2hpbGRyZW4oZiksaC5yZW1vdmUoKSxsKGIsZCxjLGcpKX1mdW5jdGlvbiBuKGIsZCl7ZnVuY3Rpb24gYyhiLGQpe2lmKGQuaXNCbG9jayYmZC5pc0VsZW1lbnQmJiFkLm5vZGUuaXMoXCJiclwiKSYmYShiKSYmYi5pcyhcImJyXCIpKXJldHVybiBiLnJlbW92ZSgpLDF9dmFyIGc9ZC5lbmRDb250YWluZXIuZ2V0Q2hpbGQoZC5lbmRPZmZzZXQpLFxuZT1kLmVuZENvbnRhaW5lci5nZXRDaGlsZChkLmVuZE9mZnNldC0xKTtnJiZjKGcsYltiLmxlbmd0aC0xXSk7ZSYmYyhlLGJbMF0pJiYoZC5zZXRFbmQoZC5lbmRDb250YWluZXIsZC5lbmRPZmZzZXQtMSksZC5jb2xsYXBzZSgpKX12YXIgbT1DS0VESVRPUi5kdGQsdz17cDoxLGRpdjoxLGgxOjEsaDI6MSxoMzoxLGg0OjEsaDU6MSxoNjoxLHVsOjEsb2w6MSxsaToxLHByZToxLGRsOjEsYmxvY2txdW90ZToxfSx2PXtwOjEsZGl2OjEsaDE6MSxoMjoxLGgzOjEsaDQ6MSxoNToxLGg2OjF9LEw9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHt9LG0uJGlubGluZSk7ZGVsZXRlIEwuYnI7cmV0dXJuIGZ1bmN0aW9uKHcscSx0LHUpe3ZhciB5PXcuZWRpdG9yLHA9ITEscjtcInVuZmlsdGVyZWRfaHRtbFwiPT1xJiYocT1cImh0bWxcIixwPSEwKTtpZighdS5jaGVja1JlYWRPbmx5KCkpe3ZhciB4PShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKHUuc3RhcnRDb250YWluZXIsdS5yb290KSkuYmxvY2tMaW1pdHx8XG51LnJvb3Q7cT17dHlwZTpxLGRvbnRGaWx0ZXI6cCxlZGl0YWJsZTp3LGVkaXRvcjp5LHJhbmdlOnUsYmxvY2tMaW1pdDp4LG1lcmdlQ2FuZGlkYXRlczpbXSx6b21iaWVzOltdfTt2YXIgcD1xLnJhbmdlLHg9cS5tZXJnZUNhbmRpZGF0ZXMsRT1cImh0bWxcIj09PXEudHlwZSxBLEIsVCxaLGFhO1widGV4dFwiPT1xLnR5cGUmJnAuc2hyaW5rKENLRURJVE9SLlNIUklOS19FTEVNRU5ULCEwLCExKSYmKEI9Q0tFRElUT1IuZG9tLmVsZW1lbnQuY3JlYXRlRnJvbUh0bWwoXCJcXHgzY3NwYW5cXHgzZVxceDI2bmJzcDtcXHgzYy9zcGFuXFx4M2VcIixwLmRvY3VtZW50KSxwLmluc2VydE5vZGUoQikscC5zZXRTdGFydEFmdGVyKEIpKTtUPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgocC5zdGFydENvbnRhaW5lcik7cS5lbmRQYXRoPVo9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChwLmVuZENvbnRhaW5lcik7aWYoIXAuY29sbGFwc2VkKXtBPVouYmxvY2t8fFouYmxvY2tMaW1pdDt2YXIgY2E9cC5nZXRDb21tb25BbmNlc3RvcigpO1xuQSYmIUEuZXF1YWxzKGNhKSYmIUEuY29udGFpbnMoY2EpJiZwLmNoZWNrRW5kT2ZCbG9jaygpJiZxLnpvbWJpZXMucHVzaChBKTtwLmRlbGV0ZUNvbnRlbnRzKCl9Zm9yKDsoYWE9ZihwKSkmJmEoYWEpJiZhYS5pc0Jsb2NrQm91bmRhcnkoKSYmVC5jb250YWlucyhhYSk7KXAubW92ZVRvUG9zaXRpb24oYWEsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7bChwLHEuYmxvY2tMaW1pdCxULFopO0ImJihwLnNldEVuZEJlZm9yZShCKSxwLmNvbGxhcHNlKCksQi5yZW1vdmUoKSk7Qj1wLnN0YXJ0UGF0aCgpO2lmKEE9Qi5jb250YWlucyhrLCExLDEpKXI9cC5zcGxpdEVsZW1lbnQoQSkscS5pbmxpbmVTdHlsZXNSb290PUEscS5pbmxpbmVTdHlsZXNQZWFrPUIubGFzdEVsZW1lbnQ7Qj1wLmNyZWF0ZUJvb2ttYXJrKCk7RSYmKGcoQSksZyhyKSk7KEE9Qi5zdGFydE5vZGUuZ2V0UHJldmlvdXMoYikpJiZhKEEpJiZrKEEpJiZ4LnB1c2goQSk7KEE9Qi5zdGFydE5vZGUuZ2V0TmV4dChiKSkmJlxuYShBKSYmayhBKSYmeC5wdXNoKEEpO2ZvcihBPUIuc3RhcnROb2RlOyhBPUEuZ2V0UGFyZW50KCkpJiZrKEEpOyl4LnB1c2goQSk7cC5tb3ZlVG9Cb29rbWFyayhCKTtyPXcuZ2V0SHRtbCgpO3I9XCJcIj09PXJ8fHIubWF0Y2goeik7eS5lbnRlck1vZGU9PT1DS0VESVRPUi5FTlRFUl9ESVYmJnImJigoeT13LmdldEZpcnN0KCkpJiZ5LnJlbW92ZSgpLHUuc2V0U3RhcnRBdCh3LENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSx1LmNvbGxhcHNlKCEwKSk7aWYodz10KXt3PXEucmFuZ2U7aWYoXCJ0ZXh0XCI9PXEudHlwZSYmcS5pbmxpbmVTdHlsZXNSb290KXt1PXEuaW5saW5lU3R5bGVzUGVhazt5PXUuZ2V0RG9jdW1lbnQoKS5jcmVhdGVUZXh0KFwie2NrZS1wZWFrfVwiKTtmb3Iocj1xLmlubGluZVN0eWxlc1Jvb3QuZ2V0UGFyZW50KCk7IXUuZXF1YWxzKHIpOyl5PXkuYXBwZW5kVG8odS5jbG9uZSgpKSx1PXUuZ2V0UGFyZW50KCk7dD15LmdldE91dGVySHRtbCgpLnNwbGl0KFwie2NrZS1wZWFrfVwiKS5qb2luKHQpfXU9XG5xLmJsb2NrTGltaXQuZ2V0TmFtZSgpO2lmKC9eXFxzK3xcXHMrJC8udGVzdCh0KSYmXCJzcGFuXCJpbiBDS0VESVRPUi5kdGRbdV0pe3ZhciBWPSdcXHgzY3NwYW4gZGF0YS1ja2UtbWFya2VyXFx4M2RcIjFcIlxceDNlXFx4MjZuYnNwO1xceDNjL3NwYW5cXHgzZSc7dD1WK3QrVn10PXEuZWRpdG9yLmRhdGFQcm9jZXNzb3IudG9IdG1sKHQse2NvbnRleHQ6bnVsbCxmaXhGb3JCb2R5OiExLHByb3RlY3RlZFdoaXRlc3BhY2VzOiEhVixkb250RmlsdGVyOnEuZG9udEZpbHRlcixmaWx0ZXI6cS5lZGl0b3IuYWN0aXZlRmlsdGVyLGVudGVyTW9kZTpxLmVkaXRvci5hY3RpdmVFbnRlck1vZGV9KTt1PXcuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJvZHlcIik7dS5zZXRIdG1sKHQpO1YmJih1LmdldEZpcnN0KCkucmVtb3ZlKCksdS5nZXRMYXN0KCkucmVtb3ZlKCkpO2lmKChWPXcuc3RhcnRQYXRoKCkuYmxvY2spJiYoMSE9Vi5nZXRDaGlsZENvdW50KCl8fCFWLmdldEJvZ3VzKCkpKWE6e3ZhciBRO2lmKDE9PVxudS5nZXRDaGlsZENvdW50KCkmJmEoUT11LmdldEZpcnN0KCkpJiZRLmlzKHYpJiYhUS5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpe1Y9US5nZXRFbGVtZW50c0J5VGFnKFwiKlwiKTt3PTA7Zm9yKHI9Vi5jb3VudCgpO3c8cjt3KyspaWYoeT1WLmdldEl0ZW0odyksIXkuaXMoTCkpYnJlYWsgYTtRLm1vdmVDaGlsZHJlbihRLmdldFBhcmVudCgxKSk7US5yZW1vdmUoKX19cS5kYXRhV3JhcHBlcj11O3c9dH1pZih3KXtRPXEucmFuZ2U7dz1RLmRvY3VtZW50O3U9cS5ibG9ja0xpbWl0O3I9MDt2YXIgSSxWPVtdLGZhLFI7dD1CPTA7dmFyIGJhLHk9US5zdGFydENvbnRhaW5lcjthYT1xLmVuZFBhdGguZWxlbWVudHNbMF07dmFyIFcscD1hYS5nZXRQb3NpdGlvbih5KSx4PSEhYWEuZ2V0Q29tbW9uQW5jZXN0b3IoeSkmJnAhPUNLRURJVE9SLlBPU0lUSU9OX0lERU5USUNBTCYmIShwJkNLRURJVE9SLlBPU0lUSU9OX0NPTlRBSU5TK0NLRURJVE9SLlBPU0lUSU9OX0lTX0NPTlRBSU5FRCksXG55PWMocS5kYXRhV3JhcHBlcixxKTtmb3IocS5lZGl0b3IuZW50ZXJNb2RlIT09Q0tFRElUT1IuRU5URVJfQlImJm4oeSxRKTtyPHkubGVuZ3RoO3IrKyl7cD15W3JdO2lmKEU9cC5pc0xpbmVCcmVhaylFPVEsQT11LFo9VD12b2lkIDAscC5oYXNCbG9ja1NpYmxpbmc/RT0xOihUPUUuc3RhcnRDb250YWluZXIuZ2V0QXNjZW5kYW50KG0uJGJsb2NrLDEpKSYmVC5pcyh7ZGl2OjEscDoxfSk/KFo9VC5nZXRQb3NpdGlvbihBKSxaPT1DS0VESVRPUi5QT1NJVElPTl9JREVOVElDQUx8fFo9PUNLRURJVE9SLlBPU0lUSU9OX0NPTlRBSU5TP0U9MDooQT1FLnNwbGl0RWxlbWVudChUKSxFLm1vdmVUb1Bvc2l0aW9uKEEsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpLEU9MSkpOkU9MDtpZihFKXQ9MDxyO2Vsc2V7RT1RLnN0YXJ0UGF0aCgpOyFwLmlzQmxvY2smJmQocS5lZGl0b3IsRS5ibG9jayxFLmJsb2NrTGltaXQpJiYoUj1oKHEuZWRpdG9yKSkmJihSPXcuY3JlYXRlRWxlbWVudChSKSxcblIuYXBwZW5kQm9ndXMoKSxRLmluc2VydE5vZGUoUiksQ0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXImJihJPVIuZ2V0Qm9ndXMoKSkmJkkucmVtb3ZlKCksUS5tb3ZlVG9Qb3NpdGlvbihSLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpKTtpZigoRT1RLnN0YXJ0UGF0aCgpLmJsb2NrKSYmIUUuZXF1YWxzKGZhKSl7aWYoST1FLmdldEJvZ3VzKCkpSS5yZW1vdmUoKSxWLnB1c2goRSk7ZmE9RX1wLmZpcnN0Tm90QWxsb3dlZCYmKEI9MSk7aWYoQiYmcC5pc0VsZW1lbnQpe0U9US5zdGFydENvbnRhaW5lcjtmb3IoQT1udWxsO0UmJiFtW0UuZ2V0TmFtZSgpXVtwLm5hbWVdOyl7aWYoRS5lcXVhbHModSkpe0U9bnVsbDticmVha31BPUU7RT1FLmdldFBhcmVudCgpfWlmKEUpQSYmKGJhPVEuc3BsaXRFbGVtZW50KEEpLHEuem9tYmllcy5wdXNoKGJhKSxxLnpvbWJpZXMucHVzaChBKSk7ZWxzZXtBPXUuZ2V0TmFtZSgpO1c9IXI7RT1yPT15Lmxlbmd0aC0xO0E9ZShwLm5vZGUsQSk7VD1cbltdO1o9QS5sZW5ndGg7Zm9yKHZhciBjYT0wLGRhPXZvaWQgMCxsYT0wLG1hPS0xO2NhPFo7Y2ErKylkYT1BW2NhXSxcIiBcIj09ZGE/KGxhfHxXJiYhY2F8fChULnB1c2gobmV3IENLRURJVE9SLmRvbS50ZXh0KFwiIFwiKSksbWE9VC5sZW5ndGgpLGxhPTEpOihULnB1c2goZGEpLGxhPTApO0UmJm1hPT1ULmxlbmd0aCYmVC5wb3AoKTtXPVR9fWlmKFcpe2Zvcig7RT1XLnBvcCgpOylRLmluc2VydE5vZGUoRSk7Vz0wfWVsc2UgUS5pbnNlcnROb2RlKHAubm9kZSk7cC5sYXN0Tm90QWxsb3dlZCYmcjx5Lmxlbmd0aC0xJiYoKGJhPXg/YWE6YmEpJiZRLnNldEVuZEF0KGJhLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSxCPTApO1EuY29sbGFwc2UoKX19MSE9eS5sZW5ndGg/ST0hMTooST15WzBdLEk9SS5pc0VsZW1lbnQmJlwiZmFsc2VcIj09SS5ub2RlLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSk7SSYmKHQ9ITAsRT15WzBdLm5vZGUsUS5zZXRTdGFydEF0KEUsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKSxcblEuc2V0RW5kQXQoRSxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpKTtxLmRvbnRNb3ZlQ2FyZXQ9dDtxLmJvZ3VzTmVlZGVkQmxvY2tzPVZ9ST1xLnJhbmdlO3ZhciBoYTtXPXEuYm9ndXNOZWVkZWRCbG9ja3M7Zm9yKGZhPUkuY3JlYXRlQm9va21hcmsoKTtSPXEuem9tYmllcy5wb3AoKTspUi5nZXRQYXJlbnQoKSYmKGJhPUkuY2xvbmUoKSxiYS5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KFIpLGJhLnJlbW92ZUVtcHR5QmxvY2tzQXRFbmQoKSk7aWYoVylmb3IoO1I9Vy5wb3AoKTspQ0tFRElUT1IuZW52Lm5lZWRzQnJGaWxsZXI/Ui5hcHBlbmRCb2d1cygpOlIuYXBwZW5kKEkuZG9jdW1lbnQuY3JlYXRlVGV4dChcIsKgXCIpKTtmb3IoO1I9cS5tZXJnZUNhbmRpZGF0ZXMucG9wKCk7KVIubWVyZ2VTaWJsaW5ncygpO0NLRURJVE9SLmVudi53ZWJraXQmJkkuc3RhcnRQYXRoKCkmJihSPUkuc3RhcnRQYXRoKCksUi5ibG9jaz9SLmJsb2NrLiQubm9ybWFsaXplKCk6Ui5ibG9ja0xpbWl0JiZcblIuYmxvY2tMaW1pdC4kLm5vcm1hbGl6ZSgpKTtJLm1vdmVUb0Jvb2ttYXJrKGZhKTtpZighcS5kb250TW92ZUNhcmV0KXtmb3IoUj1mKEkpO1ImJmEoUikmJiFSLmlzKG0uJGVtcHR5KTspe2lmKFIuaXNCbG9ja0JvdW5kYXJ5KCkpSS5tb3ZlVG9Qb3NpdGlvbihSLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpO2Vsc2V7aWYoayhSKSYmUi5nZXRIdG1sKCkubWF0Y2goLyhcXHN8Jm5ic3A7KSQvZykpe2hhPW51bGw7YnJlYWt9aGE9SS5jbG9uZSgpO2hhLm1vdmVUb1Bvc2l0aW9uKFIsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCl9Uj1SLmdldExhc3QoYil9aGEmJkkubW92ZVRvUmFuZ2UoaGEpfX19fSgpO0E9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIpe2I9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYik7Yi5ndWFyZD1mdW5jdGlvbihhLGIpe2lmKGIpcmV0dXJuITE7aWYoYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpcmV0dXJuIGEuaXMoQ0tFRElUT1IuZHRkLiR0YWJsZUNvbnRlbnQpfTtcbmIuZXZhbHVhdG9yPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVH07cmV0dXJuIGJ9ZnVuY3Rpb24gYihhLGQsYyl7ZD1hLmdldERvY3VtZW50KCkuY3JlYXRlRWxlbWVudChkKTthLmFwcGVuZChkLGMpO3JldHVybiBkfWZ1bmN0aW9uIGQoYSl7dmFyIGI9YS5jb3VudCgpLGM7Zm9yKGI7MDxiLS07KWM9YS5nZXRJdGVtKGIpLENLRURJVE9SLnRvb2xzLnRyaW0oYy5nZXRIdG1sKCkpfHwoYy5hcHBlbmRCb2d1cygpLENLRURJVE9SLmVudi5pZSYmOT5DS0VESVRPUi5lbnYudmVyc2lvbiYmYy5nZXRDaGlsZENvdW50KCkmJmMuZ2V0Rmlyc3QoKS5yZW1vdmUoKSl9cmV0dXJuIGZ1bmN0aW9uKGMpe3ZhciBnPWMuc3RhcnRDb250YWluZXIsZT1nLmdldEFzY2VuZGFudChcInRhYmxlXCIsMSksaD0hMTtkKGUuZ2V0RWxlbWVudHNCeVRhZyhcInRkXCIpKTtkKGUuZ2V0RWxlbWVudHNCeVRhZyhcInRoXCIpKTtlPWMuY2xvbmUoKTtlLnNldFN0YXJ0KGcsMCk7ZT1cbmEoZSkubGFzdEJhY2t3YXJkKCk7ZXx8KGU9Yy5jbG9uZSgpLGUuc2V0RW5kQXQoZyxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxlPWEoZSkubGFzdEZvcndhcmQoKSxoPSEwKTtlfHwoZT1nKTtlLmlzKFwidGFibGVcIik/KGMuc2V0U3RhcnRBdChlLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksYy5jb2xsYXBzZSghMCksZS5yZW1vdmUoKSk6KGUuaXMoe3Rib2R5OjEsdGhlYWQ6MSx0Zm9vdDoxfSkmJihlPWIoZSxcInRyXCIsaCkpLGUuaXMoXCJ0clwiKSYmKGU9YihlLGUuZ2V0UGFyZW50KCkuaXMoXCJ0aGVhZFwiKT9cInRoXCI6XCJ0ZFwiLGgpKSwoZz1lLmdldEJvZ3VzKCkpJiZnLnJlbW92ZSgpLGMubW92ZVRvUG9zaXRpb24oZSxoP0NLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUOkNLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpKX19KCk7eT1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7Yj1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihiKTtiLmd1YXJkPWZ1bmN0aW9uKGEsXG5iKXtpZihiKXJldHVybiExO2lmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXJldHVybiBhLmlzKENLRURJVE9SLmR0ZC4kbGlzdCl8fGEuaXMoQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSl9O2IuZXZhbHVhdG9yPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5pcyhDS0VESVRPUi5kdGQuJGxpc3RJdGVtKX07cmV0dXJuIGJ9cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBkPWIuc3RhcnRDb250YWluZXIsYz0hMSxnO2c9Yi5jbG9uZSgpO2cuc2V0U3RhcnQoZCwwKTtnPWEoZykubGFzdEJhY2t3YXJkKCk7Z3x8KGc9Yi5jbG9uZSgpLGcuc2V0RW5kQXQoZCxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxnPWEoZykubGFzdEZvcndhcmQoKSxjPSEwKTtnfHwoZz1kKTtnLmlzKENLRURJVE9SLmR0ZC4kbGlzdCk/KGIuc2V0U3RhcnRBdChnLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksYi5jb2xsYXBzZSghMCksZy5yZW1vdmUoKSk6XG4oKGQ9Zy5nZXRCb2d1cygpKSYmZC5yZW1vdmUoKSxiLm1vdmVUb1Bvc2l0aW9uKGcsYz9DS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVDpDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxiLnNlbGVjdCgpKX19KCk7dD17ZW9sOntkZXRlY3Q6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLnJhbmdlLGM9ZC5jbG9uZSgpLGc9ZC5jbG9uZSgpLGU9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChkLnN0YXJ0Q29udGFpbmVyLGIpLGg9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChkLmVuZENvbnRhaW5lcixiKTtjLmNvbGxhcHNlKDEpO2cuY29sbGFwc2UoKTtlLmJsb2NrJiZjLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoZS5ibG9jayxDS0VESVRPUi5FTkQpJiYoZC5zZXRTdGFydEFmdGVyKGUuYmxvY2spLGEucHJlcGVuZEVvbEJyPTEpO2guYmxvY2smJmcuY2hlY2tCb3VuZGFyeU9mRWxlbWVudChoLmJsb2NrLENLRURJVE9SLlNUQVJUKSYmKGQuc2V0RW5kQmVmb3JlKGguYmxvY2spLFxuYS5hcHBlbmRFb2xCcj0xKX0sZml4OmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5nZXREb2N1bWVudCgpLGM7YS5hcHBlbmRFb2xCciYmKGM9dGhpcy5jcmVhdGVFb2xCcihkKSxhLmZyYWdtZW50LmFwcGVuZChjKSk7IWEucHJlcGVuZEVvbEJyfHxjJiYhYy5nZXRQcmV2aW91cygpfHxhLmZyYWdtZW50LmFwcGVuZCh0aGlzLmNyZWF0ZUVvbEJyKGQpLDEpfSxjcmVhdGVFb2xCcjpmdW5jdGlvbihhKXtyZXR1cm4gYS5jcmVhdGVFbGVtZW50KFwiYnJcIix7YXR0cmlidXRlczp7XCJkYXRhLWNrZS1lb2xcIjoxfX0pfX0sYm9ndXM6e2V4Y2x1ZGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS5yYW5nZS5nZXRCb3VuZGFyeU5vZGVzKCksZD1iLnN0YXJ0Tm9kZSxiPWIuZW5kTm9kZTshYnx8IXUoYil8fGQmJmQuZXF1YWxzKGIpfHxhLnJhbmdlLnNldEVuZEJlZm9yZShiKX19LHRyZWU6e3JlYnVpbGQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLnJhbmdlLGM9ZC5nZXRDb21tb25BbmNlc3RvcigpLGc9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChjLFxuYiksZT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGQuc3RhcnRDb250YWluZXIsYiksZD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGQuZW5kQ29udGFpbmVyLGIpLGg7Yy50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJihjPWMuZ2V0UGFyZW50KCkpO2lmKGcuYmxvY2tMaW1pdC5pcyh7dHI6MSx0YWJsZToxfSkpe3ZhciBmPWcuY29udGFpbnMoXCJ0YWJsZVwiKS5nZXRQYXJlbnQoKTtoPWZ1bmN0aW9uKGEpe3JldHVybiFhLmVxdWFscyhmKX19ZWxzZSBpZihnLmJsb2NrJiZnLmJsb2NrLmlzKENLRURJVE9SLmR0ZC4kbGlzdEl0ZW0pJiYoZT1lLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdCksZD1kLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdCksIWUuZXF1YWxzKGQpKSl7dmFyIGs9Zy5jb250YWlucyhDS0VESVRPUi5kdGQuJGxpc3QpLmdldFBhcmVudCgpO2g9ZnVuY3Rpb24oYSl7cmV0dXJuIWEuZXF1YWxzKGspfX1ofHwoaD1mdW5jdGlvbihhKXtyZXR1cm4hYS5lcXVhbHMoZy5ibG9jaykmJlxuIWEuZXF1YWxzKGcuYmxvY2tMaW1pdCl9KTt0aGlzLnJlYnVpbGRGcmFnbWVudChhLGIsYyxoKX0scmVidWlsZEZyYWdtZW50OmZ1bmN0aW9uKGEsYixkLGMpe2Zvcih2YXIgZztkJiYhZC5lcXVhbHMoYikmJmMoZCk7KWc9ZC5jbG9uZSgwLDEpLGEuZnJhZ21lbnQuYXBwZW5kVG8oZyksYS5mcmFnbWVudD1nLGQ9ZC5nZXRQYXJlbnQoKX19LGNlbGw6e3NocmluazpmdW5jdGlvbihhKXthPWEucmFuZ2U7dmFyIGI9YS5zdGFydENvbnRhaW5lcixkPWEuZW5kQ29udGFpbmVyLGM9YS5zdGFydE9mZnNldCxnPWEuZW5kT2Zmc2V0O2IudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZiLmVxdWFscyhkKSYmYi5pcyhcInRyXCIpJiYrK2M9PWcmJmEuc2hyaW5rKENLRURJVE9SLlNIUklOS19URVhUKX19fTt2PWZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGQpe3ZhciBjPWIuZ2V0UGFyZW50KCk7aWYoYy5pcyhDS0VESVRPUi5kdGQuJGlubGluZSkpYltkP1wiaW5zZXJ0QmVmb3JlXCI6XCJpbnNlcnRBZnRlclwiXShjKX1cbmZ1bmN0aW9uIGIoZCxjLGcpe2EoYyk7YShnLDEpO2Zvcih2YXIgZTtlPWcuZ2V0TmV4dCgpOyllLmluc2VydEFmdGVyKGMpLGM9ZTtwKGQpJiZkLnJlbW92ZSgpfWZ1bmN0aW9uIGMoYSxiKXt2YXIgZD1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKGEpO2Quc2V0U3RhcnRBZnRlcihiLnN0YXJ0Tm9kZSk7ZC5zZXRFbmRCZWZvcmUoYi5lbmROb2RlKTtyZXR1cm4gZH1yZXR1cm57bGlzdDp7ZGV0ZWN0TWVyZ2U6ZnVuY3Rpb24oYSxiKXt2YXIgZD1jKGIsYS5ib29rbWFyayksZz1kLnN0YXJ0UGF0aCgpLGU9ZC5lbmRQYXRoKCksaD1nLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdCksZj1lLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdCk7YS5tZXJnZUxpc3Q9aCYmZiYmaC5nZXRQYXJlbnQoKS5lcXVhbHMoZi5nZXRQYXJlbnQoKSkmJiFoLmVxdWFscyhmKTthLm1lcmdlTGlzdEl0ZW1zPWcuYmxvY2smJmUuYmxvY2smJmcuYmxvY2suaXMoQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSkmJlxuZS5ibG9jay5pcyhDS0VESVRPUi5kdGQuJGxpc3RJdGVtKTtpZihhLm1lcmdlTGlzdHx8YS5tZXJnZUxpc3RJdGVtcylkPWQuY2xvbmUoKSxkLnNldFN0YXJ0QmVmb3JlKGEuYm9va21hcmsuc3RhcnROb2RlKSxkLnNldEVuZEFmdGVyKGEuYm9va21hcmsuZW5kTm9kZSksYS5tZXJnZUxpc3RCb29rbWFyaz1kLmNyZWF0ZUJvb2ttYXJrKCl9LG1lcmdlOmZ1bmN0aW9uKGEsZCl7aWYoYS5tZXJnZUxpc3RCb29rbWFyayl7dmFyIGM9YS5tZXJnZUxpc3RCb29rbWFyay5zdGFydE5vZGUsZz1hLm1lcmdlTGlzdEJvb2ttYXJrLmVuZE5vZGUsZT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGMsZCksaD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGcsZCk7aWYoYS5tZXJnZUxpc3Qpe3ZhciBmPWUuY29udGFpbnMoQ0tFRElUT1IuZHRkLiRsaXN0KSxrPWguY29udGFpbnMoQ0tFRElUT1IuZHRkLiRsaXN0KTtmLmVxdWFscyhrKXx8KGsubW92ZUNoaWxkcmVuKGYpLGsucmVtb3ZlKCkpfWEubWVyZ2VMaXN0SXRlbXMmJlxuKGU9ZS5jb250YWlucyhDS0VESVRPUi5kdGQuJGxpc3RJdGVtKSxoPWguY29udGFpbnMoQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSksZS5lcXVhbHMoaCl8fGIoaCxjLGcpKTtjLnJlbW92ZSgpO2cucmVtb3ZlKCl9fX0sYmxvY2s6e2RldGVjdE1lcmdlOmZ1bmN0aW9uKGEsYil7aWYoIWEudGFibGVDb250ZW50c1JhbmdlcyYmIWEubWVyZ2VMaXN0Qm9va21hcmspe3ZhciBkPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UoYik7ZC5zZXRTdGFydEJlZm9yZShhLmJvb2ttYXJrLnN0YXJ0Tm9kZSk7ZC5zZXRFbmRBZnRlcihhLmJvb2ttYXJrLmVuZE5vZGUpO2EubWVyZ2VCbG9ja0Jvb2ttYXJrPWQuY3JlYXRlQm9va21hcmsoKX19LG1lcmdlOmZ1bmN0aW9uKGEsZCl7aWYoYS5tZXJnZUJsb2NrQm9va21hcmsmJiFhLnB1cmdlVGFibGVCb29rbWFyayl7dmFyIGM9YS5tZXJnZUJsb2NrQm9va21hcmsuc3RhcnROb2RlLGc9YS5tZXJnZUJsb2NrQm9va21hcmsuZW5kTm9kZSxlPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgoYyxcbmQpLGg9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChnLGQpLGU9ZS5ibG9jayxoPWguYmxvY2s7ZSYmaCYmIWUuZXF1YWxzKGgpJiZiKGgsYyxnKTtjLnJlbW92ZSgpO2cucmVtb3ZlKCl9fX0sdGFibGU6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGMpe3ZhciBnPVtdLGUsaD1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihjKSxmPWMuc3RhcnRQYXRoKCkuY29udGFpbnMoZCksaz1jLmVuZFBhdGgoKS5jb250YWlucyhkKSxsPXt9O2guZ3VhcmQ9ZnVuY3Rpb24oYSxoKXtpZihhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCl7dmFyIG49XCJ2aXNpdGVkX1wiKyhoP1wib3V0XCI6XCJpblwiKTtpZihhLmdldEN1c3RvbURhdGEobikpcmV0dXJuO0NLRURJVE9SLmRvbS5lbGVtZW50LnNldE1hcmtlcihsLGEsbiwxKX1pZihoJiZmJiZhLmVxdWFscyhmKSllPWMuY2xvbmUoKSxlLnNldEVuZEF0KGYsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCksZy5wdXNoKGUpO2Vsc2UgaWYoIWgmJmsmJlxuYS5lcXVhbHMoaykpZT1jLmNsb25lKCksZS5zZXRTdGFydEF0KGssQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpLGcucHVzaChlKTtlbHNle2lmKG49IWgpbj1hLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5pcyhkKSYmKCFmfHxiKGEsZikpJiYoIWt8fGIoYSxrKSk7aWYoIW4mJihuPWgpKWlmKGEuaXMoZCkpdmFyIG49ZiYmZi5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSxtPWsmJmsuZ2V0QXNjZW5kYW50KFwidGFibGVcIiwhMCksdz1hLmdldEFzY2VuZGFudChcInRhYmxlXCIsITApLG49biYmbi5jb250YWlucyh3KXx8bSYmbS5jb250YWlucyh3KTtlbHNlIG49dm9pZCAwO24mJihlPWMuY2xvbmUoKSxlLnNlbGVjdE5vZGVDb250ZW50cyhhKSxnLnB1c2goZSkpfX07aC5sYXN0Rm9yd2FyZCgpO0NLRURJVE9SLmRvbS5lbGVtZW50LmNsZWFyQWxsTWFya2VycyhsKTtyZXR1cm4gZ31mdW5jdGlvbiBiKGEsZCl7dmFyIGM9Q0tFRElUT1IuUE9TSVRJT05fQ09OVEFJTlMrXG5DS0VESVRPUi5QT1NJVElPTl9JU19DT05UQUlORUQsZz1hLmdldFBvc2l0aW9uKGQpO3JldHVybiBnPT09Q0tFRElUT1IuUE9TSVRJT05fSURFTlRJQ0FMPyExOjA9PT0oZyZjKX12YXIgZD17dGQ6MSx0aDoxLGNhcHRpb246MX07cmV0dXJue2RldGVjdFB1cmdlOmZ1bmN0aW9uKGEpe3ZhciBiPWEucmFuZ2UsYz1iLmNsb25lKCk7Yy5lbmxhcmdlKENLRURJVE9SLkVOTEFSR0VfRUxFTUVOVCk7dmFyIGM9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYyksZz0wO2MuZXZhbHVhdG9yPWZ1bmN0aW9uKGEpe2EudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmlzKGQpJiYrK2d9O2MuY2hlY2tGb3J3YXJkKCk7aWYoMTxnKXt2YXIgYz1iLnN0YXJ0UGF0aCgpLmNvbnRhaW5zKFwidGFibGVcIiksZT1iLmVuZFBhdGgoKS5jb250YWlucyhcInRhYmxlXCIpO2MmJmUmJmIuY2hlY2tCb3VuZGFyeU9mRWxlbWVudChjLENLRURJVE9SLlNUQVJUKSYmYi5jaGVja0JvdW5kYXJ5T2ZFbGVtZW50KGUsXG5DS0VESVRPUi5FTkQpJiYoYj1hLnJhbmdlLmNsb25lKCksYi5zZXRTdGFydEJlZm9yZShjKSxiLnNldEVuZEFmdGVyKGUpLGEucHVyZ2VUYWJsZUJvb2ttYXJrPWIuY3JlYXRlQm9va21hcmsoKSl9fSxkZXRlY3RSYW5nZXM6ZnVuY3Rpb24oZyxlKXt2YXIgaD1jKGUsZy5ib29rbWFyayksZj1oLmNsb25lKCksayxsLG49aC5nZXRDb21tb25BbmNlc3RvcigpO24uaXMoQ0tFRElUT1IuZHRkLiR0YWJsZUNvbnRlbnQpJiYhbi5pcyhkKSYmKG49bi5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSk7bD1uO249bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChoLnN0YXJ0Q29udGFpbmVyLGwpO2w9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChoLmVuZENvbnRhaW5lcixsKTtuPW4uY29udGFpbnMoXCJ0YWJsZVwiKTtsPWwuY29udGFpbnMoXCJ0YWJsZVwiKTtpZihufHxsKW4mJmwmJmIobixsKT8oZy50YWJsZVN1cnJvdW5kaW5nUmFuZ2U9ZixmLnNldFN0YXJ0QXQobixDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpLFxuZi5zZXRFbmRBdChsLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksZj1oLmNsb25lKCksZi5zZXRFbmRBdChuLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCksaz1oLmNsb25lKCksay5zZXRTdGFydEF0KGwsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKSxrPWEoZikuY29uY2F0KGEoaykpKTpuP2x8fChnLnRhYmxlU3Vycm91bmRpbmdSYW5nZT1mLGYuc2V0U3RhcnRBdChuLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCksaC5zZXRFbmRBdChuLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCkpOihnLnRhYmxlU3Vycm91bmRpbmdSYW5nZT1mLGYuc2V0RW5kQXQobCxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpLGguc2V0U3RhcnRBdChsLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSksZy50YWJsZUNvbnRlbnRzUmFuZ2VzPWs/azphKGgpfSxkZWxldGVSYW5nZXM6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiO2I9YS50YWJsZUNvbnRlbnRzUmFuZ2VzLnBvcCgpOyliLmV4dHJhY3RDb250ZW50cygpLFxucChiLnN0YXJ0Q29udGFpbmVyKSYmYi5zdGFydENvbnRhaW5lci5hcHBlbmRCb2d1cygpO2EudGFibGVTdXJyb3VuZGluZ1JhbmdlJiZhLnRhYmxlU3Vycm91bmRpbmdSYW5nZS5leHRyYWN0Q29udGVudHMoKX0scHVyZ2U6ZnVuY3Rpb24oYSl7aWYoYS5wdXJnZVRhYmxlQm9va21hcmspe3ZhciBiPWEuZG9jLGQ9YS5yYW5nZS5jbG9uZSgpLGI9Yi5jcmVhdGVFbGVtZW50KFwicFwiKTtiLmluc2VydEJlZm9yZShhLnB1cmdlVGFibGVCb29rbWFyay5zdGFydE5vZGUpO2QubW92ZVRvQm9va21hcmsoYS5wdXJnZVRhYmxlQm9va21hcmspO2QuZGVsZXRlQ29udGVudHMoKTthLnJhbmdlLm1vdmVUb1Bvc2l0aW9uKGIsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpfX19fSgpLGRldGVjdEV4dHJhY3RNZXJnZTpmdW5jdGlvbihhKXtyZXR1cm4hKGEucmFuZ2Uuc3RhcnRQYXRoKCkuY29udGFpbnMoQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSkmJmEucmFuZ2UuZW5kUGF0aCgpLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdEl0ZW0pKX0sXG5maXhVbmVkaXRhYmxlUmFuZ2VQb3NpdGlvbjpmdW5jdGlvbihhKXthLnN0YXJ0Q29udGFpbmVyLmdldER0ZCgpW1wiI1wiXXx8YS5tb3ZlVG9DbG9zZXN0RWRpdGFibGVQb3NpdGlvbihudWxsLCEwKX0sYXV0b1BhcmFncmFwaDpmdW5jdGlvbihhLGIpe3ZhciBjPWIuc3RhcnRQYXRoKCksZztkKGEsYy5ibG9jayxjLmJsb2NrTGltaXQpJiYoZz1oKGEpKSYmKGc9Yi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KGcpLGcuYXBwZW5kQm9ndXMoKSxiLmluc2VydE5vZGUoZyksYi5tb3ZlVG9Qb3NpdGlvbihnLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSl9fX0oKX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIENLRURJVE9SLnBsdWdpbnMud2lkZ2V0JiZDS0VESVRPUi5wbHVnaW5zLndpZGdldC5pc0RvbVdpZGdldChhKX1mdW5jdGlvbiBmKGIsZCl7aWYoMD09PWIubGVuZ3RofHxhKGJbMF0uZ2V0RW5jbG9zZWROb2RlKCkpKXJldHVybiExO3ZhciBjLGc7aWYoKGM9IWQmJlxuMT09PWIubGVuZ3RoKSYmIShjPWJbMF0uY29sbGFwc2VkKSl7dmFyIGU9YlswXTtjPWUuc3RhcnRDb250YWluZXIuZ2V0QXNjZW5kYW50KHt0ZDoxLHRoOjF9LCEwKTt2YXIgaD1lLmVuZENvbnRhaW5lci5nZXRBc2NlbmRhbnQoe3RkOjEsdGg6MX0sITApO2c9Q0tFRElUT1IudG9vbHMudHJpbTtjJiZjLmVxdWFscyhoKSYmIWMuZmluZE9uZShcInRkLCB0aCwgdHIsIHRib2R5LCB0YWJsZVwiKT8oZT1lLmNsb25lQ29udGVudHMoKSxjPWUuZ2V0Rmlyc3QoKT9nKGUuZ2V0Rmlyc3QoKS5nZXRUZXh0KCkpIT09ZyhjLmdldFRleHQoKSk6ITApOmM9ITF9aWYoYylyZXR1cm4hMTtmb3IoZz0wO2c8Yi5sZW5ndGg7ZysrKWlmKGM9YltnXS5fZ2V0VGFibGVFbGVtZW50KCksIWMpcmV0dXJuITE7cmV0dXJuITB9ZnVuY3Rpb24gZShhKXtmdW5jdGlvbiBiKGEpe2E9YS5maW5kKFwidGQsIHRoXCIpO3ZhciBkPVtdLGM7Zm9yKGM9MDtjPGEuY291bnQoKTtjKyspZC5wdXNoKGEuZ2V0SXRlbShjKSk7cmV0dXJuIGR9XG52YXIgZD1bXSxjLGc7Zm9yKGc9MDtnPGEubGVuZ3RoO2crKyljPWFbZ10uX2dldFRhYmxlRWxlbWVudCgpLGMuaXMmJmMuaXMoe3RkOjEsdGg6MX0pP2QucHVzaChjKTpkPWQuY29uY2F0KGIoYykpO3JldHVybiBkfWZ1bmN0aW9uIGIoYSl7YT1lKGEpO3ZhciBiPVwiXCIsZD1bXSxjLGc7Zm9yKGc9MDtnPGEubGVuZ3RoO2crKyljJiYhYy5lcXVhbHMoYVtnXS5nZXRBc2NlbmRhbnQoXCJ0clwiKSk/KGIrPWQuam9pbihcIlxcdFwiKStcIlxcblwiLGM9YVtnXS5nZXRBc2NlbmRhbnQoXCJ0clwiKSxkPVtdKTowPT09ZyYmKGM9YVtnXS5nZXRBc2NlbmRhbnQoXCJ0clwiKSksZC5wdXNoKGFbZ10uZ2V0VGV4dCgpKTtyZXR1cm4gYis9ZC5qb2luKFwiXFx0XCIpfWZ1bmN0aW9uIGMoYSl7dmFyIGQ9dGhpcy5yb290LmVkaXRvcixjPWQuZ2V0U2VsZWN0aW9uKDEpO3RoaXMucmVzZXQoKTt5PSEwO2Mucm9vdC5vbmNlKFwic2VsZWN0aW9uY2hhbmdlXCIsZnVuY3Rpb24oYSl7YS5jYW5jZWwoKX0sbnVsbCxudWxsLDApO2Muc2VsZWN0UmFuZ2VzKFthWzBdXSk7XG5jPXRoaXMuXy5jYWNoZTtjLnJhbmdlcz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlTGlzdChhKTtjLnR5cGU9Q0tFRElUT1IuU0VMRUNUSU9OX1RFWFQ7Yy5zZWxlY3RlZEVsZW1lbnQ9YVswXS5fZ2V0VGFibGVFbGVtZW50KCk7Yy5zZWxlY3RlZFRleHQ9YihhKTtjLm5hdGl2ZVNlbD1udWxsO3RoaXMuaXNGYWtlPTE7dGhpcy5yZXY9eisrO2QuXy5mYWtlU2VsZWN0aW9uPXRoaXM7eT0hMTt0aGlzLnJvb3QuZmlyZShcInNlbGVjdGlvbmNoYW5nZVwiKX1mdW5jdGlvbiBrKCl7dmFyIGI9dGhpcy5fLmZha2VTZWxlY3Rpb24sZDtpZihiKXtkPXRoaXMuZ2V0U2VsZWN0aW9uKDEpO3ZhciBjO2lmKCEoYz0hZCkmJihjPSFkLmlzSGlkZGVuKCkpKXtjPWI7dmFyIGc9ZC5nZXRSYW5nZXMoKSxlPWMuZ2V0UmFuZ2VzKCksaD1nLmxlbmd0aCYmZ1swXS5fZ2V0VGFibGVFbGVtZW50KCkmJmdbMF0uX2dldFRhYmxlRWxlbWVudCgpLmdldEFzY2VuZGFudChcInRhYmxlXCIsITApLGs9ZS5sZW5ndGgmJmVbMF0uX2dldFRhYmxlRWxlbWVudCgpJiZcbmVbMF0uX2dldFRhYmxlRWxlbWVudCgpLmdldEFzY2VuZGFudChcInRhYmxlXCIsITApLGw9MT09PWcubGVuZ3RoJiZnWzBdLl9nZXRUYWJsZUVsZW1lbnQoKSYmZ1swXS5fZ2V0VGFibGVFbGVtZW50KCkuaXMoXCJ0YWJsZVwiKSxuPTE9PT1lLmxlbmd0aCYmZVswXS5fZ2V0VGFibGVFbGVtZW50KCkmJmVbMF0uX2dldFRhYmxlRWxlbWVudCgpLmlzKFwidGFibGVcIik7aWYoYShjLmdldFNlbGVjdGVkRWxlbWVudCgpKSljPSExO2Vsc2V7dmFyIG09MT09PWcubGVuZ3RoJiZnWzBdLmNvbGxhcHNlZCxlPWYoZywhIUNLRURJVE9SLmVudi53ZWJraXQpJiZmKGUpO2g9aCYmaz9oLmVxdWFscyhrKXx8ay5jb250YWlucyhoKTohMTtoJiYobXx8ZSk/KGwmJiFuJiZjLnNlbGVjdFJhbmdlcyhnKSxjPSEwKTpjPSExfWM9IWN9YyYmKGIucmVzZXQoKSxiPTApfWlmKCFiJiYoYj1kfHx0aGlzLmdldFNlbGVjdGlvbigxKSwhYnx8Yi5nZXRUeXBlKCk9PUNLRURJVE9SLlNFTEVDVElPTl9OT05FKSlyZXR1cm47XG50aGlzLmZpcmUoXCJzZWxlY3Rpb25DaGVja1wiLGIpO2Q9dGhpcy5lbGVtZW50UGF0aCgpO2QuY29tcGFyZSh0aGlzLl8uc2VsZWN0aW9uUHJldmlvdXNQYXRoKXx8KGM9dGhpcy5fLnNlbGVjdGlvblByZXZpb3VzUGF0aCYmdGhpcy5fLnNlbGVjdGlvblByZXZpb3VzUGF0aC5ibG9ja0xpbWl0LmVxdWFscyhkLmJsb2NrTGltaXQpLCFDS0VESVRPUi5lbnYud2Via2l0JiYhQ0tFRElUT1IuZW52LmdlY2tvfHxjfHwodGhpcy5fLnByZXZpb3VzQWN0aXZlPXRoaXMuZG9jdW1lbnQuZ2V0QWN0aXZlKCkpLHRoaXMuXy5zZWxlY3Rpb25QcmV2aW91c1BhdGg9ZCx0aGlzLmZpcmUoXCJzZWxlY3Rpb25DaGFuZ2VcIix7c2VsZWN0aW9uOmIscGF0aDpkfSkpfWZ1bmN0aW9uIGwoKXt2PSEwO3R8fChtLmNhbGwodGhpcyksdD1DS0VESVRPUi50b29scy5zZXRUaW1lb3V0KG0sMjAwLHRoaXMpKX1mdW5jdGlvbiBtKCl7dD1udWxsO3YmJihDS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGssMCx0aGlzKSx2PVxuITEpfWZ1bmN0aW9uIGQoYSl7cmV0dXJuIEIoYSl8fGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYhYS5pcyhDS0VESVRPUi5kdGQuJGVtcHR5KT8hMDohMX1mdW5jdGlvbiBoKGEpe2Z1bmN0aW9uIGIoZCxjKXtyZXR1cm4gZCYmZC50eXBlIT1DS0VESVRPUi5OT0RFX1RFWFQ/YS5jbG9uZSgpW1wibW92ZVRvRWxlbWVudEVkaXRcIisoYz9cIkVuZFwiOlwiU3RhcnRcIildKGQpOiExfWlmKCEoYS5yb290IGluc3RhbmNlb2YgQ0tFRElUT1IuZWRpdGFibGUpKXJldHVybiExO3ZhciBjPWEuc3RhcnRDb250YWluZXIsZz1hLmdldFByZXZpb3VzTm9kZShkLG51bGwsYyksZT1hLmdldE5leHROb2RlKGQsbnVsbCxjKTtyZXR1cm4gYihnKXx8YihlLDEpfHwhKGd8fGV8fGMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZjLmlzQmxvY2tCb3VuZGFyeSgpJiZjLmdldEJvZ3VzKCkpPyEwOiExfWZ1bmN0aW9uIGcoYSl7bihhLCExKTt2YXIgYj1hLmdldERvY3VtZW50KCkuY3JlYXRlVGV4dChxKTtcbmEuc2V0Q3VzdG9tRGF0YShcImNrZS1maWxsaW5nQ2hhclwiLGIpO3JldHVybiBifWZ1bmN0aW9uIG4oYSxiKXt2YXIgZD1hJiZhLnJlbW92ZUN1c3RvbURhdGEoXCJja2UtZmlsbGluZ0NoYXJcIik7aWYoZCl7aWYoITEhPT1iKXt2YXIgYz1hLmdldERvY3VtZW50KCkuZ2V0U2VsZWN0aW9uKCkuZ2V0TmF0aXZlKCksZz1jJiZcIk5vbmVcIiE9Yy50eXBlJiZjLmdldFJhbmdlQXQoMCksZT1xLmxlbmd0aDtpZihkLmdldExlbmd0aCgpPmUmJmcmJmcuaW50ZXJzZWN0c05vZGUoZC4kKSl7dmFyIGg9W3tub2RlOmMuYW5jaG9yTm9kZSxvZmZzZXQ6Yy5hbmNob3JPZmZzZXR9LHtub2RlOmMuZm9jdXNOb2RlLG9mZnNldDpjLmZvY3VzT2Zmc2V0fV07Yy5hbmNob3JOb2RlPT1kLiQmJmMuYW5jaG9yT2Zmc2V0PmUmJihoWzBdLm9mZnNldC09ZSk7Yy5mb2N1c05vZGU9PWQuJCYmYy5mb2N1c09mZnNldD5lJiYoaFsxXS5vZmZzZXQtPWUpfX1kLnNldFRleHQodyhkLmdldFRleHQoKSwxKSk7aCYmKGQ9YS5nZXREb2N1bWVudCgpLiQsXG5jPWQuZ2V0U2VsZWN0aW9uKCksZD1kLmNyZWF0ZVJhbmdlKCksZC5zZXRTdGFydChoWzBdLm5vZGUsaFswXS5vZmZzZXQpLGQuY29sbGFwc2UoITApLGMucmVtb3ZlQWxsUmFuZ2VzKCksYy5hZGRSYW5nZShkKSxjLmV4dGVuZChoWzFdLm5vZGUsaFsxXS5vZmZzZXQpKX19ZnVuY3Rpb24gdyhhLGIpe3JldHVybiBiP2EucmVwbGFjZShBLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGI/XCLCoFwiOlwiXCJ9KTphLnJlcGxhY2UocSxcIlwiKX1mdW5jdGlvbiB4KGEsYil7dmFyIGQ9YiYmQ0tFRElUT1IudG9vbHMuaHRtbEVuY29kZShiKXx8XCJcXHgyNm5ic3A7XCIsZD1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NkaXYgZGF0YS1ja2UtaGlkZGVuLXNlbFxceDNkXCIxXCIgZGF0YS1ja2UtdGVtcFxceDNkXCIxXCIgc3R5bGVcXHgzZFwiJysoQ0tFRElUT1IuZW52LmllJiYxND5DS0VESVRPUi5lbnYudmVyc2lvbj9cImRpc3BsYXk6bm9uZVwiOlwicG9zaXRpb246Zml4ZWQ7dG9wOjA7bGVmdDotMTAwMHB4O3dpZHRoOjA7aGVpZ2h0OjA7b3ZlcmZsb3c6aGlkZGVuO1wiKStcbidcIlxceDNlJytkK1wiXFx4M2MvZGl2XFx4M2VcIixhLmRvY3VtZW50KTthLmZpcmUoXCJsb2NrU25hcHNob3RcIik7YS5lZGl0YWJsZSgpLmFwcGVuZChkKTt2YXIgYz1hLmdldFNlbGVjdGlvbigxKSxnPWEuY3JlYXRlUmFuZ2UoKSxlPWMucm9vdC5vbihcInNlbGVjdGlvbmNoYW5nZVwiLGZ1bmN0aW9uKGEpe2EuY2FuY2VsKCl9LG51bGwsbnVsbCwwKTtnLnNldFN0YXJ0QXQoZCxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVCk7Zy5zZXRFbmRBdChkLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpO2Muc2VsZWN0UmFuZ2VzKFtnXSk7ZS5yZW1vdmVMaXN0ZW5lcigpO2EuZmlyZShcInVubG9ja1NuYXBzaG90XCIpO2EuXy5oaWRkZW5TZWxlY3Rpb25Db250YWluZXI9ZH1mdW5jdGlvbiByKGIpe3ZhciBkPXszNzoxLDM5OjEsODoxLDQ2OjF9O3JldHVybiBmdW5jdGlvbihjKXt2YXIgZz1jLmRhdGEuZ2V0S2V5c3Ryb2tlKCk7aWYoZFtnXSl7dmFyIGU9Yi5nZXRTZWxlY3Rpb24oKSxoPWUuZ2V0UmFuZ2VzKClbMF07XG5lLmlzQ29sbGFwc2VkKCkmJihoPWhbMzg+Zz9cImdldFByZXZpb3VzRWRpdGFibGVOb2RlXCI6XCJnZXROZXh0RWRpdGFibGVOb2RlXCJdKCkpJiZoLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJmYWxzZVwiPT1oLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSYmKGU9ZS5nZXRTdGFydEVsZW1lbnQoKSwhZS5pc0Jsb2NrQm91bmRhcnkoKXx8XCJcIiE9PSh2b2lkIDA9PT1lLiQudGV4dENvbnRlbnQ/ZS4kLmlubmVyVGV4dDplLiQudGV4dENvbnRlbnQpfHxhKGUuZ2V0Rmlyc3QoKSl8fDghPT1nJiY0NiE9PWd8fChlLnJlbW92ZSgpLGIuZmlyZShcInNhdmVTbmFwc2hvdFwiKSksYi5nZXRTZWxlY3Rpb24oKS5mYWtlKGgpLGMuZGF0YS5wcmV2ZW50RGVmYXVsdCgpLGMuY2FuY2VsKCkpfX19ZnVuY3Rpb24gcChhKXtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKyl7dmFyIGQ9YVtiXTtkLmdldENvbW1vbkFuY2VzdG9yKCkuaXNSZWFkT25seSgpJiZhLnNwbGljZShiLDEpO2lmKCFkLmNvbGxhcHNlZCl7aWYoZC5zdGFydENvbnRhaW5lci5pc1JlYWRPbmx5KCkpZm9yKHZhciBjPVxuZC5zdGFydENvbnRhaW5lcixnO2MmJiEoKGc9Yy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpJiZjLmlzKFwiYm9keVwiKXx8IWMuaXNSZWFkT25seSgpKTspZyYmXCJmYWxzZVwiPT1jLmdldEF0dHJpYnV0ZShcImNvbnRlbnRFZGl0YWJsZVwiKSYmZC5zZXRTdGFydEFmdGVyKGMpLGM9Yy5nZXRQYXJlbnQoKTtjPWQuc3RhcnRDb250YWluZXI7Zz1kLmVuZENvbnRhaW5lcjt2YXIgZT1kLnN0YXJ0T2Zmc2V0LGg9ZC5lbmRPZmZzZXQsZj1kLmNsb25lKCk7YyYmYy50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJihlPj1jLmdldExlbmd0aCgpP2Yuc2V0U3RhcnRBZnRlcihjKTpmLnNldFN0YXJ0QmVmb3JlKGMpKTtnJiZnLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKGg/Zi5zZXRFbmRBZnRlcihnKTpmLnNldEVuZEJlZm9yZShnKSk7Yz1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihmKTtjLmV2YWx1YXRvcj1mdW5jdGlvbihjKXtpZihjLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXG5jLmlzUmVhZE9ubHkoKSl7dmFyIGc9ZC5jbG9uZSgpO2Quc2V0RW5kQmVmb3JlKGMpO2QuY29sbGFwc2VkJiZhLnNwbGljZShiLS0sMSk7Yy5nZXRQb3NpdGlvbihmLmVuZENvbnRhaW5lcikmQ0tFRElUT1IuUE9TSVRJT05fQ09OVEFJTlN8fChnLnNldFN0YXJ0QWZ0ZXIoYyksZy5jb2xsYXBzZWR8fGEuc3BsaWNlKGIrMSwwLGcpKTtyZXR1cm4hMH1yZXR1cm4hMX07Yy5uZXh0KCl9fXJldHVybiBhfXZhciB1PVwiZnVuY3Rpb25cIiE9dHlwZW9mIHdpbmRvdy5nZXRTZWxlY3Rpb24sej0xLHE9Q0tFRElUT1IudG9vbHMucmVwZWF0KFwi4oCLXCIsNyksQT1uZXcgUmVnRXhwKHErXCIoICk/XCIsXCJnXCIpLHksdCx2LEI9Q0tFRElUT1IuZG9tLndhbGtlci5pbnZpc2libGUoMSksRD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7cmV0dXJuIGZ1bmN0aW9uKGEpe3ZhciBkPWEuZWRpdG9yLmNyZWF0ZVJhbmdlKCk7ZC5tb3ZlVG9DbG9zZXN0RWRpdGFibGVQb3NpdGlvbihhLnNlbGVjdGVkLGIpJiZhLmVkaXRvci5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSYW5nZXMoW2RdKTtcbnJldHVybiExfX1mdW5jdGlvbiBiKGEpe3JldHVybiBmdW5jdGlvbihiKXt2YXIgZD1iLmVkaXRvcixjPWQuY3JlYXRlUmFuZ2UoKSxnO2lmKCFkLnJlYWRPbmx5KXJldHVybihnPWMubW92ZVRvQ2xvc2VzdEVkaXRhYmxlUG9zaXRpb24oYi5zZWxlY3RlZCxhKSl8fChnPWMubW92ZVRvQ2xvc2VzdEVkaXRhYmxlUG9zaXRpb24oYi5zZWxlY3RlZCwhYSkpLGcmJmQuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFtjXSksZC5maXJlKFwic2F2ZVNuYXBzaG90XCIpLGIuc2VsZWN0ZWQucmVtb3ZlKCksZ3x8KGMubW92ZVRvRWxlbWVudEVkaXRhYmxlUG9zaXRpb24oZC5lZGl0YWJsZSgpKSxkLmdldFNlbGVjdGlvbigpLnNlbGVjdFJhbmdlcyhbY10pKSxkLmZpcmUoXCJzYXZlU25hcHNob3RcIiksITF9fXZhciBkPWEoKSxjPWEoMSk7cmV0dXJuezM3OmQsMzg6ZCwzOTpjLDQwOmMsODpiKCksNDY6YigxKX19KCk7Q0tFRElUT1Iub24oXCJpbnN0YW5jZUNyZWF0ZWRcIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKCl7dmFyIGE9XG5kLmdldFNlbGVjdGlvbigpO2EmJmEucmVtb3ZlQWxsUmFuZ2VzKCl9dmFyIGQ9YS5lZGl0b3I7ZC5vbihcImNvbnRlbnREb21cIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXt0PW5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKGQuZ2V0U2VsZWN0aW9uKCkpO3QubG9jaygpfWZ1bmN0aW9uIGIoKXtoLnJlbW92ZUxpc3RlbmVyKFwibW91c2V1cFwiLGIpO3cucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsYik7dmFyIGE9Q0tFRElUT1IuZG9jdW1lbnQuJC5zZWxlY3Rpb24sZD1hLmNyZWF0ZVJhbmdlKCk7XCJOb25lXCIhPWEudHlwZSYmZC5wYXJlbnRFbGVtZW50KCkmJmQucGFyZW50RWxlbWVudCgpLm93bmVyRG9jdW1lbnQ9PWUuJCYmZC5zZWxlY3QoKX1mdW5jdGlvbiBjKGEpe3ZhciBiLGQ7Yj0oYj10aGlzLmRvY3VtZW50LmdldEFjdGl2ZSgpKT9cImlucHV0XCI9PT1iLmdldE5hbWUoKXx8XCJ0ZXh0YXJlYVwiPT09Yi5nZXROYW1lKCk6ITE7Ynx8KGI9dGhpcy5nZXRTZWxlY3Rpb24oMSksKGQ9ZyhiKSkmJlxuIWQuZXF1YWxzKGYpJiYoYi5zZWxlY3RFbGVtZW50KGQpLGEuZGF0YS5wcmV2ZW50RGVmYXVsdCgpKSl9ZnVuY3Rpb24gZyhhKXthPWEuZ2V0UmFuZ2VzKClbMF07cmV0dXJuIGE/KGE9YS5zdGFydENvbnRhaW5lci5nZXRBc2NlbmRhbnQoZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKX0sITApKSYmXCJmYWxzZVwiPT09YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik/YTpudWxsOm51bGx9dmFyIGU9ZC5kb2N1bWVudCxoPUNLRURJVE9SLmRvY3VtZW50LGY9ZC5lZGl0YWJsZSgpLG09ZS5nZXRCb2R5KCksdz1lLmdldERvY3VtZW50RWxlbWVudCgpLHE9Zi5pc0lubGluZSgpLHYsdDtDS0VESVRPUi5lbnYuZ2Vja28mJmYuYXR0YWNoTGlzdGVuZXIoZixcImZvY3VzXCIsZnVuY3Rpb24oYSl7YS5yZW1vdmVMaXN0ZW5lcigpOzAhPT12JiYoYT1kLmdldFNlbGVjdGlvbigpLmdldE5hdGl2ZSgpKSYmXG5hLmlzQ29sbGFwc2VkJiZhLmFuY2hvck5vZGU9PWYuJCYmKGE9ZC5jcmVhdGVSYW5nZSgpLGEubW92ZVRvRWxlbWVudEVkaXRTdGFydChmKSxhLnNlbGVjdCgpKX0sbnVsbCxudWxsLC0yKTtmLmF0dGFjaExpc3RlbmVyKGYsQ0tFRElUT1IuZW52LndlYmtpdHx8Q0tFRElUT1IuZW52LmdlY2tvP1wiZm9jdXNpblwiOlwiZm9jdXNcIixmdW5jdGlvbigpe2lmKHYmJihDS0VESVRPUi5lbnYud2Via2l0fHxDS0VESVRPUi5lbnYuZ2Vja28pKXt2PWQuXy5wcmV2aW91c0FjdGl2ZSYmZC5fLnByZXZpb3VzQWN0aXZlLmVxdWFscyhlLmdldEFjdGl2ZSgpKTt2YXIgYT1udWxsIT1kLl8ucHJldmlvdXNTY3JvbGxUb3AmJmQuXy5wcmV2aW91c1Njcm9sbFRvcCE9Zi4kLnNjcm9sbFRvcDtDS0VESVRPUi5lbnYud2Via2l0JiZ2JiZhJiYoZi4kLnNjcm9sbFRvcD1kLl8ucHJldmlvdXNTY3JvbGxUb3ApfWQudW5sb2NrU2VsZWN0aW9uKHYpO3Y9MH0sbnVsbCxudWxsLC0xKTtmLmF0dGFjaExpc3RlbmVyKGYsXG5cIm1vdXNlZG93blwiLGZ1bmN0aW9uKCl7dj0wfSk7aWYoQ0tFRElUT1IuZW52LmllfHxDS0VESVRPUi5lbnYuZ2Vja298fHEpdT9mLmF0dGFjaExpc3RlbmVyKGYsXCJiZWZvcmVkZWFjdGl2YXRlXCIsYSxudWxsLG51bGwsLTEpOmYuYXR0YWNoTGlzdGVuZXIoZCxcInNlbGVjdGlvbkNoZWNrXCIsYSxudWxsLG51bGwsLTEpLGYuYXR0YWNoTGlzdGVuZXIoZixDS0VESVRPUi5lbnYud2Via2l0fHxDS0VESVRPUi5lbnYuZ2Vja28/XCJmb2N1c291dFwiOlwiYmx1clwiLGZ1bmN0aW9uKCl7dmFyIGE9dCYmKHQuaXNGYWtlfHwyPnQuZ2V0UmFuZ2VzKCkubGVuZ3RoKTtDS0VESVRPUi5lbnYuZ2Vja28mJiFxJiZhfHwoZC5sb2NrU2VsZWN0aW9uKHQpLHY9MSl9LG51bGwsbnVsbCwtMSksZi5hdHRhY2hMaXN0ZW5lcihmLFwibW91c2Vkb3duXCIsZnVuY3Rpb24oKXt2PTB9KTtpZihDS0VESVRPUi5lbnYuaWUmJiFxKXt2YXIgeTtmLmF0dGFjaExpc3RlbmVyKGYsXCJtb3VzZWRvd25cIixmdW5jdGlvbihhKXsyPT1cbmEuZGF0YS4kLmJ1dHRvbiYmKChhPWQuZG9jdW1lbnQuZ2V0U2VsZWN0aW9uKCkpJiZhLmdldFR5cGUoKSE9Q0tFRElUT1IuU0VMRUNUSU9OX05PTkV8fCh5PWQud2luZG93LmdldFNjcm9sbFBvc2l0aW9uKCkpKX0pO2YuYXR0YWNoTGlzdGVuZXIoZixcIm1vdXNldXBcIixmdW5jdGlvbihhKXsyPT1hLmRhdGEuJC5idXR0b24mJnkmJihkLmRvY3VtZW50LiQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQ9eS54LGQuZG9jdW1lbnQuJC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wPXkueSk7eT1udWxsfSk7aWYoXCJCYWNrQ29tcGF0XCIhPWUuJC5jb21wYXRNb2RlKXtpZihDS0VESVRPUi5lbnYuaWU3Q29tcGF0fHxDS0VESVRPUi5lbnYuaWU2Q29tcGF0KXt2YXIgcCx6O3cub24oXCJtb3VzZWRvd25cIixmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe2E9YS5kYXRhLiQ7aWYocCl7dmFyIGQ9bS4kLmNyZWF0ZVRleHRSYW5nZSgpO3RyeXtkLm1vdmVUb1BvaW50KGEuY2xpZW50WCxhLmNsaWVudFkpfWNhdGNoKGMpe31wLnNldEVuZFBvaW50KDA+XG56LmNvbXBhcmVFbmRQb2ludHMoXCJTdGFydFRvU3RhcnRcIixkKT9cIkVuZFRvRW5kXCI6XCJTdGFydFRvU3RhcnRcIixkKTtwLnNlbGVjdCgpfX1mdW5jdGlvbiBkKCl7dy5yZW1vdmVMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGIpO2gucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsZCk7dy5yZW1vdmVMaXN0ZW5lcihcIm1vdXNldXBcIixkKTtwLnNlbGVjdCgpfWE9YS5kYXRhO2lmKGEuZ2V0VGFyZ2V0KCkuaXMoXCJodG1sXCIpJiZhLiQueTx3LiQuY2xpZW50SGVpZ2h0JiZhLiQueDx3LiQuY2xpZW50V2lkdGgpe3A9bS4kLmNyZWF0ZVRleHRSYW5nZSgpO3RyeXtwLm1vdmVUb1BvaW50KGEuJC5jbGllbnRYLGEuJC5jbGllbnRZKX1jYXRjaChjKXt9ej1wLmR1cGxpY2F0ZSgpO3cub24oXCJtb3VzZW1vdmVcIixiKTtoLm9uKFwibW91c2V1cFwiLGQpO3cub24oXCJtb3VzZXVwXCIsZCl9fSl9aWYoNzxDS0VESVRPUi5lbnYudmVyc2lvbiYmMTE+Q0tFRElUT1IuZW52LnZlcnNpb24pdy5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGEpe2EuZGF0YS5nZXRUYXJnZXQoKS5pcyhcImh0bWxcIikmJlxuKGgub24oXCJtb3VzZXVwXCIsYiksdy5vbihcIm1vdXNldXBcIixiKSl9KX19Zi5hdHRhY2hMaXN0ZW5lcihmLFwic2VsZWN0aW9uY2hhbmdlXCIsayxkKTtmLmF0dGFjaExpc3RlbmVyKGYsXCJrZXl1cFwiLGwsZCk7Zi5hdHRhY2hMaXN0ZW5lcihmLFwidG91Y2hzdGFydFwiLGwsZCk7Zi5hdHRhY2hMaXN0ZW5lcihmLFwidG91Y2hlbmRcIixsLGQpO0NLRURJVE9SLmVudi5pZSYmZi5hdHRhY2hMaXN0ZW5lcihmLFwia2V5ZG93blwiLGMsZCk7Zi5hdHRhY2hMaXN0ZW5lcihmLENLRURJVE9SLmVudi53ZWJraXR8fENLRURJVE9SLmVudi5nZWNrbz9cImZvY3VzaW5cIjpcImZvY3VzXCIsZnVuY3Rpb24oKXtkLmZvcmNlTmV4dFNlbGVjdGlvbkNoZWNrKCk7ZC5zZWxlY3Rpb25DaGFuZ2UoMSl9KTtpZihxJiYoQ0tFRElUT1IuZW52LndlYmtpdHx8Q0tFRElUT1IuZW52LmdlY2tvKSl7dmFyIEE7Zi5hdHRhY2hMaXN0ZW5lcihmLFwibW91c2Vkb3duXCIsZnVuY3Rpb24oKXtBPTF9KTtmLmF0dGFjaExpc3RlbmVyKGUuZ2V0RG9jdW1lbnRFbGVtZW50KCksXG5cIm1vdXNldXBcIixmdW5jdGlvbigpe0EmJmwuY2FsbChkKTtBPTB9KX1lbHNlIGYuYXR0YWNoTGlzdGVuZXIoQ0tFRElUT1IuZW52LmllP2Y6ZS5nZXREb2N1bWVudEVsZW1lbnQoKSxcIm1vdXNldXBcIixsLGQpO0NLRURJVE9SLmVudi53ZWJraXQmJmYuYXR0YWNoTGlzdGVuZXIoZSxcImtleWRvd25cIixmdW5jdGlvbihhKXtzd2l0Y2goYS5kYXRhLmdldEtleSgpKXtjYXNlIDEzOmNhc2UgMzM6Y2FzZSAzNDpjYXNlIDM1OmNhc2UgMzY6Y2FzZSAzNzpjYXNlIDM5OmNhc2UgODpjYXNlIDQ1OmNhc2UgNDY6Zi5oYXNGb2N1cyYmbihmKX19LG51bGwsbnVsbCwtMSk7Zi5hdHRhY2hMaXN0ZW5lcihmLFwia2V5ZG93blwiLHIoZCksbnVsbCxudWxsLC0xKX0pO2Qub24oXCJzZXREYXRhXCIsZnVuY3Rpb24oKXtkLnVubG9ja1NlbGVjdGlvbigpO0NLRURJVE9SLmVudi53ZWJraXQmJmIoKX0pO2Qub24oXCJjb250ZW50RG9tVW5sb2FkXCIsZnVuY3Rpb24oKXtkLnVubG9ja1NlbGVjdGlvbigpfSk7aWYoQ0tFRElUT1IuZW52LmllOUNvbXBhdClkLm9uKFwiYmVmb3JlRGVzdHJveVwiLFxuYixudWxsLG51bGwsOSk7ZC5vbihcImRhdGFSZWFkeVwiLGZ1bmN0aW9uKCl7ZGVsZXRlIGQuXy5mYWtlU2VsZWN0aW9uO2RlbGV0ZSBkLl8uaGlkZGVuU2VsZWN0aW9uQ29udGFpbmVyO2Quc2VsZWN0aW9uQ2hhbmdlKDEpfSk7ZC5vbihcImxvYWRTbmFwc2hvdFwiLGZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IuZG9tLndhbGtlci5ub2RlVHlwZShDS0VESVRPUi5OT0RFX0VMRU1FTlQpLGI9ZC5lZGl0YWJsZSgpLmdldExhc3QoYSk7YiYmYi5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNrZS1oaWRkZW4tc2VsXCIpJiYoYi5yZW1vdmUoKSxDS0VESVRPUi5lbnYuZ2Vja28mJihhPWQuZWRpdGFibGUoKS5nZXRGaXJzdChhKSkmJmEuaXMoXCJiclwiKSYmYS5nZXRBdHRyaWJ1dGUoXCJfbW96X2VkaXRvcl9ib2d1c19ub2RlXCIpJiZhLnJlbW92ZSgpKX0sbnVsbCxudWxsLDEwMCk7ZC5vbihcImtleVwiLGZ1bmN0aW9uKGEpe2lmKFwid3lzaXd5Z1wiPT1kLm1vZGUpe3ZhciBiPWQuZ2V0U2VsZWN0aW9uKCk7aWYoYi5pc0Zha2Upe3ZhciBjPVxuRFthLmRhdGEua2V5Q29kZV07aWYoYylyZXR1cm4gYyh7ZWRpdG9yOmQsc2VsZWN0ZWQ6Yi5nZXRTZWxlY3RlZEVsZW1lbnQoKSxzZWxlY3Rpb246YixrZXlFdmVudDphfSl9fX0pfSk7aWYoQ0tFRElUT1IuZW52LndlYmtpdClDS0VESVRPUi5vbihcImluc3RhbmNlUmVhZHlcIixmdW5jdGlvbihhKXt2YXIgYj1hLmVkaXRvcjtiLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsZnVuY3Rpb24oKXt2YXIgYT1iLmVkaXRhYmxlKCksZD1hLmdldEN1c3RvbURhdGEoXCJja2UtZmlsbGluZ0NoYXJcIik7ZCYmKGQuZ2V0Q3VzdG9tRGF0YShcInJlYWR5XCIpPyhuKGEpLGEuZWRpdG9yLmZpcmUoXCJzZWxlY3Rpb25DaGVja1wiKSk6ZC5zZXRDdXN0b21EYXRhKFwicmVhZHlcIiwxKSl9LG51bGwsbnVsbCwtMSk7Yi5vbihcImJlZm9yZVNldE1vZGVcIixmdW5jdGlvbigpe24oYi5lZGl0YWJsZSgpKX0sbnVsbCxudWxsLC0xKTtiLm9uKFwiZ2V0U25hcHNob3RcIixmdW5jdGlvbihhKXthLmRhdGEmJihhLmRhdGE9dyhhLmRhdGEpKX0sXG5iLG51bGwsMjApO2Iub24oXCJ0b0RhdGFGb3JtYXRcIixmdW5jdGlvbihhKXthLmRhdGEuZGF0YVZhbHVlPXcoYS5kYXRhLmRhdGFWYWx1ZSl9LG51bGwsbnVsbCwwKX0pO0NLRURJVE9SLmVkaXRvci5wcm90b3R5cGUuc2VsZWN0aW9uQ2hhbmdlPWZ1bmN0aW9uKGEpeyhhP2s6bCkuY2FsbCh0aGlzKX07Q0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5nZXRTZWxlY3Rpb249ZnVuY3Rpb24oYSl7cmV0dXJuIXRoaXMuXy5zYXZlZFNlbGVjdGlvbiYmIXRoaXMuXy5mYWtlU2VsZWN0aW9ufHxhPyhhPXRoaXMuZWRpdGFibGUoKSkmJlwid3lzaXd5Z1wiPT10aGlzLm1vZGUmJlwicmVjcmVhdGluZ1wiIT09dGhpcy5zdGF0dXM/bmV3IENLRURJVE9SLmRvbS5zZWxlY3Rpb24oYSk6bnVsbDp0aGlzLl8uc2F2ZWRTZWxlY3Rpb258fHRoaXMuXy5mYWtlU2VsZWN0aW9ufTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmdldFNlbGVjdGVkUmFuZ2VzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZ2V0U2VsZWN0aW9uKCk7XG5yZXR1cm4gYiYmYi5nZXRSYW5nZXMoYSl8fFtdfTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmxvY2tTZWxlY3Rpb249ZnVuY3Rpb24oYSl7YT1hfHx0aGlzLmdldFNlbGVjdGlvbigxKTtyZXR1cm4gYS5nZXRUeXBlKCkhPUNLRURJVE9SLlNFTEVDVElPTl9OT05FPyghYS5pc0xvY2tlZCYmYS5sb2NrKCksdGhpcy5fLnNhdmVkU2VsZWN0aW9uPWEsITApOiExfTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLnVubG9ja1NlbGVjdGlvbj1mdW5jdGlvbihhKXt2YXIgYj10aGlzLl8uc2F2ZWRTZWxlY3Rpb247cmV0dXJuIGI/KGIudW5sb2NrKGEpLGRlbGV0ZSB0aGlzLl8uc2F2ZWRTZWxlY3Rpb24sITApOiExfTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmZvcmNlTmV4dFNlbGVjdGlvbkNoZWNrPWZ1bmN0aW9uKCl7ZGVsZXRlIHRoaXMuXy5zZWxlY3Rpb25QcmV2aW91c1BhdGh9O0NLRURJVE9SLmRvbS5kb2N1bWVudC5wcm90b3R5cGUuZ2V0U2VsZWN0aW9uPWZ1bmN0aW9uKCl7cmV0dXJuIG5ldyBDS0VESVRPUi5kb20uc2VsZWN0aW9uKHRoaXMpfTtcbkNLRURJVE9SLmRvbS5yYW5nZS5wcm90b3R5cGUuc2VsZWN0PWZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5yb290IGluc3RhbmNlb2YgQ0tFRElUT1IuZWRpdGFibGU/dGhpcy5yb290LmVkaXRvci5nZXRTZWxlY3Rpb24oKTpuZXcgQ0tFRElUT1IuZG9tLnNlbGVjdGlvbih0aGlzLnJvb3QpO2Euc2VsZWN0UmFuZ2VzKFt0aGlzXSk7cmV0dXJuIGF9O0NLRURJVE9SLlNFTEVDVElPTl9OT05FPTE7Q0tFRElUT1IuU0VMRUNUSU9OX1RFWFQ9MjtDS0VESVRPUi5TRUxFQ1RJT05fRUxFTUVOVD0zO0NLRURJVE9SLmRvbS5zZWxlY3Rpb249ZnVuY3Rpb24oYSl7aWYoYSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5zZWxlY3Rpb24pe3ZhciBiPWE7YT1hLnJvb3R9dmFyIGQ9YSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50O3RoaXMucmV2PWI/Yi5yZXY6eisrO3RoaXMuZG9jdW1lbnQ9YSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5kb2N1bWVudD9hOmEuZ2V0RG9jdW1lbnQoKTt0aGlzLnJvb3Q9XG5kP2E6dGhpcy5kb2N1bWVudC5nZXRCb2R5KCk7dGhpcy5pc0xvY2tlZD0wO3RoaXMuXz17Y2FjaGU6e319O2lmKGIpcmV0dXJuIENLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLl8uY2FjaGUsYi5fLmNhY2hlKSx0aGlzLmlzRmFrZT1iLmlzRmFrZSx0aGlzLmlzTG9ja2VkPWIuaXNMb2NrZWQsdGhpczthPXRoaXMuZ2V0TmF0aXZlKCk7dmFyIGMsZztpZihhKWlmKGEuZ2V0UmFuZ2VBdCljPShnPWEucmFuZ2VDb3VudCYmYS5nZXRSYW5nZUF0KDApKSYmbmV3IENLRURJVE9SLmRvbS5ub2RlKGcuY29tbW9uQW5jZXN0b3JDb250YWluZXIpO2Vsc2V7dHJ5e2c9YS5jcmVhdGVSYW5nZSgpfWNhdGNoKGUpe31jPWcmJkNLRURJVE9SLmRvbS5lbGVtZW50LmdldChnLml0ZW0mJmcuaXRlbSgwKXx8Zy5wYXJlbnRFbGVtZW50KCkpfWlmKCFjfHxjLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYy50eXBlIT1DS0VESVRPUi5OT0RFX1RFWFR8fCF0aGlzLnJvb3QuZXF1YWxzKGMpJiYhdGhpcy5yb290LmNvbnRhaW5zKGMpKXRoaXMuXy5jYWNoZS50eXBlPVxuQ0tFRElUT1IuU0VMRUNUSU9OX05PTkUsdGhpcy5fLmNhY2hlLnN0YXJ0RWxlbWVudD1udWxsLHRoaXMuXy5jYWNoZS5zZWxlY3RlZEVsZW1lbnQ9bnVsbCx0aGlzLl8uY2FjaGUuc2VsZWN0ZWRUZXh0PVwiXCIsdGhpcy5fLmNhY2hlLnJhbmdlcz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlTGlzdDtyZXR1cm4gdGhpc307dmFyIEM9e2ltZzoxLGhyOjEsbGk6MSx0YWJsZToxLHRyOjEsdGQ6MSx0aDoxLGVtYmVkOjEsb2JqZWN0OjEsb2w6MSx1bDoxLGE6MSxpbnB1dDoxLGZvcm06MSxzZWxlY3Q6MSx0ZXh0YXJlYToxLGJ1dHRvbjoxLGZpZWxkc2V0OjEsdGhlYWQ6MSx0Zm9vdDoxfTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZG9tLnNlbGVjdGlvbix7X3JlbW92ZUZpbGxpbmdDaGFyU2VxdWVuY2VTdHJpbmc6dyxfY3JlYXRlRmlsbGluZ0NoYXJTZXF1ZW5jZU5vZGU6ZyxGSUxMSU5HX0NIQVJfU0VRVUVOQ0U6cX0pO0NLRURJVE9SLmRvbS5zZWxlY3Rpb24ucHJvdG90eXBlPXtnZXROYXRpdmU6ZnVuY3Rpb24oKXtyZXR1cm4gdm9pZCAwIT09XG50aGlzLl8uY2FjaGUubmF0aXZlU2VsP3RoaXMuXy5jYWNoZS5uYXRpdmVTZWw6dGhpcy5fLmNhY2hlLm5hdGl2ZVNlbD11P3RoaXMuZG9jdW1lbnQuJC5zZWxlY3Rpb246dGhpcy5kb2N1bWVudC5nZXRXaW5kb3coKS4kLmdldFNlbGVjdGlvbigpfSxnZXRUeXBlOnU/ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl8uY2FjaGU7aWYoYS50eXBlKXJldHVybiBhLnR5cGU7dmFyIGI9Q0tFRElUT1IuU0VMRUNUSU9OX05PTkU7dHJ5e3ZhciBkPXRoaXMuZ2V0TmF0aXZlKCksYz1kLnR5cGU7XCJUZXh0XCI9PWMmJihiPUNLRURJVE9SLlNFTEVDVElPTl9URVhUKTtcIkNvbnRyb2xcIj09YyYmKGI9Q0tFRElUT1IuU0VMRUNUSU9OX0VMRU1FTlQpO2QuY3JlYXRlUmFuZ2UoKS5wYXJlbnRFbGVtZW50KCkmJihiPUNLRURJVE9SLlNFTEVDVElPTl9URVhUKX1jYXRjaChnKXt9cmV0dXJuIGEudHlwZT1ifTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuXy5jYWNoZTtpZihhLnR5cGUpcmV0dXJuIGEudHlwZTt2YXIgYj1cbkNLRURJVE9SLlNFTEVDVElPTl9URVhULGQ9dGhpcy5nZXROYXRpdmUoKTtpZighZHx8IWQucmFuZ2VDb3VudCliPUNLRURJVE9SLlNFTEVDVElPTl9OT05FO2Vsc2UgaWYoMT09ZC5yYW5nZUNvdW50KXt2YXIgZD1kLmdldFJhbmdlQXQoMCksYz1kLnN0YXJ0Q29udGFpbmVyO2M9PWQuZW5kQ29udGFpbmVyJiYxPT1jLm5vZGVUeXBlJiYxPT1kLmVuZE9mZnNldC1kLnN0YXJ0T2Zmc2V0JiZDW2MuY2hpbGROb2Rlc1tkLnN0YXJ0T2Zmc2V0XS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXSYmKGI9Q0tFRElUT1IuU0VMRUNUSU9OX0VMRU1FTlQpfXJldHVybiBhLnR5cGU9Yn0sZ2V0UmFuZ2VzOmZ1bmN0aW9uKCl7dmFyIGE9dT9mdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7cmV0dXJuKG5ldyBDS0VESVRPUi5kb20ubm9kZShiKSkuZ2V0SW5kZXgoKX12YXIgYj1mdW5jdGlvbihiLGQpe2I9Yi5kdXBsaWNhdGUoKTtiLmNvbGxhcHNlKGQpO3ZhciBjPWIucGFyZW50RWxlbWVudCgpO2lmKCFjLmhhc0NoaWxkTm9kZXMoKSlyZXR1cm57Y29udGFpbmVyOmMsXG5vZmZzZXQ6MH07Zm9yKHZhciBnPWMuY2hpbGRyZW4sZSxoLGY9Yi5kdXBsaWNhdGUoKSxrPTAsbD1nLmxlbmd0aC0xLG49LTEsbSx3O2s8PWw7KWlmKG49TWF0aC5mbG9vcigoaytsKS8yKSxlPWdbbl0sZi5tb3ZlVG9FbGVtZW50VGV4dChlKSxtPWYuY29tcGFyZUVuZFBvaW50cyhcIlN0YXJ0VG9TdGFydFwiLGIpLDA8bSlsPW4tMTtlbHNlIGlmKDA+bSlrPW4rMTtlbHNlIHJldHVybntjb250YWluZXI6YyxvZmZzZXQ6YShlKX07aWYoLTE9PW58fG49PWcubGVuZ3RoLTEmJjA+bSl7Zi5tb3ZlVG9FbGVtZW50VGV4dChjKTtmLnNldEVuZFBvaW50KFwiU3RhcnRUb1N0YXJ0XCIsYik7Zj1mLnRleHQucmVwbGFjZSgvKFxcclxcbnxcXHIpL2csXCJcXG5cIikubGVuZ3RoO2c9Yy5jaGlsZE5vZGVzO2lmKCFmKXJldHVybiBlPWdbZy5sZW5ndGgtMV0sZS5ub2RlVHlwZSE9Q0tFRElUT1IuTk9ERV9URVhUP3tjb250YWluZXI6YyxvZmZzZXQ6Zy5sZW5ndGh9Ontjb250YWluZXI6ZSxvZmZzZXQ6ZS5ub2RlVmFsdWUubGVuZ3RofTtcbmZvcihjPWcubGVuZ3RoOzA8ZiYmMDxjOyloPWdbLS1jXSxoLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJih3PWgsZi09aC5ub2RlVmFsdWUubGVuZ3RoKTtyZXR1cm57Y29udGFpbmVyOncsb2Zmc2V0Oi1mfX1mLmNvbGxhcHNlKDA8bT8hMDohMSk7Zi5zZXRFbmRQb2ludCgwPG0/XCJTdGFydFRvU3RhcnRcIjpcIkVuZFRvU3RhcnRcIixiKTtmPWYudGV4dC5yZXBsYWNlKC8oXFxyXFxufFxccikvZyxcIlxcblwiKS5sZW5ndGg7aWYoIWYpcmV0dXJue2NvbnRhaW5lcjpjLG9mZnNldDphKGUpKygwPG0/MDoxKX07Zm9yKDswPGY7KXRyeXtoPWVbMDxtP1wicHJldmlvdXNTaWJsaW5nXCI6XCJuZXh0U2libGluZ1wiXSxoLm5vZGVUeXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJihmLT1oLm5vZGVWYWx1ZS5sZW5ndGgsdz1oKSxlPWh9Y2F0Y2godil7cmV0dXJue2NvbnRhaW5lcjpjLG9mZnNldDphKGUpfX1yZXR1cm57Y29udGFpbmVyOncsb2Zmc2V0OjA8bT8tZjp3Lm5vZGVWYWx1ZS5sZW5ndGgrZn19O1xucmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXROYXRpdmUoKSxkPWEmJmEuY3JlYXRlUmFuZ2UoKSxjPXRoaXMuZ2V0VHlwZSgpO2lmKCFhKXJldHVybltdO2lmKGM9PUNLRURJVE9SLlNFTEVDVElPTl9URVhUKXJldHVybiBhPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UodGhpcy5yb290KSxjPWIoZCwhMCksYS5zZXRTdGFydChuZXcgQ0tFRElUT1IuZG9tLm5vZGUoYy5jb250YWluZXIpLGMub2Zmc2V0KSxjPWIoZCksYS5zZXRFbmQobmV3IENLRURJVE9SLmRvbS5ub2RlKGMuY29udGFpbmVyKSxjLm9mZnNldCksYS5lbmRDb250YWluZXIuZ2V0UG9zaXRpb24oYS5zdGFydENvbnRhaW5lcikmQ0tFRElUT1IuUE9TSVRJT05fUFJFQ0VESU5HJiZhLmVuZE9mZnNldDw9YS5zdGFydENvbnRhaW5lci5nZXRJbmRleCgpJiZhLmNvbGxhcHNlKCksW2FdO2lmKGM9PUNLRURJVE9SLlNFTEVDVElPTl9FTEVNRU5UKXtmb3IodmFyIGM9W10sZz0wO2c8ZC5sZW5ndGg7ZysrKXtmb3IodmFyIGU9XG5kLml0ZW0oZyksaD1lLnBhcmVudE5vZGUsZj0wLGE9bmV3IENLRURJVE9SLmRvbS5yYW5nZSh0aGlzLnJvb3QpO2Y8aC5jaGlsZE5vZGVzLmxlbmd0aCYmaC5jaGlsZE5vZGVzW2ZdIT1lO2YrKyk7YS5zZXRTdGFydChuZXcgQ0tFRElUT1IuZG9tLm5vZGUoaCksZik7YS5zZXRFbmQobmV3IENLRURJVE9SLmRvbS5ub2RlKGgpLGYrMSk7Yy5wdXNoKGEpfXJldHVybiBjfXJldHVybltdfX0oKTpmdW5jdGlvbigpe3ZhciBhPVtdLGIsZD10aGlzLmdldE5hdGl2ZSgpO2lmKCFkKXJldHVybiBhO2Zvcih2YXIgYz0wO2M8ZC5yYW5nZUNvdW50O2MrKyl7dmFyIGc9ZC5nZXRSYW5nZUF0KGMpO2I9bmV3IENLRURJVE9SLmRvbS5yYW5nZSh0aGlzLnJvb3QpO2Iuc2V0U3RhcnQobmV3IENLRURJVE9SLmRvbS5ub2RlKGcuc3RhcnRDb250YWluZXIpLGcuc3RhcnRPZmZzZXQpO2Iuc2V0RW5kKG5ldyBDS0VESVRPUi5kb20ubm9kZShnLmVuZENvbnRhaW5lciksZy5lbmRPZmZzZXQpO2EucHVzaChiKX1yZXR1cm4gYX07XG5yZXR1cm4gZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5fLmNhY2hlLGM9ZC5yYW5nZXM7Y3x8KGQucmFuZ2VzPWM9bmV3IENLRURJVE9SLmRvbS5yYW5nZUxpc3QoYS5jYWxsKHRoaXMpKSk7cmV0dXJuIGI/cChuZXcgQ0tFRElUT1IuZG9tLnJhbmdlTGlzdChjLnNsaWNlKCkpKTpjfX0oKSxnZXRTdGFydEVsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl8uY2FjaGU7aWYodm9pZCAwIT09YS5zdGFydEVsZW1lbnQpcmV0dXJuIGEuc3RhcnRFbGVtZW50O3ZhciBiO3N3aXRjaCh0aGlzLmdldFR5cGUoKSl7Y2FzZSBDS0VESVRPUi5TRUxFQ1RJT05fRUxFTUVOVDpyZXR1cm4gdGhpcy5nZXRTZWxlY3RlZEVsZW1lbnQoKTtjYXNlIENLRURJVE9SLlNFTEVDVElPTl9URVhUOnZhciBkPXRoaXMuZ2V0UmFuZ2VzKClbMF07aWYoZCl7aWYoZC5jb2xsYXBzZWQpYj1kLnN0YXJ0Q29udGFpbmVyLGIudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoYj1iLmdldFBhcmVudCgpKTtlbHNle2ZvcihkLm9wdGltaXplKCk7Yj1cbmQuc3RhcnRDb250YWluZXIsZC5zdGFydE9mZnNldD09KGIuZ2V0Q2hpbGRDb3VudD9iLmdldENoaWxkQ291bnQoKTpiLmdldExlbmd0aCgpKSYmIWIuaXNCbG9ja0JvdW5kYXJ5KCk7KWQuc2V0U3RhcnRBZnRlcihiKTtiPWQuc3RhcnRDb250YWluZXI7aWYoYi50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpcmV0dXJuIGIuZ2V0UGFyZW50KCk7aWYoKGI9Yi5nZXRDaGlsZChkLnN0YXJ0T2Zmc2V0KSkmJmIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UKWZvcihkPWIuZ2V0Rmlyc3QoKTtkJiZkLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVDspYj1kLGQ9ZC5nZXRGaXJzdCgpO2Vsc2UgYj1kLnN0YXJ0Q29udGFpbmVyfWI9Yi4kfX1yZXR1cm4gYS5zdGFydEVsZW1lbnQ9Yj9uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYik6bnVsbH0sZ2V0U2VsZWN0ZWRFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLmNhY2hlO2lmKHZvaWQgMCE9PWEuc2VsZWN0ZWRFbGVtZW50KXJldHVybiBhLnNlbGVjdGVkRWxlbWVudDtcbnZhciBiPXRoaXMsZD1DS0VESVRPUi50b29scy50cnlUaGVzZShmdW5jdGlvbigpe3JldHVybiBiLmdldE5hdGl2ZSgpLmNyZWF0ZVJhbmdlKCkuaXRlbSgwKX0sZnVuY3Rpb24oKXtmb3IodmFyIGE9Yi5nZXRSYW5nZXMoKVswXS5jbG9uZSgpLGQsYyxnPTI7ZyYmISgoZD1hLmdldEVuY2xvc2VkTm9kZSgpKSYmZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJkNbZC5nZXROYW1lKCldJiYoYz1kKSk7Zy0tKWEuc2hyaW5rKENLRURJVE9SLlNIUklOS19FTEVNRU5UKTtyZXR1cm4gYyYmYy4kfSk7cmV0dXJuIGEuc2VsZWN0ZWRFbGVtZW50PWQ/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGQpOm51bGx9LGdldFNlbGVjdGVkVGV4dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuXy5jYWNoZTtpZih2b2lkIDAhPT1hLnNlbGVjdGVkVGV4dClyZXR1cm4gYS5zZWxlY3RlZFRleHQ7dmFyIGI9dGhpcy5nZXROYXRpdmUoKSxiPXU/XCJDb250cm9sXCI9PWIudHlwZT9cIlwiOmIuY3JlYXRlUmFuZ2UoKS50ZXh0OlxuYi50b1N0cmluZygpO3JldHVybiBhLnNlbGVjdGVkVGV4dD1ifSxsb2NrOmZ1bmN0aW9uKCl7dGhpcy5nZXRSYW5nZXMoKTt0aGlzLmdldFN0YXJ0RWxlbWVudCgpO3RoaXMuZ2V0U2VsZWN0ZWRFbGVtZW50KCk7dGhpcy5nZXRTZWxlY3RlZFRleHQoKTt0aGlzLl8uY2FjaGUubmF0aXZlU2VsPW51bGw7dGhpcy5pc0xvY2tlZD0xfSx1bmxvY2s6ZnVuY3Rpb24oYSl7aWYodGhpcy5pc0xvY2tlZCl7aWYoYSl2YXIgYj10aGlzLmdldFNlbGVjdGVkRWxlbWVudCgpLGQ9dGhpcy5nZXRSYW5nZXMoKSxnPXRoaXMuaXNGYWtlO3RoaXMuaXNMb2NrZWQ9MDt0aGlzLnJlc2V0KCk7YSYmKGE9Ynx8ZFswXSYmZFswXS5nZXRDb21tb25BbmNlc3RvcigpKSYmYS5nZXRBc2NlbmRhbnQoXCJib2R5XCIsMSkmJigoYT10aGlzLnJvb3QuZWRpdG9yKSYmYS5wbHVnaW5zLnRhYmxlc2VsZWN0aW9uJiZhLnBsdWdpbnMudGFibGVzZWxlY3Rpb24uaXNTdXBwb3J0ZWRFbnZpcm9ubWVudChhKSYmZihkKT9jLmNhbGwodGhpcyxcbmQpOmc/dGhpcy5mYWtlKGIpOmImJjI+ZC5sZW5ndGg/dGhpcy5zZWxlY3RFbGVtZW50KGIpOnRoaXMuc2VsZWN0UmFuZ2VzKGQpKX19LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5fLmNhY2hlPXt9O3RoaXMuaXNGYWtlPTA7dmFyIGE9dGhpcy5yb290LmVkaXRvcjtpZihhJiZhLl8uZmFrZVNlbGVjdGlvbilpZih0aGlzLnJldj09YS5fLmZha2VTZWxlY3Rpb24ucmV2KXtkZWxldGUgYS5fLmZha2VTZWxlY3Rpb247dmFyIGI9YS5fLmhpZGRlblNlbGVjdGlvbkNvbnRhaW5lcjtpZihiKXt2YXIgZD1hLmNoZWNrRGlydHkoKTthLmZpcmUoXCJsb2NrU25hcHNob3RcIik7Yi5yZW1vdmUoKTthLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKTshZCYmYS5yZXNldERpcnR5KCl9ZGVsZXRlIGEuXy5oaWRkZW5TZWxlY3Rpb25Db250YWluZXJ9ZWxzZSBDS0VESVRPUi53YXJuKFwic2VsZWN0aW9uLWZha2UtcmVzZXRcIik7dGhpcy5yZXY9eisrfSxzZWxlY3RFbGVtZW50OmZ1bmN0aW9uKGEpe3ZhciBiPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UodGhpcy5yb290KTtcbmIuc2V0U3RhcnRCZWZvcmUoYSk7Yi5zZXRFbmRBZnRlcihhKTt0aGlzLnNlbGVjdFJhbmdlcyhbYl0pfSxzZWxlY3RSYW5nZXM6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5yb290LmVkaXRvcixkPWImJmIuXy5oaWRkZW5TZWxlY3Rpb25Db250YWluZXI7dGhpcy5yZXNldCgpO2lmKGQpZm9yKHZhciBkPXRoaXMucm9vdCxlLGs9MDtrPGEubGVuZ3RoOysrayllPWFba10sZS5lbmRDb250YWluZXIuZXF1YWxzKGQpJiYoZS5lbmRPZmZzZXQ9TWF0aC5taW4oZS5lbmRPZmZzZXQsZC5nZXRDaGlsZENvdW50KCkpKTtpZihhLmxlbmd0aClpZih0aGlzLmlzTG9ja2VkKXt2YXIgbD1DS0VESVRPUi5kb2N1bWVudC5nZXRBY3RpdmUoKTt0aGlzLnVubG9jaygpO3RoaXMuc2VsZWN0UmFuZ2VzKGEpO3RoaXMubG9jaygpO2wmJiFsLmVxdWFscyh0aGlzLnJvb3QpJiZsLmZvY3VzKCl9ZWxzZXt2YXIgbTthOnt2YXIgdyx2O2lmKDE9PWEubGVuZ3RoJiYhKHY9YVswXSkuY29sbGFwc2VkJiYobT12LmdldEVuY2xvc2VkTm9kZSgpKSYmXG5tLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKHY9di5jbG9uZSgpLHYuc2hyaW5rKENLRURJVE9SLlNIUklOS19FTEVNRU5ULCEwKSwodz12LmdldEVuY2xvc2VkTm9kZSgpKSYmdy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihtPXcpLFwiZmFsc2VcIj09bS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpKWJyZWFrIGE7bT12b2lkIDB9aWYobSl0aGlzLmZha2UobSk7ZWxzZSBpZihiJiZiLnBsdWdpbnMudGFibGVzZWxlY3Rpb24mJmIucGx1Z2lucy50YWJsZXNlbGVjdGlvbi5pc1N1cHBvcnRlZEVudmlyb25tZW50KGIpJiZmKGEpJiYheSYmIWFbMF0uX2dldFRhYmxlRWxlbWVudCh7dGFibGU6MX0pLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXRhYmxlc2VsZWN0aW9uLWlnbm9yZWRcIikpYy5jYWxsKHRoaXMsYSk7ZWxzZXtpZih1KXt3PUNLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXMoITApO209L1xcdWZlZmZ8XFx1MDBhMC87dj17dGFibGU6MSx0Ym9keToxLFxudHI6MX07MTxhLmxlbmd0aCYmKGI9YVthLmxlbmd0aC0xXSxhWzBdLnNldEVuZChiLmVuZENvbnRhaW5lcixiLmVuZE9mZnNldCkpO2I9YVswXTthPWIuY29sbGFwc2VkO3ZhciBxLHQscDtpZigoZD1iLmdldEVuY2xvc2VkTm9kZSgpKSYmZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmQuZ2V0TmFtZSgpaW4gQyYmKCFkLmlzKFwiYVwiKXx8IWQuZ2V0VGV4dCgpKSl0cnl7cD1kLiQuY3JlYXRlQ29udHJvbFJhbmdlKCk7cC5hZGRFbGVtZW50KGQuJCk7cC5zZWxlY3QoKTtyZXR1cm59Y2F0Y2goeil7fWlmKGIuc3RhcnRDb250YWluZXIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZiLnN0YXJ0Q29udGFpbmVyLmdldE5hbWUoKWluIHZ8fGIuZW5kQ29udGFpbmVyLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYi5lbmRDb250YWluZXIuZ2V0TmFtZSgpaW4gdiliLnNocmluayhDS0VESVRPUi5OT0RFX0VMRU1FTlQsITApLGE9Yi5jb2xsYXBzZWQ7cD1iLmNyZWF0ZUJvb2ttYXJrKCk7XG52PXAuc3RhcnROb2RlO2F8fChsPXAuZW5kTm9kZSk7cD1iLmRvY3VtZW50LiQuYm9keS5jcmVhdGVUZXh0UmFuZ2UoKTtwLm1vdmVUb0VsZW1lbnRUZXh0KHYuJCk7cC5tb3ZlU3RhcnQoXCJjaGFyYWN0ZXJcIiwxKTtsPyhtPWIuZG9jdW1lbnQuJC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpLG0ubW92ZVRvRWxlbWVudFRleHQobC4kKSxwLnNldEVuZFBvaW50KFwiRW5kVG9FbmRcIixtKSxwLm1vdmVFbmQoXCJjaGFyYWN0ZXJcIiwtMSkpOihxPXYuZ2V0TmV4dCh3KSx0PXYuaGFzQXNjZW5kYW50KFwicHJlXCIpLHE9IShxJiZxLmdldFRleHQmJnEuZ2V0VGV4dCgpLm1hdGNoKG0pKSYmKHR8fCF2Lmhhc1ByZXZpb3VzKCl8fHYuZ2V0UHJldmlvdXMoKS5pcyYmdi5nZXRQcmV2aW91cygpLmlzKFwiYnJcIikpLHQ9Yi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic3BhblwiKSx0LnNldEh0bWwoXCJcXHgyNiM2NTI3OTtcIiksdC5pbnNlcnRCZWZvcmUodikscSYmYi5kb2N1bWVudC5jcmVhdGVUZXh0KFwi77u/XCIpLmluc2VydEJlZm9yZSh2KSk7XG5iLnNldFN0YXJ0QmVmb3JlKHYpO3YucmVtb3ZlKCk7YT8ocT8ocC5tb3ZlU3RhcnQoXCJjaGFyYWN0ZXJcIiwtMSkscC5zZWxlY3QoKSxiLmRvY3VtZW50LiQuc2VsZWN0aW9uLmNsZWFyKCkpOnAuc2VsZWN0KCksYi5tb3ZlVG9Qb3NpdGlvbih0LENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCksdC5yZW1vdmUoKSk6KGIuc2V0RW5kQmVmb3JlKGwpLGwucmVtb3ZlKCkscC5zZWxlY3QoKSl9ZWxzZXtsPXRoaXMuZ2V0TmF0aXZlKCk7aWYoIWwpcmV0dXJuO3RoaXMucmVtb3ZlQWxsUmFuZ2VzKCk7Zm9yKHA9MDtwPGEubGVuZ3RoO3ArKyl7aWYocDxhLmxlbmd0aC0xJiYocT1hW3BdLHQ9YVtwKzFdLG09cS5jbG9uZSgpLG0uc2V0U3RhcnQocS5lbmRDb250YWluZXIscS5lbmRPZmZzZXQpLG0uc2V0RW5kKHQuc3RhcnRDb250YWluZXIsdC5zdGFydE9mZnNldCksIW0uY29sbGFwc2VkJiYobS5zaHJpbmsoQ0tFRElUT1IuTk9ERV9FTEVNRU5ULCEwKSxiPW0uZ2V0Q29tbW9uQW5jZXN0b3IoKSxcbm09bS5nZXRFbmNsb3NlZE5vZGUoKSxiLmlzUmVhZE9ubHkoKXx8bSYmbS5pc1JlYWRPbmx5KCkpKSl7dC5zZXRTdGFydChxLnN0YXJ0Q29udGFpbmVyLHEuc3RhcnRPZmZzZXQpO2Euc3BsaWNlKHAtLSwxKTtjb250aW51ZX1iPWFbcF07dD10aGlzLmRvY3VtZW50LiQuY3JlYXRlUmFuZ2UoKTtiLmNvbGxhcHNlZCYmQ0tFRElUT1IuZW52LndlYmtpdCYmaChiKSYmKG09Zyh0aGlzLnJvb3QpLGIuaW5zZXJ0Tm9kZShtKSwocT1tLmdldE5leHQoKSkmJiFtLmdldFByZXZpb3VzKCkmJnEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZcImJyXCI9PXEuZ2V0TmFtZSgpPyhuKHRoaXMucm9vdCksYi5tb3ZlVG9Qb3NpdGlvbihxLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCkpOmIubW92ZVRvUG9zaXRpb24obSxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9FTkQpKTt0LnNldFN0YXJ0KGIuc3RhcnRDb250YWluZXIuJCxiLnN0YXJ0T2Zmc2V0KTt0cnl7dC5zZXRFbmQoYi5lbmRDb250YWluZXIuJCxcbmIuZW5kT2Zmc2V0KX1jYXRjaChyKXtpZigwPD1yLnRvU3RyaW5nKCkuaW5kZXhPZihcIk5TX0VSUk9SX0lMTEVHQUxfVkFMVUVcIikpYi5jb2xsYXBzZSgxKSx0LnNldEVuZChiLmVuZENvbnRhaW5lci4kLGIuZW5kT2Zmc2V0KTtlbHNlIHRocm93IHI7fWwuYWRkUmFuZ2UodCl9fXRoaXMucmVzZXQoKTt0aGlzLnJvb3QuZmlyZShcInNlbGVjdGlvbmNoYW5nZVwiKX19fSxmYWtlOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5yb290LmVkaXRvcjt2b2lkIDA9PT1iJiZhLmhhc0F0dHJpYnV0ZShcImFyaWEtbGFiZWxcIikmJihiPWEuZ2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSk7dGhpcy5yZXNldCgpO3goZCxiKTt2YXIgYz10aGlzLl8uY2FjaGUsZz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKHRoaXMucm9vdCk7Zy5zZXRTdGFydEJlZm9yZShhKTtnLnNldEVuZEFmdGVyKGEpO2MucmFuZ2VzPW5ldyBDS0VESVRPUi5kb20ucmFuZ2VMaXN0KGcpO2Muc2VsZWN0ZWRFbGVtZW50PWMuc3RhcnRFbGVtZW50PVxuYTtjLnR5cGU9Q0tFRElUT1IuU0VMRUNUSU9OX0VMRU1FTlQ7Yy5zZWxlY3RlZFRleHQ9Yy5uYXRpdmVTZWw9bnVsbDt0aGlzLmlzRmFrZT0xO3RoaXMucmV2PXorKztkLl8uZmFrZVNlbGVjdGlvbj10aGlzO3RoaXMucm9vdC5maXJlKFwic2VsZWN0aW9uY2hhbmdlXCIpfSxpc0hpZGRlbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0Q29tbW9uQW5jZXN0b3IoKTthJiZhLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKGE9YS5nZXRQYXJlbnQoKSk7cmV0dXJuISghYXx8IWEuZGF0YShcImNrZS1oaWRkZW4tc2VsXCIpKX0saXNJblRhYmxlOmZ1bmN0aW9uKGEpe3JldHVybiBmKHRoaXMuZ2V0UmFuZ2VzKCksYSl9LGlzQ29sbGFwc2VkOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRSYW5nZXMoKTtyZXR1cm4gMT09PWEubGVuZ3RoJiZhWzBdLmNvbGxhcHNlZH0sY3JlYXRlQm9va21hcmtzOmZ1bmN0aW9uKGEpe2E9dGhpcy5nZXRSYW5nZXMoKS5jcmVhdGVCb29rbWFya3MoYSk7dGhpcy5pc0Zha2UmJlxuKGEuaXNGYWtlPTEpO3JldHVybiBhfSxjcmVhdGVCb29rbWFya3MyOmZ1bmN0aW9uKGEpe2E9dGhpcy5nZXRSYW5nZXMoKS5jcmVhdGVCb29rbWFya3MyKGEpO3RoaXMuaXNGYWtlJiYoYS5pc0Zha2U9MSk7cmV0dXJuIGF9LHNlbGVjdEJvb2ttYXJrczpmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sZCxjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBnPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UodGhpcy5yb290KTtnLm1vdmVUb0Jvb2ttYXJrKGFbY10pO2IucHVzaChnKX1hLmlzRmFrZSYmKGQ9ZihiKT9iWzBdLl9nZXRUYWJsZUVsZW1lbnQoKTpiWzBdLmdldEVuY2xvc2VkTm9kZSgpLGQmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHwoQ0tFRElUT1Iud2FybihcInNlbGVjdGlvbi1ub3QtZmFrZVwiKSxhLmlzRmFrZT0wKSk7YS5pc0Zha2UmJiFmKGIpP3RoaXMuZmFrZShkKTp0aGlzLnNlbGVjdFJhbmdlcyhiKTtyZXR1cm4gdGhpc30sZ2V0Q29tbW9uQW5jZXN0b3I6ZnVuY3Rpb24oKXt2YXIgYT1cbnRoaXMuZ2V0UmFuZ2VzKCk7cmV0dXJuIGEubGVuZ3RoP2FbMF0uc3RhcnRDb250YWluZXIuZ2V0Q29tbW9uQW5jZXN0b3IoYVthLmxlbmd0aC0xXS5lbmRDb250YWluZXIpOm51bGx9LHNjcm9sbEludG9WaWV3OmZ1bmN0aW9uKCl7dGhpcy5nZXRUeXBlKCkhPUNLRURJVE9SLlNFTEVDVElPTl9OT05FJiZ0aGlzLmdldFJhbmdlcygpWzBdLnNjcm9sbEludG9WaWV3KCl9LHJlbW92ZUFsbFJhbmdlczpmdW5jdGlvbigpe2lmKHRoaXMuZ2V0VHlwZSgpIT1DS0VESVRPUi5TRUxFQ1RJT05fTk9ORSl7dmFyIGE9dGhpcy5nZXROYXRpdmUoKTt0cnl7YSYmYVt1P1wiZW1wdHlcIjpcInJlbW92ZUFsbFJhbmdlc1wiXSgpfWNhdGNoKGIpe310aGlzLnJlc2V0KCl9fX19KCksXCJ1c2Ugc3RyaWN0XCIsQ0tFRElUT1IuU1RZTEVfQkxPQ0s9MSxDS0VESVRPUi5TVFlMRV9JTkxJTkU9MixDS0VESVRPUi5TVFlMRV9PQkpFQ1Q9MyxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXtmb3IodmFyIGQsYzsoYT1hLmdldFBhcmVudCgpKSYmXG4hYS5lcXVhbHMoYik7KWlmKGEuZ2V0QXR0cmlidXRlKFwiZGF0YS1ub3N0eWxlXCIpKWQ9YTtlbHNlIGlmKCFjKXt2YXIgZz1hLmdldEF0dHJpYnV0ZShcImNvbnRlbnRFZGl0YWJsZVwiKTtcImZhbHNlXCI9PWc/ZD1hOlwidHJ1ZVwiPT1nJiYoYz0xKX1yZXR1cm4gZH1mdW5jdGlvbiBmKGEsYixkLGMpe3JldHVybihhLmdldFBvc2l0aW9uKGIpfGMpPT1jJiYoIWQuY2hpbGRSdWxlfHxkLmNoaWxkUnVsZShhKSl9ZnVuY3Rpb24gZShiKXt2YXIgZD1iLmRvY3VtZW50O2lmKGIuY29sbGFwc2VkKWQ9eih0aGlzLGQpLGIuaW5zZXJ0Tm9kZShkKSxiLm1vdmVUb1Bvc2l0aW9uKGQsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7ZWxzZXt2YXIgZz10aGlzLmVsZW1lbnQsaD10aGlzLl8uZGVmaW5pdGlvbixrLGw9aC5pZ25vcmVSZWFkb25seSxuPWx8fGguaW5jbHVkZVJlYWRvbmx5O251bGw9PW4mJihuPWIucm9vdC5nZXRDdXN0b21EYXRhKFwiY2tlX2luY2x1ZGVSZWFkb25seVwiKSk7dmFyIG09XG5DS0VESVRPUi5kdGRbZ107bXx8KGs9ITAsbT1DS0VESVRPUi5kdGQuc3Bhbik7Yi5lbmxhcmdlKENLRURJVE9SLkVOTEFSR0VfSU5MSU5FLDEpO2IudHJpbSgpO3ZhciB3PWIuY3JlYXRlQm9va21hcmsoKSx2PXcuc3RhcnROb2RlLHE9dy5lbmROb2RlLHQ9dixwO2lmKCFsKXt2YXIgdT1iLmdldENvbW1vbkFuY2VzdG9yKCksbD1hKHYsdSksdT1hKHEsdSk7bCYmKHQ9bC5nZXROZXh0U291cmNlTm9kZSghMCkpO3UmJihxPXUpfWZvcih0LmdldFBvc2l0aW9uKHEpPT1DS0VESVRPUi5QT1NJVElPTl9GT0xMT1dJTkcmJih0PTApO3Q7KXtsPSExO2lmKHQuZXF1YWxzKHEpKXQ9bnVsbCxsPSEwO2Vsc2V7dmFyIHk9dC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQ/dC5nZXROYW1lKCk6bnVsbCx1PXkmJlwiZmFsc2VcIj09dC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIiksQT15JiYtMSE9PUNLRURJVE9SLnRvb2xzLmFycmF5LmluZGV4T2YoQ0tFRElUT1Iuc3R5bGUudW5zdHlsYWJsZUVsZW1lbnRzLFxueSksQT15JiYodC5nZXRBdHRyaWJ1dGUoXCJkYXRhLW5vc3R5bGVcIil8fEEpO2lmKHkmJnQuZGF0YShcImNrZS1ib29rbWFya1wiKXx8dC50eXBlPT09Q0tFRElUT1IuTk9ERV9DT01NRU5UKXt0PXQuZ2V0TmV4dFNvdXJjZU5vZGUoITApO2NvbnRpbnVlfWlmKHUmJm4mJkNLRURJVE9SLmR0ZC4kYmxvY2tbeV0pZm9yKHZhciB4PXQsQj1jKHgpLEM9dm9pZCAwLEQ9Qi5sZW5ndGgsST0wLHg9RCYmbmV3IENLRURJVE9SLmRvbS5yYW5nZSh4LmdldERvY3VtZW50KCkpO0k8RDsrK0kpe3ZhciBDPUJbSV0sZmE9Q0tFRElUT1IuZmlsdGVyLmluc3RhbmNlc1tDLmRhdGEoXCJja2UtZmlsdGVyXCIpXTtpZihmYT9mYS5jaGVjayh0aGlzKToxKXguc2VsZWN0Tm9kZUNvbnRlbnRzKEMpLGUuY2FsbCh0aGlzLHgpfUI9eT8hbVt5XXx8QT8wOnUmJiFuPzA6Zih0LHEsaCxNKToxO2lmKEIpaWYoQz10LmdldFBhcmVudCgpLEI9aCxEPWcsST1rLCFDfHwhKEMuZ2V0RHRkKCl8fENLRURJVE9SLmR0ZC5zcGFuKVtEXSYmXG4hSXx8Qi5wYXJlbnRSdWxlJiYhQi5wYXJlbnRSdWxlKEMpKWw9ITA7ZWxzZXtpZihwfHx5JiZDS0VESVRPUi5kdGQuJHJlbW92ZUVtcHR5W3ldJiYodC5nZXRQb3NpdGlvbihxKXxNKSE9TXx8KHA9Yi5jbG9uZSgpLHAuc2V0U3RhcnRCZWZvcmUodCkpLHk9dC50eXBlLHk9PUNLRURJVE9SLk5PREVfVEVYVHx8dXx8eT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYhdC5nZXRDaGlsZENvdW50KCkpe2Zvcih2YXIgeT10LFI7KGw9IXkuZ2V0TmV4dChLKSkmJihSPXkuZ2V0UGFyZW50KCksbVtSLmdldE5hbWUoKV0pJiZmKFIsdixoLEgpOyl5PVI7cC5zZXRFbmRBZnRlcih5KX19ZWxzZSBsPSEwO3Q9dC5nZXROZXh0U291cmNlTm9kZShBfHx1KX1pZihsJiZwJiYhcC5jb2xsYXBzZWQpe2Zvcih2YXIgbD16KHRoaXMsZCksdT1sLmhhc0F0dHJpYnV0ZXMoKSxBPXAuZ2V0Q29tbW9uQW5jZXN0b3IoKSx5PXt9LEI9e30sQz17fSxEPXt9LGJhLFcsZGE7bCYmQTspe2lmKEEuZ2V0TmFtZSgpPT1cbmcpe2ZvcihiYSBpbiBoLmF0dHJpYnV0ZXMpIURbYmFdJiYoZGE9QS5nZXRBdHRyaWJ1dGUoVykpJiYobC5nZXRBdHRyaWJ1dGUoYmEpPT1kYT9CW2JhXT0xOkRbYmFdPTEpO2ZvcihXIGluIGguc3R5bGVzKSFDW1ddJiYoZGE9QS5nZXRTdHlsZShXKSkmJihsLmdldFN0eWxlKFcpPT1kYT95W1ddPTE6Q1tXXT0xKX1BPUEuZ2V0UGFyZW50KCl9Zm9yKGJhIGluIEIpbC5yZW1vdmVBdHRyaWJ1dGUoYmEpO2ZvcihXIGluIHkpbC5yZW1vdmVTdHlsZShXKTt1JiYhbC5oYXNBdHRyaWJ1dGVzKCkmJihsPW51bGwpO2w/KHAuZXh0cmFjdENvbnRlbnRzKCkuYXBwZW5kVG8obCkscC5pbnNlcnROb2RlKGwpLHIuY2FsbCh0aGlzLGwpLGwubWVyZ2VTaWJsaW5ncygpLENLRURJVE9SLmVudi5pZXx8bC4kLm5vcm1hbGl6ZSgpKToobD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJzcGFuXCIpLHAuZXh0cmFjdENvbnRlbnRzKCkuYXBwZW5kVG8obCkscC5pbnNlcnROb2RlKGwpLHIuY2FsbCh0aGlzLFxubCksbC5yZW1vdmUoITApKTtwPW51bGx9fWIubW92ZVRvQm9va21hcmsodyk7Yi5zaHJpbmsoQ0tFRElUT1IuU0hSSU5LX1RFWFQpO2Iuc2hyaW5rKENLRURJVE9SLk5PREVfRUxFTUVOVCwhMCl9fWZ1bmN0aW9uIGIoYSl7ZnVuY3Rpb24gYigpe2Zvcih2YXIgYT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGMuZ2V0UGFyZW50KCkpLGQ9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChuLmdldFBhcmVudCgpKSxnPW51bGwsZT1udWxsLGg9MDtoPGEuZWxlbWVudHMubGVuZ3RoO2grKyl7dmFyIGY9YS5lbGVtZW50c1toXTtpZihmPT1hLmJsb2NrfHxmPT1hLmJsb2NrTGltaXQpYnJlYWs7bS5jaGVja0VsZW1lbnRSZW1vdmFibGUoZiwhMCkmJihnPWYpfWZvcihoPTA7aDxkLmVsZW1lbnRzLmxlbmd0aDtoKyspe2Y9ZC5lbGVtZW50c1toXTtpZihmPT1kLmJsb2NrfHxmPT1kLmJsb2NrTGltaXQpYnJlYWs7bS5jaGVja0VsZW1lbnRSZW1vdmFibGUoZiwhMCkmJihlPWYpfWUmJlxubi5icmVha1BhcmVudChlKTtnJiZjLmJyZWFrUGFyZW50KGcpfWEuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0lOTElORSwxKTt2YXIgZD1hLmNyZWF0ZUJvb2ttYXJrKCksYz1kLnN0YXJ0Tm9kZSxnPXRoaXMuXy5kZWZpbml0aW9uLmFsd2F5c1JlbW92ZUVsZW1lbnQ7aWYoYS5jb2xsYXBzZWQpe2Zvcih2YXIgZT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGMuZ2V0UGFyZW50KCksYS5yb290KSxoLGY9MCxrO2Y8ZS5lbGVtZW50cy5sZW5ndGgmJihrPWUuZWxlbWVudHNbZl0pJiZrIT1lLmJsb2NrJiZrIT1lLmJsb2NrTGltaXQ7ZisrKWlmKHRoaXMuY2hlY2tFbGVtZW50UmVtb3ZhYmxlKGspKXt2YXIgbDshZyYmYS5jb2xsYXBzZWQmJihhLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoayxDS0VESVRPUi5FTkQpfHwobD1hLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoayxDS0VESVRPUi5TVEFSVCkpKT8oaD1rLGgubWF0Y2g9bD9cInN0YXJ0XCI6XCJlbmRcIik6KGsubWVyZ2VTaWJsaW5ncygpLFxuay5pcyh0aGlzLmVsZW1lbnQpP3guY2FsbCh0aGlzLGspOnAoayx5KHRoaXMpW2suZ2V0TmFtZSgpXSkpfWlmKGgpe2c9Yztmb3IoZj0wOztmKyspe2s9ZS5lbGVtZW50c1tmXTtpZihrLmVxdWFscyhoKSlicmVhaztlbHNlIGlmKGsubWF0Y2gpY29udGludWU7ZWxzZSBrPWsuY2xvbmUoKTtrLmFwcGVuZChnKTtnPWt9Z1tcInN0YXJ0XCI9PWgubWF0Y2g/XCJpbnNlcnRCZWZvcmVcIjpcImluc2VydEFmdGVyXCJdKGgpfX1lbHNle3ZhciBuPWQuZW5kTm9kZSxtPXRoaXM7YigpO2ZvcihlPWM7IWUuZXF1YWxzKG4pOyloPWUuZ2V0TmV4dFNvdXJjZU5vZGUoKSxlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmdGhpcy5jaGVja0VsZW1lbnRSZW1vdmFibGUoZSkmJihlLmdldE5hbWUoKT09dGhpcy5lbGVtZW50P3guY2FsbCh0aGlzLGUpOnAoZSx5KHRoaXMpW2UuZ2V0TmFtZSgpXSksaC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmguY29udGFpbnMoYykmJihiKCksaD1jLmdldE5leHQoKSkpLFxuZT1ofWEubW92ZVRvQm9va21hcmsoZCk7YS5zaHJpbmsoQ0tFRElUT1IuTk9ERV9FTEVNRU5ULCEwKX1mdW5jdGlvbiBjKGEpe3ZhciBiPVtdO2EuZm9yRWFjaChmdW5jdGlvbihhKXtpZihcInRydWVcIj09YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpcmV0dXJuIGIucHVzaChhKSwhMX0sQ0tFRElUT1IuTk9ERV9FTEVNRU5ULCEwKTtyZXR1cm4gYn1mdW5jdGlvbiBrKGEpe3ZhciBiPWEuZ2V0RW5jbG9zZWROb2RlKCl8fGEuZ2V0Q29tbW9uQW5jZXN0b3IoITEsITApOyhhPShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGIsYS5yb290KSkuY29udGFpbnModGhpcy5lbGVtZW50LDEpKSYmIWEuaXNSZWFkT25seSgpJiZxKGEsdGhpcyl9ZnVuY3Rpb24gbChhKXt2YXIgYj1hLmdldENvbW1vbkFuY2VzdG9yKCEwLCEwKTtpZihhPShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGIsYS5yb290KSkuY29udGFpbnModGhpcy5lbGVtZW50LDEpKXt2YXIgYj10aGlzLl8uZGVmaW5pdGlvbixcbmQ9Yi5hdHRyaWJ1dGVzO2lmKGQpZm9yKHZhciBjIGluIGQpYS5yZW1vdmVBdHRyaWJ1dGUoYyxkW2NdKTtpZihiLnN0eWxlcylmb3IodmFyIGcgaW4gYi5zdHlsZXMpYi5zdHlsZXMuaGFzT3duUHJvcGVydHkoZykmJmEucmVtb3ZlU3R5bGUoZyl9fWZ1bmN0aW9uIG0oYSl7dmFyIGI9YS5jcmVhdGVCb29rbWFyayghMCksZD1hLmNyZWF0ZUl0ZXJhdG9yKCk7ZC5lbmZvcmNlUmVhbEJsb2Nrcz0hMDt0aGlzLl8uZW50ZXJNb2RlJiYoZC5lbmxhcmdlQnI9dGhpcy5fLmVudGVyTW9kZSE9Q0tFRElUT1IuRU5URVJfQlIpO2Zvcih2YXIgYyxnPWEuZG9jdW1lbnQsZTtjPWQuZ2V0TmV4dFBhcmFncmFwaCgpOykhYy5pc1JlYWRPbmx5KCkmJihkLmFjdGl2ZUZpbHRlcj9kLmFjdGl2ZUZpbHRlci5jaGVjayh0aGlzKToxKSYmKGU9eih0aGlzLGcsYyksaChjLGUpKTthLm1vdmVUb0Jvb2ttYXJrKGIpfWZ1bmN0aW9uIGQoYSl7dmFyIGI9YS5jcmVhdGVCb29rbWFyaygxKSxkPWEuY3JlYXRlSXRlcmF0b3IoKTtcbmQuZW5mb3JjZVJlYWxCbG9ja3M9ITA7ZC5lbmxhcmdlQnI9dGhpcy5fLmVudGVyTW9kZSE9Q0tFRElUT1IuRU5URVJfQlI7Zm9yKHZhciBjLGc7Yz1kLmdldE5leHRQYXJhZ3JhcGgoKTspdGhpcy5jaGVja0VsZW1lbnRSZW1vdmFibGUoYykmJihjLmlzKFwicHJlXCIpPygoZz10aGlzLl8uZW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9CUj9udWxsOmEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh0aGlzLl8uZW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9QP1wicFwiOlwiZGl2XCIpKSYmYy5jb3B5QXR0cmlidXRlcyhnKSxoKGMsZykpOnguY2FsbCh0aGlzLGMpKTthLm1vdmVUb0Jvb2ttYXJrKGIpfWZ1bmN0aW9uIGgoYSxiKXt2YXIgZD0hYjtkJiYoYj1hLmdldERvY3VtZW50KCkuY3JlYXRlRWxlbWVudChcImRpdlwiKSxhLmNvcHlBdHRyaWJ1dGVzKGIpKTt2YXIgYz1iJiZiLmlzKFwicHJlXCIpLGU9YS5pcyhcInByZVwiKSxoPSFjJiZlO2lmKGMmJiFlKXtlPWI7KGg9YS5nZXRCb2d1cygpKSYmaC5yZW1vdmUoKTtcbmg9YS5nZXRIdG1sKCk7aD1uKGgsLyg/Ol5bIFxcdFxcblxccl0rKXwoPzpbIFxcdFxcblxccl0rJCkvZyxcIlwiKTtoPWgucmVwbGFjZSgvWyBcXHRcXHJcXG5dKig8YnJbXj5dKj4pWyBcXHRcXHJcXG5dKi9naSxcIiQxXCIpO2g9aC5yZXBsYWNlKC8oWyBcXHRcXG5cXHJdK3wmbmJzcDspL2csXCIgXCIpO2g9aC5yZXBsYWNlKC88YnJcXGJbXj5dKj4vZ2ksXCJcXG5cIik7aWYoQ0tFRElUT1IuZW52LmllKXt2YXIgZj1hLmdldERvY3VtZW50KCkuY3JlYXRlRWxlbWVudChcImRpdlwiKTtmLmFwcGVuZChlKTtlLiQub3V0ZXJIVE1MPVwiXFx4M2NwcmVcXHgzZVwiK2grXCJcXHgzYy9wcmVcXHgzZVwiO2UuY29weUF0dHJpYnV0ZXMoZi5nZXRGaXJzdCgpKTtlPWYuZ2V0Rmlyc3QoKS5yZW1vdmUoKX1lbHNlIGUuc2V0SHRtbChoKTtiPWV9ZWxzZSBoP2I9dyhkP1thLmdldEh0bWwoKV06ZyhhKSxiKTphLm1vdmVDaGlsZHJlbihiKTtiLnJlcGxhY2UoYSk7aWYoYyl7dmFyIGQ9YixrOyhrPWQuZ2V0UHJldmlvdXMoRykpJiZrLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXG5rLmlzKFwicHJlXCIpJiYoYz1uKGsuZ2V0SHRtbCgpLC9cXG4kLyxcIlwiKStcIlxcblxcblwiK24oZC5nZXRIdG1sKCksL15cXG4vLFwiXCIpLENLRURJVE9SLmVudi5pZT9kLiQub3V0ZXJIVE1MPVwiXFx4M2NwcmVcXHgzZVwiK2MrXCJcXHgzYy9wcmVcXHgzZVwiOmQuc2V0SHRtbChjKSxrLnJlbW92ZSgpKX1lbHNlIGQmJnUoYil9ZnVuY3Rpb24gZyhhKXt2YXIgYj1bXTtuKGEuZ2V0T3V0ZXJIdG1sKCksLyhcXFNcXHMqKVxcbig/Olxcc3woPHNwYW5bXj5dK2RhdGEtY2tlLWJvb2ttYXJrLio/XFwvc3Bhbj4pKSpcXG4oPyEkKS9naSxmdW5jdGlvbihhLGIsZCl7cmV0dXJuIGIrXCJcXHgzYy9wcmVcXHgzZVwiK2QrXCJcXHgzY3ByZVxceDNlXCJ9KS5yZXBsYWNlKC88cHJlXFxiLio/PihbXFxzXFxTXSo/KTxcXC9wcmU+L2dpLGZ1bmN0aW9uKGEsZCl7Yi5wdXNoKGQpfSk7cmV0dXJuIGJ9ZnVuY3Rpb24gbihhLGIsZCl7dmFyIGM9XCJcIixnPVwiXCI7YT1hLnJlcGxhY2UoLyhePHNwYW5bXj5dK2RhdGEtY2tlLWJvb2ttYXJrLio/XFwvc3Bhbj4pfCg8c3BhbltePl0rZGF0YS1ja2UtYm9va21hcmsuKj9cXC9zcGFuPiQpL2dpLFxuZnVuY3Rpb24oYSxiLGQpe2ImJihjPWIpO2QmJihnPWQpO3JldHVyblwiXCJ9KTtyZXR1cm4gYythLnJlcGxhY2UoYixkKStnfWZ1bmN0aW9uIHcoYSxiKXt2YXIgZDsxPGEubGVuZ3RoJiYoZD1uZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQoYi5nZXREb2N1bWVudCgpKSk7Zm9yKHZhciBjPTA7YzxhLmxlbmd0aDtjKyspe3ZhciBnPWFbY10sZz1nLnJlcGxhY2UoLyhcXHJcXG58XFxyKS9nLFwiXFxuXCIpLGc9bihnLC9eWyBcXHRdKlxcbi8sXCJcIiksZz1uKGcsL1xcbiQvLFwiXCIpLGc9bihnLC9eWyBcXHRdK3xbIFxcdF0rJC9nLGZ1bmN0aW9uKGEsYil7cmV0dXJuIDE9PWEubGVuZ3RoP1wiXFx4MjZuYnNwO1wiOmI/XCIgXCIrQ0tFRElUT1IudG9vbHMucmVwZWF0KFwiXFx4MjZuYnNwO1wiLGEubGVuZ3RoLTEpOkNLRURJVE9SLnRvb2xzLnJlcGVhdChcIlxceDI2bmJzcDtcIixhLmxlbmd0aC0xKStcIiBcIn0pLGc9Zy5yZXBsYWNlKC9cXG4vZyxcIlxceDNjYnJcXHgzZVwiKSxnPWcucmVwbGFjZSgvWyBcXHRdezIsfS9nLGZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5yZXBlYXQoXCJcXHgyNm5ic3A7XCIsXG5hLmxlbmd0aC0xKStcIiBcIn0pO2lmKGQpe3ZhciBlPWIuY2xvbmUoKTtlLnNldEh0bWwoZyk7ZC5hcHBlbmQoZSl9ZWxzZSBiLnNldEh0bWwoZyl9cmV0dXJuIGR8fGJ9ZnVuY3Rpb24geChhLGIpe3ZhciBkPXRoaXMuXy5kZWZpbml0aW9uLGM9ZC5hdHRyaWJ1dGVzLGQ9ZC5zdHlsZXMsZz15KHRoaXMpW2EuZ2V0TmFtZSgpXSxlPUNLRURJVE9SLnRvb2xzLmlzRW1wdHkoYykmJkNLRURJVE9SLnRvb2xzLmlzRW1wdHkoZCksaDtmb3IoaCBpbiBjKWlmKFwiY2xhc3NcIiE9aCYmIXRoaXMuXy5kZWZpbml0aW9uLmZ1bGxNYXRjaHx8YS5nZXRBdHRyaWJ1dGUoaCk9PXQoaCxjW2hdKSliJiZcImRhdGEtXCI9PWguc2xpY2UoMCw1KXx8KGU9YS5oYXNBdHRyaWJ1dGUoaCksYS5yZW1vdmVBdHRyaWJ1dGUoaCkpO2Zvcih2YXIgZiBpbiBkKXRoaXMuXy5kZWZpbml0aW9uLmZ1bGxNYXRjaCYmYS5nZXRTdHlsZShmKSE9dChmLGRbZl0sITApfHwoZT1lfHwhIWEuZ2V0U3R5bGUoZiksYS5yZW1vdmVTdHlsZShmKSk7XG5wKGEsZyxEW2EuZ2V0TmFtZSgpXSk7ZSYmKHRoaXMuXy5kZWZpbml0aW9uLmFsd2F5c1JlbW92ZUVsZW1lbnQ/dShhLDEpOiFDS0VESVRPUi5kdGQuJGJsb2NrW2EuZ2V0TmFtZSgpXXx8dGhpcy5fLmVudGVyTW9kZT09Q0tFRElUT1IuRU5URVJfQlImJiFhLmhhc0F0dHJpYnV0ZXMoKT91KGEpOmEucmVuYW1lTm9kZSh0aGlzLl8uZW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9QP1wicFwiOlwiZGl2XCIpKX1mdW5jdGlvbiByKGEpe2Zvcih2YXIgYj15KHRoaXMpLGQ9YS5nZXRFbGVtZW50c0J5VGFnKHRoaXMuZWxlbWVudCksYyxnPWQuY291bnQoKTswPD0tLWc7KWM9ZC5nZXRJdGVtKGcpLGMuaXNSZWFkT25seSgpfHx4LmNhbGwodGhpcyxjLCEwKTtmb3IodmFyIGUgaW4gYilpZihlIT10aGlzLmVsZW1lbnQpZm9yKGQ9YS5nZXRFbGVtZW50c0J5VGFnKGUpLGc9ZC5jb3VudCgpLTE7MDw9ZztnLS0pYz1kLmdldEl0ZW0oZyksYy5pc1JlYWRPbmx5KCl8fHAoYyxiW2VdKX1mdW5jdGlvbiBwKGEsXG5iLGQpe2lmKGI9YiYmYi5hdHRyaWJ1dGVzKWZvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZz1iW2NdWzBdLGU7aWYoZT1hLmdldEF0dHJpYnV0ZShnKSl7dmFyIGg9YltjXVsxXTsobnVsbD09PWh8fGgudGVzdCYmaC50ZXN0KGUpfHxcInN0cmluZ1wiPT10eXBlb2YgaCYmZT09aCkmJmEucmVtb3ZlQXR0cmlidXRlKGcpfX1kfHx1KGEpfWZ1bmN0aW9uIHUoYSxiKXtpZighYS5oYXNBdHRyaWJ1dGVzKCl8fGIpaWYoQ0tFRElUT1IuZHRkLiRibG9ja1thLmdldE5hbWUoKV0pe3ZhciBkPWEuZ2V0UHJldmlvdXMoRyksYz1hLmdldE5leHQoRyk7IWR8fGQudHlwZSE9Q0tFRElUT1IuTk9ERV9URVhUJiZkLmlzQmxvY2tCb3VuZGFyeSh7YnI6MX0pfHxhLmFwcGVuZChcImJyXCIsMSk7IWN8fGMudHlwZSE9Q0tFRElUT1IuTk9ERV9URVhUJiZjLmlzQmxvY2tCb3VuZGFyeSh7YnI6MX0pfHxhLmFwcGVuZChcImJyXCIpO2EucmVtb3ZlKCEwKX1lbHNlIGQ9YS5nZXRGaXJzdCgpLGM9YS5nZXRMYXN0KCksXG5hLnJlbW92ZSghMCksZCYmKGQudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZkLm1lcmdlU2libGluZ3MoKSxjJiYhZC5lcXVhbHMoYykmJmMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZjLm1lcmdlU2libGluZ3MoKSl9ZnVuY3Rpb24geihhLGIsZCl7dmFyIGM7Yz1hLmVsZW1lbnQ7XCIqXCI9PWMmJihjPVwic3BhblwiKTtjPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChjLGIpO2QmJmQuY29weUF0dHJpYnV0ZXMoYyk7Yz1xKGMsYSk7Yi5nZXRDdXN0b21EYXRhKFwiZG9jX3Byb2Nlc3Npbmdfc3R5bGVcIikmJmMuaGFzQXR0cmlidXRlKFwiaWRcIik/Yy5yZW1vdmVBdHRyaWJ1dGUoXCJpZFwiKTpiLnNldEN1c3RvbURhdGEoXCJkb2NfcHJvY2Vzc2luZ19zdHlsZVwiLDEpO3JldHVybiBjfWZ1bmN0aW9uIHEoYSxiKXt2YXIgZD1iLl8uZGVmaW5pdGlvbixjPWQuYXR0cmlidXRlcyxkPUNLRURJVE9SLnN0eWxlLmdldFN0eWxlVGV4dChkKTtpZihjKWZvcih2YXIgZyBpbiBjKWEuc2V0QXR0cmlidXRlKGcsXG5jW2ddKTtkJiZhLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsZCk7YS5nZXREb2N1bWVudCgpLnJlbW92ZUN1c3RvbURhdGEoXCJkb2NfcHJvY2Vzc2luZ19zdHlsZVwiKTtyZXR1cm4gYX1mdW5jdGlvbiBBKGEsYil7Zm9yKHZhciBkIGluIGEpYVtkXT1hW2RdLnJlcGxhY2UoSixmdW5jdGlvbihhLGQpe3JldHVybiBiW2RdfSl9ZnVuY3Rpb24geShhKXtpZihhLl8ub3ZlcnJpZGVzKXJldHVybiBhLl8ub3ZlcnJpZGVzO3ZhciBiPWEuXy5vdmVycmlkZXM9e30sZD1hLl8uZGVmaW5pdGlvbi5vdmVycmlkZXM7aWYoZCl7Q0tFRElUT1IudG9vbHMuaXNBcnJheShkKXx8KGQ9W2RdKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIGc9ZFtjXSxlLGg7XCJzdHJpbmdcIj09dHlwZW9mIGc/ZT1nLnRvTG93ZXJDYXNlKCk6KGU9Zy5lbGVtZW50P2cuZWxlbWVudC50b0xvd2VyQ2FzZSgpOmEuZWxlbWVudCxoPWcuYXR0cmlidXRlcyk7Zz1iW2VdfHwoYltlXT17fSk7aWYoaCl7dmFyIGc9Zy5hdHRyaWJ1dGVzPVxuZy5hdHRyaWJ1dGVzfHxbXSxmO2ZvcihmIGluIGgpZy5wdXNoKFtmLnRvTG93ZXJDYXNlKCksaFtmXV0pfX19cmV0dXJuIGJ9ZnVuY3Rpb24gdChhLGIsZCl7dmFyIGM9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KFwic3BhblwiKTtjW2Q/XCJzZXRTdHlsZVwiOlwic2V0QXR0cmlidXRlXCJdKGEsYik7cmV0dXJuIGNbZD9cImdldFN0eWxlXCI6XCJnZXRBdHRyaWJ1dGVcIl0oYSl9ZnVuY3Rpb24gdihhLGIpe2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm5cImZvbnQtZmFtaWx5XCI9PWIudG9Mb3dlckNhc2UoKT9hLnJlcGxhY2UoL1tcIiddL2csXCJcIik6YX1cInN0cmluZ1wiPT10eXBlb2YgYSYmKGE9Q0tFRElUT1IudG9vbHMucGFyc2VDc3NUZXh0KGEpKTtcInN0cmluZ1wiPT10eXBlb2YgYiYmKGI9Q0tFRElUT1IudG9vbHMucGFyc2VDc3NUZXh0KGIsITApKTtmb3IodmFyIGMgaW4gYSlpZighKGMgaW4gYil8fGQoYltjXSxjKSE9ZChhW2NdLGMpJiZcImluaGVyaXRcIiE9YVtjXSYmXCJpbmhlcml0XCIhPWJbY10pcmV0dXJuITE7XG5yZXR1cm4hMH1mdW5jdGlvbiBCKGEsYixkKXt2YXIgYz1hLmdldFJhbmdlcygpO2I9Yj90aGlzLnJlbW92ZUZyb21SYW5nZTp0aGlzLmFwcGx5VG9SYW5nZTtmb3IodmFyIGcsZT1jLmNyZWF0ZUl0ZXJhdG9yKCk7Zz1lLmdldE5leHRSYW5nZSgpOyliLmNhbGwodGhpcyxnLGQpO2Euc2VsZWN0UmFuZ2VzKGMpfXZhciBEPXthZGRyZXNzOjEsZGl2OjEsaDE6MSxoMjoxLGgzOjEsaDQ6MSxoNToxLGg2OjEscDoxLHByZToxLHNlY3Rpb246MSxoZWFkZXI6MSxmb290ZXI6MSxuYXY6MSxhcnRpY2xlOjEsYXNpZGU6MSxmaWd1cmU6MSxkaWFsb2c6MSxoZ3JvdXA6MSx0aW1lOjEsbWV0ZXI6MSxtZW51OjEsY29tbWFuZDoxLGtleWdlbjoxLG91dHB1dDoxLHByb2dyZXNzOjEsZGV0YWlsczoxLGRhdGFncmlkOjEsZGF0YWxpc3Q6MX0sQz17YToxLGJsb2NrcXVvdGU6MSxlbWJlZDoxLGhyOjEsaW1nOjEsbGk6MSxvYmplY3Q6MSxvbDoxLHRhYmxlOjEsdGQ6MSx0cjoxLHRoOjEsdWw6MSxkbDoxLFxuZHQ6MSxkZDoxLGZvcm06MSxhdWRpbzoxLHZpZGVvOjF9LEY9L1xccyooPzo7XFxzKnwkKS8sSj0vI1xcKCguKz8pXFwpL2csSz1DS0VESVRPUi5kb20ud2Fsa2VyLmJvb2ttYXJrKDAsMSksRz1DS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKDEpO0NLRURJVE9SLnN0eWxlPWZ1bmN0aW9uKGEsYil7aWYoXCJzdHJpbmdcIj09dHlwZW9mIGEudHlwZSlyZXR1cm4gbmV3IENLRURJVE9SLnN0eWxlLmN1c3RvbUhhbmRsZXJzW2EudHlwZV0oYSk7dmFyIGQ9YS5hdHRyaWJ1dGVzO2QmJmQuc3R5bGUmJihhLnN0eWxlcz1DS0VESVRPUi50b29scy5leHRlbmQoe30sYS5zdHlsZXMsQ0tFRElUT1IudG9vbHMucGFyc2VDc3NUZXh0KGQuc3R5bGUpKSxkZWxldGUgZC5zdHlsZSk7YiYmKGE9Q0tFRElUT1IudG9vbHMuY2xvbmUoYSksQShhLmF0dHJpYnV0ZXMsYiksQShhLnN0eWxlcyxiKSk7ZD10aGlzLmVsZW1lbnQ9YS5lbGVtZW50P1wic3RyaW5nXCI9PXR5cGVvZiBhLmVsZW1lbnQ/YS5lbGVtZW50LnRvTG93ZXJDYXNlKCk6XG5hLmVsZW1lbnQ6XCIqXCI7dGhpcy50eXBlPWEudHlwZXx8KERbZF0/Q0tFRElUT1IuU1RZTEVfQkxPQ0s6Q1tkXT9DS0VESVRPUi5TVFlMRV9PQkpFQ1Q6Q0tFRElUT1IuU1RZTEVfSU5MSU5FKTtcIm9iamVjdFwiPT10eXBlb2YgdGhpcy5lbGVtZW50JiYodGhpcy50eXBlPUNLRURJVE9SLlNUWUxFX09CSkVDVCk7dGhpcy5fPXtkZWZpbml0aW9uOmF9fTtDS0VESVRPUi5zdHlsZS5wcm90b3R5cGU9e2FwcGx5OmZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uZG9jdW1lbnQpcmV0dXJuIEIuY2FsbCh0aGlzLGEuZ2V0U2VsZWN0aW9uKCkpO2lmKHRoaXMuY2hlY2tBcHBsaWNhYmxlKGEuZWxlbWVudFBhdGgoKSxhKSl7dmFyIGI9dGhpcy5fLmVudGVyTW9kZTtifHwodGhpcy5fLmVudGVyTW9kZT1hLmFjdGl2ZUVudGVyTW9kZSk7Qi5jYWxsKHRoaXMsYS5nZXRTZWxlY3Rpb24oKSwwLGEpO3RoaXMuXy5lbnRlck1vZGU9Yn19LHJlbW92ZTpmdW5jdGlvbihhKXtpZihhIGluc3RhbmNlb2ZcbkNLRURJVE9SLmRvbS5kb2N1bWVudClyZXR1cm4gQi5jYWxsKHRoaXMsYS5nZXRTZWxlY3Rpb24oKSwxKTtpZih0aGlzLmNoZWNrQXBwbGljYWJsZShhLmVsZW1lbnRQYXRoKCksYSkpe3ZhciBiPXRoaXMuXy5lbnRlck1vZGU7Ynx8KHRoaXMuXy5lbnRlck1vZGU9YS5hY3RpdmVFbnRlck1vZGUpO0IuY2FsbCh0aGlzLGEuZ2V0U2VsZWN0aW9uKCksMSxhKTt0aGlzLl8uZW50ZXJNb2RlPWJ9fSxhcHBseVRvUmFuZ2U6ZnVuY3Rpb24oYSl7dGhpcy5hcHBseVRvUmFuZ2U9dGhpcy50eXBlPT1DS0VESVRPUi5TVFlMRV9JTkxJTkU/ZTp0aGlzLnR5cGU9PUNLRURJVE9SLlNUWUxFX0JMT0NLP206dGhpcy50eXBlPT1DS0VESVRPUi5TVFlMRV9PQkpFQ1Q/azpudWxsO3JldHVybiB0aGlzLmFwcGx5VG9SYW5nZShhKX0scmVtb3ZlRnJvbVJhbmdlOmZ1bmN0aW9uKGEpe3RoaXMucmVtb3ZlRnJvbVJhbmdlPXRoaXMudHlwZT09Q0tFRElUT1IuU1RZTEVfSU5MSU5FP2I6dGhpcy50eXBlPT1DS0VESVRPUi5TVFlMRV9CTE9DSz9cbmQ6dGhpcy50eXBlPT1DS0VESVRPUi5TVFlMRV9PQkpFQ1Q/bDpudWxsO3JldHVybiB0aGlzLnJlbW92ZUZyb21SYW5nZShhKX0sYXBwbHlUb09iamVjdDpmdW5jdGlvbihhKXtxKGEsdGhpcyl9LGNoZWNrQWN0aXZlOmZ1bmN0aW9uKGEsYil7c3dpdGNoKHRoaXMudHlwZSl7Y2FzZSBDS0VESVRPUi5TVFlMRV9CTE9DSzpyZXR1cm4gdGhpcy5jaGVja0VsZW1lbnRSZW1vdmFibGUoYS5ibG9ja3x8YS5ibG9ja0xpbWl0LCEwLGIpO2Nhc2UgQ0tFRElUT1IuU1RZTEVfT0JKRUNUOmNhc2UgQ0tFRElUT1IuU1RZTEVfSU5MSU5FOmZvcih2YXIgZD1hLmVsZW1lbnRzLGM9MCxnO2M8ZC5sZW5ndGg7YysrKWlmKGc9ZFtjXSx0aGlzLnR5cGUhPUNLRURJVE9SLlNUWUxFX0lOTElORXx8ZyE9YS5ibG9jayYmZyE9YS5ibG9ja0xpbWl0KXtpZih0aGlzLnR5cGU9PUNLRURJVE9SLlNUWUxFX09CSkVDVCl7dmFyIGU9Zy5nZXROYW1lKCk7aWYoIShcInN0cmluZ1wiPT10eXBlb2YgdGhpcy5lbGVtZW50P1xuZT09dGhpcy5lbGVtZW50OmUgaW4gdGhpcy5lbGVtZW50KSljb250aW51ZX1pZih0aGlzLmNoZWNrRWxlbWVudFJlbW92YWJsZShnLCEwLGIpKXJldHVybiEwfX1yZXR1cm4hMX0sY2hlY2tBcHBsaWNhYmxlOmZ1bmN0aW9uKGEsYixkKXtiJiZiIGluc3RhbmNlb2YgQ0tFRElUT1IuZmlsdGVyJiYoZD1iKTtpZihkJiYhZC5jaGVjayh0aGlzKSlyZXR1cm4hMTtzd2l0Y2godGhpcy50eXBlKXtjYXNlIENLRURJVE9SLlNUWUxFX09CSkVDVDpyZXR1cm4hIWEuY29udGFpbnModGhpcy5lbGVtZW50KTtjYXNlIENLRURJVE9SLlNUWUxFX0JMT0NLOnJldHVybiEhYS5ibG9ja0xpbWl0LmdldER0ZCgpW3RoaXMuZWxlbWVudF19cmV0dXJuITB9LGNoZWNrRWxlbWVudE1hdGNoOmZ1bmN0aW9uKGEsYil7dmFyIGQ9dGhpcy5fLmRlZmluaXRpb247aWYoIWF8fCFkLmlnbm9yZVJlYWRvbmx5JiZhLmlzUmVhZE9ubHkoKSlyZXR1cm4hMTt2YXIgYz1hLmdldE5hbWUoKTtpZihcInN0cmluZ1wiPT10eXBlb2YgdGhpcy5lbGVtZW50P1xuYz09dGhpcy5lbGVtZW50OmMgaW4gdGhpcy5lbGVtZW50KXtpZighYiYmIWEuaGFzQXR0cmlidXRlcygpKXJldHVybiEwO2lmKGM9ZC5fQUMpZD1jO2Vsc2V7dmFyIGM9e30sZz0wLGU9ZC5hdHRyaWJ1dGVzO2lmKGUpZm9yKHZhciBoIGluIGUpZysrLGNbaF09ZVtoXTtpZihoPUNLRURJVE9SLnN0eWxlLmdldFN0eWxlVGV4dChkKSljLnN0eWxlfHxnKyssYy5zdHlsZT1oO2MuX2xlbmd0aD1nO2Q9ZC5fQUM9Y31pZihkLl9sZW5ndGgpe2Zvcih2YXIgZiBpbiBkKWlmKFwiX2xlbmd0aFwiIT1mKWlmKGM9YS5nZXRBdHRyaWJ1dGUoZil8fFwiXCIsXCJzdHlsZVwiPT1mP3YoZFtmXSxjKTpkW2ZdPT1jKXtpZighYilyZXR1cm4hMH1lbHNlIGlmKGIpcmV0dXJuITE7aWYoYilyZXR1cm4hMH1lbHNlIHJldHVybiEwfXJldHVybiExfSxjaGVja0VsZW1lbnRSZW1vdmFibGU6ZnVuY3Rpb24oYSxiLGQpe2lmKHRoaXMuY2hlY2tFbGVtZW50TWF0Y2goYSxiLGQpKXJldHVybiEwO2lmKGI9eSh0aGlzKVthLmdldE5hbWUoKV0pe3ZhciBjO1xuaWYoIShiPWIuYXR0cmlidXRlcykpcmV0dXJuITA7Zm9yKGQ9MDtkPGIubGVuZ3RoO2QrKylpZihjPWJbZF1bMF0sYz1hLmdldEF0dHJpYnV0ZShjKSl7dmFyIGc9YltkXVsxXTtpZihudWxsPT09ZylyZXR1cm4hMDtpZihcInN0cmluZ1wiPT10eXBlb2YgZyl7aWYoYz09ZylyZXR1cm4hMH1lbHNlIGlmKGcudGVzdChjKSlyZXR1cm4hMH19cmV0dXJuITF9LGJ1aWxkUHJldmlldzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl8uZGVmaW5pdGlvbixkPVtdLGM9Yi5lbGVtZW50O1wiYmRvXCI9PWMmJihjPVwic3BhblwiKTt2YXIgZD1bXCJcXHgzY1wiLGNdLGc9Yi5hdHRyaWJ1dGVzO2lmKGcpZm9yKHZhciBlIGluIGcpZC5wdXNoKFwiIFwiLGUsJ1xceDNkXCInLGdbZV0sJ1wiJyk7KGc9Q0tFRElUT1Iuc3R5bGUuZ2V0U3R5bGVUZXh0KGIpKSYmZC5wdXNoKCcgc3R5bGVcXHgzZFwiJyxnLCdcIicpO2QucHVzaChcIlxceDNlXCIsYXx8Yi5uYW1lLFwiXFx4M2MvXCIsYyxcIlxceDNlXCIpO3JldHVybiBkLmpvaW4oXCJcIil9LGdldERlZmluaXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmRlZmluaXRpb259fTtcbkNLRURJVE9SLnN0eWxlLmdldFN0eWxlVGV4dD1mdW5jdGlvbihhKXt2YXIgYj1hLl9TVDtpZihiKXJldHVybiBiO3ZhciBiPWEuc3R5bGVzLGQ9YS5hdHRyaWJ1dGVzJiZhLmF0dHJpYnV0ZXMuc3R5bGV8fFwiXCIsYz1cIlwiO2QubGVuZ3RoJiYoZD1kLnJlcGxhY2UoRixcIjtcIikpO2Zvcih2YXIgZyBpbiBiKXt2YXIgZT1iW2ddLGg9KGcrXCI6XCIrZSkucmVwbGFjZShGLFwiO1wiKTtcImluaGVyaXRcIj09ZT9jKz1oOmQrPWh9ZC5sZW5ndGgmJihkPUNLRURJVE9SLnRvb2xzLm5vcm1hbGl6ZUNzc1RleHQoZCwhMCkpO3JldHVybiBhLl9TVD1kK2N9O0NLRURJVE9SLnN0eWxlLmN1c3RvbUhhbmRsZXJzPXt9O0NLRURJVE9SLnN0eWxlLnVuc3R5bGFibGVFbGVtZW50cz1bXTtDS0VESVRPUi5zdHlsZS5hZGRDdXN0b21IYW5kbGVyPWZ1bmN0aW9uKGEpe3ZhciBiPWZ1bmN0aW9uKGEpe3RoaXMuXz17ZGVmaW5pdGlvbjphfTt0aGlzLnNldHVwJiZ0aGlzLnNldHVwKGEpfTtiLnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IudG9vbHMucHJvdG90eXBlZENvcHkoQ0tFRElUT1Iuc3R5bGUucHJvdG90eXBlKSxcbnthc3NpZ25lZFRvOkNLRURJVE9SLlNUWUxFX09CSkVDVH0sYSwhMCk7cmV0dXJuIHRoaXMuY3VzdG9tSGFuZGxlcnNbYS50eXBlXT1ifTt2YXIgTT1DS0VESVRPUi5QT1NJVElPTl9QUkVDRURJTkd8Q0tFRElUT1IuUE9TSVRJT05fSURFTlRJQ0FMfENLRURJVE9SLlBPU0lUSU9OX0lTX0NPTlRBSU5FRCxIPUNLRURJVE9SLlBPU0lUSU9OX0ZPTExPV0lOR3xDS0VESVRPUi5QT1NJVElPTl9JREVOVElDQUx8Q0tFRElUT1IuUE9TSVRJT05fSVNfQ09OVEFJTkVEfSgpLENLRURJVE9SLnN0eWxlQ29tbWFuZD1mdW5jdGlvbihhLGYpe3RoaXMucmVxdWlyZWRDb250ZW50PXRoaXMuYWxsb3dlZENvbnRlbnQ9dGhpcy5zdHlsZT1hO0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGYsITApfSxDS0VESVRPUi5zdHlsZUNvbW1hbmQucHJvdG90eXBlLmV4ZWM9ZnVuY3Rpb24oYSl7YS5mb2N1cygpO3RoaXMuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX09GRj9hLmFwcGx5U3R5bGUodGhpcy5zdHlsZSk6XG50aGlzLnN0YXRlPT1DS0VESVRPUi5UUklTVEFURV9PTiYmYS5yZW1vdmVTdHlsZSh0aGlzLnN0eWxlKX0sQ0tFRElUT1Iuc3R5bGVzU2V0PW5ldyBDS0VESVRPUi5yZXNvdXJjZU1hbmFnZXIoXCJcIixcInN0eWxlc1NldFwiKSxDS0VESVRPUi5hZGRTdHlsZXNTZXQ9Q0tFRElUT1IudG9vbHMuYmluZChDS0VESVRPUi5zdHlsZXNTZXQuYWRkLENLRURJVE9SLnN0eWxlc1NldCksQ0tFRElUT1IubG9hZFN0eWxlc1NldD1mdW5jdGlvbihhLGYsZSl7Q0tFRElUT1Iuc3R5bGVzU2V0LmFkZEV4dGVybmFsKGEsZixcIlwiKTtDS0VESVRPUi5zdHlsZXNTZXQubG9hZChhLGUpfSxDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZSx7YXR0YWNoU3R5bGVTdGF0ZUNoYW5nZTpmdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMuXy5zdHlsZVN0YXRlQ2hhbmdlQ2FsbGJhY2tzO2V8fChlPXRoaXMuXy5zdHlsZVN0YXRlQ2hhbmdlQ2FsbGJhY2tzPVtdLHRoaXMub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixcbmZ1bmN0aW9uKGEpe2Zvcih2YXIgYz0wO2M8ZS5sZW5ndGg7YysrKXt2YXIgZj1lW2NdLGw9Zi5zdHlsZS5jaGVja0FjdGl2ZShhLmRhdGEucGF0aCx0aGlzKT9DS0VESVRPUi5UUklTVEFURV9PTjpDS0VESVRPUi5UUklTVEFURV9PRkY7Zi5mbi5jYWxsKHRoaXMsbCl9fSkpO2UucHVzaCh7c3R5bGU6YSxmbjpmfSl9LGFwcGx5U3R5bGU6ZnVuY3Rpb24oYSl7YS5hcHBseSh0aGlzKX0scmVtb3ZlU3R5bGU6ZnVuY3Rpb24oYSl7YS5yZW1vdmUodGhpcyl9LGdldFN0eWxlc1NldDpmdW5jdGlvbihhKXtpZih0aGlzLl8uc3R5bGVzRGVmaW5pdGlvbnMpYSh0aGlzLl8uc3R5bGVzRGVmaW5pdGlvbnMpO2Vsc2V7dmFyIGY9dGhpcyxlPWYuY29uZmlnLnN0eWxlc0NvbWJvX3N0eWxlc1NldHx8Zi5jb25maWcuc3R5bGVzU2V0O2lmKCExPT09ZSlhKG51bGwpO2Vsc2UgaWYoZSBpbnN0YW5jZW9mIEFycmF5KWYuXy5zdHlsZXNEZWZpbml0aW9ucz1lLGEoZSk7ZWxzZXtlfHwoZT1cImRlZmF1bHRcIik7XG52YXIgZT1lLnNwbGl0KFwiOlwiKSxiPWVbMF07Q0tFRElUT1Iuc3R5bGVzU2V0LmFkZEV4dGVybmFsKGIsZVsxXT9lLnNsaWNlKDEpLmpvaW4oXCI6XCIpOkNLRURJVE9SLmdldFVybChcInN0eWxlcy5qc1wiKSxcIlwiKTtDS0VESVRPUi5zdHlsZXNTZXQubG9hZChiLGZ1bmN0aW9uKGMpe2YuXy5zdHlsZXNEZWZpbml0aW9ucz1jW2JdO2EoZi5fLnN0eWxlc0RlZmluaXRpb25zKX0pfX19fSksZnVuY3Rpb24oKXtpZih3aW5kb3cuUHJvbWlzZSlDS0VESVRPUi50b29scy5wcm9taXNlPVByb21pc2U7ZWxzZXt2YXIgYT1DS0VESVRPUi5nZXRVcmwoXCJ2ZW5kb3IvcHJvbWlzZS5qc1wiKTtpZihcImZ1bmN0aW9uXCI9PT10eXBlb2Ygd2luZG93LmRlZmluZSYmd2luZG93LmRlZmluZS5hbWQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiB3aW5kb3cucmVxdWlyZSlyZXR1cm4gd2luZG93LnJlcXVpcmUoW2FdLGZ1bmN0aW9uKGEpe0NLRURJVE9SLnRvb2xzLnByb21pc2U9YX0pO0NLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKGEsXG5mdW5jdGlvbihmKXtpZighZilyZXR1cm4gQ0tFRElUT1IuZXJyb3IoXCJuby12ZW5kb3ItbGliXCIse3BhdGg6YX0pO2lmKFwidW5kZWZpbmVkXCIhPT10eXBlb2Ygd2luZG93LkVTNlByb21pc2UpcmV0dXJuIENLRURJVE9SLnRvb2xzLnByb21pc2U9RVM2UHJvbWlzZX0pfX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxjLGspe2Eub25jZShcInNlbGVjdGlvbkNoZWNrXCIsZnVuY3Rpb24oYSl7aWYoIWYpe3ZhciBiPWEuZGF0YS5nZXRSYW5nZXMoKVswXTtrLmVxdWFscyhiKT9hLmNhbmNlbCgpOmMuZXF1YWxzKGIpJiYoZT0hMCl9fSxudWxsLG51bGwsLTEpfXZhciBmPSEwLGU9ITE7Q0tFRElUT1IuZG9tLnNlbGVjdGlvbi5zZXR1cEVkaXRvck9wdGltaXphdGlvbj1mdW5jdGlvbihhKXthLm9uKFwic2VsZWN0aW9uQ2hlY2tcIixmdW5jdGlvbihhKXthLmRhdGEmJiFlJiZhLmRhdGEub3B0aW1pemVJbkVsZW1lbnRFbmRzKCk7ZT0hMX0pO2Eub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXt2YXIgYz1cbmEuZWRpdGFibGUoKTtjJiYoYy5hdHRhY2hMaXN0ZW5lcihjLFwia2V5ZG93blwiLGZ1bmN0aW9uKGEpe3RoaXMuXy5zaGlmdFByZXNzZWQ9YS5kYXRhLiQuc2hpZnRLZXl9LHRoaXMpLGMuYXR0YWNoTGlzdGVuZXIoYyxcImtleXVwXCIsZnVuY3Rpb24oYSl7dGhpcy5fLnNoaWZ0UHJlc3NlZD1hLmRhdGEuJC5zaGlmdEtleX0sdGhpcykpfSl9O0NLRURJVE9SLmRvbS5zZWxlY3Rpb24ucHJvdG90eXBlLm9wdGltaXplSW5FbGVtZW50RW5kcz1mdW5jdGlvbigpe3ZhciBiPXRoaXMuZ2V0UmFuZ2VzKClbMF0sYz10aGlzLnJvb3QuZWRpdG9yLGU7aWYodGhpcy5yb290LmVkaXRvci5fLnNoaWZ0UHJlc3NlZHx8dGhpcy5pc0Zha2V8fGIuaXNDb2xsYXBzZWR8fGIuc3RhcnRDb250YWluZXIuZXF1YWxzKGIuZW5kQ29udGFpbmVyKXx8KGIuZW5kQ29udGFpbmVyLmlzP2IuZW5kQ29udGFpbmVyLmlzKFwibGlcIik6Yi5lbmRDb250YWluZXIuZ2V0UGFyZW50KCkuaXMmJmIuZW5kQ29udGFpbmVyLmdldFBhcmVudCgpLmlzKFwibGlcIikpKWU9XG4hMTtlbHNlIGlmKDA9PT1iLmVuZE9mZnNldCllPSEwO2Vsc2V7ZT1iLnN0YXJ0Q29udGFpbmVyLnR5cGU9PT1DS0VESVRPUi5OT0RFX1RFWFQ7dmFyIGw9Yi5lbmRDb250YWluZXIudHlwZT09PUNLRURJVE9SLk5PREVfVEVYVCxtPWU/Yi5zdGFydENvbnRhaW5lci5nZXRMZW5ndGgoKTpiLnN0YXJ0Q29udGFpbmVyLmdldENoaWxkQ291bnQoKTtlPWIuc3RhcnRPZmZzZXQ9PT1tfHxlXmx9ZSYmKGU9Yi5jbG9uZSgpLGIuc2hyaW5rKENLRURJVE9SLlNIUklOS19URVhULCExLHtza2lwQm9ndXM6IUNLRURJVE9SLmVudi53ZWJraXR9KSxmPSExLGEoYyxiLGUpLGIuc2VsZWN0KCksZj0hMCl9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe2lmKGUoYSkpYT1NYXRoLnJvdW5kKGIqKHBhcnNlRmxvYXQoYSkvMTAwKSk7ZWxzZSBpZihcInN0cmluZ1wiPT09dHlwZW9mIGEmJmEubWF0Y2goL15cXGQrJC9nbSl8fFwic3RyaW5nXCI9PT10eXBlb2YgYSYmYS5tYXRjaCgvXlxcZCsoPzpkZWcpPyQvZ20pKWE9XG5wYXJzZUludChhLDEwKTtyZXR1cm4gYX1mdW5jdGlvbiBmKGEsYil7ZShhKT9hPWIqKHBhcnNlRmxvYXQoYSkvMTAwKTpcInN0cmluZ1wiPT09dHlwZW9mIGEmJmEubWF0Y2goL15cXGQ/XFwuXFxkKy9nbSkmJihhPXBhcnNlRmxvYXQoYSkpO3JldHVybiBhfWZ1bmN0aW9uIGUoYSl7cmV0dXJuXCJzdHJpbmdcIj09PXR5cGVvZiBhJiZhLm1hdGNoKC9eKChcXGQqXFwuXFxkKyl8KFxcZCspKSV7MX0kL2dtKX1mdW5jdGlvbiBiKGEsYixjKXtyZXR1cm4haXNOYU4oYSkmJmE+PWImJmE8PWN9ZnVuY3Rpb24gYyhhKXthPWEudG9TdHJpbmcoMTYpO3JldHVybiAxPT1hLmxlbmd0aD9cIjBcIithOmF9Q0tFRElUT1IudG9vbHMuY29sb3I9Q0tFRElUT1IudG9vbHMuY3JlYXRlQ2xhc3MoeyQ6ZnVuY3Rpb24oYSxiKXt0aGlzLl8uaW5pdGlhbENvbG9yQ29kZT1hO3RoaXMuXy5kZWZhdWx0VmFsdWU9Yjt0aGlzLl8ucGFyc2VJbnB1dChhKX0scHJvdG86e2dldEhleDpmdW5jdGlvbigpe2lmKCF0aGlzLl8uaXNWYWxpZENvbG9yKXJldHVybiB0aGlzLl8uZGVmYXVsdFZhbHVlO1xudmFyIGE9dGhpcy5fLmJsZW5kQWxwaGFDb2xvcih0aGlzLl8ucmVkLHRoaXMuXy5ncmVlbix0aGlzLl8uYmx1ZSx0aGlzLl8uYWxwaGEpO3JldHVybiB0aGlzLl8uZm9ybWF0SGV4U3RyaW5nKGFbMF0sYVsxXSxhWzJdKX0sZ2V0SGV4V2l0aEFscGhhOmZ1bmN0aW9uKCl7aWYoIXRoaXMuXy5pc1ZhbGlkQ29sb3IpcmV0dXJuIHRoaXMuXy5kZWZhdWx0VmFsdWU7dmFyIGE9TWF0aC5yb3VuZCh0aGlzLl8uYWxwaGEqQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFKTtyZXR1cm4gdGhpcy5fLmZvcm1hdEhleFN0cmluZyh0aGlzLl8ucmVkLHRoaXMuXy5ncmVlbix0aGlzLl8uYmx1ZSxhKX0sZ2V0UmdiOmZ1bmN0aW9uKCl7aWYoIXRoaXMuXy5pc1ZhbGlkQ29sb3IpcmV0dXJuIHRoaXMuXy5kZWZhdWx0VmFsdWU7dmFyIGE9dGhpcy5fLmJsZW5kQWxwaGFDb2xvcih0aGlzLl8ucmVkLHRoaXMuXy5ncmVlbix0aGlzLl8uYmx1ZSx0aGlzLl8uYWxwaGEpO3JldHVybiB0aGlzLl8uZm9ybWF0UmdiU3RyaW5nKFwicmdiXCIsXG5hWzBdLGFbMV0sYVsyXSl9LGdldFJnYmE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmlzVmFsaWRDb2xvcj90aGlzLl8uZm9ybWF0UmdiU3RyaW5nKFwicmdiYVwiLHRoaXMuXy5yZWQsdGhpcy5fLmdyZWVuLHRoaXMuXy5ibHVlLHRoaXMuXy5hbHBoYSk6dGhpcy5fLmRlZmF1bHRWYWx1ZX0sZ2V0SHNsOmZ1bmN0aW9uKCl7dmFyIGE9MD09PXRoaXMuXy5hbHBoYXx8MT09PXRoaXMuXy5hbHBoYTtpZighdGhpcy5fLmlzVmFsaWRDb2xvcilyZXR1cm4gdGhpcy5fLmRlZmF1bHRWYWx1ZTt0aGlzLl8udHlwZT09PUNLRURJVE9SLnRvb2xzLmNvbG9yLlRZUEVfSFNMJiZhP2E9W3RoaXMuXy5odWUsdGhpcy5fLnNhdHVyYXRpb24sdGhpcy5fLmxpZ2h0bmVzc106KGE9dGhpcy5fLmJsZW5kQWxwaGFDb2xvcih0aGlzLl8ucmVkLHRoaXMuXy5ncmVlbix0aGlzLl8uYmx1ZSx0aGlzLl8uYWxwaGEpLGE9dGhpcy5fLnJnYlRvSHNsKGFbMF0sYVsxXSxhWzJdKSk7cmV0dXJuIHRoaXMuXy5mb3JtYXRIc2xTdHJpbmcoXCJoc2xcIixcbmFbMF0sYVsxXSxhWzJdKX0sZ2V0SHNsYTpmdW5jdGlvbigpe3ZhciBhO2lmKCF0aGlzLl8uaXNWYWxpZENvbG9yKXJldHVybiB0aGlzLl8uZGVmYXVsdFZhbHVlO2E9dGhpcy5fLnR5cGU9PT1DS0VESVRPUi50b29scy5jb2xvci5UWVBFX0hTTD9bdGhpcy5fLmh1ZSx0aGlzLl8uc2F0dXJhdGlvbix0aGlzLl8ubGlnaHRuZXNzXTp0aGlzLl8ucmdiVG9Ic2wodGhpcy5fLnJlZCx0aGlzLl8uZ3JlZW4sdGhpcy5fLmJsdWUpO3JldHVybiB0aGlzLl8uZm9ybWF0SHNsU3RyaW5nKFwiaHNsYVwiLGFbMF0sYVsxXSxhWzJdLHRoaXMuXy5hbHBoYSl9LGdldEluaXRpYWxWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uaW5pdGlhbENvbG9yQ29kZX19LF86e2luaXRpYWxDb2xvckNvZGU6XCJcIixpc1ZhbGlkQ29sb3I6ITAsdHlwZTowLGh1ZTowLHNhdHVyYXRpb246MCxsaWdodG5lc3M6MCxyZWQ6MCxncmVlbjowLGJsdWU6MCxhbHBoYToxLGJsZW5kQWxwaGFDb2xvcjpmdW5jdGlvbihhLGIsXG5jLGQpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5tYXAoW2EsYixjXSxmdW5jdGlvbihhKXtyZXR1cm4gTWF0aC5yb3VuZChDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUtZCooQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFLWEpKX0pfSxmb3JtYXRIZXhTdHJpbmc6ZnVuY3Rpb24oYSxiLGUsZCl7YT1cIiNcIitjKGEpK2MoYikrYyhlKTt2b2lkIDAhPT1kJiYoYSs9YyhkKSk7cmV0dXJuIGEudG9VcHBlckNhc2UoKX0sZm9ybWF0UmdiU3RyaW5nOmZ1bmN0aW9uKGEsYixjLGQsZSl7Yj1bYixjLGRdO3ZvaWQgMCE9PWUmJmIucHVzaChlKTtyZXR1cm4gYStcIihcIitiLmpvaW4oXCIsXCIpK1wiKVwifSxmb3JtYXRIc2xTdHJpbmc6ZnVuY3Rpb24oYSxiLGMsZCxlKXtyZXR1cm4gYStcIihcIitiK1wiLFwiK2MrXCIlLFwiK2QrXCIlXCIrKHZvaWQgMCE9PWU/XCIsXCIrZTpcIlwiKStcIilcIn0scGFyc2VJbnB1dDpmdW5jdGlvbihhKXtpZihcInN0cmluZ1wiIT09XG50eXBlb2YgYSl0aGlzLl8uaXNWYWxpZENvbG9yPSExO2Vsc2V7YT1DS0VESVRPUi50b29scy50cmltKGEpO3ZhciBiPXRoaXMuXy5tYXRjaFN0cmluZ1RvTmFtZWRDb2xvcihhKTtiJiYoYT1iKTt2YXIgYj10aGlzLl8uZXh0cmFjdENvbG9yQ2hhbm5lbHNGcm9tSGV4KGEpLGM9dGhpcy5fLmV4dHJhY3RDb2xvckNoYW5uZWxzRnJvbVJnYmEoYSk7YT10aGlzLl8uZXh0cmFjdENvbG9yQ2hhbm5lbHNGcm9tSHNsYShhKTsoYT1ifHxjfHxhKT8odGhpcy5fLnR5cGU9YS50eXBlLHRoaXMuXy5yZWQ9YS5yZWQsdGhpcy5fLmdyZWVuPWEuZ3JlZW4sdGhpcy5fLmJsdWU9YS5ibHVlLHRoaXMuXy5hbHBoYT1hLmFscGhhLGEudHlwZT09PUNLRURJVE9SLnRvb2xzLmNvbG9yLlRZUEVfSFNMJiYodGhpcy5fLmh1ZT1hLmh1ZSx0aGlzLl8uc2F0dXJhdGlvbj1hLnNhdHVyYXRpb24sdGhpcy5fLmxpZ2h0bmVzcz1hLmxpZ2h0bmVzcykpOnRoaXMuXy5pc1ZhbGlkQ29sb3I9ITF9fSxtYXRjaFN0cmluZ1RvTmFtZWRDb2xvcjpmdW5jdGlvbihhKXtyZXR1cm4gQ0tFRElUT1IudG9vbHMuY29sb3IubmFtZWRDb2xvcnNbYS50b0xvd2VyQ2FzZSgpXXx8XG5udWxsfSxleHRyYWN0Q29sb3JDaGFubmVsc0Zyb21IZXg6ZnVuY3Rpb24oYSl7LTE9PT1hLmluZGV4T2YoXCIjXCIpJiYoYT1cIiNcIithKTthLm1hdGNoKENLRURJVE9SLnRvb2xzLmNvbG9yLmhleDNDaGFyc1JlZ0V4cCkmJihhPXRoaXMuXy5oZXgzVG9IZXg2KGEpKTthLm1hdGNoKENLRURJVE9SLnRvb2xzLmNvbG9yLmhleDRDaGFyc1JlZ0V4cCkmJihhPXRoaXMuXy5oZXg0VG9IZXg4KGEpKTtpZighYS5tYXRjaChDS0VESVRPUi50b29scy5jb2xvci5oZXg2Q2hhcnNSZWdFeHApJiYhYS5tYXRjaChDS0VESVRPUi50b29scy5jb2xvci5oZXg4Q2hhcnNSZWdFeHApKXJldHVybiBudWxsO2E9YS5zcGxpdChcIlwiKTt2YXIgYj0xO2FbN10mJmFbOF0mJihiPXBhcnNlSW50KGFbN10rYVs4XSwxNiksYi89Q0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFLGI9TnVtYmVyKGIudG9GaXhlZCgxKSkpO3JldHVybnt0eXBlOkNLRURJVE9SLnRvb2xzLmNvbG9yLlRZUEVfUkdCLFxucmVkOnBhcnNlSW50KGFbMV0rYVsyXSwxNiksZ3JlZW46cGFyc2VJbnQoYVszXSthWzRdLDE2KSxibHVlOnBhcnNlSW50KGFbNV0rYVs2XSwxNiksYWxwaGE6Yn19LGV4dHJhY3RDb2xvckNoYW5uZWxzRnJvbVJnYmE6ZnVuY3Rpb24oYil7dmFyIGM9dGhpcy5fLmV4dHJhY3RDb2xvckNoYW5uZWxzQnlQYXR0ZXJuKGIsQ0tFRElUT1IudG9vbHMuY29sb3IucmdiUmVnRXhwKTtpZighY3x8Mz5jLmxlbmd0aHx8NDxjLmxlbmd0aClyZXR1cm4gbnVsbDt2YXIgZT00PT09Yy5sZW5ndGg7Yj1hKGNbMF0sQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFKTt2YXIgZD1hKGNbMV0sQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFKSxoPWEoY1syXSxDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUpLGc9MTtlJiYoZz1mKGNbM10sQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX0FMUEhBX0NIQU5ORUxfVkFMVUUpKTtjPVxue3R5cGU6Q0tFRElUT1IudG9vbHMuY29sb3IuVFlQRV9SR0IscmVkOmIsZ3JlZW46ZCxibHVlOmgsYWxwaGE6Z307cmV0dXJuIHRoaXMuXy5hcmVDb2xvckNoYW5uZWxzVmFsaWQoYixkLGgsZyk/YzpudWxsfSxleHRyYWN0Q29sb3JDaGFubmVsc0Zyb21Ic2xhOmZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuXy5leHRyYWN0Q29sb3JDaGFubmVsc0J5UGF0dGVybihiLENLRURJVE9SLnRvb2xzLmNvbG9yLmhzbFJlZ0V4cCk7aWYoIWN8fDM+Yy5sZW5ndGh8fDQ8Yy5sZW5ndGgpcmV0dXJuIG51bGw7dmFyIGU9ND09PWMubGVuZ3RoLGQ9YShjWzBdLENLRURJVE9SLnRvb2xzLmNvbG9yLk1BWF9IVUVfQ0hBTk5FTF9WQUxVRSksaD1mKGNbMV0sQ0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1NBVFVSQVRJT05fTElHSFRORVNTX0NIQU5ORUxfVkFMVUUpLGc9ZihjWzJdLENLRURJVE9SLnRvb2xzLmNvbG9yLk1BWF9TQVRVUkFUSU9OX0xJR0hUTkVTU19DSEFOTkVMX1ZBTFVFKSxuPTE7Yj10aGlzLl8uaHNsVG9SZ2IoZCxcbmgsZyk7ZSYmKG49ZihjWzNdLENLRURJVE9SLnRvb2xzLmNvbG9yLk1BWF9BTFBIQV9DSEFOTkVMX1ZBTFVFKSk7Yi5wdXNoKG4pO2M9e3R5cGU6Q0tFRElUT1IudG9vbHMuY29sb3IuVFlQRV9IU0wscmVkOmJbMF0sZ3JlZW46YlsxXSxibHVlOmJbMl0sYWxwaGE6YlszXSxodWU6ZCxzYXR1cmF0aW9uOk1hdGgucm91bmQoMTAwKmgpLGxpZ2h0bmVzczpNYXRoLnJvdW5kKDEwMCpnKX07cmV0dXJuIHRoaXMuXy5hcmVDb2xvckNoYW5uZWxzVmFsaWQoYlswXSxiWzFdLGJbMl0sYlszXSk/YzpudWxsfSxoZXgzVG9IZXg2OmZ1bmN0aW9uKGEpe2E9YS5zcGxpdChcIlwiKTtyZXR1cm5cIiNcIithWzFdK2FbMV0rYVsyXSthWzJdK2FbM10rYVszXX0saGV4NFRvSGV4ODpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fLmhleDNUb0hleDYoYS5zdWJzdHIoMCw0KSkrQ0tFRElUT1IudG9vbHMucmVwZWF0KGFbNF0sMil9LGV4dHJhY3RDb2xvckNoYW5uZWxzQnlQYXR0ZXJuOmZ1bmN0aW9uKGEsYil7dmFyIGM9XG5hLm1hdGNoKGIpO2lmKCFjKXJldHVybiBudWxsO3ZhciBkPS0xPT09Y1sxXS5pbmRleE9mKFwiLFwiKT8vXFxzLzpcIixcIixkPWNbMV0uc3BsaXQoZCksZD1DS0VESVRPUi50b29scy5hcnJheS5yZWR1Y2UoZCxmdW5jdGlvbihhLGIpe3ZhciBkPUNLRURJVE9SLnRvb2xzLnRyaW0oYik7cmV0dXJuIDA9PT1kLmxlbmd0aD9hOmEuY29uY2F0KFtkXSl9LFtdKTtjWzJdJiYoYz1DS0VESVRPUi50b29scy50cmltKGNbMl0ucmVwbGFjZSgvW1xcLyxdLyxcIlwiKSksZC5wdXNoKGMpKTtyZXR1cm4gZH0sYXJlQ29sb3JDaGFubmVsc1ZhbGlkOmZ1bmN0aW9uKGEsYyxlLGQpe3JldHVybiBiKGEsMCxDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUpJiZiKGMsMCxDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUpJiZiKGUsMCxDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUpJiZiKGQsMCxDS0VESVRPUi50b29scy5jb2xvci5NQVhfQUxQSEFfQ0hBTk5FTF9WQUxVRSl9LFxuaHNsVG9SZ2I6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPWZ1bmN0aW9uKGQpe3ZhciBnPShkK2EvMzApJTEyO2Q9YipNYXRoLm1pbihjLDEtYyk7Zz1NYXRoLm1pbihnLTMsOS1nLDEpO2c9TWF0aC5tYXgoLTEsZyk7cmV0dXJuIE1hdGgucm91bmQoKGMtZCpnKSpDS0VESVRPUi50b29scy5jb2xvci5NQVhfUkdCX0NIQU5ORUxfVkFMVUUpfTtyZXR1cm5bZCgwKSxkKDgpLGQoNCldfSxyZ2JUb0hzbDpmdW5jdGlvbihhLGIsYyl7YS89Q0tFRElUT1IudG9vbHMuY29sb3IuTUFYX1JHQl9DSEFOTkVMX1ZBTFVFO2IvPUNLRURJVE9SLnRvb2xzLmNvbG9yLk1BWF9SR0JfQ0hBTk5FTF9WQUxVRTt2YXIgZD1jL0NLRURJVE9SLnRvb2xzLmNvbG9yLk1BWF9SR0JfQ0hBTk5FTF9WQUxVRSxlPU1hdGgubWF4KGEsYixkKSxnPU1hdGgubWluKGEsYixkKTtjPWUtZzt2YXIgZj0wO3N3aXRjaChlKXtjYXNlIGE6Zj0oYi1kKS9jJTY7YnJlYWs7Y2FzZSBiOmY9KGQtYSkvYysyO2JyZWFrO2Nhc2UgZDpmPVxuKGEtYikvYys0fWE9MD09PWM/MDo2MCpmO2I9KGUrZykvMjtlPTA7MSE9PWImJjAhPT1iJiYoZT1jLygxLU1hdGguYWJzKDIqYi0xKSkpO2E9TWF0aC5yb3VuZChhKTtlPU1hdGgucm91bmQoMTAwKmUpO2I9TWF0aC5yb3VuZCgxMDAqYik7cmV0dXJuW2EsZSxiXX19LHN0YXRpY3M6e1RZUEVfUkdCOjEsVFlQRV9IU0w6MixNQVhfUkdCX0NIQU5ORUxfVkFMVUU6MjU1LE1BWF9BTFBIQV9DSEFOTkVMX1ZBTFVFOjEsTUFYX0hVRV9DSEFOTkVMX1ZBTFVFOjM2MCxNQVhfU0FUVVJBVElPTl9MSUdIVE5FU1NfQ0hBTk5FTF9WQUxVRToxLGhleDNDaGFyc1JlZ0V4cDovIyhbMC05YS1mXXszfSQpL2dpbSxoZXg0Q2hhcnNSZWdFeHA6LyMoWzAtOWEtZl17NH0kKS9naW0saGV4NkNoYXJzUmVnRXhwOi8jKFswLTlhLWZdezZ9JCkvZ2ltLGhleDhDaGFyc1JlZ0V4cDovIyhbMC05YS1mXXs4fSQpL2dpbSxyZ2JSZWdFeHA6L3JnYmE/XFwoKFsuLFxcZFxccyVdKikoXFxzKlxcL1xccypbXFxkLiVdKyk/XFxzKlxcKS9pLFxuaHNsUmVnRXhwOi9oc2xhP1xcKChcXHMqKD86Wy5cXGRdKyg/OmRlZyk/KSg/OlxccyosP1xccypbLlxcZF0rJSl7Mn0pKCg/Oig/OlxccypcXC9cXHMqKXwoPzpcXHMqLFxccyopKVtcXGQuXSslPyk/XFxzKlxcKS9pLG5hbWVkQ29sb3JzOnthbGljZWJsdWU6XCIjRjBGOEZGXCIsYW50aXF1ZXdoaXRlOlwiI0ZBRUJEN1wiLGFxdWE6XCIjMDBGRkZGXCIsYXF1YW1hcmluZTpcIiM3RkZGRDRcIixhenVyZTpcIiNGMEZGRkZcIixiZWlnZTpcIiNGNUY1RENcIixiaXNxdWU6XCIjRkZFNEM0XCIsYmxhY2s6XCIjMDAwMDAwXCIsYmxhbmNoZWRhbG1vbmQ6XCIjRkZFQkNEXCIsYmx1ZTpcIiMwMDAwRkZcIixibHVldmlvbGV0OlwiIzhBMkJFMlwiLGJyb3duOlwiI0E1MkEyQVwiLGJ1cmx5d29vZDpcIiNERUI4ODdcIixjYWRldGJsdWU6XCIjNUY5RUEwXCIsY2hhcnRyZXVzZTpcIiM3RkZGMDBcIixjaG9jb2xhdGU6XCIjRDI2OTFFXCIsY29yYWw6XCIjRkY3RjUwXCIsY29ybmZsb3dlcmJsdWU6XCIjNjQ5NUVEXCIsY29ybnNpbGs6XCIjRkZGOERDXCIsY3JpbXNvbjpcIiNEQzE0M0NcIixcbmN5YW46XCIjMDBGRkZGXCIsZGFya2JsdWU6XCIjMDAwMDhCXCIsZGFya2N5YW46XCIjMDA4QjhCXCIsZGFya2dvbGRlbnJvZDpcIiNCODg2MEJcIixkYXJrZ3JheTpcIiNBOUE5QTlcIixkYXJrZ3JlZW46XCIjMDA2NDAwXCIsZGFya2dyZXk6XCIjQTlBOUE5XCIsZGFya2toYWtpOlwiI0JEQjc2QlwiLGRhcmttYWdlbnRhOlwiIzhCMDA4QlwiLGRhcmtvbGl2ZWdyZWVuOlwiIzU1NkIyRlwiLGRhcmtvcmFuZ2U6XCIjRkY4QzAwXCIsZGFya29yY2hpZDpcIiM5OTMyQ0NcIixkYXJrcmVkOlwiIzhCMDAwMFwiLGRhcmtzYWxtb246XCIjRTk5NjdBXCIsZGFya3NlYWdyZWVuOlwiIzhGQkM4RlwiLGRhcmtzbGF0ZWJsdWU6XCIjNDgzRDhCXCIsZGFya3NsYXRlZ3JheTpcIiMyRjRGNEZcIixkYXJrc2xhdGVncmV5OlwiIzJGNEY0RlwiLGRhcmt0dXJxdW9pc2U6XCIjMDBDRUQxXCIsZGFya3Zpb2xldDpcIiM5NDAwRDNcIixkZWVwcGluazpcIiNGRjE0OTNcIixkZWVwc2t5Ymx1ZTpcIiMwMEJGRkZcIixkaW1ncmF5OlwiIzY5Njk2OVwiLGRpbWdyZXk6XCIjNjk2OTY5XCIsZG9kZ2VyYmx1ZTpcIiMxRTkwRkZcIixcbmZpcmVicmljazpcIiNCMjIyMjJcIixmbG9yYWx3aGl0ZTpcIiNGRkZBRjBcIixmb3Jlc3RncmVlbjpcIiMyMjhCMjJcIixmdWNoc2lhOlwiI0ZGMDBGRlwiLGdhaW5zYm9ybzpcIiNEQ0RDRENcIixnaG9zdHdoaXRlOlwiI0Y4RjhGRlwiLGdvbGQ6XCIjRkZENzAwXCIsZ29sZGVucm9kOlwiI0RBQTUyMFwiLGdyYXk6XCIjODA4MDgwXCIsZ3JlZW46XCIjMDA4MDAwXCIsZ3JlZW55ZWxsb3c6XCIjQURGRjJGXCIsZ3JleTpcIiM4MDgwODBcIixob25leWRldzpcIiNGMEZGRjBcIixob3RwaW5rOlwiI0ZGNjlCNFwiLGluZGlhbnJlZDpcIiNDRDVDNUNcIixpbmRpZ286XCIjNEIwMDgyXCIsaXZvcnk6XCIjRkZGRkYwXCIsa2hha2k6XCIjRjBFNjhDXCIsbGF2ZW5kZXI6XCIjRTZFNkZBXCIsbGF2ZW5kZXJibHVzaDpcIiNGRkYwRjVcIixsYXduZ3JlZW46XCIjN0NGQzAwXCIsbGVtb25jaGlmZm9uOlwiI0ZGRkFDRFwiLGxpZ2h0Ymx1ZTpcIiNBREQ4RTZcIixsaWdodGNvcmFsOlwiI0YwODA4MFwiLGxpZ2h0Y3lhbjpcIiNFMEZGRkZcIixsaWdodGdvbGRlbnJvZHllbGxvdzpcIiNGQUZBRDJcIixcbmxpZ2h0Z3JheTpcIiNEM0QzRDNcIixsaWdodGdyZWVuOlwiIzkwRUU5MFwiLGxpZ2h0Z3JleTpcIiNEM0QzRDNcIixsaWdodHBpbms6XCIjRkZCNkMxXCIsbGlnaHRzYWxtb246XCIjRkZBMDdBXCIsbGlnaHRzZWFncmVlbjpcIiMyMEIyQUFcIixsaWdodHNreWJsdWU6XCIjODdDRUZBXCIsbGlnaHRzbGF0ZWdyYXk6XCIjNzc4ODk5XCIsbGlnaHRzbGF0ZWdyZXk6XCIjNzc4ODk5XCIsbGlnaHRzdGVlbGJsdWU6XCIjQjBDNERFXCIsbGlnaHR5ZWxsb3c6XCIjRkZGRkUwXCIsbGltZTpcIiMwMEZGMDBcIixsaW1lZ3JlZW46XCIjMzJDRDMyXCIsbGluZW46XCIjRkFGMEU2XCIsbWFnZW50YTpcIiNGRjAwRkZcIixtYXJvb246XCIjODAwMDAwXCIsbWVkaXVtYXF1YW1hcmluZTpcIiM2NkNEQUFcIixtZWRpdW1ibHVlOlwiIzAwMDBDRFwiLG1lZGl1bW9yY2hpZDpcIiNCQTU1RDNcIixtZWRpdW1wdXJwbGU6XCIjOTM3MERCXCIsbWVkaXVtc2VhZ3JlZW46XCIjM0NCMzcxXCIsbWVkaXVtc2xhdGVibHVlOlwiIzdCNjhFRVwiLG1lZGl1bXNwcmluZ2dyZWVuOlwiIzAwRkE5QVwiLFxubWVkaXVtdHVycXVvaXNlOlwiIzQ4RDFDQ1wiLG1lZGl1bXZpb2xldHJlZDpcIiNDNzE1ODVcIixtaWRuaWdodGJsdWU6XCIjMTkxOTcwXCIsbWludGNyZWFtOlwiI0Y1RkZGQVwiLG1pc3R5cm9zZTpcIiNGRkU0RTFcIixtb2NjYXNpbjpcIiNGRkU0QjVcIixuYXZham93aGl0ZTpcIiNGRkRFQURcIixuYXZ5OlwiIzAwMDA4MFwiLG9sZGxhY2U6XCIjRkRGNUU2XCIsb2xpdmU6XCIjODA4MDAwXCIsb2xpdmVkcmFiOlwiIzZCOEUyM1wiLG9yYW5nZTpcIiNGRkE1MDBcIixvcmFuZ2VyZWQ6XCIjRkY0NTAwXCIsb3JjaGlkOlwiI0RBNzBENlwiLHBhbGVnb2xkZW5yb2Q6XCIjRUVFOEFBXCIscGFsZWdyZWVuOlwiIzk4RkI5OFwiLHBhbGV0dXJxdW9pc2U6XCIjQUZFRUVFXCIscGFsZXZpb2xldHJlZDpcIiNEQjcwOTNcIixwYXBheWF3aGlwOlwiI0ZGRUZENVwiLHBlYWNocHVmZjpcIiNGRkRBQjlcIixwZXJ1OlwiI0NEODUzRlwiLHBpbms6XCIjRkZDMENCXCIscGx1bTpcIiNEREEwRERcIixwb3dkZXJibHVlOlwiI0IwRTBFNlwiLHB1cnBsZTpcIiM4MDAwODBcIixyZWJlY2NhcHVycGxlOlwiIzY2MzM5OVwiLFxucmVkOlwiI0ZGMDAwMFwiLHJvc3licm93bjpcIiNCQzhGOEZcIixyb3lhbGJsdWU6XCIjNDE2OUUxXCIsc2FkZGxlYnJvd246XCIjOEI0NTEzXCIsc2FsbW9uOlwiI0ZBODA3MlwiLHNhbmR5YnJvd246XCIjRjRBNDYwXCIsc2VhZ3JlZW46XCIjMkU4QjU3XCIsc2Vhc2hlbGw6XCIjRkZGNUVFXCIsc2llbm5hOlwiI0EwNTIyRFwiLHNpbHZlcjpcIiNDMEMwQzBcIixza3libHVlOlwiIzg3Q0VFQlwiLHNsYXRlYmx1ZTpcIiM2QTVBQ0RcIixzbGF0ZWdyYXk6XCIjNzA4MDkwXCIsc2xhdGVncmV5OlwiIzcwODA5MFwiLHNub3c6XCIjRkZGQUZBXCIsc3ByaW5nZ3JlZW46XCIjMDBGRjdGXCIsc3RlZWxibHVlOlwiIzQ2ODJCNFwiLHRhbjpcIiNEMkI0OENcIix0ZWFsOlwiIzAwODA4MFwiLHRoaXN0bGU6XCIjRDhCRkQ4XCIsdG9tYXRvOlwiI0ZGNjM0N1wiLHR1cnF1b2lzZTpcIiM0MEUwRDBcIix2aW9sZXQ6XCIjRUU4MkVFXCIsd2luZG93dGV4dDpcIndpbmRvd3RleHRcIix3aGVhdDpcIiNGNURFQjNcIix3aGl0ZTpcIiNGRkZGRkZcIix3aGl0ZXNtb2tlOlwiI0Y1RjVGNVwiLHllbGxvdzpcIiNGRkZGMDBcIixcbnllbGxvd2dyZWVuOlwiIzlBQ0QzMlwifX19KTtDS0VESVRPUi50b29scy5zdHlsZS5wYXJzZS5fY29sb3JzPUNLRURJVE9SLnRvb2xzLmNvbG9yLm5hbWVkQ29sb3JzfSgpLENLRURJVE9SLmRvbS5jb21tZW50PWZ1bmN0aW9uKGEsZil7XCJzdHJpbmdcIj09dHlwZW9mIGEmJihhPShmP2YuJDpkb2N1bWVudCkuY3JlYXRlQ29tbWVudChhKSk7Q0tFRElUT1IuZG9tLmRvbU9iamVjdC5jYWxsKHRoaXMsYSl9LENLRURJVE9SLmRvbS5jb21tZW50LnByb3RvdHlwZT1uZXcgQ0tFRElUT1IuZG9tLm5vZGUsQ0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmRvbS5jb21tZW50LnByb3RvdHlwZSx7dHlwZTpDS0VESVRPUi5OT0RFX0NPTU1FTlQsZ2V0T3V0ZXJIdG1sOmZ1bmN0aW9uKCl7cmV0dXJuXCJcXHgzYyEtLVwiK3RoaXMuJC5ub2RlVmFsdWUrXCItLVxceDNlXCJ9fSksXCJ1c2Ugc3RyaWN0XCIsZnVuY3Rpb24oKXt2YXIgYT17fSxmPXt9LGU7Zm9yKGUgaW4gQ0tFRElUT1IuZHRkLiRibG9ja0xpbWl0KWUgaW5cbkNLRURJVE9SLmR0ZC4kbGlzdHx8KGFbZV09MSk7Zm9yKGUgaW4gQ0tFRElUT1IuZHRkLiRibG9jayllIGluIENLRURJVE9SLmR0ZC4kYmxvY2tMaW1pdHx8ZSBpbiBDS0VESVRPUi5kdGQuJGVtcHR5fHwoZltlXT0xKTtDS0VESVRPUi5kb20uZWxlbWVudFBhdGg9ZnVuY3Rpb24oYixjKXt2YXIgZT1udWxsLGw9bnVsbCxtPVtdLGQ9YixoO2M9Y3x8Yi5nZXREb2N1bWVudCgpLmdldEJvZHkoKTtkfHwoZD1jKTtkbyBpZihkLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCl7bS5wdXNoKGQpO2lmKCF0aGlzLmxhc3RFbGVtZW50JiYodGhpcy5sYXN0RWxlbWVudD1kLGQuaXMoQ0tFRElUT1IuZHRkLiRvYmplY3QpfHxcImZhbHNlXCI9PWQuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKSljb250aW51ZTtpZihkLmVxdWFscyhjKSlicmVhaztpZighbCYmKGg9ZC5nZXROYW1lKCksXCJ0cnVlXCI9PWQuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpP2w9ZDohZSYmZltoXSYmXG4oZT1kKSxhW2hdKSl7aWYoaD0hZSYmXCJkaXZcIj09aCl7YTp7aD1kLmdldENoaWxkcmVuKCk7Zm9yKHZhciBnPTAsbj1oLmNvdW50KCk7ZzxuO2crKyl7dmFyIHc9aC5nZXRJdGVtKGcpO2lmKHcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZDS0VESVRPUi5kdGQuJGJsb2NrW3cuZ2V0TmFtZSgpXSl7aD0hMDticmVhayBhfX1oPSExfWg9IWh9aD9lPWQ6bD1kfX13aGlsZShkPWQuZ2V0UGFyZW50KCkpO2x8fChsPWMpO3RoaXMuYmxvY2s9ZTt0aGlzLmJsb2NrTGltaXQ9bDt0aGlzLnJvb3Q9Yzt0aGlzLmVsZW1lbnRzPW19fSgpLENLRURJVE9SLmRvbS5lbGVtZW50UGF0aC5wcm90b3R5cGU9e2NvbXBhcmU6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcy5lbGVtZW50czthPWEmJmEuZWxlbWVudHM7aWYoIWF8fGYubGVuZ3RoIT1hLmxlbmd0aClyZXR1cm4hMTtmb3IodmFyIGU9MDtlPGYubGVuZ3RoO2UrKylpZighZltlXS5lcXVhbHMoYVtlXSkpcmV0dXJuITE7cmV0dXJuITB9LGNvbnRhaW5zOmZ1bmN0aW9uKGEsXG5mLGUpe3ZhciBiPTAsYztcInN0cmluZ1wiPT10eXBlb2YgYSYmKGM9ZnVuY3Rpb24oYil7cmV0dXJuIGIuZ2V0TmFtZSgpPT1hfSk7YSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50P2M9ZnVuY3Rpb24oYil7cmV0dXJuIGIuZXF1YWxzKGEpfTpDS0VESVRPUi50b29scy5pc0FycmF5KGEpP2M9ZnVuY3Rpb24oYil7cmV0dXJuLTE8Q0tFRElUT1IudG9vbHMuaW5kZXhPZihhLGIuZ2V0TmFtZSgpKX06XCJmdW5jdGlvblwiPT10eXBlb2YgYT9jPWE6XCJvYmplY3RcIj09dHlwZW9mIGEmJihjPWZ1bmN0aW9uKGIpe3JldHVybiBiLmdldE5hbWUoKWluIGF9KTt2YXIgaz10aGlzLmVsZW1lbnRzLGw9ay5sZW5ndGg7ZiYmKGU/Yis9MTotLWwpO2UmJihrPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGssMCksay5yZXZlcnNlKCkpO2Zvcig7YjxsO2IrKylpZihjKGtbYl0pKXJldHVybiBrW2JdO3JldHVybiBudWxsfSxpc0NvbnRleHRGb3I6ZnVuY3Rpb24oYSl7dmFyIGY7cmV0dXJuIGEgaW5cbkNLRURJVE9SLmR0ZC4kYmxvY2s/KGY9dGhpcy5jb250YWlucyhDS0VESVRPUi5kdGQuJGludGVybWVkaWF0ZSl8fHRoaXMucm9vdC5lcXVhbHModGhpcy5ibG9jaykmJnRoaXMuYmxvY2t8fHRoaXMuYmxvY2tMaW1pdCwhIWYuZ2V0RHRkKClbYV0pOiEwfSxkaXJlY3Rpb246ZnVuY3Rpb24oKXtyZXR1cm4odGhpcy5ibG9ja3x8dGhpcy5ibG9ja0xpbWl0fHx0aGlzLnJvb3QpLmdldERpcmVjdGlvbigxKX19LENLRURJVE9SLmRvbS50ZXh0PWZ1bmN0aW9uKGEsZil7XCJzdHJpbmdcIj09dHlwZW9mIGEmJihhPShmP2YuJDpkb2N1bWVudCkuY3JlYXRlVGV4dE5vZGUoYSkpO3RoaXMuJD1hfSxDS0VESVRPUi5kb20udGV4dC5wcm90b3R5cGU9bmV3IENLRURJVE9SLmRvbS5ub2RlLENLRURJVE9SLnRvb2xzLmV4dGVuZChDS0VESVRPUi5kb20udGV4dC5wcm90b3R5cGUse3R5cGU6Q0tFRElUT1IuTk9ERV9URVhULGdldExlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLiQubm9kZVZhbHVlLmxlbmd0aH0sXG5nZXRUZXh0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuJC5ub2RlVmFsdWV9LHNldFRleHQ6ZnVuY3Rpb24oYSl7dGhpcy4kLm5vZGVWYWx1ZT1hfSxpc0VtcHR5OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuZ2V0VGV4dCgpO2EmJihmPUNLRURJVE9SLnRvb2xzLnRyaW0oZikpO3JldHVybiFmfHxmPT09Q0tFRElUT1IuZG9tLnNlbGVjdGlvbi5GSUxMSU5HX0NIQVJfU0VRVUVOQ0V9LHNwbGl0OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMuJC5wYXJlbnROb2RlLGU9Zi5jaGlsZE5vZGVzLmxlbmd0aCxiPXRoaXMuZ2V0TGVuZ3RoKCksYz10aGlzLmdldERvY3VtZW50KCksaz1uZXcgQ0tFRElUT1IuZG9tLnRleHQodGhpcy4kLnNwbGl0VGV4dChhKSxjKTtmLmNoaWxkTm9kZXMubGVuZ3RoPT1lJiYoYT49Yj8oaz1jLmNyZWF0ZVRleHQoXCJcIiksay5pbnNlcnRBZnRlcih0aGlzKSk6KGE9Yy5jcmVhdGVUZXh0KFwiXCIpLGEuaW5zZXJ0QWZ0ZXIoayksYS5yZW1vdmUoKSkpO3JldHVybiBrfSxzdWJzdHJpbmc6ZnVuY3Rpb24oYSxcbmYpe3JldHVyblwibnVtYmVyXCIhPXR5cGVvZiBmP3RoaXMuJC5ub2RlVmFsdWUuc3Vic3RyKGEpOnRoaXMuJC5ub2RlVmFsdWUuc3Vic3RyaW5nKGEsZil9fSksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYixjKXt2YXIgZj1hLnNlcmlhbGl6YWJsZSxsPWJbYz9cImVuZENvbnRhaW5lclwiOlwic3RhcnRDb250YWluZXJcIl0sbT1jP1wiZW5kT2Zmc2V0XCI6XCJzdGFydE9mZnNldFwiLGQ9Zj9iLmRvY3VtZW50LmdldEJ5SWQoYS5zdGFydE5vZGUpOmEuc3RhcnROb2RlO2E9Zj9iLmRvY3VtZW50LmdldEJ5SWQoYS5lbmROb2RlKTphLmVuZE5vZGU7bC5lcXVhbHMoZC5nZXRQcmV2aW91cygpKT8oYi5zdGFydE9mZnNldD1iLnN0YXJ0T2Zmc2V0LWwuZ2V0TGVuZ3RoKCktYS5nZXRQcmV2aW91cygpLmdldExlbmd0aCgpLGw9YS5nZXROZXh0KCkpOmwuZXF1YWxzKGEuZ2V0UHJldmlvdXMoKSkmJihiLnN0YXJ0T2Zmc2V0LT1sLmdldExlbmd0aCgpLGw9YS5nZXROZXh0KCkpO2wuZXF1YWxzKGQuZ2V0UGFyZW50KCkpJiZcbmJbbV0rKztsLmVxdWFscyhhLmdldFBhcmVudCgpKSYmYlttXSsrO2JbYz9cImVuZENvbnRhaW5lclwiOlwic3RhcnRDb250YWluZXJcIl09bDtyZXR1cm4gYn1DS0VESVRPUi5kb20ucmFuZ2VMaXN0PWZ1bmN0aW9uKGEpe2lmKGEgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20ucmFuZ2VMaXN0KXJldHVybiBhO2E/YSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5yYW5nZSYmKGE9W2FdKTphPVtdO3JldHVybiBDS0VESVRPUi50b29scy5leHRlbmQoYSxmKX07dmFyIGY9e2NyZWF0ZUl0ZXJhdG9yOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiPUNLRURJVE9SLmRvbS53YWxrZXIuYm9va21hcmsoKSxjPVtdLGY7cmV0dXJue2dldE5leHRSYW5nZTpmdW5jdGlvbihsKXtmPXZvaWQgMD09PWY/MDpmKzE7dmFyIG09YVtmXTtpZihtJiYxPGEubGVuZ3RoKXtpZighZilmb3IodmFyIGQ9YS5sZW5ndGgtMTswPD1kO2QtLSljLnVuc2hpZnQoYVtkXS5jcmVhdGVCb29rbWFyayghMCkpO2lmKGwpZm9yKHZhciBoPVxuMDthW2YraCsxXTspe3ZhciBnPW0uZG9jdW1lbnQ7bD0wO2Q9Zy5nZXRCeUlkKGNbaF0uZW5kTm9kZSk7Zm9yKGc9Zy5nZXRCeUlkKGNbaCsxXS5zdGFydE5vZGUpOzspe2Q9ZC5nZXROZXh0U291cmNlTm9kZSghMSk7aWYoZy5lcXVhbHMoZCkpbD0xO2Vsc2UgaWYoYihkKXx8ZC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmQuaXNCbG9ja0JvdW5kYXJ5KCkpY29udGludWU7YnJlYWt9aWYoIWwpYnJlYWs7aCsrfWZvcihtLm1vdmVUb0Jvb2ttYXJrKGMuc2hpZnQoKSk7aC0tOylkPWFbKytmXSxkLm1vdmVUb0Jvb2ttYXJrKGMuc2hpZnQoKSksbS5zZXRFbmQoZC5lbmRDb250YWluZXIsZC5lbmRPZmZzZXQpfXJldHVybiBtfX19LGNyZWF0ZUJvb2ttYXJrczpmdW5jdGlvbihlKXtmb3IodmFyIGI9W10sYyxmPTA7Zjx0aGlzLmxlbmd0aDtmKyspe2IucHVzaChjPXRoaXNbZl0uY3JlYXRlQm9va21hcmsoZSwhMCkpO2Zvcih2YXIgbD1mKzE7bDx0aGlzLmxlbmd0aDtsKyspdGhpc1tsXT1cbmEoYyx0aGlzW2xdKSx0aGlzW2xdPWEoYyx0aGlzW2xdLCEwKX1yZXR1cm4gYn0sY3JlYXRlQm9va21hcmtzMjpmdW5jdGlvbihhKXtmb3IodmFyIGI9W10sYz0wO2M8dGhpcy5sZW5ndGg7YysrKWIucHVzaCh0aGlzW2NdLmNyZWF0ZUJvb2ttYXJrMihhKSk7cmV0dXJuIGJ9LG1vdmVUb0Jvb2ttYXJrczpmdW5jdGlvbihhKXtmb3IodmFyIGI9MDtiPHRoaXMubGVuZ3RoO2IrKyl0aGlzW2JdLm1vdmVUb0Jvb2ttYXJrKGFbYl0pfX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7cmV0dXJuIENLRURJVE9SLmdldFVybChDS0VESVRPUi5za2luTmFtZS5zcGxpdChcIixcIilbMV18fFwic2tpbnMvXCIrQ0tFRElUT1Iuc2tpbk5hbWUuc3BsaXQoXCIsXCIpWzBdK1wiL1wiKX1mdW5jdGlvbiBmKGIpe3ZhciBkPUNLRURJVE9SLnNraW5bXCJ1YV9cIitiXSxjPUNLRURJVE9SLmVudjtpZihkKWZvcih2YXIgZD1kLnNwbGl0KFwiLFwiKS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGE+Yj8tMToxfSksZT0wLFxuZjtlPGQubGVuZ3RoO2UrKylpZihmPWRbZV0sYy5pZSYmKGYucmVwbGFjZSgvXmllLyxcIlwiKT09Yy52ZXJzaW9ufHxjLnF1aXJrcyYmXCJpZXF1aXJrc1wiPT1mKSYmKGY9XCJpZVwiKSxjW2ZdKXtiKz1cIl9cIitkW2VdO2JyZWFrfXJldHVybiBDS0VESVRPUi5nZXRVcmwoYSgpK2IrXCIuY3NzXCIpfWZ1bmN0aW9uIGUoYSxiKXtrW2FdfHwoQ0tFRElUT1IuZG9jdW1lbnQuYXBwZW5kU3R5bGVTaGVldChmKGEpKSxrW2FdPTEpO2ImJmIoKX1mdW5jdGlvbiBiKGEpe3ZhciBiPWEuZ2V0QnlJZChsKTtifHwoYj1hLmdldEhlYWQoKS5hcHBlbmQoXCJzdHlsZVwiKSxiLnNldEF0dHJpYnV0ZShcImlkXCIsbCksYi5zZXRBdHRyaWJ1dGUoXCJ0eXBlXCIsXCJ0ZXh0L2Nzc1wiKSk7cmV0dXJuIGJ9ZnVuY3Rpb24gYyhhLGIsZCl7dmFyIGMsZSxmO2lmKENLRURJVE9SLmVudi53ZWJraXQpZm9yKGI9Yi5zcGxpdChcIn1cIikuc2xpY2UoMCwtMSksZT0wO2U8Yi5sZW5ndGg7ZSsrKWJbZV09YltlXS5zcGxpdChcIntcIik7Zm9yKHZhciBrPVxuMDtrPGEubGVuZ3RoO2srKylpZihDS0VESVRPUi5lbnYud2Via2l0KWZvcihlPTA7ZTxiLmxlbmd0aDtlKyspe2Y9YltlXVsxXTtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWY9Zi5yZXBsYWNlKGRbY11bMF0sZFtjXVsxXSk7YVtrXS4kLnNoZWV0LmFkZFJ1bGUoYltlXVswXSxmKX1lbHNle2Y9Yjtmb3IoYz0wO2M8ZC5sZW5ndGg7YysrKWY9Zi5yZXBsYWNlKGRbY11bMF0sZFtjXVsxXSk7Q0tFRElUT1IuZW52LmllJiYxMT5DS0VESVRPUi5lbnYudmVyc2lvbj9hW2tdLiQuc3R5bGVTaGVldC5jc3NUZXh0Kz1mOmFba10uJC5pbm5lckhUTUwrPWZ9fXZhciBrPXt9O0NLRURJVE9SLnNraW49e3BhdGg6YSxsb2FkUGFydDpmdW5jdGlvbihiLGQpe0NLRURJVE9SLnNraW4ubmFtZSE9Q0tFRElUT1Iuc2tpbk5hbWUuc3BsaXQoXCIsXCIpWzBdP0NLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKENLRURJVE9SLmdldFVybChhKCkrXCJza2luLmpzXCIpLGZ1bmN0aW9uKCl7ZShiLGQpfSk6ZShiLGQpfSxcbmdldFBhdGg6ZnVuY3Rpb24oYSl7cmV0dXJuIENLRURJVE9SLmdldFVybChmKGEpKX0saWNvbnM6e30sYWRkSWNvbjpmdW5jdGlvbihhLGIsZCxjKXthPWEudG9Mb3dlckNhc2UoKTt0aGlzLmljb25zW2FdfHwodGhpcy5pY29uc1thXT17cGF0aDpiLG9mZnNldDpkfHwwLGJnc2l6ZTpjfHxcIjE2cHhcIn0pfSxnZXRJY29uU3R5bGU6ZnVuY3Rpb24oYSxiLGQsYyxlKXt2YXIgZjthJiYoYT1hLnRvTG93ZXJDYXNlKCksYiYmKGY9dGhpcy5pY29uc1thK1wiLXJ0bFwiXSksZnx8KGY9dGhpcy5pY29uc1thXSkpO2E9ZHx8ZiYmZi5wYXRofHxcIlwiO2M9Y3x8ZiYmZi5vZmZzZXQ7ZT1lfHxmJiZmLmJnc2l6ZXx8XCIxNnB4XCI7YSYmKGE9YS5yZXBsYWNlKC8nL2csXCJcXFxcJ1wiKSk7cmV0dXJuIGEmJlwiYmFja2dyb3VuZC1pbWFnZTp1cmwoJ1wiK0NLRURJVE9SLmdldFVybChhKStcIicpO2JhY2tncm91bmQtcG9zaXRpb246MCBcIitjK1wicHg7YmFja2dyb3VuZC1zaXplOlwiK2UrXCI7XCJ9fTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZSxcbntnZXRVaUNvbG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMudWlDb2xvcn0sc2V0VWlDb2xvcjpmdW5jdGlvbihhKXt2YXIgZz1iKENLRURJVE9SLmRvY3VtZW50KTtyZXR1cm4odGhpcy5zZXRVaUNvbG9yPWZ1bmN0aW9uKGEpe3RoaXMudWlDb2xvcj1hO3ZhciBiPUNLRURJVE9SLnNraW4uY2hhbWVsZW9uLGU9XCJcIixoPVwiXCI7XCJmdW5jdGlvblwiPT10eXBlb2YgYiYmKGU9Yih0aGlzLFwiZWRpdG9yXCIpLGg9Yih0aGlzLFwicGFuZWxcIikpO2E9W1tkLGFdXTtjKFtnXSxlLGEpO2MobSxoLGEpfSkuY2FsbCh0aGlzLGEpfX0pO3ZhciBsPVwiY2tlX3VpX2NvbG9yXCIsbT1bXSxkPS9cXCRjb2xvci9nO0NLRURJVE9SLm9uKFwiaW5zdGFuY2VMb2FkZWRcIixmdW5jdGlvbihhKXtpZighQ0tFRElUT1IuZW52LmllfHwhQ0tFRElUT1IuZW52LnF1aXJrcyl7dmFyIGc9YS5lZGl0b3I7YT1mdW5jdGlvbihhKXthPShhLmRhdGFbMF18fGEuZGF0YSkuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnKFwiaWZyYW1lXCIpLmdldEl0ZW0oMCkuZ2V0RnJhbWVEb2N1bWVudCgpO1xuaWYoIWEuZ2V0QnlJZChcImNrZV91aV9jb2xvclwiKSl7dmFyIGU9YihhKTttLnB1c2goZSk7Zy5vbihcImRlc3Ryb3lcIixmdW5jdGlvbigpe209Q0tFRElUT1IudG9vbHMuYXJyYXkuZmlsdGVyKG0sZnVuY3Rpb24oYSl7cmV0dXJuIGUhPT1hfSl9KTsoYT1nLmdldFVpQ29sb3IoKSkmJmMoW2VdLENLRURJVE9SLnNraW4uY2hhbWVsZW9uKGcsXCJwYW5lbFwiKSxbW2QsYV1dKX19O2cub24oXCJwYW5lbFNob3dcIixhKTtnLm9uKFwibWVudVNob3dcIixhKTtnLmNvbmZpZy51aUNvbG9yJiZnLnNldFVpQ29sb3IoZy5jb25maWcudWlDb2xvcil9fSl9KCksZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NkaXYgc3R5bGVcXHgzZFwid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0Oi0xMDAwMHB4O2JvcmRlcjoxcHggc29saWQ7Ym9yZGVyLWNvbG9yOnJlZCBibHVlXCJcXHgzZVxceDNjL2RpdlxceDNlJyxDS0VESVRPUi5kb2N1bWVudCk7XG5hLmFwcGVuZFRvKENLRURJVE9SLmRvY3VtZW50LmdldEhlYWQoKSk7dHJ5e3ZhciBmPWEuZ2V0Q29tcHV0ZWRTdHlsZShcImJvcmRlci10b3AtY29sb3JcIiksZT1hLmdldENvbXB1dGVkU3R5bGUoXCJib3JkZXItcmlnaHQtY29sb3JcIik7Q0tFRElUT1IuZW52LmhjPSEoIWZ8fGYhPWUpfWNhdGNoKGIpe0NLRURJVE9SLmVudi5oYz0hMX1hLnJlbW92ZSgpO0NLRURJVE9SLmVudi5oYyYmKENLRURJVE9SLmVudi5jc3NDbGFzcys9XCIgY2tlX2hjXCIpO0NLRURJVE9SLmRvY3VtZW50LmFwcGVuZFN0eWxlVGV4dChcIi5ja2V7dmlzaWJpbGl0eTpoaWRkZW47fVwiKTtDS0VESVRPUi5zdGF0dXM9XCJsb2FkZWRcIjtDS0VESVRPUi5maXJlT25jZShcImxvYWRlZFwiKTtpZihhPUNLRURJVE9SLl8ucGVuZGluZylmb3IoZGVsZXRlIENLRURJVE9SLl8ucGVuZGluZyxmPTA7ZjxhLmxlbmd0aDtmKyspQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5hcHBseShhW2ZdWzBdLGFbZl1bMV0pLENLRURJVE9SLmFkZChhW2ZdWzBdKX0oKSxcbkNLRURJVE9SLnNraW4ubmFtZT1cIm1vb25vLWxpc2FcIixDS0VESVRPUi5za2luLnVhX2VkaXRvcj1cImllLGllcXVpcmtzLGllOCxnZWNrb1wiLENLRURJVE9SLnNraW4udWFfZGlhbG9nPVwiaWUsaWVxdWlya3MsaWU4XCIsQ0tFRElUT1Iuc2tpbi5jaGFtZWxlb249ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbigpe3JldHVybiBmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz1hLm1hdGNoKC9bXiNdLi9nKSxmPTA7Mz5mO2YrKyl7dmFyIGw9ZixtO209cGFyc2VJbnQoY1tmXSwxNik7bT0oXCIwXCIrKDA+Yj8wfG0qKDErYik6MHxtKygyNTUtbSkqYikudG9TdHJpbmcoMTYpKS5zbGljZSgtMik7Y1tsXT1tfXJldHVyblwiI1wiK2Muam9pbihcIlwiKX19KCksZj17ZWRpdG9yOm5ldyBDS0VESVRPUi50ZW1wbGF0ZShcIntpZH0uY2tlX2Nocm9tZSBbYm9yZGVyLWNvbG9yOntkZWZhdWx0Qm9yZGVyfTtdIHtpZH0gLmNrZV90b3AgWyBiYWNrZ3JvdW5kLWNvbG9yOntkZWZhdWx0QmFja2dyb3VuZH07Ym9yZGVyLWJvdHRvbS1jb2xvcjp7ZGVmYXVsdEJvcmRlcn07XSB7aWR9IC5ja2VfYm90dG9tIFtiYWNrZ3JvdW5kLWNvbG9yOntkZWZhdWx0QmFja2dyb3VuZH07Ym9yZGVyLXRvcC1jb2xvcjp7ZGVmYXVsdEJvcmRlcn07XSB7aWR9IC5ja2VfcmVzaXplciBbYm9yZGVyLXJpZ2h0LWNvbG9yOntja2VSZXNpemVyfV0ge2lkfSAuY2tlX2RpYWxvZ190aXRsZSBbYmFja2dyb3VuZC1jb2xvcjp7ZGVmYXVsdEJhY2tncm91bmR9O2JvcmRlci1ib3R0b20tY29sb3I6e2RlZmF1bHRCb3JkZXJ9O10ge2lkfSAuY2tlX2RpYWxvZ19mb290ZXIgW2JhY2tncm91bmQtY29sb3I6e2RlZmF1bHRCYWNrZ3JvdW5kfTtvdXRsaW5lLWNvbG9yOntkZWZhdWx0Qm9yZGVyfTtdIHtpZH0gLmNrZV9kaWFsb2dfdGFiIFtiYWNrZ3JvdW5kLWNvbG9yOntkaWFsb2dUYWJ9O2JvcmRlci1jb2xvcjp7ZGVmYXVsdEJvcmRlcn07XSB7aWR9IC5ja2VfZGlhbG9nX3RhYjpob3ZlciBbYmFja2dyb3VuZC1jb2xvcjp7bGlnaHRCYWNrZ3JvdW5kfTtdIHtpZH0gLmNrZV9kaWFsb2dfY29udGVudHMgW2JvcmRlci10b3AtY29sb3I6e2RlZmF1bHRCb3JkZXJ9O10ge2lkfSAuY2tlX2RpYWxvZ190YWJfc2VsZWN0ZWQsIHtpZH0gLmNrZV9kaWFsb2dfdGFiX3NlbGVjdGVkOmhvdmVyIFtiYWNrZ3JvdW5kOntkaWFsb2dUYWJTZWxlY3RlZH07Ym9yZGVyLWJvdHRvbS1jb2xvcjp7ZGlhbG9nVGFiU2VsZWN0ZWRCb3JkZXJ9O10ge2lkfSAuY2tlX2RpYWxvZ19ib2R5IFtiYWNrZ3JvdW5kOntkaWFsb2dCb2R5fTtib3JkZXItY29sb3I6e2RlZmF1bHRCb3JkZXJ9O10ge2lkfSBhLmNrZV9idXR0b25fb2ZmOmhvdmVyLHtpZH0gYS5ja2VfYnV0dG9uX29mZjpmb2N1cyx7aWR9IGEuY2tlX2J1dHRvbl9vZmY6YWN0aXZlIFtiYWNrZ3JvdW5kLWNvbG9yOntkYXJrQmFja2dyb3VuZH07Ym9yZGVyLWNvbG9yOnt0b29sYmFyRWxlbWVudHNCb3JkZXJ9O10ge2lkfSAuY2tlX2J1dHRvbl9vbiBbYmFja2dyb3VuZC1jb2xvcjp7Y2tlQnV0dG9uT259O2JvcmRlci1jb2xvcjp7dG9vbGJhckVsZW1lbnRzQm9yZGVyfTtdIHtpZH0gLmNrZV90b29sYmFyX3NlcGFyYXRvcix7aWR9IC5ja2VfdG9vbGdyb3VwIGEuY2tlX2J1dHRvbjpsYXN0LWNoaWxkOmFmdGVyLHtpZH0gLmNrZV90b29sZ3JvdXAgYS5ja2VfYnV0dG9uLmNrZV9idXR0b25fZGlzYWJsZWQ6aG92ZXI6bGFzdC1jaGlsZDphZnRlciBbYmFja2dyb3VuZC1jb2xvcjoge3Rvb2xiYXJFbGVtZW50c0JvcmRlcn07Ym9yZGVyLWNvbG9yOiB7dG9vbGJhckVsZW1lbnRzQm9yZGVyfTtdIHtpZH0gYS5ja2VfY29tYm9fYnV0dG9uOmhvdmVyLHtpZH0gYS5ja2VfY29tYm9fYnV0dG9uOmZvY3VzLHtpZH0gLmNrZV9jb21ib19vbiBhLmNrZV9jb21ib19idXR0b24gW2JvcmRlci1jb2xvcjp7dG9vbGJhckVsZW1lbnRzQm9yZGVyfTtiYWNrZ3JvdW5kLWNvbG9yOntkYXJrQmFja2dyb3VuZH07XSB7aWR9IC5ja2VfY29tYm86YWZ0ZXIgW2JvcmRlci1jb2xvcjp7dG9vbGJhckVsZW1lbnRzQm9yZGVyfTtdIHtpZH0gLmNrZV9wYXRoX2l0ZW0gW2NvbG9yOntlbGVtZW50c1BhdGhDb2xvcn07XSB7aWR9IGEuY2tlX3BhdGhfaXRlbTpob3Zlcix7aWR9IGEuY2tlX3BhdGhfaXRlbTpmb2N1cyx7aWR9IGEuY2tlX3BhdGhfaXRlbTphY3RpdmUgW2JhY2tncm91bmQtY29sb3I6e2RhcmtCYWNrZ3JvdW5kfTtdIHtpZH0uY2tlX3BhbmVsIFtib3JkZXItY29sb3I6e2RlZmF1bHRCb3JkZXJ9O10gXCIpLFxucGFuZWw6bmV3IENLRURJVE9SLnRlbXBsYXRlKFwiLmNrZV9wYW5lbF9ncm91cHRpdGxlIFtiYWNrZ3JvdW5kLWNvbG9yOntsaWdodEJhY2tncm91bmR9O2JvcmRlci1jb2xvcjp7ZGVmYXVsdEJvcmRlcn07XSAuY2tlX21lbnVidXR0b25faWNvbiBbYmFja2dyb3VuZC1jb2xvcjp7bWVudWJ1dHRvbkljb259O10gLmNrZV9tZW51YnV0dG9uOmhvdmVyLC5ja2VfbWVudWJ1dHRvbjpmb2N1cywuY2tlX21lbnVidXR0b246YWN0aXZlIFtiYWNrZ3JvdW5kLWNvbG9yOnttZW51YnV0dG9uSG92ZXJ9O10gLmNrZV9tZW51YnV0dG9uOmhvdmVyIC5ja2VfbWVudWJ1dHRvbl9pY29uLCAuY2tlX21lbnVidXR0b246Zm9jdXMgLmNrZV9tZW51YnV0dG9uX2ljb24sIC5ja2VfbWVudWJ1dHRvbjphY3RpdmUgLmNrZV9tZW51YnV0dG9uX2ljb24gW2JhY2tncm91bmQtY29sb3I6e21lbnVidXR0b25JY29uSG92ZXJ9O10gLmNrZV9tZW51YnV0dG9uX2Rpc2FibGVkOmhvdmVyIC5ja2VfbWVudWJ1dHRvbl9pY29uLC5ja2VfbWVudWJ1dHRvbl9kaXNhYmxlZDpmb2N1cyAuY2tlX21lbnVidXR0b25faWNvbiwuY2tlX21lbnVidXR0b25fZGlzYWJsZWQ6YWN0aXZlIC5ja2VfbWVudWJ1dHRvbl9pY29uIFtiYWNrZ3JvdW5kLWNvbG9yOnttZW51YnV0dG9uSWNvbn07XSAuY2tlX21lbnVzZXBhcmF0b3IgW2JhY2tncm91bmQtY29sb3I6e21lbnVidXR0b25JY29ufTtdIGE6aG92ZXIuY2tlX2NvbG9yYm94LCBhOmFjdGl2ZS5ja2VfY29sb3Jib3ggW2JvcmRlci1jb2xvcjp7ZGVmYXVsdEJvcmRlcn07XSBhOmhvdmVyLmNrZV9jb2xvcmF1dG8sIGE6aG92ZXIuY2tlX2NvbG9ybW9yZSwgYTphY3RpdmUuY2tlX2NvbG9yYXV0bywgYTphY3RpdmUuY2tlX2NvbG9ybW9yZSBbYmFja2dyb3VuZC1jb2xvcjp7Y2tlQ29sb3JhdXRvfTtib3JkZXItY29sb3I6e2RlZmF1bHRCb3JkZXJ9O10gXCIpfTtcbnJldHVybiBmdW5jdGlvbihlLGIpe3ZhciBjPWEoZS51aUNvbG9yLC40KSxjPXtpZDpcIi5cIitlLmlkLGRlZmF1bHRCb3JkZXI6YShjLC0uMiksdG9vbGJhckVsZW1lbnRzQm9yZGVyOmEoYywtLjI1KSxkZWZhdWx0QmFja2dyb3VuZDpjLGxpZ2h0QmFja2dyb3VuZDphKGMsLjgpLGRhcmtCYWNrZ3JvdW5kOmEoYywtLjE1KSxja2VCdXR0b25PbjphKGMsLjQpLGNrZVJlc2l6ZXI6YShjLC0uNCksY2tlQ29sb3JhdXRvOmEoYywuOCksZGlhbG9nQm9keTphKGMsLjcpLGRpYWxvZ1RhYjphKGMsLjY1KSxkaWFsb2dUYWJTZWxlY3RlZDpcIiNGRkZcIixkaWFsb2dUYWJTZWxlY3RlZEJvcmRlcjpcIiNGRkZcIixlbGVtZW50c1BhdGhDb2xvcjphKGMsLS42KSxtZW51YnV0dG9uSG92ZXI6YShjLC4xKSxtZW51YnV0dG9uSWNvbjphKGMsLjUpLG1lbnVidXR0b25JY29uSG92ZXI6YShjLC4zKX07cmV0dXJuIGZbYl0ub3V0cHV0KGMpLnJlcGxhY2UoL1xcWy9nLFwie1wiKS5yZXBsYWNlKC9cXF0vZyxcIn1cIil9fSgpLFxuQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJkaWFsb2d1aVwiLHtvbkxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT1mdW5jdGlvbihhKXt0aGlzLl98fCh0aGlzLl89e30pO3RoaXMuX1tcImRlZmF1bHRcIl09dGhpcy5fLmluaXRWYWx1ZT1hW1wiZGVmYXVsdFwiXXx8XCJcIjt0aGlzLl8ucmVxdWlyZWQ9YS5yZXF1aXJlZHx8ITE7Zm9yKHZhciBiPVt0aGlzLl9dLGM9MTtjPGFyZ3VtZW50cy5sZW5ndGg7YysrKWIucHVzaChhcmd1bWVudHNbY10pO2IucHVzaCghMCk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kLmFwcGx5KENLRURJVE9SLnRvb2xzLGIpO3JldHVybiB0aGlzLl99LGY9e2J1aWxkOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gbmV3IENLRURJVE9SLnVpLmRpYWxvZy50ZXh0SW5wdXQoYSxiLGMpfX0sZT17YnVpbGQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBuZXcgQ0tFRElUT1IudWkuZGlhbG9nW2IudHlwZV0oYSxiLGMpfX0sYj17aXNDaGFuZ2VkOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0VmFsdWUoKSE9XG50aGlzLmdldEluaXRWYWx1ZSgpfSxyZXNldDpmdW5jdGlvbihhKXt0aGlzLnNldFZhbHVlKHRoaXMuZ2V0SW5pdFZhbHVlKCksYSl9LHNldEluaXRWYWx1ZTpmdW5jdGlvbigpe3RoaXMuXy5pbml0VmFsdWU9dGhpcy5nZXRWYWx1ZSgpfSxyZXNldEluaXRWYWx1ZTpmdW5jdGlvbigpe3RoaXMuXy5pbml0VmFsdWU9dGhpcy5fW1wiZGVmYXVsdFwiXX0sZ2V0SW5pdFZhbHVlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5pbml0VmFsdWV9fSxjPUNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxDS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50LnByb3RvdHlwZS5ldmVudFByb2Nlc3NvcnMse29uQ2hhbmdlOmZ1bmN0aW9uKGEsYil7dGhpcy5fLmRvbU9uQ2hhbmdlUmVnaXN0ZXJlZHx8KGEub24oXCJsb2FkXCIsZnVuY3Rpb24oKXt0aGlzLmdldElucHV0RWxlbWVudCgpLm9uKFwiY2hhbmdlXCIsZnVuY3Rpb24oKXthLnBhcnRzLmRpYWxvZy5pc1Zpc2libGUoKSYmdGhpcy5maXJlKFwiY2hhbmdlXCIse3ZhbHVlOnRoaXMuZ2V0VmFsdWUoKX0pfSxcbnRoaXMpfSx0aGlzKSx0aGlzLl8uZG9tT25DaGFuZ2VSZWdpc3RlcmVkPSEwKTt0aGlzLm9uKFwiY2hhbmdlXCIsYil9fSwhMCksaz0vXm9uKFtBLVpdXFx3KykvLGw9ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpKGsudGVzdChiKXx8XCJ0aXRsZVwiPT1ifHxcInR5cGVcIj09YikmJmRlbGV0ZSBhW2JdO3JldHVybiBhfSxtPWZ1bmN0aW9uKGEpe2E9YS5kYXRhLmdldEtleXN0cm9rZSgpO2E9PUNLRURJVE9SLlNISUZUK0NLRURJVE9SLkFMVCszNj90aGlzLnNldERpcmVjdGlvbk1hcmtlcihcImx0clwiKTphPT1DS0VESVRPUi5TSElGVCtDS0VESVRPUi5BTFQrMzUmJnRoaXMuc2V0RGlyZWN0aW9uTWFya2VyKFwicnRsXCIpfTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IudWkuZGlhbG9nLHtsYWJlbGVkRWxlbWVudDpmdW5jdGlvbihiLGMsZyxlKXtpZighKDQ+YXJndW1lbnRzLmxlbmd0aCkpe3ZhciBmPWEuY2FsbCh0aGlzLGMpO2YubGFiZWxJZD1DS0VESVRPUi50b29scy5nZXROZXh0SWQoKStcblwiX2xhYmVsXCI7dGhpcy5fLmNoaWxkcmVuPVtdO3ZhciBrPXtyb2xlOmMucm9sZXx8XCJwcmVzZW50YXRpb25cIn07Yy5pbmNsdWRlTGFiZWwmJihrW1wiYXJpYS1sYWJlbGxlZGJ5XCJdPWYubGFiZWxJZCk7Q0tFRElUT1IudWkuZGlhbG9nLnVpRWxlbWVudC5jYWxsKHRoaXMsYixjLGcsXCJkaXZcIixudWxsLGssZnVuY3Rpb24oKXt2YXIgYT1bXSxnPWMucmVxdWlyZWQ/XCIgY2tlX3JlcXVpcmVkXCI6XCJcIjtcImhvcml6b250YWxcIiE9Yy5sYWJlbExheW91dD9hLnB1c2goJ1xceDNjbGFiZWwgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ191aV9sYWJlbGVkX2xhYmVsJytnKydcIiAnLCcgaWRcXHgzZFwiJytmLmxhYmVsSWQrJ1wiJyxmLmlucHV0SWQ/JyBmb3JcXHgzZFwiJytmLmlucHV0SWQrJ1wiJzpcIlwiLChjLmxhYmVsU3R5bGU/JyBzdHlsZVxceDNkXCInK2MubGFiZWxTdHlsZSsnXCInOlwiXCIpK1wiXFx4M2VcIixjLnJlcXVpcmVkP2MubGFiZWwrJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfZGlhbG9nX3VpX2xhYmVsZWRfcmVxdWlyZWRcIiBhcmlhLWhpZGRlblxceDNkXCJ0cnVlXCJcXHgzZSpcXHgzYy9zcGFuXFx4M2UnOlxuYy5sYWJlbCxcIlxceDNjL2xhYmVsXFx4M2VcIiwnXFx4M2NkaXYgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ191aV9sYWJlbGVkX2NvbnRlbnRcIicsYy5jb250cm9sU3R5bGU/JyBzdHlsZVxceDNkXCInK2MuY29udHJvbFN0eWxlKydcIic6XCJcIiwnIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZScsZS5jYWxsKHRoaXMsYixjKSxcIlxceDNjL2RpdlxceDNlXCIpOihnPXt0eXBlOlwiaGJveFwiLHdpZHRoczpjLndpZHRocyxwYWRkaW5nOjAsY2hpbGRyZW46W3t0eXBlOlwiaHRtbFwiLGh0bWw6J1xceDNjbGFiZWwgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ191aV9sYWJlbGVkX2xhYmVsJytnKydcIiBpZFxceDNkXCInK2YubGFiZWxJZCsnXCIgZm9yXFx4M2RcIicrZi5pbnB1dElkKydcIicrKGMubGFiZWxTdHlsZT8nIHN0eWxlXFx4M2RcIicrYy5sYWJlbFN0eWxlKydcIic6XCJcIikrXCJcXHgzZVwiK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoYy5sYWJlbCkrXCJcXHgzYy9sYWJlbFxceDNlXCJ9LHt0eXBlOlwiaHRtbFwiLGh0bWw6J1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfZGlhbG9nX3VpX2xhYmVsZWRfY29udGVudFwiJytcbihjLmNvbnRyb2xTdHlsZT8nIHN0eWxlXFx4M2RcIicrYy5jb250cm9sU3R5bGUrJ1wiJzpcIlwiKStcIlxceDNlXCIrZS5jYWxsKHRoaXMsYixjKStcIlxceDNjL3NwYW5cXHgzZVwifV19LENLRURJVE9SLmRpYWxvZy5fLnVpRWxlbWVudEJ1aWxkZXJzLmhib3guYnVpbGQoYixnLGEpKTtyZXR1cm4gYS5qb2luKFwiXCIpfSl9fSx0ZXh0SW5wdXQ6ZnVuY3Rpb24oYixjLGcpe2lmKCEoMz5hcmd1bWVudHMubGVuZ3RoKSl7YS5jYWxsKHRoaXMsYyk7dmFyIGU9dGhpcy5fLmlucHV0SWQ9Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCkrXCJfdGV4dElucHV0XCIsZj17XCJjbGFzc1wiOlwiY2tlX2RpYWxvZ191aV9pbnB1dF9cIitjLnR5cGUsaWQ6ZSx0eXBlOmMudHlwZX07Yy52YWxpZGF0ZSYmKHRoaXMudmFsaWRhdGU9Yy52YWxpZGF0ZSk7Yy5tYXhMZW5ndGgmJihmLm1heGxlbmd0aD1jLm1heExlbmd0aCk7Yy5zaXplJiYoZi5zaXplPWMuc2l6ZSk7Yy5pbnB1dFN0eWxlJiYoZi5zdHlsZT1jLmlucHV0U3R5bGUpO3ZhciBrPVxudGhpcyxsPSExO2Iub24oXCJsb2FkXCIsZnVuY3Rpb24oKXtrLmdldElucHV0RWxlbWVudCgpLm9uKFwia2V5ZG93blwiLGZ1bmN0aW9uKGEpezEzPT1hLmRhdGEuZ2V0S2V5c3Ryb2tlKCkmJihsPSEwKX0pO2suZ2V0SW5wdXRFbGVtZW50KCkub24oXCJrZXl1cFwiLGZ1bmN0aW9uKGEpezEzPT1hLmRhdGEuZ2V0S2V5c3Ryb2tlKCkmJmwmJihiLmdldEJ1dHRvbihcIm9rXCIpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Yi5nZXRCdXR0b24oXCJva1wiKS5jbGljaygpfSwwKSxsPSExKTtrLmJpZGkmJm0uY2FsbChrLGEpfSxudWxsLG51bGwsMUUzKX0pO0NLRURJVE9SLnVpLmRpYWxvZy5sYWJlbGVkRWxlbWVudC5jYWxsKHRoaXMsYixjLGcsZnVuY3Rpb24oKXt2YXIgYT1bJ1xceDNjZGl2IGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfdWlfaW5wdXRfJyxjLnR5cGUsJ1wiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCInXTtjLndpZHRoJiZhLnB1c2goJ3N0eWxlXFx4M2RcIndpZHRoOicrYy53aWR0aCsnXCIgJyk7YS5wdXNoKFwiXFx4M2VcXHgzY2lucHV0IFwiKTtcbmZbXCJhcmlhLWxhYmVsbGVkYnlcIl09dGhpcy5fLmxhYmVsSWQ7dGhpcy5fLnJlcXVpcmVkJiYoZltcImFyaWEtcmVxdWlyZWRcIl09dGhpcy5fLnJlcXVpcmVkKTtmb3IodmFyIGIgaW4gZilhLnB1c2goYisnXFx4M2RcIicrZltiXSsnXCIgJyk7YS5wdXNoKFwiIC9cXHgzZVxceDNjL2RpdlxceDNlXCIpO3JldHVybiBhLmpvaW4oXCJcIil9KX19LHRleHRhcmVhOmZ1bmN0aW9uKGIsYyxnKXtpZighKDM+YXJndW1lbnRzLmxlbmd0aCkpe2EuY2FsbCh0aGlzLGMpO3ZhciBlPXRoaXMsZj10aGlzLl8uaW5wdXRJZD1DS0VESVRPUi50b29scy5nZXROZXh0SWQoKStcIl90ZXh0YXJlYVwiLGs9e307Yy52YWxpZGF0ZSYmKHRoaXMudmFsaWRhdGU9Yy52YWxpZGF0ZSk7ay5yb3dzPWMucm93c3x8NTtrLmNvbHM9Yy5jb2xzfHwyMDtrW1wiY2xhc3NcIl09XCJja2VfZGlhbG9nX3VpX2lucHV0X3RleHRhcmVhIFwiKyhjW1wiY2xhc3NcIl18fFwiXCIpO1widW5kZWZpbmVkXCIhPXR5cGVvZiBjLmlucHV0U3R5bGUmJihrLnN0eWxlPWMuaW5wdXRTdHlsZSk7XG5jLmRpciYmKGsuZGlyPWMuZGlyKTtpZihlLmJpZGkpYi5vbihcImxvYWRcIixmdW5jdGlvbigpe2UuZ2V0SW5wdXRFbGVtZW50KCkub24oXCJrZXl1cFwiLG0pfSxlKTtDS0VESVRPUi51aS5kaWFsb2cubGFiZWxlZEVsZW1lbnQuY2FsbCh0aGlzLGIsYyxnLGZ1bmN0aW9uKCl7a1tcImFyaWEtbGFiZWxsZWRieVwiXT10aGlzLl8ubGFiZWxJZDt0aGlzLl8ucmVxdWlyZWQmJihrW1wiYXJpYS1yZXF1aXJlZFwiXT10aGlzLl8ucmVxdWlyZWQpO3ZhciBhPVsnXFx4M2NkaXYgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ191aV9pbnB1dF90ZXh0YXJlYVwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZVxceDNjdGV4dGFyZWEgaWRcXHgzZFwiJyxmLCdcIiAnXSxiO2ZvcihiIGluIGspYS5wdXNoKGIrJ1xceDNkXCInK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoa1tiXSkrJ1wiICcpO2EucHVzaChcIlxceDNlXCIsQ0tFRElUT1IudG9vbHMuaHRtbEVuY29kZShlLl9bXCJkZWZhdWx0XCJdKSxcIlxceDNjL3RleHRhcmVhXFx4M2VcXHgzYy9kaXZcXHgzZVwiKTtcbnJldHVybiBhLmpvaW4oXCJcIil9KX19LGNoZWNrYm94OmZ1bmN0aW9uKGIsYyxnKXtpZighKDM+YXJndW1lbnRzLmxlbmd0aCkpe3ZhciBlPWEuY2FsbCh0aGlzLGMse1wiZGVmYXVsdFwiOiEhY1tcImRlZmF1bHRcIl19KTtjLnZhbGlkYXRlJiYodGhpcy52YWxpZGF0ZT1jLnZhbGlkYXRlKTtDS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50LmNhbGwodGhpcyxiLGMsZyxcInNwYW5cIixudWxsLG51bGwsZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi50b29scy5leHRlbmQoe30sYyx7aWQ6Yy5pZD9jLmlkK1wiX2NoZWNrYm94XCI6Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCkrXCJfY2hlY2tib3hcIn0sITApLGc9W10sZj1DS0VESVRPUi50b29scy5nZXROZXh0SWQoKStcIl9sYWJlbFwiLGs9e1wiY2xhc3NcIjpcImNrZV9kaWFsb2dfdWlfY2hlY2tib3hfaW5wdXRcIix0eXBlOlwiY2hlY2tib3hcIixcImFyaWEtbGFiZWxsZWRieVwiOmZ9O2woYSk7Y1tcImRlZmF1bHRcIl0mJihrLmNoZWNrZWQ9XCJjaGVja2VkXCIpO1widW5kZWZpbmVkXCIhPVxudHlwZW9mIGEuaW5wdXRTdHlsZSYmKGEuc3R5bGU9YS5pbnB1dFN0eWxlKTtlLmNoZWNrYm94PW5ldyBDS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50KGIsYSxnLFwiaW5wdXRcIixudWxsLGspO2cucHVzaCgnIFxceDNjbGFiZWwgaWRcXHgzZFwiJyxmLCdcIiBmb3JcXHgzZFwiJyxrLmlkLCdcIicrKGMubGFiZWxTdHlsZT8nIHN0eWxlXFx4M2RcIicrYy5sYWJlbFN0eWxlKydcIic6XCJcIikrXCJcXHgzZVwiLENLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoYy5sYWJlbCksXCJcXHgzYy9sYWJlbFxceDNlXCIpO3JldHVybiBnLmpvaW4oXCJcIil9KX19LHJhZGlvOmZ1bmN0aW9uKGIsYyxnKXtpZighKDM+YXJndW1lbnRzLmxlbmd0aCkpe2EuY2FsbCh0aGlzLGMpO3RoaXMuX1tcImRlZmF1bHRcIl18fCh0aGlzLl9bXCJkZWZhdWx0XCJdPXRoaXMuXy5pbml0VmFsdWU9Yy5pdGVtc1swXVsxXSk7Yy52YWxpZGF0ZSYmKHRoaXMudmFsaWRhdGU9Yy52YWxpZGF0ZSk7dmFyIGU9W10sZj10aGlzO2Mucm9sZT1cInJhZGlvZ3JvdXBcIjtcbmMuaW5jbHVkZUxhYmVsPSEwO0NLRURJVE9SLnVpLmRpYWxvZy5sYWJlbGVkRWxlbWVudC5jYWxsKHRoaXMsYixjLGcsZnVuY3Rpb24oKXtmb3IodmFyIGE9W10sZz1bXSxrPShjLmlkP2MuaWQ6Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCkpK1wiX3JhZGlvXCIsbT0wO208Yy5pdGVtcy5sZW5ndGg7bSsrKXt2YXIgej1jLml0ZW1zW21dLHE9dm9pZCAwIT09elsyXT96WzJdOnpbMF0sQT12b2lkIDAhPT16WzFdP3pbMV06elswXSx5PUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpK1wiX3JhZGlvX2lucHV0XCIsdD15K1wiX2xhYmVsXCIseT1DS0VESVRPUi50b29scy5leHRlbmQoe30sYyx7aWQ6eSx0aXRsZTpudWxsLHR5cGU6bnVsbH0sITApLHE9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHt9LHkse3RpdGxlOnF9LCEwKSx2PXt0eXBlOlwicmFkaW9cIixcImNsYXNzXCI6XCJja2VfZGlhbG9nX3VpX3JhZGlvX2lucHV0XCIsbmFtZTprLHZhbHVlOkEsXCJhcmlhLWxhYmVsbGVkYnlcIjp0fSxCPVtdO2YuX1tcImRlZmF1bHRcIl09PVxuQSYmKHYuY2hlY2tlZD1cImNoZWNrZWRcIik7bCh5KTtsKHEpO1widW5kZWZpbmVkXCIhPXR5cGVvZiB5LmlucHV0U3R5bGUmJih5LnN0eWxlPXkuaW5wdXRTdHlsZSk7eS5rZXlib2FyZEZvY3VzYWJsZT0hMDtlLnB1c2gobmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQoYix5LEIsXCJpbnB1dFwiLG51bGwsdikpO0IucHVzaChcIiBcIik7bmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQoYixxLEIsXCJsYWJlbFwiLG51bGwse2lkOnQsXCJmb3JcIjp2LmlkfSx6WzBdKTthLnB1c2goQi5qb2luKFwiXCIpKX1uZXcgQ0tFRElUT1IudWkuZGlhbG9nLmhib3goYixlLGEsZyk7cmV0dXJuIGcuam9pbihcIlwiKX0pO3RoaXMuXy5jaGlsZHJlbj1lfX0sYnV0dG9uOmZ1bmN0aW9uKGIsYyxnKXtpZihhcmd1bWVudHMubGVuZ3RoKXtcImZ1bmN0aW9uXCI9PXR5cGVvZiBjJiYoYz1jKGIuZ2V0UGFyZW50RWRpdG9yKCkpKTthLmNhbGwodGhpcyxjLHtkaXNhYmxlZDpjLmRpc2FibGVkfHwhMX0pO0NLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKHRoaXMpO1xudmFyIGU9dGhpcztiLm9uKFwibG9hZFwiLGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRFbGVtZW50KCk7KGZ1bmN0aW9uKCl7YS5vbihcImNsaWNrXCIsZnVuY3Rpb24oYSl7ZS5jbGljaygpO2EuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfSk7YS5vbihcImtleWRvd25cIixmdW5jdGlvbihhKXthLmRhdGEuZ2V0S2V5c3Ryb2tlKClpbnszMjoxfSYmKGUuY2xpY2soKSxhLmRhdGEucHJldmVudERlZmF1bHQoKSl9KX0pKCk7YS51bnNlbGVjdGFibGUoKX0sdGhpcyk7dmFyIGY9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHt9LGMpO2RlbGV0ZSBmLnN0eWxlO3ZhciBrPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpK1wiX2xhYmVsXCI7Q0tFRElUT1IudWkuZGlhbG9nLnVpRWxlbWVudC5jYWxsKHRoaXMsYixmLGcsXCJhXCIsbnVsbCx7c3R5bGU6Yy5zdHlsZSxocmVmOlwiamF2YXNjcmlwdDp2b2lkKDApXCIsdGl0bGU6Yy5sYWJlbCxoaWRlZm9jdXM6XCJ0cnVlXCIsXCJjbGFzc1wiOmNbXCJjbGFzc1wiXSxyb2xlOlwiYnV0dG9uXCIsXG5cImFyaWEtbGFiZWxsZWRieVwiOmt9LCdcXHgzY3NwYW4gaWRcXHgzZFwiJytrKydcIiBjbGFzc1xceDNkXCJja2VfZGlhbG9nX3VpX2J1dHRvblwiXFx4M2UnK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoYy5sYWJlbCkrXCJcXHgzYy9zcGFuXFx4M2VcIil9fSxzZWxlY3Q6ZnVuY3Rpb24oYixjLGcpe2lmKCEoMz5hcmd1bWVudHMubGVuZ3RoKSl7dmFyIGU9YS5jYWxsKHRoaXMsYyk7Yy52YWxpZGF0ZSYmKHRoaXMudmFsaWRhdGU9Yy52YWxpZGF0ZSk7ZS5pbnB1dElkPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpK1wiX3NlbGVjdFwiO0NLRURJVE9SLnVpLmRpYWxvZy5sYWJlbGVkRWxlbWVudC5jYWxsKHRoaXMsYixjLGcsZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi50b29scy5leHRlbmQoe30sYyx7aWQ6Yy5pZD9jLmlkK1wiX3NlbGVjdFwiOkNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpK1wiX3NlbGVjdFwifSwhMCksZz1bXSxmPVtdLGs9e2lkOmUuaW5wdXRJZCxcImNsYXNzXCI6XCJja2VfZGlhbG9nX3VpX2lucHV0X3NlbGVjdFwiLFxuXCJhcmlhLWxhYmVsbGVkYnlcIjp0aGlzLl8ubGFiZWxJZH07Zy5wdXNoKCdcXHgzY2RpdiBjbGFzc1xceDNkXCJja2VfZGlhbG9nX3VpX2lucHV0XycsYy50eXBlLCdcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiJyk7Yy53aWR0aCYmZy5wdXNoKCdzdHlsZVxceDNkXCJ3aWR0aDonK2Mud2lkdGgrJ1wiICcpO2cucHVzaChcIlxceDNlXCIpO3ZvaWQgMCE9PWMuc2l6ZSYmKGsuc2l6ZT1jLnNpemUpO3ZvaWQgMCE9PWMubXVsdGlwbGUmJihrLm11bHRpcGxlPWMubXVsdGlwbGUpO2woYSk7Zm9yKHZhciBtPTAsejttPGMuaXRlbXMubGVuZ3RoJiYoej1jLml0ZW1zW21dKTttKyspZi5wdXNoKCdcXHgzY29wdGlvbiB2YWx1ZVxceDNkXCInLENLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUodm9pZCAwIT09elsxXT96WzFdOnpbMF0pLnJlcGxhY2UoL1wiL2csXCJcXHgyNnF1b3Q7XCIpLCdcIiAvXFx4M2UgJyxDS0VESVRPUi50b29scy5odG1sRW5jb2RlKHpbMF0pKTtcInVuZGVmaW5lZFwiIT10eXBlb2YgYS5pbnB1dFN0eWxlJiZcbihhLnN0eWxlPWEuaW5wdXRTdHlsZSk7ZS5zZWxlY3Q9bmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQoYixhLGcsXCJzZWxlY3RcIixudWxsLGssZi5qb2luKFwiXCIpKTtnLnB1c2goXCJcXHgzYy9kaXZcXHgzZVwiKTtyZXR1cm4gZy5qb2luKFwiXCIpfSl9fSxmaWxlOmZ1bmN0aW9uKGIsYyxnKXtpZighKDM+YXJndW1lbnRzLmxlbmd0aCkpe3ZvaWQgMD09PWNbXCJkZWZhdWx0XCJdJiYoY1tcImRlZmF1bHRcIl09XCJcIik7dmFyIGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKGEuY2FsbCh0aGlzLGMpLHtkZWZpbml0aW9uOmMsYnV0dG9uczpbXX0pO2MudmFsaWRhdGUmJih0aGlzLnZhbGlkYXRlPWMudmFsaWRhdGUpO2Iub24oXCJsb2FkXCIsZnVuY3Rpb24oKXtDS0VESVRPUi5kb2N1bWVudC5nZXRCeUlkKGUuZnJhbWVJZCkuZ2V0UGFyZW50KCkuYWRkQ2xhc3MoXCJja2VfZGlhbG9nX3VpX2lucHV0X2ZpbGVcIil9KTtDS0VESVRPUi51aS5kaWFsb2cubGFiZWxlZEVsZW1lbnQuY2FsbCh0aGlzLGIsYyxnLFxuZnVuY3Rpb24oKXtlLmZyYW1lSWQ9Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCkrXCJfZmlsZUlucHV0XCI7dmFyIGE9WydcXHgzY2lmcmFtZSBmcmFtZWJvcmRlclxceDNkXCIwXCIgYWxsb3d0cmFuc3BhcmVuY3lcXHgzZFwiMFwiIGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfdWlfaW5wdXRfZmlsZVwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCIgaWRcXHgzZFwiJyxlLmZyYW1lSWQsJ1wiIHRpdGxlXFx4M2RcIicsYy5sYWJlbCwnXCIgc3JjXFx4M2RcImphdmFzY3JpcHQ6dm9pZCgnXTthLnB1c2goQ0tFRElUT1IuZW52LmllP1wiKGZ1bmN0aW9uKCl7XCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiZG9jdW1lbnQub3BlbigpOyhcIitDS0VESVRPUi50b29scy5maXhEb21haW4rXCIpKCk7ZG9jdW1lbnQuY2xvc2UoKTtcIikrXCJ9KSgpXCI6XCIwXCIpO2EucHVzaCgnKVwiXFx4M2VcXHgzYy9pZnJhbWVcXHgzZScpO3JldHVybiBhLmpvaW4oXCJcIil9KX19LGZpbGVCdXR0b246ZnVuY3Rpb24oYixjLGcpe3ZhciBlPXRoaXM7aWYoISgzPmFyZ3VtZW50cy5sZW5ndGgpKXthLmNhbGwodGhpcyxcbmMpO2MudmFsaWRhdGUmJih0aGlzLnZhbGlkYXRlPWMudmFsaWRhdGUpO3ZhciBmPUNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxjKSxrPWYub25DbGljaztmLmNsYXNzTmFtZT0oZi5jbGFzc05hbWU/Zi5jbGFzc05hbWUrXCIgXCI6XCJcIikrXCJja2VfZGlhbG9nX3VpX2J1dHRvblwiO2Yub25DbGljaz1mdW5jdGlvbihhKXt2YXIgZz1jW1wiZm9yXCJdO2E9az9rLmNhbGwodGhpcyxhKTohMTshMSE9PWEmJihcInhoclwiIT09YSYmYi5nZXRDb250ZW50RWxlbWVudChnWzBdLGdbMV0pLnN1Ym1pdCgpLHRoaXMuZGlzYWJsZSgpKX07Yi5vbihcImxvYWRcIixmdW5jdGlvbigpe2IuZ2V0Q29udGVudEVsZW1lbnQoY1tcImZvclwiXVswXSxjW1wiZm9yXCJdWzFdKS5fLmJ1dHRvbnMucHVzaChlKX0pO0NLRURJVE9SLnVpLmRpYWxvZy5idXR0b24uY2FsbCh0aGlzLGIsZixnKX19LGh0bWw6ZnVuY3Rpb24oKXt2YXIgYT0vXlxccyo8W1xcdzpdK1xccysoW14+XSopPz4vLGI9L14oXFxzKjxbXFx3Ol0rKD86XFxzK1tePl0qKT8pKCg/Oi58XFxyfFxcbikrKSQvLFxuYz0vXFwvJC87cmV0dXJuIGZ1bmN0aW9uKGUsZixrKXtpZighKDM+YXJndW1lbnRzLmxlbmd0aCkpe3ZhciBsPVtdLG09Zi5odG1sO1wiXFx4M2NcIiE9bS5jaGFyQXQoMCkmJihtPVwiXFx4M2NzcGFuXFx4M2VcIittK1wiXFx4M2Mvc3BhblxceDNlXCIpO3ZhciB1PWYuZm9jdXM7aWYodSl7dmFyIHo9dGhpcy5mb2N1czt0aGlzLmZvY3VzPWZ1bmN0aW9uKCl7KFwiZnVuY3Rpb25cIj09dHlwZW9mIHU/dTp6KS5jYWxsKHRoaXMpO3RoaXMuZmlyZShcImZvY3VzXCIpfTtmLmlzRm9jdXNhYmxlJiYodGhpcy5pc0ZvY3VzYWJsZT10aGlzLmlzRm9jdXNhYmxlKTt0aGlzLmtleWJvYXJkRm9jdXNhYmxlPSEwfUNLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQuY2FsbCh0aGlzLGUsZixsLFwic3BhblwiLG51bGwsbnVsbCxcIlwiKTtsPWwuam9pbihcIlwiKS5tYXRjaChhKTttPW0ubWF0Y2goYil8fFtcIlwiLFwiXCIsXCJcIl07Yy50ZXN0KG1bMV0pJiYobVsxXT1tWzFdLnNsaWNlKDAsLTEpLG1bMl09XCIvXCIrbVsyXSk7ay5wdXNoKFttWzFdLFxuXCIgXCIsbFsxXXx8XCJcIixtWzJdXS5qb2luKFwiXCIpKX19fSgpLGZpZWxkc2V0OmZ1bmN0aW9uKGEsYixjLGUsZil7dmFyIGs9Zi5sYWJlbDt0aGlzLl89e2NoaWxkcmVuOmJ9O0NLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQuY2FsbCh0aGlzLGEsZixlLFwiZmllbGRzZXRcIixudWxsLG51bGwsZnVuY3Rpb24oKXt2YXIgYT1bXTtrJiZhLnB1c2goXCJcXHgzY2xlZ2VuZFwiKyhmLmxhYmVsU3R5bGU/JyBzdHlsZVxceDNkXCInK2YubGFiZWxTdHlsZSsnXCInOlwiXCIpK1wiXFx4M2VcIitrK1wiXFx4M2MvbGVnZW5kXFx4M2VcIik7Zm9yKHZhciBiPTA7YjxjLmxlbmd0aDtiKyspYS5wdXNoKGNbYl0pO3JldHVybiBhLmpvaW4oXCJcIil9KX19LCEwKTtDS0VESVRPUi51aS5kaWFsb2cuaHRtbC5wcm90b3R5cGU9bmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQ7Q0tFRElUT1IudWkuZGlhbG9nLmxhYmVsZWRFbGVtZW50LnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQsXG57c2V0TGFiZWw6ZnVuY3Rpb24oYSl7dmFyIGI9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLl8ubGFiZWxJZCk7MT5iLmdldENoaWxkQ291bnQoKT8obmV3IENLRURJVE9SLmRvbS50ZXh0KGEsQ0tFRElUT1IuZG9jdW1lbnQpKS5hcHBlbmRUbyhiKTpiLmdldENoaWxkKDApLiQubm9kZVZhbHVlPWE7cmV0dXJuIHRoaXN9LGdldExhYmVsOmZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLl8ubGFiZWxJZCk7cmV0dXJuIWF8fDE+YS5nZXRDaGlsZENvdW50KCk/XCJcIjphLmdldENoaWxkKDApLmdldFRleHQoKX0sZXZlbnRQcm9jZXNzb3JzOmN9LCEwKTtDS0VESVRPUi51aS5kaWFsb2cuYnV0dG9uLnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQse2NsaWNrOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5kaXNhYmxlZD8hMTp0aGlzLmZpcmUoXCJjbGlja1wiLHtkaWFsb2c6dGhpcy5fLmRpYWxvZ30pfSxcbmVuYWJsZTpmdW5jdGlvbigpe3RoaXMuXy5kaXNhYmxlZD0hMTt2YXIgYT10aGlzLmdldEVsZW1lbnQoKTthJiZhLnJlbW92ZUNsYXNzKFwiY2tlX2Rpc2FibGVkXCIpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7dGhpcy5fLmRpc2FibGVkPSEwO3RoaXMuZ2V0RWxlbWVudCgpLmFkZENsYXNzKFwiY2tlX2Rpc2FibGVkXCIpfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRFbGVtZW50KCkuZ2V0Rmlyc3QoKS5pc1Zpc2libGUoKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuXy5kaXNhYmxlZH0sZXZlbnRQcm9jZXNzb3JzOkNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxDS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50LnByb3RvdHlwZS5ldmVudFByb2Nlc3NvcnMse29uQ2xpY2s6ZnVuY3Rpb24oYSxiKXt0aGlzLm9uKFwiY2xpY2tcIixmdW5jdGlvbigpe2IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSl9fSwhMCksYWNjZXNzS2V5VXA6ZnVuY3Rpb24oKXt0aGlzLmNsaWNrKCl9LFxuYWNjZXNzS2V5RG93bjpmdW5jdGlvbigpe3RoaXMuZm9jdXMoKX0sa2V5Ym9hcmRGb2N1c2FibGU6ITB9LCEwKTtDS0VESVRPUi51aS5kaWFsb2cudGV4dElucHV0LnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLnVpLmRpYWxvZy5sYWJlbGVkRWxlbWVudCx7Z2V0SW5wdXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIENLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQodGhpcy5fLmlucHV0SWQpfSxmb2N1czpmdW5jdGlvbigpe3ZhciBhPXRoaXMuc2VsZWN0UGFyZW50VGFiKCk7c2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBiPWEuZ2V0SW5wdXRFbGVtZW50KCk7YiYmYi4kLmZvY3VzKCl9LDApfSxzZWxlY3Q6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLnNlbGVjdFBhcmVudFRhYigpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYj1hLmdldElucHV0RWxlbWVudCgpO2ImJihiLiQuZm9jdXMoKSxiLiQuc2VsZWN0KCkpfSwwKX0sYWNjZXNzS2V5VXA6ZnVuY3Rpb24oKXt0aGlzLnNlbGVjdCgpfSxcbnNldFZhbHVlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuYmlkaSl7dmFyIGI9YSYmYS5jaGFyQXQoMCk7KGI9XCLigKpcIj09Yj9cImx0clwiOlwi4oCrXCI9PWI/XCJydGxcIjpudWxsKSYmKGE9YS5zbGljZSgxKSk7dGhpcy5zZXREaXJlY3Rpb25NYXJrZXIoYil9YXx8KGE9XCJcIik7cmV0dXJuIENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQucHJvdG90eXBlLnNldFZhbHVlLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sZ2V0VmFsdWU6ZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50LnByb3RvdHlwZS5nZXRWYWx1ZS5jYWxsKHRoaXMpO2lmKHRoaXMuYmlkaSYmYSl7dmFyIGI9dGhpcy5nZXREaXJlY3Rpb25NYXJrZXIoKTtiJiYoYT0oXCJsdHJcIj09Yj9cIuKAqlwiOlwi4oCrXCIpK2EpfXJldHVybiBhfSxzZXREaXJlY3Rpb25NYXJrZXI6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTthP2Iuc2V0QXR0cmlidXRlcyh7ZGlyOmEsXCJkYXRhLWNrZS1kaXItbWFya2VyXCI6YX0pOlxudGhpcy5nZXREaXJlY3Rpb25NYXJrZXIoKSYmYi5yZW1vdmVBdHRyaWJ1dGVzKFtcImRpclwiLFwiZGF0YS1ja2UtZGlyLW1hcmtlclwiXSl9LGdldERpcmVjdGlvbk1hcmtlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLmRhdGEoXCJja2UtZGlyLW1hcmtlclwiKX0sa2V5Ym9hcmRGb2N1c2FibGU6ITB9LGIsITApO0NLRURJVE9SLnVpLmRpYWxvZy50ZXh0YXJlYS5wcm90b3R5cGU9bmV3IENLRURJVE9SLnVpLmRpYWxvZy50ZXh0SW5wdXQ7Q0tFRElUT1IudWkuZGlhbG9nLnNlbGVjdC5wcm90b3R5cGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKG5ldyBDS0VESVRPUi51aS5kaWFsb2cubGFiZWxlZEVsZW1lbnQse2dldElucHV0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uc2VsZWN0LmdldEVsZW1lbnQoKX0sYWRkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJvcHRpb25cIix0aGlzLmdldERpYWxvZygpLmdldFBhcmVudEVkaXRvcigpLmRvY3VtZW50KSxcbmY9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS4kO2UuJC50ZXh0PWE7ZS4kLnZhbHVlPXZvaWQgMD09PWJ8fG51bGw9PT1iP2E6Yjt2b2lkIDA9PT1jfHxudWxsPT09Yz9DS0VESVRPUi5lbnYuaWU/Zi5hZGQoZS4kKTpmLmFkZChlLiQsbnVsbCk6Zi5hZGQoZS4kLGMpO3JldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oYSl7dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS4kLnJlbW92ZShhKTtyZXR1cm4gdGhpc30sY2xlYXI6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS4kOzA8YS5sZW5ndGg7KWEucmVtb3ZlKDApO3JldHVybiB0aGlzfSxrZXlib2FyZEZvY3VzYWJsZTohMH0sYiwhMCk7Q0tFRElUT1IudWkuZGlhbG9nLmNoZWNrYm94LnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQobmV3IENLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQse2dldElucHV0RWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8uY2hlY2tib3guZ2V0RWxlbWVudCgpfSxcbnNldFZhbHVlOmZ1bmN0aW9uKGEsYil7dGhpcy5nZXRJbnB1dEVsZW1lbnQoKS4kLmNoZWNrZWQ9YTshYiYmdGhpcy5maXJlKFwiY2hhbmdlXCIse3ZhbHVlOmF9KTtyZXR1cm4gdGhpc30sZ2V0VmFsdWU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS4kLmNoZWNrZWR9LGFjY2Vzc0tleVVwOmZ1bmN0aW9uKCl7dGhpcy5zZXRWYWx1ZSghdGhpcy5nZXRWYWx1ZSgpKX0sZXZlbnRQcm9jZXNzb3JzOntvbkNoYW5nZTpmdW5jdGlvbihhLGIpe2lmKCFDS0VESVRPUi5lbnYuaWV8fDg8Q0tFRElUT1IuZW52LnZlcnNpb24pcmV0dXJuIGMub25DaGFuZ2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Eub24oXCJsb2FkXCIsZnVuY3Rpb24oKXt2YXIgYT10aGlzLl8uY2hlY2tib3guZ2V0RWxlbWVudCgpO2Eub24oXCJwcm9wZXJ0eWNoYW5nZVwiLGZ1bmN0aW9uKGIpe2I9Yi5kYXRhLiQ7XCJjaGVja2VkXCI9PWIucHJvcGVydHlOYW1lJiZ0aGlzLmZpcmUoXCJjaGFuZ2VcIix7dmFsdWU6YS4kLmNoZWNrZWR9KX0sXG50aGlzKX0sdGhpcyk7dGhpcy5vbihcImNoYW5nZVwiLGIpO3JldHVybiBudWxsfX0sa2V5Ym9hcmRGb2N1c2FibGU6ITB9LGIsITApO0NLRURJVE9SLnVpLmRpYWxvZy5yYWRpby5wcm90b3R5cGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKG5ldyBDS0VESVRPUi51aS5kaWFsb2cudWlFbGVtZW50LHtzZXRWYWx1ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz10aGlzLl8uY2hpbGRyZW4sZSxmPTA7ZjxjLmxlbmd0aCYmKGU9Y1tmXSk7ZisrKWUuZ2V0RWxlbWVudCgpLiQuY2hlY2tlZD1lLmdldFZhbHVlKCk9PWE7IWImJnRoaXMuZmlyZShcImNoYW5nZVwiLHt2YWx1ZTphfSk7cmV0dXJuIHRoaXN9LGdldFZhbHVlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuXy5jaGlsZHJlbixiPTA7YjxhLmxlbmd0aDtiKyspaWYoYVtiXS5nZXRFbGVtZW50KCkuJC5jaGVja2VkKXJldHVybiBhW2JdLmdldFZhbHVlKCk7cmV0dXJuIG51bGx9LGFjY2Vzc0tleVVwOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLmNoaWxkcmVuLFxuYjtmb3IoYj0wO2I8YS5sZW5ndGg7YisrKWlmKGFbYl0uZ2V0RWxlbWVudCgpLiQuY2hlY2tlZCl7YVtiXS5nZXRFbGVtZW50KCkuZm9jdXMoKTtyZXR1cm59YVswXS5nZXRFbGVtZW50KCkuZm9jdXMoKX0sZXZlbnRQcm9jZXNzb3JzOntvbkNoYW5nZTpmdW5jdGlvbihhLGIpe2lmKCFDS0VESVRPUi5lbnYuaWV8fDg8Q0tFRElUT1IuZW52LnZlcnNpb24pcmV0dXJuIGMub25DaGFuZ2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO2Eub24oXCJsb2FkXCIsZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5fLmNoaWxkcmVuLGI9dGhpcyxkPTA7ZDxhLmxlbmd0aDtkKyspYVtkXS5nZXRFbGVtZW50KCkub24oXCJwcm9wZXJ0eWNoYW5nZVwiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhLiQ7XCJjaGVja2VkXCI9PWEucHJvcGVydHlOYW1lJiZ0aGlzLiQuY2hlY2tlZCYmYi5maXJlKFwiY2hhbmdlXCIse3ZhbHVlOnRoaXMuZ2V0QXR0cmlidXRlKFwidmFsdWVcIil9KX0pfSx0aGlzKTt0aGlzLm9uKFwiY2hhbmdlXCIsYik7XG5yZXR1cm4gbnVsbH19fSxiLCEwKTtDS0VESVRPUi51aS5kaWFsb2cuZmlsZS5wcm90b3R5cGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKG5ldyBDS0VESVRPUi51aS5kaWFsb2cubGFiZWxlZEVsZW1lbnQsYix7Z2V0SW5wdXRFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLl8uZnJhbWVJZCkuZ2V0RnJhbWVEb2N1bWVudCgpO3JldHVybiAwPGEuJC5mb3Jtcy5sZW5ndGg/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEuJC5mb3Jtc1swXS5lbGVtZW50c1swXSk6dGhpcy5nZXRFbGVtZW50KCl9LHN1Ym1pdDpmdW5jdGlvbigpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZ2V0UGFyZW50KCkuJC5zdWJtaXQoKTtyZXR1cm4gdGhpc30sZ2V0QWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0SW5wdXRFbGVtZW50KCkuZ2V0UGFyZW50KCkuJC5hY3Rpb259LHJlZ2lzdGVyRXZlbnRzOmZ1bmN0aW9uKGEpe3ZhciBiPS9eb24oW0EtWl1cXHcrKS8sXG5jLGU9ZnVuY3Rpb24oYSxiLGQsYyl7YS5vbihcImZvcm1Mb2FkZWRcIixmdW5jdGlvbigpe2EuZ2V0SW5wdXRFbGVtZW50KCkub24oZCxjLGEpfSl9LGY7Zm9yKGYgaW4gYSlpZihjPWYubWF0Y2goYikpdGhpcy5ldmVudFByb2Nlc3NvcnNbZl0/dGhpcy5ldmVudFByb2Nlc3NvcnNbZl0uY2FsbCh0aGlzLHRoaXMuXy5kaWFsb2csYVtmXSk6ZSh0aGlzLHRoaXMuXy5kaWFsb2csY1sxXS50b0xvd2VyQ2FzZSgpLGFbZl0pO3JldHVybiB0aGlzfSxyZXNldDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtjLiQub3BlbigpO3ZhciBkPVwiXCI7ZS5zaXplJiYoZD1lLnNpemUtKENLRURJVE9SLmVudi5pZT83OjApKTt2YXIgcT1iLmZyYW1lSWQrXCJfaW5wdXRcIjtjLiQud3JpdGUoWydcXHgzY2h0bWwgZGlyXFx4M2RcIicrbSsnXCIgbGFuZ1xceDNkXCInK3UrJ1wiXFx4M2VcXHgzY2hlYWRcXHgzZVxceDNjdGl0bGVcXHgzZVxceDNjL3RpdGxlXFx4M2VcXHgzYy9oZWFkXFx4M2VcXHgzY2JvZHkgc3R5bGVcXHgzZFwibWFyZ2luOiAwOyBvdmVyZmxvdzogaGlkZGVuOyBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudDtcIlxceDNlJyxcbidcXHgzY2Zvcm0gZW5jdHlwZVxceDNkXCJtdWx0aXBhcnQvZm9ybS1kYXRhXCIgbWV0aG9kXFx4M2RcIlBPU1RcIiBkaXJcXHgzZFwiJyttKydcIiBsYW5nXFx4M2RcIicrdSsnXCIgYWN0aW9uXFx4M2RcIicsQ0tFRElUT1IudG9vbHMuaHRtbEVuY29kZShlLmFjdGlvbiksJ1wiXFx4M2VcXHgzY2xhYmVsIGlkXFx4M2RcIicsYi5sYWJlbElkLCdcIiBmb3JcXHgzZFwiJyxxLCdcIiBzdHlsZVxceDNkXCJkaXNwbGF5Om5vbmVcIlxceDNlJyxDS0VESVRPUi50b29scy5odG1sRW5jb2RlKGUubGFiZWwpLCdcXHgzYy9sYWJlbFxceDNlXFx4M2NpbnB1dCBzdHlsZVxceDNkXCJ3aWR0aDoxMDAlXCIgaWRcXHgzZFwiJyxxLCdcIiBhcmlhLWxhYmVsbGVkYnlcXHgzZFwiJyxiLmxhYmVsSWQsJ1wiIHR5cGVcXHgzZFwiZmlsZVwiIG5hbWVcXHgzZFwiJyxDS0VESVRPUi50b29scy5odG1sRW5jb2RlKGUuaWR8fFwiY2tlX3VwbG9hZFwiKSwnXCIgc2l6ZVxceDNkXCInLENLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoMDxkP2Q6XCJcIiksJ1wiIC9cXHgzZVxceDNjL2Zvcm1cXHgzZVxceDNjL2JvZHlcXHgzZVxceDNjL2h0bWxcXHgzZVxceDNjc2NyaXB0XFx4M2UnLFxuQ0tFRElUT1IuZW52LmllP1wiKFwiK0NLRURJVE9SLnRvb2xzLmZpeERvbWFpbitcIikoKTtcIjpcIlwiLFwid2luZG93LnBhcmVudC5DS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oXCIraytcIik7XCIsXCJ3aW5kb3cub25iZWZvcmV1bmxvYWQgXFx4M2QgZnVuY3Rpb24oKSB7d2luZG93LnBhcmVudC5DS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oXCIrbCtcIil9XCIsXCJcXHgzYy9zY3JpcHRcXHgzZVwiXS5qb2luKFwiXCIpKTtjLiQuY2xvc2UoKTtmb3IoZD0wO2Q8Zi5sZW5ndGg7ZCsrKWZbZF0uZW5hYmxlKCl9dmFyIGI9dGhpcy5fLGM9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChiLmZyYW1lSWQpLmdldEZyYW1lRG9jdW1lbnQoKSxlPWIuZGVmaW5pdGlvbixmPWIuYnV0dG9ucyxrPXRoaXMuZm9ybUxvYWRlZE51bWJlcixsPXRoaXMuZm9ybVVubG9hZE51bWJlcixtPWIuZGlhbG9nLl8uZWRpdG9yLmxhbmcuZGlyLHU9Yi5kaWFsb2cuXy5lZGl0b3IubGFuZ0NvZGU7a3x8KGs9dGhpcy5mb3JtTG9hZGVkTnVtYmVyPVxuQ0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oKXt0aGlzLmZpcmUoXCJmb3JtTG9hZGVkXCIpfSx0aGlzKSxsPXRoaXMuZm9ybVVubG9hZE51bWJlcj1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbigpe3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkuY2xlYXJDdXN0b21EYXRhKCl9LHRoaXMpLHRoaXMuZ2V0RGlhbG9nKCkuXy5lZGl0b3Iub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbihrKTtDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbihsKX0pKTtDS0VESVRPUi5lbnYuZ2Vja28/c2V0VGltZW91dChhLDUwMCk6YSgpfSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLiQudmFsdWV8fFwiXCJ9LHNldEluaXRWYWx1ZTpmdW5jdGlvbigpe3RoaXMuXy5pbml0VmFsdWU9XCJcIn0sZXZlbnRQcm9jZXNzb3JzOntvbkNoYW5nZTpmdW5jdGlvbihhLGIpe3RoaXMuXy5kb21PbkNoYW5nZVJlZ2lzdGVyZWR8fFxuKHRoaXMub24oXCJmb3JtTG9hZGVkXCIsZnVuY3Rpb24oKXt0aGlzLmdldElucHV0RWxlbWVudCgpLm9uKFwiY2hhbmdlXCIsZnVuY3Rpb24oKXt0aGlzLmZpcmUoXCJjaGFuZ2VcIix7dmFsdWU6dGhpcy5nZXRWYWx1ZSgpfSl9LHRoaXMpfSx0aGlzKSx0aGlzLl8uZG9tT25DaGFuZ2VSZWdpc3RlcmVkPSEwKTt0aGlzLm9uKFwiY2hhbmdlXCIsYil9fSxrZXlib2FyZEZvY3VzYWJsZTohMH0sITApO0NLRURJVE9SLnVpLmRpYWxvZy5maWxlQnV0dG9uLnByb3RvdHlwZT1uZXcgQ0tFRElUT1IudWkuZGlhbG9nLmJ1dHRvbjtDS0VESVRPUi51aS5kaWFsb2cuZmllbGRzZXQucHJvdG90eXBlPUNLRURJVE9SLnRvb2xzLmNsb25lKENLRURJVE9SLnVpLmRpYWxvZy5oYm94LnByb3RvdHlwZSk7Q0tFRElUT1IuZGlhbG9nLmFkZFVJRWxlbWVudChcInRleHRcIixmKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwicGFzc3dvcmRcIixmKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwidGVsXCIsZik7XG5DS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwidGV4dGFyZWFcIixlKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwiY2hlY2tib3hcIixlKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwicmFkaW9cIixlKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwiYnV0dG9uXCIsZSk7Q0tFRElUT1IuZGlhbG9nLmFkZFVJRWxlbWVudChcInNlbGVjdFwiLGUpO0NLRURJVE9SLmRpYWxvZy5hZGRVSUVsZW1lbnQoXCJmaWxlXCIsZSk7Q0tFRElUT1IuZGlhbG9nLmFkZFVJRWxlbWVudChcImZpbGVCdXR0b25cIixlKTtDS0VESVRPUi5kaWFsb2cuYWRkVUlFbGVtZW50KFwiaHRtbFwiLGUpO0NLRURJVE9SLmRpYWxvZy5hZGRVSUVsZW1lbnQoXCJmaWVsZHNldFwiLHtidWlsZDpmdW5jdGlvbihhLGIsYyl7Zm9yKHZhciBlPWIuY2hpbGRyZW4sZixrPVtdLGw9W10sbT0wO208ZS5sZW5ndGgmJihmPWVbbV0pO20rKyl7dmFyIHU9W107ay5wdXNoKHUpO2wucHVzaChDS0VESVRPUi5kaWFsb2cuXy51aUVsZW1lbnRCdWlsZGVyc1tmLnR5cGVdLmJ1aWxkKGEsXG5mLHUpKX1yZXR1cm4gbmV3IENLRURJVE9SLnVpLmRpYWxvZ1tiLnR5cGVdKGEsbCxrLGMsYil9fSl9fSksQ0tFRElUT1IuRElBTE9HX1JFU0laRV9OT05FPTAsQ0tFRElUT1IuRElBTE9HX1JFU0laRV9XSURUSD0xLENLRURJVE9SLkRJQUxPR19SRVNJWkVfSEVJR0hUPTIsQ0tFRElUT1IuRElBTE9HX1JFU0laRV9CT1RIPTMsQ0tFRElUT1IuRElBTE9HX1NUQVRFX0lETEU9MSxDS0VESVRPUi5ESUFMT0dfU1RBVEVfQlVTWT0yLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXthLl8udGFiQmFyTW9kZT0hMDthLl8udGFic1thLl8uY3VycmVudFRhYklkXVswXS5mb2N1cygpO2EuXy5jdXJyZW50Rm9jdXNJbmRleD0tMX1mdW5jdGlvbiBmKCl7Zm9yKHZhciBhPXRoaXMuXy50YWJJZExpc3QubGVuZ3RoLGI9Q0tFRElUT1IudG9vbHMuaW5kZXhPZih0aGlzLl8udGFiSWRMaXN0LHRoaXMuXy5jdXJyZW50VGFiSWQpK2EsZD1iLTE7ZD5iLWE7ZC0tKWlmKHRoaXMuXy50YWJzW3RoaXMuXy50YWJJZExpc3RbZCVcbmFdXVswXS4kLm9mZnNldEhlaWdodClyZXR1cm4gdGhpcy5fLnRhYklkTGlzdFtkJWFdO3JldHVybiBudWxsfWZ1bmN0aW9uIGUoKXtmb3IodmFyIGE9dGhpcy5fLnRhYklkTGlzdC5sZW5ndGgsYj1DS0VESVRPUi50b29scy5pbmRleE9mKHRoaXMuXy50YWJJZExpc3QsdGhpcy5fLmN1cnJlbnRUYWJJZCksZD1iKzE7ZDxiK2E7ZCsrKWlmKHRoaXMuXy50YWJzW3RoaXMuXy50YWJJZExpc3RbZCVhXV1bMF0uJC5vZmZzZXRIZWlnaHQpcmV0dXJuIHRoaXMuXy50YWJJZExpc3RbZCVhXTtyZXR1cm4gbnVsbH1mdW5jdGlvbiBiKGEsYil7Zm9yKHZhciBkPWEuJC5nZXRFbGVtZW50c0J5VGFnTmFtZShcImlucHV0XCIpLGM9MCxnPWQubGVuZ3RoO2M8ZztjKyspe3ZhciBlPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChkW2NdKTtcInRleHRcIj09ZS5nZXRBdHRyaWJ1dGUoXCJ0eXBlXCIpLnRvTG93ZXJDYXNlKCkmJihiPyhlLnNldEF0dHJpYnV0ZShcInZhbHVlXCIsZS5nZXRDdXN0b21EYXRhKFwiZmFrZV92YWx1ZVwiKXx8XG5cIlwiKSxlLnJlbW92ZUN1c3RvbURhdGEoXCJmYWtlX3ZhbHVlXCIpKTooZS5zZXRDdXN0b21EYXRhKFwiZmFrZV92YWx1ZVwiLGUuZ2V0QXR0cmlidXRlKFwidmFsdWVcIikpLGUuc2V0QXR0cmlidXRlKFwidmFsdWVcIixcIlwiKSkpfX1mdW5jdGlvbiBjKGEsYil7dmFyIGQ9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTtkJiYoYT9kLnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtaW52YWxpZFwiKTpkLnNldEF0dHJpYnV0ZShcImFyaWEtaW52YWxpZFwiLCEwKSk7YXx8KHRoaXMuc2VsZWN0P3RoaXMuc2VsZWN0KCk6dGhpcy5mb2N1cygpKTtiJiZhbGVydChiKTt0aGlzLmZpcmUoXCJ2YWxpZGF0ZWRcIix7dmFsaWQ6YSxtc2c6Yn0pfWZ1bmN0aW9uIGsoKXt2YXIgYT10aGlzLmdldElucHV0RWxlbWVudCgpO2EmJmEucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1pbnZhbGlkXCIpfWZ1bmN0aW9uIGwoYSl7dmFyIGI9Q0tFRElUT1IuZG9tLmVsZW1lbnQuY3JlYXRlRnJvbUh0bWwoQ0tFRElUT1IuYWRkVGVtcGxhdGUoXCJkaWFsb2dcIixcbkspLm91dHB1dCh7aWQ6Q0tFRElUT1IudG9vbHMuZ2V0TmV4dE51bWJlcigpLGVkaXRvcklkOmEuaWQsbGFuZ0RpcjphLmxhbmcuZGlyLGxhbmdDb2RlOmEubGFuZ0NvZGUsZWRpdG9yRGlhbG9nQ2xhc3M6XCJja2VfZWRpdG9yX1wiK2EubmFtZS5yZXBsYWNlKC9cXC4vZyxcIlxcXFwuXCIpK1wiX2RpYWxvZ1wiLGNsb3NlVGl0bGU6YS5sYW5nLmNvbW1vbi5jbG9zZSxoaWRwaTpDS0VESVRPUi5lbnYuaGlkcGk/XCJja2VfaGlkcGlcIjpcIlwifSkpLGQ9Yi5nZXRDaGlsZChbMCwwLDAsMCwwXSksYz1kLmdldENoaWxkKDApLGc9ZC5nZXRDaGlsZCgxKTthLnBsdWdpbnMuY2xpcGJvYXJkJiZDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5wcmV2ZW50RGVmYXVsdERyb3BPbkVsZW1lbnQoZCk7IUNLRURJVE9SLmVudi5pZXx8Q0tFRElUT1IuZW52LnF1aXJrc3x8Q0tFRElUT1IuZW52LmVkZ2V8fChhPVwiamF2YXNjcmlwdDp2b2lkKGZ1bmN0aW9uKCl7XCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiZG9jdW1lbnQub3BlbigpOyhcIitcbkNLRURJVE9SLnRvb2xzLmZpeERvbWFpbitcIikoKTtkb2N1bWVudC5jbG9zZSgpO1wiKStcIn0oKSlcIixDS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NpZnJhbWUgZnJhbWVCb3JkZXJcXHgzZFwiMFwiIGNsYXNzXFx4M2RcImNrZV9pZnJhbWVfc2hpbVwiIHNyY1xceDNkXCInK2ErJ1wiIHRhYkluZGV4XFx4M2RcIi0xXCJcXHgzZVxceDNjL2lmcmFtZVxceDNlJykuYXBwZW5kVG8oZC5nZXRQYXJlbnQoKSkpO2MudW5zZWxlY3RhYmxlKCk7Zy51bnNlbGVjdGFibGUoKTtyZXR1cm57ZWxlbWVudDpiLHBhcnRzOntkaWFsb2c6Yi5nZXRDaGlsZCgwKSx0aXRsZTpjLGNsb3NlOmcsdGFiczpkLmdldENoaWxkKDIpLGNvbnRlbnRzOmQuZ2V0Q2hpbGQoWzMsMCwwLDBdKSxmb290ZXI6ZC5nZXRDaGlsZChbMywwLDEsMF0pfX19ZnVuY3Rpb24gbShhLGIsZCl7dGhpcy5lbGVtZW50PWI7dGhpcy5mb2N1c0luZGV4PWQ7dGhpcy50YWJJbmRleD0wO3RoaXMuaXNGb2N1c2FibGU9ZnVuY3Rpb24oKXtyZXR1cm4hYi5nZXRBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSYmXG5iLmlzVmlzaWJsZSgpfTt0aGlzLmZvY3VzPWZ1bmN0aW9uKCl7YS5fLmN1cnJlbnRGb2N1c0luZGV4PXRoaXMuZm9jdXNJbmRleDt0aGlzLmVsZW1lbnQuZm9jdXMoKX07Yi5vbihcImtleWRvd25cIixmdW5jdGlvbihhKXthLmRhdGEuZ2V0S2V5c3Ryb2tlKClpbnszMjoxLDEzOjF9JiZ0aGlzLmZpcmUoXCJjbGlja1wiKX0pO2Iub24oXCJmb2N1c1wiLGZ1bmN0aW9uKCl7dGhpcy5maXJlKFwibW91c2VvdmVyXCIpfSk7Yi5vbihcImJsdXJcIixmdW5jdGlvbigpe3RoaXMuZmlyZShcIm1vdXNlb3V0XCIpfSl9ZnVuY3Rpb24gZChhKXtmdW5jdGlvbiBiKCl7YS5sYXlvdXQoKX12YXIgZD1DS0VESVRPUi5kb2N1bWVudC5nZXRXaW5kb3coKTtkLm9uKFwicmVzaXplXCIsYik7YS5vbihcImhpZGVcIixmdW5jdGlvbigpe2QucmVtb3ZlTGlzdGVuZXIoXCJyZXNpemVcIixiKX0pfWZ1bmN0aW9uIGgoYSxiKXt0aGlzLmRpYWxvZz1hO2Zvcih2YXIgZD1iLmNvbnRlbnRzLGM9MCxlO2U9ZFtjXTtjKyspZFtjXT1lJiZuZXcgZyhhLFxuZSk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsYil9ZnVuY3Rpb24gZyhhLGIpe3RoaXMuXz17ZGlhbG9nOmF9O0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGIpfWZ1bmN0aW9uIG4oYSl7ZnVuY3Rpb24gYihkKXt2YXIgaz1hLmdldFNpemUoKSxsPWEucGFydHMuZGlhbG9nLmdldFBhcmVudCgpLmdldENsaWVudFNpemUoKSxtPWQuZGF0YS4kLnNjcmVlblgsbj1kLmRhdGEuJC5zY3JlZW5ZLHY9bS1jLngscT1uLWMueTtjPXt4Om0seTpufTtnLngrPXY7Zy55Kz1xO209Zy54K2hbM108Zj8taFszXTpnLngtaFsxXT5sLndpZHRoLWsud2lkdGgtZj9sLndpZHRoLWsud2lkdGgrKFwicnRsXCI9PWUubGFuZy5kaXI/MDpoWzFdKTpnLng7az1nLnkraFswXTxmPy1oWzBdOmcueS1oWzJdPmwuaGVpZ2h0LWsuaGVpZ2h0LWY/bC5oZWlnaHQtay5oZWlnaHQraFsyXTpnLnk7bT1NYXRoLmZsb29yKG0pO2s9TWF0aC5mbG9vcihrKTthLm1vdmUobSxrLDEpO2QuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfVxuZnVuY3Rpb24gZCgpe0NLRURJVE9SLmRvY3VtZW50LnJlbW92ZUxpc3RlbmVyKFwibW91c2Vtb3ZlXCIsYik7Q0tFRElUT1IuZG9jdW1lbnQucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsZCk7aWYoQ0tFRElUT1IuZW52LmllNkNvbXBhdCl7dmFyIGE9Qy5nZXRDaGlsZCgwKS5nZXRGcmFtZURvY3VtZW50KCk7YS5yZW1vdmVMaXN0ZW5lcihcIm1vdXNlbW92ZVwiLGIpO2EucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsZCl9fXZhciBjPW51bGwsZz1udWxsLGU9YS5nZXRQYXJlbnRFZGl0b3IoKSxmPWUuY29uZmlnLmRpYWxvZ19tYWduZXREaXN0YW5jZSxoPUNLRURJVE9SLnNraW4ubWFyZ2luc3x8WzAsMCwwLDBdO1widW5kZWZpbmVkXCI9PXR5cGVvZiBmJiYoZj0yMCk7YS5wYXJ0cy50aXRsZS5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGUpe2lmKCFhLl8ubW92ZWQpe3ZhciBmPWEuXy5lbGVtZW50O2YuZ2V0Rmlyc3QoKS5zZXRTdHlsZShcInBvc2l0aW9uXCIsXCJhYnNvbHV0ZVwiKTtmLnJlbW92ZVN0eWxlKFwiZGlzcGxheVwiKTtcbmEuXy5tb3ZlZD0hMDthLmxheW91dCgpfWM9e3g6ZS5kYXRhLiQuc2NyZWVuWCx5OmUuZGF0YS4kLnNjcmVlbll9O0NLRURJVE9SLmRvY3VtZW50Lm9uKFwibW91c2Vtb3ZlXCIsYik7Q0tFRElUT1IuZG9jdW1lbnQub24oXCJtb3VzZXVwXCIsZCk7Zz1hLmdldFBvc2l0aW9uKCk7Q0tFRElUT1IuZW52LmllNkNvbXBhdCYmKGY9Qy5nZXRDaGlsZCgwKS5nZXRGcmFtZURvY3VtZW50KCksZi5vbihcIm1vdXNlbW92ZVwiLGIpLGYub24oXCJtb3VzZXVwXCIsZCkpO2UuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfSxhKX1mdW5jdGlvbiB3KGEpe2Z1bmN0aW9uIGIoZCl7dmFyIG49XCJydGxcIj09ZS5sYW5nLmRpcix2PW0ud2lkdGgscT1tLmhlaWdodCx0PXYrKGQuZGF0YS4kLnNjcmVlblgtbC54KSoobj8tMToxKSooYS5fLm1vdmVkPzE6MiksST1xKyhkLmRhdGEuJC5zY3JlZW5ZLWwueSkqKGEuXy5tb3ZlZD8xOjIpLHc9YS5fLmVsZW1lbnQuZ2V0Rmlyc3QoKSx3PW4mJnBhcnNlSW50KHcuZ2V0Q29tcHV0ZWRTdHlsZShcInJpZ2h0XCIpLFxuMTApLHk9YS5nZXRQb3NpdGlvbigpO3kueD15Lnh8fDA7eS55PXkueXx8MDt5LnkrST5rLmhlaWdodCYmKEk9ay5oZWlnaHQteS55KTsobj93OnkueCkrdD5rLndpZHRoJiYodD1rLndpZHRoLShuP3c6eS54KSk7ST1NYXRoLmZsb29yKEkpO3Q9TWF0aC5mbG9vcih0KTtpZihnPT1DS0VESVRPUi5ESUFMT0dfUkVTSVpFX1dJRFRIfHxnPT1DS0VESVRPUi5ESUFMT0dfUkVTSVpFX0JPVEgpdj1NYXRoLm1heChjLm1pbldpZHRofHwwLHQtZik7aWYoZz09Q0tFRElUT1IuRElBTE9HX1JFU0laRV9IRUlHSFR8fGc9PUNLRURJVE9SLkRJQUxPR19SRVNJWkVfQk9USClxPU1hdGgubWF4KGMubWluSGVpZ2h0fHwwLEktaCk7YS5yZXNpemUodixxKTthLl8ubW92ZWQmJngoYSxhLl8ucG9zaXRpb24ueCxhLl8ucG9zaXRpb24ueSk7YS5fLm1vdmVkfHxhLmxheW91dCgpO2QuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfWZ1bmN0aW9uIGQoKXtDS0VESVRPUi5kb2N1bWVudC5yZW1vdmVMaXN0ZW5lcihcIm1vdXNldXBcIixcbmQpO0NLRURJVE9SLmRvY3VtZW50LnJlbW92ZUxpc3RlbmVyKFwibW91c2Vtb3ZlXCIsYik7biYmKG4ucmVtb3ZlKCksbj1udWxsKTtpZihDS0VESVRPUi5lbnYuaWU2Q29tcGF0KXt2YXIgYT1DLmdldENoaWxkKDApLmdldEZyYW1lRG9jdW1lbnQoKTthLnJlbW92ZUxpc3RlbmVyKFwibW91c2V1cFwiLGQpO2EucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZW1vdmVcIixiKX19dmFyIGM9YS5kZWZpbml0aW9uLGc9Yy5yZXNpemFibGU7aWYoZyE9Q0tFRElUT1IuRElBTE9HX1JFU0laRV9OT05FKXt2YXIgZT1hLmdldFBhcmVudEVkaXRvcigpLGYsaCxrLGwsbSxuLHY9Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oYyl7ZnVuY3Rpb24gZyhhKXtyZXR1cm4gYS5pc1Zpc2libGUoKX1tPWEuZ2V0U2l6ZSgpO3ZhciBlPWEucGFydHMuY29udGVudHMsdj1lLiQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoXCJpZnJhbWVcIikubGVuZ3RoLHE9IShDS0VESVRPUi5lbnYuZ2Vja298fENLRURJVE9SLmVudi5pZSYmXG5DS0VESVRPUi5lbnYucXVpcmtzKTt2JiYobj1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NkaXYgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ19yZXNpemVfY292ZXJcIiBzdHlsZVxceDNkXCJoZWlnaHQ6IDEwMCU7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgd2lkdGg6IDEwMCU7IGxlZnQ6MDsgdG9wOjA7XCJcXHgzZVxceDNjL2RpdlxceDNlJyksZS5hcHBlbmQobikpO2g9bS5oZWlnaHQtYS5wYXJ0cy5jb250ZW50cy5nZXRGaXJzdChnKS5nZXRTaXplKFwiaGVpZ2h0XCIscSk7Zj1tLndpZHRoLWEucGFydHMuY29udGVudHMuZ2V0Rmlyc3QoZykuZ2V0U2l6ZShcIndpZHRoXCIsMSk7bD17eDpjLnNjcmVlblgseTpjLnNjcmVlbll9O2s9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0V2luZG93KCkuZ2V0Vmlld1BhbmVTaXplKCk7Q0tFRElUT1IuZG9jdW1lbnQub24oXCJtb3VzZW1vdmVcIixiKTtDS0VESVRPUi5kb2N1bWVudC5vbihcIm1vdXNldXBcIixkKTtDS0VESVRPUi5lbnYuaWU2Q29tcGF0JiZcbihlPUMuZ2V0Q2hpbGQoMCkuZ2V0RnJhbWVEb2N1bWVudCgpLGUub24oXCJtb3VzZW1vdmVcIixiKSxlLm9uKFwibW91c2V1cFwiLGQpKTtjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCl9KTthLm9uKFwibG9hZFwiLGZ1bmN0aW9uKCl7dmFyIGI9XCJcIjtnPT1DS0VESVRPUi5ESUFMT0dfUkVTSVpFX1dJRFRIP2I9XCIgY2tlX3Jlc2l6ZXJfaG9yaXpvbnRhbFwiOmc9PUNLRURJVE9SLkRJQUxPR19SRVNJWkVfSEVJR0hUJiYoYj1cIiBja2VfcmVzaXplcl92ZXJ0aWNhbFwiKTtiPUNLRURJVE9SLmRvbS5lbGVtZW50LmNyZWF0ZUZyb21IdG1sKCdcXHgzY2RpdiBjbGFzc1xceDNkXCJja2VfcmVzaXplcicrYitcIiBja2VfcmVzaXplcl9cIitlLmxhbmcuZGlyKydcIiB0aXRsZVxceDNkXCInK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoZS5sYW5nLmNvbW1vbi5yZXNpemUpKydcIiBvbm1vdXNlZG93blxceDNkXCJDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oJyt2KycsIGV2ZW50IClcIlxceDNlJysoXCJsdHJcIj09XG5lLmxhbmcuZGlyP1wi4peiXCI6XCLil6NcIikrXCJcXHgzYy9kaXZcXHgzZVwiKTthLnBhcnRzLmZvb3Rlci5hcHBlbmQoYiwxKX0pO2Uub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbih2KX0pfX1mdW5jdGlvbiB4KGEsYixkKXt2YXIgYz1hLnBhcnRzLmRpYWxvZy5nZXRQYXJlbnQoKS5nZXRDbGllbnRTaXplKCksZz1hLmdldFNpemUoKSxlPWEuXy52aWV3cG9ydFJhdGlvLGY9TWF0aC5tYXgoYy53aWR0aC1nLndpZHRoLDApLGM9TWF0aC5tYXgoYy5oZWlnaHQtZy5oZWlnaHQsMCk7ZS53aWR0aD1mP2IvZjplLndpZHRoO2UuaGVpZ2h0PWM/ZC9jOmUuaGVpZ2h0O2EuXy52aWV3cG9ydFJhdGlvPWV9ZnVuY3Rpb24gcihhKXthLmRhdGEucHJldmVudERlZmF1bHQoMSl9ZnVuY3Rpb24gcChhKXt2YXIgYj1hLmNvbmZpZyxkPUNLRURJVE9SLnNraW5OYW1lfHxhLmNvbmZpZy5za2luLGM9Yi5kaWFsb2dfYmFja2dyb3VuZENvdmVyQ29sb3J8fChcIm1vb25vLWxpc2FcIj09XG5kP1wiYmxhY2tcIjpcIndoaXRlXCIpLGQ9Yi5kaWFsb2dfYmFja2dyb3VuZENvdmVyT3BhY2l0eSxnPWIuYmFzZUZsb2F0WkluZGV4LGI9Q0tFRElUT1IudG9vbHMuZ2VuS2V5KGMsZCxnKSxlPUVbYl07Q0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLmFkZENsYXNzKFwiY2tlX2RpYWxvZ19vcGVuXCIpO2U/ZS5zaG93KCk6KGc9WydcXHgzY2RpdiB0YWJJbmRleFxceDNkXCItMVwiIHN0eWxlXFx4M2RcInBvc2l0aW9uOiAnLENLRURJVE9SLmVudi5pZTZDb21wYXQ/XCJhYnNvbHV0ZVwiOlwiZml4ZWRcIixcIjsgei1pbmRleDogXCIsZyxcIjsgdG9wOiAwcHg7IGxlZnQ6IDBweDsgXCIsXCI7IHdpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7XCIsQ0tFRElUT1IuZW52LmllNkNvbXBhdD9cIlwiOlwiYmFja2dyb3VuZC1jb2xvcjogXCIrYywnXCIgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ19iYWNrZ3JvdW5kX2NvdmVyXCJcXHgzZSddLENLRURJVE9SLmVudi5pZTZDb21wYXQmJihjPVwiXFx4M2NodG1sXFx4M2VcXHgzY2JvZHkgc3R5bGVcXHgzZFxcXFwnYmFja2dyb3VuZC1jb2xvcjpcIitcbmMrXCI7XFxcXCdcXHgzZVxceDNjL2JvZHlcXHgzZVxceDNjL2h0bWxcXHgzZVwiLGcucHVzaCgnXFx4M2NpZnJhbWUgaGlkZWZvY3VzXFx4M2RcInRydWVcIiBmcmFtZWJvcmRlclxceDNkXCIwXCIgaWRcXHgzZFwiY2tlX2RpYWxvZ19iYWNrZ3JvdW5kX2lmcmFtZVwiIHNyY1xceDNkXCJqYXZhc2NyaXB0OicpLGcucHVzaChcInZvaWQoKGZ1bmN0aW9uKCl7XCIrZW5jb2RlVVJJQ29tcG9uZW50KFwiZG9jdW1lbnQub3BlbigpOyhcIitDS0VESVRPUi50b29scy5maXhEb21haW4rXCIpKCk7ZG9jdW1lbnQud3JpdGUoICdcIitjK1wiJyApO2RvY3VtZW50LmNsb3NlKCk7XCIpK1wifSkoKSlcIiksZy5wdXNoKCdcIiBzdHlsZVxceDNkXCJwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjA7dG9wOjA7d2lkdGg6MTAwJTtoZWlnaHQ6IDEwMCU7ZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGEob3BhY2l0eVxceDNkMClcIlxceDNlXFx4M2MvaWZyYW1lXFx4M2UnKSksZy5wdXNoKFwiXFx4M2MvZGl2XFx4M2VcIiksZT1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChnLmpvaW4oXCJcIikpLFxuZS5zZXRPcGFjaXR5KHZvaWQgMCE9PWQ/ZDouNSksZS5vbihcImtleWRvd25cIixyKSxlLm9uKFwia2V5cHJlc3NcIixyKSxlLm9uKFwia2V5dXBcIixyKSxlLmFwcGVuZFRvKENLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKSksRVtiXT1lKTthLmZvY3VzTWFuYWdlci5hZGQoZSk7Qz1lO0NLRURJVE9SLmVudi5tYWMmJkNLRURJVE9SLmVudi53ZWJraXR8fGUuZm9jdXMoKX1mdW5jdGlvbiB1KGEpe0NLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKS5yZW1vdmVDbGFzcyhcImNrZV9kaWFsb2dfb3BlblwiKTtDJiYoYS5mb2N1c01hbmFnZXIucmVtb3ZlKEMpLEMuaGlkZSgpKX1mdW5jdGlvbiB6KGEpe3ZhciBiPWEuZGF0YS4kLmN0cmxLZXl8fGEuZGF0YS4kLm1ldGFLZXksZD1hLmRhdGEuJC5hbHRLZXksYz1hLmRhdGEuJC5zaGlmdEtleSxnPVN0cmluZy5mcm9tQ2hhckNvZGUoYS5kYXRhLiQua2V5Q29kZSk7KGI9UFsoYj9cIkNUUkwrXCI6XCJcIikrKGQ/XCJBTFQrXCI6XCJcIikrKGM/XCJTSElGVCtcIjpcIlwiKStcbmddKSYmYi5sZW5ndGgmJihiPWJbYi5sZW5ndGgtMV0sYi5rZXlkb3duJiZiLmtleWRvd24uY2FsbChiLnVpRWxlbWVudCxiLmRpYWxvZyxiLmtleSksYS5kYXRhLnByZXZlbnREZWZhdWx0KCkpfWZ1bmN0aW9uIHEoYSl7dmFyIGI9YS5kYXRhLiQuY3RybEtleXx8YS5kYXRhLiQubWV0YUtleSxkPWEuZGF0YS4kLmFsdEtleSxjPWEuZGF0YS4kLnNoaWZ0S2V5LGc9U3RyaW5nLmZyb21DaGFyQ29kZShhLmRhdGEuJC5rZXlDb2RlKTsoYj1QWyhiP1wiQ1RSTCtcIjpcIlwiKSsoZD9cIkFMVCtcIjpcIlwiKSsoYz9cIlNISUZUK1wiOlwiXCIpK2ddKSYmYi5sZW5ndGgmJihiPWJbYi5sZW5ndGgtMV0sYi5rZXl1cCYmKGIua2V5dXAuY2FsbChiLnVpRWxlbWVudCxiLmRpYWxvZyxiLmtleSksYS5kYXRhLnByZXZlbnREZWZhdWx0KCkpKX1mdW5jdGlvbiBBKGEsYixkLGMsZyl7KFBbZF18fChQW2RdPVtdKSkucHVzaCh7dWlFbGVtZW50OmEsZGlhbG9nOmIsa2V5OmQsa2V5dXA6Z3x8YS5hY2Nlc3NLZXlVcCxrZXlkb3duOmN8fFxuYS5hY2Nlc3NLZXlEb3dufSl9ZnVuY3Rpb24geShhKXtmb3IodmFyIGIgaW4gUCl7Zm9yKHZhciBkPVBbYl0sYz1kLmxlbmd0aC0xOzA8PWM7Yy0tKWRbY10uZGlhbG9nIT1hJiZkW2NdLnVpRWxlbWVudCE9YXx8ZC5zcGxpY2UoYywxKTswPT09ZC5sZW5ndGgmJmRlbGV0ZSBQW2JdfX1mdW5jdGlvbiB0KGEsYil7YS5fLmFjY2Vzc0tleU1hcFtiXSYmYS5zZWxlY3RQYWdlKGEuXy5hY2Nlc3NLZXlNYXBbYl0pfWZ1bmN0aW9uIHYoKXt9dmFyIEI9Q0tFRElUT1IudG9vbHMuY3NzTGVuZ3RoLEQsQyxGPSExLEo9IUNLRURJVE9SLmVudi5pZXx8Q0tFRElUT1IuZW52LmVkZ2UsSz0nXFx4M2NkaXYgY2xhc3NcXHgzZFwiY2tlX3Jlc2V0X2FsbCBja2VfZGlhbG9nX2NvbnRhaW5lciB7ZWRpdG9ySWR9IHtlZGl0b3JEaWFsb2dDbGFzc30ge2hpZHBpfVwiIGRpclxceDNkXCJ7bGFuZ0Rpcn1cIiBzdHlsZVxceDNkXCInKyhKP1wiZGlzcGxheTpmbGV4XCI6XCJcIikrJ1wiIGxhbmdcXHgzZFwie2xhbmdDb2RlfVwiIHJvbGVcXHgzZFwiZGlhbG9nXCIgYXJpYS1sYWJlbGxlZGJ5XFx4M2RcImNrZV9kaWFsb2dfdGl0bGVfe2lkfVwiXFx4M2VcXHgzY3RhYmxlIGNsYXNzXFx4M2RcImNrZV9kaWFsb2cgJytcbkNLRURJVE9SLmVudi5jc3NDbGFzcysnIGNrZV97bGFuZ0Rpcn1cIiBzdHlsZVxceDNkXCInKyhKP1wibWFyZ2luOmF1dG9cIjpcInBvc2l0aW9uOmFic29sdXRlXCIpKydcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiXFx4M2VcXHgzY3RyXFx4M2VcXHgzY3RkIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZVxceDNjZGl2IGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfYm9keVwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZVxceDNjZGl2IGlkXFx4M2RcImNrZV9kaWFsb2dfdGl0bGVfe2lkfVwiIGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfdGl0bGVcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiXFx4M2VcXHgzYy9kaXZcXHgzZVxceDNjYSBpZFxceDNkXCJja2VfZGlhbG9nX2Nsb3NlX2J1dHRvbl97aWR9XCIgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ19jbG9zZV9idXR0b25cIiBocmVmXFx4M2RcImphdmFzY3JpcHQ6dm9pZCgwKVwiIHRpdGxlXFx4M2RcIntjbG9zZVRpdGxlfVwiIHJvbGVcXHgzZFwiYnV0dG9uXCJcXHgzZVxceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfbGFiZWxcIlxceDNlWFxceDNjL3NwYW5cXHgzZVxceDNjL2FcXHgzZVxceDNjZGl2IGlkXFx4M2RcImNrZV9kaWFsb2dfdGFic197aWR9XCIgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ190YWJzXCIgcm9sZVxceDNkXCJ0YWJsaXN0XCJcXHgzZVxceDNjL2RpdlxceDNlXFx4M2N0YWJsZSBjbGFzc1xceDNkXCJja2VfZGlhbG9nX2NvbnRlbnRzXCIgcm9sZVxceDNkXCJwcmVzZW50YXRpb25cIlxceDNlXFx4M2N0clxceDNlXFx4M2N0ZCBpZFxceDNkXCJja2VfZGlhbG9nX2NvbnRlbnRzX3tpZH1cIiBjbGFzc1xceDNkXCJja2VfZGlhbG9nX2NvbnRlbnRzX2JvZHlcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiXFx4M2VcXHgzYy90ZFxceDNlXFx4M2MvdHJcXHgzZVxceDNjdHJcXHgzZVxceDNjdGQgaWRcXHgzZFwiY2tlX2RpYWxvZ19mb290ZXJfe2lkfVwiIGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfZm9vdGVyXCIgcm9sZVxceDNkXCJwcmVzZW50YXRpb25cIlxceDNlXFx4M2MvdGRcXHgzZVxceDNjL3RyXFx4M2VcXHgzYy90YWJsZVxceDNlXFx4M2MvZGl2XFx4M2VcXHgzYy90ZFxceDNlXFx4M2MvdHJcXHgzZVxceDNjL3RhYmxlXFx4M2VcXHgzYy9kaXZcXHgzZSc7XG5DS0VESVRPUi5kaWFsb2c9ZnVuY3Rpb24oYixkKXtmdW5jdGlvbiBnKCl7dmFyIGE9eC5fLmZvY3VzTGlzdDthLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS50YWJJbmRleCE9Yi50YWJJbmRleD9iLnRhYkluZGV4LWEudGFiSW5kZXg6YS5mb2N1c0luZGV4LWIuZm9jdXNJbmRleH0pO2Zvcih2YXIgYj1hLmxlbmd0aCxkPTA7ZDxiO2QrKylhW2RdLmZvY3VzSW5kZXg9ZH1mdW5jdGlvbiBtKGEpe3ZhciBiPXguXy5mb2N1c0xpc3Q7YT1hfHwwO2lmKCEoMT5iLmxlbmd0aCkpe3ZhciBkPXguXy5jdXJyZW50Rm9jdXNJbmRleDt4Ll8udGFiQmFyTW9kZSYmMD5hJiYoZD0wKTt0cnl7YltkXS5nZXRJbnB1dEVsZW1lbnQoKS4kLmJsdXIoKX1jYXRjaChjKXt9dmFyIGc9ZCxlPTE8eC5fLnBhZ2VDb3VudDtkb3tnKz1hO2lmKGUmJiF4Ll8udGFiQmFyTW9kZSYmKGc9PWIubGVuZ3RofHwtMT09Zykpe3guXy50YWJCYXJNb2RlPSEwO3guXy50YWJzW3guXy5jdXJyZW50VGFiSWRdWzBdLmZvY3VzKCk7XG54Ll8uY3VycmVudEZvY3VzSW5kZXg9LTE7cmV0dXJufWc9KGcrYi5sZW5ndGgpJWIubGVuZ3RoO2lmKGc9PWQpYnJlYWt9d2hpbGUoYSYmIWJbZ10uaXNGb2N1c2FibGUoKSk7YltnXS5mb2N1cygpO1widGV4dFwiPT1iW2ddLnR5cGUmJmJbZ10uc2VsZWN0KCl9fWZ1bmN0aW9uIHYoZCl7aWYoeD09Q0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFRvcCl7dmFyIGM9ZC5kYXRhLmdldEtleXN0cm9rZSgpLGc9XCJydGxcIj09Yi5sYW5nLmRpcixoPVszNywzOCwzOSw0MF07QT1CPTA7aWYoOT09Y3x8Yz09Q0tFRElUT1IuU0hJRlQrOSltKGM9PUNLRURJVE9SLlNISUZUKzk/LTE6MSksQT0xO2Vsc2UgaWYoYz09Q0tFRElUT1IuQUxUKzEyMSYmIXguXy50YWJCYXJNb2RlJiYxPHguZ2V0UGFnZUNvdW50KCkpYSh4KSxBPTE7ZWxzZSBpZigtMSE9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihoLGMpJiZ4Ll8udGFiQmFyTW9kZSljPS0xIT1DS0VESVRPUi50b29scy5pbmRleE9mKFtnPzM5OjM3LDM4XSxjKT9cbmYuY2FsbCh4KTplLmNhbGwoeCkseC5zZWxlY3RQYWdlKGMpLHguXy50YWJzW2NdWzBdLmZvY3VzKCksQT0xO2Vsc2UgaWYoMTMhPWMmJjMyIT1jfHwheC5fLnRhYkJhck1vZGUpaWYoMTM9PWMpYz1kLmRhdGEuZ2V0VGFyZ2V0KCksYy5pcyhcImFcIixcImJ1dHRvblwiLFwic2VsZWN0XCIsXCJ0ZXh0YXJlYVwiKXx8Yy5pcyhcImlucHV0XCIpJiZcImJ1dHRvblwiPT1jLiQudHlwZXx8KChjPXRoaXMuZ2V0QnV0dG9uKFwib2tcIikpJiZDS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGMuY2xpY2ssMCxjKSxBPTEpLEI9MTtlbHNlIGlmKDI3PT1jKShjPXRoaXMuZ2V0QnV0dG9uKFwiY2FuY2VsXCIpKT9DS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGMuY2xpY2ssMCxjKTohMSE9PXRoaXMuZmlyZShcImNhbmNlbFwiLHtoaWRlOiEwfSkuaGlkZSYmdGhpcy5oaWRlKCksQj0xO2Vsc2UgcmV0dXJuO2Vsc2UgdGhpcy5zZWxlY3RQYWdlKHRoaXMuXy5jdXJyZW50VGFiSWQpLHRoaXMuXy50YWJCYXJNb2RlPSExLHRoaXMuXy5jdXJyZW50Rm9jdXNJbmRleD1cbi0xLG0oMSksQT0xO3EoZCl9fWZ1bmN0aW9uIHEoYSl7QT9hLmRhdGEucHJldmVudERlZmF1bHQoMSk6QiYmYS5kYXRhLnN0b3BQcm9wYWdhdGlvbigpfXZhciB0PUNLRURJVE9SLmRpYWxvZy5fLmRpYWxvZ0RlZmluaXRpb25zW2RdLHk9Q0tFRElUT1IudG9vbHMuY2xvbmUoRCksdT1iLmNvbmZpZy5kaWFsb2dfYnV0dG9uc09yZGVyfHxcIk9TXCIscD1iLmxhbmcuZGlyLHo9e30sQSxCOyhcIk9TXCI9PXUmJkNLRURJVE9SLmVudi5tYWN8fFwicnRsXCI9PXUmJlwibHRyXCI9PXB8fFwibHRyXCI9PXUmJlwicnRsXCI9PXApJiZ5LmJ1dHRvbnMucmV2ZXJzZSgpO3Q9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHQoYikseSk7dD1DS0VESVRPUi50b29scy5jbG9uZSh0KTt0PW5ldyBoKHRoaXMsdCk7eT1sKGIpO3RoaXMuXz17ZWRpdG9yOmIsZWxlbWVudDp5LmVsZW1lbnQsbmFtZTpkLG1vZGVsOm51bGwsY29udGVudFNpemU6e3dpZHRoOjAsaGVpZ2h0OjB9LHNpemU6e3dpZHRoOjAsaGVpZ2h0OjB9LGNvbnRlbnRzOnt9LFxuYnV0dG9uczp7fSxhY2Nlc3NLZXlNYXA6e30sdmlld3BvcnRSYXRpbzp7d2lkdGg6LjUsaGVpZ2h0Oi41fSx0YWJzOnt9LHRhYklkTGlzdDpbXSxjdXJyZW50VGFiSWQ6bnVsbCxjdXJyZW50VGFiSW5kZXg6bnVsbCxwYWdlQ291bnQ6MCxsYXN0VGFiOm51bGwsdGFiQmFyTW9kZTohMSxmb2N1c0xpc3Q6W10sY3VycmVudEZvY3VzSW5kZXg6MCxoYXNGb2N1czohMX07dGhpcy5wYXJ0cz15LnBhcnRzO0NLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmZpcmUoXCJhcmlhV2lkZ2V0XCIsdGhpcy5wYXJ0cy5jb250ZW50cyl9LDAsdGhpcyk7eT17dG9wOjAsdmlzaWJpbGl0eTpcImhpZGRlblwifTtDS0VESVRPUi5lbnYuaWU2Q29tcGF0JiYoeS5wb3NpdGlvbj1cImFic29sdXRlXCIpO3lbXCJydGxcIj09cD9cInJpZ2h0XCI6XCJsZWZ0XCJdPTA7dGhpcy5wYXJ0cy5kaWFsb2cuc2V0U3R5bGVzKHkpO0NLRURJVE9SLmV2ZW50LmNhbGwodGhpcyk7dGhpcy5kZWZpbml0aW9uPXQ9Q0tFRElUT1IuZmlyZShcImRpYWxvZ0RlZmluaXRpb25cIixcbntuYW1lOmQsZGVmaW5pdGlvbjp0LGRpYWxvZzp0aGlzfSxiKS5kZWZpbml0aW9uO2lmKCEoXCJyZW1vdmVEaWFsb2dUYWJzXCJpbiBiLl8pJiZiLmNvbmZpZy5yZW1vdmVEaWFsb2dUYWJzKXt5PWIuY29uZmlnLnJlbW92ZURpYWxvZ1RhYnMuc3BsaXQoXCI7XCIpO2ZvcihwPTA7cDx5Lmxlbmd0aDtwKyspaWYodT15W3BdLnNwbGl0KFwiOlwiKSwyPT11Lmxlbmd0aCl7dmFyIHI9dVswXTt6W3JdfHwoeltyXT1bXSk7eltyXS5wdXNoKHVbMV0pfWIuXy5yZW1vdmVEaWFsb2dUYWJzPXp9aWYoYi5fLnJlbW92ZURpYWxvZ1RhYnMmJih6PWIuXy5yZW1vdmVEaWFsb2dUYWJzW2RdKSlmb3IocD0wO3A8ei5sZW5ndGg7cCsrKXQucmVtb3ZlQ29udGVudHMoeltwXSk7aWYodC5vbkxvYWQpdGhpcy5vbihcImxvYWRcIix0Lm9uTG9hZCk7aWYodC5vblNob3cpdGhpcy5vbihcInNob3dcIix0Lm9uU2hvdyk7aWYodC5vbkhpZGUpdGhpcy5vbihcImhpZGVcIix0Lm9uSGlkZSk7aWYodC5vbk9rKXRoaXMub24oXCJva1wiLFxuZnVuY3Rpb24oYSl7Yi5maXJlKFwic2F2ZVNuYXBzaG90XCIpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmZpcmUoXCJzYXZlU25hcHNob3RcIil9LDApOyExPT09dC5vbk9rLmNhbGwodGhpcyxhKSYmKGEuZGF0YS5oaWRlPSExKX0pO3RoaXMuc3RhdGU9Q0tFRElUT1IuRElBTE9HX1NUQVRFX0lETEU7aWYodC5vbkNhbmNlbCl0aGlzLm9uKFwiY2FuY2VsXCIsZnVuY3Rpb24oYSl7ITE9PT10Lm9uQ2FuY2VsLmNhbGwodGhpcyxhKSYmKGEuZGF0YS5oaWRlPSExKX0pO3ZhciB4PXRoaXMsQz1mdW5jdGlvbihhKXt2YXIgYj14Ll8uY29udGVudHMsZD0hMSxjO2ZvcihjIGluIGIpZm9yKHZhciBnIGluIGJbY10paWYoZD1hLmNhbGwodGhpcyxiW2NdW2ddKSlyZXR1cm59O3RoaXMub24oXCJva1wiLGZ1bmN0aW9uKGEpe0MoZnVuY3Rpb24oYil7aWYoYi52YWxpZGF0ZSl7dmFyIGQ9Yi52YWxpZGF0ZSh0aGlzKSxnPVwic3RyaW5nXCI9PXR5cGVvZiBkfHwhMT09PWQ7ZyYmKGEuZGF0YS5oaWRlPSExLGEuc3RvcCgpKTtcbmMuY2FsbChiLCFnLFwic3RyaW5nXCI9PXR5cGVvZiBkP2Q6dm9pZCAwKTtyZXR1cm4gZ319KX0sdGhpcyxudWxsLDApO3RoaXMub24oXCJjYW5jZWxcIixmdW5jdGlvbihhKXtDKGZ1bmN0aW9uKGQpe2lmKGQuaXNDaGFuZ2VkKCkpcmV0dXJuIGIuY29uZmlnLmRpYWxvZ19ub0NvbmZpcm1DYW5jZWx8fGNvbmZpcm0oYi5sYW5nLmNvbW1vbi5jb25maXJtQ2FuY2VsKXx8KGEuZGF0YS5oaWRlPSExKSwhMH0pfSx0aGlzLG51bGwsMCk7dGhpcy5wYXJ0cy5jbG9zZS5vbihcImNsaWNrXCIsZnVuY3Rpb24oYSl7ITEhPT10aGlzLmZpcmUoXCJjYW5jZWxcIix7aGlkZTohMH0pLmhpZGUmJnRoaXMuaGlkZSgpO2EuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfSx0aGlzKTt0aGlzLmNoYW5nZUZvY3VzPW07dmFyIEY9dGhpcy5fLmVsZW1lbnQ7Yi5mb2N1c01hbmFnZXIuYWRkKEYsMSk7dGhpcy5vbihcInNob3dcIixmdW5jdGlvbigpe0Yub24oXCJrZXlkb3duXCIsdix0aGlzKTtpZihDS0VESVRPUi5lbnYuZ2Vja28pRi5vbihcImtleXByZXNzXCIsXG5xLHRoaXMpfSk7dGhpcy5vbihcImhpZGVcIixmdW5jdGlvbigpe0YucmVtb3ZlTGlzdGVuZXIoXCJrZXlkb3duXCIsdik7Q0tFRElUT1IuZW52LmdlY2tvJiZGLnJlbW92ZUxpc3RlbmVyKFwia2V5cHJlc3NcIixxKTtDKGZ1bmN0aW9uKGEpe2suYXBwbHkoYSl9KX0pO3RoaXMub24oXCJpZnJhbWVBZGRlZFwiLGZ1bmN0aW9uKGEpeyhuZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50KGEuZGF0YS5pZnJhbWUuJC5jb250ZW50V2luZG93LmRvY3VtZW50KSkub24oXCJrZXlkb3duXCIsdix0aGlzLG51bGwsMCl9KTt0aGlzLm9uKFwic2hvd1wiLGZ1bmN0aW9uKCl7ZygpO3ZhciBhPTE8eC5fLnBhZ2VDb3VudDtiLmNvbmZpZy5kaWFsb2dfc3RhcnR1cEZvY3VzVGFiJiZhPyh4Ll8udGFiQmFyTW9kZT0hMCx4Ll8udGFic1t4Ll8uY3VycmVudFRhYklkXVswXS5mb2N1cygpLHguXy5jdXJyZW50Rm9jdXNJbmRleD0tMSk6dGhpcy5fLmhhc0ZvY3VzfHwodGhpcy5fLmN1cnJlbnRGb2N1c0luZGV4PWE/LTE6dGhpcy5fLmZvY3VzTGlzdC5sZW5ndGgtXG4xLHQub25Gb2N1cz8oYT10Lm9uRm9jdXMuY2FsbCh0aGlzKSkmJmEuZm9jdXMoKTptKDEpKX0sdGhpcyxudWxsLDQyOTQ5NjcyOTUpO2lmKENLRURJVE9SLmVudi5pZTZDb21wYXQpdGhpcy5vbihcImxvYWRcIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0RWxlbWVudCgpLGI9YS5nZXRGaXJzdCgpO2IucmVtb3ZlKCk7Yi5hcHBlbmRUbyhhKX0sdGhpcyk7bih0aGlzKTt3KHRoaXMpOyhuZXcgQ0tFRElUT1IuZG9tLnRleHQodC50aXRsZSxDS0VESVRPUi5kb2N1bWVudCkpLmFwcGVuZFRvKHRoaXMucGFydHMudGl0bGUpO2ZvcihwPTA7cDx0LmNvbnRlbnRzLmxlbmd0aDtwKyspKHo9dC5jb250ZW50c1twXSkmJnRoaXMuYWRkUGFnZSh6KTt0aGlzLnBhcnRzLnRhYnMub24oXCJjbGlja1wiLGZ1bmN0aW9uKGIpe3ZhciBkPWIuZGF0YS5nZXRUYXJnZXQoKTtkLmhhc0NsYXNzKFwiY2tlX2RpYWxvZ190YWJcIikmJihkPWQuJC5pZCx0aGlzLnNlbGVjdFBhZ2UoZC5zdWJzdHJpbmcoNCxkLmxhc3RJbmRleE9mKFwiX1wiKSkpLFxuYSh0aGlzKSxiLmRhdGEucHJldmVudERlZmF1bHQoKSl9LHRoaXMpO3A9W107ej1DS0VESVRPUi5kaWFsb2cuXy51aUVsZW1lbnRCdWlsZGVycy5oYm94LmJ1aWxkKHRoaXMse3R5cGU6XCJoYm94XCIsY2xhc3NOYW1lOlwiY2tlX2RpYWxvZ19mb290ZXJfYnV0dG9uc1wiLHdpZHRoczpbXSxjaGlsZHJlbjp0LmJ1dHRvbnN9LHApLmdldENoaWxkKCk7dGhpcy5wYXJ0cy5mb290ZXIuc2V0SHRtbChwLmpvaW4oXCJcIikpO2ZvcihwPTA7cDx6Lmxlbmd0aDtwKyspdGhpcy5fLmJ1dHRvbnNbeltwXS5pZF09eltwXX07Q0tFRElUT1IuZGlhbG9nLnByb3RvdHlwZT17ZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuaGlkZSgpO3RoaXMuXy5lbGVtZW50LnJlbW92ZSgpfSxyZXNpemU6ZnVuY3Rpb24oYSxiKXtpZighdGhpcy5fLmNvbnRlbnRTaXplfHx0aGlzLl8uY29udGVudFNpemUud2lkdGghPWF8fHRoaXMuXy5jb250ZW50U2l6ZS5oZWlnaHQhPWIpe0NLRURJVE9SLmRpYWxvZy5maXJlKFwicmVzaXplXCIsXG57ZGlhbG9nOnRoaXMsd2lkdGg6YSxoZWlnaHQ6Yn0sdGhpcy5fLmVkaXRvcik7dGhpcy5maXJlKFwicmVzaXplXCIse3dpZHRoOmEsaGVpZ2h0OmJ9LHRoaXMuXy5lZGl0b3IpO3RoaXMucGFydHMuY29udGVudHMuc2V0U3R5bGVzKHt3aWR0aDphK1wicHhcIixoZWlnaHQ6YitcInB4XCJ9KTtpZihcInJ0bFwiPT10aGlzLl8uZWRpdG9yLmxhbmcuZGlyJiZ0aGlzLl8ucG9zaXRpb24pe3ZhciBkPXRoaXMucGFydHMuZGlhbG9nLmdldFBhcmVudCgpLmdldENsaWVudFNpemUoKS53aWR0aDt0aGlzLl8ucG9zaXRpb24ueD1kLXRoaXMuXy5jb250ZW50U2l6ZS53aWR0aC1wYXJzZUludCh0aGlzLl8uZWxlbWVudC5nZXRGaXJzdCgpLmdldFN0eWxlKFwicmlnaHRcIiksMTApfXRoaXMuXy5jb250ZW50U2l6ZT17d2lkdGg6YSxoZWlnaHQ6Yn19fSxnZXRTaXplOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLmVsZW1lbnQuZ2V0Rmlyc3QoKTtyZXR1cm57d2lkdGg6YS4kLm9mZnNldFdpZHRofHwwLGhlaWdodDphLiQub2Zmc2V0SGVpZ2h0fHxcbjB9fSxtb3ZlOmZ1bmN0aW9uKGEsYixkKXt2YXIgYz10aGlzLl8uZWxlbWVudC5nZXRGaXJzdCgpLGc9XCJydGxcIj09dGhpcy5fLmVkaXRvci5sYW5nLmRpcjtDS0VESVRPUi5lbnYuaWUmJmMuc2V0U3R5bGUoXCJ6b29tXCIsXCIxMDAlXCIpO3ZhciBlPXRoaXMucGFydHMuZGlhbG9nLmdldFBhcmVudCgpLmdldENsaWVudFNpemUoKSxmPXRoaXMuZ2V0U2l6ZSgpLGg9dGhpcy5fLnZpZXdwb3J0UmF0aW8saz1NYXRoLm1heChlLndpZHRoLWYud2lkdGgsMCksZT1NYXRoLm1heChlLmhlaWdodC1mLmhlaWdodCwwKTt0aGlzLl8ucG9zaXRpb24mJnRoaXMuXy5wb3NpdGlvbi54PT1hJiZ0aGlzLl8ucG9zaXRpb24ueT09Yj8oYT1NYXRoLmZsb29yKGsqaC53aWR0aCksYj1NYXRoLmZsb29yKGUqaC5oZWlnaHQpKTp4KHRoaXMsYSxiKTt0aGlzLl8ucG9zaXRpb249e3g6YSx5OmJ9O2cmJihhPWstYSk7Yj17dG9wOigwPGI/YjowKStcInB4XCJ9O2JbZz9cInJpZ2h0XCI6XCJsZWZ0XCJdPSgwPGE/YTowKStcInB4XCI7XG5jLnNldFN0eWxlcyhiKTtkJiYodGhpcy5fLm1vdmVkPTEpfSxnZXRQb3NpdGlvbjpmdW5jdGlvbigpe3JldHVybiBDS0VESVRPUi50b29scy5leHRlbmQoe30sdGhpcy5fLnBvc2l0aW9uKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBhPXRoaXMuXy5lbGVtZW50LGI9dGhpcy5kZWZpbml0aW9uLGM9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLGc9dGhpcy5fLmVkaXRvci5jb25maWcuYmFzZUZsb2F0WkluZGV4O2EuZ2V0UGFyZW50KCkmJmEuZ2V0UGFyZW50KCkuZXF1YWxzKGMpP2Euc2V0U3R5bGUoXCJkaXNwbGF5XCIsSj9cImZsZXhcIjpcImJsb2NrXCIpOmEuYXBwZW5kVG8oYyk7dGhpcy5yZXNpemUodGhpcy5fLmNvbnRlbnRTaXplJiZ0aGlzLl8uY29udGVudFNpemUud2lkdGh8fGIud2lkdGh8fGIubWluV2lkdGgsdGhpcy5fLmNvbnRlbnRTaXplJiZ0aGlzLl8uY29udGVudFNpemUuaGVpZ2h0fHxiLmhlaWdodHx8Yi5taW5IZWlnaHQpO3RoaXMucmVzZXQoKTtudWxsPT09dGhpcy5fLmN1cnJlbnRUYWJJZCYmXG50aGlzLnNlbGVjdFBhZ2UodGhpcy5kZWZpbml0aW9uLmNvbnRlbnRzWzBdLmlkKTtudWxsPT09Q0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFpJbmRleCYmKENLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRaSW5kZXg9Zyk7dGhpcy5fLmVsZW1lbnQuZ2V0Rmlyc3QoKS5zZXRTdHlsZShcInotaW5kZXhcIixDS0VESVRPUi5kaWFsb2cuXy5jdXJyZW50WkluZGV4Kz0xMCk7dGhpcy5nZXRFbGVtZW50KCkuc2V0U3R5bGUoXCJ6LWluZGV4XCIsQ0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFpJbmRleCk7bnVsbD09PUNLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3A/KENLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3A9dGhpcyx0aGlzLl8ucGFyZW50RGlhbG9nPW51bGwscCh0aGlzLl8uZWRpdG9yKSk6Q0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFRvcCE9PXRoaXMmJih0aGlzLl8ucGFyZW50RGlhbG9nPUNLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3AsYz10aGlzLl8ucGFyZW50RGlhbG9nLmdldEVsZW1lbnQoKS5nZXRGaXJzdCgpLFxuYy4kLnN0eWxlLnpJbmRleC09TWF0aC5mbG9vcihnLzIpLHRoaXMuXy5wYXJlbnREaWFsb2cuZ2V0RWxlbWVudCgpLnNldFN0eWxlKFwiei1pbmRleFwiLGMuJC5zdHlsZS56SW5kZXgpLENLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3A9dGhpcyk7YS5vbihcImtleWRvd25cIix6KTthLm9uKFwia2V5dXBcIixxKTt0aGlzLl8uaGFzRm9jdXM9ITE7Zm9yKHZhciBlIGluIGIuY29udGVudHMpaWYoYi5jb250ZW50c1tlXSl7dmFyIGE9Yi5jb250ZW50c1tlXSxnPXRoaXMuXy50YWJzW2EuaWRdLGM9YS5yZXF1aXJlZENvbnRlbnQsZj0wO2lmKGcpe2Zvcih2YXIgaCBpbiB0aGlzLl8uY29udGVudHNbYS5pZF0pe3ZhciBrPXRoaXMuXy5jb250ZW50c1thLmlkXVtoXTtcImhib3hcIiE9ay50eXBlJiZcInZib3hcIiE9ay50eXBlJiZrLmdldElucHV0RWxlbWVudCgpJiYoay5yZXF1aXJlZENvbnRlbnQmJiF0aGlzLl8uZWRpdG9yLmFjdGl2ZUZpbHRlci5jaGVjayhrLnJlcXVpcmVkQ29udGVudCk/ay5kaXNhYmxlKCk6XG4oay5lbmFibGUoKSxmKyspKX0hZnx8YyYmIXRoaXMuXy5lZGl0b3IuYWN0aXZlRmlsdGVyLmNoZWNrKGMpP2dbMF0uYWRkQ2xhc3MoXCJja2VfZGlhbG9nX3RhYl9kaXNhYmxlZFwiKTpnWzBdLnJlbW92ZUNsYXNzKFwiY2tlX2RpYWxvZ190YWJfZGlzYWJsZWRcIil9fUNLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLmxheW91dCgpO2QodGhpcyk7dGhpcy5wYXJ0cy5kaWFsb2cuc2V0U3R5bGUoXCJ2aXNpYmlsaXR5XCIsXCJcIik7dGhpcy5maXJlT25jZShcImxvYWRcIix7fSk7Q0tFRElUT1IudWkuZmlyZShcInJlYWR5XCIsdGhpcyk7dGhpcy5maXJlKFwic2hvd1wiLHt9KTt0aGlzLl8uZWRpdG9yLmZpcmUoXCJkaWFsb2dTaG93XCIsdGhpcyk7dGhpcy5fLnBhcmVudERpYWxvZ3x8dGhpcy5fLmVkaXRvci5mb2N1c01hbmFnZXIubG9jaygpO3RoaXMuZm9yZWFjaChmdW5jdGlvbihhKXthLnNldEluaXRWYWx1ZSYmYS5zZXRJbml0VmFsdWUoKX0pfSwxMDAsdGhpcyl9LGxheW91dDpmdW5jdGlvbigpe3ZhciBhPVxudGhpcy5wYXJ0cy5kaWFsb2c7aWYodGhpcy5fLm1vdmVkfHwhSil7dmFyIGI9dGhpcy5nZXRTaXplKCksZD1DS0VESVRPUi5kb2N1bWVudC5nZXRXaW5kb3coKS5nZXRWaWV3UGFuZVNpemUoKSxjO3RoaXMuXy5tb3ZlZCYmdGhpcy5fLnBvc2l0aW9uPyhjPXRoaXMuXy5wb3NpdGlvbi54LGI9dGhpcy5fLnBvc2l0aW9uLnkpOihjPShkLndpZHRoLWIud2lkdGgpLzIsYj0oZC5oZWlnaHQtYi5oZWlnaHQpLzIpO0NLRURJVE9SLmVudi5pZTZDb21wYXR8fChhLnNldFN0eWxlKFwicG9zaXRpb25cIixcImFic29sdXRlXCIpLGEucmVtb3ZlU3R5bGUoXCJtYXJnaW5cIikpO2M9TWF0aC5mbG9vcihjKTtiPU1hdGguZmxvb3IoYik7dGhpcy5tb3ZlKGMsYil9fSxmb3JlYWNoOmZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiB0aGlzLl8uY29udGVudHMpZm9yKHZhciBkIGluIHRoaXMuXy5jb250ZW50c1tiXSlhLmNhbGwodGhpcyx0aGlzLl8uY29udGVudHNbYl1bZF0pO3JldHVybiB0aGlzfSxyZXNldDpmdW5jdGlvbigpe3ZhciBhPVxuZnVuY3Rpb24oYSl7YS5yZXNldCYmYS5yZXNldCgxKX07cmV0dXJuIGZ1bmN0aW9uKCl7dGhpcy5mb3JlYWNoKGEpO3JldHVybiB0aGlzfX0oKSxzZXR1cENvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYT1hcmd1bWVudHM7dGhpcy5mb3JlYWNoKGZ1bmN0aW9uKGIpe2Iuc2V0dXAmJmIuc2V0dXAuYXBwbHkoYixhKX0pfSxjb21taXRDb250ZW50OmZ1bmN0aW9uKCl7dmFyIGE9YXJndW1lbnRzO3RoaXMuZm9yZWFjaChmdW5jdGlvbihiKXtDS0VESVRPUi5lbnYuaWUmJnRoaXMuXy5jdXJyZW50Rm9jdXNJbmRleD09Yi5mb2N1c0luZGV4JiZiLmdldElucHV0RWxlbWVudCgpLiQuYmx1cigpO2IuY29tbWl0JiZiLmNvbW1pdC5hcHBseShiLGEpfSl9LGhpZGU6ZnVuY3Rpb24oKXtpZih0aGlzLnBhcnRzLmRpYWxvZy5pc1Zpc2libGUoKSl7dGhpcy5maXJlKFwiaGlkZVwiLHt9KTt0aGlzLl8uZWRpdG9yLmZpcmUoXCJkaWFsb2dIaWRlXCIsdGhpcyk7dGhpcy5zZWxlY3RQYWdlKHRoaXMuXy50YWJJZExpc3RbMF0pO1xudmFyIGE9dGhpcy5fLmVsZW1lbnQ7YS5zZXRTdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIik7dGhpcy5wYXJ0cy5kaWFsb2cuc2V0U3R5bGUoXCJ2aXNpYmlsaXR5XCIsXCJoaWRkZW5cIik7Zm9yKHkodGhpcyk7Q0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFRvcCE9dGhpczspQ0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFRvcC5oaWRlKCk7aWYodGhpcy5fLnBhcmVudERpYWxvZyl7dmFyIGI9dGhpcy5fLnBhcmVudERpYWxvZy5nZXRFbGVtZW50KCkuZ2V0Rmlyc3QoKSxkPXBhcnNlSW50KGIuJC5zdHlsZS56SW5kZXgsMTApK01hdGguZmxvb3IodGhpcy5fLmVkaXRvci5jb25maWcuYmFzZUZsb2F0WkluZGV4LzIpO3RoaXMuXy5wYXJlbnREaWFsb2cuZ2V0RWxlbWVudCgpLnNldFN0eWxlKFwiei1pbmRleFwiLGQpO2Iuc2V0U3R5bGUoXCJ6LWluZGV4XCIsZCl9ZWxzZSB1KHRoaXMuXy5lZGl0b3IpO2lmKENLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3A9dGhpcy5fLnBhcmVudERpYWxvZylDS0VESVRPUi5kaWFsb2cuXy5jdXJyZW50WkluZGV4LT1cbjEwO2Vsc2V7Q0tFRElUT1IuZGlhbG9nLl8uY3VycmVudFpJbmRleD1udWxsO2EucmVtb3ZlTGlzdGVuZXIoXCJrZXlkb3duXCIseik7YS5yZW1vdmVMaXN0ZW5lcihcImtleXVwXCIscSk7dmFyIGM9dGhpcy5fLmVkaXRvcjtjLmZvY3VzKCk7c2V0VGltZW91dChmdW5jdGlvbigpe2MuZm9jdXNNYW5hZ2VyLnVubG9jaygpO0NLRURJVE9SLmVudi5pT1MmJmMud2luZG93LmZvY3VzKCl9LDApfWRlbGV0ZSB0aGlzLl8ucGFyZW50RGlhbG9nO3RoaXMuZm9yZWFjaChmdW5jdGlvbihhKXthLnJlc2V0SW5pdFZhbHVlJiZhLnJlc2V0SW5pdFZhbHVlKCl9KTt0aGlzLnNldFN0YXRlKENLRURJVE9SLkRJQUxPR19TVEFURV9JRExFKX19LGFkZFBhZ2U6ZnVuY3Rpb24oYSl7aWYoIWEucmVxdWlyZWRDb250ZW50fHx0aGlzLl8uZWRpdG9yLmZpbHRlci5jaGVjayhhLnJlcXVpcmVkQ29udGVudCkpe2Zvcih2YXIgYj1bXSxkPWEubGFiZWw/JyB0aXRsZVxceDNkXCInK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGUoYS5sYWJlbCkrXG4nXCInOlwiXCIsYz1DS0VESVRPUi5kaWFsb2cuXy51aUVsZW1lbnRCdWlsZGVycy52Ym94LmJ1aWxkKHRoaXMse3R5cGU6XCJ2Ym94XCIsY2xhc3NOYW1lOlwiY2tlX2RpYWxvZ19wYWdlX2NvbnRlbnRzXCIsY2hpbGRyZW46YS5lbGVtZW50cyxleHBhbmQ6ISFhLmV4cGFuZCxwYWRkaW5nOmEucGFkZGluZyxzdHlsZTphLnN0eWxlfHxcIndpZHRoOiAxMDAlO1wifSxiKSxnPXRoaXMuXy5jb250ZW50c1thLmlkXT17fSxlPWMuZ2V0Q2hpbGQoKSxmPTA7Yz1lLnNoaWZ0KCk7KWMubm90QWxsb3dlZHx8XCJoYm94XCI9PWMudHlwZXx8XCJ2Ym94XCI9PWMudHlwZXx8ZisrLGdbYy5pZF09YyxcImZ1bmN0aW9uXCI9PXR5cGVvZiBjLmdldENoaWxkJiZlLnB1c2guYXBwbHkoZSxjLmdldENoaWxkKCkpO2Z8fChhLmhpZGRlbj0hMCk7Yj1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChiLmpvaW4oXCJcIikpO2Iuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwidGFicGFuZWxcIik7Yi5zZXRTdHlsZShcIm1pbi1oZWlnaHRcIixcblwiMTAwJVwiKTtjPUNLRURJVE9SLmVudjtnPVwiY2tlX1wiK2EuaWQrXCJfXCIrQ0tFRElUT1IudG9vbHMuZ2V0TmV4dE51bWJlcigpO2Q9Q0tFRElUT1IuZG9tLmVsZW1lbnQuY3JlYXRlRnJvbUh0bWwoWydcXHgzY2EgY2xhc3NcXHgzZFwiY2tlX2RpYWxvZ190YWJcIicsMDx0aGlzLl8ucGFnZUNvdW50P1wiIGNrZV9sYXN0XCI6XCJja2VfZmlyc3RcIixkLGEuaGlkZGVuPycgc3R5bGVcXHgzZFwiZGlzcGxheTpub25lXCInOlwiXCIsJyBpZFxceDNkXCInLGcsJ1wiJyxjLmdlY2tvJiYhYy5oYz9cIlwiOicgaHJlZlxceDNkXCJqYXZhc2NyaXB0OnZvaWQoMClcIicsJyB0YWJJbmRleFxceDNkXCItMVwiIGhpZGVmb2N1c1xceDNkXCJ0cnVlXCIgcm9sZVxceDNkXCJ0YWJcIlxceDNlJyxhLmxhYmVsLFwiXFx4M2MvYVxceDNlXCJdLmpvaW4oXCJcIikpO2Iuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbGxlZGJ5XCIsZyk7dGhpcy5fLnRhYnNbYS5pZF09W2QsYl07dGhpcy5fLnRhYklkTGlzdC5wdXNoKGEuaWQpOyFhLmhpZGRlbiYmdGhpcy5fLnBhZ2VDb3VudCsrO1xudGhpcy5fLmxhc3RUYWI9ZDt0aGlzLnVwZGF0ZVN0eWxlKCk7Yi5zZXRBdHRyaWJ1dGUoXCJuYW1lXCIsYS5pZCk7Yi5hcHBlbmRUbyh0aGlzLnBhcnRzLmNvbnRlbnRzKTtkLnVuc2VsZWN0YWJsZSgpO3RoaXMucGFydHMudGFicy5hcHBlbmQoZCk7YS5hY2Nlc3NLZXkmJihBKHRoaXMsdGhpcyxcIkNUUkwrXCIrYS5hY2Nlc3NLZXksdix0KSx0aGlzLl8uYWNjZXNzS2V5TWFwW1wiQ1RSTCtcIithLmFjY2Vzc0tleV09YS5pZCl9fSxzZWxlY3RQYWdlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuXy5jdXJyZW50VGFiSWQhPWEmJiF0aGlzLl8udGFic1thXVswXS5oYXNDbGFzcyhcImNrZV9kaWFsb2dfdGFiX2Rpc2FibGVkXCIpJiYhMSE9PXRoaXMuZmlyZShcInNlbGVjdFBhZ2VcIix7cGFnZTphLGN1cnJlbnRQYWdlOnRoaXMuXy5jdXJyZW50VGFiSWR9KSl7Zm9yKHZhciBkIGluIHRoaXMuXy50YWJzKXt2YXIgYz10aGlzLl8udGFic1tkXVswXSxnPXRoaXMuXy50YWJzW2RdWzFdO2QhPWEmJihjLnJlbW92ZUNsYXNzKFwiY2tlX2RpYWxvZ190YWJfc2VsZWN0ZWRcIiksXG5jLnJlbW92ZUF0dHJpYnV0ZShcImFyaWEtc2VsZWN0ZWRcIiksZy5oaWRlKCkpO2cuc2V0QXR0cmlidXRlKFwiYXJpYS1oaWRkZW5cIixkIT1hKX12YXIgZT10aGlzLl8udGFic1thXTtlWzBdLmFkZENsYXNzKFwiY2tlX2RpYWxvZ190YWJfc2VsZWN0ZWRcIik7ZVswXS5zZXRBdHRyaWJ1dGUoXCJhcmlhLXNlbGVjdGVkXCIsITApO0NLRURJVE9SLmVudi5pZTZDb21wYXR8fENLRURJVE9SLmVudi5pZTdDb21wYXQ/KGIoZVsxXSksZVsxXS5zaG93KCksc2V0VGltZW91dChmdW5jdGlvbigpe2IoZVsxXSwxKX0sMCkpOmVbMV0uc2hvdygpO3RoaXMuXy5jdXJyZW50VGFiSWQ9YTt0aGlzLl8uY3VycmVudFRhYkluZGV4PUNLRURJVE9SLnRvb2xzLmluZGV4T2YodGhpcy5fLnRhYklkTGlzdCxhKX19LHVwZGF0ZVN0eWxlOmZ1bmN0aW9uKCl7dGhpcy5wYXJ0cy5kaWFsb2dbKDE9PT10aGlzLl8ucGFnZUNvdW50P1wiYWRkXCI6XCJyZW1vdmVcIikrXCJDbGFzc1wiXShcImNrZV9zaW5nbGVfcGFnZVwiKX0saGlkZVBhZ2U6ZnVuY3Rpb24oYSl7dmFyIGI9XG50aGlzLl8udGFic1thXSYmdGhpcy5fLnRhYnNbYV1bMF07YiYmMSE9dGhpcy5fLnBhZ2VDb3VudCYmYi5pc1Zpc2libGUoKSYmKGE9PXRoaXMuXy5jdXJyZW50VGFiSWQmJnRoaXMuc2VsZWN0UGFnZShmLmNhbGwodGhpcykpLGIuaGlkZSgpLHRoaXMuXy5wYWdlQ291bnQtLSx0aGlzLnVwZGF0ZVN0eWxlKCkpfSxzaG93UGFnZTpmdW5jdGlvbihhKXtpZihhPXRoaXMuXy50YWJzW2FdJiZ0aGlzLl8udGFic1thXVswXSlhLnNob3coKSx0aGlzLl8ucGFnZUNvdW50KyssdGhpcy51cGRhdGVTdHlsZSgpfSxnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5lbGVtZW50fSxnZXROYW1lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5uYW1lfSxnZXRDb250ZW50RWxlbWVudDpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuXy5jb250ZW50c1thXTtyZXR1cm4gZCYmZFtiXX0sZ2V0VmFsdWVPZjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmdldENvbnRlbnRFbGVtZW50KGEsYikuZ2V0VmFsdWUoKX0sXG5zZXRWYWx1ZU9mOmZ1bmN0aW9uKGEsYixkKXtyZXR1cm4gdGhpcy5nZXRDb250ZW50RWxlbWVudChhLGIpLnNldFZhbHVlKGQpfSxnZXRCdXR0b246ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuXy5idXR0b25zW2FdfSxjbGljazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fLmJ1dHRvbnNbYV0uY2xpY2soKX0sZGlzYWJsZUJ1dHRvbjpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fLmJ1dHRvbnNbYV0uZGlzYWJsZSgpfSxlbmFibGVCdXR0b246ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuXy5idXR0b25zW2FdLmVuYWJsZSgpfSxnZXRQYWdlQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLnBhZ2VDb3VudH0sZ2V0UGFyZW50RWRpdG9yOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5lZGl0b3J9LGdldFNlbGVjdGVkRWxlbWVudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldFBhcmVudEVkaXRvcigpLmdldFNlbGVjdGlvbigpLmdldFNlbGVjdGVkRWxlbWVudCgpfSxhZGRGb2N1c2FibGU6ZnVuY3Rpb24oYSxcbmIpe2lmKFwidW5kZWZpbmVkXCI9PXR5cGVvZiBiKWI9dGhpcy5fLmZvY3VzTGlzdC5sZW5ndGgsdGhpcy5fLmZvY3VzTGlzdC5wdXNoKG5ldyBtKHRoaXMsYSxiKSk7ZWxzZXt0aGlzLl8uZm9jdXNMaXN0LnNwbGljZShiLDAsbmV3IG0odGhpcyxhLGIpKTtmb3IodmFyIGQ9YisxO2Q8dGhpcy5fLmZvY3VzTGlzdC5sZW5ndGg7ZCsrKXRoaXMuXy5mb2N1c0xpc3RbZF0uZm9jdXNJbmRleCsrfX0sc2V0U3RhdGU6ZnVuY3Rpb24oYSl7aWYodGhpcy5zdGF0ZSE9YSl7dGhpcy5zdGF0ZT1hO2lmKGE9PUNLRURJVE9SLkRJQUxPR19TVEFURV9CVVNZKXtpZighdGhpcy5wYXJ0cy5zcGlubmVyKXt2YXIgYj10aGlzLmdldFBhcmVudEVkaXRvcigpLmxhbmcuZGlyLGQ9e2F0dHJpYnV0ZXM6e1wiY2xhc3NcIjpcImNrZV9kaWFsb2dfc3Bpbm5lclwifSxzdHlsZXM6e1wiZmxvYXRcIjpcInJ0bFwiPT1iP1wicmlnaHRcIjpcImxlZnRcIn19O2Quc3R5bGVzW1wibWFyZ2luLVwiKyhcInJ0bFwiPT1iP1wibGVmdFwiOlwicmlnaHRcIildPVxuXCI4cHhcIjt0aGlzLnBhcnRzLnNwaW5uZXI9Q0tFRElUT1IuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiLGQpO3RoaXMucGFydHMuc3Bpbm5lci5zZXRIdG1sKFwiXFx4MjYjODk4NztcIik7dGhpcy5wYXJ0cy5zcGlubmVyLmFwcGVuZFRvKHRoaXMucGFydHMudGl0bGUsMSl9dGhpcy5wYXJ0cy5zcGlubmVyLnNob3coKTt0aGlzLmdldEJ1dHRvbihcIm9rXCIpJiZ0aGlzLmdldEJ1dHRvbihcIm9rXCIpLmRpc2FibGUoKX1lbHNlIGE9PUNLRURJVE9SLkRJQUxPR19TVEFURV9JRExFJiYodGhpcy5wYXJ0cy5zcGlubmVyJiZ0aGlzLnBhcnRzLnNwaW5uZXIuaGlkZSgpLHRoaXMuZ2V0QnV0dG9uKFwib2tcIikmJnRoaXMuZ2V0QnV0dG9uKFwib2tcIikuZW5hYmxlKCkpO3RoaXMuZmlyZShcInN0YXRlXCIsYSl9fSxnZXRNb2RlbDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fLm1vZGVsP3RoaXMuXy5tb2RlbDp0aGlzLmRlZmluaXRpb24uZ2V0TW9kZWw/dGhpcy5kZWZpbml0aW9uLmdldE1vZGVsKGEpOm51bGx9LFxuc2V0TW9kZWw6ZnVuY3Rpb24oYSl7dGhpcy5fLm1vZGVsPWF9LGdldE1vZGU6ZnVuY3Rpb24oYSl7aWYodGhpcy5kZWZpbml0aW9uLmdldE1vZGUpcmV0dXJuIHRoaXMuZGVmaW5pdGlvbi5nZXRNb2RlKGEpO2E9dGhpcy5nZXRNb2RlbChhKTtyZXR1cm4hYXx8YSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50JiYhYS5nZXRQYXJlbnQoKT9DS0VESVRPUi5kaWFsb2cuQ1JFQVRJT05fTU9ERTpDS0VESVRPUi5kaWFsb2cuRURJVElOR19NT0RFfX07Q0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmRpYWxvZyx7Q1JFQVRJT05fTU9ERTowLEVESVRJTkdfTU9ERToxLGFkZDpmdW5jdGlvbihhLGIpe3RoaXMuXy5kaWFsb2dEZWZpbml0aW9uc1thXSYmXCJmdW5jdGlvblwiIT10eXBlb2YgYnx8KHRoaXMuXy5kaWFsb2dEZWZpbml0aW9uc1thXT1iKX0sZXhpc3RzOmZ1bmN0aW9uKGEpe3JldHVybiEhdGhpcy5fLmRpYWxvZ0RlZmluaXRpb25zW2FdfSxnZXRDdXJyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIENLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3B9LFxuaXNUYWJFbmFibGVkOmZ1bmN0aW9uKGEsYixkKXthPWEuY29uZmlnLnJlbW92ZURpYWxvZ1RhYnM7cmV0dXJuIShhJiZhLm1hdGNoKG5ldyBSZWdFeHAoXCIoPzpefDspXCIrYitcIjpcIitkK1wiKD86JHw7KVwiLFwiaVwiKSkpfSxva0J1dHRvbjpmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGEsYil7Yj1ifHx7fTtyZXR1cm4gQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHtpZDpcIm9rXCIsdHlwZTpcImJ1dHRvblwiLGxhYmVsOmEubGFuZy5jb21tb24ub2ssXCJjbGFzc1wiOlwiY2tlX2RpYWxvZ191aV9idXR0b25fb2tcIixvbkNsaWNrOmZ1bmN0aW9uKGEpe2E9YS5kYXRhLmRpYWxvZzshMSE9PWEuZmlyZShcIm9rXCIse2hpZGU6ITB9KS5oaWRlJiZhLmhpZGUoKX19LGIsITApfTthLnR5cGU9XCJidXR0b25cIjthLm92ZXJyaWRlPWZ1bmN0aW9uKGIpe3JldHVybiBDS0VESVRPUi50b29scy5leHRlbmQoZnVuY3Rpb24oZCl7cmV0dXJuIGEoZCxiKX0se3R5cGU6XCJidXR0b25cIn0sITApfTtyZXR1cm4gYX0oKSxjYW5jZWxCdXR0b246ZnVuY3Rpb24oKXt2YXIgYT1cbmZ1bmN0aW9uKGEsYil7Yj1ifHx7fTtyZXR1cm4gQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHtpZDpcImNhbmNlbFwiLHR5cGU6XCJidXR0b25cIixsYWJlbDphLmxhbmcuY29tbW9uLmNhbmNlbCxcImNsYXNzXCI6XCJja2VfZGlhbG9nX3VpX2J1dHRvbl9jYW5jZWxcIixvbkNsaWNrOmZ1bmN0aW9uKGEpe2E9YS5kYXRhLmRpYWxvZzshMSE9PWEuZmlyZShcImNhbmNlbFwiLHtoaWRlOiEwfSkuaGlkZSYmYS5oaWRlKCl9fSxiLCEwKX07YS50eXBlPVwiYnV0dG9uXCI7YS5vdmVycmlkZT1mdW5jdGlvbihiKXtyZXR1cm4gQ0tFRElUT1IudG9vbHMuZXh0ZW5kKGZ1bmN0aW9uKGQpe3JldHVybiBhKGQsYil9LHt0eXBlOlwiYnV0dG9uXCJ9LCEwKX07cmV0dXJuIGF9KCksYWRkVUlFbGVtZW50OmZ1bmN0aW9uKGEsYil7dGhpcy5fLnVpRWxlbWVudEJ1aWxkZXJzW2FdPWJ9fSk7Q0tFRElUT1IuZGlhbG9nLl89e3VpRWxlbWVudEJ1aWxkZXJzOnt9LGRpYWxvZ0RlZmluaXRpb25zOnt9LGN1cnJlbnRUb3A6bnVsbCxjdXJyZW50WkluZGV4Om51bGx9O1xuQ0tFRElUT1IuZXZlbnQuaW1wbGVtZW50T24oQ0tFRElUT1IuZGlhbG9nKTtDS0VESVRPUi5ldmVudC5pbXBsZW1lbnRPbihDS0VESVRPUi5kaWFsb2cucHJvdG90eXBlKTtEPXtyZXNpemFibGU6Q0tFRElUT1IuRElBTE9HX1JFU0laRV9CT1RILG1pbldpZHRoOjYwMCxtaW5IZWlnaHQ6NDAwLGJ1dHRvbnM6W0NLRURJVE9SLmRpYWxvZy5va0J1dHRvbixDS0VESVRPUi5kaWFsb2cuY2FuY2VsQnV0dG9uXX07dmFyIEc9ZnVuY3Rpb24oYSxiLGQpe2Zvcih2YXIgYz0wLGc7Zz1hW2NdO2MrKylpZihnLmlkPT1ifHxkJiZnW2RdJiYoZz1HKGdbZF0sYixkKSkpcmV0dXJuIGc7cmV0dXJuIG51bGx9LE09ZnVuY3Rpb24oYSxiLGQsYyxnKXtpZihkKXtmb3IodmFyIGU9MCxmO2Y9YVtlXTtlKyspe2lmKGYuaWQ9PWQpcmV0dXJuIGEuc3BsaWNlKGUsMCxiKSxiO2lmKGMmJmZbY10mJihmPU0oZltjXSxiLGQsYywhMCkpKXJldHVybiBmfWlmKGcpcmV0dXJuIG51bGx9YS5wdXNoKGIpO3JldHVybiBifSxcbkg9ZnVuY3Rpb24oYSxiLGQpe2Zvcih2YXIgYz0wLGc7Zz1hW2NdO2MrKyl7aWYoZy5pZD09YilyZXR1cm4gYS5zcGxpY2UoYywxKTtpZihkJiZnW2RdJiYoZz1IKGdbZF0sYixkKSkpcmV0dXJuIGd9cmV0dXJuIG51bGx9O2gucHJvdG90eXBlPXtnZXRDb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gRyh0aGlzLmNvbnRlbnRzLGEpfSxnZXRCdXR0b246ZnVuY3Rpb24oYSl7cmV0dXJuIEcodGhpcy5idXR0b25zLGEpfSxhZGRDb250ZW50czpmdW5jdGlvbihhLGIpe3JldHVybiBNKHRoaXMuY29udGVudHMsYSxiKX0sYWRkQnV0dG9uOmZ1bmN0aW9uKGEsYil7cmV0dXJuIE0odGhpcy5idXR0b25zLGEsYil9LHJlbW92ZUNvbnRlbnRzOmZ1bmN0aW9uKGEpe0godGhpcy5jb250ZW50cyxhKX0scmVtb3ZlQnV0dG9uOmZ1bmN0aW9uKGEpe0godGhpcy5idXR0b25zLGEpfX07Zy5wcm90b3R5cGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gRyh0aGlzLmVsZW1lbnRzLGEsXCJjaGlsZHJlblwiKX0sXG5hZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gTSh0aGlzLmVsZW1lbnRzLGEsYixcImNoaWxkcmVuXCIpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7SCh0aGlzLmVsZW1lbnRzLGEsXCJjaGlsZHJlblwiKX19O3ZhciBFPXt9LFA9e307KGZ1bmN0aW9uKCl7Q0tFRElUT1IudWkuZGlhbG9nPXt1aUVsZW1lbnQ6ZnVuY3Rpb24oYSxiLGQsYyxnLGUsZil7aWYoISg0PmFyZ3VtZW50cy5sZW5ndGgpKXt2YXIgaD0oYy5jYWxsP2MoYik6Yyl8fFwiZGl2XCIsaz1bXCJcXHgzY1wiLGgsXCIgXCJdLGw9KGcmJmcuY2FsbD9nKGIpOmcpfHx7fSxtPShlJiZlLmNhbGw/ZShiKTplKXx8e30sbj0oZiYmZi5jYWxsP2YuY2FsbCh0aGlzLGEsYik6Zil8fFwiXCIsdj10aGlzLmRvbUlkPW0uaWR8fENLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpK1wiX3VpRWxlbWVudFwiO2IucmVxdWlyZWRDb250ZW50JiYhYS5nZXRQYXJlbnRFZGl0b3IoKS5maWx0ZXIuY2hlY2soYi5yZXF1aXJlZENvbnRlbnQpJiYobC5kaXNwbGF5PVwibm9uZVwiLHRoaXMubm90QWxsb3dlZD1cbiEwKTttLmlkPXY7dmFyIHE9e307Yi50eXBlJiYocVtcImNrZV9kaWFsb2dfdWlfXCIrYi50eXBlXT0xKTtiLmNsYXNzTmFtZSYmKHFbYi5jbGFzc05hbWVdPTEpO2IuZGlzYWJsZWQmJihxLmNrZV9kaXNhYmxlZD0xKTtmb3IodmFyIHQ9bVtcImNsYXNzXCJdJiZtW1wiY2xhc3NcIl0uc3BsaXQ/bVtcImNsYXNzXCJdLnNwbGl0KFwiIFwiKTpbXSx2PTA7djx0Lmxlbmd0aDt2KyspdFt2XSYmKHFbdFt2XV09MSk7dD1bXTtmb3IodiBpbiBxKXQucHVzaCh2KTttW1wiY2xhc3NcIl09dC5qb2luKFwiIFwiKTtiLnRpdGxlJiYobS50aXRsZT1iLnRpdGxlKTtxPShiLnN0eWxlfHxcIlwiKS5zcGxpdChcIjtcIik7Yi5hbGlnbiYmKHQ9Yi5hbGlnbixsW1wibWFyZ2luLWxlZnRcIl09XCJsZWZ0XCI9PXQ/MDpcImF1dG9cIixsW1wibWFyZ2luLXJpZ2h0XCJdPVwicmlnaHRcIj09dD8wOlwiYXV0b1wiKTtmb3IodiBpbiBsKXEucHVzaCh2K1wiOlwiK2xbdl0pO2IuaGlkZGVuJiZxLnB1c2goXCJkaXNwbGF5Om5vbmVcIik7Zm9yKHY9cS5sZW5ndGgtMTswPD1cbnY7di0tKVwiXCI9PT1xW3ZdJiZxLnNwbGljZSh2LDEpOzA8cS5sZW5ndGgmJihtLnN0eWxlPShtLnN0eWxlP20uc3R5bGUrXCI7IFwiOlwiXCIpK3Euam9pbihcIjsgXCIpKTtmb3IodiBpbiBtKWsucHVzaCh2KydcXHgzZFwiJytDS0VESVRPUi50b29scy5odG1sRW5jb2RlKG1bdl0pKydcIiAnKTtrLnB1c2goXCJcXHgzZVwiLG4sXCJcXHgzYy9cIixoLFwiXFx4M2VcIik7ZC5wdXNoKGsuam9pbihcIlwiKSk7KHRoaXMuX3x8KHRoaXMuXz17fSkpLmRpYWxvZz1hO1wiYm9vbGVhblwiPT10eXBlb2YgYi5pc0NoYW5nZWQmJih0aGlzLmlzQ2hhbmdlZD1mdW5jdGlvbigpe3JldHVybiBiLmlzQ2hhbmdlZH0pO1wiZnVuY3Rpb25cIj09dHlwZW9mIGIuaXNDaGFuZ2VkJiYodGhpcy5pc0NoYW5nZWQ9Yi5pc0NoYW5nZWQpO1wiZnVuY3Rpb25cIj09dHlwZW9mIGIuc2V0VmFsdWUmJih0aGlzLnNldFZhbHVlPUNLRURJVE9SLnRvb2xzLm92ZXJyaWRlKHRoaXMuc2V0VmFsdWUsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGQpe2EuY2FsbCh0aGlzLFxuYi5zZXRWYWx1ZS5jYWxsKHRoaXMsZCkpfX0pKTtcImZ1bmN0aW9uXCI9PXR5cGVvZiBiLmdldFZhbHVlJiYodGhpcy5nZXRWYWx1ZT1DS0VESVRPUi50b29scy5vdmVycmlkZSh0aGlzLmdldFZhbHVlLGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe3JldHVybiBiLmdldFZhbHVlLmNhbGwodGhpcyxhLmNhbGwodGhpcykpfX0pKTtDS0VESVRPUi5ldmVudC5pbXBsZW1lbnRPbih0aGlzKTt0aGlzLnJlZ2lzdGVyRXZlbnRzKGIpO3RoaXMuYWNjZXNzS2V5VXAmJnRoaXMuYWNjZXNzS2V5RG93biYmYi5hY2Nlc3NLZXkmJkEodGhpcyxhLFwiQ1RSTCtcIitiLmFjY2Vzc0tleSk7dmFyIHk9dGhpczthLm9uKFwibG9hZFwiLGZ1bmN0aW9uKCl7dmFyIGI9eS5nZXRJbnB1dEVsZW1lbnQoKTtpZihiKXt2YXIgZD15LnR5cGUgaW57Y2hlY2tib3g6MSxyYXRpbzoxfSYmQ0tFRElUT1IuZW52LmllJiY4PkNLRURJVE9SLmVudi52ZXJzaW9uP1wiY2tlX2RpYWxvZ191aV9mb2N1c2VkXCI6XCJcIjtiLm9uKFwiZm9jdXNcIixcbmZ1bmN0aW9uKCl7YS5fLnRhYkJhck1vZGU9ITE7YS5fLmhhc0ZvY3VzPSEwO3kuZmlyZShcImZvY3VzXCIpO2QmJnRoaXMuYWRkQ2xhc3MoZCl9KTtiLm9uKFwiYmx1clwiLGZ1bmN0aW9uKCl7eS5maXJlKFwiYmx1clwiKTtkJiZ0aGlzLnJlbW92ZUNsYXNzKGQpfSl9fSk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsYik7dGhpcy5rZXlib2FyZEZvY3VzYWJsZSYmKHRoaXMudGFiSW5kZXg9Yi50YWJJbmRleHx8MCx0aGlzLmZvY3VzSW5kZXg9YS5fLmZvY3VzTGlzdC5wdXNoKHRoaXMpLTEsdGhpcy5vbihcImZvY3VzXCIsZnVuY3Rpb24oKXthLl8uY3VycmVudEZvY3VzSW5kZXg9eS5mb2N1c0luZGV4fSkpfX0saGJveDpmdW5jdGlvbihhLGIsZCxjLGcpe2lmKCEoND5hcmd1bWVudHMubGVuZ3RoKSl7dGhpcy5ffHwodGhpcy5fPXt9KTt2YXIgZT10aGlzLl8uY2hpbGRyZW49YixmPWcmJmcud2lkdGhzfHxudWxsLGg9ZyYmZy5oZWlnaHR8fG51bGwsayxsPXtyb2xlOlwicHJlc2VudGF0aW9uXCJ9O1xuZyYmZy5hbGlnbiYmKGwuYWxpZ249Zy5hbGlnbik7Q0tFRElUT1IudWkuZGlhbG9nLnVpRWxlbWVudC5jYWxsKHRoaXMsYSxnfHx7dHlwZTpcImhib3hcIn0sYyxcInRhYmxlXCIse30sbCxmdW5jdGlvbigpe3ZhciBhPVsnXFx4M2N0Ym9keVxceDNlXFx4M2N0ciBjbGFzc1xceDNkXCJja2VfZGlhbG9nX3VpX2hib3hcIlxceDNlJ107Zm9yKGs9MDtrPGQubGVuZ3RoO2srKyl7dmFyIGI9XCJja2VfZGlhbG9nX3VpX2hib3hfY2hpbGRcIixjPVtdOzA9PT1rJiYoYj1cImNrZV9kaWFsb2dfdWlfaGJveF9maXJzdFwiKTtrPT1kLmxlbmd0aC0xJiYoYj1cImNrZV9kaWFsb2dfdWlfaGJveF9sYXN0XCIpO2EucHVzaCgnXFx4M2N0ZCBjbGFzc1xceDNkXCInLGIsJ1wiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCIgJyk7Zj9mW2tdJiZjLnB1c2goXCJ3aWR0aDpcIitCKGZba10pKTpjLnB1c2goXCJ3aWR0aDpcIitNYXRoLmZsb29yKDEwMC9kLmxlbmd0aCkrXCIlXCIpO2gmJmMucHVzaChcImhlaWdodDpcIitCKGgpKTtnJiZ2b2lkIDAhPT1nLnBhZGRpbmcmJlxuYy5wdXNoKFwicGFkZGluZzpcIitCKGcucGFkZGluZykpO0NLRURJVE9SLmVudi5pZSYmQ0tFRElUT1IuZW52LnF1aXJrcyYmZVtrXS5hbGlnbiYmYy5wdXNoKFwidGV4dC1hbGlnbjpcIitlW2tdLmFsaWduKTswPGMubGVuZ3RoJiZhLnB1c2goJ3N0eWxlXFx4M2RcIicrYy5qb2luKFwiOyBcIikrJ1wiICcpO2EucHVzaChcIlxceDNlXCIsZFtrXSxcIlxceDNjL3RkXFx4M2VcIil9YS5wdXNoKFwiXFx4M2MvdHJcXHgzZVxceDNjL3Rib2R5XFx4M2VcIik7cmV0dXJuIGEuam9pbihcIlwiKX0pfX0sdmJveDpmdW5jdGlvbihhLGIsZCxjLGcpe2lmKCEoMz5hcmd1bWVudHMubGVuZ3RoKSl7dGhpcy5ffHwodGhpcy5fPXt9KTt2YXIgZT10aGlzLl8uY2hpbGRyZW49YixmPWcmJmcud2lkdGh8fG51bGwsaD1nJiZnLmhlaWdodHN8fG51bGw7Q0tFRElUT1IudWkuZGlhbG9nLnVpRWxlbWVudC5jYWxsKHRoaXMsYSxnfHx7dHlwZTpcInZib3hcIn0sYyxcImRpdlwiLG51bGwse3JvbGU6XCJwcmVzZW50YXRpb25cIn0sZnVuY3Rpb24oKXt2YXIgYj1cblsnXFx4M2N0YWJsZSByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiIGNlbGxzcGFjaW5nXFx4M2RcIjBcIiBib3JkZXJcXHgzZFwiMFwiICddO2IucHVzaCgnc3R5bGVcXHgzZFwiJyk7ZyYmZy5leHBhbmQmJmIucHVzaChcImhlaWdodDoxMDAlO1wiKTtiLnB1c2goXCJ3aWR0aDpcIitCKGZ8fFwiMTAwJVwiKSxcIjtcIik7Q0tFRElUT1IuZW52LndlYmtpdCYmYi5wdXNoKFwiZmxvYXQ6bm9uZTtcIik7Yi5wdXNoKCdcIicpO2IucHVzaCgnYWxpZ25cXHgzZFwiJyxDS0VESVRPUi50b29scy5odG1sRW5jb2RlKGcmJmcuYWxpZ258fChcImx0clwiPT1hLmdldFBhcmVudEVkaXRvcigpLmxhbmcuZGlyP1wibGVmdFwiOlwicmlnaHRcIikpLCdcIiAnKTtiLnB1c2goXCJcXHgzZVxceDNjdGJvZHlcXHgzZVwiKTtmb3IodmFyIGM9MDtjPGQubGVuZ3RoO2MrKyl7dmFyIGs9W107Yi5wdXNoKCdcXHgzY3RyXFx4M2VcXHgzY3RkIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCIgJyk7ZiYmay5wdXNoKFwid2lkdGg6XCIrQihmfHxcIjEwMCVcIikpO2g/ay5wdXNoKFwiaGVpZ2h0OlwiK1xuQihoW2NdKSk6ZyYmZy5leHBhbmQmJmsucHVzaChcImhlaWdodDpcIitNYXRoLmZsb29yKDEwMC9kLmxlbmd0aCkrXCIlXCIpO2cmJnZvaWQgMCE9PWcucGFkZGluZyYmay5wdXNoKFwicGFkZGluZzpcIitCKGcucGFkZGluZykpO0NLRURJVE9SLmVudi5pZSYmQ0tFRElUT1IuZW52LnF1aXJrcyYmZVtjXS5hbGlnbiYmay5wdXNoKFwidGV4dC1hbGlnbjpcIitlW2NdLmFsaWduKTswPGsubGVuZ3RoJiZiLnB1c2goJ3N0eWxlXFx4M2RcIicsay5qb2luKFwiOyBcIiksJ1wiICcpO2IucHVzaCgnIGNsYXNzXFx4M2RcImNrZV9kaWFsb2dfdWlfdmJveF9jaGlsZFwiXFx4M2UnLGRbY10sXCJcXHgzYy90ZFxceDNlXFx4M2MvdHJcXHgzZVwiKX1iLnB1c2goXCJcXHgzYy90Ym9keVxceDNlXFx4M2MvdGFibGVcXHgzZVwiKTtyZXR1cm4gYi5qb2luKFwiXCIpfSl9fX19KSgpO0NLRURJVE9SLnVpLmRpYWxvZy51aUVsZW1lbnQucHJvdG90eXBlPXtnZXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIENLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQodGhpcy5kb21JZCl9LFxuZ2V0SW5wdXRFbGVtZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZ2V0RWxlbWVudCgpfSxnZXREaWFsb2c6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fLmRpYWxvZ30sc2V0VmFsdWU6ZnVuY3Rpb24oYSxiKXt0aGlzLmdldElucHV0RWxlbWVudCgpLnNldFZhbHVlKGEpOyFiJiZ0aGlzLmZpcmUoXCJjaGFuZ2VcIix7dmFsdWU6YX0pO3JldHVybiB0aGlzfSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldElucHV0RWxlbWVudCgpLmdldFZhbHVlKCl9LGlzQ2hhbmdlZDpmdW5jdGlvbigpe3JldHVybiExfSxzZWxlY3RQYXJlbnRUYWI6ZnVuY3Rpb24oKXtmb3IodmFyIGE9dGhpcy5nZXRJbnB1dEVsZW1lbnQoKTsoYT1hLmdldFBhcmVudCgpKSYmLTE9PWEuJC5jbGFzc05hbWUuc2VhcmNoKFwiY2tlX2RpYWxvZ19wYWdlX2NvbnRlbnRzXCIpOyk7aWYoIWEpcmV0dXJuIHRoaXM7YT1hLmdldEF0dHJpYnV0ZShcIm5hbWVcIik7dGhpcy5fLmRpYWxvZy5fLmN1cnJlbnRUYWJJZCE9XG5hJiZ0aGlzLl8uZGlhbG9nLnNlbGVjdFBhZ2UoYSk7cmV0dXJuIHRoaXN9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RQYXJlbnRUYWIoKS5nZXRJbnB1dEVsZW1lbnQoKS5mb2N1cygpO3JldHVybiB0aGlzfSxyZWdpc3RlckV2ZW50czpmdW5jdGlvbihhKXt2YXIgYj0vXm9uKFtBLVpdXFx3KykvLGQsYz1mdW5jdGlvbihhLGIsZCxjKXtiLm9uKFwibG9hZFwiLGZ1bmN0aW9uKCl7YS5nZXRJbnB1dEVsZW1lbnQoKS5vbihkLGMsYSl9KX0sZztmb3IoZyBpbiBhKWlmKGQ9Zy5tYXRjaChiKSl0aGlzLmV2ZW50UHJvY2Vzc29yc1tnXT90aGlzLmV2ZW50UHJvY2Vzc29yc1tnXS5jYWxsKHRoaXMsdGhpcy5fLmRpYWxvZyxhW2ddKTpjKHRoaXMsdGhpcy5fLmRpYWxvZyxkWzFdLnRvTG93ZXJDYXNlKCksYVtnXSk7cmV0dXJuIHRoaXN9LGV2ZW50UHJvY2Vzc29yczp7b25Mb2FkOmZ1bmN0aW9uKGEsYil7YS5vbihcImxvYWRcIixiLHRoaXMpfSxvblNob3c6ZnVuY3Rpb24oYSxiKXthLm9uKFwic2hvd1wiLFxuYix0aGlzKX0sb25IaWRlOmZ1bmN0aW9uKGEsYil7YS5vbihcImhpZGVcIixiLHRoaXMpfX0sYWNjZXNzS2V5RG93bjpmdW5jdGlvbigpe3RoaXMuZm9jdXMoKX0sYWNjZXNzS2V5VXA6ZnVuY3Rpb24oKXt9LGRpc2FibGU6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldEVsZW1lbnQoKTt0aGlzLmdldElucHV0RWxlbWVudCgpLnNldEF0dHJpYnV0ZShcImRpc2FibGVkXCIsXCJ0cnVlXCIpO2EuYWRkQ2xhc3MoXCJja2VfZGlzYWJsZWRcIil9LGVuYWJsZTpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZ2V0RWxlbWVudCgpO3RoaXMuZ2V0SW5wdXRFbGVtZW50KCkucmVtb3ZlQXR0cmlidXRlKFwiZGlzYWJsZWRcIik7YS5yZW1vdmVDbGFzcyhcImNrZV9kaXNhYmxlZFwiKX0saXNFbmFibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIXRoaXMuZ2V0RWxlbWVudCgpLmhhc0NsYXNzKFwiY2tlX2Rpc2FibGVkXCIpfSxpc1Zpc2libGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRJbnB1dEVsZW1lbnQoKS5pc1Zpc2libGUoKX0sXG5pc0ZvY3VzYWJsZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmlzRW5hYmxlZCgpJiZ0aGlzLmlzVmlzaWJsZSgpPyEwOiExfX07Q0tFRElUT1IudWkuZGlhbG9nLmhib3gucHJvdG90eXBlPUNLRURJVE9SLnRvb2xzLmV4dGVuZChuZXcgQ0tFRElUT1IudWkuZGlhbG9nLnVpRWxlbWVudCx7Z2V0Q2hpbGQ6ZnVuY3Rpb24oYSl7aWYoMT5hcmd1bWVudHMubGVuZ3RoKXJldHVybiB0aGlzLl8uY2hpbGRyZW4uY29uY2F0KCk7YS5zcGxpY2V8fChhPVthXSk7cmV0dXJuIDI+YS5sZW5ndGg/dGhpcy5fLmNoaWxkcmVuW2FbMF1dOnRoaXMuXy5jaGlsZHJlblthWzBdXSYmdGhpcy5fLmNoaWxkcmVuW2FbMF1dLmdldENoaWxkP3RoaXMuXy5jaGlsZHJlblthWzBdXS5nZXRDaGlsZChhLnNsaWNlKDEsYS5sZW5ndGgpKTpudWxsfX0sITApO0NLRURJVE9SLnVpLmRpYWxvZy52Ym94LnByb3RvdHlwZT1uZXcgQ0tFRElUT1IudWkuZGlhbG9nLmhib3g7KGZ1bmN0aW9uKCl7dmFyIGE9e2J1aWxkOmZ1bmN0aW9uKGEsXG5iLGQpe2Zvcih2YXIgYz1iLmNoaWxkcmVuLGcsZT1bXSxmPVtdLGg9MDtoPGMubGVuZ3RoJiYoZz1jW2hdKTtoKyspe3ZhciBrPVtdO2UucHVzaChrKTtmLnB1c2goQ0tFRElUT1IuZGlhbG9nLl8udWlFbGVtZW50QnVpbGRlcnNbZy50eXBlXS5idWlsZChhLGcsaykpfXJldHVybiBuZXcgQ0tFRElUT1IudWkuZGlhbG9nW2IudHlwZV0oYSxmLGUsZCxiKX19O0NLRURJVE9SLmRpYWxvZy5hZGRVSUVsZW1lbnQoXCJoYm94XCIsYSk7Q0tFRElUT1IuZGlhbG9nLmFkZFVJRWxlbWVudChcInZib3hcIixhKX0pKCk7Q0tFRElUT1IuZGlhbG9nQ29tbWFuZD1mdW5jdGlvbihhLGIpe3RoaXMuZGlhbG9nTmFtZT1hO0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGIsITApfTtDS0VESVRPUi5kaWFsb2dDb21tYW5kLnByb3RvdHlwZT17ZXhlYzpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnRhYklkO2Eub3BlbkRpYWxvZyh0aGlzLmRpYWxvZ05hbWUsZnVuY3Rpb24oYSl7YiYmYS5zZWxlY3RQYWdlKGIpfSl9LFxuY2FuVW5kbzohMSxlZGl0b3JGb2N1czoxfTsoZnVuY3Rpb24oKXt2YXIgYT0vXlxcZCokLyxiPS9eXFxkKig/OlxcLlxcZCspPyQvLGQ9L14oKChcXGQqKFxcLlxcZCspKXwoXFxkKikpKHB4fFxcJSk/KT8kLyxjPS9eKCgoXFxkKihcXC5cXGQrKSl8KFxcZCopKShweHxlbXxleHxpbnxjbXxtbXxwdHxwY3xcXCUpPyk/JC9pLGc9L14oLS18LT8oW2EtekEtWl9dfFxcXFwpKShcXFxcfFthLXpBLVowLTktX10pKlxccyo/Olxccyo/W146O10rJC87Q0tFRElUT1IuVkFMSURBVEVfT1I9MTtDS0VESVRPUi5WQUxJREFURV9BTkQ9MjtDS0VESVRPUi5kaWFsb2cudmFsaWRhdGU9e2Z1bmN0aW9uczpmdW5jdGlvbigpe3ZhciBhPWFyZ3VtZW50cztyZXR1cm4gZnVuY3Rpb24oYil7dGhpcyYmdGhpcy5nZXRWYWx1ZSYmKGI9dGhpcy5nZXRWYWx1ZSgpKTt2YXIgZCxjPUNLRURJVE9SLlZBTElEQVRFX0FORCxnPVtdLGU7Zm9yKGU9MDtlPGEubGVuZ3RoO2UrKylpZihcImZ1bmN0aW9uXCI9PXR5cGVvZiBhW2VdKWcucHVzaChhW2VdKTtcbmVsc2UgYnJlYWs7ZTxhLmxlbmd0aCYmXCJzdHJpbmdcIj09dHlwZW9mIGFbZV0mJihkPWFbZV0sZSsrKTtlPGEubGVuZ3RoJiZcIm51bWJlclwiPT10eXBlb2YgYVtlXSYmKGM9YVtlXSk7ZT1jPT1DS0VESVRPUi5WQUxJREFURV9BTkQ7Zm9yKHZhciBmPTA7ZjxnLmxlbmd0aDtmKyspe3ZhciBoPSEwPT09Z1tmXShiKTtlPWM9PUNLRURJVE9SLlZBTElEQVRFX0FORD9lJiZoOmV8fGh9cmV0dXJuIGU/ITA6ZH19LHJlZ2V4OmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZnVuY3Rpb25zKGZ1bmN0aW9uKGIpe3JldHVybiBhLnRlc3QoYil9LGIpfSxub3RFbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5mdW5jdGlvbnMoZnVuY3Rpb24oYSl7cmV0dXJuIDA8YS5yZXBsYWNlKFJlZ0V4cChcIl5bXFxcXHUwMDIwXFxcXHUwMGEwXFxcXHUxNjgwXFxcXHUyMDJmXFxcXHUyMDVmXFxcXHUzMDAwXFxcXHUyMDAwLVxcXFx1MjAwYVxcXFxzXSt8W1xcXFx1MDAyMFxcXFx1MDBhMFxcXFx1MTY4MFxcXFx1MjAyZlxcXFx1MjA1ZlxcXFx1MzAwMFxcXFx1MjAwMC1cXFxcdTIwMGFcXFxcc10rJFwiLFxuXCJnXCIpLFwiXCIpLmxlbmd0aH0sYSl9LGludGVnZXI6ZnVuY3Rpb24oYil7cmV0dXJuIHRoaXMucmVnZXgoYSxiKX0sbnVtYmVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlZ2V4KGIsYSl9LGNzc0xlbmd0aDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5mdW5jdGlvbnMoZnVuY3Rpb24oYSl7cmV0dXJuIGMudGVzdChDS0VESVRPUi50b29scy50cmltKGEpKX0sYSl9LGh0bWxMZW5ndGg6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZnVuY3Rpb25zKGZ1bmN0aW9uKGEpe3JldHVybiBkLnRlc3QoQ0tFRElUT1IudG9vbHMudHJpbShhKSl9LGEpfSxpbmxpbmVTdHlsZTpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5mdW5jdGlvbnMoZnVuY3Rpb24oYSl7YT1DS0VESVRPUi50b29scy50cmltKGEpLnNwbGl0KFwiO1wiKTtcIlwiPT09YVthLmxlbmd0aC0xXSYmYS5wb3AoKTtyZXR1cm4gQ0tFRElUT1IudG9vbHMuYXJyYXkuZXZlcnkoYSxmdW5jdGlvbihhKXtyZXR1cm4gZy50ZXN0KENLRURJVE9SLnRvb2xzLnRyaW0oYSkpfSl9LFxuYSl9LGVxdWFsczpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmZ1bmN0aW9ucyhmdW5jdGlvbihiKXtyZXR1cm4gYj09YX0sYil9LG5vdEVxdWFsOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuZnVuY3Rpb25zKGZ1bmN0aW9uKGIpe3JldHVybiBiIT1hfSxiKX19O0NLRURJVE9SLm9uKFwiaW5zdGFuY2VEZXN0cm95ZWRcIixmdW5jdGlvbihhKXtpZihDS0VESVRPUi50b29scy5pc0VtcHR5KENLRURJVE9SLmluc3RhbmNlcykpe2Zvcih2YXIgYjtiPUNLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3A7KWIuaGlkZSgpO2Zvcih2YXIgZCBpbiBFKUVbZF0ucmVtb3ZlKCk7RT17fX1hPWEuZWRpdG9yLl8uc3RvcmVkRGlhbG9ncztmb3IodmFyIGMgaW4gYSlhW2NdLmRlc3Ryb3koKX0pfSkoKTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZSx7b3BlbkRpYWxvZzpmdW5jdGlvbihhLGIsZCl7dmFyIGM9bnVsbCxnPUNLRURJVE9SLmRpYWxvZy5fLmRpYWxvZ0RlZmluaXRpb25zW2FdO1xubnVsbD09PUNLRURJVE9SLmRpYWxvZy5fLmN1cnJlbnRUb3AmJnAodGhpcyk7aWYoXCJmdW5jdGlvblwiPT10eXBlb2YgZylnPXRoaXMuXy5zdG9yZWREaWFsb2dzfHwodGhpcy5fLnN0b3JlZERpYWxvZ3M9e30pLGM9Z1thXXx8KGdbYV09bmV3IENLRURJVE9SLmRpYWxvZyh0aGlzLGEpKSxjLnNldE1vZGVsKGQpLGImJmIuY2FsbChjLGMpLGMuc2hvdygpO2Vsc2V7aWYoXCJmYWlsZWRcIj09Zyl0aHJvdyB1KHRoaXMpLEVycm9yKCdbQ0tFRElUT1IuZGlhbG9nLm9wZW5EaWFsb2ddIERpYWxvZyBcIicrYSsnXCIgZmFpbGVkIHdoZW4gbG9hZGluZyBkZWZpbml0aW9uLicpO1wic3RyaW5nXCI9PXR5cGVvZiBnJiZDS0VESVRPUi5zY3JpcHRMb2FkZXIubG9hZChDS0VESVRPUi5nZXRVcmwoZyksZnVuY3Rpb24oKXtcImZ1bmN0aW9uXCIhPXR5cGVvZiBDS0VESVRPUi5kaWFsb2cuXy5kaWFsb2dEZWZpbml0aW9uc1thXSYmKENLRURJVE9SLmRpYWxvZy5fLmRpYWxvZ0RlZmluaXRpb25zW2FdPVwiZmFpbGVkXCIpO1xudGhpcy5vcGVuRGlhbG9nKGEsYixkKX0sdGhpcywwLDEpfUNLRURJVE9SLnNraW4ubG9hZFBhcnQoXCJkaWFsb2dcIik7aWYoYyljLm9uY2UoXCJoaWRlXCIsZnVuY3Rpb24oKXtjLnNldE1vZGVsKG51bGwpfSxudWxsLG51bGwsOTk5KTtyZXR1cm4gY319KTtDS0VESVRPUi5wbHVnaW5zLmFkZChcImRpYWxvZ1wiLHtyZXF1aXJlczpcImRpYWxvZ3VpXCIsaW5pdDpmdW5jdGlvbihhKXtGfHwoQ0tFRElUT1IuZG9jdW1lbnQuYXBwZW5kU3R5bGVTaGVldCh0aGlzLnBhdGgrXCJzdHlsZXMvZGlhbG9nLmNzc1wiKSxGPSEwKTthLm9uKFwiZG91YmxlY2xpY2tcIixmdW5jdGlvbihiKXtiLmRhdGEuZGlhbG9nJiZhLm9wZW5EaWFsb2coYi5kYXRhLmRpYWxvZyl9LG51bGwsbnVsbCw5OTkpfX0pfSgpLGZ1bmN0aW9uKCl7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJhMTF5aGVscFwiLHtyZXF1aXJlczpcImRpYWxvZ1wiLGF2YWlsYWJsZUxhbmdzOnthZjoxLGFyOjEsYXo6MSxiZzoxLGNhOjEsY3M6MSxjeToxLGRhOjEsZGU6MSxcblwiZGUtY2hcIjoxLGVsOjEsZW46MSxcImVuLWF1XCI6MSxcImVuLWdiXCI6MSxlbzoxLGVzOjEsXCJlcy1teFwiOjEsZXQ6MSxldToxLGZhOjEsZmk6MSxmbzoxLGZyOjEsXCJmci1jYVwiOjEsZ2w6MSxndToxLGhlOjEsaGk6MSxocjoxLGh1OjEsaWQ6MSxpdDoxLGphOjEsa206MSxrbzoxLGt1OjEsbHQ6MSxsdjoxLG1rOjEsbW46MSxuYjoxLG5sOjEsbm86MSxvYzoxLHBsOjEscHQ6MSxcInB0LWJyXCI6MSxybzoxLHJ1OjEsc2k6MSxzazoxLHNsOjEsc3E6MSxzcjoxLFwic3ItbGF0blwiOjEsc3Y6MSx0aDoxLHRyOjEsdHQ6MSx1ZzoxLHVrOjEsdmk6MSx6aDoxLFwiemgtY25cIjoxfSxpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXM7YS5hZGRDb21tYW5kKFwiYTExeUhlbHBcIix7ZXhlYzpmdW5jdGlvbigpe3ZhciBlPWEubGFuZ0NvZGUsZT1mLmF2YWlsYWJsZUxhbmdzW2VdP2U6Zi5hdmFpbGFibGVMYW5nc1tlLnJlcGxhY2UoLy0uKi8sXCJcIildP2UucmVwbGFjZSgvLS4qLyxcIlwiKTpcImVuXCI7Q0tFRElUT1Iuc2NyaXB0TG9hZGVyLmxvYWQoQ0tFRElUT1IuZ2V0VXJsKGYucGF0aCtcblwiZGlhbG9ncy9sYW5nL1wiK2UrXCIuanNcIiksZnVuY3Rpb24oKXthLmxhbmcuYTExeWhlbHA9Zi5sYW5nRW50cmllc1tlXTthLm9wZW5EaWFsb2coXCJhMTF5SGVscFwiKX0pfSxtb2Rlczp7d3lzaXd5ZzoxLHNvdXJjZToxfSxyZWFkT25seToxLGNhblVuZG86ITF9KTthLnNldEtleXN0cm9rZShDS0VESVRPUi5BTFQrNDgsXCJhMTF5SGVscFwiKTtDS0VESVRPUi5kaWFsb2cuYWRkKFwiYTExeUhlbHBcIix0aGlzLnBhdGgrXCJkaWFsb2dzL2ExMXloZWxwLmpzXCIpO2Eub24oXCJhcmlhRWRpdG9ySGVscExhYmVsXCIsZnVuY3Rpb24oZSl7ZS5kYXRhLmxhYmVsPWEubGFuZy5jb21tb24uZWRpdG9ySGVscH0pfX0pfSgpLENLRURJVE9SLnBsdWdpbnMuYWRkKFwiYWJvdXRcIix7cmVxdWlyZXM6XCJkaWFsb2dcIixpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPWEuYWRkQ29tbWFuZChcImFib3V0XCIsbmV3IENLRURJVE9SLmRpYWxvZ0NvbW1hbmQoXCJhYm91dFwiKSk7Zi5tb2Rlcz17d3lzaXd5ZzoxLHNvdXJjZToxfTtmLmNhblVuZG89XG4hMTtmLnJlYWRPbmx5PTE7YS51aS5hZGRCdXR0b24mJmEudWkuYWRkQnV0dG9uKFwiQWJvdXRcIix7bGFiZWw6YS5sYW5nLmFib3V0LmRsZ1RpdGxlLGNvbW1hbmQ6XCJhYm91dFwiLHRvb2xiYXI6XCJhYm91dFwifSk7Q0tFRElUT1IuZGlhbG9nLmFkZChcImFib3V0XCIsdGhpcy5wYXRoK1wiZGlhbG9ncy9hYm91dC5qc1wiKX19KSxDS0VESVRPUi5wbHVnaW5zLmFkZChcImJhc2ljc3R5bGVzXCIse2luaXQ6ZnVuY3Rpb24oYSl7dmFyIGY9MCxlPWZ1bmN0aW9uKGMsZSxkLGgpe2lmKGgpe2g9bmV3IENLRURJVE9SLnN0eWxlKGgpO3ZhciBnPWJbZF07Zy51bnNoaWZ0KGgpO2EuYXR0YWNoU3R5bGVTdGF0ZUNoYW5nZShoLGZ1bmN0aW9uKGIpeyFhLnJlYWRPbmx5JiZhLmdldENvbW1hbmQoZCkuc2V0U3RhdGUoYil9KTthLmFkZENvbW1hbmQoZCxuZXcgQ0tFRElUT1Iuc3R5bGVDb21tYW5kKGgse2NvbnRlbnRGb3JtczpnfSkpO2EudWkuYWRkQnV0dG9uJiZhLnVpLmFkZEJ1dHRvbihjLHtpc1RvZ2dsZTohMCxcbmxhYmVsOmUsY29tbWFuZDpkLHRvb2xiYXI6XCJiYXNpY3N0eWxlcyxcIisoZis9MTApfSl9fSxiPXtib2xkOltcInN0cm9uZ1wiLFwiYlwiLFtcInNwYW5cIixmdW5jdGlvbihhKXthPWEuc3R5bGVzW1wiZm9udC13ZWlnaHRcIl07cmV0dXJuXCJib2xkXCI9PWF8fDcwMDw9K2F9XV0saXRhbGljOltcImVtXCIsXCJpXCIsW1wic3BhblwiLGZ1bmN0aW9uKGEpe3JldHVyblwiaXRhbGljXCI9PWEuc3R5bGVzW1wiZm9udC1zdHlsZVwiXX1dXSx1bmRlcmxpbmU6W1widVwiLFtcInNwYW5cIixmdW5jdGlvbihhKXtyZXR1cm5cInVuZGVybGluZVwiPT1hLnN0eWxlc1tcInRleHQtZGVjb3JhdGlvblwiXX1dXSxzdHJpa2U6W1wic1wiLFwic3RyaWtlXCIsW1wic3BhblwiLGZ1bmN0aW9uKGEpe3JldHVyblwibGluZS10aHJvdWdoXCI9PWEuc3R5bGVzW1widGV4dC1kZWNvcmF0aW9uXCJdfV1dLHN1YnNjcmlwdDpbXCJzdWJcIl0sc3VwZXJzY3JpcHQ6W1wic3VwXCJdfSxjPWEuY29uZmlnLGs9YS5sYW5nLmJhc2ljc3R5bGVzO2UoXCJCb2xkXCIsay5ib2xkLFwiYm9sZFwiLFxuYy5jb3JlU3R5bGVzX2JvbGQpO2UoXCJJdGFsaWNcIixrLml0YWxpYyxcIml0YWxpY1wiLGMuY29yZVN0eWxlc19pdGFsaWMpO2UoXCJVbmRlcmxpbmVcIixrLnVuZGVybGluZSxcInVuZGVybGluZVwiLGMuY29yZVN0eWxlc191bmRlcmxpbmUpO2UoXCJTdHJpa2VcIixrLnN0cmlrZSxcInN0cmlrZVwiLGMuY29yZVN0eWxlc19zdHJpa2UpO2UoXCJTdWJzY3JpcHRcIixrLnN1YnNjcmlwdCxcInN1YnNjcmlwdFwiLGMuY29yZVN0eWxlc19zdWJzY3JpcHQpO2UoXCJTdXBlcnNjcmlwdFwiLGsuc3VwZXJzY3JpcHQsXCJzdXBlcnNjcmlwdFwiLGMuY29yZVN0eWxlc19zdXBlcnNjcmlwdCk7YS5zZXRLZXlzdHJva2UoW1tDS0VESVRPUi5DVFJMKzY2LFwiYm9sZFwiXSxbQ0tFRElUT1IuQ1RSTCs3MyxcIml0YWxpY1wiXSxbQ0tFRElUT1IuQ1RSTCs4NSxcInVuZGVybGluZVwiXV0pfSxhZnRlckluaXQ6ZnVuY3Rpb24oYSl7aWYoYS5jb25maWcuY29yZVN0eWxlc190b2dnbGVTdWJTdXApe3ZhciBmPWEuZ2V0Q29tbWFuZChcInN1YnNjcmlwdFwiKSxcbmU9YS5nZXRDb21tYW5kKFwic3VwZXJzY3JpcHRcIik7aWYoZiYmZSlhLm9uKFwiYWZ0ZXJDb21tYW5kRXhlY1wiLGZ1bmN0aW9uKGIpe2I9Yi5kYXRhLm5hbWU7aWYoXCJzdWJzY3JpcHRcIj09PWJ8fFwic3VwZXJzY3JpcHRcIj09PWIpe3ZhciBjPVwic3Vic2NyaXB0XCI9PT1iP2U6ZjsoXCJzdWJzY3JpcHRcIj09PWI/ZjplKS5zdGF0ZT09PUNLRURJVE9SLlRSSVNUQVRFX09OJiZjLnN0YXRlPT09Q0tFRElUT1IuVFJJU1RBVEVfT04mJihjLmV4ZWMoYSksYS5maXJlKFwidXBkYXRlU25hcHNob3RcIikpfX0pfX19KSxDS0VESVRPUi5jb25maWcuY29yZVN0eWxlc19ib2xkPXtlbGVtZW50Olwic3Ryb25nXCIsb3ZlcnJpZGVzOlwiYlwifSxDS0VESVRPUi5jb25maWcuY29yZVN0eWxlc19pdGFsaWM9e2VsZW1lbnQ6XCJlbVwiLG92ZXJyaWRlczpcImlcIn0sQ0tFRElUT1IuY29uZmlnLmNvcmVTdHlsZXNfdW5kZXJsaW5lPXtlbGVtZW50OlwidVwifSxDS0VESVRPUi5jb25maWcuY29yZVN0eWxlc19zdHJpa2U9e2VsZW1lbnQ6XCJzXCIsXG5vdmVycmlkZXM6XCJzdHJpa2VcIn0sQ0tFRElUT1IuY29uZmlnLmNvcmVTdHlsZXNfc3Vic2NyaXB0PXtlbGVtZW50Olwic3ViXCJ9LENLRURJVE9SLmNvbmZpZy5jb3JlU3R5bGVzX3N1cGVyc2NyaXB0PXtlbGVtZW50Olwic3VwXCJ9LENLRURJVE9SLmNvbmZpZy5jb3JlU3R5bGVzX3RvZ2dsZVN1YlN1cD0hMSxmdW5jdGlvbigpe3ZhciBhPXtleGVjOmZ1bmN0aW9uKGEpe3ZhciBlPWEuZ2V0Q29tbWFuZChcImJsb2NrcXVvdGVcIikuc3RhdGUsYj1hLmdldFNlbGVjdGlvbigpLGM9YiYmYi5nZXRSYW5nZXMoKVswXTtpZihjKXt2YXIgaz1iLmNyZWF0ZUJvb2ttYXJrcygpO2lmKENLRURJVE9SLmVudi5pZSl7dmFyIGw9a1swXS5zdGFydE5vZGUsbT1rWzBdLmVuZE5vZGUsZDtpZihsJiZcImJsb2NrcXVvdGVcIj09bC5nZXRQYXJlbnQoKS5nZXROYW1lKCkpZm9yKGQ9bDtkPWQuZ2V0TmV4dCgpOylpZihkLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZC5pc0Jsb2NrQm91bmRhcnkoKSl7bC5tb3ZlKGQsXG4hMCk7YnJlYWt9aWYobSYmXCJibG9ja3F1b3RlXCI9PW0uZ2V0UGFyZW50KCkuZ2V0TmFtZSgpKWZvcihkPW07ZD1kLmdldFByZXZpb3VzKCk7KWlmKGQudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZkLmlzQmxvY2tCb3VuZGFyeSgpKXttLm1vdmUoZCk7YnJlYWt9fXZhciBoPWMuY3JlYXRlSXRlcmF0b3IoKTtoLmVubGFyZ2VCcj1hLmNvbmZpZy5lbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX0JSO2lmKGU9PUNLRURJVE9SLlRSSVNUQVRFX09GRil7Zm9yKGw9W107ZT1oLmdldE5leHRQYXJhZ3JhcGgoKTspbC5wdXNoKGUpOzE+bC5sZW5ndGgmJihlPWEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChhLmNvbmZpZy5lbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX1A/XCJwXCI6XCJkaXZcIiksbT1rLnNoaWZ0KCksYy5pbnNlcnROb2RlKGUpLGUuYXBwZW5kKG5ldyBDS0VESVRPUi5kb20udGV4dChcIu+7v1wiLGEuZG9jdW1lbnQpKSxjLm1vdmVUb0Jvb2ttYXJrKG0pLGMuc2VsZWN0Tm9kZUNvbnRlbnRzKGUpLFxuYy5jb2xsYXBzZSghMCksbT1jLmNyZWF0ZUJvb2ttYXJrKCksbC5wdXNoKGUpLGsudW5zaGlmdChtKSk7ZD1sWzBdLmdldFBhcmVudCgpO2M9W107Zm9yKG09MDttPGwubGVuZ3RoO20rKyllPWxbbV0sZD1kLmdldENvbW1vbkFuY2VzdG9yKGUuZ2V0UGFyZW50KCkpO2ZvcihlPXt0YWJsZToxLHRib2R5OjEsdHI6MSxvbDoxLHVsOjF9O2VbZC5nZXROYW1lKCldOylkPWQuZ2V0UGFyZW50KCk7Zm9yKG09bnVsbDswPGwubGVuZ3RoOyl7Zm9yKGU9bC5zaGlmdCgpOyFlLmdldFBhcmVudCgpLmVxdWFscyhkKTspZT1lLmdldFBhcmVudCgpO2UuZXF1YWxzKG0pfHxjLnB1c2goZSk7bT1lfWZvcig7MDxjLmxlbmd0aDspaWYoZT1jLnNoaWZ0KCksXCJibG9ja3F1b3RlXCI9PWUuZ2V0TmFtZSgpKXtmb3IobT1uZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQoYS5kb2N1bWVudCk7ZS5nZXRGaXJzdCgpOyltLmFwcGVuZChlLmdldEZpcnN0KCkucmVtb3ZlKCkpLGwucHVzaChtLmdldExhc3QoKSk7XG5tLnJlcGxhY2UoZSl9ZWxzZSBsLnB1c2goZSk7Yz1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJibG9ja3F1b3RlXCIpO2ZvcihjLmluc2VydEJlZm9yZShsWzBdKTswPGwubGVuZ3RoOyllPWwuc2hpZnQoKSxjLmFwcGVuZChlKX1lbHNlIGlmKGU9PUNLRURJVE9SLlRSSVNUQVRFX09OKXttPVtdO2ZvcihkPXt9O2U9aC5nZXROZXh0UGFyYWdyYXBoKCk7KXtmb3IobD1jPW51bGw7ZS5nZXRQYXJlbnQoKTspe2lmKFwiYmxvY2txdW90ZVwiPT1lLmdldFBhcmVudCgpLmdldE5hbWUoKSl7Yz1lLmdldFBhcmVudCgpO2w9ZTticmVha31lPWUuZ2V0UGFyZW50KCl9YyYmbCYmIWwuZ2V0Q3VzdG9tRGF0YShcImJsb2NrcXVvdGVfbW92ZW91dFwiKSYmKG0ucHVzaChsKSxDS0VESVRPUi5kb20uZWxlbWVudC5zZXRNYXJrZXIoZCxsLFwiYmxvY2txdW90ZV9tb3Zlb3V0XCIsITApKX1DS0VESVRPUi5kb20uZWxlbWVudC5jbGVhckFsbE1hcmtlcnMoZCk7ZT1bXTtsPVtdO2ZvcihkPXt9OzA8bS5sZW5ndGg7KWg9XG5tLnNoaWZ0KCksYz1oLmdldFBhcmVudCgpLGguZ2V0UHJldmlvdXMoKT9oLmdldE5leHQoKT8oaC5icmVha1BhcmVudChoLmdldFBhcmVudCgpKSxsLnB1c2goaC5nZXROZXh0KCkpKTpoLnJlbW92ZSgpLmluc2VydEFmdGVyKGMpOmgucmVtb3ZlKCkuaW5zZXJ0QmVmb3JlKGMpLGMuZ2V0Q3VzdG9tRGF0YShcImJsb2NrcXVvdGVfcHJvY2Vzc2VkXCIpfHwobC5wdXNoKGMpLENLRURJVE9SLmRvbS5lbGVtZW50LnNldE1hcmtlcihkLGMsXCJibG9ja3F1b3RlX3Byb2Nlc3NlZFwiLCEwKSksZS5wdXNoKGgpO0NLRURJVE9SLmRvbS5lbGVtZW50LmNsZWFyQWxsTWFya2VycyhkKTtmb3IobT1sLmxlbmd0aC0xOzA8PW07bS0tKXtjPWxbbV07YTp7ZD1jO2Zvcih2YXIgaD0wLGc9ZC5nZXRDaGlsZENvdW50KCksbj12b2lkIDA7aDxnJiYobj1kLmdldENoaWxkKGgpKTtoKyspaWYobi50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJm4uaXNCbG9ja0JvdW5kYXJ5KCkpe2Q9ITE7YnJlYWsgYX1kPVxuITB9ZCYmYy5yZW1vdmUoKX1pZihhLmNvbmZpZy5lbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX0JSKWZvcihjPSEwO2UubGVuZ3RoOylpZihoPWUuc2hpZnQoKSxcImRpdlwiPT1oLmdldE5hbWUoKSl7bT1uZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQoYS5kb2N1bWVudCk7IWN8fCFoLmdldFByZXZpb3VzKCl8fGguZ2V0UHJldmlvdXMoKS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmguZ2V0UHJldmlvdXMoKS5pc0Jsb2NrQm91bmRhcnkoKXx8bS5hcHBlbmQoYS5kb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYnJcIikpO2ZvcihjPWguZ2V0TmV4dCgpJiYhKGguZ2V0TmV4dCgpLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmaC5nZXROZXh0KCkuaXNCbG9ja0JvdW5kYXJ5KCkpO2guZ2V0Rmlyc3QoKTspaC5nZXRGaXJzdCgpLnJlbW92ZSgpLmFwcGVuZFRvKG0pO2MmJm0uYXBwZW5kKGEuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImJyXCIpKTttLnJlcGxhY2UoaCk7XG5jPSExfX1iLnNlbGVjdEJvb2ttYXJrcyhrKTthLmZvY3VzKCl9fSxyZWZyZXNoOmZ1bmN0aW9uKGEsZSl7dGhpcy5zZXRTdGF0ZShhLmVsZW1lbnRQYXRoKGUuYmxvY2t8fGUuYmxvY2tMaW1pdCkuY29udGFpbnMoXCJibG9ja3F1b3RlXCIsMSk/Q0tFRElUT1IuVFJJU1RBVEVfT046Q0tFRElUT1IuVFJJU1RBVEVfT0ZGKX0sY29udGV4dDpcImJsb2NrcXVvdGVcIixhbGxvd2VkQ29udGVudDpcImJsb2NrcXVvdGVcIixyZXF1aXJlZENvbnRlbnQ6XCJibG9ja3F1b3RlXCJ9O0NLRURJVE9SLnBsdWdpbnMuYWRkKFwiYmxvY2txdW90ZVwiLHtpbml0OmZ1bmN0aW9uKGYpe2YuYmxvY2tsZXNzfHwoZi5hZGRDb21tYW5kKFwiYmxvY2txdW90ZVwiLGEpLGYudWkuYWRkQnV0dG9uJiZmLnVpLmFkZEJ1dHRvbihcIkJsb2NrcXVvdGVcIix7aXNUb2dnbGU6ITAsbGFiZWw6Zi5sYW5nLmJsb2NrcXVvdGUudG9vbGJhcixjb21tYW5kOlwiYmxvY2txdW90ZVwiLHRvb2xiYXI6XCJibG9ja3MsMTBcIn0pKX19KX0oKSxcInVzZSBzdHJpY3RcIixcbmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGIse2VkaXRvcjphLGlkOlwiY2tlLVwiK0NLRURJVE9SLnRvb2xzLmdldFVuaXF1ZUlkKCksYXJlYTphLl8ubm90aWZpY2F0aW9uQXJlYX0pO2IudHlwZXx8KHRoaXMudHlwZT1cImluZm9cIik7dGhpcy5lbGVtZW50PXRoaXMuX2NyZWF0ZUVsZW1lbnQoKTthLnBsdWdpbnMuY2xpcGJvYXJkJiZDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5wcmV2ZW50RGVmYXVsdERyb3BPbkVsZW1lbnQodGhpcy5lbGVtZW50KX1mdW5jdGlvbiBmKGEpe3ZhciBiPXRoaXM7dGhpcy5lZGl0b3I9YTt0aGlzLm5vdGlmaWNhdGlvbnM9W107dGhpcy5lbGVtZW50PXRoaXMuX2NyZWF0ZUVsZW1lbnQoKTt0aGlzLl91aUJ1ZmZlcj1DS0VESVRPUi50b29scy5ldmVudHNCdWZmZXIoMTAsdGhpcy5fbGF5b3V0LHRoaXMpO3RoaXMuX2NoYW5nZUJ1ZmZlcj1DS0VESVRPUi50b29scy5ldmVudHNCdWZmZXIoNTAwLHRoaXMuX2xheW91dCxcbnRoaXMpO2Eub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtiLl9yZW1vdmVMaXN0ZW5lcnMoKTtiLmVsZW1lbnQucmVtb3ZlKCl9KX1DS0VESVRPUi5wbHVnaW5zLmFkZChcIm5vdGlmaWNhdGlvblwiLHtpbml0OmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGI9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KFwiZGl2XCIpO2Iuc2V0U3R5bGVzKHtwb3NpdGlvbjpcImZpeGVkXCIsXCJtYXJnaW4tbGVmdFwiOlwiLTk5OTlweFwifSk7Yi5zZXRBdHRyaWJ1dGVzKHtcImFyaWEtbGl2ZVwiOlwiYXNzZXJ0aXZlXCIsXCJhcmlhLWF0b21pY1wiOlwidHJ1ZVwifSk7Yi5zZXRUZXh0KGEpO0NLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKS5hcHBlbmQoYik7c2V0VGltZW91dChmdW5jdGlvbigpe2IucmVtb3ZlKCl9LDEwMCl9YS5fLm5vdGlmaWNhdGlvbkFyZWE9bmV3IGYoYSk7YS5zaG93Tm90aWZpY2F0aW9uPWZ1bmN0aW9uKGIsZixsKXt2YXIgbSxkO1wicHJvZ3Jlc3NcIj09Zj9tPWw6ZD1sO2I9bmV3IENLRURJVE9SLnBsdWdpbnMubm90aWZpY2F0aW9uKGEsXG57bWVzc2FnZTpiLHR5cGU6Zixwcm9ncmVzczptLGR1cmF0aW9uOmR9KTtiLnNob3coKTtyZXR1cm4gYn07YS5vbihcImtleVwiLGZ1bmN0aW9uKGMpe2lmKDI3PT1jLmRhdGEua2V5Q29kZSl7dmFyIGY9YS5fLm5vdGlmaWNhdGlvbkFyZWEubm90aWZpY2F0aW9ucztmLmxlbmd0aCYmKGIoYS5sYW5nLm5vdGlmaWNhdGlvbi5jbG9zZWQpLGZbZi5sZW5ndGgtMV0uaGlkZSgpLGMuY2FuY2VsKCkpfX0pfX0pO2EucHJvdG90eXBlPXtzaG93OmZ1bmN0aW9uKCl7ITEhPT10aGlzLmVkaXRvci5maXJlKFwibm90aWZpY2F0aW9uU2hvd1wiLHtub3RpZmljYXRpb246dGhpc30pJiYodGhpcy5hcmVhLmFkZCh0aGlzKSx0aGlzLl9oaWRlQWZ0ZXJUaW1lb3V0KCkpfSx1cGRhdGU6ZnVuY3Rpb24oYSl7dmFyIGI9ITA7ITE9PT10aGlzLmVkaXRvci5maXJlKFwibm90aWZpY2F0aW9uVXBkYXRlXCIse25vdGlmaWNhdGlvbjp0aGlzLG9wdGlvbnM6YX0pJiYoYj0hMSk7dmFyIGM9dGhpcy5lbGVtZW50LGY9Yy5maW5kT25lKFwiLmNrZV9ub3RpZmljYXRpb25fbWVzc2FnZVwiKSxcbmw9Yy5maW5kT25lKFwiLmNrZV9ub3RpZmljYXRpb25fcHJvZ3Jlc3NcIiksbT1hLnR5cGU7Yy5yZW1vdmVBdHRyaWJ1dGUoXCJyb2xlXCIpO2EucHJvZ3Jlc3MmJlwicHJvZ3Jlc3NcIiE9dGhpcy50eXBlJiYobT1cInByb2dyZXNzXCIpO20mJihjLnJlbW92ZUNsYXNzKHRoaXMuX2dldENsYXNzKCkpLGMucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiKSx0aGlzLnR5cGU9bSxjLmFkZENsYXNzKHRoaXMuX2dldENsYXNzKCkpLGMuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLHRoaXMudHlwZSksXCJwcm9ncmVzc1wiIT10aGlzLnR5cGV8fGw/XCJwcm9ncmVzc1wiIT10aGlzLnR5cGUmJmwmJmwucmVtb3ZlKCk6KGw9dGhpcy5fY3JlYXRlUHJvZ3Jlc3NFbGVtZW50KCksbC5pbnNlcnRCZWZvcmUoZikpKTt2b2lkIDAhPT1hLm1lc3NhZ2UmJih0aGlzLm1lc3NhZ2U9YS5tZXNzYWdlLGYuc2V0SHRtbCh0aGlzLm1lc3NhZ2UpKTt2b2lkIDAhPT1hLnByb2dyZXNzJiYodGhpcy5wcm9ncmVzcz1hLnByb2dyZXNzLFxubCYmbC5zZXRTdHlsZShcIndpZHRoXCIsdGhpcy5fZ2V0UGVyY2VudGFnZVByb2dyZXNzKCkpKTtiJiZhLmltcG9ydGFudCYmKGMuc2V0QXR0cmlidXRlKFwicm9sZVwiLFwiYWxlcnRcIiksdGhpcy5pc1Zpc2libGUoKXx8dGhpcy5hcmVhLmFkZCh0aGlzKSk7dGhpcy5kdXJhdGlvbj1hLmR1cmF0aW9uO3RoaXMuX2hpZGVBZnRlclRpbWVvdXQoKX0saGlkZTpmdW5jdGlvbigpeyExIT09dGhpcy5lZGl0b3IuZmlyZShcIm5vdGlmaWNhdGlvbkhpZGVcIix7bm90aWZpY2F0aW9uOnRoaXN9KSYmdGhpcy5hcmVhLnJlbW92ZSh0aGlzKX0saXNWaXNpYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIDA8PUNLRURJVE9SLnRvb2xzLmluZGV4T2YodGhpcy5hcmVhLm5vdGlmaWNhdGlvbnMsdGhpcyl9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcyxiLGMsZj10aGlzLmVkaXRvci5sYW5nLmNvbW1vbi5jbG9zZTtiPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImRpdlwiKTtiLmFkZENsYXNzKFwiY2tlX25vdGlmaWNhdGlvblwiKTtcbmIuYWRkQ2xhc3ModGhpcy5fZ2V0Q2xhc3MoKSk7Yi5zZXRBdHRyaWJ1dGVzKHtpZDp0aGlzLmlkLHJvbGU6XCJhbGVydFwiLFwiYXJpYS1sYWJlbFwiOnRoaXMudHlwZX0pO1wicHJvZ3Jlc3NcIj09dGhpcy50eXBlJiZiLmFwcGVuZCh0aGlzLl9jcmVhdGVQcm9ncmVzc0VsZW1lbnQoKSk7Yz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJwXCIpO2MuYWRkQ2xhc3MoXCJja2Vfbm90aWZpY2F0aW9uX21lc3NhZ2VcIik7Yy5zZXRIdG1sKHRoaXMubWVzc2FnZSk7Yi5hcHBlbmQoYyk7Yz1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NhIGNsYXNzXFx4M2RcImNrZV9ub3RpZmljYXRpb25fY2xvc2VcIiBocmVmXFx4M2RcImphdmFzY3JpcHQ6dm9pZCgwKVwiIHRpdGxlXFx4M2RcIicrZisnXCIgcm9sZVxceDNkXCJidXR0b25cIiB0YWJpbmRleFxceDNkXCItMVwiXFx4M2VcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX2xhYmVsXCJcXHgzZVhcXHgzYy9zcGFuXFx4M2VcXHgzYy9hXFx4M2UnKTtiLmFwcGVuZChjKTtjLm9uKFwiY2xpY2tcIixcbmZ1bmN0aW9uKCl7YS5lZGl0b3IuZm9jdXMoKTthLmhpZGUoKX0pO3JldHVybiBifSxfZ2V0Q2xhc3M6ZnVuY3Rpb24oKXtyZXR1cm5cInByb2dyZXNzXCI9PXRoaXMudHlwZT9cImNrZV9ub3RpZmljYXRpb25faW5mb1wiOlwiY2tlX25vdGlmaWNhdGlvbl9cIit0aGlzLnR5cGV9LF9jcmVhdGVQcm9ncmVzc0VsZW1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJzcGFuXCIpO2EuYWRkQ2xhc3MoXCJja2Vfbm90aWZpY2F0aW9uX3Byb2dyZXNzXCIpO2Euc2V0U3R5bGUoXCJ3aWR0aFwiLHRoaXMuX2dldFBlcmNlbnRhZ2VQcm9ncmVzcygpKTtyZXR1cm4gYX0sX2dldFBlcmNlbnRhZ2VQcm9ncmVzczpmdW5jdGlvbigpe3JldHVybiBNYXRoLnJvdW5kKDEwMCoodGhpcy5wcm9ncmVzc3x8MCkpK1wiJVwifSxfaGlkZUFmdGVyVGltZW91dDpmdW5jdGlvbigpe3ZhciBhPXRoaXMsYjt0aGlzLl9oaWRlVGltZW91dElkJiZjbGVhclRpbWVvdXQodGhpcy5faGlkZVRpbWVvdXRJZCk7XG5pZihcIm51bWJlclwiPT10eXBlb2YgdGhpcy5kdXJhdGlvbiliPXRoaXMuZHVyYXRpb247ZWxzZSBpZihcImluZm9cIj09dGhpcy50eXBlfHxcInN1Y2Nlc3NcIj09dGhpcy50eXBlKWI9XCJudW1iZXJcIj09dHlwZW9mIHRoaXMuZWRpdG9yLmNvbmZpZy5ub3RpZmljYXRpb25fZHVyYXRpb24/dGhpcy5lZGl0b3IuY29uZmlnLm5vdGlmaWNhdGlvbl9kdXJhdGlvbjo1RTM7YiYmKGEuX2hpZGVUaW1lb3V0SWQ9c2V0VGltZW91dChmdW5jdGlvbigpe2EuaGlkZSgpfSxiKSl9fTtmLnByb3RvdHlwZT17YWRkOmZ1bmN0aW9uKGEpe3RoaXMubm90aWZpY2F0aW9ucy5wdXNoKGEpO3RoaXMuZWxlbWVudC5hcHBlbmQoYS5lbGVtZW50KTsxPT10aGlzLmVsZW1lbnQuZ2V0Q2hpbGRDb3VudCgpJiYoQ0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLmFwcGVuZCh0aGlzLmVsZW1lbnQpLHRoaXMuX2F0dGFjaExpc3RlbmVycygpKTt0aGlzLl9sYXlvdXQoKX0scmVtb3ZlOmZ1bmN0aW9uKGEpe3ZhciBiPUNLRURJVE9SLnRvb2xzLmluZGV4T2YodGhpcy5ub3RpZmljYXRpb25zLFxuYSk7MD5ifHwodGhpcy5ub3RpZmljYXRpb25zLnNwbGljZShiLDEpLGEuZWxlbWVudC5yZW1vdmUoKSx0aGlzLmVsZW1lbnQuZ2V0Q2hpbGRDb3VudCgpfHwodGhpcy5fcmVtb3ZlTGlzdGVuZXJzKCksdGhpcy5lbGVtZW50LnJlbW92ZSgpKSl9LF9jcmVhdGVFbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5lZGl0b3IsYj1hLmNvbmZpZyxjPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImRpdlwiKTtjLmFkZENsYXNzKFwiY2tlX25vdGlmaWNhdGlvbnNfYXJlYVwiKTtjLnNldEF0dHJpYnV0ZShcImlkXCIsXCJja2Vfbm90aWZpY2F0aW9uc19hcmVhX1wiK2EubmFtZSk7Yy5zZXRTdHlsZShcInotaW5kZXhcIixiLmJhc2VGbG9hdFpJbmRleC0yKTtyZXR1cm4gY30sX2F0dGFjaExpc3RlbmVyczpmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLmRvY3VtZW50LmdldFdpbmRvdygpLGI9dGhpcy5lZGl0b3I7YS5vbihcInNjcm9sbFwiLHRoaXMuX3VpQnVmZmVyLmlucHV0KTthLm9uKFwicmVzaXplXCIsdGhpcy5fdWlCdWZmZXIuaW5wdXQpO1xuYi5vbihcImNoYW5nZVwiLHRoaXMuX2NoYW5nZUJ1ZmZlci5pbnB1dCk7Yi5vbihcImZsb2F0aW5nU3BhY2VMYXlvdXRcIix0aGlzLl9sYXlvdXQsdGhpcyxudWxsLDIwKTtiLm9uKFwiYmx1clwiLHRoaXMuX2xheW91dCx0aGlzLG51bGwsMjApfSxfcmVtb3ZlTGlzdGVuZXJzOmZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0V2luZG93KCksYj10aGlzLmVkaXRvcjthLnJlbW92ZUxpc3RlbmVyKFwic2Nyb2xsXCIsdGhpcy5fdWlCdWZmZXIuaW5wdXQpO2EucmVtb3ZlTGlzdGVuZXIoXCJyZXNpemVcIix0aGlzLl91aUJ1ZmZlci5pbnB1dCk7Yi5yZW1vdmVMaXN0ZW5lcihcImNoYW5nZVwiLHRoaXMuX2NoYW5nZUJ1ZmZlci5pbnB1dCk7Yi5yZW1vdmVMaXN0ZW5lcihcImZsb2F0aW5nU3BhY2VMYXlvdXRcIix0aGlzLl9sYXlvdXQpO2IucmVtb3ZlTGlzdGVuZXIoXCJibHVyXCIsdGhpcy5fbGF5b3V0KX0sX2xheW91dDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtiLnNldFN0eWxlKFwibGVmdFwiLFxueihxK2Yud2lkdGgtbi13KSl9dmFyIGI9dGhpcy5lbGVtZW50LGM9dGhpcy5lZGl0b3IsZj1jLnVpLmNvbnRlbnRzRWxlbWVudC5nZXRDbGllbnRSZWN0KCksbD1jLnVpLmNvbnRlbnRzRWxlbWVudC5nZXREb2N1bWVudFBvc2l0aW9uKCksbSxkLGg9Yi5nZXRDbGllbnRSZWN0KCksZyxuPXRoaXMuX25vdGlmaWNhdGlvbldpZHRoLHc9dGhpcy5fbm90aWZpY2F0aW9uTWFyZ2luO2c9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0V2luZG93KCk7dmFyIHg9Zy5nZXRTY3JvbGxQb3NpdGlvbigpLHI9Zy5nZXRWaWV3UGFuZVNpemUoKSxwPUNLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKSx1PXAuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLHo9Q0tFRElUT1IudG9vbHMuY3NzTGVuZ3RoO24mJnd8fChnPXRoaXMuZWxlbWVudC5nZXRDaGlsZCgwKSxuPXRoaXMuX25vdGlmaWNhdGlvbldpZHRoPWcuZ2V0Q2xpZW50UmVjdCgpLndpZHRoLHc9dGhpcy5fbm90aWZpY2F0aW9uTWFyZ2luPXBhcnNlSW50KGcuZ2V0Q29tcHV0ZWRTdHlsZShcIm1hcmdpbi1sZWZ0XCIpLFxuMTApK3BhcnNlSW50KGcuZ2V0Q29tcHV0ZWRTdHlsZShcIm1hcmdpbi1yaWdodFwiKSwxMCkpO2MudG9vbGJhciYmKG09Yy51aS5zcGFjZShjLmNvbmZpZy50b29sYmFyTG9jYXRpb24pLGQ9bS5nZXRDbGllbnRSZWN0KCkpO20mJm0uaXNWaXNpYmxlKCkmJmQuYm90dG9tPmYudG9wJiZkLmJvdHRvbTxmLmJvdHRvbS1oLmhlaWdodD9iLnNldFN0eWxlcyh7cG9zaXRpb246XCJmaXhlZFwiLHRvcDp6KGQuYm90dG9tKX0pOjA8Zi50b3A/Yi5zZXRTdHlsZXMoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6eihsLnkpfSk6bC55K2YuaGVpZ2h0LWguaGVpZ2h0PngueT9iLnNldFN0eWxlcyh7cG9zaXRpb246XCJmaXhlZFwiLHRvcDowfSk6Yi5zZXRTdHlsZXMoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6eihsLnkrZi5oZWlnaHQtaC5oZWlnaHQpfSk7dmFyIHE9XCJmaXhlZFwiPT1iLmdldFN0eWxlKFwicG9zaXRpb25cIik/Zi5sZWZ0Olwic3RhdGljXCIhPXAuZ2V0Q29tcHV0ZWRTdHlsZShcInBvc2l0aW9uXCIpP1xubC54LXUueDpsLng7Zi53aWR0aDxuK3c/bC54K24rdz54Lngrci53aWR0aD9hKCk6Yi5zZXRTdHlsZShcImxlZnRcIix6KHEpKTpsLngrbit3PngueCtyLndpZHRoP2Iuc2V0U3R5bGUoXCJsZWZ0XCIseihxKSk6bC54K2Yud2lkdGgvMituLzIrdz54Lngrci53aWR0aD9iLnNldFN0eWxlKFwibGVmdFwiLHoocS1sLngreC54K3Iud2lkdGgtbi13KSk6MD5mLmxlZnQrZi53aWR0aC1uLXc/YSgpOjA+Zi5sZWZ0K2Yud2lkdGgvMi1uLzI/Yi5zZXRTdHlsZShcImxlZnRcIix6KHEtbC54K3gueCkpOmIuc2V0U3R5bGUoXCJsZWZ0XCIseihxK2Yud2lkdGgvMi1uLzItdy8yKSl9fTtDS0VESVRPUi5wbHVnaW5zLm5vdGlmaWNhdGlvbj1hfSgpLGZ1bmN0aW9uKCl7dmFyIGE9J1xceDNjYSBpZFxceDNkXCJ7aWR9XCIgY2xhc3NcXHgzZFwiY2tlX2J1dHRvbiBja2VfYnV0dG9uX197bmFtZX0gY2tlX2J1dHRvbl97c3RhdGV9IHtjbHN9XCInKyhDS0VESVRPUi5lbnYuZ2Vja28mJiFDS0VESVRPUi5lbnYuaGM/XCJcIjpcIiBocmVmXFx4M2RcXFwiamF2YXNjcmlwdDp2b2lkKCd7dGl0bGVKc30nKVxcXCJcIikrXG4nIHRpdGxlXFx4M2RcInt0aXRsZX1cIiB0YWJpbmRleFxceDNkXCItMVwiIGhpZGVmb2N1c1xceDNkXCJ0cnVlXCIgcm9sZVxceDNkXCJidXR0b25cIiBhcmlhLWxhYmVsbGVkYnlcXHgzZFwie2lkfV9sYWJlbFwiIGFyaWEtZGVzY3JpYmVkYnlcXHgzZFwie2lkfV9kZXNjcmlwdGlvblwiIGFyaWEtaGFzcG9wdXBcXHgzZFwie2hhc0Fycm93fVwiIGFyaWEtZGlzYWJsZWRcXHgzZFwie2FyaWFEaXNhYmxlZH1cIntoYXNBcnJvd0FyaWFIdG1sfXt0b2dnbGVBcmlhSHRtbH0nO0NLRURJVE9SLmVudi5nZWNrbyYmQ0tFRElUT1IuZW52Lm1hYyYmKGErPScgb25rZXlwcmVzc1xceDNkXCJyZXR1cm4gZmFsc2U7XCInKTtDS0VESVRPUi5lbnYuZ2Vja28mJihhKz0nIG9uYmx1clxceDNkXCJ0aGlzLnN0eWxlLmNzc1RleHQgXFx4M2QgdGhpcy5zdHlsZS5jc3NUZXh0O1wiJyk7dmFyIGY9XCJcIjtDS0VESVRPUi5lbnYuaWUmJihmPSdyZXR1cm4gZmFsc2U7XCIgb25tb3VzZXVwXFx4M2RcIkNLRURJVE9SLnRvb2xzLmdldE1vdXNlQnV0dG9uKGV2ZW50KVxceDNkXFx4M2RDS0VESVRPUi5NT1VTRV9CVVRUT05fTEVGVFxceDI2XFx4MjYnKTtcbnZhciBhPWErKCcgb25rZXlkb3duXFx4M2RcInJldHVybiBDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oe2tleWRvd25Gbn0sZXZlbnQpO1wiIG9uZm9jdXNcXHgzZFwicmV0dXJuIENLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbih7Zm9jdXNGbn0sZXZlbnQpO1wiIG9uY2xpY2tcXHgzZFwiJytmKydDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oe2NsaWNrRm59LHRoaXMpO3JldHVybiBmYWxzZTtcIlxceDNlXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9idXR0b25faWNvbiBja2VfYnV0dG9uX197aWNvbk5hbWV9X2ljb25cIiBzdHlsZVxceDNkXCJ7c3R5bGV9XCInKSsnXFx4M2VcXHgyNm5ic3A7XFx4M2Mvc3BhblxceDNlXFx4M2NzcGFuIGlkXFx4M2RcIntpZH1fbGFiZWxcIiBjbGFzc1xceDNkXCJja2VfYnV0dG9uX2xhYmVsIGNrZV9idXR0b25fX3tuYW1lfV9sYWJlbFwiIGFyaWEtaGlkZGVuXFx4M2RcImZhbHNlXCJcXHgzZXtsYWJlbH1cXHgzYy9zcGFuXFx4M2VcXHgzY3NwYW4gaWRcXHgzZFwie2lkfV9kZXNjcmlwdGlvblwiIGNsYXNzXFx4M2RcImNrZV9idXR0b25fbGFiZWxcIiBhcmlhLWhpZGRlblxceDNkXCJmYWxzZVwiXFx4M2V7YXJpYVNob3J0Y3V0U3BhY2V9e2FyaWFTaG9ydGN1dH1cXHgzYy9zcGFuXFx4M2V7YXJyb3dIdG1sfVxceDNjL2FcXHgzZScsXG5lPUNLRURJVE9SLmFkZFRlbXBsYXRlKFwiYnV0dG9uQXJyb3dcIiwnXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9idXR0b25fYXJyb3dcIlxceDNlJysoQ0tFRElUT1IuZW52LmhjP1wiXFx4MjYjOTY2MDtcIjpcIlwiKStcIlxceDNjL3NwYW5cXHgzZVwiKSxiPUNLRURJVE9SLmFkZFRlbXBsYXRlKFwiYnV0dG9uXCIsYSk7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJidXR0b25cIix7YmVmb3JlSW5pdDpmdW5jdGlvbihhKXthLnVpLmFkZEhhbmRsZXIoQ0tFRElUT1IuVUlfQlVUVE9OLENLRURJVE9SLnVpLmJ1dHRvbi5oYW5kbGVyKX19KTtDS0VESVRPUi5VSV9CVVRUT049XCJidXR0b25cIjtDS0VESVRPUi51aS5idXR0b249ZnVuY3Rpb24oYSl7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsYSx7aXNUb2dnbGU6YS5pc1RvZ2dsZXx8ITEsdGl0bGU6YS5sYWJlbCxjbGljazphLmNsaWNrfHxmdW5jdGlvbihiKXtiLmV4ZWNDb21tYW5kKGEuY29tbWFuZCl9fSk7dGhpcy5fPXt9fTtDS0VESVRPUi51aS5idXR0b24uaGFuZGxlcj1cbntjcmVhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDS0VESVRPUi51aS5idXR0b24oYSl9fTtDS0VESVRPUi51aS5idXR0b24ucHJvdG90eXBlPXtyZW5kZXI6ZnVuY3Rpb24oYSxmKXtmdW5jdGlvbiBsKCl7dmFyIGI9YS5tb2RlO2ImJihiPXRoaXMubW9kZXNbYl0/dm9pZCAwIT09bVtiXT9tW2JdOkNLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCxiPWEucmVhZE9ubHkmJiF0aGlzLnJlYWRPbmx5P0NLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEOmIsdGhpcy5zZXRTdGF0ZShiKSx0aGlzLnJlZnJlc2gmJnRoaXMucmVmcmVzaCgpKX12YXIgbT1udWxsLGQ9Q0tFRElUT1IuZW52LGg9dGhpcy5fLmlkPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpLGc9XCJcIixuPXRoaXMuY29tbWFuZCx3LHgscjt0aGlzLl8uZWRpdG9yPWE7dmFyIHA9e2lkOmgsYnV0dG9uOnRoaXMsZWRpdG9yOmEsZm9jdXM6ZnVuY3Rpb24oKXtDS0VESVRPUi5kb2N1bWVudC5nZXRCeUlkKGgpLmZvY3VzKCl9LFxuZXhlY3V0ZTpmdW5jdGlvbigpe3RoaXMuYnV0dG9uLmNsaWNrKGEpfSxhdHRhY2g6ZnVuY3Rpb24oYSl7dGhpcy5idXR0b24uYXR0YWNoKGEpfX0sdT1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbihhKXtpZihwLm9ua2V5KXJldHVybiBhPW5ldyBDS0VESVRPUi5kb20uZXZlbnQoYSksITEhPT1wLm9ua2V5KHAsYS5nZXRLZXlzdHJva2UoKSl9KSx6PUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKGZ1bmN0aW9uKGEpe3ZhciBiO3Aub25mb2N1cyYmKGI9ITEhPT1wLm9uZm9jdXMocCxuZXcgQ0tFRElUT1IuZG9tLmV2ZW50KGEpKSk7cmV0dXJuIGJ9KSxxPTA7cC5jbGlja0ZuPXc9Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oKXtxJiYoYS51bmxvY2tTZWxlY3Rpb24oMSkscT0wKTtwLmV4ZWN1dGUoKTtkLmlPUyYmYS5mb2N1cygpfSk7dGhpcy5tb2Rlcz8obT17fSxhLm9uKFwiYmVmb3JlTW9kZVVubG9hZFwiLGZ1bmN0aW9uKCl7YS5tb2RlJiZ0aGlzLl8uc3RhdGUhPVxuQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQmJihtW2EubW9kZV09dGhpcy5fLnN0YXRlKX0sdGhpcyksYS5vbihcImFjdGl2ZUZpbHRlckNoYW5nZVwiLGwsdGhpcyksYS5vbihcIm1vZGVcIixsLHRoaXMpLCF0aGlzLnJlYWRPbmx5JiZhLm9uKFwicmVhZE9ubHlcIixsLHRoaXMpKTpuJiYobj1hLmdldENvbW1hbmQobikpJiYobi5vbihcInN0YXRlXCIsZnVuY3Rpb24oKXt0aGlzLnNldFN0YXRlKG4uc3RhdGUpfSx0aGlzKSxnKz1uLnN0YXRlPT1DS0VESVRPUi5UUklTVEFURV9PTj9cIm9uXCI6bi5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQ/XCJkaXNhYmxlZFwiOlwib2ZmXCIpO3ZhciBBO2lmKHRoaXMuZGlyZWN0aW9uYWwpYS5vbihcImNvbnRlbnREaXJDaGFuZ2VkXCIsZnVuY3Rpb24oYil7dmFyIGQ9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLl8uaWQpLGc9ZC5nZXRGaXJzdCgpO2I9Yi5kYXRhO2IhPWEubGFuZy5kaXI/ZC5hZGRDbGFzcyhcImNrZV9cIitiKTpkLnJlbW92ZUNsYXNzKFwiY2tlX2x0clwiKS5yZW1vdmVDbGFzcyhcImNrZV9ydGxcIik7XG5nLnNldEF0dHJpYnV0ZShcInN0eWxlXCIsQ0tFRElUT1Iuc2tpbi5nZXRJY29uU3R5bGUoQSxcInJ0bFwiPT1iLHRoaXMuaWNvbix0aGlzLmljb25PZmZzZXQpKX0sdGhpcyk7bj8oeD1hLmdldENvbW1hbmRLZXlzdHJva2UobikpJiYocj1DS0VESVRPUi50b29scy5rZXlzdHJva2VUb1N0cmluZyhhLmxhbmcuY29tbW9uLmtleWJvYXJkLHgpKTpnKz1cIm9mZlwiO3g9dGhpcy5uYW1lfHx0aGlzLmNvbW1hbmQ7dmFyIHk9bnVsbCx0PXRoaXMuaWNvbjtBPXg7dGhpcy5pY29uJiYhL1xcLi8udGVzdCh0aGlzLmljb24pPyhBPXRoaXMuaWNvbix0PW51bGwpOih0aGlzLmljb24mJih5PXRoaXMuaWNvbiksQ0tFRElUT1IuZW52LmhpZHBpJiZ0aGlzLmljb25IaURwaSYmKHk9dGhpcy5pY29uSGlEcGkpKTt5PyhDS0VESVRPUi5za2luLmFkZEljb24oeSx5KSx0PW51bGwpOnk9QTtnPXtpZDpoLG5hbWU6eCxpY29uTmFtZTpBLGxhYmVsOnRoaXMubGFiZWwsY2xzOih0aGlzLmhhc0Fycm93P1wiY2tlX2J1dHRvbl9leHBhbmRhYmxlIFwiOlxuXCJcIikrKHRoaXMuY2xhc3NOYW1lfHxcIlwiKSxzdGF0ZTpnLGFyaWFEaXNhYmxlZDpcImRpc2FibGVkXCI9PWc/XCJ0cnVlXCI6XCJmYWxzZVwiLHRpdGxlOnRoaXMudGl0bGUrKHI/XCIgKFwiK3IuZGlzcGxheStcIilcIjpcIlwiKSxhcmlhU2hvcnRjdXRTcGFjZTpyP1wiXFx4MjZuYnNwO1wiOlwiXCIsYXJpYVNob3J0Y3V0OnI/YS5sYW5nLmNvbW1vbi5rZXlib2FyZFNob3J0Y3V0K1wiIFwiK3IuYXJpYTpcIlwiLHRpdGxlSnM6ZC5nZWNrbyYmIWQuaGM/XCJcIjoodGhpcy50aXRsZXx8XCJcIikucmVwbGFjZShcIidcIixcIlwiKSxoYXNBcnJvdzpcInN0cmluZ1wiPT09dHlwZW9mIHRoaXMuaGFzQXJyb3cmJnRoaXMuaGFzQXJyb3d8fCh0aGlzLmhhc0Fycm93P1widHJ1ZVwiOlwiZmFsc2VcIiksa2V5ZG93bkZuOnUsZm9jdXNGbjp6LGNsaWNrRm46dyxzdHlsZTpDS0VESVRPUi5za2luLmdldEljb25TdHlsZSh5LFwicnRsXCI9PWEubGFuZy5kaXIsdCx0aGlzLmljb25PZmZzZXQpLGFycm93SHRtbDp0aGlzLmhhc0Fycm93P2Uub3V0cHV0KCk6XCJcIixcbmhhc0Fycm93QXJpYUh0bWw6dGhpcy5oYXNBcnJvdz8nIGFyaWEtZXhwYW5kZWRcXHgzZFwiZmFsc2VcIic6XCJcIix0b2dnbGVBcmlhSHRtbDp0aGlzLmlzVG9nZ2xlPydhcmlhLXByZXNzZWRcXHgzZFwiZmFsc2VcIic6XCJcIn07Yi5vdXRwdXQoZyxmKTtpZih0aGlzLm9uUmVuZGVyKXRoaXMub25SZW5kZXIoKTtyZXR1cm4gcH0sc2V0U3RhdGU6ZnVuY3Rpb24oYSl7aWYodGhpcy5fLnN0YXRlPT1hKXJldHVybiExO3RoaXMuXy5zdGF0ZT1hO3ZhciBiPUNLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQodGhpcy5fLmlkKTtyZXR1cm4gYj8oYi5zZXRTdGF0ZShhLFwiY2tlX2J1dHRvblwiKSxiLnNldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIixhPT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCksdGhpcy5pc1RvZ2dsZSYmIXRoaXMuaGFzQXJyb3cmJmIuc2V0QXR0cmlidXRlKFwiYXJpYS1wcmVzc2VkXCIsYT09PUNLRURJVE9SLlRSSVNUQVRFX09OKSwhMCk6ITF9LGdldFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5zdGF0ZX0sXG50b0ZlYXR1cmU6ZnVuY3Rpb24oYSl7aWYodGhpcy5fLmZlYXR1cmUpcmV0dXJuIHRoaXMuXy5mZWF0dXJlO3ZhciBiPXRoaXM7dGhpcy5hbGxvd2VkQ29udGVudHx8dGhpcy5yZXF1aXJlZENvbnRlbnR8fCF0aGlzLmNvbW1hbmR8fChiPWEuZ2V0Q29tbWFuZCh0aGlzLmNvbW1hbmQpfHxiKTtyZXR1cm4gdGhpcy5fLmZlYXR1cmU9Yn19O0NLRURJVE9SLnVpLnByb3RvdHlwZS5hZGRCdXR0b249ZnVuY3Rpb24oYSxiKXt0aGlzLmFkZChhLENLRURJVE9SLlVJX0JVVFRPTixiKX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2Z1bmN0aW9uIGIoKXtmb3IodmFyIGQ9ZSgpLGc9Q0tFRElUT1IudG9vbHMuY2xvbmUoYS5jb25maWcudG9vbGJhckdyb3Vwcyl8fGYoYSksaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgaz1nW2hdO2lmKFwiL1wiIT1rKXtcInN0cmluZ1wiPT10eXBlb2YgayYmKGs9Z1toXT17bmFtZTprfSk7dmFyIHAsdT1rLmdyb3VwcztpZih1KWZvcih2YXIgej0wO3o8dS5sZW5ndGg7eisrKXA9XG51W3pdLChwPWRbcF0pJiZtKGsscCk7KHA9ZFtrLm5hbWVdKSYmbShrLHApfX1yZXR1cm4gZ31mdW5jdGlvbiBlKCl7dmFyIGI9e30sZCxnLGY7Zm9yKGQgaW4gYS51aS5pdGVtcylnPWEudWkuaXRlbXNbZF0sZj1nLnRvb2xiYXJ8fFwib3RoZXJzXCIsZj1mLnNwbGl0KFwiLFwiKSxnPWZbMF0sZj1wYXJzZUludChmWzFdfHwtMSwxMCksYltnXXx8KGJbZ109W10pLGJbZ10ucHVzaCh7bmFtZTpkLG9yZGVyOmZ9KTtmb3IoZyBpbiBiKWJbZ109YltnXS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEub3JkZXI9PWIub3JkZXI/MDowPmIub3JkZXI/LTE6MD5hLm9yZGVyPzE6YS5vcmRlcjxiLm9yZGVyPy0xOjF9KTtyZXR1cm4gYn1mdW5jdGlvbiBtKGIsZCl7aWYoZC5sZW5ndGgpe2IuaXRlbXM/Yi5pdGVtcy5wdXNoKGEudWkuY3JlYXRlKFwiLVwiKSk6Yi5pdGVtcz1bXTtmb3IodmFyIGc7Zz1kLnNoaWZ0KCk7KWc9XCJzdHJpbmdcIj09dHlwZW9mIGc/ZzpnLm5hbWUsaCYmLTEhPUNLRURJVE9SLnRvb2xzLmluZGV4T2YoaCxcbmcpfHwoZz1hLnVpLmNyZWF0ZShnKSkmJmEuYWRkRmVhdHVyZShnKSYmYi5pdGVtcy5wdXNoKGcpfX1mdW5jdGlvbiBkKGEpe3ZhciBiPVtdLGQsYyxnO2ZvcihkPTA7ZDxhLmxlbmd0aDsrK2QpYz1hW2RdLGc9e30sXCIvXCI9PWM/Yi5wdXNoKGMpOkNLRURJVE9SLnRvb2xzLmlzQXJyYXkoYyk/KG0oZyxDS0VESVRPUi50b29scy5jbG9uZShjKSksYi5wdXNoKGcpKTpjLml0ZW1zJiYobShnLENLRURJVE9SLnRvb2xzLmNsb25lKGMuaXRlbXMpKSxnLm5hbWU9Yy5uYW1lLGIucHVzaChnKSk7cmV0dXJuIGJ9dmFyIGg9ZnVuY3Rpb24oYSl7cmV0dXJuIGEmJlwic3RyaW5nXCI9PT10eXBlb2YgYT9hLnNwbGl0KFwiLFwiKTphfShhLmNvbmZpZy5yZW1vdmVCdXR0b25zKSxnPWEuY29uZmlnLnRvb2xiYXI7XCJzdHJpbmdcIj09dHlwZW9mIGcmJihnPWEuY29uZmlnW1widG9vbGJhcl9cIitnXSk7cmV0dXJuIGEudG9vbGJhcj1nP2QoZyk6YigpfWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEuXy50b29sYmFyR3JvdXBzfHxcbihhLl8udG9vbGJhckdyb3Vwcz1be25hbWU6XCJkb2N1bWVudFwiLGdyb3VwczpbXCJtb2RlXCIsXCJkb2N1bWVudFwiLFwiZG9jdG9vbHNcIl19LHtuYW1lOlwiY2xpcGJvYXJkXCIsZ3JvdXBzOltcImNsaXBib2FyZFwiLFwidW5kb1wiXX0se25hbWU6XCJlZGl0aW5nXCIsZ3JvdXBzOltcImZpbmRcIixcInNlbGVjdGlvblwiLFwic3BlbGxjaGVja2VyXCJdfSx7bmFtZTpcImZvcm1zXCJ9LFwiL1wiLHtuYW1lOlwiYmFzaWNzdHlsZXNcIixncm91cHM6W1wiYmFzaWNzdHlsZXNcIixcImNsZWFudXBcIl19LHtuYW1lOlwicGFyYWdyYXBoXCIsZ3JvdXBzOltcImxpc3RcIixcImluZGVudFwiLFwiYmxvY2tzXCIsXCJhbGlnblwiLFwiYmlkaVwiXX0se25hbWU6XCJsaW5rc1wifSx7bmFtZTpcImluc2VydFwifSxcIi9cIix7bmFtZTpcInN0eWxlc1wifSx7bmFtZTpcImNvbG9yc1wifSx7bmFtZTpcInRvb2xzXCJ9LHtuYW1lOlwib3RoZXJzXCJ9LHtuYW1lOlwiYWJvdXRcIn1dKX12YXIgZT1mdW5jdGlvbigpe3RoaXMudG9vbGJhcnM9W119O2UucHJvdG90eXBlLmZvY3VzPWZ1bmN0aW9uKCl7Zm9yKHZhciBhPVxuMCxiO2I9dGhpcy50b29sYmFyc1thKytdOylmb3IodmFyIGU9MCxmO2Y9Yi5pdGVtc1tlKytdOylpZihmLmZvY3VzKXtmLmZvY3VzKCk7cmV0dXJufX07dmFyIGI9e21vZGVzOnt3eXNpd3lnOjEsc291cmNlOjF9LHJlYWRPbmx5OjEsZXhlYzpmdW5jdGlvbihhKXthLnRvb2xib3gmJihDS0VESVRPUi5lbnYuaWV8fENLRURJVE9SLmVudi5haXI/c2V0VGltZW91dChmdW5jdGlvbigpe2EudG9vbGJveC5mb2N1cygpfSwxMDApOmEudG9vbGJveC5mb2N1cygpKX19O0NLRURJVE9SLnBsdWdpbnMuYWRkKFwidG9vbGJhclwiLHtyZXF1aXJlczpcImJ1dHRvblwiLGluaXQ6ZnVuY3Rpb24oYyl7dmFyIGYsbD1mdW5jdGlvbihhLGIpe3ZhciBlLGc9XCJydGxcIj09Yy5sYW5nLmRpcixuPWMuY29uZmlnLnRvb2xiYXJHcm91cEN5Y2xpbmcsdz1nPzM3OjM5LGc9Zz8zOTozNyxuPXZvaWQgMD09PW58fG47c3dpdGNoKGIpe2Nhc2UgOTpjYXNlIENLRURJVE9SLlNISUZUKzk6Zm9yKDshZXx8IWUuaXRlbXMubGVuZ3RoOylpZihlPVxuOT09Yj8oZT9lLm5leHQ6YS50b29sYmFyLm5leHQpfHxjLnRvb2xib3gudG9vbGJhcnNbMF06KGU/ZS5wcmV2aW91czphLnRvb2xiYXIucHJldmlvdXMpfHxjLnRvb2xib3gudG9vbGJhcnNbYy50b29sYm94LnRvb2xiYXJzLmxlbmd0aC0xXSxlLml0ZW1zLmxlbmd0aClmb3IoYT1lLml0ZW1zW2Y/ZS5pdGVtcy5sZW5ndGgtMTowXTthJiYhYS5mb2N1czspKGE9Zj9hLnByZXZpb3VzOmEubmV4dCl8fChlPTApO2EmJmEuZm9jdXMoKTtyZXR1cm4hMTtjYXNlIHc6ZT1hO2RvIGU9ZS5uZXh0LCFlJiZuJiYoZT1hLnRvb2xiYXIuaXRlbXNbMF0pO3doaWxlKGUmJiFlLmZvY3VzKTtlP2UuZm9jdXMoKTpsKGEsOSk7cmV0dXJuITE7Y2FzZSA0MDpyZXR1cm4gYS5idXR0b24mJmEuYnV0dG9uLmhhc0Fycm93P2EuZXhlY3V0ZSgpOmwoYSw0MD09Yj93OmcpLCExO2Nhc2UgZzpjYXNlIDM4OmU9YTtkbyBlPWUucHJldmlvdXMsIWUmJm4mJihlPWEudG9vbGJhci5pdGVtc1thLnRvb2xiYXIuaXRlbXMubGVuZ3RoLVxuMV0pO3doaWxlKGUmJiFlLmZvY3VzKTtlP2UuZm9jdXMoKTooZj0xLGwoYSxDS0VESVRPUi5TSElGVCs5KSxmPTApO3JldHVybiExO2Nhc2UgMjc6cmV0dXJuIGMuZm9jdXMoKSwhMTtjYXNlIDEzOmNhc2UgMzI6cmV0dXJuIGEuZXhlY3V0ZSgpLCExO2Nhc2UgQ0tFRElUT1IuQUxUKzEyMjpyZXR1cm4gYy5leGVjQ29tbWFuZChcImVsZW1lbnRzUGF0aEZvY3VzXCIpLCExfXJldHVybiEwfTtjLm9uKFwidWlTcGFjZVwiLGZ1bmN0aW9uKGIpe2lmKGIuZGF0YS5zcGFjZT09Yy5jb25maWcudG9vbGJhckxvY2F0aW9uKXtiLnJlbW92ZUxpc3RlbmVyKCk7Yy50b29sYm94PW5ldyBlO3ZhciBkPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpLGY9WydcXHgzY3NwYW4gaWRcXHgzZFwiJyxkLCdcIiBjbGFzc1xceDNkXCJja2Vfdm9pY2VfbGFiZWxcIlxceDNlJyxjLmxhbmcudG9vbGJhci50b29sYmFycyxcIlxceDNjL3NwYW5cXHgzZVwiLCdcXHgzY3NwYW4gaWRcXHgzZFwiJytjLnVpLnNwYWNlSWQoXCJ0b29sYm94XCIpKydcIiBjbGFzc1xceDNkXCJja2VfdG9vbGJveFwiIHJvbGVcXHgzZFwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnlcXHgzZFwiJyxcbmQsJ1wiIG9ubW91c2Vkb3duXFx4M2RcInJldHVybiBmYWxzZTtcIlxceDNlJ10sZD0hMSE9PWMuY29uZmlnLnRvb2xiYXJTdGFydHVwRXhwYW5kZWQsZyxrO2MuY29uZmlnLnRvb2xiYXJDYW5Db2xsYXBzZSYmYy5lbGVtZW50TW9kZSE9Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORSYmZi5wdXNoKCdcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX3Rvb2xib3hfbWFpblwiJysoZD9cIlxceDNlXCI6JyBzdHlsZVxceDNkXCJkaXNwbGF5Om5vbmVcIlxceDNlJykpO2Zvcih2YXIgdz1jLnRvb2xib3gudG9vbGJhcnMseD1hKGMpLHI9eC5sZW5ndGgscD0wO3A8cjtwKyspe3ZhciB1LHo9MCxxLEE9eFtwXSx5PVwiL1wiIT09QSYmKFwiL1wiPT09eFtwKzFdfHxwPT1yLTEpLHQ7aWYoQSlpZihnJiYoZi5wdXNoKFwiXFx4M2Mvc3BhblxceDNlXCIpLGs9Zz0wKSxcIi9cIj09PUEpZi5wdXNoKCdcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX3Rvb2xiYXJfYnJlYWtcIlxceDNlXFx4M2Mvc3BhblxceDNlJyk7ZWxzZXt0PUEuaXRlbXN8fEE7Zm9yKHZhciB2PVxuMDt2PHQubGVuZ3RoO3YrKyl7dmFyIEI9dFt2XSxEO2lmKEIpe3ZhciBDPWZ1bmN0aW9uKGEpe2E9YS5yZW5kZXIoYyxmKTtGPXouaXRlbXMucHVzaChhKS0xOzA8RiYmKGEucHJldmlvdXM9ei5pdGVtc1tGLTFdLGEucHJldmlvdXMubmV4dD1hKTthLnRvb2xiYXI9ejthLm9ua2V5PWx9O2lmKEIudHlwZT09Q0tFRElUT1IuVUlfU0VQQVJBVE9SKWs9ZyYmQjtlbHNle0Q9ITEhPT1CLmNhbkdyb3VwO2lmKCF6KXt1PUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpO3o9e2lkOnUsaXRlbXM6W119O3E9QS5uYW1lJiYoYy5sYW5nLnRvb2xiYXIudG9vbGJhckdyb3Vwc1tBLm5hbWVdfHxBLm5hbWUpO2YucHVzaCgnXFx4M2NzcGFuIGlkXFx4M2RcIicsdSwnXCIgY2xhc3NcXHgzZFwiY2tlX3Rvb2xiYXInKyh5PycgY2tlX3Rvb2xiYXJfbGFzdFwiJzonXCInKSxxPycgYXJpYS1sYWJlbGxlZGJ5XFx4M2RcIicrdSsnX2xhYmVsXCInOlwiXCIsJyByb2xlXFx4M2RcInRvb2xiYXJcIlxceDNlJyk7cSYmZi5wdXNoKCdcXHgzY3NwYW4gaWRcXHgzZFwiJyxcbnUsJ19sYWJlbFwiIGNsYXNzXFx4M2RcImNrZV92b2ljZV9sYWJlbFwiXFx4M2UnLHEsXCJcXHgzYy9zcGFuXFx4M2VcIik7Zi5wdXNoKCdcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX3Rvb2xiYXJfc3RhcnRcIlxceDNlXFx4M2Mvc3BhblxceDNlJyk7dmFyIEY9dy5wdXNoKHopLTE7MDxGJiYoei5wcmV2aW91cz13W0YtMV0sei5wcmV2aW91cy5uZXh0PXopfUQ/Z3x8KGYucHVzaCgnXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV90b29sZ3JvdXBcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiXFx4M2UnKSxnPTEpOmcmJihmLnB1c2goXCJcXHgzYy9zcGFuXFx4M2VcIiksZz0wKTtrJiYoQyhrKSxrPTApO0MoQil9fX1nJiYoZi5wdXNoKFwiXFx4M2Mvc3BhblxceDNlXCIpLGs9Zz0wKTt6JiZmLnB1c2goJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfdG9vbGJhcl9lbmRcIlxceDNlXFx4M2Mvc3BhblxceDNlXFx4M2Mvc3BhblxceDNlJyl9fWMuY29uZmlnLnRvb2xiYXJDYW5Db2xsYXBzZSYmZi5wdXNoKFwiXFx4M2Mvc3BhblxceDNlXCIpO2lmKGMuY29uZmlnLnRvb2xiYXJDYW5Db2xsYXBzZSYmXG5jLmVsZW1lbnRNb2RlIT1DS0VESVRPUi5FTEVNRU5UX01PREVfSU5MSU5FKXt2YXIgSj1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbigpe2MuZXhlY0NvbW1hbmQoXCJ0b29sYmFyQ29sbGFwc2VcIil9KTtjLm9uKFwiZGVzdHJveVwiLGZ1bmN0aW9uKCl7Q0tFRElUT1IudG9vbHMucmVtb3ZlRnVuY3Rpb24oSil9KTtjLmFkZENvbW1hbmQoXCJ0b29sYmFyQ29sbGFwc2VcIix7cmVhZE9ubHk6MSxleGVjOmZ1bmN0aW9uKGEpe3ZhciBiPWEudWkuc3BhY2UoXCJ0b29sYmFyX2NvbGxhcHNlclwiKSxkPWIuZ2V0UHJldmlvdXMoKSxjPWEudWkuc3BhY2UoXCJjb250ZW50c1wiKSxnPWQuZ2V0UGFyZW50KCksZT1wYXJzZUludChjLiQuc3R5bGUuaGVpZ2h0LDEwKSxmPWcuJC5vZmZzZXRIZWlnaHQsaD1iLmhhc0NsYXNzKFwiY2tlX3Rvb2xib3hfY29sbGFwc2VyX21pblwiKTtoPyhkLnNob3coKSxiLnJlbW92ZUNsYXNzKFwiY2tlX3Rvb2xib3hfY29sbGFwc2VyX21pblwiKSxiLnNldEF0dHJpYnV0ZShcInRpdGxlXCIsXG5hLmxhbmcudG9vbGJhci50b29sYmFyQ29sbGFwc2UpKTooZC5oaWRlKCksYi5hZGRDbGFzcyhcImNrZV90b29sYm94X2NvbGxhcHNlcl9taW5cIiksYi5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLGEubGFuZy50b29sYmFyLnRvb2xiYXJFeHBhbmQpKTtiLmdldEZpcnN0KCkuc2V0VGV4dChoP1wi4payXCI6XCLil4BcIik7Yy5zZXRTdHlsZShcImhlaWdodFwiLGUtKGcuJC5vZmZzZXRIZWlnaHQtZikrXCJweFwiKTthLmZpcmUoXCJyZXNpemVcIix7b3V0ZXJIZWlnaHQ6YS5jb250YWluZXIuJC5vZmZzZXRIZWlnaHQsY29udGVudHNIZWlnaHQ6Yy4kLm9mZnNldEhlaWdodCxvdXRlcldpZHRoOmEuY29udGFpbmVyLiQub2Zmc2V0V2lkdGh9KX0sbW9kZXM6e3d5c2l3eWc6MSxzb3VyY2U6MX19KTtjLnNldEtleXN0cm9rZShDS0VESVRPUi5BTFQrKENLRURJVE9SLmVudi5pZXx8Q0tFRElUT1IuZW52LndlYmtpdD8xODk6MTA5KSxcInRvb2xiYXJDb2xsYXBzZVwiKTtmLnB1c2goJ1xceDNjYSB0aXRsZVxceDNkXCInKyhkP2MubGFuZy50b29sYmFyLnRvb2xiYXJDb2xsYXBzZTpcbmMubGFuZy50b29sYmFyLnRvb2xiYXJFeHBhbmQpKydcIiBpZFxceDNkXCInK2MudWkuc3BhY2VJZChcInRvb2xiYXJfY29sbGFwc2VyXCIpKydcIiB0YWJJbmRleFxceDNkXCItMVwiIGNsYXNzXFx4M2RcImNrZV90b29sYm94X2NvbGxhcHNlcicpO2R8fGYucHVzaChcIiBja2VfdG9vbGJveF9jb2xsYXBzZXJfbWluXCIpO2YucHVzaCgnXCIgb25jbGlja1xceDNkXCJDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oJytKKycpXCJcXHgzZScsJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfYXJyb3dcIlxceDNlXFx4MjYjOTY1MDtcXHgzYy9zcGFuXFx4M2UnLFwiXFx4M2MvYVxceDNlXCIpfWYucHVzaChcIlxceDNjL3NwYW5cXHgzZVwiKTtiLmRhdGEuaHRtbCs9Zi5qb2luKFwiXCIpfX0pO2Mub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtpZih0aGlzLnRvb2xib3gpe3ZhciBhLGI9MCxjLGcsZTtmb3IoYT10aGlzLnRvb2xib3gudG9vbGJhcnM7YjxhLmxlbmd0aDtiKyspZm9yKGc9YVtiXS5pdGVtcyxjPTA7YzxnLmxlbmd0aDtjKyspZT1nW2NdLFxuZS5jbGlja0ZuJiZDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbihlLmNsaWNrRm4pLGUua2V5RG93bkZuJiZDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbihlLmtleURvd25Gbil9fSk7Yy5vbihcInVpUmVhZHlcIixmdW5jdGlvbigpe3ZhciBhPWMudWkuc3BhY2UoXCJ0b29sYm94XCIpO2EmJmMuZm9jdXNNYW5hZ2VyLmFkZChhLDEpfSk7Yy5hZGRDb21tYW5kKFwidG9vbGJhckZvY3VzXCIsYik7Yy5zZXRLZXlzdHJva2UoQ0tFRElUT1IuQUxUKzEyMSxcInRvb2xiYXJGb2N1c1wiKTtjLnVpLmFkZChcIi1cIixDS0VESVRPUi5VSV9TRVBBUkFUT1Ise30pO2MudWkuYWRkSGFuZGxlcihDS0VESVRPUi5VSV9TRVBBUkFUT1Ise2NyZWF0ZTpmdW5jdGlvbigpe3JldHVybntyZW5kZXI6ZnVuY3Rpb24oYSxiKXtiLnB1c2goJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfdG9vbGJhcl9zZXBhcmF0b3JcIiByb2xlXFx4M2RcInNlcGFyYXRvclwiXFx4M2VcXHgzYy9zcGFuXFx4M2UnKTtyZXR1cm57fX19fX0pfX0pO1xuQ0tFRElUT1IudWkucHJvdG90eXBlLmFkZFRvb2xiYXJHcm91cD1mdW5jdGlvbihhLGIsZSl7dmFyIG09Zih0aGlzLmVkaXRvciksZD0wPT09YixoPXtuYW1lOmF9O2lmKGUpe2lmKGU9Q0tFRElUT1IudG9vbHMuc2VhcmNoKG0sZnVuY3Rpb24oYSl7cmV0dXJuIGEubmFtZT09ZX0pKXshZS5ncm91cHMmJihlLmdyb3Vwcz1bXSk7aWYoYiYmKGI9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihlLmdyb3VwcyxiKSwwPD1iKSl7ZS5ncm91cHMuc3BsaWNlKGIrMSwwLGEpO3JldHVybn1kP2UuZ3JvdXBzLnNwbGljZSgwLDAsYSk6ZS5ncm91cHMucHVzaChhKTtyZXR1cm59Yj1udWxsfWImJihiPUNLRURJVE9SLnRvb2xzLmluZGV4T2YobSxmdW5jdGlvbihhKXtyZXR1cm4gYS5uYW1lPT1ifSkpO2Q/bS5zcGxpY2UoMCwwLGEpOlwibnVtYmVyXCI9PXR5cGVvZiBiP20uc3BsaWNlKGIrMSwwLGgpOm0ucHVzaChhKX19KCksQ0tFRElUT1IuVUlfU0VQQVJBVE9SPVwic2VwYXJhdG9yXCIsQ0tFRElUT1IuY29uZmlnLnRvb2xiYXJMb2NhdGlvbj1cblwidG9wXCIsXCJ1c2Ugc3RyaWN0XCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYixkKXtiLnR5cGV8fChiLnR5cGU9XCJhdXRvXCIpO2lmKGQmJiExPT09YS5maXJlKFwiYmVmb3JlUGFzdGVcIixiKXx8IWIuZGF0YVZhbHVlJiZiLmRhdGFUcmFuc2Zlci5pc0VtcHR5KCkpcmV0dXJuITE7Yi5kYXRhVmFsdWV8fChiLmRhdGFWYWx1ZT1cIlwiKTtpZihDS0VESVRPUi5lbnYuZ2Vja28mJlwiZHJvcFwiPT1iLm1ldGhvZCYmYS50b29sYm94KWEub25jZShcImFmdGVyUGFzdGVcIixmdW5jdGlvbigpe2EudG9vbGJveC5mb2N1cygpO2EuZm9jdXMoKX0pO3JldHVybiBhLmZpcmUoXCJwYXN0ZVwiLGIpfWZ1bmN0aW9uIGYoYil7ZnVuY3Rpb24gZCgpe3ZhciBhPWIuZWRpdGFibGUoKTtpZihDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5pc0N1c3RvbUNvcHlDdXRTdXBwb3J0ZWQpe3ZhciBjPWZ1bmN0aW9uKGEpe2IuZ2V0U2VsZWN0aW9uKCkuaXNDb2xsYXBzZWQoKXx8KGIucmVhZE9ubHkmJlwiY3V0XCI9PWEubmFtZXx8XG5ELmluaXRQYXN0ZURhdGFUcmFuc2ZlcihhLGIpLGEuZGF0YS5wcmV2ZW50RGVmYXVsdCgpKX07YS5vbihcImNvcHlcIixjKTthLm9uKFwiY3V0XCIsYyk7YS5vbihcImN1dFwiLGZ1bmN0aW9uKCl7Yi5yZWFkT25seXx8Yi5leHRyYWN0U2VsZWN0ZWRIdG1sKCl9LG51bGwsbnVsbCw5OTkpfWEub24oRC5tYWluUGFzdGVFdmVudCxmdW5jdGlvbihhKXtcImJlZm9yZXBhc3RlXCI9PUQubWFpblBhc3RlRXZlbnQmJkN8fHQoYSl9KTtcImJlZm9yZXBhc3RlXCI9PUQubWFpblBhc3RlRXZlbnQmJihhLm9uKFwicGFzdGVcIixmdW5jdGlvbihhKXtGfHwoZigpLGEuZGF0YS5wcmV2ZW50RGVmYXVsdCgpLHQoYSksayhcInBhc3RlXCIpKX0pLGEub24oXCJjb250ZXh0bWVudVwiLGgsbnVsbCxudWxsLDApLGEub24oXCJiZWZvcmVwYXN0ZVwiLGZ1bmN0aW9uKGEpeyFhLmRhdGF8fGEuZGF0YS4kLmN0cmxLZXl8fGEuZGF0YS4kLnNoaWZ0S2V5fHxoKCl9LG51bGwsbnVsbCwwKSk7YS5vbihcImJlZm9yZWN1dFwiLGZ1bmN0aW9uKCl7IUMmJlxubChiKX0pO3ZhciBlO2EuYXR0YWNoTGlzdGVuZXIoQ0tFRElUT1IuZW52LmllP2E6Yi5kb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKSxcIm1vdXNldXBcIixmdW5jdGlvbigpe2U9c2V0VGltZW91dCh2LDApfSk7Yi5vbihcImRlc3Ryb3lcIixmdW5jdGlvbigpe2NsZWFyVGltZW91dChlKX0pO2Eub24oXCJrZXl1cFwiLHYpfWZ1bmN0aW9uIGMoYSl7cmV0dXJue3R5cGU6YSxjYW5VbmRvOlwiY3V0XCI9PWEsc3RhcnREaXNhYmxlZDohMCxmYWtlS2V5c3Ryb2tlOlwiY3V0XCI9PWE/Q0tFRElUT1IuQ1RSTCs4ODpDS0VESVRPUi5DVFJMKzY3LGV4ZWM6ZnVuY3Rpb24oKXtcImN1dFwiPT10aGlzLnR5cGUmJmwoKTt2YXIgYTt2YXIgZD10aGlzLnR5cGU7aWYoQ0tFRElUT1IuZW52LmllKWE9ayhkKTtlbHNlIHRyeXthPWIuZG9jdW1lbnQuJC5leGVjQ29tbWFuZChkLCExLG51bGwpfWNhdGNoKGMpe2E9ITF9YXx8Yi5zaG93Tm90aWZpY2F0aW9uKGIubGFuZy5jbGlwYm9hcmRbdGhpcy50eXBlK1wiRXJyb3JcIl0pO1xucmV0dXJuIGF9fX1mdW5jdGlvbiBlKCl7cmV0dXJue2NhblVuZG86ITEsYXN5bmM6ITAsZmFrZUtleXN0cm9rZTpDS0VESVRPUi5DVFJMKzg2LGV4ZWM6ZnVuY3Rpb24oYixkKXtmdW5jdGlvbiBjKGQsZil7Zj1cInVuZGVmaW5lZFwiIT09dHlwZW9mIGY/ZjohMDtkPyhkLm1ldGhvZD1cInBhc3RlXCIsZC5kYXRhVHJhbnNmZXJ8fChkLmRhdGFUcmFuc2Zlcj1ELmluaXRQYXN0ZURhdGFUcmFuc2ZlcigpKSxhKGIsZCxmKSk6ZSYmIWIuXy5mb3JjZVBhc3RlRGlhbG9nJiZiLnNob3dOb3RpZmljYXRpb24oayxcImluZm9cIixiLmNvbmZpZy5jbGlwYm9hcmRfbm90aWZpY2F0aW9uRHVyYXRpb24pO2IuXy5mb3JjZVBhc3RlRGlhbG9nPSExO2IuZmlyZShcImFmdGVyQ29tbWFuZEV4ZWNcIix7bmFtZTpcInBhc3RlXCIsY29tbWFuZDpnLHJldHVyblZhbHVlOiEhZH0pfWQ9XCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBkJiZudWxsIT09ZD9kOnt9O3ZhciBnPXRoaXMsZT1cInVuZGVmaW5lZFwiIT09dHlwZW9mIGQubm90aWZpY2F0aW9uP1xuZC5ub3RpZmljYXRpb246ITAsZj1kLnR5cGUsaD1DS0VESVRPUi50b29scy5rZXlzdHJva2VUb1N0cmluZyhiLmxhbmcuY29tbW9uLmtleWJvYXJkLGIuZ2V0Q29tbWFuZEtleXN0cm9rZSh0aGlzKSksaz1cInN0cmluZ1wiPT09dHlwZW9mIGU/ZTpiLmxhbmcuY2xpcGJvYXJkLnBhc3RlTm90aWZpY2F0aW9uLnJlcGxhY2UoLyUxLywnXFx4M2NrYmQgYXJpYS1sYWJlbFxceDNkXCInK2guYXJpYSsnXCJcXHgzZScraC5kaXNwbGF5K1wiXFx4M2Mva2JkXFx4M2VcIiksaD1cInN0cmluZ1wiPT09dHlwZW9mIGQ/ZDpkLmRhdGFWYWx1ZTtmJiYhMCE9PWIuY29uZmlnLmZvcmNlUGFzdGVBc1BsYWluVGV4dCYmXCJhbGxvdy13b3JkXCIhPT1iLmNvbmZpZy5mb3JjZVBhc3RlQXNQbGFpblRleHQ/Yi5fLm5leHRQYXN0ZVR5cGU9ZjpkZWxldGUgYi5fLm5leHRQYXN0ZVR5cGU7XCJzdHJpbmdcIj09PXR5cGVvZiBoP2Moe2RhdGFWYWx1ZTpofSk6Yi5nZXRDbGlwYm9hcmREYXRhKGMpfX19ZnVuY3Rpb24gZigpe0Y9MTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Rj1cbjB9LDEwMCl9ZnVuY3Rpb24gaCgpe0M9MTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Qz0wfSwxMCl9ZnVuY3Rpb24gayhhKXt2YXIgZD1iLmRvY3VtZW50LGM9ZC5nZXRCb2R5KCksZT0hMSxmPWZ1bmN0aW9uKCl7ZT0hMH07Yy5vbihhLGYpOzc8Q0tFRElUT1IuZW52LnZlcnNpb24/ZC4kLmV4ZWNDb21tYW5kKGEpOmQuJC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5leGVjQ29tbWFuZChhKTtjLnJlbW92ZUxpc3RlbmVyKGEsZik7cmV0dXJuIGV9ZnVuY3Rpb24gbCgpe2lmKENLRURJVE9SLmVudi5pZSYmIUNLRURJVE9SLmVudi5xdWlya3Mpe3ZhciBhPWIuZ2V0U2VsZWN0aW9uKCksZCxjLGU7YS5nZXRUeXBlKCk9PUNLRURJVE9SLlNFTEVDVElPTl9FTEVNRU5UJiYoZD1hLmdldFNlbGVjdGVkRWxlbWVudCgpKSYmKGM9YS5nZXRSYW5nZXMoKVswXSxlPWIuZG9jdW1lbnQuY3JlYXRlVGV4dChcIlwiKSxlLmluc2VydEJlZm9yZShkKSxjLnNldFN0YXJ0QmVmb3JlKGUpLGMuc2V0RW5kQWZ0ZXIoZCksXG5hLnNlbGVjdFJhbmdlcyhbY10pLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmdldFBhcmVudCgpJiYoZS5yZW1vdmUoKSxhLnNlbGVjdEVsZW1lbnQoZCkpfSwwKSl9fWZ1bmN0aW9uIG0oYSxkKXt2YXIgYz1iLmRvY3VtZW50LGU9Yi5lZGl0YWJsZSgpLGY9ZnVuY3Rpb24oYSl7YS5jYW5jZWwoKX0saDtpZighYy5nZXRCeUlkKFwiY2tlX3Bhc3RlYmluXCIpKXt2YXIgaz1iLmdldFNlbGVjdGlvbigpLGw9ay5jcmVhdGVCb29rbWFya3MoKTtDS0VESVRPUi5lbnYuaWUmJmsucm9vdC5maXJlKFwic2VsZWN0aW9uY2hhbmdlXCIpO3ZhciBuPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudCghQ0tFRElUT1IuZW52LndlYmtpdCYmIWUuaXMoXCJib2R5XCIpfHxDS0VESVRPUi5lbnYuaWU/XCJkaXZcIjpcImJvZHlcIixjKTtuLnNldEF0dHJpYnV0ZXMoe2lkOlwiY2tlX3Bhc3RlYmluXCIsXCJkYXRhLWNrZS10ZW1wXCI6XCIxXCJ9KTt2YXIgcT0wLGM9Yy5nZXRXaW5kb3coKTtDS0VESVRPUi5lbnYud2Via2l0PyhlLmFwcGVuZChuKSxcbm4uYWRkQ2xhc3MoXCJja2VfZWRpdGFibGVcIiksZS5pcyhcImJvZHlcIil8fChxPVwic3RhdGljXCIhPWUuZ2V0Q29tcHV0ZWRTdHlsZShcInBvc2l0aW9uXCIpP2U6Q0tFRElUT1IuZG9tLmVsZW1lbnQuZ2V0KGUuJC5vZmZzZXRQYXJlbnQpLHE9cS5nZXREb2N1bWVudFBvc2l0aW9uKCkueSkpOmUuZ2V0QXNjZW5kYW50KENLRURJVE9SLmVudi5pZT9cImJvZHlcIjpcImh0bWxcIiwxKS5hcHBlbmQobik7bi5zZXRTdHlsZXMoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6Yy5nZXRTY3JvbGxQb3NpdGlvbigpLnktcSsxMCtcInB4XCIsd2lkdGg6XCIxcHhcIixoZWlnaHQ6TWF0aC5tYXgoMSxjLmdldFZpZXdQYW5lU2l6ZSgpLmhlaWdodC0yMCkrXCJweFwiLG92ZXJmbG93OlwiaGlkZGVuXCIsbWFyZ2luOjAscGFkZGluZzowfSk7Q0tFRElUT1IuZW52LnNhZmFyaSYmbi5zZXRTdHlsZXMoQ0tFRElUT1IudG9vbHMuY3NzVmVuZG9yUHJlZml4KFwidXNlci1zZWxlY3RcIixcInRleHRcIikpOyhxPW4uZ2V0UGFyZW50KCkuaXNSZWFkT25seSgpKT9cbihuLnNldE9wYWNpdHkoMCksbi5zZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIiwhMCkpOm4uc2V0U3R5bGUoXCJsdHJcIj09Yi5jb25maWcuY29udGVudHNMYW5nRGlyZWN0aW9uP1wibGVmdFwiOlwicmlnaHRcIixcIi0xMDAwMHB4XCIpO2Iub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixmLG51bGwsbnVsbCwwKTtpZihDS0VESVRPUi5lbnYud2Via2l0fHxDS0VESVRPUi5lbnYuZ2Vja28paD1lLm9uY2UoXCJibHVyXCIsZixudWxsLG51bGwsLTEwMCk7cSYmbi5mb2N1cygpO3E9bmV3IENLRURJVE9SLmRvbS5yYW5nZShuKTtxLnNlbGVjdE5vZGVDb250ZW50cyhuKTt2YXIgdj1xLnNlbGVjdCgpO0NLRURJVE9SLmVudi5pZSYmKGg9ZS5vbmNlKFwiYmx1clwiLGZ1bmN0aW9uKCl7Yi5sb2NrU2VsZWN0aW9uKHYpfSkpO3ZhciB0PUNLRURJVE9SLmRvY3VtZW50LmdldFdpbmRvdygpLmdldFNjcm9sbFBvc2l0aW9uKCkueTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7Q0tFRElUT1IuZW52LndlYmtpdCYmKENLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKS4kLnNjcm9sbFRvcD1cbnQpO2gmJmgucmVtb3ZlTGlzdGVuZXIoKTtDS0VESVRPUi5lbnYuaWUmJmUuZm9jdXMoKTtrLnNlbGVjdEJvb2ttYXJrcyhsKTtuLnJlbW92ZSgpO3ZhciBhO0NLRURJVE9SLmVudi53ZWJraXQmJihhPW4uZ2V0Rmlyc3QoKSkmJmEuaXMmJmEuaGFzQ2xhc3MoXCJBcHBsZS1zdHlsZS1zcGFuXCIpJiYobj1hKTtiLnJlbW92ZUxpc3RlbmVyKFwic2VsZWN0aW9uQ2hhbmdlXCIsZik7ZChuLmdldEh0bWwoKSl9LDApfX1mdW5jdGlvbiBBKCl7aWYoXCJwYXN0ZVwiPT1ELm1haW5QYXN0ZUV2ZW50KXJldHVybiBiLmZpcmUoXCJiZWZvcmVQYXN0ZVwiLHt0eXBlOlwiYXV0b1wiLG1ldGhvZDpcInBhc3RlXCJ9KSwhMTtiLmZvY3VzKCk7ZigpO3ZhciBhPWIuZm9jdXNNYW5hZ2VyO2EubG9jaygpO2lmKGIuZWRpdGFibGUoKS5maXJlKEQubWFpblBhc3RlRXZlbnQpJiYhayhcInBhc3RlXCIpKXJldHVybiBhLnVubG9jaygpLCExO2EudW5sb2NrKCk7cmV0dXJuITB9ZnVuY3Rpb24geShhKXtpZihcInd5c2l3eWdcIj09Yi5tb2RlKXN3aXRjaChhLmRhdGEua2V5Q29kZSl7Y2FzZSBDS0VESVRPUi5DVFJMK1xuODY6Y2FzZSBDS0VESVRPUi5TSElGVCs0NTphPWIuZWRpdGFibGUoKTtmKCk7XCJwYXN0ZVwiPT1ELm1haW5QYXN0ZUV2ZW50JiZhLmZpcmUoXCJiZWZvcmVwYXN0ZVwiKTticmVhaztjYXNlIENLRURJVE9SLkNUUkwrODg6Y2FzZSBDS0VESVRPUi5TSElGVCs0NjpiLmZpcmUoXCJzYXZlU25hcHNob3RcIiksc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlyZShcInNhdmVTbmFwc2hvdFwiKX0sNTApfX1mdW5jdGlvbiB0KGQpe3ZhciBjPXt0eXBlOlwiYXV0b1wiLG1ldGhvZDpcInBhc3RlXCIsZGF0YVRyYW5zZmVyOkQuaW5pdFBhc3RlRGF0YVRyYW5zZmVyKGQpfTtjLmRhdGFUcmFuc2Zlci5jYWNoZURhdGEoKTt2YXIgZT0hMSE9PWIuZmlyZShcImJlZm9yZVBhc3RlXCIsYyk7ZSYmRC5jYW5DbGlwYm9hcmRBcGlCZVRydXN0ZWQoYy5kYXRhVHJhbnNmZXIsYik/KGQuZGF0YS5wcmV2ZW50RGVmYXVsdCgpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXthKGIsYyl9LDApKTptKGQsZnVuY3Rpb24oZCl7Yy5kYXRhVmFsdWU9XG5kLnJlcGxhY2UoLzxzcGFuW14+XStkYXRhLWNrZS1ib29rbWFya1tePF0qPzxcXC9zcGFuPi9pZyxcIlwiKTtlJiZhKGIsYyl9KX1mdW5jdGlvbiB2KCl7aWYoXCJ3eXNpd3lnXCI9PWIubW9kZSl7dmFyIGE9QihcInBhc3RlXCIpO2IuZ2V0Q29tbWFuZChcImN1dFwiKS5zZXRTdGF0ZShCKFwiY3V0XCIpKTtiLmdldENvbW1hbmQoXCJjb3B5XCIpLnNldFN0YXRlKEIoXCJjb3B5XCIpKTtiLmdldENvbW1hbmQoXCJwYXN0ZVwiKS5zZXRTdGF0ZShhKTtiLmZpcmUoXCJwYXN0ZVN0YXRlXCIsYSl9fWZ1bmN0aW9uIEIoYSl7dmFyIGQ9Yi5nZXRTZWxlY3Rpb24oKSxkPWQmJmQuZ2V0UmFuZ2VzKClbMF07aWYoKGIucmVhZE9ubHl8fGQmJmQuY2hlY2tSZWFkT25seSgpKSYmYSBpbntwYXN0ZToxLGN1dDoxfSlyZXR1cm4gQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQ7aWYoXCJwYXN0ZVwiPT1hKXJldHVybiBDS0VESVRPUi5UUklTVEFURV9PRkY7YT1iLmdldFNlbGVjdGlvbigpO2Q9YS5nZXRSYW5nZXMoKTtyZXR1cm4gYS5nZXRUeXBlKCk9PVxuQ0tFRElUT1IuU0VMRUNUSU9OX05PTkV8fDE9PWQubGVuZ3RoJiZkWzBdLmNvbGxhcHNlZD9DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRDpDS0VESVRPUi5UUklTVEFURV9PRkZ9dmFyIEQ9Q0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQsQz0wLEY9MDsoZnVuY3Rpb24oKXtiLm9uKFwia2V5XCIseSk7Yi5vbihcImNvbnRlbnREb21cIixkKTtiLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsdik7aWYoYi5jb250ZXh0TWVudSl7Yi5jb250ZXh0TWVudS5hZGRMaXN0ZW5lcihmdW5jdGlvbigpe3JldHVybntjdXQ6QihcImN1dFwiKSxjb3B5OkIoXCJjb3B5XCIpLHBhc3RlOkIoXCJwYXN0ZVwiKX19KTt2YXIgYT1udWxsO2Iub24oXCJtZW51U2hvd1wiLGZ1bmN0aW9uKCl7YSYmKGEucmVtb3ZlTGlzdGVuZXIoKSxhPW51bGwpO3ZhciBkPWIuY29udGV4dE1lbnUuZmluZEl0ZW1CeUNvbW1hbmROYW1lKFwicGFzdGVcIik7ZCYmZC5lbGVtZW50JiYoYT1kLmVsZW1lbnQub24oXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKCl7Yi5fLmZvcmNlUGFzdGVEaWFsb2c9XG4hMH0pKX0pfWlmKGIudWkuYWRkQnV0dG9uKWIub25jZShcImluc3RhbmNlUmVhZHlcIixmdW5jdGlvbigpe2IuXy5wYXN0ZUJ1dHRvbnMmJkNLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goYi5fLnBhc3RlQnV0dG9ucyxmdW5jdGlvbihhKXtpZihhPWIudWkuZ2V0KGEpKWlmKGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChhLl8uaWQpKWEub24oXCJ0b3VjaGVuZFwiLGZ1bmN0aW9uKCl7Yi5fLmZvcmNlUGFzdGVEaWFsb2c9ITB9KX0pfSl9KSgpOyhmdW5jdGlvbigpe2Z1bmN0aW9uIGEoZCxjLGUsZixoKXt2YXIgaz1iLmxhbmcuY2xpcGJvYXJkW2NdO2IuYWRkQ29tbWFuZChjLGUpO2IudWkuYWRkQnV0dG9uJiZiLnVpLmFkZEJ1dHRvbihkLHtsYWJlbDprLGNvbW1hbmQ6Yyx0b29sYmFyOlwiY2xpcGJvYXJkLFwiK2Z9KTtiLmFkZE1lbnVJdGVtcyYmYi5hZGRNZW51SXRlbShjLHtsYWJlbDprLGNvbW1hbmQ6Yyxncm91cDpcImNsaXBib2FyZFwiLG9yZGVyOmh9KX1hKFwiQ3V0XCIsXCJjdXRcIixcbmMoXCJjdXRcIiksMTAsMSk7YShcIkNvcHlcIixcImNvcHlcIixjKFwiY29weVwiKSwyMCw0KTthKFwiUGFzdGVcIixcInBhc3RlXCIsZSgpLDMwLDgpO2IuXy5wYXN0ZUJ1dHRvbnN8fChiLl8ucGFzdGVCdXR0b25zPVtdKTtiLl8ucGFzdGVCdXR0b25zLnB1c2goXCJQYXN0ZVwiKX0pKCk7Yi5nZXRDbGlwYm9hcmREYXRhPWZ1bmN0aW9uKGEsZCl7ZnVuY3Rpb24gYyhhKXthLnJlbW92ZUxpc3RlbmVyKCk7YS5jYW5jZWwoKTtkKGEuZGF0YSl9ZnVuY3Rpb24gZShhKXthLnJlbW92ZUxpc3RlbmVyKCk7YS5jYW5jZWwoKTtkKHt0eXBlOmgsZGF0YVZhbHVlOmEuZGF0YS5kYXRhVmFsdWUsZGF0YVRyYW5zZmVyOmEuZGF0YS5kYXRhVHJhbnNmZXIsbWV0aG9kOlwicGFzdGVcIn0pfXZhciBmPSExLGg9XCJhdXRvXCI7ZHx8KGQ9YSxhPW51bGwpO2Iub24oXCJiZWZvcmVQYXN0ZVwiLGZ1bmN0aW9uKGEpe2EucmVtb3ZlTGlzdGVuZXIoKTtmPSEwO2g9YS5kYXRhLnR5cGV9LG51bGwsbnVsbCwxRTMpO2Iub24oXCJwYXN0ZVwiLGMsXG5udWxsLG51bGwsMCk7ITE9PT1BKCkmJihiLnJlbW92ZUxpc3RlbmVyKFwicGFzdGVcIixjKSxiLl8uZm9yY2VQYXN0ZURpYWxvZyYmZiYmYi5maXJlKFwicGFzdGVEaWFsb2dcIik/KGIub24oXCJwYXN0ZURpYWxvZ0NvbW1pdFwiLGUpLGIub24oXCJkaWFsb2dIaWRlXCIsZnVuY3Rpb24oYSl7YS5yZW1vdmVMaXN0ZW5lcigpO2EuZGF0YS5yZW1vdmVMaXN0ZW5lcihcInBhc3RlRGlhbG9nQ29tbWl0XCIsZSk7YS5kYXRhLl8uY29tbWl0dGVkfHxkKG51bGwpfSkpOmQobnVsbCkpfX1mdW5jdGlvbiBlKGEpe2lmKENLRURJVE9SLmVudi53ZWJraXQpe2lmKCFhLm1hdGNoKC9eW148XSokL2cpJiYhYS5tYXRjaCgvXig8ZGl2PjxiciggP1xcLyk/PjxcXC9kaXY+fDxkaXY+W148XSo8XFwvZGl2PikqJC9naSkpcmV0dXJuXCJodG1sXCJ9ZWxzZSBpZihDS0VESVRPUi5lbnYuaWUpe2lmKCFhLm1hdGNoKC9eKFtePF18PGJyKCA/XFwvKT8+KSokL2dpKSYmIWEubWF0Y2goL14oPHA+KFtePF18PGJyKCA/XFwvKT8+KSo8XFwvcD58KFxcclxcbikpKiQvZ2kpKXJldHVyblwiaHRtbFwifWVsc2UgaWYoQ0tFRElUT1IuZW52LmdlY2tvKXtpZighYS5tYXRjaCgvXihbXjxdfDxiciggP1xcLyk/PikqJC9naSkpcmV0dXJuXCJodG1sXCJ9ZWxzZSByZXR1cm5cImh0bWxcIjtcbnJldHVyblwiaHRtbGlmaWVkdGV4dFwifWZ1bmN0aW9uIGIoYSxiKXtmdW5jdGlvbiBkKGEpe3JldHVybiBDS0VESVRPUi50b29scy5yZXBlYXQoXCJcXHgzYy9wXFx4M2VcXHgzY3BcXHgzZVwiLH5+KGEvMikpKygxPT1hJTI/XCJcXHgzY2JyXFx4M2VcIjpcIlwiKX1iPWIucmVwbGFjZSgvKD8hXFx1MzAwMClcXHMrL2csXCIgXCIpLnJlcGxhY2UoLz4gKzwvZyxcIlxceDNlXFx4M2NcIikucmVwbGFjZSgvPGJyID9cXC8+L2dpLFwiXFx4M2NiclxceDNlXCIpO2I9Yi5yZXBsYWNlKC88XFwvP1tBLVpdKz4vZyxmdW5jdGlvbihhKXtyZXR1cm4gYS50b0xvd2VyQ2FzZSgpfSk7aWYoYi5tYXRjaCgvXltePF0kLykpcmV0dXJuIGI7Q0tFRElUT1IuZW52LndlYmtpdCYmLTE8Yi5pbmRleE9mKFwiXFx4M2NkaXZcXHgzZVwiKSYmKGI9Yi5yZXBsYWNlKC9eKDxkaXY+KDxicj58KTxcXC9kaXY+KSg/ISR8KDxkaXY+KDxicj58KTxcXC9kaXY+KSkvZyxcIlxceDNjYnJcXHgzZVwiKS5yZXBsYWNlKC9eKDxkaXY+KDxicj58KTxcXC9kaXY+KXsyfSg/ISQpL2csXCJcXHgzY2RpdlxceDNlXFx4M2MvZGl2XFx4M2VcIiksXG5iLm1hdGNoKC88ZGl2Pig8YnI+fCk8XFwvZGl2Pi8pJiYoYj1cIlxceDNjcFxceDNlXCIrYi5yZXBsYWNlKC8oPGRpdj4oPGJyPnwpPFxcL2Rpdj4pKy9nLGZ1bmN0aW9uKGEpe3JldHVybiBkKGEuc3BsaXQoXCJcXHgzYy9kaXZcXHgzZVxceDNjZGl2XFx4M2VcIikubGVuZ3RoKzEpfSkrXCJcXHgzYy9wXFx4M2VcIiksYj1iLnJlcGxhY2UoLzxcXC9kaXY+PGRpdj4vZyxcIlxceDNjYnJcXHgzZVwiKSxiPWIucmVwbGFjZSgvPFxcLz9kaXY+L2csXCJcIikpO0NLRURJVE9SLmVudi5nZWNrbyYmYS5lbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX0JSJiYoQ0tFRElUT1IuZW52LmdlY2tvJiYoYj1iLnJlcGxhY2UoL148YnI+PGJyPiQvLFwiXFx4M2NiclxceDNlXCIpKSwtMTxiLmluZGV4T2YoXCJcXHgzY2JyXFx4M2VcXHgzY2JyXFx4M2VcIikmJihiPVwiXFx4M2NwXFx4M2VcIitiLnJlcGxhY2UoLyg8YnI+KXsyLH0vZyxmdW5jdGlvbihhKXtyZXR1cm4gZChhLmxlbmd0aC80KX0pK1wiXFx4M2MvcFxceDNlXCIpKTtyZXR1cm4gbChhLGIpfWZ1bmN0aW9uIGMoYSl7ZnVuY3Rpb24gYigpe3ZhciBhPVxue30sZDtmb3IoZCBpbiBDS0VESVRPUi5kdGQpXCIkXCIhPWQuY2hhckF0KDApJiZcImRpdlwiIT1kJiZcInNwYW5cIiE9ZCYmKGFbZF09MSk7cmV0dXJuIGF9dmFyIGQ9e307cmV0dXJue2dldDpmdW5jdGlvbihjKXtyZXR1cm5cInBsYWluLXRleHRcIj09Yz9kLnBsYWluVGV4dHx8KGQucGxhaW5UZXh0PW5ldyBDS0VESVRPUi5maWx0ZXIoYSxcImJyXCIpKTpcInNlbWFudGljLWNvbnRlbnRcIj09Yz8oKGM9ZC5zZW1hbnRpY0NvbnRlbnQpfHwoYz1uZXcgQ0tFRElUT1IuZmlsdGVyKGEse30pLGMuYWxsb3coeyQxOntlbGVtZW50czpiKCksYXR0cmlidXRlczohMCxzdHlsZXM6ITEsY2xhc3NlczohMX19KSxjPWQuc2VtYW50aWNDb250ZW50PWMpLGMpOmM/bmV3IENLRURJVE9SLmZpbHRlcihhLGMpOm51bGx9fX1mdW5jdGlvbiBrKGEsYixkKXtiPUNLRURJVE9SLmh0bWxQYXJzZXIuZnJhZ21lbnQuZnJvbUh0bWwoYik7dmFyIGM9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXI7ZC5hcHBseVRvKGIsXG4hMCwhMSxhLmFjdGl2ZUVudGVyTW9kZSk7Yi53cml0ZUh0bWwoYyk7cmV0dXJuIGMuZ2V0SHRtbCgpfWZ1bmN0aW9uIGwoYSxiKXthLmVudGVyTW9kZT09Q0tFRElUT1IuRU5URVJfQlI/Yj1iLnJlcGxhY2UoLyg8XFwvcD48cD4pKy9nLGZ1bmN0aW9uKGEpe3JldHVybiBDS0VESVRPUi50b29scy5yZXBlYXQoXCJcXHgzY2JyXFx4M2VcIixhLmxlbmd0aC83KjIpfSkucmVwbGFjZSgvPFxcLz9wPi9nLFwiXCIpOmEuZW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9ESVYmJihiPWIucmVwbGFjZSgvPChcXC8pP3A+L2csXCJcXHgzYyQxZGl2XFx4M2VcIikpO3JldHVybiBifWZ1bmN0aW9uIG0oYSl7YS5kYXRhLnByZXZlbnREZWZhdWx0KCk7YS5kYXRhLiQuZGF0YVRyYW5zZmVyLmRyb3BFZmZlY3Q9XCJub25lXCJ9ZnVuY3Rpb24gZChiKXt2YXIgZD1DS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZDtiLm9uKFwiY29udGVudERvbVwiLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYyhkLGUsZil7ZS5zZWxlY3QoKTthKGIse2RhdGFUcmFuc2ZlcjpmLFxubWV0aG9kOlwiZHJvcFwifSwxKTtmLnNvdXJjZUVkaXRvci5maXJlKFwic2F2ZVNuYXBzaG90XCIpO2Yuc291cmNlRWRpdG9yLmVkaXRhYmxlKCkuZXh0cmFjdEh0bWxGcm9tUmFuZ2UoZCk7Zi5zb3VyY2VFZGl0b3IuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFtkXSk7Zi5zb3VyY2VFZGl0b3IuZmlyZShcInNhdmVTbmFwc2hvdFwiKX1mdW5jdGlvbiBlKGMsZil7Yy5zZWxlY3QoKTthKGIse2RhdGFUcmFuc2ZlcjpmLG1ldGhvZDpcImRyb3BcIn0sMSk7ZC5yZXNldERyYWdEYXRhVHJhbnNmZXIoKX1mdW5jdGlvbiBmKGEsZCxjKXt2YXIgZT17JDphLmRhdGEuJCx0YXJnZXQ6YS5kYXRhLmdldFRhcmdldCgpfTtkJiYoZS5kcmFnUmFuZ2U9ZCk7YyYmKGUuZHJvcFJhbmdlPWMpOyExPT09Yi5maXJlKGEubmFtZSxlKSYmYS5kYXRhLnByZXZlbnREZWZhdWx0KCl9ZnVuY3Rpb24gaChhKXthLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKGE9YS5nZXRQYXJlbnQoKSk7cmV0dXJuIGEuZ2V0Q2hpbGRDb3VudCgpfVxudmFyIGs9Yi5lZGl0YWJsZSgpLGw9Q0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZ2V0RHJvcFRhcmdldChiKSxtPWIudWkuc3BhY2UoXCJ0b3BcIiksQT1iLnVpLnNwYWNlKFwiYm90dG9tXCIpO2QucHJldmVudERlZmF1bHREcm9wT25FbGVtZW50KG0pO2QucHJldmVudERlZmF1bHREcm9wT25FbGVtZW50KEEpO2suYXR0YWNoTGlzdGVuZXIobCxcImRyYWdzdGFydFwiLGYpO2suYXR0YWNoTGlzdGVuZXIoYixcImRyYWdzdGFydFwiLGQucmVzZXREcmFnRGF0YVRyYW5zZmVyLGQsbnVsbCwxKTtrLmF0dGFjaExpc3RlbmVyKGIsXCJkcmFnc3RhcnRcIixmdW5jdGlvbihhKXtkLmluaXREcmFnRGF0YVRyYW5zZmVyKGEsYil9LG51bGwsbnVsbCwyKTtrLmF0dGFjaExpc3RlbmVyKGIsXCJkcmFnc3RhcnRcIixmdW5jdGlvbigpe3ZhciBhPWQuZHJhZ1JhbmdlPWIuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKClbMF07Q0tFRElUT1IuZW52LmllJiYxMD5DS0VESVRPUi5lbnYudmVyc2lvbiYmKGQuZHJhZ1N0YXJ0Q29udGFpbmVyQ2hpbGRDb3VudD1cbmE/aChhLnN0YXJ0Q29udGFpbmVyKTpudWxsLGQuZHJhZ0VuZENvbnRhaW5lckNoaWxkQ291bnQ9YT9oKGEuZW5kQ29udGFpbmVyKTpudWxsKX0sbnVsbCxudWxsLDEwMCk7ay5hdHRhY2hMaXN0ZW5lcihsLFwiZHJhZ2VuZFwiLGYpO2suYXR0YWNoTGlzdGVuZXIoYixcImRyYWdlbmRcIixkLmluaXREcmFnRGF0YVRyYW5zZmVyLGQsbnVsbCwxKTtrLmF0dGFjaExpc3RlbmVyKGIsXCJkcmFnZW5kXCIsZC5yZXNldERyYWdEYXRhVHJhbnNmZXIsZCxudWxsLDEwMCk7ay5hdHRhY2hMaXN0ZW5lcihsLFwiZHJhZ292ZXJcIixmdW5jdGlvbihhKXtpZihDS0VESVRPUi5lbnYuZWRnZSlhLmRhdGEucHJldmVudERlZmF1bHQoKTtlbHNle3ZhciBiPWEuZGF0YS5nZXRUYXJnZXQoKTtiJiZiLmlzJiZiLmlzKFwiaHRtbFwiKT9hLmRhdGEucHJldmVudERlZmF1bHQoKTpDS0VESVRPUi5lbnYuaWUmJkNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzRmlsZUFwaVN1cHBvcnRlZCYmYS5kYXRhLiQuZGF0YVRyYW5zZmVyLnR5cGVzLmNvbnRhaW5zKFwiRmlsZXNcIikmJlxuYS5kYXRhLnByZXZlbnREZWZhdWx0KCl9fSk7ay5hdHRhY2hMaXN0ZW5lcihsLFwiZHJvcFwiLGZ1bmN0aW9uKGEpe2lmKCFhLmRhdGEuJC5kZWZhdWx0UHJldmVudGVkJiYoYS5kYXRhLnByZXZlbnREZWZhdWx0KCksIWIucmVhZE9ubHkpKXt2YXIgYz1hLmRhdGEuZ2V0VGFyZ2V0KCk7aWYoIWMuaXNSZWFkT25seSgpfHxjLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYy5pcyhcImh0bWxcIikpe3ZhciBjPWQuZ2V0UmFuZ2VBdERyb3BQb3NpdGlvbihhLGIpLGU9ZC5kcmFnUmFuZ2U7YyYmZihhLGUsYyl9fX0sbnVsbCxudWxsLDk5OTkpO2suYXR0YWNoTGlzdGVuZXIoYixcImRyb3BcIixkLmluaXREcmFnRGF0YVRyYW5zZmVyLGQsbnVsbCwxKTtrLmF0dGFjaExpc3RlbmVyKGIsXCJkcm9wXCIsZnVuY3Rpb24oYSl7aWYoYT1hLmRhdGEpe3ZhciBmPWEuZHJvcFJhbmdlLGg9YS5kcmFnUmFuZ2Usaz1hLmRhdGFUcmFuc2ZlcjtrLmdldFRyYW5zZmVyVHlwZShiKT09Q0tFRElUT1IuREFUQV9UUkFOU0ZFUl9JTlRFUk5BTD9cbnNldFRpbWVvdXQoZnVuY3Rpb24oKXtkLmludGVybmFsRHJvcChoLGYsayxiKX0sMCk6ay5nZXRUcmFuc2ZlclR5cGUoYik9PUNLRURJVE9SLkRBVEFfVFJBTlNGRVJfQ1JPU1NfRURJVE9SUz9jKGgsZixrKTplKGYsayl9fSxudWxsLG51bGwsOTk5OSl9KX12YXIgaDtDS0VESVRPUi5wbHVnaW5zLmFkZChcImNsaXBib2FyZFwiLHtyZXF1aXJlczpcImRpYWxvZyxub3RpZmljYXRpb24sdG9vbGJhclwiLF9zdXBwb3J0ZWRGaWxlTWF0Y2hlcnM6W10saW5pdDpmdW5jdGlvbihhKXtmdW5jdGlvbiBoKGEpe3JldHVybi0xIT09Q0tFRElUT1IudG9vbHMuaW5kZXhPZihbXCJpbWFnZS9wbmdcIixcImltYWdlL2pwZWdcIixcImltYWdlL2dpZlwiXSxhLnR5cGUpfWZ1bmN0aW9uIGwoYil7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5LnNvbWUoYS5wbHVnaW5zLmNsaXBib2FyZC5fc3VwcG9ydGVkRmlsZU1hdGNoZXJzLGZ1bmN0aW9uKGEpe3JldHVybiBhKGIpfSl9ZnVuY3Rpb24gbShiKXtiLmxlbmd0aCYmXG4oYj1DS0VESVRPUi50b29scy5hcnJheS51bmlxdWUoYiksYj1DS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoYixmdW5jdGlvbihhKXtyZXR1cm4hIUNLRURJVE9SLnRvb2xzLnRyaW0oYSl9KSxiPXIoYi5qb2luKFwiLCBcIikpLGEuc2hvd05vdGlmaWNhdGlvbihiLFwiaW5mb1wiLGEuY29uZmlnLmNsaXBib2FyZF9ub3RpZmljYXRpb25EdXJhdGlvbikpfWZ1bmN0aW9uIHIoYil7cmV0dXJuIGI/YS5sYW5nLmNsaXBib2FyZC5maWxlRm9ybWF0Tm90U3VwcG9ydGVkTm90aWZpY2F0aW9uLnJlcGxhY2UoL1xcJHtmb3JtYXRzXFx9L2csXCJcXHgzY2VtXFx4M2VcIitiK1wiXFx4M2MvZW1cXHgzZVwiKTphLmxhbmcuY2xpcGJvYXJkLmZpbGVXaXRob3V0Rm9ybWF0Tm90U3VwcG9ydGVkTm90aWZpY2F0aW9ufWZ1bmN0aW9uIHAoYSxiKXtyZXR1cm4gQ0tFRElUT1IuZW52LmllJiZhLmRhdGEuZmlsZVRyYW5zZmVyQ2FuY2VsfHwhKENLRURJVE9SLmVudi5pZXx8YiYmQSE9PWIuaWQpPyExOmIuaXNGaWxlVHJhbnNmZXIoKSYmXG4xPT09Yi5nZXRGaWxlc0NvdW50KCl9dmFyIHUsej1jKGEpO2EuY29uZmlnLmZvcmNlUGFzdGVBc1BsYWluVGV4dD91PVwicGxhaW4tdGV4dFwiOmEuY29uZmlnLnBhc3RlRmlsdGVyP3U9YS5jb25maWcucGFzdGVGaWx0ZXI6IUNLRURJVE9SLmVudi53ZWJraXR8fFwicGFzdGVGaWx0ZXJcImluIGEuY29uZmlnfHwodT1cInNlbWFudGljLWNvbnRlbnRcIik7YS5wYXN0ZUZpbHRlcj16LmdldCh1KTtmKGEpO2QoYSk7Q0tFRElUT1IuZGlhbG9nLmFkZChcInBhc3RlXCIsQ0tFRElUT1IuZ2V0VXJsKHRoaXMucGF0aCtcImRpYWxvZ3MvcGFzdGUuanNcIikpO3ZhciBxPUNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzQ3VzdG9tRGF0YVR5cGVzU3VwcG9ydGVkfHxDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5pc0ZpbGVBcGlTdXBwb3J0ZWQsQTtDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5hZGRGaWxlTWF0Y2hlcihhLGgpO2Eub24oXCJwYXN0ZVwiLGZ1bmN0aW9uKGEpe2lmKHEpe3ZhciBiPWEuZGF0YTtcbmE9Yi5kYXRhVHJhbnNmZXI7aWYoIWIuZGF0YVZhbHVlKXtmb3IodmFyIGI9W10sZD0wO2Q8YS5nZXRGaWxlc0NvdW50KCk7ZCsrKXt2YXIgYz1hLmdldEZpbGUoZCk7bChjKXx8Yi5wdXNoKGMudHlwZSl9bShiKX19fSxudWxsLG51bGwsMSk7YS5vbihcInBhc3RlXCIsZnVuY3Rpb24oYil7aWYocSYmYS5jb25maWcuY2xpcGJvYXJkX2hhbmRsZUltYWdlcyl7dmFyIGQ9Yi5kYXRhLGM9ZC5kYXRhVHJhbnNmZXI7aWYoIWQuZGF0YVZhbHVlJiZwKGIsYykmJihjPWMuZ2V0RmlsZSgwKSxoKGMpKSl7dmFyIGU9bmV3IEZpbGVSZWFkZXI7ZS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLGZ1bmN0aW9uKCl7Yi5kYXRhLmRhdGFWYWx1ZT0nXFx4M2NpbWcgc3JjXFx4M2RcIicrZS5yZXN1bHQrJ1wiIC9cXHgzZSc7YS5maXJlKFwicGFzdGVcIixiLmRhdGEpfSwhMSk7ZS5hZGRFdmVudExpc3RlbmVyKFwiYWJvcnRcIixmdW5jdGlvbigpe0NLRURJVE9SLmVudi5pZSYmKGIuZGF0YS5maWxlVHJhbnNmZXJDYW5jZWw9XG4hMCk7YS5maXJlKFwicGFzdGVcIixiLmRhdGEpfSwhMSk7ZS5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIixmdW5jdGlvbigpe0NLRURJVE9SLmVudi5pZSYmKGIuZGF0YS5maWxlVHJhbnNmZXJDYW5jZWw9ITApO2EuZmlyZShcInBhc3RlXCIsYi5kYXRhKX0sITEpO2UucmVhZEFzRGF0YVVSTChjKTtBPWQuZGF0YVRyYW5zZmVyLmlkO2Iuc3RvcCgpfX19LG51bGwsbnVsbCwxKTthLm9uKFwicGFzdGVcIixmdW5jdGlvbihiKXtiLmRhdGEuZGF0YVRyYW5zZmVyfHwoYi5kYXRhLmRhdGFUcmFuc2Zlcj1uZXcgQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZGF0YVRyYW5zZmVyKTtpZighYi5kYXRhLmRhdGFWYWx1ZSl7dmFyIGQ9Yi5kYXRhLmRhdGFUcmFuc2ZlcixjPWQuZ2V0RGF0YShcInRleHQvaHRtbFwiKTtpZihjKWIuZGF0YS5kYXRhVmFsdWU9YyxiLmRhdGEudHlwZT1cImh0bWxcIjtlbHNlIGlmKGM9ZC5nZXREYXRhKFwidGV4dC9wbGFpblwiKSliLmRhdGEuZGF0YVZhbHVlPWEuZWRpdGFibGUoKS50cmFuc2Zvcm1QbGFpblRleHRUb0h0bWwoYyksXG5iLmRhdGEudHlwZT1cInRleHRcIn19LG51bGwsbnVsbCwxKTthLm9uKFwicGFzdGVcIixmdW5jdGlvbihhKXt2YXIgYj1hLmRhdGEuZGF0YVZhbHVlLGQ9Q0tFRElUT1IuZHRkLiRibG9jazstMTxiLmluZGV4T2YoXCJBcHBsZS1cIikmJihiPWIucmVwbGFjZSgvPHNwYW4gY2xhc3M9XCJBcHBsZS1jb252ZXJ0ZWQtc3BhY2VcIj4mbmJzcDs8XFwvc3Bhbj4vZ2ksXCIgXCIpLFwiaHRtbFwiIT1hLmRhdGEudHlwZSYmKGI9Yi5yZXBsYWNlKC88c3BhbiBjbGFzcz1cIkFwcGxlLXRhYi1zcGFuXCJbXj5dKj4oW148XSopPFxcL3NwYW4+L2dpLGZ1bmN0aW9uKGEsYil7cmV0dXJuIGIucmVwbGFjZSgvXFx0L2csXCJcXHgyNm5ic3A7XFx4MjZuYnNwOyBcXHgyNm5ic3A7XCIpfSkpLC0xPGIuaW5kZXhPZignXFx4M2NiciBjbGFzc1xceDNkXCJBcHBsZS1pbnRlcmNoYW5nZS1uZXdsaW5lXCJcXHgzZScpJiYoYS5kYXRhLnN0YXJ0c1dpdGhFT0w9MSxhLmRhdGEucHJlU25pZmZpbmc9XCJodG1sXCIsYj1iLnJlcGxhY2UoLzxiciBjbGFzcz1cIkFwcGxlLWludGVyY2hhbmdlLW5ld2xpbmVcIj4vLFxuXCJcIikpLGI9Yi5yZXBsYWNlKC8oPFtePl0rKSBjbGFzcz1cIkFwcGxlLVteXCJdKlwiL2dpLFwiJDFcIikpO2lmKGIubWF0Y2goL148W148XStja2VfKGVkaXRhYmxlfGNvbnRlbnRzKS9pKSl7dmFyIGMsZSxnPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImRpdlwiKTtmb3IoZy5zZXRIdG1sKGIpOzE9PWcuZ2V0Q2hpbGRDb3VudCgpJiYoYz1nLmdldEZpcnN0KCkpJiZjLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKGMuaGFzQ2xhc3MoXCJja2VfZWRpdGFibGVcIil8fGMuaGFzQ2xhc3MoXCJja2VfY29udGVudHNcIikpOylnPWU9YztlJiYoYj1lLmdldEh0bWwoKS5yZXBsYWNlKC88YnI+JC9pLFwiXCIpKX1DS0VESVRPUi5lbnYuaWU/Yj1iLnJlcGxhY2UoL14mbmJzcDsoPzogfFxcclxcbik/PChcXHcrKS9nLGZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMudG9Mb3dlckNhc2UoKWluIGQ/KGEuZGF0YS5wcmVTbmlmZmluZz1cImh0bWxcIixcIlxceDNjXCIrYyk6Yn0pOkNLRURJVE9SLmVudi53ZWJraXQ/Yj1iLnJlcGxhY2UoLzxcXC8oXFx3Kyk+PGRpdj48YnI+PFxcL2Rpdj4kLyxcbmZ1bmN0aW9uKGIsYyl7cmV0dXJuIGMgaW4gZD8oYS5kYXRhLmVuZHNXaXRoRU9MPTEsXCJcXHgzYy9cIitjK1wiXFx4M2VcIik6Yn0pOkNLRURJVE9SLmVudi5nZWNrbyYmKGI9Yi5yZXBsYWNlKC8oXFxzKTxicj4kLyxcIiQxXCIpKTthLmRhdGEuZGF0YVZhbHVlPWJ9LG51bGwsbnVsbCwzKTthLm9uKFwicGFzdGVcIixmdW5jdGlvbihkKXtkPWQuZGF0YTt2YXIgYz1hLl8ubmV4dFBhc3RlVHlwZXx8ZC50eXBlLGY9ZC5kYXRhVmFsdWUsaCxsPWEuY29uZmlnLmNsaXBib2FyZF9kZWZhdWx0Q29udGVudFR5cGV8fFwiaHRtbFwiLG09ZC5kYXRhVHJhbnNmZXIuZ2V0VHJhbnNmZXJUeXBlKGEpPT1DS0VESVRPUi5EQVRBX1RSQU5TRkVSX0VYVEVSTkFMLG49ITA9PT1hLmNvbmZpZy5mb3JjZVBhc3RlQXNQbGFpblRleHQ7aD1cImh0bWxcIj09Y3x8XCJodG1sXCI9PWQucHJlU25pZmZpbmc/XCJodG1sXCI6ZShmKTtkZWxldGUgYS5fLm5leHRQYXN0ZVR5cGU7XCJodG1saWZpZWR0ZXh0XCI9PWgmJihmPWIoYS5jb25maWcsZikpO1xuaWYoXCJ0ZXh0XCI9PWMmJlwiaHRtbFwiPT1oKWY9ayhhLGYsei5nZXQoXCJwbGFpbi10ZXh0XCIpKTtlbHNlIGlmKG0mJmEucGFzdGVGaWx0ZXImJiFkLmRvbnRGaWx0ZXJ8fG4pZj1rKGEsZixhLnBhc3RlRmlsdGVyKTtkLnN0YXJ0c1dpdGhFT0wmJihmPSdcXHgzY2JyIGRhdGEtY2tlLWVvbFxceDNkXCIxXCJcXHgzZScrZik7ZC5lbmRzV2l0aEVPTCYmKGYrPSdcXHgzY2JyIGRhdGEtY2tlLWVvbFxceDNkXCIxXCJcXHgzZScpO1wiYXV0b1wiPT1jJiYoYz1cImh0bWxcIj09aHx8XCJodG1sXCI9PWw/XCJodG1sXCI6XCJ0ZXh0XCIpO2QudHlwZT1jO2QuZGF0YVZhbHVlPWY7ZGVsZXRlIGQucHJlU25pZmZpbmc7ZGVsZXRlIGQuc3RhcnRzV2l0aEVPTDtkZWxldGUgZC5lbmRzV2l0aEVPTH0sbnVsbCxudWxsLDYpO2Eub24oXCJwYXN0ZVwiLGZ1bmN0aW9uKGIpe2I9Yi5kYXRhO2IuZGF0YVZhbHVlJiYoYS5pbnNlcnRIdG1sKGIuZGF0YVZhbHVlLGIudHlwZSxiLnJhbmdlKSxzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5maXJlKFwiYWZ0ZXJQYXN0ZVwiKX0sXG4wKSl9LG51bGwsbnVsbCwxRTMpO2Eub24oXCJwYXN0ZURpYWxvZ1wiLGZ1bmN0aW9uKGIpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm9wZW5EaWFsb2coXCJwYXN0ZVwiLGIuZGF0YSl9LDApfSl9fSk7Q0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQ9e2FkZEZpbGVNYXRjaGVyOmZ1bmN0aW9uKGEsYil7YS5wbHVnaW5zLmNsaXBib2FyZC5fc3VwcG9ydGVkRmlsZU1hdGNoZXJzLnB1c2goYil9LGlzQ3VzdG9tQ29weUN1dFN1cHBvcnRlZDpDS0VESVRPUi5lbnYuaWUmJjE2PkNLRURJVE9SLmVudi52ZXJzaW9ufHxDS0VESVRPUi5lbnYuaU9TJiY2MDU+Q0tFRElUT1IuZW52LnZlcnNpb24/ITE6ITAsaXNDdXN0b21EYXRhVHlwZXNTdXBwb3J0ZWQ6IUNLRURJVE9SLmVudi5pZXx8MTY8PUNLRURJVE9SLmVudi52ZXJzaW9uLGlzRmlsZUFwaVN1cHBvcnRlZDohQ0tFRElUT1IuZW52LmllfHw5PENLRURJVE9SLmVudi52ZXJzaW9uLG1haW5QYXN0ZUV2ZW50OkNLRURJVE9SLmVudi5pZSYmIUNLRURJVE9SLmVudi5lZGdlP1xuXCJiZWZvcmVwYXN0ZVwiOlwicGFzdGVcIixhZGRQYXN0ZUJ1dHRvbjpmdW5jdGlvbihhLGIsZCl7YS51aS5hZGRCdXR0b24mJihhLnVpLmFkZEJ1dHRvbihiLGQpLGEuXy5wYXN0ZUJ1dHRvbnN8fChhLl8ucGFzdGVCdXR0b25zPVtdKSxhLl8ucGFzdGVCdXR0b25zLnB1c2goYikpfSxjYW5DbGlwYm9hcmRBcGlCZVRydXN0ZWQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5nZXRUcmFuc2ZlclR5cGUoYikhPUNLRURJVE9SLkRBVEFfVFJBTlNGRVJfRVhURVJOQUx8fENLRURJVE9SLmVudi5jaHJvbWUmJiFhLmlzRW1wdHkoKXx8Q0tFRElUT1IuZW52LmdlY2tvJiYoYS5nZXREYXRhKFwidGV4dC9odG1sXCIpfHxhLmdldEZpbGVzQ291bnQoKSl8fENLRURJVE9SLmVudi5zYWZhcmkmJjYwMzw9Q0tFRElUT1IuZW52LnZlcnNpb24mJiFDS0VESVRPUi5lbnYuaU9TfHxDS0VESVRPUi5lbnYuaU9TJiY2MDU8PUNLRURJVE9SLmVudi52ZXJzaW9ufHxDS0VESVRPUi5lbnYuZWRnZSYmMTY8PUNLRURJVE9SLmVudi52ZXJzaW9uP1xuITA6ITF9LGdldERyb3BUYXJnZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5lZGl0YWJsZSgpO3JldHVybiBDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb258fGIuaXNJbmxpbmUoKT9iOmEuZG9jdW1lbnR9LGZpeFNwbGl0Tm9kZXNBZnRlckRyb3A6ZnVuY3Rpb24oYSxiLGQsYyl7ZnVuY3Rpb24gZShhLGQsYyl7dmFyIGc9YTtnLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVCYmKGc9YS5nZXRQYXJlbnQoKSk7aWYoZy5lcXVhbHMoZCkmJmMhPWQuZ2V0Q2hpbGRDb3VudCgpKXJldHVybiBhPWIuc3RhcnRDb250YWluZXIuZ2V0Q2hpbGQoYi5zdGFydE9mZnNldC0xKSxkPWIuc3RhcnRDb250YWluZXIuZ2V0Q2hpbGQoYi5zdGFydE9mZnNldCksYSYmYS50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJmQmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUJiYoYz1hLmdldExlbmd0aCgpLGEuc2V0VGV4dChhLmdldFRleHQoKStkLmdldFRleHQoKSksZC5yZW1vdmUoKSxiLnNldFN0YXJ0KGEsXG5jKSxiLmNvbGxhcHNlKCEwKSksITB9dmFyIGY9Yi5zdGFydENvbnRhaW5lcjtcIm51bWJlclwiPT10eXBlb2YgYyYmXCJudW1iZXJcIj09dHlwZW9mIGQmJmYudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoZShhLnN0YXJ0Q29udGFpbmVyLGYsZCl8fGUoYS5lbmRDb250YWluZXIsZixjKSl9LGlzRHJvcFJhbmdlQWZmZWN0ZWRCeURyYWdSYW5nZTpmdW5jdGlvbihhLGIpe3ZhciBkPWIuc3RhcnRDb250YWluZXIsYz1iLmVuZE9mZnNldDtyZXR1cm4gYS5lbmRDb250YWluZXIuZXF1YWxzKGQpJiZhLmVuZE9mZnNldDw9Y3x8YS5zdGFydENvbnRhaW5lci5nZXRQYXJlbnQoKS5lcXVhbHMoZCkmJmEuc3RhcnRDb250YWluZXIuZ2V0SW5kZXgoKTxjfHxhLmVuZENvbnRhaW5lci5nZXRQYXJlbnQoKS5lcXVhbHMoZCkmJmEuZW5kQ29udGFpbmVyLmdldEluZGV4KCk8Yz8hMDohMX0saW50ZXJuYWxEcm9wOmZ1bmN0aW9uKGIsZCxjLGUpe3ZhciBmPUNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLFxuaD1lLmVkaXRhYmxlKCksayxsO2UuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtlLmZpcmUoXCJsb2NrU25hcHNob3RcIix7ZG9udFVwZGF0ZToxfSk7Q0tFRElUT1IuZW52LmllJiYxMD5DS0VESVRPUi5lbnYudmVyc2lvbiYmdGhpcy5maXhTcGxpdE5vZGVzQWZ0ZXJEcm9wKGIsZCxmLmRyYWdTdGFydENvbnRhaW5lckNoaWxkQ291bnQsZi5kcmFnRW5kQ29udGFpbmVyQ2hpbGRDb3VudCk7KGw9dGhpcy5pc0Ryb3BSYW5nZUFmZmVjdGVkQnlEcmFnUmFuZ2UoYixkKSl8fChrPWIuY3JlYXRlQm9va21hcmsoITEpKTtmPWQuY2xvbmUoKS5jcmVhdGVCb29rbWFyayghMSk7bCYmKGs9Yi5jcmVhdGVCb29rbWFyayghMSkpO2I9ay5zdGFydE5vZGU7ZD1rLmVuZE5vZGU7bD1mLnN0YXJ0Tm9kZTtkJiZiLmdldFBvc2l0aW9uKGwpJkNLRURJVE9SLlBPU0lUSU9OX1BSRUNFRElORyYmZC5nZXRQb3NpdGlvbihsKSZDS0VESVRPUi5QT1NJVElPTl9GT0xMT1dJTkcmJmwuaW5zZXJ0QmVmb3JlKGIpO2I9ZS5jcmVhdGVSYW5nZSgpO1xuYi5tb3ZlVG9Cb29rbWFyayhrKTtoLmV4dHJhY3RIdG1sRnJvbVJhbmdlKGIsMSk7ZD1lLmNyZWF0ZVJhbmdlKCk7Zi5zdGFydE5vZGUuZ2V0Q29tbW9uQW5jZXN0b3IoaCl8fChmPWUuZ2V0U2VsZWN0aW9uKCkuY3JlYXRlQm9va21hcmtzKClbMF0pO2QubW92ZVRvQm9va21hcmsoZik7YShlLHtkYXRhVHJhbnNmZXI6YyxtZXRob2Q6XCJkcm9wXCIscmFuZ2U6ZH0sMSk7ZS5maXJlKFwidW5sb2NrU25hcHNob3RcIil9LGdldFJhbmdlQXREcm9wUG9zaXRpb246ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLmRhdGEuJCxjPWQuY2xpZW50WCxlPWQuY2xpZW50WSxmPWIuZ2V0U2VsZWN0aW9uKCEwKS5nZXRSYW5nZXMoKVswXSxoPWIuY3JlYXRlUmFuZ2UoKTtpZihhLmRhdGEudGVzdFJhbmdlKXJldHVybiBhLmRhdGEudGVzdFJhbmdlO2lmKGRvY3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQmJmIuZG9jdW1lbnQuJC5jYXJldFJhbmdlRnJvbVBvaW50KGMsZSkpZD1iLmRvY3VtZW50LiQuY2FyZXRSYW5nZUZyb21Qb2ludChjLFxuZSksaC5zZXRTdGFydChDS0VESVRPUi5kb20ubm9kZShkLnN0YXJ0Q29udGFpbmVyKSxkLnN0YXJ0T2Zmc2V0KSxoLmNvbGxhcHNlKCEwKTtlbHNlIGlmKGQucmFuZ2VQYXJlbnQpaC5zZXRTdGFydChDS0VESVRPUi5kb20ubm9kZShkLnJhbmdlUGFyZW50KSxkLnJhbmdlT2Zmc2V0KSxoLmNvbGxhcHNlKCEwKTtlbHNle2lmKENLRURJVE9SLmVudi5pZSYmODxDS0VESVRPUi5lbnYudmVyc2lvbiYmZiYmYi5lZGl0YWJsZSgpLmhhc0ZvY3VzKXJldHVybiBmO2lmKGRvY3VtZW50LmJvZHkuY3JlYXRlVGV4dFJhbmdlKXtiLmZvY3VzKCk7ZD1iLmRvY3VtZW50LmdldEJvZHkoKS4kLmNyZWF0ZVRleHRSYW5nZSgpO3RyeXtmb3IodmFyIGs9ITEsbD0wOzIwPmwmJiFrO2wrKyl7aWYoIWspdHJ5e2QubW92ZVRvUG9pbnQoYyxlLWwpLGs9ITB9Y2F0Y2gobSl7fWlmKCFrKXRyeXtkLm1vdmVUb1BvaW50KGMsZStsKSxrPSEwfWNhdGNoKHkpe319aWYoayl7dmFyIHQ9XCJja2UtdGVtcC1cIisobmV3IERhdGUpLmdldFRpbWUoKTtcbmQucGFzdGVIVE1MKCdcXHgzY3NwYW4gaWRcXHgzZFwiJyt0KydcIlxceDNl4oCLXFx4M2Mvc3BhblxceDNlJyk7dmFyIHY9Yi5kb2N1bWVudC5nZXRCeUlkKHQpO2gubW92ZVRvUG9zaXRpb24odixDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpO3YucmVtb3ZlKCl9ZWxzZXt2YXIgQj1iLmRvY3VtZW50LiQuZWxlbWVudEZyb21Qb2ludChjLGUpLEQ9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KEIpLEM7aWYoRC5lcXVhbHMoYi5lZGl0YWJsZSgpKXx8XCJodG1sXCI9PUQuZ2V0TmFtZSgpKXJldHVybiBmJiZmLnN0YXJ0Q29udGFpbmVyJiYhZi5zdGFydENvbnRhaW5lci5lcXVhbHMoYi5lZGl0YWJsZSgpKT9mOm51bGw7Qz1ELmdldENsaWVudFJlY3QoKTtjPEMubGVmdD9oLnNldFN0YXJ0QXQoRCxDS0VESVRPUi5QT1NJVElPTl9BRlRFUl9TVEFSVCk6aC5zZXRTdGFydEF0KEQsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7aC5jb2xsYXBzZSghMCl9fWNhdGNoKEYpe3JldHVybiBudWxsfX1lbHNlIHJldHVybiBudWxsfXJldHVybiBofSxcbmluaXREcmFnRGF0YVRyYW5zZmVyOmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5kYXRhLiQ/YS5kYXRhLiQuZGF0YVRyYW5zZmVyOm51bGwsYz1uZXcgdGhpcy5kYXRhVHJhbnNmZXIoZCxiKTtcImRyYWdzdGFydFwiPT09YS5uYW1lJiZjLnN0b3JlSWQoKTtkP3RoaXMuZHJhZ0RhdGEmJmMuaWQ9PXRoaXMuZHJhZ0RhdGEuaWQ/Yz10aGlzLmRyYWdEYXRhOnRoaXMuZHJhZ0RhdGE9Yzp0aGlzLmRyYWdEYXRhP2M9dGhpcy5kcmFnRGF0YTp0aGlzLmRyYWdEYXRhPWM7YS5kYXRhLmRhdGFUcmFuc2Zlcj1jfSxyZXNldERyYWdEYXRhVHJhbnNmZXI6ZnVuY3Rpb24oKXt0aGlzLmRyYWdEYXRhPW51bGx9LGluaXRQYXN0ZURhdGFUcmFuc2ZlcjpmdW5jdGlvbihhLGIpe2lmKHRoaXMuaXNDdXN0b21Db3B5Q3V0U3VwcG9ydGVkKXtpZihhJiZhLmRhdGEmJmEuZGF0YS4kKXt2YXIgZD1hLmRhdGEuJC5jbGlwYm9hcmREYXRhLGM9bmV3IHRoaXMuZGF0YVRyYW5zZmVyKGQsYik7XCJjb3B5XCIhPT1hLm5hbWUmJlxuXCJjdXRcIiE9PWEubmFtZXx8Yy5zdG9yZUlkKCk7dGhpcy5jb3B5Q3V0RGF0YSYmYy5pZD09dGhpcy5jb3B5Q3V0RGF0YS5pZD8oYz10aGlzLmNvcHlDdXREYXRhLGMuJD1kKTp0aGlzLmNvcHlDdXREYXRhPWM7cmV0dXJuIGN9cmV0dXJuIG5ldyB0aGlzLmRhdGFUcmFuc2ZlcihudWxsLGIpfXJldHVybiBuZXcgdGhpcy5kYXRhVHJhbnNmZXIoQ0tFRElUT1IuZW52LmVkZ2UmJmEmJmEuZGF0YS4kJiZhLmRhdGEuJC5jbGlwYm9hcmREYXRhfHxudWxsLGIpfSxwcmV2ZW50RGVmYXVsdERyb3BPbkVsZW1lbnQ6ZnVuY3Rpb24oYSl7YSYmYS5vbihcImRyYWdvdmVyXCIsbSl9fTtoPUNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzQ3VzdG9tRGF0YVR5cGVzU3VwcG9ydGVkP1wiY2tlL2lkXCI6XCJUZXh0XCI7Q0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZGF0YVRyYW5zZmVyPWZ1bmN0aW9uKGEsYil7YSYmKHRoaXMuJD1hKTt0aGlzLl89e21ldGFSZWdFeHA6L148bWV0YS4qPz4vaSxmcmFnbWVudFJlZ0V4cDovXFxzKlxceDNjIS0tU3RhcnRGcmFnbWVudC0tXFx4M2V8XFx4M2MhLS1FbmRGcmFnbWVudC0tXFx4M2VcXHMqL2csXG50eXBlczpbXSxkYXRhOnt9LGZpbGVzOltdLG5hdGl2ZUh0bWxDYWNoZTpcIlwiLG5vcm1hbGl6ZVR5cGU6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7cmV0dXJuXCJ0ZXh0XCI9PWF8fFwidGV4dC9wbGFpblwiPT1hP1wiVGV4dFwiOlwidXJsXCI9PWE/XCJVUkxcIjpcImZpbGVzXCI9PT1hP1wiRmlsZXNcIjphfX07dGhpcy5fLmZhbGxiYWNrRGF0YVRyYW5zZmVyPW5ldyBDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5mYWxsYmFja0RhdGFUcmFuc2Zlcih0aGlzKTt0aGlzLmlkPXRoaXMuZ2V0RGF0YShoKTt0aGlzLmlkfHwodGhpcy5pZD1cIlRleHRcIj09aD9cIlwiOlwiY2tlLVwiK0NLRURJVE9SLnRvb2xzLmdldFVuaXF1ZUlkKCkpO2ImJih0aGlzLnNvdXJjZUVkaXRvcj1iLHRoaXMuc2V0RGF0YShcInRleHQvaHRtbFwiLGIuZ2V0U2VsZWN0ZWRIdG1sKDEpKSxcIlRleHRcIj09aHx8dGhpcy5nZXREYXRhKFwidGV4dC9wbGFpblwiKXx8dGhpcy5zZXREYXRhKFwidGV4dC9wbGFpblwiLGIuZ2V0U2VsZWN0aW9uKCkuZ2V0U2VsZWN0ZWRUZXh0KCkpKX07XG5DS0VESVRPUi5EQVRBX1RSQU5TRkVSX0lOVEVSTkFMPTE7Q0tFRElUT1IuREFUQV9UUkFOU0ZFUl9DUk9TU19FRElUT1JTPTI7Q0tFRElUT1IuREFUQV9UUkFOU0ZFUl9FWFRFUk5BTD0zO0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmRhdGFUcmFuc2Zlci5wcm90b3R5cGU9e2dldERhdGE6ZnVuY3Rpb24oYSxiKXthPXRoaXMuXy5ub3JtYWxpemVUeXBlKGEpO3ZhciBkPVwidGV4dC9odG1sXCI9PWEmJmI/dGhpcy5fLm5hdGl2ZUh0bWxDYWNoZTp0aGlzLl8uZGF0YVthXTtpZih2b2lkIDA9PT1kfHxudWxsPT09ZHx8XCJcIj09PWQpe2lmKHRoaXMuXy5mYWxsYmFja0RhdGFUcmFuc2Zlci5pc1JlcXVpcmVkKCkpZD10aGlzLl8uZmFsbGJhY2tEYXRhVHJhbnNmZXIuZ2V0RGF0YShhLGIpO2Vsc2UgdHJ5e2Q9dGhpcy4kLmdldERhdGEoYSl8fFwiXCJ9Y2F0Y2goYyl7ZD1cIlwifVwidGV4dC9odG1sXCIhPWF8fGJ8fChkPXRoaXMuX3N0cmlwSHRtbChkKSl9XCJUZXh0XCI9PWEmJkNLRURJVE9SLmVudi5nZWNrbyYmXG50aGlzLmdldEZpbGVzQ291bnQoKSYmXCJmaWxlOi8vXCI9PWQuc3Vic3RyaW5nKDAsNykmJihkPVwiXCIpO2lmKFwic3RyaW5nXCI9PT10eXBlb2YgZCl2YXIgZT1kLmluZGV4T2YoXCJcXHgzYy9odG1sXFx4M2VcIiksZD0tMSE9PWU/ZC5zdWJzdHJpbmcoMCxlKzcpOmQ7cmV0dXJuIGR9LHNldERhdGE6ZnVuY3Rpb24oYSxiKXthPXRoaXMuXy5ub3JtYWxpemVUeXBlKGEpO1widGV4dC9odG1sXCI9PWE/KHRoaXMuXy5kYXRhW2FdPXRoaXMuX3N0cmlwSHRtbChiKSx0aGlzLl8ubmF0aXZlSHRtbENhY2hlPWIpOnRoaXMuXy5kYXRhW2FdPWI7aWYoQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuaXNDdXN0b21EYXRhVHlwZXNTdXBwb3J0ZWR8fFwiVVJMXCI9PWF8fFwiVGV4dFwiPT1hKWlmKFwiVGV4dFwiPT1oJiZcIlRleHRcIj09YSYmKHRoaXMuaWQ9YiksdGhpcy5fLmZhbGxiYWNrRGF0YVRyYW5zZmVyLmlzUmVxdWlyZWQoKSl0aGlzLl8uZmFsbGJhY2tEYXRhVHJhbnNmZXIuc2V0RGF0YShhLGIpO2Vsc2UgdHJ5e3RoaXMuJC5zZXREYXRhKGEsXG5iKX1jYXRjaChkKXt9fSxzdG9yZUlkOmZ1bmN0aW9uKCl7XCJUZXh0XCIhPT1oJiZ0aGlzLnNldERhdGEoaCx0aGlzLmlkKX0sZ2V0VHJhbnNmZXJUeXBlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnNvdXJjZUVkaXRvcj90aGlzLnNvdXJjZUVkaXRvcj09YT9DS0VESVRPUi5EQVRBX1RSQU5TRkVSX0lOVEVSTkFMOkNLRURJVE9SLkRBVEFfVFJBTlNGRVJfQ1JPU1NfRURJVE9SUzpDS0VESVRPUi5EQVRBX1RSQU5TRkVSX0VYVEVSTkFMfSxjYWNoZURhdGE6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGQpe2Q9Yi5fLm5vcm1hbGl6ZVR5cGUoZCk7dmFyIGM9Yi5nZXREYXRhKGQpO1widGV4dC9odG1sXCI9PWQmJihiLl8ubmF0aXZlSHRtbENhY2hlPWIuZ2V0RGF0YShkLCEwKSxjPWIuX3N0cmlwSHRtbChjKSk7YyYmKGIuXy5kYXRhW2RdPWMpO2IuXy50eXBlcy5wdXNoKGQpfWlmKHRoaXMuJCl7dmFyIGI9dGhpcyxkLGMsZTtpZihDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5pc0N1c3RvbURhdGFUeXBlc1N1cHBvcnRlZCl7aWYodGhpcy4kLnR5cGVzKWZvcihkPVxuMDtkPHRoaXMuJC50eXBlcy5sZW5ndGg7ZCsrKWEodGhpcy4kLnR5cGVzW2RdKX1lbHNlIGEoXCJUZXh0XCIpLGEoXCJVUkxcIik7Yz10aGlzLl9nZXRJbWFnZUZyb21DbGlwYm9hcmQoKTtpZigoZT10aGlzLiQmJnRoaXMuJC5maWxlc3x8bnVsbCl8fGMpe3RoaXMuXy5maWxlcz1bXTtpZihlJiZlLmxlbmd0aClmb3IoZD0wO2Q8ZS5sZW5ndGg7ZCsrKXRoaXMuXy5maWxlcy5wdXNoKGVbZF0pOzA9PT10aGlzLl8uZmlsZXMubGVuZ3RoJiZjJiZ0aGlzLl8uZmlsZXMucHVzaChjKX19fSxnZXRGaWxlc0NvdW50OmZ1bmN0aW9uKCl7aWYodGhpcy5fLmZpbGVzLmxlbmd0aClyZXR1cm4gdGhpcy5fLmZpbGVzLmxlbmd0aDt2YXIgYT10aGlzLiQmJnRoaXMuJC5maWxlc3x8bnVsbDtyZXR1cm4gYSYmYS5sZW5ndGg/YS5sZW5ndGg6dGhpcy5fZ2V0SW1hZ2VGcm9tQ2xpcGJvYXJkKCk/MTowfSxnZXRGaWxlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuXy5maWxlcy5sZW5ndGgpcmV0dXJuIHRoaXMuXy5maWxlc1thXTtcbnZhciBiPXRoaXMuJCYmdGhpcy4kLmZpbGVzfHxudWxsO3JldHVybiBiJiZiLmxlbmd0aD9iW2FdOjA9PT1hP3RoaXMuX2dldEltYWdlRnJvbUNsaXBib2FyZCgpOnZvaWQgMH0saXNGaWxlVHJhbnNmZXI6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmdldFR5cGVzKCksYT1DS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoYSxmdW5jdGlvbihhKXtyZXR1cm5cImFwcGxpY2F0aW9uL3gtbW96LWZpbGVcIiE9PWF9KTtyZXR1cm4gMT09PWEubGVuZ3RoJiZcImZpbGVzXCI9PT1hWzBdLnRvTG93ZXJDYXNlKCl9LGlzRW1wdHk6ZnVuY3Rpb24oKXt2YXIgYT17fSxiO2lmKHRoaXMuZ2V0RmlsZXNDb3VudCgpKXJldHVybiExO0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goQ0tFRElUT1IudG9vbHMub2JqZWN0LmtleXModGhpcy5fLmRhdGEpLGZ1bmN0aW9uKGIpe2FbYl09MX0pO2lmKHRoaXMuJClpZihDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5pc0N1c3RvbURhdGFUeXBlc1N1cHBvcnRlZCl7aWYodGhpcy4kLnR5cGVzKWZvcih2YXIgZD1cbjA7ZDx0aGlzLiQudHlwZXMubGVuZ3RoO2QrKylhW3RoaXMuJC50eXBlc1tkXV09MX1lbHNlIGEuVGV4dD0xLGEuVVJMPTE7XCJUZXh0XCIhPWgmJihhW2hdPTApO2ZvcihiIGluIGEpaWYoYVtiXSYmXCJcIiE9PXRoaXMuZ2V0RGF0YShiKSlyZXR1cm4hMTtyZXR1cm4hMH0sZ2V0VHlwZXM6ZnVuY3Rpb24oKXtyZXR1cm4gMDx0aGlzLl8udHlwZXMubGVuZ3RoP3RoaXMuXy50eXBlczp0aGlzLiQmJnRoaXMuJC50eXBlcz9bXS5zbGljZS5jYWxsKHRoaXMuJC50eXBlcyk6W119LF9nZXRJbWFnZUZyb21DbGlwYm9hcmQ6ZnVuY3Rpb24oKXt2YXIgYTt0cnl7aWYodGhpcy4kJiZ0aGlzLiQuaXRlbXMmJnRoaXMuJC5pdGVtc1swXSYmKGE9dGhpcy4kLml0ZW1zWzBdLmdldEFzRmlsZSgpKSYmYS50eXBlKXJldHVybiBhfWNhdGNoKGIpe319LF9zdHJpcEh0bWw6ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYihhKXt2YXIgZD1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlcixjLGU7ZC5vblRhZ09wZW49ZnVuY3Rpb24oYSl7XCJib2R5XCI9PT1cbmEmJihjPWQuXy5odG1sUGFydHNSZWdleC5sYXN0SW5kZXgpfTtkLm9uVGFnQ2xvc2U9ZnVuY3Rpb24oYSl7XCJib2R5XCI9PT1hJiYoZT1kLl8uaHRtbFBhcnRzUmVnZXgubGFzdEluZGV4KX07ZC5wYXJzZShhKTtyZXR1cm5cIm51bWJlclwiIT09dHlwZW9mIGN8fFwibnVtYmVyXCIhPT10eXBlb2YgZT9hOmEuc3Vic3RyaW5nKGMsZSkucmVwbGFjZSgvPFxcL2JvZHlcXHMqPiQvZ2ksXCJcIil9YSYmYS5sZW5ndGgmJihhPWIoYSksYT1hLnJlcGxhY2UodGhpcy5fLm1ldGFSZWdFeHAsXCJcIiksYT1hLnJlcGxhY2UodGhpcy5fLmZyYWdtZW50UmVnRXhwLFwiXCIpKTtyZXR1cm4gYX19O0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmZhbGxiYWNrRGF0YVRyYW5zZmVyPWZ1bmN0aW9uKGEpe3RoaXMuX2RhdGFUcmFuc2Zlcj1hO3RoaXMuX2N1c3RvbURhdGFGYWxsYmFja1R5cGU9XCJ0ZXh0L2h0bWxcIn07Q0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZmFsbGJhY2tEYXRhVHJhbnNmZXIuX2lzQ3VzdG9tTWltZVR5cGVTdXBwb3J0ZWQ9XG5udWxsO0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmZhbGxiYWNrRGF0YVRyYW5zZmVyLl9jdXN0b21UeXBlcz1bXTtDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5mYWxsYmFja0RhdGFUcmFuc2Zlci5wcm90b3R5cGU9e2lzUmVxdWlyZWQ6ZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5mYWxsYmFja0RhdGFUcmFuc2ZlcixiPXRoaXMuX2RhdGFUcmFuc2Zlci4kO2lmKG51bGw9PT1hLl9pc0N1c3RvbU1pbWVUeXBlU3VwcG9ydGVkKWlmKGIpe2EuX2lzQ3VzdG9tTWltZVR5cGVTdXBwb3J0ZWQ9ITE7aWYoQ0tFRElUT1IuZW52LmVkZ2UmJjE3PD1DS0VESVRPUi5lbnYudmVyc2lvbilyZXR1cm4hMDt0cnl7Yi5zZXREYXRhKFwiY2tlL21pbWV0eXBldGVzdFwiLFwiY2tlIHRlc3QgdmFsdWVcIiksYS5faXNDdXN0b21NaW1lVHlwZVN1cHBvcnRlZD1cImNrZSB0ZXN0IHZhbHVlXCI9PT1iLmdldERhdGEoXCJja2UvbWltZXR5cGV0ZXN0XCIpLGIuY2xlYXJEYXRhKFwiY2tlL21pbWV0eXBldGVzdFwiKX1jYXRjaChkKXt9fWVsc2UgcmV0dXJuITE7XG5yZXR1cm4hYS5faXNDdXN0b21NaW1lVHlwZVN1cHBvcnRlZH0sZ2V0RGF0YTpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuX2dldERhdGEodGhpcy5fY3VzdG9tRGF0YUZhbGxiYWNrVHlwZSwhMCk7aWYoYilyZXR1cm4gZDt2YXIgZD10aGlzLl9leHRyYWN0RGF0YUNvbW1lbnQoZCksYz1udWxsLGM9YT09PXRoaXMuX2N1c3RvbURhdGFGYWxsYmFja1R5cGU/ZC5jb250ZW50OmQuZGF0YSYmZC5kYXRhW2FdP2QuZGF0YVthXTp0aGlzLl9nZXREYXRhKGEsITApO3JldHVybiBudWxsIT09Yz9jOlwiXCJ9LHNldERhdGE6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hPT09dGhpcy5fY3VzdG9tRGF0YUZhbGxiYWNrVHlwZTtkJiYoYj10aGlzLl9hcHBseURhdGFDb21tZW50KGIsdGhpcy5fZ2V0RmFsbGJhY2tUeXBlRGF0YSgpKSk7dmFyIGM9YixlPXRoaXMuX2RhdGFUcmFuc2Zlci4kO3RyeXtlLnNldERhdGEoYSxjKSxkJiYodGhpcy5fZGF0YVRyYW5zZmVyLl8ubmF0aXZlSHRtbENhY2hlPWMpfWNhdGNoKGYpe2lmKHRoaXMuX2lzVW5zdXBwb3J0ZWRNaW1lVHlwZUVycm9yKGYpKXtkPVxuQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZmFsbGJhY2tEYXRhVHJhbnNmZXI7LTE9PT1DS0VESVRPUi50b29scy5pbmRleE9mKGQuX2N1c3RvbVR5cGVzLGEpJiZkLl9jdXN0b21UeXBlcy5wdXNoKGEpO3ZhciBkPXRoaXMuX2dldEZhbGxiYWNrVHlwZUNvbnRlbnQoKSxoPXRoaXMuX2dldEZhbGxiYWNrVHlwZURhdGEoKTtoW2FdPWM7dHJ5e2M9dGhpcy5fYXBwbHlEYXRhQ29tbWVudChkLGgpLGUuc2V0RGF0YSh0aGlzLl9jdXN0b21EYXRhRmFsbGJhY2tUeXBlLGMpLHRoaXMuX2RhdGFUcmFuc2Zlci5fLm5hdGl2ZUh0bWxDYWNoZT1jfWNhdGNoKGspe2M9XCJcIn19fXJldHVybiBjfSxfZ2V0RGF0YTpmdW5jdGlvbihhLGIpe3ZhciBkPXRoaXMuX2RhdGFUcmFuc2Zlci5fLmRhdGE7aWYoIWImJmRbYV0pcmV0dXJuIGRbYV07dHJ5e3JldHVybiB0aGlzLl9kYXRhVHJhbnNmZXIuJC5nZXREYXRhKGEpfWNhdGNoKGMpe3JldHVybiBudWxsfX0sX2dldEZhbGxiYWNrVHlwZUNvbnRlbnQ6ZnVuY3Rpb24oKXt2YXIgYT1cbnRoaXMuX2RhdGFUcmFuc2Zlci5fLmRhdGFbdGhpcy5fY3VzdG9tRGF0YUZhbGxiYWNrVHlwZV07YXx8KGE9dGhpcy5fZXh0cmFjdERhdGFDb21tZW50KHRoaXMuX2dldERhdGEodGhpcy5fY3VzdG9tRGF0YUZhbGxiYWNrVHlwZSwhMCkpLmNvbnRlbnQpO3JldHVybiBhfSxfZ2V0RmFsbGJhY2tUeXBlRGF0YTpmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmZhbGxiYWNrRGF0YVRyYW5zZmVyLl9jdXN0b21UeXBlcyxiPXRoaXMuX2V4dHJhY3REYXRhQ29tbWVudCh0aGlzLl9nZXREYXRhKHRoaXMuX2N1c3RvbURhdGFGYWxsYmFja1R5cGUsITApKS5kYXRhfHx7fSxkPXRoaXMuX2RhdGFUcmFuc2Zlci5fLmRhdGE7Q0tFRElUT1IudG9vbHMuYXJyYXkuZm9yRWFjaChhLGZ1bmN0aW9uKGEpe3ZvaWQgMCE9PWRbYV0/YlthXT1kW2FdOnZvaWQgMCE9PWJbYV0mJihiW2FdPWJbYV0pfSx0aGlzKTtyZXR1cm4gYn0sX2lzVW5zdXBwb3J0ZWRNaW1lVHlwZUVycm9yOmZ1bmN0aW9uKGEpe3JldHVybiBhLm1lc3NhZ2UmJlxuLTEhPT1hLm1lc3NhZ2Uuc2VhcmNoKC9lbGVtZW50IG5vdCBmb3VuZC9naSl9LF9leHRyYWN0RGF0YUNvbW1lbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9e2RhdGE6bnVsbCxjb250ZW50OmF8fFwiXCJ9O2lmKGEmJjE2PGEubGVuZ3RoKXt2YXIgZDsoZD0vXFx4M2MhLS1ja2UtZGF0YTooLio/KS0tXFx4M2UvZy5leGVjKGEpKSYmZFsxXSYmKGIuZGF0YT1KU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChkWzFdKSksYi5jb250ZW50PWEucmVwbGFjZShkWzBdLFwiXCIpKX1yZXR1cm4gYn0sX2FwcGx5RGF0YUNvbW1lbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD1cIlwiO2ImJkNLRURJVE9SLnRvb2xzLm9iamVjdC5rZXlzKGIpLmxlbmd0aCYmKGQ9XCJcXHgzYyEtLWNrZS1kYXRhOlwiK2VuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShiKSkrXCItLVxceDNlXCIpO3JldHVybiBkKyhhJiZhLmxlbmd0aD9hOlwiXCIpfX19KCksQ0tFRElUT1IuY29uZmlnLmNsaXBib2FyZF9ub3RpZmljYXRpb25EdXJhdGlvbj1cbjFFNCxDS0VESVRPUi5jb25maWcuY2xpcGJvYXJkX2hhbmRsZUltYWdlcz0hMCxmdW5jdGlvbigpe0NLRURJVE9SLnBsdWdpbnMuYWRkKFwicGFuZWxcIix7YmVmb3JlSW5pdDpmdW5jdGlvbihhKXthLnVpLmFkZEhhbmRsZXIoQ0tFRElUT1IuVUlfUEFORUwsQ0tFRElUT1IudWkucGFuZWwuaGFuZGxlcil9fSk7Q0tFRElUT1IuVUlfUEFORUw9XCJwYW5lbFwiO0NLRURJVE9SLnVpLnBhbmVsPWZ1bmN0aW9uKGEsYyl7YyYmQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsYyk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMse2NsYXNzTmFtZTpcIlwiLGNzczpbXX0pO3RoaXMuaWQ9Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCk7dGhpcy5kb2N1bWVudD1hO3RoaXMuaXNGcmFtZWQ9dGhpcy5mb3JjZUlGcmFtZXx8dGhpcy5jc3MubGVuZ3RoO3RoaXMuXz17YmxvY2tzOnt9fX07Q0tFRElUT1IudWkucGFuZWwuaGFuZGxlcj17Y3JlYXRlOmZ1bmN0aW9uKGEpe3JldHVybiBuZXcgQ0tFRElUT1IudWkucGFuZWwoYSl9fTtcbnZhciBhPUNLRURJVE9SLmFkZFRlbXBsYXRlKFwicGFuZWxcIiwnXFx4M2NkaXYgbGFuZ1xceDNkXCJ7bGFuZ0NvZGV9XCIgaWRcXHgzZFwie2lkfVwiIGRpclxceDNke2Rpcn0gY2xhc3NcXHgzZFwiY2tlIGNrZV9yZXNldF9hbGwge2VkaXRvcklkfSBja2VfcGFuZWwgY2tlX3BhbmVsIHtjbHN9IGNrZV97ZGlyfVwiIHN0eWxlXFx4M2RcInotaW5kZXg6e3otaW5kZXh9XCIgcm9sZVxceDNkXCJwcmVzZW50YXRpb25cIlxceDNle2ZyYW1lfVxceDNjL2RpdlxceDNlJyksZj1DS0VESVRPUi5hZGRUZW1wbGF0ZShcInBhbmVsLWZyYW1lXCIsJ1xceDNjaWZyYW1lIGlkXFx4M2RcIntpZH1cIiBjbGFzc1xceDNkXCJja2VfcGFuZWxfZnJhbWVcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiIGZyYW1lYm9yZGVyXFx4M2RcIjBcIiBzcmNcXHgzZFwie3NyY31cIlxceDNlXFx4M2MvaWZyYW1lXFx4M2UnKSxlPUNLRURJVE9SLmFkZFRlbXBsYXRlKFwicGFuZWwtZnJhbWUtaW5uZXJcIiwnXFx4M2MhRE9DVFlQRSBodG1sXFx4M2VcXHgzY2h0bWwgY2xhc3NcXHgzZFwiY2tlX3BhbmVsX2NvbnRhaW5lciB7ZW52fVwiIGRpclxceDNkXCJ7ZGlyfVwiIGxhbmdcXHgzZFwie2xhbmdDb2RlfVwiXFx4M2VcXHgzY2hlYWRcXHgzZXtjc3N9XFx4M2MvaGVhZFxceDNlXFx4M2Nib2R5IGNsYXNzXFx4M2RcImNrZV97ZGlyfVwiIHN0eWxlXFx4M2RcIm1hcmdpbjowO3BhZGRpbmc6MFwiIG9ubG9hZFxceDNkXCJ7b25sb2FkfVwiXFx4M2VcXHgzYy9ib2R5XFx4M2VcXHgzYy9odG1sXFx4M2UnKTtcbkNLRURJVE9SLnVpLnBhbmVsLnByb3RvdHlwZT17cmVuZGVyOmZ1bmN0aW9uKGIsYyl7dmFyIGs9e2VkaXRvcklkOmIuaWQsaWQ6dGhpcy5pZCxsYW5nQ29kZTpiLmxhbmdDb2RlLGRpcjpiLmxhbmcuZGlyLGNsczp0aGlzLmNsYXNzTmFtZSxmcmFtZTpcIlwiLGVudjpDS0VESVRPUi5lbnYuY3NzQ2xhc3MsXCJ6LWluZGV4XCI6Yi5jb25maWcuYmFzZUZsb2F0WkluZGV4KzF9O3RoaXMuZ2V0SG9sZGVyRWxlbWVudD1mdW5jdGlvbigpe3ZhciBhPXRoaXMuXy5ob2xkZXI7aWYoIWEpe2lmKHRoaXMuaXNGcmFtZWQpe3ZhciBhPXRoaXMuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLmlkK1wiX2ZyYW1lXCIpLGI9YS5nZXRQYXJlbnQoKSxhPWEuZ2V0RnJhbWVEb2N1bWVudCgpO0NLRURJVE9SLmVudi5pT1MmJmIuc2V0U3R5bGVzKHtvdmVyZmxvdzpcInNjcm9sbFwiLFwiLXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmdcIjpcInRvdWNoXCJ9KTtiPUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKENLRURJVE9SLnRvb2xzLmJpbmQoZnVuY3Rpb24oKXt0aGlzLmlzTG9hZGVkPVxuITA7aWYodGhpcy5vbkxvYWQpdGhpcy5vbkxvYWQoKX0sdGhpcykpO2Eud3JpdGUoZS5vdXRwdXQoQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHtjc3M6Q0tFRElUT1IudG9vbHMuYnVpbGRTdHlsZUh0bWwodGhpcy5jc3MpLG9ubG9hZDpcIndpbmRvdy5wYXJlbnQuQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKFwiK2IrXCIpO1wifSxrKSkpO2EuZ2V0V2luZG93KCkuJC5DS0VESVRPUj1DS0VESVRPUjthLm9uKFwia2V5ZG93blwiLGZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YS5nZXRLZXlzdHJva2UoKSxkPXRoaXMuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLmlkKS5nZXRBdHRyaWJ1dGUoXCJkaXJcIik7aWYoXCJpbnB1dFwiIT09YS5kYXRhLmdldFRhcmdldCgpLmdldE5hbWUoKXx8MzchPT1iJiYzOSE9PWIpdGhpcy5fLm9uS2V5RG93biYmITE9PT10aGlzLl8ub25LZXlEb3duKGIpP1wiaW5wdXRcIj09PWEuZGF0YS5nZXRUYXJnZXQoKS5nZXROYW1lKCkmJjMyPT09Ynx8YS5kYXRhLnByZXZlbnREZWZhdWx0KCk6XG4oMjc9PWJ8fGI9PShcInJ0bFwiPT1kPzM5OjM3KSkmJnRoaXMub25Fc2NhcGUmJiExPT09dGhpcy5vbkVzY2FwZShiKSYmYS5kYXRhLnByZXZlbnREZWZhdWx0KCl9LHRoaXMpO2E9YS5nZXRCb2R5KCk7YS51bnNlbGVjdGFibGUoKTtDS0VESVRPUi5lbnYuYWlyJiZDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oYil9ZWxzZSBhPXRoaXMuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLmlkKTt0aGlzLl8uaG9sZGVyPWF9cmV0dXJuIGF9O2lmKHRoaXMuaXNGcmFtZWQpe3ZhciBsPUNLRURJVE9SLmVudi5haXI/XCJqYXZhc2NyaXB0OnZvaWQoMClcIjpDS0VESVRPUi5lbnYuaWUmJiFDS0VESVRPUi5lbnYuZWRnZT9cImphdmFzY3JpcHQ6dm9pZChmdW5jdGlvbigpe1wiK2VuY29kZVVSSUNvbXBvbmVudChcImRvY3VtZW50Lm9wZW4oKTsoXCIrQ0tFRElUT1IudG9vbHMuZml4RG9tYWluK1wiKSgpO2RvY3VtZW50LmNsb3NlKCk7XCIpK1wifSgpKVwiOlwiXCI7ay5mcmFtZT1mLm91dHB1dCh7aWQ6dGhpcy5pZCtcIl9mcmFtZVwiLFxuc3JjOmx9KX1sPWEub3V0cHV0KGspO2MmJmMucHVzaChsKTtyZXR1cm4gbH0sYWRkQmxvY2s6ZnVuY3Rpb24oYSxjKXtjPXRoaXMuXy5ibG9ja3NbYV09YyBpbnN0YW5jZW9mIENLRURJVE9SLnVpLnBhbmVsLmJsb2NrP2M6bmV3IENLRURJVE9SLnVpLnBhbmVsLmJsb2NrKHRoaXMuZ2V0SG9sZGVyRWxlbWVudCgpLGMpO3RoaXMuXy5jdXJyZW50QmxvY2t8fHRoaXMuc2hvd0Jsb2NrKGEpO3JldHVybiBjfSxnZXRCbG9jazpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5fLmJsb2Nrc1thXX0sc2hvd0Jsb2NrOmZ1bmN0aW9uKGEpe2E9dGhpcy5fLmJsb2Nrc1thXTt2YXIgYz10aGlzLl8uY3VycmVudEJsb2NrLGU9IXRoaXMuZm9yY2VJRnJhbWV8fENLRURJVE9SLmVudi5pZT90aGlzLl8uaG9sZGVyOnRoaXMuZG9jdW1lbnQuZ2V0QnlJZCh0aGlzLmlkK1wiX2ZyYW1lXCIpO2MmJmMuaGlkZSgpO3RoaXMuXy5jdXJyZW50QmxvY2s9YTtDS0VESVRPUi5maXJlKFwiYXJpYVdpZGdldFwiLGUpO2EuXy5mb2N1c0luZGV4PVxuLTE7dGhpcy5fLm9uS2V5RG93bj1hLm9uS2V5RG93biYmQ0tFRElUT1IudG9vbHMuYmluZChhLm9uS2V5RG93bixhKTthLnNob3coKTtyZXR1cm4gYX0sZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudCYmdGhpcy5lbGVtZW50LnJlbW92ZSgpfX07Q0tFRElUT1IudWkucGFuZWwuYmxvY2s9Q0tFRElUT1IudG9vbHMuY3JlYXRlQ2xhc3MoeyQ6ZnVuY3Rpb24oYSxjKXt0aGlzLmVsZW1lbnQ9YS5hcHBlbmQoYS5nZXREb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIix7YXR0cmlidXRlczp7dGFiaW5kZXg6LTEsXCJjbGFzc1wiOlwiY2tlX3BhbmVsX2Jsb2NrXCJ9LHN0eWxlczp7ZGlzcGxheTpcIm5vbmVcIn19KSk7YyYmQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMsYyk7dGhpcy5lbGVtZW50LnNldEF0dHJpYnV0ZXMoe3JvbGU6dGhpcy5hdHRyaWJ1dGVzLnJvbGV8fFwicHJlc2VudGF0aW9uXCIsXCJhcmlhLWxhYmVsXCI6dGhpcy5hdHRyaWJ1dGVzW1wiYXJpYS1sYWJlbFwiXSx0aXRsZTp0aGlzLmF0dHJpYnV0ZXMudGl0bGV8fFxudGhpcy5hdHRyaWJ1dGVzW1wiYXJpYS1sYWJlbFwiXX0pO3RoaXMua2V5cz17fTt0aGlzLl8uZm9jdXNJbmRleD0tMTt0aGlzLmVsZW1lbnQuZGlzYWJsZUNvbnRleHRNZW51KCl9LF86e21hcmtJdGVtOmZ1bmN0aW9uKGEpey0xIT1hJiYoYT10aGlzLl8uZ2V0SXRlbXMoKS5nZXRJdGVtKHRoaXMuXy5mb2N1c0luZGV4PWEpLENLRURJVE9SLmVudi53ZWJraXQmJmEuZ2V0RG9jdW1lbnQoKS5nZXRXaW5kb3coKS5mb2N1cygpLGEuZm9jdXMoKSx0aGlzLm9uTWFyayYmdGhpcy5vbk1hcmsoYSkpfSxtYXJrRmlyc3REaXNwbGF5ZWQ6ZnVuY3Rpb24oYSl7Zm9yKHZhciBjPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJub25lXCI9PWEuZ2V0U3R5bGUoXCJkaXNwbGF5XCIpfSxlPXRoaXMuXy5nZXRJdGVtcygpLGYsbSxkPWUuY291bnQoKS0xOzA8PWQ7ZC0tKWlmKGY9ZS5nZXRJdGVtKGQpLGYuZ2V0QXNjZW5kYW50KGMpfHwobT1mLHRoaXMuXy5mb2N1c0luZGV4PVxuZCksXCJ0cnVlXCI9PWYuZ2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiKSl7bT1mO3RoaXMuXy5mb2N1c0luZGV4PWQ7YnJlYWt9bSYmKGEmJmEoKSxDS0VESVRPUi5lbnYud2Via2l0JiZtLmdldERvY3VtZW50KCkuZ2V0V2luZG93KCkuZm9jdXMoKSxtLmZvY3VzKCksdGhpcy5vbk1hcmsmJnRoaXMub25NYXJrKG0pKX0sZ2V0SXRlbXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50LmZpbmQoXCJhLGlucHV0XCIpfX0scHJvdG86e3Nob3c6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJcIil9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9uSGlkZSYmITA9PT10aGlzLm9uSGlkZS5jYWxsKHRoaXMpfHx0aGlzLmVsZW1lbnQuc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJub25lXCIpfSxvbktleURvd246ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmtleXNbYV07c3dpdGNoKGUpe2Nhc2UgXCJuZXh0XCI6Zm9yKHZhciBmPXRoaXMuXy5mb2N1c0luZGV4LGU9dGhpcy5fLmdldEl0ZW1zKCksXG5tO209ZS5nZXRJdGVtKCsrZik7KWlmKG0uZ2V0QXR0cmlidXRlKFwiX2NrZV9mb2N1c1wiKSYmbS4kLm9mZnNldFdpZHRoKXt0aGlzLl8uZm9jdXNJbmRleD1mO20uZm9jdXMoITApO2JyZWFrfXJldHVybiBtfHxjPyExOih0aGlzLl8uZm9jdXNJbmRleD0tMSx0aGlzLm9uS2V5RG93bihhLDEpKTtjYXNlIFwicHJldlwiOmY9dGhpcy5fLmZvY3VzSW5kZXg7Zm9yKGU9dGhpcy5fLmdldEl0ZW1zKCk7MDxmJiYobT1lLmdldEl0ZW0oLS1mKSk7KXtpZihtLmdldEF0dHJpYnV0ZShcIl9ja2VfZm9jdXNcIikmJm0uJC5vZmZzZXRXaWR0aCl7dGhpcy5fLmZvY3VzSW5kZXg9ZjttLmZvY3VzKCEwKTticmVha31tPW51bGx9cmV0dXJuIG18fGM/ITE6KHRoaXMuXy5mb2N1c0luZGV4PWUuY291bnQoKSx0aGlzLm9uS2V5RG93bihhLDEpKTtjYXNlIFwiY2xpY2tcIjpjYXNlIFwibW91c2V1cFwiOnJldHVybiBmPXRoaXMuXy5mb2N1c0luZGV4LChtPTA8PWYmJnRoaXMuXy5nZXRJdGVtcygpLmdldEl0ZW0oZikpJiZcbm0uZmlyZUV2ZW50SGFuZGxlcihlLHtidXR0b246Q0tFRElUT1IudG9vbHMubm9ybWFsaXplTW91c2VCdXR0b24oQ0tFRElUT1IuTU9VU0VfQlVUVE9OX0xFRlQsITApfSksITF9cmV0dXJuITB9fX0pfSgpLENLRURJVE9SLnBsdWdpbnMuYWRkKFwiZmxvYXRwYW5lbFwiLHtyZXF1aXJlczpcInBhbmVsXCJ9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGMsayxsKXtsPUNLRURJVE9SLnRvb2xzLmdlbktleShiLmdldFVuaXF1ZUlkKCksYy5nZXRVbmlxdWVJZCgpLGEubGFuZy5kaXIsYS51aUNvbG9yfHxcIlwiLGsuY3NzfHxcIlwiLGx8fFwiXCIpO3ZhciBtPWZbbF07bXx8KG09ZltsXT1uZXcgQ0tFRElUT1IudWkucGFuZWwoYixrKSxtLmVsZW1lbnQ9Yy5hcHBlbmQoQ0tFRElUT1IuZG9tLmVsZW1lbnQuY3JlYXRlRnJvbUh0bWwobS5yZW5kZXIoYSksYikpLG0uZWxlbWVudC5zZXRTdHlsZXMoe2Rpc3BsYXk6XCJub25lXCIscG9zaXRpb246XCJhYnNvbHV0ZVwifSkpO3JldHVybiBtfXZhciBmPXt9O0NLRURJVE9SLnVpLmZsb2F0UGFuZWw9XG5DS0VESVRPUi50b29scy5jcmVhdGVDbGFzcyh7JDpmdW5jdGlvbihlLGIsYyxmKXtmdW5jdGlvbiBsKCl7Zy5oaWRlKCl9Yy5mb3JjZUlGcmFtZT0xO2MudG9vbGJhclJlbGF0ZWQmJmUuZWxlbWVudE1vZGU9PUNLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkUmJihiPUNLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQoXCJja2VfXCIrZS5uYW1lKSk7dmFyIG09Yi5nZXREb2N1bWVudCgpO2Y9YShlLG0sYixjLGZ8fDApO3ZhciBkPWYuZWxlbWVudCxoPWQuZ2V0Rmlyc3QoKSxnPXRoaXM7ZC5kaXNhYmxlQ29udGV4dE1lbnUoKTt0aGlzLmVsZW1lbnQ9ZDt0aGlzLl89e2VkaXRvcjplLHBhbmVsOmYscGFyZW50RWxlbWVudDpiLGRlZmluaXRpb246Yyxkb2N1bWVudDptLGlmcmFtZTpoLGNoaWxkcmVuOltdLGRpcjplLmxhbmcuZGlyLHNob3dCbG9ja1BhcmFtczpudWxsLG1hcmtGaXJzdDp2b2lkIDAhPT1jLm1hcmtGaXJzdD9jLm1hcmtGaXJzdDohMH07ZS5vbihcIm1vZGVcIixsKTtlLm9uKFwicmVzaXplXCIsXG5sKTttLmdldFdpbmRvdygpLm9uKFwicmVzaXplXCIsZnVuY3Rpb24oKXt0aGlzLnJlcG9zaXRpb24oKX0sdGhpcyl9LHByb3RvOnthZGRCbG9jazpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLl8ucGFuZWwuYWRkQmxvY2soYSxiKX0sYWRkTGlzdEJsb2NrOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuXy5wYW5lbC5hZGRMaXN0QmxvY2soYSxiKX0sZ2V0QmxvY2s6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuXy5wYW5lbC5nZXRCbG9jayhhKX0sc2hvd0Jsb2NrOmZ1bmN0aW9uKGEsYixjLGYsbCxtKXt2YXIgZD10aGlzLl8ucGFuZWwsaD1kLnNob3dCbG9jayhhKTt0aGlzLl8uc2hvd0Jsb2NrUGFyYW1zPVtdLnNsaWNlLmNhbGwoYXJndW1lbnRzKTt0aGlzLmFsbG93Qmx1cighMSk7dmFyIGc9dGhpcy5fLmVkaXRvci5lZGl0YWJsZSgpO3RoaXMuXy5yZXR1cm5Gb2N1cz1nLmhhc0ZvY3VzP2c6bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KENLRURJVE9SLmRvY3VtZW50LiQuYWN0aXZlRWxlbWVudCk7XG50aGlzLl8uaGlkZVRpbWVvdXQ9MDt2YXIgbj10aGlzLmVsZW1lbnQsZz10aGlzLl8uaWZyYW1lLGc9Q0tFRElUT1IuZW52LmllJiYhQ0tFRElUT1IuZW52LmVkZ2U/ZzpuZXcgQ0tFRElUT1IuZG9tLndpbmRvdyhnLiQuY29udGVudFdpbmRvdyksdz1uLmdldERvY3VtZW50KCkseD10aGlzLl8ucGFyZW50RWxlbWVudC5nZXRQb3NpdGlvbmVkQW5jZXN0b3IoKSxyPWIuZ2V0RG9jdW1lbnRQb3NpdGlvbih3KSx3PXg/eC5nZXREb2N1bWVudFBvc2l0aW9uKHcpOnt4OjAseTowfSxwPVwicnRsXCI9PXRoaXMuXy5kaXIsdT1yLngrKGZ8fDApLXcueCx6PXIueSsobHx8MCktdy55OyFwfHwxIT1jJiY0IT1jP3B8fDIhPWMmJjMhPWN8fCh1Kz1iLiQub2Zmc2V0V2lkdGgtMSk6dSs9Yi4kLm9mZnNldFdpZHRoO2lmKDM9PWN8fDQ9PWMpeis9Yi4kLm9mZnNldEhlaWdodC0xO3RoaXMuXy5wYW5lbC5fLm9mZnNldFBhcmVudElkPWIuZ2V0SWQoKTtuLnNldFN0eWxlcyh7dG9wOnorXCJweFwiLGxlZnQ6MCxcbmRpc3BsYXk6XCJcIn0pO24uc2V0T3BhY2l0eSgwKTtuLmdldEZpcnN0KCkucmVtb3ZlU3R5bGUoXCJ3aWR0aFwiKTt0aGlzLl8uZWRpdG9yLmZvY3VzTWFuYWdlci5hZGQoZyk7dGhpcy5fLmJsdXJTZXR8fChDS0VESVRPUi5ldmVudC51c2VDYXB0dXJlPSEwLGcub24oXCJibHVyXCIsZnVuY3Rpb24oYSl7ZnVuY3Rpb24gYigpe2RlbGV0ZSB0aGlzLl8ucmV0dXJuRm9jdXM7dGhpcy5oaWRlKCl9dGhpcy5hbGxvd0JsdXIoKSYmYS5kYXRhLmdldFBoYXNlKCk9PUNLRURJVE9SLkVWRU5UX1BIQVNFX0FUX1RBUkdFVCYmdGhpcy52aXNpYmxlJiYhdGhpcy5fLmFjdGl2ZUNoaWxkJiYoQ0tFRElUT1IuZW52LmlPUz90aGlzLl8uaGlkZVRpbWVvdXR8fCh0aGlzLl8uaGlkZVRpbWVvdXQ9Q0tFRElUT1IudG9vbHMuc2V0VGltZW91dChiLDAsdGhpcykpOmIuY2FsbCh0aGlzKSl9LHRoaXMpLGcub24oXCJmb2N1c1wiLGZ1bmN0aW9uKCl7dGhpcy5fLmZvY3VzZWQ9ITA7dGhpcy5oaWRlQ2hpbGQoKTt0aGlzLmFsbG93Qmx1cighMCl9LFxudGhpcyksQ0tFRElUT1IuZW52LmlPUyYmKGcub24oXCJ0b3VjaHN0YXJ0XCIsZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fLmhpZGVUaW1lb3V0KX0sdGhpcyksZy5vbihcInRvdWNoZW5kXCIsZnVuY3Rpb24oKXt0aGlzLl8uaGlkZVRpbWVvdXQ9MDt0aGlzLmZvY3VzKCl9LHRoaXMpKSxDS0VESVRPUi5ldmVudC51c2VDYXB0dXJlPSExLHRoaXMuXy5ibHVyU2V0PTEpO2Qub25Fc2NhcGU9Q0tFRElUT1IudG9vbHMuYmluZChmdW5jdGlvbihhKXtpZih0aGlzLm9uRXNjYXBlJiYhMT09PXRoaXMub25Fc2NhcGUoYSkpcmV0dXJuITF9LHRoaXMpO0NLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi50b29scy5iaW5kKGZ1bmN0aW9uKCl7dmFyIGE9bjthLnJlbW92ZVN0eWxlKFwid2lkdGhcIik7aWYoaC5hdXRvU2l6ZSl7dmFyIGI9aC5lbGVtZW50LmdldERvY3VtZW50KCksYj0oQ0tFRElUT1IuZW52LndlYmtpdHx8Q0tFRElUT1IuZW52LmVkZ2U/XG5oLmVsZW1lbnQ6Yi5nZXRCb2R5KCkpLiQuc2Nyb2xsV2lkdGg7Q0tFRElUT1IuZW52LmllJiZDS0VESVRPUi5lbnYucXVpcmtzJiYwPGImJihiKz0oYS4kLm9mZnNldFdpZHRofHwwKS0oYS4kLmNsaWVudFdpZHRofHwwKSszKTthLnNldFN0eWxlKFwid2lkdGhcIixiKzEwK1wicHhcIik7Yj1oLmVsZW1lbnQuJC5zY3JvbGxIZWlnaHQ7Q0tFRElUT1IuZW52LmllJiZDS0VESVRPUi5lbnYucXVpcmtzJiYwPGImJihiKz0oYS4kLm9mZnNldEhlaWdodHx8MCktKGEuJC5jbGllbnRIZWlnaHR8fDApKzMpO2Euc2V0U3R5bGUoXCJoZWlnaHRcIixiK1wicHhcIik7ZC5fLmN1cnJlbnRCbG9jay5lbGVtZW50LnNldFN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKS5yZW1vdmVTdHlsZShcImRpc3BsYXlcIil9ZWxzZSBhLnJlbW92ZVN0eWxlKFwiaGVpZ2h0XCIpO3AmJih1LT1uLiQub2Zmc2V0V2lkdGgpO24uc2V0U3R5bGUoXCJsZWZ0XCIsdStcInB4XCIpO3ZhciBiPWQuZWxlbWVudC5nZXRXaW5kb3coKSxhPW4uJC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSxcbmI9Yi5nZXRWaWV3UGFuZVNpemUoKSxjPWEud2lkdGh8fGEucmlnaHQtYS5sZWZ0LGU9YS5oZWlnaHR8fGEuYm90dG9tLWEudG9wLGc9cD9hLnJpZ2h0OmIud2lkdGgtYS5sZWZ0LGY9cD9iLndpZHRoLWEucmlnaHQ6YS5sZWZ0O3A/ZzxjJiYodT1mPmM/dStjOmIud2lkdGg+Yz91LWEubGVmdDp1LWEucmlnaHQrYi53aWR0aCk6ZzxjJiYodT1mPmM/dS1jOmIud2lkdGg+Yz91LWEucmlnaHQrYi53aWR0aDp1LWEubGVmdCk7Yz1hLnRvcDtiLmhlaWdodC1hLnRvcDxlJiYoej1jPmU/ei1lOmIuaGVpZ2h0PmU/ei1hLmJvdHRvbStiLmhlaWdodDp6LWEudG9wKTtDS0VESVRPUi5lbnYuaWUmJiFDS0VESVRPUi5lbnYuZWRnZSYmKChiPWE9bi4kLm9mZnNldFBhcmVudCYmbmV3IENLRURJVE9SLmRvbS5lbGVtZW50KG4uJC5vZmZzZXRQYXJlbnQpKSYmXCJodG1sXCI9PWIuZ2V0TmFtZSgpJiYoYj1iLmdldERvY3VtZW50KCkuZ2V0Qm9keSgpKSxiJiZcInJ0bFwiPT1iLmdldENvbXB1dGVkU3R5bGUoXCJkaXJlY3Rpb25cIikmJlxuKHU9Q0tFRElUT1IuZW52LmllOENvbXBhdD91LTIqbi5nZXREb2N1bWVudCgpLmdldERvY3VtZW50RWxlbWVudCgpLiQuc2Nyb2xsTGVmdDp1LShhLiQuc2Nyb2xsV2lkdGgtYS4kLmNsaWVudFdpZHRoKSkpO3ZhciBhPW4uZ2V0Rmlyc3QoKSxrOyhrPWEuZ2V0Q3VzdG9tRGF0YShcImFjdGl2ZVBhbmVsXCIpKSYmay5vbkhpZGUmJmsub25IaWRlLmNhbGwodGhpcywxKTthLnNldEN1c3RvbURhdGEoXCJhY3RpdmVQYW5lbFwiLHRoaXMpO24uc2V0U3R5bGVzKHt0b3A6eitcInB4XCIsbGVmdDp1K1wicHhcIn0pO24uc2V0T3BhY2l0eSgxKTttJiZtKCl9LHRoaXMpO2QuaXNMb2FkZWQ/YSgpOmQub25Mb2FkPWE7Q0tFRElUT1IudG9vbHMuc2V0VGltZW91dChmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLmVudi53ZWJraXQmJkNLRURJVE9SLmRvY3VtZW50LmdldFdpbmRvdygpLmdldFNjcm9sbFBvc2l0aW9uKCkueTt0aGlzLmZvY3VzKCk7aC5lbGVtZW50LmZvY3VzKCk7Q0tFRElUT1IuZW52LndlYmtpdCYmXG4oQ0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLiQuc2Nyb2xsVG9wPWEpO3RoaXMuYWxsb3dCbHVyKCEwKTt0aGlzLl8ubWFya0ZpcnN0JiYoQ0tFRElUT1IuZW52LmllP0NLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXtoLm1hcmtGaXJzdERpc3BsYXllZD9oLm1hcmtGaXJzdERpc3BsYXllZCgpOmguXy5tYXJrRmlyc3REaXNwbGF5ZWQoKX0sMCk6aC5tYXJrRmlyc3REaXNwbGF5ZWQ/aC5tYXJrRmlyc3REaXNwbGF5ZWQoKTpoLl8ubWFya0ZpcnN0RGlzcGxheWVkKCkpO3RoaXMuXy5lZGl0b3IuZmlyZShcInBhbmVsU2hvd1wiLHRoaXMpfSwwLHRoaXMpfSxDS0VESVRPUi5lbnYuYWlyPzIwMDowLHRoaXMpO3RoaXMudmlzaWJsZT0xO3RoaXMub25TaG93JiZ0aGlzLm9uU2hvdy5jYWxsKHRoaXMpfSxyZXBvc2l0aW9uOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLnNob3dCbG9ja1BhcmFtczt0aGlzLnZpc2libGUmJnRoaXMuXy5zaG93QmxvY2tQYXJhbXMmJih0aGlzLmhpZGUoKSxcbnRoaXMuc2hvd0Jsb2NrLmFwcGx5KHRoaXMsYSkpfSxmb2N1czpmdW5jdGlvbigpe2lmKENLRURJVE9SLmVudi53ZWJraXQpe3ZhciBhPUNLRURJVE9SLmRvY3VtZW50LmdldEFjdGl2ZSgpO2EmJiFhLmVxdWFscyh0aGlzLl8uaWZyYW1lKSYmYS4kLmJsdXIoKX0odGhpcy5fLmxhc3RGb2N1c2VkfHx0aGlzLl8uaWZyYW1lLmdldEZyYW1lRG9jdW1lbnQoKS5nZXRXaW5kb3coKSkuZm9jdXMoKX0sYmx1cjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuXy5pZnJhbWUuZ2V0RnJhbWVEb2N1bWVudCgpLmdldEFjdGl2ZSgpO2EmJmEuaXMoXCJhXCIpJiYodGhpcy5fLmxhc3RGb2N1c2VkPWEpfSxoaWRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMudmlzaWJsZSYmKCF0aGlzLm9uSGlkZXx8ITAhPT10aGlzLm9uSGlkZS5jYWxsKHRoaXMpKSl7dGhpcy5oaWRlQ2hpbGQoKTtDS0VESVRPUi5lbnYuZ2Vja28mJnRoaXMuXy5pZnJhbWUuZ2V0RnJhbWVEb2N1bWVudCgpLiQuYWN0aXZlRWxlbWVudC5ibHVyKCk7XG50aGlzLmVsZW1lbnQuc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJub25lXCIpO3RoaXMudmlzaWJsZT0wO3RoaXMuZWxlbWVudC5nZXRGaXJzdCgpLnJlbW92ZUN1c3RvbURhdGEoXCJhY3RpdmVQYW5lbFwiKTtpZihhPWEmJnRoaXMuXy5yZXR1cm5Gb2N1cylDS0VESVRPUi5lbnYud2Via2l0JiZhLnR5cGUmJmEuZ2V0V2luZG93KCkuJC5mb2N1cygpLGEuZm9jdXMoKTtkZWxldGUgdGhpcy5fLmxhc3RGb2N1c2VkO3RoaXMuXy5zaG93QmxvY2tQYXJhbXM9bnVsbDt0aGlzLl8uZWRpdG9yLmZpcmUoXCJwYW5lbEhpZGVcIix0aGlzKX19LGFsbG93Qmx1cjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLl8ucGFuZWw7dm9pZCAwIT09YSYmKGIuYWxsb3dCbHVyPWEpO3JldHVybiBiLmFsbG93Qmx1cn0sc2hvd0FzQ2hpbGQ6ZnVuY3Rpb24oYSxiLGMsZixsLG0pe2lmKHRoaXMuXy5hY3RpdmVDaGlsZCE9YXx8YS5fLnBhbmVsLl8ub2Zmc2V0UGFyZW50SWQhPWMuZ2V0SWQoKSl0aGlzLmhpZGVDaGlsZCgpLGEub25IaWRlPVxuQ0tFRElUT1IudG9vbHMuYmluZChmdW5jdGlvbigpe0NLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoZnVuY3Rpb24oKXt0aGlzLl8uZm9jdXNlZHx8dGhpcy5oaWRlKCl9LDAsdGhpcyl9LHRoaXMpLHRoaXMuXy5hY3RpdmVDaGlsZD1hLHRoaXMuXy5mb2N1c2VkPSExLGEuc2hvd0Jsb2NrKGIsYyxmLGwsbSksdGhpcy5ibHVyKCksKENLRURJVE9SLmVudi5pZTdDb21wYXR8fENLRURJVE9SLmVudi5pZTZDb21wYXQpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5lbGVtZW50LmdldENoaWxkKDApLiQuc3R5bGUuY3NzVGV4dCs9XCJcIn0sMTAwKX0saGlkZUNoaWxkOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuXy5hY3RpdmVDaGlsZDtiJiYoZGVsZXRlIGIub25IaWRlLGRlbGV0ZSB0aGlzLl8uYWN0aXZlQ2hpbGQsYi5oaWRlKCksYSYmdGhpcy5mb2N1cygpKX19fSk7Q0tFRElUT1Iub24oXCJpbnN0YW5jZURlc3Ryb3llZFwiLGZ1bmN0aW9uKCl7dmFyIGE9Q0tFRElUT1IudG9vbHMuaXNFbXB0eShDS0VESVRPUi5pbnN0YW5jZXMpLFxuYjtmb3IoYiBpbiBmKXt2YXIgYz1mW2JdO2E/Yy5kZXN0cm95KCk6Yy5lbGVtZW50LmhpZGUoKX1hJiYoZj17fSl9KX0oKSxDS0VESVRPUi5wbHVnaW5zLmFkZChcIm1lbnVcIix7cmVxdWlyZXM6XCJmbG9hdHBhbmVsXCIsYmVmb3JlSW5pdDpmdW5jdGlvbihhKXtmb3IodmFyIGY9YS5jb25maWcubWVudV9ncm91cHMuc3BsaXQoXCIsXCIpLGU9YS5fLm1lbnVHcm91cHM9e30sYj1hLl8ubWVudUl0ZW1zPXt9LGM9MDtjPGYubGVuZ3RoO2MrKyllW2ZbY11dPWMrMTthLmFkZE1lbnVHcm91cD1mdW5jdGlvbihhLGIpe2VbYV09Ynx8MTAwfTthLmFkZE1lbnVJdGVtPWZ1bmN0aW9uKGEsYyl7ZVtjLmdyb3VwXSYmKGJbYV09bmV3IENLRURJVE9SLm1lbnVJdGVtKHRoaXMsYSxjKSl9O2EuYWRkTWVudUl0ZW1zPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXRoaXMuYWRkTWVudUl0ZW0oYixhW2JdKX07YS5nZXRNZW51SXRlbT1mdW5jdGlvbihhKXtyZXR1cm4gYlthXX07YS5yZW1vdmVNZW51SXRlbT1cbmZ1bmN0aW9uKGEpe2RlbGV0ZSBiW2FdfX19KSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7YS5zb3J0KGZ1bmN0aW9uKGEsYil7cmV0dXJuIGEuZ3JvdXA8Yi5ncm91cD8tMTphLmdyb3VwPmIuZ3JvdXA/MTphLm9yZGVyPGIub3JkZXI/LTE6YS5vcmRlcj5iLm9yZGVyPzE6MH0pfXZhciBmPSdcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX21lbnVpdGVtXCJcXHgzZVxceDNjYSBpZFxceDNkXCJ7aWR9XCIgY2xhc3NcXHgzZFwiY2tlX21lbnVidXR0b24gY2tlX21lbnVidXR0b25fX3tuYW1lfSBja2VfbWVudWJ1dHRvbl97c3RhdGV9IHtjbHN9XCIgaHJlZlxceDNkXCJ7aHJlZn1cIiB0aXRsZVxceDNkXCJ7dGl0bGV9XCIgdGFiaW5kZXhcXHgzZFwiLTFcIiBfY2tlX2ZvY3VzXFx4M2QxIGhpZGVmb2N1c1xceDNkXCJ0cnVlXCIgcm9sZVxceDNkXCJ7cm9sZX1cIiBhcmlhLWxhYmVsXFx4M2RcInthdHRyTGFiZWx9XCIgYXJpYS1kZXNjcmliZWRieVxceDNkXCJ7aWR9X2Rlc2NyaXB0aW9uXCIgYXJpYS1oYXNwb3B1cFxceDNkXCJ7aGFzUG9wdXB9XCIgYXJpYS1kaXNhYmxlZFxceDNkXCJ7ZGlzYWJsZWR9XCIge2FyaWFDaGVja2VkfSBkcmFnZ2FibGVcXHgzZFwiZmFsc2VcIicsXG5lPVwiXCI7Q0tFRElUT1IuZW52LmdlY2tvJiZDS0VESVRPUi5lbnYubWFjJiYoZis9JyBvbmtleXByZXNzXFx4M2RcInJldHVybiBmYWxzZTtcIicpO0NLRURJVE9SLmVudi5nZWNrbyYmKGYrPScgb25ibHVyXFx4M2RcInRoaXMuc3R5bGUuY3NzVGV4dCBcXHgzZCB0aGlzLnN0eWxlLmNzc1RleHQ7XCIgb25kcmFnc3RhcnRcXHgzZFwicmV0dXJuIGZhbHNlO1wiJyk7Q0tFRElUT1IuZW52LmllJiYoZT0ncmV0dXJuIGZhbHNlO1wiIG9ubW91c2V1cFxceDNkXCJDS0VESVRPUi50b29scy5nZXRNb3VzZUJ1dHRvbihldmVudClcXHgzZFxceDNkXFx4M2RDS0VESVRPUi5NT1VTRV9CVVRUT05fTEVGVFxceDI2XFx4MjYnKTt2YXIgZj1mKygnIG9ubW91c2VvdmVyXFx4M2RcIkNLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbih7aG92ZXJGbn0se2luZGV4fSk7XCIgb25tb3VzZW91dFxceDNkXCJDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oe21vdmVPdXRGbn0se2luZGV4fSk7XCIgb25jbGlja1xceDNkXCInK2UrJ0NLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbih7Y2xpY2tGbn0se2luZGV4fSk7IHJldHVybiBmYWxzZTtcIlxceDNlJykrXG4nXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9tZW51YnV0dG9uX2lubmVyXCJcXHgzZVxceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfbWVudWJ1dHRvbl9pY29uXCJcXHgzZVxceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfYnV0dG9uX2ljb24gY2tlX2J1dHRvbl9fe2ljb25OYW1lfV9pY29uXCIgc3R5bGVcXHgzZFwie2ljb25TdHlsZX1cIlxceDNlXFx4M2Mvc3BhblxceDNlXFx4M2Mvc3BhblxceDNlXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9tZW51YnV0dG9uX2xhYmVsXCJcXHgzZXtsYWJlbH1cXHgzYy9zcGFuXFx4M2V7c2hvcnRjdXRIdG1sfXthcnJvd0h0bWx9XFx4M2Mvc3BhblxceDNlXFx4M2MvYVxceDNlXFx4M2NzcGFuIGlkXFx4M2RcIntpZH1fZGVzY3JpcHRpb25cIiBjbGFzc1xceDNkXCJja2Vfdm9pY2VfbGFiZWxcIiBhcmlhLWhpZGRlblxceDNkXCJmYWxzZVwiXFx4M2V7YXJpYVNob3J0Y3V0fVxceDNjL3NwYW5cXHgzZVxceDNjL3NwYW5cXHgzZScsYj1DS0VESVRPUi5hZGRUZW1wbGF0ZShcIm1lbnVJdGVtXCIsZiksYz1DS0VESVRPUi5hZGRUZW1wbGF0ZShcIm1lbnVBcnJvd1wiLFxuJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfbWVudWFycm93XCJcXHgzZVxceDNjc3BhblxceDNle2xhYmVsfVxceDNjL3NwYW5cXHgzZVxceDNjL3NwYW5cXHgzZScpLGs9Q0tFRElUT1IuYWRkVGVtcGxhdGUoXCJtZW51U2hvcnRjdXRcIiwnXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9tZW51YnV0dG9uX2xhYmVsIGNrZV9tZW51YnV0dG9uX3Nob3J0Y3V0XCJcXHgzZXtzaG9ydGN1dH1cXHgzYy9zcGFuXFx4M2UnKTtDS0VESVRPUi5tZW51PUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKGEsYil7Yj10aGlzLl8uZGVmaW5pdGlvbj1ifHx7fTt0aGlzLmlkPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpO3RoaXMuZWRpdG9yPWE7dGhpcy5pdGVtcz1bXTt0aGlzLl8ubGlzdGVuZXJzPVtdO3RoaXMuXy5sZXZlbD1iLmxldmVsfHwxO3ZhciBkPUNLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxiLnBhbmVsLHtjc3M6W0NLRURJVE9SLnNraW4uZ2V0UGF0aChcImVkaXRvclwiKV0sbGV2ZWw6dGhpcy5fLmxldmVsLVxuMSxibG9jazp7fX0pLGM9ZC5ibG9jay5hdHRyaWJ1dGVzPWQuYXR0cmlidXRlc3x8e307IWMucm9sZSYmKGMucm9sZT1cIm1lbnVcIik7dGhpcy5fLnBhbmVsRGVmaW5pdGlvbj1kfSxfOntvblNob3c6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKSxiPWEmJmEuZ2V0U3RhcnRFbGVtZW50KCksZD10aGlzLmVkaXRvci5lbGVtZW50UGF0aCgpLGM9dGhpcy5fLmxpc3RlbmVyczt0aGlzLnJlbW92ZUFsbCgpO2Zvcih2YXIgZT0wO2U8Yy5sZW5ndGg7ZSsrKXt2YXIgZj1jW2VdKGIsYSxkKTtpZihmKWZvcih2YXIgayBpbiBmKXt2YXIgeD10aGlzLmVkaXRvci5nZXRNZW51SXRlbShrKTsheHx8eC5jb21tYW5kJiYhdGhpcy5lZGl0b3IuZ2V0Q29tbWFuZCh4LmNvbW1hbmQpLnN0YXRlfHwoeC5zdGF0ZT1mW2tdLHRoaXMuYWRkKHgpKX19fSxvbkNsaWNrOmZ1bmN0aW9uKGEpe3RoaXMuaGlkZSgpO2lmKGEub25DbGljaylhLm9uQ2xpY2soKTtlbHNlIGEuY29tbWFuZCYmXG50aGlzLmVkaXRvci5leGVjQ29tbWFuZChhLmNvbW1hbmQpfSxvbkVzY2FwZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnBhcmVudDtiP2IuXy5wYW5lbC5oaWRlQ2hpbGQoMSk6Mjc9PWEmJnRoaXMuaGlkZSgxKTtyZXR1cm4hMX0sb25IaWRlOmZ1bmN0aW9uKCl7dGhpcy5vbkhpZGUmJnRoaXMub25IaWRlKCl9LHNob3dTdWJNZW51OmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuXy5zdWJNZW51LGQ9dGhpcy5pdGVtc1thXTtpZihkPWQuZ2V0SXRlbXMmJmQuZ2V0SXRlbXMoKSl7Yj9iLnJlbW92ZUFsbCgpOihiPXRoaXMuXy5zdWJNZW51PW5ldyBDS0VESVRPUi5tZW51KHRoaXMuZWRpdG9yLENLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSx0aGlzLl8uZGVmaW5pdGlvbix7bGV2ZWw6dGhpcy5fLmxldmVsKzF9LCEwKSksYi5wYXJlbnQ9dGhpcyxiLl8ub25DbGljaz1DS0VESVRPUi50b29scy5iaW5kKHRoaXMuXy5vbkNsaWNrLHRoaXMpKTtmb3IodmFyIGMgaW4gZCl7dmFyIGU9dGhpcy5lZGl0b3IuZ2V0TWVudUl0ZW0oYyk7XG5lJiYoZS5zdGF0ZT1kW2NdLGIuYWRkKGUpKX12YXIgZj10aGlzLl8ucGFuZWwuZ2V0QmxvY2sodGhpcy5pZCkuZWxlbWVudC5nZXREb2N1bWVudCgpLmdldEJ5SWQodGhpcy5pZCtTdHJpbmcoYSkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLnNob3coZiwyKX0sMCl9ZWxzZSB0aGlzLl8ucGFuZWwuaGlkZUNoaWxkKDEpfX0scHJvdG86e2FkZDpmdW5jdGlvbihhKXthLm9yZGVyfHwoYS5vcmRlcj10aGlzLml0ZW1zLmxlbmd0aCk7dGhpcy5pdGVtcy5wdXNoKGEpfSxyZW1vdmVBbGw6ZnVuY3Rpb24oKXt0aGlzLml0ZW1zPVtdfSxzaG93OmZ1bmN0aW9uKGIsYyxkLGUpe2lmKCF0aGlzLnBhcmVudCYmKHRoaXMuXy5vblNob3coKSwhdGhpcy5pdGVtcy5sZW5ndGgpKXJldHVybjtjPWN8fChcInJ0bFwiPT10aGlzLmVkaXRvci5sYW5nLmRpcj8yOjEpO3ZhciBnPXRoaXMuaXRlbXMsZj10aGlzLmVkaXRvcixrPXRoaXMuXy5wYW5lbCx4PXRoaXMuXy5lbGVtZW50O2lmKCFrKXtrPXRoaXMuXy5wYW5lbD1cbm5ldyBDS0VESVRPUi51aS5mbG9hdFBhbmVsKHRoaXMuZWRpdG9yLENLRURJVE9SLmRvY3VtZW50LmdldEJvZHkoKSx0aGlzLl8ucGFuZWxEZWZpbml0aW9uLHRoaXMuXy5sZXZlbCk7ay5vbkVzY2FwZT1DS0VESVRPUi50b29scy5iaW5kKGZ1bmN0aW9uKGEpe2lmKCExPT09dGhpcy5fLm9uRXNjYXBlKGEpKXJldHVybiExfSx0aGlzKTtrLm9uU2hvdz1mdW5jdGlvbigpe2suXy5wYW5lbC5nZXRIb2xkZXJFbGVtZW50KCkuZ2V0UGFyZW50KCkuYWRkQ2xhc3MoXCJja2VcIikuYWRkQ2xhc3MoXCJja2VfcmVzZXRfYWxsXCIpfTtrLm9uSGlkZT1DS0VESVRPUi50b29scy5iaW5kKGZ1bmN0aW9uKCl7dGhpcy5fLm9uSGlkZSYmdGhpcy5fLm9uSGlkZSgpfSx0aGlzKTt4PWsuYWRkQmxvY2sodGhpcy5pZCx0aGlzLl8ucGFuZWxEZWZpbml0aW9uLmJsb2NrKTt4LmF1dG9TaXplPSEwO3ZhciByPXgua2V5cztyWzQwXT1cIm5leHRcIjtyWzldPVwibmV4dFwiO3JbMzhdPVwicHJldlwiO3JbQ0tFRElUT1IuU0hJRlQrXG45XT1cInByZXZcIjtyW1wicnRsXCI9PWYubGFuZy5kaXI/Mzc6MzldPUNLRURJVE9SLmVudi5pZT9cIm1vdXNldXBcIjpcImNsaWNrXCI7clszMl09Q0tFRElUT1IuZW52LmllP1wibW91c2V1cFwiOlwiY2xpY2tcIjtDS0VESVRPUi5lbnYuaWUmJihyWzEzXT1cIm1vdXNldXBcIik7eD10aGlzLl8uZWxlbWVudD14LmVsZW1lbnQ7cj14LmdldERvY3VtZW50KCk7ci5nZXRCb2R5KCkuc2V0U3R5bGUoXCJvdmVyZmxvd1wiLFwiaGlkZGVuXCIpO3IuZ2V0RWxlbWVudHNCeVRhZyhcImh0bWxcIikuZ2V0SXRlbSgwKS5zZXRTdHlsZShcIm92ZXJmbG93XCIsXCJoaWRkZW5cIik7dGhpcy5fLml0ZW1PdmVyRm49Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oYSl7Y2xlYXJUaW1lb3V0KHRoaXMuXy5zaG93U3ViVGltZW91dCk7dGhpcy5fLnNob3dTdWJUaW1lb3V0PUNLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQodGhpcy5fLnNob3dTdWJNZW51LGYuY29uZmlnLm1lbnVfc3ViTWVudURlbGF5fHw0MDAsdGhpcyxbYV0pfSxcbnRoaXMpO3RoaXMuXy5pdGVtT3V0Rm49Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5fLnNob3dTdWJUaW1lb3V0KX0sdGhpcyk7dGhpcy5fLml0ZW1DbGlja0ZuPUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKGZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuaXRlbXNbYV07aWYoYi5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpdGhpcy5oaWRlKDEpO2Vsc2UgaWYoYi5nZXRJdGVtcyl0aGlzLl8uc2hvd1N1Yk1lbnUoYSk7ZWxzZSB0aGlzLl8ub25DbGljayhiKX0sdGhpcyl9YShnKTtmb3IodmFyIHI9Zi5lbGVtZW50UGF0aCgpLHI9WydcXHgzY2RpdiBjbGFzc1xceDNkXCJja2VfbWVudScrKHImJnIuZGlyZWN0aW9uKCkhPWYubGFuZy5kaXI/XCIgY2tlX21peGVkX2Rpcl9jb250ZW50XCI6XCJcIikrJ1wiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZSddLHA9Zy5sZW5ndGgsdT1wJiZnWzBdLmdyb3VwLHo9MDt6PHA7eisrKXt2YXIgcT1cbmdbel07dSE9cS5ncm91cCYmKHIucHVzaCgnXFx4M2NkaXYgY2xhc3NcXHgzZFwiY2tlX21lbnVzZXBhcmF0b3JcIiByb2xlXFx4M2RcInNlcGFyYXRvclwiXFx4M2VcXHgzYy9kaXZcXHgzZScpLHU9cS5ncm91cCk7cS5yZW5kZXIodGhpcyx6LHIpfXIucHVzaChcIlxceDNjL2RpdlxceDNlXCIpO3guc2V0SHRtbChyLmpvaW4oXCJcIikpO0NLRURJVE9SLnVpLmZpcmUoXCJyZWFkeVwiLHRoaXMpO3RoaXMucGFyZW50P3RoaXMucGFyZW50Ll8ucGFuZWwuc2hvd0FzQ2hpbGQoayx0aGlzLmlkLGIsYyxkLGUpOmsuc2hvd0Jsb2NrKHRoaXMuaWQsYixjLGQsZSk7Zi5maXJlKFwibWVudVNob3dcIixba10pfSxhZGRMaXN0ZW5lcjpmdW5jdGlvbihhKXt0aGlzLl8ubGlzdGVuZXJzLnB1c2goYSl9LGhpZGU6ZnVuY3Rpb24oYSl7dGhpcy5fLm9uSGlkZSYmdGhpcy5fLm9uSGlkZSgpO3RoaXMuXy5wYW5lbCYmdGhpcy5fLnBhbmVsLmhpZGUoYSl9LGZpbmRJdGVtQnlDb21tYW5kTmFtZTpmdW5jdGlvbihhKXt2YXIgYj1DS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIodGhpcy5pdGVtcyxcbmZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5jb21tYW5kfSk7cmV0dXJuIGIubGVuZ3RoPyhiPWJbMF0se2l0ZW06YixlbGVtZW50OnRoaXMuXy5lbGVtZW50LmZpbmRPbmUoXCIuXCIrYi5jbGFzc05hbWUpfSk6bnVsbH19fSk7Q0tFRElUT1IubWVudUl0ZW09Q0tFRElUT1IudG9vbHMuY3JlYXRlQ2xhc3MoeyQ6ZnVuY3Rpb24oYSxiLGQpe0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGQse29yZGVyOjAsY2xhc3NOYW1lOlwiY2tlX21lbnVidXR0b25fX1wiK2J9KTt0aGlzLmdyb3VwPWEuXy5tZW51R3JvdXBzW3RoaXMuZ3JvdXBdO3RoaXMuZWRpdG9yPWE7dGhpcy5uYW1lPWJ9LHByb3RvOntyZW5kZXI6ZnVuY3Rpb24oYSxlLGQpe3ZhciBmPWEuaWQrU3RyaW5nKGUpLGc9XCJ1bmRlZmluZWRcIj09dHlwZW9mIHRoaXMuc3RhdGU/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOnRoaXMuc3RhdGUsbj1cIlwiLHc9dGhpcy5lZGl0b3IseCxyLHA9Zz09Q0tFRElUT1IuVFJJU1RBVEVfT04/XCJvblwiOmc9PUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEP1xuXCJkaXNhYmxlZFwiOlwib2ZmXCI7dGhpcy5yb2xlIGlue21lbnVpdGVtY2hlY2tib3g6MSxtZW51aXRlbXJhZGlvOjF9JiYobj0nIGFyaWEtY2hlY2tlZFxceDNkXCInKyhnPT1DS0VESVRPUi5UUklTVEFURV9PTj9cInRydWVcIjpcImZhbHNlXCIpKydcIicpO3ZhciB1PXRoaXMuZ2V0SXRlbXMsej1cIlxceDI2I1wiKyhcInJ0bFwiPT10aGlzLmVkaXRvci5sYW5nLmRpcj9cIjk2NjhcIjpcIjk2NThcIikrXCI7XCIscT10aGlzLm5hbWU7dGhpcy5pY29uJiYhL1xcLi8udGVzdCh0aGlzLmljb24pJiYocT10aGlzLmljb24pO3RoaXMuY29tbWFuZCYmKHg9dy5nZXRDb21tYW5kKHRoaXMuY29tbWFuZCksKHg9dy5nZXRDb21tYW5kS2V5c3Ryb2tlKHgpKSYmKHI9Q0tFRElUT1IudG9vbHMua2V5c3Ryb2tlVG9TdHJpbmcody5sYW5nLmNvbW1vbi5rZXlib2FyZCx4KSkpO3g9Q0tFRElUT1IudG9vbHMuaHRtbEVuY29kZUF0dHIodGhpcy5sYWJlbCk7YT17aWQ6ZixuYW1lOnRoaXMubmFtZSxpY29uTmFtZTpxLGxhYmVsOnRoaXMubGFiZWwsXG5hdHRyTGFiZWw6eCxjbHM6dGhpcy5jbGFzc05hbWV8fFwiXCIsc3RhdGU6cCxoYXNQb3B1cDp1P1widHJ1ZVwiOlwiZmFsc2VcIixkaXNhYmxlZDpnPT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCx0aXRsZTp4KyhyP1wiIChcIityLmRpc3BsYXkrXCIpXCI6XCJcIiksYXJpYVNob3J0Y3V0OnI/dy5sYW5nLmNvbW1vbi5rZXlib2FyZFNob3J0Y3V0K1wiIFwiK3IuYXJpYTpcIlwiLGhyZWY6XCJqYXZhc2NyaXB0OnZvaWQoJ1wiKyh4fHxcIlwiKS5yZXBsYWNlKFwiJ1wiKStcIicpXCIsaG92ZXJGbjphLl8uaXRlbU92ZXJGbixtb3ZlT3V0Rm46YS5fLml0ZW1PdXRGbixjbGlja0ZuOmEuXy5pdGVtQ2xpY2tGbixpbmRleDplLGljb25TdHlsZTpDS0VESVRPUi5za2luLmdldEljb25TdHlsZShxLFwicnRsXCI9PXRoaXMuZWRpdG9yLmxhbmcuZGlyLHE9PXRoaXMuaWNvbj9udWxsOnRoaXMuaWNvbix0aGlzLmljb25PZmZzZXQpLHNob3J0Y3V0SHRtbDpyP2sub3V0cHV0KHtzaG9ydGN1dDpyLmRpc3BsYXl9KTpcIlwiLGFycm93SHRtbDp1P1xuYy5vdXRwdXQoe2xhYmVsOnp9KTpcIlwiLHJvbGU6dGhpcy5yb2xlP3RoaXMucm9sZTpcIm1lbnVpdGVtXCIsYXJpYUNoZWNrZWQ6bn07Yi5vdXRwdXQoYSxkKX19fSl9KCksQ0tFRElUT1IuY29uZmlnLm1lbnVfZ3JvdXBzPVwiY2xpcGJvYXJkLGZvcm0sdGFibGVjZWxsLHRhYmxlY2VsbHByb3BlcnRpZXMsdGFibGVyb3csdGFibGVjb2x1bW4sdGFibGUsYW5jaG9yLGxpbmssaW1hZ2UsY2hlY2tib3gscmFkaW8sdGV4dGZpZWxkLGhpZGRlbmZpZWxkLGltYWdlYnV0dG9uLGJ1dHRvbixzZWxlY3QsdGV4dGFyZWEsZGl2XCIsQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJjb250ZXh0bWVudVwiLHtyZXF1aXJlczpcIm1lbnVcIixvbkxvYWQ6ZnVuY3Rpb24oKXtDS0VESVRPUi5wbHVnaW5zLmNvbnRleHRNZW51PUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHtiYXNlOkNLRURJVE9SLm1lbnUsJDpmdW5jdGlvbihhKXt0aGlzLmJhc2UuY2FsbCh0aGlzLGEse3BhbmVsOntjc3M6YS5jb25maWcuY29udGV4dG1lbnVfY29udGVudHNDc3MsXG5jbGFzc05hbWU6XCJja2VfbWVudV9wYW5lbFwiLGF0dHJpYnV0ZXM6e1wiYXJpYS1sYWJlbFwiOmEubGFuZy5jb250ZXh0bWVudS5vcHRpb25zfX19KX0scHJvdG86e2FkZFRhcmdldDpmdW5jdGlvbihhLGYpe2Z1bmN0aW9uIGUoKXtjPSExfXZhciBiLGM7YS5vbihcImNvbnRleHRtZW51XCIsZnVuY3Rpb24oYSl7YT1hLmRhdGE7dmFyIGU9Q0tFRElUT1IuZW52LndlYmtpdD9iOkNLRURJVE9SLmVudi5tYWM/YS4kLm1ldGFLZXk6YS4kLmN0cmxLZXk7aWYoIWZ8fCFlKWlmKGEucHJldmVudERlZmF1bHQoKSwhYyl7aWYoQ0tFRElUT1IuZW52Lm1hYyYmQ0tFRElUT1IuZW52LndlYmtpdCl7dmFyIGU9dGhpcy5lZGl0b3IsZD0obmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChhLmdldFRhcmdldCgpLGUuZWRpdGFibGUoKSkpLmNvbnRhaW5zKGZ1bmN0aW9uKGEpe3JldHVybiBhLmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKX0sITApO2QmJlwiZmFsc2VcIj09ZC5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikmJlxuZS5nZXRTZWxlY3Rpb24oKS5mYWtlKGQpfXZhciBkPWEuZ2V0VGFyZ2V0KCkuZ2V0RG9jdW1lbnQoKSxoPWEuZ2V0VGFyZ2V0KCkuZ2V0RG9jdW1lbnQoKS5nZXREb2N1bWVudEVsZW1lbnQoKSxlPSFkLmVxdWFscyhDS0VESVRPUi5kb2N1bWVudCksZD1kLmdldFdpbmRvdygpLmdldFNjcm9sbFBvc2l0aW9uKCksZz1lP2EuJC5jbGllbnRYOmEuJC5wYWdlWHx8ZC54K2EuJC5jbGllbnRYLGs9ZT9hLiQuY2xpZW50WTphLiQucGFnZVl8fGQueSthLiQuY2xpZW50WTtDS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7dGhpcy5vcGVuKGgsbnVsbCxnLGspfSxDS0VESVRPUi5lbnYuaWU/MjAwOjAsdGhpcyl9fSx0aGlzKTtpZihDS0VESVRPUi5lbnYud2Via2l0KXt2YXIgaz1mdW5jdGlvbigpe2I9MH07YS5vbihcImtleWRvd25cIixmdW5jdGlvbihhKXtiPUNLRURJVE9SLmVudi5tYWM/YS5kYXRhLiQubWV0YUtleTphLmRhdGEuJC5jdHJsS2V5fSk7YS5vbihcImtleXVwXCIsayk7XG5hLm9uKFwiY29udGV4dG1lbnVcIixrKX1DS0VESVRPUi5lbnYuZ2Vja28mJiFDS0VESVRPUi5lbnYubWFjJiYoYS5vbihcImtleWRvd25cIixmdW5jdGlvbihhKXthLmRhdGEuJC5zaGlmdEtleSYmMTIxPT09YS5kYXRhLiQua2V5Q29kZSYmKGM9ITApfSxudWxsLG51bGwsMCksYS5vbihcImtleXVwXCIsZSksYS5vbihcImNvbnRleHRtZW51XCIsZSkpfSxvcGVuOmZ1bmN0aW9uKGEsZixlLGIpeyExIT09dGhpcy5lZGl0b3IuY29uZmlnLmVuYWJsZUNvbnRleHRNZW51JiZ0aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKS5nZXRUeXBlKCkhPT1DS0VESVRPUi5TRUxFQ1RJT05fTk9ORSYmKHRoaXMuZWRpdG9yLmZvY3VzKCksYT1hfHxDS0VESVRPUi5kb2N1bWVudC5nZXREb2N1bWVudEVsZW1lbnQoKSx0aGlzLmVkaXRvci5zZWxlY3Rpb25DaGFuZ2UoMSksdGhpcy5zaG93KGEsZixlLGIpKX19fSl9LGJlZm9yZUluaXQ6ZnVuY3Rpb24oYSl7dmFyIGY9YS5jb250ZXh0TWVudT1uZXcgQ0tFRElUT1IucGx1Z2lucy5jb250ZXh0TWVudShhKTtcbmEub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXtmLmFkZFRhcmdldChhLmVkaXRhYmxlKCksITEhPT1hLmNvbmZpZy5icm93c2VyQ29udGV4dE1lbnVPbkN0cmwpfSk7YS5hZGRDb21tYW5kKFwiY29udGV4dE1lbnVcIix7ZXhlYzpmdW5jdGlvbihhKXt2YXIgYj0wLGM9MCxmPWEuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCksZj1mW2YubGVuZ3RoLTFdLmdldENsaWVudFJlY3RzKGEuZWRpdGFibGUoKS5pc0lubGluZSgpKTtpZihmPWZbZi5sZW5ndGgtMV0pYj1mW1wicnRsXCI9PT1hLmxhbmcuZGlyP1wibGVmdFwiOlwicmlnaHRcIl0sYz1mLmJvdHRvbTthLmNvbnRleHRNZW51Lm9wZW4oYS5kb2N1bWVudC5nZXRCb2R5KCkuZ2V0UGFyZW50KCksbnVsbCxiLGMpfX0pO2Euc2V0S2V5c3Ryb2tlKENLRURJVE9SLlNISUZUKzEyMSxcImNvbnRleHRNZW51XCIpO2Euc2V0S2V5c3Ryb2tlKENLRURJVE9SLkNUUkwrQ0tFRElUT1IuU0hJRlQrMTIxLFwiY29udGV4dE1lbnVcIil9fSksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsXG5lKXtmdW5jdGlvbiBsKGIpe2I9Zy5saXN0W2JdO3ZhciBkO2IuZXF1YWxzKGEuZWRpdGFibGUoKSl8fFwidHJ1ZVwiPT1iLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKT8oZD1hLmNyZWF0ZVJhbmdlKCksZC5zZWxlY3ROb2RlQ29udGVudHMoYiksZD1kLnNlbGVjdCgpKTooZD1hLmdldFNlbGVjdGlvbigpLGQuc2VsZWN0RWxlbWVudChiKSk7Q0tFRElUT1IuZW52LmllJiZhLmZpcmUoXCJzZWxlY3Rpb25DaGFuZ2VcIix7c2VsZWN0aW9uOmQscGF0aDpuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnRQYXRoKGIpfSk7YS5mb2N1cygpfWZ1bmN0aW9uIG0oKXtoJiZoLnNldEh0bWwoJ1xceDNjc3BhbiBjbGFzc1xceDNkXCJja2VfcGF0aF9lbXB0eVwiXFx4M2VcXHgyNm5ic3A7XFx4M2Mvc3BhblxceDNlJyk7ZGVsZXRlIGcubGlzdH12YXIgZD1hLnVpLnNwYWNlSWQoXCJwYXRoXCIpLGgsZz1hLl8uZWxlbWVudHNQYXRoLG49Zy5pZEJhc2U7ZS5odG1sKz0nXFx4M2NzcGFuIGlkXFx4M2RcIicrZCsnX2xhYmVsXCIgY2xhc3NcXHgzZFwiY2tlX3ZvaWNlX2xhYmVsXCJcXHgzZScrXG5hLmxhbmcuZWxlbWVudHNwYXRoLmVsZUxhYmVsKydcXHgzYy9zcGFuXFx4M2VcXHgzY3NwYW4gaWRcXHgzZFwiJytkKydcIiBjbGFzc1xceDNkXCJja2VfcGF0aFwiIHJvbGVcXHgzZFwiZ3JvdXBcIiBhcmlhLWxhYmVsbGVkYnlcXHgzZFwiJytkKydfbGFiZWxcIlxceDNlXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9wYXRoX2VtcHR5XCJcXHgzZVxceDI2bmJzcDtcXHgzYy9zcGFuXFx4M2VcXHgzYy9zcGFuXFx4M2UnO2Eub24oXCJ1aVJlYWR5XCIsZnVuY3Rpb24oKXt2YXIgYj1hLnVpLnNwYWNlKFwicGF0aFwiKTtiJiZhLmZvY3VzTWFuYWdlci5hZGQoYiwxKX0pO2cub25DbGljaz1sO3ZhciB3PUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKGwpLHg9Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oYixkKXt2YXIgZT1nLmlkQmFzZSxmO2Q9bmV3IENLRURJVE9SLmRvbS5ldmVudChkKTtmPVwicnRsXCI9PWEubGFuZy5kaXI7c3dpdGNoKGQuZ2V0S2V5c3Ryb2tlKCkpe2Nhc2UgZj8zOTozNzpjYXNlIDk6cmV0dXJuKGY9XG5DS0VESVRPUi5kb2N1bWVudC5nZXRCeUlkKGUrKGIrMSkpKXx8KGY9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChlK1wiMFwiKSksZi5mb2N1cygpLCExO2Nhc2UgZj8zNzozOTpjYXNlIENLRURJVE9SLlNISUZUKzk6cmV0dXJuKGY9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChlKyhiLTEpKSl8fChmPUNLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQoZSsoZy5saXN0Lmxlbmd0aC0xKSkpLGYuZm9jdXMoKSwhMTtjYXNlIDI3OnJldHVybiBhLmZvY3VzKCksITE7Y2FzZSAxMzpjYXNlIDMyOnJldHVybiBsKGIpLCExO2Nhc2UgQ0tFRElUT1IuQUxUKzEyMTpyZXR1cm4gYS5leGVjQ29tbWFuZChcInRvb2xiYXJGb2N1c1wiKSwhMX1yZXR1cm4hMH0pO2Eub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixmdW5jdGlvbihlKXtmb3IodmFyIGY9W10saz1nLmxpc3Q9W10sbD1bXSxtPWcuZmlsdGVycyxBPSEwLHk9ZS5kYXRhLnBhdGguZWxlbWVudHMsdD15Lmxlbmd0aDt0LS07KXt2YXIgdj15W3RdLEI9MDtcbmU9di5kYXRhKFwiY2tlLWRpc3BsYXktbmFtZVwiKT92LmRhdGEoXCJja2UtZGlzcGxheS1uYW1lXCIpOnYuZGF0YShcImNrZS1yZWFsLWVsZW1lbnQtdHlwZVwiKT92LmRhdGEoXCJja2UtcmVhbC1lbGVtZW50LXR5cGVcIik6di5nZXROYW1lKCk7KEE9di5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIik/XCJ0cnVlXCI9PXYuZ2V0QXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpOkEpfHx2Lmhhc0F0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKXx8KEI9MSk7Zm9yKHZhciBEPTA7RDxtLmxlbmd0aDtEKyspe3ZhciBDPW1bRF0odixlKTtpZighMT09PUMpe0I9MTticmVha31lPUN8fGV9Qnx8KGsudW5zaGlmdCh2KSxsLnVuc2hpZnQoZSkpfWs9ay5sZW5ndGg7Zm9yKG09MDttPGs7bSsrKWU9bFttXSxBPWEubGFuZy5lbGVtZW50c3BhdGguZWxlVGl0bGUucmVwbGFjZSgvJTEvLGUpLGU9Yi5vdXRwdXQoe2lkOm4rbSxsYWJlbDpBLHRleHQ6ZSxqc1RpdGxlOlwiamF2YXNjcmlwdDp2b2lkKCdcIitcbmUrXCInKVwiLGluZGV4Om0sa2V5RG93bkZuOngsY2xpY2tGbjp3fSksZi51bnNoaWZ0KGUpO2h8fChoPUNLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQoZCkpO2w9aDtsLnNldEh0bWwoZi5qb2luKFwiXCIpKydcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX3BhdGhfZW1wdHlcIlxceDNlXFx4MjZuYnNwO1xceDNjL3NwYW5cXHgzZScpO2EuZmlyZShcImVsZW1lbnRzUGF0aFVwZGF0ZVwiLHtzcGFjZTpsfSl9KTthLm9uKFwicmVhZE9ubHlcIixtKTthLm9uKFwiY29udGVudERvbVVubG9hZFwiLG0pO2EuYWRkQ29tbWFuZChcImVsZW1lbnRzUGF0aEZvY3VzXCIsZi50b29sYmFyRm9jdXMpO2Euc2V0S2V5c3Ryb2tlKENLRURJVE9SLkFMVCsxMjIsXCJlbGVtZW50c1BhdGhGb2N1c1wiKX12YXIgZj17dG9vbGJhckZvY3VzOntlZGl0b3JGb2N1czohMSxyZWFkT25seToxLGV4ZWM6ZnVuY3Rpb24oYSl7KGE9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChhLl8uZWxlbWVudHNQYXRoLmlkQmFzZStcIjBcIikpJiZhLmZvY3VzKENLRURJVE9SLmVudi5pZXx8XG5DS0VESVRPUi5lbnYuYWlyKX19fSxlPVwiXCI7Q0tFRElUT1IuZW52LmdlY2tvJiZDS0VESVRPUi5lbnYubWFjJiYoZSs9JyBvbmtleXByZXNzXFx4M2RcInJldHVybiBmYWxzZTtcIicpO0NLRURJVE9SLmVudi5nZWNrbyYmKGUrPScgb25ibHVyXFx4M2RcInRoaXMuc3R5bGUuY3NzVGV4dCBcXHgzZCB0aGlzLnN0eWxlLmNzc1RleHQ7XCInKTt2YXIgYj1DS0VESVRPUi5hZGRUZW1wbGF0ZShcInBhdGhJdGVtXCIsJ1xceDNjYSBpZFxceDNkXCJ7aWR9XCIgaHJlZlxceDNkXCJ7anNUaXRsZX1cIiB0YWJpbmRleFxceDNkXCItMVwiIGNsYXNzXFx4M2RcImNrZV9wYXRoX2l0ZW1cIiB0aXRsZVxceDNkXCJ7bGFiZWx9XCInK2UrJyBoaWRlZm9jdXNcXHgzZFwidHJ1ZVwiICBkcmFnZ2FibGVcXHgzZFwiZmFsc2VcIiAgb25kcmFnc3RhcnRcXHgzZFwicmV0dXJuIGZhbHNlO1wiIG9ua2V5ZG93blxceDNkXCJyZXR1cm4gQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKHtrZXlEb3duRm59LHtpbmRleH0sIGV2ZW50ICk7XCIgb25jbGlja1xceDNkXCJDS0VESVRPUi50b29scy5jYWxsRnVuY3Rpb24oe2NsaWNrRm59LHtpbmRleH0pOyByZXR1cm4gZmFsc2U7XCIgcm9sZVxceDNkXCJidXR0b25cIiBhcmlhLWxhYmVsXFx4M2RcIntsYWJlbH1cIlxceDNle3RleHR9XFx4M2MvYVxceDNlJyk7XG5DS0VESVRPUi5wbHVnaW5zLmFkZChcImVsZW1lbnRzcGF0aFwiLHtpbml0OmZ1bmN0aW9uKGIpe2IuXy5lbGVtZW50c1BhdGg9e2lkQmFzZTpcImNrZV9lbGVtZW50c3BhdGhfXCIrQ0tFRElUT1IudG9vbHMuZ2V0TmV4dE51bWJlcigpK1wiX1wiLGZpbHRlcnM6W119O2Iub24oXCJ1aVNwYWNlXCIsZnVuY3Rpb24oZSl7XCJib3R0b21cIj09ZS5kYXRhLnNwYWNlJiZhKGIsZS5kYXRhKX0pfX0pfSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGMpe3ZhciBrLGw7Yy5vbihcInJlZnJlc2hcIixmdW5jdGlvbihhKXt2YXIgYj1bZl0sYztmb3IoYyBpbiBhLmRhdGEuc3RhdGVzKWIucHVzaChhLmRhdGEuc3RhdGVzW2NdKTt0aGlzLnNldFN0YXRlKENLRURJVE9SLnRvb2xzLnNlYXJjaChiLGUpP2U6Zil9LGMsbnVsbCwxMDApO2Mub24oXCJleGVjXCIsZnVuY3Rpb24oYyl7az1hLmdldFNlbGVjdGlvbigpO2w9ay5jcmVhdGVCb29rbWFya3MoMSk7Yy5kYXRhfHwoYy5kYXRhPXt9KTtjLmRhdGEuZG9uZT0hMX0sYyxcbm51bGwsMCk7Yy5vbihcImV4ZWNcIixmdW5jdGlvbigpe2EuZm9yY2VOZXh0U2VsZWN0aW9uQ2hlY2soKTtrLnNlbGVjdEJvb2ttYXJrcyhsKX0sYyxudWxsLDEwMCl9dmFyIGY9Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQsZT1DS0VESVRPUi5UUklTVEFURV9PRkY7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJpbmRlbnRcIix7aW5pdDpmdW5jdGlvbihiKXt2YXIgYz1DS0VESVRPUi5wbHVnaW5zLmluZGVudC5nZW5lcmljRGVmaW5pdGlvbjthKGIsYi5hZGRDb21tYW5kKFwiaW5kZW50XCIsbmV3IGMoITApKSk7YShiLGIuYWRkQ29tbWFuZChcIm91dGRlbnRcIixuZXcgYykpO2IudWkuYWRkQnV0dG9uJiYoYi51aS5hZGRCdXR0b24oXCJJbmRlbnRcIix7bGFiZWw6Yi5sYW5nLmluZGVudC5pbmRlbnQsY29tbWFuZDpcImluZGVudFwiLGRpcmVjdGlvbmFsOiEwLHRvb2xiYXI6XCJpbmRlbnQsMjBcIn0pLGIudWkuYWRkQnV0dG9uKFwiT3V0ZGVudFwiLHtsYWJlbDpiLmxhbmcuaW5kZW50Lm91dGRlbnQsY29tbWFuZDpcIm91dGRlbnRcIixcbmRpcmVjdGlvbmFsOiEwLHRvb2xiYXI6XCJpbmRlbnQsMTBcIn0pKTtiLm9uKFwiZGlyQ2hhbmdlZFwiLGZ1bmN0aW9uKGEpe3ZhciBjPWIuY3JlYXRlUmFuZ2UoKSxlPWEuZGF0YS5ub2RlO2Muc2V0U3RhcnRCZWZvcmUoZSk7Yy5zZXRFbmRBZnRlcihlKTtmb3IodmFyIGQ9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYyksZjtmPWQubmV4dCgpOylpZihmLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVClpZighZi5lcXVhbHMoZSkmJmYuZ2V0RGlyZWN0aW9uKCkpYy5zZXRTdGFydEFmdGVyKGYpLGQ9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoYyk7ZWxzZXt2YXIgZz1iLmNvbmZpZy5pbmRlbnRDbGFzc2VzO2lmKGcpZm9yKHZhciBuPVwibHRyXCI9PWEuZGF0YS5kaXI/W1wiX3J0bFwiLFwiXCJdOltcIlwiLFwiX3J0bFwiXSx3PTA7dzxnLmxlbmd0aDt3KyspZi5oYXNDbGFzcyhnW3ddK25bMF0pJiYoZi5yZW1vdmVDbGFzcyhnW3ddK25bMF0pLGYuYWRkQ2xhc3MoZ1t3XStuWzFdKSk7Zz1mLmdldFN0eWxlKFwibWFyZ2luLXJpZ2h0XCIpO1xubj1mLmdldFN0eWxlKFwibWFyZ2luLWxlZnRcIik7Zz9mLnNldFN0eWxlKFwibWFyZ2luLWxlZnRcIixnKTpmLnJlbW92ZVN0eWxlKFwibWFyZ2luLWxlZnRcIik7bj9mLnNldFN0eWxlKFwibWFyZ2luLXJpZ2h0XCIsbik6Zi5yZW1vdmVTdHlsZShcIm1hcmdpbi1yaWdodFwiKX19KX19KTtDS0VESVRPUi5wbHVnaW5zLmluZGVudD17Z2VuZXJpY0RlZmluaXRpb246ZnVuY3Rpb24oYSl7dGhpcy5pc0luZGVudD0hIWE7dGhpcy5zdGFydERpc2FibGVkPSF0aGlzLmlzSW5kZW50fSxzcGVjaWZpY0RlZmluaXRpb246ZnVuY3Rpb24oYSxjLGUpe3RoaXMubmFtZT1jO3RoaXMuZWRpdG9yPWE7dGhpcy5qb2JzPXt9O3RoaXMuZW50ZXJCcj1hLmNvbmZpZy5lbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX0JSO3RoaXMuaXNJbmRlbnQ9ISFlO3RoaXMucmVsYXRlZEdsb2JhbD1lP1wiaW5kZW50XCI6XCJvdXRkZW50XCI7dGhpcy5pbmRlbnRLZXk9ZT85OkNLRURJVE9SLlNISUZUKzk7dGhpcy5kYXRhYmFzZT17fX0scmVnaXN0ZXJDb21tYW5kczpmdW5jdGlvbihhLFxuYyl7YS5vbihcInBsdWdpbnNMb2FkZWRcIixmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiBjKShmdW5jdGlvbihhLGIpe3ZhciBkPWEuZ2V0Q29tbWFuZChiLnJlbGF0ZWRHbG9iYWwpLGM7Zm9yKGMgaW4gYi5qb2JzKWQub24oXCJleGVjXCIsZnVuY3Rpb24oZCl7ZC5kYXRhLmRvbmV8fChhLmZpcmUoXCJsb2NrU25hcHNob3RcIiksYi5leGVjSm9iKGEsYykmJihkLmRhdGEuZG9uZT0hMCksYS5maXJlKFwidW5sb2NrU25hcHNob3RcIiksQ0tFRElUT1IuZG9tLmVsZW1lbnQuY2xlYXJBbGxNYXJrZXJzKGIuZGF0YWJhc2UpKX0sdGhpcyxudWxsLGMpLGQub24oXCJyZWZyZXNoXCIsZnVuY3Rpb24oZCl7ZC5kYXRhLnN0YXRlc3x8KGQuZGF0YS5zdGF0ZXM9e30pO2QuZGF0YS5zdGF0ZXNbYi5uYW1lK1wiQFwiK2NdPWIucmVmcmVzaEpvYihhLGMsZC5kYXRhLnBhdGgpfSx0aGlzLG51bGwsYyk7YS5hZGRGZWF0dXJlKGIpfSkodGhpcyxjW2FdKX0pfX07Q0tFRElUT1IucGx1Z2lucy5pbmRlbnQuZ2VuZXJpY0RlZmluaXRpb24ucHJvdG90eXBlPVxue2NvbnRleHQ6XCJwXCIsZXhlYzpmdW5jdGlvbigpe319O0NLRURJVE9SLnBsdWdpbnMuaW5kZW50LnNwZWNpZmljRGVmaW5pdGlvbi5wcm90b3R5cGU9e2V4ZWNKb2I6ZnVuY3Rpb24oYSxjKXt2YXIgZT10aGlzLmpvYnNbY107aWYoZS5zdGF0ZSE9ZilyZXR1cm4gZS5leGVjLmNhbGwodGhpcyxhKX0scmVmcmVzaEpvYjpmdW5jdGlvbihhLGMsZSl7Yz10aGlzLmpvYnNbY107YS5hY3RpdmVGaWx0ZXIuY2hlY2tGZWF0dXJlKHRoaXMpP2Muc3RhdGU9Yy5yZWZyZXNoLmNhbGwodGhpcyxhLGUpOmMuc3RhdGU9ZjtyZXR1cm4gYy5zdGF0ZX0sZ2V0Q29udGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jb250YWlucyh0aGlzLmNvbnRleHQpfX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2Z1bmN0aW9uIGIoZCl7Zm9yKHZhciBmPWwuc3RhcnRDb250YWluZXIscT1sLmVuZENvbnRhaW5lcjtmJiYhZi5nZXRQYXJlbnQoKS5lcXVhbHMoZCk7KWY9Zi5nZXRQYXJlbnQoKTtmb3IoO3EmJiFxLmdldFBhcmVudCgpLmVxdWFscyhkKTspcT1cbnEuZ2V0UGFyZW50KCk7aWYoIWZ8fCFxKXJldHVybiExO2Zvcih2YXIgcD1bXSx5PSExOyF5OylmLmVxdWFscyhxKSYmKHk9ITApLHAucHVzaChmKSxmPWYuZ2V0TmV4dCgpO2lmKDE+cC5sZW5ndGgpcmV0dXJuITE7Zj1kLmdldFBhcmVudHMoITApO2ZvcihxPTA7cTxmLmxlbmd0aDtxKyspaWYoZltxXS5nZXROYW1lJiZrW2ZbcV0uZ2V0TmFtZSgpXSl7ZD1mW3FdO2JyZWFrfWZvcih2YXIgZj1jLmlzSW5kZW50PzE6LTEscT1wWzBdLHA9cFtwLmxlbmd0aC0xXSx5PUNLRURJVE9SLnBsdWdpbnMubGlzdC5saXN0VG9BcnJheShkLGcpLHQ9eVtwLmdldEN1c3RvbURhdGEoXCJsaXN0YXJyYXlfaW5kZXhcIildLmluZGVudCxxPXEuZ2V0Q3VzdG9tRGF0YShcImxpc3RhcnJheV9pbmRleFwiKTtxPD1wLmdldEN1c3RvbURhdGEoXCJsaXN0YXJyYXlfaW5kZXhcIik7cSsrKWlmKHlbcV0uaW5kZW50Kz1mLDA8Zil7Zm9yKHZhciB2PXlbcV0ucGFyZW50LEI9cS0xOzA8PUI7Qi0tKWlmKHlbQl0uaW5kZW50PT09XG5mKXt2PXlbQl0ucGFyZW50O2JyZWFrfXlbcV0ucGFyZW50PW5ldyBDS0VESVRPUi5kb20uZWxlbWVudCh2LmdldE5hbWUoKSx2LmdldERvY3VtZW50KCkpfWZvcihxPXAuZ2V0Q3VzdG9tRGF0YShcImxpc3RhcnJheV9pbmRleFwiKSsxO3E8eS5sZW5ndGgmJnlbcV0uaW5kZW50PnQ7cSsrKXlbcV0uaW5kZW50Kz1mO2Y9Q0tFRElUT1IucGx1Z2lucy5saXN0LmFycmF5VG9MaXN0KHksZyxudWxsLGEuY29uZmlnLmVudGVyTW9kZSxkLmdldERpcmVjdGlvbigpKTtpZighYy5pc0luZGVudCl7dmFyIHI7aWYoKHI9ZC5nZXRQYXJlbnQoKSkmJnIuaXMoXCJsaVwiKSlmb3IodmFyIHA9Zi5saXN0Tm9kZS5nZXRDaGlsZHJlbigpLEM9W10seCxxPXAuY291bnQoKS0xOzA8PXE7cS0tKSh4PXAuZ2V0SXRlbShxKSkmJnguaXMmJnguaXMoXCJsaVwiKSYmQy5wdXNoKHgpfWYmJmYubGlzdE5vZGUucmVwbGFjZShkKTtpZihDJiZDLmxlbmd0aClmb3IocT0wO3E8Qy5sZW5ndGg7cSsrKXtmb3IoeD1kPUNbcV07KHg9XG54LmdldE5leHQoKSkmJnguaXMmJnguZ2V0TmFtZSgpaW4gazspQ0tFRElUT1IuZW52Lm5lZWRzTmJzcEZpbGxlciYmIWQuZ2V0Rmlyc3QoZSkmJmQuYXBwZW5kKGwuZG9jdW1lbnQuY3JlYXRlVGV4dChcIsKgXCIpKSxkLmFwcGVuZCh4KTtkLmluc2VydEFmdGVyKHIpfWYmJmEuZmlyZShcImNvbnRlbnREb21JbnZhbGlkYXRlZFwiKTtyZXR1cm4hMH1mb3IodmFyIGM9dGhpcyxnPXRoaXMuZGF0YWJhc2Usaz10aGlzLmNvbnRleHQsbCx4PWEuZ2V0U2VsZWN0aW9uKCkseD0oeCYmeC5nZXRSYW5nZXMoKSkuY3JlYXRlSXRlcmF0b3IoKTtsPXguZ2V0TmV4dFJhbmdlKCk7KXtmb3IodmFyIHI9bC5nZXRDb21tb25BbmNlc3RvcigpO3ImJihyLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVHx8IWtbci5nZXROYW1lKCldKTspe2lmKGEuZWRpdGFibGUoKS5lcXVhbHMocikpe3I9ITE7YnJlYWt9cj1yLmdldFBhcmVudCgpfXJ8fChyPWwuc3RhcnRQYXRoKCkuY29udGFpbnMoaykpJiZsLnNldEVuZEF0KHIsXG5DS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKTtpZighcil7dmFyIHA9bC5nZXRFbmNsb3NlZE5vZGUoKTtwJiZwLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmcC5nZXROYW1lKClpbiBrJiYobC5zZXRTdGFydEF0KHAsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpLGwuc2V0RW5kQXQocCxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxyPXApfXImJmwuc3RhcnRDb250YWluZXIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZsLnN0YXJ0Q29udGFpbmVyLmdldE5hbWUoKWluIGsmJihwPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGwpLHAuZXZhbHVhdG9yPWYsbC5zdGFydENvbnRhaW5lcj1wLm5leHQoKSk7ciYmbC5lbmRDb250YWluZXIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZsLmVuZENvbnRhaW5lci5nZXROYW1lKClpbiBrJiYocD1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihsKSxwLmV2YWx1YXRvcj1mLGwuZW5kQ29udGFpbmVyPXAucHJldmlvdXMoKSk7XG5pZihyKXJldHVybiBiKHIpfXJldHVybiAwfWZ1bmN0aW9uIGYoYSl7cmV0dXJuIGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmlzKFwibGlcIil9ZnVuY3Rpb24gZShhKXtyZXR1cm4gYihhKSYmYyhhKX12YXIgYj1DS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKCEwKSxjPUNLRURJVE9SLmRvbS53YWxrZXIuYm9va21hcmsoITEsITApLGs9Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQsbD1DS0VESVRPUi5UUklTVEFURV9PRkY7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJpbmRlbnRsaXN0XCIse3JlcXVpcmVzOlwiaW5kZW50XCIsaW5pdDpmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGIpe2Muc3BlY2lmaWNEZWZpbml0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLnJlcXVpcmVkQ29udGVudD1bXCJ1bFwiLFwib2xcIl07Yi5vbihcImtleVwiLGZ1bmN0aW9uKGEpe3ZhciBkPWIuZWxlbWVudFBhdGgoKTtpZihcInd5c2l3eWdcIj09Yi5tb2RlJiZhLmRhdGEua2V5Q29kZT09dGhpcy5pbmRlbnRLZXkmJlxuZCl7dmFyIGM9dGhpcy5nZXRDb250ZXh0KGQpOyFjfHx0aGlzLmlzSW5kZW50JiZDS0VESVRPUi5wbHVnaW5zLmluZGVudExpc3QuZmlyc3RJdGVtSW5QYXRoKHRoaXMuY29udGV4dCxkLGMpfHwoYi5leGVjQ29tbWFuZCh0aGlzLnJlbGF0ZWRHbG9iYWwpLGEuY2FuY2VsKCkpfX0sdGhpcyk7dGhpcy5qb2JzW3RoaXMuaXNJbmRlbnQ/MTA6MzBdPXtyZWZyZXNoOnRoaXMuaXNJbmRlbnQ/ZnVuY3Rpb24oYSxiKXt2YXIgZD10aGlzLmdldENvbnRleHQoYiksYz1DS0VESVRPUi5wbHVnaW5zLmluZGVudExpc3QuZmlyc3RJdGVtSW5QYXRoKHRoaXMuY29udGV4dCxiLGQpO3JldHVybiBkJiZ0aGlzLmlzSW5kZW50JiYhYz9sOmt9OmZ1bmN0aW9uKGEsYil7cmV0dXJuIXRoaXMuZ2V0Q29udGV4dChiKXx8dGhpcy5pc0luZGVudD9rOmx9LGV4ZWM6Q0tFRElUT1IudG9vbHMuYmluZChhLHRoaXMpfX12YXIgYz1DS0VESVRPUi5wbHVnaW5zLmluZGVudDtjLnJlZ2lzdGVyQ29tbWFuZHMoYix7aW5kZW50bGlzdDpuZXcgZChiLFxuXCJpbmRlbnRsaXN0XCIsITApLG91dGRlbnRsaXN0Om5ldyBkKGIsXCJvdXRkZW50bGlzdFwiKX0pO0NLRURJVE9SLnRvb2xzLmV4dGVuZChkLnByb3RvdHlwZSxjLnNwZWNpZmljRGVmaW5pdGlvbi5wcm90b3R5cGUse2NvbnRleHQ6e29sOjEsdWw6MX19KX19KTtDS0VESVRPUi5wbHVnaW5zLmluZGVudExpc3Q9e307Q0tFRElUT1IucGx1Z2lucy5pbmRlbnRMaXN0LmZpcnN0SXRlbUluUGF0aD1mdW5jdGlvbihhLGIsYyl7dmFyIGU9Yi5jb250YWlucyhmKTtjfHwoYz1iLmNvbnRhaW5zKGEpKTtyZXR1cm4gYyYmZSYmZS5lcXVhbHMoYy5nZXRGaXJzdChmKSl9fSgpLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsZCxjKXtmb3IodmFyIGU9Q0tFRElUT1IucGx1Z2lucy5saXN0Lmxpc3RUb0FycmF5KGIucm9vdCxkKSxnPVtdLGY9MDtmPGIuY29udGVudHMubGVuZ3RoO2YrKyl7dmFyIGg9Yi5jb250ZW50c1tmXTsoaD1oLmdldEFzY2VuZGFudChcImxpXCIsITApKSYmIWguZ2V0Q3VzdG9tRGF0YShcImxpc3RfaXRlbV9wcm9jZXNzZWRcIikmJlxuKGcucHVzaChoKSxDS0VESVRPUi5kb20uZWxlbWVudC5zZXRNYXJrZXIoZCxoLFwibGlzdF9pdGVtX3Byb2Nlc3NlZFwiLCEwKSl9Zm9yKHZhciBoPWIucm9vdC5nZXREb2N1bWVudCgpLGssbCxmPTA7ZjxnLmxlbmd0aDtmKyspe3ZhciBtPWdbZl0uZ2V0Q3VzdG9tRGF0YShcImxpc3RhcnJheV9pbmRleFwiKTtrPWVbbV0ucGFyZW50O2suaXModGhpcy50eXBlKXx8KGw9aC5jcmVhdGVFbGVtZW50KHRoaXMudHlwZSksay5jb3B5QXR0cmlidXRlcyhsLHtzdGFydDoxLHR5cGU6MX0pLGwucmVtb3ZlU3R5bGUoXCJsaXN0LXN0eWxlLXR5cGVcIiksZVttXS5wYXJlbnQ9bCl9ZD1DS0VESVRPUi5wbHVnaW5zLmxpc3QuYXJyYXlUb0xpc3QoZSxkLG51bGwsYS5jb25maWcuZW50ZXJNb2RlKTtmb3IodmFyIG4sZT1kLmxpc3ROb2RlLmdldENoaWxkQ291bnQoKSxmPTA7ZjxlJiYobj1kLmxpc3ROb2RlLmdldENoaWxkKGYpKTtmKyspbi5nZXROYW1lKCk9PXRoaXMudHlwZSYmYy5wdXNoKG4pO2QubGlzdE5vZGUucmVwbGFjZShiLnJvb3QpO1xuYS5maXJlKFwiY29udGVudERvbUludmFsaWRhdGVkXCIpfWZ1bmN0aW9uIGYoYSxiLGQpe3ZhciBjPWIuY29udGVudHMsZT1iLnJvb3QuZ2V0RG9jdW1lbnQoKSxnPVtdO2lmKDE9PWMubGVuZ3RoJiZjWzBdLmVxdWFscyhiLnJvb3QpKXt2YXIgZj1lLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIik7Y1swXS5tb3ZlQ2hpbGRyZW4mJmNbMF0ubW92ZUNoaWxkcmVuKGYpO2NbMF0uYXBwZW5kKGYpO2NbMF09Zn1iPWIuY29udGVudHNbMF0uZ2V0UGFyZW50KCk7Zm9yKGY9MDtmPGMubGVuZ3RoO2YrKyliPWIuZ2V0Q29tbW9uQW5jZXN0b3IoY1tmXS5nZXRQYXJlbnQoKSk7YT1hLmNvbmZpZy51c2VDb21wdXRlZFN0YXRlO2Zvcih2YXIgaCxrLGY9MDtmPGMubGVuZ3RoO2YrKylmb3IodmFyIGw9Y1tmXSxtO209bC5nZXRQYXJlbnQoKTspe2lmKG0uZXF1YWxzKGIpKXtnLnB1c2gobCk7IWsmJmwuZ2V0RGlyZWN0aW9uKCkmJihrPTEpO2w9bC5nZXREaXJlY3Rpb24oYSk7bnVsbCE9PWgmJihoPWgmJmghPVxubD9udWxsOmwpO2JyZWFrfWw9bX1pZighKDE+Zy5sZW5ndGgpKXtjPWdbZy5sZW5ndGgtMV0uZ2V0TmV4dCgpO2Y9ZS5jcmVhdGVFbGVtZW50KHRoaXMudHlwZSk7Zm9yKGQucHVzaChmKTtnLmxlbmd0aDspZD1nLnNoaWZ0KCksYT1lLmNyZWF0ZUVsZW1lbnQoXCJsaVwiKSxsPWQsbC5pcyhcInByZVwiKXx8ci50ZXN0KGwuZ2V0TmFtZSgpKXx8XCJmYWxzZVwiPT1sLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKT9kLmFwcGVuZFRvKGEpOihkLmNvcHlBdHRyaWJ1dGVzKGEpLGgmJmQuZ2V0RGlyZWN0aW9uKCkmJihhLnJlbW92ZVN0eWxlKFwiZGlyZWN0aW9uXCIpLGEucmVtb3ZlQXR0cmlidXRlKFwiZGlyXCIpKSxkLm1vdmVDaGlsZHJlbihhKSxkLnJlbW92ZSgpKSxhLmFwcGVuZFRvKGYpO2gmJmsmJmYuc2V0QXR0cmlidXRlKFwiZGlyXCIsaCk7Yz9mLmluc2VydEJlZm9yZShjKTpmLmFwcGVuZFRvKGIpfX1mdW5jdGlvbiBlKGEsYixkKXtmdW5jdGlvbiBjKGQpe2lmKCEoIShsPWtbZD9cImdldEZpcnN0XCI6XG5cImdldExhc3RcIl0oKSl8fGwuaXMmJmwuaXNCbG9ja0JvdW5kYXJ5KCl8fCEobT1iLnJvb3RbZD9cImdldFByZXZpb3VzXCI6XCJnZXROZXh0XCJdKENLRURJVE9SLmRvbS53YWxrZXIuaW52aXNpYmxlKCEwKSkpfHxtLmlzJiZtLmlzQmxvY2tCb3VuZGFyeSh7YnI6MX0pKSlhLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJiclwiKVtkP1wiaW5zZXJ0QmVmb3JlXCI6XCJpbnNlcnRBZnRlclwiXShsKX1mb3IodmFyIGU9Q0tFRElUT1IucGx1Z2lucy5saXN0Lmxpc3RUb0FycmF5KGIucm9vdCxkKSxnPVtdLGY9MDtmPGIuY29udGVudHMubGVuZ3RoO2YrKyl7dmFyIGg9Yi5jb250ZW50c1tmXTsoaD1oLmdldEFzY2VuZGFudChcImxpXCIsITApKSYmIWguZ2V0Q3VzdG9tRGF0YShcImxpc3RfaXRlbV9wcm9jZXNzZWRcIikmJihnLnB1c2goaCksQ0tFRElUT1IuZG9tLmVsZW1lbnQuc2V0TWFya2VyKGQsaCxcImxpc3RfaXRlbV9wcm9jZXNzZWRcIiwhMCkpfWg9bnVsbDtmb3IoZj0wO2Y8Zy5sZW5ndGg7ZisrKWg9Z1tmXS5nZXRDdXN0b21EYXRhKFwibGlzdGFycmF5X2luZGV4XCIpLFxuZVtoXS5pbmRlbnQ9LTE7Zm9yKGY9aCsxO2Y8ZS5sZW5ndGg7ZisrKWlmKGVbZl0uaW5kZW50PmVbZi0xXS5pbmRlbnQrMSl7Zz1lW2YtMV0uaW5kZW50KzEtZVtmXS5pbmRlbnQ7Zm9yKGg9ZVtmXS5pbmRlbnQ7ZVtmXSYmZVtmXS5pbmRlbnQ+PWg7KWVbZl0uaW5kZW50Kz1nLGYrKztmLS19dmFyIGs9Q0tFRElUT1IucGx1Z2lucy5saXN0LmFycmF5VG9MaXN0KGUsZCxudWxsLGEuY29uZmlnLmVudGVyTW9kZSxiLnJvb3QuZ2V0QXR0cmlidXRlKFwiZGlyXCIpKS5saXN0Tm9kZSxsLG07YyghMCk7YygpO2sucmVwbGFjZShiLnJvb3QpO2EuZmlyZShcImNvbnRlbnREb21JbnZhbGlkYXRlZFwiKX1mdW5jdGlvbiBiKGEsYil7dGhpcy5uYW1lPWE7dGhpcy5jb250ZXh0PXRoaXMudHlwZT1iO3RoaXMuYWxsb3dlZENvbnRlbnQ9YitcIiBsaVwiO3RoaXMucmVxdWlyZWRDb250ZW50PWJ9ZnVuY3Rpb24gYyhhLGIsZCxjKXtmb3IodmFyIGUsZztlPWFbYz9cImdldExhc3RcIjpcImdldEZpcnN0XCJdKHApOykoZz1cbmUuZ2V0RGlyZWN0aW9uKDEpKSE9PWIuZ2V0RGlyZWN0aW9uKDEpJiZlLnNldEF0dHJpYnV0ZShcImRpclwiLGcpLGUucmVtb3ZlKCksZD9lW2M/XCJpbnNlcnRCZWZvcmVcIjpcImluc2VydEFmdGVyXCJdKGQpOmIuYXBwZW5kKGUsYyksZD1lfWZ1bmN0aW9uIGsoYSl7ZnVuY3Rpb24gYihkKXt2YXIgZT1hW2Q/XCJnZXRQcmV2aW91c1wiOlwiZ2V0TmV4dFwiXSh3KTtlJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5pcyhhLmdldE5hbWUoKSkmJihjKGEsZSxudWxsLCFkKSxhLnJlbW92ZSgpLGE9ZSl9YigpO2IoMSl9ZnVuY3Rpb24gbChhKXtyZXR1cm4gYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihhLmdldE5hbWUoKWluIENLRURJVE9SLmR0ZC4kYmxvY2t8fGEuZ2V0TmFtZSgpaW4gQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSkmJkNLRURJVE9SLmR0ZFthLmdldE5hbWUoKV1bXCIjXCJdfWZ1bmN0aW9uIG0oYSxiLGUpe2EuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtlLmVubGFyZ2UoQ0tFRElUT1IuRU5MQVJHRV9MSVNUX0lURU1fQ09OVEVOVFMpO1xudmFyIGc9ZS5leHRyYWN0Q29udGVudHMoKTtiLnRyaW0oITEsITApO3ZhciBmPWIuY3JlYXRlQm9va21hcmsoKSxoPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgoYi5zdGFydENvbnRhaW5lciksbD1oLmJsb2NrLGg9aC5sYXN0RWxlbWVudC5nZXRBc2NlbmRhbnQoXCJsaVwiLDEpfHxsLG09bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChlLnN0YXJ0Q29udGFpbmVyKSxuPW0uY29udGFpbnMoQ0tFRElUT1IuZHRkLiRsaXN0SXRlbSksbT1tLmNvbnRhaW5zKENLRURJVE9SLmR0ZC4kbGlzdCk7bD8obD1sLmdldEJvZ3VzKCkpJiZsLnJlbW92ZSgpOm0mJihsPW0uZ2V0UHJldmlvdXModykpJiZ4KGwpJiZsLnJlbW92ZSgpOyhsPWcuZ2V0TGFzdCgpKSYmbC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmwuaXMoXCJiclwiKSYmbC5yZW1vdmUoKTsobD1iLnN0YXJ0Q29udGFpbmVyLmdldENoaWxkKGIuc3RhcnRPZmZzZXQpKT9nLmluc2VydEJlZm9yZShsKTpiLnN0YXJ0Q29udGFpbmVyLmFwcGVuZChnKTtcbm4mJihnPWQobikpJiYoaC5jb250YWlucyhuKT8oYyhnLG4uZ2V0UGFyZW50KCksbiksZy5yZW1vdmUoKSk6aC5hcHBlbmQoZykpO2Zvcig7ZS5jaGVja1N0YXJ0T2ZCbG9jaygpJiZlLmNoZWNrRW5kT2ZCbG9jaygpOyl7bT1lLnN0YXJ0UGF0aCgpO2c9bS5ibG9jaztpZighZylicmVhaztnLmlzKFwibGlcIikmJihoPWcuZ2V0UGFyZW50KCksZy5lcXVhbHMoaC5nZXRMYXN0KHcpKSYmZy5lcXVhbHMoaC5nZXRGaXJzdCh3KSkmJihnPWgpKTtlLm1vdmVUb1Bvc2l0aW9uKGcsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKTtnLnJlbW92ZSgpfWU9ZS5jbG9uZSgpO2c9YS5lZGl0YWJsZSgpO2Uuc2V0RW5kQXQoZyxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKTtlPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGUpO2UuZXZhbHVhdG9yPWZ1bmN0aW9uKGEpe3JldHVybiB3KGEpJiYheChhKX07KGU9ZS5uZXh0KCkpJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5nZXROYW1lKClpblxuQ0tFRElUT1IuZHRkLiRsaXN0JiZrKGUpO2IubW92ZVRvQm9va21hcmsoZik7Yi5zZWxlY3QoKTthLmZpcmUoXCJzYXZlU25hcHNob3RcIil9ZnVuY3Rpb24gZChhKXtyZXR1cm4oYT1hLmdldExhc3QodykpJiZhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5nZXROYW1lKClpbiBoP2E6bnVsbH12YXIgaD17b2w6MSx1bDoxfSxnPUNLRURJVE9SLmRvbS53YWxrZXIud2hpdGVzcGFjZXMoKSxuPUNLRURJVE9SLmRvbS53YWxrZXIuYm9va21hcmsoKSx3PWZ1bmN0aW9uKGEpe3JldHVybiEoZyhhKXx8bihhKSl9LHg9Q0tFRElUT1IuZG9tLndhbGtlci5ib2d1cygpO0NLRURJVE9SLnBsdWdpbnMubGlzdD17bGlzdFRvQXJyYXk6ZnVuY3Rpb24oYSxiLGQsYyxlKXtpZighaFthLmdldE5hbWUoKV0pcmV0dXJuW107Y3x8KGM9MCk7ZHx8KGQ9W10pO2Zvcih2YXIgZz0wLGY9YS5nZXRDaGlsZENvdW50KCk7ZzxmO2crKyl7dmFyIGs9YS5nZXRDaGlsZChnKTtrLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXG5rLmdldE5hbWUoKWluIENLRURJVE9SLmR0ZC4kbGlzdCYmQ0tFRElUT1IucGx1Z2lucy5saXN0Lmxpc3RUb0FycmF5KGssYixkLGMrMSk7aWYoXCJsaVwiPT1rLiQubm9kZU5hbWUudG9Mb3dlckNhc2UoKSl7dmFyIGw9e3BhcmVudDphLGluZGVudDpjLGVsZW1lbnQ6ayxjb250ZW50czpbXX07ZT9sLmdyYW5kcGFyZW50PWU6KGwuZ3JhbmRwYXJlbnQ9YS5nZXRQYXJlbnQoKSxsLmdyYW5kcGFyZW50JiZcImxpXCI9PWwuZ3JhbmRwYXJlbnQuJC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpJiYobC5ncmFuZHBhcmVudD1sLmdyYW5kcGFyZW50LmdldFBhcmVudCgpKSk7YiYmQ0tFRElUT1IuZG9tLmVsZW1lbnQuc2V0TWFya2VyKGIsayxcImxpc3RhcnJheV9pbmRleFwiLGQubGVuZ3RoKTtkLnB1c2gobCk7Zm9yKHZhciBtPTAsbj1rLmdldENoaWxkQ291bnQoKSxwO208bjttKyspcD1rLmdldENoaWxkKG0pLHAudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZoW3AuZ2V0TmFtZSgpXT9DS0VESVRPUi5wbHVnaW5zLmxpc3QubGlzdFRvQXJyYXkocCxcbmIsZCxjKzEsbC5ncmFuZHBhcmVudCk6bC5jb250ZW50cy5wdXNoKHApfX1yZXR1cm4gZH0sYXJyYXlUb0xpc3Q6ZnVuY3Rpb24oYSxiLGQsYyxlKXtkfHwoZD0wKTtpZighYXx8YS5sZW5ndGg8ZCsxKXJldHVybiBudWxsO2Zvcih2YXIgZyxmPWFbZF0ucGFyZW50LmdldERvY3VtZW50KCksaz1uZXcgQ0tFRElUT1IuZG9tLmRvY3VtZW50RnJhZ21lbnQoZiksbD1udWxsLG09ZCxwPU1hdGgubWF4KGFbZF0uaW5kZW50LDApLHI9bnVsbCx4LEcsTT1jPT1DS0VESVRPUi5FTlRFUl9QP1wicFwiOlwiZGl2XCI7Oyl7dmFyIEg9YVttXTtnPUguZ3JhbmRwYXJlbnQ7eD1ILmVsZW1lbnQuZ2V0RGlyZWN0aW9uKDEpO2lmKEguaW5kZW50PT1wKXtsJiZhW21dLnBhcmVudC5nZXROYW1lKCk9PWwuZ2V0TmFtZSgpfHwobD1hW21dLnBhcmVudC5jbG9uZSghMSwxKSxlJiZsLnNldEF0dHJpYnV0ZShcImRpclwiLGUpLGsuYXBwZW5kKGwpKTtyPWwuYXBwZW5kKEguZWxlbWVudC5jbG9uZSgwLDEpKTt4IT1sLmdldERpcmVjdGlvbigxKSYmXG5yLnNldEF0dHJpYnV0ZShcImRpclwiLHgpO2ZvcihnPTA7ZzxILmNvbnRlbnRzLmxlbmd0aDtnKyspci5hcHBlbmQoSC5jb250ZW50c1tnXS5jbG9uZSgxLDEpKTttKyt9ZWxzZSBpZihILmluZGVudD09TWF0aC5tYXgocCwwKSsxKUg9YVttLTFdLmVsZW1lbnQuZ2V0RGlyZWN0aW9uKDEpLG09Q0tFRElUT1IucGx1Z2lucy5saXN0LmFycmF5VG9MaXN0KGEsbnVsbCxtLGMsSCE9eD94Om51bGwpLCFyLmdldENoaWxkQ291bnQoKSYmQ0tFRElUT1IuZW52Lm5lZWRzTmJzcEZpbGxlciYmNz49Zi4kLmRvY3VtZW50TW9kZSYmci5hcHBlbmQoZi5jcmVhdGVUZXh0KFwiwqBcIikpLHIuYXBwZW5kKG0ubGlzdE5vZGUpLG09bS5uZXh0SW5kZXg7ZWxzZSBpZigtMT09SC5pbmRlbnQmJiFkJiZnKXtoW2cuZ2V0TmFtZSgpXT8ocj1ILmVsZW1lbnQuY2xvbmUoITEsITApLHghPWcuZ2V0RGlyZWN0aW9uKDEpJiZyLnNldEF0dHJpYnV0ZShcImRpclwiLHgpKTpyPW5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudChmKTtcbnZhciBsPWcuZ2V0RGlyZWN0aW9uKDEpIT14LEU9SC5lbGVtZW50LFA9RS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSxMPUUuZ2V0QXR0cmlidXRlKFwic3R5bGVcIiksTj1yLnR5cGU9PUNLRURJVE9SLk5PREVfRE9DVU1FTlRfRlJBR01FTlQmJihjIT1DS0VESVRPUi5FTlRFUl9CUnx8bHx8THx8UCksTyxYPUguY29udGVudHMubGVuZ3RoLFM7Zm9yKGc9MDtnPFg7ZysrKWlmKE89SC5jb250ZW50c1tnXSxuKE8pJiYxPFgpTj9TPU8uY2xvbmUoMSwxKTpyLmFwcGVuZChPLmNsb25lKDEsMSkpO2Vsc2UgaWYoTy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJk8uaXNCbG9ja0JvdW5kYXJ5KCkpe2wmJiFPLmdldERpcmVjdGlvbigpJiZPLnNldEF0dHJpYnV0ZShcImRpclwiLHgpO0c9Tzt2YXIgWT1FLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpO1kmJkcuc2V0QXR0cmlidXRlKFwic3R5bGVcIixZLnJlcGxhY2UoLyhbXjtdKSQvLFwiJDE7XCIpKyhHLmdldEF0dHJpYnV0ZShcInN0eWxlXCIpfHxcIlwiKSk7UCYmXG5PLmFkZENsYXNzKFApO0c9bnVsbDtTJiYoci5hcHBlbmQoUyksUz1udWxsKTtyLmFwcGVuZChPLmNsb25lKDEsMSkpfWVsc2UgTj8oR3x8KEc9Zi5jcmVhdGVFbGVtZW50KE0pLHIuYXBwZW5kKEcpLGwmJkcuc2V0QXR0cmlidXRlKFwiZGlyXCIseCkpLEwmJkcuc2V0QXR0cmlidXRlKFwic3R5bGVcIixMKSxQJiZHLnNldEF0dHJpYnV0ZShcImNsYXNzXCIsUCksUyYmKEcuYXBwZW5kKFMpLFM9bnVsbCksRy5hcHBlbmQoTy5jbG9uZSgxLDEpKSk6ci5hcHBlbmQoTy5jbG9uZSgxLDEpKTtTJiYoKEd8fHIpLmFwcGVuZChTKSxTPW51bGwpO3IudHlwZT09Q0tFRElUT1IuTk9ERV9ET0NVTUVOVF9GUkFHTUVOVCYmbSE9YS5sZW5ndGgtMSYmKENLRURJVE9SLmVudi5uZWVkc0JyRmlsbGVyJiYoeD1yLmdldExhc3QoKSkmJngudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZ4LmlzKFwiYnJcIikmJngucmVtb3ZlKCksKHg9ci5nZXRMYXN0KHcpKSYmeC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJlxueC5pcyhDS0VESVRPUi5kdGQuJGJsb2NrKXx8ci5hcHBlbmQoZi5jcmVhdGVFbGVtZW50KFwiYnJcIikpKTt4PXIuJC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1wiZGl2XCIhPXgmJlwicFwiIT14fHxyLmFwcGVuZEJvZ3VzKCk7ay5hcHBlbmQocik7bD1udWxsO20rK31lbHNlIHJldHVybiBudWxsO0c9bnVsbDtpZihhLmxlbmd0aDw9bXx8TWF0aC5tYXgoYVttXS5pbmRlbnQsMCk8cClicmVha31pZihiKWZvcihhPWsuZ2V0Rmlyc3QoKTthOyl7aWYoYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihDS0VESVRPUi5kb20uZWxlbWVudC5jbGVhck1hcmtlcnMoYixhKSxhLmdldE5hbWUoKWluIENLRURJVE9SLmR0ZC4kbGlzdEl0ZW0mJihkPWEsZj1lPWM9dm9pZCAwLGM9ZC5nZXREaXJlY3Rpb24oKSkpKXtmb3IoZT1kLmdldFBhcmVudCgpO2UmJiEoZj1lLmdldERpcmVjdGlvbigpKTspZT1lLmdldFBhcmVudCgpO2M9PWYmJmQucmVtb3ZlQXR0cmlidXRlKFwiZGlyXCIpfWE9YS5nZXROZXh0U291cmNlTm9kZSgpfXJldHVybntsaXN0Tm9kZTprLFxubmV4dEluZGV4Om19fX07dmFyIHI9L15oWzEtNl0kLyxwPUNLRURJVE9SLmRvbS53YWxrZXIubm9kZVR5cGUoQ0tFRElUT1IuTk9ERV9FTEVNRU5UKTtiLnByb3RvdHlwZT17ZXhlYzpmdW5jdGlvbihiKXtmdW5jdGlvbiBkKGEpe3JldHVybiBoW2Eucm9vdC5nZXROYW1lKCldJiYhYyhhLnJvb3QsW0NLRURJVE9SLk5PREVfQ09NTUVOVF0pfWZ1bmN0aW9uIGMoYSxiKXtyZXR1cm4gQ0tFRElUT1IudG9vbHMuYXJyYXkuZmlsdGVyKGEuZ2V0Q2hpbGRyZW4oKS50b0FycmF5KCksZnVuY3Rpb24oYSl7cmV0dXJuLTE9PT1DS0VESVRPUi50b29scy5hcnJheS5pbmRleE9mKGIsYS50eXBlKX0pLmxlbmd0aH1mdW5jdGlvbiBnKGEpe3ZhciBiPSEwO2lmKDA9PT1hLmdldENoaWxkQ291bnQoKSlyZXR1cm4hMTthLmZvckVhY2goZnVuY3Rpb24oYSl7aWYoYS50eXBlIT09Q0tFRElUT1IuTk9ERV9DT01NRU5UKXJldHVybiBiPSExfSxudWxsLCEwKTtyZXR1cm4gYn10aGlzLnJlZnJlc2goYixiLmVsZW1lbnRQYXRoKCkpO1xudmFyIGw9Yi5jb25maWcsbT1iLmdldFNlbGVjdGlvbigpLG49bSYmbS5nZXRSYW5nZXMoKTtpZih0aGlzLnN0YXRlPT1DS0VESVRPUi5UUklTVEFURV9PRkYpe3ZhciBwPWIuZWRpdGFibGUoKTtpZihwLmdldEZpcnN0KHcpKXt2YXIgcj0xPT1uLmxlbmd0aCYmblswXTsobD1yJiZyLmdldEVuY2xvc2VkTm9kZSgpKSYmbC5pcyYmdGhpcy50eXBlPT1sLmdldE5hbWUoKSYmdGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9PTil9ZWxzZSBsLmVudGVyTW9kZT09Q0tFRElUT1IuRU5URVJfQlI/cC5hcHBlbmRCb2d1cygpOm5bMF0uZml4QmxvY2soMSxsLmVudGVyTW9kZT09Q0tFRElUT1IuRU5URVJfUD9cInBcIjpcImRpdlwiKSxtLnNlbGVjdFJhbmdlcyhuKX1mb3IodmFyIGw9bS5jcmVhdGVCb29rbWFya3MoITApLHA9W10sQz17fSxuPW4uY3JlYXRlSXRlcmF0b3IoKSx4PTA7KHI9bi5nZXROZXh0UmFuZ2UoKSkmJisreDspe3ZhciBKPXIuZ2V0Qm91bmRhcnlOb2RlcygpLEs9Si5zdGFydE5vZGUsXG5HPUouZW5kTm9kZTtLLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJ0ZFwiPT1LLmdldE5hbWUoKSYmci5zZXRTdGFydEF0KEouc3RhcnROb2RlLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKTtHLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmXCJ0ZFwiPT1HLmdldE5hbWUoKSYmci5zZXRFbmRBdChKLmVuZE5vZGUsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCk7cj1yLmNyZWF0ZUl0ZXJhdG9yKCk7Zm9yKHIuZm9yY2VCckJyZWFrPXRoaXMuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX09GRjtKPXIuZ2V0TmV4dFBhcmFncmFwaCgpOylpZighSi5nZXRDdXN0b21EYXRhKFwibGlzdF9ibG9ja1wiKSYmIWcoSikpe0NLRURJVE9SLmRvbS5lbGVtZW50LnNldE1hcmtlcihDLEosXCJsaXN0X2Jsb2NrXCIsMSk7Zm9yKHZhciBNPWIuZWxlbWVudFBhdGgoSiksSz1NLmVsZW1lbnRzLEc9MCxNPU0uYmxvY2tMaW1pdCxILEU9Sy5sZW5ndGgtMTswPD1FJiYoSD1LW0VdKTtFLS0paWYoaFtILmdldE5hbWUoKV0mJlxuTS5jb250YWlucyhIKSl7TS5yZW1vdmVDdXN0b21EYXRhKFwibGlzdF9ncm91cF9vYmplY3RfXCIreCk7KEs9SC5nZXRDdXN0b21EYXRhKFwibGlzdF9ncm91cF9vYmplY3RcIikpP0suY29udGVudHMucHVzaChKKTooSz17cm9vdDpILGNvbnRlbnRzOltKXX0scC5wdXNoKEspLENLRURJVE9SLmRvbS5lbGVtZW50LnNldE1hcmtlcihDLEgsXCJsaXN0X2dyb3VwX29iamVjdFwiLEspKTtHPTE7YnJlYWt9R3x8KEc9TSxHLmdldEN1c3RvbURhdGEoXCJsaXN0X2dyb3VwX29iamVjdF9cIit4KT9HLmdldEN1c3RvbURhdGEoXCJsaXN0X2dyb3VwX29iamVjdF9cIit4KS5jb250ZW50cy5wdXNoKEopOihLPXtyb290OkcsY29udGVudHM6W0pdfSxDS0VESVRPUi5kb20uZWxlbWVudC5zZXRNYXJrZXIoQyxHLFwibGlzdF9ncm91cF9vYmplY3RfXCIreCxLKSxwLnB1c2goSykpKX19Zm9yKEg9W107MDxwLmxlbmd0aDspSz1wLnNoaWZ0KCksdGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfT0ZGP2QoSyl8fChoW0sucm9vdC5nZXROYW1lKCldP1xuYS5jYWxsKHRoaXMsYixLLEMsSCk6Zi5jYWxsKHRoaXMsYixLLEgpKTp0aGlzLnN0YXRlPT1DS0VESVRPUi5UUklTVEFURV9PTiYmaFtLLnJvb3QuZ2V0TmFtZSgpXSYmIWQoSykmJmUuY2FsbCh0aGlzLGIsSyxDKTtmb3IoRT0wO0U8SC5sZW5ndGg7RSsrKWsoSFtFXSk7Q0tFRElUT1IuZG9tLmVsZW1lbnQuY2xlYXJBbGxNYXJrZXJzKEMpO20uc2VsZWN0Qm9va21hcmtzKGwpO2IuZm9jdXMoKX0scmVmcmVzaDpmdW5jdGlvbihhLGIpe3ZhciBkPWIuY29udGFpbnMoaCwxKSxjPWIuYmxvY2tMaW1pdHx8Yi5yb290O2QmJmMuY29udGFpbnMoZCk/dGhpcy5zZXRTdGF0ZShkLmlzKHRoaXMudHlwZSk/Q0tFRElUT1IuVFJJU1RBVEVfT046Q0tFRElUT1IuVFJJU1RBVEVfT0ZGKTp0aGlzLnNldFN0YXRlKENLRURJVE9SLlRSSVNUQVRFX09GRil9fTtDS0VESVRPUi5wbHVnaW5zLmFkZChcImxpc3RcIix7cmVxdWlyZXM6XCJpbmRlbnRsaXN0XCIsaW5pdDpmdW5jdGlvbihhKXthLmJsb2NrbGVzc3x8XG4oYS5hZGRDb21tYW5kKFwibnVtYmVyZWRsaXN0XCIsbmV3IGIoXCJudW1iZXJlZGxpc3RcIixcIm9sXCIpKSxhLmFkZENvbW1hbmQoXCJidWxsZXRlZGxpc3RcIixuZXcgYihcImJ1bGxldGVkbGlzdFwiLFwidWxcIikpLGEudWkuYWRkQnV0dG9uJiYoYS51aS5hZGRCdXR0b24oXCJOdW1iZXJlZExpc3RcIix7aXNUb2dnbGU6ITAsbGFiZWw6YS5sYW5nLmxpc3QubnVtYmVyZWRsaXN0LGNvbW1hbmQ6XCJudW1iZXJlZGxpc3RcIixkaXJlY3Rpb25hbDohMCx0b29sYmFyOlwibGlzdCwxMFwifSksYS51aS5hZGRCdXR0b24oXCJCdWxsZXRlZExpc3RcIix7aXNUb2dnbGU6ITAsbGFiZWw6YS5sYW5nLmxpc3QuYnVsbGV0ZWRsaXN0LGNvbW1hbmQ6XCJidWxsZXRlZGxpc3RcIixkaXJlY3Rpb25hbDohMCx0b29sYmFyOlwibGlzdCwyMFwifSkpLGEub24oXCJrZXlcIixmdW5jdGlvbihiKXt2YXIgYz1iLmRhdGEuZG9tRXZlbnQuZ2V0S2V5KCksZTtpZihcInd5c2l3eWdcIj09YS5tb2RlJiZjIGluezg6MSw0NjoxfSl7dmFyIGc9YS5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKVswXSxcbmY9ZyYmZy5zdGFydFBhdGgoKTtpZihnJiZnLmNvbGxhcHNlZCl7dmFyIGs9OD09YyxuPWEuZWRpdGFibGUoKSxwPW5ldyBDS0VESVRPUi5kb20ud2Fsa2VyKGcuY2xvbmUoKSk7cC5ldmFsdWF0b3I9ZnVuY3Rpb24oYSl7cmV0dXJuIHcoYSkmJiF4KGEpfTtwLmd1YXJkPWZ1bmN0aW9uKGEsYil7cmV0dXJuIShiJiZhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5pcyhcInRhYmxlXCIpKX07Yz1nLmNsb25lKCk7aWYoayl7dmFyIHI7KHI9Zi5jb250YWlucyhoKSkmJmcuY2hlY2tCb3VuZGFyeU9mRWxlbWVudChyLENLRURJVE9SLlNUQVJUKSYmKHI9ci5nZXRQYXJlbnQoKSkmJnIuaXMoXCJsaVwiKSYmKHI9ZChyKSk/KGU9cixyPXIuZ2V0UHJldmlvdXModyksYy5tb3ZlVG9Qb3NpdGlvbihyJiZ4KHIpP3I6ZSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpKToocC5yYW5nZS5zZXRTdGFydEF0KG4sQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpLHAucmFuZ2Uuc2V0RW5kKGcuc3RhcnRDb250YWluZXIsXG5nLnN0YXJ0T2Zmc2V0KSwocj1wLnByZXZpb3VzKCkpJiZyLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmKHIuZ2V0TmFtZSgpaW4gaHx8ci5pcyhcImxpXCIpKSYmKHIuaXMoXCJsaVwiKXx8KHAucmFuZ2Uuc2VsZWN0Tm9kZUNvbnRlbnRzKHIpLHAucmVzZXQoKSxwLmV2YWx1YXRvcj1sLHI9cC5wcmV2aW91cygpKSxlPXIsYy5tb3ZlVG9FbGVtZW50RWRpdEVuZChlKSxjLm1vdmVUb1Bvc2l0aW9uKGMuZW5kUGF0aCgpLmJsb2NrLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpKSk7aWYoZSltKGEsYyxnKSxiLmNhbmNlbCgpO2Vsc2V7dmFyIEY9Zi5jb250YWlucyhoKTtGJiZnLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoRixDS0VESVRPUi5TVEFSVCkmJihlPUYuZ2V0Rmlyc3QodyksZy5jaGVja0JvdW5kYXJ5T2ZFbGVtZW50KGUsQ0tFRElUT1IuU1RBUlQpJiYocj1GLmdldFByZXZpb3VzKHcpLGQoZSk/ciYmKGcubW92ZVRvRWxlbWVudEVkaXRFbmQociksZy5zZWxlY3QoKSk6XG5hLmV4ZWNDb21tYW5kKFwib3V0ZGVudFwiKSxiLmNhbmNlbCgpKSl9fWVsc2UgaWYoZT1mLmNvbnRhaW5zKFwibGlcIikpe2lmKHAucmFuZ2Uuc2V0RW5kQXQobixDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxrPShuPWUuZ2V0TGFzdCh3KSkmJmwobik/bjplLGY9MCwocj1wLm5leHQoKSkmJnIudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZyLmdldE5hbWUoKWluIGgmJnIuZXF1YWxzKG4pPyhmPTEscj1wLm5leHQoKSk6Zy5jaGVja0JvdW5kYXJ5T2ZFbGVtZW50KGssQ0tFRElUT1IuRU5EKSYmKGY9MiksZiYmcil7Zz1nLmNsb25lKCk7Zy5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KHIpO2lmKDE9PWYmJihjLm9wdGltaXplKCksIWMuc3RhcnRDb250YWluZXIuZXF1YWxzKGUpKSl7Zm9yKGU9Yy5zdGFydENvbnRhaW5lcjtlLmlzKENLRURJVE9SLmR0ZC4kaW5saW5lKTspRj1lLGU9ZS5nZXRQYXJlbnQoKTtGJiZjLm1vdmVUb1Bvc2l0aW9uKEYsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EKX0yPT1cbmYmJihjLm1vdmVUb1Bvc2l0aW9uKGMuZW5kUGF0aCgpLmJsb2NrLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9FTkQpLGcuZW5kUGF0aCgpLmJsb2NrJiZnLm1vdmVUb1Bvc2l0aW9uKGcuZW5kUGF0aCgpLmJsb2NrLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSk7bShhLGMsZyk7Yi5jYW5jZWwoKX19ZWxzZSBwLnJhbmdlLnNldEVuZEF0KG4sQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCksKHI9cC5uZXh0KCkpJiZyLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmci5pcyhoKSYmKHI9ci5nZXRGaXJzdCh3KSxmLmJsb2NrJiZnLmNoZWNrU3RhcnRPZkJsb2NrKCkmJmcuY2hlY2tFbmRPZkJsb2NrKCk/KGYuYmxvY2sucmVtb3ZlKCksZy5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KHIpLGcuc2VsZWN0KCkpOmQocik/KGcubW92ZVRvRWxlbWVudEVkaXRTdGFydChyKSxnLnNlbGVjdCgpKTooZz1nLmNsb25lKCksZy5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KHIpLG0oYSxcbmMsZykpLGIuY2FuY2VsKCkpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLnNlbGVjdGlvbkNoYW5nZSgxKX0pfX19KSl9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYixkKXtkPWEuY29uZmlnLmZvcmNlRW50ZXJNb2RlfHxkO2lmKFwid3lzaXd5Z1wiPT1hLm1vZGUpe2J8fChiPWEuYWN0aXZlRW50ZXJNb2RlKTt2YXIgYz1hLmVsZW1lbnRQYXRoKCk7YyYmIWMuaXNDb250ZXh0Rm9yKFwicFwiKSYmKGI9Q0tFRElUT1IuRU5URVJfQlIsZD0xKTthLmZpcmUoXCJzYXZlU25hcHNob3RcIik7Yj09Q0tFRElUT1IuRU5URVJfQlI/bChhLGIsbnVsbCxkKTptKGEsYixudWxsLGQpO2EuZmlyZShcInNhdmVTbmFwc2hvdFwiKX19ZnVuY3Rpb24gZihhKXthPWEuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCEwKTtmb3IodmFyIGI9YS5sZW5ndGgtMTswPGI7Yi0tKWFbYl0uZGVsZXRlQ29udGVudHMoKTtyZXR1cm4gYVswXX1mdW5jdGlvbiBlKGEpe3ZhciBiPWEuc3RhcnRDb250YWluZXIuZ2V0QXNjZW5kYW50KGZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PVxuQ0tFRElUT1IuTk9ERV9FTEVNRU5UJiZcInRydWVcIj09YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIil9LCEwKTtpZihhLnJvb3QuZXF1YWxzKGIpKXJldHVybiBhO2I9bmV3IENLRURJVE9SLmRvbS5yYW5nZShiKTtiLm1vdmVUb1JhbmdlKGEpO3JldHVybiBifUNLRURJVE9SLnBsdWdpbnMuYWRkKFwiZW50ZXJrZXlcIix7aW5pdDpmdW5jdGlvbihiKXtiLmFkZENvbW1hbmQoXCJlbnRlclwiLHttb2Rlczp7d3lzaXd5ZzoxfSxlZGl0b3JGb2N1czohMSxleGVjOmZ1bmN0aW9uKGIpe2EoYil9fSk7Yi5hZGRDb21tYW5kKFwic2hpZnRFbnRlclwiLHttb2Rlczp7d3lzaXd5ZzoxfSxlZGl0b3JGb2N1czohMSxleGVjOmZ1bmN0aW9uKGIpe2EoYixiLmFjdGl2ZVNoaWZ0RW50ZXJNb2RlLDEpfX0pO2Iuc2V0S2V5c3Ryb2tlKFtbMTMsXCJlbnRlclwiXSxbQ0tFRElUT1IuU0hJRlQrMTMsXCJzaGlmdEVudGVyXCJdXSl9fSk7dmFyIGI9Q0tFRElUT1IuZG9tLndhbGtlci53aGl0ZXNwYWNlcygpLGM9XG5DS0VESVRPUi5kb20ud2Fsa2VyLmJvb2ttYXJrKCksayxsLG0sZDtDS0VESVRPUi5wbHVnaW5zLmVudGVya2V5PXtlbnRlckJsb2NrOmZ1bmN0aW9uKGEsZyxrLG0pe2Z1bmN0aW9uIHgoYSl7dmFyIGI7aWYoYT09PUNLRURJVE9SLkVOVEVSX0JSfHwtMT09PUNLRURJVE9SLnRvb2xzLmluZGV4T2YoW1widGRcIixcInRoXCJdLHoubGFzdEVsZW1lbnQuZ2V0TmFtZSgpKXx8MSE9PXoubGFzdEVsZW1lbnQuZ2V0Q2hpbGRDb3VudCgpKXJldHVybiExO2E9ei5sYXN0RWxlbWVudC5nZXRDaGlsZCgwKS5jbG9uZSghMCk7KGI9YS5nZXRCb2d1cygpKSYmYi5yZW1vdmUoKTtyZXR1cm4gYS5nZXRUZXh0KCkubGVuZ3RoPyExOiEwfWlmKGs9a3x8ZihhKSl7az1lKGspO3ZhciByPWsuZG9jdW1lbnQscD1rLmNoZWNrU3RhcnRPZkJsb2NrKCksdT1rLmNoZWNrRW5kT2ZCbG9jaygpLHo9YS5lbGVtZW50UGF0aChrLnN0YXJ0Q29udGFpbmVyKSxxPXouYmxvY2ssQT1nPT1DS0VESVRPUi5FTlRFUl9ESVY/XG5cImRpdlwiOlwicFwiLHk7aWYocSYmcCYmdSl7cD1xLmdldFBhcmVudCgpO2lmKHAuaXMoXCJsaVwiKSYmMTxwLmdldENoaWxkQ291bnQoKSl7cj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJsaVwiKTt5PWEuY3JlYXRlUmFuZ2UoKTtyLmluc2VydEFmdGVyKHApO3EucmVtb3ZlKCk7eS5zZXRTdGFydChyLDApO2EuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFt5XSk7cmV0dXJufWlmKHEuaXMoXCJsaVwiKXx8cS5nZXRQYXJlbnQoKS5pcyhcImxpXCIpKXtxLmlzKFwibGlcIil8fChxPXEuZ2V0UGFyZW50KCkscD1xLmdldFBhcmVudCgpKTt5PXAuZ2V0UGFyZW50KCk7az0hcS5oYXNQcmV2aW91cygpO3ZhciB0PSFxLmhhc05leHQoKTttPWEuZ2V0U2VsZWN0aW9uKCk7dmFyIEE9bS5jcmVhdGVCb29rbWFya3MoKSx2PXEuZ2V0RGlyZWN0aW9uKDEpLHU9cS5nZXRBdHRyaWJ1dGUoXCJjbGFzc1wiKSxCPXEuZ2V0QXR0cmlidXRlKFwic3R5bGVcIiksRD15LmdldERpcmVjdGlvbigxKSE9djthPWEuZW50ZXJNb2RlIT1cbkNLRURJVE9SLkVOVEVSX0JSfHxEfHxCfHx1O2lmKHkuaXMoXCJsaVwiKSlrfHx0PyhrJiZ0JiZwLnJlbW92ZSgpLHFbdD9cImluc2VydEFmdGVyXCI6XCJpbnNlcnRCZWZvcmVcIl0oeSkpOnEuYnJlYWtQYXJlbnQoeSk7ZWxzZXtpZihhKWlmKHouYmxvY2suaXMoXCJsaVwiKT8oeT1yLmNyZWF0ZUVsZW1lbnQoZz09Q0tFRElUT1IuRU5URVJfUD9cInBcIjpcImRpdlwiKSxEJiZ5LnNldEF0dHJpYnV0ZShcImRpclwiLHYpLEImJnkuc2V0QXR0cmlidXRlKFwic3R5bGVcIixCKSx1JiZ5LnNldEF0dHJpYnV0ZShcImNsYXNzXCIsdSkscS5tb3ZlQ2hpbGRyZW4oeSkpOnk9ei5ibG9jayxrfHx0KXlbaz9cImluc2VydEJlZm9yZVwiOlwiaW5zZXJ0QWZ0ZXJcIl0ocCk7ZWxzZSBxLmJyZWFrUGFyZW50KHApLHkuaW5zZXJ0QWZ0ZXIocCk7ZWxzZSBpZihxLmFwcGVuZEJvZ3VzKCEwKSxrfHx0KWZvcig7cj1xW2s/XCJnZXRGaXJzdFwiOlwiZ2V0TGFzdFwiXSgpOylyW2s/XCJpbnNlcnRCZWZvcmVcIjpcImluc2VydEFmdGVyXCJdKHApO2Vsc2UgZm9yKHEuYnJlYWtQYXJlbnQocCk7cj1cbnEuZ2V0TGFzdCgpOylyLmluc2VydEFmdGVyKHApO3EucmVtb3ZlKCl9bS5zZWxlY3RCb29rbWFya3MoQSk7cmV0dXJufWlmKHEmJnEuZ2V0UGFyZW50KCkuaXMoXCJibG9ja3F1b3RlXCIpKXtxLmJyZWFrUGFyZW50KHEuZ2V0UGFyZW50KCkpO3EuZ2V0UHJldmlvdXMoKS5nZXRGaXJzdChDS0VESVRPUi5kb20ud2Fsa2VyLmludmlzaWJsZSgxKSl8fHEuZ2V0UHJldmlvdXMoKS5yZW1vdmUoKTtxLmdldE5leHQoKS5nZXRGaXJzdChDS0VESVRPUi5kb20ud2Fsa2VyLmludmlzaWJsZSgxKSl8fHEuZ2V0TmV4dCgpLnJlbW92ZSgpO2subW92ZVRvRWxlbWVudEVkaXRTdGFydChxKTtrLnNlbGVjdCgpO3JldHVybn19ZWxzZSBpZihxJiZxLmlzKFwicHJlXCIpJiYhdSl7bChhLGcsayxtKTtyZXR1cm59aWYoQj1rLnNwbGl0QmxvY2soQSkpe2E9Qi5wcmV2aW91c0Jsb2NrO3E9Qi5uZXh0QmxvY2s7cD1CLndhc1N0YXJ0T2ZCbG9jazt1PUIud2FzRW5kT2ZCbG9jaztxPyh0PXEuZ2V0UGFyZW50KCksXG50LmlzKFwibGlcIikmJihxLmJyZWFrUGFyZW50KHQpLHEubW92ZShxLmdldE5leHQoKSwxKSkpOmEmJih0PWEuZ2V0UGFyZW50KCkpJiZ0LmlzKFwibGlcIikmJihhLmJyZWFrUGFyZW50KHQpLHQ9YS5nZXROZXh0KCksay5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KHQpLGEubW92ZShhLmdldFByZXZpb3VzKCkpKTtpZihwfHx1KWlmKHgoZykpay5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KGsuZ2V0VG91Y2hlZFN0YXJ0Tm9kZSgpKTtlbHNle2lmKGEpe2lmKGEuaXMoXCJsaVwiKXx8IWQudGVzdChhLmdldE5hbWUoKSkmJiFhLmlzKFwicHJlXCIpKXk9YS5jbG9uZSgpfWVsc2UgcSYmKHk9cS5jbG9uZSgpKTt5P20mJiF5LmlzKFwibGlcIikmJnkucmVuYW1lTm9kZShBKTp0JiZ0LmlzKFwibGlcIik/eT10Oih5PXIuY3JlYXRlRWxlbWVudChBKSxhJiYodj1hLmdldERpcmVjdGlvbigpKSYmeS5zZXRBdHRyaWJ1dGUoXCJkaXJcIix2KSk7aWYocj1CLmVsZW1lbnRQYXRoKWZvcihnPTAsbT1yLmVsZW1lbnRzLmxlbmd0aDtnPFxubTtnKyspe0E9ci5lbGVtZW50c1tnXTtpZihBLmVxdWFscyhyLmJsb2NrKXx8QS5lcXVhbHMoci5ibG9ja0xpbWl0KSlicmVhaztDS0VESVRPUi5kdGQuJHJlbW92ZUVtcHR5W0EuZ2V0TmFtZSgpXSYmKEE9QS5jbG9uZSgpLHkubW92ZUNoaWxkcmVuKEEpLHkuYXBwZW5kKEEpKX15LmFwcGVuZEJvZ3VzKCk7eS5nZXRQYXJlbnQoKXx8ay5pbnNlcnROb2RlKHkpO3kuaXMoXCJsaVwiKSYmeS5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTshQ0tFRElUT1IuZW52LmllfHwhcHx8dSYmYS5nZXRDaGlsZENvdW50KCl8fChrLm1vdmVUb0VsZW1lbnRFZGl0U3RhcnQodT9hOnkpLGsuc2VsZWN0KCkpO2subW92ZVRvRWxlbWVudEVkaXRTdGFydChwJiYhdT9xOnkpfWVsc2UgcS5pcyhcImxpXCIpJiYoeT1rLmNsb25lKCkseS5zZWxlY3ROb2RlQ29udGVudHMocSkseT1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcih5KSx5LmV2YWx1YXRvcj1mdW5jdGlvbihhKXtyZXR1cm4hKGMoYSl8fGIoYSl8fGEudHlwZT09XG5DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEuZ2V0TmFtZSgpaW4gQ0tFRElUT1IuZHRkLiRpbmxpbmUmJiEoYS5nZXROYW1lKClpbiBDS0VESVRPUi5kdGQuJGVtcHR5KSl9LCh0PXkubmV4dCgpKSYmdC50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJnQuaXMoXCJ1bFwiLFwib2xcIikmJihDS0VESVRPUi5lbnYubmVlZHNCckZpbGxlcj9yLmNyZWF0ZUVsZW1lbnQoXCJiclwiKTpyLmNyZWF0ZVRleHQoXCLCoFwiKSkuaW5zZXJ0QmVmb3JlKHQpKSxxJiZrLm1vdmVUb0VsZW1lbnRFZGl0U3RhcnQocSk7ay5zZWxlY3QoKTtrLnNjcm9sbEludG9WaWV3KCl9fX0sZW50ZXJCcjpmdW5jdGlvbihhLGIsYyxlKXtpZihjPWN8fGYoYSkpe3ZhciBrPWMuZG9jdW1lbnQsbD1jLmNoZWNrRW5kT2ZCbG9jaygpLHA9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50UGF0aChhLmdldFNlbGVjdGlvbigpLmdldFN0YXJ0RWxlbWVudCgpKSx1PXAuYmxvY2ssej11JiZwLmJsb2NrLmdldE5hbWUoKTtlfHxcImxpXCIhPXo/KCFlJiZcbmwmJmQudGVzdCh6KT8obD11LmdldERpcmVjdGlvbigpKT8oaz1rLmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksay5zZXRBdHRyaWJ1dGUoXCJkaXJcIixsKSxrLmluc2VydEFmdGVyKHUpLGMuc2V0U3RhcnQoaywwKSk6KGsuY3JlYXRlRWxlbWVudChcImJyXCIpLmluc2VydEFmdGVyKHUpLENLRURJVE9SLmVudi5nZWNrbyYmay5jcmVhdGVUZXh0KFwiXCIpLmluc2VydEFmdGVyKHUpLGMuc2V0U3RhcnRBdCh1LmdldE5leHQoKSxDS0VESVRPUi5lbnYuaWU/Q0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUOkNLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSk6KGE9XCJwcmVcIj09eiYmQ0tFRElUT1IuZW52LmllJiY4PkNLRURJVE9SLmVudi52ZXJzaW9uP2suY3JlYXRlVGV4dChcIlxcclwiKTprLmNyZWF0ZUVsZW1lbnQoXCJiclwiKSxjLmRlbGV0ZUNvbnRlbnRzKCksYy5pbnNlcnROb2RlKGEpLENLRURJVE9SLmVudi5uZWVkc0JyRmlsbGVyPyhrLmNyZWF0ZVRleHQoXCLvu79cIikuaW5zZXJ0QWZ0ZXIoYSksXG5sJiYodXx8cC5ibG9ja0xpbWl0KS5hcHBlbmRCb2d1cygpLGEuZ2V0TmV4dCgpLiQubm9kZVZhbHVlPVwiXCIsYy5zZXRTdGFydEF0KGEuZ2V0TmV4dCgpLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKSk6Yy5zZXRTdGFydEF0KGEsQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EKSksYy5jb2xsYXBzZSghMCksYy5zZWxlY3QoKSxjLnNjcm9sbEludG9WaWV3KCkpOm0oYSxiLGMsZSl9fX07az1DS0VESVRPUi5wbHVnaW5zLmVudGVya2V5O2w9ay5lbnRlckJyO209ay5lbnRlckJsb2NrO2Q9L15oWzEtNl0kL30oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxlKXt2YXIgYj17fSxjPVtdLGs9e25ic3A6XCLCoFwiLHNoeTpcIsKtXCIsZ3Q6XCJcXHgzZVwiLGx0OlwiXFx4M2NcIixhbXA6XCJcXHgyNlwiLGFwb3M6XCInXCIscXVvdDonXCInfTthPWEucmVwbGFjZSgvXFxiKG5ic3B8c2h5fGd0fGx0fGFtcHxhcG9zfHF1b3QpKD86LHwkKS9nLGZ1bmN0aW9uKGEsZCl7dmFyIGY9ZT9cIlxceDI2XCIrZCtcIjtcIjprW2RdO1xuYltmXT1lP2tbZF06XCJcXHgyNlwiK2QrXCI7XCI7Yy5wdXNoKGYpO3JldHVyblwiXCJ9KTthPWEucmVwbGFjZSgvLCQvLFwiXCIpO2lmKCFlJiZhKXthPWEuc3BsaXQoXCIsXCIpO3ZhciBsPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJkaXZcIiksbTtsLmlubmVySFRNTD1cIlxceDI2XCIrYS5qb2luKFwiO1xceDI2XCIpK1wiO1wiO209bC5pbm5lckhUTUw7bD1udWxsO2ZvcihsPTA7bDxtLmxlbmd0aDtsKyspe3ZhciBkPW0uY2hhckF0KGwpO2JbZF09XCJcXHgyNlwiK2FbbF0rXCI7XCI7Yy5wdXNoKGQpfX1iLnJlZ2V4PWMuam9pbihlP1wifFwiOlwiXCIpO3JldHVybiBifUNLRURJVE9SLnBsdWdpbnMuYWRkKFwiZW50aXRpZXNcIix7YWZ0ZXJJbml0OmZ1bmN0aW9uKGYpe2Z1bmN0aW9uIGUoYSl7cmV0dXJuIGRbYV19ZnVuY3Rpb24gYihhKXtyZXR1cm5cImZvcmNlXCIhPWMuZW50aXRpZXNfcHJvY2Vzc051bWVyaWNhbCYmbFthXT9sW2FdOlwiXFx4MjYjXCIrKENLRURJVE9SLmVudi5pZT9hLmNoYXJDb2RlQXQoMCk6YS5jb2RlUG9pbnRBdCgwKSkrXG5cIjtcIn12YXIgYz1mLmNvbmZpZztpZihmPShmPWYuZGF0YVByb2Nlc3NvcikmJmYuaHRtbEZpbHRlcil7dmFyIGs9W107ITEhPT1jLmJhc2ljRW50aXRpZXMmJmsucHVzaChcIm5ic3AsZ3QsbHQsYW1wXCIpO2MuZW50aXRpZXMmJihrLmxlbmd0aCYmay5wdXNoKFwicXVvdCxpZXhjbCxjZW50LHBvdW5kLGN1cnJlbix5ZW4sYnJ2YmFyLHNlY3QsdW1sLGNvcHksb3JkZixsYXF1byxub3Qsc2h5LHJlZyxtYWNyLGRlZyxwbHVzbW4sc3VwMixzdXAzLGFjdXRlLG1pY3JvLHBhcmEsbWlkZG90LGNlZGlsLHN1cDEsb3JkbSxyYXF1byxmcmFjMTQsZnJhYzEyLGZyYWMzNCxpcXVlc3QsdGltZXMsZGl2aWRlLGZub2YsYnVsbCxoZWxsaXAscHJpbWUsUHJpbWUsb2xpbmUsZnJhc2wsd2VpZXJwLGltYWdlLHJlYWwsdHJhZGUsYWxlZnN5bSxsYXJyLHVhcnIscmFycixkYXJyLGhhcnIsY3JhcnIsbEFycix1QXJyLHJBcnIsZEFycixoQXJyLGZvcmFsbCxwYXJ0LGV4aXN0LGVtcHR5LG5hYmxhLGlzaW4sbm90aW4sbmkscHJvZCxzdW0sbWludXMsbG93YXN0LHJhZGljLHByb3AsaW5maW4sYW5nLGFuZCxvcixjYXAsY3VwLGludCx0aGVyZTQsc2ltLGNvbmcsYXN5bXAsbmUsZXF1aXYsbGUsZ2Usc3ViLHN1cCxuc3ViLHN1YmUsc3VwZSxvcGx1cyxvdGltZXMscGVycCxzZG90LGxjZWlsLHJjZWlsLGxmbG9vcixyZmxvb3IsbGFuZyxyYW5nLGxveixzcGFkZXMsY2x1YnMsaGVhcnRzLGRpYW1zLGNpcmMsdGlsZGUsZW5zcCxlbXNwLHRoaW5zcCx6d25qLHp3aixscm0scmxtLG5kYXNoLG1kYXNoLGxzcXVvLHJzcXVvLHNicXVvLGxkcXVvLHJkcXVvLGJkcXVvLGRhZ2dlcixEYWdnZXIscGVybWlsLGxzYXF1byxyc2FxdW8sZXVyb1wiKSxcbmMuZW50aXRpZXNfbGF0aW4mJmsucHVzaChcIkFncmF2ZSxBYWN1dGUsQWNpcmMsQXRpbGRlLEF1bWwsQXJpbmcsQUVsaWcsQ2NlZGlsLEVncmF2ZSxFYWN1dGUsRWNpcmMsRXVtbCxJZ3JhdmUsSWFjdXRlLEljaXJjLEl1bWwsRVRILE50aWxkZSxPZ3JhdmUsT2FjdXRlLE9jaXJjLE90aWxkZSxPdW1sLE9zbGFzaCxVZ3JhdmUsVWFjdXRlLFVjaXJjLFV1bWwsWWFjdXRlLFRIT1JOLHN6bGlnLGFncmF2ZSxhYWN1dGUsYWNpcmMsYXRpbGRlLGF1bWwsYXJpbmcsYWVsaWcsY2NlZGlsLGVncmF2ZSxlYWN1dGUsZWNpcmMsZXVtbCxpZ3JhdmUsaWFjdXRlLGljaXJjLGl1bWwsZXRoLG50aWxkZSxvZ3JhdmUsb2FjdXRlLG9jaXJjLG90aWxkZSxvdW1sLG9zbGFzaCx1Z3JhdmUsdWFjdXRlLHVjaXJjLHV1bWwseWFjdXRlLHRob3JuLHl1bWwsT0VsaWcsb2VsaWcsU2Nhcm9uLHNjYXJvbixZdW1sXCIpLGMuZW50aXRpZXNfZ3JlZWsmJmsucHVzaChcIkFscGhhLEJldGEsR2FtbWEsRGVsdGEsRXBzaWxvbixaZXRhLEV0YSxUaGV0YSxJb3RhLEthcHBhLExhbWJkYSxNdSxOdSxYaSxPbWljcm9uLFBpLFJobyxTaWdtYSxUYXUsVXBzaWxvbixQaGksQ2hpLFBzaSxPbWVnYSxhbHBoYSxiZXRhLGdhbW1hLGRlbHRhLGVwc2lsb24semV0YSxldGEsdGhldGEsaW90YSxrYXBwYSxsYW1iZGEsbXUsbnUseGksb21pY3JvbixwaSxyaG8sc2lnbWFmLHNpZ21hLHRhdSx1cHNpbG9uLHBoaSxjaGkscHNpLG9tZWdhLHRoZXRhc3ltLHVwc2loLHBpdlwiKSxcbmMuZW50aXRpZXNfYWRkaXRpb25hbCYmay5wdXNoKGMuZW50aXRpZXNfYWRkaXRpb25hbCkpO3ZhciBsPWEoay5qb2luKFwiLFwiKSksbT1sLnJlZ2V4P1wiW1wiK2wucmVnZXgrXCJdXCI6XCJhXlwiO2RlbGV0ZSBsLnJlZ2V4O2MuZW50aXRpZXMmJmMuZW50aXRpZXNfcHJvY2Vzc051bWVyaWNhbCYmKG09XCJbXiAtfl18XCIrbSk7dmFyIG09bmV3IFJlZ0V4cChtLENLRURJVE9SLmVudi5pZT9cImdcIjpcImd1XCIpLGQ9YShcIm5ic3AsZ3QsbHQsYW1wLHNoeVwiLCEwKSxoPW5ldyBSZWdFeHAoZC5yZWdleCxcImdcIik7Zi5hZGRSdWxlcyh7dGV4dDpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKGgsZSkucmVwbGFjZShtLGIpfX0se2FwcGx5VG9BbGw6ITAsZXhjbHVkZU5lc3RlZEVkaXRhYmxlOiEwfSl9fX0pfSgpLENLRURJVE9SLmNvbmZpZy5iYXNpY0VudGl0aWVzPSEwLENLRURJVE9SLmNvbmZpZy5lbnRpdGllcz0hMCxDS0VESVRPUi5jb25maWcuZW50aXRpZXNfbGF0aW49ITAsQ0tFRElUT1IuY29uZmlnLmVudGl0aWVzX2dyZWVrPVxuITAsQ0tFRElUT1IuY29uZmlnLmVudGl0aWVzX2FkZGl0aW9uYWw9XCIjMzlcIixDS0VESVRPUi5wbHVnaW5zLmFkZChcInBvcHVwXCIpLENLRURJVE9SLnRvb2xzLmV4dGVuZChDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLHtwb3B1cDpmdW5jdGlvbihhLGYsZSxiKXtmPWZ8fFwiODAlXCI7ZT1lfHxcIjcwJVwiO1wic3RyaW5nXCI9PXR5cGVvZiBmJiYxPGYubGVuZ3RoJiZcIiVcIj09Zi5zdWJzdHIoZi5sZW5ndGgtMSwxKSYmKGY9cGFyc2VJbnQod2luZG93LnNjcmVlbi53aWR0aCpwYXJzZUludChmLDEwKS8xMDAsMTApKTtcInN0cmluZ1wiPT10eXBlb2YgZSYmMTxlLmxlbmd0aCYmXCIlXCI9PWUuc3Vic3RyKGUubGVuZ3RoLTEsMSkmJihlPXBhcnNlSW50KHdpbmRvdy5zY3JlZW4uaGVpZ2h0KnBhcnNlSW50KGUsMTApLzEwMCwxMCkpOzY0MD5mJiYoZj02NDApOzQyMD5lJiYoZT00MjApO3ZhciBjPXBhcnNlSW50KCh3aW5kb3cuc2NyZWVuLmhlaWdodC1lKS8yLDEwKSxrPXBhcnNlSW50KCh3aW5kb3cuc2NyZWVuLndpZHRoLVxuZikvMiwxMCk7Yj0oYnx8XCJsb2NhdGlvblxceDNkbm8sbWVudWJhclxceDNkbm8sdG9vbGJhclxceDNkbm8sZGVwZW5kZW50XFx4M2R5ZXMsbWluaW1pemFibGVcXHgzZG5vLG1vZGFsXFx4M2R5ZXMsYWx3YXlzUmFpc2VkXFx4M2R5ZXMscmVzaXphYmxlXFx4M2R5ZXMsc2Nyb2xsYmFyc1xceDNkeWVzXCIpK1wiLHdpZHRoXFx4M2RcIitmK1wiLGhlaWdodFxceDNkXCIrZStcIix0b3BcXHgzZFwiK2MrXCIsbGVmdFxceDNkXCIrazt2YXIgbD13aW5kb3cub3BlbihcIlwiLG51bGwsYiwhMCk7aWYoIWwpcmV0dXJuITE7dHJ5ey0xPT1uYXZpZ2F0b3IudXNlckFnZW50LnRvTG93ZXJDYXNlKCkuaW5kZXhPZihcIiBjaHJvbWUvXCIpJiYobC5tb3ZlVG8oayxjKSxsLnJlc2l6ZVRvKGYsZSkpLGwuZm9jdXMoKSxsLmxvY2F0aW9uLmhyZWY9YX1jYXRjaChtKXt3aW5kb3cub3BlbihhLG51bGwsYiwhMCl9cmV0dXJuITB9fSksXCJ1c2Ugc3RyaWN0XCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3RoaXMuZWRpdG9yPWE7dGhpcy5sb2FkZXJzPVxuW119ZnVuY3Rpb24gZihhLGIsZil7dmFyIG09YS5jb25maWcuZmlsZVRvb2xzX2RlZmF1bHRGaWxlTmFtZTt0aGlzLmVkaXRvcj1hO3RoaXMubGFuZz1hLmxhbmc7XCJzdHJpbmdcIj09PXR5cGVvZiBiPyh0aGlzLmRhdGE9Yix0aGlzLmZpbGU9ZSh0aGlzLmRhdGEpLHRoaXMubG9hZGVkPXRoaXMudG90YWw9dGhpcy5maWxlLnNpemUpOih0aGlzLmRhdGE9bnVsbCx0aGlzLmZpbGU9Yix0aGlzLnRvdGFsPXRoaXMuZmlsZS5zaXplLHRoaXMubG9hZGVkPTApO2Y/dGhpcy5maWxlTmFtZT1mOnRoaXMuZmlsZS5uYW1lP3RoaXMuZmlsZU5hbWU9dGhpcy5maWxlLm5hbWU6KGE9dGhpcy5maWxlLnR5cGUuc3BsaXQoXCIvXCIpLG0mJihhWzBdPW0pLHRoaXMuZmlsZU5hbWU9YS5qb2luKFwiLlwiKSk7dGhpcy51cGxvYWRlZD0wO3RoaXMucmVzcG9uc2VEYXRhPXRoaXMudXBsb2FkVG90YWw9bnVsbDt0aGlzLnN0YXR1cz1cImNyZWF0ZWRcIjt0aGlzLmFib3J0PWZ1bmN0aW9uKCl7dGhpcy5jaGFuZ2VTdGF0dXMoXCJhYm9ydFwiKX19XG5mdW5jdGlvbiBlKGEpe3ZhciBlPWEubWF0Y2goYilbMV07YT1hLnJlcGxhY2UoYixcIlwiKTthPWF0b2IoYSk7dmFyIGY9W10sbSxkLGgsZztmb3IobT0wO208YS5sZW5ndGg7bSs9NTEyKXtkPWEuc2xpY2UobSxtKzUxMik7aD1BcnJheShkLmxlbmd0aCk7Zm9yKGc9MDtnPGQubGVuZ3RoO2crKyloW2ddPWQuY2hhckNvZGVBdChnKTtkPW5ldyBVaW50OEFycmF5KGgpO2YucHVzaChkKX1yZXR1cm4gbmV3IEJsb2IoZix7dHlwZTplfSl9Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJmaWxldG9vbHNcIix7YmVmb3JlSW5pdDpmdW5jdGlvbihiKXtiLnVwbG9hZFJlcG9zaXRvcnk9bmV3IGEoYik7Yi5vbihcImZpbGVVcGxvYWRSZXF1ZXN0XCIsZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLmZpbGVMb2FkZXI7Yi54aHIub3BlbihcIlBPU1RcIixiLnVwbG9hZFVybCwhMCk7YS5kYXRhLnJlcXVlc3REYXRhLnVwbG9hZD17ZmlsZTpiLmZpbGUsbmFtZTpiLmZpbGVOYW1lfX0sbnVsbCxudWxsLDUpO2Iub24oXCJmaWxlVXBsb2FkUmVxdWVzdFwiLFxuZnVuY3Rpb24oYSl7dmFyIGU9YS5kYXRhLmZpbGVMb2FkZXIsZj1uZXcgRm9ybURhdGE7YT1hLmRhdGEucmVxdWVzdERhdGE7dmFyIGQ9Yi5jb25maWcuZmlsZVRvb2xzX3JlcXVlc3RIZWFkZXJzLGgsZztmb3IoZyBpbiBhKXt2YXIgbj1hW2ddO1wib2JqZWN0XCI9PT10eXBlb2YgbiYmbi5maWxlP2YuYXBwZW5kKGcsbi5maWxlLG4ubmFtZSk6Zi5hcHBlbmQoZyxuKX1mLmFwcGVuZChcImNrQ3NyZlRva2VuXCIsQ0tFRElUT1IudG9vbHMuZ2V0Q3NyZlRva2VuKCkpO2lmKGQpZm9yKGggaW4gZCllLnhoci5zZXRSZXF1ZXN0SGVhZGVyKGgsZFtoXSk7ZS54aHIuc2VuZChmKX0sbnVsbCxudWxsLDk5OSk7Yi5vbihcImZpbGVVcGxvYWRSZXNwb25zZVwiLGZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YS5maWxlTG9hZGVyLGM9Yi54aHIsZD1hLmRhdGE7dHJ5e3ZhciBlPUpTT04ucGFyc2UoYy5yZXNwb25zZVRleHQpO2UuZXJyb3ImJmUuZXJyb3IubWVzc2FnZSYmKGQubWVzc2FnZT1lLmVycm9yLm1lc3NhZ2UpO1xuaWYoZS51cGxvYWRlZClmb3IodmFyIGcgaW4gZSlkW2ddPWVbZ107ZWxzZSBhLmNhbmNlbCgpfWNhdGNoKGYpe2QubWVzc2FnZT1iLmxhbmcuZmlsZXRvb2xzLnJlc3BvbnNlRXJyb3IsQ0tFRElUT1Iud2FybihcImZpbGV0b29scy1yZXNwb25zZS1lcnJvclwiLHtyZXNwb25zZVRleHQ6Yy5yZXNwb25zZVRleHR9KSxhLmNhbmNlbCgpfX0sbnVsbCxudWxsLDk5OSl9fSk7YS5wcm90b3R5cGU9e2NyZWF0ZTpmdW5jdGlvbihhLGIsZSl7ZT1lfHxmO3ZhciBtPXRoaXMubG9hZGVycy5sZW5ndGg7YT1uZXcgZSh0aGlzLmVkaXRvcixhLGIpO2EuaWQ9bTt0aGlzLmxvYWRlcnNbbV09YTt0aGlzLmZpcmUoXCJpbnN0YW5jZUNyZWF0ZWRcIixhKTtyZXR1cm4gYX0saXNGaW5pc2hlZDpmdW5jdGlvbigpe2Zvcih2YXIgYT0wO2E8dGhpcy5sb2FkZXJzLmxlbmd0aDsrK2EpaWYoIXRoaXMubG9hZGVyc1thXS5pc0ZpbmlzaGVkKCkpcmV0dXJuITE7cmV0dXJuITB9fTtmLnByb3RvdHlwZT17bG9hZEFuZFVwbG9hZDpmdW5jdGlvbihhLFxuYil7dmFyIGU9dGhpczt0aGlzLm9uY2UoXCJsb2FkZWRcIixmdW5jdGlvbihmKXtmLmNhbmNlbCgpO2Uub25jZShcInVwZGF0ZVwiLGZ1bmN0aW9uKGEpe2EuY2FuY2VsKCl9LG51bGwsbnVsbCwwKTtlLnVwbG9hZChhLGIpfSxudWxsLG51bGwsMCk7dGhpcy5sb2FkKCl9LGxvYWQ6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLGI9dGhpcy5yZWFkZXI9bmV3IEZpbGVSZWFkZXI7YS5jaGFuZ2VTdGF0dXMoXCJsb2FkaW5nXCIpO3RoaXMuYWJvcnQ9ZnVuY3Rpb24oKXthLnJlYWRlci5hYm9ydCgpfTtiLm9uYWJvcnQ9ZnVuY3Rpb24oKXthLmNoYW5nZVN0YXR1cyhcImFib3J0XCIpfTtiLm9uZXJyb3I9ZnVuY3Rpb24oKXthLm1lc3NhZ2U9YS5sYW5nLmZpbGV0b29scy5sb2FkRXJyb3I7YS5jaGFuZ2VTdGF0dXMoXCJlcnJvclwiKX07Yi5vbnByb2dyZXNzPWZ1bmN0aW9uKGIpe2EubG9hZGVkPWIubG9hZGVkO2EudXBkYXRlKCl9O2Iub25sb2FkPWZ1bmN0aW9uKCl7YS5sb2FkZWQ9YS50b3RhbDthLmRhdGE9Yi5yZXN1bHQ7XG5hLmNoYW5nZVN0YXR1cyhcImxvYWRlZFwiKX07Yi5yZWFkQXNEYXRhVVJMKHRoaXMuZmlsZSl9LHVwbG9hZDpmdW5jdGlvbihhLGIpe3ZhciBlPWJ8fHt9O2E/KHRoaXMudXBsb2FkVXJsPWEsdGhpcy54aHI9bmV3IFhNTEh0dHBSZXF1ZXN0LHRoaXMuYXR0YWNoUmVxdWVzdExpc3RlbmVycygpLHRoaXMuZWRpdG9yLmZpcmUoXCJmaWxlVXBsb2FkUmVxdWVzdFwiLHtmaWxlTG9hZGVyOnRoaXMscmVxdWVzdERhdGE6ZX0pJiZ0aGlzLmNoYW5nZVN0YXR1cyhcInVwbG9hZGluZ1wiKSk6KHRoaXMubWVzc2FnZT10aGlzLmxhbmcuZmlsZXRvb2xzLm5vVXJsRXJyb3IsdGhpcy5jaGFuZ2VTdGF0dXMoXCJlcnJvclwiKSl9LGF0dGFjaFJlcXVlc3RMaXN0ZW5lcnM6ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKCl7XCJlcnJvclwiIT1lLnN0YXR1cyYmKGUubWVzc2FnZT1lLmxhbmcuZmlsZXRvb2xzLm5ldHdvcmtFcnJvcixlLmNoYW5nZVN0YXR1cyhcImVycm9yXCIpKX1mdW5jdGlvbiBiKCl7XCJhYm9ydFwiIT1lLnN0YXR1cyYmXG5lLmNoYW5nZVN0YXR1cyhcImFib3J0XCIpfXZhciBlPXRoaXMsZj10aGlzLnhocjtlLmFib3J0PWZ1bmN0aW9uKCl7Zi5hYm9ydCgpO2IoKX07Zi5vbmVycm9yPWE7Zi5vbmFib3J0PWI7Zi51cGxvYWQ/KGYudXBsb2FkLm9ucHJvZ3Jlc3M9ZnVuY3Rpb24oYSl7YS5sZW5ndGhDb21wdXRhYmxlJiYoZS51cGxvYWRUb3RhbHx8KGUudXBsb2FkVG90YWw9YS50b3RhbCksZS51cGxvYWRlZD1hLmxvYWRlZCxlLnVwZGF0ZSgpKX0sZi51cGxvYWQub25lcnJvcj1hLGYudXBsb2FkLm9uYWJvcnQ9Yik6KGUudXBsb2FkVG90YWw9ZS50b3RhbCxlLnVwZGF0ZSgpKTtmLm9ubG9hZD1mdW5jdGlvbigpe2UudXBkYXRlKCk7aWYoXCJhYm9ydFwiIT1lLnN0YXR1cylpZihlLnVwbG9hZGVkPWUudXBsb2FkVG90YWwsMjAwPmYuc3RhdHVzfHwyOTk8Zi5zdGF0dXMpZS5tZXNzYWdlPWUubGFuZy5maWxldG9vbHNbXCJodHRwRXJyb3JcIitmLnN0YXR1c10sZS5tZXNzYWdlfHwoZS5tZXNzYWdlPWUubGFuZy5maWxldG9vbHMuaHR0cEVycm9yLnJlcGxhY2UoXCIlMVwiLFxuZi5zdGF0dXMpKSxlLmNoYW5nZVN0YXR1cyhcImVycm9yXCIpO2Vsc2V7Zm9yKHZhciBhPXtmaWxlTG9hZGVyOmV9LGI9W1wibWVzc2FnZVwiLFwiZmlsZU5hbWVcIixcInVybFwiXSxjPWUuZWRpdG9yLmZpcmUoXCJmaWxlVXBsb2FkUmVzcG9uc2VcIixhKSxrPTA7azxiLmxlbmd0aDtrKyspe3ZhciB3PWJba107XCJzdHJpbmdcIj09PXR5cGVvZiBhW3ddJiYoZVt3XT1hW3ddKX1lLnJlc3BvbnNlRGF0YT1hO2RlbGV0ZSBlLnJlc3BvbnNlRGF0YS5maWxlTG9hZGVyOyExPT09Yz9lLmNoYW5nZVN0YXR1cyhcImVycm9yXCIpOmUuY2hhbmdlU3RhdHVzKFwidXBsb2FkZWRcIil9fX0sY2hhbmdlU3RhdHVzOmZ1bmN0aW9uKGEpe3RoaXMuc3RhdHVzPWE7aWYoXCJlcnJvclwiPT1hfHxcImFib3J0XCI9PWF8fFwibG9hZGVkXCI9PWF8fFwidXBsb2FkZWRcIj09YSl0aGlzLmFib3J0PWZ1bmN0aW9uKCl7fTt0aGlzLmZpcmUoYSk7dGhpcy51cGRhdGUoKX0sdXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5maXJlKFwidXBkYXRlXCIpfSxpc0ZpbmlzaGVkOmZ1bmN0aW9uKCl7cmV0dXJuISF0aGlzLnN0YXR1cy5tYXRjaCgvXig/OmxvYWRlZHx1cGxvYWRlZHxlcnJvcnxhYm9ydCkkLyl9fTtcbkNLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKGEucHJvdG90eXBlKTtDS0VESVRPUi5ldmVudC5pbXBsZW1lbnRPbihmLnByb3RvdHlwZSk7dmFyIGI9L15kYXRhOihcXFMqPyk7YmFzZTY0LC87Q0tFRElUT1IuZmlsZVRvb2xzfHwoQ0tFRElUT1IuZmlsZVRvb2xzPXt9KTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuZmlsZVRvb2xzLHt1cGxvYWRSZXBvc2l0b3J5OmEsZmlsZUxvYWRlcjpmLGdldFVwbG9hZFVybDpmdW5jdGlvbihhLGIpe3ZhciBlPUNLRURJVE9SLnRvb2xzLmNhcGl0YWxpemU7cmV0dXJuIGImJmFbYitcIlVwbG9hZFVybFwiXT9hW2IrXCJVcGxvYWRVcmxcIl06YS51cGxvYWRVcmw/YS51cGxvYWRVcmw6YiYmYVtcImZpbGVicm93c2VyXCIrZShiLDEpK1wiVXBsb2FkVXJsXCJdP2FbXCJmaWxlYnJvd3NlclwiK2UoYiwxKStcIlVwbG9hZFVybFwiXStcIlxceDI2cmVzcG9uc2VUeXBlXFx4M2Rqc29uXCI6YS5maWxlYnJvd3NlclVwbG9hZFVybD9hLmZpbGVicm93c2VyVXBsb2FkVXJsK1xuXCJcXHgyNnJlc3BvbnNlVHlwZVxceDNkanNvblwiOm51bGx9LGlzVHlwZVN1cHBvcnRlZDpmdW5jdGlvbihhLGIpe3JldHVybiEhYS50eXBlLm1hdGNoKGIpfSxpc0ZpbGVVcGxvYWRTdXBwb3J0ZWQ6XCJmdW5jdGlvblwiPT09dHlwZW9mIEZpbGVSZWFkZXImJlwiZnVuY3Rpb25cIj09PXR5cGVvZihuZXcgRmlsZVJlYWRlcikucmVhZEFzRGF0YVVSTCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIEZvcm1EYXRhJiZcImZ1bmN0aW9uXCI9PT10eXBlb2YobmV3IEZvcm1EYXRhKS5hcHBlbmQmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBYTUxIdHRwUmVxdWVzdCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIEJsb2J9KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiKXt2YXIgZD1bXTtpZihiKWZvcih2YXIgYyBpbiBiKWQucHVzaChjK1wiXFx4M2RcIitlbmNvZGVVUklDb21wb25lbnQoYltjXSkpO2Vsc2UgcmV0dXJuIGE7cmV0dXJuIGErKC0xIT1hLmluZGV4T2YoXCI/XCIpP1wiXFx4MjZcIjpcIj9cIikrZC5qb2luKFwiXFx4MjZcIil9ZnVuY3Rpb24gZihiKXtyZXR1cm4hYi5tYXRjaCgvY29tbWFuZD1RdWlja1VwbG9hZC8pfHxcbmIubWF0Y2goLyhcXD98JilyZXNwb25zZVR5cGU9anNvbi8pP2I6YShiLHtyZXNwb25zZVR5cGU6XCJqc29uXCJ9KX1mdW5jdGlvbiBlKGEpe2ErPVwiXCI7cmV0dXJuIGEuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkrYS5zdWJzdHIoMSl9ZnVuY3Rpb24gYigpe3ZhciBiPXRoaXMuZ2V0RGlhbG9nKCksZD1iLmdldFBhcmVudEVkaXRvcigpO2QuXy5maWxlYnJvd3NlclNlPXRoaXM7dmFyIGM9ZC5jb25maWdbXCJmaWxlYnJvd3NlclwiK2UoYi5nZXROYW1lKCkpK1wiV2luZG93V2lkdGhcIl18fGQuY29uZmlnLmZpbGVicm93c2VyV2luZG93V2lkdGh8fFwiODAlXCIsYj1kLmNvbmZpZ1tcImZpbGVicm93c2VyXCIrZShiLmdldE5hbWUoKSkrXCJXaW5kb3dIZWlnaHRcIl18fGQuY29uZmlnLmZpbGVicm93c2VyV2luZG93SGVpZ2h0fHxcIjcwJVwiLGc9dGhpcy5maWxlYnJvd3Nlci5wYXJhbXN8fHt9O2cuQ0tFZGl0b3I9ZC5uYW1lO2cuQ0tFZGl0b3JGdW5jTnVtPWQuXy5maWxlYnJvd3NlckZuO2cubGFuZ0NvZGV8fFxuKGcubGFuZ0NvZGU9ZC5sYW5nQ29kZSk7Zz1hKHRoaXMuZmlsZWJyb3dzZXIudXJsLGcpO2QucG9wdXAoZyxjLGIsZC5jb25maWcuZmlsZWJyb3dzZXJXaW5kb3dGZWF0dXJlc3x8ZC5jb25maWcuZmlsZUJyb3dzZXJXaW5kb3dGZWF0dXJlcyl9ZnVuY3Rpb24gYyhhKXt2YXIgYj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYS4kLmZvcm0pO2ImJigoYT1iLiQuZWxlbWVudHMuY2tDc3JmVG9rZW4pP2E9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGEpOihhPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImlucHV0XCIpLGEuc2V0QXR0cmlidXRlcyh7bmFtZTpcImNrQ3NyZlRva2VuXCIsdHlwZTpcImhpZGRlblwifSksYi5hcHBlbmQoYSkpLGEuc2V0QXR0cmlidXRlKFwidmFsdWVcIixDS0VESVRPUi50b29scy5nZXRDc3JmVG9rZW4oKSkpfWZ1bmN0aW9uIGsoKXt2YXIgYT10aGlzLmdldERpYWxvZygpO2EuZ2V0UGFyZW50RWRpdG9yKCkuXy5maWxlYnJvd3NlclNlPXRoaXM7cmV0dXJuIGEuZ2V0Q29udGVudEVsZW1lbnQodGhpc1tcImZvclwiXVswXSxcbnRoaXNbXCJmb3JcIl1bMV0pLmdldElucHV0RWxlbWVudCgpLiQudmFsdWUmJmEuZ2V0Q29udGVudEVsZW1lbnQodGhpc1tcImZvclwiXVswXSx0aGlzW1wiZm9yXCJdWzFdKS5nZXRBY3Rpb24oKT8hMDohMX1mdW5jdGlvbiBsKGIsZCxjKXt2YXIgZT1jLnBhcmFtc3x8e307ZS5DS0VkaXRvcj1iLm5hbWU7ZS5DS0VkaXRvckZ1bmNOdW09Yi5fLmZpbGVicm93c2VyRm47ZS5sYW5nQ29kZXx8KGUubGFuZ0NvZGU9Yi5sYW5nQ29kZSk7ZC5hY3Rpb249YShjLnVybCxlKTtkLmZpbGVicm93c2VyPWN9ZnVuY3Rpb24gbShhLGgseCxyKXtpZihyJiZyLmxlbmd0aClmb3IodmFyIHAsdT1yLmxlbmd0aDt1LS07KWlmKHA9clt1XSxcImhib3hcIiE9cC50eXBlJiZcInZib3hcIiE9cC50eXBlJiZcImZpZWxkc2V0XCIhPXAudHlwZXx8bShhLGgseCxwLmNoaWxkcmVuKSxwLmZpbGVicm93c2VyKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBwLmZpbGVicm93c2VyJiYocC5maWxlYnJvd3Nlcj17YWN0aW9uOlwiZmlsZUJ1dHRvblwiPT1cbnAudHlwZT9cIlF1aWNrVXBsb2FkXCI6XCJCcm93c2VcIix0YXJnZXQ6cC5maWxlYnJvd3Nlcn0pLFwiQnJvd3NlXCI9PXAuZmlsZWJyb3dzZXIuYWN0aW9uKXt2YXIgej1wLmZpbGVicm93c2VyLnVybDt2b2lkIDA9PT16JiYoej1hLmNvbmZpZ1tcImZpbGVicm93c2VyXCIrZShoKStcIkJyb3dzZVVybFwiXSx2b2lkIDA9PT16JiYoej1hLmNvbmZpZy5maWxlYnJvd3NlckJyb3dzZVVybCkpO3omJihwLm9uQ2xpY2s9YixwLmZpbGVicm93c2VyLnVybD16LHAuaGlkZGVuPSExKX1lbHNlIGlmKFwiUXVpY2tVcGxvYWRcIj09cC5maWxlYnJvd3Nlci5hY3Rpb24mJnBbXCJmb3JcIl0mJih6PXAuZmlsZWJyb3dzZXIudXJsLHZvaWQgMD09PXomJih6PWEuY29uZmlnW1wiZmlsZWJyb3dzZXJcIitlKGgpK1wiVXBsb2FkVXJsXCJdLHZvaWQgMD09PXomJih6PWEuY29uZmlnLmZpbGVicm93c2VyVXBsb2FkVXJsKSkseikpe3ZhciBxPXAub25DbGljaztwLm9uQ2xpY2s9ZnVuY3Rpb24oYil7dmFyIGU9Yi5zZW5kZXIsaD1lLmdldERpYWxvZygpLmdldENvbnRlbnRFbGVtZW50KHRoaXNbXCJmb3JcIl1bMF0sXG50aGlzW1wiZm9yXCJdWzFdKS5nZXRJbnB1dEVsZW1lbnQoKSxsPUNLRURJVE9SLmZpbGVUb29scyYmQ0tFRElUT1IuZmlsZVRvb2xzLmlzRmlsZVVwbG9hZFN1cHBvcnRlZDtpZihxJiYhMT09PXEuY2FsbChlLGIpKXJldHVybiExO2lmKGsuY2FsbChlLGIpKXtpZihcImZvcm1cIiE9PWEuY29uZmlnLmZpbGVicm93c2VyVXBsb2FkTWV0aG9kJiZsKXJldHVybiBiPWEudXBsb2FkUmVwb3NpdG9yeS5jcmVhdGUoaC4kLmZpbGVzWzBdKSxiLm9uKFwidXBsb2FkZWRcIixmdW5jdGlvbihhKXt2YXIgYj1hLnNlbmRlci5yZXNwb25zZURhdGE7Zy5jYWxsKGEuc2VuZGVyLmVkaXRvcixiLnVybCxiLm1lc3NhZ2UpfSksYi5vbihcImVycm9yXCIsZC5iaW5kKHRoaXMpKSxiLm9uKFwiYWJvcnRcIixkLmJpbmQodGhpcykpLGIubG9hZEFuZFVwbG9hZChmKHopKSxcInhoclwiO2MoaCk7cmV0dXJuITB9cmV0dXJuITF9O3AuZmlsZWJyb3dzZXIudXJsPXo7cC5oaWRkZW49ITE7bChhLHguZ2V0Q29udGVudHMocFtcImZvclwiXVswXSkuZ2V0KHBbXCJmb3JcIl1bMV0pLFxucC5maWxlYnJvd3Nlcil9fWZ1bmN0aW9uIGQoYSl7dmFyIGI9e307dHJ5e2I9SlNPTi5wYXJzZShhLnNlbmRlci54aHIucmVzcG9uc2UpfHx7fX1jYXRjaChkKXt9dGhpcy5lbmFibGUoKTthbGVydChiLmVycm9yP2IuZXJyb3IubWVzc2FnZTphLnNlbmRlci5tZXNzYWdlKX1mdW5jdGlvbiBoKGEsYixkKXtpZigtMSE9PWQuaW5kZXhPZihcIjtcIikpe2Q9ZC5zcGxpdChcIjtcIik7Zm9yKHZhciBjPTA7YzxkLmxlbmd0aDtjKyspaWYoaChhLGIsZFtjXSkpcmV0dXJuITA7cmV0dXJuITF9cmV0dXJuKGE9YS5nZXRDb250ZW50cyhiKS5nZXQoZCkuZmlsZWJyb3dzZXIpJiZhLnVybH1mdW5jdGlvbiBnKGEsYil7dmFyIGQ9dGhpcy5fLmZpbGVicm93c2VyU2UuZ2V0RGlhbG9nKCksYz10aGlzLl8uZmlsZWJyb3dzZXJTZVtcImZvclwiXSxlPXRoaXMuXy5maWxlYnJvd3NlclNlLmZpbGVicm93c2VyLm9uU2VsZWN0O2MmJmQuZ2V0Q29udGVudEVsZW1lbnQoY1swXSxjWzFdKS5yZXNldCgpO2lmKFwiZnVuY3Rpb25cIiE9XG50eXBlb2YgYnx8ITEhPT1iLmNhbGwodGhpcy5fLmZpbGVicm93c2VyU2UpKWlmKCFlfHwhMSE9PWUuY2FsbCh0aGlzLl8uZmlsZWJyb3dzZXJTZSxhLGIpKWlmKFwic3RyaW5nXCI9PXR5cGVvZiBiJiZiJiZhbGVydChiKSxhJiYoYz10aGlzLl8uZmlsZWJyb3dzZXJTZSxkPWMuZ2V0RGlhbG9nKCksYz1jLmZpbGVicm93c2VyLnRhcmdldHx8bnVsbCkpaWYoYz1jLnNwbGl0KFwiOlwiKSxlPWQuZ2V0Q29udGVudEVsZW1lbnQoY1swXSxjWzFdKSllLnNldFZhbHVlKGEpLGQuc2VsZWN0UGFnZShjWzBdKX1DS0VESVRPUi5wbHVnaW5zLmFkZChcImZpbGVicm93c2VyXCIse3JlcXVpcmVzOlwicG9wdXAsZmlsZXRvb2xzXCIsaW5pdDpmdW5jdGlvbihhKXthLl8uZmlsZWJyb3dzZXJGbj1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihnLGEpO2Eub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtDS0VESVRPUi50b29scy5yZW1vdmVGdW5jdGlvbih0aGlzLl8uZmlsZWJyb3dzZXJGbil9KX19KTtDS0VESVRPUi5vbihcImRpYWxvZ0RlZmluaXRpb25cIixcbmZ1bmN0aW9uKGEpe2lmKGEuZWRpdG9yLnBsdWdpbnMuZmlsZWJyb3dzZXIpZm9yKHZhciBiPWEuZGF0YS5kZWZpbml0aW9uLGQsYz0wO2M8Yi5jb250ZW50cy5sZW5ndGg7KytjKWlmKGQ9Yi5jb250ZW50c1tjXSltKGEuZWRpdG9yLGEuZGF0YS5uYW1lLGIsZC5lbGVtZW50cyksZC5oaWRkZW4mJmQuZmlsZWJyb3dzZXImJihkLmhpZGRlbj0haChiLGQuaWQsZC5maWxlYnJvd3NlcikpfSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3ZhciBjPWEuY29uZmlnLGs9YS5maXJlKFwidWlTcGFjZVwiLHtzcGFjZTpcInRvcFwiLGh0bWw6XCJcIn0pLmh0bWwsbD1mdW5jdGlvbigpe2Z1bmN0aW9uIGcoYSxiLGMpe2Quc2V0U3R5bGUoYixlKGMpKTtkLnNldFN0eWxlKFwicG9zaXRpb25cIixhKX1mdW5jdGlvbiBoKGEpe3ZhciBiPW0uZ2V0RG9jdW1lbnRQb3NpdGlvbigpO3N3aXRjaChhKXtjYXNlIFwidG9wXCI6ZyhcImFic29sdXRlXCIsXCJ0b3BcIixiLnktcS10KTticmVhaztjYXNlIFwicGluXCI6ZyhcImZpeGVkXCIsXG5cInRvcFwiLEIpO2JyZWFrO2Nhc2UgXCJib3R0b21cIjpnKFwiYWJzb2x1dGVcIixcInRvcFwiLGIueSsodS5oZWlnaHR8fHUuYm90dG9tLXUudG9wKSt0KX1rPWF9dmFyIGssbSxwLHUseixxLEEseT1jLmZsb2F0U3BhY2VEb2NrZWRPZmZzZXRYfHwwLHQ9Yy5mbG9hdFNwYWNlRG9ja2VkT2Zmc2V0WXx8MCx2PWMuZmxvYXRTcGFjZVBpbm5lZE9mZnNldFh8fDAsQj1jLmZsb2F0U3BhY2VQaW5uZWRPZmZzZXRZfHwwO3JldHVybiBmdW5jdGlvbihnKXtpZihtPWEuZWRpdGFibGUoKSl7dmFyIG49ZyYmXCJmb2N1c1wiPT1nLm5hbWU7biYmZC5zaG93KCk7YS5maXJlKFwiZmxvYXRpbmdTcGFjZUxheW91dFwiLHtzaG93Om59KTtkLnJlbW92ZVN0eWxlKFwibGVmdFwiKTtkLnJlbW92ZVN0eWxlKFwicmlnaHRcIik7cD1kLmdldENsaWVudFJlY3QoKTt1PW0uZ2V0Q2xpZW50UmVjdCgpO3o9Zi5nZXRWaWV3UGFuZVNpemUoKTtxPXAuaGVpZ2h0O0E9XCJwYWdlWE9mZnNldFwiaW4gZi4kP2YuJC5wYWdlWE9mZnNldDpDS0VESVRPUi5kb2N1bWVudC4kLmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0O1xuaz8ocSt0PD11LnRvcD9oKFwidG9wXCIpOnErdD56LmhlaWdodC11LmJvdHRvbT9oKFwicGluXCIpOmgoXCJib3R0b21cIiksZz16LndpZHRoLzIsZz1jLmZsb2F0U3BhY2VQcmVmZXJSaWdodD9cInJpZ2h0XCI6MDx1LmxlZnQmJnUucmlnaHQ8ei53aWR0aCYmdS53aWR0aD5wLndpZHRoP1wicnRsXCI9PWMuY29udGVudHNMYW5nRGlyZWN0aW9uP1wicmlnaHRcIjpcImxlZnRcIjpnLXUubGVmdD51LnJpZ2h0LWc/XCJsZWZ0XCI6XCJyaWdodFwiLHAud2lkdGg+ei53aWR0aD8oZz1cImxlZnRcIixuPTApOihuPVwibGVmdFwiPT1nPzA8dS5sZWZ0P3UubGVmdDowOnUucmlnaHQ8ei53aWR0aD96LndpZHRoLXUucmlnaHQ6MCxuK3Aud2lkdGg+ei53aWR0aCYmKGc9XCJsZWZ0XCI9PWc/XCJyaWdodFwiOlwibGVmdFwiLG49MCkpLGQuc2V0U3R5bGUoZyxlKChcInBpblwiPT1rP3Y6eSkrbisoXCJwaW5cIj09az8wOlwibGVmdFwiPT1nP0E6LUEpKSkpOihrPVwicGluXCIsaChcInBpblwiKSxsKGcpKX19fSgpO2lmKGspe3ZhciBtPW5ldyBDS0VESVRPUi50ZW1wbGF0ZSgnXFx4M2NkaXYgaWRcXHgzZFwiY2tlX3tuYW1lfVwiIGNsYXNzXFx4M2RcImNrZSB7aWR9IGNrZV9yZXNldF9hbGwgY2tlX2Nocm9tZSBja2VfZWRpdG9yX3tuYW1lfSBja2VfZmxvYXQgY2tlX3tsYW5nRGlyfSAnK1xuQ0tFRElUT1IuZW52LmNzc0NsYXNzKydcIiBkaXJcXHgzZFwie2xhbmdEaXJ9XCIgdGl0bGVcXHgzZFwiJysoQ0tFRElUT1IuZW52LmdlY2tvP1wiIFwiOlwiXCIpKydcIiBsYW5nXFx4M2RcIntsYW5nQ29kZX1cIiByb2xlXFx4M2RcImFwcGxpY2F0aW9uXCIgc3R5bGVcXHgzZFwie3N0eWxlfVwiJysoYS5hcHBsaWNhdGlvblRpdGxlPycgYXJpYS1sYWJlbGxlZGJ5XFx4M2RcImNrZV97bmFtZX1fYXJpYWxibFwiJzpcIiBcIikrXCJcXHgzZVwiKyhhLmFwcGxpY2F0aW9uVGl0bGU/J1xceDNjc3BhbiBpZFxceDNkXCJja2Vfe25hbWV9X2FyaWFsYmxcIiBjbGFzc1xceDNkXCJja2Vfdm9pY2VfbGFiZWxcIlxceDNle3ZvaWNlTGFiZWx9XFx4M2Mvc3BhblxceDNlJzpcIiBcIikrJ1xceDNjZGl2IGNsYXNzXFx4M2RcImNrZV9pbm5lclwiXFx4M2VcXHgzY2RpdiBpZFxceDNkXCJ7dG9wSWR9XCIgY2xhc3NcXHgzZFwiY2tlX3RvcFwiIHJvbGVcXHgzZFwicHJlc2VudGF0aW9uXCJcXHgzZXtjb250ZW50fVxceDNjL2RpdlxceDNlXFx4M2MvZGl2XFx4M2VcXHgzYy9kaXZcXHgzZScpLGQ9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLmFwcGVuZChDS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChtLm91dHB1dCh7Y29udGVudDprLFxuaWQ6YS5pZCxsYW5nRGlyOmEubGFuZy5kaXIsbGFuZ0NvZGU6YS5sYW5nQ29kZSxuYW1lOmEubmFtZSxzdHlsZTpcImRpc3BsYXk6bm9uZTt6LWluZGV4OlwiKyhjLmJhc2VGbG9hdFpJbmRleC0xKSx0b3BJZDphLnVpLnNwYWNlSWQoXCJ0b3BcIiksdm9pY2VMYWJlbDphLmFwcGxpY2F0aW9uVGl0bGV9KSkpLGg9Q0tFRElUT1IudG9vbHMuZXZlbnRzQnVmZmVyKDUwMCxsKSxnPUNLRURJVE9SLnRvb2xzLmV2ZW50c0J1ZmZlcigxMDAsbCk7ZC51bnNlbGVjdGFibGUoKTtkLm9uKFwibW91c2Vkb3duXCIsZnVuY3Rpb24oYSl7YT1hLmRhdGE7YS5nZXRUYXJnZXQoKS5oYXNBc2NlbmRhbnQoXCJhXCIsMSl8fGEucHJldmVudERlZmF1bHQoKX0pO2Eub24oXCJmb2N1c1wiLGZ1bmN0aW9uKGQpe2woZCk7YS5vbihcImNoYW5nZVwiLGguaW5wdXQpO2Yub24oXCJzY3JvbGxcIixnLmlucHV0KTtmLm9uKFwicmVzaXplXCIsZy5pbnB1dCl9KTthLm9uKFwiYmx1clwiLGZ1bmN0aW9uKCl7ZC5oaWRlKCk7YS5yZW1vdmVMaXN0ZW5lcihcImNoYW5nZVwiLFxuaC5pbnB1dCk7Zi5yZW1vdmVMaXN0ZW5lcihcInNjcm9sbFwiLGcuaW5wdXQpO2YucmVtb3ZlTGlzdGVuZXIoXCJyZXNpemVcIixnLmlucHV0KX0pO2Eub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtmLnJlbW92ZUxpc3RlbmVyKFwic2Nyb2xsXCIsZy5pbnB1dCk7Zi5yZW1vdmVMaXN0ZW5lcihcInJlc2l6ZVwiLGcuaW5wdXQpO2QuY2xlYXJDdXN0b21EYXRhKCk7ZC5yZW1vdmUoKX0pO2EuZm9jdXNNYW5hZ2VyLmhhc0ZvY3VzJiZkLnNob3coKTthLmZvY3VzTWFuYWdlci5hZGQoZCwxKX19dmFyIGY9Q0tFRElUT1IuZG9jdW1lbnQuZ2V0V2luZG93KCksZT1DS0VESVRPUi50b29scy5jc3NMZW5ndGg7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJmbG9hdGluZ3NwYWNlXCIse2luaXQ6ZnVuY3Rpb24oYil7Yi5vbihcImxvYWRlZFwiLGZ1bmN0aW9uKCl7YSh0aGlzKX0sbnVsbCxudWxsLDIwKX19KX0oKSxDS0VESVRPUi5wbHVnaW5zLmFkZChcImxpc3RibG9ja1wiLHtyZXF1aXJlczpcInBhbmVsXCIsb25Mb2FkOmZ1bmN0aW9uKCl7dmFyIGE9XG5DS0VESVRPUi5hZGRUZW1wbGF0ZShcInBhbmVsLWxpc3RcIiwnXFx4M2N1bCByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiIGNsYXNzXFx4M2RcImNrZV9wYW5lbF9saXN0XCJcXHgzZXtpdGVtc31cXHgzYy91bFxceDNlJyksZj1DS0VESVRPUi5hZGRUZW1wbGF0ZShcInBhbmVsLWxpc3QtaXRlbVwiLCdcXHgzY2xpIGlkXFx4M2RcIntpZH1cIiBjbGFzc1xceDNkXCJja2VfcGFuZWxfbGlzdEl0ZW1cIiByb2xlXFx4M2RwcmVzZW50YXRpb25cXHgzZVxceDNjYSBpZFxceDNkXCJ7aWR9X29wdGlvblwiIF9ja2VfZm9jdXNcXHgzZDEgaGlkZWZvY3VzXFx4M2R0cnVlIHRpdGxlXFx4M2RcInt0aXRsZX1cIiBkcmFnZ2FibGVcXHgzZFwiZmFsc2VcIiBvbmRyYWdzdGFydFxceDNkXCJyZXR1cm4gZmFsc2U7XCIgaHJlZlxceDNkXCJqYXZhc2NyaXB0OnZvaWQoXFwne3ZhbH1cXCcpXCIgIG9uY2xpY2tcXHgzZFwie29uY2xpY2t9Q0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKHtjbGlja0ZufSxcXCd7dmFsfVxcJyk7IHJldHVybiBmYWxzZTtcIiByb2xlXFx4M2RcIm9wdGlvblwiXFx4M2V7dGV4dH1cXHgzYy9hXFx4M2VcXHgzYy9saVxceDNlJyksXG5lPUNLRURJVE9SLmFkZFRlbXBsYXRlKFwicGFuZWwtbGlzdC1ncm91cFwiLCdcXHgzY2gxIGlkXFx4M2RcIntpZH1cIiBkcmFnZ2FibGVcXHgzZFwiZmFsc2VcIiBvbmRyYWdzdGFydFxceDNkXCJyZXR1cm4gZmFsc2U7XCIgY2xhc3NcXHgzZFwiY2tlX3BhbmVsX2dyb3VwdGl0bGVcIiByb2xlXFx4M2RcInByZXNlbnRhdGlvblwiIFxceDNle2xhYmVsfVxceDNjL2gxXFx4M2UnKSxiPS9cXCcvZztDS0VESVRPUi51aS5wYW5lbC5wcm90b3R5cGUuYWRkTGlzdEJsb2NrPWZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMuYWRkQmxvY2soYSxuZXcgQ0tFRElUT1IudWkubGlzdEJsb2NrKHRoaXMuZ2V0SG9sZGVyRWxlbWVudCgpLGIpKX07Q0tFRElUT1IudWkubGlzdEJsb2NrPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHtiYXNlOkNLRURJVE9SLnVpLnBhbmVsLmJsb2NrLCQ6ZnVuY3Rpb24oYSxiKXtiPWJ8fHt9O3ZhciBlPWIuYXR0cmlidXRlc3x8KGIuYXR0cmlidXRlcz17fSk7KHRoaXMubXVsdGlTZWxlY3Q9ISFiLm11bHRpU2VsZWN0KSYmXG4oZVtcImFyaWEtbXVsdGlzZWxlY3RhYmxlXCJdPSEwKTshZS5yb2xlJiYoZS5yb2xlPVwibGlzdGJveFwiKTt0aGlzLmJhc2UuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuZWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJyb2xlXCIsZS5yb2xlKTtlPXRoaXMua2V5cztlWzQwXT1cIm5leHRcIjtlWzldPVwibmV4dFwiO2VbMzhdPVwicHJldlwiO2VbQ0tFRElUT1IuU0hJRlQrOV09XCJwcmV2XCI7ZVszMl09Q0tFRElUT1IuZW52LmllP1wibW91c2V1cFwiOlwiY2xpY2tcIjtDS0VESVRPUi5lbnYuaWUmJihlWzEzXT1cIm1vdXNldXBcIik7dGhpcy5fLnBlbmRpbmdIdG1sPVtdO3RoaXMuXy5wZW5kaW5nTGlzdD1bXTt0aGlzLl8uaXRlbXM9e307dGhpcy5fLmdyb3Vwcz17fX0sXzp7Y2xvc2U6ZnVuY3Rpb24oKXtpZih0aGlzLl8uc3RhcnRlZCl7dmFyIGI9YS5vdXRwdXQoe2l0ZW1zOnRoaXMuXy5wZW5kaW5nTGlzdC5qb2luKFwiXCIpfSk7dGhpcy5fLnBlbmRpbmdMaXN0PVtdO3RoaXMuXy5wZW5kaW5nSHRtbC5wdXNoKGIpO1xuZGVsZXRlIHRoaXMuXy5zdGFydGVkfX0sZ2V0Q2xpY2s6ZnVuY3Rpb24oKXt0aGlzLl8uY2xpY2t8fCh0aGlzLl8uY2xpY2s9Q0tFRElUT1IudG9vbHMuYWRkRnVuY3Rpb24oZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy50b2dnbGUoYSk7aWYodGhpcy5vbkNsaWNrKXRoaXMub25DbGljayhhLGIpfSx0aGlzKSk7cmV0dXJuIHRoaXMuXy5jbGlja319LHByb3RvOnthZGQ6ZnVuY3Rpb24oYSxlLGwpe3ZhciBtPUNLRURJVE9SLnRvb2xzLmdldE5leHRJZCgpO3RoaXMuXy5zdGFydGVkfHwodGhpcy5fLnN0YXJ0ZWQ9MSx0aGlzLl8uc2l6ZT10aGlzLl8uc2l6ZXx8MCk7dGhpcy5fLml0ZW1zW2FdPW07dmFyIGQ7ZD1DS0VESVRPUi50b29scy5odG1sRW5jb2RlQXR0cihhKS5yZXBsYWNlKGIsXCJcXFxcJ1wiKTthPXtpZDptLHZhbDpkLG9uY2xpY2s6Q0tFRElUT1IuZW52LmllPydyZXR1cm4gZmFsc2U7XCIgb25tb3VzZXVwXFx4M2RcIkNLRURJVE9SLnRvb2xzLmdldE1vdXNlQnV0dG9uKGV2ZW50KVxceDNkXFx4M2RcXHgzZENLRURJVE9SLk1PVVNFX0JVVFRPTl9MRUZUXFx4MjZcXHgyNic6XG5cIlwiLGNsaWNrRm46dGhpcy5fLmdldENsaWNrKCksdGl0bGU6Q0tFRElUT1IudG9vbHMuaHRtbEVuY29kZUF0dHIobHx8YSksdGV4dDplfHxhfTt0aGlzLl8ucGVuZGluZ0xpc3QucHVzaChmLm91dHB1dChhKSl9LHN0YXJ0R3JvdXA6ZnVuY3Rpb24oYSl7dGhpcy5fLmNsb3NlKCk7dmFyIGI9Q0tFRElUT1IudG9vbHMuZ2V0TmV4dElkKCk7dGhpcy5fLmdyb3Vwc1thXT1iO3RoaXMuXy5wZW5kaW5nSHRtbC5wdXNoKGUub3V0cHV0KHtpZDpiLGxhYmVsOmF9KSl9LGNvbW1pdDpmdW5jdGlvbigpe3RoaXMuXy5jbG9zZSgpO3RoaXMuZWxlbWVudC5hcHBlbmRIdG1sKHRoaXMuXy5wZW5kaW5nSHRtbC5qb2luKFwiXCIpKTtkZWxldGUgdGhpcy5fLnNpemU7dGhpcy5fLnBlbmRpbmdIdG1sPVtdfSx0b2dnbGU6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5pc01hcmtlZChhKTtiP3RoaXMudW5tYXJrKGEpOnRoaXMubWFyayhhKTtyZXR1cm4hYn0saGlkZUdyb3VwOmZ1bmN0aW9uKGEpe3ZhciBiPShhPVxudGhpcy5lbGVtZW50LmdldERvY3VtZW50KCkuZ2V0QnlJZCh0aGlzLl8uZ3JvdXBzW2FdKSkmJmEuZ2V0TmV4dCgpO2EmJihhLnNldFN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKSxiJiZcInVsXCI9PWIuZ2V0TmFtZSgpJiZiLnNldFN0eWxlKFwiZGlzcGxheVwiLFwibm9uZVwiKSl9LGhpZGVJdGVtOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudC5nZXREb2N1bWVudCgpLmdldEJ5SWQodGhpcy5fLml0ZW1zW2FdKS5zZXRTdHlsZShcImRpc3BsYXlcIixcIm5vbmVcIil9LHNob3dBbGw6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl8uaXRlbXMsYj10aGlzLl8uZ3JvdXBzLGU9dGhpcy5lbGVtZW50LmdldERvY3VtZW50KCksZjtmb3IoZiBpbiBhKWUuZ2V0QnlJZChhW2ZdKS5zZXRTdHlsZShcImRpc3BsYXlcIixcIlwiKTtmb3IodmFyIGQgaW4gYilhPWUuZ2V0QnlJZChiW2RdKSxmPWEuZ2V0TmV4dCgpLGEuc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJcIiksZiYmXCJ1bFwiPT1mLmdldE5hbWUoKSYmZi5zZXRTdHlsZShcImRpc3BsYXlcIixcblwiXCIpfSxtYXJrOmZ1bmN0aW9uKGEpe3RoaXMubXVsdGlTZWxlY3R8fHRoaXMudW5tYXJrQWxsKCk7YT10aGlzLl8uaXRlbXNbYV07dmFyIGI9dGhpcy5lbGVtZW50LmdldERvY3VtZW50KCkuZ2V0QnlJZChhKTtiLmFkZENsYXNzKFwiY2tlX3NlbGVjdGVkXCIpO3RoaXMuZWxlbWVudC5nZXREb2N1bWVudCgpLmdldEJ5SWQoYStcIl9vcHRpb25cIikuc2V0QXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiLCEwKTt0aGlzLm9uTWFyayYmdGhpcy5vbk1hcmsoYil9LG1hcmtGaXJzdERpc3BsYXllZDpmdW5jdGlvbigpe3ZhciBhPXRoaXM7dGhpcy5fLm1hcmtGaXJzdERpc3BsYXllZChmdW5jdGlvbigpe2EubXVsdGlTZWxlY3R8fGEudW5tYXJrQWxsKCl9KX0sdW5tYXJrOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuZWxlbWVudC5nZXREb2N1bWVudCgpO2E9dGhpcy5fLml0ZW1zW2FdO3ZhciBlPWIuZ2V0QnlJZChhKTtlLnJlbW92ZUNsYXNzKFwiY2tlX3NlbGVjdGVkXCIpO2IuZ2V0QnlJZChhK1wiX29wdGlvblwiKS5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLXNlbGVjdGVkXCIpO1xudGhpcy5vblVubWFyayYmdGhpcy5vblVubWFyayhlKX0sdW5tYXJrQWxsOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5fLml0ZW1zLGI9dGhpcy5lbGVtZW50LmdldERvY3VtZW50KCksZTtmb3IoZSBpbiBhKXt2YXIgZj1hW2VdO2IuZ2V0QnlJZChmKS5yZW1vdmVDbGFzcyhcImNrZV9zZWxlY3RlZFwiKTtiLmdldEJ5SWQoZitcIl9vcHRpb25cIikucmVtb3ZlQXR0cmlidXRlKFwiYXJpYS1zZWxlY3RlZFwiKX10aGlzLm9uVW5tYXJrJiZ0aGlzLm9uVW5tYXJrKCl9LGlzTWFya2VkOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVsZW1lbnQuZ2V0RG9jdW1lbnQoKS5nZXRCeUlkKHRoaXMuXy5pdGVtc1thXSkuaGFzQ2xhc3MoXCJja2Vfc2VsZWN0ZWRcIil9LGZvY3VzOmZ1bmN0aW9uKGEpe3RoaXMuXy5mb2N1c0luZGV4PS0xO3ZhciBiPXRoaXMuZWxlbWVudC5nZXRFbGVtZW50c0J5VGFnKFwiYVwiKSxlLGY9LTE7aWYoYSlmb3IoZT10aGlzLmVsZW1lbnQuZ2V0RG9jdW1lbnQoKS5nZXRCeUlkKHRoaXMuXy5pdGVtc1thXSkuZ2V0Rmlyc3QoKTthPVxuYi5nZXRJdGVtKCsrZik7KXtpZihhLmVxdWFscyhlKSl7dGhpcy5fLmZvY3VzSW5kZXg9ZjticmVha319ZWxzZSB0aGlzLmVsZW1lbnQuZm9jdXMoKTtlJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZS5mb2N1cygpfSwwKX19fSl9fSksQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJyaWNoY29tYm9cIix7cmVxdWlyZXM6XCJmbG9hdHBhbmVsLGxpc3RibG9jayxidXR0b25cIixiZWZvcmVJbml0OmZ1bmN0aW9uKGEpe2EudWkuYWRkSGFuZGxlcihDS0VESVRPUi5VSV9SSUNIQ09NQk8sQ0tFRElUT1IudWkucmljaENvbWJvLmhhbmRsZXIpfX0pLGZ1bmN0aW9uKCl7dmFyIGE9J1xceDNjc3BhbiBpZFxceDNkXCJ7aWR9XCIgY2xhc3NcXHgzZFwiY2tlX2NvbWJvIGNrZV9jb21ib19fe25hbWV9IHtjbHN9XCIgcm9sZVxceDNkXCJwcmVzZW50YXRpb25cIlxceDNlXFx4M2NzcGFuIGlkXFx4M2RcIntpZH1fbGFiZWxcIiBjbGFzc1xceDNkXCJja2VfY29tYm9fbGFiZWxcIlxceDNle2xhYmVsfVxceDNjL3NwYW5cXHgzZVxceDNjYSBjbGFzc1xceDNkXCJja2VfY29tYm9fYnV0dG9uXCIgdGl0bGVcXHgzZFwie3RpdGxlfVwiIHRhYmluZGV4XFx4M2RcIi0xXCInK1xuKENLRURJVE9SLmVudi5nZWNrbyYmIUNLRURJVE9SLmVudi5oYz9cIlwiOlwiIGhyZWZcXHgzZFxcXCJqYXZhc2NyaXB0OnZvaWQoJ3t0aXRsZUpzfScpXFxcIlwiKSsnIGhpZGVmb2N1c1xceDNkXCJ0cnVlXCIgcm9sZVxceDNkXCJidXR0b25cIiBhcmlhLWxhYmVsbGVkYnlcXHgzZFwie2lkfV9sYWJlbFwiIGFyaWEtaGFzcG9wdXBcXHgzZFwibGlzdGJveFwiJyxmPVwiXCI7Q0tFRElUT1IuZW52LmdlY2tvJiZDS0VESVRPUi5lbnYubWFjJiYoYSs9JyBvbmtleXByZXNzXFx4M2RcInJldHVybiBmYWxzZTtcIicpO0NLRURJVE9SLmVudi5nZWNrbyYmKGErPScgb25ibHVyXFx4M2RcInRoaXMuc3R5bGUuY3NzVGV4dCBcXHgzZCB0aGlzLnN0eWxlLmNzc1RleHQ7XCInKTtDS0VESVRPUi5lbnYuaWUmJihmPSdyZXR1cm4gZmFsc2U7XCIgb25tb3VzZXVwXFx4M2RcIkNLRURJVE9SLnRvb2xzLmdldE1vdXNlQnV0dG9uKGV2ZW50KVxceDNkXFx4M2RDS0VESVRPUi5NT1VTRV9CVVRUT05fTEVGVFxceDI2XFx4MjYnKTt2YXIgYT1hKygnIG9ua2V5ZG93blxceDNkXCJyZXR1cm4gQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKHtrZXlkb3duRm59LGV2ZW50LHRoaXMpO1wiIG9uZm9jdXNcXHgzZFwicmV0dXJuIENLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbih7Zm9jdXNGbn0sZXZlbnQpO1wiIG9uY2xpY2tcXHgzZFwiJytcbmYrJ0NLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbih7Y2xpY2tGbn0sdGhpcyk7cmV0dXJuIGZhbHNlO1wiXFx4M2VcXHgzY3NwYW4gaWRcXHgzZFwie2lkfV90ZXh0XCIgY2xhc3NcXHgzZFwiY2tlX2NvbWJvX3RleHQgY2tlX2NvbWJvX2lubGluZWxhYmVsXCJcXHgzZXtsYWJlbH1cXHgzYy9zcGFuXFx4M2VcXHgzY3NwYW4gY2xhc3NcXHgzZFwiY2tlX2NvbWJvX29wZW5cIlxceDNlXFx4M2NzcGFuIGNsYXNzXFx4M2RcImNrZV9jb21ib19hcnJvd1wiXFx4M2UnKyhDS0VESVRPUi5lbnYuaGM/XCJcXHgyNiM5NjYwO1wiOkNLRURJVE9SLmVudi5haXI/XCJcXHgyNm5ic3A7XCI6XCJcIikrXCJcXHgzYy9zcGFuXFx4M2VcXHgzYy9zcGFuXFx4M2VcXHgzYy9hXFx4M2VcXHgzYy9zcGFuXFx4M2VcIiksZT1DS0VESVRPUi5hZGRUZW1wbGF0ZShcImNvbWJvXCIsYSk7Q0tFRElUT1IuVUlfUklDSENPTUJPPVwicmljaGNvbWJvXCI7Q0tFRElUT1IudWkucmljaENvbWJvPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKGEpe0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLFxuYSx7Y2FuR3JvdXA6ITEsdGl0bGU6YS5sYWJlbCxtb2Rlczp7d3lzaXd5ZzoxfSxlZGl0b3JGb2N1czoxfSk7YT10aGlzLnBhbmVsfHx7fTtkZWxldGUgdGhpcy5wYW5lbDt0aGlzLmlkPUNLRURJVE9SLnRvb2xzLmdldE5leHROdW1iZXIoKTt0aGlzLmRvY3VtZW50PWEucGFyZW50JiZhLnBhcmVudC5nZXREb2N1bWVudCgpfHxDS0VESVRPUi5kb2N1bWVudDthLmNsYXNzTmFtZT1cImNrZV9jb21ib3BhbmVsXCI7YS5ibG9jaz17bXVsdGlTZWxlY3Q6YS5tdWx0aVNlbGVjdCxhdHRyaWJ1dGVzOmEuYXR0cmlidXRlc307YS50b29sYmFyUmVsYXRlZD0hMDt0aGlzLl89e3BhbmVsRGVmaW5pdGlvbjphLGl0ZW1zOnt9LGxpc3RlbmVyczpbXX19LHByb3RvOntyZW5kZXJIdG1sOmZ1bmN0aW9uKGEpe3ZhciBjPVtdO3RoaXMucmVuZGVyKGEsYyk7cmV0dXJuIGMuam9pbihcIlwiKX0scmVuZGVyOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZigpe2lmKHRoaXMuZ2V0U3RhdGUoKSE9Q0tFRElUT1IuVFJJU1RBVEVfT04pe3ZhciBkPVxudGhpcy5tb2Rlc1thLm1vZGVdP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRDthLnJlYWRPbmx5JiYhdGhpcy5yZWFkT25seSYmKGQ9Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpO3RoaXMuc2V0U3RhdGUoZCk7dGhpcy5zZXRWYWx1ZShcIlwiKTtkIT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCYmdGhpcy5yZWZyZXNoJiZ0aGlzLnJlZnJlc2goKX19dmFyIGw9Q0tFRElUT1IuZW52LG0sZCxoPVwiY2tlX1wiK3RoaXMuaWQsZz1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbihjKXtkJiYoYS51bmxvY2tTZWxlY3Rpb24oMSksZD0wKTttLmV4ZWN1dGUoYyl9LHRoaXMpLG49dGhpczttPXtpZDpoLGNvbWJvOnRoaXMsZm9jdXM6ZnVuY3Rpb24oKXtDS0VESVRPUi5kb2N1bWVudC5nZXRCeUlkKGgpLmdldENoaWxkKDEpLmZvY3VzKCl9LGV4ZWN1dGU6ZnVuY3Rpb24oZCl7dmFyIGM9bi5fO2lmKGMuc3RhdGUhPUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEKWlmKG4uY3JlYXRlUGFuZWwoYSksXG5jLm9uKWMucGFuZWwuaGlkZSgpO2Vsc2V7bi5jb21taXQoKTt2YXIgZT1uLmdldFZhbHVlKCk7ZT9jLmxpc3QubWFyayhlKTpjLmxpc3QudW5tYXJrQWxsKCk7Yy5wYW5lbC5zaG93QmxvY2sobi5pZCxuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZCksNCl9fSxjbGlja0ZuOmd9O3RoaXMuXy5saXN0ZW5lcnMucHVzaChhLm9uKFwiYWN0aXZlRmlsdGVyQ2hhbmdlXCIsZix0aGlzKSk7dGhpcy5fLmxpc3RlbmVycy5wdXNoKGEub24oXCJtb2RlXCIsZix0aGlzKSk7dGhpcy5fLmxpc3RlbmVycy5wdXNoKGEub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixmLHRoaXMpKTshdGhpcy5yZWFkT25seSYmdGhpcy5fLmxpc3RlbmVycy5wdXNoKGEub24oXCJyZWFkT25seVwiLGYsdGhpcykpO3ZhciB3PUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKGZ1bmN0aW9uKGEsYil7YT1uZXcgQ0tFRElUT1IuZG9tLmV2ZW50KGEpO3ZhciBkPWEuZ2V0S2V5c3Ryb2tlKCk7c3dpdGNoKGQpe2Nhc2UgMTM6Y2FzZSAzMjpjYXNlIDQwOkNLRURJVE9SLnRvb2xzLmNhbGxGdW5jdGlvbihnLFxuYik7YnJlYWs7ZGVmYXVsdDptLm9ua2V5KG0sZCl9YS5wcmV2ZW50RGVmYXVsdCgpfSkseD1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbigpe20ub25mb2N1cyYmbS5vbmZvY3VzKCl9KTtkPTA7bS5rZXlEb3duRm49dztsPXtpZDpoLG5hbWU6dGhpcy5uYW1lfHx0aGlzLmNvbW1hbmQsbGFiZWw6dGhpcy5sYWJlbCx0aXRsZTp0aGlzLnRpdGxlLGNsczp0aGlzLmNsYXNzTmFtZXx8XCJcIix0aXRsZUpzOmwuZ2Vja28mJiFsLmhjP1wiXCI6KHRoaXMudGl0bGV8fFwiXCIpLnJlcGxhY2UoXCInXCIsXCJcIiksa2V5ZG93bkZuOncsZm9jdXNGbjp4LGNsaWNrRm46Z307ZS5vdXRwdXQobCxjKTtpZih0aGlzLm9uUmVuZGVyKXRoaXMub25SZW5kZXIoKTtyZXR1cm4gbX0sY3JlYXRlUGFuZWw6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuXy5wYW5lbCl7dmFyIGM9dGhpcy5fLnBhbmVsRGVmaW5pdGlvbixlPXRoaXMuXy5wYW5lbERlZmluaXRpb24uYmxvY2ssZj1jLnBhcmVudHx8Q0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLFxubT1cImNrZV9jb21ib3BhbmVsX19cIit0aGlzLm5hbWUsZD1uZXcgQ0tFRElUT1IudWkuZmxvYXRQYW5lbChhLGYsYyksYz1kLmFkZExpc3RCbG9jayh0aGlzLmlkLGUpLGg9dGhpcztkLm9uU2hvdz1mdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhtKTtoLnNldFN0YXRlKENLRURJVE9SLlRSSVNUQVRFX09OKTtoLl8ub249MTtoLmVkaXRvckZvY3VzJiYhYS5mb2N1c01hbmFnZXIuaGFzRm9jdXMmJmEuZm9jdXMoKTtpZihoLm9uT3BlbiloLm9uT3BlbigpfTtkLm9uSGlkZT1mdW5jdGlvbihkKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MobSk7aC5zZXRTdGF0ZShoLm1vZGVzJiZoLm1vZGVzW2EubW9kZV0/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEKTtoLl8ub249MDtpZighZCYmaC5vbkNsb3NlKWgub25DbG9zZSgpfTtkLm9uRXNjYXBlPWZ1bmN0aW9uKCl7ZC5oaWRlKDEpfTtjLm9uQ2xpY2s9ZnVuY3Rpb24oYSxiKXtoLm9uQ2xpY2smJlxuaC5vbkNsaWNrLmNhbGwoaCxhLGIpO2QuaGlkZSgpfTt0aGlzLl8ucGFuZWw9ZDt0aGlzLl8ubGlzdD1jO2QuZ2V0QmxvY2sodGhpcy5pZCkub25IaWRlPWZ1bmN0aW9uKCl7aC5fLm9uPTA7aC5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9PRkYpfTt0aGlzLmluaXQmJnRoaXMuaW5pdCgpfX0sc2V0VmFsdWU6ZnVuY3Rpb24oYSxjKXt0aGlzLl8udmFsdWU9YTt2YXIgZT10aGlzLmRvY3VtZW50LmdldEJ5SWQoXCJja2VfXCIrdGhpcy5pZCtcIl90ZXh0XCIpO2UmJihhfHxjP2UucmVtb3ZlQ2xhc3MoXCJja2VfY29tYm9faW5saW5lbGFiZWxcIik6KGM9dGhpcy5sYWJlbCxlLmFkZENsYXNzKFwiY2tlX2NvbWJvX2lubGluZWxhYmVsXCIpKSxlLnNldFRleHQoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGM/YzphKSk7dmFyIGU9XCJ1bmRlZmluZWRcIiE9dHlwZW9mIGM/YzphLGY9dGhpcy5sYWJlbCxlPWU9PT1mP2U6ZStcIiwgXCIrZjsoZj10aGlzLmRvY3VtZW50LmdldEJ5SWQoXCJja2VfXCIrdGhpcy5pZCtcIl9sYWJlbFwiKSkmJlxuZi5zZXRUZXh0KGUpfSxnZXRWYWx1ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLl8udmFsdWV8fFwiXCJ9LHVubWFya0FsbDpmdW5jdGlvbigpe3RoaXMuXy5saXN0LnVubWFya0FsbCgpfSxtYXJrOmZ1bmN0aW9uKGEpe3RoaXMuXy5saXN0Lm1hcmsoYSl9LGhpZGVJdGVtOmZ1bmN0aW9uKGEpe3RoaXMuXy5saXN0LmhpZGVJdGVtKGEpfSxoaWRlR3JvdXA6ZnVuY3Rpb24oYSl7dGhpcy5fLmxpc3QuaGlkZUdyb3VwKGEpfSxzaG93QWxsOmZ1bmN0aW9uKCl7dGhpcy5fLmxpc3Quc2hvd0FsbCgpfSxhZGQ6ZnVuY3Rpb24oYSxjLGUpe3RoaXMuXy5pdGVtc1thXT1lfHxhO3RoaXMuXy5saXN0LmFkZChhLGMsZSl9LHN0YXJ0R3JvdXA6ZnVuY3Rpb24oYSl7dGhpcy5fLmxpc3Quc3RhcnRHcm91cChhKX0sY29tbWl0OmZ1bmN0aW9uKCl7dGhpcy5fLmNvbW1pdHRlZHx8KHRoaXMuXy5saXN0LmNvbW1pdCgpLHRoaXMuXy5jb21taXR0ZWQ9MSxDS0VESVRPUi51aS5maXJlKFwicmVhZHlcIix0aGlzKSk7XG50aGlzLl8uY29tbWl0dGVkPTF9LHNldFN0YXRlOmZ1bmN0aW9uKGEpe2lmKHRoaXMuXy5zdGF0ZSE9YSl7dmFyIGM9dGhpcy5kb2N1bWVudC5nZXRCeUlkKFwiY2tlX1wiK3RoaXMuaWQpLGU9Yy5nZXRFbGVtZW50c0J5VGFnKFwiYVwiKS5nZXRJdGVtKDApO2Muc2V0U3RhdGUoYSxcImNrZV9jb21ib1wiKTthPT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRD9jLnNldEF0dHJpYnV0ZShcImFyaWEtZGlzYWJsZWRcIiwhMCk6Yy5yZW1vdmVBdHRyaWJ1dGUoXCJhcmlhLWRpc2FibGVkXCIpO2UmJmUuc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLGE9PUNLRURJVE9SLlRSSVNUQVRFX09OKTt0aGlzLl8uc3RhdGU9YX19LGdldFN0YXRlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuXy5zdGF0ZX0sZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5fLnN0YXRlPT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCYmdGhpcy5zZXRTdGF0ZSh0aGlzLl8ubGFzdFN0YXRlKX0sZGlzYWJsZTpmdW5jdGlvbigpe3RoaXMuXy5zdGF0ZSE9XG5DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCYmKHRoaXMuXy5sYXN0U3RhdGU9dGhpcy5fLnN0YXRlLHRoaXMuc2V0U3RhdGUoQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpKX0sZGVzdHJveTpmdW5jdGlvbigpe0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2godGhpcy5fLmxpc3RlbmVycyxmdW5jdGlvbihhKXthLnJlbW92ZUxpc3RlbmVyKCl9KTt0aGlzLl8ubGlzdGVuZXJzPVtdfSxzZWxlY3Q6ZnVuY3Rpb24oYSl7aWYoIUNLRURJVE9SLnRvb2xzLmlzRW1wdHkodGhpcy5fLml0ZW1zKSlmb3IodmFyIGMgaW4gdGhpcy5fLml0ZW1zKWlmKGEoe3ZhbHVlOmMsdGV4dDp0aGlzLl8uaXRlbXNbY119KSl7dGhpcy5zZXRWYWx1ZShjKTticmVha319fSxzdGF0aWNzOntoYW5kbGVyOntjcmVhdGU6ZnVuY3Rpb24oYSl7cmV0dXJuIG5ldyBDS0VESVRPUi51aS5yaWNoQ29tYm8oYSl9fX19KTtDS0VESVRPUi51aS5wcm90b3R5cGUuYWRkUmljaENvbWJvPWZ1bmN0aW9uKGEsYyl7dGhpcy5hZGQoYSxcbkNLRURJVE9SLlVJX1JJQ0hDT01CTyxjKX19KCksQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJmb3JtYXRcIix7cmVxdWlyZXM6XCJyaWNoY29tYm9cIixpbml0OmZ1bmN0aW9uKGEpe2lmKCFhLmJsb2NrbGVzcyl7Zm9yKHZhciBmPWEuY29uZmlnLGU9YS5sYW5nLmZvcm1hdCxiPWYuZm9ybWF0X3RhZ3Muc3BsaXQoXCI7XCIpLGM9e30saz0wLGw9W10sbT0wO208Yi5sZW5ndGg7bSsrKXt2YXIgZD1iW21dLGg9bmV3IENLRURJVE9SLnN0eWxlKGZbXCJmb3JtYXRfXCIrZF0pO2lmKCFhLmZpbHRlci5jdXN0b21Db25maWd8fGEuZmlsdGVyLmNoZWNrKGgpKWsrKyxjW2RdPWgsY1tkXS5fLmVudGVyTW9kZT1hLmNvbmZpZy5lbnRlck1vZGUsbC5wdXNoKGgpfTAhPT1rJiZhLnVpLmFkZFJpY2hDb21ibyhcIkZvcm1hdFwiLHtsYWJlbDplLmxhYmVsLHRpdGxlOmUucGFuZWxUaXRsZSx0b29sYmFyOlwic3R5bGVzLDIwXCIsYWxsb3dlZENvbnRlbnQ6bCxwYW5lbDp7Y3NzOltDS0VESVRPUi5za2luLmdldFBhdGgoXCJlZGl0b3JcIildLmNvbmNhdChmLmNvbnRlbnRzQ3NzKSxcbm11bHRpU2VsZWN0OiExLGF0dHJpYnV0ZXM6e1wiYXJpYS1sYWJlbFwiOmUucGFuZWxUaXRsZX19LGluaXQ6ZnVuY3Rpb24oKXt0aGlzLnN0YXJ0R3JvdXAoZS5wYW5lbFRpdGxlKTtmb3IodmFyIGEgaW4gYyl7dmFyIGI9ZVtcInRhZ19cIithXTt0aGlzLmFkZChhLGNbYV0uYnVpbGRQcmV2aWV3KGIpLGIpfX0sb25DbGljazpmdW5jdGlvbihiKXthLmZvY3VzKCk7YS5maXJlKFwic2F2ZVNuYXBzaG90XCIpO2I9Y1tiXTt2YXIgZD1hLmVsZW1lbnRQYXRoKCk7YS5maXJlKFwic3R5bGVzUmVtb3ZlXCIse3R5cGU6Q0tFRElUT1IuU1RZTEVfQkxPQ0t9KTtiLmNoZWNrQWN0aXZlKGQsYSl8fGEuYXBwbHlTdHlsZShiKTtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YS5maXJlKFwic2F2ZVNuYXBzaG90XCIpfSwwKX0sb25SZW5kZXI6ZnVuY3Rpb24oKXthLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsZnVuY3Rpb24oYil7dmFyIGQ9dGhpcy5nZXRWYWx1ZSgpO2I9Yi5kYXRhLnBhdGg7dGhpcy5yZWZyZXNoKCk7Zm9yKHZhciBlIGluIGMpaWYoY1tlXS5jaGVja0FjdGl2ZShiLFxuYSkpe2UhPWQmJnRoaXMuc2V0VmFsdWUoZSxhLmxhbmcuZm9ybWF0W1widGFnX1wiK2VdKTtyZXR1cm59dGhpcy5zZXRWYWx1ZShcIlwiKX0sdGhpcyl9LG9uT3BlbjpmdW5jdGlvbigpe3RoaXMuc2hvd0FsbCgpO2Zvcih2YXIgYiBpbiBjKWEuYWN0aXZlRmlsdGVyLmNoZWNrKGNbYl0pfHx0aGlzLmhpZGVJdGVtKGIpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGI9YS5lbGVtZW50UGF0aCgpO2lmKGIpe2lmKGIuaXNDb250ZXh0Rm9yKFwicFwiKSlmb3IodmFyIGQgaW4gYylpZihhLmFjdGl2ZUZpbHRlci5jaGVjayhjW2RdKSlyZXR1cm47dGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCl9fX0pfX19KSxDS0VESVRPUi5jb25maWcuZm9ybWF0X3RhZ3M9XCJwO2gxO2gyO2gzO2g0O2g1O2g2O3ByZTthZGRyZXNzO2RpdlwiLENLRURJVE9SLmNvbmZpZy5mb3JtYXRfcD17ZWxlbWVudDpcInBcIn0sQ0tFRElUT1IuY29uZmlnLmZvcm1hdF9kaXY9e2VsZW1lbnQ6XCJkaXZcIn0sQ0tFRElUT1IuY29uZmlnLmZvcm1hdF9wcmU9XG57ZWxlbWVudDpcInByZVwifSxDS0VESVRPUi5jb25maWcuZm9ybWF0X2FkZHJlc3M9e2VsZW1lbnQ6XCJhZGRyZXNzXCJ9LENLRURJVE9SLmNvbmZpZy5mb3JtYXRfaDE9e2VsZW1lbnQ6XCJoMVwifSxDS0VESVRPUi5jb25maWcuZm9ybWF0X2gyPXtlbGVtZW50OlwiaDJcIn0sQ0tFRElUT1IuY29uZmlnLmZvcm1hdF9oMz17ZWxlbWVudDpcImgzXCJ9LENLRURJVE9SLmNvbmZpZy5mb3JtYXRfaDQ9e2VsZW1lbnQ6XCJoNFwifSxDS0VESVRPUi5jb25maWcuZm9ybWF0X2g1PXtlbGVtZW50OlwiaDVcIn0sQ0tFRElUT1IuY29uZmlnLmZvcm1hdF9oNj17ZWxlbWVudDpcImg2XCJ9LGZ1bmN0aW9uKCl7dmFyIGE9e2NhblVuZG86ITEsZXhlYzpmdW5jdGlvbihhKXt2YXIgZT1hLmRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJoclwiKTthLmluc2VydEVsZW1lbnQoZSl9LGFsbG93ZWRDb250ZW50OlwiaHJcIixyZXF1aXJlZENvbnRlbnQ6XCJoclwifTtDS0VESVRPUi5wbHVnaW5zLmFkZChcImhvcml6b250YWxydWxlXCIse2luaXQ6ZnVuY3Rpb24oZil7Zi5ibG9ja2xlc3N8fFxuKGYuYWRkQ29tbWFuZChcImhvcml6b250YWxydWxlXCIsYSksZi51aS5hZGRCdXR0b24mJmYudWkuYWRkQnV0dG9uKFwiSG9yaXpvbnRhbFJ1bGVcIix7bGFiZWw6Zi5sYW5nLmhvcml6b250YWxydWxlLnRvb2xiYXIsY29tbWFuZDpcImhvcml6b250YWxydWxlXCIsdG9vbGJhcjpcImluc2VydCw0MFwifSkpfX0pfSgpLENLRURJVE9SLnBsdWdpbnMuYWRkKFwiaHRtbHdyaXRlclwiLHtpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPW5ldyBDS0VESVRPUi5odG1sV3JpdGVyO2YuZm9yY2VTaW1wbGVBbXBlcnNhbmQ9YS5jb25maWcuZm9yY2VTaW1wbGVBbXBlcnNhbmQ7Zi5pbmRlbnRhdGlvbkNoYXJzPVwic3RyaW5nXCI9PT10eXBlb2YgYS5jb25maWcuZGF0YUluZGVudGF0aW9uQ2hhcnM/YS5jb25maWcuZGF0YUluZGVudGF0aW9uQ2hhcnM6XCJcXHRcIjthLmRhdGFQcm9jZXNzb3Iud3JpdGVyPWZ9fSksQ0tFRElUT1IuaHRtbFdyaXRlcj1DS0VESVRPUi50b29scy5jcmVhdGVDbGFzcyh7YmFzZTpDS0VESVRPUi5odG1sUGFyc2VyLmJhc2ljV3JpdGVyLFxuJDpmdW5jdGlvbigpe3RoaXMuYmFzZSgpO3RoaXMuaW5kZW50YXRpb25DaGFycz1cIlxcdFwiO3RoaXMuc2VsZkNsb3NpbmdFbmQ9XCIgL1xceDNlXCI7dGhpcy5saW5lQnJlYWtDaGFycz1cIlxcblwiO3RoaXMuc29ydEF0dHJpYnV0ZXM9MTt0aGlzLl8uaW5kZW50PTA7dGhpcy5fLmluZGVudGF0aW9uPVwiXCI7dGhpcy5fLmluUHJlPTA7dGhpcy5fLnJ1bGVzPXt9O3ZhciBhPUNLRURJVE9SLmR0ZCxmO2ZvcihmIGluIENLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxhLiRub25Cb2R5Q29udGVudCxhLiRibG9jayxhLiRsaXN0SXRlbSxhLiR0YWJsZUNvbnRlbnQpKXRoaXMuc2V0UnVsZXMoZix7aW5kZW50OiFhW2ZdW1wiI1wiXSxicmVha0JlZm9yZU9wZW46MSxicmVha0JlZm9yZUNsb3NlOiFhW2ZdW1wiI1wiXSxicmVha0FmdGVyQ2xvc2U6MSxuZWVkc1NwYWNlOmYgaW4gYS4kYmxvY2smJiEoZiBpbntsaToxLGR0OjEsZGQ6MX0pfSk7dGhpcy5zZXRSdWxlcyhcImJyXCIse2JyZWFrQWZ0ZXJPcGVuOjF9KTt0aGlzLnNldFJ1bGVzKFwidGl0bGVcIixcbntpbmRlbnQ6MCxicmVha0FmdGVyT3BlbjowfSk7dGhpcy5zZXRSdWxlcyhcInN0eWxlXCIse2luZGVudDowLGJyZWFrQmVmb3JlQ2xvc2U6MX0pO3RoaXMuc2V0UnVsZXMoXCJwcmVcIix7YnJlYWtBZnRlck9wZW46MSxpbmRlbnQ6MH0pfSxwcm90bzp7b3BlblRhZzpmdW5jdGlvbihhKXt2YXIgZj10aGlzLl8ucnVsZXNbYV07dGhpcy5fLmFmdGVyQ2xvc2VyJiZmJiZmLm5lZWRzU3BhY2UmJnRoaXMuXy5uZWVkc1NwYWNlJiZ0aGlzLl8ub3V0cHV0LnB1c2goXCJcXG5cIik7dGhpcy5fLmluZGVudD90aGlzLmluZGVudGF0aW9uKCk6ZiYmZi5icmVha0JlZm9yZU9wZW4mJih0aGlzLmxpbmVCcmVhaygpLHRoaXMuaW5kZW50YXRpb24oKSk7dGhpcy5fLm91dHB1dC5wdXNoKFwiXFx4M2NcIixhKTt0aGlzLl8uYWZ0ZXJDbG9zZXI9MH0sb3BlblRhZ0Nsb3NlOmZ1bmN0aW9uKGEsZil7dmFyIGU9dGhpcy5fLnJ1bGVzW2FdO2Y/KHRoaXMuXy5vdXRwdXQucHVzaCh0aGlzLnNlbGZDbG9zaW5nRW5kKSxlJiZcbmUuYnJlYWtBZnRlckNsb3NlJiYodGhpcy5fLm5lZWRzU3BhY2U9ZS5uZWVkc1NwYWNlKSk6KHRoaXMuXy5vdXRwdXQucHVzaChcIlxceDNlXCIpLGUmJmUuaW5kZW50JiYodGhpcy5fLmluZGVudGF0aW9uKz10aGlzLmluZGVudGF0aW9uQ2hhcnMpKTtlJiZlLmJyZWFrQWZ0ZXJPcGVuJiZ0aGlzLmxpbmVCcmVhaygpO1wicHJlXCI9PWEmJih0aGlzLl8uaW5QcmU9MSl9LGF0dHJpYnV0ZTpmdW5jdGlvbihhLGYpe1wic3RyaW5nXCI9PXR5cGVvZiBmJiYoZj1DS0VESVRPUi50b29scy5odG1sRW5jb2RlQXR0cihmKSx0aGlzLmZvcmNlU2ltcGxlQW1wZXJzYW5kJiYoZj1mLnJlcGxhY2UoLyZhbXA7L2csXCJcXHgyNlwiKSkpO3RoaXMuXy5vdXRwdXQucHVzaChcIiBcIixhLCdcXHgzZFwiJyxmLCdcIicpfSxjbG9zZVRhZzpmdW5jdGlvbihhKXt2YXIgZj10aGlzLl8ucnVsZXNbYV07ZiYmZi5pbmRlbnQmJih0aGlzLl8uaW5kZW50YXRpb249dGhpcy5fLmluZGVudGF0aW9uLnN1YnN0cih0aGlzLmluZGVudGF0aW9uQ2hhcnMubGVuZ3RoKSk7XG50aGlzLl8uaW5kZW50P3RoaXMuaW5kZW50YXRpb24oKTpmJiZmLmJyZWFrQmVmb3JlQ2xvc2UmJih0aGlzLmxpbmVCcmVhaygpLHRoaXMuaW5kZW50YXRpb24oKSk7dGhpcy5fLm91dHB1dC5wdXNoKFwiXFx4M2MvXCIsYSxcIlxceDNlXCIpO1wicHJlXCI9PWEmJih0aGlzLl8uaW5QcmU9MCk7ZiYmZi5icmVha0FmdGVyQ2xvc2UmJih0aGlzLmxpbmVCcmVhaygpLHRoaXMuXy5uZWVkc1NwYWNlPWYubmVlZHNTcGFjZSk7dGhpcy5fLmFmdGVyQ2xvc2VyPTF9LHRleHQ6ZnVuY3Rpb24oYSl7dGhpcy5fLmluZGVudCYmKHRoaXMuaW5kZW50YXRpb24oKSwhdGhpcy5fLmluUHJlJiYoYT1DS0VESVRPUi50b29scy5sdHJpbShhKSkpO3RoaXMuXy5vdXRwdXQucHVzaChhKX0sY29tbWVudDpmdW5jdGlvbihhKXt0aGlzLl8uaW5kZW50JiZ0aGlzLmluZGVudGF0aW9uKCk7dGhpcy5fLm91dHB1dC5wdXNoKFwiXFx4M2MhLS1cIixhLFwiLS1cXHgzZVwiKX0sbGluZUJyZWFrOmZ1bmN0aW9uKCl7IXRoaXMuXy5pblByZSYmXG4wPHRoaXMuXy5vdXRwdXQubGVuZ3RoJiZ0aGlzLl8ub3V0cHV0LnB1c2godGhpcy5saW5lQnJlYWtDaGFycyk7dGhpcy5fLmluZGVudD0xfSxpbmRlbnRhdGlvbjpmdW5jdGlvbigpeyF0aGlzLl8uaW5QcmUmJnRoaXMuXy5pbmRlbnRhdGlvbiYmdGhpcy5fLm91dHB1dC5wdXNoKHRoaXMuXy5pbmRlbnRhdGlvbik7dGhpcy5fLmluZGVudD0wfSxyZXNldDpmdW5jdGlvbigpe3RoaXMuXy5vdXRwdXQ9W107dGhpcy5fLmluZGVudD0wO3RoaXMuXy5pbmRlbnRhdGlvbj1cIlwiO3RoaXMuXy5hZnRlckNsb3Nlcj0wO3RoaXMuXy5pblByZT0wO3RoaXMuXy5uZWVkc1NwYWNlPTB9LHNldFJ1bGVzOmZ1bmN0aW9uKGEsZil7dmFyIGU9dGhpcy5fLnJ1bGVzW2FdO2U/Q0tFRElUT1IudG9vbHMuZXh0ZW5kKGUsZiwhMCk6dGhpcy5fLnJ1bGVzW2FdPWZ9fX0pLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe2J8fChiPWEuZ2V0U2VsZWN0aW9uKCkuZ2V0U2VsZWN0ZWRFbGVtZW50KCkpO2lmKGImJlxuYi5pcyhcImltZ1wiKSYmIWIuZGF0YShcImNrZS1yZWFsZWxlbWVudFwiKSYmIWIuaXNSZWFkT25seSgpKXJldHVybiBifWZ1bmN0aW9uIGYoYSl7dmFyIGI9YS5nZXRTdHlsZShcImZsb2F0XCIpO2lmKFwiaW5oZXJpdFwiPT1ifHxcIm5vbmVcIj09YiliPTA7Ynx8KGI9YS5nZXRBdHRyaWJ1dGUoXCJhbGlnblwiKSk7cmV0dXJuIGJ9Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJpbWFnZVwiLHtyZXF1aXJlczpcImRpYWxvZ1wiLGluaXQ6ZnVuY3Rpb24oZSl7aWYoIWUucGx1Z2lucy5kZXRlY3RDb25mbGljdChcImltYWdlXCIsW1wiZWFzeWltYWdlXCIsXCJpbWFnZTJcIl0pKXtDS0VESVRPUi5kaWFsb2cuYWRkKFwiaW1hZ2VcIix0aGlzLnBhdGgrXCJkaWFsb2dzL2ltYWdlLmpzXCIpO3ZhciBiPVwiaW1nW2FsdCwhc3JjXXtib3JkZXItc3R5bGUsYm9yZGVyLXdpZHRoLGZsb2F0LGhlaWdodCxtYXJnaW4sbWFyZ2luLWJvdHRvbSxtYXJnaW4tbGVmdCxtYXJnaW4tcmlnaHQsbWFyZ2luLXRvcCx3aWR0aH1cIjtDS0VESVRPUi5kaWFsb2cuaXNUYWJFbmFibGVkKGUsXG5cImltYWdlXCIsXCJhZHZhbmNlZFwiKSYmKGI9XCJpbWdbYWx0LGRpcixpZCxsYW5nLGxvbmdkZXNjLCFzcmMsdGl0bGVdeyp9KCopXCIpO2UuYWRkQ29tbWFuZChcImltYWdlXCIsbmV3IENLRURJVE9SLmRpYWxvZ0NvbW1hbmQoXCJpbWFnZVwiLHthbGxvd2VkQ29udGVudDpiLHJlcXVpcmVkQ29udGVudDpcImltZ1thbHQsc3JjXVwiLGNvbnRlbnRUcmFuc2Zvcm1hdGlvbnM6W1tcImltZ3t3aWR0aH06IHNpemVUb1N0eWxlXCIsXCJpbWdbd2lkdGhdOiBzaXplVG9BdHRyaWJ1dGVcIl0sW1wiaW1ne2Zsb2F0fTogYWxpZ25tZW50VG9TdHlsZVwiLFwiaW1nW2FsaWduXTogYWxpZ25tZW50VG9BdHRyaWJ1dGVcIl1dfSkpO2UudWkuYWRkQnV0dG9uJiZlLnVpLmFkZEJ1dHRvbihcIkltYWdlXCIse2xhYmVsOmUubGFuZy5jb21tb24uaW1hZ2UsY29tbWFuZDpcImltYWdlXCIsdG9vbGJhcjpcImluc2VydCwxMFwifSk7ZS5vbihcImRvdWJsZWNsaWNrXCIsZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLmVsZW1lbnQ7IWIuaXMoXCJpbWdcIil8fFxuYi5kYXRhKFwiY2tlLXJlYWxlbGVtZW50XCIpfHxiLmlzUmVhZE9ubHkoKXx8KGEuZGF0YS5kaWFsb2c9XCJpbWFnZVwiKX0pO2UuYWRkTWVudUl0ZW1zJiZlLmFkZE1lbnVJdGVtcyh7aW1hZ2U6e2xhYmVsOmUubGFuZy5pbWFnZS5tZW51LGNvbW1hbmQ6XCJpbWFnZVwiLGdyb3VwOlwiaW1hZ2VcIn19KTtlLmNvbnRleHRNZW51JiZlLmNvbnRleHRNZW51LmFkZExpc3RlbmVyKGZ1bmN0aW9uKGIpe2lmKGEoZSxiKSlyZXR1cm57aW1hZ2U6Q0tFRElUT1IuVFJJU1RBVEVfT0ZGfX0pfX0sYWZ0ZXJJbml0OmZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGIoYil7dmFyIGs9ZS5nZXRDb21tYW5kKFwianVzdGlmeVwiK2IpO2lmKGspe2lmKFwibGVmdFwiPT1ifHxcInJpZ2h0XCI9PWIpay5vbihcImV4ZWNcIixmdW5jdGlvbihrKXt2YXIgbT1hKGUpLGQ7bSYmKGQ9ZihtKSxkPT1iPyhtLnJlbW92ZVN0eWxlKFwiZmxvYXRcIiksYj09ZihtKSYmbS5yZW1vdmVBdHRyaWJ1dGUoXCJhbGlnblwiKSk6bS5zZXRTdHlsZShcImZsb2F0XCIsYiksXG5rLmNhbmNlbCgpKX0pO2sub24oXCJyZWZyZXNoXCIsZnVuY3Rpb24oayl7dmFyIG09YShlKTttJiYobT1mKG0pLHRoaXMuc2V0U3RhdGUobT09Yj9DS0VESVRPUi5UUklTVEFURV9PTjpcInJpZ2h0XCI9PWJ8fFwibGVmdFwiPT1iP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCksay5jYW5jZWwoKSl9KX19ZS5wbHVnaW5zLmltYWdlMnx8KGIoXCJsZWZ0XCIpLGIoXCJyaWdodFwiKSxiKFwiY2VudGVyXCIpLGIoXCJibG9ja1wiKSl9fSl9KCksQ0tFRElUT1IuY29uZmlnLmltYWdlX3JlbW92ZUxpbmtCeUVtcHR5VVJMPSEwLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe3ZhciBkPWsuZXhlYyhhKSxjPWsuZXhlYyhiKTtpZihkKXtpZighZFsyXSYmXCJweFwiPT1jWzJdKXJldHVybiBjWzFdO2lmKFwicHhcIj09ZFsyXSYmIWNbMl0pcmV0dXJuIGNbMV0rXCJweFwifXJldHVybiBifWZ1bmN0aW9uIGYoYyl7cmV0dXJue2VsZW1lbnRzOnskOmZ1bmN0aW9uKGYpe3ZhciBkPWYuYXR0cmlidXRlcyxcbmQ9ZCYmZFtcImRhdGEtY2tlLXJlYWxlbGVtZW50XCJdLGg9ZShjLGRlY29kZVVSSUNvbXBvbmVudChkKSk7aWYoKGQ9KGQ9ZCYmbmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZnJhZ21lbnQuZnJvbUh0bWwoaCkpJiZkLmNoaWxkcmVuWzBdKSYmZi5hdHRyaWJ1dGVzW1wiZGF0YS1ja2UtcmVzaXphYmxlXCJdKXt2YXIgZz0obmV3IGIoZikpLnJ1bGVzO2Y9ZC5hdHRyaWJ1dGVzO2g9Zy53aWR0aDtnPWcuaGVpZ2h0O2gmJihmLndpZHRoPWEoZi53aWR0aCxoKSk7ZyYmKGYuaGVpZ2h0PWEoZi5oZWlnaHQsZykpfXJldHVybiBkfX19fWZ1bmN0aW9uIGUoYSxiKXt2YXIgZD1bXSxjPS9eY2tlOi9pLGU9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuZmlsdGVyKHtlbGVtZW50czp7XCJeXCI6ZnVuY3Rpb24oYSl7Yy50ZXN0KGEubmFtZSkmJihhLm5hbWU9YS5uYW1lLnJlcGxhY2UoYyxcIlwiKSxkLnB1c2goYSkpfSxpZnJhbWU6ZnVuY3Rpb24oYSl7YS5jaGlsZHJlbj1bXX19fSksZj1hLmFjdGl2ZUZpbHRlcixcbms9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXIseD1DS0VESVRPUi5odG1sUGFyc2VyLmZyYWdtZW50LmZyb21IdG1sKGIpO2UuYXBwbHlUbyh4KTtmLmFwcGx5VG8oeCk7Q0tFRElUT1IudG9vbHMuYXJyYXkuZm9yRWFjaChkLGZ1bmN0aW9uKGEpe2EubmFtZT1cImNrZTpcIithLm5hbWV9KTt4LndyaXRlSHRtbChrKTtyZXR1cm4gay5nZXRIdG1sKCl9dmFyIGI9Q0tFRElUT1IuaHRtbFBhcnNlci5jc3NTdHlsZSxjPUNLRURJVE9SLnRvb2xzLmNzc0xlbmd0aCxrPS9eKCg/OlxcZCooPzpcXC5cXGQrKSl8KD86XFxkKykpKC4qKT8kL2k7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJmYWtlb2JqZWN0c1wiLHtpbml0OmZ1bmN0aW9uKGEpe2EuZmlsdGVyLmFsbG93KFwiaW1nWyFkYXRhLWNrZS1yZWFsZWxlbWVudCxzcmMsYWx0LHRpdGxlXSgqKXsqfVwiLFwiZmFrZW9iamVjdHNcIil9LGFmdGVySW5pdDpmdW5jdGlvbihhKXt2YXIgYj1hLmRhdGFQcm9jZXNzb3I7KGI9YiYmYi5odG1sRmlsdGVyKSYmXG5iLmFkZFJ1bGVzKGYoYSkse2FwcGx5VG9BbGw6ITB9KX19KTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmNyZWF0ZUZha2VFbGVtZW50PWZ1bmN0aW9uKGEsZSxkLGYpe3ZhciBnPXRoaXMubGFuZy5mYWtlb2JqZWN0cyxnPWdbZF18fGcudW5rbm93bjtlPXtcImNsYXNzXCI6ZSxcImRhdGEtY2tlLXJlYWxlbGVtZW50XCI6ZW5jb2RlVVJJQ29tcG9uZW50KGEuZ2V0T3V0ZXJIdG1sKCkpLFwiZGF0YS1ja2UtcmVhbC1ub2RlLXR5cGVcIjphLnR5cGUsYWx0OmcsdGl0bGU6ZyxhbGlnbjphLmdldEF0dHJpYnV0ZShcImFsaWduXCIpfHxcIlwifTtDS0VESVRPUi5lbnYuaGN8fChlLnNyYz1DS0VESVRPUi50b29scy50cmFuc3BhcmVudEltYWdlRGF0YSk7ZCYmKGVbXCJkYXRhLWNrZS1yZWFsLWVsZW1lbnQtdHlwZVwiXT1kKTtmJiYoZVtcImRhdGEtY2tlLXJlc2l6YWJsZVwiXT1mLGQ9bmV3IGIsZj1hLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpLGE9YS5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiksZiYmKGQucnVsZXMud2lkdGg9XG5jKGYpKSxhJiYoZC5ydWxlcy5oZWlnaHQ9YyhhKSksZC5wb3B1bGF0ZShlKSk7cmV0dXJuIHRoaXMuZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImltZ1wiLHthdHRyaWJ1dGVzOmV9KX07Q0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5jcmVhdGVGYWtlUGFyc2VyRWxlbWVudD1mdW5jdGlvbihhLGUsZCxmKXt2YXIgZz10aGlzLmxhbmcuZmFrZW9iamVjdHMsZz1nW2RdfHxnLnVua25vd24saztrPW5ldyBDS0VESVRPUi5odG1sUGFyc2VyLmJhc2ljV3JpdGVyO2Eud3JpdGVIdG1sKGspO2s9ay5nZXRIdG1sKCk7ZT17XCJjbGFzc1wiOmUsXCJkYXRhLWNrZS1yZWFsZWxlbWVudFwiOmVuY29kZVVSSUNvbXBvbmVudChrKSxcImRhdGEtY2tlLXJlYWwtbm9kZS10eXBlXCI6YS50eXBlLGFsdDpnLHRpdGxlOmcsYWxpZ246YS5hdHRyaWJ1dGVzLmFsaWdufHxcIlwifTtDS0VESVRPUi5lbnYuaGN8fChlLnNyYz1DS0VESVRPUi50b29scy50cmFuc3BhcmVudEltYWdlRGF0YSk7ZCYmKGVbXCJkYXRhLWNrZS1yZWFsLWVsZW1lbnQtdHlwZVwiXT1cbmQpO2YmJihlW1wiZGF0YS1ja2UtcmVzaXphYmxlXCJdPWYsZj1hLmF0dHJpYnV0ZXMsYT1uZXcgYixkPWYud2lkdGgsZj1mLmhlaWdodCx2b2lkIDAhPT1kJiYoYS5ydWxlcy53aWR0aD1jKGQpKSx2b2lkIDAhPT1mJiYoYS5ydWxlcy5oZWlnaHQ9YyhmKSksYS5wb3B1bGF0ZShlKSk7cmV0dXJuIG5ldyBDS0VESVRPUi5odG1sUGFyc2VyLmVsZW1lbnQoXCJpbWdcIixlKX07Q0tFRElUT1IuZWRpdG9yLnByb3RvdHlwZS5yZXN0b3JlUmVhbEVsZW1lbnQ9ZnVuY3Rpb24oYil7aWYoYi5kYXRhKFwiY2tlLXJlYWwtbm9kZS10eXBlXCIpIT1DS0VESVRPUi5OT0RFX0VMRU1FTlQpcmV0dXJuIG51bGw7dmFyIGM9ZGVjb2RlVVJJQ29tcG9uZW50KGIuZGF0YShcImNrZS1yZWFsZWxlbWVudFwiKSksYz1lKHRoaXMsYyksYz1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChjLHRoaXMuZG9jdW1lbnQpO2lmKGIuZGF0YShcImNrZS1yZXNpemFibGVcIikpe3ZhciBkPWIuZ2V0U3R5bGUoXCJ3aWR0aFwiKTtcbmI9Yi5nZXRTdHlsZShcImhlaWdodFwiKTtkJiZjLnNldEF0dHJpYnV0ZShcIndpZHRoXCIsYShjLmdldEF0dHJpYnV0ZShcIndpZHRoXCIpLGQpKTtiJiZjLnNldEF0dHJpYnV0ZShcImhlaWdodFwiLGEoYy5nZXRBdHRyaWJ1dGUoXCJoZWlnaHRcIiksYikpfXJldHVybiBjfX0oKSxcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIGEucmVwbGFjZSgvJy9nLFwiXFxcXCRcXHgyNlwiKX1mdW5jdGlvbiBmKGEpe2Zvcih2YXIgYj1hLmxlbmd0aCxkPVtdLGMsZT0wO2U8YjtlKyspYz1hLmNoYXJDb2RlQXQoZSksZC5wdXNoKGMpO3JldHVyblwiU3RyaW5nLmZyb21DaGFyQ29kZShcIitkLmpvaW4oXCIsXCIpK1wiKVwifWZ1bmN0aW9uIGUoYixkKXtmb3IodmFyIGM9Yi5wbHVnaW5zLmxpbmssZT1jLmNvbXBpbGVkUHJvdGVjdGlvbkZ1bmN0aW9uLnBhcmFtcyxjPVtjLmNvbXBpbGVkUHJvdGVjdGlvbkZ1bmN0aW9uLm5hbWUsXCIoXCJdLGYsZyxoPTA7aDxlLmxlbmd0aDtoKyspZj1lW2hdLnRvTG93ZXJDYXNlKCksXG5nPWRbZl0sMDxoJiZjLnB1c2goXCIsXCIpLGMucHVzaChcIidcIixnP2EoZW5jb2RlVVJJQ29tcG9uZW50KGRbZl0pKTpcIlwiLFwiJ1wiKTtjLnB1c2goXCIpXCIpO3JldHVybiBjLmpvaW4oXCJcIil9ZnVuY3Rpb24gYihhKXthPWEuY29uZmlnLmVtYWlsUHJvdGVjdGlvbnx8XCJcIjt2YXIgYjthJiZcImVuY29kZVwiIT1hJiYoYj17fSxhLnJlcGxhY2UoL14oW14oXSspXFwoKFteKV0rKVxcKSQvLGZ1bmN0aW9uKGEsZCxjKXtiLm5hbWU9ZDtiLnBhcmFtcz1bXTtjLnJlcGxhY2UoL1teLFxcc10rL2csZnVuY3Rpb24oYSl7Yi5wYXJhbXMucHVzaChhKX0pfSkpO3JldHVybiBifUNLRURJVE9SLnBsdWdpbnMuYWRkKFwibGlua1wiLHtyZXF1aXJlczpcImRpYWxvZyxmYWtlb2JqZWN0c1wiLG9uTG9hZDpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYil7cmV0dXJuIGQucmVwbGFjZSgvJTEvZyxcInJ0bFwiPT1iP1wicmlnaHRcIjpcImxlZnRcIikucmVwbGFjZSgvJTIvZyxcImNrZV9jb250ZW50c19cIitiKX12YXIgYj1cImJhY2tncm91bmQ6dXJsKFwiK1xuQ0tFRElUT1IuZ2V0VXJsKHRoaXMucGF0aCtcImltYWdlc1wiKyhDS0VESVRPUi5lbnYuaGlkcGk/XCIvaGlkcGlcIjpcIlwiKStcIi9hbmNob3IucG5nXCIpK1wiKSBuby1yZXBlYXQgJTEgY2VudGVyO2JvcmRlcjoxcHggZG90dGVkICMwMGY7YmFja2dyb3VuZC1zaXplOjE2cHg7XCIsZD1cIi4lMiBhLmNrZV9hbmNob3IsLiUyIGEuY2tlX2FuY2hvcl9lbXB0eSwuY2tlX2VkaXRhYmxlLiUyIGFbbmFtZV0sLmNrZV9lZGl0YWJsZS4lMiBhW2RhdGEtY2tlLXNhdmVkLW5hbWVde1wiK2IrXCJwYWRkaW5nLSUxOjE4cHg7Y3Vyc29yOmF1dG87fS4lMiBpbWcuY2tlX2FuY2hvcntcIitiK1wid2lkdGg6MTZweDttaW4taGVpZ2h0OjE1cHg7aGVpZ2h0OjEuMTVlbTt2ZXJ0aWNhbC1hbGlnbjp0ZXh0LWJvdHRvbTt9XCI7Q0tFRElUT1IuYWRkQ3NzKGEoXCJsdHJcIikrYShcInJ0bFwiKSl9LGluaXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9XCJhWyFocmVmXVwiO0NLRURJVE9SLmRpYWxvZy5pc1RhYkVuYWJsZWQoYSxcImxpbmtcIixcImFkdmFuY2VkXCIpJiZcbihkPWQucmVwbGFjZShcIl1cIixcIixhY2Nlc3NrZXksY2hhcnNldCxkaXIsaWQsbGFuZyxuYW1lLHJlbCx0YWJpbmRleCx0aXRsZSx0eXBlLGRvd25sb2FkXXsqfSgqKVwiKSk7Q0tFRElUT1IuZGlhbG9nLmlzVGFiRW5hYmxlZChhLFwibGlua1wiLFwidGFyZ2V0XCIpJiYoZD1kLnJlcGxhY2UoXCJdXCIsXCIsdGFyZ2V0LG9uY2xpY2tdXCIpKTthLmFkZENvbW1hbmQoXCJsaW5rXCIsbmV3IENLRURJVE9SLmRpYWxvZ0NvbW1hbmQoXCJsaW5rXCIse2FsbG93ZWRDb250ZW50OmQscmVxdWlyZWRDb250ZW50OlwiYVtocmVmXVwifSkpO2EuYWRkQ29tbWFuZChcImFuY2hvclwiLG5ldyBDS0VESVRPUi5kaWFsb2dDb21tYW5kKFwiYW5jaG9yXCIse2FsbG93ZWRDb250ZW50OlwiYVshbmFtZSxpZF1cIixyZXF1aXJlZENvbnRlbnQ6XCJhW25hbWVdXCJ9KSk7YS5hZGRDb21tYW5kKFwidW5saW5rXCIsbmV3IENLRURJVE9SLnVubGlua0NvbW1hbmQpO2EuYWRkQ29tbWFuZChcInJlbW92ZUFuY2hvclwiLG5ldyBDS0VESVRPUi5yZW1vdmVBbmNob3JDb21tYW5kKTtcbmEuc2V0S2V5c3Ryb2tlKENLRURJVE9SLkNUUkwrNzYsXCJsaW5rXCIpO2Euc2V0S2V5c3Ryb2tlKENLRURJVE9SLkNUUkwrNzUsXCJsaW5rXCIpO2EudWkuYWRkQnV0dG9uJiYoYS51aS5hZGRCdXR0b24oXCJMaW5rXCIse2xhYmVsOmEubGFuZy5saW5rLnRvb2xiYXIsY29tbWFuZDpcImxpbmtcIix0b29sYmFyOlwibGlua3MsMTBcIn0pLGEudWkuYWRkQnV0dG9uKFwiVW5saW5rXCIse2xhYmVsOmEubGFuZy5saW5rLnVubGluayxjb21tYW5kOlwidW5saW5rXCIsdG9vbGJhcjpcImxpbmtzLDIwXCJ9KSxhLnVpLmFkZEJ1dHRvbihcIkFuY2hvclwiLHtsYWJlbDphLmxhbmcubGluay5hbmNob3IudG9vbGJhcixjb21tYW5kOlwiYW5jaG9yXCIsdG9vbGJhcjpcImxpbmtzLDMwXCJ9KSk7Q0tFRElUT1IuZGlhbG9nLmFkZChcImxpbmtcIix0aGlzLnBhdGgrXCJkaWFsb2dzL2xpbmsuanNcIik7Q0tFRElUT1IuZGlhbG9nLmFkZChcImFuY2hvclwiLHRoaXMucGF0aCtcImRpYWxvZ3MvYW5jaG9yLmpzXCIpO2Eub24oXCJkb3VibGVjbGlja1wiLFxuZnVuY3Rpb24oYil7dmFyIGQ9Yi5kYXRhLmVsZW1lbnQuZ2V0QXNjZW5kYW50KHthOjEsaW1nOjF9LCEwKTtkJiYhZC5pc1JlYWRPbmx5KCkmJihkLmlzKFwiYVwiKT8oYi5kYXRhLmRpYWxvZz0hZC5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpfHxkLmdldEF0dHJpYnV0ZShcImhyZWZcIikmJmQuZ2V0Q2hpbGRDb3VudCgpP1wibGlua1wiOlwiYW5jaG9yXCIsYi5kYXRhLmxpbms9ZCk6Q0tFRElUT1IucGx1Z2lucy5saW5rLnRyeVJlc3RvcmVGYWtlQW5jaG9yKGEsZCkmJihiLmRhdGEuZGlhbG9nPVwiYW5jaG9yXCIpKX0sbnVsbCxudWxsLDApO2Eub24oXCJkb3VibGVjbGlja1wiLGZ1bmN0aW9uKGIpe2IuZGF0YS5kaWFsb2cgaW57bGluazoxLGFuY2hvcjoxfSYmYi5kYXRhLmxpbmsmJmEuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0RWxlbWVudChiLmRhdGEubGluayl9LG51bGwsbnVsbCwyMCk7YS5hZGRNZW51SXRlbXMmJmEuYWRkTWVudUl0ZW1zKHthbmNob3I6e2xhYmVsOmEubGFuZy5saW5rLmFuY2hvci5tZW51LFxuY29tbWFuZDpcImFuY2hvclwiLGdyb3VwOlwiYW5jaG9yXCIsb3JkZXI6MX0scmVtb3ZlQW5jaG9yOntsYWJlbDphLmxhbmcubGluay5hbmNob3IucmVtb3ZlLGNvbW1hbmQ6XCJyZW1vdmVBbmNob3JcIixncm91cDpcImFuY2hvclwiLG9yZGVyOjV9LGxpbms6e2xhYmVsOmEubGFuZy5saW5rLm1lbnUsY29tbWFuZDpcImxpbmtcIixncm91cDpcImxpbmtcIixvcmRlcjoxfSx1bmxpbms6e2xhYmVsOmEubGFuZy5saW5rLnVubGluayxjb21tYW5kOlwidW5saW5rXCIsZ3JvdXA6XCJsaW5rXCIsb3JkZXI6NX19KTthLmNvbnRleHRNZW51JiZhLmNvbnRleHRNZW51LmFkZExpc3RlbmVyKGZ1bmN0aW9uKGIpe2lmKCFifHxiLmlzUmVhZE9ubHkoKSlyZXR1cm4gbnVsbDtiPUNLRURJVE9SLnBsdWdpbnMubGluay50cnlSZXN0b3JlRmFrZUFuY2hvcihhLGIpO2lmKCFiJiYhKGI9Q0tFRElUT1IucGx1Z2lucy5saW5rLmdldFNlbGVjdGVkTGluayhhKSkpcmV0dXJuIG51bGw7dmFyIGQ9e307Yi5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpJiZcbmIuZ2V0Q2hpbGRDb3VudCgpJiYoZD17bGluazpDS0VESVRPUi5UUklTVEFURV9PRkYsdW5saW5rOkNLRURJVE9SLlRSSVNUQVRFX09GRn0pO2ImJmIuaGFzQXR0cmlidXRlKFwibmFtZVwiKSYmKGQuYW5jaG9yPWQucmVtb3ZlQW5jaG9yPUNLRURJVE9SLlRSSVNUQVRFX09GRik7cmV0dXJuIGR9KTt0aGlzLmNvbXBpbGVkUHJvdGVjdGlvbkZ1bmN0aW9uPWIoYSl9LGFmdGVySW5pdDpmdW5jdGlvbihhKXthLmRhdGFQcm9jZXNzb3IuZGF0YUZpbHRlci5hZGRSdWxlcyh7ZWxlbWVudHM6e2E6ZnVuY3Rpb24oYil7cmV0dXJuIGIuYXR0cmlidXRlcy5uYW1lP2IuY2hpbGRyZW4ubGVuZ3RoP251bGw6YS5jcmVhdGVGYWtlUGFyc2VyRWxlbWVudChiLFwiY2tlX2FuY2hvclwiLFwiYW5jaG9yXCIpOm51bGx9fX0pO3ZhciBiPWEuXy5lbGVtZW50c1BhdGgmJmEuXy5lbGVtZW50c1BhdGguZmlsdGVycztiJiZiLnB1c2goZnVuY3Rpb24oYixkKXtpZihcImFcIj09ZCYmKENLRURJVE9SLnBsdWdpbnMubGluay50cnlSZXN0b3JlRmFrZUFuY2hvcihhLFxuYil8fGIuZ2V0QXR0cmlidXRlKFwibmFtZVwiKSYmKCFiLmdldEF0dHJpYnV0ZShcImhyZWZcIil8fCFiLmdldENoaWxkQ291bnQoKSkpKXJldHVyblwiYW5jaG9yXCJ9KX19KTt2YXIgYz0vXmphdmFzY3JpcHQ6LyxrPS9eKD86bWFpbHRvKSg/Oig/IVxcPyhzdWJqZWN0fGJvZHkpPSkuKSsvaSxsPS9zdWJqZWN0PShbXjs/OkAmPSQsXFwvXSopL2ksbT0vYm9keT0oW147PzpAJj0kLFxcL10qKS9pLGQ9L14jKC4qKSQvLGg9L14oKD86aHR0cHxodHRwc3xmdHB8bmV3cyk6XFwvXFwvKT8oLiopJC8sZz0vXihfKD86c2VsZnx0b3B8cGFyZW50fGJsYW5rKSkkLyxuPS9eamF2YXNjcmlwdDp2b2lkXFwobG9jYXRpb25cXC5ocmVmPSdtYWlsdG86J1xcK1N0cmluZ1xcLmZyb21DaGFyQ29kZVxcKChbXildKylcXCkoPzpcXCsnKC4qKScpP1xcKSQvLHc9L15qYXZhc2NyaXB0OihbXihdKylcXCgoW14pXSspXFwpJC8seD0vXFxzKndpbmRvdy5vcGVuXFwoXFxzKnRoaXNcXC5ocmVmXFxzKixcXHMqKD86JyhbXiddKiknfG51bGwpXFxzKixcXHMqJyhbXiddKiknXFxzKlxcKVxccyo7XFxzKnJldHVyblxccypmYWxzZTsqXFxzKi8sXG5yPS8oPzpefCwpKFtePV0rKT0oXFxkK3x5ZXN8bm8pL2dpLHA9L150ZWw6KC4qKSQvLHU9e2lkOlwiYWR2SWRcIixkaXI6XCJhZHZMYW5nRGlyXCIsYWNjZXNzS2V5OlwiYWR2QWNjZXNzS2V5XCIsbmFtZTpcImFkdk5hbWVcIixsYW5nOlwiYWR2TGFuZ0NvZGVcIix0YWJpbmRleDpcImFkdlRhYkluZGV4XCIsdGl0bGU6XCJhZHZUaXRsZVwiLHR5cGU6XCJhZHZDb250ZW50VHlwZVwiLFwiY2xhc3NcIjpcImFkdkNTU0NsYXNzZXNcIixjaGFyc2V0OlwiYWR2Q2hhcnNldFwiLHN0eWxlOlwiYWR2U3R5bGVzXCIscmVsOlwiYWR2UmVsXCJ9O0NLRURJVE9SLnBsdWdpbnMubGluaz17Z2V0U2VsZWN0ZWRMaW5rOmZ1bmN0aW9uKGEsYil7dmFyIGQ9YS5nZXRTZWxlY3Rpb24oKSxjPWQuZ2V0U2VsZWN0ZWRFbGVtZW50KCksZT1kLmdldFJhbmdlcygpLGY9W10sZztpZighYiYmYyYmYy5pcyhcImFcIikpcmV0dXJuIGM7Zm9yKGM9MDtjPGUubGVuZ3RoO2MrKylpZihnPWQuZ2V0UmFuZ2VzKClbY10sZy5zaHJpbmsoQ0tFRElUT1IuU0hSSU5LX0VMRU1FTlQsXG4hMCx7c2tpcEJvZ3VzOiEwfSksKGc9YS5lbGVtZW50UGF0aChnLmdldENvbW1vbkFuY2VzdG9yKCkpLmNvbnRhaW5zKFwiYVwiLDEpKSYmYilmLnB1c2goZyk7ZWxzZSBpZihnKXJldHVybiBnO3JldHVybiBiP2Y6bnVsbH0sZ2V0RWRpdG9yQW5jaG9yczpmdW5jdGlvbihhKXtmb3IodmFyIGI9YS5lZGl0YWJsZSgpLGQ9Yi5pc0lubGluZSgpJiYhYS5wbHVnaW5zLmRpdmFyZWE/YS5kb2N1bWVudDpiLGI9ZC5nZXRFbGVtZW50c0J5VGFnKFwiYVwiKSxkPWQuZ2V0RWxlbWVudHNCeVRhZyhcImltZ1wiKSxjPVtdLGU9MCxmO2Y9Yi5nZXRJdGVtKGUrKyk7KShmLmRhdGEoXCJja2Utc2F2ZWQtbmFtZVwiKXx8Zi5oYXNBdHRyaWJ1dGUoXCJuYW1lXCIpKSYmYy5wdXNoKHtuYW1lOmYuZGF0YShcImNrZS1zYXZlZC1uYW1lXCIpfHxmLmdldEF0dHJpYnV0ZShcIm5hbWVcIiksaWQ6Zi5nZXRBdHRyaWJ1dGUoXCJpZFwiKX0pO2ZvcihlPTA7Zj1kLmdldEl0ZW0oZSsrKTspKGY9dGhpcy50cnlSZXN0b3JlRmFrZUFuY2hvcihhLFxuZikpJiZjLnB1c2goe25hbWU6Zi5nZXRBdHRyaWJ1dGUoXCJuYW1lXCIpLGlkOmYuZ2V0QXR0cmlidXRlKFwiaWRcIil9KTtyZXR1cm4gY30sZmFrZUFuY2hvcjohMCx0cnlSZXN0b3JlRmFrZUFuY2hvcjpmdW5jdGlvbihhLGIpe2lmKGImJmIuZGF0YShcImNrZS1yZWFsLWVsZW1lbnQtdHlwZVwiKSYmXCJhbmNob3JcIj09Yi5kYXRhKFwiY2tlLXJlYWwtZWxlbWVudC10eXBlXCIpKXt2YXIgZD1hLnJlc3RvcmVSZWFsRWxlbWVudChiKTtpZihkLmRhdGEoXCJja2Utc2F2ZWQtbmFtZVwiKSlyZXR1cm4gZH19LHBhcnNlTGlua0F0dHJpYnV0ZXM6ZnVuY3Rpb24oYSxiKXt2YXIgZT1iJiYoYi5kYXRhKFwiY2tlLXNhdmVkLWhyZWZcIil8fGIuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSl8fFwiXCIsZj1hLnBsdWdpbnMubGluay5jb21waWxlZFByb3RlY3Rpb25GdW5jdGlvbix0PWEuY29uZmlnLmVtYWlsUHJvdGVjdGlvbix2PXt9LEI7ZS5tYXRjaChjKSYmKFwiZW5jb2RlXCI9PXQ/ZT1lLnJlcGxhY2UobixmdW5jdGlvbihhLFxuYixkKXtkPWR8fFwiXCI7cmV0dXJuXCJtYWlsdG86XCIrU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShTdHJpbmcsYi5zcGxpdChcIixcIikpK2QucmVwbGFjZSgvXFxcXCcvZyxcIidcIil9KTp0JiZlLnJlcGxhY2UodyxmdW5jdGlvbihhLGIsZCl7aWYoYj09Zi5uYW1lKXt2LnR5cGU9XCJlbWFpbFwiO2E9di5lbWFpbD17fTtiPS8oXicpfCgnJCkvZztkPWQubWF0Y2goL1teLFxcc10rL2cpO2Zvcih2YXIgYz1kLmxlbmd0aCxlLGcsaD0wO2g8YztoKyspZT1kZWNvZGVVUklDb21wb25lbnQsZz1kW2hdLnJlcGxhY2UoYixcIlwiKS5yZXBsYWNlKC9cXFxcJy9nLFwiJ1wiKSxnPWUoZyksZT1mLnBhcmFtc1toXS50b0xvd2VyQ2FzZSgpLGFbZV09ZzthLmFkZHJlc3M9W2EubmFtZSxhLmRvbWFpbl0uam9pbihcIkBcIil9fSkpO2lmKCF2LnR5cGUpaWYodD1lLm1hdGNoKGQpKXYudHlwZT1cImFuY2hvclwiLHYuYW5jaG9yPXt9LHYuYW5jaG9yLm5hbWU9di5hbmNob3IuaWQ9dFsxXTtlbHNlIGlmKHQ9ZS5tYXRjaChwKSl2LnR5cGU9XG5cInRlbFwiLHYudGVsPXRbMV07ZWxzZSBpZih0PWUubWF0Y2goaykpe0I9ZS5tYXRjaChsKTt2YXIgZT1lLm1hdGNoKG0pLEQ9di5lbWFpbD17fTt2LnR5cGU9XCJlbWFpbFwiO0QuYWRkcmVzcz10WzBdLnJlcGxhY2UoXCJtYWlsdG86XCIsXCJcIik7QiYmKEQuc3ViamVjdD1kZWNvZGVVUklDb21wb25lbnQoQlsxXSkpO2UmJihELmJvZHk9ZGVjb2RlVVJJQ29tcG9uZW50KGVbMV0pKX1lbHNlIGUmJihCPWUubWF0Y2goaCkpJiYodi50eXBlPVwidXJsXCIsdi51cmw9e30sdi51cmwucHJvdG9jb2w9QlsxXSx2LnVybC51cmw9QlsyXSk7aWYoYil7aWYoZT1iLmdldEF0dHJpYnV0ZShcInRhcmdldFwiKSl2LnRhcmdldD17dHlwZTplLm1hdGNoKGcpP2U6XCJmcmFtZVwiLG5hbWU6ZX07ZWxzZSBpZihlPShlPWIuZGF0YShcImNrZS1wYS1vbmNsaWNrXCIpfHxiLmdldEF0dHJpYnV0ZShcIm9uY2xpY2tcIikpJiZlLm1hdGNoKHgpKWZvcih2LnRhcmdldD17dHlwZTpcInBvcHVwXCIsbmFtZTplWzFdfTt0PXIuZXhlYyhlWzJdKTspXCJ5ZXNcIiE9XG50WzJdJiZcIjFcIiE9dFsyXXx8dFsxXWlue2hlaWdodDoxLHdpZHRoOjEsdG9wOjEsbGVmdDoxfT9pc0Zpbml0ZSh0WzJdKSYmKHYudGFyZ2V0W3RbMV1dPXRbMl0pOnYudGFyZ2V0W3RbMV1dPSEwO251bGwhPT1iLmdldEF0dHJpYnV0ZShcImRvd25sb2FkXCIpJiYodi5kb3dubG9hZD0hMCk7dmFyIGU9e30sQztmb3IoQyBpbiB1KSh0PWIuZ2V0QXR0cmlidXRlKEMpKSYmKGVbdVtDXV09dCk7aWYoQz1iLmRhdGEoXCJja2Utc2F2ZWQtbmFtZVwiKXx8ZS5hZHZOYW1lKWUuYWR2TmFtZT1DO0NLRURJVE9SLnRvb2xzLmlzRW1wdHkoZSl8fCh2LmFkdmFuY2VkPWUpfXJldHVybiB2fSxnZXRMaW5rQXR0cmlidXRlczpmdW5jdGlvbihiLGQpe3ZhciBjPWIuY29uZmlnLmVtYWlsUHJvdGVjdGlvbnx8XCJcIixnPXt9O3N3aXRjaChkLnR5cGUpe2Nhc2UgXCJ1cmxcIjp2YXIgYz1kLnVybCYmdm9pZCAwIT09ZC51cmwucHJvdG9jb2w/ZC51cmwucHJvdG9jb2w6XCJodHRwOi8vXCIsaD1kLnVybCYmQ0tFRElUT1IudG9vbHMudHJpbShkLnVybC51cmwpfHxcblwiXCI7Z1tcImRhdGEtY2tlLXNhdmVkLWhyZWZcIl09MD09PWguaW5kZXhPZihcIi9cIik/aDpjK2g7YnJlYWs7Y2FzZSBcImFuY2hvclwiOmM9ZC5hbmNob3ImJmQuYW5jaG9yLmlkO2dbXCJkYXRhLWNrZS1zYXZlZC1ocmVmXCJdPVwiI1wiKyhkLmFuY2hvciYmZC5hbmNob3IubmFtZXx8Y3x8XCJcIik7YnJlYWs7Y2FzZSBcImVtYWlsXCI6dmFyIGs9ZC5lbWFpbCxoPWsuYWRkcmVzcztzd2l0Y2goYyl7Y2FzZSBcIlwiOmNhc2UgXCJlbmNvZGVcIjp2YXIgbD1lbmNvZGVVUklDb21wb25lbnQoay5zdWJqZWN0fHxcIlwiKSxtPWVuY29kZVVSSUNvbXBvbmVudChrLmJvZHl8fFwiXCIpLGs9W107bCYmay5wdXNoKFwic3ViamVjdFxceDNkXCIrbCk7bSYmay5wdXNoKFwiYm9keVxceDNkXCIrbSk7az1rLmxlbmd0aD9cIj9cIitrLmpvaW4oXCJcXHgyNlwiKTpcIlwiO1wiZW5jb2RlXCI9PWM/KGM9W1wiamF2YXNjcmlwdDp2b2lkKGxvY2F0aW9uLmhyZWZcXHgzZCdtYWlsdG86JytcIixmKGgpXSxrJiZjLnB1c2goXCIrJ1wiLGEoayksXCInXCIpLGMucHVzaChcIilcIikpOlxuYz1bXCJtYWlsdG86XCIsaCxrXTticmVhaztkZWZhdWx0OmM9aC5zcGxpdChcIkBcIiwyKSxrLm5hbWU9Y1swXSxrLmRvbWFpbj1jWzFdLGM9W1wiamF2YXNjcmlwdDpcIixlKGIsayldfWdbXCJkYXRhLWNrZS1zYXZlZC1ocmVmXCJdPWMuam9pbihcIlwiKTticmVhaztjYXNlIFwidGVsXCI6Z1tcImRhdGEtY2tlLXNhdmVkLWhyZWZcIl09XCJ0ZWw6XCIrZC50ZWx9aWYoZC50YXJnZXQpaWYoXCJwb3B1cFwiPT1kLnRhcmdldC50eXBlKXtmb3IodmFyIGM9W1wid2luZG93Lm9wZW4odGhpcy5ocmVmLCAnXCIsZC50YXJnZXQubmFtZXx8XCJcIixcIicsICdcIl0sbj1cInJlc2l6YWJsZSBzdGF0dXMgbG9jYXRpb24gdG9vbGJhciBtZW51YmFyIGZ1bGxzY3JlZW4gc2Nyb2xsYmFycyBkZXBlbmRlbnRcIi5zcGxpdChcIiBcIiksaD1uLmxlbmd0aCxsPWZ1bmN0aW9uKGEpe2QudGFyZ2V0W2FdJiZuLnB1c2goYStcIlxceDNkXCIrZC50YXJnZXRbYV0pfSxrPTA7azxoO2srKyluW2tdKz1kLnRhcmdldFtuW2tdXT9cIlxceDNkeWVzXCI6XCJcXHgzZG5vXCI7XG5sKFwid2lkdGhcIik7bChcImxlZnRcIik7bChcImhlaWdodFwiKTtsKFwidG9wXCIpO2MucHVzaChuLmpvaW4oXCIsXCIpLFwiJyk7IHJldHVybiBmYWxzZTtcIik7Z1tcImRhdGEtY2tlLXBhLW9uY2xpY2tcIl09Yy5qb2luKFwiXCIpfWVsc2VcIm5vdFNldFwiIT1kLnRhcmdldC50eXBlJiZkLnRhcmdldC5uYW1lJiYoZy50YXJnZXQ9ZC50YXJnZXQubmFtZSk7ZC5kb3dubG9hZCYmKGcuZG93bmxvYWQ9XCJcIik7aWYoZC5hZHZhbmNlZCl7Zm9yKHZhciBwIGluIHUpKGM9ZC5hZHZhbmNlZFt1W3BdXSkmJihnW3BdPWMpO2cubmFtZSYmKGdbXCJkYXRhLWNrZS1zYXZlZC1uYW1lXCJdPWcubmFtZSl9Z1tcImRhdGEtY2tlLXNhdmVkLWhyZWZcIl0mJihnLmhyZWY9Z1tcImRhdGEtY2tlLXNhdmVkLWhyZWZcIl0pO3A9e3RhcmdldDoxLG9uY2xpY2s6MSxcImRhdGEtY2tlLXBhLW9uY2xpY2tcIjoxLFwiZGF0YS1ja2Utc2F2ZWQtbmFtZVwiOjEsZG93bmxvYWQ6MX07ZC5hZHZhbmNlZCYmQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHAsdSk7Zm9yKHZhciB3IGluIGcpZGVsZXRlIHBbd107XG5yZXR1cm57c2V0OmcscmVtb3ZlZDpDS0VESVRPUi50b29scy5vYmplY3Qua2V5cyhwKX19LHNob3dEaXNwbGF5VGV4dEZvckVsZW1lbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD17aW1nOjEsdGFibGU6MSx0Ym9keToxLHRoZWFkOjEsdGZvb3Q6MSxpbnB1dDoxLHNlbGVjdDoxLHRleHRhcmVhOjF9LGM9Yi5nZXRTZWxlY3Rpb24oKTtyZXR1cm4gYi53aWRnZXRzJiZiLndpZGdldHMuZm9jdXNlZHx8YyYmMTxjLmdldFJhbmdlcygpLmxlbmd0aD8hMTohYXx8IWEuZ2V0TmFtZXx8IWEuaXMoZCl9fTtDS0VESVRPUi51bmxpbmtDb21tYW5kPWZ1bmN0aW9uKCl7fTtDS0VESVRPUi51bmxpbmtDb21tYW5kLnByb3RvdHlwZT17ZXhlYzpmdW5jdGlvbihhKXtpZihDS0VESVRPUi5lbnYuaWUpe3ZhciBiPWEuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKClbMF0sZD1iLmdldFByZXZpb3VzRWRpdGFibGVOb2RlKCkmJmIuZ2V0UHJldmlvdXNFZGl0YWJsZU5vZGUoKS5nZXRBc2NlbmRhbnQoXCJhXCIsITApfHxcbmIuZ2V0TmV4dEVkaXRhYmxlTm9kZSgpJiZiLmdldE5leHRFZGl0YWJsZU5vZGUoKS5nZXRBc2NlbmRhbnQoXCJhXCIsITApLGM7Yi5jb2xsYXBzZWQmJmQmJihjPWIuY3JlYXRlQm9va21hcmsoKSxiLnNlbGVjdE5vZGVDb250ZW50cyhkKSxiLnNlbGVjdCgpKX1kPW5ldyBDS0VESVRPUi5zdHlsZSh7ZWxlbWVudDpcImFcIix0eXBlOkNLRURJVE9SLlNUWUxFX0lOTElORSxhbHdheXNSZW1vdmVFbGVtZW50OjF9KTthLnJlbW92ZVN0eWxlKGQpO2MmJihiLm1vdmVUb0Jvb2ttYXJrKGMpLGIuc2VsZWN0KCkpfSxyZWZyZXNoOmZ1bmN0aW9uKGEsYil7dmFyIGQ9Yi5sYXN0RWxlbWVudCYmYi5sYXN0RWxlbWVudC5nZXRBc2NlbmRhbnQoXCJhXCIsITApO2QmJlwiYVwiPT1kLmdldE5hbWUoKSYmZC5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpJiZkLmdldENoaWxkQ291bnQoKT90aGlzLnNldFN0YXRlKENLRURJVE9SLlRSSVNUQVRFX09GRik6dGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCl9LFxuY29udGV4dFNlbnNpdGl2ZToxLHN0YXJ0RGlzYWJsZWQ6MSxyZXF1aXJlZENvbnRlbnQ6XCJhW2hyZWZdXCIsZWRpdG9yRm9jdXM6MX07Q0tFRElUT1IucmVtb3ZlQW5jaG9yQ29tbWFuZD1mdW5jdGlvbigpe307Q0tFRElUT1IucmVtb3ZlQW5jaG9yQ29tbWFuZC5wcm90b3R5cGU9e2V4ZWM6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRTZWxlY3Rpb24oKSxkPWIuY3JlYXRlQm9va21hcmtzKCksYztpZihiJiYoYz1iLmdldFNlbGVjdGVkRWxlbWVudCgpKSYmKGMuZ2V0Q2hpbGRDb3VudCgpP2MuaXMoXCJhXCIpOkNLRURJVE9SLnBsdWdpbnMubGluay50cnlSZXN0b3JlRmFrZUFuY2hvcihhLGMpKSljLnJlbW92ZSgxKTtlbHNlIGlmKGM9Q0tFRElUT1IucGx1Z2lucy5saW5rLmdldFNlbGVjdGVkTGluayhhKSljLmhhc0F0dHJpYnV0ZShcImhyZWZcIik/KGMucmVtb3ZlQXR0cmlidXRlcyh7bmFtZToxLFwiZGF0YS1ja2Utc2F2ZWQtbmFtZVwiOjF9KSxjLnJlbW92ZUNsYXNzKFwiY2tlX2FuY2hvclwiKSk6XG5jLnJlbW92ZSgxKTtiLnNlbGVjdEJvb2ttYXJrcyhkKX0scmVxdWlyZWRDb250ZW50OlwiYVtuYW1lXVwifTtDS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IuY29uZmlnLHtsaW5rU2hvd0FkdmFuY2VkVGFiOiEwLGxpbmtTaG93VGFyZ2V0VGFiOiEwLGxpbmtEZWZhdWx0UHJvdG9jb2w6XCJodHRwOi8vXCJ9KX0oKSxcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSxiLGQpe3JldHVybiBuKGIpJiZuKGQpJiZkLmVxdWFscyhiLmdldE5leHQoZnVuY3Rpb24oYSl7cmV0dXJuIShhYShhKXx8Y2EoYSl8fHcoYSkpfSkpfWZ1bmN0aW9uIGYoYSl7dGhpcy51cHBlcj1hWzBdO3RoaXMubG93ZXI9YVsxXTt0aGlzLnNldC5hcHBseSh0aGlzLGEuc2xpY2UoMikpfWZ1bmN0aW9uIGUoYSl7dmFyIGI9YS5lbGVtZW50O2lmKGImJm4oYikmJihiPWIuZ2V0QXNjZW5kYW50KGEudHJpZ2dlcnMsITApKSYmYS5lZGl0YWJsZS5jb250YWlucyhiKSl7dmFyIGQ9bChiKTtpZihcInRydWVcIj09XG5kLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSlyZXR1cm4gYjtpZihkLmlzKGEudHJpZ2dlcnMpKXJldHVybiBkfXJldHVybiBudWxsfWZ1bmN0aW9uIGIoYSxiLGQpe3koYSxiKTt5KGEsZCk7YT1iLnNpemUuYm90dG9tO2Q9ZC5zaXplLnRvcDtyZXR1cm4gYSYmZD8wfChhK2QpLzI6YXx8ZH1mdW5jdGlvbiBjKGEsYixkKXtyZXR1cm4gYj1iW2Q/XCJnZXRQcmV2aW91c1wiOlwiZ2V0TmV4dFwiXShmdW5jdGlvbihiKXtyZXR1cm4gYiYmYi50eXBlPT1DS0VESVRPUi5OT0RFX1RFWFQmJiFhYShiKXx8bihiKSYmIXcoYikmJiFnKGEsYil9KX1mdW5jdGlvbiBrKGEsYixkKXtyZXR1cm4gYT5iJiZhPGR9ZnVuY3Rpb24gbChhLGIpe2lmKGEuZGF0YShcImNrZS1lZGl0YWJsZVwiKSlyZXR1cm4gbnVsbDtmb3IoYnx8KGE9YS5nZXRQYXJlbnQoKSk7YSYmIWEuZGF0YShcImNrZS1lZGl0YWJsZVwiKTspe2lmKGEuaGFzQXR0cmlidXRlKFwiY29udGVudGVkaXRhYmxlXCIpKXJldHVybiBhO2E9YS5nZXRQYXJlbnQoKX1yZXR1cm4gbnVsbH1cbmZ1bmN0aW9uIG0oYSl7dmFyIGI9YS5kb2MsYz1GKCdcXHgzY3NwYW4gY29udGVudGVkaXRhYmxlXFx4M2RcImZhbHNlXCIgZGF0YS1ja2UtbWFnaWMtbGluZVxceDNkXCIxXCIgc3R5bGVcXHgzZFwiJytnYStcInBvc2l0aW9uOmFic29sdXRlO2JvcmRlci10b3A6MXB4IGRhc2hlZCBcIithLmJveENvbG9yKydcIlxceDNlXFx4M2Mvc3BhblxceDNlJyxiKSxlPUNLRURJVE9SLmdldFVybCh0aGlzLnBhdGgrXCJpbWFnZXMvXCIrKEouaGlkcGk/XCJoaWRwaS9cIjpcIlwiKStcImljb25cIisoYS5ydGw/XCItcnRsXCI6XCJcIikrXCIucG5nXCIpO0QoYyx7YXR0YWNoOmZ1bmN0aW9uKCl7dGhpcy53cmFwLmdldFBhcmVudCgpfHx0aGlzLndyYXAuYXBwZW5kVG8oYS5lZGl0YWJsZSwhMCk7cmV0dXJuIHRoaXN9LGxpbmVDaGlsZHJlbjpbRChGKCdcXHgzY3NwYW4gdGl0bGVcXHgzZFwiJythLmVkaXRvci5sYW5nLm1hZ2ljbGluZS50aXRsZSsnXCIgY29udGVudGVkaXRhYmxlXFx4M2RcImZhbHNlXCJcXHgzZVxceDI2Izg2Mjk7XFx4M2Mvc3BhblxceDNlJyxcbmIpLHtiYXNlOmdhK1wiaGVpZ2h0OjE3cHg7d2lkdGg6MTdweDtcIisoYS5ydGw/XCJsZWZ0XCI6XCJyaWdodFwiKStcIjoxN3B4O2JhY2tncm91bmQ6dXJsKFwiK2UrXCIpIGNlbnRlciBuby1yZXBlYXQgXCIrYS5ib3hDb2xvcitcIjtjdXJzb3I6cG9pbnRlcjtcIisoSi5oYz9cImZvbnQtc2l6ZTogMTVweDtsaW5lLWhlaWdodDoxNHB4O2JvcmRlcjoxcHggc29saWQgI2ZmZjt0ZXh0LWFsaWduOmNlbnRlcjtcIjpcIlwiKSsoSi5oaWRwaT9cImJhY2tncm91bmQtc2l6ZTogOXB4IDEwcHg7XCI6XCJcIiksbG9va3M6W1widG9wOi04cHg7IGJvcmRlci1yYWRpdXM6IDJweDtcIixcInRvcDotMTdweDsgYm9yZGVyLXJhZGl1czogMnB4IDJweCAwcHggMHB4O1wiLFwidG9wOi0xcHg7IGJvcmRlci1yYWRpdXM6IDBweCAwcHggMnB4IDJweDtcIl19KSxEKEYoVCxiKSx7YmFzZTprYStcImxlZnQ6MHB4O2JvcmRlci1sZWZ0LWNvbG9yOlwiK2EuYm94Q29sb3IrXCI7XCIsbG9va3M6W1wiYm9yZGVyLXdpZHRoOjhweCAwIDhweCA4cHg7dG9wOi04cHhcIixcblwiYm9yZGVyLXdpZHRoOjhweCAwIDAgOHB4O3RvcDotOHB4XCIsXCJib3JkZXItd2lkdGg6MCAwIDhweCA4cHg7dG9wOjBweFwiXX0pLEQoRihULGIpLHtiYXNlOmthK1wicmlnaHQ6MHB4O2JvcmRlci1yaWdodC1jb2xvcjpcIithLmJveENvbG9yK1wiO1wiLGxvb2tzOltcImJvcmRlci13aWR0aDo4cHggOHB4IDhweCAwO3RvcDotOHB4XCIsXCJib3JkZXItd2lkdGg6OHB4IDhweCAwIDA7dG9wOi04cHhcIixcImJvcmRlci13aWR0aDowIDhweCA4cHggMDt0b3A6MHB4XCJdfSldLGRldGFjaDpmdW5jdGlvbigpe3RoaXMud3JhcC5nZXRQYXJlbnQoKSYmdGhpcy53cmFwLnJlbW92ZSgpO3JldHVybiB0aGlzfSxtb3VzZU5lYXI6ZnVuY3Rpb24oKXt5KGEsdGhpcyk7dmFyIGI9YS5ob2xkRGlzdGFuY2UsZD10aGlzLnNpemU7cmV0dXJuIGQmJmsoYS5tb3VzZS55LGQudG9wLWIsZC5ib3R0b20rYikmJmsoYS5tb3VzZS54LGQubGVmdC1iLGQucmlnaHQrYik/ITA6ITF9LHBsYWNlOmZ1bmN0aW9uKCl7dmFyIGI9XG5hLnZpZXcsZD1hLmVkaXRhYmxlLGM9YS50cmlnZ2VyLGU9Yy51cHBlcixmPWMubG93ZXIsZz1lfHxmLGg9Zy5nZXRQYXJlbnQoKSxsPXt9O3RoaXMudHJpZ2dlcj1jO2UmJnkoYSxlLCEwKTtmJiZ5KGEsZiwhMCk7eShhLGgsITApO2EuaW5JbmxpbmVNb2RlJiZ0KGEsITApO2guZXF1YWxzKGQpPyhsLmxlZnQ9Yi5zY3JvbGwueCxsLnJpZ2h0PS1iLnNjcm9sbC54LGwud2lkdGg9XCJcIik6KGwubGVmdD1nLnNpemUubGVmdC1nLnNpemUubWFyZ2luLmxlZnQrYi5zY3JvbGwueC0oYS5pbklubGluZU1vZGU/Yi5lZGl0YWJsZS5sZWZ0K2IuZWRpdGFibGUuYm9yZGVyLmxlZnQ6MCksbC53aWR0aD1nLnNpemUub3V0ZXJXaWR0aCtnLnNpemUubWFyZ2luLmxlZnQrZy5zaXplLm1hcmdpbi5yaWdodCtiLnNjcm9sbC54LGwucmlnaHQ9XCJcIik7ZSYmZj9sLnRvcD1lLnNpemUubWFyZ2luLmJvdHRvbT09PWYuc2l6ZS5tYXJnaW4udG9wPzB8ZS5zaXplLmJvdHRvbStlLnNpemUubWFyZ2luLmJvdHRvbS9cbjI6ZS5zaXplLm1hcmdpbi5ib3R0b208Zi5zaXplLm1hcmdpbi50b3A/ZS5zaXplLmJvdHRvbStlLnNpemUubWFyZ2luLmJvdHRvbTplLnNpemUuYm90dG9tK2Uuc2l6ZS5tYXJnaW4uYm90dG9tLWYuc2l6ZS5tYXJnaW4udG9wOmU/Znx8KGwudG9wPWUuc2l6ZS5ib3R0b20rZS5zaXplLm1hcmdpbi5ib3R0b20pOmwudG9wPWYuc2l6ZS50b3AtZi5zaXplLm1hcmdpbi50b3A7Yy5pcyhOKXx8ayhsLnRvcCxiLnNjcm9sbC55LTE1LGIuc2Nyb2xsLnkrNSk/KGwudG9wPWEuaW5JbmxpbmVNb2RlPzA6Yi5zY3JvbGwueSx0aGlzLmxvb2soTikpOmMuaXMoTyl8fGsobC50b3AsYi5wYW5lLmJvdHRvbS01LGIucGFuZS5ib3R0b20rMTUpPyhsLnRvcD1hLmluSW5saW5lTW9kZT9iLmVkaXRhYmxlLmhlaWdodCtiLmVkaXRhYmxlLnBhZGRpbmcudG9wK2IuZWRpdGFibGUucGFkZGluZy5ib3R0b206Yi5wYW5lLmJvdHRvbS0xLHRoaXMubG9vayhPKSk6KGEuaW5JbmxpbmVNb2RlJiYobC50b3AtPVxuYi5lZGl0YWJsZS50b3ArYi5lZGl0YWJsZS5ib3JkZXIudG9wKSx0aGlzLmxvb2soWCkpO2EuaW5JbmxpbmVNb2RlJiYobC50b3AtLSxsLnRvcCs9Yi5lZGl0YWJsZS5zY3JvbGwudG9wLGwubGVmdCs9Yi5lZGl0YWJsZS5zY3JvbGwubGVmdCk7Zm9yKHZhciBtIGluIGwpbFttXT1DS0VESVRPUi50b29scy5jc3NMZW5ndGgobFttXSk7dGhpcy5zZXRTdHlsZXMobCl9LGxvb2s6ZnVuY3Rpb24oYSl7aWYodGhpcy5vbGRMb29rIT1hKXtmb3IodmFyIGI9dGhpcy5saW5lQ2hpbGRyZW4ubGVuZ3RoLGQ7Yi0tOykoZD10aGlzLmxpbmVDaGlsZHJlbltiXSkuc2V0QXR0cmlidXRlKFwic3R5bGVcIixkLmJhc2UrZC5sb29rc1swfGEvMl0pO3RoaXMub2xkTG9vaz1hfX0sd3JhcDpuZXcgQyhcInNwYW5cIixhLmRvYyl9KTtmb3IoYj1jLmxpbmVDaGlsZHJlbi5sZW5ndGg7Yi0tOyljLmxpbmVDaGlsZHJlbltiXS5hcHBlbmRUbyhjKTtjLmxvb2soWCk7Yy5hcHBlbmRUbyhjLndyYXApO2MudW5zZWxlY3RhYmxlKCk7XG5jLmxpbmVDaGlsZHJlblswXS5vbihcIm1vdXNldXBcIixmdW5jdGlvbihiKXtjLmRldGFjaCgpO2QoYSxmdW5jdGlvbihiKXt2YXIgZD1hLmxpbmUudHJpZ2dlcjtiW2QuaXMoSCk/XCJpbnNlcnRCZWZvcmVcIjpcImluc2VydEFmdGVyXCJdKGQuaXMoSCk/ZC5sb3dlcjpkLnVwcGVyKX0sITApO2EuZWRpdG9yLmZvY3VzKCk7Si5pZXx8YS5lbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX0JSfHxhLmhvdE5vZGUuc2Nyb2xsSW50b1ZpZXcoKTtiLmRhdGEucHJldmVudERlZmF1bHQoITApfSk7Yy5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGEpe2EuZGF0YS5wcmV2ZW50RGVmYXVsdCghMCl9KTthLmxpbmU9Y31mdW5jdGlvbiBkKGEsYixkKXt2YXIgYz1uZXcgQ0tFRElUT1IuZG9tLnJhbmdlKGEuZG9jKSxlPWEuZWRpdG9yLGY7Si5pZSYmYS5lbnRlck1vZGU9PUNLRURJVE9SLkVOVEVSX0JSP2Y9YS5kb2MuY3JlYXRlVGV4dChTKTooZj0oZj1sKGEuZWxlbWVudCwhMCkpJiZmLmRhdGEoXCJja2UtZW50ZXItbW9kZVwiKXx8XG5hLmVudGVyTW9kZSxmPW5ldyBDKE1bZl0sYS5kb2MpLGYuaXMoXCJiclwiKXx8YS5kb2MuY3JlYXRlVGV4dChTKS5hcHBlbmRUbyhmKSk7ZCYmZS5maXJlKFwic2F2ZVNuYXBzaG90XCIpO2IoZik7Yy5tb3ZlVG9Qb3NpdGlvbihmLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX1NUQVJUKTtlLmdldFNlbGVjdGlvbigpLnNlbGVjdFJhbmdlcyhbY10pO2EuaG90Tm9kZT1mO2QmJmUuZmlyZShcInNhdmVTbmFwc2hvdFwiKX1mdW5jdGlvbiBoKGEsYil7cmV0dXJue2NhblVuZG86ITAsbW9kZXM6e3d5c2l3eWc6MX0sZXhlYzpmdW5jdGlvbigpe2Z1bmN0aW9uIGYoYyl7dmFyIGU9Si5pZSYmOT5KLnZlcnNpb24/XCIgXCI6UyxnPWEuaG90Tm9kZSYmYS5ob3ROb2RlLmdldFRleHQoKT09ZSYmYS5lbGVtZW50LmVxdWFscyhhLmhvdE5vZGUpJiZhLmxhc3RDbWREaXJlY3Rpb249PT0hIWI7ZChhLGZ1bmN0aW9uKGQpe2cmJmEuaG90Tm9kZSYmYS5ob3ROb2RlLnJlbW92ZSgpO2RbYj9cImluc2VydEFmdGVyXCI6XG5cImluc2VydEJlZm9yZVwiXShjKTtkLnNldEF0dHJpYnV0ZXMoe1wiZGF0YS1ja2UtbWFnaWNsaW5lLWhvdFwiOjEsXCJkYXRhLWNrZS1tYWdpY2xpbmUtZGlyXCI6ISFifSk7YS5sYXN0Q21kRGlyZWN0aW9uPSEhYn0pO0ouaWV8fGEuZW50ZXJNb2RlPT1DS0VESVRPUi5FTlRFUl9CUnx8YS5ob3ROb2RlLnNjcm9sbEludG9WaWV3KCk7YS5saW5lLmRldGFjaCgpfXJldHVybiBmdW5jdGlvbihkKXtkPWQuZ2V0U2VsZWN0aW9uKCkuZ2V0U3RhcnRFbGVtZW50KCk7dmFyIGc7ZD1kLmdldEFzY2VuZGFudChpYSwxKTtpZighcChhLGQpJiZkJiYhZC5lcXVhbHMoYS5lZGl0YWJsZSkmJiFkLmNvbnRhaW5zKGEuZWRpdGFibGUpKXsoZz1sKGQpKSYmXCJmYWxzZVwiPT1nLmdldEF0dHJpYnV0ZShcImNvbnRlbnRlZGl0YWJsZVwiKSYmKGQ9Zyk7YS5lbGVtZW50PWQ7Zz1jKGEsZCwhYik7dmFyIGg7bihnKSYmZy5pcyhhLnRyaWdnZXJzKSYmZy5pcyhVKSYmKCFjKGEsZywhYil8fChoPWMoYSxnLCFiKSkmJm4oaCkmJlxuaC5pcyhhLnRyaWdnZXJzKSk/ZihnKTooaD1lKGEsZCksbihoKSYmKGMoYSxoLCFiKT8oZD1jKGEsaCwhYikpJiZuKGQpJiZkLmlzKGEudHJpZ2dlcnMpJiZmKGgpOmYoaCkpKX19fSgpfX1mdW5jdGlvbiBnKGEsYil7aWYoIWJ8fGIudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHwhYi4kKXJldHVybiExO3ZhciBkPWEubGluZTtyZXR1cm4gZC53cmFwLmVxdWFscyhiKXx8ZC53cmFwLmNvbnRhaW5zKGIpfWZ1bmN0aW9uIG4oYSl7cmV0dXJuIGEmJmEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLiR9ZnVuY3Rpb24gdyhhKXtpZighbihhKSlyZXR1cm4hMTt2YXIgYjsoYj14KGEpKXx8KG4oYSk/KGI9e2xlZnQ6MSxyaWdodDoxLGNlbnRlcjoxfSxiPSEoIWJbYS5nZXRDb21wdXRlZFN0eWxlKFwiZmxvYXRcIildJiYhYlthLmdldEF0dHJpYnV0ZShcImFsaWduXCIpXSkpOmI9ITEpO3JldHVybiBifWZ1bmN0aW9uIHgoYSl7cmV0dXJuISF7YWJzb2x1dGU6MSxmaXhlZDoxfVthLmdldENvbXB1dGVkU3R5bGUoXCJwb3NpdGlvblwiKV19XG5mdW5jdGlvbiByKGEsYil7cmV0dXJuIG4oYik/Yi5pcyhhLnRyaWdnZXJzKTpudWxsfWZ1bmN0aW9uIHAoYSxiKXtpZighYilyZXR1cm4hMTtmb3IodmFyIGQ9Yi5nZXRQYXJlbnRzKDEpLGM9ZC5sZW5ndGg7Yy0tOylmb3IodmFyIGU9YS50YWJ1TGlzdC5sZW5ndGg7ZS0tOylpZihkW2NdLmhhc0F0dHJpYnV0ZShhLnRhYnVMaXN0W2VdKSlyZXR1cm4hMDtyZXR1cm4hMX1mdW5jdGlvbiB1KGEsYixkKXtiPWJbZD9cImdldExhc3RcIjpcImdldEZpcnN0XCJdKGZ1bmN0aW9uKGIpe3JldHVybiBhLmlzUmVsZXZhbnQoYikmJiFiLmlzKGVhKX0pO2lmKCFiKXJldHVybiExO3koYSxiKTtyZXR1cm4gZD9iLnNpemUudG9wPmEubW91c2UueTpiLnNpemUuYm90dG9tPGEubW91c2UueX1mdW5jdGlvbiB6KGEpe3ZhciBiPWEuZWRpdGFibGUsZD1hLm1vdXNlLGM9YS52aWV3LGU9YS50cmlnZ2VyT2Zmc2V0O3QoYSk7dmFyIGg9ZC55PihhLmluSW5saW5lTW9kZT9jLmVkaXRhYmxlLnRvcCtjLmVkaXRhYmxlLmhlaWdodC9cbjI6TWF0aC5taW4oYy5lZGl0YWJsZS5oZWlnaHQsYy5wYW5lLmhlaWdodCkvMiksYj1iW2g/XCJnZXRMYXN0XCI6XCJnZXRGaXJzdFwiXShmdW5jdGlvbihhKXtyZXR1cm4hKGFhKGEpfHxjYShhKSl9KTtpZighYilyZXR1cm4gbnVsbDtnKGEsYikmJihiPWEubGluZS53cmFwW2g/XCJnZXRQcmV2aW91c1wiOlwiZ2V0TmV4dFwiXShmdW5jdGlvbihhKXtyZXR1cm4hKGFhKGEpfHxjYShhKSl9KSk7aWYoIW4oYil8fHcoYil8fCFyKGEsYikpcmV0dXJuIG51bGw7eShhLGIpO3JldHVybiFoJiYwPD1iLnNpemUudG9wJiZrKGQueSwwLGIuc2l6ZS50b3ArZSk/KGE9YS5pbklubGluZU1vZGV8fDA9PT1jLnNjcm9sbC55P046WCxuZXcgZihbbnVsbCxiLEgsTCxhXSkpOmgmJmIuc2l6ZS5ib3R0b208PWMucGFuZS5oZWlnaHQmJmsoZC55LGIuc2l6ZS5ib3R0b20tZSxjLnBhbmUuaGVpZ2h0KT8oYT1hLmluSW5saW5lTW9kZXx8ayhiLnNpemUuYm90dG9tLGMucGFuZS5oZWlnaHQtZSxjLnBhbmUuaGVpZ2h0KT9cbk86WCxuZXcgZihbYixudWxsLEUsTCxhXSkpOm51bGx9ZnVuY3Rpb24gcShhKXt2YXIgYj1hLm1vdXNlLGQ9YS52aWV3LGc9YS50cmlnZ2VyT2Zmc2V0LGg9ZShhKTtpZighaClyZXR1cm4gbnVsbDt5KGEsaCk7dmFyIGc9TWF0aC5taW4oZywwfGguc2l6ZS5vdXRlckhlaWdodC8yKSxsPVtdLG0scDtpZihrKGIueSxoLnNpemUudG9wLTEsaC5zaXplLnRvcCtnKSlwPSExO2Vsc2UgaWYoayhiLnksaC5zaXplLmJvdHRvbS1nLGguc2l6ZS5ib3R0b20rMSkpcD0hMDtlbHNlIHJldHVybiBudWxsO2lmKHcoaCl8fHUoYSxoLHApfHxoLmdldFBhcmVudCgpLmlzKFkpKXJldHVybiBudWxsO3ZhciB2PWMoYSxoLCFwKTtpZih2KXtpZih2JiZ2LnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVClyZXR1cm4gbnVsbDtpZihuKHYpKXtpZih3KHYpfHwhcihhLHYpfHx2LmdldFBhcmVudCgpLmlzKFkpKXJldHVybiBudWxsO2w9W3YsaF1bcD9cInJldmVyc2VcIjpcImNvbmNhdFwiXSgpLmNvbmNhdChbUCxMXSl9fWVsc2UgaC5lcXVhbHMoYS5lZGl0YWJsZVtwP1xuXCJnZXRMYXN0XCI6XCJnZXRGaXJzdFwiXShhLmlzUmVsZXZhbnQpKT8odChhKSxwJiZrKGIueSxoLnNpemUuYm90dG9tLWcsZC5wYW5lLmhlaWdodCkmJmsoaC5zaXplLmJvdHRvbSxkLnBhbmUuaGVpZ2h0LWcsZC5wYW5lLmhlaWdodCk/bT1POmsoYi55LDAsaC5zaXplLnRvcCtnKSYmKG09TikpOm09WCxsPVtudWxsLGhdW3A/XCJyZXZlcnNlXCI6XCJjb25jYXRcIl0oKS5jb25jYXQoW3A/RTpILEwsbSxoLmVxdWFscyhhLmVkaXRhYmxlW3A/XCJnZXRMYXN0XCI6XCJnZXRGaXJzdFwiXShhLmlzUmVsZXZhbnQpKT9wP086TjpYXSk7cmV0dXJuIDAgaW4gbD9uZXcgZihsKTpudWxsfWZ1bmN0aW9uIEEoYSxiLGQsYyl7Zm9yKHZhciBlPWIuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLGY9e30sZz17fSxoPXt9LGs9e30sbD1RLmxlbmd0aDtsLS07KWZbUVtsXV09cGFyc2VJbnQoYi5nZXRDb21wdXRlZFN0eWxlLmNhbGwoYixcImJvcmRlci1cIitRW2xdK1wiLXdpZHRoXCIpLDEwKXx8MCxoW1FbbF1dPXBhcnNlSW50KGIuZ2V0Q29tcHV0ZWRTdHlsZS5jYWxsKGIsXG5cInBhZGRpbmctXCIrUVtsXSksMTApfHwwLGdbUVtsXV09cGFyc2VJbnQoYi5nZXRDb21wdXRlZFN0eWxlLmNhbGwoYixcIm1hcmdpbi1cIitRW2xdKSwxMCl8fDA7ZCYmIWN8fHYoYSxjKTtrLnRvcD1lLnktKGQ/MDphLnZpZXcuc2Nyb2xsLnkpO2subGVmdD1lLngtKGQ/MDphLnZpZXcuc2Nyb2xsLngpO2sub3V0ZXJXaWR0aD1iLiQub2Zmc2V0V2lkdGg7ay5vdXRlckhlaWdodD1iLiQub2Zmc2V0SGVpZ2h0O2suaGVpZ2h0PWsub3V0ZXJIZWlnaHQtKGgudG9wK2guYm90dG9tK2YudG9wK2YuYm90dG9tKTtrLndpZHRoPWsub3V0ZXJXaWR0aC0oaC5sZWZ0K2gucmlnaHQrZi5sZWZ0K2YucmlnaHQpO2suYm90dG9tPWsudG9wK2sub3V0ZXJIZWlnaHQ7ay5yaWdodD1rLmxlZnQray5vdXRlcldpZHRoO2EuaW5JbmxpbmVNb2RlJiYoay5zY3JvbGw9e3RvcDpiLiQuc2Nyb2xsVG9wLGxlZnQ6Yi4kLnNjcm9sbExlZnR9KTtyZXR1cm4gRCh7Ym9yZGVyOmYscGFkZGluZzpoLG1hcmdpbjpnLGlnbm9yZVNjcm9sbDpkfSxcbmssITApfWZ1bmN0aW9uIHkoYSxiLGQpe2lmKCFuKGIpKXJldHVybiBiLnNpemU9bnVsbDtpZighYi5zaXplKWIuc2l6ZT17fTtlbHNlIGlmKGIuc2l6ZS5pZ25vcmVTY3JvbGw9PWQmJmIuc2l6ZS5kYXRlPm5ldyBEYXRlLWphKXJldHVybiBudWxsO3JldHVybiBEKGIuc2l6ZSxBKGEsYixkKSx7ZGF0ZTorbmV3IERhdGV9LCEwKX1mdW5jdGlvbiB0KGEsYil7YS52aWV3LmVkaXRhYmxlPUEoYSxhLmVkaXRhYmxlLGIsITApfWZ1bmN0aW9uIHYoYSxiKXthLnZpZXd8fChhLnZpZXc9e30pO3ZhciBkPWEudmlldztpZighKCFiJiZkJiZkLmRhdGU+bmV3IERhdGUtamEpKXt2YXIgYz1hLndpbixkPWMuZ2V0U2Nyb2xsUG9zaXRpb24oKSxjPWMuZ2V0Vmlld1BhbmVTaXplKCk7RChhLnZpZXcse3Njcm9sbDp7eDpkLngseTpkLnksd2lkdGg6YS5kb2MuJC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgtYy53aWR0aCxoZWlnaHQ6YS5kb2MuJC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsSGVpZ2h0LVxuYy5oZWlnaHR9LHBhbmU6e3dpZHRoOmMud2lkdGgsaGVpZ2h0OmMuaGVpZ2h0LGJvdHRvbTpjLmhlaWdodCtkLnl9LGRhdGU6K25ldyBEYXRlfSwhMCl9fWZ1bmN0aW9uIEIoYSxiLGQsYyl7Zm9yKHZhciBlPWMsZz1jLGg9MCxrPSExLGw9ITEsbT1hLnZpZXcucGFuZS5oZWlnaHQsbj1hLm1vdXNlO24ueStoPG0mJjA8bi55LWg7KXtrfHwoaz1iKGUsYykpO2x8fChsPWIoZyxjKSk7IWsmJjA8bi55LWgmJihlPWQoYSx7eDpuLngseTpuLnktaH0pKTshbCYmbi55K2g8bSYmKGc9ZChhLHt4Om4ueCx5Om4ueStofSkpO2lmKGsmJmwpYnJlYWs7aCs9Mn1yZXR1cm4gbmV3IGYoW2UsZyxudWxsLG51bGxdKX1DS0VESVRPUi5wbHVnaW5zLmFkZChcIm1hZ2ljbGluZVwiLHtpbml0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuY29uZmlnLGs9Yi5tYWdpY2xpbmVfdHJpZ2dlck9mZnNldHx8MzAsbD17ZWRpdG9yOmEsZW50ZXJNb2RlOmIuZW50ZXJNb2RlLHRyaWdnZXJPZmZzZXQ6ayxob2xkRGlzdGFuY2U6MHxcbmsqKGIubWFnaWNsaW5lX2hvbGREaXN0YW5jZXx8LjUpLGJveENvbG9yOmIubWFnaWNsaW5lX2NvbG9yfHxcIiNmZjAwMDBcIixydGw6XCJydGxcIj09Yi5jb250ZW50c0xhbmdEaXJlY3Rpb24sdGFidUxpc3Q6W1wiZGF0YS1ja2UtaGlkZGVuLXNlbFwiXS5jb25jYXQoYi5tYWdpY2xpbmVfdGFidUxpc3R8fFtdKSx0cmlnZ2VyczpiLm1hZ2ljbGluZV9ldmVyeXdoZXJlP2lhOnt0YWJsZToxLGhyOjEsZGl2OjEsdWw6MSxvbDoxLGRsOjEsZm9ybToxLGJsb2NrcXVvdGU6MX19LHUscixCO2wuaXNSZWxldmFudD1mdW5jdGlvbihhKXtyZXR1cm4gbihhKSYmIWcobCxhKSYmIXcoYSl9O2Eub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXt2YXIgaz1hLmVkaXRhYmxlKCksbj1hLmRvY3VtZW50LHc9YS53aW5kb3c7RChsLHtlZGl0YWJsZTprLGluSW5saW5lTW9kZTprLmlzSW5saW5lKCksZG9jOm4sd2luOncsaG90Tm9kZTpudWxsfSwhMCk7bC5ib3VuZGFyeT1sLmluSW5saW5lTW9kZT9sLmVkaXRhYmxlOlxubC5kb2MuZ2V0RG9jdW1lbnRFbGVtZW50KCk7ay5pcyhHLiRpbmxpbmUpfHwobC5pbklubGluZU1vZGUmJiF4KGspJiZrLnNldFN0eWxlcyh7cG9zaXRpb246XCJyZWxhdGl2ZVwiLHRvcDpudWxsLGxlZnQ6bnVsbH0pLG0uY2FsbCh0aGlzLGwpLHYobCksay5hdHRhY2hMaXN0ZW5lcihhLFwiYmVmb3JlVW5kb0ltYWdlXCIsZnVuY3Rpb24oKXtsLmxpbmUuZGV0YWNoKCl9KSxrLmF0dGFjaExpc3RlbmVyKGEsXCJiZWZvcmVHZXREYXRhXCIsZnVuY3Rpb24oKXtsLmxpbmUud3JhcC5nZXRQYXJlbnQoKSYmKGwubGluZS5kZXRhY2goKSxhLm9uY2UoXCJnZXREYXRhXCIsZnVuY3Rpb24oKXtsLmxpbmUuYXR0YWNoKCl9LG51bGwsbnVsbCwxRTMpKX0sbnVsbCxudWxsLDApLGsuYXR0YWNoTGlzdGVuZXIobC5pbklubGluZU1vZGU/bjpuLmdldFdpbmRvdygpLmdldEZyYW1lKCksXCJtb3VzZW91dFwiLGZ1bmN0aW9uKGIpe2lmKFwid3lzaXd5Z1wiPT1hLm1vZGUpaWYobC5pbklubGluZU1vZGUpe3ZhciBkPWIuZGF0YS4kLmNsaWVudFg7XG5iPWIuZGF0YS4kLmNsaWVudFk7dihsKTt0KGwsITApO3ZhciBjPWwudmlldy5lZGl0YWJsZSxlPWwudmlldy5zY3JvbGw7ZD5jLmxlZnQtZS54JiZkPGMucmlnaHQtZS54JiZiPmMudG9wLWUueSYmYjxjLmJvdHRvbS1lLnl8fChjbGVhclRpbWVvdXQoQiksQj1udWxsLGwubGluZS5kZXRhY2goKSl9ZWxzZSBjbGVhclRpbWVvdXQoQiksQj1udWxsLGwubGluZS5kZXRhY2goKX0pLGsuYXR0YWNoTGlzdGVuZXIoayxcImtleXVwXCIsZnVuY3Rpb24oKXtsLmhpZGRlbk1vZGU9MH0pLGsuYXR0YWNoTGlzdGVuZXIoayxcImtleWRvd25cIixmdW5jdGlvbihiKXtpZihcInd5c2l3eWdcIj09YS5tb2RlKXN3aXRjaChiLmRhdGEuZ2V0S2V5c3Ryb2tlKCkpe2Nhc2UgMjIyODI0MDpjYXNlIDE2OmwuaGlkZGVuTW9kZT0xLGwubGluZS5kZXRhY2goKX19KSxrLmF0dGFjaExpc3RlbmVyKGwuaW5JbmxpbmVNb2RlP2s6bixcIm1vdXNlbW92ZVwiLGZ1bmN0aW9uKGIpe3I9ITA7aWYoXCJ3eXNpd3lnXCI9PWEubW9kZSYmXG4hYS5yZWFkT25seSYmIUIpe3ZhciBkPXt4OmIuZGF0YS4kLmNsaWVudFgseTpiLmRhdGEuJC5jbGllbnRZfTtCPXNldFRpbWVvdXQoZnVuY3Rpb24oKXtsLm1vdXNlPWQ7Qj1sLnRyaWdnZXI9bnVsbDt2KGwpO3ImJiFsLmhpZGRlbk1vZGUmJmEuZm9jdXNNYW5hZ2VyLmhhc0ZvY3VzJiYhbC5saW5lLm1vdXNlTmVhcigpJiYobC5lbGVtZW50PVoobCwhMCkpJiYoKGwudHJpZ2dlcj16KGwpfHxxKGwpfHxWKGwpKSYmIXAobCxsLnRyaWdnZXIudXBwZXJ8fGwudHJpZ2dlci5sb3dlcik/bC5saW5lLmF0dGFjaCgpLnBsYWNlKCk6KGwudHJpZ2dlcj1udWxsLGwubGluZS5kZXRhY2goKSkscj0hMSl9LDMwKX19KSxrLmF0dGFjaExpc3RlbmVyKHcsXCJzY3JvbGxcIixmdW5jdGlvbigpe1wid3lzaXd5Z1wiPT1hLm1vZGUmJihsLmxpbmUuZGV0YWNoKCksSi53ZWJraXQmJihsLmhpZGRlbk1vZGU9MSxjbGVhclRpbWVvdXQodSksdT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bC5tb3VzZURvd258fChsLmhpZGRlbk1vZGU9XG4wKX0sNTApKSl9KSxrLmF0dGFjaExpc3RlbmVyKEs/bjp3LFwibW91c2Vkb3duXCIsZnVuY3Rpb24oKXtcInd5c2l3eWdcIj09YS5tb2RlJiYobC5saW5lLmRldGFjaCgpLGwuaGlkZGVuTW9kZT0xLGwubW91c2VEb3duPTEpfSksay5hdHRhY2hMaXN0ZW5lcihLP246dyxcIm1vdXNldXBcIixmdW5jdGlvbigpe2wuaGlkZGVuTW9kZT0wO2wubW91c2VEb3duPTB9KSxhLmFkZENvbW1hbmQoXCJhY2Nlc3NQcmV2aW91c1NwYWNlXCIsaChsKSksYS5hZGRDb21tYW5kKFwiYWNjZXNzTmV4dFNwYWNlXCIsaChsLCEwKSksYS5zZXRLZXlzdHJva2UoW1tiLm1hZ2ljbGluZV9rZXlzdHJva2VQcmV2aW91cyxcImFjY2Vzc1ByZXZpb3VzU3BhY2VcIl0sW2IubWFnaWNsaW5lX2tleXN0cm9rZU5leHQsXCJhY2Nlc3NOZXh0U3BhY2VcIl1dKSxhLm9uKFwibG9hZFNuYXBzaG90XCIsZnVuY3Rpb24oKXt2YXIgYixkLGMsZTtmb3IoZSBpbntwOjEsYnI6MSxkaXY6MX0pZm9yKGI9YS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnKGUpLFxuYz1iLmNvdW50KCk7Yy0tOylpZigoZD1iLmdldEl0ZW0oYykpLmRhdGEoXCJja2UtbWFnaWNsaW5lLWhvdFwiKSl7bC5ob3ROb2RlPWQ7bC5sYXN0Q21kRGlyZWN0aW9uPVwidHJ1ZVwiPT09ZC5kYXRhKFwiY2tlLW1hZ2ljbGluZS1kaXJcIik/ITA6ITE7cmV0dXJufX0pLGEuXy5tYWdpY2xpbmVCYWNrZG9vcj17YWNjZXNzRm9jdXNTcGFjZTpkLGJveFRyaWdnZXI6Zixpc0xpbmU6ZyxnZXRBc2NlbmRhbnRUcmlnZ2VyOmUsZ2V0Tm9uRW1wdHlOZWlnaGJvdXI6YyxnZXRTaXplOkEsdGhhdDpsLHRyaWdnZXJFZGdlOnEsdHJpZ2dlckVkaXRhYmxlOnosdHJpZ2dlckV4cGFuZDpWfSl9LHRoaXMpfX0pO3ZhciBEPUNLRURJVE9SLnRvb2xzLmV4dGVuZCxDPUNLRURJVE9SLmRvbS5lbGVtZW50LEY9Qy5jcmVhdGVGcm9tSHRtbCxKPUNLRURJVE9SLmVudixLPUNLRURJVE9SLmVudi5pZSYmOT5DS0VESVRPUi5lbnYudmVyc2lvbixHPUNLRURJVE9SLmR0ZCxNPXt9LEg9MTI4LEU9NjQsUD0zMixMPTE2LFxuTj00LE89MixYPTEsUz1cIsKgXCIsWT1HLiRsaXN0SXRlbSxlYT1HLiR0YWJsZUNvbnRlbnQsVT1EKHt9LEcuJG5vbkVkaXRhYmxlLEcuJGVtcHR5KSxpYT1HLiRibG9jayxqYT0xMDAsZ2E9XCJ3aWR0aDowcHg7aGVpZ2h0OjBweDtwYWRkaW5nOjBweDttYXJnaW46MHB4O2Rpc3BsYXk6YmxvY2s7ei1pbmRleDo5OTk5O2NvbG9yOiNmZmY7cG9zaXRpb246YWJzb2x1dGU7Zm9udC1zaXplOiAwcHg7bGluZS1oZWlnaHQ6MHB4O1wiLGthPWdhK1wiYm9yZGVyLWNvbG9yOnRyYW5zcGFyZW50O2Rpc3BsYXk6YmxvY2s7Ym9yZGVyLXN0eWxlOnNvbGlkO1wiLFQ9XCJcXHgzY3NwYW5cXHgzZVwiK1MrXCJcXHgzYy9zcGFuXFx4M2VcIjtNW0NLRURJVE9SLkVOVEVSX0JSXT1cImJyXCI7TVtDS0VESVRPUi5FTlRFUl9QXT1cInBcIjtNW0NLRURJVE9SLkVOVEVSX0RJVl09XCJkaXZcIjtmLnByb3RvdHlwZT17c2V0OmZ1bmN0aW9uKGEsYixkKXt0aGlzLnByb3BlcnRpZXM9YStiKyhkfHxYKTtyZXR1cm4gdGhpc30saXM6ZnVuY3Rpb24oYSl7cmV0dXJuKHRoaXMucHJvcGVydGllcyZcbmEpPT1hfX07dmFyIFo9ZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGIsZCl7dmFyIGM9Yi4kLmVsZW1lbnRGcm9tUG9pbnQoZC54LGQueSk7cmV0dXJuIGMmJmMubm9kZVR5cGU/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGMpOm51bGx9cmV0dXJuIGZ1bmN0aW9uKGIsZCxjKXtpZighYi5tb3VzZSlyZXR1cm4gbnVsbDt2YXIgZT1iLmRvYyxmPWIubGluZS53cmFwO2M9Y3x8Yi5tb3VzZTt2YXIgaD1hKGUsYyk7ZCYmZyhiLGgpJiYoZi5oaWRlKCksaD1hKGUsYyksZi5zaG93KCkpO3JldHVybiFofHxoLnR5cGUhPUNLRURJVE9SLk5PREVfRUxFTUVOVHx8IWguJHx8Si5pZSYmOT5KLnZlcnNpb24mJiFiLmJvdW5kYXJ5LmVxdWFscyhoKSYmIWIuYm91bmRhcnkuY29udGFpbnMoaCk/bnVsbDpofX0oKSxhYT1DS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKCksY2E9Q0tFRElUT1IuZG9tLndhbGtlci5ub2RlVHlwZShDS0VESVRPUi5OT0RFX0NPTU1FTlQpLFY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBkKGUpe3ZhciBmPVxuZS5lbGVtZW50LGcsaCxsO2lmKCFuKGYpfHxmLmNvbnRhaW5zKGUuZWRpdGFibGUpfHxmLmlzUmVhZE9ubHkoKSlyZXR1cm4gbnVsbDtsPUIoZSxmdW5jdGlvbihhLGIpe3JldHVybiFiLmVxdWFscyhhKX0sZnVuY3Rpb24oYSxiKXtyZXR1cm4gWihhLCEwLGIpfSxmKTtnPWwudXBwZXI7aD1sLmxvd2VyO2lmKGEoZSxnLGgpKXJldHVybiBsLnNldChQLDgpO2lmKGcmJmYuY29udGFpbnMoZykpZm9yKDshZy5nZXRQYXJlbnQoKS5lcXVhbHMoZik7KWc9Zy5nZXRQYXJlbnQoKTtlbHNlIGc9Zi5nZXRGaXJzdChmdW5jdGlvbihhKXtyZXR1cm4gYyhlLGEpfSk7aWYoaCYmZi5jb250YWlucyhoKSlmb3IoOyFoLmdldFBhcmVudCgpLmVxdWFscyhmKTspaD1oLmdldFBhcmVudCgpO2Vsc2UgaD1mLmdldExhc3QoZnVuY3Rpb24oYSl7cmV0dXJuIGMoZSxhKX0pO2lmKCFnfHwhaClyZXR1cm4gbnVsbDt5KGUsZyk7eShlLGgpO2lmKCFrKGUubW91c2UueSxnLnNpemUudG9wLGguc2l6ZS5ib3R0b20pKXJldHVybiBudWxsO1xuZm9yKHZhciBmPU51bWJlci5NQVhfVkFMVUUsbSxJLHAsdjtoJiYhaC5lcXVhbHMoZykmJihJPWcuZ2V0TmV4dChlLmlzUmVsZXZhbnQpKTspbT1NYXRoLmFicyhiKGUsZyxJKS1lLm1vdXNlLnkpLG08ZiYmKGY9bSxwPWcsdj1JKSxnPUkseShlLGcpO2lmKCFwfHwhdnx8IWsoZS5tb3VzZS55LHAuc2l6ZS50b3Asdi5zaXplLmJvdHRvbSkpcmV0dXJuIG51bGw7bC51cHBlcj1wO2wubG93ZXI9djtyZXR1cm4gbC5zZXQoUCw4KX1mdW5jdGlvbiBjKGEsYil7cmV0dXJuIShiJiZiLnR5cGU9PUNLRURJVE9SLk5PREVfVEVYVHx8Y2EoYil8fHcoYil8fGcoYSxiKXx8Yi50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmIuJCYmYi5pcyhcImJyXCIpKX1yZXR1cm4gZnVuY3Rpb24oYil7dmFyIGM9ZChiKSxlO2lmKGU9Yyl7ZT1jLnVwcGVyO3ZhciBmPWMubG93ZXI7ZT0hZXx8IWZ8fHcoZil8fHcoZSl8fGYuZXF1YWxzKGUpfHxlLmVxdWFscyhmKXx8Zi5jb250YWlucyhlKXx8ZS5jb250YWlucyhmKT9cbiExOnIoYixlKSYmcihiLGYpJiZhKGIsZSxmKT8hMDohMX1yZXR1cm4gZT9jOm51bGx9fSgpLFE9W1widG9wXCIsXCJsZWZ0XCIsXCJyaWdodFwiLFwiYm90dG9tXCJdfSgpLENLRURJVE9SLmNvbmZpZy5tYWdpY2xpbmVfa2V5c3Ryb2tlUHJldmlvdXM9Q0tFRElUT1IuQ1RSTCtDS0VESVRPUi5TSElGVCs1MSxDS0VESVRPUi5jb25maWcubWFnaWNsaW5lX2tleXN0cm9rZU5leHQ9Q0tFRElUT1IuQ1RSTCtDS0VESVRPUi5TSElGVCs1MixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7aWYoIWF8fGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxcImZvcm1cIiE9YS5nZXROYW1lKCkpcmV0dXJuW107Zm9yKHZhciBiPVtdLGM9W1wic3R5bGVcIixcImNsYXNzTmFtZVwiXSxkPTA7ZDxjLmxlbmd0aDtkKyspe3ZhciBlPWEuJC5lbGVtZW50cy5uYW1lZEl0ZW0oY1tkXSk7ZSYmKGU9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGUpLGIucHVzaChbZSxlLm5leHRTaWJsaW5nXSksZS5yZW1vdmUoKSl9cmV0dXJuIGJ9XG5mdW5jdGlvbiBmKGEsYil7aWYoYSYmYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJlwiZm9ybVwiPT1hLmdldE5hbWUoKSYmMDxiLmxlbmd0aClmb3IodmFyIGM9Yi5sZW5ndGgtMTswPD1jO2MtLSl7dmFyIGQ9YltjXVswXSxlPWJbY11bMV07ZT9kLmluc2VydEJlZm9yZShlKTpkLmFwcGVuZFRvKGEpfX1mdW5jdGlvbiBlKGIsYyl7dmFyIGU9YShiKSxkPXt9LGg9Yi4kO2N8fChkW1wiY2xhc3NcIl09aC5jbGFzc05hbWV8fFwiXCIsaC5jbGFzc05hbWU9XCJcIik7ZC5pbmxpbmU9aC5zdHlsZS5jc3NUZXh0fHxcIlwiO2N8fChoLnN0eWxlLmNzc1RleHQ9XCJwb3NpdGlvbjogc3RhdGljOyBvdmVyZmxvdzogdmlzaWJsZVwiKTtmKGUpO3JldHVybiBkfWZ1bmN0aW9uIGIoYixjKXt2YXIgZT1hKGIpLGQ9Yi4kO1wiY2xhc3NcImluIGMmJihkLmNsYXNzTmFtZT1jW1wiY2xhc3NcIl0pO1wiaW5saW5lXCJpbiBjJiYoZC5zdHlsZS5jc3NUZXh0PWMuaW5saW5lKTtmKGUpfWZ1bmN0aW9uIGMoYSl7aWYoIWEuZWRpdGFibGUoKS5pc0lubGluZSgpKXt2YXIgYj1cbkNLRURJVE9SLmluc3RhbmNlcyxjO2ZvcihjIGluIGIpe3ZhciBkPWJbY107XCJ3eXNpd3lnXCIhPWQubW9kZXx8ZC5yZWFkT25seXx8KGQ9ZC5kb2N1bWVudC5nZXRCb2R5KCksZC5zZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIiwhMSksZC5zZXRBdHRyaWJ1dGUoXCJjb250ZW50RWRpdGFibGVcIiwhMCkpfWEuZWRpdGFibGUoKS5oYXNGb2N1cyYmKGEudG9vbGJveC5mb2N1cygpLGEuZm9jdXMoKSl9fUNLRURJVE9SLnBsdWdpbnMuYWRkKFwibWF4aW1pemVcIix7aW5pdDpmdW5jdGlvbihhKXtmdW5jdGlvbiBmKCl7dmFyIGI9aC5nZXRWaWV3UGFuZVNpemUoKTthLnJlc2l6ZShiLndpZHRoLGIuaGVpZ2h0LG51bGwsITApfWlmKGEuZWxlbWVudE1vZGUhPUNLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkUpe3ZhciBtPWEubGFuZyxkPUNLRURJVE9SLmRvY3VtZW50LGg9ZC5nZXRXaW5kb3coKSxnLG4sdyx4PUNLRURJVE9SLlRSSVNUQVRFX09GRjthLmFkZENvbW1hbmQoXCJtYXhpbWl6ZVwiLFxue21vZGVzOnt3eXNpd3lnOiFDS0VESVRPUi5lbnYuaU9TLHNvdXJjZTohQ0tFRElUT1IuZW52LmlPU30scmVhZE9ubHk6MSxlZGl0b3JGb2N1czohMSxleGVjOmZ1bmN0aW9uKCl7dmFyIG09YS5jb250YWluZXIuZ2V0Rmlyc3QoZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmhhc0NsYXNzKFwiY2tlX2lubmVyXCIpfSkscD1hLnVpLnNwYWNlKFwiY29udGVudHNcIik7aWYoXCJ3eXNpd3lnXCI9PWEubW9kZSl7dmFyIHU9YS5nZXRTZWxlY3Rpb24oKTtnPXUmJnUuZ2V0UmFuZ2VzKCk7bj1oLmdldFNjcm9sbFBvc2l0aW9uKCl9ZWxzZXt2YXIgej1hLmVkaXRhYmxlKCkuJDtnPSFDS0VESVRPUi5lbnYuaWUmJlt6LnNlbGVjdGlvblN0YXJ0LHouc2VsZWN0aW9uRW5kXTtuPVt6LnNjcm9sbExlZnQsei5zY3JvbGxUb3BdfWlmKHRoaXMuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX09GRil7aC5vbihcInJlc2l6ZVwiLGYpO3c9aC5nZXRTY3JvbGxQb3NpdGlvbigpO1xuZm9yKHU9YS5jb250YWluZXI7dT11LmdldFBhcmVudCgpOyl1LnNldEN1c3RvbURhdGEoXCJtYXhpbWl6ZV9zYXZlZF9zdHlsZXNcIixlKHUpKSx1LnNldFN0eWxlKFwiei1pbmRleFwiLGEuY29uZmlnLmJhc2VGbG9hdFpJbmRleC01KTtwLnNldEN1c3RvbURhdGEoXCJtYXhpbWl6ZV9zYXZlZF9zdHlsZXNcIixlKHAsITApKTttLnNldEN1c3RvbURhdGEoXCJtYXhpbWl6ZV9zYXZlZF9zdHlsZXNcIixlKG0sITApKTtwPXtvdmVyZmxvdzpDS0VESVRPUi5lbnYud2Via2l0P1wiXCI6XCJoaWRkZW5cIix3aWR0aDowLGhlaWdodDowfTtkLmdldERvY3VtZW50RWxlbWVudCgpLnNldFN0eWxlcyhwKTshQ0tFRElUT1IuZW52LmdlY2tvJiZkLmdldERvY3VtZW50RWxlbWVudCgpLnNldFN0eWxlKFwicG9zaXRpb25cIixcImZpeGVkXCIpO0NLRURJVE9SLmVudi5nZWNrbyYmQ0tFRElUT1IuZW52LnF1aXJrc3x8ZC5nZXRCb2R5KCkuc2V0U3R5bGVzKHApO0NLRURJVE9SLmVudi5pZT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC4kLnNjcm9sbFRvKDAsXG4wKX0sMCk6aC4kLnNjcm9sbFRvKDAsMCk7bS5zZXRTdHlsZShcInBvc2l0aW9uXCIsQ0tFRElUT1IuZW52LmdlY2tvJiZDS0VESVRPUi5lbnYucXVpcmtzP1wiZml4ZWRcIjpcImFic29sdXRlXCIpO20uJC5vZmZzZXRMZWZ0O20uc2V0U3R5bGVzKHtcInotaW5kZXhcIjphLmNvbmZpZy5iYXNlRmxvYXRaSW5kZXgtNSxsZWZ0OlwiMHB4XCIsdG9wOlwiMHB4XCJ9KTttLmFkZENsYXNzKFwiY2tlX21heGltaXplZFwiKTtmKCk7cD1tLmdldERvY3VtZW50UG9zaXRpb24oKTttLnNldFN0eWxlcyh7bGVmdDotMSpwLngrXCJweFwiLHRvcDotMSpwLnkrXCJweFwifSk7Q0tFRElUT1IuZW52LmdlY2tvJiZjKGEpfWVsc2UgaWYodGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfT04pe2gucmVtb3ZlTGlzdGVuZXIoXCJyZXNpemVcIixmKTtmb3IodmFyIHU9W3AsbV0scT0wO3E8dS5sZW5ndGg7cSsrKWIodVtxXSx1W3FdLmdldEN1c3RvbURhdGEoXCJtYXhpbWl6ZV9zYXZlZF9zdHlsZXNcIikpLHVbcV0ucmVtb3ZlQ3VzdG9tRGF0YShcIm1heGltaXplX3NhdmVkX3N0eWxlc1wiKTtcbmZvcih1PWEuY29udGFpbmVyO3U9dS5nZXRQYXJlbnQoKTspYih1LHUuZ2V0Q3VzdG9tRGF0YShcIm1heGltaXplX3NhdmVkX3N0eWxlc1wiKSksdS5yZW1vdmVDdXN0b21EYXRhKFwibWF4aW1pemVfc2F2ZWRfc3R5bGVzXCIpO0NLRURJVE9SLmVudi5pZT9zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7aC4kLnNjcm9sbFRvKHcueCx3LnkpfSwwKTpoLiQuc2Nyb2xsVG8ody54LHcueSk7bS5yZW1vdmVDbGFzcyhcImNrZV9tYXhpbWl6ZWRcIik7Q0tFRElUT1IuZW52LndlYmtpdCYmKG0uc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJpbmxpbmVcIiksc2V0VGltZW91dChmdW5jdGlvbigpe20uc2V0U3R5bGUoXCJkaXNwbGF5XCIsXCJibG9ja1wiKX0sMCkpO2EuZmlyZShcInJlc2l6ZVwiLHtvdXRlckhlaWdodDphLmNvbnRhaW5lci4kLm9mZnNldEhlaWdodCxjb250ZW50c0hlaWdodDpwLiQub2Zmc2V0SGVpZ2h0LG91dGVyV2lkdGg6YS5jb250YWluZXIuJC5vZmZzZXRXaWR0aH0pfXRoaXMudG9nZ2xlU3RhdGUoKTtcInd5c2l3eWdcIj09XG5hLm1vZGU/Zz8oQ0tFRElUT1IuZW52LmdlY2tvJiZjKGEpLGEuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKGcpLCh6PWEuZ2V0U2VsZWN0aW9uKCkuZ2V0U3RhcnRFbGVtZW50KCkpJiZ6LnNjcm9sbEludG9WaWV3KCEwKSk6aC4kLnNjcm9sbFRvKG4ueCxuLnkpOihnJiYoei5zZWxlY3Rpb25TdGFydD1nWzBdLHouc2VsZWN0aW9uRW5kPWdbMV0pLHouc2Nyb2xsTGVmdD1uWzBdLHouc2Nyb2xsVG9wPW5bMV0pO2c9bj1udWxsO3g9dGhpcy5zdGF0ZTthLmZpcmUoXCJtYXhpbWl6ZVwiLHRoaXMuc3RhdGUpfSxjYW5VbmRvOiExfSk7YS51aS5hZGRCdXR0b24mJmEudWkuYWRkQnV0dG9uKFwiTWF4aW1pemVcIix7aXNUb2dnbGU6ITAsbGFiZWw6bS5tYXhpbWl6ZS5tYXhpbWl6ZSxjb21tYW5kOlwibWF4aW1pemVcIix0b29sYmFyOlwidG9vbHMsMTBcIn0pO2Eub24oXCJtb2RlXCIsZnVuY3Rpb24oKXt2YXIgYj1hLmdldENvbW1hbmQoXCJtYXhpbWl6ZVwiKTtiLnNldFN0YXRlKGIuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEP1xuQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQ6eCl9LG51bGwsbnVsbCwxMDApO2lmKGEuY29uZmlnLm1heGltaXplX2hpc3RvcnlJbnRlZ3JhdGlvbiloLm9uKGEuY29uZmlnLm1heGltaXplX2hpc3RvcnlJbnRlZ3JhdGlvbj09PUNLRURJVE9SLkhJU1RPUllfTkFUSVZFP1wicG9wc3RhdGVcIjpcImhhc2hjaGFuZ2VcIixmdW5jdGlvbigpe3ZhciBiPWEuZ2V0Q29tbWFuZChcIm1heGltaXplXCIpO2Iuc3RhdGU9PT1DS0VESVRPUi5UUklTVEFURV9PTiYmYi5leGVjKCl9KX19fSk7Q0tFRElUT1IuY29uZmlnLm1heGltaXplX2hpc3RvcnlJbnRlZ3JhdGlvbj1DS0VESVRPUi5ISVNUT1JZX05BVElWRX0oKSxmdW5jdGlvbigpe0NLRURJVE9SLnBsdWdpbnMuYWRkKFwieG1sXCIse30pO0NLRURJVE9SLnhtbD1mdW5jdGlvbihhKXt2YXIgZj1udWxsO2lmKFwib2JqZWN0XCI9PXR5cGVvZiBhKWY9YTtlbHNlIGlmKGE9KGF8fFwiXCIpLnJlcGxhY2UoLyZuYnNwOy9nLFwiwqBcIiksXCJBY3RpdmVYT2JqZWN0XCJpbiB3aW5kb3cpe3RyeXtmPVxubmV3IEFjdGl2ZVhPYmplY3QoXCJNU1hNTDIuRE9NRG9jdW1lbnRcIil9Y2F0Y2goZSl7dHJ5e2Y9bmV3IEFjdGl2ZVhPYmplY3QoXCJNaWNyb3NvZnQuWG1sRG9tXCIpfWNhdGNoKGIpe319ZiYmKGYuYXN5bmM9ITEsZi5yZXNvbHZlRXh0ZXJuYWxzPSExLGYudmFsaWRhdGVPblBhcnNlPSExLGYubG9hZFhNTChhKSl9ZWxzZSB3aW5kb3cuRE9NUGFyc2VyJiYoZj0obmV3IERPTVBhcnNlcikucGFyc2VGcm9tU3RyaW5nKGEsXCJ0ZXh0L3htbFwiKSk7dGhpcy5iYXNlWG1sPWZ9O0NLRURJVE9SLnhtbC5wcm90b3R5cGU9e3NlbGVjdFNpbmdsZU5vZGU6ZnVuY3Rpb24oYSxmKXt2YXIgZT10aGlzLmJhc2VYbWw7aWYoZnx8KGY9ZSkpe2lmKFwic2VsZWN0U2luZ2xlTm9kZVwiaW4gZilyZXR1cm4gZi5zZWxlY3RTaW5nbGVOb2RlKGEpO2lmKGUuZXZhbHVhdGUpcmV0dXJuKGU9ZS5ldmFsdWF0ZShhLGYsbnVsbCw5LG51bGwpKSYmZS5zaW5nbGVOb2RlVmFsdWV8fG51bGx9cmV0dXJuIG51bGx9LHNlbGVjdE5vZGVzOmZ1bmN0aW9uKGEsXG5mKXt2YXIgZT10aGlzLmJhc2VYbWwsYj1bXTtpZihmfHwoZj1lKSl7aWYoXCJzZWxlY3ROb2Rlc1wiaW4gZilyZXR1cm4gZi5zZWxlY3ROb2RlcyhhKTtpZihlLmV2YWx1YXRlJiYoZT1lLmV2YWx1YXRlKGEsZixudWxsLDUsbnVsbCkpKWZvcih2YXIgYztjPWUuaXRlcmF0ZU5leHQoKTspYi5wdXNoKGMpfXJldHVybiBifSxnZXRJbm5lclhtbDpmdW5jdGlvbihhLGYpe3ZhciBlPXRoaXMuc2VsZWN0U2luZ2xlTm9kZShhLGYpLGI9W107aWYoZSlmb3IoZT1lLmZpcnN0Q2hpbGQ7ZTspZS54bWw/Yi5wdXNoKGUueG1sKTp3aW5kb3cuWE1MU2VyaWFsaXplciYmYi5wdXNoKChuZXcgWE1MU2VyaWFsaXplcikuc2VyaWFsaXplVG9TdHJpbmcoZSkpLGU9ZS5uZXh0U2libGluZztyZXR1cm4gYi5sZW5ndGg/Yi5qb2luKFwiXCIpOm51bGx9fX0oKSxmdW5jdGlvbigpe0NLRURJVE9SLnBsdWdpbnMuYWRkKFwiYWpheFwiLHtyZXF1aXJlczpcInhtbFwifSk7Q0tFRElUT1IuYWpheD1mdW5jdGlvbigpe2Z1bmN0aW9uIGEoKXtpZighQ0tFRElUT1IuZW52LmllfHxcblwiZmlsZTpcIiE9bG9jYXRpb24ucHJvdG9jb2wpdHJ5e3JldHVybiBuZXcgWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYSl7fXRyeXtyZXR1cm4gbmV3IEFjdGl2ZVhPYmplY3QoXCJNc3htbDIuWE1MSFRUUFwiKX1jYXRjaChiKXt9dHJ5e3JldHVybiBuZXcgQWN0aXZlWE9iamVjdChcIk1pY3Jvc29mdC5YTUxIVFRQXCIpfWNhdGNoKGUpe31yZXR1cm4gbnVsbH1mdW5jdGlvbiBmKGEsYil7aWYoNCE9YS5yZWFkeVN0YXRlfHwhKDIwMDw9YS5zdGF0dXMmJjMwMD5hLnN0YXR1c3x8MzA0PT1hLnN0YXR1c3x8MD09PWEuc3RhdHVzfHwxMjIzPT1hLnN0YXR1cykpcmV0dXJuIG51bGw7c3dpdGNoKGIpe2Nhc2UgXCJ0ZXh0XCI6cmV0dXJuIGEucmVzcG9uc2VUZXh0O2Nhc2UgXCJ4bWxcIjp2YXIgZT1hLnJlc3BvbnNlWE1MO3JldHVybiBuZXcgQ0tFRElUT1IueG1sKGUmJmUuZmlyc3RDaGlsZD9lOmEucmVzcG9uc2VUZXh0KTtjYXNlIFwiYXJyYXlidWZmZXJcIjpyZXR1cm4gYS5yZXNwb25zZTtkZWZhdWx0OnJldHVybiBudWxsfX1cbmZ1bmN0aW9uIGUoYixlLGwpe3ZhciBtPSEhZSxkPWEoKTtpZighZClyZXR1cm4gbnVsbDttJiZcInRleHRcIiE9PWwmJlwieG1sXCIhPT1sJiYoZC5yZXNwb25zZVR5cGU9bCk7ZC5vcGVuKFwiR0VUXCIsYixtKTttJiYoZC5vbnJlYWR5c3RhdGVjaGFuZ2U9ZnVuY3Rpb24oKXs0PT1kLnJlYWR5U3RhdGUmJihlKGYoZCxsKSksZD1udWxsKX0pO2Quc2VuZChudWxsKTtyZXR1cm4gbT9cIlwiOmYoZCxsKX1mdW5jdGlvbiBiKGIsZSxsLG0sZCl7dmFyIGg9YSgpO2lmKCFoKXJldHVybiBudWxsO2gub3BlbihcIlBPU1RcIixiLCEwKTtoLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbigpezQ9PWgucmVhZHlTdGF0ZSYmKG0mJm0oZihoLGQpKSxoPW51bGwpfTtoLnNldFJlcXVlc3RIZWFkZXIoXCJDb250ZW50LXR5cGVcIixsfHxcImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZDsgY2hhcnNldFxceDNkVVRGLThcIik7aC5zZW5kKGUpfXJldHVybntsb2FkOmZ1bmN0aW9uKGEsYixmKXtyZXR1cm4gZShhLFxuYixmfHxcInRleHRcIil9LHBvc3Q6ZnVuY3Rpb24oYSxlLGYsbSl7cmV0dXJuIGIoYSxlLGYsbSxcInRleHRcIil9LGxvYWRYbWw6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gZShhLGIsXCJ4bWxcIil9LGxvYWRUZXh0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUoYSxiLFwidGV4dFwiKX0sbG9hZEJpbmFyeTpmdW5jdGlvbihhLGIpe3JldHVybiBlKGEsYixcImFycmF5YnVmZmVyXCIpfX19KCl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7cmV0dXJuIENLRURJVE9SLnRvb2xzLmFycmF5LmZpbHRlcihhLGZ1bmN0aW9uKGEpe3JldHVybiBhLmNhbkhhbmRsZShiKX0pLnNvcnQoZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5wcmlvcml0eT09PWIucHJpb3JpdHk/MDphLnByaW9yaXR5LWIucHJpb3JpdHl9KX1mdW5jdGlvbiBmKGEsYil7dmFyIGQ9YS5zaGlmdCgpO2QmJmQuaGFuZGxlKGIsZnVuY3Rpb24oKXtmKGEsYil9KX1mdW5jdGlvbiBlKGEpe3ZhciBiPUNLRURJVE9SLnRvb2xzLmFycmF5LnJlZHVjZShhLFxuZnVuY3Rpb24oYSxiKXtyZXR1cm4gQ0tFRElUT1IudG9vbHMuYXJyYXkuaXNBcnJheShiLmZpbHRlcnMpP2EuY29uY2F0KGIuZmlsdGVycyk6YX0sW10pO3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoYixmdW5jdGlvbihhLGMpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5pbmRleE9mKGIsYSk9PT1jfSl9ZnVuY3Rpb24gYihhLGIpe3ZhciBkPTAsZSxmO2lmKCFDS0VESVRPUi50b29scy5hcnJheS5pc0FycmF5KGEpfHwwPT09YS5sZW5ndGgpcmV0dXJuITA7ZT1DS0VESVRPUi50b29scy5hcnJheS5maWx0ZXIoYSxmdW5jdGlvbihhKXtyZXR1cm4tMT09PUNLRURJVE9SLnRvb2xzLmFycmF5LmluZGV4T2YoYyxhKX0pO2lmKDA8ZS5sZW5ndGgpZm9yKGY9MDtmPGUubGVuZ3RoO2YrKykoZnVuY3Rpb24oYSl7Q0tFRElUT1Iuc2NyaXB0TG9hZGVyLnF1ZXVlKGEsZnVuY3Rpb24oZil7ZiYmYy5wdXNoKGEpOysrZD09PWUubGVuZ3RoJiZiKCl9KX0pKGVbZl0pO3JldHVybiAwPT09XG5lLmxlbmd0aH12YXIgYz1bXSxrPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKCl7dGhpcy5oYW5kbGVycz1bXX0scHJvdG86e3JlZ2lzdGVyOmZ1bmN0aW9uKGEpe1wibnVtYmVyXCIhPT10eXBlb2YgYS5wcmlvcml0eSYmKGEucHJpb3JpdHk9MTApO3RoaXMuaGFuZGxlcnMucHVzaChhKX0sYWRkUGFzdGVMaXN0ZW5lcjpmdW5jdGlvbihjKXtjLm9uKFwicGFzdGVcIixmdW5jdGlvbihrKXt2YXIgZD1hKHRoaXMuaGFuZGxlcnMsayksaDtpZigwIT09ZC5sZW5ndGgpe2g9ZShkKTtoPWIoaCxmdW5jdGlvbigpe3JldHVybiBjLmZpcmUoXCJwYXN0ZVwiLGsuZGF0YSl9KTtpZighaClyZXR1cm4gay5jYW5jZWwoKTtmKGQsayl9fSx0aGlzLG51bGwsMyl9fX0pO0NLRURJVE9SLnBsdWdpbnMuYWRkKFwicGFzdGV0b29sc1wiLHtyZXF1aXJlczpbXCJjbGlwYm9hcmRcIixcImFqYXhcIl0sYmVmb3JlSW5pdDpmdW5jdGlvbihhKXthLnBhc3RlVG9vbHM9bmV3IGs7YS5wYXN0ZVRvb2xzLmFkZFBhc3RlTGlzdGVuZXIoYSl9fSk7XG5DS0VESVRPUi5wbHVnaW5zLnBhc3RldG9vbHM9e2ZpbHRlcnM6e30sbG9hZEZpbHRlcnM6YixjcmVhdGVGaWx0ZXI6ZnVuY3Rpb24oYSl7dmFyIGI9Q0tFRElUT1IudG9vbHMuYXJyYXkuaXNBcnJheShhLnJ1bGVzKT9hLnJ1bGVzOlthLnJ1bGVzXSxkPWEuYWRkaXRpb25hbFRyYW5zZm9ybXM7cmV0dXJuIGZ1bmN0aW9uKGEsYyl7dmFyIGU9bmV3IENLRURJVE9SLmh0bWxQYXJzZXIuYmFzaWNXcml0ZXIsZj1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci5maWx0ZXIsaztkJiYoYT1kKGEsYykpO0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goYixmdW5jdGlvbihiKXtmLmFkZFJ1bGVzKGIoYSxjLGYpKX0pO2s9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChhKTtmLmFwcGx5VG8oayk7ay53cml0ZUh0bWwoZSk7cmV0dXJuIGUuZ2V0SHRtbCgpfX0sZ2V0Q2xpcGJvYXJkRGF0YTpmdW5jdGlvbihhLGIpe3ZhciBkO3JldHVybiBDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZC5pc0N1c3RvbURhdGFUeXBlc1N1cHBvcnRlZHx8XG5cInRleHQvaHRtbFwiPT09Yj8oZD1hLmRhdGFUcmFuc2Zlci5nZXREYXRhKGIsITApKXx8XCJ0ZXh0L2h0bWxcIiE9PWI/ZDphLmRhdGFWYWx1ZTpudWxsfSxnZXRDb25maWdWYWx1ZTpmdW5jdGlvbihhLGIpe2lmKGEmJmEuY29uZmlnKXt2YXIgZD1DS0VESVRPUi50b29scyxjPWEuY29uZmlnLGU9ZC5vYmplY3Qua2V5cyhjKSxmPVtcInBhc3RlVG9vbHNfXCIrYixcInBhc3RlRnJvbVdvcmRfXCIrYixcInBhc3RlRnJvbVdvcmRcIitkLmNhcGl0YWxpemUoYiwhMCldLGY9ZC5hcnJheS5maW5kKGYsZnVuY3Rpb24oYSl7cmV0dXJuLTEhPT1kLmFycmF5LmluZGV4T2YoZSxhKX0pO3JldHVybiBjW2ZdfX0sZ2V0Q29udGVudEdlbmVyYXRvck5hbWU6ZnVuY3Rpb24oYSl7aWYoKGE9LzxtZXRhXFxzK25hbWU9W1wiJ10/Z2VuZXJhdG9yW1wiJ10/XFxzK2NvbnRlbnQ9W1wiJ10/KFxcdyspL2dpLmV4ZWMoYSkpJiZhLmxlbmd0aClyZXR1cm4gYT1hWzFdLnRvTG93ZXJDYXNlKCksMD09PWEuaW5kZXhPZihcIm1pY3Jvc29mdFwiKT9cblwibWljcm9zb2Z0XCI6MD09PWEuaW5kZXhPZihcImxpYnJlb2ZmaWNlXCIpP1wibGlicmVvZmZpY2VcIjpcInVua25vd25cIn19O0NLRURJVE9SLnBhc3RlRmlsdGVycz1DS0VESVRPUi5wbHVnaW5zLnBhc3RldG9vbHMuZmlsdGVyc30oKSxmdW5jdGlvbigpe0NLRURJVE9SLnBsdWdpbnMuYWRkKFwicGFzdGVmcm9tZ2RvY3NcIix7cmVxdWlyZXM6XCJwYXN0ZXRvb2xzXCIsaW5pdDpmdW5jdGlvbihhKXt2YXIgZj1DS0VESVRPUi5wbHVnaW5zLmdldFBhdGgoXCJwYXN0ZXRvb2xzXCIpLGU9dGhpcy5wYXRoO2EucGFzdGVUb29scy5yZWdpc3Rlcih7ZmlsdGVyczpbQ0tFRElUT1IuZ2V0VXJsKGYrXCJmaWx0ZXIvY29tbW9uLmpzXCIpLENLRURJVE9SLmdldFVybChlK1wiZmlsdGVyL2RlZmF1bHQuanNcIildLGNhbkhhbmRsZTpmdW5jdGlvbihhKXtyZXR1cm4vaWQ9KFxcXCJ8XFwnKT9kb2NzXFwtaW50ZXJuYWxcXC1ndWlkXFwtLy50ZXN0KGEuZGF0YS5kYXRhVmFsdWUpfSxoYW5kbGU6ZnVuY3Rpb24oYixjKXt2YXIgZT1iLmRhdGEsXG5mPUNLRURJVE9SLnBsdWdpbnMucGFzdGV0b29scy5nZXRDbGlwYm9hcmREYXRhKGUsXCJ0ZXh0L2h0bWxcIik7ZS5kb250RmlsdGVyPSEwO2UuZGF0YVZhbHVlPUNLRURJVE9SLnBhc3RlRmlsdGVycy5nZG9jcyhmLGEpOyEwPT09YS5jb25maWcuZm9yY2VQYXN0ZUFzUGxhaW5UZXh0JiYoZS50eXBlPVwidGV4dFwiKTtjKCl9fSl9fSl9KCksZnVuY3Rpb24oKXtDS0VESVRPUi5wbHVnaW5zLmFkZChcInBhc3RlZnJvbWxpYnJlb2ZmaWNlXCIse3JlcXVpcmVzOlwicGFzdGV0b29sc1wiLGlzU3VwcG9ydGVkRW52aXJvbm1lbnQ6ZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi5lbnYuaWUmJjExPj1DS0VESVRPUi5lbnYudmVyc2lvbjtyZXR1cm4hKENLRURJVE9SLmVudi53ZWJraXQmJiFDS0VESVRPUi5lbnYuY2hyb21lKSYmIWF9LGluaXQ6ZnVuY3Rpb24oYSl7aWYodGhpcy5pc1N1cHBvcnRlZEVudmlyb25tZW50KCkpe3ZhciBmPUNLRURJVE9SLnBsdWdpbnMuZ2V0UGF0aChcInBhc3RldG9vbHNcIiksXG5lPXRoaXMucGF0aDthLnBhc3RlVG9vbHMucmVnaXN0ZXIoe3ByaW9yaXR5OjEwMCxmaWx0ZXJzOltDS0VESVRPUi5nZXRVcmwoZitcImZpbHRlci9jb21tb24uanNcIiksQ0tFRElUT1IuZ2V0VXJsKGYrXCJmaWx0ZXIvaW1hZ2UuanNcIiksQ0tFRElUT1IuZ2V0VXJsKGUrXCJmaWx0ZXIvZGVmYXVsdC5qc1wiKV0sY2FuSGFuZGxlOmZ1bmN0aW9uKGEpe2E9YS5kYXRhO3JldHVybihhPWEuZGF0YVRyYW5zZmVyLmdldERhdGEoXCJ0ZXh0L2h0bWxcIiwhMCl8fGEuZGF0YVZhbHVlKT9cImxpYnJlb2ZmaWNlXCI9PT1DS0VESVRPUi5wbHVnaW5zLnBhc3RldG9vbHMuZ2V0Q29udGVudEdlbmVyYXRvck5hbWUoYSk6ITF9LGhhbmRsZTpmdW5jdGlvbihiLGMpe3ZhciBlPWIuZGF0YSxmPWUuZGF0YVZhbHVlfHxDS0VESVRPUi5wbHVnaW5zLnBhc3RldG9vbHMuZ2V0Q2xpcGJvYXJkRGF0YShlLFwidGV4dC9odG1sXCIpO2UuZG9udEZpbHRlcj0hMDtmPUNLRURJVE9SLnBhc3RlRmlsdGVycy5pbWFnZShmLGEsQ0tFRElUT1IucGx1Z2lucy5wYXN0ZXRvb2xzLmdldENsaXBib2FyZERhdGEoZSxcblwidGV4dC9ydGZcIikpO2UuZGF0YVZhbHVlPUNLRURJVE9SLnBhc3RlRmlsdGVycy5saWJyZW9mZmljZShmLGEpOyEwPT09YS5jb25maWcuZm9yY2VQYXN0ZUFzUGxhaW5UZXh0JiYoZS50eXBlPVwidGV4dFwiKTtjKCl9fSl9fX0pfSgpLGZ1bmN0aW9uKCl7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJwYXN0ZWZyb213b3JkXCIse3JlcXVpcmVzOlwicGFzdGV0b29sc1wiLGluaXQ6ZnVuY3Rpb24oYSl7dmFyIGY9MCxlPUNLRURJVE9SLnBsdWdpbnMuZ2V0UGF0aChcInBhc3RldG9vbHNcIiksYj10aGlzLnBhdGgsYz12b2lkIDA9PT1hLmNvbmZpZy5wYXN0ZUZyb21Xb3JkX2lubGluZUltYWdlcz8hMDphLmNvbmZpZy5wYXN0ZUZyb21Xb3JkX2lubGluZUltYWdlcyxlPVtDS0VESVRPUi5nZXRVcmwoZStcImZpbHRlci9jb21tb24uanNcIiksQ0tFRElUT1IuZ2V0VXJsKGUrXCJmaWx0ZXIvaW1hZ2UuanNcIiksQ0tFRElUT1IuZ2V0VXJsKGIrXCJmaWx0ZXIvZGVmYXVsdC5qc1wiKV07YS5hZGRDb21tYW5kKFwicGFzdGVmcm9td29yZFwiLFxue2NhblVuZG86ITEsYXN5bmM6ITAsZXhlYzpmdW5jdGlvbihhLGIpe2Y9MTthLmV4ZWNDb21tYW5kKFwicGFzdGVcIix7dHlwZTpcImh0bWxcIixub3RpZmljYXRpb246YiYmXCJ1bmRlZmluZWRcIiE9PXR5cGVvZiBiLm5vdGlmaWNhdGlvbj9iLm5vdGlmaWNhdGlvbjohMH0pfX0pO0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmFkZFBhc3RlQnV0dG9uKGEsXCJQYXN0ZUZyb21Xb3JkXCIse2xhYmVsOmEubGFuZy5wYXN0ZWZyb213b3JkLnRvb2xiYXIsY29tbWFuZDpcInBhc3RlZnJvbXdvcmRcIix0b29sYmFyOlwiY2xpcGJvYXJkLDUwXCJ9KTthLnBhc3RlVG9vbHMucmVnaXN0ZXIoe2ZpbHRlcnM6YS5jb25maWcucGFzdGVGcm9tV29yZENsZWFudXBGaWxlP1thLmNvbmZpZy5wYXN0ZUZyb21Xb3JkQ2xlYW51cEZpbGVdOmUsY2FuSGFuZGxlOmZ1bmN0aW9uKGEpe2E9Q0tFRElUT1IucGx1Z2lucy5wYXN0ZXRvb2xzLmdldENsaXBib2FyZERhdGEoYS5kYXRhLFwidGV4dC9odG1sXCIpO3ZhciBiPUNLRURJVE9SLnBsdWdpbnMucGFzdGV0b29scy5nZXRDb250ZW50R2VuZXJhdG9yTmFtZShhKSxcbmM9LyhjbGFzcz1cIj9Nc298c3R5bGU9W1wiJ11bXlwiXSo/XFxibXNvXFwtfHc6V29yZERvY3VtZW50fDxvOlxcdys+fDxcXC9mb250PikvLGI9Yj9cIm1pY3Jvc29mdFwiPT09YjpjLnRlc3QoYSk7cmV0dXJuIGEmJihmfHxiKX0saGFuZGxlOmZ1bmN0aW9uKGIsZSl7dmFyIG09Yi5kYXRhLGQ9Q0tFRElUT1IucGx1Z2lucy5wYXN0ZXRvb2xzLmdldENsaXBib2FyZERhdGEobSxcInRleHQvaHRtbFwiKSxoPUNLRURJVE9SLnBsdWdpbnMucGFzdGV0b29scy5nZXRDbGlwYm9hcmREYXRhKG0sXCJ0ZXh0L3J0ZlwiKSxkPXtkYXRhVmFsdWU6ZCxkYXRhVHJhbnNmZXI6e1widGV4dC9ydGZcIjpofX07aWYoITEhPT1hLmZpcmUoXCJwYXN0ZUZyb21Xb3JkXCIsZCl8fGYpe20uZG9udEZpbHRlcj0hMDtpZihmfHwhYS5jb25maWcucGFzdGVGcm9tV29yZFByb21wdENsZWFudXB8fGNvbmZpcm0oYS5sYW5nLnBhc3RlZnJvbXdvcmQuY29uZmlybUNsZWFudXApKWQuZGF0YVZhbHVlPUNLRURJVE9SLmNsZWFuV29yZChkLmRhdGFWYWx1ZSxcbmEpLENLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzQ3VzdG9tRGF0YVR5cGVzU3VwcG9ydGVkJiZjJiZDS0VESVRPUi5wYXN0ZUZpbHRlcnMuaW1hZ2UmJihkLmRhdGFWYWx1ZT1DS0VESVRPUi5wYXN0ZUZpbHRlcnMuaW1hZ2UoZC5kYXRhVmFsdWUsYSxoKSksYS5maXJlKFwiYWZ0ZXJQYXN0ZUZyb21Xb3JkXCIsZCksbS5kYXRhVmFsdWU9ZC5kYXRhVmFsdWUsITA9PT1hLmNvbmZpZy5mb3JjZVBhc3RlQXNQbGFpblRleHQ/bS50eXBlPVwidGV4dFwiOkNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzQ3VzdG9tQ29weUN1dFN1cHBvcnRlZHx8XCJhbGxvdy13b3JkXCIhPT1hLmNvbmZpZy5mb3JjZVBhc3RlQXNQbGFpblRleHR8fChtLnR5cGU9XCJodG1sXCIpO2Y9MDtlKCl9fX0pfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIGE9e2NhblVuZG86ITEsYXN5bmM6ITAsZXhlYzpmdW5jdGlvbihhLGUpe3ZhciBiPWEubGFuZyxjPUNLRURJVE9SLnRvb2xzLmtleXN0cm9rZVRvU3RyaW5nKGIuY29tbW9uLmtleWJvYXJkLFxuYS5nZXRDb21tYW5kS2V5c3Ryb2tlKENLRURJVE9SLmVudi5pZT9hLmNvbW1hbmRzLnBhc3RlOnRoaXMpKSxrPWUmJlwidW5kZWZpbmVkXCIhPT10eXBlb2YgZS5ub3RpZmljYXRpb24/ZS5ub3RpZmljYXRpb246IWV8fCFlLmZyb218fFwia2V5c3Ryb2tlSGFuZGxlclwiPT09ZS5mcm9tJiZDS0VESVRPUi5lbnYuaWUsYj1rJiZcInN0cmluZ1wiPT09dHlwZW9mIGs/azpiLnBhc3RldGV4dC5wYXN0ZU5vdGlmaWNhdGlvbi5yZXBsYWNlKC8lMS8sJ1xceDNja2JkIGFyaWEtbGFiZWxcXHgzZFwiJytjLmFyaWErJ1wiXFx4M2UnK2MuZGlzcGxheStcIlxceDNjL2tiZFxceDNlXCIpO2EuZXhlY0NvbW1hbmQoXCJwYXN0ZVwiLHt0eXBlOlwidGV4dFwiLG5vdGlmaWNhdGlvbjprP2I6ITF9KX19O0NLRURJVE9SLnBsdWdpbnMuYWRkKFwicGFzdGV0ZXh0XCIse3JlcXVpcmVzOlwiY2xpcGJvYXJkXCIsaW5pdDpmdW5jdGlvbihmKXt2YXIgZT1DS0VESVRPUi5lbnYuc2FmYXJpP0NLRURJVE9SLkNUUkwrQ0tFRElUT1IuQUxUK0NLRURJVE9SLlNISUZUK1xuODY6Q0tFRElUT1IuQ1RSTCtDS0VESVRPUi5TSElGVCs4NjtmLmFkZENvbW1hbmQoXCJwYXN0ZXRleHRcIixhKTtmLnNldEtleXN0cm9rZShlLFwicGFzdGV0ZXh0XCIpO0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmFkZFBhc3RlQnV0dG9uKGYsXCJQYXN0ZVRleHRcIix7bGFiZWw6Zi5sYW5nLnBhc3RldGV4dC5idXR0b24sY29tbWFuZDpcInBhc3RldGV4dFwiLHRvb2xiYXI6XCJjbGlwYm9hcmQsNDBcIn0pO2lmKGYuY29uZmlnLmZvcmNlUGFzdGVBc1BsYWluVGV4dClmLm9uKFwiYmVmb3JlUGFzdGVcIixmdW5jdGlvbihhKXtcImh0bWxcIiE9YS5kYXRhLnR5cGUmJihhLmRhdGEudHlwZT1cInRleHRcIil9KTtmLm9uKFwicGFzdGVTdGF0ZVwiLGZ1bmN0aW9uKGEpe2YuZ2V0Q29tbWFuZChcInBhc3RldGV4dFwiKS5zZXRTdGF0ZShhLmRhdGEpfSl9fSl9KCksQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJyZW1vdmVmb3JtYXRcIix7aW5pdDpmdW5jdGlvbihhKXthLmFkZENvbW1hbmQoXCJyZW1vdmVGb3JtYXRcIixDS0VESVRPUi5wbHVnaW5zLnJlbW92ZWZvcm1hdC5jb21tYW5kcy5yZW1vdmVmb3JtYXQpO1xuYS51aS5hZGRCdXR0b24mJmEudWkuYWRkQnV0dG9uKFwiUmVtb3ZlRm9ybWF0XCIse2xhYmVsOmEubGFuZy5yZW1vdmVmb3JtYXQudG9vbGJhcixjb21tYW5kOlwicmVtb3ZlRm9ybWF0XCIsdG9vbGJhcjpcImNsZWFudXAsMTBcIn0pfX0pLENLRURJVE9SLnBsdWdpbnMucmVtb3ZlZm9ybWF0PXtjb21tYW5kczp7cmVtb3ZlZm9ybWF0OntleGVjOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZj1hLl8ucmVtb3ZlRm9ybWF0UmVnZXh8fChhLl8ucmVtb3ZlRm9ybWF0UmVnZXg9bmV3IFJlZ0V4cChcIl4oPzpcIithLmNvbmZpZy5yZW1vdmVGb3JtYXRUYWdzLnJlcGxhY2UoLywvZyxcInxcIikrXCIpJFwiLFwiaVwiKSksZT1hLl8ucmVtb3ZlQXR0cmlidXRlc3x8KGEuXy5yZW1vdmVBdHRyaWJ1dGVzPWEuY29uZmlnLnJlbW92ZUZvcm1hdEF0dHJpYnV0ZXMuc3BsaXQoXCIsXCIpKSxiPUNLRURJVE9SLnBsdWdpbnMucmVtb3ZlZm9ybWF0LmZpbHRlcixjPWEuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKCksaz1jLmNyZWF0ZUl0ZXJhdG9yKCksXG5sPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVH0sbTttPWsuZ2V0TmV4dFJhbmdlKCk7KXttLmVubGFyZ2UoQ0tFRElUT1IuRU5MQVJHRV9JTkxJTkUpO3ZhciBkPW0uY3JlYXRlQm9va21hcmsoKSxoPWQuc3RhcnROb2RlLGc9ZC5lbmROb2RlLG49ZnVuY3Rpb24oZCl7Zm9yKHZhciBjPWEuZWxlbWVudFBhdGgoZCksZT1jLmVsZW1lbnRzLGc9MSxoOyhoPWVbZ10pJiYhaC5lcXVhbHMoYy5ibG9jaykmJiFoLmVxdWFscyhjLmJsb2NrTGltaXQpO2crKylmLnRlc3QoaC5nZXROYW1lKCkpJiZiKGEsaCkmJmQuYnJlYWtQYXJlbnQoaCl9O24oaCk7aWYoZylmb3IobihnKSxoPWguZ2V0TmV4dFNvdXJjZU5vZGUoITAsQ0tFRElUT1IuTk9ERV9FTEVNRU5UKTtoJiYhaC5lcXVhbHMoZyk7KWlmKGguaXNSZWFkT25seSgpKXtpZihoLmdldFBvc2l0aW9uKGcpJkNLRURJVE9SLlBPU0lUSU9OX0NPTlRBSU5TKWJyZWFrO2g9aC5nZXROZXh0KGwpfWVsc2Ugbj1cbmguZ2V0TmV4dFNvdXJjZU5vZGUoITEsQ0tFRElUT1IuTk9ERV9FTEVNRU5UKSxcImltZ1wiPT1oLmdldE5hbWUoKSYmaC5kYXRhKFwiY2tlLXJlYWxlbGVtZW50XCIpfHwhYihhLGgpfHwoZi50ZXN0KGguZ2V0TmFtZSgpKT9oLnJlbW92ZSgxKTooaC5yZW1vdmVBdHRyaWJ1dGVzKGUpLGEuZmlyZShcInJlbW92ZUZvcm1hdENsZWFudXBcIixoKSkpLGg9bjttLm1vdmVUb0Jvb2ttYXJrKGQpfWEuZm9yY2VOZXh0U2VsZWN0aW9uQ2hlY2soKTthLmdldFNlbGVjdGlvbigpLnNlbGVjdFJhbmdlcyhjKX19fSxmaWx0ZXI6ZnVuY3Rpb24oYSxmKXtmb3IodmFyIGU9YS5fLnJlbW92ZUZvcm1hdEZpbHRlcnN8fFtdLGI9MDtiPGUubGVuZ3RoO2IrKylpZighMT09PWVbYl0oZikpcmV0dXJuITE7cmV0dXJuITB9fSxDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmFkZFJlbW92ZUZvcm1hdEZpbHRlcj1mdW5jdGlvbihhKXt0aGlzLl8ucmVtb3ZlRm9ybWF0RmlsdGVyc3x8KHRoaXMuXy5yZW1vdmVGb3JtYXRGaWx0ZXJzPVxuW10pO3RoaXMuXy5yZW1vdmVGb3JtYXRGaWx0ZXJzLnB1c2goYSl9LENLRURJVE9SLmNvbmZpZy5yZW1vdmVGb3JtYXRUYWdzPVwiYixiaWcsY2l0ZSxjb2RlLGRlbCxkZm4sZW0sZm9udCxpLGlucyxrYmQscSxzLHNhbXAsc21hbGwsc3BhbixzdHJpa2Usc3Ryb25nLHN1YixzdXAsdHQsdSx2YXJcIixDS0VESVRPUi5jb25maWcucmVtb3ZlRm9ybWF0QXR0cmlidXRlcz1cImNsYXNzLHN0eWxlLGxhbmcsd2lkdGgsaGVpZ2h0LGFsaWduLGhzcGFjZSx2YWxpZ25cIixDS0VESVRPUi5wbHVnaW5zLmFkZChcInJlc2l6ZVwiLHtpbml0OmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGYoYyl7dmFyIGU9ZC53aWR0aCxmPWQuaGVpZ2h0LGw9ZSsoYy5kYXRhLiQuc2NyZWVuWC1tLngpKihcInJ0bFwiPT1rPy0xOjEpO2M9ZisoYy5kYXRhLiQuc2NyZWVuWS1tLnkpO2gmJihlPU1hdGgubWF4KGIucmVzaXplX21pbldpZHRoLE1hdGgubWluKGwsYi5yZXNpemVfbWF4V2lkdGgpKSk7ZyYmKGY9TWF0aC5tYXgoYi5yZXNpemVfbWluSGVpZ2h0LFxuTWF0aC5taW4oYyxiLnJlc2l6ZV9tYXhIZWlnaHQpKSk7YS5yZXNpemUoaD9lOm51bGwsZil9ZnVuY3Rpb24gZSgpe0NLRURJVE9SLmRvY3VtZW50LnJlbW92ZUxpc3RlbmVyKFwibW91c2Vtb3ZlXCIsZik7Q0tFRElUT1IuZG9jdW1lbnQucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsZSk7YS5kb2N1bWVudCYmKGEuZG9jdW1lbnQucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZW1vdmVcIixmKSxhLmRvY3VtZW50LnJlbW92ZUxpc3RlbmVyKFwibW91c2V1cFwiLGUpKX12YXIgYj1hLmNvbmZpZyxjPWEudWkuc3BhY2VJZChcInJlc2l6ZXJcIiksaz1hLmVsZW1lbnQ/YS5lbGVtZW50LmdldERpcmVjdGlvbigxKTpcImx0clwiOyFiLnJlc2l6ZV9kaXImJihiLnJlc2l6ZV9kaXI9XCJ2ZXJ0aWNhbFwiKTt2b2lkIDA9PT1iLnJlc2l6ZV9tYXhXaWR0aCYmKGIucmVzaXplX21heFdpZHRoPTNFMyk7dm9pZCAwPT09Yi5yZXNpemVfbWF4SGVpZ2h0JiYoYi5yZXNpemVfbWF4SGVpZ2h0PTNFMyk7dm9pZCAwPT09Yi5yZXNpemVfbWluV2lkdGgmJlxuKGIucmVzaXplX21pbldpZHRoPTc1MCk7dm9pZCAwPT09Yi5yZXNpemVfbWluSGVpZ2h0JiYoYi5yZXNpemVfbWluSGVpZ2h0PTI1MCk7aWYoITEhPT1iLnJlc2l6ZV9lbmFibGVkKXt2YXIgbD1udWxsLG0sZCxoPShcImJvdGhcIj09Yi5yZXNpemVfZGlyfHxcImhvcml6b250YWxcIj09Yi5yZXNpemVfZGlyKSYmYi5yZXNpemVfbWluV2lkdGghPWIucmVzaXplX21heFdpZHRoLGc9KFwiYm90aFwiPT1iLnJlc2l6ZV9kaXJ8fFwidmVydGljYWxcIj09Yi5yZXNpemVfZGlyKSYmYi5yZXNpemVfbWluSGVpZ2h0IT1iLnJlc2l6ZV9tYXhIZWlnaHQsbj1DS0VESVRPUi50b29scy5hZGRGdW5jdGlvbihmdW5jdGlvbihjKXtsfHwobD1hLmdldFJlc2l6YWJsZSgpKTtkPXt3aWR0aDpsLiQub2Zmc2V0V2lkdGh8fDAsaGVpZ2h0OmwuJC5vZmZzZXRIZWlnaHR8fDB9O209e3g6Yy5zY3JlZW5YLHk6Yy5zY3JlZW5ZfTtiLnJlc2l6ZV9taW5XaWR0aD5kLndpZHRoJiYoYi5yZXNpemVfbWluV2lkdGg9ZC53aWR0aCk7XG5iLnJlc2l6ZV9taW5IZWlnaHQ+ZC5oZWlnaHQmJihiLnJlc2l6ZV9taW5IZWlnaHQ9ZC5oZWlnaHQpO0NLRURJVE9SLmRvY3VtZW50Lm9uKFwibW91c2Vtb3ZlXCIsZik7Q0tFRElUT1IuZG9jdW1lbnQub24oXCJtb3VzZXVwXCIsZSk7YS5kb2N1bWVudCYmKGEuZG9jdW1lbnQub24oXCJtb3VzZW1vdmVcIixmKSxhLmRvY3VtZW50Lm9uKFwibW91c2V1cFwiLGUpKTtjLnByZXZlbnREZWZhdWx0JiZjLnByZXZlbnREZWZhdWx0KCl9KTthLm9uKFwiZGVzdHJveVwiLGZ1bmN0aW9uKCl7Q0tFRElUT1IudG9vbHMucmVtb3ZlRnVuY3Rpb24obil9KTthLm9uKFwidWlTcGFjZVwiLGZ1bmN0aW9uKGIpe2lmKFwiYm90dG9tXCI9PWIuZGF0YS5zcGFjZSl7dmFyIGQ9XCJcIjtoJiYhZyYmKGQ9XCIgY2tlX3Jlc2l6ZXJfaG9yaXpvbnRhbFwiKTshaCYmZyYmKGQ9XCIgY2tlX3Jlc2l6ZXJfdmVydGljYWxcIik7dmFyIGU9J1xceDNjc3BhbiBpZFxceDNkXCInK2MrJ1wiIGNsYXNzXFx4M2RcImNrZV9yZXNpemVyJytkK1wiIGNrZV9yZXNpemVyX1wiK1xuaysnXCIgdGl0bGVcXHgzZFwiJytDS0VESVRPUi50b29scy5odG1sRW5jb2RlKGEubGFuZy5jb21tb24ucmVzaXplKSsnXCIgb25tb3VzZWRvd25cXHgzZFwiQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKCcrbisnLCBldmVudClcIlxceDNlJysoXCJsdHJcIj09az9cIuKXolwiOlwi4pejXCIpK1wiXFx4M2Mvc3BhblxceDNlXCI7XCJsdHJcIj09ayYmXCJsdHJcIj09ZD9iLmRhdGEuaHRtbCs9ZTpiLmRhdGEuaHRtbD1lK2IuZGF0YS5odG1sfX0sYSxudWxsLDEwMCk7YS5vbihcIm1heGltaXplXCIsZnVuY3Rpb24oYil7YS51aS5zcGFjZShcInJlc2l6ZXJcIilbYi5kYXRhPT1DS0VESVRPUi5UUklTVEFURV9PTj9cImhpZGVcIjpcInNob3dcIl0oKX0pfX19KSxDS0VESVRPUi5wbHVnaW5zLmFkZChcIm1lbnVidXR0b25cIix7cmVxdWlyZXM6XCJidXR0b24sbWVudVwiLG9uTG9hZDpmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXMuXyxiPUNLRURJVE9SLmRvY3VtZW50LmdldEJ5SWQoZS5pZCksYz1lLm1lbnU7ZS5zdGF0ZSE9PVxuQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQmJihlLm9uJiZjP2MuaGlkZSgpOihlLnByZXZpb3VzU3RhdGU9ZS5zdGF0ZSxjfHwoYz1lLm1lbnU9bmV3IENLRURJVE9SLm1lbnUoYSx7cGFuZWw6e2NsYXNzTmFtZTpcImNrZV9tZW51X3BhbmVsXCIsYXR0cmlidXRlczp7XCJhcmlhLWxhYmVsXCI6YS5sYW5nLmNvbW1vbi5vcHRpb25zfX19KSxjLm9uSGlkZT1DS0VESVRPUi50b29scy5iaW5kKGZ1bmN0aW9uKCl7dmFyIGM9dGhpcy5jb21tYW5kP2EuZ2V0Q29tbWFuZCh0aGlzLmNvbW1hbmQpLm1vZGVzOnRoaXMubW9kZXM7dGhpcy5zZXRTdGF0ZSghY3x8Y1thLm1vZGVdP2UucHJldmlvdXNTdGF0ZTpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCk7ZS5vbj0wO2Iuc2V0QXR0cmlidXRlKFwiYXJpYS1leHBhbmRlZFwiLFwiZmFsc2VcIil9LHRoaXMpLHRoaXMub25NZW51JiZjLmFkZExpc3RlbmVyKHRoaXMub25NZW51KSksdGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9PTiksZS5vbj1cbjEsYi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWV4cGFuZGVkXCIsXCJ0cnVlXCIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtjLnNob3coQ0tFRElUT1IuZG9jdW1lbnQuZ2V0QnlJZChlLmlkKSw0KX0sMCkpKX07Q0tFRElUT1IudWkubWVudUJ1dHRvbj1DS0VESVRPUi50b29scy5jcmVhdGVDbGFzcyh7YmFzZTpDS0VESVRPUi51aS5idXR0b24sJDpmdW5jdGlvbihmKXtkZWxldGUgZi5wYW5lbDt0aGlzLmJhc2UoZik7dGhpcy5oYXNBcnJvdz1cIm1lbnVcIjt0aGlzLmNsaWNrPWF9LHN0YXRpY3M6e2hhbmRsZXI6e2NyZWF0ZTpmdW5jdGlvbihhKXtyZXR1cm4gbmV3IENLRURJVE9SLnVpLm1lbnVCdXR0b24oYSl9fX19KX0sYmVmb3JlSW5pdDpmdW5jdGlvbihhKXthLnVpLmFkZEhhbmRsZXIoQ0tFRElUT1IuVUlfTUVOVUJVVFRPTixDS0VESVRPUi51aS5tZW51QnV0dG9uLmhhbmRsZXIpfX0pLENLRURJVE9SLlVJX01FTlVCVVRUT049XCJtZW51YnV0dG9uXCIsXCJ1c2Ugc3RyaWN0XCIsQ0tFRElUT1IucGx1Z2lucy5hZGQoXCJzY2F5dFwiLFxue3JlcXVpcmVzOlwibWVudWJ1dHRvbixkaWFsb2dcIix0YWJUb09wZW46bnVsbCxkaWFsb2dOYW1lOlwic2NheXREaWFsb2dcIixvbkxvYWQ6ZnVuY3Rpb24oYSl7XCJtb29uby1saXNhXCI9PShDS0VESVRPUi5za2luTmFtZXx8YS5jb25maWcuc2tpbikmJkNLRURJVE9SLmRvY3VtZW50LmFwcGVuZFN0eWxlU2hlZXQoQ0tFRElUT1IuZ2V0VXJsKHRoaXMucGF0aCtcInNraW5zL1wiK0NLRURJVE9SLnNraW4ubmFtZStcIi9zY2F5dC5jc3NcIikpO0NLRURJVE9SLmRvY3VtZW50LmFwcGVuZFN0eWxlU2hlZXQoQ0tFRElUT1IuZ2V0VXJsKHRoaXMucGF0aCtcImRpYWxvZ3MvZGlhbG9nLmNzc1wiKSk7dmFyIGY9ITE7Q0tFRElUT1Iub24oXCJpbnN0YW5jZUxvYWRlZFwiLGZ1bmN0aW9uKGEpe2lmKCFmJiZDS0VESVRPUi5wbHVnaW5zLmF1dG9jb21wbGV0ZSl7Zj0hMDt2YXIgYj1DS0VESVRPUi5wbHVnaW5zLmF1dG9jb21wbGV0ZS5wcm90b3R5cGUuZ2V0TW9kZWw7Q0tFRElUT1IucGx1Z2lucy5hdXRvY29tcGxldGUucHJvdG90eXBlLmdldE1vZGVsPVxuZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy5lZGl0b3I7YT1iLmJpbmQodGhpcykoYSk7YS5vbihcImNoYW5nZS1pc0FjdGl2ZVwiLGZ1bmN0aW9uKGEpe2EuZGF0YT9lLmZpcmUoXCJhdXRvY29tcGxldGVQYW5lbFNob3dcIik6ZS5maXJlKFwiYXV0b2NvbXBsZXRlUGFuZWxIaWRlXCIpfSk7cmV0dXJuIGF9fX0pfSxpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZT1DS0VESVRPUi5wbHVnaW5zLnNjYXl0O3RoaXMuYmluZEV2ZW50cyhhKTt0aGlzLnBhcnNlQ29uZmlnKGEpO3RoaXMuYWRkUnVsZShhKTtDS0VESVRPUi5kaWFsb2cuYWRkKHRoaXMuZGlhbG9nTmFtZSxDS0VESVRPUi5nZXRVcmwodGhpcy5wYXRoK1wiZGlhbG9ncy9vcHRpb25zLmpzXCIpKTt0aGlzLmFkZE1lbnVJdGVtcyhhKTt2YXIgYj1hLmxhbmcuc2NheXQsYz1DS0VESVRPUi5lbnY7YS51aS5hZGQoXCJTY2F5dFwiLENLRURJVE9SLlVJX01FTlVCVVRUT04se2xhYmVsOmIudGV4dF90aXRsZSx0aXRsZTphLnBsdWdpbnMud3NjP2EubGFuZy53c2MudGl0bGU6XG5iLnRleHRfdGl0bGUsbW9kZXM6e3d5c2l3eWc6IShjLmllJiYoOD5jLnZlcnNpb258fGMucXVpcmtzKSl9LHRvb2xiYXI6XCJzcGVsbGNoZWNrZXIsMjBcIixyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIGI9YS51aS5pbnN0YW5jZXMuU2NheXQuZ2V0U3RhdGUoKTthLnNjYXl0JiYoYj1lLnN0YXRlLnNjYXl0W2EubmFtZV0/Q0tFRElUT1IuVFJJU1RBVEVfT046Q0tFRElUT1IuVFJJU1RBVEVfT0ZGKTthLmZpcmUoXCJzY2F5dEJ1dHRvblN0YXRlXCIsYil9LG9uUmVuZGVyOmZ1bmN0aW9uKCl7dmFyIGI9dGhpczthLm9uKFwic2NheXRCdXR0b25TdGF0ZVwiLGZ1bmN0aW9uKGEpe3ZvaWQgMCE9PXR5cGVvZiBhLmRhdGEmJmIuc2V0U3RhdGUoYS5kYXRhKX0pfSxvbk1lbnU6ZnVuY3Rpb24oKXt2YXIgYj1hLnNjYXl0O2EuZ2V0TWVudUl0ZW0oXCJzY2F5dFRvZ2dsZVwiKS5sYWJlbD1hLmxhbmcuc2NheXRbYiYmZS5zdGF0ZS5zY2F5dFthLm5hbWVdP1wiYnRuX2Rpc2FibGVcIjpcImJ0bl9lbmFibGVcIl07dmFyIGM9XG57c2NheXRUb2dnbGU6Q0tFRElUT1IuVFJJU1RBVEVfT0ZGLHNjYXl0T3B0aW9uczpiP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCxzY2F5dExhbmdzOmI/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVELHNjYXl0RGljdDpiP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCxzY2F5dEFib3V0OmI/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVELFdTQzphLnBsdWdpbnMud3NjP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRH07YS5jb25maWcuc2NheXRfdWlUYWJzWzBdfHxkZWxldGUgYy5zY2F5dE9wdGlvbnM7YS5jb25maWcuc2NheXRfdWlUYWJzWzFdfHxkZWxldGUgYy5zY2F5dExhbmdzO2EuY29uZmlnLnNjYXl0X3VpVGFic1syXXx8ZGVsZXRlIGMuc2NheXREaWN0O2ImJiFDS0VESVRPUi5wbHVnaW5zLnNjYXl0LmlzTmV3VWRTdXBwb3J0ZWQoYikmJlxuKGRlbGV0ZSBjLnNjYXl0RGljdCxhLmNvbmZpZy5zY2F5dF91aVRhYnNbMl09MCxDS0VESVRPUi5wbHVnaW5zLnNjYXl0LmFsYXJtQ29tcGF0aWJpbGl0eU1lc3NhZ2UoKSk7cmV0dXJuIGN9fSk7YS5jb250ZXh0TWVudSYmYS5hZGRNZW51SXRlbXMmJihhLmNvbnRleHRNZW51LmFkZExpc3RlbmVyKGZ1bmN0aW9uKGIsYyl7dmFyIGU9YS5zY2F5dCxkLGg7ZSYmKGg9ZS5nZXRTZWxlY3Rpb25Ob2RlKCkpJiYoZD1mLm1lbnVHZW5lcmF0b3IoYSxoKSxlLnNob3dCYW5uZXIoXCIuXCIrYS5jb250ZXh0TWVudS5fLmRlZmluaXRpb24ucGFuZWwuY2xhc3NOYW1lLnNwbGl0KFwiIFwiKS5qb2luKFwiIC5cIikpKTtyZXR1cm4gZH0pLGEuY29udGV4dE1lbnUuXy5vbkhpZGU9Q0tFRElUT1IudG9vbHMub3ZlcnJpZGUoYS5jb250ZXh0TWVudS5fLm9uSGlkZSxmdW5jdGlvbihiKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYz1hLnNjYXl0O2MmJmMuaGlkZUJhbm5lcigpO3JldHVybiBiLmFwcGx5KHRoaXMpfX0pKX0sXG5hZGRNZW51SXRlbXM6ZnVuY3Rpb24oYSl7dmFyIGY9dGhpcyxlPUNLRURJVE9SLnBsdWdpbnMuc2NheXQ7YS5hZGRNZW51R3JvdXAoXCJzY2F5dEJ1dHRvblwiKTtmb3IodmFyIGI9YS5jb25maWcuc2NheXRfY29udGV4dE1lbnVJdGVtc09yZGVyLnNwbGl0KFwifFwiKSxjPTA7YzxiLmxlbmd0aDtjKyspYltjXT1cInNjYXl0X1wiK2JbY107aWYoKGI9W1wiZ3JheXRfZGVzY3JpcHRpb25cIixcImdyYXl0X3N1Z2dlc3RcIixcImdyYXl0X2NvbnRyb2xcIl0uY29uY2F0KGIpKSYmYi5sZW5ndGgpZm9yKGM9MDtjPGIubGVuZ3RoO2MrKylhLmFkZE1lbnVHcm91cChiW2NdLGMtMTApO2EuYWRkQ29tbWFuZChcInNjYXl0VG9nZ2xlXCIse2V4ZWM6ZnVuY3Rpb24oYSl7dmFyIGI9YS5zY2F5dDtlLnN0YXRlLnNjYXl0W2EubmFtZV09IWUuc3RhdGUuc2NheXRbYS5uYW1lXTshMD09PWUuc3RhdGUuc2NheXRbYS5uYW1lXT9ifHxlLmNyZWF0ZVNjYXl0KGEpOmImJmUuZGVzdHJveShhKX19KTthLmFkZENvbW1hbmQoXCJzY2F5dEFib3V0XCIsXG57ZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0LnRhYlRvT3Blbj1cImFib3V0XCI7ZS5vcGVuRGlhbG9nKGYuZGlhbG9nTmFtZSxhKX19KTthLmFkZENvbW1hbmQoXCJzY2F5dE9wdGlvbnNcIix7ZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0LnRhYlRvT3Blbj1cIm9wdGlvbnNcIjtlLm9wZW5EaWFsb2coZi5kaWFsb2dOYW1lLGEpfX0pO2EuYWRkQ29tbWFuZChcInNjYXl0TGFuZ3NcIix7ZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0LnRhYlRvT3Blbj1cImxhbmdzXCI7ZS5vcGVuRGlhbG9nKGYuZGlhbG9nTmFtZSxhKX19KTthLmFkZENvbW1hbmQoXCJzY2F5dERpY3RcIix7ZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0LnRhYlRvT3Blbj1cImRpY3Rpb25hcmllc1wiO2Uub3BlbkRpYWxvZyhmLmRpYWxvZ05hbWUsYSl9fSk7Yj17c2NheXRUb2dnbGU6e2xhYmVsOmEubGFuZy5zY2F5dC5idG5fZW5hYmxlLGdyb3VwOlwic2NheXRCdXR0b25cIixjb21tYW5kOlwic2NheXRUb2dnbGVcIn0sc2NheXRBYm91dDp7bGFiZWw6YS5sYW5nLnNjYXl0LmJ0bl9hYm91dCxcbmdyb3VwOlwic2NheXRCdXR0b25cIixjb21tYW5kOlwic2NheXRBYm91dFwifSxzY2F5dE9wdGlvbnM6e2xhYmVsOmEubGFuZy5zY2F5dC5idG5fb3B0aW9ucyxncm91cDpcInNjYXl0QnV0dG9uXCIsY29tbWFuZDpcInNjYXl0T3B0aW9uc1wifSxzY2F5dExhbmdzOntsYWJlbDphLmxhbmcuc2NheXQuYnRuX2xhbmdzLGdyb3VwOlwic2NheXRCdXR0b25cIixjb21tYW5kOlwic2NheXRMYW5nc1wifSxzY2F5dERpY3Q6e2xhYmVsOmEubGFuZy5zY2F5dC5idG5fZGljdGlvbmFyaWVzLGdyb3VwOlwic2NheXRCdXR0b25cIixjb21tYW5kOlwic2NheXREaWN0XCJ9fTthLnBsdWdpbnMud3NjJiYoYi5XU0M9e2xhYmVsOmEubGFuZy53c2MudG9vbGJhcixncm91cDpcInNjYXl0QnV0dG9uXCIsb25DbGljazpmdW5jdGlvbigpe3ZhciBiPUNLRURJVE9SLnBsdWdpbnMuc2NheXQsYz1hLnNjYXl0LGU9YS5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORT9hLmNvbnRhaW5lci5nZXRUZXh0KCk6YS5kb2N1bWVudC5nZXRCb2R5KCkuZ2V0VGV4dCgpO1xuKGU9ZS5yZXBsYWNlKC9cXHMvZyxcIlwiKSk/KGMmJmIuc3RhdGUuc2NheXRbYS5uYW1lXSYmYy5zZXRNYXJrdXBQYXVzZWQmJmMuc2V0TWFya3VwUGF1c2VkKCEwKSxhLmxvY2tTZWxlY3Rpb24oKSxhLmV4ZWNDb21tYW5kKFwiY2hlY2tzcGVsbFwiKSk6YWxlcnQoXCJOb3RoaW5nIHRvIGNoZWNrIVwiKX19KTthLmFkZE1lbnVJdGVtcyhiKX0sYmluZEV2ZW50czpmdW5jdGlvbihhKXt2YXIgZj1DS0VESVRPUi5wbHVnaW5zLnNjYXl0LGU9YS5lbGVtZW50TW9kZT09Q0tFRElUT1IuRUxFTUVOVF9NT0RFX0lOTElORSxiPWZ1bmN0aW9uKCl7Zi5kZXN0cm95KGEpfSxjPWZ1bmN0aW9uKCl7IWYuc3RhdGUuc2NheXRbYS5uYW1lXXx8YS5yZWFkT25seXx8YS5zY2F5dHx8Zi5jcmVhdGVTY2F5dChhKX0saz1mdW5jdGlvbigpe3ZhciBiPWEuZWRpdGFibGUoKTtiLmF0dGFjaExpc3RlbmVyKGIsXCJmb2N1c1wiLGZ1bmN0aW9uKGIpe0NLRURJVE9SLnBsdWdpbnMuc2NheXQmJiFhLnNjYXl0JiZzZXRUaW1lb3V0KGMsXG4wKTtiPUNLRURJVE9SLnBsdWdpbnMuc2NheXQmJkNLRURJVE9SLnBsdWdpbnMuc2NheXQuc3RhdGUuc2NheXRbYS5uYW1lXSYmYS5zY2F5dDt2YXIgZixnO2lmKChlfHxiKSYmYS5fLnNhdmVkU2VsZWN0aW9uKXtiPWEuXy5zYXZlZFNlbGVjdGlvbi5nZXRTZWxlY3RlZEVsZW1lbnQoKTtiPSFiJiZhLl8uc2F2ZWRTZWxlY3Rpb24uZ2V0UmFuZ2VzKCk7Zm9yKHZhciBrPTA7azxiLmxlbmd0aDtrKyspZz1iW2tdLFwic3RyaW5nXCI9PT10eXBlb2YgZy5zdGFydENvbnRhaW5lci4kLm5vZGVWYWx1ZSYmKGY9Zy5zdGFydENvbnRhaW5lci5nZXRUZXh0KCkubGVuZ3RoLChmPGcuc3RhcnRPZmZzZXR8fGY8Zy5lbmRPZmZzZXQpJiZhLnVubG9ja1NlbGVjdGlvbighMSkpfX0sdGhpcyxudWxsLC0xMCl9LGw9ZnVuY3Rpb24oKXtlP2EuY29uZmlnLnNjYXl0X2lubGluZU1vZGVJbW1lZGlhdGVNYXJrdXA/YygpOihhLm9uKFwiYmx1clwiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChiLDApfSksYS5vbihcImZvY3VzXCIsXG5jKSxhLmZvY3VzTWFuYWdlci5oYXNGb2N1cyYmYygpKTpjKCk7aygpO3ZhciBmPWEuZWRpdGFibGUoKTtmLmF0dGFjaExpc3RlbmVyKGYsXCJtb3VzZWRvd25cIixmdW5jdGlvbihiKXtiPWIuZGF0YS5nZXRUYXJnZXQoKTt2YXIgYz1hLndpZGdldHMmJmEud2lkZ2V0cy5nZXRCeUVsZW1lbnQoYik7YyYmKGMud3JhcHBlcj1iLmdldEFzY2VuZGFudChmdW5jdGlvbihhKXtyZXR1cm4gYS5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNrZS13aWRnZXQtd3JhcHBlclwiKX0sITApKX0sdGhpcyxudWxsLC0xMCl9O2Eub24oXCJjb250ZW50RG9tXCIsbCk7YS5vbihcImJlZm9yZUNvbW1hbmRFeGVjXCIsZnVuY3Rpb24oYil7dmFyIGQ9YS5zY2F5dCxjPSExLGU9ITEsaz0hMDtiLmRhdGEubmFtZSBpbiBmLm9wdGlvbnMuZGlzYWJsaW5nQ29tbWFuZEV4ZWMmJlwid3lzaXd5Z1wiPT1hLm1vZGU/ZCYmKGYuZGVzdHJveShhKSxhLmZpcmUoXCJzY2F5dEJ1dHRvblN0YXRlXCIsQ0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpKTpcblwiYm9sZFwiIT09Yi5kYXRhLm5hbWUmJlwiaXRhbGljXCIhPT1iLmRhdGEubmFtZSYmXCJ1bmRlcmxpbmVcIiE9PWIuZGF0YS5uYW1lJiZcInN0cmlrZVwiIT09Yi5kYXRhLm5hbWUmJlwic3Vic2NyaXB0XCIhPT1iLmRhdGEubmFtZSYmXCJzdXBlcnNjcmlwdFwiIT09Yi5kYXRhLm5hbWUmJlwiZW50ZXJcIiE9PWIuZGF0YS5uYW1lJiZcImN1dFwiIT09Yi5kYXRhLm5hbWUmJlwibGFuZ3VhZ2VcIiE9PWIuZGF0YS5uYW1lfHwhZHx8KFwiY3V0XCI9PT1iLmRhdGEubmFtZSYmKGs9ITEsZT0hMCksXCJsYW5ndWFnZVwiPT09Yi5kYXRhLm5hbWUmJihlPWM9ITApLGEuZmlyZShcInJlbG9hZE1hcmt1cFNjYXl0XCIse3JlbW92ZU9wdGlvbnM6e3JlbW92ZUluc2lkZTprLGZvcmNlQm9va21hcms6ZSxsYW5ndWFnZTpjfSx0aW1lb3V0OjB9KSl9KTthLm9uKFwiYmVmb3JlU2V0TW9kZVwiLGZ1bmN0aW9uKGIpe2lmKFwic291cmNlXCI9PWIuZGF0YSl7aWYoYj1hLnNjYXl0KWYuZGVzdHJveShhKSxhLmZpcmUoXCJzY2F5dEJ1dHRvblN0YXRlXCIsXG5DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCk7YS5kb2N1bWVudCYmYS5kb2N1bWVudC5nZXRCb2R5KCkucmVtb3ZlQXR0cmlidXRlKFwiX2pxdWlkXCIpfX0pO2Eub24oXCJhZnRlckNvbW1hbmRFeGVjXCIsZnVuY3Rpb24oYil7XCJ3eXNpd3lnXCIhPWEubW9kZXx8XCJ1bmRvXCIhPWIuZGF0YS5uYW1lJiZcInJlZG9cIiE9Yi5kYXRhLm5hbWV8fHNldFRpbWVvdXQoZnVuY3Rpb24oKXtmLnJlbG9hZE1hcmt1cChhLnNjYXl0KX0sMjUwKX0pO2Eub24oXCJyZWFkT25seVwiLGZ1bmN0aW9uKGIpe3ZhciBkO2ImJihkPWEuc2NheXQsITA9PT1iLmVkaXRvci5yZWFkT25seT9kJiZkLmZpcmUoXCJyZW1vdmVNYXJrdXBJbkRvY3VtZW50XCIse30pOmQ/Zi5yZWxvYWRNYXJrdXAoZCk6XCJ3eXNpd3lnXCI9PWIuZWRpdG9yLm1vZGUmJiEwPT09Zi5zdGF0ZS5zY2F5dFtiLmVkaXRvci5uYW1lXSYmKGYuY3JlYXRlU2NheXQoYSksYi5lZGl0b3IuZmlyZShcInNjYXl0QnV0dG9uU3RhdGVcIixDS0VESVRPUi5UUklTVEFURV9PTikpKX0pO1xuYS5vbihcImJlZm9yZURlc3Ryb3lcIixiKTthLm9uKFwic2V0RGF0YVwiLGZ1bmN0aW9uKCl7YigpOyhhLmVsZW1lbnRNb2RlPT1DS0VESVRPUi5FTEVNRU5UX01PREVfSU5MSU5FfHxhLnBsdWdpbnMuZGl2YXJlYSkmJmwoKX0sdGhpcyxudWxsLDUwKTthLm9uKFwicmVsb2FkTWFya3VwU2NheXRcIixmdW5jdGlvbihiKXt2YXIgZD1iLmRhdGEmJmIuZGF0YS5yZW1vdmVPcHRpb25zLGM9Yi5kYXRhJiZiLmRhdGEudGltZW91dCxlPWIuZGF0YSYmYi5kYXRhLmxhbmd1YWdlLGs9YS5zY2F5dDtrJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7ZSYmKGQuc2VsZWN0aW9uTm9kZT1hLnBsdWdpbnMubGFuZ3VhZ2UuZ2V0Q3VycmVudExhbmdFbGVtZW50KGEpLGQuc2VsZWN0aW9uTm9kZT1kLnNlbGVjdGlvbk5vZGUmJmQuc2VsZWN0aW9uTm9kZS4kfHxudWxsKTtrLnJlbW92ZU1hcmt1cEluU2VsZWN0aW9uTm9kZShkKTtmLnJlbG9hZE1hcmt1cChrKX0sY3x8MCl9KTthLm9uKFwiaW5zZXJ0RWxlbWVudFwiLGZ1bmN0aW9uKCl7YS5maXJlKFwicmVsb2FkTWFya3VwU2NheXRcIixcbntyZW1vdmVPcHRpb25zOntmb3JjZUJvb2ttYXJrOiEwfX0pfSx0aGlzLG51bGwsNTApO2Eub24oXCJpbnNlcnRIdG1sXCIsZnVuY3Rpb24oKXthLnNjYXl0JiZhLnNjYXl0LnNldEZvY3VzZWQmJmEuc2NheXQuc2V0Rm9jdXNlZCghMCk7YS5maXJlKFwicmVsb2FkTWFya3VwU2NheXRcIil9LHRoaXMsbnVsbCw1MCk7YS5vbihcImluc2VydFRleHRcIixmdW5jdGlvbigpe2Euc2NheXQmJmEuc2NheXQuc2V0Rm9jdXNlZCYmYS5zY2F5dC5zZXRGb2N1c2VkKCEwKTthLmZpcmUoXCJyZWxvYWRNYXJrdXBTY2F5dFwiKX0sdGhpcyxudWxsLDUwKTthLm9uKFwic2NheXREaWFsb2dTaG93blwiLGZ1bmN0aW9uKGIpe2IuZGF0YS5zZWxlY3RQYWdlKGEuc2NheXQudGFiVG9PcGVuKX0pO2Eub24oXCJhdXRvY29tcGxldGVQYW5lbFNob3dcIixmdW5jdGlvbihiKXsoYj1hLnNjYXl0KSYmYi5zZXRNYXJrdXBQYXVzZWQmJmIuc2V0TWFya3VwUGF1c2VkKCEwKX0pO2Eub24oXCJhdXRvY29tcGxldGVQYW5lbEhpZGVcIixmdW5jdGlvbihiKXsoYj1cbmEuc2NheXQpJiZiLnNldE1hcmt1cFBhdXNlZCYmYi5zZXRNYXJrdXBQYXVzZWQoITEpfSl9LHBhcnNlQ29uZmlnOmZ1bmN0aW9uKGEpe3ZhciBmPUNLRURJVE9SLnBsdWdpbnMuc2NheXQ7Zi5yZXBsYWNlT2xkT3B0aW9uc05hbWVzKGEuY29uZmlnKTtcImJvb2xlYW5cIiE9PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9hdXRvU3RhcnR1cCYmKGEuY29uZmlnLnNjYXl0X2F1dG9TdGFydHVwPSExKTtmLnN0YXRlLnNjYXl0W2EubmFtZV09YS5jb25maWcuc2NheXRfYXV0b1N0YXJ0dXA7XCJib29sZWFuXCIhPT10eXBlb2YgYS5jb25maWcuZ3JheXRfYXV0b1N0YXJ0dXAmJihhLmNvbmZpZy5ncmF5dF9hdXRvU3RhcnR1cD0hMSk7XCJib29sZWFuXCIhPT10eXBlb2YgYS5jb25maWcuc2NheXRfaW5saW5lTW9kZUltbWVkaWF0ZU1hcmt1cCYmKGEuY29uZmlnLnNjYXl0X2lubGluZU1vZGVJbW1lZGlhdGVNYXJrdXA9ITEpO2Yuc3RhdGUuZ3JheXRbYS5uYW1lXT1hLmNvbmZpZy5ncmF5dF9hdXRvU3RhcnR1cDtcbmEuY29uZmlnLnNjYXl0X2NvbnRleHRDb21tYW5kc3x8KGEuY29uZmlnLnNjYXl0X2NvbnRleHRDb21tYW5kcz1cImlnbm9yZWFsbHxhZGRcIik7YS5jb25maWcuc2NheXRfY29udGV4dE1lbnVJdGVtc09yZGVyfHwoYS5jb25maWcuc2NheXRfY29udGV4dE1lbnVJdGVtc09yZGVyPVwic3VnZ2VzdHxtb3Jlc3VnZ2VzdHxjb250cm9sXCIpO2EuY29uZmlnLnNjYXl0X3NMYW5nfHwoYS5jb25maWcuc2NheXRfc0xhbmc9XCJlbl9VU1wiKTtpZih2b2lkIDA9PT1hLmNvbmZpZy5zY2F5dF9tYXhTdWdnZXN0aW9uc3x8XCJudW1iZXJcIiE9dHlwZW9mIGEuY29uZmlnLnNjYXl0X21heFN1Z2dlc3Rpb25zfHwwPmEuY29uZmlnLnNjYXl0X21heFN1Z2dlc3Rpb25zKWEuY29uZmlnLnNjYXl0X21heFN1Z2dlc3Rpb25zPTM7aWYodm9pZCAwPT09YS5jb25maWcuc2NheXRfbWluV29yZExlbmd0aHx8XCJudW1iZXJcIiE9dHlwZW9mIGEuY29uZmlnLnNjYXl0X21pbldvcmRMZW5ndGh8fDE+YS5jb25maWcuc2NheXRfbWluV29yZExlbmd0aClhLmNvbmZpZy5zY2F5dF9taW5Xb3JkTGVuZ3RoPVxuMztpZih2b2lkIDA9PT1hLmNvbmZpZy5zY2F5dF9jdXN0b21EaWN0aW9uYXJ5SWRzfHxcInN0cmluZ1wiIT09dHlwZW9mIGEuY29uZmlnLnNjYXl0X2N1c3RvbURpY3Rpb25hcnlJZHMpYS5jb25maWcuc2NheXRfY3VzdG9tRGljdGlvbmFyeUlkcz1cIlwiO2lmKHZvaWQgMD09PWEuY29uZmlnLnNjYXl0X3VzZXJEaWN0aW9uYXJ5TmFtZXx8XCJzdHJpbmdcIiE9PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF91c2VyRGljdGlvbmFyeU5hbWUpYS5jb25maWcuc2NheXRfdXNlckRpY3Rpb25hcnlOYW1lPW51bGw7aWYoXCJzdHJpbmdcIj09PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF91aVRhYnMmJjM9PT1hLmNvbmZpZy5zY2F5dF91aVRhYnMuc3BsaXQoXCIsXCIpLmxlbmd0aCl7dmFyIGU9W10sYj1bXTthLmNvbmZpZy5zY2F5dF91aVRhYnM9YS5jb25maWcuc2NheXRfdWlUYWJzLnNwbGl0KFwiLFwiKTtDS0VESVRPUi50b29scy5zZWFyY2goYS5jb25maWcuc2NheXRfdWlUYWJzLGZ1bmN0aW9uKGEpezE9PT1OdW1iZXIoYSl8fFxuMD09PU51bWJlcihhKT8oYi5wdXNoKCEwKSxlLnB1c2goTnVtYmVyKGEpKSk6Yi5wdXNoKCExKX0pO251bGw9PT1DS0VESVRPUi50b29scy5zZWFyY2goYiwhMSk/YS5jb25maWcuc2NheXRfdWlUYWJzPWU6YS5jb25maWcuc2NheXRfdWlUYWJzPVsxLDEsMV19ZWxzZSBhLmNvbmZpZy5zY2F5dF91aVRhYnM9WzEsMSwxXTtcInN0cmluZ1wiIT10eXBlb2YgYS5jb25maWcuc2NheXRfc2VydmljZVByb3RvY29sJiYoYS5jb25maWcuc2NheXRfc2VydmljZVByb3RvY29sPW51bGwpO1wic3RyaW5nXCIhPXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9zZXJ2aWNlSG9zdCYmKGEuY29uZmlnLnNjYXl0X3NlcnZpY2VIb3N0PW51bGwpO1wic3RyaW5nXCIhPXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9zZXJ2aWNlUG9ydCYmKGEuY29uZmlnLnNjYXl0X3NlcnZpY2VQb3J0PW51bGwpO1wic3RyaW5nXCIhPXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9zZXJ2aWNlUGF0aCYmKGEuY29uZmlnLnNjYXl0X3NlcnZpY2VQYXRoPW51bGwpO1xuYS5jb25maWcuc2NheXRfbW9yZVN1Z2dlc3Rpb25zfHwoYS5jb25maWcuc2NheXRfbW9yZVN1Z2dlc3Rpb25zPVwib25cIik7XCJzdHJpbmdcIiE9PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9jdXN0b21lcklkJiYoYS5jb25maWcuc2NheXRfY3VzdG9tZXJJZD1cIjE6V3ZGMEQ0LVV0UHFOMS00M25rRDQtTkt2VW0yLWRhUXFrMy1MbU5pSS16N1lzYjQtbXdyeTI0LVQ4WXJTMy1RMnRwcTJcIik7XCJzdHJpbmdcIiE9PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9jdXN0b21QdW5jdHVhdGlvbiYmKGEuY29uZmlnLnNjYXl0X2N1c3RvbVB1bmN0dWF0aW9uPVwiLVwiKTtcInN0cmluZ1wiIT09dHlwZW9mIGEuY29uZmlnLnNjYXl0X3NyY1VybCYmKGEuY29uZmlnLnNjYXl0X3NyY1VybD1cImh0dHBzOi8vc3ZjLndlYnNwZWxsY2hlY2tlci5uZXQvc3BlbGxjaGVjazMxL3dzY2J1bmRsZS93c2NidW5kbGUuanNcIik7XCJib29sZWFuXCIhPT10eXBlb2YgQ0tFRElUT1IuY29uZmlnLnNjYXl0X2hhbmRsZUNoZWNrRGlydHkmJlxuKENLRURJVE9SLmNvbmZpZy5zY2F5dF9oYW5kbGVDaGVja0RpcnR5PSEwKTtcImJvb2xlYW5cIiE9PXR5cGVvZiBDS0VESVRPUi5jb25maWcuc2NheXRfaGFuZGxlVW5kb1JlZG8mJihDS0VESVRPUi5jb25maWcuc2NheXRfaGFuZGxlVW5kb1JlZG89ITApO0NLRURJVE9SLmNvbmZpZy5zY2F5dF9oYW5kbGVVbmRvUmVkbz1DS0VESVRPUi5wbHVnaW5zLnVuZG8/Q0tFRElUT1IuY29uZmlnLnNjYXl0X2hhbmRsZVVuZG9SZWRvOiExO2EuY29uZmlnLnNjYXl0X2lnbm9yZUFsbENhcHNXb3JkcyYmXCJib29sZWFuXCIhPT10eXBlb2YgYS5jb25maWcuc2NheXRfaWdub3JlQWxsQ2Fwc1dvcmRzJiYoYS5jb25maWcuc2NheXRfaWdub3JlQWxsQ2Fwc1dvcmRzPSExKTthLmNvbmZpZy5zY2F5dF9pZ25vcmVEb21haW5OYW1lcyYmXCJib29sZWFuXCIhPT10eXBlb2YgYS5jb25maWcuc2NheXRfaWdub3JlRG9tYWluTmFtZXMmJihhLmNvbmZpZy5zY2F5dF9pZ25vcmVEb21haW5OYW1lcz0hMSk7YS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTWl4ZWRDYXNlcyYmXG5cImJvb2xlYW5cIiE9PXR5cGVvZiBhLmNvbmZpZy5zY2F5dF9pZ25vcmVXb3Jkc1dpdGhNaXhlZENhc2VzJiYoYS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTWl4ZWRDYXNlcz0hMSk7YS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTnVtYmVycyYmXCJib29sZWFuXCIhPT10eXBlb2YgYS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTnVtYmVycyYmKGEuY29uZmlnLnNjYXl0X2lnbm9yZVdvcmRzV2l0aE51bWJlcnM9ITEpO2lmKGEuY29uZmlnLnNjYXl0X2Rpc2FibGVPcHRpb25zU3RvcmFnZSl7dmFyIGY9Q0tFRElUT1IudG9vbHMuaXNBcnJheShhLmNvbmZpZy5zY2F5dF9kaXNhYmxlT3B0aW9uc1N0b3JhZ2UpP2EuY29uZmlnLnNjYXl0X2Rpc2FibGVPcHRpb25zU3RvcmFnZTpcInN0cmluZ1wiPT09dHlwZW9mIGEuY29uZmlnLnNjYXl0X2Rpc2FibGVPcHRpb25zU3RvcmFnZT9bYS5jb25maWcuc2NheXRfZGlzYWJsZU9wdGlvbnNTdG9yYWdlXTp2b2lkIDAsYz1cImFsbCBvcHRpb25zIGxhbmcgaWdub3JlLWFsbC1jYXBzLXdvcmRzIGlnbm9yZS1kb21haW4tbmFtZXMgaWdub3JlLXdvcmRzLXdpdGgtbWl4ZWQtY2FzZXMgaWdub3JlLXdvcmRzLXdpdGgtbnVtYmVyc1wiLnNwbGl0KFwiIFwiKSxcbms9W1wibGFuZ1wiLFwiaWdub3JlLWFsbC1jYXBzLXdvcmRzXCIsXCJpZ25vcmUtZG9tYWluLW5hbWVzXCIsXCJpZ25vcmUtd29yZHMtd2l0aC1taXhlZC1jYXNlc1wiLFwiaWdub3JlLXdvcmRzLXdpdGgtbnVtYmVyc1wiXSxsPUNLRURJVE9SLnRvb2xzLnNlYXJjaCxtPUNLRURJVE9SLnRvb2xzLmluZGV4T2Y7YS5jb25maWcuc2NheXRfZGlzYWJsZU9wdGlvbnNTdG9yYWdlPWZ1bmN0aW9uKGEpe2Zvcih2YXIgYj1bXSxlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPWFbZV0sdz0hIWwoYSxcIm9wdGlvbnNcIik7aWYoIWwoYyxmKXx8dyYmbChrLGZ1bmN0aW9uKGEpe2lmKFwibGFuZ1wiPT09YSlyZXR1cm4hMX0pKXJldHVybjtsKGssZikmJmsuc3BsaWNlKG0oayxmKSwxKTtpZihcImFsbFwiPT09Znx8dyYmbChhLFwibGFuZ1wiKSlyZXR1cm5bXTtcIm9wdGlvbnNcIj09PWYmJihrPVtcImxhbmdcIl0pfXJldHVybiBiPWIuY29uY2F0KGspfShmKX19LGFkZFJ1bGU6ZnVuY3Rpb24oYSl7dmFyIGY9Q0tFRElUT1IucGx1Z2lucy5zY2F5dCxcbmU9YS5kYXRhUHJvY2Vzc29yLGI9ZSYmZS5odG1sRmlsdGVyLGM9YS5fLmVsZW1lbnRzUGF0aCYmYS5fLmVsZW1lbnRzUGF0aC5maWx0ZXJzLGU9ZSYmZS5kYXRhRmlsdGVyLGs9YS5hZGRSZW1vdmVGb3JtYXRGaWx0ZXIsbD1mdW5jdGlvbihiKXtpZihhLnNjYXl0JiYoYi5oYXNBdHRyaWJ1dGUoZi5vcHRpb25zLmRhdGFfYXR0cmlidXRlX25hbWUpfHxiLmhhc0F0dHJpYnV0ZShmLm9wdGlvbnMucHJvYmxlbV9ncmFtbWFyX2RhdGFfYXR0cmlidXRlKSkpcmV0dXJuITF9LG09ZnVuY3Rpb24oYil7dmFyIGM9ITA7YS5zY2F5dCYmKGIuaGFzQXR0cmlidXRlKGYub3B0aW9ucy5kYXRhX2F0dHJpYnV0ZV9uYW1lKXx8Yi5oYXNBdHRyaWJ1dGUoZi5vcHRpb25zLnByb2JsZW1fZ3JhbW1hcl9kYXRhX2F0dHJpYnV0ZSkpJiYoYz0hMSk7cmV0dXJuIGN9O2MmJmMucHVzaChsKTtlJiZlLmFkZFJ1bGVzKHtlbGVtZW50czp7c3BhbjpmdW5jdGlvbihhKXt2YXIgYj1hLmhhc0NsYXNzKGYub3B0aW9ucy5taXNzcGVsbGVkX3dvcmRfY2xhc3MpJiZcbmEuYXR0cmlidXRlc1tmLm9wdGlvbnMuZGF0YV9hdHRyaWJ1dGVfbmFtZV0sYz1hLmhhc0NsYXNzKGYub3B0aW9ucy5wcm9ibGVtX2dyYW1tYXJfY2xhc3MpJiZhLmF0dHJpYnV0ZXNbZi5vcHRpb25zLnByb2JsZW1fZ3JhbW1hcl9kYXRhX2F0dHJpYnV0ZV07ZiYmKGJ8fGMpJiZkZWxldGUgYS5uYW1lO3JldHVybiBhfX19KTtiJiZiLmFkZFJ1bGVzKHtlbGVtZW50czp7c3BhbjpmdW5jdGlvbihhKXt2YXIgYj1hLmhhc0NsYXNzKGYub3B0aW9ucy5taXNzcGVsbGVkX3dvcmRfY2xhc3MpJiZhLmF0dHJpYnV0ZXNbZi5vcHRpb25zLmRhdGFfYXR0cmlidXRlX25hbWVdLGM9YS5oYXNDbGFzcyhmLm9wdGlvbnMucHJvYmxlbV9ncmFtbWFyX2NsYXNzKSYmYS5hdHRyaWJ1dGVzW2Yub3B0aW9ucy5wcm9ibGVtX2dyYW1tYXJfZGF0YV9hdHRyaWJ1dGVdO2YmJihifHxjKSYmZGVsZXRlIGEubmFtZTtyZXR1cm4gYX19fSk7ayYmay5jYWxsKGEsbSl9LHNjYXl0TWVudURlZmluaXRpb246ZnVuY3Rpb24oYSl7dmFyIGY9XG50aGlzLGU9Q0tFRElUT1IucGx1Z2lucy5zY2F5dDthPWEuc2NheXQ7cmV0dXJue3NjYXl0OntzY2F5dF9pZ25vcmU6e2xhYmVsOmEuZ2V0TG9jYWwoXCJidG5faWdub3JlXCIpLGdyb3VwOlwic2NheXRfY29udHJvbFwiLG9yZGVyOjEsZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0Lmlnbm9yZVdvcmQoKX19LHNjYXl0X2lnbm9yZWFsbDp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9pZ25vcmVBbGxcIiksZ3JvdXA6XCJzY2F5dF9jb250cm9sXCIsb3JkZXI6MixleGVjOmZ1bmN0aW9uKGEpe2Euc2NheXQuaWdub3JlQWxsV29yZHMoKX19LHNjYXl0X2FkZDp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9hZGRXb3JkXCIpLGdyb3VwOlwic2NheXRfY29udHJvbFwiLG9yZGVyOjMsZXhlYzpmdW5jdGlvbihhKXt2YXIgYz1hLnNjYXl0O3NldFRpbWVvdXQoZnVuY3Rpb24oKXtjLmFkZFdvcmRUb1VzZXJEaWN0aW9uYXJ5KCl9LDEwKX19LHNjYXl0X29wdGlvbjp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9vcHRpb25zXCIpLFxuZ3JvdXA6XCJzY2F5dF9jb250cm9sXCIsb3JkZXI6NCxleGVjOmZ1bmN0aW9uKGEpe2Euc2NheXQudGFiVG9PcGVuPVwib3B0aW9uc1wiO2Uub3BlbkRpYWxvZyhmLmRpYWxvZ05hbWUsYSl9LHZlcmlmaWNhdGlvbjpmdW5jdGlvbihhKXtyZXR1cm4gMT09YS5jb25maWcuc2NheXRfdWlUYWJzWzBdPyEwOiExfX0sc2NheXRfbGFuZ3VhZ2U6e2xhYmVsOmEuZ2V0TG9jYWwoXCJidG5fbGFuZ3NcIiksZ3JvdXA6XCJzY2F5dF9jb250cm9sXCIsb3JkZXI6NSxleGVjOmZ1bmN0aW9uKGEpe2Euc2NheXQudGFiVG9PcGVuPVwibGFuZ3NcIjtlLm9wZW5EaWFsb2coZi5kaWFsb2dOYW1lLGEpfSx2ZXJpZmljYXRpb246ZnVuY3Rpb24oYSl7cmV0dXJuIDE9PWEuY29uZmlnLnNjYXl0X3VpVGFic1sxXT8hMDohMX19LHNjYXl0X2RpY3Rpb25hcnk6e2xhYmVsOmEuZ2V0TG9jYWwoXCJidG5fZGljdGlvbmFyaWVzXCIpLGdyb3VwOlwic2NheXRfY29udHJvbFwiLG9yZGVyOjYsZXhlYzpmdW5jdGlvbihhKXthLnNjYXl0LnRhYlRvT3Blbj1cblwiZGljdGlvbmFyaWVzXCI7ZS5vcGVuRGlhbG9nKGYuZGlhbG9nTmFtZSxhKX0sdmVyaWZpY2F0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiAxPT1hLmNvbmZpZy5zY2F5dF91aVRhYnNbMl0/ITA6ITF9fSxzY2F5dF9hYm91dDp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9hYm91dFwiKSxncm91cDpcInNjYXl0X2NvbnRyb2xcIixvcmRlcjo3LGV4ZWM6ZnVuY3Rpb24oYSl7YS5zY2F5dC50YWJUb09wZW49XCJhYm91dFwiO2Uub3BlbkRpYWxvZyhmLmRpYWxvZ05hbWUsYSl9fX0sZ3JheXQ6e2dyYXl0X3Byb2JsZW1kZXNjcmlwdGlvbjp7bGFiZWw6XCJHcmFtbWFyIHByb2JsZW0gZGVzY3JpcHRpb25cIixncm91cDpcImdyYXl0X2Rlc2NyaXB0aW9uXCIsb3JkZXI6MSxzdGF0ZTpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCxleGVjOmZ1bmN0aW9uKGEpe319LGdyYXl0X2lnbm9yZTp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9pZ25vcmVcIiksZ3JvdXA6XCJncmF5dF9jb250cm9sXCIsb3JkZXI6MixleGVjOmZ1bmN0aW9uKGEpe2Euc2NheXQuaWdub3JlUGhyYXNlKCl9fSxcbmdyYXl0X2lnbm9yZWFsbDp7bGFiZWw6YS5nZXRMb2NhbChcImJ0bl9pZ25vcmVBbGxcIiksZ3JvdXA6XCJncmF5dF9jb250cm9sXCIsb3JkZXI6MyxleGVjOmZ1bmN0aW9uKGEpe2Euc2NheXQuaWdub3JlQWxsUGhyYXNlcygpfX19fX0sYnVpbGRTdWdnZXN0aW9uTWVudUl0ZW1zOmZ1bmN0aW9uKGEsZixlKXt2YXIgYj17fSxjPXt9LGs9ZT9cIndvcmRcIjpcInBocmFzZVwiLGw9ZT9cInN0YXJ0R3JhbW1hckNoZWNrXCI6XCJzdGFydFNwZWxsQ2hlY2tcIixtPWEuc2NheXQ7aWYoMDxmLmxlbmd0aCYmXCJub19hbnlfc3VnZ2VzdGlvbnNcIiE9PWZbMF0paWYoZSlmb3IoZT0wO2U8Zi5sZW5ndGg7ZSsrKXt2YXIgZD1cInNjYXl0X3N1Z2dlc3RfXCIrQ0tFRElUT1IucGx1Z2lucy5zY2F5dC5zdWdnZXN0aW9uc1tlXS5yZXBsYWNlKFwiIFwiLFwiX1wiKTthLmFkZENvbW1hbmQoZCx0aGlzLmNyZWF0ZUNvbW1hbmQoQ0tFRElUT1IucGx1Z2lucy5zY2F5dC5zdWdnZXN0aW9uc1tlXSxrLGwpKTtlPGEuY29uZmlnLnNjYXl0X21heFN1Z2dlc3Rpb25zP1xuKGEuYWRkTWVudUl0ZW0oZCx7bGFiZWw6ZltlXSxjb21tYW5kOmQsZ3JvdXA6XCJzY2F5dF9zdWdnZXN0XCIsb3JkZXI6ZSsxfSksYltkXT1DS0VESVRPUi5UUklTVEFURV9PRkYpOihhLmFkZE1lbnVJdGVtKGQse2xhYmVsOmZbZV0sY29tbWFuZDpkLGdyb3VwOlwic2NheXRfbW9yZXN1Z2dlc3RcIixvcmRlcjplKzF9KSxjW2RdPUNLRURJVE9SLlRSSVNUQVRFX09GRixcIm9uXCI9PT1hLmNvbmZpZy5zY2F5dF9tb3JlU3VnZ2VzdGlvbnMmJihhLmFkZE1lbnVJdGVtKFwic2NheXRfbW9yZXN1Z2dlc3RcIix7bGFiZWw6bS5nZXRMb2NhbChcImJ0bl9tb3JlU3VnZ2VzdGlvbnNcIiksZ3JvdXA6XCJzY2F5dF9tb3Jlc3VnZ2VzdFwiLG9yZGVyOjEwLGdldEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJuIGN9fSksYi5zY2F5dF9tb3Jlc3VnZ2VzdD1DS0VESVRPUi5UUklTVEFURV9PRkYpKX1lbHNlIGZvcihlPTA7ZTxmLmxlbmd0aDtlKyspZD1cImdyYXl0X3N1Z2dlc3RfXCIrQ0tFRElUT1IucGx1Z2lucy5zY2F5dC5zdWdnZXN0aW9uc1tlXS5yZXBsYWNlKFwiIFwiLFxuXCJfXCIpLGEuYWRkQ29tbWFuZChkLHRoaXMuY3JlYXRlQ29tbWFuZChDS0VESVRPUi5wbHVnaW5zLnNjYXl0LnN1Z2dlc3Rpb25zW2VdLGssbCkpLGEuYWRkTWVudUl0ZW0oZCx7bGFiZWw6ZltlXSxjb21tYW5kOmQsZ3JvdXA6XCJncmF5dF9zdWdnZXN0XCIsb3JkZXI6ZSsxfSksYltkXT1DS0VESVRPUi5UUklTVEFURV9PRkY7ZWxzZSBiLm5vX3NjYXl0X3N1Z2dlc3Q9Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQsYS5hZGRDb21tYW5kKFwibm9fc2NheXRfc3VnZ2VzdFwiLHtleGVjOmZ1bmN0aW9uKCl7fX0pLGEuYWRkTWVudUl0ZW0oXCJub19zY2F5dF9zdWdnZXN0XCIse2xhYmVsOm0uZ2V0TG9jYWwoXCJidG5fbm9TdWdnZXN0aW9uc1wiKXx8XCJub19zY2F5dF9zdWdnZXN0XCIsY29tbWFuZDpcIm5vX3NjYXl0X3N1Z2dlc3RcIixncm91cDpcInNjYXl0X3N1Z2dlc3RcIixvcmRlcjowfSk7cmV0dXJuIGJ9LG1lbnVHZW5lcmF0b3I6ZnVuY3Rpb24oYSxmKXt2YXIgZT1hLnNjYXl0LGI9dGhpcy5zY2F5dE1lbnVEZWZpbml0aW9uKGEpLFxuYz17fSxrPWEuY29uZmlnLnNjYXl0X2NvbnRleHRDb21tYW5kcy5zcGxpdChcInxcIiksbD1mLmdldEF0dHJpYnV0ZShlLmdldExhbmdBdHRyaWJ1dGUoKSl8fGUuZ2V0TGFuZygpLG0sZCxoLGc7ZD1lLmlzU2NheXROb2RlKGYpO2g9ZS5pc0dyYXl0Tm9kZShmKTtkPyhiPWIuc2NheXQsbT1mLmdldEF0dHJpYnV0ZShlLmdldFNjYXl0Tm9kZUF0dHJpYnV0ZU5hbWUoKSksZS5maXJlKFwiZ2V0U3VnZ2VzdGlvbnNMaXN0XCIse2xhbmc6bCx3b3JkOm19KSxjPXRoaXMuYnVpbGRTdWdnZXN0aW9uTWVudUl0ZW1zKGEsQ0tFRElUT1IucGx1Z2lucy5zY2F5dC5zdWdnZXN0aW9ucyxkKSk6aCYmKGI9Yi5ncmF5dCxjPWYuZ2V0QXR0cmlidXRlKGUuZ2V0R3JheXROb2RlQXR0cmlidXRlTmFtZSgpKSxlLmdldEdyYXl0Tm9kZVJ1bGVBdHRyaWJ1dGVOYW1lPyhtPWYuZ2V0QXR0cmlidXRlKGUuZ2V0R3JheXROb2RlUnVsZUF0dHJpYnV0ZU5hbWUoKSksZS5nZXRQcm9ibGVtRGVzY3JpcHRpb25UZXh0KGMsXG5tLGwpKTplLmdldFByb2JsZW1EZXNjcmlwdGlvblRleHQoYyxsKSxnPWUuZ2V0UHJvYmxlbURlc2NyaXB0aW9uVGV4dChjLG0sbCksYi5ncmF5dF9wcm9ibGVtZGVzY3JpcHRpb24mJmcmJihnPWcucmVwbGFjZSgvKFsuIT9dKVxccy9nLFwiJDFcXHgzY2JyXFx4M2VcIiksYi5ncmF5dF9wcm9ibGVtZGVzY3JpcHRpb24ubGFiZWw9ZyksZS5maXJlKFwiZ2V0R3JhbW1hclN1Z2dlc3Rpb25zTGlzdFwiLHtsYW5nOmwscGhyYXNlOmMscnVsZTptfSksYz10aGlzLmJ1aWxkU3VnZ2VzdGlvbk1lbnVJdGVtcyhhLENLRURJVE9SLnBsdWdpbnMuc2NheXQuc3VnZ2VzdGlvbnMsZCkpO2lmKGQmJlwib2ZmXCI9PWEuY29uZmlnLnNjYXl0X2NvbnRleHRDb21tYW5kcylyZXR1cm4gYztmb3IodmFyIG4gaW4gYilkJiYtMT09Q0tFRElUT1IudG9vbHMuaW5kZXhPZihrLG4ucmVwbGFjZShcInNjYXl0X1wiLFwiXCIpKSYmXCJhbGxcIiE9YS5jb25maWcuc2NheXRfY29udGV4dENvbW1hbmRzfHxoJiZcImdyYXl0X3Byb2JsZW1kZXNjcmlwdGlvblwiIT09XG5uJiYtMT09Q0tFRElUT1IudG9vbHMuaW5kZXhPZihrLG4ucmVwbGFjZShcImdyYXl0X1wiLFwiXCIpKSYmXCJhbGxcIiE9YS5jb25maWcuc2NheXRfY29udGV4dENvbW1hbmRzfHwoY1tuXT1cInVuZGVmaW5lZFwiIT10eXBlb2YgYltuXS5zdGF0ZT9iW25dLnN0YXRlOkNLRURJVE9SLlRSSVNUQVRFX09GRixcImZ1bmN0aW9uXCIhPT10eXBlb2YgYltuXS52ZXJpZmljYXRpb258fGJbbl0udmVyaWZpY2F0aW9uKGEpfHxkZWxldGUgY1tuXSxhLmFkZENvbW1hbmQobix7ZXhlYzpiW25dLmV4ZWN9KSxhLmFkZE1lbnVJdGVtKG4se2xhYmVsOmEubGFuZy5zY2F5dFtiW25dLmxhYmVsXXx8YltuXS5sYWJlbCxjb21tYW5kOm4sZ3JvdXA6YltuXS5ncm91cCxvcmRlcjpiW25dLm9yZGVyfSkpO3JldHVybiBjfSxjcmVhdGVDb21tYW5kOmZ1bmN0aW9uKGEsZixlKXtyZXR1cm57ZXhlYzpmdW5jdGlvbihiKXtiPWIuc2NheXQ7dmFyIGM9e307Y1tmXT1hO2IucmVwbGFjZVNlbGVjdGlvbk5vZGUoYyk7XCJzdGFydEdyYW1tYXJDaGVja1wiPT09XG5lJiZiLnJlbW92ZU1hcmt1cEluU2VsZWN0aW9uTm9kZSh7Z3JhbW1hck9ubHk6ITB9KTtiLmZpcmUoZSl9fX19KSxDS0VESVRPUi5wbHVnaW5zLnNjYXl0PXtjaGFyc1RvT2JzZXJ2ZTpbe2NoYXJOYW1lOlwiY2tlLWZpbGxpbmdDaGFyXCIsY2hhckNvZGU6ZnVuY3Rpb24oKXt2YXIgYT1DS0VESVRPUi52ZXJzaW9uLGY9WzQsNSw2XSxlPVN0cmluZy5mcm9tQ2hhckNvZGUoODIwMyksYj1BcnJheSg4KS5qb2luKGUpLGMsaztpZighYSlyZXR1cm4gZTtmb3IodmFyIGE9YS5zcGxpdChcIi5cIiksbD0wO2w8Zi5sZW5ndGg7bCsrKXtjPWZbbF07az1OdW1iZXIoYVtsXSk7aWYoaz5jKXJldHVybiBiO2lmKGs8YylicmVha31yZXR1cm4gZX0oKX1dLHN0YXRlOntzY2F5dDp7fSxncmF5dDp7fX0sd2FybmluZ0NvdW50ZXI6MCxzdWdnZXN0aW9uczpbXSxvcHRpb25zOntkaXNhYmxpbmdDb21tYW5kRXhlYzp7c291cmNlOiEwLG5ld3BhZ2U6ITAsdGVtcGxhdGVzOiEwfSxkYXRhX2F0dHJpYnV0ZV9uYW1lOlwiZGF0YS1zY2F5dC13b3JkXCIsXG5taXNzcGVsbGVkX3dvcmRfY2xhc3M6XCJzY2F5dC1taXNzcGVsbC13b3JkXCIscHJvYmxlbV9ncmFtbWFyX2RhdGFfYXR0cmlidXRlOlwiZGF0YS1ncmF5dC1waHJhc2VcIixwcm9ibGVtX2dyYW1tYXJfY2xhc3M6XCJncmFtbS1wcm9ibGVtXCJ9LGJhY2tDb21wYXRpYmlsaXR5TWFwOntzY2F5dF9zZXJ2aWNlX3Byb3RvY29sOlwic2NheXRfc2VydmljZVByb3RvY29sXCIsc2NheXRfc2VydmljZV9ob3N0Olwic2NheXRfc2VydmljZUhvc3RcIixzY2F5dF9zZXJ2aWNlX3BvcnQ6XCJzY2F5dF9zZXJ2aWNlUG9ydFwiLHNjYXl0X3NlcnZpY2VfcGF0aDpcInNjYXl0X3NlcnZpY2VQYXRoXCIsc2NheXRfY3VzdG9tZXJpZDpcInNjYXl0X2N1c3RvbWVySWRcIn0sb3BlbkRpYWxvZzpmdW5jdGlvbihhLGYpe3ZhciBlPWYuc2NheXQ7ZS5pc0FsbE1vZHVsZXNSZWFkeSYmITE9PT1lLmlzQWxsTW9kdWxlc1JlYWR5KCl8fChmLmxvY2tTZWxlY3Rpb24oKSxmLm9wZW5EaWFsb2coYSkpfSxhbGFybUNvbXBhdGliaWxpdHlNZXNzYWdlOmZ1bmN0aW9uKCl7NT5cbnRoaXMud2FybmluZ0NvdW50ZXImJihjb25zb2xlLndhcm4oXCJZb3UgYXJlIHVzaW5nIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBTQ0FZVCBwbHVnaW4gZm9yIENLRWRpdG9yIHdpdGggdGhlIG9sZCBhcHBsaWNhdGlvbiB2ZXJzaW9uLiBJbiBvcmRlciB0byBoYXZlIGFjY2VzcyB0byB0aGUgbmV3ZXN0IGZlYXR1cmVzLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1cGdyYWRlIHRoZSBhcHBsaWNhdGlvbiB2ZXJzaW9uIHRvIGxhdGVzdCBvbmUgYXMgd2VsbC4gQ29udGFjdCB1cyBmb3IgbW9yZSBkZXRhaWxzIGF0IHN1cHBvcnRAd2Vic3BlbGxjaGVja2VyLm5ldC5cIiksdGhpcy53YXJuaW5nQ291bnRlcis9MSl9LGlzTmV3VWRTdXBwb3J0ZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0VXNlckRpY3Rpb25hcnk/ITA6ITF9LHJlbG9hZE1hcmt1cDpmdW5jdGlvbihhKXt2YXIgZjthJiYoZj1hLmdldFNjYXl0TGFuZ0xpc3QoKSxhLnJlbG9hZE1hcmt1cD9hLnJlbG9hZE1hcmt1cCgpOih0aGlzLmFsYXJtQ29tcGF0aWJpbGl0eU1lc3NhZ2UoKSxcbmYmJmYubHRyJiZmLnJ0bCYmYS5maXJlKFwic3RhcnRTcGVsbENoZWNrLCBzdGFydEdyYW1tYXJDaGVja1wiKSkpfSxyZXBsYWNlT2xkT3B0aW9uc05hbWVzOmZ1bmN0aW9uKGEpe2Zvcih2YXIgZiBpbiBhKWYgaW4gdGhpcy5iYWNrQ29tcGF0aWJpbGl0eU1hcCYmKGFbdGhpcy5iYWNrQ29tcGF0aWJpbGl0eU1hcFtmXV09YVtmXSxkZWxldGUgYVtmXSl9LGNyZWF0ZVNjYXl0OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXMsZT1DS0VESVRPUi5wbHVnaW5zLnNjYXl0O3RoaXMubG9hZFNjYXl0TGlicmFyeShhLGZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIG5ldyBTQ0FZVC5DS1NDQVlUKGEsZnVuY3Rpb24oKXt9LGZ1bmN0aW9uKCl7fSl9dmFyIGs7YS53aW5kb3cmJihrPVwiQk9EWVwiPT1hLmVkaXRhYmxlKCkuJC5ub2RlTmFtZT9hLndpbmRvdy5nZXRGcmFtZSgpOmEuZWRpdGFibGUoKSk7aWYoayl7az17bGFuZzphLmNvbmZpZy5zY2F5dF9zTGFuZyxjb250YWluZXI6ay4kLGN1c3RvbURpY3Rpb25hcnk6YS5jb25maWcuc2NheXRfY3VzdG9tRGljdGlvbmFyeUlkcyxcbnVzZXJEaWN0aW9uYXJ5TmFtZTphLmNvbmZpZy5zY2F5dF91c2VyRGljdGlvbmFyeU5hbWUsbG9jYWxpemF0aW9uOmEubGFuZ0NvZGUsY3VzdG9tZXJfaWQ6YS5jb25maWcuc2NheXRfY3VzdG9tZXJJZCxjdXN0b21QdW5jdHVhdGlvbjphLmNvbmZpZy5zY2F5dF9jdXN0b21QdW5jdHVhdGlvbixkZWJ1ZzphLmNvbmZpZy5zY2F5dF9kZWJ1ZyxkYXRhX2F0dHJpYnV0ZV9uYW1lOmYub3B0aW9ucy5kYXRhX2F0dHJpYnV0ZV9uYW1lLG1pc3NwZWxsZWRfd29yZF9jbGFzczpmLm9wdGlvbnMubWlzc3BlbGxlZF93b3JkX2NsYXNzLHByb2JsZW1fZ3JhbW1hcl9kYXRhX2F0dHJpYnV0ZTpmLm9wdGlvbnMucHJvYmxlbV9ncmFtbWFyX2RhdGFfYXR0cmlidXRlLHByb2JsZW1fZ3JhbW1hcl9jbGFzczpmLm9wdGlvbnMucHJvYmxlbV9ncmFtbWFyX2NsYXNzLFwib3B0aW9ucy10by1yZXN0b3JlXCI6YS5jb25maWcuc2NheXRfZGlzYWJsZU9wdGlvbnNTdG9yYWdlLGZvY3VzZWQ6YS5lZGl0YWJsZSgpLmhhc0ZvY3VzLFxuaWdub3JlRWxlbWVudHNSZWdleDphLmNvbmZpZy5zY2F5dF9lbGVtZW50c1RvSWdub3JlLGlnbm9yZUdyYXl0RWxlbWVudHNSZWdleDphLmNvbmZpZy5ncmF5dF9lbGVtZW50c1RvSWdub3JlLG1pbldvcmRMZW5ndGg6YS5jb25maWcuc2NheXRfbWluV29yZExlbmd0aCxncmF5dEF1dG9TdGFydHVwOmEuY29uZmlnLmdyYXl0X2F1dG9TdGFydHVwLGNoYXJzVG9PYnNlcnZlOmUuY2hhcnNUb09ic2VydmV9O2EuY29uZmlnLnNjYXl0X3NlcnZpY2VQcm90b2NvbCYmKGsuc2VydmljZV9wcm90b2NvbD1hLmNvbmZpZy5zY2F5dF9zZXJ2aWNlUHJvdG9jb2wpO2EuY29uZmlnLnNjYXl0X3NlcnZpY2VIb3N0JiYoay5zZXJ2aWNlX2hvc3Q9YS5jb25maWcuc2NheXRfc2VydmljZUhvc3QpO2EuY29uZmlnLnNjYXl0X3NlcnZpY2VQb3J0JiYoay5zZXJ2aWNlX3BvcnQ9YS5jb25maWcuc2NheXRfc2VydmljZVBvcnQpO2EuY29uZmlnLnNjYXl0X3NlcnZpY2VQYXRoJiYoay5zZXJ2aWNlX3BhdGg9XG5hLmNvbmZpZy5zY2F5dF9zZXJ2aWNlUGF0aCk7XCJib29sZWFuXCI9PT10eXBlb2YgYS5jb25maWcuc2NheXRfaWdub3JlQWxsQ2Fwc1dvcmRzJiYoa1tcImlnbm9yZS1hbGwtY2Fwcy13b3Jkc1wiXT1hLmNvbmZpZy5zY2F5dF9pZ25vcmVBbGxDYXBzV29yZHMpO1wiYm9vbGVhblwiPT09dHlwZW9mIGEuY29uZmlnLnNjYXl0X2lnbm9yZURvbWFpbk5hbWVzJiYoa1tcImlnbm9yZS1kb21haW4tbmFtZXNcIl09YS5jb25maWcuc2NheXRfaWdub3JlRG9tYWluTmFtZXMpO1wiYm9vbGVhblwiPT09dHlwZW9mIGEuY29uZmlnLnNjYXl0X2lnbm9yZVdvcmRzV2l0aE1peGVkQ2FzZXMmJihrW1wiaWdub3JlLXdvcmRzLXdpdGgtbWl4ZWQtY2FzZXNcIl09YS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTWl4ZWRDYXNlcyk7XCJib29sZWFuXCI9PT10eXBlb2YgYS5jb25maWcuc2NheXRfaWdub3JlV29yZHNXaXRoTnVtYmVycyYmKGtbXCJpZ25vcmUtd29yZHMtd2l0aC1udW1iZXJzXCJdPWEuY29uZmlnLnNjYXl0X2lnbm9yZVdvcmRzV2l0aE51bWJlcnMpO1xudmFyIGw7dHJ5e2w9YyhrKX1jYXRjaChtKXtmLmFsYXJtQ29tcGF0aWJpbGl0eU1lc3NhZ2UoKSxkZWxldGUgay5jaGFyc1RvT2JzZXJ2ZSxsPWMoayl9bC5zdWJzY3JpYmUoXCJzdWdnZXN0aW9uTGlzdFNlbmRcIixmdW5jdGlvbihhKXtmb3IodmFyIGI9e30sYz1bXSxlPTA7ZTxhLnN1Z2dlc3Rpb25MaXN0Lmxlbmd0aDtlKyspYltcIndvcmRfXCIrYS5zdWdnZXN0aW9uTGlzdFtlXV18fChiW1wid29yZF9cIithLnN1Z2dlc3Rpb25MaXN0W2VdXT1hLnN1Z2dlc3Rpb25MaXN0W2VdLGMucHVzaChhLnN1Z2dlc3Rpb25MaXN0W2VdKSk7Q0tFRElUT1IucGx1Z2lucy5zY2F5dC5zdWdnZXN0aW9ucz1jfSk7bC5zdWJzY3JpYmUoXCJzZWxlY3Rpb25Jc0NoYW5nZWRcIixmdW5jdGlvbihkKXthLmdldFNlbGVjdGlvbigpLmlzTG9ja2VkJiZcInJlc3RvcmVTZWxlY3Rpb25cIiE9PWQuYWN0aW9uJiZhLmxvY2tTZWxlY3Rpb24oKTtcInJlc3RvcmVTZWxlY3Rpb25cIj09PWQuYWN0aW9uJiZhLnNlbGVjdGlvbkNoYW5nZSghMCl9KTtcbmwuc3Vic2NyaWJlKFwiZ3JheXRTdGF0ZUNoYW5nZWRcIixmdW5jdGlvbihkKXtlLnN0YXRlLmdyYXl0W2EubmFtZV09ZC5zdGF0ZX0pO2wuYWRkTWFya3VwSGFuZGxlciYmbC5hZGRNYXJrdXBIYW5kbGVyKGZ1bmN0aW9uKGQpe3ZhciBjPWEuZWRpdGFibGUoKSxlPWMuZ2V0Q3VzdG9tRGF0YShkLmNoYXJOYW1lKTtlJiYoZS4kPWQubm9kZSxjLnNldEN1c3RvbURhdGEoZC5jaGFyTmFtZSxlKSl9KTthLnNjYXl0PWw7YS5maXJlKFwic2NheXRCdXR0b25TdGF0ZVwiLGEucmVhZE9ubHk/Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQ6Q0tFRElUT1IuVFJJU1RBVEVfT04pfWVsc2UgZS5zdGF0ZS5zY2F5dFthLm5hbWVdPSExfSl9LGRlc3Ryb3k6ZnVuY3Rpb24oYSl7YS5zY2F5dCYmYS5zY2F5dC5kZXN0cm95KCk7ZGVsZXRlIGEuc2NheXQ7YS5maXJlKFwic2NheXRCdXR0b25TdGF0ZVwiLENLRURJVE9SLlRSSVNUQVRFX09GRil9LGxvYWRTY2F5dExpYnJhcnk6ZnVuY3Rpb24oYSxmKXt2YXIgZSxcbmI9ZnVuY3Rpb24oKXtDS0VESVRPUi5maXJlT25jZShcInNjYXl0UmVhZHlcIik7YS5zY2F5dHx8XCJmdW5jdGlvblwiPT09dHlwZW9mIGYmJmYoYSl9O1widW5kZWZpbmVkXCI9PT10eXBlb2Ygd2luZG93LlNDQVlUfHxcImZ1bmN0aW9uXCIhPT10eXBlb2Ygd2luZG93LlNDQVlULkNLU0NBWVQ/KGU9YS5jb25maWcuc2NheXRfc3JjVXJsLENLRURJVE9SLnNjcmlwdExvYWRlci5sb2FkKGUsZnVuY3Rpb24oYSl7YSYmYigpfSkpOndpbmRvdy5TQ0FZVCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIHdpbmRvdy5TQ0FZVC5DS1NDQVlUJiZiKCl9fSxDS0VESVRPUi5vbihcImRpYWxvZ0RlZmluaXRpb25cIixmdW5jdGlvbihhKXt2YXIgZj1hLmRhdGEubmFtZTthPWEuZGF0YS5kZWZpbml0aW9uLmRpYWxvZztcInNjYXl0RGlhbG9nXCIhPT1mJiZcImNoZWNrc3BlbGxcIiE9PWYmJihhLm9uKFwic2hvd1wiLGZ1bmN0aW9uKGEpe2E9YS5zZW5kZXImJmEuc2VuZGVyLmdldFBhcmVudEVkaXRvcigpO3ZhciBiPUNLRURJVE9SLnBsdWdpbnMuc2NheXQsXG5jPWEuc2NheXQ7YyYmYi5zdGF0ZS5zY2F5dFthLm5hbWVdJiZjLnNldE1hcmt1cFBhdXNlZCYmYy5zZXRNYXJrdXBQYXVzZWQoITApfSksYS5vbihcImhpZGVcIixmdW5jdGlvbihhKXthPWEuc2VuZGVyJiZhLnNlbmRlci5nZXRQYXJlbnRFZGl0b3IoKTt2YXIgYj1DS0VESVRPUi5wbHVnaW5zLnNjYXl0LGM9YS5zY2F5dDtjJiZiLnN0YXRlLnNjYXl0W2EubmFtZV0mJmMuc2V0TWFya3VwUGF1c2VkJiZjLnNldE1hcmt1cFBhdXNlZCghMSl9KSk7aWYoXCJzY2F5dERpYWxvZ1wiPT09ZilhLm9uKFwiY2FuY2VsXCIsZnVuY3Rpb24oYSl7cmV0dXJuITF9LHRoaXMsbnVsbCwtMSk7aWYoXCJjaGVja3NwZWxsXCI9PT1mKWEub24oXCJjYW5jZWxcIixmdW5jdGlvbihhKXthPWEuc2VuZGVyJiZhLnNlbmRlci5nZXRQYXJlbnRFZGl0b3IoKTt2YXIgYj1DS0VESVRPUi5wbHVnaW5zLnNjYXl0LGM9YS5zY2F5dDtjJiZiLnN0YXRlLnNjYXl0W2EubmFtZV0mJmMuc2V0TWFya3VwUGF1c2VkJiZjLnNldE1hcmt1cFBhdXNlZCghMSk7XG5hLnVubG9ja1NlbGVjdGlvbigpfSx0aGlzLG51bGwsLTIpO2lmKFwibGlua1wiPT09ZilhLm9uKFwib2tcIixmdW5jdGlvbihhKXt2YXIgYj1hLnNlbmRlciYmYS5zZW5kZXIuZ2V0UGFyZW50RWRpdG9yKCk7YiYmc2V0VGltZW91dChmdW5jdGlvbigpe2IuZmlyZShcInJlbG9hZE1hcmt1cFNjYXl0XCIse3JlbW92ZU9wdGlvbnM6e3JlbW92ZUluc2lkZTohMCxmb3JjZUJvb2ttYXJrOiEwfSx0aW1lb3V0OjB9KX0sMCl9KTtpZihcInJlcGxhY2VcIj09PWYpYS5vbihcImhpZGVcIixmdW5jdGlvbihhKXthPWEuc2VuZGVyJiZhLnNlbmRlci5nZXRQYXJlbnRFZGl0b3IoKTt2YXIgYj1DS0VESVRPUi5wbHVnaW5zLnNjYXl0LGM9YS5zY2F5dDthJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7YyYmKGMuZmlyZShcInJlbW92ZU1hcmt1cEluRG9jdW1lbnRcIix7fSksYi5yZWxvYWRNYXJrdXAoYykpfSwwKX0pfSksQ0tFRElUT1Iub24oXCJzY2F5dFJlYWR5XCIsZnVuY3Rpb24oKXtpZighMD09PUNLRURJVE9SLmNvbmZpZy5zY2F5dF9oYW5kbGVDaGVja0RpcnR5KXt2YXIgYT1cbkNLRURJVE9SLmVkaXRvci5wcm90b3R5cGU7YS5jaGVja0RpcnR5PUNLRURJVE9SLnRvb2xzLm92ZXJyaWRlKGEuY2hlY2tEaXJ0eSxmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oKXt2YXIgYj1udWxsLGM9dGhpcy5zY2F5dDtpZihDS0VESVRPUi5wbHVnaW5zLnNjYXl0JiZDS0VESVRPUi5wbHVnaW5zLnNjYXl0LnN0YXRlLnNjYXl0W3RoaXMubmFtZV0mJnRoaXMuc2NheXQpe2lmKGI9XCJyZWFkeVwiPT10aGlzLnN0YXR1cyl2YXIgZj1jLnJlbW92ZU1hcmt1cEZyb21TdHJpbmcodGhpcy5nZXRTbmFwc2hvdCgpKSxjPWMucmVtb3ZlTWFya3VwRnJvbVN0cmluZyh0aGlzLl8ucHJldmlvdXNWYWx1ZSksYj1iJiZjIT09Zn1lbHNlIGI9YS5jYWxsKHRoaXMpO3JldHVybiBifX0pO2EucmVzZXREaXJ0eT1DS0VESVRPUi50b29scy5vdmVycmlkZShhLnJlc2V0RGlydHksZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5zY2F5dDtDS0VESVRPUi5wbHVnaW5zLnNjYXl0JiZcbkNLRURJVE9SLnBsdWdpbnMuc2NheXQuc3RhdGUuc2NheXRbdGhpcy5uYW1lXSYmdGhpcy5zY2F5dD90aGlzLl8ucHJldmlvdXNWYWx1ZT1iLnJlbW92ZU1hcmt1cEZyb21TdHJpbmcodGhpcy5nZXRTbmFwc2hvdCgpKTphLmNhbGwodGhpcyl9fSl9aWYoITA9PT1DS0VESVRPUi5jb25maWcuc2NheXRfaGFuZGxlVW5kb1JlZG8pe3ZhciBhPUNLRURJVE9SLnBsdWdpbnMudW5kby5JbWFnZS5wcm90b3R5cGUsZj1cImZ1bmN0aW9uXCI9PXR5cGVvZiBhLmVxdWFsc0NvbnRlbnQ/XCJlcXVhbHNDb250ZW50XCI6XCJlcXVhbHNcIjthW2ZdPUNLRURJVE9SLnRvb2xzLm92ZXJyaWRlKGFbZl0sZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPWIuZWRpdG9yLnNjYXl0LGY9dGhpcy5jb250ZW50cyxsPWIuY29udGVudHMsbT1udWxsO0NLRURJVE9SLnBsdWdpbnMuc2NheXQmJkNLRURJVE9SLnBsdWdpbnMuc2NheXQuc3RhdGUuc2NheXRbYi5lZGl0b3IubmFtZV0mJmIuZWRpdG9yLnNjYXl0JiZcbih0aGlzLmNvbnRlbnRzPWMucmVtb3ZlTWFya3VwRnJvbVN0cmluZyhmKXx8XCJcIixiLmNvbnRlbnRzPWMucmVtb3ZlTWFya3VwRnJvbVN0cmluZyhsKXx8XCJcIik7bT1hLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLmNvbnRlbnRzPWY7Yi5jb250ZW50cz1sO3JldHVybiBtfX0pfX0pLGZ1bmN0aW9uKCl7dmFyIGE9e3ByZXNlcnZlU3RhdGU6ITAsZWRpdG9yRm9jdXM6ITEscmVhZE9ubHk6MSxleGVjOmZ1bmN0aW9uKGEpe3RoaXMudG9nZ2xlU3RhdGUoKTt0aGlzLnJlZnJlc2goYSl9LHJlZnJlc2g6ZnVuY3Rpb24oYSl7aWYoYS5kb2N1bWVudCl7dmFyIGU9dGhpcy5zdGF0ZT09Q0tFRElUT1IuVFJJU1RBVEVfT04/XCJhdHRhY2hDbGFzc1wiOlwicmVtb3ZlQ2xhc3NcIjthLmVkaXRhYmxlKClbZV0oXCJja2Vfc2hvd19ib3JkZXJzXCIpfX19O0NLRURJVE9SLnBsdWdpbnMuYWRkKFwic2hvd2JvcmRlcnNcIix7bW9kZXM6e3d5c2l3eWc6MX0sb25Mb2FkOmZ1bmN0aW9uKCl7dmFyIGE7YT0oQ0tFRElUT1IuZW52LmllNkNvbXBhdD9cbltcIi4lMSB0YWJsZS4lMixcIixcIi4lMSB0YWJsZS4lMiB0ZCwgLiUxIHRhYmxlLiUyIHRoXCIsXCJ7XCIsXCJib3JkZXIgOiAjZDNkM2QzIDFweCBkb3R0ZWRcIixcIn1cIl06XCIuJTEgdGFibGUuJTIsOy4lMSB0YWJsZS4lMiBcXHgzZSB0ciBcXHgzZSB0ZCwgLiUxIHRhYmxlLiUyIFxceDNlIHRyIFxceDNlIHRoLDsuJTEgdGFibGUuJTIgXFx4M2UgdGJvZHkgXFx4M2UgdHIgXFx4M2UgdGQsIC4lMSB0YWJsZS4lMiBcXHgzZSB0Ym9keSBcXHgzZSB0ciBcXHgzZSB0aCw7LiUxIHRhYmxlLiUyIFxceDNlIHRoZWFkIFxceDNlIHRyIFxceDNlIHRkLCAuJTEgdGFibGUuJTIgXFx4M2UgdGhlYWQgXFx4M2UgdHIgXFx4M2UgdGgsOy4lMSB0YWJsZS4lMiBcXHgzZSB0Zm9vdCBcXHgzZSB0ciBcXHgzZSB0ZCwgLiUxIHRhYmxlLiUyIFxceDNlIHRmb290IFxceDNlIHRyIFxceDNlIHRoO3s7Ym9yZGVyIDogI2QzZDNkMyAxcHggZG90dGVkO31cIi5zcGxpdChcIjtcIikpLmpvaW4oXCJcIikucmVwbGFjZSgvJTIvZyxcImNrZV9zaG93X2JvcmRlclwiKS5yZXBsYWNlKC8lMS9nLFxuXCJja2Vfc2hvd19ib3JkZXJzIFwiKTtDS0VESVRPUi5hZGRDc3MoYSl9LGluaXQ6ZnVuY3Rpb24oZil7dmFyIGU9Zi5hZGRDb21tYW5kKFwic2hvd2JvcmRlcnNcIixhKTtlLmNhblVuZG89ITE7ITEhPT1mLmNvbmZpZy5zdGFydHVwU2hvd0JvcmRlcnMmJmUuc2V0U3RhdGUoQ0tFRElUT1IuVFJJU1RBVEVfT04pO2Yub24oXCJtb2RlXCIsZnVuY3Rpb24oKXtlLnN0YXRlIT1DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCYmZS5yZWZyZXNoKGYpfSxudWxsLG51bGwsMTAwKTtmLm9uKFwiY29udGVudERvbVwiLGZ1bmN0aW9uKCl7ZS5zdGF0ZSE9Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQmJmUucmVmcmVzaChmKX0pO2Yub24oXCJyZW1vdmVGb3JtYXRDbGVhbnVwXCIsZnVuY3Rpb24oYSl7YT1hLmRhdGE7Zi5nZXRDb21tYW5kKFwic2hvd2JvcmRlcnNcIikuc3RhdGU9PUNLRURJVE9SLlRSSVNUQVRFX09OJiZhLmlzKFwidGFibGVcIikmJighYS5oYXNBdHRyaWJ1dGUoXCJib3JkZXJcIil8fDA+PXBhcnNlSW50KGEuZ2V0QXR0cmlidXRlKFwiYm9yZGVyXCIpLFxuMTApKSYmYS5hZGRDbGFzcyhcImNrZV9zaG93X2JvcmRlclwiKX0pfSxhZnRlckluaXQ6ZnVuY3Rpb24oYSl7dmFyIGU9YS5kYXRhUHJvY2Vzc29yO2E9ZSYmZS5kYXRhRmlsdGVyO2U9ZSYmZS5odG1sRmlsdGVyO2EmJmEuYWRkUnVsZXMoe2VsZW1lbnRzOnt0YWJsZTpmdW5jdGlvbihhKXthPWEuYXR0cmlidXRlczt2YXIgYz1hW1wiY2xhc3NcIl0sZT1wYXJzZUludChhLmJvcmRlciwxMCk7ZSYmISgwPj1lKXx8YyYmLTEhPWMuaW5kZXhPZihcImNrZV9zaG93X2JvcmRlclwiKXx8KGFbXCJjbGFzc1wiXT0oY3x8XCJcIikrXCIgY2tlX3Nob3dfYm9yZGVyXCIpfX19KTtlJiZlLmFkZFJ1bGVzKHtlbGVtZW50czp7dGFibGU6ZnVuY3Rpb24oYSl7YT1hLmF0dHJpYnV0ZXM7dmFyIGM9YVtcImNsYXNzXCJdO2MmJihhW1wiY2xhc3NcIl09Yy5yZXBsYWNlKFwiY2tlX3Nob3dfYm9yZGVyXCIsXCJcIikucmVwbGFjZSgvXFxzezJ9LyxcIiBcIikucmVwbGFjZSgvXlxccyt8XFxzKyQvLFwiXCIpKX19fSl9fSk7Q0tFRElUT1Iub24oXCJkaWFsb2dEZWZpbml0aW9uXCIsXG5mdW5jdGlvbihhKXt2YXIgZT1hLmRhdGEubmFtZTtpZihcInRhYmxlXCI9PWV8fFwidGFibGVQcm9wZXJ0aWVzXCI9PWUpaWYoYT1hLmRhdGEuZGVmaW5pdGlvbixlPWEuZ2V0Q29udGVudHMoXCJpbmZvXCIpLmdldChcInR4dEJvcmRlclwiKSxlLmNvbW1pdD1DS0VESVRPUi50b29scy5vdmVycmlkZShlLmNvbW1pdCxmdW5jdGlvbihhKXtyZXR1cm4gZnVuY3Rpb24oYyxlKXthLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgZj1wYXJzZUludCh0aGlzLmdldFZhbHVlKCksMTApO2VbIWZ8fDA+PWY/XCJhZGRDbGFzc1wiOlwicmVtb3ZlQ2xhc3NcIl0oXCJja2Vfc2hvd19ib3JkZXJcIil9fSksYT0oYT1hLmdldENvbnRlbnRzKFwiYWR2YW5jZWRcIikpJiZhLmdldChcImFkdkNTU0NsYXNzZXNcIikpYS5zZXR1cD1DS0VESVRPUi50b29scy5vdmVycmlkZShhLnNldHVwLGZ1bmN0aW9uKGEpe3JldHVybiBmdW5jdGlvbigpe2EuYXBwbHkodGhpcyxhcmd1bWVudHMpO3RoaXMuc2V0VmFsdWUodGhpcy5nZXRWYWx1ZSgpLnJlcGxhY2UoL2NrZV9zaG93X2JvcmRlci8sXG5cIlwiKSl9fSksYS5jb21taXQ9Q0tFRElUT1IudG9vbHMub3ZlcnJpZGUoYS5jb21taXQsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGMsZSl7YS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cGFyc2VJbnQoZS5nZXRBdHRyaWJ1dGUoXCJib3JkZXJcIiksMTApfHxlLmFkZENsYXNzKFwiY2tlX3Nob3dfYm9yZGVyXCIpfX0pfSl9KCksZnVuY3Rpb24oKXtDS0VESVRPUi5wbHVnaW5zLmFkZChcInNvdXJjZWFyZWFcIix7aW5pdDpmdW5jdGlvbihmKXtmdW5jdGlvbiBlKCl7dmFyIGE9YyYmdGhpcy5lcXVhbHMoQ0tFRElUT1IuZG9jdW1lbnQuZ2V0QWN0aXZlKCkpO3RoaXMuaGlkZSgpO3RoaXMuc2V0U3R5bGUoXCJoZWlnaHRcIix0aGlzLmdldFBhcmVudCgpLiQuY2xpZW50SGVpZ2h0K1wicHhcIik7dGhpcy5zZXRTdHlsZShcIndpZHRoXCIsdGhpcy5nZXRQYXJlbnQoKS4kLmNsaWVudFdpZHRoK1wicHhcIik7dGhpcy5zaG93KCk7YSYmdGhpcy5mb2N1cygpfWlmKGYuZWxlbWVudE1vZGUhPUNLRURJVE9SLkVMRU1FTlRfTU9ERV9JTkxJTkUpe3ZhciBiPVxuQ0tFRElUT1IucGx1Z2lucy5zb3VyY2VhcmVhO2YuYWRkTW9kZShcInNvdXJjZVwiLGZ1bmN0aW9uKGIpe3ZhciBjPWYudWkuc3BhY2UoXCJjb250ZW50c1wiKS5nZXREb2N1bWVudCgpLmNyZWF0ZUVsZW1lbnQoXCJ0ZXh0YXJlYVwiKTtjLnNldFN0eWxlcyhDS0VESVRPUi50b29scy5leHRlbmQoe3dpZHRoOkNLRURJVE9SLmVudi5pZTdDb21wYXQ/XCI5OSVcIjpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCIscmVzaXplOlwibm9uZVwiLG91dGxpbmU6XCJub25lXCIsXCJ0ZXh0LWFsaWduXCI6XCJsZWZ0XCJ9LENLRURJVE9SLnRvb2xzLmNzc1ZlbmRvclByZWZpeChcInRhYi1zaXplXCIsZi5jb25maWcuc291cmNlQXJlYVRhYlNpemV8fDQpKSk7Yy5zZXRBdHRyaWJ1dGUoXCJkaXJcIixcImx0clwiKTtjLmFkZENsYXNzKFwiY2tlX3NvdXJjZVwiKS5hZGRDbGFzcyhcImNrZV9yZXNldFwiKS5hZGRDbGFzcyhcImNrZV9lbmFibGVfY29udGV4dF9tZW51XCIpO2YudWkuc3BhY2UoXCJjb250ZW50c1wiKS5hcHBlbmQoYyk7Yz1mLmVkaXRhYmxlKG5ldyBhKGYsXG5jKSk7Yy5zZXREYXRhKGYuZ2V0RGF0YSgxKSk7Q0tFRElUT1IuZW52LmllJiYoYy5hdHRhY2hMaXN0ZW5lcihmLFwicmVzaXplXCIsZSxjKSxjLmF0dGFjaExpc3RlbmVyKENLRURJVE9SLmRvY3VtZW50LmdldFdpbmRvdygpLFwicmVzaXplXCIsZSxjKSxDS0VESVRPUi50b29scy5zZXRUaW1lb3V0KGUsMCxjKSk7Zi5maXJlKFwiYXJpYVdpZGdldFwiLHRoaXMpO2IoKX0pO2YuYWRkQ29tbWFuZChcInNvdXJjZVwiLGIuY29tbWFuZHMuc291cmNlKTtmLnVpLmFkZEJ1dHRvbiYmZi51aS5hZGRCdXR0b24oXCJTb3VyY2VcIix7aXNUb2dnbGU6ITAsbGFiZWw6Zi5sYW5nLnNvdXJjZWFyZWEudG9vbGJhcixjb21tYW5kOlwic291cmNlXCIsdG9vbGJhcjpcIm1vZGUsMTBcIn0pO2Yub24oXCJtb2RlXCIsZnVuY3Rpb24oKXtmLmdldENvbW1hbmQoXCJzb3VyY2VcIikuc2V0U3RhdGUoXCJzb3VyY2VcIj09Zi5tb2RlP0NLRURJVE9SLlRSSVNUQVRFX09OOkNLRURJVE9SLlRSSVNUQVRFX09GRil9KTt2YXIgYz1DS0VESVRPUi5lbnYuaWUmJlxuOT09Q0tFRElUT1IuZW52LnZlcnNpb259fX0pO3ZhciBhPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHtiYXNlOkNLRURJVE9SLmVkaXRhYmxlLHByb3RvOntzZXREYXRhOmZ1bmN0aW9uKGEpe3RoaXMuc2V0VmFsdWUoYSk7dGhpcy5zdGF0dXM9XCJyZWFkeVwiO3RoaXMuZWRpdG9yLmZpcmUoXCJkYXRhUmVhZHlcIil9LGdldERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5nZXRWYWx1ZSgpfSxpbnNlcnRIdG1sOmZ1bmN0aW9uKCl7fSxpbnNlcnRFbGVtZW50OmZ1bmN0aW9uKCl7fSxpbnNlcnRUZXh0OmZ1bmN0aW9uKCl7fSxzZXRSZWFkT25seTpmdW5jdGlvbihhKXt0aGlzWyhhP1wic2V0XCI6XCJyZW1vdmVcIikrXCJBdHRyaWJ1dGVcIl0oXCJyZWFkT25seVwiLFwicmVhZG9ubHlcIil9LGRldGFjaDpmdW5jdGlvbigpe2EuYmFzZVByb3RvLmRldGFjaC5jYWxsKHRoaXMpO3RoaXMuY2xlYXJDdXN0b21EYXRhKCk7dGhpcy5yZW1vdmUoKX19fSl9KCksQ0tFRElUT1IucGx1Z2lucy5zb3VyY2VhcmVhPVxue2NvbW1hbmRzOntzb3VyY2U6e21vZGVzOnt3eXNpd3lnOjEsc291cmNlOjF9LGVkaXRvckZvY3VzOiExLHJlYWRPbmx5OjEsZXhlYzpmdW5jdGlvbihhKXtcInd5c2l3eWdcIj09YS5tb2RlJiZhLmZpcmUoXCJzYXZlU25hcHNob3RcIik7YS5nZXRDb21tYW5kKFwic291cmNlXCIpLnNldFN0YXRlKENLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEKTthLnNldE1vZGUoXCJzb3VyY2VcIj09YS5tb2RlP1wid3lzaXd5Z1wiOlwic291cmNlXCIpfSxjYW5VbmRvOiExfX19LENLRURJVE9SLnBsdWdpbnMuYWRkKFwic3BlY2lhbGNoYXJcIix7YXZhaWxhYmxlTGFuZ3M6e2FmOjEsYXI6MSxhejoxLGJnOjEsY2E6MSxjczoxLGN5OjEsZGE6MSxkZToxLFwiZGUtY2hcIjoxLGVsOjEsZW46MSxcImVuLWF1XCI6MSxcImVuLWNhXCI6MSxcImVuLWdiXCI6MSxlbzoxLGVzOjEsXCJlcy1teFwiOjEsZXQ6MSxldToxLGZhOjEsZmk6MSxmcjoxLFwiZnItY2FcIjoxLGdsOjEsaGU6MSxocjoxLGh1OjEsaWQ6MSxpdDoxLGphOjEsa206MSxrbzoxLGt1OjEsXG5sdDoxLGx2OjEsbmI6MSxubDoxLG5vOjEsb2M6MSxwbDoxLHB0OjEsXCJwdC1iclwiOjEscm86MSxydToxLHNpOjEsc2s6MSxzbDoxLHNxOjEsc3I6MSxcInNyLWxhdG5cIjoxLHN2OjEsdGg6MSx0cjoxLHR0OjEsdWc6MSx1azoxLHZpOjEsemg6MSxcInpoLWNuXCI6MX0scmVxdWlyZXM6XCJkaWFsb2dcIixpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPXRoaXM7Q0tFRElUT1IuZGlhbG9nLmFkZChcInNwZWNpYWxjaGFyXCIsdGhpcy5wYXRoK1wiZGlhbG9ncy9zcGVjaWFsY2hhci5qc1wiKTthLmFkZENvbW1hbmQoXCJzcGVjaWFsY2hhclwiLHtleGVjOmZ1bmN0aW9uKCl7dmFyIGU9YS5sYW5nQ29kZSxlPWYuYXZhaWxhYmxlTGFuZ3NbZV0/ZTpmLmF2YWlsYWJsZUxhbmdzW2UucmVwbGFjZSgvLS4qLyxcIlwiKV0/ZS5yZXBsYWNlKC8tLiovLFwiXCIpOlwiZW5cIjtDS0VESVRPUi5zY3JpcHRMb2FkZXIubG9hZChDS0VESVRPUi5nZXRVcmwoZi5wYXRoK1wiZGlhbG9ncy9sYW5nL1wiK2UrXCIuanNcIiksZnVuY3Rpb24oKXtDS0VESVRPUi50b29scy5leHRlbmQoYS5sYW5nLnNwZWNpYWxjaGFyLFxuZi5sYW5nRW50cmllc1tlXSk7YS5vcGVuRGlhbG9nKFwic3BlY2lhbGNoYXJcIil9KX0sbW9kZXM6e3d5c2l3eWc6MX0sY2FuVW5kbzohMX0pO2EudWkuYWRkQnV0dG9uJiZhLnVpLmFkZEJ1dHRvbihcIlNwZWNpYWxDaGFyXCIse2xhYmVsOmEubGFuZy5zcGVjaWFsY2hhci50b29sYmFyLGNvbW1hbmQ6XCJzcGVjaWFsY2hhclwiLHRvb2xiYXI6XCJpbnNlcnQsNTBcIn0pfX0pLENLRURJVE9SLmNvbmZpZy5zcGVjaWFsQ2hhcnM9XCIhIFxceDI2cXVvdDsgIyAkICUgXFx4MjZhbXA7ICcgKCApICogKyAtIC4gLyAwIDEgMiAzIDQgNSA2IDcgOCA5IDogOyBcXHgyNmx0OyBcXHgzZCBcXHgyNmd0OyA/IEAgQSBCIEMgRCBFIEYgRyBIIEkgSiBLIEwgTSBOIE8gUCBRIFIgUyBUIFUgViBXIFggWSBaIFsgXSBeIF8gYCBhIGIgYyBkIGUgZiBnIGggaSBqIGsgbCBtIG4gbyBwIHEgciBzIHQgdSB2IHcgeCB5IHogeyB8IH0gfiBcXHgyNmV1cm87IFxceDI2bHNxdW87IFxceDI2cnNxdW87IFxceDI2bGRxdW87IFxceDI2cmRxdW87IFxceDI2bmRhc2g7IFxceDI2bWRhc2g7IFxceDI2aWV4Y2w7IFxceDI2Y2VudDsgXFx4MjZwb3VuZDsgXFx4MjZjdXJyZW47IFxceDI2eWVuOyBcXHgyNmJydmJhcjsgXFx4MjZzZWN0OyBcXHgyNnVtbDsgXFx4MjZjb3B5OyBcXHgyNm9yZGY7IFxceDI2bGFxdW87IFxceDI2bm90OyBcXHgyNnJlZzsgXFx4MjZtYWNyOyBcXHgyNmRlZzsgXFx4MjZzdXAyOyBcXHgyNnN1cDM7IFxceDI2YWN1dGU7IFxceDI2bWljcm87IFxceDI2cGFyYTsgXFx4MjZtaWRkb3Q7IFxceDI2Y2VkaWw7IFxceDI2c3VwMTsgXFx4MjZvcmRtOyBcXHgyNnJhcXVvOyBcXHgyNmZyYWMxNDsgXFx4MjZmcmFjMTI7IFxceDI2ZnJhYzM0OyBcXHgyNmlxdWVzdDsgXFx4MjZBZ3JhdmU7IFxceDI2QWFjdXRlOyBcXHgyNkFjaXJjOyBcXHgyNkF0aWxkZTsgXFx4MjZBdW1sOyBcXHgyNkFyaW5nOyBcXHgyNkFFbGlnOyBcXHgyNkNjZWRpbDsgXFx4MjZFZ3JhdmU7IFxceDI2RWFjdXRlOyBcXHgyNkVjaXJjOyBcXHgyNkV1bWw7IFxceDI2SWdyYXZlOyBcXHgyNklhY3V0ZTsgXFx4MjZJY2lyYzsgXFx4MjZJdW1sOyBcXHgyNkVUSDsgXFx4MjZOdGlsZGU7IFxceDI2T2dyYXZlOyBcXHgyNk9hY3V0ZTsgXFx4MjZPY2lyYzsgXFx4MjZPdGlsZGU7IFxceDI2T3VtbDsgXFx4MjZ0aW1lczsgXFx4MjZPc2xhc2g7IFxceDI2VWdyYXZlOyBcXHgyNlVhY3V0ZTsgXFx4MjZVY2lyYzsgXFx4MjZVdW1sOyBcXHgyNllhY3V0ZTsgXFx4MjZUSE9STjsgXFx4MjZzemxpZzsgXFx4MjZhZ3JhdmU7IFxceDI2YWFjdXRlOyBcXHgyNmFjaXJjOyBcXHgyNmF0aWxkZTsgXFx4MjZhdW1sOyBcXHgyNmFyaW5nOyBcXHgyNmFlbGlnOyBcXHgyNmNjZWRpbDsgXFx4MjZlZ3JhdmU7IFxceDI2ZWFjdXRlOyBcXHgyNmVjaXJjOyBcXHgyNmV1bWw7IFxceDI2aWdyYXZlOyBcXHgyNmlhY3V0ZTsgXFx4MjZpY2lyYzsgXFx4MjZpdW1sOyBcXHgyNmV0aDsgXFx4MjZudGlsZGU7IFxceDI2b2dyYXZlOyBcXHgyNm9hY3V0ZTsgXFx4MjZvY2lyYzsgXFx4MjZvdGlsZGU7IFxceDI2b3VtbDsgXFx4MjZkaXZpZGU7IFxceDI2b3NsYXNoOyBcXHgyNnVncmF2ZTsgXFx4MjZ1YWN1dGU7IFxceDI2dWNpcmM7IFxceDI2dXVtbDsgXFx4MjZ5YWN1dGU7IFxceDI2dGhvcm47IFxceDI2eXVtbDsgXFx4MjZPRWxpZzsgXFx4MjZvZWxpZzsgXFx4MjYjMzcyOyBcXHgyNiMzNzQgXFx4MjYjMzczIFxceDI2IzM3NTsgXFx4MjZzYnF1bzsgXFx4MjYjODIxOTsgXFx4MjZiZHF1bzsgXFx4MjZoZWxsaXA7IFxceDI2dHJhZGU7IFxceDI2Izk2NTg7IFxceDI2YnVsbDsgXFx4MjZyYXJyOyBcXHgyNnJBcnI7IFxceDI2aEFycjsgXFx4MjZkaWFtczsgXFx4MjZhc3ltcDtcIi5zcGxpdChcIiBcIiksXG5mdW5jdGlvbigpe0NLRURJVE9SLnBsdWdpbnMuYWRkKFwic3R5bGVzY29tYm9cIix7cmVxdWlyZXM6XCJyaWNoY29tYm9cIixpbml0OmZ1bmN0aW9uKGEpe3ZhciBmPWEuY29uZmlnLGU9YS5sYW5nLnN0eWxlc2NvbWJvLGI9e30sYz1bXSxrPVtdO2Eub24oXCJzdHlsZXNTZXRcIixmdW5jdGlvbihlKXtpZihlPWUuZGF0YS5zdHlsZXMpe2Zvcih2YXIgbSxkLGgsZz0wLG49ZS5sZW5ndGg7ZzxuO2crKykobT1lW2ddLGEuYmxvY2tsZXNzJiZtLmVsZW1lbnQgaW4gQ0tFRElUT1IuZHRkLiRibG9ja3x8XCJzdHJpbmdcIj09dHlwZW9mIG0udHlwZSYmIUNLRURJVE9SLnN0eWxlLmN1c3RvbUhhbmRsZXJzW20udHlwZV18fChkPW0ubmFtZSxtPW5ldyBDS0VESVRPUi5zdHlsZShtKSxhLmZpbHRlci5jdXN0b21Db25maWcmJiFhLmZpbHRlci5jaGVjayhtKSkpfHwobS5fbmFtZT1kLG0uXy5lbnRlck1vZGU9Zi5lbnRlck1vZGUsbS5fLnR5cGU9aD1tLmFzc2lnbmVkVG98fG0udHlwZSxtLl8ud2VpZ2h0PVxuZysxRTMqKGg9PUNLRURJVE9SLlNUWUxFX09CSkVDVD8xOmg9PUNLRURJVE9SLlNUWUxFX0JMT0NLPzI6MyksYltkXT1tLGMucHVzaChtKSxrLnB1c2gobSkpO2Muc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLl8ud2VpZ2h0LWIuXy53ZWlnaHR9KX19KTthLm9uKFwic3R5bGVzUmVtb3ZlXCIsZnVuY3Rpb24oYyl7Yz1jLmRhdGEmJmMuZGF0YS50eXBlO3ZhciBlPXZvaWQgMD09PWMsZDtmb3IoZCBpbiBiKXt2YXIgZj1iW2RdOyhlfHxmLnR5cGU9PT1jKSYmYS5yZW1vdmVTdHlsZShmKX19KTthLnVpLmFkZFJpY2hDb21ibyhcIlN0eWxlc1wiLHtsYWJlbDplLmxhYmVsLHRpdGxlOmUucGFuZWxUaXRsZSx0b29sYmFyOlwic3R5bGVzLDEwXCIsYWxsb3dlZENvbnRlbnQ6ayxwYW5lbDp7Y3NzOltDS0VESVRPUi5za2luLmdldFBhdGgoXCJlZGl0b3JcIildLmNvbmNhdChmLmNvbnRlbnRzQ3NzKSxtdWx0aVNlbGVjdDohMCxhdHRyaWJ1dGVzOntcImFyaWEtbGFiZWxcIjplLnBhbmVsVGl0bGV9fSxpbml0OmZ1bmN0aW9uKCl7dmFyIGEsXG5iLGQsZixnLGs7Zz0wO2ZvcihrPWMubGVuZ3RoO2c8aztnKyspYT1jW2ddLGI9YS5fbmFtZSxmPWEuXy50eXBlLGYhPWQmJih0aGlzLnN0YXJ0R3JvdXAoZVtcInBhbmVsVGl0bGVcIitTdHJpbmcoZildKSxkPWYpLHRoaXMuYWRkKGIsYS50eXBlPT1DS0VESVRPUi5TVFlMRV9PQkpFQ1Q/YjphLmJ1aWxkUHJldmlldygpLGIpO3RoaXMuY29tbWl0KCl9LG9uQ2xpY2s6ZnVuY3Rpb24oYyl7YS5mb2N1cygpO2EuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtjPWJbY107dmFyIGU9YS5lbGVtZW50UGF0aCgpO2lmKGMuZ3JvdXAmJmMucmVtb3ZlU3R5bGVzRnJvbVNhbWVHcm91cChhKSlhLmFwcGx5U3R5bGUoYyk7ZWxzZSBhW2MuY2hlY2tBY3RpdmUoZSxhKT9cInJlbW92ZVN0eWxlXCI6XCJhcHBseVN0eWxlXCJdKGMpO2EuZmlyZShcInNhdmVTbmFwc2hvdFwiKX0sb25SZW5kZXI6ZnVuY3Rpb24oKXthLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsZnVuY3Rpb24oYyl7dmFyIGU9dGhpcy5nZXRWYWx1ZSgpO2M9Yy5kYXRhLnBhdGguZWxlbWVudHM7XG5mb3IodmFyIGQ9MCxmPWMubGVuZ3RoLGc7ZDxmO2QrKyl7Zz1jW2RdO2Zvcih2YXIgayBpbiBiKWlmKGJba10uY2hlY2tFbGVtZW50UmVtb3ZhYmxlKGcsITAsYSkpe2shPWUmJnRoaXMuc2V0VmFsdWUoayk7cmV0dXJufX10aGlzLnNldFZhbHVlKFwiXCIpfSx0aGlzKX0sb25PcGVuOmZ1bmN0aW9uKCl7dmFyIGM9YS5nZXRTZWxlY3Rpb24oKSxjPWMuZ2V0U2VsZWN0ZWRFbGVtZW50KCl8fGMuZ2V0U3RhcnRFbGVtZW50KCl8fGEuZWRpdGFibGUoKSxjPWEuZWxlbWVudFBhdGgoYyksZj1bMCwwLDAsMF07dGhpcy5zaG93QWxsKCk7dGhpcy51bm1hcmtBbGwoKTtmb3IodmFyIGQgaW4gYil7dmFyIGg9YltkXSxnPWguXy50eXBlO2guY2hlY2tBcHBsaWNhYmxlKGMsYSxhLmFjdGl2ZUZpbHRlcik/ZltnXSsrOnRoaXMuaGlkZUl0ZW0oZCk7aC5jaGVja0FjdGl2ZShjLGEpJiZ0aGlzLm1hcmsoZCl9ZltDS0VESVRPUi5TVFlMRV9CTE9DS118fHRoaXMuaGlkZUdyb3VwKGVbXCJwYW5lbFRpdGxlXCIrXG5TdHJpbmcoQ0tFRElUT1IuU1RZTEVfQkxPQ0spXSk7ZltDS0VESVRPUi5TVFlMRV9JTkxJTkVdfHx0aGlzLmhpZGVHcm91cChlW1wicGFuZWxUaXRsZVwiK1N0cmluZyhDS0VESVRPUi5TVFlMRV9JTkxJTkUpXSk7ZltDS0VESVRPUi5TVFlMRV9PQkpFQ1RdfHx0aGlzLmhpZGVHcm91cChlW1wicGFuZWxUaXRsZVwiK1N0cmluZyhDS0VESVRPUi5TVFlMRV9PQkpFQ1QpXSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgYz1hLmVsZW1lbnRQYXRoKCk7aWYoYyl7Zm9yKHZhciBlIGluIGIpaWYoYltlXS5jaGVja0FwcGxpY2FibGUoYyxhLGEuYWN0aXZlRmlsdGVyKSlyZXR1cm47dGhpcy5zZXRTdGF0ZShDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCl9fSxyZXNldDpmdW5jdGlvbigpe2I9e307Yz1bXX19KX19KX0oKSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJue2VkaXRvckZvY3VzOiExLGNhblVuZG86ITEsbW9kZXM6e3d5c2l3eWc6MX0sZXhlYzpmdW5jdGlvbihiKXtpZihiLmVkaXRhYmxlKCkuaGFzRm9jdXMpe3ZhciBlPVxuYi5nZXRTZWxlY3Rpb24oKSxmO2lmKGY9KG5ldyBDS0VESVRPUi5kb20uZWxlbWVudFBhdGgoZS5nZXRTdGFydEVsZW1lbnQoKSxlLnJvb3QpKS5jb250YWlucyh7dGQ6MSx0aDoxfSwxKSl7dmFyIGU9Yi5jcmVhdGVSYW5nZSgpLGQ9Q0tFRElUT1IudG9vbHMudHJ5VGhlc2UoZnVuY3Rpb24oKXt2YXIgYj1mLmdldFBhcmVudCgpLiQuY2VsbHNbZi4kLmNlbGxJbmRleCsoYT8tMToxKV07Yi5wYXJlbnROb2RlLnBhcmVudE5vZGU7cmV0dXJuIGJ9LGZ1bmN0aW9uKCl7dmFyIGI9Zi5nZXRQYXJlbnQoKSxiPWIuZ2V0QXNjZW5kYW50KFwidGFibGVcIikuJC5yb3dzW2IuJC5yb3dJbmRleCsoYT8tMToxKV07cmV0dXJuIGIuY2VsbHNbYT9iLmNlbGxzLmxlbmd0aC0xOjBdfSk7aWYoZHx8YSlpZihkKWQ9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGQpLGUubW92ZVRvRWxlbWVudEVkaXRTdGFydChkKSxlLmNoZWNrU3RhcnRPZkJsb2NrKCkmJmUuY2hlY2tFbmRPZkJsb2NrKCl8fGUuc2VsZWN0Tm9kZUNvbnRlbnRzKGQpO1xuZWxzZSByZXR1cm4hMDtlbHNle2Zvcih2YXIgaD1mLmdldEFzY2VuZGFudChcInRhYmxlXCIpLiQsZD1mLmdldFBhcmVudCgpLiQuY2VsbHMsaD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoaC5pbnNlcnRSb3coLTEpLGIuZG9jdW1lbnQpLGc9MCxuPWQubGVuZ3RoO2c8bjtnKyspaC5hcHBlbmQoKG5ldyBDS0VESVRPUi5kb20uZWxlbWVudChkW2ddLGIuZG9jdW1lbnQpKS5jbG9uZSghMSwhMSkpLmFwcGVuZEJvZ3VzKCk7ZS5tb3ZlVG9FbGVtZW50RWRpdFN0YXJ0KGgpfWUuc2VsZWN0KCEwKTtyZXR1cm4hMH19cmV0dXJuITF9fX12YXIgZj17ZWRpdG9yRm9jdXM6ITEsbW9kZXM6e3d5c2l3eWc6MSxzb3VyY2U6MX19LGU9e2V4ZWM6ZnVuY3Rpb24oYSl7YS5jb250YWluZXIuZm9jdXNOZXh0KCEwLGEudGFiSW5kZXgpfX0sYj17ZXhlYzpmdW5jdGlvbihhKXthLmNvbnRhaW5lci5mb2N1c1ByZXZpb3VzKCEwLGEudGFiSW5kZXgpfX07Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ0YWJcIix7aW5pdDpmdW5jdGlvbihjKXtmb3IodmFyIGs9XG4hMSE9PWMuY29uZmlnLmVuYWJsZVRhYktleVRvb2xzLGw9Yy5jb25maWcudGFiU3BhY2VzfHwwLG09XCJcIjtsLS07KW0rPVwiwqBcIjtpZihtKWMub24oXCJrZXlcIixmdW5jdGlvbihhKXs5PT1hLmRhdGEua2V5Q29kZSYmKGMuaW5zZXJ0VGV4dChtKSxhLmNhbmNlbCgpKX0pO2lmKGspYy5vbihcImtleVwiLGZ1bmN0aW9uKGEpeyg5PT1hLmRhdGEua2V5Q29kZSYmYy5leGVjQ29tbWFuZChcInNlbGVjdE5leHRDZWxsXCIpfHxhLmRhdGEua2V5Q29kZT09Q0tFRElUT1IuU0hJRlQrOSYmYy5leGVjQ29tbWFuZChcInNlbGVjdFByZXZpb3VzQ2VsbFwiKSkmJmEuY2FuY2VsKCl9KTtjLmFkZENvbW1hbmQoXCJibHVyXCIsQ0tFRElUT1IudG9vbHMuZXh0ZW5kKGUsZikpO2MuYWRkQ29tbWFuZChcImJsdXJCYWNrXCIsQ0tFRElUT1IudG9vbHMuZXh0ZW5kKGIsZikpO2MuYWRkQ29tbWFuZChcInNlbGVjdE5leHRDZWxsXCIsYSgpKTtjLmFkZENvbW1hbmQoXCJzZWxlY3RQcmV2aW91c0NlbGxcIixhKCEwKSl9fSl9KCksQ0tFRElUT1IuZG9tLmVsZW1lbnQucHJvdG90eXBlLmZvY3VzTmV4dD1cbmZ1bmN0aW9uKGEsZil7dmFyIGU9dm9pZCAwPT09Zj90aGlzLmdldFRhYkluZGV4KCk6ZixiLGMsayxsLG0sZDtpZigwPj1lKWZvcihtPXRoaXMuZ2V0TmV4dFNvdXJjZU5vZGUoYSxDS0VESVRPUi5OT0RFX0VMRU1FTlQpO207KXtpZihtLmlzVmlzaWJsZSgpJiYwPT09bS5nZXRUYWJJbmRleCgpKXtrPW07YnJlYWt9bT1tLmdldE5leHRTb3VyY2VOb2RlKCExLENLRURJVE9SLk5PREVfRUxFTUVOVCl9ZWxzZSBmb3IobT10aGlzLmdldERvY3VtZW50KCkuZ2V0Qm9keSgpLmdldEZpcnN0KCk7bT1tLmdldE5leHRTb3VyY2VOb2RlKCExLENLRURJVE9SLk5PREVfRUxFTUVOVCk7KXtpZighYilpZighYyYmbS5lcXVhbHModGhpcykpe2lmKGM9ITAsYSl7aWYoIShtPW0uZ2V0TmV4dFNvdXJjZU5vZGUoITAsQ0tFRElUT1IuTk9ERV9FTEVNRU5UKSkpYnJlYWs7Yj0xfX1lbHNlIGMmJiF0aGlzLmNvbnRhaW5zKG0pJiYoYj0xKTtpZihtLmlzVmlzaWJsZSgpJiYhKDA+KGQ9bS5nZXRUYWJJbmRleCgpKSkpe2lmKGImJlxuZD09ZSl7az1tO2JyZWFrfWQ+ZSYmKCFrfHwhbHx8ZDxsKT8oaz1tLGw9ZCk6a3x8MCE9PWR8fChrPW0sbD1kKX19ayYmay5mb2N1cygpfSxDS0VESVRPUi5kb20uZWxlbWVudC5wcm90b3R5cGUuZm9jdXNQcmV2aW91cz1mdW5jdGlvbihhLGYpe2Zvcih2YXIgZT12b2lkIDA9PT1mP3RoaXMuZ2V0VGFiSW5kZXgoKTpmLGIsYyxrLGw9MCxtLGQ9dGhpcy5nZXREb2N1bWVudCgpLmdldEJvZHkoKS5nZXRMYXN0KCk7ZD1kLmdldFByZXZpb3VzU291cmNlTm9kZSghMSxDS0VESVRPUi5OT0RFX0VMRU1FTlQpOyl7aWYoIWIpaWYoIWMmJmQuZXF1YWxzKHRoaXMpKXtpZihjPSEwLGEpe2lmKCEoZD1kLmdldFByZXZpb3VzU291cmNlTm9kZSghMCxDS0VESVRPUi5OT0RFX0VMRU1FTlQpKSlicmVhaztiPTF9fWVsc2UgYyYmIXRoaXMuY29udGFpbnMoZCkmJihiPTEpO2lmKGQuaXNWaXNpYmxlKCkmJiEoMD4obT1kLmdldFRhYkluZGV4KCkpKSlpZigwPj1lKXtpZihiJiYwPT09bSl7az1kO2JyZWFrfW0+XG5sJiYoaz1kLGw9bSl9ZWxzZXtpZihiJiZtPT1lKXtrPWQ7YnJlYWt9bTxlJiYoIWt8fG0+bCkmJihrPWQsbD1tKX19ayYmay5mb2N1cygpfSxDS0VESVRPUi5wbHVnaW5zLmFkZChcInRhYmxlXCIse3JlcXVpcmVzOlwiZGlhbG9nXCIsaW5pdDpmdW5jdGlvbihhKXtmdW5jdGlvbiBmKGEpe3JldHVybiBDS0VESVRPUi50b29scy5leHRlbmQoYXx8e30se2NvbnRleHRTZW5zaXRpdmU6MSxyZWZyZXNoOmZ1bmN0aW9uKGEsYil7dGhpcy5zZXRTdGF0ZShiLmNvbnRhaW5zKFwidGFibGVcIiwxKT9DS0VESVRPUi5UUklTVEFURV9PRkY6Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpfX0pfWlmKCFhLmJsb2NrbGVzcyl7dmFyIGU9YS5sYW5nLnRhYmxlO2EuYWRkQ29tbWFuZChcInRhYmxlXCIsbmV3IENLRURJVE9SLmRpYWxvZ0NvbW1hbmQoXCJ0YWJsZVwiLHtjb250ZXh0OlwidGFibGVcIixhbGxvd2VkQ29udGVudDpcInRhYmxle3dpZHRoLGhlaWdodCxib3JkZXItY29sbGFwc2V9W2FsaWduLGJvcmRlcixjZWxscGFkZGluZyxjZWxsc3BhY2luZyxzdW1tYXJ5XTtjYXB0aW9uIHRib2R5IHRoZWFkIHRmb290O3RoIHRkIHRyW3Njb3BlXTt0ZHtib3JkZXIqLGJhY2tncm91bmQtY29sb3IsdmVydGljYWwtYWxpZ24sd2lkdGgsaGVpZ2h0fVtjb2xzcGFuLHJvd3NwYW5dO1wiK1xuKGEucGx1Z2lucy5kaWFsb2dhZHZ0YWI/XCJ0YWJsZVwiK2EucGx1Z2lucy5kaWFsb2dhZHZ0YWIuYWxsb3dlZENvbnRlbnQoKTpcIlwiKSxyZXF1aXJlZENvbnRlbnQ6XCJ0YWJsZVwiLGNvbnRlbnRUcmFuc2Zvcm1hdGlvbnM6W1tcInRhYmxle3dpZHRofTogc2l6ZVRvU3R5bGVcIixcInRhYmxlW3dpZHRoXTogc2l6ZVRvQXR0cmlidXRlXCJdLFtcInRkOiBzcGxpdEJvcmRlclNob3J0aGFuZFwiXSxbe2VsZW1lbnQ6XCJ0YWJsZVwiLHJpZ2h0OmZ1bmN0aW9uKGEpe2lmKGEuc3R5bGVzKXt2YXIgYztpZihhLnN0eWxlcy5ib3JkZXIpYz1DS0VESVRPUi50b29scy5zdHlsZS5wYXJzZS5ib3JkZXIoYS5zdHlsZXMuYm9yZGVyKTtlbHNlIGlmKENLRURJVE9SLmVudi5pZSYmOD09PUNLRURJVE9SLmVudi52ZXJzaW9uKXt2YXIgZT1hLnN0eWxlcztlW1wiYm9yZGVyLWxlZnRcIl0mJmVbXCJib3JkZXItbGVmdFwiXT09PWVbXCJib3JkZXItcmlnaHRcIl0mJmVbXCJib3JkZXItcmlnaHRcIl09PT1lW1wiYm9yZGVyLXRvcFwiXSYmXG5lW1wiYm9yZGVyLXRvcFwiXT09PWVbXCJib3JkZXItYm90dG9tXCJdJiYoYz1DS0VESVRPUi50b29scy5zdHlsZS5wYXJzZS5ib3JkZXIoZVtcImJvcmRlci10b3BcIl0pKX1jJiZjLnN0eWxlJiZcInNvbGlkXCI9PT1jLnN0eWxlJiZjLndpZHRoJiYwIT09cGFyc2VGbG9hdChjLndpZHRoKSYmKGEuYXR0cmlidXRlcy5ib3JkZXI9MSk7XCJjb2xsYXBzZVwiPT1hLnN0eWxlc1tcImJvcmRlci1jb2xsYXBzZVwiXSYmKGEuYXR0cmlidXRlcy5jZWxsc3BhY2luZz0wKX19fV1dfSkpO2EuYWRkQ29tbWFuZChcInRhYmxlUHJvcGVydGllc1wiLG5ldyBDS0VESVRPUi5kaWFsb2dDb21tYW5kKFwidGFibGVQcm9wZXJ0aWVzXCIsZigpKSk7YS5hZGRDb21tYW5kKFwidGFibGVEZWxldGVcIixmKHtleGVjOmZ1bmN0aW9uKGEpe3ZhciBjPWEuZWxlbWVudFBhdGgoKS5jb250YWlucyhcInRhYmxlXCIsMSk7aWYoYyl7dmFyIGU9Yy5nZXRQYXJlbnQoKSxmPWEuZWRpdGFibGUoKTsxIT1lLmdldENoaWxkQ291bnQoKXx8ZS5pcyhcInRkXCIsXG5cInRoXCIpfHxlLmVxdWFscyhmKXx8KGM9ZSk7YT1hLmNyZWF0ZVJhbmdlKCk7YS5tb3ZlVG9Qb3NpdGlvbihjLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCk7Yy5yZW1vdmUoKTthLnNlbGVjdCgpfX19KSk7YS51aS5hZGRCdXR0b24mJmEudWkuYWRkQnV0dG9uKFwiVGFibGVcIix7bGFiZWw6ZS50b29sYmFyLGNvbW1hbmQ6XCJ0YWJsZVwiLHRvb2xiYXI6XCJpbnNlcnQsMzBcIn0pO0NLRURJVE9SLmRpYWxvZy5hZGQoXCJ0YWJsZVwiLHRoaXMucGF0aCtcImRpYWxvZ3MvdGFibGUuanNcIik7Q0tFRElUT1IuZGlhbG9nLmFkZChcInRhYmxlUHJvcGVydGllc1wiLHRoaXMucGF0aCtcImRpYWxvZ3MvdGFibGUuanNcIik7YS5hZGRNZW51SXRlbXMmJmEuYWRkTWVudUl0ZW1zKHt0YWJsZTp7bGFiZWw6ZS5tZW51LGNvbW1hbmQ6XCJ0YWJsZVByb3BlcnRpZXNcIixncm91cDpcInRhYmxlXCIsb3JkZXI6NX0sdGFibGVkZWxldGU6e2xhYmVsOmUuZGVsZXRlVGFibGUsY29tbWFuZDpcInRhYmxlRGVsZXRlXCIsZ3JvdXA6XCJ0YWJsZVwiLFxub3JkZXI6MX19KTthLm9uKFwiZG91YmxlY2xpY2tcIixmdW5jdGlvbihhKXthLmRhdGEuZWxlbWVudC5pcyhcInRhYmxlXCIpJiYoYS5kYXRhLmRpYWxvZz1cInRhYmxlUHJvcGVydGllc1wiKX0pO2EuY29udGV4dE1lbnUmJmEuY29udGV4dE1lbnUuYWRkTGlzdGVuZXIoZnVuY3Rpb24oKXtyZXR1cm57dGFibGVkZWxldGU6Q0tFRElUT1IuVFJJU1RBVEVfT0ZGLHRhYmxlOkNLRURJVE9SLlRSSVNUQVRFX09GRn19KX19fSksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7ZnVuY3Rpb24gZChhKXtyZXR1cm4gYj9iLmNvbnRhaW5zKGEpJiZhLmdldEFzY2VuZGFudChcInRhYmxlXCIsITApLmVxdWFscyhiKTohMH1mdW5jdGlvbiBjKGEpe3ZhciBiPS9eKD86dGR8dGgpJC87MDxlLmxlbmd0aHx8YS50eXBlIT1DS0VESVRPUi5OT0RFX0VMRU1FTlR8fCFiLnRlc3QoYS5nZXROYW1lKCkpfHxhLmdldEN1c3RvbURhdGEoXCJzZWxlY3RlZF9jZWxsXCIpfHwoQ0tFRElUT1IuZG9tLmVsZW1lbnQuc2V0TWFya2VyKGYsXG5hLFwic2VsZWN0ZWRfY2VsbFwiLCEwKSxlLnB1c2goYSkpfXZhciBlPVtdLGY9e307aWYoIWEpcmV0dXJuIGU7Zm9yKHZhciBnPWEuZ2V0UmFuZ2VzKCksaD0wO2g8Zy5sZW5ndGg7aCsrKXt2YXIgaz1nW2hdO2lmKGsuY29sbGFwc2VkKShrPWsuZ2V0Q29tbW9uQW5jZXN0b3IoKS5nZXRBc2NlbmRhbnQoe3RkOjEsdGg6MX0sITApKSYmZChrKSYmZS5wdXNoKGspO2Vsc2V7dmFyIGs9bmV3IENLRURJVE9SLmRvbS53YWxrZXIoayksbDtmb3Ioay5ndWFyZD1jO2w9ay5uZXh0KCk7KWwudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZsLmlzKENLRURJVE9SLmR0ZC50YWJsZSl8fChsPWwuZ2V0QXNjZW5kYW50KHt0ZDoxLHRoOjF9LCEwKSkmJiFsLmdldEN1c3RvbURhdGEoXCJzZWxlY3RlZF9jZWxsXCIpJiZkKGwpJiYoQ0tFRElUT1IuZG9tLmVsZW1lbnQuc2V0TWFya2VyKGYsbCxcInNlbGVjdGVkX2NlbGxcIiwhMCksZS5wdXNoKGwpKX19Q0tFRElUT1IuZG9tLmVsZW1lbnQuY2xlYXJBbGxNYXJrZXJzKGYpO1xucmV0dXJuIGV9ZnVuY3Rpb24gZihiLGQpe2Zvcih2YXIgYz1yKGIpP2I6YShiKSxlPWNbMF0sZj1lLmdldEFzY2VuZGFudChcInRhYmxlXCIpLGU9ZS5nZXREb2N1bWVudCgpLGc9Y1swXS5nZXRQYXJlbnQoKSxoPWcuJC5yb3dJbmRleCxjPWNbYy5sZW5ndGgtMV0saz1jLmdldFBhcmVudCgpLiQucm93SW5kZXgrYy4kLnJvd1NwYW4tMSxjPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChmLiQucm93c1trXSksaD1kP2g6ayxnPWQ/ZzpjLGM9Q0tFRElUT1IudG9vbHMuYnVpbGRUYWJsZU1hcChmKSxmPWNbaF0saD1kP2NbaC0xXTpjW2grMV0sYz1jWzBdLmxlbmd0aCxlPWUuY3JlYXRlRWxlbWVudChcInRyXCIpLGs9MDtmW2tdJiZrPGM7aysrKXt2YXIgbDsxPGZba10ucm93U3BhbiYmaCYmZltrXT09aFtrXT8obD1mW2tdLGwucm93U3Bhbis9MSk6KGw9KG5ldyBDS0VESVRPUi5kb20uZWxlbWVudChmW2tdKSkuY2xvbmUoKSxsLnJlbW92ZUF0dHJpYnV0ZShcInJvd1NwYW5cIiksbC5hcHBlbmRCb2d1cygpLFxuZS5hcHBlbmQobCksbD1sLiQpO2srPWwuY29sU3Bhbi0xfWQ/ZS5pbnNlcnRCZWZvcmUoZyk6ZS5pbnNlcnRBZnRlcihnKTtyZXR1cm4gZX1mdW5jdGlvbiBlKGIpe2lmKGIgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uc2VsZWN0aW9uKXt2YXIgZD1iLmdldFJhbmdlcygpLGM9YShiKSxmPWNbMF0uZ2V0QXNjZW5kYW50KFwidGFibGVcIiksZz1DS0VESVRPUi50b29scy5idWlsZFRhYmxlTWFwKGYpLGg9Y1swXS5nZXRQYXJlbnQoKS4kLnJvd0luZGV4LGM9Y1tjLmxlbmd0aC0xXSxrPWMuZ2V0UGFyZW50KCkuJC5yb3dJbmRleCtjLiQucm93U3Bhbi0xLGM9W107Yi5yZXNldCgpO2ZvcihiPWg7Yjw9aztiKyspe2Zvcih2YXIgbD1nW2JdLG09bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGYuJC5yb3dzW2JdKSxuPTA7bjxsLmxlbmd0aDtuKyspe3ZhciByPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChsW25dKSx3PXIuZ2V0UGFyZW50KCkuJC5yb3dJbmRleDsxPT1yLiQucm93U3Bhbj9yLnJlbW92ZSgpOlxuKC0tci4kLnJvd1NwYW4sdz09YiYmKHc9Z1tiKzFdLHdbbi0xXT9yLmluc2VydEFmdGVyKG5ldyBDS0VESVRPUi5kb20uZWxlbWVudCh3W24tMV0pKToobmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGYuJC5yb3dzW2IrMV0pKS5hcHBlbmQociwxKSkpO24rPXIuJC5jb2xTcGFuLTF9Yy5wdXNoKG0pfWc9Zi4kLnJvd3M7ZFswXS5tb3ZlVG9Qb3NpdGlvbihmLENLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVCk7aD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZ1trKzFdfHwoMDxoP2dbaC0xXTpudWxsKXx8Zi4kLnBhcmVudE5vZGUpO2ZvcihiPWMubGVuZ3RoOzA8PWI7Yi0tKWUoY1tiXSk7cmV0dXJuIGYuJC5wYXJlbnROb2RlP2g6KGRbMF0uc2VsZWN0KCksbnVsbCl9YiBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50JiYoZj1iLmdldEFzY2VuZGFudChcInRhYmxlXCIpLDE9PWYuJC5yb3dzLmxlbmd0aD9mLnJlbW92ZSgpOmIucmVtb3ZlKCkpO3JldHVybiBudWxsfWZ1bmN0aW9uIGIoYSl7Zm9yKHZhciBiPVxuYS5nZXRQYXJlbnQoKS4kLmNlbGxzLGQ9MCxjPTA7YzxiLmxlbmd0aDtjKyspe3ZhciBlPWJbY10sZD1kK2UuY29sU3BhbjtpZihlPT1hLiQpYnJlYWt9cmV0dXJuIGQtMX1mdW5jdGlvbiBjKGEsZCl7Zm9yKHZhciBjPWQ/SW5maW5pdHk6MCxlPTA7ZTxhLmxlbmd0aDtlKyspe3ZhciBmPWIoYVtlXSk7aWYoZD9mPGM6Zj5jKWM9Zn1yZXR1cm4gY31mdW5jdGlvbiBrKGIsZCl7Zm9yKHZhciBlPXIoYik/YjphKGIpLGY9ZVswXS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSxnPWMoZSwxKSxlPWMoZSksaD1kP2c6ZSxrPUNLRURJVE9SLnRvb2xzLmJ1aWxkVGFibGVNYXAoZiksZj1bXSxnPVtdLGU9W10sbD1rLmxlbmd0aCxtPTA7bTxsO20rKyl7dmFyIG49ZD9rW21dW2gtMV06a1ttXVtoKzFdO2YucHVzaChrW21dW2hdKTtnLnB1c2gobil9Zm9yKG09MDttPGw7bSsrKWZbbV0mJigxPGZbbV0uY29sU3BhbiYmZ1ttXT09ZlttXT8oaz1mW21dLGsuY29sU3Bhbis9MSk6KGg9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGZbbV0pLFxuaz1oLmNsb25lKCksay5yZW1vdmVBdHRyaWJ1dGUoXCJjb2xTcGFuXCIpLGsuYXBwZW5kQm9ndXMoKSxrW2Q/XCJpbnNlcnRCZWZvcmVcIjpcImluc2VydEFmdGVyXCJdLmNhbGwoayxoKSxlLnB1c2goayksaz1rLiQpLG0rPWsucm93U3Bhbi0xKTtyZXR1cm4gZX1mdW5jdGlvbiBsKGIpe2Z1bmN0aW9uIGQoYSl7dmFyIGI9YS5nZXRSYW5nZXMoKSxjLGU7aWYoMSE9PWIubGVuZ3RoKXJldHVybiBhO2I9YlswXTtpZihiLmNvbGxhcHNlZHx8MCE9PWIuZW5kT2Zmc2V0KXJldHVybiBhO2M9Yi5lbmRDb250YWluZXI7ZT1jLmdldE5hbWUoKS50b0xvd2VyQ2FzZSgpO2lmKFwidGRcIiE9PWUmJlwidGhcIiE9PWUpcmV0dXJuIGE7Zm9yKChlPWMuZ2V0UHJldmlvdXMoKSl8fChlPWMuZ2V0UGFyZW50KCkuZ2V0UHJldmlvdXMoKS5nZXRMYXN0KCkpO2UudHlwZSE9PUNLRURJVE9SLk5PREVfVEVYVCYmXCJiclwiIT09ZS5nZXROYW1lKCkudG9Mb3dlckNhc2UoKTspaWYoZT1lLmdldExhc3QoKSwhZSlyZXR1cm4gYTtcbmIuc2V0RW5kQXQoZSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKTtyZXR1cm4gYi5zZWxlY3QoKX1DS0VESVRPUi5lbnYud2Via2l0JiYhYi5pc0Zha2UmJihiPWQoYikpO3ZhciBjPWIuZ2V0UmFuZ2VzKCksZT1hKGIpLGY9ZVswXSxnPWVbZS5sZW5ndGgtMV0sZT1mLmdldEFzY2VuZGFudChcInRhYmxlXCIpLGg9Q0tFRElUT1IudG9vbHMuYnVpbGRUYWJsZU1hcChlKSxrLGwsbT1bXTtiLnJlc2V0KCk7dmFyIG49MDtmb3IoYj1oLmxlbmd0aDtuPGI7bisrKWZvcih2YXIgcj0wLHc9aFtuXS5sZW5ndGg7cjx3O3IrKyl2b2lkIDA9PT1rJiZoW25dW3JdPT1mLiQmJihrPXIpLGhbbl1bcl09PWcuJCYmKGw9cik7Zm9yKG49aztuPD1sO24rKylmb3Iocj0wO3I8aC5sZW5ndGg7cisrKWc9aFtyXSxmPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChlLiQucm93c1tyXSksZz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZ1tuXSksZy4kJiYoMT09Zy4kLmNvbFNwYW4/Zy5yZW1vdmUoKTotLWcuJC5jb2xTcGFuLFxucis9Zy4kLnJvd1NwYW4tMSxmLiQuY2VsbHMubGVuZ3RofHxtLnB1c2goZikpO2s9aFswXS5sZW5ndGgtMT5sP25ldyBDS0VESVRPUi5kb20uZWxlbWVudChoWzBdW2wrMV0pOmsmJi0xIT09aFswXVtrLTFdLmNlbGxJbmRleD9uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoaFswXVtrLTFdKTpuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZS4kLnBhcmVudE5vZGUpO20ubGVuZ3RoPT1iJiYoY1swXS5tb3ZlVG9Qb3NpdGlvbihlLENLRURJVE9SLlBPU0lUSU9OX0FGVEVSX0VORCksY1swXS5zZWxlY3QoKSxlLnJlbW92ZSgpKTtyZXR1cm4ga31mdW5jdGlvbiBtKGEsYil7dmFyIGQ9YS5nZXRTdGFydEVsZW1lbnQoKS5nZXRBc2NlbmRhbnQoe3RkOjEsdGg6MX0sITApO2lmKGQpe3ZhciBjPWQuY2xvbmUoKTtjLmFwcGVuZEJvZ3VzKCk7Yj9jLmluc2VydEJlZm9yZShkKTpjLmluc2VydEFmdGVyKGQpfX1mdW5jdGlvbiBkKGIpe2lmKGIgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uc2VsZWN0aW9uKXt2YXIgYz1cbmIuZ2V0UmFuZ2VzKCksZT1hKGIpLGY9ZVswXSYmZVswXS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSxnO2E6e3ZhciBrPTA7Zz1lLmxlbmd0aC0xO2Zvcih2YXIgbD17fSxtLG47bT1lW2srK107KUNLRURJVE9SLmRvbS5lbGVtZW50LnNldE1hcmtlcihsLG0sXCJkZWxldGVfY2VsbFwiLCEwKTtmb3Ioaz0wO209ZVtrKytdOylpZigobj1tLmdldFByZXZpb3VzKCkpJiYhbi5nZXRDdXN0b21EYXRhKFwiZGVsZXRlX2NlbGxcIil8fChuPW0uZ2V0TmV4dCgpKSYmIW4uZ2V0Q3VzdG9tRGF0YShcImRlbGV0ZV9jZWxsXCIpKXtDS0VESVRPUi5kb20uZWxlbWVudC5jbGVhckFsbE1hcmtlcnMobCk7Zz1uO2JyZWFrIGF9Q0tFRElUT1IuZG9tLmVsZW1lbnQuY2xlYXJBbGxNYXJrZXJzKGwpO2s9ZVswXS5nZXRQYXJlbnQoKTsoaz1rLmdldFByZXZpb3VzKCkpP2c9ay5nZXRMYXN0KCk6KGs9ZVtnXS5nZXRQYXJlbnQoKSxnPShrPWsuZ2V0TmV4dCgpKT9rLmdldENoaWxkKDApOm51bGwpfWIucmVzZXQoKTtmb3IoYj1cbmUubGVuZ3RoLTE7MDw9YjtiLS0pZChlW2JdKTtnP2goZywhMCk6ZiYmKGNbMF0ubW92ZVRvUG9zaXRpb24oZixDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfU1RBUlQpLGNbMF0uc2VsZWN0KCksZi5yZW1vdmUoKSl9ZWxzZSBiIGluc3RhbmNlb2YgQ0tFRElUT1IuZG9tLmVsZW1lbnQmJihjPWIuZ2V0UGFyZW50KCksMT09Yy5nZXRDaGlsZENvdW50KCk/Yy5yZW1vdmUoKTpiLnJlbW92ZSgpKX1mdW5jdGlvbiBoKGEsYil7dmFyIGQ9YS5nZXREb2N1bWVudCgpLGM9Q0tFRElUT1IuZG9jdW1lbnQ7Q0tFRElUT1IuZW52LmllJiYxMD09Q0tFRElUT1IuZW52LnZlcnNpb24mJihjLmZvY3VzKCksZC5mb2N1cygpKTtkPW5ldyBDS0VESVRPUi5kb20ucmFuZ2UoZCk7ZFtcIm1vdmVUb0VsZW1lbnRFZGl0XCIrKGI/XCJFbmRcIjpcIlN0YXJ0XCIpXShhKXx8KGQuc2VsZWN0Tm9kZUNvbnRlbnRzKGEpLGQuY29sbGFwc2UoYj8hMTohMCkpO2Quc2VsZWN0KCEwKX1mdW5jdGlvbiBnKGEsYixkKXthPWFbYl07XG5pZihcInVuZGVmaW5lZFwiPT10eXBlb2YgZClyZXR1cm4gYTtmb3IoYj0wO2EmJmI8YS5sZW5ndGg7YisrKXtpZihkLmlzJiZhW2JdPT1kLiQpcmV0dXJuIGI7aWYoYj09ZClyZXR1cm4gbmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGFbYl0pfXJldHVybiBkLmlzPy0xOm51bGx9ZnVuY3Rpb24gbihiLGQsYyl7dmFyIGU9YShiKSxmO2lmKChkPzEhPWUubGVuZ3RoOjI+ZS5sZW5ndGgpfHwoZj1iLmdldENvbW1vbkFuY2VzdG9yKCkpJiZmLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZi5pcyhcInRhYmxlXCIpKXJldHVybiExO2I9ZVswXTtmPWIuZ2V0QXNjZW5kYW50KFwidGFibGVcIik7dmFyIGg9Q0tFRElUT1IudG9vbHMuYnVpbGRUYWJsZU1hcChmKSxrPWgubGVuZ3RoLGw9aFswXS5sZW5ndGgsbT1iLmdldFBhcmVudCgpLiQucm93SW5kZXgsbj1nKGgsbSxiKSxyO2lmKGQpe3ZhciB3O3RyeXt2YXIgeD1wYXJzZUludChiLmdldEF0dHJpYnV0ZShcInJvd3NwYW5cIiksMTApfHwxO3I9cGFyc2VJbnQoYi5nZXRBdHRyaWJ1dGUoXCJjb2xzcGFuXCIpLFxuMTApfHwxO3c9aFtcInVwXCI9PWQ/bS14OlwiZG93blwiPT1kP20reDptXVtcImxlZnRcIj09ZD9uLXI6XCJyaWdodFwiPT1kP24rcjpuXX1jYXRjaChLKXtyZXR1cm4hMX1pZighd3x8Yi4kPT13KXJldHVybiExO2VbXCJ1cFwiPT1kfHxcImxlZnRcIj09ZD9cInVuc2hpZnRcIjpcInB1c2hcIl0obmV3IENLRURJVE9SLmRvbS5lbGVtZW50KHcpKX1kPWIuZ2V0RG9jdW1lbnQoKTt2YXIgRz1tLHg9dz0wLE09IWMmJm5ldyBDS0VESVRPUi5kb20uZG9jdW1lbnRGcmFnbWVudChkKSxIPTA7Zm9yKGQ9MDtkPGUubGVuZ3RoO2QrKyl7cj1lW2RdO3ZhciBFPXIuZ2V0UGFyZW50KCksUD1yLmdldEZpcnN0KCksTD1yLiQuY29sU3BhbixOPXIuJC5yb3dTcGFuLEU9RS4kLnJvd0luZGV4LE89ZyhoLEUsciksSD1IK0wqTix4PU1hdGgubWF4KHgsTy1uK0wpO3c9TWF0aC5tYXgodyxFLW0rTik7Y3x8KEw9ciwoTj1MLmdldEJvZ3VzKCkpJiZOLnJlbW92ZSgpLEwudHJpbSgpLHIuZ2V0Q2hpbGRyZW4oKS5jb3VudCgpJiYoRT09XG5HfHwhUHx8UC5pc0Jsb2NrQm91bmRhcnkmJlAuaXNCbG9ja0JvdW5kYXJ5KHticjoxfSl8fChHPU0uZ2V0TGFzdChDS0VESVRPUi5kb20ud2Fsa2VyLndoaXRlc3BhY2VzKCEwKSksIUd8fEcuaXMmJkcuaXMoXCJiclwiKXx8TS5hcHBlbmQoXCJiclwiKSksci5tb3ZlQ2hpbGRyZW4oTSkpLGQ/ci5yZW1vdmUoKTpyLnNldEh0bWwoXCJcIikpO0c9RX1pZihjKXJldHVybiB3Kng9PUg7TS5tb3ZlQ2hpbGRyZW4oYik7Yi5hcHBlbmRCb2d1cygpO3g+PWw/Yi5yZW1vdmVBdHRyaWJ1dGUoXCJyb3dTcGFuXCIpOmIuJC5yb3dTcGFuPXc7dz49az9iLnJlbW92ZUF0dHJpYnV0ZShcImNvbFNwYW5cIik6Yi4kLmNvbFNwYW49eDtjPW5ldyBDS0VESVRPUi5kb20ubm9kZUxpc3QoZi4kLnJvd3MpO2U9Yy5jb3VudCgpO2ZvcihkPWUtMTswPD1kO2QtLSlmPWMuZ2V0SXRlbShkKSxmLiQuY2VsbHMubGVuZ3RofHwoZi5yZW1vdmUoKSxlKyspO3JldHVybiBifWZ1bmN0aW9uIHcoYixkKXt2YXIgYz1hKGIpO2lmKDE8XG5jLmxlbmd0aClyZXR1cm4hMTtpZihkKXJldHVybiEwO3ZhciBjPWNbMF0sZT1jLmdldFBhcmVudCgpLGY9ZS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSxoPUNLRURJVE9SLnRvb2xzLmJ1aWxkVGFibGVNYXAoZiksaz1lLiQucm93SW5kZXgsbD1nKGgsayxjKSxtPWMuJC5yb3dTcGFuLG47aWYoMTxtKXtuPU1hdGguY2VpbChtLzIpO2Zvcih2YXIgbT1NYXRoLmZsb29yKG0vMiksZT1rK24sZj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZi4kLnJvd3NbZV0pLGg9ZyhoLGUpLHIsZT1jLmNsb25lKCksaz0wO2s8aC5sZW5ndGg7aysrKWlmKHI9aFtrXSxyLnBhcmVudE5vZGU9PWYuJCYmaz5sKXtlLmluc2VydEJlZm9yZShuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQocikpO2JyZWFrfWVsc2Ugcj1udWxsO3J8fGYuYXBwZW5kKGUpfWVsc2UgZm9yKG09bj0xLGY9ZS5jbG9uZSgpLGYuaW5zZXJ0QWZ0ZXIoZSksZi5hcHBlbmQoZT1jLmNsb25lKCkpLHI9ZyhoLGspLGw9MDtsPHIubGVuZ3RoO2wrKylyW2xdLnJvd1NwYW4rKztcbmUuYXBwZW5kQm9ndXMoKTtjLiQucm93U3Bhbj1uO2UuJC5yb3dTcGFuPW07MT09biYmYy5yZW1vdmVBdHRyaWJ1dGUoXCJyb3dTcGFuXCIpOzE9PW0mJmUucmVtb3ZlQXR0cmlidXRlKFwicm93U3BhblwiKTtyZXR1cm4gZX1mdW5jdGlvbiB4KGIsZCl7dmFyIGM9YShiKTtpZigxPGMubGVuZ3RoKXJldHVybiExO2lmKGQpcmV0dXJuITA7dmFyIGM9Y1swXSxlPWMuZ2V0UGFyZW50KCksZj1lLmdldEFzY2VuZGFudChcInRhYmxlXCIpLGY9Q0tFRElUT1IudG9vbHMuYnVpbGRUYWJsZU1hcChmKSxoPWcoZixlLiQucm93SW5kZXgsYyksaz1jLiQuY29sU3BhbjtpZigxPGspZT1NYXRoLmNlaWwoay8yKSxrPU1hdGguZmxvb3Ioay8yKTtlbHNle2Zvcih2YXIgaz1lPTEsbD1bXSxtPTA7bTxmLmxlbmd0aDttKyspe3ZhciBuPWZbbV07bC5wdXNoKG5baF0pOzE8bltoXS5yb3dTcGFuJiYobSs9bltoXS5yb3dTcGFuLTEpfWZvcihmPTA7ZjxsLmxlbmd0aDtmKyspbFtmXS5jb2xTcGFuKyt9Zj1jLmNsb25lKCk7XG5mLmluc2VydEFmdGVyKGMpO2YuYXBwZW5kQm9ndXMoKTtjLiQuY29sU3Bhbj1lO2YuJC5jb2xTcGFuPWs7MT09ZSYmYy5yZW1vdmVBdHRyaWJ1dGUoXCJjb2xTcGFuXCIpOzE9PWsmJmYucmVtb3ZlQXR0cmlidXRlKFwiY29sU3BhblwiKTtyZXR1cm4gZn12YXIgcj1DS0VESVRPUi50b29scy5pc0FycmF5O0NLRURJVE9SLnBsdWdpbnMudGFibGV0b29scz17cmVxdWlyZXM6XCJ0YWJsZSxkaWFsb2csY29udGV4dG1lbnVcIixpbml0OmZ1bmN0aW9uKGIpe2Z1bmN0aW9uIGMoYSl7cmV0dXJuIENLRURJVE9SLnRvb2xzLmV4dGVuZChhfHx7fSx7Y29udGV4dFNlbnNpdGl2ZToxLHJlZnJlc2g6ZnVuY3Rpb24oYSxiKXt0aGlzLnNldFN0YXRlKGIuY29udGFpbnMoe3RkOjEsdGg6MX0sMSk/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEKX19KX1mdW5jdGlvbiBnKGEsZCl7dmFyIGM9Yi5hZGRDb21tYW5kKGEsZCk7Yi5hZGRGZWF0dXJlKGMpfXZhciBxPWIubGFuZy50YWJsZSxcbnI9Q0tFRElUT1IudG9vbHMuc3R5bGUucGFyc2UseT1cInRke3dpZHRofSB0ZHtoZWlnaHR9IHRke2JvcmRlci1jb2xvcn0gdGR7YmFja2dyb3VuZC1jb2xvcn0gdGR7d2hpdGUtc3BhY2V9IHRke3ZlcnRpY2FsLWFsaWdufSB0ZHt0ZXh0LWFsaWdufSB0ZFtjb2xzcGFuXSB0ZFtyb3dzcGFuXSB0aFwiLnNwbGl0KFwiIFwiKTtnKFwiY2VsbFByb3BlcnRpZXNcIixuZXcgQ0tFRElUT1IuZGlhbG9nQ29tbWFuZChcImNlbGxQcm9wZXJ0aWVzXCIsYyh7YWxsb3dlZENvbnRlbnQ6XCJ0ZCB0aHt3aWR0aCxoZWlnaHQsYm9yZGVyLWNvbG9yLGJhY2tncm91bmQtY29sb3Isd2hpdGUtc3BhY2UsdmVydGljYWwtYWxpZ24sdGV4dC1hbGlnbn1bY29sc3Bhbixyb3dzcGFuXVwiLHJlcXVpcmVkQ29udGVudDp5LGNvbnRlbnRUcmFuc2Zvcm1hdGlvbnM6W1t7ZWxlbWVudDpcInRkXCIsbGVmdDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZXMuYmFja2dyb3VuZCYmci5iYWNrZ3JvdW5kKGEuc3R5bGVzLmJhY2tncm91bmQpLmNvbG9yfSxcbnJpZ2h0OmZ1bmN0aW9uKGEpe2Euc3R5bGVzW1wiYmFja2dyb3VuZC1jb2xvclwiXT1yLmJhY2tncm91bmQoYS5zdHlsZXMuYmFja2dyb3VuZCkuY29sb3J9fSx7ZWxlbWVudDpcInRkXCIsY2hlY2s6XCJ0ZHt2ZXJ0aWNhbC1hbGlnbn1cIixsZWZ0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmF0dHJpYnV0ZXMmJmEuYXR0cmlidXRlcy52YWxpZ259LHJpZ2h0OmZ1bmN0aW9uKGEpe2Euc3R5bGVzW1widmVydGljYWwtYWxpZ25cIl09YS5hdHRyaWJ1dGVzLnZhbGlnbjtkZWxldGUgYS5hdHRyaWJ1dGVzLnZhbGlnbn19XSxbe2VsZW1lbnQ6XCJ0clwiLGNoZWNrOlwidGR7aGVpZ2h0fVwiLGxlZnQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuc3R5bGVzJiZhLnN0eWxlcy5oZWlnaHR9LHJpZ2h0OmZ1bmN0aW9uKGEpe0NLRURJVE9SLnRvb2xzLmFycmF5LmZvckVhY2goYS5jaGlsZHJlbixmdW5jdGlvbihiKXtiLm5hbWUgaW57dGQ6MSx0aDoxfSYmKGIuYXR0cmlidXRlc1tcImNrZS1yb3ctaGVpZ2h0XCJdPWEuc3R5bGVzLmhlaWdodCl9KTtcbmRlbGV0ZSBhLnN0eWxlcy5oZWlnaHR9fV0sW3tlbGVtZW50OlwidGRcIixjaGVjazpcInRke2hlaWdodH1cIixsZWZ0OmZ1bmN0aW9uKGEpe3JldHVybihhPWEuYXR0cmlidXRlcykmJmFbXCJja2Utcm93LWhlaWdodFwiXX0scmlnaHQ6ZnVuY3Rpb24oYSl7YS5zdHlsZXMuaGVpZ2h0PWEuYXR0cmlidXRlc1tcImNrZS1yb3ctaGVpZ2h0XCJdO2RlbGV0ZSBhLmF0dHJpYnV0ZXNbXCJja2Utcm93LWhlaWdodFwiXX19XV19KSkpO0NLRURJVE9SLmRpYWxvZy5hZGQoXCJjZWxsUHJvcGVydGllc1wiLHRoaXMucGF0aCtcImRpYWxvZ3MvdGFibGVDZWxsLmpzXCIpO2coXCJyb3dEZWxldGVcIixjKHtyZXF1aXJlZENvbnRlbnQ6XCJ0YWJsZVwiLGV4ZWM6ZnVuY3Rpb24oYSl7YT1hLmdldFNlbGVjdGlvbigpOyhhPWUoYSkpJiZoKGEpfX0pKTtnKFwicm93SW5zZXJ0QmVmb3JlXCIsYyh7cmVxdWlyZWRDb250ZW50OlwidGFibGVcIixleGVjOmZ1bmN0aW9uKGIpe2I9Yi5nZXRTZWxlY3Rpb24oKTtiPWEoYik7ZihiLCEwKX19KSk7XG5nKFwicm93SW5zZXJ0QWZ0ZXJcIixjKHtyZXF1aXJlZENvbnRlbnQ6XCJ0YWJsZVwiLGV4ZWM6ZnVuY3Rpb24oYil7Yj1iLmdldFNlbGVjdGlvbigpO2I9YShiKTtmKGIpfX0pKTtnKFwiY29sdW1uRGVsZXRlXCIsYyh7cmVxdWlyZWRDb250ZW50OlwidGFibGVcIixleGVjOmZ1bmN0aW9uKGEpe2E9YS5nZXRTZWxlY3Rpb24oKTsoYT1sKGEpKSYmaChhLCEwKX19KSk7ZyhcImNvbHVtbkluc2VydEJlZm9yZVwiLGMoe3JlcXVpcmVkQ29udGVudDpcInRhYmxlXCIsZXhlYzpmdW5jdGlvbihiKXtiPWIuZ2V0U2VsZWN0aW9uKCk7Yj1hKGIpO2soYiwhMCl9fSkpO2coXCJjb2x1bW5JbnNlcnRBZnRlclwiLGMoe3JlcXVpcmVkQ29udGVudDpcInRhYmxlXCIsZXhlYzpmdW5jdGlvbihiKXtiPWIuZ2V0U2VsZWN0aW9uKCk7Yj1hKGIpO2soYil9fSkpO2coXCJjZWxsRGVsZXRlXCIsYyh7cmVxdWlyZWRDb250ZW50OlwidGFibGVcIixleGVjOmZ1bmN0aW9uKGEpe2E9YS5nZXRTZWxlY3Rpb24oKTtkKGEpfX0pKTtnKFwiY2VsbE1lcmdlXCIsXG5jKHthbGxvd2VkQ29udGVudDpcInRkW2NvbHNwYW4scm93c3Bhbl1cIixyZXF1aXJlZENvbnRlbnQ6XCJ0ZFtjb2xzcGFuLHJvd3NwYW5dXCIsZXhlYzpmdW5jdGlvbihhLGIpe2IuY2VsbD1uKGEuZ2V0U2VsZWN0aW9uKCkpO2goYi5jZWxsLCEwKX19KSk7ZyhcImNlbGxNZXJnZVJpZ2h0XCIsYyh7YWxsb3dlZENvbnRlbnQ6XCJ0ZFtjb2xzcGFuXVwiLHJlcXVpcmVkQ29udGVudDpcInRkW2NvbHNwYW5dXCIsZXhlYzpmdW5jdGlvbihhLGIpe2IuY2VsbD1uKGEuZ2V0U2VsZWN0aW9uKCksXCJyaWdodFwiKTtoKGIuY2VsbCwhMCl9fSkpO2coXCJjZWxsTWVyZ2VEb3duXCIsYyh7YWxsb3dlZENvbnRlbnQ6XCJ0ZFtyb3dzcGFuXVwiLHJlcXVpcmVkQ29udGVudDpcInRkW3Jvd3NwYW5dXCIsZXhlYzpmdW5jdGlvbihhLGIpe2IuY2VsbD1uKGEuZ2V0U2VsZWN0aW9uKCksXCJkb3duXCIpO2goYi5jZWxsLCEwKX19KSk7ZyhcImNlbGxWZXJ0aWNhbFNwbGl0XCIsYyh7YWxsb3dlZENvbnRlbnQ6XCJ0ZFtyb3dzcGFuXVwiLHJlcXVpcmVkQ29udGVudDpcInRkW3Jvd3NwYW5dXCIsXG5leGVjOmZ1bmN0aW9uKGEpe2goeChhLmdldFNlbGVjdGlvbigpKSl9fSkpO2coXCJjZWxsSG9yaXpvbnRhbFNwbGl0XCIsYyh7YWxsb3dlZENvbnRlbnQ6XCJ0ZFtjb2xzcGFuXVwiLHJlcXVpcmVkQ29udGVudDpcInRkW2NvbHNwYW5dXCIsZXhlYzpmdW5jdGlvbihhKXtoKHcoYS5nZXRTZWxlY3Rpb24oKSkpfX0pKTtnKFwiY2VsbEluc2VydEJlZm9yZVwiLGMoe3JlcXVpcmVkQ29udGVudDpcInRhYmxlXCIsZXhlYzpmdW5jdGlvbihhKXthPWEuZ2V0U2VsZWN0aW9uKCk7bShhLCEwKX19KSk7ZyhcImNlbGxJbnNlcnRBZnRlclwiLGMoe3JlcXVpcmVkQ29udGVudDpcInRhYmxlXCIsZXhlYzpmdW5jdGlvbihhKXthPWEuZ2V0U2VsZWN0aW9uKCk7bShhKX19KSk7Yi5hZGRNZW51SXRlbXMmJmIuYWRkTWVudUl0ZW1zKHt0YWJsZWNlbGw6e2xhYmVsOnEuY2VsbC5tZW51LGdyb3VwOlwidGFibGVjZWxsXCIsb3JkZXI6MSxnZXRJdGVtczpmdW5jdGlvbigpe3ZhciBkPWIuZ2V0U2VsZWN0aW9uKCksYz1hKGQpLGQ9XG57dGFibGVjZWxsX2luc2VydEJlZm9yZTpDS0VESVRPUi5UUklTVEFURV9PRkYsdGFibGVjZWxsX2luc2VydEFmdGVyOkNLRURJVE9SLlRSSVNUQVRFX09GRix0YWJsZWNlbGxfZGVsZXRlOkNLRURJVE9SLlRSSVNUQVRFX09GRix0YWJsZWNlbGxfbWVyZ2U6bihkLG51bGwsITApP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCx0YWJsZWNlbGxfbWVyZ2VfcmlnaHQ6bihkLFwicmlnaHRcIiwhMCk/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVELHRhYmxlY2VsbF9tZXJnZV9kb3duOm4oZCxcImRvd25cIiwhMCk/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVELHRhYmxlY2VsbF9zcGxpdF92ZXJ0aWNhbDp4KGQsITApP0NLRURJVE9SLlRSSVNUQVRFX09GRjpDS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCx0YWJsZWNlbGxfc3BsaXRfaG9yaXpvbnRhbDp3KGQsITApP0NLRURJVE9SLlRSSVNUQVRFX09GRjpcbkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEfTtiLmZpbHRlci5jaGVjayh5KSYmKGQudGFibGVjZWxsX3Byb3BlcnRpZXM9MDxjLmxlbmd0aD9DS0VESVRPUi5UUklTVEFURV9PRkY6Q0tFRElUT1IuVFJJU1RBVEVfRElTQUJMRUQpO3JldHVybiBkfX0sdGFibGVjZWxsX2luc2VydEJlZm9yZTp7bGFiZWw6cS5jZWxsLmluc2VydEJlZm9yZSxncm91cDpcInRhYmxlY2VsbFwiLGNvbW1hbmQ6XCJjZWxsSW5zZXJ0QmVmb3JlXCIsb3JkZXI6NX0sdGFibGVjZWxsX2luc2VydEFmdGVyOntsYWJlbDpxLmNlbGwuaW5zZXJ0QWZ0ZXIsZ3JvdXA6XCJ0YWJsZWNlbGxcIixjb21tYW5kOlwiY2VsbEluc2VydEFmdGVyXCIsb3JkZXI6MTB9LHRhYmxlY2VsbF9kZWxldGU6e2xhYmVsOnEuY2VsbC5kZWxldGVDZWxsLGdyb3VwOlwidGFibGVjZWxsXCIsY29tbWFuZDpcImNlbGxEZWxldGVcIixvcmRlcjoxNX0sdGFibGVjZWxsX21lcmdlOntsYWJlbDpxLmNlbGwubWVyZ2UsZ3JvdXA6XCJ0YWJsZWNlbGxcIixjb21tYW5kOlwiY2VsbE1lcmdlXCIsXG5vcmRlcjoxNn0sdGFibGVjZWxsX21lcmdlX3JpZ2h0OntsYWJlbDpxLmNlbGwubWVyZ2VSaWdodCxncm91cDpcInRhYmxlY2VsbFwiLGNvbW1hbmQ6XCJjZWxsTWVyZ2VSaWdodFwiLG9yZGVyOjE3fSx0YWJsZWNlbGxfbWVyZ2VfZG93bjp7bGFiZWw6cS5jZWxsLm1lcmdlRG93bixncm91cDpcInRhYmxlY2VsbFwiLGNvbW1hbmQ6XCJjZWxsTWVyZ2VEb3duXCIsb3JkZXI6MTh9LHRhYmxlY2VsbF9zcGxpdF9ob3Jpem9udGFsOntsYWJlbDpxLmNlbGwuc3BsaXRIb3Jpem9udGFsLGdyb3VwOlwidGFibGVjZWxsXCIsY29tbWFuZDpcImNlbGxIb3Jpem9udGFsU3BsaXRcIixvcmRlcjoxOX0sdGFibGVjZWxsX3NwbGl0X3ZlcnRpY2FsOntsYWJlbDpxLmNlbGwuc3BsaXRWZXJ0aWNhbCxncm91cDpcInRhYmxlY2VsbFwiLGNvbW1hbmQ6XCJjZWxsVmVydGljYWxTcGxpdFwiLG9yZGVyOjIwfSx0YWJsZWNlbGxfcHJvcGVydGllczp7bGFiZWw6cS5jZWxsLnRpdGxlLGdyb3VwOlwidGFibGVjZWxscHJvcGVydGllc1wiLGNvbW1hbmQ6XCJjZWxsUHJvcGVydGllc1wiLFxub3JkZXI6MjF9LHRhYmxlcm93OntsYWJlbDpxLnJvdy5tZW51LGdyb3VwOlwidGFibGVyb3dcIixvcmRlcjoxLGdldEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJue3RhYmxlcm93X2luc2VydEJlZm9yZTpDS0VESVRPUi5UUklTVEFURV9PRkYsdGFibGVyb3dfaW5zZXJ0QWZ0ZXI6Q0tFRElUT1IuVFJJU1RBVEVfT0ZGLHRhYmxlcm93X2RlbGV0ZTpDS0VESVRPUi5UUklTVEFURV9PRkZ9fX0sdGFibGVyb3dfaW5zZXJ0QmVmb3JlOntsYWJlbDpxLnJvdy5pbnNlcnRCZWZvcmUsZ3JvdXA6XCJ0YWJsZXJvd1wiLGNvbW1hbmQ6XCJyb3dJbnNlcnRCZWZvcmVcIixvcmRlcjo1fSx0YWJsZXJvd19pbnNlcnRBZnRlcjp7bGFiZWw6cS5yb3cuaW5zZXJ0QWZ0ZXIsZ3JvdXA6XCJ0YWJsZXJvd1wiLGNvbW1hbmQ6XCJyb3dJbnNlcnRBZnRlclwiLG9yZGVyOjEwfSx0YWJsZXJvd19kZWxldGU6e2xhYmVsOnEucm93LmRlbGV0ZVJvdyxncm91cDpcInRhYmxlcm93XCIsY29tbWFuZDpcInJvd0RlbGV0ZVwiLG9yZGVyOjE1fSxcbnRhYmxlY29sdW1uOntsYWJlbDpxLmNvbHVtbi5tZW51LGdyb3VwOlwidGFibGVjb2x1bW5cIixvcmRlcjoxLGdldEl0ZW1zOmZ1bmN0aW9uKCl7cmV0dXJue3RhYmxlY29sdW1uX2luc2VydEJlZm9yZTpDS0VESVRPUi5UUklTVEFURV9PRkYsdGFibGVjb2x1bW5faW5zZXJ0QWZ0ZXI6Q0tFRElUT1IuVFJJU1RBVEVfT0ZGLHRhYmxlY29sdW1uX2RlbGV0ZTpDS0VESVRPUi5UUklTVEFURV9PRkZ9fX0sdGFibGVjb2x1bW5faW5zZXJ0QmVmb3JlOntsYWJlbDpxLmNvbHVtbi5pbnNlcnRCZWZvcmUsZ3JvdXA6XCJ0YWJsZWNvbHVtblwiLGNvbW1hbmQ6XCJjb2x1bW5JbnNlcnRCZWZvcmVcIixvcmRlcjo1fSx0YWJsZWNvbHVtbl9pbnNlcnRBZnRlcjp7bGFiZWw6cS5jb2x1bW4uaW5zZXJ0QWZ0ZXIsZ3JvdXA6XCJ0YWJsZWNvbHVtblwiLGNvbW1hbmQ6XCJjb2x1bW5JbnNlcnRBZnRlclwiLG9yZGVyOjEwfSx0YWJsZWNvbHVtbl9kZWxldGU6e2xhYmVsOnEuY29sdW1uLmRlbGV0ZUNvbHVtbixncm91cDpcInRhYmxlY29sdW1uXCIsXG5jb21tYW5kOlwiY29sdW1uRGVsZXRlXCIsb3JkZXI6MTV9fSk7Yi5jb250ZXh0TWVudSYmYi5jb250ZXh0TWVudS5hZGRMaXN0ZW5lcihmdW5jdGlvbihhLGIsZCl7cmV0dXJuKGE9ZC5jb250YWlucyh7dGQ6MSx0aDoxfSwxKSkmJiFhLmlzUmVhZE9ubHkoKT97dGFibGVjZWxsOkNLRURJVE9SLlRSSVNUQVRFX09GRix0YWJsZXJvdzpDS0VESVRPUi5UUklTVEFURV9PRkYsdGFibGVjb2x1bW46Q0tFRElUT1IuVFJJU1RBVEVfT0ZGfTpudWxsfSl9LGdldENlbGxDb2xJbmRleDpiLGluc2VydFJvdzpmLGluc2VydENvbHVtbjprLGdldFNlbGVjdGVkQ2VsbHM6YX07Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ0YWJsZXRvb2xzXCIsQ0tFRElUT1IucGx1Z2lucy50YWJsZXRvb2xzKX0oKSxDS0VESVRPUi50b29scy5idWlsZFRhYmxlTWFwPWZ1bmN0aW9uKGEsZixlLGIsYyl7YT1hLiQucm93cztlPWV8fDA7Yj1cIm51bWJlclwiPT09dHlwZW9mIGI/YjphLmxlbmd0aC0xO2M9XCJudW1iZXJcIj09PXR5cGVvZiBjP1xuYzotMTt2YXIgaz0tMSxsPVtdO2ZvcihmPWZ8fDA7Zjw9YjtmKyspe2srKzshbFtrXSYmKGxba109W10pO2Zvcih2YXIgbT0tMSxkPWU7ZDw9KC0xPT09Yz9hW2ZdLmNlbGxzLmxlbmd0aC0xOmMpO2QrKyl7dmFyIGg9YVtmXS5jZWxsc1tkXTtpZighaClicmVhaztmb3IobSsrO2xba11bbV07KW0rKztmb3IodmFyIGc9aXNOYU4oaC5jb2xTcGFuKT8xOmguY29sU3BhbixoPWlzTmFOKGgucm93U3Bhbik/MTpoLnJvd1NwYW4sbj0wO248aCYmIShmK24+Yik7bisrKXtsW2srbl18fChsW2srbl09W10pO2Zvcih2YXIgdz0wO3c8Zzt3KyspbFtrK25dW20rd109YVtmXS5jZWxsc1tkXX1tKz1nLTE7aWYoLTEhPT1jJiZtPj1jKWJyZWFrfX1yZXR1cm4gbH0sQ0tFRElUT1IuY29uZmlnLnRhYmxldG9vbHNfc2NvcGVkSGVhZGVycz0hMSxmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7cmV0dXJuIENLRURJVE9SLnBsdWdpbnMud2lkZ2V0JiZDS0VESVRPUi5wbHVnaW5zLndpZGdldC5pc0RvbVdpZGdldChhKX1cbmZ1bmN0aW9uIGYoYSxiKXt2YXIgYz1hLmdldEFzY2VuZGFudChcInRhYmxlXCIpLGU9Yi5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSxmPUNLRURJVE9SLnRvb2xzLmJ1aWxkVGFibGVNYXAoYyksZz1kKGEpLGg9ZChiKSxrPVtdLGw9e30sbSxuO2MuY29udGFpbnMoZSkmJihiPWIuZ2V0QXNjZW5kYW50KHt0ZDoxLHRoOjF9KSxoPWQoYikpO2c+aCYmKGM9ZyxnPWgsaD1jLGM9YSxhPWIsYj1jKTtmb3IoYz0wO2M8ZltnXS5sZW5ndGg7YysrKWlmKGEuJD09PWZbZ11bY10pe209YzticmVha31mb3IoYz0wO2M8ZltoXS5sZW5ndGg7YysrKWlmKGIuJD09PWZbaF1bY10pe249YzticmVha31tPm4mJihjPW0sbT1uLG49Yyk7Zm9yKGM9ZztjPD1oO2MrKylmb3IoZz1tO2c8PW47ZysrKWU9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGZbY11bZ10pLGUuJCYmIWUuZ2V0Q3VzdG9tRGF0YShcInNlbGVjdGVkX2NlbGxcIikmJihrLnB1c2goZSksQ0tFRElUT1IuZG9tLmVsZW1lbnQuc2V0TWFya2VyKGwsZSxcblwic2VsZWN0ZWRfY2VsbFwiLCEwKSk7Q0tFRElUT1IuZG9tLmVsZW1lbnQuY2xlYXJBbGxNYXJrZXJzKGwpO3JldHVybiBrfWZ1bmN0aW9uIGUoYSl7cmV0dXJuKGE9YS5lZGl0YWJsZSgpLmZpbmRPbmUoXCIuY2tlX3RhYmxlLWZha2VkLXNlbGVjdGlvblwiKSkmJmEuZ2V0QXNjZW5kYW50KFwidGFibGVcIil9ZnVuY3Rpb24gYihhLGIpe3ZhciBkPWEuZWRpdGFibGUoKS5maW5kKFwiLmNrZV90YWJsZS1mYWtlZC1zZWxlY3Rpb25cIiksYz1hLmVkaXRhYmxlKCkuZmluZE9uZShcIltkYXRhLWNrZS10YWJsZS1mYWtlZC1zZWxlY3Rpb24tdGFibGVdXCIpLGU7YS5maXJlKFwibG9ja1NuYXBzaG90XCIpO2EuZWRpdGFibGUoKS5yZW1vdmVDbGFzcyhcImNrZV90YWJsZS1mYWtlZC1zZWxlY3Rpb24tZWRpdG9yXCIpO2ZvcihlPTA7ZTxkLmNvdW50KCk7ZSsrKWQuZ2V0SXRlbShlKS5yZW1vdmVDbGFzcyhcImNrZV90YWJsZS1mYWtlZC1zZWxlY3Rpb25cIik7YyYmYy5kYXRhKFwiY2tlLXRhYmxlLWZha2VkLXNlbGVjdGlvbi10YWJsZVwiLFxuITEpO2EuZmlyZShcInVubG9ja1NuYXBzaG90XCIpO2ImJihwPXthY3RpdmU6ITF9LGEuZ2V0U2VsZWN0aW9uKCkuaXNJblRhYmxlKCkmJmEuZ2V0U2VsZWN0aW9uKCkucmVzZXQoKSl9ZnVuY3Rpb24gYyhhLGIpe3ZhciBkPVtdLGMsZTtmb3IoZT0wO2U8Yi5sZW5ndGg7ZSsrKWM9YS5jcmVhdGVSYW5nZSgpLGMuc2V0U3RhcnRCZWZvcmUoYltlXSksYy5zZXRFbmRBZnRlcihiW2VdKSxkLnB1c2goYyk7YS5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSYW5nZXMoZCl9ZnVuY3Rpb24gayhhKXt2YXIgYj1hLmVkaXRhYmxlKCkuZmluZChcIi5ja2VfdGFibGUtZmFrZWQtc2VsZWN0aW9uXCIpOzE+Yi5jb3VudCgpfHwoYj1mKGIuZ2V0SXRlbSgwKSxiLmdldEl0ZW0oYi5jb3VudCgpLTEpKSxjKGEsYikpfWZ1bmN0aW9uIGwoZCxlLGcpe3ZhciBoPXooZC5nZXRTZWxlY3Rpb24oITApKTtlPWUuaXMoXCJ0YWJsZVwiKT9udWxsOmU7dmFyIGs7KGs9cC5hY3RpdmUmJiFwLmZpcnN0KSYmIShrPWUpJiYoaz1kLmdldFNlbGVjdGlvbigpLmdldFJhbmdlcygpLFxuaz0xPGgubGVuZ3RofHxrWzBdJiYha1swXS5jb2xsYXBzZWQ/ITA6ITEpO2lmKGspcC5maXJzdD1lfHxoWzBdLHAuZGlydHk9ZT8hMToxIT09aC5sZW5ndGg7ZWxzZSBpZihwLmFjdGl2ZSYmZSYmcC5maXJzdC5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKS5lcXVhbHMoZS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSkpe2g9ZihwLmZpcnN0LGUpO2lmKCFwLmRpcnR5JiYxPT09aC5sZW5ndGgmJiFhKGcuZGF0YS5nZXRUYXJnZXQoKSkpcmV0dXJuIGIoZCxcIm1vdXNldXBcIj09PWcubmFtZSk7cC5kaXJ0eT0hMDtwLmxhc3Q9ZTtjKGQsaCl9fWZ1bmN0aW9uIG0oYSl7dmFyIGQ9KGE9YS5lZGl0b3J8fGEuc2VuZGVyLmVkaXRvcikmJmEuZ2V0U2VsZWN0aW9uKCksYz1kJiZkLmdldFJhbmdlcygpfHxbXSxlPWMmJmNbMF0uZ2V0RW5jbG9zZWROb2RlKCksZT1lJiZlLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmZS5pcyhcImltZ1wiKSxmO2lmKGQmJihiKGEpLGQuaXNJblRhYmxlKCkmJmQuaXNGYWtlKSlpZihlKWEuZ2V0U2VsZWN0aW9uKCkucmVzZXQoKTtcbmVsc2UgaWYoIWNbMF0uX2dldFRhYmxlRWxlbWVudCh7dGFibGU6MX0pLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXRhYmxlc2VsZWN0aW9uLWlnbm9yZWRcIikpezE9PT1jLmxlbmd0aCYmY1swXS5fZ2V0VGFibGVFbGVtZW50KCkmJmNbMF0uX2dldFRhYmxlRWxlbWVudCgpLmlzKFwidGFibGVcIikmJihmPWNbMF0uX2dldFRhYmxlRWxlbWVudCgpKTtmPXooZCxmKTthLmZpcmUoXCJsb2NrU25hcHNob3RcIik7Zm9yKGQ9MDtkPGYubGVuZ3RoO2QrKylmW2RdLmFkZENsYXNzKFwiY2tlX3RhYmxlLWZha2VkLXNlbGVjdGlvblwiKTswPGYubGVuZ3RoJiYoYS5lZGl0YWJsZSgpLmFkZENsYXNzKFwiY2tlX3RhYmxlLWZha2VkLXNlbGVjdGlvbi1lZGl0b3JcIiksZlswXS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKS5kYXRhKFwiY2tlLXRhYmxlLWZha2VkLXNlbGVjdGlvbi10YWJsZVwiLFwiXCIpKTthLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKX19ZnVuY3Rpb24gZChhKXtyZXR1cm4gYS5nZXRBc2NlbmRhbnQoXCJ0clwiLFxuITApLiQucm93SW5kZXh9ZnVuY3Rpb24gaChkKXtmdW5jdGlvbiBjKGEsYil7cmV0dXJuIGEmJmI/YS5lcXVhbHMoYil8fGEuY29udGFpbnMoYil8fGIuY29udGFpbnMoYSl8fGEuZ2V0Q29tbW9uQW5jZXN0b3IoYikuaXModCk6ITF9ZnVuY3Rpb24gZihhKXtyZXR1cm4hYS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSYmYS5nZXREb2N1bWVudCgpLmVxdWFscyhtLmRvY3VtZW50KX1mdW5jdGlvbiBnKGEsYixkLGMpe2lmKFwibW91c2Vkb3duXCI9PT1hLm5hbWUmJihDS0VESVRPUi50b29scy5nZXRNb3VzZUJ1dHRvbihhKT09PUNLRURJVE9SLk1PVVNFX0JVVFRPTl9MRUZUfHwhYykpcmV0dXJuITA7aWYoYj1hLm5hbWU9PT0oQ0tFRElUT1IuZW52LmdlY2tvP1wibW91c2Vkb3duXCI6XCJtb3VzZXVwXCIpJiYhZihhLmRhdGEuZ2V0VGFyZ2V0KCkpKWE9YS5kYXRhLmdldFRhcmdldCgpLmdldEFzY2VuZGFudCh7dGQ6MSx0aDoxfSwhMCksYj0hKGEmJmEuaGFzQ2xhc3MoXCJja2VfdGFibGUtZmFrZWQtc2VsZWN0aW9uXCIpKTtcbnJldHVybiBifWlmKGQuZGF0YS5nZXRUYXJnZXQoKS5nZXROYW1lJiYoXCJtb3VzZXVwXCI9PT1kLm5hbWV8fCFhKGQuZGF0YS5nZXRUYXJnZXQoKSkpKXt2YXIgbT1kLmVkaXRvcnx8ZC5saXN0ZW5lckRhdGEuZWRpdG9yLG49bS5nZXRTZWxlY3Rpb24oMSkscT1lKG0pLHI9ZC5kYXRhLmdldFRhcmdldCgpLHc9ciYmci5nZXRBc2NlbmRhbnQoe3RkOjEsdGg6MX0sITApLHI9ciYmci5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSx0PXt0YWJsZToxLHRoZWFkOjEsdGJvZHk6MSx0Zm9vdDoxLHRyOjEsdGQ6MSx0aDoxfTtyJiZyLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXRhYmxlc2VsZWN0aW9uLWlnbm9yZWRcIil8fChnKGQsbixxLHIpJiZiKG0sITApLCFwLmFjdGl2ZSYmXCJtb3VzZWRvd25cIj09PWQubmFtZSYmQ0tFRElUT1IudG9vbHMuZ2V0TW91c2VCdXR0b24oZCk9PT1DS0VESVRPUi5NT1VTRV9CVVRUT05fTEVGVCYmciYmKHA9e2FjdGl2ZTohMH0sQ0tFRElUT1IuZG9jdW1lbnQub24oXCJtb3VzZXVwXCIsXG5oLG51bGwse2VkaXRvcjptfSkpLCh3fHxyKSYmbChtLHd8fHIsZCksXCJtb3VzZXVwXCI9PT1kLm5hbWUmJihDS0VESVRPUi50b29scy5nZXRNb3VzZUJ1dHRvbihkKT09PUNLRURJVE9SLk1PVVNFX0JVVFRPTl9MRUZUJiYoZihkLmRhdGEuZ2V0VGFyZ2V0KCkpfHxjKHEscikpJiZrKG0pLHA9e2FjdGl2ZTohMX0sQ0tFRElUT1IuZG9jdW1lbnQucmVtb3ZlTGlzdGVuZXIoXCJtb3VzZXVwXCIsaCkpKX19ZnVuY3Rpb24gZyhhKXt2YXIgYj1hLmRhdGEuZ2V0VGFyZ2V0KCkuZ2V0QXNjZW5kYW50KFwidGFibGVcIiwhMCk7cC5hY3RpdmU9ITE7YiYmYi5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNrZS10YWJsZXNlbGVjdGlvbi1pZ25vcmVkXCIpfHwoYT1hLmRhdGEuZ2V0VGFyZ2V0KCkuZ2V0QXNjZW5kYW50KHt0ZDoxLHRoOjF9LCEwKSwhYXx8YS5oYXNDbGFzcyhcImNrZV90YWJsZS1mYWtlZC1zZWxlY3Rpb25cIikpfWZ1bmN0aW9uIG4oYSxiKXtmdW5jdGlvbiBkKGEpe2EuY2FuY2VsKCl9dmFyIGM9YS5nZXRTZWxlY3Rpb24oKSxcbmU9Yy5jcmVhdGVCb29rbWFya3MoKSxmPWEuZG9jdW1lbnQsZz1hLmNyZWF0ZVJhbmdlKCksaD1mLmdldERvY3VtZW50RWxlbWVudCgpLiQsaz1DS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24sbD1hLmJsb2NrbGVzc3x8Q0tFRElUT1IuZW52LmllP1wic3BhblwiOlwiZGl2XCIsbSxuLHAscTtmLmdldEJ5SWQoXCJja2VfdGFibGVfY29weWJpblwiKXx8KG09Zi5jcmVhdGVFbGVtZW50KGwpLG49Zi5jcmVhdGVFbGVtZW50KGwpLG4uc2V0QXR0cmlidXRlcyh7aWQ6XCJja2VfdGFibGVfY29weWJpblwiLFwiZGF0YS1ja2UtdGVtcFwiOlwiMVwifSksbS5zZXRTdHlsZXMoe3Bvc2l0aW9uOlwiYWJzb2x1dGVcIix3aWR0aDpcIjFweFwiLGhlaWdodDpcIjFweFwiLG92ZXJmbG93OlwiaGlkZGVuXCJ9KSxtLnNldFN0eWxlKFwibHRyXCI9PWEuY29uZmlnLmNvbnRlbnRzTGFuZ0RpcmVjdGlvbj9cImxlZnRcIjpcInJpZ2h0XCIsXCItNTAwMHB4XCIpLG0uc2V0SHRtbChhLmdldFNlbGVjdGVkSHRtbCghMCkpLGEuZmlyZShcImxvY2tTbmFwc2hvdFwiKSxcbm4uYXBwZW5kKG0pLGEuZWRpdGFibGUoKS5hcHBlbmQobikscT1hLm9uKFwic2VsZWN0aW9uQ2hhbmdlXCIsZCxudWxsLG51bGwsMCksayYmKHA9aC5zY3JvbGxUb3ApLGcuc2VsZWN0Tm9kZUNvbnRlbnRzKG0pLGcuc2VsZWN0KCksayYmKGguc2Nyb2xsVG9wPXApLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtuLnJlbW92ZSgpO2Muc2VsZWN0Qm9va21hcmtzKGUpO3EucmVtb3ZlTGlzdGVuZXIoKTthLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKTtiJiYoYS5leHRyYWN0U2VsZWN0ZWRIdG1sKCksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpKX0sMTAwKSl9ZnVuY3Rpb24gdyhhKXt2YXIgYj1hLmVkaXRvcnx8YS5zZW5kZXIuZWRpdG9yLGQ9Yi5nZXRTZWxlY3Rpb24oKTtkLmlzSW5UYWJsZSgpJiYoZC5nZXRSYW5nZXMoKVswXS5fZ2V0VGFibGVFbGVtZW50KHt0YWJsZToxfSkuaGFzQXR0cmlidXRlKFwiZGF0YS1ja2UtdGFibGVzZWxlY3Rpb24taWdub3JlZFwiKXx8bihiLFwiY3V0XCI9PT1hLm5hbWUpKX1cbmZ1bmN0aW9uIHgoYSl7dGhpcy5fcmVzZXQoKTthJiZ0aGlzLnNldFNlbGVjdGVkQ2VsbHMoYSl9ZnVuY3Rpb24gcihhLGIsZCl7YS5vbihcImJlZm9yZUNvbW1hbmRFeGVjXCIsZnVuY3Rpb24oZCl7LTEhPT1DS0VESVRPUi50b29scy5hcnJheS5pbmRleE9mKGIsZC5kYXRhLm5hbWUpJiYoZC5kYXRhLnNlbGVjdGVkQ2VsbHM9eihhLmdldFNlbGVjdGlvbigpKSl9KTthLm9uKFwiYWZ0ZXJDb21tYW5kRXhlY1wiLGZ1bmN0aW9uKGMpey0xIT09Q0tFRElUT1IudG9vbHMuYXJyYXkuaW5kZXhPZihiLGMuZGF0YS5uYW1lKSYmZChhLGMuZGF0YSl9LG51bGwsbnVsbCw5KX12YXIgcD17YWN0aXZlOiExfSx1LHoscSxBLHk7eC5wcm90b3R5cGU9e307eC5wcm90b3R5cGUuX3Jlc2V0PWZ1bmN0aW9uKCl7dGhpcy5jZWxscz17Zmlyc3Q6bnVsbCxsYXN0Om51bGwsYWxsOltdfTt0aGlzLnJvd3M9e2ZpcnN0Om51bGwsbGFzdDpudWxsfX07eC5wcm90b3R5cGUuc2V0U2VsZWN0ZWRDZWxscz1mdW5jdGlvbihhKXt0aGlzLl9yZXNldCgpO1xuYT1hLnNsaWNlKDApO3RoaXMuX2FycmF5U29ydEJ5RE9NT3JkZXIoYSk7dGhpcy5jZWxscy5hbGw9YTt0aGlzLmNlbGxzLmZpcnN0PWFbMF07dGhpcy5jZWxscy5sYXN0PWFbYS5sZW5ndGgtMV07dGhpcy5yb3dzLmZpcnN0PWFbMF0uZ2V0QXNjZW5kYW50KFwidHJcIik7dGhpcy5yb3dzLmxhc3Q9dGhpcy5jZWxscy5sYXN0LmdldEFzY2VuZGFudChcInRyXCIpfTt4LnByb3RvdHlwZS5nZXRUYWJsZU1hcD1mdW5jdGlvbigpe3ZhciBhPXEodGhpcy5jZWxscy5maXJzdCksYjthOntiPXRoaXMuY2VsbHMubGFzdDt2YXIgYz1iLmdldEFzY2VuZGFudChcInRhYmxlXCIpLGU9ZChiKSxjPUNLRURJVE9SLnRvb2xzLmJ1aWxkVGFibGVNYXAoYyksZjtmb3IoZj0wO2Y8Y1tlXS5sZW5ndGg7ZisrKWlmKChuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoY1tlXVtmXSkpLmVxdWFscyhiKSl7Yj1mO2JyZWFrIGF9Yj12b2lkIDB9cmV0dXJuIENLRURJVE9SLnRvb2xzLmJ1aWxkVGFibGVNYXAodGhpcy5fZ2V0VGFibGUoKSxcbmQodGhpcy5yb3dzLmZpcnN0KSxhLGQodGhpcy5yb3dzLmxhc3QpLGIpfTt4LnByb3RvdHlwZS5fZ2V0VGFibGU9ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yb3dzLmZpcnN0LmdldEFzY2VuZGFudChcInRhYmxlXCIpfTt4LnByb3RvdHlwZS5pbnNlcnRSb3c9ZnVuY3Rpb24oYSxiLGQpe2lmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlhPTE7ZWxzZSBpZigwPj1hKXJldHVybjtmb3IodmFyIGM9dGhpcy5jZWxscy5maXJzdC4kLmNlbGxJbmRleCxlPXRoaXMuY2VsbHMubGFzdC4kLmNlbGxJbmRleCxmPWQ/W106dGhpcy5jZWxscy5hbGwsZyxoPTA7aDxhO2grKylnPUEoZD90aGlzLmNlbGxzLmFsbDpmLGIpLGc9Q0tFRElUT1IudG9vbHMuYXJyYXkuZmlsdGVyKGcuZmluZChcInRkLCB0aFwiKS50b0FycmF5KCksZnVuY3Rpb24oYSl7cmV0dXJuIGQ/ITA6YS4kLmNlbGxJbmRleD49YyYmYS4kLmNlbGxJbmRleDw9ZX0pLGY9Yj9nLmNvbmNhdChmKTpmLmNvbmNhdChnKTt0aGlzLnNldFNlbGVjdGVkQ2VsbHMoZil9O1xueC5wcm90b3R5cGUuaW5zZXJ0Q29sdW1uPWZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7YT1kKGEpO3JldHVybiBhPj1mJiZhPD1nfWlmKFwidW5kZWZpbmVkXCI9PT10eXBlb2YgYSlhPTE7ZWxzZSBpZigwPj1hKXJldHVybjtmb3IodmFyIGM9dGhpcy5jZWxscyxlPWMuYWxsLGY9ZChjLmZpcnN0KSxnPWQoYy5sYXN0KSxjPTA7YzxhO2MrKyllPWUuY29uY2F0KENLRURJVE9SLnRvb2xzLmFycmF5LmZpbHRlcih5KGUpLGIpKTt0aGlzLnNldFNlbGVjdGVkQ2VsbHMoZSl9O3gucHJvdG90eXBlLmVtcHR5Q2VsbHM9ZnVuY3Rpb24oYSl7YT1hfHx0aGlzLmNlbGxzLmFsbDtmb3IodmFyIGI9MDtiPGEubGVuZ3RoO2IrKylhW2JdLnNldEh0bWwoXCJcIil9O3gucHJvdG90eXBlLl9hcnJheVNvcnRCeURPTU9yZGVyPWZ1bmN0aW9uKGEpe2Euc29ydChmdW5jdGlvbihhLGIpe3JldHVybiBhLmdldFBvc2l0aW9uKGIpJkNLRURJVE9SLlBPU0lUSU9OX1BSRUNFRElORz8tMToxfSl9O3ZhciB0PXtvblBhc3RlOmZ1bmN0aW9uKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGQ9XG5lLmNyZWF0ZVJhbmdlKCk7ZC5zZWxlY3ROb2RlQ29udGVudHMoYSk7ZC5zZWxlY3QoKX1mdW5jdGlvbiBkKGEpe3JldHVybiBNYXRoLm1heC5hcHBseShudWxsLENLRURJVE9SLnRvb2xzLmFycmF5Lm1hcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhLmxlbmd0aH0sMCkpfXZhciBlPWEuZWRpdG9yLGc9ZS5nZXRTZWxlY3Rpb24oKSxoPXooZyksaz1nLmlzSW5UYWJsZSghMCkmJnRoaXMuaXNCb3VuZGFyeVNlbGVjdGlvbihnKSxsPXRoaXMuZmluZFRhYmxlSW5QYXN0ZWRDb250ZW50KGUsYS5kYXRhLmRhdGFWYWx1ZSksbSxuOyhmdW5jdGlvbihhLGIsZCxjKXthPWEuZ2V0UmFuZ2VzKCk7dmFyIGU9YS5sZW5ndGgmJmFbMF0uX2dldFRhYmxlRWxlbWVudCh7dGFibGU6MX0pO2lmKCFiLmxlbmd0aHx8ZSYmZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNrZS10YWJsZXNlbGVjdGlvbi1pZ25vcmVkXCIpfHxjJiYhZClyZXR1cm4hMTtpZihiPSFjKShiPWFbMF0pPyhiPWIuY2xvbmUoKSxiLmVubGFyZ2UoQ0tFRElUT1IuRU5MQVJHRV9FTEVNRU5UKSxcbmI9KGI9Yi5nZXRFbmNsb3NlZE5vZGUoKSkmJmIuaXMmJmIuaXMoQ0tFRElUT1IuZHRkLiR0YWJsZUNvbnRlbnQpKTpiPXZvaWQgMCxiPSFiO3JldHVybiBiPyExOiEwfSkoZyxoLGwsaykmJlwiZHJvcFwiIT09YS5kYXRhLm1ldGhvZCYmKGg9aFswXS5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiKSxtPW5ldyB4KHooZyxoKSksZS5vbmNlKFwiYWZ0ZXJQYXN0ZVwiLGZ1bmN0aW9uKCl7dmFyIGE7aWYobil7YT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoblswXVswXSk7dmFyIGI9bltuLmxlbmd0aC0xXTthPWYoYSxuZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYltiLmxlbmd0aC0xXSkpfWVsc2UgYT1tLmNlbGxzLmFsbDtjKGUsYSl9KSxsPyhhLnN0b3AoKSxrPyhtLmluc2VydFJvdygxLDE9PT1rLCEwKSxnLnNlbGVjdEVsZW1lbnQobS5yb3dzLmZpcnN0KSk6KG0uZW1wdHlDZWxscygpLGMoZSxtLmNlbGxzLmFsbCkpLGE9bS5nZXRUYWJsZU1hcCgpLG49Q0tFRElUT1IudG9vbHMuYnVpbGRUYWJsZU1hcChsKSxcbm0uaW5zZXJ0Um93KG4ubGVuZ3RoLWEubGVuZ3RoKSxtLmluc2VydENvbHVtbihkKG4pLWQoYSkpLGE9bS5nZXRUYWJsZU1hcCgpLHRoaXMucGFzdGVUYWJsZShtLGEsbiksZS5maXJlKFwic2F2ZVNuYXBzaG90XCIpLHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmZpcmUoXCJhZnRlclBhc3RlXCIpfSwwKSk6KGIobS5jZWxscy5maXJzdCksZS5vbmNlKFwiYWZ0ZXJQYXN0ZVwiLGZ1bmN0aW9uKCl7ZS5maXJlKFwibG9ja1NuYXBzaG90XCIpO20uZW1wdHlDZWxscyhtLmNlbGxzLmFsbC5zbGljZSgxKSk7YyhlLG0uY2VsbHMuYWxsKTtlLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKX0pKSl9LGlzQm91bmRhcnlTZWxlY3Rpb246ZnVuY3Rpb24oYSl7YT1hLmdldFJhbmdlcygpWzBdO3ZhciBiPWEuZW5kQ29udGFpbmVyLmdldEFzY2VuZGFudChcInRyXCIsITApO2lmKGImJmEuY29sbGFwc2VkKXtpZihhLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoYixDS0VESVRPUi5TVEFSVCkpcmV0dXJuIDE7aWYoYS5jaGVja0JvdW5kYXJ5T2ZFbGVtZW50KGIsXG5DS0VESVRPUi5FTkQpKXJldHVybiAyfXJldHVybiAwfSxmaW5kVGFibGVJblBhc3RlZENvbnRlbnQ6ZnVuY3Rpb24oYSxiKXt2YXIgZD1hLmRhdGFQcm9jZXNzb3IsYz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJib2R5XCIpO2R8fChkPW5ldyBDS0VESVRPUi5odG1sRGF0YVByb2Nlc3NvcihhKSk7Yy5zZXRIdG1sKGQudG9IdG1sKGIpLHtmaXhGb3JCb2R5OiExfSk7cmV0dXJuIDE8Yy5nZXRDaGlsZENvdW50KCk/bnVsbDpjLmZpbmRPbmUoXCJ0YWJsZVwiKX0scGFzdGVUYWJsZTpmdW5jdGlvbihhLGIsZCl7dmFyIGMsZT1xKGEuY2VsbHMuZmlyc3QpLGY9YS5fZ2V0VGFibGUoKSxnPXt9LGgsayxsLG07Zm9yKGw9MDtsPGQubGVuZ3RoO2wrKylmb3IoaD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoZi4kLnJvd3NbYS5yb3dzLmZpcnN0LiQucm93SW5kZXgrbF0pLG09MDttPGRbbF0ubGVuZ3RoO20rKylpZihrPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChkW2xdW21dKSxjPWJbbF0mJlxuYltsXVttXT9uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoYltsXVttXSk6bnVsbCxrJiYhay5nZXRDdXN0b21EYXRhKFwicHJvY2Vzc2VkXCIpKXtpZihjJiZjLmdldFBhcmVudCgpKWsucmVwbGFjZShjKTtlbHNlIGlmKDA9PT1tfHxkW2xdW20tMV0pKGM9MCE9PW0/bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KGRbbF1bbS0xXSk6bnVsbCkmJmguZXF1YWxzKGMuZ2V0UGFyZW50KCkpP2suaW5zZXJ0QWZ0ZXIoYyk6MDxlP2guJC5jZWxsc1tlXT9rLmluc2VydEFmdGVyKG5ldyBDS0VESVRPUi5kb20uZWxlbWVudChoLiQuY2VsbHNbZV0pKTpoLmFwcGVuZChrKTpoLmFwcGVuZChrLCEwKTtDS0VESVRPUi5kb20uZWxlbWVudC5zZXRNYXJrZXIoZyxrLFwicHJvY2Vzc2VkXCIsITApfWVsc2Ugay5nZXRDdXN0b21EYXRhKFwicHJvY2Vzc2VkXCIpJiZjJiZjLnJlbW92ZSgpO0NLRURJVE9SLmRvbS5lbGVtZW50LmNsZWFyQWxsTWFya2VycyhnKX19O0NLRURJVE9SLnBsdWdpbnMudGFibGVzZWxlY3Rpb249XG57Z2V0Q2VsbHNCZXR3ZWVuOmYsa2V5Ym9hcmRJbnRlZ3JhdGlvbjpmdW5jdGlvbihhKXtmdW5jdGlvbiBiKGEpe3ZhciBkPWEuZ2V0RW5jbG9zZWROb2RlKCk7ZCYmXCJmdW5jdGlvblwiPT09dHlwZW9mIGQuaXMmJmQuaXMoe3RkOjEsdGg6MX0pP2Quc2V0VGV4dChcIlwiKTphLmRlbGV0ZUNvbnRlbnRzKCk7Q0tFRElUT1IudG9vbHMuYXJyYXkuZm9yRWFjaChhLl9maW5kKFwidGRcIiksZnVuY3Rpb24oYSl7YS5hcHBlbmRCb2d1cygpfSl9dmFyIGQ9YS5lZGl0YWJsZSgpO2QuYXR0YWNoTGlzdGVuZXIoZCxcImtleWRvd25cIixmdW5jdGlvbihhKXtmdW5jdGlvbiBkKGIsYyl7aWYoIWMubGVuZ3RoKXJldHVybiBudWxsO3ZhciBmPWEuY3JlYXRlUmFuZ2UoKSxnPUNLRURJVE9SLmRvbS5yYW5nZS5tZXJnZVJhbmdlcyhjKTtDS0VESVRPUi50b29scy5hcnJheS5mb3JFYWNoKGcsZnVuY3Rpb24oYSl7YS5lbmxhcmdlKENLRURJVE9SLkVOTEFSR0VfRUxFTUVOVCl9KTt2YXIgaD1nWzBdLmdldEJvdW5kYXJ5Tm9kZXMoKSxcbms9aC5zdGFydE5vZGUsaD1oLmVuZE5vZGU7aWYoayYmay5pcyYmay5pcyhlKSl7Zm9yKHZhciBsPWsuZ2V0QXNjZW5kYW50KFwidGFibGVcIiwhMCksbT1rLmdldFByZXZpb3VzU291cmNlTm9kZSghMSxDS0VESVRPUi5OT0RFX0VMRU1FTlQsbCksbj0hMSxwPWZ1bmN0aW9uKGEpe3JldHVybiFrLmNvbnRhaW5zKGEpJiZhLmlzJiZhLmlzKFwidGRcIixcInRoXCIpfTttJiYhcChtKTspbT1tLmdldFByZXZpb3VzU291cmNlTm9kZSghMSxDS0VESVRPUi5OT0RFX0VMRU1FTlQsbCk7IW0mJmgmJmguaXMmJiFoLmlzKFwidGFibGVcIikmJmguZ2V0TmV4dCgpJiYobT1oLmdldE5leHQoKS5maW5kT25lKFwidGQsIHRoXCIpLG49ITApO2lmKG0pZltcIm1vdmVUb0VsZW1lbnRFZGl0XCIrKG4/XCJTdGFydFwiOlwiRW5kXCIpXShtKTtlbHNlIGYuc2V0U3RhcnRCZWZvcmUoay5nZXRBc2NlbmRhbnQoXCJ0YWJsZVwiLCEwKSksZi5jb2xsYXBzZSghMCk7Z1swXS5kZWxldGVDb250ZW50cygpO3JldHVybltmXX1pZihrKXJldHVybiBmLm1vdmVUb0VsZW1lbnRFZGl0YWJsZVBvc2l0aW9uKGspLFxuW2ZdfXZhciBjPXszNzoxLDM4OjEsMzk6MSw0MDoxLDg6MSw0NjoxLDEzOjF9LGU9Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHt0YWJsZToxfSxDS0VESVRPUi5kdGQuJHRhYmxlQ29udGVudCk7ZGVsZXRlIGUudGQ7ZGVsZXRlIGUudGg7cmV0dXJuIGZ1bmN0aW9uKGUpe3ZhciBmPWUuZGF0YS5nZXRLZXkoKSxnPWUuZGF0YS5nZXRLZXlzdHJva2UoKSxoLGs9Mzc9PT1mfHwzOD09ZixsLG0sbjtpZihjW2ZdJiYhYS5yZWFkT25seSYmKGg9YS5nZXRTZWxlY3Rpb24oKSkmJmguaXNJblRhYmxlKCkmJmguaXNGYWtlKXtsPWguZ2V0UmFuZ2VzKCk7bT1sWzBdLl9nZXRUYWJsZUVsZW1lbnQoKTtuPWxbbC5sZW5ndGgtMV0uX2dldFRhYmxlRWxlbWVudCgpO2lmKDEzIT09Znx8YS5wbHVnaW5zLmVudGVya2V5KWUuZGF0YS5wcmV2ZW50RGVmYXVsdCgpLGUuY2FuY2VsKCk7aWYoMzY8ZiYmNDE+ZilsWzBdLm1vdmVUb0VsZW1lbnRFZGl0YWJsZVBvc2l0aW9uKGs/bTpuLCFrKSxoLnNlbGVjdFJhbmdlcyhbbFswXV0pO1xuZWxzZSBpZigxMyE9PWZ8fDEzPT09Z3x8Zz09PUNLRURJVE9SLlNISUZUKzEzKXtmb3IoZT0wO2U8bC5sZW5ndGg7ZSsrKWIobFtlXSk7KGU9ZChtLGwpKT9sPWU6bFswXS5tb3ZlVG9FbGVtZW50RWRpdGFibGVQb3NpdGlvbihtKTtoLnNlbGVjdFJhbmdlcyhsKTsxMz09PWYmJmEucGx1Z2lucy5lbnRlcmtleT8oYS5maXJlKFwibG9ja1NuYXBzaG90XCIpLDEzPT09Zz9hLmV4ZWNDb21tYW5kKFwiZW50ZXJcIik6YS5leGVjQ29tbWFuZChcInNoaWZ0RW50ZXJcIiksYS5maXJlKFwidW5sb2NrU25hcHNob3RcIiksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpKToxMyE9PWYmJmEuZmlyZShcInNhdmVTbmFwc2hvdFwiKX19fX0oYSksbnVsbCxudWxsLC0xKTtkLmF0dGFjaExpc3RlbmVyKGQsXCJrZXlwcmVzc1wiLGZ1bmN0aW9uKGQpe3ZhciBjPWEuZ2V0U2VsZWN0aW9uKCksZT1kLmRhdGEuJC5jaGFyQ29kZXx8MTM9PT1kLmRhdGEuZ2V0S2V5KCksZjtpZighYS5yZWFkT25seSYmYyYmYy5pc0luVGFibGUoKSYmXG5jLmlzRmFrZSYmZSYmIShkLmRhdGEuZ2V0S2V5c3Ryb2tlKCkmQ0tFRElUT1IuQ1RSTCkpe2Q9Yy5nZXRSYW5nZXMoKTtlPWRbMF0uZ2V0RW5jbG9zZWROb2RlKCkuZ2V0QXNjZW5kYW50KHt0ZDoxLHRoOjF9LCEwKTtmb3IoZj0wO2Y8ZC5sZW5ndGg7ZisrKWIoZFtmXSk7ZSYmKGRbMF0ubW92ZVRvRWxlbWVudEVkaXRhYmxlUG9zaXRpb24oZSksYy5zZWxlY3RSYW5nZXMoW2RbMF1dKSl9fSxudWxsLG51bGwsLTEpO2QuYXR0YWNoTGlzdGVuZXIoZCxcImtleXVwXCIsZnVuY3Rpb24oYSl7cmV0dXJuIGZ1bmN0aW9uKGIpe2I9Yi5kYXRhLmdldEtleSgpO3ZhciBkPWEuZ2V0U2VsZWN0aW9uKCk7OT09PWImJmQuaXNJblRhYmxlKCkmJmsoYSl9fShhKSxudWxsLG51bGwsLTEpfX07Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ0YWJsZXNlbGVjdGlvblwiLHtyZXF1aXJlczpcImNsaXBib2FyZCx0YWJsZXRvb2xzXCIsaXNTdXBwb3J0ZWRFbnZpcm9ubWVudDpmdW5jdGlvbigpe3JldHVybiEoQ0tFRElUT1IuZW52LmllJiZcbjExPkNLRURJVE9SLmVudi52ZXJzaW9uKX0sb25Mb2FkOmZ1bmN0aW9uKCl7dT1DS0VESVRPUi5wbHVnaW5zLnRhYmxldG9vbHM7ej11LmdldFNlbGVjdGVkQ2VsbHM7cT11LmdldENlbGxDb2xJbmRleDtBPXUuaW5zZXJ0Um93O3k9dS5pbnNlcnRDb2x1bW47Q0tFRElUT1IuZG9jdW1lbnQuYXBwZW5kU3R5bGVTaGVldCh0aGlzLnBhdGgrXCJzdHlsZXMvdGFibGVzZWxlY3Rpb24uY3NzXCIpfSxpbml0OmZ1bmN0aW9uKGEpe3RoaXMuaXNTdXBwb3J0ZWRFbnZpcm9ubWVudCgpJiYoYS5hZGRDb250ZW50c0NzcyYmYS5hZGRDb250ZW50c0Nzcyh0aGlzLnBhdGgrXCJzdHlsZXMvdGFibGVzZWxlY3Rpb24uY3NzXCIpLGEub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXt2YXIgYj1hLmVkaXRhYmxlKCksZD1iLmlzSW5saW5lKCk/YjphLmRvY3VtZW50LGM9e2VkaXRvcjphfTtiLmF0dGFjaExpc3RlbmVyKGQsXCJtb3VzZWRvd25cIixoLG51bGwsYyk7Yi5hdHRhY2hMaXN0ZW5lcihkLFwibW91c2Vtb3ZlXCIsXG5oLG51bGwsYyk7Yi5hdHRhY2hMaXN0ZW5lcihkLFwibW91c2V1cFwiLGgsbnVsbCxjKTtiLmF0dGFjaExpc3RlbmVyKGIsXCJkcmFnc3RhcnRcIixnKTtiLmF0dGFjaExpc3RlbmVyKGEsXCJzZWxlY3Rpb25DaGVja1wiLG0pO0NLRURJVE9SLnBsdWdpbnMudGFibGVzZWxlY3Rpb24ua2V5Ym9hcmRJbnRlZ3JhdGlvbihhKTtDS0VESVRPUi5wbHVnaW5zLmNsaXBib2FyZCYmIUNLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzQ3VzdG9tQ29weUN1dFN1cHBvcnRlZCYmKGIuYXR0YWNoTGlzdGVuZXIoYixcImN1dFwiLHcpLGIuYXR0YWNoTGlzdGVuZXIoYixcImNvcHlcIix3KSl9KSxhLm9uKFwicGFzdGVcIix0Lm9uUGFzdGUsdCkscihhLFwicm93SW5zZXJ0QmVmb3JlIHJvd0luc2VydEFmdGVyIGNvbHVtbkluc2VydEJlZm9yZSBjb2x1bW5JbnNlcnRBZnRlciBjZWxsSW5zZXJ0QmVmb3JlIGNlbGxJbnNlcnRBZnRlclwiLnNwbGl0KFwiIFwiKSxmdW5jdGlvbihhLGIpe2MoYSxiLnNlbGVjdGVkQ2VsbHMpfSksXG5yKGEsW1wiY2VsbE1lcmdlXCIsXCJjZWxsTWVyZ2VSaWdodFwiLFwiY2VsbE1lcmdlRG93blwiXSxmdW5jdGlvbihhLGIpe2MoYSxbYi5jb21tYW5kRGF0YS5jZWxsXSl9KSxyKGEsW1wiY2VsbERlbGV0ZVwiXSxmdW5jdGlvbihhKXtiKGEsITApfSkpfX0pfSgpLFwidXNlIHN0cmljdFwiLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIpe3JldHVybiBDS0VESVRPUi50b29scy5hcnJheS5yZWR1Y2UoYixmdW5jdGlvbihhLGIpe3JldHVybiBiKGEpfSxhKX12YXIgZj1bQ0tFRElUT1IuQ1RSTCs5MCxDS0VESVRPUi5DVFJMKzg5LENLRURJVE9SLkNUUkwrQ0tFRElUT1IuU0hJRlQrOTBdLGU9ezg6MSw0NjoxfTtDS0VESVRPUi5wbHVnaW5zLmFkZChcInVuZG9cIix7aW5pdDpmdW5jdGlvbihhKXtmdW5jdGlvbiBjKGEpe2suZW5hYmxlZCYmITEhPT1hLmRhdGEuY29tbWFuZC5jYW5VbmRvJiZrLnNhdmUoKX1mdW5jdGlvbiBlKCl7ay5lbmFibGVkPWEucmVhZE9ubHk/ITE6XCJ3eXNpd3lnXCI9PWEubW9kZTtrLm9uQ2hhbmdlKCl9XG52YXIgaz1hLnVuZG9NYW5hZ2VyPW5ldyBiKGEpLG09ay5lZGl0aW5nSGFuZGxlcj1uZXcgbChrKSx4PWEuYWRkQ29tbWFuZChcInVuZG9cIix7ZXhlYzpmdW5jdGlvbigpe2sudW5kbygpJiYoYS5zZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLmZpcmUoXCJhZnRlclVuZG9cIikpfSxzdGFydERpc2FibGVkOiEwLGNhblVuZG86ITF9KSxyPWEuYWRkQ29tbWFuZChcInJlZG9cIix7ZXhlYzpmdW5jdGlvbigpe2sucmVkbygpJiYoYS5zZWxlY3Rpb25DaGFuZ2UoKSx0aGlzLmZpcmUoXCJhZnRlclJlZG9cIikpfSxzdGFydERpc2FibGVkOiEwLGNhblVuZG86ITF9KTthLnNldEtleXN0cm9rZShbW2ZbMF0sXCJ1bmRvXCJdLFtmWzFdLFwicmVkb1wiXSxbZlsyXSxcInJlZG9cIl1dKTtrLm9uQ2hhbmdlPWZ1bmN0aW9uKCl7eC5zZXRTdGF0ZShrLnVuZG9hYmxlKCk/Q0tFRElUT1IuVFJJU1RBVEVfT0ZGOkNLRURJVE9SLlRSSVNUQVRFX0RJU0FCTEVEKTtyLnNldFN0YXRlKGsucmVkb2FibGUoKT9DS0VESVRPUi5UUklTVEFURV9PRkY6XG5DS0VESVRPUi5UUklTVEFURV9ESVNBQkxFRCl9O2Eub24oXCJiZWZvcmVDb21tYW5kRXhlY1wiLGMpO2Eub24oXCJhZnRlckNvbW1hbmRFeGVjXCIsYyk7YS5vbihcInNhdmVTbmFwc2hvdFwiLGZ1bmN0aW9uKGEpe2suc2F2ZShhLmRhdGEmJmEuZGF0YS5jb250ZW50T25seSl9KTthLm9uKFwiY29udGVudERvbVwiLG0uYXR0YWNoTGlzdGVuZXJzLG0pO2Eub24oXCJpbnN0YW5jZVJlYWR5XCIsZnVuY3Rpb24oKXthLmZpcmUoXCJzYXZlU25hcHNob3RcIil9KTthLm9uKFwiYmVmb3JlTW9kZVVubG9hZFwiLGZ1bmN0aW9uKCl7XCJ3eXNpd3lnXCI9PWEubW9kZSYmay5zYXZlKCEwKX0pO2Eub24oXCJtb2RlXCIsZSk7YS5vbihcInJlYWRPbmx5XCIsZSk7YS51aS5hZGRCdXR0b24mJihhLnVpLmFkZEJ1dHRvbihcIlVuZG9cIix7bGFiZWw6YS5sYW5nLnVuZG8udW5kbyxjb21tYW5kOlwidW5kb1wiLHRvb2xiYXI6XCJ1bmRvLDEwXCJ9KSxhLnVpLmFkZEJ1dHRvbihcIlJlZG9cIix7bGFiZWw6YS5sYW5nLnVuZG8ucmVkbyxjb21tYW5kOlwicmVkb1wiLFxudG9vbGJhcjpcInVuZG8sMjBcIn0pKTthLnJlc2V0VW5kbz1mdW5jdGlvbigpe2sucmVzZXQoKTthLmZpcmUoXCJzYXZlU25hcHNob3RcIil9O2Eub24oXCJ1cGRhdGVTbmFwc2hvdFwiLGZ1bmN0aW9uKCl7ay5jdXJyZW50SW1hZ2UmJmsudXBkYXRlKCl9KTthLm9uKFwibG9ja1NuYXBzaG90XCIsZnVuY3Rpb24oYSl7YT1hLmRhdGE7ay5sb2NrKGEmJmEuZG9udFVwZGF0ZSxhJiZhLmZvcmNlVXBkYXRlKX0pO2Eub24oXCJ1bmxvY2tTbmFwc2hvdFwiLGsudW5sb2NrLGspfX0pO0NLRURJVE9SLnBsdWdpbnMudW5kbz17fTt2YXIgYj1DS0VESVRPUi5wbHVnaW5zLnVuZG8uVW5kb01hbmFnZXI9ZnVuY3Rpb24oYSl7dGhpcy5zdHJva2VzUmVjb3JkZWQ9WzAsMF07dGhpcy5sb2NrZWQ9bnVsbDt0aGlzLnByZXZpb3VzS2V5R3JvdXA9LTE7dGhpcy5saW1pdD1hLmNvbmZpZy51bmRvU3RhY2tTaXplfHwyMDt0aGlzLnN0cm9rZXNMaW1pdD0yNTt0aGlzLl9maWx0ZXJSdWxlcz1bXTt0aGlzLmVkaXRvcj1hO1xudGhpcy5yZXNldCgpO0NLRURJVE9SLmVudi5pZSYmdGhpcy5hZGRGaWx0ZXJSdWxlKGZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UoL1xccytkYXRhLWNrZS1leHBhbmRvPVwiLio/XCIvZyxcIlwiKX0pfTtiLnByb3RvdHlwZT17dHlwZTpmdW5jdGlvbihhLGMpe3ZhciBlPWIuZ2V0S2V5R3JvdXAoYSksZj10aGlzLnN0cm9rZXNSZWNvcmRlZFtlXSsxO2M9Y3x8Zj49dGhpcy5zdHJva2VzTGltaXQ7dGhpcy50eXBpbmd8fCh0aGlzLmhhc1VuZG89dGhpcy50eXBpbmc9ITAsdGhpcy5oYXNSZWRvPSExLHRoaXMub25DaGFuZ2UoKSk7Yz8oZj0wLHRoaXMuZWRpdG9yLmZpcmUoXCJzYXZlU25hcHNob3RcIikpOnRoaXMuZWRpdG9yLmZpcmUoXCJjaGFuZ2VcIik7dGhpcy5zdHJva2VzUmVjb3JkZWRbZV09Zjt0aGlzLnByZXZpb3VzS2V5R3JvdXA9ZX0sa2V5R3JvdXBDaGFuZ2VkOmZ1bmN0aW9uKGEpe3JldHVybiBiLmdldEtleUdyb3VwKGEpIT10aGlzLnByZXZpb3VzS2V5R3JvdXB9LHJlc2V0OmZ1bmN0aW9uKCl7dGhpcy5zbmFwc2hvdHM9XG5bXTt0aGlzLmluZGV4PS0xO3RoaXMuY3VycmVudEltYWdlPW51bGw7dGhpcy5oYXNSZWRvPXRoaXMuaGFzVW5kbz0hMTt0aGlzLmxvY2tlZD1udWxsO3RoaXMucmVzZXRUeXBlKCl9LHJlc2V0VHlwZTpmdW5jdGlvbigpe3RoaXMuc3Ryb2tlc1JlY29yZGVkPVswLDBdO3RoaXMudHlwaW5nPSExO3RoaXMucHJldmlvdXNLZXlHcm91cD0tMX0scmVmcmVzaFN0YXRlOmZ1bmN0aW9uKCl7dGhpcy5oYXNVbmRvPSEhdGhpcy5nZXROZXh0SW1hZ2UoITApO3RoaXMuaGFzUmVkbz0hIXRoaXMuZ2V0TmV4dEltYWdlKCExKTt0aGlzLnJlc2V0VHlwZSgpO3RoaXMub25DaGFuZ2UoKX0sc2F2ZTpmdW5jdGlvbihhLGIsZSl7dmFyIGY9dGhpcy5lZGl0b3I7aWYodGhpcy5sb2NrZWR8fFwicmVhZHlcIiE9Zi5zdGF0dXN8fFwid3lzaXd5Z1wiIT1mLm1vZGUpcmV0dXJuITE7dmFyIGs9Zi5lZGl0YWJsZSgpO2lmKCFrfHxcInJlYWR5XCIhPWsuc3RhdHVzKXJldHVybiExO2s9dGhpcy5zbmFwc2hvdHM7Ynx8KGI9XG5uZXcgYyhmKSk7aWYoITE9PT1iLmNvbnRlbnRzKXJldHVybiExO2lmKHRoaXMuY3VycmVudEltYWdlKWlmKGIuZXF1YWxzQ29udGVudCh0aGlzLmN1cnJlbnRJbWFnZSkpe2lmKGF8fGIuZXF1YWxzU2VsZWN0aW9uKHRoaXMuY3VycmVudEltYWdlKSlyZXR1cm4hMX1lbHNlITEhPT1lJiZmLmZpcmUoXCJjaGFuZ2VcIik7ay5zcGxpY2UodGhpcy5pbmRleCsxLGsubGVuZ3RoLXRoaXMuaW5kZXgtMSk7ay5sZW5ndGg9PXRoaXMubGltaXQmJmsuc2hpZnQoKTt0aGlzLmluZGV4PWsucHVzaChiKS0xO3RoaXMuY3VycmVudEltYWdlPWI7ITEhPT1lJiZ0aGlzLnJlZnJlc2hTdGF0ZSgpO3JldHVybiEwfSxyZXN0b3JlSW1hZ2U6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5lZGl0b3IsYzthLmJvb2ttYXJrcyYmKGIuZm9jdXMoKSxjPWIuZ2V0U2VsZWN0aW9uKCkpO3RoaXMubG9ja2VkPXtsZXZlbDo5OTl9O3RoaXMuZWRpdG9yLmxvYWRTbmFwc2hvdChhLmNvbnRlbnRzKTthLmJvb2ttYXJrcz9jLnNlbGVjdEJvb2ttYXJrcyhhLmJvb2ttYXJrcyk6XG5DS0VESVRPUi5lbnYuaWUmJihjPXRoaXMuZWRpdG9yLmRvY3VtZW50LmdldEJvZHkoKS4kLmNyZWF0ZVRleHRSYW5nZSgpLGMuY29sbGFwc2UoITApLGMuc2VsZWN0KCkpO3RoaXMubG9ja2VkPW51bGw7dGhpcy5pbmRleD1hLmluZGV4O3RoaXMuY3VycmVudEltYWdlPXRoaXMuc25hcHNob3RzW3RoaXMuaW5kZXhdO3RoaXMudXBkYXRlKCk7dGhpcy5yZWZyZXNoU3RhdGUoKTtiLmZpcmUoXCJjaGFuZ2VcIil9LGdldE5leHRJbWFnZTpmdW5jdGlvbihhKXt2YXIgYj10aGlzLnNuYXBzaG90cyxjPXRoaXMuY3VycmVudEltYWdlLGU7aWYoYylpZihhKWZvcihlPXRoaXMuaW5kZXgtMTswPD1lO2UtLSl7aWYoYT1iW2VdLCFjLmVxdWFsc0NvbnRlbnQoYSkpcmV0dXJuIGEuaW5kZXg9ZSxhfWVsc2UgZm9yKGU9dGhpcy5pbmRleCsxO2U8Yi5sZW5ndGg7ZSsrKWlmKGE9YltlXSwhYy5lcXVhbHNDb250ZW50KGEpKXJldHVybiBhLmluZGV4PWUsYTtyZXR1cm4gbnVsbH0scmVkb2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkJiZcbnRoaXMuaGFzUmVkb30sdW5kb2FibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbmFibGVkJiZ0aGlzLmhhc1VuZG99LHVuZG86ZnVuY3Rpb24oKXtpZih0aGlzLnVuZG9hYmxlKCkpe3RoaXMuc2F2ZSghMCk7dmFyIGE9dGhpcy5nZXROZXh0SW1hZ2UoITApO2lmKGEpcmV0dXJuIHRoaXMucmVzdG9yZUltYWdlKGEpLCEwfXJldHVybiExfSxyZWRvOmZ1bmN0aW9uKCl7aWYodGhpcy5yZWRvYWJsZSgpJiYodGhpcy5zYXZlKCEwKSx0aGlzLnJlZG9hYmxlKCkpKXt2YXIgYT10aGlzLmdldE5leHRJbWFnZSghMSk7aWYoYSlyZXR1cm4gdGhpcy5yZXN0b3JlSW1hZ2UoYSksITB9cmV0dXJuITF9LHVwZGF0ZTpmdW5jdGlvbihhKXtpZighdGhpcy5sb2NrZWQpe2F8fChhPW5ldyBjKHRoaXMuZWRpdG9yKSk7Zm9yKHZhciBiPXRoaXMuaW5kZXgsZT10aGlzLnNuYXBzaG90czswPGImJnRoaXMuY3VycmVudEltYWdlLmVxdWFsc0NvbnRlbnQoZVtiLTFdKTspLS1iO2Uuc3BsaWNlKGIsdGhpcy5pbmRleC1cbmIrMSxhKTt0aGlzLmluZGV4PWI7dGhpcy5jdXJyZW50SW1hZ2U9YX19LHVwZGF0ZVNlbGVjdGlvbjpmdW5jdGlvbihhKXtpZighdGhpcy5zbmFwc2hvdHMubGVuZ3RoKXJldHVybiExO3ZhciBiPXRoaXMuc25hcHNob3RzLGM9YltiLmxlbmd0aC0xXTtyZXR1cm4gYy5lcXVhbHNDb250ZW50KGEpJiYhYy5lcXVhbHNTZWxlY3Rpb24oYSk/KHRoaXMuY3VycmVudEltYWdlPWJbYi5sZW5ndGgtMV09YSwhMCk6ITF9LGxvY2s6ZnVuY3Rpb24oYSxiKXtpZih0aGlzLmxvY2tlZCl0aGlzLmxvY2tlZC5sZXZlbCsrO2Vsc2UgaWYoYSl0aGlzLmxvY2tlZD17bGV2ZWw6MX07ZWxzZXt2YXIgZT1udWxsO2lmKGIpZT0hMDtlbHNle3ZhciBmPW5ldyBjKHRoaXMuZWRpdG9yLCEwKTt0aGlzLmN1cnJlbnRJbWFnZSYmdGhpcy5jdXJyZW50SW1hZ2UuZXF1YWxzQ29udGVudChmKSYmKGU9Zil9dGhpcy5sb2NrZWQ9e3VwZGF0ZTplLGxldmVsOjF9fX0sdW5sb2NrOmZ1bmN0aW9uKCl7aWYodGhpcy5sb2NrZWQmJlxuIS0tdGhpcy5sb2NrZWQubGV2ZWwpe3ZhciBhPXRoaXMubG9ja2VkLnVwZGF0ZTt0aGlzLmxvY2tlZD1udWxsO2lmKCEwPT09YSl0aGlzLnVwZGF0ZSgpO2Vsc2UgaWYoYSl7dmFyIGI9bmV3IGModGhpcy5lZGl0b3IsITApO2EuZXF1YWxzQ29udGVudChiKXx8dGhpcy51cGRhdGUoKX19fSxhZGRGaWx0ZXJSdWxlOmZ1bmN0aW9uKGEpe3RoaXMuX2ZpbHRlclJ1bGVzLnB1c2goYSl9fTtiLm5hdmlnYXRpb25LZXlDb2Rlcz17Mzc6MSwzODoxLDM5OjEsNDA6MSwzNjoxLDM1OjEsMzM6MSwzNDoxfTtiLmtleUdyb3Vwcz17UFJJTlRBQkxFOjAsRlVOQ1RJT05BTDoxfTtiLmlzTmF2aWdhdGlvbktleT1mdW5jdGlvbihhKXtyZXR1cm4hIWIubmF2aWdhdGlvbktleUNvZGVzW2FdfTtiLmdldEtleUdyb3VwPWZ1bmN0aW9uKGEpe3ZhciBjPWIua2V5R3JvdXBzO3JldHVybiBlW2FdP2MuRlVOQ1RJT05BTDpjLlBSSU5UQUJMRX07Yi5nZXRPcHBvc2l0ZUtleUdyb3VwPWZ1bmN0aW9uKGEpe3ZhciBjPVxuYi5rZXlHcm91cHM7cmV0dXJuIGE9PWMuRlVOQ1RJT05BTD9jLlBSSU5UQUJMRTpjLkZVTkNUSU9OQUx9O2IuaWVGdW5jdGlvbmFsS2V5c0J1Zz1mdW5jdGlvbihhKXtyZXR1cm4gQ0tFRElUT1IuZW52LmllJiZiLmdldEtleUdyb3VwKGEpPT1iLmtleUdyb3Vwcy5GVU5DVElPTkFMfTt2YXIgYz1DS0VESVRPUi5wbHVnaW5zLnVuZG8uSW1hZ2U9ZnVuY3Rpb24oYixjKXt0aGlzLmVkaXRvcj1iO2IuZmlyZShcImJlZm9yZVVuZG9JbWFnZVwiKTt2YXIgZT1iLmdldFNuYXBzaG90KCk7ZSYmKHRoaXMuY29udGVudHM9YShlLGIudW5kb01hbmFnZXIuX2ZpbHRlclJ1bGVzKSk7Y3x8KHRoaXMuYm9va21hcmtzPShlPWUmJmIuZ2V0U2VsZWN0aW9uKCkpJiZlLmNyZWF0ZUJvb2ttYXJrczIoITApKTtiLmZpcmUoXCJhZnRlclVuZG9JbWFnZVwiKX0saz0vXFxiKD86aHJlZnxzcmN8bmFtZSk9XCJbXlwiXSo/XCIvZ2k7Yy5wcm90b3R5cGU9e2VxdWFsc0NvbnRlbnQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy5jb250ZW50cztcbmE9YS5jb250ZW50cztDS0VESVRPUi5lbnYuaWUmJihDS0VESVRPUi5lbnYuaWU3Q29tcGF0fHxDS0VESVRPUi5lbnYucXVpcmtzKSYmKGI9Yi5yZXBsYWNlKGssXCJcIiksYT1hLnJlcGxhY2UoayxcIlwiKSk7cmV0dXJuIGIhPWE/ITE6ITB9LGVxdWFsc1NlbGVjdGlvbjpmdW5jdGlvbihhKXt2YXIgYj10aGlzLmJvb2ttYXJrczthPWEuYm9va21hcmtzO2lmKGJ8fGEpe2lmKCFifHwhYXx8Yi5sZW5ndGghPWEubGVuZ3RoKXJldHVybiExO2Zvcih2YXIgYz0wO2M8Yi5sZW5ndGg7YysrKXt2YXIgZT1iW2NdLGY9YVtjXTtpZihlLnN0YXJ0T2Zmc2V0IT1mLnN0YXJ0T2Zmc2V0fHxlLmVuZE9mZnNldCE9Zi5lbmRPZmZzZXR8fCFDS0VESVRPUi50b29scy5hcnJheUNvbXBhcmUoZS5zdGFydCxmLnN0YXJ0KXx8IUNLRURJVE9SLnRvb2xzLmFycmF5Q29tcGFyZShlLmVuZCxmLmVuZCkpcmV0dXJuITF9fXJldHVybiEwfX07dmFyIGw9Q0tFRElUT1IucGx1Z2lucy51bmRvLk5hdGl2ZUVkaXRpbmdIYW5kbGVyPVxuZnVuY3Rpb24oYSl7dGhpcy51bmRvTWFuYWdlcj1hO3RoaXMuaWdub3JlSW5wdXRFdmVudD0hMTt0aGlzLmtleUV2ZW50c1N0YWNrPW5ldyBtO3RoaXMubGFzdEtleWRvd25JbWFnZT1udWxsfTtsLnByb3RvdHlwZT17b25LZXlkb3duOmZ1bmN0aW9uKGEpe3ZhciBlPWEuZGF0YS5nZXRLZXkoKTtpZigyMjkhPT1lKWlmKC0xPENLRURJVE9SLnRvb2xzLmluZGV4T2YoZixhLmRhdGEuZ2V0S2V5c3Ryb2tlKCkpKWEuZGF0YS5wcmV2ZW50RGVmYXVsdCgpO2Vsc2UgaWYodGhpcy5rZXlFdmVudHNTdGFjay5jbGVhblVwKGEpLGE9dGhpcy51bmRvTWFuYWdlcix0aGlzLmtleUV2ZW50c1N0YWNrLmdldExhc3QoZSl8fHRoaXMua2V5RXZlbnRzU3RhY2sucHVzaChlKSx0aGlzLmxhc3RLZXlkb3duSW1hZ2U9bmV3IGMoYS5lZGl0b3IpLGIuaXNOYXZpZ2F0aW9uS2V5KGUpfHx0aGlzLnVuZG9NYW5hZ2VyLmtleUdyb3VwQ2hhbmdlZChlKSlpZihhLnN0cm9rZXNSZWNvcmRlZFswXXx8YS5zdHJva2VzUmVjb3JkZWRbMV0pYS5zYXZlKCExLFxudGhpcy5sYXN0S2V5ZG93bkltYWdlLCExKSxhLnJlc2V0VHlwZSgpfSxvbklucHV0OmZ1bmN0aW9uKCl7aWYodGhpcy5pZ25vcmVJbnB1dEV2ZW50KXRoaXMuaWdub3JlSW5wdXRFdmVudD0hMTtlbHNle3ZhciBhPXRoaXMua2V5RXZlbnRzU3RhY2suZ2V0TGFzdCgpO2F8fChhPXRoaXMua2V5RXZlbnRzU3RhY2sucHVzaCgwKSk7dGhpcy5rZXlFdmVudHNTdGFjay5pbmNyZW1lbnQoYS5rZXlDb2RlKTt0aGlzLmtleUV2ZW50c1N0YWNrLmdldFRvdGFsSW5wdXRzKCk+PXRoaXMudW5kb01hbmFnZXIuc3Ryb2tlc0xpbWl0JiYodGhpcy51bmRvTWFuYWdlci50eXBlKGEua2V5Q29kZSwhMCksdGhpcy5rZXlFdmVudHNTdGFjay5yZXNldElucHV0cygpKX19LG9uS2V5dXA6ZnVuY3Rpb24oYSl7dmFyIGU9dGhpcy51bmRvTWFuYWdlcjthPWEuZGF0YS5nZXRLZXkoKTt2YXIgZj10aGlzLmtleUV2ZW50c1N0YWNrLmdldFRvdGFsSW5wdXRzKCk7dGhpcy5rZXlFdmVudHNTdGFjay5yZW1vdmUoYSk7XG5pZighKGIuaWVGdW5jdGlvbmFsS2V5c0J1ZyhhKSYmdGhpcy5sYXN0S2V5ZG93bkltYWdlJiZ0aGlzLmxhc3RLZXlkb3duSW1hZ2UuZXF1YWxzQ29udGVudChuZXcgYyhlLmVkaXRvciwhMCkpKSlpZigwPGYpZS50eXBlKGEpO2Vsc2UgaWYoYi5pc05hdmlnYXRpb25LZXkoYSkpdGhpcy5vbk5hdmlnYXRpb25LZXkoITApfSxvbk5hdmlnYXRpb25LZXk6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcy51bmRvTWFuYWdlcjshYSYmYi5zYXZlKCEwLG51bGwsITEpfHxiLnVwZGF0ZVNlbGVjdGlvbihuZXcgYyhiLmVkaXRvcikpO2IucmVzZXRUeXBlKCl9LGlnbm9yZUlucHV0RXZlbnRMaXN0ZW5lcjpmdW5jdGlvbigpe3RoaXMuaWdub3JlSW5wdXRFdmVudD0hMH0sYWN0aXZhdGVJbnB1dEV2ZW50TGlzdGVuZXI6ZnVuY3Rpb24oKXt0aGlzLmlnbm9yZUlucHV0RXZlbnQ9ITF9LGF0dGFjaExpc3RlbmVyczpmdW5jdGlvbigpe3ZhciBhPXRoaXMudW5kb01hbmFnZXIuZWRpdG9yLGM9YS5lZGl0YWJsZSgpLFxuZT10aGlzO2MuYXR0YWNoTGlzdGVuZXIoYyxcImtleWRvd25cIixmdW5jdGlvbihhKXtlLm9uS2V5ZG93bihhKTtpZihiLmllRnVuY3Rpb25hbEtleXNCdWcoYS5kYXRhLmdldEtleSgpKSllLm9uSW5wdXQoKX0sbnVsbCxudWxsLDk5OSk7Yy5hdHRhY2hMaXN0ZW5lcihjLENLRURJVE9SLmVudi5pZT9cImtleXByZXNzXCI6XCJpbnB1dFwiLGUub25JbnB1dCxlLG51bGwsOTk5KTtjLmF0dGFjaExpc3RlbmVyKGMsXCJrZXl1cFwiLGUub25LZXl1cCxlLG51bGwsOTk5KTtjLmF0dGFjaExpc3RlbmVyKGMsXCJwYXN0ZVwiLGUuaWdub3JlSW5wdXRFdmVudExpc3RlbmVyLGUsbnVsbCw5OTkpO2MuYXR0YWNoTGlzdGVuZXIoYyxcImRyb3BcIixlLmlnbm9yZUlucHV0RXZlbnRMaXN0ZW5lcixlLG51bGwsOTk5KTthLm9uKFwiYWZ0ZXJQYXN0ZVwiLGUuYWN0aXZhdGVJbnB1dEV2ZW50TGlzdGVuZXIsZSxudWxsLDk5OSk7Yy5hdHRhY2hMaXN0ZW5lcihjLmlzSW5saW5lKCk/YzphLmRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpLFxuXCJjbGlja1wiLGZ1bmN0aW9uKCl7ZS5vbk5hdmlnYXRpb25LZXkoKX0sbnVsbCxudWxsLDk5OSk7Yy5hdHRhY2hMaXN0ZW5lcih0aGlzLnVuZG9NYW5hZ2VyLmVkaXRvcixcImJsdXJcIixmdW5jdGlvbigpe2Uua2V5RXZlbnRzU3RhY2sucmVtb3ZlKDkpfSxudWxsLG51bGwsOTk5KX19O3ZhciBtPUNLRURJVE9SLnBsdWdpbnMudW5kby5LZXlFdmVudHNTdGFjaz1mdW5jdGlvbigpe3RoaXMuc3RhY2s9W119O20ucHJvdG90eXBlPXtwdXNoOmZ1bmN0aW9uKGEpe2E9dGhpcy5zdGFjay5wdXNoKHtrZXlDb2RlOmEsaW5wdXRzOjB9KTtyZXR1cm4gdGhpcy5zdGFja1thLTFdfSxnZXRMYXN0SW5kZXg6ZnVuY3Rpb24oYSl7aWYoXCJudW1iZXJcIiE9dHlwZW9mIGEpcmV0dXJuIHRoaXMuc3RhY2subGVuZ3RoLTE7Zm9yKHZhciBiPXRoaXMuc3RhY2subGVuZ3RoO2ItLTspaWYodGhpcy5zdGFja1tiXS5rZXlDb2RlPT1hKXJldHVybiBiO3JldHVybi0xfSxnZXRMYXN0OmZ1bmN0aW9uKGEpe2E9dGhpcy5nZXRMYXN0SW5kZXgoYSk7XG5yZXR1cm4tMSE9YT90aGlzLnN0YWNrW2FdOm51bGx9LGluY3JlbWVudDpmdW5jdGlvbihhKXt0aGlzLmdldExhc3QoYSkuaW5wdXRzKyt9LHJlbW92ZTpmdW5jdGlvbihhKXthPXRoaXMuZ2V0TGFzdEluZGV4KGEpOy0xIT1hJiZ0aGlzLnN0YWNrLnNwbGljZShhLDEpfSxyZXNldElucHV0czpmdW5jdGlvbihhKXtpZihcIm51bWJlclwiPT10eXBlb2YgYSl0aGlzLmdldExhc3QoYSkuaW5wdXRzPTA7ZWxzZSBmb3IoYT10aGlzLnN0YWNrLmxlbmd0aDthLS07KXRoaXMuc3RhY2tbYV0uaW5wdXRzPTB9LGdldFRvdGFsSW5wdXRzOmZ1bmN0aW9uKCl7Zm9yKHZhciBhPXRoaXMuc3RhY2subGVuZ3RoLGI9MDthLS07KWIrPXRoaXMuc3RhY2tbYV0uaW5wdXRzO3JldHVybiBifSxjbGVhblVwOmZ1bmN0aW9uKGEpe2E9YS5kYXRhLiQ7YS5jdHJsS2V5fHxhLm1ldGFLZXl8fHRoaXMucmVtb3ZlKDE3KTthLnNoaWZ0S2V5fHx0aGlzLnJlbW92ZSgxNik7YS5hbHRLZXl8fHRoaXMucmVtb3ZlKDE4KX19fSgpLFxuXCJ1c2Ugc3RyaWN0XCIsZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEsYil7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKHRoaXMse2VkaXRvcjphLGVkaXRhYmxlOmEuZWRpdGFibGUoKSxkb2M6YS5kb2N1bWVudCx3aW46YS53aW5kb3d9LGIsITApO3RoaXMuaW5saW5lPXRoaXMuZWRpdGFibGUuaXNJbmxpbmUoKTt0aGlzLmlubGluZXx8KHRoaXMuZnJhbWU9dGhpcy53aW4uZ2V0RnJhbWUoKSk7dGhpcy50YXJnZXQ9dGhpc1t0aGlzLmlubGluZT9cImVkaXRhYmxlXCI6XCJkb2NcIl19ZnVuY3Rpb24gZihhLGIpe0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGIse2VkaXRvcjphfSwhMCl9ZnVuY3Rpb24gZShhLGIpe3ZhciBlPWEuZWRpdGFibGUoKTtDS0VESVRPUi50b29scy5leHRlbmQodGhpcyx7ZWRpdG9yOmEsZWRpdGFibGU6ZSxpbmxpbmU6ZS5pc0lubGluZSgpLGRvYzphLmRvY3VtZW50LHdpbjphLndpbmRvdyxjb250YWluZXI6Q0tFRElUT1IuZG9jdW1lbnQuZ2V0Qm9keSgpLHdpblRvcDpDS0VESVRPUi5kb2N1bWVudC5nZXRXaW5kb3coKX0sXG5iLCEwKTt0aGlzLmhpZGRlbj17fTt0aGlzLnZpc2libGU9e307dGhpcy5pbmxpbmV8fCh0aGlzLmZyYW1lPXRoaXMud2luLmdldEZyYW1lKCkpO3RoaXMucXVlcnlWaWV3cG9ydCgpO3ZhciBmPUNLRURJVE9SLnRvb2xzLmJpbmQodGhpcy5xdWVyeVZpZXdwb3J0LHRoaXMpLGw9Q0tFRElUT1IudG9vbHMuYmluZCh0aGlzLmhpZGVWaXNpYmxlLHRoaXMpLG09Q0tFRElUT1IudG9vbHMuYmluZCh0aGlzLnJlbW92ZUFsbCx0aGlzKTtlLmF0dGFjaExpc3RlbmVyKHRoaXMud2luVG9wLFwicmVzaXplXCIsZik7ZS5hdHRhY2hMaXN0ZW5lcih0aGlzLndpblRvcCxcInNjcm9sbFwiLGYpO2UuYXR0YWNoTGlzdGVuZXIodGhpcy53aW5Ub3AsXCJyZXNpemVcIixsKTtlLmF0dGFjaExpc3RlbmVyKHRoaXMud2luLFwic2Nyb2xsXCIsbCk7ZS5hdHRhY2hMaXN0ZW5lcih0aGlzLmlubGluZT9lOnRoaXMuZnJhbWUsXCJtb3VzZW91dFwiLGZ1bmN0aW9uKGEpe3ZhciBiPWEuZGF0YS4kLmNsaWVudFg7YT1hLmRhdGEuJC5jbGllbnRZO1xudGhpcy5xdWVyeVZpZXdwb3J0KCk7KGI8PXRoaXMucmVjdC5sZWZ0fHxiPj10aGlzLnJlY3QucmlnaHR8fGE8PXRoaXMucmVjdC50b3B8fGE+PXRoaXMucmVjdC5ib3R0b20pJiZ0aGlzLmhpZGVWaXNpYmxlKCk7KDA+PWJ8fGI+PXRoaXMud2luVG9wUGFuZS53aWR0aHx8MD49YXx8YT49dGhpcy53aW5Ub3BQYW5lLmhlaWdodCkmJnRoaXMuaGlkZVZpc2libGUoKX0sdGhpcyk7ZS5hdHRhY2hMaXN0ZW5lcihhLFwicmVzaXplXCIsZik7ZS5hdHRhY2hMaXN0ZW5lcihhLFwibW9kZVwiLG0pO2Eub24oXCJkZXN0cm95XCIsbSk7dGhpcy5saW5lVHBsPShuZXcgQ0tFRElUT1IudGVtcGxhdGUoJ1xceDNjZGl2IGRhdGEtY2tlLWxpbmV1dGlscy1saW5lXFx4M2RcIjFcIiBjbGFzc1xceDNkXCJja2VfcmVzZXRfYWxsXCIgc3R5bGVcXHgzZFwie2xpbmVTdHlsZX1cIlxceDNlXFx4M2NzcGFuIHN0eWxlXFx4M2RcInt0aXBMZWZ0U3R5bGV9XCJcXHgzZVxceDI2bmJzcDtcXHgzYy9zcGFuXFx4M2VcXHgzY3NwYW4gc3R5bGVcXHgzZFwie3RpcFJpZ2h0U3R5bGV9XCJcXHgzZVxceDI2bmJzcDtcXHgzYy9zcGFuXFx4M2VcXHgzYy9kaXZcXHgzZScpKS5vdXRwdXQoe2xpbmVTdHlsZTpDS0VESVRPUi50b29scy53cml0ZUNzc1RleHQoQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHt9LFxuayx0aGlzLmxpbmVTdHlsZSwhMCkpLHRpcExlZnRTdHlsZTpDS0VESVRPUi50b29scy53cml0ZUNzc1RleHQoQ0tFRElUT1IudG9vbHMuZXh0ZW5kKHt9LGMse2xlZnQ6XCIwcHhcIixcImJvcmRlci1sZWZ0LWNvbG9yXCI6XCJyZWRcIixcImJvcmRlci13aWR0aFwiOlwiNnB4IDAgNnB4IDZweFwifSx0aGlzLnRpcENzcyx0aGlzLnRpcExlZnRTdHlsZSwhMCkpLHRpcFJpZ2h0U3R5bGU6Q0tFRElUT1IudG9vbHMud3JpdGVDc3NUZXh0KENLRURJVE9SLnRvb2xzLmV4dGVuZCh7fSxjLHtyaWdodDpcIjBweFwiLFwiYm9yZGVyLXJpZ2h0LWNvbG9yXCI6XCJyZWRcIixcImJvcmRlci13aWR0aFwiOlwiNnB4IDZweCA2cHggMFwifSx0aGlzLnRpcENzcyx0aGlzLnRpcFJpZ2h0U3R5bGUsITApKX0pfWZ1bmN0aW9uIGIoYSl7dmFyIGI7aWYoYj1hJiZhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCliPSEobFthLmdldENvbXB1dGVkU3R5bGUoXCJmbG9hdFwiKV18fGxbYS5nZXRBdHRyaWJ1dGUoXCJhbGlnblwiKV0pO3JldHVybiBiJiZcbiFtW2EuZ2V0Q29tcHV0ZWRTdHlsZShcInBvc2l0aW9uXCIpXX1DS0VESVRPUi5wbHVnaW5zLmFkZChcImxpbmV1dGlsc1wiKTtDS0VESVRPUi5MSU5FVVRJTFNfQkVGT1JFPTE7Q0tFRElUT1IuTElORVVUSUxTX0FGVEVSPTI7Q0tFRElUT1IuTElORVVUSUxTX0lOU0lERT00O2EucHJvdG90eXBlPXtzdGFydDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGM9dGhpcy5lZGl0b3IsZT10aGlzLmRvYyxmLGssbCxtLHU9Q0tFRElUT1IudG9vbHMuZXZlbnRzQnVmZmVyKDUwLGZ1bmN0aW9uKCl7Yy5yZWFkT25seXx8XCJ3eXNpd3lnXCIhPWMubW9kZXx8KGIucmVsYXRpb25zPXt9LChrPWUuJC5lbGVtZW50RnJvbVBvaW50KGwsbSkpJiZrLm5vZGVUeXBlJiYoZj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoayksYi50cmF2ZXJzZVNlYXJjaChmKSxpc05hTihsK20pfHxiLnBpeGVsU2VhcmNoKGYsbCxtKSxhJiZhKGIucmVsYXRpb25zLGwsbSkpKX0pO3RoaXMubGlzdGVuZXI9dGhpcy5lZGl0YWJsZS5hdHRhY2hMaXN0ZW5lcih0aGlzLnRhcmdldCxcblwibW91c2Vtb3ZlXCIsZnVuY3Rpb24oYSl7bD1hLmRhdGEuJC5jbGllbnRYO209YS5kYXRhLiQuY2xpZW50WTt1LmlucHV0KCl9KTt0aGlzLmVkaXRhYmxlLmF0dGFjaExpc3RlbmVyKHRoaXMuaW5saW5lP3RoaXMuZWRpdGFibGU6dGhpcy5mcmFtZSxcIm1vdXNlb3V0XCIsZnVuY3Rpb24oKXt1LnJlc2V0KCl9KX0sc3RvcDpmdW5jdGlvbigpe3RoaXMubGlzdGVuZXImJnRoaXMubGlzdGVuZXIucmVtb3ZlTGlzdGVuZXIoKX0sZ2V0UmFuZ2U6ZnVuY3Rpb24oKXt2YXIgYT17fTthW0NLRURJVE9SLkxJTkVVVElMU19CRUZPUkVdPUNLRURJVE9SLlBPU0lUSU9OX0JFRk9SRV9TVEFSVDthW0NLRURJVE9SLkxJTkVVVElMU19BRlRFUl09Q0tFRElUT1IuUE9TSVRJT05fQUZURVJfRU5EO2FbQ0tFRElUT1IuTElORVVUSUxTX0lOU0lERV09Q0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQ7cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjPXRoaXMuZWRpdG9yLmNyZWF0ZVJhbmdlKCk7Yy5tb3ZlVG9Qb3NpdGlvbih0aGlzLnJlbGF0aW9uc1tiLnVpZF0uZWxlbWVudCxcbmFbYi50eXBlXSk7cmV0dXJuIGN9fSgpLHN0b3JlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMsZCl7dmFyIGU9Yi5nZXRVbmlxdWVJZCgpO2UgaW4gZD9kW2VdLnR5cGV8PWM6ZFtlXT17ZWxlbWVudDpiLHR5cGU6Y319cmV0dXJuIGZ1bmN0aW9uKGMsZSl7dmFyIGY7ZSZDS0VESVRPUi5MSU5FVVRJTFNfQUZURVImJmIoZj1jLmdldE5leHQoKSkmJmYuaXNWaXNpYmxlKCkmJihhKGYsQ0tFRElUT1IuTElORVVUSUxTX0JFRk9SRSx0aGlzLnJlbGF0aW9ucyksZV49Q0tFRElUT1IuTElORVVUSUxTX0FGVEVSKTtlJkNLRURJVE9SLkxJTkVVVElMU19JTlNJREUmJmIoZj1jLmdldEZpcnN0KCkpJiZmLmlzVmlzaWJsZSgpJiYoYShmLENLRURJVE9SLkxJTkVVVElMU19CRUZPUkUsdGhpcy5yZWxhdGlvbnMpLGVePUNLRURJVE9SLkxJTkVVVElMU19JTlNJREUpO2EoYyxlLHRoaXMucmVsYXRpb25zKX19KCksdHJhdmVyc2VTZWFyY2g6ZnVuY3Rpb24oYSl7dmFyIGMsZSxmO2RvIGlmKGY9YS4kW1wiZGF0YS1ja2UtZXhwYW5kb1wiXSxcbiEoZiYmZiBpbiB0aGlzLnJlbGF0aW9ucykpe2lmKGEuZXF1YWxzKHRoaXMuZWRpdGFibGUpKWJyZWFrO2lmKGIoYSkpZm9yKGMgaW4gdGhpcy5sb29rdXBzKShlPXRoaXMubG9va3Vwc1tjXShhKSkmJnRoaXMuc3RvcmUoYSxlKX13aGlsZSgoIWF8fGEudHlwZSE9Q0tFRElUT1IuTk9ERV9FTEVNRU5UfHxcInRydWVcIiE9YS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIikpJiYoYT1hLmdldFBhcmVudCgpKSl9LHBpeGVsU2VhcmNoOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShkLGUsZixrLGwpe2Zvcih2YXIgbT0wLHU7bChmKTspe2YrPWs7aWYoMjU9PSsrbSlicmVhaztpZih1PXRoaXMuZG9jLiQuZWxlbWVudEZyb21Qb2ludChlLGYpKWlmKHU9PWQpbT0wO2Vsc2UgaWYoYyhkLHUpJiYobT0wLGIodT1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQodSkpKSlyZXR1cm4gdX19dmFyIGM9Q0tFRElUT1IuZW52LmllfHxDS0VESVRPUi5lbnYud2Via2l0P2Z1bmN0aW9uKGEsYil7cmV0dXJuIGEuY29udGFpbnMoYil9OlxuZnVuY3Rpb24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KX07cmV0dXJuIGZ1bmN0aW9uKGMsZSxmKXt2YXIgaD10aGlzLndpbi5nZXRWaWV3UGFuZVNpemUoKS5oZWlnaHQsaz1hLmNhbGwodGhpcyxjLiQsZSxmLC0xLGZ1bmN0aW9uKGEpe3JldHVybiAwPGF9KTtlPWEuY2FsbCh0aGlzLGMuJCxlLGYsMSxmdW5jdGlvbihhKXtyZXR1cm4gYTxofSk7aWYoaylmb3IodGhpcy50cmF2ZXJzZVNlYXJjaChrKTshay5nZXRQYXJlbnQoKS5lcXVhbHMoYyk7KWs9ay5nZXRQYXJlbnQoKTtpZihlKWZvcih0aGlzLnRyYXZlcnNlU2VhcmNoKGUpOyFlLmdldFBhcmVudCgpLmVxdWFscyhjKTspZT1lLmdldFBhcmVudCgpO2Zvcig7a3x8ZTspe2smJihrPWsuZ2V0TmV4dChiKSk7aWYoIWt8fGsuZXF1YWxzKGUpKWJyZWFrO3RoaXMudHJhdmVyc2VTZWFyY2goayk7ZSYmKGU9ZS5nZXRQcmV2aW91cyhiKSk7aWYoIWV8fGUuZXF1YWxzKGspKWJyZWFrO3RoaXMudHJhdmVyc2VTZWFyY2goZSl9fX0oKSxcbmdyZWVkeVNlYXJjaDpmdW5jdGlvbigpe3RoaXMucmVsYXRpb25zPXt9O2Zvcih2YXIgYT10aGlzLmVkaXRhYmxlLmdldEVsZW1lbnRzQnlUYWcoXCIqXCIpLGM9MCxlLGYsaztlPWEuZ2V0SXRlbShjKyspOylpZighZS5lcXVhbHModGhpcy5lZGl0YWJsZSkmJmUudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYoZS5oYXNBdHRyaWJ1dGUoXCJjb250ZW50ZWRpdGFibGVcIil8fCFlLmlzUmVhZE9ubHkoKSkmJmIoZSkmJmUuaXNWaXNpYmxlKCkpZm9yKGsgaW4gdGhpcy5sb29rdXBzKShmPXRoaXMubG9va3Vwc1trXShlKSkmJnRoaXMuc3RvcmUoZSxmKTtyZXR1cm4gdGhpcy5yZWxhdGlvbnN9fTtmLnByb3RvdHlwZT17bG9jYXRlOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjLGQpe3ZhciBlPWMuZWxlbWVudFtkPT09Q0tFRElUT1IuTElORVVUSUxTX0JFRk9SRT9cImdldFByZXZpb3VzXCI6XCJnZXROZXh0XCJdKCk7cmV0dXJuIGUmJmIoZSk/KGMuc2libGluZ1JlY3Q9ZS5nZXRDbGllbnRSZWN0KCksXG5kPT1DS0VESVRPUi5MSU5FVVRJTFNfQkVGT1JFPyhjLnNpYmxpbmdSZWN0LmJvdHRvbStjLmVsZW1lbnRSZWN0LnRvcCkvMjooYy5lbGVtZW50UmVjdC5ib3R0b20rYy5zaWJsaW5nUmVjdC50b3ApLzIpOmQ9PUNLRURJVE9SLkxJTkVVVElMU19CRUZPUkU/Yy5lbGVtZW50UmVjdC50b3A6Yy5lbGVtZW50UmVjdC5ib3R0b219cmV0dXJuIGZ1bmN0aW9uKGIpe3ZhciBjO3RoaXMubG9jYXRpb25zPXt9O2Zvcih2YXIgZSBpbiBiKWM9YltlXSxjLmVsZW1lbnRSZWN0PWMuZWxlbWVudC5nZXRDbGllbnRSZWN0KCksYy50eXBlJkNLRURJVE9SLkxJTkVVVElMU19CRUZPUkUmJnRoaXMuc3RvcmUoZSxDS0VESVRPUi5MSU5FVVRJTFNfQkVGT1JFLGEoYyxDS0VESVRPUi5MSU5FVVRJTFNfQkVGT1JFKSksYy50eXBlJkNLRURJVE9SLkxJTkVVVElMU19BRlRFUiYmdGhpcy5zdG9yZShlLENLRURJVE9SLkxJTkVVVElMU19BRlRFUixhKGMsQ0tFRElUT1IuTElORVVUSUxTX0FGVEVSKSksYy50eXBlJlxuQ0tFRElUT1IuTElORVVUSUxTX0lOU0lERSYmdGhpcy5zdG9yZShlLENLRURJVE9SLkxJTkVVVElMU19JTlNJREUsKGMuZWxlbWVudFJlY3QudG9wK2MuZWxlbWVudFJlY3QuYm90dG9tKS8yKTtyZXR1cm4gdGhpcy5sb2NhdGlvbnN9fSgpLHNvcnQ6ZnVuY3Rpb24oKXt2YXIgYSxiLGMsZTtyZXR1cm4gZnVuY3Rpb24oZixrKXthPXRoaXMubG9jYXRpb25zO2I9W107Zm9yKHZhciBsIGluIGEpZm9yKHZhciBtIGluIGFbbF0paWYoYz1NYXRoLmFicyhmLWFbbF1bbV0pLGIubGVuZ3RoKXtmb3IoZT0wO2U8Yi5sZW5ndGg7ZSsrKWlmKGM8YltlXS5kaXN0KXtiLnNwbGljZShlLDAse3VpZDorbCx0eXBlOm0sZGlzdDpjfSk7YnJlYWt9ZT09Yi5sZW5ndGgmJmIucHVzaCh7dWlkOitsLHR5cGU6bSxkaXN0OmN9KX1lbHNlIGIucHVzaCh7dWlkOitsLHR5cGU6bSxkaXN0OmN9KTtyZXR1cm5cInVuZGVmaW5lZFwiIT10eXBlb2Ygaz9iLnNsaWNlKDAsayk6Yn19KCksc3RvcmU6ZnVuY3Rpb24oYSxcbmIsYyl7dGhpcy5sb2NhdGlvbnNbYV18fCh0aGlzLmxvY2F0aW9uc1thXT17fSk7dGhpcy5sb2NhdGlvbnNbYV1bYl09Y319O3ZhciBjPXtkaXNwbGF5OlwiYmxvY2tcIix3aWR0aDpcIjBweFwiLGhlaWdodDpcIjBweFwiLFwiYm9yZGVyLWNvbG9yXCI6XCJ0cmFuc3BhcmVudFwiLFwiYm9yZGVyLXN0eWxlXCI6XCJzb2xpZFwiLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6XCItNnB4XCJ9LGs9e2hlaWdodDpcIjBweFwiLFwiYm9yZGVyLXRvcFwiOlwiMXB4IGRhc2hlZCByZWRcIixwb3NpdGlvbjpcImFic29sdXRlXCIsXCJ6LWluZGV4XCI6OTk5OX07ZS5wcm90b3R5cGU9e3JlbW92ZUFsbDpmdW5jdGlvbigpe2Zvcih2YXIgYSBpbiB0aGlzLmhpZGRlbil0aGlzLmhpZGRlblthXS5yZW1vdmUoKSxkZWxldGUgdGhpcy5oaWRkZW5bYV07Zm9yKGEgaW4gdGhpcy52aXNpYmxlKXRoaXMudmlzaWJsZVthXS5yZW1vdmUoKSxkZWxldGUgdGhpcy52aXNpYmxlW2FdfSxoaWRlTGluZTpmdW5jdGlvbihhKXt2YXIgYj1hLmdldFVuaXF1ZUlkKCk7XG5hLmhpZGUoKTt0aGlzLmhpZGRlbltiXT1hO2RlbGV0ZSB0aGlzLnZpc2libGVbYl19LHNob3dMaW5lOmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0VW5pcXVlSWQoKTthLnNob3coKTt0aGlzLnZpc2libGVbYl09YTtkZWxldGUgdGhpcy5oaWRkZW5bYl19LGhpZGVWaXNpYmxlOmZ1bmN0aW9uKCl7Zm9yKHZhciBhIGluIHRoaXMudmlzaWJsZSl0aGlzLmhpZGVMaW5lKHRoaXMudmlzaWJsZVthXSl9LHBsYWNlTGluZTpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZjtpZihjPXRoaXMuZ2V0U3R5bGUoYS51aWQsYS50eXBlKSl7Zm9yKGYgaW4gdGhpcy52aXNpYmxlKWlmKHRoaXMudmlzaWJsZVtmXS5nZXRDdXN0b21EYXRhKFwiaGFzaFwiKSE9PXRoaXMuaGFzaCl7ZT10aGlzLnZpc2libGVbZl07YnJlYWt9aWYoIWUpZm9yKGYgaW4gdGhpcy5oaWRkZW4paWYodGhpcy5oaWRkZW5bZl0uZ2V0Q3VzdG9tRGF0YShcImhhc2hcIikhPT10aGlzLmhhc2gpe3RoaXMuc2hvd0xpbmUoZT10aGlzLmhpZGRlbltmXSk7XG5icmVha31lfHx0aGlzLnNob3dMaW5lKGU9dGhpcy5hZGRMaW5lKCkpO2Uuc2V0Q3VzdG9tRGF0YShcImhhc2hcIix0aGlzLmhhc2gpO3RoaXMudmlzaWJsZVtlLmdldFVuaXF1ZUlkKCldPWU7ZS5zZXRTdHlsZXMoYyk7YiYmYihlKX19LGdldFN0eWxlOmZ1bmN0aW9uKGEsYil7dmFyIGM9dGhpcy5yZWxhdGlvbnNbYV0sZT10aGlzLmxvY2F0aW9uc1thXVtiXSxmPXt9O2Yud2lkdGg9Yy5zaWJsaW5nUmVjdD9NYXRoLm1heChjLnNpYmxpbmdSZWN0LndpZHRoLGMuZWxlbWVudFJlY3Qud2lkdGgpOmMuZWxlbWVudFJlY3Qud2lkdGg7Zi50b3A9dGhpcy5pbmxpbmU/ZSt0aGlzLndpblRvcFNjcm9sbC55LXRoaXMucmVjdC5yZWxhdGl2ZVk6dGhpcy5yZWN0LnRvcCt0aGlzLndpblRvcFNjcm9sbC55K2U7aWYoZi50b3AtdGhpcy53aW5Ub3BTY3JvbGwueTx0aGlzLnJlY3QudG9wfHxmLnRvcC10aGlzLndpblRvcFNjcm9sbC55PnRoaXMucmVjdC5ib3R0b20pcmV0dXJuITE7dGhpcy5pbmxpbmU/XG5mLmxlZnQ9Yy5lbGVtZW50UmVjdC5sZWZ0LXRoaXMucmVjdC5yZWxhdGl2ZVg6KDA8Yy5lbGVtZW50UmVjdC5sZWZ0P2YubGVmdD10aGlzLnJlY3QubGVmdCtjLmVsZW1lbnRSZWN0LmxlZnQ6KGYud2lkdGgrPWMuZWxlbWVudFJlY3QubGVmdCxmLmxlZnQ9dGhpcy5yZWN0LmxlZnQpLDA8KGM9Zi5sZWZ0K2Yud2lkdGgtKHRoaXMucmVjdC5sZWZ0K3RoaXMud2luUGFuZS53aWR0aCkpJiYoZi53aWR0aC09YykpO2YubGVmdCs9dGhpcy53aW5Ub3BTY3JvbGwueDtmb3IodmFyIGsgaW4gZilmW2tdPUNLRURJVE9SLnRvb2xzLmNzc0xlbmd0aChmW2tdKTtyZXR1cm4gZn0sYWRkTGluZTpmdW5jdGlvbigpe3ZhciBhPUNLRURJVE9SLmRvbS5lbGVtZW50LmNyZWF0ZUZyb21IdG1sKHRoaXMubGluZVRwbCk7YS5hcHBlbmRUbyh0aGlzLmNvbnRhaW5lcik7cmV0dXJuIGF9LHByZXBhcmU6ZnVuY3Rpb24oYSxiKXt0aGlzLnJlbGF0aW9ucz1hO3RoaXMubG9jYXRpb25zPWI7dGhpcy5oYXNoPU1hdGgucmFuZG9tKCl9LFxuY2xlYW51cDpmdW5jdGlvbigpe3ZhciBhLGI7Zm9yKGIgaW4gdGhpcy52aXNpYmxlKWE9dGhpcy52aXNpYmxlW2JdLGEuZ2V0Q3VzdG9tRGF0YShcImhhc2hcIikhPT10aGlzLmhhc2gmJnRoaXMuaGlkZUxpbmUoYSl9LHF1ZXJ5Vmlld3BvcnQ6ZnVuY3Rpb24oKXt0aGlzLndpblBhbmU9dGhpcy53aW4uZ2V0Vmlld1BhbmVTaXplKCk7dGhpcy53aW5Ub3BTY3JvbGw9dGhpcy53aW5Ub3AuZ2V0U2Nyb2xsUG9zaXRpb24oKTt0aGlzLndpblRvcFBhbmU9dGhpcy53aW5Ub3AuZ2V0Vmlld1BhbmVTaXplKCk7dGhpcy5yZWN0PXRoaXMuZ2V0Q2xpZW50UmVjdCh0aGlzLmlubGluZT90aGlzLmVkaXRhYmxlOnRoaXMuZnJhbWUpfSxnZXRDbGllbnRSZWN0OmZ1bmN0aW9uKGEpe2E9YS5nZXRDbGllbnRSZWN0KCk7dmFyIGI9dGhpcy5jb250YWluZXIuZ2V0RG9jdW1lbnRQb3NpdGlvbigpLGM9dGhpcy5jb250YWluZXIuZ2V0Q29tcHV0ZWRTdHlsZShcInBvc2l0aW9uXCIpO2EucmVsYXRpdmVYPWEucmVsYXRpdmVZPVxuMDtcInN0YXRpY1wiIT1jJiYoYS5yZWxhdGl2ZVk9Yi55LGEucmVsYXRpdmVYPWIueCxhLnRvcC09YS5yZWxhdGl2ZVksYS5ib3R0b20tPWEucmVsYXRpdmVZLGEubGVmdC09YS5yZWxhdGl2ZVgsYS5yaWdodC09YS5yZWxhdGl2ZVgpO3JldHVybiBhfX07dmFyIGw9e2xlZnQ6MSxyaWdodDoxLGNlbnRlcjoxfSxtPXthYnNvbHV0ZToxLGZpeGVkOjF9O0NLRURJVE9SLnBsdWdpbnMubGluZXV0aWxzPXtmaW5kZXI6YSxsb2NhdG9yOmYsbGluZXI6ZX19KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe3JldHVybiBhLmdldE5hbWUmJiFhLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXRlbXBcIil9Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ3aWRnZXRzZWxlY3Rpb25cIix7aW5pdDpmdW5jdGlvbihhKXtpZihDS0VESVRPUi5lbnYud2Via2l0KXt2YXIgZT1DS0VESVRPUi5wbHVnaW5zLndpZGdldHNlbGVjdGlvbjthLm9uKFwiY29udGVudERvbVwiLGZ1bmN0aW9uKGEpe2E9YS5lZGl0b3I7dmFyIGM9YS5lZGl0YWJsZSgpO1xuYy5hdHRhY2hMaXN0ZW5lcihjLFwia2V5ZG93blwiLGZ1bmN0aW9uKGEpe2EuZGF0YS5nZXRLZXlzdHJva2UoKT09Q0tFRElUT1IuQ1RSTCs2NSYmQ0tFRElUT1IudG9vbHMuc2V0VGltZW91dChmdW5jdGlvbigpe2UuYWRkRmlsbGVycyhjKXx8ZS5yZW1vdmVGaWxsZXJzKGMpfSwwKX0sbnVsbCxudWxsLC0xKTthLm9uKFwic2VsZWN0aW9uQ2hlY2tcIixmdW5jdGlvbihhKXtlLnJlbW92ZUZpbGxlcnMoYS5lZGl0b3IuZWRpdGFibGUoKSl9KTthLm9uKFwicGFzdGVcIixmdW5jdGlvbihhKXthLmRhdGEuZGF0YVZhbHVlPWUuY2xlYW5QYXN0ZURhdGEoYS5kYXRhLmRhdGFWYWx1ZSl9KTtcInNlbGVjdGFsbFwiaW4gYS5wbHVnaW5zJiZlLmFkZFNlbGVjdEFsbEludGVncmF0aW9uKGEpfSl9fX0pO0NLRURJVE9SLnBsdWdpbnMud2lkZ2V0c2VsZWN0aW9uPXtzdGFydEZpbGxlcjpudWxsLGVuZEZpbGxlcjpudWxsLGZpbGxlckF0dHJpYnV0ZTpcImRhdGEtY2tlLWZpbGxlci13ZWJraXRcIixmaWxsZXJDb250ZW50OlwiXFx4MjZuYnNwO1wiLFxuZmlsbGVyVGFnTmFtZTpcImRpdlwiLGFkZEZpbGxlcnM6ZnVuY3Rpb24oZil7dmFyIGU9Zi5lZGl0b3I7aWYoIXRoaXMuaXNXaG9sZUNvbnRlbnRTZWxlY3RlZChmKSYmMDxmLmdldENoaWxkQ291bnQoKSl7dmFyIGI9Zi5nZXRGaXJzdChhKSxjPWYuZ2V0TGFzdChhKTtiJiZiLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmIWIuaXNFZGl0YWJsZSgpJiYodGhpcy5zdGFydEZpbGxlcj10aGlzLmNyZWF0ZUZpbGxlcigpLGYuYXBwZW5kKHRoaXMuc3RhcnRGaWxsZXIsMSkpO2MmJmMudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiYhYy5pc0VkaXRhYmxlKCkmJih0aGlzLmVuZEZpbGxlcj10aGlzLmNyZWF0ZUZpbGxlcighMCksZi5hcHBlbmQodGhpcy5lbmRGaWxsZXIsMCkpO2lmKHRoaXMuaGFzRmlsbGVyKGYpKXJldHVybiBlPWUuY3JlYXRlUmFuZ2UoKSxlLnNlbGVjdE5vZGVDb250ZW50cyhmKSxlLnNlbGVjdCgpLCEwfXJldHVybiExfSxyZW1vdmVGaWxsZXJzOmZ1bmN0aW9uKGEpe2lmKHRoaXMuaGFzRmlsbGVyKGEpJiZcbiF0aGlzLmlzV2hvbGVDb250ZW50U2VsZWN0ZWQoYSkpe3ZhciBlPWEuZmluZE9uZSh0aGlzLmZpbGxlclRhZ05hbWUrXCJbXCIrdGhpcy5maWxsZXJBdHRyaWJ1dGUrXCJcXHgzZHN0YXJ0XVwiKSxiPWEuZmluZE9uZSh0aGlzLmZpbGxlclRhZ05hbWUrXCJbXCIrdGhpcy5maWxsZXJBdHRyaWJ1dGUrXCJcXHgzZGVuZF1cIik7dGhpcy5zdGFydEZpbGxlciYmZSYmdGhpcy5zdGFydEZpbGxlci5lcXVhbHMoZSk/dGhpcy5yZW1vdmVGaWxsZXIodGhpcy5zdGFydEZpbGxlcixhKTp0aGlzLnN0YXJ0RmlsbGVyPWU7dGhpcy5lbmRGaWxsZXImJmImJnRoaXMuZW5kRmlsbGVyLmVxdWFscyhiKT90aGlzLnJlbW92ZUZpbGxlcih0aGlzLmVuZEZpbGxlcixhKTp0aGlzLmVuZEZpbGxlcj1ifX0sY2xlYW5QYXN0ZURhdGE6ZnVuY3Rpb24oYSl7YSYmYS5sZW5ndGgmJihhPWEucmVwbGFjZSh0aGlzLmNyZWF0ZUZpbGxlclJlZ2V4KCksXCJcIikucmVwbGFjZSh0aGlzLmNyZWF0ZUZpbGxlclJlZ2V4KCEwKSxcIlwiKSk7XG5yZXR1cm4gYX0saXNXaG9sZUNvbnRlbnRTZWxlY3RlZDpmdW5jdGlvbihhKXt2YXIgZT1hLmVkaXRvci5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKVswXTtyZXR1cm4hZXx8ZSYmZS5jb2xsYXBzZWQ/ITE6KGU9ZS5jbG9uZSgpLGUuZW5sYXJnZShDS0VESVRPUi5FTkxBUkdFX0VMRU1FTlQpLCEhKGUmJmEmJmUuc3RhcnRDb250YWluZXImJmUuZW5kQ29udGFpbmVyJiYwPT09ZS5zdGFydE9mZnNldCYmZS5lbmRPZmZzZXQ9PT1hLmdldENoaWxkQ291bnQoKSYmZS5zdGFydENvbnRhaW5lci5lcXVhbHMoYSkmJmUuZW5kQ29udGFpbmVyLmVxdWFscyhhKSkpfSxoYXNGaWxsZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIDA8YS5maW5kKHRoaXMuZmlsbGVyVGFnTmFtZStcIltcIit0aGlzLmZpbGxlckF0dHJpYnV0ZStcIl1cIikuY291bnQoKX0sY3JlYXRlRmlsbGVyOmZ1bmN0aW9uKGEpe3ZhciBlPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudCh0aGlzLmZpbGxlclRhZ05hbWUpO2Uuc2V0SHRtbCh0aGlzLmZpbGxlckNvbnRlbnQpO1xuZS5zZXRBdHRyaWJ1dGUodGhpcy5maWxsZXJBdHRyaWJ1dGUsYT9cImVuZFwiOlwic3RhcnRcIik7ZS5zZXRBdHRyaWJ1dGUoXCJkYXRhLWNrZS10ZW1wXCIsMSk7ZS5zZXRTdHlsZXMoe2Rpc3BsYXk6XCJibG9ja1wiLHdpZHRoOjAsaGVpZ2h0OjAscGFkZGluZzowLGJvcmRlcjowLG1hcmdpbjowLHBvc2l0aW9uOlwiYWJzb2x1dGVcIix0b3A6MCxsZWZ0OlwiLTk5OTlweFwiLG9wYWNpdHk6MCxvdmVyZmxvdzpcImhpZGRlblwifSk7cmV0dXJuIGV9LHJlbW92ZUZpbGxlcjpmdW5jdGlvbihhLGUpe2lmKGEpe3ZhciBiPWUuZWRpdG9yLGM9ZS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VzKClbMF0uc3RhcnRQYXRoKCksaz1iLmNyZWF0ZVJhbmdlKCksbCxtO2MuY29udGFpbnMoYSkmJihsPWEuZ2V0SHRtbCgpLG09ITApO2M9XCJzdGFydFwiPT1hLmdldEF0dHJpYnV0ZSh0aGlzLmZpbGxlckF0dHJpYnV0ZSk7YS5yZW1vdmUoKTtsJiYwPGwubGVuZ3RoJiZsIT10aGlzLmZpbGxlckNvbnRlbnQ/KGUuaW5zZXJ0SHRtbEludG9SYW5nZShsLFxuYi5nZXRTZWxlY3Rpb24oKS5nZXRSYW5nZXMoKVswXSksay5zZXRTdGFydEF0KGUuZ2V0Q2hpbGQoZS5nZXRDaGlsZENvdW50KCktMSksQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX0VORCksYi5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSYW5nZXMoW2tdKSk6bSYmKGM/ay5zZXRTdGFydEF0KGUuZ2V0Rmlyc3QoKS5nZXROZXh0KCksQ0tFRElUT1IuUE9TSVRJT05fQUZURVJfU1RBUlQpOmsuc2V0RW5kQXQoZS5nZXRMYXN0KCkuZ2V0UHJldmlvdXMoKSxDS0VESVRPUi5QT1NJVElPTl9CRUZPUkVfRU5EKSxlLmVkaXRvci5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSYW5nZXMoW2tdKSl9fSxjcmVhdGVGaWxsZXJSZWdleDpmdW5jdGlvbihhKXt2YXIgZT10aGlzLmNyZWF0ZUZpbGxlcihhKS5nZXRPdXRlckh0bWwoKS5yZXBsYWNlKC9zdHlsZT1cIlteXCJdKlwiL2dpLCdzdHlsZVxceDNkXCJbXlwiXSpcIicpLnJlcGxhY2UoLz5bXjxdKjwvZ2ksXCJcXHgzZVteXFx4M2NdKlxceDNjXCIpO3JldHVybiBuZXcgUmVnRXhwKChhP1xuXCJcIjpcIl5cIikrZSsoYT9cIiRcIjpcIlwiKSl9LGFkZFNlbGVjdEFsbEludGVncmF0aW9uOmZ1bmN0aW9uKGEpe3ZhciBlPXRoaXM7YS5lZGl0YWJsZSgpLmF0dGFjaExpc3RlbmVyKGEsXCJiZWZvcmVDb21tYW5kRXhlY1wiLGZ1bmN0aW9uKGIpe3ZhciBjPWEuZWRpdGFibGUoKTtcInNlbGVjdEFsbFwiPT1iLmRhdGEubmFtZSYmYyYmZS5hZGRGaWxsZXJzKGMpfSxudWxsLG51bGwsOTk5OSl9fX0oKSxcInVzZSBzdHJpY3RcIixmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYSl7dGhpcy5lZGl0b3I9YTt0aGlzLnJlZ2lzdGVyZWQ9e307dGhpcy5pbnN0YW5jZXM9e307dGhpcy5zZWxlY3RlZD1bXTt0aGlzLndpZGdldEhvbGRpbmdGb2N1c2VkRWRpdGFibGU9dGhpcy5mb2N1c2VkPW51bGw7dGhpcy5fPXtuZXh0SWQ6MCx1cGNhc3RzOltdLHVwY2FzdENhbGxiYWNrczpbXSxmaWx0ZXJzOnt9fTtDKHRoaXMpO0QodGhpcyk7dGhpcy5vbihcImNoZWNrV2lkZ2V0c1wiLGwpO3RoaXMuZWRpdG9yLm9uKFwiY29udGVudERvbUludmFsaWRhdGVkXCIsXG50aGlzLmNoZWNrV2lkZ2V0cyx0aGlzKTtCKHRoaXMpO3kodGhpcyk7dCh0aGlzKTtBKHRoaXMpO3YodGhpcyl9ZnVuY3Rpb24gZihhLGIsYyxkLGUpe3ZhciBnPWEuZWRpdG9yO0NLRURJVE9SLnRvb2xzLmV4dGVuZCh0aGlzLGQse2VkaXRvcjpnLGlkOmIsaW5saW5lOlwic3BhblwiPT1jLmdldFBhcmVudCgpLmdldE5hbWUoKSxlbGVtZW50OmMsZGF0YTpDS0VESVRPUi50b29scy5leHRlbmQoe30sXCJmdW5jdGlvblwiPT10eXBlb2YgZC5kZWZhdWx0cz9kLmRlZmF1bHRzKCk6ZC5kZWZhdWx0cyksZGF0YVJlYWR5OiExLGluaXRlZDohMSxyZWFkeTohMSxlZGl0OmYucHJvdG90eXBlLmVkaXQsZm9jdXNlZEVkaXRhYmxlOm51bGwsZGVmaW5pdGlvbjpkLHJlcG9zaXRvcnk6YSxkcmFnZ2FibGU6ITEhPT1kLmRyYWdnYWJsZSxfOntkb3duY2FzdEZuOmQuZG93bmNhc3QmJlwic3RyaW5nXCI9PXR5cGVvZiBkLmRvd25jYXN0P2QuZG93bmNhc3RzW2QuZG93bmNhc3RdOmQuZG93bmNhc3R9fSwhMCk7XG5hLmZpcmUoXCJpbnN0YW5jZUNyZWF0ZWRcIix0aGlzKTtPKHRoaXMsZCk7dGhpcy5pbml0JiZ0aGlzLmluaXQoKTt0aGlzLmluaXRlZD0hMDsoYT10aGlzLmVsZW1lbnQuZGF0YShcImNrZS13aWRnZXQtZGF0YVwiKSkmJnRoaXMuc2V0RGF0YShKU09OLnBhcnNlKGRlY29kZVVSSUNvbXBvbmVudChhKSkpO2UmJnRoaXMuc2V0RGF0YShlKTt0aGlzLmRhdGEuY2xhc3Nlc3x8dGhpcy5zZXREYXRhKFwiY2xhc3Nlc1wiLHRoaXMuZ2V0Q2xhc3NlcygpKTt0aGlzLmRhdGFSZWFkeT0hMDtaKHRoaXMpO3RoaXMuZmlyZShcImRhdGFcIix0aGlzLmRhdGEpO3RoaXMuaXNJbml0ZWQoKSYmZy5lZGl0YWJsZSgpLmNvbnRhaW5zKHRoaXMud3JhcHBlcikmJih0aGlzLnJlYWR5PSEwLHRoaXMuZmlyZShcInJlYWR5XCIpKX1mdW5jdGlvbiBlKGEsYixjKXtDS0VESVRPUi5kb20uZWxlbWVudC5jYWxsKHRoaXMsYi4kKTt0aGlzLmVkaXRvcj1hO3RoaXMuXz17fTtiPXRoaXMuZmlsdGVyPWMuZmlsdGVyO0NLRURJVE9SLmR0ZFt0aGlzLmdldE5hbWUoKV0ucD9cbih0aGlzLmVudGVyTW9kZT1iP2IuZ2V0QWxsb3dlZEVudGVyTW9kZShhLmVudGVyTW9kZSk6YS5lbnRlck1vZGUsdGhpcy5zaGlmdEVudGVyTW9kZT1iP2IuZ2V0QWxsb3dlZEVudGVyTW9kZShhLnNoaWZ0RW50ZXJNb2RlLCEwKTphLnNoaWZ0RW50ZXJNb2RlKTp0aGlzLmVudGVyTW9kZT10aGlzLnNoaWZ0RW50ZXJNb2RlPUNLRURJVE9SLkVOVEVSX0JSfWZ1bmN0aW9uIGIoYSxiKXthLmFkZENvbW1hbmQoYi5uYW1lLHtleGVjOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gZCgpe2Eud2lkZ2V0cy5maW5hbGl6ZUNyZWF0aW9uKGgpfXZhciBlPWEud2lkZ2V0cy5mb2N1c2VkO2lmKGUmJmUubmFtZT09Yi5uYW1lKWUuZWRpdCgpO2Vsc2UgaWYoYi5pbnNlcnQpYi5pbnNlcnQoe2VkaXRvcjphLGNvbW1hbmREYXRhOmN9KTtlbHNlIGlmKGIudGVtcGxhdGUpe3ZhciBlPVwiZnVuY3Rpb25cIj09dHlwZW9mIGIuZGVmYXVsdHM/Yi5kZWZhdWx0cygpOmIuZGVmYXVsdHMsZT1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbChiLnRlbXBsYXRlLm91dHB1dChlKSxcbmEuZG9jdW1lbnQpLGYsZz1hLndpZGdldHMud3JhcEVsZW1lbnQoZSxiLm5hbWUpLGg9bmV3IENLRURJVE9SLmRvbS5kb2N1bWVudEZyYWdtZW50KGcuZ2V0RG9jdW1lbnQoKSk7aC5hcHBlbmQoZyk7KGY9YS53aWRnZXRzLmluaXRPbihlLGIsYyYmYy5zdGFydHVwRGF0YSkpPyhlPWYub25jZShcImVkaXRcIixmdW5jdGlvbihiKXtpZihiLmRhdGEuZGlhbG9nKWYub25jZShcImRpYWxvZ1wiLGZ1bmN0aW9uKGIpe2I9Yi5kYXRhO3ZhciBjLGU7Yz1iLm9uY2UoXCJva1wiLGQsbnVsbCxudWxsLDIwKTtlPWIub25jZShcImNhbmNlbFwiLGZ1bmN0aW9uKGIpe2IuZGF0YSYmITE9PT1iLmRhdGEuaGlkZXx8YS53aWRnZXRzLmRlc3Ryb3koZiwhMCl9KTtiLm9uY2UoXCJoaWRlXCIsZnVuY3Rpb24oKXtjLnJlbW92ZUxpc3RlbmVyKCk7ZS5yZW1vdmVMaXN0ZW5lcigpfSl9KTtlbHNlIGQoKX0sbnVsbCxudWxsLDk5OSksZi5lZGl0KCksZS5yZW1vdmVMaXN0ZW5lcigpKTpkKCl9fSxhbGxvd2VkQ29udGVudDpiLmFsbG93ZWRDb250ZW50LFxucmVxdWlyZWRDb250ZW50OmIucmVxdWlyZWRDb250ZW50LGNvbnRlbnRGb3JtczpiLmNvbnRlbnRGb3Jtcyxjb250ZW50VHJhbnNmb3JtYXRpb25zOmIuY29udGVudFRyYW5zZm9ybWF0aW9uc30pfWZ1bmN0aW9uIGMoYSxiKXtmdW5jdGlvbiBjKGEsZCl7dmFyIGU9Yi51cGNhc3Quc3BsaXQoXCIsXCIpLGYsZztmb3IoZz0wO2c8ZS5sZW5ndGg7ZysrKWlmKGY9ZVtnXSxmPT09YS5uYW1lKXJldHVybiBiLnVwY2FzdHNbZl0uY2FsbCh0aGlzLGEsZCk7cmV0dXJuITF9ZnVuY3Rpb24gZChiLGMsZSl7dmFyIGY9Q0tFRElUT1IudG9vbHMuZ2V0SW5kZXgoYS5fLnVwY2FzdHMsZnVuY3Rpb24oYSl7cmV0dXJuIGFbMl0+ZX0pOzA+ZiYmKGY9YS5fLnVwY2FzdHMubGVuZ3RoKTthLl8udXBjYXN0cy5zcGxpY2UoZiwwLFtDS0VESVRPUi50b29scy5iaW5kKGIsYyksYy5uYW1lLGVdKX12YXIgZT1iLnVwY2FzdCxmPWIudXBjYXN0UHJpb3JpdHl8fDEwO2UmJihcInN0cmluZ1wiPT10eXBlb2YgZT9kKGMsXG5iLGYpOmQoZSxiLGYpKX1mdW5jdGlvbiBrKGEsYil7YS5mb2N1c2VkPW51bGw7aWYoYi5pc0luaXRlZCgpKXt2YXIgYz1iLmVkaXRvci5jaGVja0RpcnR5KCk7YS5maXJlKFwid2lkZ2V0Qmx1cnJlZFwiLHt3aWRnZXQ6Yn0pO2Iuc2V0Rm9jdXNlZCghMSk7IWMmJmIuZWRpdG9yLnJlc2V0RGlydHkoKX19ZnVuY3Rpb24gbChhKXthPWEuZGF0YTtpZihcInd5c2l3eWdcIj09dGhpcy5lZGl0b3IubW9kZSl7dmFyIGI9dGhpcy5lZGl0b3IuZWRpdGFibGUoKSxjPXRoaXMuaW5zdGFuY2VzLGQsZSxnLGg7aWYoYil7Zm9yKGQgaW4gYyljW2RdLmlzUmVhZHkoKSYmIWIuY29udGFpbnMoY1tkXS53cmFwcGVyKSYmdGhpcy5kZXN0cm95KGNbZF0sITApO2lmKGEmJmEuaW5pdE9ubHlOZXcpYz10aGlzLmluaXRPbkFsbCgpO2Vsc2V7dmFyIGs9Yi5maW5kKFwiLmNrZV93aWRnZXRfd3JhcHBlclwiKSxjPVtdO2Q9MDtmb3IoZT1rLmNvdW50KCk7ZDxlO2QrKyl7Zz1rLmdldEl0ZW0oZCk7aWYoaD0hdGhpcy5nZXRCeUVsZW1lbnQoZyxcbiEwKSl7YTp7aD1wO2Zvcih2YXIgbD1nO2w9bC5nZXRQYXJlbnQoKTspaWYoaChsKSl7aD0hMDticmVhayBhfWg9ITF9aD0haH1oJiZiLmNvbnRhaW5zKGcpJiYoZy5hZGRDbGFzcyhcImNrZV93aWRnZXRfbmV3XCIpLGMucHVzaCh0aGlzLmluaXRPbihnLmdldEZpcnN0KGYuaXNEb21XaWRnZXRFbGVtZW50KSkpKX19YSYmYS5mb2N1c0luaXRlZCYmMT09Yy5sZW5ndGgmJmNbMF0uZm9jdXMoKX19fWZ1bmN0aW9uIG0oYSl7aWYoXCJ1bmRlZmluZWRcIiE9dHlwZW9mIGEuYXR0cmlidXRlcyYmYS5hdHRyaWJ1dGVzW1wiZGF0YS13aWRnZXRcIl0pe3ZhciBiPWQoYSksYz1oKGEpLGU9ITE7YiYmYi52YWx1ZSYmYi52YWx1ZS5tYXRjaCgvXlxccy9nKSYmKGIucGFyZW50LmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aGl0ZS1zcGFjZS1maXJzdFwiXT0xLGIudmFsdWU9Yi52YWx1ZS5yZXBsYWNlKC9eXFxzL2csXCJcXHgyNm5ic3A7XCIpLGU9ITApO2MmJmMudmFsdWUmJmMudmFsdWUubWF0Y2goL1xccyQvZykmJihjLnBhcmVudC5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utd2hpdGUtc3BhY2UtbGFzdFwiXT1cbjEsYy52YWx1ZT1jLnZhbHVlLnJlcGxhY2UoL1xccyQvZyxcIlxceDI2bmJzcDtcIiksZT0hMCk7ZSYmKGEuYXR0cmlidXRlc1tcImRhdGEtY2tlLXdpZGdldC13aGl0ZS1zcGFjZVwiXT0xKX19ZnVuY3Rpb24gZChhKXtyZXR1cm4gYS5maW5kKGZ1bmN0aW9uKGEpe3JldHVybiAzPT09YS50eXBlfSwhMCkuc2hpZnQoKX1mdW5jdGlvbiBoKGEpe3JldHVybiBhLmZpbmQoZnVuY3Rpb24oYSl7cmV0dXJuIDM9PT1hLnR5cGV9LCEwKS5wb3AoKX1mdW5jdGlvbiBnKGEsYixjKXtpZighYy5hbGxvd2VkQ29udGVudCYmIWMuZGlzYWxsb3dlZENvbnRlbnQpcmV0dXJuIG51bGw7dmFyIGQ9dGhpcy5fLmZpbHRlcnNbYV07ZHx8KHRoaXMuXy5maWx0ZXJzW2FdPWQ9e30pO2E9ZFtiXTthfHwoYT1jLmFsbG93ZWRDb250ZW50P25ldyBDS0VESVRPUi5maWx0ZXIoYy5hbGxvd2VkQ29udGVudCk6dGhpcy5lZGl0b3IuZmlsdGVyLmNsb25lKCksZFtiXT1hLGMuZGlzYWxsb3dlZENvbnRlbnQmJmEuZGlzYWxsb3coYy5kaXNhbGxvd2VkQ29udGVudCkpO1xucmV0dXJuIGF9ZnVuY3Rpb24gbihhKXt2YXIgYj1bXSxjPWEuXy51cGNhc3RzLGQ9YS5fLnVwY2FzdENhbGxiYWNrcztyZXR1cm57dG9CZVdyYXBwZWQ6YixpdGVyYXRvcjpmdW5jdGlvbihhKXt2YXIgZSxnLGgsayxsO2lmKFwiZGF0YS1ja2Utd2lkZ2V0LXdyYXBwZXJcImluIGEuYXR0cmlidXRlcylyZXR1cm4oYT1hLmdldEZpcnN0KGYuaXNQYXJzZXJXaWRnZXRFbGVtZW50KSkmJmIucHVzaChbYV0pLCExO2lmKFwiZGF0YS13aWRnZXRcImluIGEuYXR0cmlidXRlcylyZXR1cm4gYi5wdXNoKFthXSksITE7aWYobD1jLmxlbmd0aCl7aWYoYS5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utd2lkZ2V0LXVwY2FzdGVkXCJdKXJldHVybiExO2s9MDtmb3IoZT1kLmxlbmd0aDtrPGU7KytrKWlmKCExPT09ZFtrXShhKSlyZXR1cm47Zm9yKGs9MDtrPGw7KytrKWlmKGU9Y1trXSxoPXt9LGc9ZVswXShhLGgpKXJldHVybiBnIGluc3RhbmNlb2YgQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50JiYoYT1nKSxhLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aWRnZXQtZGF0YVwiXT1cbmVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShoKSksYS5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utd2lkZ2V0LXVwY2FzdGVkXCJdPTEsYi5wdXNoKFthLGVbMV1dKSwhMX19fX1mdW5jdGlvbiB3KGEsYil7cmV0dXJue3RhYmluZGV4Oi0xLGNvbnRlbnRlZGl0YWJsZTpcImZhbHNlXCIsXCJkYXRhLWNrZS13aWRnZXQtd3JhcHBlclwiOjEsXCJkYXRhLWNrZS1maWx0ZXJcIjpcIm9mZlwiLFwiY2xhc3NcIjpcImNrZV93aWRnZXRfd3JhcHBlciBja2Vfd2lkZ2V0X25ldyBja2Vfd2lkZ2V0X1wiKyhhP1wiaW5saW5lXCI6XCJibG9ja1wiKSsoYj9cIiBja2Vfd2lkZ2V0X1wiK2I6XCJcIil9fWZ1bmN0aW9uIHgoYSxiLGMpe2lmKGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UKXt2YXIgZD1DS0VESVRPUi5kdGRbYS5uYW1lXTtpZihkJiYhZFtjLm5hbWVdKXt2YXIgZD1hLnNwbGl0KGIpLGU9YS5wYXJlbnQ7Yj1kLmdldEluZGV4KCk7YS5jaGlsZHJlbi5sZW5ndGh8fCgtLWIsYS5yZW1vdmUoKSk7ZC5jaGlsZHJlbi5sZW5ndGh8fFxuZC5yZW1vdmUoKTtyZXR1cm4geChlLGIsYyl9fWEuYWRkKGMsYil9ZnVuY3Rpb24gcihhLGIpe3JldHVyblwiYm9vbGVhblwiPT10eXBlb2YgYS5pbmxpbmU/YS5pbmxpbmU6ISFDS0VESVRPUi5kdGQuJGlubGluZVtiXX1mdW5jdGlvbiBwKGEpe3JldHVybiBhLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXRlbXBcIil9ZnVuY3Rpb24gdShhLGIsYyxkKXt2YXIgZT1hLmVkaXRvcjtlLmZpcmUoXCJsb2NrU25hcHNob3RcIik7Yz8oZD1jLmRhdGEoXCJja2Utd2lkZ2V0LWVkaXRhYmxlXCIpLGQ9Yi5lZGl0YWJsZXNbZF0sYS53aWRnZXRIb2xkaW5nRm9jdXNlZEVkaXRhYmxlPWIsYi5mb2N1c2VkRWRpdGFibGU9ZCxjLmFkZENsYXNzKFwiY2tlX3dpZGdldF9lZGl0YWJsZV9mb2N1c2VkXCIpLGQuZmlsdGVyJiZlLnNldEFjdGl2ZUZpbHRlcihkLmZpbHRlciksZS5zZXRBY3RpdmVFbnRlck1vZGUoZC5lbnRlck1vZGUsZC5zaGlmdEVudGVyTW9kZSkpOihkfHxiLmZvY3VzZWRFZGl0YWJsZS5yZW1vdmVDbGFzcyhcImNrZV93aWRnZXRfZWRpdGFibGVfZm9jdXNlZFwiKSxcbmIuZm9jdXNlZEVkaXRhYmxlPW51bGwsYS53aWRnZXRIb2xkaW5nRm9jdXNlZEVkaXRhYmxlPW51bGwsZS5zZXRBY3RpdmVGaWx0ZXIobnVsbCksZS5zZXRBY3RpdmVFbnRlck1vZGUobnVsbCxudWxsKSk7ZS5maXJlKFwidW5sb2NrU25hcHNob3RcIil9ZnVuY3Rpb24geihhKXthLmNvbnRleHRNZW51JiZhLmNvbnRleHRNZW51LmFkZExpc3RlbmVyKGZ1bmN0aW9uKGIpe2lmKGI9YS53aWRnZXRzLmdldEJ5RWxlbWVudChiLCEwKSlyZXR1cm4gYi5maXJlKFwiY29udGV4dE1lbnVcIix7fSl9KX1mdW5jdGlvbiBxKGEsYil7cmV0dXJuIENLRURJVE9SLnRvb2xzLnRyaW0oYil9ZnVuY3Rpb24gQShhKXt2YXIgYj1hLmVkaXRvcixjPUNLRURJVE9SLnBsdWdpbnMubGluZXV0aWxzO2Iub24oXCJkcmFnc3RhcnRcIixmdW5jdGlvbihjKXt2YXIgZD1jLmRhdGEudGFyZ2V0O2YuaXNEb21EcmFnSGFuZGxlcihkKSYmKGQ9YS5nZXRCeUVsZW1lbnQoZCksYy5kYXRhLmRhdGFUcmFuc2Zlci5zZXREYXRhKFwiY2tlL3dpZGdldC1pZFwiLFxuZC5pZCksYi5mb2N1cygpLGQuZm9jdXMoKSl9KTtiLm9uKFwiZHJvcFwiLGZ1bmN0aW9uKGMpe2Z1bmN0aW9uIGQoYSxiKXtyZXR1cm4gYSYmYj9hLndyYXBwZXIuZXF1YWxzKGIud3JhcHBlcil8fGEud3JhcHBlci5jb250YWlucyhiLndyYXBwZXIpOiExfXZhciBlPWMuZGF0YS5kYXRhVHJhbnNmZXIsZj1lLmdldERhdGEoXCJja2Uvd2lkZ2V0LWlkXCIpLGc9ZS5nZXRUcmFuc2ZlclR5cGUoYiksZT1iLmNyZWF0ZVJhbmdlKCksaD1mdW5jdGlvbihhKXthPWEuZ2V0Qm91bmRhcnlOb2RlcygpLnN0YXJ0Tm9kZTthLnR5cGUhPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJihhPWEuZ2V0UGFyZW50KCkpO3JldHVybiBiLndpZGdldHMuZ2V0QnlFbGVtZW50KGEpfShjLmRhdGEuZHJvcFJhbmdlKTtpZihcIlwiIT09ZiYmZz09PUNLRURJVE9SLkRBVEFfVFJBTlNGRVJfQ1JPU1NfRURJVE9SUyljLmNhbmNlbCgpO2Vsc2UgaWYoZz09Q0tFRElUT1IuREFUQV9UUkFOU0ZFUl9JTlRFUk5BTClpZihcIlwiPT09XG5mJiYwPGIud2lkZ2V0cy5zZWxlY3RlZC5sZW5ndGgpYy5kYXRhLmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9odG1sXCIsTihiKSk7ZWxzZSBpZihmPWEuaW5zdGFuY2VzW2ZdKWQoZixoKT9jLmNhbmNlbCgpOihlLnNldFN0YXJ0QmVmb3JlKGYud3JhcHBlciksZS5zZXRFbmRBZnRlcihmLndyYXBwZXIpLGMuZGF0YS5kcmFnUmFuZ2U9ZSxkZWxldGUgQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZHJhZ1N0YXJ0Q29udGFpbmVyQ2hpbGRDb3VudCxkZWxldGUgQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuZHJhZ0VuZENvbnRhaW5lckNoaWxkQ291bnQsYy5kYXRhLmRhdGFUcmFuc2Zlci5zZXREYXRhKFwidGV4dC9odG1sXCIsZi5nZXRDbGlwYm9hcmRIdG1sKCkpLGIud2lkZ2V0cy5kZXN0cm95KGYsITApKX0pO2Iub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXt2YXIgZD1iLmVkaXRhYmxlKCk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKGEse2ZpbmRlcjpuZXcgYy5maW5kZXIoYixcbntsb29rdXBzOntcImRlZmF1bHRcIjpmdW5jdGlvbihiKXtpZighYi5pcyhDS0VESVRPUi5kdGQuJGxpc3RJdGVtKSYmYi5pcyhDS0VESVRPUi5kdGQuJGJsb2NrKSYmIWYuaXNEb21OZXN0ZWRFZGl0YWJsZShiKSYmIWEuXy5kcmFnZ2VkV2lkZ2V0LndyYXBwZXIuY29udGFpbnMoYikpe3ZhciBjPWYuZ2V0TmVzdGVkRWRpdGFibGUoZCxiKTtpZihjKXtiPWEuXy5kcmFnZ2VkV2lkZ2V0O2lmKGEuZ2V0QnlFbGVtZW50KGMpPT1iKXJldHVybjtjPUNLRURJVE9SLmZpbHRlci5pbnN0YW5jZXNbYy5kYXRhKFwiY2tlLWZpbHRlclwiKV07Yj1iLnJlcXVpcmVkQ29udGVudDtpZihjJiZiJiYhYy5jaGVjayhiKSlyZXR1cm59cmV0dXJuIENLRURJVE9SLkxJTkVVVElMU19CRUZPUkV8Q0tFRElUT1IuTElORVVUSUxTX0FGVEVSfX19fSksbG9jYXRvcjpuZXcgYy5sb2NhdG9yKGIpLGxpbmVyOm5ldyBjLmxpbmVyKGIse2xpbmVTdHlsZTp7Y3Vyc29yOlwibW92ZSAhaW1wb3J0YW50XCIsXCJib3JkZXItdG9wLWNvbG9yXCI6XCIjNjY2XCJ9LFxudGlwTGVmdFN0eWxlOntcImJvcmRlci1sZWZ0LWNvbG9yXCI6XCIjNjY2XCJ9LHRpcFJpZ2h0U3R5bGU6e1wiYm9yZGVyLXJpZ2h0LWNvbG9yXCI6XCIjNjY2XCJ9fSl9LCEwKX0pfWZ1bmN0aW9uIHkoYSl7dmFyIGI9YS5lZGl0b3I7Yi5vbihcImNvbnRlbnREb21cIixmdW5jdGlvbigpe3ZhciBjPWIuZWRpdGFibGUoKSxkPWMuaXNJbmxpbmUoKT9jOmIuZG9jdW1lbnQsZSxnO2MuYXR0YWNoTGlzdGVuZXIoZCxcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGMpe3ZhciBkPWMuZGF0YS5nZXRUYXJnZXQoKTtlPWQgaW5zdGFuY2VvZiBDS0VESVRPUi5kb20uZWxlbWVudD9hLmdldEJ5RWxlbWVudChkKTpudWxsO2c9MDtlJiYoZS5pbmxpbmUmJmQudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZkLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXdpZGdldC1kcmFnLWhhbmRsZXJcIik/KGc9MSxhLmZvY3VzZWQhPWUmJmIuZ2V0U2VsZWN0aW9uKCkucmVtb3ZlQWxsUmFuZ2VzKCkpOmYuZ2V0TmVzdGVkRWRpdGFibGUoZS53cmFwcGVyLFxuZCk/ZT1udWxsOihjLmRhdGEucHJldmVudERlZmF1bHQoKSxDS0VESVRPUi5lbnYuaWV8fGUuZm9jdXMoKSkpfSk7Yy5hdHRhY2hMaXN0ZW5lcihkLFwibW91c2V1cFwiLGZ1bmN0aW9uKCl7ZyYmZSYmZS53cmFwcGVyJiYoZz0wLGUuZm9jdXMoKSl9KTtDS0VESVRPUi5lbnYuaWUmJmMuYXR0YWNoTGlzdGVuZXIoZCxcIm1vdXNldXBcIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlJiZlLndyYXBwZXImJmMuY29udGFpbnMoZS53cmFwcGVyKSYmKGUuZm9jdXMoKSxlPW51bGwpfSl9KX0pO2Iub24oXCJkb3VibGVjbGlja1wiLGZ1bmN0aW9uKGIpe3ZhciBjPWEuZ2V0QnlFbGVtZW50KGIuZGF0YS5lbGVtZW50KTtpZihjJiYhZi5nZXROZXN0ZWRFZGl0YWJsZShjLndyYXBwZXIsYi5kYXRhLmVsZW1lbnQpKXJldHVybiBjLmZpcmUoXCJkb3VibGVjbGlja1wiLHtlbGVtZW50OmIuZGF0YS5lbGVtZW50fSl9LG51bGwsbnVsbCwxKX1mdW5jdGlvbiB0KGEpe2EuZWRpdG9yLm9uKFwia2V5XCIsXG5mdW5jdGlvbihiKXt2YXIgYz1hLmZvY3VzZWQsZD1hLndpZGdldEhvbGRpbmdGb2N1c2VkRWRpdGFibGUsZTtjP2U9Yy5maXJlKFwia2V5XCIse2tleUNvZGU6Yi5kYXRhLmtleUNvZGV9KTpkJiYoYz1iLmRhdGEua2V5Q29kZSxiPWQuZm9jdXNlZEVkaXRhYmxlLGM9PUNLRURJVE9SLkNUUkwrNjU/KGM9Yi5nZXRCb2d1cygpLGQ9ZC5lZGl0b3IuY3JlYXRlUmFuZ2UoKSxkLnNlbGVjdE5vZGVDb250ZW50cyhiKSxjJiZkLnNldEVuZEF0KGMsQ0tFRElUT1IuUE9TSVRJT05fQkVGT1JFX1NUQVJUKSxkLnNlbGVjdCgpLGU9ITEpOjg9PWN8fDQ2PT1jPyhlPWQuZWRpdG9yLmdldFNlbGVjdGlvbigpLmdldFJhbmdlcygpLGQ9ZVswXSxlPSEoMT09ZS5sZW5ndGgmJmQuY29sbGFwc2VkJiZkLmNoZWNrQm91bmRhcnlPZkVsZW1lbnQoYixDS0VESVRPUls4PT1jP1wiU1RBUlRcIjpcIkVORFwiXSkpKTplPXZvaWQgMCk7cmV0dXJuIGV9LG51bGwsbnVsbCwxKX1mdW5jdGlvbiB2KGEpe2Z1bmN0aW9uIGIoZCl7MT5cbmEuc2VsZWN0ZWQubGVuZ3RofHxIKGMsXCJjdXRcIj09PWQubmFtZSl9dmFyIGM9YS5lZGl0b3I7Yy5vbihcImNvbnRlbnREb21cIixmdW5jdGlvbigpe3ZhciBhPWMuZWRpdGFibGUoKTthLmF0dGFjaExpc3RlbmVyKGEsXCJjb3B5XCIsYik7YS5hdHRhY2hMaXN0ZW5lcihhLFwiY3V0XCIsYil9KX1mdW5jdGlvbiBCKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYT1lLmdldFNlbGVjdGlvbigpO2lmKGEmJihhPWEuZ2V0UmFuZ2VzKClbMF0pJiYhYS5jb2xsYXBzZWQpe3ZhciBkPWMoYS5zdGFydENvbnRhaW5lciksZj1jKGEuZW5kQ29udGFpbmVyKTshZCYmZj8oYS5zZXRFbmRCZWZvcmUoZi53cmFwcGVyKSxhLnNlbGVjdCgpKTpkJiYhZiYmKGEuc2V0U3RhcnRBZnRlcihkLndyYXBwZXIpLGEuc2VsZWN0KCkpfX1mdW5jdGlvbiBjKGEpe3JldHVybiBhP2EudHlwZT09Q0tFRElUT1IuTk9ERV9URVhUP2MoYS5nZXRQYXJlbnQoKSk6ZS53aWRnZXRzLmdldEJ5RWxlbWVudChhKTpudWxsfWZ1bmN0aW9uIGQoKXthLmZpcmUoXCJjaGVja1NlbGVjdGlvblwiKX1cbnZhciBlPWEuZWRpdG9yO2Uub24oXCJzZWxlY3Rpb25DaGVja1wiLGQpO2Uub24oXCJjb250ZW50RG9tXCIsZnVuY3Rpb24oKXtlLmVkaXRhYmxlKCkuYXR0YWNoTGlzdGVuZXIoZSxcImtleVwiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChkLDEwKX0pfSk7aWYoIUNLRURJVE9SLmVudi5pZSlhLm9uKFwiY2hlY2tTZWxlY3Rpb25cIixiKTthLm9uKFwiY2hlY2tTZWxlY3Rpb25cIixhLmNoZWNrU2VsZWN0aW9uLGEpO2Uub24oXCJzZWxlY3Rpb25DaGFuZ2VcIixmdW5jdGlvbihiKXt2YXIgYz0oYj1mLmdldE5lc3RlZEVkaXRhYmxlKGUuZWRpdGFibGUoKSxiLmRhdGEuc2VsZWN0aW9uLmdldFN0YXJ0RWxlbWVudCgpKSkmJmEuZ2V0QnlFbGVtZW50KGIpLGQ9YS53aWRnZXRIb2xkaW5nRm9jdXNlZEVkaXRhYmxlO2Q/ZD09PWMmJmQuZm9jdXNlZEVkaXRhYmxlLmVxdWFscyhiKXx8KHUoYSxkLG51bGwpLGMmJmImJnUoYSxjLGIpKTpjJiZiJiZ1KGEsYyxiKX0pO2Uub24oXCJkYXRhUmVhZHlcIixmdW5jdGlvbigpe0YoYSkuY29tbWl0KCl9KTtcbmUub24oXCJibHVyXCIsZnVuY3Rpb24oKXt2YXIgYjsoYj1hLmZvY3VzZWQpJiZrKGEsYik7KGI9YS53aWRnZXRIb2xkaW5nRm9jdXNlZEVkaXRhYmxlKSYmdShhLGIsbnVsbCl9KX1mdW5jdGlvbiBEKGEpe3ZhciBiPWEuZWRpdG9yLGM9e307Yi5vbihcInRvRGF0YUZvcm1hdFwiLGZ1bmN0aW9uKGIpe3ZhciBlPUNLRURJVE9SLnRvb2xzLmdldE5leHROdW1iZXIoKSxnPVtdO2IuZGF0YS5kb3duY2FzdGluZ1Nlc3Npb25JZD1lO2NbZV09ZztiLmRhdGEuZGF0YVZhbHVlLmZvckVhY2goZnVuY3Rpb24oYil7dmFyIGM9Yi5hdHRyaWJ1dGVzLGU7aWYoXCJkYXRhLWNrZS13aWRnZXQtd2hpdGUtc3BhY2VcImluIGMpe2U9ZChiKTt2YXIgaz1oKGIpO2UucGFyZW50LmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aGl0ZS1zcGFjZS1maXJzdFwiXSYmKGUudmFsdWU9ZS52YWx1ZS5yZXBsYWNlKC9eJm5ic3A7L2csXCIgXCIpKTtrLnBhcmVudC5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utd2hpdGUtc3BhY2UtbGFzdFwiXSYmXG4oay52YWx1ZT1rLnZhbHVlLnJlcGxhY2UoLyZuYnNwOyQvZyxcIiBcIikpfWlmKFwiZGF0YS1ja2Utd2lkZ2V0LWlkXCJpbiBjKXtpZihjPWEuaW5zdGFuY2VzW2NbXCJkYXRhLWNrZS13aWRnZXQtaWRcIl1dKWU9Yi5nZXRGaXJzdChmLmlzUGFyc2VyV2lkZ2V0RWxlbWVudCksZy5wdXNoKHt3cmFwcGVyOmIsZWxlbWVudDplLHdpZGdldDpjLGVkaXRhYmxlczp7fX0pLFwiMVwiIT1lLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aWRnZXQta2VlcC1hdHRyXCJdJiZkZWxldGUgZS5hdHRyaWJ1dGVzW1wiZGF0YS13aWRnZXRcIl19ZWxzZSBpZihcImRhdGEtY2tlLXdpZGdldC1lZGl0YWJsZVwiaW4gYylyZXR1cm4gMDxnLmxlbmd0aCYmKGdbZy5sZW5ndGgtMV0uZWRpdGFibGVzW2NbXCJkYXRhLWNrZS13aWRnZXQtZWRpdGFibGVcIl1dPWIpLCExfSxDS0VESVRPUi5OT0RFX0VMRU1FTlQsITApfSxudWxsLG51bGwsOCk7Yi5vbihcInRvRGF0YUZvcm1hdFwiLGZ1bmN0aW9uKGEpe2lmKGEuZGF0YS5kb3duY2FzdGluZ1Nlc3Npb25JZClmb3IodmFyIGI9XG5jW2EuZGF0YS5kb3duY2FzdGluZ1Nlc3Npb25JZF0sZCxlLGYsZyxoLGs7ZD1iLnNoaWZ0KCk7KXtlPWQud2lkZ2V0O2Y9ZC5lbGVtZW50O2c9ZS5fLmRvd25jYXN0Rm4mJmUuXy5kb3duY2FzdEZuLmNhbGwoZSxmKTthLmRhdGEud2lkZ2V0c0NvcHkmJmUuZ2V0Q2xpcGJvYXJkSHRtbCYmKGc9Q0tFRElUT1IuaHRtbFBhcnNlci5mcmFnbWVudC5mcm9tSHRtbChlLmdldENsaXBib2FyZEh0bWwoKSksZz1nLmNoaWxkcmVuWzBdKTtmb3IoayBpbiBkLmVkaXRhYmxlcyloPWQuZWRpdGFibGVzW2tdLGRlbGV0ZSBoLmF0dHJpYnV0ZXMuY29udGVudGVkaXRhYmxlLGguc2V0SHRtbChlLmVkaXRhYmxlc1trXS5nZXREYXRhKCkpO2d8fChnPWYpO2Qud3JhcHBlci5yZXBsYWNlV2l0aChnKX19LG51bGwsbnVsbCwxMyk7Yi5vbihcImNvbnRlbnREb21VbmxvYWRcIixmdW5jdGlvbigpe2EuZGVzdHJveUFsbCghMCl9KX1mdW5jdGlvbiBDKGEpe3ZhciBiPWEuZWRpdG9yLGMsZDtiLm9uKFwidG9IdG1sXCIsXG5mdW5jdGlvbihiKXt2YXIgZD1uKGEpLGU7Zm9yKGIuZGF0YS5kYXRhVmFsdWUuZm9yRWFjaChkLml0ZXJhdG9yLENLRURJVE9SLk5PREVfRUxFTUVOVCwhMCk7ZT1kLnRvQmVXcmFwcGVkLnBvcCgpOyl7dmFyIGc9ZVswXSxoPWcucGFyZW50O2gudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZoLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aWRnZXQtd3JhcHBlclwiXSYmaC5yZXBsYWNlV2l0aChnKTthLndyYXBFbGVtZW50KGVbMF0sZVsxXSl9Yz1iLmRhdGEucHJvdGVjdGVkV2hpdGVzcGFjZXM/Mz09Yi5kYXRhLmRhdGFWYWx1ZS5jaGlsZHJlbi5sZW5ndGgmJmYuaXNQYXJzZXJXaWRnZXRXcmFwcGVyKGIuZGF0YS5kYXRhVmFsdWUuY2hpbGRyZW5bMV0pOjE9PWIuZGF0YS5kYXRhVmFsdWUuY2hpbGRyZW4ubGVuZ3RoJiZmLmlzUGFyc2VyV2lkZ2V0V3JhcHBlcihiLmRhdGEuZGF0YVZhbHVlLmNoaWxkcmVuWzBdKX0sbnVsbCxudWxsLDgpO2Iub24oXCJkYXRhUmVhZHlcIixmdW5jdGlvbigpe2lmKGQpZm9yKHZhciBjPVxuYi5lZGl0YWJsZSgpLmZpbmQoXCIuY2tlX3dpZGdldF93cmFwcGVyXCIpLGUsZyxoPTAsaz1jLmNvdW50KCk7aDxrOysraCllPWMuZ2V0SXRlbShoKSxnPWUuZ2V0Rmlyc3QoZi5pc0RvbVdpZGdldEVsZW1lbnQpLGcudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZnLmRhdGEoXCJ3aWRnZXRcIik/KGcucmVwbGFjZShlKSxhLndyYXBFbGVtZW50KGcpKTplLnJlbW92ZSgpO2Q9MDthLmRlc3Ryb3lBbGwoITApO2EuaW5pdE9uQWxsKCl9KTtiLm9uKFwibG9hZFNuYXBzaG90XCIsZnVuY3Rpb24oYil7L2RhdGEtY2tlLXdpZGdldC8udGVzdChiLmRhdGEpJiYoZD0xKTthLmRlc3Ryb3lBbGwoITApfSxudWxsLG51bGwsOSk7Yi5vbihcInBhc3RlXCIsZnVuY3Rpb24oYSl7YT1hLmRhdGE7YS5kYXRhVmFsdWU9YS5kYXRhVmFsdWUucmVwbGFjZShjYSxxKTthLnJhbmdlJiYoYT1mLmdldE5lc3RlZEVkaXRhYmxlKGIuZWRpdGFibGUoKSxhLnJhbmdlLnN0YXJ0Q29udGFpbmVyKSkmJihhPUNLRURJVE9SLmZpbHRlci5pbnN0YW5jZXNbYS5kYXRhKFwiY2tlLWZpbHRlclwiKV0pJiZcbmIuc2V0QWN0aXZlRmlsdGVyKGEpfSk7Yi5vbihcImFmdGVySW5zZXJ0SHRtbFwiLGZ1bmN0aW9uKGQpe2QuZGF0YS5pbnRvUmFuZ2U/YS5jaGVja1dpZGdldHMoe2luaXRPbmx5TmV3OiEwfSk6KGIuZmlyZShcImxvY2tTbmFwc2hvdFwiKSxhLmNoZWNrV2lkZ2V0cyh7aW5pdE9ubHlOZXc6ITAsZm9jdXNJbml0ZWQ6Y30pLGIuZmlyZShcInVubG9ja1NuYXBzaG90XCIpKX0pfWZ1bmN0aW9uIEYoYSl7dmFyIGI9YS5zZWxlY3RlZCxjPVtdLGQ9Yi5zbGljZSgwKSxlPW51bGw7cmV0dXJue3NlbGVjdDpmdW5jdGlvbihhKXswPkNLRURJVE9SLnRvb2xzLmluZGV4T2YoYixhKSYmYy5wdXNoKGEpO2E9Q0tFRElUT1IudG9vbHMuaW5kZXhPZihkLGEpOzA8PWEmJmQuc3BsaWNlKGEsMSk7cmV0dXJuIHRoaXN9LGZvY3VzOmZ1bmN0aW9uKGEpe2U9YTtyZXR1cm4gdGhpc30sY29tbWl0OmZ1bmN0aW9uKCl7dmFyIGY9YS5mb2N1c2VkIT09ZSxnLGg7YS5lZGl0b3IuZmlyZShcImxvY2tTbmFwc2hvdFwiKTtmb3IoZiYmXG4oZz1hLmZvY3VzZWQpJiZrKGEsZyk7Zz1kLnBvcCgpOyliLnNwbGljZShDS0VESVRPUi50b29scy5pbmRleE9mKGIsZyksMSksZy5pc0luaXRlZCgpJiYoaD1nLmVkaXRvci5jaGVja0RpcnR5KCksZy5zZXRTZWxlY3RlZCghMSksIWgmJmcuZWRpdG9yLnJlc2V0RGlydHkoKSk7ZiYmZSYmKGg9YS5lZGl0b3IuY2hlY2tEaXJ0eSgpLGEuZm9jdXNlZD1lLGEuZmlyZShcIndpZGdldEZvY3VzZWRcIix7d2lkZ2V0OmV9KSxlLnNldEZvY3VzZWQoITApLCFoJiZhLmVkaXRvci5yZXNldERpcnR5KCkpO2Zvcig7Zz1jLnBvcCgpOyliLnB1c2goZyksZy5zZXRTZWxlY3RlZCghMCk7YS5lZGl0b3IuZmlyZShcInVubG9ja1NuYXBzaG90XCIpfX19ZnVuY3Rpb24gSihhKXthJiZhLmFkZEZpbHRlclJ1bGUoZnVuY3Rpb24oYSl7cmV0dXJuIGEucmVwbGFjZSgvXFxzKmNrZV93aWRnZXRfc2VsZWN0ZWQvZyxcIlwiKS5yZXBsYWNlKC9cXHMqY2tlX3dpZGdldF9mb2N1c2VkL2csXCJcIil9KX1mdW5jdGlvbiBLKGEsXG5iLGMpe3ZhciBkPTA7Yj1FKGIpO3ZhciBlPWEuZGF0YS5jbGFzc2VzfHx7fSxmO2lmKGIpe2ZvcihlPUNLRURJVE9SLnRvb2xzLmNsb25lKGUpO2Y9Yi5wb3AoKTspYz9lW2ZdfHwoZD1lW2ZdPTEpOmVbZl0mJihkZWxldGUgZVtmXSxkPTEpO2QmJmEuc2V0RGF0YShcImNsYXNzZXNcIixlKX19ZnVuY3Rpb24gRyhhKXthLmNhbmNlbCgpfWZ1bmN0aW9uIE0oYSxiKXt2YXIgYz1mdW5jdGlvbihhKXtyZXR1cm4gYT09Q0tFRElUT1IuRU5URVJfQlI/XCJiclwiOmE9PUNLRURJVE9SLkVOVEVSX0RJVj9cImRpdlwiOlwicFwifShhLmVkaXRvci5jb25maWcuZW50ZXJNb2RlKSxkPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChjKTtcImJyXCIhPT1jJiZkLmFwcGVuZEJvZ3VzKCk7XCJhZnRlclwiPT09Yj9kLmluc2VydEFmdGVyKGEud3JhcHBlcik6ZC5pbnNlcnRCZWZvcmUoYS53cmFwcGVyKTsoZnVuY3Rpb24oYil7dmFyIGM9YS5lZGl0b3IuY3JlYXRlUmFuZ2UoKTtjLnNldFN0YXJ0KGIsMCk7YS5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0UmFuZ2VzKFtjXSl9KShkKX1cbmZ1bmN0aW9uIEgoYSxiKXt2YXIgYz1hLndpZGdldHMuZm9jdXNlZCxkLGUsZjtRLmhhc0NvcHlCaW4oYSl8fChlPW5ldyBRKGEse2JlZm9yZURlc3Ryb3k6ZnVuY3Rpb24oKXshYiYmYyYmYy5mb2N1cygpO2YmJmEuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0Qm9va21hcmtzKGYpO2QmJkNLRURJVE9SLnBsdWdpbnMud2lkZ2V0c2VsZWN0aW9uLmFkZEZpbGxlcnMoYS5lZGl0YWJsZSgpKX0sYWZ0ZXJEZXN0cm95OmZ1bmN0aW9uKCl7YiYmIWEucmVhZE9ubHkmJihjP2Eud2lkZ2V0cy5kZWwoYyk6YS5leHRyYWN0U2VsZWN0ZWRIdG1sKCksYS5maXJlKFwic2F2ZVNuYXBzaG90XCIpKX19KSxjfHwoZD1DS0VESVRPUi5lbnYud2Via2l0JiZDS0VESVRPUi5wbHVnaW5zLndpZGdldHNlbGVjdGlvbi5pc1dob2xlQ29udGVudFNlbGVjdGVkKGEuZWRpdGFibGUoKSksZj1hLmdldFNlbGVjdGlvbigpLmNyZWF0ZUJvb2ttYXJrcyghMCkpLGUuaGFuZGxlKE4oYSkpKX1mdW5jdGlvbiBFKGEpe3JldHVybihhPVxuKGE9YS5nZXREZWZpbml0aW9uKCkuYXR0cmlidXRlcykmJmFbXCJjbGFzc1wiXSk/YS5zcGxpdCgvXFxzKy8pOm51bGx9ZnVuY3Rpb24gUCgpe3ZhciBhPUNLRURJVE9SLmRvY3VtZW50LmdldEFjdGl2ZSgpLGI9dGhpcy5lZGl0b3IsYz1iLmVkaXRhYmxlKCk7KGMuaXNJbmxpbmUoKT9jOmIuZG9jdW1lbnQuZ2V0V2luZG93KCkuZ2V0RnJhbWUoKSkuZXF1YWxzKGEpJiZiLmZvY3VzTWFuYWdlci5mb2N1cyhjKX1mdW5jdGlvbiBMKCl7Q0tFRElUT1IuZW52LmdlY2tvJiZ0aGlzLmVkaXRvci51bmxvY2tTZWxlY3Rpb24oKTtDS0VESVRPUi5lbnYud2Via2l0fHwodGhpcy5lZGl0b3IuZm9yY2VOZXh0U2VsZWN0aW9uQ2hlY2soKSx0aGlzLmVkaXRvci5zZWxlY3Rpb25DaGFuZ2UoMSkpfWZ1bmN0aW9uIE4oYSl7dmFyIGI9YS5nZXRTZWxlY3RlZEh0bWwoITApO2lmKGEud2lkZ2V0cy5mb2N1c2VkKXJldHVybiBhLndpZGdldHMuZm9jdXNlZC5nZXRDbGlwYm9hcmRIdG1sKCk7YS5vbmNlKFwidG9EYXRhRm9ybWF0XCIsXG5mdW5jdGlvbihhKXthLmRhdGEud2lkZ2V0c0NvcHk9ITB9LG51bGwsbnVsbCwtMSk7cmV0dXJuIGEuZGF0YVByb2Nlc3Nvci50b0RhdGFGb3JtYXQoYil9ZnVuY3Rpb24gTyhhLGIpe3ZhciBjPWEuZWRpdG9yLmNvbmZpZy53aWRnZXRfa2V5c3Ryb2tlSW5zZXJ0TGluZUJlZm9yZSxkPWEuZWRpdG9yLmNvbmZpZy53aWRnZXRfa2V5c3Ryb2tlSW5zZXJ0TGluZUFmdGVyO1goYSk7UyhhKTtZKGEpO2VhKGEpO2phKGEpO2thKGEpO1QoYSk7aWYoQ0tFRElUT1IuZW52LmllJiY5PkNLRURJVE9SLmVudi52ZXJzaW9uKWEud3JhcHBlci5vbihcImRyYWdzdGFydFwiLGZ1bmN0aW9uKGIpe3ZhciBjPWIuZGF0YS5nZXRUYXJnZXQoKTtmLmdldE5lc3RlZEVkaXRhYmxlKGEsYyl8fGEuaW5saW5lJiZmLmlzRG9tRHJhZ0hhbmRsZXIoYyl8fGIuZGF0YS5wcmV2ZW50RGVmYXVsdCgpfSk7YS53cmFwcGVyLnJlbW92ZUNsYXNzKFwiY2tlX3dpZGdldF9uZXdcIik7YS5lbGVtZW50LmFkZENsYXNzKFwiY2tlX3dpZGdldF9lbGVtZW50XCIpO1xuYS5vbihcImtleVwiLGZ1bmN0aW9uKGIpe2I9Yi5kYXRhLmtleUNvZGU7aWYoYj09YylNKGEsXCJiZWZvcmVcIiksYS5lZGl0b3IuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtlbHNlIGlmKGI9PWQpTShhLFwiYWZ0ZXJcIiksYS5lZGl0b3IuZmlyZShcInNhdmVTbmFwc2hvdFwiKTtlbHNlIGlmKDEzPT1iKWEuZWRpdCgpO2Vsc2V7aWYoYj09Q0tFRElUT1IuQ1RSTCs2N3x8Yj09Q0tFRElUT1IuQ1RSTCs4OCl7SChhLmVkaXRvcixiPT1DS0VESVRPUi5DVFJMKzg4KTtyZXR1cm59aWYoYiBpbiBWfHxDS0VESVRPUi5DVFJMJmJ8fENLRURJVE9SLkFMVCZiKXJldHVybn1yZXR1cm4hMX0sbnVsbCxudWxsLDk5OSk7YS5vbihcImRvdWJsZWNsaWNrXCIsZnVuY3Rpb24oYil7YS5lZGl0KCkmJmIuY2FuY2VsKCl9KTtpZihiLmRhdGEpYS5vbihcImRhdGFcIixiLmRhdGEpO2lmKGIuZWRpdClhLm9uKFwiZWRpdFwiLGIuZWRpdCl9ZnVuY3Rpb24gWChhKXsoYS53cmFwcGVyPWEuZWxlbWVudC5nZXRQYXJlbnQoKSkuc2V0QXR0cmlidXRlKFwiZGF0YS1ja2Utd2lkZ2V0LWlkXCIsXG5hLmlkKX1mdW5jdGlvbiBTKGEsYil7YS5wYXJ0U2VsZWN0b3JzfHwoYS5wYXJ0U2VsZWN0b3JzPWEucGFydHMpO2lmKGEucGFydHMpe3ZhciBjPXt9LGQsZTtmb3IoZSBpbiBhLnBhcnRTZWxlY3RvcnMpYnx8IWEucGFydHNbZV18fFwic3RyaW5nXCI9PXR5cGVvZiBhLnBhcnRzW2VdPyhkPWEud3JhcHBlci5maW5kT25lKGEucGFydFNlbGVjdG9yc1tlXSksY1tlXT1kKTpjW2VdPWEucGFydHNbZV07YS5wYXJ0cz1jfX1mdW5jdGlvbiBZKGEpe3ZhciBiPWEuZWRpdGFibGVzLGMsZDthLmVkaXRhYmxlcz17fTtpZihhLmVkaXRhYmxlcylmb3IoYyBpbiBiKWQ9YltjXSxhLmluaXRFZGl0YWJsZShjLFwic3RyaW5nXCI9PXR5cGVvZiBkP3tzZWxlY3RvcjpkfTpkKX1mdW5jdGlvbiBlYShhKXtpZighMD09PWEubWFzaylVKGEpO2Vsc2UgaWYoYS5tYXNrKXt2YXIgYj1uZXcgQ0tFRElUT1IudG9vbHMuYnVmZmVycy50aHJvdHRsZSgyNTAsaWEsYSksYz1DS0VESVRPUi5lbnYuZ2Vja28/MzAwOjAsXG5kLGU7YS5vbihcImZvY3VzXCIsZnVuY3Rpb24oKXtiLmlucHV0KCk7ZD1hLmVkaXRvci5vbihcImNoYW5nZVwiLGIuaW5wdXQpO2U9YS5vbihcImJsdXJcIixmdW5jdGlvbigpe2QucmVtb3ZlTGlzdGVuZXIoKTtlLnJlbW92ZUxpc3RlbmVyKCl9KX0pO2EuZWRpdG9yLm9uKFwiaW5zdGFuY2VSZWFkeVwiLGZ1bmN0aW9uKCl7c2V0VGltZW91dChmdW5jdGlvbigpe2IuaW5wdXQoKX0sYyl9KTthLmVkaXRvci5vbihcIm1vZGVcIixmdW5jdGlvbigpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXtiLmlucHV0KCl9LGMpfSk7aWYoQ0tFRElUT1IuZW52LmdlY2tvKXt2YXIgZj1hLmVsZW1lbnQuZmluZChcImltZ1wiKTtDS0VESVRPUi50b29scy5hcnJheS5mb3JFYWNoKGYudG9BcnJheSgpLGZ1bmN0aW9uKGEpe2Eub24oXCJsb2FkXCIsZnVuY3Rpb24oKXtiLmlucHV0KCl9KX0pfWZvcih2YXIgZyBpbiBhLmVkaXRhYmxlcylhLmVkaXRhYmxlc1tnXS5vbihcImZvY3VzXCIsZnVuY3Rpb24oKXthLmVkaXRvci5vbihcImNoYW5nZVwiLFxuYi5pbnB1dCk7ZSYmZS5yZW1vdmVMaXN0ZW5lcigpfSksYS5lZGl0YWJsZXNbZ10ub24oXCJibHVyXCIsZnVuY3Rpb24oKXthLmVkaXRvci5yZW1vdmVMaXN0ZW5lcihcImNoYW5nZVwiLGIuaW5wdXQpfSk7Yi5pbnB1dCgpfX1mdW5jdGlvbiBVKGEpe3ZhciBiPWEud3JhcHBlci5maW5kT25lKFwiLmNrZV93aWRnZXRfbWFza1wiKTtifHwoYj1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJpbWdcIixhLmVkaXRvci5kb2N1bWVudCksYi5zZXRBdHRyaWJ1dGVzKHtzcmM6Q0tFRElUT1IudG9vbHMudHJhbnNwYXJlbnRJbWFnZURhdGEsXCJjbGFzc1wiOlwiY2tlX3Jlc2V0IGNrZV93aWRnZXRfbWFza1wifSksYS53cmFwcGVyLmFwcGVuZChiKSk7YS5tYXNrPWJ9ZnVuY3Rpb24gaWEoKXtpZih0aGlzLndyYXBwZXIpe3RoaXMubWFza1BhcnQ9dGhpcy5tYXNrUGFydHx8dGhpcy5tYXNrO3ZhciBhPXRoaXMucGFydHNbdGhpcy5tYXNrUGFydF0sYjtpZihhJiZcInN0cmluZ1wiIT10eXBlb2YgYSl7Yj10aGlzLndyYXBwZXIuZmluZE9uZShcIi5ja2Vfd2lkZ2V0X3BhcnRpYWxfbWFza1wiKTtcbmJ8fChiPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChcImltZ1wiLHRoaXMuZWRpdG9yLmRvY3VtZW50KSxiLnNldEF0dHJpYnV0ZXMoe3NyYzpDS0VESVRPUi50b29scy50cmFuc3BhcmVudEltYWdlRGF0YSxcImNsYXNzXCI6XCJja2VfcmVzZXQgY2tlX3dpZGdldF9wYXJ0aWFsX21hc2tcIn0pLHRoaXMud3JhcHBlci5hcHBlbmQoYikpO3RoaXMubWFzaz1iO3ZhciBjPWIuJCxkPWEuJCxlPSEoYy5vZmZzZXRUb3A9PWQub2Zmc2V0VG9wJiZjLm9mZnNldExlZnQ9PWQub2Zmc2V0TGVmdCk7aWYoYy5vZmZzZXRXaWR0aCE9ZC5vZmZzZXRXaWR0aHx8Yy5vZmZzZXRIZWlnaHQhPWQub2Zmc2V0SGVpZ2h0fHxlKWM9YS5nZXRQYXJlbnQoKSxkPUNLRURJVE9SLnBsdWdpbnMud2lkZ2V0LmlzRG9tV2lkZ2V0KGMpLGIuc2V0U3R5bGVzKHt0b3A6YS4kLm9mZnNldFRvcCsoZD8wOmMuJC5vZmZzZXRUb3ApK1wicHhcIixsZWZ0OmEuJC5vZmZzZXRMZWZ0KyhkPzA6Yy4kLm9mZnNldExlZnQpK1wicHhcIix3aWR0aDphLiQub2Zmc2V0V2lkdGgrXG5cInB4XCIsaGVpZ2h0OmEuJC5vZmZzZXRIZWlnaHQrXCJweFwifSl9fX1mdW5jdGlvbiBqYShhKXtpZihhLmRyYWdnYWJsZSl7dmFyIGI9YS5lZGl0b3IsYz1hLndyYXBwZXIuZ2V0TGFzdChmLmlzRG9tRHJhZ0hhbmRsZXJDb250YWluZXIpLGQ7Yz9kPWMuZmluZE9uZShcImltZ1wiKTooYz1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJzcGFuXCIsYi5kb2N1bWVudCksYy5zZXRBdHRyaWJ1dGVzKHtcImNsYXNzXCI6XCJja2VfcmVzZXQgY2tlX3dpZGdldF9kcmFnX2hhbmRsZXJfY29udGFpbmVyXCIsc3R5bGU6XCJiYWNrZ3JvdW5kOnJnYmEoMjIwLDIyMCwyMjAsMC41KTtiYWNrZ3JvdW5kLWltYWdlOnVybChcIitiLnBsdWdpbnMud2lkZ2V0LnBhdGgrXCJpbWFnZXMvaGFuZGxlLnBuZyk7ZGlzcGxheTpub25lO1wifSksZD1uZXcgQ0tFRElUT1IuZG9tLmVsZW1lbnQoXCJpbWdcIixiLmRvY3VtZW50KSxkLnNldEF0dHJpYnV0ZXMoe1wiY2xhc3NcIjpcImNrZV9yZXNldCBja2Vfd2lkZ2V0X2RyYWdfaGFuZGxlclwiLFxuXCJkYXRhLWNrZS13aWRnZXQtZHJhZy1oYW5kbGVyXCI6XCIxXCIsc3JjOkNLRURJVE9SLnRvb2xzLnRyYW5zcGFyZW50SW1hZ2VEYXRhLHdpZHRoOjE1LHRpdGxlOmIubGFuZy53aWRnZXQubW92ZSxoZWlnaHQ6MTUscm9sZTpcInByZXNlbnRhdGlvblwifSksYS5pbmxpbmUmJmQuc2V0QXR0cmlidXRlKFwiZHJhZ2dhYmxlXCIsXCJ0cnVlXCIpLGMuYXBwZW5kKGQpLGEud3JhcHBlci5hcHBlbmQoYykpO2Eud3JhcHBlci5vbihcImRyYWdvdmVyXCIsZnVuY3Rpb24oYSl7YS5kYXRhLnByZXZlbnREZWZhdWx0KCl9KTthLndyYXBwZXIub24oXCJtb3VzZWVudGVyXCIsYS51cGRhdGVEcmFnSGFuZGxlclBvc2l0aW9uLGEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXthLm9uKFwiZGF0YVwiLGEudXBkYXRlRHJhZ0hhbmRsZXJQb3NpdGlvbixhKX0sNTApO2lmKCFhLmlubGluZSYmKGQub24oXCJtb3VzZWRvd25cIixnYSxhKSxDS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24pKWQub24oXCJkcmFnc3RhcnRcIixcbmZ1bmN0aW9uKGEpe2EuZGF0YS5wcmV2ZW50RGVmYXVsdCghMCl9KTthLmRyYWdIYW5kbGVyQ29udGFpbmVyPWN9fWZ1bmN0aW9uIGdhKGEpe2Z1bmN0aW9uIGIoKXt2YXIgYztmb3IocC5yZXNldCgpO2M9aC5wb3AoKTspYy5yZW1vdmVMaXN0ZW5lcigpO3ZhciBkPWs7Yz1hLnNlbmRlcjt2YXIgZT10aGlzLnJlcG9zaXRvcnkuZmluZGVyLGY9dGhpcy5yZXBvc2l0b3J5LmxpbmVyLGc9dGhpcy5lZGl0b3IsbD10aGlzLmVkaXRvci5lZGl0YWJsZSgpO0NLRURJVE9SLnRvb2xzLmlzRW1wdHkoZi52aXNpYmxlKXx8KGQ9ZS5nZXRSYW5nZShkWzBdKSx0aGlzLmZvY3VzKCksZy5maXJlKFwiZHJvcFwiLHtkcm9wUmFuZ2U6ZCx0YXJnZXQ6ZC5zdGFydENvbnRhaW5lcn0pKTtsLnJlbW92ZUNsYXNzKFwiY2tlX3dpZGdldF9kcmFnZ2luZ1wiKTtmLmhpZGVWaXNpYmxlKCk7Zy5maXJlKFwiZHJhZ2VuZFwiLHt0YXJnZXQ6Y30pfWlmKENLRURJVE9SLnRvb2xzLmdldE1vdXNlQnV0dG9uKGEpPT09Q0tFRElUT1IuTU9VU0VfQlVUVE9OX0xFRlQpe3ZhciBjPVxudGhpcy5yZXBvc2l0b3J5LmZpbmRlcixkPXRoaXMucmVwb3NpdG9yeS5sb2NhdG9yLGU9dGhpcy5yZXBvc2l0b3J5LmxpbmVyLGY9dGhpcy5lZGl0b3IsZz1mLmVkaXRhYmxlKCksaD1bXSxrPVtdLGwsbTt0aGlzLnJlcG9zaXRvcnkuXy5kcmFnZ2VkV2lkZ2V0PXRoaXM7dmFyIG49Yy5ncmVlZHlTZWFyY2goKSxwPUNLRURJVE9SLnRvb2xzLmV2ZW50c0J1ZmZlcig1MCxmdW5jdGlvbigpe2w9ZC5sb2NhdGUobik7az1kLnNvcnQobSwxKTtrLmxlbmd0aCYmKGUucHJlcGFyZShuLGwpLGUucGxhY2VMaW5lKGtbMF0pLGUuY2xlYW51cCgpKX0pO2cuYWRkQ2xhc3MoXCJja2Vfd2lkZ2V0X2RyYWdnaW5nXCIpO2gucHVzaChnLm9uKFwibW91c2Vtb3ZlXCIsZnVuY3Rpb24oYSl7bT1hLmRhdGEuJC5jbGllbnRZO3AuaW5wdXQoKX0pKTtmLmZpcmUoXCJkcmFnc3RhcnRcIix7dGFyZ2V0OmEuc2VuZGVyfSk7aC5wdXNoKGYuZG9jdW1lbnQub25jZShcIm1vdXNldXBcIixiLHRoaXMpKTtnLmlzSW5saW5lKCl8fFxuaC5wdXNoKENLRURJVE9SLmRvY3VtZW50Lm9uY2UoXCJtb3VzZXVwXCIsYix0aGlzKSl9fWZ1bmN0aW9uIGthKGEpe3ZhciBiPW51bGw7YS5vbihcImRhdGFcIixmdW5jdGlvbigpe3ZhciBhPXRoaXMuZGF0YS5jbGFzc2VzLGM7aWYoYiE9YSl7Zm9yKGMgaW4gYilhJiZhW2NdfHx0aGlzLnJlbW92ZUNsYXNzKGMpO2ZvcihjIGluIGEpdGhpcy5hZGRDbGFzcyhjKTtiPWF9fSl9ZnVuY3Rpb24gVChhKXthLm9uKFwiZGF0YVwiLGZ1bmN0aW9uKCl7aWYoYS53cmFwcGVyKXt2YXIgYj10aGlzLmdldExhYmVsP3RoaXMuZ2V0TGFiZWwoKTp0aGlzLmVkaXRvci5sYW5nLndpZGdldC5sYWJlbC5yZXBsYWNlKC8lMS8sdGhpcy5wYXRoTmFtZXx8dGhpcy5lbGVtZW50LmdldE5hbWUoKSk7YS53cmFwcGVyLnNldEF0dHJpYnV0ZShcInJvbGVcIixcInJlZ2lvblwiKTthLndyYXBwZXIuc2V0QXR0cmlidXRlKFwiYXJpYS1sYWJlbFwiLGIpfX0sbnVsbCxudWxsLDk5OTkpfWZ1bmN0aW9uIFooYSl7YS5lbGVtZW50LmRhdGEoXCJja2Utd2lkZ2V0LWRhdGFcIixcbmVuY29kZVVSSUNvbXBvbmVudChKU09OLnN0cmluZ2lmeShhLmRhdGEpKSl9ZnVuY3Rpb24gYWEoKXtmdW5jdGlvbiBhKCl7fWZ1bmN0aW9uIGIoYSxjLGQpe3JldHVybiBkJiZ0aGlzLmNoZWNrRWxlbWVudChhKT8oYT1kLndpZGdldHMuZ2V0QnlFbGVtZW50KGEsITApKSYmYS5jaGVja1N0eWxlQWN0aXZlKHRoaXMpOiExfWZ1bmN0aW9uIGMoYSl7ZnVuY3Rpb24gYihhLGMsZCl7Zm9yKHZhciBlPWEubGVuZ3RoLGY9MDtmPGU7KXtpZihjLmNhbGwoZCxhW2ZdLGYsYSkpcmV0dXJuIGFbZl07ZisrfX1mdW5jdGlvbiBlKGEpe2Z1bmN0aW9uIGIoYSxjKXt2YXIgZD1DS0VESVRPUi50b29scy5vYmplY3Qua2V5cyhhKSxlPUNLRURJVE9SLnRvb2xzLm9iamVjdC5rZXlzKGMpO2lmKGQubGVuZ3RoIT09ZS5sZW5ndGgpcmV0dXJuITE7Zm9yKHZhciBmIGluIGEpaWYoKFwib2JqZWN0XCIhPT10eXBlb2YgYVtmXXx8XCJvYmplY3RcIiE9PXR5cGVvZiBjW2ZdfHwhYihhW2ZdLGNbZl0pKSYmYVtmXSE9PVxuY1tmXSlyZXR1cm4hMTtyZXR1cm4hMH1yZXR1cm4gZnVuY3Rpb24oYyl7cmV0dXJuIGIoYS5nZXREZWZpbml0aW9uKCksYy5nZXREZWZpbml0aW9uKCkpfX12YXIgZj1hLndpZGdldCxnO2RbZl18fChkW2ZdPXt9KTtmb3IodmFyIGg9MCxrPWEuZ3JvdXAubGVuZ3RoO2g8aztoKyspZz1hLmdyb3VwW2hdLGRbZl1bZ118fChkW2ZdW2ddPVtdKSxnPWRbZl1bZ10sYihnLGUoYSkpfHxnLnB1c2goYSl9dmFyIGQ9e307Q0tFRElUT1Iuc3R5bGUuYWRkQ3VzdG9tSGFuZGxlcih7dHlwZTpcIndpZGdldFwiLHNldHVwOmZ1bmN0aW9uKGEpe3RoaXMud2lkZ2V0PWEud2lkZ2V0Oyh0aGlzLmdyb3VwPVwic3RyaW5nXCI9PXR5cGVvZiBhLmdyb3VwP1thLmdyb3VwXTphLmdyb3VwKSYmYyh0aGlzKX0sYXBwbHk6ZnVuY3Rpb24oYSl7dmFyIGI7YSBpbnN0YW5jZW9mIENLRURJVE9SLmVkaXRvciYmdGhpcy5jaGVja0FwcGxpY2FibGUoYS5lbGVtZW50UGF0aCgpLGEpJiYoYj1hLndpZGdldHMuZm9jdXNlZCxcbnRoaXMuZ3JvdXAmJnRoaXMucmVtb3ZlU3R5bGVzRnJvbVNhbWVHcm91cChhKSxiLmFwcGx5U3R5bGUodGhpcykpfSxyZW1vdmU6ZnVuY3Rpb24oYSl7YSBpbnN0YW5jZW9mIENLRURJVE9SLmVkaXRvciYmdGhpcy5jaGVja0FwcGxpY2FibGUoYS5lbGVtZW50UGF0aCgpLGEpJiZhLndpZGdldHMuZm9jdXNlZC5yZW1vdmVTdHlsZSh0aGlzKX0scmVtb3ZlU3R5bGVzRnJvbVNhbWVHcm91cDpmdW5jdGlvbihhKXt2YXIgYj0hMSxjLGU7aWYoIShhIGluc3RhbmNlb2YgQ0tFRElUT1IuZWRpdG9yKSlyZXR1cm4hMTtlPWEuZWxlbWVudFBhdGgoKTtpZih0aGlzLmNoZWNrQXBwbGljYWJsZShlLGEpKWZvcih2YXIgZj0wLGc9dGhpcy5ncm91cC5sZW5ndGg7ZjxnO2YrKyl7Yz1kW3RoaXMud2lkZ2V0XVt0aGlzLmdyb3VwW2ZdXTtmb3IodmFyIGg9MDtoPGMubGVuZ3RoO2grKyljW2hdIT09dGhpcyYmY1toXS5jaGVja0FjdGl2ZShlLGEpJiYoYS53aWRnZXRzLmZvY3VzZWQucmVtb3ZlU3R5bGUoY1toXSksXG5iPSEwKX1yZXR1cm4gYn0sY2hlY2tBY3RpdmU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gdGhpcy5jaGVja0VsZW1lbnRNYXRjaChhLmxhc3RFbGVtZW50LDAsYil9LGNoZWNrQXBwbGljYWJsZTpmdW5jdGlvbihhLGIpe3JldHVybiBiIGluc3RhbmNlb2YgQ0tFRElUT1IuZWRpdG9yP3RoaXMuY2hlY2tFbGVtZW50KGEubGFzdEVsZW1lbnQpOiExfSxjaGVja0VsZW1lbnRNYXRjaDpiLGNoZWNrRWxlbWVudFJlbW92YWJsZTpiLGNoZWNrRWxlbWVudDpmdW5jdGlvbihhKXtyZXR1cm4gZi5pc0RvbVdpZGdldFdyYXBwZXIoYSk/KGE9YS5nZXRGaXJzdChmLmlzRG9tV2lkZ2V0RWxlbWVudCkpJiZhLmRhdGEoXCJ3aWRnZXRcIik9PXRoaXMud2lkZ2V0OiExfSxidWlsZFByZXZpZXc6ZnVuY3Rpb24oYSl7cmV0dXJuIGF8fHRoaXMuXy5kZWZpbml0aW9uLm5hbWV9LHRvQWxsb3dlZENvbnRlbnRSdWxlczpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDthPWEud2lkZ2V0cy5yZWdpc3RlcmVkW3RoaXMud2lkZ2V0XTtcbnZhciBiLGM9e307aWYoIWEpcmV0dXJuIG51bGw7aWYoYS5zdHlsZWFibGVFbGVtZW50cyl7Yj10aGlzLmdldENsYXNzZXNBcnJheSgpO2lmKCFiKXJldHVybiBudWxsO2NbYS5zdHlsZWFibGVFbGVtZW50c109e2NsYXNzZXM6Yixwcm9wZXJ0aWVzT25seTohMH07cmV0dXJuIGN9cmV0dXJuIGEuc3R5bGVUb0FsbG93ZWRDb250ZW50UnVsZXM/YS5zdHlsZVRvQWxsb3dlZENvbnRlbnRSdWxlcyh0aGlzKTpudWxsfSxnZXRDbGFzc2VzQXJyYXk6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLl8uZGVmaW5pdGlvbi5hdHRyaWJ1dGVzJiZ0aGlzLl8uZGVmaW5pdGlvbi5hdHRyaWJ1dGVzW1wiY2xhc3NcIl07cmV0dXJuIGE/Q0tFRElUT1IudG9vbHMudHJpbShhKS5zcGxpdCgvXFxzKy8pOm51bGx9LGFwcGx5VG9SYW5nZTphLHJlbW92ZUZyb21SYW5nZTphLGFwcGx5VG9PYmplY3Q6YX0pfUNLRURJVE9SLnBsdWdpbnMuYWRkKFwid2lkZ2V0XCIse3JlcXVpcmVzOlwibGluZXV0aWxzLGNsaXBib2FyZCx3aWRnZXRzZWxlY3Rpb25cIixcbm9uTG9hZDpmdW5jdGlvbigpe3ZvaWQgMCE9PUNLRURJVE9SLmRvY3VtZW50LiQucXVlcnlTZWxlY3RvckFsbCYmKENLRURJVE9SLmFkZENzcygnLmNrZV93aWRnZXRfd3JhcHBlcntwb3NpdGlvbjpyZWxhdGl2ZTtvdXRsaW5lOm5vbmV9LmNrZV93aWRnZXRfaW5saW5le2Rpc3BsYXk6aW5saW5lLWJsb2NrfS5ja2Vfd2lkZ2V0X3dyYXBwZXI6aG92ZXJcXHgzZS5ja2Vfd2lkZ2V0X2VsZW1lbnR7b3V0bGluZToycHggc29saWQgI2ZmZDI1YztjdXJzb3I6ZGVmYXVsdH0uY2tlX3dpZGdldF93cmFwcGVyOmhvdmVyIC5ja2Vfd2lkZ2V0X2VkaXRhYmxle291dGxpbmU6MnB4IHNvbGlkICNmZmQyNWN9LmNrZV93aWRnZXRfd3JhcHBlci5ja2Vfd2lkZ2V0X2ZvY3VzZWRcXHgzZS5ja2Vfd2lkZ2V0X2VsZW1lbnQsLmNrZV93aWRnZXRfd3JhcHBlciAuY2tlX3dpZGdldF9lZGl0YWJsZS5ja2Vfd2lkZ2V0X2VkaXRhYmxlX2ZvY3VzZWR7b3V0bGluZToycHggc29saWQgIzQ3YTRmNX0uY2tlX3dpZGdldF9lZGl0YWJsZXtjdXJzb3I6dGV4dH0uY2tlX3dpZGdldF9kcmFnX2hhbmRsZXJfY29udGFpbmVye3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjE1cHg7aGVpZ2h0OjA7ZGlzcGxheTpibG9jaztvcGFjaXR5OjAuNzU7dHJhbnNpdGlvbjpoZWlnaHQgMHMgMC4ycztsaW5lLWhlaWdodDowfS5ja2Vfd2lkZ2V0X3dyYXBwZXI6aG92ZXJcXHgzZS5ja2Vfd2lkZ2V0X2RyYWdfaGFuZGxlcl9jb250YWluZXJ7aGVpZ2h0OjE1cHg7dHJhbnNpdGlvbjpub25lfS5ja2Vfd2lkZ2V0X2RyYWdfaGFuZGxlcl9jb250YWluZXI6aG92ZXJ7b3BhY2l0eToxfS5ja2VfZWRpdGFibGVbY29udGVudGVkaXRhYmxlXFx4M2RcImZhbHNlXCJdIC5ja2Vfd2lkZ2V0X2RyYWdfaGFuZGxlcl9jb250YWluZXJ7ZGlzcGxheTpub25lO31pbWcuY2tlX3dpZGdldF9kcmFnX2hhbmRsZXJ7Y3Vyc29yOm1vdmU7d2lkdGg6MTVweDtoZWlnaHQ6MTVweDtkaXNwbGF5OmlubGluZS1ibG9ja30uY2tlX3dpZGdldF9tYXNre3Bvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxMDAlO2hlaWdodDoxMDAlO2Rpc3BsYXk6YmxvY2t9LmNrZV93aWRnZXRfcGFydGlhbF9tYXNre3Bvc2l0aW9uOmFic29sdXRlO2Rpc3BsYXk6YmxvY2t9LmNrZV9lZGl0YWJsZS5ja2Vfd2lkZ2V0X2RyYWdnaW5nLCAuY2tlX2VkaXRhYmxlLmNrZV93aWRnZXRfZHJhZ2dpbmcgKntjdXJzb3I6bW92ZSAhaW1wb3J0YW50fScpLFxuYWEoKSl9LGJlZm9yZUluaXQ6ZnVuY3Rpb24oYil7dm9pZCAwIT09Q0tFRElUT1IuZG9jdW1lbnQuJC5xdWVyeVNlbGVjdG9yQWxsJiYoYi53aWRnZXRzPW5ldyBhKGIpKX0sYWZ0ZXJJbml0OmZ1bmN0aW9uKGEpe2lmKHZvaWQgMCE9PUNLRURJVE9SLmRvY3VtZW50LiQucXVlcnlTZWxlY3RvckFsbCl7dmFyIGI9YS53aWRnZXRzLnJlZ2lzdGVyZWQsYyxkLGU7Zm9yKGQgaW4gYiljPWJbZF0sKGU9Yy5idXR0b24pJiZhLnVpLmFkZEJ1dHRvbiYmYS51aS5hZGRCdXR0b24oQ0tFRElUT1IudG9vbHMuY2FwaXRhbGl6ZShjLm5hbWUsITApLHtsYWJlbDplLGNvbW1hbmQ6Yy5uYW1lLHRvb2xiYXI6XCJpbnNlcnQsMTBcIn0pO3ooYSk7SihhLnVuZG9NYW5hZ2VyKX19fSk7YS5wcm90b3R5cGU9e01JTl9TRUxFQ1RJT05fQ0hFQ0tfSU5URVJWQUw6NTAwLGFkZDpmdW5jdGlvbihhLGQpe3ZhciBlPXRoaXMuZWRpdG9yO2Q9Q0tFRElUT1IudG9vbHMucHJvdG90eXBlZENvcHkoZCk7ZC5uYW1lPWE7XG5kLl89ZC5ffHx7fTtlLmZpcmUoXCJ3aWRnZXREZWZpbml0aW9uXCIsZCk7ZC50ZW1wbGF0ZSYmKGQudGVtcGxhdGU9bmV3IENLRURJVE9SLnRlbXBsYXRlKGQudGVtcGxhdGUpKTtiKGUsZCk7Yyh0aGlzLGQpO3RoaXMucmVnaXN0ZXJlZFthXT1kO2lmKGQuZGlhbG9nJiZlLnBsdWdpbnMuZGlhbG9nKXZhciBmPUNLRURJVE9SLm9uKFwiZGlhbG9nRGVmaW5pdGlvblwiLGZ1bmN0aW9uKGEpe2E9YS5kYXRhLmRlZmluaXRpb247dmFyIGI9YS5kaWFsb2c7YS5nZXRNb2RlfHxiLmdldE5hbWUoKSE9PWQuZGlhbG9nfHwoYS5nZXRNb2RlPWZ1bmN0aW9uKCl7dmFyIGE9Yi5nZXRNb2RlbChlKTtyZXR1cm4gYSYmYSBpbnN0YW5jZW9mIENLRURJVE9SLnBsdWdpbnMud2lkZ2V0JiZhLnJlYWR5P0NLRURJVE9SLmRpYWxvZy5FRElUSU5HX01PREU6Q0tFRElUT1IuZGlhbG9nLkNSRUFUSU9OX01PREV9KTtmLnJlbW92ZUxpc3RlbmVyKCl9KTtyZXR1cm4gZH0sYWRkVXBjYXN0Q2FsbGJhY2s6ZnVuY3Rpb24oYSl7dGhpcy5fLnVwY2FzdENhbGxiYWNrcy5wdXNoKGEpfSxcbmNoZWNrU2VsZWN0aW9uOmZ1bmN0aW9uKCl7aWYodGhpcy5lZGl0b3IuZ2V0U2VsZWN0aW9uKCkpe3ZhciBhPXRoaXMuZWRpdG9yLmdldFNlbGVjdGlvbigpLGI9YS5nZXRTZWxlY3RlZEVsZW1lbnQoKSxjPUYodGhpcyksZDtpZihiJiYoZD10aGlzLmdldEJ5RWxlbWVudChiLCEwKSkpcmV0dXJuIGMuZm9jdXMoZCkuc2VsZWN0KGQpLmNvbW1pdCgpO2E9YS5nZXRSYW5nZXMoKVswXTtpZighYXx8YS5jb2xsYXBzZWQpcmV0dXJuIGMuY29tbWl0KCk7YT1uZXcgQ0tFRElUT1IuZG9tLndhbGtlcihhKTtmb3IoYS5ldmFsdWF0b3I9Zi5pc0RvbVdpZGdldFdyYXBwZXI7Yj1hLm5leHQoKTspYy5zZWxlY3QodGhpcy5nZXRCeUVsZW1lbnQoYikpO2MuY29tbWl0KCl9fSxjaGVja1dpZGdldHM6ZnVuY3Rpb24oYSl7dGhpcy5maXJlKFwiY2hlY2tXaWRnZXRzXCIsQ0tFRElUT1IudG9vbHMuY29weShhfHx7fSkpfSxkZWw6ZnVuY3Rpb24oYSl7aWYodGhpcy5mb2N1c2VkPT09YSl7dmFyIGI9YS5lZGl0b3IsXG5jPWIuY3JlYXRlUmFuZ2UoKSxkOyhkPWMubW92ZVRvQ2xvc2VzdEVkaXRhYmxlUG9zaXRpb24oYS53cmFwcGVyLCEwKSl8fChkPWMubW92ZVRvQ2xvc2VzdEVkaXRhYmxlUG9zaXRpb24oYS53cmFwcGVyLCExKSk7ZCYmYi5nZXRTZWxlY3Rpb24oKS5zZWxlY3RSYW5nZXMoW2NdKX1hLndyYXBwZXIucmVtb3ZlKCk7dGhpcy5kZXN0cm95KGEsITApfSxkZXN0cm95OmZ1bmN0aW9uKGEsYil7dGhpcy53aWRnZXRIb2xkaW5nRm9jdXNlZEVkaXRhYmxlPT09YSYmdSh0aGlzLGEsbnVsbCxiKTthLmRlc3Ryb3koYik7ZGVsZXRlIHRoaXMuaW5zdGFuY2VzW2EuaWRdO3RoaXMuZmlyZShcImluc3RhbmNlRGVzdHJveWVkXCIsYSl9LGRlc3Ryb3lBbGw6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU9dGhpcy5pbnN0YW5jZXM7aWYoYiYmIWEpe2Q9Yi5maW5kKFwiLmNrZV93aWRnZXRfd3JhcHBlclwiKTtmb3IodmFyIGU9ZC5jb3VudCgpLGY9MDtmPGU7KytmKShjPXRoaXMuZ2V0QnlFbGVtZW50KGQuZ2V0SXRlbShmKSxcbiEwKSkmJnRoaXMuZGVzdHJveShjKX1lbHNlIGZvcihkIGluIGUpYz1lW2RdLHRoaXMuZGVzdHJveShjLGEpfSxmaW5hbGl6ZUNyZWF0aW9uOmZ1bmN0aW9uKGEpeyhhPWEuZ2V0Rmlyc3QoKSkmJmYuaXNEb21XaWRnZXRXcmFwcGVyKGEpJiYodGhpcy5lZGl0b3IuaW5zZXJ0RWxlbWVudChhKSxhPXRoaXMuZ2V0QnlFbGVtZW50KGEpLGEucmVhZHk9ITAsYS5maXJlKFwicmVhZHlcIiksYS5mb2N1cygpKX0sZ2V0QnlFbGVtZW50OmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShjKXtyZXR1cm4gYy5pcyhiKSYmYy5kYXRhKFwiY2tlLXdpZGdldC1pZFwiKX12YXIgYj17ZGl2OjEsc3BhbjoxfTtyZXR1cm4gZnVuY3Rpb24oYixjKXtpZighYilyZXR1cm4gbnVsbDt2YXIgZD1hKGIpO2lmKCFjJiYhZCl7dmFyIGU9dGhpcy5lZGl0b3IuZWRpdGFibGUoKTtkbyBiPWIuZ2V0UGFyZW50KCk7d2hpbGUoYiYmIWIuZXF1YWxzKGUpJiYhKGQ9YShiKSkpfXJldHVybiB0aGlzLmluc3RhbmNlc1tkXXx8bnVsbH19KCksXG5pbml0T246ZnVuY3Rpb24oYSxiLGMpe2I/XCJzdHJpbmdcIj09dHlwZW9mIGImJihiPXRoaXMucmVnaXN0ZXJlZFtiXSk6Yj10aGlzLnJlZ2lzdGVyZWRbYS5kYXRhKFwid2lkZ2V0XCIpXTtpZighYilyZXR1cm4gbnVsbDt2YXIgZD10aGlzLndyYXBFbGVtZW50KGEsYi5uYW1lKTtyZXR1cm4gZD9kLmhhc0NsYXNzKFwiY2tlX3dpZGdldF9uZXdcIik/KGE9bmV3IGYodGhpcyx0aGlzLl8ubmV4dElkKyssYSxiLGMpLGEuaXNJbml0ZWQoKT90aGlzLmluc3RhbmNlc1thLmlkXT1hOm51bGwpOnRoaXMuZ2V0QnlFbGVtZW50KGEpOm51bGx9LGluaXRPbkFsbDpmdW5jdGlvbihhKXthPShhfHx0aGlzLmVkaXRvci5lZGl0YWJsZSgpKS5maW5kKFwiLmNrZV93aWRnZXRfbmV3XCIpO2Zvcih2YXIgYj1bXSxjLGQ9YS5jb3VudCgpO2QtLTspKGM9dGhpcy5pbml0T24oYS5nZXRJdGVtKGQpLmdldEZpcnN0KGYuaXNEb21XaWRnZXRFbGVtZW50KSkpJiZiLnB1c2goYyk7cmV0dXJuIGJ9LG9uV2lkZ2V0OmZ1bmN0aW9uKGEpe3ZhciBiPVxuQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKTtiLnNoaWZ0KCk7Zm9yKHZhciBjIGluIHRoaXMuaW5zdGFuY2VzKXt2YXIgZD10aGlzLmluc3RhbmNlc1tjXTtkLm5hbWU9PWEmJmQub24uYXBwbHkoZCxiKX10aGlzLm9uKFwiaW5zdGFuY2VDcmVhdGVkXCIsZnVuY3Rpb24oYyl7Yz1jLmRhdGE7Yy5uYW1lPT1hJiZjLm9uLmFwcGx5KGMsYil9KX0scGFyc2VFbGVtZW50Q2xhc3NlczpmdW5jdGlvbihhKXtpZighYSlyZXR1cm4gbnVsbDthPUNLRURJVE9SLnRvb2xzLnRyaW0oYSkuc3BsaXQoL1xccysvKTtmb3IodmFyIGIsYz17fSxkPTA7Yj1hLnBvcCgpOyktMT09Yi5pbmRleE9mKFwiY2tlX1wiKSYmKGNbYl09ZD0xKTtyZXR1cm4gZD9jOm51bGx9LHdyYXBFbGVtZW50OmZ1bmN0aW9uKGEsYil7dmFyIGM9bnVsbCxkLGU7aWYoYSBpbnN0YW5jZW9mIENLRURJVE9SLmRvbS5lbGVtZW50KXtiPWJ8fGEuZGF0YShcIndpZGdldFwiKTtkPXRoaXMucmVnaXN0ZXJlZFtiXTtpZighZClyZXR1cm4gbnVsbDtcbmlmKChjPWEuZ2V0UGFyZW50KCkpJiZjLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYy5kYXRhKFwiY2tlLXdpZGdldC13cmFwcGVyXCIpKXJldHVybiBjO2EuaGFzQXR0cmlidXRlKFwiZGF0YS1ja2Utd2lkZ2V0LWtlZXAtYXR0clwiKXx8YS5kYXRhKFwiY2tlLXdpZGdldC1rZWVwLWF0dHJcIixhLmRhdGEoXCJ3aWRnZXRcIik/MTowKTthLmRhdGEoXCJ3aWRnZXRcIixiKTsoZT1yKGQsYS5nZXROYW1lKCkpKSYmbShhKTtjPW5ldyBDS0VESVRPUi5kb20uZWxlbWVudChlP1wic3BhblwiOlwiZGl2XCIsYS5nZXREb2N1bWVudCgpKTtjLnNldEF0dHJpYnV0ZXModyhlLGIpKTtjLmRhdGEoXCJja2UtZGlzcGxheS1uYW1lXCIsZC5wYXRoTmFtZT9kLnBhdGhOYW1lOmEuZ2V0TmFtZSgpKTthLmdldFBhcmVudCghMCkmJmMucmVwbGFjZShhKTthLmFwcGVuZFRvKGMpfWVsc2UgaWYoYSBpbnN0YW5jZW9mIENLRURJVE9SLmh0bWxQYXJzZXIuZWxlbWVudCl7Yj1ifHxhLmF0dHJpYnV0ZXNbXCJkYXRhLXdpZGdldFwiXTtcbmQ9dGhpcy5yZWdpc3RlcmVkW2JdO2lmKCFkKXJldHVybiBudWxsO2lmKChjPWEucGFyZW50KSYmYy50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmMuYXR0cmlidXRlc1tcImRhdGEtY2tlLXdpZGdldC13cmFwcGVyXCJdKXJldHVybiBjO1wiZGF0YS1ja2Utd2lkZ2V0LWtlZXAtYXR0clwiaW4gYS5hdHRyaWJ1dGVzfHwoYS5hdHRyaWJ1dGVzW1wiZGF0YS1ja2Utd2lkZ2V0LWtlZXAtYXR0clwiXT1hLmF0dHJpYnV0ZXNbXCJkYXRhLXdpZGdldFwiXT8xOjApO2ImJihhLmF0dHJpYnV0ZXNbXCJkYXRhLXdpZGdldFwiXT1iKTsoZT1yKGQsYS5uYW1lKSkmJm0oYSk7Yz1uZXcgQ0tFRElUT1IuaHRtbFBhcnNlci5lbGVtZW50KGU/XCJzcGFuXCI6XCJkaXZcIix3KGUsYikpO2MuYXR0cmlidXRlc1tcImRhdGEtY2tlLWRpc3BsYXktbmFtZVwiXT1kLnBhdGhOYW1lP2QucGF0aE5hbWU6YS5uYW1lO2Q9YS5wYXJlbnQ7dmFyIGY7ZCYmKGY9YS5nZXRJbmRleCgpLGEucmVtb3ZlKCkpO2MuYWRkKGEpO2QmJngoZCxcbmYsYyl9cmV0dXJuIGN9LF90ZXN0c19jcmVhdGVFZGl0YWJsZUZpbHRlcjpnfTtDS0VESVRPUi5ldmVudC5pbXBsZW1lbnRPbihhLnByb3RvdHlwZSk7Zi5wcm90b3R5cGU9e2FkZENsYXNzOmZ1bmN0aW9uKGEpe3RoaXMuZWxlbWVudC5hZGRDbGFzcyhhKTt0aGlzLndyYXBwZXIuYWRkQ2xhc3MoZi5XUkFQUEVSX0NMQVNTX1BSRUZJWCthKX0sYXBwbHlTdHlsZTpmdW5jdGlvbihhKXtLKHRoaXMsYSwxKX0sY2hlY2tTdHlsZUFjdGl2ZTpmdW5jdGlvbihhKXthPUUoYSk7dmFyIGI7aWYoIWEpcmV0dXJuITE7Zm9yKDtiPWEucG9wKCk7KWlmKCF0aGlzLmhhc0NsYXNzKGIpKXJldHVybiExO3JldHVybiEwfSxkZXN0cm95OmZ1bmN0aW9uKGEpe3RoaXMuZmlyZShcImRlc3Ryb3lcIik7aWYodGhpcy5lZGl0YWJsZXMpZm9yKHZhciBiIGluIHRoaXMuZWRpdGFibGVzKXRoaXMuZGVzdHJveUVkaXRhYmxlKGIsYSk7YXx8KFwiMFwiPT10aGlzLmVsZW1lbnQuZGF0YShcImNrZS13aWRnZXQta2VlcC1hdHRyXCIpJiZcbnRoaXMuZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJkYXRhLXdpZGdldFwiKSx0aGlzLmVsZW1lbnQucmVtb3ZlQXR0cmlidXRlcyhbXCJkYXRhLWNrZS13aWRnZXQtZGF0YVwiLFwiZGF0YS1ja2Utd2lkZ2V0LWtlZXAtYXR0clwiXSksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKFwiY2tlX3dpZGdldF9lbGVtZW50XCIpLHRoaXMuZWxlbWVudC5yZXBsYWNlKHRoaXMud3JhcHBlcikpO3RoaXMud3JhcHBlcj1udWxsfSxkZXN0cm95RWRpdGFibGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLmVkaXRhYmxlc1thXSxkPSEwO2MucmVtb3ZlTGlzdGVuZXIoXCJmb2N1c1wiLEwpO2MucmVtb3ZlTGlzdGVuZXIoXCJibHVyXCIsUCk7dGhpcy5lZGl0b3IuZm9jdXNNYW5hZ2VyLnJlbW92ZShjKTtpZihjLmZpbHRlcil7Zm9yKHZhciBlIGluIHRoaXMucmVwb3NpdG9yeS5pbnN0YW5jZXMpe3ZhciBmPXRoaXMucmVwb3NpdG9yeS5pbnN0YW5jZXNbZV07Zi5lZGl0YWJsZXMmJihmPWYuZWRpdGFibGVzW2FdKSYmZiE9PVxuYyYmYy5maWx0ZXI9PT1mLmZpbHRlciYmKGQ9ITEpfWQmJihjLmZpbHRlci5kZXN0cm95KCksKGQ9dGhpcy5yZXBvc2l0b3J5Ll8uZmlsdGVyc1t0aGlzLm5hbWVdKSYmZGVsZXRlIGRbYV0pfWJ8fCh0aGlzLnJlcG9zaXRvcnkuZGVzdHJveUFsbCghMSxjKSxjLnJlbW92ZUNsYXNzKFwiY2tlX3dpZGdldF9lZGl0YWJsZVwiKSxjLnJlbW92ZUNsYXNzKFwiY2tlX3dpZGdldF9lZGl0YWJsZV9mb2N1c2VkXCIpLGMucmVtb3ZlQXR0cmlidXRlcyhbXCJjb250ZW50ZWRpdGFibGVcIixcImRhdGEtY2tlLXdpZGdldC1lZGl0YWJsZVwiLFwiZGF0YS1ja2UtZW50ZXItbW9kZVwiXSkpO2RlbGV0ZSB0aGlzLmVkaXRhYmxlc1thXX0sZWRpdDpmdW5jdGlvbigpe3ZhciBhPXtkaWFsb2c6dGhpcy5kaWFsb2d9LGI9dGhpcztpZighMT09PXRoaXMuZmlyZShcImVkaXRcIixhKXx8IWEuZGlhbG9nKXJldHVybiExO3RoaXMuZWRpdG9yLm9wZW5EaWFsb2coYS5kaWFsb2csZnVuY3Rpb24oYSl7dmFyIGMsZDshMSE9PWIuZmlyZShcImRpYWxvZ1wiLFxuYSkmJihjPWEub24oXCJzaG93XCIsZnVuY3Rpb24oKXthLnNldHVwQ29udGVudChiKX0pLGQ9YS5vbihcIm9rXCIsZnVuY3Rpb24oKXt2YXIgYyxkPWIub24oXCJkYXRhXCIsZnVuY3Rpb24oYSl7Yz0xO2EuY2FuY2VsKCl9LG51bGwsbnVsbCwwKTtiLmVkaXRvci5maXJlKFwic2F2ZVNuYXBzaG90XCIpO2EuY29tbWl0Q29udGVudChiKTtkLnJlbW92ZUxpc3RlbmVyKCk7YyYmKGIuZmlyZShcImRhdGFcIixiLmRhdGEpLGIuZWRpdG9yLmZpcmUoXCJzYXZlU25hcHNob3RcIikpfSksYS5vbmNlKFwiaGlkZVwiLGZ1bmN0aW9uKCl7Yy5yZW1vdmVMaXN0ZW5lcigpO2QucmVtb3ZlTGlzdGVuZXIoKX0pKX0sYik7cmV0dXJuITB9LGdldENsYXNzZXM6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5yZXBvc2l0b3J5LnBhcnNlRWxlbWVudENsYXNzZXModGhpcy5lbGVtZW50LmdldEF0dHJpYnV0ZShcImNsYXNzXCIpKX0sZ2V0Q2xpcGJvYXJkSHRtbDpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZWRpdG9yLmNyZWF0ZVJhbmdlKCk7XG5hLnNldFN0YXJ0QmVmb3JlKHRoaXMud3JhcHBlcik7YS5zZXRFbmRBZnRlcih0aGlzLndyYXBwZXIpO3JldHVybiB0aGlzLmVkaXRvci5lZGl0YWJsZSgpLmdldEh0bWxGcm9tUmFuZ2UoYSkuZ2V0SHRtbCgpfSxoYXNDbGFzczpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5lbGVtZW50Lmhhc0NsYXNzKGEpfSxpbml0RWRpdGFibGU6ZnVuY3Rpb24oYSxiKXt2YXIgYz10aGlzLl9maW5kT25lTm90TmVzdGVkKGIuc2VsZWN0b3IpO3JldHVybiBjJiZjLmlzKENLRURJVE9SLmR0ZC4kZWRpdGFibGUpPyhjPW5ldyBlKHRoaXMuZWRpdG9yLGMse2ZpbHRlcjpnLmNhbGwodGhpcy5yZXBvc2l0b3J5LHRoaXMubmFtZSxhLGIpfSksdGhpcy5lZGl0YWJsZXNbYV09YyxjLnNldEF0dHJpYnV0ZXMoe2NvbnRlbnRlZGl0YWJsZTpcInRydWVcIixcImRhdGEtY2tlLXdpZGdldC1lZGl0YWJsZVwiOmEsXCJkYXRhLWNrZS1lbnRlci1tb2RlXCI6Yy5lbnRlck1vZGV9KSxjLmZpbHRlciYmYy5kYXRhKFwiY2tlLWZpbHRlclwiLFxuYy5maWx0ZXIuaWQpLGMuYWRkQ2xhc3MoXCJja2Vfd2lkZ2V0X2VkaXRhYmxlXCIpLGMucmVtb3ZlQ2xhc3MoXCJja2Vfd2lkZ2V0X2VkaXRhYmxlX2ZvY3VzZWRcIiksYi5wYXRoTmFtZSYmYy5kYXRhKFwiY2tlLWRpc3BsYXktbmFtZVwiLGIucGF0aE5hbWUpLHRoaXMuZWRpdG9yLmZvY3VzTWFuYWdlci5hZGQoYyksYy5vbihcImZvY3VzXCIsTCx0aGlzKSxDS0VESVRPUi5lbnYuaWUmJmMub24oXCJibHVyXCIsUCx0aGlzKSxjLl8uaW5pdGlhbFNldERhdGE9ITAsYy5zZXREYXRhKGMuZ2V0SHRtbCgpKSwhMCk6ITF9LF9maW5kT25lTm90TmVzdGVkOmZ1bmN0aW9uKGEpe2E9dGhpcy53cmFwcGVyLmZpbmQoYSk7Zm9yKHZhciBiLGMsZD0wO2Q8YS5jb3VudCgpO2QrKylpZihiPWEuZ2V0SXRlbShkKSxjPWIuZ2V0QXNjZW5kYW50KGYuaXNEb21XaWRnZXRXcmFwcGVyKSx0aGlzLndyYXBwZXIuZXF1YWxzKGMpKXJldHVybiBiO3JldHVybiBudWxsfSxpc0luaXRlZDpmdW5jdGlvbigpe3JldHVybiEoIXRoaXMud3JhcHBlcnx8XG4hdGhpcy5pbml0ZWQpfSxpc1JlYWR5OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaXNJbml0ZWQoKSYmdGhpcy5yZWFkeX0sZm9jdXM6ZnVuY3Rpb24oKXt2YXIgYT10aGlzLmVkaXRvci5nZXRTZWxlY3Rpb24oKTtpZihhKXt2YXIgYj10aGlzLmVkaXRvci5jaGVja0RpcnR5KCk7YS5mYWtlKHRoaXMud3JhcHBlcik7IWImJnRoaXMuZWRpdG9yLnJlc2V0RGlydHkoKX10aGlzLmVkaXRvci5mb2N1cygpfSxyZWZyZXNoTWFzazpmdW5jdGlvbigpe2VhKHRoaXMpfSxyZWZyZXNoUGFydHM6ZnVuY3Rpb24oYSl7Uyh0aGlzLFwidW5kZWZpbmVkXCIhPT10eXBlb2YgYT9hOiEwKX0scmVtb3ZlQ2xhc3M6ZnVuY3Rpb24oYSl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKGEpO3RoaXMud3JhcHBlci5yZW1vdmVDbGFzcyhmLldSQVBQRVJfQ0xBU1NfUFJFRklYK2EpfSxyZW1vdmVTdHlsZTpmdW5jdGlvbihhKXtLKHRoaXMsYSwwKX0sc2V0RGF0YTpmdW5jdGlvbihhLGIpe3ZhciBjPXRoaXMuZGF0YSxcbmQ9MDtpZihcInN0cmluZ1wiPT10eXBlb2YgYSljW2FdIT09YiYmKGNbYV09YixkPTEpO2Vsc2V7dmFyIGU9YTtmb3IoYSBpbiBlKWNbYV0hPT1lW2FdJiYoZD0xLGNbYV09ZVthXSl9ZCYmdGhpcy5kYXRhUmVhZHkmJihaKHRoaXMpLHRoaXMuZmlyZShcImRhdGFcIixjKSk7cmV0dXJuIHRoaXN9LHNldEZvY3VzZWQ6ZnVuY3Rpb24oYSl7dGhpcy53cmFwcGVyW2E/XCJhZGRDbGFzc1wiOlwicmVtb3ZlQ2xhc3NcIl0oXCJja2Vfd2lkZ2V0X2ZvY3VzZWRcIik7dGhpcy5maXJlKGE/XCJmb2N1c1wiOlwiYmx1clwiKTtyZXR1cm4gdGhpc30sc2V0U2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7dGhpcy53cmFwcGVyW2E/XCJhZGRDbGFzc1wiOlwicmVtb3ZlQ2xhc3NcIl0oXCJja2Vfd2lkZ2V0X3NlbGVjdGVkXCIpO3RoaXMuZmlyZShhP1wic2VsZWN0XCI6XCJkZXNlbGVjdFwiKTtyZXR1cm4gdGhpc30sdXBkYXRlRHJhZ0hhbmRsZXJQb3NpdGlvbjpmdW5jdGlvbigpe3ZhciBhPXRoaXMuZWRpdG9yLGI9dGhpcy5lbGVtZW50LiQsYz10aGlzLl8uZHJhZ0hhbmRsZXJPZmZzZXQsXG5iPXt4OmIub2Zmc2V0TGVmdCx5OmIub2Zmc2V0VG9wLTE1fTtjJiZiLng9PWMueCYmYi55PT1jLnl8fChjPWEuY2hlY2tEaXJ0eSgpLGEuZmlyZShcImxvY2tTbmFwc2hvdFwiKSx0aGlzLmRyYWdIYW5kbGVyQ29udGFpbmVyLnNldFN0eWxlcyh7dG9wOmIueStcInB4XCIsbGVmdDpiLngrXCJweFwifSksdGhpcy5kcmFnSGFuZGxlckNvbnRhaW5lci5yZW1vdmVTdHlsZShcImRpc3BsYXlcIiksYS5maXJlKFwidW5sb2NrU25hcHNob3RcIiksIWMmJmEucmVzZXREaXJ0eSgpLHRoaXMuXy5kcmFnSGFuZGxlck9mZnNldD1iKX19O0NLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKGYucHJvdG90eXBlKTtmLmdldE5lc3RlZEVkaXRhYmxlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIWJ8fGIuZXF1YWxzKGEpP251bGw6Zi5pc0RvbU5lc3RlZEVkaXRhYmxlKGIpP2I6Zi5nZXROZXN0ZWRFZGl0YWJsZShhLGIuZ2V0UGFyZW50KCkpfTtmLmlzRG9tRHJhZ0hhbmRsZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09XG5DS0VESVRPUi5OT0RFX0VMRU1FTlQmJmEuaGFzQXR0cmlidXRlKFwiZGF0YS1ja2Utd2lkZ2V0LWRyYWctaGFuZGxlclwiKX07Zi5pc0RvbURyYWdIYW5kbGVyQ29udGFpbmVyPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5oYXNDbGFzcyhcImNrZV93aWRnZXRfZHJhZ19oYW5kbGVyX2NvbnRhaW5lclwiKX07Zi5pc0RvbU5lc3RlZEVkaXRhYmxlPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5oYXNBdHRyaWJ1dGUoXCJkYXRhLWNrZS13aWRnZXQtZWRpdGFibGVcIil9O2YuaXNEb21XaWRnZXRFbGVtZW50PWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmYS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXdpZGdldFwiKX07Zi5pc0RvbVdpZGdldFdyYXBwZXI9ZnVuY3Rpb24oYSl7cmV0dXJuIGEudHlwZT09Q0tFRElUT1IuTk9ERV9FTEVNRU5UJiZhLmhhc0F0dHJpYnV0ZShcImRhdGEtY2tlLXdpZGdldC13cmFwcGVyXCIpfTtcbmYuaXNEb21XaWRnZXQ9ZnVuY3Rpb24oYSl7cmV0dXJuIGE/dGhpcy5pc0RvbVdpZGdldFdyYXBwZXIoYSl8fHRoaXMuaXNEb21XaWRnZXRFbGVtZW50KGEpOiExfTtmLmlzUGFyc2VyV2lkZ2V0RWxlbWVudD1mdW5jdGlvbihhKXtyZXR1cm4gYS50eXBlPT1DS0VESVRPUi5OT0RFX0VMRU1FTlQmJiEhYS5hdHRyaWJ1dGVzW1wiZGF0YS13aWRnZXRcIl19O2YuaXNQYXJzZXJXaWRnZXRXcmFwcGVyPWZ1bmN0aW9uKGEpe3JldHVybiBhLnR5cGU9PUNLRURJVE9SLk5PREVfRUxFTUVOVCYmISFhLmF0dHJpYnV0ZXNbXCJkYXRhLWNrZS13aWRnZXQtd3JhcHBlclwiXX07Zi5XUkFQUEVSX0NMQVNTX1BSRUZJWD1cImNrZV93aWRnZXRfd3JhcHBlcl9cIjtlLnByb3RvdHlwZT1DS0VESVRPUi50b29scy5leHRlbmQoQ0tFRElUT1IudG9vbHMucHJvdG90eXBlZENvcHkoQ0tFRElUT1IuZG9tLmVsZW1lbnQucHJvdG90eXBlKSx7c2V0RGF0YTpmdW5jdGlvbihhKXt0aGlzLl8uaW5pdGlhbFNldERhdGF8fFxudGhpcy5lZGl0b3Iud2lkZ2V0cy5kZXN0cm95QWxsKCExLHRoaXMpO3RoaXMuXy5pbml0aWFsU2V0RGF0YT0hMTthPXRoaXMuZWRpdG9yLmRhdGFQcm9jZXNzb3IudW5wcm90ZWN0UmVhbENvbW1lbnRzKGEpO2E9dGhpcy5lZGl0b3IuZGF0YVByb2Nlc3Nvci51bnByb3RlY3RTb3VyY2UoYSk7YT10aGlzLmVkaXRvci5kYXRhUHJvY2Vzc29yLnRvSHRtbChhLHtjb250ZXh0OnRoaXMuZ2V0TmFtZSgpLGZpbHRlcjp0aGlzLmZpbHRlcixlbnRlck1vZGU6dGhpcy5lbnRlck1vZGV9KTt0aGlzLnNldEh0bWwoYSk7dGhpcy5lZGl0b3Iud2lkZ2V0cy5pbml0T25BbGwodGhpcyl9LGdldERhdGE6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lZGl0b3IuZGF0YVByb2Nlc3Nvci50b0RhdGFGb3JtYXQodGhpcy5nZXRIdG1sKCkse2NvbnRleHQ6dGhpcy5nZXROYW1lKCksZmlsdGVyOnRoaXMuZmlsdGVyLGVudGVyTW9kZTp0aGlzLmVudGVyTW9kZX0pfX0pO3ZhciBjYT0vXig/OjwoPzpkaXZ8c3BhbikoPzogZGF0YS1ja2UtdGVtcD1cIjFcIik/KD86IGlkPVwiY2tlX2NvcHliaW5cIik/KD86IGRhdGEtY2tlLXRlbXA9XCIxXCIpPz4pPyg/OjwoPzpkaXZ8c3BhbikoPzogc3R5bGU9XCJbXlwiXStcIik/Pik/PHNwYW4gW14+XSpkYXRhLWNrZS1jb3B5YmluLXN0YXJ0PVwiMVwiW14+XSo+Lj88XFwvc3Bhbj4oW1xcc1xcU10rKTxzcGFuIFtePl0qZGF0YS1ja2UtY29weWJpbi1lbmQ9XCIxXCJbXj5dKj4uPzxcXC9zcGFuPig/OjxcXC8oPzpkaXZ8c3Bhbik+KT8oPzo8XFwvKD86ZGl2fHNwYW4pPik/JC9pLFxuVj17Mzc6MSwzODoxLDM5OjEsNDA6MSw4OjEsNDY6MX07VltDS0VESVRPUi5TSElGVCsxMjFdPTE7dmFyIFE9Q0tFRElUT1IudG9vbHMuY3JlYXRlQ2xhc3MoeyQ6ZnVuY3Rpb24oYSxiKXt0aGlzLl8uY3JlYXRlQ29weUJpbihhLGIpO3RoaXMuXy5jcmVhdGVMaXN0ZW5lcnMoYil9LF86e2NyZWF0ZUNvcHlCaW46ZnVuY3Rpb24oYSl7dmFyIGI9YS5kb2N1bWVudCxjPUNLRURJVE9SLmVudi5lZGdlJiYxNjw9Q0tFRElUT1IuZW52LnZlcnNpb24sZD0hYS5ibG9ja2xlc3MmJiFDS0VESVRPUi5lbnYuaWV8fGM/XCJkaXZcIjpcInNwYW5cIixjPWIuY3JlYXRlRWxlbWVudChkKSxiPWIuY3JlYXRlRWxlbWVudChkKTtiLnNldEF0dHJpYnV0ZXMoe2lkOlwiY2tlX2NvcHliaW5cIixcImRhdGEtY2tlLXRlbXBcIjpcIjFcIn0pO2Muc2V0U3R5bGVzKHtwb3NpdGlvbjpcImFic29sdXRlXCIsd2lkdGg6XCIxcHhcIixoZWlnaHQ6XCIxcHhcIixvdmVyZmxvdzpcImhpZGRlblwifSk7Yy5zZXRTdHlsZShcImx0clwiPT1hLmNvbmZpZy5jb250ZW50c0xhbmdEaXJlY3Rpb24/XG5cImxlZnRcIjpcInJpZ2h0XCIsXCItNTAwMHB4XCIpO3RoaXMuZWRpdG9yPWE7dGhpcy5jb3B5QmluPWM7dGhpcy5jb250YWluZXI9Yn0sY3JlYXRlTGlzdGVuZXJzOmZ1bmN0aW9uKGEpe2EmJihhLmJlZm9yZURlc3Ryb3kmJih0aGlzLmJlZm9yZURlc3Ryb3k9YS5iZWZvcmVEZXN0cm95KSxhLmFmdGVyRGVzdHJveSYmKHRoaXMuYWZ0ZXJEZXN0cm95PWEuYWZ0ZXJEZXN0cm95KSl9fSxwcm90bzp7aGFuZGxlOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29weUJpbixjPXRoaXMuZWRpdG9yLGQ9dGhpcy5jb250YWluZXIsZT1DS0VESVRPUi5lbnYuaWUmJjk+Q0tFRElUT1IuZW52LnZlcnNpb24sZj1jLmRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpLiQsZz1jLmNyZWF0ZVJhbmdlKCksaD10aGlzLGs9Q0tFRElUT1IuZW52Lm1hYyYmQ0tFRElUT1IuZW52LndlYmtpdCxsPWs/MTAwOjAsbT13aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lJiYhaz9yZXF1ZXN0QW5pbWF0aW9uRnJhbWU6c2V0VGltZW91dCxcbm4scCxxO2Iuc2V0SHRtbCgnXFx4M2NzcGFuIGRhdGEtY2tlLWNvcHliaW4tc3RhcnRcXHgzZFwiMVwiXFx4M2XigItcXHgzYy9zcGFuXFx4M2UnK2ErJ1xceDNjc3BhbiBkYXRhLWNrZS1jb3B5YmluLWVuZFxceDNkXCIxXCJcXHgzZeKAi1xceDNjL3NwYW5cXHgzZScpO2MuZmlyZShcImxvY2tTbmFwc2hvdFwiKTtkLmFwcGVuZChiKTtjLmVkaXRhYmxlKCkuYXBwZW5kKGQpO249Yy5vbihcInNlbGVjdGlvbkNoYW5nZVwiLEcsbnVsbCxudWxsLDApO3A9Yy53aWRnZXRzLm9uKFwiY2hlY2tTZWxlY3Rpb25cIixHLG51bGwsbnVsbCwwKTtlJiYocT1mLnNjcm9sbFRvcCk7Zy5zZWxlY3ROb2RlQ29udGVudHMoYik7Zy5zZWxlY3QoKTtlJiYoZi5zY3JvbGxUb3A9cSk7cmV0dXJuIG5ldyBDS0VESVRPUi50b29scy5wcm9taXNlKGZ1bmN0aW9uKGEpe20oZnVuY3Rpb24oKXtoLmJlZm9yZURlc3Ryb3kmJmguYmVmb3JlRGVzdHJveSgpO2QucmVtb3ZlKCk7bi5yZW1vdmVMaXN0ZW5lcigpO3AucmVtb3ZlTGlzdGVuZXIoKTtjLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKTtcbmguYWZ0ZXJEZXN0cm95JiZoLmFmdGVyRGVzdHJveSgpO2EoKX0sbCl9KX19LHN0YXRpY3M6e2hhc0NvcHlCaW46ZnVuY3Rpb24oYSl7cmV0dXJuISFRLmdldENvcHlCaW4oYSl9LGdldENvcHlCaW46ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZG9jdW1lbnQuZ2V0QnlJZChcImNrZV9jb3B5YmluXCIpfX19KTtDS0VESVRPUi5wbHVnaW5zLndpZGdldD1mO2YucmVwb3NpdG9yeT1hO2YubmVzdGVkRWRpdGFibGU9ZX0oKSxDS0VESVRPUi5jb25maWcud2lkZ2V0X2tleXN0cm9rZUluc2VydExpbmVCZWZvcmU9Q0tFRElUT1IuU0hJRlQrQ0tFRElUT1IuQUxUKzEzLENLRURJVE9SLmNvbmZpZy53aWRnZXRfa2V5c3Ryb2tlSW5zZXJ0TGluZUFmdGVyPUNLRURJVE9SLlNISUZUKzEzLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhLGIsYyl7dGhpcy5lZGl0b3I9YTt0aGlzLm5vdGlmaWNhdGlvbj1udWxsO3RoaXMuX21lc3NhZ2U9bmV3IENLRURJVE9SLnRlbXBsYXRlKGIpO3RoaXMuX3Npbmd1bGFyTWVzc2FnZT1cbmM/bmV3IENLRURJVE9SLnRlbXBsYXRlKGMpOm51bGw7dGhpcy5fdGFza3M9W107dGhpcy5fZG9uZVRhc2tzPXRoaXMuX2RvbmVXZWlnaHRzPXRoaXMuX3RvdGFsV2VpZ2h0cz0wfWZ1bmN0aW9uIGYoYSl7dGhpcy5fd2VpZ2h0PWF8fDE7dGhpcy5fZG9uZVdlaWdodD0wO3RoaXMuX2lzQ2FuY2VsZWQ9ITF9Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJub3RpZmljYXRpb25hZ2dyZWdhdG9yXCIse3JlcXVpcmVzOlwibm90aWZpY2F0aW9uXCJ9KTthLnByb3RvdHlwZT17Y3JlYXRlVGFzazpmdW5jdGlvbihhKXthPWF8fHt9O3ZhciBiPSF0aGlzLm5vdGlmaWNhdGlvbixjO2ImJih0aGlzLm5vdGlmaWNhdGlvbj10aGlzLl9jcmVhdGVOb3RpZmljYXRpb24oKSk7Yz10aGlzLl9hZGRUYXNrKGEpO2Mub24oXCJ1cGRhdGVkXCIsdGhpcy5fb25UYXNrVXBkYXRlLHRoaXMpO2Mub24oXCJkb25lXCIsdGhpcy5fb25UYXNrRG9uZSx0aGlzKTtjLm9uKFwiY2FuY2VsZWRcIixmdW5jdGlvbigpe3RoaXMuX3JlbW92ZVRhc2soYyl9LFxudGhpcyk7dGhpcy51cGRhdGUoKTtiJiZ0aGlzLm5vdGlmaWNhdGlvbi5zaG93KCk7cmV0dXJuIGN9LHVwZGF0ZTpmdW5jdGlvbigpe3RoaXMuX3VwZGF0ZU5vdGlmaWNhdGlvbigpO3RoaXMuaXNGaW5pc2hlZCgpJiZ0aGlzLmZpcmUoXCJmaW5pc2hlZFwiKX0sZ2V0UGVyY2VudGFnZTpmdW5jdGlvbigpe3JldHVybiAwPT09dGhpcy5nZXRUYXNrQ291bnQoKT8xOnRoaXMuX2RvbmVXZWlnaHRzL3RoaXMuX3RvdGFsV2VpZ2h0c30saXNGaW5pc2hlZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmdldERvbmVUYXNrQ291bnQoKT09PXRoaXMuZ2V0VGFza0NvdW50KCl9LGdldFRhc2tDb3VudDpmdW5jdGlvbigpe3JldHVybiB0aGlzLl90YXNrcy5sZW5ndGh9LGdldERvbmVUYXNrQ291bnQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fZG9uZVRhc2tzfSxfdXBkYXRlTm90aWZpY2F0aW9uOmZ1bmN0aW9uKCl7dGhpcy5ub3RpZmljYXRpb24udXBkYXRlKHttZXNzYWdlOnRoaXMuX2dldE5vdGlmaWNhdGlvbk1lc3NhZ2UoKSxcbnByb2dyZXNzOnRoaXMuZ2V0UGVyY2VudGFnZSgpfSl9LF9nZXROb3RpZmljYXRpb25NZXNzYWdlOmZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5nZXRUYXNrQ291bnQoKSxiPXtjdXJyZW50OnRoaXMuZ2V0RG9uZVRhc2tDb3VudCgpLG1heDphLHBlcmNlbnRhZ2U6TWF0aC5yb3VuZCgxMDAqdGhpcy5nZXRQZXJjZW50YWdlKCkpfTtyZXR1cm4oMT09YSYmdGhpcy5fc2luZ3VsYXJNZXNzYWdlP3RoaXMuX3Npbmd1bGFyTWVzc2FnZTp0aGlzLl9tZXNzYWdlKS5vdXRwdXQoYil9LF9jcmVhdGVOb3RpZmljYXRpb246ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLnBsdWdpbnMubm90aWZpY2F0aW9uKHRoaXMuZWRpdG9yLHt0eXBlOlwicHJvZ3Jlc3NcIn0pfSxfYWRkVGFzazpmdW5jdGlvbihhKXthPW5ldyBmKGEud2VpZ2h0KTt0aGlzLl90YXNrcy5wdXNoKGEpO3RoaXMuX3RvdGFsV2VpZ2h0cys9YS5fd2VpZ2h0O3JldHVybiBhfSxfcmVtb3ZlVGFzazpmdW5jdGlvbihhKXt2YXIgYj1DS0VESVRPUi50b29scy5pbmRleE9mKHRoaXMuX3Rhc2tzLFxuYSk7LTEhPT1iJiYoYS5fZG9uZVdlaWdodCYmKHRoaXMuX2RvbmVXZWlnaHRzLT1hLl9kb25lV2VpZ2h0KSx0aGlzLl90b3RhbFdlaWdodHMtPWEuX3dlaWdodCx0aGlzLl90YXNrcy5zcGxpY2UoYiwxKSx0aGlzLnVwZGF0ZSgpKX0sX29uVGFza1VwZGF0ZTpmdW5jdGlvbihhKXt0aGlzLl9kb25lV2VpZ2h0cys9YS5kYXRhO3RoaXMudXBkYXRlKCl9LF9vblRhc2tEb25lOmZ1bmN0aW9uKCl7dGhpcy5fZG9uZVRhc2tzKz0xO3RoaXMudXBkYXRlKCl9fTtDS0VESVRPUi5ldmVudC5pbXBsZW1lbnRPbihhLnByb3RvdHlwZSk7Zi5wcm90b3R5cGU9e2RvbmU6ZnVuY3Rpb24oKXt0aGlzLnVwZGF0ZSh0aGlzLl93ZWlnaHQpfSx1cGRhdGU6ZnVuY3Rpb24oYSl7aWYoIXRoaXMuaXNEb25lKCkmJiF0aGlzLmlzQ2FuY2VsZWQoKSl7YT1NYXRoLm1pbih0aGlzLl93ZWlnaHQsYSk7dmFyIGI9YS10aGlzLl9kb25lV2VpZ2h0O3RoaXMuX2RvbmVXZWlnaHQ9YTt0aGlzLmZpcmUoXCJ1cGRhdGVkXCIsXG5iKTt0aGlzLmlzRG9uZSgpJiZ0aGlzLmZpcmUoXCJkb25lXCIpfX0sY2FuY2VsOmZ1bmN0aW9uKCl7dGhpcy5pc0RvbmUoKXx8dGhpcy5pc0NhbmNlbGVkKCl8fCh0aGlzLl9pc0NhbmNlbGVkPSEwLHRoaXMuZmlyZShcImNhbmNlbGVkXCIpKX0saXNEb25lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3dlaWdodD09PXRoaXMuX2RvbmVXZWlnaHR9LGlzQ2FuY2VsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNDYW5jZWxlZH19O0NLRURJVE9SLmV2ZW50LmltcGxlbWVudE9uKGYucHJvdG90eXBlKTtDS0VESVRPUi5wbHVnaW5zLm5vdGlmaWNhdGlvbkFnZ3JlZ2F0b3I9YTtDS0VESVRPUi5wbHVnaW5zLm5vdGlmaWNhdGlvbkFnZ3JlZ2F0b3IudGFzaz1mfSgpLFwidXNlIHN0cmljdFwiLGZ1bmN0aW9uKCl7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ1cGxvYWR3aWRnZXRcIix7cmVxdWlyZXM6XCJ3aWRnZXQsY2xpcGJvYXJkLGZpbGV0b29scyxub3RpZmljYXRpb25hZ2dyZWdhdG9yXCIsaW5pdDpmdW5jdGlvbihhKXthLmZpbHRlci5hbGxvdyhcIipbIWRhdGEtd2lkZ2V0LCFkYXRhLWNrZS11cGxvYWQtaWRdXCIpfSxcbmlzU3VwcG9ydGVkRW52aXJvbm1lbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gQ0tFRElUT1IucGx1Z2lucy5jbGlwYm9hcmQuaXNGaWxlQXBpU3VwcG9ydGVkfX0pO0NLRURJVE9SLmZpbGVUb29sc3x8KENLRURJVE9SLmZpbGVUb29scz17fSk7Q0tFRElUT1IudG9vbHMuZXh0ZW5kKENLRURJVE9SLmZpbGVUb29scyx7YWRkVXBsb2FkV2lkZ2V0OmZ1bmN0aW9uKGEsZixlKXt2YXIgYj1DS0VESVRPUi5maWxlVG9vbHMsYz1hLnVwbG9hZFJlcG9zaXRvcnksaz1lLnN1cHBvcnRlZFR5cGVzPzEwOjIwO0NLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmFkZEZpbGVNYXRjaGVyKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGUuc3VwcG9ydGVkVHlwZXM/Yi5pc1R5cGVTdXBwb3J0ZWQoYSxlLnN1cHBvcnRlZFR5cGVzKTohMH0pO2lmKGUuZmlsZVRvRWxlbWVudClhLm9uKFwicGFzdGVcIixmdW5jdGlvbihlKXtlPWUuZGF0YTt2YXIgaz1hLndpZGdldHMucmVnaXN0ZXJlZFtmXSxkPWUuZGF0YVRyYW5zZmVyLFxuaD1kLmdldEZpbGVzQ291bnQoKSxnPWsubG9hZE1ldGhvZHx8XCJsb2FkQW5kVXBsb2FkXCIsbix3O2lmKCFlLmRhdGFWYWx1ZSYmaClmb3Iodz0wO3c8aDt3KyspaWYobj1kLmdldEZpbGUodyksIWsuc3VwcG9ydGVkVHlwZXN8fGIuaXNUeXBlU3VwcG9ydGVkKG4say5zdXBwb3J0ZWRUeXBlcykpe3ZhciB4PWsuZmlsZVRvRWxlbWVudChuKTtuPWMuY3JlYXRlKG4sdm9pZCAwLGsubG9hZGVyVHlwZSk7eCYmKG5bZ10oay51cGxvYWRVcmwsay5hZGRpdGlvbmFsUmVxdWVzdFBhcmFtZXRlcnMpLENLRURJVE9SLmZpbGVUb29scy5tYXJrRWxlbWVudCh4LGYsbi5pZCksXCJsb2FkQW5kVXBsb2FkXCIhPWcmJlwidXBsb2FkXCIhPWd8fGsuc2tpcE5vdGlmaWNhdGlvbnN8fENLRURJVE9SLmZpbGVUb29scy5iaW5kTm90aWZpY2F0aW9ucyhhLG4pLGUuZGF0YVZhbHVlKz14LmdldE91dGVySHRtbCgpKX19LG51bGwsbnVsbCxrKTtDS0VESVRPUi50b29scy5leHRlbmQoZSx7ZG93bmNhc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gbmV3IENLRURJVE9SLmh0bWxQYXJzZXIudGV4dChcIlwiKX0sXG5pbml0OmZ1bmN0aW9uKCl7dmFyIGI9dGhpcyxlPXRoaXMud3JhcHBlci5maW5kT25lKFwiW2RhdGEtY2tlLXVwbG9hZC1pZF1cIikuZGF0YShcImNrZS11cGxvYWQtaWRcIiksZD1jLmxvYWRlcnNbZV0sZj1DS0VESVRPUi50b29scy5jYXBpdGFsaXplLGcsaztkLm9uKFwidXBkYXRlXCIsZnVuY3Rpb24oYyl7aWYoXCJhYm9ydFwiPT09ZC5zdGF0dXMmJlwiZnVuY3Rpb25cIj09PXR5cGVvZiBiLm9uQWJvcnQpYi5vbkFib3J0KGQpO2lmKGIud3JhcHBlciYmYi53cmFwcGVyLmdldFBhcmVudCgpKXthLmZpcmUoXCJsb2NrU25hcHNob3RcIik7Yz1cIm9uXCIrZihkLnN0YXR1cyk7aWYoXCJhYm9ydFwiPT09ZC5zdGF0dXN8fFwiZnVuY3Rpb25cIiE9PXR5cGVvZiBiW2NdfHwhMSE9PWJbY10oZCkpaz1cImNrZV91cGxvYWRfXCIrZC5zdGF0dXMsYi53cmFwcGVyJiZrIT1nJiYoZyYmYi53cmFwcGVyLnJlbW92ZUNsYXNzKGcpLGIud3JhcHBlci5hZGRDbGFzcyhrKSxnPWspLFwiZXJyb3JcIiE9ZC5zdGF0dXMmJlwiYWJvcnRcIiE9XG5kLnN0YXR1c3x8YS53aWRnZXRzLmRlbChiKTthLmZpcmUoXCJ1bmxvY2tTbmFwc2hvdFwiKX1lbHNlIENLRURJVE9SLmluc3RhbmNlc1thLm5hbWVdJiZhLmVkaXRhYmxlKCkuZmluZCgnW2RhdGEtY2tlLXVwbG9hZC1pZFxceDNkXCInK2UrJ1wiXScpLmNvdW50KCl8fGQuYWJvcnQoKSxjLnJlbW92ZUxpc3RlbmVyKCl9KTtkLnVwZGF0ZSgpfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihiLGMpe2lmKFwiXCI9PT1iLnRyaW0oKSlhLndpZGdldHMuZGVsKHRoaXMpO2Vsc2V7dmFyIGQ9dGhpcz09YS53aWRnZXRzLmZvY3VzZWQsZT1hLmVkaXRhYmxlKCksZj1hLmNyZWF0ZVJhbmdlKCksayx3O2R8fCh3PWEuZ2V0U2VsZWN0aW9uKCkuY3JlYXRlQm9va21hcmtzKCkpO2Yuc2V0U3RhcnRCZWZvcmUodGhpcy53cmFwcGVyKTtmLnNldEVuZEFmdGVyKHRoaXMud3JhcHBlcik7ZCYmKGs9Zi5jcmVhdGVCb29rbWFyaygpKTtlLmluc2VydEh0bWxJbnRvUmFuZ2UoYixmLGMpO2Eud2lkZ2V0cy5jaGVja1dpZGdldHMoe2luaXRPbmx5TmV3OiEwfSk7XG5hLndpZGdldHMuZGVzdHJveSh0aGlzLCEwKTtkPyhmLm1vdmVUb0Jvb2ttYXJrKGspLGYuc2VsZWN0KCkpOmEuZ2V0U2VsZWN0aW9uKCkuc2VsZWN0Qm9va21hcmtzKHcpfX0sX2dldExvYWRlcjpmdW5jdGlvbigpe3ZhciBhPXRoaXMud3JhcHBlci5maW5kT25lKFwiW2RhdGEtY2tlLXVwbG9hZC1pZF1cIik7cmV0dXJuIGE/dGhpcy5lZGl0b3IudXBsb2FkUmVwb3NpdG9yeS5sb2FkZXJzW2EuZGF0YShcImNrZS11cGxvYWQtaWRcIildOm51bGx9fSk7YS53aWRnZXRzLmFkZChmLGUpfSxtYXJrRWxlbWVudDpmdW5jdGlvbihhLGYsZSl7YS5zZXRBdHRyaWJ1dGVzKHtcImRhdGEtY2tlLXVwbG9hZC1pZFwiOmUsXCJkYXRhLXdpZGdldFwiOmZ9KX0sYmluZE5vdGlmaWNhdGlvbnM6ZnVuY3Rpb24oYSxmKXtmdW5jdGlvbiBlKCl7Yj1hLl8udXBsb2FkV2lkZ2V0Tm90aWZpY2Fpb25BZ2dyZWdhdG9yO2lmKCFifHxiLmlzRmluaXNoZWQoKSliPWEuXy51cGxvYWRXaWRnZXROb3RpZmljYWlvbkFnZ3JlZ2F0b3I9XG5uZXcgQ0tFRElUT1IucGx1Z2lucy5ub3RpZmljYXRpb25BZ2dyZWdhdG9yKGEsYS5sYW5nLnVwbG9hZHdpZGdldC51cGxvYWRNYW55LGEubGFuZy51cGxvYWR3aWRnZXQudXBsb2FkT25lKSxiLm9uY2UoXCJmaW5pc2hlZFwiLGZ1bmN0aW9uKCl7dmFyIGM9Yi5nZXRUYXNrQ291bnQoKTswPT09Yz9iLm5vdGlmaWNhdGlvbi5oaWRlKCk6Yi5ub3RpZmljYXRpb24udXBkYXRlKHttZXNzYWdlOjE9PWM/YS5sYW5nLnVwbG9hZHdpZGdldC5kb25lT25lOmEubGFuZy51cGxvYWR3aWRnZXQuZG9uZU1hbnkucmVwbGFjZShcIiUxXCIsYyksdHlwZTpcInN1Y2Nlc3NcIixpbXBvcnRhbnQ6MX0pfSl9dmFyIGIsYz1udWxsO2Yub24oXCJ1cGRhdGVcIixmdW5jdGlvbigpeyFjJiZmLnVwbG9hZFRvdGFsJiYoZSgpLGM9Yi5jcmVhdGVUYXNrKHt3ZWlnaHQ6Zi51cGxvYWRUb3RhbH0pKTtjJiZcInVwbG9hZGluZ1wiPT1mLnN0YXR1cyYmYy51cGRhdGUoZi51cGxvYWRlZCl9KTtmLm9uKFwidXBsb2FkZWRcIixmdW5jdGlvbigpe2MmJlxuYy5kb25lKCl9KTtmLm9uKFwiZXJyb3JcIixmdW5jdGlvbigpe2MmJmMuY2FuY2VsKCk7YS5zaG93Tm90aWZpY2F0aW9uKGYubWVzc2FnZSxcIndhcm5pbmdcIil9KTtmLm9uKFwiYWJvcnRcIixmdW5jdGlvbigpe2MmJmMuY2FuY2VsKCk7Q0tFRElUT1IuaW5zdGFuY2VzW2EubmFtZV0mJmEuc2hvd05vdGlmaWNhdGlvbihhLmxhbmcudXBsb2Fkd2lkZ2V0LmFib3J0LFwiaW5mb1wiKX0pfX0pfSgpLFwidXNlIHN0cmljdFwiLGZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShhKXs5Pj1hJiYoYT1cIjBcIithKTtyZXR1cm4gU3RyaW5nKGEpfWZ1bmN0aW9uIGYoYil7dmFyIGM9bmV3IERhdGUsYz1bYy5nZXRGdWxsWWVhcigpLGMuZ2V0TW9udGgoKSsxLGMuZ2V0RGF0ZSgpLGMuZ2V0SG91cnMoKSxjLmdldE1pbnV0ZXMoKSxjLmdldFNlY29uZHMoKV07ZSs9MTtyZXR1cm5cImltYWdlLVwiK0NLRURJVE9SLnRvb2xzLmFycmF5Lm1hcChjLGEpLmpvaW4oXCJcIikrXCItXCIrZStcIi5cIitifXZhciBlPTA7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ1cGxvYWRpbWFnZVwiLFxue3JlcXVpcmVzOlwidXBsb2Fkd2lkZ2V0XCIsb25Mb2FkOmZ1bmN0aW9uKCl7Q0tFRElUT1IuYWRkQ3NzKFwiLmNrZV91cGxvYWRfdXBsb2FkaW5nIGltZ3tvcGFjaXR5OiAwLjN9XCIpfSxpc1N1cHBvcnRlZEVudmlyb25tZW50OmZ1bmN0aW9uKCl7cmV0dXJuIENLRURJVE9SLnBsdWdpbnMuY2xpcGJvYXJkLmlzRmlsZUFwaVN1cHBvcnRlZH0saW5pdDpmdW5jdGlvbihhKXtpZih0aGlzLmlzU3VwcG9ydGVkRW52aXJvbm1lbnQoKSl7dmFyIGM9Q0tFRElUT1IuZmlsZVRvb2xzLGU9Yy5nZXRVcGxvYWRVcmwoYS5jb25maWcsXCJpbWFnZVwiKTtlJiYoYS5jb25maWcuY2xpcGJvYXJkX2hhbmRsZUltYWdlcyYmKGEuY29uZmlnLmNsaXBib2FyZF9oYW5kbGVJbWFnZXM9ITEsQ0tFRElUT1Iud2FybihcImNsaXBib2FyZC1pbWFnZS1oYW5kbGluZy1kaXNhYmxlZFwiLHtlZGl0b3I6YS5uYW1lLHBsdWdpbjpcInVwbG9hZGltYWdlXCJ9KSksYy5hZGRVcGxvYWRXaWRnZXQoYSxcInVwbG9hZGltYWdlXCIse3N1cHBvcnRlZFR5cGVzOi9pbWFnZVxcLyhqcGVnfHBuZ3xnaWZ8Ym1wKS8sXG51cGxvYWRVcmw6ZSxmaWxlVG9FbGVtZW50OmZ1bmN0aW9uKCl7dmFyIGE9bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KFwiaW1nXCIpO2Euc2V0QXR0cmlidXRlKFwic3JjXCIsXCJkYXRhOmltYWdlL2dpZjtiYXNlNjQsUjBsR09EbGhEZ0FPQUlBQUFBQUFBUC8vL3lINUJBQUFBQUFBTEFBQUFBQU9BQTRBQUFJTWhJK3B5KzBQbzV5MDJxc0tBRHNcXHgzZFwiKTtyZXR1cm4gYX0scGFydHM6e2ltZzpcImltZ1wifSxvblVwbG9hZGluZzpmdW5jdGlvbihhKXt0aGlzLnBhcnRzLmltZy5zZXRBdHRyaWJ1dGUoXCJzcmNcIixhLmRhdGEpfSxvblVwbG9hZGVkOmZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMucGFydHMuaW1nLiQ7dGhpcy5yZXBsYWNlV2l0aCgnXFx4M2NpbWcgc3JjXFx4M2RcIicrYS51cmwrJ1wiIHdpZHRoXFx4M2RcIicrKGEucmVzcG9uc2VEYXRhLndpZHRofHxiLm5hdHVyYWxXaWR0aCkrJ1wiIGhlaWdodFxceDNkXCInKyhhLnJlc3BvbnNlRGF0YS5oZWlnaHR8fGIubmF0dXJhbEhlaWdodCkrJ1wiXFx4M2UnKX19KSxcbmEub24oXCJwYXN0ZVwiLGZ1bmN0aW9uKGwpe2lmKGwuZGF0YS5kYXRhVmFsdWUubWF0Y2goLzxpbWdbXFxzXFxTXStkYXRhOi9pKSl7bD1sLmRhdGE7dmFyIG09ZG9jdW1lbnQuaW1wbGVtZW50YXRpb24uY3JlYXRlSFRNTERvY3VtZW50KFwiXCIpLG09bmV3IENLRURJVE9SLmRvbS5lbGVtZW50KG0uYm9keSksZCxoLGc7bS5kYXRhKFwiY2tlLWVkaXRhYmxlXCIsMSk7bS5hcHBlbmRIdG1sKGwuZGF0YVZhbHVlKTtkPW0uZmluZChcImltZ1wiKTtmb3IoZz0wO2c8ZC5jb3VudCgpO2crKyl7aD1kLmdldEl0ZW0oZyk7dmFyIG49aC5nZXRBdHRyaWJ1dGUoXCJzcmNcIiksdz1uJiZcImRhdGE6XCI9PW4uc3Vic3RyaW5nKDAsNSkseD1udWxsPT09aC5kYXRhKFwiY2tlLXJlYWxlbGVtZW50XCIpO3cmJngmJiFoLmRhdGEoXCJja2UtdXBsb2FkLWlkXCIpJiYhaC5pc1JlYWRPbmx5KDEpJiYodz0odz1uLm1hdGNoKC9pbWFnZVxcLyhbYS16XSs/KTsvaSkpJiZ3WzFdfHxcImpwZ1wiLG49YS51cGxvYWRSZXBvc2l0b3J5LmNyZWF0ZShuLFxuZih3KSksbi51cGxvYWQoZSksYy5tYXJrRWxlbWVudChoLFwidXBsb2FkaW1hZ2VcIixuLmlkKSxjLmJpbmROb3RpZmljYXRpb25zKGEsbikpfWwuZGF0YVZhbHVlPW0uZ2V0SHRtbCgpfX0pKX19fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBhKGEpe2Z1bmN0aW9uIGIoYSl7dmFyIGM9ITE7Zy5hdHRhY2hMaXN0ZW5lcihnLFwia2V5ZG93blwiLGZ1bmN0aW9uKCl7dmFyIGI9bS5nZXRCb2R5KCkuZ2V0RWxlbWVudHNCeVRhZyhhKTtpZighYyl7Zm9yKHZhciBkPTA7ZDxiLmNvdW50KCk7ZCsrKWIuZ2V0SXRlbShkKS5zZXRDdXN0b21EYXRhKFwicmV0YWluXCIsITApO2M9ITB9fSxudWxsLG51bGwsMSk7Zy5hdHRhY2hMaXN0ZW5lcihnLFwia2V5dXBcIixmdW5jdGlvbigpe3ZhciBiPW0uZ2V0RWxlbWVudHNCeVRhZyhhKTtjJiYoMT09Yi5jb3VudCgpJiYhYi5nZXRJdGVtKDApLmdldEN1c3RvbURhdGEoXCJyZXRhaW5cIikmJkNLRURJVE9SLnRvb2xzLmlzRW1wdHkoYi5nZXRJdGVtKDApLmdldEF0dHJpYnV0ZXMoKSkmJlxuYi5nZXRJdGVtKDApLnJlbW92ZSgxKSxjPSExKX0pfXZhciBlPXRoaXMuZWRpdG9yO2lmKGUmJiFlLmlzRGV0YWNoZWQoKSl7dmFyIG09YS5kb2N1bWVudCxkPW0uYm9keSxoPW0uZ2V0RWxlbWVudEJ5SWQoXCJja2VfYWN0c2NycHRcIik7aCYmaC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpOyhoPW0uZ2V0RWxlbWVudEJ5SWQoXCJja2Vfc2hpbXNjcnB0XCIpKSYmaC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpOyhoPW0uZ2V0RWxlbWVudEJ5SWQoXCJja2VfYmFzZXRhZ3NjcnB0XCIpKSYmaC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGgpO2QuY29udGVudEVkaXRhYmxlPSEwO0NLRURJVE9SLmVudi5pZSYmKGQuaGlkZUZvY3VzPSEwLGQuZGlzYWJsZWQ9ITAsZC5yZW1vdmVBdHRyaWJ1dGUoXCJkaXNhYmxlZFwiKSk7ZGVsZXRlIHRoaXMuXy5pc0xvYWRpbmdEYXRhO3RoaXMuJD1kO209bmV3IENLRURJVE9SLmRvbS5kb2N1bWVudChtKTt0aGlzLnNldHVwKCk7dGhpcy5maXhJbml0aWFsU2VsZWN0aW9uKCk7XG52YXIgZz10aGlzO0NLRURJVE9SLmVudi5pZSYmIUNLRURJVE9SLmVudi5lZGdlJiZtLmdldERvY3VtZW50RWxlbWVudCgpLmFkZENsYXNzKG0uJC5jb21wYXRNb2RlKTtDS0VESVRPUi5lbnYuaWUmJiFDS0VESVRPUi5lbnYuZWRnZSYmZS5lbnRlck1vZGUhPUNLRURJVE9SLkVOVEVSX1A/YihcInBcIik6Q0tFRElUT1IuZW52LmVkZ2UmJjE1PkNLRURJVE9SLmVudi52ZXJzaW9uJiZlLmVudGVyTW9kZSE9Q0tFRElUT1IuRU5URVJfRElWJiZiKFwiZGl2XCIpO2lmKENLRURJVE9SLmVudi53ZWJraXR8fENLRURJVE9SLmVudi5pZSYmMTA8Q0tFRElUT1IuZW52LnZlcnNpb24pbS5nZXREb2N1bWVudEVsZW1lbnQoKS5vbihcIm1vdXNlZG93blwiLGZ1bmN0aW9uKGEpe2EuZGF0YS5nZXRUYXJnZXQoKS5pcyhcImh0bWxcIikmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLmVkaXRhYmxlKCkuZm9jdXMoKX0pfSk7ZihlKTt0cnl7ZS5kb2N1bWVudC4kLmV4ZWNDb21tYW5kKFwiMkQtcG9zaXRpb25cIiwhMSwhMCl9Y2F0Y2gobil7fShDS0VESVRPUi5lbnYuZ2Vja298fFxuQ0tFRElUT1IuZW52LmllJiZcIkNTUzFDb21wYXRcIj09ZS5kb2N1bWVudC4kLmNvbXBhdE1vZGUpJiZ0aGlzLmF0dGFjaExpc3RlbmVyKHRoaXMsXCJrZXlkb3duXCIsZnVuY3Rpb24oYSl7dmFyIGI9YS5kYXRhLmdldEtleXN0cm9rZSgpO2lmKDMzPT1ifHwzND09YilpZihDS0VESVRPUi5lbnYuaWUpc2V0VGltZW91dChmdW5jdGlvbigpe2UuZ2V0U2VsZWN0aW9uKCkuc2Nyb2xsSW50b1ZpZXcoKX0sMCk7ZWxzZSBpZihlLndpbmRvdy4kLmlubmVySGVpZ2h0PnRoaXMuJC5vZmZzZXRIZWlnaHQpe3ZhciBjPWUuY3JlYXRlUmFuZ2UoKTtjWzMzPT1iP1wibW92ZVRvRWxlbWVudEVkaXRTdGFydFwiOlwibW92ZVRvRWxlbWVudEVkaXRFbmRcIl0odGhpcyk7Yy5zZWxlY3QoKTthLmRhdGEucHJldmVudERlZmF1bHQoKX19KTtDS0VESVRPUi5lbnYuaWUmJnRoaXMuYXR0YWNoTGlzdGVuZXIobSxcImJsdXJcIixmdW5jdGlvbigpe3RyeXttLiQuc2VsZWN0aW9uLmVtcHR5KCl9Y2F0Y2goYSl7fX0pO0NLRURJVE9SLmVudi5pT1MmJlxudGhpcy5hdHRhY2hMaXN0ZW5lcihtLFwidG91Y2hlbmRcIixmdW5jdGlvbigpe2EuZm9jdXMoKX0pO2Q9ZS5kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnKFwidGl0bGVcIikuZ2V0SXRlbSgwKTtkLmRhdGEoXCJja2UtdGl0bGVcIixkLmdldFRleHQoKSk7Q0tFRElUT1IuZW52LmllJiYoZS5kb2N1bWVudC4kLnRpdGxlPXRoaXMuXy5kb2NUaXRsZSk7Q0tFRElUT1IudG9vbHMuc2V0VGltZW91dChmdW5jdGlvbigpe1widW5sb2FkZWRcIj09dGhpcy5zdGF0dXMmJih0aGlzLnN0YXR1cz1cInJlYWR5XCIpO2UuZmlyZShcImNvbnRlbnREb21cIik7dGhpcy5fLmlzUGVuZGluZ0ZvY3VzJiYoZS5mb2N1cygpLHRoaXMuXy5pc1BlbmRpbmdGb2N1cz0hMSk7c2V0VGltZW91dChmdW5jdGlvbigpe2UuZmlyZShcImRhdGFSZWFkeVwiKX0sMCl9LDAsdGhpcyl9fWZ1bmN0aW9uIGYoYSl7ZnVuY3Rpb24gYigpe3ZhciBkO2EuZWRpdGFibGUoKS5hdHRhY2hMaXN0ZW5lcihhLFwic2VsZWN0aW9uQ2hhbmdlXCIsZnVuY3Rpb24oKXt2YXIgYj1cbmEuZ2V0U2VsZWN0aW9uKCkuZ2V0U2VsZWN0ZWRFbGVtZW50KCk7YiYmKGQmJihkLmRldGFjaEV2ZW50KFwib25yZXNpemVzdGFydFwiLGUpLGQ9bnVsbCksYi4kLmF0dGFjaEV2ZW50KFwib25yZXNpemVzdGFydFwiLGUpLGQ9Yi4kKX0pfWZ1bmN0aW9uIGUoYSl7YS5yZXR1cm5WYWx1ZT0hMX1pZihDS0VESVRPUi5lbnYuZ2Vja28pdHJ5e3ZhciBmPWEuZG9jdW1lbnQuJDtmLmV4ZWNDb21tYW5kKFwiZW5hYmxlT2JqZWN0UmVzaXppbmdcIiwhMSwhYS5jb25maWcuZGlzYWJsZU9iamVjdFJlc2l6aW5nKTtmLmV4ZWNDb21tYW5kKFwiZW5hYmxlSW5saW5lVGFibGVFZGl0aW5nXCIsITEsIWEuY29uZmlnLmRpc2FibGVOYXRpdmVUYWJsZUhhbmRsZXMpfWNhdGNoKGQpe31lbHNlIENLRURJVE9SLmVudi5pZSYmMTE+Q0tFRElUT1IuZW52LnZlcnNpb24mJmEuY29uZmlnLmRpc2FibGVPYmplY3RSZXNpemluZyYmYigpfWZ1bmN0aW9uIGUoKXt2YXIgYT1bXTtpZig4PD1DS0VESVRPUi5kb2N1bWVudC4kLmRvY3VtZW50TW9kZSl7YS5wdXNoKFwiaHRtbC5DU1MxQ29tcGF0IFtjb250ZW50ZWRpdGFibGVcXHgzZGZhbHNlXXttaW4taGVpZ2h0OjAgIWltcG9ydGFudH1cIik7XG52YXIgYj1bXSxlO2ZvcihlIGluIENLRURJVE9SLmR0ZC4kcmVtb3ZlRW1wdHkpYi5wdXNoKFwiaHRtbC5DU1MxQ29tcGF0IFwiK2UrXCJbY29udGVudGVkaXRhYmxlXFx4M2RmYWxzZV1cIik7YS5wdXNoKGIuam9pbihcIixcIikrXCJ7ZGlzcGxheTppbmxpbmUtYmxvY2t9XCIpfWVsc2UgQ0tFRElUT1IuZW52LmdlY2tvJiYoYS5wdXNoKFwiaHRtbHtoZWlnaHQ6MTAwJSAhaW1wb3J0YW50fVwiKSxhLnB1c2goXCJpbWc6LW1vei1icm9rZW57LW1vei1mb3JjZS1icm9rZW4taW1hZ2UtaWNvbjoxO21pbi13aWR0aDoyNHB4O21pbi1oZWlnaHQ6MjRweH1cIikpO2EucHVzaChcImh0bWx7Y3Vyc29yOnRleHQ7KmN1cnNvcjphdXRvfVwiKTthLnB1c2goXCJpbWcsaW5wdXQsdGV4dGFyZWF7Y3Vyc29yOmRlZmF1bHR9XCIpO3JldHVybiBhLmpvaW4oXCJcXG5cIil9dmFyIGI7Q0tFRElUT1IucGx1Z2lucy5hZGQoXCJ3eXNpd3lnYXJlYVwiLHtpbml0OmZ1bmN0aW9uKGEpe2EuY29uZmlnLmZ1bGxQYWdlJiZhLmFkZEZlYXR1cmUoe2FsbG93ZWRDb250ZW50OlwiaHRtbCBoZWFkIHRpdGxlOyBzdHlsZSBbbWVkaWEsdHlwZV07IGJvZHkgKCopW2lkXTsgbWV0YSBsaW5rIFsqXVwiLFxucmVxdWlyZWRDb250ZW50OlwiYm9keVwifSk7YS5hZGRNb2RlKFwid3lzaXd5Z1wiLGZ1bmN0aW9uKGUpe2Z1bmN0aW9uIGYoZyl7ZyYmZy5yZW1vdmVMaXN0ZW5lcigpO2lmKCFhLmlzRGVzdHJveWVkKCkmJiFhLmlzRGV0YWNoZWQoKSYmKGEuZWRpdGFibGUobmV3IGIoYSxuLmdldEZyYW1lRG9jdW1lbnQoKS5nZXRCb2R5KCkpKSxhLnNldERhdGEoYS5nZXREYXRhKDEpLGUpLHopKXtpZih1KWEub24oXCJtb2RlXCIsbSx7aWZyYW1lOm4sZWRpdG9yOmEsY2FsbGJhY2s6ZX0pO2Eub24oXCJtb2RlXCIsZnVuY3Rpb24oKXthLnN0YXR1cz1cInJlYWR5XCJ9KTtkKCl9fWZ1bmN0aW9uIG0oYSl7YSYmYS5yZW1vdmVMaXN0ZW5lcigpO24ub24oXCJsb2FkXCIsZnVuY3Rpb24oKXtwJiYocD0hMSxoKCkpfSl9ZnVuY3Rpb24gZCgpe3E9bmV3IE11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24oYil7Zm9yKHZhciBkPTA7ZDxiLmxlbmd0aDtkKyspe3ZhciBlPWJbZF07aWYoXCJjaGlsZExpc3RcIj09PWUudHlwZSYmMCE9PVxuZS5hZGRlZE5vZGVzLmxlbmd0aClmb3IodmFyIGY9MDtmPGUuYWRkZWROb2Rlcy5sZW5ndGg7ZisrKXt2YXIgZz1lLmFkZGVkTm9kZXNbZl07Zy5jb250YWlucyYmZy5jb250YWlucyhhLmNvbnRhaW5lci4kKSYmKHU/cD0hMDpoKCkpfX19KTtxLm9ic2VydmUoYS5jb25maWcub2JzZXJ2YWJsZVBhcmVudCx7Y2hpbGRMaXN0OiEwLHN1YnRyZWU6ITB9KX1mdW5jdGlvbiBoKCl7dmFyIGQ9YS5nZXREYXRhKCExKSxmO2EuZWRpdGFibGUoKS5wcmVzZXJ2ZUlmcmFtZT0hMDthLmVkaXRhYmxlKG51bGwpO2Y9bmV3IGIoYSxuLmdldEZyYW1lRG9jdW1lbnQoKS5nZXRCb2R5KCkpO2EuZWRpdGFibGUoZik7YS5zdGF0dXM9XCJyZWNyZWF0aW5nXCI7YS5zZXREYXRhKGQse2NhbGxiYWNrOmUsaW50ZXJuYWw6ITEsbm9TbmFwc2hvdDohMX0pfXZhciBnPVwiZG9jdW1lbnQub3BlbigpO1wiKyhDS0VESVRPUi5lbnYuaWU/XCIoXCIrQ0tFRElUT1IudG9vbHMuZml4RG9tYWluK1wiKSgpO1wiOlwiXCIpK1wiZG9jdW1lbnQuY2xvc2UoKTtcIixcbmc9Q0tFRElUT1IuZW52LmFpcj9cImphdmFzY3JpcHQ6dm9pZCgwKVwiOkNLRURJVE9SLmVudi5pZSYmIUNLRURJVE9SLmVudi5lZGdlP1wiamF2YXNjcmlwdDp2b2lkKGZ1bmN0aW9uKCl7XCIrZW5jb2RlVVJJQ29tcG9uZW50KGcpK1wifSgpKVwiOlwiXCIsbj1DS0VESVRPUi5kb20uZWxlbWVudC5jcmVhdGVGcm9tSHRtbCgnXFx4M2NpZnJhbWUgc3JjXFx4M2RcIicrZysnXCIgZnJhbWVCb3JkZXJcXHgzZFwiMFwiXFx4M2VcXHgzYy9pZnJhbWVcXHgzZScpO24uc2V0U3R5bGVzKHt3aWR0aDpcIjEwMCVcIixoZWlnaHQ6XCIxMDAlXCJ9KTtuLmFkZENsYXNzKFwiY2tlX3d5c2l3eWdfZnJhbWVcIikuYWRkQ2xhc3MoXCJja2VfcmVzZXRcIik7Zz1hLnVpLnNwYWNlKFwiY29udGVudHNcIik7Zy5hcHBlbmQobik7dmFyIHc9Q0tFRElUT1IuZW52LmllJiYhQ0tFRElUT1IuZW52LmVkZ2V8fENLRURJVE9SLmVudi5nZWNrbztpZih3KW4ub24oXCJsb2FkXCIsZik7dmFyIHg9YS50aXRsZSxyPWEuZmlyZShcImFyaWFFZGl0b3JIZWxwTGFiZWxcIixcbnt9KS5sYWJlbCxwPSExLHU9Q0tFRElUT1IuZW52LmllJiYxMT09PUNLRURJVE9SLmVudi52ZXJzaW9uLHo9ISF3aW5kb3cuTXV0YXRpb25PYnNlcnZlcixxO3gmJihDS0VESVRPUi5lbnYuaWUmJnImJih4Kz1cIiwgXCIrciksbi5zZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiLHgpKTtpZihyKXt2YXIgeD1DS0VESVRPUi50b29scy5nZXROZXh0SWQoKSxBPUNLRURJVE9SLmRvbS5lbGVtZW50LmNyZWF0ZUZyb21IdG1sKCdcXHgzY3NwYW4gaWRcXHgzZFwiJyt4KydcIiBjbGFzc1xceDNkXCJja2Vfdm9pY2VfbGFiZWxcIlxceDNlJytyK1wiXFx4M2Mvc3BhblxceDNlXCIpO2cuYXBwZW5kKEEsMSk7bi5zZXRBdHRyaWJ1dGUoXCJhcmlhLWRlc2NyaWJlZGJ5XCIseCl9YS5vbihcImJlZm9yZU1vZGVVbmxvYWRcIixmdW5jdGlvbihhKXthLnJlbW92ZUxpc3RlbmVyKCk7QSYmQS5yZW1vdmUoKTt6JiZxLmRpc2Nvbm5lY3QoKX0pO2Eub24oXCJkZXN0cm95XCIsZnVuY3Rpb24oKXtxJiZxLmRpc2Nvbm5lY3QoKX0pO24uc2V0QXR0cmlidXRlcyh7dGFiSW5kZXg6YS50YWJJbmRleCxcbmFsbG93VHJhbnNwYXJlbmN5OlwidHJ1ZVwifSk7IXcmJmYoKTthLmZpcmUoXCJhcmlhV2lkZ2V0XCIsbil9KX19KTtDS0VESVRPUi5lZGl0b3IucHJvdG90eXBlLmFkZENvbnRlbnRzQ3NzPWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXMuY29uZmlnLGU9Yi5jb250ZW50c0NzcztDS0VESVRPUi50b29scy5pc0FycmF5KGUpfHwoYi5jb250ZW50c0Nzcz1lP1tlXTpbXSk7Yi5jb250ZW50c0Nzcy5wdXNoKGEpfTtiPUNLRURJVE9SLnRvb2xzLmNyZWF0ZUNsYXNzKHskOmZ1bmN0aW9uKCl7dGhpcy5iYXNlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0aGlzLl8uZnJhbWVMb2FkZWRIYW5kbGVyPUNLRURJVE9SLnRvb2xzLmFkZEZ1bmN0aW9uKGZ1bmN0aW9uKGIpe0NLRURJVE9SLnRvb2xzLnNldFRpbWVvdXQoYSwwLHRoaXMsYil9LHRoaXMpO3RoaXMuXy5kb2NUaXRsZT10aGlzLmdldFdpbmRvdygpLmdldEZyYW1lKCkuZ2V0QXR0cmlidXRlKFwidGl0bGVcIil8fFwiwqBcIn0sYmFzZTpDS0VESVRPUi5lZGl0YWJsZSxcbnByb3RvOntwcmVzZXJ2ZUlmcmFtZTohMSxzZXREYXRhOmZ1bmN0aW9uKGEsYil7dmFyIGY9dGhpcy5lZGl0b3I7aWYoYil0aGlzLnNldEh0bWwoYSksdGhpcy5maXhJbml0aWFsU2VsZWN0aW9uKCksZi5maXJlKFwiZGF0YVJlYWR5XCIpO2Vsc2V7dGhpcy5fLmlzTG9hZGluZ0RhdGE9ITA7Zi5fLmRhdGFTdG9yZT17aWQ6MX07dmFyIG09Zi5jb25maWcsZD1tLmZ1bGxQYWdlLGg9bS5kb2NUeXBlLGc9Q0tFRElUT1IudG9vbHMuYnVpbGRTdHlsZUh0bWwoZSgpKS5yZXBsYWNlKC88c3R5bGU+LywnXFx4M2NzdHlsZSBkYXRhLWNrZS10ZW1wXFx4M2RcIjFcIlxceDNlJyk7ZHx8KGcrPUNLRURJVE9SLnRvb2xzLmJ1aWxkU3R5bGVIdG1sKGYuY29uZmlnLmNvbnRlbnRzQ3NzKSk7dmFyIG49bS5iYXNlSHJlZj8nXFx4M2NiYXNlIGhyZWZcXHgzZFwiJyttLmJhc2VIcmVmKydcIiBkYXRhLWNrZS10ZW1wXFx4M2RcIjFcIiAvXFx4M2UnOlwiXCI7ZCYmKGE9YS5yZXBsYWNlKC88IURPQ1RZUEVbXj5dKj4vaSxmdW5jdGlvbihhKXtmLmRvY1R5cGU9XG5oPWE7cmV0dXJuXCJcIn0pLnJlcGxhY2UoLzxcXD94bWxcXHNbXlxcP10qXFw/Pi9pLGZ1bmN0aW9uKGEpe2YueG1sRGVjbGFyYXRpb249YTtyZXR1cm5cIlwifSkpO2E9Zi5kYXRhUHJvY2Vzc29yLnRvSHRtbChhKTtkPygvPGJvZHlbXFxzfD5dLy50ZXN0KGEpfHwoYT1cIlxceDNjYm9keVxceDNlXCIrYSksLzxodG1sW1xcc3w+XS8udGVzdChhKXx8KGE9XCJcXHgzY2h0bWxcXHgzZVwiK2ErXCJcXHgzYy9odG1sXFx4M2VcIiksLzxoZWFkW1xcc3w+XS8udGVzdChhKT8vPHRpdGxlW1xcc3w+XS8udGVzdChhKXx8KGE9YS5yZXBsYWNlKC88aGVhZFtePl0qPi8sXCIkXFx4MjZcXHgzY3RpdGxlXFx4M2VcXHgzYy90aXRsZVxceDNlXCIpKTphPWEucmVwbGFjZSgvPGh0bWxbXj5dKj4vLFwiJFxceDI2XFx4M2NoZWFkXFx4M2VcXHgzY3RpdGxlXFx4M2VcXHgzYy90aXRsZVxceDNlXFx4M2MvaGVhZFxceDNlXCIpLG4mJihhPWEucmVwbGFjZSgvPGhlYWRbXj5dKj8+LyxcIiRcXHgyNlwiK24pKSxhPWEucmVwbGFjZSgvPFxcL2hlYWRcXHMqPi8sZytcIiRcXHgyNlwiKSxhPVxuaCthKTphPW0uZG9jVHlwZSsnXFx4M2NodG1sIGRpclxceDNkXCInK20uY29udGVudHNMYW5nRGlyZWN0aW9uKydcIiBsYW5nXFx4M2RcIicrKG0uY29udGVudHNMYW5ndWFnZXx8Zi5sYW5nQ29kZSkrJ1wiXFx4M2VcXHgzY2hlYWRcXHgzZVxceDNjdGl0bGVcXHgzZScrdGhpcy5fLmRvY1RpdGxlK1wiXFx4M2MvdGl0bGVcXHgzZVwiK24rZytcIlxceDNjL2hlYWRcXHgzZVxceDNjYm9keVwiKyhtLmJvZHlJZD8nIGlkXFx4M2RcIicrbS5ib2R5SWQrJ1wiJzpcIlwiKSsobS5ib2R5Q2xhc3M/JyBjbGFzc1xceDNkXCInK20uYm9keUNsYXNzKydcIic6XCJcIikrXCJcXHgzZVwiK2ErXCJcXHgzYy9ib2R5XFx4M2VcXHgzYy9odG1sXFx4M2VcIjtDS0VESVRPUi5lbnYuZ2Vja28mJihhPWEucmVwbGFjZSgvPGJvZHkvLCdcXHgzY2JvZHkgY29udGVudGVkaXRhYmxlXFx4M2RcInRydWVcIiAnKSwyRTQ+Q0tFRElUT1IuZW52LnZlcnNpb24mJihhPWEucmVwbGFjZSgvPGJvZHlbXj5dKj4vLFwiJFxceDI2XFx4M2MhLS0gY2tlLWNvbnRlbnQtc3RhcnQgLS1cXHgzZVwiKSkpO1xuYT1hLnJlcGxhY2UoLzxib2R5LywnXFx4M2Nib2R5IHJvbGVcXHgzZFwidGV4dGJveFwiIGFyaWEtbXVsdGlsaW5lXFx4M2RcInRydWVcIicpO2YudGl0bGUmJihhPWEucmVwbGFjZSgvPGJvZHkvLCdcXHgzY2JvZHkgYXJpYS1sYWJlbFxceDNkXCInK0NLRURJVE9SLnRvb2xzLmh0bWxFbmNvZGVBdHRyKGYudGl0bGUpKydcIicpKTtDS0VESVRPUi5lbnYuZ2Vja298fChhPWEucmVwbGFjZShcIlxceDNjYm9keVwiLCdcXHgzY2JvZHkgdGFiaW5kZXhcXHgzZFwiMFwiICcpKTttPSdcXHgzY3NjcmlwdCBpZFxceDNkXCJja2VfYWN0c2NycHRcIiB0eXBlXFx4M2RcInRleHQvamF2YXNjcmlwdFwiJysoQ0tFRElUT1IuZW52LmllPycgZGVmZXJcXHgzZFwiZGVmZXJcIiAnOlwiXCIpK1wiXFx4M2V2YXIgd2FzTG9hZGVkXFx4M2QwO2Z1bmN0aW9uIG9ubG9hZCgpe2lmKCF3YXNMb2FkZWQpd2luZG93LnBhcmVudC5DS0VESVRPUiBcXHgyNlxceDI2IHdpbmRvdy5wYXJlbnQuQ0tFRElUT1IudG9vbHMuY2FsbEZ1bmN0aW9uKFwiK3RoaXMuXy5mcmFtZUxvYWRlZEhhbmRsZXIrXG5cIix3aW5kb3cpO3dhc0xvYWRlZFxceDNkMTt9XCIrKENLRURJVE9SLmVudi5pZT9cIm9ubG9hZCgpO1wiOidkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKFwiRE9NQ29udGVudExvYWRlZFwiLCBvbmxvYWQsIGZhbHNlICk7JykrXCJcXHgzYy9zY3JpcHRcXHgzZVwiO0NLRURJVE9SLmVudi5pZSYmOT5DS0VESVRPUi5lbnYudmVyc2lvbiYmKG0rPSdcXHgzY3NjcmlwdCBpZFxceDNkXCJja2Vfc2hpbXNjcnB0XCJcXHgzZXdpbmRvdy5wYXJlbnQuQ0tFRElUT1IudG9vbHMuZW5hYmxlSHRtbDVFbGVtZW50cyhkb2N1bWVudClcXHgzYy9zY3JpcHRcXHgzZScpO24mJkNLRURJVE9SLmVudi5pZSYmMTA+Q0tFRElUT1IuZW52LnZlcnNpb24mJihtKz0nXFx4M2NzY3JpcHQgaWRcXHgzZFwiY2tlX2Jhc2V0YWdzY3JwdFwiXFx4M2V2YXIgYmFzZVRhZyBcXHgzZCBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCBcImJhc2VcIiApO2Jhc2VUYWcuaHJlZiBcXHgzZCBiYXNlVGFnLmhyZWY7XFx4M2Mvc2NyaXB0XFx4M2UnKTthPWEucmVwbGFjZSgvKD89XFxzKjxcXC8oOj9oZWFkKT4pLyxcbm0pO3RoaXMuY2xlYXJDdXN0b21EYXRhKCk7dGhpcy5jbGVhckxpc3RlbmVycygpO2YuZmlyZShcImNvbnRlbnREb21VbmxvYWRcIik7dmFyIHc9dGhpcy5nZXREb2N1bWVudCgpO3RyeXt3LndyaXRlKGEpfWNhdGNoKHgpe3NldFRpbWVvdXQoZnVuY3Rpb24oKXt3LndyaXRlKGEpfSwwKX19fSxnZXREYXRhOmZ1bmN0aW9uKGEpe2lmKGEpcmV0dXJuIHRoaXMuZ2V0SHRtbCgpO2E9dGhpcy5lZGl0b3I7dmFyIGI9YS5jb25maWcsZT1iLmZ1bGxQYWdlLGY9ZSYmYS5kb2NUeXBlLGQ9ZSYmYS54bWxEZWNsYXJhdGlvbixoPXRoaXMuZ2V0RG9jdW1lbnQoKSxoPWU/aC5nZXREb2N1bWVudEVsZW1lbnQoKS5nZXRPdXRlckh0bWwoKTpoLmdldEJvZHkoKS5nZXRIdG1sKCk7Q0tFRElUT1IuZW52LmdlY2tvJiZiLmVudGVyTW9kZSE9Q0tFRElUT1IuRU5URVJfQlImJihoPWgucmVwbGFjZSgvPGJyPig/PVxccyooOj8kfDxcXC9ib2R5PikpLyxcIlwiKSk7ZSYmKGg9aC5yZXBsYWNlKC88Ym9keSguKj8pcm9sZT1cIj90ZXh0Ym94XCI/L2ksXG5cIlxceDNjYm9keSQxXCIpLnJlcGxhY2UoLzxib2R5KC4qPylhcmlhLW11bHRpbGluZT1cIj90cnVlXCI/L2ksXCJcXHgzY2JvZHkkMVwiKS5yZXBsYWNlKC88Ym9keSguKj8pdGFiaW5kZXg9XCI/MFwiPy9pLFwiXFx4M2Nib2R5JDFcIikucmVwbGFjZSgvPGJvZHkoLio/KWFyaWEtbGFiZWw9XCIoLis/KVwiL2ksXCJcXHgzY2JvZHkkMVwiKS5yZXBsYWNlKC88Ym9keSguKj8pYXJpYS1yZWFkb25seT1cIj8oPzp0cnVlfGZhbHNlKVwiPy9pLFwiXFx4M2Nib2R5JDFcIikpO2g9YS5kYXRhUHJvY2Vzc29yLnRvRGF0YUZvcm1hdChoKTtkJiYoaD1kK1wiXFxuXCIraCk7ZiYmKGg9ZitcIlxcblwiK2gpO3JldHVybiBofSxmb2N1czpmdW5jdGlvbigpe3RoaXMuXy5pc0xvYWRpbmdEYXRhP3RoaXMuXy5pc1BlbmRpbmdGb2N1cz0hMDpiLmJhc2VQcm90by5mb2N1cy5jYWxsKHRoaXMpfSxkZXRhY2g6ZnVuY3Rpb24oKXtpZighdGhpcy5wcmVzZXJ2ZUlmcmFtZSl7dmFyIGE9dGhpcy5lZGl0b3IsZT1hLmRvY3VtZW50LGE9YS5jb250YWluZXIuZmluZE9uZShcImlmcmFtZS5ja2Vfd3lzaXd5Z19mcmFtZVwiKTtcbmIuYmFzZVByb3RvLmRldGFjaC5jYWxsKHRoaXMpO3RoaXMuY2xlYXJDdXN0b21EYXRhKHRoaXMuXy5leHBhbmRvTnVtYmVyKTtlLmdldERvY3VtZW50RWxlbWVudCgpLmNsZWFyQ3VzdG9tRGF0YSgpO0NLRURJVE9SLnRvb2xzLnJlbW92ZUZ1bmN0aW9uKHRoaXMuXy5mcmFtZUxvYWRlZEhhbmRsZXIpO2EmJihhLmNsZWFyQ3VzdG9tRGF0YSgpLChlPWEucmVtb3ZlQ3VzdG9tRGF0YShcIm9uUmVzaXplXCIpKSYmZS5yZW1vdmVMaXN0ZW5lcigpLGEuaXNEZXRhY2hlZCgpfHxhLnJlbW92ZSgpKX19fX0pfSgpLENLRURJVE9SLmNvbmZpZy5kaXNhYmxlT2JqZWN0UmVzaXppbmc9ITEsQ0tFRElUT1IuY29uZmlnLmRpc2FibGVOYXRpdmVUYWJsZUhhbmRsZXM9ITAsQ0tFRElUT1IuY29uZmlnLmRpc2FibGVOYXRpdmVTcGVsbENoZWNrZXI9ITAsQ0tFRElUT1IuY29uZmlnLm9ic2VydmFibGVQYXJlbnQ9Q0tFRElUT1IuZG9jdW1lbnQuJCxDS0VESVRPUi5jb25maWcucGx1Z2lucz1cImRpYWxvZ3VpLGRpYWxvZyxhMTF5aGVscCxhYm91dCxiYXNpY3N0eWxlcyxibG9ja3F1b3RlLG5vdGlmaWNhdGlvbixidXR0b24sdG9vbGJhcixjbGlwYm9hcmQscGFuZWwsZmxvYXRwYW5lbCxtZW51LGNvbnRleHRtZW51LGVsZW1lbnRzcGF0aCxpbmRlbnQsaW5kZW50bGlzdCxsaXN0LGVudGVya2V5LGVudGl0aWVzLHBvcHVwLGZpbGV0b29scyxmaWxlYnJvd3NlcixmbG9hdGluZ3NwYWNlLGxpc3RibG9jayxyaWNoY29tYm8sZm9ybWF0LGhvcml6b250YWxydWxlLGh0bWx3cml0ZXIsaW1hZ2UsZmFrZW9iamVjdHMsbGluayxtYWdpY2xpbmUsbWF4aW1pemUseG1sLGFqYXgscGFzdGV0b29scyxwYXN0ZWZyb21nZG9jcyxwYXN0ZWZyb21saWJyZW9mZmljZSxwYXN0ZWZyb213b3JkLHBhc3RldGV4dCxyZW1vdmVmb3JtYXQscmVzaXplLG1lbnVidXR0b24sc2NheXQsc2hvd2JvcmRlcnMsc291cmNlYXJlYSxzcGVjaWFsY2hhcixzdHlsZXNjb21ibyx0YWIsdGFibGUsdGFibGV0b29scyx0YWJsZXNlbGVjdGlvbix1bmRvLGxpbmV1dGlscyx3aWRnZXRzZWxlY3Rpb24sd2lkZ2V0LG5vdGlmaWNhdGlvbmFnZ3JlZ2F0b3IsdXBsb2Fkd2lkZ2V0LHVwbG9hZGltYWdlLHd5c2l3eWdhcmVhXCIsXG5DS0VESVRPUi5jb25maWcuc2tpbj1cIm1vb25vLWxpc2FcIixmdW5jdGlvbigpe3ZhciBhPWZ1bmN0aW9uKGEsZSl7dmFyIGI9Q0tFRElUT1IuZ2V0VXJsKFwicGx1Z2lucy9cIitlKTthPWEuc3BsaXQoXCIsXCIpO2Zvcih2YXIgYz0wO2M8YS5sZW5ndGg7YysrKUNLRURJVE9SLnNraW4uaWNvbnNbYVtjXV09e3BhdGg6YixvZmZzZXQ6LWFbKytjXSxiZ3NpemU6YVsrK2NdfX07Q0tFRElUT1IuZW52LmhpZHBpP2EoXCJhYm91dCwwLCxib2xkLDI0LCxpdGFsaWMsNDgsLHN0cmlrZSw3Miwsc3Vic2NyaXB0LDk2LCxzdXBlcnNjcmlwdCwxMjAsLHVuZGVybGluZSwxNDQsLGJpZGlsdHIsMTY4LCxiaWRpcnRsLDE5MiwsYmxvY2txdW90ZSwyMTYsLGNvcHktcnRsLDI0MCwsY29weSwyNjQsLGN1dC1ydGwsMjg4LCxjdXQsMzEyLCxwYXN0ZS1ydGwsMzM2LCxwYXN0ZSwzNjAsLGNvZGVzbmlwcGV0LDM4NCwsYmdjb2xvciw0MDgsLHRleHRjb2xvciw0MzIsLGNvcHlmb3JtYXR0aW5nLDQ1NiwsY3JlYXRlZGl2LDQ4MCwsZG9jcHJvcHMtcnRsLDUwNCwsZG9jcHJvcHMsNTI4LCxlYXN5aW1hZ2VhbGlnbmNlbnRlciw1NTIsLGVhc3lpbWFnZWFsaWdubGVmdCw1NzYsLGVhc3lpbWFnZWFsaWducmlnaHQsNjAwLCxlYXN5aW1hZ2VhbHQsNjI0LCxlYXN5aW1hZ2VmdWxsLDY0OCwsZWFzeWltYWdlc2lkZSw2NzIsLGVhc3lpbWFnZXVwbG9hZCw2OTYsLGVtYmVkLDcyMCwsZW1iZWRzZW1hbnRpYyw3NDQsLGVtb2ppcGFuZWwsNzY4LCxleHBvcnRwZGYsNzkyLCxmaW5kLXJ0bCw4MTYsLGZpbmQsODQwLCxyZXBsYWNlLDg2NCwsYnV0dG9uLDg4OCwsY2hlY2tib3gsOTEyLCxmb3JtLDkzNiwsaGlkZGVuZmllbGQsOTYwLCxpbWFnZWJ1dHRvbiw5ODQsLHJhZGlvLDEwMDgsLHNlbGVjdC1ydGwsMTAzMiwsc2VsZWN0LDEwNTYsLHRleHRhcmVhLXJ0bCwxMDgwLCx0ZXh0YXJlYSwxMTA0LCx0ZXh0ZmllbGQtcnRsLDExMjgsLHRleHRmaWVsZCwxMTUyLCxob3Jpem9udGFscnVsZSwxMTc2LCxpZnJhbWUsMTIwMCwsaW1hZ2UsMTIyNCwsaW5kZW50LXJ0bCwxMjQ4LCxpbmRlbnQsMTI3Miwsb3V0ZGVudC1ydGwsMTI5Niwsb3V0ZGVudCwxMzIwLCxqdXN0aWZ5YmxvY2ssMTM0NCwsanVzdGlmeWNlbnRlciwxMzY4LCxqdXN0aWZ5bGVmdCwxMzkyLCxqdXN0aWZ5cmlnaHQsMTQxNiwsbGFuZ3VhZ2UsMTQ0MCwsYW5jaG9yLXJ0bCwxNDY0LCxhbmNob3IsMTQ4OCwsbGluaywxNTEyLCx1bmxpbmssMTUzNiwsYnVsbGV0ZWRsaXN0LXJ0bCwxNTYwLCxidWxsZXRlZGxpc3QsMTU4NCwsbnVtYmVyZWRsaXN0LXJ0bCwxNjA4LCxudW1iZXJlZGxpc3QsMTYzMiwsbWF0aGpheCwxNjU2LCxtYXhpbWl6ZSwxNjgwLCxuZXdwYWdlLXJ0bCwxNzA0LCxuZXdwYWdlLDE3MjgsLHBhZ2VicmVhay1ydGwsMTc1MiwscGFnZWJyZWFrLDE3NzYsLHBhc3RlZnJvbXdvcmQtcnRsLDE4MDAsLHBhc3RlZnJvbXdvcmQsMTgyNCwscGFzdGV0ZXh0LXJ0bCwxODQ4LCxwYXN0ZXRleHQsMTg3MiwscGxhY2Vob2xkZXIsMTg5NiwscHJldmlldy1ydGwsMTkyMCwscHJldmlldywxOTQ0LCxwcmludCwxOTY4LCxyZW1vdmVmb3JtYXQsMTk5Miwsc2F2ZSwyMDE2LCxzY2F5dCwyMDQwLCxzZWxlY3RhbGwsMjA2NCwsc2hvd2Jsb2Nrcy1ydGwsMjA4OCwsc2hvd2Jsb2NrcywyMTEyLCxzbWlsZXksMjEzNiwsc291cmNlLXJ0bCwyMTYwLCxzb3VyY2UsMjE4NCwsc291cmNlZGlhbG9nLXJ0bCwyMjA4LCxzb3VyY2VkaWFsb2csMjIzMiwsc3BlY2lhbGNoYXIsMjI1NiwsdGFibGUsMjI4MCwsdGVtcGxhdGVzLXJ0bCwyMzA0LCx0ZW1wbGF0ZXMsMjMyOCwsdWljb2xvciwyMzUyLCxyZWRvLXJ0bCwyMzc2LCxyZWRvLDI0MDAsLHVuZG8tcnRsLDI0MjQsLHVuZG8sMjQ0OCwsc2ltcGxlYm94LDQ5NDQsYXV0b1wiLFxuXCJpY29uc19oaWRwaS5wbmdcIik6YShcImFib3V0LDAsYXV0byxib2xkLDI0LGF1dG8saXRhbGljLDQ4LGF1dG8sc3RyaWtlLDcyLGF1dG8sc3Vic2NyaXB0LDk2LGF1dG8sc3VwZXJzY3JpcHQsMTIwLGF1dG8sdW5kZXJsaW5lLDE0NCxhdXRvLGJpZGlsdHIsMTY4LGF1dG8sYmlkaXJ0bCwxOTIsYXV0byxibG9ja3F1b3RlLDIxNixhdXRvLGNvcHktcnRsLDI0MCxhdXRvLGNvcHksMjY0LGF1dG8sY3V0LXJ0bCwyODgsYXV0byxjdXQsMzEyLGF1dG8scGFzdGUtcnRsLDMzNixhdXRvLHBhc3RlLDM2MCxhdXRvLGNvZGVzbmlwcGV0LDM4NCxhdXRvLGJnY29sb3IsNDA4LGF1dG8sdGV4dGNvbG9yLDQzMixhdXRvLGNvcHlmb3JtYXR0aW5nLDQ1NixhdXRvLGNyZWF0ZWRpdiw0ODAsYXV0byxkb2Nwcm9wcy1ydGwsNTA0LGF1dG8sZG9jcHJvcHMsNTI4LGF1dG8sZWFzeWltYWdlYWxpZ25jZW50ZXIsNTUyLGF1dG8sZWFzeWltYWdlYWxpZ25sZWZ0LDU3NixhdXRvLGVhc3lpbWFnZWFsaWducmlnaHQsNjAwLGF1dG8sZWFzeWltYWdlYWx0LDYyNCxhdXRvLGVhc3lpbWFnZWZ1bGwsNjQ4LGF1dG8sZWFzeWltYWdlc2lkZSw2NzIsYXV0byxlYXN5aW1hZ2V1cGxvYWQsNjk2LGF1dG8sZW1iZWQsNzIwLGF1dG8sZW1iZWRzZW1hbnRpYyw3NDQsYXV0byxlbW9qaXBhbmVsLDc2OCxhdXRvLGV4cG9ydHBkZiw3OTIsYXV0byxmaW5kLXJ0bCw4MTYsYXV0byxmaW5kLDg0MCxhdXRvLHJlcGxhY2UsODY0LGF1dG8sYnV0dG9uLDg4OCxhdXRvLGNoZWNrYm94LDkxMixhdXRvLGZvcm0sOTM2LGF1dG8saGlkZGVuZmllbGQsOTYwLGF1dG8saW1hZ2VidXR0b24sOTg0LGF1dG8scmFkaW8sMTAwOCxhdXRvLHNlbGVjdC1ydGwsMTAzMixhdXRvLHNlbGVjdCwxMDU2LGF1dG8sdGV4dGFyZWEtcnRsLDEwODAsYXV0byx0ZXh0YXJlYSwxMTA0LGF1dG8sdGV4dGZpZWxkLXJ0bCwxMTI4LGF1dG8sdGV4dGZpZWxkLDExNTIsYXV0byxob3Jpem9udGFscnVsZSwxMTc2LGF1dG8saWZyYW1lLDEyMDAsYXV0byxpbWFnZSwxMjI0LGF1dG8saW5kZW50LXJ0bCwxMjQ4LGF1dG8saW5kZW50LDEyNzIsYXV0byxvdXRkZW50LXJ0bCwxMjk2LGF1dG8sb3V0ZGVudCwxMzIwLGF1dG8sanVzdGlmeWJsb2NrLDEzNDQsYXV0byxqdXN0aWZ5Y2VudGVyLDEzNjgsYXV0byxqdXN0aWZ5bGVmdCwxMzkyLGF1dG8sanVzdGlmeXJpZ2h0LDE0MTYsYXV0byxsYW5ndWFnZSwxNDQwLGF1dG8sYW5jaG9yLXJ0bCwxNDY0LGF1dG8sYW5jaG9yLDE0ODgsYXV0byxsaW5rLDE1MTIsYXV0byx1bmxpbmssMTUzNixhdXRvLGJ1bGxldGVkbGlzdC1ydGwsMTU2MCxhdXRvLGJ1bGxldGVkbGlzdCwxNTg0LGF1dG8sbnVtYmVyZWRsaXN0LXJ0bCwxNjA4LGF1dG8sbnVtYmVyZWRsaXN0LDE2MzIsYXV0byxtYXRoamF4LDE2NTYsYXV0byxtYXhpbWl6ZSwxNjgwLGF1dG8sbmV3cGFnZS1ydGwsMTcwNCxhdXRvLG5ld3BhZ2UsMTcyOCxhdXRvLHBhZ2VicmVhay1ydGwsMTc1MixhdXRvLHBhZ2VicmVhaywxNzc2LGF1dG8scGFzdGVmcm9td29yZC1ydGwsMTgwMCxhdXRvLHBhc3RlZnJvbXdvcmQsMTgyNCxhdXRvLHBhc3RldGV4dC1ydGwsMTg0OCxhdXRvLHBhc3RldGV4dCwxODcyLGF1dG8scGxhY2Vob2xkZXIsMTg5NixhdXRvLHByZXZpZXctcnRsLDE5MjAsYXV0byxwcmV2aWV3LDE5NDQsYXV0byxwcmludCwxOTY4LGF1dG8scmVtb3ZlZm9ybWF0LDE5OTIsYXV0byxzYXZlLDIwMTYsYXV0byxzY2F5dCwyMDQwLGF1dG8sc2VsZWN0YWxsLDIwNjQsYXV0byxzaG93YmxvY2tzLXJ0bCwyMDg4LGF1dG8sc2hvd2Jsb2NrcywyMTEyLGF1dG8sc21pbGV5LDIxMzYsYXV0byxzb3VyY2UtcnRsLDIxNjAsYXV0byxzb3VyY2UsMjE4NCxhdXRvLHNvdXJjZWRpYWxvZy1ydGwsMjIwOCxhdXRvLHNvdXJjZWRpYWxvZywyMjMyLGF1dG8sc3BlY2lhbGNoYXIsMjI1NixhdXRvLHRhYmxlLDIyODAsYXV0byx0ZW1wbGF0ZXMtcnRsLDIzMDQsYXV0byx0ZW1wbGF0ZXMsMjMyOCxhdXRvLHVpY29sb3IsMjM1MixhdXRvLHJlZG8tcnRsLDIzNzYsYXV0byxyZWRvLDI0MDAsYXV0byx1bmRvLXJ0bCwyNDI0LGF1dG8sdW5kbywyNDQ4LGF1dG8sc2ltcGxlYm94LDI0NzIsYXV0b1wiLFxuXCJpY29ucy5wbmdcIil9KCkpfSkoKTsiLCIvKiFcbiAqIFNlbGVjdDIgNC4xLjAtcmMuMFxuICogaHR0cHM6Ly9zZWxlY3QyLmdpdGh1Yi5pb1xuICpcbiAqIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZVxuICogaHR0cHM6Ly9naXRodWIuY29tL3NlbGVjdDIvc2VsZWN0Mi9ibG9iL21hc3Rlci9MSUNFTlNFLm1kXG4gKi9cbjsoZnVuY3Rpb24gKGZhY3RvcnkpIHtcbiAgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkge1xuICAgIC8vIEFNRC4gUmVnaXN0ZXIgYXMgYW4gYW5vbnltb3VzIG1vZHVsZS5cbiAgICBkZWZpbmUoWydqcXVlcnknXSwgZmFjdG9yeSk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIG1vZHVsZSA9PT0gJ29iamVjdCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcbiAgICAvLyBOb2RlL0NvbW1vbkpTXG4gICAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAocm9vdCwgalF1ZXJ5KSB7XG4gICAgICBpZiAoalF1ZXJ5ID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgLy8gcmVxdWlyZSgnalF1ZXJ5JykgcmV0dXJucyBhIGZhY3RvcnkgdGhhdCByZXF1aXJlcyB3aW5kb3cgdG9cbiAgICAgICAgLy8gYnVpbGQgYSBqUXVlcnkgaW5zdGFuY2UsIHdlIG5vcm1hbGl6ZSBob3cgd2UgdXNlIG1vZHVsZXNcbiAgICAgICAgLy8gdGhhdCByZXF1aXJlIHRoaXMgcGF0dGVybiBidXQgdGhlIHdpbmRvdyBwcm92aWRlZCBpcyBhIG5vb3BcbiAgICAgICAgLy8gaWYgaXQncyBkZWZpbmVkIChob3cganF1ZXJ5IHdvcmtzKVxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBqUXVlcnkgPSByZXF1aXJlKCdqcXVlcnknKShyb290KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmFjdG9yeShqUXVlcnkpO1xuICAgICAgcmV0dXJuIGpRdWVyeTtcbiAgICB9O1xuICB9IGVsc2Uge1xuICAgIC8vIEJyb3dzZXIgZ2xvYmFsc1xuICAgIGZhY3RvcnkoalF1ZXJ5KTtcbiAgfVxufSAoZnVuY3Rpb24gKGpRdWVyeSkge1xuICAvLyBUaGlzIGlzIG5lZWRlZCBzbyB3ZSBjYW4gY2F0Y2ggdGhlIEFNRCBsb2FkZXIgY29uZmlndXJhdGlvbiBhbmQgdXNlIGl0XG4gIC8vIFRoZSBpbm5lciBmaWxlIHNob3VsZCBiZSB3cmFwcGVkIChieSBgYmFubmVyLnN0YXJ0LmpzYCkgaW4gYSBmdW5jdGlvbiB0aGF0XG4gIC8vIHJldHVybnMgdGhlIEFNRCBsb2FkZXIgcmVmZXJlbmNlcy5cbiAgdmFyIFMyID0oZnVuY3Rpb24gKCkge1xuICAvLyBSZXN0b3JlIHRoZSBTZWxlY3QyIEFNRCBsb2FkZXIgc28gaXQgY2FuIGJlIHVzZWRcbiAgLy8gTmVlZGVkIG1vc3RseSBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMsIHdoZXJlIHRoZSBsb2FkZXIgaXMgbm90IGluc2VydGVkXG4gIGlmIChqUXVlcnkgJiYgalF1ZXJ5LmZuICYmIGpRdWVyeS5mbi5zZWxlY3QyICYmIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCkge1xuICAgIHZhciBTMiA9IGpRdWVyeS5mbi5zZWxlY3QyLmFtZDtcbiAgfVxudmFyIFMyOyhmdW5jdGlvbiAoKSB7IGlmICghUzIgfHwgIVMyLnJlcXVpcmVqcykge1xuaWYgKCFTMikgeyBTMiA9IHt9OyB9IGVsc2UgeyByZXF1aXJlID0gUzI7IH1cbi8qKlxuICogQGxpY2Vuc2UgYWxtb25kIDAuMy4zIENvcHlyaWdodCBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzLlxuICogUmVsZWFzZWQgdW5kZXIgTUlUIGxpY2Vuc2UsIGh0dHA6Ly9naXRodWIuY29tL3JlcXVpcmVqcy9hbG1vbmQvTElDRU5TRVxuICovXG4vL0dvaW5nIHNsb3BweSB0byBhdm9pZCAndXNlIHN0cmljdCcgc3RyaW5nIGNvc3QsIGJ1dCBzdHJpY3QgcHJhY3RpY2VzIHNob3VsZFxuLy9iZSBmb2xsb3dlZC5cbi8qZ2xvYmFsIHNldFRpbWVvdXQ6IGZhbHNlICovXG5cbnZhciByZXF1aXJlanMsIHJlcXVpcmUsIGRlZmluZTtcbihmdW5jdGlvbiAodW5kZWYpIHtcbiAgICB2YXIgbWFpbiwgcmVxLCBtYWtlTWFwLCBoYW5kbGVycyxcbiAgICAgICAgZGVmaW5lZCA9IHt9LFxuICAgICAgICB3YWl0aW5nID0ge30sXG4gICAgICAgIGNvbmZpZyA9IHt9LFxuICAgICAgICBkZWZpbmluZyA9IHt9LFxuICAgICAgICBoYXNPd24gPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICAgICAgICBhcHMgPSBbXS5zbGljZSxcbiAgICAgICAganNTdWZmaXhSZWdFeHAgPSAvXFwuanMkLztcblxuICAgIGZ1bmN0aW9uIGhhc1Byb3Aob2JqLCBwcm9wKSB7XG4gICAgICAgIHJldHVybiBoYXNPd24uY2FsbChvYmosIHByb3ApO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdpdmVuIGEgcmVsYXRpdmUgbW9kdWxlIG5hbWUsIGxpa2UgLi9zb21ldGhpbmcsIG5vcm1hbGl6ZSBpdCB0b1xuICAgICAqIGEgcmVhbCBuYW1lIHRoYXQgY2FuIGJlIG1hcHBlZCB0byBhIHBhdGguXG4gICAgICogQHBhcmFtIHtTdHJpbmd9IG5hbWUgdGhlIHJlbGF0aXZlIG5hbWVcbiAgICAgKiBAcGFyYW0ge1N0cmluZ30gYmFzZU5hbWUgYSByZWFsIG5hbWUgdGhhdCB0aGUgbmFtZSBhcmcgaXMgcmVsYXRpdmVcbiAgICAgKiB0by5cbiAgICAgKiBAcmV0dXJucyB7U3RyaW5nfSBub3JtYWxpemVkIG5hbWVcbiAgICAgKi9cbiAgICBmdW5jdGlvbiBub3JtYWxpemUobmFtZSwgYmFzZU5hbWUpIHtcbiAgICAgICAgdmFyIG5hbWVQYXJ0cywgbmFtZVNlZ21lbnQsIG1hcFZhbHVlLCBmb3VuZE1hcCwgbGFzdEluZGV4LFxuICAgICAgICAgICAgZm91bmRJLCBmb3VuZFN0YXJNYXAsIHN0YXJJLCBpLCBqLCBwYXJ0LCBub3JtYWxpemVkQmFzZVBhcnRzLFxuICAgICAgICAgICAgYmFzZVBhcnRzID0gYmFzZU5hbWUgJiYgYmFzZU5hbWUuc3BsaXQoXCIvXCIpLFxuICAgICAgICAgICAgbWFwID0gY29uZmlnLm1hcCxcbiAgICAgICAgICAgIHN0YXJNYXAgPSAobWFwICYmIG1hcFsnKiddKSB8fCB7fTtcblxuICAgICAgICAvL0FkanVzdCBhbnkgcmVsYXRpdmUgcGF0aHMuXG4gICAgICAgIGlmIChuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gbmFtZS5zcGxpdCgnLycpO1xuICAgICAgICAgICAgbGFzdEluZGV4ID0gbmFtZS5sZW5ndGggLSAxO1xuXG4gICAgICAgICAgICAvLyBJZiB3YW50aW5nIG5vZGUgSUQgY29tcGF0aWJpbGl0eSwgc3RyaXAgLmpzIGZyb20gZW5kXG4gICAgICAgICAgICAvLyBvZiBJRHMuIEhhdmUgdG8gZG8gdGhpcyBoZXJlLCBhbmQgbm90IGluIG5hbWVUb1VybFxuICAgICAgICAgICAgLy8gYmVjYXVzZSBub2RlIGFsbG93cyBlaXRoZXIgLmpzIG9yIG5vbiAuanMgdG8gbWFwXG4gICAgICAgICAgICAvLyB0byBzYW1lIGZpbGUuXG4gICAgICAgICAgICBpZiAoY29uZmlnLm5vZGVJZENvbXBhdCAmJiBqc1N1ZmZpeFJlZ0V4cC50ZXN0KG5hbWVbbGFzdEluZGV4XSkpIHtcbiAgICAgICAgICAgICAgICBuYW1lW2xhc3RJbmRleF0gPSBuYW1lW2xhc3RJbmRleF0ucmVwbGFjZShqc1N1ZmZpeFJlZ0V4cCwgJycpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAvLyBTdGFydHMgd2l0aCBhICcuJyBzbyBuZWVkIHRoZSBiYXNlTmFtZVxuICAgICAgICAgICAgaWYgKG5hbWVbMF0uY2hhckF0KDApID09PSAnLicgJiYgYmFzZVBhcnRzKSB7XG4gICAgICAgICAgICAgICAgLy9Db252ZXJ0IGJhc2VOYW1lIHRvIGFycmF5LCBhbmQgbG9wIG9mZiB0aGUgbGFzdCBwYXJ0LFxuICAgICAgICAgICAgICAgIC8vc28gdGhhdCAuIG1hdGNoZXMgdGhhdCAnZGlyZWN0b3J5JyBhbmQgbm90IG5hbWUgb2YgdGhlIGJhc2VOYW1lJ3NcbiAgICAgICAgICAgICAgICAvL21vZHVsZS4gRm9yIGluc3RhbmNlLCBiYXNlTmFtZSBvZiAnb25lL3R3by90aHJlZScsIG1hcHMgdG9cbiAgICAgICAgICAgICAgICAvLydvbmUvdHdvL3RocmVlLmpzJywgYnV0IHdlIHdhbnQgdGhlIGRpcmVjdG9yeSwgJ29uZS90d28nIGZvclxuICAgICAgICAgICAgICAgIC8vdGhpcyBub3JtYWxpemF0aW9uLlxuICAgICAgICAgICAgICAgIG5vcm1hbGl6ZWRCYXNlUGFydHMgPSBiYXNlUGFydHMuc2xpY2UoMCwgYmFzZVBhcnRzLmxlbmd0aCAtIDEpO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemVkQmFzZVBhcnRzLmNvbmNhdChuYW1lKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy9zdGFydCB0cmltRG90c1xuICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5hbWUubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgICAgICBwYXJ0ID0gbmFtZVtpXTtcbiAgICAgICAgICAgICAgICBpZiAocGFydCA9PT0gJy4nKSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICBpIC09IDE7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJ0ID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIElmIGF0IHRoZSBzdGFydCwgb3IgcHJldmlvdXMgdmFsdWUgaXMgc3RpbGwgLi4sXG4gICAgICAgICAgICAgICAgICAgIC8vIGtlZXAgdGhlbSBzbyB0aGF0IHdoZW4gY29udmVydGVkIHRvIGEgcGF0aCBpdCBtYXlcbiAgICAgICAgICAgICAgICAgICAgLy8gc3RpbGwgd29yayB3aGVuIGNvbnZlcnRlZCB0byBhIHBhdGgsIGV2ZW4gdGhvdWdoXG4gICAgICAgICAgICAgICAgICAgIC8vIGFzIGFuIElEIGl0IGlzIGxlc3MgdGhhbiBpZGVhbC4gSW4gbGFyZ2VyIHBvaW50XG4gICAgICAgICAgICAgICAgICAgIC8vIHJlbGVhc2VzLCBtYXkgYmUgYmV0dGVyIHRvIGp1c3Qga2ljayBvdXQgYW4gZXJyb3IuXG4gICAgICAgICAgICAgICAgICAgIGlmIChpID09PSAwIHx8IChpID09PSAxICYmIG5hbWVbMl0gPT09ICcuLicpIHx8IG5hbWVbaSAtIDFdID09PSAnLi4nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChpID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zcGxpY2UoaSAtIDEsIDIpO1xuICAgICAgICAgICAgICAgICAgICAgICAgaSAtPSAyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9lbmQgdHJpbURvdHNcblxuICAgICAgICAgICAgbmFtZSA9IG5hbWUuam9pbignLycpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9BcHBseSBtYXAgY29uZmlnIGlmIGF2YWlsYWJsZS5cbiAgICAgICAgaWYgKChiYXNlUGFydHMgfHwgc3Rhck1hcCkgJiYgbWFwKSB7XG4gICAgICAgICAgICBuYW1lUGFydHMgPSBuYW1lLnNwbGl0KCcvJyk7XG5cbiAgICAgICAgICAgIGZvciAoaSA9IG5hbWVQYXJ0cy5sZW5ndGg7IGkgPiAwOyBpIC09IDEpIHtcbiAgICAgICAgICAgICAgICBuYW1lU2VnbWVudCA9IG5hbWVQYXJ0cy5zbGljZSgwLCBpKS5qb2luKFwiL1wiKTtcblxuICAgICAgICAgICAgICAgIGlmIChiYXNlUGFydHMpIHtcbiAgICAgICAgICAgICAgICAgICAgLy9GaW5kIHRoZSBsb25nZXN0IGJhc2VOYW1lIHNlZ21lbnQgbWF0Y2ggaW4gdGhlIGNvbmZpZy5cbiAgICAgICAgICAgICAgICAgICAgLy9TbywgZG8gam9pbnMgb24gdGhlIGJpZ2dlc3QgdG8gc21hbGxlc3QgbGVuZ3RocyBvZiBiYXNlUGFydHMuXG4gICAgICAgICAgICAgICAgICAgIGZvciAoaiA9IGJhc2VQYXJ0cy5sZW5ndGg7IGogPiAwOyBqIC09IDEpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hcFZhbHVlID0gbWFwW2Jhc2VQYXJ0cy5zbGljZSgwLCBqKS5qb2luKCcvJyldO1xuXG4gICAgICAgICAgICAgICAgICAgICAgICAvL2Jhc2VOYW1lIHNlZ21lbnQgaGFzICBjb25maWcsIGZpbmQgaWYgaXQgaGFzIG9uZSBmb3JcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBuYW1lLlxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwVmFsdWUgPSBtYXBWYWx1ZVtuYW1lU2VnbWVudF07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcFZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vTWF0Y2gsIHVwZGF0ZSBuYW1lIHRvIHRoZSBuZXcgdmFsdWUuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gbWFwVmFsdWU7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kSSA9IGk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGlmIChmb3VuZE1hcCkge1xuICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAvL0NoZWNrIGZvciBhIHN0YXIgbWFwIG1hdGNoLCBidXQganVzdCBob2xkIG9uIHRvIGl0LFxuICAgICAgICAgICAgICAgIC8vaWYgdGhlcmUgaXMgYSBzaG9ydGVyIHNlZ21lbnQgbWF0Y2ggbGF0ZXIgaW4gYSBtYXRjaGluZ1xuICAgICAgICAgICAgICAgIC8vY29uZmlnLCB0aGVuIGZhdm9yIG92ZXIgdGhpcyBzdGFyIG1hcC5cbiAgICAgICAgICAgICAgICBpZiAoIWZvdW5kU3Rhck1hcCAmJiBzdGFyTWFwICYmIHN0YXJNYXBbbmFtZVNlZ21lbnRdKSB7XG4gICAgICAgICAgICAgICAgICAgIGZvdW5kU3Rhck1hcCA9IHN0YXJNYXBbbmFtZVNlZ21lbnRdO1xuICAgICAgICAgICAgICAgICAgICBzdGFySSA9IGk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWZvdW5kTWFwICYmIGZvdW5kU3Rhck1hcCkge1xuICAgICAgICAgICAgICAgIGZvdW5kTWFwID0gZm91bmRTdGFyTWFwO1xuICAgICAgICAgICAgICAgIGZvdW5kSSA9IHN0YXJJO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoZm91bmRNYXApIHtcbiAgICAgICAgICAgICAgICBuYW1lUGFydHMuc3BsaWNlKDAsIGZvdW5kSSwgZm91bmRNYXApO1xuICAgICAgICAgICAgICAgIG5hbWUgPSBuYW1lUGFydHMuam9pbignLycpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5hbWU7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZVJlcXVpcmUocmVsTmFtZSwgZm9yY2VTeW5jKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAvL0EgdmVyc2lvbiBvZiBhIHJlcXVpcmUgZnVuY3Rpb24gdGhhdCBwYXNzZXMgYSBtb2R1bGVOYW1lXG4gICAgICAgICAgICAvL3ZhbHVlIGZvciBpdGVtcyB0aGF0IG1heSBuZWVkIHRvXG4gICAgICAgICAgICAvL2xvb2sgdXAgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZU5hbWVcbiAgICAgICAgICAgIHZhciBhcmdzID0gYXBzLmNhbGwoYXJndW1lbnRzLCAwKTtcblxuICAgICAgICAgICAgLy9JZiBmaXJzdCBhcmcgaXMgbm90IHJlcXVpcmUoJ3N0cmluZycpLCBhbmQgdGhlcmUgaXMgb25seVxuICAgICAgICAgICAgLy9vbmUgYXJnLCBpdCBpcyB0aGUgYXJyYXkgZm9ybSB3aXRob3V0IGEgY2FsbGJhY2suIEluc2VydFxuICAgICAgICAgICAgLy9hIG51bGwgc28gdGhhdCB0aGUgZm9sbG93aW5nIGNvbmNhdCBpcyBjb3JyZWN0LlxuICAgICAgICAgICAgaWYgKHR5cGVvZiBhcmdzWzBdICE9PSAnc3RyaW5nJyAmJiBhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICAgICAgICAgIGFyZ3MucHVzaChudWxsKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiByZXEuYXBwbHkodW5kZWYsIGFyZ3MuY29uY2F0KFtyZWxOYW1lLCBmb3JjZVN5bmNdKSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWFrZU5vcm1hbGl6ZShyZWxOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIG5vcm1hbGl6ZShuYW1lLCByZWxOYW1lKTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBtYWtlTG9hZChkZXBOYW1lKSB7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgIGRlZmluZWRbZGVwTmFtZV0gPSB2YWx1ZTtcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjYWxsRGVwKG5hbWUpIHtcbiAgICAgICAgaWYgKGhhc1Byb3Aod2FpdGluZywgbmFtZSkpIHtcbiAgICAgICAgICAgIHZhciBhcmdzID0gd2FpdGluZ1tuYW1lXTtcbiAgICAgICAgICAgIGRlbGV0ZSB3YWl0aW5nW25hbWVdO1xuICAgICAgICAgICAgZGVmaW5pbmdbbmFtZV0gPSB0cnVlO1xuICAgICAgICAgICAgbWFpbi5hcHBseSh1bmRlZiwgYXJncyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIWhhc1Byb3AoZGVmaW5lZCwgbmFtZSkgJiYgIWhhc1Byb3AoZGVmaW5pbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ05vICcgKyBuYW1lKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZGVmaW5lZFtuYW1lXTtcbiAgICB9XG5cbiAgICAvL1R1cm5zIGEgcGx1Z2luIXJlc291cmNlIHRvIFtwbHVnaW4sIHJlc291cmNlXVxuICAgIC8vd2l0aCB0aGUgcGx1Z2luIGJlaW5nIHVuZGVmaW5lZCBpZiB0aGUgbmFtZVxuICAgIC8vZGlkIG5vdCBoYXZlIGEgcGx1Z2luIHByZWZpeC5cbiAgICBmdW5jdGlvbiBzcGxpdFByZWZpeChuYW1lKSB7XG4gICAgICAgIHZhciBwcmVmaXgsXG4gICAgICAgICAgICBpbmRleCA9IG5hbWUgPyBuYW1lLmluZGV4T2YoJyEnKSA6IC0xO1xuICAgICAgICBpZiAoaW5kZXggPiAtMSkge1xuICAgICAgICAgICAgcHJlZml4ID0gbmFtZS5zdWJzdHJpbmcoMCwgaW5kZXgpO1xuICAgICAgICAgICAgbmFtZSA9IG5hbWUuc3Vic3RyaW5nKGluZGV4ICsgMSwgbmFtZS5sZW5ndGgpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbcHJlZml4LCBuYW1lXTtcbiAgICB9XG5cbiAgICAvL0NyZWF0ZXMgYSBwYXJ0cyBhcnJheSBmb3IgYSByZWxOYW1lIHdoZXJlIGZpcnN0IHBhcnQgaXMgcGx1Z2luIElELFxuICAgIC8vc2Vjb25kIHBhcnQgaXMgcmVzb3VyY2UgSUQuIEFzc3VtZXMgcmVsTmFtZSBoYXMgYWxyZWFkeSBiZWVuIG5vcm1hbGl6ZWQuXG4gICAgZnVuY3Rpb24gbWFrZVJlbFBhcnRzKHJlbE5hbWUpIHtcbiAgICAgICAgcmV0dXJuIHJlbE5hbWUgPyBzcGxpdFByZWZpeChyZWxOYW1lKSA6IFtdO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIE1ha2VzIGEgbmFtZSBtYXAsIG5vcm1hbGl6aW5nIHRoZSBuYW1lLCBhbmQgdXNpbmcgYSBwbHVnaW5cbiAgICAgKiBmb3Igbm9ybWFsaXphdGlvbiBpZiBuZWNlc3NhcnkuIEdyYWJzIGEgcmVmIHRvIHBsdWdpblxuICAgICAqIHRvbywgYXMgYW4gb3B0aW1pemF0aW9uLlxuICAgICAqL1xuICAgIG1ha2VNYXAgPSBmdW5jdGlvbiAobmFtZSwgcmVsUGFydHMpIHtcbiAgICAgICAgdmFyIHBsdWdpbixcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSksXG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXSxcbiAgICAgICAgICAgIHJlbFJlc291cmNlTmFtZSA9IHJlbFBhcnRzWzFdO1xuXG4gICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcblxuICAgICAgICBpZiAocHJlZml4KSB7XG4gICAgICAgICAgICBwcmVmaXggPSBub3JtYWxpemUocHJlZml4LCByZWxSZXNvdXJjZU5hbWUpO1xuICAgICAgICAgICAgcGx1Z2luID0gY2FsbERlcChwcmVmaXgpO1xuICAgICAgICB9XG5cbiAgICAgICAgLy9Ob3JtYWxpemUgYWNjb3JkaW5nXG4gICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgIGlmIChwbHVnaW4gJiYgcGx1Z2luLm5vcm1hbGl6ZSkge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBwbHVnaW4ubm9ybWFsaXplKG5hbWUsIG1ha2VOb3JtYWxpemUocmVsUmVzb3VyY2VOYW1lKSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIG5hbWUgPSBub3JtYWxpemUobmFtZSwgcmVsUmVzb3VyY2VOYW1lKTtcbiAgICAgICAgICAgIHBhcnRzID0gc3BsaXRQcmVmaXgobmFtZSk7XG4gICAgICAgICAgICBwcmVmaXggPSBwYXJ0c1swXTtcbiAgICAgICAgICAgIG5hbWUgPSBwYXJ0c1sxXTtcbiAgICAgICAgICAgIGlmIChwcmVmaXgpIHtcbiAgICAgICAgICAgICAgICBwbHVnaW4gPSBjYWxsRGVwKHByZWZpeCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1VzaW5nIHJpZGljdWxvdXMgcHJvcGVydHkgbmFtZXMgZm9yIHNwYWNlIHJlYXNvbnNcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGY6IHByZWZpeCA/IHByZWZpeCArICchJyArIG5hbWUgOiBuYW1lLCAvL2Z1bGxOYW1lXG4gICAgICAgICAgICBuOiBuYW1lLFxuICAgICAgICAgICAgcHI6IHByZWZpeCxcbiAgICAgICAgICAgIHA6IHBsdWdpblxuICAgICAgICB9O1xuICAgIH07XG5cbiAgICBmdW5jdGlvbiBtYWtlQ29uZmlnKG5hbWUpIHtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHJldHVybiAoY29uZmlnICYmIGNvbmZpZy5jb25maWcgJiYgY29uZmlnLmNvbmZpZ1tuYW1lXSkgfHwge307XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgaGFuZGxlcnMgPSB7XG4gICAgICAgIHJlcXVpcmU6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICByZXR1cm4gbWFrZVJlcXVpcmUobmFtZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGV4cG9ydHM6IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgICAgICAgICB2YXIgZSA9IGRlZmluZWRbbmFtZV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGU7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAoZGVmaW5lZFtuYW1lXSA9IHt9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgbW9kdWxlOiBmdW5jdGlvbiAobmFtZSkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBpZDogbmFtZSxcbiAgICAgICAgICAgICAgICB1cmk6ICcnLFxuICAgICAgICAgICAgICAgIGV4cG9ydHM6IGRlZmluZWRbbmFtZV0sXG4gICAgICAgICAgICAgICAgY29uZmlnOiBtYWtlQ29uZmlnKG5hbWUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIG1haW4gPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpIHtcbiAgICAgICAgdmFyIGNqc01vZHVsZSwgZGVwTmFtZSwgcmV0LCBtYXAsIGksIHJlbFBhcnRzLFxuICAgICAgICAgICAgYXJncyA9IFtdLFxuICAgICAgICAgICAgY2FsbGJhY2tUeXBlID0gdHlwZW9mIGNhbGxiYWNrLFxuICAgICAgICAgICAgdXNpbmdFeHBvcnRzO1xuXG4gICAgICAgIC8vVXNlIG5hbWUgaWYgbm8gcmVsTmFtZVxuICAgICAgICByZWxOYW1lID0gcmVsTmFtZSB8fCBuYW1lO1xuICAgICAgICByZWxQYXJ0cyA9IG1ha2VSZWxQYXJ0cyhyZWxOYW1lKTtcblxuICAgICAgICAvL0NhbGwgdGhlIGNhbGxiYWNrIHRvIGRlZmluZSB0aGUgbW9kdWxlLCBpZiBuZWNlc3NhcnkuXG4gICAgICAgIGlmIChjYWxsYmFja1R5cGUgPT09ICd1bmRlZmluZWQnIHx8IGNhbGxiYWNrVHlwZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgLy9QdWxsIG91dCB0aGUgZGVmaW5lZCBkZXBlbmRlbmNpZXMgYW5kIHBhc3MgdGhlIG9yZGVyZWRcbiAgICAgICAgICAgIC8vdmFsdWVzIHRvIHRoZSBjYWxsYmFjay5cbiAgICAgICAgICAgIC8vRGVmYXVsdCB0byBbcmVxdWlyZSwgZXhwb3J0cywgbW9kdWxlXSBpZiBubyBkZXBzXG4gICAgICAgICAgICBkZXBzID0gIWRlcHMubGVuZ3RoICYmIGNhbGxiYWNrLmxlbmd0aCA/IFsncmVxdWlyZScsICdleHBvcnRzJywgJ21vZHVsZSddIDogZGVwcztcbiAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBkZXBzLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgICAgbWFwID0gbWFrZU1hcChkZXBzW2ldLCByZWxQYXJ0cyk7XG4gICAgICAgICAgICAgICAgZGVwTmFtZSA9IG1hcC5mO1xuXG4gICAgICAgICAgICAgICAgLy9GYXN0IHBhdGggQ29tbW9uSlMgc3RhbmRhcmQgZGVwZW5kZW5jaWVzLlxuICAgICAgICAgICAgICAgIGlmIChkZXBOYW1lID09PSBcInJlcXVpcmVcIikge1xuICAgICAgICAgICAgICAgICAgICBhcmdzW2ldID0gaGFuZGxlcnMucmVxdWlyZShuYW1lKTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRlcE5hbWUgPT09IFwiZXhwb3J0c1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vQ29tbW9uSlMgbW9kdWxlIHNwZWMgMS4xXG4gICAgICAgICAgICAgICAgICAgIGFyZ3NbaV0gPSBoYW5kbGVycy5leHBvcnRzKG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICB1c2luZ0V4cG9ydHMgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZGVwTmFtZSA9PT0gXCJtb2R1bGVcIikge1xuICAgICAgICAgICAgICAgICAgICAvL0NvbW1vbkpTIG1vZHVsZSBzcGVjIDEuMVxuICAgICAgICAgICAgICAgICAgICBjanNNb2R1bGUgPSBhcmdzW2ldID0gaGFuZGxlcnMubW9kdWxlKG5hbWUpO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoaGFzUHJvcChkZWZpbmVkLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcCh3YWl0aW5nLCBkZXBOYW1lKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFzUHJvcChkZWZpbmluZywgZGVwTmFtZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGNhbGxEZXAoZGVwTmFtZSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtYXAucCkge1xuICAgICAgICAgICAgICAgICAgICBtYXAucC5sb2FkKG1hcC5uLCBtYWtlUmVxdWlyZShyZWxOYW1lLCB0cnVlKSwgbWFrZUxvYWQoZGVwTmFtZSksIHt9KTtcbiAgICAgICAgICAgICAgICAgICAgYXJnc1tpXSA9IGRlZmluZWRbZGVwTmFtZV07XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKG5hbWUgKyAnIG1pc3NpbmcgJyArIGRlcE5hbWUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0ID0gY2FsbGJhY2sgPyBjYWxsYmFjay5hcHBseShkZWZpbmVkW25hbWVdLCBhcmdzKSA6IHVuZGVmaW5lZDtcblxuICAgICAgICAgICAgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgICAgICAvL0lmIHNldHRpbmcgZXhwb3J0cyB2aWEgXCJtb2R1bGVcIiBpcyBpbiBwbGF5LFxuICAgICAgICAgICAgICAgIC8vZmF2b3IgdGhhdCBvdmVyIHJldHVybiB2YWx1ZSBhbmQgZXhwb3J0cy4gQWZ0ZXIgdGhhdCxcbiAgICAgICAgICAgICAgICAvL2Zhdm9yIGEgbm9uLXVuZGVmaW5lZCByZXR1cm4gdmFsdWUgb3ZlciBleHBvcnRzIHVzZS5cbiAgICAgICAgICAgICAgICBpZiAoY2pzTW9kdWxlICYmIGNqc01vZHVsZS5leHBvcnRzICE9PSB1bmRlZiAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgY2pzTW9kdWxlLmV4cG9ydHMgIT09IGRlZmluZWRbbmFtZV0pIHtcbiAgICAgICAgICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNqc01vZHVsZS5leHBvcnRzO1xuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0ICE9PSB1bmRlZiB8fCAhdXNpbmdFeHBvcnRzKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vVXNlIHRoZSByZXR1cm4gdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24uXG4gICAgICAgICAgICAgICAgICAgIGRlZmluZWRbbmFtZV0gPSByZXQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9IGVsc2UgaWYgKG5hbWUpIHtcbiAgICAgICAgICAgIC8vTWF5IGp1c3QgYmUgYW4gb2JqZWN0IGRlZmluaXRpb24gZm9yIHRoZSBtb2R1bGUuIE9ubHlcbiAgICAgICAgICAgIC8vd29ycnkgYWJvdXQgZGVmaW5pbmcgaWYgaGF2ZSBhIG1vZHVsZSBuYW1lLlxuICAgICAgICAgICAgZGVmaW5lZFtuYW1lXSA9IGNhbGxiYWNrO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIHJlcXVpcmVqcyA9IHJlcXVpcmUgPSByZXEgPSBmdW5jdGlvbiAoZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUsIGZvcmNlU3luYywgYWx0KSB7XG4gICAgICAgIGlmICh0eXBlb2YgZGVwcyA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgaWYgKGhhbmRsZXJzW2RlcHNdKSB7XG4gICAgICAgICAgICAgICAgLy9jYWxsYmFjayBpbiB0aGlzIGNhc2UgaXMgcmVhbGx5IHJlbE5hbWVcbiAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlcnNbZGVwc10oY2FsbGJhY2spO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy9KdXN0IHJldHVybiB0aGUgbW9kdWxlIHdhbnRlZC4gSW4gdGhpcyBzY2VuYXJpbywgdGhlXG4gICAgICAgICAgICAvL2RlcHMgYXJnIGlzIHRoZSBtb2R1bGUgbmFtZSwgYW5kIHNlY29uZCBhcmcgKGlmIHBhc3NlZClcbiAgICAgICAgICAgIC8vaXMganVzdCB0aGUgcmVsTmFtZS5cbiAgICAgICAgICAgIC8vTm9ybWFsaXplIG1vZHVsZSBuYW1lLCBpZiBpdCBjb250YWlucyAuIG9yIC4uXG4gICAgICAgICAgICByZXR1cm4gY2FsbERlcChtYWtlTWFwKGRlcHMsIG1ha2VSZWxQYXJ0cyhjYWxsYmFjaykpLmYpO1xuICAgICAgICB9IGVsc2UgaWYgKCFkZXBzLnNwbGljZSkge1xuICAgICAgICAgICAgLy9kZXBzIGlzIGEgY29uZmlnIG9iamVjdCwgbm90IGFuIGFycmF5LlxuICAgICAgICAgICAgY29uZmlnID0gZGVwcztcbiAgICAgICAgICAgIGlmIChjb25maWcuZGVwcykge1xuICAgICAgICAgICAgICAgIHJlcShjb25maWcuZGVwcywgY29uZmlnLmNhbGxiYWNrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChjYWxsYmFjay5zcGxpY2UpIHtcbiAgICAgICAgICAgICAgICAvL2NhbGxiYWNrIGlzIGFuIGFycmF5LCB3aGljaCBtZWFucyBpdCBpcyBhIGRlcGVuZGVuY3kgbGlzdC5cbiAgICAgICAgICAgICAgICAvL0FkanVzdCBhcmdzIGlmIHRoZXJlIGFyZSBkZXBlbmRlbmNpZXNcbiAgICAgICAgICAgICAgICBkZXBzID0gY2FsbGJhY2s7XG4gICAgICAgICAgICAgICAgY2FsbGJhY2sgPSByZWxOYW1lO1xuICAgICAgICAgICAgICAgIHJlbE5hbWUgPSBudWxsO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBkZXBzID0gdW5kZWY7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICAvL1N1cHBvcnQgcmVxdWlyZShbJ2EnXSlcbiAgICAgICAgY2FsbGJhY2sgPSBjYWxsYmFjayB8fCBmdW5jdGlvbiAoKSB7fTtcblxuICAgICAgICAvL0lmIHJlbE5hbWUgaXMgYSBmdW5jdGlvbiwgaXQgaXMgYW4gZXJyYmFjayBoYW5kbGVyLFxuICAgICAgICAvL3NvIHJlbW92ZSBpdC5cbiAgICAgICAgaWYgKHR5cGVvZiByZWxOYW1lID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICByZWxOYW1lID0gZm9yY2VTeW5jO1xuICAgICAgICAgICAgZm9yY2VTeW5jID0gYWx0O1xuICAgICAgICB9XG5cbiAgICAgICAgLy9TaW11bGF0ZSBhc3luYyBjYWxsYmFjaztcbiAgICAgICAgaWYgKGZvcmNlU3luYykge1xuICAgICAgICAgICAgbWFpbih1bmRlZiwgZGVwcywgY2FsbGJhY2ssIHJlbE5hbWUpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgLy9Vc2luZyBhIG5vbi16ZXJvIHZhbHVlIGJlY2F1c2Ugb2YgY29uY2VybiBmb3Igd2hhdCBvbGQgYnJvd3NlcnNcbiAgICAgICAgICAgIC8vZG8sIGFuZCBsYXRlc3QgYnJvd3NlcnMgXCJ1cGdyYWRlXCIgdG8gNCBpZiBsb3dlciB2YWx1ZSBpcyB1c2VkOlxuICAgICAgICAgICAgLy9odHRwOi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrL211bHRpcGFnZS90aW1lcnMuaHRtbCNkb20td2luZG93dGltZXJzLXNldHRpbWVvdXQ6XG4gICAgICAgICAgICAvL0lmIHdhbnQgYSB2YWx1ZSBpbW1lZGlhdGVseSwgdXNlIHJlcXVpcmUoJ2lkJykgaW5zdGVhZCAtLSBzb21ldGhpbmdcbiAgICAgICAgICAgIC8vdGhhdCB3b3JrcyBpbiBhbG1vbmQgb24gdGhlIGdsb2JhbCBsZXZlbCwgYnV0IG5vdCBndWFyYW50ZWVkIGFuZFxuICAgICAgICAgICAgLy91bmxpa2VseSB0byB3b3JrIGluIG90aGVyIEFNRCBpbXBsZW1lbnRhdGlvbnMuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBtYWluKHVuZGVmLCBkZXBzLCBjYWxsYmFjaywgcmVsTmFtZSk7XG4gICAgICAgICAgICB9LCA0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiByZXE7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEp1c3QgZHJvcHMgdGhlIGNvbmZpZyBvbiB0aGUgZmxvb3IsIGJ1dCByZXR1cm5zIHJlcSBpbiBjYXNlXG4gICAgICogdGhlIGNvbmZpZyByZXR1cm4gdmFsdWUgaXMgdXNlZC5cbiAgICAgKi9cbiAgICByZXEuY29uZmlnID0gZnVuY3Rpb24gKGNmZykge1xuICAgICAgICByZXR1cm4gcmVxKGNmZyk7XG4gICAgfTtcblxuICAgIC8qKlxuICAgICAqIEV4cG9zZSBtb2R1bGUgcmVnaXN0cnkgZm9yIGRlYnVnZ2luZyBhbmQgdG9vbGluZ1xuICAgICAqL1xuICAgIHJlcXVpcmVqcy5fZGVmaW5lZCA9IGRlZmluZWQ7XG5cbiAgICBkZWZpbmUgPSBmdW5jdGlvbiAobmFtZSwgZGVwcywgY2FsbGJhY2spIHtcbiAgICAgICAgaWYgKHR5cGVvZiBuYW1lICE9PSAnc3RyaW5nJykge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTZWUgYWxtb25kIFJFQURNRTogaW5jb3JyZWN0IG1vZHVsZSBidWlsZCwgbm8gbW9kdWxlIG5hbWUnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vVGhpcyBtb2R1bGUgbWF5IG5vdCBoYXZlIGRlcGVuZGVuY2llc1xuICAgICAgICBpZiAoIWRlcHMuc3BsaWNlKSB7XG4gICAgICAgICAgICAvL2RlcHMgaXMgbm90IGFuIGFycmF5LCBzbyBwcm9iYWJseSBtZWFuc1xuICAgICAgICAgICAgLy9hbiBvYmplY3QgbGl0ZXJhbCBvciBmYWN0b3J5IGZ1bmN0aW9uIGZvclxuICAgICAgICAgICAgLy90aGUgdmFsdWUuIEFkanVzdCBhcmdzLlxuICAgICAgICAgICAgY2FsbGJhY2sgPSBkZXBzO1xuICAgICAgICAgICAgZGVwcyA9IFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFoYXNQcm9wKGRlZmluZWQsIG5hbWUpICYmICFoYXNQcm9wKHdhaXRpbmcsIG5hbWUpKSB7XG4gICAgICAgICAgICB3YWl0aW5nW25hbWVdID0gW25hbWUsIGRlcHMsIGNhbGxiYWNrXTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBkZWZpbmUuYW1kID0ge1xuICAgICAgICBqUXVlcnk6IHRydWVcbiAgICB9O1xufSgpKTtcblxuUzIucmVxdWlyZWpzID0gcmVxdWlyZWpzO1MyLnJlcXVpcmUgPSByZXF1aXJlO1MyLmRlZmluZSA9IGRlZmluZTtcbn1cbn0oKSk7XG5TMi5kZWZpbmUoXCJhbG1vbmRcIiwgZnVuY3Rpb24oKXt9KTtcblxuLyogZ2xvYmFsIGpRdWVyeTpmYWxzZSwgJDpmYWxzZSAqL1xuUzIuZGVmaW5lKCdqcXVlcnknLFtdLGZ1bmN0aW9uICgpIHtcbiAgdmFyIF8kID0galF1ZXJ5IHx8ICQ7XG5cbiAgaWYgKF8kID09IG51bGwgJiYgY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgY29uc29sZS5lcnJvcihcbiAgICAgICdTZWxlY3QyOiBBbiBpbnN0YW5jZSBvZiBqUXVlcnkgb3IgYSBqUXVlcnktY29tcGF0aWJsZSBsaWJyYXJ5IHdhcyBub3QgJyArXG4gICAgICAnZm91bmQuIE1ha2Ugc3VyZSB0aGF0IHlvdSBhcmUgaW5jbHVkaW5nIGpRdWVyeSBiZWZvcmUgU2VsZWN0MiBvbiB5b3VyICcgK1xuICAgICAgJ3dlYiBwYWdlLidcbiAgICApO1xuICB9XG5cbiAgcmV0dXJuIF8kO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi91dGlscycsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgdmFyIFV0aWxzID0ge307XG5cbiAgVXRpbHMuRXh0ZW5kID0gZnVuY3Rpb24gKENoaWxkQ2xhc3MsIFN1cGVyQ2xhc3MpIHtcbiAgICB2YXIgX19oYXNQcm9wID0ge30uaGFzT3duUHJvcGVydHk7XG5cbiAgICBmdW5jdGlvbiBCYXNlQ29uc3RydWN0b3IgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IENoaWxkQ2xhc3M7XG4gICAgfVxuXG4gICAgZm9yICh2YXIga2V5IGluIFN1cGVyQ2xhc3MpIHtcbiAgICAgIGlmIChfX2hhc1Byb3AuY2FsbChTdXBlckNsYXNzLCBrZXkpKSB7XG4gICAgICAgIENoaWxkQ2xhc3Nba2V5XSA9IFN1cGVyQ2xhc3Nba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBCYXNlQ29uc3RydWN0b3IucHJvdG90eXBlID0gU3VwZXJDbGFzcy5wcm90b3R5cGU7XG4gICAgQ2hpbGRDbGFzcy5wcm90b3R5cGUgPSBuZXcgQmFzZUNvbnN0cnVjdG9yKCk7XG4gICAgQ2hpbGRDbGFzcy5fX3N1cGVyX18gPSBTdXBlckNsYXNzLnByb3RvdHlwZTtcblxuICAgIHJldHVybiBDaGlsZENsYXNzO1xuICB9O1xuXG4gIGZ1bmN0aW9uIGdldE1ldGhvZHMgKHRoZUNsYXNzKSB7XG4gICAgdmFyIHByb3RvID0gdGhlQ2xhc3MucHJvdG90eXBlO1xuXG4gICAgdmFyIG1ldGhvZHMgPSBbXTtcblxuICAgIGZvciAodmFyIG1ldGhvZE5hbWUgaW4gcHJvdG8pIHtcbiAgICAgIHZhciBtID0gcHJvdG9bbWV0aG9kTmFtZV07XG5cbiAgICAgIGlmICh0eXBlb2YgbSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKG1ldGhvZE5hbWUgPT09ICdjb25zdHJ1Y3RvcicpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIG1ldGhvZHMucHVzaChtZXRob2ROYW1lKTtcbiAgICB9XG5cbiAgICByZXR1cm4gbWV0aG9kcztcbiAgfVxuXG4gIFV0aWxzLkRlY29yYXRlID0gZnVuY3Rpb24gKFN1cGVyQ2xhc3MsIERlY29yYXRvckNsYXNzKSB7XG4gICAgdmFyIGRlY29yYXRlZE1ldGhvZHMgPSBnZXRNZXRob2RzKERlY29yYXRvckNsYXNzKTtcbiAgICB2YXIgc3VwZXJNZXRob2RzID0gZ2V0TWV0aG9kcyhTdXBlckNsYXNzKTtcblxuICAgIGZ1bmN0aW9uIERlY29yYXRlZENsYXNzICgpIHtcbiAgICAgIHZhciB1bnNoaWZ0ID0gQXJyYXkucHJvdG90eXBlLnVuc2hpZnQ7XG5cbiAgICAgIHZhciBhcmdDb3VudCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGg7XG5cbiAgICAgIHZhciBjYWxsZWRDb25zdHJ1Y3RvciA9IFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yO1xuXG4gICAgICBpZiAoYXJnQ291bnQgPiAwKSB7XG4gICAgICAgIHVuc2hpZnQuY2FsbChhcmd1bWVudHMsIFN1cGVyQ2xhc3MucHJvdG90eXBlLmNvbnN0cnVjdG9yKTtcblxuICAgICAgICBjYWxsZWRDb25zdHJ1Y3RvciA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZS5jb25zdHJ1Y3RvcjtcbiAgICAgIH1cblxuICAgICAgY2FsbGVkQ29uc3RydWN0b3IuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICB9XG5cbiAgICBEZWNvcmF0b3JDbGFzcy5kaXNwbGF5TmFtZSA9IFN1cGVyQ2xhc3MuZGlzcGxheU5hbWU7XG5cbiAgICBmdW5jdGlvbiBjdHIgKCkge1xuICAgICAgdGhpcy5jb25zdHJ1Y3RvciA9IERlY29yYXRlZENsYXNzO1xuICAgIH1cblxuICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSA9IG5ldyBjdHIoKTtcblxuICAgIGZvciAodmFyIG0gPSAwOyBtIDwgc3VwZXJNZXRob2RzLmxlbmd0aDsgbSsrKSB7XG4gICAgICB2YXIgc3VwZXJNZXRob2QgPSBzdXBlck1ldGhvZHNbbV07XG5cbiAgICAgIERlY29yYXRlZENsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF0gPVxuICAgICAgICBTdXBlckNsYXNzLnByb3RvdHlwZVtzdXBlck1ldGhvZF07XG4gICAgfVxuXG4gICAgdmFyIGNhbGxlZE1ldGhvZCA9IGZ1bmN0aW9uIChtZXRob2ROYW1lKSB7XG4gICAgICAvLyBTdHViIG91dCB0aGUgb3JpZ2luYWwgbWV0aG9kIGlmIGl0J3Mgbm90IGRlY29yYXRpbmcgYW4gYWN0dWFsIG1ldGhvZFxuICAgICAgdmFyIG9yaWdpbmFsTWV0aG9kID0gZnVuY3Rpb24gKCkge307XG5cbiAgICAgIGlmIChtZXRob2ROYW1lIGluIERlY29yYXRlZENsYXNzLnByb3RvdHlwZSkge1xuICAgICAgICBvcmlnaW5hbE1ldGhvZCA9IERlY29yYXRlZENsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcbiAgICAgIH1cblxuICAgICAgdmFyIGRlY29yYXRlZE1ldGhvZCA9IERlY29yYXRvckNsYXNzLnByb3RvdHlwZVttZXRob2ROYW1lXTtcblxuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVuc2hpZnQgPSBBcnJheS5wcm90b3R5cGUudW5zaGlmdDtcblxuICAgICAgICB1bnNoaWZ0LmNhbGwoYXJndW1lbnRzLCBvcmlnaW5hbE1ldGhvZCk7XG5cbiAgICAgICAgcmV0dXJuIGRlY29yYXRlZE1ldGhvZC5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICB9O1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkZWNvcmF0ZWRNZXRob2RzLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgZGVjb3JhdGVkTWV0aG9kID0gZGVjb3JhdGVkTWV0aG9kc1tkXTtcblxuICAgICAgRGVjb3JhdGVkQ2xhc3MucHJvdG90eXBlW2RlY29yYXRlZE1ldGhvZF0gPSBjYWxsZWRNZXRob2QoZGVjb3JhdGVkTWV0aG9kKTtcbiAgICB9XG5cbiAgICByZXR1cm4gRGVjb3JhdGVkQ2xhc3M7XG4gIH07XG5cbiAgdmFyIE9ic2VydmFibGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5saXN0ZW5lcnMgPSB7fTtcbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5vbiA9IGZ1bmN0aW9uIChldmVudCwgY2FsbGJhY2spIHtcbiAgICB0aGlzLmxpc3RlbmVycyA9IHRoaXMubGlzdGVuZXJzIHx8IHt9O1xuXG4gICAgaWYgKGV2ZW50IGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmxpc3RlbmVyc1tldmVudF0ucHVzaChjYWxsYmFjayk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubGlzdGVuZXJzW2V2ZW50XSA9IFtjYWxsYmFja107XG4gICAgfVxuICB9O1xuXG4gIE9ic2VydmFibGUucHJvdG90eXBlLnRyaWdnZXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICB2YXIgc2xpY2UgPSBBcnJheS5wcm90b3R5cGUuc2xpY2U7XG4gICAgdmFyIHBhcmFtcyA9IHNsaWNlLmNhbGwoYXJndW1lbnRzLCAxKTtcblxuICAgIHRoaXMubGlzdGVuZXJzID0gdGhpcy5saXN0ZW5lcnMgfHwge307XG5cbiAgICAvLyBQYXJhbXMgc2hvdWxkIGFsd2F5cyBjb21lIGluIGFzIGFuIGFycmF5XG4gICAgaWYgKHBhcmFtcyA9PSBudWxsKSB7XG4gICAgICBwYXJhbXMgPSBbXTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGVyZSBhcmUgbm8gYXJndW1lbnRzIHRvIHRoZSBldmVudCwgdXNlIGEgdGVtcG9yYXJ5IG9iamVjdFxuICAgIGlmIChwYXJhbXMubGVuZ3RoID09PSAwKSB7XG4gICAgICBwYXJhbXMucHVzaCh7fSk7XG4gICAgfVxuXG4gICAgLy8gU2V0IHRoZSBgX3R5cGVgIG9mIHRoZSBmaXJzdCBvYmplY3QgdG8gdGhlIGV2ZW50XG4gICAgcGFyYW1zWzBdLl90eXBlID0gZXZlbnQ7XG5cbiAgICBpZiAoZXZlbnQgaW4gdGhpcy5saXN0ZW5lcnMpIHtcbiAgICAgIHRoaXMuaW52b2tlKHRoaXMubGlzdGVuZXJzW2V2ZW50XSwgc2xpY2UuY2FsbChhcmd1bWVudHMsIDEpKTtcbiAgICB9XG5cbiAgICBpZiAoJyonIGluIHRoaXMubGlzdGVuZXJzKSB7XG4gICAgICB0aGlzLmludm9rZSh0aGlzLmxpc3RlbmVyc1snKiddLCBhcmd1bWVudHMpO1xuICAgIH1cbiAgfTtcblxuICBPYnNlcnZhYmxlLnByb3RvdHlwZS5pbnZva2UgPSBmdW5jdGlvbiAobGlzdGVuZXJzLCBwYXJhbXMpIHtcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gbGlzdGVuZXJzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XG4gICAgICBsaXN0ZW5lcnNbaV0uYXBwbHkodGhpcywgcGFyYW1zKTtcbiAgICB9XG4gIH07XG5cbiAgVXRpbHMuT2JzZXJ2YWJsZSA9IE9ic2VydmFibGU7XG5cbiAgVXRpbHMuZ2VuZXJhdGVDaGFycyA9IGZ1bmN0aW9uIChsZW5ndGgpIHtcbiAgICB2YXIgY2hhcnMgPSAnJztcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciByYW5kb21DaGFyID0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMzYpO1xuICAgICAgY2hhcnMgKz0gcmFuZG9tQ2hhci50b1N0cmluZygzNik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoYXJzO1xuICB9O1xuXG4gIFV0aWxzLmJpbmQgPSBmdW5jdGlvbiAoZnVuYywgY29udGV4dCkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBmdW5jLmFwcGx5KGNvbnRleHQsIGFyZ3VtZW50cyk7XG4gICAgfTtcbiAgfTtcblxuICBVdGlscy5fY29udmVydERhdGEgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGZvciAodmFyIG9yaWdpbmFsS2V5IGluIGRhdGEpIHtcbiAgICAgIHZhciBrZXlzID0gb3JpZ2luYWxLZXkuc3BsaXQoJy0nKTtcblxuICAgICAgdmFyIGRhdGFMZXZlbCA9IGRhdGE7XG5cbiAgICAgIGlmIChrZXlzLmxlbmd0aCA9PT0gMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBrZXlzLmxlbmd0aDsgaysrKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzW2tdO1xuXG4gICAgICAgIC8vIExvd2VyY2FzZSB0aGUgZmlyc3QgbGV0dGVyXG4gICAgICAgIC8vIEJ5IGRlZmF1bHQsIGRhc2gtc2VwYXJhdGVkIGJlY29tZXMgY2FtZWxDYXNlXG4gICAgICAgIGtleSA9IGtleS5zdWJzdHJpbmcoMCwgMSkudG9Mb3dlckNhc2UoKSArIGtleS5zdWJzdHJpbmcoMSk7XG5cbiAgICAgICAgaWYgKCEoa2V5IGluIGRhdGFMZXZlbCkpIHtcbiAgICAgICAgICBkYXRhTGV2ZWxba2V5XSA9IHt9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKGsgPT0ga2V5cy5sZW5ndGggLSAxKSB7XG4gICAgICAgICAgZGF0YUxldmVsW2tleV0gPSBkYXRhW29yaWdpbmFsS2V5XTtcbiAgICAgICAgfVxuXG4gICAgICAgIGRhdGFMZXZlbCA9IGRhdGFMZXZlbFtrZXldO1xuICAgICAgfVxuXG4gICAgICBkZWxldGUgZGF0YVtvcmlnaW5hbEtleV07XG4gICAgfVxuXG4gICAgcmV0dXJuIGRhdGE7XG4gIH07XG5cbiAgVXRpbHMuaGFzU2Nyb2xsID0gZnVuY3Rpb24gKGluZGV4LCBlbCkge1xuICAgIC8vIEFkYXB0ZWQgZnJvbSB0aGUgZnVuY3Rpb24gY3JlYXRlZCBieSBAU2hhZG93U2NyaXB0ZXJcbiAgICAvLyBhbmQgYWRhcHRlZCBieSBAQmlsbEJhcnJ5IG9uIHRoZSBTdGFjayBFeGNoYW5nZSBDb2RlIFJldmlldyB3ZWJzaXRlLlxuICAgIC8vIFRoZSBvcmlnaW5hbCBjb2RlIGNhbiBiZSBmb3VuZCBhdFxuICAgIC8vIGh0dHA6Ly9jb2RlcmV2aWV3LnN0YWNrZXhjaGFuZ2UuY29tL3EvMTMzMzhcbiAgICAvLyBhbmQgd2FzIGRlc2lnbmVkIHRvIGJlIHVzZWQgd2l0aCB0aGUgU2l6emxlIHNlbGVjdG9yIGVuZ2luZS5cblxuICAgIHZhciAkZWwgPSAkKGVsKTtcbiAgICB2YXIgb3ZlcmZsb3dYID0gZWwuc3R5bGUub3ZlcmZsb3dYO1xuICAgIHZhciBvdmVyZmxvd1kgPSBlbC5zdHlsZS5vdmVyZmxvd1k7XG5cbiAgICAvL0NoZWNrIGJvdGggeCBhbmQgeSBkZWNsYXJhdGlvbnNcbiAgICBpZiAob3ZlcmZsb3dYID09PSBvdmVyZmxvd1kgJiZcbiAgICAgICAgKG92ZXJmbG93WSA9PT0gJ2hpZGRlbicgfHwgb3ZlcmZsb3dZID09PSAndmlzaWJsZScpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgaWYgKG92ZXJmbG93WCA9PT0gJ3Njcm9sbCcgfHwgb3ZlcmZsb3dZID09PSAnc2Nyb2xsJykge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuICgkZWwuaW5uZXJIZWlnaHQoKSA8IGVsLnNjcm9sbEhlaWdodCB8fFxuICAgICAgJGVsLmlubmVyV2lkdGgoKSA8IGVsLnNjcm9sbFdpZHRoKTtcbiAgfTtcblxuICBVdGlscy5lc2NhcGVNYXJrdXAgPSBmdW5jdGlvbiAobWFya3VwKSB7XG4gICAgdmFyIHJlcGxhY2VNYXAgPSB7XG4gICAgICAnXFxcXCc6ICcmIzkyOycsXG4gICAgICAnJic6ICcmYW1wOycsXG4gICAgICAnPCc6ICcmbHQ7JyxcbiAgICAgICc+JzogJyZndDsnLFxuICAgICAgJ1wiJzogJyZxdW90OycsXG4gICAgICAnXFwnJzogJyYjMzk7JyxcbiAgICAgICcvJzogJyYjNDc7J1xuICAgIH07XG5cbiAgICAvLyBEbyBub3QgdHJ5IHRvIGVzY2FwZSB0aGUgbWFya3VwIGlmIGl0J3Mgbm90IGEgc3RyaW5nXG4gICAgaWYgKHR5cGVvZiBtYXJrdXAgIT09ICdzdHJpbmcnKSB7XG4gICAgICByZXR1cm4gbWFya3VwO1xuICAgIH1cblxuICAgIHJldHVybiBTdHJpbmcobWFya3VwKS5yZXBsYWNlKC9bJjw+XCInXFwvXFxcXF0vZywgZnVuY3Rpb24gKG1hdGNoKSB7XG4gICAgICByZXR1cm4gcmVwbGFjZU1hcFttYXRjaF07XG4gICAgfSk7XG4gIH07XG5cbiAgLy8gQ2FjaGUgb2JqZWN0cyBpbiBVdGlscy5fX2NhY2hlIGluc3RlYWQgb2YgJC5kYXRhIChzZWUgIzQzNDYpXG4gIFV0aWxzLl9fY2FjaGUgPSB7fTtcblxuICB2YXIgaWQgPSAwO1xuICBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIEdldCBhIHVuaXF1ZSBlbGVtZW50IElkLiBJZiBlbGVtZW50IGhhcyBubyBpZCxcbiAgICAvLyBjcmVhdGVzIGEgbmV3IHVuaXF1ZSBudW1iZXIsIHN0b3JlcyBpdCBpbiB0aGUgaWRcbiAgICAvLyBhdHRyaWJ1dGUgYW5kIHJldHVybnMgdGhlIG5ldyBpZCB3aXRoIGEgcHJlZml4LlxuICAgIC8vIElmIGFuIGlkIGFscmVhZHkgZXhpc3RzLCBpdCBzaW1wbHkgcmV0dXJucyBpdCB3aXRoIGEgcHJlZml4LlxuXG4gICAgdmFyIHNlbGVjdDJJZCA9IGVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItaWQnKTtcblxuICAgIGlmIChzZWxlY3QySWQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHNlbGVjdDJJZDtcbiAgICB9XG5cbiAgICAvLyBJZiBlbGVtZW50IGhhcyBpZCwgdXNlIGl0LlxuICAgIGlmIChlbGVtZW50LmlkKSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyBlbGVtZW50LmlkO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3QySWQgPSAnc2VsZWN0Mi1kYXRhLScgKyAoKytpZCkudG9TdHJpbmcoKSArXG4gICAgICAgICctJyArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCk7XG4gICAgfVxuXG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtc2VsZWN0Mi1pZCcsIHNlbGVjdDJJZCk7XG5cbiAgICByZXR1cm4gc2VsZWN0MklkO1xuICB9O1xuXG4gIFV0aWxzLlN0b3JlRGF0YSA9IGZ1bmN0aW9uIChlbGVtZW50LCBuYW1lLCB2YWx1ZSkge1xuICAgIC8vIFN0b3JlcyBhbiBpdGVtIGluIHRoZSBjYWNoZSBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBuYW1lIGlzIHRoZSBjYWNoZSBrZXkuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmICghVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgIFV0aWxzLl9fY2FjaGVbaWRdID0ge307XG4gICAgfVxuXG4gICAgVXRpbHMuX19jYWNoZVtpZF1bbmFtZV0gPSB2YWx1ZTtcbiAgfTtcblxuICBVdGlscy5HZXREYXRhID0gZnVuY3Rpb24gKGVsZW1lbnQsIG5hbWUpIHtcbiAgICAvLyBSZXRyaWV2ZXMgYSB2YWx1ZSBmcm9tIHRoZSBjYWNoZSBieSBpdHMga2V5IChuYW1lKVxuICAgIC8vIG5hbWUgaXMgb3B0aW9uYWwuIElmIG5vIG5hbWUgc3BlY2lmaWVkLCByZXR1cm5cbiAgICAvLyBhbGwgY2FjaGUgaXRlbXMgZm9yIHRoZSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICAvLyBhbmQgZm9yIGEgc3BlY2lmaWVkIGVsZW1lbnQuXG4gICAgdmFyIGlkID0gVXRpbHMuR2V0VW5pcXVlRWxlbWVudElkKGVsZW1lbnQpO1xuICAgIGlmIChuYW1lKSB7XG4gICAgICBpZiAoVXRpbHMuX19jYWNoZVtpZF0pIHtcbiAgICAgICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdW25hbWVdICE9IG51bGwpIHtcbiAgICAgICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF1bbmFtZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgICAgfVxuICAgICAgcmV0dXJuICQoZWxlbWVudCkuZGF0YShuYW1lKTsgLy8gRmFsbGJhY2sgdG8gSFRNTDUgZGF0YSBhdHRyaWJzLlxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gVXRpbHMuX19jYWNoZVtpZF07XG4gICAgfVxuICB9O1xuXG4gIFV0aWxzLlJlbW92ZURhdGEgPSBmdW5jdGlvbiAoZWxlbWVudCkge1xuICAgIC8vIFJlbW92ZXMgYWxsIGNhY2hlZCBpdGVtcyBmb3IgYSBzcGVjaWZpZWQgZWxlbWVudC5cbiAgICB2YXIgaWQgPSBVdGlscy5HZXRVbmlxdWVFbGVtZW50SWQoZWxlbWVudCk7XG4gICAgaWYgKFV0aWxzLl9fY2FjaGVbaWRdICE9IG51bGwpIHtcbiAgICAgIGRlbGV0ZSBVdGlscy5fX2NhY2hlW2lkXTtcbiAgICB9XG5cbiAgICBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZSgnZGF0YS1zZWxlY3QyLWlkJyk7XG4gIH07XG5cbiAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3NlcyA9IGZ1bmN0aW9uIChkZXN0LCBzcmMpIHtcbiAgICB2YXIgY2xhc3NlcztcblxuICAgIHZhciBkZXN0aW5hdGlvbkNsYXNzZXMgPSBkZXN0LmdldEF0dHJpYnV0ZSgnY2xhc3MnKS50cmltKCkuc3BsaXQoL1xccysvKTtcblxuICAgIGRlc3RpbmF0aW9uQ2xhc3NlcyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5maWx0ZXIoZnVuY3Rpb24gKGNsYXp6KSB7XG4gICAgICAvLyBTYXZlIGFsbCBTZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpID09PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHNvdXJjZUNsYXNzZXMgPSBzcmMuZ2V0QXR0cmlidXRlKCdjbGFzcycpLnRyaW0oKS5zcGxpdCgvXFxzKy8pO1xuXG4gICAgc291cmNlQ2xhc3NlcyA9IHNvdXJjZUNsYXNzZXMuZmlsdGVyKGZ1bmN0aW9uIChjbGF6eikge1xuICAgICAgLy8gT25seSBjb3B5IG5vbi1TZWxlY3QyIGNsYXNzZXNcbiAgICAgIHJldHVybiBjbGF6ei5pbmRleE9mKCdzZWxlY3QyLScpICE9PSAwO1xuICAgIH0pO1xuXG4gICAgdmFyIHJlcGxhY2VtZW50cyA9IGRlc3RpbmF0aW9uQ2xhc3Nlcy5jb25jYXQoc291cmNlQ2xhc3Nlcyk7XG5cbiAgICBkZXN0LnNldEF0dHJpYnV0ZSgnY2xhc3MnLCByZXBsYWNlbWVudHMuam9pbignICcpKTtcbiAgfTtcblxuICByZXR1cm4gVXRpbHM7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3Jlc3VsdHMnLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFJlc3VsdHMgKCRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLmRhdGEgPSBkYXRhQWRhcHRlcjtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgUmVzdWx0cy5fX3N1cGVyX18uY29uc3RydWN0b3IuY2FsbCh0aGlzKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChSZXN1bHRzLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZXN1bHRzID0gJChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbnNcIiByb2xlPVwibGlzdGJveFwiPjwvdWw+J1xuICAgICk7XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnbXVsdGlwbGUnKSkge1xuICAgICAgJHJlc3VsdHMuYXR0cignYXJpYS1tdWx0aXNlbGVjdGFibGUnLCAndHJ1ZScpO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMgPSAkcmVzdWx0cztcblxuICAgIHJldHVybiAkcmVzdWx0cztcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5jbGVhciA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmVtcHR5KCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGlzcGxheU1lc3NhZ2UgPSBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgdGhpcy5jbGVhcigpO1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkbWVzc2FnZSA9ICQoXG4gICAgICAnPGxpIHJvbGU9XCJhbGVydFwiIGFyaWEtbGl2ZT1cImFzc2VydGl2ZVwiJyArXG4gICAgICAnIGNsYXNzPVwic2VsZWN0Mi1yZXN1bHRzX19vcHRpb25cIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQocGFyYW1zLm1lc3NhZ2UpO1xuXG4gICAgJG1lc3NhZ2UuYXBwZW5kKFxuICAgICAgZXNjYXBlTWFya3VwKFxuICAgICAgICBtZXNzYWdlKHBhcmFtcy5hcmdzKVxuICAgICAgKVxuICAgICk7XG5cbiAgICAkbWVzc2FnZVswXS5jbGFzc05hbWUgKz0gJyBzZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG1lc3NhZ2UpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmhpZGVNZXNzYWdlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX21lc3NhZ2UnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5hcHBlbmQgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuaGlkZUxvYWRpbmcoKTtcblxuICAgIHZhciAkb3B0aW9ucyA9IFtdO1xuXG4gICAgaWYgKGRhdGEucmVzdWx0cyA9PSBudWxsIHx8IGRhdGEucmVzdWx0cy5sZW5ndGggPT09IDApIHtcbiAgICAgIGlmICh0aGlzLiRyZXN1bHRzLmNoaWxkcmVuKCkubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdub1Jlc3VsdHMnXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5yZXN1bHRzID0gdGhpcy5zb3J0KGRhdGEucmVzdWx0cyk7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEucmVzdWx0cy5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSBkYXRhLnJlc3VsdHNbZF07XG5cbiAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kcmVzdWx0cy5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRyZXN1bHRzLCAkZHJvcGRvd24pIHtcbiAgICB2YXIgJHJlc3VsdHNDb250YWluZXIgPSAkZHJvcGRvd24uZmluZCgnLnNlbGVjdDItcmVzdWx0cycpO1xuICAgICRyZXN1bHRzQ29udGFpbmVyLmFwcGVuZCgkcmVzdWx0cyk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc29ydCA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIHNvcnRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ3NvcnRlcicpO1xuXG4gICAgcmV0dXJuIHNvcnRlcihkYXRhKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWdobGlnaHRGaXJzdEl0ZW0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kcmVzdWx0c1xuICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyICRzZWxlY3RlZCA9ICRvcHRpb25zLmZpbHRlcignLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuXG4gICAgLy8gQ2hlY2sgaWYgdGhlcmUgYXJlIGFueSBzZWxlY3RlZCBvcHRpb25zXG4gICAgaWYgKCRzZWxlY3RlZC5sZW5ndGggPiAwKSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdFxuICAgICAgJHNlbGVjdGVkLmZpcnN0KCkudHJpZ2dlcignbW91c2VlbnRlcicpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBJZiB0aGVyZSBhcmUgbm8gc2VsZWN0ZWQgb3B0aW9ucywgaGlnaGxpZ2h0IHRoZSBmaXJzdCBvcHRpb25cbiAgICAgIC8vIGluIHRoZSBkcm9wZG93blxuICAgICAgJG9wdGlvbnMuZmlyc3QoKS50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG4gICAgfVxuXG4gICAgdGhpcy5lbnN1cmVIaWdobGlnaHRWaXNpYmxlKCk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuc2V0Q2xhc3NlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRhdGEuY3VycmVudChmdW5jdGlvbiAoc2VsZWN0ZWQpIHtcbiAgICAgIHZhciBzZWxlY3RlZElkcyA9IHNlbGVjdGVkLm1hcChmdW5jdGlvbiAocykge1xuICAgICAgICByZXR1cm4gcy5pZC50b1N0cmluZygpO1xuICAgICAgfSk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHNcbiAgICAgICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgICAkb3B0aW9ucy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICAgIHZhciBpdGVtID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICAgIC8vIGlkIG5lZWRzIHRvIGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyB3aGVuIGNvbXBhcmluZ1xuICAgICAgICB2YXIgaWQgPSAnJyArIGl0ZW0uaWQ7XG5cbiAgICAgICAgaWYgKChpdGVtLmVsZW1lbnQgIT0gbnVsbCAmJiBpdGVtLmVsZW1lbnQuc2VsZWN0ZWQpIHx8XG4gICAgICAgICAgICAoaXRlbS5lbGVtZW50ID09IG51bGwgJiYgc2VsZWN0ZWRJZHMuaW5kZXhPZihpZCkgPiAtMSkpIHtcbiAgICAgICAgICB0aGlzLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpO1xuICAgICAgICAgICRvcHRpb24uYXR0cignYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdGhpcy5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQnKTtcbiAgICAgICAgICAkb3B0aW9uLmF0dHIoJ2FyaWEtc2VsZWN0ZWQnLCAnZmFsc2UnKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICB9KTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5zaG93TG9hZGluZyA9IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICB0aGlzLmhpZGVMb2FkaW5nKCk7XG5cbiAgICB2YXIgbG9hZGluZ01vcmUgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaGluZycpO1xuXG4gICAgdmFyIGxvYWRpbmcgPSB7XG4gICAgICBkaXNhYmxlZDogdHJ1ZSxcbiAgICAgIGxvYWRpbmc6IHRydWUsXG4gICAgICB0ZXh0OiBsb2FkaW5nTW9yZShwYXJhbXMpXG4gICAgfTtcbiAgICB2YXIgJGxvYWRpbmcgPSB0aGlzLm9wdGlvbihsb2FkaW5nKTtcbiAgICAkbG9hZGluZy5jbGFzc05hbWUgKz0gJyBsb2FkaW5nLXJlc3VsdHMnO1xuXG4gICAgdGhpcy4kcmVzdWx0cy5wcmVwZW5kKCRsb2FkaW5nKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5oaWRlTG9hZGluZyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLmZpbmQoJy5sb2FkaW5nLXJlc3VsdHMnKS5yZW1vdmUoKTtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5vcHRpb24gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaScpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbicpO1xuICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0YWJsZScpO1xuXG4gICAgdmFyIGF0dHJzID0ge1xuICAgICAgJ3JvbGUnOiAnb3B0aW9uJ1xuICAgIH07XG5cbiAgICB2YXIgbWF0Y2hlcyA9IHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS5tYXRjaGVzIHx8XG4gICAgICB3aW5kb3cuRWxlbWVudC5wcm90b3R5cGUubXNNYXRjaGVzU2VsZWN0b3IgfHxcbiAgICAgIHdpbmRvdy5FbGVtZW50LnByb3RvdHlwZS53ZWJraXRNYXRjaGVzU2VsZWN0b3I7XG5cbiAgICBpZiAoKGRhdGEuZWxlbWVudCAhPSBudWxsICYmIG1hdGNoZXMuY2FsbChkYXRhLmVsZW1lbnQsICc6ZGlzYWJsZWQnKSkgfHxcbiAgICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuZGlzYWJsZWQpKSB7XG4gICAgICBhdHRyc1snYXJpYS1kaXNhYmxlZCddID0gJ3RydWUnO1xuXG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICAgIG9wdGlvbi5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tZGlzYWJsZWQnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5pZCA9PSBudWxsKSB7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5fcmVzdWx0SWQgIT0gbnVsbCkge1xuICAgICAgb3B0aW9uLmlkID0gZGF0YS5fcmVzdWx0SWQ7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEudGl0bGUpIHtcbiAgICAgIG9wdGlvbi50aXRsZSA9IGRhdGEudGl0bGU7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIGF0dHJzLnJvbGUgPSAnZ3JvdXAnO1xuICAgICAgYXR0cnNbJ2FyaWEtbGFiZWwnXSA9IGRhdGEudGV4dDtcblxuICAgICAgb3B0aW9uLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG4gICAgICBvcHRpb24uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLWdyb3VwJyk7XG4gICAgfVxuXG4gICAgZm9yICh2YXIgYXR0ciBpbiBhdHRycykge1xuICAgICAgdmFyIHZhbCA9IGF0dHJzW2F0dHJdO1xuXG4gICAgICBvcHRpb24uc2V0QXR0cmlidXRlKGF0dHIsIHZhbCk7XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuY2hpbGRyZW4pIHtcbiAgICAgIHZhciAkb3B0aW9uID0gJChvcHRpb24pO1xuXG4gICAgICB2YXIgbGFiZWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHJvbmcnKTtcbiAgICAgIGxhYmVsLmNsYXNzTmFtZSA9ICdzZWxlY3QyLXJlc3VsdHNfX2dyb3VwJztcblxuICAgICAgdGhpcy50ZW1wbGF0ZShkYXRhLCBsYWJlbCk7XG5cbiAgICAgIHZhciAkY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCBkYXRhLmNoaWxkcmVuLmxlbmd0aDsgYysrKSB7XG4gICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgdmFyICRjaGlsZCA9IHRoaXMub3B0aW9uKGNoaWxkKTtcblxuICAgICAgICAkY2hpbGRyZW4ucHVzaCgkY2hpbGQpO1xuICAgICAgfVxuXG4gICAgICB2YXIgJGNoaWxkcmVuQ29udGFpbmVyID0gJCgnPHVsPjwvdWw+Jywge1xuICAgICAgICAnY2xhc3MnOiAnc2VsZWN0Mi1yZXN1bHRzX19vcHRpb25zIHNlbGVjdDItcmVzdWx0c19fb3B0aW9ucy0tbmVzdGVkJyxcbiAgICAgICAgJ3JvbGUnOiAnbm9uZSdcbiAgICAgIH0pO1xuXG4gICAgICAkY2hpbGRyZW5Db250YWluZXIuYXBwZW5kKCRjaGlsZHJlbik7XG5cbiAgICAgICRvcHRpb24uYXBwZW5kKGxhYmVsKTtcbiAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbkNvbnRhaW5lcik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMudGVtcGxhdGUoZGF0YSwgb3B0aW9uKTtcbiAgICB9XG5cbiAgICBVdGlscy5TdG9yZURhdGEob3B0aW9uLCAnZGF0YScsIGRhdGEpO1xuXG4gICAgcmV0dXJuIG9wdGlvbjtcbiAgfTtcblxuICBSZXN1bHRzLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG5cbiAgICB0aGlzLiRyZXN1bHRzLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuY2xlYXIoKTtcbiAgICAgIHNlbGYuYXBwZW5kKHBhcmFtcy5kYXRhKTtcblxuICAgICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICBzZWxmLnNldENsYXNzZXMoKTtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czphcHBlbmQnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLmFwcGVuZChwYXJhbXMuZGF0YSk7XG5cbiAgICAgIGlmIChjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5oaWRlTWVzc2FnZXMoKTtcbiAgICAgIHNlbGYuc2hvd0xvYWRpbmcocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKCFjb250YWluZXIuaXNPcGVuKCkpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnNldENsYXNzZXMoKTtcblxuICAgICAgaWYgKHNlbGYub3B0aW9ucy5nZXQoJ3Njcm9sbEFmdGVyU2VsZWN0JykpIHtcbiAgICAgICAgc2VsZi5oaWdobGlnaHRGaXJzdEl0ZW0oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoIWNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHNlbGYuc2V0Q2xhc3NlcygpO1xuXG4gICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnc2Nyb2xsQWZ0ZXJTZWxlY3QnKSkge1xuICAgICAgICBzZWxmLmhpZ2hsaWdodEZpcnN0SXRlbSgpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgLy8gV2hlbiB0aGUgZHJvcGRvd24gaXMgb3BlbiwgYXJpYS1leHBlbmRlZD1cInRydWVcIlxuICAgICAgc2VsZi4kcmVzdWx0cy5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcblxuICAgICAgc2VsZi5zZXRDbGFzc2VzKCk7XG4gICAgICBzZWxmLmVuc3VyZUhpZ2hsaWdodFZpc2libGUoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwZW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRyZXN1bHRzLmF0dHIoJ2FyaWEtZXhwYW5kZWQnLCAnZmFsc2UnKTtcbiAgICAgIHNlbGYuJHJlc3VsdHMuYXR0cignYXJpYS1oaWRkZW4nLCAndHJ1ZScpO1xuICAgICAgc2VsZi4kcmVzdWx0cy5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czp0b2dnbGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgaWYgKCRoaWdobGlnaHRlZC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkaGlnaGxpZ2h0ZWQudHJpZ2dlcignbW91c2V1cCcpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnNlbGVjdCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSgkaGlnaGxpZ2h0ZWRbMF0sICdkYXRhJyk7XG5cbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIHNlbGYudHJpZ2dlcignY2xvc2UnLCB7fSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOnByZXZpb3VzJywgZnVuY3Rpb24gKCkge1xuICAgICAgdmFyICRoaWdobGlnaHRlZCA9IHNlbGYuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICAgIHZhciAkb3B0aW9ucyA9IHNlbGYuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICAgIHZhciBjdXJyZW50SW5kZXggPSAkb3B0aW9ucy5pbmRleCgkaGlnaGxpZ2h0ZWQpO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYWxyZWFkeSBhdCB0aGUgdG9wLCBkb24ndCBtb3ZlIGZ1cnRoZXJcbiAgICAgIC8vIElmIG5vIG9wdGlvbnMsIGN1cnJlbnRJbmRleCB3aWxsIGJlIC0xXG4gICAgICBpZiAoY3VycmVudEluZGV4IDw9IDApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgbmV4dEluZGV4ID0gY3VycmVudEluZGV4IC0gMTtcblxuICAgICAgLy8gSWYgbm9uZSBhcmUgaGlnaGxpZ2h0ZWQsIGhpZ2hsaWdodCB0aGUgZmlyc3RcbiAgICAgIGlmICgkaGlnaGxpZ2h0ZWQubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIG5leHRJbmRleCA9IDA7XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcDtcbiAgICAgIHZhciBuZXh0VG9wID0gJG5leHQub2Zmc2V0KCkudG9wO1xuICAgICAgdmFyIG5leHRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgpICsgKG5leHRUb3AgLSBjdXJyZW50T2Zmc2V0KTtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dFRvcCAtIGN1cnJlbnRPZmZzZXQgPCAwKSB7XG4gICAgICAgIHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKG5leHRPZmZzZXQpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOm5leHQnLCBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgJGhpZ2hsaWdodGVkID0gc2VsZi5nZXRIaWdobGlnaHRlZFJlc3VsdHMoKTtcblxuICAgICAgdmFyICRvcHRpb25zID0gc2VsZi4kcmVzdWx0cy5maW5kKCcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnKTtcblxuICAgICAgdmFyIGN1cnJlbnRJbmRleCA9ICRvcHRpb25zLmluZGV4KCRoaWdobGlnaHRlZCk7XG5cbiAgICAgIHZhciBuZXh0SW5kZXggPSBjdXJyZW50SW5kZXggKyAxO1xuXG4gICAgICAvLyBJZiB3ZSBhcmUgYXQgdGhlIGxhc3Qgb3B0aW9uLCBzdGF5IHRoZXJlXG4gICAgICBpZiAobmV4dEluZGV4ID49ICRvcHRpb25zLmxlbmd0aCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHZhciAkbmV4dCA9ICRvcHRpb25zLmVxKG5leHRJbmRleCk7XG5cbiAgICAgICRuZXh0LnRyaWdnZXIoJ21vdXNlZW50ZXInKTtcblxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSBzZWxmLiRyZXN1bHRzLm9mZnNldCgpLnRvcCArXG4gICAgICAgIHNlbGYuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgICAgdmFyIG5leHRCb3R0b20gPSAkbmV4dC5vZmZzZXQoKS50b3AgKyAkbmV4dC5vdXRlckhlaWdodChmYWxzZSk7XG4gICAgICB2YXIgbmV4dE9mZnNldCA9IHNlbGYuJHJlc3VsdHMuc2Nyb2xsVG9wKCkgKyBuZXh0Qm90dG9tIC0gY3VycmVudE9mZnNldDtcblxuICAgICAgaWYgKG5leHRJbmRleCA9PT0gMCkge1xuICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICAgIH0gZWxzZSBpZiAobmV4dEJvdHRvbSA+IGN1cnJlbnRPZmZzZXQpIHtcbiAgICAgICAgc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBwYXJhbXMuZWxlbWVudFswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcbiAgICAgIHBhcmFtcy5lbGVtZW50WzBdLnNldEF0dHJpYnV0ZSgnYXJpYS1zZWxlY3RlZCcsICd0cnVlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6bWVzc2FnZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYuZGlzcGxheU1lc3NhZ2UocGFyYW1zKTtcbiAgICB9KTtcblxuICAgIGlmICgkLmZuLm1vdXNld2hlZWwpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNld2hlZWwnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICB2YXIgdG9wID0gc2VsZi4kcmVzdWx0cy5zY3JvbGxUb3AoKTtcblxuICAgICAgICB2YXIgYm90dG9tID0gc2VsZi4kcmVzdWx0cy5nZXQoMCkuc2Nyb2xsSGVpZ2h0IC0gdG9wICsgZS5kZWx0YVk7XG5cbiAgICAgICAgdmFyIGlzQXRUb3AgPSBlLmRlbHRhWSA+IDAgJiYgdG9wIC0gZS5kZWx0YVkgPD0gMDtcbiAgICAgICAgdmFyIGlzQXRCb3R0b20gPSBlLmRlbHRhWSA8IDAgJiYgYm90dG9tIDw9IHNlbGYuJHJlc3VsdHMuaGVpZ2h0KCk7XG5cbiAgICAgICAgaWYgKGlzQXRUb3ApIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcblxuICAgICAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB9IGVsc2UgaWYgKGlzQXRCb3R0b20pIHtcbiAgICAgICAgICBzZWxmLiRyZXN1bHRzLnNjcm9sbFRvcChcbiAgICAgICAgICAgIHNlbGYuJHJlc3VsdHMuZ2V0KDApLnNjcm9sbEhlaWdodCAtIHNlbGYuJHJlc3VsdHMuaGVpZ2h0KClcbiAgICAgICAgICApO1xuXG4gICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNldXAnLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciAkdGhpcyA9ICQodGhpcyk7XG5cbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBpZiAoJHRoaXMuaGFzQ2xhc3MoJ3NlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RlZCcpKSB7XG4gICAgICAgIGlmIChzZWxmLm9wdGlvbnMuZ2V0KCdtdWx0aXBsZScpKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ2Nsb3NlJywge30pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgb3JpZ2luYWxFdmVudDogZXZ0LFxuICAgICAgICBkYXRhOiBkYXRhXG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ21vdXNlZW50ZXInLCAnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHZhciBkYXRhID0gVXRpbHMuR2V0RGF0YSh0aGlzLCAnZGF0YScpO1xuXG4gICAgICBzZWxmLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpXG4gICAgICAgICAgLnJlbW92ZUNsYXNzKCdzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKVxuICAgICAgICAgIC5hdHRyKCdhcmlhLXNlbGVjdGVkJywgJ2ZhbHNlJyk7XG5cbiAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czpmb2N1cycsIHtcbiAgICAgICAgZGF0YTogZGF0YSxcbiAgICAgICAgZWxlbWVudDogJCh0aGlzKVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkaGlnaGxpZ2h0ZWQgPSB0aGlzLiRyZXN1bHRzXG4gICAgLmZpbmQoJy5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0taGlnaGxpZ2h0ZWQnKTtcblxuICAgIHJldHVybiAkaGlnaGxpZ2h0ZWQ7XG4gIH07XG5cbiAgUmVzdWx0cy5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLiRyZXN1bHRzLnJlbW92ZSgpO1xuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLmVuc3VyZUhpZ2hsaWdodFZpc2libGUgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRoaWdobGlnaHRlZCA9IHRoaXMuZ2V0SGlnaGxpZ2h0ZWRSZXN1bHRzKCk7XG5cbiAgICBpZiAoJGhpZ2hsaWdodGVkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHMuZmluZCgnLnNlbGVjdDItcmVzdWx0c19fb3B0aW9uLS1zZWxlY3RhYmxlJyk7XG5cbiAgICB2YXIgY3VycmVudEluZGV4ID0gJG9wdGlvbnMuaW5kZXgoJGhpZ2hsaWdodGVkKTtcblxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5vZmZzZXQoKS50b3A7XG4gICAgdmFyIG5leHRUb3AgPSAkaGlnaGxpZ2h0ZWQub2Zmc2V0KCkudG9wO1xuICAgIHZhciBuZXh0T2Zmc2V0ID0gdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AoKSArIChuZXh0VG9wIC0gY3VycmVudE9mZnNldCk7XG5cbiAgICB2YXIgb2Zmc2V0RGVsdGEgPSBuZXh0VG9wIC0gY3VycmVudE9mZnNldDtcbiAgICBuZXh0T2Zmc2V0IC09ICRoaWdobGlnaHRlZC5vdXRlckhlaWdodChmYWxzZSkgKiAyO1xuXG4gICAgaWYgKGN1cnJlbnRJbmRleCA8PSAyKSB7XG4gICAgICB0aGlzLiRyZXN1bHRzLnNjcm9sbFRvcCgwKTtcbiAgICB9IGVsc2UgaWYgKG9mZnNldERlbHRhID4gdGhpcy4kcmVzdWx0cy5vdXRlckhlaWdodCgpIHx8IG9mZnNldERlbHRhIDwgMCkge1xuICAgICAgdGhpcy4kcmVzdWx0cy5zY3JvbGxUb3AobmV4dE9mZnNldCk7XG4gICAgfVxuICB9O1xuXG4gIFJlc3VsdHMucHJvdG90eXBlLnRlbXBsYXRlID0gZnVuY3Rpb24gKHJlc3VsdCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVSZXN1bHQnKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICB2YXIgY29udGVudCA9IHRlbXBsYXRlKHJlc3VsdCwgY29udGFpbmVyKTtcblxuICAgIGlmIChjb250ZW50ID09IG51bGwpIHtcbiAgICAgIGNvbnRhaW5lci5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnO1xuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbnRlbnQgPT09ICdzdHJpbmcnKSB7XG4gICAgICBjb250YWluZXIuaW5uZXJIVE1MID0gZXNjYXBlTWFya3VwKGNvbnRlbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkKGNvbnRhaW5lcikuYXBwZW5kKGNvbnRlbnQpO1xuICAgIH1cbiAgfTtcblxuICByZXR1cm4gUmVzdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIva2V5cycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBLRVlTID0ge1xuICAgIEJBQ0tTUEFDRTogOCxcbiAgICBUQUI6IDksXG4gICAgRU5URVI6IDEzLFxuICAgIFNISUZUOiAxNixcbiAgICBDVFJMOiAxNyxcbiAgICBBTFQ6IDE4LFxuICAgIEVTQzogMjcsXG4gICAgU1BBQ0U6IDMyLFxuICAgIFBBR0VfVVA6IDMzLFxuICAgIFBBR0VfRE9XTjogMzQsXG4gICAgRU5EOiAzNSxcbiAgICBIT01FOiAzNixcbiAgICBMRUZUOiAzNyxcbiAgICBVUDogMzgsXG4gICAgUklHSFQ6IDM5LFxuICAgIERPV046IDQwLFxuICAgIERFTEVURTogNDZcbiAgfTtcblxuICByZXR1cm4gS0VZUztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2Jhc2UnLFtcbiAgJ2pxdWVyeScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIEJhc2VTZWxlY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBCYXNlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKEJhc2VTZWxlY3Rpb24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvblwiIHJvbGU9XCJjb21ib2JveFwiICcgK1xuICAgICAgJyBhcmlhLWhhc3BvcHVwPVwidHJ1ZVwiIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuX3RhYmluZGV4ID0gMDtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKHRoaXMuJGVsZW1lbnRbMF0sICdvbGQtdGFiaW5kZXgnKSAhPSBudWxsKSB7XG4gICAgICB0aGlzLl90YWJpbmRleCA9IFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpO1xuICAgIH0gZWxzZSBpZiAodGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpICE9IG51bGwpIHtcbiAgICAgIHRoaXMuX3RhYmluZGV4ID0gdGhpcy4kZWxlbWVudC5hdHRyKCd0YWJpbmRleCcpO1xuICAgIH1cblxuICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aGlzLiRlbGVtZW50LmF0dHIoJ3RpdGxlJykpO1xuICAgICRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCB0aGlzLl90YWJpbmRleCk7XG4gICAgJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24gPSAkc2VsZWN0aW9uO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgcmVzdWx0c0lkID0gY29udGFpbmVyLmlkICsgJy1yZXN1bHRzJztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdibHVyJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlQmx1cihldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdrZXlkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIGlmIChldnQud2hpY2ggPT09IEtFWVMuU1BBQ0UpIHtcbiAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6Zm9jdXMnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0aW9uOnVwZGF0ZScsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHNlbGYudXBkYXRlKHBhcmFtcy5kYXRhKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFdoZW4gdGhlIGRyb3Bkb3duIGlzIG9wZW4sIGFyaWEtZXhwYW5kZWQ9XCJ0cnVlXCJcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWV4cGFuZGVkJywgJ3RydWUnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLW93bnMnLCByZXN1bHRzSWQpO1xuXG4gICAgICBzZWxmLl9hdHRhY2hDbG9zZUhhbmRsZXIoY29udGFpbmVyKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBXaGVuIHRoZSBkcm9wZG93biBpcyBjbG9zZWQsIGFyaWEtZXhwYW5kZWQ9XCJmYWxzZVwiXG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cignYXJpYS1leHBhbmRlZCcsICdmYWxzZScpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcpO1xuICAgICAgc2VsZi4kc2VsZWN0aW9uLnJlbW92ZUF0dHIoJ2FyaWEtb3ducycpO1xuXG4gICAgICBzZWxmLiRzZWxlY3Rpb24udHJpZ2dlcignZm9jdXMnKTtcblxuICAgICAgc2VsZi5fZGV0YWNoQ2xvc2VIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCd0YWJpbmRleCcsIHNlbGYuX3RhYmluZGV4KTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ2ZhbHNlJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIHNlbGYuJHNlbGVjdGlvbi5hdHRyKCdhcmlhLWRpc2FibGVkJywgJ3RydWUnKTtcbiAgICB9KTtcbiAgfTtcblxuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5faGFuZGxlQmx1ciA9IGZ1bmN0aW9uIChldnQpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBUaGlzIG5lZWRzIHRvIGJlIGRlbGF5ZWQgYXMgdGhlIGFjdGl2ZSBlbGVtZW50IGlzIHRoZSBib2R5IHdoZW4gdGhlIHRhYlxuICAgIC8vIGtleSBpcyBwcmVzc2VkLCBwb3NzaWJseSBhbG9uZyB3aXRoIG90aGVycy5cbiAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAvLyBEb24ndCB0cmlnZ2VyIGBibHVyYCBpZiB0aGUgZm9jdXMgaXMgc3RpbGwgaW4gdGhlIHNlbGVjdGlvblxuICAgICAgaWYgKFxuICAgICAgICAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCA9PSBzZWxmLiRzZWxlY3Rpb25bMF0pIHx8XG4gICAgICAgICgkLmNvbnRhaW5zKHNlbGYuJHNlbGVjdGlvblswXSwgZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIoJ2JsdXInLCBldnQpO1xuICAgIH0sIDEpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLl9hdHRhY2hDbG9zZUhhbmRsZXIgPSBmdW5jdGlvbiAoY29udGFpbmVyKSB7XG5cbiAgICAkKGRvY3VtZW50LmJvZHkpLm9uKCdtb3VzZWRvd24uc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkLCBmdW5jdGlvbiAoZSkge1xuICAgICAgdmFyICR0YXJnZXQgPSAkKGUudGFyZ2V0KTtcblxuICAgICAgdmFyICRzZWxlY3QgPSAkdGFyZ2V0LmNsb3Nlc3QoJy5zZWxlY3QyJyk7XG5cbiAgICAgIHZhciAkYWxsID0gJCgnLnNlbGVjdDIuc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICAgJGFsbC5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKHRoaXMgPT0gJHNlbGVjdFswXSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciAkZWxlbWVudCA9IFV0aWxzLkdldERhdGEodGhpcywgJ2VsZW1lbnQnKTtcblxuICAgICAgICAkZWxlbWVudC5zZWxlY3QyKCdjbG9zZScpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuX2RldGFjaENsb3NlSGFuZGxlciA9IGZ1bmN0aW9uIChjb250YWluZXIpIHtcbiAgICAkKGRvY3VtZW50LmJvZHkpLm9mZignbW91c2Vkb3duLnNlbGVjdDIuJyArIGNvbnRhaW5lci5pZCk7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUucG9zaXRpb24gPSBmdW5jdGlvbiAoJHNlbGVjdGlvbiwgJGNvbnRhaW5lcikge1xuICAgIHZhciAkc2VsZWN0aW9uQ29udGFpbmVyID0gJGNvbnRhaW5lci5maW5kKCcuc2VsZWN0aW9uJyk7XG4gICAgJHNlbGVjdGlvbkNvbnRhaW5lci5hcHBlbmQoJHNlbGVjdGlvbik7XG4gIH07XG5cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLl9kZXRhY2hDbG9zZUhhbmRsZXIodGhpcy5jb250YWluZXIpO1xuICB9O1xuXG4gIEJhc2VTZWxlY3Rpb24ucHJvdG90eXBlLnVwZGF0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYHVwZGF0ZWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImVuYWJsZWRcIiAobm90IFwiZGlzYWJsZWRcIikgc3RhdGUgb2YgdGhpc1xuICAgKiBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBpbnN0YW5jZSBpcyBub3QgZGlzYWJsZWQuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgaW5zdGFuY2UgaXMgZGlzYWJsZWQuXG4gICAqL1xuICBCYXNlU2VsZWN0aW9uLnByb3RvdHlwZS5pc0VuYWJsZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuICF0aGlzLmlzRGlzYWJsZWQoKTtcbiAgfTtcblxuICAvKipcbiAgICogSGVscGVyIG1ldGhvZCB0byBhYnN0cmFjdCB0aGUgXCJkaXNhYmxlZFwiIHN0YXRlIG9mIHRoaXMgb2JqZWN0LlxuICAgKlxuICAgKiBAcmV0dXJuIHt0cnVlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIHRydWUuXG4gICAqIEByZXR1cm4ge2ZhbHNlfSBpZiB0aGUgZGlzYWJsZWQgb3B0aW9uIGlzIGZhbHNlLlxuICAgKi9cbiAgQmFzZVNlbGVjdGlvbi5wcm90b3R5cGUuaXNEaXNhYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmdldCgnZGlzYWJsZWQnKTtcbiAgfTtcblxuICByZXR1cm4gQmFzZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3NpbmdsZScsW1xuICAnanF1ZXJ5JyxcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICcuLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzLCBLRVlTKSB7XG4gIGZ1bmN0aW9uIFNpbmdsZVNlbGVjdGlvbiAoKSB7XG4gICAgU2luZ2xlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNpbmdsZVNlbGVjdGlvbiwgQmFzZVNlbGVjdGlvbik7XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRzZWxlY3Rpb24gPSBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tc2luZ2xlJyk7XG5cbiAgICAkc2VsZWN0aW9uLmh0bWwoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3NwYW4+JyArXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fYXJyb3dcIiByb2xlPVwicHJlc2VudGF0aW9uXCI+JyArXG4gICAgICAgICc8YiByb2xlPVwicHJlc2VudGF0aW9uXCI+PC9iPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBTaW5nbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJylcbiAgICAgIC5hdHRyKCdpZCcsIGlkKVxuICAgICAgLmF0dHIoJ3JvbGUnLCAndGV4dGJveCcpXG4gICAgICAuYXR0cignYXJpYS1yZWFkb25seScsICd0cnVlJyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ2FyaWEtbGFiZWxsZWRieScsIGlkKTtcbiAgICB0aGlzLiRzZWxlY3Rpb24uYXR0cignYXJpYS1jb250cm9scycsIGlkKTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gT25seSByZXNwb25kIHRvIGxlZnQgY2xpY2tzXG4gICAgICBpZiAoZXZ0LndoaWNoICE9PSAxKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgc2VsZi50cmlnZ2VyKCd0b2dnbGUnLCB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dFxuICAgICAgfSk7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgLy8gVXNlciBmb2N1c2VzIG9uIHRoZSBjb250YWluZXJcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignYmx1cicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVzZXIgZXhpdHMgdGhlIGNvbnRhaW5lclxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlbGVjdGlvbi50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgJHJlbmRlcmVkLmVtcHR5KCk7XG4gICAgJHJlbmRlcmVkLnJlbW92ZUF0dHIoJ3RpdGxlJyk7IC8vIGNsZWFyIHRvb2x0aXAgb24gZW1wdHlcbiAgfTtcblxuICBTaW5nbGVTZWxlY3Rpb24ucHJvdG90eXBlLmRpc3BsYXkgPSBmdW5jdGlvbiAoZGF0YSwgY29udGFpbmVyKSB7XG4gICAgdmFyIHRlbXBsYXRlID0gdGhpcy5vcHRpb25zLmdldCgndGVtcGxhdGVTZWxlY3Rpb24nKTtcbiAgICB2YXIgZXNjYXBlTWFya3VwID0gdGhpcy5vcHRpb25zLmdldCgnZXNjYXBlTWFya3VwJyk7XG5cbiAgICByZXR1cm4gZXNjYXBlTWFya3VwKHRlbXBsYXRlKGRhdGEsIGNvbnRhaW5lcikpO1xuICB9O1xuXG4gIFNpbmdsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiAkKCc8c3Bhbj48L3NwYW4+Jyk7XG4gIH07XG5cbiAgU2luZ2xlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgdGhpcy5jbGVhcigpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBzZWxlY3Rpb24gPSBkYXRhWzBdO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IHRoaXMuJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX3JlbmRlcmVkJyk7XG4gICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRyZW5kZXJlZCk7XG5cbiAgICAkcmVuZGVyZWQuZW1wdHkoKS5hcHBlbmQoZm9ybWF0dGVkKTtcblxuICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgIGlmICh0aXRsZSkge1xuICAgICAgJHJlbmRlcmVkLmF0dHIoJ3RpdGxlJywgdGl0bGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAkcmVuZGVyZWQucmVtb3ZlQXR0cigndGl0bGUnKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIFNpbmdsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL211bHRpcGxlJyxbXG4gICdqcXVlcnknLFxuICAnLi9iYXNlJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEJhc2VTZWxlY3Rpb24sIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIE11bHRpcGxlU2VsZWN0aW9uICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIE11bHRpcGxlU2VsZWN0aW9uLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKE11bHRpcGxlU2VsZWN0aW9uLCBCYXNlU2VsZWN0aW9uKTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkc2VsZWN0aW9uID0gTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLnJlbmRlci5jYWxsKHRoaXMpO1xuXG4gICAgJHNlbGVjdGlvblswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLXNlbGVjdGlvbi0tbXVsdGlwbGUnKTtcblxuICAgICRzZWxlY3Rpb24uaHRtbChcbiAgICAgICc8dWwgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWRcIj48L3VsPidcbiAgICApO1xuXG4gICAgcmV0dXJuICRzZWxlY3Rpb247XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgTXVsdGlwbGVTZWxlY3Rpb24uX19zdXBlcl9fLmJpbmQuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcblxuICAgIHZhciBpZCA9IGNvbnRhaW5lci5pZCArICctY29udGFpbmVyJztcbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoJ2lkJywgaWQpO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdjbGljaycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigndG9nZ2xlJywge1xuICAgICAgICBvcmlnaW5hbEV2ZW50OiBldnRcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2NsaWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBldmVudCBpZiBpdCBpcyBkaXNhYmxlZFxuICAgICAgICBpZiAoc2VsZi5pc0Rpc2FibGVkKCkpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgJHJlbW92ZSA9ICQodGhpcyk7XG4gICAgICAgIHZhciAkc2VsZWN0aW9uID0gJHJlbW92ZS5wYXJlbnQoKTtcblxuICAgICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJHNlbGVjdGlvblswXSwgJ2RhdGEnKTtcblxuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Vuc2VsZWN0Jywge1xuICAgICAgICAgIG9yaWdpbmFsRXZlbnQ6IGV2dCxcbiAgICAgICAgICBkYXRhOiBkYXRhXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ub24oXG4gICAgICAna2V5ZG93bicsXG4gICAgICAnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICAgICAgaWYgKHNlbGYuaXNEaXNhYmxlZCgpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgfVxuICAgICk7XG4gIH07XG5cbiAgTXVsdGlwbGVTZWxlY3Rpb24ucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpO1xuICAgICRyZW5kZXJlZC5lbXB0eSgpO1xuICAgICRyZW5kZXJlZC5yZW1vdmVBdHRyKCd0aXRsZScpO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS5kaXNwbGF5ID0gZnVuY3Rpb24gKGRhdGEsIGNvbnRhaW5lcikge1xuICAgIHZhciB0ZW1wbGF0ZSA9IHRoaXMub3B0aW9ucy5nZXQoJ3RlbXBsYXRlU2VsZWN0aW9uJyk7XG4gICAgdmFyIGVzY2FwZU1hcmt1cCA9IHRoaXMub3B0aW9ucy5nZXQoJ2VzY2FwZU1hcmt1cCcpO1xuXG4gICAgcmV0dXJuIGVzY2FwZU1hcmt1cCh0ZW1wbGF0ZShkYXRhLCBjb250YWluZXIpKTtcbiAgfTtcblxuICBNdWx0aXBsZVNlbGVjdGlvbi5wcm90b3R5cGUuc2VsZWN0aW9uQ29udGFpbmVyID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJChcbiAgICAgICc8bGkgY2xhc3M9XCJzZWxlY3QyLXNlbGVjdGlvbl9fY2hvaWNlXCI+JyArXG4gICAgICAgICc8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX3JlbW92ZVwiICcgK1xuICAgICAgICAndGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAgICc8c3BhbiBhcmlhLWhpZGRlbj1cInRydWVcIj4mdGltZXM7PC9zcGFuPicgK1xuICAgICAgICAnPC9idXR0b24+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2VfX2Rpc3BsYXlcIj48L3NwYW4+JyArXG4gICAgICAnPC9saT4nXG4gICAgKTtcblxuICAgIHJldHVybiAkY29udGFpbmVyO1xuICB9O1xuXG4gIE11bHRpcGxlU2VsZWN0aW9uLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHRoaXMuY2xlYXIoKTtcblxuICAgIGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciAkc2VsZWN0aW9ucyA9IFtdO1xuXG4gICAgdmFyIHNlbGVjdGlvbklkUHJlZml4ID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJykgKyAnLWNob2ljZS0nO1xuXG4gICAgZm9yICh2YXIgZCA9IDA7IGQgPCBkYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICB2YXIgc2VsZWN0aW9uID0gZGF0YVtkXTtcblxuICAgICAgdmFyICRzZWxlY3Rpb24gPSB0aGlzLnNlbGVjdGlvbkNvbnRhaW5lcigpO1xuICAgICAgdmFyIGZvcm1hdHRlZCA9IHRoaXMuZGlzcGxheShzZWxlY3Rpb24sICRzZWxlY3Rpb24pO1xuXG4gICAgICB2YXIgc2VsZWN0aW9uSWQgPSBzZWxlY3Rpb25JZFByZWZpeCArIFV0aWxzLmdlbmVyYXRlQ2hhcnMoNCkgKyAnLSc7XG5cbiAgICAgIGlmIChzZWxlY3Rpb24uaWQpIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gc2VsZWN0aW9uLmlkO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2VsZWN0aW9uSWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICAgIH1cblxuICAgICAgJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fZGlzcGxheScpXG4gICAgICAgIC5hcHBlbmQoZm9ybWF0dGVkKVxuICAgICAgICAuYXR0cignaWQnLCBzZWxlY3Rpb25JZCk7XG5cbiAgICAgIHZhciB0aXRsZSA9IHNlbGVjdGlvbi50aXRsZSB8fCBzZWxlY3Rpb24udGV4dDtcblxuICAgICAgaWYgKHRpdGxlKSB7XG4gICAgICAgICRzZWxlY3Rpb24uYXR0cigndGl0bGUnLCB0aXRsZSk7XG4gICAgICB9XG5cbiAgICAgIHZhciByZW1vdmVJdGVtID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVJdGVtJyk7XG5cbiAgICAgIHZhciAkcmVtb3ZlID0gJHNlbGVjdGlvbi5maW5kKCcuc2VsZWN0Mi1zZWxlY3Rpb25fX2Nob2ljZV9fcmVtb3ZlJyk7XG5cbiAgICAgICRyZW1vdmUuYXR0cigndGl0bGUnLCByZW1vdmVJdGVtKCkpO1xuICAgICAgJHJlbW92ZS5hdHRyKCdhcmlhLWxhYmVsJywgcmVtb3ZlSXRlbSgpKTtcbiAgICAgICRyZW1vdmUuYXR0cignYXJpYS1kZXNjcmliZWRieScsIHNlbGVjdGlvbklkKTtcblxuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRzZWxlY3Rpb25bMF0sICdkYXRhJywgc2VsZWN0aW9uKTtcblxuICAgICAgJHNlbGVjdGlvbnMucHVzaCgkc2VsZWN0aW9uKTtcbiAgICB9XG5cbiAgICB2YXIgJHJlbmRlcmVkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKTtcblxuICAgICRyZW5kZXJlZC5hcHBlbmQoJHNlbGVjdGlvbnMpO1xuICB9O1xuXG4gIHJldHVybiBNdWx0aXBsZVNlbGVjdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL3BsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gUGxhY2Vob2xkZXIgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLnBsYWNlaG9sZGVyID0gdGhpcy5ub3JtYWxpemVQbGFjZWhvbGRlcihvcHRpb25zLmdldCgncGxhY2Vob2xkZXInKSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBQbGFjZWhvbGRlci5wcm90b3R5cGUubm9ybWFsaXplUGxhY2Vob2xkZXIgPSBmdW5jdGlvbiAoXywgcGxhY2Vob2xkZXIpIHtcbiAgICBpZiAodHlwZW9mIHBsYWNlaG9sZGVyID09PSAnc3RyaW5nJykge1xuICAgICAgcGxhY2Vob2xkZXIgPSB7XG4gICAgICAgIGlkOiAnJyxcbiAgICAgICAgdGV4dDogcGxhY2Vob2xkZXJcbiAgICAgIH07XG4gICAgfVxuXG4gICAgcmV0dXJuIHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuc2VsZWN0aW9uQ29udGFpbmVyKCk7XG5cbiAgICAkcGxhY2Vob2xkZXIuaHRtbCh0aGlzLmRpc3BsYXkocGxhY2Vob2xkZXIpKTtcbiAgICAkcGxhY2Vob2xkZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb25fX3BsYWNlaG9sZGVyJyk7XG4gICAgJHBsYWNlaG9sZGVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKTtcblxuICAgIHZhciBwbGFjZWhvbGRlclRpdGxlID0gcGxhY2Vob2xkZXIudGl0bGUgfHxcbiAgICAgIHBsYWNlaG9sZGVyLnRleHQgfHxcbiAgICAgICRwbGFjZWhvbGRlci50ZXh0KCk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmF0dHIoXG4gICAgICAndGl0bGUnLFxuICAgICAgcGxhY2Vob2xkZXJUaXRsZVxuICAgICk7XG5cbiAgICByZXR1cm4gJHBsYWNlaG9sZGVyO1xuICB9O1xuXG4gIFBsYWNlaG9sZGVyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNpbmdsZVBsYWNlaG9sZGVyID0gKFxuICAgICAgZGF0YS5sZW5ndGggPT0gMSAmJiBkYXRhWzBdLmlkICE9IHRoaXMucGxhY2Vob2xkZXIuaWRcbiAgICApO1xuICAgIHZhciBtdWx0aXBsZVNlbGVjdGlvbnMgPSBkYXRhLmxlbmd0aCA+IDE7XG5cbiAgICBpZiAobXVsdGlwbGVTZWxlY3Rpb25zIHx8IHNpbmdsZVBsYWNlaG9sZGVyKSB7XG4gICAgICByZXR1cm4gZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG4gICAgfVxuXG4gICAgdGhpcy5jbGVhcigpO1xuXG4gICAgdmFyICRwbGFjZWhvbGRlciA9IHRoaXMuY3JlYXRlUGxhY2Vob2xkZXIodGhpcy5wbGFjZWhvbGRlcik7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19yZW5kZXJlZCcpLmFwcGVuZCgkcGxhY2Vob2xkZXIpO1xuICB9O1xuXG4gIHJldHVybiBQbGFjZWhvbGRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvc2VsZWN0aW9uL2FsbG93Q2xlYXInLFtcbiAgJ2pxdWVyeScsXG4gICcuLi9rZXlzJyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIEtFWVMsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEFsbG93Q2xlYXIgKCkgeyB9XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBpZiAodGhpcy5wbGFjZWhvbGRlciA9PSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoXG4gICAgICAgICAgJ1NlbGVjdDI6IFRoZSBgYWxsb3dDbGVhcmAgb3B0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNvbWJpbmF0aW9uICcgK1xuICAgICAgICAgICd3aXRoIHRoZSBgcGxhY2Vob2xkZXJgIG9wdGlvbi4nXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdtb3VzZWRvd24nLCAnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIHNlbGYuX2hhbmRsZUNsZWFyKGV2dCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2tleXByZXNzJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgc2VsZi5faGFuZGxlS2V5Ym9hcmRDbGVhcihldnQsIGNvbnRhaW5lcik7XG4gICAgfSk7XG4gIH07XG5cbiAgQWxsb3dDbGVhci5wcm90b3R5cGUuX2hhbmRsZUNsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCkge1xuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgaXQgaXMgZGlzYWJsZWRcbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgJGNsZWFyID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fY2xlYXInKTtcblxuICAgIC8vIElnbm9yZSB0aGUgZXZlbnQgaWYgbm90aGluZyBoYXMgYmVlbiBzZWxlY3RlZFxuICAgIGlmICgkY2xlYXIubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuXG4gICAgdmFyIGRhdGEgPSBVdGlscy5HZXREYXRhKCRjbGVhclswXSwgJ2RhdGEnKTtcblxuICAgIHZhciBwcmV2aW91c1ZhbCA9IHRoaXMuJGVsZW1lbnQudmFsKCk7XG4gICAgdGhpcy4kZWxlbWVudC52YWwodGhpcy5wbGFjZWhvbGRlci5pZCk7XG5cbiAgICB2YXIgdW5zZWxlY3REYXRhID0ge1xuICAgICAgZGF0YTogZGF0YVxuICAgIH07XG4gICAgdGhpcy50cmlnZ2VyKCdjbGVhcicsIHVuc2VsZWN0RGF0YSk7XG4gICAgaWYgKHVuc2VsZWN0RGF0YS5wcmV2ZW50ZWQpIHtcbiAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHVuc2VsZWN0RGF0YSA9IHtcbiAgICAgICAgZGF0YTogZGF0YVtkXVxuICAgICAgfTtcblxuICAgICAgLy8gVHJpZ2dlciB0aGUgYHVuc2VsZWN0YCBldmVudCwgc28gcGVvcGxlIGNhbiBwcmV2ZW50IGl0IGZyb20gYmVpbmdcbiAgICAgIC8vIGNsZWFyZWQuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3Vuc2VsZWN0JywgdW5zZWxlY3REYXRhKTtcblxuICAgICAgLy8gSWYgdGhlIGV2ZW50IHdhcyBwcmV2ZW50ZWQsIGRvbid0IGNsZWFyIGl0IG91dC5cbiAgICAgIGlmICh1bnNlbGVjdERhdGEucHJldmVudGVkKSB7XG4gICAgICAgIHRoaXMuJGVsZW1lbnQudmFsKHByZXZpb3VzVmFsKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcblxuICAgIHRoaXMudHJpZ2dlcigndG9nZ2xlJywge30pO1xuICB9O1xuXG4gIEFsbG93Q2xlYXIucHJvdG90eXBlLl9oYW5kbGVLZXlib2FyZENsZWFyID0gZnVuY3Rpb24gKF8sIGV2dCwgY29udGFpbmVyKSB7XG4gICAgaWYgKGNvbnRhaW5lci5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChldnQud2hpY2ggPT0gS0VZUy5ERUxFVEUgfHwgZXZ0LndoaWNoID09IEtFWVMuQkFDS1NQQUNFKSB7XG4gICAgICB0aGlzLl9oYW5kbGVDbGVhcihldnQpO1xuICAgIH1cbiAgfTtcblxuICBBbGxvd0NsZWFyLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24uZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jbGVhcicpLnJlbW92ZSgpO1xuICAgIHRoaXMuJHNlbGVjdGlvblswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLXNlbGVjdGlvbi0tY2xlYXJhYmxlJyk7XG5cbiAgICBpZiAodGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcGxhY2Vob2xkZXInKS5sZW5ndGggPiAwIHx8XG4gICAgICAgIGRhdGEubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGVjdGlvbklkID0gdGhpcy4kc2VsZWN0aW9uLmZpbmQoJy5zZWxlY3QyLXNlbGVjdGlvbl9fcmVuZGVyZWQnKVxuICAgICAgLmF0dHIoJ2lkJyk7XG5cbiAgICB2YXIgcmVtb3ZlQWxsID0gdGhpcy5vcHRpb25zLmdldCgndHJhbnNsYXRpb25zJykuZ2V0KCdyZW1vdmVBbGxJdGVtcycpO1xuXG4gICAgdmFyICRyZW1vdmUgPSAkKFxuICAgICAgJzxidXR0b24gdHlwZT1cImJ1dHRvblwiIGNsYXNzPVwic2VsZWN0Mi1zZWxlY3Rpb25fX2NsZWFyXCIgdGFiaW5kZXg9XCItMVwiPicgK1xuICAgICAgICAnPHNwYW4gYXJpYS1oaWRkZW49XCJ0cnVlXCI+JnRpbWVzOzwvc3Bhbj4nICtcbiAgICAgICc8L2J1dHRvbj4nXG4gICAgKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ3RpdGxlJywgcmVtb3ZlQWxsKCkpO1xuICAgICRyZW1vdmUuYXR0cignYXJpYS1sYWJlbCcsIHJlbW92ZUFsbCgpKTtcbiAgICAkcmVtb3ZlLmF0dHIoJ2FyaWEtZGVzY3JpYmVkYnknLCBzZWxlY3Rpb25JZCk7XG4gICAgVXRpbHMuU3RvcmVEYXRhKCRyZW1vdmVbMF0sICdkYXRhJywgZGF0YSk7XG5cbiAgICB0aGlzLiRzZWxlY3Rpb24ucHJlcGVuZCgkcmVtb3ZlKTtcbiAgICB0aGlzLiRzZWxlY3Rpb25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1zZWxlY3Rpb24tLWNsZWFyYWJsZScpO1xuICB9O1xuXG4gIHJldHVybiBBbGxvd0NsZWFyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9zZWxlY3Rpb24vc2VhcmNoJyxbXG4gICdqcXVlcnknLFxuICAnLi4vdXRpbHMnLFxuICAnLi4va2V5cydcbl0sIGZ1bmN0aW9uICgkLCBVdGlscywgS0VZUykge1xuICBmdW5jdGlvbiBTZWFyY2ggKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBTZWFyY2gucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuICAgIHZhciAkc2VhcmNoID0gJChcbiAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItc2VhcmNoIHNlbGVjdDItc2VhcmNoLS1pbmxpbmVcIj4nICtcbiAgICAgICAgJzx0ZXh0YXJlYSBjbGFzcz1cInNlbGVjdDItc2VhcmNoX19maWVsZFwiJytcbiAgICAgICAgJyB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiA+JyArXG4gICAgICAgICc8L3RleHRhcmVhPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCd0ZXh0YXJlYScpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgdmFyICRyZW5kZXJlZCA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdGhpcy5fdHJhbnNmZXJUYWJJbmRleCgpO1xuICAgICRyZW5kZXJlZC5hcHBlbmQodGhpcy4kc2VhcmNoQ29udGFpbmVyKTtcblxuICAgIHJldHVybiAkcmVuZGVyZWQ7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHJlc3VsdHNJZCA9IGNvbnRhaW5lci5pZCArICctcmVzdWx0cyc7XG4gICAgdmFyIHNlbGVjdGlvbklkID0gY29udGFpbmVyLmlkICsgJy1jb250YWluZXInO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHNlbGYuJHNlYXJjaC5hdHRyKCdhcmlhLWRlc2NyaWJlZGJ5Jywgc2VsZWN0aW9uSWQpO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtY29udHJvbHMnLCByZXN1bHRzSWQpO1xuICAgICAgc2VsZi4kc2VhcmNoLnRyaWdnZXIoJ2ZvY3VzJyk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLnJlc2l6ZVNlYXJjaCgpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdlbmFibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRzZWFyY2gucHJvcCgnZGlzYWJsZWQnLCBmYWxzZSk7XG5cbiAgICAgIHNlbGYuX3RyYW5zZmVyVGFiSW5kZXgoKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignZGlzYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgaWYgKHBhcmFtcy5kYXRhLl9yZXN1bHRJZCkge1xuICAgICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50JywgcGFyYW1zLmRhdGEuX3Jlc3VsdElkKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignZm9jdXNpbicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKCdmb2N1c291dCcsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX2hhbmRsZUJsdXIoZXZ0KTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbigna2V5ZG93bicsICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcblxuICAgICAgc2VsZi50cmlnZ2VyKCdrZXlwcmVzcycsIGV2dCk7XG5cbiAgICAgIHNlbGYuX2tleVVwUHJldmVudGVkID0gZXZ0LmlzRGVmYXVsdFByZXZlbnRlZCgpO1xuXG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoa2V5ID09PSBLRVlTLkJBQ0tTUEFDRSAmJiBzZWxmLiRzZWFyY2gudmFsKCkgPT09ICcnKSB7XG4gICAgICAgIHZhciAkcHJldmlvdXNDaG9pY2UgPSBzZWxmLiRzZWxlY3Rpb25cbiAgICAgICAgICAuZmluZCgnLnNlbGVjdDItc2VsZWN0aW9uX19jaG9pY2UnKS5sYXN0KCk7XG5cbiAgICAgICAgaWYgKCRwcmV2aW91c0Nob2ljZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdmFyIGl0ZW0gPSBVdGlscy5HZXREYXRhKCRwcmV2aW91c0Nob2ljZVswXSwgJ2RhdGEnKTtcblxuICAgICAgICAgIHNlbGYuc2VhcmNoUmVtb3ZlQ2hvaWNlKGl0ZW0pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlbGVjdGlvbi5vbignY2xpY2snLCAnLnNlbGVjdDItc2VhcmNoLS1pbmxpbmUnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBpZiAoc2VsZi4kc2VhcmNoLnZhbCgpKSB7XG4gICAgICAgIGV2dC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vIFRyeSB0byBkZXRlY3QgdGhlIElFIHZlcnNpb24gc2hvdWxkIHRoZSBgZG9jdW1lbnRNb2RlYCBwcm9wZXJ0eSB0aGF0XG4gICAgLy8gaXMgc3RvcmVkIG9uIHRoZSBkb2N1bWVudC4gVGhpcyBpcyBvbmx5IGltcGxlbWVudGVkIGluIElFIGFuZCBpc1xuICAgIC8vIHNsaWdodGx5IGNsZWFuZXIgdGhhbiBkb2luZyBhIHVzZXIgYWdlbnQgY2hlY2suXG4gICAgLy8gVGhpcyBwcm9wZXJ0eSBpcyBub3QgYXZhaWxhYmxlIGluIEVkZ2UsIGJ1dCBFZGdlIGFsc28gZG9lc24ndCBoYXZlXG4gICAgLy8gdGhpcyBidWcuXG4gICAgdmFyIG1zaWUgPSBkb2N1bWVudC5kb2N1bWVudE1vZGU7XG4gICAgdmFyIGRpc2FibGVJbnB1dEV2ZW50cyA9IG1zaWUgJiYgbXNpZSA8PSAxMTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2lucHV0LnNlYXJjaGNoZWNrJyxcbiAgICAgICcuc2VsZWN0Mi1zZWFyY2gtLWlubGluZScsXG4gICAgICBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICAgIC8vIElFIHdpbGwgdHJpZ2dlciB0aGUgYGlucHV0YCBldmVudCB3aGVuIGEgcGxhY2Vob2xkZXIgaXMgdXNlZCBvbiBhXG4gICAgICAgIC8vIHNlYXJjaCBib3guIFRvIGdldCBhcm91bmQgdGhpcyBpc3N1ZSwgd2UgYXJlIGZvcmNlZCB0byBpZ25vcmUgYWxsXG4gICAgICAgIC8vIGBpbnB1dGAgZXZlbnRzIGluIElFIGFuZCBrZWVwIHVzaW5nIGBrZXl1cGAuXG4gICAgICAgIGlmIChkaXNhYmxlSW5wdXRFdmVudHMpIHtcbiAgICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdpbnB1dC5zZWFyY2ggaW5wdXQuc2VhcmNoY2hlY2snKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBVbmJpbmQgdGhlIGR1cGxpY2F0ZWQgYGtleXVwYCBldmVudFxuICAgICAgICBzZWxmLiRzZWxlY3Rpb24ub2ZmKCdrZXl1cC5zZWFyY2gnKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgdGhpcy4kc2VsZWN0aW9uLm9uKFxuICAgICAgJ2tleXVwLnNlYXJjaCBpbnB1dC5zZWFyY2gnLFxuICAgICAgJy5zZWxlY3QyLXNlYXJjaC0taW5saW5lJyxcbiAgICAgIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgICAgLy8gSUUgd2lsbCB0cmlnZ2VyIHRoZSBgaW5wdXRgIGV2ZW50IHdoZW4gYSBwbGFjZWhvbGRlciBpcyB1c2VkIG9uIGFcbiAgICAgICAgLy8gc2VhcmNoIGJveC4gVG8gZ2V0IGFyb3VuZCB0aGlzIGlzc3VlLCB3ZSBhcmUgZm9yY2VkIHRvIGlnbm9yZSBhbGxcbiAgICAgICAgLy8gYGlucHV0YCBldmVudHMgaW4gSUUgYW5kIGtlZXAgdXNpbmcgYGtleXVwYC5cbiAgICAgICAgaWYgKGRpc2FibGVJbnB1dEV2ZW50cyAmJiBldnQudHlwZSA9PT0gJ2lucHV0Jykge1xuICAgICAgICAgIHNlbGYuJHNlbGVjdGlvbi5vZmYoJ2lucHV0LnNlYXJjaCBpbnB1dC5zZWFyY2hjaGVjaycpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHZhciBrZXkgPSBldnQud2hpY2g7XG5cbiAgICAgICAgLy8gV2UgY2FuIGZyZWVseSBpZ25vcmUgZXZlbnRzIGZyb20gbW9kaWZpZXIga2V5c1xuICAgICAgICBpZiAoa2V5ID09IEtFWVMuU0hJRlQgfHwga2V5ID09IEtFWVMuQ1RSTCB8fCBrZXkgPT0gS0VZUy5BTFQpIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBUYWJiaW5nIHdpbGwgYmUgaGFuZGxlZCBkdXJpbmcgdGhlIGBrZXlkb3duYCBwaGFzZVxuICAgICAgICBpZiAoa2V5ID09IEtFWVMuVEFCKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgc2VsZi5oYW5kbGVTZWFyY2goZXZ0KTtcbiAgICAgIH1cbiAgICApO1xuICB9O1xuXG4gIC8qKlxuICAgKiBUaGlzIG1ldGhvZCB3aWxsIHRyYW5zZmVyIHRoZSB0YWJpbmRleCBhdHRyaWJ1dGUgZnJvbSB0aGUgcmVuZGVyZWRcbiAgICogc2VsZWN0aW9uIHRvIHRoZSBzZWFyY2ggYm94LiBUaGlzIGFsbG93cyBmb3IgdGhlIHNlYXJjaCBib3ggdG8gYmUgdXNlZCBhc1xuICAgKiB0aGUgcHJpbWFyeSBmb2N1cyBpbnN0ZWFkIG9mIHRoZSBzZWxlY3Rpb24gY29udGFpbmVyLlxuICAgKlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgU2VhcmNoLnByb3RvdHlwZS5fdHJhbnNmZXJUYWJJbmRleCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB0aGlzLiRzZWFyY2guYXR0cigndGFiaW5kZXgnLCB0aGlzLiRzZWxlY3Rpb24uYXR0cigndGFiaW5kZXgnKSk7XG4gICAgdGhpcy4kc2VsZWN0aW9uLmF0dHIoJ3RhYmluZGV4JywgJy0xJyk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5jcmVhdGVQbGFjZWhvbGRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBsYWNlaG9sZGVyKSB7XG4gICAgdGhpcy4kc2VhcmNoLmF0dHIoJ3BsYWNlaG9sZGVyJywgcGxhY2Vob2xkZXIudGV4dCk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS51cGRhdGUgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBkYXRhKSB7XG4gICAgdmFyIHNlYXJjaEhhZEZvY3VzID0gdGhpcy4kc2VhcmNoWzBdID09IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG5cbiAgICB0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInLCAnJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcblxuICAgIHRoaXMucmVzaXplU2VhcmNoKCk7XG4gICAgaWYgKHNlYXJjaEhhZEZvY3VzKSB7XG4gICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5yZXNpemVTZWFyY2goKTtcblxuICAgIGlmICghdGhpcy5fa2V5VXBQcmV2ZW50ZWQpIHtcbiAgICAgIHZhciBpbnB1dCA9IHRoaXMuJHNlYXJjaC52YWwoKTtcblxuICAgICAgdGhpcy50cmlnZ2VyKCdxdWVyeScsIHtcbiAgICAgICAgdGVybTogaW5wdXRcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuX2tleVVwUHJldmVudGVkID0gZmFsc2U7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5zZWFyY2hSZW1vdmVDaG9pY2UgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBpdGVtKSB7XG4gICAgdGhpcy50cmlnZ2VyKCd1bnNlbGVjdCcsIHtcbiAgICAgIGRhdGE6IGl0ZW1cbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC52YWwoaXRlbS50ZXh0KTtcbiAgICB0aGlzLmhhbmRsZVNlYXJjaCgpO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVzaXplU2VhcmNoID0gZnVuY3Rpb24gKCkge1xuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgJzI1cHgnKTtcblxuICAgIHZhciB3aWR0aCA9ICcxMDAlJztcblxuICAgIGlmICh0aGlzLiRzZWFyY2guYXR0cigncGxhY2Vob2xkZXInKSA9PT0gJycpIHtcbiAgICAgIHZhciBtaW5pbXVtV2lkdGggPSB0aGlzLiRzZWFyY2gudmFsKCkubGVuZ3RoICsgMTtcblxuICAgICAgd2lkdGggPSAobWluaW11bVdpZHRoICogMC43NSkgKyAnZW0nO1xuICAgIH1cblxuICAgIHRoaXMuJHNlYXJjaC5jc3MoJ3dpZHRoJywgd2lkdGgpO1xuICB9O1xuXG4gIHJldHVybiBTZWFyY2g7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdGlvbkNTUyAoKSB7IH1cblxuICBTZWxlY3Rpb25DU1MucHJvdG90eXBlLnJlbmRlciA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQpIHtcbiAgICB2YXIgJHNlbGVjdGlvbiA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuXG4gICAgdmFyIHNlbGVjdGlvbkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQ3NzQ2xhc3MnKSB8fCAnJztcblxuICAgIGlmIChzZWxlY3Rpb25Dc3NDbGFzcy5pbmRleE9mKCc6YWxsOicpICE9PSAtMSkge1xuICAgICAgc2VsZWN0aW9uQ3NzQ2xhc3MgPSBzZWxlY3Rpb25Dc3NDbGFzcy5yZXBsYWNlKCc6YWxsOicsICcnKTtcblxuICAgICAgVXRpbHMuY29weU5vbkludGVybmFsQ3NzQ2xhc3Nlcygkc2VsZWN0aW9uWzBdLCB0aGlzLiRlbGVtZW50WzBdKTtcbiAgICB9XG5cbiAgICAkc2VsZWN0aW9uLmFkZENsYXNzKHNlbGVjdGlvbkNzc0NsYXNzKTtcblxuICAgIHJldHVybiAkc2VsZWN0aW9uO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3Rpb25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL3NlbGVjdGlvbi9ldmVudFJlbGF5JyxbXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoJCkge1xuICBmdW5jdGlvbiBFdmVudFJlbGF5ICgpIHsgfVxuXG4gIEV2ZW50UmVsYXkucHJvdG90eXBlLmJpbmQgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG4gICAgdmFyIHJlbGF5RXZlbnRzID0gW1xuICAgICAgJ29wZW4nLCAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnLCAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JywgJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnLCAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJywgJ2NsZWFyaW5nJ1xuICAgIF07XG5cbiAgICB2YXIgcHJldmVudGFibGVFdmVudHMgPSBbXG4gICAgICAnb3BlbmluZycsICdjbG9zaW5nJywgJ3NlbGVjdGluZycsICd1bnNlbGVjdGluZycsICdjbGVhcmluZydcbiAgICBdO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignKicsIGZ1bmN0aW9uIChuYW1lLCBwYXJhbXMpIHtcbiAgICAgIC8vIElnbm9yZSBldmVudHMgdGhhdCBzaG91bGQgbm90IGJlIHJlbGF5ZWRcbiAgICAgIGlmIChyZWxheUV2ZW50cy5pbmRleE9mKG5hbWUpID09PSAtMSkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBwYXJhbWV0ZXJzIHNob3VsZCBhbHdheXMgYmUgYW4gb2JqZWN0XG4gICAgICBwYXJhbXMgPSBwYXJhbXMgfHwge307XG5cbiAgICAgIC8vIEdlbmVyYXRlIHRoZSBqUXVlcnkgZXZlbnQgZm9yIHRoZSBTZWxlY3QyIGV2ZW50XG4gICAgICB2YXIgZXZ0ID0gJC5FdmVudCgnc2VsZWN0MjonICsgbmFtZSwge1xuICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcihldnQpO1xuXG4gICAgICAvLyBPbmx5IGhhbmRsZSBwcmV2ZW50YWJsZSBldmVudHMgaWYgaXQgd2FzIG9uZVxuICAgICAgaWYgKHByZXZlbnRhYmxlRXZlbnRzLmluZGV4T2YobmFtZSkgPT09IC0xKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gRXZlbnRSZWxheTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvdHJhbnNsYXRpb24nLFtcbiAgJ2pxdWVyeScsXG4gICdyZXF1aXJlJ1xuXSwgZnVuY3Rpb24gKCQsIHJlcXVpcmUpIHtcbiAgZnVuY3Rpb24gVHJhbnNsYXRpb24gKGRpY3QpIHtcbiAgICB0aGlzLmRpY3QgPSBkaWN0IHx8IHt9O1xuICB9XG5cbiAgVHJhbnNsYXRpb24ucHJvdG90eXBlLmFsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5kaWN0O1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuZGljdFtrZXldO1xuICB9O1xuXG4gIFRyYW5zbGF0aW9uLnByb3RvdHlwZS5leHRlbmQgPSBmdW5jdGlvbiAodHJhbnNsYXRpb24pIHtcbiAgICB0aGlzLmRpY3QgPSAkLmV4dGVuZCh7fSwgdHJhbnNsYXRpb24uYWxsKCksIHRoaXMuZGljdCk7XG4gIH07XG5cbiAgLy8gU3RhdGljIGZ1bmN0aW9uc1xuXG4gIFRyYW5zbGF0aW9uLl9jYWNoZSA9IHt9O1xuXG4gIFRyYW5zbGF0aW9uLmxvYWRQYXRoID0gZnVuY3Rpb24gKHBhdGgpIHtcbiAgICBpZiAoIShwYXRoIGluIFRyYW5zbGF0aW9uLl9jYWNoZSkpIHtcbiAgICAgIHZhciB0cmFuc2xhdGlvbnMgPSByZXF1aXJlKHBhdGgpO1xuXG4gICAgICBUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0gPSB0cmFuc2xhdGlvbnM7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBUcmFuc2xhdGlvbihUcmFuc2xhdGlvbi5fY2FjaGVbcGF0aF0pO1xuICB9O1xuXG4gIHJldHVybiBUcmFuc2xhdGlvbjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGlhY3JpdGljcycsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIHZhciBkaWFjcml0aWNzID0ge1xuICAgICdcXHUyNEI2JzogJ0EnLFxuICAgICdcXHVGRjIxJzogJ0EnLFxuICAgICdcXHUwMEMwJzogJ0EnLFxuICAgICdcXHUwMEMxJzogJ0EnLFxuICAgICdcXHUwMEMyJzogJ0EnLFxuICAgICdcXHUxRUE2JzogJ0EnLFxuICAgICdcXHUxRUE0JzogJ0EnLFxuICAgICdcXHUxRUFBJzogJ0EnLFxuICAgICdcXHUxRUE4JzogJ0EnLFxuICAgICdcXHUwMEMzJzogJ0EnLFxuICAgICdcXHUwMTAwJzogJ0EnLFxuICAgICdcXHUwMTAyJzogJ0EnLFxuICAgICdcXHUxRUIwJzogJ0EnLFxuICAgICdcXHUxRUFFJzogJ0EnLFxuICAgICdcXHUxRUI0JzogJ0EnLFxuICAgICdcXHUxRUIyJzogJ0EnLFxuICAgICdcXHUwMjI2JzogJ0EnLFxuICAgICdcXHUwMUUwJzogJ0EnLFxuICAgICdcXHUwMEM0JzogJ0EnLFxuICAgICdcXHUwMURFJzogJ0EnLFxuICAgICdcXHUxRUEyJzogJ0EnLFxuICAgICdcXHUwMEM1JzogJ0EnLFxuICAgICdcXHUwMUZBJzogJ0EnLFxuICAgICdcXHUwMUNEJzogJ0EnLFxuICAgICdcXHUwMjAwJzogJ0EnLFxuICAgICdcXHUwMjAyJzogJ0EnLFxuICAgICdcXHUxRUEwJzogJ0EnLFxuICAgICdcXHUxRUFDJzogJ0EnLFxuICAgICdcXHUxRUI2JzogJ0EnLFxuICAgICdcXHUxRTAwJzogJ0EnLFxuICAgICdcXHUwMTA0JzogJ0EnLFxuICAgICdcXHUwMjNBJzogJ0EnLFxuICAgICdcXHUyQzZGJzogJ0EnLFxuICAgICdcXHVBNzMyJzogJ0FBJyxcbiAgICAnXFx1MDBDNic6ICdBRScsXG4gICAgJ1xcdTAxRkMnOiAnQUUnLFxuICAgICdcXHUwMUUyJzogJ0FFJyxcbiAgICAnXFx1QTczNCc6ICdBTycsXG4gICAgJ1xcdUE3MzYnOiAnQVUnLFxuICAgICdcXHVBNzM4JzogJ0FWJyxcbiAgICAnXFx1QTczQSc6ICdBVicsXG4gICAgJ1xcdUE3M0MnOiAnQVknLFxuICAgICdcXHUyNEI3JzogJ0InLFxuICAgICdcXHVGRjIyJzogJ0InLFxuICAgICdcXHUxRTAyJzogJ0InLFxuICAgICdcXHUxRTA0JzogJ0InLFxuICAgICdcXHUxRTA2JzogJ0InLFxuICAgICdcXHUwMjQzJzogJ0InLFxuICAgICdcXHUwMTgyJzogJ0InLFxuICAgICdcXHUwMTgxJzogJ0InLFxuICAgICdcXHUyNEI4JzogJ0MnLFxuICAgICdcXHVGRjIzJzogJ0MnLFxuICAgICdcXHUwMTA2JzogJ0MnLFxuICAgICdcXHUwMTA4JzogJ0MnLFxuICAgICdcXHUwMTBBJzogJ0MnLFxuICAgICdcXHUwMTBDJzogJ0MnLFxuICAgICdcXHUwMEM3JzogJ0MnLFxuICAgICdcXHUxRTA4JzogJ0MnLFxuICAgICdcXHUwMTg3JzogJ0MnLFxuICAgICdcXHUwMjNCJzogJ0MnLFxuICAgICdcXHVBNzNFJzogJ0MnLFxuICAgICdcXHUyNEI5JzogJ0QnLFxuICAgICdcXHVGRjI0JzogJ0QnLFxuICAgICdcXHUxRTBBJzogJ0QnLFxuICAgICdcXHUwMTBFJzogJ0QnLFxuICAgICdcXHUxRTBDJzogJ0QnLFxuICAgICdcXHUxRTEwJzogJ0QnLFxuICAgICdcXHUxRTEyJzogJ0QnLFxuICAgICdcXHUxRTBFJzogJ0QnLFxuICAgICdcXHUwMTEwJzogJ0QnLFxuICAgICdcXHUwMThCJzogJ0QnLFxuICAgICdcXHUwMThBJzogJ0QnLFxuICAgICdcXHUwMTg5JzogJ0QnLFxuICAgICdcXHVBNzc5JzogJ0QnLFxuICAgICdcXHUwMUYxJzogJ0RaJyxcbiAgICAnXFx1MDFDNCc6ICdEWicsXG4gICAgJ1xcdTAxRjInOiAnRHonLFxuICAgICdcXHUwMUM1JzogJ0R6JyxcbiAgICAnXFx1MjRCQSc6ICdFJyxcbiAgICAnXFx1RkYyNSc6ICdFJyxcbiAgICAnXFx1MDBDOCc6ICdFJyxcbiAgICAnXFx1MDBDOSc6ICdFJyxcbiAgICAnXFx1MDBDQSc6ICdFJyxcbiAgICAnXFx1MUVDMCc6ICdFJyxcbiAgICAnXFx1MUVCRSc6ICdFJyxcbiAgICAnXFx1MUVDNCc6ICdFJyxcbiAgICAnXFx1MUVDMic6ICdFJyxcbiAgICAnXFx1MUVCQyc6ICdFJyxcbiAgICAnXFx1MDExMic6ICdFJyxcbiAgICAnXFx1MUUxNCc6ICdFJyxcbiAgICAnXFx1MUUxNic6ICdFJyxcbiAgICAnXFx1MDExNCc6ICdFJyxcbiAgICAnXFx1MDExNic6ICdFJyxcbiAgICAnXFx1MDBDQic6ICdFJyxcbiAgICAnXFx1MUVCQSc6ICdFJyxcbiAgICAnXFx1MDExQSc6ICdFJyxcbiAgICAnXFx1MDIwNCc6ICdFJyxcbiAgICAnXFx1MDIwNic6ICdFJyxcbiAgICAnXFx1MUVCOCc6ICdFJyxcbiAgICAnXFx1MUVDNic6ICdFJyxcbiAgICAnXFx1MDIyOCc6ICdFJyxcbiAgICAnXFx1MUUxQyc6ICdFJyxcbiAgICAnXFx1MDExOCc6ICdFJyxcbiAgICAnXFx1MUUxOCc6ICdFJyxcbiAgICAnXFx1MUUxQSc6ICdFJyxcbiAgICAnXFx1MDE5MCc6ICdFJyxcbiAgICAnXFx1MDE4RSc6ICdFJyxcbiAgICAnXFx1MjRCQic6ICdGJyxcbiAgICAnXFx1RkYyNic6ICdGJyxcbiAgICAnXFx1MUUxRSc6ICdGJyxcbiAgICAnXFx1MDE5MSc6ICdGJyxcbiAgICAnXFx1QTc3Qic6ICdGJyxcbiAgICAnXFx1MjRCQyc6ICdHJyxcbiAgICAnXFx1RkYyNyc6ICdHJyxcbiAgICAnXFx1MDFGNCc6ICdHJyxcbiAgICAnXFx1MDExQyc6ICdHJyxcbiAgICAnXFx1MUUyMCc6ICdHJyxcbiAgICAnXFx1MDExRSc6ICdHJyxcbiAgICAnXFx1MDEyMCc6ICdHJyxcbiAgICAnXFx1MDFFNic6ICdHJyxcbiAgICAnXFx1MDEyMic6ICdHJyxcbiAgICAnXFx1MDFFNCc6ICdHJyxcbiAgICAnXFx1MDE5Myc6ICdHJyxcbiAgICAnXFx1QTdBMCc6ICdHJyxcbiAgICAnXFx1QTc3RCc6ICdHJyxcbiAgICAnXFx1QTc3RSc6ICdHJyxcbiAgICAnXFx1MjRCRCc6ICdIJyxcbiAgICAnXFx1RkYyOCc6ICdIJyxcbiAgICAnXFx1MDEyNCc6ICdIJyxcbiAgICAnXFx1MUUyMic6ICdIJyxcbiAgICAnXFx1MUUyNic6ICdIJyxcbiAgICAnXFx1MDIxRSc6ICdIJyxcbiAgICAnXFx1MUUyNCc6ICdIJyxcbiAgICAnXFx1MUUyOCc6ICdIJyxcbiAgICAnXFx1MUUyQSc6ICdIJyxcbiAgICAnXFx1MDEyNic6ICdIJyxcbiAgICAnXFx1MkM2Nyc6ICdIJyxcbiAgICAnXFx1MkM3NSc6ICdIJyxcbiAgICAnXFx1QTc4RCc6ICdIJyxcbiAgICAnXFx1MjRCRSc6ICdJJyxcbiAgICAnXFx1RkYyOSc6ICdJJyxcbiAgICAnXFx1MDBDQyc6ICdJJyxcbiAgICAnXFx1MDBDRCc6ICdJJyxcbiAgICAnXFx1MDBDRSc6ICdJJyxcbiAgICAnXFx1MDEyOCc6ICdJJyxcbiAgICAnXFx1MDEyQSc6ICdJJyxcbiAgICAnXFx1MDEyQyc6ICdJJyxcbiAgICAnXFx1MDEzMCc6ICdJJyxcbiAgICAnXFx1MDBDRic6ICdJJyxcbiAgICAnXFx1MUUyRSc6ICdJJyxcbiAgICAnXFx1MUVDOCc6ICdJJyxcbiAgICAnXFx1MDFDRic6ICdJJyxcbiAgICAnXFx1MDIwOCc6ICdJJyxcbiAgICAnXFx1MDIwQSc6ICdJJyxcbiAgICAnXFx1MUVDQSc6ICdJJyxcbiAgICAnXFx1MDEyRSc6ICdJJyxcbiAgICAnXFx1MUUyQyc6ICdJJyxcbiAgICAnXFx1MDE5Nyc6ICdJJyxcbiAgICAnXFx1MjRCRic6ICdKJyxcbiAgICAnXFx1RkYyQSc6ICdKJyxcbiAgICAnXFx1MDEzNCc6ICdKJyxcbiAgICAnXFx1MDI0OCc6ICdKJyxcbiAgICAnXFx1MjRDMCc6ICdLJyxcbiAgICAnXFx1RkYyQic6ICdLJyxcbiAgICAnXFx1MUUzMCc6ICdLJyxcbiAgICAnXFx1MDFFOCc6ICdLJyxcbiAgICAnXFx1MUUzMic6ICdLJyxcbiAgICAnXFx1MDEzNic6ICdLJyxcbiAgICAnXFx1MUUzNCc6ICdLJyxcbiAgICAnXFx1MDE5OCc6ICdLJyxcbiAgICAnXFx1MkM2OSc6ICdLJyxcbiAgICAnXFx1QTc0MCc6ICdLJyxcbiAgICAnXFx1QTc0Mic6ICdLJyxcbiAgICAnXFx1QTc0NCc6ICdLJyxcbiAgICAnXFx1QTdBMic6ICdLJyxcbiAgICAnXFx1MjRDMSc6ICdMJyxcbiAgICAnXFx1RkYyQyc6ICdMJyxcbiAgICAnXFx1MDEzRic6ICdMJyxcbiAgICAnXFx1MDEzOSc6ICdMJyxcbiAgICAnXFx1MDEzRCc6ICdMJyxcbiAgICAnXFx1MUUzNic6ICdMJyxcbiAgICAnXFx1MUUzOCc6ICdMJyxcbiAgICAnXFx1MDEzQic6ICdMJyxcbiAgICAnXFx1MUUzQyc6ICdMJyxcbiAgICAnXFx1MUUzQSc6ICdMJyxcbiAgICAnXFx1MDE0MSc6ICdMJyxcbiAgICAnXFx1MDIzRCc6ICdMJyxcbiAgICAnXFx1MkM2Mic6ICdMJyxcbiAgICAnXFx1MkM2MCc6ICdMJyxcbiAgICAnXFx1QTc0OCc6ICdMJyxcbiAgICAnXFx1QTc0Nic6ICdMJyxcbiAgICAnXFx1QTc4MCc6ICdMJyxcbiAgICAnXFx1MDFDNyc6ICdMSicsXG4gICAgJ1xcdTAxQzgnOiAnTGonLFxuICAgICdcXHUyNEMyJzogJ00nLFxuICAgICdcXHVGRjJEJzogJ00nLFxuICAgICdcXHUxRTNFJzogJ00nLFxuICAgICdcXHUxRTQwJzogJ00nLFxuICAgICdcXHUxRTQyJzogJ00nLFxuICAgICdcXHUyQzZFJzogJ00nLFxuICAgICdcXHUwMTlDJzogJ00nLFxuICAgICdcXHUyNEMzJzogJ04nLFxuICAgICdcXHVGRjJFJzogJ04nLFxuICAgICdcXHUwMUY4JzogJ04nLFxuICAgICdcXHUwMTQzJzogJ04nLFxuICAgICdcXHUwMEQxJzogJ04nLFxuICAgICdcXHUxRTQ0JzogJ04nLFxuICAgICdcXHUwMTQ3JzogJ04nLFxuICAgICdcXHUxRTQ2JzogJ04nLFxuICAgICdcXHUwMTQ1JzogJ04nLFxuICAgICdcXHUxRTRBJzogJ04nLFxuICAgICdcXHUxRTQ4JzogJ04nLFxuICAgICdcXHUwMjIwJzogJ04nLFxuICAgICdcXHUwMTlEJzogJ04nLFxuICAgICdcXHVBNzkwJzogJ04nLFxuICAgICdcXHVBN0E0JzogJ04nLFxuICAgICdcXHUwMUNBJzogJ05KJyxcbiAgICAnXFx1MDFDQic6ICdOaicsXG4gICAgJ1xcdTI0QzQnOiAnTycsXG4gICAgJ1xcdUZGMkYnOiAnTycsXG4gICAgJ1xcdTAwRDInOiAnTycsXG4gICAgJ1xcdTAwRDMnOiAnTycsXG4gICAgJ1xcdTAwRDQnOiAnTycsXG4gICAgJ1xcdTFFRDInOiAnTycsXG4gICAgJ1xcdTFFRDAnOiAnTycsXG4gICAgJ1xcdTFFRDYnOiAnTycsXG4gICAgJ1xcdTFFRDQnOiAnTycsXG4gICAgJ1xcdTAwRDUnOiAnTycsXG4gICAgJ1xcdTFFNEMnOiAnTycsXG4gICAgJ1xcdTAyMkMnOiAnTycsXG4gICAgJ1xcdTFFNEUnOiAnTycsXG4gICAgJ1xcdTAxNEMnOiAnTycsXG4gICAgJ1xcdTFFNTAnOiAnTycsXG4gICAgJ1xcdTFFNTInOiAnTycsXG4gICAgJ1xcdTAxNEUnOiAnTycsXG4gICAgJ1xcdTAyMkUnOiAnTycsXG4gICAgJ1xcdTAyMzAnOiAnTycsXG4gICAgJ1xcdTAwRDYnOiAnTycsXG4gICAgJ1xcdTAyMkEnOiAnTycsXG4gICAgJ1xcdTFFQ0UnOiAnTycsXG4gICAgJ1xcdTAxNTAnOiAnTycsXG4gICAgJ1xcdTAxRDEnOiAnTycsXG4gICAgJ1xcdTAyMEMnOiAnTycsXG4gICAgJ1xcdTAyMEUnOiAnTycsXG4gICAgJ1xcdTAxQTAnOiAnTycsXG4gICAgJ1xcdTFFREMnOiAnTycsXG4gICAgJ1xcdTFFREEnOiAnTycsXG4gICAgJ1xcdTFFRTAnOiAnTycsXG4gICAgJ1xcdTFFREUnOiAnTycsXG4gICAgJ1xcdTFFRTInOiAnTycsXG4gICAgJ1xcdTFFQ0MnOiAnTycsXG4gICAgJ1xcdTFFRDgnOiAnTycsXG4gICAgJ1xcdTAxRUEnOiAnTycsXG4gICAgJ1xcdTAxRUMnOiAnTycsXG4gICAgJ1xcdTAwRDgnOiAnTycsXG4gICAgJ1xcdTAxRkUnOiAnTycsXG4gICAgJ1xcdTAxODYnOiAnTycsXG4gICAgJ1xcdTAxOUYnOiAnTycsXG4gICAgJ1xcdUE3NEEnOiAnTycsXG4gICAgJ1xcdUE3NEMnOiAnTycsXG4gICAgJ1xcdTAxNTInOiAnT0UnLFxuICAgICdcXHUwMUEyJzogJ09JJyxcbiAgICAnXFx1QTc0RSc6ICdPTycsXG4gICAgJ1xcdTAyMjInOiAnT1UnLFxuICAgICdcXHUyNEM1JzogJ1AnLFxuICAgICdcXHVGRjMwJzogJ1AnLFxuICAgICdcXHUxRTU0JzogJ1AnLFxuICAgICdcXHUxRTU2JzogJ1AnLFxuICAgICdcXHUwMUE0JzogJ1AnLFxuICAgICdcXHUyQzYzJzogJ1AnLFxuICAgICdcXHVBNzUwJzogJ1AnLFxuICAgICdcXHVBNzUyJzogJ1AnLFxuICAgICdcXHVBNzU0JzogJ1AnLFxuICAgICdcXHUyNEM2JzogJ1EnLFxuICAgICdcXHVGRjMxJzogJ1EnLFxuICAgICdcXHVBNzU2JzogJ1EnLFxuICAgICdcXHVBNzU4JzogJ1EnLFxuICAgICdcXHUwMjRBJzogJ1EnLFxuICAgICdcXHUyNEM3JzogJ1InLFxuICAgICdcXHVGRjMyJzogJ1InLFxuICAgICdcXHUwMTU0JzogJ1InLFxuICAgICdcXHUxRTU4JzogJ1InLFxuICAgICdcXHUwMTU4JzogJ1InLFxuICAgICdcXHUwMjEwJzogJ1InLFxuICAgICdcXHUwMjEyJzogJ1InLFxuICAgICdcXHUxRTVBJzogJ1InLFxuICAgICdcXHUxRTVDJzogJ1InLFxuICAgICdcXHUwMTU2JzogJ1InLFxuICAgICdcXHUxRTVFJzogJ1InLFxuICAgICdcXHUwMjRDJzogJ1InLFxuICAgICdcXHUyQzY0JzogJ1InLFxuICAgICdcXHVBNzVBJzogJ1InLFxuICAgICdcXHVBN0E2JzogJ1InLFxuICAgICdcXHVBNzgyJzogJ1InLFxuICAgICdcXHUyNEM4JzogJ1MnLFxuICAgICdcXHVGRjMzJzogJ1MnLFxuICAgICdcXHUxRTlFJzogJ1MnLFxuICAgICdcXHUwMTVBJzogJ1MnLFxuICAgICdcXHUxRTY0JzogJ1MnLFxuICAgICdcXHUwMTVDJzogJ1MnLFxuICAgICdcXHUxRTYwJzogJ1MnLFxuICAgICdcXHUwMTYwJzogJ1MnLFxuICAgICdcXHUxRTY2JzogJ1MnLFxuICAgICdcXHUxRTYyJzogJ1MnLFxuICAgICdcXHUxRTY4JzogJ1MnLFxuICAgICdcXHUwMjE4JzogJ1MnLFxuICAgICdcXHUwMTVFJzogJ1MnLFxuICAgICdcXHUyQzdFJzogJ1MnLFxuICAgICdcXHVBN0E4JzogJ1MnLFxuICAgICdcXHVBNzg0JzogJ1MnLFxuICAgICdcXHUyNEM5JzogJ1QnLFxuICAgICdcXHVGRjM0JzogJ1QnLFxuICAgICdcXHUxRTZBJzogJ1QnLFxuICAgICdcXHUwMTY0JzogJ1QnLFxuICAgICdcXHUxRTZDJzogJ1QnLFxuICAgICdcXHUwMjFBJzogJ1QnLFxuICAgICdcXHUwMTYyJzogJ1QnLFxuICAgICdcXHUxRTcwJzogJ1QnLFxuICAgICdcXHUxRTZFJzogJ1QnLFxuICAgICdcXHUwMTY2JzogJ1QnLFxuICAgICdcXHUwMUFDJzogJ1QnLFxuICAgICdcXHUwMUFFJzogJ1QnLFxuICAgICdcXHUwMjNFJzogJ1QnLFxuICAgICdcXHVBNzg2JzogJ1QnLFxuICAgICdcXHVBNzI4JzogJ1RaJyxcbiAgICAnXFx1MjRDQSc6ICdVJyxcbiAgICAnXFx1RkYzNSc6ICdVJyxcbiAgICAnXFx1MDBEOSc6ICdVJyxcbiAgICAnXFx1MDBEQSc6ICdVJyxcbiAgICAnXFx1MDBEQic6ICdVJyxcbiAgICAnXFx1MDE2OCc6ICdVJyxcbiAgICAnXFx1MUU3OCc6ICdVJyxcbiAgICAnXFx1MDE2QSc6ICdVJyxcbiAgICAnXFx1MUU3QSc6ICdVJyxcbiAgICAnXFx1MDE2Qyc6ICdVJyxcbiAgICAnXFx1MDBEQyc6ICdVJyxcbiAgICAnXFx1MDFEQic6ICdVJyxcbiAgICAnXFx1MDFENyc6ICdVJyxcbiAgICAnXFx1MDFENSc6ICdVJyxcbiAgICAnXFx1MDFEOSc6ICdVJyxcbiAgICAnXFx1MUVFNic6ICdVJyxcbiAgICAnXFx1MDE2RSc6ICdVJyxcbiAgICAnXFx1MDE3MCc6ICdVJyxcbiAgICAnXFx1MDFEMyc6ICdVJyxcbiAgICAnXFx1MDIxNCc6ICdVJyxcbiAgICAnXFx1MDIxNic6ICdVJyxcbiAgICAnXFx1MDFBRic6ICdVJyxcbiAgICAnXFx1MUVFQSc6ICdVJyxcbiAgICAnXFx1MUVFOCc6ICdVJyxcbiAgICAnXFx1MUVFRSc6ICdVJyxcbiAgICAnXFx1MUVFQyc6ICdVJyxcbiAgICAnXFx1MUVGMCc6ICdVJyxcbiAgICAnXFx1MUVFNCc6ICdVJyxcbiAgICAnXFx1MUU3Mic6ICdVJyxcbiAgICAnXFx1MDE3Mic6ICdVJyxcbiAgICAnXFx1MUU3Nic6ICdVJyxcbiAgICAnXFx1MUU3NCc6ICdVJyxcbiAgICAnXFx1MDI0NCc6ICdVJyxcbiAgICAnXFx1MjRDQic6ICdWJyxcbiAgICAnXFx1RkYzNic6ICdWJyxcbiAgICAnXFx1MUU3Qyc6ICdWJyxcbiAgICAnXFx1MUU3RSc6ICdWJyxcbiAgICAnXFx1MDFCMic6ICdWJyxcbiAgICAnXFx1QTc1RSc6ICdWJyxcbiAgICAnXFx1MDI0NSc6ICdWJyxcbiAgICAnXFx1QTc2MCc6ICdWWScsXG4gICAgJ1xcdTI0Q0MnOiAnVycsXG4gICAgJ1xcdUZGMzcnOiAnVycsXG4gICAgJ1xcdTFFODAnOiAnVycsXG4gICAgJ1xcdTFFODInOiAnVycsXG4gICAgJ1xcdTAxNzQnOiAnVycsXG4gICAgJ1xcdTFFODYnOiAnVycsXG4gICAgJ1xcdTFFODQnOiAnVycsXG4gICAgJ1xcdTFFODgnOiAnVycsXG4gICAgJ1xcdTJDNzInOiAnVycsXG4gICAgJ1xcdTI0Q0QnOiAnWCcsXG4gICAgJ1xcdUZGMzgnOiAnWCcsXG4gICAgJ1xcdTFFOEEnOiAnWCcsXG4gICAgJ1xcdTFFOEMnOiAnWCcsXG4gICAgJ1xcdTI0Q0UnOiAnWScsXG4gICAgJ1xcdUZGMzknOiAnWScsXG4gICAgJ1xcdTFFRjInOiAnWScsXG4gICAgJ1xcdTAwREQnOiAnWScsXG4gICAgJ1xcdTAxNzYnOiAnWScsXG4gICAgJ1xcdTFFRjgnOiAnWScsXG4gICAgJ1xcdTAyMzInOiAnWScsXG4gICAgJ1xcdTFFOEUnOiAnWScsXG4gICAgJ1xcdTAxNzgnOiAnWScsXG4gICAgJ1xcdTFFRjYnOiAnWScsXG4gICAgJ1xcdTFFRjQnOiAnWScsXG4gICAgJ1xcdTAxQjMnOiAnWScsXG4gICAgJ1xcdTAyNEUnOiAnWScsXG4gICAgJ1xcdTFFRkUnOiAnWScsXG4gICAgJ1xcdTI0Q0YnOiAnWicsXG4gICAgJ1xcdUZGM0EnOiAnWicsXG4gICAgJ1xcdTAxNzknOiAnWicsXG4gICAgJ1xcdTFFOTAnOiAnWicsXG4gICAgJ1xcdTAxN0InOiAnWicsXG4gICAgJ1xcdTAxN0QnOiAnWicsXG4gICAgJ1xcdTFFOTInOiAnWicsXG4gICAgJ1xcdTFFOTQnOiAnWicsXG4gICAgJ1xcdTAxQjUnOiAnWicsXG4gICAgJ1xcdTAyMjQnOiAnWicsXG4gICAgJ1xcdTJDN0YnOiAnWicsXG4gICAgJ1xcdTJDNkInOiAnWicsXG4gICAgJ1xcdUE3NjInOiAnWicsXG4gICAgJ1xcdTI0RDAnOiAnYScsXG4gICAgJ1xcdUZGNDEnOiAnYScsXG4gICAgJ1xcdTFFOUEnOiAnYScsXG4gICAgJ1xcdTAwRTAnOiAnYScsXG4gICAgJ1xcdTAwRTEnOiAnYScsXG4gICAgJ1xcdTAwRTInOiAnYScsXG4gICAgJ1xcdTFFQTcnOiAnYScsXG4gICAgJ1xcdTFFQTUnOiAnYScsXG4gICAgJ1xcdTFFQUInOiAnYScsXG4gICAgJ1xcdTFFQTknOiAnYScsXG4gICAgJ1xcdTAwRTMnOiAnYScsXG4gICAgJ1xcdTAxMDEnOiAnYScsXG4gICAgJ1xcdTAxMDMnOiAnYScsXG4gICAgJ1xcdTFFQjEnOiAnYScsXG4gICAgJ1xcdTFFQUYnOiAnYScsXG4gICAgJ1xcdTFFQjUnOiAnYScsXG4gICAgJ1xcdTFFQjMnOiAnYScsXG4gICAgJ1xcdTAyMjcnOiAnYScsXG4gICAgJ1xcdTAxRTEnOiAnYScsXG4gICAgJ1xcdTAwRTQnOiAnYScsXG4gICAgJ1xcdTAxREYnOiAnYScsXG4gICAgJ1xcdTFFQTMnOiAnYScsXG4gICAgJ1xcdTAwRTUnOiAnYScsXG4gICAgJ1xcdTAxRkInOiAnYScsXG4gICAgJ1xcdTAxQ0UnOiAnYScsXG4gICAgJ1xcdTAyMDEnOiAnYScsXG4gICAgJ1xcdTAyMDMnOiAnYScsXG4gICAgJ1xcdTFFQTEnOiAnYScsXG4gICAgJ1xcdTFFQUQnOiAnYScsXG4gICAgJ1xcdTFFQjcnOiAnYScsXG4gICAgJ1xcdTFFMDEnOiAnYScsXG4gICAgJ1xcdTAxMDUnOiAnYScsXG4gICAgJ1xcdTJDNjUnOiAnYScsXG4gICAgJ1xcdTAyNTAnOiAnYScsXG4gICAgJ1xcdUE3MzMnOiAnYWEnLFxuICAgICdcXHUwMEU2JzogJ2FlJyxcbiAgICAnXFx1MDFGRCc6ICdhZScsXG4gICAgJ1xcdTAxRTMnOiAnYWUnLFxuICAgICdcXHVBNzM1JzogJ2FvJyxcbiAgICAnXFx1QTczNyc6ICdhdScsXG4gICAgJ1xcdUE3MzknOiAnYXYnLFxuICAgICdcXHVBNzNCJzogJ2F2JyxcbiAgICAnXFx1QTczRCc6ICdheScsXG4gICAgJ1xcdTI0RDEnOiAnYicsXG4gICAgJ1xcdUZGNDInOiAnYicsXG4gICAgJ1xcdTFFMDMnOiAnYicsXG4gICAgJ1xcdTFFMDUnOiAnYicsXG4gICAgJ1xcdTFFMDcnOiAnYicsXG4gICAgJ1xcdTAxODAnOiAnYicsXG4gICAgJ1xcdTAxODMnOiAnYicsXG4gICAgJ1xcdTAyNTMnOiAnYicsXG4gICAgJ1xcdTI0RDInOiAnYycsXG4gICAgJ1xcdUZGNDMnOiAnYycsXG4gICAgJ1xcdTAxMDcnOiAnYycsXG4gICAgJ1xcdTAxMDknOiAnYycsXG4gICAgJ1xcdTAxMEInOiAnYycsXG4gICAgJ1xcdTAxMEQnOiAnYycsXG4gICAgJ1xcdTAwRTcnOiAnYycsXG4gICAgJ1xcdTFFMDknOiAnYycsXG4gICAgJ1xcdTAxODgnOiAnYycsXG4gICAgJ1xcdTAyM0MnOiAnYycsXG4gICAgJ1xcdUE3M0YnOiAnYycsXG4gICAgJ1xcdTIxODQnOiAnYycsXG4gICAgJ1xcdTI0RDMnOiAnZCcsXG4gICAgJ1xcdUZGNDQnOiAnZCcsXG4gICAgJ1xcdTFFMEInOiAnZCcsXG4gICAgJ1xcdTAxMEYnOiAnZCcsXG4gICAgJ1xcdTFFMEQnOiAnZCcsXG4gICAgJ1xcdTFFMTEnOiAnZCcsXG4gICAgJ1xcdTFFMTMnOiAnZCcsXG4gICAgJ1xcdTFFMEYnOiAnZCcsXG4gICAgJ1xcdTAxMTEnOiAnZCcsXG4gICAgJ1xcdTAxOEMnOiAnZCcsXG4gICAgJ1xcdTAyNTYnOiAnZCcsXG4gICAgJ1xcdTAyNTcnOiAnZCcsXG4gICAgJ1xcdUE3N0EnOiAnZCcsXG4gICAgJ1xcdTAxRjMnOiAnZHonLFxuICAgICdcXHUwMUM2JzogJ2R6JyxcbiAgICAnXFx1MjRENCc6ICdlJyxcbiAgICAnXFx1RkY0NSc6ICdlJyxcbiAgICAnXFx1MDBFOCc6ICdlJyxcbiAgICAnXFx1MDBFOSc6ICdlJyxcbiAgICAnXFx1MDBFQSc6ICdlJyxcbiAgICAnXFx1MUVDMSc6ICdlJyxcbiAgICAnXFx1MUVCRic6ICdlJyxcbiAgICAnXFx1MUVDNSc6ICdlJyxcbiAgICAnXFx1MUVDMyc6ICdlJyxcbiAgICAnXFx1MUVCRCc6ICdlJyxcbiAgICAnXFx1MDExMyc6ICdlJyxcbiAgICAnXFx1MUUxNSc6ICdlJyxcbiAgICAnXFx1MUUxNyc6ICdlJyxcbiAgICAnXFx1MDExNSc6ICdlJyxcbiAgICAnXFx1MDExNyc6ICdlJyxcbiAgICAnXFx1MDBFQic6ICdlJyxcbiAgICAnXFx1MUVCQic6ICdlJyxcbiAgICAnXFx1MDExQic6ICdlJyxcbiAgICAnXFx1MDIwNSc6ICdlJyxcbiAgICAnXFx1MDIwNyc6ICdlJyxcbiAgICAnXFx1MUVCOSc6ICdlJyxcbiAgICAnXFx1MUVDNyc6ICdlJyxcbiAgICAnXFx1MDIyOSc6ICdlJyxcbiAgICAnXFx1MUUxRCc6ICdlJyxcbiAgICAnXFx1MDExOSc6ICdlJyxcbiAgICAnXFx1MUUxOSc6ICdlJyxcbiAgICAnXFx1MUUxQic6ICdlJyxcbiAgICAnXFx1MDI0Nyc6ICdlJyxcbiAgICAnXFx1MDI1Qic6ICdlJyxcbiAgICAnXFx1MDFERCc6ICdlJyxcbiAgICAnXFx1MjRENSc6ICdmJyxcbiAgICAnXFx1RkY0Nic6ICdmJyxcbiAgICAnXFx1MUUxRic6ICdmJyxcbiAgICAnXFx1MDE5Mic6ICdmJyxcbiAgICAnXFx1QTc3Qyc6ICdmJyxcbiAgICAnXFx1MjRENic6ICdnJyxcbiAgICAnXFx1RkY0Nyc6ICdnJyxcbiAgICAnXFx1MDFGNSc6ICdnJyxcbiAgICAnXFx1MDExRCc6ICdnJyxcbiAgICAnXFx1MUUyMSc6ICdnJyxcbiAgICAnXFx1MDExRic6ICdnJyxcbiAgICAnXFx1MDEyMSc6ICdnJyxcbiAgICAnXFx1MDFFNyc6ICdnJyxcbiAgICAnXFx1MDEyMyc6ICdnJyxcbiAgICAnXFx1MDFFNSc6ICdnJyxcbiAgICAnXFx1MDI2MCc6ICdnJyxcbiAgICAnXFx1QTdBMSc6ICdnJyxcbiAgICAnXFx1MUQ3OSc6ICdnJyxcbiAgICAnXFx1QTc3Ric6ICdnJyxcbiAgICAnXFx1MjRENyc6ICdoJyxcbiAgICAnXFx1RkY0OCc6ICdoJyxcbiAgICAnXFx1MDEyNSc6ICdoJyxcbiAgICAnXFx1MUUyMyc6ICdoJyxcbiAgICAnXFx1MUUyNyc6ICdoJyxcbiAgICAnXFx1MDIxRic6ICdoJyxcbiAgICAnXFx1MUUyNSc6ICdoJyxcbiAgICAnXFx1MUUyOSc6ICdoJyxcbiAgICAnXFx1MUUyQic6ICdoJyxcbiAgICAnXFx1MUU5Nic6ICdoJyxcbiAgICAnXFx1MDEyNyc6ICdoJyxcbiAgICAnXFx1MkM2OCc6ICdoJyxcbiAgICAnXFx1MkM3Nic6ICdoJyxcbiAgICAnXFx1MDI2NSc6ICdoJyxcbiAgICAnXFx1MDE5NSc6ICdodicsXG4gICAgJ1xcdTI0RDgnOiAnaScsXG4gICAgJ1xcdUZGNDknOiAnaScsXG4gICAgJ1xcdTAwRUMnOiAnaScsXG4gICAgJ1xcdTAwRUQnOiAnaScsXG4gICAgJ1xcdTAwRUUnOiAnaScsXG4gICAgJ1xcdTAxMjknOiAnaScsXG4gICAgJ1xcdTAxMkInOiAnaScsXG4gICAgJ1xcdTAxMkQnOiAnaScsXG4gICAgJ1xcdTAwRUYnOiAnaScsXG4gICAgJ1xcdTFFMkYnOiAnaScsXG4gICAgJ1xcdTFFQzknOiAnaScsXG4gICAgJ1xcdTAxRDAnOiAnaScsXG4gICAgJ1xcdTAyMDknOiAnaScsXG4gICAgJ1xcdTAyMEInOiAnaScsXG4gICAgJ1xcdTFFQ0InOiAnaScsXG4gICAgJ1xcdTAxMkYnOiAnaScsXG4gICAgJ1xcdTFFMkQnOiAnaScsXG4gICAgJ1xcdTAyNjgnOiAnaScsXG4gICAgJ1xcdTAxMzEnOiAnaScsXG4gICAgJ1xcdTI0RDknOiAnaicsXG4gICAgJ1xcdUZGNEEnOiAnaicsXG4gICAgJ1xcdTAxMzUnOiAnaicsXG4gICAgJ1xcdTAxRjAnOiAnaicsXG4gICAgJ1xcdTAyNDknOiAnaicsXG4gICAgJ1xcdTI0REEnOiAnaycsXG4gICAgJ1xcdUZGNEInOiAnaycsXG4gICAgJ1xcdTFFMzEnOiAnaycsXG4gICAgJ1xcdTAxRTknOiAnaycsXG4gICAgJ1xcdTFFMzMnOiAnaycsXG4gICAgJ1xcdTAxMzcnOiAnaycsXG4gICAgJ1xcdTFFMzUnOiAnaycsXG4gICAgJ1xcdTAxOTknOiAnaycsXG4gICAgJ1xcdTJDNkEnOiAnaycsXG4gICAgJ1xcdUE3NDEnOiAnaycsXG4gICAgJ1xcdUE3NDMnOiAnaycsXG4gICAgJ1xcdUE3NDUnOiAnaycsXG4gICAgJ1xcdUE3QTMnOiAnaycsXG4gICAgJ1xcdTI0REInOiAnbCcsXG4gICAgJ1xcdUZGNEMnOiAnbCcsXG4gICAgJ1xcdTAxNDAnOiAnbCcsXG4gICAgJ1xcdTAxM0EnOiAnbCcsXG4gICAgJ1xcdTAxM0UnOiAnbCcsXG4gICAgJ1xcdTFFMzcnOiAnbCcsXG4gICAgJ1xcdTFFMzknOiAnbCcsXG4gICAgJ1xcdTAxM0MnOiAnbCcsXG4gICAgJ1xcdTFFM0QnOiAnbCcsXG4gICAgJ1xcdTFFM0InOiAnbCcsXG4gICAgJ1xcdTAxN0YnOiAnbCcsXG4gICAgJ1xcdTAxNDInOiAnbCcsXG4gICAgJ1xcdTAxOUEnOiAnbCcsXG4gICAgJ1xcdTAyNkInOiAnbCcsXG4gICAgJ1xcdTJDNjEnOiAnbCcsXG4gICAgJ1xcdUE3NDknOiAnbCcsXG4gICAgJ1xcdUE3ODEnOiAnbCcsXG4gICAgJ1xcdUE3NDcnOiAnbCcsXG4gICAgJ1xcdTAxQzknOiAnbGonLFxuICAgICdcXHUyNERDJzogJ20nLFxuICAgICdcXHVGRjREJzogJ20nLFxuICAgICdcXHUxRTNGJzogJ20nLFxuICAgICdcXHUxRTQxJzogJ20nLFxuICAgICdcXHUxRTQzJzogJ20nLFxuICAgICdcXHUwMjcxJzogJ20nLFxuICAgICdcXHUwMjZGJzogJ20nLFxuICAgICdcXHUyNEREJzogJ24nLFxuICAgICdcXHVGRjRFJzogJ24nLFxuICAgICdcXHUwMUY5JzogJ24nLFxuICAgICdcXHUwMTQ0JzogJ24nLFxuICAgICdcXHUwMEYxJzogJ24nLFxuICAgICdcXHUxRTQ1JzogJ24nLFxuICAgICdcXHUwMTQ4JzogJ24nLFxuICAgICdcXHUxRTQ3JzogJ24nLFxuICAgICdcXHUwMTQ2JzogJ24nLFxuICAgICdcXHUxRTRCJzogJ24nLFxuICAgICdcXHUxRTQ5JzogJ24nLFxuICAgICdcXHUwMTlFJzogJ24nLFxuICAgICdcXHUwMjcyJzogJ24nLFxuICAgICdcXHUwMTQ5JzogJ24nLFxuICAgICdcXHVBNzkxJzogJ24nLFxuICAgICdcXHVBN0E1JzogJ24nLFxuICAgICdcXHUwMUNDJzogJ25qJyxcbiAgICAnXFx1MjRERSc6ICdvJyxcbiAgICAnXFx1RkY0Ric6ICdvJyxcbiAgICAnXFx1MDBGMic6ICdvJyxcbiAgICAnXFx1MDBGMyc6ICdvJyxcbiAgICAnXFx1MDBGNCc6ICdvJyxcbiAgICAnXFx1MUVEMyc6ICdvJyxcbiAgICAnXFx1MUVEMSc6ICdvJyxcbiAgICAnXFx1MUVENyc6ICdvJyxcbiAgICAnXFx1MUVENSc6ICdvJyxcbiAgICAnXFx1MDBGNSc6ICdvJyxcbiAgICAnXFx1MUU0RCc6ICdvJyxcbiAgICAnXFx1MDIyRCc6ICdvJyxcbiAgICAnXFx1MUU0Ric6ICdvJyxcbiAgICAnXFx1MDE0RCc6ICdvJyxcbiAgICAnXFx1MUU1MSc6ICdvJyxcbiAgICAnXFx1MUU1Myc6ICdvJyxcbiAgICAnXFx1MDE0Ric6ICdvJyxcbiAgICAnXFx1MDIyRic6ICdvJyxcbiAgICAnXFx1MDIzMSc6ICdvJyxcbiAgICAnXFx1MDBGNic6ICdvJyxcbiAgICAnXFx1MDIyQic6ICdvJyxcbiAgICAnXFx1MUVDRic6ICdvJyxcbiAgICAnXFx1MDE1MSc6ICdvJyxcbiAgICAnXFx1MDFEMic6ICdvJyxcbiAgICAnXFx1MDIwRCc6ICdvJyxcbiAgICAnXFx1MDIwRic6ICdvJyxcbiAgICAnXFx1MDFBMSc6ICdvJyxcbiAgICAnXFx1MUVERCc6ICdvJyxcbiAgICAnXFx1MUVEQic6ICdvJyxcbiAgICAnXFx1MUVFMSc6ICdvJyxcbiAgICAnXFx1MUVERic6ICdvJyxcbiAgICAnXFx1MUVFMyc6ICdvJyxcbiAgICAnXFx1MUVDRCc6ICdvJyxcbiAgICAnXFx1MUVEOSc6ICdvJyxcbiAgICAnXFx1MDFFQic6ICdvJyxcbiAgICAnXFx1MDFFRCc6ICdvJyxcbiAgICAnXFx1MDBGOCc6ICdvJyxcbiAgICAnXFx1MDFGRic6ICdvJyxcbiAgICAnXFx1MDI1NCc6ICdvJyxcbiAgICAnXFx1QTc0Qic6ICdvJyxcbiAgICAnXFx1QTc0RCc6ICdvJyxcbiAgICAnXFx1MDI3NSc6ICdvJyxcbiAgICAnXFx1MDE1Myc6ICdvZScsXG4gICAgJ1xcdTAxQTMnOiAnb2knLFxuICAgICdcXHUwMjIzJzogJ291JyxcbiAgICAnXFx1QTc0Ric6ICdvbycsXG4gICAgJ1xcdTI0REYnOiAncCcsXG4gICAgJ1xcdUZGNTAnOiAncCcsXG4gICAgJ1xcdTFFNTUnOiAncCcsXG4gICAgJ1xcdTFFNTcnOiAncCcsXG4gICAgJ1xcdTAxQTUnOiAncCcsXG4gICAgJ1xcdTFEN0QnOiAncCcsXG4gICAgJ1xcdUE3NTEnOiAncCcsXG4gICAgJ1xcdUE3NTMnOiAncCcsXG4gICAgJ1xcdUE3NTUnOiAncCcsXG4gICAgJ1xcdTI0RTAnOiAncScsXG4gICAgJ1xcdUZGNTEnOiAncScsXG4gICAgJ1xcdTAyNEInOiAncScsXG4gICAgJ1xcdUE3NTcnOiAncScsXG4gICAgJ1xcdUE3NTknOiAncScsXG4gICAgJ1xcdTI0RTEnOiAncicsXG4gICAgJ1xcdUZGNTInOiAncicsXG4gICAgJ1xcdTAxNTUnOiAncicsXG4gICAgJ1xcdTFFNTknOiAncicsXG4gICAgJ1xcdTAxNTknOiAncicsXG4gICAgJ1xcdTAyMTEnOiAncicsXG4gICAgJ1xcdTAyMTMnOiAncicsXG4gICAgJ1xcdTFFNUInOiAncicsXG4gICAgJ1xcdTFFNUQnOiAncicsXG4gICAgJ1xcdTAxNTcnOiAncicsXG4gICAgJ1xcdTFFNUYnOiAncicsXG4gICAgJ1xcdTAyNEQnOiAncicsXG4gICAgJ1xcdTAyN0QnOiAncicsXG4gICAgJ1xcdUE3NUInOiAncicsXG4gICAgJ1xcdUE3QTcnOiAncicsXG4gICAgJ1xcdUE3ODMnOiAncicsXG4gICAgJ1xcdTI0RTInOiAncycsXG4gICAgJ1xcdUZGNTMnOiAncycsXG4gICAgJ1xcdTAwREYnOiAncycsXG4gICAgJ1xcdTAxNUInOiAncycsXG4gICAgJ1xcdTFFNjUnOiAncycsXG4gICAgJ1xcdTAxNUQnOiAncycsXG4gICAgJ1xcdTFFNjEnOiAncycsXG4gICAgJ1xcdTAxNjEnOiAncycsXG4gICAgJ1xcdTFFNjcnOiAncycsXG4gICAgJ1xcdTFFNjMnOiAncycsXG4gICAgJ1xcdTFFNjknOiAncycsXG4gICAgJ1xcdTAyMTknOiAncycsXG4gICAgJ1xcdTAxNUYnOiAncycsXG4gICAgJ1xcdTAyM0YnOiAncycsXG4gICAgJ1xcdUE3QTknOiAncycsXG4gICAgJ1xcdUE3ODUnOiAncycsXG4gICAgJ1xcdTFFOUInOiAncycsXG4gICAgJ1xcdTI0RTMnOiAndCcsXG4gICAgJ1xcdUZGNTQnOiAndCcsXG4gICAgJ1xcdTFFNkInOiAndCcsXG4gICAgJ1xcdTFFOTcnOiAndCcsXG4gICAgJ1xcdTAxNjUnOiAndCcsXG4gICAgJ1xcdTFFNkQnOiAndCcsXG4gICAgJ1xcdTAyMUInOiAndCcsXG4gICAgJ1xcdTAxNjMnOiAndCcsXG4gICAgJ1xcdTFFNzEnOiAndCcsXG4gICAgJ1xcdTFFNkYnOiAndCcsXG4gICAgJ1xcdTAxNjcnOiAndCcsXG4gICAgJ1xcdTAxQUQnOiAndCcsXG4gICAgJ1xcdTAyODgnOiAndCcsXG4gICAgJ1xcdTJDNjYnOiAndCcsXG4gICAgJ1xcdUE3ODcnOiAndCcsXG4gICAgJ1xcdUE3MjknOiAndHonLFxuICAgICdcXHUyNEU0JzogJ3UnLFxuICAgICdcXHVGRjU1JzogJ3UnLFxuICAgICdcXHUwMEY5JzogJ3UnLFxuICAgICdcXHUwMEZBJzogJ3UnLFxuICAgICdcXHUwMEZCJzogJ3UnLFxuICAgICdcXHUwMTY5JzogJ3UnLFxuICAgICdcXHUxRTc5JzogJ3UnLFxuICAgICdcXHUwMTZCJzogJ3UnLFxuICAgICdcXHUxRTdCJzogJ3UnLFxuICAgICdcXHUwMTZEJzogJ3UnLFxuICAgICdcXHUwMEZDJzogJ3UnLFxuICAgICdcXHUwMURDJzogJ3UnLFxuICAgICdcXHUwMUQ4JzogJ3UnLFxuICAgICdcXHUwMUQ2JzogJ3UnLFxuICAgICdcXHUwMURBJzogJ3UnLFxuICAgICdcXHUxRUU3JzogJ3UnLFxuICAgICdcXHUwMTZGJzogJ3UnLFxuICAgICdcXHUwMTcxJzogJ3UnLFxuICAgICdcXHUwMUQ0JzogJ3UnLFxuICAgICdcXHUwMjE1JzogJ3UnLFxuICAgICdcXHUwMjE3JzogJ3UnLFxuICAgICdcXHUwMUIwJzogJ3UnLFxuICAgICdcXHUxRUVCJzogJ3UnLFxuICAgICdcXHUxRUU5JzogJ3UnLFxuICAgICdcXHUxRUVGJzogJ3UnLFxuICAgICdcXHUxRUVEJzogJ3UnLFxuICAgICdcXHUxRUYxJzogJ3UnLFxuICAgICdcXHUxRUU1JzogJ3UnLFxuICAgICdcXHUxRTczJzogJ3UnLFxuICAgICdcXHUwMTczJzogJ3UnLFxuICAgICdcXHUxRTc3JzogJ3UnLFxuICAgICdcXHUxRTc1JzogJ3UnLFxuICAgICdcXHUwMjg5JzogJ3UnLFxuICAgICdcXHUyNEU1JzogJ3YnLFxuICAgICdcXHVGRjU2JzogJ3YnLFxuICAgICdcXHUxRTdEJzogJ3YnLFxuICAgICdcXHUxRTdGJzogJ3YnLFxuICAgICdcXHUwMjhCJzogJ3YnLFxuICAgICdcXHVBNzVGJzogJ3YnLFxuICAgICdcXHUwMjhDJzogJ3YnLFxuICAgICdcXHVBNzYxJzogJ3Z5JyxcbiAgICAnXFx1MjRFNic6ICd3JyxcbiAgICAnXFx1RkY1Nyc6ICd3JyxcbiAgICAnXFx1MUU4MSc6ICd3JyxcbiAgICAnXFx1MUU4Myc6ICd3JyxcbiAgICAnXFx1MDE3NSc6ICd3JyxcbiAgICAnXFx1MUU4Nyc6ICd3JyxcbiAgICAnXFx1MUU4NSc6ICd3JyxcbiAgICAnXFx1MUU5OCc6ICd3JyxcbiAgICAnXFx1MUU4OSc6ICd3JyxcbiAgICAnXFx1MkM3Myc6ICd3JyxcbiAgICAnXFx1MjRFNyc6ICd4JyxcbiAgICAnXFx1RkY1OCc6ICd4JyxcbiAgICAnXFx1MUU4Qic6ICd4JyxcbiAgICAnXFx1MUU4RCc6ICd4JyxcbiAgICAnXFx1MjRFOCc6ICd5JyxcbiAgICAnXFx1RkY1OSc6ICd5JyxcbiAgICAnXFx1MUVGMyc6ICd5JyxcbiAgICAnXFx1MDBGRCc6ICd5JyxcbiAgICAnXFx1MDE3Nyc6ICd5JyxcbiAgICAnXFx1MUVGOSc6ICd5JyxcbiAgICAnXFx1MDIzMyc6ICd5JyxcbiAgICAnXFx1MUU4Ric6ICd5JyxcbiAgICAnXFx1MDBGRic6ICd5JyxcbiAgICAnXFx1MUVGNyc6ICd5JyxcbiAgICAnXFx1MUU5OSc6ICd5JyxcbiAgICAnXFx1MUVGNSc6ICd5JyxcbiAgICAnXFx1MDFCNCc6ICd5JyxcbiAgICAnXFx1MDI0Ric6ICd5JyxcbiAgICAnXFx1MUVGRic6ICd5JyxcbiAgICAnXFx1MjRFOSc6ICd6JyxcbiAgICAnXFx1RkY1QSc6ICd6JyxcbiAgICAnXFx1MDE3QSc6ICd6JyxcbiAgICAnXFx1MUU5MSc6ICd6JyxcbiAgICAnXFx1MDE3Qyc6ICd6JyxcbiAgICAnXFx1MDE3RSc6ICd6JyxcbiAgICAnXFx1MUU5Myc6ICd6JyxcbiAgICAnXFx1MUU5NSc6ICd6JyxcbiAgICAnXFx1MDFCNic6ICd6JyxcbiAgICAnXFx1MDIyNSc6ICd6JyxcbiAgICAnXFx1MDI0MCc6ICd6JyxcbiAgICAnXFx1MkM2Qyc6ICd6JyxcbiAgICAnXFx1QTc2Myc6ICd6JyxcbiAgICAnXFx1MDM4Nic6ICdcXHUwMzkxJyxcbiAgICAnXFx1MDM4OCc6ICdcXHUwMzk1JyxcbiAgICAnXFx1MDM4OSc6ICdcXHUwMzk3JyxcbiAgICAnXFx1MDM4QSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDNBQSc6ICdcXHUwMzk5JyxcbiAgICAnXFx1MDM4Qyc6ICdcXHUwMzlGJyxcbiAgICAnXFx1MDM4RSc6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDNBQic6ICdcXHUwM0E1JyxcbiAgICAnXFx1MDM4Ric6ICdcXHUwM0E5JyxcbiAgICAnXFx1MDNBQyc6ICdcXHUwM0IxJyxcbiAgICAnXFx1MDNBRCc6ICdcXHUwM0I1JyxcbiAgICAnXFx1MDNBRSc6ICdcXHUwM0I3JyxcbiAgICAnXFx1MDNBRic6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQSc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDM5MCc6ICdcXHUwM0I5JyxcbiAgICAnXFx1MDNDQyc6ICdcXHUwM0JGJyxcbiAgICAnXFx1MDNDRCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDQic6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNCMCc6ICdcXHUwM0M1JyxcbiAgICAnXFx1MDNDRSc6ICdcXHUwM0M5JyxcbiAgICAnXFx1MDNDMic6ICdcXHUwM0MzJyxcbiAgICAnXFx1MjAxOSc6ICdcXCcnXG4gIH07XG5cbiAgcmV0dXJuIGRpYWNyaXRpY3M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYmFzZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gQmFzZUFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgQmFzZUFkYXB0ZXIuX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoQmFzZUFkYXB0ZXIsIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdUaGUgYGN1cnJlbnRgIG1ldGhvZCBtdXN0IGJlIGRlZmluZWQgaW4gY2hpbGQgY2xhc3Nlcy4nKTtcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHRocm93IG5ldyBFcnJvcignVGhlIGBxdWVyeWAgbWV0aG9kIG11c3QgYmUgZGVmaW5lZCBpbiBjaGlsZCBjbGFzc2VzLicpO1xuICB9O1xuXG4gIEJhc2VBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIC8vIENhbiBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgQmFzZUFkYXB0ZXIucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gQ2FuIGJlIGltcGxlbWVudGVkIGluIHN1YmNsYXNzZXNcbiAgfTtcblxuICBCYXNlQWRhcHRlci5wcm90b3R5cGUuZ2VuZXJhdGVSZXN1bHRJZCA9IGZ1bmN0aW9uIChjb250YWluZXIsIGRhdGEpIHtcbiAgICB2YXIgaWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdC0nO1xuXG4gICAgaWQgKz0gVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcblxuICAgIGlmIChkYXRhLmlkICE9IG51bGwpIHtcbiAgICAgIGlkICs9ICctJyArIGRhdGEuaWQudG9TdHJpbmcoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgKz0gJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycyg0KTtcbiAgICB9XG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIHJldHVybiBCYXNlQWRhcHRlcjtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9zZWxlY3QnLFtcbiAgJy4vYmFzZScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQmFzZUFkYXB0ZXIsIFV0aWxzLCAkKSB7XG4gIGZ1bmN0aW9uIFNlbGVjdEFkYXB0ZXIgKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBTZWxlY3RBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuICB9XG5cbiAgVXRpbHMuRXh0ZW5kKFNlbGVjdEFkYXB0ZXIsIEJhc2VBZGFwdGVyKTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5jdXJyZW50ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIGRhdGEgPSBBcnJheS5wcm90b3R5cGUubWFwLmNhbGwoXG4gICAgICB0aGlzLiRlbGVtZW50WzBdLnF1ZXJ5U2VsZWN0b3JBbGwoJzpjaGVja2VkJyksXG4gICAgICBmdW5jdGlvbiAoc2VsZWN0ZWRFbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBzZWxmLml0ZW0oJChzZWxlY3RlZEVsZW1lbnQpKTtcbiAgICAgIH1cbiAgICApO1xuXG4gICAgY2FsbGJhY2soZGF0YSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuc2VsZWN0ID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICBkYXRhLnNlbGVjdGVkID0gdHJ1ZTtcblxuICAgIC8vIElmIGRhdGEuZWxlbWVudCBpcyBhIERPTSBub2RlLCB1c2UgaXQgaW5zdGVhZFxuICAgIGlmIChcbiAgICAgIGRhdGEuZWxlbWVudCAhPSBudWxsICYmIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSB0cnVlO1xuXG4gICAgICB0aGlzLiRlbGVtZW50LnRyaWdnZXIoJ2lucHV0JykudHJpZ2dlcignY2hhbmdlJyk7XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICB0aGlzLmN1cnJlbnQoZnVuY3Rpb24gKGN1cnJlbnREYXRhKSB7XG4gICAgICAgIHZhciB2YWwgPSBbXTtcblxuICAgICAgICBkYXRhID0gW2RhdGFdO1xuICAgICAgICBkYXRhLnB1c2guYXBwbHkoZGF0YSwgY3VycmVudERhdGEpO1xuXG4gICAgICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgICAgIHZhciBpZCA9IGRhdGFbZF0uaWQ7XG5cbiAgICAgICAgICBpZiAodmFsLmluZGV4T2YoaWQpID09PSAtMSkge1xuICAgICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG4gICAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdmFsID0gZGF0YS5pZDtcblxuICAgICAgdGhpcy4kZWxlbWVudC52YWwodmFsKTtcbiAgICAgIHRoaXMuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUudW5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICghdGhpcy4kZWxlbWVudC5wcm9wKCdtdWx0aXBsZScpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGF0YS5zZWxlY3RlZCA9IGZhbHNlO1xuXG4gICAgaWYgKFxuICAgICAgZGF0YS5lbGVtZW50ICE9IG51bGwgJiZcbiAgICAgIGRhdGEuZWxlbWVudC50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRpb24nXG4gICAgKSB7XG4gICAgICBkYXRhLmVsZW1lbnQuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgdGhpcy4kZWxlbWVudC50cmlnZ2VyKCdpbnB1dCcpLnRyaWdnZXIoJ2NoYW5nZScpO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgdmFyIHZhbCA9IFtdO1xuXG4gICAgICBmb3IgKHZhciBkID0gMDsgZCA8IGN1cnJlbnREYXRhLmxlbmd0aDsgZCsrKSB7XG4gICAgICAgIHZhciBpZCA9IGN1cnJlbnREYXRhW2RdLmlkO1xuXG4gICAgICAgIGlmIChpZCAhPT0gZGF0YS5pZCAmJiB2YWwuaW5kZXhPZihpZCkgPT09IC0xKSB7XG4gICAgICAgICAgdmFsLnB1c2goaWQpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudmFsKHZhbCk7XG5cbiAgICAgIHNlbGYuJGVsZW1lbnQudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuY29udGFpbmVyID0gY29udGFpbmVyO1xuXG4gICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Vuc2VsZWN0JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi51bnNlbGVjdChwYXJhbXMuZGF0YSk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUuZGVzdHJveSA9IGZ1bmN0aW9uICgpIHtcbiAgICAvLyBSZW1vdmUgYW55dGhpbmcgYWRkZWQgdG8gY2hpbGQgZWxlbWVudHNcbiAgICB0aGlzLiRlbGVtZW50LmZpbmQoJyonKS5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIC8vIFJlbW92ZSBhbnkgY3VzdG9tIGRhdGEgc2V0IGJ5IFNlbGVjdDJcbiAgICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0QWRhcHRlci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAocGFyYW1zLCBjYWxsYmFjaykge1xuICAgIHZhciBkYXRhID0gW107XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5jaGlsZHJlbigpO1xuXG4gICAgJG9wdGlvbnMuZWFjaChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoXG4gICAgICAgIHRoaXMudGFnTmFtZS50b0xvd2VyQ2FzZSgpICE9PSAnb3B0aW9uJyAmJlxuICAgICAgICB0aGlzLnRhZ05hbWUudG9Mb3dlckNhc2UoKSAhPT0gJ29wdGdyb3VwJ1xuICAgICAgKSB7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdmFyICRvcHRpb24gPSAkKHRoaXMpO1xuXG4gICAgICB2YXIgb3B0aW9uID0gc2VsZi5pdGVtKCRvcHRpb24pO1xuXG4gICAgICB2YXIgbWF0Y2hlcyA9IHNlbGYubWF0Y2hlcyhwYXJhbXMsIG9wdGlvbik7XG5cbiAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsKSB7XG4gICAgICAgIGRhdGEucHVzaChtYXRjaGVzKTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNhbGxiYWNrKHtcbiAgICAgIHJlc3VsdHM6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3RBZGFwdGVyLnByb3RvdHlwZS5hZGRPcHRpb25zID0gZnVuY3Rpb24gKCRvcHRpb25zKSB7XG4gICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbnMpO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm9wdGlvbiA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgdmFyIG9wdGlvbjtcblxuICAgIGlmIChkYXRhLmNoaWxkcmVuKSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRncm91cCcpO1xuICAgICAgb3B0aW9uLmxhYmVsID0gZGF0YS50ZXh0O1xuICAgIH0gZWxzZSB7XG4gICAgICBvcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdvcHRpb24nKTtcblxuICAgICAgaWYgKG9wdGlvbi50ZXh0Q29udGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIG9wdGlvbi50ZXh0Q29udGVudCA9IGRhdGEudGV4dDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbi5pbm5lclRleHQgPSBkYXRhLnRleHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGRhdGEuaWQgIT09IHVuZGVmaW5lZCkge1xuICAgICAgb3B0aW9uLnZhbHVlID0gZGF0YS5pZDtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5kaXNhYmxlZCkge1xuICAgICAgb3B0aW9uLmRpc2FibGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS5zZWxlY3RlZCkge1xuICAgICAgb3B0aW9uLnNlbGVjdGVkID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoZGF0YS50aXRsZSkge1xuICAgICAgb3B0aW9uLnRpdGxlID0gZGF0YS50aXRsZTtcbiAgICB9XG5cbiAgICB2YXIgbm9ybWFsaXplZERhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIG5vcm1hbGl6ZWREYXRhLmVsZW1lbnQgPSBvcHRpb247XG5cbiAgICAvLyBPdmVycmlkZSB0aGUgb3B0aW9uJ3MgZGF0YSB3aXRoIHRoZSBjb21iaW5lZCBkYXRhXG4gICAgVXRpbHMuU3RvcmVEYXRhKG9wdGlvbiwgJ2RhdGEnLCBub3JtYWxpemVkRGF0YSk7XG5cbiAgICByZXR1cm4gJChvcHRpb24pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLml0ZW0gPSBmdW5jdGlvbiAoJG9wdGlvbikge1xuICAgIHZhciBkYXRhID0ge307XG5cbiAgICBkYXRhID0gVXRpbHMuR2V0RGF0YSgkb3B0aW9uWzBdLCAnZGF0YScpO1xuXG4gICAgaWYgKGRhdGEgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbiA9ICRvcHRpb25bMF07XG5cbiAgICBpZiAob3B0aW9uLnRhZ05hbWUudG9Mb3dlckNhc2UoKSA9PT0gJ29wdGlvbicpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIGlkOiAkb3B0aW9uLnZhbCgpLFxuICAgICAgICB0ZXh0OiAkb3B0aW9uLnRleHQoKSxcbiAgICAgICAgZGlzYWJsZWQ6ICRvcHRpb24ucHJvcCgnZGlzYWJsZWQnKSxcbiAgICAgICAgc2VsZWN0ZWQ6ICRvcHRpb24ucHJvcCgnc2VsZWN0ZWQnKSxcbiAgICAgICAgdGl0bGU6ICRvcHRpb24ucHJvcCgndGl0bGUnKVxuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKG9wdGlvbi50YWdOYW1lLnRvTG93ZXJDYXNlKCkgPT09ICdvcHRncm91cCcpIHtcbiAgICAgIGRhdGEgPSB7XG4gICAgICAgIHRleHQ6ICRvcHRpb24ucHJvcCgnbGFiZWwnKSxcbiAgICAgICAgY2hpbGRyZW46IFtdLFxuICAgICAgICB0aXRsZTogJG9wdGlvbi5wcm9wKCd0aXRsZScpXG4gICAgICB9O1xuXG4gICAgICB2YXIgJGNoaWxkcmVuID0gJG9wdGlvbi5jaGlsZHJlbignb3B0aW9uJyk7XG4gICAgICB2YXIgY2hpbGRyZW4gPSBbXTtcblxuICAgICAgZm9yICh2YXIgYyA9IDA7IGMgPCAkY2hpbGRyZW4ubGVuZ3RoOyBjKyspIHtcbiAgICAgICAgdmFyICRjaGlsZCA9ICQoJGNoaWxkcmVuW2NdKTtcblxuICAgICAgICB2YXIgY2hpbGQgPSB0aGlzLml0ZW0oJGNoaWxkKTtcblxuICAgICAgICBjaGlsZHJlbi5wdXNoKGNoaWxkKTtcbiAgICAgIH1cblxuICAgICAgZGF0YS5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH1cblxuICAgIGRhdGEgPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuICAgIGRhdGEuZWxlbWVudCA9ICRvcHRpb25bMF07XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJG9wdGlvblswXSwgJ2RhdGEnLCBkYXRhKTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLl9ub3JtYWxpemVJdGVtID0gZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICBpZiAoaXRlbSAhPT0gT2JqZWN0KGl0ZW0pKSB7XG4gICAgICBpdGVtID0ge1xuICAgICAgICBpZDogaXRlbSxcbiAgICAgICAgdGV4dDogaXRlbVxuICAgICAgfTtcbiAgICB9XG5cbiAgICBpdGVtID0gJC5leHRlbmQoe30sIHtcbiAgICAgIHRleHQ6ICcnXG4gICAgfSwgaXRlbSk7XG5cbiAgICB2YXIgZGVmYXVsdHMgPSB7XG4gICAgICBzZWxlY3RlZDogZmFsc2UsXG4gICAgICBkaXNhYmxlZDogZmFsc2VcbiAgICB9O1xuXG4gICAgaWYgKGl0ZW0uaWQgIT0gbnVsbCkge1xuICAgICAgaXRlbS5pZCA9IGl0ZW0uaWQudG9TdHJpbmcoKTtcbiAgICB9XG5cbiAgICBpZiAoaXRlbS50ZXh0ICE9IG51bGwpIHtcbiAgICAgIGl0ZW0udGV4dCA9IGl0ZW0udGV4dC50b1N0cmluZygpO1xuICAgIH1cblxuICAgIGlmIChpdGVtLl9yZXN1bHRJZCA9PSBudWxsICYmIGl0ZW0uaWQgJiYgdGhpcy5jb250YWluZXIgIT0gbnVsbCkge1xuICAgICAgaXRlbS5fcmVzdWx0SWQgPSB0aGlzLmdlbmVyYXRlUmVzdWx0SWQodGhpcy5jb250YWluZXIsIGl0ZW0pO1xuICAgIH1cblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIGl0ZW0pO1xuICB9O1xuXG4gIFNlbGVjdEFkYXB0ZXIucHJvdG90eXBlLm1hdGNoZXMgPSBmdW5jdGlvbiAocGFyYW1zLCBkYXRhKSB7XG4gICAgdmFyIG1hdGNoZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdtYXRjaGVyJyk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcihwYXJhbXMsIGRhdGEpO1xuICB9O1xuXG4gIHJldHVybiBTZWxlY3RBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL2FycmF5JyxbXG4gICcuL3NlbGVjdCcsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoU2VsZWN0QWRhcHRlciwgVXRpbHMsICQpIHtcbiAgZnVuY3Rpb24gQXJyYXlBZGFwdGVyICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuX2RhdGFUb0NvbnZlcnQgPSBvcHRpb25zLmdldCgnZGF0YScpIHx8IFtdO1xuXG4gICAgQXJyYXlBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBcnJheUFkYXB0ZXIsIFNlbGVjdEFkYXB0ZXIpO1xuXG4gIEFycmF5QWRhcHRlci5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICBBcnJheUFkYXB0ZXIuX19zdXBlcl9fLmJpbmQuY2FsbCh0aGlzLCBjb250YWluZXIsICRjb250YWluZXIpO1xuXG4gICAgdGhpcy5hZGRPcHRpb25zKHRoaXMuY29udmVydFRvT3B0aW9ucyh0aGlzLl9kYXRhVG9Db252ZXJ0KSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5zZWxlY3QgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIHZhciAkb3B0aW9uID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKS5maWx0ZXIoZnVuY3Rpb24gKGksIGVsbSkge1xuICAgICAgcmV0dXJuIGVsbS52YWx1ZSA9PSBkYXRhLmlkLnRvU3RyaW5nKCk7XG4gICAgfSk7XG5cbiAgICBpZiAoJG9wdGlvbi5sZW5ndGggPT09IDApIHtcbiAgICAgICRvcHRpb24gPSB0aGlzLm9wdGlvbihkYXRhKTtcblxuICAgICAgdGhpcy5hZGRPcHRpb25zKCRvcHRpb24pO1xuICAgIH1cblxuICAgIEFycmF5QWRhcHRlci5fX3N1cGVyX18uc2VsZWN0LmNhbGwodGhpcywgZGF0YSk7XG4gIH07XG5cbiAgQXJyYXlBZGFwdGVyLnByb3RvdHlwZS5jb252ZXJ0VG9PcHRpb25zID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB2YXIgJGV4aXN0aW5nID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb24nKTtcbiAgICB2YXIgZXhpc3RpbmdJZHMgPSAkZXhpc3RpbmcubWFwKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBzZWxmLml0ZW0oJCh0aGlzKSkuaWQ7XG4gICAgfSkuZ2V0KCk7XG5cbiAgICB2YXIgJG9wdGlvbnMgPSBbXTtcblxuICAgIC8vIEZpbHRlciBvdXQgYWxsIGl0ZW1zIGV4Y2VwdCBmb3IgdGhlIG9uZSBwYXNzZWQgaW4gdGhlIGFyZ3VtZW50XG4gICAgZnVuY3Rpb24gb25seUl0ZW0gKGl0ZW0pIHtcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAkKHRoaXMpLnZhbCgpID09IGl0ZW0uaWQ7XG4gICAgICB9O1xuICAgIH1cblxuICAgIGZvciAodmFyIGQgPSAwOyBkIDwgZGF0YS5sZW5ndGg7IGQrKykge1xuICAgICAgdmFyIGl0ZW0gPSB0aGlzLl9ub3JtYWxpemVJdGVtKGRhdGFbZF0pO1xuXG4gICAgICAvLyBTa2lwIGl0ZW1zIHdoaWNoIHdlcmUgcHJlLWxvYWRlZCwgb25seSBtZXJnZSB0aGUgZGF0YVxuICAgICAgaWYgKGV4aXN0aW5nSWRzLmluZGV4T2YoaXRlbS5pZCkgPj0gMCkge1xuICAgICAgICB2YXIgJGV4aXN0aW5nT3B0aW9uID0gJGV4aXN0aW5nLmZpbHRlcihvbmx5SXRlbShpdGVtKSk7XG5cbiAgICAgICAgdmFyIGV4aXN0aW5nRGF0YSA9IHRoaXMuaXRlbSgkZXhpc3RpbmdPcHRpb24pO1xuICAgICAgICB2YXIgbmV3RGF0YSA9ICQuZXh0ZW5kKHRydWUsIHt9LCBpdGVtLCBleGlzdGluZ0RhdGEpO1xuXG4gICAgICAgIHZhciAkbmV3T3B0aW9uID0gdGhpcy5vcHRpb24obmV3RGF0YSk7XG5cbiAgICAgICAgJGV4aXN0aW5nT3B0aW9uLnJlcGxhY2VXaXRoKCRuZXdPcHRpb24pO1xuXG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgJG9wdGlvbiA9IHRoaXMub3B0aW9uKGl0ZW0pO1xuXG4gICAgICBpZiAoaXRlbS5jaGlsZHJlbikge1xuICAgICAgICB2YXIgJGNoaWxkcmVuID0gdGhpcy5jb252ZXJ0VG9PcHRpb25zKGl0ZW0uY2hpbGRyZW4pO1xuXG4gICAgICAgICRvcHRpb24uYXBwZW5kKCRjaGlsZHJlbik7XG4gICAgICB9XG5cbiAgICAgICRvcHRpb25zLnB1c2goJG9wdGlvbik7XG4gICAgfVxuXG4gICAgcmV0dXJuICRvcHRpb25zO1xuICB9O1xuXG4gIHJldHVybiBBcnJheUFkYXB0ZXI7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvYWpheCcsW1xuICAnLi9hcnJheScsXG4gICcuLi91dGlscycsXG4gICdqcXVlcnknXG5dLCBmdW5jdGlvbiAoQXJyYXlBZGFwdGVyLCBVdGlscywgJCkge1xuICBmdW5jdGlvbiBBamF4QWRhcHRlciAoJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLmFqYXhPcHRpb25zID0gdGhpcy5fYXBwbHlEZWZhdWx0cyhvcHRpb25zLmdldCgnYWpheCcpKTtcblxuICAgIGlmICh0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzICE9IG51bGwpIHtcbiAgICAgIHRoaXMucHJvY2Vzc1Jlc3VsdHMgPSB0aGlzLmFqYXhPcHRpb25zLnByb2Nlc3NSZXN1bHRzO1xuICAgIH1cblxuICAgIEFqYXhBZGFwdGVyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcbiAgfVxuXG4gIFV0aWxzLkV4dGVuZChBamF4QWRhcHRlciwgQXJyYXlBZGFwdGVyKTtcblxuICBBamF4QWRhcHRlci5wcm90b3R5cGUuX2FwcGx5RGVmYXVsdHMgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBkZWZhdWx0cyA9IHtcbiAgICAgIGRhdGE6IGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgICAgcmV0dXJuICQuZXh0ZW5kKHt9LCBwYXJhbXMsIHtcbiAgICAgICAgICBxOiBwYXJhbXMudGVybVxuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICB0cmFuc3BvcnQ6IGZ1bmN0aW9uIChwYXJhbXMsIHN1Y2Nlc3MsIGZhaWx1cmUpIHtcbiAgICAgICAgdmFyICRyZXF1ZXN0ID0gJC5hamF4KHBhcmFtcyk7XG5cbiAgICAgICAgJHJlcXVlc3QudGhlbihzdWNjZXNzKTtcbiAgICAgICAgJHJlcXVlc3QuZmFpbChmYWlsdXJlKTtcblxuICAgICAgICByZXR1cm4gJHJlcXVlc3Q7XG4gICAgICB9XG4gICAgfTtcblxuICAgIHJldHVybiAkLmV4dGVuZCh7fSwgZGVmYXVsdHMsIG9wdGlvbnMsIHRydWUpO1xuICB9O1xuXG4gIEFqYXhBZGFwdGVyLnByb3RvdHlwZS5wcm9jZXNzUmVzdWx0cyA9IGZ1bmN0aW9uIChyZXN1bHRzKSB7XG4gICAgcmV0dXJuIHJlc3VsdHM7XG4gIH07XG5cbiAgQWpheEFkYXB0ZXIucHJvdG90eXBlLnF1ZXJ5ID0gZnVuY3Rpb24gKHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICB2YXIgbWF0Y2hlcyA9IFtdO1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGlmICh0aGlzLl9yZXF1ZXN0ICE9IG51bGwpIHtcbiAgICAgIC8vIEpTT05QIHJlcXVlc3RzIGNhbm5vdCBhbHdheXMgYmUgYWJvcnRlZFxuICAgICAgaWYgKHR5cGVvZiB0aGlzLl9yZXF1ZXN0LmFib3J0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHRoaXMuX3JlcXVlc3QuYWJvcnQoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcmVxdWVzdCA9IG51bGw7XG4gICAgfVxuXG4gICAgdmFyIG9wdGlvbnMgPSAkLmV4dGVuZCh7XG4gICAgICB0eXBlOiAnR0VUJ1xuICAgIH0sIHRoaXMuYWpheE9wdGlvbnMpO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLnVybCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgb3B0aW9ucy51cmwgPSBvcHRpb25zLnVybC5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRhdGEgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgIG9wdGlvbnMuZGF0YSA9IG9wdGlvbnMuZGF0YS5jYWxsKHRoaXMuJGVsZW1lbnQsIHBhcmFtcyk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gcmVxdWVzdCAoKSB7XG4gICAgICB2YXIgJHJlcXVlc3QgPSBvcHRpb25zLnRyYW5zcG9ydChvcHRpb25zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgcmVzdWx0cyA9IHNlbGYucHJvY2Vzc1Jlc3VsdHMoZGF0YSwgcGFyYW1zKTtcblxuICAgICAgICBpZiAoc2VsZi5vcHRpb25zLmdldCgnZGVidWcnKSAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgLy8gQ2hlY2sgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIHJlc3BvbnNlIGluY2x1ZGVkIGEgYHJlc3VsdHNgIGtleS5cbiAgICAgICAgICBpZiAoIXJlc3VsdHMgfHwgIXJlc3VsdHMucmVzdWx0cyB8fCAhQXJyYXkuaXNBcnJheShyZXN1bHRzLnJlc3VsdHMpKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnU2VsZWN0MjogVGhlIEFKQVggcmVzdWx0cyBkaWQgbm90IHJldHVybiBhbiBhcnJheSBpbiB0aGUgJyArXG4gICAgICAgICAgICAgICdgcmVzdWx0c2Aga2V5IG9mIHRoZSByZXNwb25zZS4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGNhbGxiYWNrKHJlc3VsdHMpO1xuICAgICAgfSwgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBBdHRlbXB0IHRvIGRldGVjdCBpZiBhIHJlcXVlc3Qgd2FzIGFib3J0ZWRcbiAgICAgICAgLy8gT25seSB3b3JrcyBpZiB0aGUgdHJhbnNwb3J0IGV4cG9zZXMgYSBzdGF0dXMgcHJvcGVydHlcbiAgICAgICAgaWYgKCdzdGF0dXMnIGluICRyZXF1ZXN0ICYmXG4gICAgICAgICAgICAoJHJlcXVlc3Quc3RhdHVzID09PSAwIHx8ICRyZXF1ZXN0LnN0YXR1cyA9PT0gJzAnKSkge1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHNlbGYudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICAgIG1lc3NhZ2U6ICdlcnJvckxvYWRpbmcnXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG5cbiAgICAgIHNlbGYuX3JlcXVlc3QgPSAkcmVxdWVzdDtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5hamF4T3B0aW9ucy5kZWxheSAmJiBwYXJhbXMudGVybSAhPSBudWxsKSB7XG4gICAgICBpZiAodGhpcy5fcXVlcnlUaW1lb3V0KSB7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGhpcy5fcXVlcnlUaW1lb3V0KTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5fcXVlcnlUaW1lb3V0ID0gd2luZG93LnNldFRpbWVvdXQocmVxdWVzdCwgdGhpcy5hamF4T3B0aW9ucy5kZWxheSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJlcXVlc3QoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIEFqYXhBZGFwdGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3RhZ3MnLFtcbiAgJ2pxdWVyeSdcbl0sIGZ1bmN0aW9uICgkKSB7XG4gIGZ1bmN0aW9uIFRhZ3MgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB2YXIgdGFncyA9IG9wdGlvbnMuZ2V0KCd0YWdzJyk7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gb3B0aW9ucy5nZXQoJ2NyZWF0ZVRhZycpO1xuXG4gICAgaWYgKGNyZWF0ZVRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0aGlzLmNyZWF0ZVRhZyA9IGNyZWF0ZVRhZztcbiAgICB9XG5cbiAgICB2YXIgaW5zZXJ0VGFnID0gb3B0aW9ucy5nZXQoJ2luc2VydFRhZycpO1xuXG4gICAgaWYgKGluc2VydFRhZyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIHRoaXMuaW5zZXJ0VGFnID0gaW5zZXJ0VGFnO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zKTtcblxuICAgIGlmIChBcnJheS5pc0FycmF5KHRhZ3MpKSB7XG4gICAgICBmb3IgKHZhciB0ID0gMDsgdCA8IHRhZ3MubGVuZ3RoOyB0KyspIHtcbiAgICAgICAgdmFyIHRhZyA9IHRhZ3NbdF07XG4gICAgICAgIHZhciBpdGVtID0gdGhpcy5fbm9ybWFsaXplSXRlbSh0YWcpO1xuXG4gICAgICAgIHZhciAkb3B0aW9uID0gdGhpcy5vcHRpb24oaXRlbSk7XG5cbiAgICAgICAgdGhpcy4kZWxlbWVudC5hcHBlbmQoJG9wdGlvbik7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgVGFncy5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5fcmVtb3ZlT2xkVGFncygpO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtID09IG51bGwgfHwgcGFyYW1zLnBhZ2UgIT0gbnVsbCkge1xuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gd3JhcHBlciAob2JqLCBjaGlsZCkge1xuICAgICAgdmFyIGRhdGEgPSBvYmoucmVzdWx0cztcblxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBvcHRpb24gPSBkYXRhW2ldO1xuXG4gICAgICAgIHZhciBjaGVja0NoaWxkcmVuID0gKFxuICAgICAgICAgIG9wdGlvbi5jaGlsZHJlbiAhPSBudWxsICYmXG4gICAgICAgICAgIXdyYXBwZXIoe1xuICAgICAgICAgICAgcmVzdWx0czogb3B0aW9uLmNoaWxkcmVuXG4gICAgICAgICAgfSwgdHJ1ZSlcbiAgICAgICAgKTtcblxuICAgICAgICB2YXIgb3B0aW9uVGV4dCA9IChvcHRpb24udGV4dCB8fCAnJykudG9VcHBlckNhc2UoKTtcbiAgICAgICAgdmFyIHBhcmFtc1Rlcm0gPSAocGFyYW1zLnRlcm0gfHwgJycpLnRvVXBwZXJDYXNlKCk7XG5cbiAgICAgICAgdmFyIGNoZWNrVGV4dCA9IG9wdGlvblRleHQgPT09IHBhcmFtc1Rlcm07XG5cbiAgICAgICAgaWYgKGNoZWNrVGV4dCB8fCBjaGVja0NoaWxkcmVuKSB7XG4gICAgICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgb2JqLmRhdGEgPSBkYXRhO1xuICAgICAgICAgIGNhbGxiYWNrKG9iaik7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICB2YXIgdGFnID0gc2VsZi5jcmVhdGVUYWcocGFyYW1zKTtcblxuICAgICAgaWYgKHRhZyAhPSBudWxsKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24odGFnKTtcbiAgICAgICAgJG9wdGlvbi5hdHRyKCdkYXRhLXNlbGVjdDItdGFnJywgJ3RydWUnKTtcblxuICAgICAgICBzZWxmLmFkZE9wdGlvbnMoWyRvcHRpb25dKTtcblxuICAgICAgICBzZWxmLmluc2VydFRhZyhkYXRhLCB0YWcpO1xuICAgICAgfVxuXG4gICAgICBvYmoucmVzdWx0cyA9IGRhdGE7XG5cbiAgICAgIGNhbGxiYWNrKG9iaik7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCB3cmFwcGVyKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5jcmVhdGVUYWcgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCkge1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybS50cmltKCk7XG5cbiAgICBpZiAodGVybSA9PT0gJycpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBpZDogdGVybSxcbiAgICAgIHRleHQ6IHRlcm1cbiAgICB9O1xuICB9O1xuXG4gIFRhZ3MucHJvdG90eXBlLmluc2VydFRhZyA9IGZ1bmN0aW9uIChfLCBkYXRhLCB0YWcpIHtcbiAgICBkYXRhLnVuc2hpZnQodGFnKTtcbiAgfTtcblxuICBUYWdzLnByb3RvdHlwZS5fcmVtb3ZlT2xkVGFncyA9IGZ1bmN0aW9uIChfKSB7XG4gICAgdmFyICRvcHRpb25zID0gdGhpcy4kZWxlbWVudC5maW5kKCdvcHRpb25bZGF0YS1zZWxlY3QyLXRhZ10nKTtcblxuICAgICRvcHRpb25zLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICAkKHRoaXMpLnJlbW92ZSgpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiBUYWdzO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL3Rva2VuaXplcicsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gVG9rZW5pemVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgdmFyIHRva2VuaXplciA9IG9wdGlvbnMuZ2V0KCd0b2tlbml6ZXInKTtcblxuICAgIGlmICh0b2tlbml6ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgdGhpcy50b2tlbml6ZXIgPSB0b2tlbml6ZXI7XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGVsZW1lbnQsIG9wdGlvbnMpO1xuICB9XG5cbiAgVG9rZW5pemVyLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaCA9ICBjb250YWluZXIuZHJvcGRvd24uJHNlYXJjaCB8fCBjb250YWluZXIuc2VsZWN0aW9uLiRzZWFyY2ggfHxcbiAgICAgICRjb250YWluZXIuZmluZCgnLnNlbGVjdDItc2VhcmNoX19maWVsZCcpO1xuICB9O1xuXG4gIFRva2VuaXplci5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZnVuY3Rpb24gY3JlYXRlQW5kU2VsZWN0IChkYXRhKSB7XG4gICAgICAvLyBOb3JtYWxpemUgdGhlIGRhdGEgb2JqZWN0IHNvIHdlIGNhbiB1c2UgaXQgZm9yIGNoZWNrc1xuICAgICAgdmFyIGl0ZW0gPSBzZWxmLl9ub3JtYWxpemVJdGVtKGRhdGEpO1xuXG4gICAgICAvLyBDaGVjayBpZiB0aGUgZGF0YSBvYmplY3QgYWxyZWFkeSBleGlzdHMgYXMgYSB0YWdcbiAgICAgIC8vIFNlbGVjdCBpdCBpZiBpdCBkb2Vzbid0XG4gICAgICB2YXIgJGV4aXN0aW5nT3B0aW9ucyA9IHNlbGYuJGVsZW1lbnQuZmluZCgnb3B0aW9uJykuZmlsdGVyKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuICQodGhpcykudmFsKCkgPT09IGl0ZW0uaWQ7XG4gICAgICB9KTtcblxuICAgICAgLy8gSWYgYW4gZXhpc3Rpbmcgb3B0aW9uIHdhc24ndCBmb3VuZCBmb3IgaXQsIGNyZWF0ZSB0aGUgb3B0aW9uXG4gICAgICBpZiAoISRleGlzdGluZ09wdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgIHZhciAkb3B0aW9uID0gc2VsZi5vcHRpb24oaXRlbSk7XG4gICAgICAgICRvcHRpb24uYXR0cignZGF0YS1zZWxlY3QyLXRhZycsIHRydWUpO1xuXG4gICAgICAgIHNlbGYuX3JlbW92ZU9sZFRhZ3MoKTtcbiAgICAgICAgc2VsZi5hZGRPcHRpb25zKFskb3B0aW9uXSk7XG4gICAgICB9XG5cbiAgICAgIC8vIFNlbGVjdCB0aGUgaXRlbSwgbm93IHRoYXQgd2Uga25vdyB0aGVyZSBpcyBhbiBvcHRpb24gZm9yIGl0XG4gICAgICBzZWxlY3QoaXRlbSk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gc2VsZWN0IChkYXRhKSB7XG4gICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdCcsIHtcbiAgICAgICAgZGF0YTogZGF0YVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIHZhciB0b2tlbkRhdGEgPSB0aGlzLnRva2VuaXplcihwYXJhbXMsIHRoaXMub3B0aW9ucywgY3JlYXRlQW5kU2VsZWN0KTtcblxuICAgIGlmICh0b2tlbkRhdGEudGVybSAhPT0gcGFyYW1zLnRlcm0pIHtcbiAgICAgIC8vIFJlcGxhY2UgdGhlIHNlYXJjaCB0ZXJtIGlmIHdlIGhhdmUgdGhlIHNlYXJjaCBib3hcbiAgICAgIGlmICh0aGlzLiRzZWFyY2gubGVuZ3RoKSB7XG4gICAgICAgIHRoaXMuJHNlYXJjaC52YWwodG9rZW5EYXRhLnRlcm0pO1xuICAgICAgICB0aGlzLiRzZWFyY2gudHJpZ2dlcignZm9jdXMnKTtcbiAgICAgIH1cblxuICAgICAgcGFyYW1zLnRlcm0gPSB0b2tlbkRhdGEudGVybTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgfTtcblxuICBUb2tlbml6ZXIucHJvdG90eXBlLnRva2VuaXplciA9IGZ1bmN0aW9uIChfLCBwYXJhbXMsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gICAgdmFyIHNlcGFyYXRvcnMgPSBvcHRpb25zLmdldCgndG9rZW5TZXBhcmF0b3JzJykgfHwgW107XG4gICAgdmFyIHRlcm0gPSBwYXJhbXMudGVybTtcbiAgICB2YXIgaSA9IDA7XG5cbiAgICB2YXIgY3JlYXRlVGFnID0gdGhpcy5jcmVhdGVUYWcgfHwgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaWQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICB0ZXh0OiBwYXJhbXMudGVybVxuICAgICAgfTtcbiAgICB9O1xuXG4gICAgd2hpbGUgKGkgPCB0ZXJtLmxlbmd0aCkge1xuICAgICAgdmFyIHRlcm1DaGFyID0gdGVybVtpXTtcblxuICAgICAgaWYgKHNlcGFyYXRvcnMuaW5kZXhPZih0ZXJtQ2hhcikgPT09IC0xKSB7XG4gICAgICAgIGkrKztcblxuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgdmFyIHBhcnQgPSB0ZXJtLnN1YnN0cigwLCBpKTtcbiAgICAgIHZhciBwYXJ0UGFyYW1zID0gJC5leHRlbmQoe30sIHBhcmFtcywge1xuICAgICAgICB0ZXJtOiBwYXJ0XG4gICAgICB9KTtcblxuICAgICAgdmFyIGRhdGEgPSBjcmVhdGVUYWcocGFydFBhcmFtcyk7XG5cbiAgICAgIGlmIChkYXRhID09IG51bGwpIHtcbiAgICAgICAgaSsrO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgY2FsbGJhY2soZGF0YSk7XG5cbiAgICAgIC8vIFJlc2V0IHRoZSB0ZXJtIHRvIG5vdCBpbmNsdWRlIHRoZSB0b2tlbml6ZWQgcG9ydGlvblxuICAgICAgdGVybSA9IHRlcm0uc3Vic3RyKGkgKyAxKSB8fCAnJztcbiAgICAgIGkgPSAwO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICB0ZXJtOiB0ZXJtXG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gVG9rZW5pemVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kYXRhL21pbmltdW1JbnB1dExlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbmltdW1JbnB1dExlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWluaW11bUlucHV0TGVuZ3RoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1JbnB1dExlbmd0aCcpO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgJGUsIG9wdGlvbnMpO1xuICB9XG5cbiAgTWluaW11bUlucHV0TGVuZ3RoLnByb3RvdHlwZS5xdWVyeSA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIHBhcmFtcywgY2FsbGJhY2spIHtcbiAgICBwYXJhbXMudGVybSA9IHBhcmFtcy50ZXJtIHx8ICcnO1xuXG4gICAgaWYgKHBhcmFtcy50ZXJtLmxlbmd0aCA8IHRoaXMubWluaW11bUlucHV0TGVuZ3RoKSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ3Jlc3VsdHM6bWVzc2FnZScsIHtcbiAgICAgICAgbWVzc2FnZTogJ2lucHV0VG9vU2hvcnQnLFxuICAgICAgICBhcmdzOiB7XG4gICAgICAgICAgbWluaW11bTogdGhpcy5taW5pbXVtSW5wdXRMZW5ndGgsXG4gICAgICAgICAgaW5wdXQ6IHBhcmFtcy50ZXJtLFxuICAgICAgICAgIHBhcmFtczogcGFyYW1zXG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgcGFyYW1zLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIE1pbmltdW1JbnB1dExlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGF0YS9tYXhpbXVtSW5wdXRMZW5ndGgnLFtcblxuXSwgZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBNYXhpbXVtSW5wdXRMZW5ndGggKGRlY29yYXRlZCwgJGUsIG9wdGlvbnMpIHtcbiAgICB0aGlzLm1heGltdW1JbnB1dExlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtSW5wdXRMZW5ndGgnKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlLCBvcHRpb25zKTtcbiAgfVxuXG4gIE1heGltdW1JbnB1dExlbmd0aC5wcm90b3R5cGUucXVlcnkgPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgcGFyYW1zLnRlcm0gPSBwYXJhbXMudGVybSB8fCAnJztcblxuICAgIGlmICh0aGlzLm1heGltdW1JbnB1dExlbmd0aCA+IDAgJiZcbiAgICAgICAgcGFyYW1zLnRlcm0ubGVuZ3RoID4gdGhpcy5tYXhpbXVtSW5wdXRMZW5ndGgpIHtcbiAgICAgIHRoaXMudHJpZ2dlcigncmVzdWx0czptZXNzYWdlJywge1xuICAgICAgICBtZXNzYWdlOiAnaW5wdXRUb29Mb25nJyxcbiAgICAgICAgYXJnczoge1xuICAgICAgICAgIG1heGltdW06IHRoaXMubWF4aW11bUlucHV0TGVuZ3RoLFxuICAgICAgICAgIGlucHV0OiBwYXJhbXMudGVybSxcbiAgICAgICAgICBwYXJhbXM6IHBhcmFtc1xuICAgICAgICB9XG4gICAgICB9KTtcblxuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIHBhcmFtcywgY2FsbGJhY2spO1xuICB9O1xuXG4gIHJldHVybiBNYXhpbXVtSW5wdXRMZW5ndGg7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsW1xuXG5dLCBmdW5jdGlvbiAoKXtcbiAgZnVuY3Rpb24gTWF4aW11bVNlbGVjdGlvbkxlbmd0aCAoZGVjb3JhdGVkLCAkZSwgb3B0aW9ucykge1xuICAgIHRoaXMubWF4aW11bVNlbGVjdGlvbkxlbmd0aCA9IG9wdGlvbnMuZ2V0KCdtYXhpbXVtU2VsZWN0aW9uTGVuZ3RoJyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZSwgb3B0aW9ucyk7XG4gIH1cblxuICBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLnByb3RvdHlwZS5iaW5kID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBjb250YWluZXIsICRjb250YWluZXIpIHtcbiAgICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgICAgY29udGFpbmVyLm9uKCdzZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLnF1ZXJ5ID1cbiAgICBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMsIGNhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuX2NoZWNrSWZNYXhpbXVtU2VsZWN0ZWQoZnVuY3Rpb24gKCkge1xuICAgICAgICBkZWNvcmF0ZWQuY2FsbChzZWxmLCBwYXJhbXMsIGNhbGxiYWNrKTtcbiAgICAgIH0pO1xuICB9O1xuXG4gIE1heGltdW1TZWxlY3Rpb25MZW5ndGgucHJvdG90eXBlLl9jaGVja0lmTWF4aW11bVNlbGVjdGVkID1cbiAgICBmdW5jdGlvbiAoXywgc3VjY2Vzc0NhbGxiYWNrKSB7XG4gICAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAgIHRoaXMuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgICAgdmFyIGNvdW50ID0gY3VycmVudERhdGEgIT0gbnVsbCA/IGN1cnJlbnREYXRhLmxlbmd0aCA6IDA7XG4gICAgICAgIGlmIChzZWxmLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwICYmXG4gICAgICAgICAgY291bnQgPj0gc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOm1lc3NhZ2UnLCB7XG4gICAgICAgICAgICBtZXNzYWdlOiAnbWF4aW11bVNlbGVjdGVkJyxcbiAgICAgICAgICAgIGFyZ3M6IHtcbiAgICAgICAgICAgICAgbWF4aW11bTogc2VsZi5tYXhpbXVtU2VsZWN0aW9uTGVuZ3RoXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHN1Y2Nlc3NDYWxsYmFjaykge1xuICAgICAgICAgIHN1Y2Nlc3NDYWxsYmFjaygpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gTWF4aW11bVNlbGVjdGlvbkxlbmd0aDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24nLFtcbiAgJ2pxdWVyeScsXG4gICcuL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIERyb3Bkb3duICgkZWxlbWVudCwgb3B0aW9ucykge1xuICAgIHRoaXMuJGVsZW1lbnQgPSAkZWxlbWVudDtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgRHJvcGRvd24uX19zdXBlcl9fLmNvbnN0cnVjdG9yLmNhbGwodGhpcyk7XG4gIH1cblxuICBVdGlscy5FeHRlbmQoRHJvcGRvd24sIFV0aWxzLk9ic2VydmFibGUpO1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRkcm9wZG93biA9ICQoXG4gICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3QyLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cInNlbGVjdDItcmVzdWx0c1wiPjwvc3Bhbj4nICtcbiAgICAgICc8L3NwYW4+J1xuICAgICk7XG5cbiAgICAkZHJvcGRvd24uYXR0cignZGlyJywgdGhpcy5vcHRpb25zLmdldCgnZGlyJykpO1xuXG4gICAgdGhpcy4kZHJvcGRvd24gPSAkZHJvcGRvd247XG5cbiAgICByZXR1cm4gJGRyb3Bkb3duO1xuICB9O1xuXG4gIERyb3Bkb3duLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLnBvc2l0aW9uID0gZnVuY3Rpb24gKCRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIFNob3VsZCBiZSBpbXBsZW1lbnRlZCBpbiBzdWJjbGFzc2VzXG4gIH07XG5cbiAgRHJvcGRvd24ucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgLy8gUmVtb3ZlIHRoZSBkcm9wZG93biBmcm9tIHRoZSBET01cbiAgICB0aGlzLiRkcm9wZG93bi5yZW1vdmUoKTtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd247XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3NlYXJjaCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gU2VhcmNoICgpIHsgfVxuXG4gIFNlYXJjaC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkcmVuZGVyZWQgPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgICB2YXIgc2VhcmNoTGFiZWwgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ3NlYXJjaCcpO1xuXG4gICAgdmFyICRzZWFyY2ggPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0Mi1zZWFyY2ggc2VsZWN0Mi1zZWFyY2gtLWRyb3Bkb3duXCI+JyArXG4gICAgICAgICc8aW5wdXQgY2xhc3M9XCJzZWxlY3QyLXNlYXJjaF9fZmllbGRcIiB0eXBlPVwic2VhcmNoXCIgdGFiaW5kZXg9XCItMVwiJyArXG4gICAgICAgICcgYXV0b2NvcnJlY3Q9XCJvZmZcIiBhdXRvY2FwaXRhbGl6ZT1cIm5vbmVcIicgK1xuICAgICAgICAnIHNwZWxsY2hlY2s9XCJmYWxzZVwiIHJvbGU9XCJzZWFyY2hib3hcIiBhcmlhLWF1dG9jb21wbGV0ZT1cImxpc3RcIiAvPicgK1xuICAgICAgJzwvc3Bhbj4nXG4gICAgKTtcblxuICAgIHRoaXMuJHNlYXJjaENvbnRhaW5lciA9ICRzZWFyY2g7XG4gICAgdGhpcy4kc2VhcmNoID0gJHNlYXJjaC5maW5kKCdpbnB1dCcpO1xuXG4gICAgdGhpcy4kc2VhcmNoLnByb3AoJ2F1dG9jb21wbGV0ZScsIHRoaXMub3B0aW9ucy5nZXQoJ2F1dG9jb21wbGV0ZScpKTtcbiAgICB0aGlzLiRzZWFyY2guYXR0cignYXJpYS1sYWJlbCcsIHNlYXJjaExhYmVsKCkpO1xuXG4gICAgJHJlbmRlcmVkLnByZXBlbmQoJHNlYXJjaCk7XG5cbiAgICByZXR1cm4gJHJlbmRlcmVkO1xuICB9O1xuXG4gIFNlYXJjaC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHZhciByZXN1bHRzSWQgPSBjb250YWluZXIuaWQgKyAnLXJlc3VsdHMnO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5ZG93bicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcigna2V5cHJlc3MnLCBldnQpO1xuXG4gICAgICBzZWxmLl9rZXlVcFByZXZlbnRlZCA9IGV2dC5pc0RlZmF1bHRQcmV2ZW50ZWQoKTtcbiAgICB9KTtcblxuICAgIC8vIFdvcmthcm91bmQgZm9yIGJyb3dzZXJzIHdoaWNoIGRvIG5vdCBzdXBwb3J0IHRoZSBgaW5wdXRgIGV2ZW50XG4gICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgZG91YmxlLXRyaWdnZXJpbmcgb2YgZXZlbnRzIGZvciBicm93c2VycyB3aGljaCBzdXBwb3J0XG4gICAgLy8gYm90aCB0aGUgYGtleXVwYCBhbmQgYGlucHV0YCBldmVudHMuXG4gICAgdGhpcy4kc2VhcmNoLm9uKCdpbnB1dCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIC8vIFVuYmluZCB0aGUgZHVwbGljYXRlZCBga2V5dXBgIGV2ZW50XG4gICAgICAkKHRoaXMpLm9mZigna2V5dXAnKTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHNlYXJjaC5vbigna2V5dXAgaW5wdXQnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICBzZWxmLmhhbmRsZVNlYXJjaChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdvcGVuJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgMCk7XG4gICAgICBzZWxmLiRzZWFyY2guYXR0cignYXJpYS1jb250cm9scycsIHJlc3VsdHNJZCk7XG5cbiAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuXG4gICAgICB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfSwgMCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ2Nsb3NlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ3RhYmluZGV4JywgLTEpO1xuICAgICAgc2VsZi4kc2VhcmNoLnJlbW92ZUF0dHIoJ2FyaWEtY29udHJvbHMnKTtcbiAgICAgIHNlbGYuJHNlYXJjaC5yZW1vdmVBdHRyKCdhcmlhLWFjdGl2ZWRlc2NlbmRhbnQnKTtcblxuICAgICAgc2VsZi4kc2VhcmNoLnZhbCgnJyk7XG4gICAgICBzZWxmLiRzZWFyY2gudHJpZ2dlcignYmx1cicpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdmb2N1cycsIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmICghY29udGFpbmVyLmlzT3BlbigpKSB7XG4gICAgICAgIHNlbGYuJHNlYXJjaC50cmlnZ2VyKCdmb2N1cycpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMucXVlcnkudGVybSA9PSBudWxsIHx8IHBhcmFtcy5xdWVyeS50ZXJtID09PSAnJykge1xuICAgICAgICB2YXIgc2hvd1NlYXJjaCA9IHNlbGYuc2hvd1NlYXJjaChwYXJhbXMpO1xuXG4gICAgICAgIGlmIChzaG93U2VhcmNoKSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgc2VsZi4kc2VhcmNoQ29udGFpbmVyWzBdLmNsYXNzTGlzdC5hZGQoJ3NlbGVjdDItc2VhcmNoLS1oaWRlJyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czpmb2N1cycsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIGlmIChwYXJhbXMuZGF0YS5fcmVzdWx0SWQpIHtcbiAgICAgICAgc2VsZi4kc2VhcmNoLmF0dHIoJ2FyaWEtYWN0aXZlZGVzY2VuZGFudCcsIHBhcmFtcy5kYXRhLl9yZXN1bHRJZCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZWxmLiRzZWFyY2gucmVtb3ZlQXR0cignYXJpYS1hY3RpdmVkZXNjZW5kYW50Jyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgU2VhcmNoLnByb3RvdHlwZS5oYW5kbGVTZWFyY2ggPSBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgaWYgKCF0aGlzLl9rZXlVcFByZXZlbnRlZCkge1xuICAgICAgdmFyIGlucHV0ID0gdGhpcy4kc2VhcmNoLnZhbCgpO1xuXG4gICAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge1xuICAgICAgICB0ZXJtOiBpbnB1dFxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdGhpcy5fa2V5VXBQcmV2ZW50ZWQgPSBmYWxzZTtcbiAgfTtcblxuICBTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIFNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vaGlkZVBsYWNlaG9sZGVyJyxbXG5cbl0sIGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSGlkZVBsYWNlaG9sZGVyIChkZWNvcmF0ZWQsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcikge1xuICAgIHRoaXMucGxhY2Vob2xkZXIgPSB0aGlzLm5vcm1hbGl6ZVBsYWNlaG9sZGVyKG9wdGlvbnMuZ2V0KCdwbGFjZWhvbGRlcicpKTtcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsICRlbGVtZW50LCBvcHRpb25zLCBkYXRhQWRhcHRlcik7XG4gIH1cblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLmFwcGVuZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGRhdGEpIHtcbiAgICBkYXRhLnJlc3VsdHMgPSB0aGlzLnJlbW92ZVBsYWNlaG9sZGVyKGRhdGEucmVzdWx0cyk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBkYXRhKTtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLm5vcm1hbGl6ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIHBsYWNlaG9sZGVyKSB7XG4gICAgaWYgKHR5cGVvZiBwbGFjZWhvbGRlciA9PT0gJ3N0cmluZycpIHtcbiAgICAgIHBsYWNlaG9sZGVyID0ge1xuICAgICAgICBpZDogJycsXG4gICAgICAgIHRleHQ6IHBsYWNlaG9sZGVyXG4gICAgICB9O1xuICAgIH1cblxuICAgIHJldHVybiBwbGFjZWhvbGRlcjtcbiAgfTtcblxuICBIaWRlUGxhY2Vob2xkZXIucHJvdG90eXBlLnJlbW92ZVBsYWNlaG9sZGVyID0gZnVuY3Rpb24gKF8sIGRhdGEpIHtcbiAgICB2YXIgbW9kaWZpZWREYXRhID0gZGF0YS5zbGljZSgwKTtcblxuICAgIGZvciAodmFyIGQgPSBkYXRhLmxlbmd0aCAtIDE7IGQgPj0gMDsgZC0tKSB7XG4gICAgICB2YXIgaXRlbSA9IGRhdGFbZF07XG5cbiAgICAgIGlmICh0aGlzLnBsYWNlaG9sZGVyLmlkID09PSBpdGVtLmlkKSB7XG4gICAgICAgIG1vZGlmaWVkRGF0YS5zcGxpY2UoZCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1vZGlmaWVkRGF0YTtcbiAgfTtcblxuICByZXR1cm4gSGlkZVBsYWNlaG9sZGVyO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgZnVuY3Rpb24gSW5maW5pdGVTY3JvbGwgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMsIGRhdGFBZGFwdGVyKSB7XG4gICAgdGhpcy5sYXN0UGFyYW1zID0ge307XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuXG4gICAgdGhpcy4kbG9hZGluZ01vcmUgPSB0aGlzLmNyZWF0ZUxvYWRpbmdNb3JlKCk7XG4gICAgdGhpcy5sb2FkaW5nID0gZmFsc2U7XG4gIH1cblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYXBwZW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgZGF0YSkge1xuICAgIHRoaXMuJGxvYWRpbmdNb3JlLnJlbW92ZSgpO1xuICAgIHRoaXMubG9hZGluZyA9IGZhbHNlO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgZGF0YSk7XG5cbiAgICBpZiAodGhpcy5zaG93TG9hZGluZ01vcmUoZGF0YSkpIHtcbiAgICAgIHRoaXMuJHJlc3VsdHMuYXBwZW5kKHRoaXMuJGxvYWRpbmdNb3JlKTtcbiAgICAgIHRoaXMubG9hZE1vcmVJZk5lZWRlZCgpO1xuICAgIH1cbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3F1ZXJ5JywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncXVlcnk6YXBwZW5kJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5sYXN0UGFyYW1zID0gcGFyYW1zO1xuICAgICAgc2VsZi5sb2FkaW5nID0gdHJ1ZTtcbiAgICB9KTtcblxuICAgIHRoaXMuJHJlc3VsdHMub24oJ3Njcm9sbCcsIHRoaXMubG9hZE1vcmVJZk5lZWRlZC5iaW5kKHRoaXMpKTtcbiAgfTtcblxuICBJbmZpbml0ZVNjcm9sbC5wcm90b3R5cGUubG9hZE1vcmVJZk5lZWRlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgaXNMb2FkTW9yZVZpc2libGUgPSAkLmNvbnRhaW5zKFxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LFxuICAgICAgdGhpcy4kbG9hZGluZ01vcmVbMF1cbiAgICApO1xuXG4gICAgaWYgKHRoaXMubG9hZGluZyB8fCAhaXNMb2FkTW9yZVZpc2libGUpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuJHJlc3VsdHMub2Zmc2V0KCkudG9wICtcbiAgICAgIHRoaXMuJHJlc3VsdHMub3V0ZXJIZWlnaHQoZmFsc2UpO1xuICAgIHZhciBsb2FkaW5nTW9yZU9mZnNldCA9IHRoaXMuJGxvYWRpbmdNb3JlLm9mZnNldCgpLnRvcCArXG4gICAgICB0aGlzLiRsb2FkaW5nTW9yZS5vdXRlckhlaWdodChmYWxzZSk7XG5cbiAgICBpZiAoY3VycmVudE9mZnNldCArIDUwID49IGxvYWRpbmdNb3JlT2Zmc2V0KSB7XG4gICAgICB0aGlzLmxvYWRNb3JlKCk7XG4gICAgfVxuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5sb2FkTW9yZSA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmxvYWRpbmcgPSB0cnVlO1xuXG4gICAgdmFyIHBhcmFtcyA9ICQuZXh0ZW5kKHt9LCB7cGFnZTogMX0sIHRoaXMubGFzdFBhcmFtcyk7XG5cbiAgICBwYXJhbXMucGFnZSsrO1xuXG4gICAgdGhpcy50cmlnZ2VyKCdxdWVyeTphcHBlbmQnLCBwYXJhbXMpO1xuICB9O1xuXG4gIEluZmluaXRlU2Nyb2xsLnByb3RvdHlwZS5zaG93TG9hZGluZ01vcmUgPSBmdW5jdGlvbiAoXywgZGF0YSkge1xuICAgIHJldHVybiBkYXRhLnBhZ2luYXRpb24gJiYgZGF0YS5wYWdpbmF0aW9uLm1vcmU7XG4gIH07XG5cbiAgSW5maW5pdGVTY3JvbGwucHJvdG90eXBlLmNyZWF0ZUxvYWRpbmdNb3JlID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciAkb3B0aW9uID0gJChcbiAgICAgICc8bGkgJyArXG4gICAgICAnY2xhc3M9XCJzZWxlY3QyLXJlc3VsdHNfX29wdGlvbiBzZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tbG9hZC1tb3JlXCInICtcbiAgICAgICdyb2xlPVwib3B0aW9uXCIgYXJpYS1kaXNhYmxlZD1cInRydWVcIj48L2xpPidcbiAgICApO1xuXG4gICAgdmFyIG1lc3NhZ2UgPSB0aGlzLm9wdGlvbnMuZ2V0KCd0cmFuc2xhdGlvbnMnKS5nZXQoJ2xvYWRpbmdNb3JlJyk7XG5cbiAgICAkb3B0aW9uLmh0bWwobWVzc2FnZSh0aGlzLmxhc3RQYXJhbXMpKTtcblxuICAgIHJldHVybiAkb3B0aW9uO1xuICB9O1xuXG4gIHJldHVybiBJbmZpbml0ZVNjcm9sbDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vYXR0YWNoQm9keScsW1xuICAnanF1ZXJ5JyxcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKCQsIFV0aWxzKSB7XG4gIGZ1bmN0aW9uIEF0dGFjaEJvZHkgKGRlY29yYXRlZCwgJGVsZW1lbnQsIG9wdGlvbnMpIHtcbiAgICB0aGlzLiRkcm9wZG93blBhcmVudCA9ICQob3B0aW9ucy5nZXQoJ2Ryb3Bkb3duUGFyZW50JykgfHwgZG9jdW1lbnQuYm9keSk7XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucyk7XG4gIH1cblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Nob3dEcm9wZG93bigpO1xuICAgICAgc2VsZi5fYXR0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG5cbiAgICAgIC8vIE11c3QgYmluZCBhZnRlciB0aGUgcmVzdWx0cyBoYW5kbGVycyB0byBlbnN1cmUgY29ycmVjdCBzaXppbmdcbiAgICAgIHNlbGYuX2JpbmRDb250YWluZXJSZXN1bHRIYW5kbGVycyhjb250YWluZXIpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCdjbG9zZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX2hpZGVEcm9wZG93bigpO1xuICAgICAgc2VsZi5fZGV0YWNoUG9zaXRpb25pbmdIYW5kbGVyKGNvbnRhaW5lcik7XG4gICAgfSk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5vbignbW91c2Vkb3duJywgZnVuY3Rpb24gKGV2dCkge1xuICAgICAgZXZ0LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLmRlc3Ryb3kgPSBmdW5jdGlvbiAoZGVjb3JhdGVkKSB7XG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcyk7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lci5yZW1vdmUoKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5wb3NpdGlvbiA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsICRkcm9wZG93biwgJGNvbnRhaW5lcikge1xuICAgIC8vIENsb25lIGFsbCBvZiB0aGUgY29udGFpbmVyIGNsYXNzZXNcbiAgICAkZHJvcGRvd24uYXR0cignY2xhc3MnLCAkY29udGFpbmVyLmF0dHIoJ2NsYXNzJykpO1xuXG4gICAgJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDInKTtcbiAgICAkZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcblxuICAgICRkcm9wZG93bi5jc3Moe1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6IC05OTk5OTlcbiAgICB9KTtcblxuICAgIHRoaXMuJGNvbnRhaW5lciA9ICRjb250YWluZXI7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkY29udGFpbmVyID0gJCgnPHNwYW4+PC9zcGFuPicpO1xuXG4gICAgdmFyICRkcm9wZG93biA9IGRlY29yYXRlZC5jYWxsKHRoaXMpO1xuICAgICRjb250YWluZXIuYXBwZW5kKCRkcm9wZG93bik7XG5cbiAgICB0aGlzLiRkcm9wZG93bkNvbnRhaW5lciA9ICRjb250YWluZXI7XG5cbiAgICByZXR1cm4gJGNvbnRhaW5lcjtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5faGlkZURyb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmRldGFjaCgpO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9iaW5kQ29udGFpbmVyUmVzdWx0SGFuZGxlcnMgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG5cbiAgICAvLyBUaGVzZSBzaG91bGQgb25seSBiZSBib3VuZCBvbmNlXG4gICAgaWYgKHRoaXMuX2NvbnRhaW5lclJlc3VsdHNIYW5kbGVyc0JvdW5kKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgY29udGFpbmVyLm9uKCdyZXN1bHRzOmFsbCcsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICAgIHNlbGYuX3Jlc2l6ZURyb3Bkb3duKCk7XG4gICAgfSk7XG5cbiAgICBjb250YWluZXIub24oJ3Jlc3VsdHM6YXBwZW5kJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigncmVzdWx0czptZXNzYWdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbignc2VsZWN0JywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi5fcG9zaXRpb25Ecm9wZG93bigpO1xuICAgICAgc2VsZi5fcmVzaXplRHJvcGRvd24oKTtcbiAgICB9KTtcblxuICAgIGNvbnRhaW5lci5vbigndW5zZWxlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fY29udGFpbmVyUmVzdWx0c0hhbmRsZXJzQm91bmQgPSB0cnVlO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9hdHRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLmVhY2goZnVuY3Rpb24gKCkge1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKHRoaXMsICdzZWxlY3QyLXNjcm9sbC1wb3NpdGlvbicsIHtcbiAgICAgICAgeDogJCh0aGlzKS5zY3JvbGxMZWZ0KCksXG4gICAgICAgIHk6ICQodGhpcykuc2Nyb2xsVG9wKClcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgJHdhdGNoZXJzLm9uKHNjcm9sbEV2ZW50LCBmdW5jdGlvbiAoZXYpIHtcbiAgICAgIHZhciBwb3NpdGlvbiA9IFV0aWxzLkdldERhdGEodGhpcywgJ3NlbGVjdDItc2Nyb2xsLXBvc2l0aW9uJyk7XG4gICAgICAkKHRoaXMpLnNjcm9sbFRvcChwb3NpdGlvbi55KTtcbiAgICB9KTtcblxuICAgICQod2luZG93KS5vbihzY3JvbGxFdmVudCArICcgJyArIHJlc2l6ZUV2ZW50ICsgJyAnICsgb3JpZW50YXRpb25FdmVudCxcbiAgICAgIGZ1bmN0aW9uIChlKSB7XG4gICAgICBzZWxmLl9wb3NpdGlvbkRyb3Bkb3duKCk7XG4gICAgICBzZWxmLl9yZXNpemVEcm9wZG93bigpO1xuICAgIH0pO1xuICB9O1xuXG4gIEF0dGFjaEJvZHkucHJvdG90eXBlLl9kZXRhY2hQb3NpdGlvbmluZ0hhbmRsZXIgPVxuICAgICAgZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyKSB7XG4gICAgdmFyIHNjcm9sbEV2ZW50ID0gJ3Njcm9sbC5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIHJlc2l6ZUV2ZW50ID0gJ3Jlc2l6ZS5zZWxlY3QyLicgKyBjb250YWluZXIuaWQ7XG4gICAgdmFyIG9yaWVudGF0aW9uRXZlbnQgPSAnb3JpZW50YXRpb25jaGFuZ2Uuc2VsZWN0Mi4nICsgY29udGFpbmVyLmlkO1xuXG4gICAgdmFyICR3YXRjaGVycyA9IHRoaXMuJGNvbnRhaW5lci5wYXJlbnRzKCkuZmlsdGVyKFV0aWxzLmhhc1Njcm9sbCk7XG4gICAgJHdhdGNoZXJzLm9mZihzY3JvbGxFdmVudCk7XG5cbiAgICAkKHdpbmRvdykub2ZmKHNjcm9sbEV2ZW50ICsgJyAnICsgcmVzaXplRXZlbnQgKyAnICcgKyBvcmllbnRhdGlvbkV2ZW50KTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fcG9zaXRpb25Ecm9wZG93biA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgJHdpbmRvdyA9ICQod2luZG93KTtcblxuICAgIHZhciBpc0N1cnJlbnRseUFib3ZlID0gdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0XG4gICAgICAuY29udGFpbnMoJ3NlbGVjdDItZHJvcGRvd24tLWFib3ZlJyk7XG4gICAgdmFyIGlzQ3VycmVudGx5QmVsb3cgPSB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3RcbiAgICAgIC5jb250YWlucygnc2VsZWN0Mi1kcm9wZG93bi0tYmVsb3cnKTtcblxuICAgIHZhciBuZXdEaXJlY3Rpb24gPSBudWxsO1xuXG4gICAgdmFyIG9mZnNldCA9IHRoaXMuJGNvbnRhaW5lci5vZmZzZXQoKTtcblxuICAgIG9mZnNldC5ib3R0b20gPSBvZmZzZXQudG9wICsgdGhpcy4kY29udGFpbmVyLm91dGVySGVpZ2h0KGZhbHNlKTtcblxuICAgIHZhciBjb250YWluZXIgPSB7XG4gICAgICBoZWlnaHQ6IHRoaXMuJGNvbnRhaW5lci5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgY29udGFpbmVyLnRvcCA9IG9mZnNldC50b3A7XG4gICAgY29udGFpbmVyLmJvdHRvbSA9IG9mZnNldC50b3AgKyBjb250YWluZXIuaGVpZ2h0O1xuXG4gICAgdmFyIGRyb3Bkb3duID0ge1xuICAgICAgaGVpZ2h0OiB0aGlzLiRkcm9wZG93bi5vdXRlckhlaWdodChmYWxzZSlcbiAgICB9O1xuXG4gICAgdmFyIHZpZXdwb3J0ID0ge1xuICAgICAgdG9wOiAkd2luZG93LnNjcm9sbFRvcCgpLFxuICAgICAgYm90dG9tOiAkd2luZG93LnNjcm9sbFRvcCgpICsgJHdpbmRvdy5oZWlnaHQoKVxuICAgIH07XG5cbiAgICB2YXIgZW5vdWdoUm9vbUFib3ZlID0gdmlld3BvcnQudG9wIDwgKG9mZnNldC50b3AgLSBkcm9wZG93bi5oZWlnaHQpO1xuICAgIHZhciBlbm91Z2hSb29tQmVsb3cgPSB2aWV3cG9ydC5ib3R0b20gPiAob2Zmc2V0LmJvdHRvbSArIGRyb3Bkb3duLmhlaWdodCk7XG5cbiAgICB2YXIgY3NzID0ge1xuICAgICAgbGVmdDogb2Zmc2V0LmxlZnQsXG4gICAgICB0b3A6IGNvbnRhaW5lci5ib3R0b21cbiAgICB9O1xuXG4gICAgLy8gRGV0ZXJtaW5lIHdoYXQgdGhlIHBhcmVudCBlbGVtZW50IGlzIHRvIHVzZSBmb3IgY2FsY3VsYXRpbmcgdGhlIG9mZnNldFxuICAgIHZhciAkb2Zmc2V0UGFyZW50ID0gdGhpcy4kZHJvcGRvd25QYXJlbnQ7XG5cbiAgICAvLyBGb3Igc3RhdGljYWxseSBwb3NpdGlvbmVkIGVsZW1lbnRzLCB3ZSBuZWVkIHRvIGdldCB0aGUgZWxlbWVudFxuICAgIC8vIHRoYXQgaXMgZGV0ZXJtaW5pbmcgdGhlIG9mZnNldFxuICAgIGlmICgkb2Zmc2V0UGFyZW50LmNzcygncG9zaXRpb24nKSA9PT0gJ3N0YXRpYycpIHtcbiAgICAgICRvZmZzZXRQYXJlbnQgPSAkb2Zmc2V0UGFyZW50Lm9mZnNldFBhcmVudCgpO1xuICAgIH1cblxuICAgIHZhciBwYXJlbnRPZmZzZXQgPSB7XG4gICAgICB0b3A6IDAsXG4gICAgICBsZWZ0OiAwXG4gICAgfTtcblxuICAgIGlmIChcbiAgICAgICQuY29udGFpbnMoZG9jdW1lbnQuYm9keSwgJG9mZnNldFBhcmVudFswXSkgfHxcbiAgICAgICRvZmZzZXRQYXJlbnRbMF0uaXNDb25uZWN0ZWRcbiAgICAgICkge1xuICAgICAgcGFyZW50T2Zmc2V0ID0gJG9mZnNldFBhcmVudC5vZmZzZXQoKTtcbiAgICB9XG5cbiAgICBjc3MudG9wIC09IHBhcmVudE9mZnNldC50b3A7XG4gICAgY3NzLmxlZnQgLT0gcGFyZW50T2Zmc2V0LmxlZnQ7XG5cbiAgICBpZiAoIWlzQ3VycmVudGx5QWJvdmUgJiYgIWlzQ3VycmVudGx5QmVsb3cpIHtcbiAgICAgIG5ld0RpcmVjdGlvbiA9ICdiZWxvdyc7XG4gICAgfVxuXG4gICAgaWYgKCFlbm91Z2hSb29tQmVsb3cgJiYgZW5vdWdoUm9vbUFib3ZlICYmICFpc0N1cnJlbnRseUFib3ZlKSB7XG4gICAgICBuZXdEaXJlY3Rpb24gPSAnYWJvdmUnO1xuICAgIH0gZWxzZSBpZiAoIWVub3VnaFJvb21BYm92ZSAmJiBlbm91Z2hSb29tQmVsb3cgJiYgaXNDdXJyZW50bHlBYm92ZSkge1xuICAgICAgbmV3RGlyZWN0aW9uID0gJ2JlbG93JztcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uID09ICdhYm92ZScgfHxcbiAgICAgIChpc0N1cnJlbnRseUFib3ZlICYmIG5ld0RpcmVjdGlvbiAhPT0gJ2JlbG93JykpIHtcbiAgICAgIGNzcy50b3AgPSBjb250YWluZXIudG9wIC0gcGFyZW50T2Zmc2V0LnRvcCAtIGRyb3Bkb3duLmhlaWdodDtcbiAgICB9XG5cbiAgICBpZiAobmV3RGlyZWN0aW9uICE9IG51bGwpIHtcbiAgICAgIHRoaXMuJGRyb3Bkb3duWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItZHJvcGRvd24tLWJlbG93Jyk7XG4gICAgICB0aGlzLiRkcm9wZG93blswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWRyb3Bkb3duLS1hYm92ZScpO1xuICAgICAgdGhpcy4kZHJvcGRvd25bMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1kcm9wZG93bi0tJyArIG5ld0RpcmVjdGlvbik7XG5cbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYmVsb3cnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tYWJvdmUnKTtcbiAgICAgIHRoaXMuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tJyArIG5ld0RpcmVjdGlvbik7XG4gICAgfVxuXG4gICAgdGhpcy4kZHJvcGRvd25Db250YWluZXIuY3NzKGNzcyk7XG4gIH07XG5cbiAgQXR0YWNoQm9keS5wcm90b3R5cGUuX3Jlc2l6ZURyb3Bkb3duID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBjc3MgPSB7XG4gICAgICB3aWR0aDogdGhpcy4kY29udGFpbmVyLm91dGVyV2lkdGgoZmFsc2UpICsgJ3B4J1xuICAgIH07XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25BdXRvV2lkdGgnKSkge1xuICAgICAgY3NzLm1pbldpZHRoID0gY3NzLndpZHRoO1xuICAgICAgY3NzLnBvc2l0aW9uID0gJ3JlbGF0aXZlJztcbiAgICAgIGNzcy53aWR0aCA9ICdhdXRvJztcbiAgICB9XG5cbiAgICB0aGlzLiRkcm9wZG93bi5jc3MoY3NzKTtcbiAgfTtcblxuICBBdHRhY2hCb2R5LnByb3RvdHlwZS5fc2hvd0Ryb3Bkb3duID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHRoaXMuJGRyb3Bkb3duQ29udGFpbmVyLmFwcGVuZFRvKHRoaXMuJGRyb3Bkb3duUGFyZW50KTtcblxuICAgIHRoaXMuX3Bvc2l0aW9uRHJvcGRvd24oKTtcbiAgICB0aGlzLl9yZXNpemVEcm9wZG93bigpO1xuICB9O1xuXG4gIHJldHVybiBBdHRhY2hCb2R5O1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIGNvdW50UmVzdWx0cyAoZGF0YSkge1xuICAgIHZhciBjb3VudCA9IDA7XG5cbiAgICBmb3IgKHZhciBkID0gMDsgZCA8IGRhdGEubGVuZ3RoOyBkKyspIHtcbiAgICAgIHZhciBpdGVtID0gZGF0YVtkXTtcblxuICAgICAgaWYgKGl0ZW0uY2hpbGRyZW4pIHtcbiAgICAgICAgY291bnQgKz0gY291bnRSZXN1bHRzKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY291bnQrKztcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY291bnQ7XG4gIH1cblxuICBmdW5jdGlvbiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaCAoZGVjb3JhdGVkLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpIHtcbiAgICB0aGlzLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoID0gb3B0aW9ucy5nZXQoJ21pbmltdW1SZXN1bHRzRm9yU2VhcmNoJyk7XG5cbiAgICBpZiAodGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCA8IDApIHtcbiAgICAgIHRoaXMubWluaW11bVJlc3VsdHNGb3JTZWFyY2ggPSBJbmZpbml0eTtcbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzLCAkZWxlbWVudCwgb3B0aW9ucywgZGF0YUFkYXB0ZXIpO1xuICB9XG5cbiAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2gucHJvdG90eXBlLnNob3dTZWFyY2ggPSBmdW5jdGlvbiAoZGVjb3JhdGVkLCBwYXJhbXMpIHtcbiAgICBpZiAoY291bnRSZXN1bHRzKHBhcmFtcy5kYXRhLnJlc3VsdHMpIDwgdGhpcy5taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiBkZWNvcmF0ZWQuY2FsbCh0aGlzLCBwYXJhbXMpO1xuICB9O1xuXG4gIHJldHVybiBNaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vc2VsZWN0T25DbG9zZScsW1xuICAnLi4vdXRpbHMnXG5dLCBmdW5jdGlvbiAoVXRpbHMpIHtcbiAgZnVuY3Rpb24gU2VsZWN0T25DbG9zZSAoKSB7IH1cblxuICBTZWxlY3RPbkNsb3NlLnByb3RvdHlwZS5iaW5kID0gZnVuY3Rpb24gKGRlY29yYXRlZCwgY29udGFpbmVyLCAkY29udGFpbmVyKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgZGVjb3JhdGVkLmNhbGwodGhpcywgY29udGFpbmVyLCAkY29udGFpbmVyKTtcblxuICAgIGNvbnRhaW5lci5vbignY2xvc2UnLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBzZWxmLl9oYW5kbGVTZWxlY3RPbkNsb3NlKHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0T25DbG9zZS5wcm90b3R5cGUuX2hhbmRsZVNlbGVjdE9uQ2xvc2UgPSBmdW5jdGlvbiAoXywgcGFyYW1zKSB7XG4gICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMub3JpZ2luYWxTZWxlY3QyRXZlbnQgIT0gbnVsbCkge1xuICAgICAgdmFyIGV2ZW50ID0gcGFyYW1zLm9yaWdpbmFsU2VsZWN0MkV2ZW50O1xuXG4gICAgICAvLyBEb24ndCBzZWxlY3QgYW4gaXRlbSBpZiB0aGUgY2xvc2UgZXZlbnQgd2FzIHRyaWdnZXJlZCBmcm9tIGEgc2VsZWN0IG9yXG4gICAgICAvLyB1bnNlbGVjdCBldmVudFxuICAgICAgaWYgKGV2ZW50Ll90eXBlID09PSAnc2VsZWN0JyB8fCBldmVudC5fdHlwZSA9PT0gJ3Vuc2VsZWN0Jykge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgfVxuXG4gICAgdmFyICRoaWdobGlnaHRlZFJlc3VsdHMgPSB0aGlzLmdldEhpZ2hsaWdodGVkUmVzdWx0cygpO1xuXG4gICAgLy8gT25seSBzZWxlY3QgaGlnaGxpZ2h0ZWQgcmVzdWx0c1xuICAgIGlmICgkaGlnaGxpZ2h0ZWRSZXN1bHRzLmxlbmd0aCA8IDEpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGhpZ2hsaWdodGVkUmVzdWx0c1swXSwgJ2RhdGEnKTtcblxuICAgIC8vIERvbid0IHJlLXNlbGVjdCBhbHJlYWR5IHNlbGVjdGVkIHJlc3VsdGVcbiAgICBpZiAoXG4gICAgICAoZGF0YS5lbGVtZW50ICE9IG51bGwgJiYgZGF0YS5lbGVtZW50LnNlbGVjdGVkKSB8fFxuICAgICAgKGRhdGEuZWxlbWVudCA9PSBudWxsICYmIGRhdGEuc2VsZWN0ZWQpXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdzZWxlY3QnLCB7XG4gICAgICAgIGRhdGE6IGRhdGFcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gU2VsZWN0T25DbG9zZTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZHJvcGRvd24vY2xvc2VPblNlbGVjdCcsW1xuXG5dLCBmdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENsb3NlT25TZWxlY3QgKCkgeyB9XG5cbiAgQ2xvc2VPblNlbGVjdC5wcm90b3R5cGUuYmluZCA9IGZ1bmN0aW9uIChkZWNvcmF0ZWQsIGNvbnRhaW5lciwgJGNvbnRhaW5lcikge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIGRlY29yYXRlZC5jYWxsKHRoaXMsIGNvbnRhaW5lciwgJGNvbnRhaW5lcik7XG5cbiAgICBjb250YWluZXIub24oJ3NlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuXG4gICAgY29udGFpbmVyLm9uKCd1bnNlbGVjdCcsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYuX3NlbGVjdFRyaWdnZXJlZChldnQpO1xuICAgIH0pO1xuICB9O1xuXG4gIENsb3NlT25TZWxlY3QucHJvdG90eXBlLl9zZWxlY3RUcmlnZ2VyZWQgPSBmdW5jdGlvbiAoXywgZXZ0KSB7XG4gICAgdmFyIG9yaWdpbmFsRXZlbnQgPSBldnQub3JpZ2luYWxFdmVudDtcblxuICAgIC8vIERvbid0IGNsb3NlIGlmIHRoZSBjb250cm9sIGtleSBpcyBiZWluZyBoZWxkXG4gICAgaWYgKG9yaWdpbmFsRXZlbnQgJiYgKG9yaWdpbmFsRXZlbnQuY3RybEtleSB8fCBvcmlnaW5hbEV2ZW50Lm1ldGFLZXkpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgdGhpcy50cmlnZ2VyKCdjbG9zZScsIHtcbiAgICAgIG9yaWdpbmFsRXZlbnQ6IG9yaWdpbmFsRXZlbnQsXG4gICAgICBvcmlnaW5hbFNlbGVjdDJFdmVudDogZXZ0XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIENsb3NlT25TZWxlY3Q7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL2Ryb3Bkb3duQ3NzJyxbXG4gICcuLi91dGlscydcbl0sIGZ1bmN0aW9uIChVdGlscykge1xuICBmdW5jdGlvbiBEcm9wZG93bkNTUyAoKSB7IH1cblxuICBEcm9wZG93bkNTUy5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkZHJvcGRvd24gPSBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcblxuICAgIHZhciBkcm9wZG93bkNzc0NsYXNzID0gdGhpcy5vcHRpb25zLmdldCgnZHJvcGRvd25Dc3NDbGFzcycpIHx8ICcnO1xuXG4gICAgaWYgKGRyb3Bkb3duQ3NzQ2xhc3MuaW5kZXhPZignOmFsbDonKSAhPT0gLTEpIHtcbiAgICAgIGRyb3Bkb3duQ3NzQ2xhc3MgPSBkcm9wZG93bkNzc0NsYXNzLnJlcGxhY2UoJzphbGw6JywgJycpO1xuXG4gICAgICBVdGlscy5jb3B5Tm9uSW50ZXJuYWxDc3NDbGFzc2VzKCRkcm9wZG93blswXSwgdGhpcy4kZWxlbWVudFswXSk7XG4gICAgfVxuXG4gICAgJGRyb3Bkb3duLmFkZENsYXNzKGRyb3Bkb3duQ3NzQ2xhc3MpO1xuXG4gICAgcmV0dXJuICRkcm9wZG93bjtcbiAgfTtcblxuICByZXR1cm4gRHJvcGRvd25DU1M7XG59KTtcblxuUzIuZGVmaW5lKCdzZWxlY3QyL2Ryb3Bkb3duL3RhZ3NTZWFyY2hIaWdobGlnaHQnLFtcbiAgJy4uL3V0aWxzJ1xuXSwgZnVuY3Rpb24gKFV0aWxzKSB7XG4gIGZ1bmN0aW9uIFRhZ3NTZWFyY2hIaWdobGlnaHQgKCkgeyB9XG5cbiAgVGFnc1NlYXJjaEhpZ2hsaWdodC5wcm90b3R5cGUuaGlnaGxpZ2h0Rmlyc3RJdGVtID0gZnVuY3Rpb24gKGRlY29yYXRlZCkge1xuICAgIHZhciAkb3B0aW9ucyA9IHRoaXMuJHJlc3VsdHNcbiAgICAuZmluZChcbiAgICAgICcuc2VsZWN0Mi1yZXN1bHRzX19vcHRpb24tLXNlbGVjdGFibGUnICtcbiAgICAgICc6bm90KC5zZWxlY3QyLXJlc3VsdHNfX29wdGlvbi0tc2VsZWN0ZWQpJ1xuICAgICk7XG5cbiAgICBpZiAoJG9wdGlvbnMubGVuZ3RoID4gMCkge1xuICAgICAgdmFyICRmaXJzdE9wdGlvbiA9ICRvcHRpb25zLmZpcnN0KCk7XG4gICAgICB2YXIgZGF0YSA9IFV0aWxzLkdldERhdGEoJGZpcnN0T3B0aW9uWzBdLCAnZGF0YScpO1xuICAgICAgdmFyIGZpcnN0RWxlbWVudCA9IGRhdGEuZWxlbWVudDtcblxuICAgICAgaWYgKGZpcnN0RWxlbWVudCAmJiBmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKSB7XG4gICAgICAgIGlmIChmaXJzdEVsZW1lbnQuZ2V0QXR0cmlidXRlKCdkYXRhLXNlbGVjdDItdGFnJykgPT09ICd0cnVlJykge1xuICAgICAgICAgICRmaXJzdE9wdGlvbi50cmlnZ2VyKCdtb3VzZWVudGVyJyk7XG5cbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBkZWNvcmF0ZWQuY2FsbCh0aGlzKTtcbiAgfTtcblxuICByZXR1cm4gVGFnc1NlYXJjaEhpZ2hsaWdodDtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvaTE4bi9lbicsW10sZnVuY3Rpb24gKCkge1xuICAvLyBFbmdsaXNoXG4gIHJldHVybiB7XG4gICAgZXJyb3JMb2FkaW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1RoZSByZXN1bHRzIGNvdWxkIG5vdCBiZSBsb2FkZWQuJztcbiAgICB9LFxuICAgIGlucHV0VG9vTG9uZzogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBvdmVyQ2hhcnMgPSBhcmdzLmlucHV0Lmxlbmd0aCAtIGFyZ3MubWF4aW11bTtcblxuICAgICAgdmFyIG1lc3NhZ2UgPSAnUGxlYXNlIGRlbGV0ZSAnICsgb3ZlckNoYXJzICsgJyBjaGFyYWN0ZXInO1xuXG4gICAgICBpZiAob3ZlckNoYXJzICE9IDEpIHtcbiAgICAgICAgbWVzc2FnZSArPSAncyc7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBtZXNzYWdlO1xuICAgIH0sXG4gICAgaW5wdXRUb29TaG9ydDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciByZW1haW5pbmdDaGFycyA9IGFyZ3MubWluaW11bSAtIGFyZ3MuaW5wdXQubGVuZ3RoO1xuXG4gICAgICB2YXIgbWVzc2FnZSA9ICdQbGVhc2UgZW50ZXIgJyArIHJlbWFpbmluZ0NoYXJzICsgJyBvciBtb3JlIGNoYXJhY3RlcnMnO1xuXG4gICAgICByZXR1cm4gbWVzc2FnZTtcbiAgICB9LFxuICAgIGxvYWRpbmdNb3JlOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ0xvYWRpbmcgbW9yZSByZXN1bHRz4oCmJztcbiAgICB9LFxuICAgIG1heGltdW1TZWxlY3RlZDogZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHZhciBtZXNzYWdlID0gJ1lvdSBjYW4gb25seSBzZWxlY3QgJyArIGFyZ3MubWF4aW11bSArICcgaXRlbSc7XG5cbiAgICAgIGlmIChhcmdzLm1heGltdW0gIT0gMSkge1xuICAgICAgICBtZXNzYWdlICs9ICdzJztcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG1lc3NhZ2U7XG4gICAgfSxcbiAgICBub1Jlc3VsdHM6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnTm8gcmVzdWx0cyBmb3VuZCc7XG4gICAgfSxcbiAgICBzZWFyY2hpbmc6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAnU2VhcmNoaW5n4oCmJztcbiAgICB9LFxuICAgIHJlbW92ZUFsbEl0ZW1zOiBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gJ1JlbW92ZSBhbGwgaXRlbXMnO1xuICAgIH0sXG4gICAgcmVtb3ZlSXRlbTogZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuICdSZW1vdmUgaXRlbSc7XG4gICAgfSxcbiAgICBzZWFyY2g6IGZ1bmN0aW9uKCkge1xuICAgICAgcmV0dXJuICdTZWFyY2gnO1xuICAgIH1cbiAgfTtcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvZGVmYXVsdHMnLFtcbiAgJ2pxdWVyeScsXG5cbiAgJy4vcmVzdWx0cycsXG5cbiAgJy4vc2VsZWN0aW9uL3NpbmdsZScsXG4gICcuL3NlbGVjdGlvbi9tdWx0aXBsZScsXG4gICcuL3NlbGVjdGlvbi9wbGFjZWhvbGRlcicsXG4gICcuL3NlbGVjdGlvbi9hbGxvd0NsZWFyJyxcbiAgJy4vc2VsZWN0aW9uL3NlYXJjaCcsXG4gICcuL3NlbGVjdGlvbi9zZWxlY3Rpb25Dc3MnLFxuICAnLi9zZWxlY3Rpb24vZXZlbnRSZWxheScsXG5cbiAgJy4vdXRpbHMnLFxuICAnLi90cmFuc2xhdGlvbicsXG4gICcuL2RpYWNyaXRpY3MnLFxuXG4gICcuL2RhdGEvc2VsZWN0JyxcbiAgJy4vZGF0YS9hcnJheScsXG4gICcuL2RhdGEvYWpheCcsXG4gICcuL2RhdGEvdGFncycsXG4gICcuL2RhdGEvdG9rZW5pemVyJyxcbiAgJy4vZGF0YS9taW5pbXVtSW5wdXRMZW5ndGgnLFxuICAnLi9kYXRhL21heGltdW1JbnB1dExlbmd0aCcsXG4gICcuL2RhdGEvbWF4aW11bVNlbGVjdGlvbkxlbmd0aCcsXG5cbiAgJy4vZHJvcGRvd24nLFxuICAnLi9kcm9wZG93bi9zZWFyY2gnLFxuICAnLi9kcm9wZG93bi9oaWRlUGxhY2Vob2xkZXInLFxuICAnLi9kcm9wZG93bi9pbmZpbml0ZVNjcm9sbCcsXG4gICcuL2Ryb3Bkb3duL2F0dGFjaEJvZHknLFxuICAnLi9kcm9wZG93bi9taW5pbXVtUmVzdWx0c0ZvclNlYXJjaCcsXG4gICcuL2Ryb3Bkb3duL3NlbGVjdE9uQ2xvc2UnLFxuICAnLi9kcm9wZG93bi9jbG9zZU9uU2VsZWN0JyxcbiAgJy4vZHJvcGRvd24vZHJvcGRvd25Dc3MnLFxuICAnLi9kcm9wZG93bi90YWdzU2VhcmNoSGlnaGxpZ2h0JyxcblxuICAnLi9pMThuL2VuJ1xuXSwgZnVuY3Rpb24gKCQsXG5cbiAgICAgICAgICAgICBSZXN1bHRzTGlzdCxcblxuICAgICAgICAgICAgIFNpbmdsZVNlbGVjdGlvbiwgTXVsdGlwbGVTZWxlY3Rpb24sIFBsYWNlaG9sZGVyLCBBbGxvd0NsZWFyLFxuICAgICAgICAgICAgIFNlbGVjdGlvblNlYXJjaCwgU2VsZWN0aW9uQ1NTLCBFdmVudFJlbGF5LFxuXG4gICAgICAgICAgICAgVXRpbHMsIFRyYW5zbGF0aW9uLCBESUFDUklUSUNTLFxuXG4gICAgICAgICAgICAgU2VsZWN0RGF0YSwgQXJyYXlEYXRhLCBBamF4RGF0YSwgVGFncywgVG9rZW5pemVyLFxuICAgICAgICAgICAgIE1pbmltdW1JbnB1dExlbmd0aCwgTWF4aW11bUlucHV0TGVuZ3RoLCBNYXhpbXVtU2VsZWN0aW9uTGVuZ3RoLFxuXG4gICAgICAgICAgICAgRHJvcGRvd24sIERyb3Bkb3duU2VhcmNoLCBIaWRlUGxhY2Vob2xkZXIsIEluZmluaXRlU2Nyb2xsLFxuICAgICAgICAgICAgIEF0dGFjaEJvZHksIE1pbmltdW1SZXN1bHRzRm9yU2VhcmNoLCBTZWxlY3RPbkNsb3NlLCBDbG9zZU9uU2VsZWN0LFxuICAgICAgICAgICAgIERyb3Bkb3duQ1NTLCBUYWdzU2VhcmNoSGlnaGxpZ2h0LFxuXG4gICAgICAgICAgICAgRW5nbGlzaFRyYW5zbGF0aW9uKSB7XG4gIGZ1bmN0aW9uIERlZmF1bHRzICgpIHtcbiAgICB0aGlzLnJlc2V0KCk7XG4gIH1cblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHkgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIG9wdGlvbnMgPSAkLmV4dGVuZCh0cnVlLCB7fSwgdGhpcy5kZWZhdWx0cywgb3B0aW9ucyk7XG5cbiAgICBpZiAob3B0aW9ucy5kYXRhQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IEFqYXhEYXRhO1xuICAgICAgfSBlbHNlIGlmIChvcHRpb25zLmRhdGEgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gQXJyYXlEYXRhO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFNlbGVjdERhdGE7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1JbnB1dExlbmd0aCA+IDApIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgTWF4aW11bUlucHV0TGVuZ3RoXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1heGltdW1TZWxlY3Rpb25MZW5ndGggPiAwKSB7XG4gICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyLFxuICAgICAgICAgIE1heGltdW1TZWxlY3Rpb25MZW5ndGhcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMudGFncykge1xuICAgICAgICBvcHRpb25zLmRhdGFBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUob3B0aW9ucy5kYXRhQWRhcHRlciwgVGFncyk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRva2VuU2VwYXJhdG9ycyAhPSBudWxsIHx8IG9wdGlvbnMudG9rZW5pemVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5kYXRhQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZGF0YUFkYXB0ZXIsXG4gICAgICAgICAgVG9rZW5pemVyXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIgPT0gbnVsbCkge1xuICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFJlc3VsdHNMaXN0O1xuXG4gICAgICBpZiAob3B0aW9ucy5hamF4ICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgSW5maW5pdGVTY3JvbGxcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMucGxhY2Vob2xkZXIgIT0gbnVsbCkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBIaWRlUGxhY2Vob2xkZXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuc2VsZWN0T25DbG9zZSkge1xuICAgICAgICBvcHRpb25zLnJlc3VsdHNBZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3RPbkNsb3NlXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLnRhZ3MpIHtcbiAgICAgICAgb3B0aW9ucy5yZXN1bHRzQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMucmVzdWx0c0FkYXB0ZXIsXG4gICAgICAgICAgVGFnc1NlYXJjaEhpZ2hsaWdodFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IERyb3Bkb3duO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFyIFNlYXJjaGFibGVEcm9wZG93biA9IFV0aWxzLkRlY29yYXRlKERyb3Bkb3duLCBEcm9wZG93blNlYXJjaCk7XG5cbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBTZWFyY2hhYmxlRHJvcGRvd247XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLm1pbmltdW1SZXN1bHRzRm9yU2VhcmNoICE9PSAwKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgTWluaW11bVJlc3VsdHNGb3JTZWFyY2hcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuY2xvc2VPblNlbGVjdCkge1xuICAgICAgICBvcHRpb25zLmRyb3Bkb3duQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyLFxuICAgICAgICAgIENsb3NlT25TZWxlY3RcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMuZHJvcGRvd25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuZHJvcGRvd25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgICAgRHJvcGRvd25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIgPSBVdGlscy5EZWNvcmF0ZShcbiAgICAgICAgb3B0aW9ucy5kcm9wZG93bkFkYXB0ZXIsXG4gICAgICAgIEF0dGFjaEJvZHlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9PSBudWxsKSB7XG4gICAgICBpZiAob3B0aW9ucy5tdWx0aXBsZSkge1xuICAgICAgICBvcHRpb25zLnNlbGVjdGlvbkFkYXB0ZXIgPSBNdWx0aXBsZVNlbGVjdGlvbjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFNpbmdsZVNlbGVjdGlvbjtcbiAgICAgIH1cblxuICAgICAgLy8gQWRkIHRoZSBwbGFjZWhvbGRlciBtaXhpbiBpZiBhIHBsYWNlaG9sZGVyIHdhcyBzcGVjaWZpZWRcbiAgICAgIGlmIChvcHRpb25zLnBsYWNlaG9sZGVyICE9IG51bGwpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFBsYWNlaG9sZGVyXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIGlmIChvcHRpb25zLmFsbG93Q2xlYXIpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIEFsbG93Q2xlYXJcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG9wdGlvbnMubXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyLFxuICAgICAgICAgIFNlbGVjdGlvblNlYXJjaFxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICBpZiAob3B0aW9ucy5zZWxlY3Rpb25Dc3NDbGFzcyAhPSBudWxsKSB7XG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlciA9IFV0aWxzLkRlY29yYXRlKFxuICAgICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgICBTZWxlY3Rpb25DU1NcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgb3B0aW9ucy5zZWxlY3Rpb25BZGFwdGVyID0gVXRpbHMuRGVjb3JhdGUoXG4gICAgICAgIG9wdGlvbnMuc2VsZWN0aW9uQWRhcHRlcixcbiAgICAgICAgRXZlbnRSZWxheVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgZGVmYXVsdHMgd2VyZSBub3QgcHJldmlvdXNseSBhcHBsaWVkIGZyb20gYW4gZWxlbWVudCwgaXQgaXNcbiAgICAvLyBwb3NzaWJsZSBmb3IgdGhlIGxhbmd1YWdlIG9wdGlvbiB0byBoYXZlIG5vdCBiZWVuIHJlc29sdmVkXG4gICAgb3B0aW9ucy5sYW5ndWFnZSA9IHRoaXMuX3Jlc29sdmVMYW5ndWFnZShvcHRpb25zLmxhbmd1YWdlKTtcblxuICAgIC8vIEFsd2F5cyBmYWxsIGJhY2sgdG8gRW5nbGlzaCBzaW5jZSBpdCB3aWxsIGFsd2F5cyBiZSBjb21wbGV0ZVxuICAgIG9wdGlvbnMubGFuZ3VhZ2UucHVzaCgnZW4nKTtcblxuICAgIHZhciB1bmlxdWVMYW5ndWFnZXMgPSBbXTtcblxuICAgIGZvciAodmFyIGwgPSAwOyBsIDwgb3B0aW9ucy5sYW5ndWFnZS5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlID0gb3B0aW9ucy5sYW5ndWFnZVtsXTtcblxuICAgICAgaWYgKHVuaXF1ZUxhbmd1YWdlcy5pbmRleE9mKGxhbmd1YWdlKSA9PT0gLTEpIHtcbiAgICAgICAgdW5pcXVlTGFuZ3VhZ2VzLnB1c2gobGFuZ3VhZ2UpO1xuICAgICAgfVxuICAgIH1cblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSB1bmlxdWVMYW5ndWFnZXM7XG5cbiAgICBvcHRpb25zLnRyYW5zbGF0aW9ucyA9IHRoaXMuX3Byb2Nlc3NUcmFuc2xhdGlvbnMoXG4gICAgICBvcHRpb25zLmxhbmd1YWdlLFxuICAgICAgb3B0aW9ucy5kZWJ1Z1xuICAgICk7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUucmVzZXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gc3RyaXBEaWFjcml0aWNzICh0ZXh0KSB7XG4gICAgICAvLyBVc2VkICd1bmkgcmFuZ2UgKyBuYW1lZCBmdW5jdGlvbicgZnJvbSBodHRwOi8vanNwZXJmLmNvbS9kaWFjcml0aWNzLzE4XG4gICAgICBmdW5jdGlvbiBtYXRjaChhKSB7XG4gICAgICAgIHJldHVybiBESUFDUklUSUNTW2FdIHx8IGE7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0ZXh0LnJlcGxhY2UoL1teXFx1MDAwMC1cXHUwMDdFXS9nLCBtYXRjaCk7XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gbWF0Y2hlciAocGFyYW1zLCBkYXRhKSB7XG4gICAgICAvLyBBbHdheXMgcmV0dXJuIHRoZSBvYmplY3QgaWYgdGhlcmUgaXMgbm90aGluZyB0byBjb21wYXJlXG4gICAgICBpZiAocGFyYW1zLnRlcm0gPT0gbnVsbCB8fCBwYXJhbXMudGVybS50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuXG4gICAgICAvLyBEbyBhIHJlY3Vyc2l2ZSBjaGVjayBmb3Igb3B0aW9ucyB3aXRoIGNoaWxkcmVuXG4gICAgICBpZiAoZGF0YS5jaGlsZHJlbiAmJiBkYXRhLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgLy8gQ2xvbmUgdGhlIGRhdGEgb2JqZWN0IGlmIHRoZXJlIGFyZSBjaGlsZHJlblxuICAgICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGFzIHdlIG1vZGlmeSB0aGUgb2JqZWN0IHRvIHJlbW92ZSBhbnkgbm9uLW1hdGNoZXNcbiAgICAgICAgdmFyIG1hdGNoID0gJC5leHRlbmQodHJ1ZSwge30sIGRhdGEpO1xuXG4gICAgICAgIC8vIENoZWNrIGVhY2ggY2hpbGQgb2YgdGhlIG9wdGlvblxuICAgICAgICBmb3IgKHZhciBjID0gZGF0YS5jaGlsZHJlbi5sZW5ndGggLSAxOyBjID49IDA7IGMtLSkge1xuICAgICAgICAgIHZhciBjaGlsZCA9IGRhdGEuY2hpbGRyZW5bY107XG5cbiAgICAgICAgICB2YXIgbWF0Y2hlcyA9IG1hdGNoZXIocGFyYW1zLCBjaGlsZCk7XG5cbiAgICAgICAgICAvLyBJZiB0aGVyZSB3YXNuJ3QgYSBtYXRjaCwgcmVtb3ZlIHRoZSBvYmplY3QgaW4gdGhlIGFycmF5XG4gICAgICAgICAgaWYgKG1hdGNoZXMgPT0gbnVsbCkge1xuICAgICAgICAgICAgbWF0Y2guY2hpbGRyZW4uc3BsaWNlKGMsIDEpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIC8vIElmIGFueSBjaGlsZHJlbiBtYXRjaGVkLCByZXR1cm4gdGhlIG5ldyBvYmplY3RcbiAgICAgICAgaWYgKG1hdGNoLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2g7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJZiB0aGVyZSB3ZXJlIG5vIG1hdGNoaW5nIGNoaWxkcmVuLCBjaGVjayBqdXN0IHRoZSBwbGFpbiBvYmplY3RcbiAgICAgICAgcmV0dXJuIG1hdGNoZXIocGFyYW1zLCBtYXRjaCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBvcmlnaW5hbCA9IHN0cmlwRGlhY3JpdGljcyhkYXRhLnRleHQpLnRvVXBwZXJDYXNlKCk7XG4gICAgICB2YXIgdGVybSA9IHN0cmlwRGlhY3JpdGljcyhwYXJhbXMudGVybSkudG9VcHBlckNhc2UoKTtcblxuICAgICAgLy8gQ2hlY2sgaWYgdGhlIHRleHQgY29udGFpbnMgdGhlIHRlcm1cbiAgICAgIGlmIChvcmlnaW5hbC5pbmRleE9mKHRlcm0pID4gLTEpIHtcbiAgICAgICAgcmV0dXJuIGRhdGE7XG4gICAgICB9XG5cbiAgICAgIC8vIElmIGl0IGRvZXNuJ3QgY29udGFpbiB0aGUgdGVybSwgZG9uJ3QgcmV0dXJuIGFueXRoaW5nXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICB0aGlzLmRlZmF1bHRzID0ge1xuICAgICAgYW1kTGFuZ3VhZ2VCYXNlOiAnLi9pMThuLycsXG4gICAgICBhdXRvY29tcGxldGU6ICdvZmYnLFxuICAgICAgY2xvc2VPblNlbGVjdDogdHJ1ZSxcbiAgICAgIGRlYnVnOiBmYWxzZSxcbiAgICAgIGRyb3Bkb3duQXV0b1dpZHRoOiBmYWxzZSxcbiAgICAgIGVzY2FwZU1hcmt1cDogVXRpbHMuZXNjYXBlTWFya3VwLFxuICAgICAgbGFuZ3VhZ2U6IHt9LFxuICAgICAgbWF0Y2hlcjogbWF0Y2hlcixcbiAgICAgIG1pbmltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1JbnB1dExlbmd0aDogMCxcbiAgICAgIG1heGltdW1TZWxlY3Rpb25MZW5ndGg6IDAsXG4gICAgICBtaW5pbXVtUmVzdWx0c0ZvclNlYXJjaDogMCxcbiAgICAgIHNlbGVjdE9uQ2xvc2U6IGZhbHNlLFxuICAgICAgc2Nyb2xsQWZ0ZXJTZWxlY3Q6IGZhbHNlLFxuICAgICAgc29ydGVyOiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgIH0sXG4gICAgICB0ZW1wbGF0ZVJlc3VsdDogZnVuY3Rpb24gKHJlc3VsdCkge1xuICAgICAgICByZXR1cm4gcmVzdWx0LnRleHQ7XG4gICAgICB9LFxuICAgICAgdGVtcGxhdGVTZWxlY3Rpb246IGZ1bmN0aW9uIChzZWxlY3Rpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGVjdGlvbi50ZXh0O1xuICAgICAgfSxcbiAgICAgIHRoZW1lOiAnZGVmYXVsdCcsXG4gICAgICB3aWR0aDogJ3Jlc29sdmUnXG4gICAgfTtcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuYXBwbHlGcm9tRWxlbWVudCA9IGZ1bmN0aW9uIChvcHRpb25zLCAkZWxlbWVudCkge1xuICAgIHZhciBvcHRpb25MYW5ndWFnZSA9IG9wdGlvbnMubGFuZ3VhZ2U7XG4gICAgdmFyIGRlZmF1bHRMYW5ndWFnZSA9IHRoaXMuZGVmYXVsdHMubGFuZ3VhZ2U7XG4gICAgdmFyIGVsZW1lbnRMYW5ndWFnZSA9ICRlbGVtZW50LnByb3AoJ2xhbmcnKTtcbiAgICB2YXIgcGFyZW50TGFuZ3VhZ2UgPSAkZWxlbWVudC5jbG9zZXN0KCdbbGFuZ10nKS5wcm9wKCdsYW5nJyk7XG5cbiAgICB2YXIgbGFuZ3VhZ2VzID0gQXJyYXkucHJvdG90eXBlLmNvbmNhdC5jYWxsKFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGVsZW1lbnRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2Uob3B0aW9uTGFuZ3VhZ2UpLFxuICAgICAgdGhpcy5fcmVzb2x2ZUxhbmd1YWdlKGRlZmF1bHRMYW5ndWFnZSksXG4gICAgICB0aGlzLl9yZXNvbHZlTGFuZ3VhZ2UocGFyZW50TGFuZ3VhZ2UpXG4gICAgKTtcblxuICAgIG9wdGlvbnMubGFuZ3VhZ2UgPSBsYW5ndWFnZXM7XG5cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfTtcblxuICBEZWZhdWx0cy5wcm90b3R5cGUuX3Jlc29sdmVMYW5ndWFnZSA9IGZ1bmN0aW9uIChsYW5ndWFnZSkge1xuICAgIGlmICghbGFuZ3VhZ2UpIHtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBpZiAoJC5pc0VtcHR5T2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgcmV0dXJuIFtdO1xuICAgIH1cblxuICAgIGlmICgkLmlzUGxhaW5PYmplY3QobGFuZ3VhZ2UpKSB7XG4gICAgICByZXR1cm4gW2xhbmd1YWdlXTtcbiAgICB9XG5cbiAgICB2YXIgbGFuZ3VhZ2VzO1xuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxhbmd1YWdlKSkge1xuICAgICAgbGFuZ3VhZ2VzID0gW2xhbmd1YWdlXTtcbiAgICB9IGVsc2Uge1xuICAgICAgbGFuZ3VhZ2VzID0gbGFuZ3VhZ2U7XG4gICAgfVxuXG4gICAgdmFyIHJlc29sdmVkTGFuZ3VhZ2VzID0gW107XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgcmVzb2x2ZWRMYW5ndWFnZXMucHVzaChsYW5ndWFnZXNbbF0pO1xuXG4gICAgICBpZiAodHlwZW9mIGxhbmd1YWdlc1tsXSA9PT0gJ3N0cmluZycgJiYgbGFuZ3VhZ2VzW2xdLmluZGV4T2YoJy0nKSA+IDApIHtcbiAgICAgICAgLy8gRXh0cmFjdCB0aGUgcmVnaW9uIGluZm9ybWF0aW9uIGlmIGl0IGlzIGluY2x1ZGVkXG4gICAgICAgIHZhciBsYW5ndWFnZVBhcnRzID0gbGFuZ3VhZ2VzW2xdLnNwbGl0KCctJyk7XG4gICAgICAgIHZhciBiYXNlTGFuZ3VhZ2UgPSBsYW5ndWFnZVBhcnRzWzBdO1xuXG4gICAgICAgIHJlc29sdmVkTGFuZ3VhZ2VzLnB1c2goYmFzZUxhbmd1YWdlKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcmVzb2x2ZWRMYW5ndWFnZXM7XG4gIH07XG5cbiAgRGVmYXVsdHMucHJvdG90eXBlLl9wcm9jZXNzVHJhbnNsYXRpb25zID0gZnVuY3Rpb24gKGxhbmd1YWdlcywgZGVidWcpIHtcbiAgICB2YXIgdHJhbnNsYXRpb25zID0gbmV3IFRyYW5zbGF0aW9uKCk7XG5cbiAgICBmb3IgKHZhciBsID0gMDsgbCA8IGxhbmd1YWdlcy5sZW5ndGg7IGwrKykge1xuICAgICAgdmFyIGxhbmd1YWdlRGF0YSA9IG5ldyBUcmFuc2xhdGlvbigpO1xuXG4gICAgICB2YXIgbGFuZ3VhZ2UgPSBsYW5ndWFnZXNbbF07XG5cbiAgICAgIGlmICh0eXBlb2YgbGFuZ3VhZ2UgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgLy8gVHJ5IHRvIGxvYWQgaXQgd2l0aCB0aGUgb3JpZ2luYWwgbmFtZVxuICAgICAgICAgIGxhbmd1YWdlRGF0YSA9IFRyYW5zbGF0aW9uLmxvYWRQYXRoKGxhbmd1YWdlKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBJZiB3ZSBjb3VsZG4ndCBsb2FkIGl0LCBjaGVjayBpZiBpdCB3YXNuJ3QgdGhlIGZ1bGwgcGF0aFxuICAgICAgICAgICAgbGFuZ3VhZ2UgPSB0aGlzLmRlZmF1bHRzLmFtZExhbmd1YWdlQmFzZSArIGxhbmd1YWdlO1xuICAgICAgICAgICAgbGFuZ3VhZ2VEYXRhID0gVHJhbnNsYXRpb24ubG9hZFBhdGgobGFuZ3VhZ2UpO1xuICAgICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgICAvLyBUaGUgdHJhbnNsYXRpb24gY291bGQgbm90IGJlIGxvYWRlZCBhdCBhbGwuIFNvbWV0aW1lcyB0aGlzIGlzXG4gICAgICAgICAgICAvLyBiZWNhdXNlIG9mIGEgY29uZmlndXJhdGlvbiBwcm9ibGVtLCBvdGhlciB0aW1lcyB0aGlzIGNhbiBiZVxuICAgICAgICAgICAgLy8gYmVjYXVzZSBvZiBob3cgU2VsZWN0MiBoZWxwcyBsb2FkIGFsbCBwb3NzaWJsZSB0cmFuc2xhdGlvbiBmaWxlc1xuICAgICAgICAgICAgaWYgKGRlYnVnICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgICAgICAgJ1NlbGVjdDI6IFRoZSBsYW5ndWFnZSBmaWxlIGZvciBcIicgKyBsYW5ndWFnZSArICdcIiBjb3VsZCAnICtcbiAgICAgICAgICAgICAgICAnbm90IGJlIGF1dG9tYXRpY2FsbHkgbG9hZGVkLiBBIGZhbGxiYWNrIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLidcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoJC5pc1BsYWluT2JqZWN0KGxhbmd1YWdlKSkge1xuICAgICAgICBsYW5ndWFnZURhdGEgPSBuZXcgVHJhbnNsYXRpb24obGFuZ3VhZ2UpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGFuZ3VhZ2VEYXRhID0gbGFuZ3VhZ2U7XG4gICAgICB9XG5cbiAgICAgIHRyYW5zbGF0aW9ucy5leHRlbmQobGFuZ3VhZ2VEYXRhKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJhbnNsYXRpb25zO1xuICB9O1xuXG4gIERlZmF1bHRzLnByb3RvdHlwZS5zZXQgPSBmdW5jdGlvbiAoa2V5LCB2YWx1ZSkge1xuICAgIHZhciBjYW1lbEtleSA9ICQuY2FtZWxDYXNlKGtleSk7XG5cbiAgICB2YXIgZGF0YSA9IHt9O1xuICAgIGRhdGFbY2FtZWxLZXldID0gdmFsdWU7XG5cbiAgICB2YXIgY29udmVydGVkRGF0YSA9IFV0aWxzLl9jb252ZXJ0RGF0YShkYXRhKTtcblxuICAgICQuZXh0ZW5kKHRydWUsIHRoaXMuZGVmYXVsdHMsIGNvbnZlcnRlZERhdGEpO1xuICB9O1xuXG4gIHZhciBkZWZhdWx0cyA9IG5ldyBEZWZhdWx0cygpO1xuXG4gIHJldHVybiBkZWZhdWx0cztcbn0pO1xuXG5TMi5kZWZpbmUoJ3NlbGVjdDIvb3B0aW9ucycsW1xuICAnanF1ZXJ5JyxcbiAgJy4vZGVmYXVsdHMnLFxuICAnLi91dGlscydcbl0sIGZ1bmN0aW9uICgkLCBEZWZhdWx0cywgVXRpbHMpIHtcbiAgZnVuY3Rpb24gT3B0aW9ucyAob3B0aW9ucywgJGVsZW1lbnQpIHtcbiAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zO1xuXG4gICAgaWYgKCRlbGVtZW50ICE9IG51bGwpIHtcbiAgICAgIHRoaXMuZnJvbUVsZW1lbnQoJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICgkZWxlbWVudCAhPSBudWxsKSB7XG4gICAgICB0aGlzLm9wdGlvbnMgPSBEZWZhdWx0cy5hcHBseUZyb21FbGVtZW50KHRoaXMub3B0aW9ucywgJGVsZW1lbnQpO1xuICAgIH1cblxuICAgIHRoaXMub3B0aW9ucyA9IERlZmF1bHRzLmFwcGx5KHRoaXMub3B0aW9ucyk7XG4gIH1cblxuICBPcHRpb25zLnByb3RvdHlwZS5mcm9tRWxlbWVudCA9IGZ1bmN0aW9uICgkZSkge1xuICAgIHZhciBleGNsdWRlZERhdGEgPSBbJ3NlbGVjdDInXTtcblxuICAgIGlmICh0aGlzLm9wdGlvbnMubXVsdGlwbGUgPT0gbnVsbCkge1xuICAgICAgdGhpcy5vcHRpb25zLm11bHRpcGxlID0gJGUucHJvcCgnbXVsdGlwbGUnKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5vcHRpb25zLmRpc2FibGVkID09IG51bGwpIHtcbiAgICAgIHRoaXMub3B0aW9ucy5kaXNhYmxlZCA9ICRlLnByb3AoJ2Rpc2FibGVkJyk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMub3B0aW9ucy5hdXRvY29tcGxldGUgPT0gbnVsbCAmJiAkZS5wcm9wKCdhdXRvY29tcGxldGUnKSkge1xuICAgICAgdGhpcy5vcHRpb25zLmF1dG9jb21wbGV0ZSA9ICRlLnByb3AoJ2F1dG9jb21wbGV0ZScpO1xuICAgIH1cblxuICAgIGlmICh0aGlzLm9wdGlvbnMuZGlyID09IG51bGwpIHtcbiAgICAgIGlmICgkZS5wcm9wKCdkaXInKSkge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJGUucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2UgaWYgKCRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJykpIHtcbiAgICAgICAgdGhpcy5vcHRpb25zLmRpciA9ICRlLmNsb3Nlc3QoJ1tkaXJdJykucHJvcCgnZGlyJyk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnMuZGlyID0gJ2x0cic7XG4gICAgICB9XG4gICAgfVxuXG4gICAgJGUucHJvcCgnZGlzYWJsZWQnLCB0aGlzLm9wdGlvbnMuZGlzYWJsZWQpO1xuICAgICRlLnByb3AoJ211bHRpcGxlJywgdGhpcy5vcHRpb25zLm11bHRpcGxlKTtcblxuICAgIGlmIChVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSkge1xuICAgICAgaWYgKHRoaXMub3B0aW9ucy5kZWJ1ZyAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLndhcm4pIHtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgICdTZWxlY3QyOiBUaGUgYGRhdGEtc2VsZWN0Mi10YWdzYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAndXNlIHRoZSBgZGF0YS1kYXRhYCBhbmQgYGRhdGEtdGFncz1cInRydWVcImAgYXR0cmlidXRlcyBhbmQgd2lsbCBiZSAnICtcbiAgICAgICAgICAncmVtb3ZlZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIFV0aWxzLlN0b3JlRGF0YSgkZVswXSwgJ2RhdGEnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnc2VsZWN0MlRhZ3MnKSk7XG4gICAgICBVdGlscy5TdG9yZURhdGEoJGVbMF0sICd0YWdzJywgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpIHtcbiAgICAgIGlmICh0aGlzLm9wdGlvbnMuZGVidWcgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICAnU2VsZWN0MjogVGhlIGBkYXRhLWFqYXgtdXJsYCBhdHRyaWJ1dGUgaGFzIGJlZW4gY2hhbmdlZCB0byAnICtcbiAgICAgICAgICAnYGRhdGEtYWpheC0tdXJsYCBhbmQgc3VwcG9ydCBmb3IgdGhlIG9sZCBhdHRyaWJ1dGUgd2lsbCBiZSByZW1vdmVkJyArXG4gICAgICAgICAgJyBpbiBmdXR1cmUgdmVyc2lvbnMgb2YgU2VsZWN0Mi4nXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgICRlLmF0dHIoJ2FqYXgtLXVybCcsIFV0aWxzLkdldERhdGEoJGVbMF0sICdhamF4VXJsJykpO1xuICAgICAgVXRpbHMuU3RvcmVEYXRhKCRlWzBdLCAnYWpheC1VcmwnLCBVdGlscy5HZXREYXRhKCRlWzBdLCAnYWpheFVybCcpKTtcbiAgICB9XG5cbiAgICB2YXIgZGF0YXNldCA9IHt9O1xuXG4gICAgZnVuY3Rpb24gdXBwZXJDYXNlTGV0dGVyKF8sIGxldHRlcikge1xuICAgICAgcmV0dXJuIGxldHRlci50b1VwcGVyQ2FzZSgpO1xuICAgIH1cblxuICAgIC8vIFByZS1sb2FkIGFsbCBvZiB0aGUgYXR0cmlidXRlcyB3aGljaCBhcmUgcHJlZml4ZWQgd2l0aCBgZGF0YS1gXG4gICAgZm9yICh2YXIgYXR0ciA9IDA7IGF0dHIgPCAkZVswXS5hdHRyaWJ1dGVzLmxlbmd0aDsgYXR0cisrKSB7XG4gICAgICB2YXIgYXR0cmlidXRlTmFtZSA9ICRlWzBdLmF0dHJpYnV0ZXNbYXR0cl0ubmFtZTtcbiAgICAgIHZhciBwcmVmaXggPSAnZGF0YS0nO1xuXG4gICAgICBpZiAoYXR0cmlidXRlTmFtZS5zdWJzdHIoMCwgcHJlZml4Lmxlbmd0aCkgPT0gcHJlZml4KSB7XG4gICAgICAgIC8vIEdldCB0aGUgY29udGVudHMgb2YgdGhlIGF0dHJpYnV0ZSBhZnRlciBgZGF0YS1gXG4gICAgICAgIHZhciBkYXRhTmFtZSA9IGF0dHJpYnV0ZU5hbWUuc3Vic3RyaW5nKHByZWZpeC5sZW5ndGgpO1xuXG4gICAgICAgIC8vIEdldCB0aGUgZGF0YSBjb250ZW50cyBmcm9tIHRoZSBjb25zaXN0ZW50IHNvdXJjZVxuICAgICAgICAvLyBUaGlzIGlzIG1vcmUgdGhhbiBsaWtlbHkgdGhlIGpRdWVyeSBkYXRhIGhlbHBlclxuICAgICAgICB2YXIgZGF0YVZhbHVlID0gVXRpbHMuR2V0RGF0YSgkZVswXSwgZGF0YU5hbWUpO1xuXG4gICAgICAgIC8vIGNhbWVsQ2FzZSB0aGUgYXR0cmlidXRlIG5hbWUgdG8gbWF0Y2ggdGhlIHNwZWNcbiAgICAgICAgdmFyIGNhbWVsRGF0YU5hbWUgPSBkYXRhTmFtZS5yZXBsYWNlKC8tKFthLXpdKS9nLCB1cHBlckNhc2VMZXR0ZXIpO1xuXG4gICAgICAgIC8vIFN0b3JlIHRoZSBkYXRhIGF0dHJpYnV0ZSBjb250ZW50cyBpbnRvIHRoZSBkYXRhc2V0IHNpbmNlXG4gICAgICAgIGRhdGFzZXRbY2FtZWxEYXRhTmFtZV0gPSBkYXRhVmFsdWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIHRoZSBlbGVtZW50J3MgYGRhdGFzZXRgIGF0dHJpYnV0ZSBpZiBpdCBleGlzdHNcbiAgICAvLyBqUXVlcnkgMS54IGRvZXMgbm90IGNvcnJlY3RseSBoYW5kbGUgZGF0YSBhdHRyaWJ1dGVzIHdpdGggbXVsdGlwbGUgZGFzaGVzXG4gICAgaWYgKCQuZm4uanF1ZXJ5ICYmICQuZm4uanF1ZXJ5LnN1YnN0cigwLCAyKSA9PSAnMS4nICYmICRlWzBdLmRhdGFzZXQpIHtcbiAgICAgIGRhdGFzZXQgPSAkLmV4dGVuZCh0cnVlLCB7fSwgJGVbMF0uZGF0YXNldCwgZGF0YXNldCk7XG4gICAgfVxuXG4gICAgLy8gUHJlZmVyIG91ciBpbnRlcm5hbCBkYXRhIGNhY2hlIGlmIGl0IGV4aXN0c1xuICAgIHZhciBkYXRhID0gJC5leHRlbmQodHJ1ZSwge30sIFV0aWxzLkdldERhdGEoJGVbMF0pLCBkYXRhc2V0KTtcblxuICAgIGRhdGEgPSBVdGlscy5fY29udmVydERhdGEoZGF0YSk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gZGF0YSkge1xuICAgICAgaWYgKGV4Y2x1ZGVkRGF0YS5pbmRleE9mKGtleSkgPiAtMSkge1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCQuaXNQbGFpbk9iamVjdCh0aGlzLm9wdGlvbnNba2V5XSkpIHtcbiAgICAgICAgJC5leHRlbmQodGhpcy5vcHRpb25zW2tleV0sIGRhdGFba2V5XSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLm9wdGlvbnNba2V5XSA9IGRhdGFba2V5XTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBPcHRpb25zLnByb3RvdHlwZS5nZXQgPSBmdW5jdGlvbiAoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1trZXldO1xuICB9O1xuXG4gIE9wdGlvbnMucHJvdG90eXBlLnNldCA9IGZ1bmN0aW9uIChrZXksIHZhbCkge1xuICAgIHRoaXMub3B0aW9uc1trZXldID0gdmFsO1xuICB9O1xuXG4gIHJldHVybiBPcHRpb25zO1xufSk7XG5cblMyLmRlZmluZSgnc2VsZWN0Mi9jb3JlJyxbXG4gICdqcXVlcnknLFxuICAnLi9vcHRpb25zJyxcbiAgJy4vdXRpbHMnLFxuICAnLi9rZXlzJ1xuXSwgZnVuY3Rpb24gKCQsIE9wdGlvbnMsIFV0aWxzLCBLRVlTKSB7XG4gIHZhciBTZWxlY3QyID0gZnVuY3Rpb24gKCRlbGVtZW50LCBvcHRpb25zKSB7XG4gICAgaWYgKFV0aWxzLkdldERhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJykgIT0gbnVsbCkge1xuICAgICAgVXRpbHMuR2V0RGF0YSgkZWxlbWVudFswXSwgJ3NlbGVjdDInKS5kZXN0cm95KCk7XG4gICAgfVxuXG4gICAgdGhpcy4kZWxlbWVudCA9ICRlbGVtZW50O1xuXG4gICAgdGhpcy5pZCA9IHRoaXMuX2dlbmVyYXRlSWQoJGVsZW1lbnQpO1xuXG4gICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICB0aGlzLm9wdGlvbnMgPSBuZXcgT3B0aW9ucyhvcHRpb25zLCAkZWxlbWVudCk7XG5cbiAgICBTZWxlY3QyLl9fc3VwZXJfXy5jb25zdHJ1Y3Rvci5jYWxsKHRoaXMpO1xuXG4gICAgLy8gU2V0IHVwIHRoZSB0YWJpbmRleFxuXG4gICAgdmFyIHRhYmluZGV4ID0gJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnKSB8fCAwO1xuICAgIFV0aWxzLlN0b3JlRGF0YSgkZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcsIHRhYmluZGV4KTtcbiAgICAkZWxlbWVudC5hdHRyKCd0YWJpbmRleCcsICctMScpO1xuXG4gICAgLy8gU2V0IHVwIGNvbnRhaW5lcnMgYW5kIGFkYXB0ZXJzXG5cbiAgICB2YXIgRGF0YUFkYXB0ZXIgPSB0aGlzLm9wdGlvbnMuZ2V0KCdkYXRhQWRhcHRlcicpO1xuICAgIHRoaXMuZGF0YUFkYXB0ZXIgPSBuZXcgRGF0YUFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG5cbiAgICB2YXIgJGNvbnRhaW5lciA9IHRoaXMucmVuZGVyKCk7XG5cbiAgICB0aGlzLl9wbGFjZUNvbnRhaW5lcigkY29udGFpbmVyKTtcblxuICAgIHZhciBTZWxlY3Rpb25BZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgnc2VsZWN0aW9uQWRhcHRlcicpO1xuICAgIHRoaXMuc2VsZWN0aW9uID0gbmV3IFNlbGVjdGlvbkFkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucyk7XG4gICAgdGhpcy4kc2VsZWN0aW9uID0gdGhpcy5zZWxlY3Rpb24ucmVuZGVyKCk7XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5wb3NpdGlvbih0aGlzLiRzZWxlY3Rpb24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIERyb3Bkb3duQWRhcHRlciA9IHRoaXMub3B0aW9ucy5nZXQoJ2Ryb3Bkb3duQWRhcHRlcicpO1xuICAgIHRoaXMuZHJvcGRvd24gPSBuZXcgRHJvcGRvd25BZGFwdGVyKCRlbGVtZW50LCB0aGlzLm9wdGlvbnMpO1xuICAgIHRoaXMuJGRyb3Bkb3duID0gdGhpcy5kcm9wZG93bi5yZW5kZXIoKTtcblxuICAgIHRoaXMuZHJvcGRvd24ucG9zaXRpb24odGhpcy4kZHJvcGRvd24sICRjb250YWluZXIpO1xuXG4gICAgdmFyIFJlc3VsdHNBZGFwdGVyID0gdGhpcy5vcHRpb25zLmdldCgncmVzdWx0c0FkYXB0ZXInKTtcbiAgICB0aGlzLnJlc3VsdHMgPSBuZXcgUmVzdWx0c0FkYXB0ZXIoJGVsZW1lbnQsIHRoaXMub3B0aW9ucywgdGhpcy5kYXRhQWRhcHRlcik7XG4gICAgdGhpcy4kcmVzdWx0cyA9IHRoaXMucmVzdWx0cy5yZW5kZXIoKTtcblxuICAgIHRoaXMucmVzdWx0cy5wb3NpdGlvbih0aGlzLiRyZXN1bHRzLCB0aGlzLiRkcm9wZG93bik7XG5cbiAgICAvLyBCaW5kIGV2ZW50c1xuXG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgLy8gQmluZCB0aGUgY29udGFpbmVyIHRvIGFsbCBvZiB0aGUgYWRhcHRlcnNcbiAgICB0aGlzLl9iaW5kQWRhcHRlcnMoKTtcblxuICAgIC8vIFJlZ2lzdGVyIGFueSBET00gZXZlbnQgaGFuZGxlcnNcbiAgICB0aGlzLl9yZWdpc3RlckRvbUV2ZW50cygpO1xuXG4gICAgLy8gUmVnaXN0ZXIgYW55IGludGVybmFsIGV2ZW50IGhhbmRsZXJzXG4gICAgdGhpcy5fcmVnaXN0ZXJEYXRhRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMoKTtcbiAgICB0aGlzLl9yZWdpc3RlckRyb3Bkb3duRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJSZXN1bHRzRXZlbnRzKCk7XG4gICAgdGhpcy5fcmVnaXN0ZXJFdmVudHMoKTtcblxuICAgIC8vIFNldCB0aGUgaW5pdGlhbCBzdGF0ZVxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoaW5pdGlhbERhdGEpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignc2VsZWN0aW9uOnVwZGF0ZScsIHtcbiAgICAgICAgZGF0YTogaW5pdGlhbERhdGFcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgLy8gSGlkZSB0aGUgb3JpZ2luYWwgc2VsZWN0XG4gICAgJGVsZW1lbnRbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgICRlbGVtZW50LmF0dHIoJ2FyaWEtaGlkZGVuJywgJ3RydWUnKTtcblxuICAgIC8vIFN5bmNocm9uaXplIGFueSBtb25pdG9yZWQgYXR0cmlidXRlc1xuICAgIHRoaXMuX3N5bmNBdHRyaWJ1dGVzKCk7XG5cbiAgICBVdGlscy5TdG9yZURhdGEoJGVsZW1lbnRbMF0sICdzZWxlY3QyJywgdGhpcyk7XG5cbiAgICAvLyBFbnN1cmUgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aCAkZWxlbWVudC5kYXRhKCdzZWxlY3QyJykuXG4gICAgJGVsZW1lbnQuZGF0YSgnc2VsZWN0MicsIHRoaXMpO1xuICB9O1xuXG4gIFV0aWxzLkV4dGVuZChTZWxlY3QyLCBVdGlscy5PYnNlcnZhYmxlKTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fZ2VuZXJhdGVJZCA9IGZ1bmN0aW9uICgkZWxlbWVudCkge1xuICAgIHZhciBpZCA9ICcnO1xuXG4gICAgaWYgKCRlbGVtZW50LmF0dHIoJ2lkJykgIT0gbnVsbCkge1xuICAgICAgaWQgPSAkZWxlbWVudC5hdHRyKCdpZCcpO1xuICAgIH0gZWxzZSBpZiAoJGVsZW1lbnQuYXR0cignbmFtZScpICE9IG51bGwpIHtcbiAgICAgIGlkID0gJGVsZW1lbnQuYXR0cignbmFtZScpICsgJy0nICsgVXRpbHMuZ2VuZXJhdGVDaGFycygyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaWQgPSBVdGlscy5nZW5lcmF0ZUNoYXJzKDQpO1xuICAgIH1cblxuICAgIGlkID0gaWQucmVwbGFjZSgvKDp8XFwufFxcW3xcXF18LCkvZywgJycpO1xuICAgIGlkID0gJ3NlbGVjdDItJyArIGlkO1xuXG4gICAgcmV0dXJuIGlkO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9wbGFjZUNvbnRhaW5lciA9IGZ1bmN0aW9uICgkY29udGFpbmVyKSB7XG4gICAgJGNvbnRhaW5lci5pbnNlcnRBZnRlcih0aGlzLiRlbGVtZW50KTtcblxuICAgIHZhciB3aWR0aCA9IHRoaXMuX3Jlc29sdmVXaWR0aCh0aGlzLiRlbGVtZW50LCB0aGlzLm9wdGlvbnMuZ2V0KCd3aWR0aCcpKTtcblxuICAgIGlmICh3aWR0aCAhPSBudWxsKSB7XG4gICAgICAkY29udGFpbmVyLmNzcygnd2lkdGgnLCB3aWR0aCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZXNvbHZlV2lkdGggPSBmdW5jdGlvbiAoJGVsZW1lbnQsIG1ldGhvZCkge1xuICAgIHZhciBXSURUSCA9IC9ed2lkdGg6KChbLStdPyhbMC05XSpcXC4pP1swLTldKykocHh8ZW18ZXh8JXxpbnxjbXxtbXxwdHxwYykpL2k7XG5cbiAgICBpZiAobWV0aG9kID09ICdyZXNvbHZlJykge1xuICAgICAgdmFyIHN0eWxlV2lkdGggPSB0aGlzLl9yZXNvbHZlV2lkdGgoJGVsZW1lbnQsICdzdHlsZScpO1xuXG4gICAgICBpZiAoc3R5bGVXaWR0aCAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdHlsZVdpZHRoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5fcmVzb2x2ZVdpZHRoKCRlbGVtZW50LCAnZWxlbWVudCcpO1xuICAgIH1cblxuICAgIGlmIChtZXRob2QgPT0gJ2VsZW1lbnQnKSB7XG4gICAgICB2YXIgZWxlbWVudFdpZHRoID0gJGVsZW1lbnQub3V0ZXJXaWR0aChmYWxzZSk7XG5cbiAgICAgIGlmIChlbGVtZW50V2lkdGggPD0gMCkge1xuICAgICAgICByZXR1cm4gJ2F1dG8nO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gZWxlbWVudFdpZHRoICsgJ3B4JztcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdzdHlsZScpIHtcbiAgICAgIHZhciBzdHlsZSA9ICRlbGVtZW50LmF0dHIoJ3N0eWxlJyk7XG5cbiAgICAgIGlmICh0eXBlb2Yoc3R5bGUpICE9PSAnc3RyaW5nJykge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH1cblxuICAgICAgdmFyIGF0dHJzID0gc3R5bGUuc3BsaXQoJzsnKTtcblxuICAgICAgZm9yICh2YXIgaSA9IDAsIGwgPSBhdHRycy5sZW5ndGg7IGkgPCBsOyBpID0gaSArIDEpIHtcbiAgICAgICAgdmFyIGF0dHIgPSBhdHRyc1tpXS5yZXBsYWNlKC9cXHMvZywgJycpO1xuICAgICAgICB2YXIgbWF0Y2hlcyA9IGF0dHIubWF0Y2goV0lEVEgpO1xuXG4gICAgICAgIGlmIChtYXRjaGVzICE9PSBudWxsICYmIG1hdGNoZXMubGVuZ3RoID49IDEpIHtcbiAgICAgICAgICByZXR1cm4gbWF0Y2hlc1sxXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBpZiAobWV0aG9kID09ICdjb21wdXRlZHN0eWxlJykge1xuICAgICAgdmFyIGNvbXB1dGVkU3R5bGUgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSgkZWxlbWVudFswXSk7XG5cbiAgICAgIHJldHVybiBjb21wdXRlZFN0eWxlLndpZHRoO1xuICAgIH1cblxuICAgIHJldHVybiBtZXRob2Q7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2JpbmRBZGFwdGVycyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmRhdGFBZGFwdGVyLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnNlbGVjdGlvbi5iaW5kKHRoaXMsIHRoaXMuJGNvbnRhaW5lcik7XG5cbiAgICB0aGlzLmRyb3Bkb3duLmJpbmQodGhpcywgdGhpcy4kY29udGFpbmVyKTtcbiAgICB0aGlzLnJlc3VsdHMuYmluZCh0aGlzLCB0aGlzLiRjb250YWluZXIpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9yZWdpc3RlckRvbUV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLiRlbGVtZW50Lm9uKCdjaGFuZ2Uuc2VsZWN0MicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogZGF0YVxuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy4kZWxlbWVudC5vbignZm9jdXMuc2VsZWN0MicsIGZ1bmN0aW9uIChldnQpIHtcbiAgICAgIHNlbGYudHJpZ2dlcignZm9jdXMnLCBldnQpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5fc3luY0EgPSBVdGlscy5iaW5kKHRoaXMuX3N5bmNBdHRyaWJ1dGVzLCB0aGlzKTtcbiAgICB0aGlzLl9zeW5jUyA9IFV0aWxzLmJpbmQodGhpcy5fc3luY1N1YnRyZWUsIHRoaXMpO1xuXG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBuZXcgd2luZG93Lk11dGF0aW9uT2JzZXJ2ZXIoZnVuY3Rpb24gKG11dGF0aW9ucykge1xuICAgICAgc2VsZi5fc3luY0EoKTtcbiAgICAgIHNlbGYuX3N5bmNTKG11dGF0aW9ucyk7XG4gICAgfSk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIub2JzZXJ2ZSh0aGlzLiRlbGVtZW50WzBdLCB7XG4gICAgICBhdHRyaWJ1dGVzOiB0cnVlLFxuICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgc3VidHJlZTogZmFsc2VcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEYXRhRXZlbnRzID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzZWxmID0gdGhpcztcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJTZWxlY3Rpb25FdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuICAgIHZhciBub25SZWxheUV2ZW50cyA9IFsndG9nZ2xlJywgJ2ZvY3VzJ107XG5cbiAgICB0aGlzLnNlbGVjdGlvbi5vbigndG9nZ2xlJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi50b2dnbGVEcm9wZG93bigpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJ2ZvY3VzJywgZnVuY3Rpb24gKHBhcmFtcykge1xuICAgICAgc2VsZi5mb2N1cyhwYXJhbXMpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5zZWxlY3Rpb24ub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBpZiAobm9uUmVsYXlFdmVudHMuaW5kZXhPZihuYW1lKSAhPT0gLTEpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJEcm9wZG93bkV2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLmRyb3Bkb3duLm9uKCcqJywgZnVuY3Rpb24gKG5hbWUsIHBhcmFtcykge1xuICAgICAgc2VsZi50cmlnZ2VyKG5hbWUsIHBhcmFtcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX3JlZ2lzdGVyUmVzdWx0c0V2ZW50cyA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICB0aGlzLnJlc3VsdHMub24oJyonLCBmdW5jdGlvbiAobmFtZSwgcGFyYW1zKSB7XG4gICAgICBzZWxmLnRyaWdnZXIobmFtZSwgcGFyYW1zKTtcbiAgICB9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5fcmVnaXN0ZXJFdmVudHMgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgdGhpcy5vbignb3BlbicsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QuYWRkKCdzZWxlY3QyLWNvbnRhaW5lci0tb3BlbicpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbignY2xvc2UnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2VuYWJsZScsIGZ1bmN0aW9uICgpIHtcbiAgICAgIHNlbGYuJGNvbnRhaW5lclswXS5jbGFzc0xpc3QucmVtb3ZlKCdzZWxlY3QyLWNvbnRhaW5lci0tZGlzYWJsZWQnKTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ2Rpc2FibGUnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBzZWxmLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWRpc2FibGVkJyk7XG4gICAgfSk7XG5cbiAgICB0aGlzLm9uKCdibHVyJywgZnVuY3Rpb24gKCkge1xuICAgICAgc2VsZi4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5yZW1vdmUoJ3NlbGVjdDItY29udGFpbmVyLS1mb2N1cycpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigncXVlcnknLCBmdW5jdGlvbiAocGFyYW1zKSB7XG4gICAgICBpZiAoIXNlbGYuaXNPcGVuKCkpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdvcGVuJywge30pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmRhdGFBZGFwdGVyLnF1ZXJ5KHBhcmFtcywgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOmFsbCcsIHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHF1ZXJ5OiBwYXJhbXNcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9KTtcblxuICAgIHRoaXMub24oJ3F1ZXJ5OmFwcGVuZCcsIGZ1bmN0aW9uIChwYXJhbXMpIHtcbiAgICAgIHRoaXMuZGF0YUFkYXB0ZXIucXVlcnkocGFyYW1zLCBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6YXBwZW5kJywge1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgcXVlcnk6IHBhcmFtc1xuICAgICAgICB9KTtcbiAgICAgIH0pO1xuICAgIH0pO1xuXG4gICAgdGhpcy5vbigna2V5cHJlc3MnLCBmdW5jdGlvbiAoZXZ0KSB7XG4gICAgICB2YXIga2V5ID0gZXZ0LndoaWNoO1xuXG4gICAgICBpZiAoc2VsZi5pc09wZW4oKSkge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVTQyB8fCAoa2V5ID09PSBLRVlTLlVQICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5jbG9zZShldnQpO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5UQUIpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6c2VsZWN0Jywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoKGtleSA9PT0gS0VZUy5TUEFDRSAmJiBldnQuY3RybEtleSkpIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6dG9nZ2xlJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLlVQKSB7XG4gICAgICAgICAgc2VsZi50cmlnZ2VyKCdyZXN1bHRzOnByZXZpb3VzJywge30pO1xuXG4gICAgICAgICAgZXZ0LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH0gZWxzZSBpZiAoa2V5ID09PSBLRVlTLkRPV04pIHtcbiAgICAgICAgICBzZWxmLnRyaWdnZXIoJ3Jlc3VsdHM6bmV4dCcsIHt9KTtcblxuICAgICAgICAgIGV2dC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoa2V5ID09PSBLRVlTLkVOVEVSIHx8IGtleSA9PT0gS0VZUy5TUEFDRSB8fFxuICAgICAgICAgICAgKGtleSA9PT0gS0VZUy5ET1dOICYmIGV2dC5hbHRLZXkpKSB7XG4gICAgICAgICAgc2VsZi5vcGVuKCk7XG5cbiAgICAgICAgICBldnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jQXR0cmlidXRlcyA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLm9wdGlvbnMuc2V0KCdkaXNhYmxlZCcsIHRoaXMuJGVsZW1lbnQucHJvcCgnZGlzYWJsZWQnKSk7XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIGlmICh0aGlzLmlzT3BlbigpKSB7XG4gICAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy50cmlnZ2VyKCdkaXNhYmxlJywge30pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnRyaWdnZXIoJ2VuYWJsZScsIHt9KTtcbiAgICB9XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuX2lzQ2hhbmdlTXV0YXRpb24gPSBmdW5jdGlvbiAobXV0YXRpb25zKSB7XG4gICAgdmFyIHNlbGYgPSB0aGlzO1xuXG4gICAgaWYgKG11dGF0aW9ucy5hZGRlZE5vZGVzICYmIG11dGF0aW9ucy5hZGRlZE5vZGVzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAodmFyIG4gPSAwOyBuIDwgbXV0YXRpb25zLmFkZGVkTm9kZXMubGVuZ3RoOyBuKyspIHtcbiAgICAgICAgdmFyIG5vZGUgPSBtdXRhdGlvbnMuYWRkZWROb2Rlc1tuXTtcblxuICAgICAgICBpZiAobm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChtdXRhdGlvbnMucmVtb3ZlZE5vZGVzICYmIG11dGF0aW9ucy5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KG11dGF0aW9ucykpIHtcbiAgICAgIHJldHVybiBtdXRhdGlvbnMuc29tZShmdW5jdGlvbiAobXV0YXRpb24pIHtcbiAgICAgICAgcmV0dXJuIHNlbGYuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb24pO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLl9zeW5jU3VidHJlZSA9IGZ1bmN0aW9uIChtdXRhdGlvbnMpIHtcbiAgICB2YXIgY2hhbmdlZCA9IHRoaXMuX2lzQ2hhbmdlTXV0YXRpb24obXV0YXRpb25zKTtcbiAgICB2YXIgc2VsZiA9IHRoaXM7XG5cbiAgICAvLyBPbmx5IHJlLXB1bGwgdGhlIGRhdGEgaWYgd2UgdGhpbmsgdGhlcmUgaXMgYSBjaGFuZ2VcbiAgICBpZiAoY2hhbmdlZCkge1xuICAgICAgdGhpcy5kYXRhQWRhcHRlci5jdXJyZW50KGZ1bmN0aW9uIChjdXJyZW50RGF0YSkge1xuICAgICAgICBzZWxmLnRyaWdnZXIoJ3NlbGVjdGlvbjp1cGRhdGUnLCB7XG4gICAgICAgICAgZGF0YTogY3VycmVudERhdGFcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgLyoqXG4gICAqIE92ZXJyaWRlIHRoZSB0cmlnZ2VyIG1ldGhvZCB0byBhdXRvbWF0aWNhbGx5IHRyaWdnZXIgcHJlLWV2ZW50cyB3aGVuXG4gICAqIHRoZXJlIGFyZSBldmVudHMgdGhhdCBjYW4gYmUgcHJldmVudGVkLlxuICAgKi9cbiAgU2VsZWN0Mi5wcm90b3R5cGUudHJpZ2dlciA9IGZ1bmN0aW9uIChuYW1lLCBhcmdzKSB7XG4gICAgdmFyIGFjdHVhbFRyaWdnZXIgPSBTZWxlY3QyLl9fc3VwZXJfXy50cmlnZ2VyO1xuICAgIHZhciBwcmVUcmlnZ2VyTWFwID0ge1xuICAgICAgJ29wZW4nOiAnb3BlbmluZycsXG4gICAgICAnY2xvc2UnOiAnY2xvc2luZycsXG4gICAgICAnc2VsZWN0JzogJ3NlbGVjdGluZycsXG4gICAgICAndW5zZWxlY3QnOiAndW5zZWxlY3RpbmcnLFxuICAgICAgJ2NsZWFyJzogJ2NsZWFyaW5nJ1xuICAgIH07XG5cbiAgICBpZiAoYXJncyA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICBhcmdzID0ge307XG4gICAgfVxuXG4gICAgaWYgKG5hbWUgaW4gcHJlVHJpZ2dlck1hcCkge1xuICAgICAgdmFyIHByZVRyaWdnZXJOYW1lID0gcHJlVHJpZ2dlck1hcFtuYW1lXTtcbiAgICAgIHZhciBwcmVUcmlnZ2VyQXJncyA9IHtcbiAgICAgICAgcHJldmVudGVkOiBmYWxzZSxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgYXJnczogYXJnc1xuICAgICAgfTtcblxuICAgICAgYWN0dWFsVHJpZ2dlci5jYWxsKHRoaXMsIHByZVRyaWdnZXJOYW1lLCBwcmVUcmlnZ2VyQXJncyk7XG5cbiAgICAgIGlmIChwcmVUcmlnZ2VyQXJncy5wcmV2ZW50ZWQpIHtcbiAgICAgICAgYXJncy5wcmV2ZW50ZWQgPSB0cnVlO1xuXG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBhY3R1YWxUcmlnZ2VyLmNhbGwodGhpcywgbmFtZSwgYXJncyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUudG9nZ2xlRHJvcGRvd24gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNEaXNhYmxlZCgpKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHRoaXMuY2xvc2UoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5vcGVuKCk7XG4gICAgfVxuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLm9wZW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuaXNPcGVuKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5pc0Rpc2FibGVkKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLnRyaWdnZXIoJ3F1ZXJ5Jywge30pO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmNsb3NlID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmICghdGhpcy5pc09wZW4oKSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHRoaXMudHJpZ2dlcignY2xvc2UnLCB7IG9yaWdpbmFsRXZlbnQgOiBldnQgfSk7XG4gIH07XG5cbiAgLyoqXG4gICAqIEhlbHBlciBtZXRob2QgdG8gYWJzdHJhY3QgdGhlIFwiZW5hYmxlZFwiIChub3QgXCJkaXNhYmxlZFwiKSBzdGF0ZSBvZiB0aGlzXG4gICAqIG9iamVjdC5cbiAgICpcbiAgICogQHJldHVybiB7dHJ1ZX0gaWYgdGhlIGluc3RhbmNlIGlzIG5vdCBkaXNhYmxlZC5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBpbnN0YW5jZSBpcyBkaXNhYmxlZC5cbiAgICovXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzRW5hYmxlZCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gIXRoaXMuaXNEaXNhYmxlZCgpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBIZWxwZXIgbWV0aG9kIHRvIGFic3RyYWN0IHRoZSBcImRpc2FibGVkXCIgc3RhdGUgb2YgdGhpcyBvYmplY3QuXG4gICAqXG4gICAqIEByZXR1cm4ge3RydWV9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgdHJ1ZS5cbiAgICogQHJldHVybiB7ZmFsc2V9IGlmIHRoZSBkaXNhYmxlZCBvcHRpb24gaXMgZmFsc2UuXG4gICAqL1xuICBTZWxlY3QyLnByb3RvdHlwZS5pc0Rpc2FibGVkID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMuZ2V0KCdkaXNhYmxlZCcpO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLmlzT3BlbiA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLW9wZW4nKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5oYXNGb2N1cyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdC5jb250YWlucygnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gIH07XG5cbiAgU2VsZWN0Mi5wcm90b3R5cGUuZm9jdXMgPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgIC8vIE5vIG5lZWQgdG8gcmUtdHJpZ2dlciBmb2N1cyBldmVudHMgaWYgd2UgYXJlIGFscmVhZHkgZm9jdXNlZFxuICAgIGlmICh0aGlzLmhhc0ZvY3VzKCkpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB0aGlzLiRjb250YWluZXJbMF0uY2xhc3NMaXN0LmFkZCgnc2VsZWN0Mi1jb250YWluZXItLWZvY3VzJyk7XG4gICAgdGhpcy50cmlnZ2VyKCdmb2N1cycsIHt9KTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5lbmFibGUgPSBmdW5jdGlvbiAoYXJncykge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogVGhlIGBzZWxlY3QyKFwiZW5hYmxlXCIpYCBtZXRob2QgaGFzIGJlZW4gZGVwcmVjYXRlZCBhbmQgd2lsbCcgK1xuICAgICAgICAnIGJlIHJlbW92ZWQgaW4gbGF0ZXIgU2VsZWN0MiB2ZXJzaW9ucy4gVXNlICRlbGVtZW50LnByb3AoXCJkaXNhYmxlZFwiKScgK1xuICAgICAgICAnIGluc3RlYWQuJ1xuICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoYXJncyA9PSBudWxsIHx8IGFyZ3MubGVuZ3RoID09PSAwKSB7XG4gICAgICBhcmdzID0gW3RydWVdO1xuICAgIH1cblxuICAgIHZhciBkaXNhYmxlZCA9ICFhcmdzWzBdO1xuXG4gICAgdGhpcy4kZWxlbWVudC5wcm9wKCdkaXNhYmxlZCcsIGRpc2FibGVkKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kYXRhID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICh0aGlzLm9wdGlvbnMuZ2V0KCdkZWJ1ZycpICYmXG4gICAgICAgIGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIHdpbmRvdy5jb25zb2xlICYmIGNvbnNvbGUud2Fybikge1xuICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAnU2VsZWN0MjogRGF0YSBjYW4gbm8gbG9uZ2VyIGJlIHNldCB1c2luZyBgc2VsZWN0MihcImRhdGFcIilgLiBZb3UgJyArXG4gICAgICAgICdzaG91bGQgY29uc2lkZXIgc2V0dGluZyB0aGUgdmFsdWUgaW5zdGVhZCB1c2luZyBgJGVsZW1lbnQudmFsKClgLidcbiAgICAgICk7XG4gICAgfVxuXG4gICAgdmFyIGRhdGEgPSBbXTtcblxuICAgIHRoaXMuZGF0YUFkYXB0ZXIuY3VycmVudChmdW5jdGlvbiAoY3VycmVudERhdGEpIHtcbiAgICAgIGRhdGEgPSBjdXJyZW50RGF0YTtcbiAgICB9KTtcblxuICAgIHJldHVybiBkYXRhO1xuICB9O1xuXG4gIFNlbGVjdDIucHJvdG90eXBlLnZhbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgaWYgKHRoaXMub3B0aW9ucy5nZXQoJ2RlYnVnJykgJiYgd2luZG93LmNvbnNvbGUgJiYgY29uc29sZS53YXJuKSB7XG4gICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICdTZWxlY3QyOiBUaGUgYHNlbGVjdDIoXCJ2YWxcIilgIG1ldGhvZCBoYXMgYmVlbiBkZXByZWNhdGVkIGFuZCB3aWxsIGJlJyArXG4gICAgICAgICcgcmVtb3ZlZCBpbiBsYXRlciBTZWxlY3QyIHZlcnNpb25zLiBVc2UgJGVsZW1lbnQudmFsKCkgaW5zdGVhZC4nXG4gICAgICApO1xuICAgIH1cblxuICAgIGlmIChhcmdzID09IG51bGwgfHwgYXJncy5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGlzLiRlbGVtZW50LnZhbCgpO1xuICAgIH1cblxuICAgIHZhciBuZXdWYWwgPSBhcmdzWzBdO1xuXG4gICAgaWYgKEFycmF5LmlzQXJyYXkobmV3VmFsKSkge1xuICAgICAgbmV3VmFsID0gbmV3VmFsLm1hcChmdW5jdGlvbiAob2JqKSB7XG4gICAgICAgIHJldHVybiBvYmoudG9TdHJpbmcoKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMuJGVsZW1lbnQudmFsKG5ld1ZhbCkudHJpZ2dlcignaW5wdXQnKS50cmlnZ2VyKCdjaGFuZ2UnKTtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIFV0aWxzLlJlbW92ZURhdGEodGhpcy4kY29udGFpbmVyWzBdKTtcbiAgICB0aGlzLiRjb250YWluZXIucmVtb3ZlKCk7XG5cbiAgICB0aGlzLl9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgdGhpcy5fb2JzZXJ2ZXIgPSBudWxsO1xuXG4gICAgdGhpcy5fc3luY0EgPSBudWxsO1xuICAgIHRoaXMuX3N5bmNTID0gbnVsbDtcblxuICAgIHRoaXMuJGVsZW1lbnQub2ZmKCcuc2VsZWN0MicpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cigndGFiaW5kZXgnLFxuICAgIFV0aWxzLkdldERhdGEodGhpcy4kZWxlbWVudFswXSwgJ29sZC10YWJpbmRleCcpKTtcblxuICAgIHRoaXMuJGVsZW1lbnRbMF0uY2xhc3NMaXN0LnJlbW92ZSgnc2VsZWN0Mi1oaWRkZW4tYWNjZXNzaWJsZScpO1xuICAgIHRoaXMuJGVsZW1lbnQuYXR0cignYXJpYS1oaWRkZW4nLCAnZmFsc2UnKTtcbiAgICBVdGlscy5SZW1vdmVEYXRhKHRoaXMuJGVsZW1lbnRbMF0pO1xuICAgIHRoaXMuJGVsZW1lbnQucmVtb3ZlRGF0YSgnc2VsZWN0MicpO1xuXG4gICAgdGhpcy5kYXRhQWRhcHRlci5kZXN0cm95KCk7XG4gICAgdGhpcy5zZWxlY3Rpb24uZGVzdHJveSgpO1xuICAgIHRoaXMuZHJvcGRvd24uZGVzdHJveSgpO1xuICAgIHRoaXMucmVzdWx0cy5kZXN0cm95KCk7XG5cbiAgICB0aGlzLmRhdGFBZGFwdGVyID0gbnVsbDtcbiAgICB0aGlzLnNlbGVjdGlvbiA9IG51bGw7XG4gICAgdGhpcy5kcm9wZG93biA9IG51bGw7XG4gICAgdGhpcy5yZXN1bHRzID0gbnVsbDtcbiAgfTtcblxuICBTZWxlY3QyLnByb3RvdHlwZS5yZW5kZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyICRjb250YWluZXIgPSAkKFxuICAgICAgJzxzcGFuIGNsYXNzPVwic2VsZWN0MiBzZWxlY3QyLWNvbnRhaW5lclwiPicgK1xuICAgICAgICAnPHNwYW4gY2xhc3M9XCJzZWxlY3Rpb25cIj48L3NwYW4+JyArXG4gICAgICAgICc8c3BhbiBjbGFzcz1cImRyb3Bkb3duLXdyYXBwZXJcIiBhcmlhLWhpZGRlbj1cInRydWVcIj48L3NwYW4+JyArXG4gICAgICAnPC9zcGFuPidcbiAgICApO1xuXG4gICAgJGNvbnRhaW5lci5hdHRyKCdkaXInLCB0aGlzLm9wdGlvbnMuZ2V0KCdkaXInKSk7XG5cbiAgICB0aGlzLiRjb250YWluZXIgPSAkY29udGFpbmVyO1xuXG4gICAgdGhpcy4kY29udGFpbmVyWzBdLmNsYXNzTGlzdFxuICAgICAgLmFkZCgnc2VsZWN0Mi1jb250YWluZXItLScgKyB0aGlzLm9wdGlvbnMuZ2V0KCd0aGVtZScpKTtcblxuICAgIFV0aWxzLlN0b3JlRGF0YSgkY29udGFpbmVyWzBdLCAnZWxlbWVudCcsIHRoaXMuJGVsZW1lbnQpO1xuXG4gICAgcmV0dXJuICRjb250YWluZXI7XG4gIH07XG5cbiAgcmV0dXJuIFNlbGVjdDI7XG59KTtcblxuUzIuZGVmaW5lKCdqcXVlcnktbW91c2V3aGVlbCcsW1xuICAnanF1ZXJ5J1xuXSwgZnVuY3Rpb24gKCQpIHtcbiAgLy8gVXNlZCB0byBzaGltIGpRdWVyeS5tb3VzZXdoZWVsIGZvciBub24tZnVsbCBidWlsZHMuXG4gIHJldHVybiAkO1xufSk7XG5cblMyLmRlZmluZSgnanF1ZXJ5LnNlbGVjdDInLFtcbiAgJ2pxdWVyeScsXG4gICdqcXVlcnktbW91c2V3aGVlbCcsXG5cbiAgJy4vc2VsZWN0Mi9jb3JlJyxcbiAgJy4vc2VsZWN0Mi9kZWZhdWx0cycsXG4gICcuL3NlbGVjdDIvdXRpbHMnXG5dLCBmdW5jdGlvbiAoJCwgXywgU2VsZWN0MiwgRGVmYXVsdHMsIFV0aWxzKSB7XG4gIGlmICgkLmZuLnNlbGVjdDIgPT0gbnVsbCkge1xuICAgIC8vIEFsbCBtZXRob2RzIHRoYXQgc2hvdWxkIHJldHVybiB0aGUgZWxlbWVudFxuICAgIHZhciB0aGlzTWV0aG9kcyA9IFsnb3BlbicsICdjbG9zZScsICdkZXN0cm95J107XG5cbiAgICAkLmZuLnNlbGVjdDIgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgICAgIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2VPcHRpb25zID0gJC5leHRlbmQodHJ1ZSwge30sIG9wdGlvbnMpO1xuXG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gbmV3IFNlbGVjdDIoJCh0aGlzKSwgaW5zdGFuY2VPcHRpb25zKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgICAgICB2YXIgcmV0O1xuICAgICAgICB2YXIgYXJncyA9IEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywgMSk7XG5cbiAgICAgICAgdGhpcy5lYWNoKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSBVdGlscy5HZXREYXRhKHRoaXMsICdzZWxlY3QyJyk7XG5cbiAgICAgICAgICBpZiAoaW5zdGFuY2UgPT0gbnVsbCAmJiB3aW5kb3cuY29uc29sZSAmJiBjb25zb2xlLmVycm9yKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFxuICAgICAgICAgICAgICAnVGhlIHNlbGVjdDIoXFwnJyArIG9wdGlvbnMgKyAnXFwnKSBtZXRob2Qgd2FzIGNhbGxlZCBvbiBhbiAnICtcbiAgICAgICAgICAgICAgJ2VsZW1lbnQgdGhhdCBpcyBub3QgdXNpbmcgU2VsZWN0Mi4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJldCA9IGluc3RhbmNlW29wdGlvbnNdLmFwcGx5KGluc3RhbmNlLCBhcmdzKTtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgLy8gQ2hlY2sgaWYgd2Ugc2hvdWxkIGJlIHJldHVybmluZyBgdGhpc2BcbiAgICAgICAgaWYgKHRoaXNNZXRob2RzLmluZGV4T2Yob3B0aW9ucykgPiAtMSkge1xuICAgICAgICAgIHJldHVybiB0aGlzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJldDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBhcmd1bWVudHMgZm9yIFNlbGVjdDI6ICcgKyBvcHRpb25zKTtcbiAgICAgIH1cbiAgICB9O1xuICB9XG5cbiAgaWYgKCQuZm4uc2VsZWN0Mi5kZWZhdWx0cyA9PSBudWxsKSB7XG4gICAgJC5mbi5zZWxlY3QyLmRlZmF1bHRzID0gRGVmYXVsdHM7XG4gIH1cblxuICByZXR1cm4gU2VsZWN0Mjtcbn0pO1xuXG4gIC8vIFJldHVybiB0aGUgQU1EIGxvYWRlciBjb25maWd1cmF0aW9uIHNvIGl0IGNhbiBiZSB1c2VkIG91dHNpZGUgb2YgdGhpcyBmaWxlXG4gIHJldHVybiB7XG4gICAgZGVmaW5lOiBTMi5kZWZpbmUsXG4gICAgcmVxdWlyZTogUzIucmVxdWlyZVxuICB9O1xufSgpKTtcblxuICAvLyBBdXRvbG9hZCB0aGUgalF1ZXJ5IGJpbmRpbmdzXG4gIC8vIFdlIGtub3cgdGhhdCBhbGwgb2YgdGhlIG1vZHVsZXMgZXhpc3QgYWJvdmUgdGhpcywgc28gd2UncmUgc2FmZVxuICB2YXIgc2VsZWN0MiA9IFMyLnJlcXVpcmUoJ2pxdWVyeS5zZWxlY3QyJyk7XG5cbiAgLy8gSG9sZCB0aGUgQU1EIG1vZHVsZSByZWZlcmVuY2VzIG9uIHRoZSBqUXVlcnkgZnVuY3Rpb24gdGhhdCB3YXMganVzdCBsb2FkZWRcbiAgLy8gVGhpcyBhbGxvd3MgU2VsZWN0MiB0byB1c2UgdGhlIGludGVybmFsIGxvYWRlciBvdXRzaWRlIG9mIHRoaXMgZmlsZSwgc3VjaFxuICAvLyBhcyBpbiB0aGUgbGFuZ3VhZ2UgZmlsZXMuXG4gIGpRdWVyeS5mbi5zZWxlY3QyLmFtZCA9IFMyO1xuXG4gIC8vIFJldHVybiB0aGUgU2VsZWN0MiBpbnN0YW5jZSBmb3IgYW55b25lIHdobyBpcyBpbXBvcnRpbmcgaXQuXG4gIHJldHVybiBzZWxlY3QyO1xufSkpO1xuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/public/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7.js b/public/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7.js deleted file mode 100644 index d6a65cb6..00000000 --- a/public/build/vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7.js +++ /dev/null @@ -1,16008 +0,0 @@ -(self["webpackChunk"] = self["webpackChunk"] || []).push([["vendors-node_modules_bootstrap-autocomplete_dist_latest_bootstrap-autocomplete_js-node_module-e054e7"],{ - -/***/ "./node_modules/@popperjs/core/lib/createPopper.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/createPopper.js ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "createPopper": () => (/* binding */ createPopper), -/* harmony export */ "detectOverflow": () => (/* reexport safe */ _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__["default"]), -/* harmony export */ "popperGenerator": () => (/* binding */ popperGenerator) -/* harmony export */ }); -/* harmony import */ var _dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./dom-utils/getCompositeRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./dom-utils/listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./utils/orderModifiers.js */ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js"); -/* harmony import */ var _utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./utils/debounce.js */ "./node_modules/@popperjs/core/lib/utils/debounce.js"); -/* harmony import */ var _utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./utils/validateModifiers.js */ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js"); -/* harmony import */ var _utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils/uniqueBy.js */ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils/mergeByName.js */ "./node_modules/@popperjs/core/lib/utils/mergeByName.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - - - - - - - - - - - - - -var INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.'; -var INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.'; -var DEFAULT_OPTIONS = { - placement: 'bottom', - modifiers: [], - strategy: 'absolute' -}; - -function areValidElements() { - for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) { - args[_key] = arguments[_key]; - } - - return !args.some(function (element) { - return !(element && typeof element.getBoundingClientRect === 'function'); - }); -} - -function popperGenerator(generatorOptions) { - if (generatorOptions === void 0) { - generatorOptions = {}; - } - - var _generatorOptions = generatorOptions, - _generatorOptions$def = _generatorOptions.defaultModifiers, - defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def, - _generatorOptions$def2 = _generatorOptions.defaultOptions, - defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2; - return function createPopper(reference, popper, options) { - if (options === void 0) { - options = defaultOptions; - } - - var state = { - placement: 'bottom', - orderedModifiers: [], - options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions), - modifiersData: {}, - elements: { - reference: reference, - popper: popper - }, - attributes: {}, - styles: {} - }; - var effectCleanupFns = []; - var isDestroyed = false; - var instance = { - state: state, - setOptions: function setOptions(setOptionsAction) { - var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction; - cleanupModifierEffects(); - state.options = Object.assign({}, defaultOptions, state.options, options); - state.scrollParents = { - reference: (0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(reference) ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference) : reference.contextElement ? (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(reference.contextElement) : [], - popper: (0,_dom_utils_listScrollParents_js__WEBPACK_IMPORTED_MODULE_1__["default"])(popper) - }; // Orders the modifiers based on their dependencies and `phase` - // properties - - var orderedModifiers = (0,_utils_orderModifiers_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_utils_mergeByName_js__WEBPACK_IMPORTED_MODULE_3__["default"])([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers - - state.orderedModifiers = orderedModifiers.filter(function (m) { - return m.enabled; - }); // Validate the provided modifiers so that the consumer will get warned - // if one of the modifiers is invalid for any reason - - if (true) { - var modifiers = (0,_utils_uniqueBy_js__WEBPACK_IMPORTED_MODULE_4__["default"])([].concat(orderedModifiers, state.options.modifiers), function (_ref) { - var name = _ref.name; - return name; - }); - (0,_utils_validateModifiers_js__WEBPACK_IMPORTED_MODULE_5__["default"])(modifiers); - - if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.options.placement) === _enums_js__WEBPACK_IMPORTED_MODULE_7__.auto) { - var flipModifier = state.orderedModifiers.find(function (_ref2) { - var name = _ref2.name; - return name === 'flip'; - }); - - if (!flipModifier) { - console.error(['Popper: "auto" placements require the "flip" modifier be', 'present and enabled to work.'].join(' ')); - } - } - - var _getComputedStyle = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_8__["default"])(popper), - marginTop = _getComputedStyle.marginTop, - marginRight = _getComputedStyle.marginRight, - marginBottom = _getComputedStyle.marginBottom, - marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can - // cause bugs with positioning, so we'll warn the consumer - - - if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) { - return parseFloat(margin); - })) { - console.warn(['Popper: CSS "margin" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' ')); - } - } - - runModifierEffects(); - return instance.update(); - }, - // Sync update – it will always be executed, even if not necessary. This - // is useful for low frequency updates where sync behavior simplifies the - // logic. - // For high frequency updates (e.g. `resize` and `scroll` events), always - // prefer the async Popper#update method - forceUpdate: function forceUpdate() { - if (isDestroyed) { - return; - } - - var _state$elements = state.elements, - reference = _state$elements.reference, - popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements - // anymore - - if (!areValidElements(reference, popper)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - - return; - } // Store the reference and popper rects to be read by modifiers - - - state.rects = { - reference: (0,_dom_utils_getCompositeRect_js__WEBPACK_IMPORTED_MODULE_9__["default"])(reference, (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(popper), state.options.strategy === 'fixed'), - popper: (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_11__["default"])(popper) - }; // Modifiers have the ability to reset the current update cycle. The - // most common use case for this is the `flip` modifier changing the - // placement, which then needs to re-run all the modifiers, because the - // logic was previously ran for the previous placement and is therefore - // stale/incorrect - - state.reset = false; - state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier - // is filled with the initial data specified by the modifier. This means - // it doesn't persist and is fresh on each update. - // To ensure persistent data, use `${name}#persistent` - - state.orderedModifiers.forEach(function (modifier) { - return state.modifiersData[modifier.name] = Object.assign({}, modifier.data); - }); - var __debug_loops__ = 0; - - for (var index = 0; index < state.orderedModifiers.length; index++) { - if (true) { - __debug_loops__ += 1; - - if (__debug_loops__ > 100) { - console.error(INFINITE_LOOP_ERROR); - break; - } - } - - if (state.reset === true) { - state.reset = false; - index = -1; - continue; - } - - var _state$orderedModifie = state.orderedModifiers[index], - fn = _state$orderedModifie.fn, - _state$orderedModifie2 = _state$orderedModifie.options, - _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2, - name = _state$orderedModifie.name; - - if (typeof fn === 'function') { - state = fn({ - state: state, - options: _options, - name: name, - instance: instance - }) || state; - } - } - }, - // Async and optimistically optimized update – it will not be executed if - // not necessary (debounced to run at most once-per-tick) - update: (0,_utils_debounce_js__WEBPACK_IMPORTED_MODULE_12__["default"])(function () { - return new Promise(function (resolve) { - instance.forceUpdate(); - resolve(state); - }); - }), - destroy: function destroy() { - cleanupModifierEffects(); - isDestroyed = true; - } - }; - - if (!areValidElements(reference, popper)) { - if (true) { - console.error(INVALID_ELEMENT_ERROR); - } - - return instance; - } - - instance.setOptions(options).then(function (state) { - if (!isDestroyed && options.onFirstUpdate) { - options.onFirstUpdate(state); - } - }); // Modifiers have the ability to execute arbitrary code before the first - // update cycle runs. They will be executed in the same order as the update - // cycle. This is useful when a modifier adds some persistent data that - // other modifiers need to use, but the modifier is run after the dependent - // one. - - function runModifierEffects() { - state.orderedModifiers.forEach(function (_ref3) { - var name = _ref3.name, - _ref3$options = _ref3.options, - options = _ref3$options === void 0 ? {} : _ref3$options, - effect = _ref3.effect; - - if (typeof effect === 'function') { - var cleanupFn = effect({ - state: state, - name: name, - instance: instance, - options: options - }); - - var noopFn = function noopFn() {}; - - effectCleanupFns.push(cleanupFn || noopFn); - } - }); - } - - function cleanupModifierEffects() { - effectCleanupFns.forEach(function (fn) { - return fn(); - }); - effectCleanupFns = []; - } - - return instance; - }; -} -var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/contains.js": -/*!***************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/contains.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ contains) -/* harmony export */ }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - -function contains(parent, child) { - var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method - - if (parent.contains(child)) { - return true; - } // then fallback to custom implementation with Shadow DOM support - else if (rootNode && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(rootNode)) { - var next = child; - - do { - if (next && parent.isSameNode(next)) { - return true; - } // $FlowFixMe[prop-missing]: need a better way to handle this... - - - next = next.parentNode || next.host; - } while (next); - } // Give up, the result is false - - - return false; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js": -/*!****************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js ***! - \****************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getBoundingClientRect) -/* harmony export */ }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); - - - - -function getBoundingClientRect(element, includeScale, isFixedStrategy) { - if (includeScale === void 0) { - includeScale = false; - } - - if (isFixedStrategy === void 0) { - isFixedStrategy = false; - } - - var clientRect = element.getBoundingClientRect(); - var scaleX = 1; - var scaleY = 1; - - if (includeScale && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { - scaleX = element.offsetWidth > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.width) / element.offsetWidth || 1 : 1; - scaleY = element.offsetHeight > 0 ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_1__.round)(clientRect.height) / element.offsetHeight || 1 : 1; - } - - var _ref = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) : window, - visualViewport = _ref.visualViewport; - - var addVisualOffsets = !(0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_3__["default"])() && isFixedStrategy; - var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX; - var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY; - var width = clientRect.width / scaleX; - var height = clientRect.height / scaleY; - return { - width: width, - height: height, - top: y, - right: x + width, - bottom: y + height, - left: x, - x: x, - y: y - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getClippingRect) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getViewportRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js"); -/* harmony import */ var _getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getDocumentRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js"); -/* harmony import */ var _listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./listScrollParents.js */ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js"); -/* harmony import */ var _getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _contains_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - - - - - - - -function getInnerBoundingClientRect(element, strategy) { - var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element, false, strategy === 'fixed'); - rect.top = rect.top + element.clientTop; - rect.left = rect.left + element.clientLeft; - rect.bottom = rect.top + element.clientHeight; - rect.right = rect.left + element.clientWidth; - rect.width = element.clientWidth; - rect.height = element.clientHeight; - rect.x = rect.left; - rect.y = rect.top; - return rect; -} - -function getClientRectFromMixedType(element, clippingParent, strategy) { - return clippingParent === _enums_js__WEBPACK_IMPORTED_MODULE_1__.viewport ? (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getViewportRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element, strategy)) : (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : (0,_utils_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_2__["default"])((0,_getDocumentRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(element))); -} // A "clipping parent" is an overflowable container with the characteristic of -// clipping (or hiding) overflowing elements with a position different from -// `initial` - - -function getClippingParents(element) { - var clippingParents = (0,_listScrollParents_js__WEBPACK_IMPORTED_MODULE_7__["default"])((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_8__["default"])(element)); - var canEscapeClipping = ['absolute', 'fixed'].indexOf((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_9__["default"])(element).position) >= 0; - var clipperElement = canEscapeClipping && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isHTMLElement)(element) ? (0,_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_10__["default"])(element) : element; - - if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clipperElement)) { - return []; - } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414 - - - return clippingParents.filter(function (clippingParent) { - return (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(clippingParent) && (0,_contains_js__WEBPACK_IMPORTED_MODULE_11__["default"])(clippingParent, clipperElement) && (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_12__["default"])(clippingParent) !== 'body'; - }); -} // Gets the maximum area that the element is visible in due to any number of -// clipping parents - - -function getClippingRect(element, boundary, rootBoundary, strategy) { - var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary); - var clippingParents = [].concat(mainClippingParents, [rootBoundary]); - var firstClippingParent = clippingParents[0]; - var clippingRect = clippingParents.reduce(function (accRect, clippingParent) { - var rect = getClientRectFromMixedType(element, clippingParent, strategy); - accRect.top = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.top, accRect.top); - accRect.right = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.right, accRect.right); - accRect.bottom = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.min)(rect.bottom, accRect.bottom); - accRect.left = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_13__.max)(rect.left, accRect.left); - return accRect; - }, getClientRectFromMixedType(element, firstClippingParent, strategy)); - clippingRect.width = clippingRect.right - clippingRect.left; - clippingRect.height = clippingRect.bottom - clippingRect.top; - clippingRect.x = clippingRect.left; - clippingRect.y = clippingRect.top; - return clippingRect; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getCompositeRect) -/* harmony export */ }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getNodeScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - -function isElementScaled(element) { - var rect = element.getBoundingClientRect(); - var scaleX = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.width) / element.offsetWidth || 1; - var scaleY = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(rect.height) / element.offsetHeight || 1; - return scaleX !== 1 || scaleY !== 1; -} // Returns the composite rect of an element relative to its offsetParent. -// Composite means it takes into account transforms as well as layout. - - -function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) { - if (isFixed === void 0) { - isFixed = false; - } - - var isOffsetParentAnElement = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent); - var offsetParentIsScaled = (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent) && isElementScaled(offsetParent); - var documentElement = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(offsetParent); - var rect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(elementOrVirtualElement, offsetParentIsScaled, isFixed); - var scroll = { - scrollLeft: 0, - scrollTop: 0 - }; - var offsets = { - x: 0, - y: 0 - }; - - if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) { - if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078 - (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_5__["default"])(documentElement)) { - scroll = (0,_getNodeScroll_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent); - } - - if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(offsetParent)) { - offsets = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])(offsetParent, true); - offsets.x += offsetParent.clientLeft; - offsets.y += offsetParent.clientTop; - } else if (documentElement) { - offsets.x = (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_7__["default"])(documentElement); - } - } - - return { - x: rect.left + scroll.scrollLeft - offsets.x, - y: rect.top + scroll.scrollTop - offsets.y, - width: rect.width, - height: rect.height - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getComputedStyle) -/* harmony export */ }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - -function getComputedStyle(element) { - return (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element).getComputedStyle(element); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js": -/*!*************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js ***! - \*************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getDocumentElement) -/* harmony export */ }); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - -function getDocumentElement(element) { - // $FlowFixMe[incompatible-return]: assume body is always available - return (((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isElement)(element) ? element.ownerDocument : // $FlowFixMe[prop-missing] - element.document) || window.document).documentElement; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getDocumentRect) -/* harmony export */ }); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - // Gets the entire size of the scrollable document area, even extending outside -// of the `` and `` rect bounds if horizontally scrollable - -function getDocumentRect(element) { - var _element$ownerDocumen; - - var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var winScroll = (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); - var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body; - var width = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0); - var height = (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0); - var x = -winScroll.scrollLeft + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); - var y = -winScroll.scrollTop; - - if ((0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_4__["default"])(body || html).direction === 'rtl') { - x += (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_2__.max)(html.clientWidth, body ? body.clientWidth : 0) - width; - } - - return { - width: width, - height: height, - x: x, - y: y - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getHTMLElementScroll) -/* harmony export */ }); -function getHTMLElementScroll(element) { - return { - scrollLeft: element.scrollLeft, - scrollTop: element.scrollTop - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getLayoutRect) -/* harmony export */ }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); - // Returns the layout rect of an element relative to its offsetParent. Layout -// means it doesn't take into account transforms. - -function getLayoutRect(element) { - var clientRect = (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); // Use the clientRect sizes if it's not been transformed. - // Fixes https://github.com/popperjs/popper-core/issues/1223 - - var width = element.offsetWidth; - var height = element.offsetHeight; - - if (Math.abs(clientRect.width - width) <= 1) { - width = clientRect.width; - } - - if (Math.abs(clientRect.height - height) <= 1) { - height = clientRect.height; - } - - return { - x: element.offsetLeft, - y: element.offsetTop, - width: width, - height: height - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getNodeName) -/* harmony export */ }); -function getNodeName(element) { - return element ? (element.nodeName || '').toLowerCase() : null; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getNodeScroll) -/* harmony export */ }); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getHTMLElementScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js"); - - - - -function getNodeScroll(node) { - if (node === (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node) || !(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node)) { - return (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node); - } else { - return (0,_getHTMLElementScroll_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node); - } -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getOffsetParent) -/* harmony export */ }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _isTableElement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./isTableElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); - - - - - - - - -function getTrueOffsetParent(element) { - if (!(0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || // https://github.com/popperjs/popper-core/issues/837 - (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element).position === 'fixed') { - return null; - } - - return element.offsetParent; -} // `.offsetParent` reports `null` for fixed elements, while absolute elements -// return the containing block - - -function getContainingBlock(element) { - var isFirefox = /firefox/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); - var isIE = /Trident/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_2__["default"])()); - - if (isIE && (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element)) { - // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport - var elementCss = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); - - if (elementCss.position === 'fixed') { - return null; - } - } - - var currentNode = (0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element); - - if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isShadowRoot)(currentNode)) { - currentNode = currentNode.host; - } - - while ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(currentNode) && ['html', 'body'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(currentNode)) < 0) { - var css = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(currentNode); // This is non-exhaustive but covers the most common CSS properties that - // create a containing block. - // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block - - if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') { - return currentNode; - } else { - currentNode = currentNode.parentNode; - } - } - - return null; -} // Gets the closest ancestor positioned element. Handles some edge cases, -// such as table ancestors and cross browser bugs. - - -function getOffsetParent(element) { - var window = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_5__["default"])(element); - var offsetParent = getTrueOffsetParent(element); - - while (offsetParent && (0,_isTableElement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(offsetParent) && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static') { - offsetParent = getTrueOffsetParent(offsetParent); - } - - if (offsetParent && ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'html' || (0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_4__["default"])(offsetParent) === 'body' && (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_1__["default"])(offsetParent).position === 'static')) { - return window; - } - - return offsetParent || getContainingBlock(element) || window; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getParentNode) -/* harmony export */ }); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - -function getParentNode(element) { - if ((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element) === 'html') { - return element; - } - - return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle - // $FlowFixMe[incompatible-return] - // $FlowFixMe[prop-missing] - element.assignedSlot || // step into the shadow DOM of the parent of a slotted node - element.parentNode || ( // DOM Element detected - (0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isShadowRoot)(element) ? element.host : null) || // ShadowRoot detected - // $FlowFixMe[incompatible-call]: HTMLElement is a Node - (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element) // fallback - - ); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getScrollParent) -/* harmony export */ }); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _instanceOf_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - - -function getScrollParent(node) { - if (['html', 'body', '#document'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node)) >= 0) { - // $FlowFixMe[incompatible-return]: assume body is always available - return node.ownerDocument.body; - } - - if ((0,_instanceOf_js__WEBPACK_IMPORTED_MODULE_1__.isHTMLElement)(node) && (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(node)) { - return node; - } - - return getScrollParent((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(node)); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getViewportRect) -/* harmony export */ }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getWindowScrollBarX.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js"); -/* harmony import */ var _isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isLayoutViewport.js */ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js"); - - - - -function getViewportRect(element, strategy) { - var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var html = (0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element); - var visualViewport = win.visualViewport; - var width = html.clientWidth; - var height = html.clientHeight; - var x = 0; - var y = 0; - - if (visualViewport) { - width = visualViewport.width; - height = visualViewport.height; - var layoutViewport = (0,_isLayoutViewport_js__WEBPACK_IMPORTED_MODULE_2__["default"])(); - - if (layoutViewport || !layoutViewport && strategy === 'fixed') { - x = visualViewport.offsetLeft; - y = visualViewport.offsetTop; - } - } - - return { - width: width, - height: height, - x: x + (0,_getWindowScrollBarX_js__WEBPACK_IMPORTED_MODULE_3__["default"])(element), - y: y - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js": -/*!****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindow.js ***! - \****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getWindow) -/* harmony export */ }); -function getWindow(node) { - if (node == null) { - return window; - } - - if (node.toString() !== '[object Window]') { - var ownerDocument = node.ownerDocument; - return ownerDocument ? ownerDocument.defaultView || window : window; - } - - return node; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getWindowScroll) -/* harmony export */ }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - -function getWindowScroll(node) { - var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node); - var scrollLeft = win.pageXOffset; - var scrollTop = win.pageYOffset; - return { - scrollLeft: scrollLeft, - scrollTop: scrollTop - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js": -/*!**************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js ***! - \**************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getWindowScrollBarX) -/* harmony export */ }); -/* harmony import */ var _getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getWindowScroll.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js"); - - - -function getWindowScrollBarX(element) { - // If has a CSS width greater than the viewport, then this will be - // incorrect for RTL. - // Popper 1 is broken in this case and never had a bug report so let's assume - // it's not an issue. I don't think anyone ever specifies width on - // anyway. - // Browsers where the left scrollbar doesn't cause an issue report `0` for - // this (e.g. Edge 2019, IE11, Safari) - return (0,_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_0__["default"])((0,_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)).left + (0,_getWindowScroll_js__WEBPACK_IMPORTED_MODULE_2__["default"])(element).scrollLeft; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "isElement": () => (/* binding */ isElement), -/* harmony export */ "isHTMLElement": () => (/* binding */ isHTMLElement), -/* harmony export */ "isShadowRoot": () => (/* binding */ isShadowRoot) -/* harmony export */ }); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - - -function isElement(node) { - var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).Element; - return node instanceof OwnElement || node instanceof Element; -} - -function isHTMLElement(node) { - var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).HTMLElement; - return node instanceof OwnElement || node instanceof HTMLElement; -} - -function isShadowRoot(node) { - // IE 11 has no ShadowRoot - if (typeof ShadowRoot === 'undefined') { - return false; - } - - var OwnElement = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(node).ShadowRoot; - return node instanceof OwnElement || node instanceof ShadowRoot; -} - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ isLayoutViewport) -/* harmony export */ }); -/* harmony import */ var _utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/userAgent.js */ "./node_modules/@popperjs/core/lib/utils/userAgent.js"); - -function isLayoutViewport() { - return !/^((?!chrome|android).)*safari/i.test((0,_utils_userAgent_js__WEBPACK_IMPORTED_MODULE_0__["default"])()); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ isScrollParent) -/* harmony export */ }); -/* harmony import */ var _getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); - -function isScrollParent(element) { - // Firefox wants us to check `-x` and `-y` variations as well - var _getComputedStyle = (0,_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element), - overflow = _getComputedStyle.overflow, - overflowX = _getComputedStyle.overflowX, - overflowY = _getComputedStyle.overflowY; - - return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ isTableElement) -/* harmony export */ }); -/* harmony import */ var _getNodeName_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); - -function isTableElement(element) { - return ['table', 'td', 'th'].indexOf((0,_getNodeName_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element)) >= 0; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js": -/*!************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ listScrollParents) -/* harmony export */ }); -/* harmony import */ var _getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js"); -/* harmony import */ var _getParentNode_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getParentNode.js */ "./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js"); -/* harmony import */ var _getWindow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./isScrollParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js"); - - - - -/* -given a DOM element, return the list of all scroll parents, up the list of ancesors -until we get to the top window object. This list is what we attach scroll listeners -to, because if any of these parent elements scroll, we'll need to re-calculate the -reference element's position. -*/ - -function listScrollParents(element, list) { - var _element$ownerDocumen; - - if (list === void 0) { - list = []; - } - - var scrollParent = (0,_getScrollParent_js__WEBPACK_IMPORTED_MODULE_0__["default"])(element); - var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body); - var win = (0,_getWindow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(scrollParent); - var target = isBody ? [win].concat(win.visualViewport || [], (0,_isScrollParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(scrollParent) ? scrollParent : []) : scrollParent; - var updatedList = list.concat(target); - return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here - updatedList.concat(listScrollParents((0,_getParentNode_js__WEBPACK_IMPORTED_MODULE_3__["default"])(target))); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/enums.js": -/*!**************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/enums.js ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "afterMain": () => (/* binding */ afterMain), -/* harmony export */ "afterRead": () => (/* binding */ afterRead), -/* harmony export */ "afterWrite": () => (/* binding */ afterWrite), -/* harmony export */ "auto": () => (/* binding */ auto), -/* harmony export */ "basePlacements": () => (/* binding */ basePlacements), -/* harmony export */ "beforeMain": () => (/* binding */ beforeMain), -/* harmony export */ "beforeRead": () => (/* binding */ beforeRead), -/* harmony export */ "beforeWrite": () => (/* binding */ beforeWrite), -/* harmony export */ "bottom": () => (/* binding */ bottom), -/* harmony export */ "clippingParents": () => (/* binding */ clippingParents), -/* harmony export */ "end": () => (/* binding */ end), -/* harmony export */ "left": () => (/* binding */ left), -/* harmony export */ "main": () => (/* binding */ main), -/* harmony export */ "modifierPhases": () => (/* binding */ modifierPhases), -/* harmony export */ "placements": () => (/* binding */ placements), -/* harmony export */ "popper": () => (/* binding */ popper), -/* harmony export */ "read": () => (/* binding */ read), -/* harmony export */ "reference": () => (/* binding */ reference), -/* harmony export */ "right": () => (/* binding */ right), -/* harmony export */ "start": () => (/* binding */ start), -/* harmony export */ "top": () => (/* binding */ top), -/* harmony export */ "variationPlacements": () => (/* binding */ variationPlacements), -/* harmony export */ "viewport": () => (/* binding */ viewport), -/* harmony export */ "write": () => (/* binding */ write) -/* harmony export */ }); -var top = 'top'; -var bottom = 'bottom'; -var right = 'right'; -var left = 'left'; -var auto = 'auto'; -var basePlacements = [top, bottom, right, left]; -var start = 'start'; -var end = 'end'; -var clippingParents = 'clippingParents'; -var viewport = 'viewport'; -var popper = 'popper'; -var reference = 'reference'; -var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) { - return acc.concat([placement + "-" + start, placement + "-" + end]); -}, []); -var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) { - return acc.concat([placement, placement + "-" + start, placement + "-" + end]); -}, []); // modifiers that need to read the DOM - -var beforeRead = 'beforeRead'; -var read = 'read'; -var afterRead = 'afterRead'; // pure-logic modifiers - -var beforeMain = 'beforeMain'; -var main = 'main'; -var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state) - -var beforeWrite = 'beforeWrite'; -var write = 'write'; -var afterWrite = 'afterWrite'; -var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite]; - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/index.js": -/*!**************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/index.js ***! - \**************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "afterMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterMain), -/* harmony export */ "afterRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterRead), -/* harmony export */ "afterWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.afterWrite), -/* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.applyStyles), -/* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.arrow), -/* harmony export */ "auto": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.auto), -/* harmony export */ "basePlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements), -/* harmony export */ "beforeMain": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeMain), -/* harmony export */ "beforeRead": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeRead), -/* harmony export */ "beforeWrite": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.beforeWrite), -/* harmony export */ "bottom": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom), -/* harmony export */ "clippingParents": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents), -/* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.computeStyles), -/* harmony export */ "createPopper": () => (/* reexport safe */ _popper_js__WEBPACK_IMPORTED_MODULE_4__.createPopper), -/* harmony export */ "createPopperBase": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.createPopper), -/* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__.createPopper), -/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_3__["default"]), -/* harmony export */ "end": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.end), -/* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.eventListeners), -/* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.flip), -/* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.hide), -/* harmony export */ "left": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.left), -/* harmony export */ "main": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.main), -/* harmony export */ "modifierPhases": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases), -/* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.offset), -/* harmony export */ "placements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements), -/* harmony export */ "popper": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper), -/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_2__.popperGenerator), -/* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.popperOffsets), -/* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__.preventOverflow), -/* harmony export */ "read": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.read), -/* harmony export */ "reference": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference), -/* harmony export */ "right": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.right), -/* harmony export */ "start": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.start), -/* harmony export */ "top": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.top), -/* harmony export */ "variationPlacements": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements), -/* harmony export */ "viewport": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport), -/* harmony export */ "write": () => (/* reexport safe */ _enums_js__WEBPACK_IMPORTED_MODULE_0__.write) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _popper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./popper.js */ "./node_modules/@popperjs/core/lib/popper.js"); -/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/applyStyles.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../dom-utils/getNodeName.js */ "./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - // This modifier takes the styles prepared by the `computeStyles` modifier -// and applies them to the HTMLElements such as popper and arrow - -function applyStyles(_ref) { - var state = _ref.state; - Object.keys(state.elements).forEach(function (name) { - var style = state.styles[name] || {}; - var attributes = state.attributes[name] || {}; - var element = state.elements[name]; // arrow is optional + virtual elements - - if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { - return; - } // Flow doesn't support to extend this property, but it's the most - // effective way to apply styles to an HTMLElement - // $FlowFixMe[cannot-write] - - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (name) { - var value = attributes[name]; - - if (value === false) { - element.removeAttribute(name); - } else { - element.setAttribute(name, value === true ? '' : value); - } - }); - }); -} - -function effect(_ref2) { - var state = _ref2.state; - var initialStyles = { - popper: { - position: state.options.strategy, - left: '0', - top: '0', - margin: '0' - }, - arrow: { - position: 'absolute' - }, - reference: {} - }; - Object.assign(state.elements.popper.style, initialStyles.popper); - state.styles = initialStyles; - - if (state.elements.arrow) { - Object.assign(state.elements.arrow.style, initialStyles.arrow); - } - - return function () { - Object.keys(state.elements).forEach(function (name) { - var element = state.elements[name]; - var attributes = state.attributes[name] || {}; - var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them - - var style = styleProperties.reduce(function (style, property) { - style[property] = ''; - return style; - }, {}); // arrow is optional + virtual elements - - if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_0__.isHTMLElement)(element) || !(0,_dom_utils_getNodeName_js__WEBPACK_IMPORTED_MODULE_1__["default"])(element)) { - return; - } - - Object.assign(element.style, style); - Object.keys(attributes).forEach(function (attribute) { - element.removeAttribute(attribute); - }); - }); - }; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'applyStyles', - enabled: true, - phase: 'write', - fn: applyStyles, - effect: effect, - requires: ['computeStyles'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/arrow.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/arrow.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/contains.js */ "./node_modules/@popperjs/core/lib/dom-utils/contains.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); -/* harmony import */ var _utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); -/* harmony import */ var _utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); - - - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -var toPaddingObject = function toPaddingObject(padding, state) { - padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, { - placement: state.placement - })) : padding; - return (0,_utils_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(typeof padding !== 'number' ? padding : (0,_utils_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_1__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_2__.basePlacements)); -}; - -function arrow(_ref) { - var _state$modifiersData$; - - var state = _ref.state, - name = _ref.name, - options = _ref.options; - var arrowElement = state.elements.arrow; - var popperOffsets = state.modifiersData.popperOffsets; - var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(state.placement); - var axis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(basePlacement); - var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_2__.left, _enums_js__WEBPACK_IMPORTED_MODULE_2__.right].indexOf(basePlacement) >= 0; - var len = isVertical ? 'height' : 'width'; - - if (!arrowElement || !popperOffsets) { - return; - } - - var paddingObject = toPaddingObject(options.padding, state); - var arrowRect = (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_5__["default"])(arrowElement); - var minProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.top : _enums_js__WEBPACK_IMPORTED_MODULE_2__.left; - var maxProp = axis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_2__.right; - var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len]; - var startDiff = popperOffsets[axis] - state.rects.reference[axis]; - var arrowOffsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement); - var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0; - var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is - // outside of the popper bounds - - var min = paddingObject[minProp]; - var max = clientSize - arrowRect[len] - paddingObject[maxProp]; - var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference; - var offset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_7__.within)(min, center, max); // Prevents breaking syntax highlighting... - - var axisProp = axis; - state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$); -} - -function effect(_ref2) { - var state = _ref2.state, - options = _ref2.options; - var _options$element = options.element, - arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element; - - if (arrowElement == null) { - return; - } // CSS selector - - - if (typeof arrowElement === 'string') { - arrowElement = state.elements.popper.querySelector(arrowElement); - - if (!arrowElement) { - return; - } - } - - if (true) { - if (!(0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_8__.isHTMLElement)(arrowElement)) { - console.error(['Popper: "arrow" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' ')); - } - } - - if (!(0,_dom_utils_contains_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.popper, arrowElement)) { - if (true) { - console.error(['Popper: "arrow" modifier\'s `element` must be a child of the popper', 'element.'].join(' ')); - } - - return; - } - - state.elements.arrow = arrowElement; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'arrow', - enabled: true, - phase: 'main', - fn: arrow, - effect: effect, - requires: ['popperOffsets'], - requiresIfExists: ['preventOverflow'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/computeStyles.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), -/* harmony export */ "mapToStyles": () => (/* binding */ mapToStyles) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); -/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getComputedStyle.js */ "./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -var unsetSides = { - top: 'auto', - right: 'auto', - bottom: 'auto', - left: 'auto' -}; // Round the offsets to the nearest suitable subpixel based on the DPR. -// Zooming can change the DPR, but it seems to report a value that will -// cleanly divide the values into the appropriate subpixels. - -function roundOffsetsByDPR(_ref) { - var x = _ref.x, - y = _ref.y; - var win = window; - var dpr = win.devicePixelRatio || 1; - return { - x: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(x * dpr) / dpr || 0, - y: (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_0__.round)(y * dpr) / dpr || 0 - }; -} - -function mapToStyles(_ref2) { - var _Object$assign2; - - var popper = _ref2.popper, - popperRect = _ref2.popperRect, - placement = _ref2.placement, - variation = _ref2.variation, - offsets = _ref2.offsets, - position = _ref2.position, - gpuAcceleration = _ref2.gpuAcceleration, - adaptive = _ref2.adaptive, - roundOffsets = _ref2.roundOffsets, - isFixed = _ref2.isFixed; - var _offsets$x = offsets.x, - x = _offsets$x === void 0 ? 0 : _offsets$x, - _offsets$y = offsets.y, - y = _offsets$y === void 0 ? 0 : _offsets$y; - - var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref3.x; - y = _ref3.y; - var hasX = offsets.hasOwnProperty('x'); - var hasY = offsets.hasOwnProperty('y'); - var sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.left; - var sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; - var win = window; - - if (adaptive) { - var offsetParent = (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_2__["default"])(popper); - var heightProp = 'clientHeight'; - var widthProp = 'clientWidth'; - - if (offsetParent === (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_3__["default"])(popper)) { - offsetParent = (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(popper); - - if ((0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(offsetParent).position !== 'static' && position === 'absolute') { - heightProp = 'scrollHeight'; - widthProp = 'scrollWidth'; - } - } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it - - - offsetParent = offsetParent; - - if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.right) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { - sideY = _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom; - var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing] - offsetParent[heightProp]; - y -= offsetY - popperRect.height; - y *= gpuAcceleration ? 1 : -1; - } - - if (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.left || (placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.top || placement === _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom) && variation === _enums_js__WEBPACK_IMPORTED_MODULE_1__.end) { - sideX = _enums_js__WEBPACK_IMPORTED_MODULE_1__.right; - var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing] - offsetParent[widthProp]; - x -= offsetX - popperRect.width; - x *= gpuAcceleration ? 1 : -1; - } - } - - var commonStyles = Object.assign({ - position: position - }, adaptive && unsetSides); - - var _ref4 = roundOffsets === true ? roundOffsetsByDPR({ - x: x, - y: y - }) : { - x: x, - y: y - }; - - x = _ref4.x; - y = _ref4.y; - - if (gpuAcceleration) { - var _Object$assign; - - return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? "translate(" + x + "px, " + y + "px)" : "translate3d(" + x + "px, " + y + "px, 0)", _Object$assign)); - } - - return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + "px" : '', _Object$assign2[sideX] = hasX ? x + "px" : '', _Object$assign2.transform = '', _Object$assign2)); -} - -function computeStyles(_ref5) { - var state = _ref5.state, - options = _ref5.options; - var _options$gpuAccelerat = options.gpuAcceleration, - gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat, - _options$adaptive = options.adaptive, - adaptive = _options$adaptive === void 0 ? true : _options$adaptive, - _options$roundOffsets = options.roundOffsets, - roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets; - - if (true) { - var transitionProperty = (0,_dom_utils_getComputedStyle_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper).transitionProperty || ''; - - if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) { - return transitionProperty.indexOf(property) >= 0; - })) { - console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: "transform", "top", "right", "bottom", "left".', '\n\n', 'Disable the "computeStyles" modifier\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\n\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' ')); - } - } - - var commonStyles = { - placement: (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.placement), - variation: (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_7__["default"])(state.placement), - popper: state.elements.popper, - popperRect: state.rects.popper, - gpuAcceleration: gpuAcceleration, - isFixed: state.options.strategy === 'fixed' - }; - - if (state.modifiersData.popperOffsets != null) { - state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.popperOffsets, - position: state.options.strategy, - adaptive: adaptive, - roundOffsets: roundOffsets - }))); - } - - if (state.modifiersData.arrow != null) { - state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, { - offsets: state.modifiersData.arrow, - position: 'absolute', - adaptive: false, - roundOffsets: roundOffsets - }))); - } - - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-placement': state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'computeStyles', - enabled: true, - phase: 'beforeWrite', - fn: computeStyles, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/eventListeners.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../dom-utils/getWindow.js */ "./node_modules/@popperjs/core/lib/dom-utils/getWindow.js"); - // eslint-disable-next-line import/no-unused-modules - -var passive = { - passive: true -}; - -function effect(_ref) { - var state = _ref.state, - instance = _ref.instance, - options = _ref.options; - var _options$scroll = options.scroll, - scroll = _options$scroll === void 0 ? true : _options$scroll, - _options$resize = options.resize, - resize = _options$resize === void 0 ? true : _options$resize; - var window = (0,_dom_utils_getWindow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state.elements.popper); - var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper); - - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.addEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.addEventListener('resize', instance.update, passive); - } - - return function () { - if (scroll) { - scrollParents.forEach(function (scrollParent) { - scrollParent.removeEventListener('scroll', instance.update, passive); - }); - } - - if (resize) { - window.removeEventListener('resize', instance.update, passive); - } - }; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'eventListeners', - enabled: true, - phase: 'write', - fn: function fn() {}, - effect: effect, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/flip.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/flip.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getOppositePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getOppositeVariationPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/computeAutoPlacement.js */ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); - - - - - - - // eslint-disable-next-line import/no-unused-modules - -function getExpandedFallbackPlacements(placement) { - if ((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto) { - return []; - } - - var oppositePlacement = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(placement); - return [(0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement), oppositePlacement, (0,_utils_getOppositeVariationPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(oppositePlacement)]; -} - -function flip(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - - if (state.modifiersData[name]._skip) { - return; - } - - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis, - specifiedFallbackPlacements = options.fallbackPlacements, - padding = options.padding, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - _options$flipVariatio = options.flipVariations, - flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio, - allowedAutoPlacements = options.allowedAutoPlacements; - var preferredPlacement = state.options.placement; - var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(preferredPlacement); - var isBasePlacement = basePlacement === preferredPlacement; - var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [(0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement)); - var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) { - return acc.concat((0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.auto ? (0,_utils_computeAutoPlacement_js__WEBPACK_IMPORTED_MODULE_4__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - flipVariations: flipVariations, - allowedAutoPlacements: allowedAutoPlacements - }) : placement); - }, []); - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var checksMap = new Map(); - var makeFallbackChecks = true; - var firstFittingPlacement = placements[0]; - - for (var i = 0; i < placements.length; i++) { - var placement = placements[i]; - - var _basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); - - var isStartVariation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_5__["default"])(placement) === _enums_js__WEBPACK_IMPORTED_MODULE_1__.start; - var isVertical = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.top, _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom].indexOf(_basePlacement) >= 0; - var len = isVertical ? 'width' : 'height'; - var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - altBoundary: altBoundary, - padding: padding - }); - var mainVariationSide = isVertical ? isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.right : _enums_js__WEBPACK_IMPORTED_MODULE_1__.left : isStartVariation ? _enums_js__WEBPACK_IMPORTED_MODULE_1__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_1__.top; - - if (referenceRect[len] > popperRect[len]) { - mainVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); - } - - var altVariationSide = (0,_utils_getOppositePlacement_js__WEBPACK_IMPORTED_MODULE_2__["default"])(mainVariationSide); - var checks = []; - - if (checkMainAxis) { - checks.push(overflow[_basePlacement] <= 0); - } - - if (checkAltAxis) { - checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0); - } - - if (checks.every(function (check) { - return check; - })) { - firstFittingPlacement = placement; - makeFallbackChecks = false; - break; - } - - checksMap.set(placement, checks); - } - - if (makeFallbackChecks) { - // `2` may be desired in some cases – research later - var numberOfChecks = flipVariations ? 3 : 1; - - var _loop = function _loop(_i) { - var fittingPlacement = placements.find(function (placement) { - var checks = checksMap.get(placement); - - if (checks) { - return checks.slice(0, _i).every(function (check) { - return check; - }); - } - }); - - if (fittingPlacement) { - firstFittingPlacement = fittingPlacement; - return "break"; - } - }; - - for (var _i = numberOfChecks; _i > 0; _i--) { - var _ret = _loop(_i); - - if (_ret === "break") break; - } - } - - if (state.placement !== firstFittingPlacement) { - state.modifiersData[name]._skip = true; - state.placement = firstFittingPlacement; - state.reset = true; - } -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'flip', - enabled: true, - phase: 'main', - fn: flip, - requiresIfExists: ['offset'], - data: { - _skip: false - } -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/hide.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/hide.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); - - - -function getSideOffsets(overflow, rect, preventedOffsets) { - if (preventedOffsets === void 0) { - preventedOffsets = { - x: 0, - y: 0 - }; - } - - return { - top: overflow.top - rect.height - preventedOffsets.y, - right: overflow.right - rect.width + preventedOffsets.x, - bottom: overflow.bottom - rect.height + preventedOffsets.y, - left: overflow.left - rect.width - preventedOffsets.x - }; -} - -function isAnySideFullyClipped(overflow) { - return [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom, _enums_js__WEBPACK_IMPORTED_MODULE_0__.left].some(function (side) { - return overflow[side] >= 0; - }); -} - -function hide(_ref) { - var state = _ref.state, - name = _ref.name; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var preventedOffsets = state.modifiersData.preventOverflow; - var referenceOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { - elementContext: 'reference' - }); - var popperAltOverflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state, { - altBoundary: true - }); - var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect); - var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets); - var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets); - var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets); - state.modifiersData[name] = { - referenceClippingOffsets: referenceClippingOffsets, - popperEscapeOffsets: popperEscapeOffsets, - isReferenceHidden: isReferenceHidden, - hasPopperEscaped: hasPopperEscaped - }; - state.attributes.popper = Object.assign({}, state.attributes.popper, { - 'data-popper-reference-hidden': isReferenceHidden, - 'data-popper-escaped': hasPopperEscaped - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'hide', - enabled: true, - phase: 'main', - requiresIfExists: ['preventOverflow'], - fn: hide -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/index.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/index.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "applyStyles": () => (/* reexport safe */ _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__["default"]), -/* harmony export */ "arrow": () => (/* reexport safe */ _arrow_js__WEBPACK_IMPORTED_MODULE_1__["default"]), -/* harmony export */ "computeStyles": () => (/* reexport safe */ _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"]), -/* harmony export */ "eventListeners": () => (/* reexport safe */ _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__["default"]), -/* harmony export */ "flip": () => (/* reexport safe */ _flip_js__WEBPACK_IMPORTED_MODULE_4__["default"]), -/* harmony export */ "hide": () => (/* reexport safe */ _hide_js__WEBPACK_IMPORTED_MODULE_5__["default"]), -/* harmony export */ "offset": () => (/* reexport safe */ _offset_js__WEBPACK_IMPORTED_MODULE_6__["default"]), -/* harmony export */ "popperOffsets": () => (/* reexport safe */ _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"]), -/* harmony export */ "preventOverflow": () => (/* reexport safe */ _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__["default"]) -/* harmony export */ }); -/* harmony import */ var _applyStyles_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); -/* harmony import */ var _arrow_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); -/* harmony import */ var _computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony import */ var _eventListeners_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony import */ var _flip_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); -/* harmony import */ var _hide_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); -/* harmony import */ var _offset_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); -/* harmony import */ var _popperOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony import */ var _preventOverflow_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); - - - - - - - - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/offset.js": -/*!*************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/offset.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__), -/* harmony export */ "distanceAndSkiddingToXY": () => (/* binding */ distanceAndSkiddingToXY) -/* harmony export */ }); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - // eslint-disable-next-line import/no-unused-modules - -function distanceAndSkiddingToXY(placement, rects, offset) { - var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement); - var invertDistance = [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.top].indexOf(basePlacement) >= 0 ? -1 : 1; - - var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, { - placement: placement - })) : offset, - skidding = _ref[0], - distance = _ref[1]; - - skidding = skidding || 0; - distance = (distance || 0) * invertDistance; - return [_enums_js__WEBPACK_IMPORTED_MODULE_1__.left, _enums_js__WEBPACK_IMPORTED_MODULE_1__.right].indexOf(basePlacement) >= 0 ? { - x: distance, - y: skidding - } : { - x: skidding, - y: distance - }; -} - -function offset(_ref2) { - var state = _ref2.state, - options = _ref2.options, - name = _ref2.name; - var _options$offset = options.offset, - offset = _options$offset === void 0 ? [0, 0] : _options$offset; - var data = _enums_js__WEBPACK_IMPORTED_MODULE_1__.placements.reduce(function (acc, placement) { - acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset); - return acc; - }, {}); - var _data$state$placement = data[state.placement], - x = _data$state$placement.x, - y = _data$state$placement.y; - - if (state.modifiersData.popperOffsets != null) { - state.modifiersData.popperOffsets.x += x; - state.modifiersData.popperOffsets.y += y; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'offset', - enabled: true, - phase: 'main', - requires: ['popperOffsets'], - fn: offset -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); - - -function popperOffsets(_ref) { - var state = _ref.state, - name = _ref.name; - // Offsets are the actual position the popper needs to have to be - // properly positioned near its reference element - // This is the most basic placement, and will be adjusted by - // the modifiers in the next step - state.modifiersData[name] = (0,_utils_computeOffsets_js__WEBPACK_IMPORTED_MODULE_0__["default"])({ - reference: state.rects.reference, - element: state.rects.popper, - strategy: 'absolute', - placement: state.placement - }); -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'popperOffsets', - enabled: true, - phase: 'read', - fn: popperOffsets, - data: {} -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js": -/*!**********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js ***! - \**********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/getAltAxis.js */ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js"); -/* harmony import */ var _utils_within_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../utils/within.js */ "./node_modules/@popperjs/core/lib/utils/within.js"); -/* harmony import */ var _dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getLayoutRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js"); -/* harmony import */ var _dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../dom-utils/getOffsetParent.js */ "./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js"); -/* harmony import */ var _utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../utils/getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); -/* harmony import */ var _utils_math_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ../utils/math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - - - - - - - - - - - - -function preventOverflow(_ref) { - var state = _ref.state, - options = _ref.options, - name = _ref.name; - var _options$mainAxis = options.mainAxis, - checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis, - _options$altAxis = options.altAxis, - checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis, - boundary = options.boundary, - rootBoundary = options.rootBoundary, - altBoundary = options.altBoundary, - padding = options.padding, - _options$tether = options.tether, - tether = _options$tether === void 0 ? true : _options$tether, - _options$tetherOffset = options.tetherOffset, - tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset; - var overflow = (0,_utils_detectOverflow_js__WEBPACK_IMPORTED_MODULE_0__["default"])(state, { - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding, - altBoundary: altBoundary - }); - var basePlacement = (0,_utils_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_1__["default"])(state.placement); - var variation = (0,_utils_getVariation_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state.placement); - var isBasePlacement = !variation; - var mainAxis = (0,_utils_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement); - var altAxis = (0,_utils_getAltAxis_js__WEBPACK_IMPORTED_MODULE_4__["default"])(mainAxis); - var popperOffsets = state.modifiersData.popperOffsets; - var referenceRect = state.rects.reference; - var popperRect = state.rects.popper; - var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, { - placement: state.placement - })) : tetherOffset; - var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? { - mainAxis: tetherOffsetValue, - altAxis: tetherOffsetValue - } : Object.assign({ - mainAxis: 0, - altAxis: 0 - }, tetherOffsetValue); - var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null; - var data = { - x: 0, - y: 0 - }; - - if (!popperOffsets) { - return; - } - - if (checkMainAxis) { - var _offsetModifierState$; - - var mainSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; - var altSide = mainAxis === 'y' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; - var len = mainAxis === 'y' ? 'height' : 'width'; - var offset = popperOffsets[mainAxis]; - var min = offset + overflow[mainSide]; - var max = offset - overflow[altSide]; - var additive = tether ? -popperRect[len] / 2 : 0; - var minLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? referenceRect[len] : popperRect[len]; - var maxLen = variation === _enums_js__WEBPACK_IMPORTED_MODULE_5__.start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go - // outside the reference bounds - - var arrowElement = state.elements.arrow; - var arrowRect = tether && arrowElement ? (0,_dom_utils_getLayoutRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(arrowElement) : { - width: 0, - height: 0 - }; - var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : (0,_utils_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_7__["default"])(); - var arrowPaddingMin = arrowPaddingObject[mainSide]; - var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want - // to include its full size in the calculation. If the reference is small - // and near the edge of a boundary, the popper can overflow even if the - // reference is not overflowing as well (e.g. virtual elements with no - // width or height) - - var arrowLen = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(0, referenceRect[len], arrowRect[len]); - var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis; - var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis; - var arrowOffsetParent = state.elements.arrow && (0,_dom_utils_getOffsetParent_js__WEBPACK_IMPORTED_MODULE_9__["default"])(state.elements.arrow); - var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0; - var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0; - var tetherMin = offset + minOffset - offsetModifierValue - clientOffset; - var tetherMax = offset + maxOffset - offsetModifierValue; - var preventedOffset = (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.min)(min, tetherMin) : min, offset, tether ? (0,_utils_math_js__WEBPACK_IMPORTED_MODULE_10__.max)(max, tetherMax) : max); - popperOffsets[mainAxis] = preventedOffset; - data[mainAxis] = preventedOffset - offset; - } - - if (checkAltAxis) { - var _offsetModifierState$2; - - var _mainSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.top : _enums_js__WEBPACK_IMPORTED_MODULE_5__.left; - - var _altSide = mainAxis === 'x' ? _enums_js__WEBPACK_IMPORTED_MODULE_5__.bottom : _enums_js__WEBPACK_IMPORTED_MODULE_5__.right; - - var _offset = popperOffsets[altAxis]; - - var _len = altAxis === 'y' ? 'height' : 'width'; - - var _min = _offset + overflow[_mainSide]; - - var _max = _offset - overflow[_altSide]; - - var isOriginSide = [_enums_js__WEBPACK_IMPORTED_MODULE_5__.top, _enums_js__WEBPACK_IMPORTED_MODULE_5__.left].indexOf(basePlacement) !== -1; - - var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0; - - var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis; - - var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max; - - var _preventedOffset = tether && isOriginSide ? (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.withinMaxClamp)(_tetherMin, _offset, _tetherMax) : (0,_utils_within_js__WEBPACK_IMPORTED_MODULE_8__.within)(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max); - - popperOffsets[altAxis] = _preventedOffset; - data[altAxis] = _preventedOffset - _offset; - } - - state.modifiersData[name] = data; -} // eslint-disable-next-line import/no-unused-modules - - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'preventOverflow', - enabled: true, - phase: 'main', - fn: preventOverflow, - requiresIfExists: ['offset'] -}); - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/popper-lite.js": -/*!********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/popper-lite.js ***! - \********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "createPopper": () => (/* binding */ createPopper), -/* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers), -/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_5__["default"]), -/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator) -/* harmony export */ }); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); - - - - - -var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"]]; -var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_4__.popperGenerator)({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/popper.js": -/*!***************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/popper.js ***! - \***************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "applyStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.applyStyles), -/* harmony export */ "arrow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.arrow), -/* harmony export */ "computeStyles": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.computeStyles), -/* harmony export */ "createPopper": () => (/* binding */ createPopper), -/* harmony export */ "createPopperLite": () => (/* reexport safe */ _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__.createPopper), -/* harmony export */ "defaultModifiers": () => (/* binding */ defaultModifiers), -/* harmony export */ "detectOverflow": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_10__["default"]), -/* harmony export */ "eventListeners": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.eventListeners), -/* harmony export */ "flip": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.flip), -/* harmony export */ "hide": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.hide), -/* harmony export */ "offset": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.offset), -/* harmony export */ "popperGenerator": () => (/* reexport safe */ _createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator), -/* harmony export */ "popperOffsets": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.popperOffsets), -/* harmony export */ "preventOverflow": () => (/* reexport safe */ _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__.preventOverflow) -/* harmony export */ }); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/createPopper.js"); -/* harmony import */ var _createPopper_js__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./createPopper.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./modifiers/eventListeners.js */ "./node_modules/@popperjs/core/lib/modifiers/eventListeners.js"); -/* harmony import */ var _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./modifiers/popperOffsets.js */ "./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js"); -/* harmony import */ var _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./modifiers/computeStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/computeStyles.js"); -/* harmony import */ var _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./modifiers/applyStyles.js */ "./node_modules/@popperjs/core/lib/modifiers/applyStyles.js"); -/* harmony import */ var _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./modifiers/offset.js */ "./node_modules/@popperjs/core/lib/modifiers/offset.js"); -/* harmony import */ var _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./modifiers/flip.js */ "./node_modules/@popperjs/core/lib/modifiers/flip.js"); -/* harmony import */ var _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./modifiers/preventOverflow.js */ "./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js"); -/* harmony import */ var _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./modifiers/arrow.js */ "./node_modules/@popperjs/core/lib/modifiers/arrow.js"); -/* harmony import */ var _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./modifiers/hide.js */ "./node_modules/@popperjs/core/lib/modifiers/hide.js"); -/* harmony import */ var _popper_lite_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./popper-lite.js */ "./node_modules/@popperjs/core/lib/popper-lite.js"); -/* harmony import */ var _modifiers_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./modifiers/index.js */ "./node_modules/@popperjs/core/lib/modifiers/index.js"); - - - - - - - - - - -var defaultModifiers = [_modifiers_eventListeners_js__WEBPACK_IMPORTED_MODULE_0__["default"], _modifiers_popperOffsets_js__WEBPACK_IMPORTED_MODULE_1__["default"], _modifiers_computeStyles_js__WEBPACK_IMPORTED_MODULE_2__["default"], _modifiers_applyStyles_js__WEBPACK_IMPORTED_MODULE_3__["default"], _modifiers_offset_js__WEBPACK_IMPORTED_MODULE_4__["default"], _modifiers_flip_js__WEBPACK_IMPORTED_MODULE_5__["default"], _modifiers_preventOverflow_js__WEBPACK_IMPORTED_MODULE_6__["default"], _modifiers_arrow_js__WEBPACK_IMPORTED_MODULE_7__["default"], _modifiers_hide_js__WEBPACK_IMPORTED_MODULE_8__["default"]]; -var createPopper = /*#__PURE__*/(0,_createPopper_js__WEBPACK_IMPORTED_MODULE_9__.popperGenerator)({ - defaultModifiers: defaultModifiers -}); // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - // eslint-disable-next-line import/no-unused-modules - - - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ computeAutoPlacement) -/* harmony export */ }); -/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./detectOverflow.js */ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js"); -/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); - - - - -function computeAutoPlacement(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - placement = _options.placement, - boundary = _options.boundary, - rootBoundary = _options.rootBoundary, - padding = _options.padding, - flipVariations = _options.flipVariations, - _options$allowedAutoP = _options.allowedAutoPlacements, - allowedAutoPlacements = _options$allowedAutoP === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.placements : _options$allowedAutoP; - var variation = (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement); - var placements = variation ? flipVariations ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements : _enums_js__WEBPACK_IMPORTED_MODULE_0__.variationPlacements.filter(function (placement) { - return (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) === variation; - }) : _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements; - var allowedPlacements = placements.filter(function (placement) { - return allowedAutoPlacements.indexOf(placement) >= 0; - }); - - if (allowedPlacements.length === 0) { - allowedPlacements = placements; - - if (true) { - console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, "auto" cannot be used to allow "bottom-start".', 'Use "auto-start" instead.'].join(' ')); - } - } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions... - - - var overflows = allowedPlacements.reduce(function (acc, placement) { - acc[placement] = (0,_detectOverflow_js__WEBPACK_IMPORTED_MODULE_2__["default"])(state, { - placement: placement, - boundary: boundary, - rootBoundary: rootBoundary, - padding: padding - })[(0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(placement)]; - return acc; - }, {}); - return Object.keys(overflows).sort(function (a, b) { - return overflows[a] - overflows[b]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/computeOffsets.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ computeOffsets) -/* harmony export */ }); -/* harmony import */ var _getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getBasePlacement.js */ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js"); -/* harmony import */ var _getVariation_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getVariation.js */ "./node_modules/@popperjs/core/lib/utils/getVariation.js"); -/* harmony import */ var _getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./getMainAxisFromPlacement.js */ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - - - -function computeOffsets(_ref) { - var reference = _ref.reference, - element = _ref.element, - placement = _ref.placement; - var basePlacement = placement ? (0,_getBasePlacement_js__WEBPACK_IMPORTED_MODULE_0__["default"])(placement) : null; - var variation = placement ? (0,_getVariation_js__WEBPACK_IMPORTED_MODULE_1__["default"])(placement) : null; - var commonX = reference.x + reference.width / 2 - element.width / 2; - var commonY = reference.y + reference.height / 2 - element.height / 2; - var offsets; - - switch (basePlacement) { - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.top: - offsets = { - x: commonX, - y: reference.y - element.height - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.bottom: - offsets = { - x: commonX, - y: reference.y + reference.height - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.right: - offsets = { - x: reference.x + reference.width, - y: commonY - }; - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.left: - offsets = { - x: reference.x - element.width, - y: commonY - }; - break; - - default: - offsets = { - x: reference.x, - y: reference.y - }; - } - - var mainAxis = basePlacement ? (0,_getMainAxisFromPlacement_js__WEBPACK_IMPORTED_MODULE_3__["default"])(basePlacement) : null; - - if (mainAxis != null) { - var len = mainAxis === 'y' ? 'height' : 'width'; - - switch (variation) { - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.start: - offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2); - break; - - case _enums_js__WEBPACK_IMPORTED_MODULE_2__.end: - offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2); - break; - - default: - } - } - - return offsets; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/debounce.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/debounce.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ debounce) -/* harmony export */ }); -function debounce(fn) { - var pending; - return function () { - if (!pending) { - pending = new Promise(function (resolve) { - Promise.resolve().then(function () { - pending = undefined; - resolve(fn()); - }); - }); - } - - return pending; - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/detectOverflow.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/detectOverflow.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ detectOverflow) -/* harmony export */ }); -/* harmony import */ var _dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../dom-utils/getClippingRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js"); -/* harmony import */ var _dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../dom-utils/getDocumentElement.js */ "./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js"); -/* harmony import */ var _dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../dom-utils/getBoundingClientRect.js */ "./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js"); -/* harmony import */ var _computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./computeOffsets.js */ "./node_modules/@popperjs/core/lib/utils/computeOffsets.js"); -/* harmony import */ var _rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./rectToClientRect.js */ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); -/* harmony import */ var _dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../dom-utils/instanceOf.js */ "./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js"); -/* harmony import */ var _mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./mergePaddingObject.js */ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js"); -/* harmony import */ var _expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./expandToHashMap.js */ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js"); - - - - - - - - - // eslint-disable-next-line import/no-unused-modules - -function detectOverflow(state, options) { - if (options === void 0) { - options = {}; - } - - var _options = options, - _options$placement = _options.placement, - placement = _options$placement === void 0 ? state.placement : _options$placement, - _options$strategy = _options.strategy, - strategy = _options$strategy === void 0 ? state.strategy : _options$strategy, - _options$boundary = _options.boundary, - boundary = _options$boundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.clippingParents : _options$boundary, - _options$rootBoundary = _options.rootBoundary, - rootBoundary = _options$rootBoundary === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.viewport : _options$rootBoundary, - _options$elementConte = _options.elementContext, - elementContext = _options$elementConte === void 0 ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper : _options$elementConte, - _options$altBoundary = _options.altBoundary, - altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary, - _options$padding = _options.padding, - padding = _options$padding === void 0 ? 0 : _options$padding; - var paddingObject = (0,_mergePaddingObject_js__WEBPACK_IMPORTED_MODULE_1__["default"])(typeof padding !== 'number' ? padding : (0,_expandToHashMap_js__WEBPACK_IMPORTED_MODULE_2__["default"])(padding, _enums_js__WEBPACK_IMPORTED_MODULE_0__.basePlacements)); - var altContext = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? _enums_js__WEBPACK_IMPORTED_MODULE_0__.reference : _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper; - var popperRect = state.rects.popper; - var element = state.elements[altBoundary ? altContext : elementContext]; - var clippingClientRect = (0,_dom_utils_getClippingRect_js__WEBPACK_IMPORTED_MODULE_3__["default"])((0,_dom_utils_instanceOf_js__WEBPACK_IMPORTED_MODULE_4__.isElement)(element) ? element : element.contextElement || (0,_dom_utils_getDocumentElement_js__WEBPACK_IMPORTED_MODULE_5__["default"])(state.elements.popper), boundary, rootBoundary, strategy); - var referenceClientRect = (0,_dom_utils_getBoundingClientRect_js__WEBPACK_IMPORTED_MODULE_6__["default"])(state.elements.reference); - var popperOffsets = (0,_computeOffsets_js__WEBPACK_IMPORTED_MODULE_7__["default"])({ - reference: referenceClientRect, - element: popperRect, - strategy: 'absolute', - placement: placement - }); - var popperClientRect = (0,_rectToClientRect_js__WEBPACK_IMPORTED_MODULE_8__["default"])(Object.assign({}, popperRect, popperOffsets)); - var elementClientRect = elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect - // 0 or negative = within the clipping rect - - var overflowOffsets = { - top: clippingClientRect.top - elementClientRect.top + paddingObject.top, - bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom, - left: clippingClientRect.left - elementClientRect.left + paddingObject.left, - right: elementClientRect.right - clippingClientRect.right + paddingObject.right - }; - var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element - - if (elementContext === _enums_js__WEBPACK_IMPORTED_MODULE_0__.popper && offsetData) { - var offset = offsetData[placement]; - Object.keys(overflowOffsets).forEach(function (key) { - var multiply = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.right, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 1 : -1; - var axis = [_enums_js__WEBPACK_IMPORTED_MODULE_0__.top, _enums_js__WEBPACK_IMPORTED_MODULE_0__.bottom].indexOf(key) >= 0 ? 'y' : 'x'; - overflowOffsets[key] += offset[axis] * multiply; - }); - } - - return overflowOffsets; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/expandToHashMap.js": -/*!******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/expandToHashMap.js ***! - \******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ expandToHashMap) -/* harmony export */ }); -function expandToHashMap(value, keys) { - return keys.reduce(function (hashMap, key) { - hashMap[key] = value; - return hashMap; - }, {}); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/format.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/format.js ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ format) -/* harmony export */ }); -function format(str) { - for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { - args[_key - 1] = arguments[_key]; - } - - return [].concat(args).reduce(function (p, c) { - return p.replace(/%s/, c); - }, str); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getAltAxis.js": -/*!*************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getAltAxis.js ***! - \*************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getAltAxis) -/* harmony export */ }); -function getAltAxis(axis) { - return axis === 'x' ? 'y' : 'x'; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getBasePlacement.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getBasePlacement.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getBasePlacement) -/* harmony export */ }); - -function getBasePlacement(placement) { - return placement.split('-')[0]; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getFreshSideObject) -/* harmony export */ }); -function getFreshSideObject() { - return { - top: 0, - right: 0, - bottom: 0, - left: 0 - }; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js": -/*!***************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js ***! - \***************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getMainAxisFromPlacement) -/* harmony export */ }); -function getMainAxisFromPlacement(placement) { - return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y'; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js": -/*!***********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js ***! - \***********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getOppositePlacement) -/* harmony export */ }); -var hash = { - left: 'right', - right: 'left', - bottom: 'top', - top: 'bottom' -}; -function getOppositePlacement(placement) { - return placement.replace(/left|right|bottom|top/g, function (matched) { - return hash[matched]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js": -/*!********************************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js ***! - \********************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getOppositeVariationPlacement) -/* harmony export */ }); -var hash = { - start: 'end', - end: 'start' -}; -function getOppositeVariationPlacement(placement) { - return placement.replace(/start|end/g, function (matched) { - return hash[matched]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/getVariation.js": -/*!***************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/getVariation.js ***! - \***************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getVariation) -/* harmony export */ }); -function getVariation(placement) { - return placement.split('-')[1]; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/math.js": -/*!*******************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/math.js ***! - \*******************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "max": () => (/* binding */ max), -/* harmony export */ "min": () => (/* binding */ min), -/* harmony export */ "round": () => (/* binding */ round) -/* harmony export */ }); -var max = Math.max; -var min = Math.min; -var round = Math.round; - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/mergeByName.js": -/*!**************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/mergeByName.js ***! - \**************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ mergeByName) -/* harmony export */ }); -function mergeByName(modifiers) { - var merged = modifiers.reduce(function (merged, current) { - var existing = merged[current.name]; - merged[current.name] = existing ? Object.assign({}, existing, current, { - options: Object.assign({}, existing.options, current.options), - data: Object.assign({}, existing.data, current.data) - }) : current; - return merged; - }, {}); // IE11 does not support Object.values - - return Object.keys(merged).map(function (key) { - return merged[key]; - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js": -/*!*********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js ***! - \*********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ mergePaddingObject) -/* harmony export */ }); -/* harmony import */ var _getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getFreshSideObject.js */ "./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js"); - -function mergePaddingObject(paddingObject) { - return Object.assign({}, (0,_getFreshSideObject_js__WEBPACK_IMPORTED_MODULE_0__["default"])(), paddingObject); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/orderModifiers.js": -/*!*****************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/orderModifiers.js ***! - \*****************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ orderModifiers) -/* harmony export */ }); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - // source: https://stackoverflow.com/questions/49875255 - -function order(modifiers) { - var map = new Map(); - var visited = new Set(); - var result = []; - modifiers.forEach(function (modifier) { - map.set(modifier.name, modifier); - }); // On visiting object, check for its dependencies and visit them recursively - - function sort(modifier) { - visited.add(modifier.name); - var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []); - requires.forEach(function (dep) { - if (!visited.has(dep)) { - var depModifier = map.get(dep); - - if (depModifier) { - sort(depModifier); - } - } - }); - result.push(modifier); - } - - modifiers.forEach(function (modifier) { - if (!visited.has(modifier.name)) { - // check for visited object - sort(modifier); - } - }); - return result; -} - -function orderModifiers(modifiers) { - // order based on dependencies - var orderedModifiers = order(modifiers); // order based on phase - - return _enums_js__WEBPACK_IMPORTED_MODULE_0__.modifierPhases.reduce(function (acc, phase) { - return acc.concat(orderedModifiers.filter(function (modifier) { - return modifier.phase === phase; - })); - }, []); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/rectToClientRect.js": -/*!*******************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/rectToClientRect.js ***! - \*******************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ rectToClientRect) -/* harmony export */ }); -function rectToClientRect(rect) { - return Object.assign({}, rect, { - left: rect.x, - top: rect.y, - right: rect.x + rect.width, - bottom: rect.y + rect.height - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/uniqueBy.js": -/*!***********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/uniqueBy.js ***! - \***********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ uniqueBy) -/* harmony export */ }); -function uniqueBy(arr, fn) { - var identifiers = new Set(); - return arr.filter(function (item) { - var identifier = fn(item); - - if (!identifiers.has(identifier)) { - identifiers.add(identifier); - return true; - } - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/userAgent.js": -/*!************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/userAgent.js ***! - \************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ getUAString) -/* harmony export */ }); -function getUAString() { - var uaData = navigator.userAgentData; - - if (uaData != null && uaData.brands) { - return uaData.brands.map(function (item) { - return item.brand + "/" + item.version; - }).join(' '); - } - - return navigator.userAgent; -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/validateModifiers.js": -/*!********************************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/validateModifiers.js ***! - \********************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ validateModifiers) -/* harmony export */ }); -/* harmony import */ var _format_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./format.js */ "./node_modules/@popperjs/core/lib/utils/format.js"); -/* harmony import */ var _enums_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../enums.js */ "./node_modules/@popperjs/core/lib/enums.js"); - - -var INVALID_MODIFIER_ERROR = 'Popper: modifier "%s" provided an invalid %s property, expected %s but got %s'; -var MISSING_DEPENDENCY_ERROR = 'Popper: modifier "%s" requires "%s", but "%s" modifier is not available'; -var VALID_PROPERTIES = ['name', 'enabled', 'phase', 'fn', 'effect', 'requires', 'options']; -function validateModifiers(modifiers) { - modifiers.forEach(function (modifier) { - [].concat(Object.keys(modifier), VALID_PROPERTIES) // IE11-compatible replacement for `new Set(iterable)` - .filter(function (value, index, self) { - return self.indexOf(value) === index; - }).forEach(function (key) { - switch (key) { - case 'name': - if (typeof modifier.name !== 'string') { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, String(modifier.name), '"name"', '"string"', "\"" + String(modifier.name) + "\"")); - } - - break; - - case 'enabled': - if (typeof modifier.enabled !== 'boolean') { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"enabled"', '"boolean"', "\"" + String(modifier.enabled) + "\"")); - } - - break; - - case 'phase': - if (_enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.indexOf(modifier.phase) < 0) { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"phase"', "either " + _enums_js__WEBPACK_IMPORTED_MODULE_1__.modifierPhases.join(', '), "\"" + String(modifier.phase) + "\"")); - } - - break; - - case 'fn': - if (typeof modifier.fn !== 'function') { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"fn"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'effect': - if (modifier.effect != null && typeof modifier.effect !== 'function') { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"effect"', '"function"', "\"" + String(modifier.fn) + "\"")); - } - - break; - - case 'requires': - if (modifier.requires != null && !Array.isArray(modifier.requires)) { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requires"', '"array"', "\"" + String(modifier.requires) + "\"")); - } - - break; - - case 'requiresIfExists': - if (!Array.isArray(modifier.requiresIfExists)) { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(INVALID_MODIFIER_ERROR, modifier.name, '"requiresIfExists"', '"array"', "\"" + String(modifier.requiresIfExists) + "\"")); - } - - break; - - case 'options': - case 'data': - break; - - default: - console.error("PopperJS: an invalid property has been provided to the \"" + modifier.name + "\" modifier, valid properties are " + VALID_PROPERTIES.map(function (s) { - return "\"" + s + "\""; - }).join(', ') + "; but \"" + key + "\" was provided."); - } - - modifier.requires && modifier.requires.forEach(function (requirement) { - if (modifiers.find(function (mod) { - return mod.name === requirement; - }) == null) { - console.error((0,_format_js__WEBPACK_IMPORTED_MODULE_0__["default"])(MISSING_DEPENDENCY_ERROR, String(modifier.name), requirement, requirement)); - } - }); - }); - }); -} - -/***/ }), - -/***/ "./node_modules/@popperjs/core/lib/utils/within.js": -/*!*********************************************************!*\ - !*** ./node_modules/@popperjs/core/lib/utils/within.js ***! - \*********************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "within": () => (/* binding */ within), -/* harmony export */ "withinMaxClamp": () => (/* binding */ withinMaxClamp) -/* harmony export */ }); -/* harmony import */ var _math_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./math.js */ "./node_modules/@popperjs/core/lib/utils/math.js"); - -function within(min, value, max) { - return (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.max)(min, (0,_math_js__WEBPACK_IMPORTED_MODULE_0__.min)(value, max)); -} -function withinMaxClamp(min, value, max) { - var v = within(min, value, max); - return v > max ? max : v; -} - -/***/ }), - -/***/ "./node_modules/bootstrap-autocomplete/dist/latest/bootstrap-autocomplete.js": -/*!***********************************************************************************!*\ - !*** ./node_modules/bootstrap-autocomplete/dist/latest/bootstrap-autocomplete.js ***! - \***********************************************************************************/ -/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => { - -/* provided dependency */ var $ = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); -/* provided dependency */ var jQuery = __webpack_require__(/*! jquery */ "./node_modules/jquery/dist/jquery.js"); -!function(t){var e={};function s(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,s),o.l=!0,o.exports}s.m=t,s.c=e,s.d=function(t,e,i){s.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:i})},s.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},s.t=function(t,e){if(1&e&&(t=s(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var i=Object.create(null);if(s.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)s.d(i,o,function(e){return t[e]}.bind(null,o));return i},s.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return s.d(e,"a",e),e},s.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},s.p="",s(s.s=0)}([function(t,e,s){"use strict";s.r(e),s.d(e,"AutoComplete",(function(){return a}));var i,o=(i=function(t,e){return(i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,e){t.__proto__=e}||function(t,e){for(var s in e)e.hasOwnProperty(s)&&(t[s]=e[s])})(t,e)},function(t,e){function s(){this.constructor=t}i(t,e),t.prototype=null===e?Object.create(e):(s.prototype=e.prototype,new s)}),n=function(t){function e(e){return t.call(this,e)||this}return o(e,t),e.prototype.getDefaults=function(){return{url:"",method:"get",queryKey:"q",extraData:{},timeout:void 0,requestThrottling:500}},e.prototype.search=function(t,e){var s=this;null!=this.jqXHR&&this.jqXHR.abort();var i={};i[this._settings.queryKey]=t,$.extend(i,this._settings.extraData),this.requestTID&&window.clearTimeout(this.requestTID),this.requestTID=window.setTimeout((function(){s.jqXHR=$.ajax(s._settings.url,{method:s._settings.method,data:i,timeout:s._settings.timeout}),s.jqXHR.done((function(t){e(t)})),s.jqXHR.fail((function(t){var e;null===(e=s._settings)||void 0===e||e.fail(t)})),s.jqXHR.always((function(){s.jqXHR=null}))}),this._settings.requestThrottling)},e}(function(){function t(t){this._settings=$.extend(!0,{},this.getDefaults(),t)}return t.prototype.getDefaults=function(){return{}},t.prototype.getResults=function(t,e,s){return this.results},t.prototype.search=function(t,e){e(this.getResults())},t}()),r=function(){function t(t,e,s,i){this.initialized=!1,this.shown=!1,this.items=[],this.ddMouseover=!1,this._$el=t,this.formatItem=e,this.autoSelect=s,this.noResultsText=i}return t.prototype.init=function(){var t=this,e=$.extend({},this._$el.position(),{height:this._$el[0].offsetHeight});this._dd=$("
    ",{scope:"col"}).appendTo(a);n.appendTo(t);for(var l=e("
    ").appendTo(u);l.appendTo(t),d(t);for(var b=o.range.endContainer;b.nodeType!==Node.ELEMENT_NODE;)b=b.parentNode;b!==o.$ed[0]&&o.range.setEndAfter(b),o.range.collapse(),o.range.insertNode(t[0]),"P"===b.nodeName&&0===b.textContent.trim().length&&b.remove(),o.syncCode(),M()},u=function(t){for(var n=e("tr",t),a=[],o=0;o0?i:1,10),c=parseInt(s>0?s:1,10);void 0!==a[t][o];)o+=1;a[t][o]={tag:r.tagName,element:r,colspan:d,rowspan:c};for(var u=1;u"),c=i.index(a);if(t)c=Math.max(0,c-1),a=e(i[c]);else{var u=e(r).closest("td, th",o.$ed[0]).attr("rowspan"),f=parseInt(u||1,10);a=e(i[c+=f-1])}var b=e("tbody tr",n),g=0!==a.closest("thead").length;g&&(a=b.first());for(var p=l[c],h=l[c+1],m=l[0].length,v=0;v").appendTo(s)}0===c&&(t||g)?a.before(s):a.after(s),d(n),M()}))},g={title:o.lang.tableAddRowAbove,text:o.lang.tableAddRowAbove,ico:"row-above",fn:b(!0)},p={title:o.lang.tableAddRow,text:o.lang.tableAddRow,ico:"row-below",fn:b(!1)},h={title:o.lang.tableAddHeaderRow,text:o.lang.tableAddHeaderRow,ico:"header-row",fn:f((function(t,n,a,o){if(0!==e("thead",t).length)return!1;for(var r=o[0].length,l=e("
    + + {% for election in all_elections_date %} + {% if loop.index <= 5 %} + + + + + + {% endif %} + {% endfor %} + +
    + {{ + ('election.table_title_' ~ typeElection.id)|trans({ + year: election.date|date('Y') + }) + }} + + + {{ "Plus d'infos sur cette élection"|trans }} + +
    + +
    + + + + {% for election in all_elections_date|slice(5) %} + + + + + {% endfor %} + +
    + {{ + ('election.table_title_' ~ typeElection.id)|trans({ + year: election.date|date('Y') + }) + }} + + + {{ "Plus d'infos sur cette élection"|trans }} + +
    +
    + + {% if (all_elections_date|length) > 5 %} +
    + +
    + {% endif %} + + +
    +
    {{ typeElection.allAbout|raw }}
    +
    + + {% set i = 0 %} +
    +

    {{ 'Les autres élections en Belgique'|trans }}

    + {% for election in all_elections_type %} + {% if election.name != typeElection.name %} + {% set i = i + 1 %} + {% include 'election/_all-elections.html.twig' with { + election: election, + is_odd: i is odd + } %} + {% endif %} + {% endfor %} +
    +
    +{% endblock %} -
    +{% block javascripts %} + {{ parent() }} + {{ encore_entry_script_tags('election') }} {% endblock %} diff --git a/templates/layout/_type-elections.html.twig b/templates/layout/_type-elections.html.twig index e8d0082c..46fb8cb8 100644 --- a/templates/layout/_type-elections.html.twig +++ b/templates/layout/_type-elections.html.twig @@ -1,7 +1,7 @@ {% for typeElection in typeElections %} {% if typeElection.name and typeElection.slug %}
  • - {{ typeElection.slug }} + {{ typeElection.name|raw }}
  • {% endif %} {% endfor %} \ No newline at end of file diff --git a/translations/EasyAdminBundle.en.xlf b/translations/EasyAdminBundle.en.xlf new file mode 100644 index 00000000..07e5602f --- /dev/null +++ b/translations/EasyAdminBundle.en.xlf @@ -0,0 +1,386 @@ + + + +
    + +
    + + + page_title.dashboard + Dashboard + + + page_title.detail + (#%entity_short_id%)]]> + + + page_title.edit + Edit %entity_label_singular% + + + page_title.index + %entity_label_plural% + + + page_title.new + Create %entity_label_singular% + + + page_title.exception + Error|Errors + + + datagrid.hidden_results + Some results can't be displayed because you don't have enough permissions + + + datagrid.no_results + No results found. + + + paginator.first + First + + + paginator.previous + Previous + + + paginator.next + Next + + + paginator.last + Last + + + paginator.counter + %start% - %end% of %results%]]> + + + paginator.results + 1 result|]1,Inf] %count% results]]> + + + label.true + Yes + + + label.false + No + + + label.empty + Empty + + + label.null + Null + + + label.object + PHP Object + + + label.inaccessible + Inaccessible + + + label.inaccessible.explanation + Getter method does not exist for this field or the field is not public + + + label.form.empty_value + None + + + field.code_editor.view_code + View code + + + field.text_editor.view_content + View content + + + action.entity_actions + Actions + + + action.new + Add %entity_label_singular% + + + action.search + Search + + + action.detail + Show + + + action.edit + Edit + + + action.delete + Delete + + + action.cancel + Cancel + + + action.index + Back to listing + + + action.deselect + Deselect + + + action.add_new_item + Add a new item + + + action.remove_item + Remove the item + + + action.choose_file + Choose file + + + action.close + Close + + + action.create + Create + + + action.create_and_add_another + Create and add another + + + action.create_and_continue + Create and continue editing + + + action.save + Save changes + + + action.save_and_continue + Save and continue editing + + + batch_action_modal.title + You are going to apply the "%action_name%" action to %num_items% item(s). + + + batch_action_modal.content + There is no undo for this operation. + + + batch_action_modal.action + Proceed + + + delete_modal.title + Do you really want to delete this item? + + + delete_modal.content + There is no undo for this operation. + + + filter.title + Filters + + + filter.button.clear + Clear + + + filter.button.apply + Apply + + + filter.label.is_equal_to + is equal to + + + filter.label.is_not_equal_to + is not equal to + + + filter.label.is_greater_than + is greater than + + + filter.label.is_greater_than_or_equal_to + is greater than or equal to + + + filter.label.is_less_than + is less than + + + filter.label.is_less_than_or_equal_to + is less than or equal to + + + filter.label.is_between + is between + + + filter.label.contains + contains + + + filter.label.not_contains + doesn't contain + + + filter.label.starts_with + starts with + + + filter.label.ends_with + ends with + + + filter.label.exactly + exactly + + + filter.label.not_exactly + not exactly + + + filter.label.is_same + is same + + + filter.label.is_not_same + is not same + + + filter.label.is_after + is after + + + filter.label.is_after_or_same + is after or same + + + filter.label.is_before + is before + + + filter.label.is_before_or_same + is before or same + + + form.are_you_sure + You haven't saved the changes made on this form. + + + form.tab.error_badge_title + One invalid input|%count% invalid inputs + + + form.slug.confirm_text + If you change the slug, you can break links on other pages. + + + user.logged_in_as + Logged in as + + + user.unnamed + Unnamed User + + + user.anonymous + Anonymous User + + + user.sign_out + Sign out + + + user.exit_impersonation + Exit impersonation + + + settings.appearance.label + Appearance + + + settings.appearance.light + Light + + + settings.appearance.dark + Dark + + + settings.appearance.auto + Auto + + + settings.locale + Language + + + login_page.username + Username + + + login_page.password + Password + + + login_page.sign_in + Sign in + + + login_page.forgot_password + Forgot Your Password? + + + login_page.remember_me + Remember me + + + exception.entity_not_found + This item is no longer available. + + + exception.entity_remove + This item can't be deleted because other items depend on it. + + + exception.forbidden_action + The requested action can't be performed on this item. + + + exception.insufficient_entity_permission + You don't have permission to access this item. + + + autocomplete.no-results-found + No results found + + + autocomplete.no-more-results + No more results + + + autocomplete.loading-more-results + Loading more results… + + +
    +
    diff --git a/translations/EasyAdminBundle.fr.xlf b/translations/EasyAdminBundle.fr.xlf new file mode 100644 index 00000000..acfbcc99 --- /dev/null +++ b/translations/EasyAdminBundle.fr.xlf @@ -0,0 +1,386 @@ + + + +
    + +
    + + + page_title.dashboard + Tableau de bord + + + page_title.detail + (#%entity_short_id%)]]> + + + page_title.edit + Modifier %entity_label_singular% + + + page_title.index + %entity_label_plural% + + + page_title.new + Créer "%entity_label_singular%" + + + page_title.exception + Erreur|Erreurs + + + datagrid.hidden_results + Certains résultats ne peuvent pas être affichés car vous n'avez pas la permission + + + datagrid.no_results + Aucun résultat trouvé + + + paginator.first + Premier + + + paginator.previous + Précédent + + + paginator.next + Suivant + + + paginator.last + Dernier + + + paginator.counter + %start% - %end% sur %results%]]> + + + paginator.results + 1 résultat|]1,Inf] %count% résultats]]> + + + label.true + Oui + + + label.false + Non + + + label.empty + Vide + + + label.null + Aucun(e) + + + label.object + Objet PHP + + + label.inaccessible + Inaccessible + + + label.inaccessible.explanation + Aucun accesseur n'existe pour cette propriété ou celle-ci n'est pas publique. + + + label.form.empty_value + Aucun(e) + + + field.code_editor.view_code + Voir le code + + + field.text_editor.view_content + Voir le contenu + + + action.entity_actions + Actions + + + action.new + Créer %entity_label_singular% + + + action.search + Rechercher + + + action.detail + Consulter + + + action.edit + Modifier + + + action.delete + Supprimer + + + action.cancel + Annuler + + + action.index + Retour à la liste + + + action.deselect + Désélectionner + + + action.add_new_item + Ajouter un nouvel élément + + + action.remove_item + Supprimer l'élément + + + action.choose_file + Choisir un fichier + + + action.close + Fermer + + + action.create + Créer + + + action.create_and_add_another + Créer et ajouter un nouvel élément + + + action.create_and_continue + Créer et modifier + + + action.save + Sauvegarder les modifications + + + action.save_and_continue + Sauvegarder et modifier + + + batch_action_modal.title + Vous allez appliquer l'action "%action_name%" à %num_items% élément(s). + + + batch_action_modal.content + Cette action est irréversible. + + + batch_action_modal.action + Procéder + + + delete_modal.title + Voulez-vous supprimer cet élément ? + + + delete_modal.content + Cette action est irréversible. + + + filter.title + Filtres + + + filter.button.clear + Effacer + + + filter.button.apply + Appliquer + + + filter.label.is_equal_to + est égal(e) à + + + filter.label.is_not_equal_to + est différent(e) de + + + filter.label.is_greater_than + est supérieur(e) à + + + filter.label.is_greater_than_or_equal_to + est supérieur(e) ou égal(e) à + + + filter.label.is_less_than + est inférieur(e) à + + + filter.label.is_less_than_or_equal_to + est inférieur(e) ou égal(e) à + + + filter.label.is_between + est entre + + + filter.label.contains + contient + + + filter.label.not_contains + ne contient pas + + + filter.label.starts_with + commence par + + + filter.label.ends_with + finit par + + + filter.label.exactly + est strictement égal(e) à + + + filter.label.not_exactly + est strictement différent(e) de + + + filter.label.is_same + est + + + filter.label.is_not_same + n'est pas + + + filter.label.is_after + est postérieure à + + + filter.label.is_after_or_same + est postérieure à ou est le + + + filter.label.is_before + est antérieure à + + + filter.label.is_before_or_same + est antérieure à ou est le + + + form.are_you_sure + Vous n'avez pas sauvegardé vos modifications. + + + form.tab.error_badge_title + 1 champ invalide|%count% champs invalides + + + form.slug.confirm_text + Si vous modifiez le slug, vous pouvez casser des liens sur d'autres pages. + + + user.logged_in_as + Connecté en tant que + + + user.unnamed + Utilisateur sans nom + + + user.anonymous + Utilisateur anonyme + + + user.sign_out + Déconnexion + + + user.exit_impersonation + Arrêter l'impersonnalisation + + + settings.appearance.label + Mode d'apparence + + + settings.appearance.light + Clair + + + settings.appearance.dark + Sombre + + + settings.appearance.auto + Automatique + + + settings.locale + Langue + + + login_page.username + Identifiant + + + login_page.password + Mot de passe + + + login_page.sign_in + Connectez-vous + + + login_page.forgot_password + Mot de passe oublié ? + + + login_page.remember_me + Rester connecté + + + exception.entity_not_found + Cet élément n'est plus disponible. + + + exception.entity_remove + Cet élément ne peut être supprimé car d'autres éléments en dépendent. + + + exception.forbidden_action + L'action demandée ne peut être exécutée sur cet élément. + + + exception.insufficient_entity_permission + Vous n'êtes pas autorisé à accéder à cet élément. + + + autocomplete.no-results-found + Aucun résultat trouvé + + + autocomplete.no-more-results + Aucun autre résultat trouvé + + + autocomplete.loading-more-results + Chargement de résultats supplémentaires… + + +
    +
    diff --git a/translations/EasyAdminBundle.nl.xlf b/translations/EasyAdminBundle.nl.xlf new file mode 100644 index 00000000..c99befe1 --- /dev/null +++ b/translations/EasyAdminBundle.nl.xlf @@ -0,0 +1,382 @@ + + + +
    + +
    + + + page_title.dashboard + Dashboard + + + page_title.detail + (#%entity_short_id%)]]> + + + page_title.edit + %entity_label_singular% + + + page_title.index + %entity_label_plural% + + + page_title.new + Maak nieuw(e) %entity_label_singular% + + + page_title.exception + Fout|Fouten + + + datagrid.hidden_results + Sommige resultaten konden niet worden weergegeven, toegang geweigerd. + + + datagrid.no_results + Geen resultaten gevonden. + + + paginator.first + Eerste + + + paginator.previous + Vorige + + + paginator.next + Volgende + + + paginator.last + Laatste + + + paginator.counter + %start% - %end% van %results%]]> + + + paginator.results + 1 resultaat|]1,Inf] %count% resultaten]]> + + + label.true + Ja + + + label.false + Nee + + + label.empty + Leeg + + + label.null + Niets + + + label.object + PHP Object + + + label.inaccessible + Niet toegankelijk + + + label.inaccessible.explanation + Getter bestaat niet voor dit veld of de eigenschap is niet public + + + label.form.empty_value + Geen + + + field.code_editor.view_code + Bekijk code + + + field.text_editor.view_content + Bekijk inhoud + + + action.entity_actions + Acties + + + action.new + Nieuw(e) %entity_label_singular% + + + action.search + Zoeken + + + action.detail + Bekijk + + + action.edit + Bewerken + + + action.delete + Verwijderen + + + action.cancel + Annuleren + + + action.index + Terug naar overzicht + + + action.deselect + Selectie ongedaan maken + + + action.add_new_item + Voeg een item toe + + + action.remove_item + Verwijder dit item + + + action.choose_file + Bestand kiezen + + + action.close + Sluiten + + + action.create + Aanmaken + + + action.create_and_add_another + Aanmaken en nieuwe toevoegen + + + action.create_and_continue + Aanmaken en verdergaan + + + action.save + Opslaan + + + action.save_and_continue + Opslaan en verdergaan + + + batch_action_modal.title + Wil je alle geselecteerde items bewerken? + + + batch_action_modal.content + Je kan deze actie niet ongedaan maken. + + + batch_action_modal.action + Verdergaan + + + delete_modal.title + Weet je zeker dat je dit item wilt verwijderen? + + + delete_modal.content + Deze actie kan niet ongedaan worden gemaakt. + + + filter.title + Filters + + + filter.button.clear + Wis filters + + + filter.button.apply + Toepassen + + + filter.label.is_equal_to + is gelijk aan + + + filter.label.is_not_equal_to + is niet gelijk aan + + + filter.label.is_greater_than + is groter dan + + + filter.label.is_greater_than_or_equal_to + is groter dan of gelijk aan + + + filter.label.is_less_than + is minder dan + + + filter.label.is_less_than_or_equal_to + is minder dan of gelijk aan + + + filter.label.is_between + ligt tussen + + + filter.label.contains + bevat + + + filter.label.not_contains + bevat niet + + + filter.label.starts_with + start met + + + filter.label.ends_with + eindigt met + + + filter.label.exactly + exact + + + filter.label.not_exactly + niet exact + + + filter.label.is_same + is hetzelfde + + + filter.label.is_not_same + is niet hetzelfde + + + filter.label.is_after + is na + + + filter.label.is_after_or_same + is na of gelijk aan + + + filter.label.is_before + is voor + + + filter.label.is_before_or_same + is voor of gelijk aan + + + form.are_you_sure + Je hebt de wijzigingen op dit formulier nog niet opgeslagen. + + + form.tab.error_badge_title + Een ongeldige input|%count% ongeldige inputs + + + user.logged_in_as + Aangemeld als + + + user.unnamed + Naamloze gebruiker + + + user.anonymous + Anonieme gebruiker + + + user.sign_out + Uitloggen + + + user.exit_impersonation + Verlaat verpersoonlijking + + + settings.appearance.label + Weergave + + + settings.appearance.light + Licht + + + settings.appearance.dark + Donker + + + settings.appearance.auto + Automatisch + + + settings.locale + Taal + + + login_page.username + Gebruikersnaam + + + login_page.password + Wachtwoord + + + login_page.sign_in + Inloggen + + + login_page.forgot_password + Wachtwoord vergeten? + + + login_page.remember_me + Onthoud mij + + + exception.entity_not_found + Het item is niet langer beschikbaar. + + + exception.entity_remove + Dit item kan niet verwijderd worden omdat andere items ervan afhankelijk zijn. + + + exception.forbidden_action + De gevraagde actie kan niet worden uitgevoerd op dit item. + + + exception.insufficient_entity_permission + Je hebt geen toegang tot dit item. + + + autocomplete.no-results-found + Geen resultaten gevonden… + + + autocomplete.no-more-results + Niet meer resultaten gevonden… + + + autocomplete.loading-more-results + Meer resultaten laden… + + +
    +
    diff --git a/translations/messages+intl-icu.en.xlf b/translations/messages+intl-icu.en.xlf index 88d5e242..ce3b4911 100644 --- a/translations/messages+intl-icu.en.xlf +++ b/translations/messages+intl-icu.en.xlf @@ -5,217 +5,548 @@ - + Accueil Home - + Ressources Resources - + Partis Parties - + Elections Elections - + A propose About - + Nederland Nederland - + Français French - + English English - + logo be elect Be-Elect logo - + logo université University logo - + Tous les partis All parties - + Toutes les élections All elections - + A propos About - + Tout le détail des : <span class="text-secondary">élections</span> est sur Be-Elect elections are on Be-Elect]]> - + illustration de vote Voting illustration - + Je trouve mon parti politique en 1 clic : Find my political party in 1 click: - + Un parti politique au hasard A random political party - + Découvrir les élections passées Discover past elections - + Voir toutes les élections See all elections - + découvrez la carte et le résultat des votes discover the map and voting results - + Zoom sur les 6 parties majeurs Focus on the 6 major parties - + Nombre votes Number of votes - + Pourcentage Percentage - + Election Election - + Parti Party - + Region Region - + Province Province - + Arrondissement District - + Canton Canton - + Commune Municipality - + En savoir plus Learn more - + illustration de vote Voting illustration - + Carte Map - + Graphique Graph - + Les partis politiques en Belgique Political parties in Belgium - + Les <span class="text-secondary">partis politiques</span> en Belgique - political parties in Belgium]]> + Political Parties in Belgium]]> - + Les partis politiques représentés au parlement fédéral Political parties represented in the federal parliament - + Les partis politiques en Flandre Political parties in Flanders - + Les partis politiques à Bruxelles Political parties in Brussels - + Les partis politiques en Wallonie Political parties in Wallonia - + Les partis politiques en communauté germanophone Political parties in the German-speaking community - + Les partis politiques non-représentés au parlement fédéral Political parties not represented in the federal parliament - + Afficher plus Show more - + Les partis politiques disparus Defunct political parties - + logo de %nom% logo of %nom% - + A propos du parti About the party - + Présentation détaillée Detailed presentation - + Résultats électoraux du parti Electoral results of the party - + Participations gouvernementales pour les différents niveaux de pouvoir Government participation at different levels of power - + Les dates non cliquables représentent les législatures pour lesquelles le parti %partiName% n’était pas au gouvernement. Non-clickable dates represent the legislatures for which the party %partiName% was not in the government. - + Président : President: - + Découvrir son activité Discover its activity + + Election date + __Election date + + + Les <span class="text-secondary">résultats</span> des élections en Belgique + Results in Belgium]]> + + + Chercher une élection législative par date : + __Chercher une élection législative par date : + + + Cherchez ici la date d’une élection (exemple : 1990, 1996…) + __Cherchez ici la date d’une élection (exemple : 1990, 1996…) + + + illustration de parlement + __illustration de parlement + + + Comment se déroulent les élections en Belgique + How do elections take place in Belgium? + + + Les élections legislatives en Belgique + __Les élections legislatives en Belgique + + + Les élections <span class="text-secondary">legislatives</span> en Belgique + legislatives en Belgique]]> + + + Tout savoir sur les les législatives en Belgique + __Tout savoir sur les les législatives en Belgique + + + Illustration du parlement européen et son drapeau + __Illustration du parlement européen et son drapeau + + + Carte administrative des communes, provinces et régions belges + __Carte administrative des communes, provinces et régions belges + + + Drapeau de la Communauté germanophone de Belgique, + __Drapeau de la Communauté germanophone de Belgique, + + + en Belgique + in Belgium + + + Afficher moins + Show Less + + + type_election.main_title.2 + Senate Elections + + + Niveau %governmentType% + __Niveau %governmentType% + + + Nombre adhérents + __Nombre adhérents + + + En cours + __En cours + + + Archive des programmes politiques + __Archive des programmes politiques + + + Archive des status politiques + __Archive des status politiques + + + Aperçu + __Aperçu + + + Fermer + __Fermer + + + Toutes les <span class="text-secondary">resources</span> + resources]]> + + + Rechercher + __Rechercher + + + Plus d'infos sur cette élection + More information about this election + + + Les autres élections en Belgique + Other elections in Belgium + + + Les résultats des élections en Belgique + Election Results in Belgium" + + + Les dernières élections en Belgique + The latest elections in Belgium + + + Les prochaines élections en Belgique + The next elections in Belgium + + + Toutes les élections en Belgique + All elections in Belgium + + + Candidats à l'élection + Candidates in the election + + + Sondages + Polls + + + Résultats + __Résultats + + + Résultats au niveau... + __Résultats au niveau... + + + Composition du gouvernement + Composition of the government + + + En savoir + sur cette élection + Learn more about this election + + + Remporté par le + Won by the + + + icone loupe + search icon + + + Rechercher les résultats des élections + Search for election results + + + + election.main_title_1 + The elections of the Brussels-Capital Region + + + election.main_title_2 + Legislative elections in Belgium + + + election.main_title_3 + European elections in Belgium + + + election.main_title_4 + Municipal elections in Belgium + + + election.main_title_5 + Provincial elections in Belgium + + + election.main_title_6 + Regional elections in the German-speaking Community + + + election.main_title_7 + Senate elections in Belgium + + + election.main_title_8 + Regional elections in Flanders + + + election.main_title_9 + Regional elections in Wallonia + + + election.search_by_date_7 + Search for a Brussels-Capital election by date + + + election.search_by_date_2 + Search for a federal election by date + + + election.search_by_date_3 + Search for a European election by date + + + election.search_by_date_4 + Search for a municipal election by date + + + election.search_by_date_5 + Search for a provincial election by date + + + election.search_by_date_6 + Search for a German-speaking Community election by date + + + election.search_by_date_7 + Search for a Senate election by date + + + election.search_by_date_8 + Search for a Flemish election by date + + + election.search_by_date_9 + Search for a Walloon election by date + + + election.history_1 + The history of the Brussels-Capital Regional Elections + + + election.history_2 + The history of the Legislative Elections in Belgium + + + election.history_3 + The history of the European Elections in Belgium + + + election.history_4 + The history of the Municipal Elections in Belgium + + + election.history_5 + The history of the Provincial Elections in Belgium + + + election.history_6 + The history of the Regional Elections in the German-speaking Community + + + election.history_7 + The history of the Senatorial Elections in Belgium + + + election.history_8 + The history of the Regional Elections in Flanders + + + election.history_9 + The history of the Regional Elections in Wallonia + + + election.table_title_1 + Brussels-Capital Regional Elections of {year} + + + election.table_title_2 + {year} Belgian federal elections + + + election.table_title_3 + {year} Belgian European elections + + + election.table_title_4 + Belgian Municipal Elections of {year} + + + election.table_title_5 + {year} Belgian provincial elections + + + election.table_title_6 + {year} regional elections in the German-speaking Community + + + election.table_title_7 + {year} Belgian Senate elections + + + election.table_title_8 + {year} Flemish regional elections + + + election.table_title_9 + {year} Walloon regional elections + + + + + Ex : 1990, 1996... + E.g. 1990, 1996… + + + L'historique des élections... + __L'historique des élections... + + + Ex: 1990, Élection fédérale, 1996... + E.g. 1990, Federal election, 1996... + + + election.icon_federal + Icon representing a parliamentary building + + + election.icon_european + A politician speaking at the podium in front of a microphone + + + election.icon_regional + A female politician speaking at the podium in front of a microphone + + + election.icon_default + Ballot paper with pencil + diff --git a/translations/messages+intl-icu.fr.xlf b/translations/messages+intl-icu.fr.xlf index 628dce2e..ca4ca15c 100644 --- a/translations/messages+intl-icu.fr.xlf +++ b/translations/messages+intl-icu.fr.xlf @@ -5,227 +5,585 @@ - + Symfony goold Symfony est bon - + Accueil Accueil - + Ressources Ressources - + Partis Partis - + Elections Élections - + A propose À propos - + Nederland Nederland - + Français Français - + English Anglais - + logo be elect logo Be-Elect - + logo université logo université - + Tous les partis Tous les partis - + Toutes les élections Toutes les élections - + A propos À propos - + illustration de vote illustration de vote - + Je trouve mon parti politique en 1 clic : Je trouve mon parti politique en 1 clic : - + Un parti politique au hasard Un parti politique au hasard - + Voir toutes les élections Voir toutes les élections - + découvrez la carte et le résultat des votes découvrez la carte et le résultat des votes - + Tout le détail des :<span class="text-secondary">élections</span> est sur Be-Elect élections est sur Be-Elect]]> - + Découvrir les élections passées Découvrir les élections passées - + Zoom sur les 6 parties majeurs Zoom sur les 6 parties majeurs - + Nombre votes Nombre de votes - + Pourcentage Pourcentage - + Election Élection - + Parti Parti - + Region Région - + Province Province - + Arrondissement Arrondissement - + Canton Canton - + Commune Commune - + En savoir plus En savoir plus - + Tout le détail des : <span class="text-secondary">élections</span> est sur Be-Elect élections est sur Be-Elect]]> - + illustration de vote illustration de vote - + Carte Carte - + Graphique Graphique - + Les partis politiques en Belgique Les partis politiques en Belgique - + Les <span class="text-secondary">partis politiques</span> en Belgique partis politiques en Belgique]]> - + Les partis politiques représentés au parlement fédéral Les partis politiques représentés au parlement fédéral - + Les partis politiques en Flandre Les partis politiques en Flandre - + Les partis politiques à Bruxelles Les partis politiques à Bruxelles - + Les partis politiques en Wallonie Les partis politiques en Wallonie - + Les partis politiques en communauté germanophone Les partis politiques en communauté germanophone - + Les partis politiques non-représentés au parlement fédéral Les partis politiques non-représentés au parlement fédéral - + Afficher plus Afficher plus - + Les partis politiques disparus Les partis politiques disparus - + logo de %nom% logo de %nom% - + A propos du parti À propos du parti - + Présentation détaillée Présentation détaillée - + Résultats électoraux du parti Résultats électoraux du parti - + Participations gouvernementales pour les différents niveaux de pouvoir Participations gouvernementales pour les différents niveaux de pouvoir - + Les dates non cliquables représentent les législatures pour lesquelles le parti %partiName% n’était pas au gouvernement. Les dates non cliquables représentent les législatures pour lesquelles le parti %partiName% n’était pas au gouvernement. - + Président : Président : - + Découvrir son activité Découvrir son activité + + type_election.main_title.7 + Les élections sénatoriales + + + type_election.infos.title.2 + Tout savoir sur les élections sénatoriales en Belgique + + + type_election.infos.title.3 + Tout savoir sur les élections législatives fédérales en Belgique + + + type_election.infos.title.4 + Tout savoir sur les élections provinciales en Belgiques + + + type_election.infos.title.5 + Tout savoir sur les élections européennes en Belgique + + + type_election.infos.title.6 + Tout savoir sur les élections en Wallonie + + + type_election.infos.title.7 + Tout savoir sur les élections en Flandre + + + type_election.infos.title.8 + Tout savoir sur les élections de la Communuauté Germanophone + + + Election date + __Election date + + + Les résultats des élections en Belgique + Les résultats des élections en Belgique + + + Les <span class="text-secondary">résultats</span> des élections en Belgique + résultats des élections en Belgique]]> + + + Chercher une élection législative par date : + Chercher une élection législative par date : + + + Cherchez ici la date d’une élection (exemple : 1990, 1996…) + __Cherchez ici la date d’une élection (exemple : 1990, 1996…) + + + illustration de parlement + illustration de parlement + + + Les prochaines élections en Belgique + Les prochaines élections en Belgique + + + Les dernières élections en Belgique + Les dernières élections en Belgique + + + Toutes les élections en Belgique + Toutes les élections en Belgique + + + Comment se déroulent les élections en Belgique + Comment se déroulent les élections en Belgique + + + Les élections legislatives en Belgique + Les élections legislatives en Belgique + + + Les élections <span class="text-secondary">legislatives</span> en Belgique + legislatives en Belgique]]> + + + Tout savoir sur les les législatives en Belgique + Tout savoir sur les les législatives en Belgique + + + Illustration du parlement européen et son drapeau + Illustration du parlement européen et son drapeau + + + Carte administrative des communes, provinces et régions belges + __Carte administrative des communes, provinces et régions belges + + + Drapeau de la Communauté germanophone de Belgique, + Drapeau de la Communauté germanophone de Belgique, + + + Plus d'infos sur cette élection + Plus d'infos sur cette élection + + + Afficher moins + Afficher moins + + + Les autres élections en Belgique + Les autres élections en Belgique + + + Niveau %governmentType% + __Niveau %governmentType% + + + Nombre adhérents + __Nombre adhérents + + + En cours + __En cours + + + Archive des programmes politiques + __Archive des programmes politiques + + + Archive des status politiques + Archive des status politiques + + + Aperçu + __Aperçu + + + Fermer + __Fermer + + + Toutes les <span class="text-secondary">resources</span> + resources]]> + + + Rechercher + Rechercher + + + Candidats à l'élection + Candidats à l'élection + + + Sondages + Sondages + + + Résultats + __Résultats + + + Résultats au niveau... + __Résultats au niveau... + + + Composition du gouvernement + Composition du gouvernement + + + En savoir + sur cette élection + En savoir + sur cette élection + + + Remporté par le + Remporté par le + + + icone loupe + icone loupe + + + Rechercher les résultats des élections + Rechercher les résultats des élections + + + + election.main_title_1 + Les élections de la région de Bruxelles-Capitale + + + election.main_title_2 + Les élections legislatives en Belgique + + + election.main_title_3 + Les élections européennes en Belgique + + + election.main_title_4 + Les élections communales en Belgique + + + election.main_title_5 + Les élections provinciales en Belgique + + + election.main_title_6 + Les élections régionales en Communauté germanophone + + + election.main_title_7 + Les élections sénatoriales en Belgique + + + election.main_title_8 + Les élections régionales en Flandre + + + election.main_title_9 + Les élections régionales en Wallonie + + + + election.search_by_date_7 + Rechercher une élection de Bruxelles-Capitale par date + + + election.search_by_date_2 + Rechercher une élection legislative par date + + + election.search_by_date_3 + Rechercher une élection européenne par date + + + election.search_by_date_4 + Rechercher une élection communale par date + + + election.search_by_date_5 + Rechercher une élection provinciale par date + + + election.search_by_date_6 + Rechercher une élection de la Communauté Germanophone par date + + + election.search_by_date_7 + Rechercher une élection sénatoriale par date + + + election.search_by_date_8 + Rechercher une élection flamande par date + + + election.search_by_date_9 + Rechercher une élection wallonne par date + + + election.history_1 + L'historique des élections régionales de Bruxelles-Capitale + + + election.history_2 + L'historique des élections legislatives en Belgique + + + election.history_3 + L'historique des élections européennes en Belgique + + + election.history_4 + L'historique des élections communales en Belgique + + + election.history_5 + L'historique des élections provinciales en Belgique + + + election.history_6 + L'historique des élections régionales en Communuauté Germanophone + + + election.history_7 + L'historique des élections sénatoriales en Belgique + + + election.history_8 + L'historique des élections régionales en Flandre + + + election.history_9 + L'historique des élections régionales en Wallonie + + + election.table_title_1 + Élections régionales de Bruxelles-Capitale de {year} + + + election.table_title_2 + Élections legislatives belges de {year} + + + election.table_title_3 + Élections européennes belges de {year} + + + election.table_title_4 + Élections communales belges de {year} + + + election.table_title_5 + Élections provinciale belges de {year} + + + election.table_title_6 + Élections régioanles en Communauté germanophone de {year} + + + election.table_title_7 + Élections sénatoriales belges de {year} + + + election.table_title_8 + Élections régionales flamandes de {year} + + + + election.table_title_9 + Élections régionales wallonnes de {year} + + + + + Ex : 1990, 1996... + Ex : 1990, 1996... + + + L'historique des élections... + __L'historique des élections... + + + Ex: 1990, Élection fédérale, 1996... + Ex: 1990, Élection fédérale, 1996... + + + election.icon_federal + Icone représentant un bâtiment du parlement + + + election.icon_european + Un homme politique s’exprime à la tribune devant un micro + + + election.icon_regional + Une femme politique s’exprime à la tribune devant un micro + + + election.icon_default + Bulletin de vote avec crayon + + diff --git a/translations/messages+intl-icu.nl.xlf b/translations/messages+intl-icu.nl.xlf index 2cab9a93..327f4b8b 100644 --- a/translations/messages+intl-icu.nl.xlf +++ b/translations/messages+intl-icu.nl.xlf @@ -5,221 +5,549 @@ - + Symfony goold Symfony is goed - + Accueil Home - + Ressources Hulpmiddelen - + Partis Partijen - + Elections Verkiezingen - + A propose Over - + Nederland Nederland - + Français Frans - + English Engels - + logo be elect Be-Elect logo - + logo université Universiteitslogo - + Tous les partis Alle partijen - + Toutes les élections Alle verkiezingen - + A propos Over - + illustration de vote Stemillustratie - + Je trouve mon parti politique en 1 clic : Ik vind mijn politieke partij in 1 klik: - + Un parti politique au hasard Een willekeurige politieke partij - + Voir toutes les élections Zie alle verkiezingen - + découvrez la carte et le résultat des votes Ontdek de kaart en de stemresultaten - + Nombre votes Aantal stemmen - + Pourcentage Percentage - + Election Verkiezing - + Parti Partij - + Region Regio - + Province Provincie - + Arrondissement Arrondissement - + Canton Kanton - + Commune Gemeente - + En savoir plus Meer weten - + Tout le détail des : <span class="text-secondary">élections</span> est sur Be-Elect verkiezingen staan op Be-Elect]]> - + illustration de vote Stemillustratie - + Découvrir les élections passées Ontdek de afgelopen verkiezingen - + Carte Kaart - + Graphique Grafiek - + Zoom sur les 6 parties majeurs Zoom op de 6 belangrijkste partijen - + Les partis politiques en Belgique De politieke partijen in België - + Les <span class="text-secondary">partis politiques</span> en Belgique politieke partijen in België]]> - + Les partis politiques représentés au parlement fédéral De politieke partijen vertegenwoordigd in het federaal parlement - + Les partis politiques en Flandre De politieke partijen in Vlaanderen - + Les partis politiques à Bruxelles De politieke partijen in Brussel - + Les partis politiques en Wallonie De politieke partijen in Wallonië - + Les partis politiques en communauté germanophone De politieke partijen in de Duitstalige gemeenschap - + Les partis politiques non-représentés au parlement fédéral De politieke partijen die niet vertegenwoordigd zijn in het federaal parlement - + Afficher plus - Meer weergeven + Toon Meer - + Les partis politiques disparus Verdwenen politieke partijen - + logo de %nom% logo van %nom% - + A propos du parti Over de partij - + Présentation détaillée Gedetailleerde presentatie - + Résultats électoraux du parti Verkiezingsresultaten van de partij - + Participations gouvernementales pour les différents niveaux de pouvoir Regeringsdeelnames op verschillende bestuursniveaus - + Les dates non cliquables représentent les législatures pour lesquelles le parti %partiName% n’était pas au gouvernement. Niet-klikbare data vertegenwoordigen de legislaturen waarvoor de partij %partiName% niet in de regering zat. - + Président : President: - + Découvrir son activité Ontdek zijn activiteit + + Election date + __Election date + + + Les résultats des élections en Belgique + De verkiezingsuitslagen in België + + + Les <span class="text-secondary">résultats</span> des élections en Belgique + verkiezingsuitslagen in België]]> + + + Chercher une élection législative par date : + __Chercher une élection législative par date : + + + Cherchez ici la date d’une élection (exemple : 1990, 1996…) + __Cherchez ici la date d’une élection (exemple : 1990, 1996…) + + + illustration de parlement + __illustration de parlement + + + Comment se déroulent les élections en Belgique + Hoe verlopen de verkiezingen in België? + + + Les élections legislatives en Belgique + __Les élections legislatives en Belgique + + + Les élections <span class="text-secondary">legislatives</span> en Belgique + legislatives en Belgique]]> + + + Tout savoir sur les les législatives en Belgique + __Tout savoir sur les les législatives en Belgique + + + Illustration du parlement européen et son drapeau + __Illustration du parlement européen et son drapeau + + + Carte administrative des communes, provinces et régions belges + __Carte administrative des communes, provinces et régions belges + + + Drapeau de la Communauté germanophone de Belgique, + __Drapeau de la Communauté germanophone de Belgique, + + + en Belgique + in België + + + Afficher moins + Toon minder + + + Niveau %governmentType% + __Niveau %governmentType% + + + Nombre adhérents + __Nombre adhérents + + + En cours + __En cours + + + Archive des programmes politiques + __Archive des programmes politiques + + + Archive des status politiques + __Archive des status politiques + + + Aperçu + __Aperçu + + + Fermer + __Fermer + + + Toutes les <span class="text-secondary">resources</span> + resources]]> + + + Rechercher + __Rechercher + + + Plus d'infos sur cette élection + Meer info over deze verkiezing + + + Les autres élections en Belgique + Andere verkiezingen in België + + + Les dernières élections en Belgique + De laatste verkiezingen in België + + + Les prochaines élections en Belgique + De volgende verkiezingen in België + + + Toutes les élections en Belgique + Alle verkiezingen in België + + + Candidats à l'élection + Kandidaten bij de verkiezing + + + Sondages + Peilingen + + + Résultats + __Résultats + + + Résultats au niveau... + __Résultats au niveau... + + + Composition du gouvernement + Samenstelling van de regering + + + L'historique des élections... + __L'historique des élections... + + + En savoir + sur cette élection + Meer info over deze verkiezing + + + L'historique des élections législatives en Belgique + __L'historique des élections législatives en Belgique + + + Remporté par le + Gewonnen door de + + + icone loupe + zoekicoon + + + Rechercher les résultats des élections + Zoek de verkiezingsuitslagen + + + election.main_title_1 + De verkiezingen van het Brussels Hoofdstedelijk Gewest + + + election.main_title_2 + De federale verkiezingenin België + + + election.main_title_3 + De Europese verkiezingen in België + + + election.main_title_4 + De gemeenteraadsverkiezingen in België + + + election.main_title_5 + De provinciale verkiezingen in België + + + election.main_title_6 + De regionale verkiezingen in de Duitstalige Gemeenschap + + + election.main_title_7 + De senaatsverkiezingen in België + + + election.main_title_8 + De regionale verkiezingen in Vlaanderen + + + election.main_title_9 + De regionale verkiezingen in Wallonië + + + election.search_by_date_1 + Zoek een verkiezing van Brussel-Hoofdstad op datum + + + election.search_by_date_2 + Zoek een federale verkiezing op datum + + + election.search_by_date_3 + Zoek een Europese verkiezing op datum + + + election.search_by_date_4 + Zoek een gemeenteraadsverkiezing op datum + + + election.search_by_date_5 + Zoek een provinciale verkiezing op datum + + + election.search_by_date_6 + Zoek een verkiezing van de Duitstalige Gemeenschap op datum + + + election.search_by_date_7 + Zoek een Senaatsverkiezing op datum + + + election.search_by_date_8 + Zoek een Vlaamse verkiezing op datum + + + election.search_by_date_9 + Zoek een Waalse verkiezing op datum + + + election.history_1 + De geschiedenis van de regionale verkiezingen in Brussel-Hoofdstad + + + election.history_2 + De geschiedenis van de federale verkiezingen in België + + + election.history_3 + De geschiedenis van de Europese verkiezingen in België + + + election.history_4 + De geschiedenis van de gemeentelijke verkiezingen in België + + + election.history_5 + De geschiedenis van de provinciale verkiezingen in België + + + election.history_6 + De geschiedenis van de regionale verkiezingen in de Duitstalige Gemeenschap + + + election.history_7 + De geschiedenis van de Senaatsverkiezingen in België + + + election.history_8 + De geschiedenis van de regionale verkiezingen in Vlaanderen + + + election.history_9 + De geschiedenis van de regionale verkiezingen in Wallonië + + + election.table_title_1 + Brusselse regionale verkiezingen van {year} + + + election.table_title_2 + Belgische federale verkiezingen van {year} + + + election.table_title_3 + Belgische Europese verkiezingen van {year} + + + election.table_title_4 + Belgische gemeenteraadsverkiezingen van {year} + + + election.table_title_5 + Belgische provinciale verkiezingen van {year} + + + election.table_title_6 + Regionale verkiezingen in de Duitstalige Gemeenschap van {year} + + + election.table_title_7 + Belgische Senaatsverkiezingen van {year} + + + election.table_title_8 + Vlaamse regionale verkiezingen van {year} + + + election.table_title_9 + Waalse regionale verkiezingen van {year} + + + Ex : 1990, 1996... + Bv. : 1990, 1996... + + + Ex: 1990, Élection fédérale, 1996... + Bv. : 1990, Federale verkiezing, 1996... + + + election.icon_federal + Pictogram dat een parlementsgebouw voorstelt + + + election.icon_european + Een politicus spreekt vanaf het spreekgestoelte voor een microfoon + + + election.icon_regional + Een politica spreekt vanaf het spreekgestoelte voor een microfoon + + + election.icon_default + Stembiljet met potlood + diff --git a/translations/security.en.xlf b/translations/security.en.xlf index 2dc2ceee..f4415131 100644 --- a/translations/security.en.xlf +++ b/translations/security.en.xlf @@ -5,79 +5,79 @@ - + An authentication exception occurred. An authentication exception occurred. - + Authentication credentials could not be found. Authentication credentials could not be found. - + Authentication request could not be processed due to a system problem. Authentication request could not be processed due to a system problem. - + Invalid credentials. Invalid credentials. - + Cookie has already been used by someone else. Cookie has already been used by someone else. - + Not privileged to request the resource. Not privileged to request the resource. - + Invalid CSRF token. Invalid CSRF token. - + No authentication provider found to support the authentication token. No authentication provider found to support the authentication token. - + No session available, it either timed out or cookies are not enabled. No session available, it either timed out or cookies are not enabled. - + No token could be found. No token could be found. - + Username could not be found. Username could not be found. - + Account has expired. Account has expired. - + Credentials have expired. Credentials have expired. - + Account is disabled. Account is disabled. - + Account is locked. Account is locked. - + Too many failed login attempts, please try again later. Too many failed login attempts, please try again later. - + Invalid or expired login link. Invalid or expired login link. - + Too many failed login attempts, please try again in %minutes% minute. Too many failed login attempts, please try again in %minutes% minute. - + Too many failed login attempts, please try again in %minutes% minutes. Too many failed login attempts, please try again in %minutes% minutes. diff --git a/translations/security.fr.xlf b/translations/security.fr.xlf index 2f92b710..ce332d5a 100644 --- a/translations/security.fr.xlf +++ b/translations/security.fr.xlf @@ -5,79 +5,79 @@ - + An authentication exception occurred. Une exception d'authentification s'est produite. - + Authentication credentials could not be found. Les identifiants d'authentification n'ont pas pu être trouvés. - + Authentication request could not be processed due to a system problem. La requête d'authentification n'a pas pu être executée à cause d'un problème système. - + Invalid credentials. Identifiants invalides. - + Cookie has already been used by someone else. Le cookie a déjà été utilisé par quelqu'un d'autre. - + Not privileged to request the resource. Privilèges insuffisants pour accéder à la ressource. - + Invalid CSRF token. Jeton CSRF invalide. - + No authentication provider found to support the authentication token. Aucun fournisseur d'authentification n'a été trouvé pour supporter le jeton d'authentification. - + No session available, it either timed out or cookies are not enabled. Aucune session disponible, celle-ci a expiré ou les cookies ne sont pas activés. - + No token could be found. Aucun jeton n'a pu être trouvé. - + Username could not be found. Le nom d'utilisateur n'a pas pu être trouvé. - + Account has expired. Le compte a expiré. - + Credentials have expired. Les identifiants ont expiré. - + Account is disabled. Le compte est désactivé. - + Account is locked. Le compte est bloqué. - + Too many failed login attempts, please try again later. Plusieurs tentatives de connexion ont échoué, veuillez réessayer plus tard. - + Invalid or expired login link. Lien de connexion invalide ou expiré. - + Too many failed login attempts, please try again in %minutes% minute. Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minute. - + Too many failed login attempts, please try again in %minutes% minutes. Plusieurs tentatives de connexion ont échoué, veuillez réessayer dans %minutes% minutes. diff --git a/translations/security.nl.xlf b/translations/security.nl.xlf index 946f63a1..6eedf5da 100644 --- a/translations/security.nl.xlf +++ b/translations/security.nl.xlf @@ -5,79 +5,79 @@ - + An authentication exception occurred. Er heeft zich een authenticatieprobleem voorgedaan. - + Authentication credentials could not be found. Authenticatiegegevens konden niet worden gevonden. - + Authentication request could not be processed due to a system problem. Authenticatieaanvraag kon niet worden verwerkt door een technisch probleem. - + Invalid credentials. Ongeldige inloggegevens. - + Cookie has already been used by someone else. Cookie is al door een ander persoon gebruikt. - + Not privileged to request the resource. Onvoldoende rechten om de aanvraag te verwerken. - + Invalid CSRF token. CSRF-code is ongeldig. - + No authentication provider found to support the authentication token. Geen authenticatieprovider gevonden die de authenticatietoken ondersteunt. - + No session available, it either timed out or cookies are not enabled. Geen sessie beschikbaar, mogelijk is deze verlopen of cookies zijn uitgeschakeld. - + No token could be found. Er kon geen authenticatietoken worden gevonden. - + Username could not be found. Gebruikersnaam kon niet worden gevonden. - + Account has expired. Account is verlopen. - + Credentials have expired. Authenticatiegegevens zijn verlopen. - + Account is disabled. Account is gedeactiveerd. - + Account is locked. Account is geblokkeerd. - + Too many failed login attempts, please try again later. Te veel onjuiste inlogpogingen, probeer het later nogmaals. - + Invalid or expired login link. Ongeldige of verlopen inloglink. - + Too many failed login attempts, please try again in %minutes% minute. Te veel onjuiste inlogpogingen, probeer het opnieuw over %minutes% minuut. - + Too many failed login attempts, please try again in %minutes% minutes. Te veel onjuiste inlogpogingen, probeer het opnieuw over %minutes% minuten. diff --git a/translations/validators.en.xlf b/translations/validators.en.xlf index c384636f..3e192d16 100644 --- a/translations/validators.en.xlf +++ b/translations/validators.en.xlf @@ -5,538 +5,594 @@ - + This value should be false. This value should be false. - + This value should be true. This value should be true. - + This value should be of type {{ type }}. This value should be of type {{ type }}. - + This value should be blank. This value should be blank. - + The value you selected is not a valid choice. The value you selected is not a valid choice. - + You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. - + You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. - + One or more of the given values is invalid. One or more of the given values is invalid. - + This field was not expected. This field was not expected. - + This field is missing. This field is missing. - + This value is not a valid date. This value is not a valid date. - + This value is not a valid datetime. This value is not a valid datetime. - + This value is not a valid email address. This value is not a valid email address. - + The file could not be found. The file could not be found. - + The file is not readable. The file is not readable. - + The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. - + The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. - + This value should be {{ limit }} or less. This value should be {{ limit }} or less. - + This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. - + This value should be {{ limit }} or more. This value should be {{ limit }} or more. - + This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. - + This value should not be blank. This value should not be blank. - + This value should not be null. This value should not be null. - + This value should be null. This value should be null. - + This value is not valid. This value is not valid. - + This value is not a valid time. This value is not a valid time. - + This value is not a valid URL. This value is not a valid URL. - + The two values should be equal. The two values should be equal. - + The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. - + The file is too large. The file is too large. - + The file could not be uploaded. The file could not be uploaded. - + This value should be a valid number. This value should be a valid number. - + This file is not a valid image. This file is not a valid image. - + This is not a valid IP address. This is not a valid IP address. - + This value is not a valid language. This value is not a valid language. - + This value is not a valid locale. This value is not a valid locale. - + This value is not a valid country. This value is not a valid country. - + This value is already used. This value is already used. - + The size of the image could not be detected. The size of the image could not be detected. - + The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. - + The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. - + The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. - + The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. - + This value should be the user's current password. This value should be the user's current password. - + This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. - + The file was only partially uploaded. The file was only partially uploaded. - + No file was uploaded. No file was uploaded. - + No temporary folder was configured in php.ini. No temporary folder was configured in php.ini, or the configured folder does not exist. - + Cannot write temporary file to disk. Cannot write temporary file to disk. - + A PHP extension caused the upload to fail. A PHP extension caused the upload to fail. - + This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. - + This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. - + This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. - + Invalid card number. Invalid card number. - + Unsupported card type or invalid card number. Unsupported card type or invalid card number. - + This is not a valid International Bank Account Number (IBAN). This is not a valid International Bank Account Number (IBAN). - + This value is not a valid ISBN-10. This value is not a valid ISBN-10. - + This value is not a valid ISBN-13. This value is not a valid ISBN-13. - + This value is neither a valid ISBN-10 nor a valid ISBN-13. This value is neither a valid ISBN-10 nor a valid ISBN-13. - + This value is not a valid ISSN. This value is not a valid ISSN. - + This value is not a valid currency. This value is not a valid currency. - + This value should be equal to {{ compared_value }}. This value should be equal to {{ compared_value }}. - + This value should be greater than {{ compared_value }}. This value should be greater than {{ compared_value }}. - + This value should be greater than or equal to {{ compared_value }}. This value should be greater than or equal to {{ compared_value }}. - + This value should be identical to {{ compared_value_type }} {{ compared_value }}. This value should be identical to {{ compared_value_type }} {{ compared_value }}. - + This value should be less than {{ compared_value }}. This value should be less than {{ compared_value }}. - + This value should be less than or equal to {{ compared_value }}. This value should be less than or equal to {{ compared_value }}. - + This value should not be equal to {{ compared_value }}. This value should not be equal to {{ compared_value }}. - + This value should not be identical to {{ compared_value_type }} {{ compared_value }}. This value should not be identical to {{ compared_value_type }} {{ compared_value }}. - + The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. - + The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. - + The image is square ({{ width }}x{{ height }}px). Square images are not allowed. The image is square ({{ width }}x{{ height }}px). Square images are not allowed. - + The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. - + The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. - + An empty file is not allowed. An empty file is not allowed. - + The host could not be resolved. The host could not be resolved. - + This value does not match the expected {{ charset }} charset. This value does not match the expected {{ charset }} charset. - + This is not a valid Business Identifier Code (BIC). This is not a valid Business Identifier Code (BIC). - + Error Error - + This is not a valid UUID. This is not a valid UUID. - + This value should be a multiple of {{ compared_value }}. This value should be a multiple of {{ compared_value }}. - + This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. - + This value should be valid JSON. This value should be valid JSON. - + This collection should contain only unique elements. This collection should contain only unique elements. - + This value should be positive. This value should be positive. - + This value should be either positive or zero. This value should be either positive or zero. - + This value should be negative. This value should be negative. - + This value should be either negative or zero. This value should be either negative or zero. - + This value is not a valid timezone. This value is not a valid timezone. - + This password has been leaked in a data breach, it must not be used. Please use another password. This password has been leaked in a data breach, it must not be used. Please use another password. - + This value should be between {{ min }} and {{ max }}. This value should be between {{ min }} and {{ max }}. - + This value is not a valid hostname. This value is not a valid hostname. - + The number of elements in this collection should be a multiple of {{ compared_value }}. The number of elements in this collection should be a multiple of {{ compared_value }}. - + This value should satisfy at least one of the following constraints: This value should satisfy at least one of the following constraints: - + Each element of this collection should satisfy its own set of constraints. Each element of this collection should satisfy its own set of constraints. - + This value is not a valid International Securities Identification Number (ISIN). This value is not a valid International Securities Identification Number (ISIN). - + This value should be a valid expression. This value should be a valid expression. - + This value is not a valid CSS color. This value is not a valid CSS color. - + This value is not a valid CIDR notation. This value is not a valid CIDR notation. - + The value of the netmask should be between {{ min }} and {{ max }}. The value of the netmask should be between {{ min }} and {{ max }}. - + + The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less. + The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less. + + + The password strength is too low. Please use a stronger password. + The password strength is too low. Please use a stronger password. + + + This value contains characters that are not allowed by the current restriction-level. + This value contains characters that are not allowed by the current restriction-level. + + + Using invisible characters is not allowed. + Using invisible characters is not allowed. + + + Mixing numbers from different scripts is not allowed. + Mixing numbers from different scripts is not allowed. + + + Using hidden overlay characters is not allowed. + Using hidden overlay characters is not allowed. + + + The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}. + The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}. + + + The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}. + The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}. + + + This value is not a valid MAC address. + This value is not a valid MAC address. + + + This URL is missing a top-level domain. + This URL is missing a top-level domain. + + This form should not contain extra fields. This form should not contain extra fields. - + The uploaded file was too large. Please try to upload a smaller file. The uploaded file was too large. Please try to upload a smaller file. - + The CSRF token is invalid. Please try to resubmit the form. The CSRF token is invalid. Please try to resubmit the form. - + This value is not a valid HTML5 color. This value is not a valid HTML5 color. - + Please enter a valid birthdate. Please enter a valid birthdate. - + The selected choice is invalid. The selected choice is invalid. - + The collection is invalid. The collection is invalid. - + Please select a valid color. Please select a valid color. - + Please select a valid country. Please select a valid country. - + Please select a valid currency. Please select a valid currency. - + Please choose a valid date interval. Please choose a valid date interval. - + Please enter a valid date and time. Please enter a valid date and time. - + Please enter a valid date. Please enter a valid date. - + Please select a valid file. Please select a valid file. - + The hidden field is invalid. The hidden field is invalid. - + Please enter an integer. Please enter an integer. - + Please select a valid language. Please select a valid language. - + Please select a valid locale. Please select a valid locale. - + Please enter a valid money amount. Please enter a valid money amount. - + Please enter a number. Please enter a number. - + The password is invalid. The password is invalid. - + Please enter a percentage value. Please enter a percentage value. - + The values do not match. The values do not match. - + Please enter a valid time. Please enter a valid time. - + Please select a valid timezone. Please select a valid timezone. - + Please enter a valid URL. Please enter a valid URL. - + Please enter a valid search term. Please enter a valid search term. - + Please provide a valid phone number. Please provide a valid phone number. - + The checkbox has an invalid value. The checkbox has an invalid value. - + Please enter a valid email address. Please enter a valid email address. - + Please select a valid option. Please select a valid option. - + Please select a valid range. Please select a valid range. - + Please enter a valid week. Please enter a valid week. + + There is already an account with this username + __There is already an account with this username + + + You should agree to our terms. + __You should agree to our terms. + + + Please enter a password + __Please enter a password + + + Your password should be at least {{ limit }} characters + __Your password should be at least {{ limit }} characters + diff --git a/translations/validators.fr.xlf b/translations/validators.fr.xlf index 6490884b..bae1f705 100644 --- a/translations/validators.fr.xlf +++ b/translations/validators.fr.xlf @@ -5,538 +5,594 @@ - + This value should be false. Cette valeur doit être fausse. - + This value should be true. Cette valeur doit être vraie. - + This value should be of type {{ type }}. Cette valeur doit être de type {{ type }}. - + This value should be blank. Cette valeur doit être vide. - + The value you selected is not a valid choice. Cette valeur doit être l'un des choix proposés. - + You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. Vous devez sélectionner au moins {{ limit }} choix.|Vous devez sélectionner au moins {{ limit }} choix. - + You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. Vous devez sélectionner au maximum {{ limit }} choix.|Vous devez sélectionner au maximum {{ limit }} choix. - + One or more of the given values is invalid. Une ou plusieurs des valeurs soumises sont invalides. - + This field was not expected. Ce champ n'a pas été prévu. - + This field is missing. Ce champ est manquant. - + This value is not a valid date. Cette valeur n'est pas une date valide. - + This value is not a valid datetime. Cette valeur n'est pas une date valide. - + This value is not a valid email address. Cette valeur n'est pas une adresse email valide. - + The file could not be found. Le fichier n'a pas été trouvé. - + The file is not readable. Le fichier n'est pas lisible. - + The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. Le fichier est trop volumineux ({{ size }} {{ suffix }}). Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}. - + The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. Le type du fichier est invalide ({{ type }}). Les types autorisés sont {{ types }}. - + This value should be {{ limit }} or less. Cette valeur doit être inférieure ou égale à {{ limit }}. - + This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractère.|Cette chaîne est trop longue. Elle doit avoir au maximum {{ limit }} caractères. - + This value should be {{ limit }} or more. Cette valeur doit être supérieure ou égale à {{ limit }}. - + This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractère.|Cette chaîne est trop courte. Elle doit avoir au minimum {{ limit }} caractères. - + This value should not be blank. Cette valeur ne doit pas être vide. - + This value should not be null. Cette valeur ne doit pas être nulle. - + This value should be null. Cette valeur doit être nulle. - + This value is not valid. Cette valeur n'est pas valide. - + This value is not a valid time. Cette valeur n'est pas une heure valide. - + This value is not a valid URL. Cette valeur n'est pas une URL valide. - + The two values should be equal. Les deux valeurs doivent être identiques. - + The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. Le fichier est trop volumineux. Sa taille ne doit pas dépasser {{ limit }} {{ suffix }}. - + The file is too large. Le fichier est trop volumineux. - + The file could not be uploaded. Le téléchargement de ce fichier est impossible. - + This value should be a valid number. Cette valeur doit être un nombre. - + This file is not a valid image. Ce fichier n'est pas une image valide. - + This is not a valid IP address. Cette adresse IP n'est pas valide. - + This value is not a valid language. Cette langue n'est pas valide. - + This value is not a valid locale. Ce paramètre régional n'est pas valide. - + This value is not a valid country. Ce pays n'est pas valide. - + This value is already used. Cette valeur est déjà utilisée. - + The size of the image could not be detected. La taille de l'image n'a pas pu être détectée. - + The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. La largeur de l'image est trop grande ({{ width }}px). La largeur maximale autorisée est de {{ max_width }}px. - + The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. La largeur de l'image est trop petite ({{ width }}px). La largeur minimale attendue est de {{ min_width }}px. - + The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. La hauteur de l'image est trop grande ({{ height }}px). La hauteur maximale autorisée est de {{ max_height }}px. - + The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. La hauteur de l'image est trop petite ({{ height }}px). La hauteur minimale attendue est de {{ min_height }}px. - + This value should be the user's current password. Cette valeur doit être le mot de passe actuel de l'utilisateur. - + This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. Cette chaîne doit avoir exactement {{ limit }} caractère.|Cette chaîne doit avoir exactement {{ limit }} caractères. - + The file was only partially uploaded. Le fichier a été partiellement transféré. - + No file was uploaded. Aucun fichier n'a été transféré. - + No temporary folder was configured in php.ini. Aucun répertoire temporaire n'a été configuré dans le php.ini, ou le répertoire configuré n'existe pas. - + Cannot write temporary file to disk. Impossible d'écrire le fichier temporaire sur le disque. - + A PHP extension caused the upload to fail. Une extension PHP a empêché le transfert du fichier. - + This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. Cette collection doit contenir {{ limit }} élément ou plus.|Cette collection doit contenir {{ limit }} éléments ou plus. - + This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. Cette collection doit contenir {{ limit }} élément ou moins.|Cette collection doit contenir {{ limit }} éléments ou moins. - + This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. Cette collection doit contenir exactement {{ limit }} élément.|Cette collection doit contenir exactement {{ limit }} éléments. - + Invalid card number. Numéro de carte invalide. - + Unsupported card type or invalid card number. Type de carte non supporté ou numéro invalide. - + This is not a valid International Bank Account Number (IBAN). Le numéro IBAN (International Bank Account Number) saisi n'est pas valide. - + This value is not a valid ISBN-10. Cette valeur n'est pas un code ISBN-10 valide. - + This value is not a valid ISBN-13. Cette valeur n'est pas un code ISBN-13 valide. - + This value is neither a valid ISBN-10 nor a valid ISBN-13. Cette valeur n'est ni un code ISBN-10, ni un code ISBN-13 valide. - + This value is not a valid ISSN. Cette valeur n'est pas un code ISSN valide. - + This value is not a valid currency. Cette valeur n'est pas une devise valide. - + This value should be equal to {{ compared_value }}. Cette valeur doit être égale à {{ compared_value }}. - + This value should be greater than {{ compared_value }}. Cette valeur doit être supérieure à {{ compared_value }}. - + This value should be greater than or equal to {{ compared_value }}. Cette valeur doit être supérieure ou égale à {{ compared_value }}. - + This value should be identical to {{ compared_value_type }} {{ compared_value }}. Cette valeur doit être identique à {{ compared_value_type }} {{ compared_value }}. - + This value should be less than {{ compared_value }}. Cette valeur doit être inférieure à {{ compared_value }}. - + This value should be less than or equal to {{ compared_value }}. Cette valeur doit être inférieure ou égale à {{ compared_value }}. - + This value should not be equal to {{ compared_value }}. Cette valeur ne doit pas être égale à {{ compared_value }}. - + This value should not be identical to {{ compared_value_type }} {{ compared_value }}. Cette valeur ne doit pas être identique à {{ compared_value_type }} {{ compared_value }}. - + The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. Le rapport largeur/hauteur de l'image est trop grand ({{ ratio }}). Le rapport maximal autorisé est {{ max_ratio }}. - + The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. Le rapport largeur/hauteur de l'image est trop petit ({{ ratio }}). Le rapport minimal attendu est {{ min_ratio }}. - + The image is square ({{ width }}x{{ height }}px). Square images are not allowed. L'image est carrée ({{ width }}x{{ height }}px). Les images carrées ne sont pas autorisées. - + The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. L'image est au format paysage ({{ width }}x{{ height }}px). Les images au format paysage ne sont pas autorisées. - + The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. L'image est au format portrait ({{ width }}x{{ height }}px). Les images au format portrait ne sont pas autorisées. - + An empty file is not allowed. Un fichier vide n'est pas autorisé. - + The host could not be resolved. Le nom de domaine n'a pas pu être résolu. - + This value does not match the expected {{ charset }} charset. Cette valeur ne correspond pas au jeu de caractères {{ charset }} attendu. - + This is not a valid Business Identifier Code (BIC). Ce n'est pas un code universel d'identification des banques (BIC) valide. - + Error Erreur - + This is not a valid UUID. Ceci n'est pas un UUID valide. - + This value should be a multiple of {{ compared_value }}. Cette valeur doit être un multiple de {{ compared_value }}. - + This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. Ce code d'identification d'entreprise (BIC) n'est pas associé à l'IBAN {{ iban }}. - + This value should be valid JSON. Cette valeur doit être un JSON valide. - + This collection should contain only unique elements. Cette collection ne doit pas comporter de doublons. - + This value should be positive. Cette valeur doit être strictement positive. - + This value should be either positive or zero. Cette valeur doit être supérieure ou égale à zéro. - + This value should be negative. Cette valeur doit être strictement négative. - + This value should be either negative or zero. Cette valeur doit être inférieure ou égale à zéro. - + This value is not a valid timezone. Cette valeur n'est pas un fuseau horaire valide. - + This password has been leaked in a data breach, it must not be used. Please use another password. Ce mot de passe a été divulgué lors d'une fuite de données, il ne doit plus être utilisé. Veuillez utiliser un autre mot de passe. - + This value should be between {{ min }} and {{ max }}. Cette valeur doit être comprise entre {{ min }} et {{ max }}. - + This value is not a valid hostname. Cette valeur n'est pas un nom d'hôte valide. - + The number of elements in this collection should be a multiple of {{ compared_value }}. Le nombre d'éléments de cette collection doit être un multiple de {{ compared_value }}. - + This value should satisfy at least one of the following constraints: Cette valeur doit satisfaire à au moins une des contraintes suivantes : - + Each element of this collection should satisfy its own set of constraints. Chaque élément de cette collection doit satisfaire à son propre jeu de contraintes. - + This value is not a valid International Securities Identification Number (ISIN). Cette valeur n'est pas un code international de sécurité valide (ISIN). - + This value should be a valid expression. Cette valeur doit être une expression valide. - + This value is not a valid CSS color. Cette valeur n'est pas une couleur CSS valide. - + This value is not a valid CIDR notation. Cette valeur n'est pas une notation CIDR valide. - + The value of the netmask should be between {{ min }} and {{ max }}. La valeur du masque de réseau doit être comprise entre {{ min }} et {{ max }}. - + + The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less. + Le nom du fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractère.|Le nom de fichier est trop long. Il doit contenir au maximum {{ filename_max_length }} caractères. + + + The password strength is too low. Please use a stronger password. + La force du mot de passe est trop faible. Veuillez utiliser un mot de passe plus fort. + + + This value contains characters that are not allowed by the current restriction-level. + Cette valeur contient des caractères qui ne sont pas autorisés par le niveau de restriction actuel. + + + Using invisible characters is not allowed. + Utiliser des caractères invisibles n'est pas autorisé. + + + Mixing numbers from different scripts is not allowed. + Mélanger des chiffres provenant de différents scripts n'est pas autorisé. + + + Using hidden overlay characters is not allowed. + Utiliser des caractères de superposition cachés n'est pas autorisé. + + + The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}. + L'extension du fichier est invalide ({{ extension }}). Les extensions autorisées sont {{ extensions }}. + + + The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}. + L'encodage de caractères détecté est invalide ({{ detected }}). Les encodages autorisés sont {{ encodings }}. + + + This value is not a valid MAC address. + Cette valeur n'est pas une adresse MAC valide. + + + This URL is missing a top-level domain. + Cette URL doit contenir un domaine de premier niveau. + + This form should not contain extra fields. Ce formulaire ne doit pas contenir de champs supplémentaires. - + The uploaded file was too large. Please try to upload a smaller file. Le fichier téléchargé est trop volumineux. Merci d'essayer d'envoyer un fichier plus petit. - + The CSRF token is invalid. Please try to resubmit the form. Le jeton CSRF est invalide. Veuillez renvoyer le formulaire. - + This value is not a valid HTML5 color. Cette valeur n'est pas une couleur HTML5 valide. - + Please enter a valid birthdate. Veuillez entrer une date de naissance valide. - + The selected choice is invalid. Le choix sélectionné est invalide. - + The collection is invalid. La collection est invalide. - + Please select a valid color. Veuillez sélectionner une couleur valide. - + Please select a valid country. Veuillez sélectionner un pays valide. - + Please select a valid currency. Veuillez sélectionner une devise valide. - + Please choose a valid date interval. Veuillez choisir un intervalle de dates valide. - + Please enter a valid date and time. Veuillez saisir une date et une heure valides. - + Please enter a valid date. Veuillez entrer une date valide. - + Please select a valid file. Veuillez sélectionner un fichier valide. - + The hidden field is invalid. Le champ masqué n'est pas valide. - + Please enter an integer. Veuillez saisir un entier. - + Please select a valid language. Veuillez sélectionner une langue valide. - + Please select a valid locale. Veuillez sélectionner une langue valide. - + Please enter a valid money amount. Veuillez saisir un montant valide. - + Please enter a number. Veuillez saisir un nombre. - + The password is invalid. Le mot de passe est invalide. - + Please enter a percentage value. Veuillez saisir un pourcentage valide. - + The values do not match. Les valeurs ne correspondent pas. - + Please enter a valid time. Veuillez saisir une heure valide. - + Please select a valid timezone. Veuillez sélectionner un fuseau horaire valide. - + Please enter a valid URL. Veuillez saisir une URL valide. - + Please enter a valid search term. Veuillez saisir un terme de recherche valide. - + Please provide a valid phone number. Veuillez fournir un numéro de téléphone valide. - + The checkbox has an invalid value. La case à cocher a une valeur non valide. - + Please enter a valid email address. Veuillez saisir une adresse email valide. - + Please select a valid option. Veuillez sélectionner une option valide. - + Please select a valid range. Veuillez sélectionner une plage valide. - + Please enter a valid week. Veuillez entrer une semaine valide. + + There is already an account with this username + __There is already an account with this username + + + You should agree to our terms. + __You should agree to our terms. + + + Please enter a password + __Please enter a password + + + Your password should be at least {{ limit }} characters + __Your password should be at least {{ limit }} characters + diff --git a/translations/validators.nl.xlf b/translations/validators.nl.xlf index 1f5b478b..7b0d3d94 100644 --- a/translations/validators.nl.xlf +++ b/translations/validators.nl.xlf @@ -5,538 +5,594 @@ - + This value should be false. Deze waarde moet onwaar zijn. - + This value should be true. Deze waarde moet waar zijn. - + This value should be of type {{ type }}. Deze waarde moet van het type {{ type }} zijn. - + This value should be blank. Deze waarde moet leeg zijn. - + The value you selected is not a valid choice. De geselecteerde waarde is geen geldige optie. - + You must select at least {{ limit }} choice.|You must select at least {{ limit }} choices. Selecteer ten minste {{ limit }} optie.|Selecteer ten minste {{ limit }} opties. - + You must select at most {{ limit }} choice.|You must select at most {{ limit }} choices. Selecteer maximaal {{ limit }} optie.|Selecteer maximaal {{ limit }} opties. - + One or more of the given values is invalid. Eén of meer van de ingegeven waarden zijn ongeldig. - + This field was not expected. Dit veld werd niet verwacht. - + This field is missing. Dit veld ontbreekt. - + This value is not a valid date. Deze waarde is geen geldige datum. - + This value is not a valid datetime. Deze waarde is geen geldige datum en tijd. - + This value is not a valid email address. Deze waarde is geen geldig e-mailadres. - + The file could not be found. Het bestand kon niet gevonden worden. - + The file is not readable. Het bestand is niet leesbaar. - + The file is too large ({{ size }} {{ suffix }}). Allowed maximum size is {{ limit }} {{ suffix }}. Het bestand is te groot ({{ size }} {{ suffix }}). Toegestane maximum grootte is {{ limit }} {{ suffix }}. - + The mime type of the file is invalid ({{ type }}). Allowed mime types are {{ types }}. Het mime type van het bestand is ongeldig ({{ type }}). Toegestane mime types zijn {{ types }}. - + This value should be {{ limit }} or less. Deze waarde moet {{ limit }} of minder zijn. - + This value is too long. It should have {{ limit }} character or less.|This value is too long. It should have {{ limit }} characters or less. Deze waarde is te lang. Hij mag maximaal {{ limit }} teken bevatten.|Deze waarde is te lang. Hij mag maximaal {{ limit }} tekens bevatten. - + This value should be {{ limit }} or more. Deze waarde moet {{ limit }} of meer zijn. - + This value is too short. It should have {{ limit }} character or more.|This value is too short. It should have {{ limit }} characters or more. Deze waarde is te kort. Hij moet tenminste {{ limit }} teken bevatten.|Deze waarde is te kort. Hij moet tenminste {{ limit }} tekens bevatten. - + This value should not be blank. Deze waarde mag niet leeg zijn. - + This value should not be null. Deze waarde mag niet null zijn. - + This value should be null. Deze waarde moet null zijn. - + This value is not valid. Deze waarde is niet geldig. - + This value is not a valid time. Deze waarde is geen geldige tijd. - + This value is not a valid URL. Deze waarde is geen geldige URL. - + The two values should be equal. De twee waarden moeten gelijk zijn. - + The file is too large. Allowed maximum size is {{ limit }} {{ suffix }}. Het bestand is te groot. Toegestane maximum grootte is {{ limit }} {{ suffix }}. - + The file is too large. Het bestand is te groot. - + The file could not be uploaded. Het bestand kon niet worden geüpload. - + This value should be a valid number. Deze waarde moet een geldig getal zijn. - + This file is not a valid image. Dit bestand is geen geldige afbeelding. - + This is not a valid IP address. Dit is geen geldig IP-adres. - + This value is not a valid language. Deze waarde is geen geldige taal. - + This value is not a valid locale. Deze waarde is geen geldige locale. - + This value is not a valid country. Deze waarde is geen geldig land. - + This value is already used. Deze waarde wordt al gebruikt. - + The size of the image could not be detected. De grootte van de afbeelding kon niet bepaald worden. - + The image width is too big ({{ width }}px). Allowed maximum width is {{ max_width }}px. De afbeelding is te breed ({{ width }}px). De maximaal toegestane breedte is {{ max_width }}px. - + The image width is too small ({{ width }}px). Minimum width expected is {{ min_width }}px. De afbeelding is niet breed genoeg ({{ width }}px). De minimaal verwachte breedte is {{ min_width }}px. - + The image height is too big ({{ height }}px). Allowed maximum height is {{ max_height }}px. De afbeelding is te hoog ({{ height }}px). De maximaal toegestane hoogte is {{ max_height }}px. - + The image height is too small ({{ height }}px). Minimum height expected is {{ min_height }}px. De afbeelding is niet hoog genoeg ({{ height }}px). De minimaal verwachte hoogte is {{ min_height }}px. - + This value should be the user's current password. Deze waarde moet het huidige wachtwoord van de gebruiker zijn. - + This value should have exactly {{ limit }} character.|This value should have exactly {{ limit }} characters. Deze waarde moet exact {{ limit }} teken lang zijn.|Deze waarde moet exact {{ limit }} tekens lang zijn. - + The file was only partially uploaded. Het bestand is slechts gedeeltelijk geüpload. - + No file was uploaded. Er is geen bestand geüpload. - + No temporary folder was configured in php.ini. Er is geen tijdelijke map geconfigureerd in php.ini, of de gespecificeerde map bestaat niet. - + Cannot write temporary file to disk. Kan het tijdelijke bestand niet wegschrijven op disk. - + A PHP extension caused the upload to fail. De upload is mislukt vanwege een PHP-extensie. - + This collection should contain {{ limit }} element or more.|This collection should contain {{ limit }} elements or more. Deze collectie moet {{ limit }} element of meer bevatten.|Deze collectie moet {{ limit }} elementen of meer bevatten. - + This collection should contain {{ limit }} element or less.|This collection should contain {{ limit }} elements or less. Deze collectie moet {{ limit }} element of minder bevatten.|Deze collectie moet {{ limit }} elementen of minder bevatten. - + This collection should contain exactly {{ limit }} element.|This collection should contain exactly {{ limit }} elements. Deze collectie moet exact {{ limit }} element bevatten.|Deze collectie moet exact {{ limit }} elementen bevatten. - + Invalid card number. Ongeldig creditcardnummer. - + Unsupported card type or invalid card number. Niet-ondersteund type creditcard of ongeldig nummer. - + This is not a valid International Bank Account Number (IBAN). Dit is geen geldig internationaal bankrekeningnummer (IBAN). - + This value is not a valid ISBN-10. Deze waarde is geen geldige ISBN-10. - + This value is not a valid ISBN-13. Deze waarde is geen geldige ISBN-13. - + This value is neither a valid ISBN-10 nor a valid ISBN-13. Deze waarde is geen geldige ISBN-10 of ISBN-13 waarde. - + This value is not a valid ISSN. Deze waarde is geen geldige ISSN waarde. - + This value is not a valid currency. Deze waarde is geen geldige valuta. - + This value should be equal to {{ compared_value }}. Deze waarde moet gelijk zijn aan {{ compared_value }}. - + This value should be greater than {{ compared_value }}. Deze waarde moet groter zijn dan {{ compared_value }}. - + This value should be greater than or equal to {{ compared_value }}. Deze waarde moet groter dan of gelijk aan {{ compared_value }} zijn. - + This value should be identical to {{ compared_value_type }} {{ compared_value }}. Deze waarde moet identiek zijn aan {{ compared_value_type }} {{ compared_value }}. - + This value should be less than {{ compared_value }}. Deze waarde moet minder zijn dan {{ compared_value }}. - + This value should be less than or equal to {{ compared_value }}. Deze waarde moet minder dan of gelijk aan {{ compared_value }} zijn. - + This value should not be equal to {{ compared_value }}. Deze waarde mag niet gelijk zijn aan {{ compared_value }}. - + This value should not be identical to {{ compared_value_type }} {{ compared_value }}. Deze waarde mag niet identiek zijn aan {{ compared_value_type }} {{ compared_value }}. - + The image ratio is too big ({{ ratio }}). Allowed maximum ratio is {{ max_ratio }}. De afbeeldingsverhouding is te groot ({{ ratio }}). Maximale verhouding is {{ max_ratio }}. - + The image ratio is too small ({{ ratio }}). Minimum ratio expected is {{ min_ratio }}. De afbeeldingsverhouding is te klein ({{ ratio }}). Minimale verhouding is {{ min_ratio }}. - + The image is square ({{ width }}x{{ height }}px). Square images are not allowed. De afbeelding is vierkant ({{ width }}x{{ height }}px). Vierkante afbeeldingen zijn niet toegestaan. - + The image is landscape oriented ({{ width }}x{{ height }}px). Landscape oriented images are not allowed. De afbeelding is liggend ({{ width }}x{{ height }}px). Liggende afbeeldingen zijn niet toegestaan. - + The image is portrait oriented ({{ width }}x{{ height }}px). Portrait oriented images are not allowed. De afbeelding is staand ({{ width }}x{{ height }}px). Staande afbeeldingen zijn niet toegestaan. - + An empty file is not allowed. Lege bestanden zijn niet toegestaan. - + The host could not be resolved. De hostnaam kon niet worden bepaald. - + This value does not match the expected {{ charset }} charset. Deze waarde is niet in de verwachte tekencodering {{ charset }}. - + This is not a valid Business Identifier Code (BIC). Dit is geen geldige bedrijfsidentificatiecode (BIC/SWIFT). - + Error Fout - + This is not a valid UUID. Dit is geen geldige UUID. - + This value should be a multiple of {{ compared_value }}. Deze waarde zou een meervoud van {{ compared_value }} moeten zijn. - + This Business Identifier Code (BIC) is not associated with IBAN {{ iban }}. Deze bedrijfsidentificatiecode (BIC) is niet gekoppeld aan IBAN {{ iban }}. - + This value should be valid JSON. Deze waarde moet geldige JSON zijn. - + This collection should contain only unique elements. Deze collectie moet alleen unieke elementen bevatten. - + This value should be positive. Deze waarde moet positief zijn. - + This value should be either positive or zero. Deze waarde moet positief of gelijk aan nul zijn. - + This value should be negative. Deze waarde moet negatief zijn. - + This value should be either negative or zero. Deze waarde moet negatief of gelijk aan nul zijn. - + This value is not a valid timezone. Deze waarde is geen geldige tijdzone. - + This password has been leaked in a data breach, it must not be used. Please use another password. Dit wachtwoord is gelekt vanwege een data-inbreuk, het moet niet worden gebruikt. Kies een ander wachtwoord. - + This value should be between {{ min }} and {{ max }}. Deze waarde moet zich tussen {{ min }} en {{ max }} bevinden. - + This value is not a valid hostname. Deze waarde is geen geldige hostnaam. - + The number of elements in this collection should be a multiple of {{ compared_value }}. Het aantal elementen van deze collectie moet een veelvoud zijn van {{ compared_value }}. - + This value should satisfy at least one of the following constraints: Deze waarde moet voldoen aan tenminste een van de volgende voorwaarden: - + Each element of this collection should satisfy its own set of constraints. Elk element van deze collectie moet voldoen aan zijn eigen set voorwaarden. - + This value is not a valid International Securities Identification Number (ISIN). Deze waarde is geen geldig International Securities Identification Number (ISIN). - + This value should be a valid expression. Deze waarde moet een geldige expressie zijn. - + This value is not a valid CSS color. Deze waarde is geen geldige CSS kleur. - + This value is not a valid CIDR notation. Deze waarde is geen geldige CIDR notatie. - + The value of the netmask should be between {{ min }} and {{ max }}. De waarde van de netmask moet zich tussen {{ min }} en {{ max }} bevinden. - + + The filename is too long. It should have {{ filename_max_length }} character or less.|The filename is too long. It should have {{ filename_max_length }} characters or less. + De bestandsnaam is te lang. Het moet {{ filename_max_length }} karakter of minder zijn.|De bestandsnaam is te lang. Het moet {{ filename_max_length }} karakters of minder zijn. + + + The password strength is too low. Please use a stronger password. + Het wachtwoord is niet sterk genoeg. Probeer een sterker wachtwoord. + + + This value contains characters that are not allowed by the current restriction-level. + Deze waarde bevat tekens die niet zijn toegestaan volgens het huidige beperkingsniveau. + + + Using invisible characters is not allowed. + Het gebruik van onzichtbare tekens is niet toegestaan. + + + Mixing numbers from different scripts is not allowed. + Het mengen van cijfers uit verschillende schriften is niet toegestaan. + + + Using hidden overlay characters is not allowed. + Het gebruik van verborgen overlay-tekens is niet toegestaan. + + + The extension of the file is invalid ({{ extension }}). Allowed extensions are {{ extensions }}. + De bestandsextensie is ongeldig ({{ extension }}). De toegestane extensies zijn {{ extensions }}. + + + The detected character encoding is invalid ({{ detected }}). Allowed encodings are {{ encodings }}. + De gedetecteerde karaktercodering is ongeldig ({{ detected }}). De toegestane coderingen zijn {{ encodings }}. + + + This value is not a valid MAC address. + Deze waarde is geen geldig MAC-adres. + + + This URL is missing a top-level domain. + Deze URL mist een top-level domein. + + This form should not contain extra fields. Dit formulier mag geen extra velden bevatten. - + The uploaded file was too large. Please try to upload a smaller file. Het geüploade bestand is te groot. Probeer een kleiner bestand te uploaden. - + The CSRF token is invalid. Please try to resubmit the form. De CSRF-token is ongeldig. Probeer het formulier opnieuw te versturen. - + This value is not a valid HTML5 color. Dit is geen geldige HTML5 kleur. - + Please enter a valid birthdate. Vul een geldige geboortedatum in. - + The selected choice is invalid. Deze keuze is ongeldig. - + The collection is invalid. Deze collectie is ongeldig. - + Please select a valid color. Kies een geldige kleur. - + Please select a valid country. Kies een geldige landnaam. - + Please select a valid currency. Kies een geldige valuta. - + Please choose a valid date interval. Kies een geldig tijdinterval. - + Please enter a valid date and time. Vul een geldige datum en tijd in. - + Please enter a valid date. Vul een geldige datum in. - + Please select a valid file. Kies een geldig bestand. - + The hidden field is invalid. Het verborgen veld is incorrect. - + Please enter an integer. Vul een geldig getal in. - + Please select a valid language. Kies een geldige taal. - + Please select a valid locale. Kies een geldige locale. - + Please enter a valid money amount. Vul een geldig bedrag in. - + Please enter a number. Vul een geldig getal in. - + The password is invalid. Het wachtwoord is incorrect. - + Please enter a percentage value. Vul een geldig percentage in. - + The values do not match. De waardes komen niet overeen. - + Please enter a valid time. Vul een geldige tijd in. - + Please select a valid timezone. Vul een geldige tijdzone in. - + Please enter a valid URL. Vul een geldige URL in. - + Please enter a valid search term. Vul een geldige zoekterm in. - + Please provide a valid phone number. Vul een geldig telefoonnummer in. - + The checkbox has an invalid value. De checkbox heeft een incorrecte waarde. - + Please enter a valid email address. Vul een geldig e-mailadres in. - + Please select a valid option. Kies een geldige optie. - + Please select a valid range. Kies een geldig bereik. - + Please enter a valid week. Vul een geldige week in. + + There is already an account with this username + __There is already an account with this username + + + You should agree to our terms. + __You should agree to our terms. + + + Please enter a password + __Please enter a password + + + Your password should be at least {{ limit }} characters + __Your password should be at least {{ limit }} characters + diff --git a/webpack.config.js b/webpack.config.js index ddfbea72..85bde7f6 100644 --- a/webpack.config.js +++ b/webpack.config.js @@ -24,6 +24,11 @@ Encore .addEntry('home', './assets/home.js') .addEntry('parti', './assets/parti.js') .addEntry('table', './assets/table.js') + .addEntry('election', './assets/election.js') + .addEntry('trumbowyg', './assets/trumbowyg-init.js') + .addEntry('trumbowyg-style', './assets/styles/trumbowyg-init.scss') + + // enables the Symfony UX Stimulus bridge (used in assets/bootstrap.js) .enableStimulusBridge('./assets/controllers.json') @@ -79,14 +84,7 @@ Encore type: 'asset', //maxSize: 4 * 1024 }) - .copyFiles([ - {from: './node_modules/ckeditor4/', to: 'ckeditor/[path][name].[ext]', pattern: /\.(js|css)$/, includeSubdirectories: false}, - {from: './node_modules/ckeditor4/adapters', to: 'ckeditor/adapters/[path][name].[ext]'}, - {from: './node_modules/ckeditor4/lang', to: 'ckeditor/lang/[path][name].[ext]'}, - {from: './node_modules/ckeditor4/plugins', to: 'ckeditor/plugins/[path][name].[ext]'}, - {from: './node_modules/ckeditor4/skins', to: 'ckeditor/skins/[path][name].[ext]'}, - {from: './node_modules/ckeditor4/vendor', to: 'ckeditor/vendor/[path][name].[ext]'} - ]) + ; const config = Encore.getWebpackConfig();