From ac230ca190b682ac3bf9bb0b50d0fe61ab1aa5d0 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <90scastro@gmail.com> Date: Mon, 13 Aug 2018 14:44:15 +0200 Subject: [PATCH 1/4] Fixs list component was not retrieving elements --- src/js/modules/ajax.module.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/src/js/modules/ajax.module.ts b/src/js/modules/ajax.module.ts index 4676eaa..e2f6f42 100755 --- a/src/js/modules/ajax.module.ts +++ b/src/js/modules/ajax.module.ts @@ -193,6 +193,7 @@ export class AjaxModule complete: () => { this.isRetrievingElements = false; + this.currBoundsRetrieving = null; clearTimeout(this.loaderTimer); setTimeout( () => $('#directory-loading').hide(), 250); if (this.requestWaitingToBeExecuted) From f3e1f438f53c1c91e7825206d3260fce96067960 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <90scastro@gmail.com> Date: Mon, 13 Aug 2018 15:21:03 +0200 Subject: [PATCH 2/4] Improve transiscope theme --- src/scss/themes/transiscope/_element.scss | 57 ++-------------------- src/scss/themes/transiscope/_list.scss | 59 ++++++++++++++++++++++- src/scss/themes/transiscope/_map.scss | 10 ++-- 3 files changed, 69 insertions(+), 57 deletions(-) diff --git a/src/scss/themes/transiscope/_element.scss b/src/scss/themes/transiscope/_element.scss index 73d56ec..b54fe95 100644 --- a/src/scss/themes/transiscope/_element.scss +++ b/src/scss/themes/transiscope/_element.scss @@ -207,7 +207,7 @@ width: auto; float: right; border: 2px solid; - color: $secondary; + color: $primary; padding: 8px 15px; text-align: center; border-radius: 20px; @@ -215,7 +215,7 @@ &:before { margin-right: 8px; color: white; - background-color: $secondary; + background-color: $primary; border-radius: 50%; padding: 0 4px; } @@ -264,59 +264,12 @@ .element-item.active { .expandLabel.transform-big { background-color: white; - color: $secondary; - &:hover { color: $secondary; } + color: $primary; + &:hover { color: $primary; } @media #{$small-only} { padding: 8px 10px; } } .collapsible-header { padding-bottom: .8rem; } .inline-option-values { display: none; } } -} - -#directory-content-list { - - .element-item { - .inline-option-values { - width: 100%; - .inline-option-value:last-child { - float: right; - margin-right: 0; - .option-value { color: $dark; } - } - } - - .menu-element { - text-align: right; - padding: 0; - padding-right: 10px; - height: 2.3rem !important; - .menu-element-item .menu-icon { - font-size: 18px !important; - &:before { line-height: 2.3rem !important; } - } - - .menu-element-item-text { - font-size: 11px; - line-height: 2.5rem; - } - } - - - .expandLabel { display: none } - - .location { - font-weight: normal; - color: $primary; - .postalCode { font-size: 14px; } - } - - .collapsible-body-main-content { padding-bottom: 0; } - - .collapsible-body .tags-container { - margin-bottom: 0; - padding-bottom: 1rem; - } - - } -} +} \ No newline at end of file diff --git a/src/scss/themes/transiscope/_list.scss b/src/scss/themes/transiscope/_list.scss index 5fef479..6b220e6 100644 --- a/src/scss/themes/transiscope/_list.scss +++ b/src/scss/themes/transiscope/_list.scss @@ -31,10 +31,67 @@ padding-top: 6px; @include box-shadow-1(none); - @media #{$large-only} { left: 0px; } + @media (min-width: 1500px) { left: 0px; } } background-color: $light; color: $primary; text-align: left; +} + +#directory-content-list .element-item { + + &:not(.active) { @include box-shadow-1(none); } + .collapsible-header { border-bottom: 1px solid $light }; + .collapsible-body { border-bottom: none; } + .section { margin-right: 0; } + + .inline-option-values { + width: 100%; + .inline-option-value:last-child { + float: right; + margin-right: 0; + .option-value { color: $dark; } + } + } + + .menu-element { + text-align: right; + padding: 0; + padding-right: 10px; + height: 2.3rem !important; + .menu-element-item .menu-icon { + font-size: 18px !important; + &:before { line-height: 2.3rem !important; } + } + + .menu-element-item-text { + font-size: 11px; + line-height: 2.5rem; + } + } + + .expandLabel { display: none } + + .location { + font-weight: normal; + color: $primary; + .postalCode { font-size: 14px; } + } + + .collapsible-body-main-content { padding-bottom: 0; } + + .collapsible-body .tags-container { + margin-bottom: 0; + padding-bottom: 1rem; + } + + .section-taxonomy .category-wrapper:last-child .option-value:last-child { margin-bottom: 0; } + +} + +#directory-content-list .collapsible.popout > li { margin-bottom: 3px; } + +#directory-list-spinner-loader .spinner-layer { + border-color: $dark; } \ No newline at end of file diff --git a/src/scss/themes/transiscope/_map.scss b/src/scss/themes/transiscope/_map.scss index a511360..d33bf35 100644 --- a/src/scss/themes/transiscope/_map.scss +++ b/src/scss/themes/transiscope/_map.scss @@ -10,16 +10,18 @@ .leaflet-control-layers { margin-right: 17px !important} .gogo-map-control { - background-color: $dark; - color: white; - border: none; text-transform: uppercase; font-weight: bold; font-size: 12px !important; line-height: 22px; padding: 5px 15px; - .gogo-icon-list { color: $primary; } + background-color: white; + color: $secondary; + border: 1px solid #d7d7d7; + @include box-shadow-1(1px 2px 4px 1px rgba(0, 0, 0, 0.12)); + + .gogo-icon-list { color: inherit; } } #map-gogo-controls { From d135aad58bbb6c7efdd8fb236d1c839e22432146 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <90scastro@gmail.com> Date: Mon, 13 Aug 2018 15:21:52 +0200 Subject: [PATCH 3/4] update dist 13/09 --- dist/gogocarto.css | 101 ++++++++++++++++++++++---------------- dist/gogocarto.js | 97 ++++++++++++++++++------------------ dist/gogocarto.min.css | 4 +- dist/gogocarto.min.css.gz | Bin 28575 -> 28656 bytes dist/gogocarto.min.js | 8 +-- dist/gogocarto.min.js.gz | Bin 253388 -> 253406 bytes 6 files changed, 115 insertions(+), 95 deletions(-) diff --git a/dist/gogocarto.css b/dist/gogocarto.css index 1804fb5..398f435 100755 --- a/dist/gogocarto.css +++ b/dist/gogocarto.css @@ -3889,7 +3889,7 @@ th { width: auto; float: right; border: 2px solid; - color: #f79900; + color: #3bad78; padding: 8px 15px; text-align: center; border-radius: 20px; @@ -3897,7 +3897,7 @@ th { .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before { margin-right: 8px; color: white; - background-color: #f79900; + background-color: #3bad78; border-radius: 50%; padding: 0 4px; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before { @@ -3930,9 +3930,9 @@ th { padding: 8px 10px; } } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big { background-color: white; - color: #f79900; } + color: #3bad78; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover { - color: #f79900; } + color: #3bad78; } @media only screen and (max-width: 600px) { .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big { padding: 8px 10px; } } @@ -3940,37 +3940,6 @@ th { padding-bottom: .8rem; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .inline-option-values { display: none; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values { - width: 100%; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child { - float: right; - margin-right: 0; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value { - color: #175259; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element { - text-align: right; - padding: 0; - padding-right: 10px; - height: 2.3rem !important; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon { - font-size: 18px !important; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before { - line-height: 2.3rem !important; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text { - font-size: 11px; - line-height: 2.5rem; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel { - display: none; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location { - font-weight: normal; - color: #3bad78; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode { - font-size: 14px; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content { - padding-bottom: 0; } - .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container { - margin-bottom: 0; - padding-bottom: 1rem; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in, .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out, .gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button { color: #175259; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in:hover, .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out:hover, .gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button:hover { @@ -3979,16 +3948,19 @@ th { .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers { margin-right: 17px !important; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control { - background-color: #175259; - color: white; - border: none; text-transform: uppercase; font-weight: bold; font-size: 12px !important; line-height: 22px; - padding: 5px 15px; } + padding: 5px 15px; + background-color: white; + color: #f79900; + border: 1px solid #d7d7d7; + -webkit-box-shadow: 1px 2px 4px 1px rgba(0, 0, 0, 0.12); + -moz-box-shadow: 1px 2px 4px 1px rgba(0, 0, 0, 0.12); + box-shadow: 1px 2px 4px 1px rgba(0, 0, 0, 0.12); } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control .gogo-icon-list { - color: #3bad78; } + color: inherit; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-gogo-controls { width: 100%; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control { @@ -4048,9 +4020,56 @@ th { -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } - @media only screen and (min-width: 1201px) { + @media (min-width: 1500px) { .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button { left: 0px; } } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item:not(.active) { + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-header { + border-bottom: 1px solid #f3f6f4; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body { + border-bottom: none; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section { + margin-right: 0; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values { + width: 100%; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child { + float: right; + margin-right: 0; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value { + color: #175259; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element { + text-align: right; + padding: 0; + padding-right: 10px; + height: 2.3rem !important; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon { + font-size: 18px !important; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before { + line-height: 2.3rem !important; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text { + font-size: 11px; + line-height: 2.5rem; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel { + display: none; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location { + font-weight: normal; + color: #3bad78; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode { + font-size: 14px; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content { + padding-bottom: 0; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container { + margin-bottom: 0; + padding-bottom: 1rem; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section-taxonomy .category-wrapper:last-child .option-value:last-child { + margin-bottom: 0; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .collapsible.popout > li { + margin-bottom: 3px; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-list-spinner-loader .spinner-layer { + border-color: #175259; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .feature-button { margin-right: 0; float: left; } diff --git a/dist/gogocarto.js b/dist/gogocarto.js index 47e2455..7486aac 100644 --- a/dist/gogocarto.js +++ b/dist/gogocarto.js @@ -33810,53 +33810,6 @@ root: root })(); })(); -(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["components/list/list.html.njk"] = (function() { -function root(env, context, frame, runtime, cb) { -var lineno = null; -var colno = null; -var output = ""; -try { -var parentTemplate = null; -output += "
\n\n "; -var tasks = []; -tasks.push( -function(callback) { -env.getTemplate("components/buttons/show-directory-menu-button.html.njk", false, "components/list/list.html.njk", null, function(t_3,t_1) { -if(t_3) { cb(t_3); return; } -callback(null,t_1);}); -}); -tasks.push( -function(template, callback){ -template.render(context.getVariables(), frame, function(t_4,t_2) { -if(t_4) { cb(t_4); return; } -callback(null,t_2);}); -}); -tasks.push( -function(result, callback){ -output += result; -callback(null); -}); -env.waterfall(tasks, function(){ -output += "\n \n \n\n
\n Résultats\n \n \n
\n\n
\n
\n\n
\n \n
\n
"; -output += runtime.suppressValue((lineno = 18, colno = 59, runtime.callWrap(runtime.memberLookup((runtime.contextOrFrameLookup(context, frame, "spinnerLoader")),"create"), "spinnerLoader[\"create\"]", context, ["directory-list-spinner-loader"])), env.opts.autoescape); -output += "
\n
\n Aucun résultat trouvé
\n « L’échec est le fondement de la réussite. »
\n Lao-Tseu
\n \n
\n
"; -if(parentTemplate) { -parentTemplate.rootRenderFunc(env, context, frame, runtime, cb); -} else { -cb(null, output); -} -}); -} catch (e) { - cb(runtime.handleError(e, lineno, colno)); -} -} -return { -root: root -}; - -})(); -})(); - (function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["components/element/body.html.njk"] = (function() { function root(env, context, frame, runtime, cb) { var lineno = null; @@ -35435,6 +35388,53 @@ root: root })(); })(); +(function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["components/list/list.html.njk"] = (function() { +function root(env, context, frame, runtime, cb) { +var lineno = null; +var colno = null; +var output = ""; +try { +var parentTemplate = null; +output += "
\n\n "; +var tasks = []; +tasks.push( +function(callback) { +env.getTemplate("components/buttons/show-directory-menu-button.html.njk", false, "components/list/list.html.njk", null, function(t_3,t_1) { +if(t_3) { cb(t_3); return; } +callback(null,t_1);}); +}); +tasks.push( +function(template, callback){ +template.render(context.getVariables(), frame, function(t_4,t_2) { +if(t_4) { cb(t_4); return; } +callback(null,t_2);}); +}); +tasks.push( +function(result, callback){ +output += result; +callback(null); +}); +env.waterfall(tasks, function(){ +output += "\n \n \n\n
\n Résultats\n \n \n
\n\n
\n
\n\n
\n \n
\n
"; +output += runtime.suppressValue((lineno = 18, colno = 59, runtime.callWrap(runtime.memberLookup((runtime.contextOrFrameLookup(context, frame, "spinnerLoader")),"create"), "spinnerLoader[\"create\"]", context, ["directory-list-spinner-loader"])), env.opts.autoescape); +output += "
\n
\n Aucun résultat trouvé
\n « L’échec est le fondement de la réussite. »
\n Lao-Tseu
\n \n
\n
"; +if(parentTemplate) { +parentTemplate.rootRenderFunc(env, context, frame, runtime, cb); +} else { +cb(null, output); +} +}); +} catch (e) { + cb(runtime.handleError(e, lineno, colno)); +} +} +return { +root: root +}; + +})(); +})(); + (function() {(window.nunjucksPrecompiled = window.nunjucksPrecompiled || {})["components/map/info-bar.html.njk"] = (function() { function root(env, context, frame, runtime, cb) { var lineno = null; @@ -42528,6 +42528,7 @@ var AjaxModule = /** @class */function () { }, complete: function complete() { _this.isRetrievingElements = false; + _this.currBoundsRetrieving = null; clearTimeout(_this.loaderTimer); setTimeout(function () { return $('#directory-loading').hide(); @@ -44908,4 +44909,4 @@ function splitLongText(text, length, size) { } },{}]},{},[46]) -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvanMvYXBwLmNvbXBvbmVudC50cyIsInNyYy9qcy9hcHAubW9kdWxlLnRzIiwic3JjL2pzL2NsYXNzZXMvY2xhc3Nlcy50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWNvbmZpZy5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWRlZmF1bHQtZmVhdHVyZS50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWZlYXR1cmUuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2NhdGVnb3J5LXZhbHVlLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvZWxlbWVudC9jb250cmlidXRpb24uY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2VsZW1lbnQtYmFzZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2VsZW1lbnQvZWxlbWVudC11cmwuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2VsZW1lbnQuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L29wdGlvbi12YWx1ZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2VsZW1lbnQvcG9zdGFsLWFkZHJlc3MuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L3N0YW1wLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvZWxlbWVudC92b3RlLXJlcG9ydC5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2V2ZW50LmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvaGlzdG9yeS1zdGF0ZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL21hcC90aWxlLWxheWVyLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvbWFwL3ZpZXdwb3J0LmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvdGF4b25vbXkvY2F0ZWdvcnkuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy90YXhvbm9teS9vcHRpb24uY2xhc3MudHMiLCJzcmMvanMvY29tcG9uZW50cy9jdXN0b20tcG9wdXAuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZGlyZWN0b3J5LW1lbnUvY2F0ZWdvcnktb3B0aW9uLXRyZWUtbm9kZS5jbGFzcy50cyIsInNyYy9qcy9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2RpcmVjdG9yeS1tZW51LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2ZpbHRlcnMuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50LW1lbnUuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2VsZW1lbnQvaW1hZ2VzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2VsZW1lbnQvaW50ZXJhY3RpdmUtc2VjdGlvbi5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9lbGVtZW50L21vZGVyYXRpb24uY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9zdGFtcC5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9nb2dvLWNvbnRyb2xzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2xpc3QvZWxlbWVudC1saXN0LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9kaXJlY3Rpb25zLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9pbmZvLWJhci5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tYXAvbWFwLWNvbnRyb2xzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9tYXAuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbWFwL21hcmtlci5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tb2RhbHMvYWJzdHJhY3QtbW9kYWwuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL2RlbGV0ZS5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tb2RhbHMvcGljay1hZGRyZXNzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21vZGFscy9yZXBvcnQuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL3NlbmQtZW1haWwuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL3ZvdGUuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsInNyYy9qcy9nb2dvY2FydG8udHMiLCJzcmMvanMvbWFuYWdlcnMvZGF0YS10eXBlLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvZWxlbWVudHMubWFuYWdlci50cyIsInNyYy9qcy9tYW5hZ2Vycy9nZW9jb2RpbmcubWFuYWdlci50cyIsInNyYy9qcy9tYW5hZ2Vycy9oaXN0b3J5LXN0YXRlLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvbWFwLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvbW9kZS5tYW5hZ2VyLnRzIiwic3JjL2pzL21hbmFnZXJzL3N0YXRlLm1hbmFnZXIudHMiLCJzcmMvanMvbW9kdWxlcy9hamF4Lm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2JvdW5kcy5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL2RvY3VtZW50LXRpdGxlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2NvcmUvaGlzdG9yeS5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL3JvdXRlci5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL3RlbXBsYXRlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnQvZGlmZi5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50L2VsZW1lbnQtanNvbi1sb2FkZXIubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvZWxlbWVudC9mb3JtYXRlci5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50L2ljb25zLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnQvb3B0aW9uLXZhbHVlcy5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy1qc29uLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL2VsZW1lbnRzLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL2Zhdm9yaXRlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL3N0YW1wLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2dlb2NvZGVyLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2xvZ2luLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL21hcC9kaXNwbGF5LWVsZW1lbnQtYWxvbmUubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvZmlsdGVyLXJvdXRpbmcubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvZmlsdGVyLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL3RheG9ub215L3RheG9ub215LXNrb3MubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvdGF4b25vbXkubW9kdWxlLnRzIiwic3JjL2pzL3V0aWxzL2Nvb2tpZXMudHMiLCJzcmMvanMvdXRpbHMvcGFyYW1zLnRzIiwic3JjL2pzL3V0aWxzL3BhcnNlci1zdHJpbmctbnVtYmVyLnRzIiwic3JjL2pzL3V0aWxzL3N0cmluZy1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQ1dBOztBQU1BLElBQUEsZUFBQSxhQUFBLFlBQUE7QUFJQyxhQUFBLFlBQUEs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QU8sUUFBUSxRQUFRLE1BQVIsR0FBaUIsQ0FBekIsQ0FBUDtBQUNEO0FBRUssU0FBQSxhQUFBLENBQXdCLElBQXhCLEVBQXVDLE1BQXZDLEVBQXdELElBQXhELEVBQTBFO0FBQWxCLFFBQUEsU0FBQSxLQUFBLENBQUEsRUFBQTtBQUFBLGVBQUEsRUFBQTtBQUFrQjtBQUU5RTtBQUNBLFFBQUksS0FBSyxNQUFMLEdBQWMsU0FBUyxJQUEzQixFQUFpQztBQUMvQixpQkFBUyxTQUFTLElBQWxCO0FBQ0Q7QUFDRCxRQUFJLGNBQWMsU0FBUyxJQUEzQjtBQUNBLFFBQUksU0FBUyxLQUFLLEtBQUwsQ0FBVyxXQUFYLEVBQXdCLE1BQXhCLEVBQWdDLEtBQWhDLENBQXNDLFVBQXRDLEVBQWtELENBQWxELEVBQXFELE1BQWxFO0FBQ0EsUUFBSSxVQUFVLElBQWQsRUFBb0IsU0FBUyxLQUFLLEtBQUwsQ0FBVyxXQUFYLEVBQXdCLE1BQXhCLEVBQWdDLEtBQWhDLENBQXNDLEdBQXRDLEVBQTJDLENBQTNDLEVBQThDLE1BQXZEO0FBQ3BCLGNBQVUsY0FBYyxDQUF4QjtBQUNBLFFBQUksUUFBUSxLQUFLLEtBQUwsQ0FBVyxDQUFYLEVBQWMsTUFBZCxDQUFaO0FBQ0EsUUFBSSxRQUFRLEtBQUssS0FBTCxDQUFXLE1BQVgsQ0FBWjtBQUNBLFdBQU8sRUFBRSxPQUFPLEtBQVQsRUFBZ0IsUUFBUSxLQUF4QixFQUFQO0FBQ0QiLCJmaWxlIjoiZ2VuZXJhdGVkLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXNDb250ZW50IjpbIihmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSxuLHQpe2Z1bmN0aW9uIG8oaSxmKXtpZighbltpXSl7aWYoIWVbaV0pe3ZhciBjPVwiZnVuY3Rpb25cIj09dHlwZW9mIHJlcXVpcmUmJnJlcXVpcmU7aWYoIWYmJmMpcmV0dXJuIGMoaSwhMCk7aWYodSlyZXR1cm4gdShpLCEwKTt2YXIgYT1uZXcgRXJyb3IoXCJDYW5ub3QgZmluZCBtb2R1bGUgJ1wiK2krXCInXCIpO3Rocm93IGEuY29kZT1cIk1PRFVMRV9OT1RfRk9VTkRcIixhfXZhciBwPW5baV09e2V4cG9ydHM6e319O2VbaV1bMF0uY2FsbChwLmV4cG9ydHMsZnVuY3Rpb24ocil7dmFyIG49ZVtpXVsxXVtyXTtyZXR1cm4gbyhufHxyKX0scCxwLmV4cG9ydHMscixlLG4sdCl9cmV0dXJuIG5baV0uZXhwb3J0c31mb3IodmFyIHU9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZSxpPTA7aTx0Lmxlbmd0aDtpKyspbyh0W2ldKTtyZXR1cm4gb31yZXR1cm4gcn0pKCkiLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuL2dvZ29jYXJ0b1wiO1xuXG5cbi8vZGVjbGFyZSB2YXIgJDtcbmRlY2xhcmUgbGV0ICQsIHdpbmRvdyA6IGFueSwgTWF0ZXJpYWxpemUgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBBcHBDb21wb25lbnRcbntcblx0aW5mb3JCYXJBbmltYXRpb25UaW1lcjtcblxuXHRjb25zdHJ1Y3RvcigpIHtcblx0XHRBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC5vblNob3cuZG8oICgpID0+IHsgdGhpcy5oYW5kbGVEaXJlY3RvcnlNZW51U2hvdygpIH0pO1xuXHRcdEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50Lm9uSGlkZS5kbyggKCkgPT4geyB0aGlzLmhhbmRsZURpcmVjdG9yeU1lbnVIaWRlKCkgfSk7XG5cdH1cblxuXHRpbml0aWFsaXplKClcblx0e1xuXHRcdHRoaXMudXBkYXRlQ29tcG9uZW50c1NpemUoKTtcblxuXHRcdGxldCByZXM7XG5cdFx0d2luZG93Lm9ucmVzaXplID0gKCkgPT5cblx0XHR7XG5cdFx0ICAgaWYgKHJlcykgeyBjbGVhclRpbWVvdXQocmVzKTsgfVxuXHRcdCAgIHJlcyA9IHNldFRpbWVvdXQoICgpID0+IHsgXG5cdFx0ICAgXHRjb25zb2xlLmxvZyhcIk9uIHJlc2l6ZSB1cGRhdGUgY29tcG9uZW50IHNpemVcIik7XG5cdFx0ICAgXHR0aGlzLnVwZGF0ZUNvbXBvbmVudHNTaXplKCk7IFxuXHRcdCAgIFx0QXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQudXBkYXRlU2l6ZSgpO1xuXHRcdCAgIH0sMjAwKTtcblx0XHR9O1x0XG5cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMudXBkYXRlQ29tcG9uZW50c1NpemUoZmFsc2UpOyB9LCAxMDAwKTtcdFxuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy51cGRhdGVDb21wb25lbnRzU2l6ZShmYWxzZSk7IH0sIDIwMDApO1xuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy51cGRhdGVDb21wb25lbnRzU2l6ZShmYWxzZSk7IH0sIDUwMDApO1xuXHR9XG5cblx0dG9hc3RNZXNzYWdlKCRtZXNzYWdlLCAkZHVyYXRpb24gPSAzMDAwKVxuXHR7XG5cdFx0TWF0ZXJpYWxpemUudG9hc3QoJG1lc3NhZ2UsICRkdXJhdGlvbiwgJ3JvdW5kZWQnKVxuXHR9XG5cblx0aGFuZGxlRGlyZWN0b3J5TWVudVNob3coKVxuXHR7XHRcdFxuXHRcdGlmICghdGhpcy5pc01vYmlsZVNjcmVlbigpKVxuXHRcdHtcblx0XHRcdCQoJyNkaXJlY3RvcnktY29udGVudCcpLnZlbG9jaXR5KHsnbWFyZ2luLWxlZnQnOiBBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC53aWR0aH0sIHtkdXJhdGlvbjogMzAwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ3N3aW5nJ30pO1xuXHRcdFx0JCgnI21hcC1nb2dvLWNvbnRyb2xzJykudmVsb2NpdHkoeydwYWRkaW5nLWxlZnQnOiAnMTBweCd9LCB7ZHVyYXRpb246IDMwMCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdzd2luZyd9KTtcblx0XHRcdCQoJy5zaG93LWRpcmVjdG9yeS1tZW51LWJ1dHRvbicpLmhpZGUoKTtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4geyAkKCcjZGlyZWN0b3J5LWNvbnRlbnQnKS5jc3MoJ21hcmdpbi1sZWZ0JywgQXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQud2lkdGgpOyB9LCA0MDApO1xuXHRcdH1cdFxuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgQXBwLm1hcENvbXBvbmVudC5yZXNpemUoKSB9LCA0MDApO1xuXHR9XG5cblx0aGFuZGxlRGlyZWN0b3J5TWVudUhpZGUoKVxuXHR7XG5cdFx0JCgnLnNob3ctZGlyZWN0b3J5LW1lbnUtYnV0dG9uJykuZmFkZUluKDIwMCk7XG5cdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50JykudmVsb2NpdHkoeydtYXJnaW4tbGVmdCc6JzAnfSwge2R1cmF0aW9uOiAxMDAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnc3dpbmcnfSk7XHRcdFxuXHRcdCQoJyNtYXAtZ29nby1jb250cm9scycpLnZlbG9jaXR5KHsncGFkZGluZy1sZWZ0JzogJzBweCd9LCB7ZHVyYXRpb246IDEwMCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdzd2luZyd9KTtcblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IEFwcC5tYXBDb21wb25lbnQucmVzaXplKCkgfSwgMjAwKTtcblx0fVx0XG5cblx0aXNNb2JpbGVTY3JlZW4oKSB7IHJldHVybiB0aGlzLndpZHRoKCkgPCA4NTA7IH1cblxuXHRtYXBXaWR0aCgpIHsgcmV0dXJuICQoJyNkaXJlY3RvcnktY29udGVudCcpLndpZHRoKCk7IH1cblxuXHR3aWR0aCgpIHsgcmV0dXJuICQoJy5nb2dvY2FydG8tY29udGFpbmVyJykud2lkdGgoKTsgfVxuXG5cdHVwZGF0ZUNvbXBvbmVudHNTaXplKCRyZWZyZXNoSW5mb0JhciA9IHRydWUpXG5cdHtcdFxuXHRcdEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LnVwZGF0ZVNpemUoKTtcblxuXHRcdEFwcC5zZWFyY2hCYXJDb21wb25lbnQudXBkYXRlKCk7XG5cblx0XHRBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQudXBkYXRlUG9zaXRpb24oKTtcblxuXHRcdC8vIHVwZGF0ZSBpbWcgY29udHJvbHMgZm9yIGVsZW1lbnQgbGlzdFxuXHRcdCQoJyNkaXJlY3RvcnktY29udGVudC1saXN0IC5lbGVtZW50LWl0ZW0nKS5lYWNoKGZ1bmN0aW9uKCkge1xuXHRcdFx0JCh0aGlzKS5maW5kKCcuaW1nLW92ZXJsYXknKS5jc3MoJ2hlaWdodCcsICQodGhpcykuZmluZCgnLmltZy1jb250YWluZXInKS5oZWlnaHQoKSk7XG5cdFx0fSk7XG5cblx0XHRsZXQgaW5mb0Jhckhhc0NoYW5nZURpc3BsYXlNb2RlID0gZmFsc2U7XG5cdFx0Ly8gc2hvdyBlbGVtZW50IGluZm8gYmFyIGFzaWRlIG9yIGF0IHRoZSBib3R0b20gZGVwZW5kaW5nIG9mIGRpcmVjb3R5LWNvbnRlbnQgd2lkdGhcblx0XHRpZiAodGhpcy5tYXBXaWR0aCgpID4gOTAwKVxuXHRcdHtcblx0XHRcdGlmICghQXBwLmluZm9CYXJDb21wb25lbnQuaXNEaXNwbGF5ZWRBc2lkZSgpKVxuXHRcdFx0e1xuXHRcdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5kaXNwbGF5QXNpZGUoKTtcblx0XHRcdFx0aW5mb0Jhckhhc0NoYW5nZURpc3BsYXlNb2RlID0gdHJ1ZTtcblx0XHRcdH1cdFx0XHRcblx0XHR9XHRcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYgKCFBcHAuaW5mb0JhckNvbXBvbmVudC5pc0Rpc3BsYXllZEJvdHRvbSgpKVxuXHRcdFx0e1xuXHRcdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5kaXNwbGF5Qm90dG9tKCk7XG5cdFx0XHRcdGluZm9CYXJIYXNDaGFuZ2VEaXNwbGF5TW9kZSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0XHQkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuc3RvcCh0cnVlKS5jc3MoJ21hcmdpbi1yaWdodCcsICcwJyk7XG5cdFx0fVx0XG5cblx0XHRpZiAoQXBwLmluZm9CYXJDb21wb25lbnQuaXNEaXNwbGF5ZWRBc2lkZSgpKVx0XG5cdFx0e1x0XHRcdFxuXHRcdFx0bGV0IGluZm9CYXJXaWR0aDtcblx0XHRcdGlmIChBcHAuY29uZmlnLmluZm9iYXIud2lkdGgpIGluZm9CYXJXaWR0aCA9IEFwcC5jb25maWcuaW5mb2Jhci53aWR0aDtcblx0XHRcdGVsc2UgaW5mb0JhcldpZHRoID0gdGhpcy5tYXBXaWR0aCgpID4gMTEwMCA/ICc1NDBweCcgOiAnNDcwcHgnO1xuXG5cdFx0XHRpZiAoaW5mb0JhcldpZHRoID09ICc0NzBweCcpICQoJyNlbGVtZW50LWluZm8tYmFyJykuYWRkQ2xhc3MoJ3NtYWxsLXdpZHRoJyk7XG5cdFx0XHRlbHNlICQoJyNlbGVtZW50LWluZm8tYmFyJykucmVtb3ZlQ2xhc3MoJ3NtYWxsLXdpZHRoJyk7XG5cblx0XHRcdGlmIChpbmZvQmFySGFzQ2hhbmdlRGlzcGxheU1vZGUpXG5cdFx0XHRcdCQoJyNlbGVtZW50LWluZm8tYmFyJykuY3NzKCd3aWR0aCcsIGluZm9CYXJXaWR0aCk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdCQoJyNlbGVtZW50LWluZm8tYmFyJykuYW5pbWF0ZSh7J3dpZHRoJzogaW5mb0JhcldpZHRofSwgMzUwLCBcInN3aW5nXCIpO1xuXHRcdFx0XG5cdFx0XHR0aGlzLnVwZGF0ZURpcmVjdG9yeUNvbnRlbnRNYXJnaW5JZkluZm9CYXJEaXNwbGF5ZWRBc2lkZSghaW5mb0Jhckhhc0NoYW5nZURpc3BsYXlNb2RlLCBpbmZvQmFyV2lkdGgpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYgKCRyZWZyZXNoSW5mb0JhcikgJCgnI2VsZW1lbnQtaW5mby1iYXInKS5zdG9wKHRydWUpXG5cdFx0XHQkKCcjZWxlbWVudC1pbmZvLWJhcicpLmNzcygnd2lkdGgnLCAnMTAwJScpO1xuXHRcdH1cblxuXHRcdGlmICgkcmVmcmVzaEluZm9CYXIpIHNldFRpbWVvdXQoICgpID0+IHsgQXBwLmluZm9CYXJDb21wb25lbnQucmVmcmVzaCgpOyB9LCAxMDApO1xuXG5cdFx0aWYgKCQoJyNkaXJlY3RvcnktbWVudScpLmlzKCc6dmlzaWJsZScpICYmICF0aGlzLmlzTW9iaWxlU2NyZWVuKCkpXG5cdFx0e1xuXHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpIHsgXG5cdFx0XHRcdCQoJyNkaXJlY3RvcnktY29udGVudCcpLmNzcygnbWFyZ2luLWxlZnQnLCBBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC53aWR0aCk7XG5cdFx0XHR9LDApO1x0XHRcblx0XHR9XG5cdFx0ZWxzZSAkKCcjZGlyZWN0b3J5LWNvbnRlbnQnKS5jc3MoJ21hcmdpbi1sZWZ0JywgMCk7XG5cdH1cblxuXHR1cGRhdGVEaXJlY3RvcnlDb250ZW50TWFyZ2luSWZJbmZvQmFyRGlzcGxheWVkQXNpZGUoYW5pbWF0ZSA6IGJvb2xlYW4gPSBmYWxzZSwgd2lkdGggOiBzdHJpbmcgPSBBcHAuaW5mb0JhckNvbXBvbmVudC53aWR0aCgpKVxuXHR7XHRcdFxuXHRcdGlmICghQXBwLmluZm9CYXJDb21wb25lbnQuaXNWaXNpYmxlKSByZXR1cm47XG5cblx0XHRpZiAoYW5pbWF0ZSkgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCcpLnN0b3AodHJ1ZSkuYW5pbWF0ZSh7J21hcmdpbi1yaWdodCc6IHdpZHRofSwgMzUwLCAnc3dpbmcnKTtcblx0XHRlbHNlICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAnKS5zdG9wKHRydWUpLmNzcygnbWFyZ2luLXJpZ2h0Jywgd2lkdGgpO1xuXHRcdFxuXHRcdEFwcC5jb21wb25lbnQudXBkYXRlTWFwU2l6ZSgpO1xuXHR9XG5cdFxuXHR1cGRhdGVNYXBTaXplKClcblx0e1x0XHRcblx0XHRpZiAoIUFwcC5pbmZvQmFyQ29tcG9uZW50LmlzRGlzcGxheWVkQXNpZGUoKSkgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCcpLnN0b3AodHJ1ZSkuY3NzKCdtYXJnaW4tcmlnaHQnLCAnMCcpO1xuXHRcdGlmIChBcHAubWFwQ29tcG9uZW50KSBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBBcHAubWFwQ29tcG9uZW50LnJlc2l6ZSgpOyB9LDApO1xuXHR9XHRcbn1cblxuXG5cblxuXG4iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG4vLy8gPHJlZmVyZW5jZSB0eXBlcz1cImxlYWZsZXRcIiAvPlxuXG4vLyBNQU5BR0VSU1xuaW1wb3J0IHsgTW9kZU1hbmFnZXIsIEFwcE1vZGVzIH0gZnJvbSBcIi4vbWFuYWdlcnMvbW9kZS5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBTdGF0ZU1hbmFnZXIsIEFwcFN0YXRlcyB9IGZyb20gXCIuL21hbmFnZXJzL3N0YXRlLm1hbmFnZXJcIjtcbmltcG9ydCB7IERhdGFUeXBlTWFuYWdlciwgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi9tYW5hZ2Vycy9kYXRhLXR5cGUubWFuYWdlclwiO1xuaW1wb3J0IHsgRWxlbWVudHNNYW5hZ2VyIH0gZnJvbSBcIi4vbWFuYWdlcnMvZWxlbWVudHMubWFuYWdlclwiO1xuaW1wb3J0IHsgSGlzdG9yeVN0YXRlTWFuYWdlciB9IGZyb20gXCIuL21hbmFnZXJzL2hpc3Rvcnktc3RhdGUubWFuYWdlclwiO1xuaW1wb3J0IHsgR2VvY29kaW5nTWFuYWdlciB9IGZyb20gXCIuL21hbmFnZXJzL2dlb2NvZGluZy5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBNYXBNYW5hZ2VyIH0gZnJvbSBcIi4vbWFuYWdlcnMvbWFwLm1hbmFnZXJcIjtcblxuLy8gTU9EVUxFU1xuaW1wb3J0IHsgR2VvY29kZXJNb2R1bGUsIEdlb2NvZGVSZXN1bHQgfSBmcm9tIFwiLi9tb2R1bGVzL2dlb2NvZGVyLm1vZHVsZVwiO1xuaW1wb3J0IHsgRmlsdGVyTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy90YXhvbm9teS9maWx0ZXIubW9kdWxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJSb3V0aW5nTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy90YXhvbm9teS9maWx0ZXItcm91dGluZy5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnRzTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnRzSnNvbk1vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvZWxlbWVudHMvZWxlbWVudHMtanNvbi5tb2R1bGVcIjtcbmltcG9ydCB7IEZhdm9yaXRlTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9lbGVtZW50cy9mYXZvcml0ZS5tb2R1bGVcIjtcbmltcG9ydCB7IERpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL21hcC9kaXNwbGF5LWVsZW1lbnQtYWxvbmUubW9kdWxlXCI7XG5pbXBvcnQgeyBBamF4TW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9hamF4Lm1vZHVsZVwiO1xuaW1wb3J0IHsgVGF4b25vbXlNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvdGF4b25vbXkvdGF4b25vbXkubW9kdWxlJztcbmltcG9ydCB7IFRheG9ub215U2tvc01vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy90YXhvbm9teS90YXhvbm9teS1za29zLm1vZHVsZSc7XG5pbXBvcnQgeyBSb3V0ZXJNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2NvcmUvcm91dGVyLm1vZHVsZVwiO1xuaW1wb3J0IHsgTG9naW5Nb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2xvZ2luLm1vZHVsZVwiO1xuaW1wb3J0IHsgVGVtcGxhdGVNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2NvcmUvdGVtcGxhdGUubW9kdWxlXCI7XG5pbXBvcnQgeyBIaXN0b3J5TW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2NvcmUvaGlzdG9yeS5tb2R1bGUnO1xuaW1wb3J0IHsgQm91bmRzTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2JvdW5kcy5tb2R1bGUnO1xuaW1wb3J0IHsgRG9jdW1lbnRUaXRsZU1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9jb3JlL2RvY3VtZW50LXRpdGxlLm1vZHVsZSc7XG5pbXBvcnQgeyBFbGVtZW50SnNvblBhcnNlck1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9lbGVtZW50L2VsZW1lbnQtanNvbi1sb2FkZXIubW9kdWxlJztcbmltcG9ydCB7IEVsZW1lbnRGb3JtYXRlck1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9lbGVtZW50L2Zvcm1hdGVyLm1vZHVsZSc7XG5pbXBvcnQgeyBFbGVtZW50RGlmZk1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy9lbGVtZW50L2RpZmYubW9kdWxlJztcbmltcG9ydCB7IEVsZW1lbnRJY29uc01vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvZWxlbWVudC9pY29ucy5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2VsZW1lbnQvb3B0aW9uLXZhbHVlcy5tb2R1bGVcIjtcbmltcG9ydCB7IFN0YW1wTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9lbGVtZW50cy9zdGFtcC5tb2R1bGVcIjtcblxuLy8gQ09NUE9ORU5UU1xuaW1wb3J0IHsgQXBwQ29tcG9uZW50IH0gZnJvbSAnLi9hcHAuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRMaXN0Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9saXN0L2VsZW1lbnQtbGlzdC5jb21wb25lbnRcIjtcbmltcG9ydCB7IEluZm9CYXJDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL21hcC9pbmZvLWJhci5jb21wb25lbnRcIjtcbmltcG9ydCB7IFNlYXJjaEJhckNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGlyZWN0b3J5TWVudUNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvZGlyZWN0b3J5LW1lbnUvZGlyZWN0b3J5LW1lbnUuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBGaWx0ZXJzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9kaXJlY3RvcnktbWVudS9maWx0ZXJzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgR29Hb0NvbnRyb2xDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2dvZ28tY29udHJvbHMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL21hcC9tYXAuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBNYXBDb250cm9sc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbWFwL21hcC1jb250cm9scy5jb21wb25lbnRcIjtcbmltcG9ydCB7IERpcmVjdGlvbnNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL21hcC9kaXJlY3Rpb25zLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgQ3VzdG9tUG9wdXBDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2N1c3RvbS1wb3B1cC5jb21wb25lbnRcIjtcblxuLy8gTU9EQUxTXG5pbXBvcnQgeyBQaWNrQWRkcmVzc0NvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbHMvcGljay1hZGRyZXNzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBWb3RlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFscy92b3RlLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBSZXBvcnRDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWxzL3JlcG9ydC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRGVsZXRlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFscy9kZWxldGUuY29tcG9uZW50JztcbmltcG9ydCB7IFNlbmRFbWFpbENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbHMvc2VuZC1lbWFpbC5jb21wb25lbnQnO1xuXG4vLyBPVEhFUlNcbmltcG9ydCB7IEdvR29Db25maWcgfSBmcm9tIFwiLi9jbGFzc2VzL2NvbmZpZy9nb2dvLWNvbmZpZy5jbGFzc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuL3V0aWxzL2Nvb2tpZXNcIjtcblxuLy8gRVhQT1JUIFxuZXhwb3J0IHsgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi9tYW5hZ2Vycy9kYXRhLXR5cGUubWFuYWdlclwiO1xuZXhwb3J0IHsgQXBwU3RhdGVzIH0gZnJvbSBcIi4vbWFuYWdlcnMvc3RhdGUubWFuYWdlclwiO1xuZXhwb3J0IHsgQXBwTW9kZXMgfSBmcm9tIFwiLi9tYW5hZ2Vycy9tb2RlLm1hbmFnZXJcIjtcblxuLypcbiogQXBwIE1vZHVsZS4gTWFpbiBtb2R1bGUgb2YgdGhlIEFwcCpcbiogQXBwTW9kdWxlIGNyZWF0ZXMgYWxsIG90aGVycyBjb21wb25lbnRzIGFuZCBtb2R1bGVzXG4qL1xuZXhwb3J0IGNsYXNzIEFwcE1vZHVsZVxue1x0XHRcblx0cmVhZG9ubHkgY29uZmlnIDogR29Hb0NvbmZpZztcblx0cmVhZG9ubHkgaXNJZnJhbWUgOiBib29sZWFuID0gZmFsc2U7XG5cdHJlYWRvbmx5IGxvYWRGdWxsVGF4b25vbXkgOiBib29sZWFuID0gdHJ1ZTtcblx0cmVhZG9ubHkgcmVxdWVzdCA6IGFueSA9IHt9O1xuXG5cdG1vZGVNYW5hZ2VyID0gbmV3IE1vZGVNYW5hZ2VyKCk7XG5cdHN0YXRlTWFuYWdlciA9IG5ldyBTdGF0ZU1hbmFnZXIoKTtcblx0ZGF0YVR5cGVNYW5hZ2VyID0gbmV3IERhdGFUeXBlTWFuYWdlcigpO1xuXHRlbGVtZW50c01hbmFnZXIgOiBFbGVtZW50c01hbmFnZXI7XG5cdGhpc3RvcnlTdGF0ZU1hbmFnZXIgPSBuZXcgSGlzdG9yeVN0YXRlTWFuYWdlcigpO1xuXHRnZW9jb2RpbmdNYW5hZ2VyIDogR2VvY29kaW5nTWFuYWdlcjtcblx0bWFwTWFuYWdlciA6IE1hcE1hbmFnZXI7XG5cdFxuXHRnZW9jb2RlciA9IG5ldyBHZW9jb2Rlck1vZHVsZSgpO1xuXHRmaWx0ZXJNb2R1bGUgPSBuZXcgRmlsdGVyTW9kdWxlKCk7XG5cdGZpbHRlclJvdXRpbmdNb2R1bGUgPSBuZXcgRmlsdGVyUm91dGluZ01vZHVsZSgpO1xuXHRlbGVtZW50c01vZHVsZSA9IG5ldyBFbGVtZW50c01vZHVsZSgpO1xuXHRlbGVtZW50c0pzb25Nb2R1bGUgPSBuZXcgRWxlbWVudHNKc29uTW9kdWxlKCk7XG5cdGRpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGUgPSBuZXcgRGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZSgpO1xuXHRhamF4TW9kdWxlID0gbmV3IEFqYXhNb2R1bGUoKTtcblx0Ym91bmRzTW9kdWxlIDogQm91bmRzTW9kdWxlO1xuXHRyb3V0ZXJNb2R1bGUgPSBuZXcgUm91dGVyTW9kdWxlKCk7XG5cdHRlbXBsYXRlTW9kdWxlID0gbmV3IFRlbXBsYXRlTW9kdWxlKCk7XG5cdGxvZ2luTW9kdWxlIDogTG9naW5Nb2R1bGU7XHRcblx0aGlzdG9yeU1vZHVsZSA9IG5ldyBIaXN0b3J5TW9kdWxlKCk7XG5cdHRheG9ub215TW9kdWxlID0gbmV3IFRheG9ub215TW9kdWxlKCk7XG5cdHRheG9ub215U2tvc01vZHVsZSA9IG5ldyBUYXhvbm9teVNrb3NNb2R1bGUoKTtcblx0ZG9jdW1lbnRUaXRsZU1vZHVsZSA9IG5ldyBEb2N1bWVudFRpdGxlTW9kdWxlKCk7XG5cdGVsZW1lbnRKc29uUGFyc2VyID0gbmV3IEVsZW1lbnRKc29uUGFyc2VyTW9kdWxlKCk7XG5cdGVsZW1lbnRGb3JtYXRlck1vZHVsZSA9IG5ldyBFbGVtZW50Rm9ybWF0ZXJNb2R1bGUoKTtcblx0ZWxlbWVudERpZmZNb2R1bGUgPSBuZXcgRWxlbWVudERpZmZNb2R1bGUoKTtcblx0ZWxlbWVudEljb25zTW9kdWxlID0gbmV3IEVsZW1lbnRJY29uc01vZHVsZSgpO1xuXHRlbGVtZW50T3B0aW9uVmFsdWVzTW9kdWxlID0gbmV3IEVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUoKTtcblx0ZmF2b3JpdGVNb2R1bGUgPSBuZXcgRmF2b3JpdGVNb2R1bGUoKTtcblx0c3RhbXBNb2R1bGUgOiBTdGFtcE1vZHVsZTtcblxuXHRjb21wb25lbnQgOiBBcHBDb21wb25lbnQ7XG5cdGluZm9CYXJDb21wb25lbnQgPSBuZXcgSW5mb0JhckNvbXBvbmVudCgpO1xuXHRtYXBDb21wb25lbnQgID0gbmV3IE1hcENvbXBvbmVudCgpO1xuXHRzZWFyY2hCYXJDb21wb25lbnQgPSBuZXcgU2VhcmNoQmFyQ29tcG9uZW50KCk7XG5cdGVsZW1lbnRMaXN0Q29tcG9uZW50ID0gbmV3IEVsZW1lbnRMaXN0Q29tcG9uZW50KCk7XG5cdGRpcmVjdG9yeU1lbnVDb21wb25lbnQgPSBuZXcgRGlyZWN0b3J5TWVudUNvbXBvbmVudCgpO1xuXHRmaWx0ZXJzQ29tcG9uZW50ID0gbmV3IEZpbHRlcnNDb21wb25lbnQoKTtcdFxuXHRnb2dvQ29udHJvbENvbXBvbmVudCA9IG5ldyBHb0dvQ29udHJvbENvbXBvbmVudCgpO1x0XG5cdGRpcmVjdGlvbnNDb21wb25lbnQgPSBuZXcgRGlyZWN0aW9uc0NvbXBvbmVudCgpO1xuXHRtYXBDb250cm9sc0NvbXBvbmVudCA9IG5ldyBNYXBDb250cm9sc0NvbXBvbmVudCgpO1xuXHRjdXN0b21Qb3B1cENvbXBvbmVudCA9IG5ldyBDdXN0b21Qb3B1cENvbXBvbmVudCgpO1xuXG5cdHBpY2tBZGRyZXNzQ29tcG9uZW50IDogUGlja0FkZHJlc3NDb21wb25lbnQ7XG5cdHZvdGVDb21wb25lbnQgOiBWb3RlQ29tcG9uZW50O1xuXHRyZXBvcnRDb21wb25lbnQgOiBSZXBvcnRDb21wb25lbnQ7XG5cdGRlbGV0ZUNvbXBvbmVudCA6IERlbGV0ZUNvbXBvbmVudDtcblx0c2VuZEVtYWlsQ29tcG9uZW50IDogU2VuZEVtYWlsQ29tcG9uZW50O1xuXHRcblx0Y29uc3RydWN0b3IoJGNvbmZpZyA6IGFueSwgJGlzSWZyYW1lID0gZmFsc2UsICRsb2FkRnVsbFRheG9ub215ID0gdHJ1ZSwgJHJlcXVlc3QgPSB7fSlcblx0e1xuXHRcdHRoaXMuY29uZmlnID0gbmV3IEdvR29Db25maWcoJGNvbmZpZyk7XG5cdFx0dGhpcy5pc0lmcmFtZSA9ICRpc0lmcmFtZTtcblx0XHR0aGlzLmxvYWRGdWxsVGF4b25vbXkgPSAkbG9hZEZ1bGxUYXhvbm9teTtcblx0XHR0aGlzLnJlcXVlc3QgPSAkcmVxdWVzdDtcblx0XHRcblx0XHR0aGlzLmxvZ2luTW9kdWxlID0gbmV3IExvZ2luTW9kdWxlKHRoaXMuY29uZmlnLnNlY3VyaXR5LnVzZXJSb2xlcywgdGhpcy5jb25maWcuc2VjdXJpdHkudXNlckVtYWlsKTtcblx0ICBcdHRoaXMuYm91bmRzTW9kdWxlID0gbmV3IEJvdW5kc01vZHVsZSh0aGlzLmNvbmZpZyk7ICBcdFxuXHQgIFx0dGhpcy5zdGFtcE1vZHVsZSA9IG5ldyBTdGFtcE1vZHVsZSh0aGlzLmNvbmZpZyk7XG5cblx0XHRDb29raWVzLmNyZWF0ZUNvb2tpZSgnZmlyc3RWaXNpdCcsICdkb25lJyk7XHRcdFx0XG5cdH1cblxuXHRpbml0aWFsaXplKClcblx0e1xuXHRcdHRoaXMuY29tcG9uZW50ID0gbmV3IEFwcENvbXBvbmVudCgpO1xuXHRcdHRoaXMuZWxlbWVudHNNYW5hZ2VyID0gbmV3IEVsZW1lbnRzTWFuYWdlcigpO1xuXHRcdHRoaXMuZ2VvY29kaW5nTWFuYWdlciA9IG5ldyBHZW9jb2RpbmdNYW5hZ2VyKCk7XG5cdFx0dGhpcy5tYXBNYW5hZ2VyID0gbmV3IE1hcE1hbmFnZXIoKTtcblxuXHRcdC8vIGludGlhbGl6ZSBtb2RhbHMgY29tcG9uZW50ICh0ZW1wbGF0ZSBhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgQXBwTW9kdWxlKVxuXHRcdHRoaXMucGlja0FkZHJlc3NDb21wb25lbnQgPSBuZXcgUGlja0FkZHJlc3NDb21wb25lbnQoKTtcblx0XHR0aGlzLnZvdGVDb21wb25lbnQgPSBuZXcgVm90ZUNvbXBvbmVudCgpO1xuXHRcdHRoaXMucmVwb3J0Q29tcG9uZW50ID0gbmV3IFJlcG9ydENvbXBvbmVudCgpO1xuXHRcdHRoaXMuZGVsZXRlQ29tcG9uZW50ID0gbmV3IERlbGV0ZUNvbXBvbmVudCgpO1xuXHRcdHRoaXMuc2VuZEVtYWlsQ29tcG9uZW50ID0gbmV3IFNlbmRFbWFpbENvbXBvbmVudCgpO1x0XG5cdH1cblxuXHQvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8gR2V0dGVycyAmIFNldHRlcnMgU2hvcnRjdXRzXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdG1hcCgpIDogTC5NYXAgeyByZXR1cm4gdGhpcy5tYXBDb21wb25lbnQ/IHRoaXMubWFwQ29tcG9uZW50LmdldE1hcCgpIDogbnVsbDsgfTtcblxuXHRlbGVtZW50cygpIHsgcmV0dXJuIHRoaXMuZWxlbWVudHNNb2R1bGUuY3VyclZpc2libGVFbGVtZW50cygpOyAgfTtcblxuXHRlbGVtZW50QnlJZChpZCkgeyByZXR1cm4gdGhpcy5lbGVtZW50c01vZHVsZS5nZXRFbGVtZW50QnlJZChpZCk7ICB9O1xuXG5cdGdldCBERUFNb2R1bGUoKSB7IHJldHVybiB0aGlzLmRpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGU7IH1cblxuXHRnZXQgY3Vyck1haW5JZCgpIHsgcmV0dXJuIHRoaXMuZmlsdGVyc0NvbXBvbmVudC5jdXJyZW50QWN0aXZlTWFpbk9wdGlvbklkOyB9XG5cblx0Z2V0IHN0YXRlKCkgeyByZXR1cm4gdGhpcy5zdGF0ZU1hbmFnZXIuc3RhdGU7IH1cblxuXHRzZXRTdGF0ZSgkbmV3U3RhdGUgOiBBcHBTdGF0ZXMsICRvcHRpb25zIDogYW55ID0ge30sICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UpICB7IHRoaXMuc3RhdGVNYW5hZ2VyLnNldFN0YXRlKCRuZXdTdGF0ZSwgJG9wdGlvbnMsICRiYWNrRnJvbUhpc3RvcnkpfVxuXG5cdGdldCBtb2RlKCkgeyByZXR1cm4gdGhpcy5tb2RlTWFuYWdlci5tb2RlOyB9XG5cblx0c2V0TW9kZSgkbW9kZSA6IEFwcE1vZGVzLCAkYmFja0Zyb21IaXN0b3J5IDogYm9vbGVhbiA9IGZhbHNlLCAkdXBkYXRlVGl0bGVBbmRTdGF0ZSA9IHRydWUpIHsgdGhpcy5tb2RlTWFuYWdlci5zZXRNb2RlKCRtb2RlLCAkYmFja0Zyb21IaXN0b3J5LCAkdXBkYXRlVGl0bGVBbmRTdGF0ZSk7IH1cblxuXHRnZXQgZGF0YVR5cGUoKSB7IHJldHVybiB0aGlzLmRhdGFUeXBlTWFuYWdlci5kYXRhVHlwZTsgfVxuXG5cdHNldERhdGFUeXBlKCRkYXRhVHlwZSA6IEFwcERhdGFUeXBlLCAkYmFja0Zyb21IaXN0b3J5IDogYm9vbGVhbiA9IGZhbHNlLCAkc2VhcmNoUmVzdWx0ID0gbnVsbCkgeyB0aGlzLmRhdGFUeXBlTWFuYWdlci5zZXREYXRhVHlwZSgkZGF0YVR5cGUsICRiYWNrRnJvbUhpc3RvcnksICRzZWFyY2hSZXN1bHQpOyB9XG59IiwiZXhwb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tIFwiLi90YXhvbm9teS9jYXRlZ29yeS5jbGFzc1wiO1xuZXhwb3J0IHsgRWxlbWVudCwgRWxlbWVudFN0YXR1cywgRWxlbWVudE1vZGVyYXRpb25TdGF0ZSB9IGZyb20gXCIuL2VsZW1lbnQvZWxlbWVudC5jbGFzc1wiO1xuZXhwb3J0IHsgRWxlbWVudEJhc2UgfSBmcm9tIFwiLi9lbGVtZW50L2VsZW1lbnQtYmFzZS5jbGFzc1wiO1xuZXhwb3J0IHsgT3B0aW9uIH0gZnJvbSBcIi4vdGF4b25vbXkvb3B0aW9uLmNsYXNzXCI7XG5leHBvcnQgeyBPcHRpb25WYWx1ZSB9IGZyb20gXCIuL2VsZW1lbnQvb3B0aW9uLXZhbHVlLmNsYXNzXCI7XG5leHBvcnQgeyBDYXRlZ29yeVZhbHVlIH0gZnJvbSBcIi4vZWxlbWVudC9jYXRlZ29yeS12YWx1ZS5jbGFzc1wiO1xuZXhwb3J0IHsgVm90ZVJlcG9ydCB9IGZyb20gXCIuL2VsZW1lbnQvdm90ZS1yZXBvcnQuY2xhc3NcIjtcbmV4cG9ydCB7IENvbnRyaWJ1dGlvbiB9IGZyb20gXCIuL2VsZW1lbnQvY29udHJpYnV0aW9uLmNsYXNzXCI7XG5leHBvcnQgeyBIaXN0b3J5U3RhdGUgfSBmcm9tIFwiLi9oaXN0b3J5LXN0YXRlLmNsYXNzXCI7XG5leHBvcnQgeyBWaWV3UG9ydCB9IGZyb20gXCIuL21hcC92aWV3cG9ydC5jbGFzc1wiO1xuZXhwb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi9ldmVudC5jbGFzc1wiO1xuZXhwb3J0IHsgUG9zdGFsQWRkcmVzcyB9IGZyb20gJy4vZWxlbWVudC9wb3N0YWwtYWRkcmVzcy5jbGFzcyc7XG5leHBvcnQgeyBTdGFtcCB9IGZyb20gJy4vZWxlbWVudC9zdGFtcC5jbGFzcyc7XG5leHBvcnQgeyBFbGVtZW50VXJsIH0gZnJvbSAnLi9lbGVtZW50L2VsZW1lbnQtdXJsLmNsYXNzJztcbiIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IFRpbGVMYXllciB9IGZyb20gJy4uL21hcC90aWxlLWxheWVyLmNsYXNzJztcbmltcG9ydCB7IEdvR29GZWF0dXJlIH0gZnJvbSAnLi9nb2dvLWZlYXR1cmUuY2xhc3MnO1xuaW1wb3J0IHsgRWxlbWVudFN0YXR1cyB9IGZyb20gJy4uL2NsYXNzZXMnOyBcbmltcG9ydCB7IERFRkFVTFRfRkVBVFVSRVMgfSBmcm9tICcuL2dvZ28tZGVmYXVsdC1mZWF0dXJlJyA7XG5kZWNsYXJlIHZhciBMIDogYW55O1xuZGVjbGFyZSB2YXIgY29tbW9ubWFyaztcblxuZXhwb3J0IGNsYXNzIEdvR29Db25maWdcbntcbiAgcmVhZG9ubHkgdGV4dCA9XG4gIHtcbiAgICBlbGVtZW50OiAnw6lsw6ltZW50JyxcbiAgICBlbGVtZW50RGVmaW5pdGU6IFwibCfDqWzDqW1lbnRcIixcbiAgICBlbGVtZW50SW5kZWZpbml0ZTogXCJ1biDDqWzDqW1lbnRcIixcbiAgICBlbGVtZW50UGx1cmFsOiAnw6lsw6ltZW50cycsXG4gICAgY29sbGFib3JhdGl2ZU1vZGVyYXRpb246IGA8cD5cbiAgICAgICAgTG9yc3F1J3VuIMOpbMOpbWVudCBlc3QgYWpvdXTDqSBvdSBtb2RpZmnDqSwgbGEgbWlzZSDDoCBqb3VyIGRlcyBkb25uw6llcyBuJ2VzdCBwYXMgaW5zdGFudGFuw6llLiBMJ8OpbMOpbWVudCB2YSBkJ2Fib3JkcyBhcHBhcmHDrnRyZSBcImdyaXPDqVwiIHN1ciBsYSBjYXJ0ZSxcbiAgICAgICAgZXQgaWwgc2VyYSBhbG9ycyBwb3NzaWJsZSDDoCB0b3VzIGxlcyB1dGlsaXNhdGV1cnMgbG9ndcOpIGRlIHZvdGVyIHVuZSBldCB1bmUgc2V1bGUgZm9pcyBwb3VyIGNldCDDqWzDqW1lbnQuIFxuICAgICAgICBDZSB2b3RlIG4nZXN0IHBhcyB1bmUgb3BpbmlvbiwgbWFpcyB1biBwYXJ0YWdlIGRlIGNvbm5haXNzYW5jZS4gXG4gICAgICAgIFNpIHZvdXMgY29ubmFpc3NleiBjZXQgw6lsw6ltZW50LCBvdSBzYXZleiBxdWUgY2V0IMOpbMOpbWVudCBuJ2V4aXN0ZSBwYXMsIGFsb3JzIHZvdHJlIHNhdm9pciBub3VzIGludMOpcmVzc2UgIVxuICAgICAgPC9wPiBcbiAgICAgIDxwPlxuICAgICAgICBBdSBib3V0IGQndW4gY2VydGFpbiBub21icmUgZGUgdm90ZXMsIGwnw6lsw6ltZW50IHBvdXJyYSBhbG9ycyDDqnRyZSBhdXRvbWF0aXF1ZW1lbnQgdmFsaWTDqSBvdSByZWZ1c8OpLiBcbiAgICAgICAgRW4gY2FzIGRlIGxpdGlnZSAoZGVzIHZvdGVzIMOgIGxhIGZvaXMgcG9zaXRpZnMgZXQgbsOpZ2F0aWZzKSwgdW4gbW9kw6lyYXRldXIgaW50ZXJ2aWVuZHJhIGF1IHBsdXMgdml0ZS4gT24gY29tcHRlIHN1ciB2b3VzIVxuICAgICAgPC9wPmBcbiAgfTtcbiAgcmVhZG9ubHkgZGF0YSA9XG4gIHtcbiAgICB0YXhvbm9teTogdW5kZWZpbmVkLFxuICAgIGVsZW1lbnRzOiB1bmRlZmluZWQsXG4gICAgZWxlbWVudHNDb21wYWN0QXBpVXJsOiB1bmRlZmluZWQsXG4gICAgZWxlbWVudEJ5SWRVcmw6IHVuZGVmaW5lZCxcbiAgICByZXF1ZXN0QnlCb3VuZHM6IGZhbHNlLFxuICAgIHJldHJpZXZlRWxlbWVudHNCeUFwaTogZmFsc2UsXG4gICAgc2hvd1BlbmRpbmc6IHRydWUsXG4gIH07XG4gIHJlYWRvbmx5IG1lbnUgPVxuICB7XG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICBzbWFsbFdpZHRoU3R5bGU6IGZhbHNlLFxuICAgIHNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbjogZmFsc2UsXG4gICAgc2hvd0NoZWNrYm94Rm9yTWFpbkZpbHRlclBhbmU6IHRydWUsXG4gICAgc2hvd0NoZWNrYm94Rm9yU3ViRmlsdGVyUGFuZTogdHJ1ZSwgICAgXG4gIH07XG4gIHJlYWRvbmx5IGluZm9iYXIgPVxuICB7XG4gICAgd2lkdGg6IHVuZGVmaW5lZCxcbiAgICBhY3RpdmF0ZTogdHJ1ZSxcbiAgICBib2R5VGVtcGxhdGU6IHVuZGVmaW5lZFxuICB9O1xuICByZWFkb25seSBnZW5lcmFsID1cbiAge1xuICAgIGFjdGl2YXRlSGlzdG9yeVN0YXRlQW5kUm91dGluZzogdHJ1ZVxuICB9O1xuICByZWFkb25seSBtYXAgPVxuICB7XG4gICAgLy8gZnJhbmNlXG4gICAgZGVmYXVsdEJvdW5kcyA6IEwubGF0TG5nQm91bmRzKEwubGF0TG5nKDUyLCAxMCksIEwubGF0TG5nKDQwLCAtNSkpLFxuICAgIGRlZmF1bHRCb3VuZHNQcm92aWRlZCA6IGZhbHNlLFxuICAgIGRlZmF1bHRDZW50ZXIgOiBMLmxhdExuZyg0NiwgMCksXG4gICAgbWF4Qm91bmRzIDogTC5sYXRMbmdCb3VuZHMoTC5sYXRMbmcoLTkwLCAtMTgwKSwgTC5sYXRMbmcoOTAsIDE4MCkpLFxuICAgIHNhdmVWaWV3cG9ydEluQ29va2llcyA6IGZhbHNlLFxuICAgIHNhdmVUaWxlTGF5ZXJJbkNvb2tpZXMgOiBmYWxzZSxcbiAgICBkZWZhdWx0VGlsZUxheWVyIDogJ2NhcnRvZGInLFxuICAgIHRpbGVMYXllcnMgOiBbXG4gICAgICBuZXcgVGlsZUxheWVyKCdtYXBib3gnLCAnaHR0cHM6Ly9hcGkubWFwYm94LmNvbS9zdHlsZXMvdjEvbWFwYm94L3N0cmVldHMtdjEwL3RpbGVzLzI1Ni97en0ve3h9L3t5fT9hY2Nlc3NfdG9rZW49cGsuZXlKMUlqb2ljMlZpWVd4c2IzUWlMQ0poSWpvaVkybDRNR3RuZUdWak1ERjBhREo2Y1dOdGRXRnZjMlkzWVNKOS5uSVpyNkcydDA4ZXRNemZ0X0JISFVRJyksXG4gICAgICBuZXcgVGlsZUxheWVyKCdtYXBib3hsaWdodCcsICdodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9tYXBib3gvbGlnaHQtdjkvdGlsZXMvMjU2L3t6fS97eH0ve3l9P2FjY2Vzc190b2tlbj1way5leUoxSWpvaWMyVmlZV3hzYjNRaUxDSmhJam9pWTJsNE1HdG5lR1ZqTURGMGFESjZjV050ZFdGdmMyWTNZU0o5Lm5JWnI2RzJ0MDhldE16ZnRfQkhIVVEnKSxcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ2NhcnRvZGInLCAnaHR0cHM6Ly9jYXJ0b2RiLWJhc2VtYXBzLXtzfS5nbG9iYWwuc3NsLmZhc3RseS5uZXQvbGlnaHRfYWxsL3t6fS97eH0ve3l9LnBuZycpLCBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ2h5ZGRhJywgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5zZS9oeWRkYS9mdWxsL3t6fS97eH0ve3l9LnBuZycpLCBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ3dpa2ltZWRpYScsICdodHRwczovL21hcHMud2lraW1lZGlhLm9yZy9vc20taW50bC97en0ve3h9L3t5fS5wbmcnKSwgXG4gICAgICBuZXcgVGlsZUxheWVyKCdtb25vY2hyb21lJywgJ2h0dHBzOi8vd3d3LnRvb2xzZXJ2ZXIub3JnL3RpbGVzL2J3LW1hcG5pay97en0ve3h9L3t5fS5wbmcnKSwgXG4gICAgICBuZXcgVGlsZUxheWVyKCdseXJrICcsICdodHRwczovL3RpbGVzLmx5cmsub3JnL2xzL3t6fS97eH0ve3l9P2FwaWtleSA9OTgyYzgyY2M3NjVmNDJjZjk1MGE1N2RlMGQ4OTEwNzYnKSwgXG4gICAgICBuZXcgVGlsZUxheWVyKCdvc21mcicsICdodHRwczovL3tzfS50aWxlLm9wZW5zdHJlZXRtYXAuZnIvb3NtZnIve3p9L3t4fS97eX0ucG5nJyksXG4gICAgICBuZXcgVGlsZUxheWVyKCdzdGFtZW4nLCAnaHR0cHM6Ly9zdGFtZW4tdGlsZXMte3N9LmEuc3NsLmZhc3RseS5uZXQvdG9uZXItbGl0ZS97en0ve3h9L3t5fS5wbmcnKSxcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ3N0YW1lblRlcnJhaW4nLCAnaHR0cHM6Ly9zdGFtZW4tdGlsZXMte3N9LmEuc3NsLmZhc3RseS5uZXQvdGVycmFpbi97en0ve3h9L3t5fS5wbmcnKSwgICAgXG4gICAgICBuZXcgVGlsZUxheWVyKCdzdGFtZW5XYXRlckNvbG9yJywgJ2h0dHBzOi8vc3RhbWVuLXRpbGVzLXtzfS5hLnNzbC5mYXN0bHkubmV0L3dhdGVyY29sb3Ive3p9L3t4fS97eX0ucG5nJyksICAgIFxuICAgICAgbmV3IFRpbGVMYXllcignb3BlbnJpdmVyJywgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9vcGVucml2ZXJib2F0bWFwL3t6fS97eH0ve3l9LnBuZycpLFxuICAgICAgbmV3IFRpbGVMYXllcigndGh1bmRlcmZvcmVzdCcsICdodHRwczovL3tzfS50aWxlLnRodW5kZXJmb3Jlc3QuY29tL291dGRvb3JzL3t6fS97eH0ve3l9LnBuZycpLFxuICAgICAgbmV3IFRpbGVMYXllcignUGFzIGRlIGZvbmQnLCAnJykgXVxuICB9O1xuICByZWFkb25seSBmZWF0dXJlcyA9XG4gIHtcbiAgICAvLyBlbGVtZW50IG1lbnVcbiAgICBmYXZvcml0ZTogICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgc2hhcmU6ICAgICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIGRpcmVjdGlvbnM6ICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcblxuICAgIC8vIGVsZW1lbnQgY29udGVudFxuICAgIHNlbmRNYWlsOiAgICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBlbGVtZW50SGlzdG9yeTogbmV3IEdvR29GZWF0dXJlKCksXG5cbiAgICAvLyBnb2dvIGNvbnRyb2xzXG4gICAgbGlzdE1vZGU6IG5ldyBHb0dvRmVhdHVyZSgpLFxuXG4gICAgLy8gbWFwIGNvbnRyb2xzXG4gICAgZXhwb3J0OiAgICAgICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBsYXllcnM6ICAgICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIG1hcGRlZmF1bHR2aWV3OiAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgXG4gICAgcGVuZGluZzogICAgbmV3IEdvR29GZWF0dXJlKCksICAgIFxuICAgIHNlYXJjaFBsYWNlOiAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIHNlYXJjaEVsZW1lbnRzOiAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIHNlYXJjaEdlb2xvY2F0ZTogIG5ldyBHb0dvRmVhdHVyZSgpLFxuXG4gICAgLy8gZWxlbWVudCBpbnRlcmFjdGlvbiAvIG1vZGVyYXRpb25cbiAgICBlZGl0OiAgICAgICBuZXcgR29Hb0ZlYXR1cmUoKSwgICAgICAgICAgXG4gICAgZGVsZXRlOiAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgcmVwb3J0OiAgICAgbmV3IEdvR29GZWF0dXJlKCksICAgICAgXG4gICAgdm90ZTogICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgbW9kZXJhdGlvbjogbmV3IEdvR29GZWF0dXJlKCksXG4gICAgc3RhbXA6ICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgZGlyZWN0TW9kZXJhdGlvbjogICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuXG4gICAgLy8gb3RoZXJzXG4gICAgY3VzdG9tUG9wdXA6IG5ldyBHb0dvRmVhdHVyZSgpLFxuICB9O1xuICByZWFkb25seSBzZWN1cml0eSA9XG4gIHtcbiAgICB1c2VyUm9sZXM6IFsnYW5vbnltb3VzJ10sXG4gICAgdXNlckVtYWlsOiAnJyxcbiAgICBsb2dpbkFjdGlvbjogZnVuY3Rpb24oKSB7IGNvbnNvbGUud2FybihcIltHb0dvQ2FydG9dIFlvdSBuZWVkIGxvZ2luIHRvIGFjY2VzcyB0aGlzIGZlYXR1cmVcIik7IH0sXG5cbiAgICBoaWRlTWFpbHNCeVNob3dpbmdTZW5kTWFpbEJ1dHRvbjogdHJ1ZSxcbiAgfTtcblxuICByZWFkb25seSB0aGVtZSA9ICdkZWZhdWx0JztcbiAgLy8gc2VlIGdvZ28tc3R5bGVzIGZvciBkZWZhdXQgdmFsdWVzXG4gIHJlYWRvbmx5IGNvbG9ycyA9XG4gIHtcbiAgICBuZXV0cmFsRGFyazogdW5kZWZpbmVkICxcbiAgICBuZXV0cmFsRGFya1RyYW5zcGFyZW50OiB1bmRlZmluZWQgLFxuICAgIG5ldXRyYWxTb2Z0RGFyazogdW5kZWZpbmVkICxcbiAgICBuZXV0cmFsOiB1bmRlZmluZWQgLFxuICAgIG5ldXRyYWxMaWdodDogdW5kZWZpbmVkICxcbiAgICBzZWNvbmRhcnk6IHVuZGVmaW5lZCAsXG4gICAgcHJpbWFyeTogdW5kZWZpbmVkICxcbiAgICBiYWNrZ3JvdW5kOiB1bmRlZmluZWQgLFxuXG4gICAgdGV4dENvbG9yOiB1bmRlZmluZWQgLFxuICAgIGRpc2FibGVDb2xvcjogdW5kZWZpbmVkICxcbiAgICBsaXN0VGl0bGU6IHVuZGVmaW5lZCAsXG4gICAgbGlzdFRpdGxlQmFja0J0bjogdW5kZWZpbmVkLFxuICAgIGxpc3RUaXRsZUJhY2tncm91bmQ6IHVuZGVmaW5lZCAsXG4gICAgc2VhcmNoQmFyOiB1bmRlZmluZWQsIFxuICAgIGludGVyYWN0aXZlU2VjdGlvbjogdW5kZWZpbmVkLFxuXG4gICAgbWFpbkZvbnQ6IHVuZGVmaW5lZCAsXG4gICAgdGl0bGVGb250OiB1bmRlZmluZWQgLFxuICAgIHRheG9ub215TWFpblRpdGxlRm9udDogdW5kZWZpbmVkICwgICAgIFxuICB9XG5cbiAgcmVhZG9ubHkgaW1hZ2VzID1cbiAge1xuICAgIGJ1dHRvbk9wZW5NZW51OiB1bmRlZmluZWQsXG4gICAgbWVudVRvcEltYWdlOiB1bmRlZmluZWRcbiAgfVxuXG5cdGNvbnN0cnVjdG9yKGNvbmZpZyA6IGFueSlcblx0e1xuICAgIGlmICghY29uZmlnLmZlYXR1cmVzKSBjb25maWcuZmVhdHVyZXMgPSBERUZBVUxUX0ZFQVRVUkVTO1xuICAgIC8vIENvcHkgYWxsIHRoZSBkZWZpbmVkIG9wdGlvbnNcbiAgICAvLyBBbGwgdGhlIG9wdGlvbnMgbm9uIHNwZWNpZmllZCB3aWxsIGJlIGluaXRpYWxpemVkIHdpdGggZGVmYXVsdCB2YWx1ZXNcbiAgICB0aGlzLnJlY3Vyc2l2ZUZpbGxQcm9wZXJ0eSh0aGlzLCBjb25maWcpO1xuICAgIHRoaXMuZGF0YS5yZXRyaWV2ZUVsZW1lbnRzQnlBcGkgPSB0eXBlb2YgdGhpcy5kYXRhLmVsZW1lbnRzID09IFwic3RyaW5nXCI7XG4gICAgaWYgKGNvbmZpZy5tYXAgJiYgY29uZmlnLm1hcC5kZWZhdWx0Qm91bmRzKSB0aGlzLm1hcC5kZWZhdWx0Qm91bmRzUHJvdmlkZWQgPSB0cnVlO1xuICAgIGlmICghdGhpcy5mZWF0dXJlc1snc2VuZE1haWwnXS5hY3RpdmUpIHRoaXMuc2VjdXJpdHkuaGlkZU1haWxzQnlTaG93aW5nU2VuZE1haWxCdXR0b24gPSBmYWxzZTtcbiAgICBjb25zb2xlLmxvZyh0aGlzKTtcblx0fVxuICBcbiAgaXNGZWF0dXJlQWN0aXZhdGVkKGZlYXR1cmVOYW1lKSA6IGJvb2xlYW5cbiAge1xuICAgIGlmICghdGhpcy5mZWF0dXJlcy5oYXNPd25Qcm9wZXJ0eShmZWF0dXJlTmFtZSkpIHsgY29uc29sZS53YXJuKGBbR29Hb0NhcnRvSnNdIGZlYXR1cmUgJHtmZWF0dXJlTmFtZX0gZG9lc24ndCBleGlzdGApOyByZXR1cm4gZmFsc2U7IH1cblxuICAgIHJldHVybiB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVOYW1lXS5hY3RpdmUgJiYgKCFBcHAuaXNJZnJhbWUgfHwgdGhpcy5mZWF0dXJlc1tmZWF0dXJlTmFtZV0uaW5JZnJhbWUpO1xuICB9XG5cbiAgLy8gaXMgZmVhdHVyZSBpcyBhY3RpdmF0ZWQgYW5kIHRoZSBhY3R1YWwgdXNlciBpcyBncmFudGVkIHRvIHVzZSBpdFxuICBpc0ZlYXR1cmVBdmFpbGFibGUoZmVhdHVyZU5hbWUpIDogYm9vbGVhblxuICB7XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzLmhhc093blByb3BlcnR5KGZlYXR1cmVOYW1lKSkgeyBjb25zb2xlLndhcm4oYFtHb0dvQ2FydG9Kc10gZmVhdHVyZSAke2ZlYXR1cmVOYW1lfSBkb2Vzbid0IGV4aXN0YCk7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgbGV0IGZlYXR1cmUgPSB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVOYW1lXTtcblxuICAgIGxldCByb2xlUHJvdmlkZWQgPSB0cnVlO1xuICAgIGlmIChmZWF0dXJlLmhhc093blByb3BlcnR5KCdyb2xlcycpKVxuICAgIHtcbiAgICAgIHJvbGVQcm92aWRlZCA9IGZlYXR1cmUuaGFzUm9sZShBcHAubG9naW5Nb2R1bGUuZ2V0Um9sZXMoKSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuaXNGZWF0dXJlQWN0aXZhdGVkKGZlYXR1cmVOYW1lKSAmJiByb2xlUHJvdmlkZWQ7XG4gIH0gXG5cbiAgcHJpdmF0ZSByZWN1cnNpdmVGaWxsUHJvcGVydHkodGhhdCwgb2JqZWN0KVxuICB7XG4gICAgLy8gd2UgZG9uJ3Qgd2FudCB0byBhcHBseSByZWN1cnNpdmVseSBpbnNpZGUgb2JqZWN0cyBwcm9wZXJ0aWVzXG4gICAgbGV0IG9iamVjdHNQcm9wZXJ0aWVzID0gWydyb2xlcycsICdkZWZhdWx0Q2VudGVyJywgJ2RlZmF1bHRCb3VuZHMnLCAndGlsZUxheWVycycsICdvcHRpb25zJ107XG5cbiAgICAvLyBpZiB3ZSBwcm92aWRlIGZlYXR1cmUgY29uZmlnLCB3ZSBlbmFibGUgaXQgYXV0b21hdGljYWxseVxuICAgIGlmICh0aGF0IGluc3RhbmNlb2YgR29Hb0ZlYXR1cmUpIHRoYXQuYWN0aXZlID0gdHJ1ZTtcblxuICAgIGZvcih2YXIgcHJvcCBpbiBvYmplY3QpIFxuICAgIHtcbiAgICAgICAgaWYgKHRoYXQuaGFzT3duUHJvcGVydHkocHJvcCkpXG4gICAgICAgIHtcbiAgICAgICAgICBpZiAodHlwZW9mIHRoYXRbcHJvcF0gIT0gJ29iamVjdCcgfHwgb2JqZWN0c1Byb3BlcnRpZXMuaW5kZXhPZihwcm9wKSA+IC0xKVxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGxldCBuZXdfcHJvcDtcbiAgICAgICAgICAgIHN3aXRjaChwcm9wKSB7XG4gICAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHRCb3VuZHMnIDogbmV3X3Byb3AgPSBMLmxhdExuZ0JvdW5kcyhvYmplY3RbcHJvcF0pO2JyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdkZWZhdWx0Q2VudGVyJyA6IG5ld19wcm9wID0gTC5sYXRMbmcob2JqZWN0W3Byb3BdKTticmVhaztcbiAgICAgICAgICAgICAgY2FzZSAnYm9keVRlbXBsYXRlJzogXG4gICAgICAgICAgICAgICAgbGV0IHBhcnNlciA9IG5ldyBjb21tb25tYXJrLlBhcnNlcigpXG4gICAgICAgICAgICAgICAgbGV0IGh0bWxSZW5kZXJlciA9IG5ldyBjb21tb25tYXJrLkh0bWxSZW5kZXJlcigpO1xuICAgICAgICAgICAgICAgIG5ld19wcm9wID0gaHRtbFJlbmRlcmVyLnJlbmRlcihwYXJzZXIucGFyc2Uob2JqZWN0W3Byb3BdKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6IG5ld19wcm9wID0gb2JqZWN0W3Byb3BdO2JyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhhdFtwcm9wXSA9IG5ld19wcm9wO1xuICAgICAgICAgIH1cbiAgICAgICAgICBlbHNlICAgICAgICAgICAgXG4gICAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZUZpbGxQcm9wZXJ0eSh0aGF0W3Byb3BdLCBvYmplY3RbcHJvcF0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAge1xuICAgICAgICAgIGNvbnNvbGUud2FybihcIltHb0dvQ2FydG9dIENvbmZpZyBvcHRpb24gJ1wiICsgcHJvcCArIFwiJyBkb2VzIG5vdCBleGlzdFwiKTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxuXG59IiwiZXhwb3J0IGNvbnN0IERFRkFVTFRfRkVBVFVSRVMgPSB7XG4gIGxpc3RNb2RlOiB7fSxcbiAgc2VhcmNoUGxhY2U6IHsgfSxcbiAgc2VhcmNoR2VvbG9jYXRlOiB7fSxcbiAgZmF2b3JpdGU6IHt9LFxuICBzaGFyZToge30sXG4gIGRpcmVjdGlvbnM6IHt9LCAgICAgICAgICAgXG4gIGxheWVyczoge30sXG4gIG1hcGRlZmF1bHR2aWV3OiB7fVxufTsiLCJleHBvcnQgY2xhc3MgR29Hb0ZlYXR1cmVcbntcbiAgYWN0aXZlIDogYm9vbGVhbiA9IGZhbHNlO1xuICB1cmwgOiBzdHJpbmcgPSAnJztcbiAgcm9sZXMgOiBzdHJpbmdbXSA9IFsnYW5vbnltb3VzJywgJ2Fub255bW91c193aXRoX21haWwnLCAndXNlcicsICdhZG1pbiddO1xuICBpbklmcmFtZSA6IGJvb2xlYW4gPSB0cnVlO1xuICBvcHRpb25zIDogYW55ID0ge307XG5cbiAgaGFzUm9sZShyb2xlcyA6IHN0cmluZ1tdKSB7IFxuICAgIHJldHVybiB0aGlzLnJvbGVzLnNvbWUoIChyb2xlKSA9PiB7XG4gICAgICByZXR1cm4gcm9sZXMuaW5kZXhPZihyb2xlKSA+IC0xO1xuICAgIH0pO1xuICB9XG59IiwiaW1wb3J0IHsgQ2F0ZWdvcnksIE9wdGlvbiwgT3B0aW9uVmFsdWV9IGZyb20gXCIuLi9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBDYXRlZ29yeVZhbHVlXG57XG5cdGNhdGVnb3J5IDogQ2F0ZWdvcnk7XG5cdGNoaWxkcmVuIDogT3B0aW9uVmFsdWVbXSA9IFtdO1xuXG5cdGNvbnN0cnVjdG9yKGNhdGVnb3J5IDogQ2F0ZWdvcnkpXG5cdHtcblx0XHR0aGlzLmNhdGVnb3J5ID0gY2F0ZWdvcnk7XHRcblx0fVxuXG5cdGFkZE9wdGlvblZhbHVlKG9wdGlvblZhbHVlIDogT3B0aW9uVmFsdWUpXG5cdHtcblx0XHR0aGlzLmNoaWxkcmVuLnB1c2gob3B0aW9uVmFsdWUpO1xuXHR9XG5cblx0Z2V0IGlzTGFzdENhdGVnb3J5RGVwdGgoKSA6IGJvb2xlYW5cblx0e1xuXHRcdHJldHVybiB0aGlzLmNoaWxkcmVuLmV2ZXJ5KCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLm9wdGlvbi5zdWJjYXRlZ29yaWVzLmxlbmd0aCA9PSAwKTtcblx0fVxufSIsImV4cG9ydCBjbGFzcyBDb250cmlidXRpb24gXG57IFxuXHR0eXBlIDogbnVtYmVyO1xuXHRzdGF0dXMgOiBudW1iZXI7XG5cdHVzZXIgOiBzdHJpbmc7XG5cdHVzZXJSb2xlIDogbnVtYmVyO1xuXHRyZXNvbHZlZE1lc3NhZ2UgOiBzdHJpbmc7XG5cdHJlc29sdmVkQnkgOiBzdHJpbmc7XG5cdHVwZGF0ZWRBdCA6IHN0cmluZztcblx0Y3JlYXRlZEF0IDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKGNvbnRyaWJ1dGlvbkpzb24gOiBhbnkpXG5cdHtcblx0XHR0aGlzLnR5cGUgPSBjb250cmlidXRpb25Kc29uLnR5cGU7XG5cdFx0dGhpcy5zdGF0dXMgPSBjb250cmlidXRpb25Kc29uLnN0YXR1cztcblx0XHR0aGlzLnVzZXIgPSBjb250cmlidXRpb25Kc29uLnVzZXI7XG5cdFx0dGhpcy51c2VyUm9sZSA9IGNvbnRyaWJ1dGlvbkpzb24udXNlclJvbGU7XG5cdFx0dGhpcy5yZXNvbHZlZE1lc3NhZ2UgPSBjb250cmlidXRpb25Kc29uLnJlc29sdmVkTWVzc2FnZTtcblx0XHR0aGlzLnJlc29sdmVkQnkgPSBjb250cmlidXRpb25Kc29uLnJlc29sdmVkQnk7XG5cdFx0dGhpcy51cGRhdGVkQXQgPSBjb250cmlidXRpb25Kc29uLnVwZGF0ZWRBdDtcdFxuXHRcdHRoaXMuY3JlYXRlZEF0ID0gY29udHJpYnV0aW9uSnNvbi5jcmVhdGVkQXQ7XG5cdH1cbn0iLCJpbXBvcnQgeyBDb250cmlidXRpb24sIFZvdGVSZXBvcnQsIE9wdGlvblZhbHVlLCBQb3N0YWxBZGRyZXNzLCBPcHRpb24sIENhdGVnb3J5VmFsdWUsIEVsZW1lbnRVcmwgfSBmcm9tIFwiLi4vY2xhc3Nlc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG5leHBvcnQgZW51bSBFbGVtZW50U3RhdHVzIFxue1xuICBNb2RpZmllZEVsZW1lbnQgPSAtNSxcbiAgRGVsZXRlZCA9IC00LFxuICBDb2xsYWJvcmF0aXZlUmVmdXNlZCA9IC0zLFxuICBBZG1pblJlZnVzZWQgPSAtMiwgICAgXG4gIFBlbmRpbmdNb2RpZmljYXRpb24gPSAtMSxcbiAgUGVuZGluZ0FkZCA9IDAsXG4gIEFkbWluVmFsaWRhdGUgPSAxLFxuICBDb2xsYWJvcmF0aXZlVmFsaWRhdGUgPSAyXG59XG5cbmV4cG9ydCBlbnVtIEVsZW1lbnRNb2RlcmF0aW9uU3RhdGVcbntcbiAgR2VvbG9jRXJyb3IgPSAtMixcbiAgTm9PcHRpb25Qcm92aWRlZCA9IC0xLCAgICAgXG4gIE5vdE5lZWRlZCA9IDAsXG4gIFJlcG9ydHNTdWJtaXR0ZWQgPSAxLFxuICBWb3Rlc0NvbmZsaWN0cyA9IDIsIFxuICBQZW5kaW5nRm9yVG9vTG9uZyA9IDMsXG4gIFBvc3NpYmxlRHVwbGljYXRlID0gNCAgXG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50QmFzZVxue1xuICBpZCA6IHN0cmluZztcbiAgbmFtZSA6IHN0cmluZztcbiAgcG9zaXRpb24gOiBMLkxhdExuZztcblxuICBzdGF0dXMgOiBFbGVtZW50U3RhdHVzO1xuICBtb2RlcmF0aW9uU3RhdGUgOiBFbGVtZW50TW9kZXJhdGlvblN0YXRlO1xuICAgXG4gIGFkZHJlc3MgOiBQb3N0YWxBZGRyZXNzO1xuICBkZXNjcmlwdGlvbiA6IHN0cmluZztcbiAgbG9uZ0Rlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGxvbmdEZXNjcmlwdGlvbk1vcmU6IHN0cmluZztcbiAgb3BlbkhvdXJzIDogYW55O1xuXG4gIGNvbW1pdG1lbnQgOiBzdHJpbmc7ICBcbiAgdGVsZXBob25lIDogc3RyaW5nO1xuICB3ZWJzaXRlIDogc3RyaW5nO1xuICBlbWFpbCA6IHN0cmluZztcbiAgXG4gIGZvcm1hdGVkT3BlbkhvdXJzO1xuICBvcGVuSG91cnNNb3JlSW5mb3MgOiBhbnk7XG4gIGltYWdlcyA6IHN0cmluZ1tdO1xuICB1cmxzIDogRWxlbWVudFVybFtdO1xuICB0YWdzIDogc3RyaW5nW107XG4gIFxuICBtb2RpZmllZEVsZW1lbnQgOiBFbGVtZW50QmFzZSA9IG51bGw7XG5cbiAgb3B0aW9uc1ZhbHVlcyA6IE9wdGlvblZhbHVlW10gPSBbXTtcbiAgc3RhbXBzIDogYW55W10gPSBbXTtcblxuICBtYWluT3B0aW9uT3duZXJJZHMgOiBudW1iZXJbXSA9IFtdO1xuXG4gIHJlcG9ydHMgOiBWb3RlUmVwb3J0W107XG4gIGNvbnRyaWJ1dGlvbnMgOiBDb250cmlidXRpb25bXTtcbiAgcGVuZGluZ0NvbnRyaWJ1dGlvbiA6IENvbnRyaWJ1dGlvbjtcbiAgdm90ZXMgOiBWb3RlUmVwb3J0W107XG5cbiAgb3B0aW9uVHJlZSA6IE9wdGlvblZhbHVlOyAgXG5cbiAgc2VhcmNoU2NvcmUgOiBudW1iZXIgPSBudWxsO1xuXG4gIGlzRnVsbHlMb2FkZWQgOiBib29sZWFuID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudEpzb24gOiBhbnkpXG4gIHtcbiAgICB0aGlzLnVwZGF0ZVdpdGhKc29uKGVsZW1lbnRKc29uKTsgICAgXG4gIH1cblxuICB1cGRhdGVXaXRoSnNvbihlbGVtZW50SnNvbiA6IGFueSkgXG4gIHtcbiAgICBBcHAuZWxlbWVudEpzb25QYXJzZXIubG9hZChlbGVtZW50SnNvbiwgdGhpcyk7ICAgIFxuICB9ICBcblxuICBjcmVhdGVPcHRpb25zVHJlZSgpXG4gIHtcbiAgICBBcHAuZWxlbWVudE9wdGlvblZhbHVlc01vZHVsZS5jcmVhdGVPcHRpb25zVHJlZSh0aGlzKTtcbiAgfVxuXG4gIGdldE9wdGlvblRyZWUoKVxuICB7XG4gICAgaWYgKHRoaXMub3B0aW9uVHJlZSkgcmV0dXJuIHRoaXMub3B0aW9uVHJlZTtcbiAgICB0aGlzLmNyZWF0ZU9wdGlvbnNUcmVlKCk7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uVHJlZTtcbiAgfVxuXG4gIGdldFJvb3RDYXRlZ29yaWVzVmFsdWVzKCkgOiBDYXRlZ29yeVZhbHVlW11cbiAge1xuICAgIGxldCBvcHRpb25UcmVlID0gdGhpcy5nZXRPcHRpb25UcmVlKCk7XG4gICAgaWYgKG9wdGlvblRyZWUuY2hpbGRyZW4ubGVuZ3RoID09IDApIHJldHVybiBbXTtcbiAgICBpZiAob3B0aW9uVHJlZS5jaGlsZHJlblswXS5jYXRlZ29yeS5pc1Jvb3RDYXRlZ29yeSkgcmV0dXJuIG9wdGlvblRyZWUuY2hpbGRyZW47XG4gICAgcmV0dXJuIG9wdGlvblRyZWUuY2hpbGRyZW5bMF0uY2hpbGRyZW5bMF0uY2hpbGRyZW47XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZUJ5Q2F0ZWdvcnlJZCgkY2F0ZWdvcnlJZClcbiAge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZXMuZmlsdGVyKChvVikgPT4gb1YuY2F0ZWdvcnlPd25lci5pZCA9PSAkY2F0ZWdvcnlJZCk7XG4gIH1cblxuICBnZXRPcHRpb25WYWx1ZXNOYW1lcygpXG4gIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zVmFsdWVzLm1hcCggKG92KSA9PiBvdi5vcHRpb24ubmFtZVNob3J0KTtcbiAgfVxuXG4gIGhhdmVPcHRpb24oJG9wdGlvbiA6IE9wdGlvbilcbiAge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZXMubWFwKCAob3YpID0+IG92Lm9wdGlvbklkKS5pbmRleE9mKCRvcHRpb24uaWQpID49IDA7XG4gIH1cbn0iLCJleHBvcnQgY2xhc3MgRWxlbWVudFVybFxue1xuICB0eXBlIDogc3RyaW5nID0gJyc7XG4gIHZhbHVlOiBzdHJpbmcgPSAnJztcblxuICBjb25zdHJ1Y3RvcigkZWxlbWVudFVybEpzb24pXG4gIHtcbiAgICBpZiAodHlwZW9mICRlbGVtZW50VXJsSnNvbiA9PT0gJ3N0cmluZycpICRlbGVtZW50VXJsSnNvbiA9IHsga2V5OiAnJywgdmFsdWU6ICRlbGVtZW50VXJsSnNvbiB9O1xuICAgIHRoaXMudHlwZSA9ICRlbGVtZW50VXJsSnNvbi50eXBlIHx8ICcnO1xuICAgIHRoaXMudmFsdWUgPSAkZWxlbWVudFVybEpzb24udmFsdWUgfHwgJyc7ICBcbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50QmFzZSwgRWxlbWVudFN0YXR1cywgRWxlbWVudE1vZGVyYXRpb25TdGF0ZSB9IGZyb20gJy4vZWxlbWVudC1iYXNlLmNsYXNzJztcbmV4cG9ydCB7IEVsZW1lbnRTdGF0dXMsIEVsZW1lbnRNb2RlcmF0aW9uU3RhdGUgfSBmcm9tICcuL2VsZW1lbnQtYmFzZS5jbGFzcyc7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9tYXAvbWFya2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRWxlbWVudENvbXBvbmVudCB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2VsZW1lbnQvZWxlbWVudC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE9wdGlvblZhbHVlLCBDYXRlZ29yeVZhbHVlLCBPcHRpb24sIENhdGVnb3J5LCBDb250cmlidXRpb24sIFZvdGVSZXBvcnQsIFN0YW1wIH0gZnJvbSBcIi4uL2NsYXNzZXNcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgJCwgTWFwO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudCBleHRlbmRzIEVsZW1lbnRCYXNlXG57XHRcblx0cHJpdmF0ZSBtYXJrZXJfIDogTWFya2VyID0gbnVsbDtcblx0cHJpdmF0ZSBjb21wb25lbnRfIDogRWxlbWVudENvbXBvbmVudCA9IG51bGw7XHRcblxuXHRjb2xvck9wdGlvbklkIDogYW55O1xuXG5cdHByaXZhdGUgaXNJbml0aWFsaXplZF8gOiBib29sZWFuID0gZmFsc2U7XG5cblx0aWNvbnNUb0Rpc3BsYXkgOiBPcHRpb25WYWx1ZVtdID0gW107XHRcblxuXHRkaXN0YW5jZSA6IG51bWJlcjtcblx0ZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyIDogbnVtYmVyO1x0XG5cblx0Ly8gZm9yIGVsZW1lbnRzIG1vZHVsZSBhbGdvcml0aG1zXG5cdGlzRGlzcGxheWVkIDogYm9vbGVhbiA9IGZhbHNlO1x0XG5cblx0aXNTaG93bkFsb25lIDogYm9vbGVhbiA9IGZhbHNlO1xuXHRpc0Zhdm9yaXRlIDogYm9vbGVhbiA9IGZhbHNlO1xuXHRuZWVkVG9CZVVwZGF0ZWRXaGVuU2hvd24gOiBib29sZWFuID0gdHJ1ZTtcblxuXHRjb25zdHJ1Y3RvcihlbGVtZW50SnNvbiA6IGFueSlcbiAge1xuICAgIHN1cGVyKGVsZW1lbnRKc29uKTsgIFxuICB9XG5cbiAgdXBkYXRlV2l0aEpzb24oZWxlbWVudEpzb24pXG4gIHtcbiAgXHRzdXBlci51cGRhdGVXaXRoSnNvbihlbGVtZW50SnNvbik7XG4gIFx0dGhpcy5jcmVhdGVPcHRpb25zVHJlZSgpO1xuICAgIHRoaXMudXBkYXRlKHRydWUpO1xuICB9XHRcblxuXHRpbml0aWFsaXplKCkgXG5cdHtcdFx0XG5cdFx0QXBwLmVsZW1lbnRJY29uc01vZHVsZS51cGRhdGVJY29uc1RvRGlzcGxheSh0aGlzKTtcblxuXHRcdHRoaXMubWFya2VyXyA9IG5ldyBNYXJrZXIodGhpcy5pZCwgdGhpcy5wb3NpdGlvbik7XG5cdFx0dGhpcy5pc0luaXRpYWxpemVkXyA9IHRydWU7XHRcblx0fVxuXG5cdHVwZGF0ZSgkZm9yY2UgOiBib29sZWFuID0gZmFsc2UpXG5cdHtcblx0XHQvL2NvbnNvbGUubG9nKFwibWFya2VyIHVwZGF0ZSBuZWVkVG9CZVVwZGF0ZWRcIiwgdGhpcy5uZWVkVG9CZVVwZGF0ZWRXaGVuU2hvd24pO1xuXHRcdGlmICh0aGlzLm5lZWRUb0JlVXBkYXRlZFdoZW5TaG93biB8fCBBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0IHx8ICRmb3JjZSlcblx0XHR7XG5cdFx0XHRBcHAuZWxlbWVudEljb25zTW9kdWxlLnVwZGF0ZUljb25zVG9EaXNwbGF5KHRoaXMpO1xuXHRcdFx0bGV0IG9wdGlvblZhbHVlc1RvVXBkYXRlID0gdGhpcy5nZXRDdXJyT3B0aW9uc1ZhbHVlcygpLmZpbHRlciggKG9wdGlvblZhbHVlKSA9PiBvcHRpb25WYWx1ZS5pc0ZpbGxlZEJ5RmlsdGVycyk7XG5cdFx0XHRvcHRpb25WYWx1ZXNUb1VwZGF0ZS5wdXNoKHRoaXMuZ2V0Q3Vyck1haW5PcHRpb25WYWx1ZSgpKTtcblx0XHRcdGZvcihsZXQgb3B0aW9uVmFsdWUgb2Ygb3B0aW9uVmFsdWVzVG9VcGRhdGUpIEFwcC5lbGVtZW50T3B0aW9uVmFsdWVzTW9kdWxlLnVwZGF0ZU9wdGlvblZhbHVlQ29sb3IodGhpcywgb3B0aW9uVmFsdWUpO1xuXG5cdFx0XHR0aGlzLmNvbG9yT3B0aW9uSWQgPSB0aGlzLmljb25zVG9EaXNwbGF5Lmxlbmd0aCA+IDAgJiYgdGhpcy5nZXRJY29uc1RvRGlzcGxheSgpWzBdID8gdGhpcy5nZXRJY29uc1RvRGlzcGxheSgpWzBdLmNvbG9yT3B0aW9uSWQgOiBudWxsO1x0XG5cblx0XHRcdGlmICh0aGlzLm1hcmtlcikgdGhpcy5tYXJrZXIudXBkYXRlKCk7XG5cdFx0XHR0aGlzLm5lZWRUb0JlVXBkYXRlZFdoZW5TaG93biA9IGZhbHNlO1xuXHRcdH1cdFx0XG5cdH1cblxuXHR1cGRhdGVEaXN0YW5jZSgpXG5cdHtcblx0XHR0aGlzLmRpc3RhbmNlID0gbnVsbDtcblx0XHR0aGlzLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlciA9IEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kZWRCb3VuZHMgPyBBcHAuYm91bmRzTW9kdWxlLmV4dGVuZGVkQm91bmRzLmdldENlbnRlcigpLmRpc3RhbmNlVG8odGhpcy5wb3NpdGlvbikgLyAxMDAwIDogbnVsbDtcblxuXHRcdGlmIChBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSkgXG5cdFx0XHR0aGlzLmRpc3RhbmNlID0gQXBwLm1hcENvbXBvbmVudC5kaXN0YW5jZUZyb21Mb2NhdGlvblRvKHRoaXMucG9zaXRpb24pO1xuXHRcdGVsc2Vcblx0XHRcdHRoaXMuZGlzdGFuY2UgPSB0aGlzLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlcjtcblx0XHRcblx0XHQvLyBNYWtpbmcgdGhlIGRpc3RhbmNlIG1vcmUgcmVhbGlzdGljIG11bHRpcGx5aW5nXG5cdFx0dGhpcy5kaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2UgPyBNYXRoLnJvdW5kKDEuMip0aGlzLmRpc3RhbmNlKSA6IG51bGw7XG5cdFx0dGhpcy5kaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIgPSB0aGlzLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlciA/IE1hdGgucm91bmQoMS4yKnRoaXMuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyKSA6IG51bGw7XG5cdH1cblxuXHRnZXRQcm9wZXJ0eShwcm9wZXJ0eU5hbWUpXG5cdHtcblx0XHRyZXR1cm4gQXBwLmVsZW1lbnRGb3JtYXRlck1vZHVsZS5nZXRQcm9wZXJ0eSh0aGlzLCBwcm9wZXJ0eU5hbWUpO1xuXHR9XG5cblx0Z2V0SWNvbnNUb0Rpc3BsYXkoKSA6IE9wdGlvblZhbHVlW11cbiAge1xuICAgIGxldCByZXN1bHQgPSB0aGlzLmljb25zVG9EaXNwbGF5O1xuICAgIHJldHVybiByZXN1bHQuc29ydCggKGEsYikgPT4gYS5pc0ZpbGxlZEJ5RmlsdGVycyA/IC0xIDogMSk7XG4gIH1cblxuXHRnZXRDdXJyT3B0aW9uc1ZhbHVlcygpIDogT3B0aW9uVmFsdWVbXVxuXHR7XG5cdFx0aWYgKEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZXMuZmlsdGVyKCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLm9wdGlvbi5tYWluT3duZXJJZCA9PSBBcHAuY3Vyck1haW5JZCk7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9uc1ZhbHVlcztcblx0fVxuXG5cdGdldEN1cnJEZWVwZXN0T3B0aW9uc1ZhbHVlcygpIDogT3B0aW9uVmFsdWVbXVxuXHR7XG5cdFx0bGV0IGN1cnJPcHRpb25WYWx1ZXMgPSB0aGlzLmdldEN1cnJPcHRpb25zVmFsdWVzKCk7XG4gICAgbGV0IGlkc1RvUmVtb3ZlID0gW11cbiAgICBmb3IgKGxldCBvdiBvZiBjdXJyT3B0aW9uVmFsdWVzKSBpZHNUb1JlbW92ZSA9IGlkc1RvUmVtb3ZlLmNvbmNhdChvdi5vcHRpb25fLnBhcmVudE9wdGlvbklkcyk7XG4gICAgbGV0IGRlZXBlc3RPdiA9IGN1cnJPcHRpb25WYWx1ZXMuZmlsdGVyKCAob1YpID0+IGlkc1RvUmVtb3ZlLmluZGV4T2Yob1Yub3B0aW9uXy5pZCkgPT0gLTEpO1xuXG4gIFx0Ly8gZ3JvdXAgYnkgb3duZXJcbiAgXHRsZXQgZ3JvdXBlZEJ5UGFyZW50T3ZzID0ge31cbiAgXHRmb3IgKGxldCBvdiBvZiBkZWVwZXN0T3YpIHsgXG4gIFx0XHRsZXQgcGFyZW50TmFtZSA9IG92Lm9wdGlvbi5wYXJlbnRPcHRpb25OYW1lO1xuICBcdFx0aWYgKHBhcmVudE5hbWUgaW4gZ3JvdXBlZEJ5UGFyZW50T3ZzKSBncm91cGVkQnlQYXJlbnRPdnNbcGFyZW50TmFtZV0ucHVzaChvdik7IFxuICBcdFx0ZWxzZSBncm91cGVkQnlQYXJlbnRPdnNbcGFyZW50TmFtZV0gPSBbb3ZdOyBcbiAgXHR9XG4gIFx0bGV0IGRlZXBlc3RPcmRlcmVkT3YgPSBbXTtcbiAgXHRmb3IgKGxldCBwYXJlbnQgaW4gZ3JvdXBlZEJ5UGFyZW50T3ZzKSB7IGRlZXBlc3RPcmRlcmVkT3YgPSBkZWVwZXN0T3JkZXJlZE92LmNvbmNhdChncm91cGVkQnlQYXJlbnRPdnNbcGFyZW50XSk7IH1cbiAgXHRyZXR1cm4gZGVlcGVzdE9yZGVyZWRPdjtcblx0fVxuXG5cdHByaXZhdGUgZ3JvdXBCeShsaXN0LCBrZXlHZXR0ZXIpIHtcbiAgICBjb25zdCBtYXAgPSBuZXcgTWFwKCk7XG4gICAgbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICAgIGNvbnN0IGtleSA9IGtleUdldHRlcihpdGVtKTtcbiAgICAgICAgY29uc3QgY29sbGVjdGlvbiA9IG1hcC5nZXQoa2V5KTtcbiAgICAgICAgaWYgKCFjb2xsZWN0aW9uKSB7XG4gICAgICAgICAgICBtYXAuc2V0KGtleSwgW2l0ZW1dKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbGxlY3Rpb24ucHVzaChpdGVtKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBtYXA7XG59XG5cblx0Z2V0Q3Vyck1haW5PcHRpb25WYWx1ZSgpIDogT3B0aW9uVmFsdWVcblx0e1xuXHRcdHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZXMuZmlsdGVyKCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLm9wdGlvbi5pZCA9PSBBcHAuY3Vyck1haW5JZCkuc2hpZnQoKTtcblx0fVxuXG5cdGdldENhdGVnb3JpZXNJZHMoKSA6IG51bWJlcltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDdXJyT3B0aW9uc1ZhbHVlcygpLm1hcCggKG9wdGlvblZhbHVlKSA9PiBvcHRpb25WYWx1ZS5jYXRlZ29yeU93bmVyLmlkKS5maWx0ZXIoKHZhbHVlLCBpbmRleCwgc2VsZikgPT4gc2VsZi5pbmRleE9mKHZhbHVlKSA9PT0gaW5kZXgpO1xuXHR9XG5cblx0Z2V0T3B0aW9uc0lkc0luQ2F0ZWdvcmllSWQoY2F0ZWdvcnlJZCkgOiBudW1iZXJbXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0Q3Vyck9wdGlvbnNWYWx1ZXMoKS5maWx0ZXIoIChvcHRpb25WYWx1ZSkgPT4gb3B0aW9uVmFsdWUub3B0aW9uLm93bmVySWQgPT0gY2F0ZWdvcnlJZCkubWFwKCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLm9wdGlvbklkKTtcblx0fVx0XG5cblx0ZGlzcGxheVN0YW1wcygpIDogU3RhbXBbXVxuXHR7XG5cdFx0cmV0dXJuIEFwcC5zdGFtcE1vZHVsZS5nZXRBbGxvd2VkU3RhbXBGb3JFbGVtZW50KHRoaXMpO1xuXHR9XG5cblx0aXNQZW5kaW5nKCkgeyByZXR1cm4gdGhpcy5zdGF0dXMgPT0gRWxlbWVudFN0YXR1cy5QZW5kaW5nQWRkIHx8IHRoaXMuc3RhdHVzID09IEVsZW1lbnRTdGF0dXMuUGVuZGluZ01vZGlmaWNhdGlvbjsgfVxuXHRpc0RlbGV0ZWQoKSB7IHJldHVybiB0aGlzLnN0YXR1cyA8PSBFbGVtZW50U3RhdHVzLkFkbWluUmVmdXNlZCB9XG5cdG5lZWRzTW9kZXJhdGlvbigpIHsgcmV0dXJuIHRoaXMubW9kZXJhdGlvblN0YXRlICE9IEVsZW1lbnRNb2RlcmF0aW9uU3RhdGUuTm90TmVlZGVkIH1cdFxuXG5cdGdldCBtYXJrZXIoKSA6IE1hcmtlciB7IHJldHVybiB0aGlzLm1hcmtlcl87IH1cblx0Z2V0IGNvbXBvbmVudCgpIHsgcmV0dXJuIHRoaXMuY29tcG9uZW50XyB8fCAodGhpcy5jb21wb25lbnRfID0gbmV3IEVsZW1lbnRDb21wb25lbnQodGhpcykpOyB9XHRcblx0Z2V0IGlzSW5pdGlhbGl6ZWQoKSB7IHJldHVybiB0aGlzLmlzSW5pdGlhbGl6ZWRfOyB9XG5cbn1cblxuIiwiaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IENhdGVnb3J5LCBPcHRpb24sIENhdGVnb3J5VmFsdWV9IGZyb20gXCIuLi9jbGFzc2VzXCI7XG5pbXBvcnQgeyBwYXJzZVVyaUlkLCBzbHVnaWZ5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmV4cG9ydCBjbGFzcyBPcHRpb25WYWx1ZVxue1xuXHRvcHRpb25JZCA6IGFueTtcblx0aW5kZXggOiBudW1iZXI7XG5cdGRlc2NyaXB0aW9uIDogc3RyaW5nO1xuXHRkaWZmIDogc3RyaW5nOyAvLyB1c2UgdG8gY29tcGFyZSB3aXRoIG1vZGlmaWVkIG9wdGlvblZhbHVlLiBWYWx1ZXMgY25hIGJlIFwicmVtb3ZlZFwiLCBcImFkZGVkXCIsIG9yIFwiZXF1YWxzXCJcblx0b3B0aW9uXyA6IE9wdGlvbiA9IG51bGw7XG5cdGlzRmlsbGVkQnlGaWx0ZXJzIDogYm9vbGVhbiA9IHRydWU7XG5cblx0Y2hpbGRyZW4gOiBDYXRlZ29yeVZhbHVlW10gPSBbXTtcblx0Y29sb3JPcHRpb25JZCA6IG51bWJlciA9IG51bGw7XG5cblx0Y29uc3RydWN0b3IoJG9wdGlvblZhbHVlSnNvbiwgJGtleSA9IDApXG5cdHtcblx0XHQvLyBjb25zb2xlLmxvZyhcInZhbHVlIGpzb25cIiwgJG9wdGlvblZhbHVlSnNvbik7XG5cdFx0Ly8gaW4gY2FzZSBvZiBjb21wYWN0IGpzb24sIHRoZSBvcHRpb25zIHZhbHVlcyBhcmUgc3RvcmVkIGluIHNpbXBsZSBhcnJheVxuXHRcdGlmICh0eXBlb2YgJG9wdGlvblZhbHVlSnNvbiA9PSAnbnVtYmVyJyB8fCB0eXBlb2YgJG9wdGlvblZhbHVlSnNvbiA9PSAnc3RyaW5nJylcblx0XHR7XG5cdFx0XHR0aGlzLm9wdGlvbklkID0gJG9wdGlvblZhbHVlSnNvbi50b1N0cmluZygpO1xuXHRcdFx0dGhpcy5pbmRleCA9ICRrZXk7XG5cdFx0XHR0aGlzLmRlc2NyaXB0aW9uID0gJyc7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKEFycmF5LmlzQXJyYXkoJG9wdGlvblZhbHVlSnNvbikgJiYgJG9wdGlvblZhbHVlSnNvbi5sZW5ndGggPj0gMilcblx0XHR7XG5cdFx0XHR0aGlzLm9wdGlvbklkID0gJG9wdGlvblZhbHVlSnNvblswXTtcblx0XHRcdHRoaXMuaW5kZXggPSAka2V5O1xuXHRcdFx0dGhpcy5kZXNjcmlwdGlvbiA9ICRvcHRpb25WYWx1ZUpzb24ubGVuZ3RoID09IDMgPyAgJG9wdGlvblZhbHVlSnNvblsyXSA6ICcnO1xuXHRcdH1cblx0XHRlbHNlIGlmICh0eXBlb2YgJG9wdGlvblZhbHVlSnNvbiA9PSAnb2JqZWN0Jylcblx0XHR7XG5cdFx0XHRpZiAoJG9wdGlvblZhbHVlSnNvbltcIkBpZFwiXSkge1xuXHRcdFx0XHR0aGlzLm9wdGlvbklkID0gcGFyc2VVcmlJZCgkb3B0aW9uVmFsdWVKc29uW1wiQGlkXCJdKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHRoaXMub3B0aW9uSWQgPSAkb3B0aW9uVmFsdWVKc29uLmNhdGVnb3J5SWQgfHwgJG9wdGlvblZhbHVlSnNvbi5vcHRpb25JZDtcblx0XHRcdFx0dGhpcy5pbmRleCA9ICRrZXk7XG5cdFx0XHRcdHRoaXMuZGVzY3JpcHRpb24gPSAkb3B0aW9uVmFsdWVKc29uLmRlc2NyaXB0aW9uIHx8ICcnO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cdFxuXHRcdHRoaXMuZGlmZiA9ICRvcHRpb25WYWx1ZUpzb24uZGlmZjtcdFxuXHR9XG5cblx0Z2V0IG9wdGlvbigpIDogT3B0aW9uXG5cdHtcblx0XHRpZiAodGhpcy5vcHRpb25fKSByZXR1cm4gdGhpcy5vcHRpb25fO1xuXHRcdHJldHVybiB0aGlzLm9wdGlvbl8gPSBBcHAudGF4b25vbXlNb2R1bGUuZ2V0T3B0aW9uQnlJZCh0aGlzLm9wdGlvbklkKTtcblx0fVxuXG5cdHNldFJlY3Vyc2l2ZWx5RmlsbGVkQnlGaWx0ZXJzKGJvb2wgOiBib29sZWFuKVxuXHR7XG5cdFx0dGhpcy5pc0ZpbGxlZEJ5RmlsdGVycyA9IGJvb2w7XG5cdFx0Zm9yKGxldCBjYXRlZ29yeVZhbHVlIG9mIHRoaXMuY2hpbGRyZW4pXG5cdFx0e1xuXHRcdFx0Zm9yIChsZXQgc3Vib3B0aW9uVmFsdWUgb2YgY2F0ZWdvcnlWYWx1ZS5jaGlsZHJlbilcblx0XHRcdHtcblx0XHRcdFx0c3Vib3B0aW9uVmFsdWUuc2V0UmVjdXJzaXZlbHlGaWxsZWRCeUZpbHRlcnMoYm9vbCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0Z2V0IGNhdGVnb3J5T3duZXIoKSA6IENhdGVnb3J5XG5cdHtcblx0XHRyZXR1cm4gPENhdGVnb3J5PiB0aGlzLm9wdGlvbi5nZXRPd25lcigpO1xuXHR9XG5cblx0YWRkQ2F0ZWdvcnlWYWx1ZShjYXRlZ29yeVZhbHVlIDogQ2F0ZWdvcnlWYWx1ZSlcblx0e1xuXHRcdHRoaXMuY2hpbGRyZW4ucHVzaChjYXRlZ29yeVZhbHVlKTtcblx0fVxufVxuXG4iLCJpbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5cbmV4cG9ydCBjbGFzcyBQb3N0YWxBZGRyZXNzXG57XG4gIHN0cmVldEFkZHJlc3MgOiBzdHJpbmcgPSAnJztcbiAgYWRkcmVzc0xvY2FsaXR5OiBzdHJpbmcgPSAnJztcbiAgcG9zdGFsQ29kZTogc3RyaW5nID0gJyc7XG4gIGZvcm1hdGVkQWRkcmVzcyA6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCRhZGRyZXNzSnNvbilcbiAge1xuICAgIGlmICh0eXBlb2YgJGFkZHJlc3NKc29uID09IFwic3RyaW5nXCIpXG4gICAgICB0aGlzLmZvcm1hdGVkQWRkcmVzcyA9ICRhZGRyZXNzSnNvblxuICAgIGVsc2UgaWYgKCRhZGRyZXNzSnNvbilcbiAgICB7XG4gICAgICB0aGlzLnN0cmVldEFkZHJlc3MgPSBjYXBpdGFsaXplKCRhZGRyZXNzSnNvbi5zdHJlZXRBZGRyZXNzIHx8ICcnKTtcbiAgICAgIHRoaXMuYWRkcmVzc0xvY2FsaXR5ID0gY2FwaXRhbGl6ZSgkYWRkcmVzc0pzb24uYWRkcmVzc0xvY2FsaXR5IHx8ICcnKTtcbiAgICAgIHRoaXMucG9zdGFsQ29kZSA9ICRhZGRyZXNzSnNvbi5wb3N0YWxDb2RlO1xuICAgICAgdGhpcy5mb3JtYXRlZEFkZHJlc3MgPSAkYWRkcmVzc0pzb24uY3VzdG9tRm9ybWF0ZWRBZGRyZXNzIHx8ICcnO1xuICAgIH0gICAgICBcbiAgfVxuXG4gIGdldEZvcm1hdGVkQWRkcmVzcygpXG4gIHtcbiAgICBpZiAodGhpcy5mb3JtYXRlZEFkZHJlc3MpIHJldHVybiB0aGlzLmZvcm1hdGVkQWRkcmVzcztcbiAgICBsZXQgcmVzdWx0ID0gXCJcIjtcbiAgICBpZiAodGhpcy5zdHJlZXRBZGRyZXNzKSByZXN1bHQgKz0gdGhpcy5zdHJlZXRBZGRyZXNzICsgJywgJztcbiAgICBpZiAodGhpcy5wb3N0YWxDb2RlKSByZXN1bHQgKz0gdGhpcy5wb3N0YWxDb2RlICsgJyAnO1xuICAgIGlmICh0aGlzLmFkZHJlc3NMb2NhbGl0eSkgcmVzdWx0ICs9IHRoaXMuYWRkcmVzc0xvY2FsaXR5O1xuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cbn0iLCJleHBvcnQgY2xhc3MgU3RhbXBcbntcbiAgaWQgOiBhbnk7XG4gIG5hbWUgOiBzdHJpbmcgPSAnJztcbiAgaWNvbiA6IHN0cmluZyA9ICcnO1xuICBlbGVtZW50SWRzIDogYW55W10gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigkanNvbilcbiAge1xuICAgIHRoaXMuaWQgPSAkanNvbi5pZCB8fCAkanNvbi5uYW1lO1xuICAgIHRoaXMubmFtZSA9ICRqc29uLm5hbWU7XG4gICAgdGhpcy5pY29uID0gJGpzb24uaWNvbjsgIFxuICAgIHRoaXMuZWxlbWVudElkcyA9ICRqc29uLmVsZW1lbnRJZHM7ICBcbiAgfVxufSIsImV4cG9ydCBjbGFzcyBWb3RlUmVwb3J0IFxueyBcblx0dHlwZSA6IG51bWJlcjtcblx0dmFsdWUgOiBudW1iZXI7XG5cdGNvbW1lbnQgOiBzdHJpbmc7XG5cdHVzZXJFbWFpbCA6IHN0cmluZztcblx0dXNlclJvbGUgOiBudW1iZXI7XG5cdGNyZWF0ZWRBdCA6IHN0cmluZztcblxuXHRjb25zdHJ1Y3Rvcih2b3RlUmVwb3J0SnNvbiA6IGFueSlcblx0e1xuXHRcdHRoaXMudHlwZSA9IHZvdGVSZXBvcnRKc29uLnR5cGU7XG5cdFx0dGhpcy52YWx1ZSA9IHZvdGVSZXBvcnRKc29uLnZhbHVlO1xuXHRcdHRoaXMuY29tbWVudCA9IHZvdGVSZXBvcnRKc29uLmNvbW1lbnQ7XG5cdFx0dGhpcy51c2VyRW1haWwgPSB2b3RlUmVwb3J0SnNvbi51c2VyRW1haWw7XG5cdFx0dGhpcy51c2VyUm9sZSA9IHZvdGVSZXBvcnRKc29uLnVzZXJSb2xlO1xuXHRcdHRoaXMuY3JlYXRlZEF0ID0gdm90ZVJlcG9ydEpzb24uY3JlYXRlZEF0O1x0XG5cdH1cbn0iLCJleHBvcnQgaW50ZXJmYWNlIElFdmVudDxUPiB7XG4gICAgZG8oaGFuZGxlcjogeyAoZGF0YT86IFQpOiB2b2lkIH0pIDogdm9pZDtcbiAgICBvZmYoaGFuZGxlcjogeyAoZGF0YT86IFQpOiB2b2lkIH0pIDogdm9pZDtcbn1cblxuZXhwb3J0IGNsYXNzIEV2ZW50PFQ+IGltcGxlbWVudHMgSUV2ZW50PFQ+IHtcbiAgICBwcml2YXRlIGhhbmRsZXJzOiB7IChkYXRhPzogVCk6IHZvaWQ7IH1bXSA9IFtdO1xuXG4gICAgcHVibGljIGRvKGhhbmRsZXI6IHsgKGRhdGE/OiBUKTogdm9pZCB9KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMucHVzaChoYW5kbGVyKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb2ZmKGhhbmRsZXI6IHsgKGRhdGE/OiBUKTogdm9pZCB9KSB7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMgPSB0aGlzLmhhbmRsZXJzLmZpbHRlcihoID0+IGggIT09IGhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBlbWl0KGRhdGE/OiBUKSB7XG4gICAgICAgIHRoaXMuaGFuZGxlcnMuc2xpY2UoMCkuZm9yRWFjaChoID0+IGgoZGF0YSkpO1xuICAgIH1cbn0iLCJpbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwTW9kZXMsIEFwcERhdGFUeXBlIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IFZpZXdQb3J0IH0gZnJvbSBcIi4vbWFwL3ZpZXdwb3J0LmNsYXNzXCI7XG5kZWNsYXJlIHZhciBMIDogYW55O1xuXG5leHBvcnQgY2xhc3MgSGlzdG9yeVN0YXRlXG57XG4gIG1vZGU6IEFwcE1vZGVzO1xuICBzdGF0ZSA6IEFwcFN0YXRlcztcbiAgZGF0YVR5cGUgOiBBcHBEYXRhVHlwZTtcbiAgYWRkcmVzcyA6IHN0cmluZztcbiAgdmlld3BvcnQgOiBWaWV3UG9ydDtcbiAgaWQgOiBhbnk7XG4gIHRleHQgOiBzdHJpbmc7XG4gIGZpbHRlcnMgOiBzdHJpbmc7XG5cbiAgcGFyc2UoJGhpc3RvcnlTdGF0ZSA6IGFueSkgOiBIaXN0b3J5U3RhdGVcbiAge1xuICAgIHRoaXMubW9kZSA9ICRoaXN0b3J5U3RhdGUubW9kZSA9PSAnTWFwJyA/IEFwcE1vZGVzLk1hcCA6IEFwcE1vZGVzLkxpc3Q7XG4gICAgdGhpcy5zdGF0ZSA9IHBhcnNlSW50KEFwcFN0YXRlc1skaGlzdG9yeVN0YXRlLnN0YXRlXSk7XG4gICAgdGhpcy5kYXRhVHlwZSA9IHBhcnNlSW50KEFwcERhdGFUeXBlWyRoaXN0b3J5U3RhdGUuZGF0YVR5cGVdKTtcbiAgICB0aGlzLmFkZHJlc3MgPSAkaGlzdG9yeVN0YXRlLmFkZHJlc3M7XG4gICAgdGhpcy52aWV3cG9ydCA9IHR5cGVvZiAkaGlzdG9yeVN0YXRlLnZpZXdwb3J0ID09PSAnc3RyaW5nJyA/IG5ldyBWaWV3UG9ydCgpLmZyb21TdHJpbmcoJGhpc3RvcnlTdGF0ZS52aWV3cG9ydCkgOiAkaGlzdG9yeVN0YXRlLnZpZXdwb3J0O1xuICAgIHRoaXMuaWQgPSAkaGlzdG9yeVN0YXRlLmlkO1xuICAgIHRoaXMudGV4dCA9ICRoaXN0b3J5U3RhdGUudGV4dDtcbiAgICB0aGlzLmZpbHRlcnMgPSAkaGlzdG9yeVN0YXRlLmZpbHRlcnM7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cbn0iLCJleHBvcnQgY2xhc3MgVGlsZUxheWVyXG57XG4gIG5hbWUgOiBzdHJpbmcgPSAnJztcbiAgdXJsIDogc3RyaW5nID0gJyc7XG4gIGF0dHJpYnV0aW9uIDogc3RyaW5nO1xuXG4gIGNvbnN0cnVjdG9yKG5hbWUgOiBzdHJpbmcsIHVybCA6IHN0cmluZywgYXR0cmlidXRpb24/IDogc3RyaW5nKSB7IFxuICAgIHRoaXMubmFtZSA9IG5hbWU7IFxuICAgIHRoaXMudXJsID0gdXJsOyBcbiAgICB0aGlzLmF0dHJpYnV0aW9uID0gYXR0cmlidXRpb24gfHwgJ8KpIDxhIGhyZWY9XCJodHRwczovL3d3dy5vcGVuc3RyZWV0bWFwLm9yZy9jb3B5cmlnaHRcIj5PcGVuU3RyZWV0TWFwPC9hPidcbiAgfVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyIEw7XG5cbmV4cG9ydCBjbGFzcyBWaWV3UG9ydFxue1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgbGF0IDogbnVtYmVyID0gMCwgXG4gICAgICAgICAgcHVibGljIGxuZyA6bnVtYmVyID0gMCwgXG4gICAgICAgICAgcHVibGljIHpvb20gOiBudW1iZXIgPSAwKVxuICB7XG4gICAgdGhpcy5sYXQgPSBsYXQgfHwgMDtcbiAgICB0aGlzLmxuZyA9IGxuZyB8fCAwO1xuICAgIHRoaXMuem9vbSA9IHpvb20gfHwgMDtcbiAgfVxuXG4gIHRvU3RyaW5nKClcbiAge1xuICAgIGxldCBkaWdpdHMgPSB0aGlzLnpvb20gPiAxNCA/IDQgOiB0aGlzLnpvb20gPiAxMCA/IDMgOiAyO1xuICAgIHJldHVybiBgQCR7dGhpcy5sYXQudG9GaXhlZChkaWdpdHMpfSwke3RoaXMubG5nLnRvRml4ZWQoZGlnaXRzKX0sJHt0aGlzLnpvb219emA7XG4gIH1cblxuICBmcm9tU3RyaW5nKHN0cmluZyA6IHN0cmluZylcbiAge1xuICAgIGlmICghc3RyaW5nKSByZXR1cm4gbnVsbDtcblxuICAgIGxldCBkZWNvZGUgPSBzdHJpbmcuc3BsaXQoJ0AnKS5wb3AoKS5zcGxpdCgnLCcpO1xuICAgIGlmIChkZWNvZGUubGVuZ3RoICE9IDMpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiVmlld1BvcnQgZnJvbVN0cmluZyBlcnJldXJcIiwgc3RyaW5nKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgICB0aGlzLmxhdCA9IHBhcnNlRmxvYXQoZGVjb2RlWzBdKSAlIDM2MDtcbiAgICB0aGlzLmxuZyA9IHBhcnNlRmxvYXQoZGVjb2RlWzFdKSAlIDM2MDtcbiAgICB0aGlzLnpvb20gPSBwYXJzZUludChkZWNvZGVbMl0uc2xpY2UoMCwtMSkpO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcIlZpZXdQb3J0IGZyb21TdHJpbmcgRG9uZVwiLCB0aGlzKTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgdG9Mb2NhdGlvbigpXG4gIHtcbiAgICByZXR1cm4gTC5sYXRMbmcodGhpcy5sYXQsIHRoaXMubG5nKTtcbiAgfVxufSIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwiLi9vcHRpb24uY2xhc3NcIjtcbmltcG9ydCB7IENhdGVnb3J5T3B0aW9uVHJlZU5vZGUsIENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlIH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZGlyZWN0b3J5LW1lbnUvY2F0ZWdvcnktb3B0aW9uLXRyZWUtbm9kZS5jbGFzc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJCA6IGFueTtcblxuZXhwb3J0IGNsYXNzIENhdGVnb3J5IGV4dGVuZHMgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVxueyBcblx0ZW5hYmxlRGVzY3JpcHRpb24gOiBib29sZWFuO1xuXHRkaXNwbGF5U3Vib3B0aW9uc0lubGluZSA6IGJvb2xlYW47XG5cdHVzZUZvckZpbHRlcmluZyA6IGJvb2xlYW47IC8vIGlmIHRydWUsIHRoZSBlbGVtZW50IHdpbGwgYmUgaGlkZGVuIHdoZW4gbm90IGZ1bGxmaWxsaW5nIGF0IGxlYXN0IG9uZSBjaGVja2VkIG9wdGlvbiBvZiB0aGlzIGNhdGVnb3J5XG5cdGlzTWFuZGF0b3J5IDogYm9vbGVhbjsgXHQvLyBpZiB0aGUgZWxlbWVudCBoYXZlIG5vIG9wdGlvbiBpbiB0aGlzIGNhdGVnb3J5LCBpdCB3aWxsIG5vdCBiZSBkaXNwbGF5ZWRcblx0aXNSb290Q2F0ZWdvcnk6IGJvb2xlYW47XG5cblx0Y29uc3RydWN0b3IoJGNhdGVnb3J5SnNvbiA6IGFueSlcblx0e1xuXHRcdHN1cGVyKENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlLkNhdGVnb3J5LCAnI2NhdGVnb3J5LScsICcjc3ViY2F0ZWdvcmllLWNoZWNrYm94LScsICcub3B0aW9ucy13cmFwcGVyJyk7XG5cblx0XHR0aGlzLmlkID0gJGNhdGVnb3J5SnNvbi5pZDtcblx0XHR0aGlzLm5hbWUgPSBjYXBpdGFsaXplKCRjYXRlZ29yeUpzb24ubmFtZSB8fCBcIlwiKTtcblx0XHR0aGlzLm5hbWVTaG9ydCA9IGNhcGl0YWxpemUoJGNhdGVnb3J5SnNvbi5uYW1lU2hvcnQgfHwgdGhpcy5uYW1lKTtcblxuXHRcdHRoaXMuaXNSb290Q2F0ZWdvcnkgPSAkY2F0ZWdvcnlKc29uLmlzUm9vdENhdGVnb3J5IHx8IGZhbHNlO1xuXG5cdFx0dGhpcy5kaXNwbGF5SW5NZW51ID0gKCRjYXRlZ29yeUpzb24uZGlzcGxheUluTWVudSB8fCB0aGlzLmlzUm9vdENhdGVnb3J5KSAmJiB0aGlzLm5hbWUgIT0gXCJcIjtcblx0XHR0aGlzLmRpc3BsYXlJbkluZm9CYXIgPSAoJGNhdGVnb3J5SnNvbi5kaXNwbGF5SW5JbmZvQmFyIHx8IHRoaXMuaXNSb290Q2F0ZWdvcnkpICYmIHRoaXMubmFtZSAhPSBcIlwiO1xuXG5cdFx0dGhpcy5zaG93RXhwYW5kZWQgPSAkY2F0ZWdvcnlKc29uLnNob3dFeHBhbmRlZCAhPT0gZmFsc2U7XG5cdFx0dGhpcy51bmV4cGFuZGFibGUgPSAkY2F0ZWdvcnlKc29uLnVuZXhwYW5kYWJsZSB8fCBmYWxzZTtcblx0XHRcblx0XHR0aGlzLmVuYWJsZURlc2NyaXB0aW9uID0gJGNhdGVnb3J5SnNvbi5lbmFibGVEZXNjcmlwdGlvbiB8fCBmYWxzZTtcdFxuXHRcdHRoaXMuZGlzcGxheVN1Ym9wdGlvbnNJbmxpbmUgPSAkY2F0ZWdvcnlKc29uLmRpc3BsYXlTdWJvcHRpb25zSW5saW5lIHx8IGZhbHNlO1x0XG5cdFx0dGhpcy5pc01hbmRhdG9yeSA9ICRjYXRlZ29yeUpzb24uaXNNYW5kYXRvcnkgIT09IGZhbHNlO1xuXHRcdHRoaXMudXNlRm9yRmlsdGVyaW5nID0gJGNhdGVnb3J5SnNvbi51c2VGb3JGaWx0ZXJpbmcgIT09IGZhbHNlO1xuXHRcdHRoaXMubWFpbk93bmVySWQgPSAkY2F0ZWdvcnlKc29uLm1haW5Pd25lcklkIHx8IG51bGw7XG5cdH1cblxuXHRhZGRPcHRpb24oJG9wdGlvbiA6IE9wdGlvbikgeyB0aGlzLmNoaWxkcmVuLnB1c2goJG9wdGlvbik7IH1cblxuXHRnZXQgb3B0aW9ucygpIDogT3B0aW9uW10geyByZXR1cm4gPE9wdGlvbltdPiB0aGlzLmNoaWxkcmVuOyB9XG5cblx0Z2V0IGRpc2FibGVkT3B0aW9ucygpIDogT3B0aW9uW10geyByZXR1cm4gPE9wdGlvbltdPiB0aGlzLmRpc2FibGVkQ2hpbGRyZW4oKTsgfVxuXHRnZXQgbm9uRGlzYWJsZWRPcHRpb25zKCkgOiBPcHRpb25bXSB7IHJldHVybiA8T3B0aW9uW10+IHRoaXMubm9uRGlzYWJsZWRDaGlsZHJlbigpOyB9XG5cdGdldCBjaGVja2VkT3B0aW9ucygpIDogT3B0aW9uW10geyByZXR1cm4gPE9wdGlvbltdPiB0aGlzLmNoZWNrZWRDaGlsZHJlbigpOyB9XG59XG4iLCJpbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnkgfSBmcm9tIFwiLi9jYXRlZ29yeS5jbGFzc1wiO1xuaW1wb3J0IHsgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSwgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9kaXJlY3RvcnktbWVudS9jYXRlZ29yeS1vcHRpb24tdHJlZS1ub2RlLmNsYXNzXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHNsdWdpZnkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmRlY2xhcmUgbGV0ICQgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBPcHRpb24gZXh0ZW5kcyBDYXRlZ29yeU9wdGlvblRyZWVOb2RlXG57IFxuXHRjb2xvciA6IHN0cmluZztcblx0c29mdENvbG9yIDogc3RyaW5nO1xuXHRpY29uIDogc3RyaW5nO1xuXHR1c2VJY29uRm9yTWFya2VyOiBib29sZWFuO1xuXHR1c2VDb2xvckZvck1hcmtlciA6IGJvb2xlYW47XG4gICB0ZXh0SGVscGVyIDogc3RyaW5nO1xuXG4gICBkaXNwbGF5Q2hpbGRyZW5Jbk1lbnUgOiBib29sZWFuO1xuXHRkaXNwbGF5Q2hpbGRyZW5JbkluZm9CYXIgOiBib29sZWFuO1xuICBcbiAgIGludElkIDogbnVtYmVyOyAvLyBBbmQgSWQgYXMgbnVtYmVyLCB1c2VkIGZvciBjcmVhdGluZyB0aGUgb3B0aW9uIHVybFxuXG5cdHBhcmVudE9wdGlvbklkcyA6IG51bWJlcltdID0gW107XG5cblx0Y29uc3RydWN0b3IoJG9wdGlvbkpzb24gOiBhbnkpXG5cdHtcblx0XHRzdXBlcihDYXRlZ29yeU9wdGlvblRyZWVOb2RlVHlwZS5PcHRpb24sICcjb3B0aW9uLScsICcjb3B0aW9uLWNoZWNrYm94LScsICcuc3ViY2F0ZWdvcmllcy13cmFwcGVyJyk7XG5cblx0XHR0aGlzLm5hbWUgPSBjYXBpdGFsaXplKCRvcHRpb25Kc29uLm5hbWUpO1xuXHRcdHRoaXMubmFtZVNob3J0ID0gY2FwaXRhbGl6ZSgkb3B0aW9uSnNvbi5uYW1lU2hvcnQgfHwgdGhpcy5uYW1lKTtcblx0XHR0aGlzLmlkID0gKCdpZCcgaW4gJG9wdGlvbkpzb24pID8gJycgKyAkb3B0aW9uSnNvbi5pZCA6IHNsdWdpZnkodGhpcy5uYW1lU2hvcnQpO1xuXHRcdHRoaXMuaW50SWQgPSB0eXBlb2YgJG9wdGlvbkpzb24uaWQgPT0gJ251bWJlcicgPyAkb3B0aW9uSnNvbi5pZCA6ICRvcHRpb25Kc29uLmludElkO1x0XHRcblxuXHRcdHRoaXMuZGlzcGxheUluTWVudSA9ICRvcHRpb25Kc29uLmRpc3BsYXlJbk1lbnUgIT09IGZhbHNlO1xuXHRcdHRoaXMuZGlzcGxheUluSW5mb0JhciA9ICRvcHRpb25Kc29uLmRpc3BsYXlJbkluZm9CYXIgIT09IGZhbHNlO1xuXHRcdHRoaXMuZGlzcGxheUNoaWxkcmVuSW5NZW51ID0gJG9wdGlvbkpzb24uZGlzcGxheUNoaWxkcmVuSW5NZW51ICE9PSBmYWxzZTtcblx0XHR0aGlzLmRpc3BsYXlDaGlsZHJlbkluSW5mb0JhciA9ICRvcHRpb25Kc29uLmRpc3BsYXlDaGlsZHJlbkluSW5mb0JhciAhPT0gZmFsc2U7XG5cblx0XHR0aGlzLnNob3dFeHBhbmRlZCA9ICRvcHRpb25Kc29uLnNob3dFeHBhbmRlZCB8fCBmYWxzZTtcblx0XHR0aGlzLnVuZXhwYW5kYWJsZSA9ICRvcHRpb25Kc29uLnVuZXhwYW5kYWJsZSB8fCBmYWxzZTtcblx0XHRcblx0XHR0aGlzLmNvbG9yID0gJG9wdGlvbkpzb24uY29sb3I7XG5cdFx0dGhpcy5zb2Z0Q29sb3IgPSAkb3B0aW9uSnNvbi5zb2Z0Q29sb3IgfHwgdGhpcy5jb2xvcjtcblx0XHR0aGlzLmljb24gPSAkb3B0aW9uSnNvbi5pY29uO1xuXHRcdHRoaXMudGV4dEhlbHBlciA9ICRvcHRpb25Kc29uLnRleHRIZWxwZXI7XG5cdFx0dGhpcy51c2VJY29uRm9yTWFya2VyID0gKCd1c2VJY29uRm9yTWFya2VyJyBpbiAkb3B0aW9uSnNvbikgPyAkb3B0aW9uSnNvbi51c2VJY29uRm9yTWFya2VyIDogISF0aGlzLmljb247XG5cdFx0dGhpcy51c2VDb2xvckZvck1hcmtlciA9ICgndXNlQ29sb3JGb3JNYXJrZXInIGluICRvcHRpb25Kc29uKSA/ICRvcHRpb25Kc29uLnVzZUNvbG9yRm9yTWFya2VyIDogISF0aGlzLmNvbG9yO1x0XHRcblx0fVxuXG5cdGFkZENhdGVnb3J5KCRjYXRlZ29yeSA6IENhdGVnb3J5KSB7IHRoaXMuY2hpbGRyZW4ucHVzaCgkY2F0ZWdvcnkpOyAgfVxuXG5cdGlzQ29sbGFwc2libGUoKSA6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5nZXREb20oKS5oYXNDbGFzcygnb3B0aW9uLWNvbGxhcHNpYmxlJyk7IH1cblxuXHRnZXQgc3ViY2F0ZWdvcmllcygpIDogQ2F0ZWdvcnlbXSB7IHJldHVybiA8Q2F0ZWdvcnlbXT4gdGhpcy5jaGlsZHJlbjsgfVxuXG5cdGdldCBhbGxDaGlsZHJlbk9wdGlvbnMoKSA6IE9wdGlvbltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5yZWN1cnNpdmVseUdldENoaWxkcmVuT3B0aW9uKHRoaXMpO1xuXHR9XG5cblx0cHJpdmF0ZSByZWN1cnNpdmVseUdldENoaWxkcmVuT3B0aW9uKHBhcmVudE9wdGlvbiA6IE9wdGlvbikgOiBPcHRpb25bXVxuXHR7XG5cdFx0bGV0IHJlc3VsdE9wdGlvbnMgOiBPcHRpb25bXSA9IFtdO1xuXHRcdGZvcihsZXQgY2F0IG9mIHBhcmVudE9wdGlvbi5zdWJjYXRlZ29yaWVzKVxuXHRcdHtcblx0XHRcdHJlc3VsdE9wdGlvbnMgPSByZXN1bHRPcHRpb25zLmNvbmNhdChjYXQub3B0aW9ucyk7XG5cdFx0XHRmb3IobGV0IG9wdGlvbiBvZiBjYXQub3B0aW9ucylcblx0XHRcdHtcblx0XHRcdFx0cmVzdWx0T3B0aW9ucyA9IHJlc3VsdE9wdGlvbnMuY29uY2F0KHRoaXMucmVjdXJzaXZlbHlHZXRDaGlsZHJlbk9wdGlvbihvcHRpb24pKTtcblx0XHRcdH1cblx0XHR9XG5cdFx0cmV0dXJuIHJlc3VsdE9wdGlvbnM7XG5cdH1cblxuXHRnZXQgcGFyZW50T3B0aW9uTmFtZSgpIDogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZ2V0T3duZXIoKSA/IHRoaXMuZ2V0T3duZXIoKS5nZXRPd25lcigpID8gdGhpcy5nZXRPd25lcigpLmdldE93bmVyKCkubmFtZSA6ICcnIDogJyc7IH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5kZWNsYXJlIGxldCAkLCBqUXVlcnkgOiBhbnk7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwTW9kZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0ICogYXMgQ29va2llcyBmcm9tIFwiLi4vdXRpbHMvY29va2llc1wiO1xuXG5leHBvcnQgY2xhc3MgQ3VzdG9tUG9wdXBDb21wb25lbnRcbnsgICAgXG4gIG9wdGlvbnMgOiBhbnk7XG5cbiAgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICBpZiAoIUFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCdjdXN0b21Qb3B1cCcpKSByZXR1cm47XG4gICAgdGhpcy5vcHRpb25zID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5jdXN0b21Qb3B1cC5vcHRpb25zO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiY29va2llXCIsIHRoaXMuZ2V0Q29va2llSWQoKSwgQ29va2llcy5yZWFkQ29va2llKHRoaXMuZ2V0Q29va2llSWQoKSkpXG4gICAgaWYgKCghdGhpcy5vcHRpb25zLnNob3dPbmx5T25jZSB8fCAhQ29va2llcy5yZWFkQ29va2llKHRoaXMuZ2V0Q29va2llSWQoKSkpICYmIHRoaXMub3B0aW9ucy50ZXh0Lmxlbmd0aCA+IDApIHRoaXMuc2hvdygpO1xuICAgICQoJyNnb2dvLWN1c3RvbS1wb3B1cCAjYnRuLWNsb3NlLWN1c3RvbS1wb3B1cCcpLmNsaWNrKCAoKSA9PiB0aGlzLmhpZGUoKSk7XG4gIH1cblxuICBoaWRlKGRlbGF5IDogbnVtYmVyID0gMjUwKSB7IFxuICAgICQoJyNnb2dvLWN1c3RvbS1wb3B1cCcpLmZhZGVPdXQoZGVsYXkpOyBcbiAgICBDb29raWVzLmNyZWF0ZUNvb2tpZSh0aGlzLmdldENvb2tpZUlkKCksIHRydWUpO1xuICB9XG5cbiAgc2hvdyhkZWxheSA6IG51bWJlciA9IDQwMCkgeyAkKCcjZ29nby1jdXN0b20tcG9wdXAnKS5mYWRlSW4oZGVsYXkpOyB9XG5cbiAgZ2V0SWQoKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9ucy5pZCB8fCAwO1xuICB9XG5cbiAgZ2V0Q29va2llSWQoKSA6IHN0cmluZyB7XG4gICAgcmV0dXJuIGBnb2dvQ3VzdG9tUG9wdXAtJHt0aGlzLmdldElkKCl9LUNsb3NlZGBcbiAgfVxufSIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgT3B0aW9uIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvdGF4b25vbXkvb3B0aW9uLmNsYXNzXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgbGV0ICQgOiBhbnk7XG5cbmV4cG9ydCBlbnVtIENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlXG57XG5cdE9wdGlvbixcblx0Q2F0ZWdvcnlcbn1cblxuLyoqXG4qIENsYXNzIHJlcHJlc2VudGF0aW5nIGEgTm9kZSBpbiB0aGUgRGlyZWN0b3J5IE1lbnUgVHJlZVxuKlxuKiBBIENhdGVnb3J5T3B0aW9uVHJlZU5vZGUgY2FuIGJlIGEgQ2F0ZWdvcnkgb3IgYW4gT3B0aW9uXG4qL1xuZXhwb3J0IGNsYXNzIENhdGVnb3J5T3B0aW9uVHJlZU5vZGUgXG57XG5cdGlkIDogYW55O1xuXHRuYW1lIDogc3RyaW5nO1xuXHRuYW1lU2hvcnQ6IHN0cmluZztcblxuXHRkaXNwbGF5SW5NZW51IDogYm9vbGVhbjtcblx0ZGlzcGxheUluSW5mb0JhciA6IGJvb2xlYW47XG5cblx0c2hvd0V4cGFuZGVkIDogYm9vbGVhbjtcblx0dW5leHBhbmRhYmxlIDogYm9vbGVhbjtcblxuXHRjaGlsZHJlbiA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVbXSA9IFtdO1xuXG5cdC8vIGlzIHRoZSBub2RlIGhhbid0IGJlIHRvdWNoZWQgZm9yIG5vdywgaXQncyBvbiBpdCdzIGZpcnN0IGluaXRpYWxpemVkIHN0YXRlXG5cdGlzUHJpc3RpbmUgOiBib29sZWFuID0gdHJ1ZTtcblxuXHRvd25lcklkIDogbnVtYmVyID0gbnVsbDtcblx0Ly8gbWFpbiBvcHRpb24gSWQsIG9yIFwiYWxsXCJcblx0bWFpbk93bmVySWQgOiBhbnkgPSBudWxsO1xuXG5cdGlzQ2hlY2tlZCA6IGJvb2xlYW4gPSB0cnVlO1xuXHRpc0Rpc2FibGVkIDogYm9vbGVhbiA9IGZhbHNlO1x0XHRcblxuXHRpc01haW5PcHRpb24gOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IocHJpdmF0ZSBUWVBFIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUsIHByaXZhdGUgRE9NX0lEIDogc3RyaW5nLCBwcml2YXRlIERPTV9DSEVDS0JPWF9JRCA6IHN0cmluZywgcHJpdmF0ZSBET01fQ0hJTERSRU5fQ0xBU1MgOiBzdHJpbmcpIHt9O1xuXG5cdGdldERvbSgpIHsgcmV0dXJuICQodGhpcy5ET01fSUQgKyB0aGlzLmlkKTsgfVxuXG5cdGdldERvbUNoZWNrYm94KCkgeyByZXR1cm4gJCh0aGlzLkRPTV9DSEVDS0JPWF9JRCArIHRoaXMuaWQpOyB9XG5cblx0Z2V0RG9tQ2hpbGRyZW4oKSB7IHJldHVybiB0aGlzLmdldERvbSgpLm5leHQodGhpcy5ET01fQ0hJTERSRU5fQ0xBU1MpO31cblxuXHRnZXRPd25lcigpIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSBcblx0eyBcblx0XHRpZiAodGhpcy5UWVBFID09IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlLk9wdGlvbilcblx0XHRcdHJldHVybiBBcHAudGF4b25vbXlNb2R1bGUuZ2V0Q2F0ZWdvcnlCeUlkKHRoaXMub3duZXJJZCk7IFxuXG5cdFx0aWYgKHRoaXMuVFlQRSA9PSBDYXRlZ29yeU9wdGlvblRyZWVOb2RlVHlwZS5DYXRlZ29yeSlcblx0XHRcdHJldHVybiBBcHAudGF4b25vbXlNb2R1bGUuZ2V0T3B0aW9uQnlJZCh0aGlzLm93bmVySWQpOyBcblxuXHRcdHJldHVybiBudWxsO1xuXHR9XG5cblx0cHJvdGVjdGVkIGRpc2FibGVkQ2hpbGRyZW4oKSA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVbXSB7IHJldHVybiB0aGlzLmNoaWxkcmVuLmZpbHRlciggY2hpbGQgPT4gY2hpbGQuaXNEaXNhYmxlZCk7IH1cblx0cHJvdGVjdGVkIG5vbkRpc2FibGVkQ2hpbGRyZW4oKSA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVbXSB7IHJldHVybiB0aGlzLmNoaWxkcmVuLmZpbHRlciggY2hpbGQgPT4gIWNoaWxkLmlzRGlzYWJsZWQpOyB9XG5cdHByb3RlY3RlZCBjaGVja2VkQ2hpbGRyZW4oKSA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVbXSB7IHJldHVybiB0aGlzLmNoaWxkcmVuLmZpbHRlciggY2hpbGQgPT4gY2hpbGQuaXNDaGVja2VkKTsgfVxuXG5cdGlzT3B0aW9uKCkgeyByZXR1cm4gdGhpcy5UWVBFID09IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlLk9wdGlvbiB9XG5cblx0c2V0Q2hlY2tlZChib29sIDogYm9vbGVhbilcblx0e1xuXHRcdHRoaXMuaXNDaGVja2VkID0gYm9vbDtcblx0XHR0aGlzLmdldERvbSgpLnRvZ2dsZUNsYXNzKFwiY2hlY2tlZFwiLCBib29sKTtcblx0XHR0aGlzLmdldERvbUNoZWNrYm94KCkucHJvcChcImNoZWNrZWRcIiwgYm9vbCk7XG5cdFx0dGhpcy5pc1ByaXN0aW5lID0gZmFsc2U7XG5cdH1cblxuXHRzZXREaXNhYmxlZChib29sIDogYm9vbGVhbilcblx0e1xuXHRcdHRoaXMuaXNEaXNhYmxlZCA9IGJvb2w7XG5cdFx0dGhpcy5nZXREb20oKS50b2dnbGVDbGFzcyhcImRpc2FibGVkXCIsIGJvb2wpO1xuXHRcdGlmIChib29sKSB0aGlzLnNldENoZWNrZWQoZmFsc2UpO1x0XHRcdFxuXHRcdHRoaXMuaXNQcmlzdGluZSA9IGZhbHNlO1xuXHR9XG5cblx0dG9nZ2xlKHZhbHVlIDogYm9vbGVhbiA9IG51bGwsIGh1bWFuQWN0aW9uIDogYm9vbGVhbiA9IHRydWUpXG5cdHtcdFx0XG5cdFx0bGV0IGNoZWNrO1xuXHRcdGlmICh2YWx1ZSAhPSBudWxsKSBjaGVjayA9IHZhbHVlO1xuXHRcdGVsc2UgY2hlY2sgPSAhdGhpcy5pc0NoZWNrZWQ7XG5cblx0XHRpZiAodGhpcy5pc09wdGlvbigpICYmIHRoaXMuaXNQcmlzdGluZSAmJiBodW1hbkFjdGlvbilcblx0XHR7XG5cdFx0XHR0aGlzLnJlY3Vyc2l2ZWx5R2V0UHJpc3RpbmUodGhpcykuZm9yRWFjaCggKG5vZGUpID0+IHtcblx0XHRcdFx0bm9kZS50b2dnbGUoZmFsc2UsIGZhbHNlKTtcblx0XHRcdH0pO1xuXHRcdFx0Ly8gZm9yY2UgY2hlY2sgdG8gdHJ1ZSwgYmVjYXN1ZSBpbiBwcmlzdGluZSBtb2RlIGlucHV0IGlzIHVuY2hlY2tlZCBidXQgb3B0aW9uIGNsYXNzIGlzIGNoZWNrZWQgYW5kIG5vdCBkaXNhYmxlZFxuXHRcdFx0Y2hlY2sgPSB0cnVlO1xuXHRcdH1cdFx0XHRcblxuXHRcdHRoaXMuc2V0Q2hlY2tlZChjaGVjayk7XG5cdFx0dGhpcy5zZXREaXNhYmxlZCghY2hlY2spO1xuXG5cdFx0aWYgKCF0aGlzLmlzTWFpbk9wdGlvbiB8fCAhQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbikgXG5cdFx0e1xuXHRcdFx0Zm9yIChsZXQgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikgY2hpbGQudG9nZ2xlKGNoZWNrLCBmYWxzZSk7XG5cdFx0fVxuXG5cdFx0aWYoaHVtYW5BY3Rpb24pXG5cdFx0e1xuXHRcdFx0aWYgKHRoaXMuZ2V0T3duZXIoKSkgdGhpcy5nZXRPd25lcigpLnVwZGF0ZVN0YXRlKCk7XG5cdFx0XHRcblx0XHRcdC8vIGRlbGF5IHRoZSB1cGRhdGUgc28gaXQncyBub3QgZnJlZXppbmcgdGhlIFVJXG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0XHRcdEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheShjaGVjaywgdHJ1ZSk7XG5cdFx0XHRcdEFwcC5oaXN0b3J5TW9kdWxlLnVwZGF0ZUN1cnJTdGF0ZSgpO1xuXHRcdFx0fSwyMDApO1x0XHRcdFx0XG5cdFx0fVxuXHR9XG5cblx0dG9nZ2xlVmlzaWJpbGl0eSh2YWx1ZSA6IGJvb2xlYW4sIHJlY3Vyc2l2ZSA6IGJvb2xlYW4gPSBmYWxzZSlcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJ0b2dnbGUgdmlzaWJpbGl0eSBcIiwgdmFsdWUpO1xuXHRcdHRoaXMuaXNDaGVja2VkID0gdmFsdWU7XG5cblx0XHRpZiAodmFsdWUpIHRoaXMuZ2V0RG9tKCkuc2hvdygpO1xuXHRcdGVsc2UgeyB0aGlzLmdldERvbSgpLmhpZGUoKTt9XG5cblx0XHRpZiAodGhpcy5pc01haW5PcHRpb24pXG5cdFx0e1xuXHRcdFx0JCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgdGhpcy5pZCkudG9nZ2xlKHZhbHVlKTtcblx0XHR9XG5cblx0XHRpZiAodmFsdWUgJiYgdGhpcy5nZXRPd25lcigpKSB0aGlzLmdldE93bmVyKCkudG9nZ2xlVmlzaWJpbGl0eSh0cnVlKTtcblxuXHRcdGlmIChyZWN1cnNpdmUpIGZvciAobGV0IGNoaWxkIG9mIHRoaXMuY2hpbGRyZW4pIGNoaWxkLnRvZ2dsZVZpc2liaWxpdHkodmFsdWUsIHRydWUpO1xuXHR9XG5cblx0dXBkYXRlU3RhdGUocHJvcGFnZSA9IHRydWUpXG5cdHtcblx0XHRpZiAodGhpcy5pc01haW5PcHRpb24gJiYgQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbikgcmV0dXJuO1x0XG5cblx0XHRpZiAodGhpcy5jaGlsZHJlbi5sZW5ndGggPT0gMCkgXG5cdFx0XHR0aGlzLnNldERpc2FibGVkKCF0aGlzLmlzQ2hlY2tlZCk7XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGxldCBkaXNhYmxlZENoaWxkcmVuQ291bnQgPSB0aGlzLmNoaWxkcmVuLmZpbHRlciggKGNoaWxkIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSkgPT4gY2hpbGQuaXNEaXNhYmxlZCkubGVuZ3RoO1xuXG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiT3B0aW9uIFwiICsgdGhpcy5uYW1lICsgXCIgdXBkYXRlIHN0YXRlLCBuYnJlIGNoaWxkcmVuIGRpc2FibGVkID0gXCIsIGRpc2FibGVkQ2hpbGRyZW5Db3VudCk7XG5cblx0XHRcdGlmIChkaXNhYmxlZENoaWxkcmVuQ291bnQgPT0gdGhpcy5jaGlsZHJlbi5sZW5ndGgpXG5cdFx0XHRcdHRoaXMuc2V0RGlzYWJsZWQodHJ1ZSk7XHRcblx0XHRcdGVsc2Vcblx0XHRcdFx0dGhpcy5zZXREaXNhYmxlZChmYWxzZSk7XG5cblx0XHRcdGxldCBjaGVja2VkQ2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGRyZW4uZmlsdGVyKCAoY2hpbGQgOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlKSA9PiBjaGlsZC5pc0NoZWNrZWQpLmxlbmd0aDtcblx0XHRcdGlmIChjaGVja2VkQ2hpbGRyZW5Db3VudCA9PSB0aGlzLmNoaWxkcmVuLmxlbmd0aClcblx0XHRcdFx0dGhpcy5zZXRDaGVja2VkKHRydWUpO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHR0aGlzLnNldENoZWNrZWQoZmFsc2UpXG5cdFx0fVx0XHRcblxuXHRcdGlmICh0aGlzLmdldE93bmVyKCkgJiYgcHJvcGFnZSkgdGhpcy5nZXRPd25lcigpLnVwZGF0ZVN0YXRlKCk7XHRcblx0fVxuXG5cdHJlY3Vyc2l2ZWx5VXBkYXRlU3RhdGVzKClcblx0e1xuXHRcdGZvcihsZXQgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbilcblx0XHR7XG5cdFx0XHRjaGlsZC5yZWN1cnNpdmVseVVwZGF0ZVN0YXRlcygpO1xuXHRcdH1cblxuXHRcdHRoaXMudXBkYXRlU3RhdGUoKTtcblx0fVxuXG5cdGlzRXhwYW5kZWQoKSA6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5nZXREb20oKS5oYXNDbGFzcygnZXhwYW5kZWQnKTsgfVxuXHRpc1VuZXhwYW5kYWJsZSgpIDogYm9vbGVhbiB7IHJldHVybiB0aGlzLmdldERvbSgpLmhhc0NsYXNzKCd1bmV4cGFuZGFibGUnKTsgfVxuXG5cdHRvZ2dsZUNoaWxkcmVuRGV0YWlsKClcblx0e1xuXHRcdGlmICh0aGlzLmlzVW5leHBhbmRhYmxlKCkpIHJldHVybjtcblxuXHRcdGlmICh0aGlzLmlzRXhwYW5kZWQoKSlcblx0XHR7XG5cdFx0XHR0aGlzLmdldERvbUNoaWxkcmVuKCkuc3RvcCh0cnVlLGZhbHNlKS5zbGlkZVVwKHsgZHVyYXRpb246IDM1MCwgZWFzaW5nOiBcImVhc2VPdXRRdWFydFwiLCBxdWV1ZTogZmFsc2UsIGNvbXBsZXRlOiBmdW5jdGlvbigpIHskKHRoaXMpLmNzcygnaGVpZ2h0JywgJycpO319KTtcblx0XHRcdHRoaXMuZ2V0RG9tKCkucmVtb3ZlQ2xhc3MoJ2V4cGFuZGVkJyk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHR0aGlzLmdldERvbUNoaWxkcmVuKCkuc3RvcCh0cnVlLGZhbHNlKS5zbGlkZURvd24oeyBkdXJhdGlvbjogMzUwLCBlYXNpbmc6IFwiZWFzZU91dFF1YXJ0XCIsIHF1ZXVlOiBmYWxzZSwgY29tcGxldGU6IGZ1bmN0aW9uKCkgeyQodGhpcykuY3NzKCdoZWlnaHQnLCAnJyk7fX0pO1xuXHRcdFx0dGhpcy5nZXREb20oKS5hZGRDbGFzcygnZXhwYW5kZWQnKTtcblx0XHR9XG5cdH1cblxuXHRnZXRTaWJsaW5nc1ByaXN0aW5lKCkgOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlW11cblx0e1xuXHRcdHJldHVybiB0aGlzLmdldE93bmVyKCkuY2hpbGRyZW4uZmlsdGVyKCAobm9kZSkgPT4gbm9kZS5pc1ByaXN0aW5lICYmIG5vZGUuaWQgIT0gdGhpcy5pZCk7IFxuXHR9XG5cblx0cHJpdmF0ZSByZWN1cnNpdmVseUdldFByaXN0aW5lKGN1cnJPcHRpb24gOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlKVxuXHR7XG5cdFx0bGV0IHJlc3VsdE5vZGVzID0gW107XG5cdFx0cmVzdWx0Tm9kZXMgPSByZXN1bHROb2Rlcy5jb25jYXQoY3Vyck9wdGlvbi5nZXRTaWJsaW5nc1ByaXN0aW5lKCkpO1xuXHRcdGxldCBwYXJlbnRPcHRpb24gPSBjdXJyT3B0aW9uLmdldE93bmVyKCkuZ2V0T3duZXIoKTtcblx0XHRpZiAodGhpcy5pc01haW5PcHRpb24gfHwgQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbiAmJiBwYXJlbnRPcHRpb24uaXNNYWluT3B0aW9uKSByZXR1cm4gcmVzdWx0Tm9kZXM7XG5cdFx0ZWxzZSBpZiAocGFyZW50T3B0aW9uKSByZXN1bHROb2RlcyA9IHJlc3VsdE5vZGVzLmNvbmNhdCh0aGlzLnJlY3Vyc2l2ZWx5R2V0UHJpc3RpbmUocGFyZW50T3B0aW9uKSk7XHRcdFxuXG5cdFx0cmV0dXJuIHJlc3VsdE5vZGVzO1xuXHR9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuZGVjbGFyZSBsZXQgJCwgalF1ZXJ5IDogYW55O1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIE9wdGlvbiB9IGZyb20gXCIuLi8uLi9tb2R1bGVzL3RheG9ub215L3RheG9ub215Lm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBEaXJlY3RvcnlNZW51Q29tcG9uZW50XG57XHRcdFxuXHRvcGVuTWVudSA6IGJvb2xlYW4gPSBmYWxzZTtcblx0d2lkdGggOiBudW1iZXI7XG5cdGRvbTtcblxuXHRpc1Bhbm5pbmcgOiBib29sZWFuID0gZmFsc2U7XG5cdGRyYWdUYXJnZXQ7XG5cdG92ZXJsYXk7XG5cbiAgb25TaG93ID0gbmV3IEV2ZW50PGFueT4oKTtcbiAgb25IaWRlID0gbmV3IEV2ZW50PGFueT4oKTtcblxuXHRBTklNXzUwID0ge2R1cmF0aW9uOiA1MCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdlYXNlT3V0RWxhc3RpYyd9O1xuXHRBTklNXzIwMCA9IHtkdXJhdGlvbjogMjAwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ2Vhc2VPdXRFbGFzdGljJ307XG5cdEFOSU1fMzAwID0ge2R1cmF0aW9uOiAzMDAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnZWFzZU91dEVsYXN0aWMnfTtcbiAgQU5JTV80MDAgPSB7ZHVyYXRpb246IDMwMCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdlYXNlT3V0RWxhc3RpYyd9O1xuXG5cdGNvbnN0cnVjdG9yKCkgeyB9XG5cblx0aW5pdGlhbGl6ZSgpXG5cdHtcdFx0XHRcdFxuXHRcdHRoaXMuZG9tID0gJCgnI2RpcmVjdG9yeS1tZW51Jyk7XG4gICAgdGhpcy5kcmFnVGFyZ2V0ID0gICQoJy5kaXJlY3RvcnktbWVudS1kcmFnLXRhcmdldCcpO1xuICAgIHRoaXMub3ZlcmxheSA9ICQoJyNkaXJlY3RvcnktbWVudS1vdmVybGF5Jyk7XG5cbiAgICB0aGlzLmRyYWdUYXJnZXQuY3NzKHsnbGVmdCc6IDB9KTsgICAgXG5cbiAgICB0aGlzLmRyYWdUYXJnZXQuY2xpY2soKCkgPT4geyB0aGlzLmhpZGUoKTsgfSk7XG4gICAgdGhpcy5vdmVybGF5LmNsaWNrKCgpID0+IHsgdGhpcy5oaWRlKCk7IH0pO1x0XG5cblx0XHQkKCcuYnRuLWNsb3NlLW1lbnUubGFyZ2Utc2NyZWVuJykudG9vbHRpcCgpO1xuXG4gICAgaWYgKEFwcC5jb21wb25lbnQuaXNNb2JpbGVTY3JlZW4oKSkge1xuICAgICAgdGhpcy5pbml0VG91Y2hNZW51KCk7XG4gICAgICB0aGlzLmhpZGUoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5zaG93KCk7XG4gICAgfVxuXHR9XHRcblxuXHRzaG93KCkgXG5cdHsgICAgXG4gICAgdGhpcy5kb20uc2hvdygpO1xuICAgIHRoaXMub25TaG93LmVtaXQoKTsgICAgXG5cbiAgICB0aGlzLmRvbS52ZWxvY2l0eSh7bGVmdDogMH0sIHRoaXMuQU5JTV8yMDApOyBcbiAgICB0aGlzLm92ZXJsYXkuc2hvdygpLnZlbG9jaXR5KHtvcGFjaXR5OiAxfSwgdGhpcy5BTklNXzIwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICAgXHRBcHAuZmlsdGVyc0NvbXBvbmVudC51cGRhdGVNYWluT3B0aW9uQmFja2dyb3VuZCgpO1x0XG5cbiAgICBcdGxldCBkcmFnVGFyZ2V0V2lkdGggPSBBcHAuY29tcG9uZW50LndpZHRoKCkgLSB0aGlzLndpZHRoICsgMjA7XG4gICAgICB0aGlzLmRyYWdUYXJnZXQuY3NzKHt3aWR0aDogZHJhZ1RhcmdldFdpZHRoICsgJ3B4JywgcmlnaHQ6IDAsIGxlZnQ6ICcnfSk7XG4gICAgICBBcHAuY29tcG9uZW50LnVwZGF0ZU1hcFNpemUoKTtcblx0XHRcdEFwcC5jb21wb25lbnQudXBkYXRlQ29tcG9uZW50c1NpemUoKTtcbiAgICB9LCA0MDApOyAgICAgXHRcdFx0XG4gIH1cblxuXHRoaWRlKCkgXG4gIHtcbiAgICB0aGlzLm9uSGlkZS5lbWl0KCk7XG5cbiAgICB0aGlzLm92ZXJsYXkudmVsb2NpdHkoe29wYWNpdHk6IDB9LCB0aGlzLkFOSU1fMzAwKTtcbiAgICB0aGlzLmRyYWdUYXJnZXQuY3NzKHt3aWR0aDogJzEwcHgnLCByaWdodDogJycsIGxlZnQ6ICcwJ30pO1xuICAgIHRoaXMuZG9tLnZlbG9jaXR5KHtsZWZ0OiAtMSAqICh0aGlzLndpZHRoICsgMjApfSwgdGhpcy5BTklNXzMwMCk7XG5cbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICAgXHR0aGlzLm92ZXJsYXkuaGlkZSgpO1xuICAgIFx0dGhpcy5kb20uaGlkZSgpOyAgIFxuXHRcdFx0XG5cdFx0XHQkKCcuc2hvdy1kaXJlY3RvcnktbWVudS1idXR0b24nKS5zaG93KCk7XHRcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy50b29sdGlwcGVkJykudG9vbHRpcCgncmVtb3ZlJyk7XG5cdFx0XHQkKCcuYnRuLWNsb3NlLW1lbnUubGFyZ2Utc2NyZWVuJykuaGlkZVRvb2x0aXAoKTtcblxuXHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVNYXBTaXplKCk7IFxuXHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVDb21wb25lbnRzU2l6ZSgpOyBcbiAgICB9LCA0MDApOyAgICBcbiAgfVxuXG4gIGluaXRUb3VjaE1lbnUoKVxuICB7XG4gIFx0dGhpcy5kcmFnVGFyZ2V0LmhhbW1lcih7XG4gICAgICBwcmV2ZW50X2RlZmF1bHQ6IGZhbHNlXG4gICAgfSkuYmluZCgncGFuJywgKGUpID0+IFxuICAgIHtcbiAgICAgIGlmIChlLmdlc3R1cmUucG9pbnRlclR5cGUgPT0gXCJ0b3VjaFwiKSBcbiAgICAgIHtcbiAgICAgICAgdmFyIGRpcmVjdGlvbiA9IGUuZ2VzdHVyZS5kaXJlY3Rpb247XG4gICAgICAgIHZhciB4ID0gZS5nZXN0dXJlLmNlbnRlci54O1xuICAgICAgICB2YXIgeSA9IGUuZ2VzdHVyZS5jZW50ZXIueTtcbiAgICAgICAgdmFyIHZlbG9jaXR5WCA9IGUuZ2VzdHVyZS52ZWxvY2l0eVg7ICBcblxuICAgICAgICAvLyBLZWVwIHdpdGhpbiBib3VuZGFyaWVzXG4gICAgICAgIGlmICh4ID4gdGhpcy53aWR0aCkgeyB4ID0gdGhpcy53aWR0aDsgfVxuICAgICAgICBlbHNlIGlmICh4IDwgMCkgeyB4ID0gMDsgfVxuXG4gICAgICAgIGlmICh4IDwgKHRoaXMud2lkdGggLyAyKSkgeyB0aGlzLm9wZW5NZW51ID0gZmFsc2U7IH1cbiAgICAgICAgZWxzZSB7IHRoaXMub3Blbk1lbnUgPSB0cnVlOyB9XG5cbiAgICAgICAgdGhpcy5kb20uY3NzKCdsZWZ0JywgKHggLSB0aGlzLndpZHRoKSkuc2hvdygpO1xuXG4gICAgICAgIC8vIFBlcmNlbnRhZ2Ugb3ZlcmxheVxuICAgICAgICB2YXIgb3ZlcmxheVBlcmM7XG4gICAgICAgIG92ZXJsYXlQZXJjID0geCAvIHRoaXMud2lkdGg7XG4gICAgICAgIHRoaXMub3ZlcmxheS5zaG93KCkudmVsb2NpdHkoe29wYWNpdHk6IG92ZXJsYXlQZXJjIH0sIHRoaXMuQU5JTV81MCk7XG5cdFx0XHR9XG5cbiAgICB9KS5iaW5kKCdwYW5lbmQnLCAoZSkgPT4ge1xuICAgICAgaWYgKGUuZ2VzdHVyZS5wb2ludGVyVHlwZSA9PSBcInRvdWNoXCIpIFxuICAgICAge1xuICAgICAgICB2YXIgdmVsb2NpdHlYID0gZS5nZXN0dXJlLnZlbG9jaXR5WDtcblxuICAgICAgICAvLyBJZiB2ZWxvY2l0eVggPD0gMC4zIHRoZW4gdGhlIHVzZXIgaXMgZmxpbmdpbmcgdGhlIG1lbnUgY2xvc2VkIHNvIGlnbm9yZSB0aGlzLm9wZW5NZW51XG4gICAgICAgIGlmICgodGhpcy5vcGVuTWVudSAmJiB2ZWxvY2l0eVggPD0gMC4zKSB8fCB2ZWxvY2l0eVggPCAtMC41KSB7IHRoaXMuc2hvdygpOyB9XG4gICAgICAgIGVsc2UgaWYgKCF0aGlzLm9wZW5NZW51IHx8IHZlbG9jaXR5WCA+IDAuMykgeyB0aGlzLmhpZGUoKTt9XG4gICAgICB9XG4gICAgIH0pO1xuICB9XG5cdFxuXHR1cGRhdGVTaXplKCkgXG5cdHtcbiAgICAvLyB1cGRhdGUgbWVudSB3aWR0aFxuXHRcdGxldCBtZW51d2lkdGgsIHBhZ2VXaWR0aCA9IEFwcC5jb21wb25lbnQud2lkdGgoKTtcblxuICAgIGxldCBtZW51U21hbGxXaWR0aCA9IEFwcC5jb25maWcubWVudS53aWR0aCA/IEFwcC5jb25maWcubWVudS53aWR0aCA6IDI2MDtcbiAgICBsZXQgbWVudUJpZ1dpZHRoID0gQXBwLmNvbmZpZy5tZW51LndpZHRoID8gQXBwLmNvbmZpZy5tZW51LndpZHRoIDogMjkwO1xuICAgIGlmIChBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKSB7XG4gICAgICBtZW51U21hbGxXaWR0aCArPSA1MDtcbiAgICAgIG1lbnVCaWdXaWR0aCArPSA1MDtcbiAgICB9XG5cdFx0XG5cdFx0aWYgKHBhZ2VXaWR0aCA+IDg1MCkge1xuICAgICAgbWVudXdpZHRoID0gIHBhZ2VXaWR0aCA+IDE0NTAgPyBtZW51QmlnV2lkdGggOiBtZW51U21hbGxXaWR0aDtcblx0XHR9IGVsc2Uge1xuICAgICAgbWVudXdpZHRoID0gIE1hdGgubWluKE1hdGgubWluKE1hdGgubWF4KHBhZ2VXaWR0aCAtIDYwLCBtZW51U21hbGxXaWR0aCksIG1lbnVCaWdXaWR0aCksIHBhZ2VXaWR0aCAtIDIwKTtcblx0XHR9XG5cdFx0XG5cdFx0dGhpcy5kb20uY3NzKCd3aWR0aCcsIG1lbnV3aWR0aCArICdweCcpO1xuXHRcdHRoaXMud2lkdGggPSBtZW51d2lkdGg7XG5cdFx0XG5cdFx0aWYgKG1lbnV3aWR0aCA8IDM0MCB8fCBBcHAuY29uZmlnLm1lbnUuc21hbGxXaWR0aFN0eWxlKSB0aGlzLmRvbS5hZGRDbGFzcygnc21hbGwtd2lkdGgnKTtcblx0XHRlbHNlIHRoaXMuZG9tLnJlbW92ZUNsYXNzKCdzbWFsbC13aWR0aCcpO1x0XG5cdH1cbn1cblxuXG5cblxuXG5cbiIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmRlY2xhcmUgbGV0ICQsIGpRdWVyeSA6IGFueTtcblxuaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IENhdGVnb3J5LCBPcHRpb24gfSBmcm9tIFwiLi4vLi4vbW9kdWxlcy90YXhvbm9teS90YXhvbm9teS5tb2R1bGVcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZXhwb3J0IGNsYXNzIEZpbHRlcnNDb21wb25lbnRcbnsgIFxuICBjdXJyZW50QWN0aXZlTWFpbk9wdGlvbklkID0gbnVsbDtcblxuICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgaW5pdGlhbGl6ZSgpXG4gIHsgIFxuICAgICQoJy5maWx0ZXItbWVudSAudG9vbHRpcHBlZCcpLnRvb2x0aXAoKTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0gRkFWT1JJVEUtLS0tLS0tLS0tLS0tXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICQoJyNmaWx0ZXItZmF2b3JpdGUnKS5jbGljayhmdW5jdGlvbihlIDogRXZlbnQpXG4gICAgeyAgICAgIFxuICAgICAgbGV0IGZhdm9yaXRlQ2hlY2tib3ggPSAkKCcjZmF2b3JpdGUtY2hlY2tib3gnKTtcblxuICAgICAgbGV0IGNoZWNrVmFsdWUgPSAhZmF2b3JpdGVDaGVja2JveC5pcygnOmNoZWNrZWQnKTtcbiAgICAgICQodGhpcykudG9nZ2xlQ2xhc3MoJ2NoZWNrZWQnLCBjaGVja1ZhbHVlKTtcbiAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlGYXZvcml0ZShjaGVja1ZhbHVlKTtcblxuICAgICAgaWYgKGNoZWNrVmFsdWUpIHtcbiAgICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seVBlbmRpbmcoZmFsc2UpO1xuICAgICAgICAkKCcjcGVuZGluZy1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seU1vZGVyYXRpb24oZmFsc2UpO1xuICAgICAgICAkKCcjbW9kZXJhdGlvbi1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgIH1cbiAgICAgIFxuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuXG4gICAgICBmYXZvcml0ZUNoZWNrYm94LnByb3AoJ2NoZWNrZWQnLGNoZWNrVmFsdWUpO1xuXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0gUEVORElORy0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgJCgnI2ZpbHRlci1wZW5kaW5nJykuY2xpY2soZnVuY3Rpb24oZSA6IEV2ZW50KVxuICAgIHsgICAgICBcbiAgICAgIGxldCBwZW5kaW5nQ2hlY2tib3ggPSAkKCcjcGVuZGluZy1jaGVja2JveCcpO1xuXG4gICAgICBsZXQgY2hlY2tWYWx1ZSA9ICFwZW5kaW5nQ2hlY2tib3guaXMoJzpjaGVja2VkJyk7XG5cbiAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlQZW5kaW5nKGNoZWNrVmFsdWUpO1xuICAgICAgXG4gICAgICBpZiAoY2hlY2tWYWx1ZSkge1xuICAgICAgICBBcHAuZmlsdGVyTW9kdWxlLnNob3dPbmx5RmF2b3JpdGUoZmFsc2UpO1xuICAgICAgICAkKCcjZmF2b3JpdGUtY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XG4gICAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlNb2RlcmF0aW9uKGZhbHNlKTtcbiAgICAgICAgJCgnI21vZGVyYXRpb24tY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTtcblxuICAgICAgcGVuZGluZ0NoZWNrYm94LnByb3AoJ2NoZWNrZWQnLGNoZWNrVmFsdWUpO1xuXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0gTU9ERVJBSVRPTi0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgJCgnI2ZpbHRlci1tb2RlcmF0aW9uJykuY2xpY2soZnVuY3Rpb24oZSA6IEV2ZW50KVxuICAgIHsgICAgICBcbiAgICAgIGxldCBtb2RlcmF0aW9uQ2hlY2tib3ggPSAkKCcjbW9kZXJhdGlvbi1jaGVja2JveCcpO1xuXG4gICAgICBsZXQgY2hlY2tWYWx1ZSA9ICFtb2RlcmF0aW9uQ2hlY2tib3guaXMoJzpjaGVja2VkJyk7XG5cbiAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlNb2RlcmF0aW9uKGNoZWNrVmFsdWUpO1xuICAgICAgXG4gICAgICBpZiAoY2hlY2tWYWx1ZSkge1xuICAgICAgICBBcHAuZmlsdGVyTW9kdWxlLnNob3dPbmx5RmF2b3JpdGUoZmFsc2UpO1xuICAgICAgICAkKCcjZmF2b3JpdGUtY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XG4gICAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlQZW5kaW5nKGZhbHNlKTtcbiAgICAgICAgJCgnI3BlbmRpbmctY2hlY2tib3gnKS5wcm9wKCdjaGVja2VkJyxmYWxzZSk7XG4gICAgICB9XG5cbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTtcblxuICAgICAgbW9kZXJhdGlvbkNoZWNrYm94LnByb3AoJ2NoZWNrZWQnLGNoZWNrVmFsdWUpO1xuXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLSBNQUlOIE9QVElPTlMgLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgdmFyIHRoYXQgPSB0aGlzO1xuXG4gICAgJCgnLm1haW4tY2F0ZWdvcmllcyAubWFpbi1pY29uJykuY2xpY2soIGZ1bmN0aW9uKGUpXG4gICAge1xuICAgICAgbGV0IG9wdGlvbklkID0gJCh0aGlzKS5hdHRyKCdkYXRhLW9wdGlvbi1pZCcpO1xuICAgICAgdGhhdC5zZXRNYWluT3B0aW9uKG9wdGlvbklkKTtcbiAgICB9KTtcblxuICAgIC8vIGZvbGxvdyBtYWluIGFjdGl2ZSBvcHRpb24gYmFja2dyb3VuZCB3aGVuIHVzZXIgc2Nyb2xsIHRocm91Z2ggbWFpbiBvcHRpb25zXG4gICAgJCgnLm1haW4tY2F0ZWdvcmllcycpLm9uKCdzY3JvbGwnLCAoKSA9PlxuICAgIHtcbiAgICAgICQoJyNhY3RpdmUtbWFpbi1vcHRpb24tYmFja2dyb3VuZCcpLmNzcygndG9wJywgJCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgdGhpcy5jdXJyZW50QWN0aXZlTWFpbk9wdGlvbklkKS5wb3NpdGlvbigpLnRvcCk7XG4gICAgfSk7XG5cbiAgICBcblxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0gQ0FURUdPUklFUyAtLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICQoJy5zdWJjYXRlZ29yeS1pdGVtIC5uYW1lLXdyYXBwZXI6bm90KC51bmNoZWNrYWJsZSknKS5jbGljayhmdW5jdGlvbigpXG4gICAgeyAgICBcbiAgICAgIGxldCBjYXRlZ29yeUlkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNhdGVnb3J5LWlkJyk7XG4gICAgICBBcHAudGF4b25vbXlNb2R1bGUuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpLnRvZ2dsZUNoaWxkcmVuRGV0YWlsKCk7XG4gICAgfSk7ICBcblxuICAgICQoJy5zdWJjYXRlZ29yeS1pdGVtIC5jaGVja2JveC13cmFwcGVyJykuY2xpY2soZnVuY3Rpb24oZSlcbiAgICB7ICAgIFxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGxldCBjYXRlZ29yeUlkID0gJCh0aGlzKS5hdHRyKCdkYXRhLWNhdGVnb3J5LWlkJyk7XG4gICAgICBBcHAudGF4b25vbXlNb2R1bGUuZ2V0Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpLnRvZ2dsZSgpO1xuICAgICAgXG4gICAgfSk7ICAgICAgXG5cbiAgICAvLyBBZGQgc3VyYnJpbGxhbmNlIGluIG1haW4tY2F0ZWdvcmllcyBzaWRlYmFyIGZpbHRlcnMgbWVudSB3aGVubiBob3ZlcmluZyBhIG1haW4gY2F0ZWdvcnlcbiAgICAkKCcjbWFpbi1vcHRpb24tYWxsLnNob3ctb25lLXBhbmUtcGVyLW1haW4tb3B0aW9uIC5nb2dvLWljb24tbmFtZS13cmFwcGVyJykuaG92ZXIoIFxuICAgICAgZnVuY3Rpb24oZSA6IEV2ZW50KSB7XG4gICAgICAgIGxldCBvcHRpb25JZCA9ICQodGhpcykuYXR0cignZGF0YS1vcHRpb24taWQnKTtcbiAgICAgICAgbGV0IHNpZGViYXJJY29uID0gJCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgb3B0aW9uSWQpO1xuICAgICAgICBpZiAoIXNpZGViYXJJY29uLmhhc0NsYXNzKCdob3ZlcicpKSBzaWRlYmFySWNvbi5hZGRDbGFzcygnaG92ZXInKTtcbiAgICAgIH0sXG4gICAgICBmdW5jdGlvbihlIDogRXZlbnQpIHtcbiAgICAgICAgbGV0IG9wdGlvbklkID0gJCh0aGlzKS5hdHRyKCdkYXRhLW9wdGlvbi1pZCcpO1xuICAgICAgICBsZXQgc2lkZWJhckljb24gPSAkKCcjbWFpbi1vcHRpb24tZ29nby1pY29uLScgKyBvcHRpb25JZCk7XG4gICAgICAgIHNpZGViYXJJY29uLnJlbW92ZUNsYXNzKCdob3ZlcicpO1xuICAgICAgfVxuICAgICk7XG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLSBTVUIgT1BUSU9OUyAtLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgJCgnLnN1YmNhdGVnb3JpZS1vcHRpb24taXRlbTpub3QoI2ZpbHRlci1mYXZvcml0ZSk6bm90KCNmaWx0ZXItcGVuZGluZyk6bm90KCNmaWx0ZXItbW9kZXJhdGlvbikgLm9wdGlvbi1uYW1lJykuY2xpY2soZnVuY3Rpb24oZSA6IEV2ZW50KVxuICAgIHtcbiAgICAgIGxldCBvcHRpb25Eb20gPSAkKHRoaXMpLmNsb3Nlc3QoJy5zdWJjYXRlZ29yaWUtb3B0aW9uLWl0ZW0nKTtcbiAgICAgIGxldCBvcHRpb25JZCA9IG9wdGlvbkRvbS5hdHRyKCdkYXRhLW9wdGlvbi1pZCcpO1xuICAgICAgbGV0IG9wdGlvbiA9IEFwcC50YXhvbm9teU1vZHVsZS5nZXRPcHRpb25CeUlkKG9wdGlvbklkKTtcblxuICAgICAgaWYgKG9wdGlvbi5pc01haW5PcHRpb24gJiYgQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbikgQXBwLmZpbHRlcnNDb21wb25lbnQuc2V0TWFpbk9wdGlvbihvcHRpb24uaWQpO1xuICAgICAgZWxzZSBpZiAob3B0aW9uRG9tLmhhc0NsYXNzKCd1bmNoZWNrYWJsZScpKSByZXR1cm47XG4gICAgICBlbHNlIGlmIChvcHRpb24uaXNDb2xsYXBzaWJsZSgpKSBvcHRpb24udG9nZ2xlQ2hpbGRyZW5EZXRhaWwoKVxuICAgICAgZWxzZSBvcHRpb24udG9nZ2xlKCk7XG4gICAgfSk7XG5cbiAgICAkKCcuc3ViY2F0ZWdvcmllLW9wdGlvbi1pdGVtOm5vdCgjZmlsdGVyLWZhdm9yaXRlKTpub3QoI2ZpbHRlci1wZW5kaW5nKTpub3QoI2ZpbHRlci1tb2RlcmF0aW9uKScpLmZpbmQoJy5pY29uLCAuY2hlY2tib3gtd3JhcHBlcicpLmNsaWNrKGZ1bmN0aW9uKGUpXG4gICAgeyAgICBcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuXG4gICAgICBsZXQgb3B0aW9uSWQgPSAkKHRoaXMpLmNsb3Nlc3QoJy5zdWJjYXRlZ29yaWUtb3B0aW9uLWl0ZW0nKS5hdHRyKCdkYXRhLW9wdGlvbi1pZCcpO1xuICAgICAgQXBwLnRheG9ub215TW9kdWxlLmdldE9wdGlvbkJ5SWQob3B0aW9uSWQpLnRvZ2dsZSgpO1xuICAgIH0pO1xuICB9XG5cbiAgc2V0TWFpbk9wdGlvbihvcHRpb25JZClcbiAge1xuICAgIGlmICh0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQgPT0gb3B0aW9uSWQpIHJldHVybjtcblxuICAgIGlmICh0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQgIT0gbnVsbCkgQXBwLmVsZW1lbnRzTW9kdWxlLmNsZWFyQ3VycmVudHNFbGVtZW50KCk7XG5cbiAgICBsZXQgb2xkSWQgPSB0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQ7XG4gICAgdGhpcy5jdXJyZW50QWN0aXZlTWFpbk9wdGlvbklkID0gb3B0aW9uSWQ7XG5cbiAgICBpZiAob3B0aW9uSWQgPT0gJ2FsbCcpXG4gICAge1xuICAgICAgJCgnI21lbnUtc3ViY2F0ZWdvcmllcy10aXRsZScpLnRleHQoXCJUb3VzIGxlcyBcIiArIEFwcC5jb25maWcudGV4dC5lbGVtZW50UGx1cmFsKTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIGxldCBtYWluT3B0aW9uID0gQXBwLnRheG9ub215TW9kdWxlLmdldE1haW5PcHRpb25CeUlkKG9wdGlvbklkKTsgICAgICAgIFxuXG4gICAgICAkKCcjbWVudS1zdWJjYXRlZ29yaWVzLXRpdGxlJykudGV4dChtYWluT3B0aW9uLm5hbWUpO1xuICAgIH1cblxuICAgIHRoaXMudXBkYXRlTWFpbk9wdGlvbkJhY2tncm91bmQoKTtcblxuICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LmhpZGUoKTtcblxuICAgIC8vY29uc29sZS5sb2coXCJzZXRNYWluT3B0aW9uSWQgXCIgKyBvcHRpb25JZCArIFwiIC8gb2xkT3B0aW9uIDogXCIgKyBvbGRJZCk7XG4gICAgaWYgKG9sZElkICE9IG51bGwpIEFwcC5oaXN0b3J5TW9kdWxlLnVwZGF0ZUN1cnJTdGF0ZSgpO1xuXG4gICAgc2V0VGltZW91dCggKCkgPT4ge1xuICAgICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnJlSW5pdGlhbGl6ZUVsZW1lbnRUb0Rpc3BsYXlMZW5ndGgoKTtcbiAgICBcbiAgICAgIEFwcC5ib3VuZHNNb2R1bGUudXBkYXRlRmlsbGVkQm91bmRzQWNjb3JkaW5nVG9OZXdNYWluT3B0aW9uSWQoKTtcbiAgICAgIEFwcC5lbGVtZW50c01hbmFnZXIuY2hlY2tGb3JOZXdFbGVtZW50c1RvUmV0cmlldmUoKTtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlLHRydWUpO1xuICAgIH0sIDQwMCk7ICAgIFxuICB9XG5cbiAgLy8gdGhlIG1haW4gb3B0aW9uIHNlbGVjdGVkIGdvdCBhIHNwZWNpZmljIGJhY2tncm91bmQsIHdobyBjYW4gdmVydGljYWxseSB0cmFuc2xhdGVcbiAgdXBkYXRlTWFpbk9wdGlvbkJhY2tncm91bmQoKVxuICB7XG4gICAgbGV0IG9wdGlvbklkID0gdGhpcy5jdXJyZW50QWN0aXZlTWFpbk9wdGlvbklkOyAgICBcblxuICAgICQoJy5tYWluLW9wdGlvbi1zdWJjYXRlZ29yaWVzLWNvbnRhaW5lcjpub3QoI21haW4tb3B0aW9uLScgKyBvcHRpb25JZCArICcpJykuaGlkZSgpO1xuICAgICQoJyNtYWluLW9wdGlvbi0nICsgb3B0aW9uSWQpLmZhZGVJbig0MDApO1xuXG4gICAgJCgnLm1haW4tY2F0ZWdvcmllcyAubWFpbi1pY29uJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1xuICAgICQoJyNtYWluLW9wdGlvbi1nb2dvLWljb24tJyArIG9wdGlvbklkKS5hZGRDbGFzcygnYWN0aXZlJyk7XG5cbiAgICBpZighJCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgb3B0aW9uSWQpLnBvc2l0aW9uKCkpIHsgcmV0dXJuOyB9XG5cbiAgICAkKCcjYWN0aXZlLW1haW4tb3B0aW9uLWJhY2tncm91bmQnKS5hbmltYXRlKHt0b3A6ICQoJyNtYWluLW9wdGlvbi1nb2dvLWljb24tJyArIG9wdGlvbklkKS5wb3NpdGlvbigpLnRvcH0sIDQwMCwgJ2Vhc2VPdXRRdWFydCcpO1xuICB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5kZWNsYXJlIGxldCBncmVjYXB0Y2hhO1xuZGVjbGFyZSB2YXIgJCA6IGFueTtcbmRlY2xhcmUgbGV0IFJvdXRpbmcgOiBhbnk7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG5pbXBvcnQgeyBjYXBpdGFsaXplLCBzbHVnaWZ5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBTdGFtcENvbXBvbmVudCB9IGZyb20gJy4vc3RhbXAuY29tcG9uZW50JztcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRNZW51Q29tcG9uZW50XG57XG5cdHByaXZhdGUgZG9tO1xuXHRwcml2YXRlIGVsZW1lbnQgOiBFbGVtZW50O1xuXG5cdGNvbnN0cnVjdG9yKGRvbSA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQpXG5cdHtcblx0XHR0aGlzLmRvbSA9ICQoZG9tKTsgIFxuXHRcdHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cdFx0dGhpcy5pbml0aWFsaXplKCk7XG5cdFx0dGhpcy51cGRhdGVGYXZvcml0ZUljb24oKTtcblx0fVxuXG5cdHVwZGF0ZUZhdm9yaXRlSWNvbigpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1hZGQtZmF2b3JpdGUnKS50b2dnbGUoIXRoaXMuZWxlbWVudC5pc0Zhdm9yaXRlKTtcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1yZW1vdmUtZmF2b3JpdGUnKS50b2dnbGUodGhpcy5lbGVtZW50LmlzRmF2b3JpdGUpO1xuXHR9XG5cblx0c2hvd0Z1bGxUZXh0TWVudShib29sIDogYm9vbGVhbilcblx0e1xuXHRcdGlmIChib29sKVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmFkZENsYXNzKFwiZnVsbC10ZXh0XCIpO1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLnRvb2x0aXBwZWQnKS50b29sdGlwKCdyZW1vdmUnKTtcdFxuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20ucmVtb3ZlQ2xhc3MoXCJmdWxsLXRleHRcIik7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSBpbml0aWFsaXplKClcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJy50b29sdGlwcGVkJykudG9vbHRpcCgpO1x0XHRcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cdFx0XG5cdFx0Ly8gU1RBTVBTXG5cdFx0dGhpcy5kb20uZmluZCgnLml0ZW0tc3RhbXAnKS5lYWNoKCgpID0+IHsgbmV3IFN0YW1wQ29tcG9uZW50KHRoaXMsIHRoYXQuZWxlbWVudCk7IH0pO1xuXG5cdFx0Ly8gREVMRVRFXG5cdFx0dGhpcy5kb20uZmluZCgnLml0ZW0tZGVsZXRlJykuY2xpY2soKCkgPT4geyBBcHAuZGVsZXRlQ29tcG9uZW50Lm9wZW4odGhpcy5lbGVtZW50KTsgfSk7XG5cblx0XHQvLyBSRVBPUlRcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1yZXBvcnQnKS5jbGljaygoKSA9PiB7IEFwcC5yZXBvcnRDb21wb25lbnQub3Blbih0aGlzLmVsZW1lbnQpOyB9KTtcblxuXHRcdC8vIERJUkVDVElPTlNcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1kaXJlY3Rpb25zJykuY2xpY2soKCkgPT5cblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcubWVudS1pY29uJykuaGlkZVRvb2x0aXAoKTtcblxuXHRcdFx0aWYgKCFBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSkgQXBwLnBpY2tBZGRyZXNzQ29tcG9uZW50Lm9wZW4odGhpcy5lbGVtZW50KTtcblx0XHRcdGVsc2UgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucyx7aWQ6IHRoaXMuZWxlbWVudC5pZH0pO1xuXHRcdH0pO1xuXG5cdFx0Ly8gU0hPVyBPTiBNQVBcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1zaG93LW9uLW1hcCcpLmNsaWNrKCgpID0+IFxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5tZW51LWljb24nKS5oaWRlVG9vbHRpcCgpO1xuXHRcdFx0QXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RWxlbWVudCAse2lkOiB0aGlzLmVsZW1lbnQuaWR9KTtcblx0XHR9KTtcblxuXHRcdC8vIFNIQVJFXG5cdFx0dGhpcy5kb20uZmluZCgnLml0ZW0tc2hhcmUnKS5jbGljaygoKSA9PlxuXHRcdHtcdFx0XG5cdFx0XHRsZXQgbW9kYWwgPSAkKCcjbW9kYWwtc2hhcmUtZWxlbWVudCcpO1xuXHRcdFx0bW9kYWwuZmluZChcIi5tb2RhbC1mb290ZXJcIikuYXR0cignb3B0aW9uLWlkJywgdGhpcy5lbGVtZW50LmNvbG9yT3B0aW9uSWQpO1xuXG5cdFx0XHRsZXQgdXJsID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZSBcblx0XHRcdHVybCArPSBBcHAucm91dGVyTW9kdWxlLmdlbmVyYXRlKCdzaG93X2VsZW1lbnQnLCB7IG5hbWUgOiAgY2FwaXRhbGl6ZShzbHVnaWZ5KHRoaXMuZWxlbWVudC5uYW1lKSksIGlkIDogdGhpcy5lbGVtZW50LmlkIH0sIHRydWUpO1x0XG5cblx0XHRcdG1vZGFsLmZpbmQoJy5pbnB1dC1zaW1wbGUtbW9kYWwnKS52YWwodXJsKTtcblx0XHRcdG1vZGFsLm9wZW5Nb2RhbCgpO1xuXHRcdH0pO1x0XG5cdFx0XG5cdFx0Ly8gRkFWT1JJVEVcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1hZGQtZmF2b3JpdGUnKS5jbGljaygoKSA9PiBcblx0XHR7XG5cdFx0XHRBcHAuZmF2b3JpdGVNb2R1bGUuYWRkRmF2b3JpdGUodGhpcy5lbGVtZW50LmlkKTtcblx0XHRcdHRoaXMudXBkYXRlRmF2b3JpdGVJY29uKCk7XG5cdFx0XHRpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQubWFya2VyLnVwZGF0ZSgpO1xuXHRcdFx0XHR0aGlzLmVsZW1lbnQubWFya2VyLmFuaW1hdGVEcm9wKCk7XHRcdFx0XG5cdFx0XHR9XHRcdFx0XG5cdFx0fSk7XHRcdFxuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLXJlbW92ZS1mYXZvcml0ZScpLmNsaWNrKCgpID0+IFxuXHRcdHtcdFx0XG5cdFx0XHRBcHAuZmF2b3JpdGVNb2R1bGUucmVtb3ZlRmF2b3JpdGUodGhpcy5lbGVtZW50LmlkKTtcdFx0XHRcblx0XHRcdHRoaXMudXBkYXRlRmF2b3JpdGVJY29uKCk7XG5cdFx0XHRpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwKSB0aGlzLmVsZW1lbnQubWFya2VyLnVwZGF0ZSgpO1xuXHRcdH0pO1x0XG5cdH1cdFxufVxuIiwiICBpbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgRWxlbWVudFN0YXR1cywgRWxlbWVudE1vZGVyYXRpb25TdGF0ZSB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEltYWdlc0NvbXBvbmVudCB9IGZyb20gJy4vaW1hZ2VzLmNvbXBvbmVudCc7XG5pbXBvcnQgeyBFbGVtZW50TWVudUNvbXBvbmVudCB9IGZyb20gXCIuL2VsZW1lbnQtbWVudS5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1vZGVyYXRpb25Db21wb25lbnQgfSBmcm9tICcuLi9lbGVtZW50L21vZGVyYXRpb24uY29tcG9uZW50JztcbmltcG9ydCB7IEludGVyYWN0aXZlU2VjdGlvbkNvbXBvbmVudCB9IGZyb20gJy4vaW50ZXJhY3RpdmUtc2VjdGlvbi5jb21wb25lbnQnO1xuZGVjbGFyZSB2YXIgJDtcbmRlY2xhcmUgdmFyIG51bmp1Y2tzO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudENvbXBvbmVudFxue1xuICBlbGVtZW50IDogRWxlbWVudDsgIFxuICBpbWFnZXNDb21wb25lbnQgOiBJbWFnZXNDb21wb25lbnQ7XG4gIG1lbnVDb21wb25lbnQgOiBFbGVtZW50TWVudUNvbXBvbmVudDtcbiAgbW9kZXJhdGlvbkNvbXBvbmVudCA6IE1vZGVyYXRpb25Db21wb25lbnQ7XG4gIGludGVyYWN0aXZlQ29tcG9uZW50IDogSW50ZXJhY3RpdmVTZWN0aW9uQ29tcG9uZW50O1xuXG4gIGNvbnN0cnVjdG9yKGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIC8vIHVzZSB0ZW1wbGF0ZSBqcyB0byBjcmVhdGUgdGhlIGh0bWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVsZW1lbnRcbiAgLy8gdGhlbiB0aGlzIGh0bWwgcmVwcmVzZW50YXRpb24gaXMgaW5zZXJ0ZWQgaW4gdGhlIGRvbSBieSBhbm90aGVyIGNvbXBvbmVudCAobGlrZSBpbmZvLWJhciwgb3IgbGlzdCBjb21wb25lbnQpXG4gIHJlbmRlcigpIFxuICB7ICBcbiAgICBpZiAoIXRoaXMuZWxlbWVudC5pc0Z1bGx5TG9hZGVkKSB7IHJldHVybjsgfVxuXG4gICAgdGhpcy5lbGVtZW50LnVwZGF0ZSgpO1xuICAgIHRoaXMuZWxlbWVudC51cGRhdGVEaXN0YW5jZSgpO1xuXG4gICAgbGV0IG9wdGlvbnNUb0Rpc3BsYXkgPSB0aGlzLmVsZW1lbnQuZ2V0SWNvbnNUb0Rpc3BsYXkoKTtcblxuICAgIGxldCByb290Q2F0ZWdvcmllc1ZhbHVlcztcbiAgICBpZiAodGhpcy5lbGVtZW50LnN0YXR1cyA9PSBFbGVtZW50U3RhdHVzLlBlbmRpbmdNb2RpZmljYXRpb24gJiYgdGhpcy5lbGVtZW50Lm1vZGlmaWVkRWxlbWVudCkgIFxuICAgICAgcm9vdENhdGVnb3JpZXNWYWx1ZXMgPSB0aGlzLmVsZW1lbnQubW9kaWZpZWRFbGVtZW50LmdldFJvb3RDYXRlZ29yaWVzVmFsdWVzKCk7XG4gICAgZWxzZVxuICAgICAgcm9vdENhdGVnb3JpZXNWYWx1ZXMgPSB0aGlzLmVsZW1lbnQuZ2V0Um9vdENhdGVnb3JpZXNWYWx1ZXMoKTtcbiAgICBcbiAgICBsZXQgb3B0aW9ucyA9IHtcbiAgICAgIGVsZW1lbnQgOiB0aGlzLmVsZW1lbnQsIFxuICAgICAgc2hvd0Rpc3RhbmNlOiBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSA/IHRydWUgOiBmYWxzZSxcbiAgICAgIGxpc3RpbmdNb2RlOiBBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0LCBcbiAgICAgIG9wdGlvbnNUb0Rpc3BsYXk6IG9wdGlvbnNUb0Rpc3BsYXksXG4gICAgICBtYWluT3B0aW9uVG9EaXNwbGF5OiBvcHRpb25zVG9EaXNwbGF5WzBdLCBcbiAgICAgIG90aGVyT3B0aW9uc1RvRGlzcGxheTogb3B0aW9uc1RvRGlzcGxheS5zbGljZSgxKSwgIFxuICAgICAgY3Vyck9wdGlvbnNWYWx1ZXM6IHRoaXMuZWxlbWVudC5nZXRDdXJyRGVlcGVzdE9wdGlvbnNWYWx1ZXMoKS5maWx0ZXIoIChvVikgPT4gb1Yub3B0aW9uLmRpc3BsYXlJbkluZm9CYXIpLnNvcnQoIChhLGIpID0+IGEuaXNGaWxsZWRCeUZpbHRlcnMgPyAtMSA6IDEpLCAgICAgIFxuICAgICAgcm9vdENhdGVnb3JpZXNWYWx1ZXMgOiByb290Q2F0ZWdvcmllc1ZhbHVlcyxcbiAgICAgIGVkaXRVcmwgOiBBcHAuY29uZmlnLmZlYXR1cmVzLmVkaXQudXJsICsgdGhpcy5lbGVtZW50LmlkLFxuICAgICAgRWxlbWVudFN0YXR1czogRWxlbWVudFN0YXR1cyxcbiAgICAgIEVsZW1lbnRNb2RlcmF0aW9uU3RhdGU6IEVsZW1lbnRNb2RlcmF0aW9uU3RhdGUsXG4gICAgICBpc0lmcmFtZSA6IEFwcC5pc0lmcmFtZSxcbiAgICAgIGlzTWFwTW9kZSA6IEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCxcbiAgICAgIGNvbmZpZyA6IEFwcC5jb25maWcsXG4gICAgICBzbWFsbFdpZHRoIDogQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwICYmIEFwcC5pbmZvQmFyQ29tcG9uZW50LmlzRGlzcGxheWVkQXNpZGUoKSxcbiAgICAgIGFsbG93ZWRTdGFtcHMgOiBBcHAuc3RhbXBNb2R1bGUuYWxsb3dlZFN0YW1wcyxcbiAgICAgIGJvZHkgOiB1bmRlZmluZWRcbiAgICB9O1xuXG4gICAgLy8gSWYgdGhlcmUgaXMgYSBib2R5IHRlbXBsYXRlIGNvbmZpZ3VyZWQsIHRoZW4gd2UgdXNlIGl0LiBXZSB1c2UgdGhlIGRlZmF1bHQgYm9keSBvdGhlcndpc2UuXG4gICAgaWYgKEFwcC5jb25maWcuaW5mb2Jhci5ib2R5VGVtcGxhdGUpIFxuICAgIHtcbiAgICAgIG9wdGlvbnMuYm9keSA9IG51bmp1Y2tzLnJlbmRlclN0cmluZyhBcHAuY29uZmlnLmluZm9iYXIuYm9keVRlbXBsYXRlLCB0aGlzLmVsZW1lbnQpO1xuICAgICAgb3B0aW9ucy5ib2R5ID0gb3B0aW9ucy5ib2R5LnJlcGxhY2UoLyZhbXA7L2csIFwiJlwiKS5yZXBsYWNlKC8mZ3Q7L2csIFwiPlwiKS5yZXBsYWNlKC8mbHQ7L2csIFwiPFwiKS5yZXBsYWNlKC8mcXVvdDsvZywgJ1wiJyk7XG4gICAgfVxuICAgIGVsc2Ugb3B0aW9ucy5ib2R5ID0gbnVuanVja3MucmVuZGVyKCdjb21wb25lbnRzL2VsZW1lbnQvYm9keS5odG1sLm5qaycsIG9wdGlvbnMpO1xuXG4gICAgbGV0IGh0bWwgPSBBcHAudGVtcGxhdGVNb2R1bGUucmVuZGVyKCdlbGVtZW50Jywgb3B0aW9ucyk7XG5cbiAgICByZXR1cm4gaHRtbDtcbiAgfTtcblxuICBnZXQgZG9tKCkgeyByZXR1cm4gQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdCA/ICQoYCNkaXJlY3RvcnktY29udGVudC1saXN0ICNlbGVtZW50LWluZm8tJHt0aGlzLmVsZW1lbnQuaWR9YCkgOiAkKGAjZWxlbWVudC1pbmZvLSR7dGhpcy5lbGVtZW50LmlkfWApOyB9XG5cbiAgLy8gb25jZSB0aGUgaHRtbCByZW5kZXJlZCBpcyBpbnNlcnRlZCBpbiB0aGUgZG9tLCB3ZSBuZWVkIHRvIGNhbGwgdGhpcyBtZXRob2QgdG8gaW5pdGlhbGl6IHZhcmlvdXMgaW50ZXJhY3Rpb25zIGFuZCBzdWJjb21wb25lbnRzXG4gIGluaXRpYWxpemUoKVxuICB7XG4gICAgdGhpcy5pbWFnZXNDb21wb25lbnQgPSBuZXcgSW1hZ2VzQ29tcG9uZW50KHRoaXMuZG9tLCB0aGlzLmVsZW1lbnQpOyAgICBcbiAgICB0aGlzLm1lbnVDb21wb25lbnQgPSBuZXcgRWxlbWVudE1lbnVDb21wb25lbnQodGhpcy5kb20uZmluZCgnLm1lbnUtZWxlbWVudCcpLCB0aGlzLmVsZW1lbnQpO1xuICAgIHRoaXMubW9kZXJhdGlvbkNvbXBvbmVudCA9IG5ldyBNb2RlcmF0aW9uQ29tcG9uZW50KHRoaXMuZG9tLmZpbmQoJy5pbnRlcmFjdGl2ZS1zZWN0aW9uJyksIHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5pbnRlcmFjdGl2ZUNvbXBvbmVudCA9IG5ldyBJbnRlcmFjdGl2ZVNlY3Rpb25Db21wb25lbnQodGhpcy5kb20uZmluZCgnLmludGVyYWN0aXZlLXNlY3Rpb24nKSwgdGhpcy5lbGVtZW50KTtcblxuICAgIHRoaXMuZG9tLmZpbmQoJy5zZW5kLW1haWwtYnRuJykuY2xpY2soICgpID0+IEFwcC5zZW5kRW1haWxDb21wb25lbnQub3Blbih0aGlzLmVsZW1lbnQpKTtcblxuICAgIC8vIFNIT1cgTE9ORyBERVNDUklQVElPTiBCVVRUT05cbiAgICB0aGlzLmRvbS5maW5kKCcuc2hvdy1tb3JlLWRlc2NyaXB0aW9uJykuY2xpY2soIGZ1bmN0aW9uKCkgXG4gICAgeyBcbiAgICAgIGxldCBkZXNjcmlwdGlvbk1vcmUgPSAkKHRoaXMpLnNpYmxpbmdzKCcuZGVzY3JpcHRpb24tbW9yZScpO1xuICAgICAgbGV0IHRleHRCdXR0b24gPSBkZXNjcmlwdGlvbk1vcmUuaXMoXCI6dmlzaWJsZVwiKSA/IFwiQWZmaWNoZXIgcGx1c1wiIDogXCJBZmZpY2hlciBtb2luc1wiO1xuICAgICAgZGVzY3JpcHRpb25Nb3JlLnRvZ2dsZSgpOyAgICBcbiAgICAgICQodGhpcykudGV4dCh0ZXh0QnV0dG9uKTtcbiAgICB9KTtcblxuICAgIC8vIElOSVQgVEFCUyAoZm9yIGFkbWluIHNlY3Rpb24pXG4gICAgc2V0VGltZW91dCggKCkgPT4geyB0aGlzLmRvbS5maW5kKCcuaW5mby1iYXItdGFicycpLnRhYnMoKTsgfSwgMTAwKTtcbiAgfVxuXG4gIGFkZEZsYXNoTWVzc2FnZShtZXNzYWdlKSB7IHRoaXMuaW50ZXJhY3RpdmVDb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKG1lc3NhZ2UpOyB9XG59IiwiZGVjbGFyZSB2YXIgJCA6IGFueTtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEVsZW1lbnQsIEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5leHBvcnQgY2xhc3MgSW1hZ2VzQ29tcG9uZW50XG57XG4gIHByaXZhdGUgZG9tO1xuICBwcml2YXRlIGVsZW1lbnQgOiBFbGVtZW50O1xuXG4gIGluZGV4Q3VycmVudEltYWdlIDogbnVtYmVyID0gMDtcbiAgZG9tSW1hZ2VzIDogYW55O1xuICBvbk5ld0ltYWdlRGlzcGxheWVkID0gbmV3IEV2ZW50PGFueT4oKTtcblxuICBjb25zdHJ1Y3Rvcihkb20gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5kb20gPSAkKGRvbSk7ICBcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBnZXQgY3VycmVudEltYWdlKCkgeyByZXR1cm4gdGhpcy5kb21JbWFnZXMgPyB0aGlzLmRvbUltYWdlcy5lcSh0aGlzLmluZGV4Q3VycmVudEltYWdlKSA6IG51bGw7IH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKVxuICB7XG4gICAgaWYgKHRoaXMuZWxlbWVudC5pbWFnZXMubGVuZ3RoID4gMCkgdGhpcy5pbml0SW1hZ2VzKCk7XG4gICAgaWYgKHRoaXMuZWxlbWVudC5pbWFnZXMubGVuZ3RoID4gMSkgdGhpcy5pbml0TmF2aWdhdGlvbkJ1dHRvbnMoKTtcbiAgfSAgXG5cbiAgcHJpdmF0ZSBpbml0SW1hZ2VzKClcbiAge1xuICAgIHRoaXMuZG9tSW1hZ2VzID0gdGhpcy5kb20uZmluZCgnLmltZy1jb250YWluZXIgaW1nJyk7ICBcbiAgICAvLyBmaXJzdCB1cGRhdGUgdG8gZGlzcGxheSBmaXJzdCBpbWFnZVxuICAgIHRoaXMudXBkYXRlSW1hZ2UoKTtcblxuICAgIC8vIERpc3BsYXkgYmlnZ2VyIGltYWdlIGluIGEgbW9kYWwgb24gY2xpY2tcbiAgICB0aGlzLmRvbS5maW5kKCcuaW1nLWNsaWNrYWJsZS1hcmVhJykuY2xpY2soKCkgPT5cbiAgICB7XG4gICAgICAvLyBkb24ndCBkaXNwbGF5IG1vZGFsIGluIHNtYWxsIHNjcmVlblxuICAgICAgaWYgKEFwcC5jb21wb25lbnQud2lkdGgoKSA8IDgwMCkgcmV0dXJuO1xuICAgICAgXG4gICAgICAvLyBXaGVuIHRoZSB1c2VyIGNsaWNrcyB0aGUgaW1hZ2UsIG9wZW5zIGEgbmV3IG1vZGFsIHdpdGggdGhlIGltYWdlXG4gICAgICBsZXQgbW9kYWwgPSAkKCcjbW9kYWwtaW1hZ2UnKTtcbiAgICAgIG1vZGFsLmZpbmQoXCIubW9kYWwtZm9vdGVyXCIpLmF0dHIoJ29wdGlvbi1pZCcsIHRoaXMuZWxlbWVudC5jb2xvck9wdGlvbklkKTtcbiAgICAgIG1vZGFsLmZpbmQoJ2ltZycpLmF0dHIoJ3NyYycsIHRoaXMuY3VycmVudEltYWdlWzBdLnNyYyk7XG4gICAgICBtb2RhbC5vcGVuTW9kYWwoKTtcbiAgICB9KTsgICBcbiAgfVxuXG4gIHByaXZhdGUgaW5pdE5hdmlnYXRpb25CdXR0b25zKClcbiAge1xuICAgIGxldCBuYXZCdG5zID0gdGhpcy5kb20uZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5uZXh0LCAuaW1nLW5hdmlnYXRpb24tYnRuLnByZXYnKTtcbiAgICBuYXZCdG5zLmNzcygnb3BhY2l0eScsIDApLnNob3coKS5hbmltYXRlKHtvcGFjaXR5OiAxfSwgMzAwKTtcblxuICAgIC8vIG5hdmlnYXRpb24gdGhyb3VnaHQgaW1hZ2VzXG4gICAgdGhpcy5kb20uZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5uZXh0JykuY2xpY2soKCkgPT4ge1xuICAgICAgdGhpcy5pbmRleEN1cnJlbnRJbWFnZSsrO1xuICAgICAgdGhpcy51cGRhdGVJbWFnZSgpO1xuICAgIH0pO1xuXG4gICAgdGhpcy5kb20uZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5wcmV2JykuY2xpY2soKCkgPT4ge1xuICAgICAgdGhpcy5pbmRleEN1cnJlbnRJbWFnZS0tO1xuICAgICAgdGhpcy51cGRhdGVJbWFnZSgpO1xuICAgIH0pOyAgICAgICBcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSW1hZ2UoKVxuICB7ICAgICAgICAgIFxuICAgIC8vIG1vZHVsbyBpbmRleCBpbnNpZGUgcHJvcGVyIHJhbmdlXG4gICAgdGhpcy5pbmRleEN1cnJlbnRJbWFnZSA9ICh0aGlzLmluZGV4Q3VycmVudEltYWdlICsgdGhpcy5lbGVtZW50LmltYWdlcy5sZW5ndGgpICUgdGhpcy5lbGVtZW50LmltYWdlcy5sZW5ndGg7XG4gICAgLy8gSGlkZSBhbGwgaW1hZ2VzXG4gICAgdGhpcy5kb21JbWFnZXMuY3NzKCdkaXNwbGF5JywgJ25vbmUnKTtcbiAgICAvLyBEaXNwbGF5IHRoZSBpbWFnZSBvZiB0aGUgZ2l2ZW4gaW5kZXhcbiAgICB0aGlzLmN1cnJlbnRJbWFnZS5jc3MoJ2Rpc3BsYXknLCAnYmxvY2snKTsgICAgICAgIFxuXG4gICAgLy8gdHJpZ2dlciBldmVudCB0byB3YXJuIG90aGVyIGNvbXBvbmVudHMgdGhhdCBpbWFnZSBhcyBjaGFuZ2VkXG4gICAgaWYgKHRoaXMuY3VycmVudEltYWdlLmhlaWdodCgpKSB0aGlzLm9uSW1hZ2VEaXNwbGF5ZWQoKTsgICAgXG4gICAgZWxzZSB0aGlzLmN1cnJlbnRJbWFnZS5sb2FkKCgpID0+IHsgdGhpcy5vbkltYWdlRGlzcGxheWVkKCk7IH0pOyAgICAgIFxuICB9O1xuXG4gIHByaXZhdGUgb25JbWFnZURpc3BsYXllZCgpXG4gIHtcbiAgICB0aGlzLm9uTmV3SW1hZ2VEaXNwbGF5ZWQuZW1pdCh0aGlzLmN1cnJlbnRJbWFnZSk7XG4gICAgdGhpcy52ZXJ0aWNhbEFsaWduQ3VycmVudEltYWdlKCk7XG4gIH1cblxuICB2ZXJ0aWNhbEFsaWduQ3VycmVudEltYWdlKClcbiAge1xuICAgIGlmICghdGhpcy5jdXJyZW50SW1hZ2UpIHJldHVybjtcblxuICAgIGxldCBpbWdCYW5uZXJIZWlnaHQgPSB0aGlzLmRvbS5maW5kKCcuaW1nLW92ZXJsYXknKS5oZWlnaHQoKTtcbiAgICAvLyBpZiBjb21wb25lbnQgbm90IHlldCBsb2FkZWQsIHRpbWVvdXQgdGhlIHVwZGF0ZVxuICAgIGlmIChpbWdCYW5uZXJIZWlnaHQgPT0gMCkge1xuICAgICAgc2V0VGltZW91dCggKCkgPT4gdGhpcy52ZXJ0aWNhbEFsaWduQ3VycmVudEltYWdlKCksIDEwMCk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHRoaXMuY3VycmVudEltYWdlLmNzcygnbWFyZ2luLXRvcCcsIDApO1xuICAgIGxldCBtYXJnaW5Ub3AgPSAoaW1nQmFubmVySGVpZ2h0IC0gdGhpcy5jdXJyZW50SW1hZ2UuaGVpZ2h0KCkpIC8gMjtcbiAgICBpZiAobWFyZ2luVG9wID4gMCkgbWFyZ2luVG9wID0gMDtcbiAgICB0aGlzLmN1cnJlbnRJbWFnZS5hbmltYXRlKHttYXJnaW5Ub3A6IGAke21hcmdpblRvcH1weGB9LCA0MDApO1xuICB9XG59IiwiZGVjbGFyZSB2YXIgJCA6IGFueTtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEVsZW1lbnQsIEVsZW1lbnRTdGF0dXMgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBJbnRlcmFjdGl2ZVNlY3Rpb25Db21wb25lbnRcbntcbiAgcHJpdmF0ZSBkb207XG4gIHByaXZhdGUgZWxlbWVudCA6IEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZG9tIDogYW55LCBlbGVtZW50IDogRWxlbWVudClcbiAge1xuICAgIHRoaXMuZG9tID0gJChkb20pOyBcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OyAgXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBhZGRGbGFzaE1lc3NhZ2UobWVzc2FnZSlcbiAge1xuICAgIHRoaXMuZG9tLmZpbmQoXCIubW9kZXJhdGlvbi1zZWN0aW9uXCIpLmZpbmQoJy5iYXNpYy1tZXNzYWdlJykuaGlkZSgpOyBcbiAgICB0aGlzLmRvbS5maW5kKCcucmVzdWx0LW1lc3NhZ2UnKS5odG1sKG1lc3NhZ2UpLnNob3coKTtcbiAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93KCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKVxuICB7XG4gICAgLy8gb3BlbiBhIG1vZGFsIGNvbnRhaW5pbmcgZGVzY3JpcHRpb24gb2YgdGhlIHZhbGlkYXRpb24gcHJvY2Vzc1xuICAgIHRoaXMuZG9tLmZpbmQoJy52YWxpZGF0aW9uLXByb2Nlc3MtaW5mbycpLmNsaWNrKCAoZSkgPT4gXG4gICAge1xuICAgICAgJChcIiNtb2RhbC1jb250cmlidXRpb25cIikub3Blbk1vZGFsKCk7ICBcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbS5maW5kKFwiLnZvdGUtYnV0dG9uXCIpLmNsaWNrKCAoZSkgPT5cbiAgICB7XG4gICAgICAvLyByZXN0cmljdCB2b3RlIHRvIHNwZWNpZmljIHJvbGVzXG4gICAgICBpZiAoIUFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCd2b3RlJykpIFxuICAgICAge1xuICAgICAgICBBcHAubG9naW5Nb2R1bGUubG9naW5BY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBBcHAudm90ZUNvbXBvbmVudC5vcGVuKHRoaXMuZWxlbWVudCk7ICAgICAgIFxuICAgICAgfSAgICAgIFxuXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpOyBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpOyBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfSk7ICAgXG4gIH1cbn1cblxuIiwiZGVjbGFyZSB2YXIgJCA6IGFueTtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBNb2RlcmF0aW9uQ29tcG9uZW50XG57XG4gIHByaXZhdGUgZG9tO1xuICBwcml2YXRlIGVsZW1lbnQgOiBFbGVtZW50O1xuXG4gIGNvbnN0cnVjdG9yKGRvbSA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmRvbSA9ICQoZG9tKTsgXG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDsgIFxuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBpbml0aWFsaXplKClcbiAge1xuICAgIC8vIHZvdGUtYnV0dG9uIGlzIGxvY2F0ZWQgb24gdGhlIGVsZW1lbnQtaW5mby1iYXIgb2YgYSBwZW5kaW5nIGVsZW1lbnRcbiAgICB2YXIgdGhhdCA9IHRoaXM7XG4gICAgdGhpcy5kb20uZmluZChcIi5tYXJrLWFzLW1vZGVyYXRlZC1idG5cIikuY2xpY2soIGZ1bmN0aW9uKGUpXG4gICAge1xuICAgICAgLy8gcmVzdHJpY3Qgdm90ZSB0byBzcGVjaWZpYyByb2xlc1xuICAgICAgaWYgKCFBcHAuY29uZmlnLmlzRmVhdHVyZUF2YWlsYWJsZSgnbW9kZXJhdGlvbicpKSBcbiAgICAgIHtcbiAgICAgICAgQXBwLmxvZ2luTW9kdWxlLmxvZ2luQWN0aW9uKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgbGV0IGNvbW1lbnQgPSAkKHRoaXMpLnNpYmxpbmdzKCcubW9kZXJhdGlvbi1pbnB1dC1jb21tZW50JykudmFsKCk7ICAgICAgIFxuICAgICAgICBsZXQgcm91dGUgPSBBcHAuY29uZmlnLmZlYXR1cmVzLm1vZGVyYXRpb24udXJsO1xuICAgICAgICBsZXQgZGF0YSA9IHsgZWxlbWVudElkOiB0aGF0LmVsZW1lbnQuaWQsIGNvbW1lbnQ6IGNvbW1lbnQgfTtcbiAgICAgICAgXG4gICAgICAgIEFwcC5hamF4TW9kdWxlLnNlbmRSZXF1ZXN0KHJvdXRlLCAncG9zdCcsIGRhdGEsIChyZXNwb25zZSkgPT5cbiAgICAgICAgeyAgICAgICAgXG4gICAgICAgICAgbGV0IHJlc3BvbnNlTWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG4gICAgICAgICAgbGV0IHN1Y2Nlc3MgPSByZXNwb25zZS5zdWNjZXNzO1xuICAgICAgICAgIFxuICAgICAgICAgIHRoYXQuZWxlbWVudC51cGRhdGUodHJ1ZSk7XG4gICAgICAgICAgdGhhdC5lbGVtZW50LmlzRnVsbHlMb2FkZWQgPSBmYWxzZTtcblxuICAgICAgICAgIC8vIHJlbG9hZCBFbGVtZW50LCBhbmQgYWRkIGZsYXNoIG1lc3NhZ2VcbiAgICAgICAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudCh0aGF0LmVsZW1lbnQuaWQsICgpID0+IHtcbiAgICAgICAgICAgIHRoYXQuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhhdC5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTsgICAgICAgIFxuICAgICAgICB9LFxuICAgICAgICAoZXJyb3JNZXNzYWdlKSA9PiBcbiAgICAgICAge1xuICAgICAgICAgIHRoYXQuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKGVycm9yTWVzc2FnZSk7ICBcbiAgICAgICAgfSk7ICBcbiAgICAgIH0gICAgICBcblxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO2UucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcbiAgfVxufVxuXG4iLCJkZWNsYXJlIHZhciAkIDogYW55O1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuZXhwb3J0IGNsYXNzIFN0YW1wQ29tcG9uZW50XG57XG4gIHByaXZhdGUgZG9tO1xuICBwcml2YXRlIGVsZW1lbnQgOiBFbGVtZW50O1xuXG4gIHByaXZhdGUgc3RhbXBJZDtcbiAgcHJpdmF0ZSB2YWx1ZSA6IGJvb2xlYW4gPSBmYWxzZTsgLy8gd2hldGhlciB0aGUgc3RhbXAgaXMgYWN0aXZhdGVkIGZvciB0aGlzIGVsZW1lbnQgb3Igbm90ICBcblxuICBjb25zdHJ1Y3Rvcihkb20gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5kb20gPSAkKGRvbSk7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgICB0aGlzLnN0YW1wSWQgPSAgIHRoaXMuZG9tLmRhdGEoJ3N0YW1wLWlkJyk7XG4gICAgdGhpcy5zZXRWYWx1ZSh0aGlzLmVsZW1lbnQuc3RhbXBzLmluZGV4T2YodGhpcy5zdGFtcElkKSA+IC0xLCBmYWxzZSk7XG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKVxuICB7XG4gICAgdGhpcy5kb20uY2xpY2soKCkgPT4gdGhpcy5oYW5kbGVDbGljaygpKTtcbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlQ2xpY2soKVxuICB7XG4gICAgbGV0IHJvdXRlID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5zdGFtcC51cmw7XG4gICAgbGV0IGRhdGEgPSB7IGVsZW1lbnRJZDogdGhpcy5lbGVtZW50LmlkLCBzdGFtcElkOiB0aGlzLnN0YW1wSWQsIHZhbHVlOiAhdGhpcy52YWx1ZSB9O1xuXG4gICAgQXBwLmFqYXhNb2R1bGUuc2VuZFJlcXVlc3Qocm91dGUsICdwb3N0JywgZGF0YSwgKHJlc3BvbnNlKSA9PlxuICAgIHsgXG4gICAgICBpZiAocmVzcG9uc2UuZGF0YSkgdGhpcy5lbGVtZW50LnN0YW1wcyA9IHJlc3BvbnNlLmRhdGE7XG4gICAgICBpZiAocmVzcG9uc2Uuc3VjY2VzcykgdGhpcy5zZXRWYWx1ZSghdGhpcy52YWx1ZSk7ICAgICAgXG4gICAgfSk7ICAgICBcbiAgfVxuXG4gIHNldFZhbHVlKHZhbHVlIDogYm9vbGVhbiwgJGFuaW1hdGUgPSB0cnVlKVxuICB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlO1xuICAgIHRoaXMuZWxlbWVudC51cGRhdGUodHJ1ZSk7XG4gICAgdGhpcy5kb20udG9nZ2xlQ2xhc3MoXCJmaWxsZWRcIiwgdmFsdWUpOyBcbiAgICBpZiAoJGFuaW1hdGUgJiYgdGhpcy52YWx1ZSkgdGhpcy5lbGVtZW50Lm1hcmtlci5hbmltYXRlRHJvcCgpOyAgXG4gIH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5kZWNsYXJlIGxldCAkLCBqUXVlcnkgOiBhbnk7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwTW9kZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuXG5leHBvcnQgY2xhc3MgR29Hb0NvbnRyb2xDb21wb25lbnRcbnsgICAgXG4gIGluaXRpYWxpemUoKVxuICB7XG4gICAgJCgnLnNob3ctZGlyZWN0b3J5LW1lbnUtYnV0dG9uLCAjbW9iaWxlLWZpbHRlcnMtaWNvbicpLmNsaWNrKChlKSA9PiB7IEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LnNob3coKTsgZS5wcmV2ZW50RGVmYXVsdCgpO2Uuc3RvcFByb3BhZ2F0aW9uKCk7fSk7XG4gICAgJCgnI2RpcmVjdG9yeS1tZW51IC5idG4tY2xvc2UtbWVudScpLmNsaWNrKCgpID0+IEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LmhpZGUoKSk7XG5cbiAgICAkKCcuc2hvdy1hcy1saXN0LWJ1dHRvbicpLmNsaWNrKChlIDogRXZlbnQpID0+IHsgIFxuICAgICAgQXBwLm1hcE1hbmFnZXIuc2V0VGltZW91dENsaWNraW5nKCk7XG4gICAgICBBcHAuc2V0TW9kZShBcHBNb2Rlcy5MaXN0KTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICAkKCcjbW9iaWxlLXNlYXJjaC1pY29uJykuY2xpY2soKGUpID0+IHsgXG4gICAgICBBcHAuc2VhcmNoQmFyQ29tcG9uZW50LnNob3dNb2JpbGVTZWFyY2hCYXIoKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICAkKCcuc2hvdy1hcy1tYXAtYnV0dG9uJykuY2xpY2soKCkgPT4geyAgICBcbiAgICAgIEFwcC5zZXRNb2RlKEFwcE1vZGVzLk1hcCk7XG4gICAgfSk7XG4gIH1cblxuICB1cGRhdGVQb3NpdGlvbigpXG4gIHtcbiAgICBpZiAoIUFwcC5tb2RlKSByZXR1cm47XG5cbiAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwKVxuICAgIHtcbiAgICAgIGxldCB0b3AgPSAxNSArICQoJy5zZWFyY2gtcmVzdWx0czp2aXNpYmxlJykuaGVpZ2h0KCk7XG4gICAgICAkKCcjZ29nby1jb250cm9scy1tb2JpbGUnKS52ZWxvY2l0eSh7dG9wOiB0b3AsIHJpZ2h0OiAwfSwge2R1cmF0aW9uOiAyNTAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnZWFzZU91dFF1YWQnfSk7IFxuICAgICAgJCgnI2dvZ28tY29udHJvbHMtbW9iaWxlJykuYWRkQ2xhc3MoJ21hcCcpLnJlbW92ZUNsYXNzKCdsaXN0Jyk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBsZXQgdG9wID0gJCgnI2RpcmVjdG9yeS1jb250ZW50JykuaGVpZ2h0KCkgLSAkKCcjZ29nby1jb250cm9scy1tb2JpbGUnKS5oZWlnaHQoKSAtIDU7XG4gICAgICAkKCcjZ29nby1jb250cm9scy1tb2JpbGUnKS52ZWxvY2l0eSh7dG9wOiB0b3AsIHJpZ2h0OiAxNX0sIHtkdXJhdGlvbjogMjUwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ2Vhc2VPdXRRdWFkJ30pOyBcbiAgICAgICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLmFkZENsYXNzKCdsaXN0JykucmVtb3ZlQ2xhc3MoJ21hcCcpO1xuICAgIH1cbiAgfSBcblxuICBoaWRlKGRlbGF5IDogbnVtYmVyID0gMjUwKSB7ICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLmZhZGVPdXQoZGVsYXkpOyB9XG5cbiAgc2hvdyhkZWxheSA6IG51bWJlciA9IDQwMCkgeyAkKCcjZ29nby1jb250cm9scy1tb2JpbGUnKS5mYWRlSW4oZGVsYXkpOyB9ICBcbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkIH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvZWxlbWVudHMvZWxlbWVudHMubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9ldmVudC5jbGFzc1wiO1xuXG5kZWNsYXJlIHZhciAkO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudExpc3RDb21wb25lbnRcbntcblx0ZWxlbWVudFRvRGlzcGxheUNvdW50IDogbnVtYmVyID0gMDsgXG5cblx0Ly8gTnVtYmVyIG9mIGVsZW1lbnQgaW4gb25lIGxpc3Rcblx0RUxFTUVOVF9MSVNUX1NJWkVfU1RFUCA6IG51bWJlciA9IDE1O1xuXHQvLyBCYXNpY2x5IHdlIGRpc3BsYXkgMSBFTEVNRU5UX0xJU1RfU0laRV9TVEVQLCBidXQgaWYgdXNlciBuZWVkXG5cdC8vIGZvciwgd2UgZGlzcGxheSBhbiBvdGhlcnMgRUxFTUVOVF9MSVNUX1NJWkVfU1RFUCBtb3JlXG5cdHN0ZXBzQ291bnQgOiBudW1iZXIgPSAxO1xuXHRpc0xpc3RGdWxsIDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdC8vIGxhc3QgcmVxdWVzdCB3YXMgc2VuZCB3aXRoIHRoaXMgZGlzdGFuY2Vcblx0bGFzdERpc3RhbmNlUmVxdWVzdCA9IDEwO1xuXG5cdGlzSW5pdGlhbGl6ZWQgOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0Ly8gZGV0ZWN0IHdoZW4gdXNlciByZWFjaCBib3R0b20gb2YgbGlzdFxuXHRcdHZhciB0aGF0ID0gdGhpcztcblx0XHQkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbGlzdCAuZWxlbWVudHMtY29udGFpbmVyJykub24oJ3Njcm9sbCcsIGZ1bmN0aW9uKGUpIFxuXHRcdHtcblx0XHRcdGlmKCQodGhpcykuc2Nyb2xsVG9wKCkgPiAwKVxuXHRcdFx0XHQkKFwiI2xpc3QtdGl0bGUtc2hhZG93LWJvdHRvbVwiKS5zaG93KCk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdCQoXCIjbGlzdC10aXRsZS1zaGFkb3ctYm90dG9tXCIpLmhpZGUoKTtcblxuXHRcdFx0aWYoJCh0aGlzKS5zY3JvbGxUb3AoKSArICQodGhpcykuaW5uZXJIZWlnaHQoKSA+PSAkKHRoaXMpWzBdLnNjcm9sbEhlaWdodCkgeyAgICAgICAgICAgIFxuXHRcdCAgICBcdHRoYXQuaGFuZGxlQm90dG9tKCk7XG5cdFx0ICB9XG5cdFx0fSk7XG5cdH1cblxuXHR1cGRhdGUoJGVsZW1lbnRzVG9EaXNwbGF5IDogRWxlbWVudFtdKSBcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJlbGVtZW50TGlzdCB1cGRhdGVcIiwgJGVsZW1lbnRzUmVzdWx0KTtcblx0XHRpZiAoJGVsZW1lbnRzVG9EaXNwbGF5Lmxlbmd0aCA9PSAwKSB0aGlzLnN0ZXBzQ291bnQgPSAxO1xuXG5cdFx0dGhpcy5oaWRlU3Bpbm5lckxvYWRlcigpO1xuXHRcdHRoaXMuY2xlYXIoKTtcdFx0XG5cblx0XHR0aGlzLmRyYXcoJGVsZW1lbnRzVG9EaXNwbGF5LCBmYWxzZSk7XG5cdH1cblxuXHRzZXRUaXRsZSgkdmFsdWUgOiBzdHJpbmcpIHsgJCgnLmVsZW1lbnQtbGlzdC10aXRsZS10ZXh0JykuaHRtbCgkdmFsdWUpOyB9XG5cblx0c2hvdygpIHsgJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QnKS5zaG93KCk7IH1cblx0XG5cdGhpZGUoKSB7ICQoJyNkaXJlY3RvcnktY29udGVudC1saXN0JykuaGlkZSgpOyB9XG5cblx0c2hvd1NwaW5uZXJMb2FkZXIoKSB7ICQoJyNkaXJlY3RvcnktbGlzdC1zcGlubmVyLWxvYWRlcicpLnNob3coKTsgfVxuXG5cdGhpZGVTcGlubmVyTG9hZGVyKCkgeyAkKCcjZGlyZWN0b3J5LWxpc3Qtc3Bpbm5lci1sb2FkZXInKS5oaWRlKCk7IH1cblxuXHRjbGVhcigpIHsgJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgbGknKS5yZW1vdmUoKTsgfVxuXG5cdHJlSW5pdGlhbGl6ZUVsZW1lbnRUb0Rpc3BsYXlMZW5ndGgoKVxuXHR7XG5cdFx0dGhpcy5jbGVhcigpO1xuXHRcdCQoJyNkaXJlY3RvcnktY29udGVudC1saXN0IC5lbGVtZW50cy1jb250YWluZXInKS5hbmltYXRlKHtzY3JvbGxUb3A6ICcwJ30sIDApO1xuXHRcdHRoaXMuc3RlcHNDb3VudCA9IDE7XG5cdH1cblxuXHRwcml2YXRlIGRyYXcoJGVsZW1lbnRMaXN0IDogRWxlbWVudFtdLCAkYW5pbWF0ZSA9IGZhbHNlKSBcblx0e1xuXHRcdGxldCBlbGVtZW50IDogRWxlbWVudDtcblx0XHRsZXQgZWxlbWVudHNUb0Rpc3BsYXkgOiBFbGVtZW50W10gPSAkZWxlbWVudExpc3QuZmlsdGVyKCAoZWwpID0+IGVsLmlzRnVsbHlMb2FkZWQpOyBcblxuXHRcdHRoaXMuZWxlbWVudFRvRGlzcGxheUNvdW50ID0gZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoO1xuXHRcdC8vIGNvbnNvbGUubG9nKCdFbGVtZW50TGlzdCBkcmF3JywgZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoKTtcblxuXHRcdGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuQWxsKVxuXHRcdHtcblx0XHRcdGZvcihlbGVtZW50IG9mIGVsZW1lbnRzVG9EaXNwbGF5KSBlbGVtZW50LnVwZGF0ZURpc3RhbmNlKCk7XG5cdFx0XHRlbGVtZW50c1RvRGlzcGxheS5zb3J0KHRoaXMuY29tcGFyZURpc3RhbmNlKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAoQXBwLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLlNlYXJjaFJlc3VsdHMpXG5cdFx0e1xuXHRcdFx0ZWxlbWVudHNUb0Rpc3BsYXkuc29ydCh0aGlzLmNvbXBhcmVTZWFyY2hTY29yZSk7XG5cdFx0fVx0XHRcblxuXHRcdGxldCBtYXhFbGVtZW50c1RvRGlzcGxheSA9IHRoaXMuRUxFTUVOVF9MSVNUX1NJWkVfU1RFUCAqIHRoaXMuc3RlcHNDb3VudDtcblx0XHRsZXQgZW5kSW5kZXggPSBNYXRoLm1pbihtYXhFbGVtZW50c1RvRGlzcGxheSwgZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoKTsgIFxuXG5cdFx0dGhpcy51cGRhdGVSZXN1bHRNZXNzYWdlKCk7XG5cdFx0XG5cdFx0Ly8gaWYgdGhlIGxpc3QgaXMgbm90IGZ1bGwsIHdlIHNlbmQgYWpheCByZXF1ZXN0XG5cdFx0aWYgKGVsZW1lbnRzVG9EaXNwbGF5Lmxlbmd0aCA8IG1heEVsZW1lbnRzVG9EaXNwbGF5KVxuXHRcdHtcblx0XHRcdGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuQWxsKVxuXHRcdFx0e1xuXHRcdFx0XHQvLyBleHBhbmQgYm91bmRzXG5cdFx0XHRcdEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kQm91bmRzKDAuNSk7XG5cdFx0XHRcdHRoaXMuc2hvd1NwaW5uZXJMb2FkZXIoKTtcblx0XHRcdFx0QXBwLmVsZW1lbnRzTWFuYWdlci5jaGVja0Zvck5ld0VsZW1lbnRzVG9SZXRyaWV2ZSh0cnVlKTtcdFx0XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVx0XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKFwibGlzdCBpcyBmdWxsXCIpO1xuXHRcdFx0Ly8gd2FpdGluZyBmb3Igc2Nyb2xsIGJvdHRvbSB0byBhZGQgbW9yZSBlbGVtZW50cyB0byB0aGUgbGlzdFxuXHRcdFx0dGhpcy5pc0xpc3RGdWxsID0gdHJ1ZTtcdFx0XHRcblx0XHR9XG5cdFx0XG5cdFx0bGV0IGxpc3RDb250ZW50RG9tID0gJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgdWwuY29sbGFwc2libGUnKTtcblx0XHRsZXQgdGhhdCA9IHRoaXM7XG5cblx0XHRmb3IobGV0IGkgPSAwOyBpIDwgZW5kSW5kZXg7IGkrKylcblx0XHR7XG5cdFx0XHRlbGVtZW50ID0gZWxlbWVudHNUb0Rpc3BsYXlbaV07XHRcdFx0XG5cdFx0XHRsaXN0Q29udGVudERvbS5hcHBlbmQoZWxlbWVudC5jb21wb25lbnQucmVuZGVyKCkpO1xuXHRcdFx0Ly8gYmluZCBlbGVtZW50IGhlYWRlciBjbGlja1xuXHRcdFx0ZWxlbWVudC5jb21wb25lbnQuZG9tLmZpbmQoJy5jb2xsYXBzaWJsZS1oZWFkZXInKS5jbGljayhmdW5jdGlvbigpIHsgdGhhdC5vbkVsZW1lbnRPcGVuKHRoaXMpOyB9KTtcblx0XHR9XG5cblx0XHRpZiAoJGFuaW1hdGUpICQoJyNkaXJlY3RvcnktY29udGVudC1saXN0IC5lbGVtZW50cy1jb250YWluZXInKS5hbmltYXRlKHtzY3JvbGxUb3A6ICcwJ30sIDUwMCk7XG5cdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgdWwnKS5jb2xsYXBzaWJsZSh7YWNjb3JkaW9uIDogdHJ1ZX0pO1x0XHRcblx0fVxuXG5cdHByaXZhdGUgb25FbGVtZW50T3BlbihlbGVtZW50SGVhZGVyRG9tKVxuXHR7XG5cdFx0bGV0IGVsZW1lbnREb20gPSAkKGVsZW1lbnRIZWFkZXJEb20pLmNsb3Nlc3QoJy5lbGVtZW50LWl0ZW0nKTtcblx0XHRsZXQgZWxlbWVudElkID0gZWxlbWVudERvbS5kYXRhKCdlbGVtZW50LWlkJyk7XG5cdFx0bGV0IGVsZW1lbnQgPSAgQXBwLmVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XG5cdFx0XG5cdFx0Ly8gaW5pdGlhbGl6ZSBlbGVtZW50IGNvbXBvbmVudFxuXHRcdGlmICghJChlbGVtZW50SGVhZGVyRG9tKS5oYXNDbGFzcygnaW5pdGlhbGl6ZWQnKSlcblx0XHR7XG5cdFx0XHRlbGVtZW50LmNvbXBvbmVudC5pbml0aWFsaXplKCk7XG5cdFx0XHRlbGVtZW50LmNvbXBvbmVudC5pbWFnZXNDb21wb25lbnQub25OZXdJbWFnZURpc3BsYXllZC5kbyggKGltYWdlKSA9PiB7XG5cdFx0XHRcdGVsZW1lbnREb20uZmluZCgnLmltZy1vdmVybGF5JykuY3NzKCdoZWlnaHQnLCBlbGVtZW50RG9tLmZpbmQoJy5pbWctY29udGFpbmVyJykuaGVpZ2h0KCkpO1xuXHRcdFx0fSk7XHRcdFx0XHRcblxuXHRcdFx0c2V0VGltZW91dCggKCkgPT4geyAkKGVsZW1lbnRIZWFkZXJEb20pLmFkZENsYXNzKCdpbml0aWFsaXplZCcpOyB9LCAwKTtcdFx0XHRcdFx0XG5cdFx0fVxuXG5cdFx0Ly8gb24gb3BlbiBhbmltYXRpb24gZW5kXG5cdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLm9uRWxlbWVudEZ1bGx5T3Blbm5lZChlbGVtZW50RG9tKTsgfSwgMzAwKTtcdFx0XHRcblx0fVxuXG5cdHByaXZhdGUgb25FbGVtZW50RnVsbHlPcGVubmVkKGVsZW1lbnREb20pXG5cdHtcblx0XHRsZXQgbGlzdENvbnRhaW5lckRvbSA9ICQoJyNkaXJlY3RvcnktY29udGVudC1saXN0IC5lbGVtZW50cy1jb250YWluZXInKTtcblx0XHRlbGVtZW50RG9tLmZpbmQoJy5pbWctb3ZlcmxheScpLmNzcygnaGVpZ2h0JywgZWxlbWVudERvbS5maW5kKCcuaW1nLWNvbnRhaW5lcicpLmhlaWdodCgpKTtcblxuXHRcdC8vIGNoZWNrIHRoZSB2aXNpYmlsaXR5IG9mIGFuIGl0ZW0gYWZ0ZXIgaXQgaGFzIGJlZW4gZXhwYW5kZWRcblx0XHRsZXQgZWxlbWVudERpc3RhbmNlVG9Ub3AgPSBlbGVtZW50RG9tLm9mZnNldCgpLnRvcCAtIGxpc3RDb250YWluZXJEb20ub2Zmc2V0KCkudG9wO1xuXG5cdFx0Ly8gaWYgZWxlbWVudCBub3QgdmlzaWJsZSBvbiBzY3JlZW5cblx0XHRpZiAoIChlbGVtZW50RG9tLm9mZnNldCgpLnRvcCAtIGxpc3RDb250YWluZXJEb20ub2Zmc2V0KCkudG9wICsgZWxlbWVudERvbS5oZWlnaHQoKSkgPiAobGlzdENvbnRhaW5lckRvbS5vdXRlckhlaWdodCgpICsgMTUwKSlcblx0XHR7XG5cdFx0XHRsaXN0Q29udGFpbmVyRG9tLmFuaW1hdGUoe3Njcm9sbFRvcDogbGlzdENvbnRhaW5lckRvbS5zY3JvbGxUb3AoKSArIGVsZW1lbnREb20ub2Zmc2V0KCkudG9wIC0gbGlzdENvbnRhaW5lckRvbS5vZmZzZXQoKS50b3B9LCA1NTApO1xuXHRcdH1cdFx0XHRcdFx0XG5cdFx0Ly8gaWYgZWxlbWVudCBpcyB0b28gaGlnaFxuXHRcdGVsc2UgaWYgKCBlbGVtZW50RGlzdGFuY2VUb1RvcCA8IDAgKSBcblx0XHR7XG5cdFx0XHRsaXN0Q29udGFpbmVyRG9tLmFuaW1hdGUoe3Njcm9sbFRvcDogbGlzdENvbnRhaW5lckRvbS5zY3JvbGxUb3AoKSArIGVsZW1lbnREaXN0YW5jZVRvVG9wfSwgMzAwKTtcblx0XHR9XG5cdFx0c2V0VGltZW91dCggKCkgPT4gJCgnLmluZm8tYmFyLXRhYnMnKS50YWJzKCksIDApO1xuXHR9XG5cblx0cHJpdmF0ZSB1cGRhdGVSZXN1bHRNZXNzYWdlKClcblx0e1xuXHRcdCQoJy5uby1yZXN1bHQtbWVzc2FnZScpLmhpZGUoKTtcblx0XHRcblx0XHRpZiAodGhpcy5lbGVtZW50VG9EaXNwbGF5Q291bnQgPiAwKVxuXHRcdHtcdFx0XHRcblx0XHRcdCQoJy5lbGVtZW50LWxpc3QtaGVhZGVyIC50aXRsZS10ZXh0Jykuc2hvdygpO1xuICAgXHRcdCQoJy5lbGVtZW50LWxpc3QtdGl0bGUtbnVtYmVyLXJlc3VsdHMnKS50ZXh0KCcoJyArIHRoaXMuZWxlbWVudFRvRGlzcGxheUNvdW50ICsgJyknKTtcbiAgIFx0fVxuICAgXHRlbHNlXG4gICBcdFx0JCgnLmVsZW1lbnQtbGlzdC1oZWFkZXIgLnRpdGxlLXRleHQnKS5oaWRlKCk7XG5cdH1cblxuXHRoYW5kbGVBbGxFbGVtZW50c1JldHJpZXZlZCgpXG5cdHtcblx0XHR0aGlzLmhpZGVTcGlubmVyTG9hZGVyKCk7XG5cdFx0aWYgKHRoaXMuZWxlbWVudFRvRGlzcGxheUNvdW50ID09IDApXG5cdFx0e1xuXHRcdFx0JCgnLmVsZW1lbnQtbGlzdC10aXRsZS1udW1iZXItcmVzdWx0cycpLnRleHQoJygwKScpO1xuXHRcdFx0JCgnLm5vLXJlc3VsdC1tZXNzYWdlJykuc2hvdygpO1xuXHRcdFx0bGV0IG5vUmVzdWx0SW1nID0gJCgnLm5vLXJlc3VsdC1tZXNzYWdlIGltZycpO1xuXHRcdFx0bm9SZXN1bHRJbWcuYXR0cignc3JjJywgbm9SZXN1bHRJbWcuZGF0YSgnc3JjJykpO1xuXHRcdFx0JCgnLmVsZW1lbnQtbGlzdC1oZWFkZXIgLnRpdGxlLXRleHQnKS5zaG93KCk7XG5cdFx0fVx0XHRcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlQm90dG9tKClcblx0e1xuXHRcdGlmICh0aGlzLmlzTGlzdEZ1bGwpIFxuXHRcdHtcblx0XHRcdHRoaXMuc3RlcHNDb3VudCsrO1xuXHRcdFx0Ly9jb25zb2xlLmxvZyhcImJvdHRvbSByZWFjaGVkXCIpO1xuXHRcdFx0dGhpcy5pc0xpc3RGdWxsID0gZmFsc2U7XG5cdFx0XHR0aGlzLmNsZWFyKCk7XG5cdFx0XHR0aGlzLmRyYXcoQXBwLmVsZW1lbnRzKCkpO1xuXHRcdH1cdFx0XG5cdH1cblxuXHRwcml2YXRlIGNvbXBhcmVEaXN0YW5jZShhOkVsZW1lbnQsYjpFbGVtZW50KSBcblx0eyAgXG5cdCAgaWYgKGEuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyID09IGIuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyKSByZXR1cm4gMDtcblx0ICByZXR1cm4gYS5kaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIgPCBiLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlciA/IC0xIDogMTtcblx0fVxuXG5cdHByaXZhdGUgY29tcGFyZVNlYXJjaFNjb3JlKGE6RWxlbWVudCxiOkVsZW1lbnQpIFxuXHR7ICBcblx0ICBpZiAoYS5zZWFyY2hTY29yZSA9PSBiLnNlYXJjaFNjb3JlKSByZXR1cm4gMDtcblx0ICByZXR1cm4gYS5zZWFyY2hTY29yZSA8IGIuc2VhcmNoU2NvcmUgPyAxIDogLTE7XG5cdH1cbn1cblxuIiwiZGVjbGFyZSBsZXQgZ29vZ2xlO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgbGV0ICQsIEw6IGFueTtcblxuZGVjbGFyZSBsZXQgd2luZG93IDogYW55O1xuXG5leHBvcnQgY2xhc3MgRGlyZWN0aW9uc0NvbXBvbmVudFxue1xuXHRyb3V0aW5nQ29udHJvbCA6IGFueTtcdFxuXHRpc0FjdGl2ZSA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcigpIHt9IFxuXG4gIGluaXRpYWxpemUoKVxuICB7XG4gIFx0JCgnI2J0bi1jbG9zZS1kaXJlY3Rpb25zJykuY2xpY2soICgpID0+IFxuXHRcdHtcblx0XHRcdEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuU2hvd0VsZW1lbnQsIHsgaWQgOiBBcHAuaW5mb0JhckNvbXBvbmVudC5nZXRDdXJyRWxlbWVudElkKCkgfSk7XG5cdFx0fSk7XG4gIH0gXG5cblx0Y2xlYXIoKVxuXHR7XG5cdFx0aWYgKCF0aGlzLnJvdXRpbmdDb250cm9sKSByZXR1cm47XG5cblx0XHR0aGlzLmNsZWFyUm91dGUoKTtcblx0XHR0aGlzLmhpZGVJdGluZXJhcnlQYW5lbCgpO1xuXG5cdFx0QXBwLkRFQU1vZHVsZS5lbmQoKTtcblxuXHRcdHRoaXMucm91dGluZ0NvbnRyb2wgPSBudWxsO1xuXHRcdHRoaXMuaXNBY3RpdmUgPSBmYWxzZTtcblx0fTtcblxuXHRwcml2YXRlIGNsZWFyUm91dGUoKVxuXHR7XG5cdFx0aWYgKHRoaXMucm91dGluZ0NvbnRyb2wpIFxuXHRcdHtcblx0XHRcdHRoaXMucm91dGluZ0NvbnRyb2wuc3BsaWNlV2F5cG9pbnRzKDAsMik7XHRcdFxuXHRcdFx0QXBwLm1hcCgpLnJlbW92ZUNvbnRyb2wodGhpcy5yb3V0aW5nQ29udHJvbCk7XHRcblx0XHR9XG5cdH07XG5cblx0Y2FsY3VsYXRlUm91dGUob3JpZ2luIDogTC5MYXRMbmcsIGVsZW1lbnQgOiBFbGVtZW50KSBcblx0e1xuXHRcdHRoaXMuY2xlYXIoKTtcblxuXHRcdGxldCB3YXlwb2ludHMgPSBbXG5cdFx0ICAgIG9yaWdpbixcblx0XHQgICAgZWxlbWVudC5wb3NpdGlvbixcblx0XHRdO1xuXHRcdC8vY29uc29sZS5sb2coXCJjYWxjdWxhdGUgcm91dGVcIiwgd2F5cG9pbnRzKTtcblxuXHRcdHRoaXMucm91dGluZ0NvbnRyb2wgPSBMLlJvdXRpbmcuY29udHJvbCh7XG5cdFx0XHRyb3V0ZXI6IEwuUm91dGluZy5tYXBib3goJ3BrLmV5SjFJam9pWjI5bmIyTmhjblJ2SWl3aVlTSTZJbU5xWW5oeGVIVXhaekozY0c0ek1uSXlObVppYWpGNmRtd2lmUS4yRzVJTTRyb0lncFVfZnZQQk9wc3N3JyksXG5cdFx0XHRwbGFuOiBMLlJvdXRpbmcucGxhbihcblx0XHRcdFx0d2F5cG9pbnRzLCBcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIGRlbGV0ZWluZyBzdGFydCBhbmQgZW5kIG1hcmtlcnNcblx0XHRcdFx0XHRjcmVhdGVNYXJrZXI6IGZ1bmN0aW9uKGksIHdwKSB7IHJldHVybiBudWxsOyB9LFxuXHRcdFx0XHRcdHJvdXRlV2hpbGVEcmFnZ2luZzogZmFsc2UsXG5cdFx0XHRcdFx0c2hvd0FsdGVybmF0aXZlczogZmFsc2Vcblx0XHRcdFx0fVxuXHRcdFx0KSxcblx0XHRcdGxhbmd1YWdlOiAnZnInLFxuXHRcdFx0cm91dGVXaGlsZURyYWdnaW5nOiBmYWxzZSxcblx0XHRcdHNob3dBbHRlcm5hdGl2ZXM6IGZhbHNlLFxuXHRcdFx0YWx0TGluZU9wdGlvbnM6IHtcblx0XHRcdFx0c3R5bGVzOiBbXG5cdFx0XHRcdFx0e2NvbG9yOiAnYmxhY2snLCBvcGFjaXR5OiAwLjE1LCB3ZWlnaHQ6IDl9LFxuXHRcdFx0XHRcdHtjb2xvcjogJ3doaXRlJywgb3BhY2l0eTogMC44LCB3ZWlnaHQ6IDZ9LFxuXHRcdFx0XHRcdHtjb2xvcjogJyMwMGIzZmQnLCBvcGFjaXR5OiAwLjUsIHdlaWdodDogMn1cblx0XHRcdFx0XVxuXHRcdFx0fVxuXHRcdH0pLmFkZFRvKEFwcC5tYXAoKSk7XG5cblx0XHQvLyBzaG93IEl0aW5lcmFyeSBwYW5lbCB3aXRob3V0IGl0aW5lcmFyeSwganVzdCB0byBzaG93IHVzZXJcblx0XHQvLyBzb21ldGhpbmdpcyBoYXBwZW5uaW5nIGFuIGRpc3BsYXkgc3Bpbm5lciBsb2FkZXJcblx0XHR0aGlzLnNob3dJdGluZXJhcnlQYW5lbChlbGVtZW50KTtcblxuXHRcdHRoaXMucm91dGluZ0NvbnRyb2wub24oJ3JvdXRlc2ZvdW5kJywgKGV2KSA9PiBcblx0XHR7XG5cdFx0XHR0aGlzLnNob3dJdGluZXJhcnlQYW5lbChlbGVtZW50KTtcblx0XHR9KTtcblxuXHRcdC8vIGZpdCBib3VuZHMgXG5cdFx0dGhpcy5yb3V0aW5nQ29udHJvbC5vbigncm91dGVzZWxlY3RlZCcsIGZ1bmN0aW9uKGUpIFxuXHRcdHtcdCAgICBcblx0ICAgIHZhciByID0gZS5yb3V0ZTtcblx0ICAgIHZhciBsaW5lID0gTC5Sb3V0aW5nLmxpbmUocik7XG5cdCAgICB2YXIgYm91bmRzID0gbGluZS5nZXRCb3VuZHMoKTtcblx0ICAgIEFwcC5tYXAoKS5maXRCb3VuZHMoYm91bmRzKTtcblx0XHR9KTtcblxuXHRcdHRoaXMucm91dGluZ0NvbnRyb2wub24oJ3JvdXRpbmdlcnJvcicsIChldikgPT4gXG5cdFx0e1xuXHRcdFx0JCgnI21vZGFsLWRpcmVjdGlvbnMtZmFpbCcpLm9wZW5Nb2RhbCgpO1xuXHRcdFx0dGhpcy5jbGVhcigpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5pc0FjdGl2ZSA9IHRydWU7XHRcdFx0XG5cdH07XG5cblx0aGlkZUl0aW5lcmFyeVBhbmVsKClcblx0e1xuXHRcdCQoJyNkaXJlY3RvcnktbWVudS1tYWluLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCk7XG5cdH1cblxuXHRzaG93SXRpbmVyYXJ5UGFuZWwoZWxlbWVudCA6IEVsZW1lbnQpXG5cdHtcblx0XHQkKCcjZGlyZWN0b3J5LW1lbnUtbWFpbi1jb250YWluZXInKS5yZW1vdmVDbGFzcygpLmFkZENsYXNzKFwiZGlyZWN0aW9uc1wiKTtcdFxuXHRcdCQoJy5sZWFmbGV0LXJvdXRpbmctY29udGFpbmVyJykucHJlcGVuZFRvKCcuZGlyZWN0b3J5LW1lbnUtY29udGVudCcpO1x0XHRcblx0fVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvZXZlbnQuY2xhc3NcIjtcblxuZGVjbGFyZSB2YXIgJDtcblxuZXhwb3J0IGNsYXNzIEluZm9CYXJDb21wb25lbnRcbntcblx0aXNWaXNpYmxlIDogYm9vbGVhbiA9IGZhbHNlO1xuXHRpc0RldGFpbHNWaXNpYmxlID0gZmFsc2U7XG5cblx0ZWxlbWVudFZpc2libGUgOiBFbGVtZW50ID0gbnVsbDtcblxuXHRsb2FkZXJUaW1lciA9IG51bGw7XG5cblx0b25TaG93ID0gbmV3IEV2ZW50PG51bWJlcj4oKTtcblx0b25IaWRlID0gbmV3IEV2ZW50PGJvb2xlYW4+KCk7XG5cblx0Z2V0Q3VyckVsZW1lbnRJZCgpIDogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZWxlbWVudFZpc2libGUgPyB0aGlzLmVsZW1lbnRWaXNpYmxlLmlkIDogbnVsbDsgfVxuXG5cdGdldCBkb20oKSB7IHJldHVybiAkKCcjZWxlbWVudC1pbmZvLWJhcicpOyB9XG5cdGdldCBkb21NZW51KCkgeyByZXR1cm4gdGhpcy5kb20uZmluZCgnLm1lbnUtZWxlbWVudCcpOyB9XG5cdHdpZHRoKCkgOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5kb20ud2lkdGgoKSArICdweCc7IH1cblxuXHRpc0Rpc3BsYXllZEFzaWRlKCkgeyByZXR1cm4gdGhpcy5kb20uaGFzQ2xhc3MoJ2Rpc3BsYXktYXNpZGUnKTsgfVxuXHRpc0Rpc3BsYXllZEJvdHRvbSgpIHsgcmV0dXJuIHRoaXMuZG9tLmhhc0NsYXNzKCdkaXNwbGF5LWJvdHRvbScpOyB9XG5cblx0cmVsb2FkKClcblx0e1xuXHRcdGlmICghdGhpcy5pc1Zpc2libGUpIHJldHVybjtcblx0XHR0aGlzLmVsZW1lbnRWaXNpYmxlLmlzRnVsbHlMb2FkZWQgPSBmYWxzZTtcblx0XHR0aGlzLnNob3dFbGVtZW50KHRoaXMuZWxlbWVudFZpc2libGUuaWQpO1xuXHR9XG5cblx0Ly8gQXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQ7XG5cdHNob3dFbGVtZW50KGVsZW1lbnRJZCwgY2FsbGJhY2sgPSBudWxsKSBcblx0e1xuXHRcdGlmICghQXBwLmNvbmZpZy5pbmZvYmFyLmFjdGl2YXRlKSB7XG5cdFx0XHRBcHAuc3RhdGVNYW5hZ2VyLnNldFN0YXRlKEFwcFN0YXRlcy5Ob3JtYWwpO1x0XHRcdFxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cdFx0XG5cblx0XHRsZXQgZWxlbWVudCA9IEFwcC5lbGVtZW50c01vZHVsZS5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQpO1x0XHRcblx0XHQvLyBjb25zb2xlLmxvZyhcInNob3dFbGVtZW50XCIsIGVsZW1lbnQpO1xuXHRcdFxuXHRcdC8vIGlmIGVsZW1lbnQgYWxyZWFkeSB2aXNpYmxlXG5cdFx0aWYgKHRoaXMuZWxlbWVudFZpc2libGUpIHRoaXMuZWxlbWVudFZpc2libGUubWFya2VyLnNob3dOb3JtYWxTaXplKHRydWUpO1xuXHRcdHRoaXMuZWxlbWVudFZpc2libGUgPSBlbGVtZW50O1x0XG5cblx0XHRpZiAoIWVsZW1lbnQuaXNGdWxseUxvYWRlZClcblx0XHR7XG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiRWxlbWVudCBub3QgZnVsbHkgTG9hZGVkXCIpO1xuXHRcdFx0QXBwLmFqYXhNb2R1bGUuZ2V0RWxlbWVudEJ5SWQoZWxlbWVudElkLFxuXHRcdFx0KHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdGVsZW1lbnQudXBkYXRlV2l0aEpzb24ocmVzcG9uc2UpO1xuXHRcdFx0XHR0aGlzLnNob3dFbGVtZW50KGVsZW1lbnQuaWQpO1xuXHRcdFx0XHRpZiAoY2FsbGJhY2spIGNhbGxiYWNrKCk7XG5cdFx0XHR9LFxuXHRcdFx0KCkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcIkFqYXggZmFpbHVyZSBmb3IgZWxlbWVudElkXCIsIGVsZW1lbnRJZCk7XG5cdFx0XHR9KTtcdFx0XHRcblxuXHRcdFx0Ly8gaWYgYWpheCByZXRyaWV2aW5nIHRha2UgbW9yZSB0aGFuIDUwMG1zLCB3ZSBzaG93IHNwaW5uZXIgbG9hZGVyXG5cdFx0XHR0aGlzLmxvYWRlclRpbWVyID0gc2V0VGltZW91dCggKCkgPT4gXG5cdFx0XHR7IFxuXHRcdFx0XHQkKCcjaW5mby1iYXItb3ZlcmxheScpLmZhZGVJbigpO1x0XHRcdFx0XHRcblx0XHRcdFx0dGhpcy5zaG93KCk7IFxuXHRcdFx0fSwgNTAwKTsgXHRcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdC8vIGNsZWFyaW5nIGxvYWRlclxuXHRcdFx0Y2xlYXJUaW1lb3V0KHRoaXMubG9hZGVyVGltZXIpO1xuXHRcdFx0JCgnI2luZm8tYmFyLW92ZXJsYXknKS5mYWRlT3V0KCk7XG5cblx0XHRcdHRoaXMuZG9tLmZpbmQoJyNlbGVtZW50LWluZm8nKS5odG1sKHRoaXMuZWxlbWVudFZpc2libGUuY29tcG9uZW50LnJlbmRlcigpKTtcdFxuXG5cdFx0XHRpZiAodGhpcy5lbGVtZW50VmlzaWJsZS5pbWFnZXMubGVuZ3RoKSBcblx0XHRcdHtcblx0XHRcdFx0Ly8gQW5pbWF0aW9uIHRvIG1vdmUgaW1nLW5hdmlnYXRpb24tYnRuIHdoZW4gc2Nyb2xsaW5nXG5cdFx0XHRcdHRoaXMuZG9tLmZpbmQoJy5jb2xsYXBzaWJsZS1ib2R5LW1haW4tY29udGFpbmVyJykuc2Nyb2xsKGZ1bmN0aW9uKGUpIHtcblx0XHRcdFx0XHRsZXQgc2Nyb2xsVG9wID0gJCh0aGlzKS5zY3JvbGxUb3AoKTtcblx0XHRcdFx0XHQkKHRoaXMpLmZpbmQoJy5pbWctbmF2aWdhdGlvbi1idG4ucHJldicpLmNzcygnbGVmdCcsIC1zY3JvbGxUb3AvNSk7XG5cdFx0XHRcdFx0JCh0aGlzKS5maW5kKCcuaW1nLW5hdmlnYXRpb24tYnRuLm5leHQnKS5jc3MoJ3JpZ2h0JywgLXNjcm9sbFRvcC81KTtcblx0XHRcdFx0XHQkKHRoaXMpLmZpbmQoJy5pbWctbmF2aWdhdGlvbi1idG4ubmV4dCcpLmNzcygndG9wJywgc2Nyb2xsVG9wLzIpO1xuXHRcdFx0XHRcdCQodGhpcykuZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5wcmV2JykuY3NzKCd0b3AnLCBzY3JvbGxUb3AvMik7XG5cdFx0XHRcdFx0JCh0aGlzKS5maW5kKCcuaW1nLW92ZXJsYXknKS5jc3MoJ29wYWNpdHknLCAxIC0gc2Nyb2xsVG9wLzIwMCk7XG5cdFx0XHRcdH0pO1x0XHRcdFx0XG5cdFx0XHR9XHRcdFx0XHRcdFx0XG5cblx0XHRcdHRoaXMuZWxlbWVudFZpc2libGUuY29tcG9uZW50LmluaXRpYWxpemUoKTtcdFxuXHRcdFx0dGhpcy51cGRhdGVNZW51KCk7XHRcdFx0XHRcblxuXHRcdFx0dGhpcy5kb20uZmluZCgnI2J0bi1jbG9zZS1iYW5kZWF1LWRldGFpbCcpLmNsaWNrKCgpID0+IHsgdGhpcy5oaWRlKCk7IHJldHVybiBmYWxzZTsgfSk7XG5cdFx0XHRcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5jb2xsYXBzaWJsZS1oZWFkZXInKS5jbGljaygoKSA9PiB7IHRoaXMudG9nZ2xlRGV0YWlscygpOyB9KTtcdFx0XHRcblx0XHR9XHRcdFx0XHRcdFx0XG5cdFx0XG5cdFx0dGhpcy5zaG93KCk7XHRcdFxuXG5cdFx0ZWxlbWVudC5tYXJrZXIuc2hvd05vcm1hbEhpZGRlbigpO1xuXHRcdGVsZW1lbnQubWFya2VyLnNob3dCaWdTaXplKCk7XG5cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiBcblx0XHR7IFxuXHRcdFx0ZWxlbWVudC5tYXJrZXIuc2hvd05vcm1hbEhpZGRlbigpO1xuXHRcdFx0ZWxlbWVudC5tYXJrZXIuc2hvd0JpZ1NpemUoKTtcblx0XHR9LCA1MDApOyBcdFxuXG5cdFx0dGhpcy5vblNob3cuZW1pdChlbGVtZW50SWQpO1xuXG5cdFx0QXBwLmRvY3VtZW50VGl0bGVNb2R1bGUudXBkYXRlRG9jdW1lbnRUaXRsZSgpO1xuXHR9O1x0XG5cblx0cmVmcmVzaCgpXG5cdHtcdFx0XG5cdFx0aWYgKHRoaXMuaXNWaXNpYmxlKSB7XG5cdFx0XHR0aGlzLnNob3coKTtcblx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5zaG93KCk7IH0sIDIwMCk7XG5cdFx0fVxuXHR9XG5cblx0ZGlzcGxheUFzaWRlKClcblx0e1xuXHRcdHRoaXMuZG9tLmFkZENsYXNzKCdkaXNwbGF5LWFzaWRlJyk7XG5cdFx0dGhpcy5kb20ucmVtb3ZlQ2xhc3MoJ2Rpc3BsYXktYm90dG9tJyk7XG5cdFx0dGhpcy51cGRhdGVNZW51KCk7XG5cdH1cblxuXHRkaXNwbGF5Qm90dG9tKClcblx0e1xuXHRcdHRoaXMuZG9tLnJlbW92ZUNsYXNzKCdkaXNwbGF5LWFzaWRlJyk7XG5cdFx0dGhpcy5kb20uYWRkQ2xhc3MoJ2Rpc3BsYXktYm90dG9tJyk7XHRcblx0XHR0aGlzLnVwZGF0ZU1lbnUoKTtcdFx0XG5cdH1cblxuXHR1cGRhdGVNZW51KClcblx0e1xuXHRcdGlmICghdGhpcy5lbGVtZW50VmlzaWJsZSkgcmV0dXJuO1xuXHRcdC8vIG9uIGxhcmdlIHNjcmVlbiBpbmZvIGJhciBpcyBkaXNwbGF5ZWQgYXNpZGUgYW5kIHNvIHdlIGhhdmUgZW5vdWdoIHNwYWNlXG5cdFx0Ly8gdG8gc2hvdyBtZW51IGFjdGlvbnMgZGV0YWlscyBpbiBmdWxsIHRleHRcblx0XHR0aGlzLmVsZW1lbnRWaXNpYmxlLmNvbXBvbmVudC5tZW51Q29tcG9uZW50LnNob3dGdWxsVGV4dE1lbnUodGhpcy5pc0Rpc3BsYXllZEFzaWRlKCkpO1xuXHR9XG5cblx0c2hvdygpXG5cdHtcblx0XHR0aGlzLmhpZGVEZXRhaWxzKCk7XG5cblx0XHRBcHAuc2VhcmNoQmFyQ29tcG9uZW50LmhpZGVNb2JpbGVTZWFyY2hCYXIoKTtcdFx0XG5cdFx0XG5cdFx0aWYgKCF0aGlzLmlzRGlzcGxheWVkQXNpZGUoKSlcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5zaG93KCk7XG5cblx0XHRcdGxldCBlbGVtZW50SW5mb0Jhcl9uZXdIZWlnaHQgPSB0aGlzLmRvbS5maW5kKCcjZWxlbWVudC1pbmZvJykub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cblx0XHRcdHRoaXMudXBkYXRlSW5mb0JhclNpemUoKTtcblx0XHRcdHRoaXMuZG9tLnN0b3AodHJ1ZSkuYW5pbWF0ZSh7J2hlaWdodCc6IGVsZW1lbnRJbmZvQmFyX25ld0hlaWdodH0sIDM1MCwgJ3N3aW5nJywgKCkgPT4gXG5cdFx0XHR7XG5cdFx0XHRcdEFwcC5jb21wb25lbnQudXBkYXRlTWFwU2l6ZSgpO1xuXHRcdFx0XHR0aGlzLmNoZWNrSWZNYXJrZXJTdGlsbFZpc2libGUoKTtcdFx0ICBcdFx0XG5cdFx0XHR9KTtcblx0XHR9XHRcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYgKCF0aGlzLmRvbS5pcygnOnZpc2libGUnKSlcblx0XHRcdHtcblx0XHRcdFx0dGhpcy5kb20uY3NzKCdyaWdodCcsJy0nICsgdGhpcy53aWR0aCgpKTtcdFx0XHRcblx0XHRcdFx0dGhpcy5kb20uc2hvdygpLnN0b3AodHJ1ZSkuYW5pbWF0ZSh7J3JpZ2h0JzonMCd9LDM1MCwnc3dpbmcnLCAoKSA9PiB7IFxuXHRcdFx0XHRcdEFwcC5jb21wb25lbnQudXBkYXRlRGlyZWN0b3J5Q29udGVudE1hcmdpbklmSW5mb0JhckRpc3BsYXllZEFzaWRlKCk7XG5cdFx0XHRcdFx0dGhpcy5jaGVja0lmTWFya2VyU3RpbGxWaXNpYmxlKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHR0aGlzLnVwZGF0ZUluZm9CYXJTaXplKCk7XG5cdFx0XHR0aGlzLnNob3dCb2R5TWFpblRhYigpO1xuXG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IFxuXHRcdFx0XHQvLyBqdXN0IHRvIGJlIHN1cmUsIHB1dCB0aGUgcmlnaHQgcHJvcGVydHkgdG8gMCBmZXcgbXMgYWZ0ZXJcblx0XHRcdFx0dGhpcy5kb20uc3RvcCh0cnVlKS5jc3MoJ3JpZ2h0JywgJzAnKTsgXHRcdFx0XG5cdFx0XHR9LCA0MDApO1x0XHRcdFx0XG5cdFx0fVx0XG5cblx0XHR0aGlzLmlzVmlzaWJsZSA9IHRydWU7XG5cdH07XHRcblxuXHRjaGVja0lmTWFya2VyU3RpbGxWaXNpYmxlKClcblx0e1xuXHRcdC8vIGFmdGVyIGluZm9iYXIgYW5pbWF0aW9uLCB3ZSBjaGVjayBpZiB0aGUgbWFya2VyIFxuXHRcdC8vIGlzIG5vdCBoaWRkZWQgYnkgdGhlIGluZm8gYmFyXG5cdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0aWYgKHRoaXMuZWxlbWVudFZpc2libGUgJiYgdGhpcy5pc0N1cnJlbnRNYXJrZXJOb3RWaXNpYmxlT25NYXAoKSAmJiBBcHAuc3RhdGUgIT0gQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcImluZm8gYmFyIG1hcmtlciBub3QgdmlzaWJsZVwiLCBBcHBTdGF0ZXNbQXBwLnN0YXRlXSk7XG5cdFx0XHRcdEFwcC5tYXBDb21wb25lbnQucGFuVG9Mb2NhdGlvbih0aGlzLmVsZW1lbnRWaXNpYmxlLnBvc2l0aW9uKTtcblx0XHRcdFx0dGhpcy5lbGVtZW50VmlzaWJsZS5tYXJrZXIuc2hvd0JpZ1NpemUoKTtcblx0XHRcdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLmVsZW1lbnRWaXNpYmxlLm1hcmtlci5zaG93QmlnU2l6ZSgpOyB9LCAyMDApO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMuZWxlbWVudFZpc2libGUubWFya2VyLnNob3dCaWdTaXplKCk7IH0sIDEwMDApO1xuXHRcdFx0fVx0XG5cdFx0fSwgMTAwKTtcblx0fVxuXG5cdHByaXZhdGUgaXNDdXJyZW50TWFya2VyTm90VmlzaWJsZU9uTWFwKClcblx0e1xuXHRcdGxldCBtYXJrZXIgPSB0aGlzLmVsZW1lbnRWaXNpYmxlLm1hcmtlci5kb21NYXJrZXIoKTtcblx0XHRyZXR1cm4gKEFwcC5tYXBDb21wb25lbnQuaXNNYXBMb2FkZWQgJiYgIUFwcC5tYXBDb21wb25lbnQuY29udGFpbnModGhpcy5lbGVtZW50VmlzaWJsZS5wb3NpdGlvbikpIHx8XG5cdFx0ICAgICAgICghdGhpcy5pc0Rpc3BsYXllZEFzaWRlKCkgJiYgbWFya2VyICYmIG1hcmtlci5vZmZzZXQoKSAmJiAobWFya2VyLm9mZnNldCgpLnRvcCA+IHRoaXMuZG9tLm9mZnNldCgpLnRvcCAtIDUwKSk7XG5cdH1cblxuXHRoaWRlKGh1bWFuQWN0aW9uIDogYm9vbGVhbiA9IHRydWUpXG5cdHtcblx0XHRpZiAoIXRoaXMuaXNEaXNwbGF5ZWRBc2lkZSgpKVxuXHRcdHtcdFx0XHRcblx0XHRcdHRoaXMuaGlkZURldGFpbHMoKTtcblx0XHRcdHRoaXMuZG9tLmFuaW1hdGUoeydoZWlnaHQnOiAnMCd9LCAzNTAsICdzd2luZycsICgpID0+IFxuXHRcdFx0e1xuXHRcdFx0XHRBcHAuY29tcG9uZW50LnVwZGF0ZU1hcFNpemUoKTtcblx0XHRcdFx0dGhpcy5kb20uaGlkZSgpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHQkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuY3NzKCdtYXJnaW4tcmlnaHQnLCcwcHgnKTtcblxuXHRcdFx0aWYgKHRoaXMuZG9tLmlzKCc6dmlzaWJsZScpKVxuXHRcdFx0e1x0XHRcblx0XHRcdFx0dGhpcy5kb20uYW5pbWF0ZSh7J3JpZ2h0JzonLTUwMHB4J30sMzUwLCdzd2luZycsZnVuY3Rpb24oKVxuXHRcdFx0XHR7IFxuXHRcdFx0XHRcdCQodGhpcykuaGlkZSgpOyAgXG5cdCAgXHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVNYXBTaXplKCk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVx0XHRcblx0XHR9XG5cblx0XHRpZiAoaHVtYW5BY3Rpb24pIHRoaXMub25IaWRlLmVtaXQodHJ1ZSk7XHRcdFxuXG5cdFx0c2V0VGltZW91dCggKCkgPT4gdGhpcy5kb20uZmluZCgnI2VsZW1lbnQtaW5mbycpLmh0bWwoJycpLCAzNTApO1xuXG5cdFx0aWYgKHRoaXMuZWxlbWVudFZpc2libGUgJiYgdGhpcy5lbGVtZW50VmlzaWJsZS5tYXJrZXIpIHRoaXMuZWxlbWVudFZpc2libGUubWFya2VyLnNob3dOb3JtYWxTaXplKHRydWUpO1xuXG5cdFx0dGhpcy5lbGVtZW50VmlzaWJsZSA9IG51bGw7XG5cdFx0dGhpcy5pc1Zpc2libGUgPSBmYWxzZTtcdFx0XG5cdH07XG5cblx0dG9nZ2xlRGV0YWlscygpXG5cdHtcdFxuXHRcdGlmICggdGhpcy5kb20uZmluZCgnLm1vcmVEZXRhaWxzJykuaXMoJzp2aXNpYmxlJykgKVxuXHRcdHtcblx0XHRcdHRoaXMuaGlkZURldGFpbHMoKTtcblx0XHRcdHRoaXMuZWxlbWVudFZpc2libGUuY29tcG9uZW50Lm1lbnVDb21wb25lbnQuc2hvd0Z1bGxUZXh0TWVudShmYWxzZSk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZiAodGhpcy5kb21NZW51LndpZHRoKCkgPj0gdGhpcy5kb21NZW51LmZpbmQoJy5tZW51LWVsZW1lbnQtaXRlbTp2aXNpYmxlJykubGVuZ3RoKjEwMCkgdGhpcy5lbGVtZW50VmlzaWJsZS5jb21wb25lbnQubWVudUNvbXBvbmVudC5zaG93RnVsbFRleHRNZW51KHRydWUpO1xuXG5cdFx0XHR0aGlzLmRvbS5maW5kKCcuZWxlbWVudC1pdGVtJykuYWRkQ2xhc3MoJ2FjdGl2ZScpO1x0XHRcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5tb3JlRGV0YWlscycpLnNob3coKTtcdFxuXHRcdFx0dGhpcy5kb20uZmluZCgnLm1vcmVEZXRhaWxzLnRhYnMnKS5jc3MoJ2Rpc3BsYXknLCdmbGV4Jyk7XHRcdFxuXHRcdFx0XG5cdFx0XHQvLyBzaG93IHRoZSBleHBhbmQgbGFiZWwgaW4gaGVhZGVyIHdoZW4gaW50ZXJhY3RpdmUgc2VjdGlvbiBpcyB2aXNpYmxlXG5cdFx0XHRpZiAodGhpcy5kb20uZmluZCgnLmludGVyYWN0aXZlLXNlY3Rpb24nKS5oZWlnaHQoKSA+IDAgfHwgdGhpcy5kb20uZmluZCgnLmluZm8tYmFyLXRhYnMnKS5oZWlnaHQoKSA+IDApIFxuXHRcdFx0XHR0aGlzLmRvbS5maW5kKCcuZXhwYW5kTGFiZWwnKS5yZW1vdmVDbGFzcygnYmdkU29mdENvbG9yQXMgdHJhbnNmb3JtLWJpZycpO1xuXG5cdFx0XHR0aGlzLmRvbS5hbmltYXRlKHsnaGVpZ2h0JzonMTAwJSd9LDQwMCwnc3dpbmcnKTtcblxuXHRcdCAgIGxldCBoZWlnaHQgPSAgJCgnLmdvZ29jYXJ0by1jb250YWluZXInKS5oZWlnaHQoKTtcblx0XHRcdGhlaWdodCAtPSB0aGlzLmRvbS5maW5kKCcuY29sbGFwc2libGUtaGVhZGVyJykub3V0ZXJIZWlnaHQodHJ1ZSk7XHRcdFx0XG5cdFx0XHRoZWlnaHQgLT0gdGhpcy5kb20uZmluZCgnLmludGVyYWN0aXZlLXNlY3Rpb24nKS5vdXRlckhlaWdodCh0cnVlKTtcdFxuXHRcdFx0aGVpZ2h0IC09IHRoaXMuZG9tLmZpbmQoXCIubWVudS1lbGVtZW50XCIpLm91dGVySGVpZ2h0KHRydWUpO1xuXHRcdFx0aGVpZ2h0IC09IHRoaXMuZG9tLmZpbmQoXCIuaW5mby1iYXItdGFic1wiKS5vdXRlckhlaWdodCh0cnVlKTtcblxuXHRcdCAgdGhpcy5kb20uZmluZCgnLmNvbGxhcHNpYmxlLWJvZHknKS5jc3MoJ2hlaWdodCcsIGhlaWdodCk7XHRcblxuXHRcdCAgdGhpcy5zaG93Qm9keU1haW5UYWIoKTtcblx0XHQgIHRoaXMuZWxlbWVudFZpc2libGUuY29tcG9uZW50LmltYWdlc0NvbXBvbmVudC52ZXJ0aWNhbEFsaWduQ3VycmVudEltYWdlKCk7XG5cdFx0ICBBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQuaGlkZSgpO1xuXHRcdH1cdFxuXHR9O1xuXG5cdGhpZGVEZXRhaWxzKClcblx0e1xuXHRcdEFwcC5nb2dvQ29udHJvbENvbXBvbmVudC5zaG93KCk7XG5cblx0XHRpZiAodGhpcy5kb20uZmluZCgnLm1vcmVEZXRhaWxzJykuaXMoJzp2aXNpYmxlJykpXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLm1vcmVEZXRhaWxzJykuaGlkZSgpO1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLmVsZW1lbnQtaXRlbScpLnJlbW92ZUNsYXNzKCdhY3RpdmUnKTtcdFxuXG5cdFx0XHRsZXQgZWxlbWVudEluZm9CYXJfbmV3SGVpZ2h0ID0gdGhpcy5kb20uZmluZCgnI2VsZW1lbnQtaW5mbycpLm91dGVySGVpZ2h0KHRydWUpO1xuXG5cdFx0XHR0aGlzLmRvbS5hbmltYXRlKHsnaGVpZ2h0JzogZWxlbWVudEluZm9CYXJfbmV3SGVpZ2h0fSwgNDAwLCAnc3dpbmcnKTtcblx0XHR9XHRcblx0fTtcblxuXHR1cGRhdGVJbmZvQmFyU2l6ZSgpXG5cdHtcblx0XHRpZiAoIXRoaXMuaXNEaXNwbGF5ZWRBc2lkZSgpKSB0aGlzLmRvbS5maW5kKCcubW9yZURldGFpbHMnKS5jc3MoJ2hlaWdodCcsICdhdXRvJyk7XG5cdFx0ZWxzZSBcblx0XHR7XHRcdFx0XG5cdFx0ICBcdGxldCBlbGVtZW50SW5mb0JhciA9IHRoaXMuZG9tO1xuXHRcdCAgXHRsZXQgaGVpZ2h0ID0gZWxlbWVudEluZm9CYXIub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cdFx0XHRcdGhlaWdodCAtPSBlbGVtZW50SW5mb0Jhci5maW5kKCcuY29sbGFwc2libGUtaGVhZGVyJykub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cdFx0XHRcdGhlaWdodCAtPSBlbGVtZW50SW5mb0Jhci5maW5kKCcuaW50ZXJhY3RpdmUtc2VjdGlvbjp2aXNpYmxlJykub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cdFx0XHRcdGhlaWdodCAtPSBlbGVtZW50SW5mb0Jhci5maW5kKCcuaW5mby1iYXItdGFiczp2aXNpYmxlJykub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cdFx0XHRcdGhlaWdodCAtPSBlbGVtZW50SW5mb0Jhci5maW5kKFwiLm1lbnUtZWxlbWVudFwiKS5vdXRlckhlaWdodCh0cnVlKTtcblxuXHRcdCAgXHR0aGlzLmRvbS5maW5kKCcuY29sbGFwc2libGUtYm9keScpLmNzcygnaGVpZ2h0JywgaGVpZ2h0KTtcblx0XHR9XG5cdH1cdFxuXG5cdHByaXZhdGUgc2hvd0JvZHlNYWluVGFiKCkgeyB0aGlzLmRvbS5maW5kKCcuaW5mby1iYXItdGFicycpLnRhYnMoJ3NlbGVjdF90YWInLCAnYm9keS1tYWluLXRhYi1jb250ZW50Jyk7IH1cbn1cblxuIiwiZGVjbGFyZSBsZXQgJCA6IGFueTtcblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuLi8uLi91dGlscy9jb29raWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXBDb250cm9sc0NvbXBvbmVudFxueyAgICBcbiAgbGlzdGVuZXJMYXllckNoYW5nZUhhc0JlZW5DcmVhdGVkID0gZmFsc2U7XG5cbiAgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICAkKCcjZXhwb3J0LWlmcmFtZS1idG4nKS5jbGljayggKCkgPT4gXG4gICAgeyBcbiAgICAgICQoJyNleHBvcnQtaWZyYW1lLWJ0bicpLmhpZGVUb29sdGlwKCk7XG4gICAgICB0aGlzLnVwZGF0ZUlmcmFtZUNvZGUoKTtcbiAgICAgICQoJyNtb2RhbC1pZnJhbWUnKS5vcGVuTW9kYWwoKTsgXG4gICAgfSk7XG5cbiAgICAkKCcjbWFwLWRlZmF1bHQtdmlldy1idG4nKS5jbGljayggKCkgPT5cbiAgICB7XG4gICAgICBBcHAuZ2VvY29kZXIuZ2VvY29kZUFkZHJlc3MoJycsIChyZXN1bHQpID0+IHsgXG4gICAgICAgIEFwcC5tYXBDb21wb25lbnQuZml0Qm91bmRzKEFwcC5nZW9jb2Rlci5nZXRCb3VuZHMoKSwgdHJ1ZSk7IFxuICAgICAgfSk7IFxuICAgIH0pO1xuXG4gICAgJCgnI2dlb2xvY2FsaXplLWJ0bicpLmNsaWNrKCAoKSA9PlxuICAgIHtcbiAgICAgIEFwcC5zZWFyY2hCYXJDb21wb25lbnQuZ2VvbG9jYXRlVXNlcigpO1xuICAgIH0pO1xuXG4gICAgJCgnLmZlYXR1cmUtYnV0dG9uJykudG9vbHRpcCgpO1xuXG4gICAgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCAjY2hhbmdlLWxheWVycycpLmNsaWNrKCAoZSkgPT5cbiAgICB7XG4gICAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwICNjaGFuZ2UtbGF5ZXJzJykuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMuc2hvd0NvbnRyb2xMYXllcnMoKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7XG5cbiAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwICNjbG9zZS1sYXllcnMtcGFuZWwnKS5jbGljayggKGUpID0+XG4gICAgeyAgICBcbiAgICAgIHRoaXMuaGlkZUNvbnRyb2xMYXllcnMoKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSk7ICBcblxuICAgIC8vIHVwZGF0ZSBpZnJhbWUgY29kZSB3aGVuIHBhcmFtcyBjaGFuZ2VcbiAgICAkKCcjbW9kYWwtaWZyYW1lIC5pZnJhbWUtcGFyYW0nKS5jaGFuZ2UoICgpID0+IHsgdGhpcy51cGRhdGVJZnJhbWVDb2RlKCk7IH0pO1xuXG4gICAgJCgnLmxheWVycy1idXR0b24nKS50b29sdGlwKCk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUlmcmFtZUNvZGUoKVxuICB7XG4gICAgbGV0IHNyYyA9IHdpbmRvdy5sb2NhdGlvbi5vcmlnaW4gKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgc3JjICs9IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2gubGVuZ3RoID4gMCA/IHdpbmRvdy5sb2NhdGlvbi5zZWFyY2ggKyAnJicgOiAnPyc7XG4gICAgc3JjICs9ICdpZnJhbWU9MSc7XG4gICAgaWYgKCQoJyNwYXJ0LXRheG9ub215LWNoZWNrYm94JykuaXMoJzpjaGVja2VkJykpIHNyYyArPSAnJmZ1bGxUYXhvbm9teT0wJztcbiAgICBcbiAgICB2YXIgc3RhbXBzSWRzID0gW107XG4gICAgJCgnI21vZGFsLWlmcmFtZSAuaWZyYW1lLXBhcmFtLnN0YW1wLXBhcmFtJykuZWFjaChmdW5jdGlvbigpIFxuICAgIHtcbiAgICAgIGlmICgkKHRoaXMpLmlzKCc6Y2hlY2tlZCcpKSB7IHN0YW1wc0lkcy5wdXNoKCQodGhpcykuZGF0YSgnaWQnKSk7IH1cbiAgICB9KTtcbiAgICBpZiAoc3RhbXBzSWRzLmxlbmd0aCA+IDApIHNyYyArPSAnJnN0YW1wc0lkcz0nICsgc3RhbXBzSWRzLmpvaW4oJywnKTtcbiAgICBcbiAgICBzcmMgKz0gd2luZG93LmxvY2F0aW9uLmhhc2g7XG5cbiAgICBsZXQgd2lkdGggPSAkKCcjaWZyYW1lLXdpZHRoJykudmFsKCkgPyAkKCcjaWZyYW1lLXdpZHRoJykudmFsKCkgOiAnODAwJztcbiAgICBsZXQgaGVpZ2h0ID0gJCgnI2lmcmFtZS1oZWlnaHQnKS52YWwoKSA/ICQoJyNpZnJhbWUtaGVpZ2h0JykudmFsKCkgOiAnNjAwJztcblxuICAgIGxldCBpZnJhbWVDb2RlID0gYDxpZnJhbWUgd2lkdGg9XCIke3dpZHRofVwiIGhlaWdodD1cIiR7aGVpZ2h0fVwiIHNyYz1cIiR7c3JjfVwiIGZyYW1lYm9yZGVyPVwiMFwiIG1hcmdpbmhlaWdodD1cIjBcIiBtYXJnaW53aWR0aD1cIjBcIj48L2lmcmFtZT5gXG4gICAgJCgnI21vZGFsLWlmcmFtZSAjaWZyYW1lLWNvZGUnKS52YWwoaWZyYW1lQ29kZSk7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUxpc3RlbmVyRm9yTGF5ZXJzKClcbiAge1xuICAgIGlmICh0aGlzLmxpc3RlbmVyTGF5ZXJDaGFuZ2VIYXNCZWVuQ3JlYXRlZCkgcmV0dXJuO1xuICAgIFxuICAgIGlmIChBcHAuY29uZmlnLm1hcC5zYXZlVGlsZUxheWVySW5Db29raWVzKVxuICAgIHtcbiAgICAgIC8vIGxpc3RlbiBmb3IgYmFzZSBsYXllciBzZWxlY3Rpb24sIHRvIHN0b3JlIHZhbHVlIGluIGNvb2tpZVxuICAgICAgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCAubGVhZmxldC1jb250cm9sLWxheWVycy1zZWxlY3RvcicpLmNoYW5nZSggZnVuY3Rpb24oZSkgXG4gICAgICB7ICAgIFxuICAgICAgICBDb29raWVzLmNyZWF0ZUNvb2tpZSgnZGVmYXVsdEJhc2VMYXllcicsICQodGhpcykuc2libGluZ3MoJ3NwYW4nKS50ZXh0KCksIDEwMCk7XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICB0aGlzLmxpc3RlbmVyTGF5ZXJDaGFuZ2VIYXNCZWVuQ3JlYXRlZCA9IHRydWU7XG4gIH1cblxuICBzaG93Q29udHJvbExheWVycygpXG4gIHtcbiAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzJykuc2hvdygpO1xuICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgI2Nsb3NlLWxheWVycy1wYW5lbCcpLnNob3coKTtcbiAgICB0aGlzLmNyZWF0ZUxpc3RlbmVyRm9yTGF5ZXJzKCk7XG4gIH1cblxuICBoaWRlQ29udHJvbExheWVycygpXG4gIHtcbiAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzJykuaGlkZSgpO1xuICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgI2Nsb3NlLWxheWVycy1wYW5lbCcpLmhpZGUoKTsgIFxuICB9XG59IiwiaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgVmlld1BvcnQsIEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgR2VvY29kZVJlc3VsdCwgUmF3Qm91bmRzIH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvZ2VvY29kZXIubW9kdWxlXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuLi8uLi91dGlscy9jb29raWVzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciAkLCBMIDogYW55O1xuXG4vKipcbiogVGhlIE1hcCBDb21wb25lbnQgd2hvIGVuY2Fwc3VsYXRlIHRoZSBtYXBcbipcbiogTWFwQ29tcG9uZW50IHB1YmxpY3MgbWV0aG9kcyBtdXN0IGJlIGFzIGluZGVwZW5kYW50IGFzIHBvc3NpYmxlXG4qIGZyb20gdGVjaG5vbG9neSB1c2VkIGZvciB0aGUgbWFwIChsZWFmbGV0IC4uLilcbipcbiogTWFwIGNvbXBvbmVudCBpcyBsaWtlIGFuIGludGVyZmFjZSBiZXR3ZWVuIHRoZSBtYXAgYW5kIHRoZSByZXN0IG9mIHRoZSBBcHBcbiovXG5leHBvcnQgY2xhc3MgTWFwQ29tcG9uZW50XG57XG5cdG9uTWFwUmVhZHkgPSBuZXcgRXZlbnQ8YW55PigpO1xuXHRvbk1hcExvYWRlZCA9IG5ldyBFdmVudDxhbnk+KCk7XG5cdG9uQ2xpY2sgPSBuZXcgRXZlbnQ8YW55PigpO1xuXHRvbklkbGUgPSBuZXcgRXZlbnQ8YW55PigpO1xuXG5cdC8vTGVhZmxldCBtYXBcblx0bWFwXyA6IEwuTWFwID0gbnVsbDtcblxuXHRtYXJrZXJDbHVzdGVyZXJHcm91cCA9IG51bGw7XG5cdGlzSW5pdGlhbGl6ZWQgOiBib29sZWFuID0gZmFsc2U7XG5cdGlzTWFwTG9hZGVkIDogYm9vbGVhbiA9IGZhbHNlO1xuXHRvbGRab29tID0gLTE7XG5cdHZpZXdwb3J0IDogVmlld1BvcnQgPSBudWxsO1xuXHQvLyByZXF1ZXN0ZWQgYm91bmRzIHdobyBjb3VsZCBub3QgYmUgZGlzcGxheWVkIHdoZW4gbWFwIG5vdCBpbml0aWFsaXplZCAoc2VlIGZpdGJvdW5kcyBtZXRob2QpXG5cdHdhaXRpbmdCb3VuZHMgOiBMLkxhdExuZ0JvdW5kcyA9IG51bGw7XG5cblx0Z2V0TWFwKCl7IHJldHVybiB0aGlzLm1hcF87IH07IFxuXHRnZXRDZW50ZXIoKSA6IEwuTGF0TG5nIHsgcmV0dXJuIHRoaXMudmlld3BvcnQgPyBMLmxhdExuZyh0aGlzLnZpZXdwb3J0LmxhdCwgdGhpcy52aWV3cG9ydC5sbmcpIDogbnVsbDsgfVxuXHRnZXRCb3VuZHMoKSA6IEwuTGF0TG5nQm91bmRzIHsgcmV0dXJuIHRoaXMuaXNNYXBMb2FkZWQgPyB0aGlzLm1hcF8uZ2V0Qm91bmRzKCkgOiBudWxsOyB9XG5cdGdldFpvb20oKSB7IHJldHVybiB0aGlzLm1hcF8uZ2V0Wm9vbSgpOyB9XG5cdGdldE9sZFpvb20oKSB7IHJldHVybiB0aGlzLm9sZFpvb207IH1cblxuXHRzaG93KCkgeyAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuc2hvdygpOyB9XG5cdFxuXHRoaWRlKCkgeyAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuaGlkZSgpOyB9XG5cblx0aW5pdGlhbGl6ZSgpIFxuXHR7XHRcblx0XHRpZiAodGhpcy5pc0luaXRpYWxpemVkKSB7IHRoaXMucmVzaXplKCk7IHJldHVybjsgfVxuXG5cdFx0bGV0IGNvbmZpZ1RpbGVMYXllcnMgPSBBcHAuY29uZmlnLm1hcC50aWxlTGF5ZXJzO1xuXHRcdGxldCBiYXNlTGF5ZXJzID0ge307XG5cdFx0Zm9yKGxldCB0aWxlTGF5ZXIgb2YgY29uZmlnVGlsZUxheWVycylcblx0XHR7XG5cdFx0XHRiYXNlTGF5ZXJzW3RpbGVMYXllci5uYW1lXSA9IEwudGlsZUxheWVyKHRpbGVMYXllci51cmwsIHthdHRyaWJ1dGlvbjogdGlsZUxheWVyLmF0dHJpYnV0aW9ufSk7XG5cdFx0fVxuXG5cdFx0Ly8gR2V0IGRlZmF1bHRCYXNlTGF5ZXIgZnJvbSBDb29raWUgaWYgcG9zc2libGVcblx0XHRsZXQgYmFzZUxheWVySWQgPSBBcHAuY29uZmlnLm1hcC5zYXZlVGlsZUxheWVySW5Db29raWVzID8gQ29va2llcy5yZWFkQ29va2llKCdkZWZhdWx0QmFzZUxheWVyJykgOiBudWxsO1xuXHRcdGxldCBkZWZhdWx0QmFzZUxheWVyID0gYmFzZUxheWVycy5oYXNPd25Qcm9wZXJ0eShiYXNlTGF5ZXJJZCkgPyBiYXNlTGF5ZXJzW2Jhc2VMYXllcklkXSA6IGJhc2VMYXllcnNbQXBwLmNvbmZpZy5tYXAuZGVmYXVsdFRpbGVMYXllcl07XG5cblx0XHR0aGlzLm1hcF8gPSBMLm1hcCgnZGlyZWN0b3J5LWNvbnRlbnQtbWFwJywge1xuXHRcdCAgICB6b29tQ29udHJvbDogZmFsc2UsXG5cdFx0ICAgIGxheWVyczogW2RlZmF1bHRCYXNlTGF5ZXJdXG5cdFx0fSk7XG5cblx0XHR0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwID0gTC5tYXJrZXJDbHVzdGVyR3JvdXAoe1xuXHRcdCAgICBzcGlkZXJmeU9uTWF4Wm9vbTogdHJ1ZSxcblx0XHQgICAgc2hvd0NvdmVyYWdlT25Ib3ZlcjogZmFsc2UsXG5cdFx0ICAgIHpvb21Ub0JvdW5kc09uQ2xpY2s6IHRydWUsXG5cdFx0ICAgIHNwaWRlcmZ5T25Ib3ZlcjogZmFsc2UsXG5cdFx0ICAgIHNwaWRlcmZ5TWF4Q291bnQ6IEluZmluaXR5LFxuXHRcdCAgICBzcGlkZXJmeURpc3RhbmNlTXVsdGlwbGllcjogMS4xLFxuXHRcdCAgICBjaHVua2VkTG9hZGluZzogdHJ1ZSxcblx0XHQgICAgYW5pbWF0ZTogZmFsc2UsXG5cdFx0ICAgIG1heENsdXN0ZXJSYWRpdXM6ICh6b29tKSA9PlxuXHRcdCAgICB7XG5cdFx0ICAgIFx0aWYgKHpvb20gPiAxMCkgcmV0dXJuIDYwO1xuXHRcdCAgICBcdGlmICh6b29tID4gNykgcmV0dXJuIDcwO1xuXHRcdCAgICBcdGVsc2UgcmV0dXJuIDcwO1xuXHRcdCAgICB9XG5cdFx0fSk7XG5cblx0XHR0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwLm9uKCdzcGlkZXJmaWVkJywgKGNsdXN0ZXJzLCBtYXJrZXJzKSA9PlxuXHRcdHtcblx0XHRcdEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c0ljb25zKHRydWUpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5hZGRNYXJrZXJDbHVzdGVyR3JvdXAoKTtcdFx0XG5cblx0XHRMLmNvbnRyb2wuem9vbSh7cG9zaXRpb246J3RvcHJpZ2h0J30pLmFkZFRvKHRoaXMubWFwXyk7XHRcdFxuXHRcdEwuY29udHJvbC5sYXllcnMoYmFzZUxheWVycywge30sIHtwb3NpdGlvbjondG9wcmlnaHQnLCBjb2xsYXBzZWQ6IGZhbHNlfSkuYWRkVG8odGhpcy5tYXBfKTtcblxuXHRcdHRoaXMubWFwXy5vbignc2luZ2xlY2xpY2snLCAoZSkgPT4geyB0aGlzLm9uQ2xpY2suZW1pdCgpOyB9KTtcblx0XHR0aGlzLm1hcF8ub24oJ21vdmVlbmQnLCAoZSkgPT4gXG5cdFx0eyBcblx0XHRcdGxldCB2aXNpYmxlTWFya2Vyc0xlbmd0aCA9ICQoJy5sZWFmbGV0LW1hcmtlci1pY29uOnZpc2libGUnKS5sZW5ndGg7XHRcdFxuXHRcdFx0QXBwLmJvdW5kc01vZHVsZS5leHRlbmRNYXBCb3VuZHModGhpcy5vbGRab29tLCB0aGlzLm1hcF8uZ2V0Wm9vbSgpLCB2aXNpYmxlTWFya2Vyc0xlbmd0aCk7XHRcdFx0XG5cdFx0XHRcblx0XHRcdHRoaXMudXBkYXRlVmlld1BvcnQoKTtcblx0XHRcdHRoaXMub25JZGxlLmVtaXQoKTsgXG5cdFx0XHR0aGlzLm9sZFpvb20gPSB0aGlzLm1hcF8uZ2V0Wm9vbSgpO1x0XHRcdFxuXHRcdH0pO1xuXHRcdHRoaXMubWFwXy5vbignbG9hZCcsIChlKSA9PiBcblx0XHR7IFxuXHRcdFx0dGhpcy5pc01hcExvYWRlZCA9IHRydWU7IFxuXHRcdFx0dGhpcy5vbk1hcExvYWRlZC5lbWl0KCk7XHRcdFx0XG5cdFx0fSk7XG5cblx0XHR0aGlzLnJlc2l6ZSgpO1xuXHRcdHRoaXMuaXNJbml0aWFsaXplZCA9IHRydWU7XG5cblx0XHQvLyBpZiB3ZSBiZWdhbiB3aXRoIExpc3QgTW9kZSwgd2hlbiB3ZSBpbml0aWFsaXplIG1hcFxuXHRcdC8vIHRoZXJlIGlzIGFscmVhZHkgYW4gYWRkcmVzcyBnZW9jb2RlZCBvciBhIHZpZXdwb3J0IGRlZmluZWRcblx0XHRpZiAodGhpcy53YWl0aW5nQm91bmRzKSB0aGlzLmZpdEJvdW5kcyh0aGlzLndhaXRpbmdCb3VuZHMsIGZhbHNlKTtcblx0XHRlbHNlIGlmICh0aGlzLnZpZXdwb3J0KSBzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMuc2V0Vmlld1BvcnQodGhpcy52aWV3cG9ydCk7IH0sMjAwKTtcblx0XHRcblx0XHR0aGlzLm9uTWFwUmVhZHkuZW1pdCgpO1xuXHR9O1xuXG5cdGFkZE1hcmtlckNsdXN0ZXJHcm91cCgpIHsgdGhpcy5tYXBfLmFkZExheWVyKHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXApOyB9XG5cblx0cmVzaXplKClcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJSZXNpemUsIGN1cnIgdmlld3BvcnQgOlwiKTtcblx0XHQvLyBXYXJuaW5nICFJIGNoYW5nZWQgdGhlIGxlYWZsZXQuanMgZmlsZSBsaWJyYXJ5IG15c2VsZlxuXHRcdC8vIGJlY2F1c2UgdGhlIG9wdGlvbnMgZG9lc24ndCB3b3JrIHByb3Blcmx5XG5cdFx0Ly8gSSBjaGFuZ2VkIGl0IHRvIGF2b2lkIHBhbm5pbmcgd2hlbiByZXNpemluZyB0aGUgbWFwXG5cdFx0Ly8gYmUgY2FyZWZ1bCBpZiB1cGRhdGluZyB0aGUgbGVhZmxldCBsaWJyYXJ5IHRoaXMgd2lsbFxuXHRcdC8vIG5vdCB3b3JrIGFueW1vcmVcblx0XHRpZiAodGhpcy5tYXBfKSB0aGlzLm1hcF8uaW52YWxpZGF0ZVNpemUoZmFsc2UpO1xuXHR9XG5cblx0YWRkTWFya2VyKG1hcmtlciA6IEwuTWFya2VyKVxuXHR7XG5cdFx0dGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cC5hZGRMYXllcihtYXJrZXIpO1xuXHR9XG5cblx0YWRkTWFya2VycyhtYXJrZXJzIDogTC5NYXJrZXJbXSlcblx0e1xuXHRcdGlmICh0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwKSB0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwLmFkZExheWVycyhtYXJrZXJzKTtcblx0fVxuXG5cdHJlbW92ZU1hcmtlcihtYXJrZXIgOiBMLk1hcmtlcilcblx0e1xuXHRcdHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXAucmVtb3ZlTGF5ZXIobWFya2VyKTtcblx0fVxuXG5cdHJlbW92ZU1hcmtlcnMobWFya2VycyA6IEwuTWFya2VyW10pXG5cdHtcblx0XHRpZiAodGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cCkgdGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cC5yZW1vdmVMYXllcnMobWFya2Vycyk7XG5cdH1cblxuXHRjbGVhck1hcmtlcnMoKVxuXHR7XG5cdFx0aWYgKHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXApIHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXAuY2xlYXJMYXllcnMoKTtcblx0fVxuXG5cdGZpdEVsZW1lbnRzQm91bmRzKGVsZW1lbnRzIDogRWxlbWVudFtdKVxuXHR7XG5cdFx0bGV0IGJvdW5kcyA9IEwubGF0TG5nQm91bmRzKCk7XG5cdFx0Zm9yKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzKSBib3VuZHMuZXh0ZW5kKGVsZW1lbnQucG9zaXRpb24pO1xuXHRcdHRoaXMuZml0Qm91bmRzKGJvdW5kcyk7XG5cdH1cblxuXHQvLyBmaXQgbWFwIHZpZXcgdG8gYm91bmRzXG5cdGZpdEJvdW5kcyhib3VuZHMgOiBMLkxhdExuZ0JvdW5kcywgYW5pbWF0ZSA6IGJvb2xlYW4gPSB0cnVlKVxuXHR7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJmaXRib3VuZHNcIiwgYm91bmRzKTtcblx0XHRpZiAoIXRoaXMuaXNJbml0aWFsaXplZClcblx0XHR7XG5cdFx0XHR0aGlzLndhaXRpbmdCb3VuZHMgPSBib3VuZHM7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdC8qaWYgKHRoaXMuaXNNYXBMb2FkZWQgJiYgYW5pbWF0ZSkgQXBwLm1hcCgpLmZseVRvQm91bmRzKGJvdW5kcyk7XG5cdFx0ZWxzZSovIEFwcC5tYXAoKS5maXRCb3VuZHMoYm91bmRzKTtcblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IEFwcC5tYXBNYW5hZ2VyLmhhbmRsZU1hcElkbGUoKTsgY29uc29sZS5sb2coXCJmb3JjZSBpZGxlXCIpOyB9LCA1MDApO1xuXHR9XHRcdFxuXG5cdGZpdERlZmF1bHRCb3VuZHMoKVxuXHR7XG5cdFx0dGhpcy5maXRCb3VuZHMoQXBwLmJvdW5kc01vZHVsZS5kZWZhdWx0Qm91bmRzKTtcblx0fVxuXG5cdHBhblRvTG9jYXRpb24obG9jYXRpb24gOiBMLkxhdExuZywgem9vbT8sIGFuaW1hdGUgOiBib29sZWFuID0gdHJ1ZSlcblx0e1xuXHRcdHpvb20gPSB6b29tIHx8IHRoaXMuZ2V0Wm9vbSgpIHx8IDEyO1xuXHRcdC8vIGNvbnNvbGUubG9nKFwicGFuVG9sb2NhdGlvblwiLCBsb2NhdGlvbik7XG5cblx0XHQvKmlmICh0aGlzLmlzTWFwTG9hZGVkICYmIGFuaW1hdGUpIHRoaXMubWFwXy5mbHlUbyhsb2NhdGlvbiwgem9vbSk7XG5cdFx0ZWxzZSovIHRoaXMubWFwXy5zZXRWaWV3KGxvY2F0aW9uLCB6b29tKTtcblx0fTtcblxuXHQvLyB0aGUgYWN0dWFsIGRpc3BsYXllZCBtYXAgcmFkaXVzIChkaXN0YW5jZSBmcm9tIGNyb25lciB0byBjZW50ZXIpXG5cdG1hcFJhZGl1c0luS20oKSA6IG51bWJlclxuXHR7XG5cdFx0aWYgKCF0aGlzLmlzTWFwTG9hZGVkKSByZXR1cm4gMDtcblx0XHRyZXR1cm4gTWF0aC5mbG9vcih0aGlzLm1hcF8uZ2V0Qm91bmRzKCkuZ2V0Tm9ydGhFYXN0KCkuZGlzdGFuY2VUbyh0aGlzLm1hcF8uZ2V0Q2VudGVyKCkpIC8gMTAwMCk7XG5cdH1cblxuXHQvLyBkaXN0YW5jZSBmcm9tIGxhc3Qgc2F2ZWQgbG9jYXRpb24gdG8gYSBwb3NpdGlvblxuXHRkaXN0YW5jZUZyb21Mb2NhdGlvblRvKHBvc2l0aW9uIDogTC5MYXRMbmcpXG5cdHtcblx0XHRpZiAoIUFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKSByZXR1cm4gbnVsbDtcblx0XHRyZXR1cm4gQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uKCkuZGlzdGFuY2VUbyhwb3NpdGlvbikgLyAxMDAwO1xuXHR9XG5cblx0Y29udGFpbnMocG9zaXRpb24gOiBMLkxhdExuZ0V4cHJlc3Npb24pIDogYm9vbGVhblxuXHR7XG5cdFx0aWYgKHBvc2l0aW9uICYmIHRoaXMuaXNNYXBMb2FkZWQpXG5cdFx0e1xuXHRcdFx0IHJldHVybiB0aGlzLm1hcF8uZ2V0Qm91bmRzKCkuY29udGFpbnMocG9zaXRpb24pO1xuXHRcdH1cblx0XHRjb25zb2xlLmxvZyhcIk1hcENvbXBvbmVudC0+Y29udGFpbnMgOiBtYXAgbm90IGxvYWRlZCBvciBlbGVtZW50IHBvc2l0aW9uIHVuZGVmaW5lZFwiKTtcblx0XHRyZXR1cm4gZmFsc2U7XHRcdFxuXHR9XG5cblx0ZXh0ZW5kZWRDb250YWlucyhwb3NpdGlvbiA6IEwuTGF0TG5nRXhwcmVzc2lvbikgOiBib29sZWFuXG5cdHtcblx0XHRpZiAodGhpcy5pc01hcExvYWRlZCAmJiBwb3NpdGlvbilcblx0XHR7XG5cdFx0XHQgcmV0dXJuIEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kZWRCb3VuZHMuY29udGFpbnMocG9zaXRpb24pO1xuXHRcdH1cblx0XHQvL2NvbnNvbGUubG9nKFwiTWFwQ29tcG9uZW50LT5jb250YWlucyA6IG1hcCBub3QgbG9hZGVkIG9yIGVsZW1lbnQgcG9zaXRpb24gdW5kZWZpbmVkXCIpO1xuXHRcdHJldHVybiBmYWxzZTtcblx0fVxuXG5cdHVwZGF0ZVZpZXdQb3J0KClcblx0e1xuXHRcdGlmICghdGhpcy52aWV3cG9ydCkgdGhpcy52aWV3cG9ydCA9IG5ldyBWaWV3UG9ydCgpO1xuXHRcdHRoaXMudmlld3BvcnQubGF0ID0gIHRoaXMubWFwXy5nZXRDZW50ZXIoKS5sYXQ7XG5cdFx0dGhpcy52aWV3cG9ydC5sbmcgPSAgdGhpcy5tYXBfLmdldENlbnRlcigpLmxuZztcblx0XHR0aGlzLnZpZXdwb3J0Lnpvb20gPSB0aGlzLmdldFpvb20oKTtcblx0fVx0XG5cblx0c2V0Vmlld1BvcnQoJHZpZXdwb3J0IDogVmlld1BvcnQsICRwYW5NYXBUb1ZpZXdwb3J0IDogYm9vbGVhbiA9IHRydWUpXG5cdHtcdFx0XG5cdFx0aWYgKHRoaXMubWFwXyAmJiAkdmlld3BvcnQgJiYgJHBhbk1hcFRvVmlld3BvcnQpXG5cdFx0e1xuXHRcdFx0Ly9jb25zb2xlLmxvZyhcInNldFZpZXdQb3J0XCIsICR2aWV3cG9ydCk7XG5cdFx0XHRsZXQgdGltZW91dCA9IEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZSA/IDUwMCA6IDA7XG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMubWFwXy5zZXRWaWV3KEwubGF0TG5nKCR2aWV3cG9ydC5sYXQsICR2aWV3cG9ydC5sbmcpLCAkdmlld3BvcnQuem9vbSkgfSwgdGltZW91dCk7XG5cdFx0fVxuXHRcdHRoaXMudmlld3BvcnQgPSAkdmlld3BvcnQ7XG5cdH1cblxuXHRpc01hcEJvdW5kcygpIHsgcmV0dXJuIHRoaXMuZ2V0TWFwKCkgJiYgdGhpcy5nZXRNYXAoKS5nZXRCb3VuZHMoKTsgfVxuXG5cdGhhc1pvb21lZEluKClcbiAge1xuICAgIGxldCB6b29tID0gdGhpcy5nZXRab29tKCk7XG4gICAgbGV0IG9sZF96b29tID0gdGhpcy5nZXRPbGRab29tKCk7XG4gICAgcmV0dXJuICh6b29tICE9IG9sZF96b29tICYmIG9sZF96b29tICE9IC0xICYmIHpvb20gPiBvbGRfem9vbSk7XG4gIH1cbn1cbiIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgbGV0ICQsIEwgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBNYXJrZXJcbntcblx0cHJpdmF0ZSBlbGVtZW50SWQgOiBzdHJpbmc7XG5cdHByaXZhdGUgaXNBbmltYXRpbmcgOiBib29sZWFuID0gZmFsc2U7XG5cdC8vIHdlIHVzZSBsZWFmbGV0IG1hcmtlcnMgdG8gZGlzcGxheSBtYXJrZXIgb24gbWFwLiBNYXJrZXIgaXMganVzdCBhIGV4dGVuc2lvbiBvZiBsZWFmbGV0TWFya2VyXG5cdHByaXZhdGUgbGVhZmxldE1hcmtlciA6IEwuTWFya2VyO1xuXHQvLyB3ZSBtYXkgd2FudCB0byBoYWxmIGhpZGRlbiBzb21lcyBtYXJrZXJzIGluIHBhcnRpY3VsYXIgc3RhdGVzIChzZXR0aW5nIG9wYWNpdHkgdG8gLjUpXG5cdHByaXZhdGUgaGFsZkhpZGRlbiA6IGJvb2xlYW4gPSBmYWxzZTtcblx0Ly8gd2UgdW5jbGVzdGVyaXplIHNtYWxsIGNsdXN0ZXJzIHRvIHNob3cgZGlyZWN0bHkgdGhlIG1hcmtlcnMuIEZvciB0aGUgbWFya2VycyB0byBiZSB2aXNpYmxlLCB3aSBpbmNsaW5hdGUgc29tZSBvZiB0aGVtIHRvIHJpZ2h0IG9mIGxlZnRcblx0cHJpdmF0ZSBpbmNsaW5hdGlvbiA9IFwibm9ybWFsXCI7XG5cblx0Y29uc3RydWN0b3IoZWxlbWVudElkIDogc3RyaW5nLCBwb3NpdGlvbl8gOiBMLkxhdExuZykgXG5cdHtcblx0XHR0aGlzLmVsZW1lbnRJZCA9IGVsZW1lbnRJZDtcblxuXHRcdGlmICghcG9zaXRpb25fKVxuXHRcdHtcblx0XHRcdGxldCBlbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50KCk7XG5cdFx0XHRpZiAoZWxlbWVudCA9PT0gbnVsbCkgY29uc29sZS5sb2coXCJlbGVtZW50IG5vbiBnZW9sb2NhbGl6ZWQgaWQgPSBcIiArIHRoaXMuZWxlbWVudElkKTtcblx0XHRcdGVsc2UgcG9zaXRpb25fID0gZWxlbWVudC5wb3NpdGlvbjtcblx0XHR9IFxuXG5cdFx0dGhpcy5sZWFmbGV0TWFya2VyID0gTC5tYXJrZXIocG9zaXRpb25fLCB7ICdyaXNlT25Ib3ZlcicgOiB0cnVlfSk7XHRcdFx0XHRcblx0XHR0aGlzLmxlYWZsZXRNYXJrZXIub24oJ2NsaWNrJywgKGV2KSA9PiB7IEFwcC5tYXBNYW5hZ2VyLmhhbmRsZU1hcmtlckNsaWNrKHRoaXMpOyB9KTtcdFxuXHRcdHRoaXMubGVhZmxldE1hcmtlci5vbignbW91c2VvdmVyJywgKGV2KSA9PiB7IGlmICghdGhpcy5pc0FuaW1hdGluZykgdGhpcy5zaG93QmlnU2l6ZSgpOyB9KTtcblx0XHR0aGlzLmxlYWZsZXRNYXJrZXIub24oJ21vdXNlb3V0JywgKGV2KSA9PiB7IGlmICghdGhpcy5pc0FuaW1hdGluZykgdGhpcy5zaG93Tm9ybWFsU2l6ZSgpOyB9KTtcblx0XHR0aGlzLmxlYWZsZXRNYXJrZXIuc2V0SWNvbihMLmRpdkljb24oe2NsYXNzTmFtZTogJ2xlYWZsZXQtbWFya2VyLWNvbnRhaW5lcicsIGh0bWw6IFwiPHNwYW4gaWQ9XFxcIm1hcmtlci1cIisgdGhpcy5lbGVtZW50SWQgKyBcIlxcXCIgZ29nby1pY29uLW1hcmtlcj48L3NwYW4+XCJ9KSk7XG5cdH07XHRcdFxuXG5cdHVwZGF0ZSgpIFxuXHR7XHRcdFxuXHRcdGxldCBlbGVtZW50ID0gdGhpcy5nZXRFbGVtZW50KCk7XG5cblx0XHRsZXQgZGlzYWJsZU1hcmtlciA9IGZhbHNlO1xuXHRcdGxldCBzaG93TW9yZUljb24gPSB0cnVlO1xuXG5cdFx0bGV0IG9wdGlvbnNUb0Rpc3BsYXkgPSBlbGVtZW50LmdldEljb25zVG9EaXNwbGF5KCk7XG5cblx0XHRsZXQgaHRtbE1hcmtlciA9IEFwcC50ZW1wbGF0ZU1vZHVsZS5yZW5kZXIoJ21hcmtlcicsIFxuXHRcdHtcblx0XHRcdGVsZW1lbnQgOiBlbGVtZW50LCBcblx0XHRcdG1haW5PcHRpb25Ub0Rpc3BsYXk6IG9wdGlvbnNUb0Rpc3BsYXlbMF0sXG5cdFx0XHRvdGhlck9wdGlvbnNUb0Rpc3BsYXk6IG9wdGlvbnNUb0Rpc3BsYXkuc2xpY2UoMSksIFxuXHRcdFx0c2hvd01vcmVJY29uIDogc2hvd01vcmVJY29uLFxuXHRcdFx0ZGlzYWJsZU1hcmtlciA6IGRpc2FibGVNYXJrZXIsXG5cdFx0XHRwZW5kaW5nQ2xhc3MgOiBlbGVtZW50LmlzUGVuZGluZygpICYmIEFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCdwZW5kaW5nJykgPyAncGVuZGluZycgOiAnJyxcblx0XHRcdHNob3dQZW5kaW5nIDogZWxlbWVudC5pc1BlbmRpbmcoKSAmJiBBcHAuY29uZmlnLmlzRmVhdHVyZUF2YWlsYWJsZSgncGVuZGluZycpLFxuXHRcdFx0Y29uZmlnIDogQXBwLmNvbmZpZ1xuXHRcdH0pO1xuXG5cdFx0Ly8gc2F2ZSB0aGUgY2xhc3MgYmVjYXVzZSBpdCBoYXMgYmVlbiBtb2RpZmllZCBieSBtYXJrZXIgY2x1c3RlciBhZGRpbmcgb3Jcblx0XHQvLyByZW1vdmluZyB0aGUgXCJyb3RhdGVcIiBjbGFzc1x0XG5cdFx0bGV0IG9sZENsYXNzTmFtZSA9ICg8YW55PnRoaXMubGVhZmxldE1hcmtlcikuX2ljb24gPyAgKDxhbnk+dGhpcy5sZWFmbGV0TWFya2VyKS5faWNvbi5jbGFzc05hbWUgOiAnbGVhZmxldC1tYXJrZXItY29udGFpbmVyJztcblx0XHRvbGRDbGFzc05hbWUucmVwbGFjZSgnbGVhZmxldC1tYXJrZXItaWNvbicsICcnKTtcbiAgXHR0aGlzLmxlYWZsZXRNYXJrZXIuc2V0SWNvbihMLmRpdkljb24oe2NsYXNzTmFtZTogb2xkQ2xhc3NOYW1lLCBodG1sOiBodG1sTWFya2VyfSkpO1x0XG5cbiAgXHRpZiAodGhpcy5pc0Rpc3BsYXllZE9uRWxlbWVudEluZm9CYXIoKSkgdGhpcy5zaG93QmlnU2l6ZSgpO1xuXHR9O1xuXG5cdGFuaW1hdGVEcm9wKCkgXG5cdHtcblx0XHR0aGlzLmlzQW5pbWF0aW5nID0gdHJ1ZTtcblx0XHR0aGlzLmRvbU1hcmtlcigpLmFuaW1hdGUoe3RvcDogJy09MjVweCd9LCAzMDAsICdlYXNlSW5PdXRDdWJpYycpO1xuXHRcdHRoaXMuZG9tTWFya2VyKCkuYW5pbWF0ZSh7dG9wOiAnKz0yNXB4J30sIDI1MCwgJ2Vhc2VJbk91dEN1YmljJywgKCkgPT4ge3RoaXMuaXNBbmltYXRpbmcgPSBmYWxzZTsgdGhpcy5kb21NYXJrZXIoKS5jc3MoJ3RvcCcsICdhdXRvJyl9ICk7XG5cdH07XHRcblxuXHRzaG93QmlnU2l6ZSgpIFxuXHR7XHRcdFx0XG5cdFx0dGhpcy5hZGRDbGFzc1RvTGVhZmxldE1hcmtlcl8oXCJCaWdTaXplXCIpO1xuXHRcdGxldCBkb21NYXJrZXIgPSB0aGlzLmRvbU1hcmtlcigpO1xuXHRcdGRvbU1hcmtlci5wYXJlbnQoKS5maW5kKCcubWFya2VyLW5hbWUnKS5zaG93KCk7XG5cdFx0ZG9tTWFya2VyLmZpbmQoJy5tb3JlSWNvbkNvbnRhaW5lcicpLnNob3coKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLmdvZ28taWNvbi1wbHVzLWNpcmNsZScpLmhpZGUoKTtcblx0fTtcblxuXHRzaG93Tm9ybWFsU2l6ZSgkZm9yY2UgOiBib29sZWFuID0gZmFsc2UpIFxuXHR7XHRcblx0XHRpZiAoISRmb3JjZSAmJiB0aGlzLmlzRGlzcGxheWVkT25FbGVtZW50SW5mb0JhcigpKSByZXR1cm47XG5cblx0XHRsZXQgZG9tTWFya2VyID0gdGhpcy5kb21NYXJrZXIoKTtcblx0XHR0aGlzLnJlbW92ZUNsYXNzVG9MZWFmbGV0TWFya2VyXyhcIkJpZ1NpemVcIik7XG5cdFx0ZG9tTWFya2VyLnBhcmVudCgpLmZpbmQoJy5tYXJrZXItbmFtZScpLmhpZGUoKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLm1vcmVJY29uQ29udGFpbmVyJykuaGlkZSgpO1xuXHRcdGRvbU1hcmtlci5maW5kKCcuZ29nby1pY29uLXBsdXMtY2lyY2xlJykuc2hvdygpO1xuXHR9O1xuXG5cdHNob3dIYWxmSGlkZGVuKCRmb3JjZSA6IGJvb2xlYW4gPSBmYWxzZSkgXG5cdHtcdFx0XG5cdFx0aWYgKCEkZm9yY2UgJiYgdGhpcy5pc0Rpc3BsYXllZE9uRWxlbWVudEluZm9CYXIoKSkgcmV0dXJuO1xuXG5cdFx0dGhpcy5hZGRDbGFzc1RvTGVhZmxldE1hcmtlcl8oXCJoYWxmSGlkZGVuXCIpO1xuXHRcdGxldCBkb21NYXJrZXIgPSB0aGlzLmRvbU1hcmtlcigpO1xuXHRcdGRvbU1hcmtlci5jc3MoJ3otaW5kZXgnLCcxJyk7XG5cdFx0ZG9tTWFya2VyLmZpbmQoJy5nb2dvLWljb24tcGx1cy1jaXJjbGUnKS5hZGRDbGFzcyhcImhhbGZIaWRkZW5cIik7XG5cdFx0ZG9tTWFya2VyLmZpbmQoJy5tb3JlSWNvbkNvbnRhaW5lcicpLmFkZENsYXNzKFwiaGFsZkhpZGRlblwiKTtcblxuXHRcdHRoaXMuaGFsZkhpZGRlbiA9IHRydWU7XG5cdH07XG5cblx0c2hvd05vcm1hbEhpZGRlbigpIFxuXHR7XHRcdFxuXHRcdHRoaXMucmVtb3ZlQ2xhc3NUb0xlYWZsZXRNYXJrZXJfKFwiaGFsZkhpZGRlblwiKTtcblx0XHRsZXQgZG9tTWFya2VyID0gdGhpcy5kb21NYXJrZXIoKTtcblx0XHRkb21NYXJrZXIuY3NzKCd6LWluZGV4JywnMTAnKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLmdvZ28taWNvbi1wbHVzLWNpcmNsZScpLnJlbW92ZUNsYXNzKFwiaGFsZkhpZGRlblwiKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLm1vcmVJY29uQ29udGFpbmVyJykucmVtb3ZlQ2xhc3MoXCJoYWxmSGlkZGVuXCIpO1xuXG5cdFx0dGhpcy5oYWxmSGlkZGVuID0gZmFsc2U7XG5cdH07XG5cblx0cHJpdmF0ZSBhZGRDbGFzc1RvTGVhZmxldE1hcmtlcl8oY2xhc3NUb0FkZCkgXG5cdHtcdFx0XG5cdFx0dGhpcy5kb21NYXJrZXIoKS5hZGRDbGFzcyhjbGFzc1RvQWRkKTtcblx0XHR0aGlzLmRvbU1hcmtlcigpLnNpYmxpbmdzKCcubWFya2VyLW5hbWUnKS5hZGRDbGFzcyhjbGFzc1RvQWRkKTsgXG5cdH07XG5cblx0cHJpdmF0ZSByZW1vdmVDbGFzc1RvTGVhZmxldE1hcmtlcl8oY2xhc3NUb1JlbW92ZSkgXG5cdHtcdFx0XG5cdFx0dGhpcy5kb21NYXJrZXIoKS5yZW1vdmVDbGFzcyhjbGFzc1RvUmVtb3ZlKTtcblx0XHR0aGlzLmRvbU1hcmtlcigpLnNpYmxpbmdzKCcubWFya2VyLW5hbWUnKS5yZW1vdmVDbGFzcyhjbGFzc1RvUmVtb3ZlKTsgICAgICBcblx0fTtcblxuXHRpc0Rpc3BsYXllZE9uRWxlbWVudEluZm9CYXIoKSB7IHJldHVybiBBcHAuaW5mb0JhckNvbXBvbmVudC5nZXRDdXJyRWxlbWVudElkKCkgPT0gdGhpcy5lbGVtZW50SWQ7IH1cblxuXHRkb21NYXJrZXIoKSB7IHJldHVybiAkKCcjbWFya2VyLScrIHRoaXMuZWxlbWVudElkKTsgfVxuXG5cdGdldElkICgpIDogc3RyaW5nIHsgcmV0dXJuIHRoaXMuZWxlbWVudElkOyB9O1xuXG5cdGdldExlYWZsZXRNYXJrZXIgKCkgOiBMLk1hcmtlciB7IHJldHVybiB0aGlzLmxlYWZsZXRNYXJrZXI7IH07XG5cblx0aXNIYWxmSGlkZGVuKCkgOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuaGFsZkhpZGRlbjsgfVxuXG5cdGdldEVsZW1lbnQgKCkgOiBFbGVtZW50IHsgcmV0dXJuIEFwcC5lbGVtZW50c01vZHVsZS5nZXRFbGVtZW50QnlJZCh0aGlzLmVsZW1lbnRJZCk7IH07XG5cblx0Z2V0UG9zaXRpb24gKCkgOiBMLkxhdExuZyB7IHJldHVybiB0aGlzLmxlYWZsZXRNYXJrZXIuZ2V0TGF0TG5nKCk7IH07XG59XG5cbiIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5kZWNsYXJlIHZhciAkIDogYW55O1xuXG5leHBvcnQgY2xhc3MgQWJzdHJhY3RNb2RhbENvbXBvbmVudFxue1xuXHRkb20gOiBhbnk7XG5cdGVsZW1lbnQgOiBFbGVtZW50O1x0XG5cdHByb3RlY3RlZCBhamF4VXJsID0gXCJcIjtcblxuXHRjb25zdHJ1Y3Rvcihkb20gOiBzdHJpbmcpXG5cdHtcblx0XHR0aGlzLmRvbSA9ICQoZG9tKTtcblx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR0aGlzLmJpbmRzKCk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgaW5pdGlhbGl6ZSgpIHt9XG5cblx0cHJvdGVjdGVkIGJpbmRzKClcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5jbGljaygoZSkgPT4gdGhpcy5oYW5kbGVTdWJtaXQoZSkpO1xuXHR9XG5cblx0b3BlbihlbGVtZW50IDogRWxlbWVudClcblx0e1x0XHRcblx0XHR0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuXHRcdHRoaXMuY2xlYXJMb2FkZXIoKTtcblx0XHR0aGlzLmRvbS5maW5kKCcuZ2VuZXJpYy1lcnJvci1tZXNzYWdlJykuaGlkZSgpO1xuXHRcdHRoaXMuYmVmb3JlT3BlbihlbGVtZW50KTtcblx0XHR0aGlzLmRvbS5vcGVuTW9kYWwoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBiZWZvcmVPcGVuKGVsZW1lbnQgOiBFbGVtZW50KSB7IH1cblxuXHRwcm90ZWN0ZWQgaGFuZGxlU3VibWl0KGUpIFxuXHR7XG5cdFx0aWYgKCF0aGlzLmVsZW1lbnQpIHJldHVybjtcblx0XHR0aGlzLmRpc3BsYXlMb2FkZXIoKTtcblx0XHR0aGlzLnN1Ym1pdCgpO1x0XHRcblx0XHRlLnN0b3BQcm9wYWdhdGlvbigpO2Uuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpO1xuXHR9XG5cblx0c3VibWl0KCkge31cblxuXHRwcm90ZWN0ZWQgc2VuZFJlcXVlc3QoZGF0YSlcblx0e1xuXHRcdEFwcC5hamF4TW9kdWxlLnNlbmRSZXF1ZXN0KHRoaXMuYWpheFVybCwgJ3Bvc3QnLCBkYXRhLFxuXHRcdCAgKHJlc3BvbnNlKSAgICAgPT4geyBcblx0XHQgIFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB0aGlzLmNsZWFyTG9hZGVyKCksIDUwMCk7IFxuXHRcdCAgXHRcdHRoaXMub25TdWNjZXNzKHJlc3BvbnNlKTtcblx0XHQgIFx0fSxcblx0XHQgIChlcnJvck1lc3NhZ2UpID0+IHsgdGhpcy5jbGVhckxvYWRlcigpOyB0aGlzLm9uRXJyb3IoZXJyb3JNZXNzYWdlKTsgfVxuXHRcdCk7IFxuXHR9XG5cblx0cHJvdGVjdGVkIGRpc3BsYXlMb2FkZXIoKVxuXHR7XG5cdFx0dGhpcy5kb20uZmluZCgnLmNhbmNlbC1idG4nKS5zaG93KCk7XG5cdFx0dGhpcy5kb20uZmluZCgnYnV0dG9uW3R5cGU9c3VibWl0XScpLmhpZGUoKTtcblx0XHR0aGlzLmRvbS5maW5kKCcubG9hZGVyLW92ZXJsYXknKS5mYWRlSW4oODAwKTtcblx0fVxuXG5cdHByb3RlY3RlZCBjbGVhckxvYWRlcigpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcuY2FuY2VsLWJ0bicpLmhpZGUoKTtcblx0XHR0aGlzLmRvbS5maW5kKCdidXR0b25bdHlwZT1zdWJtaXRdJykuc2hvdygpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5sb2FkZXItb3ZlcmxheScpLmhpZGUoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBvblN1Y2Nlc3MocmVzcG9uc2UpXG5cdHtcblx0XHRpZiAocmVzcG9uc2Uuc3VjY2Vzcylcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5jbG9zZU1vZGFsKCk7XG5cdFx0XHR0aGlzLmVsZW1lbnQuY29tcG9uZW50LmFkZEZsYXNoTWVzc2FnZShyZXNwb25zZS5tZXNzYWdlKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMub25FcnJvcihyZXNwb25zZS5tZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25FcnJvcihlcnJvck1lc3NhZ2UpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcjbWVzc2FnZS1lcnJvcicpLnRleHQoZXJyb3JNZXNzYWdlKS5zaG93KCk7XG5cdH1cbn0iLCJkZWNsYXJlIHZhciAkIDogYW55XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL2Fic3RyYWN0LW1vZGFsLmNvbXBvbmVudFwiO1xuXG5leHBvcnQgY2xhc3MgRGVsZXRlQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNb2RhbENvbXBvbmVudFxue1xuXHRjb25zdHJ1Y3RvcigpXG4gICB7XG4gICAgIHN1cGVyKFwiI21vZGFsLWRlbGV0ZVwiKTtcbiAgICAgdGhpcy5hamF4VXJsID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5kZWxldGUudXJsO1xuICAgfVxuXG5cdGJlZm9yZU9wZW4oZWxlbWVudCA6IEVsZW1lbnQpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcuZWxlbWVudE5hbWUnKS50ZXh0KGNhcGl0YWxpemUoZWxlbWVudC5uYW1lKSk7XG5cdFx0dGhpcy5kb20uZmluZCgnLmlucHV0LWNvbW1lbnQnKS52YWwoJycpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5vcHRpb24tcmFkaW8tYnRuOmNoZWNrZWQnKS5wcm9wKCdjaGVja2VkJywgZmFsc2UpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS5oaWRlKCk7XG5cdH1cblxuXHRzdWJtaXQoKVxuXHR7XG5cdFx0bGV0IG1lc3NhZ2UgPSB0aGlzLmRvbS5maW5kKCcuaW5wdXQtY29tbWVudCcpLnZhbCgpO1xuXHRcdGxldCByb3V0ZSA9IEFwcC5jb25maWcuZmVhdHVyZXMuZGVsZXRlLnVybDtcblx0XHRsZXQgZGF0YSA9IHsgZWxlbWVudElkOiB0aGlzLmVsZW1lbnQuaWQsIG1lc3NhZ2U6IG1lc3NhZ2UgfTtcblxuXHRcdHRoaXMuc2VuZFJlcXVlc3QoZGF0YSk7XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25TdWNjZXNzKHJlc3BvbnNlKVxuXHR7XG5cdFx0bGV0IHJlc3BvbnNlTWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG5cdFx0bGV0IHN1Y2Nlc3MgPSByZXNwb25zZS5zdWNjZXNzO1xuXG5cdFx0aWYgKHN1Y2Nlc3MpXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uY2xvc2VNb2RhbCgpO1xuXHRcdFx0QXBwLmluZm9CYXJDb21wb25lbnQuc2hvdygpO1xuXG5cdFx0XHR0aGlzLmVsZW1lbnQudXBkYXRlKHRydWUpO1xuXHRcdFx0dGhpcy5lbGVtZW50LmlzRnVsbHlMb2FkZWQgPSBmYWxzZTtcblxuXHRcdFx0Ly8gcmVsb2FkIEVsZW1lbnQsIGFuZCBhZGQgZmxhc2ggbWVzc2FnZVxuXHRcdFx0QXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQodGhpcy5lbGVtZW50LmlkLCAoKSA9PiB7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7XG5cdFx0XHR9KTtcblxuXHRcdFx0dGhpcy5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS50ZXh0KHJlc3BvbnNlTWVzc2FnZSkuc2hvdygpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBvbkVycm9yKG1lc3NhZ2UpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykudGV4dChtZXNzYWdlKS5zaG93KCk7XG5cdH1cbn0iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFic3RyYWN0TW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9hYnN0cmFjdC1tb2RhbC5jb21wb25lbnRcIjtcblxuZGVjbGFyZSB2YXIgJCA6IGFueTtcblxuZXhwb3J0IGNsYXNzIFBpY2tBZGRyZXNzQ29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNb2RhbENvbXBvbmVudFxue1xuICBjb25zdHJ1Y3RvcigpIHsgc3VwZXIoXCIjbW9kYWwtcGljay1hZGRyZXNzXCIpOyB9XG5cbiAgYmluZHMoKVxuICB7ICAgIFxuICAgIC8vIGJ1dHRvbiB0byBjb25maXJtIGNhbGN1bGF0ZSBpZHJlY3Rpb25zIGluIG1vZGFsIHBpY2sgYWRkcmVzcyBmb3IgZGlyZWN0aW9uc1xuICAgIHRoaXMuZG9tLmZpbmQoJyNidG4tY2FsY3VsYXRlLWRpcmVjdGlvbnMnKS5jbGljaygoKSA9PiB0aGlzLnN1Ym1pdCgpKTtcbiAgICB0aGlzLmRvbS5maW5kKCdpbnB1dCcpLmtleXVwKChlKSA9PiB7IGlmKGUua2V5Q29kZSA9PSAxMykgdGhpcy5zdWJtaXQoKTsgfSk7ICBcbiAgfVxuXG4gIHByb3RlY3RlZCBiZWZvcmVPcGVuKGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5kb20uZmluZChcIi5tb2RhbC1mb290ZXJcIikuYXR0cignb3B0aW9uLWlkJywgZWxlbWVudC5jb2xvck9wdGlvbklkKTsgICAgXG4gIH1cblxuICBzdWJtaXQoKVxuICB7XG4gICAgbGV0IGFkZHJlc3MgPSB0aGlzLmRvbS5maW5kKCdpbnB1dCcpLnZhbCgpO1xuICAgICAgXG4gICAgaWYgKGFkZHJlc3MpXG4gICAgeyAgICAgIFxuICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucyx7aWQ6IHRoaXMuZWxlbWVudC5pZCB9KTtcblxuICAgICAgQXBwLmdlb2NvZGVyLmdlb2NvZGVBZGRyZXNzKGFkZHJlc3MsXG4gICAgICAoc3VjY2VzcykgPT4ge1xuICAgICAgICB0aGlzLmRvbS5maW5kKCcubW9kYWwtZXJyb3ItbXNnJykuaGlkZSgpO1xuICAgICAgICB0aGlzLmRvbS5jbG9zZU1vZGFsKCk7ICAgICAgICBcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHtcbiAgICAgICAgdGhpcy5kb20uZmluZCgnLm1vZGFsLWVycm9yLW1zZycpLnNob3coKTtcbiAgICAgIH0pOyAgICAgIFxuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgdGhpcy5kb20uZmluZCgnaW5wdXQnKS5hZGRDbGFzcygnaW52YWxpZCcpO1xuICAgIH1cbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuZGVjbGFyZSB2YXIgJCA6IGFueVxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFic3RyYWN0TW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9hYnN0cmFjdC1tb2RhbC5jb21wb25lbnRcIjtcblxuZXhwb3J0IGNsYXNzIFJlcG9ydENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TW9kYWxDb21wb25lbnRcbntcblx0Y29uc3RydWN0b3IoKVxuXHR7XG5cdFx0c3VwZXIoXCIjbW9kYWwtcmVwb3J0XCIpO1xuXHRcdHRoaXMuYWpheFVybCA9IEFwcC5jb25maWcuZmVhdHVyZXMucmVwb3J0LnVybDtcblx0fVxuXG5cdGJlZm9yZU9wZW4oKVxuXHR7XG5cdFx0dGhpcy5kb20uZmluZCgnLmVsZW1lbnROYW1lJykudGV4dChjYXBpdGFsaXplKHRoaXMuZWxlbWVudC5uYW1lKSk7XG5cblx0XHR0aGlzLmRvbS5maW5kKCcuaW5wdXQtY29tbWVudCcpLnZhbCgnJyk7XG5cdFx0dGhpcy5kb20uZmluZCgnLm9wdGlvbi1yYWRpby1idG46Y2hlY2tlZCcpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0dGhpcy5kb20uZmluZCgnI3NlbGVjdC1lcnJvcicpLmhpZGUoKTtcblx0XHR0aGlzLmRvbS5maW5kKCcjbWFpbC1lcnJvcicpLmhpZGUoKTtcblxuXHRcdGlmIChBcHAubG9naW5Nb2R1bGUuZ2V0VXNlckVtYWlsKCkpIFxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykuaGlkZSgpO1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS52YWwoQXBwLmxvZ2luTW9kdWxlLmdldFVzZXJFbWFpbCgpKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykudmFsKCcnKTtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykuc2hvdygpO1xuXHRcdH1cblx0fVxuXG5cdHN1Ym1pdCgpXG5cdHtcblx0XHRpZiAoIXRoaXMuZWxlbWVudCkgcmV0dXJuO1xuXG5cdFx0bGV0IHJlcG9ydFZhbHVlID0gdGhpcy5kb20uZmluZCgnLm9wdGlvbi1yYWRpby1idG46Y2hlY2tlZCcpLmF0dHIoJ3ZhbHVlJyk7XG5cdFx0bGV0IHVzZXJFbWFpbCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykudmFsKCk7XG5cblx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykuaGlkZSgpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuaGlkZSgpO1xuXG5cdFx0bGV0IGVycm9ycyA9IGZhbHNlO1xuXHRcdGlmICghcmVwb3J0VmFsdWUpXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnI3NlbGVjdC1lcnJvcicpLnNob3coKTtcblx0XHRcdGVycm9ycyA9IHRydWU7XG5cdFx0fVxuXHRcdGlmICghdXNlckVtYWlsIHx8IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykuaGFzQ2xhc3MoJ2ludmFsaWQnKSlcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcjbWFpbC1lcnJvcicpLnNob3coKTtcblx0XHRcdGVycm9ycyA9IHRydWU7XG5cdFx0fVxuXHRcdGlmICghZXJyb3JzKVxuXHRcdHtcdFx0XHRcblx0XHRcdGxldCBjb21tZW50ID0gdGhpcy5kb20uZmluZCgnLmlucHV0LWNvbW1lbnQnKS52YWwoKTtcblx0XHRcdGxldCByb3V0ZSA9IEFwcC5jb25maWcuZmVhdHVyZXMucmVwb3J0LnVybDtcblx0XHRcdGxldCBkYXRhID0gIHsgZWxlbWVudElkOiB0aGlzLmVsZW1lbnQuaWQsIHZhbHVlOiByZXBvcnRWYWx1ZSwgY29tbWVudDogY29tbWVudCwgdXNlckVtYWlsIDogdXNlckVtYWlsIH07XG5cblx0XHRcdHRoaXMuc2VuZFJlcXVlc3QoZGF0YSk7XHRcdFxuXHRcdH0gZWxzZSB7XG5cdFx0XHR0aGlzLmNsZWFyTG9hZGVyKClcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25FcnJvcihlcnJvck1lc3NhZ2UpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykudGV4dChlcnJvck1lc3NhZ2UpLnNob3coKTtcblx0fVxufVx0XG4iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5cbmRlY2xhcmUgdmFyICQgOiBhbnlcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50IH0gZnJvbSBcIi4vYWJzdHJhY3QtbW9kYWwuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5cbmV4cG9ydCBjbGFzcyBTZW5kRW1haWxDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50XG57XG4gIGNvbnN0cnVjdG9yKClcbiAge1xuICAgIHN1cGVyKFwiI21vZGFsLXNlbmQtZW1haWxcIik7XG4gICAgdGhpcy5hamF4VXJsID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5zZW5kTWFpbC51cmw7XG4gIH1cblxuICBiZWZvcmVPcGVuKGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5kb20uZmluZCgnLmVsZW1lbnROYW1lJykudGV4dChjYXBpdGFsaXplKHRoaXMuZWxlbWVudC5uYW1lKSk7XG5cbiAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbC1jb250ZW50JykudmFsKCcnKTtcbiAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbC1zdWJqZWN0JykudmFsKCcnKTtcbiAgICB0aGlzLmRvbS5maW5kKCcjY29udGVudC1lcnJvcicpLmhpZGUoKTtcbiAgICB0aGlzLmRvbS5maW5kKCcjbWFpbC1lcnJvcicpLmhpZGUoKTtcblxuICAgIGlmIChBcHAubG9naW5Nb2R1bGUuZ2V0VXNlckVtYWlsKCkpXG4gICAge1xuICAgICAgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5oaWRlKCk7XG4gICAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLnZhbChBcHAubG9naW5Nb2R1bGUuZ2V0VXNlckVtYWlsKCkpO1xuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS52YWwoJycpO1xuICAgICAgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5zaG93KCk7XG4gICAgfVxuICB9XG5cbiAgc3VibWl0KClcbiAge1xuICAgIGxldCB1c2VyRW1haWwgPSB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLnZhbCgpO1xuICAgIGxldCBtYWlsU3ViamVjdCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsLXN1YmplY3QnKS52YWwoKTtcbiAgICBsZXQgbWFpbENvbnRlbnQgPSB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbC1jb250ZW50JykudmFsKCk7XG5cbiAgICB0aGlzLmRvbS5maW5kKCcjbWVzc2FnZS1lcnJvcicpLmhpZGUoKTtcbiAgICB0aGlzLmRvbS5maW5kKCcjY29udGVudC1lcnJvcicpLmhpZGUoKTtcbiAgICB0aGlzLmRvbS5maW5kKCcjbWFpbC1lcnJvcicpLmhpZGUoKTtcblxuICAgIGxldCBlcnJvcnMgPSBmYWxzZTtcbiAgICBpZiAoIW1haWxTdWJqZWN0IHx8ICFtYWlsQ29udGVudClcbiAgICB7XG4gICAgICB0aGlzLmRvbS5maW5kKCcjY29udGVudC1lcnJvcicpLnNob3coKTtcbiAgICAgIGVycm9ycyA9IHRydWU7XG4gICAgfVxuICAgIGlmICghdXNlckVtYWlsIHx8IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykuaGFzQ2xhc3MoJ2ludmFsaWQnKSlcbiAgICB7XG4gICAgICB0aGlzLmRvbS5maW5kKCcjbWFpbC1lcnJvcicpLnNob3coKTtcbiAgICAgIHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykuc2hvdygpO1xuICAgICAgZXJyb3JzID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoIWVycm9ycylcbiAgICB7ICAgICAgXG4gICAgICBsZXQgY29tbWVudCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1jb21tZW50JykudmFsKCk7XG4gICAgICBsZXQgZGF0YSA9IHsgZWxlbWVudElkOiB0aGlzLmVsZW1lbnQuaWQsIHN1YmplY3Q6IG1haWxTdWJqZWN0LCBjb250ZW50OiBtYWlsQ29udGVudCwgdXNlckVtYWlsIDogdXNlckVtYWlsIH07XG4gICAgICB0aGlzLnNlbmRSZXF1ZXN0KGRhdGEpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmNsZWFyTG9hZGVyKClcbiAgICB9XG4gIH0gIFxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuZGVjbGFyZSB2YXIgJCA6IGFueVxuaW1wb3J0IHsgRWxlbWVudCwgRWxlbWVudFN0YXR1cyB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEFic3RyYWN0TW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9hYnN0cmFjdC1tb2RhbC5jb21wb25lbnRcIjtcblxuZXhwb3J0IGNsYXNzIFZvdGVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50XG57XG5cdGNvbnN0cnVjdG9yKCkgXG5cdHsgXG5cdFx0c3VwZXIoXCIjbW9kYWwtdm90ZVwiKTsgXG5cdFx0dGhpcy5hamF4VXJsID0gQXBwLmNvbmZpZy5mZWF0dXJlcy52b3RlLnVybDtcbiAgICAgIHRoaXMuZG9tLmZpbmQoJyNzZWxlY3Qtdm90ZScpLm1hdGVyaWFsX3NlbGVjdCgpO1x0XG5cdH1cblxuXHRiZWZvcmVPcGVuKGVsZW1lbnQgOiBFbGVtZW50KVxuXHR7XG5cdFx0Ly8gZHluYW1pY2FsbHkgY3JlYXRlIHZvdGUgdGVtcGxhdGVcblx0XHR0aGlzLmRvbS5maW5kKCcuc3BlY2lmaWMtY29udGVudCcpLmh0bWwoQXBwLnRlbXBsYXRlTW9kdWxlLnJlbmRlcigndm90ZS1tb2RhbC1jb250ZW50JywgeyBcblx0XHRcdGVsZW1lbnQ6IHRoaXMuZWxlbWVudCwgXG5cdFx0XHRFbGVtZW50U3RhdHVzOiBFbGVtZW50U3RhdHVzLFxuXHRcdFx0aXNBZG1pbjogQXBwLmNvbmZpZy5pc0ZlYXR1cmVBdmFpbGFibGUoJ2RpcmVjdE1vZGVyYXRpb24nKSxcblx0XHRcdGVsZGlzcGxheU5hbWU6IEFwcC5jb25maWcudGV4dC5lbGVtZW50RGVmaW5pdGVcblx0XHR9KSk7ICBcblx0fVxuXG5cdHN1Ym1pdCgpXG5cdHtcblx0XHRsZXQgdm90ZVZhbHVlID0gdGhpcy5kb20uZmluZCgnLm9wdGlvbi1yYWRpby1idG46Y2hlY2tlZCcpLmF0dHIoJ3ZhbHVlJyk7XG5cblx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykuaGlkZSgpO1xuXHRcdFxuXHRcdGlmICh2b3RlVmFsdWUpXG5cdFx0e1x0XHRcdFx0XG5cdFx0XHRsZXQgY29tbWVudCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1jb21tZW50JykudmFsKCk7XG5cdFx0XHRsZXQgcm91dGUgPSBBcHAuY29uZmlnLmZlYXR1cmVzLnZvdGUudXJsO1xuXHRcdFx0bGV0IGRhdGEgPSB7IGVsZW1lbnRJZDogdGhpcy5lbGVtZW50LmlkLCB2YWx1ZTogdm90ZVZhbHVlLCBjb21tZW50OiBjb21tZW50IH07XG5cblx0XHRcdHRoaXMuc2VuZFJlcXVlc3QoZGF0YSk7XHRcdFxuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5jbGVhckxvYWRlcigpO1xuXHRcdFx0dGhpcy5kb20uZmluZCgnI3NlbGVjdC1lcnJvcicpLnNob3coKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25TdWNjZXNzKHJlc3BvbnNlKVxuXHR7XG5cdFx0bGV0IHJlc3BvbnNlTWVzc2FnZSA9IHJlc3BvbnNlLm1lc3NhZ2U7XG5cdFx0bGV0IG5ld3N0YXR1cyA9IHJlc3BvbnNlLmRhdGE7XG5cblx0XHRpZiAoIXJlc3BvbnNlLnN1Y2Nlc3MpIHtcblx0XHRcdHRoaXMub25FcnJvcihyZXNwb25zZU1lc3NhZ2UpO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRcblx0XHQkKCcjbW9kYWwtdm90ZScpLmNsb3NlTW9kYWwoKTtcblxuXHRcdGlmICh0aGlzLmVsZW1lbnQuc3RhdHVzICE9IG5ld3N0YXR1cylcblx0XHR7XG5cdFx0XHR0aGlzLmVsZW1lbnQuc3RhdHVzID0gbmV3c3RhdHVzO1xuXHRcdFx0dGhpcy5lbGVtZW50LnVwZGF0ZSh0cnVlKTtcblx0XHRcdHRoaXMuZWxlbWVudC5pc0Z1bGx5TG9hZGVkID0gZmFsc2U7XG5cblx0XHRcdC8vIHJlbG9hZCBFbGVtZW50LCBhbmQgYWRkIGZsYXNoIG1lc3NhZ2Vcblx0XHRcdGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApIFxuXHRcdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudCh0aGlzLmVsZW1lbnQuaWQsICgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmVsZW1lbnQuY29tcG9uZW50LmFkZEZsYXNoTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpO1xuXHRcdFx0XHR9KTtcblx0XHRcdGVsc2UgdGhpcy5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIG9uRXJyb3IoZXJyb3JNZXNzYWdlKVxuXHR7XG5cdFx0aWYgKCFlcnJvck1lc3NhZ2UgfHwgZXJyb3JNZXNzYWdlLmxlbmd0aCA9PSAwKSBlcnJvck1lc3NhZ2UgPSBcIk91cHMsIHVuZSBlcnJldXIgcydlc3QgcHJvZHVpdGUgISBWZXVpbGxleiByw6llc3NheWVyIHBsdXMgdGFyZCBvdSBub3VzIHNpZ25hbGVyIGxlIHByb2Jsw6htZVwiO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5nZW5lcmljLWVycm9yLW1lc3NhZ2UnKS5odG1sKGVycm9yTWVzc2FnZSkuc2hvdygpO1xuXHR9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMDgtMzFcbiAqL1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcERhdGFUeXBlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBHZW9jb2RlUmVzdWx0IH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvZ2VvY29kZXIubW9kdWxlXCI7XG5kZWNsYXJlIHZhciAkO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgVmlld1BvcnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cblxuZXhwb3J0IGNsYXNzIFNlYXJjaEJhckNvbXBvbmVudFxue1xuXHRwbGFjZWhvbGRlcnMgPSB7XG5cdFx0ZGVmYXVsdDogXCJcIixcblx0XHRwbGFjZTogXCJcIixcblx0XHRlbGVtZW50OiBcIlwiXG5cdH1cblxuXHRzZWFyY2hJbnB1dCgpIHsgcmV0dXJuICQoJy5zZWFyY2gtYmFyJyk7IH1cblxuXHRwcml2YXRlIGN1cnJTZWFyY2hUZXh0IDogc3RyaW5nID0gJyc7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XHRcdFxuXHRcdHRoaXMuc2VhcmNoSW5wdXQoKS5rZXl1cCgoZSkgPT5cblx0XHR7ICAgIFxuXHRcdFx0aWYoZS5rZXlDb2RlID09IDEzKSB7IHRoaXMuaGFuZGxlU2VhcmNoQWN0aW9uKCk7IH0gLy8gcHJlc3MgZW50ZXJcblx0XHR9KTtcblxuXHRcdCQoJy5zZWFyY2gtYmFyLWljb24nKS5jbGljaygoKSA9PiB0aGlzLmhhbmRsZVNlYXJjaEFjdGlvbigpKTtcdFxuXG5cdFx0JCgnLnNlYXJjaC1idG4nKS5jbGljaygoKSA9PiB0aGlzLmhhbmRsZVNlYXJjaEFjdGlvbigpKTtcblx0XHQkKCcuc2VhcmNoLWNhbmNlbC1idG4nKS5jbGljaygoKSA9PiB0aGlzLmNsZWFyTG9hZGVyKCkpO1xuXG5cdFx0JCgnI2J0bi1jbG9zZS1zZWFyY2gtcmVzdWx0JykuY2xpY2soKCkgPT4gdGhpcy5jbGVhckVsZW1lbnRTZWFyY2hSZXN1bHQoKSk7XHRcblxuXHRcdCQoJy5zZWFyY2gtZ2VvbG9jYWxpemUnKS50b29sdGlwKCk7XG5cdFx0JCgnLnNlYXJjaC1nZW9sb2NhbGl6ZScpLmNsaWNrKCgpID0+IHRoaXMuZ2VvbG9jYXRlVXNlcigpKTtcblxuXHRcdHRoaXMuc2VhcmNoSW5wdXQoKS5vbignY2xpY2snLCAoZSkgPT4geyBlLnByZXZlbnREZWZhdWx0KCk7ZS5zdG9wUHJvcGFnYXRpb24oKTsgfSk7XG5cdFx0dGhpcy5zZWFyY2hJbnB1dCgpLm9uKCdmb2N1cycsICgpID0+IHsgdGhpcy5zaG93U2VhcmNoT3B0aW9ucygpOyB9KTtcblx0XHR0aGlzLnNlYXJjaElucHV0KCkub24oJ2tleXVwJywgKCkgPT4gdGhpcy5zaG93U2VhcmNoT3B0aW9ucygpKTtcblxuXHRcdHRoaXMucGxhY2Vob2xkZXJzID0ge1xuXHRcdFx0ZGVmYXVsdDogXCJSZWNoZXJjaGV6IHVuIGxpZXUsIFwiICsgQXBwLmNvbmZpZy50ZXh0LmVsZW1lbnRJbmRlZmluaXRlICsgXCIuLi5cIixcblx0XHRcdHBsYWNlOiBcIkVudHJleiB1bmUgYWRyZXNzZSwgdW4gQ1AsIHVuZSB2aWxsZS4uLlwiLFxuXHRcdFx0ZWxlbWVudDogXCJFbnRyZXogbGUgbm9tIGQnXCIgKyBBcHAuY29uZmlnLnRleHQuZWxlbWVudEluZGVmaW5pdGVcblx0XHR9XHRcdFxuXG5cdFx0dGhpcy51cGRhdGVTZWFyY2hQbGFjZWhvbGRlcigpO1xuXG5cdFx0JCgnLnNlYXJjaC1vcHRpb24tcmFkaW8tYnRuJykuY2hhbmdlKCAoKSA9PiB0aGlzLnVwZGF0ZVNlYXJjaFBsYWNlaG9sZGVyKCkgKTtcblxuXHRcdCQoJyNkaXJlY3RvcnktY29udGVudCwgLmRpcmVjdG9yeS1tZW51LWNvbnRlbnQsIGhlYWRlcicpLmNsaWNrKCAoKSA9PiB0aGlzLmhpZGVTZWFyY2hPcHRpb25zKCkgKTtcblxuXHRcdCQoJyNzZWFyY2gtb3ZlcmxheS1tb2JpbGUgLm92ZXJsYXknKS5jbGljayggKCkgPT4gdGhpcy5oaWRlTW9iaWxlU2VhcmNoQmFyKCkgKTtcblx0fVxuXG5cdC8vIGhhbmRsZSBhbGwgdmFsaWRhdGlvbiBieSB1c2VyIChpbnB1dCBrZXkgZW50ZXIgcHJlc3NlZCwgaWNvbiBjbGljay4uLilcblx0cHJpdmF0ZSBoYW5kbGVTZWFyY2hBY3Rpb24oKVxuXHR7XG5cdFx0dGhpcy5iZWZvcmVTZWFyY2goKTtcblxuXHRcdGxldCBzZWFyY2hUZXh0ID0gdGhpcy5zZWFyY2hJbnB1dCgpLnZhbCgpO1xuXG5cdFx0c3dpdGNoICh0aGlzLnNlYXJjaFR5cGUoKSkgXG4gICAgeyBcbiAgICAgIGNhc2UgXCJwbGFjZVwiOiBcbiAgICAgICAgQXBwLmdlb2NvZGVyLmdlb2NvZGVBZGRyZXNzKHNlYXJjaFRleHQsIFxuICAgICAgICAgIChyZXN1bHQpID0+IHsgXG4gICAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoUmVzdWx0KGZhbHNlKTsgXG4gICAgICAgICAgICB0aGlzLmhpZGVTZWFyY2hPcHRpb25zKCk7IFxuICAgICAgICAgICAgQXBwLm1hcENvbXBvbmVudC5maXRCb3VuZHMoQXBwLmdlb2NvZGVyLmdldEJvdW5kcygpLCB0cnVlKTsgXG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgXHR0aGlzLmNsZWFyTG9hZGVyKCk7XG4gICAgICAgICAgXHQkKCcuc2VhcmNoLW5vLXJlc3VsdCcpLnNob3coKTtcbiAgICAgICAgICB9KTsgXG4gICAgICAgIGJyZWFrOyBcbiAgICAgIGNhc2UgXCJlbGVtZW50XCI6IFxuICAgICAgICBsZXQgdmFsdWUgPSB0aGlzLnNlYXJjaElucHV0KCkudmFsKCk7IFxuICAgICAgICBpZiAodmFsdWUpIFxuICAgICAgICAgIHRoaXMuc2VhcmNoRWxlbWVudHMoc2VhcmNoVGV4dCk7IFxuICAgICAgICBlbHNlIFxuICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2hSZXN1bHQoKTsgXG4gICAgICAgIGJyZWFrOyBcbiAgICB9IFxuXHR9XG5cblx0aGFuZGxlR2VvY29kZVJlc3VsdCgpXG5cdHtcblx0XHR0aGlzLnNldFZhbHVlKEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbkFkZHJlc3MoKSk7XG5cdFx0dGhpcy5jbGVhckxvYWRlcigpO1xuXHR9XHRcblxuXHRnZW9sb2NhdGVVc2VyKClcblx0e1xuXHRcdHRoaXMuYmVmb3JlU2VhcmNoKCk7XG5cdFx0QXBwLmdlb2NvZGVyLmdlb2xvY2F0ZVVzZXIoIChyZXN1bHQ6Vmlld1BvcnQpID0+IFxuXHRcdHtcblx0XHRcdHRoaXMuY2xlYXJTZWFyY2hSZXN1bHQodHJ1ZSk7XG5cdFx0XHR0aGlzLnNldFZhbHVlKFwiR2VvbG9jYWxpc8OpXCIpO1xuXHRcdFx0dGhpcy5oaWRlU2VhcmNoT3B0aW9ucygpO1x0XHRcdFxuXHRcdFx0dGhpcy5jbGVhckxvYWRlcigpO1xuXHRcdH0pO1xuXHR9XHRcblxuXHRzZWFyY2hFbGVtZW50cygkdGV4dCA6IHN0cmluZywgJGJhY2tGcm9tSGlzdG9yeSA9IGZhbHNlKVxuXHR7XHRcdFxuXHRcdHRoaXMuc2V0VmFsdWUoJHRleHQpO1xuXHRcdHRoaXMuY3VyclNlYXJjaFRleHQgPSAkdGV4dDtcblxuXHRcdGxldCByb3V0ZSA9IEFwcC5jb25maWcuZmVhdHVyZXMuc2VhcmNoRWxlbWVudHMudXJsO1xuXHRcdGxldCBkYXRhID0gIHsgdGV4dDogJHRleHQgfTsgXG5cblx0XHRpZiAocm91dGUpIHtcblx0XHRcdEFwcC5hamF4TW9kdWxlLnNlbmRSZXF1ZXN0KHJvdXRlLCAnZ2V0JywgZGF0YSxcblx0XHRcdChzZWFyY2hSZXN1bHQpID0+IFxuXHRcdFx0e1xuXHQgICAgICBBcHAuc2V0RGF0YVR5cGUoQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cywgJGJhY2tGcm9tSGlzdG9yeSwgc2VhcmNoUmVzdWx0KTsgICAgICAgXG5cdCBcblx0ICAgICAgdGhpcy5jbGVhckxvYWRlcigpOyAgICAgICBcblx0ICAgICAgdGhpcy5zaG93U2VhcmNoUmVzdWx0TGFiZWwoc2VhcmNoUmVzdWx0LmRhdGEubGVuZ3RoKTsgICBcblx0IFx0XHRcdEFwcC5nb2dvQ29udHJvbENvbXBvbmVudC51cGRhdGVQb3NpdGlvbigpO1xuXHQgXHRcdFx0dGhpcy5oaWRlTW9iaWxlU2VhcmNoQmFyKCk7IFx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdChlcnJvcikgPT5cblx0XHRcdHtcblx0XHRcdFx0Ly9BcHAuZ2VvY29kZXIuZ2VvY29kZUFkZHJlc3MoJycpO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHQvLyBUT0RPIHNlYXJjaCB0aHJvdWdoIGFscmVhZHkgcmVjZWl2ZWQgZWxlbWVudHMuXG5cdFx0fVx0XHRcdFxuXHR9XG5cblx0c2hvd01vYmlsZVNlYXJjaEJhcigpIHsgXG5cdFx0JCgnI3NlYXJjaC1vdmVybGF5LW1vYmlsZScpLmZhZGVJbigyNTApO1xuXHRcdCQoJy5zZWFyY2gtYmFyLXdpdGgtb3B0aW9ucy1jb250YWluZXInKS5zaG93KCk7XG5cdFx0JCgnLnNlYXJjaC1iYXInKS5mb2N1cygpO1xuXHRcdEFwcC5nb2dvQ29udHJvbENvbXBvbmVudC5oaWRlKDApO1xuXHR9XG5cblx0aGlkZU1vYmlsZVNlYXJjaEJhcigpIHsgXG5cdFx0Ly8gY29uc29sZS5sb2coXCJoaWRlIG1vYmlsZSBzZWFyY2ggYmFyXCIpO1xuXHRcdCQoJyNzZWFyY2gtb3ZlcmxheS1tb2JpbGUnKS5mYWRlT3V0KDE1MCk7XG5cdFx0JCgnLnNlYXJjaC1iYXItd2l0aC1vcHRpb25zLWNvbnRhaW5lci5tb2JpbGUnKS5oaWRlKCk7XG5cdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LnNob3coMCk7XG5cdH1cblxuXHR1cGRhdGUoKSB7XG5cdFx0aWYgKEFwcC5jb21wb25lbnQud2lkdGgoKSA8PSA2MDApXG5cdFx0e1xuXHRcdFx0bGV0IG1vYmlsZVNlYXJjaEJhciA9ICQoJy5zZWFyY2gtYmFyLXdpdGgtb3B0aW9ucy1jb250YWluZXInKTtcblx0XHRcdGlmKG1vYmlsZVNlYXJjaEJhci5wYXJlbnQoJyNzZWFyY2gtb3ZlcmxheS1tb2JpbGUnKS5sZW5ndGghPTEpXG5cdFx0XHRcdCQoJy5zZWFyY2gtYmFyLXdpdGgtb3B0aW9ucy1jb250YWluZXInKS5hcHBlbmRUbygnI3NlYXJjaC1vdmVybGF5LW1vYmlsZScpLmFkZENsYXNzKCdtb2JpbGUnKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdFx0JCgnLnNlYXJjaC1iYXItd2l0aC1vcHRpb25zLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCdtb2JpbGUnKS5wcmVwZW5kVG8oJy5kaXJlY3RvcnktbWVudS1oZWFkZXInKS5zaG93KCk7XG5cdH1cblxuXHRzaG93U2VhcmNoT3B0aW9ucygpXG5cdHtcblx0XHQkKCcuc2VhcmNoLW9wdGlvbnMnKS5zbGlkZURvd24oMzUwKTtcblx0XHRpZiAoIXRoaXMuaXNTZWFyY2hPcHRpb25WaXNpYmxlKCkpIFxuXHRcdFx0JCgnI2RpcmVjdG9yeS1tZW51LW1haW4tY29udGFpbmVyIC5kaXJlY3RvcnktbWVudS1oZWFkZXInKS5hZGRDbGFzcyhcImV4cGFuZGVkXCIpO1xuXG5cdFx0dGhpcy51cGRhdGVTZWFyY2hQbGFjZWhvbGRlcigpO1xuXHR9XG5cblx0aGlkZVNlYXJjaE9wdGlvbnMoKVxuXHR7XHRcdFxuXHRcdCQoJyNkaXJlY3RvcnktbWVudS1tYWluLWNvbnRhaW5lciAuZGlyZWN0b3J5LW1lbnUtaGVhZGVyJykucmVtb3ZlQ2xhc3MoXCJleHBhbmRlZFwiKTtcblx0XHR0aGlzLnNlYXJjaElucHV0KCkuYmx1cigpO1xuXHRcdHRoaXMudXBkYXRlU2VhcmNoUGxhY2Vob2xkZXIoKTtcblx0XHQkKCcjZGlyZWN0b3J5LW1lbnUtbWFpbi1jb250YWluZXIgLnNlYXJjaC1vcHRpb25zJykuc2xpZGVVcCgyNTApO1xuXHR9XG5cblx0dXBkYXRlU2VhcmNoUGxhY2Vob2xkZXIoKVxuXHR7XG5cdFx0bGV0IHBsYWNlaG9sZGVyID0gJyc7XG5cdFx0aWYgKCF0aGlzLmlzU2VhcmNoT3B0aW9uVmlzaWJsZSgpKSBwbGFjZWhvbGRlciA9IHRoaXMucGxhY2Vob2xkZXJzLmRlZmF1bHQ7XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHN3aXRjaCAodGhpcy5zZWFyY2hUeXBlKCkpXG5cdFx0XHR7XG5cdFx0XHRcdGNhc2UgXCJwbGFjZVwiOiAgIHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcnMucGxhY2U7ICAgYnJlYWs7XG5cdFx0XHRcdGNhc2UgXCJlbGVtZW50XCI6IHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcnMuZWxlbWVudDsgYnJlYWs7XG5cdFx0XHR9XG5cdFx0fVx0XHRcdFxuXG5cdFx0dGhpcy5zZWFyY2hJbnB1dCgpLmF0dHIoXCJwbGFjZWhvbGRlclwiLCBwbGFjZWhvbGRlcik7XG5cdH1cdFxuXG5cdHNob3dTZWFyY2hSZXN1bHRMYWJlbCgkbnVtYmVyIDogbnVtYmVyKVxuXHR7XG5cdFx0JCgnLnNlYXJjaC1yZXN1bHQtbnVtYmVyJykudGV4dCgkbnVtYmVyKTtcblx0XHQkKCcuc2VhcmNoLXJlc3VsdC12YWx1ZScpLnRleHQodGhpcy5jdXJyU2VhcmNoVGV4dCk7XG5cdFx0JCgnLnNlYXJjaC1yZXN1bHRzJykuc2hvdygpO1xuXHRcdCQoJy5zZWFyY2gtb3B0aW9ucycpLmhpZGUoKTtcblx0XHQkKCcjZWxlbWVudC1pbmZvLWJhcicpLmFkZENsYXNzKCd3aXRoLXNlYXJjaC1yZXN1bHQtaGVhZGVyJyk7XG5cdH1cblxuXHRoaWRlU2VhcmNoUmVzdWx0KClcblx0e1xuXHRcdCQoJy5zZWFyY2gtcmVzdWx0cycpLmhpZGUoKTtcblx0XHQkKCcjZWxlbWVudC1pbmZvLWJhcicpLnJlbW92ZUNsYXNzKCd3aXRoLXNlYXJjaC1yZXN1bHQtaGVhZGVyJyk7XG5cdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LnVwZGF0ZVBvc2l0aW9uKCk7XG5cdH1cblxuXHRjbGVhckVsZW1lbnRTZWFyY2hSZXN1bHQoKSBcblx0e1xuXHRcdHRoaXMuY2xlYXJTZWFyY2hSZXN1bHQoKTtcblx0XHRBcHAuc2V0TW9kZShBcHBNb2Rlcy5NYXApO1xuXHR9XG5cblx0Y2xlYXJTZWFyY2hSZXN1bHQocmVzZXRWYWx1ZSA9IHRydWUpXG5cdHtcblx0XHRBcHAuc2V0RGF0YVR5cGUoQXBwRGF0YVR5cGUuQWxsKTtcdFx0XG5cdFx0dGhpcy5oaWRlU2VhcmNoUmVzdWx0KCk7XHRcdFxuXHRcdHRoaXMuY2xlYXJMb2FkZXIoKTtcdFxuXHRcdHRoaXMuY3VyclNlYXJjaFRleHQgPSAnJztcblx0XHRpZiAocmVzZXRWYWx1ZSkge1xuXHRcdFx0dGhpcy5zZXRWYWx1ZShcIlwiKTtcblx0XHRcdEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5zZXRUaXRsZShcIlwiKTtcblx0XHR9XHRcdFxuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5oaWRlU2VhcmNoT3B0aW9ucygpOyB9LCAyMDApO1x0XHRcblx0fVxuXG5cdHNldFZhbHVlKCR2YWx1ZSA6IHN0cmluZylcblx0e1xuXHRcdHRoaXMuc2VhcmNoSW5wdXQoKS52YWwoJHZhbHVlKTtcblx0fSAgXG5cblx0Z2V0Q3VyclNlYXJjaFRleHQoKSB7IHJldHVybiB0aGlzLmN1cnJTZWFyY2hUZXh0OyB9XG5cblx0aXNTZWFyY2hPcHRpb25WaXNpYmxlKCkgOiBib29sZWFuXG5cdHtcblx0XHRyZXR1cm4gJCgnLnNlYXJjaC1vcHRpb25zOnZpc2libGUnKS5sZW5ndGg7XG5cdH1cblxuXHRwcml2YXRlIHNlYXJjaFR5cGUoKSA6IHN0cmluZ1xuXHR7XG5cdFx0cmV0dXJuICQoJy5zZWFyY2gtb3B0aW9uLXJhZGlvLWJ0bjpjaGVja2VkJykuYXR0cignZGF0YS1uYW1lJyk7XG5cdH1cblxuXHRwcml2YXRlIGNsZWFyTG9hZGVyKClcblx0e1xuXHRcdCQoJy5zZWFyY2gtYnRuJykuc2hvdygpO1xuXHRcdCQoJy5zZWFyY2gtY2FuY2VsLWJ0bicpLmhpZGUoKTtcblx0fVxuXG5cdHByaXZhdGUgYmVmb3JlU2VhcmNoKClcblx0e1xuXHRcdCQoJy5zZWFyY2gtbm8tcmVzdWx0JykuaGlkZSgpO1xuXHRcdCQoJy5zZWFyY2gtY2FuY2VsLWJ0bicpLnNob3coKTtcblx0XHQkKCcuc2VhcmNoLWJ0bicpLmhpZGUoKTtcblx0fVxuICAgIFxufSIsImRlY2xhcmUgdmFyICQ7XG5kZWNsYXJlIHZhciBudW5qdWNrcywgZ29Hb0NhcnRvO1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcERhdGFUeXBlLCBBcHBNb2RlcywgQXBwU3RhdGVzIH0gZnJvbSAnLi9hcHAubW9kdWxlJztcbmltcG9ydCB7IGdldFF1ZXJ5UGFyYW1zIH0gZnJvbSBcIi4vdXRpbHMvcGFyYW1zXCI7XG5cbmV4cG9ydCB2YXIgQXBwIDogQXBwTW9kdWxlO1xuXG5leHBvcnQgY2xhc3MgR29Hb0NhcnRvTW9kdWxlXG57XG5cdHByaXZhdGUgb3B0aW9ucztcblx0Ly8gRE9NIENvbnRhaW5lciwgY2FuIGJlIGEgc3RyaW5nIChzZWxlY3Rvcikgb3IgRE9NIG9iamVjdFxuXHRjb250YWluZXIgOiBzdHJpbmcgfCBhbnkgPSAnJztcblx0Ly8gb25seSBmb3IgZGVidWdnaW5nXG5cdGFwcDogQXBwTW9kdWxlO1xuXG5cdGNvbnN0cnVjdG9yKGNvbnRhaW5lciA6IHN0cmluZyB8IGFueSwgb3B0aW9ucyA9IHt9KVxuXHR7XG5cdFx0dGhpcy5jb250YWluZXIgPSBjb250YWluZXI7XG5cdFx0dGhpcy5jaGVja0ZvckRpc3RhbnRDb25maWZ1cmF0aW9uKG9wdGlvbnMpO1xuXHR9XG5cblx0LyoqIFxuXHQqIFNldCB0aGUgY3VycmVudCB1c2VyIHJvbGVzXG5cdCogUm9sZSBpcyB1c2VkIHRvIHJlbmRlciBzcGVjaWZpY2FsbHkgY2VydGFpbiB0ZW1wbGF0ZSBhbmQgY29udHJvbFxuXHQqIGNlcnRhaW4gZnVuY3Rpb25hbGl0aWVzXG5cdCovXG5cdHNldFVzZXJSb2xlKCRyb2xlcyA6IHN0cmluZ1tdIHwgc3RyaW5nKSB7IHRoaXMuYXBwLmxvZ2luTW9kdWxlLnNldFJvbGVzKCRyb2xlcyk7IH1cblx0c2V0VXNlclJvbGVzKCRyb2xlcyA6IHN0cmluZ1tdIHwgc3RyaW5nKSB7IHRoaXMuYXBwLmxvZ2luTW9kdWxlLnNldFJvbGVzKCRyb2xlcyk7IH1cblxuXHRzZXRVc2VyRW1haWwoJG1haWwgOiBzdHJpbmcpIHsgdGhpcy5hcHAubG9naW5Nb2R1bGUuc2V0VXNlckVtYWlsKCRtYWlsKTsgfVxuXG5cdC8qKiByZXR1cm4gdGhlIGdpdmVuIGhhc2ggdG8gYWRkIHRvIHVybCBzbyBnb2dvY2FydG8gYXBwIHdpbGwgb3BlbiBvbiBzcGVjaWZpYyBlbGVtZW50ICovXG5cdGdldEVsZW1lbnRSb3V0ZUhhc2goJGVsZW1lbnRJZCwgJGVsZW1lbnROYW1lID0gJ2ZpbmQnKVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuYXBwLnJvdXRlck1vZHVsZS5nZW5lcmF0ZSgnc2hvd19lbGVtZW50JywgeyBpZDogJGVsZW1lbnRJZCwgbmFtZTogJGVsZW1lbnROYW1lIH0pO1xuXHR9XG5cblx0c2hvd0RpcmVjdG9yeU1lbnUoKSB7IHRoaXMuYXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQuc2hvdygpOyB9XG5cblx0aGlkZURpcmVjdG9yeU1lbnUoKSB7IHRoaXMuYXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQuaGlkZSgpOyB9XG5cblx0cHJpdmF0ZSBjaGVja0ZvckRpc3RhbnRDb25maWZ1cmF0aW9uKG9wdGlvbnMgOiBzdHJpbmd8YW55KVxuXHR7XHRcdFxuXHRcdGlmICggdHlwZW9mIG9wdGlvbnMgPT09ICdvYmplY3QnKSB0aGlzLmNoZWNrRm9yRGlzdGFudFRheG9ub215KG9wdGlvbnMpO1xuXHRcdGVsc2Vcblx0XHRcdCQuYWpheCh7XG5cdFx0XHQgIHVybDogb3B0aW9ucyxcblx0XHRcdCAgc3VjY2VzczogKGRhdGEpID0+ICB7IFxuXHRcdFx0ICBcdGlmICggdHlwZW9mIGRhdGEgPT09ICdzdHJpbmcnKSBkYXRhID0gSlNPTi5wYXJzZShkYXRhKTtcblx0XHRcdCAgXHR0aGlzLmNoZWNrRm9yRGlzdGFudFRheG9ub215KGRhdGEpOyBcblx0XHRcdCAgfSxcblx0XHRcdCAgZXJyb3I6ICgpID0+IHsgY29uc29sZS5lcnJvcihcIkVycm9yIHdoaWxlIGdldHRpbmcgdGhlIGNvbmZpZ3VyYXRpb24gYXQgdXJsIFwiLCBvcHRpb25zKX1cblx0XHRcdH0pO1xuXHR9O1xuXG5cdHByaXZhdGUgY2hlY2tGb3JEaXN0YW50VGF4b25vbXkob3B0aW9ucyA6IGFueSlcblx0e1xuXHRcdGxldCB0YXhvbm9teSA9IG9wdGlvbnMuZGF0YS50YXhvbm9teTtcblx0XHRpZiAoIXRheG9ub215IHx8ICFvcHRpb25zLmRhdGEuZWxlbWVudHMpXG5cdFx0e1xuXHRcdFx0Y29uc29sZS53YXJuKFwiW0dvR29DYXJ0b10gWW91IG11c3QgcHJvdmlkZSBhIHRheG9ub215IGFuZCBlbGVtZW50cyBkYXRhc2V0IChib3RoIHVybCBvciBKc29uIG9iamVjdClcIik7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXG5cdFx0aWYgKCB0eXBlb2YgdGF4b25vbXkgPT09ICdvYmplY3QnKSB0aGlzLmluaXQodGF4b25vbXksIG9wdGlvbnMpO1xuXHRcdGVsc2UgJC5nZXRKU09OKCB0YXhvbm9teSwgKGRhdGEpID0+ICB7IHRoaXMuaW5pdChkYXRhLCBvcHRpb25zKTsgfSk7IFx0XG5cdH07XG5cblx0cHJpdmF0ZSBpbml0KHRheG9ub215LCBvcHRpb25zKVxuXHR7XHRcblx0XHRsZXQgdXJsUGFyYW1zIDogYW55ID0gZ2V0UXVlcnlQYXJhbXMod2luZG93LmxvY2F0aW9uLnNlYXJjaCk7XG5cdFx0bGV0IGlzSWZyYW1lIDogYm9vbGVhbiA9IHVybFBhcmFtcy5pZnJhbWUgPyB1cmxQYXJhbXMuaWZyYW1lID09IDEgOiBmYWxzZTtcblx0XHRsZXQgZnVsbFRheG9ub215IDogYm9vbGVhbiA9IHVybFBhcmFtcy5mdWxsVGF4b25vbXkgPyB1cmxQYXJhbXMuZnVsbFRheG9ub215ID09IDEgOiB0cnVlO1xuXG5cdFx0QXBwID0gbmV3IEFwcE1vZHVsZShvcHRpb25zLCBpc0lmcmFtZSwgZnVsbFRheG9ub215LCB1cmxQYXJhbXMpO1xuXG5cdFx0Ly8gb25seSBmb3IgZGVidWdnaW5nXG5cdFx0dGhpcy5hcHAgPSBBcHA7XHRcdFx0XHRcblxuXHRcdEFwcC50YXhvbm9teU1vZHVsZS5jcmVhdGVUYXhvbm9teUZyb21Kc29uKHRheG9ub215KTtcblxuXHRcdGxldCBsYXlvdXQgPSBBcHAudGVtcGxhdGVNb2R1bGUucmVuZGVyKCdsYXlvdXQnLCBcblx0XHR7IFxuXHRcdFx0cm9vdENhdGVnb3JpZXM6IEFwcC50YXhvbm9teU1vZHVsZS5yb290Q2F0ZWdvcmllcywgXG5cdFx0XHRtYWluQ2F0ZWdvcnk6IEFwcC50YXhvbm9teU1vZHVsZS5tYWluQ2F0ZWdvcnksIFxuXHRcdFx0aXNJZnJhbWU6IGlzSWZyYW1lLCBcblx0XHRcdGZ1bGxUYXhvbm9teTogZnVsbFRheG9ub215LFxuXHRcdFx0Y29uZmlnOiBBcHAuY29uZmlnLFxuXHRcdFx0YWxsb3dlZFN0YW1wczogQXBwLnN0YW1wTW9kdWxlLmFsbG93ZWRTdGFtcHNcblx0XHR9KTtcblx0XHQgICBcblx0XHRpZiAoJCh0aGlzLmNvbnRhaW5lcikubGVuZ3RoID09IDApIGNvbnNvbGUud2FybignW0dvR29DYXJ0b10gVGhlIGNvbnRhaW5lciBcIicgKyB0aGlzLmNvbnRhaW5lciArICdcIiB3YXMgbm90IGZvdW5kJyk7XG5cdFx0ZWxzZSAkKHRoaXMuY29udGFpbmVyKS5hcHBlbmQobGF5b3V0KTtcblxuXHRcdCQodGhpcy5jb250YWluZXIpLnRyaWdnZXIoJ3RlbXBsYXRlTG9hZGVkJyk7XG5cdFx0XG5cdFx0aWYgKEFwcC50YXhvbm9teU1vZHVsZS5vcHRpb25zLmxlbmd0aClcblx0XHR7XG5cdFx0XHRsZXQgc3R5bGVzID0gQXBwLnRlbXBsYXRlTW9kdWxlLnJlbmRlcignZ29nby1zdHlsZXMnLCB7J29wdGlvbkxpc3QnOkFwcC50YXhvbm9teU1vZHVsZS5vcHRpb25zLCAnY29uZmlnJzpBcHAuY29uZmlnfSk7XG5cdFx0XHRsZXQgZG9tVG9BZGRTdHlsZXMgPSAkKCdoZWFkJykubGVuZ3RoID8gJCgnaGVhZCcpIDogJCgnaHRtbCcpO1xuXHRcdFx0aWYgKGRvbVRvQWRkU3R5bGVzLmxlbmd0aCkgZG9tVG9BZGRTdHlsZXMuYXBwZW5kKHN0eWxlcyk7XG5cdFx0XHRlbHNlIFx0Y29uc29sZS53YXJuKFwiW0dvR29DYXJ0b10gQ2Fubm90IGZpbmQgRG9tICdoZWFkJyBvciAnaHRtbCcgdG8gYWRkIHN0eWxlc1wiKTtcblx0XHR9XHRcdFxuXG5cdFx0c2V0VGltZW91dCggKCkgPT4ge1x0XHRcblx0XHRcdEFwcC5pbml0aWFsaXplKCk7XG5cblx0XHRcdEFwcC5lbGVtZW50c01vZHVsZS5pbml0aWFsaXplKCk7XG5cdFx0XHRBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC5pbml0aWFsaXplKCk7XG5cdFx0XHRBcHAuZmlsdGVyc0NvbXBvbmVudC5pbml0aWFsaXplKCk7XG5cdFx0XHRBcHAuYm91bmRzTW9kdWxlLmluaXRpYWxpemUoKTtcdCAgIFxuXHRcdFx0QXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LmluaXRpYWxpemUoKTtcdFx0XHRcblx0XHRcdEFwcC5zZWFyY2hCYXJDb21wb25lbnQuaW5pdGlhbGl6ZSgpO1x0XHRcdFxuXHRcdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdEFwcC5kaXJlY3Rpb25zQ29tcG9uZW50LmluaXRpYWxpemUoKTtcdFxuXHRcdFx0QXBwLm1hcENvbnRyb2xzQ29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdEFwcC5jdXN0b21Qb3B1cENvbXBvbmVudC5pbml0aWFsaXplKCk7XG5cdFx0XHRcblx0XHRcdEFwcC5jb21wb25lbnQuaW5pdGlhbGl6ZSgpO1x0XHRcblxuXHRcdFx0QXBwLnJvdXRlck1vZHVsZS5sb2FkSW5pdGlhbFN0YXRlKCk7XG5cblx0XHRcdC8vIHdhaXQgZm9yIGluaXRpYWwgc3RhdGUgdG8gYmUgbG9hZGVkXG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiBBcHAuZWxlbWVudHNKc29uTW9kdWxlLmxvYWRMb2NhbEVsZW1lbnRzKCksIDEwMCk7XG5cblx0XHRcdHRoaXMuYmluZEV2ZW50cygpO1xuXHRcdH0sIDApO1x0IFxuXHR9XG5cblx0cHJpdmF0ZSBiaW5kRXZlbnRzKCkgXG5cdHtcblx0XHR0aGlzLmFwcC5tYXBNYW5hZ2VyLm9uTWFya2VyQ2xpY2suZG8oIChpZCkgPT4gdGhpcy5maXJlRXZlbnQoJ21hcmtlckNsaWNrJywge2lkOiBpZH0pKTtcblx0fVxuXG5cdHByaXZhdGUgZmlyZUV2ZW50KCRldmVudE5hbWUsICRkYXRhKSBcblx0e1xuXHRcdCQodGhpcy5jb250YWluZXIpLnRyaWdnZXIoJGV2ZW50TmFtZSwgJGRhdGEpO1xuXHR9XG59XG5cbi8vIGluc3RhbmNpYXRlIGEgR29Hb0NhcnRvTW9kdWxlXG5nb0dvQ2FydG8gPSBmdW5jdGlvbihjb250YWluZXIsIG9wdGlvbnMpIHsgcmV0dXJuIG5ldyBHb0dvQ2FydG9Nb2R1bGUoY29udGFpbmVyLCBvcHRpb25zKTsgfSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcblxuZXhwb3J0IGVudW0gQXBwRGF0YVR5cGUgXG57XG4gIEFsbCxcbiAgU2VhcmNoUmVzdWx0c1xufVxuXG5leHBvcnQgY2xhc3MgRGF0YVR5cGVNYW5hZ2VyXG57XG4gIHByaXZhdGUgZGF0YVR5cGVfIDogQXBwRGF0YVR5cGUgPSBBcHBEYXRhVHlwZS5BbGw7XG5cbiAgc2V0RGF0YVR5cGUoJGRhdGFUeXBlIDogQXBwRGF0YVR5cGUsICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UsICRzZWFyY2hSZXN1bHQgPSBudWxsKVxuICB7XG4gICAgLy9jb25zb2xlLmxvZyhcInNldERhdGFUeXBlXCIsIEFwcERhdGFUeXBlWyRkYXRhVHlwZV0pO1xuICAgIHRoaXMuZGF0YVR5cGVfID0gJGRhdGFUeXBlO1xuXG4gICAgaWYgKCRkYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzICYmICRzZWFyY2hSZXN1bHQpIFxuICAgIHtcbiAgICAgIEFwcC5zdGF0ZU1hbmFnZXIuc2V0U3RhdGUoQXBwU3RhdGVzLk5vcm1hbCk7XG4gICAgICBsZXQgZWxlbWVudHMgPSBBcHAuZWxlbWVudHNKc29uTW9kdWxlLmNvbnZlcnRKc29uRWxlbWVudHMoJHNlYXJjaFJlc3VsdC5kYXRhLCB0cnVlLCB0cnVlKS5lbGVtZW50c0NvbnZlcnRlZDsgXG4gICAgICBBcHAuZWxlbWVudHNNb2R1bGUuc2V0U2VhcmNoUmVzdWx0RWxlbWVudChlbGVtZW50cyk7IFxuICAgICAgQXBwLmZpbHRlcnNDb21wb25lbnQuc2V0TWFpbk9wdGlvbignYWxsJyk7IFxuXG4gICAgICBpZiAoJHNlYXJjaFJlc3VsdC5kYXRhLmxlbmd0aCA+IDApIFxuICAgICAgeyBcbiAgICAgICAgQXBwLnNldE1vZGUoQXBwTW9kZXMuTGlzdCk7IFxuICAgICAgICBBcHAubWFwQ29tcG9uZW50LmZpdEVsZW1lbnRzQm91bmRzKGVsZW1lbnRzKTtcbiAgICAgIH0gXG4gICAgfVxuXG4gICAgQXBwLmVsZW1lbnRzTW9kdWxlLmNsZWFyQ3VycmVudHNFbGVtZW50KCk7ICBcbiAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuY2xlYXIoKTtcbiAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSk7ICAgIFxuICAgIEFwcC5lbGVtZW50c01hbmFnZXIuY2hlY2tGb3JOZXdFbGVtZW50c1RvUmV0cmlldmUoKTsgIFxuXG4gICAgaWYgKCEkYmFja0Zyb21IaXN0b3J5KSBBcHAuaGlzdG9yeU1vZHVsZS5wdXNoTmV3U3RhdGUoKTtcbiAgICBBcHAuZG9jdW1lbnRUaXRsZU1vZHVsZS51cGRhdGVEb2N1bWVudFRpdGxlKCk7XG4gIH1cblxuICBnZXQgZGF0YVR5cGUoKSB7IHJldHVybiB0aGlzLmRhdGFUeXBlXzsgfVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcE1vZGVzLCBBcHBEYXRhVHlwZSB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50c1RvRGlzcGxheUNoYW5nZWQgfSBmcm9tIFwiLi4vbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy5tb2R1bGVcIjtcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRzTWFuYWdlclxue1xuICBjb25zdHJ1Y3RvcigpXG4gIHtcbiAgICBBcHAuYWpheE1vZHVsZS5vbk5ld0VsZW1lbnRzLmRvKCAocmVzdWx0KSA9PiB7IHRoaXMuaGFuZGxlTmV3RWxlbWVudHNSZWNlaXZlZEZyb21TZXJ2ZXIocmVzdWx0KTsgfSk7ICBcbiAgICBBcHAuZWxlbWVudHNKc29uTW9kdWxlLm9uTmV3c0VsZW1lbnRzQ29udmVydGVkLmRvKCAobmV3RWxlbWVudHMpPT4geyBBcHAuZWxlbWVudHNNb2R1bGUuYWRkRWxlbWVudHMobmV3RWxlbWVudHMpOyB9KTsgIFxuICAgIEFwcC5lbGVtZW50c01vZHVsZS5vbkVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZC5kbyggKEVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZCk9PiB7IHRoaXMuaGFuZGxlRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkKEVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZCk7IH0pOyAgICBcbiAgfVxuXG4gIGNoZWNrRm9yTmV3RWxlbWVudHNUb1JldHJpZXZlKCRnZXRGdWxsUmVwcmVzZW50YXRpb24gPSBmYWxzZSlcbiAge1xuICAgIGlmIChBcHAuZGF0YVR5cGUgIT0gQXBwRGF0YVR5cGUuQWxsKSByZXR1cm47XG5cbiAgICBpZiAoQXBwLmNvbmZpZy5kYXRhLnJldHJpZXZlRWxlbWVudHNCeUFwaSlcbiAgICB7XG4gICAgICB0aGlzLnJldHJpZXZlTWlzc2luZ0VsZW1lbnRzVmlhQXBpKCRnZXRGdWxsUmVwcmVzZW50YXRpb24pO1xuICAgIH1cbiAgfSAgIFxuXG4gIHByaXZhdGUgcmV0cmlldmVNaXNzaW5nRWxlbWVudHNWaWFBcGkoJGdldEZ1bGxSZXByZXNlbnRhdGlvbiA6IGJvb2xlYW4pXG4gIHtcbiAgICAvLyBjb25zb2xlLmxvZyhcImNoZWNrRm9yTmV3ZWxlbWVudFRvUmV0cmlldmUsIGZ1bGxSZXByZXNlbnRhdGlvblwiLCAkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKTtcbiAgICBsZXQgcmVzdWx0ID0gQXBwLmJvdW5kc01vZHVsZS5jYWxjdWxhdGVGcmVlQm91bmRzKCRnZXRGdWxsUmVwcmVzZW50YXRpb24pO1xuICAgIC8vIGNvbnNvbGUubG9nKFwiY2hlY2tGb3JOZXdlbGVtZW50VG9SZXRyaWV2ZSwgY2FsY3VsYXRlQm91bmRzXCIsIHJlc3VsdCk7XG4gICAgaWYgKHJlc3VsdC5zdGF0dXMgPT0gXCJhbGxSZXRyaWV2ZWRcIikgXG4gICAge1xuICAgICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LmhhbmRsZUFsbEVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgICByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG8sIGFsbCBlbGVtZW50cyBhbHJlYWR5IHJldHJpZXZlZFxuICAgIH1cbiAgICBlbHNlIGlmIChyZXN1bHQuc3RhdHVzID09IFwiaW5jbHVkZWRcIilcbiAgICB7XG4gICAgICAvLyBXZSBzaW11bGF0ZSB0aGUgZW5kIG9mIGEgc3VjY2Vzc2VmdWwgYWpheCByZXF1ZXN0IFxuICAgICAgQXBwLmJvdW5kc01vZHVsZS51cGRhdGVGaWxsZWRCb3VuZHNXaXRoQm91bmRzUmVjZWl2ZWQocmVzdWx0LmV4cGVjdGVkRmlsbEJvdW5kcywgQXBwLmN1cnJNYWluSWQsICAkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKTtcbiAgICAgIHRoaXMuaGFuZGxlTmV3RWxlbWVudHNSZWNlaXZlZEZyb21TZXJ2ZXIoeydkYXRhJzogW10sICdmdWxsUmVwcmVzZW50YXRpb24nOiAkZ2V0RnVsbFJlcHJlc2VudGF0aW9ufSk7XG4gICAgICByZXR1cm47XG4gICAgfSAgICBcblxuICAgIC8vIE5vcm1hbCBiZWhhdmlvdXIsIGdldHRpbmcgbWlzc2luZyBlbGVtZW50cyB2aWEgQWpheCByZXF1ZXN0XG4gICAgbGV0IGZyZWVCb3VuZHMgPSByZXN1bHQuZnJlZUJvdW5kcztcbiAgICBsZXQgZXhwZWN0ZWRGaWxsZWRCb3VuZHMgPSByZXN1bHQuZXhwZWN0ZWRGaWxsQm91bmRzO1xuICAgIGlmIChmcmVlQm91bmRzICYmIGZyZWVCb3VuZHMubGVuZ3RoID4gMCkgQXBwLmFqYXhNb2R1bGUuZ2V0RWxlbWVudHNJbkJvdW5kcyhmcmVlQm91bmRzLCAkZ2V0RnVsbFJlcHJlc2VudGF0aW9uLCBleHBlY3RlZEZpbGxlZEJvdW5kcyk7IFxuICB9ICAgXG5cbiAgaGFuZGxlTmV3RWxlbWVudHNSZWNlaXZlZEZyb21TZXJ2ZXIocmVzdWx0KVxuICB7ICAgICAgICBcbiAgICBsZXQgZWxlbWVudHNKc29uID0gcmVzdWx0LmRhdGEgfHwgcmVzdWx0W1wiQGdyYXBoXCJdIHx8IHJlc3VsdDsgXG4gICAgbGV0IGVsZW1lbnRzID0gQXBwLmVsZW1lbnRzSnNvbk1vZHVsZS5jb252ZXJ0SnNvbkVsZW1lbnRzKGVsZW1lbnRzSnNvbiwgdHJ1ZSwgcmVzdWx0LmZ1bGxSZXByZXNlbnRhdGlvbik7XG4gICAgLy8gY29uc29sZS5sb2coXCJuZXcgRWxlbWVudHMgbGVuZ3RoXCIsIGVsZW1lbnRzKTtcbiAgICBcbiAgICAvLyBvbiBhZGQgbWFya2VyQ2x1c3Rlckdyb3VwIGFmdGVyIGZpcnN0IGVsZW1lbnRzIHJlY2VpdmVkXG4gICAgaWYgKGVsZW1lbnRzLm5ld0VsZW1lbnRzTGVuZ3RoID4gMCB8fCBBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0KSBcbiAgICB7XG4gICAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSk7ICBcbiAgICB9XG4gIH07IFxuXG4gIGhhbmRsZUVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZChyZXN1bHQgOiBFbGVtZW50c1RvRGlzcGxheUNoYW5nZWQpXG4gIHtcbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuICAgIC8vIGNvbnNvbGUubG9nKFwiRGlzcGxheSA9IFwiICsgcmVzdWx0LmVsZW1lbnRzVG9EaXNwbGF5Lmxlbmd0aCArIFwiIC8gcmVtb3ZlID0gXCIgKyByZXN1bHQuZWxlbWVudHNUb1JlbW92ZS5sZW5ndGggKyBcIiAvIGFkZCA9IFwiICsgcmVzdWx0Lm5ld0VsZW1lbnRzLmxlbmd0aCk7XG5cbiAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdClcbiAgICB7XG4gICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQudXBkYXRlKHJlc3VsdC5lbGVtZW50c1RvRGlzcGxheSk7XG4gICAgICBpZiAoQXBwLmFqYXhNb2R1bGUuYWxsRWxlbWVudHNSZWNlaXZlZCkgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LmhhbmRsZUFsbEVsZW1lbnRzUmV0cmlldmVkKCk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBpZiAoIUFwcC5tYXBDb21wb25lbnQuaXNJbml0aWFsaXplZCkgeyByZXR1cm47fVxuXG4gICAgICBBcHAubWFwQ29tcG9uZW50Lm1hcmtlckNsdXN0ZXJlckdyb3VwLnJlc3RvcmVVbmNsdXN0ZXJzKHRydWUpOyAgICAgXG5cbiAgICAgIC8vIEluIHNvbWUgY2FzZXMsIG1hcmtlckNsdXN0ZXIgd29ya3MgZmFzdGVyIGNsZWFyaW5nIGFsbHMgbWFya2VycyBhbmQgYWRkaW5nIHRoZW0gYWdhaW5cbiAgICAgIGlmIChyZXN1bHQuZWxlbWVudHNUb1JlbW92ZS5sZW5ndGggKyByZXN1bHQubmV3RWxlbWVudHMubGVuZ3RoID4gcmVzdWx0LmVsZW1lbnRzVG9EaXNwbGF5Lmxlbmd0aClcbiAgICAgIHtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5jbGVhck1hcmtlcnMoKTtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5hZGRNYXJrZXJzKHJlc3VsdC5lbGVtZW50c1RvRGlzcGxheS5tYXAoIChlKSA9PiBlLm1hcmtlci5nZXRMZWFmbGV0TWFya2VyKCkpKTtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5yZW1vdmVNYXJrZXJzKHJlc3VsdC5lbGVtZW50c1RvUmVtb3ZlLm1hcCggKGUpID0+IGUubWFya2VyLmdldExlYWZsZXRNYXJrZXIoKSkpO1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50LmFkZE1hcmtlcnMocmVzdWx0Lm5ld0VsZW1lbnRzLm1hcCggKGUpID0+IGUubWFya2VyLmdldExlYWZsZXRNYXJrZXIoKSkpO1xuICAgICAgfSAgICAgIFxuXG4gICAgICBBcHAubWFwQ29tcG9uZW50Lm1hcmtlckNsdXN0ZXJlckdyb3VwLmNoZWNrRm9yVW5jbGVzdGVyaW5nKEFwcC5tYXAoKS5nZXRCb3VuZHMoKSk7XG4gICAgfSAgXG5cbiAgICBsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgLy9jb25zb2xlLmxvZyhcIkVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZCBpbiBcIiArIChlbmQtc3RhcnQpICsgXCIgbXNcIik7ICBcbiAgfTsgIFxuXG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwTW9kZXMsIEFwcFN0YXRlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplLCB1bnNsdWdpZnkgfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IFZpZXdQb3J0IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5kZWNsYXJlIHZhciAkO1xuXG5leHBvcnQgY2xhc3MgR2VvY29kaW5nTWFuYWdlclxue1xuICBjb25zdHJ1Y3RvcigpXG4gIHtcbiAgICBBcHAuZ2VvY29kZXIub25HZW9jb2RlUmVzdWx0LmRvKCAoKSA9PiB7IHRoaXMuaGFuZGxlR2VvY29kZVJlc3VsdCgpOyBBcHAuc2VhcmNoQmFyQ29tcG9uZW50LmhhbmRsZUdlb2NvZGVSZXN1bHQoKTsgfSk7XG4gICAgQXBwLmdlb2NvZGVyLm9uR2VvbG9jYWxpemF0aW9uUmVzdWx0LmRvKCAodmlld1BvcnQgOiBWaWV3UG9ydCkgPT4geyB0aGlzLmhhbmRsZUdlb2xvY2FsaXphdGlvblJlc3VsdCh2aWV3UG9ydCk7IH0pO1xuICB9XG5cbiAgaGFuZGxlR2VvY29kZVJlc3VsdCgpXG4gIHtcbiAgICAvL2NvbnNvbGUubG9nKFwiaGFuZGxlR2VvY29kZVJlc3VsdFwiLCBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSk7XG4gICAgJCgnI2RpcmVjdG9yeS1zcGlubmVyLWxvYWRlcicpLmhpZGUoKTtcblxuICAgIGlmIChBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zKSAgXG4gICAge1xuICAgICAgLy8gd2UgcmVzdGFydCBkaXJlY3Rpb25zIGZyb20gQXBwIG5ldyBzdGFydCBsb2NhdGlvblxuICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucyx7aWQ6IEFwcC5zdGF0ZU1hbmFnZXIuc3RhdGVFbGVtZW50SWQgfSk7XG4gICAgfSAgICBcbiAgICBlbHNlXG4gICAge1xuICAgICAgaWYgKEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCAmJiBBcHAuc3RhdGUgIT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmUpXG4gICAgICB7XG4gICAgICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTsgICAgICBcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgbGV0IGxvY2F0aW9uID0gQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uKCkgPyBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSA6IEFwcC5ib3VuZHNNb2R1bGUuZGVmYXVsdENlbnRlcjtcbiAgICAgICAgQXBwLmJvdW5kc01vZHVsZS5jcmVhdGVCb3VuZHNGcm9tTG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgICBBcHAuZWxlbWVudHNNb2R1bGUuY2xlYXJDdXJyZW50c0VsZW1lbnQoKTtcbiAgICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuICAgICAgICBsZXQgYWRkcmVzcyA9IEFwcC5nZW9jb2Rlci5sYXN0QWRkcmVzc1JlcXVlc3Q7XG4gICAgICAgIGlmIChBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSkgXG4gICAgICAgICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnNldFRpdGxlKCcgYXV0b3VyIGRlIDxpPicgKyBjYXBpdGFsaXplKHVuc2x1Z2lmeShhZGRyZXNzKSkpICsgJzwvaT4nO1xuICAgICAgfSAgICAgIFxuXG4gICAgICBBcHAuZG9jdW1lbnRUaXRsZU1vZHVsZS51cGRhdGVEb2N1bWVudFRpdGxlKCk7XG4gICAgfSAgICAgICAgXG4gIH1cblxuICBoYW5kbGVHZW9sb2NhbGl6YXRpb25SZXN1bHQodmlld1BvcnQpXG4gIHtcbiAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwKVxuICAgIHtcbiAgICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTtcbiAgICAgIEFwcC5tYXBDb21wb25lbnQucGFuVG9Mb2NhdGlvbih2aWV3UG9ydC50b0xvY2F0aW9uKCksIHZpZXdQb3J0Lnpvb20sIGZhbHNlKTsgICAgICBcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIEFwcC5ib3VuZHNNb2R1bGUuY3JlYXRlQm91bmRzRnJvbUxvY2F0aW9uKHZpZXdQb3J0LnRvTG9jYXRpb24oKSk7XG4gICAgICBBcHAuZWxlbWVudHNNb2R1bGUuY2xlYXJDdXJyZW50c0VsZW1lbnQoKTtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTtcbiAgICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5zZXRUaXRsZSgnIGF1dG91ciBkZSA8aT5tYSBwb3NpdGlvbjwvaT4nKTtcbiAgICAgIC8vIHNhdmUgdGhlIHZpZXdwb3J0IGlmIHdlIGdvIHRvIG1hcCBhZnRlclxuICAgICAgQXBwLm1hcENvbXBvbmVudC5zZXRWaWV3UG9ydCh2aWV3UG9ydCk7XG4gICAgfSAgICBcbiAgfVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcERhdGFUeXBlLCBBcHBNb2RlcywgQXBwU3RhdGVzIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEhpc3RvcnlTdGF0ZSwgVmlld1BvcnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuLi91dGlscy9jb29raWVzXCI7XG5kZWNsYXJlIHZhciAkLCBMIDogYW55O1xuXG5leHBvcnQgY2xhc3MgSGlzdG9yeVN0YXRlTWFuYWdlclxue1xuICBsYXN0SGlzdG9yeVN0YXRlIDogSGlzdG9yeVN0YXRlID0gbnVsbDtcbiAgLypcbiAgKiBMb2FkIGluaXRpYWwgc3RhdGUgb3Igc3RhdGUgcG9wcGVkIGJ5IHdpbmRvdyBoaXN0b3J5IG1hbmFnZXJcbiAgKi9cbiAgbG9hZChoaXN0b3J5c3RhdGUgOiBIaXN0b3J5U3RhdGUsICRiYWNrRnJvbUhpc3RvcnkgPSBmYWxzZSlcbiAge1xuICAgIGlmIChoaXN0b3J5c3RhdGUgPT09IG51bGwpIHJldHVybjsgIFxuICAgIHRoaXMubGFzdEhpc3RvcnlTdGF0ZSA9IGhpc3RvcnlzdGF0ZTtcbiAgICBjb25zb2xlLmxvZyhcImxvYWRIaXN0b3J5c3RhdGVcIiwgaGlzdG9yeXN0YXRlKTsgIFxuXG4gICAgaWYgKGhpc3RvcnlzdGF0ZS5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzKVxuICAgIHtcbiAgICAgIC8vIGZvcmNlIHNldHRpbmcgZGF0YVR5cGUgYmVmb3JlIHNlYXJjaEJhckNvbXBvbmVudCB0byBhdm9pZCBoaXN0b3J5IGlzc3Vlc1xuICAgICAgQXBwLnNldERhdGFUeXBlKGhpc3RvcnlzdGF0ZS5kYXRhVHlwZSwgdHJ1ZSk7XG4gICAgICBBcHAuc2VhcmNoQmFyQ29tcG9uZW50LnNlYXJjaEVsZW1lbnRzKGhpc3RvcnlzdGF0ZS50ZXh0LCAkYmFja0Zyb21IaXN0b3J5KTtcbiAgICAgICQoJyNkaXJlY3Rvcnktc3Bpbm5lci1sb2FkZXInKS5oaWRlKCk7XG4gICAgfSAgXG4gICAgZWxzZVxuICAgIHtcbiAgICAgIC8vIGNoZWNrIHZpZXdwb3J0IGFuZCBhZGRyZXNzIGZyb20gY29va2llc1xuICAgICAgaWYgKEFwcC5jb25maWcubWFwLnNhdmVWaWV3cG9ydEluQ29va2llcyAmJiAhaGlzdG9yeXN0YXRlLnZpZXdwb3J0ICYmICFoaXN0b3J5c3RhdGUuYWRkcmVzcyAmJiBoaXN0b3J5c3RhdGUuc3RhdGUgPT0gQXBwU3RhdGVzLk5vcm1hbCkgXG4gICAgICB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwibm8gdmlld3BvcnQgbm9yIGFkZHJlc3MgcHJvdmlkZWQsIHVzaW5nIGNvb2tpZXMgdmFsdWVzXCIsIENvb2tpZXMucmVhZENvb2tpZSgndmlld3BvcnQnKSwgQ29va2llcy5yZWFkQ29va2llKCdhZGRyZXNzJykpO1xuICAgICAgICBpZiAoQ29va2llcy5yZWFkQ29va2llKCd2aWV3cG9ydCcpKSBoaXN0b3J5c3RhdGUudmlld3BvcnQgPSBuZXcgVmlld1BvcnQoKS5mcm9tU3RyaW5nKENvb2tpZXMucmVhZENvb2tpZSgndmlld3BvcnQnKSk7XG4gICAgICAgIGlmIChDb29raWVzLnJlYWRDb29raWUoJ2FkZHJlc3MnKSkgaGlzdG9yeXN0YXRlLmFkZHJlc3MgPSBDb29raWVzLnJlYWRDb29raWUoJ2FkZHJlc3MnKTtcbiAgICAgICAgaWYgKGhpc3RvcnlzdGF0ZS5hZGRyZXNzKSAkKCcuc2VhcmNoLWJhcicpLnZhbChoaXN0b3J5c3RhdGUuYWRkcmVzcyk7XG4gICAgICB9ICAgIFxuICAgIH0gICAgXG5cbiAgICBpZiAoaGlzdG9yeXN0YXRlLmZpbHRlcnMpIEFwcC5maWx0ZXJSb3V0aW5nTW9kdWxlLmxvYWRGaWx0ZXJzRnJvbVN0cmluZyhoaXN0b3J5c3RhdGUuZmlsdGVycyk7XG4gICAgZWxzZSBBcHAuZmlsdGVyc0NvbXBvbmVudC5zZXRNYWluT3B0aW9uKCdhbGwnKTsgXG5cbiAgICBpZiAoaGlzdG9yeXN0YXRlLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLkFsbCAmJiBoaXN0b3J5c3RhdGUudmlld3BvcnQgJiYgaGlzdG9yeXN0YXRlLnN0YXRlICE9IEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lKVxuICAgIHsgICAgICBcbiAgICAgIC8vIGlmIG1hcCBub3QgbG9hZGVkIHdlIGp1c3Qgc2V0IHRoZSBtYXBDb21wb25lbnQgdmlld3BvcnQgd2l0aG91dCBjaGFuZ2luZyB0aGVcbiAgICAgIC8vIGFjdHVhbCB2aWV3cG9ydCBvZiB0aGUgbWFwLCBiZWNhdXNlIGl0IHdpbGwgYmUgZG9uZSBpblxuICAgICAgLy8gbWFwIGluaXRpYWxpc2F0aW9uXG4gICAgICBBcHAubWFwQ29tcG9uZW50LnNldFZpZXdQb3J0KGhpc3RvcnlzdGF0ZS52aWV3cG9ydCwgQXBwLm1hcENvbXBvbmVudC5pc01hcExvYWRlZCk7XG5cbiAgICAgIC8vIG9uIGxpc3QgbW9kZSBpbml0aWFsaXplIGJvdW5kc1xuICAgICAgaWYgKGhpc3RvcnlzdGF0ZS5tb2RlID09IEFwcE1vZGVzLkxpc3QpXG4gICAgICB7XG4gICAgICAgIEFwcC5ib3VuZHNNb2R1bGUuY3JlYXRlQm91bmRzRnJvbUxvY2F0aW9uKEwubGF0TG5nKGhpc3RvcnlzdGF0ZS52aWV3cG9ydC5sYXQsIGhpc3RvcnlzdGF0ZS52aWV3cG9ydC5sbmcpKTtcbiAgICAgIH1cblxuICAgICAgJCgnI2RpcmVjdG9yeS1zcGlubmVyLWxvYWRlcicpLmhpZGUoKTsgIFxuXG4gICAgICBpZiAoaGlzdG9yeXN0YXRlLm1vZGUgPT0gQXBwTW9kZXMuTGlzdCApXG4gICAgICB7XG4gICAgICAgIGxldCBsb2NhdGlvbiA9IEwubGF0TG5nKGhpc3RvcnlzdGF0ZS52aWV3cG9ydC5sYXQsIGhpc3RvcnlzdGF0ZS52aWV3cG9ydC5sbmcpO1xuICAgICAgfSAgXG4gICAgfSAgXG5cbiAgICBBcHAuc2V0TW9kZShoaXN0b3J5c3RhdGUubW9kZSwgJGJhY2tGcm9tSGlzdG9yeSwgZmFsc2UpO1xuICAgIFxuICAgIC8vIGlmIGFkZHJlc3MgaXMgcHJvdmlkZWQgd2UgZ2VvbG9jYWxpemUgdGhpcyBhZGRyZXNzXG4gICAgaWYgKGhpc3RvcnlzdGF0ZS5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwgJiYgaGlzdG9yeXN0YXRlLmFkZHJlc3MpIFxuICAgIHtcbiAgICAgIGlmIChoaXN0b3J5c3RhdGUuYWRkcmVzcyA9PSBcImdlb2xvY2FsaXplXCIpXG4gICAgICB7XG4gICAgICAgIEFwcC5zZWFyY2hCYXJDb21wb25lbnQuZ2VvbG9jYXRlVXNlcigpO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBBcHAuZ2VvY29kZXIuZ2VvY29kZUFkZHJlc3MoXG4gICAgICAgICAgaGlzdG9yeXN0YXRlLmFkZHJlc3MsIFxuICAgICAgICAgIChyZXN1bHRzKSA9PiBcbiAgICAgICAgICB7IFxuICAgICAgICAgICAgLy8gaWYgdmlld3BvcnQgaXMgZ2l2ZW4sIG5vdGhpbmcgdG8gZG8sIHdlIGFscmVhZHkgZGlkIGluaXRpYWxpemF0aW9uIHdpdGggdmlld3BvcnRcbiAgICAgICAgICAgIGlmIChoaXN0b3J5c3RhdGUudmlld3BvcnQgJiYgaGlzdG9yeXN0YXRlLm1vZGUgPT0gQXBwTW9kZXMuTWFwKSByZXR1cm47XG4gICAgICAgICAgICAvLyBmaXQgYm91bmRzIGFueXdheSBzbyB0aGUgbWFwY29tcG9uZW50IHdpbGwgcmVnaXN0ZXIgQXBwIHJlcXVlc3RlZCBib3VuZHMgZm9yIGxhdGVyXG4gICAgICAgICAgICBBcHAubWFwQ29tcG9uZW50LmZpdEJvdW5kcyhBcHAuZ2VvY29kZXIuZ2V0Qm91bmRzKCkpO1xuICAgICAgICAgIH0sXG4gICAgICAgICAgKCkgPT4ge1xuICAgICAgICAgICAgLy8gZmFpbHVyZSBjYWxsYmFja1xuICAgICAgICAgICAgQXBwLnNlYXJjaEJhckNvbXBvbmVudC5zZXRWYWx1ZShcIlwiKTtcbiAgICAgICAgICAgIGlmICghaGlzdG9yeXN0YXRlLnZpZXdwb3J0KSBcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgQXBwLm1hcENvbXBvbmVudC5maXREZWZhdWx0Qm91bmRzKCk7XG4gICAgICAgICAgICAgIEFwcC5jb21wb25lbnQudG9hc3RNZXNzYWdlKFwiRXJyZXVyLCBjZXR0ZSBhZHJlc3NlIG4nYSBwYXMgcHUgw6p0cmUgbG9jYWxpc8OpZSA6IFwiICsgaGlzdG9yeXN0YXRlLmFkZHJlc3MpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSAgXG4gICAgICAgICk7XG4gICAgICB9ICAgICAgXG4gICAgfVxuXG4gICAgaWYgKCFoaXN0b3J5c3RhdGUudmlld3BvcnQgJiYgIWhpc3RvcnlzdGF0ZS5hZGRyZXNzICYmIEFwcC5jb25maWcuZGF0YS5yZXRyaWV2ZUVsZW1lbnRzQnlBcGkgJiYgaGlzdG9yeXN0YXRlLnN0YXRlICE9IEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lKSB7XG4gICAgICBjb25zb2xlLmxvZyhcImZpdCBkZWZhdWx0IGJvdW5kcyBubyB2aWV3cG9ydCBubyBhZGRyZXNzXCIpO1xuICAgICAgQXBwLm1hcENvbXBvbmVudC5maXREZWZhdWx0Qm91bmRzKCk7XG4gICAgfSBcblxuICAgIGlmIChoaXN0b3J5c3RhdGUuaWQpIFxuICAgIHtcbiAgICAgIHNldFRpbWVvdXQoICgpID0+IHsgXG4gICAgICAgIEFwcC5zZXRTdGF0ZShcbiAgICAgICAgICBoaXN0b3J5c3RhdGUuc3RhdGUsXG4gICAgICAgICAge1xuICAgICAgICAgICAgaWQ6IGhpc3RvcnlzdGF0ZS5pZCwgXG4gICAgICAgICAgICBwYW5Ub0xvY2F0aW9uOiAoaGlzdG9yeXN0YXRlLnZpZXdwb3J0ID09PSBudWxsKVxuICAgICAgICAgIH0sXG4gICAgICAgICAgJGJhY2tGcm9tSGlzdG9yeSk7XG4gICAgICAgICQoJyNkaXJlY3Rvcnktc3Bpbm5lci1sb2FkZXInKS5oaWRlKCk7ICAgIFxuICAgICAgfSwgNDAwKTsgIFxuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgQXBwLnNldFN0YXRlKGhpc3RvcnlzdGF0ZS5zdGF0ZSwgbnVsbCwgJGJhY2tGcm9tSGlzdG9yeSk7ICAgIFxuICAgIH0gICAgXG4gIH07ICAgIFxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcE1vZGVzLCBBcHBTdGF0ZXMsIEFwcERhdGFUeXBlIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHVuc2x1Z2lmeSB9IGZyb20gXCIuLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgTWFya2VyIH0gZnJvbSBcIi4uL2NvbXBvbmVudHMvbWFwL21hcmtlci5jb21wb25lbnRcIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5kZWNsYXJlIHZhciAkO1xuXG5leHBvcnQgY2xhc3MgTWFwTWFuYWdlclxue1xuICAvLyB3aGVuIGNsaWNrIG9uIG1hcmtlciBpdCBhbHNvIHRyaWdlciBjbGljayBvbiBtYXBcbiAgLy8gd2hlbiBjbGljayBvbiBtYXJrZXIgd2UgcHV0IGlzQ2xpY2tpbmcgdG8gdHJ1ZSBkdXJpbmdcbiAgLy8gZmV3IG1pbGxpc2Vjb25kcyBzbyB0aGUgbWFwIGRvbid0IGRvIGFueXRoaW5nIGlzIGNsaWNrIGV2ZW50XG4gIHByaXZhdGUgaXNDbGlja2luZyA9IGZhbHNlO1xuXG4gIG9uTWFya2VyQ2xpY2sgPSBuZXcgRXZlbnQ8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKClcbiAge1xuICAgIEFwcC5tYXBDb21wb25lbnQub25JZGxlLmRvKCAoKSA9PiB7IHRoaXMuaGFuZGxlTWFwSWRsZSgpOyAgfSk7XG4gICAgQXBwLm1hcENvbXBvbmVudC5vbkNsaWNrLmRvKCAoKSA9PiB7IHRoaXMuaGFuZGxlTWFwQ2xpY2soKTsgfSk7ICAgXG4gICAgQXBwLmluZm9CYXJDb21wb25lbnQub25IaWRlLmRvKCAoKT0+IHsgdGhpcy5oYW5kbGVJbmZvQmFySGlkZSgpOyB9KTsgXG4gIH1cblxuICBoYW5kbGVJbmZvQmFySGlkZSgpXG4gIHtcbiAgICBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLk5vcm1hbCk7XG4gIH07XG5cbiAgc2V0VGltZW91dENsaWNraW5nKCkgXG4gIHsgXG4gICAgdGhpcy5pc0NsaWNraW5nID0gdHJ1ZTtcbiAgICBsZXQgdGhhdCA9IHRoaXM7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgdGhhdC5pc0NsaWNraW5nID0gZmFsc2U7IH0sIDEwMCk7IFxuICB9O1xuXG4gIGhhbmRsZU1hcmtlckNsaWNrKG1hcmtlciA6IE1hcmtlcilcbiAge1xuICAgIGlmIChBcHAubW9kZSAhPSBBcHBNb2Rlcy5NYXApIHJldHVybjtcblxuICAgIHRoaXMuc2V0VGltZW91dENsaWNraW5nKCk7XG4gICAgdGhpcy5vbk1hcmtlckNsaWNrLmVtaXQobWFya2VyLmdldEVsZW1lbnQoKS5pZCk7XG5cbiAgICBpZiAobWFya2VyLmlzSGFsZkhpZGRlbigpKSBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLk5vcm1hbCk7ICBcblxuICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuU2hvd0VsZW1lbnQsIHsgaWQ6IG1hcmtlci5nZXRJZCgpIH0pOyAgICBcbiAgfVxuXG4gIGhhbmRsZU1hcElkbGUoKVxuICB7ICAgIFxuICAgIGlmIChBcHAubW9kZSAhPSBBcHBNb2Rlcy5NYXApICAgICByZXR1cm47XG5cbiAgICAvLyB3ZSBuZWVkIG1hcCB0byBiZSBsb2FkZWQgdG8gZ2V0IHRoZSByYWRpdXMgb2YgdGhlIHZpZXdwb3J0XG4gICAgLy8gYW5kIGdldCB0aGUgZWxlbWVudHMgaW5zaWRlXG4gICAgaWYgKCFBcHAubWFwQ29tcG9uZW50LmlzTWFwTG9hZGVkKVxuICAgIHtcbiAgICAgIEFwcC5tYXBDb21wb25lbnQub25NYXBMb2FkZWQuZG8oKCkgPT4ge3RoaXMuaGFuZGxlTWFwSWRsZSgpOyB9KTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBsZXQgdXBkYXRlSW5BbGxFbGVtZW50TGlzdCA9ICFBcHAubWFwQ29tcG9uZW50Lmhhc1pvb21lZEluKCk7XG5cbiAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodXBkYXRlSW5BbGxFbGVtZW50TGlzdCk7XG5cbiAgICBpZiAoQXBwLnN0YXRlID09IEFwcFN0YXRlcy5Ob3JtYWwgfHwgQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RWxlbWVudCkgQXBwLmVsZW1lbnRzTWFuYWdlci5jaGVja0Zvck5ld0VsZW1lbnRzVG9SZXRyaWV2ZSgpO1xuXG4gICAgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpIEFwcC5oaXN0b3J5TW9kdWxlLnVwZGF0ZUN1cnJTdGF0ZSgpO1xuICB9O1xuXG4gIGhhbmRsZU1hcENsaWNrKClcbiAge1xuICAgIGlmICh0aGlzLmlzQ2xpY2tpbmcpIHJldHVybjtcblxuICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGUgTWFwIENsaWNrXCIsIEFwcFN0YXRlc1tBcHAuc3RhdGVdKTtcbiAgICBcbiAgICBpZiAoQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RWxlbWVudCB8fCBBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmUpXG4gICAge1xuICAgICAgQXBwLmluZm9CYXJDb21wb25lbnQuaGlkZSgpOyBcbiAgICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTsgICAgXG4gICAgfVxuICAgIGVsc2UgaWYgKEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnMpXG4gICAgICBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLlNob3dFbGVtZW50LCB7IGlkIDogQXBwLmluZm9CYXJDb21wb25lbnQuZ2V0Q3VyckVsZW1lbnRJZCgpIH0pOyAgICBcbiAgICBcbiAgICBBcHAubWFwQ29udHJvbHNDb21wb25lbnQuaGlkZUNvbnRyb2xMYXllcnMoKTtcbiAgfTtcblxuICBcbn0iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBBcHBEYXRhVHlwZSB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplLCB1bnNsdWdpZnkgfSBmcm9tIFwiLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcblxuZXhwb3J0IGVudW0gQXBwTW9kZXNcbntcbiAgTWFwID0gMSxcbiAgTGlzdCA9IDJcbn1cblxuZXhwb3J0IGNsYXNzIE1vZGVNYW5hZ2VyXG57XG4gIHByaXZhdGUgbW9kZV8gOiBBcHBNb2RlcyA9IG51bGw7XG5cbiAgLypcbiAgKiBDaGFuZ2UgQXBwIG1vZGVcbiAgKi9cbiAgc2V0TW9kZSgkbW9kZSA6IEFwcE1vZGVzLCAkYmFja0Zyb21IaXN0b3J5IDogYm9vbGVhbiA9IGZhbHNlLCAkdXBkYXRlVGl0bGVBbmRTdGF0ZSA9IHRydWUpXG4gIHtcbiAgICBBcHAuZWxlbWVudHNNb2R1bGUuY2xlYXJDdXJyZW50c0VsZW1lbnQoKTtcbiAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuY2xlYXIoKTtcblxuICAgIGlmICgkbW9kZSA9PSBBcHBNb2Rlcy5NYXApIHRoaXMuc2V0TWFwTW9kZSgpO1xuICAgIGVsc2UgdGhpcy5zZXRMaXN0TW9kZSgpO1xuXG4gICAgLy8gaWYgcHJldmlvdXMgbW9kZSB3YXNuJ3QgbnVsbCBcbiAgICBsZXQgb2xkTW9kZSA9IHRoaXMubW9kZV87XG4gICAgdGhpcy5tb2RlXyA9ICRtb2RlO1xuXG4gICAgLy8gdXBkYXRlIGhpc3RvcnkgaWYgd2UgbmVlZCB0b1xuICAgIGlmIChvbGRNb2RlICE9IG51bGwgJiYgISRiYWNrRnJvbUhpc3RvcnkpIEFwcC5oaXN0b3J5TW9kdWxlLnB1c2hOZXdTdGF0ZSgpO1xuXG4gICAgQXBwLmdvZ29Db250cm9sQ29tcG9uZW50LnVwZGF0ZVBvc2l0aW9uKCk7XG4gICAgXG4gICAgc2V0VGltZW91dCggKCkgPT4gQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpICwgMzAwKTtcblxuICAgIGlmICgkdXBkYXRlVGl0bGVBbmRTdGF0ZSlcbiAgICB7XG4gICAgICBBcHAuZG9jdW1lbnRUaXRsZU1vZHVsZS51cGRhdGVEb2N1bWVudFRpdGxlKCk7ICBcblxuICAgICAgLy8gYWZ0ZXIgY2xlYXJpbmcsIHdlIHNldCB0aGUgY3VycmVudCBzdGF0ZSBhZ2FpblxuICAgICAgaWYgKCRtb2RlID09IEFwcE1vZGVzLk1hcCkgQXBwLnNldFN0YXRlKEFwcC5zdGF0ZSwge2lkIDogQXBwLnN0YXRlTWFuYWdlci5zdGF0ZUVsZW1lbnRJZH0pOyAgXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRNYXBNb2RlKClcbiAge1xuICAgIEFwcC5tYXBDb21wb25lbnQuc2hvdygpO1xuICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5oaWRlKCk7ICAgICAgICBcblxuICAgIEFwcC5tYXBDb21wb25lbnQuaW5pdGlhbGl6ZSgpOyAgICBcblxuICAgIGlmIChBcHAubWFwQ29tcG9uZW50LmlzTWFwTG9hZGVkKSBBcHAuYm91bmRzTW9kdWxlLmV4dGVuZEJvdW5kcygwLCBBcHAubWFwQ29tcG9uZW50LmdldEJvdW5kcygpKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0TGlzdE1vZGUoKVxuICB7XG4gICAgQXBwLm1hcENvbXBvbmVudC5oaWRlKCk7XG4gICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnNob3coKTsgICAgICAgIFxuXG4gICAgLy8gY29uc29sZS5sb2coXCJsaXN0IG1vZGVcIiwgQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uKCkpOyAgICAgIFxuXG4gICAgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpXG4gICAge1xuICAgICAgbGV0IGNlbnRlckxvY2F0aW9uIDogTC5MYXRMbmc7XG4gICAgICBsZXQgYWRkcmVzcyA9IEFwcC5nZW9jb2Rlci5sYXN0QWRkcmVzc1JlcXVlc3Q7XG5cbiAgICAgIGlmIChBcHAubWFwQ29tcG9uZW50LmlzSW5pdGlhbGl6ZWQpIHtcbiAgICAgICAgY2VudGVyTG9jYXRpb24gPSBBcHAubWFwQ29tcG9uZW50LmdldENlbnRlcigpO1xuICAgICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2V0VGl0bGUoJyBhdXRvdXIgZHUgY2VudHJlIGRlIGxhIGNhcnRlJyk7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSkgeyAgICAgICAgICBcbiAgICAgICAgY2VudGVyTG9jYXRpb24gPSBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKTtcbiAgICAgICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnNldFRpdGxlKCcgYXV0b3VyIGRlIDxpPicgKyBjYXBpdGFsaXplKHVuc2x1Z2lmeShhZGRyZXNzKSkgKyAnPC9pPicpO1xuICAgICAgfVxuICAgICAgZWxzZSB7XG4gICAgICAgIGNlbnRlckxvY2F0aW9uID0gQXBwLmJvdW5kc01vZHVsZS5kZWZhdWx0Q2VudGVyO1xuICAgICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2V0VGl0bGUoJycpO1xuICAgICAgfSAgICAgICAgIFxuXG4gICAgICBBcHAuYm91bmRzTW9kdWxlLmNyZWF0ZUJvdW5kc0Zyb21Mb2NhdGlvbihjZW50ZXJMb2NhdGlvbik7XG4gICAgICBBcHAuZWxlbWVudHNNYW5hZ2VyLmNoZWNrRm9yTmV3RWxlbWVudHNUb1JldHJpZXZlKHRydWUpO1xuICAgIH1cbiAgICBlbHNlIGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cylcbiAgICB7XG4gICAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSxmYWxzZSk7XG4gICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2V0VGl0bGUoJycpO1xuICAgIH0gICAgICBcbiAgfVxuXG4gIGdldCBtb2RlKCkgeyByZXR1cm4gdGhpcy5tb2RlXzsgfVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcERhdGFUeXBlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5leHBvcnQgZW51bSBBcHBTdGF0ZXMgXG57XG4gIE5vcm1hbCxcbiAgU2hvd0VsZW1lbnQsXG4gIFNob3dFbGVtZW50QWxvbmUsXG4gIFNob3dEaXJlY3Rpb25zXG59XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZU1hbmFnZXJcbntcbiAgLy8gY3VyciBzdGF0ZSBvZiB0aGUgYXBwXG4gIHByaXZhdGUgc3RhdGVfIDogQXBwU3RhdGVzID0gbnVsbDsgIFxuXG4gIC8vIHNvbWVzIHN0YXRlcyBuZWVkIGEgZWxlbWVudCBpZCwgd2Ugc3RvcmUgaXQgaW4gdGhpcyBwcm9wZXJ0eVxuICBwcml2YXRlIHN0YXRlRWxlbWVudElkXyA6IG51bWJlciA9IG51bGw7XG5cbiAgZ2V0IHN0YXRlKCkgeyByZXR1cm4gdGhpcy5zdGF0ZV87IH1cbiAgZ2V0IHN0YXRlRWxlbWVudElkKCkgOiBudW1iZXIgeyByZXR1cm4gdGhpcy5zdGF0ZUVsZW1lbnRJZF87IH1cblxuICAvKlxuICAqIENoYW5nZSBBcHAgc3RhdGVcbiAgKi9cbiAgc2V0U3RhdGUoJG5ld1N0YXRlIDogQXBwU3RhdGVzLCBvcHRpb25zIDogYW55ID0ge30sICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UpIFxuICB7ICAgXG4gICAgLy8gY29uc29sZS5sb2coXCJBcHBNb2R1bGUgc2V0IFN0YXRlIDogXCIgKyBBcHBTdGF0ZXNbJG5ld1N0YXRlXSAgKyAgJywgb3B0aW9ucyA9ICcsb3B0aW9ucyk7XG4gICAgbGV0IGVsZW1lbnQgPSAob3B0aW9ucyAmJiBvcHRpb25zLmlkKSA/IEFwcC5lbGVtZW50QnlJZChvcHRpb25zLmlkKSA6IG51bGw7XG5cbiAgICBsZXQgb2xkU3RhdGVOYW1lID0gdGhpcy5zdGF0ZV87XG4gICAgdGhpcy5zdGF0ZV8gPSAkbmV3U3RhdGU7ICAgICAgXG5cbiAgICBpZiAob2xkU3RhdGVOYW1lID09IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucyAmJiBBcHAuZGlyZWN0aW9uc0NvbXBvbmVudCkgXG4gICAgICBBcHAuZGlyZWN0aW9uc0NvbXBvbmVudC5jbGVhcigpO1xuXG4gICAgaWYgKG9sZFN0YXRlTmFtZSA9PSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZSkgIFxuICAgIHtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS5jbGVhckN1cnJlbnRzRWxlbWVudCgpO1xuICAgICAgQXBwLmRpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGUuZW5kKCk7ICBcbiAgICB9ICBcblxuICAgIHRoaXMuc3RhdGVFbGVtZW50SWRfID0gb3B0aW9ucyA/IG9wdGlvbnMuaWQgOiBudWxsO1xuICAgIFxuICAgIHN3aXRjaCAoJG5ld1N0YXRlKVxuICAgIHtcbiAgICAgIGNhc2UgQXBwU3RhdGVzLk5vcm1hbDogdGhpcy5zZXROb3JtYWxTdGF0ZSgpOyBicmVhaztcbiAgICAgIGNhc2UgQXBwU3RhdGVzLlNob3dFbGVtZW50OiB0aGlzLnNldFNob3dFbGVtZW50U3RhdGUoZWxlbWVudCwgb3B0aW9ucyk7IGJyZWFrOyBcbiAgICAgIGNhc2UgQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmU6IHRoaXMuc2V0U2hvd0VsZW1lbnRBbG9uZVN0YXRlKGVsZW1lbnQsIG9wdGlvbnMpOyBicmVhaztcbiAgICAgIGNhc2UgQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zOiB0aGlzLnNldFNob3dEaXJlY3Rpb25zU3RhdGUoZWxlbWVudCwgb3B0aW9ucyk7YnJlYWs7ICAgICAgXG4gICAgfVxuXG4gICAgaWYgKCEkYmFja0Zyb21IaXN0b3J5ICYmXG4gICAgICAgKCBvbGRTdGF0ZU5hbWUgIT09ICRuZXdTdGF0ZSBcbiAgICAgICAgfHwgJG5ld1N0YXRlID09IEFwcFN0YXRlcy5TaG93RWxlbWVudFxuICAgICAgICB8fCAkbmV3U3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmVcbiAgICAgICAgfHwgJG5ld1N0YXRlID09IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucykgKVxuICAgIHtcbiAgICAgIGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuQWxsKSBBcHAuaGlzdG9yeU1vZHVsZS5wdXNoTmV3U3RhdGUob3B0aW9ucyk7XG4gICAgICBlbHNlIEFwcC5oaXN0b3J5TW9kdWxlLnVwZGF0ZUN1cnJTdGF0ZShvcHRpb25zKTtcbiAgICB9ICAgICBcblxuICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUob3B0aW9ucyk7XG4gIH07XG5cbiAgcHJpdmF0ZSBzZXROb3JtYWxTdGF0ZSgpXG4gIHtcbiAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5oaWRlKGZhbHNlKTtcbiAgfSAgXG5cbiAgcHJpdmF0ZSBzZXRTaG93RWxlbWVudFN0YXRlKGVsZW1lbnQsIG9wdGlvbnMpXG4gIHtcbiAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdClcbiAgICB7XG4gICAgICBpZiAoIUFwcC5tYXBDb21wb25lbnQuaXNJbml0aWFsaXplZClcbiAgICAgIHtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5vbk1hcFJlYWR5LmRvKCgpID0+IFxuICAgICAgICB7XG4gICAgICAgICAgQXBwLm1hcENvbXBvbmVudC5wYW5Ub0xvY2F0aW9uKGVsZW1lbnQucG9zaXRpb24sIDE0LCBmYWxzZSk7XG4gICAgICAgICAgQXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQoZWxlbWVudC5pZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50LnBhblRvTG9jYXRpb24oZWxlbWVudC5wb3NpdGlvbiwgMTQsIGZhbHNlKTsgICAgICAgICAgICBcbiAgICAgICAgQXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQoZWxlbWVudC5pZCk7XG4gICAgICB9ICAgICAgICAgICAgXG5cbiAgICAgIEFwcC5zZXRNb2RlKEFwcE1vZGVzLk1hcCwgZmFsc2UsIGZhbHNlKTtcbiAgICB9IFxuICAgIGVsc2UgLy8gQXBwTW9kZVxuICAgIHtcbiAgICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LnNob3dFbGVtZW50KGVsZW1lbnQuaWQpO1xuICAgIH1cbiAgfSAgXG5cbiAgcHJpdmF0ZSBzZXRTaG93RWxlbWVudEFsb25lU3RhdGUoZWxlbWVudCwgb3B0aW9ucylcbiAge1xuICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LnNob3coKTtcblxuICAgIGlmIChlbGVtZW50KVxuICAgIHtcbiAgICAgIEFwcC5ERUFNb2R1bGUuYmVnaW4oZWxlbWVudC5pZCwgdHJ1ZSk7ICAgICAgICAgIFxuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgQXBwLmFqYXhNb2R1bGUuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5pZCxcbiAgICAgICAgKGVsZW1lbnRKc29uKSA9PiB7XG4gICAgICAgICAgQXBwLmVsZW1lbnRzSnNvbk1vZHVsZS5jb252ZXJ0SnNvbkVsZW1lbnRzKFtlbGVtZW50SnNvbl0sIHRydWUsIHRydWUpO1xuICAgICAgICAgIEFwcC5ERUFNb2R1bGUuYmVnaW4oZWxlbWVudEpzb24uaWQsIHRydWUpO1xuICAgICAgICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUob3B0aW9ucyk7XG4gICAgICAgICAgQXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKG9wdGlvbnMpO1xuICAgICAgICB9LFxuICAgICAgICAoZXJyb3IpID0+IFxuICAgICAgICB7IFxuICAgICAgICAgIGxldCBoaXN0b3J5c3RhdGUgPSBBcHAuaGlzdG9yeVN0YXRlTWFuYWdlci5sYXN0SGlzdG9yeVN0YXRlO1xuICAgICAgICAgIEFwcC5jb21wb25lbnQudG9hc3RNZXNzYWdlKFwiRXJyZXVyIHBlbmRhbnQgbGUgY2hhcmdlbWVudCBkZSBjZXQgw6lsZW1lbnRcIik7XG4gICAgICAgICAgXG4gICAgICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5Ob3JtYWwpO1xuICAgICAgICAgIGlmIChoaXN0b3J5c3RhdGUudmlld3BvcnQpIEFwcC5tYXBDb21wb25lbnQuc2V0Vmlld1BvcnQoaGlzdG9yeXN0YXRlLnZpZXdwb3J0KTtcbiAgICAgICAgICBlbHNlIEFwcC5tYXBDb21wb25lbnQuZml0RGVmYXVsdEJvdW5kcygpO1xuICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHsgQXBwLmluZm9CYXJDb21wb25lbnQuaGlkZSgpOyB9LCAyMDApO1xuICAgICAgICAgIHNldFRpbWVvdXQoICgpID0+IHsgQXBwLmluZm9CYXJDb21wb25lbnQuaGlkZSgpOyB9LCA1MDApO1xuICAgICAgICB9XG4gICAgICApOyAgICAgICAgICAgIFxuICAgIH0gICAgICBcbiAgfVxuXG4gIHByaXZhdGUgc2V0U2hvd0RpcmVjdGlvbnNTdGF0ZShlbGVtZW50IDogRWxlbWVudCwgb3B0aW9ucylcbiAge1xuICAgIGxldCBvcmlnaW4gPSBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKTsgXG4gICAgLy8gaWYgbm8gZWxlbWVudCwgd2UgZ2V0IGl0IGZyb20gYWpheCBcbiAgICBpZiAoIWVsZW1lbnQpXG4gICAge1xuICAgICAgaWYgKCFvcHRpb25zLmlkKSByZXR1cm47IFxuICAgICAgQXBwLmFqYXhNb2R1bGUuZ2V0RWxlbWVudEJ5SWQob3B0aW9ucy5pZCwgKGVsZW1lbnRKc29uKSA9PiBcbiAgICAgIHsgXG4gICAgICAgIEFwcC5lbGVtZW50c0pzb25Nb2R1bGUuY29udmVydEpzb25FbGVtZW50cyhbZWxlbWVudEpzb25dLCB0cnVlLCB0cnVlKTtcbiAgICAgICAgZWxlbWVudCA9IEFwcC5lbGVtZW50QnlJZChlbGVtZW50SnNvbi5pZCk7XG4gICAgICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUob3B0aW9ucyk7ICBcbiAgICAgICAgdGhpcy5jaGVja0lmUmVhZHlUb1N0YXJ0RGlyZWN0aW9ucyhlbGVtZW50KTsgICAgICAgICAgICAgICAgICAgICAgICBcbiAgICAgIH0sXG4gICAgICAoZXJyb3IpID0+IHsgLypUT0RPKi8gYWxlcnQoXCJObyBlbGVtZW50IHdpdGggQXBwIGlkXCIpOyB9XG4gICAgICApOyAgICAgICAgICAgICAgIFxuICAgIH1cblxuICAgIHRoaXMuY2hlY2tJZlJlYWR5VG9TdGFydERpcmVjdGlvbnMoZWxlbWVudCkgIFxuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0lmUmVhZHlUb1N0YXJ0RGlyZWN0aW9ucyhlbGVtZW50KVxuICB7XG4gICAgbGV0IG9yaWdpbiA9IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpO1xuICAgICAgXG4gICAgaWYgKCFlbGVtZW50IHx8ICFvcmlnaW4pIHJldHVybjtcbiAgICBcbiAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdClcbiAgICB7XG4gICAgICBpZiAoIUFwcC5tYXBDb21wb25lbnQuaXNJbml0aWFsaXplZClcbiAgICAgIHtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5vbk1hcFJlYWR5LmRvKCgpID0+IHsgdGhpcy5iZWdpbkRpcmVjdGlvbnNDYWxjdWxhdGlvbihvcmlnaW4sIGVsZW1lbnQpOyB9KTtcbiAgICAgIH0gICAgICAgICAgIFxuXG4gICAgICBBcHAuc2V0TW9kZShBcHBNb2Rlcy5NYXAsIGZhbHNlLCBmYWxzZSk7XG4gICAgfSBcbiAgICAgIFxuICAgIHRoaXMuYmVnaW5EaXJlY3Rpb25zQ2FsY3VsYXRpb24ob3JpZ2luLCBlbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgYmVnaW5EaXJlY3Rpb25zQ2FsY3VsYXRpb24gPSBmdW5jdGlvbiAob3JpZ2luIDogTC5MYXRMbmcsIGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgaWYgKCFBcHAubWFwQ29tcG9uZW50LmlzSW5pdGlhbGl6ZWQpIHJldHVybjtcblxuICAgIEFwcC5ERUFNb2R1bGUuYmVnaW4oZWxlbWVudC5pZCwgZmFsc2UpO1xuICAgIC8vIHdhaXQgZm9yIHRoZSBpbmZvIGJhciB0byBvcGVuLCBzbyB0aGUgbWFwIGlzIHJlc2l6ZWQgYXQgdGhpcyBmaW5hbCB2aWV3cG9ydFxuICAgIC8vIFRoZW4gd2UgY2FuIGNhbGN1bGF0ZSByb3V0ZSBhbmQgZml0Ym91bmRzIHJlZ2FyZGluZyByb3V0aW5nIHJlc3VsdFxuICAgIHNldFRpbWVvdXQoICgpID0+IHsgQXBwLmRpcmVjdGlvbnNDb21wb25lbnQuY2FsY3VsYXRlUm91dGUob3JpZ2luLCBlbGVtZW50KTsgfSwgNDAwKTsgICAgIFxuICB9O1xufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9ldmVudC5jbGFzc1wiO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgJCA6IGFueSwgTCA6IGFueTtcbmRlY2xhcmUgbGV0IFJvdXRpbmc7XG5cbmV4cG9ydCBjbGFzcyBSZXF1ZXN0XG57XG5cdGNvbnN0cnVjdG9yKHB1YmxpYyByb3V0ZSA6IHN0cmluZywgcHVibGljIGRhdGEgOiBhbnkpIHt9O1xufVxuXG5leHBvcnQgY2xhc3MgQWpheE1vZHVsZVxue1xuXHRvbk5ld0VsZW1lbnRzID0gbmV3IEV2ZW50PGFueVtdPigpO1xuXG5cdGlzUmV0cmlldmluZ0VsZW1lbnRzIDogYm9vbGVhbiA9IGZhbHNlO1xuXG5cdGN1cnJFbGVtZW50SWRSZXRyaWV2aW5nIDogbnVtYmVyO1xuXHRjdXJyQm91bmRzUmV0cmlldmluZyA6IEwuTGF0TG5nQm91bmRzW107XG5cblx0cmVxdWVzdFdhaXRpbmdUb0JlRXhlY3V0ZWQgOiBib29sZWFuID0gZmFsc2U7XG5cdHdhaXRpbmdSZXF1ZXN0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbiA9IG51bGw7XG5cblx0Y3VyclJlcXVlc3QgOiBSZXF1ZXN0ID0gbnVsbDtcblxuXHRsb2FkZXJUaW1lciA9IG51bGw7XG5cblx0YWxsRWxlbWVudHNSZWNlaXZlZCA9IGZhbHNlO1xuXG5cdGNvbnN0cnVjdG9yKCkgeyB9ICBcblxuXHRzZW5kUmVxdWVzdChyb3V0ZSA6IHN0cmluZywgbWV0aG9kIDogc3RyaW5nLCBkYXRhIDogYW55LCBjYWxsYmFja1N1Y2Nlc3M/LCBjYWxsYmFja0ZhaWx1cmU/KVxuXHR7XG5cdFx0Ly9jb25zb2xlLmxvZyhcIlNlbmRBamF4UmVxdWVzdCB0byBcIiArIHJvdXRlLCBkYXRhKTtcblx0XHQkLmFqYXgoe1xuXHRcdFx0dXJsOiByb3V0ZSxcblx0XHRcdG1ldGhvZDogbWV0aG9kLFxuXHRcdFx0ZGF0YTogZGF0YSxcblx0XHRcdHN1Y2Nlc3M6IHJlc3BvbnNlID0+IHsgaWYgKHJlc3BvbnNlICYmIGNhbGxiYWNrU3VjY2VzcykgY2FsbGJhY2tTdWNjZXNzKHJlc3BvbnNlKTsgfSxcblx0XHRcdGVycm9yOiByZXNwb25zZSA9PiB7IGlmIChjYWxsYmFja0ZhaWx1cmUpIGNhbGxiYWNrRmFpbHVyZShyZXNwb25zZS5kYXRhKTsgfVxuXHRcdH0pO1xuXHR9XG5cblx0Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkLCBjYWxsYmFja1N1Y2Nlc3M/LCBjYWxsYmFja0ZhaWx1cmU/KVxuXHR7XG5cdFx0aWYgKGVsZW1lbnRJZCA9PSB0aGlzLmN1cnJFbGVtZW50SWRSZXRyaWV2aW5nKSByZXR1cm47XHRcdFxuXHRcdHRoaXMuY3VyckVsZW1lbnRJZFJldHJpZXZpbmcgPSBlbGVtZW50SWQ7XG5cdFx0XG5cdFx0JC5hamF4KHtcblx0XHRcdHVybDogdGhpcy5nZXRTaW5nbGVFbGVtZW50QXBpVXJsKGVsZW1lbnRJZCksXG5cdFx0XHRtZXRob2Q6IFwiZ2V0XCIsXG5cdFx0XHRkYXRhOiB7IH0sXG5cdFx0XHRzdWNjZXNzOiByZXNwb25zZSA9PiBcblx0XHRcdHtcdCAgICAgICAgXG5cdFx0XHRcdGlmIChyZXNwb25zZSlcblx0XHRcdFx0e1x0XHRcdFx0XHRcblx0XHRcdFx0XHRsZXQgZWxlbWVudEpzb247XHRcblx0XHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YSkgZWxlbWVudEpzb24gPSBBcnJheS5pc0FycmF5KHJlc3BvbnNlLmRhdGEpID8gcmVzcG9uc2UuZGF0YVswXSA6IHJlc3BvbnNlLmRhdGE7XHRcdFx0XG5cdFx0XHRcdFx0ZWxzZSBlbGVtZW50SnNvbiA9IHJlc3BvbnNlO1xuXG5cdFx0XHRcdFx0aWYgKGNhbGxiYWNrU3VjY2VzcykgY2FsbGJhY2tTdWNjZXNzKGVsZW1lbnRKc29uKTsgXHRcdFx0XHRcdFxuXHRcdFx0XHR9XHRcblx0XHRcdFx0ZWxzZSBpZiAoY2FsbGJhY2tGYWlsdXJlKSBjYWxsYmFja0ZhaWx1cmUocmVzcG9uc2UpOyBcblx0XHRcdFx0XG5cdFx0XHRcdHRoaXMuY3VyckVsZW1lbnRJZFJldHJpZXZpbmcgPSBudWxsO1x0XHRcdFx0ICAgICAgIFxuXHRcdFx0fSxcblx0XHRcdGVycm9yOiByZXNwb25zZSA9PiB7IGlmIChjYWxsYmFja0ZhaWx1cmUpIGNhbGxiYWNrRmFpbHVyZShyZXNwb25zZSk7IHRoaXMuY3VyckVsZW1lbnRJZFJldHJpZXZpbmcgPSBudWxsOyB9XG5cdFx0fSk7XG5cdH07XG5cblx0Z2V0RWxlbWVudHNJbkJvdW5kcygkYm91bmRzIDogTC5MYXRMbmdCb3VuZHNbXSwgZ2V0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbiA9IGZhbHNlLCBleHBlY3RlZEZpbGxlZEJvdW5kcyA6IEwuTGF0TG5nQm91bmRzKVxuXHR7XG5cdFx0aWYgKHRoaXMuY3VyckJvdW5kc1JldHJpZXZpbmcgJiYgJGJvdW5kc1swXS5lcXVhbHModGhpcy5jdXJyQm91bmRzUmV0cmlldmluZ1swXSkpIHJldHVybjtcdFx0XG5cdFx0dGhpcy5jdXJyQm91bmRzUmV0cmlldmluZyA9ICRib3VuZHM7XG5cblx0XHQvLyBpZiBpbnZhbGlkIGxvY2F0aW9uIHdlIGFib3J0XG5cdFx0aWYgKCEkYm91bmRzIHx8ICRib3VuZHMubGVuZ3RoID09IDAgfHwgISRib3VuZHNbMF0pIHsgcmV0dXJuOyB9XG5cblx0XHRsZXQgYm91bmRzUmVzdWx0ID0gdGhpcy5jb252ZXJ0Qm91bmRzSW50b1BhcmFtcygkYm91bmRzKTtcblxuXHRcdGxldCBibmRzID0gYm91bmRzUmVzdWx0LmJvdW5kc0pzb247XG5cdFx0bGV0IGRhdGFSZXF1ZXN0IDogYW55ID0geyBcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGJvdW5kcyA6IGJvdW5kc1Jlc3VsdC5ib3VuZHNTdHJpbmcsIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ym91bmRzSnNvbiA6IEpTT04uc3RyaW5naWZ5KGJvdW5kc1Jlc3VsdC5ib3VuZHNKc29uKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhdGVnb3JpZXMgOiBBcHAuY3Vyck1haW5JZCAhPSBcImFsbFwiID8gW0FwcC5jdXJyTWFpbklkXSA6IG51bGwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmdWxsUmVwcmVzZW50YXRpb24gOiBnZXRGdWxsUmVwcmVzZW50YXRpb24sIFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b250b2xvZ3kgOiBnZXRGdWxsUmVwcmVzZW50YXRpb24gPyAnZ29nb2Z1bGwnIDogJ2dvZ29jb21wYWN0Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0YW1wc0lkcyA6IEFwcC5yZXF1ZXN0LnN0YW1wc0lkc1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH07XHRcdFxuXHRcdGxldCByb3V0ZTtcblx0XHRpZiAoZ2V0RnVsbFJlcHJlc2VudGF0aW9uKSByb3V0ZSA9IEFwcC5jb25maWcuZGF0YS5lbGVtZW50cztcblx0XHRlbHNlIHJvdXRlID0gQXBwLmNvbmZpZy5kYXRhLmVsZW1lbnRzQ29tcGFjdEFwaVVybCB8fCBBcHAuY29uZmlnLmRhdGEuZWxlbWVudHM7XG5cdFx0XG5cdFx0dGhpcy5zZW5kQWpheEVsZW1lbnRSZXF1ZXN0KG5ldyBSZXF1ZXN0KHJvdXRlLCBkYXRhUmVxdWVzdCksIGV4cGVjdGVkRmlsbGVkQm91bmRzKTtcblx0fVx0XG5cblx0cHJpdmF0ZSBjb252ZXJ0Qm91bmRzSW50b1BhcmFtcygkYm91bmRzIDogTC5MYXRMbmdCb3VuZHNbXSkgXG5cdHtcblx0XHRsZXQgc3RyaW5naWZpZWRCb3VuZHMgPSBcIlwiO1xuXHRcdGxldCBkaWdpdHMgPSA1O1xuXHRcdGxldCBib3VuZHNMZXNzRGlnaXRzID0gW107XG5cdFx0Zm9yIChsZXQgYm91bmQgb2YgJGJvdW5kcylcblx0XHR7XG5cdFx0XHRsZXQgc291dGhXZXN0ID0gTC5sYXRMbmcoTC5VdGlsLmZvcm1hdE51bShib3VuZC5nZXRTb3V0aFdlc3QoKS5sYXQsIGRpZ2l0cyksIEwuVXRpbC5mb3JtYXROdW0oYm91bmQuZ2V0U291dGhXZXN0KCkubG5nLCBkaWdpdHMpKVxuXHRcdFx0bGV0IG5vcnRFYXN0ID0gTC5sYXRMbmcoTC5VdGlsLmZvcm1hdE51bShib3VuZC5nZXROb3J0aEVhc3QoKS5sYXQsIGRpZ2l0cyksIEwuVXRpbC5mb3JtYXROdW0oYm91bmQuZ2V0Tm9ydGhFYXN0KCkubG5nLCBkaWdpdHMpKVxuXHRcdFx0Ym91bmQgPSBMLmxhdExuZ0JvdW5kcyhzb3V0aFdlc3QsIG5vcnRFYXN0KTtcblx0XHRcdGJvdW5kc0xlc3NEaWdpdHMucHVzaChib3VuZCk7XG5cdFx0XHRzdHJpbmdpZmllZEJvdW5kcyArPSBib3VuZC50b0JCb3hTdHJpbmcoKSArIFwiO1wiO1xuXHRcdH1cblxuXHRcdC8vIHNvbWUgQVBJIGVuZHBvaW50IG5lZWRzIGEgZml4ZWQgbnVtYmVyIG9mIGJvdW5kcyBlcXVhbHMgdG8gNFxuXHRcdGlmICgkYm91bmRzLmxlbmd0aCA8IDQpXG5cdFx0e1xuXHRcdFx0bGV0IGVtcHR5Qm91bmQgPSBMLmxhdExuZ0JvdW5kcyhMLmxhdExuZygwLDApLCBMLmxhdExuZygwLDApKTtcblx0XHRcdGZvciAodmFyIGkgPSAkYm91bmRzLmxlbmd0aDsgaSA8IDQ7IGkrKykgYm91bmRzTGVzc0RpZ2l0cy5wdXNoKGVtcHR5Qm91bmQpO1x0XHRcdFxuXHRcdH1cblxuXHRcdHJldHVybiB7Ym91bmRzU3RyaW5nOiBzdHJpbmdpZmllZEJvdW5kcywgYm91bmRzSnNvbjogYm91bmRzTGVzc0RpZ2l0c307XG5cdH1cblxuXHRwcml2YXRlIGdldFNpbmdsZUVsZW1lbnRBcGlVcmwoJGVsZW1lbnRJZCA6IGFueSkgOiBzdHJpbmdcblx0e1xuXHRcdGxldCByb3V0ZSA9IFwiXCI7XG5cdFx0aWYgKEFwcC5jb25maWcuZGF0YS5lbGVtZW50QnlJZFVybCkgXG5cdFx0e1xuXHRcdFx0cm91dGUgPSBBcHAuY29uZmlnLmRhdGEuZWxlbWVudEJ5SWRVcmw7XG5cdFx0XHRpZiAocm91dGUuaW5kZXhPZigne0lEfScpID4gMCkgcm91dGUgPSByb3V0ZS5yZXBsYWNlKCd7SUR9JywgJGVsZW1lbnRJZC50b1N0cmluZygpKTtcblx0XHRcdGVsc2UgXG5cdFx0XHR7XG5cdFx0XHRcdGlmIChyb3V0ZS5zbGljZSgtMSkgIT0gJy8nKSByb3V0ZSArPSAnLyc7XG5cdFx0XHRcdHJvdXRlICs9ICRlbGVtZW50SWQ7XG5cdFx0XHR9XG5cdFx0fVxuXHRcdGVsc2Ugcm91dGUgPSBBcHAuY29uZmlnLmRhdGEuZWxlbWVudHMgKyAnLycgKyAkZWxlbWVudElkO1xuXHRcdHJldHVybiByb3V0ZTtcblx0fVxuXG5cdHByaXZhdGUgc2VuZEFqYXhFbGVtZW50UmVxdWVzdCgkcmVxdWVzdCA6IFJlcXVlc3QsICRleHBlY3RlZEZpbGxlZEJvdW5kcyA9IG51bGwpXG5cdHtcblx0XHRpZiAodGhpcy5hbGxFbGVtZW50c1JlY2VpdmVkKSB7IC8qY29uc29sZS5sb2coXCJBbGwgZWxlbWVudHMgYWxyZWFkeSByZWNlaXZlZFwiKTsqLyByZXR1cm47IH1cblxuXHRcdC8vIGNvbnNvbGUubG9nKFwiQWpheCBzZW5kIGVsZW1lbnRzIHJlcXVlc3QgXCIsICRyZXF1ZXN0KTtcblxuXHRcdGlmICh0aGlzLmlzUmV0cmlldmluZ0VsZW1lbnRzKVxuXHRcdHtcdFx0XG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiQWpheCBpc1JldHJpZXZpbmdcIik7XG5cdFx0XHR0aGlzLnJlcXVlc3RXYWl0aW5nVG9CZUV4ZWN1dGVkID0gdHJ1ZTtcblx0XHRcdHRoaXMud2FpdGluZ1JlcXVlc3RGdWxsUmVwcmVzZW50YXRpb24gPSAkcmVxdWVzdC5kYXRhLmZ1bGxSZXByZXNlbnRhdGlvbjtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHR0aGlzLmlzUmV0cmlldmluZ0VsZW1lbnRzID0gdHJ1ZTtcblx0XHR0aGlzLmN1cnJSZXF1ZXN0ID0gJHJlcXVlc3Q7XG5cdFx0Ly8gbGV0IHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHRcdFx0XG5cdFx0XG5cdFx0JC5hamF4KHtcblx0XHRcdHVybDogJHJlcXVlc3Qucm91dGUsXG5cdFx0XHRtZXRob2Q6IFwiZ2V0XCIsXG5cdFx0XHRkYXRhOiAkcmVxdWVzdC5kYXRhLFxuXHRcdFx0YmVmb3JlU2VuZDogKCkgPT5cblx0XHRcdHsgXHRcdFx0XHRcblx0XHRcdFx0dGhpcy5sb2FkZXJUaW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7ICQoJyNkaXJlY3RvcnktbG9hZGluZycpLnNob3coKTsgfSwgMTUwMCk7IFxuXHRcdFx0fSxcblx0XHRcdHN1Y2Nlc3M6IHJlc3BvbnNlID0+XG5cdFx0XHR7XHRcblx0XHRcdFx0aWYgKHJlc3BvbnNlLmRhdGEgIT09IG51bGwpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHRcdFx0XHRcdFxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwicmVjZWl2ZSBcIiArIHJlc3BvbnNlLmRhdGEubGVuZ3RoICsgXCIgZWxlbWVudHMgaW4gXCIgKyAoZW5kLXN0YXJ0KSArIFwiIG1zLiBmdWxsUmVwcmVzZW50YXRpb25cIiwgcmVzcG9uc2UuZnVsbFJlcHJlc2VudGF0aW9uKTtcdFx0XHRcdFxuXG5cdFx0XHRcdFx0cmVzcG9uc2UuZnVsbFJlcHJlc2VudGF0aW9uID0gcmVzcG9uc2Uub250b2xvZ3kgPT0gXCJnb2dvY29tcGFjdFwiID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdGlmICgkZXhwZWN0ZWRGaWxsZWRCb3VuZHMpXG5cdFx0XHRcdFx0XHRBcHAuYm91bmRzTW9kdWxlLnVwZGF0ZUZpbGxlZEJvdW5kc1dpdGhCb3VuZHNSZWNlaXZlZCgkZXhwZWN0ZWRGaWxsZWRCb3VuZHMsICRyZXF1ZXN0LmRhdGEubWFpbk9wdGlvbklkLCAgJHJlcXVlc3QuZGF0YS5mdWxsUmVwcmVzZW50YXRpb24pO1xuXG5cdFx0XHRcdFx0aWYgKHJlc3BvbnNlLmFsbEVsZW1lbnRzU2VuZHMgfHwgIUFwcC5jb25maWcuZGF0YS5yZXF1ZXN0QnlCb3VuZHMpIHRoaXMuYWxsRWxlbWVudHNSZWNlaXZlZCA9IHRydWU7XG5cblx0XHRcdFx0XHR0aGlzLm9uTmV3RWxlbWVudHMuZW1pdChyZXNwb25zZSk7XHRcdFx0XHRcblx0XHRcdFx0fVx0XHRcdCAgICAgXG5cdFx0XHR9LFxuXHRcdFx0Y29tcGxldGU6ICgpID0+XG5cdFx0XHR7XG5cdFx0XHQgIHRoaXMuaXNSZXRyaWV2aW5nRWxlbWVudHMgPSBmYWxzZTtcblx0XHRcdCAgY2xlYXJUaW1lb3V0KHRoaXMubG9hZGVyVGltZXIpO1xuXHRcdFx0ICBzZXRUaW1lb3V0KCAoKSA9PiAkKCcjZGlyZWN0b3J5LWxvYWRpbmcnKS5oaWRlKCksIDI1MCk7XG5cdFx0XHQgIGlmICh0aGlzLnJlcXVlc3RXYWl0aW5nVG9CZUV4ZWN1dGVkKVxuXHRcdFx0ICB7XG5cdFx0XHQgIFx0IC8vY29uc29sZS5sb2coXCJSRVFVRVNUIFdBSVRJTkcgVE8gQkUgRVhFQ1VURUQsIGZ1bGxSZXByZXNlbnRhdGlvblwiLCB0aGlzLndhaXRpbmdSZXF1ZXN0RnVsbFJlcHJlc2VudGF0aW9uKTtcblx0XHRcdCAgXHQgQXBwLmVsZW1lbnRzTWFuYWdlci5jaGVja0Zvck5ld0VsZW1lbnRzVG9SZXRyaWV2ZSh0aGlzLndhaXRpbmdSZXF1ZXN0RnVsbFJlcHJlc2VudGF0aW9uKTtcblx0XHRcdCAgXHQgdGhpcy5yZXF1ZXN0V2FpdGluZ1RvQmVFeGVjdXRlZCA9IGZhbHNlO1xuXHRcdFx0ICB9XG5cdFx0XHR9LFxuXHRcdH0pO1xuXHR9O1xufSIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBHb0dvQ29uZmlnIH0gZnJvbSBcIi4uL2NsYXNzZXMvY29uZmlnL2dvZ28tY29uZmlnLmNsYXNzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciBMO1xuXG5leHBvcnQgY2xhc3MgQm91bmRzTW9kdWxlXG57XG5cdC8vIHdlIGV4dGVuZCB2aXNpYmxlIHZpZXhwb3J0IHRvIGxvYWQgZWxlbWVudHMgb24gdGhpcyBhcmVhLCBzbyB0aGUgdXNlciBzZWUgdGhlbSBkaXJlY3RseSB3aGVuIHBhbm5pbmcgb3Igem9vbSBvdXRcblx0ZXh0ZW5kZWRCb3VuZHMgOiBMLkxhdExuZ0JvdW5kcztcblxuXHQvLyB0aGUgYm91bmRzIHdoZXJlIGVsZW1lbnRzIGhhcyBhbHJlYWR5IGJlZW4gcmV0cmlldmVkXG5cdC8vIHdlIHNhdmUgb25lIGZpbGxlZEJvdW5kIHBlciBtYWluT3B0aW9uSWRcblx0Ly8gYW5kIG9uZSBmaWxsZWRCb3VuZCBwZXIgbGV2ZWwgb2YgZWxlbWVudCByZXByZXNlbnRhdGlvblxuXHRmdWxsUmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZCA6IEwuTGF0TG5nQm91bmRzW10gPSBbXTtcblx0Y29tcGFjdFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmQgOiBMLkxhdExuZ0JvdW5kc1tdID0gW107XG5cblx0Ly8gaW5kaWNhdGUgaWYgd2UgYWxyZWFkeSByZXRyaWV2ZWQgYWxsIGVsZW1lbnRzIG9mIHRoZSBtYXggYm91bmRzXG5cdGZ1bGxSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZSA6IGJvb2xlYW5bXSA9IFtdO1xuXHRjb21wYWN0UmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGUgOiBib29sZWFuW10gPSBbXTtcblxuXHQvLyB3ZSBkb24ndCBkb3dubG9hZCBlbGVtZW50cyBvdXRzaWRlIG9mIG1heEJvdW5kc1xuXHRtYXhCb3VuZHMgOiBMLkxhdExuZ0JvdW5kcztcblx0ZGVmYXVsdEJvdW5kcyA6IEwuTGF0TG5nQm91bmRzO1xuXHRkZWZhdWx0Q2VudGVyIDogTC5MYXRMbmc7XG5cblx0Y29uc3RydWN0b3IoY29uZmlnIDogR29Hb0NvbmZpZylcblx0e1xuXHRcdHRoaXMubWF4Qm91bmRzID0gY29uZmlnLm1hcC5tYXhCb3VuZHM7XG5cdFx0dGhpcy5kZWZhdWx0Qm91bmRzID0gY29uZmlnLm1hcC5kZWZhdWx0Qm91bmRzO1xuXHRcdHRoaXMuZGVmYXVsdENlbnRlciA9IGNvbmZpZy5tYXAuZGVmYXVsdENlbnRlcjtcblx0fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0Zm9yKGxldCBtYWluT3B0aW9uSWQgb2YgQXBwLnRheG9ub215TW9kdWxlLmdldE1haW5PcHRpb25zSWRzV2l0aEFsbCgpKVxuXHRcdHtcblx0XHRcdHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmRbbWFpbk9wdGlvbklkXSA9IG51bGw7XG5cdFx0XHR0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW21haW5PcHRpb25JZF0gPSBudWxsO1xuXHRcdFx0dGhpcy5mdWxsUmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGVbbWFpbk9wdGlvbklkXSA9IGZhbHNlO1xuXHRcdFx0dGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGVbbWFpbk9wdGlvbklkXSA9IGZhbHNlO1xuXHRcdH1cblx0fVx0XG5cblx0Y3JlYXRlQm91bmRzRnJvbUxvY2F0aW9uKCRsb2NhdGlvbiA6IEwuTGF0TG5nLCAkcmFkaXVzID0gMTApXG5cdHtcblx0XHRsZXQgZGVncmVlID0gJHJhZGl1cyAvIDExMCAvIDI7XG5cdFx0dGhpcy5leHRlbmRlZEJvdW5kcyA9IEwubGF0TG5nQm91bmRzKEwubGF0TG5nKCRsb2NhdGlvbi5sYXQgLSBkZWdyZWUsICRsb2NhdGlvbi5sbmcgLSBkZWdyZWUpLCBMLmxhdExuZygkbG9jYXRpb24ubGF0ICsgZGVncmVlLCAkbG9jYXRpb24ubG5nICsgZGVncmVlKSApO1xuXHRcdC8vY29uc29sZS5sb2coXCJDUkVBVEUgQk9VTkRTIGZyb20gbG9hY3Rpb25cIiwgdGhpcy5leHRlbmRlZEJvdW5kcyk7XG5cdFx0Ly9pZiAodGhpcy5leHRlbmRlZEJvdW5kcykgTC5yZWN0YW5nbGUodGhpcy5leHRlbmRlZEJvdW5kcywge2NvbG9yOiBcImJsdWVcIiwgd2VpZ2h0OiAzfSkuYWRkVG8oQXBwLm1hcCgpKTsgXG5cdH1cblxuXHRleHRlbmRNYXBCb3VuZHMoJG9sZFpvb20sICRuZXdab29tLCAkbnVtYmVyTWFya2VyVmlzaWJsZSlcblx0e1x0XHRcblx0XHRsZXQgcmF0aW87XG5cdFx0aWYgKCRuZXdab29tID09ICRvbGRab29tKVxuXHRcdHtcblx0XHRcdHJhdGlvID0gMC41L01hdGgucG93KCgkbnVtYmVyTWFya2VyVmlzaWJsZS8xMDApLDIpO1xuXHRcdFx0cmF0aW8gPSBNYXRoLm1pbigwLjUsIHJhdGlvKTtcblx0XHRcdHJhdGlvID0gTWF0aC5yb3VuZChyYXRpbyoxMCkvMTA7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRyYXRpbyA9IDA7XG5cdFx0fVx0XG5cdFx0QXBwLmJvdW5kc01vZHVsZS5leHRlbmRCb3VuZHMocmF0aW8sIEFwcC5tYXAoKS5nZXRCb3VuZHMoKSk7XG5cdH1cblxuXHRleHRlbmRCb3VuZHMoJHJhdGlvIDogbnVtYmVyLCAkYm91bmRzIDogTC5MYXRMbmdCb3VuZHMgPSB0aGlzLmV4dGVuZGVkQm91bmRzKVxuXHR7XHRcdFxuXHRcdGlmICh0aGlzLmN1cnJSZXRyaWV2aW5nQ29tcGxldGUodHJ1ZSkpIHtcblx0XHRcdHRoaXMuZXh0ZW5kZWRCb3VuZHMgPSB0aGlzLm1heEJvdW5kcztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCEkYm91bmRzKSB7IGNvbnNvbGUubG9nKFwiYm91bmRzIHVuY29ycmVjdFwiLCAkYm91bmRzKTsgcmV0dXJuO31cblx0XHR0aGlzLmV4dGVuZGVkQm91bmRzID0gJGJvdW5kcy5wYWQoJHJhdGlvKTtcblx0fVxuXG5cdHVwZGF0ZUZpbGxlZEJvdW5kc0FjY29yZGluZ1RvTmV3TWFpbk9wdGlvbklkKClcblx0e1xuXHRcdGlmIChBcHAuY3Vyck1haW5JZCA9PSAnYWxsJylcblx0XHR7XG5cdFx0XHQvLyBub3RoaW5nIHRvIGRvXG5cdFx0fVxuXHRcdGVsc2UgXG5cdFx0e1xuXHRcdFx0Ly8gaWYgZmlsbGVib3VuZHMgZm9yIGNhdGVnb3J5ICdhbGwnIGNvbnRhaW5zIHRoZSBmaWxsZWRib3VuZCBvZiBvdGhlciBjYXRlZ29yeVxuXHRcdFx0Ly8gd2Ugc2V0IGZpbGxlYm91bmQgZnJvbSBvdGhlciBjYXRlZ29yeSB0byBmaWxsZWRCb3VuZCBcImFsbFwiXG5cdFx0XHR0aGlzLnRyeVRvRXh0ZW5kRmlsbGVkQm91bmRGcm9tQWxsQ2F0ZWdvcnkodGhpcy5mdWxsUmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZCk7XG5cdFx0XHR0aGlzLnRyeVRvRXh0ZW5kRmlsbGVkQm91bmRGcm9tQWxsQ2F0ZWdvcnkodGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZCk7XG5cdFx0fVxuXHR9XG5cblx0cHJpdmF0ZSB0cnlUb0V4dGVuZEZpbGxlZEJvdW5kRnJvbUFsbENhdGVnb3J5KCRmaWxsZWRCb3VuZClcblx0e1xuXHRcdGlmICgkZmlsbGVkQm91bmRbJ2FsbCddICYmXG5cdFx0XHRcdCAoISRmaWxsZWRCb3VuZFtBcHAuY3Vyck1haW5JZF0gfHwgJGZpbGxlZEJvdW5kWydhbGwnXS5jb250YWlucygkZmlsbGVkQm91bmRbQXBwLmN1cnJNYWluSWRdKSApKVxuXHRcdFx0e1xuXHRcdFx0XHQkZmlsbGVkQm91bmRbQXBwLmN1cnJNYWluSWRdID0gJGZpbGxlZEJvdW5kWydhbGwnXVxuXHRcdFx0fVxuXHR9XG5cblx0Ly8gV2FpdCBmcm9tIGFqYXggcmVzcG9uc2UgdG8gdXBkYXRlIG5ldyBmaWxsZWRCb3VuZHNcblx0dXBkYXRlRmlsbGVkQm91bmRzV2l0aEJvdW5kc1JlY2VpdmVkKGV4cGVjdGVkQm91bmQgOiBMLkxhdExuZ0JvdW5kcywgbWFpbk9wdGlvbklkIDogbnVtYmVyfHN0cmluZywgZ2V0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbilcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJ1cGRhdGVGaWxsZWRCb3VuZHNXaXRoQm91bmRzUmVjZWl2ZWRcIiwgbWFpbk9wdGlvbklkKTtcblx0XHRpZiAobWFpbk9wdGlvbklkID09PSB1bmRlZmluZWQgfHwgQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbikgbWFpbk9wdGlvbklkID0gXCJhbGxcIjtcblx0XHRpZihnZXRGdWxsUmVwcmVzZW50YXRpb24pIHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmRbbWFpbk9wdGlvbklkXSA9IGV4cGVjdGVkQm91bmQ7XG5cdFx0ZWxzZSB0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW21haW5PcHRpb25JZF0gPSBleHBlY3RlZEJvdW5kO1xuXG5cdFx0aWYgKHRoaXMubWF4Qm91bmRzICYmIGV4cGVjdGVkQm91bmQuY29udGFpbnModGhpcy5tYXhCb3VuZHMpKVxuXHRcdHtcblx0XHRcdGlmKGdldEZ1bGxSZXByZXNlbnRhdGlvbikgdGhpcy5mdWxsUmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGVbbWFpbk9wdGlvbklkXSA9IHRydWU7XG5cdFx0XHRlbHNlIHRoaXMuY29tcGFjdFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW21haW5PcHRpb25JZF0gPSB0cnVlO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgY3VyckZpbGxlZEJvdW5kKCRnZXRGdWxsUmVwcmVzZW50YXRpb24gOiBib29sZWFuKSA6IEwuTGF0TG5nQm91bmRzXG5cdHsgXG5cdFx0aWYgKCRnZXRGdWxsUmVwcmVzZW50YXRpb24pIFxuXHRcdFx0cmV0dXJuIHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmRbQXBwLmN1cnJNYWluSWRdO1xuXHRcdGVsc2Vcblx0XHRcdHJldHVybiB0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW0FwcC5jdXJyTWFpbklkXTtcblx0fVxuXG5cdHByaXZhdGUgY3VyclJldHJpZXZpbmdDb21wbGV0ZSgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbikgOiBib29sZWFuXG5cdHsgXG5cdFx0aWYgKCRnZXRGdWxsUmVwcmVzZW50YXRpb24pIFxuXHRcdFx0cmV0dXJuIHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW0FwcC5jdXJyTWFpbklkXSB8fCB0aGlzLmZ1bGxSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZVsnYWxsJ107XG5cdFx0ZWxzZVxuXHRcdFx0cmV0dXJuIHRoaXMuY29tcGFjdFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW0FwcC5jdXJyTWFpbklkXSB8fCB0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZVsnYWxsJ107XG5cdH1cblxuXHRjYWxjdWxhdGVGcmVlQm91bmRzKCRnZXRGdWxsUmVwcmVzZW50YXRpb24gPSBmYWxzZSlcblx0e1xuXHRcdGxldCBmcmVlQm91bmRzID0gW107XG5cdFx0bGV0IGV4cGVjdGVkQm91bmRzO1xuXG5cdFx0Ly8gaWYgd2UgYWxyZWFkeSBjb21wbGV0ZSB0aGUgcmV0cmlldmluZyAoaS5lLiBhbGwgZWxlbWVudCBhcmUgYWxyZWFkeSByZWNlaXZlZClcblx0XHRpZiAodGhpcy5jdXJyUmV0cmlldmluZ0NvbXBsZXRlKCRnZXRGdWxsUmVwcmVzZW50YXRpb24pKSByZXR1cm4geyBzdGF0dXM6IFwiYWxsUmV0cmlldmVkXCIsIFwiZnJlZUJvdW5kc1wiIDogbnVsbCwgXCJleHBlY3RlZEZpbGxCb3VuZHNcIiA6IG51bGwgfTtcblxuXHRcdGxldCBjdXJyRmlsbGVkQm91bmQgPSB0aGlzLmN1cnJGaWxsZWRCb3VuZCgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKTtcblxuXHRcdC8vY29uc29sZS5sb2coXCJjYWxjdWxhdGVGcmVlYm91bmRzIGV4dGVuZGVkQm91bmRzID0gXCIsIHRoaXMuZXh0ZW5kZWRCb3VuZHMpO1xuXG5cdFx0Ly9pZiAoY3VyckZpbGxlZEJvdW5kKSBMLnJlY3RhbmdsZShjdXJyRmlsbGVkQm91bmQsIHtjb2xvcjogXCJyZWRcIiwgd2VpZ2h0OiAzfSkuYWRkVG8oQXBwLm1hcCgpKTsgXG5cdFx0Ly9pZiAodGhpcy5leHRlbmRlZEJvdW5kcykgTC5yZWN0YW5nbGUodGhpcy5leHRlbmRlZEJvdW5kcywge2NvbG9yOiBcImJsdWVcIiwgd2VpZ2h0OiAzfSkuYWRkVG8oQXBwLm1hcCgpKTsgXG5cblx0XHRsZXQgZnJlZUJvdW5kMSwgZnJlZUJvdW5kMiwgZnJlZUJvdW5kMywgZnJlZUJvdW5kNDtcblxuXHRcdGlmICghY3VyckZpbGxlZEJvdW5kIHx8ICFjdXJyRmlsbGVkQm91bmQuaW50ZXJzZWN0cyh0aGlzLmV4dGVuZGVkQm91bmRzKSlcblx0XHR7XG5cdFx0XHQvLyBmaXJzdCBpbml0aWFsaXphdGlvbiBvciBubyBpbnRlcnNlY3Rpb25cblx0XHRcdGZyZWVCb3VuZHMucHVzaCh0aGlzLmV4dGVuZGVkQm91bmRzKTtcblx0XHRcdGV4cGVjdGVkQm91bmRzID0gdGhpcy5leHRlbmRlZEJvdW5kcztcblx0XHR9XHRcdFxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZiAoIWN1cnJGaWxsZWRCb3VuZC5jb250YWlucyh0aGlzLmV4dGVuZGVkQm91bmRzKSlcblx0XHRcdHtcblx0XHRcdFx0aWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuY29udGFpbnMoY3VyckZpbGxlZEJvdW5kKSlcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIGV4dGVuZGVkIGNvbnRhaW5zIGZpbGxlZGJvdW5kc1x0XG5cdFx0XHRcdFx0ZnJlZUJvdW5kMSA9IEwubGF0TG5nQm91bmRzKCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldE5vcnRoV2VzdCgpLCBjdXJyRmlsbGVkQm91bmQuZ2V0Tm9ydGhFYXN0KCkgKTtcblx0XHRcdFx0XHRmcmVlQm91bmQyID0gTC5sYXRMbmdCb3VuZHMoIGZyZWVCb3VuZDEuZ2V0Tm9ydGhFYXN0KClcdFx0XHRcdCAsIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGhFYXN0KCkgKTtcblx0XHRcdFx0XHRmcmVlQm91bmQzID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aEVhc3QoKVx0ICwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXRTb3V0aFdlc3QoKSApO1xuXHRcdFx0XHRcdGZyZWVCb3VuZDQgPSBMLmxhdExuZ0JvdW5kcyggZnJlZUJvdW5kMS5nZXRTb3V0aFdlc3QoKVx0XHRcdFx0ICwgY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoV2VzdCgpICk7XG5cblx0XHRcdFx0XHRleHBlY3RlZEJvdW5kcyA9IHRoaXMuZXh0ZW5kZWRCb3VuZHM7XG5cdFx0XHRcdFx0ZnJlZUJvdW5kcy5wdXNoKGZyZWVCb3VuZDEsZnJlZUJvdW5kMiwgZnJlZUJvdW5kMywgZnJlZUJvdW5kNCk7XHRcdFx0XHRcdFxuXHRcdFx0XHR9XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIGV4dGVuZGVkIGNyb3NzIG92ZXIgZmlsbGVkXG5cdFx0XHRcdFx0aWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0V2VzdCgpID4gY3VyckZpbGxlZEJvdW5kLmdldFdlc3QoKSAmJiB0aGlzLmV4dGVuZGVkQm91bmRzLmdldEVhc3QoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXRFYXN0KCkpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGgoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aCgpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHQvLyBleHRlbmRlZCBjZW50ZXJlZCBzb3V0aCBmcm9tIGZpbGxlZEJvdW5kc1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQxID0gTC5sYXRMbmdCb3VuZHMoIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGhXZXN0KCksIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aEVhc3QoKSApO1x0XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkIGNlbnRlcmVkIHNvdXRoIGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aFdlc3QoKSwgY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoRWFzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2UgaWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0V2VzdCgpIDwgY3VyckZpbGxlZEJvdW5kLmdldFdlc3QoKSlcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5leHRlbmRlZEJvdW5kcy5nZXRTb3V0aCgpID4gY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoKCkgJiYgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aCgpIDwgY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoKCkpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkIGNlbnRlcmVkIGVhc3QgZnJvbSBmaWxsZWRCb3VuZHNcblx0XHRcdFx0XHRcdFx0ZnJlZUJvdW5kMSA9IEwubGF0TG5nQm91bmRzKCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldE5vcnRoV2VzdCgpLCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGhXZXN0KCkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2UgaWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGgoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aCgpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHQvLyBleHRlbmRlZGJvdW5kcyBzb3V0aFdlc3QgZnJvbSBmaWxsZWRCb3VuZHNcblx0XHRcdFx0XHRcdFx0ZnJlZUJvdW5kMSA9IEwubGF0TG5nQm91bmRzKCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGhFYXN0KCksIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGhXZXN0KCkgKTtcblx0XHRcdFx0XHRcdFx0ZnJlZUJvdW5kMiA9IEwubGF0TG5nQm91bmRzKCBjdXJyRmlsbGVkQm91bmQuZ2V0Tm9ydGhXZXN0KCksIGZyZWVCb3VuZDEuZ2V0Tm9ydGhXZXN0KCkgKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Ly8gZXh0ZW5kZWRib3VuZHMgbm9ydGhXZXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoRWFzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldE5vcnRoV2VzdCgpICk7XG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDIgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoV2VzdCgpLCBmcmVlQm91bmQxLmdldFNvdXRoV2VzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5leHRlbmRlZEJvdW5kcy5nZXRTb3V0aCgpID4gY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoKCkgJiYgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aCgpIDwgY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoKCkpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkIGNlbnRlcmVkIHdlc3QgZnJvbSBmaWxsZWRCb3VuZHNcblx0XHRcdFx0XHRcdFx0ZnJlZUJvdW5kMSA9IEwubGF0TG5nQm91bmRzKCBjdXJyRmlsbGVkQm91bmQuZ2V0Tm9ydGhFYXN0KCksIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGhFYXN0KCkgKTsgXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoKCkgPCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGgoKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Ly8gZXh0ZW5kZWRib3VuZHMgc291dGhlYXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoV2VzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoRWFzdCgpICk7XG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDIgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoRWFzdCgpLCBmcmVlQm91bmQxLmdldE5vcnRoRWFzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHR7XHRcblx0XHRcdFx0XHRcdFx0Ly8gZXh0ZW5kZWRib3VuZHMgbm9ydGhFYXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoV2VzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldE5vcnRoRWFzdCgpICk7XG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDIgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoRWFzdCgpLCBmcmVlQm91bmQxLmdldFNvdXRoRWFzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVx0XHRcdFx0XHRcblxuXHRcdFx0XHRcdGZyZWVCb3VuZHMucHVzaChmcmVlQm91bmQxKTtcblx0XHRcdFx0XHRpZiAoZnJlZUJvdW5kMikgZnJlZUJvdW5kcy5wdXNoKGZyZWVCb3VuZDIpO1x0XHRcblxuXHRcdFx0XHRcdGV4cGVjdGVkQm91bmRzID0gTC5sYXRMbmdCb3VuZHMoIFxuXHRcdFx0XHRcdFx0TC5sYXRMbmcoXG5cdFx0XHRcdFx0XHRcdE1hdGgubWF4KGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldE5vcnRoKCkpLFxuXHRcdFx0XHRcdFx0XHRNYXRoLm1heChjdXJyRmlsbGVkQm91bmQuZ2V0RWFzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldEVhc3QoKSlcblx0XHRcdFx0XHRcdCksXG5cdFx0XHRcdFx0XHRMLmxhdExuZyhcblx0XHRcdFx0XHRcdFx0TWF0aC5taW4oY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoKCksIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGgoKSksXG5cdFx0XHRcdFx0XHRcdE1hdGgubWluKGN1cnJGaWxsZWRCb3VuZC5nZXRXZXN0KCksIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0V2VzdCgpKSBcblx0XHRcdFx0XHRcdClcdFx0XHRcdFx0XHRcblx0XHRcdFx0XHQpO1x0XHRcblx0XHRcdFx0fVx0XHRcdFx0XHRcblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0Ly8gZXh0ZW5kZWQgYm91bmRzIGluY2x1ZGVkIGluIGZpbGxlZGJvdW5kc1xuXHRcdFx0XHRyZXR1cm4geyBcInN0YXR1c1wiOiBcImluY2x1ZGVkXCIsIFwiZnJlZUJvdW5kc1wiIDogbnVsbCwgXCJleHBlY3RlZEZpbGxCb3VuZHNcIiA6IGN1cnJGaWxsZWRCb3VuZCB9O1xuXHRcdFx0fVxuXHRcdH1cdFx0XG5cblx0XHRyZXR1cm4geyBcImZyZWVCb3VuZHNcIiA6IGZyZWVCb3VuZHMsIFwiZXhwZWN0ZWRGaWxsQm91bmRzXCIgOiBleHBlY3RlZEJvdW5kcywgXCJzdGF0dXNcIjogXCJzdWNjZXNzXCJ9O1xuXHR9XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwRGF0YVR5cGUsIEFwcFN0YXRlcywgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgdW5zbHVnaWZ5IH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5cbmV4cG9ydCBjbGFzcyBEb2N1bWVudFRpdGxlTW9kdWxlXG57XG4gIHVwZGF0ZURvY3VtZW50VGl0bGUob3B0aW9ucyA6IGFueSA9IHt9KVxuICB7XG4gICAgLy8gY29uc29sZS5sb2coXCJ1cGRhdGVEb2N1bWVudFRpdGxlXCIsIEFwcC5zdGF0ZU1hbmFnZXIuc3RhdGVFbGVtZW50SWQpO1xuXG4gICAgbGV0IHRpdGxlIDogc3RyaW5nO1xuICAgIGxldCBlbGVtZW50TmFtZSA6IHN0cmluZztcblxuICAgIGlmICggKG9wdGlvbnMgJiYgb3B0aW9ucy5pZCkgfHwgQXBwLnN0YXRlTWFuYWdlci5zdGF0ZUVsZW1lbnRJZCkgXG4gICAgeyAgICAgIFxuICAgICAgbGV0IGVsZW1lbnQgPSBBcHAuZWxlbWVudEJ5SWQoQXBwLnN0YXRlTWFuYWdlci5zdGF0ZUVsZW1lbnRJZCk7XG4gICAgICBpZiAoIWVsZW1lbnQpIHJldHVybjtcbiAgICAgIGVsZW1lbnROYW1lID0gY2FwaXRhbGl6ZShlbGVtZW50ID8gZWxlbWVudC5uYW1lIDogJycpO1xuICAgIH1cblxuICAgIGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cylcbiAgICB7XG4gICAgICB0aXRsZSA9ICdSZWNoZXJjaGUgOiAnICsgQXBwLnNlYXJjaEJhckNvbXBvbmVudC5nZXRDdXJyU2VhcmNoVGV4dCgpOyAgXG4gICAgfVxuICAgIGVsc2UgaWYgKEFwcC5tb2RlID09IEFwcE1vZGVzLkxpc3QpXG4gICAgeyAgICBcbiAgICAgIHRpdGxlID0gJ0xpc3RlIGRlcyAnICsgQXBwLmNvbmZpZy50ZXh0LmVsZW1lbnRQbHVyYWwgKyAnICcgKyB0aGlzLmdldExvY2F0aW9uQWRkcmVzc0ZvclRpdGxlKCk7ICAgIFxuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgc3dpdGNoIChBcHAuc3RhdGUpXG4gICAgICB7XG4gICAgICAgIGNhc2UgQXBwU3RhdGVzLlNob3dFbGVtZW50OiAgICAgICAgXG4gICAgICAgICAgdGl0bGUgPSBjYXBpdGFsaXplKEFwcC5jb25maWcudGV4dC5lbGVtZW50KSArICcgLSAnICsgZWxlbWVudE5hbWU7XG4gICAgICAgICAgYnJlYWs7ICBcblxuICAgICAgICBjYXNlIEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lOlxuICAgICAgICAgIHRpdGxlID0gY2FwaXRhbGl6ZShBcHAuY29uZmlnLnRleHQuZWxlbWVudCkgKyAnIC0gJyArIGVsZW1lbnROYW1lO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zOlxuICAgICAgICAgIHRpdGxlID0gJ0l0aW7DqXJhaXJlIC0gJyArIGVsZW1lbnROYW1lO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgQXBwU3RhdGVzLk5vcm1hbDogICAgICBcbiAgICAgICAgICB0aXRsZSA9ICdDYXJ0ZSBkZXMgJyArIEFwcC5jb25maWcudGV4dC5lbGVtZW50UGx1cmFsICsgJyAnICsgdGhpcy5nZXRMb2NhdGlvbkFkZHJlc3NGb3JUaXRsZSgpOyAgICAgIFxuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7ICBcbiAgfTtcblxuICBwcml2YXRlIGdldExvY2F0aW9uQWRkcmVzc0ZvclRpdGxlKClcbiAge1xuICAgIGlmIChBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb25BZGRyZXNzKCkpXG4gICAge1xuICAgICAgcmV0dXJuIFwiLSBcIiArIEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbkFkZHJlc3MoKTtcbiAgICB9XG4gICAgcmV0dXJuIFwiLSBGcmFuY2VcIjtcbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9ldmVudC5jbGFzc1wiO1xuaW1wb3J0IHsgc2x1Z2lmeSwgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzLCBBcHBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50LCBIaXN0b3J5U3RhdGUsIFZpZXdQb3J0IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0ICogYXMgQ29va2llcyBmcm9tIFwiLi4vLi4vdXRpbHMvY29va2llc1wiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIGxldCAkO1xuZGVjbGFyZSBsZXQgUm91dGluZztcblxuJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKVxue1x0XG4gICAvLyBHZXRzIGhpc3Rvcnkgc3RhdGUgZnJvbSBicm93c2VyXG4gICB3aW5kb3cub25wb3BzdGF0ZSA9IChldmVudCA6IFBvcFN0YXRlRXZlbnQpID0+XG4gICB7XG5cdCAgLy9jb25zb2xlLmxvZyhcIlxcblxcbk9ucG9wU3RhdGUgXCIsIGV2ZW50LnN0YXRlLmZpbHRlcnMpO1xuXHQgIGxldCBoaXN0b3J5c3RhdGUgOiBIaXN0b3J5U3RhdGUgPSBldmVudC5zdGF0ZTtcblx0ICBpZiAoIWhpc3RvcnlzdGF0ZSkgcmV0dXJuO1xuXHQgIC8vIHRyYW5zZm9ybSBqc29uVmlld3BvcnQgaW50byBWaWV3UG9ydCBvYmplY3QgKGlmIHdlIGRvbid0IGRvIHNvLFxuXHQgIC8vIHRoZSBWaWV3UG9ydCBtZXRob2RzIHdpbGwgbm90IGJlIGFjY2Vzc2libGUpXG5cdCAgaGlzdG9yeXN0YXRlLnZpZXdwb3J0ID0gJC5leHRlbmQobmV3IFZpZXdQb3J0KCksIGV2ZW50LnN0YXRlLnZpZXdwb3J0KTtcblx0ICBBcHAuaGlzdG9yeVN0YXRlTWFuYWdlci5sb2FkKGV2ZW50LnN0YXRlLCB0cnVlKTtcblx0fTtcbn0pO1xuXG5leHBvcnQgY2xhc3MgSGlzdG9yeU1vZHVsZVxue1xuXHRjb25zdHJ1Y3RvcigpIHsgfSAgXG5cblx0dXBkYXRlQ3VyclN0YXRlKG9wdGlvbnM/KVxuXHR7XG5cdFx0aWYgKCFoaXN0b3J5LnN0YXRlKSB0aGlzLnB1c2hOZXdTdGF0ZSgpO1xuXHRcdGVsc2UgdGhpcy51cGRhdGVIaXN0b3J5KGZhbHNlLCBvcHRpb25zKTtcblx0fTtcblxuXHRwdXNoTmV3U3RhdGUob3B0aW9ucz8pXG5cdHtcblx0XHRpZiAoaGlzdG9yeS5zdGF0ZSA9PT0gbnVsbCkgdGhpcy51cGRhdGVIaXN0b3J5KGZhbHNlLCBvcHRpb25zKTtcblx0XHRlbHNlIHRoaXMudXBkYXRlSGlzdG9yeSh0cnVlLCBvcHRpb25zKTtcdFx0XG5cdH07XG5cblx0cHJpdmF0ZSB1cGRhdGVIaXN0b3J5KCRwdXNoU3RhdGUgOiBib29sZWFuLCAkb3B0aW9ucz8gOiBhbnkpXG5cdHtcblx0XHRpZiAoIUFwcC5jb25maWcuZ2VuZXJhbC5hY3RpdmF0ZUhpc3RvcnlTdGF0ZUFuZFJvdXRpbmcpIHJldHVybjtcblx0XHRpZiAoQXBwLm1vZGUgPT0gdW5kZWZpbmVkKSByZXR1cm47XG5cblx0XHQkb3B0aW9ucyA9ICRvcHRpb25zIHx8IHt9O1xuXHRcdGxldCBoaXN0b3J5U3RhdGUgPSBuZXcgSGlzdG9yeVN0YXRlO1xuXHRcdGhpc3RvcnlTdGF0ZS5tb2RlID0gQXBwLm1vZGU7XG5cdFx0aGlzdG9yeVN0YXRlLnN0YXRlID0gQXBwLnN0YXRlO1xuXHRcdGhpc3RvcnlTdGF0ZS5kYXRhVHlwZSA9IEFwcC5kYXRhVHlwZTtcblx0XHRoaXN0b3J5U3RhdGUuYWRkcmVzcyA9IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvblNsdWcoKTtcblx0XHRoaXN0b3J5U3RhdGUudmlld3BvcnQgPSBBcHAubWFwQ29tcG9uZW50LnZpZXdwb3J0O1xuXHRcdGhpc3RvcnlTdGF0ZS5pZCA9IEFwcC5zdGF0ZU1hbmFnZXIuc3RhdGVFbGVtZW50SWQgfHwgJG9wdGlvbnMuaWQ7XG5cdFx0aGlzdG9yeVN0YXRlLmZpbHRlcnMgPSBBcHAuZmlsdGVyUm91dGluZ01vZHVsZS5nZXRGaWx0ZXJzVG9TdHJpbmcoKTtcblx0XHRoaXN0b3J5U3RhdGUudGV4dCA9IEFwcC5zZWFyY2hCYXJDb21wb25lbnQuZ2V0Q3VyclNlYXJjaFRleHQoKTtcblxuXHRcdC8vIGlmICgkcHVzaFN0YXRlKSBjb25zb2xlLmxvZyhcIk5FVyBTYXRlXCIsIEFwcFN0YXRlc1toaXN0b3J5U3RhdGUuc3RhdGVdKTtcblx0XHQvLyBlbHNlIGNvbnNvbGUubG9nKFwiVVBEQVRFIFN0YXRlXCIsIEFwcFN0YXRlc1toaXN0b3J5U3RhdGUuc3RhdGVdKTtcblxuXHRcdGxldCByb3V0ZSA9IHRoaXMuZ2VuZXJhdGVSb3V0ZShoaXN0b3J5U3RhdGUpO1xuXG5cdFx0aWYgKCFyb3V0ZSkgcmV0dXJuO1xuXG5cdFx0aWYgKCRwdXNoU3RhdGUpIGhpc3RvcnkucHVzaFN0YXRlKGhpc3RvcnlTdGF0ZSwgJycsIHJvdXRlKTtcblx0XHRlbHNlIGhpc3RvcnkucmVwbGFjZVN0YXRlKGhpc3RvcnlTdGF0ZSwgJycsIHJvdXRlKTtcblxuXHRcdGlmIChBcHAuY29uZmlnLm1hcC5zYXZlVmlld3BvcnRJbkNvb2tpZXMpXG5cdFx0e1xuXHRcdFx0Q29va2llcy5jcmVhdGVDb29raWUoJ3ZpZXdwb3J0JyxoaXN0b3J5U3RhdGUudmlld3BvcnQsIDAuMDQpOyAvLyByZW1lbWJlciB0aGlzIG9ubHkgZm9yIDFob3VyXG5cdFx0XHRDb29raWVzLmNyZWF0ZUNvb2tpZSgnYWRkcmVzcycsaGlzdG9yeVN0YXRlLmFkZHJlc3MsIDAuMDQpOyAvLyByZW1lbWJlciB0aGlzIG9ubHkgZm9yIDFob3VyXG5cdFx0fVxuXHR9O1xuXG5cdHByaXZhdGUgZ2VuZXJhdGVSb3V0ZShoaXN0b3J5U3RhdGUgOiBIaXN0b3J5U3RhdGUpXG5cdHtcblx0XHRsZXQgcm91dGU7XG5cdFx0bGV0IG1vZGUgPSBBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXAgPyAnY2FydGUnIDogJ2xpc3RlJztcblx0XHRsZXQgYWRkcmVzcyA9IGhpc3RvcnlTdGF0ZS5hZGRyZXNzO1xuXHRcdGxldCB2aWV3cG9ydCA9IGhpc3RvcnlTdGF0ZS52aWV3cG9ydDtcblx0XHRsZXQgYWRkcmVzc0FuZFZpZXdwb3J0ID0gJyc7XG5cdFx0aWYgKGFkZHJlc3MpIGFkZHJlc3NBbmRWaWV3cG9ydCArPSBhZGRyZXNzO1xuXHRcdC8vIGluIE1hcCBNb2RlIHdlIGFkZCB2aWV3cG9ydFxuXHRcdC8vIGluIExpc3QgbW9kZSB3ZSBhZGQgdmlld3BvcnQgb25seSB3aGVuIG5vIGFkZHJlc3MgcHJvdmlkZWRcblx0XHRpZiAodmlld3BvcnQgJiYgKEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCB8fCAhYWRkcmVzcykpIGFkZHJlc3NBbmRWaWV3cG9ydCArPSB2aWV3cG9ydC50b1N0cmluZygpO1xuXG5cdFx0aWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzICYmIEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuTm9ybWFsKVxuXHRcdHtcblx0XHRcdHJvdXRlID0gQXBwLnJvdXRlck1vZHVsZS5nZW5lcmF0ZSgnc2VhcmNoJywgeyBtb2RlIDogIG1vZGUsIHRleHQgOiBoaXN0b3J5U3RhdGUudGV4dCB9KTtcdFxuXHRcdH1cdFx0XG5cdFx0ZWxzZSBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdClcblx0XHR7XG5cdFx0XHQvLyBpbiBsaXN0IG1vZGUgd2UgZG9uJ3QgY2FyZSBhYm91dCBzdGF0ZVxuXHRcdFx0cm91dGUgPSBBcHAucm91dGVyTW9kdWxlLmdlbmVyYXRlKCdub3JtYWwnLCB7IG1vZGUgOiAgbW9kZSwgYWRkcmVzc0FuZFZpZXdwb3J0OiBhZGRyZXNzQW5kVmlld3BvcnQgfSk7XHRcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHN3aXRjaCAoQXBwLnN0YXRlKVxuXHRcdFx0e1xuXHRcdFx0XHRjYXNlIEFwcFN0YXRlcy5Ob3JtYWw6XHRcblx0XHRcdFx0XHRyb3V0ZSA9IEFwcC5yb3V0ZXJNb2R1bGUuZ2VuZXJhdGUoJ25vcm1hbCcsIHsgbW9kZSA6ICBtb2RlLCBhZGRyZXNzQW5kVmlld3BvcnQ6IGFkZHJlc3NBbmRWaWV3cG9ydCB9KTtcdFxuXHRcdFx0XHRcdGJyZWFrO1xuXG5cdFx0XHRcdGNhc2UgQXBwU3RhdGVzLlNob3dFbGVtZW50Olx0XG5cdFx0XHRcdGNhc2UgQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmU6XG5cdFx0XHRcdGNhc2UgQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zOlxuXHRcdFx0XHRcdGlmICghaGlzdG9yeVN0YXRlLmlkKSByZXR1cm47XG5cdFx0XHRcdFx0bGV0IGVsZW1lbnQgPSBBcHAuZWxlbWVudEJ5SWQoaGlzdG9yeVN0YXRlLmlkKTtcblx0XHRcdFx0XHRpZiAoIWVsZW1lbnQpIHJldHVybjtcblxuXHRcdFx0XHRcdGlmIChBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdHJvdXRlID0gQXBwLnJvdXRlck1vZHVsZS5nZW5lcmF0ZSgnc2hvd19kaXJlY3Rpb25zJywgeyBuYW1lIDogIGNhcGl0YWxpemUoc2x1Z2lmeShlbGVtZW50Lm5hbWUpKSwgaWQgOiBlbGVtZW50LmlkLCBhZGRyZXNzQW5kVmlld3BvcnQ6IGFkZHJlc3NBbmRWaWV3cG9ydCB9KTtcdFxuXHRcdFx0XHRcdH1cdFxuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyb3V0ZSA9IEFwcC5yb3V0ZXJNb2R1bGUuZ2VuZXJhdGUoJ3Nob3dfZWxlbWVudCcsIHsgbmFtZSA6ICBjYXBpdGFsaXplKHNsdWdpZnkoZWxlbWVudC5uYW1lKSksIGlkIDogZWxlbWVudC5pZCwgYWRkcmVzc0FuZFZpZXdwb3J0OiBhZGRyZXNzQW5kVmlld3BvcnQgfSk7XHRcblx0XHRcdFx0XHR9XHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0YnJlYWs7XHRcdFxuXHRcdFx0fVx0XHRcblx0XHR9XG5cblx0XHRpZiAocm91dGUgJiYgaGlzdG9yeVN0YXRlLmZpbHRlcnMpIHJvdXRlICs9ICc/Y2F0PScgKyBoaXN0b3J5U3RhdGUuZmlsdGVycztcblxuXHRcdHJldHVybiByb3V0ZTtcblx0fTtcbn0iLCJpbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwRGF0YVR5cGUsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEhpc3RvcnlTdGF0ZSwgVmlld1BvcnQgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NsYXNzZXMnOyBcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG5kZWNsYXJlIHZhciByb3V0aWU6IGFueSwgJDtcblxuZXhwb3J0IGNsYXNzIFJvdXRlck1vZHVsZVxue1xuXHRmaWx0ZXJzU2VyaWFsaXplZFBhcmFtIDogc3RyaW5nID0gJyc7XG5cblx0Y29uc3RydWN0b3IoKVxuXHR7XG5cdFx0cm91dGllKHtcblx0XHRcdCdnZW9sb2NhbGl6ZSAvOm1vZGUvYXV0b3VyLWRlLW1vaSc6IChtb2RlKSA9PlxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgaW5pdGlhbFN0YXRlID0gbmV3IEhpc3RvcnlTdGF0ZSgpO1xuXG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5kYXRhVHlwZSA9IEFwcERhdGFUeXBlLkFsbDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLm1vZGUgPSBtb2RlID09ICdjYXJ0ZScgPyBBcHBNb2Rlcy5NYXAgOiBBcHBNb2Rlcy5MaXN0O1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuc3RhdGUgPSBBcHBTdGF0ZXMuTm9ybWFsO1x0XHRcdFx0XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5hZGRyZXNzID0gJ2dlb2xvY2FsaXplJztcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnNTZXJpYWxpemVkUGFyYW07XG5cblx0XHRcdFx0dGhpcy5zdGFydFN0YXRlKGluaXRpYWxTdGF0ZSk7XHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0J25vcm1hbCAvOm1vZGUvOmFkZHJlc3NBbmRWaWV3cG9ydD8nOiAobW9kZSwgYWRkcmVzc0FuZFZpZXdwb3J0ID0gJycpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGxldCBpbml0aWFsU3RhdGUgPSBuZXcgSGlzdG9yeVN0YXRlKCk7XG5cdFx0XHRcdGxldCBwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnQgPSB0aGlzLnBhcnNlQWRkcmVzc1ZpZXdwb3J0KGFkZHJlc3NBbmRWaWV3cG9ydCk7XG5cblx0XHRcdFx0aW5pdGlhbFN0YXRlLmRhdGFUeXBlID0gQXBwRGF0YVR5cGUuQWxsO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUubW9kZSA9IG1vZGUgPT0gJ2NhcnRlJyA/IEFwcE1vZGVzLk1hcCA6IEFwcE1vZGVzLkxpc3Q7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5zdGF0ZSA9IEFwcFN0YXRlcy5Ob3JtYWw7XHRcdFx0XHRcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmFkZHJlc3MgPSBwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnRbMF07XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS52aWV3cG9ydCA9IG5ldyBWaWV3UG9ydCgpLmZyb21TdHJpbmcocGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0WzFdKTtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnNTZXJpYWxpemVkUGFyYW07XG5cblx0XHRcdFx0dGhpcy5zdGFydFN0YXRlKGluaXRpYWxTdGF0ZSk7XG5cdFx0XHR9LFxuXHRcdFx0J3Nob3dfZWxlbWVudCAvZmljaGUvOm5hbWUvOmlkLzphZGRyZXNzQW5kVmlld3BvcnQ/JzogKG5hbWUsIGlkLCBhZGRyZXNzQW5kVmlld3BvcnQgPSAnJykgPT5cblx0XHRcdHtcblx0XHRcdFx0bGV0IGluaXRpYWxTdGF0ZSA9IG5ldyBIaXN0b3J5U3RhdGUoKTtcblx0XHRcdFx0bGV0IHBhcnNlZEFkZHJlc3NBbmRWaWV3cG9ydCA9IHRoaXMucGFyc2VBZGRyZXNzVmlld3BvcnQoYWRkcmVzc0FuZFZpZXdwb3J0KTtcblxuXHRcdFx0XHRpbml0aWFsU3RhdGUuZGF0YVR5cGUgPSBBcHBEYXRhVHlwZS5BbGw7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5tb2RlID0gQXBwTW9kZXMuTWFwO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuc3RhdGUgPSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZTtcdFx0XHRcdFxuXHRcdFx0XHRpbml0aWFsU3RhdGUuYWRkcmVzcyA9IHBhcnNlZEFkZHJlc3NBbmRWaWV3cG9ydFswXTtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnZpZXdwb3J0ID0gbmV3IFZpZXdQb3J0KCkuZnJvbVN0cmluZyhwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnRbMV0pO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuaWQgPSBpZDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnNTZXJpYWxpemVkUGFyYW07XG5cblx0XHRcdFx0dGhpcy5zdGFydFN0YXRlKGluaXRpYWxTdGF0ZSk7XG5cdFx0XHR9LFxuXHRcdFx0J3Nob3dfZGlyZWN0aW9ucyAvaXRpbmVyYWlyZS86bmFtZS86aWQvOmFkZHJlc3NBbmRWaWV3cG9ydD8nOiAobmFtZSwgaWQsIGFkZHJlc3NBbmRWaWV3cG9ydCA9ICcnKSA9PlxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgaW5pdGlhbFN0YXRlID0gbmV3IEhpc3RvcnlTdGF0ZSgpO1xuXHRcdFx0XHRsZXQgcGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0ID0gdGhpcy5wYXJzZUFkZHJlc3NWaWV3cG9ydChhZGRyZXNzQW5kVmlld3BvcnQpO1xuXG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5kYXRhVHlwZSA9IEFwcERhdGFUeXBlLkFsbDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLm1vZGUgPSBBcHBNb2Rlcy5NYXA7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5zdGF0ZSA9IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucztcdFx0XHRcdFxuXHRcdFx0XHRpbml0aWFsU3RhdGUuYWRkcmVzcyA9IHBhcnNlZEFkZHJlc3NBbmRWaWV3cG9ydFswXTtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnZpZXdwb3J0ID0gbmV3IFZpZXdQb3J0KCkuZnJvbVN0cmluZyhwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnRbMV0pO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuaWQgPSBpZDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmZpbHRlcnMgPSB0aGlzLmZpbHRlcnNTZXJpYWxpemVkUGFyYW07XG5cblx0XHRcdFx0dGhpcy5zdGFydFN0YXRlKGluaXRpYWxTdGF0ZSk7XHRcblx0XHRcdH0sXG5cdFx0XHQnc2VhcmNoIC86bW9kZS9yZWNoZXJjaGUvOnRleHQnOiAobW9kZSwgdGV4dCkgPT5cblx0XHRcdHtcblx0XHRcdFx0bGV0IGluaXRpYWxTdGF0ZSA9IG5ldyBIaXN0b3J5U3RhdGUoKTtcblxuXHRcdFx0XHRpbml0aWFsU3RhdGUuZGF0YVR5cGUgPSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUubW9kZSA9IEFwcE1vZGVzLk1hcDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnN0YXRlID0gQXBwU3RhdGVzLk5vcm1hbDtcdFx0XHRcdFxuXHRcdFx0XHRpbml0aWFsU3RhdGUudGV4dCA9IHRleHQ7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5maWx0ZXJzID0gdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtO1xuXG5cdFx0XHRcdHRoaXMuc3RhcnRTdGF0ZShpbml0aWFsU3RhdGUpO1xuXHRcdFx0fVxuXHRcdH0pO1x0XHRcblx0fVxuXG5cdGxvYWRJbml0aWFsU3RhdGUoKVxuXHR7XHRcdFxuXHRcdGlmIChBcHAuY29uZmlnLmdlbmVyYWwuYWN0aXZhdGVIaXN0b3J5U3RhdGVBbmRSb3V0aW5nKSBcblx0XHR7XHRcdFxuXHRcdFx0Ly8gY2hlY2sgR0VUIHBhcmFtZXRlcnMgaW5zaWRlIHRoZSBoYXNoXG5cdFx0XHRsZXQgc3BsaXRlZCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoLnNwbGl0KCc/Y2F0PScpO1xuXHRcdFx0XG5cdFx0XHRpZiAoc3BsaXRlZC5sZW5ndGggPiAxKSB0aGlzLmZpbHRlcnNTZXJpYWxpemVkUGFyYW0gPSBzcGxpdGVkWzFdO1xuXG5cdFx0XHRsZXQgcm91dGVIYXNoID0gc3BsaXRlZFswXTtcblxuXHRcdFx0Ly8gaGFuZGxlIHdyb25nIGhhc2hcblx0XHRcdGlmICghcm91dGVIYXNoIHx8IHJvdXRlSGFzaCA9PSAnIy8nIHx8IHJvdXRlSGFzaCA9PSAnIycpIHJvdXRlSGFzaCA9ICcvY2FydGUnO1xuXHRcdFx0cm91dGllLm5hdmlnYXRlKHJvdXRlSGFzaCk7XG5cblx0XHRcdC8vIGxldCB0aGUgaGFzaCBiZWluZyBjaGFuZ2VkIHdpdGggYSB0aW1lT3V0XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHJvdXRpZS5yZWxvYWQoKSwgMTApO1xuXHRcdH1cblx0XHRlbHNlIFxuXHRcdHtcblx0XHRcdGxldCBpbml0aWFsSGFzaCA9IHdpbmRvdy5sb2NhdGlvbi5oYXNoO1xuXHRcdFx0Ly8gbmF2aWdhdGUgdG8gZGVmYXVsdCByb3V0ZVxuXHRcdFx0cm91dGllLm5hdmlnYXRlKCcvY2FydGUnKTtcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gcm91dGllLnJlbG9hZCgpLCAxMCk7XG5cdFx0XHQvLyByZXN0b3JlIGluaXRpYWwgaGFzaFxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB3aW5kb3cubG9jYXRpb24uaGFzaCA9IGluaXRpYWxIYXNoLCAxMDApO1xuXHRcdH1cblx0fVxuXG5cdGdlbmVyYXRlKHJvdXRlTmFtZSA6IHN0cmluZywgb3B0aW9ucz8gOiBhbnksIGFic29sdXRlVXJsPyA6IGJvb2xlYW4pXG5cdHtcblx0XHRyZXR1cm4gJyMnICsgcm91dGllLmxvb2t1cChyb3V0ZU5hbWUsIG9wdGlvbnMpO1xuXHR9XG5cblx0Ly8gYWRkcmVzcyBhbmQgdmlld3BvcnQgYXJlIGpvaW5lZCBpbnRvIG9uZSBzdHJpbmcsIHNlcGVyYXRlZCBieSBcIkBcIlxuXHRwcml2YXRlIHBhcnNlQWRkcmVzc1ZpZXdwb3J0KCRhZGRyZXNzVmlld3BvcnQpXG4gIHtcbiAgICAvLyBwcmVjYXV0aW9uIGluIGNhc2UgR0VUIHBhcmFtIHN0aWxsIGluIGhhc2hcblx0XHQkYWRkcmVzc1ZpZXdwb3J0ID0gJGFkZHJlc3NWaWV3cG9ydC5zcGxpdCgnPycpWzBdO1xuXG4gICAgbGV0IHNwbGl0ZWQgPSAkYWRkcmVzc1ZpZXdwb3J0LnNwbGl0KCdAJyk7XG5cbiAgICBpZiAoc3BsaXRlZC5sZW5ndGggPT0gMSlcbiAgICB7XG4gICAgICAgIHJldHVybiBbJGFkZHJlc3NWaWV3cG9ydCwgJyddO1xuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgICByZXR1cm4gc3BsaXRlZDtcbiAgICB9ICBcbiAgfVxuXG4gIHByaXZhdGUgc3RhcnRTdGF0ZShzdGF0ZSA6IEhpc3RvcnlTdGF0ZSlcbiAge1xuXHRcdEFwcC5oaXN0b3J5U3RhdGVNYW5hZ2VyLmxvYWQoc3RhdGUpO1x0XHRcbiAgfVxufSIsImltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyIG51bmp1Y2tzO1xuXG5leHBvcnQgY2xhc3MgVGVtcGxhdGVNb2R1bGVcbntcblx0Y29uc3RydWN0b3IoKVxuXHR7XG5cdFx0Ly8gd2UgY2FuIGNvbmZpZ3VyZSB0aGlzIHBhdGggYW5kIHRoZSB0ZW1wbGF0ZXMgbmFtZXMgZnJvbSBHb0dvQ2FydG9cblx0XHQvLyB0byBvdmVycmlkZSBkZWZhdWx0IHRlbXBsYXRlc1xuXHRcdC8vIEFzIGRlZmF1bHQgdGVtcGxhdGVzIGFyZSBwcmVjb21waWxlZCBpbnRvIGphdmFzY3JpcHQgdGVtcGxhdGVzLmpzIGZpbGVcblx0XHQvLyBpZiB0aGVyZSBpcyBzb21lIHRlbXBsYXRlcyB3ZSBkaWQgbm90IG92ZXJyaWRlLCBudW5qdWNrcyB3aWxsIGdldCB0aGUgcHJlY29tcGlsZWQgb25lXG5cdFx0bnVuanVja3MuY29uZmlndXJlKCcuLi9zcmMvdmlld3MnLCB7IGF1dG9lc2NhcGU6IHRydWUgfSk7XG5cdH1cblxuXHRyZW5kZXIodGVtcGxhdGVOYW1lIDogc3RyaW5nLCBvcHRpb25zIDogYW55ID0ge30pIDogc3RyaW5nXG5cdHtcblx0XHRsZXQgZmlsZVVybCA9ICcnO1xuXG5cdFx0c3dpdGNoKHRlbXBsYXRlTmFtZSlcblx0XHR7XG5cdFx0XHRjYXNlICdsYXlvdXQnOiBmaWxlVXJsID0gJ2xheW91dC5odG1sLm5qayc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnbWFya2VyJzogZmlsZVVybCA9ICdjb21wb25lbnRzL21hcC9tYXJrZXIuaHRtbC5uamsnOyBicmVhaztcblx0XHRcdGNhc2UgJ2dvZ28tc3R5bGVzJzogZmlsZVVybCA9ICdnb2dvLXN0eWxlcy5odG1sLm5qayc7IGJyZWFrO1xuXHRcdFx0Y2FzZSAnZWxlbWVudCc6IGZpbGVVcmwgPSAnY29tcG9uZW50cy9lbGVtZW50L2VsZW1lbnQuaHRtbC5uamsnOyBicmVhaztcblx0XHRcdGNhc2UgJ3ZvdGUtbW9kYWwtY29udGVudCc6IGZpbGVVcmwgPSAnY29tcG9uZW50cy9tb2RhbHMvZWxlbWVudC92b3RlLWNvbnRlbnQuaHRtbC5uamsnOyBicmVhaztcblx0XHRcdGRlZmF1bHQ6IGNvbnNvbGUud2FybignW0dvR29DYXJ0b10gTm8gdGVtcGxhdGUgYXNzb2NpYXRlZCB0byB0ZW1wbGF0ZU5hbWUnLCB0ZW1wbGF0ZU5hbWUpO1xuXHRcdH1cblxuXHRcdHJldHVybiBudW5qdWNrcy5yZW5kZXIoZmlsZVVybCwgb3B0aW9ucyk7XG5cdH1cbn0iLCJpbXBvcnQgeyBPcHRpb25WYWx1ZSB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmRlY2xhcmUgdmFyIEpzRGlmZiA6IGFueTtcblxudmFyIGRpZmZDb25maWd1cmF0aW9uID1cbntcbiAgbmFtZTogSnNEaWZmLmRpZmZTZW50ZW5jZXMsXG4gIGRlc2NyaXB0aW9uOiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbiAgYWRkcmVzczogSnNEaWZmLmRpZmZTZW50ZW5jZXMsXG4gIGNvbW1pdG1lbnQ6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxuICB0ZWxlcGhvbmU6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxuICB3ZWJzaXRlOiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbiAgZW1haWw6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxuICBvcGVuSG91cnNNb3JlSW5mb3M6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudERpZmZNb2R1bGVcbntcbiAgZ2V0RGlmZlZhbHVlKHZhbHVlLCBtb2RpZmllZFZhbHVlLCBwcm9wZXJ0eU5hbWUpXG4gIHtcbiAgICBsZXQgc3BhbkNsYXNzID0gJycsXG4gICAgc3BhbiA9IG51bGw7XG5cbiAgICBsZXQgRGlmZk1ldGhvZCA9IGRpZmZDb25maWd1cmF0aW9uW3Byb3BlcnR5TmFtZV0gPyBkaWZmQ29uZmlndXJhdGlvbltwcm9wZXJ0eU5hbWVdIDogSnNEaWZmLmRpZmZTZW50ZW5jZXNcbiAgICBsZXQgZGlmZiA9IERpZmZNZXRob2QodmFsdWUsIG1vZGlmaWVkVmFsdWUpO1xuICAgIGxldCBkaXNwbGF5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2JyksXG4gICAgICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgZGlmZi5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpXG4gICAge1xuICAgICAgc3BhbkNsYXNzID0gcGFydC5hZGRlZCA/ICdhZGRlZCcgOiBwYXJ0LnJlbW92ZWQgPyAncmVtb3ZlZCcgOiAnZXF1YWxzJztcbiAgICAgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICBpZiAoc3BhbkNsYXNzKSBzcGFuLmNsYXNzTmFtZSA9IHNwYW5DbGFzcztcbiAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC52YWx1ZSkpO1xuICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgfSk7XG5cbiAgICBkaXNwbGF5LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcblxuICAgIHJldHVybiBkaXNwbGF5LmlubmVySFRNTDtcbiAgfVxuXG4gIGdldERpZmZPcHRpb25WYWx1ZXMob3B0aW9uVmFsdWVzIDogT3B0aW9uVmFsdWVbXSwgbmV3T3B0aW9uVmFsdWVzIDogT3B0aW9uVmFsdWVbXSlcbiAge1xuICAgIGxldCBkaWZmT3B0aW9uc1ZhbHVlcyA9IFtdO1xuICAgIGxldCBuZXdPVklkcyA9IG5ld09wdGlvblZhbHVlcy5tYXAoKG9iaikgPT4gb2JqLm9wdGlvbklkKTtcbiAgICBsZXQgb2xkT1ZJZHMgPSBvcHRpb25WYWx1ZXMubWFwKChvYmopID0+IG9iai5vcHRpb25JZCk7XG5cbiAgICBmb3IobGV0IG92IG9mIG9wdGlvblZhbHVlcylcbiAgICB7XG4gICAgICBpZiAobmV3T1ZJZHMuaW5kZXhPZihvdi5vcHRpb25JZCkgPT0gLTEpXG4gICAgICB7XG4gICAgICAgIG92LmRpZmYgPSAncmVtb3ZlZCc7XG4gICAgICAgIGRpZmZPcHRpb25zVmFsdWVzLnB1c2gob3YpO1xuICAgICAgfVxuICAgIH1cbiAgICBmb3IobGV0IG5ld092IG9mIG5ld09wdGlvblZhbHVlcylcbiAgICB7XG4gICAgICBsZXQgaW5kZXggPSBvbGRPVklkcy5pbmRleE9mKG5ld092Lm9wdGlvbklkKTtcbiAgICAgIGlmIChpbmRleCA9PSAtMSlcbiAgICAgIHtcbiAgICAgICAgbmV3T3YuZGlmZiA9ICdhZGRlZCc7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICB7ICAgICAgICBcbiAgICAgICAgbGV0IG1vZGlmaWVkVmFsdWUgPSBjYXBpdGFsaXplKG5ld092LmRlc2NyaXB0aW9uKTtcbiAgICAgICAgbGV0IHZhbHVlID0gY2FwaXRhbGl6ZShvcHRpb25WYWx1ZXNbaW5kZXhdLmRlc2NyaXB0aW9uKSxcbiAgICAgICAgc3BhbkNsYXNzID0gJycsXG4gICAgICAgIHNwYW4gPSBudWxsO1xuICAgICAgICBsZXQgZGlmZiA9IEpzRGlmZi5kaWZmV29yZHModmFsdWUsIG1vZGlmaWVkVmFsdWUpLFxuICAgICAgICAgICAgZGlzcGxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgICAgICAgICAgZnJhZ21lbnQgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7XG5cbiAgICAgICAgZGlmZi5mb3JFYWNoKGZ1bmN0aW9uKHBhcnQpXG4gICAgICAgIHtcbiAgICAgICAgICBzcGFuQ2xhc3MgPSBwYXJ0LmFkZGVkID8gJ2FkZGVkJyA6IHBhcnQucmVtb3ZlZCA/ICdyZW1vdmVkJyA6ICdlcXVhbHMnO1xuICAgICAgICAgIHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgICAgICAgaWYgKHNwYW5DbGFzcykgc3Bhbi5jbGFzc05hbWUgPSBzcGFuQ2xhc3M7XG4gICAgICAgICAgc3Bhbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShwYXJ0LnZhbHVlKSk7XG4gICAgICAgICAgZnJhZ21lbnQuYXBwZW5kQ2hpbGQoc3Bhbik7XG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRpc3BsYXkuYXBwZW5kQ2hpbGQoZnJhZ21lbnQpO1xuXG4gICAgICAgIG5ld092LmRlc2NyaXB0aW9uID0gZGlzcGxheS5pbm5lckhUTUw7XG4gICAgICAgIG5ld092LmRpZmYgPSAnZXF1YWxzJztcbiAgICAgIH1cbiAgICAgIGRpZmZPcHRpb25zVmFsdWVzLnB1c2gobmV3T3YpO1xuICAgIH1cblxuICAgIHJldHVybiBkaWZmT3B0aW9uc1ZhbHVlcztcbiAgfVxufSIsImltcG9ydCB7IEVsZW1lbnQsIEVsZW1lbnRCYXNlLCBFbGVtZW50U3RhdHVzLCBQb3N0YWxBZGRyZXNzLCBFbGVtZW50VXJsIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgc2x1Z2lmeSwgc3BsaXRMb25nVGV4dCB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgJCwgTDtcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRKc29uUGFyc2VyTW9kdWxlXG57XG4gIGxvYWQoZWxlbWVudEpzb24gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50IHwgRWxlbWVudEJhc2UpXG4gIHtcbiAgICAvLyBwYXRjaCB0byBoYW5kbGUgY29tcGFjdEpzb24gc3RvcmVkIGluc2lkZSBhIFwiY29tcGFjdEpzb25cIiBwcm9wZXJ0eSAodXNlIHdpdGggU2VtYW50aWMgQnVzKVxuICAgIGlmIChlbGVtZW50SnNvbi5jb21wYWN0SnNvbikgXG4gICAge1xuICAgICAgbGV0IGlkID0gZWxlbWVudEpzb24uaWQ7XG4gICAgICBlbGVtZW50SnNvbiA9IGVsZW1lbnRKc29uLmNvbXBhY3RKc29uO1xuICAgICAgZWxlbWVudEpzb24uaWQgPSBpZDtcbiAgICB9XG5cbiAgICAvLyB3aGVuIHdlIGdldCB0aGUgY29tcGFjdCBqc29uIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBlbGVtZW50IGZyb20gdGhlIHNlcnZlclxuICAgIC8vIHRoZSBlbGVtZW50SnNvbiBpcyBhIHNpbXBsZSBhcnJheSB3aXRoIHRoZSBtb3JlIGltcG9ydGFudCBlbGVtZW50IGF0dHJpYnV0ZVxuICAgIGlmICgkLmlzQXJyYXkoZWxlbWVudEpzb24pICYmIGVsZW1lbnRKc29uLmxlbmd0aCA+PSA1KVxuICAgICAgdGhpcy5sb2FkRnJvbUNvbXBhY3RKc29uKGVsZW1lbnRKc29uLCBlbGVtZW50KTtcbiAgICBlbHNlIFxuICAgICAgdGhpcy5sb2FkRnJvbUZ1bGxKc29uKGVsZW1lbnRKc29uLCBlbGVtZW50KTtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEZyb21Db21wYWN0SnNvbihlbGVtZW50SnNvbiA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQgfCBFbGVtZW50QmFzZSlcbiAge1xuICAgIGVsZW1lbnQuaWQgPSBlbGVtZW50SnNvbi5pZDsgLy8gdGhlIGVsZW1lbnQgaGFzIGJlZW4gbW9kaWZpZWQgYmVmb3JlIHRvIGZpeHMgYmFkIGlkcyAgICAgXG4gICAgZWxlbWVudC5uYW1lID0gY2FwaXRhbGl6ZShlbGVtZW50SnNvblsxXSk7XG4gICAgZWxlbWVudC5wb3NpdGlvbiA9IEwubGF0TG5nKGVsZW1lbnRKc29uWzJdLCBlbGVtZW50SnNvblszXSk7ICAgICBcbiAgICBBcHAuZWxlbWVudE9wdGlvblZhbHVlc01vZHVsZS5jcmVhdGVPcHRpb25WYWx1ZXMoZWxlbWVudEpzb25bNF0sIGVsZW1lbnQpOyAgIFxuICAgIGVsZW1lbnQuc3RhdHVzID0gZWxlbWVudEpzb24ubGVuZ3RoID49IDYgPyBlbGVtZW50SnNvbls1XSA6IDE7ICBcbiAgICBlbGVtZW50Lm1vZGVyYXRpb25TdGF0ZSA9IGVsZW1lbnRKc29uLmxlbmd0aCA+PSA3ID8gZWxlbWVudEpzb25bNl0gOiAwO1xuICB9XG5cbiAgcHJpdmF0ZSBsb2FkRnJvbUZ1bGxKc29uKGVsZW1lbnRKc29uIDogYW55LCBlbGVtZW50IDogRWxlbWVudCB8IEVsZW1lbnRCYXNlKVxuICB7XG4gICAgLy8gaWYgdGhlIGVsZW1lbnQgd2FzIG5vdCBwcmVmaWxsZWQgd2l0aCB0aGUgY29tcGFjdCBqc29uIHJlcHJlc2VudGF0aW9uXG4gICAgLy8gd2Ugb3Zld3JpdGUgYW55d2F5IGFsbCBhdHRyaWJ1dGVzIChpdCBjYW4gaGF2ZSBjaGFuZ2VkICEpXG4gICAgZWxlbWVudC5pZCA9IGVsZW1lbnRKc29uLmlkIHx8IGVsZW1lbnRKc29uWydAaWQnXTtcblxuICAgIGVsZW1lbnQucG9zaXRpb24gPSBMLmxhdExuZyhlbGVtZW50SnNvbi5sYXRpdHVkZSB8fCBlbGVtZW50SnNvbi5sYXQgfHwgZWxlbWVudEpzb24uZ2VvICYmIGVsZW1lbnRKc29uLmdlby5sYXRpdHVkZSwgXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRKc29uLmxvbmdpdHVkZSB8fCBlbGVtZW50SnNvbi5sbmcgfHwgZWxlbWVudEpzb24ubG9uZyB8fCBlbGVtZW50SnNvbi5nZW8gJiYgZWxlbWVudEpzb24uZ2VvLmxvbmdpdHVkZSk7XG4gICAgZWxlbWVudC5uYW1lID0gY2FwaXRhbGl6ZShlbGVtZW50SnNvbi5uYW1lIHx8IGVsZW1lbnRKc29uLnRpdGxlKTtcbiAgICBcbiAgICBlbGVtZW50LnN0YXR1cyA9IGVsZW1lbnRKc29uLnN0YXR1cyA9PSB1bmRlZmluZWQgPyAxIDogZWxlbWVudEpzb24uc3RhdHVzO1xuICAgIGVsZW1lbnQubW9kZXJhdGlvblN0YXRlID0gZWxlbWVudEpzb24ubW9kZXJhdGlvblN0YXRlIHx8IDA7XG5cbiAgICB0aGlzLmNyZWF0ZU9wdGlvbnNWYWx1ZXMoZWxlbWVudEpzb24sIGVsZW1lbnQpO1xuXG4gICAgZWxlbWVudC5zdGFtcHMgPSBlbGVtZW50SnNvbi5zdGFtcHMgfHwgW107ICAgIFxuXG4gICAgaWYoZWxlbWVudEpzb24ubW9kaWZpZWRFbGVtZW50ICYmIGVsZW1lbnQuc3RhdHVzICE9IC01KSBcbiAgICB7XG4gICAgICBsZXQgbW9kaWZpZWRFbGVtZW50ID0gbmV3IEVsZW1lbnRCYXNlKGVsZW1lbnRKc29uLm1vZGlmaWVkRWxlbWVudCk7XG4gICAgICBcbiAgICAgIHRoaXMuY3JlYXRlT3B0aW9uc1ZhbHVlcyhlbGVtZW50SnNvbi5tb2RpZmllZEVsZW1lbnQsIG1vZGlmaWVkRWxlbWVudCk7XG4gICAgICBcbiAgICAgIC8vIGNhbGN1bCBhbmQgc3RvcmUgZGlmZiBvcHRpb25zVmFsdWVzIGluIG1vZGlmaWVkIGVsZW1lbnRcbiAgICAgIGxldCBkaWZmT3B0aW9uVmFsdWVzID0gQXBwLmVsZW1lbnREaWZmTW9kdWxlLmdldERpZmZPcHRpb25WYWx1ZXMoZWxlbWVudC5vcHRpb25zVmFsdWVzLCBtb2RpZmllZEVsZW1lbnQub3B0aW9uc1ZhbHVlcyk7XG4gICAgICBtb2RpZmllZEVsZW1lbnQub3B0aW9uc1ZhbHVlcyA9IGRpZmZPcHRpb25WYWx1ZXM7XG5cbiAgICAgIGVsZW1lbnQubW9kaWZpZWRFbGVtZW50ID0gbW9kaWZpZWRFbGVtZW50O1xuICAgIH1cbiAgICBcbiAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gZWxlbWVudEpzb24uZGVzY3JpcHRpb24gfHwgZWxlbWVudEpzb24uYWJzdHJhY3Q7XG4gICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IGNhcGl0YWxpemUoZWxlbWVudC5kZXNjcmlwdGlvbiB8fCAnJykgO1xuICAgIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uID0gZWxlbWVudEpzb24uZGVzY3JpcHRpb25Nb3JlO1xuICAgIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uID0gY2FwaXRhbGl6ZShlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiB8fCAnJyk7IFxuICAgIHRoaXMuY2hlY2tGb3JNZXJnZURlc2NyaXB0aW9ucyhlbGVtZW50KTtcbiAgICB0aGlzLmNoZWNrRm9yU3BsaXREZXNjcmlwdGlvbihlbGVtZW50KTtcblxuICAgIGVsZW1lbnQuYWRkcmVzcyA9IG5ldyBQb3N0YWxBZGRyZXNzKGVsZW1lbnRKc29uLmFkZHJlc3MpO1xuXG4gICAgLy8gZWxlbWVudC5yZXBvcnRzID0gZWxlbWVudC5jcmVhdGVPYmplY3RBcnJheUZyb21Kc29uKFZvdGVSZXBvcnQsIGVsZW1lbnRKc29uLnJlcG9ydHMpO1xuICAgIC8vIGVsZW1lbnQuY29udHJpYnV0aW9ucyA9IGVsZW1lbnQuY3JlYXRlT2JqZWN0QXJyYXlGcm9tSnNvbihDb250cmlidXRpb24sIGVsZW1lbnRKc29uLmNvbnRyaWJ1dGlvbnMpO1xuICAgIC8vIGVsZW1lbnQudm90ZXMgPSBlbGVtZW50LmNyZWF0ZU9iamVjdEFycmF5RnJvbUpzb24oVm90ZVJlcG9ydCwgZWxlbWVudEpzb24udm90ZXMpO1xuXG4gICAgZWxlbWVudC5yZXBvcnRzID0gZWxlbWVudEpzb24ucmVwb3J0cztcbiAgICBlbGVtZW50LmNvbnRyaWJ1dGlvbnMgPSBlbGVtZW50SnNvbi5jb250cmlidXRpb25zO1xuICAgIGVsZW1lbnQucGVuZGluZ0NvbnRyaWJ1dGlvbiA9IGVsZW1lbnRKc29uLnBlbmRpbmdDb250cmlidXRpb247XG4gICAgZWxlbWVudC52b3RlcyA9IGVsZW1lbnRKc29uLnZvdGVzO1xuXG4gICAgZWxlbWVudC5jb21taXRtZW50ID0gZWxlbWVudEpzb24uY29tbWl0bWVudCB8fCAnJztcbiAgICBlbGVtZW50LnRlbGVwaG9uZSA9IEFwcC5lbGVtZW50Rm9ybWF0ZXJNb2R1bGUuZ2V0Rm9ybWF0ZWRUZWwoZWxlbWVudEpzb24udGVsZXBob25lKTsgICAgXG4gICAgZWxlbWVudC5lbWFpbCA9IGVsZW1lbnRKc29uLmVtYWlsIHx8IGVsZW1lbnRKc29uLmNvbnRhY3QgfHwgJyc7XG4gICAgZWxlbWVudC5vcGVuSG91cnMgPSBlbGVtZW50SnNvbi5vcGVuSG91cnM7XG4gICAgQXBwLmVsZW1lbnRGb3JtYXRlck1vZHVsZS5jYWxjdWxhdGVGb3JtYXRlZE9wZW5Ib3VycyhlbGVtZW50KTtcbiAgICBlbGVtZW50Lm9wZW5Ib3Vyc01vcmVJbmZvcyA9IGVsZW1lbnRKc29uLm9wZW5Ib3Vyc01vcmVJbmZvcyB8fCBlbGVtZW50SnNvbi5vcGVuSG91cnNTdHJpbmc7IFxuICAgIGVsZW1lbnQuaW1hZ2VzID0gW107XG4gICAgaWYoZWxlbWVudEpzb24uaW1hZ2UpIGVsZW1lbnQuaW1hZ2VzLnB1c2goZWxlbWVudEpzb24uaW1hZ2UpO1xuICAgIGVsc2UgaWYgKGVsZW1lbnRKc29uLmltYWdlcykgZWxlbWVudC5pbWFnZXMgPSBbXS5jb25jYXQoZWxlbWVudEpzb24uaW1hZ2VzKTtcbiAgICBlbGVtZW50LmltYWdlcyA9IGVsZW1lbnQuaW1hZ2VzLmZpbHRlcigoaW1hZ2VVcmwpID0+IGltYWdlVXJsLmxlbmd0aCA+IDApO1xuICAgIFxuICAgIC8vIHVybHNcbiAgICBlbGVtZW50LndlYnNpdGUgPSBlbGVtZW50SnNvbi53ZWJzaXRlIHx8IGVsZW1lbnRKc29uLnNpdGU7XG4gICAgbGV0IHVybHNKc29uID0gZWxlbWVudEpzb24udXJscyB8fCBlbGVtZW50SnNvbi51cmw7XG4gICAgbGV0IHVybHMgOiBFbGVtZW50VXJsW10gPSBbXTtcbiAgICBpZiAgICAgICh0eXBlb2YgdXJsc0pzb24gPT0gJ3N0cmluZycpIHVybHMgPSBbbmV3IEVsZW1lbnRVcmwodXJsc0pzb24pXTsgXG4gICAgZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh1cmxzSnNvbikpICAgICBmb3IobGV0IHVybCBvZiB1cmxzSnNvbikgdXJscy5wdXNoKG5ldyBFbGVtZW50VXJsKHVybCkpICAgXG4gICAgZWxzZSBpZiAodHlwZW9mIHVybHNKc29uID09ICdvYmplY3QnKSBmb3IgKGxldCBrZXkgaW4gdXJsc0pzb24pIHVybHMucHVzaChuZXcgRWxlbWVudFVybCh7dHlwZTprZXksIHZhbHVlOnVybHNKc29uW2tleV19KSk7XG4gICAgXG4gICAgZWxlbWVudC51cmxzID0gdXJscztcbiAgICBlbGVtZW50LnRhZ3MgPSBlbGVtZW50SnNvbi50YWdzO1xuXG4gICAgZWxlbWVudC5zZWFyY2hTY29yZSA9IGVsZW1lbnRKc29uLnNlYXJjaFNjb3JlO1xuICAgIGVsZW1lbnQuaXNGdWxseUxvYWRlZCA9IHRydWVcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT3B0aW9uc1ZhbHVlcyhlbGVtZW50SnNvbiA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQgfCBFbGVtZW50QmFzZSlcbiAge1xuICAgIEFwcC5lbGVtZW50T3B0aW9uVmFsdWVzTW9kdWxlLmNyZWF0ZU9wdGlvblZhbHVlcyhlbGVtZW50SnNvbi5jYXRlZ29yaWVzIHx8IGVsZW1lbnRKc29uLnRheG9ub215IHx8IGVsZW1lbnRKc29uLm9wdGlvblZhbHVlcywgZWxlbWVudCk7XG4gICAgaWYgKGVsZW1lbnRKc29uLmNhdGVnb3JpZXNEZXNjcmlwdGlvbnMpXG4gICAgICBBcHAuZWxlbWVudE9wdGlvblZhbHVlc01vZHVsZS51cGRhdGVPcHRpb25zV2l0aERlc2NyaXB0aW9uKGVsZW1lbnQsIGVsZW1lbnRKc29uLmNhdGVnb3JpZXNEZXNjcmlwdGlvbnMpO1xuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPYmplY3RBcnJheUZyb21Kc29uKGtsYXNzLCBlbGVtZW50c0pzb24pXG4gIHtcbiAgICBlbGVtZW50c0pzb24gPSBlbGVtZW50c0pzb24gfHwgW107XG4gICAgbGV0IHJlc3VsdCA9IFtdO1xuICAgIGZvcihsZXQgZWxlbWVudEpzb24gb2YgZWxlbWVudHNKc29uKVxuICAgIHtcbiAgICAgIHJlc3VsdC5wdXNoKG5ldyBrbGFzcyhlbGVtZW50SnNvbikpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xuICB9IFxuXG4gIC8vIGlmIHRoZSBkZXNjcmlwdGlvbiBhbmQgbG9uZ0Rlc2NyaXB0aW9uIGFyZSBzbWFsbCwgd2UgY2FuIG1lcmdlIHRoZW0gaW50byBvbmUgc2luZ2xlIGRlc2NyaXB0aW9uXG4gIHByaXZhdGUgY2hlY2tGb3JNZXJnZURlc2NyaXB0aW9ucyhlbGVtZW50KVxuICB7XG4gICAgaWYgKCBlbGVtZW50LnN0YXR1cyAhPSBFbGVtZW50U3RhdHVzLlBlbmRpbmdNb2RpZmljYXRpb24gJiZcbiAgICAgICAgIGVsZW1lbnQuc3RhdHVzICE9IEVsZW1lbnRTdGF0dXMuTW9kaWZpZWRFbGVtZW50ICYmXG4gICAgICAgICBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbi5sZW5ndGggPiAwICYmIFxuICAgICAgICAgKGVsZW1lbnQuZGVzY3JpcHRpb24ubGVuZ3RoICsgZWxlbWVudC5sb25nRGVzY3JpcHRpb24ubGVuZ3RoKSA8IDMwMClcbiAgICB7XG4gICAgICBpZiAoZWxlbWVudC5kZXNjcmlwdGlvbi5sZW5ndGggPiAwKSBlbGVtZW50LmRlc2NyaXB0aW9uID0gZWxlbWVudC5kZXNjcmlwdGlvbiArICc8YnIgLz4gJztcbiAgICAgIGVsZW1lbnQuZGVzY3JpcHRpb24gKz0gZWxlbWVudC5sb25nRGVzY3JpcHRpb247XG4gICAgICBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiA9ICcnO1xuICAgIH1cbiAgfVxuXG4gIC8vIHdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSBhIHZlcnkgbGFyZ2UgZGVzY3JpcHRpb24gaW4gdGhlIGhlYWRlciwgaW5zdGVhZCB3ZSBzcGxpdCB0aGUgZGVzY3JpcHRpb25cbiAgLy8gaW50byBzbWFsbGVyIG9uZSB0aGF0IHdpbGwgYmUgZGlzcGxheWVkIG9uIGJvZHlcbiAgcHJpdmF0ZSBjaGVja0ZvclNwbGl0RGVzY3JpcHRpb24oZWxlbWVudCA6IEVsZW1lbnRCYXNlKVxuICB7XG4gICAgaWYgKCBlbGVtZW50LnN0YXR1cyAhPSBFbGVtZW50U3RhdHVzLlBlbmRpbmdNb2RpZmljYXRpb24gJiZcbiAgICAgICAgIGVsZW1lbnQuc3RhdHVzICE9IEVsZW1lbnRTdGF0dXMuTW9kaWZpZWRFbGVtZW50KVxuICAgIHtcbiAgICAgIGlmIChlbGVtZW50LmRlc2NyaXB0aW9uLmxlbmd0aCA+IDMwMCkgeyAgICAgICAgXG4gICAgICAgIGxldCByZXN1bHQgPSBzcGxpdExvbmdUZXh0KGVsZW1lbnQuZGVzY3JpcHRpb24sIDMwMCwgODApO1xuICAgICAgICBlbGVtZW50LmRlc2NyaXB0aW9uID0gcmVzdWx0LmZpcnN0ICsgXCIgKFN1aXRlIGF1IGRlc3NvdXMuLi4pXCI7XG4gICAgICAgIGlmIChlbGVtZW50LmxvbmdEZXNjcmlwdGlvbikgcmVzdWx0LnNlY29uZCArPSBcIjwvYnI+XCIgKyBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbjtcbiAgICAgICAgZWxlbWVudC5sb25nRGVzY3JpcHRpb24gPSByZXN1bHQuc2Vjb25kO1xuICAgICAgfVxuXG4gICAgICBpZiAoZWxlbWVudC5sb25nRGVzY3JpcHRpb24ubGVuZ3RoID4gNTAwKSB7XG4gICAgICAgIGxldCByZXN1bHQgPSBzcGxpdExvbmdUZXh0KGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uLCA1MDAsIDEwMCk7XG4gICAgICAgIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uID0gcmVzdWx0LmZpcnN0OyBcbiAgICAgICAgZWxlbWVudC5sb25nRGVzY3JpcHRpb25Nb3JlID0gcmVzdWx0LnNlY29uZDsgICAgICAgICAgICAgXG4gICAgICB9ICAgICAgICBcbiAgICB9XG4gIH1cbn0iLCJpbXBvcnQgeyBFbGVtZW50QmFzZSwgRWxlbWVudFN0YXR1cyB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2xhc3Nlcyc7IFxuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG52YXIgY2FwaXRhbGl6ZUNvbmZpZ3VyYXRpb24gPVxue1xuICBuYW1lOiB0cnVlLFxuICBkZXNjcmlwdGlvbjogdHJ1ZSxcbiAgbG9uZ0Rlc2NyaXB0aW9uOiB0cnVlLFxuICBhZGRyZXNzOiBmYWxzZSxcbiAgdGVsZXBob25lOiBmYWxzZSxcbiAgd2Vic2l0ZTogZmFsc2UsXG4gIGVtYWlsOiBmYWxzZSxcbiAgb3BlbkhvdXJzTW9yZUluZm9zOiB0cnVlLFxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudEZvcm1hdGVyTW9kdWxlXG57XG4gIGdldEZvcm1hdGVkVGVsKHZhbHVlKVxuICB7XG4gICAgaWYgKCF2YWx1ZSkgcmV0dXJuICcnO1xuICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMTApIHJldHVybiB2YWx1ZS5yZXBsYWNlKC8oLnsyfSkoPyEkKS9nLFwiJDEgXCIpO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSAgXG5cbiAgY2FsY3VsYXRlRm9ybWF0ZWRPcGVuSG91cnMoZWxlbWVudCA6IEVsZW1lbnRCYXNlKVxuICB7ICAgICAgICAgXG4gICAgZWxlbWVudC5mb3JtYXRlZE9wZW5Ib3VycyA9IHt9O1xuICAgIGxldCBuZXdfa2V5LCBuZXdfa2V5X3RyYW5zbGF0ZWQsIG5ld0RhaWx5U2xvdDtcbiAgICBmb3IobGV0IGtleSBpbiBlbGVtZW50Lm9wZW5Ib3VycylcbiAgICB7XG4gICAgICBuZXdfa2V5X3RyYW5zbGF0ZWQgPSB0aGlzLnRyYW5zbGF0ZURheUtleShrZXkpOyAgICAgICAgXG4gICAgICBuZXdEYWlseVNsb3QgPSB0aGlzLmZvcm1hdGVEYWlseVRpbWVTbG90KGVsZW1lbnQub3BlbkhvdXJzW2tleV0pO1xuICAgICAgXG4gICAgICBpZiAobmV3RGFpbHlTbG90KSBlbGVtZW50LmZvcm1hdGVkT3BlbkhvdXJzW25ld19rZXlfdHJhbnNsYXRlZF0gPSBuZXdEYWlseVNsb3Q7XG4gICAgfVxuICB9XG5cbiAgZ2V0UHJvcGVydHkoZWxlbWVudCA6IEVsZW1lbnRCYXNlLCBwcm9wZXJ0eU5hbWUpXG4gIHtcbiAgICBsZXQgdmFsdWUgPSB0aGlzLmdldEZvcm1hdGVkVmFsdWUoZWxlbWVudCwgcHJvcGVydHlOYW1lKTtcbiAgICBcbiAgICAvLyBpbiBpZnJhbWUgdGhlIHBlbmRpbmcgbW9kaWZpY2F0aW9ucyBhcmUgbm90IGRpc3BsYXllZCwganVzdCB0aGUgb2xkIHZlcnNpb25cbiAgICBpZiAoZWxlbWVudC5zdGF0dXMgIT0gRWxlbWVudFN0YXR1cy5QZW5kaW5nTW9kaWZpY2F0aW9uIHx8ICFBcHAuY29uZmlnLmlzRmVhdHVyZUF2YWlsYWJsZSgncGVuZGluZycpIHx8ICFlbGVtZW50Lm1vZGlmaWVkRWxlbWVudCkgcmV0dXJuIHZhbHVlO1xuXG4gICAgbGV0IG1vZGlmaWVkVmFsdWUgPSB0aGlzLmdldEZvcm1hdGVkVmFsdWUoZWxlbWVudC5tb2RpZmllZEVsZW1lbnQsIHByb3BlcnR5TmFtZSk7XG5cbiAgICBpZiAoIXZhbHVlICYmICFtb2RpZmllZFZhbHVlKSByZXR1cm4gJyc7XG5cbiAgICB2YWx1ZSA9IHZhbHVlIHx8ICcnO1xuICAgIG1vZGlmaWVkVmFsdWUgPSBtb2RpZmllZFZhbHVlIHx8ICcnO1xuXG4gICAgcmV0dXJuIEFwcC5lbGVtZW50RGlmZk1vZHVsZS5nZXREaWZmVmFsdWUodmFsdWUsIG1vZGlmaWVkVmFsdWUsIHByb3BlcnR5TmFtZSlcbiAgfVxuXG4gIHByaXZhdGUgdHJhbnNsYXRlRGF5S2V5KGRheUtleSlcbiAge1xuICAgIHN3aXRjaChkYXlLZXkpXG4gICAge1xuICAgICAgY2FzZSAnTW8nOiByZXR1cm4gJ2x1bmRpJztcbiAgICAgIGNhc2UgJ1R1JzogcmV0dXJuICdtYXJkaSc7XG4gICAgICBjYXNlICdXZSc6IHJldHVybiAnbWVyY3JlZGknO1xuICAgICAgY2FzZSAnVGgnOiByZXR1cm4gJ2pldWRpJztcbiAgICAgIGNhc2UgJ0ZyJzogcmV0dXJuICd2ZW5kcmVkaSc7XG4gICAgICBjYXNlICdTYSc6IHJldHVybiAnc2FtZWRpJztcbiAgICAgIGNhc2UgJ1N1JzogcmV0dXJuICdkaW1hbmNoZSc7XG4gICAgfVxuXG4gICAgcmV0dXJuICcnO1xuICB9XG5cbiAgcHJpdmF0ZSBmb3JtYXRlRGFpbHlUaW1lU2xvdChkYWlseVNsb3QpIFxuICB7ICAgIFxuICAgIGlmIChkYWlseVNsb3QgPT09IG51bGwpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBkYWlseVNsb3QucmVwbGFjZSgvLS9nLCAnIC0gJykucmVwbGFjZSgvLC9nLCAnIGV0ICcpO1xuICB9OyAgIFxuXG4gIHByaXZhdGUgZ2V0Rm9ybWF0ZWRWYWx1ZShlbGVtZW50IDogRWxlbWVudEJhc2UsIHByb3BlcnR5TmFtZSlcbiAge1xuICAgIGxldCB2YWx1ZTtcbiAgICBpZiAocHJvcGVydHlOYW1lID09ICdhZGRyZXNzJykgdmFsdWUgPSBlbGVtZW50LmFkZHJlc3MuZ2V0Rm9ybWF0ZWRBZGRyZXNzKCk7XG4gICAgZWxzZSB2YWx1ZSA9IGVsZW1lbnRbcHJvcGVydHlOYW1lXVxuICAgIFxuICAgIHZhbHVlID0gY2FwaXRhbGl6ZUNvbmZpZ3VyYXRpb25bcHJvcGVydHlOYW1lXSA/IGNhcGl0YWxpemUodmFsdWUpIDogdmFsdWU7XG4gICAgcmV0dXJuIHZhbHVlO1xuICB9XG59IiwiaW1wb3J0IHsgRWxlbWVudCwgT3B0aW9uVmFsdWUgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NsYXNzZXMnOyBcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRJY29uc01vZHVsZVxue1xuICB1cGRhdGVJY29uc1RvRGlzcGxheShlbGVtZW50IDogRWxlbWVudCkgXG4gIHsgICAgXG4gICAgdGhpcy5jaGVja0ZvckRpc2FibGVkT3B0aW9uVmFsdWVzKGVsZW1lbnQpO1xuXG4gICAgaWYgKEFwcC5jdXJyTWFpbklkID09ICdhbGwnKVxuICAgICAgZWxlbWVudC5pY29uc1RvRGlzcGxheSA9IHRoaXMucmVjdXJzaXZlbHlTZWFyY2hJY29uc1RvRGlzcGxheShlbGVtZW50LmdldE9wdGlvblRyZWUoKSwgIUFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pO1xuICAgIGVsc2VcbiAgICAgIGVsZW1lbnQuaWNvbnNUb0Rpc3BsYXkgPSB0aGlzLnJlY3Vyc2l2ZWx5U2VhcmNoSWNvbnNUb0Rpc3BsYXkoZWxlbWVudC5nZXRDdXJyTWFpbk9wdGlvblZhbHVlKCkpO1xuXG4gICAgLy8gaW4gY2FzZSBvZiBubyBPcHRpb25WYWx1ZSBpbiB0aGlzIG1haW5PcHRpb24sIHdlIGRpc3BsYXkgdGhlIG1haW5PcHRpb24gSWNvblxuICAgIGlmIChlbGVtZW50Lmljb25zVG9EaXNwbGF5Lmxlbmd0aCA9PSAwKVxuICAgIHtcbiAgICAgIGVsZW1lbnQuaWNvbnNUb0Rpc3BsYXkucHVzaChlbGVtZW50LmdldEN1cnJNYWluT3B0aW9uVmFsdWUoKSk7XG4gICAgfVxuICAgIFxuICAgIC8vIGNvbnNvbGUubG9nKFwiSWNvbnMgdG8gZGlzcGxheSBzb3J0ZWRcIiwgZWxlbWVudC5nZXRJY29uc1RvRGlzcGxheSgpKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlbHlTZWFyY2hJY29uc1RvRGlzcGxheShwYXJlbnRPcHRpb25WYWx1ZSA6IE9wdGlvblZhbHVlLCByZWN1cnNpdmUgOiBib29sZWFuID0gdHJ1ZSkgOiBPcHRpb25WYWx1ZVtdXG4gIHsgICAgXG4gICAgaWYgKCFwYXJlbnRPcHRpb25WYWx1ZSkgcmV0dXJuIFtdO1xuICAgIFxuICAgIGxldCByZXN1bHRPcHRpb25zIDogT3B0aW9uVmFsdWVbXSA9IFtdOyAgICBcblxuICAgIGZvcihsZXQgY2F0ZWdvcnlWYWx1ZSBvZiBwYXJlbnRPcHRpb25WYWx1ZS5jaGlsZHJlbilcbiAgICB7XG4gICAgICBmb3IobGV0IG9wdGlvblZhbHVlIG9mIGNhdGVnb3J5VmFsdWUuY2hpbGRyZW4pXG4gICAgICB7XG4gICAgICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICAgICAgXG4gICAgICAgIGlmIChyZWN1cnNpdmUgfHwgb3B0aW9uVmFsdWUub3B0aW9uSWQgPT0gXCJSb290RmFrZU9wdGlvblwiKVxuICAgICAgICB7XG4gICAgICAgICAgcmVzdWx0ID0gdGhpcy5yZWN1cnNpdmVseVNlYXJjaEljb25zVG9EaXNwbGF5KG9wdGlvblZhbHVlKSB8fCBbXTtcbiAgICAgICAgICByZXN1bHRPcHRpb25zID0gcmVzdWx0T3B0aW9ucy5jb25jYXQocmVzdWx0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChyZXN1bHQubGVuZ3RoID09IDAgJiYgb3B0aW9uVmFsdWUub3B0aW9uLnVzZUljb25Gb3JNYXJrZXIpXG4gICAgICAgIHtcbiAgICAgICAgICByZXN1bHRPcHRpb25zLnB1c2gob3B0aW9uVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIFxuICAgIHJldHVybiByZXN1bHRPcHRpb25zO1xuICB9XG5cbiAgcHJpdmF0ZSBjaGVja0ZvckRpc2FibGVkT3B0aW9uVmFsdWVzKGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5yZWN1cnNpdmVseUNoZWNrRm9yRGlzYWJsZWRPcHRpb25WYWx1ZXMoZWxlbWVudC5nZXRPcHRpb25UcmVlKCksIEFwcC5jdXJyTWFpbklkID09ICdhbGwnKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlbHlDaGVja0ZvckRpc2FibGVkT3B0aW9uVmFsdWVzKG9wdGlvblZhbHVlIDogT3B0aW9uVmFsdWUsIG5vUmVjdXJzaXZlIDogYm9vbGVhbiA9IHRydWUpXG4gIHtcbiAgICBsZXQgaXNFdmVyeUNhdGVnb3J5Q29udGFpbnNPbmVPcHRpb25Ob3RkaXNhYmxlZCA9IHRydWU7XG4gICAgLy9jb25zb2xlLmxvZyhcImNoZWNrRm9yRGlzYWJsZWRPcHRpb25WYWx1ZSBOb3JlY3Vyc2l2ZSA6IFwiICsgbm9SZWN1cnNpdmUsIG9wdGlvblZhbHVlKTtcblxuICAgIGZvcihsZXQgY2F0ZWdvcnlWYWx1ZSBvZiBvcHRpb25WYWx1ZS5jaGlsZHJlbilcbiAgICB7XG4gICAgICBsZXQgaXNTb21lT3B0aW9uTm90ZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIGZvciAobGV0IHN1Ym9wdGlvblZhbHVlIG9mIGNhdGVnb3J5VmFsdWUuY2hpbGRyZW4pXG4gICAgICB7XG4gICAgICAgIGlmIChzdWJvcHRpb25WYWx1ZS5jaGlsZHJlbi5sZW5ndGggPT0gMCB8fCBub1JlY3Vyc2l2ZSlcbiAgICAgICAge1xuICAgICAgICAgIC8vY29uc29sZS5sb2coXCJib3R0b20gb3B0aW9uIFwiICsgc3Vib3B0aW9uVmFsdWUub3B0aW9uLm5hbWUsc3Vib3B0aW9uVmFsdWUub3B0aW9uLmlzQ2hlY2tlZCApO1xuICAgICAgICAgIHN1Ym9wdGlvblZhbHVlLmlzRmlsbGVkQnlGaWx0ZXJzID0gIXN1Ym9wdGlvblZhbHVlLm9wdGlvbi5pc0Rpc2FibGVkOyAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgIHtcbiAgICAgICAgICB0aGlzLnJlY3Vyc2l2ZWx5Q2hlY2tGb3JEaXNhYmxlZE9wdGlvblZhbHVlcyhzdWJvcHRpb25WYWx1ZSwgbm9SZWN1cnNpdmUpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChzdWJvcHRpb25WYWx1ZS5pc0ZpbGxlZEJ5RmlsdGVycykgaXNTb21lT3B0aW9uTm90ZGlzYWJsZWQgPSB0cnVlO1xuICAgICAgfVxuICAgICAgaWYgKCFpc1NvbWVPcHRpb25Ob3RkaXNhYmxlZCkgaXNFdmVyeUNhdGVnb3J5Q29udGFpbnNPbmVPcHRpb25Ob3RkaXNhYmxlZCA9IGZhbHNlO1xuICAgICAgLy9jb25zb2xlLmxvZyhcIkNhdGVnb3J5VmFsdWUgXCIgKyBjYXRlZ29yeVZhbHVlLmNhdGVnb3J5Lm5hbWUgKyBcImlzU29tZU9wdGlvbk5vdGRpc2FibGVkXCIsIGlzU29tZU9wdGlvbk5vdGRpc2FibGVkKTtcbiAgICB9XG5cbiAgICBpZiAob3B0aW9uVmFsdWUub3B0aW9uKVxuICAgIHtcbiAgICAgIC8vY29uc29sZS5sb2coXCJPcHRpb25WYWx1ZSBcIiArIG9wdGlvblZhbHVlLm9wdGlvbi5uYW1lICsgXCIgOiBpc0V2ZXJ5Q2F0ZWdveXJDb250YWluT25PcHRpb25cIiwgaXNFdmVyeUNhdGVnb3J5Q29udGFpbnNPbmVPcHRpb25Ob3RkaXNhYmxlZCApO1xuICAgICAgb3B0aW9uVmFsdWUuaXNGaWxsZWRCeUZpbHRlcnMgPSBpc0V2ZXJ5Q2F0ZWdvcnlDb250YWluc09uZU9wdGlvbk5vdGRpc2FibGVkO1xuICAgICAgaWYgKCFvcHRpb25WYWx1ZS5pc0ZpbGxlZEJ5RmlsdGVycykgb3B0aW9uVmFsdWUuc2V0UmVjdXJzaXZlbHlGaWxsZWRCeUZpbHRlcnMob3B0aW9uVmFsdWUuaXNGaWxsZWRCeUZpbHRlcnMpO1xuICAgIH1cbiAgfVxufSIsImltcG9ydCB7IEVsZW1lbnQsIEVsZW1lbnRCYXNlLCBPcHRpb25WYWx1ZSwgQ2F0ZWdvcnlWYWx1ZSwgQ2F0ZWdvcnksIE9wdGlvbiB9IGZyb20gJy4uLy4uL2NsYXNzZXMvY2xhc3Nlcyc7IFxuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudE9wdGlvblZhbHVlc01vZHVsZVxue1xuICBjcmVhdGVPcHRpb25WYWx1ZXMob3B0aW9uc1ZhbHVlc0pzb24gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50QmFzZSlcbiAge1xuICAgIGVsZW1lbnQub3B0aW9uc1ZhbHVlcyA9IFtdO1xuXG4gICAgaWYoIW9wdGlvbnNWYWx1ZXNKc29uKSByZXR1cm47XG5cbiAgICBmb3IgKGxldCBrZXkgPSAwOyBrZXkgPCBvcHRpb25zVmFsdWVzSnNvbi5sZW5ndGg7ICsra2V5KSBcbiAgICB7XG4gICAgICB0aGlzLmNyZWF0ZU9wdGlvblZhbHVlRm9yRWxlbWVudChvcHRpb25zVmFsdWVzSnNvbltrZXldLCBrZXksIGVsZW1lbnQpO1xuICAgIH0gXG5cbiAgICB0aGlzLmxvb2tmb3JNaXNzaW5nUGFyZW50c09wdGlvbihlbGVtZW50KTsgICAgXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9wdGlvblZhbHVlRm9yRWxlbWVudChvcHRpb25WYWx1ZUpzb24sIGtleSA6IG51bWJlciwgZWxlbWVudCA6IEVsZW1lbnRCYXNlKVxuICB7XG4gICAgbGV0IG5ld09wdGlvbiA9IG5ldyBPcHRpb25WYWx1ZShvcHRpb25WYWx1ZUpzb24sIGtleSk7XG5cbiAgICBpZiAobmV3T3B0aW9uLm9wdGlvbilcbiAgICB7XG4gICAgICBpZiAobmV3T3B0aW9uLm9wdGlvbi5pc01haW5PcHRpb24pIFxuICAgICAgICBlbGVtZW50Lm1haW5PcHRpb25Pd25lcklkcy5wdXNoKG5ld09wdGlvbi5vcHRpb25JZCk7XG5cbiAgICAgIGVsZW1lbnQub3B0aW9uc1ZhbHVlcy5wdXNoKG5ld09wdGlvbik7XG4gICAgfSAgIFxuXG4gICAgcmV0dXJuIG5ld09wdGlvbjsgICBcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvbnNXaXRoRGVzY3JpcHRpb24oZWxlbWVudCA6IEVsZW1lbnRCYXNlLCAkb3B0aW9uVmFsdWVzRGVzY3JpcHRpb24pIHtcbiAgICBlbGVtZW50Lm9wdGlvbnNWYWx1ZXMuZm9yRWFjaCggKG9wdGlvblZhbHVlKSA9PiB7IFxuICAgICAgbGV0IGNvcnJlc3BvbmRpbmdPcHRpb25WYWx1ZXdpdGhEZXNjcmlwdGlvbiA9ICRvcHRpb25WYWx1ZXNEZXNjcmlwdGlvbi5maWx0ZXIoIChvYmplY3QpID0+IG9iamVjdC5jYXRlZ29yeUlkID09IG9wdGlvblZhbHVlLm9wdGlvbklkKVswXTtcbiAgICAgIGlmICghY29ycmVzcG9uZGluZ09wdGlvblZhbHVld2l0aERlc2NyaXB0aW9uKSByZXR1cm47XG4gICAgICBvcHRpb25WYWx1ZS5kZXNjcmlwdGlvbiA9IGNvcnJlc3BvbmRpbmdPcHRpb25WYWx1ZXdpdGhEZXNjcmlwdGlvbi5kZXNjcmlwdGlvbjtcbiAgICB9KTtcbiAgfVxuXG4gIGNyZWF0ZU9wdGlvbnNUcmVlKGVsZW1lbnQgOiBFbGVtZW50QmFzZSlcbiAge1xuICAgIGxldCBtYWluQ2F0ZWdvcnkgPSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXk7XG4gICAgZWxlbWVudC5vcHRpb25UcmVlID0gdGhpcy5yZWN1c2l2ZWx5Q3JlYXRlT3B0aW9uVHJlZShlbGVtZW50LCBtYWluQ2F0ZWdvcnksIG5ldyBPcHRpb25WYWx1ZSh7fSkpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWN1c2l2ZWx5Q3JlYXRlT3B0aW9uVHJlZShlbGVtZW50IDogRWxlbWVudEJhc2UsIGNhdGVnb3J5IDogQ2F0ZWdvcnksIG9wdGlvblZhbHVlIDogT3B0aW9uVmFsdWUpXG4gIHtcbiAgICBsZXQgY2F0ZWdvcnlWYWx1ZSA9IG5ldyBDYXRlZ29yeVZhbHVlKGNhdGVnb3J5KTtcblxuICAgIGZvcihsZXQgb3B0aW9uIG9mIGNhdGVnb3J5Lm9wdGlvbnMpXG4gICAgeyAgICAgIFxuICAgICAgbGV0IGNoaWxkT3B0aW9uVmFsdWUgPSB0aGlzLmdldEVsZW1lbnRPcHRpb25WYWx1ZUNvcnJlc3BvbmRpbmdUb09wdGlvbklkKGVsZW1lbnQsIG9wdGlvbi5pZCk7XG4gICAgICBcbiAgICAgIGlmIChjaGlsZE9wdGlvblZhbHVlKVxuICAgICAge1xuICAgICAgICBjYXRlZ29yeVZhbHVlLmFkZE9wdGlvblZhbHVlKGNoaWxkT3B0aW9uVmFsdWUpO1xuICAgICAgICBmb3IobGV0IHN1YmNhdGVnb3J5IG9mIG9wdGlvbi5zdWJjYXRlZ29yaWVzKVxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5yZWN1c2l2ZWx5Q3JlYXRlT3B0aW9uVHJlZShlbGVtZW50LCBzdWJjYXRlZ29yeSwgY2hpbGRPcHRpb25WYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0gICAgICBcbiAgICB9XG5cbiAgICBpZiAoY2F0ZWdvcnlWYWx1ZS5jaGlsZHJlbi5sZW5ndGggPiAwKVxuICAgIHtcbiAgICAgIGNhdGVnb3J5VmFsdWUuY2hpbGRyZW4uc29ydCggKGEsYikgPT4gYS5pbmRleCAtIGIuaW5kZXgpO1xuICAgICAgb3B0aW9uVmFsdWUuYWRkQ2F0ZWdvcnlWYWx1ZShjYXRlZ29yeVZhbHVlKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb3B0aW9uVmFsdWU7IFxuICB9ICBcblxuICBwcml2YXRlIGdldEVsZW1lbnRPcHRpb25WYWx1ZUNvcnJlc3BvbmRpbmdUb09wdGlvbklkKGVsZW1lbnQgOiBFbGVtZW50QmFzZSwgJG9wdGlvbklkIDogbnVtYmVyKSA6IE9wdGlvblZhbHVlXG4gIHtcbiAgICBsZXQgaW5kZXggPSBlbGVtZW50Lm9wdGlvbnNWYWx1ZXMubWFwKCh2YWx1ZSkgPT4gdmFsdWUub3B0aW9uSWQpLmluZGV4T2YoJG9wdGlvbklkLnRvU3RyaW5nKCkpO1xuICAgIGlmIChpbmRleCA9PSAtMSkgcmV0dXJuIG51bGw7XG4gICAgcmV0dXJuIGVsZW1lbnQub3B0aW9uc1ZhbHVlc1tpbmRleF07XG4gIH1cblxuICAvLyBsb29rIGZvciBtaXNzaW5nIHBhcmVudCBvcHRpb25zIHZhbHVlcy4gaWYgYW4gZWxlbWVudCBjb250YWluc1xuICAvLyBvbmx5IHRoZSBkZWVwZXN0IG9wdGlvbiB2YWx1ZSwgd2UgYWRkIGFsbCB0aGUgcGFyZW50cyBvcHRpb25zXG4gIC8vIG9mIHRob3NlIGRlZXBlc3Qgb3B0aW9ucyBzbyBmaWx0ZXJzIGNhbiB3b3JrcyBwcm9wZXJseVxuICBwcml2YXRlIGxvb2tmb3JNaXNzaW5nUGFyZW50c09wdGlvbihlbGVtZW50IDogRWxlbWVudEJhc2UpXG4gIHtcbiAgICBsZXQgb3B0aW9uVmFsdWVzSWRzID0gZWxlbWVudC5vcHRpb25zVmFsdWVzLm1hcCggKGVsKSA9PiBlbC5vcHRpb25JZCk7XG4gICAgZm9yKGxldCBvcHRpb25WYWx1ZSBvZiBlbGVtZW50Lm9wdGlvbnNWYWx1ZXMpXG4gICAgICBmb3IgKGxldCBwYXJlbnRPcHRpb25JZCBvZiBvcHRpb25WYWx1ZS5vcHRpb24ucGFyZW50T3B0aW9uSWRzKSAgICAgIFxuICAgICAgICBpZiAob3B0aW9uVmFsdWVzSWRzLmluZGV4T2YocGFyZW50T3B0aW9uSWQudG9TdHJpbmcoKSkgPT0gLTEpXG4gICAgICAgIHtcbiAgICAgICAgICBsZXQgbmV3T3B0aW9uID0gdGhpcy5jcmVhdGVPcHRpb25WYWx1ZUZvckVsZW1lbnQocGFyZW50T3B0aW9uSWQsIDAsIGVsZW1lbnQpO1xuICAgICAgICAgIC8vIGNvbnNvbGUubG9nKFwiTWlzc2luZyBvcHRpb25cIiwgbmV3T3B0aW9uLm9wdGlvbi5uYW1lU2hvcnQsIGVsZW1lbnQubmFtZSk7XG4gICAgICAgICAgb3B0aW9uVmFsdWVzSWRzLnB1c2gocGFyZW50T3B0aW9uSWQpOyBcbiAgICAgICAgfSBcbiAgfVxuXG4gIHVwZGF0ZU9wdGlvblZhbHVlQ29sb3IoZWxlbWVudCA6IEVsZW1lbnQsICRvcHRpb25WYWx1ZSA6IE9wdGlvblZhbHVlKVxuICB7XG4gICAgaWYgKCEkb3B0aW9uVmFsdWUpIHJldHVybjtcbiAgICAvLyBjb25zb2xlLmxvZyhcInVwZGF0ZU9wdGlvblZhbHVlXCIsICRvcHRpb25WYWx1ZS5vcHRpb24ubmFtZSk7XG4gICAgaWYgKCRvcHRpb25WYWx1ZS5vcHRpb24udXNlQ29sb3JGb3JNYXJrZXIpXG4gICAge1xuICAgICAgJG9wdGlvblZhbHVlLmNvbG9yT3B0aW9uSWQgPSAkb3B0aW9uVmFsdWUub3B0aW9uSWQ7XG4gICAgfSAgICBcbiAgICBlbHNlIFxuICAgIHtcbiAgICAgIGxldCBvcHRpb24gOiBPcHRpb247XG4gICAgICBsZXQgY2F0ZWdvcnkgOiBDYXRlZ29yeTtcbiAgICAgIGxldCBjb2xvcklkIDogbnVtYmVyID0gbnVsbDtcblxuICAgICAgbGV0IHNpYmxpbmdzT3B0aW9uc0ZvckNvbG9yaW5nIDogT3B0aW9uVmFsdWVbXSA9IGVsZW1lbnQuZ2V0Q3Vyck9wdGlvbnNWYWx1ZXMoKS5maWx0ZXIoIFxuICAgICAgICAob3B0aW9uVmFsdWUpID0+IFxuICAgICAgICAgIG9wdGlvblZhbHVlLmlzRmlsbGVkQnlGaWx0ZXJzIFxuICAgICAgICAgICYmIG9wdGlvblZhbHVlLm9wdGlvbi51c2VDb2xvckZvck1hcmtlclxuICAgICAgICAgICYmIG9wdGlvblZhbHVlLm9wdGlvbi5vd25lcklkICE9PSAkb3B0aW9uVmFsdWUub3B0aW9uLm93bmVySWQgXG4gICAgICAgICAgJiYgb3B0aW9uVmFsdWUuY2F0ZWdvcnlPd25lci5vd25lcklkID09ICRvcHRpb25WYWx1ZS5jYXRlZ29yeU93bmVyLm93bmVySWRcbiAgICAgICk7XG5cbiAgICAgIC8vY29uc29sZS5sb2coXCJzaWJsaW5nc09wdGlvbnNGb3JDb2xvcmluZ1wiLCBzaWJsaW5nc09wdGlvbnNGb3JDb2xvcmluZy5tYXAoIChvcCkgPT4gb3Aub3B0aW9uLm5hbWUpKTtcbiAgICAgIGlmIChzaWJsaW5nc09wdGlvbnNGb3JDb2xvcmluZy5sZW5ndGggPiAwKVxuICAgICAge1xuICAgICAgICBvcHRpb24gPSA8T3B0aW9uPiBzaWJsaW5nc09wdGlvbnNGb3JDb2xvcmluZy5zaGlmdCgpLm9wdGlvbjtcbiAgICAgICAgLy9jb25zb2xlLmxvZyhcIi0+IHNpYmxpbmcgZm91bmQgOiBcIiwgb3B0aW9uLm5hbWUpO1xuICAgICAgICBjb2xvcklkID0gb3B0aW9uLmlkO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBvcHRpb24gPSAkb3B0aW9uVmFsdWUub3B0aW9uO1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhvcHRpb24ubmFtZSwgXCJubyBzaWJsaW5ncywgbG9va2luZyBmb3IgcGFyZW50XCIpO1xuICAgICAgICB3aGlsZShjb2xvcklkID09IG51bGwgJiYgb3B0aW9uKVxuICAgICAgICB7XG4gICAgICAgICAgY2F0ZWdvcnkgPSA8Q2F0ZWdvcnk+IG9wdGlvbi5nZXRPd25lcigpO1xuICAgICAgICAgIGlmIChjYXRlZ29yeSlcbiAgICAgICAgICB7XG4gICAgICAgICAgICBvcHRpb24gPSA8T3B0aW9uPiBjYXRlZ29yeS5nZXRPd25lcigpO1xuICAgICAgICAgICAgaWYgKCFvcHRpb24pIGJyZWFrOyAgICAgXG4gICAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIiAgLT4gcGFyZW50IG9wdGlvblwiICsgb3B0aW9uLm5hbWUgKyBcIiB1c2Vjb2xvckZvck1hcmtlclwiLCBvcHRpb24udXNlQ29sb3JGb3JNYXJrZXIpO1xuICAgICAgICAgICAgY29sb3JJZCA9IG9wdGlvbi51c2VDb2xvckZvck1hcmtlciA/IG9wdGlvbi5pZCA6IG51bGw7XG4gICAgICAgICAgfSAgICAgICAgICBcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgXG4gICAgICAkb3B0aW9uVmFsdWUuY29sb3JPcHRpb25JZCA9IGNvbG9ySWQ7XG4gICAgfVxuICB9XG59IiwiaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvZXZlbnQuY2xhc3NcIjtcbmltcG9ydCB7IHNsdWdpZnksIHBhcnNlVXJpSWQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50c0NvbnZlcnRlZFxueyBcbiAgbmV3RWxlbWVudHNMZW5ndGggOiBudW1iZXI7XG4gIGVsZW1lbnRzVXBkYXRlZExlbmd0aCA6IG51bWJlcjtcbiAgbmV3RWxlbWVudHMgOiBFbGVtZW50W107XG4gIGVsZW1lbnRzQ29udmVydGVkIDogRWxlbWVudFtdXG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50c0pzb25Nb2R1bGVcbntcbiAgZWxlbWVudHNDcmVhdGVkQ291bnQgOiBudW1iZXIgPSAwO1xuICBvbk5ld3NFbGVtZW50c0NvbnZlcnRlZCA9IG5ldyBFdmVudDxFbGVtZW50W10+KCk7XG5cbiAgY29udmVydEpzb25FbGVtZW50cyhlbGVtZW50TGlzdCA6IGFueVtdLCBjaGVja0lmQWxyZWFkeUV4aXN0ID0gdHJ1ZSwgaXNGdWxsUmVwcmVzZW50YXRpb24gOiBib29sZWFuID0gdHJ1ZSkgXG4gIHtcbiAgICBpZiAoIWVsZW1lbnRMaXN0KSByZXR1cm4geyBcbiAgICAgIG5ld0VsZW1lbnRzTGVuZ3RoIDogW10sIFxuICAgICAgZWxlbWVudHNVcGRhdGVkTGVuZ3RoIDogMCwgXG4gICAgICBuZXdFbGVtZW50czogW10sIFxuICAgICAgZWxlbWVudHNDb252ZXJ0ZWQ6IFtdLCBcbiAgICB9O1xuXG4gICAgbGV0IGVsZW1lbnQgOiBFbGVtZW50LCBlbGVtZW50SnNvbjtcbiAgICBsZXQgbmV3RWxlbWVudHMgOiBFbGVtZW50W10gPSBbXTtcbiAgICBsZXQgZWxlbWVudHNDb252ZXJ0ZWQgOiBFbGVtZW50W10gPSBbXTtcbiAgICBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICBcbiAgICB0aGlzLmNoZWtzSWRzQW5kQ3JlYXRlT25lc0lmTmVlZGVkKGVsZW1lbnRMaXN0KTtcbiAgICBcbiAgICBsZXQgbmV3RWxlbWVudHNKc29uID0gZWxlbWVudExpc3QuZmlsdGVyKChvYmopID0+IEFwcC5lbGVtZW50c01vZHVsZS5ldmVyeUVsZW1lbnRzSWQuaW5kZXhPZihvYmouaWQpIDwgMCApO1xuICAgIGxldCBlbGVtZW50c1RvVXBkYXRlSnNvbiA9IFtdO1xuICAgIGlmIChpc0Z1bGxSZXByZXNlbnRhdGlvbilcbiAgICB7ICAgICAgXG4gICAgICBlbGVtZW50c1RvVXBkYXRlSnNvbiA9IGVsZW1lbnRMaXN0LmZpbHRlcigob2JqKSA9PiBBcHAuZWxlbWVudHNNb2R1bGUuZXZlcnlFbGVtZW50c0lkLmluZGV4T2Yob2JqLmlkKSA+PSAwICk7XG4gICAgICBsZXQgaiA9IGVsZW1lbnRzVG9VcGRhdGVKc29uLmxlbmd0aDtcbiAgICAgIHdoaWxlKGotLSlcbiAgICAgIHtcbiAgICAgICAgZWxlbWVudEpzb24gPSBlbGVtZW50c1RvVXBkYXRlSnNvbltqXTtcbiAgICAgICAgZWxlbWVudCA9IEFwcC5lbGVtZW50QnlJZChlbGVtZW50SnNvbi5pZCk7XG4gICAgICAgIGVsZW1lbnQudXBkYXRlV2l0aEpzb24oZWxlbWVudEpzb24pO1xuICAgICAgICBlbGVtZW50c0NvbnZlcnRlZC5wdXNoKGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGxldCBpID0gbmV3RWxlbWVudHNKc29uLmxlbmd0aDtcbiAgICB3aGlsZShpLS0pXG4gICAge1xuICAgICAgZWxlbWVudEpzb24gPSBuZXdFbGVtZW50c0pzb25baV07XG4gICAgICBlbGVtZW50ID0gbmV3IEVsZW1lbnQoZWxlbWVudEpzb24pO1xuICAgICAgZWxlbWVudC5pbml0aWFsaXplKCk7XG4gICAgICBuZXdFbGVtZW50cy5wdXNoKGVsZW1lbnQpO1xuICAgIH1cblxuICAgIGVsZW1lbnRzQ29udmVydGVkID0gZWxlbWVudHNDb252ZXJ0ZWQuY29uY2F0KG5ld0VsZW1lbnRzKTsgICAgXG5cbiAgICBsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgLy9jb25zb2xlLmxvZyhcIkFkZEpzb25FbGVtZW50cyBpbiBcIiArIChlbmQtc3RhcnQpICsgXCIgbXNcIiwgZWxlbWVudEpzb24pOyAgXG5cbiAgICB0aGlzLm9uTmV3c0VsZW1lbnRzQ29udmVydGVkLmVtaXQobmV3RWxlbWVudHMpO1xuXG4gICAgcmV0dXJuIHsgXG4gICAgICBuZXdFbGVtZW50c0xlbmd0aCA6IG5ld0VsZW1lbnRzSnNvbi5sZW5ndGgsIFxuICAgICAgZWxlbWVudHNVcGRhdGVkTGVuZ3RoIDogZWxlbWVudHNUb1VwZGF0ZUpzb24ubGVuZ3RoLCBcbiAgICAgIG5ld0VsZW1lbnRzOiBuZXdFbGVtZW50cywgXG4gICAgICBlbGVtZW50c0NvbnZlcnRlZDogZWxlbWVudHNDb252ZXJ0ZWRcbiAgICB9O1xuICB9O1xuXG4gIGxvYWRMb2NhbEVsZW1lbnRzKClcbiAge1xuICAgIGlmICghQXBwLmNvbmZpZy5kYXRhLnJldHJpZXZlRWxlbWVudHNCeUFwaSlcbiAgICB7XG4gICAgICBsZXQgZWxlbWVudHMgPSBBcHAuY29uZmlnLmRhdGEuZWxlbWVudHM7XG4gICAgICBsZXQgZWxlbWVudEpzb25BcnJheSA9IGVsZW1lbnRzLmxlbmd0aCA/IGVsZW1lbnRzIDogZWxlbWVudHMuZGF0YTtcbiAgICAgIGxldCByZXN1bHQgPSB0aGlzLmNvbnZlcnRKc29uRWxlbWVudHMoZWxlbWVudEpzb25BcnJheSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICBBcHAuYWpheE1vZHVsZS5hbGxFbGVtZW50c1JlY2VpdmVkID0gdHJ1ZTtcbiAgICAgIGlmICghQXBwLmNvbmZpZy5tYXAuZGVmYXVsdEJvdW5kc1Byb3ZpZGVkICYmICFBcHAuaGlzdG9yeVN0YXRlTWFuYWdlci5sYXN0SGlzdG9yeVN0YXRlLnZpZXdwb3J0KSB7XG4gICAgICAgIGNvbnNvbGUubG9nKFwiZml0IHRvIGVsZW1lbnRzIGJvdW5kc1wiKTtcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5maXRFbGVtZW50c0JvdW5kcyhyZXN1bHQuZWxlbWVudHNDb252ZXJ0ZWQpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEZpeGluZyBtaXNzaW5nIElkcywgb3IgY29udmVydCBVUkkgaWRzIGFzIHN0YW5kYXJkIElkc1xuICBjaGVrc0lkc0FuZENyZWF0ZU9uZXNJZk5lZWRlZChlbGVtZW50TGlzdClcbiAge1xuICAgIGVsZW1lbnRMaXN0LmZvckVhY2goIChlLCBpbmRleCkgPT4gIHtcbiAgICAgIGxldCBpZCA9IGVbMF0gfHwgZS5pZCB8fCBlW1wiQGlkXCJdIHx8IGUuY29tcGFjdEpzb25bMF07IC8vIGluIGNvbXBhY3Qgd2F5LCBpZCBpcyB0aGUgZmlyc3QgZWxlbWVudCBvZiBhbiBhcnJheVxuICAgICAgaWYgKCFpZCB8fCB0eXBlb2YgaWQgIT0gXCJzdHJpbmdcIikgaWQgPSBcImdlbmVyYXRlZFwiICsgdGhpcy5lbGVtZW50c0NyZWF0ZWRDb3VudCsrO1xuICAgICAgZWxzZSBpZCA9IHBhcnNlVXJpSWQoaWQpO1xuICAgICAgZS5pZCA9IGlkO1xuICAgIH0pO1xuICB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwTW9kZXMsIEFwcERhdGFUeXBlIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyICQ7XHRcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9ldmVudC5jbGFzc1wiO1xuaW1wb3J0IHsgRWxlbWVudCwgRWxlbWVudFN0YXR1cyB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBFbGVtZW50c1RvRGlzcGxheUNoYW5nZWRcbnsgXG5cdGVsZW1lbnRzVG9EaXNwbGF5IDogRWxlbWVudFtdO1xuXHRuZXdFbGVtZW50cyA6IEVsZW1lbnRbXTtcblx0ZWxlbWVudHNUb1JlbW92ZSA6IEVsZW1lbnRbXTtcbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRzTW9kdWxlXG57XG5cdG9uRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkID0gbmV3IEV2ZW50PEVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZD4oKTtcblxuXHRwcml2YXRlIGV2ZXJ5RWxlbWVudHNfIDogRWxlbWVudFtdW10gPSBbXTtcblx0cHJpdmF0ZSBldmVyeUVsZW1lbnRzSWRfIDogc3RyaW5nW10gPSBbXTtcblx0XG5cdC8vIGN1cnJlbnQgdmlzaWJsZSBlbGVtZW50c1xuXHRwcml2YXRlIHZpc2libGVFbGVtZW50c18gOiBFbGVtZW50W11bXSA9IFtdO1xuXHRwcml2YXRlIHNlYXJjaFJlc3VsdEVsZW1lbnRzXyA6IEVsZW1lbnRbXSA9IFtdO1x0XG5cblx0Zmlyc3RFbGVtZW50c0hhdmVCZWVuZGlzcGxheWVkIDogYm9vbGVhbiA9IGZhbHNlO1x0XG5cblx0aW5pdGlhbGl6ZSgpXG5cdHtcblx0XHR0aGlzLmV2ZXJ5RWxlbWVudHNfWydhbGwnXSA9IFtdO1xuXHRcdHRoaXMudmlzaWJsZUVsZW1lbnRzX1snYWxsJ10gPSBbXTtcblx0XHRmb3IobGV0IG9wdGlvbiBvZiBBcHAudGF4b25vbXlNb2R1bGUuZ2V0TWFpbk9wdGlvbnMoKSlcblx0XHR7XG5cdFx0XHR0aGlzLmV2ZXJ5RWxlbWVudHNfW29wdGlvbi5pZF0gPSBbXTtcblx0XHRcdHRoaXMudmlzaWJsZUVsZW1lbnRzX1tvcHRpb24uaWRdID0gW107XG5cdFx0fVx0XG5cdH1cdFxuXG5cdGFkZEVsZW1lbnRzKG5ld0VsZW1lbnRzIDogRWxlbWVudFtdKVxuXHR7XG5cdFx0Zm9yKGxldCBlbGVtZW50IG9mIG5ld0VsZW1lbnRzKVxuXHRcdHtcblx0XHRcdGZvciAobGV0IG1haW5JZCBvZiBlbGVtZW50Lm1haW5PcHRpb25Pd25lcklkcylcblx0XHRcdHtcblx0XHRcdFx0dGhpcy5ldmVyeUVsZW1lbnRzX1ttYWluSWRdLnB1c2goZWxlbWVudCk7XG5cdFx0XHR9XHRcdFx0XHRcblx0XHRcdHRoaXMuZXZlcnlFbGVtZW50c19bJ2FsbCddLnB1c2goZWxlbWVudCk7XG5cdFx0XHR0aGlzLmV2ZXJ5RWxlbWVudHNJZF8ucHVzaChlbGVtZW50LmlkKTtcblx0XHR9XHRcblxuXHRcdEFwcC5mYXZvcml0ZU1vZHVsZS5jaGVja0Nvb2tpZXMoKTtcdFxuXHRcdEFwcC5zdGFtcE1vZHVsZS5jaGVja0ZvckFkZGluZ1N0YW1wcyhuZXdFbGVtZW50cyk7XG5cdH1cdFxuXG5cdGNsZWFyQ3VycmVudHNFbGVtZW50KClcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJjbGVhckN1cnJFbGVtZW50c1wiKTtcblx0XHRsZXQgdmlzaWJsZUVsZW1lbnRzID0gdGhpcy5jdXJyVmlzaWJsZUVsZW1lbnRzKCk7XG5cdFx0aWYgKCF2aXNpYmxlRWxlbWVudHMgfHwgIXZpc2libGVFbGVtZW50cy5sZW5ndGgpIHJldHVybjtcblx0XHRsZXQgbCA9IHZpc2libGVFbGVtZW50cy5sZW5ndGg7XG5cdFx0d2hpbGUobC0tKVxuXHRcdHtcblx0XHRcdHZpc2libGVFbGVtZW50c1tsXS5pc0Rpc3BsYXllZCA9IGZhbHNlO1xuXHRcdH1cblx0XHRsZXQgbWFya2VycyA9IHZpc2libGVFbGVtZW50cy5tYXAoIChlKSA9PiBlLm1hcmtlci5nZXRMZWFmbGV0TWFya2VyKCkpO1xuXHRcdEFwcC5tYXBDb21wb25lbnQucmVtb3ZlTWFya2VycyhtYXJrZXJzKTtcblxuXHRcdHRoaXMuY2xlYXJDdXJyVmlzaWJsZUVsZW1lbnRzKCk7XG5cdH1cdFxuXG5cdC8vIGNoZWNrIGVsZW1lbnRzIGluIGJvdW5kcyBhbmQgd2hvIGFyZSBub3QgZmlsdGVyZWRcblx0dXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkoY2hlY2tJbkFsbEVsZW1lbnRzID0gdHJ1ZSwgZmlsdGVySGFzQ2hhbmdlZCA9IGZhbHNlKSBcblx0e1x0XG5cdFx0aWYgKEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCAmJiAhQXBwLm1hcENvbXBvbmVudC5pc01hcExvYWRlZCkgcmV0dXJuO1xuXG5cdFx0bGV0IGVsZW1lbnRzIDogRWxlbWVudFtdID0gW107XG5cblx0XHQvLyBHZXR0aW5nIHRoZSBlbGVtZW50IGFycmF5IHRvIHdvcmsgb25cblx0XHRpZiAoIChBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmUgfHwgQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucyApICYmIEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCkgXG5cdFx0XHRlbGVtZW50cyA9IFtBcHAuREVBTW9kdWxlLmdldEVsZW1lbnQoKV07XHRcdFxuXHRcdGVsc2UgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpXG5cdFx0e1x0XHRcdFxuXHRcdFx0aWYgKGNoZWNrSW5BbGxFbGVtZW50cyB8fCB0aGlzLnZpc2libGVFbGVtZW50c18ubGVuZ3RoID09PSAwKSBcblx0XHRcdFx0XHRlbGVtZW50cyA9IHRoaXMuY3VyckV2ZXJ5RWxlbWVudHMoKTtcblx0XHRcdGVsc2UgZWxlbWVudHMgPSB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAoQXBwLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLlNlYXJjaFJlc3VsdHMpXG5cdFx0e1xuXHRcdFx0ZWxlbWVudHMgPSB0aGlzLnNlYXJjaFJlc3VsdEVsZW1lbnRzXztcblx0XHR9XHRcdFxuXHRcdFxuXHRcdGlmICghZWxlbWVudHMpIHJldHVybjtcblxuXHRcdGxldCBpIDogbnVtYmVyLCBlbGVtZW50IDogRWxlbWVudDtcblxuXHQgXHRsZXQgbmV3RWxlbWVudHMgOiBFbGVtZW50W10gPSBbXTtcblx0IFx0bGV0IGVsZW1lbnRzVG9SZW1vdmUgOiBFbGVtZW50W10gPSBbXTtcdFx0XG5cdFx0XG5cdFx0aSA9IGVsZW1lbnRzLmxlbmd0aDtcblx0XHRsZXQgZmlsdGVyTW9kdWxlID0gQXBwLmZpbHRlck1vZHVsZTtcdFxuXHRcdGxldCBjdXJyQm91bmRzID0gQXBwLmJvdW5kc01vZHVsZS5leHRlbmRlZEJvdW5kcztcblx0XHRsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuXHRcdC8vIGNvbnNvbGUubG9nKFwidXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkuIE5icmUgZWxlbWVudCDDoCB0cmFpdGVyIDogXCIgKyBpLCBjaGVja0luQWxsRWxlbWVudHMpO1xuXG5cdFx0d2hpbGUoaS0tKVxuXHRcdHtcblx0XHRcdGVsZW1lbnQgPSBlbGVtZW50c1tpXTtcblxuXHRcdFx0aWYgKCFlbGVtZW50KSBicmVhaztcblxuXHRcdFx0bGV0IGVsZW1lbnRJbkJvdW5kcyA9IGZhbHNlO1xuXHRcdFx0aWYgKHRoaXMubm9OZWVkVG9DaGVja0JvdW5kcygpKSBlbGVtZW50SW5Cb3VuZHMgPSB0cnVlO1xuXHRcdFx0ZWxzZSBlbGVtZW50SW5Cb3VuZHMgPSBjdXJyQm91bmRzICYmIGVsZW1lbnQucG9zaXRpb24gJiYgY3VyckJvdW5kcy5jb250YWlucyhlbGVtZW50LnBvc2l0aW9uKTtcblxuXHRcdFx0aWYgKCBlbGVtZW50SW5Cb3VuZHMgJiYgZmlsdGVyTW9kdWxlLmNoZWNrSWZFbGVtZW50UGFzc0ZpbHRlcnMoZWxlbWVudCkpXG5cdFx0XHR7XG5cdFx0XHRcdGlmICghZWxlbWVudC5pc0Rpc3BsYXllZClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGVsZW1lbnQuaXNEaXNwbGF5ZWQgPSB0cnVlO1xuXHRcdFx0XHRcdHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpLnB1c2goZWxlbWVudCk7XG5cdFx0XHRcdFx0bmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoZWxlbWVudC5pc0Rpc3BsYXllZCkgXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRlbGVtZW50LmlzRGlzcGxheWVkID0gZmFsc2U7XG5cdFx0XHRcdFx0ZWxlbWVudHNUb1JlbW92ZS5wdXNoKGVsZW1lbnQpO1xuXHRcdFx0XHRcdGxldCBpbmRleCA9IHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpLmluZGV4T2YoZWxlbWVudCk7XG5cdFx0XHRcdFx0aWYgKGluZGV4ID4gLTEpIHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpLnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRsZXQgZW5kID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cdFx0bGV0IHRpbWUgPSBlbmQgLSBzdGFydDtcblxuXHRcdC8vd2luZG93LmNvbnNvbGUubG9nKFwiVXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkgZW4gXCIgKyB0aW1lICsgXCIgbXNcIik7XG5cdFx0dGhpcy5vbkVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZC5lbWl0KHtcblx0XHRcdGVsZW1lbnRzVG9EaXNwbGF5OiB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKSwgXG5cdFx0XHRuZXdFbGVtZW50cyA6IG5ld0VsZW1lbnRzLCBcblx0XHRcdGVsZW1lbnRzVG9SZW1vdmUgOiBlbGVtZW50c1RvUmVtb3ZlXG5cdFx0fSk7XG5cblx0XHR0aGlzLnVwZGF0ZUVsZW1lbnRzSWNvbnMoZmlsdGVySGFzQ2hhbmdlZCk7XHRcdFxuXG5cdFx0Ly8gc3RyYW5nZSBidWcsIGF0IGluaXRpYWxpemF0aW9uLCBzb21lIGlzb2xhdGVkIG1hcmtlcnMgYXJlIG5vdCBkaXNwbGF5ZWRcblx0XHQvLyByZWZyZXNoaW5nIHRoZSBlbGVtZW50TW9kdWxlIHNvbHZlIHRoaXMuLi5cblx0XHRpZiAoIXRoaXMuZmlyc3RFbGVtZW50c0hhdmVCZWVuZGlzcGxheWVkICYmIHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpICYmIHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpLmxlbmd0aCA+IDApXHRcdFxuXHRcdHtcblx0XHRcdHRoaXMuZmlyc3RFbGVtZW50c0hhdmVCZWVuZGlzcGxheWVkID0gdHJ1ZTtcblx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKSB9LCAxMDApO1xuXHRcdH1cdFx0XG5cdH07XG5cblx0cHJpdmF0ZSBub05lZWRUb0NoZWNrQm91bmRzKClcblx0e1xuXHRcdHJldHVybiBBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0ICYmIFxuXHRcdFx0XHRcdChBcHAuZGF0YVR5cGUgIT0gQXBwRGF0YVR5cGUuQWxsIHx8IEFwcC5hamF4TW9kdWxlLmFsbEVsZW1lbnRzUmVjZWl2ZWQpO1xuXHR9XG5cblx0dXBkYXRlRWxlbWVudHNJY29ucyhzb21ldGhpbmdDaGFuZ2VkIDogYm9vbGVhbiA9IGZhbHNlKVxuXHR7XG5cdFx0Ly9jb25zb2xlLmxvZyhcIlVwZGF0ZUN1cnJFbGVtZW50cyBzb21ldGhpbmdDaGFuZ2VkXCIsIHNvbWV0aGluZ0NoYW5nZWQpO1xuXHRcdGxldCBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG5cdFx0bGV0IHZpc2libGVFbGVtZW50cyA9IHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpO1xuXHRcdGlmICghdmlzaWJsZUVsZW1lbnRzIHx8ICF2aXNpYmxlRWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG5cdFx0XG5cdFx0bGV0IGwgPSB2aXNpYmxlRWxlbWVudHMubGVuZ3RoO1xuXHRcdGxldCBlbGVtZW50IDogRWxlbWVudDtcblx0XHR3aGlsZShsLS0pXG5cdFx0e1xuXHRcdFx0ZWxlbWVudCA9IHZpc2libGVFbGVtZW50c1tsXTtcblx0XHRcdGlmIChzb21ldGhpbmdDaGFuZ2VkKSBlbGVtZW50Lm5lZWRUb0JlVXBkYXRlZFdoZW5TaG93biA9IHRydWU7XG5cblx0XHRcdC8vIGlmIGRvbU1hcmtlciBub3QgdmlzaWJsZSB0aGF0J3MgbWVhbiB0aGF0IG1hcmtlciBpcyBpbiBhIGNsdXN0ZXJcblx0XHRcdGlmIChlbGVtZW50Lm1hcmtlci5kb21NYXJrZXIoKS5pcygnOnZpc2libGUnKSkgZWxlbWVudC51cGRhdGUoKTtcblx0XHR9XG5cdFx0bGV0IGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXHRcdGxldCB0aW1lID0gZW5kIC0gc3RhcnQ7XG5cdFx0Ly93aW5kb3cuY29uc29sZS5sb2coXCJ1cGRhdGVFbGVtZW50c0ljb25zIFwiICsgdGltZSArIFwiIG1zXCIpO1xuXHR9XG5cblx0c2V0U2VhcmNoUmVzdWx0RWxlbWVudChlbGVtZW50cyA6IEVsZW1lbnRbXSkgeyB0aGlzLnNlYXJjaFJlc3VsdEVsZW1lbnRzXyA9IGVsZW1lbnRzOyB9XG5cdGdldFNlYXJjaEVsZW1lbnRzKCkgOiBFbGVtZW50W10geyByZXR1cm4gdGhpcy5zZWFyY2hSZXN1bHRFbGVtZW50c187IH1cblxuXHRnZXQgZXZlcnlFbGVtZW50cygpICAgICAgICB7IHJldHVybiB0aGlzLmV2ZXJ5RWxlbWVudHNfOyB9XG5cdGdldCBldmVyeUVsZW1lbnRzSWQoKSAgICAgIHsgcmV0dXJuIHRoaXMuZXZlcnlFbGVtZW50c0lkXzsgfVxuXHRnZXQgdmlzaWJsZUVsZW1lbnRzKCkgICAgICB7IHJldHVybiB0aGlzLnZpc2libGVFbGVtZW50c187IH1cblx0Z2V0IHNlYXJjaFJlc3VsdEVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5zZWFyY2hSZXN1bHRFbGVtZW50c187IH1cblxuXHRjdXJyVmlzaWJsZUVsZW1lbnRzKCkgICAgICB7IHJldHVybiB0aGlzLnZpc2libGVFbGVtZW50c19bQXBwLmN1cnJNYWluSWRdOyB9XG5cdGN1cnJFdmVyeUVsZW1lbnRzKCkgICAgICAgIHsgcmV0dXJuIHRoaXMuZXZlcnlFbGVtZW50c19bQXBwLmN1cnJNYWluSWRdOyB9XG5cdHNldEN1cnJWaXNpYmxlRWxlbWVudHMoZWxlbWVudHMgOiBFbGVtZW50W10pIHsgdGhpcy52aXNpYmxlRWxlbWVudHNfW0FwcC5jdXJyTWFpbklkXSA9IGVsZW1lbnRzOyB9XG5cblx0cHJpdmF0ZSBjbGVhckN1cnJWaXNpYmxlRWxlbWVudHMoKSB7IHRoaXMudmlzaWJsZUVsZW1lbnRzX1tBcHAuY3Vyck1haW5JZF0gPSBbXTsgfVxuXG5cdGFsbEVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5ldmVyeUVsZW1lbnRzX1snYWxsJ107IH1cblxuXHRnZXRFbGVtZW50QnlJZChlbGVtZW50SWQpIDogRWxlbWVudFxuXHR7XG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCB0aGlzLmFsbEVsZW1lbnRzKCkubGVuZ3RoOyBpKyspIHtcblx0XHRcdGlmICh0aGlzLmFsbEVsZW1lbnRzKClbaV0uaWQgPT0gZWxlbWVudElkKSByZXR1cm4gdGhpcy5hbGxFbGVtZW50cygpW2ldO1xuXHRcdH1cblx0XHRyZXR1cm4gbnVsbDtcblx0fTtcbn0iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuLi8uLi91dGlscy9jb29raWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBGYXZvcml0ZU1vZHVsZVxue1xuICBmYXZvcml0ZUlkc18gPSBbXTtcblxuICBjb25zdHJ1Y3RvcigpXG4gIHtcbiAgICBsZXQgY29va2llcyA9IENvb2tpZXMucmVhZENvb2tpZSgnRmF2b3JpdGVJZHMnKTtcbiAgICB0aGlzLmZhdm9yaXRlSWRzXyA9IGNvb2tpZXMgIT09IG51bGwgPyBKU09OLnBhcnNlKGNvb2tpZXMpIDogW107ICBcbiAgfVxuXG4gIGNoZWNrQ29va2llcygpXG4gIHtcbiAgICBpZiAoQXBwLmNvbmZpZy5pc0ZlYXR1cmVBY3RpdmF0ZWQoJ2Zhdm9yaXRlJykpXG4gICAge1xuICAgICAgZm9yKGxldCBqID0gMDsgaiA8IHRoaXMuZmF2b3JpdGVJZHNfLmxlbmd0aDsgaisrKVxuICAgICAge1xuICAgICAgICB0aGlzLmFkZEZhdm9yaXRlKHRoaXMuZmF2b3JpdGVJZHNfW2pdLCBmYWxzZSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIGFkZEZhdm9yaXRlKGZhdm9yaXRlSWQgOiBzdHJpbmcsIG1vZGlmeUNvb2tpZXMgPSB0cnVlKVxuICB7XG4gICAgbGV0IGVsZW1lbnQgPSBBcHAuZWxlbWVudEJ5SWQoZmF2b3JpdGVJZCk7XG4gICAgaWYgKGVsZW1lbnQgPT09IG51bGwpIHJldHVybjtcbiAgICBcbiAgICBlbGVtZW50LmlzRmF2b3JpdGUgPSB0cnVlO1xuICAgIFxuICAgIGlmIChtb2RpZnlDb29raWVzKVxuICAgIHtcbiAgICAgIHRoaXMuZmF2b3JpdGVJZHNfLnB1c2goZmF2b3JpdGVJZCk7XG4gICAgICBDb29raWVzLmNyZWF0ZUNvb2tpZSgnRmF2b3JpdGVJZHMnLEpTT04uc3RyaW5naWZ5KHRoaXMuZmF2b3JpdGVJZHNfKSk7ICAgIFxuICAgIH1cbiAgfTtcblxuICByZW1vdmVGYXZvcml0ZShmYXZvcml0ZUlkIDogc3RyaW5nLCBtb2RpZnlDb29raWVzID0gdHJ1ZSlcbiAge1xuICAgIGxldCBlbGVtZW50ID0gQXBwLmVsZW1lbnRCeUlkKGZhdm9yaXRlSWQpO1xuICAgIGlmIChlbGVtZW50ICE9PSBudWxsKSBlbGVtZW50LmlzRmF2b3JpdGUgPSBmYWxzZTtcbiAgICBcbiAgICBpZiAobW9kaWZ5Q29va2llcylcbiAgICB7XG4gICAgICBsZXQgaW5kZXggPSB0aGlzLmZhdm9yaXRlSWRzXy5pbmRleE9mKGZhdm9yaXRlSWQpO1xuICAgICAgaWYgKGluZGV4ID4gLTEpIHRoaXMuZmF2b3JpdGVJZHNfLnNwbGljZShpbmRleCwgMSk7XG5cbiAgICAgIENvb2tpZXMuY3JlYXRlQ29va2llKCdGYXZvcml0ZUlkcycsSlNPTi5zdHJpbmdpZnkodGhpcy5mYXZvcml0ZUlkc18pKTtcbiAgICB9XG4gIH07XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgU3RhbXAsIEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBTdGFtcE1vZHVsZVxue1xuICBhbGxvd2VkU3RhbXBzIDogU3RhbXBbXSA9IFtdO1xuXG4gIGRlZmF1bHRJY29ucyA9IFsgJ2dvZ28taWNvbi1zdGFtcC0xJywgJ2dvZ28taWNvbi1zdGFtcC0yJ107XG4gIGRlZmF1bHRJY29uID0gJ2dvZ28taWNvbi1zdGFtcC0xJztcblxuICBjb25zdHJ1Y3RvcigkY29uZmlnKVxuICB7XG4gICAgaWYgKCRjb25maWcuZmVhdHVyZXMuc3RhbXAub3B0aW9ucy5hbGxvd2VkU3RhbXBzKVxuICAgICAgZm9yIChsZXQgc3RhbXAgb2YgJGNvbmZpZy5mZWF0dXJlcy5zdGFtcC5vcHRpb25zLmFsbG93ZWRTdGFtcHMpXG4gICAgICB7XG4gICAgICAgIHN0YW1wLmljb24gPSBzdGFtcC5pY29uIHx8IHRoaXMuZ2V0RGVmYXVsdEljb24oKTtcbiAgICAgICAgdGhpcy5hbGxvd2VkU3RhbXBzLnB1c2gobmV3IFN0YW1wKHN0YW1wKSk7XG4gICAgICB9XG4gIH1cblxuICBjaGVja0ZvckFkZGluZ1N0YW1wcyhlbGVtZW50c0FycmF5IDogRWxlbWVudFtdKSAgXG4gIHtcbiAgICBsZXQgZWxlbWVudHNJZHMgPSBlbGVtZW50c0FycmF5Lm1hcCggKGVsKSA9PiBlbC5pZCk7XG4gICAgXG4gICAgZm9yKGxldCBzdGFtcCBvZiB0aGlzLmFsbG93ZWRTdGFtcHMpXG4gICAge1xuICAgICAgbGV0IGVsZW1lbnRzVG9TdGFtcCA9IGVsZW1lbnRzQXJyYXkuZmlsdGVyKCAoZWwpID0+IHN0YW1wLmVsZW1lbnRJZHMuaW5kZXhPZihlbC5pZCkgPiAtMSk7XG4gICAgICBmb3IobGV0IGVsZW1lbnQgb2YgZWxlbWVudHNUb1N0YW1wKSBlbGVtZW50LnN0YW1wcy5wdXNoKHN0YW1wLmlkKVxuICAgIH1cbiAgfVxuXG4gIGdldEFsbG93ZWRTdGFtcEZvckVsZW1lbnQoZWxlbWVudCA6IEVsZW1lbnQpIDogU3RhbXBbXVxuICB7XG4gICAgcmV0dXJuIHRoaXMuYWxsb3dlZFN0YW1wcy5maWx0ZXIoIChzdGFtcCkgPT4gZWxlbWVudC5zdGFtcHMuaW5kZXhPZihzdGFtcC5pZCkgPiAtMSk7XG4gIH1cblxuICBnZXREZWZhdWx0SWNvbigpIDogc3RyaW5nXG4gIHtcbiAgICByZXR1cm4gdGhpcy5kZWZhdWx0SWNvbnMuc2hpZnQoKSB8fCB0aGlzLmRlZmF1bHRJY29uO1xuICB9XG59IiwiZGVjbGFyZSBsZXQgR2VvY29kZXJKUztcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyIEwsICQ7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBzbHVnaWZ5IH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBWaWV3UG9ydCwgRXZlbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbi8qKiByZXN1bHRzIHR5cGUgcmV0dXJuZWQgYnkgZ2VvY29kZXJKUyAqL1xuZXhwb3J0IGludGVyZmFjZSBHZW9jb2RlUmVzdWx0XG57XG5cdGdldENvb3JkaW5hdGVzKCkgOiBMLkxhdExuZ1R1cGxlO1xuXHRnZXRGb3JtYXR0ZWRBZGRyZXNzKCkgOiBzdHJpbmc7XHRcblx0Z2V0Qm91bmRzKCkgOiBSYXdCb3VuZHM7XG59XG5cbi8vIHNvdXRoLCB3ZXN0LCBub3J0aCwgZWFzdFxuZXhwb3J0IHR5cGUgUmF3Qm91bmRzID0gW251bWJlciwgbnVtYmVyLCBudW1iZXIsIG51bWJlcl07XG5cbi8qKlxuKiBJbnRlcmZhY2UgYmV0d2VlbiBHZW9jb2RlckpTIGFuZCB0aGUgQXBwXG4qIEFsbG93IHRvIGNoYW5nZSBnZW9jb2RlIHRlY2hub2xvZ3kgd2l0aG91dCBjaGFuZ2luZyBjb2RlIGluIHRoZSBBcHBcbiovXG5leHBvcnQgY2xhc3MgR2VvY29kZXJNb2R1bGVcbntcblx0Z2VvY29kZXIgOiBhbnkgPSBudWxsO1xuXHRsYXN0QWRkcmVzc1JlcXVlc3QgOiBzdHJpbmcgPSAnJztcblx0bGFzdFJlc3VsdHMgOiBHZW9jb2RlUmVzdWx0W10gPSBudWxsO1xuXHRsYXN0UmVzdWx0Qm91bmRzIDogTC5MYXRMbmdCb3VuZHMgPSBudWxsO1xuXG5cdHByaXZhdGUgbG9jYXRpb24gOiBMLkxhdExuZyA9IG51bGw7XG5cblx0b25HZW9jb2RlUmVzdWx0ID0gbmV3IEV2ZW50PGFueT4oKTtcblx0b25HZW9sb2NhbGl6YXRpb25SZXN1bHQgPSBuZXcgRXZlbnQ8Vmlld1BvcnQ+KCk7XG5cblx0Z2V0TG9jYXRpb24oKSA6IEwuTGF0TG5nXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5sb2NhdGlvbjtcdFx0XG5cdH1cblxuXHRnZXRCb3VuZHMoKSA6IEwuTGF0TG5nQm91bmRzXG5cdHtcblx0XHRpZiAoIXRoaXMubGFzdFJlc3VsdEJvdW5kcykgcmV0dXJuIG51bGw7XG5cdFx0cmV0dXJuIHRoaXMubGFzdFJlc3VsdEJvdW5kcztcblx0fVx0XG5cblx0Z2V0TG9jYXRpb25TbHVnKCkgOiBzdHJpbmcgeyByZXR1cm4gc2x1Z2lmeSh0aGlzLmxhc3RBZGRyZXNzUmVxdWVzdCk7IH1cblx0Z2V0TG9jYXRpb25BZGRyZXNzKCkgOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5sYXN0QWRkcmVzc1JlcXVlc3Q7IH1cblx0c2V0TG9jYXRpb25BZGRyZXNzKCRhZGRyZXNzIDogc3RyaW5nKSB7IHRoaXMubGFzdEFkZHJlc3NSZXF1ZXN0ID0gJGFkZHJlc3M7IH1cblxuXHRwcml2YXRlIGxhdExuZ0JvdW5kc0Zyb21SYXdCb3VuZHMocmF3Ym91bmRzIDogUmF3Qm91bmRzKSA6IEwuTGF0TG5nQm91bmRzXG5cdHtcblx0XHRsZXQgY29ybmVyMSA9IEwubGF0TG5nKHJhd2JvdW5kc1swXSwgcmF3Ym91bmRzWzFdKTtcblx0XHRsZXQgY29ybmVyMiA9IEwubGF0TG5nKHJhd2JvdW5kc1syXSwgcmF3Ym91bmRzWzNdKTtcblx0XHRyZXR1cm4gTC5sYXRMbmdCb3VuZHMoY29ybmVyMSwgY29ybmVyMik7XG5cdH1cblxuXHRjb25zdHJ1Y3RvcigpXG5cdHtcblx0XHR0aGlzLmdlb2NvZGVyID0gR2VvY29kZXJKUy5jcmVhdGVHZW9jb2Rlcih7ICdwcm92aWRlcic6ICdvcGVuc3RyZWV0bWFwJywgJ3VzZVNTTCc6dHJ1ZX0pO1xuXHRcdC8vdGhpcy5nZW9jb2RlciA9IEdlb2NvZGVySlMuY3JlYXRlR2VvY29kZXIoeydwcm92aWRlcic6ICdnb29nbGUnLCAndXNlU1NMJzp0cnVlIH0pO1xuXHR9XG5cblx0Z2VvY29kZUFkZHJlc3MoIGFkZHJlc3MsIGNhbGxiYWNrQ29tcGxldGU/LCBjYWxsYmFja0ZhaWw/ICkgXG5cdHtcblx0XHQvLyBjb25zb2xlLmxvZyhcImdlb2NvZGUgYWRkcmVzcyA6IFwiLCBhZGRyZXNzKTtcblx0XHR0aGlzLmxhc3RBZGRyZXNzUmVxdWVzdCA9IGFkZHJlc3M7XG5cblx0XHQvLyBpZiBubyBhZGRyZXNzLCB3ZSBzaG93IGZyYW5jZVxuXHRcdGlmIChhZGRyZXNzID09ICcnKVxuXHRcdHtcblx0XHRcdGNvbnNvbGUubG9nKFwiZGVmYXVsdCBsb2NhdGlvblwiKTtcblx0XHRcdHRoaXMubGFzdFJlc3VsdHMgPSBbXTtcblx0XHRcdHRoaXMubGFzdFJlc3VsdEJvdW5kcyA9IEFwcC5ib3VuZHNNb2R1bGUuZGVmYXVsdEJvdW5kcztcblxuXHRcdFx0dGhpcy5vbkdlb2NvZGVSZXN1bHQuZW1pdCgpO1xuXG5cdFx0XHQvLyBsZWF2ZSB0aW1lIGZvciBtYXAgdG8gbG9hZFxuXHRcdFx0aWYgKGNhbGxiYWNrQ29tcGxldGUpIHNldFRpbWVvdXQoICgpID0+IHsgY2FsbGJhY2tDb21wbGV0ZSh0aGlzLmxhc3RSZXN1bHRzKTsgfSwgMjAwKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdC8vIGZha2UgZ2VvY29kZXIgd2hlbiBubyBpbnRlcm5ldCBjb25uZXhpb25cblx0XHRcdGxldCBmYWtlID0gZmFsc2U7XG5cblx0XHRcdGlmICghZmFrZSlcblx0XHRcdHtcblx0XHRcdFx0dGhpcy5nZW9jb2Rlci5nZW9jb2RlKCBhZGRyZXNzLCAocmVzdWx0cyA6IEdlb2NvZGVSZXN1bHRbXSkgPT5cblx0XHRcdFx0e1x0XHRcdFxuXHRcdFx0XHRcdGlmIChyZXN1bHRzICE9PSBudWxsICYmIHJlc3VsdHMubGVuZ3RoID4gMCkgXG5cdFx0XHRcdFx0e1x0XHRcdFx0XG5cdFx0XHRcdFx0XHR0aGlzLmxhc3RSZXN1bHRzID0gcmVzdWx0cztcblx0XHRcdFx0XHRcdHRoaXMubGFzdFJlc3VsdEJvdW5kcyA9IHRoaXMubGF0TG5nQm91bmRzRnJvbVJhd0JvdW5kcyh0aGlzLmxhc3RSZXN1bHRzWzBdLmdldEJvdW5kcygpKTtcblxuXHRcdFx0XHRcdFx0aWYgKHRoaXMubGFzdFJlc3VsdHMgJiYgdGhpcy5sYXN0UmVzdWx0c1swXSkgdGhpcy5sb2NhdGlvbiA9IEwubGF0TG5nKHRoaXMubGFzdFJlc3VsdHNbMF0uZ2V0Q29vcmRpbmF0ZXMoKSk7XG5cdFx0XHRcdFx0XHRlbHNlIGxvY2F0aW9uID0gbnVsbDtcblxuXHRcdFx0XHRcdFx0dGhpcy5vbkdlb2NvZGVSZXN1bHQuZW1pdCgpO1xuXG5cdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tDb21wbGV0ZSkgY2FsbGJhY2tDb21wbGV0ZShyZXN1bHRzKTtcdFxuXHRcdFx0XHRcdH0gXHRcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrRmFpbCkgY2FsbGJhY2tGYWlsKCk7XHRcdFx0XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0bGV0IHJlc3VsdCA9IHtcblx0XHRcdFx0XHRib3VuZHM6IFsuMDY5MTg1LC0wLjY0MTQxNSw0NC4xODQ3MzUxLC0wLjQ2OTk4MzVdLFxuXHRcdFx0XHRcdGNpdHk6ICdMYWJyaXQnLFxuXHRcdFx0XHRcdGZvcm1hdHRlZEFkZHJlc3M6IFwiTGFicml0IDQwNDIwXCIsXG5cdFx0XHRcdFx0bGF0aXR1ZGU6NDQuMTA0OTU2Nyxcblx0XHRcdFx0XHRsb25naXR1ZGU6LTAuNTQ0NTI5Nixcblx0XHRcdFx0XHRwb3N0YWxfY29kZTpcIjQwNDIwXCIsXG5cdFx0XHRcdFx0cmVnaW9uOlwiTm91dmVsbGUtQXF1aXRhaW5lXCIsXG5cdFx0XHRcdFx0Z2V0Qm91bmRzKCkgeyByZXR1cm4gdGhpcy5ib3VuZHM7IH0sXG5cdFx0XHRcdFx0Z2V0Q29vcmRpbmF0ZXMoKSB7IHJldHVybiBbdGhpcy5sYXRpdHVkZSwgdGhpcy5sb25naXR1ZGVdOyB9LFxuXHRcdFx0XHRcdGdldEZvcm1hdHRlZEFkZHJlc3MoKSB7IHJldHVybiB0aGlzLmZvcm1hdHRlZEFkZHJlc3M7IH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdGxldCByZXN1bHRzID0gW107XG5cdFx0XHRcdHJlc3VsdHMucHVzaChyZXN1bHQpO1xuXG5cdFx0XHRcdHRoaXMubGFzdFJlc3VsdHMgPSByZXN1bHRzO1xuXHRcdFx0XHR0aGlzLmxhc3RSZXN1bHRCb3VuZHMgPSB0aGlzLmxhdExuZ0JvdW5kc0Zyb21SYXdCb3VuZHModGhpcy5sYXN0UmVzdWx0c1swXS5nZXRCb3VuZHMoKSk7XG5cblx0XHRcdFx0Y2FsbGJhY2tDb21wbGV0ZShyZXN1bHRzKTtcblx0XHRcdH1cdFxuXHRcdH1cdFx0XHRcblx0fVxuXG5cdGdlb2xvY2F0ZVVzZXIoY2FsbGJhY2tDb21wbGV0ZT8pXG5cdHtcblx0XHRpZiAobmF2aWdhdG9yLmdlb2xvY2F0aW9uKVxuXHRcdFx0bmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbigocG9zaXRpb24pID0+IHtcblx0XHRcdFx0Ly8gYXNzb2NpYXRlIHpvb20gdG8gYWNjdXJhY3lcblx0XHRcdFx0bGV0IHpvb20gPSAxNyAtIE1hdGgubG9nKHBvc2l0aW9uLmNvb3Jkcy5hY2N1cmFjeSAvIDMwMDApICogTWF0aC5MT0cyRTtcblx0XHRcdFx0em9vbSA9IE1hdGgubWluKHpvb20sIDE2KTtcblx0XHRcdFx0em9vbSA9IE1hdGgubWF4KHpvb20sIDgpO1xuXHRcdFx0XHRsZXQgdmlld1BvcnQgPSBuZXcgVmlld1BvcnQocG9zaXRpb24uY29vcmRzLmxhdGl0dWRlLCBwb3NpdGlvbi5jb29yZHMubG9uZ2l0dWRlLCB6b29tKTtcblx0XHRcdFx0dGhpcy5oYW5kbGVHZW9sb2NhbGlzYXRpb25SZXNwb25zZSh2aWV3UG9ydCwgY2FsbGJhY2tDb21wbGV0ZSk7XG5cdFx0XHR9LCAoKSA9PiB7fSwge2VuYWJsZUhpZ2hBY2N1cmFjeTogdHJ1ZX0pO1xuXHRcdGVsc2Vcblx0XHRcdCQuZ2V0SlNPTihcImh0dHA6Ly9mcmVlZ2VvaXAubmV0L2pzb24vXCIsIChkYXRhKSA9PiB7XG5cdFx0ICAgIGxldCB2aWV3UG9ydCA9IG5ldyBWaWV3UG9ydChkYXRhLmxhdGl0dWRlLCBkYXRhLmxvbmdpdHVkZSwgMTQpO1xuXHRcdCAgICB0aGlzLmhhbmRsZUdlb2xvY2FsaXNhdGlvblJlc3BvbnNlKHZpZXdQb3J0LCBjYWxsYmFja0NvbXBsZXRlKTtcblx0XHRcdH0pO1xuXHR9XG5cblx0cHJpdmF0ZSBoYW5kbGVHZW9sb2NhbGlzYXRpb25SZXNwb25zZSh2aWV3UG9ydCA6IFZpZXdQb3J0LCBjYWxsYmFja0NvbXBsZXRlKVxuXHR7XG5cdFx0dGhpcy5sb2NhdGlvbiA9IHZpZXdQb3J0LnRvTG9jYXRpb24oKTtcbiAgICB0aGlzLm9uR2VvbG9jYWxpemF0aW9uUmVzdWx0LmVtaXQodmlld1BvcnQpO1xuICAgIGNhbGxiYWNrQ29tcGxldGUodmlld1BvcnQpO1xuXHR9XG59IiwiaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcERhdGFUeXBlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcblxuZGVjbGFyZSB2YXIgcm91dGllOiBhbnksICQ7XG5cbmV4cG9ydCBjbGFzcyBMb2dpbk1vZHVsZVxue1xuXHRwcml2YXRlIHJvbGVzXyA6IHN0cmluZ1tdO1xuXHRwcml2YXRlIHVzZXJFbWFpbCA6IHN0cmluZyA9ICcnO1xuXG5cdGNvbnN0cnVjdG9yKCRyb2xlcyA6IHN0cmluZ1tdIHwgc3RyaW5nLCAkdXNlckVtYWlsIDogc3RyaW5nID0gJycpIFxuXHR7IFxuXHRcdHRoaXMuc2V0Um9sZXMoJHJvbGVzKTsgXG5cdFx0dGhpcy5zZXRVc2VyRW1haWwoJHVzZXJFbWFpbCk7XG5cdH1cblxuXHRzZXRSb2xlcygkcm9sZXMgOiBzdHJpbmdbXSB8IHN0cmluZylcblx0eyBcblx0XHRpZiAodHlwZW9mICRyb2xlcyA9PSAnc3RyaW5nJykgdGhpcy5yb2xlc18gPSBbJHJvbGVzXTtcdFxuXHRcdGVsc2UgdGhpcy5yb2xlc18gPSAkcm9sZXM7XG5cdH1cblxuXHRzZXRVc2VyRW1haWwodXNlckVtYWlsKSB7IHRoaXMudXNlckVtYWlsID0gdXNlckVtYWlsOyB9XG5cblx0Z2V0VXNlckVtYWlsKCkgeyByZXR1cm4gdGhpcy51c2VyRW1haWw7IH1cblxuXHRnZXRSb2xlcygpIHsgcmV0dXJuIHRoaXMucm9sZXNfOyB9XG5cbiAgbG9naW5BY3Rpb24oKSB7IEFwcC5jb25maWcuc2VjdXJpdHkubG9naW5BY3Rpb24oKTsgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgQXBwTW9kdWxlIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZXhwb3J0IGNsYXNzIERpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGVcbntcblx0ZWxlbWVudFNob3duQWxvbmVfID0gbnVsbDtcblxuXHRjb25zdHJ1Y3RvcigpIHt9XG5cblx0Z2V0RWxlbWVudCgpIDogRWxlbWVudCB7IHJldHVybiB0aGlzLmVsZW1lbnRTaG93bkFsb25lXzsgfVxuXG5cdGJlZ2luKGVsZW1lbnRJZCA6IHN0cmluZywgcGFuVG9FbGVtZW50TG9jYXRpb24gOiBib29sZWFuID0gdHJ1ZSkgXG5cdHtcdFxuXHRcdC8vIGNvbnNvbGUubG9nKFwiRGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZSBiZWdpblwiLCBwYW5Ub0VsZW1lbnRMb2NhdGlvbik7XHRcdFxuXG5cdFx0aWYgKHRoaXMuZWxlbWVudFNob3duQWxvbmVfICE9PSBudWxsKSBcblx0XHR7XG5cdFx0XHR0aGlzLmVsZW1lbnRTaG93bkFsb25lXy5oaWRlKCk7XG5cdFx0XHR0aGlzLmVsZW1lbnRTaG93bkFsb25lXy5pc1Nob3duQWxvbmUgPSBmYWxzZTtcblx0XHR9XG5cblx0XHRsZXQgZWxlbWVudCA9IEFwcC5lbGVtZW50QnlJZChlbGVtZW50SWQpO1x0XG5cdFx0dGhpcy5lbGVtZW50U2hvd25BbG9uZV8gPSBlbGVtZW50O1x0XHRcdFxuXG5cdFx0QXBwLmVsZW1lbnRzTW9kdWxlLmNsZWFyQ3VycmVudHNFbGVtZW50KCk7XG5cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudChlbGVtZW50LmlkKTtcdFxuXG5cdFx0XHQvLyB3ZSBzZXQgYSB0aW1lb3V0IHRvIGxldCB0aGUgaW5mb2JhciBzaG93IHVwXG5cdFx0XHQvLyBpZiB3ZSBub3QgZG8gc28sIHRoZSBtYXAgd2lsbCBub3QgYmUgY2VudGVyZWQgaW4gdGhlIGVsZW1lbnQucG9zaXRpb25cdFxuXHRcdFx0aWYgKHBhblRvRWxlbWVudExvY2F0aW9uKVxuXHRcdFx0e1x0XHRcblx0XHRcdFx0QXBwLm1hcENvbXBvbmVudC5yZXNpemUoKTtcblx0XHRcdFx0QXBwLm1hcENvbXBvbmVudC5wYW5Ub0xvY2F0aW9uKGVsZW1lbnQucG9zaXRpb24sIDEyLCBmYWxzZSk7XG5cdFx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgQXBwLm1hcENvbXBvbmVudC5yZXNpemUoKTtBcHAubWFwQ29tcG9uZW50LnBhblRvTG9jYXRpb24oZWxlbWVudC5wb3NpdGlvbiwgMTIsIGZhbHNlKTsgfSwgNTAwKTtcblx0XHRcdH1cdFx0XHRcblx0XHR9LCAzMDApO1x0XHRcblx0fTtcblxuXHRlbmQoKSBcblx0e1xuXHRcdGlmICh0aGlzLmVsZW1lbnRTaG93bkFsb25lXyA9PT0gbnVsbCkgcmV0dXJuO1xuXG5cdFx0QXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuXHRcdFxuXHRcdHRoaXMuZWxlbWVudFNob3duQWxvbmVfLmlzU2hvd25BbG9uZSA9IGZhbHNlO1x0XG5cblx0XHR0aGlzLmVsZW1lbnRTaG93bkFsb25lXyA9IG51bGw7XHRcblx0fTtcbn1cblxuIiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBwYXJzZUFycmF5TnVtYmVySW50b1N0cmluZywgcGFyc2VTdHJpbmdJbnRvQXJyYXlOdW1iZXIgfSBmcm9tIFwiLi4vLi4vdXRpbHMvcGFyc2VyLXN0cmluZy1udW1iZXJcIjtcbmltcG9ydCB7IHNsdWdpZnkgfSBmcm9tICcuLi8uLi91dGlscy9zdHJpbmctaGVscGVycyc7XG5cbmRlY2xhcmUgdmFyICQgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBGaWx0ZXJSb3V0aW5nTW9kdWxlXG57XG5cdGxvYWRGaWx0ZXJzRnJvbVN0cmluZyhzdHJpbmcgOiBzdHJpbmcpXG5cdHtcblx0XHRsZXQgc3BsaXRlZCA9IHN0cmluZy5zcGxpdCgnQCcpO1xuXHRcdGxldCBtYWluT3B0aW9uU2x1ZyA9IHNwbGl0ZWRbMF07XG5cblx0XHRsZXQgbWFpbk9wdGlvbklkO1xuXHRcdGlmIChtYWluT3B0aW9uU2x1ZyA9PSAnYWxsJykgbWFpbk9wdGlvbklkID0gJ2FsbCc7XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGxldCBtYWluT3B0aW9uID0gQXBwLnRheG9ub215TW9kdWxlLmdldE1haW5PcHRpb25CeVNsdWcobWFpbk9wdGlvblNsdWcpO1xuXHRcdFx0bWFpbk9wdGlvbklkID0gbWFpbk9wdGlvbiA/IG1haW5PcHRpb24uaWQgOiAnYWxsJztcblx0XHR9IFxuXHRcdEFwcC5maWx0ZXJzQ29tcG9uZW50LnNldE1haW5PcHRpb24obWFpbk9wdGlvbklkKTtcdFx0XG5cblx0XHRsZXQgZmlsdGVyc1N0cmluZyA6IHN0cmluZztcblx0XHRsZXQgYWRkaW5nTW9kZSA6IGJvb2xlYW47XG5cblx0XHRpZiAoc3BsaXRlZC5sZW5ndGggPT0gMilcblx0XHR7XG5cdFx0XHRmaWx0ZXJzU3RyaW5nID0gc3BsaXRlZFsxXTtcblxuXHRcdFx0aWYgKGZpbHRlcnNTdHJpbmdbMF0gPT0gJyEnKSBhZGRpbmdNb2RlID0gZmFsc2U7XG5cdFx0XHRlbHNlIGFkZGluZ01vZGUgPSB0cnVlO1xuXG5cdFx0XHRmaWx0ZXJzU3RyaW5nID0gZmlsdGVyc1N0cmluZy5zdWJzdHJpbmcoMSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHNwbGl0ZWQubGVuZ3RoID4gMilcblx0XHR7XG5cdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3Igc3BsaXRpbmcgaW4gbG9hZEZpbHRlckZyb21TdHJpbmdcIik7XG5cdFx0fVxuXG5cdFx0bGV0IGZpbHRlcnMgPSBwYXJzZVN0cmluZ0ludG9BcnJheU51bWJlcihmaWx0ZXJzU3RyaW5nKTtcblx0XHQvL2NvbnNvbGUubG9nKCdmaWx0ZXJzJywgZmlsdGVycyk7XHRcdFxuXHRcdGlmICghQXBwLmxvYWRGdWxsVGF4b25vbXkgJiYgbWFpbk9wdGlvblNsdWcgIT0gJ2FsbCcpICQoJy5tYWluLWNhdGVnb3JpZXMnKS5oaWRlKCk7XHRcblxuXHRcdGlmIChmaWx0ZXJzLmxlbmd0aCA+IDApXG5cdFx0e1xuXHRcdFx0Ly8gY29uc29sZS5sb2coJ2FkZGluZ01vZGUnLCBhZGRpbmdNb2RlKTtcblx0XHRcdFxuXHRcdFx0aWYgKG1haW5PcHRpb25TbHVnID09ICdhbGwnKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoQXBwLmxvYWRGdWxsVGF4b25vbXkpIEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS50b2dnbGUoIWFkZGluZ01vZGUsIGZhbHNlKTtcblx0XHRcdFx0ZWxzZVxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Zm9yKGxldCBvcHRpb24gb2YgQXBwLnRheG9ub215TW9kdWxlLnRheG9ub215Lm9wdGlvbnMpIFxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdG9wdGlvbi50b2dnbGVWaXNpYmlsaXR5KCFhZGRpbmdNb2RlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0Zm9yIChsZXQgY2F0IG9mIEFwcC50YXhvbm9teU1vZHVsZS5nZXRNYWluT3B0aW9uQnlTbHVnKG1haW5PcHRpb25TbHVnKS5zdWJjYXRlZ29yaWVzKVxuXHRcdFx0XHRcdGZvcihsZXQgb3B0aW9uIG9mIGNhdC5vcHRpb25zKSBcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRpZiAoQXBwLmxvYWRGdWxsVGF4b25vbXkpIG9wdGlvbi50b2dnbGUoIWFkZGluZ01vZGUsIGZhbHNlKTsgXG5cdFx0XHRcdFx0XHRlbHNlIG9wdGlvbi50b2dnbGVWaXNpYmlsaXR5KCFhZGRpbmdNb2RlLCB0cnVlKTtcblx0XHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvcihsZXQgZmlsdGVySWQgb2YgZmlsdGVycylcblx0XHRcdHtcblx0XHRcdFx0bGV0IG9wdGlvbiA9IEFwcC50YXhvbm9teU1vZHVsZS5nZXRPcHRpb25CeUludElkKGZpbHRlcklkKTtcblx0XHRcdFx0aWYgKCFvcHRpb24pIGNvbnNvbGUubG9nKFwiRXJyb3IgbG9hZGluZ3MgZmlsdGVycyA6IFwiICsgZmlsdGVySWQpO1xuXHRcdFx0XHRlbHNlIFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0aWYgKEFwcC5sb2FkRnVsbFRheG9ub215KSAgb3B0aW9uLnRvZ2dsZShhZGRpbmdNb2RlLCBmYWxzZSk7XG5cdFx0XHRcdFx0aWYgKCFBcHAubG9hZEZ1bGxUYXhvbm9teSkgb3B0aW9uLnRvZ2dsZVZpc2liaWxpdHkoYWRkaW5nTW9kZSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0aWYgKEFwcC5sb2FkRnVsbFRheG9ub215KVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbilcblx0XHRcdFx0XHRpZiAobWFpbk9wdGlvblNsdWcgPT0gJ2FsbCcpIEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS51cGRhdGVTdGF0ZSgpO1xuXHRcdFx0XHRcdGVsc2UgQXBwLnRheG9ub215TW9kdWxlLmdldE1haW5PcHRpb25CeVNsdWcobWFpbk9wdGlvblNsdWcpLnJlY3Vyc2l2ZWx5VXBkYXRlU3RhdGVzKCk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkucmVjdXJzaXZlbHlVcGRhdGVTdGF0ZXMoKTtcblx0XHRcdH1cblxuXHRcdFx0QXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuXHRcdFx0Ly9BcHAuaGlzdG9yeU1vZHVsZS51cGRhdGVDdXJyU3RhdGUoKTtcblx0XHR9XG5cdH1cblxuXHRnZXRGaWx0ZXJzVG9TdHJpbmcoKSA6IHN0cmluZ1xuXHR7XG5cdFx0bGV0IG1haW5PcHRpb25JZCA9IEFwcC5jdXJyTWFpbklkO1xuXG5cdFx0bGV0IG1haW5PcHRpb25OYW1lO1xuXHRcdGxldCBjaGVja0FycmF5VG9QYXJzZSwgdW5jaGVja0FycmF5VG9QYXJzZTtcblx0XHRcblx0XHRpZiAobWFpbk9wdGlvbklkID09ICdhbGwnICYmIEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pXG5cdFx0e1x0XHRcdFxuXHRcdFx0bWFpbk9wdGlvbk5hbWUgPSBcImFsbFwiO1xuXHRcdFx0Y2hlY2tBcnJheVRvUGFyc2UgPSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkuY2hlY2tlZE9wdGlvbnMubWFwKCAob3B0aW9uKSA9PiBvcHRpb24uaW50SWQpO1xuXHRcdFx0dW5jaGVja0FycmF5VG9QYXJzZSA9IEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS5kaXNhYmxlZE9wdGlvbnMubWFwKCAob3B0aW9uKSA9PiBvcHRpb24uaW50SWQpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0bGV0IGFsbE9wdGlvbnM7XG5cblx0XHRcdGlmIChBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKVxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgbWFpbk9wdGlvbiA9IEFwcC50YXhvbm9teU1vZHVsZS5nZXRNYWluT3B0aW9uQnlJZChtYWluT3B0aW9uSWQpO1xuXHRcdFx0XHRtYWluT3B0aW9uTmFtZSA9IHNsdWdpZnkobWFpbk9wdGlvbi5uYW1lU2hvcnQpO1xuXHRcdFx0XHRhbGxPcHRpb25zID0gbWFpbk9wdGlvbi5hbGxDaGlsZHJlbk9wdGlvbnM7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdG1haW5PcHRpb25OYW1lID0gXCJhbGxcIjtcblx0XHRcdFx0YWxsT3B0aW9ucyA9IEFwcC50YXhvbm9teU1vZHVsZS5vcHRpb25zO1xuXHRcdFx0fVx0XHRcdFx0XG5cblx0XHRcdGNoZWNrQXJyYXlUb1BhcnNlID0gYWxsT3B0aW9ucy5maWx0ZXIoIChvcHRpb24pID0+IG9wdGlvbi5pc0NoZWNrZWQgKS5tYXAoIChvcHRpb24pID0+IG9wdGlvbi5pbnRJZCk7XG5cdFx0XHR1bmNoZWNrQXJyYXlUb1BhcnNlID0gYWxsT3B0aW9ucy5maWx0ZXIoIChvcHRpb24pID0+IG9wdGlvbi5pc0Rpc2FibGVkICkubWFwKCAob3B0aW9uKSA9PiBvcHRpb24uaW50SWQpO1x0XHRcdFxuXHRcdH1cblxuXHRcdGxldCBjaGVja2VkSWRzUGFyc2VkID0gcGFyc2VBcnJheU51bWJlckludG9TdHJpbmcoY2hlY2tBcnJheVRvUGFyc2UpO1xuXHRcdGxldCB1bmNoZWNrZWRJZHNQYXJzZWQgPSBwYXJzZUFycmF5TnVtYmVySW50b1N0cmluZyh1bmNoZWNrQXJyYXlUb1BhcnNlKTtcblxuXHRcdGxldCBhZGRpbmdNb2RlID0gKGNoZWNrZWRJZHNQYXJzZWQubGVuZ3RoIDwgdW5jaGVja2VkSWRzUGFyc2VkLmxlbmd0aCk7XG5cblx0XHRsZXQgYWRkaW5nU3ltYm9sID0gYWRkaW5nTW9kZSA/ICcrJyA6ICchJztcblxuXHRcdGxldCBmaWx0ZXJzU3RyaW5nID0gYWRkaW5nTW9kZSA/IGNoZWNrZWRJZHNQYXJzZWQgOiB1bmNoZWNrZWRJZHNQYXJzZWQ7XG5cblx0XHRpZiAoIWFkZGluZ01vZGUgJiYgZmlsdGVyc1N0cmluZyA9PSBcIlwiICkgcmV0dXJuIG1haW5PcHRpb25OYW1lO1xuXG5cdFx0cmV0dXJuIG1haW5PcHRpb25OYW1lICsgJ0AnICsgYWRkaW5nU3ltYm9sICsgZmlsdGVyc1N0cmluZztcblx0fVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmltcG9ydCB7IE9wdGlvbiwgRWxlbWVudCwgRWxlbWVudE1vZGVyYXRpb25TdGF0ZX0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciAkIDogYW55O1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyTW9kdWxlXG57XG5cdHNob3dPbmx5RmF2b3JpdGVfIDogYm9vbGVhbiA9IGZhbHNlO1xuXHRzaG93UGVuZGluZ18gOiBib29sZWFuID0gdHJ1ZTtcblx0c2hvd09ubHlQZW5kaW5nXyA6IGJvb2xlYW4gPSBmYWxzZTtcblx0c2hvd09ubHlNb2RlcmF0aW9uXyA6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHtcdH1cblxuXHRzaG93T25seUZhdm9yaXRlKGJvb2wgOiBib29sZWFuKSB7IHRoaXMuc2hvd09ubHlGYXZvcml0ZV8gPSBib29sOyB9XG5cblx0c2hvd1BlbmRpbmcoYm9vbCA6IGJvb2xlYW4pIHsgdGhpcy5zaG93UGVuZGluZ18gPSBib29sOyB9XG5cblx0c2hvd09ubHlQZW5kaW5nKGJvb2wgOiBib29sZWFuKSB7IHRoaXMuc2hvd09ubHlQZW5kaW5nXyA9IGJvb2w7IH1cblxuXHRzaG93T25seU1vZGVyYXRpb24oYm9vbCA6IGJvb2xlYW4pIHsgdGhpcy5zaG93T25seU1vZGVyYXRpb25fID0gYm9vbDsgfVxuXG5cdGNoZWNrSWZFbGVtZW50UGFzc0ZpbHRlcnMoZWxlbWVudCA6IEVsZW1lbnQpIDogYm9vbGVhblxuXHR7XG5cdFx0aWYgKGVsZW1lbnQub3B0aW9uc1ZhbHVlcy5sZW5ndGggPT0gMCkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0aWYgKHRoaXMuc2hvd09ubHlGYXZvcml0ZV8pIHJldHVybiBlbGVtZW50LmlzRmF2b3JpdGU7XG5cblx0XHRpZiAodGhpcy5zaG93T25seU1vZGVyYXRpb25fICYmICghZWxlbWVudC5uZWVkc01vZGVyYXRpb24oKSB8fCBlbGVtZW50Lm1vZGVyYXRpb25TdGF0ZSA9PSBFbGVtZW50TW9kZXJhdGlvblN0YXRlLlBvc3NpYmxlRHVwbGljYXRlKSkgcmV0dXJuIGZhbHNlO1xuXG5cdFx0aWYgKEFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCdwZW5kaW5nJykpXG5cdFx0e1xuXHRcdFx0aWYgKHRoaXMuc2hvd09ubHlQZW5kaW5nXykgcmV0dXJuIGVsZW1lbnQuaXNQZW5kaW5nKCk7XG5cblx0XHRcdGlmKCF0aGlzLnNob3dQZW5kaW5nXyAmJiBlbGVtZW50LmlzUGVuZGluZygpKSByZXR1cm4gZmFsc2U7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZihlbGVtZW50LmlzUGVuZGluZygpKSByZXR1cm4gZmFsc2U7XG5cdFx0fVx0XHRcblxuXHRcdGlmICghQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbilcblx0XHR7XG5cdFx0XHRsZXQgY2hlY2tlZE1haW5PcHRpb25zID0gQXBwLnRheG9ub215TW9kdWxlLnRheG9ub215Lm5vbkRpc2FibGVkT3B0aW9ucztcblx0XHRcdGlmIChjaGVja2VkTWFpbk9wdGlvbnMubGVuZ3RoID09IDEpXG5cdFx0XHRcdHJldHVybiB0aGlzLnJlY3Vyc2l2ZWx5Q2hlY2tlZEluT3B0aW9uKGNoZWNrZWRNYWluT3B0aW9uc1swXSwgZWxlbWVudCk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHJldHVybiBjaGVja2VkTWFpbk9wdGlvbnMuc29tZSggKG1haW5PcHRpb24pID0+IGVsZW1lbnQuaGF2ZU9wdGlvbihtYWluT3B0aW9uKSB8fCB0aGlzLnJlY3Vyc2l2ZWx5Q2hlY2tlZEluT3B0aW9uKG1haW5PcHRpb24sIGVsZW1lbnQpKTtcblx0XHR9XG5cdFx0ZWxzZSBpZiAoQXBwLmN1cnJNYWluSWQgPT0gJ2FsbCcpXG5cdFx0e1xuXHRcdFx0bGV0IGVsZW1lbnRPcHRpb25zID0gZWxlbWVudC5nZXRPcHRpb25WYWx1ZUJ5Q2F0ZWdvcnlJZCggQXBwLnRheG9ub215TW9kdWxlLnRheG9ub215LmlkKTtcblx0XHRcdGxldCBjaGVja2VkT3B0aW9ucyA9IEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS5jaGVja2VkT3B0aW9ucztcblxuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJcXG5lbGVtZW50c09wdGlvbnNcIiwgZWxlbWVudE9wdGlvbnMubWFwKCAodmFsdWUpID0+IHZhbHVlLm9wdGlvbi5uYW1lKSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhcImNoZWNrZWRPcHRpb25zXCIsIGNoZWNrZWRPcHRpb25zLm1hcCggKHZhbHVlKSA9PiB2YWx1ZS5uYW1lKSk7XG5cblx0XHRcdGxldCByZXN1bHQgPSBlbGVtZW50T3B0aW9ucy5zb21lKG9wdGlvblZhbHVlID0+IGNoZWNrZWRPcHRpb25zLmluZGV4T2Yob3B0aW9uVmFsdWUub3B0aW9uKSA+IC0xKTtcblx0XHRcdHJldHVybiByZXN1bHQgO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0bGV0IG1haW5PcHRpb24gPSBBcHAudGF4b25vbXlNb2R1bGUuZ2V0Q3Vyck1haW5PcHRpb24oKTtcdFx0XHRcblx0XHRcdGxldCBpc1Bhc3NpbmdGaWx0ZXJzID0gdGhpcy5yZWN1cnNpdmVseUNoZWNrZWRJbk9wdGlvbihtYWluT3B0aW9uLCBlbGVtZW50KTtcdFx0XHRcblx0XHRcdHJldHVybiBpc1Bhc3NpbmdGaWx0ZXJzO1xuXHRcdH1cdFx0XG5cdH1cblxuXHRwcml2YXRlIHJlY3Vyc2l2ZWx5Q2hlY2tlZEluT3B0aW9uKG9wdGlvbiA6IE9wdGlvbiwgZWxlbWVudCA6IEVsZW1lbnQpIDogYm9vbGVhblxuXHR7XG5cdFx0bGV0IGxvZyA9IGZhbHNlO1xuXG5cdFx0aWYgKGxvZykgY29uc29sZS5sb2coIFwiQ2hlY2sgZm9yIG9wdGlvbiBcIiwgb3B0aW9uLm5hbWUpO1xuXG5cdFx0bGV0IHJlc3VsdDtcblx0XHRpZiAob3B0aW9uLnN1YmNhdGVnb3JpZXMubGVuZ3RoID09IDAgfHwgKG9wdGlvbi5pc0Rpc2FibGVkICYmICFvcHRpb24uaXNNYWluT3B0aW9uKSApXG5cdFx0e1xuXHRcdFx0aWYgKGxvZykgY29uc29sZS5sb2coIFwiTm8gc3ViY2F0ZWdvcmllcyBcIik7XG5cdFx0XHRyZXN1bHQgPSBvcHRpb24uaXNDaGVja2VkICYmIGVsZW1lbnQuaGF2ZU9wdGlvbihvcHRpb24pO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0cmVzdWx0ID0gb3B0aW9uLnN1YmNhdGVnb3JpZXMuZXZlcnkoIChjYXRlZ29yeSkgPT5cblx0XHRcdHtcblx0XHRcdFx0aWYgKGxvZykgY29uc29sZS5sb2coXCItLVwiICsgXCJDYXRlZ29yeVwiLCBjYXRlZ29yeS5uYW1lKTtcblxuXHRcdFx0XHRpZiAoIWNhdGVnb3J5LnVzZUZvckZpbHRlcmluZykgcmV0dXJuIHRydWU7XG5cdFx0XHRcdGxldCBjaGVja2VkT3B0aW9ucyA9IGNhdGVnb3J5LmNoZWNrZWRPcHRpb25zO1xuXHRcdFx0XHRsZXQgZWxlbWVudE9wdGlvbnMgPSBlbGVtZW50LmdldE9wdGlvblZhbHVlQnlDYXRlZ29yeUlkKGNhdGVnb3J5LmlkKTtcblx0XHRcdFx0aWYgKEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pIGVsZW1lbnRPcHRpb25zID0gZWxlbWVudE9wdGlvbnMuZmlsdGVyKChvcHRWYWx1ZSkgPT4gb3B0VmFsdWUub3B0aW9uSWQgIT0gQXBwLmN1cnJNYWluSWQpO1xuXG5cdFx0XHRcdC8vIGlmIHRoaXMgZWxlbWVudCBkb24ndCBoYXZlIGFueSBvcHRpb24gaW4gdGhpcyBjYXRlZ29yeSwgZG9uJ3QgbmVlZCB0byBjaGVja1xuXHRcdFx0XHRpZiAoZWxlbWVudE9wdGlvbnMubGVuZ3RoID09IDAgJiYgbG9nKSBjb25zb2xlLmxvZyhcIi0tXCIgKyBcIkVsZW1lbnQgZG9uJ3QgaGF2ZSBvcHRpb25zIGluIHRoaXMgY2F0ZWdvcnkuIENhdGdlb3lyIG1hbmRhdG9yeSA/IFwiLCBjYXRlZ29yeS5pc01hbmRhdG9yeSk7XG5cdFx0XHRcdGlmIChlbGVtZW50T3B0aW9ucy5sZW5ndGggPT0gMCkgcmV0dXJuICFjYXRlZ29yeS5pc01hbmRhdG9yeTtcblxuXHRcdFx0XHRsZXQgaXNTb21lT3B0aW9uSW5DYXRlZ29yeUNoZWNrZWRPcHRpb25zID0gZWxlbWVudE9wdGlvbnMuc29tZShvcHRpb25WYWx1ZSA9PiBjaGVja2VkT3B0aW9ucy5pbmRleE9mKG9wdGlvblZhbHVlLm9wdGlvbikgPiAtMSk7IFxuXG5cdFx0XHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKFwiLS1cIiArIFwiaXNTb21lT3B0aW9uSW5DYXRlZ29yeUNoZWNrZWRPcHRpb25zXCIsIGlzU29tZU9wdGlvbkluQ2F0ZWdvcnlDaGVja2VkT3B0aW9ucyk7XG5cdFx0XHRcdGlmIChpc1NvbWVPcHRpb25JbkNhdGVnb3J5Q2hlY2tlZE9wdGlvbnMpXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1x0XHRcdFx0XG5cdFx0XHRcdFx0aWYgKGxvZykgY29uc29sZS5sb2coXCItLVwiICsgXCJTbyB3ZSBjaGVja2VkIGluIHN1Ym9wdGlvbnNcIiwgY2F0ZWdvcnkubmFtZSk7XG5cdFx0XHRcdFx0cmV0dXJuIGVsZW1lbnRPcHRpb25zLnNvbWUoIChvcHRpb25WYWx1ZSkgPT4gdGhpcy5yZWN1cnNpdmVseUNoZWNrZWRJbk9wdGlvbihvcHRpb25WYWx1ZS5vcHRpb24sIGVsZW1lbnQpKTtcblx0XHRcdFx0fVxuXHRcdFx0fSk7XG5cdFx0fVxuXHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKFwiUmV0dXJuIFwiLCByZXN1bHQpO1xuXHRcdHJldHVybiByZXN1bHQ7XG5cdH1cbn0iLCJpbXBvcnQgeyBwYXJzZVVyaUlkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5cbmV4cG9ydCBjbGFzcyBUYXhvbm9teVNrb3NNb2R1bGVcbntcbiAgY29uY2VwdHMgPSBbXTtcblxuICBjb252ZXJ0U2tvc0ludG9Hb0dvVGF4b25vbXkoJHNrb3NKc29uKVxuICB7XG4gICAgdGhpcy5jb25jZXB0cyA9ICRza29zSnNvblsnQGdyYXBoJ107XG4gICAgbGV0IHJvb3RDb25jZXB0cyA9IHRoaXMuY29uY2VwdHMuZmlsdGVyKCAoY29uY2VwdCkgPT4gIWNvbmNlcHQuYnJvYWRlcik7XG4gICAgbGV0IGNhdGVnb3JpZXMgPSBbXTtcblxuICAgIGZvcihsZXQgcm9vdENvbmNlcHQgb2Ygcm9vdENvbmNlcHRzKVxuICAgIHtcbiAgICAgIGNhdGVnb3JpZXMucHVzaCh0aGlzLnJvb3RTa29zVG9Hb0dvQ2F0ZWdvcnkocm9vdENvbmNlcHQpKTtcbiAgICB9ICBcblxuICAgIGxldCBnb2dvVGF4b25vbXkgPSB7XG4gICAgICBcIm9wdGlvbnNcIjpbICAgIFxuICAgICAgICB7XG4gICAgICAgICAgXCJuYW1lXCI6XCJSYWNpbmVcIixcbiAgICAgICAgICBcImRpc3BsYXlJbkluZm9CYXJcIjogZmFsc2UsXG4gICAgICAgICAgXCJkaXNwbGF5SW5NZW51XCI6IGZhbHNlLFxuICAgICAgICAgIFwic2hvd0V4cGFuZGVkXCI6IHRydWUsXG4gICAgICAgICAgXCJzdWJjYXRlZ29yaWVzXCI6IGNhdGVnb3JpZXMsXG4gICAgICAgIH1cbiAgICAgIF1cbiAgICB9OyAgICAgXG5cbiAgICBjb25zb2xlLmxvZyhcIlRheG9ub215IFRyZWVcIiwgZ29nb1RheG9ub215KTtcbiAgICByZXR1cm4gZ29nb1RheG9ub215O1xuICB9XG5cbiAgcHJpdmF0ZSByb290U2tvc1RvR29Hb0NhdGVnb3J5KCRza29zSnNvbilcbiAge1xuICAgICRza29zSnNvbi5pZCA9ICRza29zSnNvbltcIkBpZFwiXTtcbiAgICAkc2tvc0pzb24ubmFtZSA9ICRza29zSnNvbltcInByZWZMYWJlbFwiXTtcbiAgICAkc2tvc0pzb24uZGlzcGxheUluTWVudSA9IGZhbHNlO1xuICAgICRza29zSnNvbi5kaXNwbGF5SW5JbmZvQmFyID0gZmFsc2U7XG4gICAgJHNrb3NKc29uLnNob3dFeHBhbmRlZCA9IHRydWU7XG4gICAgJHNrb3NKc29uLnN1Ym9wdGlvbnMgPSB0aGlzLnJlY3Vyc2l2ZWx5Q3JlYXRlU3ViT3B0aW9uT2YoJHNrb3NKc29uKTtcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiAkc2tvc0pzb25bXCJwcmVmTGFiZWxcIl0sXG4gICAgICBzaG93RXhwYW5kZWQ6IHRydWUsXG4gICAgICBpc1Jvb3RDYXRlZ29yeTogdHJ1ZSxcbiAgICAgIHVuZXhwYW5kYWJsZTogdHJ1ZSxcbiAgICAgIG9wdGlvbnMgOiBbJHNrb3NKc29uXVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0U3ViQ29uY2VwdE9mKGNvbmNlcHRJZClcbiAge1xuICAgIHJldHVybiB0aGlzLmNvbmNlcHRzLmZpbHRlciggKGNvbmNlcHQpID0+IGNvbmNlcHQuYnJvYWRlciA9PSBjb25jZXB0SWQpO1xuICB9XG5cbiAgcHJpdmF0ZSByZWN1cnNpdmVseUNyZWF0ZVN1Yk9wdGlvbk9mKGN1cnJlbnRDb25jZXB0KVxuICB7XG4gICAgbGV0IHN1YkNvbmNlcHRzVG9BZGQgPSB0aGlzLmdldFN1YkNvbmNlcHRPZihjdXJyZW50Q29uY2VwdFsnQGlkJ10pO1xuICAgIGxldCBvcHRpb25zID0gW107XG4gICAgZm9yKGxldCBjb25jZXB0IG9mIHN1YkNvbmNlcHRzVG9BZGQpIFxuICAgIHtcbiAgICAgIGxldCBnb2dvTm9kZSA9IHRoaXMuc2tvc1RvR29Hb09wdGlvbihjb25jZXB0KTtcbiAgICAgIGxldCBzdWJvcHRpb25zID0gdGhpcy5yZWN1cnNpdmVseUNyZWF0ZVN1Yk9wdGlvbk9mKGNvbmNlcHQpO1xuICAgICAgaWYgKHN1Ym9wdGlvbnMubGVuZ3RoID4gMCkgZ29nb05vZGUuc3Vib3B0aW9ucyA9IHN1Ym9wdGlvbnM7XG4gICAgICBvcHRpb25zLnB1c2goZ29nb05vZGUpO1xuICAgIH1cbiAgICByZXR1cm4gb3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgc2tvc1RvR29Hb09wdGlvbigkc2tvc0pzb24pIFxuICB7XG4gICAgJHNrb3NKc29uLmlkID0gcGFyc2VVcmlJZCgkc2tvc0pzb25bXCJAaWRcIl0pO1xuICAgICRza29zSnNvbi5uYW1lID0gJHNrb3NKc29uW1wicHJlZkxhYmVsXCJdOyAgICBcbiAgICByZXR1cm4gJHNrb3NKc29uO1xuICB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgT3B0aW9uLCBDYXRlZ29yeSB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmV4cG9ydCB7IE9wdGlvbiwgQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBzbHVnaWZ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnMnO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJCA6IGFueTtcblxuXG5leHBvcnQgY2xhc3MgVGF4b25vbXlNb2R1bGVcbntcblx0Y2F0ZWdvcmllcyA6IENhdGVnb3J5W10gPSBbXTtcblx0b3B0aW9ucyA6IE9wdGlvbltdID0gW107XG5cblx0Ly8gdGhlIGZ1bGwgaGllcmFjaGljIHRheG9ub215XG5cdHRheG9ub215IDogQ2F0ZWdvcnk7XG5cdFxuXHRyb290Q2F0ZWdvcmllcyA6IENhdGVnb3J5W107XG5cblx0Y2F0ZWdvcmllc0NyZWF0ZWRDb3VudCA6IG51bWJlciA9IDE7XG5cdG9wdGlvbnNDcmVhdGVkQ291bnQgOiBudW1iZXIgPSAxO1xuXG5cdGNvbnN0cnVjdG9yKCkgXG5cdHtcblx0XHR0aGlzLm9wdGlvbnMgPSBbXTtcblx0XHR0aGlzLmNhdGVnb3JpZXMgPSBbXTtcblx0fVxuXG5cdGNyZWF0ZVRheG9ub215RnJvbUpzb24odGF4b25vbXlKc29uKVxuXHR7XG5cdFx0bGV0IGlzU2tvc1RheG9ub215ID0gdGF4b25vbXlKc29uWydAZ3JhcGgnXTtcblx0XHRpZiAoaXNTa29zVGF4b25vbXkpIHRheG9ub215SnNvbiA9IEFwcC50YXhvbm9teVNrb3NNb2R1bGUuY29udmVydFNrb3NJbnRvR29Hb1RheG9ub215KHRheG9ub215SnNvbik7XG5cdFx0XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGF4b25vbXlKc29uKSAmJiB0YXhvbm9teUpzb24ubGVuZ3RoID09IDEpIHRheG9ub215SnNvbiA9IHRheG9ub215SnNvblswXTtcblx0XHRcblx0XHQvLyBJZiBtdWx0aXBsZSByb290IGNhdGVnb3JpZXMsIHdlIGVuY2Fwc3VsYXRlIHRoZW0gaW50byBhIHNpbmdsZSBmYWtlIGNhdGVnb3J5ICYgcm9vdCBvcHRpb25cblx0XHRpZiAoQXJyYXkuaXNBcnJheSh0YXhvbm9teUpzb24pICYmIHRheG9ub215SnNvbi5sZW5ndGggPiAxKSB7XG5cdFx0XHRmb3IgKGxldCBqc29uIG9mIHRheG9ub215SnNvbikganNvbi5pc1Jvb3RDYXRlZ29yeSA9IHRydWU7XG5cdFx0XHR0YXhvbm9teUpzb24gPSB7XG5cdCAgICAgIFwib3B0aW9uc1wiOlsgICAgXG5cdCAgICAgICAge1xuXHQgICAgICAgICAgXCJuYW1lXCI6XCJSb290RmFrZU9wdGlvblwiLFxuXHQgICAgICAgICAgXCJkaXNwbGF5SW5JbmZvQmFyXCI6IGZhbHNlLFxuXHQgICAgICAgICAgXCJkaXNwbGF5SW5NZW51XCI6IGZhbHNlLFxuXHQgICAgICAgICAgXCJzaG93RXhwYW5kZWRcIjogdHJ1ZSxcblx0ICAgICAgICAgIFwic3ViY2F0ZWdvcmllc1wiOiB0YXhvbm9teUpzb24sXG5cdCAgICAgICAgfVxuXHQgICAgICBdXG5cdCAgICB9O1x0ICAgIFxuXHRcdH1cblx0XHRlbHNlIGlmICghaXNTa29zVGF4b25vbXkpIHRheG9ub215SnNvbi5pc1Jvb3RDYXRlZ29yeSA9IHRydWU7XG5cblx0XHR0aGlzLnRheG9ub215ID0gdGhpcy5yZWN1cnNpdmVseUNyZWF0ZUNhdGVnb3J5QW5kT3B0aW9ucyh0YXhvbm9teUpzb24pO1xuXHRcdHRoaXMucm9vdENhdGVnb3JpZXMgPSB0aGlzLmZpbmRSb290Q2F0ZWdvcmllcygpO1xuXHRcdGZvcihsZXQgb3B0aW9uIG9mIHRoaXMubWFpbkNhdGVnb3J5LmNoaWxkcmVuKSBvcHRpb24uaXNNYWluT3B0aW9uID0gdHJ1ZTtcblx0XHRcblx0XHRpZiAodGhpcy5yb290Q2F0ZWdvcmllcy5sZW5ndGggPiAxKVxuXHRcdFx0Zm9yKGxldCByb290Q2F0ZWdvcnkgb2YgdGhpcy5yb290Q2F0ZWdvcmllcykgdGhpcy5yZWN1cnNpdmVseUNhbGN1bGF0ZVBhcmVudHNPcHRpb25JZHMocm9vdENhdGVnb3J5LCB0aGlzLnRheG9ub215Lm9wdGlvbnNbMF0pO1xuXHRcdGVsc2Vcblx0XHRcdHRoaXMucmVjdXJzaXZlbHlDYWxjdWxhdGVQYXJlbnRzT3B0aW9uSWRzKHRoaXMubWFpbkNhdGVnb3J5KTtcblx0fVx0XG5cblx0cHJpdmF0ZSBmaW5kUm9vdENhdGVnb3JpZXMoKSA6IENhdGVnb3J5W11cblx0e1xuXHRcdGlmICh0aGlzLnRheG9ub215LmRpc3BsYXlJbk1lbnUpIHJldHVybiBbdGhpcy50YXhvbm9teV07XG5cdFx0cmV0dXJuIHRoaXMudGF4b25vbXkub3B0aW9uc1swXS5zdWJjYXRlZ29yaWVzO1xuXHR9XG5cblx0cHJpdmF0ZSByZWN1cnNpdmVseUNyZWF0ZUNhdGVnb3J5QW5kT3B0aW9ucyhjYXRlZ29yeUpzb24gOiBhbnkpIDogQ2F0ZWdvcnlcblx0e1xuXHRcdHJldHVybiB0aGlzLnJlY3Vyc2l2ZWx5Q3JlYXRlQ2F0ZWdvcnkoY2F0ZWdvcnlKc29uKTtcblx0fVxuXG5cdHByaXZhdGUgcmVjdXJzaXZlbHlDcmVhdGVDYXRlZ29yeShjYXRlZ29yeUpzb24gOiBhbnkpIDogQ2F0ZWdvcnlcblx0e1xuXHRcdGlmICghY2F0ZWdvcnlKc29uLmlkKSBjYXRlZ29yeUpzb24uaWQgPSB0aGlzLmNhdGVnb3JpZXNDcmVhdGVkQ291bnQrKztcblx0XHRcblx0XHRsZXQgY2F0ZWdvcnkgPSBuZXcgQ2F0ZWdvcnkoY2F0ZWdvcnlKc29uKTtcblxuXHRcdGlmIChjYXRlZ29yeUpzb24ub3B0aW9ucylcblx0XHRcdGZvcihsZXQgb3B0aW9uSnNvbiBvZiBjYXRlZ29yeUpzb24ub3B0aW9ucykgdGhpcy5yZWN1cnNpdmVseUNyZWF0ZU9wdGlvbihvcHRpb25Kc29uLCBjYXRlZ29yeSlcblx0XHRlbHNlIGlmIChjYXRlZ29yeUpzb24uc3ViY2F0ZWdvcmllcylcblx0XHRcdHRoaXMucmVjdXJzaXZlbHlDcmVhdGVPcHRpb24oe3N1YmNhdGVnb3JpZXM6IGNhdGVnb3J5SnNvbi5zdWJjYXRlZ29yaWVzLCBzaG93RXhwYW5kZWQ6IHRydWUsIGRpc3BsYXlJbk1lbnU6IGZhbHNlLCBkaXNwbGF5SW5JbmZvQmFyOiBmYWxzZX0sIGNhdGVnb3J5KVxuXG5cdFx0dGhpcy5jYXRlZ29yaWVzLnB1c2goY2F0ZWdvcnkpO1xuXG5cdFx0cmV0dXJuIGNhdGVnb3J5O1xuXHR9XG5cblx0cHJpdmF0ZSByZWN1cnNpdmVseUNyZWF0ZU9wdGlvbihvcHRpb25Kc29uIDogYW55LCBwYXJlbnRDYXRnZW9yeSA6IENhdGVnb3J5KVxuXHR7XG5cdFx0b3B0aW9uSnNvbi5pbnRJZCA9IHRoaXMub3B0aW9uc0NyZWF0ZWRDb3VudCsrO1xuXHRcdGxldCBvcHRpb24gPSBuZXcgT3B0aW9uKG9wdGlvbkpzb24pO1xuXHRcdG9wdGlvbi5vd25lcklkID0gcGFyZW50Q2F0Z2VvcnkuaWQ7XG5cblx0XHRpZiAob3B0aW9uSnNvbi5zdWJjYXRlZ29yaWVzKVxuXHRcdFx0Zm9yKGxldCBzdWJjYXRlZ29yeUpzb24gb2Ygb3B0aW9uSnNvbi5zdWJjYXRlZ29yaWVzKVxuXHRcdFx0e1x0XHRcdFx0XG5cdFx0XHRcdGxldCBzdWJjYXRlZ29yeSA9IHRoaXMucmVjdXJzaXZlbHlDcmVhdGVDYXRlZ29yeUFuZE9wdGlvbnMoc3ViY2F0ZWdvcnlKc29uKTtcblx0XHRcdFx0c3ViY2F0ZWdvcnkub3duZXJJZCA9IG9wdGlvbi5pZDtcblx0XHRcdFx0b3B0aW9uLmFkZENhdGVnb3J5KHN1YmNhdGVnb3J5KTtcblx0XHRcdH1cblx0XHRlbHNlIGlmIChvcHRpb25Kc29uLnN1Ym9wdGlvbnMpXG5cdFx0e1xuXHRcdFx0bGV0IHN1YmNhdGVnb3J5ID0gdGhpcy5yZWN1cnNpdmVseUNyZWF0ZUNhdGVnb3J5QW5kT3B0aW9ucyh7b3B0aW9uczogb3B0aW9uSnNvbi5zdWJvcHRpb25zLCBzaG93RXhwYW5kZWQ6IG9wdGlvbkpzb24uc2hvd0V4cGFuZGVkfSk7XG5cdFx0XHRzdWJjYXRlZ29yeS5vd25lcklkID0gb3B0aW9uLmlkO1xuXHRcdFx0b3B0aW9uLmFkZENhdGVnb3J5KHN1YmNhdGVnb3J5KTtcblx0XHR9XG5cblx0XHRwYXJlbnRDYXRnZW9yeS5hZGRPcHRpb24ob3B0aW9uKTtcdFxuXHRcdHRoaXMub3B0aW9ucy5wdXNoKG9wdGlvbik7XHRcblx0fVxuXG5cdC8vIFdlIHdhbnQgZXZlcnkgb3B0aW9uIHRvIGtub3cgYWxsIHRob3NlIHBhcmVudHMgT3B0aW9uIGlkc1xuXHQvLyB0aGlzIG1ldGhvZCBjYWxjdWxhdGUgdGhvc2UgZm9yIGFsbCBvcHRpb25zXG5cdHByaXZhdGUgcmVjdXJzaXZlbHlDYWxjdWxhdGVQYXJlbnRzT3B0aW9uSWRzKGNhdGVnb3J5OiBDYXRlZ29yeSwgcGFyZW50T3B0aW9uIDogT3B0aW9uID0gbnVsbClcblx0e1xuXHRcdGZvcihsZXQgb3B0aW9uIG9mIGNhdGVnb3J5LmNoaWxkcmVuKVxuXHRcdHtcblx0XHRcdGlmIChvcHRpb24uaXNNYWluT3B0aW9uIHx8IHBhcmVudE9wdGlvbiA9PT0gbnVsbCkgb3B0aW9uLm1haW5Pd25lcklkID0gXCJhbGxcIjtcblx0XHRcdGVsc2UgaWYgKHBhcmVudE9wdGlvbi5pc01haW5PcHRpb24pIG9wdGlvbi5tYWluT3duZXJJZCA9IHBhcmVudE9wdGlvbi5pZDtcblx0XHRcdGVsc2Ugb3B0aW9uLm1haW5Pd25lcklkID0gcGFyZW50T3B0aW9uLm1haW5Pd25lcklkO1xuXG5cdFx0XHRpZiAocGFyZW50T3B0aW9uKSAoPE9wdGlvbj5vcHRpb24pLnBhcmVudE9wdGlvbklkcyA9IHBhcmVudE9wdGlvbi5wYXJlbnRPcHRpb25JZHMuY29uY2F0KFtwYXJlbnRPcHRpb24uaWRdKTtcblxuXHRcdFx0Zm9yKGxldCBzdWJjYXRlZ29yeSBvZiBvcHRpb24uY2hpbGRyZW4pXG5cdFx0XHR7XHRcdFx0XHRcblx0XHRcdFx0dGhpcy5yZWN1cnNpdmVseUNhbGN1bGF0ZVBhcmVudHNPcHRpb25JZHMoPENhdGVnb3J5PnN1YmNhdGVnb3J5LCA8T3B0aW9uPm9wdGlvbik7XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVxuXHR9XG5cblx0Z2V0TWFpbk9wdGlvbnMoKSA6IE9wdGlvbltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5tYWluQ2F0ZWdvcnkub3B0aW9ucztcblx0fVxuXG5cdGdldE1haW5PcHRpb25zSWRzV2l0aEFsbCgpIDogYW55W11cblx0e1xuXHRcdGxldCBvcHRpb25JZHMgOiBhbnlbXSA9IHRoaXMuZ2V0TWFpbk9wdGlvbnNJZHMoKTtcblx0XHRvcHRpb25JZHMucHVzaChcImFsbFwiKTtcblx0XHRyZXR1cm4gb3B0aW9uSWRzO1xuXHR9XG5cblx0Z2V0TWFpbk9wdGlvbnNJZHMoKSA6IG51bWJlcltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNYWluT3B0aW9ucygpLm1hcCggKG9wdGlvbikgPT4gb3B0aW9uLmlkKTtcblx0fVxuXG5cdGdldEN1cnJNYWluT3B0aW9uKCkgOiBPcHRpb25cblx0e1xuXHRcdHJldHVybiBBcHAuY3Vyck1haW5JZCA9PSAnYWxsJyA/IG51bGwgOiB0aGlzLmdldE1haW5PcHRpb25CeUlkKEFwcC5jdXJyTWFpbklkKTtcblx0fVxuXG5cdGdldE1haW5PcHRpb25CeVNsdWcoJHNsdWcpIDogT3B0aW9uXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNYWluT3B0aW9ucygpLmZpbHRlciggKG9wdGlvbiA6IE9wdGlvbikgPT4gc2x1Z2lmeShvcHRpb24ubmFtZVNob3J0KSA9PSAkc2x1Zykuc2hpZnQoKTtcblx0fVxuXG5cdGdldE1haW5PcHRpb25CeUlkICgkaWQpIDogT3B0aW9uXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5nZXRNYWluT3B0aW9ucygpLmZpbHRlciggKG9wdGlvbiA6IE9wdGlvbikgPT4gb3B0aW9uLmlkID09ICRpZCkuc2hpZnQoKTtcblx0fTtcblxuXHRnZXRDYXRlZ29yeUJ5SWQgKCRpZCkgOiBDYXRlZ29yeVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuY2F0ZWdvcmllcy5maWx0ZXIoIChjYXRlZ29yeSA6IENhdGVnb3J5KSA9PiBjYXRlZ29yeS5pZCA9PSAkaWQpLnNoaWZ0KCk7XG5cdH07XG5cblx0Z2V0T3B0aW9uQnlJZCAoJGlkKSA6IE9wdGlvblxuXHR7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoIChvcHRpb24gOiBPcHRpb24pID0+IG9wdGlvbi5pZCA9PSAkaWQpLnNoaWZ0KCk7XG5cdH07XG5cblx0Z2V0T3B0aW9uQnlJbnRJZCAoJGlkKSA6IE9wdGlvblxuXHR7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoIChvcHRpb24gOiBPcHRpb24pID0+IG9wdGlvbi5pbnRJZCA9PSAkaWQpLnNoaWZ0KCk7XG5cdH07XG5cblx0Z2V0Q3Vyck9wdGlvbnMoKSA6IE9wdGlvbltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zLmZpbHRlciggKG9wdGlvbiA6IE9wdGlvbikgPT4gb3B0aW9uLm1haW5Pd25lcklkID09IEFwcC5jdXJyTWFpbklkKTtcblx0fVxuXG5cdGdldFJvb3RDYXRlZ29yaWVzKCkgOiBDYXRlZ29yeVtdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5jYXRlZ29yaWVzLmZpbHRlciggKGNhdGVnb3J5IDogQ2F0ZWdvcnkpID0+IGNhdGVnb3J5LmlzUm9vdENhdGVnb3J5KTtcblx0fVxuXG5cdC8vIHRoZSBtYWluIGNhdGVnb3J5IDogaS5lLiB0aGUgZmlyc3Qgcm9vdCBjYXRlZ29yeSAoY291bGQgaGF2ZSBtYW55IHJvb3QgY2F0ZWdvcmllcykgXG5cdGdldCBtYWluQ2F0ZWdvcnkoKSB7IHJldHVybiB0aGlzLnJvb3RDYXRlZ29yaWVzWzBdOyB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMDgtMzFcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNvb2tpZShuYW1lLCB2YWx1ZSwgZGF5cyA9IDEwMCkgXG57XG5cdGxldCBkYXRlID0gbmV3IERhdGUoKTtcblx0ZGF0ZS5zZXRUaW1lKGRhdGUuZ2V0VGltZSgpKyhkYXlzKjI0KjYwKjYwKjEwMDApKTtcblx0bGV0IGV4cGlyZXMgPSBcIjsgZXhwaXJlcz1cIitkYXRlLnRvVVRDU3RyaW5nKCk7XG5cdFxuXHRkb2N1bWVudC5jb29raWUgPSBuYW1lK1wiPVwiK3ZhbHVlK2V4cGlyZXMrXCI7IHBhdGg9L1wiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVhZENvb2tpZShuYW1lKSB7XG5cdGxldCBuYW1lRVEgPSBuYW1lICsgXCI9XCI7XG5cdGxldCBjYSA9IGRvY3VtZW50LmNvb2tpZS5zcGxpdCgnOycpO1xuXHRmb3IobGV0IGk9MDtpIDwgY2EubGVuZ3RoO2krKykge1xuXHRcdGxldCBjID0gY2FbaV07XG5cdFx0d2hpbGUgKGMuY2hhckF0KDApID09ICcgJykgYyA9IGMuc3Vic3RyaW5nKDEsYy5sZW5ndGgpO1xuXHRcdGlmIChjLmluZGV4T2YobmFtZUVRKSA9PT0gMCkgcmV0dXJuIGMuc3Vic3RyaW5nKG5hbWVFUS5sZW5ndGgsYy5sZW5ndGgpO1xuXHR9XG5cdHJldHVybiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZXJhc2VDb29raWUobmFtZSkge1xuXHRjcmVhdGVDb29raWUobmFtZSxcIlwiKTtcbn0iLCJleHBvcnQgZnVuY3Rpb24gZ2V0UXVlcnlQYXJhbXMocXMpIFxue1xuICBxcyA9IHFzLnNwbGl0KFwiK1wiKS5qb2luKFwiIFwiKTtcbiAgdmFyIHBhcmFtcyA9IHt9LFxuICAgICAgdG9rZW5zLFxuICAgICAgcmUgPSAvWz8mXT8oW149XSspPShbXiZdKikvZztcblxuICB3aGlsZSAoKHRva2VucyA9IHJlLmV4ZWMocXMpKSkge1xuICAgICAgcGFyYW1zW2RlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMV0pXSA9IGRlY29kZVVSSUNvbXBvbmVudCh0b2tlbnNbMl0pO1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn0iLCJleHBvcnQgZnVuY3Rpb24gcGFyc2VBcnJheU51bWJlckludG9TdHJpbmcoYXJyYXkgOiBudW1iZXJbXSkgOiBzdHJpbmdcbntcbiAgbGV0IHJlc3VsdCAgPSAnJztcbiAgbGV0IGkgPSAwO1xuXG4gIGZvcihsZXQgbnVtYmVyIG9mIGFycmF5KVxuICB7XG4gICAgaWYgKG51bWJlcilcbiAgICB7XG4gICAgICAgIGlmIChpICUgMiA9PSAwKSByZXN1bHQgKz0gcGFyc2VOdW1iZXJUb1N0cmluZyhudW1iZXIpO1xuICAgICAgICBlbHNlIHJlc3VsdCArPSBudW1iZXIudG9TdHJpbmcoKTtcbiAgICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmZ1bmN0aW9uIHBhcnNlTnVtYmVyVG9TdHJpbmcobnVtYmVyIDogbnVtYmVyKSA6IHN0cmluZ1xueyAgXG4gIGxldCBiYXNlMjYgPSBudW1iZXIudG9TdHJpbmcoMjYpO1xuICBsZXQgaSA9IDA7IFxuICBsZXQgbGVuZ3RoID0gYmFzZTI2Lmxlbmd0aDtcblxuICBsZXQgcmVzdWx0ID0gJyc7XG5cbiAgZm9yIChpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSBcbiAge1xuICAgIHJlc3VsdCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDk2ICsgcGFyc2VJbnQoYmFzZTI2W2ldLDI2KSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwYXJzZVN0cmluZ1RvTnVtYmVyKHN0cmluZyA6IHN0cmluZykgOiBudW1iZXJcbnsgIFxuICBsZXQgaSA9IDA7IFxuICBsZXQgbGVuZ3RoID0gc3RyaW5nLmxlbmd0aDtcblxuICBsZXQgcmVzdWx0ID0gMDtcblxuICBmb3IgKGkgPSBsZW5ndGggLSAxOyBpID49IDA7IGktLSkgXG4gIHtcbiAgICByZXN1bHQgKz0gKHN0cmluZy5jaGFyQ29kZUF0KGkpIC0gOTYpICogTWF0aC5wb3coMjYsIGxlbmd0aCAtIGkgLSAxKTtcbiAgfVxuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVN0cmluZ0ludG9BcnJheU51bWJlcihzdHJpbmcgOiBzdHJpbmcpIDogbnVtYmVyW11cbntcbiAgbGV0IHJlc3VsdCA6IG51bWJlcltdID0gW107XG5cbiAgaWYgKCFzdHJpbmcpIHJldHVybiByZXN1bHQ7XG5cbiAgbGV0IGFycmF5ID0gc3RyaW5nLm1hdGNoKC9bYS16XSt8WzAtOV0rL2cpO1xuXG4gIGZvcihsZXQgZWxlbWVudCBvZiBhcnJheSlcbiAge1xuICAgIGlmIChwYXJzZUludChlbGVtZW50KSkgcmVzdWx0LnB1c2gocGFyc2VJbnQoZWxlbWVudCkpO1xuICAgIGVsc2UgcmVzdWx0LnB1c2gocGFyc2VTdHJpbmdUb051bWJlcihlbGVtZW50KSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufSIsImV4cG9ydCBmdW5jdGlvbiBzbHVnaWZ5KHRleHQpIDogc3RyaW5nXG57XG4gIGlmICghdGV4dCkgcmV0dXJuICcnO1xuICB2YXIgZnJvbSA9IFwiw6PDoMOhw6TDouG6vcOow6nDq8Oqw6zDrcOvw67DtcOyw7PDtsO0w7nDusO8w7vDscOnwrcvXyw6O1wiO1xuICB2YXIgdG8gICA9IFwiYWFhYWFlZWVlZWlpaWlvb29vb3V1dXVuYy0tLS0tLVwiO1xuICBmb3IgKHZhciBpID0gMCwgbGVuID0gZnJvbS5sZW5ndGg7IGkgPCBsZW47IGkrKylcbiAge1xuICAgIHRleHQgPSB0ZXh0LnJlcGxhY2UobmV3IFJlZ0V4cChmcm9tLmNoYXJBdChpKSwgJ2cnKSwgdG8uY2hhckF0KGkpKTtcbiAgfVxuICByZXR1cm4gdGV4dFxuICAgICAgLnRvU3RyaW5nKCkgICAgICAgICAgICAgICAgICAgICAvLyBDYXN0IHRvIHN0cmluZ1xuICAgICAgLy8gLnRvTG93ZXJDYXNlKCkgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHRoZSBzdHJpbmcgdG8gbG93ZXJjYXNlIGxldHRlcnNcbiAgICAgIC50cmltKCkgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIHdoaXRlc3BhY2UgZnJvbSBib3RoIHNpZGVzIG9mIGEgc3RyaW5nXG4gICAgICAucmVwbGFjZSgvXFxzKy9nLCAnLScpICAgICAgICAgICAvLyBSZXBsYWNlIHNwYWNlcyB3aXRoIC1cbiAgICAgIC5yZXBsYWNlKC8mL2csICcteS0nKSAgICAgICAgICAgLy8gUmVwbGFjZSAmIHdpdGggJ2FuZCdcbiAgICAgIC5yZXBsYWNlKC9bXlxcd1xcLV0rL2csICcnKSAgICAgICAvLyBSZW1vdmUgYWxsIG5vbi13b3JkIGNoYXJzXG4gICAgICAucmVwbGFjZSgvXFwtXFwtKy9nLCAnLScpOyAgICAgICAgLy8gUmVwbGFjZSBtdWx0aXBsZSAtIHdpdGggc2luZ2xlIC1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHVuc2x1Z2lmeSh0ZXh0IDogc3RyaW5nKSA6IHN0cmluZ1xue1xuICBpZiAoIXRleHQpIHJldHVybiAnJztcbiAgcmV0dXJuIHRleHQudG9TdHJpbmcoKS5yZXBsYWNlKC9cXC0rL2csICcgJyk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjYXBpdGFsaXplKHRleHQgOiBzdHJpbmcpIDogc3RyaW5nXG57XG4gIGlmICghdGV4dCkgcmV0dXJuIFwiXCI7XG4gIHJldHVybiB0ZXh0Lmxlbmd0aCA+IDEgPyB0ZXh0LnN1YnN0cigwLDEpLnRvVXBwZXJDYXNlKCkrdGV4dC5zdWJzdHIoMSx0ZXh0Lmxlbmd0aCkgOiB0ZXh0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VVcmlJZCgkdXJpSWQgOiBzdHJpbmcpIDogc3RyaW5nXG57XG4gIGlmICghJHVyaUlkKSByZXR1cm4gXCJcIjtcbiAgbGV0IHNwbGl0ZWQgPSAkdXJpSWQudG9TdHJpbmcoKS5zcGxpdCgnLycpO1xuICByZXR1cm4gc3BsaXRlZFtzcGxpdGVkLmxlbmd0aCAtIDFdO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc3BsaXRMb25nVGV4dCh0ZXh0IDogc3RyaW5nLCBsZW5ndGggOiBudW1iZXIsIHNpemUgOiBudW1iZXIgPSA1MCkgXG57XG4gIC8vIGlmIHRoZSB0ZXh0IGlzIGp1c3QgYSBiaXQgbG9uZ2VyIHRoYW4gdGhlIGxlbmd0aCwgd2UgY3V0IGl0IG1vcmUgc28gdGhlIHRleHQyIGlzIG5vdCBzbyBzaG9ydFxuICBpZiAodGV4dC5sZW5ndGggPCBsZW5ndGggKyBzaXplKSB7XG4gICAgbGVuZ3RoID0gbGVuZ3RoIC0gc2l6ZTtcbiAgfVxuICBsZXQgc3RhcnRPZmZzZXQgPSBsZW5ndGggLSBzaXplO1xuICBsZXQgb2Zmc2V0ID0gdGV4dC5zbGljZShzdGFydE9mZnNldCwgbGVuZ3RoKS5zcGxpdCgvXFwufCF8XFw/L2cpWzBdLmxlbmd0aDtcbiAgaWYgKG9mZnNldCA9PSBzaXplKSBvZmZzZXQgPSB0ZXh0LnNsaWNlKHN0YXJ0T2Zmc2V0LCBsZW5ndGgpLnNwbGl0KCcgJylbMF0ubGVuZ3RoO1xuICBvZmZzZXQgKz0gc3RhcnRPZmZzZXQgKyAxO1xuICBsZXQgdGV4dDEgPSB0ZXh0LnNsaWNlKDAsIG9mZnNldCk7XG4gIGxldCB0ZXh0MiA9IHRleHQuc2xpY2Uob2Zmc2V0KTtcbiAgcmV0dXJuIHsgZmlyc3Q6IHRleHQxLCBzZWNvbmQ6IHRleHQyIH07XG59Il19 +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIm5vZGVfbW9kdWxlcy9icm93c2VyLXBhY2svX3ByZWx1ZGUuanMiLCJzcmMvanMvYXBwLmNvbXBvbmVudC50cyIsInNyYy9qcy9hcHAubW9kdWxlLnRzIiwic3JjL2pzL2NsYXNzZXMvY2xhc3Nlcy50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWNvbmZpZy5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWRlZmF1bHQtZmVhdHVyZS50cyIsInNyYy9qcy9jbGFzc2VzL2NvbmZpZy9nb2dvLWZlYXR1cmUuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2NhdGVnb3J5LXZhbHVlLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvZWxlbWVudC9jb250cmlidXRpb24uY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2VsZW1lbnQtYmFzZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2VsZW1lbnQvZWxlbWVudC11cmwuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L2VsZW1lbnQuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L29wdGlvbi12YWx1ZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2VsZW1lbnQvcG9zdGFsLWFkZHJlc3MuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy9lbGVtZW50L3N0YW1wLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvZWxlbWVudC92b3RlLXJlcG9ydC5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL2V2ZW50LmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvaGlzdG9yeS1zdGF0ZS5jbGFzcy50cyIsInNyYy9qcy9jbGFzc2VzL21hcC90aWxlLWxheWVyLmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvbWFwL3ZpZXdwb3J0LmNsYXNzLnRzIiwic3JjL2pzL2NsYXNzZXMvdGF4b25vbXkvY2F0ZWdvcnkuY2xhc3MudHMiLCJzcmMvanMvY2xhc3Nlcy90YXhvbm9teS9vcHRpb24uY2xhc3MudHMiLCJzcmMvanMvY29tcG9uZW50cy9jdXN0b20tcG9wdXAuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZGlyZWN0b3J5LW1lbnUvY2F0ZWdvcnktb3B0aW9uLXRyZWUtbm9kZS5jbGFzcy50cyIsInNyYy9qcy9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2RpcmVjdG9yeS1tZW51LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2ZpbHRlcnMuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50LW1lbnUuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2VsZW1lbnQvaW1hZ2VzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2VsZW1lbnQvaW50ZXJhY3RpdmUtc2VjdGlvbi5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9lbGVtZW50L21vZGVyYXRpb24uY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvZWxlbWVudC9zdGFtcC5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9nb2dvLWNvbnRyb2xzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL2xpc3QvZWxlbWVudC1saXN0LmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9kaXJlY3Rpb25zLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9pbmZvLWJhci5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tYXAvbWFwLWNvbnRyb2xzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21hcC9tYXAuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbWFwL21hcmtlci5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tb2RhbHMvYWJzdHJhY3QtbW9kYWwuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL2RlbGV0ZS5jb21wb25lbnQudHMiLCJzcmMvanMvY29tcG9uZW50cy9tb2RhbHMvcGljay1hZGRyZXNzLmNvbXBvbmVudC50cyIsInNyYy9qcy9jb21wb25lbnRzL21vZGFscy9yZXBvcnQuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL3NlbmQtZW1haWwuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvbW9kYWxzL3ZvdGUuY29tcG9uZW50LnRzIiwic3JjL2pzL2NvbXBvbmVudHMvc2VhcmNoLWJhci9zZWFyY2gtYmFyLmNvbXBvbmVudC50cyIsInNyYy9qcy9nb2dvY2FydG8udHMiLCJzcmMvanMvbWFuYWdlcnMvZGF0YS10eXBlLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvZWxlbWVudHMubWFuYWdlci50cyIsInNyYy9qcy9tYW5hZ2Vycy9nZW9jb2RpbmcubWFuYWdlci50cyIsInNyYy9qcy9tYW5hZ2Vycy9oaXN0b3J5LXN0YXRlLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvbWFwLm1hbmFnZXIudHMiLCJzcmMvanMvbWFuYWdlcnMvbW9kZS5tYW5hZ2VyLnRzIiwic3JjL2pzL21hbmFnZXJzL3N0YXRlLm1hbmFnZXIudHMiLCJzcmMvanMvbW9kdWxlcy9hamF4Lm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2JvdW5kcy5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL2RvY3VtZW50LXRpdGxlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2NvcmUvaGlzdG9yeS5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL3JvdXRlci5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9jb3JlL3RlbXBsYXRlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnQvZGlmZi5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50L2VsZW1lbnQtanNvbi1sb2FkZXIubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvZWxlbWVudC9mb3JtYXRlci5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50L2ljb25zLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnQvb3B0aW9uLXZhbHVlcy5tb2R1bGUudHMiLCJzcmMvanMvbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy1qc29uLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL2VsZW1lbnRzLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL2Zhdm9yaXRlLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2VsZW1lbnRzL3N0YW1wLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2dlb2NvZGVyLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL2xvZ2luLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL21hcC9kaXNwbGF5LWVsZW1lbnQtYWxvbmUubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvZmlsdGVyLXJvdXRpbmcubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvZmlsdGVyLm1vZHVsZS50cyIsInNyYy9qcy9tb2R1bGVzL3RheG9ub215L3RheG9ub215LXNrb3MubW9kdWxlLnRzIiwic3JjL2pzL21vZHVsZXMvdGF4b25vbXkvdGF4b25vbXkubW9kdWxlLnRzIiwic3JjL2pzL3V0aWxzL2Nvb2tpZXMudHMiLCJzcmMvanMvdXRpbHMvcGFyYW1zLnRzIiwic3JjL2pzL3V0aWxzL3BhcnNlci1zdHJpbmctbnVtYmVyLnRzIiwic3JjL2pzL3V0aWxzL3N0cmluZy1oZWxwZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7OztBQ1dBOztBQU1BLElBQUEsZUFBQSxhQUFBLFlBQUE7QUFJQyxhQUFBLFlBQUEs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QUFsQixDQUF3QixHQUF4QixDQUFkO0FBQ0EsV0FBTyxRQUFRLFFBQVEsTUFBUixHQUFpQixDQUF6QixDQUFQO0FBQ0Q7QUFFSyxTQUFBLGFBQUEsQ0FBd0IsSUFBeEIsRUFBdUMsTUFBdkMsRUFBd0QsSUFBeEQsRUFBMEU7QUFBbEIsUUFBQSxTQUFBLEtBQUEsQ0FBQSxFQUFBO0FBQUEsZUFBQSxFQUFBO0FBQWtCO0FBRTlFO0FBQ0EsUUFBSSxLQUFLLE1BQUwsR0FBYyxTQUFTLElBQTNCLEVBQWlDO0FBQy9CLGlCQUFTLFNBQVMsSUFBbEI7QUFDRDtBQUNELFFBQUksY0FBYyxTQUFTLElBQTNCO0FBQ0EsUUFBSSxTQUFTLEtBQUssS0FBTCxDQUFXLFdBQVgsRUFBd0IsTUFBeEIsRUFBZ0MsS0FBaEMsQ0FBc0MsVUFBdEMsRUFBa0QsQ0FBbEQsRUFBcUQsTUFBbEU7QUFDQSxRQUFJLFVBQVUsSUFBZCxFQUFvQixTQUFTLEtBQUssS0FBTCxDQUFXLFdBQVgsRUFBd0IsTUFBeEIsRUFBZ0MsS0FBaEMsQ0FBc0MsR0FBdEMsRUFBMkMsQ0FBM0MsRUFBOEMsTUFBdkQ7QUFDcEIsY0FBVSxjQUFjLENBQXhCO0FBQ0EsUUFBSSxRQUFRLEtBQUssS0FBTCxDQUFXLENBQVgsRUFBYyxNQUFkLENBQVo7QUFDQSxRQUFJLFFBQVEsS0FBSyxLQUFMLENBQVcsTUFBWCxDQUFaO0FBQ0EsV0FBTyxFQUFFLE9BQU8sS0FBVCxFQUFnQixRQUFRLEtBQXhCLEVBQVA7QUFDRCIsImZpbGUiOiJnZW5lcmF0ZWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlc0NvbnRlbnQiOlsiKGZ1bmN0aW9uKCl7ZnVuY3Rpb24gcihlLG4sdCl7ZnVuY3Rpb24gbyhpLGYpe2lmKCFuW2ldKXtpZighZVtpXSl7dmFyIGM9XCJmdW5jdGlvblwiPT10eXBlb2YgcmVxdWlyZSYmcmVxdWlyZTtpZighZiYmYylyZXR1cm4gYyhpLCEwKTtpZih1KXJldHVybiB1KGksITApO3ZhciBhPW5ldyBFcnJvcihcIkNhbm5vdCBmaW5kIG1vZHVsZSAnXCIraStcIidcIik7dGhyb3cgYS5jb2RlPVwiTU9EVUxFX05PVF9GT1VORFwiLGF9dmFyIHA9bltpXT17ZXhwb3J0czp7fX07ZVtpXVswXS5jYWxsKHAuZXhwb3J0cyxmdW5jdGlvbihyKXt2YXIgbj1lW2ldWzFdW3JdO3JldHVybiBvKG58fHIpfSxwLHAuZXhwb3J0cyxyLGUsbix0KX1yZXR1cm4gbltpXS5leHBvcnRzfWZvcih2YXIgdT1cImZ1bmN0aW9uXCI9PXR5cGVvZiByZXF1aXJlJiZyZXF1aXJlLGk9MDtpPHQubGVuZ3RoO2krKylvKHRbaV0pO3JldHVybiBvfXJldHVybiByfSkoKSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4vZ29nb2NhcnRvXCI7XG5cblxuLy9kZWNsYXJlIHZhciAkO1xuZGVjbGFyZSBsZXQgJCwgd2luZG93IDogYW55LCBNYXRlcmlhbGl6ZSA6IGFueTtcblxuZXhwb3J0IGNsYXNzIEFwcENvbXBvbmVudFxue1xuXHRpbmZvckJhckFuaW1hdGlvblRpbWVyO1xuXG5cdGNvbnN0cnVjdG9yKCkge1xuXHRcdEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50Lm9uU2hvdy5kbyggKCkgPT4geyB0aGlzLmhhbmRsZURpcmVjdG9yeU1lbnVTaG93KCkgfSk7XG5cdFx0QXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQub25IaWRlLmRvKCAoKSA9PiB7IHRoaXMuaGFuZGxlRGlyZWN0b3J5TWVudUhpZGUoKSB9KTtcblx0fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0dGhpcy51cGRhdGVDb21wb25lbnRzU2l6ZSgpO1xuXG5cdFx0bGV0IHJlcztcblx0XHR3aW5kb3cub25yZXNpemUgPSAoKSA9PlxuXHRcdHtcblx0XHQgICBpZiAocmVzKSB7IGNsZWFyVGltZW91dChyZXMpOyB9XG5cdFx0ICAgcmVzID0gc2V0VGltZW91dCggKCkgPT4geyBcblx0XHQgICBcdGNvbnNvbGUubG9nKFwiT24gcmVzaXplIHVwZGF0ZSBjb21wb25lbnQgc2l6ZVwiKTtcblx0XHQgICBcdHRoaXMudXBkYXRlQ29tcG9uZW50c1NpemUoKTsgXG5cdFx0ICAgXHRBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC51cGRhdGVTaXplKCk7XG5cdFx0ICAgfSwyMDApO1xuXHRcdH07XHRcblxuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy51cGRhdGVDb21wb25lbnRzU2l6ZShmYWxzZSk7IH0sIDEwMDApO1x0XG5cdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLnVwZGF0ZUNvbXBvbmVudHNTaXplKGZhbHNlKTsgfSwgMjAwMCk7XG5cdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLnVwZGF0ZUNvbXBvbmVudHNTaXplKGZhbHNlKTsgfSwgNTAwMCk7XG5cdH1cblxuXHR0b2FzdE1lc3NhZ2UoJG1lc3NhZ2UsICRkdXJhdGlvbiA9IDMwMDApXG5cdHtcblx0XHRNYXRlcmlhbGl6ZS50b2FzdCgkbWVzc2FnZSwgJGR1cmF0aW9uLCAncm91bmRlZCcpXG5cdH1cblxuXHRoYW5kbGVEaXJlY3RvcnlNZW51U2hvdygpXG5cdHtcdFx0XG5cdFx0aWYgKCF0aGlzLmlzTW9iaWxlU2NyZWVuKCkpXG5cdFx0e1xuXHRcdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50JykudmVsb2NpdHkoeydtYXJnaW4tbGVmdCc6IEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LndpZHRofSwge2R1cmF0aW9uOiAzMDAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnc3dpbmcnfSk7XG5cdFx0XHQkKCcjbWFwLWdvZ28tY29udHJvbHMnKS52ZWxvY2l0eSh7J3BhZGRpbmctbGVmdCc6ICcxMHB4J30sIHtkdXJhdGlvbjogMzAwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ3N3aW5nJ30pO1xuXHRcdFx0JCgnLnNob3ctZGlyZWN0b3J5LW1lbnUtYnV0dG9uJykuaGlkZSgpO1xuXHRcdFx0c2V0VGltZW91dCgoKSA9PiB7ICQoJyNkaXJlY3RvcnktY29udGVudCcpLmNzcygnbWFyZ2luLWxlZnQnLCBBcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC53aWR0aCk7IH0sIDQwMCk7XG5cdFx0fVx0XG5cdFx0c2V0VGltZW91dCggKCkgPT4geyBBcHAubWFwQ29tcG9uZW50LnJlc2l6ZSgpIH0sIDQwMCk7XG5cdH1cblxuXHRoYW5kbGVEaXJlY3RvcnlNZW51SGlkZSgpXG5cdHtcblx0XHQkKCcuc2hvdy1kaXJlY3RvcnktbWVudS1idXR0b24nKS5mYWRlSW4oMjAwKTtcblx0XHQkKCcjZGlyZWN0b3J5LWNvbnRlbnQnKS52ZWxvY2l0eSh7J21hcmdpbi1sZWZ0JzonMCd9LCB7ZHVyYXRpb246IDEwMCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdzd2luZyd9KTtcdFx0XG5cdFx0JCgnI21hcC1nb2dvLWNvbnRyb2xzJykudmVsb2NpdHkoeydwYWRkaW5nLWxlZnQnOiAnMHB4J30sIHtkdXJhdGlvbjogMTAwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ3N3aW5nJ30pO1xuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgQXBwLm1hcENvbXBvbmVudC5yZXNpemUoKSB9LCAyMDApO1xuXHR9XHRcblxuXHRpc01vYmlsZVNjcmVlbigpIHsgcmV0dXJuIHRoaXMud2lkdGgoKSA8IDg1MDsgfVxuXG5cdG1hcFdpZHRoKCkgeyByZXR1cm4gJCgnI2RpcmVjdG9yeS1jb250ZW50Jykud2lkdGgoKTsgfVxuXG5cdHdpZHRoKCkgeyByZXR1cm4gJCgnLmdvZ29jYXJ0by1jb250YWluZXInKS53aWR0aCgpOyB9XG5cblx0dXBkYXRlQ29tcG9uZW50c1NpemUoJHJlZnJlc2hJbmZvQmFyID0gdHJ1ZSlcblx0e1x0XG5cdFx0QXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQudXBkYXRlU2l6ZSgpO1xuXG5cdFx0QXBwLnNlYXJjaEJhckNvbXBvbmVudC51cGRhdGUoKTtcblxuXHRcdEFwcC5nb2dvQ29udHJvbENvbXBvbmVudC51cGRhdGVQb3NpdGlvbigpO1xuXG5cdFx0Ly8gdXBkYXRlIGltZyBjb250cm9scyBmb3IgZWxlbWVudCBsaXN0XG5cdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgLmVsZW1lbnQtaXRlbScpLmVhY2goZnVuY3Rpb24oKSB7XG5cdFx0XHQkKHRoaXMpLmZpbmQoJy5pbWctb3ZlcmxheScpLmNzcygnaGVpZ2h0JywgJCh0aGlzKS5maW5kKCcuaW1nLWNvbnRhaW5lcicpLmhlaWdodCgpKTtcblx0XHR9KTtcblxuXHRcdGxldCBpbmZvQmFySGFzQ2hhbmdlRGlzcGxheU1vZGUgPSBmYWxzZTtcblx0XHQvLyBzaG93IGVsZW1lbnQgaW5mbyBiYXIgYXNpZGUgb3IgYXQgdGhlIGJvdHRvbSBkZXBlbmRpbmcgb2YgZGlyZWNvdHktY29udGVudCB3aWR0aFxuXHRcdGlmICh0aGlzLm1hcFdpZHRoKCkgPiA5MDApXG5cdFx0e1xuXHRcdFx0aWYgKCFBcHAuaW5mb0JhckNvbXBvbmVudC5pc0Rpc3BsYXllZEFzaWRlKCkpXG5cdFx0XHR7XG5cdFx0XHRcdEFwcC5pbmZvQmFyQ29tcG9uZW50LmRpc3BsYXlBc2lkZSgpO1xuXHRcdFx0XHRpbmZvQmFySGFzQ2hhbmdlRGlzcGxheU1vZGUgPSB0cnVlO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cdFxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZiAoIUFwcC5pbmZvQmFyQ29tcG9uZW50LmlzRGlzcGxheWVkQm90dG9tKCkpXG5cdFx0XHR7XG5cdFx0XHRcdEFwcC5pbmZvQmFyQ29tcG9uZW50LmRpc3BsYXlCb3R0b20oKTtcblx0XHRcdFx0aW5mb0Jhckhhc0NoYW5nZURpc3BsYXlNb2RlID0gdHJ1ZTtcblx0XHRcdH1cblx0XHRcdCQoJyNkaXJlY3RvcnktY29udGVudC1tYXAnKS5zdG9wKHRydWUpLmNzcygnbWFyZ2luLXJpZ2h0JywgJzAnKTtcblx0XHR9XHRcblxuXHRcdGlmIChBcHAuaW5mb0JhckNvbXBvbmVudC5pc0Rpc3BsYXllZEFzaWRlKCkpXHRcblx0XHR7XHRcdFx0XG5cdFx0XHRsZXQgaW5mb0JhcldpZHRoO1xuXHRcdFx0aWYgKEFwcC5jb25maWcuaW5mb2Jhci53aWR0aCkgaW5mb0JhcldpZHRoID0gQXBwLmNvbmZpZy5pbmZvYmFyLndpZHRoO1xuXHRcdFx0ZWxzZSBpbmZvQmFyV2lkdGggPSB0aGlzLm1hcFdpZHRoKCkgPiAxMTAwID8gJzU0MHB4JyA6ICc0NzBweCc7XG5cblx0XHRcdGlmIChpbmZvQmFyV2lkdGggPT0gJzQ3MHB4JykgJCgnI2VsZW1lbnQtaW5mby1iYXInKS5hZGRDbGFzcygnc21hbGwtd2lkdGgnKTtcblx0XHRcdGVsc2UgJCgnI2VsZW1lbnQtaW5mby1iYXInKS5yZW1vdmVDbGFzcygnc21hbGwtd2lkdGgnKTtcblxuXHRcdFx0aWYgKGluZm9CYXJIYXNDaGFuZ2VEaXNwbGF5TW9kZSlcblx0XHRcdFx0JCgnI2VsZW1lbnQtaW5mby1iYXInKS5jc3MoJ3dpZHRoJywgaW5mb0JhcldpZHRoKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0JCgnI2VsZW1lbnQtaW5mby1iYXInKS5hbmltYXRlKHsnd2lkdGgnOiBpbmZvQmFyV2lkdGh9LCAzNTAsIFwic3dpbmdcIik7XG5cdFx0XHRcblx0XHRcdHRoaXMudXBkYXRlRGlyZWN0b3J5Q29udGVudE1hcmdpbklmSW5mb0JhckRpc3BsYXllZEFzaWRlKCFpbmZvQmFySGFzQ2hhbmdlRGlzcGxheU1vZGUsIGluZm9CYXJXaWR0aCk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZiAoJHJlZnJlc2hJbmZvQmFyKSAkKCcjZWxlbWVudC1pbmZvLWJhcicpLnN0b3AodHJ1ZSlcblx0XHRcdCQoJyNlbGVtZW50LWluZm8tYmFyJykuY3NzKCd3aWR0aCcsICcxMDAlJyk7XG5cdFx0fVxuXG5cdFx0aWYgKCRyZWZyZXNoSW5mb0Jhcikgc2V0VGltZW91dCggKCkgPT4geyBBcHAuaW5mb0JhckNvbXBvbmVudC5yZWZyZXNoKCk7IH0sIDEwMCk7XG5cblx0XHRpZiAoJCgnI2RpcmVjdG9yeS1tZW51JykuaXMoJzp2aXNpYmxlJykgJiYgIXRoaXMuaXNNb2JpbGVTY3JlZW4oKSlcblx0XHR7XG5cdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyBcblx0XHRcdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50JykuY3NzKCdtYXJnaW4tbGVmdCcsIEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LndpZHRoKTtcblx0XHRcdH0sMCk7XHRcdFxuXHRcdH1cblx0XHRlbHNlICQoJyNkaXJlY3RvcnktY29udGVudCcpLmNzcygnbWFyZ2luLWxlZnQnLCAwKTtcblx0fVxuXG5cdHVwZGF0ZURpcmVjdG9yeUNvbnRlbnRNYXJnaW5JZkluZm9CYXJEaXNwbGF5ZWRBc2lkZShhbmltYXRlIDogYm9vbGVhbiA9IGZhbHNlLCB3aWR0aCA6IHN0cmluZyA9IEFwcC5pbmZvQmFyQ29tcG9uZW50LndpZHRoKCkpXG5cdHtcdFx0XG5cdFx0aWYgKCFBcHAuaW5mb0JhckNvbXBvbmVudC5pc1Zpc2libGUpIHJldHVybjtcblxuXHRcdGlmIChhbmltYXRlKSAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuc3RvcCh0cnVlKS5hbmltYXRlKHsnbWFyZ2luLXJpZ2h0Jzogd2lkdGh9LCAzNTAsICdzd2luZycpO1xuXHRcdGVsc2UgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCcpLnN0b3AodHJ1ZSkuY3NzKCdtYXJnaW4tcmlnaHQnLCB3aWR0aCk7XG5cdFx0XG5cdFx0QXBwLmNvbXBvbmVudC51cGRhdGVNYXBTaXplKCk7XG5cdH1cblx0XG5cdHVwZGF0ZU1hcFNpemUoKVxuXHR7XHRcdFxuXHRcdGlmICghQXBwLmluZm9CYXJDb21wb25lbnQuaXNEaXNwbGF5ZWRBc2lkZSgpKSAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwJykuc3RvcCh0cnVlKS5jc3MoJ21hcmdpbi1yaWdodCcsICcwJyk7XG5cdFx0aWYgKEFwcC5tYXBDb21wb25lbnQpIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7IEFwcC5tYXBDb21wb25lbnQucmVzaXplKCk7IH0sMCk7XG5cdH1cdFxufVxuXG5cblxuXG5cbiIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibGVhZmxldFwiIC8+XG5cbi8vIE1BTkFHRVJTXG5pbXBvcnQgeyBNb2RlTWFuYWdlciwgQXBwTW9kZXMgfSBmcm9tIFwiLi9tYW5hZ2Vycy9tb2RlLm1hbmFnZXJcIjtcbmltcG9ydCB7IFN0YXRlTWFuYWdlciwgQXBwU3RhdGVzIH0gZnJvbSBcIi4vbWFuYWdlcnMvc3RhdGUubWFuYWdlclwiO1xuaW1wb3J0IHsgRGF0YVR5cGVNYW5hZ2VyLCBBcHBEYXRhVHlwZSB9IGZyb20gXCIuL21hbmFnZXJzL2RhdGEtdHlwZS5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBFbGVtZW50c01hbmFnZXIgfSBmcm9tIFwiLi9tYW5hZ2Vycy9lbGVtZW50cy5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBIaXN0b3J5U3RhdGVNYW5hZ2VyIH0gZnJvbSBcIi4vbWFuYWdlcnMvaGlzdG9yeS1zdGF0ZS5tYW5hZ2VyXCI7XG5pbXBvcnQgeyBHZW9jb2RpbmdNYW5hZ2VyIH0gZnJvbSBcIi4vbWFuYWdlcnMvZ2VvY29kaW5nLm1hbmFnZXJcIjtcbmltcG9ydCB7IE1hcE1hbmFnZXIgfSBmcm9tIFwiLi9tYW5hZ2Vycy9tYXAubWFuYWdlclwiO1xuXG4vLyBNT0RVTEVTXG5pbXBvcnQgeyBHZW9jb2Rlck1vZHVsZSwgR2VvY29kZVJlc3VsdCB9IGZyb20gXCIuL21vZHVsZXMvZ2VvY29kZXIubW9kdWxlXCI7XG5pbXBvcnQgeyBGaWx0ZXJNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL3RheG9ub215L2ZpbHRlci5tb2R1bGVcIjtcbmltcG9ydCB7IEZpbHRlclJvdXRpbmdNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL3RheG9ub215L2ZpbHRlci1yb3V0aW5nLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudHNNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2VsZW1lbnRzL2VsZW1lbnRzLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudHNKc29uTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy1qc29uLm1vZHVsZVwiO1xuaW1wb3J0IHsgRmF2b3JpdGVNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2VsZW1lbnRzL2Zhdm9yaXRlLm1vZHVsZVwiO1xuaW1wb3J0IHsgRGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvbWFwL2Rpc3BsYXktZWxlbWVudC1hbG9uZS5tb2R1bGVcIjtcbmltcG9ydCB7IEFqYXhNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2FqYXgubW9kdWxlXCI7XG5pbXBvcnQgeyBUYXhvbm9teU1vZHVsZSB9IGZyb20gJy4vbW9kdWxlcy90YXhvbm9teS90YXhvbm9teS5tb2R1bGUnO1xuaW1wb3J0IHsgVGF4b25vbXlTa29zTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL3RheG9ub215L3RheG9ub215LXNrb3MubW9kdWxlJztcbmltcG9ydCB7IFJvdXRlck1vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvY29yZS9yb3V0ZXIubW9kdWxlXCI7XG5pbXBvcnQgeyBMb2dpbk1vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvbG9naW4ubW9kdWxlXCI7XG5pbXBvcnQgeyBUZW1wbGF0ZU1vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvY29yZS90ZW1wbGF0ZS5tb2R1bGVcIjtcbmltcG9ydCB7IEhpc3RvcnlNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvY29yZS9oaXN0b3J5Lm1vZHVsZSc7XG5pbXBvcnQgeyBCb3VuZHNNb2R1bGUgfSBmcm9tICcuL21vZHVsZXMvYm91bmRzLm1vZHVsZSc7XG5pbXBvcnQgeyBEb2N1bWVudFRpdGxlTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2NvcmUvZG9jdW1lbnQtdGl0bGUubW9kdWxlJztcbmltcG9ydCB7IEVsZW1lbnRKc29uUGFyc2VyTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2VsZW1lbnQvZWxlbWVudC1qc29uLWxvYWRlci5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudEZvcm1hdGVyTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2VsZW1lbnQvZm9ybWF0ZXIubW9kdWxlJztcbmltcG9ydCB7IEVsZW1lbnREaWZmTW9kdWxlIH0gZnJvbSAnLi9tb2R1bGVzL2VsZW1lbnQvZGlmZi5tb2R1bGUnO1xuaW1wb3J0IHsgRWxlbWVudEljb25zTW9kdWxlIH0gZnJvbSBcIi4vbW9kdWxlcy9lbGVtZW50L2ljb25zLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudE9wdGlvblZhbHVlc01vZHVsZSB9IGZyb20gXCIuL21vZHVsZXMvZWxlbWVudC9vcHRpb24tdmFsdWVzLm1vZHVsZVwiO1xuaW1wb3J0IHsgU3RhbXBNb2R1bGUgfSBmcm9tIFwiLi9tb2R1bGVzL2VsZW1lbnRzL3N0YW1wLm1vZHVsZVwiO1xuXG4vLyBDT01QT05FTlRTXG5pbXBvcnQgeyBBcHBDb21wb25lbnQgfSBmcm9tICcuL2FwcC5jb21wb25lbnQnO1xuaW1wb3J0IHsgRWxlbWVudExpc3RDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2xpc3QvZWxlbWVudC1saXN0LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgSW5mb0JhckNvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbWFwL2luZm8tYmFyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgU2VhcmNoQmFyQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9zZWFyY2gtYmFyL3NlYXJjaC1iYXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBEaXJlY3RvcnlNZW51Q29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9kaXJlY3RvcnktbWVudS9kaXJlY3RvcnktbWVudS5jb21wb25lbnRcIjtcbmltcG9ydCB7IEZpbHRlcnNDb21wb25lbnQgfSBmcm9tIFwiLi9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2ZpbHRlcnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBHb0dvQ29udHJvbENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvZ29nby1jb250cm9scy5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hcENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbWFwL21hcC5jb21wb25lbnRcIjtcbmltcG9ydCB7IE1hcENvbnRyb2xzQ29tcG9uZW50IH0gZnJvbSBcIi4vY29tcG9uZW50cy9tYXAvbWFwLWNvbnRyb2xzLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRGlyZWN0aW9uc0NvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvbWFwL2RpcmVjdGlvbnMuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBDdXN0b21Qb3B1cENvbXBvbmVudCB9IGZyb20gXCIuL2NvbXBvbmVudHMvY3VzdG9tLXBvcHVwLmNvbXBvbmVudFwiO1xuXG4vLyBNT0RBTFNcbmltcG9ydCB7IFBpY2tBZGRyZXNzQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFscy9waWNrLWFkZHJlc3MuY29tcG9uZW50JztcbmltcG9ydCB7IFZvdGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWxzL3ZvdGUuY29tcG9uZW50JztcbmltcG9ydCB7IFJlcG9ydENvbXBvbmVudCB9IGZyb20gJy4vY29tcG9uZW50cy9tb2RhbHMvcmVwb3J0LmNvbXBvbmVudCc7XG5pbXBvcnQgeyBEZWxldGVDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvbW9kYWxzL2RlbGV0ZS5jb21wb25lbnQnO1xuaW1wb3J0IHsgU2VuZEVtYWlsQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL21vZGFscy9zZW5kLWVtYWlsLmNvbXBvbmVudCc7XG5cbi8vIE9USEVSU1xuaW1wb3J0IHsgR29Hb0NvbmZpZyB9IGZyb20gXCIuL2NsYXNzZXMvY29uZmlnL2dvZ28tY29uZmlnLmNsYXNzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi9nb2dvY2FydG9cIjtcbmltcG9ydCAqIGFzIENvb2tpZXMgZnJvbSBcIi4vdXRpbHMvY29va2llc1wiO1xuXG4vLyBFWFBPUlQgXG5leHBvcnQgeyBBcHBEYXRhVHlwZSB9IGZyb20gXCIuL21hbmFnZXJzL2RhdGEtdHlwZS5tYW5hZ2VyXCI7XG5leHBvcnQgeyBBcHBTdGF0ZXMgfSBmcm9tIFwiLi9tYW5hZ2Vycy9zdGF0ZS5tYW5hZ2VyXCI7XG5leHBvcnQgeyBBcHBNb2RlcyB9IGZyb20gXCIuL21hbmFnZXJzL21vZGUubWFuYWdlclwiO1xuXG4vKlxuKiBBcHAgTW9kdWxlLiBNYWluIG1vZHVsZSBvZiB0aGUgQXBwKlxuKiBBcHBNb2R1bGUgY3JlYXRlcyBhbGwgb3RoZXJzIGNvbXBvbmVudHMgYW5kIG1vZHVsZXNcbiovXG5leHBvcnQgY2xhc3MgQXBwTW9kdWxlXG57XHRcdFxuXHRyZWFkb25seSBjb25maWcgOiBHb0dvQ29uZmlnO1xuXHRyZWFkb25seSBpc0lmcmFtZSA6IGJvb2xlYW4gPSBmYWxzZTtcblx0cmVhZG9ubHkgbG9hZEZ1bGxUYXhvbm9teSA6IGJvb2xlYW4gPSB0cnVlO1xuXHRyZWFkb25seSByZXF1ZXN0IDogYW55ID0ge307XG5cblx0bW9kZU1hbmFnZXIgPSBuZXcgTW9kZU1hbmFnZXIoKTtcblx0c3RhdGVNYW5hZ2VyID0gbmV3IFN0YXRlTWFuYWdlcigpO1xuXHRkYXRhVHlwZU1hbmFnZXIgPSBuZXcgRGF0YVR5cGVNYW5hZ2VyKCk7XG5cdGVsZW1lbnRzTWFuYWdlciA6IEVsZW1lbnRzTWFuYWdlcjtcblx0aGlzdG9yeVN0YXRlTWFuYWdlciA9IG5ldyBIaXN0b3J5U3RhdGVNYW5hZ2VyKCk7XG5cdGdlb2NvZGluZ01hbmFnZXIgOiBHZW9jb2RpbmdNYW5hZ2VyO1xuXHRtYXBNYW5hZ2VyIDogTWFwTWFuYWdlcjtcblx0XG5cdGdlb2NvZGVyID0gbmV3IEdlb2NvZGVyTW9kdWxlKCk7XG5cdGZpbHRlck1vZHVsZSA9IG5ldyBGaWx0ZXJNb2R1bGUoKTtcblx0ZmlsdGVyUm91dGluZ01vZHVsZSA9IG5ldyBGaWx0ZXJSb3V0aW5nTW9kdWxlKCk7XG5cdGVsZW1lbnRzTW9kdWxlID0gbmV3IEVsZW1lbnRzTW9kdWxlKCk7XG5cdGVsZW1lbnRzSnNvbk1vZHVsZSA9IG5ldyBFbGVtZW50c0pzb25Nb2R1bGUoKTtcblx0ZGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZSA9IG5ldyBEaXNwbGF5RWxlbWVudEFsb25lTW9kdWxlKCk7XG5cdGFqYXhNb2R1bGUgPSBuZXcgQWpheE1vZHVsZSgpO1xuXHRib3VuZHNNb2R1bGUgOiBCb3VuZHNNb2R1bGU7XG5cdHJvdXRlck1vZHVsZSA9IG5ldyBSb3V0ZXJNb2R1bGUoKTtcblx0dGVtcGxhdGVNb2R1bGUgPSBuZXcgVGVtcGxhdGVNb2R1bGUoKTtcblx0bG9naW5Nb2R1bGUgOiBMb2dpbk1vZHVsZTtcdFxuXHRoaXN0b3J5TW9kdWxlID0gbmV3IEhpc3RvcnlNb2R1bGUoKTtcblx0dGF4b25vbXlNb2R1bGUgPSBuZXcgVGF4b25vbXlNb2R1bGUoKTtcblx0dGF4b25vbXlTa29zTW9kdWxlID0gbmV3IFRheG9ub215U2tvc01vZHVsZSgpO1xuXHRkb2N1bWVudFRpdGxlTW9kdWxlID0gbmV3IERvY3VtZW50VGl0bGVNb2R1bGUoKTtcblx0ZWxlbWVudEpzb25QYXJzZXIgPSBuZXcgRWxlbWVudEpzb25QYXJzZXJNb2R1bGUoKTtcblx0ZWxlbWVudEZvcm1hdGVyTW9kdWxlID0gbmV3IEVsZW1lbnRGb3JtYXRlck1vZHVsZSgpO1xuXHRlbGVtZW50RGlmZk1vZHVsZSA9IG5ldyBFbGVtZW50RGlmZk1vZHVsZSgpO1xuXHRlbGVtZW50SWNvbnNNb2R1bGUgPSBuZXcgRWxlbWVudEljb25zTW9kdWxlKCk7XG5cdGVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUgPSBuZXcgRWxlbWVudE9wdGlvblZhbHVlc01vZHVsZSgpO1xuXHRmYXZvcml0ZU1vZHVsZSA9IG5ldyBGYXZvcml0ZU1vZHVsZSgpO1xuXHRzdGFtcE1vZHVsZSA6IFN0YW1wTW9kdWxlO1xuXG5cdGNvbXBvbmVudCA6IEFwcENvbXBvbmVudDtcblx0aW5mb0JhckNvbXBvbmVudCA9IG5ldyBJbmZvQmFyQ29tcG9uZW50KCk7XG5cdG1hcENvbXBvbmVudCAgPSBuZXcgTWFwQ29tcG9uZW50KCk7XG5cdHNlYXJjaEJhckNvbXBvbmVudCA9IG5ldyBTZWFyY2hCYXJDb21wb25lbnQoKTtcblx0ZWxlbWVudExpc3RDb21wb25lbnQgPSBuZXcgRWxlbWVudExpc3RDb21wb25lbnQoKTtcblx0ZGlyZWN0b3J5TWVudUNvbXBvbmVudCA9IG5ldyBEaXJlY3RvcnlNZW51Q29tcG9uZW50KCk7XG5cdGZpbHRlcnNDb21wb25lbnQgPSBuZXcgRmlsdGVyc0NvbXBvbmVudCgpO1x0XG5cdGdvZ29Db250cm9sQ29tcG9uZW50ID0gbmV3IEdvR29Db250cm9sQ29tcG9uZW50KCk7XHRcblx0ZGlyZWN0aW9uc0NvbXBvbmVudCA9IG5ldyBEaXJlY3Rpb25zQ29tcG9uZW50KCk7XG5cdG1hcENvbnRyb2xzQ29tcG9uZW50ID0gbmV3IE1hcENvbnRyb2xzQ29tcG9uZW50KCk7XG5cdGN1c3RvbVBvcHVwQ29tcG9uZW50ID0gbmV3IEN1c3RvbVBvcHVwQ29tcG9uZW50KCk7XG5cblx0cGlja0FkZHJlc3NDb21wb25lbnQgOiBQaWNrQWRkcmVzc0NvbXBvbmVudDtcblx0dm90ZUNvbXBvbmVudCA6IFZvdGVDb21wb25lbnQ7XG5cdHJlcG9ydENvbXBvbmVudCA6IFJlcG9ydENvbXBvbmVudDtcblx0ZGVsZXRlQ29tcG9uZW50IDogRGVsZXRlQ29tcG9uZW50O1xuXHRzZW5kRW1haWxDb21wb25lbnQgOiBTZW5kRW1haWxDb21wb25lbnQ7XG5cdFxuXHRjb25zdHJ1Y3RvcigkY29uZmlnIDogYW55LCAkaXNJZnJhbWUgPSBmYWxzZSwgJGxvYWRGdWxsVGF4b25vbXkgPSB0cnVlLCAkcmVxdWVzdCA9IHt9KVxuXHR7XG5cdFx0dGhpcy5jb25maWcgPSBuZXcgR29Hb0NvbmZpZygkY29uZmlnKTtcblx0XHR0aGlzLmlzSWZyYW1lID0gJGlzSWZyYW1lO1xuXHRcdHRoaXMubG9hZEZ1bGxUYXhvbm9teSA9ICRsb2FkRnVsbFRheG9ub215O1xuXHRcdHRoaXMucmVxdWVzdCA9ICRyZXF1ZXN0O1xuXHRcdFxuXHRcdHRoaXMubG9naW5Nb2R1bGUgPSBuZXcgTG9naW5Nb2R1bGUodGhpcy5jb25maWcuc2VjdXJpdHkudXNlclJvbGVzLCB0aGlzLmNvbmZpZy5zZWN1cml0eS51c2VyRW1haWwpO1xuXHQgIFx0dGhpcy5ib3VuZHNNb2R1bGUgPSBuZXcgQm91bmRzTW9kdWxlKHRoaXMuY29uZmlnKTsgIFx0XG5cdCAgXHR0aGlzLnN0YW1wTW9kdWxlID0gbmV3IFN0YW1wTW9kdWxlKHRoaXMuY29uZmlnKTtcblxuXHRcdENvb2tpZXMuY3JlYXRlQ29va2llKCdmaXJzdFZpc2l0JywgJ2RvbmUnKTtcdFx0XHRcblx0fVxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0dGhpcy5jb21wb25lbnQgPSBuZXcgQXBwQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5lbGVtZW50c01hbmFnZXIgPSBuZXcgRWxlbWVudHNNYW5hZ2VyKCk7XG5cdFx0dGhpcy5nZW9jb2RpbmdNYW5hZ2VyID0gbmV3IEdlb2NvZGluZ01hbmFnZXIoKTtcblx0XHR0aGlzLm1hcE1hbmFnZXIgPSBuZXcgTWFwTWFuYWdlcigpO1xuXG5cdFx0Ly8gaW50aWFsaXplIG1vZGFscyBjb21wb25lbnQgKHRlbXBsYXRlIGFzIGJlZW4gY3JlYXRlZCBhZnRlciBBcHBNb2R1bGUpXG5cdFx0dGhpcy5waWNrQWRkcmVzc0NvbXBvbmVudCA9IG5ldyBQaWNrQWRkcmVzc0NvbXBvbmVudCgpO1xuXHRcdHRoaXMudm90ZUNvbXBvbmVudCA9IG5ldyBWb3RlQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5yZXBvcnRDb21wb25lbnQgPSBuZXcgUmVwb3J0Q29tcG9uZW50KCk7XG5cdFx0dGhpcy5kZWxldGVDb21wb25lbnQgPSBuZXcgRGVsZXRlQ29tcG9uZW50KCk7XG5cdFx0dGhpcy5zZW5kRW1haWxDb21wb25lbnQgPSBuZXcgU2VuZEVtYWlsQ29tcG9uZW50KCk7XHRcblx0fVxuXG5cdC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyBHZXR0ZXJzICYgU2V0dGVycyBTaG9ydGN1dHNcblx0Ly8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0bWFwKCkgOiBMLk1hcCB7IHJldHVybiB0aGlzLm1hcENvbXBvbmVudD8gdGhpcy5tYXBDb21wb25lbnQuZ2V0TWFwKCkgOiBudWxsOyB9O1xuXG5cdGVsZW1lbnRzKCkgeyByZXR1cm4gdGhpcy5lbGVtZW50c01vZHVsZS5jdXJyVmlzaWJsZUVsZW1lbnRzKCk7ICB9O1xuXG5cdGVsZW1lbnRCeUlkKGlkKSB7IHJldHVybiB0aGlzLmVsZW1lbnRzTW9kdWxlLmdldEVsZW1lbnRCeUlkKGlkKTsgIH07XG5cblx0Z2V0IERFQU1vZHVsZSgpIHsgcmV0dXJuIHRoaXMuZGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZTsgfVxuXG5cdGdldCBjdXJyTWFpbklkKCkgeyByZXR1cm4gdGhpcy5maWx0ZXJzQ29tcG9uZW50LmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQ7IH1cblxuXHRnZXQgc3RhdGUoKSB7IHJldHVybiB0aGlzLnN0YXRlTWFuYWdlci5zdGF0ZTsgfVxuXG5cdHNldFN0YXRlKCRuZXdTdGF0ZSA6IEFwcFN0YXRlcywgJG9wdGlvbnMgOiBhbnkgPSB7fSwgJGJhY2tGcm9tSGlzdG9yeSA6IGJvb2xlYW4gPSBmYWxzZSkgIHsgdGhpcy5zdGF0ZU1hbmFnZXIuc2V0U3RhdGUoJG5ld1N0YXRlLCAkb3B0aW9ucywgJGJhY2tGcm9tSGlzdG9yeSl9XG5cblx0Z2V0IG1vZGUoKSB7IHJldHVybiB0aGlzLm1vZGVNYW5hZ2VyLm1vZGU7IH1cblxuXHRzZXRNb2RlKCRtb2RlIDogQXBwTW9kZXMsICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UsICR1cGRhdGVUaXRsZUFuZFN0YXRlID0gdHJ1ZSkgeyB0aGlzLm1vZGVNYW5hZ2VyLnNldE1vZGUoJG1vZGUsICRiYWNrRnJvbUhpc3RvcnksICR1cGRhdGVUaXRsZUFuZFN0YXRlKTsgfVxuXG5cdGdldCBkYXRhVHlwZSgpIHsgcmV0dXJuIHRoaXMuZGF0YVR5cGVNYW5hZ2VyLmRhdGFUeXBlOyB9XG5cblx0c2V0RGF0YVR5cGUoJGRhdGFUeXBlIDogQXBwRGF0YVR5cGUsICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UsICRzZWFyY2hSZXN1bHQgPSBudWxsKSB7IHRoaXMuZGF0YVR5cGVNYW5hZ2VyLnNldERhdGFUeXBlKCRkYXRhVHlwZSwgJGJhY2tGcm9tSGlzdG9yeSwgJHNlYXJjaFJlc3VsdCk7IH1cbn0iLCJleHBvcnQgeyBDYXRlZ29yeSB9IGZyb20gXCIuL3RheG9ub215L2NhdGVnb3J5LmNsYXNzXCI7XG5leHBvcnQgeyBFbGVtZW50LCBFbGVtZW50U3RhdHVzLCBFbGVtZW50TW9kZXJhdGlvblN0YXRlIH0gZnJvbSBcIi4vZWxlbWVudC9lbGVtZW50LmNsYXNzXCI7XG5leHBvcnQgeyBFbGVtZW50QmFzZSB9IGZyb20gXCIuL2VsZW1lbnQvZWxlbWVudC1iYXNlLmNsYXNzXCI7XG5leHBvcnQgeyBPcHRpb24gfSBmcm9tIFwiLi90YXhvbm9teS9vcHRpb24uY2xhc3NcIjtcbmV4cG9ydCB7IE9wdGlvblZhbHVlIH0gZnJvbSBcIi4vZWxlbWVudC9vcHRpb24tdmFsdWUuY2xhc3NcIjtcbmV4cG9ydCB7IENhdGVnb3J5VmFsdWUgfSBmcm9tIFwiLi9lbGVtZW50L2NhdGVnb3J5LXZhbHVlLmNsYXNzXCI7XG5leHBvcnQgeyBWb3RlUmVwb3J0IH0gZnJvbSBcIi4vZWxlbWVudC92b3RlLXJlcG9ydC5jbGFzc1wiO1xuZXhwb3J0IHsgQ29udHJpYnV0aW9uIH0gZnJvbSBcIi4vZWxlbWVudC9jb250cmlidXRpb24uY2xhc3NcIjtcbmV4cG9ydCB7IEhpc3RvcnlTdGF0ZSB9IGZyb20gXCIuL2hpc3Rvcnktc3RhdGUuY2xhc3NcIjtcbmV4cG9ydCB7IFZpZXdQb3J0IH0gZnJvbSBcIi4vbWFwL3ZpZXdwb3J0LmNsYXNzXCI7XG5leHBvcnQgeyBFdmVudCB9IGZyb20gXCIuL2V2ZW50LmNsYXNzXCI7XG5leHBvcnQgeyBQb3N0YWxBZGRyZXNzIH0gZnJvbSAnLi9lbGVtZW50L3Bvc3RhbC1hZGRyZXNzLmNsYXNzJztcbmV4cG9ydCB7IFN0YW1wIH0gZnJvbSAnLi9lbGVtZW50L3N0YW1wLmNsYXNzJztcbmV4cG9ydCB7IEVsZW1lbnRVcmwgfSBmcm9tICcuL2VsZW1lbnQvZWxlbWVudC11cmwuY2xhc3MnO1xuIiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgVGlsZUxheWVyIH0gZnJvbSAnLi4vbWFwL3RpbGUtbGF5ZXIuY2xhc3MnO1xuaW1wb3J0IHsgR29Hb0ZlYXR1cmUgfSBmcm9tICcuL2dvZ28tZmVhdHVyZS5jbGFzcyc7XG5pbXBvcnQgeyBFbGVtZW50U3RhdHVzIH0gZnJvbSAnLi4vY2xhc3Nlcyc7IFxuaW1wb3J0IHsgREVGQVVMVF9GRUFUVVJFUyB9IGZyb20gJy4vZ29nby1kZWZhdWx0LWZlYXR1cmUnIDtcbmRlY2xhcmUgdmFyIEwgOiBhbnk7XG5kZWNsYXJlIHZhciBjb21tb25tYXJrO1xuXG5leHBvcnQgY2xhc3MgR29Hb0NvbmZpZ1xue1xuICByZWFkb25seSB0ZXh0ID1cbiAge1xuICAgIGVsZW1lbnQ6ICfDqWzDqW1lbnQnLFxuICAgIGVsZW1lbnREZWZpbml0ZTogXCJsJ8OpbMOpbWVudFwiLFxuICAgIGVsZW1lbnRJbmRlZmluaXRlOiBcInVuIMOpbMOpbWVudFwiLFxuICAgIGVsZW1lbnRQbHVyYWw6ICfDqWzDqW1lbnRzJyxcbiAgICBjb2xsYWJvcmF0aXZlTW9kZXJhdGlvbjogYDxwPlxuICAgICAgICBMb3JzcXUndW4gw6lsw6ltZW50IGVzdCBham91dMOpIG91IG1vZGlmacOpLCBsYSBtaXNlIMOgIGpvdXIgZGVzIGRvbm7DqWVzIG4nZXN0IHBhcyBpbnN0YW50YW7DqWUuIEwnw6lsw6ltZW50IHZhIGQnYWJvcmRzIGFwcGFyYcOudHJlIFwiZ3Jpc8OpXCIgc3VyIGxhIGNhcnRlLFxuICAgICAgICBldCBpbCBzZXJhIGFsb3JzIHBvc3NpYmxlIMOgIHRvdXMgbGVzIHV0aWxpc2F0ZXVycyBsb2d1w6kgZGUgdm90ZXIgdW5lIGV0IHVuZSBzZXVsZSBmb2lzIHBvdXIgY2V0IMOpbMOpbWVudC4gXG4gICAgICAgIENlIHZvdGUgbidlc3QgcGFzIHVuZSBvcGluaW9uLCBtYWlzIHVuIHBhcnRhZ2UgZGUgY29ubmFpc3NhbmNlLiBcbiAgICAgICAgU2kgdm91cyBjb25uYWlzc2V6IGNldCDDqWzDqW1lbnQsIG91IHNhdmV6IHF1ZSBjZXQgw6lsw6ltZW50IG4nZXhpc3RlIHBhcywgYWxvcnMgdm90cmUgc2F2b2lyIG5vdXMgaW50w6lyZXNzZSAhXG4gICAgICA8L3A+IFxuICAgICAgPHA+XG4gICAgICAgIEF1IGJvdXQgZCd1biBjZXJ0YWluIG5vbWJyZSBkZSB2b3RlcywgbCfDqWzDqW1lbnQgcG91cnJhIGFsb3JzIMOqdHJlIGF1dG9tYXRpcXVlbWVudCB2YWxpZMOpIG91IHJlZnVzw6kuIFxuICAgICAgICBFbiBjYXMgZGUgbGl0aWdlIChkZXMgdm90ZXMgw6AgbGEgZm9pcyBwb3NpdGlmcyBldCBuw6lnYXRpZnMpLCB1biBtb2TDqXJhdGV1ciBpbnRlcnZpZW5kcmEgYXUgcGx1cyB2aXRlLiBPbiBjb21wdGUgc3VyIHZvdXMhXG4gICAgICA8L3A+YFxuICB9O1xuICByZWFkb25seSBkYXRhID1cbiAge1xuICAgIHRheG9ub215OiB1bmRlZmluZWQsXG4gICAgZWxlbWVudHM6IHVuZGVmaW5lZCxcbiAgICBlbGVtZW50c0NvbXBhY3RBcGlVcmw6IHVuZGVmaW5lZCxcbiAgICBlbGVtZW50QnlJZFVybDogdW5kZWZpbmVkLFxuICAgIHJlcXVlc3RCeUJvdW5kczogZmFsc2UsXG4gICAgcmV0cmlldmVFbGVtZW50c0J5QXBpOiBmYWxzZSxcbiAgICBzaG93UGVuZGluZzogdHJ1ZSxcbiAgfTtcbiAgcmVhZG9ubHkgbWVudSA9XG4gIHtcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIHNtYWxsV2lkdGhTdHlsZTogZmFsc2UsXG4gICAgc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uOiBmYWxzZSxcbiAgICBzaG93Q2hlY2tib3hGb3JNYWluRmlsdGVyUGFuZTogdHJ1ZSxcbiAgICBzaG93Q2hlY2tib3hGb3JTdWJGaWx0ZXJQYW5lOiB0cnVlLCAgICBcbiAgfTtcbiAgcmVhZG9ubHkgaW5mb2JhciA9XG4gIHtcbiAgICB3aWR0aDogdW5kZWZpbmVkLFxuICAgIGFjdGl2YXRlOiB0cnVlLFxuICAgIGJvZHlUZW1wbGF0ZTogdW5kZWZpbmVkXG4gIH07XG4gIHJlYWRvbmx5IGdlbmVyYWwgPVxuICB7XG4gICAgYWN0aXZhdGVIaXN0b3J5U3RhdGVBbmRSb3V0aW5nOiB0cnVlXG4gIH07XG4gIHJlYWRvbmx5IG1hcCA9XG4gIHtcbiAgICAvLyBmcmFuY2VcbiAgICBkZWZhdWx0Qm91bmRzIDogTC5sYXRMbmdCb3VuZHMoTC5sYXRMbmcoNTIsIDEwKSwgTC5sYXRMbmcoNDAsIC01KSksXG4gICAgZGVmYXVsdEJvdW5kc1Byb3ZpZGVkIDogZmFsc2UsXG4gICAgZGVmYXVsdENlbnRlciA6IEwubGF0TG5nKDQ2LCAwKSxcbiAgICBtYXhCb3VuZHMgOiBMLmxhdExuZ0JvdW5kcyhMLmxhdExuZygtOTAsIC0xODApLCBMLmxhdExuZyg5MCwgMTgwKSksXG4gICAgc2F2ZVZpZXdwb3J0SW5Db29raWVzIDogZmFsc2UsXG4gICAgc2F2ZVRpbGVMYXllckluQ29va2llcyA6IGZhbHNlLFxuICAgIGRlZmF1bHRUaWxlTGF5ZXIgOiAnY2FydG9kYicsXG4gICAgdGlsZUxheWVycyA6IFtcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ21hcGJveCcsICdodHRwczovL2FwaS5tYXBib3guY29tL3N0eWxlcy92MS9tYXBib3gvc3RyZWV0cy12MTAvdGlsZXMvMjU2L3t6fS97eH0ve3l9P2FjY2Vzc190b2tlbj1way5leUoxSWpvaWMyVmlZV3hzYjNRaUxDSmhJam9pWTJsNE1HdG5lR1ZqTURGMGFESjZjV050ZFdGdmMyWTNZU0o5Lm5JWnI2RzJ0MDhldE16ZnRfQkhIVVEnKSxcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ21hcGJveGxpZ2h0JywgJ2h0dHBzOi8vYXBpLm1hcGJveC5jb20vc3R5bGVzL3YxL21hcGJveC9saWdodC12OS90aWxlcy8yNTYve3p9L3t4fS97eX0/YWNjZXNzX3Rva2VuPXBrLmV5SjFJam9pYzJWaVlXeHNiM1FpTENKaElqb2lZMmw0TUd0bmVHVmpNREYwYURKNmNXTnRkV0Z2YzJZM1lTSjkubklacjZHMnQwOGV0TXpmdF9CSEhVUScpLFxuICAgICAgbmV3IFRpbGVMYXllcignY2FydG9kYicsICdodHRwczovL2NhcnRvZGItYmFzZW1hcHMte3N9Lmdsb2JhbC5zc2wuZmFzdGx5Lm5ldC9saWdodF9hbGwve3p9L3t4fS97eX0ucG5nJyksIFxuICAgICAgbmV3IFRpbGVMYXllcignaHlkZGEnLCAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLnNlL2h5ZGRhL2Z1bGwve3p9L3t4fS97eX0ucG5nJyksIFxuICAgICAgbmV3IFRpbGVMYXllcignd2lraW1lZGlhJywgJ2h0dHBzOi8vbWFwcy53aWtpbWVkaWEub3JnL29zbS1pbnRsL3t6fS97eH0ve3l9LnBuZycpLCBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ21vbm9jaHJvbWUnLCAnaHR0cHM6Ly93d3cudG9vbHNlcnZlci5vcmcvdGlsZXMvYnctbWFwbmlrL3t6fS97eH0ve3l9LnBuZycpLCBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ2x5cmsgJywgJ2h0dHBzOi8vdGlsZXMubHlyay5vcmcvbHMve3p9L3t4fS97eX0/YXBpa2V5ID05ODJjODJjYzc2NWY0MmNmOTUwYTU3ZGUwZDg5MTA3NicpLCBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ29zbWZyJywgJ2h0dHBzOi8ve3N9LnRpbGUub3BlbnN0cmVldG1hcC5mci9vc21mci97en0ve3h9L3t5fS5wbmcnKSxcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ3N0YW1lbicsICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90b25lci1saXRlL3t6fS97eH0ve3l9LnBuZycpLFxuICAgICAgbmV3IFRpbGVMYXllcignc3RhbWVuVGVycmFpbicsICdodHRwczovL3N0YW1lbi10aWxlcy17c30uYS5zc2wuZmFzdGx5Lm5ldC90ZXJyYWluL3t6fS97eH0ve3l9LnBuZycpLCAgICBcbiAgICAgIG5ldyBUaWxlTGF5ZXIoJ3N0YW1lbldhdGVyQ29sb3InLCAnaHR0cHM6Ly9zdGFtZW4tdGlsZXMte3N9LmEuc3NsLmZhc3RseS5uZXQvd2F0ZXJjb2xvci97en0ve3h9L3t5fS5wbmcnKSwgICAgXG4gICAgICBuZXcgVGlsZUxheWVyKCdvcGVucml2ZXInLCAnaHR0cHM6Ly97c30udGlsZS5vcGVuc3RyZWV0bWFwLmZyL29wZW5yaXZlcmJvYXRtYXAve3p9L3t4fS97eX0ucG5nJyksXG4gICAgICBuZXcgVGlsZUxheWVyKCd0aHVuZGVyZm9yZXN0JywgJ2h0dHBzOi8ve3N9LnRpbGUudGh1bmRlcmZvcmVzdC5jb20vb3V0ZG9vcnMve3p9L3t4fS97eX0ucG5nJyksXG4gICAgICBuZXcgVGlsZUxheWVyKCdQYXMgZGUgZm9uZCcsICcnKSBdXG4gIH07XG4gIHJlYWRvbmx5IGZlYXR1cmVzID1cbiAge1xuICAgIC8vIGVsZW1lbnQgbWVudVxuICAgIGZhdm9yaXRlOiAgICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBzaGFyZTogICAgICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgZGlyZWN0aW9uczogICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuXG4gICAgLy8gZWxlbWVudCBjb250ZW50XG4gICAgc2VuZE1haWw6ICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIGVsZW1lbnRIaXN0b3J5OiBuZXcgR29Hb0ZlYXR1cmUoKSxcblxuICAgIC8vIGdvZ28gY29udHJvbHNcbiAgICBsaXN0TW9kZTogbmV3IEdvR29GZWF0dXJlKCksXG5cbiAgICAvLyBtYXAgY29udHJvbHNcbiAgICBleHBvcnQ6ICAgICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLFxuICAgIGxheWVyczogICAgICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgbWFwZGVmYXVsdHZpZXc6ICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBcbiAgICBwZW5kaW5nOiAgICBuZXcgR29Hb0ZlYXR1cmUoKSwgICAgXG4gICAgc2VhcmNoUGxhY2U6ICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgc2VhcmNoRWxlbWVudHM6ICAgbmV3IEdvR29GZWF0dXJlKCksXG4gICAgc2VhcmNoR2VvbG9jYXRlOiAgbmV3IEdvR29GZWF0dXJlKCksXG5cbiAgICAvLyBlbGVtZW50IGludGVyYWN0aW9uIC8gbW9kZXJhdGlvblxuICAgIGVkaXQ6ICAgICAgIG5ldyBHb0dvRmVhdHVyZSgpLCAgICAgICAgICBcbiAgICBkZWxldGU6ICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICByZXBvcnQ6ICAgICBuZXcgR29Hb0ZlYXR1cmUoKSwgICAgICBcbiAgICB2b3RlOiAgICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBtb2RlcmF0aW9uOiBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBzdGFtcDogICAgICBuZXcgR29Hb0ZlYXR1cmUoKSxcbiAgICBkaXJlY3RNb2RlcmF0aW9uOiAgICAgICAgbmV3IEdvR29GZWF0dXJlKCksXG5cbiAgICAvLyBvdGhlcnNcbiAgICBjdXN0b21Qb3B1cDogbmV3IEdvR29GZWF0dXJlKCksXG4gIH07XG4gIHJlYWRvbmx5IHNlY3VyaXR5ID1cbiAge1xuICAgIHVzZXJSb2xlczogWydhbm9ueW1vdXMnXSxcbiAgICB1c2VyRW1haWw6ICcnLFxuICAgIGxvZ2luQWN0aW9uOiBmdW5jdGlvbigpIHsgY29uc29sZS53YXJuKFwiW0dvR29DYXJ0b10gWW91IG5lZWQgbG9naW4gdG8gYWNjZXNzIHRoaXMgZmVhdHVyZVwiKTsgfSxcblxuICAgIGhpZGVNYWlsc0J5U2hvd2luZ1NlbmRNYWlsQnV0dG9uOiB0cnVlLFxuICB9O1xuXG4gIHJlYWRvbmx5IHRoZW1lID0gJ2RlZmF1bHQnO1xuICAvLyBzZWUgZ29nby1zdHlsZXMgZm9yIGRlZmF1dCB2YWx1ZXNcbiAgcmVhZG9ubHkgY29sb3JzID1cbiAge1xuICAgIG5ldXRyYWxEYXJrOiB1bmRlZmluZWQgLFxuICAgIG5ldXRyYWxEYXJrVHJhbnNwYXJlbnQ6IHVuZGVmaW5lZCAsXG4gICAgbmV1dHJhbFNvZnREYXJrOiB1bmRlZmluZWQgLFxuICAgIG5ldXRyYWw6IHVuZGVmaW5lZCAsXG4gICAgbmV1dHJhbExpZ2h0OiB1bmRlZmluZWQgLFxuICAgIHNlY29uZGFyeTogdW5kZWZpbmVkICxcbiAgICBwcmltYXJ5OiB1bmRlZmluZWQgLFxuICAgIGJhY2tncm91bmQ6IHVuZGVmaW5lZCAsXG5cbiAgICB0ZXh0Q29sb3I6IHVuZGVmaW5lZCAsXG4gICAgZGlzYWJsZUNvbG9yOiB1bmRlZmluZWQgLFxuICAgIGxpc3RUaXRsZTogdW5kZWZpbmVkICxcbiAgICBsaXN0VGl0bGVCYWNrQnRuOiB1bmRlZmluZWQsXG4gICAgbGlzdFRpdGxlQmFja2dyb3VuZDogdW5kZWZpbmVkICxcbiAgICBzZWFyY2hCYXI6IHVuZGVmaW5lZCwgXG4gICAgaW50ZXJhY3RpdmVTZWN0aW9uOiB1bmRlZmluZWQsXG5cbiAgICBtYWluRm9udDogdW5kZWZpbmVkICxcbiAgICB0aXRsZUZvbnQ6IHVuZGVmaW5lZCAsXG4gICAgdGF4b25vbXlNYWluVGl0bGVGb250OiB1bmRlZmluZWQgLCAgICAgXG4gIH1cblxuICByZWFkb25seSBpbWFnZXMgPVxuICB7XG4gICAgYnV0dG9uT3Blbk1lbnU6IHVuZGVmaW5lZCxcbiAgICBtZW51VG9wSW1hZ2U6IHVuZGVmaW5lZFxuICB9XG5cblx0Y29uc3RydWN0b3IoY29uZmlnIDogYW55KVxuXHR7XG4gICAgaWYgKCFjb25maWcuZmVhdHVyZXMpIGNvbmZpZy5mZWF0dXJlcyA9IERFRkFVTFRfRkVBVFVSRVM7XG4gICAgLy8gQ29weSBhbGwgdGhlIGRlZmluZWQgb3B0aW9uc1xuICAgIC8vIEFsbCB0aGUgb3B0aW9ucyBub24gc3BlY2lmaWVkIHdpbGwgYmUgaW5pdGlhbGl6ZWQgd2l0aCBkZWZhdWx0IHZhbHVlc1xuICAgIHRoaXMucmVjdXJzaXZlRmlsbFByb3BlcnR5KHRoaXMsIGNvbmZpZyk7XG4gICAgdGhpcy5kYXRhLnJldHJpZXZlRWxlbWVudHNCeUFwaSA9IHR5cGVvZiB0aGlzLmRhdGEuZWxlbWVudHMgPT0gXCJzdHJpbmdcIjtcbiAgICBpZiAoY29uZmlnLm1hcCAmJiBjb25maWcubWFwLmRlZmF1bHRCb3VuZHMpIHRoaXMubWFwLmRlZmF1bHRCb3VuZHNQcm92aWRlZCA9IHRydWU7XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzWydzZW5kTWFpbCddLmFjdGl2ZSkgdGhpcy5zZWN1cml0eS5oaWRlTWFpbHNCeVNob3dpbmdTZW5kTWFpbEJ1dHRvbiA9IGZhbHNlO1xuICAgIGNvbnNvbGUubG9nKHRoaXMpO1xuXHR9XG4gIFxuICBpc0ZlYXR1cmVBY3RpdmF0ZWQoZmVhdHVyZU5hbWUpIDogYm9vbGVhblxuICB7XG4gICAgaWYgKCF0aGlzLmZlYXR1cmVzLmhhc093blByb3BlcnR5KGZlYXR1cmVOYW1lKSkgeyBjb25zb2xlLndhcm4oYFtHb0dvQ2FydG9Kc10gZmVhdHVyZSAke2ZlYXR1cmVOYW1lfSBkb2Vzbid0IGV4aXN0YCk7IHJldHVybiBmYWxzZTsgfVxuXG4gICAgcmV0dXJuIHRoaXMuZmVhdHVyZXNbZmVhdHVyZU5hbWVdLmFjdGl2ZSAmJiAoIUFwcC5pc0lmcmFtZSB8fCB0aGlzLmZlYXR1cmVzW2ZlYXR1cmVOYW1lXS5pbklmcmFtZSk7XG4gIH1cblxuICAvLyBpcyBmZWF0dXJlIGlzIGFjdGl2YXRlZCBhbmQgdGhlIGFjdHVhbCB1c2VyIGlzIGdyYW50ZWQgdG8gdXNlIGl0XG4gIGlzRmVhdHVyZUF2YWlsYWJsZShmZWF0dXJlTmFtZSkgOiBib29sZWFuXG4gIHtcbiAgICBpZiAoIXRoaXMuZmVhdHVyZXMuaGFzT3duUHJvcGVydHkoZmVhdHVyZU5hbWUpKSB7IGNvbnNvbGUud2FybihgW0dvR29DYXJ0b0pzXSBmZWF0dXJlICR7ZmVhdHVyZU5hbWV9IGRvZXNuJ3QgZXhpc3RgKTsgcmV0dXJuIGZhbHNlOyB9XG5cbiAgICBsZXQgZmVhdHVyZSA9IHRoaXMuZmVhdHVyZXNbZmVhdHVyZU5hbWVdO1xuXG4gICAgbGV0IHJvbGVQcm92aWRlZCA9IHRydWU7XG4gICAgaWYgKGZlYXR1cmUuaGFzT3duUHJvcGVydHkoJ3JvbGVzJykpXG4gICAge1xuICAgICAgcm9sZVByb3ZpZGVkID0gZmVhdHVyZS5oYXNSb2xlKEFwcC5sb2dpbk1vZHVsZS5nZXRSb2xlcygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5pc0ZlYXR1cmVBY3RpdmF0ZWQoZmVhdHVyZU5hbWUpICYmIHJvbGVQcm92aWRlZDtcbiAgfSBcblxuICBwcml2YXRlIHJlY3Vyc2l2ZUZpbGxQcm9wZXJ0eSh0aGF0LCBvYmplY3QpXG4gIHtcbiAgICAvLyB3ZSBkb24ndCB3YW50IHRvIGFwcGx5IHJlY3Vyc2l2ZWx5IGluc2lkZSBvYmplY3RzIHByb3BlcnRpZXNcbiAgICBsZXQgb2JqZWN0c1Byb3BlcnRpZXMgPSBbJ3JvbGVzJywgJ2RlZmF1bHRDZW50ZXInLCAnZGVmYXVsdEJvdW5kcycsICd0aWxlTGF5ZXJzJywgJ29wdGlvbnMnXTtcblxuICAgIC8vIGlmIHdlIHByb3ZpZGUgZmVhdHVyZSBjb25maWcsIHdlIGVuYWJsZSBpdCBhdXRvbWF0aWNhbGx5XG4gICAgaWYgKHRoYXQgaW5zdGFuY2VvZiBHb0dvRmVhdHVyZSkgdGhhdC5hY3RpdmUgPSB0cnVlO1xuXG4gICAgZm9yKHZhciBwcm9wIGluIG9iamVjdCkgXG4gICAge1xuICAgICAgICBpZiAodGhhdC5oYXNPd25Qcm9wZXJ0eShwcm9wKSlcbiAgICAgICAge1xuICAgICAgICAgIGlmICh0eXBlb2YgdGhhdFtwcm9wXSAhPSAnb2JqZWN0JyB8fCBvYmplY3RzUHJvcGVydGllcy5pbmRleE9mKHByb3ApID4gLTEpXG4gICAgICAgICAge1xuICAgICAgICAgICAgbGV0IG5ld19wcm9wO1xuICAgICAgICAgICAgc3dpdGNoKHByb3ApIHtcbiAgICAgICAgICAgICAgY2FzZSAnZGVmYXVsdEJvdW5kcycgOiBuZXdfcHJvcCA9IEwubGF0TG5nQm91bmRzKG9iamVjdFtwcm9wXSk7YnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgJ2RlZmF1bHRDZW50ZXInIDogbmV3X3Byb3AgPSBMLmxhdExuZyhvYmplY3RbcHJvcF0pO2JyZWFrO1xuICAgICAgICAgICAgICBjYXNlICdib2R5VGVtcGxhdGUnOiBcbiAgICAgICAgICAgICAgICBsZXQgcGFyc2VyID0gbmV3IGNvbW1vbm1hcmsuUGFyc2VyKClcbiAgICAgICAgICAgICAgICBsZXQgaHRtbFJlbmRlcmVyID0gbmV3IGNvbW1vbm1hcmsuSHRtbFJlbmRlcmVyKCk7XG4gICAgICAgICAgICAgICAgbmV3X3Byb3AgPSBodG1sUmVuZGVyZXIucmVuZGVyKHBhcnNlci5wYXJzZShvYmplY3RbcHJvcF0pKTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgZGVmYXVsdDogbmV3X3Byb3AgPSBvYmplY3RbcHJvcF07YnJlYWs7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGF0W3Byb3BdID0gbmV3X3Byb3A7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVsc2UgICAgICAgICAgICBcbiAgICAgICAgICAgIHRoaXMucmVjdXJzaXZlRmlsbFByb3BlcnR5KHRoYXRbcHJvcF0sIG9iamVjdFtwcm9wXSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgY29uc29sZS53YXJuKFwiW0dvR29DYXJ0b10gQ29uZmlnIG9wdGlvbiAnXCIgKyBwcm9wICsgXCInIGRvZXMgbm90IGV4aXN0XCIpO1xuICAgICAgICB9XG4gICAgfVxuICB9XG5cbn0iLCJleHBvcnQgY29uc3QgREVGQVVMVF9GRUFUVVJFUyA9IHtcbiAgbGlzdE1vZGU6IHt9LFxuICBzZWFyY2hQbGFjZTogeyB9LFxuICBzZWFyY2hHZW9sb2NhdGU6IHt9LFxuICBmYXZvcml0ZToge30sXG4gIHNoYXJlOiB7fSxcbiAgZGlyZWN0aW9uczoge30sICAgICAgICAgICBcbiAgbGF5ZXJzOiB7fSxcbiAgbWFwZGVmYXVsdHZpZXc6IHt9XG59OyIsImV4cG9ydCBjbGFzcyBHb0dvRmVhdHVyZVxue1xuICBhY3RpdmUgOiBib29sZWFuID0gZmFsc2U7XG4gIHVybCA6IHN0cmluZyA9ICcnO1xuICByb2xlcyA6IHN0cmluZ1tdID0gWydhbm9ueW1vdXMnLCAnYW5vbnltb3VzX3dpdGhfbWFpbCcsICd1c2VyJywgJ2FkbWluJ107XG4gIGluSWZyYW1lIDogYm9vbGVhbiA9IHRydWU7XG4gIG9wdGlvbnMgOiBhbnkgPSB7fTtcblxuICBoYXNSb2xlKHJvbGVzIDogc3RyaW5nW10pIHsgXG4gICAgcmV0dXJuIHRoaXMucm9sZXMuc29tZSggKHJvbGUpID0+IHtcbiAgICAgIHJldHVybiByb2xlcy5pbmRleE9mKHJvbGUpID4gLTE7XG4gICAgfSk7XG4gIH1cbn0iLCJpbXBvcnQgeyBDYXRlZ29yeSwgT3B0aW9uLCBPcHRpb25WYWx1ZX0gZnJvbSBcIi4uL2NsYXNzZXNcIjtcblxuZXhwb3J0IGNsYXNzIENhdGVnb3J5VmFsdWVcbntcblx0Y2F0ZWdvcnkgOiBDYXRlZ29yeTtcblx0Y2hpbGRyZW4gOiBPcHRpb25WYWx1ZVtdID0gW107XG5cblx0Y29uc3RydWN0b3IoY2F0ZWdvcnkgOiBDYXRlZ29yeSlcblx0e1xuXHRcdHRoaXMuY2F0ZWdvcnkgPSBjYXRlZ29yeTtcdFxuXHR9XG5cblx0YWRkT3B0aW9uVmFsdWUob3B0aW9uVmFsdWUgOiBPcHRpb25WYWx1ZSlcblx0e1xuXHRcdHRoaXMuY2hpbGRyZW4ucHVzaChvcHRpb25WYWx1ZSk7XG5cdH1cblxuXHRnZXQgaXNMYXN0Q2F0ZWdvcnlEZXB0aCgpIDogYm9vbGVhblxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuY2hpbGRyZW4uZXZlcnkoIChvcHRpb25WYWx1ZSkgPT4gb3B0aW9uVmFsdWUub3B0aW9uLnN1YmNhdGVnb3JpZXMubGVuZ3RoID09IDApO1xuXHR9XG59IiwiZXhwb3J0IGNsYXNzIENvbnRyaWJ1dGlvbiBcbnsgXG5cdHR5cGUgOiBudW1iZXI7XG5cdHN0YXR1cyA6IG51bWJlcjtcblx0dXNlciA6IHN0cmluZztcblx0dXNlclJvbGUgOiBudW1iZXI7XG5cdHJlc29sdmVkTWVzc2FnZSA6IHN0cmluZztcblx0cmVzb2x2ZWRCeSA6IHN0cmluZztcblx0dXBkYXRlZEF0IDogc3RyaW5nO1xuXHRjcmVhdGVkQXQgOiBzdHJpbmc7XG5cblx0Y29uc3RydWN0b3IoY29udHJpYnV0aW9uSnNvbiA6IGFueSlcblx0e1xuXHRcdHRoaXMudHlwZSA9IGNvbnRyaWJ1dGlvbkpzb24udHlwZTtcblx0XHR0aGlzLnN0YXR1cyA9IGNvbnRyaWJ1dGlvbkpzb24uc3RhdHVzO1xuXHRcdHRoaXMudXNlciA9IGNvbnRyaWJ1dGlvbkpzb24udXNlcjtcblx0XHR0aGlzLnVzZXJSb2xlID0gY29udHJpYnV0aW9uSnNvbi51c2VyUm9sZTtcblx0XHR0aGlzLnJlc29sdmVkTWVzc2FnZSA9IGNvbnRyaWJ1dGlvbkpzb24ucmVzb2x2ZWRNZXNzYWdlO1xuXHRcdHRoaXMucmVzb2x2ZWRCeSA9IGNvbnRyaWJ1dGlvbkpzb24ucmVzb2x2ZWRCeTtcblx0XHR0aGlzLnVwZGF0ZWRBdCA9IGNvbnRyaWJ1dGlvbkpzb24udXBkYXRlZEF0O1x0XG5cdFx0dGhpcy5jcmVhdGVkQXQgPSBjb250cmlidXRpb25Kc29uLmNyZWF0ZWRBdDtcblx0fVxufSIsImltcG9ydCB7IENvbnRyaWJ1dGlvbiwgVm90ZVJlcG9ydCwgT3B0aW9uVmFsdWUsIFBvc3RhbEFkZHJlc3MsIE9wdGlvbiwgQ2F0ZWdvcnlWYWx1ZSwgRWxlbWVudFVybCB9IGZyb20gXCIuLi9jbGFzc2VzXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmV4cG9ydCBlbnVtIEVsZW1lbnRTdGF0dXMgXG57XG4gIE1vZGlmaWVkRWxlbWVudCA9IC01LFxuICBEZWxldGVkID0gLTQsXG4gIENvbGxhYm9yYXRpdmVSZWZ1c2VkID0gLTMsXG4gIEFkbWluUmVmdXNlZCA9IC0yLCAgICBcbiAgUGVuZGluZ01vZGlmaWNhdGlvbiA9IC0xLFxuICBQZW5kaW5nQWRkID0gMCxcbiAgQWRtaW5WYWxpZGF0ZSA9IDEsXG4gIENvbGxhYm9yYXRpdmVWYWxpZGF0ZSA9IDJcbn1cblxuZXhwb3J0IGVudW0gRWxlbWVudE1vZGVyYXRpb25TdGF0ZVxue1xuICBHZW9sb2NFcnJvciA9IC0yLFxuICBOb09wdGlvblByb3ZpZGVkID0gLTEsICAgICBcbiAgTm90TmVlZGVkID0gMCxcbiAgUmVwb3J0c1N1Ym1pdHRlZCA9IDEsXG4gIFZvdGVzQ29uZmxpY3RzID0gMiwgXG4gIFBlbmRpbmdGb3JUb29Mb25nID0gMyxcbiAgUG9zc2libGVEdXBsaWNhdGUgPSA0ICBcbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRCYXNlXG57XG4gIGlkIDogc3RyaW5nO1xuICBuYW1lIDogc3RyaW5nO1xuICBwb3NpdGlvbiA6IEwuTGF0TG5nO1xuXG4gIHN0YXR1cyA6IEVsZW1lbnRTdGF0dXM7XG4gIG1vZGVyYXRpb25TdGF0ZSA6IEVsZW1lbnRNb2RlcmF0aW9uU3RhdGU7XG4gICBcbiAgYWRkcmVzcyA6IFBvc3RhbEFkZHJlc3M7XG4gIGRlc2NyaXB0aW9uIDogc3RyaW5nO1xuICBsb25nRGVzY3JpcHRpb246IHN0cmluZztcbiAgbG9uZ0Rlc2NyaXB0aW9uTW9yZTogc3RyaW5nO1xuICBvcGVuSG91cnMgOiBhbnk7XG5cbiAgY29tbWl0bWVudCA6IHN0cmluZzsgIFxuICB0ZWxlcGhvbmUgOiBzdHJpbmc7XG4gIHdlYnNpdGUgOiBzdHJpbmc7XG4gIGVtYWlsIDogc3RyaW5nO1xuICBcbiAgZm9ybWF0ZWRPcGVuSG91cnM7XG4gIG9wZW5Ib3Vyc01vcmVJbmZvcyA6IGFueTtcbiAgaW1hZ2VzIDogc3RyaW5nW107XG4gIHVybHMgOiBFbGVtZW50VXJsW107XG4gIHRhZ3MgOiBzdHJpbmdbXTtcbiAgXG4gIG1vZGlmaWVkRWxlbWVudCA6IEVsZW1lbnRCYXNlID0gbnVsbDtcblxuICBvcHRpb25zVmFsdWVzIDogT3B0aW9uVmFsdWVbXSA9IFtdO1xuICBzdGFtcHMgOiBhbnlbXSA9IFtdO1xuXG4gIG1haW5PcHRpb25Pd25lcklkcyA6IG51bWJlcltdID0gW107XG5cbiAgcmVwb3J0cyA6IFZvdGVSZXBvcnRbXTtcbiAgY29udHJpYnV0aW9ucyA6IENvbnRyaWJ1dGlvbltdO1xuICBwZW5kaW5nQ29udHJpYnV0aW9uIDogQ29udHJpYnV0aW9uO1xuICB2b3RlcyA6IFZvdGVSZXBvcnRbXTtcblxuICBvcHRpb25UcmVlIDogT3B0aW9uVmFsdWU7ICBcblxuICBzZWFyY2hTY29yZSA6IG51bWJlciA9IG51bGw7XG5cbiAgaXNGdWxseUxvYWRlZCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuICBjb25zdHJ1Y3RvcihlbGVtZW50SnNvbiA6IGFueSlcbiAge1xuICAgIHRoaXMudXBkYXRlV2l0aEpzb24oZWxlbWVudEpzb24pOyAgICBcbiAgfVxuXG4gIHVwZGF0ZVdpdGhKc29uKGVsZW1lbnRKc29uIDogYW55KSBcbiAge1xuICAgIEFwcC5lbGVtZW50SnNvblBhcnNlci5sb2FkKGVsZW1lbnRKc29uLCB0aGlzKTsgICAgXG4gIH0gIFxuXG4gIGNyZWF0ZU9wdGlvbnNUcmVlKClcbiAge1xuICAgIEFwcC5lbGVtZW50T3B0aW9uVmFsdWVzTW9kdWxlLmNyZWF0ZU9wdGlvbnNUcmVlKHRoaXMpO1xuICB9XG5cbiAgZ2V0T3B0aW9uVHJlZSgpXG4gIHtcbiAgICBpZiAodGhpcy5vcHRpb25UcmVlKSByZXR1cm4gdGhpcy5vcHRpb25UcmVlO1xuICAgIHRoaXMuY3JlYXRlT3B0aW9uc1RyZWUoKTtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25UcmVlO1xuICB9XG5cbiAgZ2V0Um9vdENhdGVnb3JpZXNWYWx1ZXMoKSA6IENhdGVnb3J5VmFsdWVbXVxuICB7XG4gICAgbGV0IG9wdGlvblRyZWUgPSB0aGlzLmdldE9wdGlvblRyZWUoKTtcbiAgICBpZiAob3B0aW9uVHJlZS5jaGlsZHJlbi5sZW5ndGggPT0gMCkgcmV0dXJuIFtdO1xuICAgIGlmIChvcHRpb25UcmVlLmNoaWxkcmVuWzBdLmNhdGVnb3J5LmlzUm9vdENhdGVnb3J5KSByZXR1cm4gb3B0aW9uVHJlZS5jaGlsZHJlbjtcbiAgICByZXR1cm4gb3B0aW9uVHJlZS5jaGlsZHJlblswXS5jaGlsZHJlblswXS5jaGlsZHJlbjtcbiAgfVxuXG4gIGdldE9wdGlvblZhbHVlQnlDYXRlZ29yeUlkKCRjYXRlZ29yeUlkKVxuICB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1ZhbHVlcy5maWx0ZXIoKG9WKSA9PiBvVi5jYXRlZ29yeU93bmVyLmlkID09ICRjYXRlZ29yeUlkKTtcbiAgfVxuXG4gIGdldE9wdGlvblZhbHVlc05hbWVzKClcbiAge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnNWYWx1ZXMubWFwKCAob3YpID0+IG92Lm9wdGlvbi5uYW1lU2hvcnQpO1xuICB9XG5cbiAgaGF2ZU9wdGlvbigkb3B0aW9uIDogT3B0aW9uKVxuICB7XG4gICAgcmV0dXJuIHRoaXMub3B0aW9uc1ZhbHVlcy5tYXAoIChvdikgPT4gb3Yub3B0aW9uSWQpLmluZGV4T2YoJG9wdGlvbi5pZCkgPj0gMDtcbiAgfVxufSIsImV4cG9ydCBjbGFzcyBFbGVtZW50VXJsXG57XG4gIHR5cGUgOiBzdHJpbmcgPSAnJztcbiAgdmFsdWU6IHN0cmluZyA9ICcnO1xuXG4gIGNvbnN0cnVjdG9yKCRlbGVtZW50VXJsSnNvbilcbiAge1xuICAgIGlmICh0eXBlb2YgJGVsZW1lbnRVcmxKc29uID09PSAnc3RyaW5nJykgJGVsZW1lbnRVcmxKc29uID0geyBrZXk6ICcnLCB2YWx1ZTogJGVsZW1lbnRVcmxKc29uIH07XG4gICAgdGhpcy50eXBlID0gJGVsZW1lbnRVcmxKc29uLnR5cGUgfHwgJyc7XG4gICAgdGhpcy52YWx1ZSA9ICRlbGVtZW50VXJsSnNvbi52YWx1ZSB8fCAnJzsgIFxuICB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnRCYXNlLCBFbGVtZW50U3RhdHVzLCBFbGVtZW50TW9kZXJhdGlvblN0YXRlIH0gZnJvbSAnLi9lbGVtZW50LWJhc2UuY2xhc3MnO1xuZXhwb3J0IHsgRWxlbWVudFN0YXR1cywgRWxlbWVudE1vZGVyYXRpb25TdGF0ZSB9IGZyb20gJy4vZWxlbWVudC1iYXNlLmNsYXNzJztcbmltcG9ydCB7IE1hcmtlciB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL21hcC9tYXJrZXIuY29tcG9uZW50XCI7XG5pbXBvcnQgeyBFbGVtZW50Q29tcG9uZW50IH0gZnJvbSBcIi4uLy4uL2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgT3B0aW9uVmFsdWUsIENhdGVnb3J5VmFsdWUsIE9wdGlvbiwgQ2F0ZWdvcnksIENvbnRyaWJ1dGlvbiwgVm90ZVJlcG9ydCwgU3RhbXAgfSBmcm9tIFwiLi4vY2xhc3Nlc1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciAkLCBNYXA7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50IGV4dGVuZHMgRWxlbWVudEJhc2VcbntcdFxuXHRwcml2YXRlIG1hcmtlcl8gOiBNYXJrZXIgPSBudWxsO1xuXHRwcml2YXRlIGNvbXBvbmVudF8gOiBFbGVtZW50Q29tcG9uZW50ID0gbnVsbDtcdFxuXG5cdGNvbG9yT3B0aW9uSWQgOiBhbnk7XG5cblx0cHJpdmF0ZSBpc0luaXRpYWxpemVkXyA6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRpY29uc1RvRGlzcGxheSA6IE9wdGlvblZhbHVlW10gPSBbXTtcdFxuXG5cdGRpc3RhbmNlIDogbnVtYmVyO1xuXHRkaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIgOiBudW1iZXI7XHRcblxuXHQvLyBmb3IgZWxlbWVudHMgbW9kdWxlIGFsZ29yaXRobXNcblx0aXNEaXNwbGF5ZWQgOiBib29sZWFuID0gZmFsc2U7XHRcblxuXHRpc1Nob3duQWxvbmUgOiBib29sZWFuID0gZmFsc2U7XG5cdGlzRmF2b3JpdGUgOiBib29sZWFuID0gZmFsc2U7XG5cdG5lZWRUb0JlVXBkYXRlZFdoZW5TaG93biA6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdGNvbnN0cnVjdG9yKGVsZW1lbnRKc29uIDogYW55KVxuICB7XG4gICAgc3VwZXIoZWxlbWVudEpzb24pOyAgXG4gIH1cblxuICB1cGRhdGVXaXRoSnNvbihlbGVtZW50SnNvbilcbiAge1xuICBcdHN1cGVyLnVwZGF0ZVdpdGhKc29uKGVsZW1lbnRKc29uKTtcbiAgXHR0aGlzLmNyZWF0ZU9wdGlvbnNUcmVlKCk7XG4gICAgdGhpcy51cGRhdGUodHJ1ZSk7XG4gIH1cdFxuXG5cdGluaXRpYWxpemUoKSBcblx0e1x0XHRcblx0XHRBcHAuZWxlbWVudEljb25zTW9kdWxlLnVwZGF0ZUljb25zVG9EaXNwbGF5KHRoaXMpO1xuXG5cdFx0dGhpcy5tYXJrZXJfID0gbmV3IE1hcmtlcih0aGlzLmlkLCB0aGlzLnBvc2l0aW9uKTtcblx0XHR0aGlzLmlzSW5pdGlhbGl6ZWRfID0gdHJ1ZTtcdFxuXHR9XG5cblx0dXBkYXRlKCRmb3JjZSA6IGJvb2xlYW4gPSBmYWxzZSlcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJtYXJrZXIgdXBkYXRlIG5lZWRUb0JlVXBkYXRlZFwiLCB0aGlzLm5lZWRUb0JlVXBkYXRlZFdoZW5TaG93bik7XG5cdFx0aWYgKHRoaXMubmVlZFRvQmVVcGRhdGVkV2hlblNob3duIHx8IEFwcC5tb2RlID09IEFwcE1vZGVzLkxpc3QgfHwgJGZvcmNlKVxuXHRcdHtcblx0XHRcdEFwcC5lbGVtZW50SWNvbnNNb2R1bGUudXBkYXRlSWNvbnNUb0Rpc3BsYXkodGhpcyk7XG5cdFx0XHRsZXQgb3B0aW9uVmFsdWVzVG9VcGRhdGUgPSB0aGlzLmdldEN1cnJPcHRpb25zVmFsdWVzKCkuZmlsdGVyKCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLmlzRmlsbGVkQnlGaWx0ZXJzKTtcblx0XHRcdG9wdGlvblZhbHVlc1RvVXBkYXRlLnB1c2godGhpcy5nZXRDdXJyTWFpbk9wdGlvblZhbHVlKCkpO1xuXHRcdFx0Zm9yKGxldCBvcHRpb25WYWx1ZSBvZiBvcHRpb25WYWx1ZXNUb1VwZGF0ZSkgQXBwLmVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUudXBkYXRlT3B0aW9uVmFsdWVDb2xvcih0aGlzLCBvcHRpb25WYWx1ZSk7XG5cblx0XHRcdHRoaXMuY29sb3JPcHRpb25JZCA9IHRoaXMuaWNvbnNUb0Rpc3BsYXkubGVuZ3RoID4gMCAmJiB0aGlzLmdldEljb25zVG9EaXNwbGF5KClbMF0gPyB0aGlzLmdldEljb25zVG9EaXNwbGF5KClbMF0uY29sb3JPcHRpb25JZCA6IG51bGw7XHRcblxuXHRcdFx0aWYgKHRoaXMubWFya2VyKSB0aGlzLm1hcmtlci51cGRhdGUoKTtcblx0XHRcdHRoaXMubmVlZFRvQmVVcGRhdGVkV2hlblNob3duID0gZmFsc2U7XG5cdFx0fVx0XHRcblx0fVxuXG5cdHVwZGF0ZURpc3RhbmNlKClcblx0e1xuXHRcdHRoaXMuZGlzdGFuY2UgPSBudWxsO1xuXHRcdHRoaXMuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyID0gQXBwLmJvdW5kc01vZHVsZS5leHRlbmRlZEJvdW5kcyA/IEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kZWRCb3VuZHMuZ2V0Q2VudGVyKCkuZGlzdGFuY2VUbyh0aGlzLnBvc2l0aW9uKSAvIDEwMDAgOiBudWxsO1xuXG5cdFx0aWYgKEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKSBcblx0XHRcdHRoaXMuZGlzdGFuY2UgPSBBcHAubWFwQ29tcG9uZW50LmRpc3RhbmNlRnJvbUxvY2F0aW9uVG8odGhpcy5wb3NpdGlvbik7XG5cdFx0ZWxzZVxuXHRcdFx0dGhpcy5kaXN0YW5jZSA9IHRoaXMuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyO1xuXHRcdFxuXHRcdC8vIE1ha2luZyB0aGUgZGlzdGFuY2UgbW9yZSByZWFsaXN0aWMgbXVsdGlwbHlpbmdcblx0XHR0aGlzLmRpc3RhbmNlID0gdGhpcy5kaXN0YW5jZSA/IE1hdGgucm91bmQoMS4yKnRoaXMuZGlzdGFuY2UpIDogbnVsbDtcblx0XHR0aGlzLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlciA9IHRoaXMuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyID8gTWF0aC5yb3VuZCgxLjIqdGhpcy5kaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIpIDogbnVsbDtcblx0fVxuXG5cdGdldFByb3BlcnR5KHByb3BlcnR5TmFtZSlcblx0e1xuXHRcdHJldHVybiBBcHAuZWxlbWVudEZvcm1hdGVyTW9kdWxlLmdldFByb3BlcnR5KHRoaXMsIHByb3BlcnR5TmFtZSk7XG5cdH1cblxuXHRnZXRJY29uc1RvRGlzcGxheSgpIDogT3B0aW9uVmFsdWVbXVxuICB7XG4gICAgbGV0IHJlc3VsdCA9IHRoaXMuaWNvbnNUb0Rpc3BsYXk7XG4gICAgcmV0dXJuIHJlc3VsdC5zb3J0KCAoYSxiKSA9PiBhLmlzRmlsbGVkQnlGaWx0ZXJzID8gLTEgOiAxKTtcbiAgfVxuXG5cdGdldEN1cnJPcHRpb25zVmFsdWVzKCkgOiBPcHRpb25WYWx1ZVtdXG5cdHtcblx0XHRpZiAoQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbikgcmV0dXJuIHRoaXMub3B0aW9uc1ZhbHVlcy5maWx0ZXIoIChvcHRpb25WYWx1ZSkgPT4gb3B0aW9uVmFsdWUub3B0aW9uLm1haW5Pd25lcklkID09IEFwcC5jdXJyTWFpbklkKTtcblx0XHRyZXR1cm4gdGhpcy5vcHRpb25zVmFsdWVzO1xuXHR9XG5cblx0Z2V0Q3VyckRlZXBlc3RPcHRpb25zVmFsdWVzKCkgOiBPcHRpb25WYWx1ZVtdXG5cdHtcblx0XHRsZXQgY3Vyck9wdGlvblZhbHVlcyA9IHRoaXMuZ2V0Q3Vyck9wdGlvbnNWYWx1ZXMoKTtcbiAgICBsZXQgaWRzVG9SZW1vdmUgPSBbXVxuICAgIGZvciAobGV0IG92IG9mIGN1cnJPcHRpb25WYWx1ZXMpIGlkc1RvUmVtb3ZlID0gaWRzVG9SZW1vdmUuY29uY2F0KG92Lm9wdGlvbl8ucGFyZW50T3B0aW9uSWRzKTtcbiAgICBsZXQgZGVlcGVzdE92ID0gY3Vyck9wdGlvblZhbHVlcy5maWx0ZXIoIChvVikgPT4gaWRzVG9SZW1vdmUuaW5kZXhPZihvVi5vcHRpb25fLmlkKSA9PSAtMSk7XG5cbiAgXHQvLyBncm91cCBieSBvd25lclxuICBcdGxldCBncm91cGVkQnlQYXJlbnRPdnMgPSB7fVxuICBcdGZvciAobGV0IG92IG9mIGRlZXBlc3RPdikgeyBcbiAgXHRcdGxldCBwYXJlbnROYW1lID0gb3Yub3B0aW9uLnBhcmVudE9wdGlvbk5hbWU7XG4gIFx0XHRpZiAocGFyZW50TmFtZSBpbiBncm91cGVkQnlQYXJlbnRPdnMpIGdyb3VwZWRCeVBhcmVudE92c1twYXJlbnROYW1lXS5wdXNoKG92KTsgXG4gIFx0XHRlbHNlIGdyb3VwZWRCeVBhcmVudE92c1twYXJlbnROYW1lXSA9IFtvdl07IFxuICBcdH1cbiAgXHRsZXQgZGVlcGVzdE9yZGVyZWRPdiA9IFtdO1xuICBcdGZvciAobGV0IHBhcmVudCBpbiBncm91cGVkQnlQYXJlbnRPdnMpIHsgZGVlcGVzdE9yZGVyZWRPdiA9IGRlZXBlc3RPcmRlcmVkT3YuY29uY2F0KGdyb3VwZWRCeVBhcmVudE92c1twYXJlbnRdKTsgfVxuICBcdHJldHVybiBkZWVwZXN0T3JkZXJlZE92O1xuXHR9XG5cblx0cHJpdmF0ZSBncm91cEJ5KGxpc3QsIGtleUdldHRlcikge1xuICAgIGNvbnN0IG1hcCA9IG5ldyBNYXAoKTtcbiAgICBsaXN0LmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgICAgY29uc3Qga2V5ID0ga2V5R2V0dGVyKGl0ZW0pO1xuICAgICAgICBjb25zdCBjb2xsZWN0aW9uID0gbWFwLmdldChrZXkpO1xuICAgICAgICBpZiAoIWNvbGxlY3Rpb24pIHtcbiAgICAgICAgICAgIG1hcC5zZXQoa2V5LCBbaXRlbV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29sbGVjdGlvbi5wdXNoKGl0ZW0pO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIG1hcDtcbn1cblxuXHRnZXRDdXJyTWFpbk9wdGlvblZhbHVlKCkgOiBPcHRpb25WYWx1ZVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9uc1ZhbHVlcy5maWx0ZXIoIChvcHRpb25WYWx1ZSkgPT4gb3B0aW9uVmFsdWUub3B0aW9uLmlkID09IEFwcC5jdXJyTWFpbklkKS5zaGlmdCgpO1xuXHR9XG5cblx0Z2V0Q2F0ZWdvcmllc0lkcygpIDogbnVtYmVyW11cblx0e1xuXHRcdHJldHVybiB0aGlzLmdldEN1cnJPcHRpb25zVmFsdWVzKCkubWFwKCAob3B0aW9uVmFsdWUpID0+IG9wdGlvblZhbHVlLmNhdGVnb3J5T3duZXIuaWQpLmZpbHRlcigodmFsdWUsIGluZGV4LCBzZWxmKSA9PiBzZWxmLmluZGV4T2YodmFsdWUpID09PSBpbmRleCk7XG5cdH1cblxuXHRnZXRPcHRpb25zSWRzSW5DYXRlZ29yaWVJZChjYXRlZ29yeUlkKSA6IG51bWJlcltdXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5nZXRDdXJyT3B0aW9uc1ZhbHVlcygpLmZpbHRlciggKG9wdGlvblZhbHVlKSA9PiBvcHRpb25WYWx1ZS5vcHRpb24ub3duZXJJZCA9PSBjYXRlZ29yeUlkKS5tYXAoIChvcHRpb25WYWx1ZSkgPT4gb3B0aW9uVmFsdWUub3B0aW9uSWQpO1xuXHR9XHRcblxuXHRkaXNwbGF5U3RhbXBzKCkgOiBTdGFtcFtdXG5cdHtcblx0XHRyZXR1cm4gQXBwLnN0YW1wTW9kdWxlLmdldEFsbG93ZWRTdGFtcEZvckVsZW1lbnQodGhpcyk7XG5cdH1cblxuXHRpc1BlbmRpbmcoKSB7IHJldHVybiB0aGlzLnN0YXR1cyA9PSBFbGVtZW50U3RhdHVzLlBlbmRpbmdBZGQgfHwgdGhpcy5zdGF0dXMgPT0gRWxlbWVudFN0YXR1cy5QZW5kaW5nTW9kaWZpY2F0aW9uOyB9XG5cdGlzRGVsZXRlZCgpIHsgcmV0dXJuIHRoaXMuc3RhdHVzIDw9IEVsZW1lbnRTdGF0dXMuQWRtaW5SZWZ1c2VkIH1cblx0bmVlZHNNb2RlcmF0aW9uKCkgeyByZXR1cm4gdGhpcy5tb2RlcmF0aW9uU3RhdGUgIT0gRWxlbWVudE1vZGVyYXRpb25TdGF0ZS5Ob3ROZWVkZWQgfVx0XG5cblx0Z2V0IG1hcmtlcigpIDogTWFya2VyIHsgcmV0dXJuIHRoaXMubWFya2VyXzsgfVxuXHRnZXQgY29tcG9uZW50KCkgeyByZXR1cm4gdGhpcy5jb21wb25lbnRfIHx8ICh0aGlzLmNvbXBvbmVudF8gPSBuZXcgRWxlbWVudENvbXBvbmVudCh0aGlzKSk7IH1cdFxuXHRnZXQgaXNJbml0aWFsaXplZCgpIHsgcmV0dXJuIHRoaXMuaXNJbml0aWFsaXplZF87IH1cblxufVxuXG4iLCJpbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIE9wdGlvbiwgQ2F0ZWdvcnlWYWx1ZX0gZnJvbSBcIi4uL2NsYXNzZXNcIjtcbmltcG9ydCB7IHBhcnNlVXJpSWQsIHNsdWdpZnkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZXhwb3J0IGNsYXNzIE9wdGlvblZhbHVlXG57XG5cdG9wdGlvbklkIDogYW55O1xuXHRpbmRleCA6IG51bWJlcjtcblx0ZGVzY3JpcHRpb24gOiBzdHJpbmc7XG5cdGRpZmYgOiBzdHJpbmc7IC8vIHVzZSB0byBjb21wYXJlIHdpdGggbW9kaWZpZWQgb3B0aW9uVmFsdWUuIFZhbHVlcyBjbmEgYmUgXCJyZW1vdmVkXCIsIFwiYWRkZWRcIiwgb3IgXCJlcXVhbHNcIlxuXHRvcHRpb25fIDogT3B0aW9uID0gbnVsbDtcblx0aXNGaWxsZWRCeUZpbHRlcnMgOiBib29sZWFuID0gdHJ1ZTtcblxuXHRjaGlsZHJlbiA6IENhdGVnb3J5VmFsdWVbXSA9IFtdO1xuXHRjb2xvck9wdGlvbklkIDogbnVtYmVyID0gbnVsbDtcblxuXHRjb25zdHJ1Y3Rvcigkb3B0aW9uVmFsdWVKc29uLCAka2V5ID0gMClcblx0e1xuXHRcdC8vIGNvbnNvbGUubG9nKFwidmFsdWUganNvblwiLCAkb3B0aW9uVmFsdWVKc29uKTtcblx0XHQvLyBpbiBjYXNlIG9mIGNvbXBhY3QganNvbiwgdGhlIG9wdGlvbnMgdmFsdWVzIGFyZSBzdG9yZWQgaW4gc2ltcGxlIGFycmF5XG5cdFx0aWYgKHR5cGVvZiAkb3B0aW9uVmFsdWVKc29uID09ICdudW1iZXInIHx8IHR5cGVvZiAkb3B0aW9uVmFsdWVKc29uID09ICdzdHJpbmcnKVxuXHRcdHtcblx0XHRcdHRoaXMub3B0aW9uSWQgPSAkb3B0aW9uVmFsdWVKc29uLnRvU3RyaW5nKCk7XG5cdFx0XHR0aGlzLmluZGV4ID0gJGtleTtcblx0XHRcdHRoaXMuZGVzY3JpcHRpb24gPSAnJztcblx0XHR9XG5cdFx0ZWxzZSBpZiAoQXJyYXkuaXNBcnJheSgkb3B0aW9uVmFsdWVKc29uKSAmJiAkb3B0aW9uVmFsdWVKc29uLmxlbmd0aCA+PSAyKVxuXHRcdHtcblx0XHRcdHRoaXMub3B0aW9uSWQgPSAkb3B0aW9uVmFsdWVKc29uWzBdO1xuXHRcdFx0dGhpcy5pbmRleCA9ICRrZXk7XG5cdFx0XHR0aGlzLmRlc2NyaXB0aW9uID0gJG9wdGlvblZhbHVlSnNvbi5sZW5ndGggPT0gMyA/ICAkb3B0aW9uVmFsdWVKc29uWzJdIDogJyc7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKHR5cGVvZiAkb3B0aW9uVmFsdWVKc29uID09ICdvYmplY3QnKVxuXHRcdHtcblx0XHRcdGlmICgkb3B0aW9uVmFsdWVKc29uW1wiQGlkXCJdKSB7XG5cdFx0XHRcdHRoaXMub3B0aW9uSWQgPSBwYXJzZVVyaUlkKCRvcHRpb25WYWx1ZUpzb25bXCJAaWRcIl0pO1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5vcHRpb25JZCA9ICRvcHRpb25WYWx1ZUpzb24uY2F0ZWdvcnlJZCB8fCAkb3B0aW9uVmFsdWVKc29uLm9wdGlvbklkO1xuXHRcdFx0XHR0aGlzLmluZGV4ID0gJGtleTtcblx0XHRcdFx0dGhpcy5kZXNjcmlwdGlvbiA9ICRvcHRpb25WYWx1ZUpzb24uZGVzY3JpcHRpb24gfHwgJyc7XG5cdFx0XHR9XHRcdFx0XG5cdFx0fVx0XG5cdFx0dGhpcy5kaWZmID0gJG9wdGlvblZhbHVlSnNvbi5kaWZmO1x0XG5cdH1cblxuXHRnZXQgb3B0aW9uKCkgOiBPcHRpb25cblx0e1xuXHRcdGlmICh0aGlzLm9wdGlvbl8pIHJldHVybiB0aGlzLm9wdGlvbl87XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9uXyA9IEFwcC50YXhvbm9teU1vZHVsZS5nZXRPcHRpb25CeUlkKHRoaXMub3B0aW9uSWQpO1xuXHR9XG5cblx0c2V0UmVjdXJzaXZlbHlGaWxsZWRCeUZpbHRlcnMoYm9vbCA6IGJvb2xlYW4pXG5cdHtcblx0XHR0aGlzLmlzRmlsbGVkQnlGaWx0ZXJzID0gYm9vbDtcblx0XHRmb3IobGV0IGNhdGVnb3J5VmFsdWUgb2YgdGhpcy5jaGlsZHJlbilcblx0XHR7XG5cdFx0XHRmb3IgKGxldCBzdWJvcHRpb25WYWx1ZSBvZiBjYXRlZ29yeVZhbHVlLmNoaWxkcmVuKVxuXHRcdFx0e1xuXHRcdFx0XHRzdWJvcHRpb25WYWx1ZS5zZXRSZWN1cnNpdmVseUZpbGxlZEJ5RmlsdGVycyhib29sKTtcblx0XHRcdH1cblx0XHR9XG5cdH1cblxuXHRnZXQgY2F0ZWdvcnlPd25lcigpIDogQ2F0ZWdvcnlcblx0e1xuXHRcdHJldHVybiA8Q2F0ZWdvcnk+IHRoaXMub3B0aW9uLmdldE93bmVyKCk7XG5cdH1cblxuXHRhZGRDYXRlZ29yeVZhbHVlKGNhdGVnb3J5VmFsdWUgOiBDYXRlZ29yeVZhbHVlKVxuXHR7XG5cdFx0dGhpcy5jaGlsZHJlbi5wdXNoKGNhdGVnb3J5VmFsdWUpO1xuXHR9XG59XG5cbiIsImltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcblxuZXhwb3J0IGNsYXNzIFBvc3RhbEFkZHJlc3NcbntcbiAgc3RyZWV0QWRkcmVzcyA6IHN0cmluZyA9ICcnO1xuICBhZGRyZXNzTG9jYWxpdHk6IHN0cmluZyA9ICcnO1xuICBwb3N0YWxDb2RlOiBzdHJpbmcgPSAnJztcbiAgZm9ybWF0ZWRBZGRyZXNzIDogc3RyaW5nID0gJyc7XG5cbiAgY29uc3RydWN0b3IoJGFkZHJlc3NKc29uKVxuICB7XG4gICAgaWYgKHR5cGVvZiAkYWRkcmVzc0pzb24gPT0gXCJzdHJpbmdcIilcbiAgICAgIHRoaXMuZm9ybWF0ZWRBZGRyZXNzID0gJGFkZHJlc3NKc29uXG4gICAgZWxzZSBpZiAoJGFkZHJlc3NKc29uKVxuICAgIHtcbiAgICAgIHRoaXMuc3RyZWV0QWRkcmVzcyA9IGNhcGl0YWxpemUoJGFkZHJlc3NKc29uLnN0cmVldEFkZHJlc3MgfHwgJycpO1xuICAgICAgdGhpcy5hZGRyZXNzTG9jYWxpdHkgPSBjYXBpdGFsaXplKCRhZGRyZXNzSnNvbi5hZGRyZXNzTG9jYWxpdHkgfHwgJycpO1xuICAgICAgdGhpcy5wb3N0YWxDb2RlID0gJGFkZHJlc3NKc29uLnBvc3RhbENvZGU7XG4gICAgICB0aGlzLmZvcm1hdGVkQWRkcmVzcyA9ICRhZGRyZXNzSnNvbi5jdXN0b21Gb3JtYXRlZEFkZHJlc3MgfHwgJyc7XG4gICAgfSAgICAgIFxuICB9XG5cbiAgZ2V0Rm9ybWF0ZWRBZGRyZXNzKClcbiAge1xuICAgIGlmICh0aGlzLmZvcm1hdGVkQWRkcmVzcykgcmV0dXJuIHRoaXMuZm9ybWF0ZWRBZGRyZXNzO1xuICAgIGxldCByZXN1bHQgPSBcIlwiO1xuICAgIGlmICh0aGlzLnN0cmVldEFkZHJlc3MpIHJlc3VsdCArPSB0aGlzLnN0cmVldEFkZHJlc3MgKyAnLCAnO1xuICAgIGlmICh0aGlzLnBvc3RhbENvZGUpIHJlc3VsdCArPSB0aGlzLnBvc3RhbENvZGUgKyAnICc7XG4gICAgaWYgKHRoaXMuYWRkcmVzc0xvY2FsaXR5KSByZXN1bHQgKz0gdGhpcy5hZGRyZXNzTG9jYWxpdHk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxufSIsImV4cG9ydCBjbGFzcyBTdGFtcFxue1xuICBpZCA6IGFueTtcbiAgbmFtZSA6IHN0cmluZyA9ICcnO1xuICBpY29uIDogc3RyaW5nID0gJyc7XG4gIGVsZW1lbnRJZHMgOiBhbnlbXSA9IFtdO1xuXG4gIGNvbnN0cnVjdG9yKCRqc29uKVxuICB7XG4gICAgdGhpcy5pZCA9ICRqc29uLmlkIHx8ICRqc29uLm5hbWU7XG4gICAgdGhpcy5uYW1lID0gJGpzb24ubmFtZTtcbiAgICB0aGlzLmljb24gPSAkanNvbi5pY29uOyAgXG4gICAgdGhpcy5lbGVtZW50SWRzID0gJGpzb24uZWxlbWVudElkczsgIFxuICB9XG59IiwiZXhwb3J0IGNsYXNzIFZvdGVSZXBvcnQgXG57IFxuXHR0eXBlIDogbnVtYmVyO1xuXHR2YWx1ZSA6IG51bWJlcjtcblx0Y29tbWVudCA6IHN0cmluZztcblx0dXNlckVtYWlsIDogc3RyaW5nO1xuXHR1c2VyUm9sZSA6IG51bWJlcjtcblx0Y3JlYXRlZEF0IDogc3RyaW5nO1xuXG5cdGNvbnN0cnVjdG9yKHZvdGVSZXBvcnRKc29uIDogYW55KVxuXHR7XG5cdFx0dGhpcy50eXBlID0gdm90ZVJlcG9ydEpzb24udHlwZTtcblx0XHR0aGlzLnZhbHVlID0gdm90ZVJlcG9ydEpzb24udmFsdWU7XG5cdFx0dGhpcy5jb21tZW50ID0gdm90ZVJlcG9ydEpzb24uY29tbWVudDtcblx0XHR0aGlzLnVzZXJFbWFpbCA9IHZvdGVSZXBvcnRKc29uLnVzZXJFbWFpbDtcblx0XHR0aGlzLnVzZXJSb2xlID0gdm90ZVJlcG9ydEpzb24udXNlclJvbGU7XG5cdFx0dGhpcy5jcmVhdGVkQXQgPSB2b3RlUmVwb3J0SnNvbi5jcmVhdGVkQXQ7XHRcblx0fVxufSIsImV4cG9ydCBpbnRlcmZhY2UgSUV2ZW50PFQ+IHtcbiAgICBkbyhoYW5kbGVyOiB7IChkYXRhPzogVCk6IHZvaWQgfSkgOiB2b2lkO1xuICAgIG9mZihoYW5kbGVyOiB7IChkYXRhPzogVCk6IHZvaWQgfSkgOiB2b2lkO1xufVxuXG5leHBvcnQgY2xhc3MgRXZlbnQ8VD4gaW1wbGVtZW50cyBJRXZlbnQ8VD4ge1xuICAgIHByaXZhdGUgaGFuZGxlcnM6IHsgKGRhdGE/OiBUKTogdm9pZDsgfVtdID0gW107XG5cbiAgICBwdWJsaWMgZG8oaGFuZGxlcjogeyAoZGF0YT86IFQpOiB2b2lkIH0pIHtcbiAgICAgICAgdGhpcy5oYW5kbGVycy5wdXNoKGhhbmRsZXIpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvZmYoaGFuZGxlcjogeyAoZGF0YT86IFQpOiB2b2lkIH0pIHtcbiAgICAgICAgdGhpcy5oYW5kbGVycyA9IHRoaXMuaGFuZGxlcnMuZmlsdGVyKGggPT4gaCAhPT0gaGFuZGxlcik7XG4gICAgfVxuXG4gICAgcHVibGljIGVtaXQoZGF0YT86IFQpIHtcbiAgICAgICAgdGhpcy5oYW5kbGVycy5zbGljZSgwKS5mb3JFYWNoKGggPT4gaChkYXRhKSk7XG4gICAgfVxufSIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcywgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgVmlld1BvcnQgfSBmcm9tIFwiLi9tYXAvdmlld3BvcnQuY2xhc3NcIjtcbmRlY2xhcmUgdmFyIEwgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBIaXN0b3J5U3RhdGVcbntcbiAgbW9kZTogQXBwTW9kZXM7XG4gIHN0YXRlIDogQXBwU3RhdGVzO1xuICBkYXRhVHlwZSA6IEFwcERhdGFUeXBlO1xuICBhZGRyZXNzIDogc3RyaW5nO1xuICB2aWV3cG9ydCA6IFZpZXdQb3J0O1xuICBpZCA6IGFueTtcbiAgdGV4dCA6IHN0cmluZztcbiAgZmlsdGVycyA6IHN0cmluZztcblxuICBwYXJzZSgkaGlzdG9yeVN0YXRlIDogYW55KSA6IEhpc3RvcnlTdGF0ZVxuICB7XG4gICAgdGhpcy5tb2RlID0gJGhpc3RvcnlTdGF0ZS5tb2RlID09ICdNYXAnID8gQXBwTW9kZXMuTWFwIDogQXBwTW9kZXMuTGlzdDtcbiAgICB0aGlzLnN0YXRlID0gcGFyc2VJbnQoQXBwU3RhdGVzWyRoaXN0b3J5U3RhdGUuc3RhdGVdKTtcbiAgICB0aGlzLmRhdGFUeXBlID0gcGFyc2VJbnQoQXBwRGF0YVR5cGVbJGhpc3RvcnlTdGF0ZS5kYXRhVHlwZV0pO1xuICAgIHRoaXMuYWRkcmVzcyA9ICRoaXN0b3J5U3RhdGUuYWRkcmVzcztcbiAgICB0aGlzLnZpZXdwb3J0ID0gdHlwZW9mICRoaXN0b3J5U3RhdGUudmlld3BvcnQgPT09ICdzdHJpbmcnID8gbmV3IFZpZXdQb3J0KCkuZnJvbVN0cmluZygkaGlzdG9yeVN0YXRlLnZpZXdwb3J0KSA6ICRoaXN0b3J5U3RhdGUudmlld3BvcnQ7XG4gICAgdGhpcy5pZCA9ICRoaXN0b3J5U3RhdGUuaWQ7XG4gICAgdGhpcy50ZXh0ID0gJGhpc3RvcnlTdGF0ZS50ZXh0O1xuICAgIHRoaXMuZmlsdGVycyA9ICRoaXN0b3J5U3RhdGUuZmlsdGVycztcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufSIsImV4cG9ydCBjbGFzcyBUaWxlTGF5ZXJcbntcbiAgbmFtZSA6IHN0cmluZyA9ICcnO1xuICB1cmwgOiBzdHJpbmcgPSAnJztcbiAgYXR0cmlidXRpb24gOiBzdHJpbmc7XG5cbiAgY29uc3RydWN0b3IobmFtZSA6IHN0cmluZywgdXJsIDogc3RyaW5nLCBhdHRyaWJ1dGlvbj8gOiBzdHJpbmcpIHsgXG4gICAgdGhpcy5uYW1lID0gbmFtZTsgXG4gICAgdGhpcy51cmwgPSB1cmw7IFxuICAgIHRoaXMuYXR0cmlidXRpb24gPSBhdHRyaWJ1dGlvbiB8fCAnwqkgPGEgaHJlZj1cImh0dHBzOi8vd3d3Lm9wZW5zdHJlZXRtYXAub3JnL2NvcHlyaWdodFwiPk9wZW5TdHJlZXRNYXA8L2E+J1xuICB9XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgTDtcblxuZXhwb3J0IGNsYXNzIFZpZXdQb3J0XG57XG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBsYXQgOiBudW1iZXIgPSAwLCBcbiAgICAgICAgICBwdWJsaWMgbG5nIDpudW1iZXIgPSAwLCBcbiAgICAgICAgICBwdWJsaWMgem9vbSA6IG51bWJlciA9IDApXG4gIHtcbiAgICB0aGlzLmxhdCA9IGxhdCB8fCAwO1xuICAgIHRoaXMubG5nID0gbG5nIHx8IDA7XG4gICAgdGhpcy56b29tID0gem9vbSB8fCAwO1xuICB9XG5cbiAgdG9TdHJpbmcoKVxuICB7XG4gICAgbGV0IGRpZ2l0cyA9IHRoaXMuem9vbSA+IDE0ID8gNCA6IHRoaXMuem9vbSA+IDEwID8gMyA6IDI7XG4gICAgcmV0dXJuIGBAJHt0aGlzLmxhdC50b0ZpeGVkKGRpZ2l0cyl9LCR7dGhpcy5sbmcudG9GaXhlZChkaWdpdHMpfSwke3RoaXMuem9vbX16YDtcbiAgfVxuXG4gIGZyb21TdHJpbmcoc3RyaW5nIDogc3RyaW5nKVxuICB7XG4gICAgaWYgKCFzdHJpbmcpIHJldHVybiBudWxsO1xuXG4gICAgbGV0IGRlY29kZSA9IHN0cmluZy5zcGxpdCgnQCcpLnBvcCgpLnNwbGl0KCcsJyk7XG4gICAgaWYgKGRlY29kZS5sZW5ndGggIT0gMykge1xuICAgICAgY29uc29sZS5sb2coXCJWaWV3UG9ydCBmcm9tU3RyaW5nIGVycmV1clwiLCBzdHJpbmcpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHRoaXMubGF0ID0gcGFyc2VGbG9hdChkZWNvZGVbMF0pICUgMzYwO1xuICAgIHRoaXMubG5nID0gcGFyc2VGbG9hdChkZWNvZGVbMV0pICUgMzYwO1xuICAgIHRoaXMuem9vbSA9IHBhcnNlSW50KGRlY29kZVsyXS5zbGljZSgwLC0xKSk7XG5cbiAgICAvL2NvbnNvbGUubG9nKFwiVmlld1BvcnQgZnJvbVN0cmluZyBEb25lXCIsIHRoaXMpO1xuXG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICB0b0xvY2F0aW9uKClcbiAge1xuICAgIHJldHVybiBMLmxhdExuZyh0aGlzLmxhdCwgdGhpcy5sbmcpO1xuICB9XG59IiwiaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IE9wdGlvbiB9IGZyb20gXCIuL29wdGlvbi5jbGFzc1wiO1xuaW1wb3J0IHsgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSwgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUgfSBmcm9tIFwiLi4vLi4vY29tcG9uZW50cy9kaXJlY3RvcnktbWVudS9jYXRlZ29yeS1vcHRpb24tdHJlZS1ub2RlLmNsYXNzXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIGxldCAkIDogYW55O1xuXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnkgZXh0ZW5kcyBDYXRlZ29yeU9wdGlvblRyZWVOb2RlXG57IFxuXHRlbmFibGVEZXNjcmlwdGlvbiA6IGJvb2xlYW47XG5cdGRpc3BsYXlTdWJvcHRpb25zSW5saW5lIDogYm9vbGVhbjtcblx0dXNlRm9yRmlsdGVyaW5nIDogYm9vbGVhbjsgLy8gaWYgdHJ1ZSwgdGhlIGVsZW1lbnQgd2lsbCBiZSBoaWRkZW4gd2hlbiBub3QgZnVsbGZpbGxpbmcgYXQgbGVhc3Qgb25lIGNoZWNrZWQgb3B0aW9uIG9mIHRoaXMgY2F0ZWdvcnlcblx0aXNNYW5kYXRvcnkgOiBib29sZWFuOyBcdC8vIGlmIHRoZSBlbGVtZW50IGhhdmUgbm8gb3B0aW9uIGluIHRoaXMgY2F0ZWdvcnksIGl0IHdpbGwgbm90IGJlIGRpc3BsYXllZFxuXHRpc1Jvb3RDYXRlZ29yeTogYm9vbGVhbjtcblxuXHRjb25zdHJ1Y3RvcigkY2F0ZWdvcnlKc29uIDogYW55KVxuXHR7XG5cdFx0c3VwZXIoQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUuQ2F0ZWdvcnksICcjY2F0ZWdvcnktJywgJyNzdWJjYXRlZ29yaWUtY2hlY2tib3gtJywgJy5vcHRpb25zLXdyYXBwZXInKTtcblxuXHRcdHRoaXMuaWQgPSAkY2F0ZWdvcnlKc29uLmlkO1xuXHRcdHRoaXMubmFtZSA9IGNhcGl0YWxpemUoJGNhdGVnb3J5SnNvbi5uYW1lIHx8IFwiXCIpO1xuXHRcdHRoaXMubmFtZVNob3J0ID0gY2FwaXRhbGl6ZSgkY2F0ZWdvcnlKc29uLm5hbWVTaG9ydCB8fCB0aGlzLm5hbWUpO1xuXG5cdFx0dGhpcy5pc1Jvb3RDYXRlZ29yeSA9ICRjYXRlZ29yeUpzb24uaXNSb290Q2F0ZWdvcnkgfHwgZmFsc2U7XG5cblx0XHR0aGlzLmRpc3BsYXlJbk1lbnUgPSAoJGNhdGVnb3J5SnNvbi5kaXNwbGF5SW5NZW51IHx8IHRoaXMuaXNSb290Q2F0ZWdvcnkpICYmIHRoaXMubmFtZSAhPSBcIlwiO1xuXHRcdHRoaXMuZGlzcGxheUluSW5mb0JhciA9ICgkY2F0ZWdvcnlKc29uLmRpc3BsYXlJbkluZm9CYXIgfHwgdGhpcy5pc1Jvb3RDYXRlZ29yeSkgJiYgdGhpcy5uYW1lICE9IFwiXCI7XG5cblx0XHR0aGlzLnNob3dFeHBhbmRlZCA9ICRjYXRlZ29yeUpzb24uc2hvd0V4cGFuZGVkICE9PSBmYWxzZTtcblx0XHR0aGlzLnVuZXhwYW5kYWJsZSA9ICRjYXRlZ29yeUpzb24udW5leHBhbmRhYmxlIHx8IGZhbHNlO1xuXHRcdFxuXHRcdHRoaXMuZW5hYmxlRGVzY3JpcHRpb24gPSAkY2F0ZWdvcnlKc29uLmVuYWJsZURlc2NyaXB0aW9uIHx8IGZhbHNlO1x0XG5cdFx0dGhpcy5kaXNwbGF5U3Vib3B0aW9uc0lubGluZSA9ICRjYXRlZ29yeUpzb24uZGlzcGxheVN1Ym9wdGlvbnNJbmxpbmUgfHwgZmFsc2U7XHRcblx0XHR0aGlzLmlzTWFuZGF0b3J5ID0gJGNhdGVnb3J5SnNvbi5pc01hbmRhdG9yeSAhPT0gZmFsc2U7XG5cdFx0dGhpcy51c2VGb3JGaWx0ZXJpbmcgPSAkY2F0ZWdvcnlKc29uLnVzZUZvckZpbHRlcmluZyAhPT0gZmFsc2U7XG5cdFx0dGhpcy5tYWluT3duZXJJZCA9ICRjYXRlZ29yeUpzb24ubWFpbk93bmVySWQgfHwgbnVsbDtcblx0fVxuXG5cdGFkZE9wdGlvbigkb3B0aW9uIDogT3B0aW9uKSB7IHRoaXMuY2hpbGRyZW4ucHVzaCgkb3B0aW9uKTsgfVxuXG5cdGdldCBvcHRpb25zKCkgOiBPcHRpb25bXSB7IHJldHVybiA8T3B0aW9uW10+IHRoaXMuY2hpbGRyZW47IH1cblxuXHRnZXQgZGlzYWJsZWRPcHRpb25zKCkgOiBPcHRpb25bXSB7IHJldHVybiA8T3B0aW9uW10+IHRoaXMuZGlzYWJsZWRDaGlsZHJlbigpOyB9XG5cdGdldCBub25EaXNhYmxlZE9wdGlvbnMoKSA6IE9wdGlvbltdIHsgcmV0dXJuIDxPcHRpb25bXT4gdGhpcy5ub25EaXNhYmxlZENoaWxkcmVuKCk7IH1cblx0Z2V0IGNoZWNrZWRPcHRpb25zKCkgOiBPcHRpb25bXSB7IHJldHVybiA8T3B0aW9uW10+IHRoaXMuY2hlY2tlZENoaWxkcmVuKCk7IH1cbn1cbiIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBDYXRlZ29yeSB9IGZyb20gXCIuL2NhdGVnb3J5LmNsYXNzXCI7XG5pbXBvcnQgeyBDYXRlZ29yeU9wdGlvblRyZWVOb2RlLCBDYXRlZ29yeU9wdGlvblRyZWVOb2RlVHlwZSB9IGZyb20gXCIuLi8uLi9jb21wb25lbnRzL2RpcmVjdG9yeS1tZW51L2NhdGVnb3J5LW9wdGlvbi10cmVlLW5vZGUuY2xhc3NcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgc2x1Z2lmeSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuZGVjbGFyZSBsZXQgJCA6IGFueTtcblxuZXhwb3J0IGNsYXNzIE9wdGlvbiBleHRlbmRzIENhdGVnb3J5T3B0aW9uVHJlZU5vZGVcbnsgXG5cdGNvbG9yIDogc3RyaW5nO1xuXHRzb2Z0Q29sb3IgOiBzdHJpbmc7XG5cdGljb24gOiBzdHJpbmc7XG5cdHVzZUljb25Gb3JNYXJrZXI6IGJvb2xlYW47XG5cdHVzZUNvbG9yRm9yTWFya2VyIDogYm9vbGVhbjtcbiAgIHRleHRIZWxwZXIgOiBzdHJpbmc7XG5cbiAgIGRpc3BsYXlDaGlsZHJlbkluTWVudSA6IGJvb2xlYW47XG5cdGRpc3BsYXlDaGlsZHJlbkluSW5mb0JhciA6IGJvb2xlYW47XG4gIFxuICAgaW50SWQgOiBudW1iZXI7IC8vIEFuZCBJZCBhcyBudW1iZXIsIHVzZWQgZm9yIGNyZWF0aW5nIHRoZSBvcHRpb24gdXJsXG5cblx0cGFyZW50T3B0aW9uSWRzIDogbnVtYmVyW10gPSBbXTtcblxuXHRjb25zdHJ1Y3Rvcigkb3B0aW9uSnNvbiA6IGFueSlcblx0e1xuXHRcdHN1cGVyKENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlLk9wdGlvbiwgJyNvcHRpb24tJywgJyNvcHRpb24tY2hlY2tib3gtJywgJy5zdWJjYXRlZ29yaWVzLXdyYXBwZXInKTtcblxuXHRcdHRoaXMubmFtZSA9IGNhcGl0YWxpemUoJG9wdGlvbkpzb24ubmFtZSk7XG5cdFx0dGhpcy5uYW1lU2hvcnQgPSBjYXBpdGFsaXplKCRvcHRpb25Kc29uLm5hbWVTaG9ydCB8fCB0aGlzLm5hbWUpO1xuXHRcdHRoaXMuaWQgPSAoJ2lkJyBpbiAkb3B0aW9uSnNvbikgPyAnJyArICRvcHRpb25Kc29uLmlkIDogc2x1Z2lmeSh0aGlzLm5hbWVTaG9ydCk7XG5cdFx0dGhpcy5pbnRJZCA9IHR5cGVvZiAkb3B0aW9uSnNvbi5pZCA9PSAnbnVtYmVyJyA/ICRvcHRpb25Kc29uLmlkIDogJG9wdGlvbkpzb24uaW50SWQ7XHRcdFxuXG5cdFx0dGhpcy5kaXNwbGF5SW5NZW51ID0gJG9wdGlvbkpzb24uZGlzcGxheUluTWVudSAhPT0gZmFsc2U7XG5cdFx0dGhpcy5kaXNwbGF5SW5JbmZvQmFyID0gJG9wdGlvbkpzb24uZGlzcGxheUluSW5mb0JhciAhPT0gZmFsc2U7XG5cdFx0dGhpcy5kaXNwbGF5Q2hpbGRyZW5Jbk1lbnUgPSAkb3B0aW9uSnNvbi5kaXNwbGF5Q2hpbGRyZW5Jbk1lbnUgIT09IGZhbHNlO1xuXHRcdHRoaXMuZGlzcGxheUNoaWxkcmVuSW5JbmZvQmFyID0gJG9wdGlvbkpzb24uZGlzcGxheUNoaWxkcmVuSW5JbmZvQmFyICE9PSBmYWxzZTtcblxuXHRcdHRoaXMuc2hvd0V4cGFuZGVkID0gJG9wdGlvbkpzb24uc2hvd0V4cGFuZGVkIHx8IGZhbHNlO1xuXHRcdHRoaXMudW5leHBhbmRhYmxlID0gJG9wdGlvbkpzb24udW5leHBhbmRhYmxlIHx8IGZhbHNlO1xuXHRcdFxuXHRcdHRoaXMuY29sb3IgPSAkb3B0aW9uSnNvbi5jb2xvcjtcblx0XHR0aGlzLnNvZnRDb2xvciA9ICRvcHRpb25Kc29uLnNvZnRDb2xvciB8fCB0aGlzLmNvbG9yO1xuXHRcdHRoaXMuaWNvbiA9ICRvcHRpb25Kc29uLmljb247XG5cdFx0dGhpcy50ZXh0SGVscGVyID0gJG9wdGlvbkpzb24udGV4dEhlbHBlcjtcblx0XHR0aGlzLnVzZUljb25Gb3JNYXJrZXIgPSAoJ3VzZUljb25Gb3JNYXJrZXInIGluICRvcHRpb25Kc29uKSA/ICRvcHRpb25Kc29uLnVzZUljb25Gb3JNYXJrZXIgOiAhIXRoaXMuaWNvbjtcblx0XHR0aGlzLnVzZUNvbG9yRm9yTWFya2VyID0gKCd1c2VDb2xvckZvck1hcmtlcicgaW4gJG9wdGlvbkpzb24pID8gJG9wdGlvbkpzb24udXNlQ29sb3JGb3JNYXJrZXIgOiAhIXRoaXMuY29sb3I7XHRcdFxuXHR9XG5cblx0YWRkQ2F0ZWdvcnkoJGNhdGVnb3J5IDogQ2F0ZWdvcnkpIHsgdGhpcy5jaGlsZHJlbi5wdXNoKCRjYXRlZ29yeSk7ICB9XG5cblx0aXNDb2xsYXBzaWJsZSgpIDogYm9vbGVhbiB7IHJldHVybiB0aGlzLmdldERvbSgpLmhhc0NsYXNzKCdvcHRpb24tY29sbGFwc2libGUnKTsgfVxuXG5cdGdldCBzdWJjYXRlZ29yaWVzKCkgOiBDYXRlZ29yeVtdIHsgcmV0dXJuIDxDYXRlZ29yeVtdPiB0aGlzLmNoaWxkcmVuOyB9XG5cblx0Z2V0IGFsbENoaWxkcmVuT3B0aW9ucygpIDogT3B0aW9uW11cblx0e1xuXHRcdHJldHVybiB0aGlzLnJlY3Vyc2l2ZWx5R2V0Q2hpbGRyZW5PcHRpb24odGhpcyk7XG5cdH1cblxuXHRwcml2YXRlIHJlY3Vyc2l2ZWx5R2V0Q2hpbGRyZW5PcHRpb24ocGFyZW50T3B0aW9uIDogT3B0aW9uKSA6IE9wdGlvbltdXG5cdHtcblx0XHRsZXQgcmVzdWx0T3B0aW9ucyA6IE9wdGlvbltdID0gW107XG5cdFx0Zm9yKGxldCBjYXQgb2YgcGFyZW50T3B0aW9uLnN1YmNhdGVnb3JpZXMpXG5cdFx0e1xuXHRcdFx0cmVzdWx0T3B0aW9ucyA9IHJlc3VsdE9wdGlvbnMuY29uY2F0KGNhdC5vcHRpb25zKTtcblx0XHRcdGZvcihsZXQgb3B0aW9uIG9mIGNhdC5vcHRpb25zKVxuXHRcdFx0e1xuXHRcdFx0XHRyZXN1bHRPcHRpb25zID0gcmVzdWx0T3B0aW9ucy5jb25jYXQodGhpcy5yZWN1cnNpdmVseUdldENoaWxkcmVuT3B0aW9uKG9wdGlvbikpO1xuXHRcdFx0fVxuXHRcdH1cblx0XHRyZXR1cm4gcmVzdWx0T3B0aW9ucztcblx0fVxuXG5cdGdldCBwYXJlbnRPcHRpb25OYW1lKCkgOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5nZXRPd25lcigpID8gdGhpcy5nZXRPd25lcigpLmdldE93bmVyKCkgPyB0aGlzLmdldE93bmVyKCkuZ2V0T3duZXIoKS5uYW1lIDogJycgOiAnJzsgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmRlY2xhcmUgbGV0ICQsIGpRdWVyeSA6IGFueTtcblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgKiBhcyBDb29raWVzIGZyb20gXCIuLi91dGlscy9jb29raWVzXCI7XG5cbmV4cG9ydCBjbGFzcyBDdXN0b21Qb3B1cENvbXBvbmVudFxueyAgICBcbiAgb3B0aW9ucyA6IGFueTtcblxuICBpbml0aWFsaXplKClcbiAge1xuICAgIGlmICghQXBwLmNvbmZpZy5pc0ZlYXR1cmVBdmFpbGFibGUoJ2N1c3RvbVBvcHVwJykpIHJldHVybjtcbiAgICB0aGlzLm9wdGlvbnMgPSBBcHAuY29uZmlnLmZlYXR1cmVzLmN1c3RvbVBvcHVwLm9wdGlvbnM7XG4gICAgLy8gY29uc29sZS5sb2coXCJjb29raWVcIiwgdGhpcy5nZXRDb29raWVJZCgpLCBDb29raWVzLnJlYWRDb29raWUodGhpcy5nZXRDb29raWVJZCgpKSlcbiAgICBpZiAoKCF0aGlzLm9wdGlvbnMuc2hvd09ubHlPbmNlIHx8ICFDb29raWVzLnJlYWRDb29raWUodGhpcy5nZXRDb29raWVJZCgpKSkgJiYgdGhpcy5vcHRpb25zLnRleHQubGVuZ3RoID4gMCkgdGhpcy5zaG93KCk7XG4gICAgJCgnI2dvZ28tY3VzdG9tLXBvcHVwICNidG4tY2xvc2UtY3VzdG9tLXBvcHVwJykuY2xpY2soICgpID0+IHRoaXMuaGlkZSgpKTtcbiAgfVxuXG4gIGhpZGUoZGVsYXkgOiBudW1iZXIgPSAyNTApIHsgXG4gICAgJCgnI2dvZ28tY3VzdG9tLXBvcHVwJykuZmFkZU91dChkZWxheSk7IFxuICAgIENvb2tpZXMuY3JlYXRlQ29va2llKHRoaXMuZ2V0Q29va2llSWQoKSwgdHJ1ZSk7XG4gIH1cblxuICBzaG93KGRlbGF5IDogbnVtYmVyID0gNDAwKSB7ICQoJyNnb2dvLWN1c3RvbS1wb3B1cCcpLmZhZGVJbihkZWxheSk7IH1cblxuICBnZXRJZCgpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5vcHRpb25zLmlkIHx8IDA7XG4gIH1cblxuICBnZXRDb29raWVJZCgpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gYGdvZ29DdXN0b21Qb3B1cC0ke3RoaXMuZ2V0SWQoKX0tQ2xvc2VkYFxuICB9XG59IiwiaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBPcHRpb24gfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy90YXhvbm9teS9vcHRpb24uY2xhc3NcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJCA6IGFueTtcblxuZXhwb3J0IGVudW0gQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGVcbntcblx0T3B0aW9uLFxuXHRDYXRlZ29yeVxufVxuXG4vKipcbiogQ2xhc3MgcmVwcmVzZW50YXRpbmcgYSBOb2RlIGluIHRoZSBEaXJlY3RvcnkgTWVudSBUcmVlXG4qXG4qIEEgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSBjYW4gYmUgYSBDYXRlZ29yeSBvciBhbiBPcHRpb25cbiovXG5leHBvcnQgY2xhc3MgQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZSBcbntcblx0aWQgOiBhbnk7XG5cdG5hbWUgOiBzdHJpbmc7XG5cdG5hbWVTaG9ydDogc3RyaW5nO1xuXG5cdGRpc3BsYXlJbk1lbnUgOiBib29sZWFuO1xuXHRkaXNwbGF5SW5JbmZvQmFyIDogYm9vbGVhbjtcblxuXHRzaG93RXhwYW5kZWQgOiBib29sZWFuO1xuXHR1bmV4cGFuZGFibGUgOiBib29sZWFuO1xuXG5cdGNoaWxkcmVuIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVtdID0gW107XG5cblx0Ly8gaXMgdGhlIG5vZGUgaGFuJ3QgYmUgdG91Y2hlZCBmb3Igbm93LCBpdCdzIG9uIGl0J3MgZmlyc3QgaW5pdGlhbGl6ZWQgc3RhdGVcblx0aXNQcmlzdGluZSA6IGJvb2xlYW4gPSB0cnVlO1xuXG5cdG93bmVySWQgOiBudW1iZXIgPSBudWxsO1xuXHQvLyBtYWluIG9wdGlvbiBJZCwgb3IgXCJhbGxcIlxuXHRtYWluT3duZXJJZCA6IGFueSA9IG51bGw7XG5cblx0aXNDaGVja2VkIDogYm9vbGVhbiA9IHRydWU7XG5cdGlzRGlzYWJsZWQgOiBib29sZWFuID0gZmFsc2U7XHRcdFxuXG5cdGlzTWFpbk9wdGlvbiA6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3Rvcihwcml2YXRlIFRZUEUgOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlVHlwZSwgcHJpdmF0ZSBET01fSUQgOiBzdHJpbmcsIHByaXZhdGUgRE9NX0NIRUNLQk9YX0lEIDogc3RyaW5nLCBwcml2YXRlIERPTV9DSElMRFJFTl9DTEFTUyA6IHN0cmluZykge307XG5cblx0Z2V0RG9tKCkgeyByZXR1cm4gJCh0aGlzLkRPTV9JRCArIHRoaXMuaWQpOyB9XG5cblx0Z2V0RG9tQ2hlY2tib3goKSB7IHJldHVybiAkKHRoaXMuRE9NX0NIRUNLQk9YX0lEICsgdGhpcy5pZCk7IH1cblxuXHRnZXREb21DaGlsZHJlbigpIHsgcmV0dXJuIHRoaXMuZ2V0RG9tKCkubmV4dCh0aGlzLkRPTV9DSElMRFJFTl9DTEFTUyk7fVxuXG5cdGdldE93bmVyKCkgOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlIFxuXHR7IFxuXHRcdGlmICh0aGlzLlRZUEUgPT0gQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUuT3B0aW9uKVxuXHRcdFx0cmV0dXJuIEFwcC50YXhvbm9teU1vZHVsZS5nZXRDYXRlZ29yeUJ5SWQodGhpcy5vd25lcklkKTsgXG5cblx0XHRpZiAodGhpcy5UWVBFID09IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVUeXBlLkNhdGVnb3J5KVxuXHRcdFx0cmV0dXJuIEFwcC50YXhvbm9teU1vZHVsZS5nZXRPcHRpb25CeUlkKHRoaXMub3duZXJJZCk7IFxuXG5cdFx0cmV0dXJuIG51bGw7XG5cdH1cblxuXHRwcm90ZWN0ZWQgZGlzYWJsZWRDaGlsZHJlbigpIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVtdIHsgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZmlsdGVyKCBjaGlsZCA9PiBjaGlsZC5pc0Rpc2FibGVkKTsgfVxuXHRwcm90ZWN0ZWQgbm9uRGlzYWJsZWRDaGlsZHJlbigpIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVtdIHsgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZmlsdGVyKCBjaGlsZCA9PiAhY2hpbGQuaXNEaXNhYmxlZCk7IH1cblx0cHJvdGVjdGVkIGNoZWNrZWRDaGlsZHJlbigpIDogQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVtdIHsgcmV0dXJuIHRoaXMuY2hpbGRyZW4uZmlsdGVyKCBjaGlsZCA9PiBjaGlsZC5pc0NoZWNrZWQpOyB9XG5cblx0aXNPcHRpb24oKSB7IHJldHVybiB0aGlzLlRZUEUgPT0gQ2F0ZWdvcnlPcHRpb25UcmVlTm9kZVR5cGUuT3B0aW9uIH1cblxuXHRzZXRDaGVja2VkKGJvb2wgOiBib29sZWFuKVxuXHR7XG5cdFx0dGhpcy5pc0NoZWNrZWQgPSBib29sO1xuXHRcdHRoaXMuZ2V0RG9tKCkudG9nZ2xlQ2xhc3MoXCJjaGVja2VkXCIsIGJvb2wpO1xuXHRcdHRoaXMuZ2V0RG9tQ2hlY2tib3goKS5wcm9wKFwiY2hlY2tlZFwiLCBib29sKTtcblx0XHR0aGlzLmlzUHJpc3RpbmUgPSBmYWxzZTtcblx0fVxuXG5cdHNldERpc2FibGVkKGJvb2wgOiBib29sZWFuKVxuXHR7XG5cdFx0dGhpcy5pc0Rpc2FibGVkID0gYm9vbDtcblx0XHR0aGlzLmdldERvbSgpLnRvZ2dsZUNsYXNzKFwiZGlzYWJsZWRcIiwgYm9vbCk7XG5cdFx0aWYgKGJvb2wpIHRoaXMuc2V0Q2hlY2tlZChmYWxzZSk7XHRcdFx0XG5cdFx0dGhpcy5pc1ByaXN0aW5lID0gZmFsc2U7XG5cdH1cblxuXHR0b2dnbGUodmFsdWUgOiBib29sZWFuID0gbnVsbCwgaHVtYW5BY3Rpb24gOiBib29sZWFuID0gdHJ1ZSlcblx0e1x0XHRcblx0XHRsZXQgY2hlY2s7XG5cdFx0aWYgKHZhbHVlICE9IG51bGwpIGNoZWNrID0gdmFsdWU7XG5cdFx0ZWxzZSBjaGVjayA9ICF0aGlzLmlzQ2hlY2tlZDtcblxuXHRcdGlmICh0aGlzLmlzT3B0aW9uKCkgJiYgdGhpcy5pc1ByaXN0aW5lICYmIGh1bWFuQWN0aW9uKVxuXHRcdHtcblx0XHRcdHRoaXMucmVjdXJzaXZlbHlHZXRQcmlzdGluZSh0aGlzKS5mb3JFYWNoKCAobm9kZSkgPT4ge1xuXHRcdFx0XHRub2RlLnRvZ2dsZShmYWxzZSwgZmFsc2UpO1xuXHRcdFx0fSk7XG5cdFx0XHQvLyBmb3JjZSBjaGVjayB0byB0cnVlLCBiZWNhc3VlIGluIHByaXN0aW5lIG1vZGUgaW5wdXQgaXMgdW5jaGVja2VkIGJ1dCBvcHRpb24gY2xhc3MgaXMgY2hlY2tlZCBhbmQgbm90IGRpc2FibGVkXG5cdFx0XHRjaGVjayA9IHRydWU7XG5cdFx0fVx0XHRcdFxuXG5cdFx0dGhpcy5zZXRDaGVja2VkKGNoZWNrKTtcblx0XHR0aGlzLnNldERpc2FibGVkKCFjaGVjayk7XG5cblx0XHRpZiAoIXRoaXMuaXNNYWluT3B0aW9uIHx8ICFBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKSBcblx0XHR7XG5cdFx0XHRmb3IgKGxldCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKSBjaGlsZC50b2dnbGUoY2hlY2ssIGZhbHNlKTtcblx0XHR9XG5cblx0XHRpZihodW1hbkFjdGlvbilcblx0XHR7XG5cdFx0XHRpZiAodGhpcy5nZXRPd25lcigpKSB0aGlzLmdldE93bmVyKCkudXBkYXRlU3RhdGUoKTtcblx0XHRcdFxuXHRcdFx0Ly8gZGVsYXkgdGhlIHVwZGF0ZSBzbyBpdCdzIG5vdCBmcmVlemluZyB0aGUgVUlcblx0XHRcdHNldFRpbWVvdXQoICgpID0+IHtcblx0XHRcdFx0QXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KGNoZWNrLCB0cnVlKTtcblx0XHRcdFx0QXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKCk7XG5cdFx0XHR9LDIwMCk7XHRcdFx0XHRcblx0XHR9XG5cdH1cblxuXHR0b2dnbGVWaXNpYmlsaXR5KHZhbHVlIDogYm9vbGVhbiwgcmVjdXJzaXZlIDogYm9vbGVhbiA9IGZhbHNlKVxuXHR7XG5cdFx0Ly9jb25zb2xlLmxvZyhcInRvZ2dsZSB2aXNpYmlsaXR5IFwiLCB2YWx1ZSk7XG5cdFx0dGhpcy5pc0NoZWNrZWQgPSB2YWx1ZTtcblxuXHRcdGlmICh2YWx1ZSkgdGhpcy5nZXREb20oKS5zaG93KCk7XG5cdFx0ZWxzZSB7IHRoaXMuZ2V0RG9tKCkuaGlkZSgpO31cblxuXHRcdGlmICh0aGlzLmlzTWFpbk9wdGlvbilcblx0XHR7XG5cdFx0XHQkKCcjbWFpbi1vcHRpb24tZ29nby1pY29uLScgKyB0aGlzLmlkKS50b2dnbGUodmFsdWUpO1xuXHRcdH1cblxuXHRcdGlmICh2YWx1ZSAmJiB0aGlzLmdldE93bmVyKCkpIHRoaXMuZ2V0T3duZXIoKS50b2dnbGVWaXNpYmlsaXR5KHRydWUpO1xuXG5cdFx0aWYgKHJlY3Vyc2l2ZSkgZm9yIChsZXQgY2hpbGQgb2YgdGhpcy5jaGlsZHJlbikgY2hpbGQudG9nZ2xlVmlzaWJpbGl0eSh2YWx1ZSwgdHJ1ZSk7XG5cdH1cblxuXHR1cGRhdGVTdGF0ZShwcm9wYWdlID0gdHJ1ZSlcblx0e1xuXHRcdGlmICh0aGlzLmlzTWFpbk9wdGlvbiAmJiBBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKSByZXR1cm47XHRcblxuXHRcdGlmICh0aGlzLmNoaWxkcmVuLmxlbmd0aCA9PSAwKSBcblx0XHRcdHRoaXMuc2V0RGlzYWJsZWQoIXRoaXMuaXNDaGVja2VkKTtcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0bGV0IGRpc2FibGVkQ2hpbGRyZW5Db3VudCA9IHRoaXMuY2hpbGRyZW4uZmlsdGVyKCAoY2hpbGQgOiBDYXRlZ29yeU9wdGlvblRyZWVOb2RlKSA9PiBjaGlsZC5pc0Rpc2FibGVkKS5sZW5ndGg7XG5cblx0XHRcdC8vY29uc29sZS5sb2coXCJPcHRpb24gXCIgKyB0aGlzLm5hbWUgKyBcIiB1cGRhdGUgc3RhdGUsIG5icmUgY2hpbGRyZW4gZGlzYWJsZWQgPSBcIiwgZGlzYWJsZWRDaGlsZHJlbkNvdW50KTtcblxuXHRcdFx0aWYgKGRpc2FibGVkQ2hpbGRyZW5Db3VudCA9PSB0aGlzLmNoaWxkcmVuLmxlbmd0aClcblx0XHRcdFx0dGhpcy5zZXREaXNhYmxlZCh0cnVlKTtcdFxuXHRcdFx0ZWxzZVxuXHRcdFx0XHR0aGlzLnNldERpc2FibGVkKGZhbHNlKTtcblxuXHRcdFx0bGV0IGNoZWNrZWRDaGlsZHJlbkNvdW50ID0gdGhpcy5jaGlsZHJlbi5maWx0ZXIoIChjaGlsZCA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGUpID0+IGNoaWxkLmlzQ2hlY2tlZCkubGVuZ3RoO1xuXHRcdFx0aWYgKGNoZWNrZWRDaGlsZHJlbkNvdW50ID09IHRoaXMuY2hpbGRyZW4ubGVuZ3RoKVxuXHRcdFx0XHR0aGlzLnNldENoZWNrZWQodHJ1ZSk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHRoaXMuc2V0Q2hlY2tlZChmYWxzZSlcblx0XHR9XHRcdFxuXG5cdFx0aWYgKHRoaXMuZ2V0T3duZXIoKSAmJiBwcm9wYWdlKSB0aGlzLmdldE93bmVyKCkudXBkYXRlU3RhdGUoKTtcdFxuXHR9XG5cblx0cmVjdXJzaXZlbHlVcGRhdGVTdGF0ZXMoKVxuXHR7XG5cdFx0Zm9yKGxldCBjaGlsZCBvZiB0aGlzLmNoaWxkcmVuKVxuXHRcdHtcblx0XHRcdGNoaWxkLnJlY3Vyc2l2ZWx5VXBkYXRlU3RhdGVzKCk7XG5cdFx0fVxuXG5cdFx0dGhpcy51cGRhdGVTdGF0ZSgpO1xuXHR9XG5cblx0aXNFeHBhbmRlZCgpIDogYm9vbGVhbiB7IHJldHVybiB0aGlzLmdldERvbSgpLmhhc0NsYXNzKCdleHBhbmRlZCcpOyB9XG5cdGlzVW5leHBhbmRhYmxlKCkgOiBib29sZWFuIHsgcmV0dXJuIHRoaXMuZ2V0RG9tKCkuaGFzQ2xhc3MoJ3VuZXhwYW5kYWJsZScpOyB9XG5cblx0dG9nZ2xlQ2hpbGRyZW5EZXRhaWwoKVxuXHR7XG5cdFx0aWYgKHRoaXMuaXNVbmV4cGFuZGFibGUoKSkgcmV0dXJuO1xuXG5cdFx0aWYgKHRoaXMuaXNFeHBhbmRlZCgpKVxuXHRcdHtcblx0XHRcdHRoaXMuZ2V0RG9tQ2hpbGRyZW4oKS5zdG9wKHRydWUsZmFsc2UpLnNsaWRlVXAoeyBkdXJhdGlvbjogMzUwLCBlYXNpbmc6IFwiZWFzZU91dFF1YXJ0XCIsIHF1ZXVlOiBmYWxzZSwgY29tcGxldGU6IGZ1bmN0aW9uKCkgeyQodGhpcykuY3NzKCdoZWlnaHQnLCAnJyk7fX0pO1xuXHRcdFx0dGhpcy5nZXREb20oKS5yZW1vdmVDbGFzcygnZXhwYW5kZWQnKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHRoaXMuZ2V0RG9tQ2hpbGRyZW4oKS5zdG9wKHRydWUsZmFsc2UpLnNsaWRlRG93bih7IGR1cmF0aW9uOiAzNTAsIGVhc2luZzogXCJlYXNlT3V0UXVhcnRcIiwgcXVldWU6IGZhbHNlLCBjb21wbGV0ZTogZnVuY3Rpb24oKSB7JCh0aGlzKS5jc3MoJ2hlaWdodCcsICcnKTt9fSk7XG5cdFx0XHR0aGlzLmdldERvbSgpLmFkZENsYXNzKCdleHBhbmRlZCcpO1xuXHRcdH1cblx0fVxuXG5cdGdldFNpYmxpbmdzUHJpc3RpbmUoKSA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGVbXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0T3duZXIoKS5jaGlsZHJlbi5maWx0ZXIoIChub2RlKSA9PiBub2RlLmlzUHJpc3RpbmUgJiYgbm9kZS5pZCAhPSB0aGlzLmlkKTsgXG5cdH1cblxuXHRwcml2YXRlIHJlY3Vyc2l2ZWx5R2V0UHJpc3RpbmUoY3Vyck9wdGlvbiA6IENhdGVnb3J5T3B0aW9uVHJlZU5vZGUpXG5cdHtcblx0XHRsZXQgcmVzdWx0Tm9kZXMgPSBbXTtcblx0XHRyZXN1bHROb2RlcyA9IHJlc3VsdE5vZGVzLmNvbmNhdChjdXJyT3B0aW9uLmdldFNpYmxpbmdzUHJpc3RpbmUoKSk7XG5cdFx0bGV0IHBhcmVudE9wdGlvbiA9IGN1cnJPcHRpb24uZ2V0T3duZXIoKS5nZXRPd25lcigpO1xuXHRcdGlmICh0aGlzLmlzTWFpbk9wdGlvbiB8fCBBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uICYmIHBhcmVudE9wdGlvbi5pc01haW5PcHRpb24pIHJldHVybiByZXN1bHROb2Rlcztcblx0XHRlbHNlIGlmIChwYXJlbnRPcHRpb24pIHJlc3VsdE5vZGVzID0gcmVzdWx0Tm9kZXMuY29uY2F0KHRoaXMucmVjdXJzaXZlbHlHZXRQcmlzdGluZShwYXJlbnRPcHRpb24pKTtcdFx0XG5cblx0XHRyZXR1cm4gcmVzdWx0Tm9kZXM7XG5cdH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5kZWNsYXJlIGxldCAkLCBqUXVlcnkgOiBhbnk7XG5cbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBDYXRlZ29yeSwgT3B0aW9uIH0gZnJvbSBcIi4uLy4uL21vZHVsZXMvdGF4b25vbXkvdGF4b25vbXkubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuZXhwb3J0IGNsYXNzIERpcmVjdG9yeU1lbnVDb21wb25lbnRcbntcdFx0XG5cdG9wZW5NZW51IDogYm9vbGVhbiA9IGZhbHNlO1xuXHR3aWR0aCA6IG51bWJlcjtcblx0ZG9tO1xuXG5cdGlzUGFubmluZyA6IGJvb2xlYW4gPSBmYWxzZTtcblx0ZHJhZ1RhcmdldDtcblx0b3ZlcmxheTtcblxuICBvblNob3cgPSBuZXcgRXZlbnQ8YW55PigpO1xuICBvbkhpZGUgPSBuZXcgRXZlbnQ8YW55PigpO1xuXG5cdEFOSU1fNTAgPSB7ZHVyYXRpb246IDUwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ2Vhc2VPdXRFbGFzdGljJ307XG5cdEFOSU1fMjAwID0ge2R1cmF0aW9uOiAyMDAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnZWFzZU91dEVsYXN0aWMnfTtcblx0QU5JTV8zMDAgPSB7ZHVyYXRpb246IDMwMCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdlYXNlT3V0RWxhc3RpYyd9O1xuICBBTklNXzQwMCA9IHtkdXJhdGlvbjogMzAwLCBxdWV1ZTogZmFsc2UsIGVhc2luZzogJ2Vhc2VPdXRFbGFzdGljJ307XG5cblx0Y29uc3RydWN0b3IoKSB7IH1cblxuXHRpbml0aWFsaXplKClcblx0e1x0XHRcdFx0XG5cdFx0dGhpcy5kb20gPSAkKCcjZGlyZWN0b3J5LW1lbnUnKTtcbiAgICB0aGlzLmRyYWdUYXJnZXQgPSAgJCgnLmRpcmVjdG9yeS1tZW51LWRyYWctdGFyZ2V0Jyk7XG4gICAgdGhpcy5vdmVybGF5ID0gJCgnI2RpcmVjdG9yeS1tZW51LW92ZXJsYXknKTtcblxuICAgIHRoaXMuZHJhZ1RhcmdldC5jc3MoeydsZWZ0JzogMH0pOyAgICBcblxuICAgIHRoaXMuZHJhZ1RhcmdldC5jbGljaygoKSA9PiB7IHRoaXMuaGlkZSgpOyB9KTtcbiAgICB0aGlzLm92ZXJsYXkuY2xpY2soKCkgPT4geyB0aGlzLmhpZGUoKTsgfSk7XHRcblxuXHRcdCQoJy5idG4tY2xvc2UtbWVudS5sYXJnZS1zY3JlZW4nKS50b29sdGlwKCk7XG5cbiAgICBpZiAoQXBwLmNvbXBvbmVudC5pc01vYmlsZVNjcmVlbigpKSB7XG4gICAgICB0aGlzLmluaXRUb3VjaE1lbnUoKTtcbiAgICAgIHRoaXMuaGlkZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNob3coKTtcbiAgICB9XG5cdH1cdFxuXG5cdHNob3coKSBcblx0eyAgICBcbiAgICB0aGlzLmRvbS5zaG93KCk7XG4gICAgdGhpcy5vblNob3cuZW1pdCgpOyAgICBcblxuICAgIHRoaXMuZG9tLnZlbG9jaXR5KHtsZWZ0OiAwfSwgdGhpcy5BTklNXzIwMCk7IFxuICAgIHRoaXMub3ZlcmxheS5zaG93KCkudmVsb2NpdHkoe29wYWNpdHk6IDF9LCB0aGlzLkFOSU1fMjAwKTtcblxuICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICBcdEFwcC5maWx0ZXJzQ29tcG9uZW50LnVwZGF0ZU1haW5PcHRpb25CYWNrZ3JvdW5kKCk7XHRcblxuICAgIFx0bGV0IGRyYWdUYXJnZXRXaWR0aCA9IEFwcC5jb21wb25lbnQud2lkdGgoKSAtIHRoaXMud2lkdGggKyAyMDtcbiAgICAgIHRoaXMuZHJhZ1RhcmdldC5jc3Moe3dpZHRoOiBkcmFnVGFyZ2V0V2lkdGggKyAncHgnLCByaWdodDogMCwgbGVmdDogJyd9KTtcbiAgICAgIEFwcC5jb21wb25lbnQudXBkYXRlTWFwU2l6ZSgpO1xuXHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVDb21wb25lbnRzU2l6ZSgpO1xuICAgIH0sIDQwMCk7ICAgICBcdFx0XHRcbiAgfVxuXG5cdGhpZGUoKSBcbiAge1xuICAgIHRoaXMub25IaWRlLmVtaXQoKTtcblxuICAgIHRoaXMub3ZlcmxheS52ZWxvY2l0eSh7b3BhY2l0eTogMH0sIHRoaXMuQU5JTV8zMDApO1xuICAgIHRoaXMuZHJhZ1RhcmdldC5jc3Moe3dpZHRoOiAnMTBweCcsIHJpZ2h0OiAnJywgbGVmdDogJzAnfSk7XG4gICAgdGhpcy5kb20udmVsb2NpdHkoe2xlZnQ6IC0xICogKHRoaXMud2lkdGggKyAyMCl9LCB0aGlzLkFOSU1fMzAwKTtcblxuICAgIHNldFRpbWVvdXQoICgpID0+IHtcbiAgICBcdHRoaXMub3ZlcmxheS5oaWRlKCk7XG4gICAgXHR0aGlzLmRvbS5oaWRlKCk7ICAgXG5cdFx0XHRcblx0XHRcdCQoJy5zaG93LWRpcmVjdG9yeS1tZW51LWJ1dHRvbicpLnNob3coKTtcdFxuXHRcdFx0dGhpcy5kb20uZmluZCgnLnRvb2x0aXBwZWQnKS50b29sdGlwKCdyZW1vdmUnKTtcblx0XHRcdCQoJy5idG4tY2xvc2UtbWVudS5sYXJnZS1zY3JlZW4nKS5oaWRlVG9vbHRpcCgpO1xuXG5cdFx0XHRBcHAuY29tcG9uZW50LnVwZGF0ZU1hcFNpemUoKTsgXG5cdFx0XHRBcHAuY29tcG9uZW50LnVwZGF0ZUNvbXBvbmVudHNTaXplKCk7IFxuICAgIH0sIDQwMCk7ICAgIFxuICB9XG5cbiAgaW5pdFRvdWNoTWVudSgpXG4gIHtcbiAgXHR0aGlzLmRyYWdUYXJnZXQuaGFtbWVyKHtcbiAgICAgIHByZXZlbnRfZGVmYXVsdDogZmFsc2VcbiAgICB9KS5iaW5kKCdwYW4nLCAoZSkgPT4gXG4gICAge1xuICAgICAgaWYgKGUuZ2VzdHVyZS5wb2ludGVyVHlwZSA9PSBcInRvdWNoXCIpIFxuICAgICAge1xuICAgICAgICB2YXIgZGlyZWN0aW9uID0gZS5nZXN0dXJlLmRpcmVjdGlvbjtcbiAgICAgICAgdmFyIHggPSBlLmdlc3R1cmUuY2VudGVyLng7XG4gICAgICAgIHZhciB5ID0gZS5nZXN0dXJlLmNlbnRlci55O1xuICAgICAgICB2YXIgdmVsb2NpdHlYID0gZS5nZXN0dXJlLnZlbG9jaXR5WDsgIFxuXG4gICAgICAgIC8vIEtlZXAgd2l0aGluIGJvdW5kYXJpZXNcbiAgICAgICAgaWYgKHggPiB0aGlzLndpZHRoKSB7IHggPSB0aGlzLndpZHRoOyB9XG4gICAgICAgIGVsc2UgaWYgKHggPCAwKSB7IHggPSAwOyB9XG5cbiAgICAgICAgaWYgKHggPCAodGhpcy53aWR0aCAvIDIpKSB7IHRoaXMub3Blbk1lbnUgPSBmYWxzZTsgfVxuICAgICAgICBlbHNlIHsgdGhpcy5vcGVuTWVudSA9IHRydWU7IH1cblxuICAgICAgICB0aGlzLmRvbS5jc3MoJ2xlZnQnLCAoeCAtIHRoaXMud2lkdGgpKS5zaG93KCk7XG5cbiAgICAgICAgLy8gUGVyY2VudGFnZSBvdmVybGF5XG4gICAgICAgIHZhciBvdmVybGF5UGVyYztcbiAgICAgICAgb3ZlcmxheVBlcmMgPSB4IC8gdGhpcy53aWR0aDtcbiAgICAgICAgdGhpcy5vdmVybGF5LnNob3coKS52ZWxvY2l0eSh7b3BhY2l0eTogb3ZlcmxheVBlcmMgfSwgdGhpcy5BTklNXzUwKTtcblx0XHRcdH1cblxuICAgIH0pLmJpbmQoJ3BhbmVuZCcsIChlKSA9PiB7XG4gICAgICBpZiAoZS5nZXN0dXJlLnBvaW50ZXJUeXBlID09IFwidG91Y2hcIikgXG4gICAgICB7XG4gICAgICAgIHZhciB2ZWxvY2l0eVggPSBlLmdlc3R1cmUudmVsb2NpdHlYO1xuXG4gICAgICAgIC8vIElmIHZlbG9jaXR5WCA8PSAwLjMgdGhlbiB0aGUgdXNlciBpcyBmbGluZ2luZyB0aGUgbWVudSBjbG9zZWQgc28gaWdub3JlIHRoaXMub3Blbk1lbnVcbiAgICAgICAgaWYgKCh0aGlzLm9wZW5NZW51ICYmIHZlbG9jaXR5WCA8PSAwLjMpIHx8IHZlbG9jaXR5WCA8IC0wLjUpIHsgdGhpcy5zaG93KCk7IH1cbiAgICAgICAgZWxzZSBpZiAoIXRoaXMub3Blbk1lbnUgfHwgdmVsb2NpdHlYID4gMC4zKSB7IHRoaXMuaGlkZSgpO31cbiAgICAgIH1cbiAgICAgfSk7XG4gIH1cblx0XG5cdHVwZGF0ZVNpemUoKSBcblx0e1xuICAgIC8vIHVwZGF0ZSBtZW51IHdpZHRoXG5cdFx0bGV0IG1lbnV3aWR0aCwgcGFnZVdpZHRoID0gQXBwLmNvbXBvbmVudC53aWR0aCgpO1xuXG4gICAgbGV0IG1lbnVTbWFsbFdpZHRoID0gQXBwLmNvbmZpZy5tZW51LndpZHRoID8gQXBwLmNvbmZpZy5tZW51LndpZHRoIDogMjYwO1xuICAgIGxldCBtZW51QmlnV2lkdGggPSBBcHAuY29uZmlnLm1lbnUud2lkdGggPyBBcHAuY29uZmlnLm1lbnUud2lkdGggOiAyOTA7XG4gICAgaWYgKEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pIHtcbiAgICAgIG1lbnVTbWFsbFdpZHRoICs9IDUwO1xuICAgICAgbWVudUJpZ1dpZHRoICs9IDUwO1xuICAgIH1cblx0XHRcblx0XHRpZiAocGFnZVdpZHRoID4gODUwKSB7XG4gICAgICBtZW51d2lkdGggPSAgcGFnZVdpZHRoID4gMTQ1MCA/IG1lbnVCaWdXaWR0aCA6IG1lbnVTbWFsbFdpZHRoO1xuXHRcdH0gZWxzZSB7XG4gICAgICBtZW51d2lkdGggPSAgTWF0aC5taW4oTWF0aC5taW4oTWF0aC5tYXgocGFnZVdpZHRoIC0gNjAsIG1lbnVTbWFsbFdpZHRoKSwgbWVudUJpZ1dpZHRoKSwgcGFnZVdpZHRoIC0gMjApO1xuXHRcdH1cblx0XHRcblx0XHR0aGlzLmRvbS5jc3MoJ3dpZHRoJywgbWVudXdpZHRoICsgJ3B4Jyk7XG5cdFx0dGhpcy53aWR0aCA9IG1lbnV3aWR0aDtcblx0XHRcblx0XHRpZiAobWVudXdpZHRoIDwgMzQwIHx8IEFwcC5jb25maWcubWVudS5zbWFsbFdpZHRoU3R5bGUpIHRoaXMuZG9tLmFkZENsYXNzKCdzbWFsbC13aWR0aCcpO1xuXHRcdGVsc2UgdGhpcy5kb20ucmVtb3ZlQ2xhc3MoJ3NtYWxsLXdpZHRoJyk7XHRcblx0fVxufVxuXG5cblxuXG5cblxuIiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuZGVjbGFyZSBsZXQgJCwgalF1ZXJ5IDogYW55O1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQ2F0ZWdvcnksIE9wdGlvbiB9IGZyb20gXCIuLi8uLi9tb2R1bGVzL3RheG9ub215L3RheG9ub215Lm1vZHVsZVwiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyc0NvbXBvbmVudFxueyAgXG4gIGN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQgPSBudWxsO1xuXG4gIGNvbnN0cnVjdG9yKCkge31cblxuICBpbml0aWFsaXplKClcbiAgeyAgXG4gICAgJCgnLmZpbHRlci1tZW51IC50b29sdGlwcGVkJykudG9vbHRpcCgpO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLSBGQVZPUklURS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgJCgnI2ZpbHRlci1mYXZvcml0ZScpLmNsaWNrKGZ1bmN0aW9uKGUgOiBFdmVudClcbiAgICB7ICAgICAgXG4gICAgICBsZXQgZmF2b3JpdGVDaGVja2JveCA9ICQoJyNmYXZvcml0ZS1jaGVja2JveCcpO1xuXG4gICAgICBsZXQgY2hlY2tWYWx1ZSA9ICFmYXZvcml0ZUNoZWNrYm94LmlzKCc6Y2hlY2tlZCcpO1xuICAgICAgJCh0aGlzKS50b2dnbGVDbGFzcygnY2hlY2tlZCcsIGNoZWNrVmFsdWUpO1xuICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seUZhdm9yaXRlKGNoZWNrVmFsdWUpO1xuXG4gICAgICBpZiAoY2hlY2tWYWx1ZSkge1xuICAgICAgICBBcHAuZmlsdGVyTW9kdWxlLnNob3dPbmx5UGVuZGluZyhmYWxzZSk7XG4gICAgICAgICQoJyNwZW5kaW5nLWNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsZmFsc2UpO1xuICAgICAgICBBcHAuZmlsdGVyTW9kdWxlLnNob3dPbmx5TW9kZXJhdGlvbihmYWxzZSk7XG4gICAgICAgICQoJyNtb2RlcmF0aW9uLWNoZWNrYm94JykucHJvcCgnY2hlY2tlZCcsZmFsc2UpO1xuICAgICAgfVxuICAgICAgXG4gICAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSk7XG5cbiAgICAgIGZhdm9yaXRlQ2hlY2tib3gucHJvcCgnY2hlY2tlZCcsY2hlY2tWYWx1ZSk7XG5cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLSBQRU5ESU5HLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAkKCcjZmlsdGVyLXBlbmRpbmcnKS5jbGljayhmdW5jdGlvbihlIDogRXZlbnQpXG4gICAgeyAgICAgIFxuICAgICAgbGV0IHBlbmRpbmdDaGVja2JveCA9ICQoJyNwZW5kaW5nLWNoZWNrYm94Jyk7XG5cbiAgICAgIGxldCBjaGVja1ZhbHVlID0gIXBlbmRpbmdDaGVja2JveC5pcygnOmNoZWNrZWQnKTtcblxuICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seVBlbmRpbmcoY2hlY2tWYWx1ZSk7XG4gICAgICBcbiAgICAgIGlmIChjaGVja1ZhbHVlKSB7XG4gICAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlGYXZvcml0ZShmYWxzZSk7XG4gICAgICAgICQoJyNmYXZvcml0ZS1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seU1vZGVyYXRpb24oZmFsc2UpO1xuICAgICAgICAkKCcjbW9kZXJhdGlvbi1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuXG4gICAgICBwZW5kaW5nQ2hlY2tib3gucHJvcCgnY2hlY2tlZCcsY2hlY2tWYWx1ZSk7XG5cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLSBNT0RFUkFJVE9OLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAkKCcjZmlsdGVyLW1vZGVyYXRpb24nKS5jbGljayhmdW5jdGlvbihlIDogRXZlbnQpXG4gICAgeyAgICAgIFxuICAgICAgbGV0IG1vZGVyYXRpb25DaGVja2JveCA9ICQoJyNtb2RlcmF0aW9uLWNoZWNrYm94Jyk7XG5cbiAgICAgIGxldCBjaGVja1ZhbHVlID0gIW1vZGVyYXRpb25DaGVja2JveC5pcygnOmNoZWNrZWQnKTtcblxuICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seU1vZGVyYXRpb24oY2hlY2tWYWx1ZSk7XG4gICAgICBcbiAgICAgIGlmIChjaGVja1ZhbHVlKSB7XG4gICAgICAgIEFwcC5maWx0ZXJNb2R1bGUuc2hvd09ubHlGYXZvcml0ZShmYWxzZSk7XG4gICAgICAgICQoJyNmYXZvcml0ZS1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgICAgQXBwLmZpbHRlck1vZHVsZS5zaG93T25seVBlbmRpbmcoZmFsc2UpO1xuICAgICAgICAkKCcjcGVuZGluZy1jaGVja2JveCcpLnByb3AoJ2NoZWNrZWQnLGZhbHNlKTtcbiAgICAgIH1cblxuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuXG4gICAgICBtb2RlcmF0aW9uQ2hlY2tib3gucHJvcCgnY2hlY2tlZCcsY2hlY2tWYWx1ZSk7XG5cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuXG5cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gLS0tLS0tIE1BSU4gT1BUSU9OUyAtLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICB2YXIgdGhhdCA9IHRoaXM7XG5cbiAgICAkKCcubWFpbi1jYXRlZ29yaWVzIC5tYWluLWljb24nKS5jbGljayggZnVuY3Rpb24oZSlcbiAgICB7XG4gICAgICBsZXQgb3B0aW9uSWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtb3B0aW9uLWlkJyk7XG4gICAgICB0aGF0LnNldE1haW5PcHRpb24ob3B0aW9uSWQpO1xuICAgIH0pO1xuXG4gICAgLy8gZm9sbG93IG1haW4gYWN0aXZlIG9wdGlvbiBiYWNrZ3JvdW5kIHdoZW4gdXNlciBzY3JvbGwgdGhyb3VnaCBtYWluIG9wdGlvbnNcbiAgICAkKCcubWFpbi1jYXRlZ29yaWVzJykub24oJ3Njcm9sbCcsICgpID0+XG4gICAge1xuICAgICAgJCgnI2FjdGl2ZS1tYWluLW9wdGlvbi1iYWNrZ3JvdW5kJykuY3NzKCd0b3AnLCAkKCcjbWFpbi1vcHRpb24tZ29nby1pY29uLScgKyB0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQpLnBvc2l0aW9uKCkudG9wKTtcbiAgICB9KTtcblxuICAgIFxuXG4gICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLSBDQVRFR09SSUVTIC0tLS0tLS0tLS0tLS0tLS1cbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgJCgnLnN1YmNhdGVnb3J5LWl0ZW0gLm5hbWUtd3JhcHBlcjpub3QoLnVuY2hlY2thYmxlKScpLmNsaWNrKGZ1bmN0aW9uKClcbiAgICB7ICAgIFxuICAgICAgbGV0IGNhdGVnb3J5SWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0ZWdvcnktaWQnKTtcbiAgICAgIEFwcC50YXhvbm9teU1vZHVsZS5nZXRDYXRlZ29yeUJ5SWQoY2F0ZWdvcnlJZCkudG9nZ2xlQ2hpbGRyZW5EZXRhaWwoKTtcbiAgICB9KTsgIFxuXG4gICAgJCgnLnN1YmNhdGVnb3J5LWl0ZW0gLmNoZWNrYm94LXdyYXBwZXInKS5jbGljayhmdW5jdGlvbihlKVxuICAgIHsgICAgXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtcbiAgICAgIGUucHJldmVudERlZmF1bHQoKTtcblxuICAgICAgbGV0IGNhdGVnb3J5SWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtY2F0ZWdvcnktaWQnKTtcbiAgICAgIEFwcC50YXhvbm9teU1vZHVsZS5nZXRDYXRlZ29yeUJ5SWQoY2F0ZWdvcnlJZCkudG9nZ2xlKCk7XG4gICAgICBcbiAgICB9KTsgICAgICBcblxuICAgIC8vIEFkZCBzdXJicmlsbGFuY2UgaW4gbWFpbi1jYXRlZ29yaWVzIHNpZGViYXIgZmlsdGVycyBtZW51IHdoZW5uIGhvdmVyaW5nIGEgbWFpbiBjYXRlZ29yeVxuICAgICQoJyNtYWluLW9wdGlvbi1hbGwuc2hvdy1vbmUtcGFuZS1wZXItbWFpbi1vcHRpb24gLmdvZ28taWNvbi1uYW1lLXdyYXBwZXInKS5ob3ZlciggXG4gICAgICBmdW5jdGlvbihlIDogRXZlbnQpIHtcbiAgICAgICAgbGV0IG9wdGlvbklkID0gJCh0aGlzKS5hdHRyKCdkYXRhLW9wdGlvbi1pZCcpO1xuICAgICAgICBsZXQgc2lkZWJhckljb24gPSAkKCcjbWFpbi1vcHRpb24tZ29nby1pY29uLScgKyBvcHRpb25JZCk7XG4gICAgICAgIGlmICghc2lkZWJhckljb24uaGFzQ2xhc3MoJ2hvdmVyJykpIHNpZGViYXJJY29uLmFkZENsYXNzKCdob3ZlcicpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uKGUgOiBFdmVudCkge1xuICAgICAgICBsZXQgb3B0aW9uSWQgPSAkKHRoaXMpLmF0dHIoJ2RhdGEtb3B0aW9uLWlkJyk7XG4gICAgICAgIGxldCBzaWRlYmFySWNvbiA9ICQoJyNtYWluLW9wdGlvbi1nb2dvLWljb24tJyArIG9wdGlvbklkKTtcbiAgICAgICAgc2lkZWJhckljb24ucmVtb3ZlQ2xhc3MoJ2hvdmVyJyk7XG4gICAgICB9XG4gICAgKTtcbiAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgLy8gLS0tLS0tIFNVQiBPUFRJT05TIC0tLS0tLS0tLS0tLVxuICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAkKCcuc3ViY2F0ZWdvcmllLW9wdGlvbi1pdGVtOm5vdCgjZmlsdGVyLWZhdm9yaXRlKTpub3QoI2ZpbHRlci1wZW5kaW5nKTpub3QoI2ZpbHRlci1tb2RlcmF0aW9uKSAub3B0aW9uLW5hbWUnKS5jbGljayhmdW5jdGlvbihlIDogRXZlbnQpXG4gICAge1xuICAgICAgbGV0IG9wdGlvbkRvbSA9ICQodGhpcykuY2xvc2VzdCgnLnN1YmNhdGVnb3JpZS1vcHRpb24taXRlbScpO1xuICAgICAgbGV0IG9wdGlvbklkID0gb3B0aW9uRG9tLmF0dHIoJ2RhdGEtb3B0aW9uLWlkJyk7XG4gICAgICBsZXQgb3B0aW9uID0gQXBwLnRheG9ub215TW9kdWxlLmdldE9wdGlvbkJ5SWQob3B0aW9uSWQpO1xuXG4gICAgICBpZiAob3B0aW9uLmlzTWFpbk9wdGlvbiAmJiBBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKSBBcHAuZmlsdGVyc0NvbXBvbmVudC5zZXRNYWluT3B0aW9uKG9wdGlvbi5pZCk7XG4gICAgICBlbHNlIGlmIChvcHRpb25Eb20uaGFzQ2xhc3MoJ3VuY2hlY2thYmxlJykpIHJldHVybjtcbiAgICAgIGVsc2UgaWYgKG9wdGlvbi5pc0NvbGxhcHNpYmxlKCkpIG9wdGlvbi50b2dnbGVDaGlsZHJlbkRldGFpbCgpXG4gICAgICBlbHNlIG9wdGlvbi50b2dnbGUoKTtcbiAgICB9KTtcblxuICAgICQoJy5zdWJjYXRlZ29yaWUtb3B0aW9uLWl0ZW06bm90KCNmaWx0ZXItZmF2b3JpdGUpOm5vdCgjZmlsdGVyLXBlbmRpbmcpOm5vdCgjZmlsdGVyLW1vZGVyYXRpb24pJykuZmluZCgnLmljb24sIC5jaGVja2JveC13cmFwcGVyJykuY2xpY2soZnVuY3Rpb24oZSlcbiAgICB7ICAgIFxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgIGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgIGxldCBvcHRpb25JZCA9ICQodGhpcykuY2xvc2VzdCgnLnN1YmNhdGVnb3JpZS1vcHRpb24taXRlbScpLmF0dHIoJ2RhdGEtb3B0aW9uLWlkJyk7XG4gICAgICBBcHAudGF4b25vbXlNb2R1bGUuZ2V0T3B0aW9uQnlJZChvcHRpb25JZCkudG9nZ2xlKCk7XG4gICAgfSk7XG4gIH1cblxuICBzZXRNYWluT3B0aW9uKG9wdGlvbklkKVxuICB7XG4gICAgaWYgKHRoaXMuY3VycmVudEFjdGl2ZU1haW5PcHRpb25JZCA9PSBvcHRpb25JZCkgcmV0dXJuO1xuXG4gICAgaWYgKHRoaXMuY3VycmVudEFjdGl2ZU1haW5PcHRpb25JZCAhPSBudWxsKSBBcHAuZWxlbWVudHNNb2R1bGUuY2xlYXJDdXJyZW50c0VsZW1lbnQoKTtcblxuICAgIGxldCBvbGRJZCA9IHRoaXMuY3VycmVudEFjdGl2ZU1haW5PcHRpb25JZDtcbiAgICB0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQgPSBvcHRpb25JZDtcblxuICAgIGlmIChvcHRpb25JZCA9PSAnYWxsJylcbiAgICB7XG4gICAgICAkKCcjbWVudS1zdWJjYXRlZ29yaWVzLXRpdGxlJykudGV4dChcIlRvdXMgbGVzIFwiICsgQXBwLmNvbmZpZy50ZXh0LmVsZW1lbnRQbHVyYWwpO1xuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgbGV0IG1haW5PcHRpb24gPSBBcHAudGF4b25vbXlNb2R1bGUuZ2V0TWFpbk9wdGlvbkJ5SWQob3B0aW9uSWQpOyAgICAgICAgXG5cbiAgICAgICQoJyNtZW51LXN1YmNhdGVnb3JpZXMtdGl0bGUnKS50ZXh0KG1haW5PcHRpb24ubmFtZSk7XG4gICAgfVxuXG4gICAgdGhpcy51cGRhdGVNYWluT3B0aW9uQmFja2dyb3VuZCgpO1xuXG4gICAgQXBwLmluZm9CYXJDb21wb25lbnQuaGlkZSgpO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcInNldE1haW5PcHRpb25JZCBcIiArIG9wdGlvbklkICsgXCIgLyBvbGRPcHRpb24gOiBcIiArIG9sZElkKTtcbiAgICBpZiAob2xkSWQgIT0gbnVsbCkgQXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKCk7XG5cbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7XG4gICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQucmVJbml0aWFsaXplRWxlbWVudFRvRGlzcGxheUxlbmd0aCgpO1xuICAgIFxuICAgICAgQXBwLmJvdW5kc01vZHVsZS51cGRhdGVGaWxsZWRCb3VuZHNBY2NvcmRpbmdUb05ld01haW5PcHRpb25JZCgpO1xuICAgICAgQXBwLmVsZW1lbnRzTWFuYWdlci5jaGVja0Zvck5ld0VsZW1lbnRzVG9SZXRyaWV2ZSgpO1xuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUsdHJ1ZSk7XG4gICAgfSwgNDAwKTsgICAgXG4gIH1cblxuICAvLyB0aGUgbWFpbiBvcHRpb24gc2VsZWN0ZWQgZ290IGEgc3BlY2lmaWMgYmFja2dyb3VuZCwgd2hvIGNhbiB2ZXJ0aWNhbGx5IHRyYW5zbGF0ZVxuICB1cGRhdGVNYWluT3B0aW9uQmFja2dyb3VuZCgpXG4gIHtcbiAgICBsZXQgb3B0aW9uSWQgPSB0aGlzLmN1cnJlbnRBY3RpdmVNYWluT3B0aW9uSWQ7ICAgIFxuXG4gICAgJCgnLm1haW4tb3B0aW9uLXN1YmNhdGVnb3JpZXMtY29udGFpbmVyOm5vdCgjbWFpbi1vcHRpb24tJyArIG9wdGlvbklkICsgJyknKS5oaWRlKCk7XG4gICAgJCgnI21haW4tb3B0aW9uLScgKyBvcHRpb25JZCkuZmFkZUluKDQwMCk7XG5cbiAgICAkKCcubWFpbi1jYXRlZ29yaWVzIC5tYWluLWljb24nKS5yZW1vdmVDbGFzcygnYWN0aXZlJyk7XG4gICAgJCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgb3B0aW9uSWQpLmFkZENsYXNzKCdhY3RpdmUnKTtcblxuICAgIGlmKCEkKCcjbWFpbi1vcHRpb24tZ29nby1pY29uLScgKyBvcHRpb25JZCkucG9zaXRpb24oKSkgeyByZXR1cm47IH1cblxuICAgICQoJyNhY3RpdmUtbWFpbi1vcHRpb24tYmFja2dyb3VuZCcpLmFuaW1hdGUoe3RvcDogJCgnI21haW4tb3B0aW9uLWdvZ28taWNvbi0nICsgb3B0aW9uSWQpLnBvc2l0aW9uKCkudG9wfSwgNDAwLCAnZWFzZU91dFF1YXJ0Jyk7XG4gIH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5cbmRlY2xhcmUgbGV0IGdyZWNhcHRjaGE7XG5kZWNsYXJlIHZhciAkIDogYW55O1xuZGVjbGFyZSBsZXQgUm91dGluZyA6IGFueTtcblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmltcG9ydCB7IGNhcGl0YWxpemUsIHNsdWdpZnkgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IFN0YW1wQ29tcG9uZW50IH0gZnJvbSAnLi9zdGFtcC5jb21wb25lbnQnO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudE1lbnVDb21wb25lbnRcbntcblx0cHJpdmF0ZSBkb207XG5cdHByaXZhdGUgZWxlbWVudCA6IEVsZW1lbnQ7XG5cblx0Y29uc3RydWN0b3IoZG9tIDogYW55LCBlbGVtZW50IDogRWxlbWVudClcblx0e1xuXHRcdHRoaXMuZG9tID0gJChkb20pOyAgXG5cdFx0dGhpcy5lbGVtZW50ID0gZWxlbWVudDtcblx0XHR0aGlzLmluaXRpYWxpemUoKTtcblx0XHR0aGlzLnVwZGF0ZUZhdm9yaXRlSWNvbigpO1xuXHR9XG5cblx0dXBkYXRlRmF2b3JpdGVJY29uKClcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLWFkZC1mYXZvcml0ZScpLnRvZ2dsZSghdGhpcy5lbGVtZW50LmlzRmF2b3JpdGUpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLXJlbW92ZS1mYXZvcml0ZScpLnRvZ2dsZSh0aGlzLmVsZW1lbnQuaXNGYXZvcml0ZSk7XG5cdH1cblxuXHRzaG93RnVsbFRleHRNZW51KGJvb2wgOiBib29sZWFuKVxuXHR7XG5cdFx0aWYgKGJvb2wpXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uYWRkQ2xhc3MoXCJmdWxsLXRleHRcIik7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcudG9vbHRpcHBlZCcpLnRvb2x0aXAoJ3JlbW92ZScpO1x0XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5yZW1vdmVDbGFzcyhcImZ1bGwtdGV4dFwiKTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGluaXRpYWxpemUoKVxuXHR7XG5cdFx0dGhpcy5kb20uZmluZCgnLnRvb2x0aXBwZWQnKS50b29sdGlwKCk7XHRcdFxuXHRcdGxldCB0aGF0ID0gdGhpcztcblx0XHRcblx0XHQvLyBTVEFNUFNcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1zdGFtcCcpLmVhY2goKCkgPT4geyBuZXcgU3RhbXBDb21wb25lbnQodGhpcywgdGhhdC5lbGVtZW50KTsgfSk7XG5cblx0XHQvLyBERUxFVEVcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1kZWxldGUnKS5jbGljaygoKSA9PiB7IEFwcC5kZWxldGVDb21wb25lbnQub3Blbih0aGlzLmVsZW1lbnQpOyB9KTtcblxuXHRcdC8vIFJFUE9SVFxuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLXJlcG9ydCcpLmNsaWNrKCgpID0+IHsgQXBwLnJlcG9ydENvbXBvbmVudC5vcGVuKHRoaXMuZWxlbWVudCk7IH0pO1xuXG5cdFx0Ly8gRElSRUNUSU9OU1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLWRpcmVjdGlvbnMnKS5jbGljaygoKSA9PlxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5tZW51LWljb24nKS5oaWRlVG9vbHRpcCgpO1xuXG5cdFx0XHRpZiAoIUFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKSBBcHAucGlja0FkZHJlc3NDb21wb25lbnQub3Blbih0aGlzLmVsZW1lbnQpO1xuXHRcdFx0ZWxzZSBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zLHtpZDogdGhpcy5lbGVtZW50LmlkfSk7XG5cdFx0fSk7XG5cblx0XHQvLyBTSE9XIE9OIE1BUFxuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLXNob3ctb24tbWFwJykuY2xpY2soKCkgPT4gXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLm1lbnUtaWNvbicpLmhpZGVUb29sdGlwKCk7XG5cdFx0XHRBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLlNob3dFbGVtZW50ICx7aWQ6IHRoaXMuZWxlbWVudC5pZH0pO1xuXHRcdH0pO1xuXG5cdFx0Ly8gU0hBUkVcblx0XHR0aGlzLmRvbS5maW5kKCcuaXRlbS1zaGFyZScpLmNsaWNrKCgpID0+XG5cdFx0e1x0XHRcblx0XHRcdGxldCBtb2RhbCA9ICQoJyNtb2RhbC1zaGFyZS1lbGVtZW50Jyk7XG5cdFx0XHRtb2RhbC5maW5kKFwiLm1vZGFsLWZvb3RlclwiKS5hdHRyKCdvcHRpb24taWQnLCB0aGlzLmVsZW1lbnQuY29sb3JPcHRpb25JZCk7XG5cblx0XHRcdGxldCB1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luICsgd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lIFxuXHRcdFx0dXJsICs9IEFwcC5yb3V0ZXJNb2R1bGUuZ2VuZXJhdGUoJ3Nob3dfZWxlbWVudCcsIHsgbmFtZSA6ICBjYXBpdGFsaXplKHNsdWdpZnkodGhpcy5lbGVtZW50Lm5hbWUpKSwgaWQgOiB0aGlzLmVsZW1lbnQuaWQgfSwgdHJ1ZSk7XHRcblxuXHRcdFx0bW9kYWwuZmluZCgnLmlucHV0LXNpbXBsZS1tb2RhbCcpLnZhbCh1cmwpO1xuXHRcdFx0bW9kYWwub3Blbk1vZGFsKCk7XG5cdFx0fSk7XHRcblx0XHRcblx0XHQvLyBGQVZPUklURVxuXHRcdHRoaXMuZG9tLmZpbmQoJy5pdGVtLWFkZC1mYXZvcml0ZScpLmNsaWNrKCgpID0+IFxuXHRcdHtcblx0XHRcdEFwcC5mYXZvcml0ZU1vZHVsZS5hZGRGYXZvcml0ZSh0aGlzLmVsZW1lbnQuaWQpO1xuXHRcdFx0dGhpcy51cGRhdGVGYXZvcml0ZUljb24oKTtcblx0XHRcdGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApXG5cdFx0XHR7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5tYXJrZXIudXBkYXRlKCk7XG5cdFx0XHRcdHRoaXMuZWxlbWVudC5tYXJrZXIuYW5pbWF0ZURyb3AoKTtcdFx0XHRcblx0XHRcdH1cdFx0XHRcblx0XHR9KTtcdFx0XG5cdFx0dGhpcy5kb20uZmluZCgnLml0ZW0tcmVtb3ZlLWZhdm9yaXRlJykuY2xpY2soKCkgPT4gXG5cdFx0e1x0XHRcblx0XHRcdEFwcC5mYXZvcml0ZU1vZHVsZS5yZW1vdmVGYXZvcml0ZSh0aGlzLmVsZW1lbnQuaWQpO1x0XHRcdFxuXHRcdFx0dGhpcy51cGRhdGVGYXZvcml0ZUljb24oKTtcblx0XHRcdGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApIHRoaXMuZWxlbWVudC5tYXJrZXIudXBkYXRlKCk7XG5cdFx0fSk7XHRcblx0fVx0XG59XG4iLCIgIGltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50LCBFbGVtZW50U3RhdHVzLCBFbGVtZW50TW9kZXJhdGlvblN0YXRlIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgSW1hZ2VzQ29tcG9uZW50IH0gZnJvbSAnLi9pbWFnZXMuY29tcG9uZW50JztcbmltcG9ydCB7IEVsZW1lbnRNZW51Q29tcG9uZW50IH0gZnJvbSBcIi4vZWxlbWVudC1tZW51LmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgTW9kZXJhdGlvbkNvbXBvbmVudCB9IGZyb20gJy4uL2VsZW1lbnQvbW9kZXJhdGlvbi5jb21wb25lbnQnO1xuaW1wb3J0IHsgSW50ZXJhY3RpdmVTZWN0aW9uQ29tcG9uZW50IH0gZnJvbSAnLi9pbnRlcmFjdGl2ZS1zZWN0aW9uLmNvbXBvbmVudCc7XG5kZWNsYXJlIHZhciAkO1xuZGVjbGFyZSB2YXIgbnVuanVja3M7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50Q29tcG9uZW50XG57XG4gIGVsZW1lbnQgOiBFbGVtZW50OyAgXG4gIGltYWdlc0NvbXBvbmVudCA6IEltYWdlc0NvbXBvbmVudDtcbiAgbWVudUNvbXBvbmVudCA6IEVsZW1lbnRNZW51Q29tcG9uZW50O1xuICBtb2RlcmF0aW9uQ29tcG9uZW50IDogTW9kZXJhdGlvbkNvbXBvbmVudDtcbiAgaW50ZXJhY3RpdmVDb21wb25lbnQgOiBJbnRlcmFjdGl2ZVNlY3Rpb25Db21wb25lbnQ7XG5cbiAgY29uc3RydWN0b3IoZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9XG5cbiAgLy8gdXNlIHRlbXBsYXRlIGpzIHRvIGNyZWF0ZSB0aGUgaHRtbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZWxlbWVudFxuICAvLyB0aGVuIHRoaXMgaHRtbCByZXByZXNlbnRhdGlvbiBpcyBpbnNlcnRlZCBpbiB0aGUgZG9tIGJ5IGFub3RoZXIgY29tcG9uZW50IChsaWtlIGluZm8tYmFyLCBvciBsaXN0IGNvbXBvbmVudClcbiAgcmVuZGVyKCkgXG4gIHsgIFxuICAgIGlmICghdGhpcy5lbGVtZW50LmlzRnVsbHlMb2FkZWQpIHsgcmV0dXJuOyB9XG5cbiAgICB0aGlzLmVsZW1lbnQudXBkYXRlKCk7XG4gICAgdGhpcy5lbGVtZW50LnVwZGF0ZURpc3RhbmNlKCk7XG5cbiAgICBsZXQgb3B0aW9uc1RvRGlzcGxheSA9IHRoaXMuZWxlbWVudC5nZXRJY29uc1RvRGlzcGxheSgpO1xuXG4gICAgbGV0IHJvb3RDYXRlZ29yaWVzVmFsdWVzO1xuICAgIGlmICh0aGlzLmVsZW1lbnQuc3RhdHVzID09IEVsZW1lbnRTdGF0dXMuUGVuZGluZ01vZGlmaWNhdGlvbiAmJiB0aGlzLmVsZW1lbnQubW9kaWZpZWRFbGVtZW50KSAgXG4gICAgICByb290Q2F0ZWdvcmllc1ZhbHVlcyA9IHRoaXMuZWxlbWVudC5tb2RpZmllZEVsZW1lbnQuZ2V0Um9vdENhdGVnb3JpZXNWYWx1ZXMoKTtcbiAgICBlbHNlXG4gICAgICByb290Q2F0ZWdvcmllc1ZhbHVlcyA9IHRoaXMuZWxlbWVudC5nZXRSb290Q2F0ZWdvcmllc1ZhbHVlcygpO1xuICAgIFxuICAgIGxldCBvcHRpb25zID0ge1xuICAgICAgZWxlbWVudCA6IHRoaXMuZWxlbWVudCwgXG4gICAgICBzaG93RGlzdGFuY2U6IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpID8gdHJ1ZSA6IGZhbHNlLFxuICAgICAgbGlzdGluZ01vZGU6IEFwcC5tb2RlID09IEFwcE1vZGVzLkxpc3QsIFxuICAgICAgb3B0aW9uc1RvRGlzcGxheTogb3B0aW9uc1RvRGlzcGxheSxcbiAgICAgIG1haW5PcHRpb25Ub0Rpc3BsYXk6IG9wdGlvbnNUb0Rpc3BsYXlbMF0sIFxuICAgICAgb3RoZXJPcHRpb25zVG9EaXNwbGF5OiBvcHRpb25zVG9EaXNwbGF5LnNsaWNlKDEpLCAgXG4gICAgICBjdXJyT3B0aW9uc1ZhbHVlczogdGhpcy5lbGVtZW50LmdldEN1cnJEZWVwZXN0T3B0aW9uc1ZhbHVlcygpLmZpbHRlciggKG9WKSA9PiBvVi5vcHRpb24uZGlzcGxheUluSW5mb0Jhcikuc29ydCggKGEsYikgPT4gYS5pc0ZpbGxlZEJ5RmlsdGVycyA/IC0xIDogMSksICAgICAgXG4gICAgICByb290Q2F0ZWdvcmllc1ZhbHVlcyA6IHJvb3RDYXRlZ29yaWVzVmFsdWVzLFxuICAgICAgZWRpdFVybCA6IEFwcC5jb25maWcuZmVhdHVyZXMuZWRpdC51cmwgKyB0aGlzLmVsZW1lbnQuaWQsXG4gICAgICBFbGVtZW50U3RhdHVzOiBFbGVtZW50U3RhdHVzLFxuICAgICAgRWxlbWVudE1vZGVyYXRpb25TdGF0ZTogRWxlbWVudE1vZGVyYXRpb25TdGF0ZSxcbiAgICAgIGlzSWZyYW1lIDogQXBwLmlzSWZyYW1lLFxuICAgICAgaXNNYXBNb2RlIDogQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwLFxuICAgICAgY29uZmlnIDogQXBwLmNvbmZpZyxcbiAgICAgIHNtYWxsV2lkdGggOiBBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXAgJiYgQXBwLmluZm9CYXJDb21wb25lbnQuaXNEaXNwbGF5ZWRBc2lkZSgpLFxuICAgICAgYWxsb3dlZFN0YW1wcyA6IEFwcC5zdGFtcE1vZHVsZS5hbGxvd2VkU3RhbXBzLFxuICAgICAgYm9keSA6IHVuZGVmaW5lZFxuICAgIH07XG5cbiAgICAvLyBJZiB0aGVyZSBpcyBhIGJvZHkgdGVtcGxhdGUgY29uZmlndXJlZCwgdGhlbiB3ZSB1c2UgaXQuIFdlIHVzZSB0aGUgZGVmYXVsdCBib2R5IG90aGVyd2lzZS5cbiAgICBpZiAoQXBwLmNvbmZpZy5pbmZvYmFyLmJvZHlUZW1wbGF0ZSkgXG4gICAge1xuICAgICAgb3B0aW9ucy5ib2R5ID0gbnVuanVja3MucmVuZGVyU3RyaW5nKEFwcC5jb25maWcuaW5mb2Jhci5ib2R5VGVtcGxhdGUsIHRoaXMuZWxlbWVudCk7XG4gICAgICBvcHRpb25zLmJvZHkgPSBvcHRpb25zLmJvZHkucmVwbGFjZSgvJmFtcDsvZywgXCImXCIpLnJlcGxhY2UoLyZndDsvZywgXCI+XCIpLnJlcGxhY2UoLyZsdDsvZywgXCI8XCIpLnJlcGxhY2UoLyZxdW90Oy9nLCAnXCInKTtcbiAgICB9XG4gICAgZWxzZSBvcHRpb25zLmJvZHkgPSBudW5qdWNrcy5yZW5kZXIoJ2NvbXBvbmVudHMvZWxlbWVudC9ib2R5Lmh0bWwubmprJywgb3B0aW9ucyk7XG5cbiAgICBsZXQgaHRtbCA9IEFwcC50ZW1wbGF0ZU1vZHVsZS5yZW5kZXIoJ2VsZW1lbnQnLCBvcHRpb25zKTtcblxuICAgIHJldHVybiBodG1sO1xuICB9O1xuXG4gIGdldCBkb20oKSB7IHJldHVybiBBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0ID8gJChgI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgI2VsZW1lbnQtaW5mby0ke3RoaXMuZWxlbWVudC5pZH1gKSA6ICQoYCNlbGVtZW50LWluZm8tJHt0aGlzLmVsZW1lbnQuaWR9YCk7IH1cblxuICAvLyBvbmNlIHRoZSBodG1sIHJlbmRlcmVkIGlzIGluc2VydGVkIGluIHRoZSBkb20sIHdlIG5lZWQgdG8gY2FsbCB0aGlzIG1ldGhvZCB0byBpbml0aWFsaXogdmFyaW91cyBpbnRlcmFjdGlvbnMgYW5kIHN1YmNvbXBvbmVudHNcbiAgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICB0aGlzLmltYWdlc0NvbXBvbmVudCA9IG5ldyBJbWFnZXNDb21wb25lbnQodGhpcy5kb20sIHRoaXMuZWxlbWVudCk7ICAgIFxuICAgIHRoaXMubWVudUNvbXBvbmVudCA9IG5ldyBFbGVtZW50TWVudUNvbXBvbmVudCh0aGlzLmRvbS5maW5kKCcubWVudS1lbGVtZW50JyksIHRoaXMuZWxlbWVudCk7XG4gICAgdGhpcy5tb2RlcmF0aW9uQ29tcG9uZW50ID0gbmV3IE1vZGVyYXRpb25Db21wb25lbnQodGhpcy5kb20uZmluZCgnLmludGVyYWN0aXZlLXNlY3Rpb24nKSwgdGhpcy5lbGVtZW50KTtcbiAgICB0aGlzLmludGVyYWN0aXZlQ29tcG9uZW50ID0gbmV3IEludGVyYWN0aXZlU2VjdGlvbkNvbXBvbmVudCh0aGlzLmRvbS5maW5kKCcuaW50ZXJhY3RpdmUtc2VjdGlvbicpLCB0aGlzLmVsZW1lbnQpO1xuXG4gICAgdGhpcy5kb20uZmluZCgnLnNlbmQtbWFpbC1idG4nKS5jbGljayggKCkgPT4gQXBwLnNlbmRFbWFpbENvbXBvbmVudC5vcGVuKHRoaXMuZWxlbWVudCkpO1xuXG4gICAgLy8gU0hPVyBMT05HIERFU0NSSVBUSU9OIEJVVFRPTlxuICAgIHRoaXMuZG9tLmZpbmQoJy5zaG93LW1vcmUtZGVzY3JpcHRpb24nKS5jbGljayggZnVuY3Rpb24oKSBcbiAgICB7IFxuICAgICAgbGV0IGRlc2NyaXB0aW9uTW9yZSA9ICQodGhpcykuc2libGluZ3MoJy5kZXNjcmlwdGlvbi1tb3JlJyk7XG4gICAgICBsZXQgdGV4dEJ1dHRvbiA9IGRlc2NyaXB0aW9uTW9yZS5pcyhcIjp2aXNpYmxlXCIpID8gXCJBZmZpY2hlciBwbHVzXCIgOiBcIkFmZmljaGVyIG1vaW5zXCI7XG4gICAgICBkZXNjcmlwdGlvbk1vcmUudG9nZ2xlKCk7ICAgIFxuICAgICAgJCh0aGlzKS50ZXh0KHRleHRCdXR0b24pO1xuICAgIH0pO1xuXG4gICAgLy8gSU5JVCBUQUJTIChmb3IgYWRtaW4gc2VjdGlvbilcbiAgICBzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMuZG9tLmZpbmQoJy5pbmZvLWJhci10YWJzJykudGFicygpOyB9LCAxMDApO1xuICB9XG5cbiAgYWRkRmxhc2hNZXNzYWdlKG1lc3NhZ2UpIHsgdGhpcy5pbnRlcmFjdGl2ZUNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UobWVzc2FnZSk7IH1cbn0iLCJkZWNsYXJlIHZhciAkIDogYW55O1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCwgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBjbGFzcyBJbWFnZXNDb21wb25lbnRcbntcbiAgcHJpdmF0ZSBkb207XG4gIHByaXZhdGUgZWxlbWVudCA6IEVsZW1lbnQ7XG5cbiAgaW5kZXhDdXJyZW50SW1hZ2UgOiBudW1iZXIgPSAwO1xuICBkb21JbWFnZXMgOiBhbnk7XG4gIG9uTmV3SW1hZ2VEaXNwbGF5ZWQgPSBuZXcgRXZlbnQ8YW55PigpO1xuXG4gIGNvbnN0cnVjdG9yKGRvbSA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmRvbSA9ICQoZG9tKTsgIFxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGdldCBjdXJyZW50SW1hZ2UoKSB7IHJldHVybiB0aGlzLmRvbUltYWdlcyA/IHRoaXMuZG9tSW1hZ2VzLmVxKHRoaXMuaW5kZXhDdXJyZW50SW1hZ2UpIDogbnVsbDsgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICBpZiAodGhpcy5lbGVtZW50LmltYWdlcy5sZW5ndGggPiAwKSB0aGlzLmluaXRJbWFnZXMoKTtcbiAgICBpZiAodGhpcy5lbGVtZW50LmltYWdlcy5sZW5ndGggPiAxKSB0aGlzLmluaXROYXZpZ2F0aW9uQnV0dG9ucygpO1xuICB9ICBcblxuICBwcml2YXRlIGluaXRJbWFnZXMoKVxuICB7XG4gICAgdGhpcy5kb21JbWFnZXMgPSB0aGlzLmRvbS5maW5kKCcuaW1nLWNvbnRhaW5lciBpbWcnKTsgIFxuICAgIC8vIGZpcnN0IHVwZGF0ZSB0byBkaXNwbGF5IGZpcnN0IGltYWdlXG4gICAgdGhpcy51cGRhdGVJbWFnZSgpO1xuXG4gICAgLy8gRGlzcGxheSBiaWdnZXIgaW1hZ2UgaW4gYSBtb2RhbCBvbiBjbGlja1xuICAgIHRoaXMuZG9tLmZpbmQoJy5pbWctY2xpY2thYmxlLWFyZWEnKS5jbGljaygoKSA9PlxuICAgIHtcbiAgICAgIC8vIGRvbid0IGRpc3BsYXkgbW9kYWwgaW4gc21hbGwgc2NyZWVuXG4gICAgICBpZiAoQXBwLmNvbXBvbmVudC53aWR0aCgpIDwgODAwKSByZXR1cm47XG4gICAgICBcbiAgICAgIC8vIFdoZW4gdGhlIHVzZXIgY2xpY2tzIHRoZSBpbWFnZSwgb3BlbnMgYSBuZXcgbW9kYWwgd2l0aCB0aGUgaW1hZ2VcbiAgICAgIGxldCBtb2RhbCA9ICQoJyNtb2RhbC1pbWFnZScpO1xuICAgICAgbW9kYWwuZmluZChcIi5tb2RhbC1mb290ZXJcIikuYXR0cignb3B0aW9uLWlkJywgdGhpcy5lbGVtZW50LmNvbG9yT3B0aW9uSWQpO1xuICAgICAgbW9kYWwuZmluZCgnaW1nJykuYXR0cignc3JjJywgdGhpcy5jdXJyZW50SW1hZ2VbMF0uc3JjKTtcbiAgICAgIG1vZGFsLm9wZW5Nb2RhbCgpO1xuICAgIH0pOyAgIFxuICB9XG5cbiAgcHJpdmF0ZSBpbml0TmF2aWdhdGlvbkJ1dHRvbnMoKVxuICB7XG4gICAgbGV0IG5hdkJ0bnMgPSB0aGlzLmRvbS5maW5kKCcuaW1nLW5hdmlnYXRpb24tYnRuLm5leHQsIC5pbWctbmF2aWdhdGlvbi1idG4ucHJldicpO1xuICAgIG5hdkJ0bnMuY3NzKCdvcGFjaXR5JywgMCkuc2hvdygpLmFuaW1hdGUoe29wYWNpdHk6IDF9LCAzMDApO1xuXG4gICAgLy8gbmF2aWdhdGlvbiB0aHJvdWdodCBpbWFnZXNcbiAgICB0aGlzLmRvbS5maW5kKCcuaW1nLW5hdmlnYXRpb24tYnRuLm5leHQnKS5jbGljaygoKSA9PiB7XG4gICAgICB0aGlzLmluZGV4Q3VycmVudEltYWdlKys7XG4gICAgICB0aGlzLnVwZGF0ZUltYWdlKCk7XG4gICAgfSk7XG5cbiAgICB0aGlzLmRvbS5maW5kKCcuaW1nLW5hdmlnYXRpb24tYnRuLnByZXYnKS5jbGljaygoKSA9PiB7XG4gICAgICB0aGlzLmluZGV4Q3VycmVudEltYWdlLS07XG4gICAgICB0aGlzLnVwZGF0ZUltYWdlKCk7XG4gICAgfSk7ICAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSB1cGRhdGVJbWFnZSgpXG4gIHsgICAgICAgICAgXG4gICAgLy8gbW9kdWxvIGluZGV4IGluc2lkZSBwcm9wZXIgcmFuZ2VcbiAgICB0aGlzLmluZGV4Q3VycmVudEltYWdlID0gKHRoaXMuaW5kZXhDdXJyZW50SW1hZ2UgKyB0aGlzLmVsZW1lbnQuaW1hZ2VzLmxlbmd0aCkgJSB0aGlzLmVsZW1lbnQuaW1hZ2VzLmxlbmd0aDtcbiAgICAvLyBIaWRlIGFsbCBpbWFnZXNcbiAgICB0aGlzLmRvbUltYWdlcy5jc3MoJ2Rpc3BsYXknLCAnbm9uZScpO1xuICAgIC8vIERpc3BsYXkgdGhlIGltYWdlIG9mIHRoZSBnaXZlbiBpbmRleFxuICAgIHRoaXMuY3VycmVudEltYWdlLmNzcygnZGlzcGxheScsICdibG9jaycpOyAgICAgICAgXG5cbiAgICAvLyB0cmlnZ2VyIGV2ZW50IHRvIHdhcm4gb3RoZXIgY29tcG9uZW50cyB0aGF0IGltYWdlIGFzIGNoYW5nZWRcbiAgICBpZiAodGhpcy5jdXJyZW50SW1hZ2UuaGVpZ2h0KCkpIHRoaXMub25JbWFnZURpc3BsYXllZCgpOyAgICBcbiAgICBlbHNlIHRoaXMuY3VycmVudEltYWdlLmxvYWQoKCkgPT4geyB0aGlzLm9uSW1hZ2VEaXNwbGF5ZWQoKTsgfSk7ICAgICAgXG4gIH07XG5cbiAgcHJpdmF0ZSBvbkltYWdlRGlzcGxheWVkKClcbiAge1xuICAgIHRoaXMub25OZXdJbWFnZURpc3BsYXllZC5lbWl0KHRoaXMuY3VycmVudEltYWdlKTtcbiAgICB0aGlzLnZlcnRpY2FsQWxpZ25DdXJyZW50SW1hZ2UoKTtcbiAgfVxuXG4gIHZlcnRpY2FsQWxpZ25DdXJyZW50SW1hZ2UoKVxuICB7XG4gICAgaWYgKCF0aGlzLmN1cnJlbnRJbWFnZSkgcmV0dXJuO1xuXG4gICAgbGV0IGltZ0Jhbm5lckhlaWdodCA9IHRoaXMuZG9tLmZpbmQoJy5pbWctb3ZlcmxheScpLmhlaWdodCgpO1xuICAgIC8vIGlmIGNvbXBvbmVudCBub3QgeWV0IGxvYWRlZCwgdGltZW91dCB0aGUgdXBkYXRlXG4gICAgaWYgKGltZ0Jhbm5lckhlaWdodCA9PSAwKSB7XG4gICAgICBzZXRUaW1lb3V0KCAoKSA9PiB0aGlzLnZlcnRpY2FsQWxpZ25DdXJyZW50SW1hZ2UoKSwgMTAwKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdGhpcy5jdXJyZW50SW1hZ2UuY3NzKCdtYXJnaW4tdG9wJywgMCk7XG4gICAgbGV0IG1hcmdpblRvcCA9IChpbWdCYW5uZXJIZWlnaHQgLSB0aGlzLmN1cnJlbnRJbWFnZS5oZWlnaHQoKSkgLyAyO1xuICAgIGlmIChtYXJnaW5Ub3AgPiAwKSBtYXJnaW5Ub3AgPSAwO1xuICAgIHRoaXMuY3VycmVudEltYWdlLmFuaW1hdGUoe21hcmdpblRvcDogYCR7bWFyZ2luVG9wfXB4YH0sIDQwMCk7XG4gIH1cbn0iLCJkZWNsYXJlIHZhciAkIDogYW55O1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCwgRWxlbWVudFN0YXR1cyB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuZXhwb3J0IGNsYXNzIEludGVyYWN0aXZlU2VjdGlvbkNvbXBvbmVudFxue1xuICBwcml2YXRlIGRvbTtcbiAgcHJpdmF0ZSBlbGVtZW50IDogRWxlbWVudDtcblxuICBjb25zdHJ1Y3Rvcihkb20gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50KVxuICB7XG4gICAgdGhpcy5kb20gPSAkKGRvbSk7IFxuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7ICBcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIGFkZEZsYXNoTWVzc2FnZShtZXNzYWdlKVxuICB7XG4gICAgdGhpcy5kb20uZmluZChcIi5tb2RlcmF0aW9uLXNlY3Rpb25cIikuZmluZCgnLmJhc2ljLW1lc3NhZ2UnKS5oaWRlKCk7IFxuICAgIHRoaXMuZG9tLmZpbmQoJy5yZXN1bHQtbWVzc2FnZScpLmh0bWwobWVzc2FnZSkuc2hvdygpO1xuICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LnNob3coKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICAvLyBvcGVuIGEgbW9kYWwgY29udGFpbmluZyBkZXNjcmlwdGlvbiBvZiB0aGUgdmFsaWRhdGlvbiBwcm9jZXNzXG4gICAgdGhpcy5kb20uZmluZCgnLnZhbGlkYXRpb24tcHJvY2Vzcy1pbmZvJykuY2xpY2soIChlKSA9PiBcbiAgICB7XG4gICAgICAkKFwiI21vZGFsLWNvbnRyaWJ1dGlvblwiKS5vcGVuTW9kYWwoKTsgIFxuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpO2UucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTtcblxuICAgIHRoaXMuZG9tLmZpbmQoXCIudm90ZS1idXR0b25cIikuY2xpY2soIChlKSA9PlxuICAgIHtcbiAgICAgIC8vIHJlc3RyaWN0IHZvdGUgdG8gc3BlY2lmaWMgcm9sZXNcbiAgICAgIGlmICghQXBwLmNvbmZpZy5pc0ZlYXR1cmVBdmFpbGFibGUoJ3ZvdGUnKSkgXG4gICAgICB7XG4gICAgICAgIEFwcC5sb2dpbk1vZHVsZS5sb2dpbkFjdGlvbigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICB7XG4gICAgICAgIEFwcC52b3RlQ29tcG9uZW50Lm9wZW4odGhpcy5lbGVtZW50KTsgICAgICAgXG4gICAgICB9ICAgICAgXG5cbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7IGUuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7IGUucHJldmVudERlZmF1bHQoKTtcbiAgICB9KTsgICBcbiAgfVxufVxuXG4iLCJkZWNsYXJlIHZhciAkIDogYW55O1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuZXhwb3J0IGNsYXNzIE1vZGVyYXRpb25Db21wb25lbnRcbntcbiAgcHJpdmF0ZSBkb207XG4gIHByaXZhdGUgZWxlbWVudCA6IEVsZW1lbnQ7XG5cbiAgY29uc3RydWN0b3IoZG9tIDogYW55LCBlbGVtZW50IDogRWxlbWVudClcbiAge1xuICAgIHRoaXMuZG9tID0gJChkb20pOyBcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50OyAgXG4gICAgdGhpcy5pbml0aWFsaXplKCk7XG4gIH1cblxuICBwcml2YXRlIGluaXRpYWxpemUoKVxuICB7XG4gICAgLy8gdm90ZS1idXR0b24gaXMgbG9jYXRlZCBvbiB0aGUgZWxlbWVudC1pbmZvLWJhciBvZiBhIHBlbmRpbmcgZWxlbWVudFxuICAgIHZhciB0aGF0ID0gdGhpcztcbiAgICB0aGlzLmRvbS5maW5kKFwiLm1hcmstYXMtbW9kZXJhdGVkLWJ0blwiKS5jbGljayggZnVuY3Rpb24oZSlcbiAgICB7XG4gICAgICAvLyByZXN0cmljdCB2b3RlIHRvIHNwZWNpZmljIHJvbGVzXG4gICAgICBpZiAoIUFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCdtb2RlcmF0aW9uJykpIFxuICAgICAge1xuICAgICAgICBBcHAubG9naW5Nb2R1bGUubG9naW5BY3Rpb24oKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBsZXQgY29tbWVudCA9ICQodGhpcykuc2libGluZ3MoJy5tb2RlcmF0aW9uLWlucHV0LWNvbW1lbnQnKS52YWwoKTsgICAgICAgXG4gICAgICAgIGxldCByb3V0ZSA9IEFwcC5jb25maWcuZmVhdHVyZXMubW9kZXJhdGlvbi51cmw7XG4gICAgICAgIGxldCBkYXRhID0geyBlbGVtZW50SWQ6IHRoYXQuZWxlbWVudC5pZCwgY29tbWVudDogY29tbWVudCB9O1xuICAgICAgICBcbiAgICAgICAgQXBwLmFqYXhNb2R1bGUuc2VuZFJlcXVlc3Qocm91dGUsICdwb3N0JywgZGF0YSwgKHJlc3BvbnNlKSA9PlxuICAgICAgICB7ICAgICAgICBcbiAgICAgICAgICBsZXQgcmVzcG9uc2VNZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcbiAgICAgICAgICBsZXQgc3VjY2VzcyA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG4gICAgICAgICAgXG4gICAgICAgICAgdGhhdC5lbGVtZW50LnVwZGF0ZSh0cnVlKTtcbiAgICAgICAgICB0aGF0LmVsZW1lbnQuaXNGdWxseUxvYWRlZCA9IGZhbHNlO1xuXG4gICAgICAgICAgLy8gcmVsb2FkIEVsZW1lbnQsIGFuZCBhZGQgZmxhc2ggbWVzc2FnZVxuICAgICAgICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LnNob3dFbGVtZW50KHRoYXQuZWxlbWVudC5pZCwgKCkgPT4ge1xuICAgICAgICAgICAgdGhhdC5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBcbiAgICAgICAgICB0aGF0LmVsZW1lbnQuY29tcG9uZW50LmFkZEZsYXNoTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpOyAgICAgICAgXG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvck1lc3NhZ2UpID0+IFxuICAgICAgICB7XG4gICAgICAgICAgdGhhdC5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UoZXJyb3JNZXNzYWdlKTsgIFxuICAgICAgICB9KTsgIFxuICAgICAgfSAgICAgIFxuXG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO2Uuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCk7ZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH0pO1xuICB9XG59XG5cbiIsImRlY2xhcmUgdmFyICQgOiBhbnk7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5leHBvcnQgY2xhc3MgU3RhbXBDb21wb25lbnRcbntcbiAgcHJpdmF0ZSBkb207XG4gIHByaXZhdGUgZWxlbWVudCA6IEVsZW1lbnQ7XG5cbiAgcHJpdmF0ZSBzdGFtcElkO1xuICBwcml2YXRlIHZhbHVlIDogYm9vbGVhbiA9IGZhbHNlOyAvLyB3aGV0aGVyIHRoZSBzdGFtcCBpcyBhY3RpdmF0ZWQgZm9yIHRoaXMgZWxlbWVudCBvciBub3QgIFxuXG4gIGNvbnN0cnVjdG9yKGRvbSA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmRvbSA9ICQoZG9tKTtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICAgIHRoaXMuc3RhbXBJZCA9ICAgdGhpcy5kb20uZGF0YSgnc3RhbXAtaWQnKTtcbiAgICB0aGlzLnNldFZhbHVlKHRoaXMuZWxlbWVudC5zdGFtcHMuaW5kZXhPZih0aGlzLnN0YW1wSWQpID4gLTEsIGZhbHNlKTtcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICB0aGlzLmRvbS5jbGljaygoKSA9PiB0aGlzLmhhbmRsZUNsaWNrKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVDbGljaygpXG4gIHtcbiAgICBsZXQgcm91dGUgPSBBcHAuY29uZmlnLmZlYXR1cmVzLnN0YW1wLnVybDtcbiAgICBsZXQgZGF0YSA9IHsgZWxlbWVudElkOiB0aGlzLmVsZW1lbnQuaWQsIHN0YW1wSWQ6IHRoaXMuc3RhbXBJZCwgdmFsdWU6ICF0aGlzLnZhbHVlIH07XG5cbiAgICBBcHAuYWpheE1vZHVsZS5zZW5kUmVxdWVzdChyb3V0ZSwgJ3Bvc3QnLCBkYXRhLCAocmVzcG9uc2UpID0+XG4gICAgeyBcbiAgICAgIGlmIChyZXNwb25zZS5kYXRhKSB0aGlzLmVsZW1lbnQuc3RhbXBzID0gcmVzcG9uc2UuZGF0YTtcbiAgICAgIGlmIChyZXNwb25zZS5zdWNjZXNzKSB0aGlzLnNldFZhbHVlKCF0aGlzLnZhbHVlKTsgICAgICBcbiAgICB9KTsgICAgIFxuICB9XG5cbiAgc2V0VmFsdWUodmFsdWUgOiBib29sZWFuLCAkYW5pbWF0ZSA9IHRydWUpXG4gIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWU7XG4gICAgdGhpcy5lbGVtZW50LnVwZGF0ZSh0cnVlKTtcbiAgICB0aGlzLmRvbS50b2dnbGVDbGFzcyhcImZpbGxlZFwiLCB2YWx1ZSk7IFxuICAgIGlmICgkYW5pbWF0ZSAmJiB0aGlzLnZhbHVlKSB0aGlzLmVsZW1lbnQubWFya2VyLmFuaW1hdGVEcm9wKCk7ICBcbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmRlY2xhcmUgbGV0ICQsIGpRdWVyeSA6IGFueTtcblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5cbmV4cG9ydCBjbGFzcyBHb0dvQ29udHJvbENvbXBvbmVudFxueyAgICBcbiAgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgICAkKCcuc2hvdy1kaXJlY3RvcnktbWVudS1idXR0b24sICNtb2JpbGUtZmlsdGVycy1pY29uJykuY2xpY2soKGUpID0+IHsgQXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQuc2hvdygpOyBlLnByZXZlbnREZWZhdWx0KCk7ZS5zdG9wUHJvcGFnYXRpb24oKTt9KTtcbiAgICAkKCcjZGlyZWN0b3J5LW1lbnUgLmJ0bi1jbG9zZS1tZW51JykuY2xpY2soKCkgPT4gQXBwLmRpcmVjdG9yeU1lbnVDb21wb25lbnQuaGlkZSgpKTtcblxuICAgICQoJy5zaG93LWFzLWxpc3QtYnV0dG9uJykuY2xpY2soKGUgOiBFdmVudCkgPT4geyAgXG4gICAgICBBcHAubWFwTWFuYWdlci5zZXRUaW1lb3V0Q2xpY2tpbmcoKTtcbiAgICAgIEFwcC5zZXRNb2RlKEFwcE1vZGVzLkxpc3QpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgICQoJyNtb2JpbGUtc2VhcmNoLWljb24nKS5jbGljaygoZSkgPT4geyBcbiAgICAgIEFwcC5zZWFyY2hCYXJDb21wb25lbnQuc2hvd01vYmlsZVNlYXJjaEJhcigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgICQoJy5zaG93LWFzLW1hcC1idXR0b24nKS5jbGljaygoKSA9PiB7ICAgIFxuICAgICAgQXBwLnNldE1vZGUoQXBwTW9kZXMuTWFwKTtcbiAgICB9KTtcbiAgfVxuXG4gIHVwZGF0ZVBvc2l0aW9uKClcbiAge1xuICAgIGlmICghQXBwLm1vZGUpIHJldHVybjtcblxuICAgIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApXG4gICAge1xuICAgICAgbGV0IHRvcCA9IDE1ICsgJCgnLnNlYXJjaC1yZXN1bHRzOnZpc2libGUnKS5oZWlnaHQoKTtcbiAgICAgICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLnZlbG9jaXR5KHt0b3A6IHRvcCwgcmlnaHQ6IDB9LCB7ZHVyYXRpb246IDI1MCwgcXVldWU6IGZhbHNlLCBlYXNpbmc6ICdlYXNlT3V0UXVhZCd9KTsgXG4gICAgICAkKCcjZ29nby1jb250cm9scy1tb2JpbGUnKS5hZGRDbGFzcygnbWFwJykucmVtb3ZlQ2xhc3MoJ2xpc3QnKTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIGxldCB0b3AgPSAkKCcjZGlyZWN0b3J5LWNvbnRlbnQnKS5oZWlnaHQoKSAtICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLmhlaWdodCgpIC0gNTtcbiAgICAgICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLnZlbG9jaXR5KHt0b3A6IHRvcCwgcmlnaHQ6IDE1fSwge2R1cmF0aW9uOiAyNTAsIHF1ZXVlOiBmYWxzZSwgZWFzaW5nOiAnZWFzZU91dFF1YWQnfSk7IFxuICAgICAgJCgnI2dvZ28tY29udHJvbHMtbW9iaWxlJykuYWRkQ2xhc3MoJ2xpc3QnKS5yZW1vdmVDbGFzcygnbWFwJyk7XG4gICAgfVxuICB9IFxuXG4gIGhpZGUoZGVsYXkgOiBudW1iZXIgPSAyNTApIHsgJCgnI2dvZ28tY29udHJvbHMtbW9iaWxlJykuZmFkZU91dChkZWxheSk7IH1cblxuICBzaG93KGRlbGF5IDogbnVtYmVyID0gNDAwKSB7ICQoJyNnb2dvLWNvbnRyb2xzLW1vYmlsZScpLmZhZGVJbihkZWxheSk7IH0gIFxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBFbGVtZW50c1RvRGlzcGxheUNoYW5nZWQgfSBmcm9tIFwiLi4vLi4vbW9kdWxlcy9lbGVtZW50cy9lbGVtZW50cy5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2V2ZW50LmNsYXNzXCI7XG5cbmRlY2xhcmUgdmFyICQ7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50TGlzdENvbXBvbmVudFxue1xuXHRlbGVtZW50VG9EaXNwbGF5Q291bnQgOiBudW1iZXIgPSAwOyBcblxuXHQvLyBOdW1iZXIgb2YgZWxlbWVudCBpbiBvbmUgbGlzdFxuXHRFTEVNRU5UX0xJU1RfU0laRV9TVEVQIDogbnVtYmVyID0gMTU7XG5cdC8vIEJhc2ljbHkgd2UgZGlzcGxheSAxIEVMRU1FTlRfTElTVF9TSVpFX1NURVAsIGJ1dCBpZiB1c2VyIG5lZWRcblx0Ly8gZm9yLCB3ZSBkaXNwbGF5IGFuIG90aGVycyBFTEVNRU5UX0xJU1RfU0laRV9TVEVQIG1vcmVcblx0c3RlcHNDb3VudCA6IG51bWJlciA9IDE7XG5cdGlzTGlzdEZ1bGwgOiBib29sZWFuID0gZmFsc2U7XG5cblx0Ly8gbGFzdCByZXF1ZXN0IHdhcyBzZW5kIHdpdGggdGhpcyBkaXN0YW5jZVxuXHRsYXN0RGlzdGFuY2VSZXF1ZXN0ID0gMTA7XG5cblx0aXNJbml0aWFsaXplZCA6IGJvb2xlYW4gPSBmYWxzZTtcblxuXHRjb25zdHJ1Y3RvcigpIHt9XG5cblx0aW5pdGlhbGl6ZSgpXG5cdHtcblx0XHQvLyBkZXRlY3Qgd2hlbiB1c2VyIHJlYWNoIGJvdHRvbSBvZiBsaXN0XG5cdFx0dmFyIHRoYXQgPSB0aGlzO1xuXHRcdCQoJyNkaXJlY3RvcnktY29udGVudC1saXN0IC5lbGVtZW50cy1jb250YWluZXInKS5vbignc2Nyb2xsJywgZnVuY3Rpb24oZSkgXG5cdFx0e1xuXHRcdFx0aWYoJCh0aGlzKS5zY3JvbGxUb3AoKSA+IDApXG5cdFx0XHRcdCQoXCIjbGlzdC10aXRsZS1zaGFkb3ctYm90dG9tXCIpLnNob3coKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0JChcIiNsaXN0LXRpdGxlLXNoYWRvdy1ib3R0b21cIikuaGlkZSgpO1xuXG5cdFx0XHRpZigkKHRoaXMpLnNjcm9sbFRvcCgpICsgJCh0aGlzKS5pbm5lckhlaWdodCgpID49ICQodGhpcylbMF0uc2Nyb2xsSGVpZ2h0KSB7ICAgICAgICAgICAgXG5cdFx0ICAgIFx0dGhhdC5oYW5kbGVCb3R0b20oKTtcblx0XHQgIH1cblx0XHR9KTtcblx0fVxuXG5cdHVwZGF0ZSgkZWxlbWVudHNUb0Rpc3BsYXkgOiBFbGVtZW50W10pIFxuXHR7XG5cdFx0Ly9jb25zb2xlLmxvZyhcImVsZW1lbnRMaXN0IHVwZGF0ZVwiLCAkZWxlbWVudHNSZXN1bHQpO1xuXHRcdGlmICgkZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoID09IDApIHRoaXMuc3RlcHNDb3VudCA9IDE7XG5cblx0XHR0aGlzLmhpZGVTcGlubmVyTG9hZGVyKCk7XG5cdFx0dGhpcy5jbGVhcigpO1x0XHRcblxuXHRcdHRoaXMuZHJhdygkZWxlbWVudHNUb0Rpc3BsYXksIGZhbHNlKTtcblx0fVxuXG5cdHNldFRpdGxlKCR2YWx1ZSA6IHN0cmluZykgeyAkKCcuZWxlbWVudC1saXN0LXRpdGxlLXRleHQnKS5odG1sKCR2YWx1ZSk7IH1cblxuXHRzaG93KCkgeyAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbGlzdCcpLnNob3coKTsgfVxuXHRcblx0aGlkZSgpIHsgJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QnKS5oaWRlKCk7IH1cblxuXHRzaG93U3Bpbm5lckxvYWRlcigpIHsgJCgnI2RpcmVjdG9yeS1saXN0LXNwaW5uZXItbG9hZGVyJykuc2hvdygpOyB9XG5cblx0aGlkZVNwaW5uZXJMb2FkZXIoKSB7ICQoJyNkaXJlY3RvcnktbGlzdC1zcGlubmVyLWxvYWRlcicpLmhpZGUoKTsgfVxuXG5cdGNsZWFyKCkgeyAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbGlzdCBsaScpLnJlbW92ZSgpOyB9XG5cblx0cmVJbml0aWFsaXplRWxlbWVudFRvRGlzcGxheUxlbmd0aCgpXG5cdHtcblx0XHR0aGlzLmNsZWFyKCk7XG5cdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgLmVsZW1lbnRzLWNvbnRhaW5lcicpLmFuaW1hdGUoe3Njcm9sbFRvcDogJzAnfSwgMCk7XG5cdFx0dGhpcy5zdGVwc0NvdW50ID0gMTtcblx0fVxuXG5cdHByaXZhdGUgZHJhdygkZWxlbWVudExpc3QgOiBFbGVtZW50W10sICRhbmltYXRlID0gZmFsc2UpIFxuXHR7XG5cdFx0bGV0IGVsZW1lbnQgOiBFbGVtZW50O1xuXHRcdGxldCBlbGVtZW50c1RvRGlzcGxheSA6IEVsZW1lbnRbXSA9ICRlbGVtZW50TGlzdC5maWx0ZXIoIChlbCkgPT4gZWwuaXNGdWxseUxvYWRlZCk7IFxuXG5cdFx0dGhpcy5lbGVtZW50VG9EaXNwbGF5Q291bnQgPSBlbGVtZW50c1RvRGlzcGxheS5sZW5ndGg7XG5cdFx0Ly8gY29uc29sZS5sb2coJ0VsZW1lbnRMaXN0IGRyYXcnLCBlbGVtZW50c1RvRGlzcGxheS5sZW5ndGgpO1xuXG5cdFx0aWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpXG5cdFx0e1xuXHRcdFx0Zm9yKGVsZW1lbnQgb2YgZWxlbWVudHNUb0Rpc3BsYXkpIGVsZW1lbnQudXBkYXRlRGlzdGFuY2UoKTtcblx0XHRcdGVsZW1lbnRzVG9EaXNwbGF5LnNvcnQodGhpcy5jb21wYXJlRGlzdGFuY2UpO1xuXHRcdH1cblx0XHRlbHNlIGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cylcblx0XHR7XG5cdFx0XHRlbGVtZW50c1RvRGlzcGxheS5zb3J0KHRoaXMuY29tcGFyZVNlYXJjaFNjb3JlKTtcblx0XHR9XHRcdFxuXG5cdFx0bGV0IG1heEVsZW1lbnRzVG9EaXNwbGF5ID0gdGhpcy5FTEVNRU5UX0xJU1RfU0laRV9TVEVQICogdGhpcy5zdGVwc0NvdW50O1xuXHRcdGxldCBlbmRJbmRleCA9IE1hdGgubWluKG1heEVsZW1lbnRzVG9EaXNwbGF5LCBlbGVtZW50c1RvRGlzcGxheS5sZW5ndGgpOyAgXG5cblx0XHR0aGlzLnVwZGF0ZVJlc3VsdE1lc3NhZ2UoKTtcblx0XHRcblx0XHQvLyBpZiB0aGUgbGlzdCBpcyBub3QgZnVsbCwgd2Ugc2VuZCBhamF4IHJlcXVlc3Rcblx0XHRpZiAoZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoIDwgbWF4RWxlbWVudHNUb0Rpc3BsYXkpXG5cdFx0e1xuXHRcdFx0aWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpXG5cdFx0XHR7XG5cdFx0XHRcdC8vIGV4cGFuZCBib3VuZHNcblx0XHRcdFx0QXBwLmJvdW5kc01vZHVsZS5leHRlbmRCb3VuZHMoMC41KTtcblx0XHRcdFx0dGhpcy5zaG93U3Bpbm5lckxvYWRlcigpO1xuXHRcdFx0XHRBcHAuZWxlbWVudHNNYW5hZ2VyLmNoZWNrRm9yTmV3RWxlbWVudHNUb1JldHJpZXZlKHRydWUpO1x0XHRcblx0XHRcdH1cdFx0XHRcblx0XHR9XHRcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJsaXN0IGlzIGZ1bGxcIik7XG5cdFx0XHQvLyB3YWl0aW5nIGZvciBzY3JvbGwgYm90dG9tIHRvIGFkZCBtb3JlIGVsZW1lbnRzIHRvIHRoZSBsaXN0XG5cdFx0XHR0aGlzLmlzTGlzdEZ1bGwgPSB0cnVlO1x0XHRcdFxuXHRcdH1cblx0XHRcblx0XHRsZXQgbGlzdENvbnRlbnREb20gPSAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbGlzdCB1bC5jb2xsYXBzaWJsZScpO1xuXHRcdGxldCB0aGF0ID0gdGhpcztcblxuXHRcdGZvcihsZXQgaSA9IDA7IGkgPCBlbmRJbmRleDsgaSsrKVxuXHRcdHtcblx0XHRcdGVsZW1lbnQgPSBlbGVtZW50c1RvRGlzcGxheVtpXTtcdFx0XHRcblx0XHRcdGxpc3RDb250ZW50RG9tLmFwcGVuZChlbGVtZW50LmNvbXBvbmVudC5yZW5kZXIoKSk7XG5cdFx0XHQvLyBiaW5kIGVsZW1lbnQgaGVhZGVyIGNsaWNrXG5cdFx0XHRlbGVtZW50LmNvbXBvbmVudC5kb20uZmluZCgnLmNvbGxhcHNpYmxlLWhlYWRlcicpLmNsaWNrKGZ1bmN0aW9uKCkgeyB0aGF0Lm9uRWxlbWVudE9wZW4odGhpcyk7IH0pO1xuXHRcdH1cblxuXHRcdGlmICgkYW5pbWF0ZSkgJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgLmVsZW1lbnRzLWNvbnRhaW5lcicpLmFuaW1hdGUoe3Njcm9sbFRvcDogJzAnfSwgNTAwKTtcblx0XHQkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbGlzdCB1bCcpLmNvbGxhcHNpYmxlKHthY2NvcmRpb24gOiB0cnVlfSk7XHRcdFxuXHR9XG5cblx0cHJpdmF0ZSBvbkVsZW1lbnRPcGVuKGVsZW1lbnRIZWFkZXJEb20pXG5cdHtcblx0XHRsZXQgZWxlbWVudERvbSA9ICQoZWxlbWVudEhlYWRlckRvbSkuY2xvc2VzdCgnLmVsZW1lbnQtaXRlbScpO1xuXHRcdGxldCBlbGVtZW50SWQgPSBlbGVtZW50RG9tLmRhdGEoJ2VsZW1lbnQtaWQnKTtcblx0XHRsZXQgZWxlbWVudCA9ICBBcHAuZWxlbWVudEJ5SWQoZWxlbWVudElkKTtcblx0XHRcblx0XHQvLyBpbml0aWFsaXplIGVsZW1lbnQgY29tcG9uZW50XG5cdFx0aWYgKCEkKGVsZW1lbnRIZWFkZXJEb20pLmhhc0NsYXNzKCdpbml0aWFsaXplZCcpKVxuXHRcdHtcblx0XHRcdGVsZW1lbnQuY29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdGVsZW1lbnQuY29tcG9uZW50LmltYWdlc0NvbXBvbmVudC5vbk5ld0ltYWdlRGlzcGxheWVkLmRvKCAoaW1hZ2UpID0+IHtcblx0XHRcdFx0ZWxlbWVudERvbS5maW5kKCcuaW1nLW92ZXJsYXknKS5jc3MoJ2hlaWdodCcsIGVsZW1lbnREb20uZmluZCgnLmltZy1jb250YWluZXInKS5oZWlnaHQoKSk7XG5cdFx0XHR9KTtcdFx0XHRcdFxuXG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7ICQoZWxlbWVudEhlYWRlckRvbSkuYWRkQ2xhc3MoJ2luaXRpYWxpemVkJyk7IH0sIDApO1x0XHRcdFx0XHRcblx0XHR9XG5cblx0XHQvLyBvbiBvcGVuIGFuaW1hdGlvbiBlbmRcblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMub25FbGVtZW50RnVsbHlPcGVubmVkKGVsZW1lbnREb20pOyB9LCAzMDApO1x0XHRcdFxuXHR9XG5cblx0cHJpdmF0ZSBvbkVsZW1lbnRGdWxseU9wZW5uZWQoZWxlbWVudERvbSlcblx0e1xuXHRcdGxldCBsaXN0Q29udGFpbmVyRG9tID0gJCgnI2RpcmVjdG9yeS1jb250ZW50LWxpc3QgLmVsZW1lbnRzLWNvbnRhaW5lcicpO1xuXHRcdGVsZW1lbnREb20uZmluZCgnLmltZy1vdmVybGF5JykuY3NzKCdoZWlnaHQnLCBlbGVtZW50RG9tLmZpbmQoJy5pbWctY29udGFpbmVyJykuaGVpZ2h0KCkpO1xuXG5cdFx0Ly8gY2hlY2sgdGhlIHZpc2liaWxpdHkgb2YgYW4gaXRlbSBhZnRlciBpdCBoYXMgYmVlbiBleHBhbmRlZFxuXHRcdGxldCBlbGVtZW50RGlzdGFuY2VUb1RvcCA9IGVsZW1lbnREb20ub2Zmc2V0KCkudG9wIC0gbGlzdENvbnRhaW5lckRvbS5vZmZzZXQoKS50b3A7XG5cblx0XHQvLyBpZiBlbGVtZW50IG5vdCB2aXNpYmxlIG9uIHNjcmVlblxuXHRcdGlmICggKGVsZW1lbnREb20ub2Zmc2V0KCkudG9wIC0gbGlzdENvbnRhaW5lckRvbS5vZmZzZXQoKS50b3AgKyBlbGVtZW50RG9tLmhlaWdodCgpKSA+IChsaXN0Q29udGFpbmVyRG9tLm91dGVySGVpZ2h0KCkgKyAxNTApKVxuXHRcdHtcblx0XHRcdGxpc3RDb250YWluZXJEb20uYW5pbWF0ZSh7c2Nyb2xsVG9wOiBsaXN0Q29udGFpbmVyRG9tLnNjcm9sbFRvcCgpICsgZWxlbWVudERvbS5vZmZzZXQoKS50b3AgLSBsaXN0Q29udGFpbmVyRG9tLm9mZnNldCgpLnRvcH0sIDU1MCk7XG5cdFx0fVx0XHRcdFx0XHRcblx0XHQvLyBpZiBlbGVtZW50IGlzIHRvbyBoaWdoXG5cdFx0ZWxzZSBpZiAoIGVsZW1lbnREaXN0YW5jZVRvVG9wIDwgMCApIFxuXHRcdHtcblx0XHRcdGxpc3RDb250YWluZXJEb20uYW5pbWF0ZSh7c2Nyb2xsVG9wOiBsaXN0Q29udGFpbmVyRG9tLnNjcm9sbFRvcCgpICsgZWxlbWVudERpc3RhbmNlVG9Ub3B9LCAzMDApO1xuXHRcdH1cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiAkKCcuaW5mby1iYXItdGFicycpLnRhYnMoKSwgMCk7XG5cdH1cblxuXHRwcml2YXRlIHVwZGF0ZVJlc3VsdE1lc3NhZ2UoKVxuXHR7XG5cdFx0JCgnLm5vLXJlc3VsdC1tZXNzYWdlJykuaGlkZSgpO1xuXHRcdFxuXHRcdGlmICh0aGlzLmVsZW1lbnRUb0Rpc3BsYXlDb3VudCA+IDApXG5cdFx0e1x0XHRcdFxuXHRcdFx0JCgnLmVsZW1lbnQtbGlzdC1oZWFkZXIgLnRpdGxlLXRleHQnKS5zaG93KCk7XG4gICBcdFx0JCgnLmVsZW1lbnQtbGlzdC10aXRsZS1udW1iZXItcmVzdWx0cycpLnRleHQoJygnICsgdGhpcy5lbGVtZW50VG9EaXNwbGF5Q291bnQgKyAnKScpO1xuICAgXHR9XG4gICBcdGVsc2VcbiAgIFx0XHQkKCcuZWxlbWVudC1saXN0LWhlYWRlciAudGl0bGUtdGV4dCcpLmhpZGUoKTtcblx0fVxuXG5cdGhhbmRsZUFsbEVsZW1lbnRzUmV0cmlldmVkKClcblx0e1xuXHRcdHRoaXMuaGlkZVNwaW5uZXJMb2FkZXIoKTtcblx0XHRpZiAodGhpcy5lbGVtZW50VG9EaXNwbGF5Q291bnQgPT0gMClcblx0XHR7XG5cdFx0XHQkKCcuZWxlbWVudC1saXN0LXRpdGxlLW51bWJlci1yZXN1bHRzJykudGV4dCgnKDApJyk7XG5cdFx0XHQkKCcubm8tcmVzdWx0LW1lc3NhZ2UnKS5zaG93KCk7XG5cdFx0XHRsZXQgbm9SZXN1bHRJbWcgPSAkKCcubm8tcmVzdWx0LW1lc3NhZ2UgaW1nJyk7XG5cdFx0XHRub1Jlc3VsdEltZy5hdHRyKCdzcmMnLCBub1Jlc3VsdEltZy5kYXRhKCdzcmMnKSk7XG5cdFx0XHQkKCcuZWxlbWVudC1saXN0LWhlYWRlciAudGl0bGUtdGV4dCcpLnNob3coKTtcblx0XHR9XHRcdFxuXHR9XG5cblx0cHJpdmF0ZSBoYW5kbGVCb3R0b20oKVxuXHR7XG5cdFx0aWYgKHRoaXMuaXNMaXN0RnVsbCkgXG5cdFx0e1xuXHRcdFx0dGhpcy5zdGVwc0NvdW50Kys7XG5cdFx0XHQvL2NvbnNvbGUubG9nKFwiYm90dG9tIHJlYWNoZWRcIik7XG5cdFx0XHR0aGlzLmlzTGlzdEZ1bGwgPSBmYWxzZTtcblx0XHRcdHRoaXMuY2xlYXIoKTtcblx0XHRcdHRoaXMuZHJhdyhBcHAuZWxlbWVudHMoKSk7XG5cdFx0fVx0XHRcblx0fVxuXG5cdHByaXZhdGUgY29tcGFyZURpc3RhbmNlKGE6RWxlbWVudCxiOkVsZW1lbnQpIFxuXHR7ICBcblx0ICBpZiAoYS5kaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIgPT0gYi5kaXN0YW5jZUZyb21Cb3VuZHNDZW50ZXIpIHJldHVybiAwO1xuXHQgIHJldHVybiBhLmRpc3RhbmNlRnJvbUJvdW5kc0NlbnRlciA8IGIuZGlzdGFuY2VGcm9tQm91bmRzQ2VudGVyID8gLTEgOiAxO1xuXHR9XG5cblx0cHJpdmF0ZSBjb21wYXJlU2VhcmNoU2NvcmUoYTpFbGVtZW50LGI6RWxlbWVudCkgXG5cdHsgIFxuXHQgIGlmIChhLnNlYXJjaFNjb3JlID09IGIuc2VhcmNoU2NvcmUpIHJldHVybiAwO1xuXHQgIHJldHVybiBhLnNlYXJjaFNjb3JlIDwgYi5zZWFyY2hTY29yZSA/IDEgOiAtMTtcblx0fVxufVxuXG4iLCJkZWNsYXJlIGxldCBnb29nbGU7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJCwgTDogYW55O1xuXG5kZWNsYXJlIGxldCB3aW5kb3cgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBEaXJlY3Rpb25zQ29tcG9uZW50XG57XG5cdHJvdXRpbmdDb250cm9sIDogYW55O1x0XG5cdGlzQWN0aXZlIDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIGNvbnN0cnVjdG9yKCkge30gXG5cbiAgaW5pdGlhbGl6ZSgpXG4gIHtcbiAgXHQkKCcjYnRuLWNsb3NlLWRpcmVjdGlvbnMnKS5jbGljayggKCkgPT4gXG5cdFx0e1xuXHRcdFx0QXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RWxlbWVudCwgeyBpZCA6IEFwcC5pbmZvQmFyQ29tcG9uZW50LmdldEN1cnJFbGVtZW50SWQoKSB9KTtcblx0XHR9KTtcbiAgfSBcblxuXHRjbGVhcigpXG5cdHtcblx0XHRpZiAoIXRoaXMucm91dGluZ0NvbnRyb2wpIHJldHVybjtcblxuXHRcdHRoaXMuY2xlYXJSb3V0ZSgpO1xuXHRcdHRoaXMuaGlkZUl0aW5lcmFyeVBhbmVsKCk7XG5cblx0XHRBcHAuREVBTW9kdWxlLmVuZCgpO1xuXG5cdFx0dGhpcy5yb3V0aW5nQ29udHJvbCA9IG51bGw7XG5cdFx0dGhpcy5pc0FjdGl2ZSA9IGZhbHNlO1xuXHR9O1xuXG5cdHByaXZhdGUgY2xlYXJSb3V0ZSgpXG5cdHtcblx0XHRpZiAodGhpcy5yb3V0aW5nQ29udHJvbCkgXG5cdFx0e1xuXHRcdFx0dGhpcy5yb3V0aW5nQ29udHJvbC5zcGxpY2VXYXlwb2ludHMoMCwyKTtcdFx0XG5cdFx0XHRBcHAubWFwKCkucmVtb3ZlQ29udHJvbCh0aGlzLnJvdXRpbmdDb250cm9sKTtcdFxuXHRcdH1cblx0fTtcblxuXHRjYWxjdWxhdGVSb3V0ZShvcmlnaW4gOiBMLkxhdExuZywgZWxlbWVudCA6IEVsZW1lbnQpIFxuXHR7XG5cdFx0dGhpcy5jbGVhcigpO1xuXG5cdFx0bGV0IHdheXBvaW50cyA9IFtcblx0XHQgICAgb3JpZ2luLFxuXHRcdCAgICBlbGVtZW50LnBvc2l0aW9uLFxuXHRcdF07XG5cdFx0Ly9jb25zb2xlLmxvZyhcImNhbGN1bGF0ZSByb3V0ZVwiLCB3YXlwb2ludHMpO1xuXG5cdFx0dGhpcy5yb3V0aW5nQ29udHJvbCA9IEwuUm91dGluZy5jb250cm9sKHtcblx0XHRcdHJvdXRlcjogTC5Sb3V0aW5nLm1hcGJveCgncGsuZXlKMUlqb2laMjluYjJOaGNuUnZJaXdpWVNJNkltTnFZbmh4ZUhVeFp6SjNjRzR6TW5JeU5tWmlhakY2ZG13aWZRLjJHNUlNNHJvSWdwVV9mdlBCT3Bzc3cnKSxcblx0XHRcdHBsYW46IEwuUm91dGluZy5wbGFuKFxuXHRcdFx0XHR3YXlwb2ludHMsIFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0Ly8gZGVsZXRlaW5nIHN0YXJ0IGFuZCBlbmQgbWFya2Vyc1xuXHRcdFx0XHRcdGNyZWF0ZU1hcmtlcjogZnVuY3Rpb24oaSwgd3ApIHsgcmV0dXJuIG51bGw7IH0sXG5cdFx0XHRcdFx0cm91dGVXaGlsZURyYWdnaW5nOiBmYWxzZSxcblx0XHRcdFx0XHRzaG93QWx0ZXJuYXRpdmVzOiBmYWxzZVxuXHRcdFx0XHR9XG5cdFx0XHQpLFxuXHRcdFx0bGFuZ3VhZ2U6ICdmcicsXG5cdFx0XHRyb3V0ZVdoaWxlRHJhZ2dpbmc6IGZhbHNlLFxuXHRcdFx0c2hvd0FsdGVybmF0aXZlczogZmFsc2UsXG5cdFx0XHRhbHRMaW5lT3B0aW9uczoge1xuXHRcdFx0XHRzdHlsZXM6IFtcblx0XHRcdFx0XHR7Y29sb3I6ICdibGFjaycsIG9wYWNpdHk6IDAuMTUsIHdlaWdodDogOX0sXG5cdFx0XHRcdFx0e2NvbG9yOiAnd2hpdGUnLCBvcGFjaXR5OiAwLjgsIHdlaWdodDogNn0sXG5cdFx0XHRcdFx0e2NvbG9yOiAnIzAwYjNmZCcsIG9wYWNpdHk6IDAuNSwgd2VpZ2h0OiAyfVxuXHRcdFx0XHRdXG5cdFx0XHR9XG5cdFx0fSkuYWRkVG8oQXBwLm1hcCgpKTtcblxuXHRcdC8vIHNob3cgSXRpbmVyYXJ5IHBhbmVsIHdpdGhvdXQgaXRpbmVyYXJ5LCBqdXN0IHRvIHNob3cgdXNlclxuXHRcdC8vIHNvbWV0aGluZ2lzIGhhcHBlbm5pbmcgYW4gZGlzcGxheSBzcGlubmVyIGxvYWRlclxuXHRcdHRoaXMuc2hvd0l0aW5lcmFyeVBhbmVsKGVsZW1lbnQpO1xuXG5cdFx0dGhpcy5yb3V0aW5nQ29udHJvbC5vbigncm91dGVzZm91bmQnLCAoZXYpID0+IFxuXHRcdHtcblx0XHRcdHRoaXMuc2hvd0l0aW5lcmFyeVBhbmVsKGVsZW1lbnQpO1xuXHRcdH0pO1xuXG5cdFx0Ly8gZml0IGJvdW5kcyBcblx0XHR0aGlzLnJvdXRpbmdDb250cm9sLm9uKCdyb3V0ZXNlbGVjdGVkJywgZnVuY3Rpb24oZSkgXG5cdFx0e1x0ICAgIFxuXHQgICAgdmFyIHIgPSBlLnJvdXRlO1xuXHQgICAgdmFyIGxpbmUgPSBMLlJvdXRpbmcubGluZShyKTtcblx0ICAgIHZhciBib3VuZHMgPSBsaW5lLmdldEJvdW5kcygpO1xuXHQgICAgQXBwLm1hcCgpLmZpdEJvdW5kcyhib3VuZHMpO1xuXHRcdH0pO1xuXG5cdFx0dGhpcy5yb3V0aW5nQ29udHJvbC5vbigncm91dGluZ2Vycm9yJywgKGV2KSA9PiBcblx0XHR7XG5cdFx0XHQkKCcjbW9kYWwtZGlyZWN0aW9ucy1mYWlsJykub3Blbk1vZGFsKCk7XG5cdFx0XHR0aGlzLmNsZWFyKCk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmlzQWN0aXZlID0gdHJ1ZTtcdFx0XHRcblx0fTtcblxuXHRoaWRlSXRpbmVyYXJ5UGFuZWwoKVxuXHR7XG5cdFx0JCgnI2RpcmVjdG9yeS1tZW51LW1haW4tY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoKTtcblx0fVxuXG5cdHNob3dJdGluZXJhcnlQYW5lbChlbGVtZW50IDogRWxlbWVudClcblx0e1xuXHRcdCQoJyNkaXJlY3RvcnktbWVudS1tYWluLWNvbnRhaW5lcicpLnJlbW92ZUNsYXNzKCkuYWRkQ2xhc3MoXCJkaXJlY3Rpb25zXCIpO1x0XG5cdFx0JCgnLmxlYWZsZXQtcm91dGluZy1jb250YWluZXInKS5wcmVwZW5kVG8oJy5kaXJlY3RvcnktbWVudS1jb250ZW50Jyk7XHRcdFxuXHR9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9ldmVudC5jbGFzc1wiO1xuXG5kZWNsYXJlIHZhciAkO1xuXG5leHBvcnQgY2xhc3MgSW5mb0JhckNvbXBvbmVudFxue1xuXHRpc1Zpc2libGUgOiBib29sZWFuID0gZmFsc2U7XG5cdGlzRGV0YWlsc1Zpc2libGUgPSBmYWxzZTtcblxuXHRlbGVtZW50VmlzaWJsZSA6IEVsZW1lbnQgPSBudWxsO1xuXG5cdGxvYWRlclRpbWVyID0gbnVsbDtcblxuXHRvblNob3cgPSBuZXcgRXZlbnQ8bnVtYmVyPigpO1xuXHRvbkhpZGUgPSBuZXcgRXZlbnQ8Ym9vbGVhbj4oKTtcblxuXHRnZXRDdXJyRWxlbWVudElkKCkgOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5lbGVtZW50VmlzaWJsZSA/IHRoaXMuZWxlbWVudFZpc2libGUuaWQgOiBudWxsOyB9XG5cblx0Z2V0IGRvbSgpIHsgcmV0dXJuICQoJyNlbGVtZW50LWluZm8tYmFyJyk7IH1cblx0Z2V0IGRvbU1lbnUoKSB7IHJldHVybiB0aGlzLmRvbS5maW5kKCcubWVudS1lbGVtZW50Jyk7IH1cblx0d2lkdGgoKSA6IHN0cmluZyB7IHJldHVybiB0aGlzLmRvbS53aWR0aCgpICsgJ3B4JzsgfVxuXG5cdGlzRGlzcGxheWVkQXNpZGUoKSB7IHJldHVybiB0aGlzLmRvbS5oYXNDbGFzcygnZGlzcGxheS1hc2lkZScpOyB9XG5cdGlzRGlzcGxheWVkQm90dG9tKCkgeyByZXR1cm4gdGhpcy5kb20uaGFzQ2xhc3MoJ2Rpc3BsYXktYm90dG9tJyk7IH1cblxuXHRyZWxvYWQoKVxuXHR7XG5cdFx0aWYgKCF0aGlzLmlzVmlzaWJsZSkgcmV0dXJuO1xuXHRcdHRoaXMuZWxlbWVudFZpc2libGUuaXNGdWxseUxvYWRlZCA9IGZhbHNlO1xuXHRcdHRoaXMuc2hvd0VsZW1lbnQodGhpcy5lbGVtZW50VmlzaWJsZS5pZCk7XG5cdH1cblxuXHQvLyBBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudDtcblx0c2hvd0VsZW1lbnQoZWxlbWVudElkLCBjYWxsYmFjayA9IG51bGwpIFxuXHR7XG5cdFx0aWYgKCFBcHAuY29uZmlnLmluZm9iYXIuYWN0aXZhdGUpIHtcblx0XHRcdEFwcC5zdGF0ZU1hbmFnZXIuc2V0U3RhdGUoQXBwU3RhdGVzLk5vcm1hbCk7XHRcdFx0XG5cdFx0XHRyZXR1cm47XG5cdFx0fVx0XHRcblxuXHRcdGxldCBlbGVtZW50ID0gQXBwLmVsZW1lbnRzTW9kdWxlLmdldEVsZW1lbnRCeUlkKGVsZW1lbnRJZCk7XHRcdFxuXHRcdC8vIGNvbnNvbGUubG9nKFwic2hvd0VsZW1lbnRcIiwgZWxlbWVudCk7XG5cdFx0XG5cdFx0Ly8gaWYgZWxlbWVudCBhbHJlYWR5IHZpc2libGVcblx0XHRpZiAodGhpcy5lbGVtZW50VmlzaWJsZSkgdGhpcy5lbGVtZW50VmlzaWJsZS5tYXJrZXIuc2hvd05vcm1hbFNpemUodHJ1ZSk7XG5cdFx0dGhpcy5lbGVtZW50VmlzaWJsZSA9IGVsZW1lbnQ7XHRcblxuXHRcdGlmICghZWxlbWVudC5pc0Z1bGx5TG9hZGVkKVxuXHRcdHtcblx0XHRcdC8vY29uc29sZS5sb2coXCJFbGVtZW50IG5vdCBmdWxseSBMb2FkZWRcIik7XG5cdFx0XHRBcHAuYWpheE1vZHVsZS5nZXRFbGVtZW50QnlJZChlbGVtZW50SWQsXG5cdFx0XHQocmVzcG9uc2UpID0+IHtcblx0XHRcdFx0ZWxlbWVudC51cGRhdGVXaXRoSnNvbihyZXNwb25zZSk7XG5cdFx0XHRcdHRoaXMuc2hvd0VsZW1lbnQoZWxlbWVudC5pZCk7XG5cdFx0XHRcdGlmIChjYWxsYmFjaykgY2FsbGJhY2soKTtcblx0XHRcdH0sXG5cdFx0XHQoKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiQWpheCBmYWlsdXJlIGZvciBlbGVtZW50SWRcIiwgZWxlbWVudElkKTtcblx0XHRcdH0pO1x0XHRcdFxuXG5cdFx0XHQvLyBpZiBhamF4IHJldHJpZXZpbmcgdGFrZSBtb3JlIHRoYW4gNTAwbXMsIHdlIHNob3cgc3Bpbm5lciBsb2FkZXJcblx0XHRcdHRoaXMubG9hZGVyVGltZXIgPSBzZXRUaW1lb3V0KCAoKSA9PiBcblx0XHRcdHsgXG5cdFx0XHRcdCQoJyNpbmZvLWJhci1vdmVybGF5JykuZmFkZUluKCk7XHRcdFx0XHRcdFxuXHRcdFx0XHR0aGlzLnNob3coKTsgXG5cdFx0XHR9LCA1MDApOyBcdFxuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0Ly8gY2xlYXJpbmcgbG9hZGVyXG5cdFx0XHRjbGVhclRpbWVvdXQodGhpcy5sb2FkZXJUaW1lcik7XG5cdFx0XHQkKCcjaW5mby1iYXItb3ZlcmxheScpLmZhZGVPdXQoKTtcblxuXHRcdFx0dGhpcy5kb20uZmluZCgnI2VsZW1lbnQtaW5mbycpLmh0bWwodGhpcy5lbGVtZW50VmlzaWJsZS5jb21wb25lbnQucmVuZGVyKCkpO1x0XG5cblx0XHRcdGlmICh0aGlzLmVsZW1lbnRWaXNpYmxlLmltYWdlcy5sZW5ndGgpIFxuXHRcdFx0e1xuXHRcdFx0XHQvLyBBbmltYXRpb24gdG8gbW92ZSBpbWctbmF2aWdhdGlvbi1idG4gd2hlbiBzY3JvbGxpbmdcblx0XHRcdFx0dGhpcy5kb20uZmluZCgnLmNvbGxhcHNpYmxlLWJvZHktbWFpbi1jb250YWluZXInKS5zY3JvbGwoZnVuY3Rpb24oZSkge1xuXHRcdFx0XHRcdGxldCBzY3JvbGxUb3AgPSAkKHRoaXMpLnNjcm9sbFRvcCgpO1xuXHRcdFx0XHRcdCQodGhpcykuZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5wcmV2JykuY3NzKCdsZWZ0JywgLXNjcm9sbFRvcC81KTtcblx0XHRcdFx0XHQkKHRoaXMpLmZpbmQoJy5pbWctbmF2aWdhdGlvbi1idG4ubmV4dCcpLmNzcygncmlnaHQnLCAtc2Nyb2xsVG9wLzUpO1xuXHRcdFx0XHRcdCQodGhpcykuZmluZCgnLmltZy1uYXZpZ2F0aW9uLWJ0bi5uZXh0JykuY3NzKCd0b3AnLCBzY3JvbGxUb3AvMik7XG5cdFx0XHRcdFx0JCh0aGlzKS5maW5kKCcuaW1nLW5hdmlnYXRpb24tYnRuLnByZXYnKS5jc3MoJ3RvcCcsIHNjcm9sbFRvcC8yKTtcblx0XHRcdFx0XHQkKHRoaXMpLmZpbmQoJy5pbWctb3ZlcmxheScpLmNzcygnb3BhY2l0eScsIDEgLSBzY3JvbGxUb3AvMjAwKTtcblx0XHRcdFx0fSk7XHRcdFx0XHRcblx0XHRcdH1cdFx0XHRcdFx0XHRcblxuXHRcdFx0dGhpcy5lbGVtZW50VmlzaWJsZS5jb21wb25lbnQuaW5pdGlhbGl6ZSgpO1x0XG5cdFx0XHR0aGlzLnVwZGF0ZU1lbnUoKTtcdFx0XHRcdFxuXG5cdFx0XHR0aGlzLmRvbS5maW5kKCcjYnRuLWNsb3NlLWJhbmRlYXUtZGV0YWlsJykuY2xpY2soKCkgPT4geyB0aGlzLmhpZGUoKTsgcmV0dXJuIGZhbHNlOyB9KTtcblx0XHRcdFxuXHRcdFx0dGhpcy5kb20uZmluZCgnLmNvbGxhcHNpYmxlLWhlYWRlcicpLmNsaWNrKCgpID0+IHsgdGhpcy50b2dnbGVEZXRhaWxzKCk7IH0pO1x0XHRcdFxuXHRcdH1cdFx0XHRcdFx0XHRcblx0XHRcblx0XHR0aGlzLnNob3coKTtcdFx0XG5cblx0XHRlbGVtZW50Lm1hcmtlci5zaG93Tm9ybWFsSGlkZGVuKCk7XG5cdFx0ZWxlbWVudC5tYXJrZXIuc2hvd0JpZ1NpemUoKTtcblxuXHRcdHNldFRpbWVvdXQoICgpID0+IFxuXHRcdHsgXG5cdFx0XHRlbGVtZW50Lm1hcmtlci5zaG93Tm9ybWFsSGlkZGVuKCk7XG5cdFx0XHRlbGVtZW50Lm1hcmtlci5zaG93QmlnU2l6ZSgpO1xuXHRcdH0sIDUwMCk7IFx0XG5cblx0XHR0aGlzLm9uU2hvdy5lbWl0KGVsZW1lbnRJZCk7XG5cblx0XHRBcHAuZG9jdW1lbnRUaXRsZU1vZHVsZS51cGRhdGVEb2N1bWVudFRpdGxlKCk7XG5cdH07XHRcblxuXHRyZWZyZXNoKClcblx0e1x0XHRcblx0XHRpZiAodGhpcy5pc1Zpc2libGUpIHtcblx0XHRcdHRoaXMuc2hvdygpO1xuXHRcdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLnNob3coKTsgfSwgMjAwKTtcblx0XHR9XG5cdH1cblxuXHRkaXNwbGF5QXNpZGUoKVxuXHR7XG5cdFx0dGhpcy5kb20uYWRkQ2xhc3MoJ2Rpc3BsYXktYXNpZGUnKTtcblx0XHR0aGlzLmRvbS5yZW1vdmVDbGFzcygnZGlzcGxheS1ib3R0b20nKTtcblx0XHR0aGlzLnVwZGF0ZU1lbnUoKTtcblx0fVxuXG5cdGRpc3BsYXlCb3R0b20oKVxuXHR7XG5cdFx0dGhpcy5kb20ucmVtb3ZlQ2xhc3MoJ2Rpc3BsYXktYXNpZGUnKTtcblx0XHR0aGlzLmRvbS5hZGRDbGFzcygnZGlzcGxheS1ib3R0b20nKTtcdFxuXHRcdHRoaXMudXBkYXRlTWVudSgpO1x0XHRcblx0fVxuXG5cdHVwZGF0ZU1lbnUoKVxuXHR7XG5cdFx0aWYgKCF0aGlzLmVsZW1lbnRWaXNpYmxlKSByZXR1cm47XG5cdFx0Ly8gb24gbGFyZ2Ugc2NyZWVuIGluZm8gYmFyIGlzIGRpc3BsYXllZCBhc2lkZSBhbmQgc28gd2UgaGF2ZSBlbm91Z2ggc3BhY2Vcblx0XHQvLyB0byBzaG93IG1lbnUgYWN0aW9ucyBkZXRhaWxzIGluIGZ1bGwgdGV4dFxuXHRcdHRoaXMuZWxlbWVudFZpc2libGUuY29tcG9uZW50Lm1lbnVDb21wb25lbnQuc2hvd0Z1bGxUZXh0TWVudSh0aGlzLmlzRGlzcGxheWVkQXNpZGUoKSk7XG5cdH1cblxuXHRzaG93KClcblx0e1xuXHRcdHRoaXMuaGlkZURldGFpbHMoKTtcblxuXHRcdEFwcC5zZWFyY2hCYXJDb21wb25lbnQuaGlkZU1vYmlsZVNlYXJjaEJhcigpO1x0XHRcblx0XHRcblx0XHRpZiAoIXRoaXMuaXNEaXNwbGF5ZWRBc2lkZSgpKVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLnNob3coKTtcblxuXHRcdFx0bGV0IGVsZW1lbnRJbmZvQmFyX25ld0hlaWdodCA9IHRoaXMuZG9tLmZpbmQoJyNlbGVtZW50LWluZm8nKS5vdXRlckhlaWdodCh0cnVlKTtcblxuXHRcdFx0dGhpcy51cGRhdGVJbmZvQmFyU2l6ZSgpO1xuXHRcdFx0dGhpcy5kb20uc3RvcCh0cnVlKS5hbmltYXRlKHsnaGVpZ2h0JzogZWxlbWVudEluZm9CYXJfbmV3SGVpZ2h0fSwgMzUwLCAnc3dpbmcnLCAoKSA9PiBcblx0XHRcdHtcblx0XHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVNYXBTaXplKCk7XG5cdFx0XHRcdHRoaXMuY2hlY2tJZk1hcmtlclN0aWxsVmlzaWJsZSgpO1x0XHQgIFx0XHRcblx0XHRcdH0pO1xuXHRcdH1cdFxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRpZiAoIXRoaXMuZG9tLmlzKCc6dmlzaWJsZScpKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLmRvbS5jc3MoJ3JpZ2h0JywnLScgKyB0aGlzLndpZHRoKCkpO1x0XHRcdFxuXHRcdFx0XHR0aGlzLmRvbS5zaG93KCkuc3RvcCh0cnVlKS5hbmltYXRlKHsncmlnaHQnOicwJ30sMzUwLCdzd2luZycsICgpID0+IHsgXG5cdFx0XHRcdFx0QXBwLmNvbXBvbmVudC51cGRhdGVEaXJlY3RvcnlDb250ZW50TWFyZ2luSWZJbmZvQmFyRGlzcGxheWVkQXNpZGUoKTtcblx0XHRcdFx0XHR0aGlzLmNoZWNrSWZNYXJrZXJTdGlsbFZpc2libGUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHRoaXMudXBkYXRlSW5mb0JhclNpemUoKTtcblx0XHRcdHRoaXMuc2hvd0JvZHlNYWluVGFiKCk7XG5cblx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgXG5cdFx0XHRcdC8vIGp1c3QgdG8gYmUgc3VyZSwgcHV0IHRoZSByaWdodCBwcm9wZXJ0eSB0byAwIGZldyBtcyBhZnRlclxuXHRcdFx0XHR0aGlzLmRvbS5zdG9wKHRydWUpLmNzcygncmlnaHQnLCAnMCcpOyBcdFx0XHRcblx0XHRcdH0sIDQwMCk7XHRcdFx0XHRcblx0XHR9XHRcblxuXHRcdHRoaXMuaXNWaXNpYmxlID0gdHJ1ZTtcblx0fTtcdFxuXG5cdGNoZWNrSWZNYXJrZXJTdGlsbFZpc2libGUoKVxuXHR7XG5cdFx0Ly8gYWZ0ZXIgaW5mb2JhciBhbmltYXRpb24sIHdlIGNoZWNrIGlmIHRoZSBtYXJrZXIgXG5cdFx0Ly8gaXMgbm90IGhpZGRlZCBieSB0aGUgaW5mbyBiYXJcblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7XG5cdFx0XHRpZiAodGhpcy5lbGVtZW50VmlzaWJsZSAmJiB0aGlzLmlzQ3VycmVudE1hcmtlck5vdFZpc2libGVPbk1hcCgpICYmIEFwcC5zdGF0ZSAhPSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnMpXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwiaW5mbyBiYXIgbWFya2VyIG5vdCB2aXNpYmxlXCIsIEFwcFN0YXRlc1tBcHAuc3RhdGVdKTtcblx0XHRcdFx0QXBwLm1hcENvbXBvbmVudC5wYW5Ub0xvY2F0aW9uKHRoaXMuZWxlbWVudFZpc2libGUucG9zaXRpb24pO1xuXHRcdFx0XHR0aGlzLmVsZW1lbnRWaXNpYmxlLm1hcmtlci5zaG93QmlnU2l6ZSgpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMuZWxlbWVudFZpc2libGUubWFya2VyLnNob3dCaWdTaXplKCk7IH0sIDIwMCk7XG5cdFx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5lbGVtZW50VmlzaWJsZS5tYXJrZXIuc2hvd0JpZ1NpemUoKTsgfSwgMTAwMCk7XG5cdFx0XHR9XHRcblx0XHR9LCAxMDApO1xuXHR9XG5cblx0cHJpdmF0ZSBpc0N1cnJlbnRNYXJrZXJOb3RWaXNpYmxlT25NYXAoKVxuXHR7XG5cdFx0bGV0IG1hcmtlciA9IHRoaXMuZWxlbWVudFZpc2libGUubWFya2VyLmRvbU1hcmtlcigpO1xuXHRcdHJldHVybiAoQXBwLm1hcENvbXBvbmVudC5pc01hcExvYWRlZCAmJiAhQXBwLm1hcENvbXBvbmVudC5jb250YWlucyh0aGlzLmVsZW1lbnRWaXNpYmxlLnBvc2l0aW9uKSkgfHxcblx0XHQgICAgICAgKCF0aGlzLmlzRGlzcGxheWVkQXNpZGUoKSAmJiBtYXJrZXIgJiYgbWFya2VyLm9mZnNldCgpICYmIChtYXJrZXIub2Zmc2V0KCkudG9wID4gdGhpcy5kb20ub2Zmc2V0KCkudG9wIC0gNTApKTtcblx0fVxuXG5cdGhpZGUoaHVtYW5BY3Rpb24gOiBib29sZWFuID0gdHJ1ZSlcblx0e1xuXHRcdGlmICghdGhpcy5pc0Rpc3BsYXllZEFzaWRlKCkpXG5cdFx0e1x0XHRcdFxuXHRcdFx0dGhpcy5oaWRlRGV0YWlscygpO1xuXHRcdFx0dGhpcy5kb20uYW5pbWF0ZSh7J2hlaWdodCc6ICcwJ30sIDM1MCwgJ3N3aW5nJywgKCkgPT4gXG5cdFx0XHR7XG5cdFx0XHRcdEFwcC5jb21wb25lbnQudXBkYXRlTWFwU2l6ZSgpO1xuXHRcdFx0XHR0aGlzLmRvbS5oaWRlKCk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdCQoJyNkaXJlY3RvcnktY29udGVudC1tYXAnKS5jc3MoJ21hcmdpbi1yaWdodCcsJzBweCcpO1xuXG5cdFx0XHRpZiAodGhpcy5kb20uaXMoJzp2aXNpYmxlJykpXG5cdFx0XHR7XHRcdFxuXHRcdFx0XHR0aGlzLmRvbS5hbmltYXRlKHsncmlnaHQnOictNTAwcHgnfSwzNTAsJ3N3aW5nJyxmdW5jdGlvbigpXG5cdFx0XHRcdHsgXG5cdFx0XHRcdFx0JCh0aGlzKS5oaWRlKCk7ICBcblx0ICBcdFx0XHRBcHAuY29tcG9uZW50LnVwZGF0ZU1hcFNpemUoKTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9XHRcdFxuXHRcdH1cblxuXHRcdGlmIChodW1hbkFjdGlvbikgdGhpcy5vbkhpZGUuZW1pdCh0cnVlKTtcdFx0XG5cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB0aGlzLmRvbS5maW5kKCcjZWxlbWVudC1pbmZvJykuaHRtbCgnJyksIDM1MCk7XG5cblx0XHRpZiAodGhpcy5lbGVtZW50VmlzaWJsZSAmJiB0aGlzLmVsZW1lbnRWaXNpYmxlLm1hcmtlcikgdGhpcy5lbGVtZW50VmlzaWJsZS5tYXJrZXIuc2hvd05vcm1hbFNpemUodHJ1ZSk7XG5cblx0XHR0aGlzLmVsZW1lbnRWaXNpYmxlID0gbnVsbDtcblx0XHR0aGlzLmlzVmlzaWJsZSA9IGZhbHNlO1x0XHRcblx0fTtcblxuXHR0b2dnbGVEZXRhaWxzKClcblx0e1x0XG5cdFx0aWYgKCB0aGlzLmRvbS5maW5kKCcubW9yZURldGFpbHMnKS5pcygnOnZpc2libGUnKSApXG5cdFx0e1xuXHRcdFx0dGhpcy5oaWRlRGV0YWlscygpO1xuXHRcdFx0dGhpcy5lbGVtZW50VmlzaWJsZS5jb21wb25lbnQubWVudUNvbXBvbmVudC5zaG93RnVsbFRleHRNZW51KGZhbHNlKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGlmICh0aGlzLmRvbU1lbnUud2lkdGgoKSA+PSB0aGlzLmRvbU1lbnUuZmluZCgnLm1lbnUtZWxlbWVudC1pdGVtOnZpc2libGUnKS5sZW5ndGgqMTAwKSB0aGlzLmVsZW1lbnRWaXNpYmxlLmNvbXBvbmVudC5tZW51Q29tcG9uZW50LnNob3dGdWxsVGV4dE1lbnUodHJ1ZSk7XG5cblx0XHRcdHRoaXMuZG9tLmZpbmQoJy5lbGVtZW50LWl0ZW0nKS5hZGRDbGFzcygnYWN0aXZlJyk7XHRcdFxuXHRcdFx0dGhpcy5kb20uZmluZCgnLm1vcmVEZXRhaWxzJykuc2hvdygpO1x0XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcubW9yZURldGFpbHMudGFicycpLmNzcygnZGlzcGxheScsJ2ZsZXgnKTtcdFx0XG5cdFx0XHRcblx0XHRcdC8vIHNob3cgdGhlIGV4cGFuZCBsYWJlbCBpbiBoZWFkZXIgd2hlbiBpbnRlcmFjdGl2ZSBzZWN0aW9uIGlzIHZpc2libGVcblx0XHRcdGlmICh0aGlzLmRvbS5maW5kKCcuaW50ZXJhY3RpdmUtc2VjdGlvbicpLmhlaWdodCgpID4gMCB8fCB0aGlzLmRvbS5maW5kKCcuaW5mby1iYXItdGFicycpLmhlaWdodCgpID4gMCkgXG5cdFx0XHRcdHRoaXMuZG9tLmZpbmQoJy5leHBhbmRMYWJlbCcpLnJlbW92ZUNsYXNzKCdiZ2RTb2Z0Q29sb3JBcyB0cmFuc2Zvcm0tYmlnJyk7XG5cblx0XHRcdHRoaXMuZG9tLmFuaW1hdGUoeydoZWlnaHQnOicxMDAlJ30sNDAwLCdzd2luZycpO1xuXG5cdFx0ICAgbGV0IGhlaWdodCA9ICAkKCcuZ29nb2NhcnRvLWNvbnRhaW5lcicpLmhlaWdodCgpO1xuXHRcdFx0aGVpZ2h0IC09IHRoaXMuZG9tLmZpbmQoJy5jb2xsYXBzaWJsZS1oZWFkZXInKS5vdXRlckhlaWdodCh0cnVlKTtcdFx0XHRcblx0XHRcdGhlaWdodCAtPSB0aGlzLmRvbS5maW5kKCcuaW50ZXJhY3RpdmUtc2VjdGlvbicpLm91dGVySGVpZ2h0KHRydWUpO1x0XG5cdFx0XHRoZWlnaHQgLT0gdGhpcy5kb20uZmluZChcIi5tZW51LWVsZW1lbnRcIikub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cdFx0XHRoZWlnaHQgLT0gdGhpcy5kb20uZmluZChcIi5pbmZvLWJhci10YWJzXCIpLm91dGVySGVpZ2h0KHRydWUpO1xuXG5cdFx0ICB0aGlzLmRvbS5maW5kKCcuY29sbGFwc2libGUtYm9keScpLmNzcygnaGVpZ2h0JywgaGVpZ2h0KTtcdFxuXG5cdFx0ICB0aGlzLnNob3dCb2R5TWFpblRhYigpO1xuXHRcdCAgdGhpcy5lbGVtZW50VmlzaWJsZS5jb21wb25lbnQuaW1hZ2VzQ29tcG9uZW50LnZlcnRpY2FsQWxpZ25DdXJyZW50SW1hZ2UoKTtcblx0XHQgIEFwcC5nb2dvQ29udHJvbENvbXBvbmVudC5oaWRlKCk7XG5cdFx0fVx0XG5cdH07XG5cblx0aGlkZURldGFpbHMoKVxuXHR7XG5cdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LnNob3coKTtcblxuXHRcdGlmICh0aGlzLmRvbS5maW5kKCcubW9yZURldGFpbHMnKS5pcygnOnZpc2libGUnKSlcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcubW9yZURldGFpbHMnKS5oaWRlKCk7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcuZWxlbWVudC1pdGVtJykucmVtb3ZlQ2xhc3MoJ2FjdGl2ZScpO1x0XG5cblx0XHRcdGxldCBlbGVtZW50SW5mb0Jhcl9uZXdIZWlnaHQgPSB0aGlzLmRvbS5maW5kKCcjZWxlbWVudC1pbmZvJykub3V0ZXJIZWlnaHQodHJ1ZSk7XG5cblx0XHRcdHRoaXMuZG9tLmFuaW1hdGUoeydoZWlnaHQnOiBlbGVtZW50SW5mb0Jhcl9uZXdIZWlnaHR9LCA0MDAsICdzd2luZycpO1xuXHRcdH1cdFxuXHR9O1xuXG5cdHVwZGF0ZUluZm9CYXJTaXplKClcblx0e1xuXHRcdGlmICghdGhpcy5pc0Rpc3BsYXllZEFzaWRlKCkpIHRoaXMuZG9tLmZpbmQoJy5tb3JlRGV0YWlscycpLmNzcygnaGVpZ2h0JywgJ2F1dG8nKTtcblx0XHRlbHNlIFxuXHRcdHtcdFx0XHRcblx0XHQgIFx0bGV0IGVsZW1lbnRJbmZvQmFyID0gdGhpcy5kb207XG5cdFx0ICBcdGxldCBoZWlnaHQgPSBlbGVtZW50SW5mb0Jhci5vdXRlckhlaWdodCh0cnVlKTtcblx0XHRcdFx0aGVpZ2h0IC09IGVsZW1lbnRJbmZvQmFyLmZpbmQoJy5jb2xsYXBzaWJsZS1oZWFkZXInKS5vdXRlckhlaWdodCh0cnVlKTtcblx0XHRcdFx0aGVpZ2h0IC09IGVsZW1lbnRJbmZvQmFyLmZpbmQoJy5pbnRlcmFjdGl2ZS1zZWN0aW9uOnZpc2libGUnKS5vdXRlckhlaWdodCh0cnVlKTtcblx0XHRcdFx0aGVpZ2h0IC09IGVsZW1lbnRJbmZvQmFyLmZpbmQoJy5pbmZvLWJhci10YWJzOnZpc2libGUnKS5vdXRlckhlaWdodCh0cnVlKTtcblx0XHRcdFx0aGVpZ2h0IC09IGVsZW1lbnRJbmZvQmFyLmZpbmQoXCIubWVudS1lbGVtZW50XCIpLm91dGVySGVpZ2h0KHRydWUpO1xuXG5cdFx0ICBcdHRoaXMuZG9tLmZpbmQoJy5jb2xsYXBzaWJsZS1ib2R5JykuY3NzKCdoZWlnaHQnLCBoZWlnaHQpO1xuXHRcdH1cblx0fVx0XG5cblx0cHJpdmF0ZSBzaG93Qm9keU1haW5UYWIoKSB7IHRoaXMuZG9tLmZpbmQoJy5pbmZvLWJhci10YWJzJykudGFicygnc2VsZWN0X3RhYicsICdib2R5LW1haW4tdGFiLWNvbnRlbnQnKTsgfVxufVxuXG4iLCJkZWNsYXJlIGxldCAkIDogYW55O1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCAqIGFzIENvb2tpZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2Nvb2tpZXNcIjtcblxuZXhwb3J0IGNsYXNzIE1hcENvbnRyb2xzQ29tcG9uZW50XG57ICAgIFxuICBsaXN0ZW5lckxheWVyQ2hhbmdlSGFzQmVlbkNyZWF0ZWQgPSBmYWxzZTtcblxuICBpbml0aWFsaXplKClcbiAge1xuICAgICQoJyNleHBvcnQtaWZyYW1lLWJ0bicpLmNsaWNrKCAoKSA9PiBcbiAgICB7IFxuICAgICAgJCgnI2V4cG9ydC1pZnJhbWUtYnRuJykuaGlkZVRvb2x0aXAoKTtcbiAgICAgIHRoaXMudXBkYXRlSWZyYW1lQ29kZSgpO1xuICAgICAgJCgnI21vZGFsLWlmcmFtZScpLm9wZW5Nb2RhbCgpOyBcbiAgICB9KTtcblxuICAgICQoJyNtYXAtZGVmYXVsdC12aWV3LWJ0bicpLmNsaWNrKCAoKSA9PlxuICAgIHtcbiAgICAgIEFwcC5nZW9jb2Rlci5nZW9jb2RlQWRkcmVzcygnJywgKHJlc3VsdCkgPT4geyBcbiAgICAgICAgQXBwLm1hcENvbXBvbmVudC5maXRCb3VuZHMoQXBwLmdlb2NvZGVyLmdldEJvdW5kcygpLCB0cnVlKTsgXG4gICAgICB9KTsgXG4gICAgfSk7XG5cbiAgICAkKCcjZ2VvbG9jYWxpemUtYnRuJykuY2xpY2soICgpID0+XG4gICAge1xuICAgICAgQXBwLnNlYXJjaEJhckNvbXBvbmVudC5nZW9sb2NhdGVVc2VyKCk7XG4gICAgfSk7XG5cbiAgICAkKCcuZmVhdHVyZS1idXR0b24nKS50b29sdGlwKCk7XG5cbiAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwICNjaGFuZ2UtbGF5ZXJzJykuY2xpY2soIChlKSA9PlxuICAgIHtcbiAgICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgI2NoYW5nZS1sYXllcnMnKS5oaWRlVG9vbHRpcCgpO1xuICAgICAgdGhpcy5zaG93Q29udHJvbExheWVycygpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTtcblxuICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgI2Nsb3NlLWxheWVycy1wYW5lbCcpLmNsaWNrKCAoZSkgPT5cbiAgICB7ICAgIFxuICAgICAgdGhpcy5oaWRlQ29udHJvbExheWVycygpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgZS5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9KTsgIFxuXG4gICAgLy8gdXBkYXRlIGlmcmFtZSBjb2RlIHdoZW4gcGFyYW1zIGNoYW5nZVxuICAgICQoJyNtb2RhbC1pZnJhbWUgLmlmcmFtZS1wYXJhbScpLmNoYW5nZSggKCkgPT4geyB0aGlzLnVwZGF0ZUlmcmFtZUNvZGUoKTsgfSk7XG5cbiAgICAkKCcubGF5ZXJzLWJ1dHRvbicpLnRvb2x0aXAoKTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlSWZyYW1lQ29kZSgpXG4gIHtcbiAgICBsZXQgc3JjID0gd2luZG93LmxvY2F0aW9uLm9yaWdpbiArIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICBzcmMgKz0gd2luZG93LmxvY2F0aW9uLnNlYXJjaC5sZW5ndGggPiAwID8gd2luZG93LmxvY2F0aW9uLnNlYXJjaCArICcmJyA6ICc/JztcbiAgICBzcmMgKz0gJ2lmcmFtZT0xJztcbiAgICBpZiAoJCgnI3BhcnQtdGF4b25vbXktY2hlY2tib3gnKS5pcygnOmNoZWNrZWQnKSkgc3JjICs9ICcmZnVsbFRheG9ub215PTAnO1xuICAgIFxuICAgIHZhciBzdGFtcHNJZHMgPSBbXTtcbiAgICAkKCcjbW9kYWwtaWZyYW1lIC5pZnJhbWUtcGFyYW0uc3RhbXAtcGFyYW0nKS5lYWNoKGZ1bmN0aW9uKCkgXG4gICAge1xuICAgICAgaWYgKCQodGhpcykuaXMoJzpjaGVja2VkJykpIHsgc3RhbXBzSWRzLnB1c2goJCh0aGlzKS5kYXRhKCdpZCcpKTsgfVxuICAgIH0pO1xuICAgIGlmIChzdGFtcHNJZHMubGVuZ3RoID4gMCkgc3JjICs9ICcmc3RhbXBzSWRzPScgKyBzdGFtcHNJZHMuam9pbignLCcpO1xuICAgIFxuICAgIHNyYyArPSB3aW5kb3cubG9jYXRpb24uaGFzaDtcblxuICAgIGxldCB3aWR0aCA9ICQoJyNpZnJhbWUtd2lkdGgnKS52YWwoKSA/ICQoJyNpZnJhbWUtd2lkdGgnKS52YWwoKSA6ICc4MDAnO1xuICAgIGxldCBoZWlnaHQgPSAkKCcjaWZyYW1lLWhlaWdodCcpLnZhbCgpID8gJCgnI2lmcmFtZS1oZWlnaHQnKS52YWwoKSA6ICc2MDAnO1xuXG4gICAgbGV0IGlmcmFtZUNvZGUgPSBgPGlmcmFtZSB3aWR0aD1cIiR7d2lkdGh9XCIgaGVpZ2h0PVwiJHtoZWlnaHR9XCIgc3JjPVwiJHtzcmN9XCIgZnJhbWVib3JkZXI9XCIwXCIgbWFyZ2luaGVpZ2h0PVwiMFwiIG1hcmdpbndpZHRoPVwiMFwiPjwvaWZyYW1lPmBcbiAgICAkKCcjbW9kYWwtaWZyYW1lICNpZnJhbWUtY29kZScpLnZhbChpZnJhbWVDb2RlKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlTGlzdGVuZXJGb3JMYXllcnMoKVxuICB7XG4gICAgaWYgKHRoaXMubGlzdGVuZXJMYXllckNoYW5nZUhhc0JlZW5DcmVhdGVkKSByZXR1cm47XG4gICAgXG4gICAgaWYgKEFwcC5jb25maWcubWFwLnNhdmVUaWxlTGF5ZXJJbkNvb2tpZXMpXG4gICAge1xuICAgICAgLy8gbGlzdGVuIGZvciBiYXNlIGxheWVyIHNlbGVjdGlvbiwgdG8gc3RvcmUgdmFsdWUgaW4gY29va2llXG4gICAgICAkKCcjZGlyZWN0b3J5LWNvbnRlbnQtbWFwIC5sZWFmbGV0LWNvbnRyb2wtbGF5ZXJzLXNlbGVjdG9yJykuY2hhbmdlKCBmdW5jdGlvbihlKSBcbiAgICAgIHsgICAgXG4gICAgICAgIENvb2tpZXMuY3JlYXRlQ29va2llKCdkZWZhdWx0QmFzZUxheWVyJywgJCh0aGlzKS5zaWJsaW5ncygnc3BhbicpLnRleHQoKSwgMTAwKTtcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIHRoaXMubGlzdGVuZXJMYXllckNoYW5nZUhhc0JlZW5DcmVhdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIHNob3dDb250cm9sTGF5ZXJzKClcbiAge1xuICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgLmxlYWZsZXQtY29udHJvbC1sYXllcnMnKS5zaG93KCk7XG4gICAgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCAjY2xvc2UtbGF5ZXJzLXBhbmVsJykuc2hvdygpO1xuICAgIHRoaXMuY3JlYXRlTGlzdGVuZXJGb3JMYXllcnMoKTtcbiAgfVxuXG4gIGhpZGVDb250cm9sTGF5ZXJzKClcbiAge1xuICAgICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAgLmxlYWZsZXQtY29udHJvbC1sYXllcnMnKS5oaWRlKCk7XG4gICAgJCgnI2RpcmVjdG9yeS1jb250ZW50LW1hcCAjY2xvc2UtbGF5ZXJzLXBhbmVsJykuaGlkZSgpOyAgXG4gIH1cbn0iLCJpbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50LCBWaWV3UG9ydCwgRXZlbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBHZW9jb2RlUmVzdWx0LCBSYXdCb3VuZHMgfSBmcm9tIFwiLi4vLi4vbW9kdWxlcy9nZW9jb2Rlci5tb2R1bGVcIjtcbmltcG9ydCAqIGFzIENvb2tpZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2Nvb2tpZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyICQsIEwgOiBhbnk7XG5cbi8qKlxuKiBUaGUgTWFwIENvbXBvbmVudCB3aG8gZW5jYXBzdWxhdGUgdGhlIG1hcFxuKlxuKiBNYXBDb21wb25lbnQgcHVibGljcyBtZXRob2RzIG11c3QgYmUgYXMgaW5kZXBlbmRhbnQgYXMgcG9zc2libGVcbiogZnJvbSB0ZWNobm9sb2d5IHVzZWQgZm9yIHRoZSBtYXAgKGxlYWZsZXQgLi4uKVxuKlxuKiBNYXAgY29tcG9uZW50IGlzIGxpa2UgYW4gaW50ZXJmYWNlIGJldHdlZW4gdGhlIG1hcCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEFwcFxuKi9cbmV4cG9ydCBjbGFzcyBNYXBDb21wb25lbnRcbntcblx0b25NYXBSZWFkeSA9IG5ldyBFdmVudDxhbnk+KCk7XG5cdG9uTWFwTG9hZGVkID0gbmV3IEV2ZW50PGFueT4oKTtcblx0b25DbGljayA9IG5ldyBFdmVudDxhbnk+KCk7XG5cdG9uSWRsZSA9IG5ldyBFdmVudDxhbnk+KCk7XG5cblx0Ly9MZWFmbGV0IG1hcFxuXHRtYXBfIDogTC5NYXAgPSBudWxsO1xuXG5cdG1hcmtlckNsdXN0ZXJlckdyb3VwID0gbnVsbDtcblx0aXNJbml0aWFsaXplZCA6IGJvb2xlYW4gPSBmYWxzZTtcblx0aXNNYXBMb2FkZWQgOiBib29sZWFuID0gZmFsc2U7XG5cdG9sZFpvb20gPSAtMTtcblx0dmlld3BvcnQgOiBWaWV3UG9ydCA9IG51bGw7XG5cdC8vIHJlcXVlc3RlZCBib3VuZHMgd2hvIGNvdWxkIG5vdCBiZSBkaXNwbGF5ZWQgd2hlbiBtYXAgbm90IGluaXRpYWxpemVkIChzZWUgZml0Ym91bmRzIG1ldGhvZClcblx0d2FpdGluZ0JvdW5kcyA6IEwuTGF0TG5nQm91bmRzID0gbnVsbDtcblxuXHRnZXRNYXAoKXsgcmV0dXJuIHRoaXMubWFwXzsgfTsgXG5cdGdldENlbnRlcigpIDogTC5MYXRMbmcgeyByZXR1cm4gdGhpcy52aWV3cG9ydCA/IEwubGF0TG5nKHRoaXMudmlld3BvcnQubGF0LCB0aGlzLnZpZXdwb3J0LmxuZykgOiBudWxsOyB9XG5cdGdldEJvdW5kcygpIDogTC5MYXRMbmdCb3VuZHMgeyByZXR1cm4gdGhpcy5pc01hcExvYWRlZCA/IHRoaXMubWFwXy5nZXRCb3VuZHMoKSA6IG51bGw7IH1cblx0Z2V0Wm9vbSgpIHsgcmV0dXJuIHRoaXMubWFwXy5nZXRab29tKCk7IH1cblx0Z2V0T2xkWm9vbSgpIHsgcmV0dXJuIHRoaXMub2xkWm9vbTsgfVxuXG5cdHNob3coKSB7ICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAnKS5zaG93KCk7IH1cblx0XG5cdGhpZGUoKSB7ICQoJyNkaXJlY3RvcnktY29udGVudC1tYXAnKS5oaWRlKCk7IH1cblxuXHRpbml0aWFsaXplKCkgXG5cdHtcdFxuXHRcdGlmICh0aGlzLmlzSW5pdGlhbGl6ZWQpIHsgdGhpcy5yZXNpemUoKTsgcmV0dXJuOyB9XG5cblx0XHRsZXQgY29uZmlnVGlsZUxheWVycyA9IEFwcC5jb25maWcubWFwLnRpbGVMYXllcnM7XG5cdFx0bGV0IGJhc2VMYXllcnMgPSB7fTtcblx0XHRmb3IobGV0IHRpbGVMYXllciBvZiBjb25maWdUaWxlTGF5ZXJzKVxuXHRcdHtcblx0XHRcdGJhc2VMYXllcnNbdGlsZUxheWVyLm5hbWVdID0gTC50aWxlTGF5ZXIodGlsZUxheWVyLnVybCwge2F0dHJpYnV0aW9uOiB0aWxlTGF5ZXIuYXR0cmlidXRpb259KTtcblx0XHR9XG5cblx0XHQvLyBHZXQgZGVmYXVsdEJhc2VMYXllciBmcm9tIENvb2tpZSBpZiBwb3NzaWJsZVxuXHRcdGxldCBiYXNlTGF5ZXJJZCA9IEFwcC5jb25maWcubWFwLnNhdmVUaWxlTGF5ZXJJbkNvb2tpZXMgPyBDb29raWVzLnJlYWRDb29raWUoJ2RlZmF1bHRCYXNlTGF5ZXInKSA6IG51bGw7XG5cdFx0bGV0IGRlZmF1bHRCYXNlTGF5ZXIgPSBiYXNlTGF5ZXJzLmhhc093blByb3BlcnR5KGJhc2VMYXllcklkKSA/IGJhc2VMYXllcnNbYmFzZUxheWVySWRdIDogYmFzZUxheWVyc1tBcHAuY29uZmlnLm1hcC5kZWZhdWx0VGlsZUxheWVyXTtcblxuXHRcdHRoaXMubWFwXyA9IEwubWFwKCdkaXJlY3RvcnktY29udGVudC1tYXAnLCB7XG5cdFx0ICAgIHpvb21Db250cm9sOiBmYWxzZSxcblx0XHQgICAgbGF5ZXJzOiBbZGVmYXVsdEJhc2VMYXllcl1cblx0XHR9KTtcblxuXHRcdHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXAgPSBMLm1hcmtlckNsdXN0ZXJHcm91cCh7XG5cdFx0ICAgIHNwaWRlcmZ5T25NYXhab29tOiB0cnVlLFxuXHRcdCAgICBzaG93Q292ZXJhZ2VPbkhvdmVyOiBmYWxzZSxcblx0XHQgICAgem9vbVRvQm91bmRzT25DbGljazogdHJ1ZSxcblx0XHQgICAgc3BpZGVyZnlPbkhvdmVyOiBmYWxzZSxcblx0XHQgICAgc3BpZGVyZnlNYXhDb3VudDogSW5maW5pdHksXG5cdFx0ICAgIHNwaWRlcmZ5RGlzdGFuY2VNdWx0aXBsaWVyOiAxLjEsXG5cdFx0ICAgIGNodW5rZWRMb2FkaW5nOiB0cnVlLFxuXHRcdCAgICBhbmltYXRlOiBmYWxzZSxcblx0XHQgICAgbWF4Q2x1c3RlclJhZGl1czogKHpvb20pID0+XG5cdFx0ICAgIHtcblx0XHQgICAgXHRpZiAoem9vbSA+IDEwKSByZXR1cm4gNjA7XG5cdFx0ICAgIFx0aWYgKHpvb20gPiA3KSByZXR1cm4gNzA7XG5cdFx0ICAgIFx0ZWxzZSByZXR1cm4gNzA7XG5cdFx0ICAgIH1cblx0XHR9KTtcblxuXHRcdHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXAub24oJ3NwaWRlcmZpZWQnLCAoY2x1c3RlcnMsIG1hcmtlcnMpID0+XG5cdFx0e1xuXHRcdFx0QXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzSWNvbnModHJ1ZSk7XG5cdFx0fSk7XG5cblx0XHR0aGlzLmFkZE1hcmtlckNsdXN0ZXJHcm91cCgpO1x0XHRcblxuXHRcdEwuY29udHJvbC56b29tKHtwb3NpdGlvbjondG9wcmlnaHQnfSkuYWRkVG8odGhpcy5tYXBfKTtcdFx0XG5cdFx0TC5jb250cm9sLmxheWVycyhiYXNlTGF5ZXJzLCB7fSwge3Bvc2l0aW9uOid0b3ByaWdodCcsIGNvbGxhcHNlZDogZmFsc2V9KS5hZGRUbyh0aGlzLm1hcF8pO1xuXG5cdFx0dGhpcy5tYXBfLm9uKCdzaW5nbGVjbGljaycsIChlKSA9PiB7IHRoaXMub25DbGljay5lbWl0KCk7IH0pO1xuXHRcdHRoaXMubWFwXy5vbignbW92ZWVuZCcsIChlKSA9PiBcblx0XHR7IFxuXHRcdFx0bGV0IHZpc2libGVNYXJrZXJzTGVuZ3RoID0gJCgnLmxlYWZsZXQtbWFya2VyLWljb246dmlzaWJsZScpLmxlbmd0aDtcdFx0XG5cdFx0XHRBcHAuYm91bmRzTW9kdWxlLmV4dGVuZE1hcEJvdW5kcyh0aGlzLm9sZFpvb20sIHRoaXMubWFwXy5nZXRab29tKCksIHZpc2libGVNYXJrZXJzTGVuZ3RoKTtcdFx0XHRcblx0XHRcdFxuXHRcdFx0dGhpcy51cGRhdGVWaWV3UG9ydCgpO1xuXHRcdFx0dGhpcy5vbklkbGUuZW1pdCgpOyBcblx0XHRcdHRoaXMub2xkWm9vbSA9IHRoaXMubWFwXy5nZXRab29tKCk7XHRcdFx0XG5cdFx0fSk7XG5cdFx0dGhpcy5tYXBfLm9uKCdsb2FkJywgKGUpID0+IFxuXHRcdHsgXG5cdFx0XHR0aGlzLmlzTWFwTG9hZGVkID0gdHJ1ZTsgXG5cdFx0XHR0aGlzLm9uTWFwTG9hZGVkLmVtaXQoKTtcdFx0XHRcblx0XHR9KTtcblxuXHRcdHRoaXMucmVzaXplKCk7XG5cdFx0dGhpcy5pc0luaXRpYWxpemVkID0gdHJ1ZTtcblxuXHRcdC8vIGlmIHdlIGJlZ2FuIHdpdGggTGlzdCBNb2RlLCB3aGVuIHdlIGluaXRpYWxpemUgbWFwXG5cdFx0Ly8gdGhlcmUgaXMgYWxyZWFkeSBhbiBhZGRyZXNzIGdlb2NvZGVkIG9yIGEgdmlld3BvcnQgZGVmaW5lZFxuXHRcdGlmICh0aGlzLndhaXRpbmdCb3VuZHMpIHRoaXMuZml0Qm91bmRzKHRoaXMud2FpdGluZ0JvdW5kcywgZmFsc2UpO1xuXHRcdGVsc2UgaWYgKHRoaXMudmlld3BvcnQpIHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5zZXRWaWV3UG9ydCh0aGlzLnZpZXdwb3J0KTsgfSwyMDApO1xuXHRcdFxuXHRcdHRoaXMub25NYXBSZWFkeS5lbWl0KCk7XG5cdH07XG5cblx0YWRkTWFya2VyQ2x1c3Rlckdyb3VwKCkgeyB0aGlzLm1hcF8uYWRkTGF5ZXIodGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cCk7IH1cblxuXHRyZXNpemUoKVxuXHR7XG5cdFx0Ly9jb25zb2xlLmxvZyhcIlJlc2l6ZSwgY3VyciB2aWV3cG9ydCA6XCIpO1xuXHRcdC8vIFdhcm5pbmcgIUkgY2hhbmdlZCB0aGUgbGVhZmxldC5qcyBmaWxlIGxpYnJhcnkgbXlzZWxmXG5cdFx0Ly8gYmVjYXVzZSB0aGUgb3B0aW9ucyBkb2Vzbid0IHdvcmsgcHJvcGVybHlcblx0XHQvLyBJIGNoYW5nZWQgaXQgdG8gYXZvaWQgcGFubmluZyB3aGVuIHJlc2l6aW5nIHRoZSBtYXBcblx0XHQvLyBiZSBjYXJlZnVsIGlmIHVwZGF0aW5nIHRoZSBsZWFmbGV0IGxpYnJhcnkgdGhpcyB3aWxsXG5cdFx0Ly8gbm90IHdvcmsgYW55bW9yZVxuXHRcdGlmICh0aGlzLm1hcF8pIHRoaXMubWFwXy5pbnZhbGlkYXRlU2l6ZShmYWxzZSk7XG5cdH1cblxuXHRhZGRNYXJrZXIobWFya2VyIDogTC5NYXJrZXIpXG5cdHtcblx0XHR0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwLmFkZExheWVyKG1hcmtlcik7XG5cdH1cblxuXHRhZGRNYXJrZXJzKG1hcmtlcnMgOiBMLk1hcmtlcltdKVxuXHR7XG5cdFx0aWYgKHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXApIHRoaXMubWFya2VyQ2x1c3RlcmVyR3JvdXAuYWRkTGF5ZXJzKG1hcmtlcnMpO1xuXHR9XG5cblx0cmVtb3ZlTWFya2VyKG1hcmtlciA6IEwuTWFya2VyKVxuXHR7XG5cdFx0dGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cC5yZW1vdmVMYXllcihtYXJrZXIpO1xuXHR9XG5cblx0cmVtb3ZlTWFya2VycyhtYXJrZXJzIDogTC5NYXJrZXJbXSlcblx0e1xuXHRcdGlmICh0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwKSB0aGlzLm1hcmtlckNsdXN0ZXJlckdyb3VwLnJlbW92ZUxheWVycyhtYXJrZXJzKTtcblx0fVxuXG5cdGNsZWFyTWFya2VycygpXG5cdHtcblx0XHRpZiAodGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cCkgdGhpcy5tYXJrZXJDbHVzdGVyZXJHcm91cC5jbGVhckxheWVycygpO1xuXHR9XG5cblx0Zml0RWxlbWVudHNCb3VuZHMoZWxlbWVudHMgOiBFbGVtZW50W10pXG5cdHtcblx0XHRsZXQgYm91bmRzID0gTC5sYXRMbmdCb3VuZHMoKTtcblx0XHRmb3IobGV0IGVsZW1lbnQgb2YgZWxlbWVudHMpIGJvdW5kcy5leHRlbmQoZWxlbWVudC5wb3NpdGlvbik7XG5cdFx0dGhpcy5maXRCb3VuZHMoYm91bmRzKTtcblx0fVxuXG5cdC8vIGZpdCBtYXAgdmlldyB0byBib3VuZHNcblx0Zml0Qm91bmRzKGJvdW5kcyA6IEwuTGF0TG5nQm91bmRzLCBhbmltYXRlIDogYm9vbGVhbiA9IHRydWUpXG5cdHtcblx0XHQvLyBjb25zb2xlLmxvZyhcImZpdGJvdW5kc1wiLCBib3VuZHMpO1xuXHRcdGlmICghdGhpcy5pc0luaXRpYWxpemVkKVxuXHRcdHtcblx0XHRcdHRoaXMud2FpdGluZ0JvdW5kcyA9IGJvdW5kcztcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0LyppZiAodGhpcy5pc01hcExvYWRlZCAmJiBhbmltYXRlKSBBcHAubWFwKCkuZmx5VG9Cb3VuZHMoYm91bmRzKTtcblx0XHRlbHNlKi8gQXBwLm1hcCgpLmZpdEJvdW5kcyhib3VuZHMpO1xuXHRcdHNldFRpbWVvdXQoICgpID0+IHsgQXBwLm1hcE1hbmFnZXIuaGFuZGxlTWFwSWRsZSgpOyBjb25zb2xlLmxvZyhcImZvcmNlIGlkbGVcIik7IH0sIDUwMCk7XG5cdH1cdFx0XG5cblx0Zml0RGVmYXVsdEJvdW5kcygpXG5cdHtcblx0XHR0aGlzLmZpdEJvdW5kcyhBcHAuYm91bmRzTW9kdWxlLmRlZmF1bHRCb3VuZHMpO1xuXHR9XG5cblx0cGFuVG9Mb2NhdGlvbihsb2NhdGlvbiA6IEwuTGF0TG5nLCB6b29tPywgYW5pbWF0ZSA6IGJvb2xlYW4gPSB0cnVlKVxuXHR7XG5cdFx0em9vbSA9IHpvb20gfHwgdGhpcy5nZXRab29tKCkgfHwgMTI7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJwYW5Ub2xvY2F0aW9uXCIsIGxvY2F0aW9uKTtcblxuXHRcdC8qaWYgKHRoaXMuaXNNYXBMb2FkZWQgJiYgYW5pbWF0ZSkgdGhpcy5tYXBfLmZseVRvKGxvY2F0aW9uLCB6b29tKTtcblx0XHRlbHNlKi8gdGhpcy5tYXBfLnNldFZpZXcobG9jYXRpb24sIHpvb20pO1xuXHR9O1xuXG5cdC8vIHRoZSBhY3R1YWwgZGlzcGxheWVkIG1hcCByYWRpdXMgKGRpc3RhbmNlIGZyb20gY3JvbmVyIHRvIGNlbnRlcilcblx0bWFwUmFkaXVzSW5LbSgpIDogbnVtYmVyXG5cdHtcblx0XHRpZiAoIXRoaXMuaXNNYXBMb2FkZWQpIHJldHVybiAwO1xuXHRcdHJldHVybiBNYXRoLmZsb29yKHRoaXMubWFwXy5nZXRCb3VuZHMoKS5nZXROb3J0aEVhc3QoKS5kaXN0YW5jZVRvKHRoaXMubWFwXy5nZXRDZW50ZXIoKSkgLyAxMDAwKTtcblx0fVxuXG5cdC8vIGRpc3RhbmNlIGZyb20gbGFzdCBzYXZlZCBsb2NhdGlvbiB0byBhIHBvc2l0aW9uXG5cdGRpc3RhbmNlRnJvbUxvY2F0aW9uVG8ocG9zaXRpb24gOiBMLkxhdExuZylcblx0e1xuXHRcdGlmICghQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uKCkpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKS5kaXN0YW5jZVRvKHBvc2l0aW9uKSAvIDEwMDA7XG5cdH1cblxuXHRjb250YWlucyhwb3NpdGlvbiA6IEwuTGF0TG5nRXhwcmVzc2lvbikgOiBib29sZWFuXG5cdHtcblx0XHRpZiAocG9zaXRpb24gJiYgdGhpcy5pc01hcExvYWRlZClcblx0XHR7XG5cdFx0XHQgcmV0dXJuIHRoaXMubWFwXy5nZXRCb3VuZHMoKS5jb250YWlucyhwb3NpdGlvbik7XG5cdFx0fVxuXHRcdGNvbnNvbGUubG9nKFwiTWFwQ29tcG9uZW50LT5jb250YWlucyA6IG1hcCBub3QgbG9hZGVkIG9yIGVsZW1lbnQgcG9zaXRpb24gdW5kZWZpbmVkXCIpO1xuXHRcdHJldHVybiBmYWxzZTtcdFx0XG5cdH1cblxuXHRleHRlbmRlZENvbnRhaW5zKHBvc2l0aW9uIDogTC5MYXRMbmdFeHByZXNzaW9uKSA6IGJvb2xlYW5cblx0e1xuXHRcdGlmICh0aGlzLmlzTWFwTG9hZGVkICYmIHBvc2l0aW9uKVxuXHRcdHtcblx0XHRcdCByZXR1cm4gQXBwLmJvdW5kc01vZHVsZS5leHRlbmRlZEJvdW5kcy5jb250YWlucyhwb3NpdGlvbik7XG5cdFx0fVxuXHRcdC8vY29uc29sZS5sb2coXCJNYXBDb21wb25lbnQtPmNvbnRhaW5zIDogbWFwIG5vdCBsb2FkZWQgb3IgZWxlbWVudCBwb3NpdGlvbiB1bmRlZmluZWRcIik7XG5cdFx0cmV0dXJuIGZhbHNlO1xuXHR9XG5cblx0dXBkYXRlVmlld1BvcnQoKVxuXHR7XG5cdFx0aWYgKCF0aGlzLnZpZXdwb3J0KSB0aGlzLnZpZXdwb3J0ID0gbmV3IFZpZXdQb3J0KCk7XG5cdFx0dGhpcy52aWV3cG9ydC5sYXQgPSAgdGhpcy5tYXBfLmdldENlbnRlcigpLmxhdDtcblx0XHR0aGlzLnZpZXdwb3J0LmxuZyA9ICB0aGlzLm1hcF8uZ2V0Q2VudGVyKCkubG5nO1xuXHRcdHRoaXMudmlld3BvcnQuem9vbSA9IHRoaXMuZ2V0Wm9vbSgpO1xuXHR9XHRcblxuXHRzZXRWaWV3UG9ydCgkdmlld3BvcnQgOiBWaWV3UG9ydCwgJHBhbk1hcFRvVmlld3BvcnQgOiBib29sZWFuID0gdHJ1ZSlcblx0e1x0XHRcblx0XHRpZiAodGhpcy5tYXBfICYmICR2aWV3cG9ydCAmJiAkcGFuTWFwVG9WaWV3cG9ydClcblx0XHR7XG5cdFx0XHQvL2NvbnNvbGUubG9nKFwic2V0Vmlld1BvcnRcIiwgJHZpZXdwb3J0KTtcblx0XHRcdGxldCB0aW1lb3V0ID0gQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lID8gNTAwIDogMDtcblx0XHRcdHNldFRpbWVvdXQoICgpID0+IHsgdGhpcy5tYXBfLnNldFZpZXcoTC5sYXRMbmcoJHZpZXdwb3J0LmxhdCwgJHZpZXdwb3J0LmxuZyksICR2aWV3cG9ydC56b29tKSB9LCB0aW1lb3V0KTtcblx0XHR9XG5cdFx0dGhpcy52aWV3cG9ydCA9ICR2aWV3cG9ydDtcblx0fVxuXG5cdGlzTWFwQm91bmRzKCkgeyByZXR1cm4gdGhpcy5nZXRNYXAoKSAmJiB0aGlzLmdldE1hcCgpLmdldEJvdW5kcygpOyB9XG5cblx0aGFzWm9vbWVkSW4oKVxuICB7XG4gICAgbGV0IHpvb20gPSB0aGlzLmdldFpvb20oKTtcbiAgICBsZXQgb2xkX3pvb20gPSB0aGlzLmdldE9sZFpvb20oKTtcbiAgICByZXR1cm4gKHpvb20gIT0gb2xkX3pvb20gJiYgb2xkX3pvb20gIT0gLTEgJiYgem9vbSA+IG9sZF96b29tKTtcbiAgfVxufVxuIiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJCwgTCA6IGFueTtcblxuZXhwb3J0IGNsYXNzIE1hcmtlclxue1xuXHRwcml2YXRlIGVsZW1lbnRJZCA6IHN0cmluZztcblx0cHJpdmF0ZSBpc0FuaW1hdGluZyA6IGJvb2xlYW4gPSBmYWxzZTtcblx0Ly8gd2UgdXNlIGxlYWZsZXQgbWFya2VycyB0byBkaXNwbGF5IG1hcmtlciBvbiBtYXAuIE1hcmtlciBpcyBqdXN0IGEgZXh0ZW5zaW9uIG9mIGxlYWZsZXRNYXJrZXJcblx0cHJpdmF0ZSBsZWFmbGV0TWFya2VyIDogTC5NYXJrZXI7XG5cdC8vIHdlIG1heSB3YW50IHRvIGhhbGYgaGlkZGVuIHNvbWVzIG1hcmtlcnMgaW4gcGFydGljdWxhciBzdGF0ZXMgKHNldHRpbmcgb3BhY2l0eSB0byAuNSlcblx0cHJpdmF0ZSBoYWxmSGlkZGVuIDogYm9vbGVhbiA9IGZhbHNlO1xuXHQvLyB3ZSB1bmNsZXN0ZXJpemUgc21hbGwgY2x1c3RlcnMgdG8gc2hvdyBkaXJlY3RseSB0aGUgbWFya2Vycy4gRm9yIHRoZSBtYXJrZXJzIHRvIGJlIHZpc2libGUsIHdpIGluY2xpbmF0ZSBzb21lIG9mIHRoZW0gdG8gcmlnaHQgb2YgbGVmdFxuXHRwcml2YXRlIGluY2xpbmF0aW9uID0gXCJub3JtYWxcIjtcblxuXHRjb25zdHJ1Y3RvcihlbGVtZW50SWQgOiBzdHJpbmcsIHBvc2l0aW9uXyA6IEwuTGF0TG5nKSBcblx0e1xuXHRcdHRoaXMuZWxlbWVudElkID0gZWxlbWVudElkO1xuXG5cdFx0aWYgKCFwb3NpdGlvbl8pXG5cdFx0e1xuXHRcdFx0bGV0IGVsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnQoKTtcblx0XHRcdGlmIChlbGVtZW50ID09PSBudWxsKSBjb25zb2xlLmxvZyhcImVsZW1lbnQgbm9uIGdlb2xvY2FsaXplZCBpZCA9IFwiICsgdGhpcy5lbGVtZW50SWQpO1xuXHRcdFx0ZWxzZSBwb3NpdGlvbl8gPSBlbGVtZW50LnBvc2l0aW9uO1xuXHRcdH0gXG5cblx0XHR0aGlzLmxlYWZsZXRNYXJrZXIgPSBMLm1hcmtlcihwb3NpdGlvbl8sIHsgJ3Jpc2VPbkhvdmVyJyA6IHRydWV9KTtcdFx0XHRcdFxuXHRcdHRoaXMubGVhZmxldE1hcmtlci5vbignY2xpY2snLCAoZXYpID0+IHsgQXBwLm1hcE1hbmFnZXIuaGFuZGxlTWFya2VyQ2xpY2sodGhpcyk7IH0pO1x0XG5cdFx0dGhpcy5sZWFmbGV0TWFya2VyLm9uKCdtb3VzZW92ZXInLCAoZXYpID0+IHsgaWYgKCF0aGlzLmlzQW5pbWF0aW5nKSB0aGlzLnNob3dCaWdTaXplKCk7IH0pO1xuXHRcdHRoaXMubGVhZmxldE1hcmtlci5vbignbW91c2VvdXQnLCAoZXYpID0+IHsgaWYgKCF0aGlzLmlzQW5pbWF0aW5nKSB0aGlzLnNob3dOb3JtYWxTaXplKCk7IH0pO1xuXHRcdHRoaXMubGVhZmxldE1hcmtlci5zZXRJY29uKEwuZGl2SWNvbih7Y2xhc3NOYW1lOiAnbGVhZmxldC1tYXJrZXItY29udGFpbmVyJywgaHRtbDogXCI8c3BhbiBpZD1cXFwibWFya2VyLVwiKyB0aGlzLmVsZW1lbnRJZCArIFwiXFxcIiBnb2dvLWljb24tbWFya2VyPjwvc3Bhbj5cIn0pKTtcblx0fTtcdFx0XG5cblx0dXBkYXRlKCkgXG5cdHtcdFx0XG5cdFx0bGV0IGVsZW1lbnQgPSB0aGlzLmdldEVsZW1lbnQoKTtcblxuXHRcdGxldCBkaXNhYmxlTWFya2VyID0gZmFsc2U7XG5cdFx0bGV0IHNob3dNb3JlSWNvbiA9IHRydWU7XG5cblx0XHRsZXQgb3B0aW9uc1RvRGlzcGxheSA9IGVsZW1lbnQuZ2V0SWNvbnNUb0Rpc3BsYXkoKTtcblxuXHRcdGxldCBodG1sTWFya2VyID0gQXBwLnRlbXBsYXRlTW9kdWxlLnJlbmRlcignbWFya2VyJywgXG5cdFx0e1xuXHRcdFx0ZWxlbWVudCA6IGVsZW1lbnQsIFxuXHRcdFx0bWFpbk9wdGlvblRvRGlzcGxheTogb3B0aW9uc1RvRGlzcGxheVswXSxcblx0XHRcdG90aGVyT3B0aW9uc1RvRGlzcGxheTogb3B0aW9uc1RvRGlzcGxheS5zbGljZSgxKSwgXG5cdFx0XHRzaG93TW9yZUljb24gOiBzaG93TW9yZUljb24sXG5cdFx0XHRkaXNhYmxlTWFya2VyIDogZGlzYWJsZU1hcmtlcixcblx0XHRcdHBlbmRpbmdDbGFzcyA6IGVsZW1lbnQuaXNQZW5kaW5nKCkgJiYgQXBwLmNvbmZpZy5pc0ZlYXR1cmVBdmFpbGFibGUoJ3BlbmRpbmcnKSA/ICdwZW5kaW5nJyA6ICcnLFxuXHRcdFx0c2hvd1BlbmRpbmcgOiBlbGVtZW50LmlzUGVuZGluZygpICYmIEFwcC5jb25maWcuaXNGZWF0dXJlQXZhaWxhYmxlKCdwZW5kaW5nJyksXG5cdFx0XHRjb25maWcgOiBBcHAuY29uZmlnXG5cdFx0fSk7XG5cblx0XHQvLyBzYXZlIHRoZSBjbGFzcyBiZWNhdXNlIGl0IGhhcyBiZWVuIG1vZGlmaWVkIGJ5IG1hcmtlciBjbHVzdGVyIGFkZGluZyBvclxuXHRcdC8vIHJlbW92aW5nIHRoZSBcInJvdGF0ZVwiIGNsYXNzXHRcblx0XHRsZXQgb2xkQ2xhc3NOYW1lID0gKDxhbnk+dGhpcy5sZWFmbGV0TWFya2VyKS5faWNvbiA/ICAoPGFueT50aGlzLmxlYWZsZXRNYXJrZXIpLl9pY29uLmNsYXNzTmFtZSA6ICdsZWFmbGV0LW1hcmtlci1jb250YWluZXInO1xuXHRcdG9sZENsYXNzTmFtZS5yZXBsYWNlKCdsZWFmbGV0LW1hcmtlci1pY29uJywgJycpO1xuICBcdHRoaXMubGVhZmxldE1hcmtlci5zZXRJY29uKEwuZGl2SWNvbih7Y2xhc3NOYW1lOiBvbGRDbGFzc05hbWUsIGh0bWw6IGh0bWxNYXJrZXJ9KSk7XHRcblxuICBcdGlmICh0aGlzLmlzRGlzcGxheWVkT25FbGVtZW50SW5mb0JhcigpKSB0aGlzLnNob3dCaWdTaXplKCk7XG5cdH07XG5cblx0YW5pbWF0ZURyb3AoKSBcblx0e1xuXHRcdHRoaXMuaXNBbmltYXRpbmcgPSB0cnVlO1xuXHRcdHRoaXMuZG9tTWFya2VyKCkuYW5pbWF0ZSh7dG9wOiAnLT0yNXB4J30sIDMwMCwgJ2Vhc2VJbk91dEN1YmljJyk7XG5cdFx0dGhpcy5kb21NYXJrZXIoKS5hbmltYXRlKHt0b3A6ICcrPTI1cHgnfSwgMjUwLCAnZWFzZUluT3V0Q3ViaWMnLCAoKSA9PiB7dGhpcy5pc0FuaW1hdGluZyA9IGZhbHNlOyB0aGlzLmRvbU1hcmtlcigpLmNzcygndG9wJywgJ2F1dG8nKX0gKTtcblx0fTtcdFxuXG5cdHNob3dCaWdTaXplKCkgXG5cdHtcdFx0XHRcblx0XHR0aGlzLmFkZENsYXNzVG9MZWFmbGV0TWFya2VyXyhcIkJpZ1NpemVcIik7XG5cdFx0bGV0IGRvbU1hcmtlciA9IHRoaXMuZG9tTWFya2VyKCk7XG5cdFx0ZG9tTWFya2VyLnBhcmVudCgpLmZpbmQoJy5tYXJrZXItbmFtZScpLnNob3coKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLm1vcmVJY29uQ29udGFpbmVyJykuc2hvdygpO1xuXHRcdGRvbU1hcmtlci5maW5kKCcuZ29nby1pY29uLXBsdXMtY2lyY2xlJykuaGlkZSgpO1xuXHR9O1xuXG5cdHNob3dOb3JtYWxTaXplKCRmb3JjZSA6IGJvb2xlYW4gPSBmYWxzZSkgXG5cdHtcdFxuXHRcdGlmICghJGZvcmNlICYmIHRoaXMuaXNEaXNwbGF5ZWRPbkVsZW1lbnRJbmZvQmFyKCkpIHJldHVybjtcblxuXHRcdGxldCBkb21NYXJrZXIgPSB0aGlzLmRvbU1hcmtlcigpO1xuXHRcdHRoaXMucmVtb3ZlQ2xhc3NUb0xlYWZsZXRNYXJrZXJfKFwiQmlnU2l6ZVwiKTtcblx0XHRkb21NYXJrZXIucGFyZW50KCkuZmluZCgnLm1hcmtlci1uYW1lJykuaGlkZSgpO1xuXHRcdGRvbU1hcmtlci5maW5kKCcubW9yZUljb25Db250YWluZXInKS5oaWRlKCk7XG5cdFx0ZG9tTWFya2VyLmZpbmQoJy5nb2dvLWljb24tcGx1cy1jaXJjbGUnKS5zaG93KCk7XG5cdH07XG5cblx0c2hvd0hhbGZIaWRkZW4oJGZvcmNlIDogYm9vbGVhbiA9IGZhbHNlKSBcblx0e1x0XHRcblx0XHRpZiAoISRmb3JjZSAmJiB0aGlzLmlzRGlzcGxheWVkT25FbGVtZW50SW5mb0JhcigpKSByZXR1cm47XG5cblx0XHR0aGlzLmFkZENsYXNzVG9MZWFmbGV0TWFya2VyXyhcImhhbGZIaWRkZW5cIik7XG5cdFx0bGV0IGRvbU1hcmtlciA9IHRoaXMuZG9tTWFya2VyKCk7XG5cdFx0ZG9tTWFya2VyLmNzcygnei1pbmRleCcsJzEnKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLmdvZ28taWNvbi1wbHVzLWNpcmNsZScpLmFkZENsYXNzKFwiaGFsZkhpZGRlblwiKTtcblx0XHRkb21NYXJrZXIuZmluZCgnLm1vcmVJY29uQ29udGFpbmVyJykuYWRkQ2xhc3MoXCJoYWxmSGlkZGVuXCIpO1xuXG5cdFx0dGhpcy5oYWxmSGlkZGVuID0gdHJ1ZTtcblx0fTtcblxuXHRzaG93Tm9ybWFsSGlkZGVuKCkgXG5cdHtcdFx0XG5cdFx0dGhpcy5yZW1vdmVDbGFzc1RvTGVhZmxldE1hcmtlcl8oXCJoYWxmSGlkZGVuXCIpO1xuXHRcdGxldCBkb21NYXJrZXIgPSB0aGlzLmRvbU1hcmtlcigpO1xuXHRcdGRvbU1hcmtlci5jc3MoJ3otaW5kZXgnLCcxMCcpO1xuXHRcdGRvbU1hcmtlci5maW5kKCcuZ29nby1pY29uLXBsdXMtY2lyY2xlJykucmVtb3ZlQ2xhc3MoXCJoYWxmSGlkZGVuXCIpO1xuXHRcdGRvbU1hcmtlci5maW5kKCcubW9yZUljb25Db250YWluZXInKS5yZW1vdmVDbGFzcyhcImhhbGZIaWRkZW5cIik7XG5cblx0XHR0aGlzLmhhbGZIaWRkZW4gPSBmYWxzZTtcblx0fTtcblxuXHRwcml2YXRlIGFkZENsYXNzVG9MZWFmbGV0TWFya2VyXyhjbGFzc1RvQWRkKSBcblx0e1x0XHRcblx0XHR0aGlzLmRvbU1hcmtlcigpLmFkZENsYXNzKGNsYXNzVG9BZGQpO1xuXHRcdHRoaXMuZG9tTWFya2VyKCkuc2libGluZ3MoJy5tYXJrZXItbmFtZScpLmFkZENsYXNzKGNsYXNzVG9BZGQpOyBcblx0fTtcblxuXHRwcml2YXRlIHJlbW92ZUNsYXNzVG9MZWFmbGV0TWFya2VyXyhjbGFzc1RvUmVtb3ZlKSBcblx0e1x0XHRcblx0XHR0aGlzLmRvbU1hcmtlcigpLnJlbW92ZUNsYXNzKGNsYXNzVG9SZW1vdmUpO1xuXHRcdHRoaXMuZG9tTWFya2VyKCkuc2libGluZ3MoJy5tYXJrZXItbmFtZScpLnJlbW92ZUNsYXNzKGNsYXNzVG9SZW1vdmUpOyAgICAgIFxuXHR9O1xuXG5cdGlzRGlzcGxheWVkT25FbGVtZW50SW5mb0JhcigpIHsgcmV0dXJuIEFwcC5pbmZvQmFyQ29tcG9uZW50LmdldEN1cnJFbGVtZW50SWQoKSA9PSB0aGlzLmVsZW1lbnRJZDsgfVxuXG5cdGRvbU1hcmtlcigpIHsgcmV0dXJuICQoJyNtYXJrZXItJysgdGhpcy5lbGVtZW50SWQpOyB9XG5cblx0Z2V0SWQgKCkgOiBzdHJpbmcgeyByZXR1cm4gdGhpcy5lbGVtZW50SWQ7IH07XG5cblx0Z2V0TGVhZmxldE1hcmtlciAoKSA6IEwuTWFya2VyIHsgcmV0dXJuIHRoaXMubGVhZmxldE1hcmtlcjsgfTtcblxuXHRpc0hhbGZIaWRkZW4oKSA6IGJvb2xlYW4geyByZXR1cm4gdGhpcy5oYWxmSGlkZGVuOyB9XG5cblx0Z2V0RWxlbWVudCAoKSA6IEVsZW1lbnQgeyByZXR1cm4gQXBwLmVsZW1lbnRzTW9kdWxlLmdldEVsZW1lbnRCeUlkKHRoaXMuZWxlbWVudElkKTsgfTtcblxuXHRnZXRQb3NpdGlvbiAoKSA6IEwuTGF0TG5nIHsgcmV0dXJuIHRoaXMubGVhZmxldE1hcmtlci5nZXRMYXRMbmcoKTsgfTtcbn1cblxuIiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmRlY2xhcmUgdmFyICQgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50XG57XG5cdGRvbSA6IGFueTtcblx0ZWxlbWVudCA6IEVsZW1lbnQ7XHRcblx0cHJvdGVjdGVkIGFqYXhVcmwgPSBcIlwiO1xuXG5cdGNvbnN0cnVjdG9yKGRvbSA6IHN0cmluZylcblx0e1xuXHRcdHRoaXMuZG9tID0gJChkb20pO1xuXHRcdHRoaXMuaW5pdGlhbGl6ZSgpO1xuXHRcdHRoaXMuYmluZHMoKTtcblx0fVxuXG5cdHByb3RlY3RlZCBpbml0aWFsaXplKCkge31cblxuXHRwcm90ZWN0ZWQgYmluZHMoKVxuXHR7XG5cdFx0dGhpcy5kb20uZmluZCgnYnV0dG9uW3R5cGU9c3VibWl0XScpLmNsaWNrKChlKSA9PiB0aGlzLmhhbmRsZVN1Ym1pdChlKSk7XG5cdH1cblxuXHRvcGVuKGVsZW1lbnQgOiBFbGVtZW50KVxuXHR7XHRcdFxuXHRcdHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG5cdFx0dGhpcy5jbGVhckxvYWRlcigpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5nZW5lcmljLWVycm9yLW1lc3NhZ2UnKS5oaWRlKCk7XG5cdFx0dGhpcy5iZWZvcmVPcGVuKGVsZW1lbnQpO1xuXHRcdHRoaXMuZG9tLm9wZW5Nb2RhbCgpO1xuXHR9XG5cblx0cHJvdGVjdGVkIGJlZm9yZU9wZW4oZWxlbWVudCA6IEVsZW1lbnQpIHsgfVxuXG5cdHByb3RlY3RlZCBoYW5kbGVTdWJtaXQoZSkgXG5cdHtcblx0XHRpZiAoIXRoaXMuZWxlbWVudCkgcmV0dXJuO1xuXHRcdHRoaXMuZGlzcGxheUxvYWRlcigpO1xuXHRcdHRoaXMuc3VibWl0KCk7XHRcdFxuXHRcdGUuc3RvcFByb3BhZ2F0aW9uKCk7ZS5zdG9wSW1tZWRpYXRlUHJvcGFnYXRpb24oKTtlLnByZXZlbnREZWZhdWx0KCk7XG5cdH1cblxuXHRzdWJtaXQoKSB7fVxuXG5cdHByb3RlY3RlZCBzZW5kUmVxdWVzdChkYXRhKVxuXHR7XG5cdFx0QXBwLmFqYXhNb2R1bGUuc2VuZFJlcXVlc3QodGhpcy5hamF4VXJsLCAncG9zdCcsIGRhdGEsXG5cdFx0ICAocmVzcG9uc2UpICAgICA9PiB7IFxuXHRcdCAgXHRcdHNldFRpbWVvdXQoICgpID0+IHRoaXMuY2xlYXJMb2FkZXIoKSwgNTAwKTsgXG5cdFx0ICBcdFx0dGhpcy5vblN1Y2Nlc3MocmVzcG9uc2UpO1xuXHRcdCAgXHR9LFxuXHRcdCAgKGVycm9yTWVzc2FnZSkgPT4geyB0aGlzLmNsZWFyTG9hZGVyKCk7IHRoaXMub25FcnJvcihlcnJvck1lc3NhZ2UpOyB9XG5cdFx0KTsgXG5cdH1cblxuXHRwcm90ZWN0ZWQgZGlzcGxheUxvYWRlcigpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcuY2FuY2VsLWJ0bicpLnNob3coKTtcblx0XHR0aGlzLmRvbS5maW5kKCdidXR0b25bdHlwZT1zdWJtaXRdJykuaGlkZSgpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5sb2FkZXItb3ZlcmxheScpLmZhZGVJbig4MDApO1xuXHR9XG5cblx0cHJvdGVjdGVkIGNsZWFyTG9hZGVyKClcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5jYW5jZWwtYnRuJykuaGlkZSgpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJ2J1dHRvblt0eXBlPXN1Ym1pdF0nKS5zaG93KCk7XG5cdFx0dGhpcy5kb20uZmluZCgnLmxvYWRlci1vdmVybGF5JykuaGlkZSgpO1xuXHR9XG5cblx0cHJvdGVjdGVkIG9uU3VjY2VzcyhyZXNwb25zZSlcblx0e1xuXHRcdGlmIChyZXNwb25zZS5zdWNjZXNzKVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmNsb3NlTW9kYWwoKTtcblx0XHRcdHRoaXMuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKHJlc3BvbnNlLm1lc3NhZ2UpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5vbkVycm9yKHJlc3BvbnNlLm1lc3NhZ2UpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBvbkVycm9yKGVycm9yTWVzc2FnZSlcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNtZXNzYWdlLWVycm9yJykudGV4dChlcnJvck1lc3NhZ2UpLnNob3coKTtcblx0fVxufSIsImRlY2xhcmUgdmFyICQgOiBhbnlcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50IH0gZnJvbSBcIi4vYWJzdHJhY3QtbW9kYWwuY29tcG9uZW50XCI7XG5cbmV4cG9ydCBjbGFzcyBEZWxldGVDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50XG57XG5cdGNvbnN0cnVjdG9yKClcbiAgIHtcbiAgICAgc3VwZXIoXCIjbW9kYWwtZGVsZXRlXCIpO1xuICAgICB0aGlzLmFqYXhVcmwgPSBBcHAuY29uZmlnLmZlYXR1cmVzLmRlbGV0ZS51cmw7XG4gICB9XG5cblx0YmVmb3JlT3BlbihlbGVtZW50IDogRWxlbWVudClcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJy5lbGVtZW50TmFtZScpLnRleHQoY2FwaXRhbGl6ZShlbGVtZW50Lm5hbWUpKTtcblx0XHR0aGlzLmRvbS5maW5kKCcuaW5wdXQtY29tbWVudCcpLnZhbCgnJyk7XG5cdFx0dGhpcy5kb20uZmluZCgnLm9wdGlvbi1yYWRpby1idG46Y2hlY2tlZCcpLnByb3AoJ2NoZWNrZWQnLCBmYWxzZSk7XG5cdFx0dGhpcy5kb20uZmluZCgnI3NlbGVjdC1lcnJvcicpLmhpZGUoKTtcblx0fVxuXG5cdHN1Ym1pdCgpXG5cdHtcblx0XHRsZXQgbWVzc2FnZSA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1jb21tZW50JykudmFsKCk7XG5cdFx0bGV0IHJvdXRlID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5kZWxldGUudXJsO1xuXHRcdGxldCBkYXRhID0geyBlbGVtZW50SWQ6IHRoaXMuZWxlbWVudC5pZCwgbWVzc2FnZTogbWVzc2FnZSB9O1xuXG5cdFx0dGhpcy5zZW5kUmVxdWVzdChkYXRhKTtcblx0fVxuXG5cdHByb3RlY3RlZCBvblN1Y2Nlc3MocmVzcG9uc2UpXG5cdHtcblx0XHRsZXQgcmVzcG9uc2VNZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcblx0XHRsZXQgc3VjY2VzcyA9IHJlc3BvbnNlLnN1Y2Nlc3M7XG5cblx0XHRpZiAoc3VjY2Vzcylcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5jbG9zZU1vZGFsKCk7XG5cdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93KCk7XG5cblx0XHRcdHRoaXMuZWxlbWVudC51cGRhdGUodHJ1ZSk7XG5cdFx0XHR0aGlzLmVsZW1lbnQuaXNGdWxseUxvYWRlZCA9IGZhbHNlO1xuXG5cdFx0XHQvLyByZWxvYWQgRWxlbWVudCwgYW5kIGFkZCBmbGFzaCBtZXNzYWdlXG5cdFx0XHRBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudCh0aGlzLmVsZW1lbnQuaWQsICgpID0+IHtcblx0XHRcdFx0dGhpcy5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTtcblx0XHRcdH0pO1xuXG5cdFx0XHR0aGlzLmVsZW1lbnQuY29tcG9uZW50LmFkZEZsYXNoTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnI3NlbGVjdC1lcnJvcicpLnRleHQocmVzcG9uc2VNZXNzYWdlKS5zaG93KCk7XG5cdFx0fVxuXHR9XG5cblx0cHJvdGVjdGVkIG9uRXJyb3IobWVzc2FnZSlcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS50ZXh0KG1lc3NhZ2UpLnNob3coKTtcblx0fVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcFN0YXRlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL2Fic3RyYWN0LW1vZGFsLmNvbXBvbmVudFwiO1xuXG5kZWNsYXJlIHZhciAkIDogYW55O1xuXG5leHBvcnQgY2xhc3MgUGlja0FkZHJlc3NDb21wb25lbnQgZXh0ZW5kcyBBYnN0cmFjdE1vZGFsQ29tcG9uZW50XG57XG4gIGNvbnN0cnVjdG9yKCkgeyBzdXBlcihcIiNtb2RhbC1waWNrLWFkZHJlc3NcIik7IH1cblxuICBiaW5kcygpXG4gIHsgICAgXG4gICAgLy8gYnV0dG9uIHRvIGNvbmZpcm0gY2FsY3VsYXRlIGlkcmVjdGlvbnMgaW4gbW9kYWwgcGljayBhZGRyZXNzIGZvciBkaXJlY3Rpb25zXG4gICAgdGhpcy5kb20uZmluZCgnI2J0bi1jYWxjdWxhdGUtZGlyZWN0aW9ucycpLmNsaWNrKCgpID0+IHRoaXMuc3VibWl0KCkpO1xuICAgIHRoaXMuZG9tLmZpbmQoJ2lucHV0Jykua2V5dXAoKGUpID0+IHsgaWYoZS5rZXlDb2RlID09IDEzKSB0aGlzLnN1Ym1pdCgpOyB9KTsgIFxuICB9XG5cbiAgcHJvdGVjdGVkIGJlZm9yZU9wZW4oZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmRvbS5maW5kKFwiLm1vZGFsLWZvb3RlclwiKS5hdHRyKCdvcHRpb24taWQnLCBlbGVtZW50LmNvbG9yT3B0aW9uSWQpOyAgICBcbiAgfVxuXG4gIHN1Ym1pdCgpXG4gIHtcbiAgICBsZXQgYWRkcmVzcyA9IHRoaXMuZG9tLmZpbmQoJ2lucHV0JykudmFsKCk7XG4gICAgICBcbiAgICBpZiAoYWRkcmVzcylcbiAgICB7ICAgICAgXG4gICAgICBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zLHtpZDogdGhpcy5lbGVtZW50LmlkIH0pO1xuXG4gICAgICBBcHAuZ2VvY29kZXIuZ2VvY29kZUFkZHJlc3MoYWRkcmVzcyxcbiAgICAgIChzdWNjZXNzKSA9PiB7XG4gICAgICAgIHRoaXMuZG9tLmZpbmQoJy5tb2RhbC1lcnJvci1tc2cnKS5oaWRlKCk7XG4gICAgICAgIHRoaXMuZG9tLmNsb3NlTW9kYWwoKTsgICAgICAgIFxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4ge1xuICAgICAgICB0aGlzLmRvbS5maW5kKCcubW9kYWwtZXJyb3ItbXNnJykuc2hvdygpO1xuICAgICAgfSk7ICAgICAgXG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICB0aGlzLmRvbS5maW5kKCdpbnB1dCcpLmFkZENsYXNzKCdpbnZhbGlkJyk7XG4gICAgfVxuICB9XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5kZWNsYXJlIHZhciAkIDogYW55XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL2Fic3RyYWN0LW1vZGFsLmNvbXBvbmVudFwiO1xuXG5leHBvcnQgY2xhc3MgUmVwb3J0Q29tcG9uZW50IGV4dGVuZHMgQWJzdHJhY3RNb2RhbENvbXBvbmVudFxue1xuXHRjb25zdHJ1Y3RvcigpXG5cdHtcblx0XHRzdXBlcihcIiNtb2RhbC1yZXBvcnRcIik7XG5cdFx0dGhpcy5hamF4VXJsID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5yZXBvcnQudXJsO1xuXHR9XG5cblx0YmVmb3JlT3BlbigpXG5cdHtcblx0XHR0aGlzLmRvbS5maW5kKCcuZWxlbWVudE5hbWUnKS50ZXh0KGNhcGl0YWxpemUodGhpcy5lbGVtZW50Lm5hbWUpKTtcblxuXHRcdHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1jb21tZW50JykudmFsKCcnKTtcblx0XHR0aGlzLmRvbS5maW5kKCcub3B0aW9uLXJhZGlvLWJ0bjpjaGVja2VkJykucHJvcCgnY2hlY2tlZCcsIGZhbHNlKTtcblx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykuaGlkZSgpO1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuaGlkZSgpO1xuXG5cdFx0aWYgKEFwcC5sb2dpbk1vZHVsZS5nZXRVc2VyRW1haWwoKSkgXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5oaWRlKCk7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLnZhbChBcHAubG9naW5Nb2R1bGUuZ2V0VXNlckVtYWlsKCkpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS52YWwoJycpO1xuXHRcdFx0dGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5zaG93KCk7XG5cdFx0fVxuXHR9XG5cblx0c3VibWl0KClcblx0e1xuXHRcdGlmICghdGhpcy5lbGVtZW50KSByZXR1cm47XG5cblx0XHRsZXQgcmVwb3J0VmFsdWUgPSB0aGlzLmRvbS5maW5kKCcub3B0aW9uLXJhZGlvLWJ0bjpjaGVja2VkJykuYXR0cigndmFsdWUnKTtcblx0XHRsZXQgdXNlckVtYWlsID0gdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS52YWwoKTtcblxuXHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS5oaWRlKCk7XG5cdFx0dGhpcy5kb20uZmluZCgnI21haWwtZXJyb3InKS5oaWRlKCk7XG5cblx0XHRsZXQgZXJyb3JzID0gZmFsc2U7XG5cdFx0aWYgKCFyZXBvcnRWYWx1ZSlcblx0XHR7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykuc2hvdygpO1xuXHRcdFx0ZXJyb3JzID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKCF1c2VyRW1haWwgfHwgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5oYXNDbGFzcygnaW52YWxpZCcpKVxuXHRcdHtcblx0XHRcdHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuc2hvdygpO1xuXHRcdFx0ZXJyb3JzID0gdHJ1ZTtcblx0XHR9XG5cdFx0aWYgKCFlcnJvcnMpXG5cdFx0e1x0XHRcdFxuXHRcdFx0bGV0IGNvbW1lbnQgPSB0aGlzLmRvbS5maW5kKCcuaW5wdXQtY29tbWVudCcpLnZhbCgpO1xuXHRcdFx0bGV0IHJvdXRlID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5yZXBvcnQudXJsO1xuXHRcdFx0bGV0IGRhdGEgPSAgeyBlbGVtZW50SWQ6IHRoaXMuZWxlbWVudC5pZCwgdmFsdWU6IHJlcG9ydFZhbHVlLCBjb21tZW50OiBjb21tZW50LCB1c2VyRW1haWwgOiB1c2VyRW1haWwgfTtcblxuXHRcdFx0dGhpcy5zZW5kUmVxdWVzdChkYXRhKTtcdFx0XG5cdFx0fSBlbHNlIHtcblx0XHRcdHRoaXMuY2xlYXJMb2FkZXIoKVxuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBvbkVycm9yKGVycm9yTWVzc2FnZSlcblx0e1xuXHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS50ZXh0KGVycm9yTWVzc2FnZSkuc2hvdygpO1xuXHR9XG59XHRcbiIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuZGVjbGFyZSB2YXIgJCA6IGFueVxuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFic3RyYWN0TW9kYWxDb21wb25lbnQgfSBmcm9tIFwiLi9hYnN0cmFjdC1tb2RhbC5jb21wb25lbnRcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcblxuZXhwb3J0IGNsYXNzIFNlbmRFbWFpbENvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TW9kYWxDb21wb25lbnRcbntcbiAgY29uc3RydWN0b3IoKVxuICB7XG4gICAgc3VwZXIoXCIjbW9kYWwtc2VuZC1lbWFpbFwiKTtcbiAgICB0aGlzLmFqYXhVcmwgPSBBcHAuY29uZmlnLmZlYXR1cmVzLnNlbmRNYWlsLnVybDtcbiAgfVxuXG4gIGJlZm9yZU9wZW4oZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICB0aGlzLmRvbS5maW5kKCcuZWxlbWVudE5hbWUnKS50ZXh0KGNhcGl0YWxpemUodGhpcy5lbGVtZW50Lm5hbWUpKTtcblxuICAgIHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsLWNvbnRlbnQnKS52YWwoJycpO1xuICAgIHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsLXN1YmplY3QnKS52YWwoJycpO1xuICAgIHRoaXMuZG9tLmZpbmQoJyNjb250ZW50LWVycm9yJykuaGlkZSgpO1xuICAgIHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuaGlkZSgpO1xuXG4gICAgaWYgKEFwcC5sb2dpbk1vZHVsZS5nZXRVc2VyRW1haWwoKSlcbiAgICB7XG4gICAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLmhpZGUoKTtcbiAgICAgIHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykudmFsKEFwcC5sb2dpbk1vZHVsZS5nZXRVc2VyRW1haWwoKSk7XG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLnZhbCgnJyk7XG4gICAgICB0aGlzLmRvbS5maW5kKCcuaW5wdXQtbWFpbCcpLnNob3coKTtcbiAgICB9XG4gIH1cblxuICBzdWJtaXQoKVxuICB7XG4gICAgbGV0IHVzZXJFbWFpbCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsJykudmFsKCk7XG4gICAgbGV0IG1haWxTdWJqZWN0ID0gdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwtc3ViamVjdCcpLnZhbCgpO1xuICAgIGxldCBtYWlsQ29udGVudCA9IHRoaXMuZG9tLmZpbmQoJy5pbnB1dC1tYWlsLWNvbnRlbnQnKS52YWwoKTtcblxuICAgIHRoaXMuZG9tLmZpbmQoJyNtZXNzYWdlLWVycm9yJykuaGlkZSgpO1xuICAgIHRoaXMuZG9tLmZpbmQoJyNjb250ZW50LWVycm9yJykuaGlkZSgpO1xuICAgIHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuaGlkZSgpO1xuXG4gICAgbGV0IGVycm9ycyA9IGZhbHNlO1xuICAgIGlmICghbWFpbFN1YmplY3QgfHwgIW1haWxDb250ZW50KVxuICAgIHtcbiAgICAgIHRoaXMuZG9tLmZpbmQoJyNjb250ZW50LWVycm9yJykuc2hvdygpO1xuICAgICAgZXJyb3JzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKCF1c2VyRW1haWwgfHwgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5oYXNDbGFzcygnaW52YWxpZCcpKVxuICAgIHtcbiAgICAgIHRoaXMuZG9tLmZpbmQoJyNtYWlsLWVycm9yJykuc2hvdygpO1xuICAgICAgdGhpcy5kb20uZmluZCgnLmlucHV0LW1haWwnKS5zaG93KCk7XG4gICAgICBlcnJvcnMgPSB0cnVlO1xuICAgIH1cblxuICAgIGlmICghZXJyb3JzKVxuICAgIHsgICAgICBcbiAgICAgIGxldCBjb21tZW50ID0gdGhpcy5kb20uZmluZCgnLmlucHV0LWNvbW1lbnQnKS52YWwoKTtcbiAgICAgIGxldCBkYXRhID0geyBlbGVtZW50SWQ6IHRoaXMuZWxlbWVudC5pZCwgc3ViamVjdDogbWFpbFN1YmplY3QsIGNvbnRlbnQ6IG1haWxDb250ZW50LCB1c2VyRW1haWwgOiB1c2VyRW1haWwgfTtcbiAgICAgIHRoaXMuc2VuZFJlcXVlc3QoZGF0YSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuY2xlYXJMb2FkZXIoKVxuICAgIH1cbiAgfSAgXG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5kZWNsYXJlIHZhciAkIDogYW55XG5pbXBvcnQgeyBFbGVtZW50LCBFbGVtZW50U3RhdHVzIH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwTW9kZXMgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgQWJzdHJhY3RNb2RhbENvbXBvbmVudCB9IGZyb20gXCIuL2Fic3RyYWN0LW1vZGFsLmNvbXBvbmVudFwiO1xuXG5leHBvcnQgY2xhc3MgVm90ZUNvbXBvbmVudCBleHRlbmRzIEFic3RyYWN0TW9kYWxDb21wb25lbnRcbntcblx0Y29uc3RydWN0b3IoKSBcblx0eyBcblx0XHRzdXBlcihcIiNtb2RhbC12b3RlXCIpOyBcblx0XHR0aGlzLmFqYXhVcmwgPSBBcHAuY29uZmlnLmZlYXR1cmVzLnZvdGUudXJsO1xuICAgICAgdGhpcy5kb20uZmluZCgnI3NlbGVjdC12b3RlJykubWF0ZXJpYWxfc2VsZWN0KCk7XHRcblx0fVxuXG5cdGJlZm9yZU9wZW4oZWxlbWVudCA6IEVsZW1lbnQpXG5cdHtcblx0XHQvLyBkeW5hbWljYWxseSBjcmVhdGUgdm90ZSB0ZW1wbGF0ZVxuXHRcdHRoaXMuZG9tLmZpbmQoJy5zcGVjaWZpYy1jb250ZW50JykuaHRtbChBcHAudGVtcGxhdGVNb2R1bGUucmVuZGVyKCd2b3RlLW1vZGFsLWNvbnRlbnQnLCB7IFxuXHRcdFx0ZWxlbWVudDogdGhpcy5lbGVtZW50LCBcblx0XHRcdEVsZW1lbnRTdGF0dXM6IEVsZW1lbnRTdGF0dXMsXG5cdFx0XHRpc0FkbWluOiBBcHAuY29uZmlnLmlzRmVhdHVyZUF2YWlsYWJsZSgnZGlyZWN0TW9kZXJhdGlvbicpLFxuXHRcdFx0ZWxkaXNwbGF5TmFtZTogQXBwLmNvbmZpZy50ZXh0LmVsZW1lbnREZWZpbml0ZVxuXHRcdH0pKTsgIFxuXHR9XG5cblx0c3VibWl0KClcblx0e1xuXHRcdGxldCB2b3RlVmFsdWUgPSB0aGlzLmRvbS5maW5kKCcub3B0aW9uLXJhZGlvLWJ0bjpjaGVja2VkJykuYXR0cigndmFsdWUnKTtcblxuXHRcdHRoaXMuZG9tLmZpbmQoJyNzZWxlY3QtZXJyb3InKS5oaWRlKCk7XG5cdFx0XG5cdFx0aWYgKHZvdGVWYWx1ZSlcblx0XHR7XHRcdFx0XHRcblx0XHRcdGxldCBjb21tZW50ID0gdGhpcy5kb20uZmluZCgnLmlucHV0LWNvbW1lbnQnKS52YWwoKTtcblx0XHRcdGxldCByb3V0ZSA9IEFwcC5jb25maWcuZmVhdHVyZXMudm90ZS51cmw7XG5cdFx0XHRsZXQgZGF0YSA9IHsgZWxlbWVudElkOiB0aGlzLmVsZW1lbnQuaWQsIHZhbHVlOiB2b3RlVmFsdWUsIGNvbW1lbnQ6IGNvbW1lbnQgfTtcblxuXHRcdFx0dGhpcy5zZW5kUmVxdWVzdChkYXRhKTtcdFx0XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHR0aGlzLmNsZWFyTG9hZGVyKCk7XG5cdFx0XHR0aGlzLmRvbS5maW5kKCcjc2VsZWN0LWVycm9yJykuc2hvdygpO1xuXHRcdH1cblx0fVxuXG5cdHByb3RlY3RlZCBvblN1Y2Nlc3MocmVzcG9uc2UpXG5cdHtcblx0XHRsZXQgcmVzcG9uc2VNZXNzYWdlID0gcmVzcG9uc2UubWVzc2FnZTtcblx0XHRsZXQgbmV3c3RhdHVzID0gcmVzcG9uc2UuZGF0YTtcblxuXHRcdGlmICghcmVzcG9uc2Uuc3VjY2Vzcykge1xuXHRcdFx0dGhpcy5vbkVycm9yKHJlc3BvbnNlTWVzc2FnZSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdFxuXHRcdCQoJyNtb2RhbC12b3RlJykuY2xvc2VNb2RhbCgpO1xuXG5cdFx0aWYgKHRoaXMuZWxlbWVudC5zdGF0dXMgIT0gbmV3c3RhdHVzKVxuXHRcdHtcblx0XHRcdHRoaXMuZWxlbWVudC5zdGF0dXMgPSBuZXdzdGF0dXM7XG5cdFx0XHR0aGlzLmVsZW1lbnQudXBkYXRlKHRydWUpO1xuXHRcdFx0dGhpcy5lbGVtZW50LmlzRnVsbHlMb2FkZWQgPSBmYWxzZTtcblxuXHRcdFx0Ly8gcmVsb2FkIEVsZW1lbnQsIGFuZCBhZGQgZmxhc2ggbWVzc2FnZVxuXHRcdFx0aWYgKEFwcC5tb2RlID09IEFwcE1vZGVzLk1hcCkgXG5cdFx0XHRcdEFwcC5pbmZvQmFyQ29tcG9uZW50LnNob3dFbGVtZW50KHRoaXMuZWxlbWVudC5pZCwgKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuZWxlbWVudC5jb21wb25lbnQuYWRkRmxhc2hNZXNzYWdlKHJlc3BvbnNlTWVzc2FnZSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0ZWxzZSB0aGlzLmVsZW1lbnQuY29tcG9uZW50LmFkZEZsYXNoTWVzc2FnZShyZXNwb25zZU1lc3NhZ2UpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0dGhpcy5lbGVtZW50LmNvbXBvbmVudC5hZGRGbGFzaE1lc3NhZ2UocmVzcG9uc2VNZXNzYWdlKTtcblx0XHR9XG5cdH1cblxuXHRwcm90ZWN0ZWQgb25FcnJvcihlcnJvck1lc3NhZ2UpXG5cdHtcblx0XHRpZiAoIWVycm9yTWVzc2FnZSB8fCBlcnJvck1lc3NhZ2UubGVuZ3RoID09IDApIGVycm9yTWVzc2FnZSA9IFwiT3VwcywgdW5lIGVycmV1ciBzJ2VzdCBwcm9kdWl0ZSAhIFZldWlsbGV6IHLDqWVzc2F5ZXIgcGx1cyB0YXJkIG91IG5vdXMgc2lnbmFsZXIgbGUgcHJvYmzDqG1lXCI7XG5cdFx0dGhpcy5kb20uZmluZCgnLmdlbmVyaWMtZXJyb3ItbWVzc2FnZScpLmh0bWwoZXJyb3JNZXNzYWdlKS5zaG93KCk7XG5cdH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0wOC0zMVxuICovXG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcywgQXBwRGF0YVR5cGUsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEdlb2NvZGVSZXN1bHQgfSBmcm9tIFwiLi4vLi4vbW9kdWxlcy9nZW9jb2Rlci5tb2R1bGVcIjtcbmRlY2xhcmUgdmFyICQ7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBWaWV3UG9ydCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuXG5leHBvcnQgY2xhc3MgU2VhcmNoQmFyQ29tcG9uZW50XG57XG5cdHBsYWNlaG9sZGVycyA9IHtcblx0XHRkZWZhdWx0OiBcIlwiLFxuXHRcdHBsYWNlOiBcIlwiLFxuXHRcdGVsZW1lbnQ6IFwiXCJcblx0fVxuXG5cdHNlYXJjaElucHV0KCkgeyByZXR1cm4gJCgnLnNlYXJjaC1iYXInKTsgfVxuXG5cdHByaXZhdGUgY3VyclNlYXJjaFRleHQgOiBzdHJpbmcgPSAnJztcblxuXHRjb25zdHJ1Y3RvcigpIHt9XG5cblx0aW5pdGlhbGl6ZSgpXG5cdHtcdFx0XG5cdFx0dGhpcy5zZWFyY2hJbnB1dCgpLmtleXVwKChlKSA9PlxuXHRcdHsgICAgXG5cdFx0XHRpZihlLmtleUNvZGUgPT0gMTMpIHsgdGhpcy5oYW5kbGVTZWFyY2hBY3Rpb24oKTsgfSAvLyBwcmVzcyBlbnRlclxuXHRcdH0pO1xuXG5cdFx0JCgnLnNlYXJjaC1iYXItaWNvbicpLmNsaWNrKCgpID0+IHRoaXMuaGFuZGxlU2VhcmNoQWN0aW9uKCkpO1x0XG5cblx0XHQkKCcuc2VhcmNoLWJ0bicpLmNsaWNrKCgpID0+IHRoaXMuaGFuZGxlU2VhcmNoQWN0aW9uKCkpO1xuXHRcdCQoJy5zZWFyY2gtY2FuY2VsLWJ0bicpLmNsaWNrKCgpID0+IHRoaXMuY2xlYXJMb2FkZXIoKSk7XG5cblx0XHQkKCcjYnRuLWNsb3NlLXNlYXJjaC1yZXN1bHQnKS5jbGljaygoKSA9PiB0aGlzLmNsZWFyRWxlbWVudFNlYXJjaFJlc3VsdCgpKTtcdFxuXG5cdFx0JCgnLnNlYXJjaC1nZW9sb2NhbGl6ZScpLnRvb2x0aXAoKTtcblx0XHQkKCcuc2VhcmNoLWdlb2xvY2FsaXplJykuY2xpY2soKCkgPT4gdGhpcy5nZW9sb2NhdGVVc2VyKCkpO1xuXG5cdFx0dGhpcy5zZWFyY2hJbnB1dCgpLm9uKCdjbGljaycsIChlKSA9PiB7IGUucHJldmVudERlZmF1bHQoKTtlLnN0b3BQcm9wYWdhdGlvbigpOyB9KTtcblx0XHR0aGlzLnNlYXJjaElucHV0KCkub24oJ2ZvY3VzJywgKCkgPT4geyB0aGlzLnNob3dTZWFyY2hPcHRpb25zKCk7IH0pO1xuXHRcdHRoaXMuc2VhcmNoSW5wdXQoKS5vbigna2V5dXAnLCAoKSA9PiB0aGlzLnNob3dTZWFyY2hPcHRpb25zKCkpO1xuXG5cdFx0dGhpcy5wbGFjZWhvbGRlcnMgPSB7XG5cdFx0XHRkZWZhdWx0OiBcIlJlY2hlcmNoZXogdW4gbGlldSwgXCIgKyBBcHAuY29uZmlnLnRleHQuZWxlbWVudEluZGVmaW5pdGUgKyBcIi4uLlwiLFxuXHRcdFx0cGxhY2U6IFwiRW50cmV6IHVuZSBhZHJlc3NlLCB1biBDUCwgdW5lIHZpbGxlLi4uXCIsXG5cdFx0XHRlbGVtZW50OiBcIkVudHJleiBsZSBub20gZCdcIiArIEFwcC5jb25maWcudGV4dC5lbGVtZW50SW5kZWZpbml0ZVxuXHRcdH1cdFx0XG5cblx0XHR0aGlzLnVwZGF0ZVNlYXJjaFBsYWNlaG9sZGVyKCk7XG5cblx0XHQkKCcuc2VhcmNoLW9wdGlvbi1yYWRpby1idG4nKS5jaGFuZ2UoICgpID0+IHRoaXMudXBkYXRlU2VhcmNoUGxhY2Vob2xkZXIoKSApO1xuXG5cdFx0JCgnI2RpcmVjdG9yeS1jb250ZW50LCAuZGlyZWN0b3J5LW1lbnUtY29udGVudCwgaGVhZGVyJykuY2xpY2soICgpID0+IHRoaXMuaGlkZVNlYXJjaE9wdGlvbnMoKSApO1xuXG5cdFx0JCgnI3NlYXJjaC1vdmVybGF5LW1vYmlsZSAub3ZlcmxheScpLmNsaWNrKCAoKSA9PiB0aGlzLmhpZGVNb2JpbGVTZWFyY2hCYXIoKSApO1xuXHR9XG5cblx0Ly8gaGFuZGxlIGFsbCB2YWxpZGF0aW9uIGJ5IHVzZXIgKGlucHV0IGtleSBlbnRlciBwcmVzc2VkLCBpY29uIGNsaWNrLi4uKVxuXHRwcml2YXRlIGhhbmRsZVNlYXJjaEFjdGlvbigpXG5cdHtcblx0XHR0aGlzLmJlZm9yZVNlYXJjaCgpO1xuXG5cdFx0bGV0IHNlYXJjaFRleHQgPSB0aGlzLnNlYXJjaElucHV0KCkudmFsKCk7XG5cblx0XHRzd2l0Y2ggKHRoaXMuc2VhcmNoVHlwZSgpKSBcbiAgICB7IFxuICAgICAgY2FzZSBcInBsYWNlXCI6IFxuICAgICAgICBBcHAuZ2VvY29kZXIuZ2VvY29kZUFkZHJlc3Moc2VhcmNoVGV4dCwgXG4gICAgICAgICAgKHJlc3VsdCkgPT4geyBcbiAgICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2hSZXN1bHQoZmFsc2UpOyBcbiAgICAgICAgICAgIHRoaXMuaGlkZVNlYXJjaE9wdGlvbnMoKTsgXG4gICAgICAgICAgICBBcHAubWFwQ29tcG9uZW50LmZpdEJvdW5kcyhBcHAuZ2VvY29kZXIuZ2V0Qm91bmRzKCksIHRydWUpOyBcbiAgICAgICAgICB9LFxuICAgICAgICAgICgpID0+IHtcbiAgICAgICAgICBcdHRoaXMuY2xlYXJMb2FkZXIoKTtcbiAgICAgICAgICBcdCQoJy5zZWFyY2gtbm8tcmVzdWx0Jykuc2hvdygpO1xuICAgICAgICAgIH0pOyBcbiAgICAgICAgYnJlYWs7IFxuICAgICAgY2FzZSBcImVsZW1lbnRcIjogXG4gICAgICAgIGxldCB2YWx1ZSA9IHRoaXMuc2VhcmNoSW5wdXQoKS52YWwoKTsgXG4gICAgICAgIGlmICh2YWx1ZSkgXG4gICAgICAgICAgdGhpcy5zZWFyY2hFbGVtZW50cyhzZWFyY2hUZXh0KTsgXG4gICAgICAgIGVsc2UgXG4gICAgICAgICAgdGhpcy5jbGVhclNlYXJjaFJlc3VsdCgpOyBcbiAgICAgICAgYnJlYWs7IFxuICAgIH0gXG5cdH1cblxuXHRoYW5kbGVHZW9jb2RlUmVzdWx0KClcblx0e1xuXHRcdHRoaXMuc2V0VmFsdWUoQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uQWRkcmVzcygpKTtcblx0XHR0aGlzLmNsZWFyTG9hZGVyKCk7XG5cdH1cdFxuXG5cdGdlb2xvY2F0ZVVzZXIoKVxuXHR7XG5cdFx0dGhpcy5iZWZvcmVTZWFyY2goKTtcblx0XHRBcHAuZ2VvY29kZXIuZ2VvbG9jYXRlVXNlciggKHJlc3VsdDpWaWV3UG9ydCkgPT4gXG5cdFx0e1xuXHRcdFx0dGhpcy5jbGVhclNlYXJjaFJlc3VsdCh0cnVlKTtcblx0XHRcdHRoaXMuc2V0VmFsdWUoXCJHZW9sb2NhbGlzw6lcIik7XG5cdFx0XHR0aGlzLmhpZGVTZWFyY2hPcHRpb25zKCk7XHRcdFx0XG5cdFx0XHR0aGlzLmNsZWFyTG9hZGVyKCk7XG5cdFx0fSk7XG5cdH1cdFxuXG5cdHNlYXJjaEVsZW1lbnRzKCR0ZXh0IDogc3RyaW5nLCAkYmFja0Zyb21IaXN0b3J5ID0gZmFsc2UpXG5cdHtcdFx0XG5cdFx0dGhpcy5zZXRWYWx1ZSgkdGV4dCk7XG5cdFx0dGhpcy5jdXJyU2VhcmNoVGV4dCA9ICR0ZXh0O1xuXG5cdFx0bGV0IHJvdXRlID0gQXBwLmNvbmZpZy5mZWF0dXJlcy5zZWFyY2hFbGVtZW50cy51cmw7XG5cdFx0bGV0IGRhdGEgPSAgeyB0ZXh0OiAkdGV4dCB9OyBcblxuXHRcdGlmIChyb3V0ZSkge1xuXHRcdFx0QXBwLmFqYXhNb2R1bGUuc2VuZFJlcXVlc3Qocm91dGUsICdnZXQnLCBkYXRhLFxuXHRcdFx0KHNlYXJjaFJlc3VsdCkgPT4gXG5cdFx0XHR7XG5cdCAgICAgIEFwcC5zZXREYXRhVHlwZShBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzLCAkYmFja0Zyb21IaXN0b3J5LCBzZWFyY2hSZXN1bHQpOyAgICAgICBcblx0IFxuXHQgICAgICB0aGlzLmNsZWFyTG9hZGVyKCk7ICAgICAgIFxuXHQgICAgICB0aGlzLnNob3dTZWFyY2hSZXN1bHRMYWJlbChzZWFyY2hSZXN1bHQuZGF0YS5sZW5ndGgpOyAgIFxuXHQgXHRcdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LnVwZGF0ZVBvc2l0aW9uKCk7XG5cdCBcdFx0XHR0aGlzLmhpZGVNb2JpbGVTZWFyY2hCYXIoKTsgXHRcdFx0XG5cdFx0XHR9LFxuXHRcdFx0KGVycm9yKSA9PlxuXHRcdFx0e1xuXHRcdFx0XHQvL0FwcC5nZW9jb2Rlci5nZW9jb2RlQWRkcmVzcygnJyk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdC8vIFRPRE8gc2VhcmNoIHRocm91Z2ggYWxyZWFkeSByZWNlaXZlZCBlbGVtZW50cy5cblx0XHR9XHRcdFx0XG5cdH1cblxuXHRzaG93TW9iaWxlU2VhcmNoQmFyKCkgeyBcblx0XHQkKCcjc2VhcmNoLW92ZXJsYXktbW9iaWxlJykuZmFkZUluKDI1MCk7XG5cdFx0JCgnLnNlYXJjaC1iYXItd2l0aC1vcHRpb25zLWNvbnRhaW5lcicpLnNob3coKTtcblx0XHQkKCcuc2VhcmNoLWJhcicpLmZvY3VzKCk7XG5cdFx0QXBwLmdvZ29Db250cm9sQ29tcG9uZW50LmhpZGUoMCk7XG5cdH1cblxuXHRoaWRlTW9iaWxlU2VhcmNoQmFyKCkgeyBcblx0XHQvLyBjb25zb2xlLmxvZyhcImhpZGUgbW9iaWxlIHNlYXJjaCBiYXJcIik7XG5cdFx0JCgnI3NlYXJjaC1vdmVybGF5LW1vYmlsZScpLmZhZGVPdXQoMTUwKTtcblx0XHQkKCcuc2VhcmNoLWJhci13aXRoLW9wdGlvbnMtY29udGFpbmVyLm1vYmlsZScpLmhpZGUoKTtcblx0XHRBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQuc2hvdygwKTtcblx0fVxuXG5cdHVwZGF0ZSgpIHtcblx0XHRpZiAoQXBwLmNvbXBvbmVudC53aWR0aCgpIDw9IDYwMClcblx0XHR7XG5cdFx0XHRsZXQgbW9iaWxlU2VhcmNoQmFyID0gJCgnLnNlYXJjaC1iYXItd2l0aC1vcHRpb25zLWNvbnRhaW5lcicpO1xuXHRcdFx0aWYobW9iaWxlU2VhcmNoQmFyLnBhcmVudCgnI3NlYXJjaC1vdmVybGF5LW1vYmlsZScpLmxlbmd0aCE9MSlcblx0XHRcdFx0JCgnLnNlYXJjaC1iYXItd2l0aC1vcHRpb25zLWNvbnRhaW5lcicpLmFwcGVuZFRvKCcjc2VhcmNoLW92ZXJsYXktbW9iaWxlJykuYWRkQ2xhc3MoJ21vYmlsZScpO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0XHQkKCcuc2VhcmNoLWJhci13aXRoLW9wdGlvbnMtY29udGFpbmVyJykucmVtb3ZlQ2xhc3MoJ21vYmlsZScpLnByZXBlbmRUbygnLmRpcmVjdG9yeS1tZW51LWhlYWRlcicpLnNob3coKTtcblx0fVxuXG5cdHNob3dTZWFyY2hPcHRpb25zKClcblx0e1xuXHRcdCQoJy5zZWFyY2gtb3B0aW9ucycpLnNsaWRlRG93bigzNTApO1xuXHRcdGlmICghdGhpcy5pc1NlYXJjaE9wdGlvblZpc2libGUoKSkgXG5cdFx0XHQkKCcjZGlyZWN0b3J5LW1lbnUtbWFpbi1jb250YWluZXIgLmRpcmVjdG9yeS1tZW51LWhlYWRlcicpLmFkZENsYXNzKFwiZXhwYW5kZWRcIik7XG5cblx0XHR0aGlzLnVwZGF0ZVNlYXJjaFBsYWNlaG9sZGVyKCk7XG5cdH1cblxuXHRoaWRlU2VhcmNoT3B0aW9ucygpXG5cdHtcdFx0XG5cdFx0JCgnI2RpcmVjdG9yeS1tZW51LW1haW4tY29udGFpbmVyIC5kaXJlY3RvcnktbWVudS1oZWFkZXInKS5yZW1vdmVDbGFzcyhcImV4cGFuZGVkXCIpO1xuXHRcdHRoaXMuc2VhcmNoSW5wdXQoKS5ibHVyKCk7XG5cdFx0dGhpcy51cGRhdGVTZWFyY2hQbGFjZWhvbGRlcigpO1xuXHRcdCQoJyNkaXJlY3RvcnktbWVudS1tYWluLWNvbnRhaW5lciAuc2VhcmNoLW9wdGlvbnMnKS5zbGlkZVVwKDI1MCk7XG5cdH1cblxuXHR1cGRhdGVTZWFyY2hQbGFjZWhvbGRlcigpXG5cdHtcblx0XHRsZXQgcGxhY2Vob2xkZXIgPSAnJztcblx0XHRpZiAoIXRoaXMuaXNTZWFyY2hPcHRpb25WaXNpYmxlKCkpIHBsYWNlaG9sZGVyID0gdGhpcy5wbGFjZWhvbGRlcnMuZGVmYXVsdDtcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0c3dpdGNoICh0aGlzLnNlYXJjaFR5cGUoKSlcblx0XHRcdHtcblx0XHRcdFx0Y2FzZSBcInBsYWNlXCI6ICAgcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVycy5wbGFjZTsgICBicmVhaztcblx0XHRcdFx0Y2FzZSBcImVsZW1lbnRcIjogcGxhY2Vob2xkZXIgPSB0aGlzLnBsYWNlaG9sZGVycy5lbGVtZW50OyBicmVhaztcblx0XHRcdH1cblx0XHR9XHRcdFx0XG5cblx0XHR0aGlzLnNlYXJjaElucHV0KCkuYXR0cihcInBsYWNlaG9sZGVyXCIsIHBsYWNlaG9sZGVyKTtcblx0fVx0XG5cblx0c2hvd1NlYXJjaFJlc3VsdExhYmVsKCRudW1iZXIgOiBudW1iZXIpXG5cdHtcblx0XHQkKCcuc2VhcmNoLXJlc3VsdC1udW1iZXInKS50ZXh0KCRudW1iZXIpO1xuXHRcdCQoJy5zZWFyY2gtcmVzdWx0LXZhbHVlJykudGV4dCh0aGlzLmN1cnJTZWFyY2hUZXh0KTtcblx0XHQkKCcuc2VhcmNoLXJlc3VsdHMnKS5zaG93KCk7XG5cdFx0JCgnLnNlYXJjaC1vcHRpb25zJykuaGlkZSgpO1xuXHRcdCQoJyNlbGVtZW50LWluZm8tYmFyJykuYWRkQ2xhc3MoJ3dpdGgtc2VhcmNoLXJlc3VsdC1oZWFkZXInKTtcblx0fVxuXG5cdGhpZGVTZWFyY2hSZXN1bHQoKVxuXHR7XG5cdFx0JCgnLnNlYXJjaC1yZXN1bHRzJykuaGlkZSgpO1xuXHRcdCQoJyNlbGVtZW50LWluZm8tYmFyJykucmVtb3ZlQ2xhc3MoJ3dpdGgtc2VhcmNoLXJlc3VsdC1oZWFkZXInKTtcblx0XHRBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQudXBkYXRlUG9zaXRpb24oKTtcblx0fVxuXG5cdGNsZWFyRWxlbWVudFNlYXJjaFJlc3VsdCgpIFxuXHR7XG5cdFx0dGhpcy5jbGVhclNlYXJjaFJlc3VsdCgpO1xuXHRcdEFwcC5zZXRNb2RlKEFwcE1vZGVzLk1hcCk7XG5cdH1cblxuXHRjbGVhclNlYXJjaFJlc3VsdChyZXNldFZhbHVlID0gdHJ1ZSlcblx0e1xuXHRcdEFwcC5zZXREYXRhVHlwZShBcHBEYXRhVHlwZS5BbGwpO1x0XHRcblx0XHR0aGlzLmhpZGVTZWFyY2hSZXN1bHQoKTtcdFx0XG5cdFx0dGhpcy5jbGVhckxvYWRlcigpO1x0XG5cdFx0dGhpcy5jdXJyU2VhcmNoVGV4dCA9ICcnO1xuXHRcdGlmIChyZXNldFZhbHVlKSB7XG5cdFx0XHR0aGlzLnNldFZhbHVlKFwiXCIpO1xuXHRcdFx0QXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnNldFRpdGxlKFwiXCIpO1xuXHRcdH1cdFx0XG5cdFx0c2V0VGltZW91dCggKCkgPT4geyB0aGlzLmhpZGVTZWFyY2hPcHRpb25zKCk7IH0sIDIwMCk7XHRcdFxuXHR9XG5cblx0c2V0VmFsdWUoJHZhbHVlIDogc3RyaW5nKVxuXHR7XG5cdFx0dGhpcy5zZWFyY2hJbnB1dCgpLnZhbCgkdmFsdWUpO1xuXHR9ICBcblxuXHRnZXRDdXJyU2VhcmNoVGV4dCgpIHsgcmV0dXJuIHRoaXMuY3VyclNlYXJjaFRleHQ7IH1cblxuXHRpc1NlYXJjaE9wdGlvblZpc2libGUoKSA6IGJvb2xlYW5cblx0e1xuXHRcdHJldHVybiAkKCcuc2VhcmNoLW9wdGlvbnM6dmlzaWJsZScpLmxlbmd0aDtcblx0fVxuXG5cdHByaXZhdGUgc2VhcmNoVHlwZSgpIDogc3RyaW5nXG5cdHtcblx0XHRyZXR1cm4gJCgnLnNlYXJjaC1vcHRpb24tcmFkaW8tYnRuOmNoZWNrZWQnKS5hdHRyKCdkYXRhLW5hbWUnKTtcblx0fVxuXG5cdHByaXZhdGUgY2xlYXJMb2FkZXIoKVxuXHR7XG5cdFx0JCgnLnNlYXJjaC1idG4nKS5zaG93KCk7XG5cdFx0JCgnLnNlYXJjaC1jYW5jZWwtYnRuJykuaGlkZSgpO1xuXHR9XG5cblx0cHJpdmF0ZSBiZWZvcmVTZWFyY2goKVxuXHR7XG5cdFx0JCgnLnNlYXJjaC1uby1yZXN1bHQnKS5oaWRlKCk7XG5cdFx0JCgnLnNlYXJjaC1jYW5jZWwtYnRuJykuc2hvdygpO1xuXHRcdCQoJy5zZWFyY2gtYnRuJykuaGlkZSgpO1xuXHR9XG4gICAgXG59IiwiZGVjbGFyZSB2YXIgJDtcbmRlY2xhcmUgdmFyIG51bmp1Y2tzLCBnb0dvQ2FydG87XG5cbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwRGF0YVR5cGUsIEFwcE1vZGVzLCBBcHBTdGF0ZXMgfSBmcm9tICcuL2FwcC5tb2R1bGUnO1xuaW1wb3J0IHsgZ2V0UXVlcnlQYXJhbXMgfSBmcm9tIFwiLi91dGlscy9wYXJhbXNcIjtcblxuZXhwb3J0IHZhciBBcHAgOiBBcHBNb2R1bGU7XG5cbmV4cG9ydCBjbGFzcyBHb0dvQ2FydG9Nb2R1bGVcbntcblx0cHJpdmF0ZSBvcHRpb25zO1xuXHQvLyBET00gQ29udGFpbmVyLCBjYW4gYmUgYSBzdHJpbmcgKHNlbGVjdG9yKSBvciBET00gb2JqZWN0XG5cdGNvbnRhaW5lciA6IHN0cmluZyB8IGFueSA9ICcnO1xuXHQvLyBvbmx5IGZvciBkZWJ1Z2dpbmdcblx0YXBwOiBBcHBNb2R1bGU7XG5cblx0Y29uc3RydWN0b3IoY29udGFpbmVyIDogc3RyaW5nIHwgYW55LCBvcHRpb25zID0ge30pXG5cdHtcblx0XHR0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjtcblx0XHR0aGlzLmNoZWNrRm9yRGlzdGFudENvbmZpZnVyYXRpb24ob3B0aW9ucyk7XG5cdH1cblxuXHQvKiogXG5cdCogU2V0IHRoZSBjdXJyZW50IHVzZXIgcm9sZXNcblx0KiBSb2xlIGlzIHVzZWQgdG8gcmVuZGVyIHNwZWNpZmljYWxseSBjZXJ0YWluIHRlbXBsYXRlIGFuZCBjb250cm9sXG5cdCogY2VydGFpbiBmdW5jdGlvbmFsaXRpZXNcblx0Ki9cblx0c2V0VXNlclJvbGUoJHJvbGVzIDogc3RyaW5nW10gfCBzdHJpbmcpIHsgdGhpcy5hcHAubG9naW5Nb2R1bGUuc2V0Um9sZXMoJHJvbGVzKTsgfVxuXHRzZXRVc2VyUm9sZXMoJHJvbGVzIDogc3RyaW5nW10gfCBzdHJpbmcpIHsgdGhpcy5hcHAubG9naW5Nb2R1bGUuc2V0Um9sZXMoJHJvbGVzKTsgfVxuXG5cdHNldFVzZXJFbWFpbCgkbWFpbCA6IHN0cmluZykgeyB0aGlzLmFwcC5sb2dpbk1vZHVsZS5zZXRVc2VyRW1haWwoJG1haWwpOyB9XG5cblx0LyoqIHJldHVybiB0aGUgZ2l2ZW4gaGFzaCB0byBhZGQgdG8gdXJsIHNvIGdvZ29jYXJ0byBhcHAgd2lsbCBvcGVuIG9uIHNwZWNpZmljIGVsZW1lbnQgKi9cblx0Z2V0RWxlbWVudFJvdXRlSGFzaCgkZWxlbWVudElkLCAkZWxlbWVudE5hbWUgPSAnZmluZCcpXG5cdHtcblx0XHRyZXR1cm4gdGhpcy5hcHAucm91dGVyTW9kdWxlLmdlbmVyYXRlKCdzaG93X2VsZW1lbnQnLCB7IGlkOiAkZWxlbWVudElkLCBuYW1lOiAkZWxlbWVudE5hbWUgfSk7XG5cdH1cblxuXHRzaG93RGlyZWN0b3J5TWVudSgpIHsgdGhpcy5hcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC5zaG93KCk7IH1cblxuXHRoaWRlRGlyZWN0b3J5TWVudSgpIHsgdGhpcy5hcHAuZGlyZWN0b3J5TWVudUNvbXBvbmVudC5oaWRlKCk7IH1cblxuXHRwcml2YXRlIGNoZWNrRm9yRGlzdGFudENvbmZpZnVyYXRpb24ob3B0aW9ucyA6IHN0cmluZ3xhbnkpXG5cdHtcdFx0XG5cdFx0aWYgKCB0eXBlb2Ygb3B0aW9ucyA9PT0gJ29iamVjdCcpIHRoaXMuY2hlY2tGb3JEaXN0YW50VGF4b25vbXkob3B0aW9ucyk7XG5cdFx0ZWxzZVxuXHRcdFx0JC5hamF4KHtcblx0XHRcdCAgdXJsOiBvcHRpb25zLFxuXHRcdFx0ICBzdWNjZXNzOiAoZGF0YSkgPT4gIHsgXG5cdFx0XHQgIFx0aWYgKCB0eXBlb2YgZGF0YSA9PT0gJ3N0cmluZycpIGRhdGEgPSBKU09OLnBhcnNlKGRhdGEpO1xuXHRcdFx0ICBcdHRoaXMuY2hlY2tGb3JEaXN0YW50VGF4b25vbXkoZGF0YSk7IFxuXHRcdFx0ICB9LFxuXHRcdFx0ICBlcnJvcjogKCkgPT4geyBjb25zb2xlLmVycm9yKFwiRXJyb3Igd2hpbGUgZ2V0dGluZyB0aGUgY29uZmlndXJhdGlvbiBhdCB1cmwgXCIsIG9wdGlvbnMpfVxuXHRcdFx0fSk7XG5cdH07XG5cblx0cHJpdmF0ZSBjaGVja0ZvckRpc3RhbnRUYXhvbm9teShvcHRpb25zIDogYW55KVxuXHR7XG5cdFx0bGV0IHRheG9ub215ID0gb3B0aW9ucy5kYXRhLnRheG9ub215O1xuXHRcdGlmICghdGF4b25vbXkgfHwgIW9wdGlvbnMuZGF0YS5lbGVtZW50cylcblx0XHR7XG5cdFx0XHRjb25zb2xlLndhcm4oXCJbR29Hb0NhcnRvXSBZb3UgbXVzdCBwcm92aWRlIGEgdGF4b25vbXkgYW5kIGVsZW1lbnRzIGRhdGFzZXQgKGJvdGggdXJsIG9yIEpzb24gb2JqZWN0KVwiKTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cblx0XHRpZiAoIHR5cGVvZiB0YXhvbm9teSA9PT0gJ29iamVjdCcpIHRoaXMuaW5pdCh0YXhvbm9teSwgb3B0aW9ucyk7XG5cdFx0ZWxzZSAkLmdldEpTT04oIHRheG9ub215LCAoZGF0YSkgPT4gIHsgdGhpcy5pbml0KGRhdGEsIG9wdGlvbnMpOyB9KTsgXHRcblx0fTtcblxuXHRwcml2YXRlIGluaXQodGF4b25vbXksIG9wdGlvbnMpXG5cdHtcdFxuXHRcdGxldCB1cmxQYXJhbXMgOiBhbnkgPSBnZXRRdWVyeVBhcmFtcyh3aW5kb3cubG9jYXRpb24uc2VhcmNoKTtcblx0XHRsZXQgaXNJZnJhbWUgOiBib29sZWFuID0gdXJsUGFyYW1zLmlmcmFtZSA/IHVybFBhcmFtcy5pZnJhbWUgPT0gMSA6IGZhbHNlO1xuXHRcdGxldCBmdWxsVGF4b25vbXkgOiBib29sZWFuID0gdXJsUGFyYW1zLmZ1bGxUYXhvbm9teSA/IHVybFBhcmFtcy5mdWxsVGF4b25vbXkgPT0gMSA6IHRydWU7XG5cblx0XHRBcHAgPSBuZXcgQXBwTW9kdWxlKG9wdGlvbnMsIGlzSWZyYW1lLCBmdWxsVGF4b25vbXksIHVybFBhcmFtcyk7XG5cblx0XHQvLyBvbmx5IGZvciBkZWJ1Z2dpbmdcblx0XHR0aGlzLmFwcCA9IEFwcDtcdFx0XHRcdFxuXG5cdFx0QXBwLnRheG9ub215TW9kdWxlLmNyZWF0ZVRheG9ub215RnJvbUpzb24odGF4b25vbXkpO1xuXG5cdFx0bGV0IGxheW91dCA9IEFwcC50ZW1wbGF0ZU1vZHVsZS5yZW5kZXIoJ2xheW91dCcsIFxuXHRcdHsgXG5cdFx0XHRyb290Q2F0ZWdvcmllczogQXBwLnRheG9ub215TW9kdWxlLnJvb3RDYXRlZ29yaWVzLCBcblx0XHRcdG1haW5DYXRlZ29yeTogQXBwLnRheG9ub215TW9kdWxlLm1haW5DYXRlZ29yeSwgXG5cdFx0XHRpc0lmcmFtZTogaXNJZnJhbWUsIFxuXHRcdFx0ZnVsbFRheG9ub215OiBmdWxsVGF4b25vbXksXG5cdFx0XHRjb25maWc6IEFwcC5jb25maWcsXG5cdFx0XHRhbGxvd2VkU3RhbXBzOiBBcHAuc3RhbXBNb2R1bGUuYWxsb3dlZFN0YW1wc1xuXHRcdH0pO1xuXHRcdCAgIFxuXHRcdGlmICgkKHRoaXMuY29udGFpbmVyKS5sZW5ndGggPT0gMCkgY29uc29sZS53YXJuKCdbR29Hb0NhcnRvXSBUaGUgY29udGFpbmVyIFwiJyArIHRoaXMuY29udGFpbmVyICsgJ1wiIHdhcyBub3QgZm91bmQnKTtcblx0XHRlbHNlICQodGhpcy5jb250YWluZXIpLmFwcGVuZChsYXlvdXQpO1xuXG5cdFx0JCh0aGlzLmNvbnRhaW5lcikudHJpZ2dlcigndGVtcGxhdGVMb2FkZWQnKTtcblx0XHRcblx0XHRpZiAoQXBwLnRheG9ub215TW9kdWxlLm9wdGlvbnMubGVuZ3RoKVxuXHRcdHtcblx0XHRcdGxldCBzdHlsZXMgPSBBcHAudGVtcGxhdGVNb2R1bGUucmVuZGVyKCdnb2dvLXN0eWxlcycsIHsnb3B0aW9uTGlzdCc6QXBwLnRheG9ub215TW9kdWxlLm9wdGlvbnMsICdjb25maWcnOkFwcC5jb25maWd9KTtcblx0XHRcdGxldCBkb21Ub0FkZFN0eWxlcyA9ICQoJ2hlYWQnKS5sZW5ndGggPyAkKCdoZWFkJykgOiAkKCdodG1sJyk7XG5cdFx0XHRpZiAoZG9tVG9BZGRTdHlsZXMubGVuZ3RoKSBkb21Ub0FkZFN0eWxlcy5hcHBlbmQoc3R5bGVzKTtcblx0XHRcdGVsc2UgXHRjb25zb2xlLndhcm4oXCJbR29Hb0NhcnRvXSBDYW5ub3QgZmluZCBEb20gJ2hlYWQnIG9yICdodG1sJyB0byBhZGQgc3R5bGVzXCIpO1xuXHRcdH1cdFx0XG5cblx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7XHRcdFxuXHRcdFx0QXBwLmluaXRpYWxpemUoKTtcblxuXHRcdFx0QXBwLmVsZW1lbnRzTW9kdWxlLmluaXRpYWxpemUoKTtcblx0XHRcdEFwcC5kaXJlY3RvcnlNZW51Q29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdEFwcC5maWx0ZXJzQ29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdEFwcC5ib3VuZHNNb2R1bGUuaW5pdGlhbGl6ZSgpO1x0ICAgXG5cdFx0XHRBcHAuZWxlbWVudExpc3RDb21wb25lbnQuaW5pdGlhbGl6ZSgpO1x0XHRcdFxuXHRcdFx0QXBwLnNlYXJjaEJhckNvbXBvbmVudC5pbml0aWFsaXplKCk7XHRcdFx0XG5cdFx0XHRBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQuaW5pdGlhbGl6ZSgpO1xuXHRcdFx0QXBwLmRpcmVjdGlvbnNDb21wb25lbnQuaW5pdGlhbGl6ZSgpO1x0XG5cdFx0XHRBcHAubWFwQ29udHJvbHNDb21wb25lbnQuaW5pdGlhbGl6ZSgpO1xuXHRcdFx0QXBwLmN1c3RvbVBvcHVwQ29tcG9uZW50LmluaXRpYWxpemUoKTtcblx0XHRcdFxuXHRcdFx0QXBwLmNvbXBvbmVudC5pbml0aWFsaXplKCk7XHRcdFxuXG5cdFx0XHRBcHAucm91dGVyTW9kdWxlLmxvYWRJbml0aWFsU3RhdGUoKTtcblxuXHRcdFx0Ly8gd2FpdCBmb3IgaW5pdGlhbCBzdGF0ZSB0byBiZSBsb2FkZWRcblx0XHRcdHNldFRpbWVvdXQoICgpID0+IEFwcC5lbGVtZW50c0pzb25Nb2R1bGUubG9hZExvY2FsRWxlbWVudHMoKSwgMTAwKTtcblxuXHRcdFx0dGhpcy5iaW5kRXZlbnRzKCk7XG5cdFx0fSwgMCk7XHQgXG5cdH1cblxuXHRwcml2YXRlIGJpbmRFdmVudHMoKSBcblx0e1xuXHRcdHRoaXMuYXBwLm1hcE1hbmFnZXIub25NYXJrZXJDbGljay5kbyggKGlkKSA9PiB0aGlzLmZpcmVFdmVudCgnbWFya2VyQ2xpY2snLCB7aWQ6IGlkfSkpO1xuXHR9XG5cblx0cHJpdmF0ZSBmaXJlRXZlbnQoJGV2ZW50TmFtZSwgJGRhdGEpIFxuXHR7XG5cdFx0JCh0aGlzLmNvbnRhaW5lcikudHJpZ2dlcigkZXZlbnROYW1lLCAkZGF0YSk7XG5cdH1cbn1cblxuLy8gaW5zdGFuY2lhdGUgYSBHb0dvQ2FydG9Nb2R1bGVcbmdvR29DYXJ0byA9IGZ1bmN0aW9uKGNvbnRhaW5lciwgb3B0aW9ucykgeyByZXR1cm4gbmV3IEdvR29DYXJ0b01vZHVsZShjb250YWluZXIsIG9wdGlvbnMpOyB9IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgRWxlbWVudCB9IGZyb20gXCIuLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IEFwcFN0YXRlcywgQXBwTW9kZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuXG5leHBvcnQgZW51bSBBcHBEYXRhVHlwZSBcbntcbiAgQWxsLFxuICBTZWFyY2hSZXN1bHRzXG59XG5cbmV4cG9ydCBjbGFzcyBEYXRhVHlwZU1hbmFnZXJcbntcbiAgcHJpdmF0ZSBkYXRhVHlwZV8gOiBBcHBEYXRhVHlwZSA9IEFwcERhdGFUeXBlLkFsbDtcblxuICBzZXREYXRhVHlwZSgkZGF0YVR5cGUgOiBBcHBEYXRhVHlwZSwgJGJhY2tGcm9tSGlzdG9yeSA6IGJvb2xlYW4gPSBmYWxzZSwgJHNlYXJjaFJlc3VsdCA9IG51bGwpXG4gIHtcbiAgICAvL2NvbnNvbGUubG9nKFwic2V0RGF0YVR5cGVcIiwgQXBwRGF0YVR5cGVbJGRhdGFUeXBlXSk7XG4gICAgdGhpcy5kYXRhVHlwZV8gPSAkZGF0YVR5cGU7XG5cbiAgICBpZiAoJGRhdGFUeXBlID09IEFwcERhdGFUeXBlLlNlYXJjaFJlc3VsdHMgJiYgJHNlYXJjaFJlc3VsdCkgXG4gICAge1xuICAgICAgQXBwLnN0YXRlTWFuYWdlci5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTtcbiAgICAgIGxldCBlbGVtZW50cyA9IEFwcC5lbGVtZW50c0pzb25Nb2R1bGUuY29udmVydEpzb25FbGVtZW50cygkc2VhcmNoUmVzdWx0LmRhdGEsIHRydWUsIHRydWUpLmVsZW1lbnRzQ29udmVydGVkOyBcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS5zZXRTZWFyY2hSZXN1bHRFbGVtZW50KGVsZW1lbnRzKTsgXG4gICAgICBBcHAuZmlsdGVyc0NvbXBvbmVudC5zZXRNYWluT3B0aW9uKCdhbGwnKTsgXG5cbiAgICAgIGlmICgkc2VhcmNoUmVzdWx0LmRhdGEubGVuZ3RoID4gMCkgXG4gICAgICB7IFxuICAgICAgICBBcHAuc2V0TW9kZShBcHBNb2Rlcy5MaXN0KTsgXG4gICAgICAgIEFwcC5tYXBDb21wb25lbnQuZml0RWxlbWVudHNCb3VuZHMoZWxlbWVudHMpO1xuICAgICAgfSBcbiAgICB9XG5cbiAgICBBcHAuZWxlbWVudHNNb2R1bGUuY2xlYXJDdXJyZW50c0VsZW1lbnQoKTsgIFxuICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5jbGVhcigpO1xuICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTsgICAgXG4gICAgQXBwLmVsZW1lbnRzTWFuYWdlci5jaGVja0Zvck5ld0VsZW1lbnRzVG9SZXRyaWV2ZSgpOyAgXG5cbiAgICBpZiAoISRiYWNrRnJvbUhpc3RvcnkpIEFwcC5oaXN0b3J5TW9kdWxlLnB1c2hOZXdTdGF0ZSgpO1xuICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUoKTtcbiAgfVxuXG4gIGdldCBkYXRhVHlwZSgpIHsgcmV0dXJuIHRoaXMuZGF0YVR5cGVfOyB9XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwTW9kZXMsIEFwcERhdGFUeXBlIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZCB9IGZyb20gXCIuLi9tb2R1bGVzL2VsZW1lbnRzL2VsZW1lbnRzLm1vZHVsZVwiO1xuXG5leHBvcnQgY2xhc3MgRWxlbWVudHNNYW5hZ2VyXG57XG4gIGNvbnN0cnVjdG9yKClcbiAge1xuICAgIEFwcC5hamF4TW9kdWxlLm9uTmV3RWxlbWVudHMuZG8oIChyZXN1bHQpID0+IHsgdGhpcy5oYW5kbGVOZXdFbGVtZW50c1JlY2VpdmVkRnJvbVNlcnZlcihyZXN1bHQpOyB9KTsgIFxuICAgIEFwcC5lbGVtZW50c0pzb25Nb2R1bGUub25OZXdzRWxlbWVudHNDb252ZXJ0ZWQuZG8oIChuZXdFbGVtZW50cyk9PiB7IEFwcC5lbGVtZW50c01vZHVsZS5hZGRFbGVtZW50cyhuZXdFbGVtZW50cyk7IH0pOyAgXG4gICAgQXBwLmVsZW1lbnRzTW9kdWxlLm9uRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkLmRvKCAoRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkKT0+IHsgdGhpcy5oYW5kbGVFbGVtZW50c1RvRGlzcGxheUNoYW5nZWQoRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkKTsgfSk7ICAgIFxuICB9XG5cbiAgY2hlY2tGb3JOZXdFbGVtZW50c1RvUmV0cmlldmUoJGdldEZ1bGxSZXByZXNlbnRhdGlvbiA9IGZhbHNlKVxuICB7XG4gICAgaWYgKEFwcC5kYXRhVHlwZSAhPSBBcHBEYXRhVHlwZS5BbGwpIHJldHVybjtcblxuICAgIGlmIChBcHAuY29uZmlnLmRhdGEucmV0cmlldmVFbGVtZW50c0J5QXBpKVxuICAgIHtcbiAgICAgIHRoaXMucmV0cmlldmVNaXNzaW5nRWxlbWVudHNWaWFBcGkoJGdldEZ1bGxSZXByZXNlbnRhdGlvbik7XG4gICAgfVxuICB9ICAgXG5cbiAgcHJpdmF0ZSByZXRyaWV2ZU1pc3NpbmdFbGVtZW50c1ZpYUFwaSgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbilcbiAge1xuICAgIC8vIGNvbnNvbGUubG9nKFwiY2hlY2tGb3JOZXdlbGVtZW50VG9SZXRyaWV2ZSwgZnVsbFJlcHJlc2VudGF0aW9uXCIsICRnZXRGdWxsUmVwcmVzZW50YXRpb24pO1xuICAgIGxldCByZXN1bHQgPSBBcHAuYm91bmRzTW9kdWxlLmNhbGN1bGF0ZUZyZWVCb3VuZHMoJGdldEZ1bGxSZXByZXNlbnRhdGlvbik7XG4gICAgLy8gY29uc29sZS5sb2coXCJjaGVja0Zvck5ld2VsZW1lbnRUb1JldHJpZXZlLCBjYWxjdWxhdGVCb3VuZHNcIiwgcmVzdWx0KTtcbiAgICBpZiAocmVzdWx0LnN0YXR1cyA9PSBcImFsbFJldHJpZXZlZFwiKSBcbiAgICB7XG4gICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuaGFuZGxlQWxsRWxlbWVudHNSZXRyaWV2ZWQoKTtcbiAgICAgIHJldHVybjsgLy8gbm90aGluZyB0byBkbywgYWxsIGVsZW1lbnRzIGFscmVhZHkgcmV0cmlldmVkXG4gICAgfVxuICAgIGVsc2UgaWYgKHJlc3VsdC5zdGF0dXMgPT0gXCJpbmNsdWRlZFwiKVxuICAgIHtcbiAgICAgIC8vIFdlIHNpbXVsYXRlIHRoZSBlbmQgb2YgYSBzdWNjZXNzZWZ1bCBhamF4IHJlcXVlc3QgXG4gICAgICBBcHAuYm91bmRzTW9kdWxlLnVwZGF0ZUZpbGxlZEJvdW5kc1dpdGhCb3VuZHNSZWNlaXZlZChyZXN1bHQuZXhwZWN0ZWRGaWxsQm91bmRzLCBBcHAuY3Vyck1haW5JZCwgICRnZXRGdWxsUmVwcmVzZW50YXRpb24pO1xuICAgICAgdGhpcy5oYW5kbGVOZXdFbGVtZW50c1JlY2VpdmVkRnJvbVNlcnZlcih7J2RhdGEnOiBbXSwgJ2Z1bGxSZXByZXNlbnRhdGlvbic6ICRnZXRGdWxsUmVwcmVzZW50YXRpb259KTtcbiAgICAgIHJldHVybjtcbiAgICB9ICAgIFxuXG4gICAgLy8gTm9ybWFsIGJlaGF2aW91ciwgZ2V0dGluZyBtaXNzaW5nIGVsZW1lbnRzIHZpYSBBamF4IHJlcXVlc3RcbiAgICBsZXQgZnJlZUJvdW5kcyA9IHJlc3VsdC5mcmVlQm91bmRzO1xuICAgIGxldCBleHBlY3RlZEZpbGxlZEJvdW5kcyA9IHJlc3VsdC5leHBlY3RlZEZpbGxCb3VuZHM7XG4gICAgaWYgKGZyZWVCb3VuZHMgJiYgZnJlZUJvdW5kcy5sZW5ndGggPiAwKSBBcHAuYWpheE1vZHVsZS5nZXRFbGVtZW50c0luQm91bmRzKGZyZWVCb3VuZHMsICRnZXRGdWxsUmVwcmVzZW50YXRpb24sIGV4cGVjdGVkRmlsbGVkQm91bmRzKTsgXG4gIH0gICBcblxuICBoYW5kbGVOZXdFbGVtZW50c1JlY2VpdmVkRnJvbVNlcnZlcihyZXN1bHQpXG4gIHsgICAgICAgIFxuICAgIGxldCBlbGVtZW50c0pzb24gPSByZXN1bHQuZGF0YSB8fCByZXN1bHRbXCJAZ3JhcGhcIl0gfHwgcmVzdWx0OyBcbiAgICBsZXQgZWxlbWVudHMgPSBBcHAuZWxlbWVudHNKc29uTW9kdWxlLmNvbnZlcnRKc29uRWxlbWVudHMoZWxlbWVudHNKc29uLCB0cnVlLCByZXN1bHQuZnVsbFJlcHJlc2VudGF0aW9uKTtcbiAgICAvLyBjb25zb2xlLmxvZyhcIm5ldyBFbGVtZW50cyBsZW5ndGhcIiwgZWxlbWVudHMpO1xuICAgIFxuICAgIC8vIG9uIGFkZCBtYXJrZXJDbHVzdGVyR3JvdXAgYWZ0ZXIgZmlyc3QgZWxlbWVudHMgcmVjZWl2ZWRcbiAgICBpZiAoZWxlbWVudHMubmV3RWxlbWVudHNMZW5ndGggPiAwIHx8IEFwcC5tb2RlID09IEFwcE1vZGVzLkxpc3QpIFxuICAgIHtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTsgIFxuICAgIH1cbiAgfTsgXG5cbiAgaGFuZGxlRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkKHJlc3VsdCA6IEVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZClcbiAge1xuICAgIGxldCBzdGFydCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXG4gICAgLy8gY29uc29sZS5sb2coXCJEaXNwbGF5ID0gXCIgKyByZXN1bHQuZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoICsgXCIgLyByZW1vdmUgPSBcIiArIHJlc3VsdC5lbGVtZW50c1RvUmVtb3ZlLmxlbmd0aCArIFwiIC8gYWRkID0gXCIgKyByZXN1bHQubmV3RWxlbWVudHMubGVuZ3RoKTtcblxuICAgIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0KVxuICAgIHtcbiAgICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC51cGRhdGUocmVzdWx0LmVsZW1lbnRzVG9EaXNwbGF5KTtcbiAgICAgIGlmIChBcHAuYWpheE1vZHVsZS5hbGxFbGVtZW50c1JlY2VpdmVkKSBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuaGFuZGxlQWxsRWxlbWVudHNSZXRyaWV2ZWQoKTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIGlmICghQXBwLm1hcENvbXBvbmVudC5pc0luaXRpYWxpemVkKSB7IHJldHVybjt9XG5cbiAgICAgIEFwcC5tYXBDb21wb25lbnQubWFya2VyQ2x1c3RlcmVyR3JvdXAucmVzdG9yZVVuY2x1c3RlcnModHJ1ZSk7ICAgICBcblxuICAgICAgLy8gSW4gc29tZSBjYXNlcywgbWFya2VyQ2x1c3RlciB3b3JrcyBmYXN0ZXIgY2xlYXJpbmcgYWxscyBtYXJrZXJzIGFuZCBhZGRpbmcgdGhlbSBhZ2FpblxuICAgICAgaWYgKHJlc3VsdC5lbGVtZW50c1RvUmVtb3ZlLmxlbmd0aCArIHJlc3VsdC5uZXdFbGVtZW50cy5sZW5ndGggPiByZXN1bHQuZWxlbWVudHNUb0Rpc3BsYXkubGVuZ3RoKVxuICAgICAge1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50LmNsZWFyTWFya2VycygpO1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50LmFkZE1hcmtlcnMocmVzdWx0LmVsZW1lbnRzVG9EaXNwbGF5Lm1hcCggKGUpID0+IGUubWFya2VyLmdldExlYWZsZXRNYXJrZXIoKSkpO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50LnJlbW92ZU1hcmtlcnMocmVzdWx0LmVsZW1lbnRzVG9SZW1vdmUubWFwKCAoZSkgPT4gZS5tYXJrZXIuZ2V0TGVhZmxldE1hcmtlcigpKSk7XG4gICAgICAgIEFwcC5tYXBDb21wb25lbnQuYWRkTWFya2VycyhyZXN1bHQubmV3RWxlbWVudHMubWFwKCAoZSkgPT4gZS5tYXJrZXIuZ2V0TGVhZmxldE1hcmtlcigpKSk7XG4gICAgICB9ICAgICAgXG5cbiAgICAgIEFwcC5tYXBDb21wb25lbnQubWFya2VyQ2x1c3RlcmVyR3JvdXAuY2hlY2tGb3JVbmNsZXN0ZXJpbmcoQXBwLm1hcCgpLmdldEJvdW5kcygpKTtcbiAgICB9ICBcblxuICAgIGxldCBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcbiAgICAvL2NvbnNvbGUubG9nKFwiRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkIGluIFwiICsgKGVuZC1zdGFydCkgKyBcIiBtc1wiKTsgIFxuICB9OyAgXG5cbn0iLCJpbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBBcHBNb2RlcywgQXBwU3RhdGVzIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHVuc2x1Z2lmeSB9IGZyb20gXCIuLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgVmlld1BvcnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmRlY2xhcmUgdmFyICQ7XG5cbmV4cG9ydCBjbGFzcyBHZW9jb2RpbmdNYW5hZ2VyXG57XG4gIGNvbnN0cnVjdG9yKClcbiAge1xuICAgIEFwcC5nZW9jb2Rlci5vbkdlb2NvZGVSZXN1bHQuZG8oICgpID0+IHsgdGhpcy5oYW5kbGVHZW9jb2RlUmVzdWx0KCk7IEFwcC5zZWFyY2hCYXJDb21wb25lbnQuaGFuZGxlR2VvY29kZVJlc3VsdCgpOyB9KTtcbiAgICBBcHAuZ2VvY29kZXIub25HZW9sb2NhbGl6YXRpb25SZXN1bHQuZG8oICh2aWV3UG9ydCA6IFZpZXdQb3J0KSA9PiB7IHRoaXMuaGFuZGxlR2VvbG9jYWxpemF0aW9uUmVzdWx0KHZpZXdQb3J0KTsgfSk7XG4gIH1cblxuICBoYW5kbGVHZW9jb2RlUmVzdWx0KClcbiAge1xuICAgIC8vY29uc29sZS5sb2coXCJoYW5kbGVHZW9jb2RlUmVzdWx0XCIsIEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKTtcbiAgICAkKCcjZGlyZWN0b3J5LXNwaW5uZXItbG9hZGVyJykuaGlkZSgpO1xuXG4gICAgaWYgKEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnMpICBcbiAgICB7XG4gICAgICAvLyB3ZSByZXN0YXJ0IGRpcmVjdGlvbnMgZnJvbSBBcHAgbmV3IHN0YXJ0IGxvY2F0aW9uXG4gICAgICBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zLHtpZDogQXBwLnN0YXRlTWFuYWdlci5zdGF0ZUVsZW1lbnRJZCB9KTtcbiAgICB9ICAgIFxuICAgIGVsc2VcbiAgICB7XG4gICAgICBpZiAoQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwICYmIEFwcC5zdGF0ZSAhPSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZSlcbiAgICAgIHtcbiAgICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5Ob3JtYWwpOyAgICAgIFxuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAge1xuICAgICAgICBsZXQgbG9jYXRpb24gPSBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSA/IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpIDogQXBwLmJvdW5kc01vZHVsZS5kZWZhdWx0Q2VudGVyO1xuICAgICAgICBBcHAuYm91bmRzTW9kdWxlLmNyZWF0ZUJvdW5kc0Zyb21Mb2NhdGlvbihsb2NhdGlvbik7XG4gICAgICAgIEFwcC5lbGVtZW50c01vZHVsZS5jbGVhckN1cnJlbnRzRWxlbWVudCgpO1xuICAgICAgICBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSk7XG4gICAgICAgIGxldCBhZGRyZXNzID0gQXBwLmdlb2NvZGVyLmxhc3RBZGRyZXNzUmVxdWVzdDtcbiAgICAgICAgaWYgKEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKSBcbiAgICAgICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2V0VGl0bGUoJyBhdXRvdXIgZGUgPGk+JyArIGNhcGl0YWxpemUodW5zbHVnaWZ5KGFkZHJlc3MpKSkgKyAnPC9pPic7XG4gICAgICB9ICAgICAgXG5cbiAgICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUoKTtcbiAgICB9ICAgICAgICBcbiAgfVxuXG4gIGhhbmRsZUdlb2xvY2FsaXphdGlvblJlc3VsdCh2aWV3UG9ydClcbiAge1xuICAgIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApXG4gICAge1xuICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5Ob3JtYWwpO1xuICAgICAgQXBwLm1hcENvbXBvbmVudC5wYW5Ub0xvY2F0aW9uKHZpZXdQb3J0LnRvTG9jYXRpb24oKSwgdmlld1BvcnQuem9vbSwgZmFsc2UpOyAgICAgIFxuICAgIH1cbiAgICBlbHNlXG4gICAge1xuICAgICAgQXBwLmJvdW5kc01vZHVsZS5jcmVhdGVCb3VuZHNGcm9tTG9jYXRpb24odmlld1BvcnQudG9Mb2NhdGlvbigpKTtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS5jbGVhckN1cnJlbnRzRWxlbWVudCgpO1xuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLnVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KHRydWUpO1xuICAgICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LnNldFRpdGxlKCcgYXV0b3VyIGRlIDxpPm1hIHBvc2l0aW9uPC9pPicpO1xuICAgICAgLy8gc2F2ZSB0aGUgdmlld3BvcnQgaWYgd2UgZ28gdG8gbWFwIGFmdGVyXG4gICAgICBBcHAubWFwQ29tcG9uZW50LnNldFZpZXdQb3J0KHZpZXdQb3J0KTtcbiAgICB9ICAgIFxuICB9XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwRGF0YVR5cGUsIEFwcE1vZGVzLCBBcHBTdGF0ZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgSGlzdG9yeVN0YXRlLCBWaWV3UG9ydCB9IGZyb20gXCIuLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCAqIGFzIENvb2tpZXMgZnJvbSBcIi4uL3V0aWxzL2Nvb2tpZXNcIjtcbmRlY2xhcmUgdmFyICQsIEwgOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBIaXN0b3J5U3RhdGVNYW5hZ2VyXG57XG4gIGxhc3RIaXN0b3J5U3RhdGUgOiBIaXN0b3J5U3RhdGUgPSBudWxsO1xuICAvKlxuICAqIExvYWQgaW5pdGlhbCBzdGF0ZSBvciBzdGF0ZSBwb3BwZWQgYnkgd2luZG93IGhpc3RvcnkgbWFuYWdlclxuICAqL1xuICBsb2FkKGhpc3RvcnlzdGF0ZSA6IEhpc3RvcnlTdGF0ZSwgJGJhY2tGcm9tSGlzdG9yeSA9IGZhbHNlKVxuICB7XG4gICAgaWYgKGhpc3RvcnlzdGF0ZSA9PT0gbnVsbCkgcmV0dXJuOyAgXG4gICAgdGhpcy5sYXN0SGlzdG9yeVN0YXRlID0gaGlzdG9yeXN0YXRlO1xuICAgIGNvbnNvbGUubG9nKFwibG9hZEhpc3RvcnlzdGF0ZVwiLCBoaXN0b3J5c3RhdGUpOyAgXG5cbiAgICBpZiAoaGlzdG9yeXN0YXRlLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLlNlYXJjaFJlc3VsdHMpXG4gICAge1xuICAgICAgLy8gZm9yY2Ugc2V0dGluZyBkYXRhVHlwZSBiZWZvcmUgc2VhcmNoQmFyQ29tcG9uZW50IHRvIGF2b2lkIGhpc3RvcnkgaXNzdWVzXG4gICAgICBBcHAuc2V0RGF0YVR5cGUoaGlzdG9yeXN0YXRlLmRhdGFUeXBlLCB0cnVlKTtcbiAgICAgIEFwcC5zZWFyY2hCYXJDb21wb25lbnQuc2VhcmNoRWxlbWVudHMoaGlzdG9yeXN0YXRlLnRleHQsICRiYWNrRnJvbUhpc3RvcnkpO1xuICAgICAgJCgnI2RpcmVjdG9yeS1zcGlubmVyLWxvYWRlcicpLmhpZGUoKTtcbiAgICB9ICBcbiAgICBlbHNlXG4gICAge1xuICAgICAgLy8gY2hlY2sgdmlld3BvcnQgYW5kIGFkZHJlc3MgZnJvbSBjb29raWVzXG4gICAgICBpZiAoQXBwLmNvbmZpZy5tYXAuc2F2ZVZpZXdwb3J0SW5Db29raWVzICYmICFoaXN0b3J5c3RhdGUudmlld3BvcnQgJiYgIWhpc3RvcnlzdGF0ZS5hZGRyZXNzICYmIGhpc3RvcnlzdGF0ZS5zdGF0ZSA9PSBBcHBTdGF0ZXMuTm9ybWFsKSBcbiAgICAgIHtcbiAgICAgICAgY29uc29sZS5sb2coXCJubyB2aWV3cG9ydCBub3IgYWRkcmVzcyBwcm92aWRlZCwgdXNpbmcgY29va2llcyB2YWx1ZXNcIiwgQ29va2llcy5yZWFkQ29va2llKCd2aWV3cG9ydCcpLCBDb29raWVzLnJlYWRDb29raWUoJ2FkZHJlc3MnKSk7XG4gICAgICAgIGlmIChDb29raWVzLnJlYWRDb29raWUoJ3ZpZXdwb3J0JykpIGhpc3RvcnlzdGF0ZS52aWV3cG9ydCA9IG5ldyBWaWV3UG9ydCgpLmZyb21TdHJpbmcoQ29va2llcy5yZWFkQ29va2llKCd2aWV3cG9ydCcpKTtcbiAgICAgICAgaWYgKENvb2tpZXMucmVhZENvb2tpZSgnYWRkcmVzcycpKSBoaXN0b3J5c3RhdGUuYWRkcmVzcyA9IENvb2tpZXMucmVhZENvb2tpZSgnYWRkcmVzcycpO1xuICAgICAgICBpZiAoaGlzdG9yeXN0YXRlLmFkZHJlc3MpICQoJy5zZWFyY2gtYmFyJykudmFsKGhpc3RvcnlzdGF0ZS5hZGRyZXNzKTtcbiAgICAgIH0gICAgXG4gICAgfSAgICBcblxuICAgIGlmIChoaXN0b3J5c3RhdGUuZmlsdGVycykgQXBwLmZpbHRlclJvdXRpbmdNb2R1bGUubG9hZEZpbHRlcnNGcm9tU3RyaW5nKGhpc3RvcnlzdGF0ZS5maWx0ZXJzKTtcbiAgICBlbHNlIEFwcC5maWx0ZXJzQ29tcG9uZW50LnNldE1haW5PcHRpb24oJ2FsbCcpOyBcblxuICAgIGlmIChoaXN0b3J5c3RhdGUuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuQWxsICYmIGhpc3RvcnlzdGF0ZS52aWV3cG9ydCAmJiBoaXN0b3J5c3RhdGUuc3RhdGUgIT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmUpXG4gICAgeyAgICAgIFxuICAgICAgLy8gaWYgbWFwIG5vdCBsb2FkZWQgd2UganVzdCBzZXQgdGhlIG1hcENvbXBvbmVudCB2aWV3cG9ydCB3aXRob3V0IGNoYW5naW5nIHRoZVxuICAgICAgLy8gYWN0dWFsIHZpZXdwb3J0IG9mIHRoZSBtYXAsIGJlY2F1c2UgaXQgd2lsbCBiZSBkb25lIGluXG4gICAgICAvLyBtYXAgaW5pdGlhbGlzYXRpb25cbiAgICAgIEFwcC5tYXBDb21wb25lbnQuc2V0Vmlld1BvcnQoaGlzdG9yeXN0YXRlLnZpZXdwb3J0LCBBcHAubWFwQ29tcG9uZW50LmlzTWFwTG9hZGVkKTtcblxuICAgICAgLy8gb24gbGlzdCBtb2RlIGluaXRpYWxpemUgYm91bmRzXG4gICAgICBpZiAoaGlzdG9yeXN0YXRlLm1vZGUgPT0gQXBwTW9kZXMuTGlzdClcbiAgICAgIHtcbiAgICAgICAgQXBwLmJvdW5kc01vZHVsZS5jcmVhdGVCb3VuZHNGcm9tTG9jYXRpb24oTC5sYXRMbmcoaGlzdG9yeXN0YXRlLnZpZXdwb3J0LmxhdCwgaGlzdG9yeXN0YXRlLnZpZXdwb3J0LmxuZykpO1xuICAgICAgfVxuXG4gICAgICAkKCcjZGlyZWN0b3J5LXNwaW5uZXItbG9hZGVyJykuaGlkZSgpOyAgXG5cbiAgICAgIGlmIChoaXN0b3J5c3RhdGUubW9kZSA9PSBBcHBNb2Rlcy5MaXN0IClcbiAgICAgIHtcbiAgICAgICAgbGV0IGxvY2F0aW9uID0gTC5sYXRMbmcoaGlzdG9yeXN0YXRlLnZpZXdwb3J0LmxhdCwgaGlzdG9yeXN0YXRlLnZpZXdwb3J0LmxuZyk7XG4gICAgICB9ICBcbiAgICB9ICBcblxuICAgIEFwcC5zZXRNb2RlKGhpc3RvcnlzdGF0ZS5tb2RlLCAkYmFja0Zyb21IaXN0b3J5LCBmYWxzZSk7XG4gICAgXG4gICAgLy8gaWYgYWRkcmVzcyBpcyBwcm92aWRlZCB3ZSBnZW9sb2NhbGl6ZSB0aGlzIGFkZHJlc3NcbiAgICBpZiAoaGlzdG9yeXN0YXRlLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLkFsbCAmJiBoaXN0b3J5c3RhdGUuYWRkcmVzcykgXG4gICAge1xuICAgICAgaWYgKGhpc3RvcnlzdGF0ZS5hZGRyZXNzID09IFwiZ2VvbG9jYWxpemVcIilcbiAgICAgIHtcbiAgICAgICAgQXBwLnNlYXJjaEJhckNvbXBvbmVudC5nZW9sb2NhdGVVc2VyKCk7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICB7XG4gICAgICAgIEFwcC5nZW9jb2Rlci5nZW9jb2RlQWRkcmVzcyhcbiAgICAgICAgICBoaXN0b3J5c3RhdGUuYWRkcmVzcywgXG4gICAgICAgICAgKHJlc3VsdHMpID0+IFxuICAgICAgICAgIHsgXG4gICAgICAgICAgICAvLyBpZiB2aWV3cG9ydCBpcyBnaXZlbiwgbm90aGluZyB0byBkbywgd2UgYWxyZWFkeSBkaWQgaW5pdGlhbGl6YXRpb24gd2l0aCB2aWV3cG9ydFxuICAgICAgICAgICAgaWYgKGhpc3RvcnlzdGF0ZS52aWV3cG9ydCAmJiBoaXN0b3J5c3RhdGUubW9kZSA9PSBBcHBNb2Rlcy5NYXApIHJldHVybjtcbiAgICAgICAgICAgIC8vIGZpdCBib3VuZHMgYW55d2F5IHNvIHRoZSBtYXBjb21wb25lbnQgd2lsbCByZWdpc3RlciBBcHAgcmVxdWVzdGVkIGJvdW5kcyBmb3IgbGF0ZXJcbiAgICAgICAgICAgIEFwcC5tYXBDb21wb25lbnQuZml0Qm91bmRzKEFwcC5nZW9jb2Rlci5nZXRCb3VuZHMoKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICAoKSA9PiB7XG4gICAgICAgICAgICAvLyBmYWlsdXJlIGNhbGxiYWNrXG4gICAgICAgICAgICBBcHAuc2VhcmNoQmFyQ29tcG9uZW50LnNldFZhbHVlKFwiXCIpO1xuICAgICAgICAgICAgaWYgKCFoaXN0b3J5c3RhdGUudmlld3BvcnQpIFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBBcHAubWFwQ29tcG9uZW50LmZpdERlZmF1bHRCb3VuZHMoKTtcbiAgICAgICAgICAgICAgQXBwLmNvbXBvbmVudC50b2FzdE1lc3NhZ2UoXCJFcnJldXIsIGNldHRlIGFkcmVzc2UgbidhIHBhcyBwdSDDqnRyZSBsb2NhbGlzw6llIDogXCIgKyBoaXN0b3J5c3RhdGUuYWRkcmVzcylcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9ICBcbiAgICAgICAgKTtcbiAgICAgIH0gICAgICBcbiAgICB9XG5cbiAgICBpZiAoIWhpc3RvcnlzdGF0ZS52aWV3cG9ydCAmJiAhaGlzdG9yeXN0YXRlLmFkZHJlc3MgJiYgQXBwLmNvbmZpZy5kYXRhLnJldHJpZXZlRWxlbWVudHNCeUFwaSAmJiBoaXN0b3J5c3RhdGUuc3RhdGUgIT0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmUpIHtcbiAgICAgIGNvbnNvbGUubG9nKFwiZml0IGRlZmF1bHQgYm91bmRzIG5vIHZpZXdwb3J0IG5vIGFkZHJlc3NcIik7XG4gICAgICBBcHAubWFwQ29tcG9uZW50LmZpdERlZmF1bHRCb3VuZHMoKTtcbiAgICB9IFxuXG4gICAgaWYgKGhpc3RvcnlzdGF0ZS5pZCkgXG4gICAge1xuICAgICAgc2V0VGltZW91dCggKCkgPT4geyBcbiAgICAgICAgQXBwLnNldFN0YXRlKFxuICAgICAgICAgIGhpc3RvcnlzdGF0ZS5zdGF0ZSxcbiAgICAgICAgICB7XG4gICAgICAgICAgICBpZDogaGlzdG9yeXN0YXRlLmlkLCBcbiAgICAgICAgICAgIHBhblRvTG9jYXRpb246IChoaXN0b3J5c3RhdGUudmlld3BvcnQgPT09IG51bGwpXG4gICAgICAgICAgfSxcbiAgICAgICAgICAkYmFja0Zyb21IaXN0b3J5KTtcbiAgICAgICAgJCgnI2RpcmVjdG9yeS1zcGlubmVyLWxvYWRlcicpLmhpZGUoKTsgICAgXG4gICAgICB9LCA0MDApOyAgXG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBBcHAuc2V0U3RhdGUoaGlzdG9yeXN0YXRlLnN0YXRlLCBudWxsLCAkYmFja0Zyb21IaXN0b3J5KTsgICAgXG4gICAgfSAgICBcbiAgfTsgICAgXG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwTW9kZXMsIEFwcFN0YXRlcywgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgY2FwaXRhbGl6ZSwgdW5zbHVnaWZ5IH0gZnJvbSBcIi4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBNYXJrZXIgfSBmcm9tIFwiLi4vY29tcG9uZW50cy9tYXAvbWFya2VyLmNvbXBvbmVudFwiO1xuaW1wb3J0IHsgRXZlbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmRlY2xhcmUgdmFyICQ7XG5cbmV4cG9ydCBjbGFzcyBNYXBNYW5hZ2VyXG57XG4gIC8vIHdoZW4gY2xpY2sgb24gbWFya2VyIGl0IGFsc28gdHJpZ2VyIGNsaWNrIG9uIG1hcFxuICAvLyB3aGVuIGNsaWNrIG9uIG1hcmtlciB3ZSBwdXQgaXNDbGlja2luZyB0byB0cnVlIGR1cmluZ1xuICAvLyBmZXcgbWlsbGlzZWNvbmRzIHNvIHRoZSBtYXAgZG9uJ3QgZG8gYW55dGhpbmcgaXMgY2xpY2sgZXZlbnRcbiAgcHJpdmF0ZSBpc0NsaWNraW5nID0gZmFsc2U7XG5cbiAgb25NYXJrZXJDbGljayA9IG5ldyBFdmVudDxhbnk+KCk7XG5cbiAgY29uc3RydWN0b3IoKVxuICB7XG4gICAgQXBwLm1hcENvbXBvbmVudC5vbklkbGUuZG8oICgpID0+IHsgdGhpcy5oYW5kbGVNYXBJZGxlKCk7ICB9KTtcbiAgICBBcHAubWFwQ29tcG9uZW50Lm9uQ2xpY2suZG8oICgpID0+IHsgdGhpcy5oYW5kbGVNYXBDbGljaygpOyB9KTsgICBcbiAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5vbkhpZGUuZG8oICgpPT4geyB0aGlzLmhhbmRsZUluZm9CYXJIaWRlKCk7IH0pOyBcbiAgfVxuXG4gIGhhbmRsZUluZm9CYXJIaWRlKClcbiAge1xuICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTtcbiAgfTtcblxuICBzZXRUaW1lb3V0Q2xpY2tpbmcoKSBcbiAgeyBcbiAgICB0aGlzLmlzQ2xpY2tpbmcgPSB0cnVlO1xuICAgIGxldCB0aGF0ID0gdGhpcztcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeyB0aGF0LmlzQ2xpY2tpbmcgPSBmYWxzZTsgfSwgMTAwKTsgXG4gIH07XG5cbiAgaGFuZGxlTWFya2VyQ2xpY2sobWFya2VyIDogTWFya2VyKVxuICB7XG4gICAgaWYgKEFwcC5tb2RlICE9IEFwcE1vZGVzLk1hcCkgcmV0dXJuO1xuXG4gICAgdGhpcy5zZXRUaW1lb3V0Q2xpY2tpbmcoKTtcbiAgICB0aGlzLm9uTWFya2VyQ2xpY2suZW1pdChtYXJrZXIuZ2V0RWxlbWVudCgpLmlkKTtcblxuICAgIGlmIChtYXJrZXIuaXNIYWxmSGlkZGVuKCkpIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuTm9ybWFsKTsgIFxuXG4gICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5TaG93RWxlbWVudCwgeyBpZDogbWFya2VyLmdldElkKCkgfSk7ICAgIFxuICB9XG5cbiAgaGFuZGxlTWFwSWRsZSgpXG4gIHsgICAgXG4gICAgaWYgKEFwcC5tb2RlICE9IEFwcE1vZGVzLk1hcCkgICAgIHJldHVybjtcblxuICAgIC8vIHdlIG5lZWQgbWFwIHRvIGJlIGxvYWRlZCB0byBnZXQgdGhlIHJhZGl1cyBvZiB0aGUgdmlld3BvcnRcbiAgICAvLyBhbmQgZ2V0IHRoZSBlbGVtZW50cyBpbnNpZGVcbiAgICBpZiAoIUFwcC5tYXBDb21wb25lbnQuaXNNYXBMb2FkZWQpXG4gICAge1xuICAgICAgQXBwLm1hcENvbXBvbmVudC5vbk1hcExvYWRlZC5kbygoKSA9PiB7dGhpcy5oYW5kbGVNYXBJZGxlKCk7IH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCB1cGRhdGVJbkFsbEVsZW1lbnRMaXN0ID0gIUFwcC5tYXBDb21wb25lbnQuaGFzWm9vbWVkSW4oKTtcblxuICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh1cGRhdGVJbkFsbEVsZW1lbnRMaXN0KTtcblxuICAgIGlmIChBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLk5vcm1hbCB8fCBBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50KSBBcHAuZWxlbWVudHNNYW5hZ2VyLmNoZWNrRm9yTmV3RWxlbWVudHNUb1JldHJpZXZlKCk7XG5cbiAgICBpZiAoQXBwLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLkFsbCkgQXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKCk7XG4gIH07XG5cbiAgaGFuZGxlTWFwQ2xpY2soKVxuICB7XG4gICAgaWYgKHRoaXMuaXNDbGlja2luZykgcmV0dXJuO1xuXG4gICAgLy9jb25zb2xlLmxvZyhcImhhbmRsZSBNYXAgQ2xpY2tcIiwgQXBwU3RhdGVzW0FwcC5zdGF0ZV0pO1xuICAgIFxuICAgIGlmIChBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50IHx8IEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZSlcbiAgICB7XG4gICAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5oaWRlKCk7IFxuICAgICAgQXBwLnNldFN0YXRlKEFwcFN0YXRlcy5Ob3JtYWwpOyAgICBcbiAgICB9XG4gICAgZWxzZSBpZiAoQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucylcbiAgICAgIEFwcC5zZXRTdGF0ZShBcHBTdGF0ZXMuU2hvd0VsZW1lbnQsIHsgaWQgOiBBcHAuaW5mb0JhckNvbXBvbmVudC5nZXRDdXJyRWxlbWVudElkKCkgfSk7ICAgIFxuICAgIFxuICAgIEFwcC5tYXBDb250cm9sc0NvbXBvbmVudC5oaWRlQ29udHJvbExheWVycygpO1xuICB9O1xuXG4gIFxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcERhdGFUeXBlIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHVuc2x1Z2lmeSB9IGZyb20gXCIuLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuXG5leHBvcnQgZW51bSBBcHBNb2Rlc1xue1xuICBNYXAgPSAxLFxuICBMaXN0ID0gMlxufVxuXG5leHBvcnQgY2xhc3MgTW9kZU1hbmFnZXJcbntcbiAgcHJpdmF0ZSBtb2RlXyA6IEFwcE1vZGVzID0gbnVsbDtcblxuICAvKlxuICAqIENoYW5nZSBBcHAgbW9kZVxuICAqL1xuICBzZXRNb2RlKCRtb2RlIDogQXBwTW9kZXMsICRiYWNrRnJvbUhpc3RvcnkgOiBib29sZWFuID0gZmFsc2UsICR1cGRhdGVUaXRsZUFuZFN0YXRlID0gdHJ1ZSlcbiAge1xuICAgIEFwcC5lbGVtZW50c01vZHVsZS5jbGVhckN1cnJlbnRzRWxlbWVudCgpO1xuICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5jbGVhcigpO1xuXG4gICAgaWYgKCRtb2RlID09IEFwcE1vZGVzLk1hcCkgdGhpcy5zZXRNYXBNb2RlKCk7XG4gICAgZWxzZSB0aGlzLnNldExpc3RNb2RlKCk7XG5cbiAgICAvLyBpZiBwcmV2aW91cyBtb2RlIHdhc24ndCBudWxsIFxuICAgIGxldCBvbGRNb2RlID0gdGhpcy5tb2RlXztcbiAgICB0aGlzLm1vZGVfID0gJG1vZGU7XG5cbiAgICAvLyB1cGRhdGUgaGlzdG9yeSBpZiB3ZSBuZWVkIHRvXG4gICAgaWYgKG9sZE1vZGUgIT0gbnVsbCAmJiAhJGJhY2tGcm9tSGlzdG9yeSkgQXBwLmhpc3RvcnlNb2R1bGUucHVzaE5ld1N0YXRlKCk7XG5cbiAgICBBcHAuZ29nb0NvbnRyb2xDb21wb25lbnQudXBkYXRlUG9zaXRpb24oKTtcbiAgICBcbiAgICBzZXRUaW1lb3V0KCAoKSA9PiBBcHAuZWxlbWVudHNNb2R1bGUudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSkgLCAzMDApO1xuXG4gICAgaWYgKCR1cGRhdGVUaXRsZUFuZFN0YXRlKVxuICAgIHtcbiAgICAgIEFwcC5kb2N1bWVudFRpdGxlTW9kdWxlLnVwZGF0ZURvY3VtZW50VGl0bGUoKTsgIFxuXG4gICAgICAvLyBhZnRlciBjbGVhcmluZywgd2Ugc2V0IHRoZSBjdXJyZW50IHN0YXRlIGFnYWluXG4gICAgICBpZiAoJG1vZGUgPT0gQXBwTW9kZXMuTWFwKSBBcHAuc2V0U3RhdGUoQXBwLnN0YXRlLCB7aWQgOiBBcHAuc3RhdGVNYW5hZ2VyLnN0YXRlRWxlbWVudElkfSk7ICBcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHNldE1hcE1vZGUoKVxuICB7XG4gICAgQXBwLm1hcENvbXBvbmVudC5zaG93KCk7XG4gICAgQXBwLmVsZW1lbnRMaXN0Q29tcG9uZW50LmhpZGUoKTsgICAgICAgIFxuXG4gICAgQXBwLm1hcENvbXBvbmVudC5pbml0aWFsaXplKCk7ICAgIFxuXG4gICAgaWYgKEFwcC5tYXBDb21wb25lbnQuaXNNYXBMb2FkZWQpIEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kQm91bmRzKDAsIEFwcC5tYXBDb21wb25lbnQuZ2V0Qm91bmRzKCkpO1xuICB9XG5cbiAgcHJpdmF0ZSBzZXRMaXN0TW9kZSgpXG4gIHtcbiAgICBBcHAubWFwQ29tcG9uZW50LmhpZGUoKTtcbiAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2hvdygpOyAgICAgICAgXG5cbiAgICAvLyBjb25zb2xlLmxvZyhcImxpc3QgbW9kZVwiLCBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb24oKSk7ICAgICAgXG5cbiAgICBpZiAoQXBwLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLkFsbClcbiAgICB7XG4gICAgICBsZXQgY2VudGVyTG9jYXRpb24gOiBMLkxhdExuZztcbiAgICAgIGxldCBhZGRyZXNzID0gQXBwLmdlb2NvZGVyLmxhc3RBZGRyZXNzUmVxdWVzdDtcblxuICAgICAgaWYgKEFwcC5tYXBDb21wb25lbnQuaXNJbml0aWFsaXplZCkge1xuICAgICAgICBjZW50ZXJMb2NhdGlvbiA9IEFwcC5tYXBDb21wb25lbnQuZ2V0Q2VudGVyKCk7XG4gICAgICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5zZXRUaXRsZSgnIGF1dG91ciBkdSBjZW50cmUgZGUgbGEgY2FydGUnKTtcbiAgICAgIH1cbiAgICAgIGVsc2UgaWYgKEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpKSB7ICAgICAgICAgIFxuICAgICAgICBjZW50ZXJMb2NhdGlvbiA9IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpO1xuICAgICAgICBBcHAuZWxlbWVudExpc3RDb21wb25lbnQuc2V0VGl0bGUoJyBhdXRvdXIgZGUgPGk+JyArIGNhcGl0YWxpemUodW5zbHVnaWZ5KGFkZHJlc3MpKSArICc8L2k+Jyk7XG4gICAgICB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgY2VudGVyTG9jYXRpb24gPSBBcHAuYm91bmRzTW9kdWxlLmRlZmF1bHRDZW50ZXI7XG4gICAgICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5zZXRUaXRsZSgnJyk7XG4gICAgICB9ICAgICAgICAgXG5cbiAgICAgIEFwcC5ib3VuZHNNb2R1bGUuY3JlYXRlQm91bmRzRnJvbUxvY2F0aW9uKGNlbnRlckxvY2F0aW9uKTtcbiAgICAgIEFwcC5lbGVtZW50c01hbmFnZXIuY2hlY2tGb3JOZXdFbGVtZW50c1RvUmV0cmlldmUodHJ1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzKVxuICAgIHtcbiAgICAgIEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlLGZhbHNlKTtcbiAgICAgIEFwcC5lbGVtZW50TGlzdENvbXBvbmVudC5zZXRUaXRsZSgnJyk7XG4gICAgfSAgICAgIFxuICB9XG5cbiAgZ2V0IG1vZGUoKSB7IHJldHVybiB0aGlzLm1vZGVfOyB9XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgQXBwRGF0YVR5cGUsIEFwcE1vZGVzIH0gZnJvbSBcIi4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBlbnVtIEFwcFN0YXRlcyBcbntcbiAgTm9ybWFsLFxuICBTaG93RWxlbWVudCxcbiAgU2hvd0VsZW1lbnRBbG9uZSxcbiAgU2hvd0RpcmVjdGlvbnNcbn1cblxuZXhwb3J0IGNsYXNzIFN0YXRlTWFuYWdlclxue1xuICAvLyBjdXJyIHN0YXRlIG9mIHRoZSBhcHBcbiAgcHJpdmF0ZSBzdGF0ZV8gOiBBcHBTdGF0ZXMgPSBudWxsOyAgXG5cbiAgLy8gc29tZXMgc3RhdGVzIG5lZWQgYSBlbGVtZW50IGlkLCB3ZSBzdG9yZSBpdCBpbiB0aGlzIHByb3BlcnR5XG4gIHByaXZhdGUgc3RhdGVFbGVtZW50SWRfIDogbnVtYmVyID0gbnVsbDtcblxuICBnZXQgc3RhdGUoKSB7IHJldHVybiB0aGlzLnN0YXRlXzsgfVxuICBnZXQgc3RhdGVFbGVtZW50SWQoKSA6IG51bWJlciB7IHJldHVybiB0aGlzLnN0YXRlRWxlbWVudElkXzsgfVxuXG4gIC8qXG4gICogQ2hhbmdlIEFwcCBzdGF0ZVxuICAqL1xuICBzZXRTdGF0ZSgkbmV3U3RhdGUgOiBBcHBTdGF0ZXMsIG9wdGlvbnMgOiBhbnkgPSB7fSwgJGJhY2tGcm9tSGlzdG9yeSA6IGJvb2xlYW4gPSBmYWxzZSkgXG4gIHsgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIkFwcE1vZHVsZSBzZXQgU3RhdGUgOiBcIiArIEFwcFN0YXRlc1skbmV3U3RhdGVdICArICAnLCBvcHRpb25zID0gJyxvcHRpb25zKTtcbiAgICBsZXQgZWxlbWVudCA9IChvcHRpb25zICYmIG9wdGlvbnMuaWQpID8gQXBwLmVsZW1lbnRCeUlkKG9wdGlvbnMuaWQpIDogbnVsbDtcblxuICAgIGxldCBvbGRTdGF0ZU5hbWUgPSB0aGlzLnN0YXRlXztcbiAgICB0aGlzLnN0YXRlXyA9ICRuZXdTdGF0ZTsgICAgICBcblxuICAgIGlmIChvbGRTdGF0ZU5hbWUgPT0gQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zICYmIEFwcC5kaXJlY3Rpb25zQ29tcG9uZW50KSBcbiAgICAgIEFwcC5kaXJlY3Rpb25zQ29tcG9uZW50LmNsZWFyKCk7XG5cbiAgICBpZiAob2xkU3RhdGVOYW1lID09IEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lKSAgXG4gICAge1xuICAgICAgQXBwLmVsZW1lbnRzTW9kdWxlLmNsZWFyQ3VycmVudHNFbGVtZW50KCk7XG4gICAgICBBcHAuZGlzcGxheUVsZW1lbnRBbG9uZU1vZHVsZS5lbmQoKTsgIFxuICAgIH0gIFxuXG4gICAgdGhpcy5zdGF0ZUVsZW1lbnRJZF8gPSBvcHRpb25zID8gb3B0aW9ucy5pZCA6IG51bGw7XG4gICAgXG4gICAgc3dpdGNoICgkbmV3U3RhdGUpXG4gICAge1xuICAgICAgY2FzZSBBcHBTdGF0ZXMuTm9ybWFsOiB0aGlzLnNldE5vcm1hbFN0YXRlKCk7IGJyZWFrO1xuICAgICAgY2FzZSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnQ6IHRoaXMuc2V0U2hvd0VsZW1lbnRTdGF0ZShlbGVtZW50LCBvcHRpb25zKTsgYnJlYWs7IFxuICAgICAgY2FzZSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZTogdGhpcy5zZXRTaG93RWxlbWVudEFsb25lU3RhdGUoZWxlbWVudCwgb3B0aW9ucyk7IGJyZWFrO1xuICAgICAgY2FzZSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnM6IHRoaXMuc2V0U2hvd0RpcmVjdGlvbnNTdGF0ZShlbGVtZW50LCBvcHRpb25zKTticmVhazsgICAgICBcbiAgICB9XG5cbiAgICBpZiAoISRiYWNrRnJvbUhpc3RvcnkgJiZcbiAgICAgICAoIG9sZFN0YXRlTmFtZSAhPT0gJG5ld1N0YXRlIFxuICAgICAgICB8fCAkbmV3U3RhdGUgPT0gQXBwU3RhdGVzLlNob3dFbGVtZW50XG4gICAgICAgIHx8ICRuZXdTdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZVxuICAgICAgICB8fCAkbmV3U3RhdGUgPT0gQXBwU3RhdGVzLlNob3dEaXJlY3Rpb25zKSApXG4gICAge1xuICAgICAgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5BbGwpIEFwcC5oaXN0b3J5TW9kdWxlLnB1c2hOZXdTdGF0ZShvcHRpb25zKTtcbiAgICAgIGVsc2UgQXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKG9wdGlvbnMpO1xuICAgIH0gICAgIFxuXG4gICAgQXBwLmRvY3VtZW50VGl0bGVNb2R1bGUudXBkYXRlRG9jdW1lbnRUaXRsZShvcHRpb25zKTtcbiAgfTtcblxuICBwcml2YXRlIHNldE5vcm1hbFN0YXRlKClcbiAge1xuICAgIEFwcC5pbmZvQmFyQ29tcG9uZW50LmhpZGUoZmFsc2UpO1xuICB9ICBcblxuICBwcml2YXRlIHNldFNob3dFbGVtZW50U3RhdGUoZWxlbWVudCwgb3B0aW9ucylcbiAge1xuICAgIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0KVxuICAgIHtcbiAgICAgIGlmICghQXBwLm1hcENvbXBvbmVudC5pc0luaXRpYWxpemVkKVxuICAgICAge1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50Lm9uTWFwUmVhZHkuZG8oKCkgPT4gXG4gICAgICAgIHtcbiAgICAgICAgICBBcHAubWFwQ29tcG9uZW50LnBhblRvTG9jYXRpb24oZWxlbWVudC5wb3NpdGlvbiwgMTQsIGZhbHNlKTtcbiAgICAgICAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudChlbGVtZW50LmlkKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgICBlbHNlXG4gICAgICB7XG4gICAgICAgIEFwcC5tYXBDb21wb25lbnQucGFuVG9Mb2NhdGlvbihlbGVtZW50LnBvc2l0aW9uLCAxNCwgZmFsc2UpOyAgICAgICAgICAgIFxuICAgICAgICBBcHAuaW5mb0JhckNvbXBvbmVudC5zaG93RWxlbWVudChlbGVtZW50LmlkKTtcbiAgICAgIH0gICAgICAgICAgICBcblxuICAgICAgQXBwLnNldE1vZGUoQXBwTW9kZXMuTWFwLCBmYWxzZSwgZmFsc2UpO1xuICAgIH0gXG4gICAgZWxzZSAvLyBBcHBNb2RlXG4gICAge1xuICAgICAgQXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQoZWxlbWVudC5pZCk7XG4gICAgfVxuICB9ICBcblxuICBwcml2YXRlIHNldFNob3dFbGVtZW50QWxvbmVTdGF0ZShlbGVtZW50LCBvcHRpb25zKVxuICB7XG4gICAgQXBwLmluZm9CYXJDb21wb25lbnQuc2hvdygpO1xuXG4gICAgaWYgKGVsZW1lbnQpXG4gICAge1xuICAgICAgQXBwLkRFQU1vZHVsZS5iZWdpbihlbGVtZW50LmlkLCB0cnVlKTsgICAgICAgICAgXG4gICAgfVxuICAgIGVsc2VcbiAgICB7XG4gICAgICBBcHAuYWpheE1vZHVsZS5nZXRFbGVtZW50QnlJZChvcHRpb25zLmlkLFxuICAgICAgICAoZWxlbWVudEpzb24pID0+IHtcbiAgICAgICAgICBBcHAuZWxlbWVudHNKc29uTW9kdWxlLmNvbnZlcnRKc29uRWxlbWVudHMoW2VsZW1lbnRKc29uXSwgdHJ1ZSwgdHJ1ZSk7XG4gICAgICAgICAgQXBwLkRFQU1vZHVsZS5iZWdpbihlbGVtZW50SnNvbi5pZCwgdHJ1ZSk7XG4gICAgICAgICAgQXBwLmRvY3VtZW50VGl0bGVNb2R1bGUudXBkYXRlRG9jdW1lbnRUaXRsZShvcHRpb25zKTtcbiAgICAgICAgICBBcHAuaGlzdG9yeU1vZHVsZS51cGRhdGVDdXJyU3RhdGUob3B0aW9ucyk7XG4gICAgICAgIH0sXG4gICAgICAgIChlcnJvcikgPT4gXG4gICAgICAgIHsgXG4gICAgICAgICAgbGV0IGhpc3RvcnlzdGF0ZSA9IEFwcC5oaXN0b3J5U3RhdGVNYW5hZ2VyLmxhc3RIaXN0b3J5U3RhdGU7XG4gICAgICAgICAgQXBwLmNvbXBvbmVudC50b2FzdE1lc3NhZ2UoXCJFcnJldXIgcGVuZGFudCBsZSBjaGFyZ2VtZW50IGRlIGNldCDDqWxlbWVudFwiKTtcbiAgICAgICAgICBcbiAgICAgICAgICBBcHAuc2V0U3RhdGUoQXBwU3RhdGVzLk5vcm1hbCk7XG4gICAgICAgICAgaWYgKGhpc3RvcnlzdGF0ZS52aWV3cG9ydCkgQXBwLm1hcENvbXBvbmVudC5zZXRWaWV3UG9ydChoaXN0b3J5c3RhdGUudmlld3BvcnQpO1xuICAgICAgICAgIGVsc2UgQXBwLm1hcENvbXBvbmVudC5maXREZWZhdWx0Qm91bmRzKCk7XG4gICAgICAgICAgc2V0VGltZW91dCggKCkgPT4geyBBcHAuaW5mb0JhckNvbXBvbmVudC5oaWRlKCk7IH0sIDIwMCk7XG4gICAgICAgICAgc2V0VGltZW91dCggKCkgPT4geyBBcHAuaW5mb0JhckNvbXBvbmVudC5oaWRlKCk7IH0sIDUwMCk7XG4gICAgICAgIH1cbiAgICAgICk7ICAgICAgICAgICAgXG4gICAgfSAgICAgIFxuICB9XG5cbiAgcHJpdmF0ZSBzZXRTaG93RGlyZWN0aW9uc1N0YXRlKGVsZW1lbnQgOiBFbGVtZW50LCBvcHRpb25zKVxuICB7XG4gICAgbGV0IG9yaWdpbiA9IEFwcC5nZW9jb2Rlci5nZXRMb2NhdGlvbigpOyBcbiAgICAvLyBpZiBubyBlbGVtZW50LCB3ZSBnZXQgaXQgZnJvbSBhamF4IFxuICAgIGlmICghZWxlbWVudClcbiAgICB7XG4gICAgICBpZiAoIW9wdGlvbnMuaWQpIHJldHVybjsgXG4gICAgICBBcHAuYWpheE1vZHVsZS5nZXRFbGVtZW50QnlJZChvcHRpb25zLmlkLCAoZWxlbWVudEpzb24pID0+IFxuICAgICAgeyBcbiAgICAgICAgQXBwLmVsZW1lbnRzSnNvbk1vZHVsZS5jb252ZXJ0SnNvbkVsZW1lbnRzKFtlbGVtZW50SnNvbl0sIHRydWUsIHRydWUpO1xuICAgICAgICBlbGVtZW50ID0gQXBwLmVsZW1lbnRCeUlkKGVsZW1lbnRKc29uLmlkKTtcbiAgICAgICAgQXBwLmRvY3VtZW50VGl0bGVNb2R1bGUudXBkYXRlRG9jdW1lbnRUaXRsZShvcHRpb25zKTsgIFxuICAgICAgICB0aGlzLmNoZWNrSWZSZWFkeVRvU3RhcnREaXJlY3Rpb25zKGVsZW1lbnQpOyAgICAgICAgICAgICAgICAgICAgICAgIFxuICAgICAgfSxcbiAgICAgIChlcnJvcikgPT4geyAvKlRPRE8qLyBhbGVydChcIk5vIGVsZW1lbnQgd2l0aCBBcHAgaWRcIik7IH1cbiAgICAgICk7ICAgICAgICAgICAgICAgXG4gICAgfVxuXG4gICAgdGhpcy5jaGVja0lmUmVhZHlUb1N0YXJ0RGlyZWN0aW9ucyhlbGVtZW50KSAgXG4gIH1cblxuICBwcml2YXRlIGNoZWNrSWZSZWFkeVRvU3RhcnREaXJlY3Rpb25zKGVsZW1lbnQpXG4gIHtcbiAgICBsZXQgb3JpZ2luID0gQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uKCk7XG4gICAgICBcbiAgICBpZiAoIWVsZW1lbnQgfHwgIW9yaWdpbikgcmV0dXJuO1xuICAgIFxuICAgIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0KVxuICAgIHtcbiAgICAgIGlmICghQXBwLm1hcENvbXBvbmVudC5pc0luaXRpYWxpemVkKVxuICAgICAge1xuICAgICAgICBBcHAubWFwQ29tcG9uZW50Lm9uTWFwUmVhZHkuZG8oKCkgPT4geyB0aGlzLmJlZ2luRGlyZWN0aW9uc0NhbGN1bGF0aW9uKG9yaWdpbiwgZWxlbWVudCk7IH0pO1xuICAgICAgfSAgICAgICAgICAgXG5cbiAgICAgIEFwcC5zZXRNb2RlKEFwcE1vZGVzLk1hcCwgZmFsc2UsIGZhbHNlKTtcbiAgICB9IFxuICAgICAgXG4gICAgdGhpcy5iZWdpbkRpcmVjdGlvbnNDYWxjdWxhdGlvbihvcmlnaW4sIGVsZW1lbnQpO1xuICB9XG5cbiAgcHJpdmF0ZSBiZWdpbkRpcmVjdGlvbnNDYWxjdWxhdGlvbiA9IGZ1bmN0aW9uIChvcmlnaW4gOiBMLkxhdExuZywgZWxlbWVudCA6IEVsZW1lbnQpXG4gIHtcbiAgICBpZiAoIUFwcC5tYXBDb21wb25lbnQuaXNJbml0aWFsaXplZCkgcmV0dXJuO1xuXG4gICAgQXBwLkRFQU1vZHVsZS5iZWdpbihlbGVtZW50LmlkLCBmYWxzZSk7XG4gICAgLy8gd2FpdCBmb3IgdGhlIGluZm8gYmFyIHRvIG9wZW4sIHNvIHRoZSBtYXAgaXMgcmVzaXplZCBhdCB0aGlzIGZpbmFsIHZpZXdwb3J0XG4gICAgLy8gVGhlbiB3ZSBjYW4gY2FsY3VsYXRlIHJvdXRlIGFuZCBmaXRib3VuZHMgcmVnYXJkaW5nIHJvdXRpbmcgcmVzdWx0XG4gICAgc2V0VGltZW91dCggKCkgPT4geyBBcHAuZGlyZWN0aW9uc0NvbXBvbmVudC5jYWxjdWxhdGVSb3V0ZShvcmlnaW4sIGVsZW1lbnQpOyB9LCA0MDApOyAgICAgXG4gIH07XG59IiwiLyoqXG4gKiBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR29Hb0NhcnRvIHByb2plY3QuXG4gKiBGb3IgdGhlIGZ1bGwgY29weXJpZ2h0IGFuZCBsaWNlbnNlIGluZm9ybWF0aW9uLCBwbGVhc2UgdmlldyB0aGUgTElDRU5TRVxuICogZmlsZSB0aGF0IHdhcyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgc291cmNlIGNvZGUuXG4gKlxuICogQGNvcHlyaWdodCBDb3B5cmlnaHQgKGMpIDIwMTYgU2ViYXN0aWFuIENhc3RybyAtIDkwc2Nhc3Ryb0BnbWFpbC5jb21cbiAqIEBsaWNlbnNlIEdOVSBHUEwgdjNcbiAqIEBMYXN0IE1vZGlmaWVkIHRpbWU6IDIwMTYtMTItMTNcbiAqL1xuXG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi9jbGFzc2VzL2V2ZW50LmNsYXNzXCI7XG5pbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciAkIDogYW55LCBMIDogYW55O1xuZGVjbGFyZSBsZXQgUm91dGluZztcblxuZXhwb3J0IGNsYXNzIFJlcXVlc3Rcbntcblx0Y29uc3RydWN0b3IocHVibGljIHJvdXRlIDogc3RyaW5nLCBwdWJsaWMgZGF0YSA6IGFueSkge307XG59XG5cbmV4cG9ydCBjbGFzcyBBamF4TW9kdWxlXG57XG5cdG9uTmV3RWxlbWVudHMgPSBuZXcgRXZlbnQ8YW55W10+KCk7XG5cblx0aXNSZXRyaWV2aW5nRWxlbWVudHMgOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y3VyckVsZW1lbnRJZFJldHJpZXZpbmcgOiBudW1iZXI7XG5cdGN1cnJCb3VuZHNSZXRyaWV2aW5nIDogTC5MYXRMbmdCb3VuZHNbXTtcblxuXHRyZXF1ZXN0V2FpdGluZ1RvQmVFeGVjdXRlZCA6IGJvb2xlYW4gPSBmYWxzZTtcblx0d2FpdGluZ1JlcXVlc3RGdWxsUmVwcmVzZW50YXRpb24gOiBib29sZWFuID0gbnVsbDtcblxuXHRjdXJyUmVxdWVzdCA6IFJlcXVlc3QgPSBudWxsO1xuXG5cdGxvYWRlclRpbWVyID0gbnVsbDtcblxuXHRhbGxFbGVtZW50c1JlY2VpdmVkID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoKSB7IH0gIFxuXG5cdHNlbmRSZXF1ZXN0KHJvdXRlIDogc3RyaW5nLCBtZXRob2QgOiBzdHJpbmcsIGRhdGEgOiBhbnksIGNhbGxiYWNrU3VjY2Vzcz8sIGNhbGxiYWNrRmFpbHVyZT8pXG5cdHtcblx0XHQvL2NvbnNvbGUubG9nKFwiU2VuZEFqYXhSZXF1ZXN0IHRvIFwiICsgcm91dGUsIGRhdGEpO1xuXHRcdCQuYWpheCh7XG5cdFx0XHR1cmw6IHJvdXRlLFxuXHRcdFx0bWV0aG9kOiBtZXRob2QsXG5cdFx0XHRkYXRhOiBkYXRhLFxuXHRcdFx0c3VjY2VzczogcmVzcG9uc2UgPT4geyBpZiAocmVzcG9uc2UgJiYgY2FsbGJhY2tTdWNjZXNzKSBjYWxsYmFja1N1Y2Nlc3MocmVzcG9uc2UpOyB9LFxuXHRcdFx0ZXJyb3I6IHJlc3BvbnNlID0+IHsgaWYgKGNhbGxiYWNrRmFpbHVyZSkgY2FsbGJhY2tGYWlsdXJlKHJlc3BvbnNlLmRhdGEpOyB9XG5cdFx0fSk7XG5cdH1cblxuXHRnZXRFbGVtZW50QnlJZChlbGVtZW50SWQsIGNhbGxiYWNrU3VjY2Vzcz8sIGNhbGxiYWNrRmFpbHVyZT8pXG5cdHtcblx0XHRpZiAoZWxlbWVudElkID09IHRoaXMuY3VyckVsZW1lbnRJZFJldHJpZXZpbmcpIHJldHVybjtcdFx0XG5cdFx0dGhpcy5jdXJyRWxlbWVudElkUmV0cmlldmluZyA9IGVsZW1lbnRJZDtcblx0XHRcblx0XHQkLmFqYXgoe1xuXHRcdFx0dXJsOiB0aGlzLmdldFNpbmdsZUVsZW1lbnRBcGlVcmwoZWxlbWVudElkKSxcblx0XHRcdG1ldGhvZDogXCJnZXRcIixcblx0XHRcdGRhdGE6IHsgfSxcblx0XHRcdHN1Y2Nlc3M6IHJlc3BvbnNlID0+IFxuXHRcdFx0e1x0ICAgICAgICBcblx0XHRcdFx0aWYgKHJlc3BvbnNlKVxuXHRcdFx0XHR7XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGxldCBlbGVtZW50SnNvbjtcdFxuXHRcdFx0XHRcdGlmIChyZXNwb25zZS5kYXRhKSBlbGVtZW50SnNvbiA9IEFycmF5LmlzQXJyYXkocmVzcG9uc2UuZGF0YSkgPyByZXNwb25zZS5kYXRhWzBdIDogcmVzcG9uc2UuZGF0YTtcdFx0XHRcblx0XHRcdFx0XHRlbHNlIGVsZW1lbnRKc29uID0gcmVzcG9uc2U7XG5cblx0XHRcdFx0XHRpZiAoY2FsbGJhY2tTdWNjZXNzKSBjYWxsYmFja1N1Y2Nlc3MoZWxlbWVudEpzb24pOyBcdFx0XHRcdFx0XG5cdFx0XHRcdH1cdFxuXHRcdFx0XHRlbHNlIGlmIChjYWxsYmFja0ZhaWx1cmUpIGNhbGxiYWNrRmFpbHVyZShyZXNwb25zZSk7IFxuXHRcdFx0XHRcblx0XHRcdFx0dGhpcy5jdXJyRWxlbWVudElkUmV0cmlldmluZyA9IG51bGw7XHRcdFx0XHQgICAgICAgXG5cdFx0XHR9LFxuXHRcdFx0ZXJyb3I6IHJlc3BvbnNlID0+IHsgaWYgKGNhbGxiYWNrRmFpbHVyZSkgY2FsbGJhY2tGYWlsdXJlKHJlc3BvbnNlKTsgdGhpcy5jdXJyRWxlbWVudElkUmV0cmlldmluZyA9IG51bGw7IH1cblx0XHR9KTtcblx0fTtcblxuXHRnZXRFbGVtZW50c0luQm91bmRzKCRib3VuZHMgOiBMLkxhdExuZ0JvdW5kc1tdLCBnZXRGdWxsUmVwcmVzZW50YXRpb24gOiBib29sZWFuID0gZmFsc2UsIGV4cGVjdGVkRmlsbGVkQm91bmRzIDogTC5MYXRMbmdCb3VuZHMpXG5cdHtcblx0XHRpZiAodGhpcy5jdXJyQm91bmRzUmV0cmlldmluZyAmJiAkYm91bmRzWzBdLmVxdWFscyh0aGlzLmN1cnJCb3VuZHNSZXRyaWV2aW5nWzBdKSkgcmV0dXJuO1x0XHRcblx0XHR0aGlzLmN1cnJCb3VuZHNSZXRyaWV2aW5nID0gJGJvdW5kcztcblxuXHRcdC8vIGlmIGludmFsaWQgbG9jYXRpb24gd2UgYWJvcnRcblx0XHRpZiAoISRib3VuZHMgfHwgJGJvdW5kcy5sZW5ndGggPT0gMCB8fCAhJGJvdW5kc1swXSkgeyByZXR1cm47IH1cblxuXHRcdGxldCBib3VuZHNSZXN1bHQgPSB0aGlzLmNvbnZlcnRCb3VuZHNJbnRvUGFyYW1zKCRib3VuZHMpO1xuXG5cdFx0bGV0IGJuZHMgPSBib3VuZHNSZXN1bHQuYm91bmRzSnNvbjtcblx0XHRsZXQgZGF0YVJlcXVlc3QgOiBhbnkgPSB7IFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ym91bmRzIDogYm91bmRzUmVzdWx0LmJvdW5kc1N0cmluZywgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRib3VuZHNKc29uIDogSlNPTi5zdHJpbmdpZnkoYm91bmRzUmVzdWx0LmJvdW5kc0pzb24pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2F0ZWdvcmllcyA6IEFwcC5jdXJyTWFpbklkICE9IFwiYWxsXCIgPyBbQXBwLmN1cnJNYWluSWRdIDogbnVsbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZ1bGxSZXByZXNlbnRhdGlvbiA6IGdldEZ1bGxSZXByZXNlbnRhdGlvbiwgXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbnRvbG9neSA6IGdldEZ1bGxSZXByZXNlbnRhdGlvbiA/ICdnb2dvZnVsbCcgOiAnZ29nb2NvbXBhY3QnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3RhbXBzSWRzIDogQXBwLnJlcXVlc3Quc3RhbXBzSWRzXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fTtcdFx0XG5cdFx0bGV0IHJvdXRlO1xuXHRcdGlmIChnZXRGdWxsUmVwcmVzZW50YXRpb24pIHJvdXRlID0gQXBwLmNvbmZpZy5kYXRhLmVsZW1lbnRzO1xuXHRcdGVsc2Ugcm91dGUgPSBBcHAuY29uZmlnLmRhdGEuZWxlbWVudHNDb21wYWN0QXBpVXJsIHx8IEFwcC5jb25maWcuZGF0YS5lbGVtZW50cztcblx0XHRcblx0XHR0aGlzLnNlbmRBamF4RWxlbWVudFJlcXVlc3QobmV3IFJlcXVlc3Qocm91dGUsIGRhdGFSZXF1ZXN0KSwgZXhwZWN0ZWRGaWxsZWRCb3VuZHMpO1xuXHR9XHRcblxuXHRwcml2YXRlIGNvbnZlcnRCb3VuZHNJbnRvUGFyYW1zKCRib3VuZHMgOiBMLkxhdExuZ0JvdW5kc1tdKSBcblx0e1xuXHRcdGxldCBzdHJpbmdpZmllZEJvdW5kcyA9IFwiXCI7XG5cdFx0bGV0IGRpZ2l0cyA9IDU7XG5cdFx0bGV0IGJvdW5kc0xlc3NEaWdpdHMgPSBbXTtcblx0XHRmb3IgKGxldCBib3VuZCBvZiAkYm91bmRzKVxuXHRcdHtcblx0XHRcdGxldCBzb3V0aFdlc3QgPSBMLmxhdExuZyhMLlV0aWwuZm9ybWF0TnVtKGJvdW5kLmdldFNvdXRoV2VzdCgpLmxhdCwgZGlnaXRzKSwgTC5VdGlsLmZvcm1hdE51bShib3VuZC5nZXRTb3V0aFdlc3QoKS5sbmcsIGRpZ2l0cykpXG5cdFx0XHRsZXQgbm9ydEVhc3QgPSBMLmxhdExuZyhMLlV0aWwuZm9ybWF0TnVtKGJvdW5kLmdldE5vcnRoRWFzdCgpLmxhdCwgZGlnaXRzKSwgTC5VdGlsLmZvcm1hdE51bShib3VuZC5nZXROb3J0aEVhc3QoKS5sbmcsIGRpZ2l0cykpXG5cdFx0XHRib3VuZCA9IEwubGF0TG5nQm91bmRzKHNvdXRoV2VzdCwgbm9ydEVhc3QpO1xuXHRcdFx0Ym91bmRzTGVzc0RpZ2l0cy5wdXNoKGJvdW5kKTtcblx0XHRcdHN0cmluZ2lmaWVkQm91bmRzICs9IGJvdW5kLnRvQkJveFN0cmluZygpICsgXCI7XCI7XG5cdFx0fVxuXG5cdFx0Ly8gc29tZSBBUEkgZW5kcG9pbnQgbmVlZHMgYSBmaXhlZCBudW1iZXIgb2YgYm91bmRzIGVxdWFscyB0byA0XG5cdFx0aWYgKCRib3VuZHMubGVuZ3RoIDwgNClcblx0XHR7XG5cdFx0XHRsZXQgZW1wdHlCb3VuZCA9IEwubGF0TG5nQm91bmRzKEwubGF0TG5nKDAsMCksIEwubGF0TG5nKDAsMCkpO1xuXHRcdFx0Zm9yICh2YXIgaSA9ICRib3VuZHMubGVuZ3RoOyBpIDwgNDsgaSsrKSBib3VuZHNMZXNzRGlnaXRzLnB1c2goZW1wdHlCb3VuZCk7XHRcdFx0XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHtib3VuZHNTdHJpbmc6IHN0cmluZ2lmaWVkQm91bmRzLCBib3VuZHNKc29uOiBib3VuZHNMZXNzRGlnaXRzfTtcblx0fVxuXG5cdHByaXZhdGUgZ2V0U2luZ2xlRWxlbWVudEFwaVVybCgkZWxlbWVudElkIDogYW55KSA6IHN0cmluZ1xuXHR7XG5cdFx0bGV0IHJvdXRlID0gXCJcIjtcblx0XHRpZiAoQXBwLmNvbmZpZy5kYXRhLmVsZW1lbnRCeUlkVXJsKSBcblx0XHR7XG5cdFx0XHRyb3V0ZSA9IEFwcC5jb25maWcuZGF0YS5lbGVtZW50QnlJZFVybDtcblx0XHRcdGlmIChyb3V0ZS5pbmRleE9mKCd7SUR9JykgPiAwKSByb3V0ZSA9IHJvdXRlLnJlcGxhY2UoJ3tJRH0nLCAkZWxlbWVudElkLnRvU3RyaW5nKCkpO1xuXHRcdFx0ZWxzZSBcblx0XHRcdHtcblx0XHRcdFx0aWYgKHJvdXRlLnNsaWNlKC0xKSAhPSAnLycpIHJvdXRlICs9ICcvJztcblx0XHRcdFx0cm91dGUgKz0gJGVsZW1lbnRJZDtcblx0XHRcdH1cblx0XHR9XG5cdFx0ZWxzZSByb3V0ZSA9IEFwcC5jb25maWcuZGF0YS5lbGVtZW50cyArICcvJyArICRlbGVtZW50SWQ7XG5cdFx0cmV0dXJuIHJvdXRlO1xuXHR9XG5cblx0cHJpdmF0ZSBzZW5kQWpheEVsZW1lbnRSZXF1ZXN0KCRyZXF1ZXN0IDogUmVxdWVzdCwgJGV4cGVjdGVkRmlsbGVkQm91bmRzID0gbnVsbClcblx0e1xuXHRcdGlmICh0aGlzLmFsbEVsZW1lbnRzUmVjZWl2ZWQpIHsgLypjb25zb2xlLmxvZyhcIkFsbCBlbGVtZW50cyBhbHJlYWR5IHJlY2VpdmVkXCIpOyovIHJldHVybjsgfVxuXG5cdFx0Ly8gY29uc29sZS5sb2coXCJBamF4IHNlbmQgZWxlbWVudHMgcmVxdWVzdCBcIiwgJHJlcXVlc3QpO1xuXG5cdFx0aWYgKHRoaXMuaXNSZXRyaWV2aW5nRWxlbWVudHMpXG5cdFx0e1x0XHRcblx0XHRcdC8vY29uc29sZS5sb2coXCJBamF4IGlzUmV0cmlldmluZ1wiKTtcblx0XHRcdHRoaXMucmVxdWVzdFdhaXRpbmdUb0JlRXhlY3V0ZWQgPSB0cnVlO1xuXHRcdFx0dGhpcy53YWl0aW5nUmVxdWVzdEZ1bGxSZXByZXNlbnRhdGlvbiA9ICRyZXF1ZXN0LmRhdGEuZnVsbFJlcHJlc2VudGF0aW9uO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblxuXHRcdHRoaXMuaXNSZXRyaWV2aW5nRWxlbWVudHMgPSB0cnVlO1xuXHRcdHRoaXMuY3VyclJlcXVlc3QgPSAkcmVxdWVzdDtcblx0XHQvLyBsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcdFx0XHRcblx0XHRcblx0XHQkLmFqYXgoe1xuXHRcdFx0dXJsOiAkcmVxdWVzdC5yb3V0ZSxcblx0XHRcdG1ldGhvZDogXCJnZXRcIixcblx0XHRcdGRhdGE6ICRyZXF1ZXN0LmRhdGEsXG5cdFx0XHRiZWZvcmVTZW5kOiAoKSA9PlxuXHRcdFx0eyBcdFx0XHRcdFxuXHRcdFx0XHR0aGlzLmxvYWRlclRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbigpIHsgJCgnI2RpcmVjdG9yeS1sb2FkaW5nJykuc2hvdygpOyB9LCAxNTAwKTsgXG5cdFx0XHR9LFxuXHRcdFx0c3VjY2VzczogcmVzcG9uc2UgPT5cblx0XHRcdHtcdFxuXHRcdFx0XHRpZiAocmVzcG9uc2UuZGF0YSAhPT0gbnVsbClcblx0XHRcdFx0e1xuXHRcdFx0XHRcdC8vIGxldCBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcdFx0XHRcdFx0XG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCJyZWNlaXZlIFwiICsgcmVzcG9uc2UuZGF0YS5sZW5ndGggKyBcIiBlbGVtZW50cyBpbiBcIiArIChlbmQtc3RhcnQpICsgXCIgbXMuIGZ1bGxSZXByZXNlbnRhdGlvblwiLCByZXNwb25zZS5mdWxsUmVwcmVzZW50YXRpb24pO1x0XHRcdFx0XG5cblx0XHRcdFx0XHRyZXNwb25zZS5mdWxsUmVwcmVzZW50YXRpb24gPSByZXNwb25zZS5vbnRvbG9neSA9PSBcImdvZ29jb21wYWN0XCIgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0aWYgKCRleHBlY3RlZEZpbGxlZEJvdW5kcylcblx0XHRcdFx0XHRcdEFwcC5ib3VuZHNNb2R1bGUudXBkYXRlRmlsbGVkQm91bmRzV2l0aEJvdW5kc1JlY2VpdmVkKCRleHBlY3RlZEZpbGxlZEJvdW5kcywgJHJlcXVlc3QuZGF0YS5tYWluT3B0aW9uSWQsICAkcmVxdWVzdC5kYXRhLmZ1bGxSZXByZXNlbnRhdGlvbik7XG5cblx0XHRcdFx0XHRpZiAocmVzcG9uc2UuYWxsRWxlbWVudHNTZW5kcyB8fCAhQXBwLmNvbmZpZy5kYXRhLnJlcXVlc3RCeUJvdW5kcykgdGhpcy5hbGxFbGVtZW50c1JlY2VpdmVkID0gdHJ1ZTtcblxuXHRcdFx0XHRcdHRoaXMub25OZXdFbGVtZW50cy5lbWl0KHJlc3BvbnNlKTtcdFx0XHRcdFxuXHRcdFx0XHR9XHRcdFx0ICAgICBcblx0XHRcdH0sXG5cdFx0XHRjb21wbGV0ZTogKCkgPT5cblx0XHRcdHtcblx0XHRcdCAgdGhpcy5pc1JldHJpZXZpbmdFbGVtZW50cyA9IGZhbHNlO1xuXHRcdFx0ICB0aGlzLmN1cnJCb3VuZHNSZXRyaWV2aW5nID0gbnVsbDsgXG5cdFx0XHQgIGNsZWFyVGltZW91dCh0aGlzLmxvYWRlclRpbWVyKTtcblx0XHRcdCAgc2V0VGltZW91dCggKCkgPT4gJCgnI2RpcmVjdG9yeS1sb2FkaW5nJykuaGlkZSgpLCAyNTApO1xuXHRcdFx0ICBpZiAodGhpcy5yZXF1ZXN0V2FpdGluZ1RvQmVFeGVjdXRlZClcblx0XHRcdCAge1xuXHRcdFx0ICBcdCAvL2NvbnNvbGUubG9nKFwiUkVRVUVTVCBXQUlUSU5HIFRPIEJFIEVYRUNVVEVELCBmdWxsUmVwcmVzZW50YXRpb25cIiwgdGhpcy53YWl0aW5nUmVxdWVzdEZ1bGxSZXByZXNlbnRhdGlvbik7XG5cdFx0XHQgIFx0IEFwcC5lbGVtZW50c01hbmFnZXIuY2hlY2tGb3JOZXdFbGVtZW50c1RvUmV0cmlldmUodGhpcy53YWl0aW5nUmVxdWVzdEZ1bGxSZXByZXNlbnRhdGlvbik7XG5cdFx0XHQgIFx0IHRoaXMucmVxdWVzdFdhaXRpbmdUb0JlRXhlY3V0ZWQgPSBmYWxzZTtcblx0XHRcdCAgfVxuXHRcdFx0fSxcblx0XHR9KTtcblx0fTtcbn0iLCJpbXBvcnQgeyBBcHBNb2R1bGUsIEFwcFN0YXRlcyB9IGZyb20gXCIuLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgR29Hb0NvbmZpZyB9IGZyb20gXCIuLi9jbGFzc2VzL2NvbmZpZy9nb2dvLWNvbmZpZy5jbGFzc1wiO1xuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgTDtcblxuZXhwb3J0IGNsYXNzIEJvdW5kc01vZHVsZVxue1xuXHQvLyB3ZSBleHRlbmQgdmlzaWJsZSB2aWV4cG9ydCB0byBsb2FkIGVsZW1lbnRzIG9uIHRoaXMgYXJlYSwgc28gdGhlIHVzZXIgc2VlIHRoZW0gZGlyZWN0bHkgd2hlbiBwYW5uaW5nIG9yIHpvb20gb3V0XG5cdGV4dGVuZGVkQm91bmRzIDogTC5MYXRMbmdCb3VuZHM7XG5cblx0Ly8gdGhlIGJvdW5kcyB3aGVyZSBlbGVtZW50cyBoYXMgYWxyZWFkeSBiZWVuIHJldHJpZXZlZFxuXHQvLyB3ZSBzYXZlIG9uZSBmaWxsZWRCb3VuZCBwZXIgbWFpbk9wdGlvbklkXG5cdC8vIGFuZCBvbmUgZmlsbGVkQm91bmQgcGVyIGxldmVsIG9mIGVsZW1lbnQgcmVwcmVzZW50YXRpb25cblx0ZnVsbFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmQgOiBMLkxhdExuZ0JvdW5kc1tdID0gW107XG5cdGNvbXBhY3RSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kIDogTC5MYXRMbmdCb3VuZHNbXSA9IFtdO1xuXG5cdC8vIGluZGljYXRlIGlmIHdlIGFscmVhZHkgcmV0cmlldmVkIGFsbCBlbGVtZW50cyBvZiB0aGUgbWF4IGJvdW5kc1xuXHRmdWxsUmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGUgOiBib29sZWFuW10gPSBbXTtcblx0Y29tcGFjdFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlIDogYm9vbGVhbltdID0gW107XG5cblx0Ly8gd2UgZG9uJ3QgZG93bmxvYWQgZWxlbWVudHMgb3V0c2lkZSBvZiBtYXhCb3VuZHNcblx0bWF4Qm91bmRzIDogTC5MYXRMbmdCb3VuZHM7XG5cdGRlZmF1bHRCb3VuZHMgOiBMLkxhdExuZ0JvdW5kcztcblx0ZGVmYXVsdENlbnRlciA6IEwuTGF0TG5nO1xuXG5cdGNvbnN0cnVjdG9yKGNvbmZpZyA6IEdvR29Db25maWcpXG5cdHtcblx0XHR0aGlzLm1heEJvdW5kcyA9IGNvbmZpZy5tYXAubWF4Qm91bmRzO1xuXHRcdHRoaXMuZGVmYXVsdEJvdW5kcyA9IGNvbmZpZy5tYXAuZGVmYXVsdEJvdW5kcztcblx0XHR0aGlzLmRlZmF1bHRDZW50ZXIgPSBjb25maWcubWFwLmRlZmF1bHRDZW50ZXI7XG5cdH1cblxuXHRpbml0aWFsaXplKClcblx0e1xuXHRcdGZvcihsZXQgbWFpbk9wdGlvbklkIG9mIEFwcC50YXhvbm9teU1vZHVsZS5nZXRNYWluT3B0aW9uc0lkc1dpdGhBbGwoKSlcblx0XHR7XG5cdFx0XHR0aGlzLmZ1bGxSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW21haW5PcHRpb25JZF0gPSBudWxsO1xuXHRcdFx0dGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZFttYWluT3B0aW9uSWRdID0gbnVsbDtcblx0XHRcdHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW21haW5PcHRpb25JZF0gPSBmYWxzZTtcblx0XHRcdHRoaXMuY29tcGFjdFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW21haW5PcHRpb25JZF0gPSBmYWxzZTtcblx0XHR9XG5cdH1cdFxuXG5cdGNyZWF0ZUJvdW5kc0Zyb21Mb2NhdGlvbigkbG9jYXRpb24gOiBMLkxhdExuZywgJHJhZGl1cyA9IDEwKVxuXHR7XG5cdFx0bGV0IGRlZ3JlZSA9ICRyYWRpdXMgLyAxMTAgLyAyO1xuXHRcdHRoaXMuZXh0ZW5kZWRCb3VuZHMgPSBMLmxhdExuZ0JvdW5kcyhMLmxhdExuZygkbG9jYXRpb24ubGF0IC0gZGVncmVlLCAkbG9jYXRpb24ubG5nIC0gZGVncmVlKSwgTC5sYXRMbmcoJGxvY2F0aW9uLmxhdCArIGRlZ3JlZSwgJGxvY2F0aW9uLmxuZyArIGRlZ3JlZSkgKTtcblx0XHQvL2NvbnNvbGUubG9nKFwiQ1JFQVRFIEJPVU5EUyBmcm9tIGxvYWN0aW9uXCIsIHRoaXMuZXh0ZW5kZWRCb3VuZHMpO1xuXHRcdC8vaWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMpIEwucmVjdGFuZ2xlKHRoaXMuZXh0ZW5kZWRCb3VuZHMsIHtjb2xvcjogXCJibHVlXCIsIHdlaWdodDogM30pLmFkZFRvKEFwcC5tYXAoKSk7IFxuXHR9XG5cblx0ZXh0ZW5kTWFwQm91bmRzKCRvbGRab29tLCAkbmV3Wm9vbSwgJG51bWJlck1hcmtlclZpc2libGUpXG5cdHtcdFx0XG5cdFx0bGV0IHJhdGlvO1xuXHRcdGlmICgkbmV3Wm9vbSA9PSAkb2xkWm9vbSlcblx0XHR7XG5cdFx0XHRyYXRpbyA9IDAuNS9NYXRoLnBvdygoJG51bWJlck1hcmtlclZpc2libGUvMTAwKSwyKTtcblx0XHRcdHJhdGlvID0gTWF0aC5taW4oMC41LCByYXRpbyk7XG5cdFx0XHRyYXRpbyA9IE1hdGgucm91bmQocmF0aW8qMTApLzEwO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0cmF0aW8gPSAwO1xuXHRcdH1cdFxuXHRcdEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kQm91bmRzKHJhdGlvLCBBcHAubWFwKCkuZ2V0Qm91bmRzKCkpO1xuXHR9XG5cblx0ZXh0ZW5kQm91bmRzKCRyYXRpbyA6IG51bWJlciwgJGJvdW5kcyA6IEwuTGF0TG5nQm91bmRzID0gdGhpcy5leHRlbmRlZEJvdW5kcylcblx0e1x0XHRcblx0XHRpZiAodGhpcy5jdXJyUmV0cmlldmluZ0NvbXBsZXRlKHRydWUpKSB7XG5cdFx0XHR0aGlzLmV4dGVuZGVkQm91bmRzID0gdGhpcy5tYXhCb3VuZHM7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghJGJvdW5kcykgeyBjb25zb2xlLmxvZyhcImJvdW5kcyB1bmNvcnJlY3RcIiwgJGJvdW5kcyk7IHJldHVybjt9XG5cdFx0dGhpcy5leHRlbmRlZEJvdW5kcyA9ICRib3VuZHMucGFkKCRyYXRpbyk7XG5cdH1cblxuXHR1cGRhdGVGaWxsZWRCb3VuZHNBY2NvcmRpbmdUb05ld01haW5PcHRpb25JZCgpXG5cdHtcblx0XHRpZiAoQXBwLmN1cnJNYWluSWQgPT0gJ2FsbCcpXG5cdFx0e1xuXHRcdFx0Ly8gbm90aGluZyB0byBkb1xuXHRcdH1cblx0XHRlbHNlIFxuXHRcdHtcblx0XHRcdC8vIGlmIGZpbGxlYm91bmRzIGZvciBjYXRlZ29yeSAnYWxsJyBjb250YWlucyB0aGUgZmlsbGVkYm91bmQgb2Ygb3RoZXIgY2F0ZWdvcnlcblx0XHRcdC8vIHdlIHNldCBmaWxsZWJvdW5kIGZyb20gb3RoZXIgY2F0ZWdvcnkgdG8gZmlsbGVkQm91bmQgXCJhbGxcIlxuXHRcdFx0dGhpcy50cnlUb0V4dGVuZEZpbGxlZEJvdW5kRnJvbUFsbENhdGVnb3J5KHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmQpO1xuXHRcdFx0dGhpcy50cnlUb0V4dGVuZEZpbGxlZEJvdW5kRnJvbUFsbENhdGVnb3J5KHRoaXMuY29tcGFjdFJlcHJlc2VudGF0aW9uRmlsbGVkQm91bmQpO1xuXHRcdH1cblx0fVxuXG5cdHByaXZhdGUgdHJ5VG9FeHRlbmRGaWxsZWRCb3VuZEZyb21BbGxDYXRlZ29yeSgkZmlsbGVkQm91bmQpXG5cdHtcblx0XHRpZiAoJGZpbGxlZEJvdW5kWydhbGwnXSAmJlxuXHRcdFx0XHQgKCEkZmlsbGVkQm91bmRbQXBwLmN1cnJNYWluSWRdIHx8ICRmaWxsZWRCb3VuZFsnYWxsJ10uY29udGFpbnMoJGZpbGxlZEJvdW5kW0FwcC5jdXJyTWFpbklkXSkgKSlcblx0XHRcdHtcblx0XHRcdFx0JGZpbGxlZEJvdW5kW0FwcC5jdXJyTWFpbklkXSA9ICRmaWxsZWRCb3VuZFsnYWxsJ11cblx0XHRcdH1cblx0fVxuXG5cdC8vIFdhaXQgZnJvbSBhamF4IHJlc3BvbnNlIHRvIHVwZGF0ZSBuZXcgZmlsbGVkQm91bmRzXG5cdHVwZGF0ZUZpbGxlZEJvdW5kc1dpdGhCb3VuZHNSZWNlaXZlZChleHBlY3RlZEJvdW5kIDogTC5MYXRMbmdCb3VuZHMsIG1haW5PcHRpb25JZCA6IG51bWJlcnxzdHJpbmcsIGdldEZ1bGxSZXByZXNlbnRhdGlvbiA6IGJvb2xlYW4pXG5cdHtcblx0XHQvL2NvbnNvbGUubG9nKFwidXBkYXRlRmlsbGVkQm91bmRzV2l0aEJvdW5kc1JlY2VpdmVkXCIsIG1haW5PcHRpb25JZCk7XG5cdFx0aWYgKG1haW5PcHRpb25JZCA9PT0gdW5kZWZpbmVkIHx8IEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pIG1haW5PcHRpb25JZCA9IFwiYWxsXCI7XG5cdFx0aWYoZ2V0RnVsbFJlcHJlc2VudGF0aW9uKSB0aGlzLmZ1bGxSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW21haW5PcHRpb25JZF0gPSBleHBlY3RlZEJvdW5kO1xuXHRcdGVsc2UgdGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZFttYWluT3B0aW9uSWRdID0gZXhwZWN0ZWRCb3VuZDtcblxuXHRcdGlmICh0aGlzLm1heEJvdW5kcyAmJiBleHBlY3RlZEJvdW5kLmNvbnRhaW5zKHRoaXMubWF4Qm91bmRzKSlcblx0XHR7XG5cdFx0XHRpZihnZXRGdWxsUmVwcmVzZW50YXRpb24pIHRoaXMuZnVsbFJlcHJlc2VudGF0aW9uUmV0cmlldmluZ0NvbXBsZXRlW21haW5PcHRpb25JZF0gPSB0cnVlO1xuXHRcdFx0ZWxzZSB0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZVttYWluT3B0aW9uSWRdID0gdHJ1ZTtcblx0XHR9XG5cdH1cblxuXHRwcml2YXRlIGN1cnJGaWxsZWRCb3VuZCgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbikgOiBMLkxhdExuZ0JvdW5kc1xuXHR7IFxuXHRcdGlmICgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKSBcblx0XHRcdHJldHVybiB0aGlzLmZ1bGxSZXByZXNlbnRhdGlvbkZpbGxlZEJvdW5kW0FwcC5jdXJyTWFpbklkXTtcblx0XHRlbHNlXG5cdFx0XHRyZXR1cm4gdGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25GaWxsZWRCb3VuZFtBcHAuY3Vyck1haW5JZF07XG5cdH1cblxuXHRwcml2YXRlIGN1cnJSZXRyaWV2aW5nQ29tcGxldGUoJGdldEZ1bGxSZXByZXNlbnRhdGlvbiA6IGJvb2xlYW4pIDogYm9vbGVhblxuXHR7IFxuXHRcdGlmICgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKSBcblx0XHRcdHJldHVybiB0aGlzLmZ1bGxSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZVtBcHAuY3Vyck1haW5JZF0gfHwgdGhpcy5mdWxsUmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGVbJ2FsbCddO1xuXHRcdGVsc2Vcblx0XHRcdHJldHVybiB0aGlzLmNvbXBhY3RSZXByZXNlbnRhdGlvblJldHJpZXZpbmdDb21wbGV0ZVtBcHAuY3Vyck1haW5JZF0gfHwgdGhpcy5jb21wYWN0UmVwcmVzZW50YXRpb25SZXRyaWV2aW5nQ29tcGxldGVbJ2FsbCddO1xuXHR9XG5cblx0Y2FsY3VsYXRlRnJlZUJvdW5kcygkZ2V0RnVsbFJlcHJlc2VudGF0aW9uID0gZmFsc2UpXG5cdHtcblx0XHRsZXQgZnJlZUJvdW5kcyA9IFtdO1xuXHRcdGxldCBleHBlY3RlZEJvdW5kcztcblxuXHRcdC8vIGlmIHdlIGFscmVhZHkgY29tcGxldGUgdGhlIHJldHJpZXZpbmcgKGkuZS4gYWxsIGVsZW1lbnQgYXJlIGFscmVhZHkgcmVjZWl2ZWQpXG5cdFx0aWYgKHRoaXMuY3VyclJldHJpZXZpbmdDb21wbGV0ZSgkZ2V0RnVsbFJlcHJlc2VudGF0aW9uKSkgcmV0dXJuIHsgc3RhdHVzOiBcImFsbFJldHJpZXZlZFwiLCBcImZyZWVCb3VuZHNcIiA6IG51bGwsIFwiZXhwZWN0ZWRGaWxsQm91bmRzXCIgOiBudWxsIH07XG5cblx0XHRsZXQgY3VyckZpbGxlZEJvdW5kID0gdGhpcy5jdXJyRmlsbGVkQm91bmQoJGdldEZ1bGxSZXByZXNlbnRhdGlvbik7XG5cblx0XHQvL2NvbnNvbGUubG9nKFwiY2FsY3VsYXRlRnJlZWJvdW5kcyBleHRlbmRlZEJvdW5kcyA9IFwiLCB0aGlzLmV4dGVuZGVkQm91bmRzKTtcblxuXHRcdC8vaWYgKGN1cnJGaWxsZWRCb3VuZCkgTC5yZWN0YW5nbGUoY3VyckZpbGxlZEJvdW5kLCB7Y29sb3I6IFwicmVkXCIsIHdlaWdodDogM30pLmFkZFRvKEFwcC5tYXAoKSk7IFxuXHRcdC8vaWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMpIEwucmVjdGFuZ2xlKHRoaXMuZXh0ZW5kZWRCb3VuZHMsIHtjb2xvcjogXCJibHVlXCIsIHdlaWdodDogM30pLmFkZFRvKEFwcC5tYXAoKSk7IFxuXG5cdFx0bGV0IGZyZWVCb3VuZDEsIGZyZWVCb3VuZDIsIGZyZWVCb3VuZDMsIGZyZWVCb3VuZDQ7XG5cblx0XHRpZiAoIWN1cnJGaWxsZWRCb3VuZCB8fCAhY3VyckZpbGxlZEJvdW5kLmludGVyc2VjdHModGhpcy5leHRlbmRlZEJvdW5kcykpXG5cdFx0e1xuXHRcdFx0Ly8gZmlyc3QgaW5pdGlhbGl6YXRpb24gb3Igbm8gaW50ZXJzZWN0aW9uXG5cdFx0XHRmcmVlQm91bmRzLnB1c2godGhpcy5leHRlbmRlZEJvdW5kcyk7XG5cdFx0XHRleHBlY3RlZEJvdW5kcyA9IHRoaXMuZXh0ZW5kZWRCb3VuZHM7XG5cdFx0fVx0XHRcblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYgKCFjdXJyRmlsbGVkQm91bmQuY29udGFpbnModGhpcy5leHRlbmRlZEJvdW5kcykpXG5cdFx0XHR7XG5cdFx0XHRcdGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmNvbnRhaW5zKGN1cnJGaWxsZWRCb3VuZCkpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBleHRlbmRlZCBjb250YWlucyBmaWxsZWRib3VuZHNcdFxuXHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aFdlc3QoKSwgY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoRWFzdCgpICk7XG5cdFx0XHRcdFx0ZnJlZUJvdW5kMiA9IEwubGF0TG5nQm91bmRzKCBmcmVlQm91bmQxLmdldE5vcnRoRWFzdCgpXHRcdFx0XHQgLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoRWFzdCgpICk7XG5cdFx0XHRcdFx0ZnJlZUJvdW5kMyA9IEwubGF0TG5nQm91bmRzKCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGhFYXN0KClcdCAsIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGhXZXN0KCkgKTtcblx0XHRcdFx0XHRmcmVlQm91bmQ0ID0gTC5sYXRMbmdCb3VuZHMoIGZyZWVCb3VuZDEuZ2V0U291dGhXZXN0KClcdFx0XHRcdCAsIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aFdlc3QoKSApO1xuXG5cdFx0XHRcdFx0ZXhwZWN0ZWRCb3VuZHMgPSB0aGlzLmV4dGVuZGVkQm91bmRzO1xuXHRcdFx0XHRcdGZyZWVCb3VuZHMucHVzaChmcmVlQm91bmQxLGZyZWVCb3VuZDIsIGZyZWVCb3VuZDMsIGZyZWVCb3VuZDQpO1x0XHRcdFx0XHRcblx0XHRcdFx0fVxuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcblx0XHRcdFx0XHQvLyBleHRlbmRlZCBjcm9zcyBvdmVyIGZpbGxlZFxuXHRcdFx0XHRcdGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmdldFdlc3QoKSA+IGN1cnJGaWxsZWRCb3VuZC5nZXRXZXN0KCkgJiYgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXRFYXN0KCkgPCBjdXJyRmlsbGVkQm91bmQuZ2V0RWFzdCgpKVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoKCkgPCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGgoKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Ly8gZXh0ZW5kZWQgY2VudGVyZWQgc291dGggZnJvbSBmaWxsZWRCb3VuZHNcblx0XHRcdFx0XHRcdFx0ZnJlZUJvdW5kMSA9IEwubGF0TG5nQm91bmRzKCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoV2VzdCgpLCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGhFYXN0KCkgKTtcdFx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHQvLyBleHRlbmRlZCBjZW50ZXJlZCBzb3V0aCBmcm9tIGZpbGxlZEJvdW5kc1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQxID0gTC5sYXRMbmdCb3VuZHMoIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0Tm9ydGhXZXN0KCksIGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aEVhc3QoKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmdldFdlc3QoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXRXZXN0KCkpXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGgoKSA+IGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aCgpICYmIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0Tm9ydGgoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aCgpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHQvLyBleHRlbmRlZCBjZW50ZXJlZCBlYXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aFdlc3QoKSwgY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoV2VzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlIGlmICh0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoKCkgPCBjdXJyRmlsbGVkQm91bmQuZ2V0U291dGgoKSlcblx0XHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdFx0Ly8gZXh0ZW5kZWRib3VuZHMgc291dGhXZXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoRWFzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoV2VzdCgpICk7XG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDIgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoV2VzdCgpLCBmcmVlQm91bmQxLmdldE5vcnRoV2VzdCgpICk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkYm91bmRzIG5vcnRoV2VzdCBmcm9tIGZpbGxlZEJvdW5kc1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQxID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aEVhc3QoKSwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aFdlc3QoKSApO1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQyID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aFdlc3QoKSwgZnJlZUJvdW5kMS5nZXRTb3V0aFdlc3QoKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0U291dGgoKSA+IGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aCgpICYmIHRoaXMuZXh0ZW5kZWRCb3VuZHMuZ2V0Tm9ydGgoKSA8IGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aCgpKVxuXHRcdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0XHQvLyBleHRlbmRlZCBjZW50ZXJlZCB3ZXN0IGZyb20gZmlsbGVkQm91bmRzXG5cdFx0XHRcdFx0XHRcdGZyZWVCb3VuZDEgPSBMLmxhdExuZ0JvdW5kcyggY3VyckZpbGxlZEJvdW5kLmdldE5vcnRoRWFzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoRWFzdCgpICk7IFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZSBpZiAodGhpcy5leHRlbmRlZEJvdW5kcy5nZXRTb3V0aCgpIDwgY3VyckZpbGxlZEJvdW5kLmdldFNvdXRoKCkpXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkYm91bmRzIHNvdXRoZWFzdCBmcm9tIGZpbGxlZEJvdW5kc1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQxID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aFdlc3QoKSwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXRTb3V0aEVhc3QoKSApO1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQyID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aEVhc3QoKSwgZnJlZUJvdW5kMS5nZXROb3J0aEVhc3QoKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0e1x0XG5cdFx0XHRcdFx0XHRcdC8vIGV4dGVuZGVkYm91bmRzIG5vcnRoRWFzdCBmcm9tIGZpbGxlZEJvdW5kc1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQxID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXROb3J0aFdlc3QoKSwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aEVhc3QoKSApO1xuXHRcdFx0XHRcdFx0XHRmcmVlQm91bmQyID0gTC5sYXRMbmdCb3VuZHMoIGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aEVhc3QoKSwgZnJlZUJvdW5kMS5nZXRTb3V0aEVhc3QoKSApO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cdFx0XHRcdFx0XG5cblx0XHRcdFx0XHRmcmVlQm91bmRzLnB1c2goZnJlZUJvdW5kMSk7XG5cdFx0XHRcdFx0aWYgKGZyZWVCb3VuZDIpIGZyZWVCb3VuZHMucHVzaChmcmVlQm91bmQyKTtcdFx0XG5cblx0XHRcdFx0XHRleHBlY3RlZEJvdW5kcyA9IEwubGF0TG5nQm91bmRzKCBcblx0XHRcdFx0XHRcdEwubGF0TG5nKFxuXHRcdFx0XHRcdFx0XHRNYXRoLm1heChjdXJyRmlsbGVkQm91bmQuZ2V0Tm9ydGgoKSwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXROb3J0aCgpKSxcblx0XHRcdFx0XHRcdFx0TWF0aC5tYXgoY3VyckZpbGxlZEJvdW5kLmdldEVhc3QoKSwgdGhpcy5leHRlbmRlZEJvdW5kcy5nZXRFYXN0KCkpXG5cdFx0XHRcdFx0XHQpLFxuXHRcdFx0XHRcdFx0TC5sYXRMbmcoXG5cdFx0XHRcdFx0XHRcdE1hdGgubWluKGN1cnJGaWxsZWRCb3VuZC5nZXRTb3V0aCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFNvdXRoKCkpLFxuXHRcdFx0XHRcdFx0XHRNYXRoLm1pbihjdXJyRmlsbGVkQm91bmQuZ2V0V2VzdCgpLCB0aGlzLmV4dGVuZGVkQm91bmRzLmdldFdlc3QoKSkgXG5cdFx0XHRcdFx0XHQpXHRcdFx0XHRcdFx0XG5cdFx0XHRcdFx0KTtcdFx0XG5cdFx0XHRcdH1cdFx0XHRcdFx0XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdC8vIGV4dGVuZGVkIGJvdW5kcyBpbmNsdWRlZCBpbiBmaWxsZWRib3VuZHNcblx0XHRcdFx0cmV0dXJuIHsgXCJzdGF0dXNcIjogXCJpbmNsdWRlZFwiLCBcImZyZWVCb3VuZHNcIiA6IG51bGwsIFwiZXhwZWN0ZWRGaWxsQm91bmRzXCIgOiBjdXJyRmlsbGVkQm91bmQgfTtcblx0XHRcdH1cblx0XHR9XHRcdFxuXG5cdFx0cmV0dXJuIHsgXCJmcmVlQm91bmRzXCIgOiBmcmVlQm91bmRzLCBcImV4cGVjdGVkRmlsbEJvdW5kc1wiIDogZXhwZWN0ZWRCb3VuZHMsIFwic3RhdHVzXCI6IFwic3VjY2Vzc1wifTtcblx0fVxufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IEFwcERhdGFUeXBlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHVuc2x1Z2lmeSB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuXG5leHBvcnQgY2xhc3MgRG9jdW1lbnRUaXRsZU1vZHVsZVxue1xuICB1cGRhdGVEb2N1bWVudFRpdGxlKG9wdGlvbnMgOiBhbnkgPSB7fSlcbiAge1xuICAgIC8vIGNvbnNvbGUubG9nKFwidXBkYXRlRG9jdW1lbnRUaXRsZVwiLCBBcHAuc3RhdGVNYW5hZ2VyLnN0YXRlRWxlbWVudElkKTtcblxuICAgIGxldCB0aXRsZSA6IHN0cmluZztcbiAgICBsZXQgZWxlbWVudE5hbWUgOiBzdHJpbmc7XG5cbiAgICBpZiAoIChvcHRpb25zICYmIG9wdGlvbnMuaWQpIHx8IEFwcC5zdGF0ZU1hbmFnZXIuc3RhdGVFbGVtZW50SWQpIFxuICAgIHsgICAgICBcbiAgICAgIGxldCBlbGVtZW50ID0gQXBwLmVsZW1lbnRCeUlkKEFwcC5zdGF0ZU1hbmFnZXIuc3RhdGVFbGVtZW50SWQpO1xuICAgICAgaWYgKCFlbGVtZW50KSByZXR1cm47XG4gICAgICBlbGVtZW50TmFtZSA9IGNhcGl0YWxpemUoZWxlbWVudCA/IGVsZW1lbnQubmFtZSA6ICcnKTtcbiAgICB9XG5cbiAgICBpZiAoQXBwLmRhdGFUeXBlID09IEFwcERhdGFUeXBlLlNlYXJjaFJlc3VsdHMpXG4gICAge1xuICAgICAgdGl0bGUgPSAnUmVjaGVyY2hlIDogJyArIEFwcC5zZWFyY2hCYXJDb21wb25lbnQuZ2V0Q3VyclNlYXJjaFRleHQoKTsgIFxuICAgIH1cbiAgICBlbHNlIGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5MaXN0KVxuICAgIHsgICAgXG4gICAgICB0aXRsZSA9ICdMaXN0ZSBkZXMgJyArIEFwcC5jb25maWcudGV4dC5lbGVtZW50UGx1cmFsICsgJyAnICsgdGhpcy5nZXRMb2NhdGlvbkFkZHJlc3NGb3JUaXRsZSgpOyAgICBcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgIHN3aXRjaCAoQXBwLnN0YXRlKVxuICAgICAge1xuICAgICAgICBjYXNlIEFwcFN0YXRlcy5TaG93RWxlbWVudDogICAgICAgIFxuICAgICAgICAgIHRpdGxlID0gY2FwaXRhbGl6ZShBcHAuY29uZmlnLnRleHQuZWxlbWVudCkgKyAnIC0gJyArIGVsZW1lbnROYW1lO1xuICAgICAgICAgIGJyZWFrOyAgXG5cbiAgICAgICAgY2FzZSBBcHBTdGF0ZXMuU2hvd0VsZW1lbnRBbG9uZTpcbiAgICAgICAgICB0aXRsZSA9IGNhcGl0YWxpemUoQXBwLmNvbmZpZy50ZXh0LmVsZW1lbnQpICsgJyAtICcgKyBlbGVtZW50TmFtZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEFwcFN0YXRlcy5TaG93RGlyZWN0aW9uczpcbiAgICAgICAgICB0aXRsZSA9ICdJdGluw6lyYWlyZSAtICcgKyBlbGVtZW50TmFtZTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIEFwcFN0YXRlcy5Ob3JtYWw6ICAgICAgXG4gICAgICAgICAgdGl0bGUgPSAnQ2FydGUgZGVzICcgKyBBcHAuY29uZmlnLnRleHQuZWxlbWVudFBsdXJhbCArICcgJyArIHRoaXMuZ2V0TG9jYXRpb25BZGRyZXNzRm9yVGl0bGUoKTsgICAgICBcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBkb2N1bWVudC50aXRsZSA9IHRpdGxlOyAgXG4gIH07XG5cbiAgcHJpdmF0ZSBnZXRMb2NhdGlvbkFkZHJlc3NGb3JUaXRsZSgpXG4gIHtcbiAgICBpZiAoQXBwLmdlb2NvZGVyLmdldExvY2F0aW9uQWRkcmVzcygpKVxuICAgIHtcbiAgICAgIHJldHVybiBcIi0gXCIgKyBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb25BZGRyZXNzKCk7XG4gICAgfVxuICAgIHJldHVybiBcIi0gRnJhbmNlXCI7XG4gIH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5cbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvZXZlbnQuY2xhc3NcIjtcbmltcG9ydCB7IHNsdWdpZnksIGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBNb2RlcywgQXBwRGF0YVR5cGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgRWxlbWVudCwgSGlzdG9yeVN0YXRlLCBWaWV3UG9ydCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCAqIGFzIENvb2tpZXMgZnJvbSBcIi4uLy4uL3V0aWxzL2Nvb2tpZXNcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSBsZXQgJDtcbmRlY2xhcmUgbGV0IFJvdXRpbmc7XG5cbiQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKClcbntcdFxuICAgLy8gR2V0cyBoaXN0b3J5IHN0YXRlIGZyb20gYnJvd3NlclxuICAgd2luZG93Lm9ucG9wc3RhdGUgPSAoZXZlbnQgOiBQb3BTdGF0ZUV2ZW50KSA9PlxuICAge1xuXHQgIC8vY29uc29sZS5sb2coXCJcXG5cXG5PbnBvcFN0YXRlIFwiLCBldmVudC5zdGF0ZS5maWx0ZXJzKTtcblx0ICBsZXQgaGlzdG9yeXN0YXRlIDogSGlzdG9yeVN0YXRlID0gZXZlbnQuc3RhdGU7XG5cdCAgaWYgKCFoaXN0b3J5c3RhdGUpIHJldHVybjtcblx0ICAvLyB0cmFuc2Zvcm0ganNvblZpZXdwb3J0IGludG8gVmlld1BvcnQgb2JqZWN0IChpZiB3ZSBkb24ndCBkbyBzbyxcblx0ICAvLyB0aGUgVmlld1BvcnQgbWV0aG9kcyB3aWxsIG5vdCBiZSBhY2Nlc3NpYmxlKVxuXHQgIGhpc3RvcnlzdGF0ZS52aWV3cG9ydCA9ICQuZXh0ZW5kKG5ldyBWaWV3UG9ydCgpLCBldmVudC5zdGF0ZS52aWV3cG9ydCk7XG5cdCAgQXBwLmhpc3RvcnlTdGF0ZU1hbmFnZXIubG9hZChldmVudC5zdGF0ZSwgdHJ1ZSk7XG5cdH07XG59KTtcblxuZXhwb3J0IGNsYXNzIEhpc3RvcnlNb2R1bGVcbntcblx0Y29uc3RydWN0b3IoKSB7IH0gIFxuXG5cdHVwZGF0ZUN1cnJTdGF0ZShvcHRpb25zPylcblx0e1xuXHRcdGlmICghaGlzdG9yeS5zdGF0ZSkgdGhpcy5wdXNoTmV3U3RhdGUoKTtcblx0XHRlbHNlIHRoaXMudXBkYXRlSGlzdG9yeShmYWxzZSwgb3B0aW9ucyk7XG5cdH07XG5cblx0cHVzaE5ld1N0YXRlKG9wdGlvbnM/KVxuXHR7XG5cdFx0aWYgKGhpc3Rvcnkuc3RhdGUgPT09IG51bGwpIHRoaXMudXBkYXRlSGlzdG9yeShmYWxzZSwgb3B0aW9ucyk7XG5cdFx0ZWxzZSB0aGlzLnVwZGF0ZUhpc3RvcnkodHJ1ZSwgb3B0aW9ucyk7XHRcdFxuXHR9O1xuXG5cdHByaXZhdGUgdXBkYXRlSGlzdG9yeSgkcHVzaFN0YXRlIDogYm9vbGVhbiwgJG9wdGlvbnM/IDogYW55KVxuXHR7XG5cdFx0aWYgKCFBcHAuY29uZmlnLmdlbmVyYWwuYWN0aXZhdGVIaXN0b3J5U3RhdGVBbmRSb3V0aW5nKSByZXR1cm47XG5cdFx0aWYgKEFwcC5tb2RlID09IHVuZGVmaW5lZCkgcmV0dXJuO1xuXG5cdFx0JG9wdGlvbnMgPSAkb3B0aW9ucyB8fCB7fTtcblx0XHRsZXQgaGlzdG9yeVN0YXRlID0gbmV3IEhpc3RvcnlTdGF0ZTtcblx0XHRoaXN0b3J5U3RhdGUubW9kZSA9IEFwcC5tb2RlO1xuXHRcdGhpc3RvcnlTdGF0ZS5zdGF0ZSA9IEFwcC5zdGF0ZTtcblx0XHRoaXN0b3J5U3RhdGUuZGF0YVR5cGUgPSBBcHAuZGF0YVR5cGU7XG5cdFx0aGlzdG9yeVN0YXRlLmFkZHJlc3MgPSBBcHAuZ2VvY29kZXIuZ2V0TG9jYXRpb25TbHVnKCk7XG5cdFx0aGlzdG9yeVN0YXRlLnZpZXdwb3J0ID0gQXBwLm1hcENvbXBvbmVudC52aWV3cG9ydDtcblx0XHRoaXN0b3J5U3RhdGUuaWQgPSBBcHAuc3RhdGVNYW5hZ2VyLnN0YXRlRWxlbWVudElkIHx8ICRvcHRpb25zLmlkO1xuXHRcdGhpc3RvcnlTdGF0ZS5maWx0ZXJzID0gQXBwLmZpbHRlclJvdXRpbmdNb2R1bGUuZ2V0RmlsdGVyc1RvU3RyaW5nKCk7XG5cdFx0aGlzdG9yeVN0YXRlLnRleHQgPSBBcHAuc2VhcmNoQmFyQ29tcG9uZW50LmdldEN1cnJTZWFyY2hUZXh0KCk7XG5cblx0XHQvLyBpZiAoJHB1c2hTdGF0ZSkgY29uc29sZS5sb2coXCJORVcgU2F0ZVwiLCBBcHBTdGF0ZXNbaGlzdG9yeVN0YXRlLnN0YXRlXSk7XG5cdFx0Ly8gZWxzZSBjb25zb2xlLmxvZyhcIlVQREFURSBTdGF0ZVwiLCBBcHBTdGF0ZXNbaGlzdG9yeVN0YXRlLnN0YXRlXSk7XG5cblx0XHRsZXQgcm91dGUgPSB0aGlzLmdlbmVyYXRlUm91dGUoaGlzdG9yeVN0YXRlKTtcblxuXHRcdGlmICghcm91dGUpIHJldHVybjtcblxuXHRcdGlmICgkcHVzaFN0YXRlKSBoaXN0b3J5LnB1c2hTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCByb3V0ZSk7XG5cdFx0ZWxzZSBoaXN0b3J5LnJlcGxhY2VTdGF0ZShoaXN0b3J5U3RhdGUsICcnLCByb3V0ZSk7XG5cblx0XHRpZiAoQXBwLmNvbmZpZy5tYXAuc2F2ZVZpZXdwb3J0SW5Db29raWVzKVxuXHRcdHtcblx0XHRcdENvb2tpZXMuY3JlYXRlQ29va2llKCd2aWV3cG9ydCcsaGlzdG9yeVN0YXRlLnZpZXdwb3J0LCAwLjA0KTsgLy8gcmVtZW1iZXIgdGhpcyBvbmx5IGZvciAxaG91clxuXHRcdFx0Q29va2llcy5jcmVhdGVDb29raWUoJ2FkZHJlc3MnLGhpc3RvcnlTdGF0ZS5hZGRyZXNzLCAwLjA0KTsgLy8gcmVtZW1iZXIgdGhpcyBvbmx5IGZvciAxaG91clxuXHRcdH1cblx0fTtcblxuXHRwcml2YXRlIGdlbmVyYXRlUm91dGUoaGlzdG9yeVN0YXRlIDogSGlzdG9yeVN0YXRlKVxuXHR7XG5cdFx0bGV0IHJvdXRlO1xuXHRcdGxldCBtb2RlID0gQXBwLm1vZGUgPT0gQXBwTW9kZXMuTWFwID8gJ2NhcnRlJyA6ICdsaXN0ZSc7XG5cdFx0bGV0IGFkZHJlc3MgPSBoaXN0b3J5U3RhdGUuYWRkcmVzcztcblx0XHRsZXQgdmlld3BvcnQgPSBoaXN0b3J5U3RhdGUudmlld3BvcnQ7XG5cdFx0bGV0IGFkZHJlc3NBbmRWaWV3cG9ydCA9ICcnO1xuXHRcdGlmIChhZGRyZXNzKSBhZGRyZXNzQW5kVmlld3BvcnQgKz0gYWRkcmVzcztcblx0XHQvLyBpbiBNYXAgTW9kZSB3ZSBhZGQgdmlld3BvcnRcblx0XHQvLyBpbiBMaXN0IG1vZGUgd2UgYWRkIHZpZXdwb3J0IG9ubHkgd2hlbiBubyBhZGRyZXNzIHByb3ZpZGVkXG5cdFx0aWYgKHZpZXdwb3J0ICYmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXAgfHwgIWFkZHJlc3MpKSBhZGRyZXNzQW5kVmlld3BvcnQgKz0gdmlld3BvcnQudG9TdHJpbmcoKTtcblxuXHRcdGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cyAmJiBBcHAuc3RhdGUgPT0gQXBwU3RhdGVzLk5vcm1hbClcblx0XHR7XG5cdFx0XHRyb3V0ZSA9IEFwcC5yb3V0ZXJNb2R1bGUuZ2VuZXJhdGUoJ3NlYXJjaCcsIHsgbW9kZSA6ICBtb2RlLCB0ZXh0IDogaGlzdG9yeVN0YXRlLnRleHQgfSk7XHRcblx0XHR9XHRcdFxuXHRcdGVsc2UgaWYgKEFwcC5tb2RlID09IEFwcE1vZGVzLkxpc3QpXG5cdFx0e1xuXHRcdFx0Ly8gaW4gbGlzdCBtb2RlIHdlIGRvbid0IGNhcmUgYWJvdXQgc3RhdGVcblx0XHRcdHJvdXRlID0gQXBwLnJvdXRlck1vZHVsZS5nZW5lcmF0ZSgnbm9ybWFsJywgeyBtb2RlIDogIG1vZGUsIGFkZHJlc3NBbmRWaWV3cG9ydDogYWRkcmVzc0FuZFZpZXdwb3J0IH0pO1x0XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRzd2l0Y2ggKEFwcC5zdGF0ZSlcblx0XHRcdHtcblx0XHRcdFx0Y2FzZSBBcHBTdGF0ZXMuTm9ybWFsOlx0XG5cdFx0XHRcdFx0cm91dGUgPSBBcHAucm91dGVyTW9kdWxlLmdlbmVyYXRlKCdub3JtYWwnLCB7IG1vZGUgOiAgbW9kZSwgYWRkcmVzc0FuZFZpZXdwb3J0OiBhZGRyZXNzQW5kVmlld3BvcnQgfSk7XHRcblx0XHRcdFx0XHRicmVhaztcblxuXHRcdFx0XHRjYXNlIEFwcFN0YXRlcy5TaG93RWxlbWVudDpcdFxuXHRcdFx0XHRjYXNlIEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lOlxuXHRcdFx0XHRjYXNlIEFwcFN0YXRlcy5TaG93RGlyZWN0aW9uczpcblx0XHRcdFx0XHRpZiAoIWhpc3RvcnlTdGF0ZS5pZCkgcmV0dXJuO1xuXHRcdFx0XHRcdGxldCBlbGVtZW50ID0gQXBwLmVsZW1lbnRCeUlkKGhpc3RvcnlTdGF0ZS5pZCk7XG5cdFx0XHRcdFx0aWYgKCFlbGVtZW50KSByZXR1cm47XG5cblx0XHRcdFx0XHRpZiAoQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RGlyZWN0aW9ucylcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRyb3V0ZSA9IEFwcC5yb3V0ZXJNb2R1bGUuZ2VuZXJhdGUoJ3Nob3dfZGlyZWN0aW9ucycsIHsgbmFtZSA6ICBjYXBpdGFsaXplKHNsdWdpZnkoZWxlbWVudC5uYW1lKSksIGlkIDogZWxlbWVudC5pZCwgYWRkcmVzc0FuZFZpZXdwb3J0OiBhZGRyZXNzQW5kVmlld3BvcnQgfSk7XHRcblx0XHRcdFx0XHR9XHRcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0cm91dGUgPSBBcHAucm91dGVyTW9kdWxlLmdlbmVyYXRlKCdzaG93X2VsZW1lbnQnLCB7IG5hbWUgOiAgY2FwaXRhbGl6ZShzbHVnaWZ5KGVsZW1lbnQubmFtZSkpLCBpZCA6IGVsZW1lbnQuaWQsIGFkZHJlc3NBbmRWaWV3cG9ydDogYWRkcmVzc0FuZFZpZXdwb3J0IH0pO1x0XG5cdFx0XHRcdFx0fVx0XHRcdFx0XHRcdFxuXHRcdFx0XHRcdGJyZWFrO1x0XHRcblx0XHRcdH1cdFx0XG5cdFx0fVxuXG5cdFx0aWYgKHJvdXRlICYmIGhpc3RvcnlTdGF0ZS5maWx0ZXJzKSByb3V0ZSArPSAnP2NhdD0nICsgaGlzdG9yeVN0YXRlLmZpbHRlcnM7XG5cblx0XHRyZXR1cm4gcm91dGU7XG5cdH07XG59IiwiaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcERhdGFUeXBlLCBBcHBNb2RlcyB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBIaXN0b3J5U3RhdGUsIFZpZXdQb3J0IH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jbGFzc2VzJzsgXG5cbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZGVjbGFyZSB2YXIgcm91dGllOiBhbnksICQ7XG5cbmV4cG9ydCBjbGFzcyBSb3V0ZXJNb2R1bGVcbntcblx0ZmlsdGVyc1NlcmlhbGl6ZWRQYXJhbSA6IHN0cmluZyA9ICcnO1xuXG5cdGNvbnN0cnVjdG9yKClcblx0e1xuXHRcdHJvdXRpZSh7XG5cdFx0XHQnZ2VvbG9jYWxpemUgLzptb2RlL2F1dG91ci1kZS1tb2knOiAobW9kZSkgPT5cblx0XHRcdHtcblx0XHRcdFx0bGV0IGluaXRpYWxTdGF0ZSA9IG5ldyBIaXN0b3J5U3RhdGUoKTtcblxuXHRcdFx0XHRpbml0aWFsU3RhdGUuZGF0YVR5cGUgPSBBcHBEYXRhVHlwZS5BbGw7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5tb2RlID0gbW9kZSA9PSAnY2FydGUnID8gQXBwTW9kZXMuTWFwIDogQXBwTW9kZXMuTGlzdDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnN0YXRlID0gQXBwU3RhdGVzLk5vcm1hbDtcdFx0XHRcdFxuXHRcdFx0XHRpbml0aWFsU3RhdGUuYWRkcmVzcyA9ICdnZW9sb2NhbGl6ZSc7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5maWx0ZXJzID0gdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtO1xuXG5cdFx0XHRcdHRoaXMuc3RhcnRTdGF0ZShpbml0aWFsU3RhdGUpO1x0XHRcdFxuXHRcdFx0fSxcblx0XHRcdCdub3JtYWwgLzptb2RlLzphZGRyZXNzQW5kVmlld3BvcnQ/JzogKG1vZGUsIGFkZHJlc3NBbmRWaWV3cG9ydCA9ICcnKSA9PlxuXHRcdFx0e1xuXHRcdFx0XHRsZXQgaW5pdGlhbFN0YXRlID0gbmV3IEhpc3RvcnlTdGF0ZSgpO1xuXHRcdFx0XHRsZXQgcGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0ID0gdGhpcy5wYXJzZUFkZHJlc3NWaWV3cG9ydChhZGRyZXNzQW5kVmlld3BvcnQpO1xuXG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5kYXRhVHlwZSA9IEFwcERhdGFUeXBlLkFsbDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLm1vZGUgPSBtb2RlID09ICdjYXJ0ZScgPyBBcHBNb2Rlcy5NYXAgOiBBcHBNb2Rlcy5MaXN0O1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuc3RhdGUgPSBBcHBTdGF0ZXMuTm9ybWFsO1x0XHRcdFx0XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5hZGRyZXNzID0gcGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0WzBdO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUudmlld3BvcnQgPSBuZXcgVmlld1BvcnQoKS5mcm9tU3RyaW5nKHBhcnNlZEFkZHJlc3NBbmRWaWV3cG9ydFsxXSk7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5maWx0ZXJzID0gdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtO1xuXG5cdFx0XHRcdHRoaXMuc3RhcnRTdGF0ZShpbml0aWFsU3RhdGUpO1xuXHRcdFx0fSxcblx0XHRcdCdzaG93X2VsZW1lbnQgL2ZpY2hlLzpuYW1lLzppZC86YWRkcmVzc0FuZFZpZXdwb3J0Pyc6IChuYW1lLCBpZCwgYWRkcmVzc0FuZFZpZXdwb3J0ID0gJycpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGxldCBpbml0aWFsU3RhdGUgPSBuZXcgSGlzdG9yeVN0YXRlKCk7XG5cdFx0XHRcdGxldCBwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnQgPSB0aGlzLnBhcnNlQWRkcmVzc1ZpZXdwb3J0KGFkZHJlc3NBbmRWaWV3cG9ydCk7XG5cblx0XHRcdFx0aW5pdGlhbFN0YXRlLmRhdGFUeXBlID0gQXBwRGF0YVR5cGUuQWxsO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUubW9kZSA9IEFwcE1vZGVzLk1hcDtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnN0YXRlID0gQXBwU3RhdGVzLlNob3dFbGVtZW50QWxvbmU7XHRcdFx0XHRcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmFkZHJlc3MgPSBwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnRbMF07XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS52aWV3cG9ydCA9IG5ldyBWaWV3UG9ydCgpLmZyb21TdHJpbmcocGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0WzFdKTtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmlkID0gaWQ7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5maWx0ZXJzID0gdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtO1xuXG5cdFx0XHRcdHRoaXMuc3RhcnRTdGF0ZShpbml0aWFsU3RhdGUpO1xuXHRcdFx0fSxcblx0XHRcdCdzaG93X2RpcmVjdGlvbnMgL2l0aW5lcmFpcmUvOm5hbWUvOmlkLzphZGRyZXNzQW5kVmlld3BvcnQ/JzogKG5hbWUsIGlkLCBhZGRyZXNzQW5kVmlld3BvcnQgPSAnJykgPT5cblx0XHRcdHtcblx0XHRcdFx0bGV0IGluaXRpYWxTdGF0ZSA9IG5ldyBIaXN0b3J5U3RhdGUoKTtcblx0XHRcdFx0bGV0IHBhcnNlZEFkZHJlc3NBbmRWaWV3cG9ydCA9IHRoaXMucGFyc2VBZGRyZXNzVmlld3BvcnQoYWRkcmVzc0FuZFZpZXdwb3J0KTtcblxuXHRcdFx0XHRpbml0aWFsU3RhdGUuZGF0YVR5cGUgPSBBcHBEYXRhVHlwZS5BbGw7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5tb2RlID0gQXBwTW9kZXMuTWFwO1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuc3RhdGUgPSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnM7XHRcdFx0XHRcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmFkZHJlc3MgPSBwYXJzZWRBZGRyZXNzQW5kVmlld3BvcnRbMF07XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS52aWV3cG9ydCA9IG5ldyBWaWV3UG9ydCgpLmZyb21TdHJpbmcocGFyc2VkQWRkcmVzc0FuZFZpZXdwb3J0WzFdKTtcblx0XHRcdFx0aW5pdGlhbFN0YXRlLmlkID0gaWQ7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5maWx0ZXJzID0gdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtO1xuXG5cdFx0XHRcdHRoaXMuc3RhcnRTdGF0ZShpbml0aWFsU3RhdGUpO1x0XG5cdFx0XHR9LFxuXHRcdFx0J3NlYXJjaCAvOm1vZGUvcmVjaGVyY2hlLzp0ZXh0JzogKG1vZGUsIHRleHQpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGxldCBpbml0aWFsU3RhdGUgPSBuZXcgSGlzdG9yeVN0YXRlKCk7XG5cblx0XHRcdFx0aW5pdGlhbFN0YXRlLmRhdGFUeXBlID0gQXBwRGF0YVR5cGUuU2VhcmNoUmVzdWx0cztcblx0XHRcdFx0aW5pdGlhbFN0YXRlLm1vZGUgPSBBcHBNb2Rlcy5NYXA7XG5cdFx0XHRcdGluaXRpYWxTdGF0ZS5zdGF0ZSA9IEFwcFN0YXRlcy5Ob3JtYWw7XHRcdFx0XHRcblx0XHRcdFx0aW5pdGlhbFN0YXRlLnRleHQgPSB0ZXh0O1xuXHRcdFx0XHRpbml0aWFsU3RhdGUuZmlsdGVycyA9IHRoaXMuZmlsdGVyc1NlcmlhbGl6ZWRQYXJhbTtcblxuXHRcdFx0XHR0aGlzLnN0YXJ0U3RhdGUoaW5pdGlhbFN0YXRlKTtcblx0XHRcdH1cblx0XHR9KTtcdFx0XG5cdH1cblxuXHRsb2FkSW5pdGlhbFN0YXRlKClcblx0e1x0XHRcblx0XHRpZiAoQXBwLmNvbmZpZy5nZW5lcmFsLmFjdGl2YXRlSGlzdG9yeVN0YXRlQW5kUm91dGluZykgXG5cdFx0e1x0XHRcblx0XHRcdC8vIGNoZWNrIEdFVCBwYXJhbWV0ZXJzIGluc2lkZSB0aGUgaGFzaFxuXHRcdFx0bGV0IHNwbGl0ZWQgPSB3aW5kb3cubG9jYXRpb24uaGFzaC5zcGxpdCgnP2NhdD0nKTtcblx0XHRcdFxuXHRcdFx0aWYgKHNwbGl0ZWQubGVuZ3RoID4gMSkgdGhpcy5maWx0ZXJzU2VyaWFsaXplZFBhcmFtID0gc3BsaXRlZFsxXTtcblxuXHRcdFx0bGV0IHJvdXRlSGFzaCA9IHNwbGl0ZWRbMF07XG5cblx0XHRcdC8vIGhhbmRsZSB3cm9uZyBoYXNoXG5cdFx0XHRpZiAoIXJvdXRlSGFzaCB8fCByb3V0ZUhhc2ggPT0gJyMvJyB8fCByb3V0ZUhhc2ggPT0gJyMnKSByb3V0ZUhhc2ggPSAnL2NhcnRlJztcblx0XHRcdHJvdXRpZS5uYXZpZ2F0ZShyb3V0ZUhhc2gpO1xuXG5cdFx0XHQvLyBsZXQgdGhlIGhhc2ggYmVpbmcgY2hhbmdlZCB3aXRoIGEgdGltZU91dFxuXHRcdFx0c2V0VGltZW91dCgoKSA9PiByb3V0aWUucmVsb2FkKCksIDEwKTtcblx0XHR9XG5cdFx0ZWxzZSBcblx0XHR7XG5cdFx0XHRsZXQgaW5pdGlhbEhhc2ggPSB3aW5kb3cubG9jYXRpb24uaGFzaDtcblx0XHRcdC8vIG5hdmlnYXRlIHRvIGRlZmF1bHQgcm91dGVcblx0XHRcdHJvdXRpZS5uYXZpZ2F0ZSgnL2NhcnRlJyk7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHJvdXRpZS5yZWxvYWQoKSwgMTApO1xuXHRcdFx0Ly8gcmVzdG9yZSBpbml0aWFsIGhhc2hcblx0XHRcdHNldFRpbWVvdXQoKCkgPT4gd2luZG93LmxvY2F0aW9uLmhhc2ggPSBpbml0aWFsSGFzaCwgMTAwKTtcblx0XHR9XG5cdH1cblxuXHRnZW5lcmF0ZShyb3V0ZU5hbWUgOiBzdHJpbmcsIG9wdGlvbnM/IDogYW55LCBhYnNvbHV0ZVVybD8gOiBib29sZWFuKVxuXHR7XG5cdFx0cmV0dXJuICcjJyArIHJvdXRpZS5sb29rdXAocm91dGVOYW1lLCBvcHRpb25zKTtcblx0fVxuXG5cdC8vIGFkZHJlc3MgYW5kIHZpZXdwb3J0IGFyZSBqb2luZWQgaW50byBvbmUgc3RyaW5nLCBzZXBlcmF0ZWQgYnkgXCJAXCJcblx0cHJpdmF0ZSBwYXJzZUFkZHJlc3NWaWV3cG9ydCgkYWRkcmVzc1ZpZXdwb3J0KVxuICB7XG4gICAgLy8gcHJlY2F1dGlvbiBpbiBjYXNlIEdFVCBwYXJhbSBzdGlsbCBpbiBoYXNoXG5cdFx0JGFkZHJlc3NWaWV3cG9ydCA9ICRhZGRyZXNzVmlld3BvcnQuc3BsaXQoJz8nKVswXTtcblxuICAgIGxldCBzcGxpdGVkID0gJGFkZHJlc3NWaWV3cG9ydC5zcGxpdCgnQCcpO1xuXG4gICAgaWYgKHNwbGl0ZWQubGVuZ3RoID09IDEpXG4gICAge1xuICAgICAgICByZXR1cm4gWyRhZGRyZXNzVmlld3BvcnQsICcnXTtcbiAgICB9XG4gICAgZWxzZVxuICAgIHtcbiAgICAgICAgcmV0dXJuIHNwbGl0ZWQ7XG4gICAgfSAgXG4gIH1cblxuICBwcml2YXRlIHN0YXJ0U3RhdGUoc3RhdGUgOiBIaXN0b3J5U3RhdGUpXG4gIHtcblx0XHRBcHAuaGlzdG9yeVN0YXRlTWFuYWdlci5sb2FkKHN0YXRlKTtcdFx0XG4gIH1cbn0iLCJpbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tIFwiLi4vLi4vYXBwLm1vZHVsZVwiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciBudW5qdWNrcztcblxuZXhwb3J0IGNsYXNzIFRlbXBsYXRlTW9kdWxlXG57XG5cdGNvbnN0cnVjdG9yKClcblx0e1xuXHRcdC8vIHdlIGNhbiBjb25maWd1cmUgdGhpcyBwYXRoIGFuZCB0aGUgdGVtcGxhdGVzIG5hbWVzIGZyb20gR29Hb0NhcnRvXG5cdFx0Ly8gdG8gb3ZlcnJpZGUgZGVmYXVsdCB0ZW1wbGF0ZXNcblx0XHQvLyBBcyBkZWZhdWx0IHRlbXBsYXRlcyBhcmUgcHJlY29tcGlsZWQgaW50byBqYXZhc2NyaXB0IHRlbXBsYXRlcy5qcyBmaWxlXG5cdFx0Ly8gaWYgdGhlcmUgaXMgc29tZSB0ZW1wbGF0ZXMgd2UgZGlkIG5vdCBvdmVycmlkZSwgbnVuanVja3Mgd2lsbCBnZXQgdGhlIHByZWNvbXBpbGVkIG9uZVxuXHRcdG51bmp1Y2tzLmNvbmZpZ3VyZSgnLi4vc3JjL3ZpZXdzJywgeyBhdXRvZXNjYXBlOiB0cnVlIH0pO1xuXHR9XG5cblx0cmVuZGVyKHRlbXBsYXRlTmFtZSA6IHN0cmluZywgb3B0aW9ucyA6IGFueSA9IHt9KSA6IHN0cmluZ1xuXHR7XG5cdFx0bGV0IGZpbGVVcmwgPSAnJztcblxuXHRcdHN3aXRjaCh0ZW1wbGF0ZU5hbWUpXG5cdFx0e1xuXHRcdFx0Y2FzZSAnbGF5b3V0JzogZmlsZVVybCA9ICdsYXlvdXQuaHRtbC5uamsnOyBicmVhaztcblx0XHRcdGNhc2UgJ21hcmtlcic6IGZpbGVVcmwgPSAnY29tcG9uZW50cy9tYXAvbWFya2VyLmh0bWwubmprJzsgYnJlYWs7XG5cdFx0XHRjYXNlICdnb2dvLXN0eWxlcyc6IGZpbGVVcmwgPSAnZ29nby1zdHlsZXMuaHRtbC5uamsnOyBicmVhaztcblx0XHRcdGNhc2UgJ2VsZW1lbnQnOiBmaWxlVXJsID0gJ2NvbXBvbmVudHMvZWxlbWVudC9lbGVtZW50Lmh0bWwubmprJzsgYnJlYWs7XG5cdFx0XHRjYXNlICd2b3RlLW1vZGFsLWNvbnRlbnQnOiBmaWxlVXJsID0gJ2NvbXBvbmVudHMvbW9kYWxzL2VsZW1lbnQvdm90ZS1jb250ZW50Lmh0bWwubmprJzsgYnJlYWs7XG5cdFx0XHRkZWZhdWx0OiBjb25zb2xlLndhcm4oJ1tHb0dvQ2FydG9dIE5vIHRlbXBsYXRlIGFzc29jaWF0ZWQgdG8gdGVtcGxhdGVOYW1lJywgdGVtcGxhdGVOYW1lKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbnVuanVja3MucmVuZGVyKGZpbGVVcmwsIG9wdGlvbnMpO1xuXHR9XG59IiwiaW1wb3J0IHsgT3B0aW9uVmFsdWUgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5kZWNsYXJlIHZhciBKc0RpZmYgOiBhbnk7XG5cbnZhciBkaWZmQ29uZmlndXJhdGlvbiA9XG57XG4gIG5hbWU6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxuICBkZXNjcmlwdGlvbjogSnNEaWZmLmRpZmZTZW50ZW5jZXMsXG4gIGFkZHJlc3M6IEpzRGlmZi5kaWZmU2VudGVuY2VzLFxuICBjb21taXRtZW50OiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbiAgdGVsZXBob25lOiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbiAgd2Vic2l0ZTogSnNEaWZmLmRpZmZTZW50ZW5jZXMsXG4gIGVtYWlsOiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbiAgb3BlbkhvdXJzTW9yZUluZm9zOiBKc0RpZmYuZGlmZlNlbnRlbmNlcyxcbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnREaWZmTW9kdWxlXG57XG4gIGdldERpZmZWYWx1ZSh2YWx1ZSwgbW9kaWZpZWRWYWx1ZSwgcHJvcGVydHlOYW1lKVxuICB7XG4gICAgbGV0IHNwYW5DbGFzcyA9ICcnLFxuICAgIHNwYW4gPSBudWxsO1xuXG4gICAgbGV0IERpZmZNZXRob2QgPSBkaWZmQ29uZmlndXJhdGlvbltwcm9wZXJ0eU5hbWVdID8gZGlmZkNvbmZpZ3VyYXRpb25bcHJvcGVydHlOYW1lXSA6IEpzRGlmZi5kaWZmU2VudGVuY2VzXG4gICAgbGV0IGRpZmYgPSBEaWZmTWV0aG9kKHZhbHVlLCBtb2RpZmllZFZhbHVlKTtcbiAgICBsZXQgZGlzcGxheSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpLFxuICAgICAgICBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtcblxuICAgIGRpZmYuZm9yRWFjaChmdW5jdGlvbihwYXJ0KVxuICAgIHtcbiAgICAgIHNwYW5DbGFzcyA9IHBhcnQuYWRkZWQgPyAnYWRkZWQnIDogcGFydC5yZW1vdmVkID8gJ3JlbW92ZWQnIDogJ2VxdWFscyc7XG4gICAgICBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgaWYgKHNwYW5DbGFzcykgc3Bhbi5jbGFzc05hbWUgPSBzcGFuQ2xhc3M7XG4gICAgICBzcGFuLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHBhcnQudmFsdWUpKTtcbiAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHNwYW4pO1xuICAgIH0pO1xuXG4gICAgZGlzcGxheS5hcHBlbmRDaGlsZChmcmFnbWVudCk7XG5cbiAgICByZXR1cm4gZGlzcGxheS5pbm5lckhUTUw7XG4gIH1cblxuICBnZXREaWZmT3B0aW9uVmFsdWVzKG9wdGlvblZhbHVlcyA6IE9wdGlvblZhbHVlW10sIG5ld09wdGlvblZhbHVlcyA6IE9wdGlvblZhbHVlW10pXG4gIHtcbiAgICBsZXQgZGlmZk9wdGlvbnNWYWx1ZXMgPSBbXTtcbiAgICBsZXQgbmV3T1ZJZHMgPSBuZXdPcHRpb25WYWx1ZXMubWFwKChvYmopID0+IG9iai5vcHRpb25JZCk7XG4gICAgbGV0IG9sZE9WSWRzID0gb3B0aW9uVmFsdWVzLm1hcCgob2JqKSA9PiBvYmoub3B0aW9uSWQpO1xuXG4gICAgZm9yKGxldCBvdiBvZiBvcHRpb25WYWx1ZXMpXG4gICAge1xuICAgICAgaWYgKG5ld09WSWRzLmluZGV4T2Yob3Yub3B0aW9uSWQpID09IC0xKVxuICAgICAge1xuICAgICAgICBvdi5kaWZmID0gJ3JlbW92ZWQnO1xuICAgICAgICBkaWZmT3B0aW9uc1ZhbHVlcy5wdXNoKG92KTtcbiAgICAgIH1cbiAgICB9XG4gICAgZm9yKGxldCBuZXdPdiBvZiBuZXdPcHRpb25WYWx1ZXMpXG4gICAge1xuICAgICAgbGV0IGluZGV4ID0gb2xkT1ZJZHMuaW5kZXhPZihuZXdPdi5vcHRpb25JZCk7XG4gICAgICBpZiAoaW5kZXggPT0gLTEpXG4gICAgICB7XG4gICAgICAgIG5ld092LmRpZmYgPSAnYWRkZWQnO1xuICAgICAgfVxuICAgICAgZWxzZVxuICAgICAgeyAgICAgICAgXG4gICAgICAgIGxldCBtb2RpZmllZFZhbHVlID0gY2FwaXRhbGl6ZShuZXdPdi5kZXNjcmlwdGlvbik7XG4gICAgICAgIGxldCB2YWx1ZSA9IGNhcGl0YWxpemUob3B0aW9uVmFsdWVzW2luZGV4XS5kZXNjcmlwdGlvbiksXG4gICAgICAgIHNwYW5DbGFzcyA9ICcnLFxuICAgICAgICBzcGFuID0gbnVsbDtcbiAgICAgICAgbGV0IGRpZmYgPSBKc0RpZmYuZGlmZldvcmRzKHZhbHVlLCBtb2RpZmllZFZhbHVlKSxcbiAgICAgICAgICAgIGRpc3BsYXkgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKSxcbiAgICAgICAgICAgIGZyYWdtZW50ID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpO1xuXG4gICAgICAgIGRpZmYuZm9yRWFjaChmdW5jdGlvbihwYXJ0KVxuICAgICAgICB7XG4gICAgICAgICAgc3BhbkNsYXNzID0gcGFydC5hZGRlZCA/ICdhZGRlZCcgOiBwYXJ0LnJlbW92ZWQgPyAncmVtb3ZlZCcgOiAnZXF1YWxzJztcbiAgICAgICAgICBzcGFuID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpO1xuICAgICAgICAgIGlmIChzcGFuQ2xhc3MpIHNwYW4uY2xhc3NOYW1lID0gc3BhbkNsYXNzO1xuICAgICAgICAgIHNwYW4uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocGFydC52YWx1ZSkpO1xuICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHNwYW4pO1xuICAgICAgICB9KTtcblxuICAgICAgICBkaXNwbGF5LmFwcGVuZENoaWxkKGZyYWdtZW50KTtcblxuICAgICAgICBuZXdPdi5kZXNjcmlwdGlvbiA9IGRpc3BsYXkuaW5uZXJIVE1MO1xuICAgICAgICBuZXdPdi5kaWZmID0gJ2VxdWFscyc7XG4gICAgICB9XG4gICAgICBkaWZmT3B0aW9uc1ZhbHVlcy5wdXNoKG5ld092KTtcbiAgICB9XG5cbiAgICByZXR1cm4gZGlmZk9wdGlvbnNWYWx1ZXM7XG4gIH1cbn0iLCJpbXBvcnQgeyBFbGVtZW50LCBFbGVtZW50QmFzZSwgRWxlbWVudFN0YXR1cywgUG9zdGFsQWRkcmVzcywgRWxlbWVudFVybCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcbmltcG9ydCB7IGNhcGl0YWxpemUsIHNsdWdpZnksIHNwbGl0TG9uZ1RleHQgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgdmFyICQsIEw7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50SnNvblBhcnNlck1vZHVsZVxue1xuICBsb2FkKGVsZW1lbnRKc29uIDogYW55LCBlbGVtZW50IDogRWxlbWVudCB8IEVsZW1lbnRCYXNlKVxuICB7XG4gICAgLy8gcGF0Y2ggdG8gaGFuZGxlIGNvbXBhY3RKc29uIHN0b3JlZCBpbnNpZGUgYSBcImNvbXBhY3RKc29uXCIgcHJvcGVydHkgKHVzZSB3aXRoIFNlbWFudGljIEJ1cylcbiAgICBpZiAoZWxlbWVudEpzb24uY29tcGFjdEpzb24pIFxuICAgIHtcbiAgICAgIGxldCBpZCA9IGVsZW1lbnRKc29uLmlkO1xuICAgICAgZWxlbWVudEpzb24gPSBlbGVtZW50SnNvbi5jb21wYWN0SnNvbjtcbiAgICAgIGVsZW1lbnRKc29uLmlkID0gaWQ7XG4gICAgfVxuXG4gICAgLy8gd2hlbiB3ZSBnZXQgdGhlIGNvbXBhY3QganNvbiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZWxlbWVudCBmcm9tIHRoZSBzZXJ2ZXJcbiAgICAvLyB0aGUgZWxlbWVudEpzb24gaXMgYSBzaW1wbGUgYXJyYXkgd2l0aCB0aGUgbW9yZSBpbXBvcnRhbnQgZWxlbWVudCBhdHRyaWJ1dGVcbiAgICBpZiAoJC5pc0FycmF5KGVsZW1lbnRKc29uKSAmJiBlbGVtZW50SnNvbi5sZW5ndGggPj0gNSlcbiAgICAgIHRoaXMubG9hZEZyb21Db21wYWN0SnNvbihlbGVtZW50SnNvbiwgZWxlbWVudCk7XG4gICAgZWxzZSBcbiAgICAgIHRoaXMubG9hZEZyb21GdWxsSnNvbihlbGVtZW50SnNvbiwgZWxlbWVudCk7XG4gIH1cblxuICBwcml2YXRlIGxvYWRGcm9tQ29tcGFjdEpzb24oZWxlbWVudEpzb24gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50IHwgRWxlbWVudEJhc2UpXG4gIHtcbiAgICBlbGVtZW50LmlkID0gZWxlbWVudEpzb24uaWQ7IC8vIHRoZSBlbGVtZW50IGhhcyBiZWVuIG1vZGlmaWVkIGJlZm9yZSB0byBmaXhzIGJhZCBpZHMgICAgIFxuICAgIGVsZW1lbnQubmFtZSA9IGNhcGl0YWxpemUoZWxlbWVudEpzb25bMV0pO1xuICAgIGVsZW1lbnQucG9zaXRpb24gPSBMLmxhdExuZyhlbGVtZW50SnNvblsyXSwgZWxlbWVudEpzb25bM10pOyAgICAgXG4gICAgQXBwLmVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUuY3JlYXRlT3B0aW9uVmFsdWVzKGVsZW1lbnRKc29uWzRdLCBlbGVtZW50KTsgICBcbiAgICBlbGVtZW50LnN0YXR1cyA9IGVsZW1lbnRKc29uLmxlbmd0aCA+PSA2ID8gZWxlbWVudEpzb25bNV0gOiAxOyAgXG4gICAgZWxlbWVudC5tb2RlcmF0aW9uU3RhdGUgPSBlbGVtZW50SnNvbi5sZW5ndGggPj0gNyA/IGVsZW1lbnRKc29uWzZdIDogMDtcbiAgfVxuXG4gIHByaXZhdGUgbG9hZEZyb21GdWxsSnNvbihlbGVtZW50SnNvbiA6IGFueSwgZWxlbWVudCA6IEVsZW1lbnQgfCBFbGVtZW50QmFzZSlcbiAge1xuICAgIC8vIGlmIHRoZSBlbGVtZW50IHdhcyBub3QgcHJlZmlsbGVkIHdpdGggdGhlIGNvbXBhY3QganNvbiByZXByZXNlbnRhdGlvblxuICAgIC8vIHdlIG92ZXdyaXRlIGFueXdheSBhbGwgYXR0cmlidXRlcyAoaXQgY2FuIGhhdmUgY2hhbmdlZCAhKVxuICAgIGVsZW1lbnQuaWQgPSBlbGVtZW50SnNvbi5pZCB8fCBlbGVtZW50SnNvblsnQGlkJ107XG5cbiAgICBlbGVtZW50LnBvc2l0aW9uID0gTC5sYXRMbmcoZWxlbWVudEpzb24ubGF0aXR1ZGUgfHwgZWxlbWVudEpzb24ubGF0IHx8IGVsZW1lbnRKc29uLmdlbyAmJiBlbGVtZW50SnNvbi5nZW8ubGF0aXR1ZGUsIFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtZW50SnNvbi5sb25naXR1ZGUgfHwgZWxlbWVudEpzb24ubG5nIHx8IGVsZW1lbnRKc29uLmxvbmcgfHwgZWxlbWVudEpzb24uZ2VvICYmIGVsZW1lbnRKc29uLmdlby5sb25naXR1ZGUpO1xuICAgIGVsZW1lbnQubmFtZSA9IGNhcGl0YWxpemUoZWxlbWVudEpzb24ubmFtZSB8fCBlbGVtZW50SnNvbi50aXRsZSk7XG4gICAgXG4gICAgZWxlbWVudC5zdGF0dXMgPSBlbGVtZW50SnNvbi5zdGF0dXMgPT0gdW5kZWZpbmVkID8gMSA6IGVsZW1lbnRKc29uLnN0YXR1cztcbiAgICBlbGVtZW50Lm1vZGVyYXRpb25TdGF0ZSA9IGVsZW1lbnRKc29uLm1vZGVyYXRpb25TdGF0ZSB8fCAwO1xuXG4gICAgdGhpcy5jcmVhdGVPcHRpb25zVmFsdWVzKGVsZW1lbnRKc29uLCBlbGVtZW50KTtcblxuICAgIGVsZW1lbnQuc3RhbXBzID0gZWxlbWVudEpzb24uc3RhbXBzIHx8IFtdOyAgICBcblxuICAgIGlmKGVsZW1lbnRKc29uLm1vZGlmaWVkRWxlbWVudCAmJiBlbGVtZW50LnN0YXR1cyAhPSAtNSkgXG4gICAge1xuICAgICAgbGV0IG1vZGlmaWVkRWxlbWVudCA9IG5ldyBFbGVtZW50QmFzZShlbGVtZW50SnNvbi5tb2RpZmllZEVsZW1lbnQpO1xuICAgICAgXG4gICAgICB0aGlzLmNyZWF0ZU9wdGlvbnNWYWx1ZXMoZWxlbWVudEpzb24ubW9kaWZpZWRFbGVtZW50LCBtb2RpZmllZEVsZW1lbnQpO1xuICAgICAgXG4gICAgICAvLyBjYWxjdWwgYW5kIHN0b3JlIGRpZmYgb3B0aW9uc1ZhbHVlcyBpbiBtb2RpZmllZCBlbGVtZW50XG4gICAgICBsZXQgZGlmZk9wdGlvblZhbHVlcyA9IEFwcC5lbGVtZW50RGlmZk1vZHVsZS5nZXREaWZmT3B0aW9uVmFsdWVzKGVsZW1lbnQub3B0aW9uc1ZhbHVlcywgbW9kaWZpZWRFbGVtZW50Lm9wdGlvbnNWYWx1ZXMpO1xuICAgICAgbW9kaWZpZWRFbGVtZW50Lm9wdGlvbnNWYWx1ZXMgPSBkaWZmT3B0aW9uVmFsdWVzO1xuXG4gICAgICBlbGVtZW50Lm1vZGlmaWVkRWxlbWVudCA9IG1vZGlmaWVkRWxlbWVudDtcbiAgICB9XG4gICAgXG4gICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IGVsZW1lbnRKc29uLmRlc2NyaXB0aW9uIHx8IGVsZW1lbnRKc29uLmFic3RyYWN0O1xuICAgIGVsZW1lbnQuZGVzY3JpcHRpb24gPSBjYXBpdGFsaXplKGVsZW1lbnQuZGVzY3JpcHRpb24gfHwgJycpIDtcbiAgICBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiA9IGVsZW1lbnRKc29uLmRlc2NyaXB0aW9uTW9yZTtcbiAgICBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiA9IGNhcGl0YWxpemUoZWxlbWVudC5sb25nRGVzY3JpcHRpb24gfHwgJycpOyBcbiAgICB0aGlzLmNoZWNrRm9yTWVyZ2VEZXNjcmlwdGlvbnMoZWxlbWVudCk7XG4gICAgdGhpcy5jaGVja0ZvclNwbGl0RGVzY3JpcHRpb24oZWxlbWVudCk7XG5cbiAgICBlbGVtZW50LmFkZHJlc3MgPSBuZXcgUG9zdGFsQWRkcmVzcyhlbGVtZW50SnNvbi5hZGRyZXNzKTtcblxuICAgIC8vIGVsZW1lbnQucmVwb3J0cyA9IGVsZW1lbnQuY3JlYXRlT2JqZWN0QXJyYXlGcm9tSnNvbihWb3RlUmVwb3J0LCBlbGVtZW50SnNvbi5yZXBvcnRzKTtcbiAgICAvLyBlbGVtZW50LmNvbnRyaWJ1dGlvbnMgPSBlbGVtZW50LmNyZWF0ZU9iamVjdEFycmF5RnJvbUpzb24oQ29udHJpYnV0aW9uLCBlbGVtZW50SnNvbi5jb250cmlidXRpb25zKTtcbiAgICAvLyBlbGVtZW50LnZvdGVzID0gZWxlbWVudC5jcmVhdGVPYmplY3RBcnJheUZyb21Kc29uKFZvdGVSZXBvcnQsIGVsZW1lbnRKc29uLnZvdGVzKTtcblxuICAgIGVsZW1lbnQucmVwb3J0cyA9IGVsZW1lbnRKc29uLnJlcG9ydHM7XG4gICAgZWxlbWVudC5jb250cmlidXRpb25zID0gZWxlbWVudEpzb24uY29udHJpYnV0aW9ucztcbiAgICBlbGVtZW50LnBlbmRpbmdDb250cmlidXRpb24gPSBlbGVtZW50SnNvbi5wZW5kaW5nQ29udHJpYnV0aW9uO1xuICAgIGVsZW1lbnQudm90ZXMgPSBlbGVtZW50SnNvbi52b3RlcztcblxuICAgIGVsZW1lbnQuY29tbWl0bWVudCA9IGVsZW1lbnRKc29uLmNvbW1pdG1lbnQgfHwgJyc7XG4gICAgZWxlbWVudC50ZWxlcGhvbmUgPSBBcHAuZWxlbWVudEZvcm1hdGVyTW9kdWxlLmdldEZvcm1hdGVkVGVsKGVsZW1lbnRKc29uLnRlbGVwaG9uZSk7ICAgIFxuICAgIGVsZW1lbnQuZW1haWwgPSBlbGVtZW50SnNvbi5lbWFpbCB8fCBlbGVtZW50SnNvbi5jb250YWN0IHx8ICcnO1xuICAgIGVsZW1lbnQub3BlbkhvdXJzID0gZWxlbWVudEpzb24ub3BlbkhvdXJzO1xuICAgIEFwcC5lbGVtZW50Rm9ybWF0ZXJNb2R1bGUuY2FsY3VsYXRlRm9ybWF0ZWRPcGVuSG91cnMoZWxlbWVudCk7XG4gICAgZWxlbWVudC5vcGVuSG91cnNNb3JlSW5mb3MgPSBlbGVtZW50SnNvbi5vcGVuSG91cnNNb3JlSW5mb3MgfHwgZWxlbWVudEpzb24ub3BlbkhvdXJzU3RyaW5nOyBcbiAgICBlbGVtZW50LmltYWdlcyA9IFtdO1xuICAgIGlmKGVsZW1lbnRKc29uLmltYWdlKSBlbGVtZW50LmltYWdlcy5wdXNoKGVsZW1lbnRKc29uLmltYWdlKTtcbiAgICBlbHNlIGlmIChlbGVtZW50SnNvbi5pbWFnZXMpIGVsZW1lbnQuaW1hZ2VzID0gW10uY29uY2F0KGVsZW1lbnRKc29uLmltYWdlcyk7XG4gICAgZWxlbWVudC5pbWFnZXMgPSBlbGVtZW50LmltYWdlcy5maWx0ZXIoKGltYWdlVXJsKSA9PiBpbWFnZVVybC5sZW5ndGggPiAwKTtcbiAgICBcbiAgICAvLyB1cmxzXG4gICAgZWxlbWVudC53ZWJzaXRlID0gZWxlbWVudEpzb24ud2Vic2l0ZSB8fCBlbGVtZW50SnNvbi5zaXRlO1xuICAgIGxldCB1cmxzSnNvbiA9IGVsZW1lbnRKc29uLnVybHMgfHwgZWxlbWVudEpzb24udXJsO1xuICAgIGxldCB1cmxzIDogRWxlbWVudFVybFtdID0gW107XG4gICAgaWYgICAgICAodHlwZW9mIHVybHNKc29uID09ICdzdHJpbmcnKSB1cmxzID0gW25ldyBFbGVtZW50VXJsKHVybHNKc29uKV07IFxuICAgIGVsc2UgaWYgKEFycmF5LmlzQXJyYXkodXJsc0pzb24pKSAgICAgZm9yKGxldCB1cmwgb2YgdXJsc0pzb24pIHVybHMucHVzaChuZXcgRWxlbWVudFVybCh1cmwpKSAgIFxuICAgIGVsc2UgaWYgKHR5cGVvZiB1cmxzSnNvbiA9PSAnb2JqZWN0JykgZm9yIChsZXQga2V5IGluIHVybHNKc29uKSB1cmxzLnB1c2gobmV3IEVsZW1lbnRVcmwoe3R5cGU6a2V5LCB2YWx1ZTp1cmxzSnNvbltrZXldfSkpO1xuICAgIFxuICAgIGVsZW1lbnQudXJscyA9IHVybHM7XG4gICAgZWxlbWVudC50YWdzID0gZWxlbWVudEpzb24udGFncztcblxuICAgIGVsZW1lbnQuc2VhcmNoU2NvcmUgPSBlbGVtZW50SnNvbi5zZWFyY2hTY29yZTtcbiAgICBlbGVtZW50LmlzRnVsbHlMb2FkZWQgPSB0cnVlXG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZU9wdGlvbnNWYWx1ZXMoZWxlbWVudEpzb24gOiBhbnksIGVsZW1lbnQgOiBFbGVtZW50IHwgRWxlbWVudEJhc2UpXG4gIHtcbiAgICBBcHAuZWxlbWVudE9wdGlvblZhbHVlc01vZHVsZS5jcmVhdGVPcHRpb25WYWx1ZXMoZWxlbWVudEpzb24uY2F0ZWdvcmllcyB8fCBlbGVtZW50SnNvbi50YXhvbm9teSB8fCBlbGVtZW50SnNvbi5vcHRpb25WYWx1ZXMsIGVsZW1lbnQpO1xuICAgIGlmIChlbGVtZW50SnNvbi5jYXRlZ29yaWVzRGVzY3JpcHRpb25zKVxuICAgICAgQXBwLmVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGUudXBkYXRlT3B0aW9uc1dpdGhEZXNjcmlwdGlvbihlbGVtZW50LCBlbGVtZW50SnNvbi5jYXRlZ29yaWVzRGVzY3JpcHRpb25zKTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT2JqZWN0QXJyYXlGcm9tSnNvbihrbGFzcywgZWxlbWVudHNKc29uKVxuICB7XG4gICAgZWxlbWVudHNKc29uID0gZWxlbWVudHNKc29uIHx8IFtdO1xuICAgIGxldCByZXN1bHQgPSBbXTtcbiAgICBmb3IobGV0IGVsZW1lbnRKc29uIG9mIGVsZW1lbnRzSnNvbilcbiAgICB7XG4gICAgICByZXN1bHQucHVzaChuZXcga2xhc3MoZWxlbWVudEpzb24pKTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfSBcblxuICAvLyBpZiB0aGUgZGVzY3JpcHRpb24gYW5kIGxvbmdEZXNjcmlwdGlvbiBhcmUgc21hbGwsIHdlIGNhbiBtZXJnZSB0aGVtIGludG8gb25lIHNpbmdsZSBkZXNjcmlwdGlvblxuICBwcml2YXRlIGNoZWNrRm9yTWVyZ2VEZXNjcmlwdGlvbnMoZWxlbWVudClcbiAge1xuICAgIGlmICggZWxlbWVudC5zdGF0dXMgIT0gRWxlbWVudFN0YXR1cy5QZW5kaW5nTW9kaWZpY2F0aW9uICYmXG4gICAgICAgICBlbGVtZW50LnN0YXR1cyAhPSBFbGVtZW50U3RhdHVzLk1vZGlmaWVkRWxlbWVudCAmJlxuICAgICAgICAgZWxlbWVudC5sb25nRGVzY3JpcHRpb24ubGVuZ3RoID4gMCAmJiBcbiAgICAgICAgIChlbGVtZW50LmRlc2NyaXB0aW9uLmxlbmd0aCArIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uLmxlbmd0aCkgPCAzMDApXG4gICAge1xuICAgICAgaWYgKGVsZW1lbnQuZGVzY3JpcHRpb24ubGVuZ3RoID4gMCkgZWxlbWVudC5kZXNjcmlwdGlvbiA9IGVsZW1lbnQuZGVzY3JpcHRpb24gKyAnPGJyIC8+ICc7XG4gICAgICBlbGVtZW50LmRlc2NyaXB0aW9uICs9IGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uO1xuICAgICAgZWxlbWVudC5sb25nRGVzY3JpcHRpb24gPSAnJztcbiAgICB9XG4gIH1cblxuICAvLyB3ZSBkb24ndCB3YW50IHRvIGRpc3BsYXkgYSB2ZXJ5IGxhcmdlIGRlc2NyaXB0aW9uIGluIHRoZSBoZWFkZXIsIGluc3RlYWQgd2Ugc3BsaXQgdGhlIGRlc2NyaXB0aW9uXG4gIC8vIGludG8gc21hbGxlciBvbmUgdGhhdCB3aWxsIGJlIGRpc3BsYXllZCBvbiBib2R5XG4gIHByaXZhdGUgY2hlY2tGb3JTcGxpdERlc2NyaXB0aW9uKGVsZW1lbnQgOiBFbGVtZW50QmFzZSlcbiAge1xuICAgIGlmICggZWxlbWVudC5zdGF0dXMgIT0gRWxlbWVudFN0YXR1cy5QZW5kaW5nTW9kaWZpY2F0aW9uICYmXG4gICAgICAgICBlbGVtZW50LnN0YXR1cyAhPSBFbGVtZW50U3RhdHVzLk1vZGlmaWVkRWxlbWVudClcbiAgICB7XG4gICAgICBpZiAoZWxlbWVudC5kZXNjcmlwdGlvbi5sZW5ndGggPiAzMDApIHsgICAgICAgIFxuICAgICAgICBsZXQgcmVzdWx0ID0gc3BsaXRMb25nVGV4dChlbGVtZW50LmRlc2NyaXB0aW9uLCAzMDAsIDgwKTtcbiAgICAgICAgZWxlbWVudC5kZXNjcmlwdGlvbiA9IHJlc3VsdC5maXJzdCArIFwiIChTdWl0ZSBhdSBkZXNzb3VzLi4uKVwiO1xuICAgICAgICBpZiAoZWxlbWVudC5sb25nRGVzY3JpcHRpb24pIHJlc3VsdC5zZWNvbmQgKz0gXCI8L2JyPlwiICsgZWxlbWVudC5sb25nRGVzY3JpcHRpb247XG4gICAgICAgIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uID0gcmVzdWx0LnNlY29uZDtcbiAgICAgIH1cblxuICAgICAgaWYgKGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uLmxlbmd0aCA+IDUwMCkge1xuICAgICAgICBsZXQgcmVzdWx0ID0gc3BsaXRMb25nVGV4dChlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiwgNTAwLCAxMDApO1xuICAgICAgICBlbGVtZW50LmxvbmdEZXNjcmlwdGlvbiA9IHJlc3VsdC5maXJzdDsgXG4gICAgICAgIGVsZW1lbnQubG9uZ0Rlc2NyaXB0aW9uTW9yZSA9IHJlc3VsdC5zZWNvbmQ7ICAgICAgICAgICAgIFxuICAgICAgfSAgICAgICAgXG4gICAgfVxuICB9XG59IiwiaW1wb3J0IHsgRWxlbWVudEJhc2UsIEVsZW1lbnRTdGF0dXMgfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NsYXNzZXMnOyBcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxudmFyIGNhcGl0YWxpemVDb25maWd1cmF0aW9uID1cbntcbiAgbmFtZTogdHJ1ZSxcbiAgZGVzY3JpcHRpb246IHRydWUsXG4gIGxvbmdEZXNjcmlwdGlvbjogdHJ1ZSxcbiAgYWRkcmVzczogZmFsc2UsXG4gIHRlbGVwaG9uZTogZmFsc2UsXG4gIHdlYnNpdGU6IGZhbHNlLFxuICBlbWFpbDogZmFsc2UsXG4gIG9wZW5Ib3Vyc01vcmVJbmZvczogdHJ1ZSxcbn1cblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRGb3JtYXRlck1vZHVsZVxue1xuICBnZXRGb3JtYXRlZFRlbCh2YWx1ZSlcbiAge1xuICAgIGlmICghdmFsdWUpIHJldHVybiAnJztcbiAgICBpZiAodmFsdWUubGVuZ3RoID09IDEwKSByZXR1cm4gdmFsdWUucmVwbGFjZSgvKC57Mn0pKD8hJCkvZyxcIiQxIFwiKTtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH0gIFxuXG4gIGNhbGN1bGF0ZUZvcm1hdGVkT3BlbkhvdXJzKGVsZW1lbnQgOiBFbGVtZW50QmFzZSlcbiAgeyAgICAgICAgIFxuICAgIGVsZW1lbnQuZm9ybWF0ZWRPcGVuSG91cnMgPSB7fTtcbiAgICBsZXQgbmV3X2tleSwgbmV3X2tleV90cmFuc2xhdGVkLCBuZXdEYWlseVNsb3Q7XG4gICAgZm9yKGxldCBrZXkgaW4gZWxlbWVudC5vcGVuSG91cnMpXG4gICAge1xuICAgICAgbmV3X2tleV90cmFuc2xhdGVkID0gdGhpcy50cmFuc2xhdGVEYXlLZXkoa2V5KTsgICAgICAgIFxuICAgICAgbmV3RGFpbHlTbG90ID0gdGhpcy5mb3JtYXRlRGFpbHlUaW1lU2xvdChlbGVtZW50Lm9wZW5Ib3Vyc1trZXldKTtcbiAgICAgIFxuICAgICAgaWYgKG5ld0RhaWx5U2xvdCkgZWxlbWVudC5mb3JtYXRlZE9wZW5Ib3Vyc1tuZXdfa2V5X3RyYW5zbGF0ZWRdID0gbmV3RGFpbHlTbG90O1xuICAgIH1cbiAgfVxuXG4gIGdldFByb3BlcnR5KGVsZW1lbnQgOiBFbGVtZW50QmFzZSwgcHJvcGVydHlOYW1lKVxuICB7XG4gICAgbGV0IHZhbHVlID0gdGhpcy5nZXRGb3JtYXRlZFZhbHVlKGVsZW1lbnQsIHByb3BlcnR5TmFtZSk7XG4gICAgXG4gICAgLy8gaW4gaWZyYW1lIHRoZSBwZW5kaW5nIG1vZGlmaWNhdGlvbnMgYXJlIG5vdCBkaXNwbGF5ZWQsIGp1c3QgdGhlIG9sZCB2ZXJzaW9uXG4gICAgaWYgKGVsZW1lbnQuc3RhdHVzICE9IEVsZW1lbnRTdGF0dXMuUGVuZGluZ01vZGlmaWNhdGlvbiB8fCAhQXBwLmNvbmZpZy5pc0ZlYXR1cmVBdmFpbGFibGUoJ3BlbmRpbmcnKSB8fCAhZWxlbWVudC5tb2RpZmllZEVsZW1lbnQpIHJldHVybiB2YWx1ZTtcblxuICAgIGxldCBtb2RpZmllZFZhbHVlID0gdGhpcy5nZXRGb3JtYXRlZFZhbHVlKGVsZW1lbnQubW9kaWZpZWRFbGVtZW50LCBwcm9wZXJ0eU5hbWUpO1xuXG4gICAgaWYgKCF2YWx1ZSAmJiAhbW9kaWZpZWRWYWx1ZSkgcmV0dXJuICcnO1xuXG4gICAgdmFsdWUgPSB2YWx1ZSB8fCAnJztcbiAgICBtb2RpZmllZFZhbHVlID0gbW9kaWZpZWRWYWx1ZSB8fCAnJztcblxuICAgIHJldHVybiBBcHAuZWxlbWVudERpZmZNb2R1bGUuZ2V0RGlmZlZhbHVlKHZhbHVlLCBtb2RpZmllZFZhbHVlLCBwcm9wZXJ0eU5hbWUpXG4gIH1cblxuICBwcml2YXRlIHRyYW5zbGF0ZURheUtleShkYXlLZXkpXG4gIHtcbiAgICBzd2l0Y2goZGF5S2V5KVxuICAgIHtcbiAgICAgIGNhc2UgJ01vJzogcmV0dXJuICdsdW5kaSc7XG4gICAgICBjYXNlICdUdSc6IHJldHVybiAnbWFyZGknO1xuICAgICAgY2FzZSAnV2UnOiByZXR1cm4gJ21lcmNyZWRpJztcbiAgICAgIGNhc2UgJ1RoJzogcmV0dXJuICdqZXVkaSc7XG4gICAgICBjYXNlICdGcic6IHJldHVybiAndmVuZHJlZGknO1xuICAgICAgY2FzZSAnU2EnOiByZXR1cm4gJ3NhbWVkaSc7XG4gICAgICBjYXNlICdTdSc6IHJldHVybiAnZGltYW5jaGUnO1xuICAgIH1cblxuICAgIHJldHVybiAnJztcbiAgfVxuXG4gIHByaXZhdGUgZm9ybWF0ZURhaWx5VGltZVNsb3QoZGFpbHlTbG90KSBcbiAgeyAgICBcbiAgICBpZiAoZGFpbHlTbG90ID09PSBudWxsKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gZGFpbHlTbG90LnJlcGxhY2UoLy0vZywgJyAtICcpLnJlcGxhY2UoLywvZywgJyBldCAnKTtcbiAgfTsgICBcblxuICBwcml2YXRlIGdldEZvcm1hdGVkVmFsdWUoZWxlbWVudCA6IEVsZW1lbnRCYXNlLCBwcm9wZXJ0eU5hbWUpXG4gIHtcbiAgICBsZXQgdmFsdWU7XG4gICAgaWYgKHByb3BlcnR5TmFtZSA9PSAnYWRkcmVzcycpIHZhbHVlID0gZWxlbWVudC5hZGRyZXNzLmdldEZvcm1hdGVkQWRkcmVzcygpO1xuICAgIGVsc2UgdmFsdWUgPSBlbGVtZW50W3Byb3BlcnR5TmFtZV1cbiAgICBcbiAgICB2YWx1ZSA9IGNhcGl0YWxpemVDb25maWd1cmF0aW9uW3Byb3BlcnR5TmFtZV0gPyBjYXBpdGFsaXplKHZhbHVlKSA6IHZhbHVlO1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxufSIsImltcG9ydCB7IEVsZW1lbnQsIE9wdGlvblZhbHVlIH0gZnJvbSAnLi4vLi4vY2xhc3Nlcy9jbGFzc2VzJzsgXG5pbXBvcnQgeyBjYXBpdGFsaXplIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50SWNvbnNNb2R1bGVcbntcbiAgdXBkYXRlSWNvbnNUb0Rpc3BsYXkoZWxlbWVudCA6IEVsZW1lbnQpIFxuICB7ICAgIFxuICAgIHRoaXMuY2hlY2tGb3JEaXNhYmxlZE9wdGlvblZhbHVlcyhlbGVtZW50KTtcblxuICAgIGlmIChBcHAuY3Vyck1haW5JZCA9PSAnYWxsJylcbiAgICAgIGVsZW1lbnQuaWNvbnNUb0Rpc3BsYXkgPSB0aGlzLnJlY3Vyc2l2ZWx5U2VhcmNoSWNvbnNUb0Rpc3BsYXkoZWxlbWVudC5nZXRPcHRpb25UcmVlKCksICFBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKTtcbiAgICBlbHNlXG4gICAgICBlbGVtZW50Lmljb25zVG9EaXNwbGF5ID0gdGhpcy5yZWN1cnNpdmVseVNlYXJjaEljb25zVG9EaXNwbGF5KGVsZW1lbnQuZ2V0Q3Vyck1haW5PcHRpb25WYWx1ZSgpKTtcblxuICAgIC8vIGluIGNhc2Ugb2Ygbm8gT3B0aW9uVmFsdWUgaW4gdGhpcyBtYWluT3B0aW9uLCB3ZSBkaXNwbGF5IHRoZSBtYWluT3B0aW9uIEljb25cbiAgICBpZiAoZWxlbWVudC5pY29uc1RvRGlzcGxheS5sZW5ndGggPT0gMClcbiAgICB7XG4gICAgICBlbGVtZW50Lmljb25zVG9EaXNwbGF5LnB1c2goZWxlbWVudC5nZXRDdXJyTWFpbk9wdGlvblZhbHVlKCkpO1xuICAgIH1cbiAgICBcbiAgICAvLyBjb25zb2xlLmxvZyhcIkljb25zIHRvIGRpc3BsYXkgc29ydGVkXCIsIGVsZW1lbnQuZ2V0SWNvbnNUb0Rpc3BsYXkoKSk7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2l2ZWx5U2VhcmNoSWNvbnNUb0Rpc3BsYXkocGFyZW50T3B0aW9uVmFsdWUgOiBPcHRpb25WYWx1ZSwgcmVjdXJzaXZlIDogYm9vbGVhbiA9IHRydWUpIDogT3B0aW9uVmFsdWVbXVxuICB7ICAgIFxuICAgIGlmICghcGFyZW50T3B0aW9uVmFsdWUpIHJldHVybiBbXTtcbiAgICBcbiAgICBsZXQgcmVzdWx0T3B0aW9ucyA6IE9wdGlvblZhbHVlW10gPSBbXTsgICAgXG5cbiAgICBmb3IobGV0IGNhdGVnb3J5VmFsdWUgb2YgcGFyZW50T3B0aW9uVmFsdWUuY2hpbGRyZW4pXG4gICAge1xuICAgICAgZm9yKGxldCBvcHRpb25WYWx1ZSBvZiBjYXRlZ29yeVZhbHVlLmNoaWxkcmVuKVxuICAgICAge1xuICAgICAgICBsZXQgcmVzdWx0ID0gW107XG4gICAgICAgIFxuICAgICAgICBpZiAocmVjdXJzaXZlIHx8IG9wdGlvblZhbHVlLm9wdGlvbklkID09IFwiUm9vdEZha2VPcHRpb25cIilcbiAgICAgICAge1xuICAgICAgICAgIHJlc3VsdCA9IHRoaXMucmVjdXJzaXZlbHlTZWFyY2hJY29uc1RvRGlzcGxheShvcHRpb25WYWx1ZSkgfHwgW107XG4gICAgICAgICAgcmVzdWx0T3B0aW9ucyA9IHJlc3VsdE9wdGlvbnMuY29uY2F0KHJlc3VsdCk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocmVzdWx0Lmxlbmd0aCA9PSAwICYmIG9wdGlvblZhbHVlLm9wdGlvbi51c2VJY29uRm9yTWFya2VyKVxuICAgICAgICB7XG4gICAgICAgICAgcmVzdWx0T3B0aW9ucy5wdXNoKG9wdGlvblZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICBcbiAgICByZXR1cm4gcmVzdWx0T3B0aW9ucztcbiAgfVxuXG4gIHByaXZhdGUgY2hlY2tGb3JEaXNhYmxlZE9wdGlvblZhbHVlcyhlbGVtZW50IDogRWxlbWVudClcbiAge1xuICAgIHRoaXMucmVjdXJzaXZlbHlDaGVja0ZvckRpc2FibGVkT3B0aW9uVmFsdWVzKGVsZW1lbnQuZ2V0T3B0aW9uVHJlZSgpLCBBcHAuY3Vyck1haW5JZCA9PSAnYWxsJyk7XG4gIH1cblxuICBwcml2YXRlIHJlY3Vyc2l2ZWx5Q2hlY2tGb3JEaXNhYmxlZE9wdGlvblZhbHVlcyhvcHRpb25WYWx1ZSA6IE9wdGlvblZhbHVlLCBub1JlY3Vyc2l2ZSA6IGJvb2xlYW4gPSB0cnVlKVxuICB7XG4gICAgbGV0IGlzRXZlcnlDYXRlZ29yeUNvbnRhaW5zT25lT3B0aW9uTm90ZGlzYWJsZWQgPSB0cnVlO1xuICAgIC8vY29uc29sZS5sb2coXCJjaGVja0ZvckRpc2FibGVkT3B0aW9uVmFsdWUgTm9yZWN1cnNpdmUgOiBcIiArIG5vUmVjdXJzaXZlLCBvcHRpb25WYWx1ZSk7XG5cbiAgICBmb3IobGV0IGNhdGVnb3J5VmFsdWUgb2Ygb3B0aW9uVmFsdWUuY2hpbGRyZW4pXG4gICAge1xuICAgICAgbGV0IGlzU29tZU9wdGlvbk5vdGRpc2FibGVkID0gZmFsc2U7XG4gICAgICBmb3IgKGxldCBzdWJvcHRpb25WYWx1ZSBvZiBjYXRlZ29yeVZhbHVlLmNoaWxkcmVuKVxuICAgICAge1xuICAgICAgICBpZiAoc3Vib3B0aW9uVmFsdWUuY2hpbGRyZW4ubGVuZ3RoID09IDAgfHwgbm9SZWN1cnNpdmUpXG4gICAgICAgIHtcbiAgICAgICAgICAvL2NvbnNvbGUubG9nKFwiYm90dG9tIG9wdGlvbiBcIiArIHN1Ym9wdGlvblZhbHVlLm9wdGlvbi5uYW1lLHN1Ym9wdGlvblZhbHVlLm9wdGlvbi5pc0NoZWNrZWQgKTtcbiAgICAgICAgICBzdWJvcHRpb25WYWx1ZS5pc0ZpbGxlZEJ5RmlsdGVycyA9ICFzdWJvcHRpb25WYWx1ZS5vcHRpb24uaXNEaXNhYmxlZDsgICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICB7XG4gICAgICAgICAgdGhpcy5yZWN1cnNpdmVseUNoZWNrRm9yRGlzYWJsZWRPcHRpb25WYWx1ZXMoc3Vib3B0aW9uVmFsdWUsIG5vUmVjdXJzaXZlKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoc3Vib3B0aW9uVmFsdWUuaXNGaWxsZWRCeUZpbHRlcnMpIGlzU29tZU9wdGlvbk5vdGRpc2FibGVkID0gdHJ1ZTtcbiAgICAgIH1cbiAgICAgIGlmICghaXNTb21lT3B0aW9uTm90ZGlzYWJsZWQpIGlzRXZlcnlDYXRlZ29yeUNvbnRhaW5zT25lT3B0aW9uTm90ZGlzYWJsZWQgPSBmYWxzZTtcbiAgICAgIC8vY29uc29sZS5sb2coXCJDYXRlZ29yeVZhbHVlIFwiICsgY2F0ZWdvcnlWYWx1ZS5jYXRlZ29yeS5uYW1lICsgXCJpc1NvbWVPcHRpb25Ob3RkaXNhYmxlZFwiLCBpc1NvbWVPcHRpb25Ob3RkaXNhYmxlZCk7XG4gICAgfVxuXG4gICAgaWYgKG9wdGlvblZhbHVlLm9wdGlvbilcbiAgICB7XG4gICAgICAvL2NvbnNvbGUubG9nKFwiT3B0aW9uVmFsdWUgXCIgKyBvcHRpb25WYWx1ZS5vcHRpb24ubmFtZSArIFwiIDogaXNFdmVyeUNhdGVnb3lyQ29udGFpbk9uT3B0aW9uXCIsIGlzRXZlcnlDYXRlZ29yeUNvbnRhaW5zT25lT3B0aW9uTm90ZGlzYWJsZWQgKTtcbiAgICAgIG9wdGlvblZhbHVlLmlzRmlsbGVkQnlGaWx0ZXJzID0gaXNFdmVyeUNhdGVnb3J5Q29udGFpbnNPbmVPcHRpb25Ob3RkaXNhYmxlZDtcbiAgICAgIGlmICghb3B0aW9uVmFsdWUuaXNGaWxsZWRCeUZpbHRlcnMpIG9wdGlvblZhbHVlLnNldFJlY3Vyc2l2ZWx5RmlsbGVkQnlGaWx0ZXJzKG9wdGlvblZhbHVlLmlzRmlsbGVkQnlGaWx0ZXJzKTtcbiAgICB9XG4gIH1cbn0iLCJpbXBvcnQgeyBFbGVtZW50LCBFbGVtZW50QmFzZSwgT3B0aW9uVmFsdWUsIENhdGVnb3J5VmFsdWUsIENhdGVnb3J5LCBPcHRpb24gfSBmcm9tICcuLi8uLi9jbGFzc2VzL2NsYXNzZXMnOyBcbmltcG9ydCB7IGNhcGl0YWxpemUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnNcIjtcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcblxuZXhwb3J0IGNsYXNzIEVsZW1lbnRPcHRpb25WYWx1ZXNNb2R1bGVcbntcbiAgY3JlYXRlT3B0aW9uVmFsdWVzKG9wdGlvbnNWYWx1ZXNKc29uIDogYW55LCBlbGVtZW50IDogRWxlbWVudEJhc2UpXG4gIHtcbiAgICBlbGVtZW50Lm9wdGlvbnNWYWx1ZXMgPSBbXTtcblxuICAgIGlmKCFvcHRpb25zVmFsdWVzSnNvbikgcmV0dXJuO1xuXG4gICAgZm9yIChsZXQga2V5ID0gMDsga2V5IDwgb3B0aW9uc1ZhbHVlc0pzb24ubGVuZ3RoOyArK2tleSkgXG4gICAge1xuICAgICAgdGhpcy5jcmVhdGVPcHRpb25WYWx1ZUZvckVsZW1lbnQob3B0aW9uc1ZhbHVlc0pzb25ba2V5XSwga2V5LCBlbGVtZW50KTtcbiAgICB9IFxuXG4gICAgdGhpcy5sb29rZm9yTWlzc2luZ1BhcmVudHNPcHRpb24oZWxlbWVudCk7ICAgIFxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVPcHRpb25WYWx1ZUZvckVsZW1lbnQob3B0aW9uVmFsdWVKc29uLCBrZXkgOiBudW1iZXIsIGVsZW1lbnQgOiBFbGVtZW50QmFzZSlcbiAge1xuICAgIGxldCBuZXdPcHRpb24gPSBuZXcgT3B0aW9uVmFsdWUob3B0aW9uVmFsdWVKc29uLCBrZXkpO1xuXG4gICAgaWYgKG5ld09wdGlvbi5vcHRpb24pXG4gICAge1xuICAgICAgaWYgKG5ld09wdGlvbi5vcHRpb24uaXNNYWluT3B0aW9uKSBcbiAgICAgICAgZWxlbWVudC5tYWluT3B0aW9uT3duZXJJZHMucHVzaChuZXdPcHRpb24ub3B0aW9uSWQpO1xuXG4gICAgICBlbGVtZW50Lm9wdGlvbnNWYWx1ZXMucHVzaChuZXdPcHRpb24pO1xuICAgIH0gICBcblxuICAgIHJldHVybiBuZXdPcHRpb247ICAgXG4gIH1cblxuICB1cGRhdGVPcHRpb25zV2l0aERlc2NyaXB0aW9uKGVsZW1lbnQgOiBFbGVtZW50QmFzZSwgJG9wdGlvblZhbHVlc0Rlc2NyaXB0aW9uKSB7XG4gICAgZWxlbWVudC5vcHRpb25zVmFsdWVzLmZvckVhY2goIChvcHRpb25WYWx1ZSkgPT4geyBcbiAgICAgIGxldCBjb3JyZXNwb25kaW5nT3B0aW9uVmFsdWV3aXRoRGVzY3JpcHRpb24gPSAkb3B0aW9uVmFsdWVzRGVzY3JpcHRpb24uZmlsdGVyKCAob2JqZWN0KSA9PiBvYmplY3QuY2F0ZWdvcnlJZCA9PSBvcHRpb25WYWx1ZS5vcHRpb25JZClbMF07XG4gICAgICBpZiAoIWNvcnJlc3BvbmRpbmdPcHRpb25WYWx1ZXdpdGhEZXNjcmlwdGlvbikgcmV0dXJuO1xuICAgICAgb3B0aW9uVmFsdWUuZGVzY3JpcHRpb24gPSBjb3JyZXNwb25kaW5nT3B0aW9uVmFsdWV3aXRoRGVzY3JpcHRpb24uZGVzY3JpcHRpb247XG4gICAgfSk7XG4gIH1cblxuICBjcmVhdGVPcHRpb25zVHJlZShlbGVtZW50IDogRWxlbWVudEJhc2UpXG4gIHtcbiAgICBsZXQgbWFpbkNhdGVnb3J5ID0gQXBwLnRheG9ub215TW9kdWxlLnRheG9ub215O1xuICAgIGVsZW1lbnQub3B0aW9uVHJlZSA9IHRoaXMucmVjdXNpdmVseUNyZWF0ZU9wdGlvblRyZWUoZWxlbWVudCwgbWFpbkNhdGVnb3J5LCBuZXcgT3B0aW9uVmFsdWUoe30pKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXNpdmVseUNyZWF0ZU9wdGlvblRyZWUoZWxlbWVudCA6IEVsZW1lbnRCYXNlLCBjYXRlZ29yeSA6IENhdGVnb3J5LCBvcHRpb25WYWx1ZSA6IE9wdGlvblZhbHVlKVxuICB7XG4gICAgbGV0IGNhdGVnb3J5VmFsdWUgPSBuZXcgQ2F0ZWdvcnlWYWx1ZShjYXRlZ29yeSk7XG5cbiAgICBmb3IobGV0IG9wdGlvbiBvZiBjYXRlZ29yeS5vcHRpb25zKVxuICAgIHsgICAgICBcbiAgICAgIGxldCBjaGlsZE9wdGlvblZhbHVlID0gdGhpcy5nZXRFbGVtZW50T3B0aW9uVmFsdWVDb3JyZXNwb25kaW5nVG9PcHRpb25JZChlbGVtZW50LCBvcHRpb24uaWQpO1xuICAgICAgXG4gICAgICBpZiAoY2hpbGRPcHRpb25WYWx1ZSlcbiAgICAgIHtcbiAgICAgICAgY2F0ZWdvcnlWYWx1ZS5hZGRPcHRpb25WYWx1ZShjaGlsZE9wdGlvblZhbHVlKTtcbiAgICAgICAgZm9yKGxldCBzdWJjYXRlZ29yeSBvZiBvcHRpb24uc3ViY2F0ZWdvcmllcylcbiAgICAgICAge1xuICAgICAgICAgIHRoaXMucmVjdXNpdmVseUNyZWF0ZU9wdGlvblRyZWUoZWxlbWVudCwgc3ViY2F0ZWdvcnksIGNoaWxkT3B0aW9uVmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9ICAgICAgXG4gICAgfVxuXG4gICAgaWYgKGNhdGVnb3J5VmFsdWUuY2hpbGRyZW4ubGVuZ3RoID4gMClcbiAgICB7XG4gICAgICBjYXRlZ29yeVZhbHVlLmNoaWxkcmVuLnNvcnQoIChhLGIpID0+IGEuaW5kZXggLSBiLmluZGV4KTtcbiAgICAgIG9wdGlvblZhbHVlLmFkZENhdGVnb3J5VmFsdWUoY2F0ZWdvcnlWYWx1ZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG9wdGlvblZhbHVlOyBcbiAgfSAgXG5cbiAgcHJpdmF0ZSBnZXRFbGVtZW50T3B0aW9uVmFsdWVDb3JyZXNwb25kaW5nVG9PcHRpb25JZChlbGVtZW50IDogRWxlbWVudEJhc2UsICRvcHRpb25JZCA6IG51bWJlcikgOiBPcHRpb25WYWx1ZVxuICB7XG4gICAgbGV0IGluZGV4ID0gZWxlbWVudC5vcHRpb25zVmFsdWVzLm1hcCgodmFsdWUpID0+IHZhbHVlLm9wdGlvbklkKS5pbmRleE9mKCRvcHRpb25JZC50b1N0cmluZygpKTtcbiAgICBpZiAoaW5kZXggPT0gLTEpIHJldHVybiBudWxsO1xuICAgIHJldHVybiBlbGVtZW50Lm9wdGlvbnNWYWx1ZXNbaW5kZXhdO1xuICB9XG5cbiAgLy8gbG9vayBmb3IgbWlzc2luZyBwYXJlbnQgb3B0aW9ucyB2YWx1ZXMuIGlmIGFuIGVsZW1lbnQgY29udGFpbnNcbiAgLy8gb25seSB0aGUgZGVlcGVzdCBvcHRpb24gdmFsdWUsIHdlIGFkZCBhbGwgdGhlIHBhcmVudHMgb3B0aW9uc1xuICAvLyBvZiB0aG9zZSBkZWVwZXN0IG9wdGlvbnMgc28gZmlsdGVycyBjYW4gd29ya3MgcHJvcGVybHlcbiAgcHJpdmF0ZSBsb29rZm9yTWlzc2luZ1BhcmVudHNPcHRpb24oZWxlbWVudCA6IEVsZW1lbnRCYXNlKVxuICB7XG4gICAgbGV0IG9wdGlvblZhbHVlc0lkcyA9IGVsZW1lbnQub3B0aW9uc1ZhbHVlcy5tYXAoIChlbCkgPT4gZWwub3B0aW9uSWQpO1xuICAgIGZvcihsZXQgb3B0aW9uVmFsdWUgb2YgZWxlbWVudC5vcHRpb25zVmFsdWVzKVxuICAgICAgZm9yIChsZXQgcGFyZW50T3B0aW9uSWQgb2Ygb3B0aW9uVmFsdWUub3B0aW9uLnBhcmVudE9wdGlvbklkcykgICAgICBcbiAgICAgICAgaWYgKG9wdGlvblZhbHVlc0lkcy5pbmRleE9mKHBhcmVudE9wdGlvbklkLnRvU3RyaW5nKCkpID09IC0xKVxuICAgICAgICB7XG4gICAgICAgICAgbGV0IG5ld09wdGlvbiA9IHRoaXMuY3JlYXRlT3B0aW9uVmFsdWVGb3JFbGVtZW50KHBhcmVudE9wdGlvbklkLCAwLCBlbGVtZW50KTtcbiAgICAgICAgICAvLyBjb25zb2xlLmxvZyhcIk1pc3Npbmcgb3B0aW9uXCIsIG5ld09wdGlvbi5vcHRpb24ubmFtZVNob3J0LCBlbGVtZW50Lm5hbWUpO1xuICAgICAgICAgIG9wdGlvblZhbHVlc0lkcy5wdXNoKHBhcmVudE9wdGlvbklkKTsgXG4gICAgICAgIH0gXG4gIH1cblxuICB1cGRhdGVPcHRpb25WYWx1ZUNvbG9yKGVsZW1lbnQgOiBFbGVtZW50LCAkb3B0aW9uVmFsdWUgOiBPcHRpb25WYWx1ZSlcbiAge1xuICAgIGlmICghJG9wdGlvblZhbHVlKSByZXR1cm47XG4gICAgLy8gY29uc29sZS5sb2coXCJ1cGRhdGVPcHRpb25WYWx1ZVwiLCAkb3B0aW9uVmFsdWUub3B0aW9uLm5hbWUpO1xuICAgIGlmICgkb3B0aW9uVmFsdWUub3B0aW9uLnVzZUNvbG9yRm9yTWFya2VyKVxuICAgIHtcbiAgICAgICRvcHRpb25WYWx1ZS5jb2xvck9wdGlvbklkID0gJG9wdGlvblZhbHVlLm9wdGlvbklkO1xuICAgIH0gICAgXG4gICAgZWxzZSBcbiAgICB7XG4gICAgICBsZXQgb3B0aW9uIDogT3B0aW9uO1xuICAgICAgbGV0IGNhdGVnb3J5IDogQ2F0ZWdvcnk7XG4gICAgICBsZXQgY29sb3JJZCA6IG51bWJlciA9IG51bGw7XG5cbiAgICAgIGxldCBzaWJsaW5nc09wdGlvbnNGb3JDb2xvcmluZyA6IE9wdGlvblZhbHVlW10gPSBlbGVtZW50LmdldEN1cnJPcHRpb25zVmFsdWVzKCkuZmlsdGVyKCBcbiAgICAgICAgKG9wdGlvblZhbHVlKSA9PiBcbiAgICAgICAgICBvcHRpb25WYWx1ZS5pc0ZpbGxlZEJ5RmlsdGVycyBcbiAgICAgICAgICAmJiBvcHRpb25WYWx1ZS5vcHRpb24udXNlQ29sb3JGb3JNYXJrZXJcbiAgICAgICAgICAmJiBvcHRpb25WYWx1ZS5vcHRpb24ub3duZXJJZCAhPT0gJG9wdGlvblZhbHVlLm9wdGlvbi5vd25lcklkIFxuICAgICAgICAgICYmIG9wdGlvblZhbHVlLmNhdGVnb3J5T3duZXIub3duZXJJZCA9PSAkb3B0aW9uVmFsdWUuY2F0ZWdvcnlPd25lci5vd25lcklkXG4gICAgICApO1xuXG4gICAgICAvL2NvbnNvbGUubG9nKFwic2libGluZ3NPcHRpb25zRm9yQ29sb3JpbmdcIiwgc2libGluZ3NPcHRpb25zRm9yQ29sb3JpbmcubWFwKCAob3ApID0+IG9wLm9wdGlvbi5uYW1lKSk7XG4gICAgICBpZiAoc2libGluZ3NPcHRpb25zRm9yQ29sb3JpbmcubGVuZ3RoID4gMClcbiAgICAgIHtcbiAgICAgICAgb3B0aW9uID0gPE9wdGlvbj4gc2libGluZ3NPcHRpb25zRm9yQ29sb3Jpbmcuc2hpZnQoKS5vcHRpb247XG4gICAgICAgIC8vY29uc29sZS5sb2coXCItPiBzaWJsaW5nIGZvdW5kIDogXCIsIG9wdGlvbi5uYW1lKTtcbiAgICAgICAgY29sb3JJZCA9IG9wdGlvbi5pZDtcbiAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgIHtcbiAgICAgICAgb3B0aW9uID0gJG9wdGlvblZhbHVlLm9wdGlvbjtcbiAgICAgICAgLy8gY29uc29sZS5sb2cob3B0aW9uLm5hbWUsIFwibm8gc2libGluZ3MsIGxvb2tpbmcgZm9yIHBhcmVudFwiKTtcbiAgICAgICAgd2hpbGUoY29sb3JJZCA9PSBudWxsICYmIG9wdGlvbilcbiAgICAgICAge1xuICAgICAgICAgIGNhdGVnb3J5ID0gPENhdGVnb3J5PiBvcHRpb24uZ2V0T3duZXIoKTtcbiAgICAgICAgICBpZiAoY2F0ZWdvcnkpXG4gICAgICAgICAge1xuICAgICAgICAgICAgb3B0aW9uID0gPE9wdGlvbj4gY2F0ZWdvcnkuZ2V0T3duZXIoKTtcbiAgICAgICAgICAgIGlmICghb3B0aW9uKSBicmVhazsgICAgIFxuICAgICAgICAgICAgLy8gY29uc29sZS5sb2coXCIgIC0+IHBhcmVudCBvcHRpb25cIiArIG9wdGlvbi5uYW1lICsgXCIgdXNlY29sb3JGb3JNYXJrZXJcIiwgb3B0aW9uLnVzZUNvbG9yRm9yTWFya2VyKTtcbiAgICAgICAgICAgIGNvbG9ySWQgPSBvcHRpb24udXNlQ29sb3JGb3JNYXJrZXIgPyBvcHRpb24uaWQgOiBudWxsO1xuICAgICAgICAgIH0gICAgICAgICAgXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIFxuICAgICAgJG9wdGlvblZhbHVlLmNvbG9yT3B0aW9uSWQgPSBjb2xvcklkO1xuICAgIH1cbiAgfVxufSIsImltcG9ydCB7IEVsZW1lbnQgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5pbXBvcnQgeyBFdmVudCB9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2V2ZW50LmNsYXNzXCI7XG5pbXBvcnQgeyBzbHVnaWZ5LCBwYXJzZVVyaUlkIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudHNDb252ZXJ0ZWRcbnsgXG4gIG5ld0VsZW1lbnRzTGVuZ3RoIDogbnVtYmVyO1xuICBlbGVtZW50c1VwZGF0ZWRMZW5ndGggOiBudW1iZXI7XG4gIG5ld0VsZW1lbnRzIDogRWxlbWVudFtdO1xuICBlbGVtZW50c0NvbnZlcnRlZCA6IEVsZW1lbnRbXVxufVxuXG5leHBvcnQgY2xhc3MgRWxlbWVudHNKc29uTW9kdWxlXG57XG4gIGVsZW1lbnRzQ3JlYXRlZENvdW50IDogbnVtYmVyID0gMDtcbiAgb25OZXdzRWxlbWVudHNDb252ZXJ0ZWQgPSBuZXcgRXZlbnQ8RWxlbWVudFtdPigpO1xuXG4gIGNvbnZlcnRKc29uRWxlbWVudHMoZWxlbWVudExpc3QgOiBhbnlbXSwgY2hlY2tJZkFscmVhZHlFeGlzdCA9IHRydWUsIGlzRnVsbFJlcHJlc2VudGF0aW9uIDogYm9vbGVhbiA9IHRydWUpIFxuICB7XG4gICAgaWYgKCFlbGVtZW50TGlzdCkgcmV0dXJuIHsgXG4gICAgICBuZXdFbGVtZW50c0xlbmd0aCA6IFtdLCBcbiAgICAgIGVsZW1lbnRzVXBkYXRlZExlbmd0aCA6IDAsIFxuICAgICAgbmV3RWxlbWVudHM6IFtdLCBcbiAgICAgIGVsZW1lbnRzQ29udmVydGVkOiBbXSwgXG4gICAgfTtcblxuICAgIGxldCBlbGVtZW50IDogRWxlbWVudCwgZWxlbWVudEpzb247XG4gICAgbGV0IG5ld0VsZW1lbnRzIDogRWxlbWVudFtdID0gW107XG4gICAgbGV0IGVsZW1lbnRzQ29udmVydGVkIDogRWxlbWVudFtdID0gW107XG4gICAgbGV0IHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG4gICAgXG4gICAgdGhpcy5jaGVrc0lkc0FuZENyZWF0ZU9uZXNJZk5lZWRlZChlbGVtZW50TGlzdCk7XG4gICAgXG4gICAgbGV0IG5ld0VsZW1lbnRzSnNvbiA9IGVsZW1lbnRMaXN0LmZpbHRlcigob2JqKSA9PiBBcHAuZWxlbWVudHNNb2R1bGUuZXZlcnlFbGVtZW50c0lkLmluZGV4T2Yob2JqLmlkKSA8IDAgKTtcbiAgICBsZXQgZWxlbWVudHNUb1VwZGF0ZUpzb24gPSBbXTtcbiAgICBpZiAoaXNGdWxsUmVwcmVzZW50YXRpb24pXG4gICAgeyAgICAgIFxuICAgICAgZWxlbWVudHNUb1VwZGF0ZUpzb24gPSBlbGVtZW50TGlzdC5maWx0ZXIoKG9iaikgPT4gQXBwLmVsZW1lbnRzTW9kdWxlLmV2ZXJ5RWxlbWVudHNJZC5pbmRleE9mKG9iai5pZCkgPj0gMCApO1xuICAgICAgbGV0IGogPSBlbGVtZW50c1RvVXBkYXRlSnNvbi5sZW5ndGg7XG4gICAgICB3aGlsZShqLS0pXG4gICAgICB7XG4gICAgICAgIGVsZW1lbnRKc29uID0gZWxlbWVudHNUb1VwZGF0ZUpzb25bal07XG4gICAgICAgIGVsZW1lbnQgPSBBcHAuZWxlbWVudEJ5SWQoZWxlbWVudEpzb24uaWQpO1xuICAgICAgICBlbGVtZW50LnVwZGF0ZVdpdGhKc29uKGVsZW1lbnRKc29uKTtcbiAgICAgICAgZWxlbWVudHNDb252ZXJ0ZWQucHVzaChlbGVtZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBsZXQgaSA9IG5ld0VsZW1lbnRzSnNvbi5sZW5ndGg7XG4gICAgd2hpbGUoaS0tKVxuICAgIHtcbiAgICAgIGVsZW1lbnRKc29uID0gbmV3RWxlbWVudHNKc29uW2ldO1xuICAgICAgZWxlbWVudCA9IG5ldyBFbGVtZW50KGVsZW1lbnRKc29uKTtcbiAgICAgIGVsZW1lbnQuaW5pdGlhbGl6ZSgpO1xuICAgICAgbmV3RWxlbWVudHMucHVzaChlbGVtZW50KTtcbiAgICB9XG5cbiAgICBlbGVtZW50c0NvbnZlcnRlZCA9IGVsZW1lbnRzQ29udmVydGVkLmNvbmNhdChuZXdFbGVtZW50cyk7ICAgIFxuXG4gICAgbGV0IGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuICAgIC8vY29uc29sZS5sb2coXCJBZGRKc29uRWxlbWVudHMgaW4gXCIgKyAoZW5kLXN0YXJ0KSArIFwiIG1zXCIsIGVsZW1lbnRKc29uKTsgIFxuXG4gICAgdGhpcy5vbk5ld3NFbGVtZW50c0NvbnZlcnRlZC5lbWl0KG5ld0VsZW1lbnRzKTtcblxuICAgIHJldHVybiB7IFxuICAgICAgbmV3RWxlbWVudHNMZW5ndGggOiBuZXdFbGVtZW50c0pzb24ubGVuZ3RoLCBcbiAgICAgIGVsZW1lbnRzVXBkYXRlZExlbmd0aCA6IGVsZW1lbnRzVG9VcGRhdGVKc29uLmxlbmd0aCwgXG4gICAgICBuZXdFbGVtZW50czogbmV3RWxlbWVudHMsIFxuICAgICAgZWxlbWVudHNDb252ZXJ0ZWQ6IGVsZW1lbnRzQ29udmVydGVkXG4gICAgfTtcbiAgfTtcblxuICBsb2FkTG9jYWxFbGVtZW50cygpXG4gIHtcbiAgICBpZiAoIUFwcC5jb25maWcuZGF0YS5yZXRyaWV2ZUVsZW1lbnRzQnlBcGkpXG4gICAge1xuICAgICAgbGV0IGVsZW1lbnRzID0gQXBwLmNvbmZpZy5kYXRhLmVsZW1lbnRzO1xuICAgICAgbGV0IGVsZW1lbnRKc29uQXJyYXkgPSBlbGVtZW50cy5sZW5ndGggPyBlbGVtZW50cyA6IGVsZW1lbnRzLmRhdGE7XG4gICAgICBsZXQgcmVzdWx0ID0gdGhpcy5jb252ZXJ0SnNvbkVsZW1lbnRzKGVsZW1lbnRKc29uQXJyYXksIHRydWUsIHRydWUpO1xuICAgICAgQXBwLmFqYXhNb2R1bGUuYWxsRWxlbWVudHNSZWNlaXZlZCA9IHRydWU7XG4gICAgICBpZiAoIUFwcC5jb25maWcubWFwLmRlZmF1bHRCb3VuZHNQcm92aWRlZCAmJiAhQXBwLmhpc3RvcnlTdGF0ZU1hbmFnZXIubGFzdEhpc3RvcnlTdGF0ZS52aWV3cG9ydCkge1xuICAgICAgICBjb25zb2xlLmxvZyhcImZpdCB0byBlbGVtZW50cyBib3VuZHNcIik7XG4gICAgICAgIEFwcC5tYXBDb21wb25lbnQuZml0RWxlbWVudHNCb3VuZHMocmVzdWx0LmVsZW1lbnRzQ29udmVydGVkKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBGaXhpbmcgbWlzc2luZyBJZHMsIG9yIGNvbnZlcnQgVVJJIGlkcyBhcyBzdGFuZGFyZCBJZHNcbiAgY2hla3NJZHNBbmRDcmVhdGVPbmVzSWZOZWVkZWQoZWxlbWVudExpc3QpXG4gIHtcbiAgICBlbGVtZW50TGlzdC5mb3JFYWNoKCAoZSwgaW5kZXgpID0+ICB7XG4gICAgICBsZXQgaWQgPSBlWzBdIHx8IGUuaWQgfHwgZVtcIkBpZFwiXSB8fCBlLmNvbXBhY3RKc29uWzBdOyAvLyBpbiBjb21wYWN0IHdheSwgaWQgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YgYW4gYXJyYXlcbiAgICAgIGlmICghaWQgfHwgdHlwZW9mIGlkICE9IFwic3RyaW5nXCIpIGlkID0gXCJnZW5lcmF0ZWRcIiArIHRoaXMuZWxlbWVudHNDcmVhdGVkQ291bnQrKztcbiAgICAgIGVsc2UgaWQgPSBwYXJzZVVyaUlkKGlkKTtcbiAgICAgIGUuaWQgPSBpZDtcbiAgICB9KTtcbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzLCBBcHBEYXRhVHlwZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciAkO1x0XG5cbmltcG9ydCB7IEV2ZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvZXZlbnQuY2xhc3NcIjtcbmltcG9ydCB7IEVsZW1lbnQsIEVsZW1lbnRTdGF0dXMgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRWxlbWVudHNUb0Rpc3BsYXlDaGFuZ2VkXG57IFxuXHRlbGVtZW50c1RvRGlzcGxheSA6IEVsZW1lbnRbXTtcblx0bmV3RWxlbWVudHMgOiBFbGVtZW50W107XG5cdGVsZW1lbnRzVG9SZW1vdmUgOiBFbGVtZW50W107XG59XG5cbmV4cG9ydCBjbGFzcyBFbGVtZW50c01vZHVsZVxue1xuXHRvbkVsZW1lbnRzVG9EaXNwbGF5Q2hhbmdlZCA9IG5ldyBFdmVudDxFbGVtZW50c1RvRGlzcGxheUNoYW5nZWQ+KCk7XG5cblx0cHJpdmF0ZSBldmVyeUVsZW1lbnRzXyA6IEVsZW1lbnRbXVtdID0gW107XG5cdHByaXZhdGUgZXZlcnlFbGVtZW50c0lkXyA6IHN0cmluZ1tdID0gW107XG5cdFxuXHQvLyBjdXJyZW50IHZpc2libGUgZWxlbWVudHNcblx0cHJpdmF0ZSB2aXNpYmxlRWxlbWVudHNfIDogRWxlbWVudFtdW10gPSBbXTtcblx0cHJpdmF0ZSBzZWFyY2hSZXN1bHRFbGVtZW50c18gOiBFbGVtZW50W10gPSBbXTtcdFxuXG5cdGZpcnN0RWxlbWVudHNIYXZlQmVlbmRpc3BsYXllZCA6IGJvb2xlYW4gPSBmYWxzZTtcdFxuXG5cdGluaXRpYWxpemUoKVxuXHR7XG5cdFx0dGhpcy5ldmVyeUVsZW1lbnRzX1snYWxsJ10gPSBbXTtcblx0XHR0aGlzLnZpc2libGVFbGVtZW50c19bJ2FsbCddID0gW107XG5cdFx0Zm9yKGxldCBvcHRpb24gb2YgQXBwLnRheG9ub215TW9kdWxlLmdldE1haW5PcHRpb25zKCkpXG5cdFx0e1xuXHRcdFx0dGhpcy5ldmVyeUVsZW1lbnRzX1tvcHRpb24uaWRdID0gW107XG5cdFx0XHR0aGlzLnZpc2libGVFbGVtZW50c19bb3B0aW9uLmlkXSA9IFtdO1xuXHRcdH1cdFxuXHR9XHRcblxuXHRhZGRFbGVtZW50cyhuZXdFbGVtZW50cyA6IEVsZW1lbnRbXSlcblx0e1xuXHRcdGZvcihsZXQgZWxlbWVudCBvZiBuZXdFbGVtZW50cylcblx0XHR7XG5cdFx0XHRmb3IgKGxldCBtYWluSWQgb2YgZWxlbWVudC5tYWluT3B0aW9uT3duZXJJZHMpXG5cdFx0XHR7XG5cdFx0XHRcdHRoaXMuZXZlcnlFbGVtZW50c19bbWFpbklkXS5wdXNoKGVsZW1lbnQpO1xuXHRcdFx0fVx0XHRcdFx0XG5cdFx0XHR0aGlzLmV2ZXJ5RWxlbWVudHNfWydhbGwnXS5wdXNoKGVsZW1lbnQpO1xuXHRcdFx0dGhpcy5ldmVyeUVsZW1lbnRzSWRfLnB1c2goZWxlbWVudC5pZCk7XG5cdFx0fVx0XG5cblx0XHRBcHAuZmF2b3JpdGVNb2R1bGUuY2hlY2tDb29raWVzKCk7XHRcblx0XHRBcHAuc3RhbXBNb2R1bGUuY2hlY2tGb3JBZGRpbmdTdGFtcHMobmV3RWxlbWVudHMpO1xuXHR9XHRcblxuXHRjbGVhckN1cnJlbnRzRWxlbWVudCgpXG5cdHtcblx0XHQvL2NvbnNvbGUubG9nKFwiY2xlYXJDdXJyRWxlbWVudHNcIik7XG5cdFx0bGV0IHZpc2libGVFbGVtZW50cyA9IHRoaXMuY3VyclZpc2libGVFbGVtZW50cygpO1xuXHRcdGlmICghdmlzaWJsZUVsZW1lbnRzIHx8ICF2aXNpYmxlRWxlbWVudHMubGVuZ3RoKSByZXR1cm47XG5cdFx0bGV0IGwgPSB2aXNpYmxlRWxlbWVudHMubGVuZ3RoO1xuXHRcdHdoaWxlKGwtLSlcblx0XHR7XG5cdFx0XHR2aXNpYmxlRWxlbWVudHNbbF0uaXNEaXNwbGF5ZWQgPSBmYWxzZTtcblx0XHR9XG5cdFx0bGV0IG1hcmtlcnMgPSB2aXNpYmxlRWxlbWVudHMubWFwKCAoZSkgPT4gZS5tYXJrZXIuZ2V0TGVhZmxldE1hcmtlcigpKTtcblx0XHRBcHAubWFwQ29tcG9uZW50LnJlbW92ZU1hcmtlcnMobWFya2Vycyk7XG5cblx0XHR0aGlzLmNsZWFyQ3VyclZpc2libGVFbGVtZW50cygpO1xuXHR9XHRcblxuXHQvLyBjaGVjayBlbGVtZW50cyBpbiBib3VuZHMgYW5kIHdobyBhcmUgbm90IGZpbHRlcmVkXG5cdHVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5KGNoZWNrSW5BbGxFbGVtZW50cyA9IHRydWUsIGZpbHRlckhhc0NoYW5nZWQgPSBmYWxzZSkgXG5cdHtcdFxuXHRcdGlmIChBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXAgJiYgIUFwcC5tYXBDb21wb25lbnQuaXNNYXBMb2FkZWQpIHJldHVybjtcblxuXHRcdGxldCBlbGVtZW50cyA6IEVsZW1lbnRbXSA9IFtdO1xuXG5cdFx0Ly8gR2V0dGluZyB0aGUgZWxlbWVudCBhcnJheSB0byB3b3JrIG9uXG5cdFx0aWYgKCAoQXBwLnN0YXRlID09IEFwcFN0YXRlcy5TaG93RWxlbWVudEFsb25lIHx8IEFwcC5zdGF0ZSA9PSBBcHBTdGF0ZXMuU2hvd0RpcmVjdGlvbnMgKSAmJiBBcHAubW9kZSA9PSBBcHBNb2Rlcy5NYXApIFxuXHRcdFx0ZWxlbWVudHMgPSBbQXBwLkRFQU1vZHVsZS5nZXRFbGVtZW50KCldO1x0XHRcblx0XHRlbHNlIGlmIChBcHAuZGF0YVR5cGUgPT0gQXBwRGF0YVR5cGUuQWxsKVxuXHRcdHtcdFx0XHRcblx0XHRcdGlmIChjaGVja0luQWxsRWxlbWVudHMgfHwgdGhpcy52aXNpYmxlRWxlbWVudHNfLmxlbmd0aCA9PT0gMCkgXG5cdFx0XHRcdFx0ZWxlbWVudHMgPSB0aGlzLmN1cnJFdmVyeUVsZW1lbnRzKCk7XG5cdFx0XHRlbHNlIGVsZW1lbnRzID0gdGhpcy5jdXJyVmlzaWJsZUVsZW1lbnRzKCk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKEFwcC5kYXRhVHlwZSA9PSBBcHBEYXRhVHlwZS5TZWFyY2hSZXN1bHRzKVxuXHRcdHtcblx0XHRcdGVsZW1lbnRzID0gdGhpcy5zZWFyY2hSZXN1bHRFbGVtZW50c187XG5cdFx0fVx0XHRcblx0XHRcblx0XHRpZiAoIWVsZW1lbnRzKSByZXR1cm47XG5cblx0XHRsZXQgaSA6IG51bWJlciwgZWxlbWVudCA6IEVsZW1lbnQ7XG5cblx0IFx0bGV0IG5ld0VsZW1lbnRzIDogRWxlbWVudFtdID0gW107XG5cdCBcdGxldCBlbGVtZW50c1RvUmVtb3ZlIDogRWxlbWVudFtdID0gW107XHRcdFxuXHRcdFxuXHRcdGkgPSBlbGVtZW50cy5sZW5ndGg7XG5cdFx0bGV0IGZpbHRlck1vZHVsZSA9IEFwcC5maWx0ZXJNb2R1bGU7XHRcblx0XHRsZXQgY3VyckJvdW5kcyA9IEFwcC5ib3VuZHNNb2R1bGUuZXh0ZW5kZWRCb3VuZHM7XG5cdFx0bGV0IHN0YXJ0ID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XG5cblx0XHQvLyBjb25zb2xlLmxvZyhcInVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5LiBOYnJlIGVsZW1lbnQgw6AgdHJhaXRlciA6IFwiICsgaSwgY2hlY2tJbkFsbEVsZW1lbnRzKTtcblxuXHRcdHdoaWxlKGktLSlcblx0XHR7XG5cdFx0XHRlbGVtZW50ID0gZWxlbWVudHNbaV07XG5cblx0XHRcdGlmICghZWxlbWVudCkgYnJlYWs7XG5cblx0XHRcdGxldCBlbGVtZW50SW5Cb3VuZHMgPSBmYWxzZTtcblx0XHRcdGlmICh0aGlzLm5vTmVlZFRvQ2hlY2tCb3VuZHMoKSkgZWxlbWVudEluQm91bmRzID0gdHJ1ZTtcblx0XHRcdGVsc2UgZWxlbWVudEluQm91bmRzID0gY3VyckJvdW5kcyAmJiBlbGVtZW50LnBvc2l0aW9uICYmIGN1cnJCb3VuZHMuY29udGFpbnMoZWxlbWVudC5wb3NpdGlvbik7XG5cblx0XHRcdGlmICggZWxlbWVudEluQm91bmRzICYmIGZpbHRlck1vZHVsZS5jaGVja0lmRWxlbWVudFBhc3NGaWx0ZXJzKGVsZW1lbnQpKVxuXHRcdFx0e1xuXHRcdFx0XHRpZiAoIWVsZW1lbnQuaXNEaXNwbGF5ZWQpXG5cdFx0XHRcdHtcblx0XHRcdFx0XHRlbGVtZW50LmlzRGlzcGxheWVkID0gdHJ1ZTtcblx0XHRcdFx0XHR0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKS5wdXNoKGVsZW1lbnQpO1xuXHRcdFx0XHRcdG5ld0VsZW1lbnRzLnB1c2goZWxlbWVudCk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGVsc2Vcblx0XHRcdHtcblx0XHRcdFx0aWYgKGVsZW1lbnQuaXNEaXNwbGF5ZWQpIFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0ZWxlbWVudC5pc0Rpc3BsYXllZCA9IGZhbHNlO1xuXHRcdFx0XHRcdGVsZW1lbnRzVG9SZW1vdmUucHVzaChlbGVtZW50KTtcblx0XHRcdFx0XHRsZXQgaW5kZXggPSB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKS5pbmRleE9mKGVsZW1lbnQpO1xuXHRcdFx0XHRcdGlmIChpbmRleCA+IC0xKSB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKS5zcGxpY2UoaW5kZXgsIDEpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0bGV0IGVuZCA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xuXHRcdGxldCB0aW1lID0gZW5kIC0gc3RhcnQ7XG5cblx0XHQvL3dpbmRvdy5jb25zb2xlLmxvZyhcIlVwZGF0ZUVsZW1lbnRzVG9EaXNwbGF5IGVuIFwiICsgdGltZSArIFwiIG1zXCIpO1xuXHRcdHRoaXMub25FbGVtZW50c1RvRGlzcGxheUNoYW5nZWQuZW1pdCh7XG5cdFx0XHRlbGVtZW50c1RvRGlzcGxheTogdGhpcy5jdXJyVmlzaWJsZUVsZW1lbnRzKCksIFxuXHRcdFx0bmV3RWxlbWVudHMgOiBuZXdFbGVtZW50cywgXG5cdFx0XHRlbGVtZW50c1RvUmVtb3ZlIDogZWxlbWVudHNUb1JlbW92ZVxuXHRcdH0pO1xuXG5cdFx0dGhpcy51cGRhdGVFbGVtZW50c0ljb25zKGZpbHRlckhhc0NoYW5nZWQpO1x0XHRcblxuXHRcdC8vIHN0cmFuZ2UgYnVnLCBhdCBpbml0aWFsaXphdGlvbiwgc29tZSBpc29sYXRlZCBtYXJrZXJzIGFyZSBub3QgZGlzcGxheWVkXG5cdFx0Ly8gcmVmcmVzaGluZyB0aGUgZWxlbWVudE1vZHVsZSBzb2x2ZSB0aGlzLi4uXG5cdFx0aWYgKCF0aGlzLmZpcnN0RWxlbWVudHNIYXZlQmVlbmRpc3BsYXllZCAmJiB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKSAmJiB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKS5sZW5ndGggPiAwKVx0XHRcblx0XHR7XG5cdFx0XHR0aGlzLmZpcnN0RWxlbWVudHNIYXZlQmVlbmRpc3BsYXllZCA9IHRydWU7XG5cdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IHRoaXMudXBkYXRlRWxlbWVudHNUb0Rpc3BsYXkodHJ1ZSkgfSwgMTAwKTtcblx0XHR9XHRcdFxuXHR9O1xuXG5cdHByaXZhdGUgbm9OZWVkVG9DaGVja0JvdW5kcygpXG5cdHtcblx0XHRyZXR1cm4gQXBwLm1vZGUgPT0gQXBwTW9kZXMuTGlzdCAmJiBcblx0XHRcdFx0XHQoQXBwLmRhdGFUeXBlICE9IEFwcERhdGFUeXBlLkFsbCB8fCBBcHAuYWpheE1vZHVsZS5hbGxFbGVtZW50c1JlY2VpdmVkKTtcblx0fVxuXG5cdHVwZGF0ZUVsZW1lbnRzSWNvbnMoc29tZXRoaW5nQ2hhbmdlZCA6IGJvb2xlYW4gPSBmYWxzZSlcblx0e1xuXHRcdC8vY29uc29sZS5sb2coXCJVcGRhdGVDdXJyRWxlbWVudHMgc29tZXRoaW5nQ2hhbmdlZFwiLCBzb21ldGhpbmdDaGFuZ2VkKTtcblx0XHRsZXQgc3RhcnQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblxuXHRcdGxldCB2aXNpYmxlRWxlbWVudHMgPSB0aGlzLmN1cnJWaXNpYmxlRWxlbWVudHMoKTtcblx0XHRpZiAoIXZpc2libGVFbGVtZW50cyB8fCAhdmlzaWJsZUVsZW1lbnRzLmxlbmd0aCkgcmV0dXJuO1xuXHRcdFxuXHRcdGxldCBsID0gdmlzaWJsZUVsZW1lbnRzLmxlbmd0aDtcblx0XHRsZXQgZWxlbWVudCA6IEVsZW1lbnQ7XG5cdFx0d2hpbGUobC0tKVxuXHRcdHtcblx0XHRcdGVsZW1lbnQgPSB2aXNpYmxlRWxlbWVudHNbbF07XG5cdFx0XHRpZiAoc29tZXRoaW5nQ2hhbmdlZCkgZWxlbWVudC5uZWVkVG9CZVVwZGF0ZWRXaGVuU2hvd24gPSB0cnVlO1xuXG5cdFx0XHQvLyBpZiBkb21NYXJrZXIgbm90IHZpc2libGUgdGhhdCdzIG1lYW4gdGhhdCBtYXJrZXIgaXMgaW4gYSBjbHVzdGVyXG5cdFx0XHRpZiAoZWxlbWVudC5tYXJrZXIuZG9tTWFya2VyKCkuaXMoJzp2aXNpYmxlJykpIGVsZW1lbnQudXBkYXRlKCk7XG5cdFx0fVxuXHRcdGxldCBlbmQgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcblx0XHRsZXQgdGltZSA9IGVuZCAtIHN0YXJ0O1xuXHRcdC8vd2luZG93LmNvbnNvbGUubG9nKFwidXBkYXRlRWxlbWVudHNJY29ucyBcIiArIHRpbWUgKyBcIiBtc1wiKTtcblx0fVxuXG5cdHNldFNlYXJjaFJlc3VsdEVsZW1lbnQoZWxlbWVudHMgOiBFbGVtZW50W10pIHsgdGhpcy5zZWFyY2hSZXN1bHRFbGVtZW50c18gPSBlbGVtZW50czsgfVxuXHRnZXRTZWFyY2hFbGVtZW50cygpIDogRWxlbWVudFtdIHsgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0RWxlbWVudHNfOyB9XG5cblx0Z2V0IGV2ZXJ5RWxlbWVudHMoKSAgICAgICAgeyByZXR1cm4gdGhpcy5ldmVyeUVsZW1lbnRzXzsgfVxuXHRnZXQgZXZlcnlFbGVtZW50c0lkKCkgICAgICB7IHJldHVybiB0aGlzLmV2ZXJ5RWxlbWVudHNJZF87IH1cblx0Z2V0IHZpc2libGVFbGVtZW50cygpICAgICAgeyByZXR1cm4gdGhpcy52aXNpYmxlRWxlbWVudHNfOyB9XG5cdGdldCBzZWFyY2hSZXN1bHRFbGVtZW50cygpIHsgcmV0dXJuIHRoaXMuc2VhcmNoUmVzdWx0RWxlbWVudHNfOyB9XG5cblx0Y3VyclZpc2libGVFbGVtZW50cygpICAgICAgeyByZXR1cm4gdGhpcy52aXNpYmxlRWxlbWVudHNfW0FwcC5jdXJyTWFpbklkXTsgfVxuXHRjdXJyRXZlcnlFbGVtZW50cygpICAgICAgICB7IHJldHVybiB0aGlzLmV2ZXJ5RWxlbWVudHNfW0FwcC5jdXJyTWFpbklkXTsgfVxuXHRzZXRDdXJyVmlzaWJsZUVsZW1lbnRzKGVsZW1lbnRzIDogRWxlbWVudFtdKSB7IHRoaXMudmlzaWJsZUVsZW1lbnRzX1tBcHAuY3Vyck1haW5JZF0gPSBlbGVtZW50czsgfVxuXG5cdHByaXZhdGUgY2xlYXJDdXJyVmlzaWJsZUVsZW1lbnRzKCkgeyB0aGlzLnZpc2libGVFbGVtZW50c19bQXBwLmN1cnJNYWluSWRdID0gW107IH1cblxuXHRhbGxFbGVtZW50cygpIHsgcmV0dXJuIHRoaXMuZXZlcnlFbGVtZW50c19bJ2FsbCddOyB9XG5cblx0Z2V0RWxlbWVudEJ5SWQoZWxlbWVudElkKSA6IEVsZW1lbnRcblx0e1xuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5hbGxFbGVtZW50cygpLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpZiAodGhpcy5hbGxFbGVtZW50cygpW2ldLmlkID09IGVsZW1lbnRJZCkgcmV0dXJuIHRoaXMuYWxsRWxlbWVudHMoKVtpXTtcblx0XHR9XG5cdFx0cmV0dXJuIG51bGw7XG5cdH07XG59IiwiaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0ICogYXMgQ29va2llcyBmcm9tIFwiLi4vLi4vdXRpbHMvY29va2llc1wiO1xuXG5leHBvcnQgY2xhc3MgRmF2b3JpdGVNb2R1bGVcbntcbiAgZmF2b3JpdGVJZHNfID0gW107XG5cbiAgY29uc3RydWN0b3IoKVxuICB7XG4gICAgbGV0IGNvb2tpZXMgPSBDb29raWVzLnJlYWRDb29raWUoJ0Zhdm9yaXRlSWRzJyk7XG4gICAgdGhpcy5mYXZvcml0ZUlkc18gPSBjb29raWVzICE9PSBudWxsID8gSlNPTi5wYXJzZShjb29raWVzKSA6IFtdOyAgXG4gIH1cblxuICBjaGVja0Nvb2tpZXMoKVxuICB7XG4gICAgaWYgKEFwcC5jb25maWcuaXNGZWF0dXJlQWN0aXZhdGVkKCdmYXZvcml0ZScpKVxuICAgIHtcbiAgICAgIGZvcihsZXQgaiA9IDA7IGogPCB0aGlzLmZhdm9yaXRlSWRzXy5sZW5ndGg7IGorKylcbiAgICAgIHtcbiAgICAgICAgdGhpcy5hZGRGYXZvcml0ZSh0aGlzLmZhdm9yaXRlSWRzX1tqXSwgZmFsc2UpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcblxuICBhZGRGYXZvcml0ZShmYXZvcml0ZUlkIDogc3RyaW5nLCBtb2RpZnlDb29raWVzID0gdHJ1ZSlcbiAge1xuICAgIGxldCBlbGVtZW50ID0gQXBwLmVsZW1lbnRCeUlkKGZhdm9yaXRlSWQpO1xuICAgIGlmIChlbGVtZW50ID09PSBudWxsKSByZXR1cm47XG4gICAgXG4gICAgZWxlbWVudC5pc0Zhdm9yaXRlID0gdHJ1ZTtcbiAgICBcbiAgICBpZiAobW9kaWZ5Q29va2llcylcbiAgICB7XG4gICAgICB0aGlzLmZhdm9yaXRlSWRzXy5wdXNoKGZhdm9yaXRlSWQpO1xuICAgICAgQ29va2llcy5jcmVhdGVDb29raWUoJ0Zhdm9yaXRlSWRzJyxKU09OLnN0cmluZ2lmeSh0aGlzLmZhdm9yaXRlSWRzXykpOyAgICBcbiAgICB9XG4gIH07XG5cbiAgcmVtb3ZlRmF2b3JpdGUoZmF2b3JpdGVJZCA6IHN0cmluZywgbW9kaWZ5Q29va2llcyA9IHRydWUpXG4gIHtcbiAgICBsZXQgZWxlbWVudCA9IEFwcC5lbGVtZW50QnlJZChmYXZvcml0ZUlkKTtcbiAgICBpZiAoZWxlbWVudCAhPT0gbnVsbCkgZWxlbWVudC5pc0Zhdm9yaXRlID0gZmFsc2U7XG4gICAgXG4gICAgaWYgKG1vZGlmeUNvb2tpZXMpXG4gICAge1xuICAgICAgbGV0IGluZGV4ID0gdGhpcy5mYXZvcml0ZUlkc18uaW5kZXhPZihmYXZvcml0ZUlkKTtcbiAgICAgIGlmIChpbmRleCA+IC0xKSB0aGlzLmZhdm9yaXRlSWRzXy5zcGxpY2UoaW5kZXgsIDEpO1xuXG4gICAgICBDb29raWVzLmNyZWF0ZUNvb2tpZSgnRmF2b3JpdGVJZHMnLEpTT04uc3RyaW5naWZ5KHRoaXMuZmF2b3JpdGVJZHNfKSk7XG4gICAgfVxuICB9O1xufSIsImltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmltcG9ydCB7IFN0YW1wLCBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5leHBvcnQgY2xhc3MgU3RhbXBNb2R1bGVcbntcbiAgYWxsb3dlZFN0YW1wcyA6IFN0YW1wW10gPSBbXTtcblxuICBkZWZhdWx0SWNvbnMgPSBbICdnb2dvLWljb24tc3RhbXAtMScsICdnb2dvLWljb24tc3RhbXAtMiddO1xuICBkZWZhdWx0SWNvbiA9ICdnb2dvLWljb24tc3RhbXAtMSc7XG5cbiAgY29uc3RydWN0b3IoJGNvbmZpZylcbiAge1xuICAgIGlmICgkY29uZmlnLmZlYXR1cmVzLnN0YW1wLm9wdGlvbnMuYWxsb3dlZFN0YW1wcylcbiAgICAgIGZvciAobGV0IHN0YW1wIG9mICRjb25maWcuZmVhdHVyZXMuc3RhbXAub3B0aW9ucy5hbGxvd2VkU3RhbXBzKVxuICAgICAge1xuICAgICAgICBzdGFtcC5pY29uID0gc3RhbXAuaWNvbiB8fCB0aGlzLmdldERlZmF1bHRJY29uKCk7XG4gICAgICAgIHRoaXMuYWxsb3dlZFN0YW1wcy5wdXNoKG5ldyBTdGFtcChzdGFtcCkpO1xuICAgICAgfVxuICB9XG5cbiAgY2hlY2tGb3JBZGRpbmdTdGFtcHMoZWxlbWVudHNBcnJheSA6IEVsZW1lbnRbXSkgIFxuICB7XG4gICAgbGV0IGVsZW1lbnRzSWRzID0gZWxlbWVudHNBcnJheS5tYXAoIChlbCkgPT4gZWwuaWQpO1xuICAgIFxuICAgIGZvcihsZXQgc3RhbXAgb2YgdGhpcy5hbGxvd2VkU3RhbXBzKVxuICAgIHtcbiAgICAgIGxldCBlbGVtZW50c1RvU3RhbXAgPSBlbGVtZW50c0FycmF5LmZpbHRlciggKGVsKSA9PiBzdGFtcC5lbGVtZW50SWRzLmluZGV4T2YoZWwuaWQpID4gLTEpO1xuICAgICAgZm9yKGxldCBlbGVtZW50IG9mIGVsZW1lbnRzVG9TdGFtcCkgZWxlbWVudC5zdGFtcHMucHVzaChzdGFtcC5pZClcbiAgICB9XG4gIH1cblxuICBnZXRBbGxvd2VkU3RhbXBGb3JFbGVtZW50KGVsZW1lbnQgOiBFbGVtZW50KSA6IFN0YW1wW11cbiAge1xuICAgIHJldHVybiB0aGlzLmFsbG93ZWRTdGFtcHMuZmlsdGVyKCAoc3RhbXApID0+IGVsZW1lbnQuc3RhbXBzLmluZGV4T2Yoc3RhbXAuaWQpID4gLTEpO1xuICB9XG5cbiAgZ2V0RGVmYXVsdEljb24oKSA6IHN0cmluZ1xuICB7XG4gICAgcmV0dXJuIHRoaXMuZGVmYXVsdEljb25zLnNoaWZ0KCkgfHwgdGhpcy5kZWZhdWx0SWNvbjtcbiAgfVxufSIsImRlY2xhcmUgbGV0IEdlb2NvZGVySlM7XG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5kZWNsYXJlIHZhciBMLCAkO1xuXG5pbXBvcnQgeyBBcHBNb2R1bGUgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuaW1wb3J0IHsgc2x1Z2lmeSB9IGZyb20gXCIuLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuaW1wb3J0IHsgVmlld1BvcnQsIEV2ZW50IH0gZnJvbSBcIi4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG4vKiogcmVzdWx0cyB0eXBlIHJldHVybmVkIGJ5IGdlb2NvZGVySlMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgR2VvY29kZVJlc3VsdFxue1xuXHRnZXRDb29yZGluYXRlcygpIDogTC5MYXRMbmdUdXBsZTtcblx0Z2V0Rm9ybWF0dGVkQWRkcmVzcygpIDogc3RyaW5nO1x0XG5cdGdldEJvdW5kcygpIDogUmF3Qm91bmRzO1xufVxuXG4vLyBzb3V0aCwgd2VzdCwgbm9ydGgsIGVhc3RcbmV4cG9ydCB0eXBlIFJhd0JvdW5kcyA9IFtudW1iZXIsIG51bWJlciwgbnVtYmVyLCBudW1iZXJdO1xuXG4vKipcbiogSW50ZXJmYWNlIGJldHdlZW4gR2VvY29kZXJKUyBhbmQgdGhlIEFwcFxuKiBBbGxvdyB0byBjaGFuZ2UgZ2VvY29kZSB0ZWNobm9sb2d5IHdpdGhvdXQgY2hhbmdpbmcgY29kZSBpbiB0aGUgQXBwXG4qL1xuZXhwb3J0IGNsYXNzIEdlb2NvZGVyTW9kdWxlXG57XG5cdGdlb2NvZGVyIDogYW55ID0gbnVsbDtcblx0bGFzdEFkZHJlc3NSZXF1ZXN0IDogc3RyaW5nID0gJyc7XG5cdGxhc3RSZXN1bHRzIDogR2VvY29kZVJlc3VsdFtdID0gbnVsbDtcblx0bGFzdFJlc3VsdEJvdW5kcyA6IEwuTGF0TG5nQm91bmRzID0gbnVsbDtcblxuXHRwcml2YXRlIGxvY2F0aW9uIDogTC5MYXRMbmcgPSBudWxsO1xuXG5cdG9uR2VvY29kZVJlc3VsdCA9IG5ldyBFdmVudDxhbnk+KCk7XG5cdG9uR2VvbG9jYWxpemF0aW9uUmVzdWx0ID0gbmV3IEV2ZW50PFZpZXdQb3J0PigpO1xuXG5cdGdldExvY2F0aW9uKCkgOiBMLkxhdExuZ1xuXHR7XG5cdFx0cmV0dXJuIHRoaXMubG9jYXRpb247XHRcdFxuXHR9XG5cblx0Z2V0Qm91bmRzKCkgOiBMLkxhdExuZ0JvdW5kc1xuXHR7XG5cdFx0aWYgKCF0aGlzLmxhc3RSZXN1bHRCb3VuZHMpIHJldHVybiBudWxsO1xuXHRcdHJldHVybiB0aGlzLmxhc3RSZXN1bHRCb3VuZHM7XG5cdH1cdFxuXG5cdGdldExvY2F0aW9uU2x1ZygpIDogc3RyaW5nIHsgcmV0dXJuIHNsdWdpZnkodGhpcy5sYXN0QWRkcmVzc1JlcXVlc3QpOyB9XG5cdGdldExvY2F0aW9uQWRkcmVzcygpIDogc3RyaW5nIHsgcmV0dXJuIHRoaXMubGFzdEFkZHJlc3NSZXF1ZXN0OyB9XG5cdHNldExvY2F0aW9uQWRkcmVzcygkYWRkcmVzcyA6IHN0cmluZykgeyB0aGlzLmxhc3RBZGRyZXNzUmVxdWVzdCA9ICRhZGRyZXNzOyB9XG5cblx0cHJpdmF0ZSBsYXRMbmdCb3VuZHNGcm9tUmF3Qm91bmRzKHJhd2JvdW5kcyA6IFJhd0JvdW5kcykgOiBMLkxhdExuZ0JvdW5kc1xuXHR7XG5cdFx0bGV0IGNvcm5lcjEgPSBMLmxhdExuZyhyYXdib3VuZHNbMF0sIHJhd2JvdW5kc1sxXSk7XG5cdFx0bGV0IGNvcm5lcjIgPSBMLmxhdExuZyhyYXdib3VuZHNbMl0sIHJhd2JvdW5kc1szXSk7XG5cdFx0cmV0dXJuIEwubGF0TG5nQm91bmRzKGNvcm5lcjEsIGNvcm5lcjIpO1xuXHR9XG5cblx0Y29uc3RydWN0b3IoKVxuXHR7XG5cdFx0dGhpcy5nZW9jb2RlciA9IEdlb2NvZGVySlMuY3JlYXRlR2VvY29kZXIoeyAncHJvdmlkZXInOiAnb3BlbnN0cmVldG1hcCcsICd1c2VTU0wnOnRydWV9KTtcblx0XHQvL3RoaXMuZ2VvY29kZXIgPSBHZW9jb2RlckpTLmNyZWF0ZUdlb2NvZGVyKHsncHJvdmlkZXInOiAnZ29vZ2xlJywgJ3VzZVNTTCc6dHJ1ZSB9KTtcblx0fVxuXG5cdGdlb2NvZGVBZGRyZXNzKCBhZGRyZXNzLCBjYWxsYmFja0NvbXBsZXRlPywgY2FsbGJhY2tGYWlsPyApIFxuXHR7XG5cdFx0Ly8gY29uc29sZS5sb2coXCJnZW9jb2RlIGFkZHJlc3MgOiBcIiwgYWRkcmVzcyk7XG5cdFx0dGhpcy5sYXN0QWRkcmVzc1JlcXVlc3QgPSBhZGRyZXNzO1xuXG5cdFx0Ly8gaWYgbm8gYWRkcmVzcywgd2Ugc2hvdyBmcmFuY2Vcblx0XHRpZiAoYWRkcmVzcyA9PSAnJylcblx0XHR7XG5cdFx0XHRjb25zb2xlLmxvZyhcImRlZmF1bHQgbG9jYXRpb25cIik7XG5cdFx0XHR0aGlzLmxhc3RSZXN1bHRzID0gW107XG5cdFx0XHR0aGlzLmxhc3RSZXN1bHRCb3VuZHMgPSBBcHAuYm91bmRzTW9kdWxlLmRlZmF1bHRCb3VuZHM7XG5cblx0XHRcdHRoaXMub25HZW9jb2RlUmVzdWx0LmVtaXQoKTtcblxuXHRcdFx0Ly8gbGVhdmUgdGltZSBmb3IgbWFwIHRvIGxvYWRcblx0XHRcdGlmIChjYWxsYmFja0NvbXBsZXRlKSBzZXRUaW1lb3V0KCAoKSA9PiB7IGNhbGxiYWNrQ29tcGxldGUodGhpcy5sYXN0UmVzdWx0cyk7IH0sIDIwMCk7XG5cdFx0fVxuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHQvLyBmYWtlIGdlb2NvZGVyIHdoZW4gbm8gaW50ZXJuZXQgY29ubmV4aW9uXG5cdFx0XHRsZXQgZmFrZSA9IGZhbHNlO1xuXG5cdFx0XHRpZiAoIWZha2UpXG5cdFx0XHR7XG5cdFx0XHRcdHRoaXMuZ2VvY29kZXIuZ2VvY29kZSggYWRkcmVzcywgKHJlc3VsdHMgOiBHZW9jb2RlUmVzdWx0W10pID0+XG5cdFx0XHRcdHtcdFx0XHRcblx0XHRcdFx0XHRpZiAocmVzdWx0cyAhPT0gbnVsbCAmJiByZXN1bHRzLmxlbmd0aCA+IDApIFxuXHRcdFx0XHRcdHtcdFx0XHRcdFxuXHRcdFx0XHRcdFx0dGhpcy5sYXN0UmVzdWx0cyA9IHJlc3VsdHM7XG5cdFx0XHRcdFx0XHR0aGlzLmxhc3RSZXN1bHRCb3VuZHMgPSB0aGlzLmxhdExuZ0JvdW5kc0Zyb21SYXdCb3VuZHModGhpcy5sYXN0UmVzdWx0c1swXS5nZXRCb3VuZHMoKSk7XG5cblx0XHRcdFx0XHRcdGlmICh0aGlzLmxhc3RSZXN1bHRzICYmIHRoaXMubGFzdFJlc3VsdHNbMF0pIHRoaXMubG9jYXRpb24gPSBMLmxhdExuZyh0aGlzLmxhc3RSZXN1bHRzWzBdLmdldENvb3JkaW5hdGVzKCkpO1xuXHRcdFx0XHRcdFx0ZWxzZSBsb2NhdGlvbiA9IG51bGw7XG5cblx0XHRcdFx0XHRcdHRoaXMub25HZW9jb2RlUmVzdWx0LmVtaXQoKTtcblxuXHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrQ29tcGxldGUpIGNhbGxiYWNrQ29tcGxldGUocmVzdWx0cyk7XHRcblx0XHRcdFx0XHR9IFx0XG5cdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdHtcblx0XHRcdFx0XHRcdGlmIChjYWxsYmFja0ZhaWwpIGNhbGxiYWNrRmFpbCgpO1x0XHRcdFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdGxldCByZXN1bHQgPSB7XG5cdFx0XHRcdFx0Ym91bmRzOiBbLjA2OTE4NSwtMC42NDE0MTUsNDQuMTg0NzM1MSwtMC40Njk5ODM1XSxcblx0XHRcdFx0XHRjaXR5OiAnTGFicml0Jyxcblx0XHRcdFx0XHRmb3JtYXR0ZWRBZGRyZXNzOiBcIkxhYnJpdCA0MDQyMFwiLFxuXHRcdFx0XHRcdGxhdGl0dWRlOjQ0LjEwNDk1NjcsXG5cdFx0XHRcdFx0bG9uZ2l0dWRlOi0wLjU0NDUyOTYsXG5cdFx0XHRcdFx0cG9zdGFsX2NvZGU6XCI0MDQyMFwiLFxuXHRcdFx0XHRcdHJlZ2lvbjpcIk5vdXZlbGxlLUFxdWl0YWluZVwiLFxuXHRcdFx0XHRcdGdldEJvdW5kcygpIHsgcmV0dXJuIHRoaXMuYm91bmRzOyB9LFxuXHRcdFx0XHRcdGdldENvb3JkaW5hdGVzKCkgeyByZXR1cm4gW3RoaXMubGF0aXR1ZGUsIHRoaXMubG9uZ2l0dWRlXTsgfSxcblx0XHRcdFx0XHRnZXRGb3JtYXR0ZWRBZGRyZXNzKCkgeyByZXR1cm4gdGhpcy5mb3JtYXR0ZWRBZGRyZXNzOyB9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRsZXQgcmVzdWx0cyA9IFtdO1xuXHRcdFx0XHRyZXN1bHRzLnB1c2gocmVzdWx0KTtcblxuXHRcdFx0XHR0aGlzLmxhc3RSZXN1bHRzID0gcmVzdWx0cztcblx0XHRcdFx0dGhpcy5sYXN0UmVzdWx0Qm91bmRzID0gdGhpcy5sYXRMbmdCb3VuZHNGcm9tUmF3Qm91bmRzKHRoaXMubGFzdFJlc3VsdHNbMF0uZ2V0Qm91bmRzKCkpO1xuXG5cdFx0XHRcdGNhbGxiYWNrQ29tcGxldGUocmVzdWx0cyk7XG5cdFx0XHR9XHRcblx0XHR9XHRcdFx0XG5cdH1cblxuXHRnZW9sb2NhdGVVc2VyKGNhbGxiYWNrQ29tcGxldGU/KVxuXHR7XG5cdFx0aWYgKG5hdmlnYXRvci5nZW9sb2NhdGlvbilcblx0XHRcdG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24oKHBvc2l0aW9uKSA9PiB7XG5cdFx0XHRcdC8vIGFzc29jaWF0ZSB6b29tIHRvIGFjY3VyYWN5XG5cdFx0XHRcdGxldCB6b29tID0gMTcgLSBNYXRoLmxvZyhwb3NpdGlvbi5jb29yZHMuYWNjdXJhY3kgLyAzMDAwKSAqIE1hdGguTE9HMkU7XG5cdFx0XHRcdHpvb20gPSBNYXRoLm1pbih6b29tLCAxNik7XG5cdFx0XHRcdHpvb20gPSBNYXRoLm1heCh6b29tLCA4KTtcblx0XHRcdFx0bGV0IHZpZXdQb3J0ID0gbmV3IFZpZXdQb3J0KHBvc2l0aW9uLmNvb3Jkcy5sYXRpdHVkZSwgcG9zaXRpb24uY29vcmRzLmxvbmdpdHVkZSwgem9vbSk7XG5cdFx0XHRcdHRoaXMuaGFuZGxlR2VvbG9jYWxpc2F0aW9uUmVzcG9uc2Uodmlld1BvcnQsIGNhbGxiYWNrQ29tcGxldGUpO1xuXHRcdFx0fSwgKCkgPT4ge30sIHtlbmFibGVIaWdoQWNjdXJhY3k6IHRydWV9KTtcblx0XHRlbHNlXG5cdFx0XHQkLmdldEpTT04oXCJodHRwOi8vZnJlZWdlb2lwLm5ldC9qc29uL1wiLCAoZGF0YSkgPT4ge1xuXHRcdCAgICBsZXQgdmlld1BvcnQgPSBuZXcgVmlld1BvcnQoZGF0YS5sYXRpdHVkZSwgZGF0YS5sb25naXR1ZGUsIDE0KTtcblx0XHQgICAgdGhpcy5oYW5kbGVHZW9sb2NhbGlzYXRpb25SZXNwb25zZSh2aWV3UG9ydCwgY2FsbGJhY2tDb21wbGV0ZSk7XG5cdFx0XHR9KTtcblx0fVxuXG5cdHByaXZhdGUgaGFuZGxlR2VvbG9jYWxpc2F0aW9uUmVzcG9uc2Uodmlld1BvcnQgOiBWaWV3UG9ydCwgY2FsbGJhY2tDb21wbGV0ZSlcblx0e1xuXHRcdHRoaXMubG9jYXRpb24gPSB2aWV3UG9ydC50b0xvY2F0aW9uKCk7XG4gICAgdGhpcy5vbkdlb2xvY2FsaXphdGlvblJlc3VsdC5lbWl0KHZpZXdQb3J0KTtcbiAgICBjYWxsYmFja0NvbXBsZXRlKHZpZXdQb3J0KTtcblx0fVxufSIsImltcG9ydCB7IEFwcE1vZHVsZSwgQXBwU3RhdGVzLCBBcHBEYXRhVHlwZSwgQXBwTW9kZXMgfSBmcm9tIFwiLi4vYXBwLm1vZHVsZVwiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vZ29nb2NhcnRvXCI7XG5cbmRlY2xhcmUgdmFyIHJvdXRpZTogYW55LCAkO1xuXG5leHBvcnQgY2xhc3MgTG9naW5Nb2R1bGVcbntcblx0cHJpdmF0ZSByb2xlc18gOiBzdHJpbmdbXTtcblx0cHJpdmF0ZSB1c2VyRW1haWwgOiBzdHJpbmcgPSAnJztcblxuXHRjb25zdHJ1Y3Rvcigkcm9sZXMgOiBzdHJpbmdbXSB8IHN0cmluZywgJHVzZXJFbWFpbCA6IHN0cmluZyA9ICcnKSBcblx0eyBcblx0XHR0aGlzLnNldFJvbGVzKCRyb2xlcyk7IFxuXHRcdHRoaXMuc2V0VXNlckVtYWlsKCR1c2VyRW1haWwpO1xuXHR9XG5cblx0c2V0Um9sZXMoJHJvbGVzIDogc3RyaW5nW10gfCBzdHJpbmcpXG5cdHsgXG5cdFx0aWYgKHR5cGVvZiAkcm9sZXMgPT0gJ3N0cmluZycpIHRoaXMucm9sZXNfID0gWyRyb2xlc107XHRcblx0XHRlbHNlIHRoaXMucm9sZXNfID0gJHJvbGVzO1xuXHR9XG5cblx0c2V0VXNlckVtYWlsKHVzZXJFbWFpbCkgeyB0aGlzLnVzZXJFbWFpbCA9IHVzZXJFbWFpbDsgfVxuXG5cdGdldFVzZXJFbWFpbCgpIHsgcmV0dXJuIHRoaXMudXNlckVtYWlsOyB9XG5cblx0Z2V0Um9sZXMoKSB7IHJldHVybiB0aGlzLnJvbGVzXzsgfVxuXG4gIGxvZ2luQWN0aW9uKCkgeyBBcHAuY29uZmlnLnNlY3VyaXR5LmxvZ2luQWN0aW9uKCk7IH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5cbmltcG9ydCB7IEFwcE1vZHVsZSB9IGZyb20gXCIuLi8uLi9hcHAubW9kdWxlXCI7XG5pbXBvcnQgeyBFbGVtZW50IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuXG5pbXBvcnQgeyBBcHAgfSBmcm9tIFwiLi4vLi4vZ29nb2NhcnRvXCI7XG5cbmV4cG9ydCBjbGFzcyBEaXNwbGF5RWxlbWVudEFsb25lTW9kdWxlXG57XG5cdGVsZW1lbnRTaG93bkFsb25lXyA9IG51bGw7XG5cblx0Y29uc3RydWN0b3IoKSB7fVxuXG5cdGdldEVsZW1lbnQoKSA6IEVsZW1lbnQgeyByZXR1cm4gdGhpcy5lbGVtZW50U2hvd25BbG9uZV87IH1cblxuXHRiZWdpbihlbGVtZW50SWQgOiBzdHJpbmcsIHBhblRvRWxlbWVudExvY2F0aW9uIDogYm9vbGVhbiA9IHRydWUpIFxuXHR7XHRcblx0XHQvLyBjb25zb2xlLmxvZyhcIkRpc3BsYXlFbGVtZW50QWxvbmVNb2R1bGUgYmVnaW5cIiwgcGFuVG9FbGVtZW50TG9jYXRpb24pO1x0XHRcblxuXHRcdGlmICh0aGlzLmVsZW1lbnRTaG93bkFsb25lXyAhPT0gbnVsbCkgXG5cdFx0e1xuXHRcdFx0dGhpcy5lbGVtZW50U2hvd25BbG9uZV8uaGlkZSgpO1xuXHRcdFx0dGhpcy5lbGVtZW50U2hvd25BbG9uZV8uaXNTaG93bkFsb25lID0gZmFsc2U7XG5cdFx0fVxuXG5cdFx0bGV0IGVsZW1lbnQgPSBBcHAuZWxlbWVudEJ5SWQoZWxlbWVudElkKTtcdFxuXHRcdHRoaXMuZWxlbWVudFNob3duQWxvbmVfID0gZWxlbWVudDtcdFx0XHRcblxuXHRcdEFwcC5lbGVtZW50c01vZHVsZS5jbGVhckN1cnJlbnRzRWxlbWVudCgpO1xuXG5cdFx0c2V0VGltZW91dCggKCkgPT4ge1xuXHRcdFx0QXBwLmluZm9CYXJDb21wb25lbnQuc2hvd0VsZW1lbnQoZWxlbWVudC5pZCk7XHRcblxuXHRcdFx0Ly8gd2Ugc2V0IGEgdGltZW91dCB0byBsZXQgdGhlIGluZm9iYXIgc2hvdyB1cFxuXHRcdFx0Ly8gaWYgd2Ugbm90IGRvIHNvLCB0aGUgbWFwIHdpbGwgbm90IGJlIGNlbnRlcmVkIGluIHRoZSBlbGVtZW50LnBvc2l0aW9uXHRcblx0XHRcdGlmIChwYW5Ub0VsZW1lbnRMb2NhdGlvbilcblx0XHRcdHtcdFx0XG5cdFx0XHRcdEFwcC5tYXBDb21wb25lbnQucmVzaXplKCk7XG5cdFx0XHRcdEFwcC5tYXBDb21wb25lbnQucGFuVG9Mb2NhdGlvbihlbGVtZW50LnBvc2l0aW9uLCAxMiwgZmFsc2UpO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCAoKSA9PiB7IEFwcC5tYXBDb21wb25lbnQucmVzaXplKCk7QXBwLm1hcENvbXBvbmVudC5wYW5Ub0xvY2F0aW9uKGVsZW1lbnQucG9zaXRpb24sIDEyLCBmYWxzZSk7IH0sIDUwMCk7XG5cdFx0XHR9XHRcdFx0XG5cdFx0fSwgMzAwKTtcdFx0XG5cdH07XG5cblx0ZW5kKCkgXG5cdHtcblx0XHRpZiAodGhpcy5lbGVtZW50U2hvd25BbG9uZV8gPT09IG51bGwpIHJldHVybjtcblxuXHRcdEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTtcblx0XHRcblx0XHR0aGlzLmVsZW1lbnRTaG93bkFsb25lXy5pc1Nob3duQWxvbmUgPSBmYWxzZTtcdFxuXG5cdFx0dGhpcy5lbGVtZW50U2hvd25BbG9uZV8gPSBudWxsO1x0XG5cdH07XG59XG5cbiIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuaW1wb3J0IHsgcGFyc2VBcnJheU51bWJlckludG9TdHJpbmcsIHBhcnNlU3RyaW5nSW50b0FycmF5TnVtYmVyIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3BhcnNlci1zdHJpbmctbnVtYmVyXCI7XG5pbXBvcnQgeyBzbHVnaWZ5IH0gZnJvbSAnLi4vLi4vdXRpbHMvc3RyaW5nLWhlbHBlcnMnO1xuXG5kZWNsYXJlIHZhciAkIDogYW55O1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyUm91dGluZ01vZHVsZVxue1xuXHRsb2FkRmlsdGVyc0Zyb21TdHJpbmcoc3RyaW5nIDogc3RyaW5nKVxuXHR7XG5cdFx0bGV0IHNwbGl0ZWQgPSBzdHJpbmcuc3BsaXQoJ0AnKTtcblx0XHRsZXQgbWFpbk9wdGlvblNsdWcgPSBzcGxpdGVkWzBdO1xuXG5cdFx0bGV0IG1haW5PcHRpb25JZDtcblx0XHRpZiAobWFpbk9wdGlvblNsdWcgPT0gJ2FsbCcpIG1haW5PcHRpb25JZCA9ICdhbGwnO1xuXHRcdGVsc2Vcblx0XHR7XG5cdFx0XHRsZXQgbWFpbk9wdGlvbiA9IEFwcC50YXhvbm9teU1vZHVsZS5nZXRNYWluT3B0aW9uQnlTbHVnKG1haW5PcHRpb25TbHVnKTtcblx0XHRcdG1haW5PcHRpb25JZCA9IG1haW5PcHRpb24gPyBtYWluT3B0aW9uLmlkIDogJ2FsbCc7XG5cdFx0fSBcblx0XHRBcHAuZmlsdGVyc0NvbXBvbmVudC5zZXRNYWluT3B0aW9uKG1haW5PcHRpb25JZCk7XHRcdFxuXG5cdFx0bGV0IGZpbHRlcnNTdHJpbmcgOiBzdHJpbmc7XG5cdFx0bGV0IGFkZGluZ01vZGUgOiBib29sZWFuO1xuXG5cdFx0aWYgKHNwbGl0ZWQubGVuZ3RoID09IDIpXG5cdFx0e1xuXHRcdFx0ZmlsdGVyc1N0cmluZyA9IHNwbGl0ZWRbMV07XG5cblx0XHRcdGlmIChmaWx0ZXJzU3RyaW5nWzBdID09ICchJykgYWRkaW5nTW9kZSA9IGZhbHNlO1xuXHRcdFx0ZWxzZSBhZGRpbmdNb2RlID0gdHJ1ZTtcblxuXHRcdFx0ZmlsdGVyc1N0cmluZyA9IGZpbHRlcnNTdHJpbmcuc3Vic3RyaW5nKDEpO1xuXHRcdH1cblx0XHRlbHNlIGlmIChzcGxpdGVkLmxlbmd0aCA+IDIpXG5cdFx0e1xuXHRcdFx0Y29uc29sZS5lcnJvcihcIkVycm9yIHNwbGl0aW5nIGluIGxvYWRGaWx0ZXJGcm9tU3RyaW5nXCIpO1xuXHRcdH1cblxuXHRcdGxldCBmaWx0ZXJzID0gcGFyc2VTdHJpbmdJbnRvQXJyYXlOdW1iZXIoZmlsdGVyc1N0cmluZyk7XG5cdFx0Ly9jb25zb2xlLmxvZygnZmlsdGVycycsIGZpbHRlcnMpO1x0XHRcblx0XHRpZiAoIUFwcC5sb2FkRnVsbFRheG9ub215ICYmIG1haW5PcHRpb25TbHVnICE9ICdhbGwnKSAkKCcubWFpbi1jYXRlZ29yaWVzJykuaGlkZSgpO1x0XG5cblx0XHRpZiAoZmlsdGVycy5sZW5ndGggPiAwKVxuXHRcdHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCdhZGRpbmdNb2RlJywgYWRkaW5nTW9kZSk7XG5cdFx0XHRcblx0XHRcdGlmIChtYWluT3B0aW9uU2x1ZyA9PSAnYWxsJylcblx0XHRcdHtcblx0XHRcdFx0aWYgKEFwcC5sb2FkRnVsbFRheG9ub215KSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkudG9nZ2xlKCFhZGRpbmdNb2RlLCBmYWxzZSk7XG5cdFx0XHRcdGVsc2Vcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGZvcihsZXQgb3B0aW9uIG9mIEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS5vcHRpb25zKSBcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRvcHRpb24udG9nZ2xlVmlzaWJpbGl0eSghYWRkaW5nTW9kZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHR7XG5cdFx0XHRcdGZvciAobGV0IGNhdCBvZiBBcHAudGF4b25vbXlNb2R1bGUuZ2V0TWFpbk9wdGlvbkJ5U2x1ZyhtYWluT3B0aW9uU2x1Zykuc3ViY2F0ZWdvcmllcylcblx0XHRcdFx0XHRmb3IobGV0IG9wdGlvbiBvZiBjYXQub3B0aW9ucykgXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0aWYgKEFwcC5sb2FkRnVsbFRheG9ub215KSBvcHRpb24udG9nZ2xlKCFhZGRpbmdNb2RlLCBmYWxzZSk7IFxuXHRcdFx0XHRcdFx0ZWxzZSBvcHRpb24udG9nZ2xlVmlzaWJpbGl0eSghYWRkaW5nTW9kZSwgdHJ1ZSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IobGV0IGZpbHRlcklkIG9mIGZpbHRlcnMpXG5cdFx0XHR7XG5cdFx0XHRcdGxldCBvcHRpb24gPSBBcHAudGF4b25vbXlNb2R1bGUuZ2V0T3B0aW9uQnlJbnRJZChmaWx0ZXJJZCk7XG5cdFx0XHRcdGlmICghb3B0aW9uKSBjb25zb2xlLmxvZyhcIkVycm9yIGxvYWRpbmdzIGZpbHRlcnMgOiBcIiArIGZpbHRlcklkKTtcblx0XHRcdFx0ZWxzZSBcblx0XHRcdFx0e1xuXHRcdFx0XHRcdGlmIChBcHAubG9hZEZ1bGxUYXhvbm9teSkgIG9wdGlvbi50b2dnbGUoYWRkaW5nTW9kZSwgZmFsc2UpO1xuXHRcdFx0XHRcdGlmICghQXBwLmxvYWRGdWxsVGF4b25vbXkpIG9wdGlvbi50b2dnbGVWaXNpYmlsaXR5KGFkZGluZ01vZGUpO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmIChBcHAubG9hZEZ1bGxUYXhvbm9teSlcblx0XHRcdHtcblx0XHRcdFx0aWYgKEFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pXG5cdFx0XHRcdFx0aWYgKG1haW5PcHRpb25TbHVnID09ICdhbGwnKSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkudXBkYXRlU3RhdGUoKTtcblx0XHRcdFx0XHRlbHNlIEFwcC50YXhvbm9teU1vZHVsZS5nZXRNYWluT3B0aW9uQnlTbHVnKG1haW5PcHRpb25TbHVnKS5yZWN1cnNpdmVseVVwZGF0ZVN0YXRlcygpO1xuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0QXBwLnRheG9ub215TW9kdWxlLnRheG9ub215LnJlY3Vyc2l2ZWx5VXBkYXRlU3RhdGVzKCk7XG5cdFx0XHR9XG5cblx0XHRcdEFwcC5lbGVtZW50c01vZHVsZS51cGRhdGVFbGVtZW50c1RvRGlzcGxheSh0cnVlKTtcblx0XHRcdC8vQXBwLmhpc3RvcnlNb2R1bGUudXBkYXRlQ3VyclN0YXRlKCk7XG5cdFx0fVxuXHR9XG5cblx0Z2V0RmlsdGVyc1RvU3RyaW5nKCkgOiBzdHJpbmdcblx0e1xuXHRcdGxldCBtYWluT3B0aW9uSWQgPSBBcHAuY3Vyck1haW5JZDtcblxuXHRcdGxldCBtYWluT3B0aW9uTmFtZTtcblx0XHRsZXQgY2hlY2tBcnJheVRvUGFyc2UsIHVuY2hlY2tBcnJheVRvUGFyc2U7XG5cdFx0XG5cdFx0aWYgKG1haW5PcHRpb25JZCA9PSAnYWxsJyAmJiBBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKVxuXHRcdHtcdFx0XHRcblx0XHRcdG1haW5PcHRpb25OYW1lID0gXCJhbGxcIjtcblx0XHRcdGNoZWNrQXJyYXlUb1BhcnNlID0gQXBwLnRheG9ub215TW9kdWxlLnRheG9ub215LmNoZWNrZWRPcHRpb25zLm1hcCggKG9wdGlvbikgPT4gb3B0aW9uLmludElkKTtcblx0XHRcdHVuY2hlY2tBcnJheVRvUGFyc2UgPSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkuZGlzYWJsZWRPcHRpb25zLm1hcCggKG9wdGlvbikgPT4gb3B0aW9uLmludElkKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGxldCBhbGxPcHRpb25zO1xuXG5cdFx0XHRpZiAoQXBwLmNvbmZpZy5tZW51LnNob3dPbmVQYW5lUGVyTWFpbk9wdGlvbilcblx0XHRcdHtcblx0XHRcdFx0bGV0IG1haW5PcHRpb24gPSBBcHAudGF4b25vbXlNb2R1bGUuZ2V0TWFpbk9wdGlvbkJ5SWQobWFpbk9wdGlvbklkKTtcblx0XHRcdFx0bWFpbk9wdGlvbk5hbWUgPSBzbHVnaWZ5KG1haW5PcHRpb24ubmFtZVNob3J0KTtcblx0XHRcdFx0YWxsT3B0aW9ucyA9IG1haW5PcHRpb24uYWxsQ2hpbGRyZW5PcHRpb25zO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZVxuXHRcdFx0e1xuXHRcdFx0XHRtYWluT3B0aW9uTmFtZSA9IFwiYWxsXCI7XG5cdFx0XHRcdGFsbE9wdGlvbnMgPSBBcHAudGF4b25vbXlNb2R1bGUub3B0aW9ucztcblx0XHRcdH1cdFx0XHRcdFxuXG5cdFx0XHRjaGVja0FycmF5VG9QYXJzZSA9IGFsbE9wdGlvbnMuZmlsdGVyKCAob3B0aW9uKSA9PiBvcHRpb24uaXNDaGVja2VkICkubWFwKCAob3B0aW9uKSA9PiBvcHRpb24uaW50SWQpO1xuXHRcdFx0dW5jaGVja0FycmF5VG9QYXJzZSA9IGFsbE9wdGlvbnMuZmlsdGVyKCAob3B0aW9uKSA9PiBvcHRpb24uaXNEaXNhYmxlZCApLm1hcCggKG9wdGlvbikgPT4gb3B0aW9uLmludElkKTtcdFx0XHRcblx0XHR9XG5cblx0XHRsZXQgY2hlY2tlZElkc1BhcnNlZCA9IHBhcnNlQXJyYXlOdW1iZXJJbnRvU3RyaW5nKGNoZWNrQXJyYXlUb1BhcnNlKTtcblx0XHRsZXQgdW5jaGVja2VkSWRzUGFyc2VkID0gcGFyc2VBcnJheU51bWJlckludG9TdHJpbmcodW5jaGVja0FycmF5VG9QYXJzZSk7XG5cblx0XHRsZXQgYWRkaW5nTW9kZSA9IChjaGVja2VkSWRzUGFyc2VkLmxlbmd0aCA8IHVuY2hlY2tlZElkc1BhcnNlZC5sZW5ndGgpO1xuXG5cdFx0bGV0IGFkZGluZ1N5bWJvbCA9IGFkZGluZ01vZGUgPyAnKycgOiAnISc7XG5cblx0XHRsZXQgZmlsdGVyc1N0cmluZyA9IGFkZGluZ01vZGUgPyBjaGVja2VkSWRzUGFyc2VkIDogdW5jaGVja2VkSWRzUGFyc2VkO1xuXG5cdFx0aWYgKCFhZGRpbmdNb2RlICYmIGZpbHRlcnNTdHJpbmcgPT0gXCJcIiApIHJldHVybiBtYWluT3B0aW9uTmFtZTtcblxuXHRcdHJldHVybiBtYWluT3B0aW9uTmFtZSArICdAJyArIGFkZGluZ1N5bWJvbCArIGZpbHRlcnNTdHJpbmc7XG5cdH1cbn0iLCIvKipcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHb0dvQ2FydG8gcHJvamVjdC5cbiAqIEZvciB0aGUgZnVsbCBjb3B5cmlnaHQgYW5kIGxpY2Vuc2UgaW5mb3JtYXRpb24sIHBsZWFzZSB2aWV3IHRoZSBMSUNFTlNFXG4gKiBmaWxlIHRoYXQgd2FzIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBzb3VyY2UgY29kZS5cbiAqXG4gKiBAY29weXJpZ2h0IENvcHlyaWdodCAoYykgMjAxNiBTZWJhc3RpYW4gQ2FzdHJvIC0gOTBzY2FzdHJvQGdtYWlsLmNvbVxuICogQGxpY2Vuc2UgR05VIEdQTCB2M1xuICogQExhc3QgTW9kaWZpZWQgdGltZTogMjAxNi0xMi0xM1xuICovXG5pbXBvcnQgeyBPcHRpb24sIEVsZW1lbnQsIEVsZW1lbnRNb2RlcmF0aW9uU3RhdGV9IGZyb20gXCIuLi8uLi9jbGFzc2VzL2NsYXNzZXNcIjtcblxuaW1wb3J0IHsgQXBwIH0gZnJvbSBcIi4uLy4uL2dvZ29jYXJ0b1wiO1xuZGVjbGFyZSB2YXIgJCA6IGFueTtcblxuZXhwb3J0IGNsYXNzIEZpbHRlck1vZHVsZVxue1xuXHRzaG93T25seUZhdm9yaXRlXyA6IGJvb2xlYW4gPSBmYWxzZTtcblx0c2hvd1BlbmRpbmdfIDogYm9vbGVhbiA9IHRydWU7XG5cdHNob3dPbmx5UGVuZGluZ18gOiBib29sZWFuID0gZmFsc2U7XG5cdHNob3dPbmx5TW9kZXJhdGlvbl8gOiBib29sZWFuID0gZmFsc2U7XG5cblx0Y29uc3RydWN0b3IoKSB7XHR9XG5cblx0c2hvd09ubHlGYXZvcml0ZShib29sIDogYm9vbGVhbikgeyB0aGlzLnNob3dPbmx5RmF2b3JpdGVfID0gYm9vbDsgfVxuXG5cdHNob3dQZW5kaW5nKGJvb2wgOiBib29sZWFuKSB7IHRoaXMuc2hvd1BlbmRpbmdfID0gYm9vbDsgfVxuXG5cdHNob3dPbmx5UGVuZGluZyhib29sIDogYm9vbGVhbikgeyB0aGlzLnNob3dPbmx5UGVuZGluZ18gPSBib29sOyB9XG5cblx0c2hvd09ubHlNb2RlcmF0aW9uKGJvb2wgOiBib29sZWFuKSB7IHRoaXMuc2hvd09ubHlNb2RlcmF0aW9uXyA9IGJvb2w7IH1cblxuXHRjaGVja0lmRWxlbWVudFBhc3NGaWx0ZXJzKGVsZW1lbnQgOiBFbGVtZW50KSA6IGJvb2xlYW5cblx0e1xuXHRcdGlmIChlbGVtZW50Lm9wdGlvbnNWYWx1ZXMubGVuZ3RoID09IDApIHJldHVybiBmYWxzZTtcblxuXHRcdGlmICh0aGlzLnNob3dPbmx5RmF2b3JpdGVfKSByZXR1cm4gZWxlbWVudC5pc0Zhdm9yaXRlO1xuXG5cdFx0aWYgKHRoaXMuc2hvd09ubHlNb2RlcmF0aW9uXyAmJiAoIWVsZW1lbnQubmVlZHNNb2RlcmF0aW9uKCkgfHwgZWxlbWVudC5tb2RlcmF0aW9uU3RhdGUgPT0gRWxlbWVudE1vZGVyYXRpb25TdGF0ZS5Qb3NzaWJsZUR1cGxpY2F0ZSkpIHJldHVybiBmYWxzZTtcblxuXHRcdGlmIChBcHAuY29uZmlnLmlzRmVhdHVyZUF2YWlsYWJsZSgncGVuZGluZycpKVxuXHRcdHtcblx0XHRcdGlmICh0aGlzLnNob3dPbmx5UGVuZGluZ18pIHJldHVybiBlbGVtZW50LmlzUGVuZGluZygpO1xuXG5cdFx0XHRpZighdGhpcy5zaG93UGVuZGluZ18gJiYgZWxlbWVudC5pc1BlbmRpbmcoKSkgcmV0dXJuIGZhbHNlO1xuXHRcdH1cblx0XHRlbHNlXG5cdFx0e1xuXHRcdFx0aWYoZWxlbWVudC5pc1BlbmRpbmcoKSkgcmV0dXJuIGZhbHNlO1xuXHRcdH1cdFx0XG5cblx0XHRpZiAoIUFwcC5jb25maWcubWVudS5zaG93T25lUGFuZVBlck1haW5PcHRpb24pXG5cdFx0e1xuXHRcdFx0bGV0IGNoZWNrZWRNYWluT3B0aW9ucyA9IEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS5ub25EaXNhYmxlZE9wdGlvbnM7XG5cdFx0XHRpZiAoY2hlY2tlZE1haW5PcHRpb25zLmxlbmd0aCA9PSAxKVxuXHRcdFx0XHRyZXR1cm4gdGhpcy5yZWN1cnNpdmVseUNoZWNrZWRJbk9wdGlvbihjaGVja2VkTWFpbk9wdGlvbnNbMF0sIGVsZW1lbnQpO1xuXHRcdFx0ZWxzZVxuXHRcdFx0XHRyZXR1cm4gY2hlY2tlZE1haW5PcHRpb25zLnNvbWUoIChtYWluT3B0aW9uKSA9PiBlbGVtZW50LmhhdmVPcHRpb24obWFpbk9wdGlvbikgfHwgdGhpcy5yZWN1cnNpdmVseUNoZWNrZWRJbk9wdGlvbihtYWluT3B0aW9uLCBlbGVtZW50KSk7XG5cdFx0fVxuXHRcdGVsc2UgaWYgKEFwcC5jdXJyTWFpbklkID09ICdhbGwnKVxuXHRcdHtcblx0XHRcdGxldCBlbGVtZW50T3B0aW9ucyA9IGVsZW1lbnQuZ2V0T3B0aW9uVmFsdWVCeUNhdGVnb3J5SWQoIEFwcC50YXhvbm9teU1vZHVsZS50YXhvbm9teS5pZCk7XG5cdFx0XHRsZXQgY2hlY2tlZE9wdGlvbnMgPSBBcHAudGF4b25vbXlNb2R1bGUudGF4b25vbXkuY2hlY2tlZE9wdGlvbnM7XG5cblx0XHRcdC8vIGNvbnNvbGUubG9nKFwiXFxuZWxlbWVudHNPcHRpb25zXCIsIGVsZW1lbnRPcHRpb25zLm1hcCggKHZhbHVlKSA9PiB2YWx1ZS5vcHRpb24ubmFtZSkpO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coXCJjaGVja2VkT3B0aW9uc1wiLCBjaGVja2VkT3B0aW9ucy5tYXAoICh2YWx1ZSkgPT4gdmFsdWUubmFtZSkpO1xuXG5cdFx0XHRsZXQgcmVzdWx0ID0gZWxlbWVudE9wdGlvbnMuc29tZShvcHRpb25WYWx1ZSA9PiBjaGVja2VkT3B0aW9ucy5pbmRleE9mKG9wdGlvblZhbHVlLm9wdGlvbikgPiAtMSk7XG5cdFx0XHRyZXR1cm4gcmVzdWx0IDtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdGxldCBtYWluT3B0aW9uID0gQXBwLnRheG9ub215TW9kdWxlLmdldEN1cnJNYWluT3B0aW9uKCk7XHRcdFx0XG5cdFx0XHRsZXQgaXNQYXNzaW5nRmlsdGVycyA9IHRoaXMucmVjdXJzaXZlbHlDaGVja2VkSW5PcHRpb24obWFpbk9wdGlvbiwgZWxlbWVudCk7XHRcdFx0XG5cdFx0XHRyZXR1cm4gaXNQYXNzaW5nRmlsdGVycztcblx0XHR9XHRcdFxuXHR9XG5cblx0cHJpdmF0ZSByZWN1cnNpdmVseUNoZWNrZWRJbk9wdGlvbihvcHRpb24gOiBPcHRpb24sIGVsZW1lbnQgOiBFbGVtZW50KSA6IGJvb2xlYW5cblx0e1xuXHRcdGxldCBsb2cgPSBmYWxzZTtcblxuXHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKCBcIkNoZWNrIGZvciBvcHRpb24gXCIsIG9wdGlvbi5uYW1lKTtcblxuXHRcdGxldCByZXN1bHQ7XG5cdFx0aWYgKG9wdGlvbi5zdWJjYXRlZ29yaWVzLmxlbmd0aCA9PSAwIHx8IChvcHRpb24uaXNEaXNhYmxlZCAmJiAhb3B0aW9uLmlzTWFpbk9wdGlvbikgKVxuXHRcdHtcblx0XHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKCBcIk5vIHN1YmNhdGVnb3JpZXMgXCIpO1xuXHRcdFx0cmVzdWx0ID0gb3B0aW9uLmlzQ2hlY2tlZCAmJiBlbGVtZW50LmhhdmVPcHRpb24ob3B0aW9uKTtcblx0XHR9XG5cdFx0ZWxzZVxuXHRcdHtcblx0XHRcdHJlc3VsdCA9IG9wdGlvbi5zdWJjYXRlZ29yaWVzLmV2ZXJ5KCAoY2F0ZWdvcnkpID0+XG5cdFx0XHR7XG5cdFx0XHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKFwiLS1cIiArIFwiQ2F0ZWdvcnlcIiwgY2F0ZWdvcnkubmFtZSk7XG5cblx0XHRcdFx0aWYgKCFjYXRlZ29yeS51c2VGb3JGaWx0ZXJpbmcpIHJldHVybiB0cnVlO1xuXHRcdFx0XHRsZXQgY2hlY2tlZE9wdGlvbnMgPSBjYXRlZ29yeS5jaGVja2VkT3B0aW9ucztcblx0XHRcdFx0bGV0IGVsZW1lbnRPcHRpb25zID0gZWxlbWVudC5nZXRPcHRpb25WYWx1ZUJ5Q2F0ZWdvcnlJZChjYXRlZ29yeS5pZCk7XG5cdFx0XHRcdGlmIChBcHAuY29uZmlnLm1lbnUuc2hvd09uZVBhbmVQZXJNYWluT3B0aW9uKSBlbGVtZW50T3B0aW9ucyA9IGVsZW1lbnRPcHRpb25zLmZpbHRlcigob3B0VmFsdWUpID0+IG9wdFZhbHVlLm9wdGlvbklkICE9IEFwcC5jdXJyTWFpbklkKTtcblxuXHRcdFx0XHQvLyBpZiB0aGlzIGVsZW1lbnQgZG9uJ3QgaGF2ZSBhbnkgb3B0aW9uIGluIHRoaXMgY2F0ZWdvcnksIGRvbid0IG5lZWQgdG8gY2hlY2tcblx0XHRcdFx0aWYgKGVsZW1lbnRPcHRpb25zLmxlbmd0aCA9PSAwICYmIGxvZykgY29uc29sZS5sb2coXCItLVwiICsgXCJFbGVtZW50IGRvbid0IGhhdmUgb3B0aW9ucyBpbiB0aGlzIGNhdGVnb3J5LiBDYXRnZW95ciBtYW5kYXRvcnkgPyBcIiwgY2F0ZWdvcnkuaXNNYW5kYXRvcnkpO1xuXHRcdFx0XHRpZiAoZWxlbWVudE9wdGlvbnMubGVuZ3RoID09IDApIHJldHVybiAhY2F0ZWdvcnkuaXNNYW5kYXRvcnk7XG5cblx0XHRcdFx0bGV0IGlzU29tZU9wdGlvbkluQ2F0ZWdvcnlDaGVja2VkT3B0aW9ucyA9IGVsZW1lbnRPcHRpb25zLnNvbWUob3B0aW9uVmFsdWUgPT4gY2hlY2tlZE9wdGlvbnMuaW5kZXhPZihvcHRpb25WYWx1ZS5vcHRpb24pID4gLTEpOyBcblxuXHRcdFx0XHRpZiAobG9nKSBjb25zb2xlLmxvZyhcIi0tXCIgKyBcImlzU29tZU9wdGlvbkluQ2F0ZWdvcnlDaGVja2VkT3B0aW9uc1wiLCBpc1NvbWVPcHRpb25JbkNhdGVnb3J5Q2hlY2tlZE9wdGlvbnMpO1xuXHRcdFx0XHRpZiAoaXNTb21lT3B0aW9uSW5DYXRlZ29yeUNoZWNrZWRPcHRpb25zKVxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xuXHRcdFx0XHRlbHNlXG5cdFx0XHRcdHtcdFx0XHRcdFxuXHRcdFx0XHRcdGlmIChsb2cpIGNvbnNvbGUubG9nKFwiLS1cIiArIFwiU28gd2UgY2hlY2tlZCBpbiBzdWJvcHRpb25zXCIsIGNhdGVnb3J5Lm5hbWUpO1xuXHRcdFx0XHRcdHJldHVybiBlbGVtZW50T3B0aW9ucy5zb21lKCAob3B0aW9uVmFsdWUpID0+IHRoaXMucmVjdXJzaXZlbHlDaGVja2VkSW5PcHRpb24ob3B0aW9uVmFsdWUub3B0aW9uLCBlbGVtZW50KSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH1cblx0XHRpZiAobG9nKSBjb25zb2xlLmxvZyhcIlJldHVybiBcIiwgcmVzdWx0KTtcblx0XHRyZXR1cm4gcmVzdWx0O1xuXHR9XG59IiwiaW1wb3J0IHsgcGFyc2VVcmlJZCB9IGZyb20gXCIuLi8uLi91dGlscy9zdHJpbmctaGVscGVyc1wiO1xuXG5leHBvcnQgY2xhc3MgVGF4b25vbXlTa29zTW9kdWxlXG57XG4gIGNvbmNlcHRzID0gW107XG5cbiAgY29udmVydFNrb3NJbnRvR29Hb1RheG9ub215KCRza29zSnNvbilcbiAge1xuICAgIHRoaXMuY29uY2VwdHMgPSAkc2tvc0pzb25bJ0BncmFwaCddO1xuICAgIGxldCByb290Q29uY2VwdHMgPSB0aGlzLmNvbmNlcHRzLmZpbHRlciggKGNvbmNlcHQpID0+ICFjb25jZXB0LmJyb2FkZXIpO1xuICAgIGxldCBjYXRlZ29yaWVzID0gW107XG5cbiAgICBmb3IobGV0IHJvb3RDb25jZXB0IG9mIHJvb3RDb25jZXB0cylcbiAgICB7XG4gICAgICBjYXRlZ29yaWVzLnB1c2godGhpcy5yb290U2tvc1RvR29Hb0NhdGVnb3J5KHJvb3RDb25jZXB0KSk7XG4gICAgfSAgXG5cbiAgICBsZXQgZ29nb1RheG9ub215ID0ge1xuICAgICAgXCJvcHRpb25zXCI6WyAgICBcbiAgICAgICAge1xuICAgICAgICAgIFwibmFtZVwiOlwiUmFjaW5lXCIsXG4gICAgICAgICAgXCJkaXNwbGF5SW5JbmZvQmFyXCI6IGZhbHNlLFxuICAgICAgICAgIFwiZGlzcGxheUluTWVudVwiOiBmYWxzZSxcbiAgICAgICAgICBcInNob3dFeHBhbmRlZFwiOiB0cnVlLFxuICAgICAgICAgIFwic3ViY2F0ZWdvcmllc1wiOiBjYXRlZ29yaWVzLFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfTsgICAgIFxuXG4gICAgY29uc29sZS5sb2coXCJUYXhvbm9teSBUcmVlXCIsIGdvZ29UYXhvbm9teSk7XG4gICAgcmV0dXJuIGdvZ29UYXhvbm9teTtcbiAgfVxuXG4gIHByaXZhdGUgcm9vdFNrb3NUb0dvR29DYXRlZ29yeSgkc2tvc0pzb24pXG4gIHtcbiAgICAkc2tvc0pzb24uaWQgPSAkc2tvc0pzb25bXCJAaWRcIl07XG4gICAgJHNrb3NKc29uLm5hbWUgPSAkc2tvc0pzb25bXCJwcmVmTGFiZWxcIl07XG4gICAgJHNrb3NKc29uLmRpc3BsYXlJbk1lbnUgPSBmYWxzZTtcbiAgICAkc2tvc0pzb24uZGlzcGxheUluSW5mb0JhciA9IGZhbHNlO1xuICAgICRza29zSnNvbi5zaG93RXhwYW5kZWQgPSB0cnVlO1xuICAgICRza29zSnNvbi5zdWJvcHRpb25zID0gdGhpcy5yZWN1cnNpdmVseUNyZWF0ZVN1Yk9wdGlvbk9mKCRza29zSnNvbik7XG5cbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogJHNrb3NKc29uW1wicHJlZkxhYmVsXCJdLFxuICAgICAgc2hvd0V4cGFuZGVkOiB0cnVlLFxuICAgICAgaXNSb290Q2F0ZWdvcnk6IHRydWUsXG4gICAgICB1bmV4cGFuZGFibGU6IHRydWUsXG4gICAgICBvcHRpb25zIDogWyRza29zSnNvbl1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldFN1YkNvbmNlcHRPZihjb25jZXB0SWQpXG4gIHtcbiAgICByZXR1cm4gdGhpcy5jb25jZXB0cy5maWx0ZXIoIChjb25jZXB0KSA9PiBjb25jZXB0LmJyb2FkZXIgPT0gY29uY2VwdElkKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVjdXJzaXZlbHlDcmVhdGVTdWJPcHRpb25PZihjdXJyZW50Q29uY2VwdClcbiAge1xuICAgIGxldCBzdWJDb25jZXB0c1RvQWRkID0gdGhpcy5nZXRTdWJDb25jZXB0T2YoY3VycmVudENvbmNlcHRbJ0BpZCddKTtcbiAgICBsZXQgb3B0aW9ucyA9IFtdO1xuICAgIGZvcihsZXQgY29uY2VwdCBvZiBzdWJDb25jZXB0c1RvQWRkKSBcbiAgICB7XG4gICAgICBsZXQgZ29nb05vZGUgPSB0aGlzLnNrb3NUb0dvR29PcHRpb24oY29uY2VwdCk7XG4gICAgICBsZXQgc3Vib3B0aW9ucyA9IHRoaXMucmVjdXJzaXZlbHlDcmVhdGVTdWJPcHRpb25PZihjb25jZXB0KTtcbiAgICAgIGlmIChzdWJvcHRpb25zLmxlbmd0aCA+IDApIGdvZ29Ob2RlLnN1Ym9wdGlvbnMgPSBzdWJvcHRpb25zO1xuICAgICAgb3B0aW9ucy5wdXNoKGdvZ29Ob2RlKTtcbiAgICB9XG4gICAgcmV0dXJuIG9wdGlvbnM7XG4gIH1cblxuICBwcml2YXRlIHNrb3NUb0dvR29PcHRpb24oJHNrb3NKc29uKSBcbiAge1xuICAgICRza29zSnNvbi5pZCA9IHBhcnNlVXJpSWQoJHNrb3NKc29uW1wiQGlkXCJdKTtcbiAgICAkc2tvc0pzb24ubmFtZSA9ICRza29zSnNvbltcInByZWZMYWJlbFwiXTsgICAgXG4gICAgcmV0dXJuICRza29zSnNvbjtcbiAgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTEyLTEzXG4gKi9cblxuaW1wb3J0IHsgQXBwTW9kdWxlLCBBcHBTdGF0ZXMsIEFwcE1vZGVzIH0gZnJvbSBcIi4uLy4uL2FwcC5tb2R1bGVcIjtcbmltcG9ydCB7IE9wdGlvbiwgQ2F0ZWdvcnkgfSBmcm9tIFwiLi4vLi4vY2xhc3Nlcy9jbGFzc2VzXCI7XG5leHBvcnQgeyBPcHRpb24sIENhdGVnb3J5IH0gZnJvbSBcIi4uLy4uL2NsYXNzZXMvY2xhc3Nlc1wiO1xuaW1wb3J0IHsgc2x1Z2lmeSB9IGZyb20gJy4uLy4uL3V0aWxzL3N0cmluZy1oZWxwZXJzJztcbmltcG9ydCB7IEFwcCB9IGZyb20gXCIuLi8uLi9nb2dvY2FydG9cIjtcbmRlY2xhcmUgbGV0ICQgOiBhbnk7XG5cblxuZXhwb3J0IGNsYXNzIFRheG9ub215TW9kdWxlXG57XG5cdGNhdGVnb3JpZXMgOiBDYXRlZ29yeVtdID0gW107XG5cdG9wdGlvbnMgOiBPcHRpb25bXSA9IFtdO1xuXG5cdC8vIHRoZSBmdWxsIGhpZXJhY2hpYyB0YXhvbm9teVxuXHR0YXhvbm9teSA6IENhdGVnb3J5O1xuXHRcblx0cm9vdENhdGVnb3JpZXMgOiBDYXRlZ29yeVtdO1xuXG5cdGNhdGVnb3JpZXNDcmVhdGVkQ291bnQgOiBudW1iZXIgPSAxO1xuXHRvcHRpb25zQ3JlYXRlZENvdW50IDogbnVtYmVyID0gMTtcblxuXHRjb25zdHJ1Y3RvcigpIFxuXHR7XG5cdFx0dGhpcy5vcHRpb25zID0gW107XG5cdFx0dGhpcy5jYXRlZ29yaWVzID0gW107XG5cdH1cblxuXHRjcmVhdGVUYXhvbm9teUZyb21Kc29uKHRheG9ub215SnNvbilcblx0e1xuXHRcdGxldCBpc1Nrb3NUYXhvbm9teSA9IHRheG9ub215SnNvblsnQGdyYXBoJ107XG5cdFx0aWYgKGlzU2tvc1RheG9ub215KSB0YXhvbm9teUpzb24gPSBBcHAudGF4b25vbXlTa29zTW9kdWxlLmNvbnZlcnRTa29zSW50b0dvR29UYXhvbm9teSh0YXhvbm9teUpzb24pO1xuXHRcdFxuXHRcdGlmIChBcnJheS5pc0FycmF5KHRheG9ub215SnNvbikgJiYgdGF4b25vbXlKc29uLmxlbmd0aCA9PSAxKSB0YXhvbm9teUpzb24gPSB0YXhvbm9teUpzb25bMF07XG5cdFx0XG5cdFx0Ly8gSWYgbXVsdGlwbGUgcm9vdCBjYXRlZ29yaWVzLCB3ZSBlbmNhcHN1bGF0ZSB0aGVtIGludG8gYSBzaW5nbGUgZmFrZSBjYXRlZ29yeSAmIHJvb3Qgb3B0aW9uXG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodGF4b25vbXlKc29uKSAmJiB0YXhvbm9teUpzb24ubGVuZ3RoID4gMSkge1xuXHRcdFx0Zm9yIChsZXQganNvbiBvZiB0YXhvbm9teUpzb24pIGpzb24uaXNSb290Q2F0ZWdvcnkgPSB0cnVlO1xuXHRcdFx0dGF4b25vbXlKc29uID0ge1xuXHQgICAgICBcIm9wdGlvbnNcIjpbICAgIFxuXHQgICAgICAgIHtcblx0ICAgICAgICAgIFwibmFtZVwiOlwiUm9vdEZha2VPcHRpb25cIixcblx0ICAgICAgICAgIFwiZGlzcGxheUluSW5mb0JhclwiOiBmYWxzZSxcblx0ICAgICAgICAgIFwiZGlzcGxheUluTWVudVwiOiBmYWxzZSxcblx0ICAgICAgICAgIFwic2hvd0V4cGFuZGVkXCI6IHRydWUsXG5cdCAgICAgICAgICBcInN1YmNhdGVnb3JpZXNcIjogdGF4b25vbXlKc29uLFxuXHQgICAgICAgIH1cblx0ICAgICAgXVxuXHQgICAgfTtcdCAgICBcblx0XHR9XG5cdFx0ZWxzZSBpZiAoIWlzU2tvc1RheG9ub215KSB0YXhvbm9teUpzb24uaXNSb290Q2F0ZWdvcnkgPSB0cnVlO1xuXG5cdFx0dGhpcy50YXhvbm9teSA9IHRoaXMucmVjdXJzaXZlbHlDcmVhdGVDYXRlZ29yeUFuZE9wdGlvbnModGF4b25vbXlKc29uKTtcblx0XHR0aGlzLnJvb3RDYXRlZ29yaWVzID0gdGhpcy5maW5kUm9vdENhdGVnb3JpZXMoKTtcblx0XHRmb3IobGV0IG9wdGlvbiBvZiB0aGlzLm1haW5DYXRlZ29yeS5jaGlsZHJlbikgb3B0aW9uLmlzTWFpbk9wdGlvbiA9IHRydWU7XG5cdFx0XG5cdFx0aWYgKHRoaXMucm9vdENhdGVnb3JpZXMubGVuZ3RoID4gMSlcblx0XHRcdGZvcihsZXQgcm9vdENhdGVnb3J5IG9mIHRoaXMucm9vdENhdGVnb3JpZXMpIHRoaXMucmVjdXJzaXZlbHlDYWxjdWxhdGVQYXJlbnRzT3B0aW9uSWRzKHJvb3RDYXRlZ29yeSwgdGhpcy50YXhvbm9teS5vcHRpb25zWzBdKTtcblx0XHRlbHNlXG5cdFx0XHR0aGlzLnJlY3Vyc2l2ZWx5Q2FsY3VsYXRlUGFyZW50c09wdGlvbklkcyh0aGlzLm1haW5DYXRlZ29yeSk7XG5cdH1cdFxuXG5cdHByaXZhdGUgZmluZFJvb3RDYXRlZ29yaWVzKCkgOiBDYXRlZ29yeVtdXG5cdHtcblx0XHRpZiAodGhpcy50YXhvbm9teS5kaXNwbGF5SW5NZW51KSByZXR1cm4gW3RoaXMudGF4b25vbXldO1xuXHRcdHJldHVybiB0aGlzLnRheG9ub215Lm9wdGlvbnNbMF0uc3ViY2F0ZWdvcmllcztcblx0fVxuXG5cdHByaXZhdGUgcmVjdXJzaXZlbHlDcmVhdGVDYXRlZ29yeUFuZE9wdGlvbnMoY2F0ZWdvcnlKc29uIDogYW55KSA6IENhdGVnb3J5XG5cdHtcblx0XHRyZXR1cm4gdGhpcy5yZWN1cnNpdmVseUNyZWF0ZUNhdGVnb3J5KGNhdGVnb3J5SnNvbik7XG5cdH1cblxuXHRwcml2YXRlIHJlY3Vyc2l2ZWx5Q3JlYXRlQ2F0ZWdvcnkoY2F0ZWdvcnlKc29uIDogYW55KSA6IENhdGVnb3J5XG5cdHtcblx0XHRpZiAoIWNhdGVnb3J5SnNvbi5pZCkgY2F0ZWdvcnlKc29uLmlkID0gdGhpcy5jYXRlZ29yaWVzQ3JlYXRlZENvdW50Kys7XG5cdFx0XG5cdFx0bGV0IGNhdGVnb3J5ID0gbmV3IENhdGVnb3J5KGNhdGVnb3J5SnNvbik7XG5cblx0XHRpZiAoY2F0ZWdvcnlKc29uLm9wdGlvbnMpXG5cdFx0XHRmb3IobGV0IG9wdGlvbkpzb24gb2YgY2F0ZWdvcnlKc29uLm9wdGlvbnMpIHRoaXMucmVjdXJzaXZlbHlDcmVhdGVPcHRpb24ob3B0aW9uSnNvbiwgY2F0ZWdvcnkpXG5cdFx0ZWxzZSBpZiAoY2F0ZWdvcnlKc29uLnN1YmNhdGVnb3JpZXMpXG5cdFx0XHR0aGlzLnJlY3Vyc2l2ZWx5Q3JlYXRlT3B0aW9uKHtzdWJjYXRlZ29yaWVzOiBjYXRlZ29yeUpzb24uc3ViY2F0ZWdvcmllcywgc2hvd0V4cGFuZGVkOiB0cnVlLCBkaXNwbGF5SW5NZW51OiBmYWxzZSwgZGlzcGxheUluSW5mb0JhcjogZmFsc2V9LCBjYXRlZ29yeSlcblxuXHRcdHRoaXMuY2F0ZWdvcmllcy5wdXNoKGNhdGVnb3J5KTtcblxuXHRcdHJldHVybiBjYXRlZ29yeTtcblx0fVxuXG5cdHByaXZhdGUgcmVjdXJzaXZlbHlDcmVhdGVPcHRpb24ob3B0aW9uSnNvbiA6IGFueSwgcGFyZW50Q2F0Z2VvcnkgOiBDYXRlZ29yeSlcblx0e1xuXHRcdG9wdGlvbkpzb24uaW50SWQgPSB0aGlzLm9wdGlvbnNDcmVhdGVkQ291bnQrKztcblx0XHRsZXQgb3B0aW9uID0gbmV3IE9wdGlvbihvcHRpb25Kc29uKTtcblx0XHRvcHRpb24ub3duZXJJZCA9IHBhcmVudENhdGdlb3J5LmlkO1xuXG5cdFx0aWYgKG9wdGlvbkpzb24uc3ViY2F0ZWdvcmllcylcblx0XHRcdGZvcihsZXQgc3ViY2F0ZWdvcnlKc29uIG9mIG9wdGlvbkpzb24uc3ViY2F0ZWdvcmllcylcblx0XHRcdHtcdFx0XHRcdFxuXHRcdFx0XHRsZXQgc3ViY2F0ZWdvcnkgPSB0aGlzLnJlY3Vyc2l2ZWx5Q3JlYXRlQ2F0ZWdvcnlBbmRPcHRpb25zKHN1YmNhdGVnb3J5SnNvbik7XG5cdFx0XHRcdHN1YmNhdGVnb3J5Lm93bmVySWQgPSBvcHRpb24uaWQ7XG5cdFx0XHRcdG9wdGlvbi5hZGRDYXRlZ29yeShzdWJjYXRlZ29yeSk7XG5cdFx0XHR9XG5cdFx0ZWxzZSBpZiAob3B0aW9uSnNvbi5zdWJvcHRpb25zKVxuXHRcdHtcblx0XHRcdGxldCBzdWJjYXRlZ29yeSA9IHRoaXMucmVjdXJzaXZlbHlDcmVhdGVDYXRlZ29yeUFuZE9wdGlvbnMoe29wdGlvbnM6IG9wdGlvbkpzb24uc3Vib3B0aW9ucywgc2hvd0V4cGFuZGVkOiBvcHRpb25Kc29uLnNob3dFeHBhbmRlZH0pO1xuXHRcdFx0c3ViY2F0ZWdvcnkub3duZXJJZCA9IG9wdGlvbi5pZDtcblx0XHRcdG9wdGlvbi5hZGRDYXRlZ29yeShzdWJjYXRlZ29yeSk7XG5cdFx0fVxuXG5cdFx0cGFyZW50Q2F0Z2VvcnkuYWRkT3B0aW9uKG9wdGlvbik7XHRcblx0XHR0aGlzLm9wdGlvbnMucHVzaChvcHRpb24pO1x0XG5cdH1cblxuXHQvLyBXZSB3YW50IGV2ZXJ5IG9wdGlvbiB0byBrbm93IGFsbCB0aG9zZSBwYXJlbnRzIE9wdGlvbiBpZHNcblx0Ly8gdGhpcyBtZXRob2QgY2FsY3VsYXRlIHRob3NlIGZvciBhbGwgb3B0aW9uc1xuXHRwcml2YXRlIHJlY3Vyc2l2ZWx5Q2FsY3VsYXRlUGFyZW50c09wdGlvbklkcyhjYXRlZ29yeTogQ2F0ZWdvcnksIHBhcmVudE9wdGlvbiA6IE9wdGlvbiA9IG51bGwpXG5cdHtcblx0XHRmb3IobGV0IG9wdGlvbiBvZiBjYXRlZ29yeS5jaGlsZHJlbilcblx0XHR7XG5cdFx0XHRpZiAob3B0aW9uLmlzTWFpbk9wdGlvbiB8fCBwYXJlbnRPcHRpb24gPT09IG51bGwpIG9wdGlvbi5tYWluT3duZXJJZCA9IFwiYWxsXCI7XG5cdFx0XHRlbHNlIGlmIChwYXJlbnRPcHRpb24uaXNNYWluT3B0aW9uKSBvcHRpb24ubWFpbk93bmVySWQgPSBwYXJlbnRPcHRpb24uaWQ7XG5cdFx0XHRlbHNlIG9wdGlvbi5tYWluT3duZXJJZCA9IHBhcmVudE9wdGlvbi5tYWluT3duZXJJZDtcblxuXHRcdFx0aWYgKHBhcmVudE9wdGlvbikgKDxPcHRpb24+b3B0aW9uKS5wYXJlbnRPcHRpb25JZHMgPSBwYXJlbnRPcHRpb24ucGFyZW50T3B0aW9uSWRzLmNvbmNhdChbcGFyZW50T3B0aW9uLmlkXSk7XG5cblx0XHRcdGZvcihsZXQgc3ViY2F0ZWdvcnkgb2Ygb3B0aW9uLmNoaWxkcmVuKVxuXHRcdFx0e1x0XHRcdFx0XG5cdFx0XHRcdHRoaXMucmVjdXJzaXZlbHlDYWxjdWxhdGVQYXJlbnRzT3B0aW9uSWRzKDxDYXRlZ29yeT5zdWJjYXRlZ29yeSwgPE9wdGlvbj5vcHRpb24pO1xuXHRcdFx0fVx0XHRcdFxuXHRcdH1cblx0fVxuXG5cdGdldE1haW5PcHRpb25zKCkgOiBPcHRpb25bXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMubWFpbkNhdGVnb3J5Lm9wdGlvbnM7XG5cdH1cblxuXHRnZXRNYWluT3B0aW9uc0lkc1dpdGhBbGwoKSA6IGFueVtdXG5cdHtcblx0XHRsZXQgb3B0aW9uSWRzIDogYW55W10gPSB0aGlzLmdldE1haW5PcHRpb25zSWRzKCk7XG5cdFx0b3B0aW9uSWRzLnB1c2goXCJhbGxcIik7XG5cdFx0cmV0dXJuIG9wdGlvbklkcztcblx0fVxuXG5cdGdldE1haW5PcHRpb25zSWRzKCkgOiBudW1iZXJbXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TWFpbk9wdGlvbnMoKS5tYXAoIChvcHRpb24pID0+IG9wdGlvbi5pZCk7XG5cdH1cblxuXHRnZXRDdXJyTWFpbk9wdGlvbigpIDogT3B0aW9uXG5cdHtcblx0XHRyZXR1cm4gQXBwLmN1cnJNYWluSWQgPT0gJ2FsbCcgPyBudWxsIDogdGhpcy5nZXRNYWluT3B0aW9uQnlJZChBcHAuY3Vyck1haW5JZCk7XG5cdH1cblxuXHRnZXRNYWluT3B0aW9uQnlTbHVnKCRzbHVnKSA6IE9wdGlvblxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TWFpbk9wdGlvbnMoKS5maWx0ZXIoIChvcHRpb24gOiBPcHRpb24pID0+IHNsdWdpZnkob3B0aW9uLm5hbWVTaG9ydCkgPT0gJHNsdWcpLnNoaWZ0KCk7XG5cdH1cblxuXHRnZXRNYWluT3B0aW9uQnlJZCAoJGlkKSA6IE9wdGlvblxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuZ2V0TWFpbk9wdGlvbnMoKS5maWx0ZXIoIChvcHRpb24gOiBPcHRpb24pID0+IG9wdGlvbi5pZCA9PSAkaWQpLnNoaWZ0KCk7XG5cdH07XG5cblx0Z2V0Q2F0ZWdvcnlCeUlkICgkaWQpIDogQ2F0ZWdvcnlcblx0e1xuXHRcdHJldHVybiB0aGlzLmNhdGVnb3JpZXMuZmlsdGVyKCAoY2F0ZWdvcnkgOiBDYXRlZ29yeSkgPT4gY2F0ZWdvcnkuaWQgPT0gJGlkKS5zaGlmdCgpO1xuXHR9O1xuXG5cdGdldE9wdGlvbkJ5SWQgKCRpZCkgOiBPcHRpb25cblx0e1xuXHRcdHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKCAob3B0aW9uIDogT3B0aW9uKSA9PiBvcHRpb24uaWQgPT0gJGlkKS5zaGlmdCgpO1xuXHR9O1xuXG5cdGdldE9wdGlvbkJ5SW50SWQgKCRpZCkgOiBPcHRpb25cblx0e1xuXHRcdHJldHVybiB0aGlzLm9wdGlvbnMuZmlsdGVyKCAob3B0aW9uIDogT3B0aW9uKSA9PiBvcHRpb24uaW50SWQgPT0gJGlkKS5zaGlmdCgpO1xuXHR9O1xuXG5cdGdldEN1cnJPcHRpb25zKCkgOiBPcHRpb25bXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMub3B0aW9ucy5maWx0ZXIoIChvcHRpb24gOiBPcHRpb24pID0+IG9wdGlvbi5tYWluT3duZXJJZCA9PSBBcHAuY3Vyck1haW5JZCk7XG5cdH1cblxuXHRnZXRSb290Q2F0ZWdvcmllcygpIDogQ2F0ZWdvcnlbXVxuXHR7XG5cdFx0cmV0dXJuIHRoaXMuY2F0ZWdvcmllcy5maWx0ZXIoIChjYXRlZ29yeSA6IENhdGVnb3J5KSA9PiBjYXRlZ29yeS5pc1Jvb3RDYXRlZ29yeSk7XG5cdH1cblxuXHQvLyB0aGUgbWFpbiBjYXRlZ29yeSA6IGkuZS4gdGhlIGZpcnN0IHJvb3QgY2F0ZWdvcnkgKGNvdWxkIGhhdmUgbWFueSByb290IGNhdGVnb3JpZXMpIFxuXHRnZXQgbWFpbkNhdGVnb3J5KCkgeyByZXR1cm4gdGhpcy5yb290Q2F0ZWdvcmllc1swXTsgfVxufSIsIi8qKlxuICogVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdvR29DYXJ0byBwcm9qZWN0LlxuICogRm9yIHRoZSBmdWxsIGNvcHlyaWdodCBhbmQgbGljZW5zZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpZXcgdGhlIExJQ0VOU0VcbiAqIGZpbGUgdGhhdCB3YXMgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHNvdXJjZSBjb2RlLlxuICpcbiAqIEBjb3B5cmlnaHQgQ29weXJpZ2h0IChjKSAyMDE2IFNlYmFzdGlhbiBDYXN0cm8gLSA5MHNjYXN0cm9AZ21haWwuY29tXG4gKiBAbGljZW5zZSBHTlUgR1BMIHYzXG4gKiBATGFzdCBNb2RpZmllZCB0aW1lOiAyMDE2LTA4LTMxXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVDb29raWUobmFtZSwgdmFsdWUsIGRheXMgPSAxMDApIFxue1xuXHRsZXQgZGF0ZSA9IG5ldyBEYXRlKCk7XG5cdGRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSsoZGF5cyoyNCo2MCo2MCoxMDAwKSk7XG5cdGxldCBleHBpcmVzID0gXCI7IGV4cGlyZXM9XCIrZGF0ZS50b1VUQ1N0cmluZygpO1xuXHRcblx0ZG9jdW1lbnQuY29va2llID0gbmFtZStcIj1cIit2YWx1ZStleHBpcmVzK1wiOyBwYXRoPS9cIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlYWRDb29raWUobmFtZSkge1xuXHRsZXQgbmFtZUVRID0gbmFtZSArIFwiPVwiO1xuXHRsZXQgY2EgPSBkb2N1bWVudC5jb29raWUuc3BsaXQoJzsnKTtcblx0Zm9yKGxldCBpPTA7aSA8IGNhLmxlbmd0aDtpKyspIHtcblx0XHRsZXQgYyA9IGNhW2ldO1xuXHRcdHdoaWxlIChjLmNoYXJBdCgwKSA9PSAnICcpIGMgPSBjLnN1YnN0cmluZygxLGMubGVuZ3RoKTtcblx0XHRpZiAoYy5pbmRleE9mKG5hbWVFUSkgPT09IDApIHJldHVybiBjLnN1YnN0cmluZyhuYW1lRVEubGVuZ3RoLGMubGVuZ3RoKTtcblx0fVxuXHRyZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGVyYXNlQ29va2llKG5hbWUpIHtcblx0Y3JlYXRlQ29va2llKG5hbWUsXCJcIik7XG59IiwiZXhwb3J0IGZ1bmN0aW9uIGdldFF1ZXJ5UGFyYW1zKHFzKSBcbntcbiAgcXMgPSBxcy5zcGxpdChcIitcIikuam9pbihcIiBcIik7XG4gIHZhciBwYXJhbXMgPSB7fSxcbiAgICAgIHRva2VucyxcbiAgICAgIHJlID0gL1s/Jl0/KFtePV0rKT0oW14mXSopL2c7XG5cbiAgd2hpbGUgKCh0b2tlbnMgPSByZS5leGVjKHFzKSkpIHtcbiAgICAgIHBhcmFtc1tkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzFdKV0gPSBkZWNvZGVVUklDb21wb25lbnQodG9rZW5zWzJdKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbXM7XG59IiwiZXhwb3J0IGZ1bmN0aW9uIHBhcnNlQXJyYXlOdW1iZXJJbnRvU3RyaW5nKGFycmF5IDogbnVtYmVyW10pIDogc3RyaW5nXG57XG4gIGxldCByZXN1bHQgID0gJyc7XG4gIGxldCBpID0gMDtcblxuICBmb3IobGV0IG51bWJlciBvZiBhcnJheSlcbiAge1xuICAgIGlmIChudW1iZXIpXG4gICAge1xuICAgICAgICBpZiAoaSAlIDIgPT0gMCkgcmVzdWx0ICs9IHBhcnNlTnVtYmVyVG9TdHJpbmcobnVtYmVyKTtcbiAgICAgICAgZWxzZSByZXN1bHQgKz0gbnVtYmVyLnRvU3RyaW5nKCk7XG4gICAgICAgIGkrKztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBwYXJzZU51bWJlclRvU3RyaW5nKG51bWJlciA6IG51bWJlcikgOiBzdHJpbmdcbnsgIFxuICBsZXQgYmFzZTI2ID0gbnVtYmVyLnRvU3RyaW5nKDI2KTtcbiAgbGV0IGkgPSAwOyBcbiAgbGV0IGxlbmd0aCA9IGJhc2UyNi5sZW5ndGg7XG5cbiAgbGV0IHJlc3VsdCA9ICcnO1xuXG4gIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgXG4gIHtcbiAgICByZXN1bHQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg5NiArIHBhcnNlSW50KGJhc2UyNltpXSwyNikpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gcGFyc2VTdHJpbmdUb051bWJlcihzdHJpbmcgOiBzdHJpbmcpIDogbnVtYmVyXG57ICBcbiAgbGV0IGkgPSAwOyBcbiAgbGV0IGxlbmd0aCA9IHN0cmluZy5sZW5ndGg7XG5cbiAgbGV0IHJlc3VsdCA9IDA7XG5cbiAgZm9yIChpID0gbGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIFxuICB7XG4gICAgcmVzdWx0ICs9IChzdHJpbmcuY2hhckNvZGVBdChpKSAtIDk2KSAqIE1hdGgucG93KDI2LCBsZW5ndGggLSBpIC0gMSk7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VTdHJpbmdJbnRvQXJyYXlOdW1iZXIoc3RyaW5nIDogc3RyaW5nKSA6IG51bWJlcltdXG57XG4gIGxldCByZXN1bHQgOiBudW1iZXJbXSA9IFtdO1xuXG4gIGlmICghc3RyaW5nKSByZXR1cm4gcmVzdWx0O1xuXG4gIGxldCBhcnJheSA9IHN0cmluZy5tYXRjaCgvW2Etel0rfFswLTldKy9nKTtcblxuICBmb3IobGV0IGVsZW1lbnQgb2YgYXJyYXkpXG4gIHtcbiAgICBpZiAocGFyc2VJbnQoZWxlbWVudCkpIHJlc3VsdC5wdXNoKHBhcnNlSW50KGVsZW1lbnQpKTtcbiAgICBlbHNlIHJlc3VsdC5wdXNoKHBhcnNlU3RyaW5nVG9OdW1iZXIoZWxlbWVudCkpO1xuICB9XG5cbiAgcmV0dXJuIHJlc3VsdDtcbn0iLCJleHBvcnQgZnVuY3Rpb24gc2x1Z2lmeSh0ZXh0KSA6IHN0cmluZ1xue1xuICBpZiAoIXRleHQpIHJldHVybiAnJztcbiAgdmFyIGZyb20gPSBcIsOjw6DDocOkw6Lhur3DqMOpw6vDqsOsw63Dr8Ouw7XDssOzw7bDtMO5w7rDvMO7w7HDp8K3L18sOjtcIjtcbiAgdmFyIHRvICAgPSBcImFhYWFhZWVlZWVpaWlpb29vb291dXV1bmMtLS0tLS1cIjtcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZyb20ubGVuZ3RoOyBpIDwgbGVuOyBpKyspXG4gIHtcbiAgICB0ZXh0ID0gdGV4dC5yZXBsYWNlKG5ldyBSZWdFeHAoZnJvbS5jaGFyQXQoaSksICdnJyksIHRvLmNoYXJBdChpKSk7XG4gIH1cbiAgcmV0dXJuIHRleHRcbiAgICAgIC50b1N0cmluZygpICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzdCB0byBzdHJpbmdcbiAgICAgIC8vIC50b0xvd2VyQ2FzZSgpICAgICAgICAgICAgICAgICAgLy8gQ29udmVydCB0aGUgc3RyaW5nIHRvIGxvd2VyY2FzZSBsZXR0ZXJzXG4gICAgICAudHJpbSgpICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSB3aGl0ZXNwYWNlIGZyb20gYm90aCBzaWRlcyBvZiBhIHN0cmluZ1xuICAgICAgLnJlcGxhY2UoL1xccysvZywgJy0nKSAgICAgICAgICAgLy8gUmVwbGFjZSBzcGFjZXMgd2l0aCAtXG4gICAgICAucmVwbGFjZSgvJi9nLCAnLXktJykgICAgICAgICAgIC8vIFJlcGxhY2UgJiB3aXRoICdhbmQnXG4gICAgICAucmVwbGFjZSgvW15cXHdcXC1dKy9nLCAnJykgICAgICAgLy8gUmVtb3ZlIGFsbCBub24td29yZCBjaGFyc1xuICAgICAgLnJlcGxhY2UoL1xcLVxcLSsvZywgJy0nKTsgICAgICAgIC8vIFJlcGxhY2UgbXVsdGlwbGUgLSB3aXRoIHNpbmdsZSAtXG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1bnNsdWdpZnkodGV4dCA6IHN0cmluZykgOiBzdHJpbmdcbntcbiAgaWYgKCF0ZXh0KSByZXR1cm4gJyc7XG4gIHJldHVybiB0ZXh0LnRvU3RyaW5nKCkucmVwbGFjZSgvXFwtKy9nLCAnICcpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2FwaXRhbGl6ZSh0ZXh0IDogc3RyaW5nKSA6IHN0cmluZ1xue1xuICBpZiAoIXRleHQpIHJldHVybiBcIlwiO1xuICByZXR1cm4gdGV4dC5sZW5ndGggPiAxID8gdGV4dC5zdWJzdHIoMCwxKS50b1VwcGVyQ2FzZSgpK3RleHQuc3Vic3RyKDEsdGV4dC5sZW5ndGgpIDogdGV4dDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlVXJpSWQoJHVyaUlkIDogc3RyaW5nKSA6IHN0cmluZ1xue1xuICBpZiAoISR1cmlJZCkgcmV0dXJuIFwiXCI7XG4gIGxldCBzcGxpdGVkID0gJHVyaUlkLnRvU3RyaW5nKCkuc3BsaXQoJy8nKTtcbiAgcmV0dXJuIHNwbGl0ZWRbc3BsaXRlZC5sZW5ndGggLSAxXTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHNwbGl0TG9uZ1RleHQodGV4dCA6IHN0cmluZywgbGVuZ3RoIDogbnVtYmVyLCBzaXplIDogbnVtYmVyID0gNTApIFxue1xuICAvLyBpZiB0aGUgdGV4dCBpcyBqdXN0IGEgYml0IGxvbmdlciB0aGFuIHRoZSBsZW5ndGgsIHdlIGN1dCBpdCBtb3JlIHNvIHRoZSB0ZXh0MiBpcyBub3Qgc28gc2hvcnRcbiAgaWYgKHRleHQubGVuZ3RoIDwgbGVuZ3RoICsgc2l6ZSkge1xuICAgIGxlbmd0aCA9IGxlbmd0aCAtIHNpemU7XG4gIH1cbiAgbGV0IHN0YXJ0T2Zmc2V0ID0gbGVuZ3RoIC0gc2l6ZTtcbiAgbGV0IG9mZnNldCA9IHRleHQuc2xpY2Uoc3RhcnRPZmZzZXQsIGxlbmd0aCkuc3BsaXQoL1xcLnwhfFxcPy9nKVswXS5sZW5ndGg7XG4gIGlmIChvZmZzZXQgPT0gc2l6ZSkgb2Zmc2V0ID0gdGV4dC5zbGljZShzdGFydE9mZnNldCwgbGVuZ3RoKS5zcGxpdCgnICcpWzBdLmxlbmd0aDtcbiAgb2Zmc2V0ICs9IHN0YXJ0T2Zmc2V0ICsgMTtcbiAgbGV0IHRleHQxID0gdGV4dC5zbGljZSgwLCBvZmZzZXQpO1xuICBsZXQgdGV4dDIgPSB0ZXh0LnNsaWNlKG9mZnNldCk7XG4gIHJldHVybiB7IGZpcnN0OiB0ZXh0MSwgc2Vjb25kOiB0ZXh0MiB9O1xufSJdfQ== diff --git a/dist/gogocarto.min.css b/dist/gogocarto.min.css index dbaf007..642c141 100755 --- a/dist/gogocarto.min.css +++ b/dist/gogocarto.min.css @@ -1,8 +1,8 @@ -@charset "UTF-8";/*! normalize.css v3.0.2 | MIT License | git.io/normalize */img,legend{border:0}legend,td,th{padding:0}.gogo-load-css table.centered tbody tr td,.gogo-load-css table.centered thead tr th,.material-tooltip{text-align:center}.gogo-load-css .gogocarto-container .leaflet-routing-alt table,table{border-collapse:collapse}.gogo-load-css ul,.gogo-load-css ul li{list-style-type:none}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-spacing:0}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width:600px){#toast-container{min-width:100%;bottom:0}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:48px;line-height:48px;background-color:#323232;padding:0 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.backdrop,.material-tooltip{position:absolute;opacity:0}.gogo-load-css .toast .btn-large,.toast .btn,.toast .btn-flat,.toast .gogo-load-css .btn-large{margin:0 0 0 3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width:600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width:601px) and (max-width:1200px){#toast-container{min-width:30%;right:5%;bottom:7%}.toast{float:left}}@media only screen and (min-width:1201px){#toast-container{min-width:8%;bottom:10%;right:7%}.toast{float:right}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:5000;background-color:transparent;border-radius:3px;color:#fff;min-height:36px;line-height:1rem;display:none;overflow:hidden;left:0;top:0;will-change:top,left}@media only screen and (max-width:600px){.material-tooltip{display:none!important}}.backdrop{display:none;height:7px;width:14px;border-radius:0 0 14px 14px;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%;will-change:transform,opacity}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none}.gogo-load-css{/*! +@charset "UTF-8";/*! normalize.css v3.0.2 | MIT License | git.io/normalize */img,legend{border:0}legend,td,th{padding:0}.gogo-load-css table.centered tbody tr td,.gogo-load-css table.centered thead tr th,.material-tooltip{text-align:center}.gogo-load-css .gogocarto-container .leaflet-routing-alt table,table{border-collapse:collapse}html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;box-sizing:border-box}*,:after,:before{box-sizing:inherit}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,optgroup,strong{font-weight:700}dfn{font-style:italic}h1{font-size:2em;margin:.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0}pre,textarea{overflow:auto}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{-webkit-appearance:textfield;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;box-sizing:content-box}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em}table{border-spacing:0}#toast-container{display:block;position:fixed;z-index:10000}@media only screen and (max-width:600px){#toast-container{min-width:100%;bottom:0}}.toast{border-radius:2px;top:0;width:auto;clear:both;margin-top:10px;position:relative;max-width:100%;height:48px;line-height:48px;background-color:#323232;padding:0 25px;font-size:1.1rem;font-weight:300;color:#fff;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;-webkit-justify-content:space-between;justify-content:space-between}.backdrop,.material-tooltip{position:absolute;opacity:0}.gogo-load-css .toast .btn-large,.toast .btn,.toast .btn-flat,.toast .gogo-load-css .btn-large{margin:0 0 0 3rem}.toast.rounded{border-radius:24px}@media only screen and (max-width:600px){.toast{width:100%;border-radius:0}}@media only screen and (min-width:601px) and (max-width:1200px){#toast-container{min-width:30%;right:5%;bottom:7%}.toast{float:left}}@media only screen and (min-width:1201px){#toast-container{min-width:8%;bottom:10%;right:7%}.toast{float:right}}.material-tooltip{padding:10px 8px;font-size:1rem;z-index:5000;background-color:transparent;border-radius:3px;color:#fff;min-height:36px;line-height:1rem;display:none;overflow:hidden;left:0;top:0;will-change:top,left}@media only screen and (max-width:600px){.material-tooltip{display:none!important}}.backdrop{display:none;height:7px;width:14px;border-radius:0 0 14px 14px;background-color:#323232;z-index:-1;-webkit-transform-origin:50% 10%;-moz-transform-origin:50% 10%;-ms-transform-origin:50% 10%;-o-transform-origin:50% 10%;transform-origin:50% 10%;will-change:transform,opacity}.lean-overlay{position:fixed;z-index:999;top:-100px;left:0;bottom:0;right:0;height:125%;width:100%;background:#000;display:none}.gogo-load-css{/*! * Waves v0.6.0 * http://fian.my.id/Waves * * Copyright 2014 Alfiana E. Sibuea and other contributors * Released under the MIT license * https://github.com/fians/Waves/blob/master/LICENSE - */height:100%;width:100%}.gogo-load-css ul{padding:0}.gogo-load-css a{color:#26A69A;-webkit-tap-highlight-color:transparent;text-decoration:none}.gogo-load-css .valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.gogo-load-css .valign-wrapper .valign{display:block}.gogo-load-css .clearfix{clear:both}.gogo-load-css .z-depth-0{box-shadow:none!important}.gogo-load-css .btn,.gogo-load-css .btn-floating,.gogo-load-css .btn-large,.gogo-load-css .collapsible,.gogo-load-css .dropdown-content,.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big,.gogo-load-css .toast,.gogo-load-css .z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.gogo-load-css .btn-floating:hover,.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover,.gogo-load-css .z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.gogo-load-css .gogocarto-container #markerDirectionResult,.gogo-load-css .z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.gogo-load-css .modal,.gogo-load-css .z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.gogo-load-css .z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}.gogo-load-css .hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #de5a5f}.gogo-load-css i{line-height:inherit}.gogo-load-css i.left{float:left;margin-right:15px}.gogo-load-css i.right{float:right;margin-left:15px}.gogo-load-css i.tiny{font-size:1rem}.gogo-load-css i.small{font-size:2rem}.gogo-load-css i.medium{font-size:4rem}.gogo-load-css i.large{font-size:6rem}.gogo-load-css img.responsive-img,.gogo-load-css video.responsive-video{max-width:100%;height:auto}.gogo-load-css .pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.gogo-load-css .pagination li a{color:#444}.gogo-load-css .pagination li.active a{color:#fff}.gogo-load-css .pagination li.active{background-color:#de5a5f}.gogo-load-css .pagination li.disabled a{cursor:default;color:#999}.gogo-load-css .pagination li i{font-size:2rem}.gogo-load-css .pagination li.pages ul li{display:inline-block;float:none}.gogo-load-css .parallax-container{position:relative;overflow:hidden;height:500px}.gogo-load-css .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.gogo-load-css .parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transform:translateX(-50%)}.gogo-load-css .pin-bottom,.gogo-load-css .pin-top{position:relative}.gogo-load-css .pinned{position:fixed!important}.gogo-load-css ul.staggered-list li{opacity:0}.gogo-load-css .fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width:600px){.gogo-load-css .hide-on-small-and-down,.gogo-load-css .hide-on-small-only{display:none!important}}@media only screen and (max-width:1200px){.gogo-load-css .pagination{width:100%}.gogo-load-css .pagination li.next,.gogo-load-css .pagination li.prev{width:10%}.gogo-load-css .pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}.gogo-load-css .hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .hide-on-med-only{display:none!important}}@media only screen and (min-width:1201px){.gogo-load-css .hide-on-large-only{display:none!important}.gogo-load-css .show-on-large{display:initial!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .show-on-medium{display:initial!important}}@media only screen and (min-width:601px){.gogo-load-css .show-on-medium-and-up{display:initial!important}}@media only screen and (max-width:1200px){.gogo-load-css .show-on-medium-and-down{display:initial!important}}@media only screen and (max-width:600px){.gogo-load-css .show-on-small{display:initial!important}.gogo-load-css .center-on-small-only{text-align:center}}.gogo-load-css footer.page-footer{margin-top:20px;padding-top:20px;background-color:#de5a5f}.gogo-load-css footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,.8);background-color:rgba(51,51,51,.08)}.gogo-load-css table.highlight>tbody>tr:hover,.gogo-load-css table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}.gogo-load-css table,.gogo-load-css td,.gogo-load-css th{border:none}.gogo-load-css table.bordered>tbody>tr,.gogo-load-css table.bordered>thead>tr,.gogo-load-css thead{border-bottom:1px solid #d0d0d0}.gogo-load-css table{width:100%;display:table}.gogo-load-css table.striped>tbody>tr>td{border-radius:0}.gogo-load-css table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}.gogo-load-css td,.gogo-load-css th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:1200px){.gogo-load-css table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}.gogo-load-css table.responsive-table td,.gogo-load-css table.responsive-table th{margin:0;vertical-align:top}.gogo-load-css table.responsive-table thead{display:block;float:left;border:0;border-right:1px solid #d0d0d0}.gogo-load-css table.responsive-table thead tr{display:block;padding:0 10px 0 0}.gogo-load-css table.responsive-table thead tr th::before{content:"\00a0"}.gogo-load-css table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}.gogo-load-css table.responsive-table tbody tr{display:inline-block;vertical-align:top}.gogo-load-css table.responsive-table th{display:block;text-align:right}.gogo-load-css table.responsive-table td{display:block;min-height:1.25em;text-align:left}.gogo-load-css table.responsive-table tr{padding:0 10px}.gogo-load-css table.responsive-table.bordered th{border-bottom:0;border-left:0}.gogo-load-css table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}.gogo-load-css table.responsive-table.bordered tr{border:0}.gogo-load-css table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.gogo-load-css .collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.gogo-load-css .collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.gogo-load-css .collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.gogo-load-css .collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.gogo-load-css .collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.gogo-load-css .collection .collection-item.avatar .title{font-size:16px}.gogo-load-css .collection .collection-item.avatar p{margin:0}.gogo-load-css .collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.gogo-load-css .collection .collection-item:last-child{border-bottom:none}.gogo-load-css .collection .collection-item.active{background-color:#4A7874;color:#e9f1f1}.gogo-load-css .collection .collection-item.active .secondary-content{color:#fff}.gogo-load-css .collection a.collection-item{display:block;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;-ms-transition:.25s;transition:.25s;color:#4A7874}.gogo-load-css .collection a.collection-item:not(.active):hover{background-color:#ddd}.gogo-load-css .collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.gogo-load-css .collection.with-header .collection-item{padding-left:30px}.gogo-load-css .collection.with-header .collection-item.avatar{padding-left:72px}.gogo-load-css .secondary-content{float:right;color:#4A7874}.gogo-load-css .collapsible .collection{margin:0;border:none}.gogo-load-css span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:color("grey","darken-1");position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css span.badge.more{font-weight:300;font-size:.8rem;color:#fff;background-color:#4A7874;border-radius:2px}.gogo-load-css span.badge.new:after{content:" new"}.gogo-load-css span.badge.more:after{content:" more"}.gogo-load-css nav ul a span.badge{position:static;margin-left:4px;line-height:0}.gogo-load-css .video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.gogo-load-css .video-container.no-controls{padding-top:0}.gogo-load-css .video-container embed,.gogo-load-css .video-container iframe,.gogo-load-css .video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.gogo-load-css .progress{position:relative;height:4px;display:block;width:100%;background-color:#bad4d2;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.gogo-load-css .progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#4A7874;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.gogo-load-css .progress .indeterminate{background-color:#4A7874}.gogo-load-css .progress .indeterminate:after,.gogo-load-css .progress .indeterminate:before{content:'';position:absolute;background-color:inherit;bottom:0;will-change:left,right;top:0;left:0}.gogo-load-css .progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.gogo-load-css .progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}.gogo-load-css .hide{display:none!important}.gogo-load-css .left-align{text-align:left}.gogo-load-css .right-align{text-align:right}.gogo-load-css .center,.gogo-load-css .center-align{text-align:center}.gogo-load-css .left{float:left!important}.gogo-load-css .right{float:right!important}.gogo-load-css .no-select,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gogo-load-css .circle{border-radius:50%}.gogo-load-css .center-block{display:block;margin-left:auto;margin-right:auto}.gogo-load-css .truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .no-padding{padding:0!important}.gogo-load-css .container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.gogo-load-css .container{width:85%}}@media only screen and (min-width:1201px){.gogo-load-css .container{width:70%}}.gogo-load-css .container .row{margin-left:-.75rem;margin-right:-.75rem}.gogo-load-css .section{padding-top:1rem;padding-bottom:1rem}.gogo-load-css .section.no-pad{padding:0}.gogo-load-css .section.no-pad-bot{padding-bottom:0}.gogo-load-css .section.no-pad-top{padding-top:0}.gogo-load-css .row{margin-left:auto;margin-right:auto;margin-bottom:20px}.gogo-load-css .row:after{content:"";display:table;clear:both}.gogo-load-css .gogocarto-container,.gogo-load-css .tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex}.gogo-load-css .row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem}.gogo-load-css .row .col.s1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.s2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.s3{width:25%;margin-left:0}.gogo-load-css .row .col.s4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.s5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.s6{width:50%;margin-left:0}.gogo-load-css .row .col.s7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.s8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.s9{width:75%;margin-left:0}.gogo-load-css .row .col.s10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.s11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.s12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-s1{margin-left:8.33333%}.gogo-load-css .row .col.offset-s2{margin-left:16.66667%}.gogo-load-css .row .col.offset-s3{margin-left:25%}.gogo-load-css .row .col.offset-s4{margin-left:33.33333%}.gogo-load-css .row .col.offset-s5{margin-left:41.66667%}.gogo-load-css .row .col.offset-s6{margin-left:50%}.gogo-load-css .row .col.offset-s7{margin-left:58.33333%}.gogo-load-css .row .col.offset-s8{margin-left:66.66667%}.gogo-load-css .row .col.offset-s9{margin-left:75%}.gogo-load-css .row .col.offset-s10{margin-left:83.33333%}.gogo-load-css .row .col.offset-s11{margin-left:91.66667%}.gogo-load-css .row .col.offset-s12{margin-left:100%}@media only screen and (min-width:601px){.gogo-load-css .row .col.m1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.m2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.m3{width:25%;margin-left:0}.gogo-load-css .row .col.m4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.m5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.m6{width:50%;margin-left:0}.gogo-load-css .row .col.m7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.m8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.m9{width:75%;margin-left:0}.gogo-load-css .row .col.m10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.m11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.m12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-m1{margin-left:8.33333%}.gogo-load-css .row .col.offset-m2{margin-left:16.66667%}.gogo-load-css .row .col.offset-m3{margin-left:25%}.gogo-load-css .row .col.offset-m4{margin-left:33.33333%}.gogo-load-css .row .col.offset-m5{margin-left:41.66667%}.gogo-load-css .row .col.offset-m6{margin-left:50%}.gogo-load-css .row .col.offset-m7{margin-left:58.33333%}.gogo-load-css .row .col.offset-m8{margin-left:66.66667%}.gogo-load-css .row .col.offset-m9{margin-left:75%}.gogo-load-css .row .col.offset-m10{margin-left:83.33333%}.gogo-load-css .row .col.offset-m11{margin-left:91.66667%}.gogo-load-css .row .col.offset-m12{margin-left:100%}}@media only screen and (min-width:1201px){.gogo-load-css .row .col.l1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.l2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.l3{width:25%;margin-left:0}.gogo-load-css .row .col.l4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.l5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.l6{width:50%;margin-left:0}.gogo-load-css .row .col.l7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.l8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.l9{width:75%;margin-left:0}.gogo-load-css .row .col.l10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.l11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.l12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-l1{margin-left:8.33333%}.gogo-load-css .row .col.offset-l2{margin-left:16.66667%}.gogo-load-css .row .col.offset-l3{margin-left:25%}.gogo-load-css .row .col.offset-l4{margin-left:33.33333%}.gogo-load-css .row .col.offset-l5{margin-left:41.66667%}.gogo-load-css .row .col.offset-l6{margin-left:50%}.gogo-load-css .row .col.offset-l7{margin-left:58.33333%}.gogo-load-css .row .col.offset-l8{margin-left:66.66667%}.gogo-load-css .row .col.offset-l9{margin-left:75%}.gogo-load-css .row .col.offset-l10{margin-left:83.33333%}.gogo-load-css .row .col.offset-l11{margin-left:91.66667%}.gogo-load-css .row .col.offset-l12{margin-left:100%}}.gogo-load-css html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){.gogo-load-css html{font-size:14px}}@media only screen and (min-width:900px){.gogo-load-css html{font-size:14.5px}}@media only screen and (min-width:1200px){.gogo-load-css html{font-size:15px}}.gogo-load-css h1,.gogo-load-css h2,.gogo-load-css h3,.gogo-load-css h4,.gogo-load-css h5,.gogo-load-css h6{font-weight:400}.gogo-load-css h1 a,.gogo-load-css h2 a,.gogo-load-css h3 a,.gogo-load-css h4 a,.gogo-load-css h5 a,.gogo-load-css h6 a{font-weight:inherit}.gogo-load-css h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem}.gogo-load-css h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem}.gogo-load-css h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem}.gogo-load-css h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem}.gogo-load-css h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem}.gogo-load-css h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem}.gogo-load-css em{font-style:italic}.gogo-load-css strong{font-weight:700}.gogo-load-css small{font-size:75%}.gogo-load-css .light,.gogo-load-css footer.page-footer .footer-copyright{font-weight:300}.gogo-load-css .thin{font-weight:200}.gogo-load-css .flow-text{font-weight:300}@media only screen and (min-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.gogo-load-css .flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.gogo-load-css .flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.gogo-load-css .flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.gogo-load-css .flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.gogo-load-css .flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.gogo-load-css .flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.gogo-load-css .flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.gogo-load-css .flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.gogo-load-css .flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.gogo-load-css .flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.gogo-load-css .flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.gogo-load-css .flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.gogo-load-css .flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.gogo-load-css .flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.gogo-load-css .flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.gogo-load-css .flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.gogo-load-css .flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.gogo-load-css .flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.gogo-load-css .flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.gogo-load-css .flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}.gogo-load-css .tabs{display:flex;position:relative;height:2.7rem;background-color:#3D3D3D;margin:0 auto;width:calc(100% - 1px);white-space:nowrap}.gogo-load-css .tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:3rem;height:2.7rem;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%;padding:0}.gogo-load-css .tabs .tab a{color:#fff;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.gogo-load-css .tabs .tab a:hover{color:#fff}.gogo-load-css .tabs .tab.disabled a{color:#fff;cursor:default}.gogo-load-css .tabs .indicator{position:absolute;top:0;height:3px;background-color:#fff;will-change:left,right}.gogo-load-css .btn,.gogo-load-css .btn-flat,.gogo-load-css .btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.gogo-load-css .btn-floating.disabled,.gogo-load-css .btn-floating:disabled,.gogo-load-css .btn-large.disabled,.gogo-load-css .btn-large:disabled,.gogo-load-css .btn.disabled,.gogo-load-css .btn:disabled,.gogo-load-css .disabled.btn-large{background-color:#DFDFDF!important;box-shadow:none;color:#9F9F9F!important;cursor:default}.gogo-load-css .btn-floating.disabled *,.gogo-load-css .btn-floating:disabled *,.gogo-load-css .btn-large.disabled *,.gogo-load-css .btn-large:disabled *,.gogo-load-css .btn.disabled *,.gogo-load-css .btn:disabled *,.gogo-load-css .disabled.btn-large *{pointer-events:none}.gogo-load-css .btn-floating.disabled:hover,.gogo-load-css .btn-floating:disabled:hover,.gogo-load-css .btn-large.disabled:hover,.gogo-load-css .btn-large:disabled:hover,.gogo-load-css .btn.disabled:hover,.gogo-load-css .btn:disabled:hover,.gogo-load-css .disabled.btn-large:hover{background-color:#DFDFDF;color:#9F9F9F}.gogo-load-css .btn i,.gogo-load-css .btn-flat i,.gogo-load-css .btn-floating i,.gogo-load-css .btn-large i{font-size:1.3rem;line-height:inherit}.gogo-load-css .btn,.gogo-load-css .btn-large{text-decoration:none;color:#fff;background-color:#26A69A;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover{background-color:#2bbbad}.gogo-load-css .btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26A69A;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.gogo-load-css .btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.gogo-load-css .btn-floating:before{border-radius:0}.gogo-load-css .btn-floating.btn-large{width:55.5px;height:55.5px}.gogo-load-css .btn-floating.btn-large i{line-height:55.5px}.gogo-load-css button.btn-floating{border:none}.gogo-load-css .fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.gogo-load-css .fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.gogo-load-css .fixed-action-btn ul li{margin-bottom:15px}.gogo-load-css .fixed-action-btn ul a.btn-floating{opacity:0}.gogo-load-css .btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.gogo-load-css .btn-flat.disabled{color:#b3b3b3;cursor:default}.gogo-load-css .btn-large{height:54px;line-height:56px}.gogo-load-css .btn-large i{font-size:1.6rem}.gogo-load-css .btn-block{display:block}.gogo-load-css .dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.gogo-load-css .dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.gogo-load-css .dropdown-content li.active,.gogo-load-css .dropdown-content li:hover{background-color:#eee}.gogo-load-css .dropdown-content li>a,.gogo-load-css .dropdown-content li>span{font-size:1.2rem;color:#4A7874;display:block;padding:1rem}.gogo-load-css .dropdown-content li>a>i{height:inherit;line-height:inherit}.gogo-load-css .waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity,transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.gogo-load-css .waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);-webkit-transition:all .7s ease-out;-moz-transition:all .7s ease-out;-o-transition:all .7s ease-out;-ms-transition:all .7s ease-out;transition:all .7s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.gogo-load-css .waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,.45)}.gogo-load-css .waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.gogo-load-css .waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.gogo-load-css .waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.gogo-load-css .waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.gogo-load-css .waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.gogo-load-css .waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.gogo-load-css .waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.gogo-load-css .waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.gogo-load-css .waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.gogo-load-css .waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.gogo-load-css .waves-block{display:block}.gogo-load-css a.waves-effect .waves-ripple{z-index:-1}.gogo-load-css .modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:1200px){.gogo-load-css .modal{width:80%}}@media only screen and (max-width:600px){.gogo-load-css .modal{width:100%;max-height:100%;height:100%;top:0!important}}.gogo-load-css .modal h1,.gogo-load-css .modal h2,.gogo-load-css .modal h3,.gogo-load-css .modal h4,.gogo-load-css .modal h5{margin-top:0}.gogo-load-css .modal h5{margin-bottom:1.5rem}.gogo-load-css .modal .footer{margin-top:1rem;text-align:center}.gogo-load-css .modal .modal-content{padding:24px}@media only screen and (min-width:601px){.gogo-load-css .modal .modal-content{padding:40px}}.gogo-load-css .modal .modal-close{cursor:pointer;color:#fff}.gogo-load-css .modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.gogo-load-css .modal .modal-footer .btn,.gogo-load-css .modal .modal-footer .btn-flat,.gogo-load-css .modal .modal-footer .btn-large{float:right;margin:6px 0}.gogo-load-css .modal.modal-fixed-footer{padding:0;height:70%}.gogo-load-css .modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 58px);max-height:100%;width:100%;overflow-y:auto}.gogo-load-css .modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.gogo-load-css .modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.gogo-load-css .collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.gogo-load-css .collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.gogo-load-css .collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.gogo-load-css .collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css .collapsible-body p{margin:0;padding:2rem}.gogo-load-css .side-nav .collapsible{border:none;box-shadow:none}.gogo-load-css .side-nav .collapsible li{padding:0}.gogo-load-css .side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.gogo-load-css .side-nav .collapsible-header i{line-height:inherit}.gogo-load-css .side-nav .collapsible-body{border:0;background-color:#fff}.gogo-load-css .side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.gogo-load-css .collapsible.popout{border:none;box-shadow:none}.gogo-load-css .collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.gogo-load-css .collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.gogo-load-css select:focus{outline:#d0e2e0 solid 1px}.gogo-load-css label{font-size:.8rem;color:#3D3D3D}.gogo-load-css ::-webkit-input-placeholder{color:#707070}.gogo-load-css :-moz-placeholder{color:#707070}.gogo-load-css ::-moz-placeholder{color:#707070}.gogo-load-css :-ms-input-placeholder{color:#707070}.gogo-load-css input[type=date],.gogo-load-css input[type=datetime-local],.gogo-load-css input[type=email],.gogo-load-css input[type=number],.gogo-load-css input[type=password],.gogo-load-css input[type=search],.gogo-load-css input[type=tel],.gogo-load-css input[type=text],.gogo-load-css input[type=time],.gogo-load-css input[type=url],.gogo-load-css textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;border-radius:0;outline:0;height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}.gogo-load-css input[type=date]:disabled,.gogo-load-css input[type=date][readonly=readonly],.gogo-load-css input[type=datetime-local]:disabled,.gogo-load-css input[type=datetime-local][readonly=readonly],.gogo-load-css input[type=email]:disabled,.gogo-load-css input[type=email][readonly=readonly],.gogo-load-css input[type=number]:disabled,.gogo-load-css input[type=number][readonly=readonly],.gogo-load-css input[type=password]:disabled,.gogo-load-css input[type=password][readonly=readonly],.gogo-load-css input[type=search]:disabled,.gogo-load-css input[type=search][readonly=readonly],.gogo-load-css input[type=tel]:disabled,.gogo-load-css input[type=tel][readonly=readonly],.gogo-load-css input[type=text]:disabled,.gogo-load-css input[type=text][readonly=readonly],.gogo-load-css input[type=time]:disabled,.gogo-load-css input[type=time][readonly=readonly],.gogo-load-css input[type=url]:disabled,.gogo-load-css input[type=url][readonly=readonly],.gogo-load-css textarea.materialize-textarea:disabled,.gogo-load-css textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}.gogo-load-css input[type=date].valid,.gogo-load-css input[type=date]:focus.valid,.gogo-load-css input[type=date]:focus:not([readonly]),.gogo-load-css input[type=datetime-local].valid,.gogo-load-css input[type=datetime-local]:focus.valid,.gogo-load-css input[type=datetime-local]:focus:not([readonly]),.gogo-load-css input[type=email].valid,.gogo-load-css input[type=email]:focus.valid,.gogo-load-css input[type=email]:focus:not([readonly]),.gogo-load-css input[type=number].valid,.gogo-load-css input[type=number]:focus.valid,.gogo-load-css input[type=number]:focus:not([readonly]),.gogo-load-css input[type=password].valid,.gogo-load-css input[type=password]:focus.valid,.gogo-load-css input[type=password]:focus:not([readonly]),.gogo-load-css input[type=search].valid,.gogo-load-css input[type=search]:focus.valid,.gogo-load-css input[type=search]:focus:not([readonly]),.gogo-load-css input[type=tel].valid,.gogo-load-css input[type=tel]:focus.valid,.gogo-load-css input[type=tel]:focus:not([readonly]),.gogo-load-css input[type=text].valid,.gogo-load-css input[type=text]:focus.valid,.gogo-load-css input[type=text]:focus:not([readonly]),.gogo-load-css input[type=time].valid,.gogo-load-css input[type=time]:focus.valid,.gogo-load-css input[type=time]:focus:not([readonly]),.gogo-load-css input[type=url].valid,.gogo-load-css input[type=url]:focus.valid,.gogo-load-css input[type=url]:focus:not([readonly]),.gogo-load-css textarea.materialize-textarea.valid,.gogo-load-css textarea.materialize-textarea:focus.valid,.gogo-load-css textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #4A7874;box-shadow:0 1px 0 0 #4A7874}.gogo-load-css input[type=date]:disabled+label,.gogo-load-css input[type=date][readonly=readonly]+label,.gogo-load-css input[type=datetime-local]:disabled+label,.gogo-load-css input[type=datetime-local][readonly=readonly]+label,.gogo-load-css input[type=email]:disabled+label,.gogo-load-css input[type=email][readonly=readonly]+label,.gogo-load-css input[type=number]:disabled+label,.gogo-load-css input[type=number][readonly=readonly]+label,.gogo-load-css input[type=password]:disabled+label,.gogo-load-css input[type=password][readonly=readonly]+label,.gogo-load-css input[type=search]:disabled+label,.gogo-load-css input[type=search][readonly=readonly]+label,.gogo-load-css input[type=tel]:disabled+label,.gogo-load-css input[type=tel][readonly=readonly]+label,.gogo-load-css input[type=text]:disabled+label,.gogo-load-css input[type=text][readonly=readonly]+label,.gogo-load-css input[type=time]:disabled+label,.gogo-load-css input[type=time][readonly=readonly]+label,.gogo-load-css input[type=url]:disabled+label,.gogo-load-css input[type=url][readonly=readonly]+label,.gogo-load-css textarea.materialize-textarea:disabled+label,.gogo-load-css textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}.gogo-load-css input[type=date]:focus:not([readonly])+label,.gogo-load-css input[type=datetime-local]:focus:not([readonly])+label,.gogo-load-css input[type=email]:focus:not([readonly])+label,.gogo-load-css input[type=number]:focus:not([readonly])+label,.gogo-load-css input[type=password]:focus:not([readonly])+label,.gogo-load-css input[type=search]:focus:not([readonly])+label,.gogo-load-css input[type=tel]:focus:not([readonly])+label,.gogo-load-css input[type=text]:focus:not([readonly])+label,.gogo-load-css input[type=time]:focus:not([readonly])+label,.gogo-load-css input[type=url]:focus:not([readonly])+label,.gogo-load-css textarea.materialize-textarea:focus:not([readonly])+label{color:#4A7874}.gogo-load-css input[type=date].valid+label:after,.gogo-load-css input[type=date]:focus.valid+label:after,.gogo-load-css input[type=datetime-local].valid+label:after,.gogo-load-css input[type=datetime-local]:focus.valid+label:after,.gogo-load-css input[type=email].valid+label:after,.gogo-load-css input[type=email]:focus.valid+label:after,.gogo-load-css input[type=number].valid+label:after,.gogo-load-css input[type=number]:focus.valid+label:after,.gogo-load-css input[type=password].valid+label:after,.gogo-load-css input[type=password]:focus.valid+label:after,.gogo-load-css input[type=search].valid+label:after,.gogo-load-css input[type=search]:focus.valid+label:after,.gogo-load-css input[type=tel].valid+label:after,.gogo-load-css input[type=tel]:focus.valid+label:after,.gogo-load-css input[type=text].valid+label:after,.gogo-load-css input[type=text]:focus.valid+label:after,.gogo-load-css input[type=time].valid+label:after,.gogo-load-css input[type=time]:focus.valid+label:after,.gogo-load-css input[type=url].valid+label:after,.gogo-load-css input[type=url]:focus.valid+label:after,.gogo-load-css textarea.materialize-textarea.valid+label:after,.gogo-load-css textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4A7874;opacity:1}.gogo-load-css input[type=date].invalid,.gogo-load-css input[type=date]:focus.invalid,.gogo-load-css input[type=datetime-local].invalid,.gogo-load-css input[type=datetime-local]:focus.invalid,.gogo-load-css input[type=email].invalid,.gogo-load-css input[type=email]:focus.invalid,.gogo-load-css input[type=number].invalid,.gogo-load-css input[type=number]:focus.invalid,.gogo-load-css input[type=password].invalid,.gogo-load-css input[type=password]:focus.invalid,.gogo-load-css input[type=search].invalid,.gogo-load-css input[type=search]:focus.invalid,.gogo-load-css input[type=tel].invalid,.gogo-load-css input[type=tel]:focus.invalid,.gogo-load-css input[type=text].invalid,.gogo-load-css input[type=text]:focus.invalid,.gogo-load-css input[type=time].invalid,.gogo-load-css input[type=time]:focus.invalid,.gogo-load-css input[type=url].invalid,.gogo-load-css input[type=url]:focus.invalid,.gogo-load-css textarea.materialize-textarea.invalid,.gogo-load-css textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #B90303;box-shadow:0 1px 0 0 #B90303}.gogo-load-css input[type=date].invalid+label:after,.gogo-load-css input[type=date]:focus.invalid+label:after,.gogo-load-css input[type=datetime-local].invalid+label:after,.gogo-load-css input[type=datetime-local]:focus.invalid+label:after,.gogo-load-css input[type=email].invalid+label:after,.gogo-load-css input[type=email]:focus.invalid+label:after,.gogo-load-css input[type=number].invalid+label:after,.gogo-load-css input[type=number]:focus.invalid+label:after,.gogo-load-css input[type=password].invalid+label:after,.gogo-load-css input[type=password]:focus.invalid+label:after,.gogo-load-css input[type=search].invalid+label:after,.gogo-load-css input[type=search]:focus.invalid+label:after,.gogo-load-css input[type=tel].invalid+label:after,.gogo-load-css input[type=tel]:focus.invalid+label:after,.gogo-load-css input[type=text].invalid+label:after,.gogo-load-css input[type=text]:focus.invalid+label:after,.gogo-load-css input[type=time].invalid+label:after,.gogo-load-css input[type=time]:focus.invalid+label:after,.gogo-load-css input[type=url].invalid+label:after,.gogo-load-css input[type=url]:focus.invalid+label:after,.gogo-load-css textarea.materialize-textarea.invalid+label:after,.gogo-load-css textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#B90303;opacity:1}.gogo-load-css input[type=date]+label:after,.gogo-load-css input[type=datetime-local]+label:after,.gogo-load-css input[type=email]+label:after,.gogo-load-css input[type=number]+label:after,.gogo-load-css input[type=password]+label:after,.gogo-load-css input[type=search]+label:after,.gogo-load-css input[type=tel]+label:after,.gogo-load-css input[type=text]+label:after,.gogo-load-css input[type=time]+label:after,.gogo-load-css input[type=url]+label:after,.gogo-load-css textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.gogo-load-css .input-field{position:relative;margin-top:1rem}.gogo-load-css .input-field label{color:#3D3D3D;position:absolute;top:.8rem;left:.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.gogo-load-css .input-field label.active{font-size:.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.gogo-load-css .input-field .prefix{position:absolute;width:3rem;font-size:2rem;line-height:3rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.gogo-load-css .input-field .prefix.active{color:#4A7874}.gogo-load-css .input-field .prefix~input,.gogo-load-css .input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.gogo-load-css .input-field .prefix~textarea{padding-top:.8rem}.gogo-load-css .input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:1200px){.gogo-load-css .input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.gogo-load-css .input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.gogo-load-css .input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.gogo-load-css .input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.gogo-load-css .input-field input[type=search]:focus+label i,.gogo-load-css .input-field input[type=search]:focus~.material-icons,.gogo-load-css .input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.gogo-load-css .input-field input[type=search]+label{left:1rem}.gogo-load-css .input-field input[type=search]~.material-icons,.gogo-load-css .input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}.gogo-load-css textarea{width:100%;height:3rem;background-color:transparent}.gogo-load-css textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.gogo-load-css .hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.gogo-load-css [type=radio]:checked,.gogo-load-css [type=radio]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=radio]:checked+label,.gogo-load-css [type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=radio]+label:after,.gogo-load-css [type=radio]+label:before{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}.gogo-load-css [type=radio]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}.gogo-load-css [type=radio]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.gogo-load-css [type=radio]:checked+label:before{border-radius:50%;border:2px solid transparent}.gogo-load-css [type=radio]:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.gogo-load-css [type=radio].with-gap:checked+label:before{border-radius:50%;border:2px solid #4A7874}.gogo-load-css [type=radio].with-gap:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:before,.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled+label{color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#BDBDBD}.gogo-load-css form p{margin-bottom:10px;text-align:left}.gogo-load-css form p:last-child{margin-bottom:0}.gogo-load-css [type=checkbox]:checked,.gogo-load-css [type=checkbox]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=checkbox]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;-ms-transition:.2s;transition:.2s}.gogo-load-css [type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #4A7874;border-bottom:2px solid #4A7874;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #4A7874;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}.gogo-load-css [type=checkbox].filled-in+label:after{border-radius:2px}.gogo-load-css [type=checkbox].filled-in+label:after,.gogo-load-css [type=checkbox].filled-in+label:before{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}.gogo-load-css [type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:none;border-left:none;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #4A7874;background-color:#4A7874;z-index:0}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.gogo-load-css .switch,.gogo-load-css .switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css .switch label{cursor:pointer}.gogo-load-css .switch label input[type=checkbox]{opacity:0;width:0;height:0}.gogo-load-css .switch label input[type=checkbox]:checked+.lever{background-color:#a1a1a1}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{background-color:#4A7874}.gogo-load-css .switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.gogo-load-css .switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.gogo-load-css input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(74,120,116,.1)}.gogo-load-css input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{left:24px}.gogo-load-css .switch input[type=checkbox][disabled]+.lever{cursor:default}.gogo-load-css .switch label input[type=checkbox][disabled]+.lever:after,.gogo-load-css .switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.gogo-load-css .select-label{position:absolute}.gogo-load-css .select-wrapper{position:relative}.gogo-load-css .select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;outline:0;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;display:block}.gogo-load-css .select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.gogo-load-css .select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.gogo-load-css .select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}.gogo-load-css select{display:none}.gogo-load-css select.browser-default{display:block}.gogo-load-css select:disabled{color:rgba(0,0,0,.3)}.gogo-load-css .select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.gogo-load-css .file-field span,.gogo-load-css .leaflet-interactive,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{cursor:pointer}.gogo-load-css .select-wrapper i{color:rgba(0,0,0,.3)}.gogo-load-css .select-dropdown li.disabled{color:rgba(0,0,0,.3);background-color:transparent}.gogo-load-css .file-field{position:relative}.gogo-load-css .file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.gogo-load-css .file-field input.file-path{width:100%}.gogo-load-css .file-field .btn,.gogo-load-css .file-field .btn-large{float:left;height:3rem;line-height:3rem}.gogo-load-css .file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.gogo-load-css .range-field{position:relative}.gogo-load-css input[type=range]{position:relative;background-color:transparent;outline:0;width:100%;margin:15px 0;padding:0}.gogo-load-css input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#4A7874;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#4A7874;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}.gogo-load-css input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}.gogo-load-css input[type=range]:focus{outline:0}.gogo-load-css input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}.gogo-load-css input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#4A7874;transform-origin:50% 50%;margin:-5px 0 0;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;-ms-transition:.3s;transition:.3s}.gogo-load-css input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}.gogo-load-css input[type=range]{-webkit-appearance:none;border:1px solid #fff}.gogo-load-css input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}.gogo-load-css input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874;margin-top:-5px}.gogo-load-css input[type=range]:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.gogo-load-css input[type=range]:focus::-moz-range-track{background:#ccc}.gogo-load-css input[type=range]::-ms-track{height:3px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.gogo-load-css input[type=range]::-ms-fill-lower{background:#777}.gogo-load-css input[type=range]::-ms-fill-upper{background:#ddd}.gogo-load-css input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874}.gogo-load-css input[type=range]:focus::-ms-fill-lower{background:#888}.gogo-load-css input[type=range]:focus::-ms-fill-upper{background:#ccc}.gogo-load-css select{background-color:rgba(255,255,255,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.gogo-load-css .preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.gogo-load-css .preloader-wrapper.small{width:36px;height:36px}.gogo-load-css .preloader-wrapper.big{width:64px;height:64px}.gogo-load-css .preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.gogo-load-css .spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#4A7874}.gogo-load-css .spinner-blue,.gogo-load-css .spinner-blue-only{border-color:#4285f4}.gogo-load-css .spinner-red,.gogo-load-css .spinner-red-only{border-color:#db4437}.gogo-load-css .spinner-yellow,.gogo-load-css .spinner-yellow-only{border-color:#f4b400}.gogo-load-css .spinner-green,.gogo-load-css .spinner-green-only{border-color:#0f9d58}.gogo-load-css .active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer,.gogo-load-css .active .spinner-layer.spinner-blue-only,.gogo-load-css .active .spinner-layer.spinner-green-only,.gogo-load-css .active .spinner-layer.spinner-red-only,.gogo-load-css .active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@-webkit-keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@-webkit-keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@-webkit-keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}@keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}.gogo-load-css .gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .gap-patch .circle{width:1000%;left:-450%}.gogo-load-css .circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.gogo-load-css .circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.gogo-load-css .circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.gogo-load-css .active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{from,to{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}}@keyframes left-spin{from,to{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@-webkit-keyframes right-spin{from,to{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}}@keyframes right-spin{from,to{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}.gogo-load-css #spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane,.gogo-load-css .leaflet-pane>canvas,.gogo-load-css .leaflet-pane>svg,.gogo-load-css .leaflet-tile,.gogo-load-css .leaflet-tile-container,.gogo-load-css .leaflet-zoom-box{position:absolute;left:0;top:0}.gogo-load-css .leaflet-container{overflow:hidden;background:#ddd;outline:0;font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.gogo-load-css .leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.gogo-load-css .leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow{display:block}.gogo-load-css .leaflet-container .leaflet-marker-pane img,.gogo-load-css .leaflet-container .leaflet-overlay-pane svg,.gogo-load-css .leaflet-container .leaflet-shadow-pane img,.gogo-load-css .leaflet-container .leaflet-tile-pane img,.gogo-load-css .leaflet-container img.leaflet-image-layer{max-width:none!important}.gogo-load-css .leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.gogo-load-css .leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom}.gogo-load-css .leaflet-container.leaflet-touch-drag.leaflet-touch-drag{-ms-touch-action:none;touch-action:none}.gogo-load-css .leaflet-tile{filter:inherit;visibility:hidden}.gogo-load-css .leaflet-tile-loaded{visibility:inherit}.gogo-load-css .leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.gogo-load-css .leaflet-overlay-pane svg{-moz-user-select:none}.gogo-load-css .leaflet-pane{z-index:400}.gogo-load-css .leaflet-tile-pane{z-index:200}.gogo-load-css .leaflet-overlay-pane{z-index:400}.gogo-load-css .leaflet-shadow-pane{z-index:500}.gogo-load-css .leaflet-marker-pane{z-index:600}.gogo-load-css .leaflet-tooltip-pane{z-index:650}.gogo-load-css .leaflet-popup-pane{z-index:700}.gogo-load-css .leaflet-map-pane canvas{z-index:100}.gogo-load-css .leaflet-map-pane svg{z-index:200}.gogo-load-css .leaflet-vml-shape{width:1px;height:1px}.gogo-load-css .lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.gogo-load-css .leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.gogo-load-css .leaflet-bottom,.gogo-load-css .leaflet-top{position:absolute;z-index:1000;pointer-events:none}.gogo-load-css .leaflet-top{top:0}.gogo-load-css .leaflet-right{right:0}.gogo-load-css .leaflet-bottom{bottom:0}.gogo-load-css .leaflet-left{left:0}.gogo-load-css .leaflet-right .leaflet-control{float:right;margin-right:10px}.gogo-load-css .leaflet-top .leaflet-control{margin-top:10px}.gogo-load-css .leaflet-bottom .leaflet-control{margin-bottom:10px}.gogo-load-css .leaflet-left .leaflet-control{margin-left:10px}.gogo-load-css .leaflet-fade-anim .leaflet-tile{will-change:opacity}.gogo-load-css .leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.gogo-load-css .leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.gogo-load-css .leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.gogo-load-css .leaflet-pan-anim .leaflet-tile,.gogo-load-css .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.gogo-load-css .leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab}.gogo-load-css .leaflet-crosshair,.gogo-load-css .leaflet-crosshair .leaflet-interactive{cursor:crosshair}.gogo-load-css .leaflet-control,.gogo-load-css .leaflet-popup-pane{cursor:auto}.gogo-load-css .leaflet-dragging .leaflet-grab,.gogo-load-css .leaflet-dragging .leaflet-grab .leaflet-interactive,.gogo-load-css .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane>svg path,.gogo-load-css .leaflet-tile-container{pointer-events:none}.gogo-load-css .leaflet-image-layer.leaflet-interactive,.gogo-load-css .leaflet-marker-icon.leaflet-interactive,.gogo-load-css .leaflet-pane>svg path.leaflet-interactive{pointer-events:visiblePainted;pointer-events:auto}.gogo-load-css .leaflet-container a{color:#0078A8}.gogo-load-css .leaflet-container a.leaflet-active{outline:orange solid 2px}.gogo-load-css .leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.gogo-load-css .leaflet-bar a:hover{background-color:#f4f4f4}.gogo-load-css .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.gogo-load-css .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.gogo-load-css .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.gogo-load-css .leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.gogo-load-css .leaflet-control-zoom-in,.gogo-load-css .leaflet-control-zoom-out{font:700 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.gogo-load-css .leaflet-control-zoom-out{font-size:20px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-in{font-size:22px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-out{font-size:24px}.gogo-load-css .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.gogo-load-css .leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.gogo-load-css .leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.gogo-load-css .leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.gogo-load-css .leaflet-control-layers .leaflet-control-layers-list,.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.gogo-load-css .leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.gogo-load-css .leaflet-control-layers-scrollbar{overflow-y:scroll;padding-right:5px}.gogo-load-css .leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.gogo-load-css .leaflet-control-layers label{display:block}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .icon,.gogo-load-css .gogo-theme-default.gogocarto-container .show-directory-menu-button .arrow-right,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .checkbox-wrapper{display:none}.gogo-load-css .leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.gogo-load-css .leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.gogo-load-css .leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.gogo-load-css .leaflet-control-attribution,.gogo-load-css .leaflet-control-scale-line{padding:0 5px;color:#333}.gogo-load-css .leaflet-control-attribution a{text-decoration:none}.gogo-load-css .leaflet-control-attribution a:hover{text-decoration:underline}.gogo-load-css .leaflet-container .leaflet-control-attribution,.gogo-load-css .leaflet-container .leaflet-control-scale{font-size:11px}.gogo-load-css .leaflet-left .leaflet-control-scale{margin-left:5px}.gogo-load-css .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.gogo-load-css .leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.gogo-load-css .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-attribution,.gogo-load-css .leaflet-touch .leaflet-control-layers{box-shadow:none}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.gogo-load-css .leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.gogo-load-css .leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.gogo-load-css .leaflet-popup-content{margin:13px 19px;line-height:1.4}.gogo-load-css .leaflet-popup-content p{margin:18px 0}.gogo-load-css .leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.gogo-load-css .leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.gogo-load-css .leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.gogo-load-css .leaflet-container a.leaflet-popup-close-button:hover{color:#999}.gogo-load-css .leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.gogo-load-css .leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.gogo-load-css .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.gogo-load-css .leaflet-oldie .leaflet-control-layers,.gogo-load-css .leaflet-oldie .leaflet-control-zoom,.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.gogo-load-css .leaflet-div-icon{background:#fff;border:1px solid #666}.gogo-load-css .leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value,.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .option-value{color:inherit}.gogo-load-css .leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before,.gogo-load-css .leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.gogo-load-css .leaflet-tooltip-bottom{margin-top:6px}.gogo-load-css .leaflet-tooltip-top{margin-top:-6px}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-top:before{left:50%;margin-left:-6px}.gogo-load-css .leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.gogo-load-css .leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.gogo-load-css .leaflet-tooltip-left{margin-left:-6px}.gogo-load-css .leaflet-tooltip-right{margin-left:6px}.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before{top:50%;margin-top:-6px}.gogo-load-css .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.gogo-load-css .leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.gogo-load-css .leaflet-cluster-anim .leaflet-marker-icon,.gogo-load-css .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.gogo-load-css .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.gogo-load-css .gogo-theme-default.gogocarto-container .moreIconContainer .moreIconWrapper{background-color:#DADAD9}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .inline-option-value:not(:last-child):after{content:",";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .top-image-container{height:90px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{border-top:none;width:calc(100% - 23px)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{background-color:#175259}@media (min-width:850px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 23px);border-radius:0 8px 8px 0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #f79900 transparent transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container{height:4rem;padding-left:.5rem;padding-right:1.4rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon{font-size:1.1rem;color:#fff!important;height:2.5rem;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:2.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar{background-color:#3bad78;border-radius:0;height:2.5rem;padding:0 3rem;width:95%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options{padding-left:14px;padding-right:2rem;padding-bottom:1.2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options .search-action-btn{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories{border-left:none;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content ul{padding-right:10px;padding-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item{background-color:#fff;margin-bottom:3px;padding-left:0;line-height:2.5rem;height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled .icon{color:#bcbcbc!important;background-color:transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name{font-weight:500;font-size:13px;padding-left:.6rem;-webkit-transition:color .1s;-moz-transition:color .1s;-o-transition:color .1s;-ms-transition:color .1s;transition:color .1s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .arrow-after{position:absolute;right:19%;top:1.1rem;border-radius:1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name:hover .arrow-after{margin-right:-1px;margin-top:-1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name:hover .arrow-after{margin-bottom:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon{padding-top:.7rem;font-size:17px;height:3rem;width:2.5rem;margin-right:0;-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-link,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-recycle{padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#3bad78 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #3bad78;opacity:1;top:.9rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .name-wrapper{margin-left:3rem;margin-right:0;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper{left:0;right:initial}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:after{background-color:transparent;border:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:before{top:7px;width:9px;height:15px;border-right:3px solid #3bad78;border-bottom:3px solid #3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in:not(:checked)+label:before{border-right:3px solid #bcbcbc;border-bottom:3px solid #bcbcbc;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:0!important;margin-bottom:6px;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{margin-bottom:0;line-height:2.7rem;height:2.7rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .option-name{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:.85rem;padding-top:.95rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item.disabled .icon{color:#bcbcbc!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .name-wrapper{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item.checked .icon:not(.subIcon){color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .name-wrapper,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.checked .icon{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item .subIcon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item:not(.checked) .icon{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child [type=checkbox].filled-in:checked+label:before{top:7px;width:9px;height:15px;border-right:3px solid #f79900;border-bottom:3px solid #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item .icon{color:#175259;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:hover .subcategorie-option-checkbox+label:before{color:#f79900;border-color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#f79900 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{border-color:#f79900 transparent transparent!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #f79900;opacity:1;top:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name:hover .arrow-after{border-color:transparent transparent #f79900!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon{padding-top:3px;padding-left:10px;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .option-name{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .option-name{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .show-only-title{color:#3bad78;padding-left:0;margin-bottom:0;border-top:none;margin-top:0;padding-top:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper .iconInsideMarker{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-name{color:#f1f1f1;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .moreIconContainer .moreIconWrapper{font-size:14px;line-height:0;padding-left:1px;box-shadow:1px 1px 4px 1px #989898}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster div{font-size:15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div{background-color:#f8ab00;width:34px;height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div{background-color:#f78b16;width:38px;height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div{background-color:#f5701e;width:44px;height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header{background-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .name{font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .element-main-icon{display:none!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#f79900;color:#fff;border-radius:3px;padding:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item-text{display:inline-block!important;text-transform:uppercase;line-height:3rem;margin-left:10px;font-size:12px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .icon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .info-bar-divider{display:none}@media (max-width:460px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item{margin:0 .5rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-element-item-text{font-size:11px;margin-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-icon{font-size:16px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#f3f6f4;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .description{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section{background-color:#fff;margin-top:1rem;padding-left:1rem;margin-right:.4rem;line-height:1.5rem;padding-top:.7rem;padding-bottom:.6rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy{padding:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name{background-color:#f3f6f4;margin-left:0;padding-left:1.5rem;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name:first-child{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.sectionlongDescription{margin-top:0;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body h3{margin-left:1rem;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{margin-bottom:3px;border-left:10px solid;padding-left:1rem;background-color:#fff;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .option-name{color:#175259;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{margin-right:10px;font-size:.9rem;padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .row+.category-wrapper .row:last-child .option-value{padding-bottom:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{border:none;margin-left:0;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.9rem;margin-top:-8px;height:1.5rem;line-height:1.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name{color:inherit;margin-left:4px;line-height:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name:before{content:"➡";font-size:1.2rem;margin-right:6px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .day:after{content:"➡";font-size:1.2rem;color:#3bad78;float:right}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .openHours{padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container{background-color:#f3f6f4;margin-top:0;padding-top:1rem;padding-left:1.5rem;margin-bottom:-10px;text-align:center}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container .gogo-tag{background-color:#fff;border-radius:0;padding:4px 14px;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element{background-color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;font-weight:700;color:#e6e6e6}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values{width:calc(100% - 140px);font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:20px;display:inline-block}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon i,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .text,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button i{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:7px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{margin-right:5px;font-size:.9rem;padding-top:.6rem;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value{line-height:2rem;font-style:normal;font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item{margin-left:-17px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item:before{content:"+";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-features-buttons{top:140px}}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value:last-child{display:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{color:#fff;border-radius:50%;font-size:.9rem;padding:10px 9px;margin-right:5px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel{width:auto;float:right;border:2px solid;color:#f79900;padding:8px 15px;text-align:center;border-radius:20px;margin-top:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-gogo-controls{width:100%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before{margin-right:8px;color:#fff;background-color:#f79900;border-radius:50%;padding:0 4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before{content:"-";padding:0 6px 1px;font-weight:900;font-size:16px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item:not(.active) .expandLabel:before{content:"+"}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{padding:.5rem 0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#3bad78;color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.4rem;line-height:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .gogo-icon-close{font-size:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{background-color:#fff;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover{color:#f79900}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item .expandLabel{margin-right:10px;font-size:13px;font-weight:900;padding:8px 10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{padding:8px 10px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .collapsible-header{padding-bottom:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child{float:right;margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element{text-align:right;padding:0 10px 0 0;height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon{font-size:18px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text{font-size:11px;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location{font-weight:400;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content{padding-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container{margin-bottom:0;padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out:hover{color:#3bad78;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers{margin-right:17px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control{background-color:#175259;color:#fff;border:none;text-transform:uppercase;font-weight:700;font-size:12px!important;line-height:22px;padding:5px 15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control .gogo-icon-list{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-top:60px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-as-list-button{position:absolute;right:20px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button{position:absolute;left:-20px;top:80px;background-color:#175259!important;padding:10px 10px 3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .arrow-right{margin-bottom:10px;margin-left:4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button:hover .arrow-right{border-color:transparent transparent transparent #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header{background-color:#f3f6f4;color:#3bad78;text-align:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button{height:2rem;line-height:2rem;border-radius:5px;top:15px;padding:0 15px;background-color:#f79900;left:initial!important;text-transform:uppercase;text-decoration:none;font-size:.8rem;font-weight:700;float:right;margin-top:12px;margin-right:-8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{color:#fff!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{font-size:1.2rem;margin-right:10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{top:0;left:-40px;border-radius:0 0 5px;padding-bottom:0;padding-top:6px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media only screen and (min-width:1201px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{left:0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .feature-button{margin-right:0;float:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-search-icon{border-radius:8px 0 0 8px;margin-right:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon{background-color:#175259;border-radius:0 8px 8px 0;padding-top:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-list-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{color:#3bad78;border-radius:8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{background-color:#f79900!important;color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:13px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogocarto-container #directory-list-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #directory-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #info-bar-spinner-loader .spinner-layer{border-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:18px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn-large{font-weight:700;box-shadow:none;border-radius:none;font-size:.9rem}.gogo-load-css .gogocarto-container{display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;height:100%;position:relative;font-size:.95rem}.gogo-load-css .gogocarto-container #directory-spinner-loader,.gogo-load-css .gogocarto-container #info-bar-spinner-loader{position:absolute;margin:auto;top:0;left:0;bottom:0;right:0;z-index:1}.gogo-load-css .gogocarto-container #directory-list-spinner-loader{position:relative;margin-top:40px;z-index:500}.gogo-load-css .gogocarto-container #directory-loading{position:absolute;width:200px;margin:auto;top:0;left:0;right:0;z-index:500;background-color:#f2b523;color:#272626;padding:.2rem 0;text-align:center}.gogo-load-css .gogocarto-container #info-bar-overlay{background-color:rgba(0,0,0,.17);z-index:10;top:0;left:0;bottom:0;right:0;position:absolute}.gogo-load-css .gogocarto-container .leaflet-routing-container,.gogo-load-css .gogocarto-container .leaflet-routing-error{border-radius:0;box-shadow:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;background-color:#fff;transition:all .2s ease;box-sizing:border-box}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide{width:32px;height:32px}.gogo-load-css .gogocarto-container .leaflet-routing-container h2{font-size:1.2rem;text-align:center;margin:1.5rem .5rem 1rem;font-weight:600}.gogo-load-css .gogocarto-container .leaflet-routing-container h2 .distance{font-weight:400;color:#5d5d5d;margin-left:5px}.gogo-load-css .gogocarto-container .leaflet-routing-container h3{font-size:.9rem;font-weight:400;text-align:center;margin:.5rem;line-height:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #888}.gogo-load-css .gogocarto-container .leaflet-routing-collapsible .leaflet-routing-geocoders{margin-top:20px}.gogo-load-css .gogocarto-container .td-leaflet-routing-icon{padding-left:15px;padding-right:5px;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-text{font-size:.9rem;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-distance{font-size:.8rem;color:#777;font-weight:300;vertical-align:top}.gogo-load-css .gogocarto-container .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-routing-error,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders{height:100%;padding:0;font-size:.95rem;margin:0;border-bottom:1px solid #ccc;overflow-y:auto;transition:all .2s ease}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-geocoders{display:none}.gogo-load-css .gogocarto-container .leaflet-bar .leaflet-routing-alt:last-child{border-bottom:none}.gogo-load-css .gogocarto-container .leaflet-routing-alt-minimized{display:none;color:#888;max-height:64px;overflow:hidden;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-alt tr:hover{background-color:#eee;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-icon{background-image:url(images/leaflet.routing.icons.png);-webkit-background-size:240px 20px;background-size:240px 20px;background-repeat:no-repeat;margin:0;content:'';display:inline-block;vertical-align:top;width:20px;height:20px}.gogo-load-css .gogocarto-container .leaflet-routing-icon-continue{background-position:0 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-right{background-position:-20px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-right{background-position:-40px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-right{background-position:-60px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-u-turn{background-position:-80px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-left{background-position:-100px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-left{background-position:-120px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-left{background-position:-140px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-depart{background-position:-160px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-enter-roundabout{background-position:-180px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-arrive{background-position:-200px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-via{background-position:-220px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders div{padding:4px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input{width:303px;width:calc(100% - 4px);line-height:1.67;border:1px solid #ccc}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button{font:700 18px 'Lucida Console',Monaco,monospace;border:1px solid #ccc;border-radius:4px;background-color:#fff;margin:0 3px 0 0;float:right;cursor:pointer;transition:background-color .2s ease}.gogo-load-css .gogocarto-container .leaflet-routing-add-waypoint:after{content:'+'}.gogo-load-css .gogocarto-container .leaflet-routing-reverse-waypoints:after{font-weight:400;content:'\21c5'}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button:hover{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input,.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{position:relative}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif;position:absolute;max-height:0;overflow:hidden;transition:all .5s ease;z-index:1000}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result table{width:100%;border:1px solid #ccc;border-radius:0 0 4px 4px;background-color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result-open{max-height:800px}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result tr:hover,.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-selected{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-no-results{font-style:italic;color:#888}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{background-color:transparent;display:inline-block;vertical-align:middle;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:after{position:absolute;display:block;width:15px;height:1px;z-index:1;right:1px;top:4px;bottom:0;margin:-16px auto auto;padding:2px 4px 16px 2px;font-size:18px;font-weight:700;content:"\00d7";text-align:center;cursor:pointer;color:#ccc;background:#fff;line-height:1}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:hover{color:#000}.gogo-load-css .gogocarto-container .leaflet-routing-instruction-distance{width:4rem}.gogo-load-css .gogocarto-container .leaflet-routing-collapse-btn{display:none;position:absolute;top:0;right:6px;font-size:24px;color:#ccc;font-weight:700}.gogo-load-css .gogocarto-container #filter-moderation,.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox+label:before{color:#c53f36}.gogo-load-css .gogocarto-container .leaflet-routing-container-hide .leaflet-routing-collapse-btn{position:relative;left:4px;top:4px;display:block;width:26px;height:23px;background-image:url(routing-icon.png)}.gogo-load-css .gogocarto-container .leaflet-top .leaflet-routing-container.leaflet-routing-container-hide{margin-top:10px!important}.gogo-load-css .gogocarto-container .leaflet-right .leaflet-routing-container.leaflet-routing-container-hide{margin-right:10px!important}.gogo-load-css .gogocarto-container .leaflet-bottom .leaflet-routing-container.leaflet-routing-container-hide{margin-bottom:10px!important}.gogo-load-css .gogocarto-container .leaflet-left .leaflet-routing-container.leaflet-routing-container-hide{margin-left:10px!important}@media only screen and (max-width:640px){.gogo-load-css .gogocarto-container .leaflet-routing-container{margin:0!important;padding:0!important;width:100%;height:100%}}.gogo-load-css .gogocarto-container #filter-moderation:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#c53f36}.gogo-load-css .gogocarto-container #filter-pending,.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox+label:before{color:#565656}.gogo-load-css .gogocarto-container #filter-pending:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#565656}.gogo-load-css .gogocarto-container #filter-favorite{color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full{color:#fff;font-size:18px}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full:before{padding:2px 2px 3px;border:none;color:#cc8901;background-color:transparent}.gogo-load-css .gogocarto-container #filter-favorite:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox+label:before{color:#cc8901}.gogo-load-css .gogocarto-container .sub-categories-content.no-top-divider>ul>.main-option-subcategories-container>.category-wrapper>.subcategory-item{border-top:none!important;margin-top:0!important}.gogo-load-css .gogocarto-container .category-wrapper{margin-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item{position:relative;line-height:3rem;padding-top:0;padding-left:.8rem;font-weight:700;font-size:90%;text-transform:uppercase}.gogo-load-css .gogocarto-container .subcategory-item.top-separator{border-top:2px dashed #eee;margin-top:1rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper{margin-right:3rem;height:3rem;overflow:hidden}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper .arrow-after{display:inline-block;margin-left:1rem;margin-bottom:1px;border:5px solid;border-radius:4px}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item:not(.expanded) .name-wrapper .arrow-after{margin-bottom:-3px!important}.gogo-load-css .gogocarto-container .subcategory-item.unexpandable .name-wrapper:hover{cursor:default;color:inherit}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:2px;bottom:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container{position:absolute;top:2px;right:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:after{top:9px!important;width:17px;height:17px;border:2px solid;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:before{top:9px;left:1px;width:6px;height:11px}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox:not(:checked)+label:after{background-color:transparent}.gogo-load-css .gogocarto-container .subcategorie-option-item{position:relative;margin-bottom:0;line-height:2.8rem;padding:0 0 0 .8rem;height:2.8rem;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{margin-bottom:-5px}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name .arrow-after{margin-bottom:-4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper{margin-right:3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name{position:absolute;width:100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name:hover .arrow-after{border:6px solid;margin-bottom:1px}.gogo-load-css .gogocarto-container .subcategorie-option-item .arrow-after{display:inline-block;margin-left:1rem;border:5px solid;margin-bottom:1px;border-radius:4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon{font-size:1.3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:13px;height:13px;left:2px;top:3px;z-index:0;border:2px solid #5a5a5a;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;margin-top:2px}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{top:2px;left:1px;width:7px;height:13px;border-color:#3D3D3D;border-top:none;border-left:none;border-right:2px solid;border-bottom:2px solid;border-radius:0;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:0;bottom:0;background:-moz-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:-webkit-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4dffffff', endColorstr='#ffffff', GradientType=1 )}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper .checkbox-container{position:absolute;top:.6rem;right:0}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover{background-color:#f0f0f0;cursor:pointer}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover .checkbox-wrapper{background:0 0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1.3rem;border-left:1px dotted #c3c3c3;margin-bottom:15px;margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .category-wrapper{margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item{font-size:85%;line-height:2.5rem;margin-top:0;padding-top:0;padding-left:.9rem;margin-bottom:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:after{width:15px;height:15px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:before{width:5px;height:9px;top:9px;left:2px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .name-wrapper{height:2.5rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper{top:7px;right:-1px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper .checkbox-container{top:-4px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{font-size:95%;line-height:2.4rem;height:2.4rem;padding-left:1rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:1.2rem;padding-top:1px;margin-right:.8rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon.fa{font-size:1.1rem;padding-top:.7rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:10px;height:10px;left:3px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{width:6px;height:10px;left:2px}.gogo-load-css .gogocarto-container #directory-menu.small-width{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item .arrow-after{margin-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .icon{margin-right:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories{width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon{height:3.4rem;width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon:before{left:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories .sub-categories-content{padding-right:0}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories:not(.with-left-border) .sub-categories-content{padding-left:.2rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategory-item{padding-left:.6rem;font-size:.9rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item{padding-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategory-item{padding-left:.7rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategorie-option-item{padding-left:.6rem}.gogo-load-css .gogocarto-container #directory-menu .filter-menu{width:100%;height:auto;position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row nowrap;-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .filter-menu{height:100%}}.gogo-load-css .gogocarto-container #directory-menu .main-categories{width:3.5rem;padding-top:.6rem;height:100%}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon{padding-top:0}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:not(.active) .main-icon-text{transform:rotateZ(-45deg);opacity:.8}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:hover .main-icon-text{opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon .main-icon-text{text-transform:uppercase;-webkit-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;-ms-transition:transform .2s;transition:transform .2s;font-size:.85rem;font-weight:700;color:#fff;opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon{width:3.5rem;height:3.5rem;line-height:3.5rem;margin:0;padding-right:8px;text-align:center;position:relative}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon .main-option-tooltip{display:none}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:before{position:absolute;top:1rem;left:.8rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover .main-option-tooltip{display:block;position:absolute;left:4rem;top:.5rem;height:2.5rem;line-height:2.5rem;z-index:100;width:14rem;color:#efefef;font-size:1rem;border-radius:5px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.active{color:#fff;padding-right:8px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-gogo-icon-background{position:absolute;top:.6rem;border-radius:0 50% 50% 0}.gogo-load-css .gogocarto-container #directory-menu #main-option-all.show-one-pane-per-main-option .gogo-icon-name-wrapper:hover:after{content:"+";font-size:1.4rem;font-weight:400;background-color:#eee;padding:3px 11px;border-radius:3px;margin-left:5px;line-height:1rem;position:absolute;right:10px;z-index:10;top:11px}.gogo-load-css .gogocarto-container #directory-menu .secondary-filters{padding:.5rem 0 0;height:auto;border-top:2px dashed #eee;margin-top:1rem}.gogo-load-css .gogocarto-container #directory-menu .sub-categories{-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;padding-left:7px;padding-right:4px;background-color:#eee}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{height:3rem;line-height:3rem;font-weight:700;text-align:center}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{font-size:1.2rem}}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content{height:calc(100% - 3rem);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-right:5px;padding-top:0;background-color:#fff}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content.full-height{height:100%}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul{height:100%;margin:0;border:0;box-shadow:none;padding-bottom:2rem;overflow-y:auto;overflow-x:hidden}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions{background-color:#f7f7f7}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header{width:100%;border-radius:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header h3{font-size:1rem;text-align:left;text-transform:uppercase;padding-left:1rem;color:#fff;font-weight:600;line-height:3rem;margin:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content .filter-menu{display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content #directory-menu-spinner-loader{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directions-header{display:none;position:relative}.gogo-load-css .gogocarto-container #directory-menu{z-index:998;overflow-y:hidden;-webkit-transition:height .5s;-moz-transition:height .5s;-o-transition:height .5s;-ms-transition:height .5s;transition:height .5s;-webkit-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);-moz-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2)}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-menu{overflow:visible}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column;-webkit-flex-flow:column;flex-flow:column;width:100%;height:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .menu-top-image{width:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:100%;z-index:2;position:relative;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{overflow:scroll}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-container{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{position:absolute;right:0;top:0;width:24px;bottom:0;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #eee transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover .arrow-left{border-color:transparent #fff transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader{position:relative}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close{position:absolute;margin:0;right:0;top:7px;padding:0 1rem;z-index:50;color:#CECECE}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close:hover{color:#fff;cursor:pointer}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 12px);border-radius:0 0 5px 5px;padding-right:15px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.small-screen{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{bottom:-8px;border-top:none;width:calc(100% - 12px)}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;position:relative;height:100px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content #directory-menu-spinner-loader{top:40%;left:40%;position:absolute;display:none}.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{color:#fff;text-transform:uppercase;width:100%;border-radius:0;text-align:center;line-height:2.5rem;z-index:10;box-shadow:1px -2px 11px 2px rgba(0,0,0,.25)}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{display:none}.gogo-load-css .gogocarto-container .directory-menu-drag-target{display:none!important}}.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none!important}}.gogo-load-css .gogocarto-container .directory-menu-drag-target{height:100%;width:10px;position:fixed;top:0;z-index:999}.gogo-load-css .gogocarto-container .cluster{z-index:2}.gogo-load-css .gogocarto-container .icon{font-size:1.4rem;padding-top:3px;float:left;margin-right:1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .icon{padding-top:2px}}.gogo-load-css .gogocarto-container .icon.disabled{color:#DFDFDF}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa:before{position:relative;left:0;top:0}.gogo-load-css .gogocarto-container .icon.fa{padding-top:.5rem;font-size:1.3rem}.gogo-load-css .gogocarto-container .element-main-icon.icon.fa{padding-top:4px}.gogo-load-css .gogocarto-container .iconInsideMarker.fa{padding-top:0}.gogo-load-css .gogocarto-container .filter-menu .icon.fa{padding-top:.7rem;width:1.5rem;text-align:center;font-size:1.2rem}.gogo-load-css .gogocarto-container .leaflet-marker-container{width:0!important;height:0!important;margin:0!important}.gogo-load-css .gogocarto-container .leaflet-marker-container:hover{z-index:10000000!important}.gogo-load-css .gogocarto-container .marker-name{position:absolute;white-space:nowrap;opacity:.9;font-size:1rem;font-family:Roboto,sans-serif;border-radius:5px;padding:5px 10px;bottom:55px;left:-30px;color:#dadada}.gogo-load-css .gogocarto-container .marker-wrapper{position:absolute;z-index:1;height:40px;width:40px;bottom:0;right:-20px;font-size:40px;line-height:40px;opacity:.99}.gogo-load-css .gogocarto-container .marker-wrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper.BigSize{z-index:10000!important;-webkit-transform:scale(1.3,1.3);-moz-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);-o-transform:scale(1.3,1.3);transform:scale(1.3,1.3);bottom:5px!important}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:6px!important}}.gogo-load-css .gogocarto-container .marker-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .marker-wrapper .gogo-icon-marker{height:inherit;line-height:inherit;color:inherit;position:absolute;z-index:1;background-image:url(images/marker-shadow.png);background-position:8px;background-repeat:no-repeat;width:50px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container{position:absolute;top:-8px;z-index:3;font-size:14px;right:19px;color:#d9dad9}.gogo-load-css .gogocarto-container .iconInsideMarker.disabled,.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp{float:right}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2{font-size:12px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2:before{padding:2px 1px 2px 2px}.gogo-load-css .gogocarto-container .iconInsideMarker-wrapper{position:relative;left:7px;z-index:2;text-align:center;width:26px;height:26px;background-color:#DADADA;border-radius:50%;top:4px;font-size:18px;line-height:28px}.gogo-load-css .gogocarto-container :-moz-any(.iconInsideMarker-wrapper){top:3px}.gogo-load-css .gogocarto-container .iconInsideMarker{line-height:26px}.gogo-load-css .gogocarto-container .iconInsideMarker:before{line-height:inherit}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle{position:absolute;top:-7px;z-index:3;font-size:16px;right:-7px}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle:before{border-radius:50%;background-color:#F1F1F1}.gogo-load-css .gogocarto-container .gogo-icon-star-full:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .moreIconContainer{display:none;z-index:10;position:absolute;bottom:-10px;left:30px}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper{display:inline-block;margin-left:3px;bottom:10px;position:absolute;width:28px;height:28px;font-size:16px;line-height:26px;text-align:center;border:3px solid;border-radius:50%;z-index:10}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper .iconInsideMarker{line-height:22px}.gogo-load-css .gogocarto-container .halfHidden{opacity:.6}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper{right:-8px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper.BigSize{right:-4px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-marker{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .iconInsideMarker-wrapper{left:6px!important;width:25px;height:25px;top:9px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-name{bottom:47px;left:-50px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper{right:-35px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper.BigSize{right:-39px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-marker{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .iconInsideMarker-wrapper{left:11px!important;width:25px;height:25px;top:1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-name{bottom:47px;left:-10px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper{right:-13px;bottom:-1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper.BigSize{right:-10px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-marker{-webkit-transform:rotate(-25deg);-moz-transform:rotate(-25deg);-ms-transform:rotate(-25deg);-o-transform:rotate(-25deg);transform:rotate(-25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .iconInsideMarker-wrapper{right:6px!important;width:25px;height:25px;top:7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-name{bottom:51px;left:-44px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper{right:-30px;bottom:-2px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper.BigSize{right:-33px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-marker{-webkit-transform:rotate(25deg);-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-o-transform:rotate(25deg);transform:rotate(25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .iconInsideMarker-wrapper{left:9px!important;width:25px;height:25px;top:3px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-name{bottom:56px;left:-10px}.gogo-load-css .gogocarto-container .marker-cluster div{margin-left:5px;margin-top:5px;text-align:center;border-radius:50%;font-size:13px;font-weight:600;color:#fff;box-shadow:4px -2px 5px 0 rgba(167,167,167,.56)}.gogo-load-css .gogocarto-container .marker-cluster.halfHidden{opacity:.6!important}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div{width:34px;height:34px;background-color:rgba(243,165,48,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div{width:38px;height:38px;background-color:rgba(235,123,45,.92)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div{width:44px;height:44px;background-color:rgba(210,77,26,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogocarto-container #markerDirectionResult{text-align:center;position:relative;z-index:10000;width:auto;padding:.5rem;margin-top:-10px;font-size:.9rem}.gogo-load-css .gogocarto-container #markerDirectionResult .duration{font-weight:700}.gogo-load-css .gogocarto-container .arrow_box{position:relative;background:#eee;border:1px solid #a8b6a0}.gogo-load-css .gogocarto-container .arrow_box:after,.gogo-load-css .gogocarto-container .arrow_box:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.gogo-load-css .gogocarto-container .arrow_box:after{border-color:rgba(238,238,238,0);border-top-color:#eee;border-width:7px;margin-left:-7px}.gogo-load-css .gogocarto-container .arrow_box:before{border-color:rgba(168,182,160,0);border-top-color:#a8b6a0;border-width:8px;margin-left:-8px}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-in{font-size:18px!important;color:#3d3d3d}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-out{font-size:25px!important;font-weight:400;color:#3d3d3d;text-indent:0}.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-right:22px;margin-top:20px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{display:none}}.gogo-load-css .gogocarto-container #map-gogo-controls{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-gogo-controls{display:block;position:absolute;z-index:500;left:15px;top:12px}.gogo-load-css .gogocarto-container .show-as-list-button:after{content:"Afficher sous forme de liste"}}.gogo-load-css .gogocarto-container .show-directory-menu-button{left:15px;color:#fff}.gogo-load-css .gogocarto-container .show-directory-menu-button .arrow-right{display:inline-block;border:8px solid;border-color:transparent transparent transparent #eee}.gogo-load-css .gogocarto-container .show-directory-menu-button i{margin-right:5px!important}.gogo-load-css .gogocarto-container .show-as-list-button{background-color:#fff}.gogo-load-css .gogocarto-container .gogo-map-control{margin-right:15px;display:inline-block;line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;font-size:14px!important;padding:5px 10px;-webkit-box-shadow:2px 3px 1px rgba(0,0,0,.25);-moz-box-shadow:2px 3px 1px rgba(0,0,0,.25);box-shadow:2px 3px 1px rgba(0,0,0,.25);cursor:pointer;text-align:center;border:1px dashed #a5a5a5;border-radius:5px}.gogo-load-css .gogocarto-container .gogo-map-control:hover{cursor:pointer}.gogo-load-css .gogocarto-container .gogo-map-control i{font-size:1rem;float:left;line-height:1rem;padding-top:3px;margin-right:10px}.gogo-load-css .gogocarto-container #map-features-buttons{position:absolute;top:20px;z-index:500;right:20px;width:50px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-features-buttons{width:33px;top:100px}}.gogo-load-css .gogocarto-container .feature-button{position:relative;background-color:#fff;color:#3d3d3d;margin-bottom:13px;text-align:center;width:50px;border-radius:50%;height:50px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container .feature-button:hover{cursor:pointer;background-color:#f4f4f4}.gogo-load-css .gogocarto-container .feature-button i{font-size:22px;line-height:55px}.gogo-load-css .gogocarto-container .feature-button i.gogo-icon-list{font-size:18px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .feature-button{width:33px;height:33px;border-radius:4px}.gogo-load-css .gogocarto-container .feature-button i{font-size:18px;line-height:39px}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:.5rem}}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel{z-index:10000;background-color:transparent;color:#888}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel:hover{background-color:transparent;color:#616161}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel i{font-size:16px;line-height:44px;margin-left:2px}.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn i{font-size:14px}@media screen and (max-width:600px){.gogo-load-css .gogocarto-container .feature-button#change-layers,.gogo-load-css .gogocarto-container .feature-button#export-iframe-btn,.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn{display:none}}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container .feature-button#geolocalize-btn{display:none}}.gogo-load-css .gogocarto-container .leaflet-control-layers-toggle{display:none}.gogo-load-css .gogocarto-container .leaflet-control-layers{padding:0!important;display:none;position:relative;z-index:600;margin-right:19px!important;margin-top:15px!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-list{display:block!important;padding:5px 25px 10px 15px;position:relative!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-selector:checked+span{font-weight:700}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label{text-transform:uppercase;padding-top:4px;line-height:1.4rem;border-bottom:1px dashed #ccc}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:hover{background-color:#f4f4f4;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:last-child{border:none}.gogo-load-css .gogocarto-container #element-info-bar{height:0;z-index:600;position:absolute;will-change:height;-webkit-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);-moz-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);background-color:#F7F7F7}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom{right:0!important;bottom:0!important;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside{top:0;right:0;height:100%!important;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s;overflow-y:visible;-webkit-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);-moz-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);box-shadow:0 6px 9px 2px rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #element-info-bar.display-aside.with-search-result-header{top:3rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-main-icon,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .star-names-icons{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close{padding-left:1rem;color:#CECECE!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close:hover{color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails{display:block!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails.tabs{display:flex!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .hideOnLargeScreen{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .element-main-icon{display:none}.gogo-load-css .gogocarto-container #element-info-bar .element-item .star-names-icons,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .element-main-icon{display:block}.gogo-load-css .gogocarto-container #element-info-bar #element-info .moreDetails,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .star-names-icons{display:none}.gogo-load-css .gogocarto-container #element-info-bar #element-info{margin-bottom:3rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close{float:right;margin:-.9rem -1.5rem -1rem 0;font-size:1.2rem;padding:1rem 1.5rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-map{position:relative;z-index:10;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;-webkit-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);-moz-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:block;position:relative;width:100%;line-height:3.5rem;text-align:right;padding:0 1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:none!important}}@media (min-width:900px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:3rem;padding-right:calc(3rem + 20px)}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header #list-title-shadow-bottom{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{float:left;z-index:200;height:100%;text-decoration:underline}@media only screen and (min-width:1201px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:9rem!important}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{color:inherit!important;height:2rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:2rem}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:after{content:"Retour à la carte"}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:block;float:left;position:relative;margin-right:2rem;margin-left:-1rem;width:auto;top:.6rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:10rem;padding-right:calc(10rem + 20px)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{position:absolute;top:12px;left:15px;margin-left:0;bottom:initial;width:auto}}.gogo-load-css .gogocarto-container .no-result-message img{margin-top:1rem;width:350px;padding:0 2rem;border-radius:100px}.gogo-load-css .gogocarto-container #directory-content-list{display:none;z-index:650;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;width:100%;overflow:auto;border-left:none;height:100%}.gogo-load-css .gogocarto-container #directory-content-list .elements-container{position:relative;padding-bottom:100px;height:100%;width:100%;overflow-y:scroll;margin:0;padding-left:0;padding-right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{height:calc(100% - 3.5rem)}}@media only screen and (min-width:901px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:3rem;padding-right:3rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:10rem;padding-right:10rem}}.gogo-load-css .gogocarto-container #directory-content-list .elements-container.custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-geocoders::-webkit-scrollbar{width:14px}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .bottom-gradient{position:fixed;height:5rem;bottom:0;width:100%;z-index:700;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff', GradientType=0 )}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .no-result-message{text-align:center;margin-top:3rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item .gogo-icon-close{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item .distance{margin-right:0;margin-left:6px}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location{display:inline-block;float:right;margin-left:1rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .expandLabel{background-color:transparent!important}.gogo-load-css .gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #abaaaa;background-color:#fff}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout,.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li{margin:0}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li.active{margin:1rem 0}.gogo-load-css .gogocarto-container #directory-content-list .spinner-loader{-webkit-box-ordinal-group:1000000;-moz-box-ordinal-group:1000000;-ms-flex-order:1000000;-webkit-order:1000000;order:1000000}.gogo-load-css .gogocarto-container #directory-content-list .info-bar-tabs,.gogo-load-css .gogocarto-container #directory-content-list .menu-element{position:relative;display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .menu-element{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .info-bar-tabs{display:flex}.gogo-load-css .gogocarto-container #directory-content-list .img-overlay{max-height:20rem;overflow:hidden}.gogo-load-css .gogocarto-container #directory-content-list .img-container{max-height:20rem;background-color:#F7F7F7}.gogo-load-css .gogocarto-container #gogo-controls-mobile{position:absolute;z-index:900;left:15px;top:15px;right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none!important}}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button{display:inline-block;margin-right:15px}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.gogo-bg-primary{color:#fff}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-list-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-map-button{float:right;display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none}}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .show-as-map-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile.map .show-as-list-button{display:block}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .feature-button{-webkit-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);-moz-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);box-shadow:1px 2px 8px 1px rgba(0,0,0,.4)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile{display:none;z-index:10;position:relative;background-color:#fff;margin:15px;border-radius:3px;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-container{height:52px;padding:0}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar{height:100%;padding:0 4rem}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon{font-size:22px;line-height:57px;height:56px;width:56px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-bar-icon{left:-2px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-geolocalize{right:0;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-icon{left:3px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-geolocalize{right:5px;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-options{display:block!important;padding:0 15px 12px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile #search-spinner-loader .spinner-layer{border-color:#fff!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-no-result{color:inherit;font-size:13px;padding-bottom:1rem}.gogo-load-css .gogocarto-container #search-overlay-mobile{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000}.gogo-load-css .gogocarto-container #search-overlay-mobile .overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;background-color:rgba(0,0,0,.5)}.gogo-load-css .gogocarto-container .search-results{background-color:rgba(0,0,0,.4);position:relative;line-height:3rem;top:0;z-index:800;width:100%;padding:0 0 0 10px;-webkit-transition:background-color .5s;-moz-transition:background-color .5s;-o-transition:background-color .5s;-ms-transition:background-color .5s;transition:background-color .5s}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results{position:relative;padding-left:28px}}.gogo-load-css .gogocarto-container .search-results .btn-close{position:absolute;margin:0;right:0;top:3px;padding:0 1rem;z-index:50;color:#fff}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results .btn-close{right:12px}}.gogo-load-css .gogocarto-container .search-results .btn-close:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .search-results .search-result-label{color:#fff;font-weight:700}.gogo-load-css .gogocarto-container .search-results .search-result-value{font-style:italic}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container{height:3.5rem;padding:.7rem .7rem 0;text-align:center;margin:0}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon{position:absolute;font-size:1.2rem;color:#777;height:2rem;line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:hover{cursor:pointer}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:1.2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:1.4rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{font-size:16px;padding:0 2.3rem 0 2.2rem;box-shadow:none!important;margin:0;text-align:left;font-weight:700;height:2rem;width:100%;border:none!important;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (min-width:850px){.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{text-transform:uppercase;font-size:.8rem}}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar.invalid{border-color:#B90303!important}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options{padding:0 .7rem .7rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label{color:#ececec;font-size:.9rem;line-height:2.2rem;padding-left:27px;margin-right:13px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:before{border:2px solid #e0e0e0;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:after{border:2px solid #dedede;background-color:#dedede;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options .search-action-btn{float:right;font-size:.85rem;height:1.8rem;line-height:1.8rem;padding:0 10px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader{height:12px;width:12px;top:1px;margin-left:5px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .spinner-layer{border-color:#5d5d5d}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-no-result{color:#fff;padding-bottom:.7rem;text-decoration:underline;text-align:center;font-weight:700}.gogo-load-css .gogocarto-container #directory-menu-main-container .search-action-btn{background-color:#ddd;color:#272626}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options{padding-left:7px}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options label.search-option-radio-label{margin-right:0}.gogo-load-css .gogocarto-container .element-item{list-style-type:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container .element-item #element-info-bar.display-aside .menu-element{height:auto}.gogo-load-css .gogocarto-container .element-item .menu-element{z-index:10;position:absolute;bottom:0;text-align:center;width:100%}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item-text{display:none}.gogo-load-css .gogocarto-container .element-item .menu-element:not(.full-text){height:3rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding:.3rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 10px -.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding-top:0}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 6px -.9rem}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 .8rem -.5rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{display:inline;text-transform:uppercase;font-size:.75rem;line-height:3rem;margin-left:.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:10px}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:.8rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text.favorite{color:#ffab00}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;color:#CECECE;margin:0 1rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item a{color:inherit}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:20px;float:left}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:18px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.8rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .gogo-icon-star-full:before{padding:2px 2px 3px;border:none}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item.item-stamp.filled{color:#ffab00;font-weight:700}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 .8rem;position:relative;line-height:3rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:22px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:20px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:3rem}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 1.6rem}}.gogo-load-css .gogocarto-container .element-item .interactive-section>div{position:relative}.gogo-load-css .gogocarto-container .element-item .interactive-section .result-message{text-align:center;font-weight:700;color:#fff;line-height:1.7rem;padding:.6rem 0}.gogo-load-css .gogocarto-container .element-item #directory-content-list .interactive-section{display:none}.gogo-load-css .gogocarto-container .element-item #directory-content-list .element-item.active .interactive-section{display:block}.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-moderation,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-moderation{color:#fff;font-size:20px;padding-top:3px;position:absolute}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention{display:none}.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{margin-left:0!important}}@media (max-width:460px){.gogo-load-css .gogocarto-container .element-item .moderation-section .long-text,.gogo-load-css .gogocarto-container .element-item .vote-section .long-text{display:none}}@media (max-width:360px){.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{opacity:0}}.gogo-load-css .gogocarto-container .element-item .moderation-section .text,.gogo-load-css .gogocarto-container .element-item .vote-section .text{margin-left:2.2rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .btn-vote-more-info,.gogo-load-css .gogocarto-container .element-item .vote-section .btn-vote-more-info{line-height:1.2rem;position:absolute;top:14px;right:90px;padding:0;font-size:.85rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .action-btn,.gogo-load-css .gogocarto-container .element-item .vote-section .action-btn{position:absolute;right:0;top:8px;margin:0;background-color:#dedede;color:#272626;font-size:.85rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment{color:#fff;border-color:#ccc!important;height:2.2rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-webkit-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-webkit-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-ms-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-ms-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .validation-process-info:hover{cursor:help;border-bottom:1px dashed;border-color:inherit;text-decoration:none}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description:hover,.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs .tab a{cursor:pointer}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .strong,.gogo-load-css .gogocarto-container .element-item .collapsible-header a{text-decoration:underline}.gogo-load-css .gogocarto-container .element-item #element-info-bar.small-width .btn-vote-more-info{display:none}.gogo-load-css .gogocarto-container .element-item .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.gogo-load-css .gogocarto-container .element-item .label-danger{background-color:#d9534f}.gogo-load-css .gogocarto-container .element-item .label-success{background-color:#00a65a}.gogo-load-css .gogocarto-container .element-item .label-default{background-color:#d2d6de;color:#444}.gogo-load-css .gogocarto-container .element-item .element-item .contributions{border:none;box-shadow:none}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header{color:inherit;background-color:transparent;border:none;box-shadow:none;line-height:2rem;padding:15px 0;border-bottom:1px solid grey}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-status{float:left}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-updated-at{float:right}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-body{color:inherit}.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs{z-index:40}.gogo-load-css .gogocarto-container .element-item .item-container{border-bottom:1px dashed grey;padding-bottom:5px;margin-bottom:5px}.gogo-load-css .gogocarto-container .element-item .vote-report-item{line-height:1.5rem!important;padding:10px}.gogo-load-css .gogocarto-container .element-item .pending-contribution{margin-bottom:-.9rem;line-height:1.5rem!important;margin-top:.8rem;padding:10px}.gogo-load-css .gogocarto-container .element-item .vote-report-comment{font-style:italic}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content{display:none;padding-right:10px;font-size:.9em}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content .vote-report-item{padding:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-header{padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-header i{margin-right:0;padding-left:.3rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{position:relative;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;line-height:2rem;padding:.5rem 0;font-weight:700}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{padding:1rem 1rem .5rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .distance{float:right;margin-left:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .location{display:none}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.5rem;padding:0;margin-bottom:.5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{padding:0 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values{font-weight:700;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values .option-value.disabled{color:#9C9C9C;font-weight:400}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description{margin-bottom:.7rem;text-align:justify}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description p{margin:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body{background-color:transpraent;padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#F7F7F7;padding:0 0 1rem .5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{padding:0 0 1rem 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-body h2{font-weight:700!important;font-size:1rem!important;line-height:110%!important;margin:.5rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row{margin-bottom:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .description{text-align:justify;line-height:1.5;padding-right:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description{display:inline;text-decoration:underline}.gogo-load-css .gogocarto-container .element-item .collapsible-body .send-mail-btn{font-size:.8rem;margin:.4rem 0 .5rem;line-height:1.8rem;height:1.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionInfos,.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionOpenHours{line-height:2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionlongDescription{padding-bottom:0;padding-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .tags-container{margin-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .gogo-tag{margin-right:8px;border-radius:5px;background-color:#dcdcdc;padding:4px 10px;display:inline-block;margin-bottom:8px}.gogo-load-css .gogocarto-container .element-item .img-container{position:absolute;width:100%;top:0;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-container .images-carousel{cursor:pointer!important;margin:0}.gogo-load-css .gogocarto-container .element-item .img-container .gogo-img{width:100%;height:auto}.gogo-load-css .gogocarto-container .element-item .img-overlay{position:relative;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn{display:none;cursor:pointer!important;height:100%;position:absolute;color:#fff;padding-top:17%!important;width:5rem;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;-ms-transition:opacity .5s;transition:opacity .5s;opacity:.7}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn:hover{opacity:1}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev{background-image:linear-gradient(to right,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 30px 0 .5rem;left:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev .icon{left:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next{background-image:linear-gradient(to left,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 .5rem 0 30px;right:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next .icon{right:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn .icon{font-size:3rem;position:absolute;top:calc(50% - 1.5rem);margin:0;text-shadow:0 1px 4px #757575}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-clickable-area{height:100%;position:absolute;left:6rem;right:6rem;cursor:pointer!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section.categories h3{margin-bottom:90%}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-name{padding-top:.6rem;padding-bottom:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper+.category-name{padding-top:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row+.category-wrapper .category-name{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper{margin-top:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper:not(:first-child){margin-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{margin-left:1.2rem;padding-left:.5rem;border-left:1px dotted #c3c3c3}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper h3.category-name{font-size:85%;padding-bottom:.4rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .strong{text-decoration:none!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-name.main-option{font-weight:700}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option{font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option span.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description{padding:.5rem;font-style:italic;font-size:.9rem;color:#5d5d5d}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{line-height:2.5rem;padding-right:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline{display:inline-block;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.last):after{content:","}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.first) .icon{margin-left:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline .icon{margin-right:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon{font-size:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{font-size:1.1rem;padding-top:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.gogo-icon-marker{font-size:1.1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.disabled{color:#BFBFBF!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.disabled{color:#9C9C9C!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.6rem}.gogo-load-css .gogocarto-container .element-item h3{font-size:.85rem;text-transform:uppercase;font-weight:600;padding-left:.75rem;margin-bottom:0;padding-top:1.5rem;margin-top:0}.gogo-load-css .gogocarto-container .element-item .info-bar-divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css .gogocarto-container .element-item .btn,.gogo-load-css .gogocarto-container .element-item .btn-large{height:2rem;line-height:2rem;padding:0 1rem;margin-bottom:1rem}.gogo-load-css .gogocarto-container .element-item span.added{color:#3a772c}.gogo-load-css .gogocarto-container .element-item span.removed{text-decoration:line-through;margin-right:5px;color:#b57e7e}.gogo-load-css .gogocarto-container .element-item a>span.equals{color:rgba(0,0,0,.87)!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .expandLabel{font-weight:700}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel:after{content:"Moins d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{position:absolute;color:#fff;z-index:2;right:0;width:auto;margin-right:1.7rem;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s;padding:8px 25px;bottom:-15px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{padding:.3rem 1.2rem;bottom:-1rem}}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big:hover{color:#fff;box-shadow:0 6px 15px 0 rgba(0,0,0,.2),0 5px 17px 0 rgba(0,0,0,.19)}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:after{content:"Plus d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel,.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:not(.transform-big){background-color:transparent!important}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header{position:relative;z-index:2}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header span.added{color:#3ab33a}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .collapsible-body-main-container{height:100%;width:100%;position:absolute;top:0;overflow-y:auto}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-container,.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-overlay{height:33%;background-color:transparent}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header{background-color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a{color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a:hover{color:#000}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{border:none;color:#fff;cursor:default;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a{color:#fff}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a:hover{color:#e6e6e6}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{position:relative;line-height:2.5rem;font-weight:400}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .distance{font-size:1.3rem;color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:1.5rem;margin-top:-.8rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-more{margin-bottom:1rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.8rem;text-align:left}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{width:100%!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description{margin-bottom:0}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-body{height:100%;overflow-y:auto}.gogo-load-css .gogocarto-container #modal-directions-fail.modal,.gogo-load-css .gogocarto-container #modal-pick-address.modal{position:absolute}.gogo-load-css .gogocarto-container #modal-directions-fail.modal .modal-footer,.gogo-load-css .gogocarto-container #modal-pick-address.modal .modal-footer{background-color:#444}.gogo-load-css .gogocarto-container .simple-modal.modal{z-index:2000;max-width:1200px;top:30%!important;max-height:80%;height:auto;position:absolute!important}.gogo-load-css .gogocarto-container .simple-modal.modal h5{margin-bottom:.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content{padding-bottom:.8rem!important}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content .modal-error-msg{display:none;color:#B90303}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer{padding-right:2.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action{color:#fff;font-size:.9rem;padding:0 25px}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large{background-color:#de5a5f}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large:hover,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn:hover{background-color:#ec787d}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal:focus{border-color:#4A7874;box-shadow:none}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::-moz-selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .page-modal .btn-back{float:left;font-size:2rem;line-height:4rem;padding:0 2rem;margin-left:-2rem}.gogo-load-css .gogocarto-container .modal.action-modal h5{text-align:center;margin-bottom:1.5rem;line-height:2.5rem}.gogo-load-css .gogocarto-container .modal.action-modal label.small-label{display:block;font-size:.85rem;font-weight:700;margin-top:1rem;margin-bottom:-1.8rem}.gogo-load-css .gogocarto-container .modal.action-modal .elementName{font-style:italic;font-size:1.5rem}.gogo-load-css .gogocarto-container .modal.action-modal .error{display:none;color:#B90303}.gogo-load-css .gogocarto-container .modal.action-modal .option-radio-label{margin-top:.5rem;display:block!important;height:auto!important}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn{display:none}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper{height:15px;width:15px;top:1px}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .spinner-layer{border-color:#fff}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .modal.action-modal .loader-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.35}.gogo-load-css .gogocarto-container #modal-iframe .subtitle{text-align:center;font-style:italic;margin-bottom:1.5rem}.gogo-load-css .gogocarto-container #modal-iframe label{font-size:.8rem;width:100%}.gogo-load-css .gogocarto-container #modal-iframe label:not(:last-child){margin-bottom:15px}.gogo-load-css .gogocarto-container #modal-iframe label strong{font-weight:700}.gogo-load-css .gogocarto-container #modal-iframe .iframe-input{width:80px;border:1px solid #969696;border-radius:5px;height:2rem;font-size:.9rem;font-family:"Lucida Console",Monaco,monospace;margin:1rem;text-align:center;background-color:#f5f5f5}.gogo-load-css .gogocarto-container #modal-iframe #iframe-code{width:100%;padding:1rem;background-color:#f1f1f1;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:none;font-family:"Lucida Console",Monaco,monospace;border:1px dashed #c1c1c1;margin-bottom:1rem}.gogo-load-css .gogocarto-container #modal-image{width:90%}.gogo-load-css .gogocarto-container #modal-image .modal-content{padding:0;overflow:auto}.gogo-load-css .gogocarto-container #modal-image img{width:100%}.gogo-load-css .gogocarto-container .shadow-bottom{width:100%;margin-right:0;height:8px;position:absolute;z-index:4;left:0;opacity:1;border-top:1px solid rgba(0,0,0,.6);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.4)),to(rgba(0,0,0,0)));-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,0)))}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:12px}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:3px solid #f6f6f6;background-color:#C5C5C5}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:7px}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:#c3c3c3}.gogo-load-css .gogocarto-container #gogo-custom-popup{position:absolute;bottom:20px;z-index:500;right:10px;box-shadow:0 2px 6px rgba(0,0,0,.3);padding:5px 45px 5px 30px;line-height:1.7;max-width:400px;color:#fff;font-size:.9rem;border-radius:5px}[class*=" gogo-icon-"]:before,[class^=gogo-icon-]:before,[data-icon]:before{font-family:gogocarto!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gogo-load-css .gogocarto-container #gogo-custom-popup #btn-close-custom-popup{font-size:1rem;cursor:pointer;position:absolute;right:18px;margin:0;top:14px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container{font-size:12px}}.gogo-load-css .gogocarto-container #directory-menu{position:absolute;height:100%}.gogo-load-css .gogocarto-container #directory-content{position:relative;background-color:#9e9e9e;overflow:hidden;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container h1{font-size:2.5rem;text-align:center;margin-top:.5rem}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container h1{font-size:3.5rem}}@font-face{font-family:gogocarto;src:url(fonts/gogocarto.eot);src:url(fonts/gogocarto.eot?#iefix) format("embedded-opentype"),url(fonts/gogocarto.woff) format("woff"),url(fonts/gogocarto.ttf) format("truetype"),url(fonts/gogocarto.svg#gogocarto) format("svg");font-weight:400;font-style:normal}[data-icon]:before{content:attr(data-icon)}.gogo-icon-marker:before{content:"\61"}.gogo-icon-account-circle:before{content:"\62"}.gogo-icon-delete:before{content:"\63"}.gogo-icon-description:before{content:"\64"}.gogo-icon-star-full:before{content:"\65"}.gogo-icon-icon-copy-hours:before{content:"\66"}.gogo-icon-starcircle:before{content:"\67"}.gogo-icon-no-eye:before{content:"\68"}.gogo-icon-eye:before{content:"\69"}.gogo-icon-attention:before{content:"\6a"}.gogo-icon-mail:before{content:"\6b"}.gogo-icon-marker-symbol:before{content:"\6c"}.gogo-icon-phone:before{content:"\6d"}.gogo-icon-add-circle:before{content:"\6e"}.gogo-icon-plus-circle-1:before{content:"\6f"}.gogo-icon-clear:before{content:"\70"}.gogo-icon-redo:before{content:"\71"}.gogo-icon-day:before{content:"\72"}.gogo-icon-exclamation-1:before{content:"\73"}.gogo-icon-edit:before{content:"\74"}.gogo-icon-menu:before{content:"\75"}.gogo-icon-directions:before{content:"\77"}.gogo-icon-layers:before{content:"\78"}.gogo-icon-locate:before{content:"\7a"}.gogo-icon-material-design-icons-1:before{content:"\41"}.gogo-icon-people:before{content:"\42"}.gogo-icon-add-element:before{content:"\43"}.gogo-icon-internet:before{content:"\44"}.gogo-icon-star-empty:before{content:"\45"}.gogo-icon-share-alt:before{content:"\46"}.gogo-icon-expand:before{content:"\47"}.gogo-icon-angle-right:before{content:"\48"}.gogo-icon-arrow-circle-down:before{content:"\49"}.gogo-icon-facebook:before{content:"\4a"}.gogo-icon-external-link:before{content:"\4b"}.gogo-icon-gplus:before{content:"\4c"}.gogo-icon-home:before{content:"\4d"}.gogo-icon-info:before{content:"\4e"}.gogo-icon-list:before{content:"\4f"}.gogo-icon-lock:before{content:"\50"}.gogo-icon-plus-circle:before{content:"\51"}.gogo-icon-search:before{content:"\52"}.gogo-icon-close:before{content:"\53"}.gogo-icon-user-plus:before{content:"\54"}.gogo-icon-users:before{content:"\55"}.gogo-icon-unlock:before{content:"\56"}.gogo-icon-yahoo:before{content:"\57"}.gogo-icon-twitter:before{content:"\58"}.gogo-icon-partner-3:before{content:"\59"}.gogo-icon-map:before{content:"\5a"}.gogo-icon-ellipsis:before{content:"\30"}.gogo-icon-moderation:before{content:"\79"}.gogo-icon-filters-1:before{content:"\37"}.gogo-icon-vote:before{content:"\76"}.gogo-icon-marker-simple-1:before{content:"\31"}.gogo-icon-marker-simple:before{content:"\32"}.gogo-icon-stamp-1:before{content:"\36"}.gogo-icon-stamp-2:before{content:"\38"}.gogo-icon-communs:before{content:"\34"}.gogo-icon-printemps:before{content:"\33"}.gogo-icon-chevron-left:before{content:"\35"}.gogo-icon-chevron-right:before{content:"\39"} \ No newline at end of file + */height:100%;width:100%}.gogo-load-css ul{list-style-type:none;padding:0}.gogo-load-css a{color:#26A69A;-webkit-tap-highlight-color:transparent;text-decoration:none}.gogo-load-css .valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.gogo-load-css .valign-wrapper .valign{display:block}.gogo-load-css ul li{list-style-type:none}.gogo-load-css .clearfix{clear:both}.gogo-load-css .z-depth-0{box-shadow:none!important}.gogo-load-css .btn,.gogo-load-css .btn-floating,.gogo-load-css .btn-large,.gogo-load-css .collapsible,.gogo-load-css .dropdown-content,.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big,.gogo-load-css .toast,.gogo-load-css .z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.gogo-load-css .btn-floating:hover,.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover,.gogo-load-css .z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.gogo-load-css .gogocarto-container #markerDirectionResult,.gogo-load-css .z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.gogo-load-css .modal,.gogo-load-css .z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.gogo-load-css .z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}.gogo-load-css .hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #de5a5f}.gogo-load-css i{line-height:inherit}.gogo-load-css i.left{float:left;margin-right:15px}.gogo-load-css i.right{float:right;margin-left:15px}.gogo-load-css i.tiny{font-size:1rem}.gogo-load-css i.small{font-size:2rem}.gogo-load-css i.medium{font-size:4rem}.gogo-load-css i.large{font-size:6rem}.gogo-load-css img.responsive-img,.gogo-load-css video.responsive-video{max-width:100%;height:auto}.gogo-load-css .pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.gogo-load-css .pagination li a{color:#444}.gogo-load-css .pagination li.active a{color:#fff}.gogo-load-css .pagination li.active{background-color:#de5a5f}.gogo-load-css .pagination li.disabled a{cursor:default;color:#999}.gogo-load-css .pagination li i{font-size:2rem}.gogo-load-css .pagination li.pages ul li{display:inline-block;float:none}.gogo-load-css .parallax-container{position:relative;overflow:hidden;height:500px}.gogo-load-css .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.gogo-load-css .parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transform:translateX(-50%)}.gogo-load-css .pin-bottom,.gogo-load-css .pin-top{position:relative}.gogo-load-css .pinned{position:fixed!important}.gogo-load-css ul.staggered-list li{opacity:0}.gogo-load-css .fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width:600px){.gogo-load-css .hide-on-small-and-down,.gogo-load-css .hide-on-small-only{display:none!important}}@media only screen and (max-width:1200px){.gogo-load-css .pagination{width:100%}.gogo-load-css .pagination li.next,.gogo-load-css .pagination li.prev{width:10%}.gogo-load-css .pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}.gogo-load-css .hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .hide-on-med-only{display:none!important}}@media only screen and (min-width:1201px){.gogo-load-css .hide-on-large-only{display:none!important}.gogo-load-css .show-on-large{display:initial!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .show-on-medium{display:initial!important}}@media only screen and (min-width:601px){.gogo-load-css .show-on-medium-and-up{display:initial!important}}@media only screen and (max-width:1200px){.gogo-load-css .show-on-medium-and-down{display:initial!important}}@media only screen and (max-width:600px){.gogo-load-css .show-on-small{display:initial!important}.gogo-load-css .center-on-small-only{text-align:center}}.gogo-load-css footer.page-footer{margin-top:20px;padding-top:20px;background-color:#de5a5f}.gogo-load-css footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,.8);background-color:rgba(51,51,51,.08)}.gogo-load-css table.highlight>tbody>tr:hover,.gogo-load-css table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}.gogo-load-css table,.gogo-load-css td,.gogo-load-css th{border:none}.gogo-load-css table.bordered>tbody>tr,.gogo-load-css table.bordered>thead>tr,.gogo-load-css thead{border-bottom:1px solid #d0d0d0}.gogo-load-css table{width:100%;display:table}.gogo-load-css table.striped>tbody>tr>td{border-radius:0}.gogo-load-css table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}.gogo-load-css td,.gogo-load-css th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:1200px){.gogo-load-css table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}.gogo-load-css table.responsive-table td,.gogo-load-css table.responsive-table th{margin:0;vertical-align:top}.gogo-load-css table.responsive-table thead{display:block;float:left;border:0;border-right:1px solid #d0d0d0}.gogo-load-css table.responsive-table thead tr{display:block;padding:0 10px 0 0}.gogo-load-css table.responsive-table thead tr th::before{content:"\00a0"}.gogo-load-css table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}.gogo-load-css table.responsive-table tbody tr{display:inline-block;vertical-align:top}.gogo-load-css table.responsive-table th{display:block;text-align:right}.gogo-load-css table.responsive-table td{display:block;min-height:1.25em;text-align:left}.gogo-load-css table.responsive-table tr{padding:0 10px}.gogo-load-css table.responsive-table.bordered th{border-bottom:0;border-left:0}.gogo-load-css table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}.gogo-load-css table.responsive-table.bordered tr{border:0}.gogo-load-css table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.gogo-load-css .collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.gogo-load-css .collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.gogo-load-css .collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.gogo-load-css .collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.gogo-load-css .collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.gogo-load-css .collection .collection-item.avatar .title{font-size:16px}.gogo-load-css .collection .collection-item.avatar p{margin:0}.gogo-load-css .collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.gogo-load-css .collection .collection-item:last-child{border-bottom:none}.gogo-load-css .collection .collection-item.active{background-color:#4A7874;color:#e9f1f1}.gogo-load-css .collection .collection-item.active .secondary-content{color:#fff}.gogo-load-css .collection a.collection-item{display:block;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;-ms-transition:.25s;transition:.25s;color:#4A7874}.gogo-load-css .collection a.collection-item:not(.active):hover{background-color:#ddd}.gogo-load-css .collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.gogo-load-css .collection.with-header .collection-item{padding-left:30px}.gogo-load-css .collection.with-header .collection-item.avatar{padding-left:72px}.gogo-load-css .secondary-content{float:right;color:#4A7874}.gogo-load-css .collapsible .collection{margin:0;border:none}.gogo-load-css span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:color("grey","darken-1");position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css span.badge.more{font-weight:300;font-size:.8rem;color:#fff;background-color:#4A7874;border-radius:2px}.gogo-load-css span.badge.new:after{content:" new"}.gogo-load-css span.badge.more:after{content:" more"}.gogo-load-css nav ul a span.badge{position:static;margin-left:4px;line-height:0}.gogo-load-css .video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.gogo-load-css .video-container.no-controls{padding-top:0}.gogo-load-css .video-container embed,.gogo-load-css .video-container iframe,.gogo-load-css .video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.gogo-load-css .progress{position:relative;height:4px;display:block;width:100%;background-color:#bad4d2;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.gogo-load-css .progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#4A7874;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.gogo-load-css .progress .indeterminate{background-color:#4A7874}.gogo-load-css .progress .indeterminate:after,.gogo-load-css .progress .indeterminate:before{content:'';position:absolute;background-color:inherit;bottom:0;will-change:left,right;top:0;left:0}.gogo-load-css .progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.gogo-load-css .progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}.gogo-load-css .hide{display:none!important}.gogo-load-css .left-align{text-align:left}.gogo-load-css .right-align{text-align:right}.gogo-load-css .center,.gogo-load-css .center-align{text-align:center}.gogo-load-css .left{float:left!important}.gogo-load-css .right{float:right!important}.gogo-load-css .no-select,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gogo-load-css .circle{border-radius:50%}.gogo-load-css .center-block{display:block;margin-left:auto;margin-right:auto}.gogo-load-css .truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .no-padding{padding:0!important}.gogo-load-css .container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.gogo-load-css .container{width:85%}}@media only screen and (min-width:1201px){.gogo-load-css .container{width:70%}}.gogo-load-css .container .row{margin-left:-.75rem;margin-right:-.75rem}.gogo-load-css .section{padding-top:1rem;padding-bottom:1rem}.gogo-load-css .section.no-pad{padding:0}.gogo-load-css .section.no-pad-bot{padding-bottom:0}.gogo-load-css .section.no-pad-top{padding-top:0}.gogo-load-css .row{margin-left:auto;margin-right:auto;margin-bottom:20px}.gogo-load-css .row:after{content:"";display:table;clear:both}.gogo-load-css .gogocarto-container,.gogo-load-css .tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex}.gogo-load-css .row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem}.gogo-load-css .row .col.s1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.s2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.s3{width:25%;margin-left:0}.gogo-load-css .row .col.s4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.s5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.s6{width:50%;margin-left:0}.gogo-load-css .row .col.s7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.s8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.s9{width:75%;margin-left:0}.gogo-load-css .row .col.s10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.s11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.s12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-s1{margin-left:8.33333%}.gogo-load-css .row .col.offset-s2{margin-left:16.66667%}.gogo-load-css .row .col.offset-s3{margin-left:25%}.gogo-load-css .row .col.offset-s4{margin-left:33.33333%}.gogo-load-css .row .col.offset-s5{margin-left:41.66667%}.gogo-load-css .row .col.offset-s6{margin-left:50%}.gogo-load-css .row .col.offset-s7{margin-left:58.33333%}.gogo-load-css .row .col.offset-s8{margin-left:66.66667%}.gogo-load-css .row .col.offset-s9{margin-left:75%}.gogo-load-css .row .col.offset-s10{margin-left:83.33333%}.gogo-load-css .row .col.offset-s11{margin-left:91.66667%}.gogo-load-css .row .col.offset-s12{margin-left:100%}@media only screen and (min-width:601px){.gogo-load-css .row .col.m1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.m2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.m3{width:25%;margin-left:0}.gogo-load-css .row .col.m4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.m5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.m6{width:50%;margin-left:0}.gogo-load-css .row .col.m7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.m8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.m9{width:75%;margin-left:0}.gogo-load-css .row .col.m10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.m11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.m12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-m1{margin-left:8.33333%}.gogo-load-css .row .col.offset-m2{margin-left:16.66667%}.gogo-load-css .row .col.offset-m3{margin-left:25%}.gogo-load-css .row .col.offset-m4{margin-left:33.33333%}.gogo-load-css .row .col.offset-m5{margin-left:41.66667%}.gogo-load-css .row .col.offset-m6{margin-left:50%}.gogo-load-css .row .col.offset-m7{margin-left:58.33333%}.gogo-load-css .row .col.offset-m8{margin-left:66.66667%}.gogo-load-css .row .col.offset-m9{margin-left:75%}.gogo-load-css .row .col.offset-m10{margin-left:83.33333%}.gogo-load-css .row .col.offset-m11{margin-left:91.66667%}.gogo-load-css .row .col.offset-m12{margin-left:100%}}@media only screen and (min-width:1201px){.gogo-load-css .row .col.l1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.l2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.l3{width:25%;margin-left:0}.gogo-load-css .row .col.l4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.l5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.l6{width:50%;margin-left:0}.gogo-load-css .row .col.l7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.l8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.l9{width:75%;margin-left:0}.gogo-load-css .row .col.l10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.l11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.l12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-l1{margin-left:8.33333%}.gogo-load-css .row .col.offset-l2{margin-left:16.66667%}.gogo-load-css .row .col.offset-l3{margin-left:25%}.gogo-load-css .row .col.offset-l4{margin-left:33.33333%}.gogo-load-css .row .col.offset-l5{margin-left:41.66667%}.gogo-load-css .row .col.offset-l6{margin-left:50%}.gogo-load-css .row .col.offset-l7{margin-left:58.33333%}.gogo-load-css .row .col.offset-l8{margin-left:66.66667%}.gogo-load-css .row .col.offset-l9{margin-left:75%}.gogo-load-css .row .col.offset-l10{margin-left:83.33333%}.gogo-load-css .row .col.offset-l11{margin-left:91.66667%}.gogo-load-css .row .col.offset-l12{margin-left:100%}}.gogo-load-css html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){.gogo-load-css html{font-size:14px}}@media only screen and (min-width:900px){.gogo-load-css html{font-size:14.5px}}@media only screen and (min-width:1200px){.gogo-load-css html{font-size:15px}}.gogo-load-css h1,.gogo-load-css h2,.gogo-load-css h3,.gogo-load-css h4,.gogo-load-css h5,.gogo-load-css h6{font-weight:400}.gogo-load-css h1 a,.gogo-load-css h2 a,.gogo-load-css h3 a,.gogo-load-css h4 a,.gogo-load-css h5 a,.gogo-load-css h6 a{font-weight:inherit}.gogo-load-css h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem}.gogo-load-css h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem}.gogo-load-css h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem}.gogo-load-css h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem}.gogo-load-css h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem}.gogo-load-css h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem}.gogo-load-css em{font-style:italic}.gogo-load-css strong{font-weight:700}.gogo-load-css small{font-size:75%}.gogo-load-css .light,.gogo-load-css footer.page-footer .footer-copyright{font-weight:300}.gogo-load-css .thin{font-weight:200}.gogo-load-css .flow-text{font-weight:300}@media only screen and (min-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.gogo-load-css .flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.gogo-load-css .flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.gogo-load-css .flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.gogo-load-css .flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.gogo-load-css .flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.gogo-load-css .flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.gogo-load-css .flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.gogo-load-css .flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.gogo-load-css .flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.gogo-load-css .flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.gogo-load-css .flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.gogo-load-css .flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.gogo-load-css .flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.gogo-load-css .flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.gogo-load-css .flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.gogo-load-css .flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.gogo-load-css .flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.gogo-load-css .flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.gogo-load-css .flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.gogo-load-css .flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}.gogo-load-css .tabs{display:flex;position:relative;height:2.7rem;background-color:#3D3D3D;margin:0 auto;width:calc(100% - 1px);white-space:nowrap}.gogo-load-css .tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:3rem;height:2.7rem;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%;padding:0}.gogo-load-css .tabs .tab a{color:#fff;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.gogo-load-css .tabs .tab a:hover{color:#fff}.gogo-load-css .tabs .tab.disabled a{color:#fff;cursor:default}.gogo-load-css .tabs .indicator{position:absolute;top:0;height:3px;background-color:#fff;will-change:left,right}.gogo-load-css .btn,.gogo-load-css .btn-flat,.gogo-load-css .btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.gogo-load-css .btn-floating.disabled,.gogo-load-css .btn-floating:disabled,.gogo-load-css .btn-large.disabled,.gogo-load-css .btn-large:disabled,.gogo-load-css .btn.disabled,.gogo-load-css .btn:disabled,.gogo-load-css .disabled.btn-large{background-color:#DFDFDF!important;box-shadow:none;color:#9F9F9F!important;cursor:default}.gogo-load-css .btn-floating.disabled *,.gogo-load-css .btn-floating:disabled *,.gogo-load-css .btn-large.disabled *,.gogo-load-css .btn-large:disabled *,.gogo-load-css .btn.disabled *,.gogo-load-css .btn:disabled *,.gogo-load-css .disabled.btn-large *{pointer-events:none}.gogo-load-css .btn-floating.disabled:hover,.gogo-load-css .btn-floating:disabled:hover,.gogo-load-css .btn-large.disabled:hover,.gogo-load-css .btn-large:disabled:hover,.gogo-load-css .btn.disabled:hover,.gogo-load-css .btn:disabled:hover,.gogo-load-css .disabled.btn-large:hover{background-color:#DFDFDF;color:#9F9F9F}.gogo-load-css .btn i,.gogo-load-css .btn-flat i,.gogo-load-css .btn-floating i,.gogo-load-css .btn-large i{font-size:1.3rem;line-height:inherit}.gogo-load-css .btn,.gogo-load-css .btn-large{text-decoration:none;color:#fff;background-color:#26A69A;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover{background-color:#2bbbad}.gogo-load-css .btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26A69A;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.gogo-load-css .btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.gogo-load-css .btn-floating:before{border-radius:0}.gogo-load-css .btn-floating.btn-large{width:55.5px;height:55.5px}.gogo-load-css .btn-floating.btn-large i{line-height:55.5px}.gogo-load-css button.btn-floating{border:none}.gogo-load-css .fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.gogo-load-css .fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.gogo-load-css .fixed-action-btn ul li{margin-bottom:15px}.gogo-load-css .fixed-action-btn ul a.btn-floating{opacity:0}.gogo-load-css .btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.gogo-load-css .btn-flat.disabled{color:#b3b3b3;cursor:default}.gogo-load-css .btn-large{height:54px;line-height:56px}.gogo-load-css .btn-large i{font-size:1.6rem}.gogo-load-css .btn-block{display:block}.gogo-load-css .dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.gogo-load-css .dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.gogo-load-css .dropdown-content li.active,.gogo-load-css .dropdown-content li:hover{background-color:#eee}.gogo-load-css .dropdown-content li>a,.gogo-load-css .dropdown-content li>span{font-size:1.2rem;color:#4A7874;display:block;padding:1rem}.gogo-load-css .dropdown-content li>a>i{height:inherit;line-height:inherit}.gogo-load-css .waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity,transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.gogo-load-css .waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);-webkit-transition:all .7s ease-out;-moz-transition:all .7s ease-out;-o-transition:all .7s ease-out;-ms-transition:all .7s ease-out;transition:all .7s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.gogo-load-css .waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,.45)}.gogo-load-css .waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.gogo-load-css .waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.gogo-load-css .waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.gogo-load-css .waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.gogo-load-css .waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.gogo-load-css .waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.gogo-load-css .waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.gogo-load-css .waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.gogo-load-css .waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.gogo-load-css .waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.gogo-load-css .waves-block{display:block}.gogo-load-css a.waves-effect .waves-ripple{z-index:-1}.gogo-load-css .modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:1200px){.gogo-load-css .modal{width:80%}}@media only screen and (max-width:600px){.gogo-load-css .modal{width:100%;max-height:100%;height:100%;top:0!important}}.gogo-load-css .modal h1,.gogo-load-css .modal h2,.gogo-load-css .modal h3,.gogo-load-css .modal h4,.gogo-load-css .modal h5{margin-top:0}.gogo-load-css .modal h5{margin-bottom:1.5rem}.gogo-load-css .modal .footer{margin-top:1rem;text-align:center}.gogo-load-css .modal .modal-content{padding:24px}@media only screen and (min-width:601px){.gogo-load-css .modal .modal-content{padding:40px}}.gogo-load-css .modal .modal-close{cursor:pointer;color:#fff}.gogo-load-css .modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.gogo-load-css .modal .modal-footer .btn,.gogo-load-css .modal .modal-footer .btn-flat,.gogo-load-css .modal .modal-footer .btn-large{float:right;margin:6px 0}.gogo-load-css .modal.modal-fixed-footer{padding:0;height:70%}.gogo-load-css .modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 58px);max-height:100%;width:100%;overflow-y:auto}.gogo-load-css .modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.gogo-load-css .modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.gogo-load-css .collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.gogo-load-css .collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.gogo-load-css .collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.gogo-load-css .collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css .collapsible-body p{margin:0;padding:2rem}.gogo-load-css .side-nav .collapsible{border:none;box-shadow:none}.gogo-load-css .side-nav .collapsible li{padding:0}.gogo-load-css .side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.gogo-load-css .side-nav .collapsible-header i{line-height:inherit}.gogo-load-css .side-nav .collapsible-body{border:0;background-color:#fff}.gogo-load-css .side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.gogo-load-css .collapsible.popout{border:none;box-shadow:none}.gogo-load-css .collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.gogo-load-css .collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.gogo-load-css select:focus{outline:#d0e2e0 solid 1px}.gogo-load-css label{font-size:.8rem;color:#3D3D3D}.gogo-load-css ::-webkit-input-placeholder{color:#707070}.gogo-load-css :-moz-placeholder{color:#707070}.gogo-load-css ::-moz-placeholder{color:#707070}.gogo-load-css :-ms-input-placeholder{color:#707070}.gogo-load-css input[type=date],.gogo-load-css input[type=datetime-local],.gogo-load-css input[type=email],.gogo-load-css input[type=number],.gogo-load-css input[type=password],.gogo-load-css input[type=search],.gogo-load-css input[type=tel],.gogo-load-css input[type=text],.gogo-load-css input[type=time],.gogo-load-css input[type=url],.gogo-load-css textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;border-radius:0;outline:0;height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}.gogo-load-css input[type=date]:disabled,.gogo-load-css input[type=date][readonly=readonly],.gogo-load-css input[type=datetime-local]:disabled,.gogo-load-css input[type=datetime-local][readonly=readonly],.gogo-load-css input[type=email]:disabled,.gogo-load-css input[type=email][readonly=readonly],.gogo-load-css input[type=number]:disabled,.gogo-load-css input[type=number][readonly=readonly],.gogo-load-css input[type=password]:disabled,.gogo-load-css input[type=password][readonly=readonly],.gogo-load-css input[type=search]:disabled,.gogo-load-css input[type=search][readonly=readonly],.gogo-load-css input[type=tel]:disabled,.gogo-load-css input[type=tel][readonly=readonly],.gogo-load-css input[type=text]:disabled,.gogo-load-css input[type=text][readonly=readonly],.gogo-load-css input[type=time]:disabled,.gogo-load-css input[type=time][readonly=readonly],.gogo-load-css input[type=url]:disabled,.gogo-load-css input[type=url][readonly=readonly],.gogo-load-css textarea.materialize-textarea:disabled,.gogo-load-css textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}.gogo-load-css input[type=date].valid,.gogo-load-css input[type=date]:focus.valid,.gogo-load-css input[type=date]:focus:not([readonly]),.gogo-load-css input[type=datetime-local].valid,.gogo-load-css input[type=datetime-local]:focus.valid,.gogo-load-css input[type=datetime-local]:focus:not([readonly]),.gogo-load-css input[type=email].valid,.gogo-load-css input[type=email]:focus.valid,.gogo-load-css input[type=email]:focus:not([readonly]),.gogo-load-css input[type=number].valid,.gogo-load-css input[type=number]:focus.valid,.gogo-load-css input[type=number]:focus:not([readonly]),.gogo-load-css input[type=password].valid,.gogo-load-css input[type=password]:focus.valid,.gogo-load-css input[type=password]:focus:not([readonly]),.gogo-load-css input[type=search].valid,.gogo-load-css input[type=search]:focus.valid,.gogo-load-css input[type=search]:focus:not([readonly]),.gogo-load-css input[type=tel].valid,.gogo-load-css input[type=tel]:focus.valid,.gogo-load-css input[type=tel]:focus:not([readonly]),.gogo-load-css input[type=text].valid,.gogo-load-css input[type=text]:focus.valid,.gogo-load-css input[type=text]:focus:not([readonly]),.gogo-load-css input[type=time].valid,.gogo-load-css input[type=time]:focus.valid,.gogo-load-css input[type=time]:focus:not([readonly]),.gogo-load-css input[type=url].valid,.gogo-load-css input[type=url]:focus.valid,.gogo-load-css input[type=url]:focus:not([readonly]),.gogo-load-css textarea.materialize-textarea.valid,.gogo-load-css textarea.materialize-textarea:focus.valid,.gogo-load-css textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #4A7874;box-shadow:0 1px 0 0 #4A7874}.gogo-load-css input[type=date]:disabled+label,.gogo-load-css input[type=date][readonly=readonly]+label,.gogo-load-css input[type=datetime-local]:disabled+label,.gogo-load-css input[type=datetime-local][readonly=readonly]+label,.gogo-load-css input[type=email]:disabled+label,.gogo-load-css input[type=email][readonly=readonly]+label,.gogo-load-css input[type=number]:disabled+label,.gogo-load-css input[type=number][readonly=readonly]+label,.gogo-load-css input[type=password]:disabled+label,.gogo-load-css input[type=password][readonly=readonly]+label,.gogo-load-css input[type=search]:disabled+label,.gogo-load-css input[type=search][readonly=readonly]+label,.gogo-load-css input[type=tel]:disabled+label,.gogo-load-css input[type=tel][readonly=readonly]+label,.gogo-load-css input[type=text]:disabled+label,.gogo-load-css input[type=text][readonly=readonly]+label,.gogo-load-css input[type=time]:disabled+label,.gogo-load-css input[type=time][readonly=readonly]+label,.gogo-load-css input[type=url]:disabled+label,.gogo-load-css input[type=url][readonly=readonly]+label,.gogo-load-css textarea.materialize-textarea:disabled+label,.gogo-load-css textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}.gogo-load-css input[type=date]:focus:not([readonly])+label,.gogo-load-css input[type=datetime-local]:focus:not([readonly])+label,.gogo-load-css input[type=email]:focus:not([readonly])+label,.gogo-load-css input[type=number]:focus:not([readonly])+label,.gogo-load-css input[type=password]:focus:not([readonly])+label,.gogo-load-css input[type=search]:focus:not([readonly])+label,.gogo-load-css input[type=tel]:focus:not([readonly])+label,.gogo-load-css input[type=text]:focus:not([readonly])+label,.gogo-load-css input[type=time]:focus:not([readonly])+label,.gogo-load-css input[type=url]:focus:not([readonly])+label,.gogo-load-css textarea.materialize-textarea:focus:not([readonly])+label{color:#4A7874}.gogo-load-css input[type=date].valid+label:after,.gogo-load-css input[type=date]:focus.valid+label:after,.gogo-load-css input[type=datetime-local].valid+label:after,.gogo-load-css input[type=datetime-local]:focus.valid+label:after,.gogo-load-css input[type=email].valid+label:after,.gogo-load-css input[type=email]:focus.valid+label:after,.gogo-load-css input[type=number].valid+label:after,.gogo-load-css input[type=number]:focus.valid+label:after,.gogo-load-css input[type=password].valid+label:after,.gogo-load-css input[type=password]:focus.valid+label:after,.gogo-load-css input[type=search].valid+label:after,.gogo-load-css input[type=search]:focus.valid+label:after,.gogo-load-css input[type=tel].valid+label:after,.gogo-load-css input[type=tel]:focus.valid+label:after,.gogo-load-css input[type=text].valid+label:after,.gogo-load-css input[type=text]:focus.valid+label:after,.gogo-load-css input[type=time].valid+label:after,.gogo-load-css input[type=time]:focus.valid+label:after,.gogo-load-css input[type=url].valid+label:after,.gogo-load-css input[type=url]:focus.valid+label:after,.gogo-load-css textarea.materialize-textarea.valid+label:after,.gogo-load-css textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4A7874;opacity:1}.gogo-load-css input[type=date].invalid,.gogo-load-css input[type=date]:focus.invalid,.gogo-load-css input[type=datetime-local].invalid,.gogo-load-css input[type=datetime-local]:focus.invalid,.gogo-load-css input[type=email].invalid,.gogo-load-css input[type=email]:focus.invalid,.gogo-load-css input[type=number].invalid,.gogo-load-css input[type=number]:focus.invalid,.gogo-load-css input[type=password].invalid,.gogo-load-css input[type=password]:focus.invalid,.gogo-load-css input[type=search].invalid,.gogo-load-css input[type=search]:focus.invalid,.gogo-load-css input[type=tel].invalid,.gogo-load-css input[type=tel]:focus.invalid,.gogo-load-css input[type=text].invalid,.gogo-load-css input[type=text]:focus.invalid,.gogo-load-css input[type=time].invalid,.gogo-load-css input[type=time]:focus.invalid,.gogo-load-css input[type=url].invalid,.gogo-load-css input[type=url]:focus.invalid,.gogo-load-css textarea.materialize-textarea.invalid,.gogo-load-css textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #B90303;box-shadow:0 1px 0 0 #B90303}.gogo-load-css input[type=date].invalid+label:after,.gogo-load-css input[type=date]:focus.invalid+label:after,.gogo-load-css input[type=datetime-local].invalid+label:after,.gogo-load-css input[type=datetime-local]:focus.invalid+label:after,.gogo-load-css input[type=email].invalid+label:after,.gogo-load-css input[type=email]:focus.invalid+label:after,.gogo-load-css input[type=number].invalid+label:after,.gogo-load-css input[type=number]:focus.invalid+label:after,.gogo-load-css input[type=password].invalid+label:after,.gogo-load-css input[type=password]:focus.invalid+label:after,.gogo-load-css input[type=search].invalid+label:after,.gogo-load-css input[type=search]:focus.invalid+label:after,.gogo-load-css input[type=tel].invalid+label:after,.gogo-load-css input[type=tel]:focus.invalid+label:after,.gogo-load-css input[type=text].invalid+label:after,.gogo-load-css input[type=text]:focus.invalid+label:after,.gogo-load-css input[type=time].invalid+label:after,.gogo-load-css input[type=time]:focus.invalid+label:after,.gogo-load-css input[type=url].invalid+label:after,.gogo-load-css input[type=url]:focus.invalid+label:after,.gogo-load-css textarea.materialize-textarea.invalid+label:after,.gogo-load-css textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#B90303;opacity:1}.gogo-load-css input[type=date]+label:after,.gogo-load-css input[type=datetime-local]+label:after,.gogo-load-css input[type=email]+label:after,.gogo-load-css input[type=number]+label:after,.gogo-load-css input[type=password]+label:after,.gogo-load-css input[type=search]+label:after,.gogo-load-css input[type=tel]+label:after,.gogo-load-css input[type=text]+label:after,.gogo-load-css input[type=time]+label:after,.gogo-load-css input[type=url]+label:after,.gogo-load-css textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.gogo-load-css .input-field{position:relative;margin-top:1rem}.gogo-load-css .input-field label{color:#3D3D3D;position:absolute;top:.8rem;left:.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.gogo-load-css .input-field label.active{font-size:.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.gogo-load-css .input-field .prefix{position:absolute;width:3rem;font-size:2rem;line-height:3rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.gogo-load-css .input-field .prefix.active{color:#4A7874}.gogo-load-css .input-field .prefix~input,.gogo-load-css .input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.gogo-load-css .input-field .prefix~textarea{padding-top:.8rem}.gogo-load-css .input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:1200px){.gogo-load-css .input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.gogo-load-css .input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.gogo-load-css .input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.gogo-load-css .input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.gogo-load-css .input-field input[type=search]:focus+label i,.gogo-load-css .input-field input[type=search]:focus~.material-icons,.gogo-load-css .input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.gogo-load-css .input-field input[type=search]+label{left:1rem}.gogo-load-css .input-field input[type=search]~.material-icons,.gogo-load-css .input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}.gogo-load-css textarea{width:100%;height:3rem;background-color:transparent}.gogo-load-css textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.gogo-load-css .hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.gogo-load-css [type=radio]:checked,.gogo-load-css [type=radio]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=radio]:checked+label,.gogo-load-css [type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=radio]+label:after,.gogo-load-css [type=radio]+label:before{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}.gogo-load-css [type=radio]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}.gogo-load-css [type=radio]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.gogo-load-css [type=radio]:checked+label:before{border-radius:50%;border:2px solid transparent}.gogo-load-css [type=radio]:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.gogo-load-css [type=radio].with-gap:checked+label:before{border-radius:50%;border:2px solid #4A7874}.gogo-load-css [type=radio].with-gap:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:before,.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled+label{color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#BDBDBD}.gogo-load-css form p{margin-bottom:10px;text-align:left}.gogo-load-css form p:last-child{margin-bottom:0}.gogo-load-css [type=checkbox]:checked,.gogo-load-css [type=checkbox]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=checkbox]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;-ms-transition:.2s;transition:.2s}.gogo-load-css [type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #4A7874;border-bottom:2px solid #4A7874;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #4A7874;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}.gogo-load-css [type=checkbox].filled-in+label:after{border-radius:2px}.gogo-load-css [type=checkbox].filled-in+label:after,.gogo-load-css [type=checkbox].filled-in+label:before{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}.gogo-load-css [type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:none;border-left:none;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #4A7874;background-color:#4A7874;z-index:0}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.gogo-load-css .switch,.gogo-load-css .switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css .switch label{cursor:pointer}.gogo-load-css .switch label input[type=checkbox]{opacity:0;width:0;height:0}.gogo-load-css .switch label input[type=checkbox]:checked+.lever{background-color:#a1a1a1}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{background-color:#4A7874}.gogo-load-css .switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.gogo-load-css .switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.gogo-load-css input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(74,120,116,.1)}.gogo-load-css input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{left:24px}.gogo-load-css .switch input[type=checkbox][disabled]+.lever{cursor:default}.gogo-load-css .switch label input[type=checkbox][disabled]+.lever:after,.gogo-load-css .switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.gogo-load-css .select-label{position:absolute}.gogo-load-css .select-wrapper{position:relative}.gogo-load-css .select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;outline:0;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;display:block}.gogo-load-css .select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.gogo-load-css .select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.gogo-load-css .select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}.gogo-load-css select{display:none}.gogo-load-css select.browser-default{display:block}.gogo-load-css select:disabled{color:rgba(0,0,0,.3)}.gogo-load-css .select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.gogo-load-css .file-field span,.gogo-load-css .leaflet-interactive,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{cursor:pointer}.gogo-load-css .select-wrapper i{color:rgba(0,0,0,.3)}.gogo-load-css .select-dropdown li.disabled{color:rgba(0,0,0,.3);background-color:transparent}.gogo-load-css .file-field{position:relative}.gogo-load-css .file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.gogo-load-css .file-field input.file-path{width:100%}.gogo-load-css .file-field .btn,.gogo-load-css .file-field .btn-large{float:left;height:3rem;line-height:3rem}.gogo-load-css .file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.gogo-load-css .range-field{position:relative}.gogo-load-css input[type=range]{position:relative;background-color:transparent;outline:0;width:100%;margin:15px 0;padding:0}.gogo-load-css input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#4A7874;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#4A7874;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}.gogo-load-css input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}.gogo-load-css input[type=range]:focus{outline:0}.gogo-load-css input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}.gogo-load-css input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#4A7874;transform-origin:50% 50%;margin:-5px 0 0;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;-ms-transition:.3s;transition:.3s}.gogo-load-css input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}.gogo-load-css input[type=range]{-webkit-appearance:none;border:1px solid #fff}.gogo-load-css input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}.gogo-load-css input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874;margin-top:-5px}.gogo-load-css input[type=range]:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.gogo-load-css input[type=range]:focus::-moz-range-track{background:#ccc}.gogo-load-css input[type=range]::-ms-track{height:3px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.gogo-load-css input[type=range]::-ms-fill-lower{background:#777}.gogo-load-css input[type=range]::-ms-fill-upper{background:#ddd}.gogo-load-css input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874}.gogo-load-css input[type=range]:focus::-ms-fill-lower{background:#888}.gogo-load-css input[type=range]:focus::-ms-fill-upper{background:#ccc}.gogo-load-css select{background-color:rgba(255,255,255,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.gogo-load-css .preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.gogo-load-css .preloader-wrapper.small{width:36px;height:36px}.gogo-load-css .preloader-wrapper.big{width:64px;height:64px}.gogo-load-css .preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.gogo-load-css .spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#4A7874}.gogo-load-css .spinner-blue,.gogo-load-css .spinner-blue-only{border-color:#4285f4}.gogo-load-css .spinner-red,.gogo-load-css .spinner-red-only{border-color:#db4437}.gogo-load-css .spinner-yellow,.gogo-load-css .spinner-yellow-only{border-color:#f4b400}.gogo-load-css .spinner-green,.gogo-load-css .spinner-green-only{border-color:#0f9d58}.gogo-load-css .active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer,.gogo-load-css .active .spinner-layer.spinner-blue-only,.gogo-load-css .active .spinner-layer.spinner-green-only,.gogo-load-css .active .spinner-layer.spinner-red-only,.gogo-load-css .active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@-webkit-keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@-webkit-keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@-webkit-keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}@keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}.gogo-load-css .gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .gap-patch .circle{width:1000%;left:-450%}.gogo-load-css .circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.gogo-load-css .circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.gogo-load-css .circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.gogo-load-css .active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{from,to{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}}@keyframes left-spin{from,to{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@-webkit-keyframes right-spin{from,to{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}}@keyframes right-spin{from,to{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}.gogo-load-css #spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane,.gogo-load-css .leaflet-pane>canvas,.gogo-load-css .leaflet-pane>svg,.gogo-load-css .leaflet-tile,.gogo-load-css .leaflet-tile-container,.gogo-load-css .leaflet-zoom-box{position:absolute;left:0;top:0}.gogo-load-css .leaflet-container{overflow:hidden;background:#ddd;outline:0;font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.gogo-load-css .leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.gogo-load-css .leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow{display:block}.gogo-load-css .leaflet-container .leaflet-marker-pane img,.gogo-load-css .leaflet-container .leaflet-overlay-pane svg,.gogo-load-css .leaflet-container .leaflet-shadow-pane img,.gogo-load-css .leaflet-container .leaflet-tile-pane img,.gogo-load-css .leaflet-container img.leaflet-image-layer{max-width:none!important}.gogo-load-css .leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.gogo-load-css .leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom}.gogo-load-css .leaflet-container.leaflet-touch-drag.leaflet-touch-drag{-ms-touch-action:none;touch-action:none}.gogo-load-css .leaflet-tile{filter:inherit;visibility:hidden}.gogo-load-css .leaflet-tile-loaded{visibility:inherit}.gogo-load-css .leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.gogo-load-css .leaflet-overlay-pane svg{-moz-user-select:none}.gogo-load-css .leaflet-pane{z-index:400}.gogo-load-css .leaflet-tile-pane{z-index:200}.gogo-load-css .leaflet-overlay-pane{z-index:400}.gogo-load-css .leaflet-shadow-pane{z-index:500}.gogo-load-css .leaflet-marker-pane{z-index:600}.gogo-load-css .leaflet-tooltip-pane{z-index:650}.gogo-load-css .leaflet-popup-pane{z-index:700}.gogo-load-css .leaflet-map-pane canvas{z-index:100}.gogo-load-css .leaflet-map-pane svg{z-index:200}.gogo-load-css .leaflet-vml-shape{width:1px;height:1px}.gogo-load-css .lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.gogo-load-css .leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.gogo-load-css .leaflet-bottom,.gogo-load-css .leaflet-top{position:absolute;z-index:1000;pointer-events:none}.gogo-load-css .leaflet-top{top:0}.gogo-load-css .leaflet-right{right:0}.gogo-load-css .leaflet-bottom{bottom:0}.gogo-load-css .leaflet-left{left:0}.gogo-load-css .leaflet-right .leaflet-control{float:right;margin-right:10px}.gogo-load-css .leaflet-top .leaflet-control{margin-top:10px}.gogo-load-css .leaflet-bottom .leaflet-control{margin-bottom:10px}.gogo-load-css .leaflet-left .leaflet-control{margin-left:10px}.gogo-load-css .leaflet-fade-anim .leaflet-tile{will-change:opacity}.gogo-load-css .leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.gogo-load-css .leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.gogo-load-css .leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.gogo-load-css .leaflet-pan-anim .leaflet-tile,.gogo-load-css .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.gogo-load-css .leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab}.gogo-load-css .leaflet-crosshair,.gogo-load-css .leaflet-crosshair .leaflet-interactive{cursor:crosshair}.gogo-load-css .leaflet-control,.gogo-load-css .leaflet-popup-pane{cursor:auto}.gogo-load-css .leaflet-dragging .leaflet-grab,.gogo-load-css .leaflet-dragging .leaflet-grab .leaflet-interactive,.gogo-load-css .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane>svg path,.gogo-load-css .leaflet-tile-container{pointer-events:none}.gogo-load-css .leaflet-image-layer.leaflet-interactive,.gogo-load-css .leaflet-marker-icon.leaflet-interactive,.gogo-load-css .leaflet-pane>svg path.leaflet-interactive{pointer-events:visiblePainted;pointer-events:auto}.gogo-load-css .leaflet-container a{color:#0078A8}.gogo-load-css .leaflet-container a.leaflet-active{outline:orange solid 2px}.gogo-load-css .leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.gogo-load-css .leaflet-bar a:hover{background-color:#f4f4f4}.gogo-load-css .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.gogo-load-css .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.gogo-load-css .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.gogo-load-css .leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.gogo-load-css .leaflet-control-zoom-in,.gogo-load-css .leaflet-control-zoom-out{font:700 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.gogo-load-css .leaflet-control-zoom-out{font-size:20px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-in{font-size:22px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-out{font-size:24px}.gogo-load-css .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.gogo-load-css .leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.gogo-load-css .leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.gogo-load-css .leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.gogo-load-css .leaflet-control-layers .leaflet-control-layers-list,.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.gogo-load-css .leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.gogo-load-css .leaflet-control-layers-scrollbar{overflow-y:scroll;padding-right:5px}.gogo-load-css .leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.gogo-load-css .leaflet-control-layers label{display:block}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .icon,.gogo-load-css .gogo-theme-default.gogocarto-container .show-directory-menu-button .arrow-right,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .checkbox-wrapper{display:none}.gogo-load-css .leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.gogo-load-css .leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.gogo-load-css .leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.gogo-load-css .leaflet-control-attribution,.gogo-load-css .leaflet-control-scale-line{padding:0 5px;color:#333}.gogo-load-css .leaflet-control-attribution a{text-decoration:none}.gogo-load-css .leaflet-control-attribution a:hover{text-decoration:underline}.gogo-load-css .leaflet-container .leaflet-control-attribution,.gogo-load-css .leaflet-container .leaflet-control-scale{font-size:11px}.gogo-load-css .leaflet-left .leaflet-control-scale{margin-left:5px}.gogo-load-css .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.gogo-load-css .leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.gogo-load-css .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-attribution,.gogo-load-css .leaflet-touch .leaflet-control-layers{box-shadow:none}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.gogo-load-css .leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.gogo-load-css .leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.gogo-load-css .leaflet-popup-content{margin:13px 19px;line-height:1.4}.gogo-load-css .leaflet-popup-content p{margin:18px 0}.gogo-load-css .leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.gogo-load-css .leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.gogo-load-css .leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.gogo-load-css .leaflet-container a.leaflet-popup-close-button:hover{color:#999}.gogo-load-css .leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.gogo-load-css .leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.gogo-load-css .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.gogo-load-css .leaflet-oldie .leaflet-control-layers,.gogo-load-css .leaflet-oldie .leaflet-control-zoom,.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.gogo-load-css .leaflet-div-icon{background:#fff;border:1px solid #666}.gogo-load-css .leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value,.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .option-value{color:inherit}.gogo-load-css .leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before,.gogo-load-css .leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.gogo-load-css .leaflet-tooltip-bottom{margin-top:6px}.gogo-load-css .leaflet-tooltip-top{margin-top:-6px}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-top:before{left:50%;margin-left:-6px}.gogo-load-css .leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.gogo-load-css .leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.gogo-load-css .leaflet-tooltip-left{margin-left:-6px}.gogo-load-css .leaflet-tooltip-right{margin-left:6px}.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before{top:50%;margin-top:-6px}.gogo-load-css .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.gogo-load-css .leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.gogo-load-css .leaflet-cluster-anim .leaflet-marker-icon,.gogo-load-css .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.gogo-load-css .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.gogo-load-css .gogo-theme-default.gogocarto-container .moreIconContainer .moreIconWrapper{background-color:#DADAD9}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .inline-option-value:not(:last-child):after{content:",";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .top-image-container{height:90px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{border-top:none;width:calc(100% - 23px)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{background-color:#175259}@media (min-width:850px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 23px);border-radius:0 8px 8px 0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #f79900 transparent transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container{height:4rem;padding-left:.5rem;padding-right:1.4rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon{font-size:1.1rem;color:#fff!important;height:2.5rem;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:2.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar{background-color:#3bad78;border-radius:0;height:2.5rem;padding:0 3rem;width:95%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options{padding-left:14px;padding-right:2rem;padding-bottom:1.2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options .search-action-btn{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories{border-left:none;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content ul{padding-right:10px;padding-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item{background-color:#fff;margin-bottom:3px;padding-left:0;line-height:2.5rem;height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled .icon{color:#bcbcbc!important;background-color:transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name{font-weight:500;font-size:13px;padding-left:.6rem;-webkit-transition:color .1s;-moz-transition:color .1s;-o-transition:color .1s;-ms-transition:color .1s;transition:color .1s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .arrow-after{position:absolute;right:19%;top:1.1rem;border-radius:1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name:hover .arrow-after{margin-right:-1px;margin-top:-1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name:hover .arrow-after{margin-bottom:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon{padding-top:.7rem;font-size:17px;height:3rem;width:2.5rem;margin-right:0;-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-link,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-recycle{padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#3bad78 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #3bad78;opacity:1;top:.9rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .name-wrapper{margin-left:3rem;margin-right:0;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper{left:0;right:initial}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:after{background-color:transparent;border:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:before{top:7px;width:9px;height:15px;border-right:3px solid #3bad78;border-bottom:3px solid #3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in:not(:checked)+label:before{border-right:3px solid #bcbcbc;border-bottom:3px solid #bcbcbc;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:0!important;margin-bottom:6px;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{margin-bottom:0;line-height:2.7rem;height:2.7rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .option-name{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:.85rem;padding-top:.95rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item.disabled .icon{color:#bcbcbc!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .name-wrapper{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item.checked .icon:not(.subIcon){color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .name-wrapper,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.checked .icon{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item .subIcon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item:not(.checked) .icon{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child [type=checkbox].filled-in:checked+label:before{top:7px;width:9px;height:15px;border-right:3px solid #f79900;border-bottom:3px solid #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item .icon{color:#175259;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:hover .subcategorie-option-checkbox+label:before{color:#f79900;border-color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#f79900 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{border-color:#f79900 transparent transparent!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #f79900;opacity:1;top:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name:hover .arrow-after{border-color:transparent transparent #f79900!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon{padding-top:3px;padding-left:10px;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .option-name{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .option-name{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .show-only-title{color:#3bad78;padding-left:0;margin-bottom:0;border-top:none;margin-top:0;padding-top:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper .iconInsideMarker{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-name{color:#f1f1f1;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .moreIconContainer .moreIconWrapper{font-size:14px;line-height:0;padding-left:1px;box-shadow:1px 1px 4px 1px #989898}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster div{font-size:15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div{background-color:#f8ab00;width:34px;height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div{background-color:#f78b16;width:38px;height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div{background-color:#f5701e;width:44px;height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header{background-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .name{font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .element-main-icon{display:none!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#f79900;color:#fff;border-radius:3px;padding:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item-text{display:inline-block!important;text-transform:uppercase;line-height:3rem;margin-left:10px;font-size:12px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .icon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .info-bar-divider{display:none}@media (max-width:460px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item{margin:0 .5rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-element-item-text{font-size:11px;margin-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-icon{font-size:16px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#f3f6f4;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .description{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section{background-color:#fff;margin-top:1rem;padding-left:1rem;margin-right:.4rem;line-height:1.5rem;padding-top:.7rem;padding-bottom:.6rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy{padding:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name{background-color:#f3f6f4;margin-left:0;padding-left:1.5rem;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name:first-child{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.sectionlongDescription{margin-top:0;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body h3{margin-left:1rem;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{margin-bottom:3px;border-left:10px solid;padding-left:1rem;background-color:#fff;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .option-name{color:#175259;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{margin-right:10px;font-size:.9rem;padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .row+.category-wrapper .row:last-child .option-value{padding-bottom:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{border:none;margin-left:0;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.9rem;margin-top:-8px;height:1.5rem;line-height:1.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name{color:inherit;margin-left:4px;line-height:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name:before{content:"➡";font-size:1.2rem;margin-right:6px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .day:after{content:"➡";font-size:1.2rem;color:#3bad78;float:right}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .openHours{padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container{background-color:#f3f6f4;margin-top:0;padding-top:1rem;padding-left:1.5rem;margin-bottom:-10px;text-align:center}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container .gogo-tag{background-color:#fff;border-radius:0;padding:4px 14px;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element{background-color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;font-weight:700;color:#e6e6e6}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values{width:calc(100% - 140px);font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:20px;display:inline-block}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon i,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .text,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button i{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:7px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{margin-right:5px;font-size:.9rem;padding-top:.6rem;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value{line-height:2rem;font-style:normal;font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item{margin-left:-17px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item:before{content:"+";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-features-buttons{top:140px}}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value:last-child{display:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{color:#fff;border-radius:50%;font-size:.9rem;padding:10px 9px;margin-right:5px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel{width:auto;float:right;border:2px solid;color:#3bad78;padding:8px 15px;text-align:center;border-radius:20px;margin-top:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-gogo-controls{width:100%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before{margin-right:8px;color:#fff;background-color:#3bad78;border-radius:50%;padding:0 4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before{content:"-";padding:0 6px 1px;font-weight:900;font-size:16px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item:not(.active) .expandLabel:before{content:"+"}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{padding:.5rem 0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#3bad78;color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.4rem;line-height:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .gogo-icon-close{font-size:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{background-color:#fff;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover{color:#3bad78}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item .expandLabel{margin-right:10px;font-size:13px;font-weight:900;padding:8px 10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{padding:8px 10px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .collapsible-header{padding-bottom:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out:hover{color:#3bad78;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers{margin-right:17px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control{text-transform:uppercase;font-weight:700;font-size:12px!important;line-height:22px;padding:5px 15px;background-color:#fff;color:#f79900;border:1px solid #d7d7d7;-webkit-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);-moz-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);box-shadow:1px 2px 4px 1px rgba(0,0,0,.12)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control .gogo-icon-list{color:inherit}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-top:60px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-as-list-button{position:absolute;right:20px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button{position:absolute;left:-20px;top:80px;background-color:#175259!important;padding:10px 10px 3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .arrow-right{margin-bottom:10px;margin-left:4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button:hover .arrow-right{border-color:transparent transparent transparent #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header{background-color:#f3f6f4;color:#3bad78;text-align:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button{height:2rem;line-height:2rem;border-radius:5px;top:15px;padding:0 15px;background-color:#f79900;left:initial!important;text-transform:uppercase;text-decoration:none;font-size:.8rem;font-weight:700;float:right;margin-top:12px;margin-right:-8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{color:#fff!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{font-size:1.2rem;margin-right:10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{top:0;left:-40px;border-radius:0 0 5px;padding-bottom:0;padding-top:6px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media (min-width:1500px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{left:0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item:not(.active){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body{border-bottom:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child{float:right;margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element{text-align:right;padding:0 10px 0 0;height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon{font-size:18px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text{font-size:11px;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location{font-weight:400;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content{padding-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container{margin-bottom:0;padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section-taxonomy .category-wrapper:last-child .option-value:last-child{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .collapsible.popout>li{margin-bottom:3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-list-spinner-loader .spinner-layer{border-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .feature-button{margin-right:0;float:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-search-icon{border-radius:8px 0 0 8px;margin-right:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon{background-color:#175259;border-radius:0 8px 8px 0;padding-top:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-list-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{color:#3bad78;border-radius:8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{background-color:#f79900!important;color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:13px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogocarto-container #directory-list-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #directory-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #info-bar-spinner-loader .spinner-layer{border-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:18px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn-large{font-weight:700;box-shadow:none;border-radius:none;font-size:.9rem}.gogo-load-css .gogocarto-container{display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;height:100%;position:relative;font-size:.95rem}.gogo-load-css .gogocarto-container #directory-spinner-loader,.gogo-load-css .gogocarto-container #info-bar-spinner-loader{position:absolute;margin:auto;top:0;left:0;bottom:0;right:0;z-index:1}.gogo-load-css .gogocarto-container #directory-list-spinner-loader{position:relative;margin-top:40px;z-index:500}.gogo-load-css .gogocarto-container #directory-loading{position:absolute;width:200px;margin:auto;top:0;left:0;right:0;z-index:500;background-color:#f2b523;color:#272626;padding:.2rem 0;text-align:center}.gogo-load-css .gogocarto-container #info-bar-overlay{background-color:rgba(0,0,0,.17);z-index:10;top:0;left:0;bottom:0;right:0;position:absolute}.gogo-load-css .gogocarto-container .leaflet-routing-container,.gogo-load-css .gogocarto-container .leaflet-routing-error{border-radius:0;box-shadow:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;background-color:#fff;transition:all .2s ease;box-sizing:border-box}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide{width:32px;height:32px}.gogo-load-css .gogocarto-container .leaflet-routing-container h2{font-size:1.2rem;text-align:center;margin:1.5rem .5rem 1rem;font-weight:600}.gogo-load-css .gogocarto-container .leaflet-routing-container h2 .distance{font-weight:400;color:#5d5d5d;margin-left:5px}.gogo-load-css .gogocarto-container .leaflet-routing-container h3{font-size:.9rem;font-weight:400;text-align:center;margin:.5rem;line-height:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #888}.gogo-load-css .gogocarto-container .leaflet-routing-collapsible .leaflet-routing-geocoders{margin-top:20px}.gogo-load-css .gogocarto-container .td-leaflet-routing-icon{padding-left:15px;padding-right:5px;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-text{font-size:.9rem;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-distance{font-size:.8rem;color:#777;font-weight:300;vertical-align:top}.gogo-load-css .gogocarto-container .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-routing-error,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders{height:100%;padding:0;font-size:.95rem;margin:0;border-bottom:1px solid #ccc;overflow-y:auto;transition:all .2s ease}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-geocoders{display:none}.gogo-load-css .gogocarto-container .leaflet-bar .leaflet-routing-alt:last-child{border-bottom:none}.gogo-load-css .gogocarto-container .leaflet-routing-alt-minimized{display:none;color:#888;max-height:64px;overflow:hidden;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-alt tr:hover{background-color:#eee;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-icon{background-image:url(images/leaflet.routing.icons.png);-webkit-background-size:240px 20px;background-size:240px 20px;background-repeat:no-repeat;margin:0;content:'';display:inline-block;vertical-align:top;width:20px;height:20px}.gogo-load-css .gogocarto-container .leaflet-routing-icon-continue{background-position:0 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-right{background-position:-20px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-right{background-position:-40px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-right{background-position:-60px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-u-turn{background-position:-80px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-left{background-position:-100px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-left{background-position:-120px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-left{background-position:-140px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-depart{background-position:-160px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-enter-roundabout{background-position:-180px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-arrive{background-position:-200px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-via{background-position:-220px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders div{padding:4px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input{width:303px;width:calc(100% - 4px);line-height:1.67;border:1px solid #ccc}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button{font:700 18px 'Lucida Console',Monaco,monospace;border:1px solid #ccc;border-radius:4px;background-color:#fff;margin:0 3px 0 0;float:right;cursor:pointer;transition:background-color .2s ease}.gogo-load-css .gogocarto-container .leaflet-routing-add-waypoint:after{content:'+'}.gogo-load-css .gogocarto-container .leaflet-routing-reverse-waypoints:after{font-weight:400;content:'\21c5'}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button:hover{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input,.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{position:relative}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif;position:absolute;max-height:0;overflow:hidden;transition:all .5s ease;z-index:1000}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result table{width:100%;border:1px solid #ccc;border-radius:0 0 4px 4px;background-color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result-open{max-height:800px}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result tr:hover,.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-selected{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-no-results{font-style:italic;color:#888}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{background-color:transparent;display:inline-block;vertical-align:middle;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:after{position:absolute;display:block;width:15px;height:1px;z-index:1;right:1px;top:4px;bottom:0;margin:-16px auto auto;padding:2px 4px 16px 2px;font-size:18px;font-weight:700;content:"\00d7";text-align:center;cursor:pointer;color:#ccc;background:#fff;line-height:1}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:hover{color:#000}.gogo-load-css .gogocarto-container .leaflet-routing-instruction-distance{width:4rem}.gogo-load-css .gogocarto-container .leaflet-routing-collapse-btn{display:none;position:absolute;top:0;right:6px;font-size:24px;color:#ccc;font-weight:700}.gogo-load-css .gogocarto-container #filter-moderation,.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox+label:before{color:#c53f36}.gogo-load-css .gogocarto-container .leaflet-routing-container-hide .leaflet-routing-collapse-btn{position:relative;left:4px;top:4px;display:block;width:26px;height:23px;background-image:url(routing-icon.png)}.gogo-load-css .gogocarto-container .leaflet-top .leaflet-routing-container.leaflet-routing-container-hide{margin-top:10px!important}.gogo-load-css .gogocarto-container .leaflet-right .leaflet-routing-container.leaflet-routing-container-hide{margin-right:10px!important}.gogo-load-css .gogocarto-container .leaflet-bottom .leaflet-routing-container.leaflet-routing-container-hide{margin-bottom:10px!important}.gogo-load-css .gogocarto-container .leaflet-left .leaflet-routing-container.leaflet-routing-container-hide{margin-left:10px!important}@media only screen and (max-width:640px){.gogo-load-css .gogocarto-container .leaflet-routing-container{margin:0!important;padding:0!important;width:100%;height:100%}}.gogo-load-css .gogocarto-container #filter-moderation:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#c53f36}.gogo-load-css .gogocarto-container #filter-pending,.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox+label:before{color:#565656}.gogo-load-css .gogocarto-container #filter-pending:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#565656}.gogo-load-css .gogocarto-container #filter-favorite{color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full{color:#fff;font-size:18px}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full:before{padding:2px 2px 3px;border:none;color:#cc8901;background-color:transparent}.gogo-load-css .gogocarto-container #filter-favorite:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox+label:before{color:#cc8901}.gogo-load-css .gogocarto-container .sub-categories-content.no-top-divider>ul>.main-option-subcategories-container>.category-wrapper>.subcategory-item{border-top:none!important;margin-top:0!important}.gogo-load-css .gogocarto-container .category-wrapper{margin-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item{position:relative;line-height:3rem;padding-top:0;padding-left:.8rem;font-weight:700;font-size:90%;text-transform:uppercase}.gogo-load-css .gogocarto-container .subcategory-item.top-separator{border-top:2px dashed #eee;margin-top:1rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper{margin-right:3rem;height:3rem;overflow:hidden}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper .arrow-after{display:inline-block;margin-left:1rem;margin-bottom:1px;border:5px solid;border-radius:4px}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item:not(.expanded) .name-wrapper .arrow-after{margin-bottom:-3px!important}.gogo-load-css .gogocarto-container .subcategory-item.unexpandable .name-wrapper:hover{cursor:default;color:inherit}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:2px;bottom:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container{position:absolute;top:2px;right:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:after{top:9px!important;width:17px;height:17px;border:2px solid;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:before{top:9px;left:1px;width:6px;height:11px}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox:not(:checked)+label:after{background-color:transparent}.gogo-load-css .gogocarto-container .subcategorie-option-item{position:relative;margin-bottom:0;line-height:2.8rem;padding:0 0 0 .8rem;height:2.8rem;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{margin-bottom:-5px}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name .arrow-after{margin-bottom:-4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper{margin-right:3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name{position:absolute;width:100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name:hover .arrow-after{border:6px solid;margin-bottom:1px}.gogo-load-css .gogocarto-container .subcategorie-option-item .arrow-after{display:inline-block;margin-left:1rem;border:5px solid;margin-bottom:1px;border-radius:4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon{font-size:1.3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:13px;height:13px;left:2px;top:3px;z-index:0;border:2px solid #5a5a5a;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;margin-top:2px}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{top:2px;left:1px;width:7px;height:13px;border-color:#3D3D3D;border-top:none;border-left:none;border-right:2px solid;border-bottom:2px solid;border-radius:0;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:0;bottom:0;background:-moz-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:-webkit-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4dffffff', endColorstr='#ffffff', GradientType=1 )}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper .checkbox-container{position:absolute;top:.6rem;right:0}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover{background-color:#f0f0f0;cursor:pointer}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover .checkbox-wrapper{background:0 0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1.3rem;border-left:1px dotted #c3c3c3;margin-bottom:15px;margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .category-wrapper{margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item{font-size:85%;line-height:2.5rem;margin-top:0;padding-top:0;padding-left:.9rem;margin-bottom:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:after{width:15px;height:15px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:before{width:5px;height:9px;top:9px;left:2px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .name-wrapper{height:2.5rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper{top:7px;right:-1px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper .checkbox-container{top:-4px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{font-size:95%;line-height:2.4rem;height:2.4rem;padding-left:1rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:1.2rem;padding-top:1px;margin-right:.8rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon.fa{font-size:1.1rem;padding-top:.7rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:10px;height:10px;left:3px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{width:6px;height:10px;left:2px}.gogo-load-css .gogocarto-container #directory-menu.small-width{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item .arrow-after{margin-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .icon{margin-right:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories{width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon{height:3.4rem;width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon:before{left:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories .sub-categories-content{padding-right:0}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories:not(.with-left-border) .sub-categories-content{padding-left:.2rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategory-item{padding-left:.6rem;font-size:.9rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item{padding-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategory-item{padding-left:.7rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategorie-option-item{padding-left:.6rem}.gogo-load-css .gogocarto-container #directory-menu .filter-menu{width:100%;height:auto;position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row nowrap;-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .filter-menu{height:100%}}.gogo-load-css .gogocarto-container #directory-menu .main-categories{width:3.5rem;padding-top:.6rem;height:100%}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon{padding-top:0}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:not(.active) .main-icon-text{transform:rotateZ(-45deg);opacity:.8}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:hover .main-icon-text{opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon .main-icon-text{text-transform:uppercase;-webkit-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;-ms-transition:transform .2s;transition:transform .2s;font-size:.85rem;font-weight:700;color:#fff;opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon{width:3.5rem;height:3.5rem;line-height:3.5rem;margin:0;padding-right:8px;text-align:center;position:relative}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon .main-option-tooltip{display:none}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:before{position:absolute;top:1rem;left:.8rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover .main-option-tooltip{display:block;position:absolute;left:4rem;top:.5rem;height:2.5rem;line-height:2.5rem;z-index:100;width:14rem;color:#efefef;font-size:1rem;border-radius:5px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.active{color:#fff;padding-right:8px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-gogo-icon-background{position:absolute;top:.6rem;border-radius:0 50% 50% 0}.gogo-load-css .gogocarto-container #directory-menu #main-option-all.show-one-pane-per-main-option .gogo-icon-name-wrapper:hover:after{content:"+";font-size:1.4rem;font-weight:400;background-color:#eee;padding:3px 11px;border-radius:3px;margin-left:5px;line-height:1rem;position:absolute;right:10px;z-index:10;top:11px}.gogo-load-css .gogocarto-container #directory-menu .secondary-filters{padding:.5rem 0 0;height:auto;border-top:2px dashed #eee;margin-top:1rem}.gogo-load-css .gogocarto-container #directory-menu .sub-categories{-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;padding-left:7px;padding-right:4px;background-color:#eee}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{height:3rem;line-height:3rem;font-weight:700;text-align:center}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{font-size:1.2rem}}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content{height:calc(100% - 3rem);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-right:5px;padding-top:0;background-color:#fff}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content.full-height{height:100%}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul{height:100%;margin:0;border:0;box-shadow:none;padding-bottom:2rem;overflow-y:auto;overflow-x:hidden}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions{background-color:#f7f7f7}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header{width:100%;border-radius:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header h3{font-size:1rem;text-align:left;text-transform:uppercase;padding-left:1rem;color:#fff;font-weight:600;line-height:3rem;margin:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content .filter-menu{display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content #directory-menu-spinner-loader{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directions-header{display:none;position:relative}.gogo-load-css .gogocarto-container #directory-menu{z-index:998;overflow-y:hidden;-webkit-transition:height .5s;-moz-transition:height .5s;-o-transition:height .5s;-ms-transition:height .5s;transition:height .5s;-webkit-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);-moz-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2)}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-menu{overflow:visible}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column;-webkit-flex-flow:column;flex-flow:column;width:100%;height:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .menu-top-image{width:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:100%;z-index:2;position:relative;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{overflow:scroll}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-container{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{position:absolute;right:0;top:0;width:24px;bottom:0;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #eee transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover .arrow-left{border-color:transparent #fff transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader{position:relative}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close{position:absolute;margin:0;right:0;top:7px;padding:0 1rem;z-index:50;color:#CECECE}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close:hover{color:#fff;cursor:pointer}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 12px);border-radius:0 0 5px 5px;padding-right:15px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.small-screen{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{bottom:-8px;border-top:none;width:calc(100% - 12px)}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;position:relative;height:100px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content #directory-menu-spinner-loader{top:40%;left:40%;position:absolute;display:none}.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{color:#fff;text-transform:uppercase;width:100%;border-radius:0;text-align:center;line-height:2.5rem;z-index:10;box-shadow:1px -2px 11px 2px rgba(0,0,0,.25)}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{display:none}.gogo-load-css .gogocarto-container .directory-menu-drag-target{display:none!important}}.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none!important}}.gogo-load-css .gogocarto-container .directory-menu-drag-target{height:100%;width:10px;position:fixed;top:0;z-index:999}.gogo-load-css .gogocarto-container .cluster{z-index:2}.gogo-load-css .gogocarto-container .icon{font-size:1.4rem;padding-top:3px;float:left;margin-right:1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .icon{padding-top:2px}}.gogo-load-css .gogocarto-container .icon.disabled{color:#DFDFDF}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa:before{position:relative;left:0;top:0}.gogo-load-css .gogocarto-container .icon.fa{padding-top:.5rem;font-size:1.3rem}.gogo-load-css .gogocarto-container .element-main-icon.icon.fa{padding-top:4px}.gogo-load-css .gogocarto-container .iconInsideMarker.fa{padding-top:0}.gogo-load-css .gogocarto-container .filter-menu .icon.fa{padding-top:.7rem;width:1.5rem;text-align:center;font-size:1.2rem}.gogo-load-css .gogocarto-container .leaflet-marker-container{width:0!important;height:0!important;margin:0!important}.gogo-load-css .gogocarto-container .leaflet-marker-container:hover{z-index:10000000!important}.gogo-load-css .gogocarto-container .marker-name{position:absolute;white-space:nowrap;opacity:.9;font-size:1rem;font-family:Roboto,sans-serif;border-radius:5px;padding:5px 10px;bottom:55px;left:-30px;color:#dadada}.gogo-load-css .gogocarto-container .marker-wrapper{position:absolute;z-index:1;height:40px;width:40px;bottom:0;right:-20px;font-size:40px;line-height:40px;opacity:.99}.gogo-load-css .gogocarto-container .marker-wrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper.BigSize{z-index:10000!important;-webkit-transform:scale(1.3,1.3);-moz-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);-o-transform:scale(1.3,1.3);transform:scale(1.3,1.3);bottom:5px!important}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:6px!important}}.gogo-load-css .gogocarto-container .marker-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .marker-wrapper .gogo-icon-marker{height:inherit;line-height:inherit;color:inherit;position:absolute;z-index:1;background-image:url(images/marker-shadow.png);background-position:8px;background-repeat:no-repeat;width:50px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container{position:absolute;top:-8px;z-index:3;font-size:14px;right:19px;color:#d9dad9}.gogo-load-css .gogocarto-container .iconInsideMarker.disabled,.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp{float:right}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2{font-size:12px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2:before{padding:2px 1px 2px 2px}.gogo-load-css .gogocarto-container .iconInsideMarker-wrapper{position:relative;left:7px;z-index:2;text-align:center;width:26px;height:26px;background-color:#DADADA;border-radius:50%;top:4px;font-size:18px;line-height:28px}.gogo-load-css .gogocarto-container :-moz-any(.iconInsideMarker-wrapper){top:3px}.gogo-load-css .gogocarto-container .iconInsideMarker{line-height:26px}.gogo-load-css .gogocarto-container .iconInsideMarker:before{line-height:inherit}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle{position:absolute;top:-7px;z-index:3;font-size:16px;right:-7px}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle:before{border-radius:50%;background-color:#F1F1F1}.gogo-load-css .gogocarto-container .gogo-icon-star-full:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .moreIconContainer{display:none;z-index:10;position:absolute;bottom:-10px;left:30px}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper{display:inline-block;margin-left:3px;bottom:10px;position:absolute;width:28px;height:28px;font-size:16px;line-height:26px;text-align:center;border:3px solid;border-radius:50%;z-index:10}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper .iconInsideMarker{line-height:22px}.gogo-load-css .gogocarto-container .halfHidden{opacity:.6}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper{right:-8px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper.BigSize{right:-4px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-marker{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .iconInsideMarker-wrapper{left:6px!important;width:25px;height:25px;top:9px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-name{bottom:47px;left:-50px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper{right:-35px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper.BigSize{right:-39px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-marker{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .iconInsideMarker-wrapper{left:11px!important;width:25px;height:25px;top:1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-name{bottom:47px;left:-10px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper{right:-13px;bottom:-1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper.BigSize{right:-10px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-marker{-webkit-transform:rotate(-25deg);-moz-transform:rotate(-25deg);-ms-transform:rotate(-25deg);-o-transform:rotate(-25deg);transform:rotate(-25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .iconInsideMarker-wrapper{right:6px!important;width:25px;height:25px;top:7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-name{bottom:51px;left:-44px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper{right:-30px;bottom:-2px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper.BigSize{right:-33px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-marker{-webkit-transform:rotate(25deg);-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-o-transform:rotate(25deg);transform:rotate(25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .iconInsideMarker-wrapper{left:9px!important;width:25px;height:25px;top:3px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-name{bottom:56px;left:-10px}.gogo-load-css .gogocarto-container .marker-cluster div{margin-left:5px;margin-top:5px;text-align:center;border-radius:50%;font-size:13px;font-weight:600;color:#fff;box-shadow:4px -2px 5px 0 rgba(167,167,167,.56)}.gogo-load-css .gogocarto-container .marker-cluster.halfHidden{opacity:.6!important}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div{width:34px;height:34px;background-color:rgba(243,165,48,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div{width:38px;height:38px;background-color:rgba(235,123,45,.92)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div{width:44px;height:44px;background-color:rgba(210,77,26,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogocarto-container #markerDirectionResult{text-align:center;position:relative;z-index:10000;width:auto;padding:.5rem;margin-top:-10px;font-size:.9rem}.gogo-load-css .gogocarto-container #markerDirectionResult .duration{font-weight:700}.gogo-load-css .gogocarto-container .arrow_box{position:relative;background:#eee;border:1px solid #a8b6a0}.gogo-load-css .gogocarto-container .arrow_box:after,.gogo-load-css .gogocarto-container .arrow_box:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.gogo-load-css .gogocarto-container .arrow_box:after{border-color:rgba(238,238,238,0);border-top-color:#eee;border-width:7px;margin-left:-7px}.gogo-load-css .gogocarto-container .arrow_box:before{border-color:rgba(168,182,160,0);border-top-color:#a8b6a0;border-width:8px;margin-left:-8px}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-in{font-size:18px!important;color:#3d3d3d}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-out{font-size:25px!important;font-weight:400;color:#3d3d3d;text-indent:0}.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-right:22px;margin-top:20px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{display:none}}.gogo-load-css .gogocarto-container #map-gogo-controls{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-gogo-controls{display:block;position:absolute;z-index:500;left:15px;top:12px}.gogo-load-css .gogocarto-container .show-as-list-button:after{content:"Afficher sous forme de liste"}}.gogo-load-css .gogocarto-container .show-directory-menu-button{left:15px;color:#fff}.gogo-load-css .gogocarto-container .show-directory-menu-button .arrow-right{display:inline-block;border:8px solid;border-color:transparent transparent transparent #eee}.gogo-load-css .gogocarto-container .show-directory-menu-button i{margin-right:5px!important}.gogo-load-css .gogocarto-container .show-as-list-button{background-color:#fff}.gogo-load-css .gogocarto-container .gogo-map-control{margin-right:15px;display:inline-block;line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;font-size:14px!important;padding:5px 10px;-webkit-box-shadow:2px 3px 1px rgba(0,0,0,.25);-moz-box-shadow:2px 3px 1px rgba(0,0,0,.25);box-shadow:2px 3px 1px rgba(0,0,0,.25);cursor:pointer;text-align:center;border:1px dashed #a5a5a5;border-radius:5px}.gogo-load-css .gogocarto-container .gogo-map-control:hover{cursor:pointer}.gogo-load-css .gogocarto-container .gogo-map-control i{font-size:1rem;float:left;line-height:1rem;padding-top:3px;margin-right:10px}.gogo-load-css .gogocarto-container #map-features-buttons{position:absolute;top:20px;z-index:500;right:20px;width:50px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-features-buttons{width:33px;top:100px}}.gogo-load-css .gogocarto-container .feature-button{position:relative;background-color:#fff;color:#3d3d3d;margin-bottom:13px;text-align:center;width:50px;border-radius:50%;height:50px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container .feature-button:hover{cursor:pointer;background-color:#f4f4f4}.gogo-load-css .gogocarto-container .feature-button i{font-size:22px;line-height:55px}.gogo-load-css .gogocarto-container .feature-button i.gogo-icon-list{font-size:18px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .feature-button{width:33px;height:33px;border-radius:4px}.gogo-load-css .gogocarto-container .feature-button i{font-size:18px;line-height:39px}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:.5rem}}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel{z-index:10000;background-color:transparent;color:#888}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel:hover{background-color:transparent;color:#616161}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel i{font-size:16px;line-height:44px;margin-left:2px}.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn i{font-size:14px}@media screen and (max-width:600px){.gogo-load-css .gogocarto-container .feature-button#change-layers,.gogo-load-css .gogocarto-container .feature-button#export-iframe-btn,.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn{display:none}}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container .feature-button#geolocalize-btn{display:none}}.gogo-load-css .gogocarto-container .leaflet-control-layers-toggle{display:none}.gogo-load-css .gogocarto-container .leaflet-control-layers{padding:0!important;display:none;position:relative;z-index:600;margin-right:19px!important;margin-top:15px!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-list{display:block!important;padding:5px 25px 10px 15px;position:relative!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-selector:checked+span{font-weight:700}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label{text-transform:uppercase;padding-top:4px;line-height:1.4rem;border-bottom:1px dashed #ccc}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:hover{background-color:#f4f4f4;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:last-child{border:none}.gogo-load-css .gogocarto-container #element-info-bar{height:0;z-index:600;position:absolute;will-change:height;-webkit-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);-moz-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);background-color:#F7F7F7}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom{right:0!important;bottom:0!important;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside{top:0;right:0;height:100%!important;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s;overflow-y:visible;-webkit-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);-moz-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);box-shadow:0 6px 9px 2px rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #element-info-bar.display-aside.with-search-result-header{top:3rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-main-icon,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .star-names-icons{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close{padding-left:1rem;color:#CECECE!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close:hover{color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails{display:block!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails.tabs{display:flex!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .hideOnLargeScreen{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .element-main-icon{display:none}.gogo-load-css .gogocarto-container #element-info-bar .element-item .star-names-icons,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .element-main-icon{display:block}.gogo-load-css .gogocarto-container #element-info-bar #element-info .moreDetails,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .star-names-icons{display:none}.gogo-load-css .gogocarto-container #element-info-bar #element-info{margin-bottom:3rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close{float:right;margin:-.9rem -1.5rem -1rem 0;font-size:1.2rem;padding:1rem 1.5rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-map{position:relative;z-index:10;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;-webkit-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);-moz-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:block;position:relative;width:100%;line-height:3.5rem;text-align:right;padding:0 1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:none!important}}@media (min-width:900px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:3rem;padding-right:calc(3rem + 20px)}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header #list-title-shadow-bottom{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{float:left;z-index:200;height:100%;text-decoration:underline}@media only screen and (min-width:1201px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:9rem!important}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{color:inherit!important;height:2rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:2rem}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:after{content:"Retour à la carte"}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:block;float:left;position:relative;margin-right:2rem;margin-left:-1rem;width:auto;top:.6rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:10rem;padding-right:calc(10rem + 20px)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{position:absolute;top:12px;left:15px;margin-left:0;bottom:initial;width:auto}}.gogo-load-css .gogocarto-container .no-result-message img{margin-top:1rem;width:350px;padding:0 2rem;border-radius:100px}.gogo-load-css .gogocarto-container #directory-content-list{display:none;z-index:650;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;width:100%;overflow:auto;border-left:none;height:100%}.gogo-load-css .gogocarto-container #directory-content-list .elements-container{position:relative;padding-bottom:100px;height:100%;width:100%;overflow-y:scroll;margin:0;padding-left:0;padding-right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{height:calc(100% - 3.5rem)}}@media only screen and (min-width:901px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:3rem;padding-right:3rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:10rem;padding-right:10rem}}.gogo-load-css .gogocarto-container #directory-content-list .elements-container.custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-geocoders::-webkit-scrollbar{width:14px}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .bottom-gradient{position:fixed;height:5rem;bottom:0;width:100%;z-index:700;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff', GradientType=0 )}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .no-result-message{text-align:center;margin-top:3rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item .gogo-icon-close{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item .distance{margin-right:0;margin-left:6px}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location{display:inline-block;float:right;margin-left:1rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .expandLabel{background-color:transparent!important}.gogo-load-css .gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #abaaaa;background-color:#fff}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout,.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li{margin:0}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li.active{margin:1rem 0}.gogo-load-css .gogocarto-container #directory-content-list .spinner-loader{-webkit-box-ordinal-group:1000000;-moz-box-ordinal-group:1000000;-ms-flex-order:1000000;-webkit-order:1000000;order:1000000}.gogo-load-css .gogocarto-container #directory-content-list .info-bar-tabs,.gogo-load-css .gogocarto-container #directory-content-list .menu-element{position:relative;display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .menu-element{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .info-bar-tabs{display:flex}.gogo-load-css .gogocarto-container #directory-content-list .img-overlay{max-height:20rem;overflow:hidden}.gogo-load-css .gogocarto-container #directory-content-list .img-container{max-height:20rem;background-color:#F7F7F7}.gogo-load-css .gogocarto-container #gogo-controls-mobile{position:absolute;z-index:900;left:15px;top:15px;right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none!important}}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button{display:inline-block;margin-right:15px}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.gogo-bg-primary{color:#fff}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-list-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-map-button{float:right;display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none}}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .show-as-map-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile.map .show-as-list-button{display:block}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .feature-button{-webkit-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);-moz-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);box-shadow:1px 2px 8px 1px rgba(0,0,0,.4)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile{display:none;z-index:10;position:relative;background-color:#fff;margin:15px;border-radius:3px;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-container{height:52px;padding:0}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar{height:100%;padding:0 4rem}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon{font-size:22px;line-height:57px;height:56px;width:56px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-bar-icon{left:-2px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-geolocalize{right:0;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-icon{left:3px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-geolocalize{right:5px;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-options{display:block!important;padding:0 15px 12px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile #search-spinner-loader .spinner-layer{border-color:#fff!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-no-result{color:inherit;font-size:13px;padding-bottom:1rem}.gogo-load-css .gogocarto-container #search-overlay-mobile{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000}.gogo-load-css .gogocarto-container #search-overlay-mobile .overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;background-color:rgba(0,0,0,.5)}.gogo-load-css .gogocarto-container .search-results{background-color:rgba(0,0,0,.4);position:relative;line-height:3rem;top:0;z-index:800;width:100%;padding:0 0 0 10px;-webkit-transition:background-color .5s;-moz-transition:background-color .5s;-o-transition:background-color .5s;-ms-transition:background-color .5s;transition:background-color .5s}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results{position:relative;padding-left:28px}}.gogo-load-css .gogocarto-container .search-results .btn-close{position:absolute;margin:0;right:0;top:3px;padding:0 1rem;z-index:50;color:#fff}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results .btn-close{right:12px}}.gogo-load-css .gogocarto-container .search-results .btn-close:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .search-results .search-result-label{color:#fff;font-weight:700}.gogo-load-css .gogocarto-container .search-results .search-result-value{font-style:italic}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container{height:3.5rem;padding:.7rem .7rem 0;text-align:center;margin:0}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon{position:absolute;font-size:1.2rem;color:#777;height:2rem;line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:hover{cursor:pointer}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:1.2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:1.4rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{font-size:16px;padding:0 2.3rem 0 2.2rem;box-shadow:none!important;margin:0;text-align:left;font-weight:700;height:2rem;width:100%;border:none!important;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (min-width:850px){.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{text-transform:uppercase;font-size:.8rem}}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar.invalid{border-color:#B90303!important}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options{padding:0 .7rem .7rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label{color:#ececec;font-size:.9rem;line-height:2.2rem;padding-left:27px;margin-right:13px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:before{border:2px solid #e0e0e0;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:after{border:2px solid #dedede;background-color:#dedede;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options .search-action-btn{float:right;font-size:.85rem;height:1.8rem;line-height:1.8rem;padding:0 10px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader{height:12px;width:12px;top:1px;margin-left:5px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .spinner-layer{border-color:#5d5d5d}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-no-result{color:#fff;padding-bottom:.7rem;text-decoration:underline;text-align:center;font-weight:700}.gogo-load-css .gogocarto-container #directory-menu-main-container .search-action-btn{background-color:#ddd;color:#272626}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options{padding-left:7px}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options label.search-option-radio-label{margin-right:0}.gogo-load-css .gogocarto-container .element-item{list-style-type:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container .element-item #element-info-bar.display-aside .menu-element{height:auto}.gogo-load-css .gogocarto-container .element-item .menu-element{z-index:10;position:absolute;bottom:0;text-align:center;width:100%}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item-text{display:none}.gogo-load-css .gogocarto-container .element-item .menu-element:not(.full-text){height:3rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding:.3rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 10px -.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding-top:0}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 6px -.9rem}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 .8rem -.5rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{display:inline;text-transform:uppercase;font-size:.75rem;line-height:3rem;margin-left:.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:10px}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:.8rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text.favorite{color:#ffab00}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;color:#CECECE;margin:0 1rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item a{color:inherit}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:20px;float:left}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:18px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.8rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .gogo-icon-star-full:before{padding:2px 2px 3px;border:none}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item.item-stamp.filled{color:#ffab00;font-weight:700}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 .8rem;position:relative;line-height:3rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:22px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:20px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:3rem}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 1.6rem}}.gogo-load-css .gogocarto-container .element-item .interactive-section>div{position:relative}.gogo-load-css .gogocarto-container .element-item .interactive-section .result-message{text-align:center;font-weight:700;color:#fff;line-height:1.7rem;padding:.6rem 0}.gogo-load-css .gogocarto-container .element-item #directory-content-list .interactive-section{display:none}.gogo-load-css .gogocarto-container .element-item #directory-content-list .element-item.active .interactive-section{display:block}.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-moderation,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-moderation{color:#fff;font-size:20px;padding-top:3px;position:absolute}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention{display:none}.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{margin-left:0!important}}@media (max-width:460px){.gogo-load-css .gogocarto-container .element-item .moderation-section .long-text,.gogo-load-css .gogocarto-container .element-item .vote-section .long-text{display:none}}@media (max-width:360px){.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{opacity:0}}.gogo-load-css .gogocarto-container .element-item .moderation-section .text,.gogo-load-css .gogocarto-container .element-item .vote-section .text{margin-left:2.2rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .btn-vote-more-info,.gogo-load-css .gogocarto-container .element-item .vote-section .btn-vote-more-info{line-height:1.2rem;position:absolute;top:14px;right:90px;padding:0;font-size:.85rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .action-btn,.gogo-load-css .gogocarto-container .element-item .vote-section .action-btn{position:absolute;right:0;top:8px;margin:0;background-color:#dedede;color:#272626;font-size:.85rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment{color:#fff;border-color:#ccc!important;height:2.2rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-webkit-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-webkit-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-ms-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-ms-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .validation-process-info:hover{cursor:help;border-bottom:1px dashed;border-color:inherit;text-decoration:none}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description:hover,.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs .tab a{cursor:pointer}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .strong,.gogo-load-css .gogocarto-container .element-item .collapsible-header a{text-decoration:underline}.gogo-load-css .gogocarto-container .element-item #element-info-bar.small-width .btn-vote-more-info{display:none}.gogo-load-css .gogocarto-container .element-item .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.gogo-load-css .gogocarto-container .element-item .label-danger{background-color:#d9534f}.gogo-load-css .gogocarto-container .element-item .label-success{background-color:#00a65a}.gogo-load-css .gogocarto-container .element-item .label-default{background-color:#d2d6de;color:#444}.gogo-load-css .gogocarto-container .element-item .element-item .contributions{border:none;box-shadow:none}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header{color:inherit;background-color:transparent;border:none;box-shadow:none;line-height:2rem;padding:15px 0;border-bottom:1px solid grey}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-status{float:left}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-updated-at{float:right}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-body{color:inherit}.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs{z-index:40}.gogo-load-css .gogocarto-container .element-item .item-container{border-bottom:1px dashed grey;padding-bottom:5px;margin-bottom:5px}.gogo-load-css .gogocarto-container .element-item .vote-report-item{line-height:1.5rem!important;padding:10px}.gogo-load-css .gogocarto-container .element-item .pending-contribution{margin-bottom:-.9rem;line-height:1.5rem!important;margin-top:.8rem;padding:10px}.gogo-load-css .gogocarto-container .element-item .vote-report-comment{font-style:italic}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content{display:none;padding-right:10px;font-size:.9em}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content .vote-report-item{padding:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-header{padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-header i{margin-right:0;padding-left:.3rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{position:relative;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;line-height:2rem;padding:.5rem 0;font-weight:700}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{padding:1rem 1rem .5rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .distance{float:right;margin-left:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .location{display:none}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.5rem;padding:0;margin-bottom:.5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{padding:0 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values{font-weight:700;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values .option-value.disabled{color:#9C9C9C;font-weight:400}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description{margin-bottom:.7rem;text-align:justify}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description p{margin:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body{background-color:transpraent;padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#F7F7F7;padding:0 0 1rem .5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{padding:0 0 1rem 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-body h2{font-weight:700!important;font-size:1rem!important;line-height:110%!important;margin:.5rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row{margin-bottom:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .description{text-align:justify;line-height:1.5;padding-right:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description{display:inline;text-decoration:underline}.gogo-load-css .gogocarto-container .element-item .collapsible-body .send-mail-btn{font-size:.8rem;margin:.4rem 0 .5rem;line-height:1.8rem;height:1.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionInfos,.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionOpenHours{line-height:2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionlongDescription{padding-bottom:0;padding-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .tags-container{margin-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .gogo-tag{margin-right:8px;border-radius:5px;background-color:#dcdcdc;padding:4px 10px;display:inline-block;margin-bottom:8px}.gogo-load-css .gogocarto-container .element-item .img-container{position:absolute;width:100%;top:0;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-container .images-carousel{cursor:pointer!important;margin:0}.gogo-load-css .gogocarto-container .element-item .img-container .gogo-img{width:100%;height:auto}.gogo-load-css .gogocarto-container .element-item .img-overlay{position:relative;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn{display:none;cursor:pointer!important;height:100%;position:absolute;color:#fff;padding-top:17%!important;width:5rem;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;-ms-transition:opacity .5s;transition:opacity .5s;opacity:.7}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn:hover{opacity:1}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev{background-image:linear-gradient(to right,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 30px 0 .5rem;left:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev .icon{left:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next{background-image:linear-gradient(to left,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 .5rem 0 30px;right:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next .icon{right:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn .icon{font-size:3rem;position:absolute;top:calc(50% - 1.5rem);margin:0;text-shadow:0 1px 4px #757575}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-clickable-area{height:100%;position:absolute;left:6rem;right:6rem;cursor:pointer!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section.categories h3{margin-bottom:90%}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-name{padding-top:.6rem;padding-bottom:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper+.category-name{padding-top:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row+.category-wrapper .category-name{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper{margin-top:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper:not(:first-child){margin-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{margin-left:1.2rem;padding-left:.5rem;border-left:1px dotted #c3c3c3}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper h3.category-name{font-size:85%;padding-bottom:.4rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .strong{text-decoration:none!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-name.main-option{font-weight:700}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option{font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option span.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description{padding:.5rem;font-style:italic;font-size:.9rem;color:#5d5d5d}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{line-height:2.5rem;padding-right:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline{display:inline-block;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.last):after{content:","}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.first) .icon{margin-left:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline .icon{margin-right:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon{font-size:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{font-size:1.1rem;padding-top:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.gogo-icon-marker{font-size:1.1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.disabled{color:#BFBFBF!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.disabled{color:#9C9C9C!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.6rem}.gogo-load-css .gogocarto-container .element-item h3{font-size:.85rem;text-transform:uppercase;font-weight:600;padding-left:.75rem;margin-bottom:0;padding-top:1.5rem;margin-top:0}.gogo-load-css .gogocarto-container .element-item .info-bar-divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css .gogocarto-container .element-item .btn,.gogo-load-css .gogocarto-container .element-item .btn-large{height:2rem;line-height:2rem;padding:0 1rem;margin-bottom:1rem}.gogo-load-css .gogocarto-container .element-item span.added{color:#3a772c}.gogo-load-css .gogocarto-container .element-item span.removed{text-decoration:line-through;margin-right:5px;color:#b57e7e}.gogo-load-css .gogocarto-container .element-item a>span.equals{color:rgba(0,0,0,.87)!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .expandLabel{font-weight:700}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel:after{content:"Moins d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{position:absolute;color:#fff;z-index:2;right:0;width:auto;margin-right:1.7rem;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s;padding:8px 25px;bottom:-15px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{padding:.3rem 1.2rem;bottom:-1rem}}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big:hover{color:#fff;box-shadow:0 6px 15px 0 rgba(0,0,0,.2),0 5px 17px 0 rgba(0,0,0,.19)}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:after{content:"Plus d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel,.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:not(.transform-big){background-color:transparent!important}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header{position:relative;z-index:2}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header span.added{color:#3ab33a}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .collapsible-body-main-container{height:100%;width:100%;position:absolute;top:0;overflow-y:auto}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-container,.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-overlay{height:33%;background-color:transparent}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header{background-color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a{color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a:hover{color:#000}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{border:none;color:#fff;cursor:default;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a{color:#fff}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a:hover{color:#e6e6e6}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{position:relative;line-height:2.5rem;font-weight:400}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .distance{font-size:1.3rem;color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:1.5rem;margin-top:-.8rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-more{margin-bottom:1rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.8rem;text-align:left}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{width:100%!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description{margin-bottom:0}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-body{height:100%;overflow-y:auto}.gogo-load-css .gogocarto-container #modal-directions-fail.modal,.gogo-load-css .gogocarto-container #modal-pick-address.modal{position:absolute}.gogo-load-css .gogocarto-container #modal-directions-fail.modal .modal-footer,.gogo-load-css .gogocarto-container #modal-pick-address.modal .modal-footer{background-color:#444}.gogo-load-css .gogocarto-container .simple-modal.modal{z-index:2000;max-width:1200px;top:30%!important;max-height:80%;height:auto;position:absolute!important}.gogo-load-css .gogocarto-container .simple-modal.modal h5{margin-bottom:.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content{padding-bottom:.8rem!important}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content .modal-error-msg{display:none;color:#B90303}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer{padding-right:2.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action{color:#fff;font-size:.9rem;padding:0 25px}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large{background-color:#de5a5f}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large:hover,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn:hover{background-color:#ec787d}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal:focus{border-color:#4A7874;box-shadow:none}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::-moz-selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .page-modal .btn-back{float:left;font-size:2rem;line-height:4rem;padding:0 2rem;margin-left:-2rem}.gogo-load-css .gogocarto-container .modal.action-modal h5{text-align:center;margin-bottom:1.5rem;line-height:2.5rem}.gogo-load-css .gogocarto-container .modal.action-modal label.small-label{display:block;font-size:.85rem;font-weight:700;margin-top:1rem;margin-bottom:-1.8rem}.gogo-load-css .gogocarto-container .modal.action-modal .elementName{font-style:italic;font-size:1.5rem}.gogo-load-css .gogocarto-container .modal.action-modal .error{display:none;color:#B90303}.gogo-load-css .gogocarto-container .modal.action-modal .option-radio-label{margin-top:.5rem;display:block!important;height:auto!important}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn{display:none}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper{height:15px;width:15px;top:1px}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .spinner-layer{border-color:#fff}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .modal.action-modal .loader-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.35}.gogo-load-css .gogocarto-container #modal-iframe .subtitle{text-align:center;font-style:italic;margin-bottom:1.5rem}.gogo-load-css .gogocarto-container #modal-iframe label{font-size:.8rem;width:100%}.gogo-load-css .gogocarto-container #modal-iframe label:not(:last-child){margin-bottom:15px}.gogo-load-css .gogocarto-container #modal-iframe label strong{font-weight:700}.gogo-load-css .gogocarto-container #modal-iframe .iframe-input{width:80px;border:1px solid #969696;border-radius:5px;height:2rem;font-size:.9rem;font-family:"Lucida Console",Monaco,monospace;margin:1rem;text-align:center;background-color:#f5f5f5}.gogo-load-css .gogocarto-container #modal-iframe #iframe-code{width:100%;padding:1rem;background-color:#f1f1f1;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:none;font-family:"Lucida Console",Monaco,monospace;border:1px dashed #c1c1c1;margin-bottom:1rem}.gogo-load-css .gogocarto-container #modal-image{width:90%}.gogo-load-css .gogocarto-container #modal-image .modal-content{padding:0;overflow:auto}.gogo-load-css .gogocarto-container #modal-image img{width:100%}.gogo-load-css .gogocarto-container .shadow-bottom{width:100%;margin-right:0;height:8px;position:absolute;z-index:4;left:0;opacity:1;border-top:1px solid rgba(0,0,0,.6);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.4)),to(rgba(0,0,0,0)));-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,0)))}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:12px}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:3px solid #f6f6f6;background-color:#C5C5C5}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:7px}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:#c3c3c3}.gogo-load-css .gogocarto-container #gogo-custom-popup{position:absolute;bottom:20px;z-index:500;right:10px;box-shadow:0 2px 6px rgba(0,0,0,.3);padding:5px 45px 5px 30px;line-height:1.7;max-width:400px;color:#fff;font-size:.9rem;border-radius:5px}[class*=" gogo-icon-"]:before,[class^=gogo-icon-]:before,[data-icon]:before{font-family:gogocarto!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gogo-load-css .gogocarto-container #gogo-custom-popup #btn-close-custom-popup{font-size:1rem;cursor:pointer;position:absolute;right:18px;margin:0;top:14px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container{font-size:12px}}.gogo-load-css .gogocarto-container #directory-menu{position:absolute;height:100%}.gogo-load-css .gogocarto-container #directory-content{position:relative;background-color:#9e9e9e;overflow:hidden;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container h1{font-size:2.5rem;text-align:center;margin-top:.5rem}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container h1{font-size:3.5rem}}@font-face{font-family:gogocarto;src:url(fonts/gogocarto.eot);src:url(fonts/gogocarto.eot?#iefix) format("embedded-opentype"),url(fonts/gogocarto.woff) format("woff"),url(fonts/gogocarto.ttf) format("truetype"),url(fonts/gogocarto.svg#gogocarto) format("svg");font-weight:400;font-style:normal}[data-icon]:before{content:attr(data-icon)}.gogo-icon-marker:before{content:"\61"}.gogo-icon-account-circle:before{content:"\62"}.gogo-icon-delete:before{content:"\63"}.gogo-icon-description:before{content:"\64"}.gogo-icon-star-full:before{content:"\65"}.gogo-icon-icon-copy-hours:before{content:"\66"}.gogo-icon-starcircle:before{content:"\67"}.gogo-icon-no-eye:before{content:"\68"}.gogo-icon-eye:before{content:"\69"}.gogo-icon-attention:before{content:"\6a"}.gogo-icon-mail:before{content:"\6b"}.gogo-icon-marker-symbol:before{content:"\6c"}.gogo-icon-phone:before{content:"\6d"}.gogo-icon-add-circle:before{content:"\6e"}.gogo-icon-plus-circle-1:before{content:"\6f"}.gogo-icon-clear:before{content:"\70"}.gogo-icon-redo:before{content:"\71"}.gogo-icon-day:before{content:"\72"}.gogo-icon-exclamation-1:before{content:"\73"}.gogo-icon-edit:before{content:"\74"}.gogo-icon-menu:before{content:"\75"}.gogo-icon-directions:before{content:"\77"}.gogo-icon-layers:before{content:"\78"}.gogo-icon-locate:before{content:"\7a"}.gogo-icon-material-design-icons-1:before{content:"\41"}.gogo-icon-people:before{content:"\42"}.gogo-icon-add-element:before{content:"\43"}.gogo-icon-internet:before{content:"\44"}.gogo-icon-star-empty:before{content:"\45"}.gogo-icon-share-alt:before{content:"\46"}.gogo-icon-expand:before{content:"\47"}.gogo-icon-angle-right:before{content:"\48"}.gogo-icon-arrow-circle-down:before{content:"\49"}.gogo-icon-facebook:before{content:"\4a"}.gogo-icon-external-link:before{content:"\4b"}.gogo-icon-gplus:before{content:"\4c"}.gogo-icon-home:before{content:"\4d"}.gogo-icon-info:before{content:"\4e"}.gogo-icon-list:before{content:"\4f"}.gogo-icon-lock:before{content:"\50"}.gogo-icon-plus-circle:before{content:"\51"}.gogo-icon-search:before{content:"\52"}.gogo-icon-close:before{content:"\53"}.gogo-icon-user-plus:before{content:"\54"}.gogo-icon-users:before{content:"\55"}.gogo-icon-unlock:before{content:"\56"}.gogo-icon-yahoo:before{content:"\57"}.gogo-icon-twitter:before{content:"\58"}.gogo-icon-partner-3:before{content:"\59"}.gogo-icon-map:before{content:"\5a"}.gogo-icon-ellipsis:before{content:"\30"}.gogo-icon-moderation:before{content:"\79"}.gogo-icon-filters-1:before{content:"\37"}.gogo-icon-vote:before{content:"\76"}.gogo-icon-marker-simple-1:before{content:"\31"}.gogo-icon-marker-simple:before{content:"\32"}.gogo-icon-stamp-1:before{content:"\36"}.gogo-icon-stamp-2:before{content:"\38"}.gogo-icon-communs:before{content:"\34"}.gogo-icon-printemps:before{content:"\33"}.gogo-icon-chevron-left:before{content:"\35"}.gogo-icon-chevron-right:before{content:"\39"} \ No newline at end of file diff --git a/dist/gogocarto.min.css.gz b/dist/gogocarto.min.css.gz index 7cae95304638cd6a65484c6b66f7f0acc39f305b..66848a22be81b0b0599e9734c14440cd9dfa1081 100755 GIT binary patch literal 28656 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%0Am! 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 MKc1c`EcQMF05xgNdjJ3c literal 28575 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._select(1)},_createClickListener:function(e){var t=this._resultSelected(e);return n.bind(function(){this._elem.blur(),t()},this)},_resultSelected:function(e){return n.bind(function(){this.close(),this._elem.value=e.name,this._lastCompletedText=e.name,this._selectFn(e)},this)},_keyPressed:function(e){var t;return this._isOpen&&13===e.keyCode&&this._selection?(t=parseInt(this._selection.getAttribute("data-result-index"),10),this._resultSelected(this._results[t])(),void n.DomEvent.preventDefault(e)):13===e.keyCode?void this._complete(this._resultFn,!0):this._autocomplete&&document.activeElement===this._elem?(this._timer&&clearTimeout(this._timer),void(this._timer=setTimeout(n.Util.bind(function(){this._complete(this._autocomplete)},this),this.options.timeout))):void this._unselect()},_select:function(e){var t=this._selection;t&&(n.DomUtil.removeClass(t.firstChild,"leaflet-routing-geocoder-selected"),t=t[e>0?"nextSibling":"previousSibling"]),t||(t=this._resultTable[e>0?"firstChild":"lastChild"]),t&&(n.DomUtil.addClass(t.firstChild,"leaflet-routing-geocoder-selected"),this._selection=t)},_unselect:function(){this._selection&&n.DomUtil.removeClass(this._selection.firstChild,"leaflet-routing-geocoder-selected"),delete this._selection},_keyDown:function(e){if(this._isOpen)switch(e.keyCode){case 27:return this.close(),void n.DomEvent.preventDefault(e);case 38:return this._select(-1),void n.DomEvent.preventDefault(e);case 40:return this._select(1),void n.DomEvent.preventDefault(e)}},_complete:function(e,t){function n(e){this._lastCompletedText=o,t&&1===e.length?this._resultSelected(e[0])():this._setResults(e)}var o=this._elem.value;o&&(o!==this._lastCompletedText?e(o,n,this):t&&n.call(this,this._results))}})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],11:[function(e,t,n){(function(n){!function(){"use strict";var o="undefined"!=typeof window?window.L:void 0!==n?n.L:null,i=e("./itinerary"),r=e("./line"),a=e("./plan"),s=e("./osrm-v1");t.exports=i.extend({options:{fitSelectedRoutes:"smart",routeLine:function(e,t){return new r(e,t)},autoRoute:!0,routeWhileDragging:!1,routeDragInterval:500,waypointMode:"connect",showAlternatives:!1,defaultErrorHandler:function(e){console.error("Routing error:",e.error)}},initialize:function(e){o.Util.setOptions(this,e),this._router=this.options.router||new s(e),this._plan=this.options.plan||new a(this.options.waypoints,e),this._requestCount=0,i.prototype.initialize.call(this,e),this.on("routeselected",this._routeSelected,this),this.options.defaultErrorHandler&&this.on("routingerror",this.options.defaultErrorHandler),this._plan.on("waypointschanged",this._onWaypointsChanged,this),e.routeWhileDragging&&this._setupRouteDragging(),this.options.autoRoute&&this.route()},_onZoomEnd:function(){if(this._selectedRoute&&this._router.requiresMoreDetail){var e=this._map;this._router.requiresMoreDetail(this._selectedRoute,e.getZoom(),e.getBounds())&&this.route({callback:o.bind(function(e,t){var n;if(!e){for(n=0;n0)for(var t=0,n=this._alternatives.length;te.x/5||n.y>e.y/5)&&this._waypointsInViewport()}catch(e){return!1}},_waypointsInViewport:function(){var e,t,n=this.getWaypoints();try{e=this._map.getBounds()}catch(e){return!1}for(t=0;t
"+e.message+"
=1e3?{value:l(e/1609.344,t),unit:a.miles}:{value:l(i,t),unit:a.yards}):(n=l(e,t),r={value:n>=1e3?n/1e3:n,unit:n>=1e3?a.kilometers:a.meters}),s&&(r.value=r.value.toFixed(-t)),o.Util.template(this.options.distanceTemplate,r)},_round:function(e,t){var n=t||this.options.roundingSensitivity,o=Math.pow(10,(Math.floor(e/n)+"").length-1),i=Math.floor(e/o),r=i>5?o:o/2;return Math.round(e/r)*r},formatTime:function(e){var t=this.options.unitNames||this._localization.localize("units");return e=30*Math.round(e/30),e>86400?Math.round(e/3600)+" "+t.hours:e>3600?Math.floor(e/3600)+" "+t.hours+" "+Math.round(e%3600/60)+" "+t.minutes:e>300?Math.round(e/60)+" "+t.minutes:e>60?Math.floor(e/60)+" "+t.minutes+(e%60!=0?" "+e%60+" "+t.seconds:""):e+" "+t.seconds},formatInstruction:function(e,t){return void 0===e.text?this.capitalize(o.Util.template(this._getInstructionTemplate(e,t),o.extend({},e,{exitStr:e.exit?this._localization.localize("formatOrder")(e.exit):"",dir:this._localization.localize(["directions",e.direction]),modifier:this._localization.localize(["directions",e.modifier])}))):e.text},getIconName:function(e,t){switch(e.type){case"Head":if(0===t)return"depart";break;case"WaypointReached":return"via";case"Roundabout":return"enter-roundabout";case"DestinationReached":return"arrive"}switch(e.modifier){case"Straight":return"continue";case"SlightRight":return"bear-right";case"Right":return"turn-right";case"SharpRight":return"sharp-right";case"TurnAround":case"Uturn":return"u-turn";case"SharpLeft":return"sharp-left";case"Left":return"turn-left";case"SlightLeft":return"bear-left"}},capitalize:function(e){return e.charAt(0).toUpperCase()+e.substring(1)},_getInstructionTemplate:function(e,t){var n="Straight"===e.type?0===t?"Head":"Continue":e.type,o=this._localization.localize(["instructions",n]);return o||(o=[this._localization.localize(["directions",n])," "+this._localization.localize(["instructions","Onto"])]),o[0]+(o.length>1&&e.road?o[1]:"")}})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./localization":19}],14:[function(e,t,n){(function(n){!function(){"use strict";function o(e){e.setSelectionRange?e.setSelectionRange(0,9999):e.select()}var i="undefined"!=typeof window?window.L:void 0!==n?n.L:null,r=e("./autocomplete"),a=e("./localization");t.exports=i.Class.extend({includes:i.Mixin.Events,options:{createGeocoder:function(e,t,n){var o=i.DomUtil.create("div","leaflet-routing-geocoder"),r=i.DomUtil.create("input","",o),a=n.addWaypoints?i.DomUtil.create("span","leaflet-routing-remove-waypoint",o):void 0;return r.disabled=!n.addWaypoints,{container:o,input:r,closeButton:a}},geocoderPlaceholder:function(e,t,n){var o=new a(n.options.language).localize("ui");return 0===e?o.startPlaceholder:e0&&e[0].center.distanceTo(n.latLng){time} ({distance})

{name}

',timeTemplate:"{time}",containerClassName:"",alternativeClassName:"",minimizedClassName:"",itineraryClassName:"",totalDistanceRoundingSensitivity:-1,show:!0,collapsible:void 0,collapseBtn:function(e){},collapseBtnClass:"leaflet-routing-collapse-btn"},initialize:function(e){o.setOptions(this,e),this._formatter=this.options.formatter||new i(this.options),this._itineraryBuilder=this.options.itineraryBuilder||new r({containerClassName:this.options.itineraryClassName})},onAdd:function(e){var t=this.options.collapsible;return t=t||void 0===t&&e.getSize().x<=640,this._container=o.DomUtil.create("div","leaflet-routing-container leaflet-bar "+(this.options.show?"":"leaflet-routing-container-hide ")+(t?"leaflet-routing-collapsible ":"")+this.options.containerClassName),this._altContainer=this.createAlternativesContainer(),this._container.appendChild(this._altContainer),o.DomEvent.disableClickPropagation(this._container),o.DomEvent.addListener(this._container,"mousewheel",function(e){o.DomEvent.stopPropagation(e)}),t&&this.options.collapseBtn(this),this._container},onRemove:function(){},createAlternativesContainer:function(){return o.DomUtil.create("div","leaflet-routing-alternatives-container")},setAlternatives:function(e){var t,n,o;for(this._clearAlts(),this._routes=e,t=0;t0?" leaflet-routing-alt-minimized "+this.options.minimizedClassName:"")),i=this.options.summaryTemplate,r=o.extend({name:e.name,distance:this._formatter.formatDistance(e.summary.totalDistance,this.options.totalDistanceRoundingSensitivity),time:this._formatter.formatTime(e.summary.totalTime)},e);return n.innerHTML="function"==typeof i?i(r):o.Util.template(i,r),o.DomEvent.addListener(n,"click",this._onAltClicked,this),this.on("routeselected",this._selectAlt,this),n.appendChild(this._createItineraryContainer(e)),n},_clearAlts:function(){for(var e=this._altContainer;e&&e.firstChild;)e.removeChild(e.firstChild);this._altElements=[]},_createItineraryContainer:function(e){var t,n,o,i,r,a,s=this._itineraryBuilder.createContainer(),l=this._itineraryBuilder.createStepsContainer();for(s.appendChild(l),t=0;t=0;n--)(o=e.distanceTo(this._route.coordinates[n]))this.options.missingRouteTolerance&&this._addSegment([t,o],this.options.missingRouteStyles)},_addSegment:function(e,t,o){var i,r;for(i=0;i=0&&t[n]>e;)n--;return n},_onLineTouched:function(e){var t=this._findNearestWpBefore(this._findClosestRoutePoint(e.latlng));this.fire("linetouched",{afterIndex:t,latlng:e.latlng})},_getWaypointIndices:function(){return this._wpIndices||(this._wpIndices=this._route.waypointIndices||this._findWaypointIndices()),this._wpIndices}})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{}],19:[function(e,t,n){!function(){"use strict";var e={directions:{N:"norte",NE:"noreste",E:"este",SE:"sureste",S:"sur",SW:"suroeste",W:"oeste",NW:"noroeste",SlightRight:"leve giro a la derecha",Right:"derecha",SharpRight:"giro pronunciado a la derecha",SlightLeft:"leve giro a la izquierda",Left:"izquierda",SharpLeft:"giro pronunciado a la izquierda",Uturn:"media vuelta"},instructions:{Head:["Derecho {dir}"," sobre {road}"],Continue:["Continuar {dir}"," en {road}"],TurnAround:["Dar vuelta"],WaypointReached:["Llegó a un punto del camino"],Roundabout:["Tomar {exitStr} salida en la rotonda"," en {road}"],DestinationReached:["Llegada a destino"],Fork:["En el cruce gira a {modifier}"," hacia {road}"],Merge:["Incorpórate {modifier}"," hacia {road}"],OnRamp:["Gira {modifier} en la salida"," hacia {road}"],OffRamp:["Toma la salida {modifier}"," hacia {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," hacia {road}"],Onto:"hacia {road}"},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Inicio",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Destino"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}};L.Routing=L.Routing||{};var n=L.Class.extend({initialize:function(e){this._langs=L.Util.isArray(e)?e:[e,"en"];for(var t=0,o=this._langs.length;t=20?e+"ste":e+"de"},ui:{startPlaceholder:"Vertrekpunt",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Bestemming"}},fr:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ouest",W:"ouest",NW:"nord-ouest"},instructions:{Head:["Tout droit au {dir}"," sur {road}"],Continue:["Continuer au {dir}"," sur {road}"],SlightRight:["Légèrement à droite"," sur {road}"],Right:["A droite"," sur {road}"],SharpRight:["Complètement à droite"," sur {road}"],TurnAround:["Faire demi-tour"], SharpLeft:["Complètement à gauche"," sur {road}"],Left:["A gauche"," sur {road}"],SlightLeft:["Légèrement à gauche"," sur {road}"],WaypointReached:["Point d'étape atteint"],Roundabout:["Au rond-point, prenez la {exitStr} sortie"," sur {road}"],DestinationReached:["Destination atteinte"]},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Départ",viaPlaceholder:"Intermédiaire {viaNumber}",endPlaceholder:"Arrivée"}},it:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-ovest",W:"ovest",NW:"nord-ovest"},instructions:{Head:["Dritto verso {dir}"," su {road}"],Continue:["Continuare verso {dir}"," su {road}"],SlightRight:["Mantenere la destra"," su {road}"],Right:["A destra"," su {road}"],SharpRight:["Strettamente a destra"," su {road}"],TurnAround:["Fare inversione di marcia"],SharpLeft:["Strettamente a sinistra"," su {road}"],Left:["A sinistra"," sur {road}"],SlightLeft:["Mantenere la sinistra"," su {road}"],WaypointReached:["Punto di passaggio raggiunto"],Roundabout:["Alla rotonda, prendere la {exitStr} uscita"],DestinationReached:["Destinazione raggiunta"]},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Partenza",viaPlaceholder:"Intermedia {viaNumber}",endPlaceholder:"Destinazione"}},pt:{directions:{N:"norte",NE:"nordeste",E:"leste",SE:"sudeste",S:"sul",SW:"sudoeste",W:"oeste",NW:"noroeste",SlightRight:"curva ligeira a direita",Right:"direita",SharpRight:"curva fechada a direita",SlightLeft:"ligeira a esquerda",Left:"esquerda",SharpLeft:"curva fechada a esquerda",Uturn:"Meia volta"},instructions:{Head:["Siga {dir}"," na {road}"],Continue:["Continue {dir}"," na {road}"],SlightRight:["Curva ligeira a direita"," na {road}"],Right:["Curva a direita"," na {road}"],SharpRight:["Curva fechada a direita"," na {road}"],TurnAround:["Retorne"],SharpLeft:["Curva fechada a esquerda"," na {road}"],Left:["Curva a esquerda"," na {road}"],SlightLeft:["Curva ligueira a esquerda"," na {road}"],WaypointReached:["Ponto de interesse atingido"],Roundabout:["Pegue a {exitStr} saída na rotatória"," na {road}"],DestinationReached:["Destino atingido"],Fork:["Na encruzilhada, vire a {modifier}"," na {road}"],Merge:["Entre à {modifier}"," na {road}"],OnRamp:["Vire {modifier} na rampa"," na {road}"],OffRamp:["Entre na rampa na {modifier}"," na {road}"],EndOfRoad:["Vire {modifier} no fim da rua"," na {road}"],Onto:"na {road}"},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Origem",viaPlaceholder:"Intermédio {viaNumber}",endPlaceholder:"Destino"}},sk:{directions:{N:"sever",NE:"serverovýchod",E:"východ",SE:"juhovýchod",S:"juh",SW:"juhozápad",W:"západ",NW:"serverozápad"},instructions:{Head:["Mierte na {dir}"," na {road}"],Continue:["Pokračujte na {dir}"," na {road}"],SlightRight:["Mierne doprava"," na {road}"],Right:["Doprava"," na {road}"],SharpRight:["Prudko doprava"," na {road}"],TurnAround:["Otočte sa"],SharpLeft:["Prudko doľava"," na {road}"],Left:["Doľava"," na {road}"],SlightLeft:["Mierne doľava"," na {road}"],WaypointReached:["Ste v prejazdovom bode."],Roundabout:["Odbočte na {exitStr} výjazde"," na {road}"],DestinationReached:["Prišli ste do cieľa."]},formatOrder:function(e){var t=e%10-1,n=[".",".","."];return n[t]?e+n[t]:e+"."},ui:{startPlaceholder:"Začiatok",viaPlaceholder:"Cez {viaNumber}",endPlaceholder:"Koniec"}},el:{directions:{N:"βόρεια",NE:"βορειοανατολικά",E:"ανατολικά",SE:"νοτιοανατολικά",S:"νότια",SW:"νοτιοδυτικά",W:"δυτικά",NW:"βορειοδυτικά"},instructions:{Head:["Κατευθυνθείτε {dir}"," στην {road}"],Continue:["Συνεχίστε {dir}"," στην {road}"],SlightRight:["Ελαφρώς δεξιά"," στην {road}"],Right:["Δεξιά"," στην {road}"],SharpRight:["Απότομη δεξιά στροφή"," στην {road}"],TurnAround:["Κάντε αναστροφή"],SharpLeft:["Απότομη αριστερή στροφή"," στην {road}"],Left:["Αριστερά"," στην {road}"],SlightLeft:["Ελαφρώς αριστερά"," στην {road}"],WaypointReached:["Φτάσατε στο σημείο αναφοράς"],Roundabout:["Ακολουθήστε την {exitStr} έξοδο στο κυκλικό κόμβο"," στην {road}"],DestinationReached:["Φτάσατε στον προορισμό σας"]},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Αφετηρία",viaPlaceholder:"μέσω {viaNumber}",endPlaceholder:"Προορισμός"}},ca:{directions:{N:"nord",NE:"nord-est",E:"est",SE:"sud-est",S:"sud",SW:"sud-oest",W:"oest",NW:"nord-oest",SlightRight:"lleu gir a la dreta",Right:"dreta",SharpRight:"gir pronunciat a la dreta",SlightLeft:"gir pronunciat a l'esquerra",Left:"esquerra",SharpLeft:"lleu gir a l'esquerra",Uturn:"mitja volta"},instructions:{Head:["Recte {dir}"," sobre {road}"],Continue:["Continuar {dir}"],TurnAround:["Donar la volta"],WaypointReached:["Ha arribat a un punt del camí"],Roundabout:["Agafar {exitStr} sortida a la rotonda"," a {road}"],DestinationReached:["Arribada al destí"],Fork:["A la cruïlla gira a la {modifier}"," cap a {road}"],Merge:["Incorpora't {modifier}"," a {road}"],OnRamp:["Gira {modifier} a la sortida"," cap a {road}"],OffRamp:["Pren la sortida {modifier}"," cap a {road}"],EndOfRoad:["Gira {modifier} al final de la carretera"," cap a {road}"],Onto:"cap a {road}"},formatOrder:function(e){return e+"º"},ui:{startPlaceholder:"Origen",viaPlaceholder:"Via {viaNumber}",endPlaceholder:"Destí"},units:{meters:"m",kilometers:"km",yards:"yd",miles:"mi",hours:"h",minutes:"min",seconds:"s"}},ru:{directions:{N:"север",NE:"северовосток",E:"восток",SE:"юговосток",S:"юг",SW:"югозапад",W:"запад",NW:"северозапад",SlightRight:"плавно направо",Right:"направо",SharpRight:"резко направо",SlightLeft:"плавно налево",Left:"налево",SharpLeft:"резко налево",Uturn:"развернуться"},instructions:{Head:["Начать движение на {dir}"," по {road}"],Continue:["Продолжать движение на {dir}"," по {road}"],SlightRight:["Плавный поворот направо"," на {road}"],Right:["Направо"," на {road}"],SharpRight:["Резкий поворот направо"," на {road}"],TurnAround:["Развернуться"],SharpLeft:["Резкий поворот налево"," на {road}"],Left:["Поворот налево"," на {road}"],SlightLeft:["Плавный поворот налево"," на {road}"],WaypointReached:["Точка достигнута"],Roundabout:["{exitStr} съезд с кольца"," на {road}"],DestinationReached:["Окончание маршрута"],Fork:["На развилке поверните {modifier}"," на {road}"],Merge:["Перестройтесь {modifier}"," на {road}"],OnRamp:["Поверните {modifier} на съезд"," на {road}"],OffRamp:["Съезжайте на {modifier}"," на {road}"],EndOfRoad:["Поверните {modifier} в конце дороги"," на {road}"],Onto:"на {road}"},formatOrder:function(e){return e+"-й"},ui:{startPlaceholder:"Начало",viaPlaceholder:"Через {viaNumber}",endPlaceholder:"Конец"},units:{meters:"м",kilometers:"км",yards:"ярд",miles:"ми",hours:"ч",minutes:"м",seconds:"с"}}})}()},{}],20:[function(e,t,n){(function(n){!function(){"use strict";var o="undefined"!=typeof window?window.L:void 0!==n?n.L:null,i=e("./osrm-v1");t.exports=i.extend({options:{serviceUrl:"https://api.mapbox.com/directions/v5",profile:"mapbox/driving",useHints:!1},initialize:function(e,t){o.Routing.OSRMv1.prototype.initialize.call(this,t),this.options.requestParameters=this.options.requestParameters||{},this.options.requestParameters.access_token=e}})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./osrm-v1":21}],21:[function(e,t,n){(function(n){!function(){"use strict";var o="undefined"!=typeof window?window.L:void 0!==n?n.L:null,i=e("corslite"),r=e("polyline"),a=e("osrm-text-instructions"),s=e("./waypoint");t.exports=o.Class.extend({options:{serviceUrl:"https://router.project-osrm.org/route/v1",profile:"driving",timeout:3e4,routingOptions:{alternatives:!0,steps:!0},polylinePrecision:5,useHints:!0,suppressDemoServerWarning:!1,language:"fr"},initialize:function(e){o.Util.setOptions(this,e),this._hints={locations:{}},!this.options.suppressDemoServerWarning&&this.options.serviceUrl.indexOf("//router.project-osrm.org")>=0&&console.warn("You are using OSRM's demo server. Please note that it is **NOT SUITABLE FOR PRODUCTION USE**.\nRefer to the demo server's usage policy: https://github.com/Project-OSRM/osrm-backend/wiki/Api-usage-policy\n\nTo change, set the serviceUrl option.\n\nPlease do not report issues with this server to neither Leaflet Routing Machine or OSRM - it's for\ndemo only, and will sometimes not be available, or work in unexpected ways.\n\nPlease set up your own OSRM server, or use a paid service provider for production.")},route:function(e,t,n,r){var a,l,u,c,p,d=!1,h=[];for(r=o.extend({},this.options.routingOptions,r),a=this.buildRouteUrl(e,r),this.options.requestParameters&&(a+=o.Util.getParamString(this.options.requestParameters,a)),l=setTimeout(function(){d=!0,t.call(n||t,{status:-1,message:"OSRM request timed out."})},this.options.timeout),c=0;c0;if(this.options.stepToText)c=this.options.stepToText;else{var v=a("v5",this.options.language);c=v.compile.bind(v)}for(t=0;t=0?"Left":"Right"},_decodePolyline:function(e){var t,n=r.decode(e,this.options.polylinePrecision),i=new Array(n.length);for(t=n.length-1;t>=0;t--)i[t]=o.latLng(n[t]);return i},_toWaypoints:function(e,t){var n,i,r=[];for(n=0;n=0;o--)n=t[o].latLng,this._hints.locations[this._locationKey(n)]=e[o].hint}})}()}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./waypoint":23,corslite:1,"osrm-text-instructions":2,polyline:9}],22:[function(e,t,n){(function(n){!function(){"use strict";var o="undefined"!=typeof window?window.L:void 0!==n?n.L:null,i=e("./geocoder-element"),r=e("./waypoint");t.exports=(o.Layer||o.Class).extend({includes:o.Mixin.Events,options:{dragStyles:[{color:"black",opacity:.15,weight:9},{color:"white",opacity:.8,weight:6},{color:"red",opacity:1,weight:2,dashArray:"7,12"}],draggableWaypoints:!0,routeWhileDragging:!1,addWaypoints:!0,reverseWaypoints:!1,addButtonClassName:"",language:"en",createGeocoderElement:function(e,t,n,o){return new i(e,t,n,o)},createMarker:function(e,t){var n={draggable:this.draggableWaypoints};return o.marker(t.latLng,n)},geocodersClassName:""},initialize:function(e,t){o.Util.setOptions(this,t),this._waypoints=[],this.setWaypoints(e)},isReady:function(){var e;for(e=0;e0||this._waypoints.length>2?this.spliceWaypoints(e,1):this.spliceWaypoints(e,1,new r)},this).on("geocoded",function(t){this._updateMarkers(),this._fireChanged(),this._focusGeocoder(e+1),this.fire("waypointgeocoded",{waypointIndex:e,waypoint:t.waypoint})},this).on("reversegeocoded",function(t){this.fire("waypointgeocoded",{waypointIndex:e,waypoint:t.waypoint})},this),t},_updateGeocoders:function(){var e,t,n=[];for(e=0;e=0;e--)t=this._createGeocoder(e),this._geocoderContainer.insertBefore(t.getContainer(),this._geocoderContainer.firstChild),n.push(t);this._geocoderElems=n.reverse()},_removeMarkers:function(){var e;if(this._markers)for(e=0;e=2&&this.fire("waypointsspliced",{index:Array.prototype.shift.call(arguments),nRemoved:Array.prototype.shift.call(arguments),added:arguments})},_hookWaypointEvents:function(e,t,n){var i,r,a=function(e){return n?e.latlng:e.target.getLatLng()},s=o.bind(function(e){this.fire("waypointdragstart",{index:t,latlng:a(e)})},this),l=o.bind(function(e){this._waypoints[t].latLng=a(e),this.fire("waypointdrag",{index:t,latlng:a(e)})},this),u=o.bind(function(e){this._waypoints[t].latLng=a(e),this._waypoints[t].name="",this._geocoderElems&&this._geocoderElems[t].update(!0),this.fire("waypointdragend",{index:t,latlng:a(e)}),this._fireChanged()},this);n?(i=o.bind(function(e){this._markers[t].setLatLng(e.latlng),l(e)},this),r=o.bind(function(e){this._map.dragging.enable(),this._map.off("mouseup",r),this._map.off("mousemove",i),u(e)},this),this._map.dragging.disable(),this._map.on("mousemove",i),this._map.on("mouseup",r),s({latlng:this._waypoints[t].latLng})):(e.on("dragstart",s),e.on("drag",l),e.on("dragend",u))},dragNewWaypoint:function(e){var t=e.afterIndex+1;this.options.routeWhileDragging?(this.spliceWaypoints(t,0,e.latlng),this._hookWaypointEvents(this._markers[t],t,!0)):this._dragNewWaypoint(t,e.latlng)},_dragNewWaypoint:function(e,t){var n,i=new r(t),a=this._waypoints[e-1],s=this._waypoints[e],l=this.options.createMarker(e,i,this._waypoints.length+1),u=[],c=this._map.dragging.enabled(),p=o.bind(function(e){var t,n;for(l&&l.setLatLng(e.latlng),t=0;t\n\n",l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["layout.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='
\n
\n\n ",s+='\n
\n ',s+='\n
\n \n ',s+=' \n
\n \n ';var u=[];u.push(function(t){e.getTemplate("modals.html.njk",!1,"layout.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n\n ",e.getTemplate("components/spinner-loader.html.njk",!1,"layout.html.njk",!1,function(u,c){if(u)return void i(u);c.getExported(function(u,c){if(u)return void i(u);t.setVariable("spinnerLoader",c),s+="\n ",s+=o.suppressValue((r=19,a=27,o.callWrap(o.memberLookup(c,"create"),'spinnerLoader["create"]',t,["directory-spinner-loader"])),e.opts.autoescape),s+=" \n\n ";var p=[];p.push(function(t){e.getTemplate("components/search-bar/search-results-header.html.njk",!1,"layout.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),p.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),p.push(function(e,t){s+=e,t(null)}),e.waterfall(p,function(){s+='\n\n \n\n ",s+="\n ";var r=[];r.push(function(t){e.getTemplate("components/map/info-bar.html.njk",!1,"layout.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),r.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),r.push(function(e,t){s+=e,t(null)}),e.waterfall(r,function(){s+=' \n\n \n\n ";var r=[];r.push(function(t){e.getTemplate("components/gogo-controls.html.njk",!1,"layout.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),r.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),r.push(function(e,t){s+=e,t(null)}),e.waterfall(r,function(){s+="\n\n ";var r=[];r.push(function(t){e.getTemplate("components/custom-popup.html.njk",!1,"layout.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),r.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),r.push(function(e,t){s+=e,t(null)}),e.waterfall(r,function(){s+="\n\n ",s+='\n
\n
\n
\n\n
\n\n
\n
',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})})})})})})})})})})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["modals.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null,u=[];u.push(function(t){e.getTemplate("components/modals/image.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){if(s+="\n\n",r=2,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["report"])){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/report.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}if(s+=" \n\n",r=6,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["delete"])){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/delete.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}if(s+=" \n\n",r=10,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["directions"])){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/pick-address.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}if(s+=" \n\n",r=14,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["share"])){s+=" \n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/share.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}if(s+=" \n\n",r=18,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["vote"])){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/vote.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+="\n ";var o=[];o.push(function(t){e.getTemplate("components/modals/contribution-information.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),o.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),o.push(function(e,t){s+=e,t(null)}),e.waterfall(o,function(){s+=" \n"})})}if(s+="\n\n",o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"security"),"hideMailsByShowingSendMailButton")){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/element/send-email.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}if(s+="\n\n",r=27,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["export"])){s+="\n ";var u=[];u.push(function(t){e.getTemplate("components/modals/export-iframe.html.njk",!1,"modals.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+=" \n"})}l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/custom-popup.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;r=0,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["customPopup"])&&(s+='\n \n'),l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/gogo-controls.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='
\n ',r=1,a=31,(o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchPlace"])||(r=1,a=75,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchElements"])))&&(s+='\n
\n '),s+='\n
\n \n ',o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"images"),"buttonOpenMenu")&&(s+='
\n '),s+='\n
\n
',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/spinner-loader.html.njk"]=function(){function e(e,t,n,o,i){try{var r=null,a=o.makeMacro(["id"],[],function(t,i){var r=n;n=new o.Frame,i=i||{},i.hasOwnProperty("caller")&&n.set("caller",i.caller),n.set("id",t);var a="";return a+='\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n',n=r,new o.SafeString(a)});t.addExport("create"),t.setVariable("create",a),r?r.rootRenderFunc(e,t,n,o,i):i(null,"")}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/buttons/show-directory-menu-button.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+='\n\n\t\t",l&&(p+="\n\t\t\t",p+='\n\t\t\t
\n\t\t\t\t
\n\t\t\t \n\t\t\t \n\t\t\t\t
\n\t\t\t
\n\t\t'),p+="\n\t\n\t"),p+="\n\n\t",p+='\n\t
\n\n\t\t\t\t\t\t",p+="\n\t\t\t\t\t\t";var v;if(v=o.memberLookup(f,"icon")?o.memberLookup(f,"icon"):o.memberLookup(f,"useColorForMarker")?"gogo-icon-marker":"",n.set("iconClass",v,!0),n.topLevel&&t.setVariable("iconClass",v),n.topLevel&&t.addExport("iconClass",v),p+="\t\n\t\t\t\t\t\t",o.contextOrFrameLookup(t,n,"iconClass")&&(p+=' \n\t\t\t\t\t\t\t\n\t\t\t\t\t\t"),p+="\n\n\t\t\t\t\t\t",p+='\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t',p+=o.suppressValue(o.memberLookup(f,"nameShort")?o.memberLookup(f,"nameShort"):o.memberLookup(f,"name"),e.opts.autoescape),p+="\n\t\t\t\t\t\t\t",p+="\n\t\t\t\t\t\t\t",o.contextOrFrameLookup(t,n,"isSubcategories")&&!o.memberLookup(f,"unexpandable")&&(p+='
'),p+="\n\t\t\t\t\t\t
\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\t\t\t\t\n\n\t\t\t\t\t",l&&(p+="\n\t\t\t\t\t\t",p+='\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t \n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t'),p+="\n\t \n\n\t ",o.contextOrFrameLookup(t,n,"isSubcategories")){p+='\n\t \t
\n\t\t\t"}p+="\n\n\t\t "}return n=n.pop(),p+=" ",p+="\n\t
\n\n \n",n=c,new o.SafeString(p)});t.addExport("renderItem"),t.setVariable("renderItem",l),s?s.rootRenderFunc(e,t,n,o,i):i(null,"")}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/directory-menu/directory-menu.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='
\n\t',o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"images"),"menuTopImage")&&(s+='\n\t\t
\n\t\t\t
\t\t\n\n\t\t
\n\t\t

Calcul d\'itinéraire

\n\t\t \n\t\t
\n\t\t\n\t\t
\n\t
\t\n\n\t
\n\t \n\t ',e.getTemplate("components/spinner-loader.html.njk",!1,"components/directory-menu/directory-menu.html.njk",!1,function(u,c){if(u)return void i(u);c.getExported(function(u,c){if(u)return void i(u);t.setVariable("spinnerLoader",c),s+="\n\t ",s+=o.suppressValue((r=23,a=24,o.callWrap(o.memberLookup(c,"create"),'spinnerLoader["create"]',t,["directory-menu-spinner-loader"])),e.opts.autoescape),s+="\n\n\t ";var p=[];p.push(function(t){e.getTemplate("components/directory-menu/filters-menu.html.njk",!1,"components/directory-menu/directory-menu.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),p.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),p.push(function(e,t){s+=e,t(null)}),e.waterfall(p,function(){s+="\n\n\t
\n\n",l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})})})})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/directory-menu/filters-menu.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;if(s+='
\t\n\n\t',s+="\n\t",o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"menu"),"showOnePanePerMainOption")){s+='\t\t\n\t\t
\n\n\t\t\t
\n\n\t\t\t
\n\t\t\t\t
Tous
\n\t\t\t\t
Tous les ',s+=o.suppressValue(o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"text"),"elementPlural"),e.opts.autoescape),s+="
\n\t\t\t
\n\t\t\t\n\t\t\t",s+="\n\t\t\t",n=n.push();var u=o.memberLookup(o.contextOrFrameLookup(t,n,"mainCategory"),"options");if(u)for(var c=u.length,p=0;p\n\t\t\t\t
\n\t\t\t"}n=n.pop(),s+="\t\n\n\t\t
\n\t"}s+='\n\n\t
\n\t\t\t
    \n\t\t\t\t',s+='\n\t\t\t\t
    \n\n\t\t\t\t",s+="\n\t\t\t\t",o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"menu"),"showOnePanePerMainOption")){s+="\t\t\t\t\t\n\t\t\t\t\t",n=n.push();var f=o.memberLookup(o.contextOrFrameLookup(t,n,"mainCategory"),"options");if(f)for(var g=f.length,v=0;v\n\n\t\t\t\t\t"}n=n.pop(),s+="\n\t\t\t\t"}s+="\n\n\t\t\t\t";var k;r=55,a=52,k=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["pending"]),n.set("pendingIsActive",k,!0),n.topLevel&&t.setVariable("pendingIsActive",k),n.topLevel&&t.addExport("pendingIsActive",k),s+="\n\t\t\t\t";var L;r=56,a=53,L=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["favorite"]),n.set("favoriteIsActive",L,!0),n.topLevel&&t.setVariable("favoriteIsActive",L),n.topLevel&&t.addExport("favoriteIsActive",L),s+="\n\t\t\t\t";var C;r=57,a=55,C=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["moderation"]),n.set("moderationIsActive",C,!0),n.topLevel&&t.setVariable("moderationIsActive",C),n.topLevel&&t.addExport("moderationIsActive",C),s+="\n\n\t\t\t\t",(o.contextOrFrameLookup(t,n,"pendingIsActive")||o.contextOrFrameLookup(t,n,"favoriteIsActive")||o.contextOrFrameLookup(t,n,"moderationIsActive"))&&(s+='\n\t\t\t\t\t
  • \n\t\t\t\t\t\t
    \t\t\n\t\t\t\t\t\t\tAfficher uniquement\n\t\t\t\t\t\t
    \n\t\t\t\t\t
  • \n\t\t\t\t'),s+='\n\n\t\t\t\t
    \n\n\t\t\t\t\t',s+="\t\n\t\t\t\t\t",o.contextOrFrameLookup(t,n,"pendingIsActive")&&(s+='\n\t\t\t\t\t\t
  • \n\t\t\t\t\t \n\t\t\t\t \t\n\t\t\t\t \t\tEn cours de validation\n\t\t\t\t \t \n\n\t\t\t\t\t ',s+='\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
  • \n\t\t\t\t\t'),s+="\n\n\t\t\t\t\t",o.contextOrFrameLookup(t,n,"moderationIsActive")&&(s+='\n\t\t\t\t\t\t
  • \n\t\t\t\t\t \n\t\t\t\t \tA modérer\n\n\t\t\t\t\t ',s+='\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
  • \n\t\t\t\t\t'),s+="\n\n\t\t\t\t\t",s+="\n\t\t\t\t\t",o.contextOrFrameLookup(t,n,"favoriteIsActive")&&(s+='\n\t\t\t\t\t\t
  • \n\t\t\t\t\t \n\t\t\t\t\t Vos favoris \n\n\t\t\t\t\t ',s+='\n\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t\t\t
    \n\t\t\t\t\t\t \n\t\t\t\t\t\t \n\t\t\t\t\t \t
    \n\t\t\t\t\t
    \n\t\t\t\t\t\t
  • \n\t\t\t\t\t'),s+="\t\t\n\n\t\t\t\t
    \t\n\n\t\t\t
\n\t\t
\n\n\t\n\n\t\t\t",l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/list/list.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='
\n\n ';var u=[];u.push(function(t){e.getTemplate("components/buttons/show-directory-menu-button.html.njk",!1,"components/list/list.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+='\n \n \n\n \n\n
\n
\n\n
\n
    \n
    \n
    ',s+=o.suppressValue((r=18,a=59,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"spinnerLoader"),"create"),'spinnerLoader["create"]',t,["directory-list-spinner-loader"])),e.opts.autoescape),s+='
    \n \n
    ',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/body.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l,u=null;l="components/element/",n.set("here",l,!0),n.topLevel&&t.setVariable("here",l),n.topLevel&&t.addExport("here",l),s+="\n",s+="\n",s+="\n",s+="\n";var c;r=4,a=42,c=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"getProperty"),'element["getProperty"]',t,["longDescription"]),n.set("longDescription",c,!0),n.topLevel&&t.setVariable("longDescription",c),n.topLevel&&t.addExport("longDescription",c),s+="\n",o.contextOrFrameLookup(t,n,"longDescription")&&(s+='\n
    \n
    \n ',s+=o.suppressValue(e.getFilter("safe").call(t,o.contextOrFrameLookup(t,n,"longDescription")),e.opts.autoescape),s+="\n ",o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"longDescriptionMore")&&(s+='\n \n Afficher plus\n '),s+="\n
    \n
    \n"),s+="\n\n",s+='\n

    Informations générales

    \n\n "}n=n.pop(),s+="\n "}s+='\n\n\n
    \n\n',s+='\n
    \n ',e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"category-value.html.njk",!1,"components/element/body.html.njk",!1,function(l,c){if(l)return void i(l);c.getExported(function(l,c){if(l)return void i(l);t.setVariable("categoryRenderer",c),s+="\n ",n=n.push();var p=o.contextOrFrameLookup(t,n,"rootCategoriesValues");if(p)for(var d=p.length,h=0;h',s+=o.suppressValue(_,e.opts.autoescape),s+=""}n=n.pop(),s+="\n
    \n "}s+="\n\n\n";var b;r=78,a=37,b=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"getProperty"),'element["getProperty"]',t,["commitment"]),n.set("commitment",b,!0),n.topLevel&&t.setVariable("commitment",b),n.topLevel&&t.addExport("commitment",b),s+=" \n",o.contextOrFrameLookup(t,n,"commitment")&&(s+='\n
    \n

    Engagement Citoyen

    \n
    \n ',s+=o.suppressValue(e.getFilter("safe").call(t,o.contextOrFrameLookup(t,n,"commitment")),e.opts.autoescape),s+=" \n
    \n"),s+="\n\n",s+="\n";var w;if(r=88,a=45,w=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"getProperty"),'element["getProperty"]',t,["openHoursMoreInfos"]),n.set("openHoursMoreInfos",w,!0),n.topLevel&&t.setVariable("openHoursMoreInfos",w),n.topLevel&&t.addExport("openHoursMoreInfos",w),s+=" \n",e.getFilter("length").call(t,o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"formatedOpenHours"))||o.contextOrFrameLookup(t,n,"openHoursMoreInfos")){s+='\n
    \n

    Horaires d\'ouverture

    \n
    \n ';var x;x=0,n.set("count",x,!0),n.topLevel&&t.setVariable("count",x),n.topLevel&&t.addExport("count",x),s+=" \n\n ",n=n.push();var k=o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"formatedOpenHours");if(k){var L;if(o.isArray(k)){var C=k.length;for(L=0;L\n ",s+=o.suppressValue(e.getFilter("capitalize").call(t,A),e.opts.autoescape),s+='\n ',s+=o.suppressValue(E,e.opts.autoescape),s+=" \n
    \n ";var T;T=o.contextOrFrameLookup(t,n,"count")+1,n.set("count",T,!0),n.topLevel&&t.setVariable("count",T),n.topLevel&&t.addExport("count",T),s+=" \n\n "}s+="\n "}}else{L=-1;var C=o.keys(k).length;for(var S in k){L++;var O=k[S];if(n.set("key",S),n.set("horaire",O),n.set("loop.index",L+1),n.set("loop.index0",L),n.set("loop.revindex",C-L),n.set("loop.revindex0",C-L-1),n.set("loop.first",0===L),n.set("loop.last",L===C-1),n.set("loop.length",C),s+=" \n ",O!=o.contextOrFrameLookup(t,n,"null")){s+="\n\n
    \n ",s+=o.suppressValue(e.getFilter("capitalize").call(t,S),e.opts.autoescape),s+='\n ',s+=o.suppressValue(O,e.opts.autoescape),s+=" \n
    \n ";var M;M=o.contextOrFrameLookup(t,n,"count")+1,n.set("count",M,!0),n.topLevel&&t.setVariable("count",M),n.topLevel&&t.addExport("count",M),s+=" \n\n "}s+="\n "}}}if(n=n.pop(),s+=" \n\n ",o.contextOrFrameLookup(t,n,"openHoursMoreInfos")){s+="\n
    ",s+=o.suppressValue(e.getFilter("safe").call(t,o.contextOrFrameLookup(t,n,"openHoursMoreInfos")),e.opts.autoescape),s+="
    \n ";var P;P=o.contextOrFrameLookup(t,n,"count")+1,n.set("count",P,!0),n.topLevel&&t.setVariable("count",P),n.topLevel&&t.addExport("count",P),s+=" \n "}s+="\n\n ",0==o.contextOrFrameLookup(t,n,"count")&&(s+="
    Non renseignées
    "),s+=" \n \n"}s+="\n",u?u.rootRenderFunc(e,t,n,o,i):i(null,s)})})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/category-value-with-inline.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+="\n\n";var u=o.makeMacro(["categoryValue","subcategoriesCount"],[],function(i,s,l){var u=n;n=new o.Frame,l=l||{},l.hasOwnProperty("caller")&&n.set("caller",l.caller),n.set("categoryValue",i),n.set("subcategoriesCount",s);var c="";c+="\n\n";var p;p=0,n.set("activeChildrenCount",p,!0),n.topLevel&&t.setVariable("activeChildrenCount",p),n.topLevel&&t.addExport("activeChildrenCount",p),c+="\n",n=n.push();var d=o.memberLookup(i,"children");if(d)for(var h=d.length,m=0;m0,n.set("displayThisCategoryValue",v,!0),n.topLevel&&t.setVariable("displayThisCategoryValue",v),n.topLevel&&t.addExport("displayThisCategoryValue",v),c+="\n\n";var y;y=o.memberLookup(o.memberLookup(i,"category"),"name")&&o.contextOrFrameLookup(t,n,"activeChildrenCount")>0||o.memberLookup(o.memberLookup(i,"category"),"isRootCategory"),n.set("displayThisCategoryValue",y,!0),n.topLevel&&t.setVariable("displayThisCategoryValue",y),n.topLevel&&t.addExport("displayThisCategoryValue",y),c+="\n",o.contextOrFrameLookup(t,n,"displayThisCategoryValue")&&(c+='\n\t
    \n\t',s>1&&(c+='\n\t\t
    ',c+=o.suppressValue(o.memberLookup(o.memberLookup(i,"category"),"name"),e.opts.autoescape),c+="
    \n\t"),c+="\n"),c+="\n\n",n=n.push();var _=o.memberLookup(i,"children");if(_)for(var b=_.length,w=0;w<_.length;w++){var x=_[w];if(n.set("optionValue",x),n.set("loop.index",w+1),n.set("loop.index0",w),n.set("loop.revindex",b-w),n.set("loop.revindex0",b-w-1),n.set("loop.first",0===w),n.set("loop.last",w===b-1),n.set("loop.length",b),c+="\n\t",o.memberLookup(o.memberLookup(x,"option"),"displayInInfoBar")){c+="\n\t\t";var k;k=!o.memberLookup(o.memberLookup(i,"category"),"enableDescription")&&o.memberLookup(o.memberLookup(x,"children"),"length")>0&&o.memberLookup(o.memberLookup(o.memberLookup(x,"children"),0),"isLastCategoryDepth")&&!o.memberLookup(o.memberLookup(o.memberLookup(o.memberLookup(x,"children"),0),"category"),"enableDescription"),n.set("displayFirstCategoryInline",k,!0),n.topLevel&&t.setVariable("displayFirstCategoryInline",k),n.topLevel&&t.addExport("displayFirstCategoryInline",k),c+="\n\t\t\x3c!--
    ",c+=o.suppressValue(o.memberLookup(o.memberLookup(x,"option"),"name"),e.opts.autoescape),c+=" : ",c+=o.suppressValue(o.memberLookup(o.memberLookup(x,"children"),"length"),e.opts.autoescape),c+=", ",c+=o.suppressValue(o.memberLookup(o.memberLookup(o.memberLookup(x,"children"),0),"isLastCategoryDepth"),e.opts.autoescape),c+="
    --\x3e\n\t\t";var L;L=o.memberLookup(o.memberLookup(i,"category"),"enableDescription")?"s6 m5":"s12",n.set("colWidth",L,!0),n.topLevel&&t.setVariable("colWidth",L),n.topLevel&&t.addExport("colWidth",L),c+="\n\t
    \n\t \n\n\t \t';var C;C=o.memberLookup(o.memberLookup(x,"option"),"icon")?o.memberLookup(o.memberLookup(x,"option"),"icon"):"gogo-icon-angle-right",n.set("iconClass",C,!0),n.topLevel&&t.setVariable("iconClass",C),n.topLevel&&t.addExport("iconClass",C),c+="\t\n\t \t";var A;if(A=o.memberLookup(o.memberLookup(x,"option"),"icon")?o.memberLookup(o.memberLookup(x,"option"),"id"):"",n.set("iconColorId",A,!0),n.topLevel&&t.setVariable("iconColorId",A),n.topLevel&&t.addExport("iconColorId",A),c+="\t\n\t\t\t\t",o.contextOrFrameLookup(t,n,"iconClass")&&(c+=' \n\t\t\t\t\t\n\t\t\t\t"),c+='\n\t\t\t\t\n\t \n\t ",c+=o.suppressValue(o.memberLookup(o.memberLookup(x,"option"),"nameShort"),e.opts.autoescape),c+=" \n\n\t ",o.contextOrFrameLookup(t,n,"displayFirstCategoryInline")){c+='\n\t \t(\n\t \t\t',n=n.push();var E=o.memberLookup(o.memberLookup(o.memberLookup(x,"children"),0),"children");if(E)for(var T=E.length,S=0;S\n\t "}c+="\n\n\t \n\t ",o.memberLookup(o.memberLookup(i,"category"),"enableDescription")&&(c+='\n\t \t\n\t "),c+="\n\t
    \n "}c+="\n\n\t",s=o.memberLookup(o.memberLookup(x,"children"),"length"),n.set("subcategoriesCount",s,!0),n.topLevel&&t.setVariable("subcategoriesCount",s),n.topLevel&&t.addExport("subcategoriesCount",s),c+="\n\t",o.contextOrFrameLookup(t,n,"displayFirstCategoryInline")&&(s-=1,n.set("subcategoriesCount",s,!0),n.topLevel&&t.setVariable("subcategoriesCount",s),n.topLevel&&t.addExport("subcategoriesCount",s)),c+="\n\n\t",n=n.push();var M=o.memberLookup(x,"children");if(M)for(var P=M.length,D=0;D0,n.set("wrapOptionsIntoCategoryContainer",g,!0),n.topLevel&&t.setVariable("wrapOptionsIntoCategoryContainer",g),n.topLevel&&t.addExport("wrapOptionsIntoCategoryContainer",g),u+="\n\n",o.contextOrFrameLookup(t,n,"wrapOptionsIntoCategoryContainer")&&(u+='\n\t
    \t\n'),u+="\n\n",o.memberLookup(o.memberLookup(i,"category"),"displayInInfoBar")&&(u+='\n\t

    ',u+=o.suppressValue(o.memberLookup(o.memberLookup(i,"category"),"name"),e.opts.autoescape),u+="

    \n"),u+="\n\n",o.memberLookup(o.memberLookup(i,"category"),"displaySuboptionsInline")&&(u+='
    '),u+="\n",n=n.push();var v=o.memberLookup(i,"children");if(v)for(var y=v.length,_=0;_\n\t \n\t\t\t\t"),u+='\n\n\t \n\t ",u+=o.suppressValue(o.memberLookup(o.memberLookup(b,"option"),"name"),e.opts.autoescape),u+="\n\n\t \n\t ",o.memberLookup(o.memberLookup(i,"category"),"enableDescription")&&(u+='\n\t \t\n\t "),u+="\n\t
    \n "}if(u+="\n\n ",u+="\n ",o.memberLookup(o.memberLookup(b,"option"),"displayChildrenInInfoBar")){u+="\n\t\t",n=n.push();var C=o.memberLookup(b,"children");if(C)for(var A=C.length,E=0;E\n\n';var c;r=8,a=51,c=(o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[])||(r=8,a=74,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isDeleted"),'element["isDeleted"]',t,[])))&&(r=8,a=107,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["pending"]))?"pending":"",n.set("pendingClass",c,!0),n.topLevel&&t.setVariable("pendingClass",c),n.topLevel&&t.addExport("pendingClass",c),s+="\n";var p;r=9,a=51,p=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["elementHistory"]),n.set("isHistoryAvailable",p,!0),n.topLevel&&t.setVariable("isHistoryAvailable",p),n.topLevel&&t.addExport("isHistoryAvailable",p),s+="\n\n",s+='\n
    \n ";var d=[];d.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"header.html.njk",!1,"components/element/element.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),d.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),d.push(function(e,t){s+=e,t(null)}),e.waterfall(d,function(){s+=" \n
    \n\n",s+="\n";var l=[];l.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"interactive-section.html.njk",!1,"components/element/element.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),l.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),l.push(function(e,t){s+=e,t(null)}),e.waterfall(l,function(){s+=" \n\n",s+="\n";var l=[];l.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"menu.html.njk",!1,"components/element/element.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),l.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),l.push(function(e,t){s+=e,t(null)}),e.waterfall(l,function(){if(s+="\n\n",s+="\n",o.contextOrFrameLookup(t,n,"isHistoryAvailable")&&(s+='\n
    \n'),s+="\n\n",s+='\n\n
    \n\n ',o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"images"),"length")){s+='\n
    \n \n
    \n "}if(s+='\n
    \n ',o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"images"),"length")&&(s+="\n ",s+='\n
    \n \n \n \n
    \n '),s+='\n
    \n
    \n \n ',s+="\n ",r=56,a=37,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["directModeration"])){s+="\n ";var h=[];h.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"admin/pending-contribution.html.njk",!1,"components/element/element.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),h.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),h.push(function(e,t){s+=e,t(null)}),e.waterfall(h,function(){s+="\n ",e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"admin/votes-reports.html.njk",!1,"components/element/element.html.njk",!1,function(l,u){if(l)return void i(l);u.getExported(function(l,u){if(l)return void i(l);t.setVariable("VotesReportsRenderer",u),s+="\n ",s+=o.suppressValue((r=59,a=38,o.callWrap(o.memberLookup(u,"render"),'VotesReportsRenderer["render"]',t,["Votes",o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"votes"),o.contextOrFrameLookup(t,n,"smallWidth")])),e.opts.autoescape),s+="\n ",s+=o.suppressValue((r=60,a=38,o.callWrap(o.memberLookup(u,"render"),'VotesReportsRenderer["render"]',t,["Erreurs signalées",o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"reports"),o.contextOrFrameLookup(t,n,"smallWidth")])),e.opts.autoescape),s+=" \n "})})})}if(s+="\n\n ",s+="\n ",s+=o.suppressValue(e.getFilter("safe").call(t,o.contextOrFrameLookup(t,n,"body")),e.opts.autoescape),s+="\n
    \n\n ",s+="\n ",o.contextOrFrameLookup(t,n,"isHistoryAvailable")){s+='\n
    \n ';var h=[];h.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"admin/contributions.html.njk",!1,"components/element/element.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),h.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),h.push(function(e,t){s+=e,t(null)}),e.waterfall(h,function(){s+="\n
    \n "})}s+=" \n
    \n
    \n
    \n\n\n\n",u?u.rootRenderFunc(e,t,n,o,i):i(null,s)})})})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/header.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+="\n",s+="\n
    \n\n \n\n ";var u;r=6,a=60,u=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[])&&(r=6,a=92,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["pending"]))?"gogo-icon-attention":o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"mainOptionToDisplay"),"option"),"icon"),n.set("mainIcon",u,!0),n.topLevel&&t.setVariable("mainIcon",u),n.topLevel&&t.addExport("mainIcon",u),s+="\n ",s+='\n \n\n ',s+="\n ",s+=o.suppressValue(e.getFilter("safe").call(t,(r=14,a=24,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"getProperty"),'element["getProperty"]',t,["name"]))),e.opts.autoescape),s+="\n ",r=15,a=25,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isDeleted"),'element["isDeleted"]',t,[])&&(s+="
    (Cet élément a été refusé ou supprimé)"),s+="\n\n ",s+="\n ",o.contextOrFrameLookup(t,n,"showDistance")&&o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"distance")!=o.contextOrFrameLookup(t,n,"null")&&(s+='\n ~ ',s+=o.suppressValue(o.contextOrFrameLookup(t,n,"isMapMode")?o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"distance"):o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"distanceFromBoundsCenter"),e.opts.autoescape),s+=" km\n "),s+=" \n\n ",s+="\n ",o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"address")&&(s+='\n \n ',o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"address"),"postalCode")&&(s+='',s+=o.suppressValue(o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"address"),"postalCode"),e.opts.autoescape),s+=""),s+="\n ",o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"address"),"addressLocality")&&(s+=' ',s+=o.suppressValue(o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"address"),"addressLocality"),e.opts.autoescape),s+=""),s+="\n \n "),s+="\n\n
    \n \n
    \n\n",s+="\n
    \n\n ",s+='\n ',s+=o.suppressValue(e.getFilter("safe").call(t,(r=38,a=56,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"getProperty"),'element["getProperty"]',t,["description"]))),e.opts.autoescape),s+=" \n\n ",s+='\n \n \n ';var c;c="",n.set("lastIconToDisplay",c,!0),n.topLevel&&t.setVariable("lastIconToDisplay",c),n.topLevel&&t.addExport("lastIconToDisplay",c),s+="\n ",n=n.push();var p=o.contextOrFrameLookup(t,n,"currOptionsValues");if(p)for(var d=p.length,h=0;h\n "),s+="\n ";var w;w=o.contextOrFrameLookup(t,n,"iconToDisplay"),n.set("lastIconToDisplay",w,!0),n.topLevel&&t.setVariable("lastIconToDisplay",w),n.topLevel&&t.addExport("lastIconToDisplay",w),s+='\n\n ",s+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"option"),"nameShort"),e.opts.autoescape),s+=" \n \n "}n=n.pop(),s+="\n\n ",e.getFilter("length").call(t,o.contextOrFrameLookup(t,n,"currOptionsValues"))||(s+='\n ',s+=o.suppressValue(o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"mainOptionToDisplay"),"option"),"name"),e.opts.autoescape),s+=" \n "),s+="\n\n \n\n ",s+='\n \n ',r=1,a=23,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[])&&(s+='\n
    \n \n \n \n ',s+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"status")==o.memberLookup(o.contextOrFrameLookup(t,n,"ElementStatus"),"PendingAdd")?"Nouvel "+o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"text"),"element"):"Modifications",e.opts.autoescape),s+="\n en cours de validation\n \n ",r=9,a=37,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["vote"])&&(s+='\n EN SAVOIR PLUS\n ',s+=o.suppressValue((r=11,a=115,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["directModeration"])?"Décider":"Voter"),e.opts.autoescape),s+="\n "),s+="\n \n
    \n "),s+="\n\n ";var u;u={"-2":"Erreur de géolocalisation","-1":"Aucune catégorie renseignée",0:"Pas de modération nécessaire",1:"Erreurs signalées",2:"Votes non consensuels",3:"En attente depuis trop longtemps",4:"Doublon potentiel"},n.set("moderationStates",u,!0),n.topLevel&&t.setVariable("moderationStates",u),n.topLevel&&t.addExport("moderationStates",u),s+="\n\n ",r=28,a=29,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"needsModeration"),'element["needsModeration"]',t,[])&&(r=28,a=61,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["moderation"]))&&(s+='\n
    \n \n \n ',s+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"moderationStates"),o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"moderationState")),e.opts.autoescape),s+="\n ",r=33,a=37,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["directModeration"])&&(s+="\n ",o.inOperator(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"moderationState"),[o.memberLookup(o.contextOrFrameLookup(t,n,"ElementModerationState"),"ReportsSubmitted"),o.memberLookup(o.contextOrFrameLookup(t,n,"ElementModerationState"),"PossibleDuplicate")])&&(s+=' \n Marquer comme résolu\n \n '),s+="\n "),s+="\n \n
    \n "),s+="\n\n ",s+='\n \n\n
    ',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/menu.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;if(s+='\n "}n=n.pop(),s+="\n "}if(s+="\n\n ",o.contextOrFrameLookup(t,n,"isMapMode")||(s+='\n \n '),s+="\n \n ",r=33,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["share"])&&(s+=' \n \n '),s+="\n\n ",r=41,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["directions"])&&(s+=' \n \n '),s+="\n\n ",r=49,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["edit"])&&(r=49,a=66,!o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[])||(r=49,a=97,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["directModeration"])))){s+=' \n \n "}s+="\n\n ",r=59,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["report"])&&(r=59,a=67,!o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[]))&&(s+=' \n \n '),s+=" \n\n ",r=67,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["delete"])&&o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"status")!=o.memberLookup(o.contextOrFrameLookup(t,n,"ElementStatus"),"PendingAdd")&&(s+=' \n \n '),s+=" \n
    ",l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/map/info-bar.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+=' ',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/map/map.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+=' \n\n
    \n ';var u=[];u.push(function(t){e.getTemplate("components/buttons/show-directory-menu-button.html.njk",!1,"components/map/map.html.njk",null,function(e,n){if(e)return void i(e);t(null,n)})}),u.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),u.push(function(e,t){s+=e,t(null)}),e.waterfall(u,function(){s+="\n \n ",r=7,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["listMode"])&&(s+='\n
    \n '),s+=' \n
    \n\n
    \n ',r=13,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["layers"])&&(s+='\n
    \n \n
    \n \n '),s+="\n \n ",r=20,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["export"])&&(s+='\n
    \n \n
    \n '),s+="\n\n ",r=26,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["mapdefaultview"])&&(s+='\n
    \n \n
    \n '),s+='\n\n \x3c!--
    \n \n
    --\x3e\n\n
    ',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/map/marker.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='\n\n
    0&&o.contextOrFrameLookup(t,n,"showMoreIcon")&&!o.contextOrFrameLookup(t,n,"showPending")){s+="\n\n\t\t";var p;p=39*o.contextOrFrameLookup(t,n,"nbreOthersOptions")+5,n.set("widthMoreOption",p,!0),n.topLevel&&t.setVariable("widthMoreOption",p),n.topLevel&&t.addExport("widthMoreOption",p),s+=' \t\n\n \t
    \n\n \t
    \n\t\t\t\t\t\n\n\t"}s+="\n\t\n\t";var v;r=40,a=43,v=o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"displayStamps"),'element["displayStamps"]',t,[]),n.set("displayStamps",v,!0),n.topLevel&&t.setVariable("displayStamps",v),n.topLevel&&t.addExport("displayStamps",v),s+="\n\t";var y;if(y=o.memberLookup(o.contextOrFrameLookup(t,n,"displayStamps"),"length")+1,n.set("nbreMiniIcon",y,!0),n.topLevel&&t.setVariable("nbreMiniIcon",y),n.topLevel&&t.addExport("nbreMiniIcon",y),s+='\n\n\t
    \n\t\t'),s+="\n\n\t\t",r=48,a=31,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureAvailable"),'config["isFeatureAvailable"]',t,["stamp"])){s+="\n\t\t\t",n=n.push();var _=o.contextOrFrameLookup(t,n,"displayStamps");if(_)for(var b=_.length,w=0;w<_.length;w++){var x=_[w];n.set("stamp",x),n.set("loop.index",w+1),n.set("loop.index0",w),n.set("loop.revindex",b-w),n.set("loop.revindex0",b-w-1),n.set("loop.first",0===w),n.set("loop.last",w===b-1),n.set("loop.length",b),s+='\n\t\t\t\t\n\n
    ",l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/abstract-modal.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;s+='',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)})})})})})})})}catch(e){i(o.handleError(e,r,a))}}function t(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="default",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function n(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="action-modal",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function o(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="\n\t \t\t",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function i(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="Annuler",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function r(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="Envoyer",i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{b_id:t,b_modalClass:n,b_content:o,b_cancelText:i,b_submitText:r,root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/contribution-information.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+='',a?a.rootRenderFunc(e,t,n,o,i):i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/export-iframe.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;if(s+='\x3c!-- Pop up message alerte--\x3e\n',l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/image.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+='\n\n',a?a.rootRenderFunc(e,t,n,o,i):i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/search-bar/search-bar.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;r=0,a=29,(o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchPlace"])||(r=0,a=73,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchElements"])))&&(s+='\n\n
    \n \n ',s+='\n
    \n \t\n\n ',r=8,a=37,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchGeolocate"])&&(s+='\n \n '),s+='\n\n \n \n '),s+="\n ",r=29,a=37,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"isFeatureActivated"),'config["isFeatureActivated"]',t,["searchElements"])&&(s+='\n \n \n "),s+='\n \n \n \n
    \n\n
    Aucun résultat trouvé
    \n \n
    \n\n",s+="\n\n"})})),l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/search-bar/search-results-header.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+=' \n ',a?a.rootRenderFunc(e,t,n,o,i):i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/admin/contribution-item.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a,s=null;a={0:"Ajout",1:"Modification",2:"Vote",3:"Signalement",4:"Import"},n.set("contributionType",a,!0),n.topLevel&&t.setVariable("contributionType",a),n.topLevel&&t.addExport("contributionType",a),r+=" \n\n";var l;l={"":"En attente","-5":"modified pending","-4":"Supprimé","-3":"Refusé (votes) ","-2":"Réfusé (admin)","-1":"En attente (modifs)",0:"En attente (ajout)",1:"Validé (admin)",2:"Validé (votes)",3:"Ajouté par admin",4:"Modifié par admin",5:"Modifié par propriétaire",6:"Modifié avec lien direct"},n.set("elementStatus",l,!0),n.topLevel&&t.setVariable("elementStatus",l),n.topLevel&&t.addExport("elementStatus",l),r+=" \n\n";var u;u={0:"Anonyme",1:"Anonyme avec email",2:"Utilisateur loggué",3:"Admin",4:"Anonyme avec lien"},n.set("userRoles",u,!0),n.topLevel&&t.setVariable("userRoles",u),n.topLevel&&t.addExport("userRoles",u),r+=" \n\n",r+='\n
    \n ';var c;c=o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"status")>0?"label-success":"label-danger",n.set("labelClass",c,!0),n.topLevel&&t.setVariable("labelClass",c),n.topLevel&&t.addExport("labelClass",c),r+="\n ";var p;if(p=0==o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"status")?"label-warning":o.contextOrFrameLookup(t,n,"labelClass"),n.set("labelClass",p,!0),n.topLevel&&t.setVariable("labelClass",p),n.topLevel&&t.addExport("labelClass",p),r+="\n\n ",3==o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"userRole")||o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"status")>2){r+='\n
    \n ';var d;d=4==o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"type")?o.memberLookup(o.contextOrFrameLookup(t,n,"contributionType"),o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"type")):o.memberLookup(o.contextOrFrameLookup(t,n,"elementStatus"),o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"status")),n.set("title",d,!0),n.topLevel&&t.setVariable("title",d),n.topLevel&&t.addExport("title",d),r+='\n \n par ",r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"user"),e.opts.autoescape),r+=' \n ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"userRoles"),o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"userRole")),e.opts.autoescape),r+=' \n ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"resolvedMessage"),e.opts.autoescape),r+=' \n
    \n
    ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"updatedAt"),e.opts.autoescape),r+="
    \n "}else r+=" \n ",o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"status")&&(r+=" ",r+="\n
    \n ",r+=o.suppressValue(e.getFilter("upper").call(t,o.memberLookup(o.contextOrFrameLookup(t,n,"contributionType"),o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"type"))),e.opts.autoescape),r+=' \n \n ",o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"resolvedMessage")&&(r+=' ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"resolvedMessage"),e.opts.autoescape),r+=""),r+="\n ",o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"resolvedBy")&&(r+="(",r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"resolvedBy"),e.opts.autoescape),r+=")"),r+=' \n \n
    \n
    ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"updatedAt"),e.opts.autoescape),r+="
    \n "),r+="\n\n
    \n Proposé par ",r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"user"),e.opts.autoescape),r+=' \n ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"userRoles"),o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"userRole")),e.opts.autoescape),r+=" \n le ",r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"item"),"createdAt"),e.opts.autoescape),r+=" \n
    \n ";r+="\n
    \n\n",r+="\n",r+="\n",s?s.rootRenderFunc(e,t,n,o,i):i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/admin/contributions.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l,u=null;l=o.contextOrFrameLookup(t,n,"here")+"admin/",n.set("here",l,!0),n.topLevel&&t.setVariable("here",l),n.topLevel&&t.addExport("here",l),s+="\n\n";var c;c={0:"L'élément n'existe plus",1:"Les informations sont incorrectes",2:"L'élément ne respecte pas la charte"},n.set("itemValues",c,!0),n.topLevel&&t.setVariable("itemValues",c),n.topLevel&&t.addExport("itemValues",c),s+=" \n\n";var p;p="label-danger",n.set("labelClass",p,!0),n.topLevel&&t.setVariable("labelClass",p),n.topLevel&&t.addExport("labelClass",p),s+='\n\n
      \n ',n=n.push();var d=o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"contributions");if(d)for(var h=d.length,m=0;m
      \n ',e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"vote-report-item.html.njk",!1,"components/element/admin/contributions.html.njk",!1,function(l,u){if(l)return void i(l);u.getExported(function(l,u){if(l)return void i(l);n.set("VoteReportRenderer",u),s+="\n ",s+=o.suppressValue((r=16,a=36,o.callWrap(o.memberLookup(u,"render"),'VoteReportRenderer["render"]',t,[f,!0,o.contextOrFrameLookup(t,n,"smallWidth")])),e.opts.autoescape),s+="\n
      \n "})});else{s+="\n ",s+="\n
    • \n ";var g=[];g.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"contribution-item.html.njk",!1,"components/element/admin/contributions.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),g.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),g.push(function(e,t){s+=e,t(null)}),e.waterfall(g,function(){s+="\n
    • \n "})}s+="\n "}n=n.pop(),s+=" \n
    \n\n\n",u?u.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/admin/pending-contribution.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null,s="";try{var l=null;if(r=0,a=21,o.callWrap(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"isPending"),'element["isPending"]',t,[])&&o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"pendingContribution")){s+='\n
    \n ';var u;u=o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"pendingContribution"),n.set("item",u,!0),n.topLevel&&t.setVariable("item",u),n.topLevel&&t.addExport("item",u),s+="\n ";var c=[];c.push(function(r){e.getTemplate(o.contextOrFrameLookup(t,n,"here")+"admin/contribution-item.html.njk",!1,"components/element/admin/pending-contribution.html.njk",null,function(e,t){if(e)return void i(e);r(null,t)})}),c.push(function(e,o){e.render(t.getVariables(),n,function(e,t){if(e)return void i(e);o(null,t)})}),c.push(function(e,t){s+=e,t(null)}),e.waterfall(c,function(){s+="\n
    \n"})}l?l.rootRenderFunc(e,t,n,o,i):i(null,s)}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/admin/vote-report-item.html.njk"]=function(){function e(e,t,n,o,i){try{var r=null,a=o.makeMacro(["item","lastElement","smallWidth"],[],function(i,r,a,s){var l=n;n=new o.Frame,s=s||{},s.hasOwnProperty("caller")&&n.set("caller",s.caller),n.set("item",i),n.set("lastElement",r),n.set("smallWidth",a);var u="";u+="\n\n";var c;c={0:"Anonyme",1:"Anonyme avec mail",2:"Utilisateur loggué",3:"Admin"},n.set("userRoles",c,!0),n.topLevel&&t.setVariable("userRoles",c),n.topLevel&&t.addExport("userRoles",c),u+=" \n\n";var p;p={0:"L'élément n'existe plus",1:"Les informations sont incorrectes",2:"L'élément ne respecte pas la charte",4:"L'élément est référencé plusieurs fois"},n.set("reportValues",p,!0),n.topLevel&&t.setVariable("reportValues",p),n.topLevel&&t.addExport("reportValues",p),u+=" \n\n";var d;d={"-2":"Ne respecte pas la charte","-1":"N'existe pas",0:"Existe mais infos mauvaises",1:"Existe",2:"Existe et valide info"},n.set("voteValues",d,!0),n.topLevel&&t.setVariable("voteValues",d),n.topLevel&&t.addExport("voteValues",d),u+=" \n\n",u+="\n\n";var h;h=3==o.memberLookup(i,"type")?o.contextOrFrameLookup(t,n,"reportValues"):o.contextOrFrameLookup(t,n,"voteValues"),n.set("itemValues",h,!0),n.topLevel&&t.setVariable("itemValues",h),n.topLevel&&t.addExport("itemValues",h),u+='\n\n
    =0?"label-success":"label-danger",n.set("labelClass",m,!0),n.topLevel&&t.setVariable("labelClass",m),n.topLevel&&t.addExport("labelClass",m),u+='\n \n
    ',u+=o.suppressValue(o.memberLookup(i,"createdAt"),e.opts.autoescape),u+="
    \n ",e.getFilter("default").call(t,a,!1)?u+='\n
    \n \n ':u+='\n \n ',u+=" \n Par : ",u+=o.suppressValue(o.memberLookup(i,"userEmail")?o.memberLookup(i,"userEmail"):"Anonyme",e.opts.autoescape),u+='\n ',u+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"userRoles"),o.memberLookup(i,"userRole")),e.opts.autoescape),u+=' \n \n
    \n\n
    ',u+=o.suppressValue(e.getFilter("capitalize").call(t,o.memberLookup(i,"comment")),e.opts.autoescape),u+="
    \n
    \n\n",n=l,new o.SafeString(u)});t.addExport("render"),t.setVariable("render",a),r?r.rootRenderFunc(e,t,n,o,i):i(null,"")}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/element/admin/votes-reports.html.njk"]=function(){function e(e,t,n,o,i){var r=null,a=null;try{var s=null,l=o.makeMacro(["label","array","smallWidth"],[],function(s,l,u,c){var p=n;n=new o.Frame,c=c||{},c.hasOwnProperty("caller")&&n.set("caller",c.caller),n.set("label",s),n.set("array",l),n.set("smallWidth",u);var d="";return d+="\n\n ",e.getFilter("length").call(t,l)>0&&(d+="\n

    ",d+=o.suppressValue(s,e.opts.autoescape),d+='

    \n
    \n ',e.getTemplate("components/element/admin/vote-report-item.html.njk",!1,"components/element/admin/votes-reports.html.njk",!1,function(s,c){if(s)return void i(s);c.getExported(function(s,c){if(s)return void i(s);t.setVariable("VoteReportItemRenderer",c),d+=" \n ",n=n.push();var p=l;if(p)for(var h=p.length,m=0;m
    \n '}n=n.pop(),d+=" \n
    \n "})})),d+="\n\n",n=p,new o.SafeString(d)});t.addExport("render"),t.setVariable("render",l),s?s.rootRenderFunc(e,t,n,o,i):i(null,"")}catch(e){i(o.handleError(e,r,a))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/element/delete.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;e.getTemplate("components/modals/abstract-modal.html.njk",!0,"components/modals/element/delete.html.njk",!1,function(s,l){if(s)return void i(s);a=l;for(var u in a.blocks)t.addBlock(u,a.blocks[u]);r+="\n\n",(a?function(e,t,n,o,i){i("")}:t.getBlock("submitText"))(e,t,n,o,function(s,l){if(s)return void i(s);r+=l,r+="\n\n",(a?function(e,t,n,o,i){i("")}:t.getBlock("id"))(e,t,n,o,function(s,l){if(s)return void i(s);r+=l,r+="\n\n",(a?function(e,t,n,o,i){i("")}:t.getBlock("content"))(e,t,n,o,function(s,l){if(s)return void i(s);r+=l,a?a.rootRenderFunc(e,t,n,o,i):i(null,r)})})})})}catch(e){i(o.handleError(e,null,null))}}function t(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="Supprimer",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function n(e,t,n,o,i){var r="";try{var n=n.push(!0);r+="delete",i(null,r)}catch(e){i(o.handleError(e,null,null))}}function o(e,t,n,o,i){var r="";try{var n=n.push(!0);r+='\n\t\n\t

    Un mail sera envoyé à ',r+=o.suppressValue(o.memberLookup(o.memberLookup(o.contextOrFrameLookup(t,n,"config"),"text"),"elementDefinite"),e.opts.autoescape),r+='

    \t\n\t\n\t

    \n\n\t
    \n\t\t\t\t\t\t\t\n\t
    \t\t\n',i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{b_id:t,b_content:n,root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/element/share.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+='\n\n',a?a.rootRenderFunc(e,t,n,o,i):i(null,r)}catch(e){i(o.handleError(e,null,null))}}return{root:e}}()}(),function(){(window.nunjucksPrecompiled=window.nunjucksPrecompiled||{})["components/modals/element/vote-content.html.njk"]=function(){function e(e,t,n,o,i){var r="";try{var a=null;r+="
    ",r+=o.suppressValue(o.contextOrFrameLookup(t,n,"isAdmin")?"Décidez pour":"Partagez votre connaissance concernant",e.opts.autoescape),r+=" ",r+=o.suppressValue(o.contextOrFrameLookup(t,n,"elDisplayName"),e.opts.autoescape),r+=' ',r+=o.suppressValue(o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"name"),e.opts.autoescape),r+='
    \n\n

    Vous devez sélectionner votre vote !

    \n\n';var s;s=o.memberLookup(o.contextOrFrameLookup(t,n,"element"),"status")==o.memberLookup(o.contextOrFrameLookup(t,n,"ElementStatus"),"PendingAdd"),n.set("isPendingAdd",s,!0),n.topLevel&&t.setVariable("isPendingAdd",s),n.topLevel&&t.addExport("isPendingAdd",s),r+="\n\n",o.contextOrFrameLookup(t,n,"isAdmin")||!o.contextOrFrameLookup(t,n,"isPendingAdd")?(r+='\n\t\n\t\n \n\n\t\n \n\n"):(r+='\n\n\t\t\n\t \n\n\t \n\t \n\n\t \n\t \n\n\t \n\t \n\n\t \n\t \n\n"),r+='\n\n
    \n\t';var l;l=o.contextOrFrameLookup(t,n,"isAdmin")?"Justificatif en cas de refus (qui sera inséré dans l'e-mail automatique)":"Commentaire optionnel pour la modération",n.set("placeHolder",l,!0),n.topLevel&&t.setVariable("placeHolder",l),n.topLevel&&t.addExport("placeHolder",l),r+='\n\t900?o.App.infoBarComponent.isDisplayedAside()||(o.App.infoBarComponent.displayAside(),t=!0):(o.App.infoBarComponent.isDisplayedBottom()||(o.App.infoBarComponent.displayBottom(),t=!0),$("#directory-content-map").stop(!0).css("margin-right","0")),o.App.infoBarComponent.isDisplayedAside()){var n=void 0;n=o.App.config.infobar.width?o.App.config.infobar.width:this.mapWidth()>1100?"540px":"470px","470px"==n?$("#element-info-bar").addClass("small-width"):$("#element-info-bar").removeClass("small-width"),t?$("#element-info-bar").css("width",n):$("#element-info-bar").animate({width:n},350,"swing"),this.updateDirectoryContentMarginIfInfoBarDisplayedAside(!t,n)}else e&&$("#element-info-bar").stop(!0),$("#element-info-bar").css("width","100%");e&&setTimeout(function(){o.App.infoBarComponent.refresh()},100),$("#directory-menu").is(":visible")&&!this.isMobileScreen()?setTimeout(function(){$("#directory-content").css("margin-left",o.App.directoryMenuComponent.width)},0):$("#directory-content").css("margin-left",0)},e.prototype.updateDirectoryContentMarginIfInfoBarDisplayedAside=function(e,t){void 0===e&&(e=!1),void 0===t&&(t=o.App.infoBarComponent.width()),o.App.infoBarComponent.isVisible&&(e?$("#directory-content-map").stop(!0).animate({"margin-right":t},350,"swing"):$("#directory-content-map").stop(!0).css("margin-right",t),o.App.component.updateMapSize())},e.prototype.updateMapSize=function(){o.App.infoBarComponent.isDisplayedAside()||$("#directory-content-map").stop(!0).css("margin-right","0"),o.App.mapComponent&&setTimeout(function(){o.App.mapComponent.resize()},0)},e}();n.AppComponent=i},{"./gogocarto":46}],2:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AppModule=n.AppModes=n.AppStates=n.AppDataType=void 0;var o=e("./managers/data-type.manager");Object.defineProperty(n,"AppDataType",{enumerable:!0,get:function(){return o.AppDataType}});var i=e("./managers/state.manager");Object.defineProperty(n,"AppStates",{enumerable:!0,get:function(){return i.AppStates}});var r=e("./managers/mode.manager");Object.defineProperty(n,"AppModes",{enumerable:!0,get:function(){return r.AppModes}});var a=e("./managers/elements.manager"),s=e("./managers/history-state.manager"),l=e("./managers/geocoding.manager"),u=e("./managers/map.manager"),c=e("./modules/geocoder.module"),p=e("./modules/taxonomy/filter.module"),d=e("./modules/taxonomy/filter-routing.module"),h=e("./modules/elements/elements.module"),m=e("./modules/elements/elements-json.module"),f=e("./modules/elements/favorite.module"),g=e("./modules/map/display-element-alone.module"),v=e("./modules/ajax.module"),y=e("./modules/taxonomy/taxonomy.module"),_=e("./modules/taxonomy/taxonomy-skos.module"),b=e("./modules/core/router.module"),w=e("./modules/login.module"),x=e("./modules/core/template.module"),k=e("./modules/core/history.module"),L=e("./modules/bounds.module"),C=e("./modules/core/document-title.module"),A=e("./modules/element/element-json-loader.module"),E=e("./modules/element/formater.module"),T=e("./modules/element/diff.module"),S=e("./modules/element/icons.module"),O=e("./modules/element/option-values.module"),M=e("./modules/elements/stamp.module"),P=e("./app.component"),D=e("./components/list/element-list.component"),F=e("./components/map/info-bar.component"),I=e("./components/search-bar/search-bar.component"),B=e("./components/directory-menu/directory-menu.component"),R=e("./components/directory-menu/filters.component"),N=e("./components/gogo-controls.component"),V=e("./components/map/map.component"),j=e("./components/map/map-controls.component"),z=e("./components/map/directions.component"),U=e("./components/custom-popup.component"),q=e("./components/modals/pick-address.component"),G=e("./components/modals/vote.component"),W=e("./components/modals/report.component"),H=e("./components/modals/delete.component"),Z=e("./components/modals/send-email.component"),$=e("./classes/config/gogo-config.class"),K=e("./utils/cookies"),J=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(K),X=function(){function e(e,t,n,a){void 0===t&&(t=!1),void 0===n&&(n=!0),void 0===a&&(a={}),this.isIframe=!1,this.loadFullTaxonomy=!0,this.request={},this.modeManager=new r.ModeManager,this.stateManager=new i.StateManager,this.dataTypeManager=new o.DataTypeManager,this.historyStateManager=new s.HistoryStateManager,this.geocoder=new c.GeocoderModule,this.filterModule=new p.FilterModule,this.filterRoutingModule=new d.FilterRoutingModule,this.elementsModule=new h.ElementsModule,this.elementsJsonModule=new m.ElementsJsonModule,this.displayElementAloneModule=new g.DisplayElementAloneModule,this.ajaxModule=new v.AjaxModule,this.routerModule=new b.RouterModule,this.templateModule=new x.TemplateModule,this.historyModule=new k.HistoryModule,this.taxonomyModule=new y.TaxonomyModule,this.taxonomySkosModule=new _.TaxonomySkosModule,this.documentTitleModule=new C.DocumentTitleModule,this.elementJsonParser=new A.ElementJsonParserModule,this.elementFormaterModule=new E.ElementFormaterModule,this.elementDiffModule=new T.ElementDiffModule,this.elementIconsModule=new S.ElementIconsModule,this.elementOptionValuesModule=new O.ElementOptionValuesModule,this.favoriteModule=new f.FavoriteModule,this.infoBarComponent=new F.InfoBarComponent,this.mapComponent=new V.MapComponent,this.searchBarComponent=new I.SearchBarComponent,this.elementListComponent=new D.ElementListComponent,this.directoryMenuComponent=new B.DirectoryMenuComponent,this.filtersComponent=new R.FiltersComponent,this.gogoControlComponent=new N.GoGoControlComponent,this.directionsComponent=new z.DirectionsComponent,this.mapControlsComponent=new j.MapControlsComponent,this.customPopupComponent=new U.CustomPopupComponent,this.config=new $.GoGoConfig(e),this.isIframe=t,this.loadFullTaxonomy=n,this.request=a,this.loginModule=new w.LoginModule(this.config.security.userRoles,this.config.security.userEmail),this.boundsModule=new L.BoundsModule(this.config),this.stampModule=new M.StampModule(this.config),J.createCookie("firstVisit","done")}return e.prototype.initialize=function(){this.component=new P.AppComponent,this.elementsManager=new a.ElementsManager,this.geocodingManager=new l.GeocodingManager,this.mapManager=new u.MapManager,this.pickAddressComponent=new q.PickAddressComponent,this.voteComponent=new G.VoteComponent,this.reportComponent=new W.ReportComponent,this.deleteComponent=new H.DeleteComponent,this.sendEmailComponent=new Z.SendEmailComponent},e.prototype.map=function(){return this.mapComponent?this.mapComponent.getMap():null},e.prototype.elements=function(){return this.elementsModule.currVisibleElements()},e.prototype.elementById=function(e){return this.elementsModule.getElementById(e)},Object.defineProperty(e.prototype,"DEAModule",{get:function(){return this.displayElementAloneModule},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"currMainId",{get:function(){return this.filtersComponent.currentActiveMainOptionId},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"state",{get:function(){return this.stateManager.state},enumerable:!0,configurable:!0}),e.prototype.setState=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n=!1),this.stateManager.setState(e,t,n)},Object.defineProperty(e.prototype,"mode",{get:function(){return this.modeManager.mode},enumerable:!0,configurable:!0}),e.prototype.setMode=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!0),this.modeManager.setMode(e,t,n)},Object.defineProperty(e.prototype,"dataType",{get:function(){return this.dataTypeManager.dataType},enumerable:!0,configurable:!0}),e.prototype.setDataType=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=null),this.dataTypeManager.setDataType(e,t,n)},e}();n.AppModule=X},{"./app.component":1,"./classes/config/gogo-config.class":4,"./components/custom-popup.component":22,"./components/directory-menu/directory-menu.component":24,"./components/directory-menu/filters.component":25,"./components/gogo-controls.component":32,"./components/list/element-list.component":33,"./components/map/directions.component":34,"./components/map/info-bar.component":35,"./components/map/map-controls.component":36,"./components/map/map.component":37,"./components/modals/delete.component":40,"./components/modals/pick-address.component":41,"./components/modals/report.component":42,"./components/modals/send-email.component":43,"./components/modals/vote.component":44,"./components/search-bar/search-bar.component":45,"./managers/data-type.manager":47,"./managers/elements.manager":48,"./managers/geocoding.manager":49,"./managers/history-state.manager":50,"./managers/map.manager":51,"./managers/mode.manager":52,"./managers/state.manager":53,"./modules/ajax.module":54,"./modules/bounds.module":55,"./modules/core/document-title.module":56,"./modules/core/history.module":57,"./modules/core/router.module":58,"./modules/core/template.module":59,"./modules/element/diff.module":60,"./modules/element/element-json-loader.module":61,"./modules/element/formater.module":62,"./modules/element/icons.module":63,"./modules/element/option-values.module":64,"./modules/elements/elements-json.module":65,"./modules/elements/elements.module":66,"./modules/elements/favorite.module":67,"./modules/elements/stamp.module":68,"./modules/geocoder.module":69,"./modules/login.module":70,"./modules/map/display-element-alone.module":71,"./modules/taxonomy/filter-routing.module":72,"./modules/taxonomy/filter.module":73,"./modules/taxonomy/taxonomy-skos.module":74,"./modules/taxonomy/taxonomy.module":75,"./utils/cookies":76}],3:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=e("./taxonomy/category.class");Object.defineProperty(n,"Category",{enumerable:!0,get:function(){return o.Category}});var i=e("./element/element.class");Object.defineProperty(n,"Element",{enumerable:!0,get:function(){return i.Element}}),Object.defineProperty(n,"ElementStatus",{enumerable:!0,get:function(){return i.ElementStatus}}),Object.defineProperty(n,"ElementModerationState",{enumerable:!0,get:function(){return i.ElementModerationState}});var r=e("./element/element-base.class");Object.defineProperty(n,"ElementBase",{enumerable:!0,get:function(){return r.ElementBase}});var a=e("./taxonomy/option.class");Object.defineProperty(n,"Option",{enumerable:!0,get:function(){return a.Option}});var s=e("./element/option-value.class");Object.defineProperty(n,"OptionValue",{enumerable:!0,get:function(){return s.OptionValue}});var l=e("./element/category-value.class");Object.defineProperty(n,"CategoryValue",{enumerable:!0,get:function(){return l.CategoryValue}});var u=e("./element/vote-report.class");Object.defineProperty(n,"VoteReport",{enumerable:!0,get:function(){return u.VoteReport}});var c=e("./element/contribution.class");Object.defineProperty(n,"Contribution",{enumerable:!0,get:function(){return c.Contribution}});var p=e("./history-state.class");Object.defineProperty(n,"HistoryState",{enumerable:!0,get:function(){return p.HistoryState}});var d=e("./map/viewport.class");Object.defineProperty(n,"ViewPort",{enumerable:!0,get:function(){return d.ViewPort}});var h=e("./event.class");Object.defineProperty(n,"Event",{enumerable:!0,get:function(){return h.Event}});var m=e("./element/postal-address.class");Object.defineProperty(n,"PostalAddress",{enumerable:!0,get:function(){return m.PostalAddress}});var f=e("./element/stamp.class");Object.defineProperty(n,"Stamp",{enumerable:!0,get:function(){return f.Stamp}});var g=e("./element/element-url.class");Object.defineProperty(n,"ElementUrl",{enumerable:!0,get:function(){return g.ElementUrl}})},{"./element/category-value.class":7,"./element/contribution.class":8,"./element/element-base.class":9,"./element/element-url.class":10,"./element/element.class":11,"./element/option-value.class":12,"./element/postal-address.class":13,"./element/stamp.class":14,"./element/vote-report.class":15,"./event.class":16,"./history-state.class":17,"./map/viewport.class":19,"./taxonomy/category.class":20,"./taxonomy/option.class":21}],4:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GoGoConfig=void 0;var o="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},i=e("../../gogocarto"),r=e("../map/tile-layer.class"),a=e("./gogo-feature.class"),s=e("./gogo-default-feature"),l=function(){function e(e){this.text={element:"élément",elementDefinite:"l'élément",elementIndefinite:"un élément",elementPlural:"éléments",collaborativeModeration:"

    \n Lorsqu'un élément est ajouté ou modifié, la mise à jour des données n'est pas instantanée. L'élément va d'abords apparaître \"grisé\" sur la carte,\n et il sera alors possible à tous les utilisateurs logué de voter une et une seule fois pour cet élément. \n Ce vote n'est pas une opinion, mais un partage de connaissance. \n Si vous connaissez cet élément, ou savez que cet élément n'existe pas, alors votre savoir nous intéresse !\n

    \n

    \n Au bout d'un certain nombre de votes, l'élément pourra alors être automatiquement validé ou refusé. \n En cas de litige (des votes à la fois positifs et négatifs), un modérateur interviendra au plus vite. On compte sur vous!\n

    "},this.data={taxonomy:void 0,elements:void 0,elementsCompactApiUrl:void 0,elementByIdUrl:void 0,requestByBounds:!1,retrieveElementsByApi:!1,showPending:!0},this.menu={width:void 0,smallWidthStyle:!1,showOnePanePerMainOption:!1,showCheckboxForMainFilterPane:!0,showCheckboxForSubFilterPane:!0},this.infobar={width:void 0,activate:!0,bodyTemplate:void 0},this.general={activateHistoryStateAndRouting:!0},this.map={defaultBounds:L.latLngBounds(L.latLng(52,10),L.latLng(40,-5)),defaultBoundsProvided:!1,defaultCenter:L.latLng(46,0),maxBounds:L.latLngBounds(L.latLng(-90,-180),L.latLng(90,180)),saveViewportInCookies:!1,saveTileLayerInCookies:!1,defaultTileLayer:"cartodb",tileLayers:[new r.TileLayer("mapbox","https://api.mapbox.com/styles/v1/mapbox/streets-v10/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1Ijoic2ViYWxsb3QiLCJhIjoiY2l4MGtneGVjMDF0aDJ6cWNtdWFvc2Y3YSJ9.nIZr6G2t08etMzft_BHHUQ"),new r.TileLayer("mapboxlight","https://api.mapbox.com/styles/v1/mapbox/light-v9/tiles/256/{z}/{x}/{y}?access_token=pk.eyJ1Ijoic2ViYWxsb3QiLCJhIjoiY2l4MGtneGVjMDF0aDJ6cWNtdWFvc2Y3YSJ9.nIZr6G2t08etMzft_BHHUQ"),new r.TileLayer("cartodb","https://cartodb-basemaps-{s}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png"),new r.TileLayer("hydda","https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png"),new r.TileLayer("wikimedia","https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png"),new r.TileLayer("monochrome","https://www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png"),new r.TileLayer("lyrk ","https://tiles.lyrk.org/ls/{z}/{x}/{y}?apikey =982c82cc765f42cf950a57de0d891076"),new r.TileLayer("osmfr","https://{s}.tile.openstreetmap.fr/osmfr/{z}/{x}/{y}.png"),new r.TileLayer("stamen","https://stamen-tiles-{s}.a.ssl.fastly.net/toner-lite/{z}/{x}/{y}.png"),new r.TileLayer("stamenTerrain","https://stamen-tiles-{s}.a.ssl.fastly.net/terrain/{z}/{x}/{y}.png"),new r.TileLayer("stamenWaterColor","https://stamen-tiles-{s}.a.ssl.fastly.net/watercolor/{z}/{x}/{y}.png"),new r.TileLayer("openriver","https://{s}.tile.openstreetmap.fr/openriverboatmap/{z}/{x}/{y}.png"),new r.TileLayer("thunderforest","https://{s}.tile.thunderforest.com/outdoors/{z}/{x}/{y}.png"),new r.TileLayer("Pas de fond","")]},this.features={favorite:new a.GoGoFeature,share:new a.GoGoFeature,directions:new a.GoGoFeature,sendMail:new a.GoGoFeature,elementHistory:new a.GoGoFeature,listMode:new a.GoGoFeature,export:new a.GoGoFeature,layers:new a.GoGoFeature,mapdefaultview:new a.GoGoFeature,pending:new a.GoGoFeature,searchPlace:new a.GoGoFeature,searchElements:new a.GoGoFeature,searchGeolocate:new a.GoGoFeature,edit:new a.GoGoFeature,delete:new a.GoGoFeature,report:new a.GoGoFeature,vote:new a.GoGoFeature,moderation:new a.GoGoFeature,stamp:new a.GoGoFeature,directModeration:new a.GoGoFeature,customPopup:new a.GoGoFeature},this.security={userRoles:["anonymous"],userEmail:"",loginAction:function(){console.warn("[GoGoCarto] You need login to access this feature")},hideMailsByShowingSendMailButton:!0},this.theme="default",this.colors={neutralDark:void 0,neutralDarkTransparent:void 0,neutralSoftDark:void 0,neutral:void 0,neutralLight:void 0,secondary:void 0,primary:void 0,background:void 0,textColor:void 0,disableColor:void 0,listTitle:void 0,listTitleBackBtn:void 0,listTitleBackground:void 0,searchBar:void 0,interactiveSection:void 0,mainFont:void 0,titleFont:void 0,taxonomyMainTitleFont:void 0},this.images={buttonOpenMenu:void 0,menuTopImage:void 0},e.features||(e.features=s.DEFAULT_FEATURES),this.recursiveFillProperty(this,e),this.data.retrieveElementsByApi="string"==typeof this.data.elements,e.map&&e.map.defaultBounds&&(this.map.defaultBoundsProvided=!0),this.features.sendMail.active||(this.security.hideMailsByShowingSendMailButton=!1),console.log(this)}return e.prototype.isFeatureActivated=function(e){return this.features.hasOwnProperty(e)?this.features[e].active&&(!i.App.isIframe||this.features[e].inIframe):(console.warn("[GoGoCartoJs] feature "+e+" doesn't exist"),!1)},e.prototype.isFeatureAvailable=function(e){if(!this.features.hasOwnProperty(e))return console.warn("[GoGoCartoJs] feature "+e+" doesn't exist"),!1;var t=this.features[e],n=!0;return t.hasOwnProperty("roles")&&(n=t.hasRole(i.App.loginModule.getRoles())),this.isFeatureActivated(e)&&n},e.prototype.recursiveFillProperty=function(e,t){var n=["roles","defaultCenter","defaultBounds","tileLayers","options"];e instanceof a.GoGoFeature&&(e.active=!0);for(var i in t)if(e.hasOwnProperty(i))if("object"!=o(e[i])||n.indexOf(i)>-1){var r=void 0;switch(i){case"defaultBounds":r=L.latLngBounds(t[i]);break;case"defaultCenter":r=L.latLng(t[i]);break;case"bodyTemplate":var s=new commonmark.Parser,l=new commonmark.HtmlRenderer;r=l.render(s.parse(t[i]));break;default:r=t[i]}e[i]=r}else this.recursiveFillProperty(e[i],t[i]);else console.warn("[GoGoCarto] Config option '"+i+"' does not exist")},e}();n.GoGoConfig=l},{"../../gogocarto":46,"../map/tile-layer.class":18,"./gogo-default-feature":5,"./gogo-feature.class":6}],5:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});n.DEFAULT_FEATURES={listMode:{},searchPlace:{},searchGeolocate:{},favorite:{},share:{},directions:{},layers:{},mapdefaultview:{}}},{}],6:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(){this.active=!1,this.url="",this.roles=["anonymous","anonymous_with_mail","user","admin"],this.inIframe=!0,this.options={}}return e.prototype.hasRole=function(e){return this.roles.some(function(t){return e.indexOf(t)>-1})},e}();n.GoGoFeature=o},{}],7:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e){this.children=[],this.category=e}return e.prototype.addOptionValue=function(e){this.children.push(e)},Object.defineProperty(e.prototype,"isLastCategoryDepth",{get:function(){return this.children.every(function(e){return 0==e.option.subcategories.length})},enumerable:!0,configurable:!0}),e}();n.CategoryValue=o},{}],8:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e){this.type=e.type,this.status=e.status,this.user=e.user,this.userRole=e.userRole,this.resolvedMessage=e.resolvedMessage,this.resolvedBy=e.resolvedBy,this.updatedAt=e.updatedAt,this.createdAt=e.createdAt}return e}();n.Contribution=o},{}],9:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementBase=n.ElementModerationState=n.ElementStatus=void 0;var o=e("../../gogocarto"),i=n.ElementStatus=void 0;!function(e){ e[e.ModifiedElement=-5]="ModifiedElement",e[e.Deleted=-4]="Deleted",e[e.CollaborativeRefused=-3]="CollaborativeRefused",e[e.AdminRefused=-2]="AdminRefused",e[e.PendingModification=-1]="PendingModification",e[e.PendingAdd=0]="PendingAdd",e[e.AdminValidate=1]="AdminValidate",e[e.CollaborativeValidate=2]="CollaborativeValidate"}(i||(n.ElementStatus=i={}));var r=n.ElementModerationState=void 0;!function(e){e[e.GeolocError=-2]="GeolocError",e[e.NoOptionProvided=-1]="NoOptionProvided",e[e.NotNeeded=0]="NotNeeded",e[e.ReportsSubmitted=1]="ReportsSubmitted",e[e.VotesConflicts=2]="VotesConflicts",e[e.PendingForTooLong=3]="PendingForTooLong",e[e.PossibleDuplicate=4]="PossibleDuplicate"}(r||(n.ElementModerationState=r={}));var a=function(){function e(e){this.modifiedElement=null,this.optionsValues=[],this.stamps=[],this.mainOptionOwnerIds=[],this.searchScore=null,this.isFullyLoaded=!1,this.updateWithJson(e)}return e.prototype.updateWithJson=function(e){o.App.elementJsonParser.load(e,this)},e.prototype.createOptionsTree=function(){o.App.elementOptionValuesModule.createOptionsTree(this)},e.prototype.getOptionTree=function(){return this.optionTree?this.optionTree:(this.createOptionsTree(),this.optionTree)},e.prototype.getRootCategoriesValues=function(){var e=this.getOptionTree();return 0==e.children.length?[]:e.children[0].category.isRootCategory?e.children:e.children[0].children[0].children},e.prototype.getOptionValueByCategoryId=function(e){return this.optionsValues.filter(function(t){return t.categoryOwner.id==e})},e.prototype.getOptionValuesNames=function(){return this.optionsValues.map(function(e){return e.option.nameShort})},e.prototype.haveOption=function(e){return this.optionsValues.map(function(e){return e.optionId}).indexOf(e.id)>=0},e}();n.ElementBase=a},{"../../gogocarto":46}],10:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e){this.type="",this.value="","string"==typeof e&&(e={key:"",value:e}),this.type=e.type||"",this.value=e.value||""}return e}();n.ElementUrl=o},{}],11:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Element=n.ElementModerationState=n.ElementStatus=void 0;var o=e("./element-base.class");Object.defineProperty(n,"ElementStatus",{enumerable:!0,get:function(){return o.ElementStatus}}),Object.defineProperty(n,"ElementModerationState",{enumerable:!0,get:function(){return o.ElementModerationState}});var i=e("../../app.module"),r=e("../../components/map/marker.component"),a=e("../../components/element/element.component"),s=e("../../gogocarto"),l=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),u=function(e){function t(t){var n=e.call(this,t)||this;return n.marker_=null,n.component_=null,n.isInitialized_=!1,n.iconsToDisplay=[],n.isDisplayed=!1,n.isShownAlone=!1,n.isFavorite=!1,n.needToBeUpdatedWhenShown=!0,n}return l(t,e),t.prototype.updateWithJson=function(t){e.prototype.updateWithJson.call(this,t),this.createOptionsTree(),this.update(!0)},t.prototype.initialize=function(){s.App.elementIconsModule.updateIconsToDisplay(this),this.marker_=new r.Marker(this.id,this.position),this.isInitialized_=!0},t.prototype.update=function(e){if(void 0===e&&(e=!1),this.needToBeUpdatedWhenShown||s.App.mode==i.AppModes.List||e){s.App.elementIconsModule.updateIconsToDisplay(this);var t=this.getCurrOptionsValues().filter(function(e){return e.isFilledByFilters});t.push(this.getCurrMainOptionValue());for(var n=0,o=t;n0&&this.getIconsToDisplay()[0]?this.getIconsToDisplay()[0].colorOptionId:null,this.marker&&this.marker.update(),this.needToBeUpdatedWhenShown=!1}},t.prototype.updateDistance=function(){this.distance=null,this.distanceFromBoundsCenter=s.App.boundsModule.extendedBounds?s.App.boundsModule.extendedBounds.getCenter().distanceTo(this.position)/1e3:null,s.App.geocoder.getLocation()?this.distance=s.App.mapComponent.distanceFromLocationTo(this.position):this.distance=this.distanceFromBoundsCenter,this.distance=this.distance?Math.round(1.2*this.distance):null,this.distanceFromBoundsCenter=this.distanceFromBoundsCenter?Math.round(1.2*this.distanceFromBoundsCenter):null},t.prototype.getProperty=function(e){return s.App.elementFormaterModule.getProperty(this,e)},t.prototype.getIconsToDisplay=function(){return this.iconsToDisplay.sort(function(e,t){return e.isFilledByFilters?-1:1})},t.prototype.getCurrOptionsValues=function(){return s.App.config.menu.showOnePanePerMainOption?this.optionsValues.filter(function(e){return e.option.mainOwnerId==s.App.currMainId}):this.optionsValues},t.prototype.getCurrDeepestOptionsValues=function(){for(var e=this.getCurrOptionsValues(),t=[],n=0,o=e;n=2?(this.optionId=e[0],this.index=t,this.description=3==e.length?e[2]:""):"object"==(void 0===e?"undefined":o(e))&&(e["@id"]?this.optionId=(0,i.parseUriId)(e["@id"]):(this.optionId=e.categoryId||e.optionId,this.index=t,this.description=e.description||"")),this.diff=e.diff}return Object.defineProperty(e.prototype,"option",{get:function(){return this.option_?this.option_:this.option_=r.App.taxonomyModule.getOptionById(this.optionId)},enumerable:!0,configurable:!0}),e.prototype.setRecursivelyFilledByFilters=function(e){this.isFilledByFilters=e;for(var t=0,n=this.children;tOpenStreetMap'}return e}();n.TileLayer=o},{}],19:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(e,t,n){void 0===e&&(e=0),void 0===t&&(t=0),void 0===n&&(n=0),this.lat=e,this.lng=t,this.zoom=n,this.lat=e||0,this.lng=t||0,this.zoom=n||0}return e.prototype.toString=function(){var e=this.zoom>14?4:this.zoom>10?3:2;return"@"+this.lat.toFixed(e)+","+this.lng.toFixed(e)+","+this.zoom+"z"},e.prototype.fromString=function(e){if(!e)return null;var t=e.split("@").pop().split(",");return 3!=t.length?(console.log("ViewPort fromString erreur",e),null):(this.lat=parseFloat(t[0])%360,this.lng=parseFloat(t[1])%360,this.zoom=parseInt(t[2].slice(0,-1)),this)},e.prototype.toLocation=function(){return L.latLng(this.lat,this.lng)},e}();n.ViewPort=o},{}],20:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Category=void 0;var o=e("../../components/directory-menu/category-option-tree-node.class"),i=e("../../utils/string-helpers"),r=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),a=function(e){function t(t){var n=e.call(this,o.CategoryOptionTreeNodeType.Category,"#category-","#subcategorie-checkbox-",".options-wrapper")||this;return n.id=t.id,n.name=(0,i.capitalize)(t.name||""),n.nameShort=(0,i.capitalize)(t.nameShort||n.name),n.isRootCategory=t.isRootCategory||!1,n.displayInMenu=(t.displayInMenu||n.isRootCategory)&&""!=n.name,n.displayInInfoBar=(t.displayInInfoBar||n.isRootCategory)&&""!=n.name,n.showExpanded=!1!==t.showExpanded,n.unexpandable=t.unexpandable||!1,n.enableDescription=t.enableDescription||!1,n.displaySuboptionsInline=t.displaySuboptionsInline||!1,n.isMandatory=!1!==t.isMandatory,n.useForFiltering=!1!==t.useForFiltering,n.mainOwnerId=t.mainOwnerId||null,n}return r(t,e),t.prototype.addOption=function(e){this.children.push(e)},Object.defineProperty(t.prototype,"options",{get:function(){return this.children},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"disabledOptions",{get:function(){return this.disabledChildren()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"nonDisabledOptions",{get:function(){return this.nonDisabledChildren()},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"checkedOptions",{get:function(){return this.checkedChildren()},enumerable:!0,configurable:!0}),t}(o.CategoryOptionTreeNode);n.Category=a},{"../../components/directory-menu/category-option-tree-node.class":23,"../../utils/string-helpers":79}],21:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Option=void 0;var o=e("../../components/directory-menu/category-option-tree-node.class"),i=e("../../utils/string-helpers"),r=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),a=function(e){function t(t){var n=e.call(this,o.CategoryOptionTreeNodeType.Option,"#option-","#option-checkbox-",".subcategories-wrapper")||this;return n.parentOptionIds=[],n.name=(0,i.capitalize)(t.name),n.nameShort=(0,i.capitalize)(t.nameShort||n.name),n.id="id"in t?""+t.id:(0,i.slugify)(n.nameShort),n.intId="number"==typeof t.id?t.id:t.intId,n.displayInMenu=!1!==t.displayInMenu,n.displayInInfoBar=!1!==t.displayInInfoBar,n.displayChildrenInMenu=!1!==t.displayChildrenInMenu,n.displayChildrenInInfoBar=!1!==t.displayChildrenInInfoBar,n.showExpanded=t.showExpanded||!1,n.unexpandable=t.unexpandable||!1,n.color=t.color,n.softColor=t.softColor||n.color,n.icon=t.icon,n.textHelper=t.textHelper,n.useIconForMarker="useIconForMarker"in t?t.useIconForMarker:!!n.icon,n.useColorForMarker="useColorForMarker"in t?t.useColorForMarker:!!n.color,n}return r(t,e),t.prototype.addCategory=function(e){this.children.push(e)},t.prototype.isCollapsible=function(){return this.getDom().hasClass("option-collapsible")},Object.defineProperty(t.prototype,"subcategories",{get:function(){return this.children},enumerable:!0,configurable:!0}),Object.defineProperty(t.prototype,"allChildrenOptions",{get:function(){return this.recursivelyGetChildrenOption(this)},enumerable:!0,configurable:!0}),t.prototype.recursivelyGetChildrenOption=function(e){for(var t=[],n=0,o=e.subcategories;n0)||this.show(),$("#gogo-custom-popup #btn-close-custom-popup").click(function(){return e.hide()}))},e.prototype.hide=function(e){void 0===e&&(e=250),$("#gogo-custom-popup").fadeOut(e),r.createCookie(this.getCookieId(),!0)},e.prototype.show=function(e){void 0===e&&(e=400),$("#gogo-custom-popup").fadeIn(e)},e.prototype.getId=function(){return this.options.id||0},e.prototype.getCookieId=function(){return"gogoCustomPopup-"+this.getId()+"-Closed"},e}();n.CustomPopupComponent=a},{"../gogocarto":46,"../utils/cookies":76}],23:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.CategoryOptionTreeNode=n.CategoryOptionTreeNodeType=void 0;var o=e("../../gogocarto"),i=n.CategoryOptionTreeNodeType=void 0;!function(e){e[e.Option=0]="Option",e[e.Category=1]="Category"}(i||(n.CategoryOptionTreeNodeType=i={}));var r=function(){function e(e,t,n,o){this.TYPE=e,this.DOM_ID=t,this.DOM_CHECKBOX_ID=n,this.DOM_CHILDREN_CLASS=o,this.children=[],this.isPristine=!0,this.ownerId=null,this.mainOwnerId=null,this.isChecked=!0,this.isDisabled=!1,this.isMainOption=!1}return e.prototype.getDom=function(){return $(this.DOM_ID+this.id)},e.prototype.getDomCheckbox=function(){return $(this.DOM_CHECKBOX_ID+this.id)},e.prototype.getDomChildren=function(){return this.getDom().next(this.DOM_CHILDREN_CLASS)},e.prototype.getOwner=function(){return this.TYPE==i.Option?o.App.taxonomyModule.getCategoryById(this.ownerId):this.TYPE==i.Category?o.App.taxonomyModule.getOptionById(this.ownerId):null},e.prototype.disabledChildren=function(){return this.children.filter(function(e){return e.isDisabled})},e.prototype.nonDisabledChildren=function(){return this.children.filter(function(e){return!e.isDisabled})},e.prototype.checkedChildren=function(){return this.children.filter(function(e){return e.isChecked})},e.prototype.isOption=function(){return this.TYPE==i.Option},e.prototype.setChecked=function(e){this.isChecked=e,this.getDom().toggleClass("checked",e),this.getDomCheckbox().prop("checked",e),this.isPristine=!1},e.prototype.setDisabled=function(e){this.isDisabled=e,this.getDom().toggleClass("disabled",e),e&&this.setChecked(!1),this.isPristine=!1},e.prototype.toggle=function(e,t){void 0===e&&(e=null),void 0===t&&(t=!0);var n;if(n=null!=e?e:!this.isChecked,this.isOption()&&this.isPristine&&t&&(this.recursivelyGetPristine(this).forEach(function(e){e.toggle(!1,!1)}),n=!0),this.setChecked(n),this.setDisabled(!n),!this.isMainOption||!o.App.config.menu.showOnePanePerMainOption)for(var i=0,r=this.children;ie.width?n=e.width:n<0&&(n=0),n.3)&&e.hide()}})},e.prototype.updateSize=function(){var e,t=o.App.component.width(),n=o.App.config.menu.width?o.App.config.menu.width:260,i=o.App.config.menu.width?o.App.config.menu.width:290;o.App.config.menu.showOnePanePerMainOption&&(n+=50,i+=50),e=t>850?t>1450?i:n:Math.min(Math.min(Math.max(t-60,n),i),t-20),this.dom.css("width",e+"px"),this.width=e,e<340||o.App.config.menu.smallWidthStyle?this.dom.addClass("small-width"):this.dom.removeClass("small-width")},e}();n.DirectoryMenuComponent=r},{"../../classes/classes":3,"../../gogocarto":46}],25:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FiltersComponent=void 0;var o=e("../../gogocarto"),i=function(){function e(){this.currentActiveMainOptionId=null}return e.prototype.initialize=function(){var e=this;$(".filter-menu .tooltipped").tooltip(),$("#filter-favorite").click(function(e){var t=$("#favorite-checkbox"),n=!t.is(":checked");$(this).toggleClass("checked",n),o.App.filterModule.showOnlyFavorite(n),n&&(o.App.filterModule.showOnlyPending(!1),$("#pending-checkbox").prop("checked",!1),o.App.filterModule.showOnlyModeration(!1),$("#moderation-checkbox").prop("checked",!1)),o.App.elementsModule.updateElementsToDisplay(!0),t.prop("checked",n),e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault()}),$("#filter-pending").click(function(e){var t=$("#pending-checkbox"),n=!t.is(":checked");o.App.filterModule.showOnlyPending(n),n&&(o.App.filterModule.showOnlyFavorite(!1),$("#favorite-checkbox").prop("checked",!1),o.App.filterModule.showOnlyModeration(!1),$("#moderation-checkbox").prop("checked",!1)),o.App.elementsModule.updateElementsToDisplay(!0),t.prop("checked",n),e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault()}),$("#filter-moderation").click(function(e){var t=$("#moderation-checkbox"),n=!t.is(":checked");o.App.filterModule.showOnlyModeration(n),n&&(o.App.filterModule.showOnlyFavorite(!1),$("#favorite-checkbox").prop("checked",!1),o.App.filterModule.showOnlyPending(!1),$("#pending-checkbox").prop("checked",!1)),o.App.elementsModule.updateElementsToDisplay(!0),t.prop("checked",n),e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault()});var t=this;$(".main-categories .main-icon").click(function(e){var n=$(this).attr("data-option-id");t.setMainOption(n)}),$(".main-categories").on("scroll",function(){$("#active-main-option-background").css("top",$("#main-option-gogo-icon-"+e.currentActiveMainOptionId).position().top)}),$(".subcategory-item .name-wrapper:not(.uncheckable)").click(function(){var e=$(this).attr("data-category-id");o.App.taxonomyModule.getCategoryById(e).toggleChildrenDetail()}),$(".subcategory-item .checkbox-wrapper").click(function(e){e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault();var t=$(this).attr("data-category-id");o.App.taxonomyModule.getCategoryById(t).toggle()}),$("#main-option-all.show-one-pane-per-main-option .gogo-icon-name-wrapper").hover(function(e){var t=$(this).attr("data-option-id"),n=$("#main-option-gogo-icon-"+t);n.hasClass("hover")||n.addClass("hover")},function(e){var t=$(this).attr("data-option-id");$("#main-option-gogo-icon-"+t).removeClass("hover")}),$(".subcategorie-option-item:not(#filter-favorite):not(#filter-pending):not(#filter-moderation) .option-name").click(function(e){var t=$(this).closest(".subcategorie-option-item"),n=t.attr("data-option-id"),i=o.App.taxonomyModule.getOptionById(n);if(i.isMainOption&&o.App.config.menu.showOnePanePerMainOption)o.App.filtersComponent.setMainOption(i.id);else{if(t.hasClass("uncheckable"))return;i.isCollapsible()?i.toggleChildrenDetail():i.toggle()}}),$(".subcategorie-option-item:not(#filter-favorite):not(#filter-pending):not(#filter-moderation)").find(".icon, .checkbox-wrapper").click(function(e){e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault();var t=$(this).closest(".subcategorie-option-item").attr("data-option-id");o.App.taxonomyModule.getOptionById(t).toggle()})},e.prototype.setMainOption=function(e){if(this.currentActiveMainOptionId!=e){null!=this.currentActiveMainOptionId&&o.App.elementsModule.clearCurrentsElement();var t=this.currentActiveMainOptionId;if(this.currentActiveMainOptionId=e,"all"==e)$("#menu-subcategories-title").text("Tous les "+o.App.config.text.elementPlural);else{var n=o.App.taxonomyModule.getMainOptionById(e);$("#menu-subcategories-title").text(n.name)}this.updateMainOptionBackground(),o.App.infoBarComponent.hide(),null!=t&&o.App.historyModule.updateCurrState(),setTimeout(function(){o.App.elementListComponent.reInitializeElementToDisplayLength(),o.App.boundsModule.updateFilledBoundsAccordingToNewMainOptionId(),o.App.elementsManager.checkForNewElementsToRetrieve(),o.App.elementsModule.updateElementsToDisplay(!0,!0)},400)}},e.prototype.updateMainOptionBackground=function(){var e=this.currentActiveMainOptionId;$(".main-option-subcategories-container:not(#main-option-"+e+")").hide(),$("#main-option-"+e).fadeIn(400),$(".main-categories .main-icon").removeClass("active"),$("#main-option-gogo-icon-"+e).addClass("active"),$("#main-option-gogo-icon-"+e).position()&&$("#active-main-option-background").animate({top:$("#main-option-gogo-icon-"+e).position().top},400,"easeOutQuart")},e}();n.FiltersComponent=i},{"../../gogocarto":46}],26:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementMenuComponent=void 0;var o=e("../../app.module"),i=e("../../gogocarto"),r=e("../../utils/string-helpers"),a=e("./stamp.component"),s=function(){function e(e,t){this.dom=$(e),this.element=t,this.initialize(),this.updateFavoriteIcon()}return e.prototype.updateFavoriteIcon=function(){this.dom.find(".item-add-favorite").toggle(!this.element.isFavorite),this.dom.find(".item-remove-favorite").toggle(this.element.isFavorite)},e.prototype.showFullTextMenu=function(e){e?(this.dom.addClass("full-text"),this.dom.find(".tooltipped").tooltip("remove")):this.dom.removeClass("full-text")},e.prototype.initialize=function(){var e=this;this.dom.find(".tooltipped").tooltip();var t=this;this.dom.find(".item-stamp").each(function(){new a.StampComponent(e,t.element)}),this.dom.find(".item-delete").click(function(){i.App.deleteComponent.open(e.element)}),this.dom.find(".item-report").click(function(){i.App.reportComponent.open(e.element)}),this.dom.find(".item-directions").click(function(){e.dom.find(".menu-icon").hideTooltip(),i.App.geocoder.getLocation()?i.App.setState(o.AppStates.ShowDirections,{id:e.element.id}):i.App.pickAddressComponent.open(e.element)}),this.dom.find(".item-show-on-map").click(function(){e.dom.find(".menu-icon").hideTooltip(),i.App.setState(o.AppStates.ShowElement,{id:e.element.id})}),this.dom.find(".item-share").click(function(){var t=$("#modal-share-element");t.find(".modal-footer").attr("option-id",e.element.colorOptionId);var n=window.location.origin+window.location.pathname;n+=i.App.routerModule.generate("show_element",{name:(0,r.capitalize)((0,r.slugify)(e.element.name)),id:e.element.id},!0),t.find(".input-simple-modal").val(n),t.openModal()}),this.dom.find(".item-add-favorite").click(function(){i.App.favoriteModule.addFavorite(e.element.id),e.updateFavoriteIcon(),i.App.mode==o.AppModes.Map&&(e.element.marker.update(),e.element.marker.animateDrop())}),this.dom.find(".item-remove-favorite").click(function(){i.App.favoriteModule.removeFavorite(e.element.id),e.updateFavoriteIcon(),i.App.mode==o.AppModes.Map&&e.element.marker.update()})},e}();n.ElementMenuComponent=s},{"../../app.module":2,"../../gogocarto":46,"../../utils/string-helpers":79,"./stamp.component":31}],27:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementComponent=void 0;var o=e("../../gogocarto"),i=e("../../app.module"),r=e("../../classes/classes"),a=e("./images.component"),s=e("./element-menu.component"),l=e("../element/moderation.component"),u=e("./interactive-section.component"),c=function(){function e(e){this.element=e}return e.prototype.render=function(){if(this.element.isFullyLoaded){this.element.update(), this.element.updateDistance();var e,t=this.element.getIconsToDisplay();e=this.element.status==r.ElementStatus.PendingModification&&this.element.modifiedElement?this.element.modifiedElement.getRootCategoriesValues():this.element.getRootCategoriesValues();var n={element:this.element,showDistance:!!o.App.geocoder.getLocation(),listingMode:o.App.mode==i.AppModes.List,optionsToDisplay:t,mainOptionToDisplay:t[0],otherOptionsToDisplay:t.slice(1),currOptionsValues:this.element.getCurrDeepestOptionsValues().filter(function(e){return e.option.displayInInfoBar}).sort(function(e,t){return e.isFilledByFilters?-1:1}),rootCategoriesValues:e,editUrl:o.App.config.features.edit.url+this.element.id,ElementStatus:r.ElementStatus,ElementModerationState:r.ElementModerationState,isIframe:o.App.isIframe,isMapMode:o.App.mode==i.AppModes.Map,config:o.App.config,smallWidth:o.App.mode==i.AppModes.Map&&o.App.infoBarComponent.isDisplayedAside(),allowedStamps:o.App.stampModule.allowedStamps,body:void 0};o.App.config.infobar.bodyTemplate?(n.body=nunjucks.renderString(o.App.config.infobar.bodyTemplate,this.element),n.body=n.body.replace(/&/g,"&").replace(/>/g,">").replace(/</g,"<").replace(/"/g,'"')):n.body=nunjucks.render("components/element/body.html.njk",n);return o.App.templateModule.render("element",n)}},Object.defineProperty(e.prototype,"dom",{get:function(){return o.App.mode==i.AppModes.List?$("#directory-content-list #element-info-"+this.element.id):$("#element-info-"+this.element.id)},enumerable:!0,configurable:!0}),e.prototype.initialize=function(){var e=this;this.imagesComponent=new a.ImagesComponent(this.dom,this.element),this.menuComponent=new s.ElementMenuComponent(this.dom.find(".menu-element"),this.element),this.moderationComponent=new l.ModerationComponent(this.dom.find(".interactive-section"),this.element),this.interactiveComponent=new u.InteractiveSectionComponent(this.dom.find(".interactive-section"),this.element),this.dom.find(".send-mail-btn").click(function(){return o.App.sendEmailComponent.open(e.element)}),this.dom.find(".show-more-description").click(function(){var e=$(this).siblings(".description-more"),t=e.is(":visible")?"Afficher plus":"Afficher moins";e.toggle(),$(this).text(t)}),setTimeout(function(){e.dom.find(".info-bar-tabs").tabs()},100)},e.prototype.addFlashMessage=function(e){this.interactiveComponent.addFlashMessage(e)},e}();n.ElementComponent=c},{"../../app.module":2,"../../classes/classes":3,"../../gogocarto":46,"../element/moderation.component":30,"./element-menu.component":26,"./images.component":28,"./interactive-section.component":29}],28:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ImagesComponent=void 0;var o=e("../../gogocarto"),i=e("../../classes/classes"),r=function(){function e(e,t){this.indexCurrentImage=0,this.onNewImageDisplayed=new i.Event,this.dom=$(e),this.element=t,this.initialize()}return Object.defineProperty(e.prototype,"currentImage",{get:function(){return this.domImages?this.domImages.eq(this.indexCurrentImage):null},enumerable:!0,configurable:!0}),e.prototype.initialize=function(){this.element.images.length>0&&this.initImages(),this.element.images.length>1&&this.initNavigationButtons()},e.prototype.initImages=function(){var e=this;this.domImages=this.dom.find(".img-container img"),this.updateImage(),this.dom.find(".img-clickable-area").click(function(){if(!(o.App.component.width()<800)){var t=$("#modal-image");t.find(".modal-footer").attr("option-id",e.element.colorOptionId),t.find("img").attr("src",e.currentImage[0].src),t.openModal()}})},e.prototype.initNavigationButtons=function(){var e=this;this.dom.find(".img-navigation-btn.next, .img-navigation-btn.prev").css("opacity",0).show().animate({opacity:1},300),this.dom.find(".img-navigation-btn.next").click(function(){e.indexCurrentImage++,e.updateImage()}),this.dom.find(".img-navigation-btn.prev").click(function(){e.indexCurrentImage--,e.updateImage()})},e.prototype.updateImage=function(){var e=this;this.indexCurrentImage=(this.indexCurrentImage+this.element.images.length)%this.element.images.length,this.domImages.css("display","none"),this.currentImage.css("display","block"),this.currentImage.height()?this.onImageDisplayed():this.currentImage.load(function(){e.onImageDisplayed()})},e.prototype.onImageDisplayed=function(){this.onNewImageDisplayed.emit(this.currentImage),this.verticalAlignCurrentImage()},e.prototype.verticalAlignCurrentImage=function(){var e=this;if(this.currentImage){var t=this.dom.find(".img-overlay").height();if(0==t)return void setTimeout(function(){return e.verticalAlignCurrentImage()},100);this.currentImage.css("margin-top",0);var n=(t-this.currentImage.height())/2;n>0&&(n=0),this.currentImage.animate({marginTop:n+"px"},400)}},e}();n.ImagesComponent=r},{"../../classes/classes":3,"../../gogocarto":46}],29:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.InteractiveSectionComponent=void 0;var o=e("../../gogocarto"),i=function(){function e(e,t){this.dom=$(e),this.element=t,this.initialize()}return e.prototype.addFlashMessage=function(e){this.dom.find(".moderation-section").find(".basic-message").hide(),this.dom.find(".result-message").html(e).show(),o.App.infoBarComponent.show()},e.prototype.initialize=function(){var e=this;this.dom.find(".validation-process-info").click(function(e){$("#modal-contribution").openModal(),e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault()}),this.dom.find(".vote-button").click(function(t){if(!o.App.config.isFeatureAvailable("vote"))return void o.App.loginModule.loginAction();o.App.voteComponent.open(e.element),t.stopPropagation(),t.stopImmediatePropagation(),t.preventDefault()})},e}();n.InteractiveSectionComponent=i},{"../../gogocarto":46}],30:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ModerationComponent=void 0;var o=e("../../gogocarto"),i=function(){function e(e,t){this.dom=$(e),this.element=t,this.initialize()}return e.prototype.initialize=function(){var e=this;this.dom.find(".mark-as-moderated-btn").click(function(t){if(!o.App.config.isFeatureAvailable("moderation"))return void o.App.loginModule.loginAction();var n=$(this).siblings(".moderation-input-comment").val(),i=o.App.config.features.moderation.url,r={elementId:e.element.id,comment:n};o.App.ajaxModule.sendRequest(i,"post",r,function(t){var n=t.message;t.success;e.element.update(!0),e.element.isFullyLoaded=!1,o.App.infoBarComponent.showElement(e.element.id,function(){e.element.component.addFlashMessage(n)}),e.element.component.addFlashMessage(n)},function(t){e.element.component.addFlashMessage(t)}),t.stopPropagation(),t.stopImmediatePropagation(),t.preventDefault()})},e}();n.ModerationComponent=i},{"../../gogocarto":46}],31:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StampComponent=void 0;var o=e("../../gogocarto"),i=function(){function e(e,t){this.value=!1,this.dom=$(e),this.element=t,this.stampId=this.dom.data("stamp-id"),this.setValue(this.element.stamps.indexOf(this.stampId)>-1,!1),this.initialize()}return e.prototype.initialize=function(){var e=this;this.dom.click(function(){return e.handleClick()})},e.prototype.handleClick=function(){var e=this,t=o.App.config.features.stamp.url,n={elementId:this.element.id,stampId:this.stampId,value:!this.value};o.App.ajaxModule.sendRequest(t,"post",n,function(t){t.data&&(e.element.stamps=t.data),t.success&&e.setValue(!e.value)})},e.prototype.setValue=function(e,t){void 0===t&&(t=!0),this.value=e,this.element.update(!0),this.dom.toggleClass("filled",e),t&&this.value&&this.element.marker.animateDrop()},e}();n.StampComponent=i},{"../../gogocarto":46}],32:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GoGoControlComponent=void 0;var o=e("../app.module"),i=e("../gogocarto"),r=function(){function e(){}return e.prototype.initialize=function(){$(".show-directory-menu-button, #mobile-filters-icon").click(function(e){i.App.directoryMenuComponent.show(),e.preventDefault(),e.stopPropagation()}),$("#directory-menu .btn-close-menu").click(function(){return i.App.directoryMenuComponent.hide()}),$(".show-as-list-button").click(function(e){i.App.mapManager.setTimeoutClicking(),i.App.setMode(o.AppModes.List),e.preventDefault(),e.stopPropagation()}),$("#mobile-search-icon").click(function(e){i.App.searchBarComponent.showMobileSearchBar(),e.preventDefault(),e.stopPropagation()}),$(".show-as-map-button").click(function(){i.App.setMode(o.AppModes.Map)})},e.prototype.updatePosition=function(){if(i.App.mode)if(i.App.mode==o.AppModes.Map){var e=15+$(".search-results:visible").height();$("#gogo-controls-mobile").velocity({top:e,right:0},{duration:250,queue:!1,easing:"easeOutQuad"}),$("#gogo-controls-mobile").addClass("map").removeClass("list")}else{var t=$("#directory-content").height()-$("#gogo-controls-mobile").height()-5;$("#gogo-controls-mobile").velocity({top:t,right:15},{duration:250,queue:!1,easing:"easeOutQuad"}),$("#gogo-controls-mobile").addClass("list").removeClass("map")}},e.prototype.hide=function(e){void 0===e&&(e=250),$("#gogo-controls-mobile").fadeOut(e)},e.prototype.show=function(e){void 0===e&&(e=400),$("#gogo-controls-mobile").fadeIn(e)},e}();n.GoGoControlComponent=r},{"../app.module":2,"../gogocarto":46}],33:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementListComponent=void 0;var o=e("../../app.module"),i=e("../../gogocarto"),r=function(){function e(){this.elementToDisplayCount=0,this.ELEMENT_LIST_SIZE_STEP=15,this.stepsCount=1,this.isListFull=!1,this.lastDistanceRequest=10,this.isInitialized=!1}return e.prototype.initialize=function(){var e=this;$("#directory-content-list .elements-container").on("scroll",function(t){$(this).scrollTop()>0?$("#list-title-shadow-bottom").show():$("#list-title-shadow-bottom").hide(),$(this).scrollTop()+$(this).innerHeight()>=$(this)[0].scrollHeight&&e.handleBottom()})},e.prototype.update=function(e){0==e.length&&(this.stepsCount=1),this.hideSpinnerLoader(),this.clear(),this.draw(e,!1)},e.prototype.setTitle=function(e){$(".element-list-title-text").html(e)},e.prototype.show=function(){$("#directory-content-list").show()},e.prototype.hide=function(){$("#directory-content-list").hide()},e.prototype.showSpinnerLoader=function(){$("#directory-list-spinner-loader").show()},e.prototype.hideSpinnerLoader=function(){$("#directory-list-spinner-loader").hide()},e.prototype.clear=function(){$("#directory-content-list li").remove()},e.prototype.reInitializeElementToDisplayLength=function(){this.clear(),$("#directory-content-list .elements-container").animate({scrollTop:"0"},0),this.stepsCount=1},e.prototype.draw=function(e,t){void 0===t&&(t=!1);var n,r=e.filter(function(e){return e.isFullyLoaded});if(this.elementToDisplayCount=r.length,i.App.dataType==o.AppDataType.All){for(var a=0,s=r;at.outerHeight()+150?t.animate({scrollTop:t.scrollTop()+e.offset().top-t.offset().top},550):n<0&&t.animate({scrollTop:t.scrollTop()+n},300),setTimeout(function(){return $(".info-bar-tabs").tabs()},0)},e.prototype.updateResultMessage=function(){$(".no-result-message").hide(),this.elementToDisplayCount>0?($(".element-list-header .title-text").show(),$(".element-list-title-number-results").text("("+this.elementToDisplayCount+")")):$(".element-list-header .title-text").hide()},e.prototype.handleAllElementsRetrieved=function(){if(this.hideSpinnerLoader(),0==this.elementToDisplayCount){$(".element-list-title-number-results").text("(0)"),$(".no-result-message").show();var e=$(".no-result-message img");e.attr("src",e.data("src")),$(".element-list-header .title-text").show()}},e.prototype.handleBottom=function(){this.isListFull&&(this.stepsCount++,this.isListFull=!1,this.clear(),this.draw(i.App.elements()))},e.prototype.compareDistance=function(e,t){return e.distanceFromBoundsCenter==t.distanceFromBoundsCenter?0:e.distanceFromBoundsCenterthis.dom.offset().top-50},e.prototype.hide=function(e){var t=this;void 0===e&&(e=!0),this.isDisplayedAside()?($("#directory-content-map").css("margin-right","0px"),this.dom.is(":visible")&&this.dom.animate({right:"-500px"},350,"swing",function(){$(this).hide(),i.App.component.updateMapSize()})):(this.hideDetails(),this.dom.animate({height:"0"},350,"swing",function(){i.App.component.updateMapSize(),t.dom.hide()})),e&&this.onHide.emit(!0),setTimeout(function(){return t.dom.find("#element-info").html("")},350),this.elementVisible&&this.elementVisible.marker&&this.elementVisible.marker.showNormalSize(!0),this.elementVisible=null,this.isVisible=!1},e.prototype.toggleDetails=function(){if(this.dom.find(".moreDetails").is(":visible"))this.hideDetails(),this.elementVisible.component.menuComponent.showFullTextMenu(!1);else{this.domMenu.width()>=100*this.domMenu.find(".menu-element-item:visible").length&&this.elementVisible.component.menuComponent.showFullTextMenu(!0),this.dom.find(".element-item").addClass("active"),this.dom.find(".moreDetails").show(),this.dom.find(".moreDetails.tabs").css("display","flex"),(this.dom.find(".interactive-section").height()>0||this.dom.find(".info-bar-tabs").height()>0)&&this.dom.find(".expandLabel").removeClass("bgdSoftColorAs transform-big"),this.dom.animate({height:"100%"},400,"swing");var e=$(".gogocarto-container").height();e-=this.dom.find(".collapsible-header").outerHeight(!0),e-=this.dom.find(".interactive-section").outerHeight(!0),e-=this.dom.find(".menu-element").outerHeight(!0),e-=this.dom.find(".info-bar-tabs").outerHeight(!0),this.dom.find(".collapsible-body").css("height",e),this.showBodyMainTab(),this.elementVisible.component.imagesComponent.verticalAlignCurrentImage(),i.App.gogoControlComponent.hide()}},e.prototype.hideDetails=function(){if(i.App.gogoControlComponent.show(),this.dom.find(".moreDetails").is(":visible")){this.dom.find(".moreDetails").hide(),this.dom.find(".element-item").removeClass("active");var e=this.dom.find("#element-info").outerHeight(!0);this.dom.animate({height:e},400,"swing")}},e.prototype.updateInfoBarSize=function(){if(this.isDisplayedAside()){var e=this.dom,t=e.outerHeight(!0);t-=e.find(".collapsible-header").outerHeight(!0),t-=e.find(".interactive-section:visible").outerHeight(!0),t-=e.find(".info-bar-tabs:visible").outerHeight(!0),t-=e.find(".menu-element").outerHeight(!0),this.dom.find(".collapsible-body").css("height",t)}else this.dom.find(".moreDetails").css("height","auto")},e.prototype.showBodyMainTab=function(){this.dom.find(".info-bar-tabs").tabs("select_tab","body-main-tab-content")},e}();n.InfoBarComponent=a},{"../../app.module":2,"../../classes/event.class":16,"../../gogocarto":46}],36:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MapControlsComponent=void 0;var o=e("../../gogocarto"),i=e("../../utils/cookies"),r=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(i),a=function(){function e(){this.listenerLayerChangeHasBeenCreated=!1}return e.prototype.initialize=function(){var e=this;$("#export-iframe-btn").click(function(){$("#export-iframe-btn").hideTooltip(),e.updateIframeCode(),$("#modal-iframe").openModal()}),$("#map-default-view-btn").click(function(){o.App.geocoder.geocodeAddress("",function(e){o.App.mapComponent.fitBounds(o.App.geocoder.getBounds(),!0)})}),$("#geolocalize-btn").click(function(){o.App.searchBarComponent.geolocateUser()}),$(".feature-button").tooltip(),$("#directory-content-map #change-layers").click(function(t){$("#directory-content-map #change-layers").hideTooltip(),e.showControlLayers(),t.preventDefault(),t.stopPropagation()}),$("#directory-content-map #close-layers-panel").click(function(t){e.hideControlLayers(),t.preventDefault(),t.stopPropagation()}),$("#modal-iframe .iframe-param").change(function(){e.updateIframeCode()}),$(".layers-button").tooltip()},e.prototype.updateIframeCode=function(){var e=window.location.origin+window.location.pathname;e+=window.location.search.length>0?window.location.search+"&":"?",e+="iframe=1",$("#part-taxonomy-checkbox").is(":checked")&&(e+="&fullTaxonomy=0");var t=[];$("#modal-iframe .iframe-param.stamp-param").each(function(){$(this).is(":checked")&&t.push($(this).data("id"))}),t.length>0&&(e+="&stampsIds="+t.join(",")),e+=window.location.hash;var n=$("#iframe-width").val()?$("#iframe-width").val():"800",o=$("#iframe-height").val()?$("#iframe-height").val():"600",i='';$("#modal-iframe #iframe-code").val(i)},e.prototype.createListenerForLayers=function(){this.listenerLayerChangeHasBeenCreated||(o.App.config.map.saveTileLayerInCookies&&$("#directory-content-map .leaflet-control-layers-selector").change(function(e){r.createCookie("defaultBaseLayer",$(this).siblings("span").text(),100)}),this.listenerLayerChangeHasBeenCreated=!0)},e.prototype.showControlLayers=function(){$("#directory-content-map .leaflet-control-layers").show(),$("#directory-content-map #close-layers-panel").show(),this.createListenerForLayers()},e.prototype.hideControlLayers=function(){$("#directory-content-map .leaflet-control-layers").hide(),$("#directory-content-map #close-layers-panel").hide()},e}();n.MapControlsComponent=a},{"../../gogocarto":46,"../../utils/cookies":76}],37:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MapComponent=void 0;var o=e("../../app.module"),i=e("../../classes/classes"),r=e("../../utils/cookies"),a=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(r),s=e("../../gogocarto"),l=function(){function e(){this.onMapReady=new i.Event,this.onMapLoaded=new i.Event,this.onClick=new i.Event,this.onIdle=new i.Event,this.map_=null,this.markerClustererGroup=null,this.isInitialized=!1,this.isMapLoaded=!1,this.oldZoom=-1,this.viewport=null,this.waitingBounds=null}return e.prototype.getMap=function(){return this.map_},e.prototype.getCenter=function(){return this.viewport?L.latLng(this.viewport.lat,this.viewport.lng):null},e.prototype.getBounds=function(){return this.isMapLoaded?this.map_.getBounds():null},e.prototype.getZoom=function(){return this.map_.getZoom()},e.prototype.getOldZoom=function(){return this.oldZoom},e.prototype.show=function(){$("#directory-content-map").show()},e.prototype.hide=function(){$("#directory-content-map").hide()},e.prototype.initialize=function(){var e=this;if(this.isInitialized)return void this.resize();for(var t=s.App.config.map.tileLayers,n={},o=0,i=t;o10?60:70}}),this.markerClustererGroup.on("spiderfied",function(e,t){s.App.elementsModule.updateElementsIcons(!0)}),this.addMarkerClusterGroup(),L.control.zoom({position:"topright"}).addTo(this.map_),L.control.layers(n,{},{position:"topright",collapsed:!1}).addTo(this.map_),this.map_.on("singleclick",function(t){e.onClick.emit()}),this.map_.on("moveend",function(t){var n=$(".leaflet-marker-icon:visible").length;s.App.boundsModule.extendMapBounds(e.oldZoom,e.map_.getZoom(),n),e.updateViewPort(),e.onIdle.emit(),e.oldZoom=e.map_.getZoom()}),this.map_.on("load",function(t){e.isMapLoaded=!0,e.onMapLoaded.emit()}),this.resize(),this.isInitialized=!0,this.waitingBounds?this.fitBounds(this.waitingBounds,!1):this.viewport&&setTimeout(function(){e.setViewPort(e.viewport)},200),this.onMapReady.emit()},e.prototype.addMarkerClusterGroup=function(){this.map_.addLayer(this.markerClustererGroup)},e.prototype.resize=function(){this.map_&&this.map_.invalidateSize(!1)},e.prototype.addMarker=function(e){this.markerClustererGroup.addLayer(e)},e.prototype.addMarkers=function(e){this.markerClustererGroup&&this.markerClustererGroup.addLayers(e)},e.prototype.removeMarker=function(e){this.markerClustererGroup.removeLayer(e)},e.prototype.removeMarkers=function(e){this.markerClustererGroup&&this.markerClustererGroup.removeLayers(e)},e.prototype.clearMarkers=function(){this.markerClustererGroup&&this.markerClustererGroup.clearLayers()},e.prototype.fitElementsBounds=function(e){for(var t=L.latLngBounds(),n=0,o=e;ncontains : map not loaded or element position undefined"),!1)},e.prototype.extendedContains=function(e){return!(!this.isMapLoaded||!e)&&s.App.boundsModule.extendedBounds.contains(e)},e.prototype.updateViewPort=function(){this.viewport||(this.viewport=new i.ViewPort),this.viewport.lat=this.map_.getCenter().lat,this.viewport.lng=this.map_.getCenter().lng,this.viewport.zoom=this.getZoom()},e.prototype.setViewPort=function(e,t){var n=this;if(void 0===t&&(t=!0),this.map_&&e&&t){var i=s.App.state==o.AppStates.ShowElementAlone?500:0;setTimeout(function(){n.map_.setView(L.latLng(e.lat,e.lng),e.zoom)},i)}this.viewport=e},e.prototype.isMapBounds=function(){return this.getMap()&&this.getMap().getBounds()},e.prototype.hasZoomedIn=function(){var e=this.getZoom(),t=this.getOldZoom();return e!=t&&-1!=t&&e>t},e}();n.MapComponent=l},{"../../app.module":2,"../../classes/classes":3,"../../gogocarto":46,"../../utils/cookies":76}],38:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.Marker=void 0;var o=e("../../gogocarto"),i=function(){function e(e,t){var n=this;if(this.isAnimating=!1,this.halfHidden=!1,this.inclination="normal",this.elementId=e,!t){var i=this.getElement();null===i?console.log("element non geolocalized id = "+this.elementId):t=i.position}this.leafletMarker=L.marker(t,{riseOnHover:!0}),this.leafletMarker.on("click",function(e){o.App.mapManager.handleMarkerClick(n)}),this.leafletMarker.on("mouseover",function(e){n.isAnimating||n.showBigSize()}),this.leafletMarker.on("mouseout",function(e){n.isAnimating||n.showNormalSize()}),this.leafletMarker.setIcon(L.divIcon({className:"leaflet-marker-container",html:''}))}return e.prototype.update=function(){var e=this.getElement(),t=e.getIconsToDisplay(),n=o.App.templateModule.render("marker",{element:e,mainOptionToDisplay:t[0],otherOptionsToDisplay:t.slice(1),showMoreIcon:!0,disableMarker:!1,pendingClass:e.isPending()&&o.App.config.isFeatureAvailable("pending")?"pending":"",showPending:e.isPending()&&o.App.config.isFeatureAvailable("pending"),config:o.App.config }),i=this.leafletMarker._icon?this.leafletMarker._icon.className:"leaflet-marker-container";i.replace("leaflet-marker-icon",""),this.leafletMarker.setIcon(L.divIcon({className:i,html:n})),this.isDisplayedOnElementInfoBar()&&this.showBigSize()},e.prototype.animateDrop=function(){var e=this;this.isAnimating=!0,this.domMarker().animate({top:"-=25px"},300,"easeInOutCubic"),this.domMarker().animate({top:"+=25px"},250,"easeInOutCubic",function(){e.isAnimating=!1,e.domMarker().css("top","auto")})},e.prototype.showBigSize=function(){this.addClassToLeafletMarker_("BigSize");var e=this.domMarker();e.parent().find(".marker-name").show(),e.find(".moreIconContainer").show(),e.find(".gogo-icon-plus-circle").hide()},e.prototype.showNormalSize=function(e){if(void 0===e&&(e=!1),e||!this.isDisplayedOnElementInfoBar()){var t=this.domMarker();this.removeClassToLeafletMarker_("BigSize"),t.parent().find(".marker-name").hide(),t.find(".moreIconContainer").hide(),t.find(".gogo-icon-plus-circle").show()}},e.prototype.showHalfHidden=function(e){if(void 0===e&&(e=!1),e||!this.isDisplayedOnElementInfoBar()){this.addClassToLeafletMarker_("halfHidden");var t=this.domMarker();t.css("z-index","1"),t.find(".gogo-icon-plus-circle").addClass("halfHidden"),t.find(".moreIconContainer").addClass("halfHidden"),this.halfHidden=!0}},e.prototype.showNormalHidden=function(){this.removeClassToLeafletMarker_("halfHidden");var e=this.domMarker();e.css("z-index","10"),e.find(".gogo-icon-plus-circle").removeClass("halfHidden"),e.find(".moreIconContainer").removeClass("halfHidden"),this.halfHidden=!1},e.prototype.addClassToLeafletMarker_=function(e){this.domMarker().addClass(e),this.domMarker().siblings(".marker-name").addClass(e)},e.prototype.removeClassToLeafletMarker_=function(e){this.domMarker().removeClass(e),this.domMarker().siblings(".marker-name").removeClass(e)},e.prototype.isDisplayedOnElementInfoBar=function(){return o.App.infoBarComponent.getCurrElementId()==this.elementId},e.prototype.domMarker=function(){return $("#marker-"+this.elementId)},e.prototype.getId=function(){return this.elementId},e.prototype.getLeafletMarker=function(){return this.leafletMarker},e.prototype.isHalfHidden=function(){return this.halfHidden},e.prototype.getElement=function(){return o.App.elementsModule.getElementById(this.elementId)},e.prototype.getPosition=function(){return this.leafletMarker.getLatLng()},e}();n.Marker=i},{"../../gogocarto":46}],39:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AbstractModalComponent=void 0;var o=e("../../gogocarto"),i=function(){function e(e){this.ajaxUrl="",this.dom=$(e),this.initialize(),this.binds()}return e.prototype.initialize=function(){},e.prototype.binds=function(){var e=this;this.dom.find("button[type=submit]").click(function(t){return e.handleSubmit(t)})},e.prototype.open=function(e){this.element=e,this.clearLoader(),this.dom.find(".generic-error-message").hide(),this.beforeOpen(e),this.dom.openModal()},e.prototype.beforeOpen=function(e){},e.prototype.handleSubmit=function(e){this.element&&(this.displayLoader(),this.submit(),e.stopPropagation(),e.stopImmediatePropagation(),e.preventDefault())},e.prototype.submit=function(){},e.prototype.sendRequest=function(e){var t=this;o.App.ajaxModule.sendRequest(this.ajaxUrl,"post",e,function(e){setTimeout(function(){return t.clearLoader()},500),t.onSuccess(e)},function(e){t.clearLoader(),t.onError(e)})},e.prototype.displayLoader=function(){this.dom.find(".cancel-btn").show(),this.dom.find("button[type=submit]").hide(),this.dom.find(".loader-overlay").fadeIn(800)},e.prototype.clearLoader=function(){this.dom.find(".cancel-btn").hide(),this.dom.find("button[type=submit]").show(),this.dom.find(".loader-overlay").hide()},e.prototype.onSuccess=function(e){e.success?(this.dom.closeModal(),this.element.component.addFlashMessage(e.message)):this.onError(e.message)},e.prototype.onError=function(e){this.dom.find("#message-error").text(e).show()},e}();n.AbstractModalComponent=i},{"../../gogocarto":46}],40:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DeleteComponent=void 0;var o=e("../../gogocarto"),i=e("../../utils/string-helpers"),r=e("./abstract-modal.component"),a=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),s=function(e){function t(){var t=e.call(this,"#modal-delete")||this;return t.ajaxUrl=o.App.config.features.delete.url,t}return a(t,e),t.prototype.beforeOpen=function(e){this.dom.find(".elementName").text((0,i.capitalize)(e.name)),this.dom.find(".input-comment").val(""),this.dom.find(".option-radio-btn:checked").prop("checked",!1),this.dom.find("#select-error").hide()},t.prototype.submit=function(){var e=this.dom.find(".input-comment").val(),t=(o.App.config.features.delete.url,{elementId:this.element.id,message:e});this.sendRequest(t)},t.prototype.onSuccess=function(e){var t=this,n=e.message;e.success?(this.dom.closeModal(),o.App.infoBarComponent.show(),this.element.update(!0),this.element.isFullyLoaded=!1,o.App.infoBarComponent.showElement(this.element.id,function(){t.element.component.addFlashMessage(n)}),this.element.component.addFlashMessage(n)):this.dom.find("#select-error").text(n).show()},t.prototype.onError=function(e){this.dom.find("#select-error").text(e).show()},t}(r.AbstractModalComponent);n.DeleteComponent=s},{"../../gogocarto":46,"../../utils/string-helpers":79,"./abstract-modal.component":39}],41:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.PickAddressComponent=void 0;var o=e("../../gogocarto"),i=e("../../app.module"),r=e("./abstract-modal.component"),a=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),s=function(e){function t(){return e.call(this,"#modal-pick-address")||this}return a(t,e),t.prototype.binds=function(){var e=this;this.dom.find("#btn-calculate-directions").click(function(){return e.submit()}),this.dom.find("input").keyup(function(t){13==t.keyCode&&e.submit()})},t.prototype.beforeOpen=function(e){this.dom.find(".modal-footer").attr("option-id",e.colorOptionId)},t.prototype.submit=function(){var e=this,t=this.dom.find("input").val();t?(o.App.setState(i.AppStates.ShowDirections,{id:this.element.id}),o.App.geocoder.geocodeAddress(t,function(t){e.dom.find(".modal-error-msg").hide(),e.dom.closeModal()},function(t){e.dom.find(".modal-error-msg").show()})):this.dom.find("input").addClass("invalid")},t}(r.AbstractModalComponent);n.PickAddressComponent=s},{"../../app.module":2,"../../gogocarto":46,"./abstract-modal.component":39}],42:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ReportComponent=void 0;var o=e("../../gogocarto"),i=e("../../utils/string-helpers"),r=e("./abstract-modal.component"),a=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),s=function(e){function t(){var t=e.call(this,"#modal-report")||this;return t.ajaxUrl=o.App.config.features.report.url,t}return a(t,e),t.prototype.beforeOpen=function(){this.dom.find(".elementName").text((0,i.capitalize)(this.element.name)),this.dom.find(".input-comment").val(""),this.dom.find(".option-radio-btn:checked").prop("checked",!1),this.dom.find("#select-error").hide(),this.dom.find("#mail-error").hide(),o.App.loginModule.getUserEmail()?(this.dom.find(".input-mail").hide(),this.dom.find(".input-mail").val(o.App.loginModule.getUserEmail())):(this.dom.find(".input-mail").val(""),this.dom.find(".input-mail").show())},t.prototype.submit=function(){if(this.element){var e=this.dom.find(".option-radio-btn:checked").attr("value"),t=this.dom.find(".input-mail").val();this.dom.find("#select-error").hide(),this.dom.find("#mail-error").hide();var n=!1;if(e||(this.dom.find("#select-error").show(),n=!0),t&&!this.dom.find(".input-mail").hasClass("invalid")||(this.dom.find("#mail-error").show(),n=!0),n)this.clearLoader();else{var i=this.dom.find(".input-comment").val(),r=(o.App.config.features.report.url,{elementId:this.element.id,value:e,comment:i,userEmail:t});this.sendRequest(r)}}},t.prototype.onError=function(e){this.dom.find("#select-error").text(e).show()},t}(r.AbstractModalComponent);n.ReportComponent=s},{"../../gogocarto":46,"../../utils/string-helpers":79,"./abstract-modal.component":39}],43:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SendEmailComponent=void 0;var o=e("../../gogocarto"),i=e("./abstract-modal.component"),r=e("../../utils/string-helpers"),a=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),s=function(e){function t(){var t=e.call(this,"#modal-send-email")||this;return t.ajaxUrl=o.App.config.features.sendMail.url,t}return a(t,e),t.prototype.beforeOpen=function(e){this.dom.find(".elementName").text((0,r.capitalize)(this.element.name)),this.dom.find(".input-mail-content").val(""),this.dom.find(".input-mail-subject").val(""),this.dom.find("#content-error").hide(),this.dom.find("#mail-error").hide(),o.App.loginModule.getUserEmail()?(this.dom.find(".input-mail").hide(),this.dom.find(".input-mail").val(o.App.loginModule.getUserEmail())):(this.dom.find(".input-mail").val(""),this.dom.find(".input-mail").show())},t.prototype.submit=function(){var e=this.dom.find(".input-mail").val(),t=this.dom.find(".input-mail-subject").val(),n=this.dom.find(".input-mail-content").val();this.dom.find("#message-error").hide(),this.dom.find("#content-error").hide(),this.dom.find("#mail-error").hide();var o=!1;if(t&&n||(this.dom.find("#content-error").show(),o=!0),e&&!this.dom.find(".input-mail").hasClass("invalid")||(this.dom.find("#mail-error").show(),this.dom.find(".input-mail").show(),o=!0),o)this.clearLoader();else{var i=(this.dom.find(".input-comment").val(),{elementId:this.element.id,subject:t,content:n,userEmail:e});this.sendRequest(i)}},t}(i.AbstractModalComponent);n.SendEmailComponent=s},{"../../gogocarto":46,"../../utils/string-helpers":79,"./abstract-modal.component":39}],44:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.VoteComponent=void 0;var o=e("../../classes/classes"),i=e("../../gogocarto"),r=e("../../app.module"),a=e("./abstract-modal.component"),s=function(){var e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)t.hasOwnProperty(n)&&(e[n]=t[n])};return function(t,n){function o(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(o.prototype=n.prototype,new o)}}(),l=function(e){function t(){var t=e.call(this,"#modal-vote")||this;return t.ajaxUrl=i.App.config.features.vote.url,t.dom.find("#select-vote").material_select(),t}return s(t,e),t.prototype.beforeOpen=function(e){this.dom.find(".specific-content").html(i.App.templateModule.render("vote-modal-content",{element:this.element,ElementStatus:o.ElementStatus,isAdmin:i.App.config.isFeatureAvailable("directModeration"),eldisplayName:i.App.config.text.elementDefinite}))},t.prototype.submit=function(){var e=this.dom.find(".option-radio-btn:checked").attr("value");if(this.dom.find("#select-error").hide(),e){var t=this.dom.find(".input-comment").val(),n=(i.App.config.features.vote.url,{elementId:this.element.id,value:e,comment:t});this.sendRequest(n)}else this.clearLoader(),this.dom.find("#select-error").show()},t.prototype.onSuccess=function(e){var t=this,n=e.message,o=e.data;if(!e.success)return void this.onError(n);$("#modal-vote").closeModal(),this.element.status!=o?(this.element.status=o,this.element.update(!0),this.element.isFullyLoaded=!1,i.App.mode==r.AppModes.Map?i.App.infoBarComponent.showElement(this.element.id,function(){t.element.component.addFlashMessage(n)}):this.element.component.addFlashMessage(n)):this.element.component.addFlashMessage(n)},t.prototype.onError=function(e){e&&0!=e.length||(e="Oups, une erreur s'est produite ! Veuillez réessayer plus tard ou nous signaler le problème"),this.dom.find(".generic-error-message").html(e).show()},t}(a.AbstractModalComponent);n.VoteComponent=l},{"../../app.module":2,"../../classes/classes":3,"../../gogocarto":46,"./abstract-modal.component":39}],45:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.SearchBarComponent=void 0;var o=e("../../app.module"),i=e("../../gogocarto"),r=function(){function e(){this.placeholders={default:"",place:"",element:""},this.currSearchText=""}return e.prototype.searchInput=function(){return $(".search-bar")},e.prototype.initialize=function(){var e=this;this.searchInput().keyup(function(t){13==t.keyCode&&e.handleSearchAction()}),$(".search-bar-icon").click(function(){return e.handleSearchAction()}),$(".search-btn").click(function(){return e.handleSearchAction()}),$(".search-cancel-btn").click(function(){return e.clearLoader()}),$("#btn-close-search-result").click(function(){return e.clearElementSearchResult()}),$(".search-geolocalize").tooltip(),$(".search-geolocalize").click(function(){return e.geolocateUser()}),this.searchInput().on("click",function(e){e.preventDefault(),e.stopPropagation()}),this.searchInput().on("focus",function(){e.showSearchOptions()}),this.searchInput().on("keyup",function(){return e.showSearchOptions()}),this.placeholders={default:"Recherchez un lieu, "+i.App.config.text.elementIndefinite+"...",place:"Entrez une adresse, un CP, une ville...",element:"Entrez le nom d'"+i.App.config.text.elementIndefinite},this.updateSearchPlaceholder(),$(".search-option-radio-btn").change(function(){return e.updateSearchPlaceholder()}),$("#directory-content, .directory-menu-content, header").click(function(){return e.hideSearchOptions()}),$("#search-overlay-mobile .overlay").click(function(){return e.hideMobileSearchBar()})},e.prototype.handleSearchAction=function(){var e=this;this.beforeSearch();var t=this.searchInput().val();switch(this.searchType()){case"place":i.App.geocoder.geocodeAddress(t,function(t){e.clearSearchResult(!1),e.hideSearchOptions(),i.App.mapComponent.fitBounds(i.App.geocoder.getBounds(),!0)},function(){e.clearLoader(),$(".search-no-result").show()});break;case"element":this.searchInput().val()?this.searchElements(t):this.clearSearchResult()}},e.prototype.handleGeocodeResult=function(){this.setValue(i.App.geocoder.getLocationAddress()),this.clearLoader()},e.prototype.geolocateUser=function(){var e=this;this.beforeSearch(),i.App.geocoder.geolocateUser(function(t){e.clearSearchResult(!0),e.setValue("Geolocalisé"),e.hideSearchOptions(),e.clearLoader()})},e.prototype.searchElements=function(e,t){var n=this;void 0===t&&(t=!1),this.setValue(e),this.currSearchText=e;var r=i.App.config.features.searchElements.url,a={text:e};r&&i.App.ajaxModule.sendRequest(r,"get",a,function(e){i.App.setDataType(o.AppDataType.SearchResults,t,e),n.clearLoader(),n.showSearchResultLabel(e.data.length),i.App.gogoControlComponent.updatePosition(),n.hideMobileSearchBar()},function(e){})},e.prototype.showMobileSearchBar=function(){$("#search-overlay-mobile").fadeIn(250),$(".search-bar-with-options-container").show(),$(".search-bar").focus(),i.App.gogoControlComponent.hide(0)},e.prototype.hideMobileSearchBar=function(){$("#search-overlay-mobile").fadeOut(150),$(".search-bar-with-options-container.mobile").hide(),i.App.gogoControlComponent.show(0)},e.prototype.update=function(){if(i.App.component.width()<=600){1!=$(".search-bar-with-options-container").parent("#search-overlay-mobile").length&&$(".search-bar-with-options-container").appendTo("#search-overlay-mobile").addClass("mobile")}else $(".search-bar-with-options-container").removeClass("mobile").prependTo(".directory-menu-header").show()},e.prototype.showSearchOptions=function(){$(".search-options").slideDown(350),this.isSearchOptionVisible()||$("#directory-menu-main-container .directory-menu-header").addClass("expanded"),this.updateSearchPlaceholder()},e.prototype.hideSearchOptions=function(){$("#directory-menu-main-container .directory-menu-header").removeClass("expanded"),this.searchInput().blur(),this.updateSearchPlaceholder(),$("#directory-menu-main-container .search-options").slideUp(250)},e.prototype.updateSearchPlaceholder=function(){var e="";if(this.isSearchOptionVisible())switch(this.searchType()){case"place":e=this.placeholders.place;break;case"element":e=this.placeholders.element}else e=this.placeholders.default;this.searchInput().attr("placeholder",e)},e.prototype.showSearchResultLabel=function(e){$(".search-result-number").text(e),$(".search-result-value").text(this.currSearchText),$(".search-results").show(),$(".search-options").hide(),$("#element-info-bar").addClass("with-search-result-header")},e.prototype.hideSearchResult=function(){$(".search-results").hide(),$("#element-info-bar").removeClass("with-search-result-header"),i.App.gogoControlComponent.updatePosition()},e.prototype.clearElementSearchResult=function(){this.clearSearchResult(),i.App.setMode(o.AppModes.Map)},e.prototype.clearSearchResult=function(e){var t=this;void 0===e&&(e=!0),i.App.setDataType(o.AppDataType.All),this.hideSearchResult(),this.clearLoader(),this.currSearchText="",e&&(this.setValue(""),i.App.elementListComponent.setTitle("")),setTimeout(function(){t.hideSearchOptions()},200)},e.prototype.setValue=function(e){this.searchInput().val(e)},e.prototype.getCurrSearchText=function(){return this.currSearchText},e.prototype.isSearchOptionVisible=function(){return $(".search-options:visible").length},e.prototype.searchType=function(){return $(".search-option-radio-btn:checked").attr("data-name")},e.prototype.clearLoader=function(){$(".search-btn").show(),$(".search-cancel-btn").hide()},e.prototype.beforeSearch=function(){$(".search-no-result").hide(),$(".search-cancel-btn").show(),$(".search-btn").hide()},e}();n.SearchBarComponent=r},{"../../app.module":2,"../../gogocarto":46}],46:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GoGoCartoModule=n.App=void 0;var o="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},i=e("./app.module"),r=e("./utils/params"),a=n.App=void 0,s=function(){function e(e,t){void 0===t&&(t={}),this.container="",this.container=e,this.checkForDistantConfifuration(t)}return e.prototype.setUserRole=function(e){this.app.loginModule.setRoles(e)},e.prototype.setUserRoles=function(e){this.app.loginModule.setRoles(e)},e.prototype.setUserEmail=function(e){this.app.loginModule.setUserEmail(e)},e.prototype.getElementRouteHash=function(e,t){return void 0===t&&(t="find"),this.app.routerModule.generate("show_element",{id:e,name:t})},e.prototype.showDirectoryMenu=function(){this.app.directoryMenuComponent.show()},e.prototype.hideDirectoryMenu=function(){this.app.directoryMenuComponent.hide()},e.prototype.checkForDistantConfifuration=function(e){var t=this;"object"===(void 0===e?"undefined":o(e))?this.checkForDistantTaxonomy(e):$.ajax({url:e,success:function(e){"string"==typeof e&&(e=JSON.parse(e)),t.checkForDistantTaxonomy(e)},error:function(){console.error("Error while getting the configuration at url ",e)}})},e.prototype.checkForDistantTaxonomy=function(e){var t=this,n=e.data.taxonomy;if(!n||!e.data.elements)return void console.warn("[GoGoCarto] You must provide a taxonomy and elements dataset (both url or Json object)");"object"===(void 0===n?"undefined":o(n))?this.init(n,e):$.getJSON(n,function(n){t.init(n,e)})},e.prototype.init=function(e,t){var o=this,s=(0,r.getQueryParams)(window.location.search),l=!!s.iframe&&1==s.iframe,u=!s.fullTaxonomy||1==s.fullTaxonomy;n.App=a=new i.AppModule(t,l,u,s),this.app=a,a.taxonomyModule.createTaxonomyFromJson(e);var c=a.templateModule.render("layout",{rootCategories:a.taxonomyModule.rootCategories,mainCategory:a.taxonomyModule.mainCategory,isIframe:l,fullTaxonomy:u,config:a.config,allowedStamps:a.stampModule.allowedStamps});if(0==$(this.container).length?console.warn('[GoGoCarto] The container "'+this.container+'" was not found'):$(this.container).append(c),$(this.container).trigger("templateLoaded"),a.taxonomyModule.options.length){var p=a.templateModule.render("gogo-styles",{optionList:a.taxonomyModule.options,config:a.config}),d=$("head").length?$("head"):$("html");d.length?d.append(p):console.warn("[GoGoCarto] Cannot find Dom 'head' or 'html' to add styles")}setTimeout(function(){a.initialize(),a.elementsModule.initialize(),a.directoryMenuComponent.initialize(),a.filtersComponent.initialize(),a.boundsModule.initialize(),a.elementListComponent.initialize(),a.searchBarComponent.initialize(),a.gogoControlComponent.initialize(),a.directionsComponent.initialize(),a.mapControlsComponent.initialize(),a.customPopupComponent.initialize(),a.component.initialize(),a.routerModule.loadInitialState(),setTimeout(function(){return a.elementsJsonModule.loadLocalElements()},100),o.bindEvents()},0)},e.prototype.bindEvents=function(){var e=this;this.app.mapManager.onMarkerClick.do(function(t){return e.fireEvent("markerClick",{id:t})})},e.prototype.fireEvent=function(e,t){$(this.container).trigger(e,t)},e}();n.GoGoCartoModule=s,goGoCarto=function(e,t){return new s(e,t)}},{"./app.module":2,"./utils/params":77}],47:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DataTypeManager=n.AppDataType=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=n.AppDataType=void 0;!function(e){e[e.All=0]="All",e[e.SearchResults=1]="SearchResults"}(r||(n.AppDataType=r={}));var a=function(){function e(){this.dataType_=r.All}return e.prototype.setDataType=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=null),this.dataType_=e,e==r.SearchResults&&n){o.App.stateManager.setState(i.AppStates.Normal);var a=o.App.elementsJsonModule.convertJsonElements(n.data,!0,!0).elementsConverted;o.App.elementsModule.setSearchResultElement(a),o.App.filtersComponent.setMainOption("all"),n.data.length>0&&(o.App.setMode(i.AppModes.List),o.App.mapComponent.fitElementsBounds(a))}o.App.elementsModule.clearCurrentsElement(),o.App.elementListComponent.clear(),o.App.elementsModule.updateElementsToDisplay(!0),o.App.elementsManager.checkForNewElementsToRetrieve(),t||o.App.historyModule.pushNewState(),o.App.documentTitleModule.updateDocumentTitle()},Object.defineProperty(e.prototype,"dataType",{get:function(){return this.dataType_},enumerable:!0,configurable:!0}),e}();n.DataTypeManager=a},{"../app.module":2,"../gogocarto":46}],48:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementsManager=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=function(){function e(){var e=this;o.App.ajaxModule.onNewElements.do(function(t){e.handleNewElementsReceivedFromServer(t)}),o.App.elementsJsonModule.onNewsElementsConverted.do(function(e){o.App.elementsModule.addElements(e)}),o.App.elementsModule.onElementsToDisplayChanged.do(function(t){e.handleElementsToDisplayChanged(t)})}return e.prototype.checkForNewElementsToRetrieve=function(e){void 0===e&&(e=!1),o.App.dataType==i.AppDataType.All&&o.App.config.data.retrieveElementsByApi&&this.retrieveMissingElementsViaApi(e)},e.prototype.retrieveMissingElementsViaApi=function(e){var t=o.App.boundsModule.calculateFreeBounds(e);if("allRetrieved"==t.status)return void o.App.elementListComponent.handleAllElementsRetrieved();if("included"==t.status)return o.App.boundsModule.updateFilledBoundsWithBoundsReceived(t.expectedFillBounds,o.App.currMainId,e),void this.handleNewElementsReceivedFromServer({data:[],fullRepresentation:e});var n=t.freeBounds,i=t.expectedFillBounds;n&&n.length>0&&o.App.ajaxModule.getElementsInBounds(n,e,i)},e.prototype.handleNewElementsReceivedFromServer=function(e){var t=e.data||e["@graph"]||e;(o.App.elementsJsonModule.convertJsonElements(t,!0,e.fullRepresentation).newElementsLength>0||o.App.mode==i.AppModes.List)&&o.App.elementsModule.updateElementsToDisplay(!0)},e.prototype.handleElementsToDisplayChanged=function(e){(new Date).getTime();if(o.App.mode==i.AppModes.List)o.App.elementListComponent.update(e.elementsToDisplay),o.App.ajaxModule.allElementsReceived&&o.App.elementListComponent.handleAllElementsRetrieved();else{if(!o.App.mapComponent.isInitialized)return;o.App.mapComponent.markerClustererGroup.restoreUnclusters(!0),e.elementsToRemove.length+e.newElements.length>e.elementsToDisplay.length?(o.App.mapComponent.clearMarkers(),o.App.mapComponent.addMarkers(e.elementsToDisplay.map(function(e){return e.marker.getLeafletMarker()}))):(o.App.mapComponent.removeMarkers(e.elementsToRemove.map(function(e){return e.marker.getLeafletMarker()})),o.App.mapComponent.addMarkers(e.newElements.map(function(e){return e.marker.getLeafletMarker()}))),o.App.mapComponent.markerClustererGroup.checkForUnclestering(o.App.map().getBounds())}(new Date).getTime()},e}();n.ElementsManager=r},{"../app.module":2,"../gogocarto":46}],49:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GeocodingManager=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=e("../utils/string-helpers"),a=function(){function e(){var e=this;o.App.geocoder.onGeocodeResult.do(function(){e.handleGeocodeResult(),o.App.searchBarComponent.handleGeocodeResult()}),o.App.geocoder.onGeolocalizationResult.do(function(t){e.handleGeolocalizationResult(t)})}return e.prototype.handleGeocodeResult=function(){if($("#directory-spinner-loader").hide(),o.App.state==i.AppStates.ShowDirections)o.App.setState(i.AppStates.ShowDirections,{id:o.App.stateManager.stateElementId});else{if(o.App.mode==i.AppModes.Map&&o.App.state!=i.AppStates.ShowElementAlone)o.App.setState(i.AppStates.Normal);else{var e=o.App.geocoder.getLocation()?o.App.geocoder.getLocation():o.App.boundsModule.defaultCenter;o.App.boundsModule.createBoundsFromLocation(e),o.App.elementsModule.clearCurrentsElement(),o.App.elementsModule.updateElementsToDisplay(!0);var t=o.App.geocoder.lastAddressRequest;o.App.geocoder.getLocation()&&o.App.elementListComponent.setTitle(" autour de "+(0,r.capitalize)((0,r.unslugify)(t)))}o.App.documentTitleModule.updateDocumentTitle()}},e.prototype.handleGeolocalizationResult=function(e){o.App.mode==i.AppModes.Map?(o.App.setState(i.AppStates.Normal),o.App.mapComponent.panToLocation(e.toLocation(),e.zoom,!1)):(o.App.boundsModule.createBoundsFromLocation(e.toLocation()),o.App.elementsModule.clearCurrentsElement(),o.App.elementsModule.updateElementsToDisplay(!0),o.App.elementListComponent.setTitle(" autour de ma position"),o.App.mapComponent.setViewPort(e))},e}();n.GeocodingManager=a},{"../app.module":2,"../gogocarto":46,"../utils/string-helpers":79}],50:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.HistoryStateManager=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=e("../classes/classes"),a=e("../utils/cookies"),s=function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}(a),l=function(){function e(){this.lastHistoryState=null}return e.prototype.load=function(e,t){if(void 0===t&&(t=!1),null!==e){if(this.lastHistoryState=e,console.log("loadHistorystate",e),e.dataType==i.AppDataType.SearchResults?(o.App.setDataType(e.dataType,!0),o.App.searchBarComponent.searchElements(e.text,t),$("#directory-spinner-loader").hide()):!o.App.config.map.saveViewportInCookies||e.viewport||e.address||e.state!=i.AppStates.Normal||(console.log("no viewport nor address provided, using cookies values",s.readCookie("viewport"),s.readCookie("address")),s.readCookie("viewport")&&(e.viewport=(new r.ViewPort).fromString(s.readCookie("viewport"))),s.readCookie("address")&&(e.address=s.readCookie("address")),e.address&&$(".search-bar").val(e.address)),e.filters?o.App.filterRoutingModule.loadFiltersFromString(e.filters):o.App.filtersComponent.setMainOption("all"),e.dataType==i.AppDataType.All&&e.viewport&&e.state!=i.AppStates.ShowElementAlone&&(o.App.mapComponent.setViewPort(e.viewport,o.App.mapComponent.isMapLoaded),e.mode==i.AppModes.List&&o.App.boundsModule.createBoundsFromLocation(L.latLng(e.viewport.lat,e.viewport.lng)),$("#directory-spinner-loader").hide(),e.mode==i.AppModes.List)){L.latLng(e.viewport.lat,e.viewport.lng)}o.App.setMode(e.mode,t,!1),e.dataType==i.AppDataType.All&&e.address&&("geolocalize"==e.address?o.App.searchBarComponent.geolocateUser():o.App.geocoder.geocodeAddress(e.address,function(t){e.viewport&&e.mode==i.AppModes.Map||o.App.mapComponent.fitBounds(o.App.geocoder.getBounds())},function(){o.App.searchBarComponent.setValue(""),e.viewport||(o.App.mapComponent.fitDefaultBounds(),o.App.component.toastMessage("Erreur, cette adresse n'a pas pu être localisée : "+e.address))})),e.viewport||e.address||!o.App.config.data.retrieveElementsByApi||e.state==i.AppStates.ShowElementAlone||(console.log("fit default bounds no viewport no address"),o.App.mapComponent.fitDefaultBounds()),e.id?setTimeout(function(){o.App.setState(e.state,{id:e.id,panToLocation:null===e.viewport},t),$("#directory-spinner-loader").hide()},400):o.App.setState(e.state,null,t)}},e}();n.HistoryStateManager=l},{"../app.module":2,"../classes/classes":3,"../gogocarto":46,"../utils/cookies":76}],51:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.MapManager=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=e("../classes/classes"),a=function(){function e(){var e=this;this.isClicking=!1,this.onMarkerClick=new r.Event,o.App.mapComponent.onIdle.do(function(){e.handleMapIdle()}),o.App.mapComponent.onClick.do(function(){e.handleMapClick()}),o.App.infoBarComponent.onHide.do(function(){e.handleInfoBarHide()})}return e.prototype.handleInfoBarHide=function(){o.App.setState(i.AppStates.Normal)},e.prototype.setTimeoutClicking=function(){this.isClicking=!0;var e=this;setTimeout(function(){e.isClicking=!1},100)},e.prototype.handleMarkerClick=function(e){o.App.mode==i.AppModes.Map&&(this.setTimeoutClicking(),this.onMarkerClick.emit(e.getElement().id),e.isHalfHidden()&&o.App.setState(i.AppStates.Normal),o.App.setState(i.AppStates.ShowElement,{id:e.getId()}))},e.prototype.handleMapIdle=function(){var e=this;if(o.App.mode==i.AppModes.Map){if(!o.App.mapComponent.isMapLoaded)return void o.App.mapComponent.onMapLoaded.do(function(){e.handleMapIdle()});var t=!o.App.mapComponent.hasZoomedIn();o.App.elementsModule.updateElementsToDisplay(t),o.App.state!=i.AppStates.Normal&&o.App.state!=i.AppStates.ShowElement||o.App.elementsManager.checkForNewElementsToRetrieve(),o.App.dataType==i.AppDataType.All&&o.App.historyModule.updateCurrState()}},e.prototype.handleMapClick=function(){this.isClicking||(o.App.state==i.AppStates.ShowElement||o.App.state==i.AppStates.ShowElementAlone?(o.App.infoBarComponent.hide(),o.App.setState(i.AppStates.Normal)):o.App.state==i.AppStates.ShowDirections&&o.App.setState(i.AppStates.ShowElement,{id:o.App.infoBarComponent.getCurrElementId()}),o.App.mapControlsComponent.hideControlLayers())},e}();n.MapManager=a},{"../app.module":2,"../classes/classes":3,"../gogocarto":46}],52:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ModeManager=n.AppModes=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=e("../utils/string-helpers"),a=n.AppModes=void 0;!function(e){ -e[e.Map=1]="Map",e[e.List=2]="List"}(a||(n.AppModes=a={}));var s=function(){function e(){this.mode_=null}return e.prototype.setMode=function(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!0),o.App.elementsModule.clearCurrentsElement(),o.App.elementListComponent.clear(),e==a.Map?this.setMapMode():this.setListMode();var i=this.mode_;this.mode_=e,null==i||t||o.App.historyModule.pushNewState(),o.App.gogoControlComponent.updatePosition(),setTimeout(function(){return o.App.elementsModule.updateElementsToDisplay(!0)},300),n&&(o.App.documentTitleModule.updateDocumentTitle(),e==a.Map&&o.App.setState(o.App.state,{id:o.App.stateManager.stateElementId}))},e.prototype.setMapMode=function(){o.App.mapComponent.show(),o.App.elementListComponent.hide(),o.App.mapComponent.initialize(),o.App.mapComponent.isMapLoaded&&o.App.boundsModule.extendBounds(0,o.App.mapComponent.getBounds())},e.prototype.setListMode=function(){if(o.App.mapComponent.hide(),o.App.elementListComponent.show(),o.App.dataType==i.AppDataType.All){var e=void 0,t=o.App.geocoder.lastAddressRequest;o.App.mapComponent.isInitialized?(e=o.App.mapComponent.getCenter(),o.App.elementListComponent.setTitle(" autour du centre de la carte")):o.App.geocoder.getLocation()?(e=o.App.geocoder.getLocation(),o.App.elementListComponent.setTitle(" autour de "+(0,r.capitalize)((0,r.unslugify)(t))+"")):(e=o.App.boundsModule.defaultCenter,o.App.elementListComponent.setTitle("")),o.App.boundsModule.createBoundsFromLocation(e),o.App.elementsManager.checkForNewElementsToRetrieve(!0)}else o.App.dataType==i.AppDataType.SearchResults&&(o.App.elementsModule.updateElementsToDisplay(!0,!1),o.App.elementListComponent.setTitle(""))},Object.defineProperty(e.prototype,"mode",{get:function(){return this.mode_},enumerable:!0,configurable:!0}),e}();n.ModeManager=s},{"../app.module":2,"../gogocarto":46,"../utils/string-helpers":79}],53:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StateManager=n.AppStates=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=n.AppStates=void 0;!function(e){e[e.Normal=0]="Normal",e[e.ShowElement=1]="ShowElement",e[e.ShowElementAlone=2]="ShowElementAlone",e[e.ShowDirections=3]="ShowDirections"}(r||(n.AppStates=r={}));var a=function(){function e(){this.state_=null,this.stateElementId_=null,this.beginDirectionsCalculation=function(e,t){o.App.mapComponent.isInitialized&&(o.App.DEAModule.begin(t.id,!1),setTimeout(function(){o.App.directionsComponent.calculateRoute(e,t)},400))}}return Object.defineProperty(e.prototype,"state",{get:function(){return this.state_},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"stateElementId",{get:function(){return this.stateElementId_},enumerable:!0,configurable:!0}),e.prototype.setState=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n=!1);var a=t&&t.id?o.App.elementById(t.id):null,s=this.state_;switch(this.state_=e,s==r.ShowDirections&&o.App.directionsComponent&&o.App.directionsComponent.clear(),s==r.ShowElementAlone&&(o.App.elementsModule.clearCurrentsElement(),o.App.displayElementAloneModule.end()),this.stateElementId_=t?t.id:null,e){case r.Normal:this.setNormalState();break;case r.ShowElement:this.setShowElementState(a,t);break;case r.ShowElementAlone:this.setShowElementAloneState(a,t);break;case r.ShowDirections:this.setShowDirectionsState(a,t)}n||s===e&&e!=r.ShowElement&&e!=r.ShowElementAlone&&e!=r.ShowDirections||(o.App.dataType==i.AppDataType.All?o.App.historyModule.pushNewState(t):o.App.historyModule.updateCurrState(t)),o.App.documentTitleModule.updateDocumentTitle(t)},e.prototype.setNormalState=function(){o.App.infoBarComponent.hide(!1)},e.prototype.setShowElementState=function(e,t){o.App.mode==i.AppModes.List?(o.App.mapComponent.isInitialized?(o.App.mapComponent.panToLocation(e.position,14,!1),o.App.infoBarComponent.showElement(e.id)):o.App.mapComponent.onMapReady.do(function(){o.App.mapComponent.panToLocation(e.position,14,!1),o.App.infoBarComponent.showElement(e.id)}),o.App.setMode(i.AppModes.Map,!1,!1)):o.App.infoBarComponent.showElement(e.id)},e.prototype.setShowElementAloneState=function(e,t){o.App.infoBarComponent.show(),e?o.App.DEAModule.begin(e.id,!0):o.App.ajaxModule.getElementById(t.id,function(e){o.App.elementsJsonModule.convertJsonElements([e],!0,!0),o.App.DEAModule.begin(e.id,!0),o.App.documentTitleModule.updateDocumentTitle(t),o.App.historyModule.updateCurrState(t)},function(e){var t=o.App.historyStateManager.lastHistoryState;o.App.component.toastMessage("Erreur pendant le chargement de cet élement"),o.App.setState(r.Normal),t.viewport?o.App.mapComponent.setViewPort(t.viewport):o.App.mapComponent.fitDefaultBounds(),setTimeout(function(){o.App.infoBarComponent.hide()},200),setTimeout(function(){o.App.infoBarComponent.hide()},500)})},e.prototype.setShowDirectionsState=function(e,t){var n=this;o.App.geocoder.getLocation();if(!e){if(!t.id)return;o.App.ajaxModule.getElementById(t.id,function(i){o.App.elementsJsonModule.convertJsonElements([i],!0,!0),e=o.App.elementById(i.id),o.App.documentTitleModule.updateDocumentTitle(t),n.checkIfReadyToStartDirections(e)},function(e){alert("No element with App id")})}this.checkIfReadyToStartDirections(e)},e.prototype.checkIfReadyToStartDirections=function(e){var t=this,n=o.App.geocoder.getLocation();e&&n&&(o.App.mode==i.AppModes.List&&(o.App.mapComponent.isInitialized||o.App.mapComponent.onMapReady.do(function(){t.beginDirectionsCalculation(n,e)}),o.App.setMode(i.AppModes.Map,!1,!1)),this.beginDirectionsCalculation(n,e))},e}();n.StateManager=a},{"../app.module":2,"../gogocarto":46}],54:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AjaxModule=n.Request=void 0;var o=e("../classes/event.class"),i=e("../gogocarto"),r=function(){function e(e,t){this.route=e,this.data=t}return e}();n.Request=r;var a=function(){function e(){this.onNewElements=new o.Event,this.isRetrievingElements=!1,this.requestWaitingToBeExecuted=!1,this.waitingRequestFullRepresentation=null,this.currRequest=null,this.loaderTimer=null,this.allElementsReceived=!1}return e.prototype.sendRequest=function(e,t,n,o,i){$.ajax({url:e,method:t,data:n,success:function(e){e&&o&&o(e)},error:function(e){i&&i(e.data)}})},e.prototype.getElementById=function(e,t,n){var o=this;e!=this.currElementIdRetrieving&&(this.currElementIdRetrieving=e,$.ajax({url:this.getSingleElementApiUrl(e),method:"get",data:{},success:function(e){if(e){var i=void 0;i=e.data?Array.isArray(e.data)?e.data[0]:e.data:e,t&&t(i)}else n&&n(e);o.currElementIdRetrieving=null},error:function(e){n&&n(e),o.currElementIdRetrieving=null}}))},e.prototype.getElementsInBounds=function(e,t,n){if(void 0===t&&(t=!1),(!this.currBoundsRetrieving||!e[0].equals(this.currBoundsRetrieving[0]))&&(this.currBoundsRetrieving=e,e&&0!=e.length&&e[0])){var o,a=this.convertBoundsIntoParams(e),s=(a.boundsJson,{bounds:a.boundsString,boundsJson:JSON.stringify(a.boundsJson),categories:"all"!=i.App.currMainId?[i.App.currMainId]:null,fullRepresentation:t,ontology:t?"gogofull":"gogocompact",stampsIds:i.App.request.stampsIds});o=t?i.App.config.data.elements:i.App.config.data.elementsCompactApiUrl||i.App.config.data.elements,this.sendAjaxElementRequest(new r(o,s),n)}},e.prototype.convertBoundsIntoParams=function(e){for(var t="",n=[],o=0,i=e;o0?t=t.replace("{ID}",e.toString()):("/"!=t.slice(-1)&&(t+="/"),t+=e)):t=i.App.config.data.elements+"/"+e,t},e.prototype.sendAjaxElementRequest=function(e,t){var n=this;if(void 0===t&&(t=null),!this.allElementsReceived){if(this.isRetrievingElements)return this.requestWaitingToBeExecuted=!0,void(this.waitingRequestFullRepresentation=e.data.fullRepresentation);this.isRetrievingElements=!0,this.currRequest=e,$.ajax({url:e.route,method:"get",data:e.data,beforeSend:function(){n.loaderTimer=setTimeout(function(){$("#directory-loading").show()},1500)},success:function(o){null!==o.data&&(o.fullRepresentation="gogocompact"!=o.ontology,t&&i.App.boundsModule.updateFilledBoundsWithBoundsReceived(t,e.data.mainOptionId,e.data.fullRepresentation),!o.allElementsSends&&i.App.config.data.requestByBounds||(n.allElementsReceived=!0),n.onNewElements.emit(o))},complete:function(){n.isRetrievingElements=!1,clearTimeout(n.loaderTimer),setTimeout(function(){return $("#directory-loading").hide()},250),n.requestWaitingToBeExecuted&&(i.App.elementsManager.checkForNewElementsToRetrieve(n.waitingRequestFullRepresentation),n.requestWaitingToBeExecuted=!1)}})}},e}();n.AjaxModule=a},{"../classes/event.class":16,"../gogocarto":46}],55:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.BoundsModule=void 0;var o=e("../gogocarto"),i=function(){function e(e){this.fullRepresentationFilledBound=[],this.compactRepresentationFilledBound=[],this.fullRepresentationRetrievingComplete=[],this.compactRepresentationRetrievingComplete=[],this.maxBounds=e.map.maxBounds,this.defaultBounds=e.map.defaultBounds,this.defaultCenter=e.map.defaultCenter}return e.prototype.initialize=function(){for(var e=0,t=o.App.taxonomyModule.getMainOptionsIdsWithAll();es.getWest()&&this.extendedBounds.getEast()s.getSouth()&&this.extendedBounds.getNorth()s.getSouth()&&this.extendedBounds.getNorth()1&&(this.filtersSerializedParam=e[1]);var t=e[0];t&&"#/"!=t&&"#"!=t||(t="/carte"),routie.navigate(t),setTimeout(function(){return routie.reload()},10)}else{var n=window.location.hash;routie.navigate("/carte"),setTimeout(function(){return routie.reload()},10),setTimeout(function(){return window.location.hash=n},100)}},e.prototype.generate=function(e,t,n){return"#"+routie.lookup(e,t)},e.prototype.parseAddressViewport=function(e){e=e.split("?")[0];var t=e.split("@");return 1==t.length?[e,""]:t},e.prototype.startState=function(e){r.App.historyStateManager.load(e)},e}();n.RouterModule=a},{"../../app.module":2,"../../classes/classes":3,"../../gogocarto":46}],59:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(){nunjucks.configure("../src/views",{autoescape:!0})}return e.prototype.render=function(e,t){void 0===t&&(t={});var n="";switch(e){case"layout":n="layout.html.njk";break;case"marker":n="components/map/marker.html.njk";break;case"gogo-styles":n="gogo-styles.html.njk";break;case"element":n="components/element/element.html.njk";break;case"vote-modal-content":n="components/modals/element/vote-content.html.njk";break;default:console.warn("[GoGoCarto] No template associated to templateName",e)}return nunjucks.render(n,t)},e}();n.TemplateModule=o},{}],60:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementDiffModule=void 0;var o=e("../../utils/string-helpers"),i={name:JsDiff.diffSentences,description:JsDiff.diffSentences,address:JsDiff.diffSentences,commitment:JsDiff.diffSentences,telephone:JsDiff.diffSentences,website:JsDiff.diffSentences,email:JsDiff.diffSentences,openHoursMoreInfos:JsDiff.diffSentences},r=function(){function e(){}return e.prototype.getDiffValue=function(e,t,n){var o="",r=null,a=i[n]?i[n]:JsDiff.diffSentences,s=a(e,t),l=document.createElement("div"),u=document.createDocumentFragment();return s.forEach(function(e){o=e.added?"added":e.removed?"removed":"equals",r=document.createElement("span"),o&&(r.className=o),r.appendChild(document.createTextNode(e.value)),u.appendChild(r)}),l.appendChild(u),l.innerHTML},e.prototype.getDiffOptionValues=function(e,t){for(var n=[],i=t.map(function(e){return e.optionId}),r=e.map(function(e){return e.optionId}),a=0,s=e;a=5?this.loadFromCompactJson(e,t):this.loadFromFullJson(e,t)},e.prototype.loadFromCompactJson=function(e,t){t.id=e.id,t.name=(0,r.capitalize)(e[1]),t.position=L.latLng(e[2],e[3]),a.App.elementOptionValuesModule.createOptionValues(e[4],t),t.status=e.length>=6?e[5]:1,t.moderationState=e.length>=7?e[6]:0},e.prototype.loadFromFullJson=function(e,t){if(t.id=e.id||e["@id"],t.position=L.latLng(e.latitude||e.lat||e.geo&&e.geo.latitude,e.longitude||e.lng||e.long||e.geo&&e.geo.longitude),t.name=(0,r.capitalize)(e.name||e.title),t.status=void 0==e.status?1:e.status,t.moderationState=e.moderationState||0,this.createOptionsValues(e,t),t.stamps=e.stamps||[],e.modifiedElement&&-5!=t.status){var n=new i.ElementBase(e.modifiedElement);this.createOptionsValues(e.modifiedElement,n);var s=a.App.elementDiffModule.getDiffOptionValues(t.optionsValues,n.optionsValues);n.optionsValues=s,t.modifiedElement=n}t.description=e.description||e.abstract,t.description=(0,r.capitalize)(t.description||""),t.longDescription=e.descriptionMore,t.longDescription=(0,r.capitalize)(t.longDescription||""),this.checkForMergeDescriptions(t),this.checkForSplitDescription(t),t.address=new i.PostalAddress(e.address),t.reports=e.reports,t.contributions=e.contributions,t.pendingContribution=e.pendingContribution,t.votes=e.votes,t.commitment=e.commitment||"",t.telephone=a.App.elementFormaterModule.getFormatedTel(e.telephone),t.email=e.email||e.contact||"",t.openHours=e.openHours,a.App.elementFormaterModule.calculateFormatedOpenHours(t),t.openHoursMoreInfos=e.openHoursMoreInfos||e.openHoursString,t.images=[],e.image?t.images.push(e.image):e.images&&(t.images=[].concat(e.images)),t.images=t.images.filter(function(e){return e.length>0}),t.website=e.website||e.site;var l=e.urls||e.url,u=[];if("string"==typeof l)u=[new i.ElementUrl(l)];else if(Array.isArray(l))for(var c=0,p=l;c0&&e.description.length+e.longDescription.length<300&&(e.description.length>0&&(e.description=e.description+"
    "),e.description+=e.longDescription,e.longDescription="")},e.prototype.checkForSplitDescription=function(e){if(e.status!=i.ElementStatus.PendingModification&&e.status!=i.ElementStatus.ModifiedElement){if(e.description.length>300){var t=(0,r.splitLongText)(e.description,300,80);e.description=t.first+" (Suite au dessous...)",e.longDescription&&(t.second+="
    "+e.longDescription),e.longDescription=t.second}if(e.longDescription.length>500){var t=(0,r.splitLongText)(e.longDescription,500,100);e.longDescription=t.first,e.longDescriptionMore=t.second}}},e}();n.ElementJsonParserModule=s},{"../../classes/classes":3,"../../gogocarto":46,"../../utils/string-helpers":79}],62:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementFormaterModule=void 0;var o=e("../../classes/classes"),i=e("../../utils/string-helpers"),r=e("../../gogocarto"),a={name:!0,description:!0,longDescription:!0,address:!1,telephone:!1,website:!1,email:!1,openHoursMoreInfos:!0},s=function(){function e(){}return e.prototype.getFormatedTel=function(e){return e?10==e.length?e.replace(/(.{2})(?!$)/g,"$1 "):e:""},e.prototype.calculateFormatedOpenHours=function(e){e.formatedOpenHours={};var t,n;for(var o in e.openHours)t=this.translateDayKey(o),(n=this.formateDailyTimeSlot(e.openHours[o]))&&(e.formatedOpenHours[t]=n)},e.prototype.getProperty=function(e,t){var n=this.getFormatedValue(e,t);if(e.status!=o.ElementStatus.PendingModification||!r.App.config.isFeatureAvailable("pending")||!e.modifiedElement)return n;var i=this.getFormatedValue(e.modifiedElement,t);return n||i?(n=n||"",i=i||"",r.App.elementDiffModule.getDiffValue(n,i,t)):""},e.prototype.translateDayKey=function(e){switch(e){case"Mo":return"lundi";case"Tu":return"mardi";case"We":return"mercredi";case"Th":return"jeudi";case"Fr":return"vendredi";case"Sa":return"samedi";case"Su":return"dimanche"}return""},e.prototype.formateDailyTimeSlot=function(e){return null===e?null:e.replace(/-/g," - ").replace(/,/g," et ")},e.prototype.getFormatedValue=function(e,t){var n;return n="address"==t?e.address.getFormatedAddress():e[t],n=a[t]?(0,i.capitalize)(n):n},e}();n.ElementFormaterModule=s},{"../../classes/classes":3,"../../gogocarto":46,"../../utils/string-helpers":79}],63:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementIconsModule=void 0;var o=e("../../gogocarto"),i=function(){function e(){}return e.prototype.updateIconsToDisplay=function(e){this.checkForDisabledOptionValues(e),"all"==o.App.currMainId?e.iconsToDisplay=this.recursivelySearchIconsToDisplay(e.getOptionTree(),!o.App.config.menu.showOnePanePerMainOption):e.iconsToDisplay=this.recursivelySearchIconsToDisplay(e.getCurrMainOptionValue()),0==e.iconsToDisplay.length&&e.iconsToDisplay.push(e.getCurrMainOptionValue())},e.prototype.recursivelySearchIconsToDisplay=function(e,t){if(void 0===t&&(t=!0),!e)return[];for(var n=[],o=0,i=e.children;o0&&(i.children.sort(function(e,t){return e.index-t.index}),n.addCategoryValue(i)),n},e.prototype.getElementOptionValueCorrespondingToOptionId=function(e,t){var n=e.optionsValues.map(function(e){return e.optionId}).indexOf(t.toString());return-1==n?null:e.optionsValues[n]},e.prototype.lookforMissingParentsOption=function(e){for(var t=e.optionsValues.map(function(e){return e.optionId}),n=0,o=e.optionsValues;n"+(0,r.capitalize)((0,r.unslugify)(t))+"
    ")):(e=o.App.boundsModule.defaultCenter,o.App.elementListComponent.setTitle("")),o.App.boundsModule.createBoundsFromLocation(e),o.App.elementsManager.checkForNewElementsToRetrieve(!0)}else o.App.dataType==i.AppDataType.SearchResults&&(o.App.elementsModule.updateElementsToDisplay(!0,!1),o.App.elementListComponent.setTitle(""))},Object.defineProperty(e.prototype,"mode",{get:function(){return this.mode_},enumerable:!0,configurable:!0}),e}();n.ModeManager=s},{"../app.module":2,"../gogocarto":46,"../utils/string-helpers":79}],53:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StateManager=n.AppStates=void 0;var o=e("../gogocarto"),i=e("../app.module"),r=n.AppStates=void 0;!function(e){e[e.Normal=0]="Normal",e[e.ShowElement=1]="ShowElement",e[e.ShowElementAlone=2]="ShowElementAlone",e[e.ShowDirections=3]="ShowDirections"}(r||(n.AppStates=r={}));var a=function(){function e(){this.state_=null,this.stateElementId_=null,this.beginDirectionsCalculation=function(e,t){o.App.mapComponent.isInitialized&&(o.App.DEAModule.begin(t.id,!1),setTimeout(function(){o.App.directionsComponent.calculateRoute(e,t)},400))}}return Object.defineProperty(e.prototype,"state",{get:function(){return this.state_},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"stateElementId",{get:function(){return this.stateElementId_},enumerable:!0,configurable:!0}),e.prototype.setState=function(e,t,n){void 0===t&&(t={}),void 0===n&&(n=!1);var a=t&&t.id?o.App.elementById(t.id):null,s=this.state_;switch(this.state_=e,s==r.ShowDirections&&o.App.directionsComponent&&o.App.directionsComponent.clear(),s==r.ShowElementAlone&&(o.App.elementsModule.clearCurrentsElement(),o.App.displayElementAloneModule.end()),this.stateElementId_=t?t.id:null,e){case r.Normal:this.setNormalState();break;case r.ShowElement:this.setShowElementState(a,t);break;case r.ShowElementAlone:this.setShowElementAloneState(a,t);break;case r.ShowDirections:this.setShowDirectionsState(a,t)}n||s===e&&e!=r.ShowElement&&e!=r.ShowElementAlone&&e!=r.ShowDirections||(o.App.dataType==i.AppDataType.All?o.App.historyModule.pushNewState(t):o.App.historyModule.updateCurrState(t)),o.App.documentTitleModule.updateDocumentTitle(t)},e.prototype.setNormalState=function(){o.App.infoBarComponent.hide(!1)},e.prototype.setShowElementState=function(e,t){o.App.mode==i.AppModes.List?(o.App.mapComponent.isInitialized?(o.App.mapComponent.panToLocation(e.position,14,!1),o.App.infoBarComponent.showElement(e.id)):o.App.mapComponent.onMapReady.do(function(){o.App.mapComponent.panToLocation(e.position,14,!1),o.App.infoBarComponent.showElement(e.id)}),o.App.setMode(i.AppModes.Map,!1,!1)):o.App.infoBarComponent.showElement(e.id)},e.prototype.setShowElementAloneState=function(e,t){o.App.infoBarComponent.show(),e?o.App.DEAModule.begin(e.id,!0):o.App.ajaxModule.getElementById(t.id,function(e){o.App.elementsJsonModule.convertJsonElements([e],!0,!0),o.App.DEAModule.begin(e.id,!0),o.App.documentTitleModule.updateDocumentTitle(t),o.App.historyModule.updateCurrState(t)},function(e){var t=o.App.historyStateManager.lastHistoryState;o.App.component.toastMessage("Erreur pendant le chargement de cet élement"),o.App.setState(r.Normal),t.viewport?o.App.mapComponent.setViewPort(t.viewport):o.App.mapComponent.fitDefaultBounds(),setTimeout(function(){o.App.infoBarComponent.hide()},200),setTimeout(function(){o.App.infoBarComponent.hide()},500)})},e.prototype.setShowDirectionsState=function(e,t){var n=this;o.App.geocoder.getLocation();if(!e){if(!t.id)return;o.App.ajaxModule.getElementById(t.id,function(i){o.App.elementsJsonModule.convertJsonElements([i],!0,!0),e=o.App.elementById(i.id),o.App.documentTitleModule.updateDocumentTitle(t),n.checkIfReadyToStartDirections(e)},function(e){alert("No element with App id")})}this.checkIfReadyToStartDirections(e)},e.prototype.checkIfReadyToStartDirections=function(e){var t=this,n=o.App.geocoder.getLocation();e&&n&&(o.App.mode==i.AppModes.List&&(o.App.mapComponent.isInitialized||o.App.mapComponent.onMapReady.do(function(){t.beginDirectionsCalculation(n,e)}),o.App.setMode(i.AppModes.Map,!1,!1)),this.beginDirectionsCalculation(n,e))},e}();n.StateManager=a},{"../app.module":2,"../gogocarto":46}],54:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.AjaxModule=n.Request=void 0;var o=e("../classes/event.class"),i=e("../gogocarto"),r=function(){function e(e,t){this.route=e,this.data=t}return e}();n.Request=r;var a=function(){function e(){this.onNewElements=new o.Event,this.isRetrievingElements=!1,this.requestWaitingToBeExecuted=!1,this.waitingRequestFullRepresentation=null,this.currRequest=null,this.loaderTimer=null,this.allElementsReceived=!1}return e.prototype.sendRequest=function(e,t,n,o,i){$.ajax({url:e,method:t,data:n,success:function(e){e&&o&&o(e)},error:function(e){i&&i(e.data)}})},e.prototype.getElementById=function(e,t,n){var o=this;e!=this.currElementIdRetrieving&&(this.currElementIdRetrieving=e,$.ajax({url:this.getSingleElementApiUrl(e),method:"get",data:{},success:function(e){if(e){var i=void 0;i=e.data?Array.isArray(e.data)?e.data[0]:e.data:e,t&&t(i)}else n&&n(e);o.currElementIdRetrieving=null},error:function(e){n&&n(e),o.currElementIdRetrieving=null}}))},e.prototype.getElementsInBounds=function(e,t,n){if(void 0===t&&(t=!1),(!this.currBoundsRetrieving||!e[0].equals(this.currBoundsRetrieving[0]))&&(this.currBoundsRetrieving=e,e&&0!=e.length&&e[0])){var o,a=this.convertBoundsIntoParams(e),s=(a.boundsJson,{bounds:a.boundsString,boundsJson:JSON.stringify(a.boundsJson),categories:"all"!=i.App.currMainId?[i.App.currMainId]:null,fullRepresentation:t,ontology:t?"gogofull":"gogocompact",stampsIds:i.App.request.stampsIds});o=t?i.App.config.data.elements:i.App.config.data.elementsCompactApiUrl||i.App.config.data.elements,this.sendAjaxElementRequest(new r(o,s),n)}},e.prototype.convertBoundsIntoParams=function(e){for(var t="",n=[],o=0,i=e;o0?t=t.replace("{ID}",e.toString()):("/"!=t.slice(-1)&&(t+="/"),t+=e)):t=i.App.config.data.elements+"/"+e,t},e.prototype.sendAjaxElementRequest=function(e,t){var n=this;if(void 0===t&&(t=null),!this.allElementsReceived){if(this.isRetrievingElements)return this.requestWaitingToBeExecuted=!0,void(this.waitingRequestFullRepresentation=e.data.fullRepresentation);this.isRetrievingElements=!0,this.currRequest=e,$.ajax({url:e.route,method:"get",data:e.data,beforeSend:function(){n.loaderTimer=setTimeout(function(){$("#directory-loading").show()},1500)},success:function(o){null!==o.data&&(o.fullRepresentation="gogocompact"!=o.ontology,t&&i.App.boundsModule.updateFilledBoundsWithBoundsReceived(t,e.data.mainOptionId,e.data.fullRepresentation),!o.allElementsSends&&i.App.config.data.requestByBounds||(n.allElementsReceived=!0),n.onNewElements.emit(o))},complete:function(){n.isRetrievingElements=!1,n.currBoundsRetrieving=null,clearTimeout(n.loaderTimer),setTimeout(function(){return $("#directory-loading").hide()},250),n.requestWaitingToBeExecuted&&(i.App.elementsManager.checkForNewElementsToRetrieve(n.waitingRequestFullRepresentation),n.requestWaitingToBeExecuted=!1)}})}},e}();n.AjaxModule=a},{"../classes/event.class":16,"../gogocarto":46}],55:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.BoundsModule=void 0;var o=e("../gogocarto"),i=function(){function e(e){this.fullRepresentationFilledBound=[],this.compactRepresentationFilledBound=[],this.fullRepresentationRetrievingComplete=[],this.compactRepresentationRetrievingComplete=[],this.maxBounds=e.map.maxBounds,this.defaultBounds=e.map.defaultBounds,this.defaultCenter=e.map.defaultCenter}return e.prototype.initialize=function(){for(var e=0,t=o.App.taxonomyModule.getMainOptionsIdsWithAll();es.getWest()&&this.extendedBounds.getEast()s.getSouth()&&this.extendedBounds.getNorth()s.getSouth()&&this.extendedBounds.getNorth()1&&(this.filtersSerializedParam=e[1]);var t=e[0];t&&"#/"!=t&&"#"!=t||(t="/carte"),routie.navigate(t),setTimeout(function(){return routie.reload()},10)}else{var n=window.location.hash;routie.navigate("/carte"),setTimeout(function(){return routie.reload()},10),setTimeout(function(){return window.location.hash=n},100)}},e.prototype.generate=function(e,t,n){return"#"+routie.lookup(e,t)},e.prototype.parseAddressViewport=function(e){e=e.split("?")[0];var t=e.split("@");return 1==t.length?[e,""]:t},e.prototype.startState=function(e){r.App.historyStateManager.load(e)},e}();n.RouterModule=a},{"../../app.module":2,"../../classes/classes":3,"../../gogocarto":46}],59:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0});var o=function(){function e(){nunjucks.configure("../src/views",{autoescape:!0})}return e.prototype.render=function(e,t){void 0===t&&(t={});var n="";switch(e){case"layout":n="layout.html.njk";break;case"marker":n="components/map/marker.html.njk";break;case"gogo-styles":n="gogo-styles.html.njk";break;case"element":n="components/element/element.html.njk";break;case"vote-modal-content":n="components/modals/element/vote-content.html.njk";break;default:console.warn("[GoGoCarto] No template associated to templateName",e)}return nunjucks.render(n,t)},e}();n.TemplateModule=o},{}],60:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementDiffModule=void 0;var o=e("../../utils/string-helpers"),i={name:JsDiff.diffSentences,description:JsDiff.diffSentences,address:JsDiff.diffSentences,commitment:JsDiff.diffSentences,telephone:JsDiff.diffSentences,website:JsDiff.diffSentences,email:JsDiff.diffSentences,openHoursMoreInfos:JsDiff.diffSentences},r=function(){function e(){}return e.prototype.getDiffValue=function(e,t,n){var o="",r=null,a=i[n]?i[n]:JsDiff.diffSentences,s=a(e,t),l=document.createElement("div"),u=document.createDocumentFragment();return s.forEach(function(e){o=e.added?"added":e.removed?"removed":"equals",r=document.createElement("span"),o&&(r.className=o),r.appendChild(document.createTextNode(e.value)),u.appendChild(r)}),l.appendChild(u),l.innerHTML},e.prototype.getDiffOptionValues=function(e,t){for(var n=[],i=t.map(function(e){return e.optionId}),r=e.map(function(e){return e.optionId}),a=0,s=e;a=5?this.loadFromCompactJson(e,t):this.loadFromFullJson(e,t)},e.prototype.loadFromCompactJson=function(e,t){t.id=e.id,t.name=(0,r.capitalize)(e[1]),t.position=L.latLng(e[2],e[3]),a.App.elementOptionValuesModule.createOptionValues(e[4],t),t.status=e.length>=6?e[5]:1,t.moderationState=e.length>=7?e[6]:0},e.prototype.loadFromFullJson=function(e,t){if(t.id=e.id||e["@id"],t.position=L.latLng(e.latitude||e.lat||e.geo&&e.geo.latitude,e.longitude||e.lng||e.long||e.geo&&e.geo.longitude),t.name=(0,r.capitalize)(e.name||e.title),t.status=void 0==e.status?1:e.status,t.moderationState=e.moderationState||0,this.createOptionsValues(e,t),t.stamps=e.stamps||[],e.modifiedElement&&-5!=t.status){var n=new i.ElementBase(e.modifiedElement);this.createOptionsValues(e.modifiedElement,n);var s=a.App.elementDiffModule.getDiffOptionValues(t.optionsValues,n.optionsValues);n.optionsValues=s,t.modifiedElement=n}t.description=e.description||e.abstract,t.description=(0,r.capitalize)(t.description||""),t.longDescription=e.descriptionMore,t.longDescription=(0,r.capitalize)(t.longDescription||""),this.checkForMergeDescriptions(t),this.checkForSplitDescription(t),t.address=new i.PostalAddress(e.address),t.reports=e.reports,t.contributions=e.contributions,t.pendingContribution=e.pendingContribution,t.votes=e.votes,t.commitment=e.commitment||"",t.telephone=a.App.elementFormaterModule.getFormatedTel(e.telephone),t.email=e.email||e.contact||"",t.openHours=e.openHours,a.App.elementFormaterModule.calculateFormatedOpenHours(t),t.openHoursMoreInfos=e.openHoursMoreInfos||e.openHoursString,t.images=[],e.image?t.images.push(e.image):e.images&&(t.images=[].concat(e.images)),t.images=t.images.filter(function(e){return e.length>0}),t.website=e.website||e.site;var l=e.urls||e.url,u=[];if("string"==typeof l)u=[new i.ElementUrl(l)];else if(Array.isArray(l))for(var c=0,p=l;c0&&e.description.length+e.longDescription.length<300&&(e.description.length>0&&(e.description=e.description+"
    "),e.description+=e.longDescription,e.longDescription="")},e.prototype.checkForSplitDescription=function(e){if(e.status!=i.ElementStatus.PendingModification&&e.status!=i.ElementStatus.ModifiedElement){if(e.description.length>300){var t=(0,r.splitLongText)(e.description,300,80);e.description=t.first+" (Suite au dessous...)",e.longDescription&&(t.second+="
    "+e.longDescription),e.longDescription=t.second}if(e.longDescription.length>500){var t=(0,r.splitLongText)(e.longDescription,500,100);e.longDescription=t.first,e.longDescriptionMore=t.second}}},e}();n.ElementJsonParserModule=s},{"../../classes/classes":3,"../../gogocarto":46,"../../utils/string-helpers":79}],62:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementFormaterModule=void 0;var o=e("../../classes/classes"),i=e("../../utils/string-helpers"),r=e("../../gogocarto"),a={name:!0,description:!0,longDescription:!0,address:!1,telephone:!1,website:!1,email:!1,openHoursMoreInfos:!0},s=function(){function e(){}return e.prototype.getFormatedTel=function(e){return e?10==e.length?e.replace(/(.{2})(?!$)/g,"$1 "):e:""},e.prototype.calculateFormatedOpenHours=function(e){e.formatedOpenHours={};var t,n;for(var o in e.openHours)t=this.translateDayKey(o),(n=this.formateDailyTimeSlot(e.openHours[o]))&&(e.formatedOpenHours[t]=n)},e.prototype.getProperty=function(e,t){var n=this.getFormatedValue(e,t);if(e.status!=o.ElementStatus.PendingModification||!r.App.config.isFeatureAvailable("pending")||!e.modifiedElement)return n;var i=this.getFormatedValue(e.modifiedElement,t);return n||i?(n=n||"",i=i||"",r.App.elementDiffModule.getDiffValue(n,i,t)):""},e.prototype.translateDayKey=function(e){switch(e){case"Mo":return"lundi";case"Tu":return"mardi";case"We":return"mercredi";case"Th":return"jeudi";case"Fr":return"vendredi";case"Sa":return"samedi";case"Su":return"dimanche"}return""},e.prototype.formateDailyTimeSlot=function(e){return null===e?null:e.replace(/-/g," - ").replace(/,/g," et ")},e.prototype.getFormatedValue=function(e,t){var n;return n="address"==t?e.address.getFormatedAddress():e[t],n=a[t]?(0,i.capitalize)(n):n},e}();n.ElementFormaterModule=s},{"../../classes/classes":3,"../../gogocarto":46,"../../utils/string-helpers":79}],63:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementIconsModule=void 0;var o=e("../../gogocarto"),i=function(){function e(){}return e.prototype.updateIconsToDisplay=function(e){this.checkForDisabledOptionValues(e),"all"==o.App.currMainId?e.iconsToDisplay=this.recursivelySearchIconsToDisplay(e.getOptionTree(),!o.App.config.menu.showOnePanePerMainOption):e.iconsToDisplay=this.recursivelySearchIconsToDisplay(e.getCurrMainOptionValue()),0==e.iconsToDisplay.length&&e.iconsToDisplay.push(e.getCurrMainOptionValue())},e.prototype.recursivelySearchIconsToDisplay=function(e,t){if(void 0===t&&(t=!0),!e)return[];for(var n=[],o=0,i=e.children;o0&&(i.children.sort(function(e,t){return e.index-t.index}),n.addCategoryValue(i)),n},e.prototype.getElementOptionValueCorrespondingToOptionId=function(e,t){var n=e.optionsValues.map(function(e){return e.optionId}).indexOf(t.toString());return-1==n?null:e.optionsValues[n]},e.prototype.lookforMissingParentsOption=function(e){for(var t=e.optionsValues.map(function(e){return e.optionId}),n=0,o=e.optionsValues;n0)n=r.shift().option,i=n.id;else for(n=t.option;null==i&&n;)if(o=n.getOwner()){if(!(n=o.getOwner()))break;i=n.useColorForMarker?n.id:null}t.colorOptionId=i}},e}();n.ElementOptionValuesModule=r},{"../../classes/classes":3,"../../gogocarto":46}],65:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementsJsonModule=void 0;var o=e("../../classes/classes"),i=e("../../gogocarto"),r=e("../../classes/event.class"),a=e("../../utils/string-helpers"),s=function(){function e(){this.elementsCreatedCount=0,this.onNewsElementsConverted=new r.Event}return e.prototype.convertJsonElements=function(e,t,n){if(void 0===t&&(t=!0),void 0===n&&(n=!0),!e)return{newElementsLength:[],elementsUpdatedLength:0,newElements:[],elementsConverted:[]};var r,a,s=[],l=[];(new Date).getTime();this.cheksIdsAndCreateOnesIfNeeded(e);var u=e.filter(function(e){return i.App.elementsModule.everyElementsId.indexOf(e.id)<0}),c=[];if(n){c=e.filter(function(e){return i.App.elementsModule.everyElementsId.indexOf(e.id)>=0});for(var p=c.length;p--;)a=c[p],r=i.App.elementById(a.id),r.updateWithJson(a),l.push(r)}for(var d=u.length;d--;)a=u[d],r=new o.Element(a),r.initialize(),s.push(r);l=l.concat(s);(new Date).getTime();return this.onNewsElementsConverted.emit(s),{newElementsLength:u.length,elementsUpdatedLength:c.length,newElements:s,elementsConverted:l}},e.prototype.loadLocalElements=function(){if(!i.App.config.data.retrieveElementsByApi){var e=i.App.config.data.elements,t=e.length?e:e.data,n=this.convertJsonElements(t,!0,!0);i.App.ajaxModule.allElementsReceived=!0,i.App.config.map.defaultBoundsProvided||i.App.historyStateManager.lastHistoryState.viewport||(console.log("fit to elements bounds"),i.App.mapComponent.fitElementsBounds(n.elementsConverted))}},e.prototype.cheksIdsAndCreateOnesIfNeeded=function(e){var t=this;e.forEach(function(e,n){var o=e[0]||e.id||e["@id"]||e.compactJson[0];o=o&&"string"==typeof o?(0,a.parseUriId)(o):"generated"+t.elementsCreatedCount++,e.id=o})},e}();n.ElementsJsonModule=s},{"../../classes/classes":3,"../../classes/event.class":16,"../../gogocarto":46,"../../utils/string-helpers":79}],66:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.ElementsModule=void 0;var o=e("../../app.module"),i=e("../../gogocarto"),r=e("../../classes/event.class"),a=function(){function e(){this.onElementsToDisplayChanged=new r.Event,this.everyElements_=[],this.everyElementsId_=[],this.visibleElements_=[],this.searchResultElements_=[],this.firstElementsHaveBeendisplayed=!1}return e.prototype.initialize=function(){this.everyElements_.all=[],this.visibleElements_.all=[];for(var e=0,t=i.App.taxonomyModule.getMainOptions();e-1&&this.currVisibleElements().splice(d,1)}}(new Date).getTime();this.onElementsToDisplayChanged.emit({elementsToDisplay:this.currVisibleElements(),newElements:l,elementsToRemove:u}),this.updateElementsIcons(t),!this.firstElementsHaveBeendisplayed&&this.currVisibleElements()&&this.currVisibleElements().length>0&&(this.firstElementsHaveBeendisplayed=!0,setTimeout(function(){n.updateElementsToDisplay(!0)},100))}}},e.prototype.noNeedToCheckBounds=function(){return i.App.mode==o.AppModes.List&&(i.App.dataType!=o.AppDataType.All||i.App.ajaxModule.allElementsReceived)},e.prototype.updateElementsIcons=function(e){void 0===e&&(e=!1);var t=((new Date).getTime(),this.currVisibleElements());if(t&&t.length){for(var n,o=t.length;o--;)n=t[o],e&&(n.needToBeUpdatedWhenShown=!0),n.marker.domMarker().is(":visible")&&n.update();(new Date).getTime()}},e.prototype.setSearchResultElement=function(e){this.searchResultElements_=e},e.prototype.getSearchElements=function(){return this.searchResultElements_},Object.defineProperty(e.prototype,"everyElements",{get:function(){return this.everyElements_},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"everyElementsId",{get:function(){return this.everyElementsId_},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"visibleElements",{get:function(){return this.visibleElements_},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"searchResultElements",{get:function(){return this.searchResultElements_},enumerable:!0,configurable:!0}),e.prototype.currVisibleElements=function(){return this.visibleElements_[i.App.currMainId]},e.prototype.currEveryElements=function(){return this.everyElements_[i.App.currMainId]},e.prototype.setCurrVisibleElements=function(e){this.visibleElements_[i.App.currMainId]=e},e.prototype.clearCurrVisibleElements=function(){this.visibleElements_[i.App.currMainId]=[]},e.prototype.allElements=function(){return this.everyElements_.all},e.prototype.getElementById=function(e){for(var t=0;t-1&&this.favoriteIds_.splice(i,1),r.createCookie("FavoriteIds",JSON.stringify(this.favoriteIds_))}},e}();n.FavoriteModule=a},{"../../gogocarto":46,"../../utils/cookies":76}],68:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.StampModule=void 0;var o=e("../../classes/classes"),i=function(){function e(e){if(this.allowedStamps=[],this.defaultIcons=["gogo-icon-stamp-1","gogo-icon-stamp-2"],this.defaultIcon="gogo-icon-stamp-1",e.features.stamp.options.allowedStamps)for(var t=0,n=e.features.stamp.options.allowedStamps;t-1}),o=0,i=n;o-1})},e.prototype.getDefaultIcon=function(){return this.defaultIcons.shift()||this.defaultIcon},e}();n.StampModule=i},{"../../classes/classes":3}],69:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.GeocoderModule=void 0;var o=e("../gogocarto"),i=e("../utils/string-helpers"),r=e("../classes/classes"),a=function(){function e(){this.geocoder=null,this.lastAddressRequest="",this.lastResults=null,this.lastResultBounds=null,this.location=null,this.onGeocodeResult=new r.Event,this.onGeolocalizationResult=new r.Event,this.geocoder=GeocoderJS.createGeocoder({provider:"openstreetmap",useSSL:!0})}return e.prototype.getLocation=function(){return this.location},e.prototype.getBounds=function(){return this.lastResultBounds?this.lastResultBounds:null},e.prototype.getLocationSlug=function(){return(0,i.slugify)(this.lastAddressRequest)},e.prototype.getLocationAddress=function(){return this.lastAddressRequest},e.prototype.setLocationAddress=function(e){this.lastAddressRequest=e},e.prototype.latLngBoundsFromRawBounds=function(e){var t=L.latLng(e[0],e[1]),n=L.latLng(e[2],e[3]);return L.latLngBounds(t,n)},e.prototype.geocodeAddress=function(e,t,n){var i=this;if(this.lastAddressRequest=e,""==e)console.log("default location"),this.lastResults=[],this.lastResultBounds=o.App.boundsModule.defaultBounds,this.onGeocodeResult.emit(),t&&setTimeout(function(){t(i.lastResults)},200);else{this.geocoder.geocode(e,function(e){null!==e&&e.length>0?(i.lastResults=e,i.lastResultBounds=i.latLngBoundsFromRawBounds(i.lastResults[0].getBounds()),i.lastResults&&i.lastResults[0]?i.location=L.latLng(i.lastResults[0].getCoordinates()):location=null,i.onGeocodeResult.emit(),t&&t(e)):n&&n()})}},e.prototype.geolocateUser=function(e){var t=this;navigator.geolocation?navigator.geolocation.getCurrentPosition(function(n){var o=17-Math.log(n.coords.accuracy/3e3)*Math.LOG2E;o=Math.min(o,16),o=Math.max(o,8);var i=new r.ViewPort(n.coords.latitude,n.coords.longitude,o);t.handleGeolocalisationResponse(i,e)},function(){},{enableHighAccuracy:!0}):$.getJSON("http://freegeoip.net/json/",function(n){var o=new r.ViewPort(n.latitude,n.longitude,14);t.handleGeolocalisationResponse(o,e)})},e.prototype.handleGeolocalisationResponse=function(e,t){this.location=e.toLocation(),this.onGeolocalizationResult.emit(e),t(e)},e}();n.GeocoderModule=a},{"../classes/classes":3,"../gogocarto":46,"../utils/string-helpers":79}],70:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.LoginModule=void 0;var o=e("../gogocarto"),i=function(){function e(e,t){void 0===t&&(t=""),this.userEmail="",this.setRoles(e),this.setUserEmail(t)}return e.prototype.setRoles=function(e){this.roles_="string"==typeof e?[e]:e},e.prototype.setUserEmail=function(e){this.userEmail=e},e.prototype.getUserEmail=function(){return this.userEmail},e.prototype.getRoles=function(){return this.roles_},e.prototype.loginAction=function(){o.App.config.security.loginAction()},e}();n.LoginModule=i},{"../gogocarto":46}],71:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.DisplayElementAloneModule=void 0;var o=e("../../gogocarto"),i=function(){function e(){this.elementShownAlone_=null}return e.prototype.getElement=function(){return this.elementShownAlone_},e.prototype.begin=function(e,t){void 0===t&&(t=!0),null!==this.elementShownAlone_&&(this.elementShownAlone_.hide(),this.elementShownAlone_.isShownAlone=!1);var n=o.App.elementById(e);this.elementShownAlone_=n,o.App.elementsModule.clearCurrentsElement(),setTimeout(function(){o.App.infoBarComponent.showElement(n.id),t&&(o.App.mapComponent.resize(),o.App.mapComponent.panToLocation(n.position,12,!1),setTimeout(function(){o.App.mapComponent.resize(),o.App.mapComponent.panToLocation(n.position,12,!1)},500))},300)},e.prototype.end=function(){null!==this.elementShownAlone_&&(o.App.elementsModule.updateElementsToDisplay(!0),this.elementShownAlone_.isShownAlone=!1,this.elementShownAlone_=null)},e}();n.DisplayElementAloneModule=i},{"../../gogocarto":46}],72:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.FilterRoutingModule=void 0;var o=e("../../gogocarto"),i=e("../../utils/parser-string-number"),r=e("../../utils/string-helpers"),a=function(){function e(){}return e.prototype.loadFiltersFromString=function(e){var t,n=e.split("@"),r=n[0];if("all"==r)t="all";else{var a=o.App.taxonomyModule.getMainOptionBySlug(r);t=a?a.id:"all"}o.App.filtersComponent.setMainOption(t);var s,l;2==n.length?(s=n[1],l="!"!=s[0],s=s.substring(1)):n.length>2&&console.error("Error spliting in loadFilterFromString");var u=(0,i.parseStringIntoArrayNumber)(s);if(o.App.loadFullTaxonomy||"all"==r||$(".main-categories").hide(),u.length>0){if("all"==r)if(o.App.loadFullTaxonomy)o.App.taxonomyModule.taxonomy.toggle(!l,!1);else for(var c=0,p=o.App.taxonomyModule.taxonomy.options;c-1})}var a=i.App.taxonomyModule.getCurrMainOption();return this.recursivelyCheckedInOption(a,e)}var s=i.App.taxonomyModule.taxonomy.nonDisabledOptions;return 1==s.length?this.recursivelyCheckedInOption(s[0],e):s.some(function(n){return e.haveOption(n)||t.recursivelyCheckedInOption(n,e)})},e.prototype.recursivelyCheckedInOption=function(e,t){var n=this;return 0==e.subcategories.length||e.isDisabled&&!e.isMainOption?e.isChecked&&t.haveOption(e):e.subcategories.every(function(e){if(!e.useForFiltering)return!0;var o=e.checkedOptions,r=t.getOptionValueByCategoryId(e.id);if(i.App.config.menu.showOnePanePerMainOption&&(r=r.filter(function(e){return e.optionId!=i.App.currMainId})),r.length,0==r.length)return!e.isMandatory;var a=r.some(function(e){return o.indexOf(e.option)>-1});return!!a||r.some(function(e){return n.recursivelyCheckedInOption(e.option,t)})})},e}();n.FilterModule=r},{"../../classes/classes":3,"../../gogocarto":46}],74:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TaxonomySkosModule=void 0;var o=e("../../utils/string-helpers"),i=function(){function e(){this.concepts=[]}return e.prototype.convertSkosIntoGoGoTaxonomy=function(e){this.concepts=e["@graph"];for(var t=this.concepts.filter(function(e){return!e.broader}),n=[],o=0,i=t;o0&&(a.suboptions=s),n.push(a)}return n},e.prototype.skosToGoGoOption=function(e){return e.id=(0,o.parseUriId)(e["@id"]),e.name=e.prefLabel,e},e}();n.TaxonomySkosModule=i},{"../../utils/string-helpers":79}],75:[function(e,t,n){"use strict";Object.defineProperty(n,"__esModule",{value:!0}),n.TaxonomyModule=n.Category=n.Option=void 0;var o=e("../../classes/classes");Object.defineProperty(n,"Option",{enumerable:!0,get:function(){return o.Option}}),Object.defineProperty(n,"Category",{enumerable:!0,get:function(){return o.Category}});var i=e("../../utils/string-helpers"),r=e("../../gogocarto"),a=function(){function e(){this.categories=[],this.options=[],this.categoriesCreatedCount=1,this.optionsCreatedCount=1,this.options=[],this.categories=[]}return e.prototype.createTaxonomyFromJson=function(e){var t=e["@graph"];if(t&&(e=r.App.taxonomySkosModule.convertSkosIntoGoGoTaxonomy(e)),Array.isArray(e)&&1==e.length&&(e=e[0]),Array.isArray(e)&&e.length>1){for(var n=0,o=e;n1)for(var s=0,l=this.rootCategories;s=0;t--)o+=(e.charCodeAt(t)-96)*Math.pow(26,n-t-1);return o}function a(e){var t=[];if(!e)return t;for(var n=e.match(/[a-z]+|[0-9]+/g),o=0,i=n;o1?e.substr(0,1).toUpperCase()+e.substr(1,e.length):e:""}function a(e){if(!e)return"";var t=e.toString().split("/");return t[t.length-1]}function s(e,t,n){void 0===n&&(n=50),e.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

    +8}{ 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 WDgG~+eE1knq5lEIteVI8A`bwpIW>6z delta 34240 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�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 s{=(x>rE^Sc+Lr903~%xm;e9( From 07bbbbf2a70cbf327fca6a7e60d4e296497aa9e2 Mon Sep 17 00:00:00 2001 From: Sebastian Castro <90scastro@gmail.com> Date: Mon, 13 Aug 2018 15:43:31 +0200 Subject: [PATCH 4/4] Fixs transiscope theme --- dist/gogocarto.css | 14 ++++++++------ dist/gogocarto.min.css | 2 +- dist/gogocarto.min.css.gz | Bin 28656 -> 28662 bytes src/scss/themes/transiscope/_element.scss | 14 ++++++++------ 4 files changed, 17 insertions(+), 13 deletions(-) diff --git a/dist/gogocarto.css b/dist/gogocarto.css index 398f435..099c8c6 100755 --- a/dist/gogocarto.css +++ b/dist/gogocarto.css @@ -3740,7 +3740,7 @@ th { .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .element-main-icon { display: none !important; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before { - background-color: #f79900; + background-color: #3bad78; color: white; border-radius: 3px; padding: 2px; } @@ -3889,7 +3889,7 @@ th { width: auto; float: right; border: 2px solid; - color: #3bad78; + color: #f79900; padding: 8px 15px; text-align: center; border-radius: 20px; @@ -3897,7 +3897,7 @@ th { .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before { margin-right: 8px; color: white; - background-color: #3bad78; + background-color: #f79900; border-radius: 50%; padding: 0 4px; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before { @@ -3921,7 +3921,9 @@ th { font-size: 1.4rem; line-height: 1.8rem; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .gogo-icon-close { - font-size: 1rem; } + font-size: .9rem; } + .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .collapsible-header .name { + font-size: 15px; } @media only screen and (max-width: 600px) { .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item .expandLabel { margin-right: 10px; @@ -3930,9 +3932,9 @@ th { padding: 8px 10px; } } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big { background-color: white; - color: #3bad78; } + color: #f79900; } .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover { - color: #3bad78; } + color: #f79900; } @media only screen and (max-width: 600px) { .gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big { padding: 8px 10px; } } diff --git a/dist/gogocarto.min.css b/dist/gogocarto.min.css index 642c141..18b17ec 100755 --- a/dist/gogocarto.min.css +++ b/dist/gogocarto.min.css @@ -5,4 +5,4 @@ * Copyright 2014 Alfiana E. Sibuea and other contributors * Released under the MIT license * https://github.com/fians/Waves/blob/master/LICENSE - */height:100%;width:100%}.gogo-load-css ul{list-style-type:none;padding:0}.gogo-load-css a{color:#26A69A;-webkit-tap-highlight-color:transparent;text-decoration:none}.gogo-load-css .valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.gogo-load-css .valign-wrapper .valign{display:block}.gogo-load-css ul li{list-style-type:none}.gogo-load-css .clearfix{clear:both}.gogo-load-css .z-depth-0{box-shadow:none!important}.gogo-load-css .btn,.gogo-load-css .btn-floating,.gogo-load-css .btn-large,.gogo-load-css .collapsible,.gogo-load-css .dropdown-content,.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big,.gogo-load-css .toast,.gogo-load-css .z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.gogo-load-css .btn-floating:hover,.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover,.gogo-load-css .z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.gogo-load-css .gogocarto-container #markerDirectionResult,.gogo-load-css .z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.gogo-load-css .modal,.gogo-load-css .z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.gogo-load-css .z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}.gogo-load-css .hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #de5a5f}.gogo-load-css i{line-height:inherit}.gogo-load-css i.left{float:left;margin-right:15px}.gogo-load-css i.right{float:right;margin-left:15px}.gogo-load-css i.tiny{font-size:1rem}.gogo-load-css i.small{font-size:2rem}.gogo-load-css i.medium{font-size:4rem}.gogo-load-css i.large{font-size:6rem}.gogo-load-css img.responsive-img,.gogo-load-css video.responsive-video{max-width:100%;height:auto}.gogo-load-css .pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.gogo-load-css .pagination li a{color:#444}.gogo-load-css .pagination li.active a{color:#fff}.gogo-load-css .pagination li.active{background-color:#de5a5f}.gogo-load-css .pagination li.disabled a{cursor:default;color:#999}.gogo-load-css .pagination li i{font-size:2rem}.gogo-load-css .pagination li.pages ul li{display:inline-block;float:none}.gogo-load-css .parallax-container{position:relative;overflow:hidden;height:500px}.gogo-load-css .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.gogo-load-css .parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transform:translateX(-50%)}.gogo-load-css .pin-bottom,.gogo-load-css .pin-top{position:relative}.gogo-load-css .pinned{position:fixed!important}.gogo-load-css ul.staggered-list li{opacity:0}.gogo-load-css .fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width:600px){.gogo-load-css .hide-on-small-and-down,.gogo-load-css .hide-on-small-only{display:none!important}}@media only screen and (max-width:1200px){.gogo-load-css .pagination{width:100%}.gogo-load-css .pagination li.next,.gogo-load-css .pagination li.prev{width:10%}.gogo-load-css .pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}.gogo-load-css .hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .hide-on-med-only{display:none!important}}@media only screen and (min-width:1201px){.gogo-load-css .hide-on-large-only{display:none!important}.gogo-load-css .show-on-large{display:initial!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .show-on-medium{display:initial!important}}@media only screen and (min-width:601px){.gogo-load-css .show-on-medium-and-up{display:initial!important}}@media only screen and (max-width:1200px){.gogo-load-css .show-on-medium-and-down{display:initial!important}}@media only screen and (max-width:600px){.gogo-load-css .show-on-small{display:initial!important}.gogo-load-css .center-on-small-only{text-align:center}}.gogo-load-css footer.page-footer{margin-top:20px;padding-top:20px;background-color:#de5a5f}.gogo-load-css footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,.8);background-color:rgba(51,51,51,.08)}.gogo-load-css table.highlight>tbody>tr:hover,.gogo-load-css table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}.gogo-load-css table,.gogo-load-css td,.gogo-load-css th{border:none}.gogo-load-css table.bordered>tbody>tr,.gogo-load-css table.bordered>thead>tr,.gogo-load-css thead{border-bottom:1px solid #d0d0d0}.gogo-load-css table{width:100%;display:table}.gogo-load-css table.striped>tbody>tr>td{border-radius:0}.gogo-load-css table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}.gogo-load-css td,.gogo-load-css th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:1200px){.gogo-load-css table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}.gogo-load-css table.responsive-table td,.gogo-load-css table.responsive-table th{margin:0;vertical-align:top}.gogo-load-css table.responsive-table thead{display:block;float:left;border:0;border-right:1px solid #d0d0d0}.gogo-load-css table.responsive-table thead tr{display:block;padding:0 10px 0 0}.gogo-load-css table.responsive-table thead tr th::before{content:"\00a0"}.gogo-load-css table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}.gogo-load-css table.responsive-table tbody tr{display:inline-block;vertical-align:top}.gogo-load-css table.responsive-table th{display:block;text-align:right}.gogo-load-css table.responsive-table td{display:block;min-height:1.25em;text-align:left}.gogo-load-css table.responsive-table tr{padding:0 10px}.gogo-load-css table.responsive-table.bordered th{border-bottom:0;border-left:0}.gogo-load-css table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}.gogo-load-css table.responsive-table.bordered tr{border:0}.gogo-load-css table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.gogo-load-css .collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.gogo-load-css .collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.gogo-load-css .collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.gogo-load-css .collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.gogo-load-css .collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.gogo-load-css .collection .collection-item.avatar .title{font-size:16px}.gogo-load-css .collection .collection-item.avatar p{margin:0}.gogo-load-css .collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.gogo-load-css .collection .collection-item:last-child{border-bottom:none}.gogo-load-css .collection .collection-item.active{background-color:#4A7874;color:#e9f1f1}.gogo-load-css .collection .collection-item.active .secondary-content{color:#fff}.gogo-load-css .collection a.collection-item{display:block;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;-ms-transition:.25s;transition:.25s;color:#4A7874}.gogo-load-css .collection a.collection-item:not(.active):hover{background-color:#ddd}.gogo-load-css .collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.gogo-load-css .collection.with-header .collection-item{padding-left:30px}.gogo-load-css .collection.with-header .collection-item.avatar{padding-left:72px}.gogo-load-css .secondary-content{float:right;color:#4A7874}.gogo-load-css .collapsible .collection{margin:0;border:none}.gogo-load-css span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:color("grey","darken-1");position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css span.badge.more{font-weight:300;font-size:.8rem;color:#fff;background-color:#4A7874;border-radius:2px}.gogo-load-css span.badge.new:after{content:" new"}.gogo-load-css span.badge.more:after{content:" more"}.gogo-load-css nav ul a span.badge{position:static;margin-left:4px;line-height:0}.gogo-load-css .video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.gogo-load-css .video-container.no-controls{padding-top:0}.gogo-load-css .video-container embed,.gogo-load-css .video-container iframe,.gogo-load-css .video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.gogo-load-css .progress{position:relative;height:4px;display:block;width:100%;background-color:#bad4d2;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.gogo-load-css .progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#4A7874;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.gogo-load-css .progress .indeterminate{background-color:#4A7874}.gogo-load-css .progress .indeterminate:after,.gogo-load-css .progress .indeterminate:before{content:'';position:absolute;background-color:inherit;bottom:0;will-change:left,right;top:0;left:0}.gogo-load-css .progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.gogo-load-css .progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}.gogo-load-css .hide{display:none!important}.gogo-load-css .left-align{text-align:left}.gogo-load-css .right-align{text-align:right}.gogo-load-css .center,.gogo-load-css .center-align{text-align:center}.gogo-load-css .left{float:left!important}.gogo-load-css .right{float:right!important}.gogo-load-css .no-select,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gogo-load-css .circle{border-radius:50%}.gogo-load-css .center-block{display:block;margin-left:auto;margin-right:auto}.gogo-load-css .truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .no-padding{padding:0!important}.gogo-load-css .container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.gogo-load-css .container{width:85%}}@media only screen and (min-width:1201px){.gogo-load-css .container{width:70%}}.gogo-load-css .container .row{margin-left:-.75rem;margin-right:-.75rem}.gogo-load-css .section{padding-top:1rem;padding-bottom:1rem}.gogo-load-css .section.no-pad{padding:0}.gogo-load-css .section.no-pad-bot{padding-bottom:0}.gogo-load-css .section.no-pad-top{padding-top:0}.gogo-load-css .row{margin-left:auto;margin-right:auto;margin-bottom:20px}.gogo-load-css .row:after{content:"";display:table;clear:both}.gogo-load-css .gogocarto-container,.gogo-load-css .tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex}.gogo-load-css .row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem}.gogo-load-css .row .col.s1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.s2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.s3{width:25%;margin-left:0}.gogo-load-css .row .col.s4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.s5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.s6{width:50%;margin-left:0}.gogo-load-css .row .col.s7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.s8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.s9{width:75%;margin-left:0}.gogo-load-css .row .col.s10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.s11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.s12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-s1{margin-left:8.33333%}.gogo-load-css .row .col.offset-s2{margin-left:16.66667%}.gogo-load-css .row .col.offset-s3{margin-left:25%}.gogo-load-css .row .col.offset-s4{margin-left:33.33333%}.gogo-load-css .row .col.offset-s5{margin-left:41.66667%}.gogo-load-css .row .col.offset-s6{margin-left:50%}.gogo-load-css .row .col.offset-s7{margin-left:58.33333%}.gogo-load-css .row .col.offset-s8{margin-left:66.66667%}.gogo-load-css .row .col.offset-s9{margin-left:75%}.gogo-load-css .row .col.offset-s10{margin-left:83.33333%}.gogo-load-css .row .col.offset-s11{margin-left:91.66667%}.gogo-load-css .row .col.offset-s12{margin-left:100%}@media only screen and (min-width:601px){.gogo-load-css .row .col.m1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.m2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.m3{width:25%;margin-left:0}.gogo-load-css .row .col.m4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.m5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.m6{width:50%;margin-left:0}.gogo-load-css .row .col.m7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.m8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.m9{width:75%;margin-left:0}.gogo-load-css .row .col.m10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.m11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.m12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-m1{margin-left:8.33333%}.gogo-load-css .row .col.offset-m2{margin-left:16.66667%}.gogo-load-css .row .col.offset-m3{margin-left:25%}.gogo-load-css .row .col.offset-m4{margin-left:33.33333%}.gogo-load-css .row .col.offset-m5{margin-left:41.66667%}.gogo-load-css .row .col.offset-m6{margin-left:50%}.gogo-load-css .row .col.offset-m7{margin-left:58.33333%}.gogo-load-css .row .col.offset-m8{margin-left:66.66667%}.gogo-load-css .row .col.offset-m9{margin-left:75%}.gogo-load-css .row .col.offset-m10{margin-left:83.33333%}.gogo-load-css .row .col.offset-m11{margin-left:91.66667%}.gogo-load-css .row .col.offset-m12{margin-left:100%}}@media only screen and (min-width:1201px){.gogo-load-css .row .col.l1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.l2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.l3{width:25%;margin-left:0}.gogo-load-css .row .col.l4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.l5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.l6{width:50%;margin-left:0}.gogo-load-css .row .col.l7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.l8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.l9{width:75%;margin-left:0}.gogo-load-css .row .col.l10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.l11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.l12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-l1{margin-left:8.33333%}.gogo-load-css .row .col.offset-l2{margin-left:16.66667%}.gogo-load-css .row .col.offset-l3{margin-left:25%}.gogo-load-css .row .col.offset-l4{margin-left:33.33333%}.gogo-load-css .row .col.offset-l5{margin-left:41.66667%}.gogo-load-css .row .col.offset-l6{margin-left:50%}.gogo-load-css .row .col.offset-l7{margin-left:58.33333%}.gogo-load-css .row .col.offset-l8{margin-left:66.66667%}.gogo-load-css .row .col.offset-l9{margin-left:75%}.gogo-load-css .row .col.offset-l10{margin-left:83.33333%}.gogo-load-css .row .col.offset-l11{margin-left:91.66667%}.gogo-load-css .row .col.offset-l12{margin-left:100%}}.gogo-load-css html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){.gogo-load-css html{font-size:14px}}@media only screen and (min-width:900px){.gogo-load-css html{font-size:14.5px}}@media only screen and (min-width:1200px){.gogo-load-css html{font-size:15px}}.gogo-load-css h1,.gogo-load-css h2,.gogo-load-css h3,.gogo-load-css h4,.gogo-load-css h5,.gogo-load-css h6{font-weight:400}.gogo-load-css h1 a,.gogo-load-css h2 a,.gogo-load-css h3 a,.gogo-load-css h4 a,.gogo-load-css h5 a,.gogo-load-css h6 a{font-weight:inherit}.gogo-load-css h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem}.gogo-load-css h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem}.gogo-load-css h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem}.gogo-load-css h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem}.gogo-load-css h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem}.gogo-load-css h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem}.gogo-load-css em{font-style:italic}.gogo-load-css strong{font-weight:700}.gogo-load-css small{font-size:75%}.gogo-load-css .light,.gogo-load-css footer.page-footer .footer-copyright{font-weight:300}.gogo-load-css .thin{font-weight:200}.gogo-load-css .flow-text{font-weight:300}@media only screen and (min-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.gogo-load-css .flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.gogo-load-css .flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.gogo-load-css .flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.gogo-load-css .flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.gogo-load-css .flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.gogo-load-css .flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.gogo-load-css .flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.gogo-load-css .flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.gogo-load-css .flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.gogo-load-css .flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.gogo-load-css .flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.gogo-load-css .flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.gogo-load-css .flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.gogo-load-css .flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.gogo-load-css .flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.gogo-load-css .flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.gogo-load-css .flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.gogo-load-css .flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.gogo-load-css .flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.gogo-load-css .flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}.gogo-load-css .tabs{display:flex;position:relative;height:2.7rem;background-color:#3D3D3D;margin:0 auto;width:calc(100% - 1px);white-space:nowrap}.gogo-load-css .tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:3rem;height:2.7rem;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%;padding:0}.gogo-load-css .tabs .tab a{color:#fff;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.gogo-load-css .tabs .tab a:hover{color:#fff}.gogo-load-css .tabs .tab.disabled a{color:#fff;cursor:default}.gogo-load-css .tabs .indicator{position:absolute;top:0;height:3px;background-color:#fff;will-change:left,right}.gogo-load-css .btn,.gogo-load-css .btn-flat,.gogo-load-css .btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.gogo-load-css .btn-floating.disabled,.gogo-load-css .btn-floating:disabled,.gogo-load-css .btn-large.disabled,.gogo-load-css .btn-large:disabled,.gogo-load-css .btn.disabled,.gogo-load-css .btn:disabled,.gogo-load-css .disabled.btn-large{background-color:#DFDFDF!important;box-shadow:none;color:#9F9F9F!important;cursor:default}.gogo-load-css .btn-floating.disabled *,.gogo-load-css .btn-floating:disabled *,.gogo-load-css .btn-large.disabled *,.gogo-load-css .btn-large:disabled *,.gogo-load-css .btn.disabled *,.gogo-load-css .btn:disabled *,.gogo-load-css .disabled.btn-large *{pointer-events:none}.gogo-load-css .btn-floating.disabled:hover,.gogo-load-css .btn-floating:disabled:hover,.gogo-load-css .btn-large.disabled:hover,.gogo-load-css .btn-large:disabled:hover,.gogo-load-css .btn.disabled:hover,.gogo-load-css .btn:disabled:hover,.gogo-load-css .disabled.btn-large:hover{background-color:#DFDFDF;color:#9F9F9F}.gogo-load-css .btn i,.gogo-load-css .btn-flat i,.gogo-load-css .btn-floating i,.gogo-load-css .btn-large i{font-size:1.3rem;line-height:inherit}.gogo-load-css .btn,.gogo-load-css .btn-large{text-decoration:none;color:#fff;background-color:#26A69A;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover{background-color:#2bbbad}.gogo-load-css .btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26A69A;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.gogo-load-css .btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.gogo-load-css .btn-floating:before{border-radius:0}.gogo-load-css .btn-floating.btn-large{width:55.5px;height:55.5px}.gogo-load-css .btn-floating.btn-large i{line-height:55.5px}.gogo-load-css button.btn-floating{border:none}.gogo-load-css .fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.gogo-load-css .fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.gogo-load-css .fixed-action-btn ul li{margin-bottom:15px}.gogo-load-css .fixed-action-btn ul a.btn-floating{opacity:0}.gogo-load-css .btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.gogo-load-css .btn-flat.disabled{color:#b3b3b3;cursor:default}.gogo-load-css .btn-large{height:54px;line-height:56px}.gogo-load-css .btn-large i{font-size:1.6rem}.gogo-load-css .btn-block{display:block}.gogo-load-css .dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.gogo-load-css .dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.gogo-load-css .dropdown-content li.active,.gogo-load-css .dropdown-content li:hover{background-color:#eee}.gogo-load-css .dropdown-content li>a,.gogo-load-css .dropdown-content li>span{font-size:1.2rem;color:#4A7874;display:block;padding:1rem}.gogo-load-css .dropdown-content li>a>i{height:inherit;line-height:inherit}.gogo-load-css .waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity,transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.gogo-load-css .waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);-webkit-transition:all .7s ease-out;-moz-transition:all .7s ease-out;-o-transition:all .7s ease-out;-ms-transition:all .7s ease-out;transition:all .7s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.gogo-load-css .waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,.45)}.gogo-load-css .waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.gogo-load-css .waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.gogo-load-css .waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.gogo-load-css .waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.gogo-load-css .waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.gogo-load-css .waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.gogo-load-css .waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.gogo-load-css .waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.gogo-load-css .waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.gogo-load-css .waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.gogo-load-css .waves-block{display:block}.gogo-load-css a.waves-effect .waves-ripple{z-index:-1}.gogo-load-css .modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:1200px){.gogo-load-css .modal{width:80%}}@media only screen and (max-width:600px){.gogo-load-css .modal{width:100%;max-height:100%;height:100%;top:0!important}}.gogo-load-css .modal h1,.gogo-load-css .modal h2,.gogo-load-css .modal h3,.gogo-load-css .modal h4,.gogo-load-css .modal h5{margin-top:0}.gogo-load-css .modal h5{margin-bottom:1.5rem}.gogo-load-css .modal .footer{margin-top:1rem;text-align:center}.gogo-load-css .modal .modal-content{padding:24px}@media only screen and (min-width:601px){.gogo-load-css .modal .modal-content{padding:40px}}.gogo-load-css .modal .modal-close{cursor:pointer;color:#fff}.gogo-load-css .modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.gogo-load-css .modal .modal-footer .btn,.gogo-load-css .modal .modal-footer .btn-flat,.gogo-load-css .modal .modal-footer .btn-large{float:right;margin:6px 0}.gogo-load-css .modal.modal-fixed-footer{padding:0;height:70%}.gogo-load-css .modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 58px);max-height:100%;width:100%;overflow-y:auto}.gogo-load-css .modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.gogo-load-css .modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.gogo-load-css .collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.gogo-load-css .collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.gogo-load-css .collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.gogo-load-css .collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css .collapsible-body p{margin:0;padding:2rem}.gogo-load-css .side-nav .collapsible{border:none;box-shadow:none}.gogo-load-css .side-nav .collapsible li{padding:0}.gogo-load-css .side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.gogo-load-css .side-nav .collapsible-header i{line-height:inherit}.gogo-load-css .side-nav .collapsible-body{border:0;background-color:#fff}.gogo-load-css .side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.gogo-load-css .collapsible.popout{border:none;box-shadow:none}.gogo-load-css .collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.gogo-load-css .collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.gogo-load-css select:focus{outline:#d0e2e0 solid 1px}.gogo-load-css label{font-size:.8rem;color:#3D3D3D}.gogo-load-css ::-webkit-input-placeholder{color:#707070}.gogo-load-css :-moz-placeholder{color:#707070}.gogo-load-css ::-moz-placeholder{color:#707070}.gogo-load-css :-ms-input-placeholder{color:#707070}.gogo-load-css input[type=date],.gogo-load-css input[type=datetime-local],.gogo-load-css input[type=email],.gogo-load-css input[type=number],.gogo-load-css input[type=password],.gogo-load-css input[type=search],.gogo-load-css input[type=tel],.gogo-load-css input[type=text],.gogo-load-css input[type=time],.gogo-load-css input[type=url],.gogo-load-css textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;border-radius:0;outline:0;height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}.gogo-load-css input[type=date]:disabled,.gogo-load-css input[type=date][readonly=readonly],.gogo-load-css input[type=datetime-local]:disabled,.gogo-load-css input[type=datetime-local][readonly=readonly],.gogo-load-css input[type=email]:disabled,.gogo-load-css input[type=email][readonly=readonly],.gogo-load-css input[type=number]:disabled,.gogo-load-css input[type=number][readonly=readonly],.gogo-load-css input[type=password]:disabled,.gogo-load-css input[type=password][readonly=readonly],.gogo-load-css input[type=search]:disabled,.gogo-load-css input[type=search][readonly=readonly],.gogo-load-css input[type=tel]:disabled,.gogo-load-css input[type=tel][readonly=readonly],.gogo-load-css input[type=text]:disabled,.gogo-load-css input[type=text][readonly=readonly],.gogo-load-css input[type=time]:disabled,.gogo-load-css input[type=time][readonly=readonly],.gogo-load-css input[type=url]:disabled,.gogo-load-css input[type=url][readonly=readonly],.gogo-load-css textarea.materialize-textarea:disabled,.gogo-load-css textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}.gogo-load-css input[type=date].valid,.gogo-load-css input[type=date]:focus.valid,.gogo-load-css input[type=date]:focus:not([readonly]),.gogo-load-css input[type=datetime-local].valid,.gogo-load-css input[type=datetime-local]:focus.valid,.gogo-load-css input[type=datetime-local]:focus:not([readonly]),.gogo-load-css input[type=email].valid,.gogo-load-css input[type=email]:focus.valid,.gogo-load-css input[type=email]:focus:not([readonly]),.gogo-load-css input[type=number].valid,.gogo-load-css input[type=number]:focus.valid,.gogo-load-css input[type=number]:focus:not([readonly]),.gogo-load-css input[type=password].valid,.gogo-load-css input[type=password]:focus.valid,.gogo-load-css input[type=password]:focus:not([readonly]),.gogo-load-css input[type=search].valid,.gogo-load-css input[type=search]:focus.valid,.gogo-load-css input[type=search]:focus:not([readonly]),.gogo-load-css input[type=tel].valid,.gogo-load-css input[type=tel]:focus.valid,.gogo-load-css input[type=tel]:focus:not([readonly]),.gogo-load-css input[type=text].valid,.gogo-load-css input[type=text]:focus.valid,.gogo-load-css input[type=text]:focus:not([readonly]),.gogo-load-css input[type=time].valid,.gogo-load-css input[type=time]:focus.valid,.gogo-load-css input[type=time]:focus:not([readonly]),.gogo-load-css input[type=url].valid,.gogo-load-css input[type=url]:focus.valid,.gogo-load-css input[type=url]:focus:not([readonly]),.gogo-load-css textarea.materialize-textarea.valid,.gogo-load-css textarea.materialize-textarea:focus.valid,.gogo-load-css textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #4A7874;box-shadow:0 1px 0 0 #4A7874}.gogo-load-css input[type=date]:disabled+label,.gogo-load-css input[type=date][readonly=readonly]+label,.gogo-load-css input[type=datetime-local]:disabled+label,.gogo-load-css input[type=datetime-local][readonly=readonly]+label,.gogo-load-css input[type=email]:disabled+label,.gogo-load-css input[type=email][readonly=readonly]+label,.gogo-load-css input[type=number]:disabled+label,.gogo-load-css input[type=number][readonly=readonly]+label,.gogo-load-css input[type=password]:disabled+label,.gogo-load-css input[type=password][readonly=readonly]+label,.gogo-load-css input[type=search]:disabled+label,.gogo-load-css input[type=search][readonly=readonly]+label,.gogo-load-css input[type=tel]:disabled+label,.gogo-load-css input[type=tel][readonly=readonly]+label,.gogo-load-css input[type=text]:disabled+label,.gogo-load-css input[type=text][readonly=readonly]+label,.gogo-load-css input[type=time]:disabled+label,.gogo-load-css input[type=time][readonly=readonly]+label,.gogo-load-css input[type=url]:disabled+label,.gogo-load-css input[type=url][readonly=readonly]+label,.gogo-load-css textarea.materialize-textarea:disabled+label,.gogo-load-css textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}.gogo-load-css input[type=date]:focus:not([readonly])+label,.gogo-load-css input[type=datetime-local]:focus:not([readonly])+label,.gogo-load-css input[type=email]:focus:not([readonly])+label,.gogo-load-css input[type=number]:focus:not([readonly])+label,.gogo-load-css input[type=password]:focus:not([readonly])+label,.gogo-load-css input[type=search]:focus:not([readonly])+label,.gogo-load-css input[type=tel]:focus:not([readonly])+label,.gogo-load-css input[type=text]:focus:not([readonly])+label,.gogo-load-css input[type=time]:focus:not([readonly])+label,.gogo-load-css input[type=url]:focus:not([readonly])+label,.gogo-load-css textarea.materialize-textarea:focus:not([readonly])+label{color:#4A7874}.gogo-load-css input[type=date].valid+label:after,.gogo-load-css input[type=date]:focus.valid+label:after,.gogo-load-css input[type=datetime-local].valid+label:after,.gogo-load-css input[type=datetime-local]:focus.valid+label:after,.gogo-load-css input[type=email].valid+label:after,.gogo-load-css input[type=email]:focus.valid+label:after,.gogo-load-css input[type=number].valid+label:after,.gogo-load-css input[type=number]:focus.valid+label:after,.gogo-load-css input[type=password].valid+label:after,.gogo-load-css input[type=password]:focus.valid+label:after,.gogo-load-css input[type=search].valid+label:after,.gogo-load-css input[type=search]:focus.valid+label:after,.gogo-load-css input[type=tel].valid+label:after,.gogo-load-css input[type=tel]:focus.valid+label:after,.gogo-load-css input[type=text].valid+label:after,.gogo-load-css input[type=text]:focus.valid+label:after,.gogo-load-css input[type=time].valid+label:after,.gogo-load-css input[type=time]:focus.valid+label:after,.gogo-load-css input[type=url].valid+label:after,.gogo-load-css input[type=url]:focus.valid+label:after,.gogo-load-css textarea.materialize-textarea.valid+label:after,.gogo-load-css textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4A7874;opacity:1}.gogo-load-css input[type=date].invalid,.gogo-load-css input[type=date]:focus.invalid,.gogo-load-css input[type=datetime-local].invalid,.gogo-load-css input[type=datetime-local]:focus.invalid,.gogo-load-css input[type=email].invalid,.gogo-load-css input[type=email]:focus.invalid,.gogo-load-css input[type=number].invalid,.gogo-load-css input[type=number]:focus.invalid,.gogo-load-css input[type=password].invalid,.gogo-load-css input[type=password]:focus.invalid,.gogo-load-css input[type=search].invalid,.gogo-load-css input[type=search]:focus.invalid,.gogo-load-css input[type=tel].invalid,.gogo-load-css input[type=tel]:focus.invalid,.gogo-load-css input[type=text].invalid,.gogo-load-css input[type=text]:focus.invalid,.gogo-load-css input[type=time].invalid,.gogo-load-css input[type=time]:focus.invalid,.gogo-load-css input[type=url].invalid,.gogo-load-css input[type=url]:focus.invalid,.gogo-load-css textarea.materialize-textarea.invalid,.gogo-load-css textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #B90303;box-shadow:0 1px 0 0 #B90303}.gogo-load-css input[type=date].invalid+label:after,.gogo-load-css input[type=date]:focus.invalid+label:after,.gogo-load-css input[type=datetime-local].invalid+label:after,.gogo-load-css input[type=datetime-local]:focus.invalid+label:after,.gogo-load-css input[type=email].invalid+label:after,.gogo-load-css input[type=email]:focus.invalid+label:after,.gogo-load-css input[type=number].invalid+label:after,.gogo-load-css input[type=number]:focus.invalid+label:after,.gogo-load-css input[type=password].invalid+label:after,.gogo-load-css input[type=password]:focus.invalid+label:after,.gogo-load-css input[type=search].invalid+label:after,.gogo-load-css input[type=search]:focus.invalid+label:after,.gogo-load-css input[type=tel].invalid+label:after,.gogo-load-css input[type=tel]:focus.invalid+label:after,.gogo-load-css input[type=text].invalid+label:after,.gogo-load-css input[type=text]:focus.invalid+label:after,.gogo-load-css input[type=time].invalid+label:after,.gogo-load-css input[type=time]:focus.invalid+label:after,.gogo-load-css input[type=url].invalid+label:after,.gogo-load-css input[type=url]:focus.invalid+label:after,.gogo-load-css textarea.materialize-textarea.invalid+label:after,.gogo-load-css textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#B90303;opacity:1}.gogo-load-css input[type=date]+label:after,.gogo-load-css input[type=datetime-local]+label:after,.gogo-load-css input[type=email]+label:after,.gogo-load-css input[type=number]+label:after,.gogo-load-css input[type=password]+label:after,.gogo-load-css input[type=search]+label:after,.gogo-load-css input[type=tel]+label:after,.gogo-load-css input[type=text]+label:after,.gogo-load-css input[type=time]+label:after,.gogo-load-css input[type=url]+label:after,.gogo-load-css textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.gogo-load-css .input-field{position:relative;margin-top:1rem}.gogo-load-css .input-field label{color:#3D3D3D;position:absolute;top:.8rem;left:.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.gogo-load-css .input-field label.active{font-size:.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.gogo-load-css .input-field .prefix{position:absolute;width:3rem;font-size:2rem;line-height:3rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.gogo-load-css .input-field .prefix.active{color:#4A7874}.gogo-load-css .input-field .prefix~input,.gogo-load-css .input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.gogo-load-css .input-field .prefix~textarea{padding-top:.8rem}.gogo-load-css .input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:1200px){.gogo-load-css .input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.gogo-load-css .input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.gogo-load-css .input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.gogo-load-css .input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.gogo-load-css .input-field input[type=search]:focus+label i,.gogo-load-css .input-field input[type=search]:focus~.material-icons,.gogo-load-css .input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.gogo-load-css .input-field input[type=search]+label{left:1rem}.gogo-load-css .input-field input[type=search]~.material-icons,.gogo-load-css .input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}.gogo-load-css textarea{width:100%;height:3rem;background-color:transparent}.gogo-load-css textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.gogo-load-css .hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.gogo-load-css [type=radio]:checked,.gogo-load-css [type=radio]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=radio]:checked+label,.gogo-load-css [type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=radio]+label:after,.gogo-load-css [type=radio]+label:before{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}.gogo-load-css [type=radio]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}.gogo-load-css [type=radio]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.gogo-load-css [type=radio]:checked+label:before{border-radius:50%;border:2px solid transparent}.gogo-load-css [type=radio]:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.gogo-load-css [type=radio].with-gap:checked+label:before{border-radius:50%;border:2px solid #4A7874}.gogo-load-css [type=radio].with-gap:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:before,.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled+label{color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#BDBDBD}.gogo-load-css form p{margin-bottom:10px;text-align:left}.gogo-load-css form p:last-child{margin-bottom:0}.gogo-load-css [type=checkbox]:checked,.gogo-load-css [type=checkbox]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=checkbox]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;-ms-transition:.2s;transition:.2s}.gogo-load-css [type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #4A7874;border-bottom:2px solid #4A7874;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #4A7874;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}.gogo-load-css [type=checkbox].filled-in+label:after{border-radius:2px}.gogo-load-css [type=checkbox].filled-in+label:after,.gogo-load-css [type=checkbox].filled-in+label:before{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}.gogo-load-css [type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:none;border-left:none;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #4A7874;background-color:#4A7874;z-index:0}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.gogo-load-css .switch,.gogo-load-css .switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css .switch label{cursor:pointer}.gogo-load-css .switch label input[type=checkbox]{opacity:0;width:0;height:0}.gogo-load-css .switch label input[type=checkbox]:checked+.lever{background-color:#a1a1a1}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{background-color:#4A7874}.gogo-load-css .switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.gogo-load-css .switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.gogo-load-css input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(74,120,116,.1)}.gogo-load-css input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{left:24px}.gogo-load-css .switch input[type=checkbox][disabled]+.lever{cursor:default}.gogo-load-css .switch label input[type=checkbox][disabled]+.lever:after,.gogo-load-css .switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.gogo-load-css .select-label{position:absolute}.gogo-load-css .select-wrapper{position:relative}.gogo-load-css .select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;outline:0;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;display:block}.gogo-load-css .select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.gogo-load-css .select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.gogo-load-css .select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}.gogo-load-css select{display:none}.gogo-load-css select.browser-default{display:block}.gogo-load-css select:disabled{color:rgba(0,0,0,.3)}.gogo-load-css .select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.gogo-load-css .file-field span,.gogo-load-css .leaflet-interactive,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{cursor:pointer}.gogo-load-css .select-wrapper i{color:rgba(0,0,0,.3)}.gogo-load-css .select-dropdown li.disabled{color:rgba(0,0,0,.3);background-color:transparent}.gogo-load-css .file-field{position:relative}.gogo-load-css .file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.gogo-load-css .file-field input.file-path{width:100%}.gogo-load-css .file-field .btn,.gogo-load-css .file-field .btn-large{float:left;height:3rem;line-height:3rem}.gogo-load-css .file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.gogo-load-css .range-field{position:relative}.gogo-load-css input[type=range]{position:relative;background-color:transparent;outline:0;width:100%;margin:15px 0;padding:0}.gogo-load-css input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#4A7874;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#4A7874;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}.gogo-load-css input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}.gogo-load-css input[type=range]:focus{outline:0}.gogo-load-css input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}.gogo-load-css input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#4A7874;transform-origin:50% 50%;margin:-5px 0 0;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;-ms-transition:.3s;transition:.3s}.gogo-load-css input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}.gogo-load-css input[type=range]{-webkit-appearance:none;border:1px solid #fff}.gogo-load-css input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}.gogo-load-css input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874;margin-top:-5px}.gogo-load-css input[type=range]:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.gogo-load-css input[type=range]:focus::-moz-range-track{background:#ccc}.gogo-load-css input[type=range]::-ms-track{height:3px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.gogo-load-css input[type=range]::-ms-fill-lower{background:#777}.gogo-load-css input[type=range]::-ms-fill-upper{background:#ddd}.gogo-load-css input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874}.gogo-load-css input[type=range]:focus::-ms-fill-lower{background:#888}.gogo-load-css input[type=range]:focus::-ms-fill-upper{background:#ccc}.gogo-load-css select{background-color:rgba(255,255,255,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.gogo-load-css .preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.gogo-load-css .preloader-wrapper.small{width:36px;height:36px}.gogo-load-css .preloader-wrapper.big{width:64px;height:64px}.gogo-load-css .preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.gogo-load-css .spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#4A7874}.gogo-load-css .spinner-blue,.gogo-load-css .spinner-blue-only{border-color:#4285f4}.gogo-load-css .spinner-red,.gogo-load-css .spinner-red-only{border-color:#db4437}.gogo-load-css .spinner-yellow,.gogo-load-css .spinner-yellow-only{border-color:#f4b400}.gogo-load-css .spinner-green,.gogo-load-css .spinner-green-only{border-color:#0f9d58}.gogo-load-css .active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer,.gogo-load-css .active .spinner-layer.spinner-blue-only,.gogo-load-css .active .spinner-layer.spinner-green-only,.gogo-load-css .active .spinner-layer.spinner-red-only,.gogo-load-css .active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@-webkit-keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@-webkit-keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@-webkit-keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}@keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}.gogo-load-css .gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .gap-patch .circle{width:1000%;left:-450%}.gogo-load-css .circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.gogo-load-css .circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.gogo-load-css .circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.gogo-load-css .active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{from,to{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}}@keyframes left-spin{from,to{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@-webkit-keyframes right-spin{from,to{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}}@keyframes right-spin{from,to{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}.gogo-load-css #spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane,.gogo-load-css .leaflet-pane>canvas,.gogo-load-css .leaflet-pane>svg,.gogo-load-css .leaflet-tile,.gogo-load-css .leaflet-tile-container,.gogo-load-css .leaflet-zoom-box{position:absolute;left:0;top:0}.gogo-load-css .leaflet-container{overflow:hidden;background:#ddd;outline:0;font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.gogo-load-css .leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.gogo-load-css .leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow{display:block}.gogo-load-css .leaflet-container .leaflet-marker-pane img,.gogo-load-css .leaflet-container .leaflet-overlay-pane svg,.gogo-load-css .leaflet-container .leaflet-shadow-pane img,.gogo-load-css .leaflet-container .leaflet-tile-pane img,.gogo-load-css .leaflet-container img.leaflet-image-layer{max-width:none!important}.gogo-load-css .leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.gogo-load-css .leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom}.gogo-load-css .leaflet-container.leaflet-touch-drag.leaflet-touch-drag{-ms-touch-action:none;touch-action:none}.gogo-load-css .leaflet-tile{filter:inherit;visibility:hidden}.gogo-load-css .leaflet-tile-loaded{visibility:inherit}.gogo-load-css .leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.gogo-load-css .leaflet-overlay-pane svg{-moz-user-select:none}.gogo-load-css .leaflet-pane{z-index:400}.gogo-load-css .leaflet-tile-pane{z-index:200}.gogo-load-css .leaflet-overlay-pane{z-index:400}.gogo-load-css .leaflet-shadow-pane{z-index:500}.gogo-load-css .leaflet-marker-pane{z-index:600}.gogo-load-css .leaflet-tooltip-pane{z-index:650}.gogo-load-css .leaflet-popup-pane{z-index:700}.gogo-load-css .leaflet-map-pane canvas{z-index:100}.gogo-load-css .leaflet-map-pane svg{z-index:200}.gogo-load-css .leaflet-vml-shape{width:1px;height:1px}.gogo-load-css .lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.gogo-load-css .leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.gogo-load-css .leaflet-bottom,.gogo-load-css .leaflet-top{position:absolute;z-index:1000;pointer-events:none}.gogo-load-css .leaflet-top{top:0}.gogo-load-css .leaflet-right{right:0}.gogo-load-css .leaflet-bottom{bottom:0}.gogo-load-css .leaflet-left{left:0}.gogo-load-css .leaflet-right .leaflet-control{float:right;margin-right:10px}.gogo-load-css .leaflet-top .leaflet-control{margin-top:10px}.gogo-load-css .leaflet-bottom .leaflet-control{margin-bottom:10px}.gogo-load-css .leaflet-left .leaflet-control{margin-left:10px}.gogo-load-css .leaflet-fade-anim .leaflet-tile{will-change:opacity}.gogo-load-css .leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.gogo-load-css .leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.gogo-load-css .leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.gogo-load-css .leaflet-pan-anim .leaflet-tile,.gogo-load-css .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.gogo-load-css .leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab}.gogo-load-css .leaflet-crosshair,.gogo-load-css .leaflet-crosshair .leaflet-interactive{cursor:crosshair}.gogo-load-css .leaflet-control,.gogo-load-css .leaflet-popup-pane{cursor:auto}.gogo-load-css .leaflet-dragging .leaflet-grab,.gogo-load-css .leaflet-dragging .leaflet-grab .leaflet-interactive,.gogo-load-css .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane>svg path,.gogo-load-css .leaflet-tile-container{pointer-events:none}.gogo-load-css .leaflet-image-layer.leaflet-interactive,.gogo-load-css .leaflet-marker-icon.leaflet-interactive,.gogo-load-css .leaflet-pane>svg path.leaflet-interactive{pointer-events:visiblePainted;pointer-events:auto}.gogo-load-css .leaflet-container a{color:#0078A8}.gogo-load-css .leaflet-container a.leaflet-active{outline:orange solid 2px}.gogo-load-css .leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.gogo-load-css .leaflet-bar a:hover{background-color:#f4f4f4}.gogo-load-css .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.gogo-load-css .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.gogo-load-css .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.gogo-load-css .leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.gogo-load-css .leaflet-control-zoom-in,.gogo-load-css .leaflet-control-zoom-out{font:700 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.gogo-load-css .leaflet-control-zoom-out{font-size:20px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-in{font-size:22px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-out{font-size:24px}.gogo-load-css .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.gogo-load-css .leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.gogo-load-css .leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.gogo-load-css .leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.gogo-load-css .leaflet-control-layers .leaflet-control-layers-list,.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.gogo-load-css .leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.gogo-load-css .leaflet-control-layers-scrollbar{overflow-y:scroll;padding-right:5px}.gogo-load-css .leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.gogo-load-css .leaflet-control-layers label{display:block}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .icon,.gogo-load-css .gogo-theme-default.gogocarto-container .show-directory-menu-button .arrow-right,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .checkbox-wrapper{display:none}.gogo-load-css .leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.gogo-load-css .leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.gogo-load-css .leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.gogo-load-css .leaflet-control-attribution,.gogo-load-css .leaflet-control-scale-line{padding:0 5px;color:#333}.gogo-load-css .leaflet-control-attribution a{text-decoration:none}.gogo-load-css .leaflet-control-attribution a:hover{text-decoration:underline}.gogo-load-css .leaflet-container .leaflet-control-attribution,.gogo-load-css .leaflet-container .leaflet-control-scale{font-size:11px}.gogo-load-css .leaflet-left .leaflet-control-scale{margin-left:5px}.gogo-load-css .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.gogo-load-css .leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.gogo-load-css .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-attribution,.gogo-load-css .leaflet-touch .leaflet-control-layers{box-shadow:none}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.gogo-load-css .leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.gogo-load-css .leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.gogo-load-css .leaflet-popup-content{margin:13px 19px;line-height:1.4}.gogo-load-css .leaflet-popup-content p{margin:18px 0}.gogo-load-css .leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.gogo-load-css .leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.gogo-load-css .leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.gogo-load-css .leaflet-container a.leaflet-popup-close-button:hover{color:#999}.gogo-load-css .leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.gogo-load-css .leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.gogo-load-css .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.gogo-load-css .leaflet-oldie .leaflet-control-layers,.gogo-load-css .leaflet-oldie .leaflet-control-zoom,.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.gogo-load-css .leaflet-div-icon{background:#fff;border:1px solid #666}.gogo-load-css .leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value,.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .option-value{color:inherit}.gogo-load-css .leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before,.gogo-load-css .leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.gogo-load-css .leaflet-tooltip-bottom{margin-top:6px}.gogo-load-css .leaflet-tooltip-top{margin-top:-6px}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-top:before{left:50%;margin-left:-6px}.gogo-load-css .leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.gogo-load-css .leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.gogo-load-css .leaflet-tooltip-left{margin-left:-6px}.gogo-load-css .leaflet-tooltip-right{margin-left:6px}.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before{top:50%;margin-top:-6px}.gogo-load-css .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.gogo-load-css .leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.gogo-load-css .leaflet-cluster-anim .leaflet-marker-icon,.gogo-load-css .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.gogo-load-css .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.gogo-load-css .gogo-theme-default.gogocarto-container .moreIconContainer .moreIconWrapper{background-color:#DADAD9}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .inline-option-value:not(:last-child):after{content:",";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .top-image-container{height:90px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{border-top:none;width:calc(100% - 23px)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{background-color:#175259}@media (min-width:850px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 23px);border-radius:0 8px 8px 0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #f79900 transparent transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container{height:4rem;padding-left:.5rem;padding-right:1.4rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon{font-size:1.1rem;color:#fff!important;height:2.5rem;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:2.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar{background-color:#3bad78;border-radius:0;height:2.5rem;padding:0 3rem;width:95%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options{padding-left:14px;padding-right:2rem;padding-bottom:1.2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options .search-action-btn{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories{border-left:none;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content ul{padding-right:10px;padding-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item{background-color:#fff;margin-bottom:3px;padding-left:0;line-height:2.5rem;height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled .icon{color:#bcbcbc!important;background-color:transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name{font-weight:500;font-size:13px;padding-left:.6rem;-webkit-transition:color .1s;-moz-transition:color .1s;-o-transition:color .1s;-ms-transition:color .1s;transition:color .1s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .arrow-after{position:absolute;right:19%;top:1.1rem;border-radius:1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name:hover .arrow-after{margin-right:-1px;margin-top:-1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name:hover .arrow-after{margin-bottom:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon{padding-top:.7rem;font-size:17px;height:3rem;width:2.5rem;margin-right:0;-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-link,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-recycle{padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#3bad78 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #3bad78;opacity:1;top:.9rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .name-wrapper{margin-left:3rem;margin-right:0;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper{left:0;right:initial}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:after{background-color:transparent;border:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:before{top:7px;width:9px;height:15px;border-right:3px solid #3bad78;border-bottom:3px solid #3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in:not(:checked)+label:before{border-right:3px solid #bcbcbc;border-bottom:3px solid #bcbcbc;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:0!important;margin-bottom:6px;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{margin-bottom:0;line-height:2.7rem;height:2.7rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .option-name{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:.85rem;padding-top:.95rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item.disabled .icon{color:#bcbcbc!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .name-wrapper{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item.checked .icon:not(.subIcon){color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .name-wrapper,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.checked .icon{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item .subIcon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item:not(.checked) .icon{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child [type=checkbox].filled-in:checked+label:before{top:7px;width:9px;height:15px;border-right:3px solid #f79900;border-bottom:3px solid #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item .icon{color:#175259;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:hover .subcategorie-option-checkbox+label:before{color:#f79900;border-color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#f79900 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{border-color:#f79900 transparent transparent!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #f79900;opacity:1;top:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name:hover .arrow-after{border-color:transparent transparent #f79900!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon{padding-top:3px;padding-left:10px;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .option-name{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .option-name{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .show-only-title{color:#3bad78;padding-left:0;margin-bottom:0;border-top:none;margin-top:0;padding-top:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper .iconInsideMarker{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-name{color:#f1f1f1;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .moreIconContainer .moreIconWrapper{font-size:14px;line-height:0;padding-left:1px;box-shadow:1px 1px 4px 1px #989898}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster div{font-size:15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div{background-color:#f8ab00;width:34px;height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div{background-color:#f78b16;width:38px;height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div{background-color:#f5701e;width:44px;height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header{background-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .name{font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .element-main-icon{display:none!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#f79900;color:#fff;border-radius:3px;padding:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item-text{display:inline-block!important;text-transform:uppercase;line-height:3rem;margin-left:10px;font-size:12px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .icon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .info-bar-divider{display:none}@media (max-width:460px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item{margin:0 .5rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-element-item-text{font-size:11px;margin-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-icon{font-size:16px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#f3f6f4;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .description{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section{background-color:#fff;margin-top:1rem;padding-left:1rem;margin-right:.4rem;line-height:1.5rem;padding-top:.7rem;padding-bottom:.6rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy{padding:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name{background-color:#f3f6f4;margin-left:0;padding-left:1.5rem;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name:first-child{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.sectionlongDescription{margin-top:0;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body h3{margin-left:1rem;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{margin-bottom:3px;border-left:10px solid;padding-left:1rem;background-color:#fff;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .option-name{color:#175259;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{margin-right:10px;font-size:.9rem;padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .row+.category-wrapper .row:last-child .option-value{padding-bottom:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{border:none;margin-left:0;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.9rem;margin-top:-8px;height:1.5rem;line-height:1.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name{color:inherit;margin-left:4px;line-height:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name:before{content:"➡";font-size:1.2rem;margin-right:6px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .day:after{content:"➡";font-size:1.2rem;color:#3bad78;float:right}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .openHours{padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container{background-color:#f3f6f4;margin-top:0;padding-top:1rem;padding-left:1.5rem;margin-bottom:-10px;text-align:center}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container .gogo-tag{background-color:#fff;border-radius:0;padding:4px 14px;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element{background-color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;font-weight:700;color:#e6e6e6}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values{width:calc(100% - 140px);font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:20px;display:inline-block}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon i,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .text,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button i{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:7px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{margin-right:5px;font-size:.9rem;padding-top:.6rem;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value{line-height:2rem;font-style:normal;font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item{margin-left:-17px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item:before{content:"+";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-features-buttons{top:140px}}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value:last-child{display:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{color:#fff;border-radius:50%;font-size:.9rem;padding:10px 9px;margin-right:5px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel{width:auto;float:right;border:2px solid;color:#3bad78;padding:8px 15px;text-align:center;border-radius:20px;margin-top:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-gogo-controls{width:100%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before{margin-right:8px;color:#fff;background-color:#3bad78;border-radius:50%;padding:0 4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before{content:"-";padding:0 6px 1px;font-weight:900;font-size:16px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item:not(.active) .expandLabel:before{content:"+"}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{padding:.5rem 0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#3bad78;color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.4rem;line-height:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .gogo-icon-close{font-size:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{background-color:#fff;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover{color:#3bad78}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item .expandLabel{margin-right:10px;font-size:13px;font-weight:900;padding:8px 10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{padding:8px 10px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .collapsible-header{padding-bottom:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out:hover{color:#3bad78;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers{margin-right:17px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control{text-transform:uppercase;font-weight:700;font-size:12px!important;line-height:22px;padding:5px 15px;background-color:#fff;color:#f79900;border:1px solid #d7d7d7;-webkit-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);-moz-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);box-shadow:1px 2px 4px 1px rgba(0,0,0,.12)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control .gogo-icon-list{color:inherit}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-top:60px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-as-list-button{position:absolute;right:20px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button{position:absolute;left:-20px;top:80px;background-color:#175259!important;padding:10px 10px 3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .arrow-right{margin-bottom:10px;margin-left:4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button:hover .arrow-right{border-color:transparent transparent transparent #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header{background-color:#f3f6f4;color:#3bad78;text-align:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button{height:2rem;line-height:2rem;border-radius:5px;top:15px;padding:0 15px;background-color:#f79900;left:initial!important;text-transform:uppercase;text-decoration:none;font-size:.8rem;font-weight:700;float:right;margin-top:12px;margin-right:-8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{color:#fff!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{font-size:1.2rem;margin-right:10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{top:0;left:-40px;border-radius:0 0 5px;padding-bottom:0;padding-top:6px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media (min-width:1500px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{left:0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item:not(.active){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body{border-bottom:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child{float:right;margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element{text-align:right;padding:0 10px 0 0;height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon{font-size:18px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text{font-size:11px;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location{font-weight:400;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content{padding-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container{margin-bottom:0;padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section-taxonomy .category-wrapper:last-child .option-value:last-child{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .collapsible.popout>li{margin-bottom:3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-list-spinner-loader .spinner-layer{border-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .feature-button{margin-right:0;float:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-search-icon{border-radius:8px 0 0 8px;margin-right:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon{background-color:#175259;border-radius:0 8px 8px 0;padding-top:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-list-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{color:#3bad78;border-radius:8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{background-color:#f79900!important;color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:13px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogocarto-container #directory-list-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #directory-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #info-bar-spinner-loader .spinner-layer{border-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:18px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn-large{font-weight:700;box-shadow:none;border-radius:none;font-size:.9rem}.gogo-load-css .gogocarto-container{display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;height:100%;position:relative;font-size:.95rem}.gogo-load-css .gogocarto-container #directory-spinner-loader,.gogo-load-css .gogocarto-container #info-bar-spinner-loader{position:absolute;margin:auto;top:0;left:0;bottom:0;right:0;z-index:1}.gogo-load-css .gogocarto-container #directory-list-spinner-loader{position:relative;margin-top:40px;z-index:500}.gogo-load-css .gogocarto-container #directory-loading{position:absolute;width:200px;margin:auto;top:0;left:0;right:0;z-index:500;background-color:#f2b523;color:#272626;padding:.2rem 0;text-align:center}.gogo-load-css .gogocarto-container #info-bar-overlay{background-color:rgba(0,0,0,.17);z-index:10;top:0;left:0;bottom:0;right:0;position:absolute}.gogo-load-css .gogocarto-container .leaflet-routing-container,.gogo-load-css .gogocarto-container .leaflet-routing-error{border-radius:0;box-shadow:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;background-color:#fff;transition:all .2s ease;box-sizing:border-box}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide{width:32px;height:32px}.gogo-load-css .gogocarto-container .leaflet-routing-container h2{font-size:1.2rem;text-align:center;margin:1.5rem .5rem 1rem;font-weight:600}.gogo-load-css .gogocarto-container .leaflet-routing-container h2 .distance{font-weight:400;color:#5d5d5d;margin-left:5px}.gogo-load-css .gogocarto-container .leaflet-routing-container h3{font-size:.9rem;font-weight:400;text-align:center;margin:.5rem;line-height:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #888}.gogo-load-css .gogocarto-container .leaflet-routing-collapsible .leaflet-routing-geocoders{margin-top:20px}.gogo-load-css .gogocarto-container .td-leaflet-routing-icon{padding-left:15px;padding-right:5px;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-text{font-size:.9rem;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-distance{font-size:.8rem;color:#777;font-weight:300;vertical-align:top}.gogo-load-css .gogocarto-container .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-routing-error,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders{height:100%;padding:0;font-size:.95rem;margin:0;border-bottom:1px solid #ccc;overflow-y:auto;transition:all .2s ease}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-geocoders{display:none}.gogo-load-css .gogocarto-container .leaflet-bar .leaflet-routing-alt:last-child{border-bottom:none}.gogo-load-css .gogocarto-container .leaflet-routing-alt-minimized{display:none;color:#888;max-height:64px;overflow:hidden;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-alt tr:hover{background-color:#eee;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-icon{background-image:url(images/leaflet.routing.icons.png);-webkit-background-size:240px 20px;background-size:240px 20px;background-repeat:no-repeat;margin:0;content:'';display:inline-block;vertical-align:top;width:20px;height:20px}.gogo-load-css .gogocarto-container .leaflet-routing-icon-continue{background-position:0 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-right{background-position:-20px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-right{background-position:-40px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-right{background-position:-60px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-u-turn{background-position:-80px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-left{background-position:-100px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-left{background-position:-120px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-left{background-position:-140px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-depart{background-position:-160px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-enter-roundabout{background-position:-180px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-arrive{background-position:-200px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-via{background-position:-220px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders div{padding:4px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input{width:303px;width:calc(100% - 4px);line-height:1.67;border:1px solid #ccc}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button{font:700 18px 'Lucida Console',Monaco,monospace;border:1px solid #ccc;border-radius:4px;background-color:#fff;margin:0 3px 0 0;float:right;cursor:pointer;transition:background-color .2s ease}.gogo-load-css .gogocarto-container .leaflet-routing-add-waypoint:after{content:'+'}.gogo-load-css .gogocarto-container .leaflet-routing-reverse-waypoints:after{font-weight:400;content:'\21c5'}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button:hover{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input,.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{position:relative}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif;position:absolute;max-height:0;overflow:hidden;transition:all .5s ease;z-index:1000}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result table{width:100%;border:1px solid #ccc;border-radius:0 0 4px 4px;background-color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result-open{max-height:800px}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result tr:hover,.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-selected{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-no-results{font-style:italic;color:#888}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{background-color:transparent;display:inline-block;vertical-align:middle;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:after{position:absolute;display:block;width:15px;height:1px;z-index:1;right:1px;top:4px;bottom:0;margin:-16px auto auto;padding:2px 4px 16px 2px;font-size:18px;font-weight:700;content:"\00d7";text-align:center;cursor:pointer;color:#ccc;background:#fff;line-height:1}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:hover{color:#000}.gogo-load-css .gogocarto-container .leaflet-routing-instruction-distance{width:4rem}.gogo-load-css .gogocarto-container .leaflet-routing-collapse-btn{display:none;position:absolute;top:0;right:6px;font-size:24px;color:#ccc;font-weight:700}.gogo-load-css .gogocarto-container #filter-moderation,.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox+label:before{color:#c53f36}.gogo-load-css .gogocarto-container .leaflet-routing-container-hide .leaflet-routing-collapse-btn{position:relative;left:4px;top:4px;display:block;width:26px;height:23px;background-image:url(routing-icon.png)}.gogo-load-css .gogocarto-container .leaflet-top .leaflet-routing-container.leaflet-routing-container-hide{margin-top:10px!important}.gogo-load-css .gogocarto-container .leaflet-right .leaflet-routing-container.leaflet-routing-container-hide{margin-right:10px!important}.gogo-load-css .gogocarto-container .leaflet-bottom .leaflet-routing-container.leaflet-routing-container-hide{margin-bottom:10px!important}.gogo-load-css .gogocarto-container .leaflet-left .leaflet-routing-container.leaflet-routing-container-hide{margin-left:10px!important}@media only screen and (max-width:640px){.gogo-load-css .gogocarto-container .leaflet-routing-container{margin:0!important;padding:0!important;width:100%;height:100%}}.gogo-load-css .gogocarto-container #filter-moderation:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#c53f36}.gogo-load-css .gogocarto-container #filter-pending,.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox+label:before{color:#565656}.gogo-load-css .gogocarto-container #filter-pending:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#565656}.gogo-load-css .gogocarto-container #filter-favorite{color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full{color:#fff;font-size:18px}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full:before{padding:2px 2px 3px;border:none;color:#cc8901;background-color:transparent}.gogo-load-css .gogocarto-container #filter-favorite:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox+label:before{color:#cc8901}.gogo-load-css .gogocarto-container .sub-categories-content.no-top-divider>ul>.main-option-subcategories-container>.category-wrapper>.subcategory-item{border-top:none!important;margin-top:0!important}.gogo-load-css .gogocarto-container .category-wrapper{margin-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item{position:relative;line-height:3rem;padding-top:0;padding-left:.8rem;font-weight:700;font-size:90%;text-transform:uppercase}.gogo-load-css .gogocarto-container .subcategory-item.top-separator{border-top:2px dashed #eee;margin-top:1rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper{margin-right:3rem;height:3rem;overflow:hidden}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper .arrow-after{display:inline-block;margin-left:1rem;margin-bottom:1px;border:5px solid;border-radius:4px}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item:not(.expanded) .name-wrapper .arrow-after{margin-bottom:-3px!important}.gogo-load-css .gogocarto-container .subcategory-item.unexpandable .name-wrapper:hover{cursor:default;color:inherit}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:2px;bottom:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container{position:absolute;top:2px;right:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:after{top:9px!important;width:17px;height:17px;border:2px solid;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:before{top:9px;left:1px;width:6px;height:11px}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox:not(:checked)+label:after{background-color:transparent}.gogo-load-css .gogocarto-container .subcategorie-option-item{position:relative;margin-bottom:0;line-height:2.8rem;padding:0 0 0 .8rem;height:2.8rem;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{margin-bottom:-5px}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name .arrow-after{margin-bottom:-4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper{margin-right:3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name{position:absolute;width:100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name:hover .arrow-after{border:6px solid;margin-bottom:1px}.gogo-load-css .gogocarto-container .subcategorie-option-item .arrow-after{display:inline-block;margin-left:1rem;border:5px solid;margin-bottom:1px;border-radius:4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon{font-size:1.3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:13px;height:13px;left:2px;top:3px;z-index:0;border:2px solid #5a5a5a;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;margin-top:2px}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{top:2px;left:1px;width:7px;height:13px;border-color:#3D3D3D;border-top:none;border-left:none;border-right:2px solid;border-bottom:2px solid;border-radius:0;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:0;bottom:0;background:-moz-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:-webkit-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4dffffff', endColorstr='#ffffff', GradientType=1 )}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper .checkbox-container{position:absolute;top:.6rem;right:0}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover{background-color:#f0f0f0;cursor:pointer}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover .checkbox-wrapper{background:0 0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1.3rem;border-left:1px dotted #c3c3c3;margin-bottom:15px;margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .category-wrapper{margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item{font-size:85%;line-height:2.5rem;margin-top:0;padding-top:0;padding-left:.9rem;margin-bottom:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:after{width:15px;height:15px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:before{width:5px;height:9px;top:9px;left:2px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .name-wrapper{height:2.5rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper{top:7px;right:-1px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper .checkbox-container{top:-4px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{font-size:95%;line-height:2.4rem;height:2.4rem;padding-left:1rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:1.2rem;padding-top:1px;margin-right:.8rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon.fa{font-size:1.1rem;padding-top:.7rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:10px;height:10px;left:3px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{width:6px;height:10px;left:2px}.gogo-load-css .gogocarto-container #directory-menu.small-width{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item .arrow-after{margin-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .icon{margin-right:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories{width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon{height:3.4rem;width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon:before{left:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories .sub-categories-content{padding-right:0}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories:not(.with-left-border) .sub-categories-content{padding-left:.2rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategory-item{padding-left:.6rem;font-size:.9rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item{padding-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategory-item{padding-left:.7rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategorie-option-item{padding-left:.6rem}.gogo-load-css .gogocarto-container #directory-menu .filter-menu{width:100%;height:auto;position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row nowrap;-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .filter-menu{height:100%}}.gogo-load-css .gogocarto-container #directory-menu .main-categories{width:3.5rem;padding-top:.6rem;height:100%}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon{padding-top:0}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:not(.active) .main-icon-text{transform:rotateZ(-45deg);opacity:.8}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:hover .main-icon-text{opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon .main-icon-text{text-transform:uppercase;-webkit-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;-ms-transition:transform .2s;transition:transform .2s;font-size:.85rem;font-weight:700;color:#fff;opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon{width:3.5rem;height:3.5rem;line-height:3.5rem;margin:0;padding-right:8px;text-align:center;position:relative}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon .main-option-tooltip{display:none}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:before{position:absolute;top:1rem;left:.8rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover .main-option-tooltip{display:block;position:absolute;left:4rem;top:.5rem;height:2.5rem;line-height:2.5rem;z-index:100;width:14rem;color:#efefef;font-size:1rem;border-radius:5px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.active{color:#fff;padding-right:8px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-gogo-icon-background{position:absolute;top:.6rem;border-radius:0 50% 50% 0}.gogo-load-css .gogocarto-container #directory-menu #main-option-all.show-one-pane-per-main-option .gogo-icon-name-wrapper:hover:after{content:"+";font-size:1.4rem;font-weight:400;background-color:#eee;padding:3px 11px;border-radius:3px;margin-left:5px;line-height:1rem;position:absolute;right:10px;z-index:10;top:11px}.gogo-load-css .gogocarto-container #directory-menu .secondary-filters{padding:.5rem 0 0;height:auto;border-top:2px dashed #eee;margin-top:1rem}.gogo-load-css .gogocarto-container #directory-menu .sub-categories{-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;padding-left:7px;padding-right:4px;background-color:#eee}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{height:3rem;line-height:3rem;font-weight:700;text-align:center}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{font-size:1.2rem}}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content{height:calc(100% - 3rem);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-right:5px;padding-top:0;background-color:#fff}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content.full-height{height:100%}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul{height:100%;margin:0;border:0;box-shadow:none;padding-bottom:2rem;overflow-y:auto;overflow-x:hidden}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions{background-color:#f7f7f7}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header{width:100%;border-radius:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header h3{font-size:1rem;text-align:left;text-transform:uppercase;padding-left:1rem;color:#fff;font-weight:600;line-height:3rem;margin:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content .filter-menu{display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content #directory-menu-spinner-loader{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directions-header{display:none;position:relative}.gogo-load-css .gogocarto-container #directory-menu{z-index:998;overflow-y:hidden;-webkit-transition:height .5s;-moz-transition:height .5s;-o-transition:height .5s;-ms-transition:height .5s;transition:height .5s;-webkit-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);-moz-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2)}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-menu{overflow:visible}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column;-webkit-flex-flow:column;flex-flow:column;width:100%;height:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .menu-top-image{width:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:100%;z-index:2;position:relative;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{overflow:scroll}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-container{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{position:absolute;right:0;top:0;width:24px;bottom:0;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #eee transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover .arrow-left{border-color:transparent #fff transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader{position:relative}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close{position:absolute;margin:0;right:0;top:7px;padding:0 1rem;z-index:50;color:#CECECE}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close:hover{color:#fff;cursor:pointer}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 12px);border-radius:0 0 5px 5px;padding-right:15px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.small-screen{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{bottom:-8px;border-top:none;width:calc(100% - 12px)}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;position:relative;height:100px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content #directory-menu-spinner-loader{top:40%;left:40%;position:absolute;display:none}.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{color:#fff;text-transform:uppercase;width:100%;border-radius:0;text-align:center;line-height:2.5rem;z-index:10;box-shadow:1px -2px 11px 2px rgba(0,0,0,.25)}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{display:none}.gogo-load-css .gogocarto-container .directory-menu-drag-target{display:none!important}}.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none!important}}.gogo-load-css .gogocarto-container .directory-menu-drag-target{height:100%;width:10px;position:fixed;top:0;z-index:999}.gogo-load-css .gogocarto-container .cluster{z-index:2}.gogo-load-css .gogocarto-container .icon{font-size:1.4rem;padding-top:3px;float:left;margin-right:1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .icon{padding-top:2px}}.gogo-load-css .gogocarto-container .icon.disabled{color:#DFDFDF}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa:before{position:relative;left:0;top:0}.gogo-load-css .gogocarto-container .icon.fa{padding-top:.5rem;font-size:1.3rem}.gogo-load-css .gogocarto-container .element-main-icon.icon.fa{padding-top:4px}.gogo-load-css .gogocarto-container .iconInsideMarker.fa{padding-top:0}.gogo-load-css .gogocarto-container .filter-menu .icon.fa{padding-top:.7rem;width:1.5rem;text-align:center;font-size:1.2rem}.gogo-load-css .gogocarto-container .leaflet-marker-container{width:0!important;height:0!important;margin:0!important}.gogo-load-css .gogocarto-container .leaflet-marker-container:hover{z-index:10000000!important}.gogo-load-css .gogocarto-container .marker-name{position:absolute;white-space:nowrap;opacity:.9;font-size:1rem;font-family:Roboto,sans-serif;border-radius:5px;padding:5px 10px;bottom:55px;left:-30px;color:#dadada}.gogo-load-css .gogocarto-container .marker-wrapper{position:absolute;z-index:1;height:40px;width:40px;bottom:0;right:-20px;font-size:40px;line-height:40px;opacity:.99}.gogo-load-css .gogocarto-container .marker-wrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper.BigSize{z-index:10000!important;-webkit-transform:scale(1.3,1.3);-moz-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);-o-transform:scale(1.3,1.3);transform:scale(1.3,1.3);bottom:5px!important}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:6px!important}}.gogo-load-css .gogocarto-container .marker-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .marker-wrapper .gogo-icon-marker{height:inherit;line-height:inherit;color:inherit;position:absolute;z-index:1;background-image:url(images/marker-shadow.png);background-position:8px;background-repeat:no-repeat;width:50px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container{position:absolute;top:-8px;z-index:3;font-size:14px;right:19px;color:#d9dad9}.gogo-load-css .gogocarto-container .iconInsideMarker.disabled,.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp{float:right}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2{font-size:12px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2:before{padding:2px 1px 2px 2px}.gogo-load-css .gogocarto-container .iconInsideMarker-wrapper{position:relative;left:7px;z-index:2;text-align:center;width:26px;height:26px;background-color:#DADADA;border-radius:50%;top:4px;font-size:18px;line-height:28px}.gogo-load-css .gogocarto-container :-moz-any(.iconInsideMarker-wrapper){top:3px}.gogo-load-css .gogocarto-container .iconInsideMarker{line-height:26px}.gogo-load-css .gogocarto-container .iconInsideMarker:before{line-height:inherit}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle{position:absolute;top:-7px;z-index:3;font-size:16px;right:-7px}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle:before{border-radius:50%;background-color:#F1F1F1}.gogo-load-css .gogocarto-container .gogo-icon-star-full:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .moreIconContainer{display:none;z-index:10;position:absolute;bottom:-10px;left:30px}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper{display:inline-block;margin-left:3px;bottom:10px;position:absolute;width:28px;height:28px;font-size:16px;line-height:26px;text-align:center;border:3px solid;border-radius:50%;z-index:10}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper .iconInsideMarker{line-height:22px}.gogo-load-css .gogocarto-container .halfHidden{opacity:.6}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper{right:-8px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper.BigSize{right:-4px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-marker{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .iconInsideMarker-wrapper{left:6px!important;width:25px;height:25px;top:9px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-name{bottom:47px;left:-50px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper{right:-35px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper.BigSize{right:-39px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-marker{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .iconInsideMarker-wrapper{left:11px!important;width:25px;height:25px;top:1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-name{bottom:47px;left:-10px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper{right:-13px;bottom:-1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper.BigSize{right:-10px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-marker{-webkit-transform:rotate(-25deg);-moz-transform:rotate(-25deg);-ms-transform:rotate(-25deg);-o-transform:rotate(-25deg);transform:rotate(-25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .iconInsideMarker-wrapper{right:6px!important;width:25px;height:25px;top:7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-name{bottom:51px;left:-44px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper{right:-30px;bottom:-2px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper.BigSize{right:-33px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-marker{-webkit-transform:rotate(25deg);-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-o-transform:rotate(25deg);transform:rotate(25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .iconInsideMarker-wrapper{left:9px!important;width:25px;height:25px;top:3px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-name{bottom:56px;left:-10px}.gogo-load-css .gogocarto-container .marker-cluster div{margin-left:5px;margin-top:5px;text-align:center;border-radius:50%;font-size:13px;font-weight:600;color:#fff;box-shadow:4px -2px 5px 0 rgba(167,167,167,.56)}.gogo-load-css .gogocarto-container .marker-cluster.halfHidden{opacity:.6!important}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div{width:34px;height:34px;background-color:rgba(243,165,48,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div{width:38px;height:38px;background-color:rgba(235,123,45,.92)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div{width:44px;height:44px;background-color:rgba(210,77,26,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogocarto-container #markerDirectionResult{text-align:center;position:relative;z-index:10000;width:auto;padding:.5rem;margin-top:-10px;font-size:.9rem}.gogo-load-css .gogocarto-container #markerDirectionResult .duration{font-weight:700}.gogo-load-css .gogocarto-container .arrow_box{position:relative;background:#eee;border:1px solid #a8b6a0}.gogo-load-css .gogocarto-container .arrow_box:after,.gogo-load-css .gogocarto-container .arrow_box:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.gogo-load-css .gogocarto-container .arrow_box:after{border-color:rgba(238,238,238,0);border-top-color:#eee;border-width:7px;margin-left:-7px}.gogo-load-css .gogocarto-container .arrow_box:before{border-color:rgba(168,182,160,0);border-top-color:#a8b6a0;border-width:8px;margin-left:-8px}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-in{font-size:18px!important;color:#3d3d3d}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-out{font-size:25px!important;font-weight:400;color:#3d3d3d;text-indent:0}.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-right:22px;margin-top:20px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{display:none}}.gogo-load-css .gogocarto-container #map-gogo-controls{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-gogo-controls{display:block;position:absolute;z-index:500;left:15px;top:12px}.gogo-load-css .gogocarto-container .show-as-list-button:after{content:"Afficher sous forme de liste"}}.gogo-load-css .gogocarto-container .show-directory-menu-button{left:15px;color:#fff}.gogo-load-css .gogocarto-container .show-directory-menu-button .arrow-right{display:inline-block;border:8px solid;border-color:transparent transparent transparent #eee}.gogo-load-css .gogocarto-container .show-directory-menu-button i{margin-right:5px!important}.gogo-load-css .gogocarto-container .show-as-list-button{background-color:#fff}.gogo-load-css .gogocarto-container .gogo-map-control{margin-right:15px;display:inline-block;line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;font-size:14px!important;padding:5px 10px;-webkit-box-shadow:2px 3px 1px rgba(0,0,0,.25);-moz-box-shadow:2px 3px 1px rgba(0,0,0,.25);box-shadow:2px 3px 1px rgba(0,0,0,.25);cursor:pointer;text-align:center;border:1px dashed #a5a5a5;border-radius:5px}.gogo-load-css .gogocarto-container .gogo-map-control:hover{cursor:pointer}.gogo-load-css .gogocarto-container .gogo-map-control i{font-size:1rem;float:left;line-height:1rem;padding-top:3px;margin-right:10px}.gogo-load-css .gogocarto-container #map-features-buttons{position:absolute;top:20px;z-index:500;right:20px;width:50px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-features-buttons{width:33px;top:100px}}.gogo-load-css .gogocarto-container .feature-button{position:relative;background-color:#fff;color:#3d3d3d;margin-bottom:13px;text-align:center;width:50px;border-radius:50%;height:50px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container .feature-button:hover{cursor:pointer;background-color:#f4f4f4}.gogo-load-css .gogocarto-container .feature-button i{font-size:22px;line-height:55px}.gogo-load-css .gogocarto-container .feature-button i.gogo-icon-list{font-size:18px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .feature-button{width:33px;height:33px;border-radius:4px}.gogo-load-css .gogocarto-container .feature-button i{font-size:18px;line-height:39px}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:.5rem}}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel{z-index:10000;background-color:transparent;color:#888}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel:hover{background-color:transparent;color:#616161}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel i{font-size:16px;line-height:44px;margin-left:2px}.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn i{font-size:14px}@media screen and (max-width:600px){.gogo-load-css .gogocarto-container .feature-button#change-layers,.gogo-load-css .gogocarto-container .feature-button#export-iframe-btn,.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn{display:none}}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container .feature-button#geolocalize-btn{display:none}}.gogo-load-css .gogocarto-container .leaflet-control-layers-toggle{display:none}.gogo-load-css .gogocarto-container .leaflet-control-layers{padding:0!important;display:none;position:relative;z-index:600;margin-right:19px!important;margin-top:15px!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-list{display:block!important;padding:5px 25px 10px 15px;position:relative!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-selector:checked+span{font-weight:700}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label{text-transform:uppercase;padding-top:4px;line-height:1.4rem;border-bottom:1px dashed #ccc}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:hover{background-color:#f4f4f4;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:last-child{border:none}.gogo-load-css .gogocarto-container #element-info-bar{height:0;z-index:600;position:absolute;will-change:height;-webkit-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);-moz-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);background-color:#F7F7F7}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom{right:0!important;bottom:0!important;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside{top:0;right:0;height:100%!important;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s;overflow-y:visible;-webkit-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);-moz-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);box-shadow:0 6px 9px 2px rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #element-info-bar.display-aside.with-search-result-header{top:3rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-main-icon,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .star-names-icons{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close{padding-left:1rem;color:#CECECE!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close:hover{color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails{display:block!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails.tabs{display:flex!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .hideOnLargeScreen{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .element-main-icon{display:none}.gogo-load-css .gogocarto-container #element-info-bar .element-item .star-names-icons,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .element-main-icon{display:block}.gogo-load-css .gogocarto-container #element-info-bar #element-info .moreDetails,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .star-names-icons{display:none}.gogo-load-css .gogocarto-container #element-info-bar #element-info{margin-bottom:3rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close{float:right;margin:-.9rem -1.5rem -1rem 0;font-size:1.2rem;padding:1rem 1.5rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-map{position:relative;z-index:10;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;-webkit-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);-moz-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:block;position:relative;width:100%;line-height:3.5rem;text-align:right;padding:0 1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:none!important}}@media (min-width:900px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:3rem;padding-right:calc(3rem + 20px)}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header #list-title-shadow-bottom{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{float:left;z-index:200;height:100%;text-decoration:underline}@media only screen and (min-width:1201px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:9rem!important}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{color:inherit!important;height:2rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:2rem}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:after{content:"Retour à la carte"}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:block;float:left;position:relative;margin-right:2rem;margin-left:-1rem;width:auto;top:.6rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:10rem;padding-right:calc(10rem + 20px)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{position:absolute;top:12px;left:15px;margin-left:0;bottom:initial;width:auto}}.gogo-load-css .gogocarto-container .no-result-message img{margin-top:1rem;width:350px;padding:0 2rem;border-radius:100px}.gogo-load-css .gogocarto-container #directory-content-list{display:none;z-index:650;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;width:100%;overflow:auto;border-left:none;height:100%}.gogo-load-css .gogocarto-container #directory-content-list .elements-container{position:relative;padding-bottom:100px;height:100%;width:100%;overflow-y:scroll;margin:0;padding-left:0;padding-right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{height:calc(100% - 3.5rem)}}@media only screen and (min-width:901px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:3rem;padding-right:3rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:10rem;padding-right:10rem}}.gogo-load-css .gogocarto-container #directory-content-list .elements-container.custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-geocoders::-webkit-scrollbar{width:14px}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .bottom-gradient{position:fixed;height:5rem;bottom:0;width:100%;z-index:700;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff', GradientType=0 )}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .no-result-message{text-align:center;margin-top:3rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item .gogo-icon-close{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item .distance{margin-right:0;margin-left:6px}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location{display:inline-block;float:right;margin-left:1rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .expandLabel{background-color:transparent!important}.gogo-load-css .gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #abaaaa;background-color:#fff}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout,.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li{margin:0}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li.active{margin:1rem 0}.gogo-load-css .gogocarto-container #directory-content-list .spinner-loader{-webkit-box-ordinal-group:1000000;-moz-box-ordinal-group:1000000;-ms-flex-order:1000000;-webkit-order:1000000;order:1000000}.gogo-load-css .gogocarto-container #directory-content-list .info-bar-tabs,.gogo-load-css .gogocarto-container #directory-content-list .menu-element{position:relative;display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .menu-element{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .info-bar-tabs{display:flex}.gogo-load-css .gogocarto-container #directory-content-list .img-overlay{max-height:20rem;overflow:hidden}.gogo-load-css .gogocarto-container #directory-content-list .img-container{max-height:20rem;background-color:#F7F7F7}.gogo-load-css .gogocarto-container #gogo-controls-mobile{position:absolute;z-index:900;left:15px;top:15px;right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none!important}}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button{display:inline-block;margin-right:15px}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.gogo-bg-primary{color:#fff}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-list-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-map-button{float:right;display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none}}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .show-as-map-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile.map .show-as-list-button{display:block}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .feature-button{-webkit-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);-moz-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);box-shadow:1px 2px 8px 1px rgba(0,0,0,.4)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile{display:none;z-index:10;position:relative;background-color:#fff;margin:15px;border-radius:3px;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-container{height:52px;padding:0}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar{height:100%;padding:0 4rem}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon{font-size:22px;line-height:57px;height:56px;width:56px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-bar-icon{left:-2px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-geolocalize{right:0;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-icon{left:3px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-geolocalize{right:5px;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-options{display:block!important;padding:0 15px 12px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile #search-spinner-loader .spinner-layer{border-color:#fff!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-no-result{color:inherit;font-size:13px;padding-bottom:1rem}.gogo-load-css .gogocarto-container #search-overlay-mobile{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000}.gogo-load-css .gogocarto-container #search-overlay-mobile .overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;background-color:rgba(0,0,0,.5)}.gogo-load-css .gogocarto-container .search-results{background-color:rgba(0,0,0,.4);position:relative;line-height:3rem;top:0;z-index:800;width:100%;padding:0 0 0 10px;-webkit-transition:background-color .5s;-moz-transition:background-color .5s;-o-transition:background-color .5s;-ms-transition:background-color .5s;transition:background-color .5s}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results{position:relative;padding-left:28px}}.gogo-load-css .gogocarto-container .search-results .btn-close{position:absolute;margin:0;right:0;top:3px;padding:0 1rem;z-index:50;color:#fff}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results .btn-close{right:12px}}.gogo-load-css .gogocarto-container .search-results .btn-close:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .search-results .search-result-label{color:#fff;font-weight:700}.gogo-load-css .gogocarto-container .search-results .search-result-value{font-style:italic}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container{height:3.5rem;padding:.7rem .7rem 0;text-align:center;margin:0}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon{position:absolute;font-size:1.2rem;color:#777;height:2rem;line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:hover{cursor:pointer}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:1.2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:1.4rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{font-size:16px;padding:0 2.3rem 0 2.2rem;box-shadow:none!important;margin:0;text-align:left;font-weight:700;height:2rem;width:100%;border:none!important;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (min-width:850px){.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{text-transform:uppercase;font-size:.8rem}}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar.invalid{border-color:#B90303!important}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options{padding:0 .7rem .7rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label{color:#ececec;font-size:.9rem;line-height:2.2rem;padding-left:27px;margin-right:13px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:before{border:2px solid #e0e0e0;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:after{border:2px solid #dedede;background-color:#dedede;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options .search-action-btn{float:right;font-size:.85rem;height:1.8rem;line-height:1.8rem;padding:0 10px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader{height:12px;width:12px;top:1px;margin-left:5px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .spinner-layer{border-color:#5d5d5d}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-no-result{color:#fff;padding-bottom:.7rem;text-decoration:underline;text-align:center;font-weight:700}.gogo-load-css .gogocarto-container #directory-menu-main-container .search-action-btn{background-color:#ddd;color:#272626}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options{padding-left:7px}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options label.search-option-radio-label{margin-right:0}.gogo-load-css .gogocarto-container .element-item{list-style-type:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container .element-item #element-info-bar.display-aside .menu-element{height:auto}.gogo-load-css .gogocarto-container .element-item .menu-element{z-index:10;position:absolute;bottom:0;text-align:center;width:100%}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item-text{display:none}.gogo-load-css .gogocarto-container .element-item .menu-element:not(.full-text){height:3rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding:.3rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 10px -.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding-top:0}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 6px -.9rem}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 .8rem -.5rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{display:inline;text-transform:uppercase;font-size:.75rem;line-height:3rem;margin-left:.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:10px}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:.8rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text.favorite{color:#ffab00}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;color:#CECECE;margin:0 1rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item a{color:inherit}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:20px;float:left}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:18px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.8rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .gogo-icon-star-full:before{padding:2px 2px 3px;border:none}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item.item-stamp.filled{color:#ffab00;font-weight:700}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 .8rem;position:relative;line-height:3rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:22px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:20px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:3rem}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 1.6rem}}.gogo-load-css .gogocarto-container .element-item .interactive-section>div{position:relative}.gogo-load-css .gogocarto-container .element-item .interactive-section .result-message{text-align:center;font-weight:700;color:#fff;line-height:1.7rem;padding:.6rem 0}.gogo-load-css .gogocarto-container .element-item #directory-content-list .interactive-section{display:none}.gogo-load-css .gogocarto-container .element-item #directory-content-list .element-item.active .interactive-section{display:block}.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-moderation,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-moderation{color:#fff;font-size:20px;padding-top:3px;position:absolute}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention{display:none}.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{margin-left:0!important}}@media (max-width:460px){.gogo-load-css .gogocarto-container .element-item .moderation-section .long-text,.gogo-load-css .gogocarto-container .element-item .vote-section .long-text{display:none}}@media (max-width:360px){.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{opacity:0}}.gogo-load-css .gogocarto-container .element-item .moderation-section .text,.gogo-load-css .gogocarto-container .element-item .vote-section .text{margin-left:2.2rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .btn-vote-more-info,.gogo-load-css .gogocarto-container .element-item .vote-section .btn-vote-more-info{line-height:1.2rem;position:absolute;top:14px;right:90px;padding:0;font-size:.85rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .action-btn,.gogo-load-css .gogocarto-container .element-item .vote-section .action-btn{position:absolute;right:0;top:8px;margin:0;background-color:#dedede;color:#272626;font-size:.85rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment{color:#fff;border-color:#ccc!important;height:2.2rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-webkit-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-webkit-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-ms-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-ms-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .validation-process-info:hover{cursor:help;border-bottom:1px dashed;border-color:inherit;text-decoration:none}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description:hover,.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs .tab a{cursor:pointer}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .strong,.gogo-load-css .gogocarto-container .element-item .collapsible-header a{text-decoration:underline}.gogo-load-css .gogocarto-container .element-item #element-info-bar.small-width .btn-vote-more-info{display:none}.gogo-load-css .gogocarto-container .element-item .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.gogo-load-css .gogocarto-container .element-item .label-danger{background-color:#d9534f}.gogo-load-css .gogocarto-container .element-item .label-success{background-color:#00a65a}.gogo-load-css .gogocarto-container .element-item .label-default{background-color:#d2d6de;color:#444}.gogo-load-css .gogocarto-container .element-item .element-item .contributions{border:none;box-shadow:none}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header{color:inherit;background-color:transparent;border:none;box-shadow:none;line-height:2rem;padding:15px 0;border-bottom:1px solid grey}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-status{float:left}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-updated-at{float:right}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-body{color:inherit}.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs{z-index:40}.gogo-load-css .gogocarto-container .element-item .item-container{border-bottom:1px dashed grey;padding-bottom:5px;margin-bottom:5px}.gogo-load-css .gogocarto-container .element-item .vote-report-item{line-height:1.5rem!important;padding:10px}.gogo-load-css .gogocarto-container .element-item .pending-contribution{margin-bottom:-.9rem;line-height:1.5rem!important;margin-top:.8rem;padding:10px}.gogo-load-css .gogocarto-container .element-item .vote-report-comment{font-style:italic}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content{display:none;padding-right:10px;font-size:.9em}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content .vote-report-item{padding:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-header{padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-header i{margin-right:0;padding-left:.3rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{position:relative;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;line-height:2rem;padding:.5rem 0;font-weight:700}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{padding:1rem 1rem .5rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .distance{float:right;margin-left:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .location{display:none}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.5rem;padding:0;margin-bottom:.5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{padding:0 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values{font-weight:700;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values .option-value.disabled{color:#9C9C9C;font-weight:400}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description{margin-bottom:.7rem;text-align:justify}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description p{margin:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body{background-color:transpraent;padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#F7F7F7;padding:0 0 1rem .5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{padding:0 0 1rem 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-body h2{font-weight:700!important;font-size:1rem!important;line-height:110%!important;margin:.5rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row{margin-bottom:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .description{text-align:justify;line-height:1.5;padding-right:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description{display:inline;text-decoration:underline}.gogo-load-css .gogocarto-container .element-item .collapsible-body .send-mail-btn{font-size:.8rem;margin:.4rem 0 .5rem;line-height:1.8rem;height:1.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionInfos,.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionOpenHours{line-height:2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionlongDescription{padding-bottom:0;padding-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .tags-container{margin-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .gogo-tag{margin-right:8px;border-radius:5px;background-color:#dcdcdc;padding:4px 10px;display:inline-block;margin-bottom:8px}.gogo-load-css .gogocarto-container .element-item .img-container{position:absolute;width:100%;top:0;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-container .images-carousel{cursor:pointer!important;margin:0}.gogo-load-css .gogocarto-container .element-item .img-container .gogo-img{width:100%;height:auto}.gogo-load-css .gogocarto-container .element-item .img-overlay{position:relative;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn{display:none;cursor:pointer!important;height:100%;position:absolute;color:#fff;padding-top:17%!important;width:5rem;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;-ms-transition:opacity .5s;transition:opacity .5s;opacity:.7}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn:hover{opacity:1}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev{background-image:linear-gradient(to right,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 30px 0 .5rem;left:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev .icon{left:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next{background-image:linear-gradient(to left,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 .5rem 0 30px;right:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next .icon{right:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn .icon{font-size:3rem;position:absolute;top:calc(50% - 1.5rem);margin:0;text-shadow:0 1px 4px #757575}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-clickable-area{height:100%;position:absolute;left:6rem;right:6rem;cursor:pointer!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section.categories h3{margin-bottom:90%}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-name{padding-top:.6rem;padding-bottom:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper+.category-name{padding-top:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row+.category-wrapper .category-name{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper{margin-top:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper:not(:first-child){margin-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{margin-left:1.2rem;padding-left:.5rem;border-left:1px dotted #c3c3c3}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper h3.category-name{font-size:85%;padding-bottom:.4rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .strong{text-decoration:none!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-name.main-option{font-weight:700}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option{font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option span.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description{padding:.5rem;font-style:italic;font-size:.9rem;color:#5d5d5d}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{line-height:2.5rem;padding-right:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline{display:inline-block;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.last):after{content:","}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.first) .icon{margin-left:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline .icon{margin-right:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon{font-size:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{font-size:1.1rem;padding-top:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.gogo-icon-marker{font-size:1.1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.disabled{color:#BFBFBF!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.disabled{color:#9C9C9C!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.6rem}.gogo-load-css .gogocarto-container .element-item h3{font-size:.85rem;text-transform:uppercase;font-weight:600;padding-left:.75rem;margin-bottom:0;padding-top:1.5rem;margin-top:0}.gogo-load-css .gogocarto-container .element-item .info-bar-divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css .gogocarto-container .element-item .btn,.gogo-load-css .gogocarto-container .element-item .btn-large{height:2rem;line-height:2rem;padding:0 1rem;margin-bottom:1rem}.gogo-load-css .gogocarto-container .element-item span.added{color:#3a772c}.gogo-load-css .gogocarto-container .element-item span.removed{text-decoration:line-through;margin-right:5px;color:#b57e7e}.gogo-load-css .gogocarto-container .element-item a>span.equals{color:rgba(0,0,0,.87)!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .expandLabel{font-weight:700}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel:after{content:"Moins d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{position:absolute;color:#fff;z-index:2;right:0;width:auto;margin-right:1.7rem;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s;padding:8px 25px;bottom:-15px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{padding:.3rem 1.2rem;bottom:-1rem}}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big:hover{color:#fff;box-shadow:0 6px 15px 0 rgba(0,0,0,.2),0 5px 17px 0 rgba(0,0,0,.19)}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:after{content:"Plus d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel,.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:not(.transform-big){background-color:transparent!important}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header{position:relative;z-index:2}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header span.added{color:#3ab33a}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .collapsible-body-main-container{height:100%;width:100%;position:absolute;top:0;overflow-y:auto}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-container,.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-overlay{height:33%;background-color:transparent}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header{background-color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a{color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a:hover{color:#000}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{border:none;color:#fff;cursor:default;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a{color:#fff}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a:hover{color:#e6e6e6}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{position:relative;line-height:2.5rem;font-weight:400}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .distance{font-size:1.3rem;color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:1.5rem;margin-top:-.8rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-more{margin-bottom:1rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.8rem;text-align:left}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{width:100%!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description{margin-bottom:0}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-body{height:100%;overflow-y:auto}.gogo-load-css .gogocarto-container #modal-directions-fail.modal,.gogo-load-css .gogocarto-container #modal-pick-address.modal{position:absolute}.gogo-load-css .gogocarto-container #modal-directions-fail.modal .modal-footer,.gogo-load-css .gogocarto-container #modal-pick-address.modal .modal-footer{background-color:#444}.gogo-load-css .gogocarto-container .simple-modal.modal{z-index:2000;max-width:1200px;top:30%!important;max-height:80%;height:auto;position:absolute!important}.gogo-load-css .gogocarto-container .simple-modal.modal h5{margin-bottom:.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content{padding-bottom:.8rem!important}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content .modal-error-msg{display:none;color:#B90303}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer{padding-right:2.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action{color:#fff;font-size:.9rem;padding:0 25px}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large{background-color:#de5a5f}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large:hover,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn:hover{background-color:#ec787d}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal:focus{border-color:#4A7874;box-shadow:none}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::-moz-selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .page-modal .btn-back{float:left;font-size:2rem;line-height:4rem;padding:0 2rem;margin-left:-2rem}.gogo-load-css .gogocarto-container .modal.action-modal h5{text-align:center;margin-bottom:1.5rem;line-height:2.5rem}.gogo-load-css .gogocarto-container .modal.action-modal label.small-label{display:block;font-size:.85rem;font-weight:700;margin-top:1rem;margin-bottom:-1.8rem}.gogo-load-css .gogocarto-container .modal.action-modal .elementName{font-style:italic;font-size:1.5rem}.gogo-load-css .gogocarto-container .modal.action-modal .error{display:none;color:#B90303}.gogo-load-css .gogocarto-container .modal.action-modal .option-radio-label{margin-top:.5rem;display:block!important;height:auto!important}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn{display:none}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper{height:15px;width:15px;top:1px}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .spinner-layer{border-color:#fff}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .modal.action-modal .loader-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.35}.gogo-load-css .gogocarto-container #modal-iframe .subtitle{text-align:center;font-style:italic;margin-bottom:1.5rem}.gogo-load-css .gogocarto-container #modal-iframe label{font-size:.8rem;width:100%}.gogo-load-css .gogocarto-container #modal-iframe label:not(:last-child){margin-bottom:15px}.gogo-load-css .gogocarto-container #modal-iframe label strong{font-weight:700}.gogo-load-css .gogocarto-container #modal-iframe .iframe-input{width:80px;border:1px solid #969696;border-radius:5px;height:2rem;font-size:.9rem;font-family:"Lucida Console",Monaco,monospace;margin:1rem;text-align:center;background-color:#f5f5f5}.gogo-load-css .gogocarto-container #modal-iframe #iframe-code{width:100%;padding:1rem;background-color:#f1f1f1;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:none;font-family:"Lucida Console",Monaco,monospace;border:1px dashed #c1c1c1;margin-bottom:1rem}.gogo-load-css .gogocarto-container #modal-image{width:90%}.gogo-load-css .gogocarto-container #modal-image .modal-content{padding:0;overflow:auto}.gogo-load-css .gogocarto-container #modal-image img{width:100%}.gogo-load-css .gogocarto-container .shadow-bottom{width:100%;margin-right:0;height:8px;position:absolute;z-index:4;left:0;opacity:1;border-top:1px solid rgba(0,0,0,.6);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.4)),to(rgba(0,0,0,0)));-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,0)))}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:12px}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:3px solid #f6f6f6;background-color:#C5C5C5}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:7px}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:#c3c3c3}.gogo-load-css .gogocarto-container #gogo-custom-popup{position:absolute;bottom:20px;z-index:500;right:10px;box-shadow:0 2px 6px rgba(0,0,0,.3);padding:5px 45px 5px 30px;line-height:1.7;max-width:400px;color:#fff;font-size:.9rem;border-radius:5px}[class*=" gogo-icon-"]:before,[class^=gogo-icon-]:before,[data-icon]:before{font-family:gogocarto!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gogo-load-css .gogocarto-container #gogo-custom-popup #btn-close-custom-popup{font-size:1rem;cursor:pointer;position:absolute;right:18px;margin:0;top:14px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container{font-size:12px}}.gogo-load-css .gogocarto-container #directory-menu{position:absolute;height:100%}.gogo-load-css .gogocarto-container #directory-content{position:relative;background-color:#9e9e9e;overflow:hidden;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container h1{font-size:2.5rem;text-align:center;margin-top:.5rem}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container h1{font-size:3.5rem}}@font-face{font-family:gogocarto;src:url(fonts/gogocarto.eot);src:url(fonts/gogocarto.eot?#iefix) format("embedded-opentype"),url(fonts/gogocarto.woff) format("woff"),url(fonts/gogocarto.ttf) format("truetype"),url(fonts/gogocarto.svg#gogocarto) format("svg");font-weight:400;font-style:normal}[data-icon]:before{content:attr(data-icon)}.gogo-icon-marker:before{content:"\61"}.gogo-icon-account-circle:before{content:"\62"}.gogo-icon-delete:before{content:"\63"}.gogo-icon-description:before{content:"\64"}.gogo-icon-star-full:before{content:"\65"}.gogo-icon-icon-copy-hours:before{content:"\66"}.gogo-icon-starcircle:before{content:"\67"}.gogo-icon-no-eye:before{content:"\68"}.gogo-icon-eye:before{content:"\69"}.gogo-icon-attention:before{content:"\6a"}.gogo-icon-mail:before{content:"\6b"}.gogo-icon-marker-symbol:before{content:"\6c"}.gogo-icon-phone:before{content:"\6d"}.gogo-icon-add-circle:before{content:"\6e"}.gogo-icon-plus-circle-1:before{content:"\6f"}.gogo-icon-clear:before{content:"\70"}.gogo-icon-redo:before{content:"\71"}.gogo-icon-day:before{content:"\72"}.gogo-icon-exclamation-1:before{content:"\73"}.gogo-icon-edit:before{content:"\74"}.gogo-icon-menu:before{content:"\75"}.gogo-icon-directions:before{content:"\77"}.gogo-icon-layers:before{content:"\78"}.gogo-icon-locate:before{content:"\7a"}.gogo-icon-material-design-icons-1:before{content:"\41"}.gogo-icon-people:before{content:"\42"}.gogo-icon-add-element:before{content:"\43"}.gogo-icon-internet:before{content:"\44"}.gogo-icon-star-empty:before{content:"\45"}.gogo-icon-share-alt:before{content:"\46"}.gogo-icon-expand:before{content:"\47"}.gogo-icon-angle-right:before{content:"\48"}.gogo-icon-arrow-circle-down:before{content:"\49"}.gogo-icon-facebook:before{content:"\4a"}.gogo-icon-external-link:before{content:"\4b"}.gogo-icon-gplus:before{content:"\4c"}.gogo-icon-home:before{content:"\4d"}.gogo-icon-info:before{content:"\4e"}.gogo-icon-list:before{content:"\4f"}.gogo-icon-lock:before{content:"\50"}.gogo-icon-plus-circle:before{content:"\51"}.gogo-icon-search:before{content:"\52"}.gogo-icon-close:before{content:"\53"}.gogo-icon-user-plus:before{content:"\54"}.gogo-icon-users:before{content:"\55"}.gogo-icon-unlock:before{content:"\56"}.gogo-icon-yahoo:before{content:"\57"}.gogo-icon-twitter:before{content:"\58"}.gogo-icon-partner-3:before{content:"\59"}.gogo-icon-map:before{content:"\5a"}.gogo-icon-ellipsis:before{content:"\30"}.gogo-icon-moderation:before{content:"\79"}.gogo-icon-filters-1:before{content:"\37"}.gogo-icon-vote:before{content:"\76"}.gogo-icon-marker-simple-1:before{content:"\31"}.gogo-icon-marker-simple:before{content:"\32"}.gogo-icon-stamp-1:before{content:"\36"}.gogo-icon-stamp-2:before{content:"\38"}.gogo-icon-communs:before{content:"\34"}.gogo-icon-printemps:before{content:"\33"}.gogo-icon-chevron-left:before{content:"\35"}.gogo-icon-chevron-right:before{content:"\39"} \ No newline at end of file + */height:100%;width:100%}.gogo-load-css ul{list-style-type:none;padding:0}.gogo-load-css a{color:#26A69A;-webkit-tap-highlight-color:transparent;text-decoration:none}.gogo-load-css .valign-wrapper{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center}.gogo-load-css .valign-wrapper .valign{display:block}.gogo-load-css ul li{list-style-type:none}.gogo-load-css .clearfix{clear:both}.gogo-load-css .z-depth-0{box-shadow:none!important}.gogo-load-css .btn,.gogo-load-css .btn-floating,.gogo-load-css .btn-large,.gogo-load-css .collapsible,.gogo-load-css .dropdown-content,.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big,.gogo-load-css .toast,.gogo-load-css .z-depth-1{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12)}.gogo-load-css .btn-floating:hover,.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover,.gogo-load-css .z-depth-1-half{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15)}.gogo-load-css .gogocarto-container #markerDirectionResult,.gogo-load-css .z-depth-2{box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .z-depth-3{box-shadow:0 12px 15px 0 rgba(0,0,0,.24),0 17px 50px 0 rgba(0,0,0,.19)}.gogo-load-css .modal,.gogo-load-css .z-depth-4{box-shadow:0 16px 28px 0 rgba(0,0,0,.22),0 25px 55px 0 rgba(0,0,0,.21)}.gogo-load-css .z-depth-5{box-shadow:0 27px 24px 0 rgba(0,0,0,.2),0 40px 77px 0 rgba(0,0,0,.22)}.gogo-load-css .hoverable:hover{transition:box-shadow .25s;box-shadow:0 8px 17px 0 rgba(0,0,0,.2),0 6px 20px 0 rgba(0,0,0,.19)}.gogo-load-css .divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css blockquote{margin:20px 0;padding-left:1.5rem;border-left:5px solid #de5a5f}.gogo-load-css i{line-height:inherit}.gogo-load-css i.left{float:left;margin-right:15px}.gogo-load-css i.right{float:right;margin-left:15px}.gogo-load-css i.tiny{font-size:1rem}.gogo-load-css i.small{font-size:2rem}.gogo-load-css i.medium{font-size:4rem}.gogo-load-css i.large{font-size:6rem}.gogo-load-css img.responsive-img,.gogo-load-css video.responsive-video{max-width:100%;height:auto}.gogo-load-css .pagination li{display:inline-block;font-size:1.2rem;padding:0 10px;line-height:30px;border-radius:2px;text-align:center}.gogo-load-css .pagination li a{color:#444}.gogo-load-css .pagination li.active a{color:#fff}.gogo-load-css .pagination li.active{background-color:#de5a5f}.gogo-load-css .pagination li.disabled a{cursor:default;color:#999}.gogo-load-css .pagination li i{font-size:2rem}.gogo-load-css .pagination li.pages ul li{display:inline-block;float:none}.gogo-load-css .parallax-container{position:relative;overflow:hidden;height:500px}.gogo-load-css .parallax{position:absolute;top:0;left:0;right:0;bottom:0;z-index:-1}.gogo-load-css .parallax img{display:none;position:absolute;left:50%;bottom:0;min-width:100%;min-height:100%;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);transform:translateX(-50%)}.gogo-load-css .pin-bottom,.gogo-load-css .pin-top{position:relative}.gogo-load-css .pinned{position:fixed!important}.gogo-load-css ul.staggered-list li{opacity:0}.gogo-load-css .fade-in{opacity:0;transform-origin:0 50%}@media only screen and (max-width:600px){.gogo-load-css .hide-on-small-and-down,.gogo-load-css .hide-on-small-only{display:none!important}}@media only screen and (max-width:1200px){.gogo-load-css .pagination{width:100%}.gogo-load-css .pagination li.next,.gogo-load-css .pagination li.prev{width:10%}.gogo-load-css .pagination li.pages{width:80%;overflow:hidden;white-space:nowrap}.gogo-load-css .hide-on-med-and-down{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .hide-on-med-and-up{display:none!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .hide-on-med-only{display:none!important}}@media only screen and (min-width:1201px){.gogo-load-css .hide-on-large-only{display:none!important}.gogo-load-css .show-on-large{display:initial!important}}@media only screen and (min-width:600px) and (max-width:900px){.gogo-load-css .show-on-medium{display:initial!important}}@media only screen and (min-width:601px){.gogo-load-css .show-on-medium-and-up{display:initial!important}}@media only screen and (max-width:1200px){.gogo-load-css .show-on-medium-and-down{display:initial!important}}@media only screen and (max-width:600px){.gogo-load-css .show-on-small{display:initial!important}.gogo-load-css .center-on-small-only{text-align:center}}.gogo-load-css footer.page-footer{margin-top:20px;padding-top:20px;background-color:#de5a5f}.gogo-load-css footer.page-footer .footer-copyright{overflow:hidden;height:50px;line-height:50px;color:rgba(255,255,255,.8);background-color:rgba(51,51,51,.08)}.gogo-load-css table.highlight>tbody>tr:hover,.gogo-load-css table.striped>tbody>tr:nth-child(odd){background-color:#f2f2f2}.gogo-load-css table,.gogo-load-css td,.gogo-load-css th{border:none}.gogo-load-css table.bordered>tbody>tr,.gogo-load-css table.bordered>thead>tr,.gogo-load-css thead{border-bottom:1px solid #d0d0d0}.gogo-load-css table{width:100%;display:table}.gogo-load-css table.striped>tbody>tr>td{border-radius:0}.gogo-load-css table.highlight>tbody>tr{-webkit-transition:background-color .25s ease;-moz-transition:background-color .25s ease;-o-transition:background-color .25s ease;-ms-transition:background-color .25s ease;transition:background-color .25s ease}.gogo-load-css td,.gogo-load-css th{padding:15px 5px;display:table-cell;text-align:left;vertical-align:middle;border-radius:2px}@media only screen and (max-width:1200px){.gogo-load-css table.responsive-table{width:100%;border-collapse:collapse;border-spacing:0;display:block;position:relative}.gogo-load-css table.responsive-table td,.gogo-load-css table.responsive-table th{margin:0;vertical-align:top}.gogo-load-css table.responsive-table thead{display:block;float:left;border:0;border-right:1px solid #d0d0d0}.gogo-load-css table.responsive-table thead tr{display:block;padding:0 10px 0 0}.gogo-load-css table.responsive-table thead tr th::before{content:"\00a0"}.gogo-load-css table.responsive-table tbody{display:block;width:auto;position:relative;overflow-x:auto;white-space:nowrap}.gogo-load-css table.responsive-table tbody tr{display:inline-block;vertical-align:top}.gogo-load-css table.responsive-table th{display:block;text-align:right}.gogo-load-css table.responsive-table td{display:block;min-height:1.25em;text-align:left}.gogo-load-css table.responsive-table tr{padding:0 10px}.gogo-load-css table.responsive-table.bordered th{border-bottom:0;border-left:0}.gogo-load-css table.responsive-table.bordered td{border-left:0;border-right:0;border-bottom:0}.gogo-load-css table.responsive-table.bordered tr{border:0}.gogo-load-css table.responsive-table.bordered tbody tr{border-right:1px solid #d0d0d0}}.gogo-load-css .collection{margin:.5rem 0 1rem;border:1px solid #e0e0e0;border-radius:2px;overflow:hidden;position:relative}.gogo-load-css .collection .collection-item{background-color:#fff;line-height:1.5rem;padding:10px 20px;margin:0;border-bottom:1px solid #e0e0e0}.gogo-load-css .collection .collection-item.avatar{min-height:84px;padding-left:72px;position:relative}.gogo-load-css .collection .collection-item.avatar .circle{position:absolute;width:42px;height:42px;overflow:hidden;left:15px;display:inline-block;vertical-align:middle}.gogo-load-css .collection .collection-item.avatar i.circle{font-size:18px;line-height:42px;color:#fff;background-color:#999;text-align:center}.gogo-load-css .collection .collection-item.avatar .title{font-size:16px}.gogo-load-css .collection .collection-item.avatar p{margin:0}.gogo-load-css .collection .collection-item.avatar .secondary-content{position:absolute;top:16px;right:16px}.gogo-load-css .collection .collection-item:last-child{border-bottom:none}.gogo-load-css .collection .collection-item.active{background-color:#4A7874;color:#e9f1f1}.gogo-load-css .collection .collection-item.active .secondary-content{color:#fff}.gogo-load-css .collection a.collection-item{display:block;-webkit-transition:.25s;-moz-transition:.25s;-o-transition:.25s;-ms-transition:.25s;transition:.25s;color:#4A7874}.gogo-load-css .collection a.collection-item:not(.active):hover{background-color:#ddd}.gogo-load-css .collection.with-header .collection-header{background-color:#fff;border-bottom:1px solid #e0e0e0;padding:10px 20px}.gogo-load-css .collection.with-header .collection-item{padding-left:30px}.gogo-load-css .collection.with-header .collection-item.avatar{padding-left:72px}.gogo-load-css .secondary-content{float:right;color:#4A7874}.gogo-load-css .collapsible .collection{margin:0;border:none}.gogo-load-css span.badge{min-width:3rem;padding:0 6px;text-align:center;font-size:1rem;line-height:inherit;color:color("grey","darken-1");position:absolute;right:15px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css span.badge.more{font-weight:300;font-size:.8rem;color:#fff;background-color:#4A7874;border-radius:2px}.gogo-load-css span.badge.new:after{content:" new"}.gogo-load-css span.badge.more:after{content:" more"}.gogo-load-css nav ul a span.badge{position:static;margin-left:4px;line-height:0}.gogo-load-css .video-container{position:relative;padding-bottom:56.25%;padding-top:30px;height:0;overflow:hidden}.gogo-load-css .video-container.no-controls{padding-top:0}.gogo-load-css .video-container embed,.gogo-load-css .video-container iframe,.gogo-load-css .video-container object{position:absolute;top:0;left:0;width:100%;height:100%}.gogo-load-css .progress{position:relative;height:4px;display:block;width:100%;background-color:#bad4d2;border-radius:2px;margin:.5rem 0 1rem;overflow:hidden}.gogo-load-css .progress .determinate{position:absolute;top:0;left:0;bottom:0;background-color:#4A7874;-webkit-transition:width .3s linear;-moz-transition:width .3s linear;-o-transition:width .3s linear;-ms-transition:width .3s linear;transition:width .3s linear}.gogo-load-css .progress .indeterminate{background-color:#4A7874}.gogo-load-css .progress .indeterminate:after,.gogo-load-css .progress .indeterminate:before{content:'';position:absolute;background-color:inherit;bottom:0;will-change:left,right;top:0;left:0}.gogo-load-css .progress .indeterminate:before{-webkit-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-moz-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-ms-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;-o-animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite;animation:indeterminate 2.1s cubic-bezier(.65,.815,.735,.395) infinite}.gogo-load-css .progress .indeterminate:after{-webkit-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-moz-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-ms-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-o-animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;animation:indeterminate-short 2.1s cubic-bezier(.165,.84,.44,1) infinite;-webkit-animation-delay:1.15s;-moz-animation-delay:1.15s;-ms-animation-delay:1.15s;-o-animation-delay:1.15s;animation-delay:1.15s}@-webkit-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-moz-keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@keyframes indeterminate{0%{left:-35%;right:100%}100%,60%{left:100%;right:-90%}}@-webkit-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@-moz-keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}@keyframes indeterminate-short{0%{left:-200%;right:100%}100%,60%{left:107%;right:-8%}}.gogo-load-css .hide{display:none!important}.gogo-load-css .left-align{text-align:left}.gogo-load-css .right-align{text-align:right}.gogo-load-css .center,.gogo-load-css .center-align{text-align:center}.gogo-load-css .left{float:left!important}.gogo-load-css .right{float:right!important}.gogo-load-css .no-select,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.gogo-load-css .circle{border-radius:50%}.gogo-load-css .center-block{display:block;margin-left:auto;margin-right:auto}.gogo-load-css .truncate{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .no-padding{padding:0!important}.gogo-load-css .container{margin:0 auto;max-width:1280px;width:90%}@media only screen and (min-width:601px){.gogo-load-css .container{width:85%}}@media only screen and (min-width:1201px){.gogo-load-css .container{width:70%}}.gogo-load-css .container .row{margin-left:-.75rem;margin-right:-.75rem}.gogo-load-css .section{padding-top:1rem;padding-bottom:1rem}.gogo-load-css .section.no-pad{padding:0}.gogo-load-css .section.no-pad-bot{padding-bottom:0}.gogo-load-css .section.no-pad-top{padding-top:0}.gogo-load-css .row{margin-left:auto;margin-right:auto;margin-bottom:20px}.gogo-load-css .row:after{content:"";display:table;clear:both}.gogo-load-css .gogocarto-container,.gogo-load-css .tabs{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex}.gogo-load-css .row .col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;padding:0 .75rem}.gogo-load-css .row .col.s1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.s2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.s3{width:25%;margin-left:0}.gogo-load-css .row .col.s4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.s5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.s6{width:50%;margin-left:0}.gogo-load-css .row .col.s7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.s8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.s9{width:75%;margin-left:0}.gogo-load-css .row .col.s10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.s11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.s12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-s1{margin-left:8.33333%}.gogo-load-css .row .col.offset-s2{margin-left:16.66667%}.gogo-load-css .row .col.offset-s3{margin-left:25%}.gogo-load-css .row .col.offset-s4{margin-left:33.33333%}.gogo-load-css .row .col.offset-s5{margin-left:41.66667%}.gogo-load-css .row .col.offset-s6{margin-left:50%}.gogo-load-css .row .col.offset-s7{margin-left:58.33333%}.gogo-load-css .row .col.offset-s8{margin-left:66.66667%}.gogo-load-css .row .col.offset-s9{margin-left:75%}.gogo-load-css .row .col.offset-s10{margin-left:83.33333%}.gogo-load-css .row .col.offset-s11{margin-left:91.66667%}.gogo-load-css .row .col.offset-s12{margin-left:100%}@media only screen and (min-width:601px){.gogo-load-css .row .col.m1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.m2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.m3{width:25%;margin-left:0}.gogo-load-css .row .col.m4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.m5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.m6{width:50%;margin-left:0}.gogo-load-css .row .col.m7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.m8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.m9{width:75%;margin-left:0}.gogo-load-css .row .col.m10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.m11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.m12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-m1{margin-left:8.33333%}.gogo-load-css .row .col.offset-m2{margin-left:16.66667%}.gogo-load-css .row .col.offset-m3{margin-left:25%}.gogo-load-css .row .col.offset-m4{margin-left:33.33333%}.gogo-load-css .row .col.offset-m5{margin-left:41.66667%}.gogo-load-css .row .col.offset-m6{margin-left:50%}.gogo-load-css .row .col.offset-m7{margin-left:58.33333%}.gogo-load-css .row .col.offset-m8{margin-left:66.66667%}.gogo-load-css .row .col.offset-m9{margin-left:75%}.gogo-load-css .row .col.offset-m10{margin-left:83.33333%}.gogo-load-css .row .col.offset-m11{margin-left:91.66667%}.gogo-load-css .row .col.offset-m12{margin-left:100%}}@media only screen and (min-width:1201px){.gogo-load-css .row .col.l1{width:8.33333%;margin-left:0}.gogo-load-css .row .col.l2{width:16.66667%;margin-left:0}.gogo-load-css .row .col.l3{width:25%;margin-left:0}.gogo-load-css .row .col.l4{width:33.33333%;margin-left:0}.gogo-load-css .row .col.l5{width:41.66667%;margin-left:0}.gogo-load-css .row .col.l6{width:50%;margin-left:0}.gogo-load-css .row .col.l7{width:58.33333%;margin-left:0}.gogo-load-css .row .col.l8{width:66.66667%;margin-left:0}.gogo-load-css .row .col.l9{width:75%;margin-left:0}.gogo-load-css .row .col.l10{width:83.33333%;margin-left:0}.gogo-load-css .row .col.l11{width:91.66667%;margin-left:0}.gogo-load-css .row .col.l12{width:100%;margin-left:0}.gogo-load-css .row .col.offset-l1{margin-left:8.33333%}.gogo-load-css .row .col.offset-l2{margin-left:16.66667%}.gogo-load-css .row .col.offset-l3{margin-left:25%}.gogo-load-css .row .col.offset-l4{margin-left:33.33333%}.gogo-load-css .row .col.offset-l5{margin-left:41.66667%}.gogo-load-css .row .col.offset-l6{margin-left:50%}.gogo-load-css .row .col.offset-l7{margin-left:58.33333%}.gogo-load-css .row .col.offset-l8{margin-left:66.66667%}.gogo-load-css .row .col.offset-l9{margin-left:75%}.gogo-load-css .row .col.offset-l10{margin-left:83.33333%}.gogo-load-css .row .col.offset-l11{margin-left:91.66667%}.gogo-load-css .row .col.offset-l12{margin-left:100%}}.gogo-load-css html{line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;color:rgba(0,0,0,.87)}@media only screen and (min-width:0){.gogo-load-css html{font-size:14px}}@media only screen and (min-width:900px){.gogo-load-css html{font-size:14.5px}}@media only screen and (min-width:1200px){.gogo-load-css html{font-size:15px}}.gogo-load-css h1,.gogo-load-css h2,.gogo-load-css h3,.gogo-load-css h4,.gogo-load-css h5,.gogo-load-css h6{font-weight:400}.gogo-load-css h1 a,.gogo-load-css h2 a,.gogo-load-css h3 a,.gogo-load-css h4 a,.gogo-load-css h5 a,.gogo-load-css h6 a{font-weight:inherit}.gogo-load-css h1{font-size:4.2rem;line-height:110%;margin:2.1rem 0 1.68rem}.gogo-load-css h2{font-size:3.56rem;line-height:110%;margin:1.78rem 0 1.424rem}.gogo-load-css h3{font-size:2.92rem;line-height:110%;margin:1.46rem 0 1.168rem}.gogo-load-css h4{font-size:2.28rem;line-height:110%;margin:1.14rem 0 .912rem}.gogo-load-css h5{font-size:1.64rem;line-height:110%;margin:.82rem 0 .656rem}.gogo-load-css h6{font-size:1rem;line-height:110%;margin:.5rem 0 .4rem}.gogo-load-css em{font-style:italic}.gogo-load-css strong{font-weight:700}.gogo-load-css small{font-size:75%}.gogo-load-css .light,.gogo-load-css footer.page-footer .footer-copyright{font-weight:300}.gogo-load-css .thin{font-weight:200}.gogo-load-css .flow-text{font-weight:300}@media only screen and (min-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}@media only screen and (min-width:390px){.gogo-load-css .flow-text{font-size:1.224rem}}@media only screen and (min-width:420px){.gogo-load-css .flow-text{font-size:1.248rem}}@media only screen and (min-width:450px){.gogo-load-css .flow-text{font-size:1.272rem}}@media only screen and (min-width:480px){.gogo-load-css .flow-text{font-size:1.296rem}}@media only screen and (min-width:510px){.gogo-load-css .flow-text{font-size:1.32rem}}@media only screen and (min-width:540px){.gogo-load-css .flow-text{font-size:1.344rem}}@media only screen and (min-width:570px){.gogo-load-css .flow-text{font-size:1.368rem}}@media only screen and (min-width:600px){.gogo-load-css .flow-text{font-size:1.392rem}}@media only screen and (min-width:630px){.gogo-load-css .flow-text{font-size:1.416rem}}@media only screen and (min-width:660px){.gogo-load-css .flow-text{font-size:1.44rem}}@media only screen and (min-width:690px){.gogo-load-css .flow-text{font-size:1.464rem}}@media only screen and (min-width:720px){.gogo-load-css .flow-text{font-size:1.488rem}}@media only screen and (min-width:750px){.gogo-load-css .flow-text{font-size:1.512rem}}@media only screen and (min-width:780px){.gogo-load-css .flow-text{font-size:1.536rem}}@media only screen and (min-width:810px){.gogo-load-css .flow-text{font-size:1.56rem}}@media only screen and (min-width:840px){.gogo-load-css .flow-text{font-size:1.584rem}}@media only screen and (min-width:870px){.gogo-load-css .flow-text{font-size:1.608rem}}@media only screen and (min-width:900px){.gogo-load-css .flow-text{font-size:1.632rem}}@media only screen and (min-width:930px){.gogo-load-css .flow-text{font-size:1.656rem}}@media only screen and (min-width:960px){.gogo-load-css .flow-text{font-size:1.68rem}}@media only screen and (max-width:360px){.gogo-load-css .flow-text{font-size:1.2rem}}.gogo-load-css .tabs{display:flex;position:relative;height:2.7rem;background-color:#3D3D3D;margin:0 auto;width:calc(100% - 1px);white-space:nowrap}.gogo-load-css .tabs .tab{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;display:block;float:left;text-align:center;line-height:3rem;height:2.7rem;margin:0;text-transform:uppercase;letter-spacing:.8px;width:15%;padding:0}.gogo-load-css .tabs .tab a{color:#fff;display:block;width:100%;height:100%;-webkit-transition:color .28s ease;-moz-transition:color .28s ease;-o-transition:color .28s ease;-ms-transition:color .28s ease;transition:color .28s ease}.gogo-load-css .tabs .tab a:hover{color:#fff}.gogo-load-css .tabs .tab.disabled a{color:#fff;cursor:default}.gogo-load-css .tabs .indicator{position:absolute;top:0;height:3px;background-color:#fff;will-change:left,right}.gogo-load-css .btn,.gogo-load-css .btn-flat,.gogo-load-css .btn-large{border:none;border-radius:2px;display:inline-block;height:36px;line-height:36px;outline:0;padding:0 2rem;text-transform:uppercase;vertical-align:middle;-webkit-tap-highlight-color:transparent}.gogo-load-css .btn-floating.disabled,.gogo-load-css .btn-floating:disabled,.gogo-load-css .btn-large.disabled,.gogo-load-css .btn-large:disabled,.gogo-load-css .btn.disabled,.gogo-load-css .btn:disabled,.gogo-load-css .disabled.btn-large{background-color:#DFDFDF!important;box-shadow:none;color:#9F9F9F!important;cursor:default}.gogo-load-css .btn-floating.disabled *,.gogo-load-css .btn-floating:disabled *,.gogo-load-css .btn-large.disabled *,.gogo-load-css .btn-large:disabled *,.gogo-load-css .btn.disabled *,.gogo-load-css .btn:disabled *,.gogo-load-css .disabled.btn-large *{pointer-events:none}.gogo-load-css .btn-floating.disabled:hover,.gogo-load-css .btn-floating:disabled:hover,.gogo-load-css .btn-large.disabled:hover,.gogo-load-css .btn-large:disabled:hover,.gogo-load-css .btn.disabled:hover,.gogo-load-css .btn:disabled:hover,.gogo-load-css .disabled.btn-large:hover{background-color:#DFDFDF;color:#9F9F9F}.gogo-load-css .btn i,.gogo-load-css .btn-flat i,.gogo-load-css .btn-floating i,.gogo-load-css .btn-large i{font-size:1.3rem;line-height:inherit}.gogo-load-css .btn,.gogo-load-css .btn-large{text-decoration:none;color:#fff;background-color:#26A69A;text-align:center;letter-spacing:.5px;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out;cursor:pointer}.gogo-load-css .btn-large:hover,.gogo-load-css .btn:hover{background-color:#2bbbad}.gogo-load-css .btn-floating{display:inline-block;color:#fff;position:relative;overflow:hidden;z-index:1;width:37px;height:37px;line-height:37px;padding:0;background-color:#26A69A;border-radius:50%;transition:.3s;cursor:pointer;vertical-align:middle}.gogo-load-css .btn-floating i{width:inherit;display:inline-block;text-align:center;color:#fff;font-size:1.6rem;line-height:37px}.gogo-load-css .btn-floating:before{border-radius:0}.gogo-load-css .btn-floating.btn-large{width:55.5px;height:55.5px}.gogo-load-css .btn-floating.btn-large i{line-height:55.5px}.gogo-load-css button.btn-floating{border:none}.gogo-load-css .fixed-action-btn{position:fixed;right:23px;bottom:23px;padding-top:15px;margin-bottom:0;z-index:998}.gogo-load-css .fixed-action-btn ul{left:0;right:0;text-align:center;position:absolute;bottom:64px;margin:0}.gogo-load-css .fixed-action-btn ul li{margin-bottom:15px}.gogo-load-css .fixed-action-btn ul a.btn-floating{opacity:0}.gogo-load-css .btn-flat{box-shadow:none;background-color:transparent;color:#343434;cursor:pointer}.gogo-load-css .btn-flat.disabled{color:#b3b3b3;cursor:default}.gogo-load-css .btn-large{height:54px;line-height:56px}.gogo-load-css .btn-large i{font-size:1.6rem}.gogo-load-css .btn-block{display:block}.gogo-load-css .dropdown-content{background-color:#fff;margin:0;display:none;min-width:100px;max-height:650px;overflow-y:auto;opacity:0;position:absolute;z-index:999;will-change:width,height}.gogo-load-css .dropdown-content li{clear:both;color:rgba(0,0,0,.87);cursor:pointer;line-height:1.5rem;width:100%;text-align:left;text-transform:none}.gogo-load-css .dropdown-content li.active,.gogo-load-css .dropdown-content li:hover{background-color:#eee}.gogo-load-css .dropdown-content li>a,.gogo-load-css .dropdown-content li>span{font-size:1.2rem;color:#4A7874;display:block;padding:1rem}.gogo-load-css .dropdown-content li>a>i{height:inherit;line-height:inherit}.gogo-load-css .waves-effect{position:relative;cursor:pointer;display:inline-block;overflow:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;vertical-align:middle;z-index:1;will-change:opacity,transform;-webkit-transition:all .3s ease-out;-moz-transition:all .3s ease-out;-o-transition:all .3s ease-out;-ms-transition:all .3s ease-out;transition:all .3s ease-out}.gogo-load-css .waves-effect .waves-ripple{position:absolute;border-radius:50%;width:20px;height:20px;margin-top:-10px;margin-left:-10px;opacity:0;background:rgba(0,0,0,.2);-webkit-transition:all .7s ease-out;-moz-transition:all .7s ease-out;-o-transition:all .7s ease-out;-ms-transition:all .7s ease-out;transition:all .7s ease-out;-webkit-transition-property:-webkit-transform,opacity;-moz-transition-property:-moz-transform,opacity;-o-transition-property:-o-transform,opacity;transition-property:transform,opacity;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0);pointer-events:none}.gogo-load-css .waves-effect.waves-light .waves-ripple{background-color:rgba(255,255,255,.45)}.gogo-load-css .waves-effect.waves-red .waves-ripple{background-color:rgba(244,67,54,.7)}.gogo-load-css .waves-effect.waves-yellow .waves-ripple{background-color:rgba(255,235,59,.7)}.gogo-load-css .waves-effect.waves-orange .waves-ripple{background-color:rgba(255,152,0,.7)}.gogo-load-css .waves-effect.waves-purple .waves-ripple{background-color:rgba(156,39,176,.7)}.gogo-load-css .waves-effect.waves-green .waves-ripple{background-color:rgba(76,175,80,.7)}.gogo-load-css .waves-effect.waves-teal .waves-ripple{background-color:rgba(0,150,136,.7)}.gogo-load-css .waves-notransition{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}.gogo-load-css .waves-input-wrapper{border-radius:.2em;vertical-align:bottom}.gogo-load-css .waves-input-wrapper .waves-button-input{position:relative;top:0;left:0;z-index:1}.gogo-load-css .waves-circle{-webkit-transform:translateZ(0);-moz-transform:translateZ(0);-ms-transform:translateZ(0);-o-transform:translateZ(0);transform:translateZ(0);text-align:center;width:2.5em;height:2.5em;line-height:2.5em;border-radius:50%;-webkit-mask-image:none}.gogo-load-css .waves-block{display:block}.gogo-load-css a.waves-effect .waves-ripple{z-index:-1}.gogo-load-css .modal{display:none;position:fixed;left:0;right:0;background-color:#fafafa;padding:0;max-height:70%;width:55%;margin:auto;overflow-y:auto;border-radius:2px;will-change:top,opacity}@media only screen and (max-width:1200px){.gogo-load-css .modal{width:80%}}@media only screen and (max-width:600px){.gogo-load-css .modal{width:100%;max-height:100%;height:100%;top:0!important}}.gogo-load-css .modal h1,.gogo-load-css .modal h2,.gogo-load-css .modal h3,.gogo-load-css .modal h4,.gogo-load-css .modal h5{margin-top:0}.gogo-load-css .modal h5{margin-bottom:1.5rem}.gogo-load-css .modal .footer{margin-top:1rem;text-align:center}.gogo-load-css .modal .modal-content{padding:24px}@media only screen and (min-width:601px){.gogo-load-css .modal .modal-content{padding:40px}}.gogo-load-css .modal .modal-close{cursor:pointer;color:#fff}.gogo-load-css .modal .modal-footer{border-radius:0 0 2px 2px;background-color:#fafafa;padding:4px 6px;height:56px;width:100%}.gogo-load-css .modal .modal-footer .btn,.gogo-load-css .modal .modal-footer .btn-flat,.gogo-load-css .modal .modal-footer .btn-large{float:right;margin:6px 0}.gogo-load-css .modal.modal-fixed-footer{padding:0;height:70%}.gogo-load-css .modal.modal-fixed-footer .modal-content{position:absolute;height:calc(100% - 58px);max-height:100%;width:100%;overflow-y:auto}.gogo-load-css .modal.modal-fixed-footer .modal-footer{border-top:1px solid rgba(0,0,0,.1);position:absolute;bottom:0}.gogo-load-css .modal.bottom-sheet{top:auto;bottom:-100%;margin:0;width:100%;max-height:45%;border-radius:0;will-change:bottom,opacity}.gogo-load-css .collapsible{border-top:1px solid #ddd;border-right:1px solid #ddd;border-left:1px solid #ddd;margin:.5rem 0 1rem}.gogo-load-css .collapsible-header{display:block;cursor:pointer;min-height:3rem;line-height:3rem;padding:0 1rem;background-color:#fff;border-bottom:1px solid #ddd}.gogo-load-css .collapsible-header i{width:2rem;font-size:1.6rem;line-height:3rem;display:block;float:left;text-align:center;margin-right:1rem}.gogo-load-css .collapsible-body{display:none;border-bottom:1px solid #ddd;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}.gogo-load-css .collapsible-body p{margin:0;padding:2rem}.gogo-load-css .side-nav .collapsible{border:none;box-shadow:none}.gogo-load-css .side-nav .collapsible li{padding:0}.gogo-load-css .side-nav .collapsible-header{background-color:transparent;border:none;line-height:inherit;height:inherit;margin:0 1rem}.gogo-load-css .side-nav .collapsible-header i{line-height:inherit}.gogo-load-css .side-nav .collapsible-body{border:0;background-color:#fff}.gogo-load-css .side-nav .collapsible-body li a{margin:0 1rem 0 2rem}.gogo-load-css .collapsible.popout{border:none;box-shadow:none}.gogo-load-css .collapsible.popout>li{box-shadow:0 2px 5px 0 rgba(0,0,0,.16),0 2px 10px 0 rgba(0,0,0,.12);margin:0 24px;transition:margin .35s cubic-bezier(.25,.46,.45,.94)}.gogo-load-css .collapsible.popout>li.active{box-shadow:0 5px 11px 0 rgba(0,0,0,.18),0 4px 15px 0 rgba(0,0,0,.15);margin:16px 0}.gogo-load-css select:focus{outline:#d0e2e0 solid 1px}.gogo-load-css label{font-size:.8rem;color:#3D3D3D}.gogo-load-css ::-webkit-input-placeholder{color:#707070}.gogo-load-css :-moz-placeholder{color:#707070}.gogo-load-css ::-moz-placeholder{color:#707070}.gogo-load-css :-ms-input-placeholder{color:#707070}.gogo-load-css input[type=date],.gogo-load-css input[type=datetime-local],.gogo-load-css input[type=email],.gogo-load-css input[type=number],.gogo-load-css input[type=password],.gogo-load-css input[type=search],.gogo-load-css input[type=tel],.gogo-load-css input[type=text],.gogo-load-css input[type=time],.gogo-load-css input[type=url],.gogo-load-css textarea.materialize-textarea{background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;border-radius:0;outline:0;height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;box-shadow:none;-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;transition:all .3s}.gogo-load-css input[type=date]:disabled,.gogo-load-css input[type=date][readonly=readonly],.gogo-load-css input[type=datetime-local]:disabled,.gogo-load-css input[type=datetime-local][readonly=readonly],.gogo-load-css input[type=email]:disabled,.gogo-load-css input[type=email][readonly=readonly],.gogo-load-css input[type=number]:disabled,.gogo-load-css input[type=number][readonly=readonly],.gogo-load-css input[type=password]:disabled,.gogo-load-css input[type=password][readonly=readonly],.gogo-load-css input[type=search]:disabled,.gogo-load-css input[type=search][readonly=readonly],.gogo-load-css input[type=tel]:disabled,.gogo-load-css input[type=tel][readonly=readonly],.gogo-load-css input[type=text]:disabled,.gogo-load-css input[type=text][readonly=readonly],.gogo-load-css input[type=time]:disabled,.gogo-load-css input[type=time][readonly=readonly],.gogo-load-css input[type=url]:disabled,.gogo-load-css input[type=url][readonly=readonly],.gogo-load-css textarea.materialize-textarea:disabled,.gogo-load-css textarea.materialize-textarea[readonly=readonly]{color:rgba(0,0,0,.26);border-bottom:1px dotted rgba(0,0,0,.26)}.gogo-load-css input[type=date].valid,.gogo-load-css input[type=date]:focus.valid,.gogo-load-css input[type=date]:focus:not([readonly]),.gogo-load-css input[type=datetime-local].valid,.gogo-load-css input[type=datetime-local]:focus.valid,.gogo-load-css input[type=datetime-local]:focus:not([readonly]),.gogo-load-css input[type=email].valid,.gogo-load-css input[type=email]:focus.valid,.gogo-load-css input[type=email]:focus:not([readonly]),.gogo-load-css input[type=number].valid,.gogo-load-css input[type=number]:focus.valid,.gogo-load-css input[type=number]:focus:not([readonly]),.gogo-load-css input[type=password].valid,.gogo-load-css input[type=password]:focus.valid,.gogo-load-css input[type=password]:focus:not([readonly]),.gogo-load-css input[type=search].valid,.gogo-load-css input[type=search]:focus.valid,.gogo-load-css input[type=search]:focus:not([readonly]),.gogo-load-css input[type=tel].valid,.gogo-load-css input[type=tel]:focus.valid,.gogo-load-css input[type=tel]:focus:not([readonly]),.gogo-load-css input[type=text].valid,.gogo-load-css input[type=text]:focus.valid,.gogo-load-css input[type=text]:focus:not([readonly]),.gogo-load-css input[type=time].valid,.gogo-load-css input[type=time]:focus.valid,.gogo-load-css input[type=time]:focus:not([readonly]),.gogo-load-css input[type=url].valid,.gogo-load-css input[type=url]:focus.valid,.gogo-load-css input[type=url]:focus:not([readonly]),.gogo-load-css textarea.materialize-textarea.valid,.gogo-load-css textarea.materialize-textarea:focus.valid,.gogo-load-css textarea.materialize-textarea:focus:not([readonly]){border-bottom:1px solid #4A7874;box-shadow:0 1px 0 0 #4A7874}.gogo-load-css input[type=date]:disabled+label,.gogo-load-css input[type=date][readonly=readonly]+label,.gogo-load-css input[type=datetime-local]:disabled+label,.gogo-load-css input[type=datetime-local][readonly=readonly]+label,.gogo-load-css input[type=email]:disabled+label,.gogo-load-css input[type=email][readonly=readonly]+label,.gogo-load-css input[type=number]:disabled+label,.gogo-load-css input[type=number][readonly=readonly]+label,.gogo-load-css input[type=password]:disabled+label,.gogo-load-css input[type=password][readonly=readonly]+label,.gogo-load-css input[type=search]:disabled+label,.gogo-load-css input[type=search][readonly=readonly]+label,.gogo-load-css input[type=tel]:disabled+label,.gogo-load-css input[type=tel][readonly=readonly]+label,.gogo-load-css input[type=text]:disabled+label,.gogo-load-css input[type=text][readonly=readonly]+label,.gogo-load-css input[type=time]:disabled+label,.gogo-load-css input[type=time][readonly=readonly]+label,.gogo-load-css input[type=url]:disabled+label,.gogo-load-css input[type=url][readonly=readonly]+label,.gogo-load-css textarea.materialize-textarea:disabled+label,.gogo-load-css textarea.materialize-textarea[readonly=readonly]+label{color:rgba(0,0,0,.26)}.gogo-load-css input[type=date]:focus:not([readonly])+label,.gogo-load-css input[type=datetime-local]:focus:not([readonly])+label,.gogo-load-css input[type=email]:focus:not([readonly])+label,.gogo-load-css input[type=number]:focus:not([readonly])+label,.gogo-load-css input[type=password]:focus:not([readonly])+label,.gogo-load-css input[type=search]:focus:not([readonly])+label,.gogo-load-css input[type=tel]:focus:not([readonly])+label,.gogo-load-css input[type=text]:focus:not([readonly])+label,.gogo-load-css input[type=time]:focus:not([readonly])+label,.gogo-load-css input[type=url]:focus:not([readonly])+label,.gogo-load-css textarea.materialize-textarea:focus:not([readonly])+label{color:#4A7874}.gogo-load-css input[type=date].valid+label:after,.gogo-load-css input[type=date]:focus.valid+label:after,.gogo-load-css input[type=datetime-local].valid+label:after,.gogo-load-css input[type=datetime-local]:focus.valid+label:after,.gogo-load-css input[type=email].valid+label:after,.gogo-load-css input[type=email]:focus.valid+label:after,.gogo-load-css input[type=number].valid+label:after,.gogo-load-css input[type=number]:focus.valid+label:after,.gogo-load-css input[type=password].valid+label:after,.gogo-load-css input[type=password]:focus.valid+label:after,.gogo-load-css input[type=search].valid+label:after,.gogo-load-css input[type=search]:focus.valid+label:after,.gogo-load-css input[type=tel].valid+label:after,.gogo-load-css input[type=tel]:focus.valid+label:after,.gogo-load-css input[type=text].valid+label:after,.gogo-load-css input[type=text]:focus.valid+label:after,.gogo-load-css input[type=time].valid+label:after,.gogo-load-css input[type=time]:focus.valid+label:after,.gogo-load-css input[type=url].valid+label:after,.gogo-load-css input[type=url]:focus.valid+label:after,.gogo-load-css textarea.materialize-textarea.valid+label:after,.gogo-load-css textarea.materialize-textarea:focus.valid+label:after{content:attr(data-success);color:#4A7874;opacity:1}.gogo-load-css input[type=date].invalid,.gogo-load-css input[type=date]:focus.invalid,.gogo-load-css input[type=datetime-local].invalid,.gogo-load-css input[type=datetime-local]:focus.invalid,.gogo-load-css input[type=email].invalid,.gogo-load-css input[type=email]:focus.invalid,.gogo-load-css input[type=number].invalid,.gogo-load-css input[type=number]:focus.invalid,.gogo-load-css input[type=password].invalid,.gogo-load-css input[type=password]:focus.invalid,.gogo-load-css input[type=search].invalid,.gogo-load-css input[type=search]:focus.invalid,.gogo-load-css input[type=tel].invalid,.gogo-load-css input[type=tel]:focus.invalid,.gogo-load-css input[type=text].invalid,.gogo-load-css input[type=text]:focus.invalid,.gogo-load-css input[type=time].invalid,.gogo-load-css input[type=time]:focus.invalid,.gogo-load-css input[type=url].invalid,.gogo-load-css input[type=url]:focus.invalid,.gogo-load-css textarea.materialize-textarea.invalid,.gogo-load-css textarea.materialize-textarea:focus.invalid{border-bottom:1px solid #B90303;box-shadow:0 1px 0 0 #B90303}.gogo-load-css input[type=date].invalid+label:after,.gogo-load-css input[type=date]:focus.invalid+label:after,.gogo-load-css input[type=datetime-local].invalid+label:after,.gogo-load-css input[type=datetime-local]:focus.invalid+label:after,.gogo-load-css input[type=email].invalid+label:after,.gogo-load-css input[type=email]:focus.invalid+label:after,.gogo-load-css input[type=number].invalid+label:after,.gogo-load-css input[type=number]:focus.invalid+label:after,.gogo-load-css input[type=password].invalid+label:after,.gogo-load-css input[type=password]:focus.invalid+label:after,.gogo-load-css input[type=search].invalid+label:after,.gogo-load-css input[type=search]:focus.invalid+label:after,.gogo-load-css input[type=tel].invalid+label:after,.gogo-load-css input[type=tel]:focus.invalid+label:after,.gogo-load-css input[type=text].invalid+label:after,.gogo-load-css input[type=text]:focus.invalid+label:after,.gogo-load-css input[type=time].invalid+label:after,.gogo-load-css input[type=time]:focus.invalid+label:after,.gogo-load-css input[type=url].invalid+label:after,.gogo-load-css input[type=url]:focus.invalid+label:after,.gogo-load-css textarea.materialize-textarea.invalid+label:after,.gogo-load-css textarea.materialize-textarea:focus.invalid+label:after{content:attr(data-error);color:#B90303;opacity:1}.gogo-load-css input[type=date]+label:after,.gogo-load-css input[type=datetime-local]+label:after,.gogo-load-css input[type=email]+label:after,.gogo-load-css input[type=number]+label:after,.gogo-load-css input[type=password]+label:after,.gogo-load-css input[type=search]+label:after,.gogo-load-css input[type=tel]+label:after,.gogo-load-css input[type=text]+label:after,.gogo-load-css input[type=time]+label:after,.gogo-load-css input[type=url]+label:after,.gogo-load-css textarea.materialize-textarea+label:after{display:block;content:"";position:absolute;top:65px;opacity:0;transition:.2s opacity ease-out,.2s color ease-out}.gogo-load-css .input-field{position:relative;margin-top:1rem}.gogo-load-css .input-field label{color:#3D3D3D;position:absolute;top:.8rem;left:.75rem;font-size:1rem;cursor:text;-webkit-transition:.2s ease-out;-moz-transition:.2s ease-out;-o-transition:.2s ease-out;-ms-transition:.2s ease-out;transition:.2s ease-out}.gogo-load-css .input-field label.active{font-size:.8rem;-webkit-transform:translateY(-140%);-moz-transform:translateY(-140%);-ms-transform:translateY(-140%);-o-transform:translateY(-140%);transform:translateY(-140%)}.gogo-load-css .input-field .prefix{position:absolute;width:3rem;font-size:2rem;line-height:3rem;-webkit-transition:color .2s;-moz-transition:color .2s;-o-transition:color .2s;-ms-transition:color .2s;transition:color .2s}.gogo-load-css .input-field .prefix.active{color:#4A7874}.gogo-load-css .input-field .prefix~input,.gogo-load-css .input-field .prefix~textarea{margin-left:3rem;width:92%;width:calc(100% - 3rem)}.gogo-load-css .input-field .prefix~textarea{padding-top:.8rem}.gogo-load-css .input-field .prefix~label{margin-left:3rem}@media only screen and (max-width:1200px){.gogo-load-css .input-field .prefix~input{width:86%;width:calc(100% - 3rem)}}@media only screen and (max-width:600px){.gogo-load-css .input-field .prefix~input{width:80%;width:calc(100% - 3rem)}}.gogo-load-css .input-field input[type=search]{display:block;line-height:inherit;padding-left:4rem;width:calc(100% - 4rem)}.gogo-load-css .input-field input[type=search]:focus{background-color:#fff;border:0;box-shadow:none;color:#444}.gogo-load-css .input-field input[type=search]:focus+label i,.gogo-load-css .input-field input[type=search]:focus~.material-icons,.gogo-load-css .input-field input[type=search]:focus~.mdi-navigation-close{color:#444}.gogo-load-css .input-field input[type=search]+label{left:1rem}.gogo-load-css .input-field input[type=search]~.material-icons,.gogo-load-css .input-field input[type=search]~.mdi-navigation-close{position:absolute;top:0;right:1rem;color:transparent;cursor:pointer;font-size:2rem;transition:.3s color}.gogo-load-css textarea{width:100%;height:3rem;background-color:transparent}.gogo-load-css textarea.materialize-textarea{overflow-y:hidden;padding:1.6rem 0;resize:none;min-height:3rem}.gogo-load-css .hiddendiv{display:none;white-space:pre-wrap;word-wrap:break-word;overflow-wrap:break-word;padding-top:1.2rem}.gogo-load-css [type=radio]:checked,.gogo-load-css [type=radio]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=radio]:checked+label,.gogo-load-css [type=radio]:not(:checked)+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=radio]+label:after,.gogo-load-css [type=radio]+label:before{content:'';position:absolute;left:0;top:0;margin:4px;width:16px;height:16px;z-index:0;-webkit-transition:.28s ease;-moz-transition:.28s ease;-o-transition:.28s ease;-ms-transition:.28s ease;transition:.28s ease}.gogo-load-css [type=radio]:not(:checked)+label:before{border-radius:50%;border:2px solid #5a5a5a}.gogo-load-css [type=radio]:not(:checked)+label:after{border-radius:50%;border:2px solid #5a5a5a;z-index:-1;-webkit-transform:scale(0);-moz-transform:scale(0);-ms-transform:scale(0);-o-transform:scale(0);transform:scale(0)}.gogo-load-css [type=radio]:checked+label:before{border-radius:50%;border:2px solid transparent}.gogo-load-css [type=radio]:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(1.02);-moz-transform:scale(1.02);-ms-transform:scale(1.02);-o-transform:scale(1.02);transform:scale(1.02)}.gogo-load-css [type=radio].with-gap:checked+label:before{border-radius:50%;border:2px solid #4A7874}.gogo-load-css [type=radio].with-gap:checked+label:after{border-radius:50%;border:2px solid #4A7874;background-color:#4A7874;z-index:0;-webkit-transform:scale(.5);-moz-transform:scale(.5);-ms-transform:scale(.5);-o-transform:scale(.5);transform:scale(.5)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:before{border:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=radio].with-gap:disabled:checked+label:after{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:before,.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{background-color:transparent;border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled+label{color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:not(:checked)+label:before{border-color:rgba(0,0,0,.26)}.gogo-load-css [type=radio]:disabled:checked+label:after{background-color:rgba(0,0,0,.26);border-color:#BDBDBD}.gogo-load-css form p{margin-bottom:10px;text-align:left}.gogo-load-css form p:last-child{margin-bottom:0}.gogo-load-css [type=checkbox]:checked,.gogo-load-css [type=checkbox]:not(:checked){position:absolute;left:-9999px;visibility:hidden}.gogo-load-css [type=checkbox]+label{position:relative;padding-left:35px;cursor:pointer;display:inline-block;height:25px;line-height:25px;font-size:1rem;-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css [type=checkbox]+label:before{content:'';position:absolute;top:0;left:0;width:18px;height:18px;z-index:0;border:2px solid #5a5a5a;border-radius:1px;margin-top:2px;-webkit-transition:.2s;-moz-transition:.2s;-o-transition:.2s;-ms-transition:.2s;transition:.2s}.gogo-load-css [type=checkbox]:not(:checked):disabled+label:before{border:none;background-color:rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:checked+label:before{top:-4px;left:-3px;width:12px;height:22px;border-top:2px solid transparent;border-left:2px solid transparent;border-right:2px solid #4A7874;border-bottom:2px solid #4A7874;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:checked:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);border-bottom:2px solid rgba(0,0,0,.26)}.gogo-load-css [type=checkbox]:indeterminate+label:before{left:-10px;top:-11px;width:10px;height:22px;border-top:none;border-left:none;border-right:2px solid #4A7874;border-bottom:none;-webkit-transform:rotate(90deg);-moz-transform:rotate(90deg);-ms-transform:rotate(90deg);-o-transform:rotate(90deg);transform:rotate(90deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox]:indeterminate:disabled+label:before{border-right:2px solid rgba(0,0,0,.26);background-color:transparent}.gogo-load-css [type=checkbox].filled-in+label:after{border-radius:2px}.gogo-load-css [type=checkbox].filled-in+label:after,.gogo-load-css [type=checkbox].filled-in+label:before{content:'';left:0;position:absolute;transition:border .25s,background-color .25s,width .2s .1s,height .2s .1s,top .2s .1s,left .2s .1s;z-index:1}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:before{width:0;height:0;border:3px solid transparent;left:6px;top:10px;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:20% 40%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:not(:checked)+label:after{height:20px;width:20px;background-color:transparent;border:2px solid #5a5a5a;top:0;z-index:0}.gogo-load-css [type=checkbox].filled-in:checked+label:before{top:0;left:1px;width:8px;height:13px;border-top:none;border-left:none;border-right:2px solid #fff;border-bottom:2px solid #fff;-webkit-transform:rotateZ(37deg);transform:rotateZ(37deg);-webkit-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css [type=checkbox].filled-in:checked+label:after{top:0;width:20px;height:20px;border:2px solid #4A7874;background-color:#4A7874;z-index:0}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:before{background-color:transparent;border:2px solid transparent}.gogo-load-css [type=checkbox].filled-in:disabled:not(:checked)+label:after{border-color:transparent;background-color:#BDBDBD}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:before{background-color:transparent}.gogo-load-css [type=checkbox].filled-in:disabled:checked+label:after{background-color:#BDBDBD;border-color:#BDBDBD}.gogo-load-css .switch,.gogo-load-css .switch *{-webkit-user-select:none;-moz-user-select:none;-khtml-user-select:none;-ms-user-select:none}.gogo-load-css .switch label{cursor:pointer}.gogo-load-css .switch label input[type=checkbox]{opacity:0;width:0;height:0}.gogo-load-css .switch label input[type=checkbox]:checked+.lever{background-color:#a1a1a1}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{background-color:#4A7874}.gogo-load-css .switch label .lever{content:"";display:inline-block;position:relative;width:40px;height:15px;background-color:#818181;border-radius:15px;transition:background .3s ease;vertical-align:middle;margin:0 16px}.gogo-load-css .switch label .lever:after{content:"";position:absolute;display:inline-block;width:21px;height:21px;background-color:#F1F1F1;border-radius:21px;box-shadow:0 1px 3px 1px rgba(0,0,0,.4);left:-5px;top:-3px;transition:left .3s ease,background .3s ease,box-shadow .1s ease}.gogo-load-css input[type=checkbox]:checked:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(74,120,116,.1)}.gogo-load-css input[type=checkbox]:not(:disabled)~.lever:active:after{box-shadow:0 1px 3px 1px rgba(0,0,0,.4),0 0 0 15px rgba(0,0,0,.08)}.gogo-load-css .switch label input[type=checkbox]:checked+.lever:after{left:24px}.gogo-load-css .switch input[type=checkbox][disabled]+.lever{cursor:default}.gogo-load-css .switch label input[type=checkbox][disabled]+.lever:after,.gogo-load-css .switch label input[type=checkbox][disabled]:checked+.lever:after{background-color:#BDBDBD}.gogo-load-css .select-label{position:absolute}.gogo-load-css .select-wrapper{position:relative}.gogo-load-css .select-wrapper input.select-dropdown{position:relative;cursor:pointer;background-color:transparent;border:none;border-bottom:1px solid #3D3D3D;outline:0;height:3rem;line-height:3rem;width:100%;font-size:1rem;margin:0 0 15px;padding:0;display:block}.gogo-load-css .select-wrapper span.caret{color:initial;position:absolute;right:0;top:16px;font-size:10px}.gogo-load-css .select-wrapper span.caret.disabled{color:rgba(0,0,0,.26)}.gogo-load-css .select-wrapper+label{position:absolute;top:-14px;font-size:.8rem}.gogo-load-css select{display:none}.gogo-load-css select.browser-default{display:block}.gogo-load-css select:disabled{color:rgba(0,0,0,.3)}.gogo-load-css .select-wrapper input.select-dropdown:disabled{color:rgba(0,0,0,.3);cursor:default;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;border-bottom:1px solid rgba(0,0,0,.3)}.gogo-load-css .file-field span,.gogo-load-css .leaflet-interactive,.gogo-load-css input[type=range],.gogo-load-css input[type=range]+.thumb{cursor:pointer}.gogo-load-css .select-wrapper i{color:rgba(0,0,0,.3)}.gogo-load-css .select-dropdown li.disabled{color:rgba(0,0,0,.3);background-color:transparent}.gogo-load-css .file-field{position:relative}.gogo-load-css .file-field .file-path-wrapper{overflow:hidden;padding-left:10px}.gogo-load-css .file-field input.file-path{width:100%}.gogo-load-css .file-field .btn,.gogo-load-css .file-field .btn-large{float:left;height:3rem;line-height:3rem}.gogo-load-css .file-field input[type=file]{position:absolute;top:0;right:0;left:0;bottom:0;width:100%;margin:0;padding:0;font-size:20px;cursor:pointer;opacity:0;filter:alpha(opacity=0)}.gogo-load-css .range-field{position:relative}.gogo-load-css input[type=range]{position:relative;background-color:transparent;outline:0;width:100%;margin:15px 0;padding:0}.gogo-load-css input[type=range]+.thumb{position:absolute;border:none;height:0;width:0;border-radius:50%;background-color:#4A7874;top:10px;margin-left:-6px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-ms-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css input[type=range]+.thumb .value{display:block;width:30px;text-align:center;color:#4A7874;font-size:0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css input[type=range]+.thumb.active{border-radius:50% 50% 50% 0}.gogo-load-css input[type=range]+.thumb.active .value{color:#fff;margin-left:-1px;margin-top:8px;font-size:10px}.gogo-load-css input[type=range]:focus{outline:0}.gogo-load-css input[type=range]::-webkit-slider-runnable-track{height:3px;background:#c2c0c2;border:none}.gogo-load-css input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;border:none;height:14px;width:14px;border-radius:50%;background-color:#4A7874;transform-origin:50% 50%;margin:-5px 0 0;-webkit-transition:.3s;-moz-transition:.3s;-o-transition:.3s;-ms-transition:.3s;transition:.3s}.gogo-load-css input[type=range]:focus::-webkit-slider-runnable-track{background:#ccc}.gogo-load-css input[type=range]{-webkit-appearance:none;border:1px solid #fff}.gogo-load-css input[type=range]::-moz-range-track{height:3px;background:#ddd;border:none}.gogo-load-css input[type=range]::-moz-range-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874;margin-top:-5px}.gogo-load-css input[type=range]:-moz-focusring{outline:#fff solid 1px;outline-offset:-1px}.gogo-load-css input[type=range]:focus::-moz-range-track{background:#ccc}.gogo-load-css input[type=range]::-ms-track{height:3px;background:0 0;border-color:transparent;border-width:6px 0;color:transparent}.gogo-load-css input[type=range]::-ms-fill-lower{background:#777}.gogo-load-css input[type=range]::-ms-fill-upper{background:#ddd}.gogo-load-css input[type=range]::-ms-thumb{border:none;height:14px;width:14px;border-radius:50%;background:#4A7874}.gogo-load-css input[type=range]:focus::-ms-fill-lower{background:#888}.gogo-load-css input[type=range]:focus::-ms-fill-upper{background:#ccc}.gogo-load-css select{background-color:rgba(255,255,255,.9);width:100%;padding:5px;border:1px solid #f2f2f2;border-radius:2px;height:3rem}.gogo-load-css .preloader-wrapper{display:inline-block;position:relative;width:48px;height:48px}.gogo-load-css .preloader-wrapper.small{width:36px;height:36px}.gogo-load-css .preloader-wrapper.big{width:64px;height:64px}.gogo-load-css .preloader-wrapper.active{-webkit-animation:container-rotate 1568ms linear infinite;animation:container-rotate 1568ms linear infinite}@-webkit-keyframes container-rotate{to{-webkit-transform:rotate(360deg)}}@keyframes container-rotate{to{transform:rotate(360deg)}}.gogo-load-css .spinner-layer{position:absolute;width:100%;height:100%;opacity:0;border-color:#4A7874}.gogo-load-css .spinner-blue,.gogo-load-css .spinner-blue-only{border-color:#4285f4}.gogo-load-css .spinner-red,.gogo-load-css .spinner-red-only{border-color:#db4437}.gogo-load-css .spinner-yellow,.gogo-load-css .spinner-yellow-only{border-color:#f4b400}.gogo-load-css .spinner-green,.gogo-load-css .spinner-green-only{border-color:#0f9d58}.gogo-load-css .active .spinner-layer.spinner-blue{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,blue-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-red{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,red-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-yellow{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,yellow-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer.spinner-green{-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both,green-fade-in-out 5332ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .spinner-layer,.gogo-load-css .active .spinner-layer.spinner-blue-only,.gogo-load-css .active .spinner-layer.spinner-green-only,.gogo-load-css .active .spinner-layer.spinner-red-only,.gogo-load-css .active .spinner-layer.spinner-yellow-only{opacity:1;-webkit-animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both;animation:fill-unfill-rotate 5332ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes fill-unfill-rotate{12.5%{-webkit-transform:rotate(135deg)}25%{-webkit-transform:rotate(270deg)}37.5%{-webkit-transform:rotate(405deg)}50%{-webkit-transform:rotate(540deg)}62.5%{-webkit-transform:rotate(675deg)}75%{-webkit-transform:rotate(810deg)}87.5%{-webkit-transform:rotate(945deg)}to{-webkit-transform:rotate(1080deg)}}@keyframes fill-unfill-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}to{transform:rotate(1080deg)}}@-webkit-keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@keyframes blue-fade-in-out{100%,25%,90%,from{opacity:1}26%,89%{opacity:0}}@-webkit-keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@keyframes red-fade-in-out{15%,51%,from{opacity:0}25%,50%{opacity:1}}@-webkit-keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@keyframes yellow-fade-in-out{40%,76%,from{opacity:0}50%,75%{opacity:1}}@-webkit-keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}@keyframes green-fade-in-out{100%,65%,from{opacity:0}75%,90%{opacity:1}}.gogo-load-css .gap-patch{position:absolute;top:0;left:45%;width:10%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .gap-patch .circle{width:1000%;left:-450%}.gogo-load-css .circle-clipper{display:inline-block;position:relative;width:50%;height:100%;overflow:hidden;border-color:inherit}.gogo-load-css .circle-clipper .circle{width:200%;height:100%;border-width:3px;border-style:solid;border-color:inherit;border-bottom-color:transparent!important;border-radius:50%;-webkit-animation:none;animation:none;position:absolute;top:0;right:0;bottom:0}.gogo-load-css .circle-clipper.left .circle{left:0;border-right-color:transparent!important;-webkit-transform:rotate(129deg);transform:rotate(129deg)}.gogo-load-css .circle-clipper.right .circle{left:-100%;border-left-color:transparent!important;-webkit-transform:rotate(-129deg);transform:rotate(-129deg)}.gogo-load-css .active .circle-clipper.left .circle{-webkit-animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:left-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}.gogo-load-css .active .circle-clipper.right .circle{-webkit-animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both;animation:right-spin 1333ms cubic-bezier(.4,0,.2,1) infinite both}@-webkit-keyframes left-spin{from,to{-webkit-transform:rotate(130deg)}50%{-webkit-transform:rotate(-5deg)}}@keyframes left-spin{from,to{transform:rotate(130deg)}50%{transform:rotate(-5deg)}}@-webkit-keyframes right-spin{from,to{-webkit-transform:rotate(-130deg)}50%{-webkit-transform:rotate(5deg)}}@keyframes right-spin{from,to{transform:rotate(-130deg)}50%{transform:rotate(5deg)}}.gogo-load-css #spinnerContainer.cooldown{-webkit-animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1);animation:container-rotate 1568ms linear infinite,fade-out .4s cubic-bezier(.4,0,.2,1)}@-webkit-keyframes fade-out{from{opacity:1}to{opacity:0}}@keyframes fade-out{from{opacity:1}to{opacity:0}}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane,.gogo-load-css .leaflet-pane>canvas,.gogo-load-css .leaflet-pane>svg,.gogo-load-css .leaflet-tile,.gogo-load-css .leaflet-tile-container,.gogo-load-css .leaflet-zoom-box{position:absolute;left:0;top:0}.gogo-load-css .leaflet-container{overflow:hidden;background:#ddd;outline:0;font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-tile{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.gogo-load-css .leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.gogo-load-css .leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow{display:block}.gogo-load-css .leaflet-container .leaflet-marker-pane img,.gogo-load-css .leaflet-container .leaflet-overlay-pane svg,.gogo-load-css .leaflet-container .leaflet-shadow-pane img,.gogo-load-css .leaflet-container .leaflet-tile-pane img,.gogo-load-css .leaflet-container img.leaflet-image-layer{max-width:none!important}.gogo-load-css .leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.gogo-load-css .leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom}.gogo-load-css .leaflet-container.leaflet-touch-drag.leaflet-touch-drag{-ms-touch-action:none;touch-action:none}.gogo-load-css .leaflet-tile{filter:inherit;visibility:hidden}.gogo-load-css .leaflet-tile-loaded{visibility:inherit}.gogo-load-css .leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.gogo-load-css .leaflet-overlay-pane svg{-moz-user-select:none}.gogo-load-css .leaflet-pane{z-index:400}.gogo-load-css .leaflet-tile-pane{z-index:200}.gogo-load-css .leaflet-overlay-pane{z-index:400}.gogo-load-css .leaflet-shadow-pane{z-index:500}.gogo-load-css .leaflet-marker-pane{z-index:600}.gogo-load-css .leaflet-tooltip-pane{z-index:650}.gogo-load-css .leaflet-popup-pane{z-index:700}.gogo-load-css .leaflet-map-pane canvas{z-index:100}.gogo-load-css .leaflet-map-pane svg{z-index:200}.gogo-load-css .leaflet-vml-shape{width:1px;height:1px}.gogo-load-css .lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.gogo-load-css .leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto;float:left;clear:both}.gogo-load-css .leaflet-bottom,.gogo-load-css .leaflet-top{position:absolute;z-index:1000;pointer-events:none}.gogo-load-css .leaflet-top{top:0}.gogo-load-css .leaflet-right{right:0}.gogo-load-css .leaflet-bottom{bottom:0}.gogo-load-css .leaflet-left{left:0}.gogo-load-css .leaflet-right .leaflet-control{float:right;margin-right:10px}.gogo-load-css .leaflet-top .leaflet-control{margin-top:10px}.gogo-load-css .leaflet-bottom .leaflet-control{margin-bottom:10px}.gogo-load-css .leaflet-left .leaflet-control{margin-left:10px}.gogo-load-css .leaflet-fade-anim .leaflet-tile{will-change:opacity}.gogo-load-css .leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity .2s linear;-moz-transition:opacity .2s linear;-o-transition:opacity .2s linear;transition:opacity .2s linear}.gogo-load-css .leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.gogo-load-css .leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform;-webkit-transition:-webkit-transform .25s cubic-bezier(0,0,.25,1);-moz-transition:-moz-transform .25s cubic-bezier(0,0,.25,1);-o-transition:-o-transform .25s cubic-bezier(0,0,.25,1);transition:transform .25s cubic-bezier(0,0,.25,1)}.gogo-load-css .leaflet-pan-anim .leaflet-tile,.gogo-load-css .leaflet-zoom-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;-o-transition:none;transition:none}.gogo-load-css .leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.gogo-load-css .leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab}.gogo-load-css .leaflet-crosshair,.gogo-load-css .leaflet-crosshair .leaflet-interactive{cursor:crosshair}.gogo-load-css .leaflet-control,.gogo-load-css .leaflet-popup-pane{cursor:auto}.gogo-load-css .leaflet-dragging .leaflet-grab,.gogo-load-css .leaflet-dragging .leaflet-grab .leaflet-interactive,.gogo-load-css .leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing}.gogo-load-css .leaflet-image-layer,.gogo-load-css .leaflet-marker-icon,.gogo-load-css .leaflet-marker-shadow,.gogo-load-css .leaflet-pane>svg path,.gogo-load-css .leaflet-tile-container{pointer-events:none}.gogo-load-css .leaflet-image-layer.leaflet-interactive,.gogo-load-css .leaflet-marker-icon.leaflet-interactive,.gogo-load-css .leaflet-pane>svg path.leaflet-interactive{pointer-events:visiblePainted;pointer-events:auto}.gogo-load-css .leaflet-container a{color:#0078A8}.gogo-load-css .leaflet-container a.leaflet-active{outline:orange solid 2px}.gogo-load-css .leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,.65);border-radius:4px}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:#000}.gogo-load-css .leaflet-bar a,.gogo-load-css .leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.gogo-load-css .leaflet-bar a:hover{background-color:#f4f4f4}.gogo-load-css .leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.gogo-load-css .leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.gogo-load-css .leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.gogo-load-css .leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.gogo-load-css .leaflet-control-zoom-in,.gogo-load-css .leaflet-control-zoom-out{font:700 18px 'Lucida Console',Monaco,monospace;text-indent:1px}.gogo-load-css .leaflet-control-zoom-out{font-size:20px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-in{font-size:22px}.gogo-load-css .leaflet-touch .leaflet-control-zoom-out{font-size:24px}.gogo-load-css .leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,.4);background:#fff;border-radius:5px}.gogo-load-css .leaflet-control-layers-toggle{background-image:url(images/layers.png);width:36px;height:36px}.gogo-load-css .leaflet-retina .leaflet-control-layers-toggle{background-image:url(images/layers-2x.png);background-size:26px 26px}.gogo-load-css .leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.gogo-load-css .leaflet-control-layers .leaflet-control-layers-list,.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.gogo-load-css .leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.gogo-load-css .leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.gogo-load-css .leaflet-control-layers-scrollbar{overflow-y:scroll;padding-right:5px}.gogo-load-css .leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.gogo-load-css .leaflet-control-layers label{display:block}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .icon,.gogo-load-css .gogo-theme-default.gogocarto-container .show-directory-menu-button .arrow-right,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .checkbox-wrapper{display:none}.gogo-load-css .leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.gogo-load-css .leaflet-default-icon-path{background-image:url(images/marker-icon.png)}.gogo-load-css .leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,.7);margin:0}.gogo-load-css .leaflet-control-attribution,.gogo-load-css .leaflet-control-scale-line{padding:0 5px;color:#333}.gogo-load-css .leaflet-control-attribution a{text-decoration:none}.gogo-load-css .leaflet-control-attribution a:hover{text-decoration:underline}.gogo-load-css .leaflet-container .leaflet-control-attribution,.gogo-load-css .leaflet-container .leaflet-control-scale{font-size:11px}.gogo-load-css .leaflet-left .leaflet-control-scale{margin-left:5px}.gogo-load-css .leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.gogo-load-css .leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,.5)}.gogo-load-css .leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.gogo-load-css .leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-attribution,.gogo-load-css .leaflet-touch .leaflet-control-layers{box-shadow:none}.gogo-load-css .leaflet-touch .leaflet-bar,.gogo-load-css .leaflet-touch .leaflet-control-layers{border:2px solid rgba(0,0,0,.2);background-clip:padding-box}.gogo-load-css .leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.gogo-load-css .leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.gogo-load-css .leaflet-popup-content{margin:13px 19px;line-height:1.4}.gogo-load-css .leaflet-popup-content p{margin:18px 0}.gogo-load-css .leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.gogo-load-css .leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-popup-tip{background:#fff;color:#333;box-shadow:0 3px 14px rgba(0,0,0,.4)}.gogo-load-css .leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma,Verdana,sans-serif;color:#c3c3c3;text-decoration:none;font-weight:700;background:0 0}.gogo-load-css .leaflet-container a.leaflet-popup-close-button:hover{color:#999}.gogo-load-css .leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.gogo-load-css .leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto}.gogo-load-css .leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.gogo-load-css .leaflet-oldie .leaflet-control-layers,.gogo-load-css .leaflet-oldie .leaflet-control-zoom,.gogo-load-css .leaflet-oldie .leaflet-popup-content-wrapper,.gogo-load-css .leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.gogo-load-css .leaflet-div-icon{background:#fff;border:1px solid #666}.gogo-load-css .leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,.4)}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value,.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .option-value{color:inherit}.gogo-load-css .leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before,.gogo-load-css .leaflet-tooltip-top:before{position:absolute;pointer-events:none;border:6px solid transparent;background:0 0;content:""}.gogo-load-css .leaflet-tooltip-bottom{margin-top:6px}.gogo-load-css .leaflet-tooltip-top{margin-top:-6px}.gogo-load-css .leaflet-tooltip-bottom:before,.gogo-load-css .leaflet-tooltip-top:before{left:50%;margin-left:-6px}.gogo-load-css .leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.gogo-load-css .leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.gogo-load-css .leaflet-tooltip-left{margin-left:-6px}.gogo-load-css .leaflet-tooltip-right{margin-left:6px}.gogo-load-css .leaflet-tooltip-left:before,.gogo-load-css .leaflet-tooltip-right:before{top:50%;margin-top:-6px}.gogo-load-css .leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.gogo-load-css .leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.gogo-load-css .leaflet-cluster-anim .leaflet-marker-icon,.gogo-load-css .leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform .3s ease-out,opacity .3s ease-in;-moz-transition:-moz-transform .3s ease-out,opacity .3s ease-in;-o-transition:-o-transform .3s ease-out,opacity .3s ease-in;transition:transform .3s ease-out,opacity .3s ease-in}.gogo-load-css .leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset .3s ease-out,-webkit-stroke-opacity .3s ease-in;-moz-transition:-moz-stroke-dashoffset .3s ease-out,-moz-stroke-opacity .3s ease-in;-o-transition:-o-stroke-dashoffset .3s ease-out,-o-stroke-opacity .3s ease-in;transition:stroke-dashoffset .3s ease-out,stroke-opacity .3s ease-in}.gogo-load-css .gogo-theme-default.gogocarto-container .moreIconContainer .moreIconWrapper{background-color:#DADAD9}.gogo-load-css .gogo-theme-default.gogocarto-container .element-item .collapsible-header-more .inline-option-values .inline-option-value:not(:last-child):after{content:",";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .top-image-container{height:90px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{border-top:none;width:calc(100% - 23px)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{background-color:#175259}@media (min-width:850px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 23px);border-radius:0 8px 8px 0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #f79900 transparent transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container{height:4rem;padding-left:.5rem;padding-right:1.4rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon{font-size:1.1rem;color:#fff!important;height:2.5rem;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:2.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar{background-color:#3bad78;border-radius:0;height:2.5rem;padding:0 3rem;width:95%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options{padding-left:14px;padding-right:2rem;padding-bottom:1.2rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-options .search-action-btn{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories{border-left:none;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content ul{padding-right:10px;padding-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item{background-color:#fff;margin-bottom:3px;padding-left:0;line-height:2.5rem;height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.disabled .icon{color:#bcbcbc!important;background-color:transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name{font-weight:500;font-size:13px;padding-left:.6rem;-webkit-transition:color .1s;-moz-transition:color .1s;-o-transition:color .1s;-ms-transition:color .1s;transition:color .1s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .arrow-after{position:absolute;right:19%;top:1.1rem;border-radius:1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .option-name:hover .arrow-after{margin-right:-1px;margin-top:-1px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name:hover .arrow-after{margin-bottom:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon{padding-top:.7rem;font-size:17px;height:3rem;width:2.5rem;margin-right:0;-webkit-transition:color .3s;-moz-transition:color .3s;-o-transition:color .3s;-ms-transition:color .3s;transition:color .3s}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-link,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item .icon.fa.fa-recycle{padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#3bad78 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #3bad78;opacity:1;top:.9rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .name-wrapper{margin-left:3rem;margin-right:0;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper{left:0;right:initial}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:after{background-color:transparent;border:none;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in+label:before{top:7px;width:9px;height:15px;border-right:3px solid #3bad78;border-bottom:3px solid #3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .subcategory-item .checkbox-wrapper [type=checkbox].filled-in:not(:checked)+label:before{border-right:3px solid #bcbcbc;border-bottom:3px solid #bcbcbc;-webkit-transition:none;-moz-transition:none;-o-transition:none;-ms-transition:none;transition:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:0!important;margin-bottom:6px;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{margin-bottom:0;line-height:2.7rem;height:2.7rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .option-name{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:.85rem;padding-top:.95rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item.disabled .icon{color:#bcbcbc!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .name-wrapper{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item.checked .icon:not(.subIcon){color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .name-wrapper,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.checked .icon{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item .subIcon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:first-child .subcategorie-option-item:not(.checked) .icon{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child [type=checkbox].filled-in:checked+label:before{top:7px;width:9px;height:15px;border-right:3px solid #f79900;border-bottom:3px solid #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item .icon{color:#175259;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:hover .subcategorie-option-checkbox+label:before{color:#f79900;border-color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name .arrow-after{border-color:#f79900 transparent transparent;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{border-color:#f79900 transparent transparent!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name .arrow-after{border-color:transparent transparent #f79900;opacity:1;top:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #main-option-all>.category-wrapper:last-child .subcategorie-option-item.expanded .option-name:hover .arrow-after{border-color:transparent transparent #f79900!important;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon{padding-top:3px;padding-left:10px;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite .option-name{color:#bcbcbc}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .icon:before,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content #filter-favorite.checked .option-name{color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu #directory-menu-main-container .sub-categories .sub-categories-content .show-only-title{color:#3bad78;padding-left:0;margin-bottom:0;border-top:none;margin-top:0;padding-top:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper{background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .iconInsideMarker-wrapper .iconInsideMarker{color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-name{color:#f1f1f1;opacity:1}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .moreIconContainer .moreIconWrapper{font-size:14px;line-height:0;padding-left:1px;box-shadow:1px 1px 4px 1px #989898}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster div{font-size:15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div{background-color:#f8ab00;width:34px;height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div{background-color:#f78b16;width:38px;height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div{background-color:#f5701e;width:44px;height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header{background-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .name{font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .element-main-icon{display:none!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#3bad78;color:#fff;border-radius:3px;padding:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item-text{display:inline-block!important;text-transform:uppercase;line-height:3rem;margin-left:10px;font-size:12px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .icon,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .info-bar-divider{display:none}@media (max-width:460px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item{margin:0 .5rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-element-item-text{font-size:11px;margin-left:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element-item .menu-icon{font-size:16px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#f3f6f4;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .description{line-height:1.3rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section{background-color:#fff;margin-top:1rem;padding-left:1rem;margin-right:.4rem;line-height:1.5rem;padding-top:.7rem;padding-bottom:.6rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy{padding:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name{background-color:#f3f6f4;margin-left:0;padding-left:1.5rem;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.section-taxonomy h3.category-name:first-child{color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .section.sectionlongDescription{margin-top:0;background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body h3{margin-left:1rem;font-weight:900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper{background-color:#f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{margin-bottom:3px;border-left:10px solid;padding-left:1rem;background-color:#fff;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .option-name{color:#175259;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{margin-right:10px;font-size:.9rem;padding-top:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .row+.category-wrapper .row:last-child .option-value{padding-bottom:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{border:none;margin-left:0;padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.9rem;margin-top:-8px;height:1.5rem;line-height:1.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name{color:inherit;margin-left:4px;line-height:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value .option-name:before{content:"➡";font-size:1.2rem;margin-right:6px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .day:after{content:"➡";font-size:1.2rem;color:#3bad78;float:right}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .sectionOpenHours .openHours{padding-left:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container{background-color:#f3f6f4;margin-top:0;padding-top:1rem;padding-left:1.5rem;margin-bottom:-10px;text-align:center}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .collapsible-body .tags-container .gogo-tag{background-color:#fff;border-radius:0;padding:4px 14px;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element{background-color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;font-weight:700;color:#e6e6e6}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values{width:calc(100% - 140px);font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:20px;display:inline-block}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .expandLabel,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon i,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .text,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button i{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:7px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{margin-right:5px;font-size:.9rem;padding-top:.6rem;background-color:transparent}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value{line-height:2rem;font-style:normal;font-weight:400}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item{margin-left:-17px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value.same-icon-as-last-item:before{content:"+";margin-right:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-features-buttons{top:140px}}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .option-value,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value:last-child{display:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .inline-option-values .inline-option-value .icon{color:#fff;border-radius:50%;font-size:.9rem;padding:10px 9px;margin-right:5px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel{width:auto;float:right;border:2px solid;color:#f79900;padding:8px 15px;text-align:center;border-radius:20px;margin-top:-3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #map-gogo-controls{width:100%}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item .expandLabel:before{margin-right:8px;color:#fff;background-color:#f79900;border-radius:50%;padding:0 4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item.active .expandLabel:before{content:"-";padding:0 6px 1px;font-weight:900;font-size:16px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .element-item:not(.active) .expandLabel:before{content:"+"}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{padding:.5rem 0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close:before{background-color:#3bad78;color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.4rem;line-height:1.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .gogo-icon-close{font-size:.9rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .collapsible-header .name{font-size:15px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{background-color:#fff;color:#f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big:hover{color:#f79900}@media only screen and (max-width:600px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item .expandLabel{margin-right:10px;font-size:13px;font-weight:900;padding:8px 10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .expandLabel.transform-big{padding:8px 10px}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #element-info-bar.display-bottom .element-item.active .collapsible-header{padding-bottom:.8rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .feature-button:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-in:hover,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom-out:hover{color:#3bad78;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers{margin-right:17px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control{text-transform:uppercase;font-weight:700;font-size:12px!important;line-height:22px;padding:5px 15px;background-color:#fff;color:#f79900;border:1px solid #d7d7d7;-webkit-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);-moz-box-shadow:1px 2px 4px 1px rgba(0,0,0,.12);box-shadow:1px 2px 4px 1px rgba(0,0,0,.12)}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .gogo-map-control .gogo-icon-list{color:inherit}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-top:60px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-as-list-button{position:absolute;right:20px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button{position:absolute;left:-20px;top:80px;background-color:#175259!important;padding:10px 10px 3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button .arrow-right{margin-bottom:10px;margin-left:4px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .show-directory-menu-button:hover .arrow-right{border-color:transparent transparent transparent #f79900}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header{background-color:#f3f6f4;color:#3bad78;text-align:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button{height:2rem;line-height:2rem;border-radius:5px;top:15px;padding:0 15px;background-color:#f79900;left:initial!important;text-transform:uppercase;text-decoration:none;font-size:.8rem;font-weight:700;float:right;margin-top:12px;margin-right:-8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{color:#fff!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{font-size:1.2rem;margin-right:10px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{top:0;left:-40px;border-radius:0 0 5px;padding-bottom:0;padding-top:6px;-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}@media (min-width:1500px){.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{left:0}}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item:not(.active){-webkit-box-shadow:none;-moz-box-shadow:none;box-shadow:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #f3f6f4}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body{border-bottom:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section{margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child{float:right;margin-right:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .inline-option-values .inline-option-value:last-child .option-value{color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element{text-align:right;padding:0 10px 0 0;height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon{font-size:18px!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.3rem!important}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .menu-element .menu-element-item-text{font-size:11px;line-height:2.5rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location{font-weight:400;color:#3bad78}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:14px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body-main-content{padding-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .collapsible-body .tags-container{margin-bottom:0;padding-bottom:1rem}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .element-item .section-taxonomy .category-wrapper:last-child .option-value:last-child{margin-bottom:0}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-content-list .collapsible.popout>li{margin-bottom:3px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-list-spinner-loader .spinner-layer{border-color:#175259}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .feature-button{margin-right:0;float:left}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-search-icon{border-radius:8px 0 0 8px;margin-right:2px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile #mobile-filters-icon{background-color:#175259;border-radius:0 8px 8px 0;padding-top:5px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-list-button,.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{color:#3bad78;border-radius:8px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #gogo-controls-mobile .show-as-map-button{background-color:#f79900!important;color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:13px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:transparent;border:none}.gogo-load-css .gogocarto-container #directory-list-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #directory-spinner-loader .spinner-layer,.gogo-load-css .gogocarto-container #info-bar-spinner-loader .spinner-layer{border-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:18px}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{border-radius:0;background-color:#fff}.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn,.gogo-load-css .gogo-theme-transiscope.gogocarto-container .btn-large{font-weight:700;box-shadow:none;border-radius:none;font-size:.9rem}.gogo-load-css .gogocarto-container{display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;height:100%;position:relative;font-size:.95rem}.gogo-load-css .gogocarto-container #directory-spinner-loader,.gogo-load-css .gogocarto-container #info-bar-spinner-loader{position:absolute;margin:auto;top:0;left:0;bottom:0;right:0;z-index:1}.gogo-load-css .gogocarto-container #directory-list-spinner-loader{position:relative;margin-top:40px;z-index:500}.gogo-load-css .gogocarto-container #directory-loading{position:absolute;width:200px;margin:auto;top:0;left:0;right:0;z-index:500;background-color:#f2b523;color:#272626;padding:.2rem 0;text-align:center}.gogo-load-css .gogocarto-container #info-bar-overlay{background-color:rgba(0,0,0,.17);z-index:10;top:0;left:0;bottom:0;right:0;position:absolute}.gogo-load-css .gogocarto-container .leaflet-routing-container,.gogo-load-css .gogocarto-container .leaflet-routing-error{border-radius:0;box-shadow:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;background-color:#fff;transition:all .2s ease;box-sizing:border-box}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide{width:32px;height:32px}.gogo-load-css .gogocarto-container .leaflet-routing-container h2{font-size:1.2rem;text-align:center;margin:1.5rem .5rem 1rem;font-weight:600}.gogo-load-css .gogocarto-container .leaflet-routing-container h2 .distance{font-weight:400;color:#5d5d5d;margin-left:5px}.gogo-load-css .gogocarto-container .leaflet-routing-container h3{font-size:.9rem;font-weight:400;text-align:center;margin:.5rem;line-height:1.5rem;padding-bottom:1.5rem;border-bottom:1px solid #888}.gogo-load-css .gogocarto-container .leaflet-routing-collapsible .leaflet-routing-geocoders{margin-top:20px}.gogo-load-css .gogocarto-container .td-leaflet-routing-icon{padding-left:15px;padding-right:5px;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-text{font-size:.9rem;vertical-align:top}.gogo-load-css .gogocarto-container .td-leaflet-routing-distance{font-size:.8rem;color:#777;font-weight:300;vertical-align:top}.gogo-load-css .gogocarto-container .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-routing-error,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders{height:100%;padding:0;font-size:.95rem;margin:0;border-bottom:1px solid #ccc;overflow-y:auto;transition:all .2s ease}.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-alt,.gogo-load-css .gogocarto-container .leaflet-control-container .leaflet-routing-container-hide .leaflet-routing-geocoders{display:none}.gogo-load-css .gogocarto-container .leaflet-bar .leaflet-routing-alt:last-child{border-bottom:none}.gogo-load-css .gogocarto-container .leaflet-routing-alt-minimized{display:none;color:#888;max-height:64px;overflow:hidden;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-alt tr:hover{background-color:#eee;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-icon{background-image:url(images/leaflet.routing.icons.png);-webkit-background-size:240px 20px;background-size:240px 20px;background-repeat:no-repeat;margin:0;content:'';display:inline-block;vertical-align:top;width:20px;height:20px}.gogo-load-css .gogocarto-container .leaflet-routing-icon-continue{background-position:0 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-right{background-position:-20px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-right{background-position:-40px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-right{background-position:-60px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-u-turn{background-position:-80px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-sharp-left{background-position:-100px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-turn-left{background-position:-120px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-bear-left{background-position:-140px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-depart{background-position:-160px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-enter-roundabout{background-position:-180px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-arrive{background-position:-200px 0}.gogo-load-css .gogocarto-container .leaflet-routing-icon-via{background-position:-220px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders div{padding:4px 0}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input{width:303px;width:calc(100% - 4px);line-height:1.67;border:1px solid #ccc}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button{font:700 18px 'Lucida Console',Monaco,monospace;border:1px solid #ccc;border-radius:4px;background-color:#fff;margin:0 3px 0 0;float:right;cursor:pointer;transition:background-color .2s ease}.gogo-load-css .gogocarto-container .leaflet-routing-add-waypoint:after{content:'+'}.gogo-load-css .gogocarto-container .leaflet-routing-reverse-waypoints:after{font-weight:400;content:'\21c5'}.gogo-load-css .gogocarto-container .leaflet-routing-geocoders button:hover{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders input,.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{position:relative}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result{font:12px/1.5 "Helvetica Neue",Arial,Helvetica,sans-serif;position:absolute;max-height:0;overflow:hidden;transition:all .5s ease;z-index:1000}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result table{width:100%;border:1px solid #ccc;border-radius:0 0 4px 4px;background-color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result-open{max-height:800px}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-result tr:hover,.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-selected{background-color:#eee}.gogo-load-css .gogocarto-container .leaflet-routing-geocoder-no-results{font-style:italic;color:#888}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint{background-color:transparent;display:inline-block;vertical-align:middle;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:after{position:absolute;display:block;width:15px;height:1px;z-index:1;right:1px;top:4px;bottom:0;margin:-16px auto auto;padding:2px 4px 16px 2px;font-size:18px;font-weight:700;content:"\00d7";text-align:center;cursor:pointer;color:#ccc;background:#fff;line-height:1}.gogo-load-css .gogocarto-container .leaflet-routing-remove-waypoint:hover{color:#000}.gogo-load-css .gogocarto-container .leaflet-routing-instruction-distance{width:4rem}.gogo-load-css .gogocarto-container .leaflet-routing-collapse-btn{display:none;position:absolute;top:0;right:6px;font-size:24px;color:#ccc;font-weight:700}.gogo-load-css .gogocarto-container #filter-moderation,.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox+label:before{color:#c53f36}.gogo-load-css .gogocarto-container .leaflet-routing-container-hide .leaflet-routing-collapse-btn{position:relative;left:4px;top:4px;display:block;width:26px;height:23px;background-image:url(routing-icon.png)}.gogo-load-css .gogocarto-container .leaflet-top .leaflet-routing-container.leaflet-routing-container-hide{margin-top:10px!important}.gogo-load-css .gogocarto-container .leaflet-right .leaflet-routing-container.leaflet-routing-container-hide{margin-right:10px!important}.gogo-load-css .gogocarto-container .leaflet-bottom .leaflet-routing-container.leaflet-routing-container-hide{margin-bottom:10px!important}.gogo-load-css .gogocarto-container .leaflet-left .leaflet-routing-container.leaflet-routing-container-hide{margin-left:10px!important}@media only screen and (max-width:640px){.gogo-load-css .gogocarto-container .leaflet-routing-container{margin:0!important;padding:0!important;width:100%;height:100%}}.gogo-load-css .gogocarto-container #filter-moderation:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-moderation .moderation-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#c53f36}.gogo-load-css .gogocarto-container #filter-pending,.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox+label:before{color:#565656}.gogo-load-css .gogocarto-container #filter-pending:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-pending .pending-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#565656}.gogo-load-css .gogocarto-container #filter-favorite{color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full{color:#fff;font-size:18px}.gogo-load-css .gogocarto-container #filter-favorite .gogo-icon-star-full:before{padding:2px 2px 3px;border:none;color:#cc8901;background-color:transparent}.gogo-load-css .gogocarto-container #filter-favorite:hover{background-color:#fff}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox:not(:checked)+label:before{background-color:transparent;border-color:#cc8901}.gogo-load-css .gogocarto-container #filter-favorite .favorite-checkbox+label:before{color:#cc8901}.gogo-load-css .gogocarto-container .sub-categories-content.no-top-divider>ul>.main-option-subcategories-container>.category-wrapper>.subcategory-item{border-top:none!important;margin-top:0!important}.gogo-load-css .gogocarto-container .category-wrapper{margin-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item{position:relative;line-height:3rem;padding-top:0;padding-left:.8rem;font-weight:700;font-size:90%;text-transform:uppercase}.gogo-load-css .gogocarto-container .subcategory-item.top-separator{border-top:2px dashed #eee;margin-top:1rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper{margin-right:3rem;height:3rem;overflow:hidden}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper .arrow-after{display:inline-block;margin-left:1rem;margin-bottom:1px;border:5px solid;border-radius:4px}.gogo-load-css .gogocarto-container .subcategory-item .name-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item:not(.expanded) .name-wrapper .arrow-after{margin-bottom:-3px!important}.gogo-load-css .gogocarto-container .subcategory-item.unexpandable .name-wrapper:hover{cursor:default;color:inherit}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:2px;bottom:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container{position:absolute;top:2px;right:0}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:after{top:9px!important;width:17px;height:17px;border:2px solid;-webkit-transition:all .3s;-moz-transition:all .3s;-o-transition:all .3s;-ms-transition:all .3s;transition:all .3s}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox+label:before{top:9px;left:1px;width:6px;height:11px}.gogo-load-css .gogocarto-container .subcategory-item .checkbox-wrapper .checkbox-container .subcategorie-checkbox:not(:checked)+label:after{background-color:transparent}.gogo-load-css .gogocarto-container .subcategorie-option-item{position:relative;margin-bottom:0;line-height:2.8rem;padding:0 0 0 .8rem;height:2.8rem;overflow:hidden;text-overflow:ellipsis}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name:hover .arrow-after{margin-bottom:-5px}.gogo-load-css .gogocarto-container .subcategorie-option-item:not(.expanded) .option-name .arrow-after{margin-bottom:-4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper{margin-right:3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name{position:absolute;width:100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .gogo-icon-name-wrapper .option-name:hover .arrow-after{border:6px solid;margin-bottom:1px}.gogo-load-css .gogocarto-container .subcategorie-option-item .arrow-after{display:inline-block;margin-left:1rem;border:5px solid;margin-bottom:1px;border-radius:4px}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon{font-size:1.3rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:13px;height:13px;left:2px;top:3px;z-index:0;border:2px solid #5a5a5a;-webkit-border-radius:50%;-moz-border-radius:50%;border-radius:50%;margin-top:2px}.gogo-load-css .gogocarto-container .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{top:2px;left:1px;width:7px;height:13px;border-color:#3D3D3D;border-top:none;border-left:none;border-right:2px solid;border-bottom:2px solid;border-radius:0;-webkit-transform:rotate(40deg);-moz-transform:rotate(40deg);-ms-transform:rotate(40deg);-o-transform:rotate(40deg);transform:rotate(40deg);-webkit-backface-visibility:hidden;-webkit-transform-origin:100% 100%;-moz-transform-origin:100% 100%;-ms-transform-origin:100% 100%;-o-transform-origin:100% 100%;transform-origin:100% 100%}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper{width:3rem;position:absolute;right:0;top:0;bottom:0;background:-moz-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:-webkit-linear-gradient(left,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);background:linear-gradient(to right,rgba(255,255,255,.3) 0,rgba(255,255,255,.48) 25%,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#4dffffff', endColorstr='#ffffff', GradientType=1 )}.gogo-load-css .gogocarto-container .subcategorie-option-item .checkbox-wrapper .checkbox-container{position:absolute;top:.6rem;right:0}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover{background-color:#f0f0f0;cursor:pointer}.gogo-load-css .gogocarto-container .subcategorie-option-item:hover .checkbox-wrapper{background:0 0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1.3rem;border-left:1px dotted #c3c3c3;margin-bottom:15px;margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .category-wrapper{margin-top:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item{font-size:85%;line-height:2.5rem;margin-top:0;padding-top:0;padding-left:.9rem;margin-bottom:0}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:after{width:15px;height:15px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .subcategorie-checkbox+label:before{width:5px;height:9px;top:9px;left:2px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .name-wrapper{height:2.5rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper{top:7px;right:-1px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategory-item .checkbox-wrapper .checkbox-container{top:-4px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item{font-size:95%;line-height:2.4rem;height:2.4rem;padding-left:1rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon{font-size:1.2rem;padding-top:1px;margin-right:.8rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .icon.fa{font-size:1.1rem;padding-top:.7rem}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox+label:before{width:10px;height:10px;left:3px}.gogo-load-css .gogocarto-container .category-wrapper .subcategories-wrapper:not(.no-withdrawal) .subcategorie-option-item .subcategorie-option-checkbox:checked+label:before{width:6px;height:10px;left:2px}.gogo-load-css .gogocarto-container #directory-menu.small-width{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item .arrow-after{margin-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .icon{margin-right:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .subcategories-wrapper:not(.no-withdrawal){margin-left:1rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories{width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon{height:3.4rem;width:3rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .main-categories .icon:before{left:.6rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories .sub-categories-content{padding-right:0}.gogo-load-css .gogocarto-container #directory-menu.small-width .sub-categories:not(.with-left-border) .sub-categories-content{padding-left:.2rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategory-item{padding-left:.6rem;font-size:.9rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .subcategorie-option-item{padding-left:.5rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategory-item{padding-left:.7rem}.gogo-load-css .gogocarto-container #directory-menu.small-width .category-wrapper .category-wrapper .subcategorie-option-item{padding-left:.6rem}.gogo-load-css .gogocarto-container #directory-menu .filter-menu{width:100%;height:auto;position:relative;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row nowrap;-webkit-flex-flow:row nowrap;flex-flow:row nowrap;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .filter-menu{height:100%}}.gogo-load-css .gogocarto-container #directory-menu .main-categories{width:3.5rem;padding-top:.6rem;height:100%}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon{padding-top:0}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:not(.active) .main-icon-text{transform:rotateZ(-45deg);opacity:.8}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon:hover .main-icon-text{opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-icon .main-icon-text{text-transform:uppercase;-webkit-transition:transform .2s;-moz-transition:transform .2s;-o-transition:transform .2s;-ms-transition:transform .2s;transition:transform .2s;font-size:.85rem;font-weight:700;color:#fff;opacity:1}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon{width:3.5rem;height:3.5rem;line-height:3.5rem;margin:0;padding-right:8px;text-align:center;position:relative}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon .main-option-tooltip{display:none}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:before{position:absolute;top:1rem;left:.8rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon:not(.active):hover .main-option-tooltip{display:block;position:absolute;left:4rem;top:.5rem;height:2.5rem;line-height:2.5rem;z-index:100;width:14rem;color:#efefef;font-size:1rem;border-radius:5px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.active{color:#fff;padding-right:8px}.gogo-load-css .gogocarto-container #directory-menu .main-categories .main-gogo-icon-background{position:absolute;top:.6rem;border-radius:0 50% 50% 0}.gogo-load-css .gogocarto-container #directory-menu #main-option-all.show-one-pane-per-main-option .gogo-icon-name-wrapper:hover:after{content:"+";font-size:1.4rem;font-weight:400;background-color:#eee;padding:3px 11px;border-radius:3px;margin-left:5px;line-height:1rem;position:absolute;right:10px;z-index:10;top:11px}.gogo-load-css .gogocarto-container #directory-menu .secondary-filters{padding:.5rem 0 0;height:auto;border-top:2px dashed #eee;margin-top:1rem}.gogo-load-css .gogocarto-container #directory-menu .sub-categories{-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;padding-left:7px;padding-right:4px;background-color:#eee}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{height:3rem;line-height:3rem;font-weight:700;text-align:center}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categorie-main-title{font-size:1.2rem}}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content{height:calc(100% - 3rem);-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;padding-right:5px;padding-top:0;background-color:#fff}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content.full-height{height:100%}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul{height:100%;margin:0;border:0;box-shadow:none;padding-bottom:2rem;overflow-y:auto;overflow-x:hidden}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions{background-color:#f7f7f7}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header{width:100%;border-radius:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-header .directions-header h3{font-size:1rem;text-align:left;text-transform:uppercase;padding-left:1rem;color:#fff;font-weight:600;line-height:3rem;margin:0}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content .filter-menu{display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container.directions .directory-menu-content #directory-menu-spinner-loader{display:block}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directions-header{display:none;position:relative}.gogo-load-css .gogocarto-container #directory-menu{z-index:998;overflow-y:hidden;-webkit-transition:height .5s;-moz-transition:height .5s;-o-transition:height .5s;-ms-transition:height .5s;transition:height .5s;-webkit-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);-moz-box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2);box-shadow:4px 0 2px rgba(0,0,0,.2),-1px 0 2px rgba(0,0,0,.2)}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-menu{overflow:visible}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column;-webkit-flex-flow:column;flex-flow:column;width:100%;height:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .menu-top-image{width:100%}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:100%;z-index:2;position:relative;-webkit-transition:all .5s;-moz-transition:all .5s;-o-transition:all .5s;-ms-transition:all .5s;transition:all .5s}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container{overflow:scroll}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .search-bar-container{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{position:absolute;right:0;top:0;width:24px;bottom:0;-webkit-flex-align:center;-ms-flex-align:center;-webkit-align-items:center;align-items:center;display:none}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen .arrow-left{border:8px solid;border-color:transparent #eee transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen:hover .arrow-left{border-color:transparent #fff transparent transparent}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader{position:relative}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close{position:absolute;margin:0;right:0;top:7px;padding:0 1rem;z-index:50;color:#CECECE}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .subheader .btn-close:hover{color:#fff;cursor:pointer}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header{width:calc(100% + 12px);border-radius:0 0 5px 5px;padding-right:15px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.large-screen{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-header .btn-close-menu.small-screen{display:none}}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .shadow-bottom{bottom:-8px;border-top:none;width:calc(100% - 12px)}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content{display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;position:relative;height:100px}.gogo-load-css .gogocarto-container #directory-menu #directory-menu-main-container .directory-menu-content #directory-menu-spinner-loader{top:40%;left:40%;position:absolute;display:none}.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{color:#fff;text-transform:uppercase;width:100%;border-radius:0;text-align:center;line-height:2.5rem;z-index:10;box-shadow:1px -2px 11px 2px rgba(0,0,0,.25)}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu .btn-close-menu.small-screen{display:none}.gogo-load-css .gogocarto-container .directory-menu-drag-target{display:none!important}}.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,.5);z-index:997;will-change:opacity}@media (min-width:850px){.gogo-load-css .gogocarto-container #directory-menu-overlay{display:none!important}}.gogo-load-css .gogocarto-container .directory-menu-drag-target{height:100%;width:10px;position:fixed;top:0;z-index:999}.gogo-load-css .gogocarto-container .cluster{z-index:2}.gogo-load-css .gogocarto-container .icon{font-size:1.4rem;padding-top:3px;float:left;margin-right:1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .icon{padding-top:2px}}.gogo-load-css .gogocarto-container .icon.disabled{color:#DFDFDF}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa{font-size:1.2rem}.gogo-load-css .gogocarto-container #directory-menu .main-categories .icon.main-icon.fa:before{position:relative;left:0;top:0}.gogo-load-css .gogocarto-container .icon.fa{padding-top:.5rem;font-size:1.3rem}.gogo-load-css .gogocarto-container .element-main-icon.icon.fa{padding-top:4px}.gogo-load-css .gogocarto-container .iconInsideMarker.fa{padding-top:0}.gogo-load-css .gogocarto-container .filter-menu .icon.fa{padding-top:.7rem;width:1.5rem;text-align:center;font-size:1.2rem}.gogo-load-css .gogocarto-container .leaflet-marker-container{width:0!important;height:0!important;margin:0!important}.gogo-load-css .gogocarto-container .leaflet-marker-container:hover{z-index:10000000!important}.gogo-load-css .gogocarto-container .marker-name{position:absolute;white-space:nowrap;opacity:.9;font-size:1rem;font-family:Roboto,sans-serif;border-radius:5px;padding:5px 10px;bottom:55px;left:-30px;color:#dadada}.gogo-load-css .gogocarto-container .marker-wrapper{position:absolute;z-index:1;height:40px;width:40px;bottom:0;right:-20px;font-size:40px;line-height:40px;opacity:.99}.gogo-load-css .gogocarto-container .marker-wrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper.BigSize{z-index:10000!important;-webkit-transform:scale(1.3,1.3);-moz-transform:scale(1.3,1.3);-ms-transform:scale(1.3,1.3);-o-transform:scale(1.3,1.3);transform:scale(1.3,1.3);bottom:5px!important}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .marker-wrapper.BigSize .iconInsideMarker-wrapper{left:6px!important}}.gogo-load-css .gogocarto-container .marker-wrapper:hover{cursor:pointer}.gogo-load-css .gogocarto-container .marker-wrapper .gogo-icon-marker{height:inherit;line-height:inherit;color:inherit;position:absolute;z-index:1;background-image:url(images/marker-shadow.png);background-position:8px;background-repeat:no-repeat;width:50px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container{position:absolute;top:-8px;z-index:3;font-size:14px;right:19px;color:#d9dad9}.gogo-load-css .gogocarto-container .iconInsideMarker.disabled,.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper.disabled{color:grey!important}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp{float:right}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2{font-size:12px}.gogo-load-css .gogocarto-container .marker-wrapper .mini-icon-stamp-container .mini-icon-stamp.gogo-icon-stamp-2:before{padding:2px 1px 2px 2px}.gogo-load-css .gogocarto-container .iconInsideMarker-wrapper{position:relative;left:7px;z-index:2;text-align:center;width:26px;height:26px;background-color:#DADADA;border-radius:50%;top:4px;font-size:18px;line-height:28px}.gogo-load-css .gogocarto-container :-moz-any(.iconInsideMarker-wrapper){top:3px}.gogo-load-css .gogocarto-container .iconInsideMarker{line-height:26px}.gogo-load-css .gogocarto-container .iconInsideMarker:before{line-height:inherit}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle{position:absolute;top:-7px;z-index:3;font-size:16px;right:-7px}.gogo-load-css .gogocarto-container .gogo-icon-plus-circle:before{border-radius:50%;background-color:#F1F1F1}.gogo-load-css .gogocarto-container .gogo-icon-star-full:before{border-radius:50%;padding:1px 1px 2px;background-color:#cc8901;border:1px solid}.gogo-load-css .gogocarto-container .moreIconContainer{display:none;z-index:10;position:absolute;bottom:-10px;left:30px}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper{display:inline-block;margin-left:3px;bottom:10px;position:absolute;width:28px;height:28px;font-size:16px;line-height:26px;text-align:center;border:3px solid;border-radius:50%;z-index:10}.gogo-load-css .gogocarto-container .moreIconContainer .moreIconWrapper .iconInsideMarker{line-height:22px}.gogo-load-css .gogocarto-container .halfHidden{opacity:.6}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper{right:-8px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-wrapper.BigSize{right:-4px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-marker{-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg);transform:rotate(-45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .iconInsideMarker-wrapper{left:6px!important;width:25px;height:25px;top:9px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateLeft .marker-name{bottom:47px;left:-50px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper{right:-35px;bottom:-6px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-wrapper.BigSize{right:-39px;bottom:-2px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-marker{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg);transform:rotate(45deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .iconInsideMarker-wrapper{left:11px!important;width:25px;height:25px;top:1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateRight .marker-name{bottom:47px;left:-10px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper{right:-13px;bottom:-1px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-wrapper.BigSize{right:-10px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-marker{-webkit-transform:rotate(-25deg);-moz-transform:rotate(-25deg);-ms-transform:rotate(-25deg);-o-transform:rotate(-25deg);transform:rotate(-25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .iconInsideMarker-wrapper{right:6px!important;width:25px;height:25px;top:7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .gogo-icon-plus-circle{top:-7px;right:-7px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftLeft .marker-name{bottom:51px;left:-44px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper{right:-30px;bottom:-2px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-wrapper.BigSize{right:-33px;bottom:4px!important}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-marker{-webkit-transform:rotate(25deg);-moz-transform:rotate(25deg);-ms-transform:rotate(25deg);-o-transform:rotate(25deg);transform:rotate(25deg)}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .iconInsideMarker-wrapper{left:9px!important;width:25px;height:25px;top:3px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .gogo-icon-plus-circle{top:-7px;right:-8px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .moreIconContainer{left:30px}.gogo-load-css .gogocarto-container .leaflet-marker-container.rotateSoftRight .marker-name{bottom:56px;left:-10px}.gogo-load-css .gogocarto-container .marker-cluster div{margin-left:5px;margin-top:5px;text-align:center;border-radius:50%;font-size:13px;font-weight:600;color:#fff;box-shadow:4px -2px 5px 0 rgba(167,167,167,.56)}.gogo-load-css .gogocarto-container .marker-cluster.halfHidden{opacity:.6!important}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div{width:34px;height:34px;background-color:rgba(243,165,48,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-small div span{line-height:34px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div{width:38px;height:38px;background-color:rgba(235,123,45,.92)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-medium div span{line-height:38px}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div{width:44px;height:44px;background-color:rgba(210,77,26,.88)}.gogo-load-css .gogocarto-container .marker-cluster.marker-cluster-large div span{line-height:44px}.gogo-load-css .gogocarto-container #markerDirectionResult{text-align:center;position:relative;z-index:10000;width:auto;padding:.5rem;margin-top:-10px;font-size:.9rem}.gogo-load-css .gogocarto-container #markerDirectionResult .duration{font-weight:700}.gogo-load-css .gogocarto-container .arrow_box{position:relative;background:#eee;border:1px solid #a8b6a0}.gogo-load-css .gogocarto-container .arrow_box:after,.gogo-load-css .gogocarto-container .arrow_box:before{top:100%;left:50%;border:solid transparent;content:" ";height:0;width:0;position:absolute;pointer-events:none}.gogo-load-css .gogocarto-container .arrow_box:after{border-color:rgba(238,238,238,0);border-top-color:#eee;border-width:7px;margin-left:-7px}.gogo-load-css .gogocarto-container .arrow_box:before{border-color:rgba(168,182,160,0);border-top-color:#a8b6a0;border-width:8px;margin-left:-8px}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-in{font-size:18px!important;color:#3d3d3d}.gogo-load-css .gogocarto-container a.leaflet-control-zoom-out{font-size:25px!important;font-weight:400;color:#3d3d3d;text-indent:0}.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{margin-right:22px;margin-top:20px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .leaflet-control-zoom.leaflet-bar.leaflet-control{display:none}}.gogo-load-css .gogocarto-container #map-gogo-controls{display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-gogo-controls{display:block;position:absolute;z-index:500;left:15px;top:12px}.gogo-load-css .gogocarto-container .show-as-list-button:after{content:"Afficher sous forme de liste"}}.gogo-load-css .gogocarto-container .show-directory-menu-button{left:15px;color:#fff}.gogo-load-css .gogocarto-container .show-directory-menu-button .arrow-right{display:inline-block;border:8px solid;border-color:transparent transparent transparent #eee}.gogo-load-css .gogocarto-container .show-directory-menu-button i{margin-right:5px!important}.gogo-load-css .gogocarto-container .show-as-list-button{background-color:#fff}.gogo-load-css .gogocarto-container .gogo-map-control{margin-right:15px;display:inline-block;line-height:1.5;font-family:Roboto,sans-serif;font-weight:400;font-size:14px!important;padding:5px 10px;-webkit-box-shadow:2px 3px 1px rgba(0,0,0,.25);-moz-box-shadow:2px 3px 1px rgba(0,0,0,.25);box-shadow:2px 3px 1px rgba(0,0,0,.25);cursor:pointer;text-align:center;border:1px dashed #a5a5a5;border-radius:5px}.gogo-load-css .gogocarto-container .gogo-map-control:hover{cursor:pointer}.gogo-load-css .gogocarto-container .gogo-map-control i{font-size:1rem;float:left;line-height:1rem;padding-top:3px;margin-right:10px}.gogo-load-css .gogocarto-container #map-features-buttons{position:absolute;top:20px;z-index:500;right:20px;width:50px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #map-features-buttons{width:33px;top:100px}}.gogo-load-css .gogocarto-container .feature-button{position:relative;background-color:#fff;color:#3d3d3d;margin-bottom:13px;text-align:center;width:50px;border-radius:50%;height:50px;border:none;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container .feature-button:hover{cursor:pointer;background-color:#f4f4f4}.gogo-load-css .gogocarto-container .feature-button i{font-size:22px;line-height:55px}.gogo-load-css .gogocarto-container .feature-button i.gogo-icon-list{font-size:18px}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .feature-button{width:33px;height:33px;border-radius:4px}.gogo-load-css .gogocarto-container .feature-button i{font-size:18px;line-height:39px}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:.5rem}}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel{z-index:10000;background-color:transparent;color:#888}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel:hover{background-color:transparent;color:#616161}.gogo-load-css .gogocarto-container .feature-button#close-layers-panel i{font-size:16px;line-height:44px;margin-left:2px}.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn i{font-size:14px}@media screen and (max-width:600px){.gogo-load-css .gogocarto-container .feature-button#change-layers,.gogo-load-css .gogocarto-container .feature-button#export-iframe-btn,.gogo-load-css .gogocarto-container .feature-button#map-default-view-btn{display:none}}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container .feature-button#geolocalize-btn{display:none}}.gogo-load-css .gogocarto-container .leaflet-control-layers-toggle{display:none}.gogo-load-css .gogocarto-container .leaflet-control-layers{padding:0!important;display:none;position:relative;z-index:600;margin-right:19px!important;margin-top:15px!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-list{display:block!important;padding:5px 25px 10px 15px;position:relative!important}.gogo-load-css .gogocarto-container .leaflet-control-layers-selector:checked+span{font-weight:700}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label{text-transform:uppercase;padding-top:4px;line-height:1.4rem;border-bottom:1px dashed #ccc}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:hover{background-color:#f4f4f4;cursor:pointer}.gogo-load-css .gogocarto-container .leaflet-control-layers-base label:last-child{border:none}.gogo-load-css .gogocarto-container #element-info-bar{height:0;z-index:600;position:absolute;will-change:height;-webkit-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);-moz-box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);box-shadow:0 -8px 8px -5px rgba(173,173,173,.75);background-color:#F7F7F7}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom{right:0!important;bottom:0!important;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside{top:0;right:0;height:100%!important;-webkit-transition:top .5s;-moz-transition:top .5s;-o-transition:top .5s;-ms-transition:top .5s;transition:top .5s;overflow-y:visible;-webkit-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);-moz-box-shadow:0 6px 9px 2px rgba(119,119,119,.75);box-shadow:0 6px 9px 2px rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #element-info-bar.display-aside.with-search-result-header{top:3rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-main-icon,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .star-names-icons{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close{padding-left:1rem;color:#CECECE!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .gogo-icon-close:hover{color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails{display:block!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .moreDetails.tabs{display:flex!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside #element-info .hideOnLargeScreen{display:none!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .element-main-icon{display:none}.gogo-load-css .gogocarto-container #element-info-bar .element-item .star-names-icons,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .element-main-icon{display:block}.gogo-load-css .gogocarto-container #element-info-bar #element-info .moreDetails,.gogo-load-css .gogocarto-container #element-info-bar.inside-normal-mode .star-names-icons{display:none}.gogo-load-css .gogocarto-container #element-info-bar #element-info{margin-bottom:3rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close{float:right;margin:-.9rem -1.5rem -1rem 0;font-size:1.2rem;padding:1rem 1.5rem}.gogo-load-css .gogocarto-container #element-info-bar .gogo-icon-close:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-map{position:relative;z-index:10;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;-webkit-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);-moz-box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75);box-shadow:inset 0 5px 5px 0 rgba(119,119,119,.75)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:block;position:relative;width:100%;line-height:3.5rem;text-align:right;padding:0 1rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{display:none!important}}@media (min-width:900px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:3rem;padding-right:calc(3rem + 20px)}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header #list-title-shadow-bottom{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{float:left;z-index:200;height:100%;text-decoration:underline}@media only screen and (min-width:1201px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:9rem!important}}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:hover{cursor:pointer}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button .btn-back{color:inherit!important;height:2rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:none!important}}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button{left:2rem}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-as-map-button:after{content:"Retour à la carte"}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{display:block;float:left;position:relative;margin-right:2rem;margin-left:-1rem;width:auto;top:.6rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .element-list-header{padding-left:10rem;padding-right:calc(10rem + 20px)}.gogo-load-css .gogocarto-container #directory-content-list .element-list-header .show-directory-menu-button{position:absolute;top:12px;left:15px;margin-left:0;bottom:initial;width:auto}}.gogo-load-css .gogocarto-container .no-result-message img{margin-top:1rem;width:350px;padding:0 2rem;border-radius:100px}.gogo-load-css .gogocarto-container #directory-content-list{display:none;z-index:650;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;width:100%;overflow:auto;border-left:none;height:100%}.gogo-load-css .gogocarto-container #directory-content-list .elements-container{position:relative;padding-bottom:100px;height:100%;width:100%;overflow-y:scroll;margin:0;padding-left:0;padding-right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{height:calc(100% - 3.5rem)}}@media only screen and (min-width:901px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:3rem;padding-right:3rem}}@media (min-width:1500px){.gogo-load-css .gogocarto-container #directory-content-list .elements-container{padding-left:10rem;padding-right:10rem}}.gogo-load-css .gogocarto-container #directory-content-list .elements-container.custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container #directory-content-list .elements-container.leaflet-routing-geocoders::-webkit-scrollbar{width:14px}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .bottom-gradient{position:fixed;height:5rem;bottom:0;width:100%;z-index:700;background:-moz-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:-webkit-linear-gradient(top,rgba(255,255,255,0) 0,#fff 100%);background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%);filter:progid:DXImageTransform.Microsoft.gradient( startColorstr='#00ffffff', endColorstr='#ffffff', GradientType=0 )}.gogo-load-css .gogocarto-container #directory-content-list .elements-container .no-result-message{text-align:center;margin-top:3rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item .gogo-icon-close{display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item .distance{margin-right:0;margin-left:6px}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location{display:inline-block;float:right;margin-left:1rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .location .postalCode{font-size:.95rem}.gogo-load-css .gogocarto-container #directory-content-list .element-item .expandLabel{background-color:transparent!important}.gogo-load-css .gogocarto-container #directory-content-list .element-item .collapsible-header{border-bottom:1px solid #abaaaa;background-color:#fff}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout,.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li{margin:0}.gogo-load-css .gogocarto-container #directory-content-list .collapsible.popout>li.active{margin:1rem 0}.gogo-load-css .gogocarto-container #directory-content-list .spinner-loader{-webkit-box-ordinal-group:1000000;-moz-box-ordinal-group:1000000;-ms-flex-order:1000000;-webkit-order:1000000;order:1000000}.gogo-load-css .gogocarto-container #directory-content-list .info-bar-tabs,.gogo-load-css .gogocarto-container #directory-content-list .menu-element{position:relative;display:none}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .menu-element{display:block}.gogo-load-css .gogocarto-container #directory-content-list .element-item.active .info-bar-tabs{display:flex}.gogo-load-css .gogocarto-container #directory-content-list .img-overlay{max-height:20rem;overflow:hidden}.gogo-load-css .gogocarto-container #directory-content-list .img-container{max-height:20rem;background-color:#F7F7F7}.gogo-load-css .gogocarto-container #gogo-controls-mobile{position:absolute;z-index:900;left:15px;top:15px;right:0}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none!important}}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button{display:inline-block;margin-right:15px}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.gogo-bg-primary{color:#fff}.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-list-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile .feature-button.show-as-map-button{float:right;display:none}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container #gogo-controls-mobile{display:none}}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .show-as-map-button,.gogo-load-css .gogocarto-container #gogo-controls-mobile.map .show-as-list-button{display:block}.gogo-load-css .gogocarto-container #gogo-controls-mobile.list .feature-button{-webkit-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);-moz-box-shadow:1px 2px 8px 1px rgba(0,0,0,.4);box-shadow:1px 2px 8px 1px rgba(0,0,0,.4)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile{display:none;z-index:10;position:relative;background-color:#fff;margin:15px;border-radius:3px;-webkit-box-shadow:0 2px 6px rgba(0,0,0,.3);-moz-box-shadow:0 2px 6px rgba(0,0,0,.3);box-shadow:0 2px 6px rgba(0,0,0,.3)}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-container{height:52px;padding:0}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar{height:100%;padding:0 4rem}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon{font-size:22px;line-height:57px;height:56px;width:56px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-bar-icon{left:-2px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-icon.search-geolocalize{right:0;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-bar-icon{left:3px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-geolocalize{right:5px;font-size:24px!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-options{display:block!important;padding:0 15px 12px}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile #search-spinner-loader .spinner-layer{border-color:#fff!important}.gogo-load-css .gogocarto-container #search-overlay-mobile .search-bar-with-options-container.mobile .search-no-result{color:inherit;font-size:13px;padding-bottom:1rem}.gogo-load-css .gogocarto-container #search-overlay-mobile{display:none;position:absolute;top:0;left:0;right:0;bottom:0;z-index:1000}.gogo-load-css .gogocarto-container #search-overlay-mobile .overlay{position:absolute;top:0;left:0;right:0;bottom:0;z-index:1;background-color:rgba(0,0,0,.5)}.gogo-load-css .gogocarto-container .search-results{background-color:rgba(0,0,0,.4);position:relative;line-height:3rem;top:0;z-index:800;width:100%;padding:0 0 0 10px;-webkit-transition:background-color .5s;-moz-transition:background-color .5s;-o-transition:background-color .5s;-ms-transition:background-color .5s;transition:background-color .5s}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results{position:relative;padding-left:28px}}.gogo-load-css .gogocarto-container .search-results .btn-close{position:absolute;margin:0;right:0;top:3px;padding:0 1rem;z-index:50;color:#fff}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .search-results .btn-close{right:12px}}.gogo-load-css .gogocarto-container .search-results .btn-close:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .search-results .search-result-label{color:#fff;font-weight:700}.gogo-load-css .gogocarto-container .search-results .search-result-value{font-style:italic}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container{height:3.5rem;padding:.7rem .7rem 0;text-align:center;margin:0}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon{position:absolute;font-size:1.2rem;color:#777;height:2rem;line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:before{line-height:2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon:hover{cursor:pointer}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-bar-icon{left:1.2rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-icon.search-geolocalize{right:1.4rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{font-size:16px;padding:0 2.3rem 0 2.2rem;box-shadow:none!important;margin:0;text-align:left;font-weight:700;height:2rem;width:100%;border:none!important;background-color:#fff;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}@media (min-width:850px){.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar{text-transform:uppercase;font-size:.8rem}}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar.invalid{border-color:#B90303!important}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-webkit-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar::-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-ms-input-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-bar-container .search-bar:-moz-placeholder{color:#949494}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options{padding:0 .7rem .7rem}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label{color:#ececec;font-size:.9rem;line-height:2.2rem;padding-left:27px;margin-right:13px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:before{border:2px solid #e0e0e0;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options label.search-option-radio-label:after{border:2px solid #dedede;background-color:#dedede;top:3px;width:14px;height:14px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options .search-action-btn{float:right;font-size:.85rem;height:1.8rem;line-height:1.8rem;padding:0 10px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader{height:12px;width:12px;top:1px;margin-left:5px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .spinner-layer{border-color:#5d5d5d}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-options #search-spinner-loader .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .search-bar-with-options-container .search-no-result{color:#fff;padding-bottom:.7rem;text-decoration:underline;text-align:center;font-weight:700}.gogo-load-css .gogocarto-container #directory-menu-main-container .search-action-btn{background-color:#ddd;color:#272626}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options{padding-left:7px}.gogo-load-css .gogocarto-container #directory-menu.small-width .search-options label.search-option-radio-label{margin-right:0}.gogo-load-css .gogocarto-container .element-item{list-style-type:none;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container .element-item #element-info-bar.display-aside .menu-element{height:auto}.gogo-load-css .gogocarto-container .element-item .menu-element{z-index:10;position:absolute;bottom:0;text-align:center;width:100%}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item-text{display:none}.gogo-load-css .gogocarto-container .element-item .menu-element:not(.full-text){height:3rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding:.3rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 10px -.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text{padding-top:0}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 6px -.9rem}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item{margin:0 .8rem -.5rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{display:inline;text-transform:uppercase;font-size:.75rem;line-height:3rem;margin-left:.5rem}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:10px}}@media (min-width:1400px){.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text{font-size:.8rem}}.gogo-load-css .gogocarto-container .element-item .menu-element.full-text .menu-element-item-text.favorite{color:#ffab00}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item{display:inline-block;color:#CECECE;margin:0 1rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item:hover{color:#fff;cursor:pointer}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item a{color:inherit}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:20px;float:left}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:18px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:2.8rem}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .gogo-icon-star-full:before{padding:2px 2px 3px;border:none}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item.item-stamp.filled{color:#ffab00;font-weight:700}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 .8rem;position:relative;line-height:3rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon{font-size:22px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon.small-icon{font-size:20px}.gogo-load-css .gogocarto-container .element-item .menu-element .menu-element-item .menu-icon:before{line-height:3rem}.gogo-load-css .gogocarto-container .element-item .interactive-section{padding:0 1rem 0 1.6rem}}.gogo-load-css .gogocarto-container .element-item .interactive-section>div{position:relative}.gogo-load-css .gogocarto-container .element-item .interactive-section .result-message{text-align:center;font-weight:700;color:#fff;line-height:1.7rem;padding:.6rem 0}.gogo-load-css .gogocarto-container .element-item #directory-content-list .interactive-section{display:none}.gogo-load-css .gogocarto-container .element-item #directory-content-list .element-item.active .interactive-section{display:block}.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-moderation,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-moderation{color:#fff;font-size:20px;padding-top:3px;position:absolute}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container .element-item .moderation-section .gogo-icon-attention,.gogo-load-css .gogocarto-container .element-item .vote-section .gogo-icon-attention{display:none}.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{margin-left:0!important}}@media (max-width:460px){.gogo-load-css .gogocarto-container .element-item .moderation-section .long-text,.gogo-load-css .gogocarto-container .element-item .vote-section .long-text{display:none}}@media (max-width:360px){.gogo-load-css .gogocarto-container .element-item .moderation-section .pending-text,.gogo-load-css .gogocarto-container .element-item .vote-section .pending-text{opacity:0}}.gogo-load-css .gogocarto-container .element-item .moderation-section .text,.gogo-load-css .gogocarto-container .element-item .vote-section .text{margin-left:2.2rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .btn-vote-more-info,.gogo-load-css .gogocarto-container .element-item .vote-section .btn-vote-more-info{line-height:1.2rem;position:absolute;top:14px;right:90px;padding:0;font-size:.85rem;color:#fff}.gogo-load-css .gogocarto-container .element-item .moderation-section .action-btn,.gogo-load-css .gogocarto-container .element-item .vote-section .action-btn{position:absolute;right:0;top:8px;margin:0;background-color:#dedede;color:#272626;font-size:.85rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment{color:#fff;border-color:#ccc!important;height:2.2rem}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-webkit-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-webkit-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment::-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment::-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-ms-input-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-ms-input-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .moderation-section .moderation-input-comment:-moz-placeholder,.gogo-load-css .gogocarto-container .element-item .vote-section .moderation-input-comment:-moz-placeholder{color:#ccc}.gogo-load-css .gogocarto-container .element-item .validation-process-info:hover{cursor:help;border-bottom:1px dashed;border-color:inherit;text-decoration:none}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description:hover,.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs .tab a{cursor:pointer}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .strong,.gogo-load-css .gogocarto-container .element-item .collapsible-header a{text-decoration:underline}.gogo-load-css .gogocarto-container .element-item #element-info-bar.small-width .btn-vote-more-info{display:none}.gogo-load-css .gogocarto-container .element-item .label{display:inline;padding:.2em .6em .3em;font-size:75%;font-weight:700;line-height:1;color:#fff;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25em}.gogo-load-css .gogocarto-container .element-item .label-danger{background-color:#d9534f}.gogo-load-css .gogocarto-container .element-item .label-success{background-color:#00a65a}.gogo-load-css .gogocarto-container .element-item .label-default{background-color:#d2d6de;color:#444}.gogo-load-css .gogocarto-container .element-item .element-item .contributions{border:none;box-shadow:none}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header{color:inherit;background-color:transparent;border:none;box-shadow:none;line-height:2rem;padding:15px 0;border-bottom:1px solid grey}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-status{float:left}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-header .contribution-updated-at{float:right}.gogo-load-css .gogocarto-container .element-item .element-item .contributions .contribution-body{color:inherit}.gogo-load-css .gogocarto-container .element-item .info-bar-tabs.tabs{z-index:40}.gogo-load-css .gogocarto-container .element-item .item-container{border-bottom:1px dashed grey;padding-bottom:5px;margin-bottom:5px}.gogo-load-css .gogocarto-container .element-item .vote-report-item{line-height:1.5rem!important;padding:10px}.gogo-load-css .gogocarto-container .element-item .pending-contribution{margin-bottom:-.9rem;line-height:1.5rem!important;margin-top:.8rem;padding:10px}.gogo-load-css .gogocarto-container .element-item .vote-report-comment{font-style:italic}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content{display:none;padding-right:10px;font-size:.9em}.gogo-load-css .gogocarto-container .element-item .body-admin-tab-content .vote-report-item{padding:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-header{padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-header i{margin-right:0;padding-left:.3rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{position:relative;margin-bottom:0;overflow:hidden;text-overflow:ellipsis;line-height:2rem;padding:.5rem 0;font-weight:700}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title{padding:1rem 1rem .5rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .distance{float:right;margin-left:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-title .location{display:none}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{line-height:1.5rem;padding:0;margin-bottom:.5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more{padding:0 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values{font-weight:700;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .inline-option-values .option-value.disabled{color:#9C9C9C;font-weight:400}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description{margin-bottom:.7rem;text-align:justify}.gogo-load-css .gogocarto-container .element-item .collapsible-header .collapsible-header-more .description p{margin:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body{background-color:transpraent;padding:0;position:relative}.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{background-color:#F7F7F7;padding:0 0 1rem .5rem}@media only screen and (min-width:601px){.gogo-load-css .gogocarto-container .element-item .collapsible-body .collapsible-body-main-content{padding:0 0 1rem 1rem}}.gogo-load-css .gogocarto-container .element-item .collapsible-body h2{font-weight:700!important;font-size:1rem!important;line-height:110%!important;margin:.5rem 0 .8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row{margin-bottom:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .description{text-align:justify;line-height:1.5;padding-right:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .show-more-description{display:inline;text-decoration:underline}.gogo-load-css .gogocarto-container .element-item .collapsible-body .send-mail-btn{font-size:.8rem;margin:.4rem 0 .5rem;line-height:1.8rem;height:1.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionInfos,.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionOpenHours{line-height:2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .sectionlongDescription{padding-bottom:0;padding-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .tags-container{margin-top:1.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .gogo-tag{margin-right:8px;border-radius:5px;background-color:#dcdcdc;padding:4px 10px;display:inline-block;margin-bottom:8px}.gogo-load-css .gogocarto-container .element-item .img-container{position:absolute;width:100%;top:0;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-container .images-carousel{cursor:pointer!important;margin:0}.gogo-load-css .gogocarto-container .element-item .img-container .gogo-img{width:100%;height:auto}.gogo-load-css .gogocarto-container .element-item .img-overlay{position:relative;overflow:hidden}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn{display:none;cursor:pointer!important;height:100%;position:absolute;color:#fff;padding-top:17%!important;width:5rem;-webkit-transition:opacity .5s;-moz-transition:opacity .5s;-o-transition:opacity .5s;-ms-transition:opacity .5s;transition:opacity .5s;opacity:.7}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn:hover{opacity:1}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev{background-image:linear-gradient(to right,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 30px 0 .5rem;left:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.prev .icon{left:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next{background-image:linear-gradient(to left,rgba(70,70,70,.4) 0,rgba(255,255,255,0) 100%);padding:0 .5rem 0 30px;right:0}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn.next .icon{right:.6rem}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-navigation-btn .icon{font-size:3rem;position:absolute;top:calc(50% - 1.5rem);margin:0;text-shadow:0 1px 4px #757575}.gogo-load-css .gogocarto-container .element-item .img-overlay .img-clickable-area{height:100%;position:absolute;left:6rem;right:6rem;cursor:pointer!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .section.categories h3{margin-bottom:90%}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-name{padding-top:.6rem;padding-bottom:1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper+.category-name{padding-top:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .row+.category-wrapper .category-name{padding-top:.9rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper{margin-top:0!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper:not(:first-child){margin-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper{margin-left:1.2rem;padding-left:.5rem;border-left:1px dotted #c3c3c3}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper h3.category-name{font-size:85%;padding-bottom:.4rem;padding-top:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .strong{text-decoration:none!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-name.main-option{font-weight:700}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option{font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .inline-option span.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description{padding:.5rem;font-style:italic;font-size:.9rem;color:#5d5d5d}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-description.disabled{color:#9C9C9C}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value{line-height:2.5rem;padding-right:0}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline{display:inline-block;font-style:italic}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.last):after{content:","}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline:not(.first) .icon{margin-left:.5rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.inline .icon{margin-right:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon{font-size:1.2rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.fa{font-size:1.1rem;padding-top:.8rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.gogo-icon-marker{font-size:1.1rem}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value .icon.disabled{color:#BFBFBF!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .option-value.disabled{color:#9C9C9C!important}.gogo-load-css .gogocarto-container .element-item .collapsible-body .category-wrapper .category-wrapper .option-value{padding-left:.6rem}.gogo-load-css .gogocarto-container .element-item h3{font-size:.85rem;text-transform:uppercase;font-weight:600;padding-left:.75rem;margin-bottom:0;padding-top:1.5rem;margin-top:0}.gogo-load-css .gogocarto-container .element-item .info-bar-divider{height:1px;overflow:hidden;background-color:#CCC}.gogo-load-css .gogocarto-container .element-item .btn,.gogo-load-css .gogocarto-container .element-item .btn-large{height:2rem;line-height:2rem;padding:0 1rem;margin-bottom:1rem}.gogo-load-css .gogocarto-container .element-item span.added{color:#3a772c}.gogo-load-css .gogocarto-container .element-item span.removed{text-decoration:line-through;margin-right:5px;color:#b57e7e}.gogo-load-css .gogocarto-container .element-item a>span.equals{color:rgba(0,0,0,.87)!important}.gogo-load-css .gogocarto-container #element-info-bar .element-item .expandLabel{font-weight:700}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel:after{content:"Moins d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{position:absolute;color:#fff;z-index:2;right:0;width:auto;margin-right:1.7rem;-webkit-transition:all .4s;-moz-transition:all .4s;-o-transition:all .4s;-ms-transition:all .4s;transition:all .4s;padding:8px 25px;bottom:-15px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big{padding:.3rem 1.2rem;bottom:-1rem}}.gogo-load-css .gogocarto-container #element-info-bar .element-item.active .expandLabel.transform-big:hover{color:#fff;box-shadow:0 6px 15px 0 rgba(0,0,0,.2),0 5px 17px 0 rgba(0,0,0,.19)}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:after{content:"Plus d'infos"}.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel,.gogo-load-css .gogocarto-container #element-info-bar .element-item:not(.active) .expandLabel:not(.transform-big){background-color:transparent!important}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header{position:relative;z-index:2}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-header span.added{color:#3ab33a}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .collapsible-body-main-container{height:100%;width:100%;position:absolute;top:0;overflow-y:auto}.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-container,.gogo-load-css .gogocarto-container #element-info-bar .collapsible-body .img-overlay{height:33%;background-color:transparent}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header{background-color:#fff!important}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a{color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-bottom .element-item .collapsible-header a:hover{color:#000}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header{border:none;color:#fff;cursor:default;width:100%}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a{color:#fff}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header a:hover{color:#e6e6e6}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title{position:relative;line-height:2.5rem;font-weight:400}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .distance{font-size:1.3rem;color:inherit}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-title .gogo-icon-close{font-size:1.5rem;margin-top:-.8rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .collapsible-header-more{margin-bottom:1rem}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{font-size:1.8rem;text-align:left}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description,.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .name{width:100%!important}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-header .description{margin-bottom:0}.gogo-load-css .gogocarto-container #element-info-bar.display-aside .element-item .collapsible-body{height:100%;overflow-y:auto}.gogo-load-css .gogocarto-container #modal-directions-fail.modal,.gogo-load-css .gogocarto-container #modal-pick-address.modal{position:absolute}.gogo-load-css .gogocarto-container #modal-directions-fail.modal .modal-footer,.gogo-load-css .gogocarto-container #modal-pick-address.modal .modal-footer{background-color:#444}.gogo-load-css .gogocarto-container .simple-modal.modal{z-index:2000;max-width:1200px;top:30%!important;max-height:80%;height:auto;position:absolute!important}.gogo-load-css .gogocarto-container .simple-modal.modal h5{margin-bottom:.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content{padding-bottom:.8rem!important}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-content .modal-error-msg{display:none;color:#B90303}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer{padding-right:2.5rem}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action{color:#fff;font-size:.9rem;padding:0 25px}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large{background-color:#de5a5f}.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn-large:hover,.gogo-load-css .gogocarto-container .simple-modal.modal .modal-footer .modal-action.btn:hover{background-color:#ec787d}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal:focus{border-color:#4A7874;box-shadow:none}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .simple-modal.modal .input-simple-modal::-moz-selection{background-color:#4A7874;color:#fff}.gogo-load-css .gogocarto-container .page-modal .btn-back{float:left;font-size:2rem;line-height:4rem;padding:0 2rem;margin-left:-2rem}.gogo-load-css .gogocarto-container .modal.action-modal h5{text-align:center;margin-bottom:1.5rem;line-height:2.5rem}.gogo-load-css .gogocarto-container .modal.action-modal label.small-label{display:block;font-size:.85rem;font-weight:700;margin-top:1rem;margin-bottom:-1.8rem}.gogo-load-css .gogocarto-container .modal.action-modal .elementName{font-style:italic;font-size:1.5rem}.gogo-load-css .gogocarto-container .modal.action-modal .error{display:none;color:#B90303}.gogo-load-css .gogocarto-container .modal.action-modal .option-radio-label{margin-top:.5rem;display:block!important;height:auto!important}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn{display:none}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper{height:15px;width:15px;top:1px}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .spinner-layer{border-color:#fff}.gogo-load-css .gogocarto-container .modal.action-modal .cancel-btn .preloader-wrapper .circle-clipper .circle{border-width:2px}.gogo-load-css .gogocarto-container .modal.action-modal .loader-overlay{display:none;position:absolute;top:0;left:0;right:0;bottom:0;background-color:#000;opacity:.35}.gogo-load-css .gogocarto-container #modal-iframe .subtitle{text-align:center;font-style:italic;margin-bottom:1.5rem}.gogo-load-css .gogocarto-container #modal-iframe label{font-size:.8rem;width:100%}.gogo-load-css .gogocarto-container #modal-iframe label:not(:last-child){margin-bottom:15px}.gogo-load-css .gogocarto-container #modal-iframe label strong{font-weight:700}.gogo-load-css .gogocarto-container #modal-iframe .iframe-input{width:80px;border:1px solid #969696;border-radius:5px;height:2rem;font-size:.9rem;font-family:"Lucida Console",Monaco,monospace;margin:1rem;text-align:center;background-color:#f5f5f5}.gogo-load-css .gogocarto-container #modal-iframe #iframe-code{width:100%;padding:1rem;background-color:#f1f1f1;-webkit-border-radius:5px;-moz-border-radius:5px;border-radius:5px;box-shadow:none;font-family:"Lucida Console",Monaco,monospace;border:1px dashed #c1c1c1;margin-bottom:1rem}.gogo-load-css .gogocarto-container #modal-image{width:90%}.gogo-load-css .gogocarto-container #modal-image .modal-content{padding:0;overflow:auto}.gogo-load-css .gogocarto-container #modal-image img{width:100%}.gogo-load-css .gogocarto-container .shadow-bottom{width:100%;margin-right:0;height:8px;position:absolute;z-index:4;left:0;opacity:1;border-top:1px solid rgba(0,0,0,.6);background:-webkit-gradient(linear,left top,left bottom,from(rgba(0,0,0,.4)),to(rgba(0,0,0,0)));-webkit-mask-box-image:-webkit-gradient(linear,left top,right top,color-stop(0,rgba(0,0,0,0)),color-stop(.5,rgba(0,0,0,.8)),color-stop(1,rgba(0,0,0,0)))}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar{width:12px}.gogo-load-css .gogocarto-container .custom-scroll-bar::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-alt::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-error::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-routing-geocoders::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;border:3px solid #f6f6f6;background-color:#C5C5C5}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-track,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-track{background-color:#f6f6f6;border:1px solid #f0f0f0}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar{width:7px}.gogo-load-css .gogocarto-container #directory-menu .sub-categories .sub-categories-content ul::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .custom-scroll-bar-light::-webkit-scrollbar-thumb,.gogo-load-css .gogocarto-container .leaflet-control-layers-list::-webkit-scrollbar-thumb{-webkit-border-radius:10px;-moz-border-radius:10px;border-radius:10px;background-color:#c3c3c3}.gogo-load-css .gogocarto-container #gogo-custom-popup{position:absolute;bottom:20px;z-index:500;right:10px;box-shadow:0 2px 6px rgba(0,0,0,.3);padding:5px 45px 5px 30px;line-height:1.7;max-width:400px;color:#fff;font-size:.9rem;border-radius:5px}[class*=" gogo-icon-"]:before,[class^=gogo-icon-]:before,[data-icon]:before{font-family:gogocarto!important;font-style:normal!important;font-weight:400!important;font-variant:normal!important;text-transform:none!important;speak:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.gogo-load-css .gogocarto-container #gogo-custom-popup #btn-close-custom-popup{font-size:1rem;cursor:pointer;position:absolute;right:18px;margin:0;top:14px}@media only screen and (max-width:600px){.gogo-load-css .gogocarto-container{font-size:12px}}.gogo-load-css .gogocarto-container #directory-menu{position:absolute;height:100%}.gogo-load-css .gogocarto-container #directory-content{position:relative;background-color:#9e9e9e;overflow:hidden;-webkit-box-flex:1 auto;-moz-box-flex:1 auto;-webkit-flex:1 auto;-ms-flex:1 auto;flex:1 auto;display:-webkit-box;display:-moz-box;display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:column nowrap;-webkit-flex-flow:column nowrap;flex-flow:column nowrap}.gogo-load-css .gogocarto-container h1{font-size:2.5rem;text-align:center;margin-top:.5rem}@media screen and (min-width:600px){.gogo-load-css .gogocarto-container h1{font-size:3.5rem}}@font-face{font-family:gogocarto;src:url(fonts/gogocarto.eot);src:url(fonts/gogocarto.eot?#iefix) format("embedded-opentype"),url(fonts/gogocarto.woff) format("woff"),url(fonts/gogocarto.ttf) format("truetype"),url(fonts/gogocarto.svg#gogocarto) format("svg");font-weight:400;font-style:normal}[data-icon]:before{content:attr(data-icon)}.gogo-icon-marker:before{content:"\61"}.gogo-icon-account-circle:before{content:"\62"}.gogo-icon-delete:before{content:"\63"}.gogo-icon-description:before{content:"\64"}.gogo-icon-star-full:before{content:"\65"}.gogo-icon-icon-copy-hours:before{content:"\66"}.gogo-icon-starcircle:before{content:"\67"}.gogo-icon-no-eye:before{content:"\68"}.gogo-icon-eye:before{content:"\69"}.gogo-icon-attention:before{content:"\6a"}.gogo-icon-mail:before{content:"\6b"}.gogo-icon-marker-symbol:before{content:"\6c"}.gogo-icon-phone:before{content:"\6d"}.gogo-icon-add-circle:before{content:"\6e"}.gogo-icon-plus-circle-1:before{content:"\6f"}.gogo-icon-clear:before{content:"\70"}.gogo-icon-redo:before{content:"\71"}.gogo-icon-day:before{content:"\72"}.gogo-icon-exclamation-1:before{content:"\73"}.gogo-icon-edit:before{content:"\74"}.gogo-icon-menu:before{content:"\75"}.gogo-icon-directions:before{content:"\77"}.gogo-icon-layers:before{content:"\78"}.gogo-icon-locate:before{content:"\7a"}.gogo-icon-material-design-icons-1:before{content:"\41"}.gogo-icon-people:before{content:"\42"}.gogo-icon-add-element:before{content:"\43"}.gogo-icon-internet:before{content:"\44"}.gogo-icon-star-empty:before{content:"\45"}.gogo-icon-share-alt:before{content:"\46"}.gogo-icon-expand:before{content:"\47"}.gogo-icon-angle-right:before{content:"\48"}.gogo-icon-arrow-circle-down:before{content:"\49"}.gogo-icon-facebook:before{content:"\4a"}.gogo-icon-external-link:before{content:"\4b"}.gogo-icon-gplus:before{content:"\4c"}.gogo-icon-home:before{content:"\4d"}.gogo-icon-info:before{content:"\4e"}.gogo-icon-list:before{content:"\4f"}.gogo-icon-lock:before{content:"\50"}.gogo-icon-plus-circle:before{content:"\51"}.gogo-icon-search:before{content:"\52"}.gogo-icon-close:before{content:"\53"}.gogo-icon-user-plus:before{content:"\54"}.gogo-icon-users:before{content:"\55"}.gogo-icon-unlock:before{content:"\56"}.gogo-icon-yahoo:before{content:"\57"}.gogo-icon-twitter:before{content:"\58"}.gogo-icon-partner-3:before{content:"\59"}.gogo-icon-map:before{content:"\5a"}.gogo-icon-ellipsis:before{content:"\30"}.gogo-icon-moderation:before{content:"\79"}.gogo-icon-filters-1:before{content:"\37"}.gogo-icon-vote:before{content:"\76"}.gogo-icon-marker-simple-1:before{content:"\31"}.gogo-icon-marker-simple:before{content:"\32"}.gogo-icon-stamp-1:before{content:"\36"}.gogo-icon-stamp-2:before{content:"\38"}.gogo-icon-communs:before{content:"\34"}.gogo-icon-printemps:before{content:"\33"}.gogo-icon-chevron-left:before{content:"\35"}.gogo-icon-chevron-right:before{content:"\39"} \ No newline at end of file diff --git a/dist/gogocarto.min.css.gz b/dist/gogocarto.min.css.gz index 66848a22be81b0b0599e9734c14440cd9dfa1081..ea54bc0fa6bbc57b4b45e9bd60540778dde626e7 100755 GIT binary patch delta 14270 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 aV;(_f;}C3YVP-S5QvW}mo+&K$J_7(TTcJe& diff --git a/src/scss/themes/transiscope/_element.scss b/src/scss/themes/transiscope/_element.scss index b54fe95..91babcd 100644 --- a/src/scss/themes/transiscope/_element.scss +++ b/src/scss/themes/transiscope/_element.scss @@ -7,7 +7,7 @@ .collapsible-header-title .gogo-icon-close { &:before { - background-color: $secondary; + background-color: $primary; color: white; border-radius: 3px; padding: 2px; @@ -207,7 +207,7 @@ width: auto; float: right; border: 2px solid; - color: $primary; + color: $secondary; padding: 8px 15px; text-align: center; border-radius: 20px; @@ -215,7 +215,7 @@ &:before { margin-right: 8px; color: white; - background-color: $primary; + background-color: $secondary; border-radius: 50%; padding: 0 4px; } @@ -252,7 +252,9 @@ } #element-info-bar.display-bottom { - .gogo-icon-close { font-size: 1rem; } + .gogo-icon-close { font-size: .9rem; } + .collapsible-header .name { font-size: 15px; } + @media #{$small-only} { .element-item .expandLabel { margin-right: 10px; @@ -264,8 +266,8 @@ .element-item.active { .expandLabel.transform-big { background-color: white; - color: $primary; - &:hover { color: $primary; } + color: $secondary; + &:hover { color: $secondary; } @media #{$small-only} { padding: 8px 10px; } }