diff --git a/dist/index.html b/dist/index.html index 09cf688..3b4435f 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1,32 +1,34 @@ - - +
- \ No newline at end of file diff --git a/dist/try-it-out.min.js b/dist/try-it-out.min.js index c18619e..c6e8f16 100644 --- a/dist/try-it-out.min.js +++ b/dist/try-it-out.min.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var e,t={555:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AuthBtnConfig=void 0;var o=r(782);t.AuthBtnConfig=function(e){this.posSelector="h1:eq(0)",this.text="AUTHORIZE",this.className="_auth-btn",o.Config.parseOptions(this,e)}},782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Config=void 0,t.Config={parseOptions:function(e,t){Object.keys(t).forEach((function(r){var o=e.hasOwnProperty(r)?r:"_".concat(r);o in e&&(e[o]=t[r])}))},cdnUrl:"https://cdn.jsdelivr.net/npm/"}},918:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.RedocTryItOutConfig=void 0;var o=r(782),n=r(668),c=function(){function e(e,t,r){this._containerId="redoc-container",this._operationBoxSelector="[data-section-id]",this.tryItOutEnabled=!0,this.tryItBoxContainerId="try-out-wrapper",this.redocVersion="2.0.0-rc.56",this.selectedOperationClass="try",this.disableZenscroll=!0,this.dependenciesVersions={jquery:"3.6.0",jqueryScrollTo:"2.1.2"},o.Config.parseOptions(this,t),this.docUrl=e,this.element=r}return Object.defineProperty(e.prototype,"elementId",{get:function(){var e=$(this.element).attr("id");if(!e)throw new n.InvalidElementError("redoc container element must have an id");return e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tryItBoxSelector",{get:function(){return"#".concat(this.tryItBoxContainerId)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this.redocVersion},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"containerId",{get:function(){return this.element?this.elementId:this._containerId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"containerSelector",{get:function(){return"#".concat(this.containerId)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationBoxSelector",{get:function(){return"".concat(this.containerSelector," ").concat(this._operationBoxSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bundleUrl",{get:function(){return"".concat(o.Config.cdnUrl,"/redoc@").concat(this.version,"/bundles/redoc.standalone.min.js")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"tryItDependencies",{get:function(){return{jqueryUrl:"".concat(o.Config.cdnUrl,"/jquery@").concat(this.dependenciesVersions.jquery,"/dist/jquery.min.js"),jqueryScrollToUrl:"".concat(o.Config.cdnUrl,"/jquery.scrollto@").concat(this.dependenciesVersions.jqueryScrollTo,"/jquery.scrollTo.min.js")}},enumerable:!1,configurable:!0}),e}();t.RedocTryItOutConfig=c},460:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StyleMatcherConfig=void 0;var o=r(782),n=function(){function e(e,t,r){this._informationContainerTargetSelector=".swagger-ui .information-container",this._authWrapperTargetSelector=".swagger-ui .auth-wrapper",this._modelsContainerTargetSelector=".swagger-ui .models",this._inputTargetSelector=".swagger-ui input[type=text]",this._selectTargetSelector=".swagger-ui .opblock select",this._textAreaTargetSelector=".swagger-ui .opblock textarea",this._paragraphTargetSelector=".swagger-ui .opblock p",this._executeBtnTargetSelector=".swagger-ui .opblock .btn.execute",this._responseContainerTargetSelector=".swagger-ui .opblock .opblock-body .responses-inner",this._responseTitleTargetSelector=".swagger-ui .opblock .responses-inner > div > h4",this._responseHeaderTargetSelector=".swagger-ui .opblock .responses-inner h4",this._responseTableTargetSelector=".swagger-ui .opblock .responses-inner > .responses-table",this._responseWrapperTargetSelector=".swagger-ui .opblock .responses-wrapper",this._responseWrapperResultTargetSelector=".swagger-ui .opblock .btn-group + .responses-wrapper",this._responseMicrolightTargetSelector=".swagger-ui .opblock .microlight",this._responseCodeTargetSelector=".swagger-ui .opblock .microlight code",this._responseClipboardTargetSelector=".swagger-ui .opblock .responses-inner .copy-to-clipboard",this._responseClipboardBtnTargetSelector=".swagger-ui .opblock .responses-inner .copy-to-clipboard button",this._responseCurlClipboardTargetSelector=".swagger-ui .opblock .responses-inner .curl-command .copy-to-clipboard",this._responseDownloadTargetSelector=".swagger-ui .opblock .responses-inner .download-contents",this._serverResponseHeaderTargetSelector=".swagger-ui .opblock .responses-inner .responses-header td.col_header",this._serverResponseStatusTargetSelector=".swagger-ui .opblock .responses-inner .response .response-col_status",this._serverResponseDescriptionTargetSelector=".swagger-ui .opblock .responses-inner .response .response-col_description",this._serverResponseSubHeaderTargetSelector=".swagger-ui .opblock .responses-inner .response h5",this._clearBtnTargetSelector=".swagger-ui .opblock .btn-group .btn-clear",this._operationTagTargetSelector=".swagger-ui .opblock-tag[data-tag]",this._operationHeaderContainerTargetSelector=".swagger-ui .opblock .opblock-section-header",this._operationHeaderTargetSelector=".swagger-ui .opblock .opblock-section-header h4",this._operationHeaderDecorationTargetSelector=".swagger-ui .opblock .opblock-section-header h4 span::after",this._operationTryOutTargetSelector=".swagger-ui .operation-tag-content div.try-out",this._descriptionContainerTargetSelector=".swagger-ui .opblock .opblock-body .opblock-description-wrapper",this._summaryTargetSelector=".swagger-ui .operation-tag-content div.opblock .opblock-summary",this._modalHeaderContainerTargetSelector=".swagger-ui .dialog-ux .modal-ux-header",this._modalHeaderTargetSelector=".swagger-ui .dialog-ux .modal-ux-header h3",this._modalTitleTargetSelector=".swagger-ui .dialog-ux .modal-ux-content h4",this._modalTitleCodeTargetSelector=".swagger-ui .dialog-ux .modal-ux-content .wrapper code",this._modalLabelTargetSelector=".swagger-ui .modal-ux label",this._modalCodeTargetSelector=".swagger-ui .modal-ux code",this._modalBtnTargetSelector=".swagger-ui .modal-ux button",this._parametersTableContainerTargetSelector=".swagger-ui .opblock .table-container",this._parametersHeadTargetSelector=".swagger-ui .opblock .table-container table.parameters thead",this._parameterNameFieldTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name",this._parameterTypeFieldTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__type",this._parameterDeprecatedTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__deprecated",this._parameterSourceTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__in",this._parameterRequiredMarkerTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name.required span",this._parameterRequiredTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name.required::after",this._apiContentSourceSelector=".api-content",this._inputSourceSelector="[kind=field] ~ td",this._codeSourceSelector="code",this._codeBoxSourceSelector="[data-section-id] [role=tabpanel]",this._dataSectionSourceSelector="[data-section-id] > div > div",this._fieldSourceSelector="[kind=field]",this._requiredFieldSourceSelector="[kind=field] div",this._fieldMarkerSourceSelector="[kind=field]:first span:first-child",this._sanSerifFontSourceSelector="h2",this._alternativeMonospaceFontSourceSelector="[kind=field] span",this._alternativeSansSerifSourceSelector="h5",this._h2SourceSelector="h2",this._h3SourceSelector="h3",this._h5SourceSelector="h5",this._labelSourceSelector="[kind=field] ~ td",this._typeSourceSelector="[kind=field] ~ td span",this._btnSourceSelector="[role=tabpanel] button",this._defaultBorderColorSelector="h5",this._authBtnSourceSelector='a[href*="swagger.json"]:eq(0)',this._httpVerbSourceSelector="[data-section-id] .http-verb",o.Config.parseOptions(this,e),this.swaggerConfig=t,this.redocConfig=r}return Object.defineProperty(e.prototype,"openedInformationContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._informationContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedAuthWrapperTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._authWrapperTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedModelsContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._modelsContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.operationContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedOperationContainerSelector",{get:function(){return"".concat(this.operationContainerTargetSelector,".").concat(this.swaggerConfig.selectedOperationContainerClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._inputTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._selectTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textAreaTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._textAreaTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"paragraphTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._paragraphTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executeBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._executeBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseTableTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseTableTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseWrapperTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseWrapperTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseWrapperResultTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseWrapperResultTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSectionTargetSelector",{get:function(){return"".concat(this.swaggerConfig.operationSectionContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedOperationSectionSelector",{get:function(){return"".concat(this.operationSectionTargetSelector,".").concat(this.swaggerConfig.selectedOperationContainerClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationTagTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationTagTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"clearBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._clearBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseMicrolightTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseMicrolightTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"descriptionContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._descriptionContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseSubHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseSubHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseStatusTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseStatusTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseDescriptionTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseDescriptionTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseClipboardTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseClipboardTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseClipboardBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseClipboardBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseCurlClipboardTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseCurlClipboardTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseDownloadTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseDownloadTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTargetSelector",{get:function(){return"".concat(this.swaggerConfig.authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalHeaderContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalHeaderContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTitleTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalTitleTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalLabelTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalLabelTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTitleCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalTitleCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderDecorationTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderDecorationTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parametersTableContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parametersTableContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parametersHeadTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parametersHeadTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterNameFieldTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterNameFieldTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterTypeFieldTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterTypeFieldTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterDeprecatedTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterDeprecatedTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterSourceTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterSourceTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterRequiredMarkerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterRequiredMarkerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterRequiredTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterRequiredTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationTryOutTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationTryOutTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"summaryTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._summaryTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseTitleTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseTitleTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"apiContentSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._apiContentSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._inputSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$inputSource",{get:function(){return $(this.inputSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"codeSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._codeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$codeSource",{get:function(){return $(this.codeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"codeBoxSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._codeBoxSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$codeBoxSource",{get:function(){return $(this.codeBoxSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataSectionSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._dataSectionSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$dataSectionSource",{get:function(){return $(this.dataSectionSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fieldSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._fieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$fieldSource",{get:function(){return $(this.fieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"requiredFieldSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._requiredFieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$requiredFieldSource",{get:function(){return $(this.requiredFieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fieldMarkerSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._fieldMarkerSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$fieldMarkerSource",{get:function(){return $(this.fieldMarkerSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternativeMonospaceFontSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._alternativeMonospaceFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$alternativeMonospaceFontSource",{get:function(){return $(this.alternativeMonospaceFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"sanSerifFontSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._sanSerifFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$sanSerifFontSource",{get:function(){return $(this.sanSerifFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternativeSansSerifSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._alternativeSansSerifSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h2SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h2SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h2Source",{get:function(){return $(this.h2SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h3SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h3SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h3Source",{get:function(){return $(this.h3SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h5SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h5SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h5Source",{get:function(){return $(this.h5SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"labelSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._labelSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$labelSource",{get:function(){return $(this.labelSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"typeSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._typeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$typeSource",{get:function(){return $(this.typeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"btnSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._btnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$btnSource",{get:function(){return $(this.btnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBorderColorSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._defaultBorderColorSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBorderColor",{get:function(){return $(this.labelSourceSelector).css("border-color")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBackgroundColor",{get:function(){var e=$(this.apiContentSourceSelector).css("background-color")||"white";return/rgba(\s)*?\(0,(\s)*?0,(\s)*?0,(\s)*?0(\s)*?\)/.test(e)?"white":e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authBtnSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._authBtnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$authBtnSource",{get:function(){return $(this.authBtnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authBtnClassesSource",{get:function(){return $(this.authBtnSourceSelector).attr("class")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"httpVerbSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._httpVerbSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$httpVerbSource",{get:function(){return $(this.httpVerbSourceSelector)},enumerable:!1,configurable:!0}),e}();t.StyleMatcherConfig=n},394:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SwaggerConfig=void 0;var o=r(782),n=function(){function e(e,t,r){var n=this;this._resolve=function(){},this._onComplete=function(){},this._authorizeBtnSelector=".swagger-ui .auth-wrapper .authorize",this._authorizeDoneBtnSelector=".swagger-ui .auth-btn-wrapper .btn-done",this._authorizeModalCloseBtnSelector=".swagger-ui .dialog-ux .modal-ux-header .close-modal",this._authorizeModalSelector=".swagger-ui .dialog-ux .modal-ux",this._modalOverlaySelector=".swagger-ui .dialog-ux",this._operationSectionContainerSelector=".swagger-ui .opblock-tag-section",this._operationContainerSelector=".swagger-ui .opblock",this._operationSummaryPatternSelector='.swagger-ui .opblock .opblock-summary-{method} [data-path="{api}"]',this._wrapperSelector=".swagger-ui .wrapper",this.dom_id="#swagger-ui",this.authModalClass="auth-modal",this.hideClass="hide",this.showClass="show",this.selectedOperationContainerClass="opened-shadow",this.version="3.48.0",this.onComplete=function(){n._onComplete(),n._resolve()},o.Config.parseOptions(this,e),this.url=t,this.tryItOutEnabled=r,this.onCompletePromise=new Promise((function(e){return n._resolve=e}))}return Object.defineProperty(e.prototype,"id",{get:function(){return this.dom_id.replace("#","")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"boxSelector",{get:function(){return this.dom_id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeDoneBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeDoneBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeModalCloseBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeModalCloseBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeModalSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openModalOverlaySelector",{get:function(){return"".concat(this.shownAuthModalSelector," ").concat(this._modalOverlaySelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSectionContainerSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationSectionContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationContainerSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSummaryPatternSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationSummaryPatternSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"wrapperSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._wrapperSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openAuthorizeModalSelector",{get:function(){return"".concat(this.shownAuthModalSelector," ").concat(this._authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hiddenSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.hideClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shownSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.showClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shownAuthModalSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.authModalClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bundleUrl",{get:function(){return"".concat(o.Config.cdnUrl,"/swagger-ui-dist@").concat(this.version,"/swagger-ui-bundle.js")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"cssUrl",{get:function(){return"".concat(o.Config.cdnUrl,"swagger-ui-dist@").concat(this.version,"/swagger-ui.css")},enumerable:!1,configurable:!0}),e}();t.SwaggerConfig=n},117:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TryBtnConfigConfig=void 0;var o=r(782),n=function(){function e(e){this.siblingSelector=".http-verb",this.text="TRY OUT",this.className="tryBtn",this.selectedClassName="selected",o.Config.parseOptions(this,e)}return Object.defineProperty(e.prototype,"selector",{get:function(){return".".concat(this.className)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSelector",{get:function(){return"".concat(this.selector,".").concat(this.selectedClassName)},enumerable:!1,configurable:!0}),e}();t.TryBtnConfigConfig=n},74:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AuthBtn=void 0;var o=r(997),n=r(94),c=function(){o.SwaggerWrapper.hideAuthModal()},a=function(){n.TryBtn.unselectAll(),o.SwaggerWrapper.showAuthModal()},i=function(){function e(){}return Object.defineProperty(e,"$element",{get:function(){return $(".".concat(e.cfg.className))},enumerable:!1,configurable:!0}),e.init=function(){if(o.SwaggerWrapper.hasAuth){var t=$('
').concat(e.cfg.text,"
"));t.click(a),$(e.cfg.posSelector).after(t),o.SwaggerWrapper.onCloseAuthModal(c)}},e}();t.AuthBtn=i},94:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TryBtn=void 0;var o=r(997),n=r(187),c=function(e){e.stopPropagation();var t=$(e.target),r=!a.isSelected(t);a.unselectAll(),r&&a.select(t)},a=function(){function e(){}return Object.defineProperty(e,"$sibling",{get:function(){return $("".concat(e.cfg.siblingSelector))},enumerable:!1,configurable:!0}),e.isSelected=function(t){return t.hasClass(e.cfg.selectedClassName)},e.unselectAll=function(){o.SwaggerWrapper.hide(),n.RedocWrapper.hide(),$(e.cfg.selector).removeClass(e.cfg.selectedClassName)},e.select=function(t){t.addClass(e.cfg.selectedClassName),n.RedocWrapper.configureTryBox();var r=n.RedocWrapper.getCurrentApiInfo(),c=r.api,a=r.method;o.SwaggerWrapper.selectApiSection(c,a),n.RedocWrapper.$tryItBoxContainer.append(o.SwaggerWrapper.$box),o.SwaggerWrapper.show(),n.RedocWrapper.fixScrollPosition()},Object.defineProperty(e,"$selected",{get:function(){return $("".concat(e.cfg.selectedSelector))},enumerable:!1,configurable:!0}),Object.defineProperty(e,"$btn",{get:function(){return $(".".concat(e.cfg.className))},enumerable:!1,configurable:!0}),e.init=function(){var t=$('"));t.click(c),e.$sibling.after(t)},e}();t.TryBtn=a},668:function(e,t){var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvalidElementError=void 0;var n=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t}(Error);t.InvalidElementError=n},552:function(e,t,r){var o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,c){function a(e){try{l(o.next(e))}catch(e){c(e)}}function i(e){try{l(o.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,i)}l((o=o.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,o,n,c,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return c={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function i(i){return function(l){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c&&(c=0,i[0]&&(a=0)),a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]{Object.defineProperty(t,"__esModule",{value:!0}),t.Styler=void 0;var o=r(9),n=r(997),c=r(94),a=r(74),i=function(){function e(){}return e.update=function(){e.sheetAddedOnDocument||document.body.appendChild(e.sheet),e.sheet.innerHTML=o.StyleBuilder.toString()},e.authApplies=function(){o.StyleBuilder.add(n.SwaggerWrapper.cfg.shownAuthModalSelector).hidden().style({height:"auto",left:0,top:0,width:"auto"}).add(n.SwaggerWrapper.cfg.authorizeModalSelector).hidden().add(n.SwaggerWrapper.cfg.openModalOverlaySelector).visible().add(n.SwaggerWrapper.cfg.openAuthorizeModalSelector).visible().style({width:"auto",height:"auto"}),a.AuthBtn.$element.addClass(e.cfg.authBtnClassesSource)},e.tryBtnApplies=function(){o.StyleBuilder.add(c.TryBtn.cfg.selector).resetBorder().cloneBorder(e.cfg.$authBtnSource).cloneFont(e.cfg.$httpVerbSource).cloneStyles(e.cfg.$httpVerbSource,["padding"]).cloneStyles(e.cfg.$authBtnSource,["color"]).style({"background-color":e.cfg.defaultBackgroundColor,"margin-left":"2px",cursor:"pointer"})},e.inputApplies=function(){o.StyleBuilder.add(e.cfg.inputTargetSelector).cloneBorder(e.cfg.$inputSource).cloneStyles(e.cfg.$inputSource,["color","font-size"]).style({"border-radius":0})},e.modalApplies=function(){o.StyleBuilder.add(e.cfg.modalHeaderTargetSelector).cloneFont(e.cfg.$h2Source).add(e.cfg.modalLabelTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.modalTitleTargetSelector).cloneFont(e.cfg.$h3Source).add(e.cfg.modalTitleCodeTargetSelector).cloneStyles(e.cfg.$labelSource,"font-size").add(e.cfg.modalCodeTargetSelector).cloneFont(e.cfg.$h3Source).cloneStyles(e.cfg.$alternativeMonospaceFontSource,"font-family").add(e.cfg.modalTargetSelector).style({"background-color":"white","border-radius":"0"}).add(e.cfg.modalBtnTargetSelector).cloneStyles(e.cfg.$sanSerifFontSource,"font-family").style({"border-radius":0}).add(e.cfg.modalHeaderContainerTargetSelector).style({"border-color":e.cfg.defaultBorderColor})},e.tryItBoxApplies=function(){o.StyleBuilder.add(e.cfg.operationSectionTargetSelector).hidden().noHeight().add(e.cfg.openedOperationSectionSelector).visible().style({height:"initial"}),o.StyleBuilder.add(e.cfg.openedOperationContainerSelector).style({display:"block"}),o.StyleBuilder.add(e.cfg.operationContainerTargetSelector).cloneStyles(e.cfg.$dataSectionSource,"padding").resetBorder().add(e.cfg.operationContainerTargetSelector).resetBorder().style({"background-color":e.cfg.defaultBackgroundColor}).add(e.cfg.selectTargetSelector).cloneFont(e.cfg.$inputSource).resetBorder().cloneStyles(e.cfg.$inputSource,["border-width","border-style"]).absolute().style({"border-width":"1px","background-color":e.cfg.defaultBackgroundColor,"border-style":"solid",padding:"0 5px","margin-top":"-3%",right:0,"margin-right":e.cfg.$dataSectionSource.css("padding-right")}).add(e.cfg.paragraphTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.textAreaTargetSelector).resetBorder().cloneFont(e.cfg.$alternativeMonospaceFontSource).cloneBorder(e.cfg.$codeBoxSource).cloneStyles(e.cfg.$codeBoxSource,["color"]).cloneStyles(e.cfg.$codeBoxSource,["background-color"]).add(e.cfg.descriptionContainerTargetSelector).noPadding().add(e.cfg.executeBtnTargetSelector).resetBorder().cloneBorder(e.cfg.$authBtnSource).cloneFont(e.cfg.$authBtnSource).cloneStyles(e.cfg.$authBtnSource,["background-color"]).add(e.cfg.operationHeaderContainerTargetSelector).cloneStyles(e.cfg.$h5Source,["padding","margin"]).style({"box-shadow":"none"}).add(e.cfg.operationHeaderTargetSelector).cloneBorder(e.cfg.$h5Source).cloneFont(e.cfg.$h5Source).cloneStyles(e.cfg.$h5Source,"text-transform").add(e.cfg.responseWrapperResultTargetSelector).style({display:"block"}).add(e.cfg.responseContainerTargetSelector).style({padding:"0 0 20px 0"}).add(e.cfg.parametersTableContainerTargetSelector).noPadding().add(e.cfg.parameterNameFieldTargetSelector).cloneFont(e.cfg.$fieldSource).style({float:"right",width:"60px","word-wrap":"break-word"}).add(e.cfg.parameterRequiredTargetSelector).noPadding().cloneFont(e.cfg.$requiredFieldSource).style({display:"block","padding-top":"4px"}).add(e.cfg.parameterTypeFieldTargetSelector).cloneFont(e.cfg.$typeSource).style({"margin-left":"28px"}).add(e.cfg.parameterDeprecatedTargetSelector).style({"margin-left":"28px"}).add(e.cfg.parameterSourceTargetSelector).cloneStyles(e.cfg.$alternativeMonospaceFontSource,"font-family").style({"margin-left":"28px"}).add(e.cfg.responseHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.serverResponseHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.serverResponseStatusTargetSelector).style({"padding-right":"10px"}).cloneFont(e.cfg.$typeSource).add(e.cfg.serverResponseDescriptionTargetSelector).style({"padding-top":0}).add(e.cfg.serverResponseSubHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.responseMicrolightTargetSelector).cloneFont(e.cfg.$codeSource,!0).cloneStyles(e.cfg.$codeBoxSource,"background-color",!0).resetBorder().add(e.cfg.responseCodeTargetSelector).cloneFont(e.cfg.$codeSource,!0).cloneStyles(e.cfg.$codeBoxSource,"background-color",!0).resetBorder().add("".concat(e.cfg.responseClipboardBtnTargetSelector,":before")).cloneFont(e.cfg.$btnSource).style({content:'"Copy"',display:"block"}).add(e.cfg.responseClipboardTargetSelector).cloneBorder(e.cfg.$btnSource).style({background:"none",padding:"5px",width:"42px"}).add(e.cfg.responseClipboardBtnTargetSelector).noPadding().style({"background-image":"none",height:"21px"}).add(e.cfg.responseCurlClipboardTargetSelector).style({right:"10px",bottom:"18px"}).add(e.cfg.responseDownloadTargetSelector).cloneFont(e.cfg.$btnSource).cloneBorder(e.cfg.$btnSource).style({background:"none"}),c.TryBtn.$btn.on("click",e.createStyleElements)},e.themeMatchApplies=function(){e.inputApplies(),e.modalApplies(),e.tryItBoxApplies()},e.hideDisturbingElements=function(){o.StyleBuilder.add(e.cfg.operationTryOutTargetSelector).noDisplay().add(e.cfg.responseTableTargetSelector).noDisplay().add(e.cfg.responseWrapperTargetSelector).noDisplay().add(e.cfg.responseTitleTargetSelector).noDisplay().add(e.cfg.operationHeaderDecorationTargetSelector).noDisplay().add(e.cfg.parameterRequiredMarkerTargetSelector).noDisplay().add(e.cfg.summaryTargetSelector).noDisplay().add(e.cfg.clearBtnTargetSelector).noDisplay().add(e.cfg.parametersHeadTargetSelector).noDisplay().add(e.cfg.operationTagTargetSelector).noDisplay().add(e.cfg.operationContainerTargetSelector).noDisplay().add(e.cfg.openedInformationContainerTargetSelector).noDisplay().add(e.cfg.openedAuthWrapperTargetSelector).noDisplay().add(e.cfg.openedModelsContainerTargetSelector).noDisplay()},e.createStyleElements=function(){setTimeout((function(){var t=e.cfg.$fieldMarkerSource.clone();t.css("float","left"),t.insertBefore("".concat(e.cfg.parameterNameFieldTargetSelector,":first-child"))}),100),c.TryBtn.$selected.off("click",e.createStyleElements)},e.init=function(){e.hideDisturbingElements(),e.authApplies(),e.tryBtnApplies(),e.themeMatchApplies(),e.update()},e.initSwaggerWrapper=function(){o.StyleBuilder.add("body").relative().add(n.SwaggerWrapper.cfg.wrapperSelector).noPadding().add(n.SwaggerWrapper.cfg.boxSelector).relative().noTop().noLeft().noOverflow().resetBorder().style({"border-radius":"4px","background-color":"#ffff",width:"100%",height:"100vh","z-index":1}).add(n.SwaggerWrapper.cfg.hiddenSelector).hidden().noWidth().noHeight().noCursor().add(n.SwaggerWrapper.cfg.shownSelector).visible().style({cursor:"initial",width:"auto",height:"auto"}),e.update()},e.sheet=document.createElement("style"),e}();t.Styler=i},815:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.loadScript=void 0,t.loadScript=function(e){return new Promise((function(t,r){var o=document.createElement("script");o.type="text/javascript",o.onload=t,o.onerror=r,o.src=e,document.head.append(o)}))}},402:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.loadStylesheet=void 0,t.loadStylesheet=function(e){var t=document.createElement("link");t.rel="stylesheet",t.href=e,document.head.appendChild(t)}},9:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StyleBuilder=void 0;var r=function(){function e(e){this.properties={},this.parent=e}return e.prototype.add=function(e){return this.parent.add(e)},e.prototype.style=function(e){var t=this;return Object.entries(e).forEach((function(e){var r=e[0],o=e[1];return t.properties[r]="".concat(r,": ").concat(o)})),this},e.prototype.absolute=function(){return this.style({position:"absolute"})},e.prototype.relative=function(){return this.style({position:"relative"})},e.prototype.hidden=function(){return this.style({visibility:"hidden"})},e.prototype.visible=function(){return this.style({visibility:"visible"})},e.prototype.noWidth=function(){return this.style({width:0})},e.prototype.noHeight=function(){return this.style({height:0})},e.prototype.noCursor=function(){return this.style({cursor:"none"})},e.prototype.noTop=function(){return this.style({top:0})},e.prototype.noLeft=function(){return this.style({left:0})},e.prototype.noPadding=function(){return this.style({padding:0})},e.prototype.noOverflow=function(){return this.style({overflow:"hidden"})},e.prototype.noDisplay=function(){return this.style({display:"none"})},e.prototype.cloneStyles=function(e,t,r){var o=this,n=r?"!important":"";return(t=Array.isArray(t)?t:[t]).forEach((function(t){var r;return o.style(((r={})[t]="".concat(e.css(t)," ").concat(n),r))})),this},e.prototype.cloneFont=function(e,t){return this.cloneStyles(e,["font-family","font-size","font-weight","line-height","color"],t)},e.prototype.cloneBorder=function(e,t){return this.cloneStyles(e,["border-top","border-right","border-left","border-bottom"],t)},e.prototype.resetBorder=function(){return this.style({border:0,"border-radius":0,"box-shadow":"none"})},e.prototype.toString=function(){return Object.values(this.properties).join(";")},e}(),o=function(){function e(){this.selectors={}}return e.prototype.toString=function(){var e="";return Object.entries(this.selectors).forEach((function(t){var r=t[0],o=t[1];e+="".concat(r," { ").concat(o," }")})),e},e.prototype.add=function(e){return this.selectors[e]||(this.selectors[e]=new r(this)),this.selectors[e]},e.add=function(t){return e.selectorsBuilder.selectors[t]||(e.selectorsBuilder.selectors[t]=new r(e.selectorsBuilder)),e.selectorsBuilder.selectors[t]},e.addMediaSelector=function(t){return e.mediaSelectorsBuilder[t]||(e.mediaSelectorsBuilder[t]=new e),e.mediaSelectorsBuilder[t]},e.toString=function(){var t="";return Object.entries(e.mediaSelectorsBuilder).forEach((function(e){var r=e[0],o=e[1];t+="".concat(r," { ").concat(o," }")})),"".concat(t," ").concat(e.selectorsBuilder)},e.selectorsBuilder=new e,e.mediaSelectorsBuilder={},e}();t.StyleBuilder=o},187:function(e,t,r){var o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,c){function a(e){try{l(o.next(e))}catch(e){c(e)}}function i(e){try{l(o.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,i)}l((o=o.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,o,n,c,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return c={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function i(i){return function(l){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c&&(c=0,i[0]&&(a=0)),a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]'))},enumerable:!1,configurable:!0}),e.moveTryApiContainer=function(){e.apiContainer.after(e.$tryItBoxContainer)},Object.defineProperty(e,"domElement",{get:function(){if(e.cfg.element)return e.cfg.element;var t=$('
'));return $("body").append(t),t[0]},enumerable:!1,configurable:!0}),e.init=function(){return o(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,(0,a.loadScript)(e.cfg.bundleUrl)];case 1:return t.sent(),[2,new Promise((function(t,r){Redoc.init(e.cfg.docUrl,e.cfg,e.domElement,(function(e){return e?r(e):t()}))}))]}}))}))},e.configureTryBox=function(){e.$operationBox.addClass(e.cfg.selectedOperationClass),e.moveTryApiContainer()},e.hide=function(){e.$operationBox.removeClass(e.cfg.selectedOperationClass)},e.fixScrollPosition=function(){$("body").scrollTo(e.$operationBox)},e.getCurrentApiInfo=function(){var t=e.$apiInfoContainer.text().replace(c.TryBtn.cfg.text,"").trim().match(/(\w+)(.*)/),r=t[1];return{api:t[2],method:r}},e}();t.RedocWrapper=i},997:function(e,t,r){var o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,c){function a(e){try{l(o.next(e))}catch(e){c(e)}}function i(e){try{l(o.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,i)}l((o=o.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,o,n,c,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return c={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function i(i){return function(l){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c&&(c=0,i[0]&&(a=0)),a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]')),SwaggerUIBundle(e.cfg),[2,e.cfg.onCompletePromise]}}))}))},e.hide=function(){e.$box.attr("class",e.cfg.hideClass),e.$selectedContainerElements.removeClass(e.cfg.selectedOperationContainerClass),$("body").append(e.$box)},e.show=function(){e.$box.attr("class",e.cfg.showClass)},e.showAuthModal=function(){e.$box.attr("class",e.cfg.authModalClass),e.$authorizeBtn.click()},e.hideAuthModal=function(){e.hide()},e.onCloseAuthModal=function(t){e.$authorizeModalCloseTriggers.click(t)},e.selectApiSection=function(t,r){var o=$(e.operationSummarySelector(r,t)),n=o.parents(e.cfg.operationContainerSelector),c=n.parents(e.cfg.operationSectionContainerSelector);n.data("clicked")||o.click(),n.data("clicked",!0),n.addClass(e.cfg.selectedOperationContainerClass),c.addClass(e.cfg.selectedOperationContainerClass)},e}();t.SwaggerWrapper=l}},r={};e=function e(o){var n=r[o];if(void 0!==n)return n.exports;var c=r[o]={exports:{}};return t[o].call(c.exports,c,c.exports,e),c.exports}(552),window.RedocTryItOut=window.RedocTryItOut||e.RedocTryItOut})(); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkgsRUFBUWhQLFFBR1ZpUCxFQUFvQkUsS0FBSyxXQUFXLEdBQ3BDRixFQUFvQmpPLFNBQ2xCM0IsRUFBZU8sSUFBSTVELGlDQUVyQmtULEVBQWtCbE8sU0FDaEIzQixFQUFlTyxJQUFJNUQsZ0NBRXZCLEVBQ0YsRUF6RkEsR0FBYSxFQUFBcUQsZUFBQUEsQyxHQ1JUK1AsRUFBMkIsQ0FBQyxFakJEaEMsRWlCSUEsU0FBU0MsRUFBb0JDLEdBRTVCLElBQUlDLEVBQWVILEVBQXlCRSxHQUM1QyxRQUFxQkUsSUFBakJELEVBQ0gsT0FBT0EsRUFBYUUsUUFHckIsSUFBSUMsRUFBU04sRUFBeUJFLEdBQVksQ0FHakRHLFFBQVMsQ0FBQyxHQU9YLE9BSEFFLEVBQW9CTCxHQUFVTSxLQUFLRixFQUFPRCxRQUFTQyxFQUFRQSxFQUFPRCxRQUFTSixHQUdwRUssRUFBT0QsT0FDZixDakJ0QkEsTUFRQS9NLE9BQU9SLGNBQWdCUSxPQUFPUixlQUFpQixFQUFBQSxhIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9icm93c2VyLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvY29uZmlnL2F1dGgtYnRuLWNvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2NvbmZpZy9jb25maWcudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9jb25maWcvcmVkb2MtdHJ5LWl0LW91dC1jb25maWcudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9jb25maWcvc3R5bGUtbWF0Y2hlci5jb25maWcudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9jb25maWcvc3dhZ2dlci1jb25maWcudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9jb25maWcvdHJ5LWJ0bi1jb25maWcudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9lbGVtZW50cy9hdXRoLmJ0bi50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2VsZW1lbnRzL3RyeS5idG4udHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9lcnJvcnMvaW52YWxpZC1lbGVtZW50LmVycm9yLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvbW9kdWxlLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvc3R5bGVyLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvdXRpbHMvbG9hZGVycy9zY3JpcHRzLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvdXRpbHMvbG9hZGVycy9zdHlsZXMudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy91dGlscy9zdHlsZS1idWlsZGVyLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvd3JhcHBlcnMvcmVkb2Mud3JhcHBlci50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL3dyYXBwZXJzL3N3YWdnZXIud3JhcHBlci50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0L3dlYnBhY2svYm9vdHN0cmFwIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlZG9jVHJ5SXRPdXQgfSBmcm9tIFwiLi9tb2R1bGVcIjtcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICBSZWRvY1RyeUl0T3V0OiBSZWRvY1RyeUl0T3V0O1xuICB9XG59XG5cbndpbmRvdy5SZWRvY1RyeUl0T3V0ID0gd2luZG93LlJlZG9jVHJ5SXRPdXQgfHwgUmVkb2NUcnlJdE91dDtcbiIsImltcG9ydCB7IEF1dGhCdG5PcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvYXV0aC1idG4tb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgQXV0aEJ0bkNvbmZpZyBpbXBsZW1lbnRzIEF1dGhCdG5PcHRpb25zIHtcbiAgcHVibGljIHJlYWRvbmx5IHBvc1NlbGVjdG9yOiBzdHJpbmcgPSBcImgxOmVxKDApXCI7XG4gIHB1YmxpYyByZWFkb25seSB0ZXh0OiBzdHJpbmcgPSBcIkFVVEhPUklaRVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgY2xhc3NOYW1lOiBzdHJpbmcgPSBcIl9hdXRoLWJ0blwiO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBBdXRoQnRuT3B0aW9ucykge1xuICAgIENvbmZpZy5wYXJzZU9wdGlvbnModGhpcywgb3B0aW9ucyk7XG4gIH1cbn1cbiIsImV4cG9ydCBjb25zdCBDb25maWcgPSB7XG4gIHBhcnNlT3B0aW9uczogPFxuICAgIFRISVogZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIFQgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICA+KFxuICAgIHRoaXo6IFRISVosXG4gICAgb3B0aW9uczogVCxcbiAgKSA9PiB7XG4gICAgT2JqZWN0LmtleXMob3B0aW9ucykuZm9yRWFjaCgoa2V5KSA9PiB7XG4gICAgICAvLyBXZSBhZGQgdW5kZXJzY29yZSB0byB0aGUga2V5IGlmIGl0cyBub3QgYSBwcm9wZXJ0eSBkaXJlY3RseSBkZWZpbmVkIGluIHRoaXosXG4gICAgICAvLyB0byBlbmFibGUgc2V0dGluZyBwcml2YXRlIHZhcmlhYmxlcywgdGhhdCBiZWdpbiB3aXRoIHVuZGVyc2NvcmUuXG4gICAgICAvLyBUaGlzIHdhcyBwcmV2aW91c2x5IHVzaW5nIHRoZSBgaW5gIGtleXdvcmQgd2hpY2ggcmV0dXJuZWQgdHJ1ZSBpZiBmaWVsZCB3YXMgaW5oZXJpdGVkIGZyb20gaW50ZXJmYWNlLlxuICAgICAgLy8gTm93IHVzaW5nIGhhc093blByb3BlcnR5IHRvIGVuc3VyZSBpdHMgZGVmaW5lZCBpbiB0aGUgb2JqZWN0L2NsYXNzIHBhc3NlZCBpbiBhcyB0aGl6LlxuICAgICAgLy8gTk9URTogVGhpcyBpcyBhIGh1Z2UgaGFjayBhbmQgZ29lcyBhZ2FpbnN0IHRoZSB2YWx1ZSBvZiB1c2luZyBUeXBlc2NyaXB0XG4gICAgICBjb25zdCBvcHRpb24gPSB0aGl6Lmhhc093blByb3BlcnR5KGtleSkgPyBrZXkgOiBgXyR7a2V5fWA7XG4gICAgICBpZiAob3B0aW9uIGluIHRoaXopIHtcbiAgICAgICAgdGhpeltvcHRpb24gYXMga2V5b2YgVEhJWl0gPSBvcHRpb25zW2tleV07XG4gICAgICB9XG4gICAgfSk7XG4gIH0sXG5cbiAgY2RuVXJsOiBcImh0dHBzOi8vY2RuLmpzZGVsaXZyLm5ldC9ucG0vXCIsXG59O1xuIiwiaW1wb3J0IHtcbiAgUmVkb2NUcnlJdE91dE9wdGlvbnMsXG4gIERlcGVuZGVuY2llc1ZlcnNpb25zLFxufSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9yZWRvYy10cnktaXQtb3V0LW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBDb25maWcgfSBmcm9tIFwiLi9jb25maWdcIjtcbmltcG9ydCB7IEludmFsaWRFbGVtZW50RXJyb3IgfSBmcm9tIFwiLi4vZXJyb3JzL2ludmFsaWQtZWxlbWVudC5lcnJvclwiO1xuXG5kZWNsYXJlIGxldCAkOiBhbnk7XG5cbmNvbnN0IERFRkFVTFRfUkVET0NfVkVSU0lPTiA9IFwiMi4wLjAtcmMuNTZcIjtcbmNvbnN0IERFRkFVTFRfSlFVRVJZX1ZFUlNJT04gPSBcIjMuNi4wXCI7XG5jb25zdCBERUZBVUxUX0pRVUVSWV9TQ1JPTExfVkVSU0lPTiA9IFwiMi4xLjJcIjtcblxuZXhwb3J0IGNsYXNzIFJlZG9jVHJ5SXRPdXRDb25maWcgaW1wbGVtZW50cyBSZWRvY1RyeUl0T3V0T3B0aW9ucyB7XG4gIHB1YmxpYyByZWFkb25seSBkb2NVcmw6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IGVsZW1lbnQ/OiBIVE1MRWxlbWVudDtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jb250YWluZXJJZDogc3RyaW5nID0gXCJyZWRvYy1jb250YWluZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0aW9uQm94U2VsZWN0b3I6IHN0cmluZyA9IFwiW2RhdGEtc2VjdGlvbi1pZF1cIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdHJ5SXRPdXRFbmFibGVkOiBib29sZWFuID0gdHJ1ZTtcbiAgcHVibGljIHJlYWRvbmx5IHRyeUl0Qm94Q29udGFpbmVySWQ6IHN0cmluZyA9IFwidHJ5LW91dC13cmFwcGVyXCI7XG4gIHB1YmxpYyByZWFkb25seSByZWRvY1ZlcnNpb246IHN0cmluZyA9IERFRkFVTFRfUkVET0NfVkVSU0lPTjtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkT3BlcmF0aW9uQ2xhc3M6IHN0cmluZyA9IFwidHJ5XCI7XG4gIHB1YmxpYyByZWFkb25seSBkaXNhYmxlWmVuc2Nyb2xsOiBib29sZWFuID0gdHJ1ZTtcblxuICBwdWJsaWMgcmVhZG9ubHkgZGVwZW5kZW5jaWVzVmVyc2lvbnM6IERlcGVuZGVuY2llc1ZlcnNpb25zID0ge1xuICAgIGpxdWVyeTogREVGQVVMVF9KUVVFUllfVkVSU0lPTixcbiAgICBqcXVlcnlTY3JvbGxUbzogREVGQVVMVF9KUVVFUllfU0NST0xMX1ZFUlNJT04sXG4gIH07XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGRvY1VybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFJlZG9jVHJ5SXRPdXRPcHRpb25zLFxuICAgIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCxcbiAgKSB7XG4gICAgQ29uZmlnLnBhcnNlT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLmRvY1VybCA9IGRvY1VybDtcbiAgICB0aGlzLmVsZW1lbnQgPSBlbGVtZW50O1xuICB9XG5cbiAgcHJpdmF0ZSBnZXQgZWxlbWVudElkKCk6IHN0cmluZyB7XG4gICAgY29uc3QgY29udGFpbmVySWQgPSAkKHRoaXMuZWxlbWVudCkuYXR0cihcImlkXCIpO1xuXG4gICAgaWYgKCFjb250YWluZXJJZCkge1xuICAgICAgdGhyb3cgbmV3IEludmFsaWRFbGVtZW50RXJyb3IoXCJyZWRvYyBjb250YWluZXIgZWxlbWVudCBtdXN0IGhhdmUgYW4gaWRcIik7XG4gICAgfVxuXG4gICAgcmV0dXJuIGNvbnRhaW5lcklkO1xuICB9XG5cbiAgcHVibGljIGdldCB0cnlJdEJveFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAjJHt0aGlzLnRyeUl0Qm94Q29udGFpbmVySWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLnJlZG9jVmVyc2lvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGFpbmVySWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5lbGVtZW50ID8gdGhpcy5lbGVtZW50SWQgOiB0aGlzLl9jb250YWluZXJJZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29udGFpbmVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCMke3RoaXMuY29udGFpbmVySWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uQm94U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25Cb3hTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBidW5kbGVVcmwoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7Q29uZmlnLmNkblVybH0vcmVkb2NAJHt0aGlzLnZlcnNpb259L2J1bmRsZXMvcmVkb2Muc3RhbmRhbG9uZS5taW4uanNgO1xuICB9XG5cbiAgcHVibGljIGdldCB0cnlJdERlcGVuZGVuY2llcygpOiB7XG4gICAganF1ZXJ5VXJsOiBzdHJpbmc7XG4gICAganF1ZXJ5U2Nyb2xsVG9Vcmw6IHN0cmluZztcbiAgfSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGpxdWVyeVVybDogYCR7Q29uZmlnLmNkblVybH0vanF1ZXJ5QCR7dGhpcy5kZXBlbmRlbmNpZXNWZXJzaW9ucy5qcXVlcnl9L2Rpc3QvanF1ZXJ5Lm1pbi5qc2AsXG4gICAgICBqcXVlcnlTY3JvbGxUb1VybDogYCR7Q29uZmlnLmNkblVybH0vanF1ZXJ5LnNjcm9sbHRvQCR7dGhpcy5kZXBlbmRlbmNpZXNWZXJzaW9ucy5qcXVlcnlTY3JvbGxUb30vanF1ZXJ5LnNjcm9sbFRvLm1pbi5qc2AsXG4gICAgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgU3R5bGVNYXRjaGVyT3B0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3N0eWxlLW1hdGNoZXItb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuaW1wb3J0IHsgU3dhZ2dlckNvbmZpZyB9IGZyb20gXCIuL3N3YWdnZXItY29uZmlnXCI7XG5pbXBvcnQgeyBSZWRvY1RyeUl0T3V0Q29uZmlnIH0gZnJvbSBcIi4vcmVkb2MtdHJ5LWl0LW91dC1jb25maWdcIjtcblxuZGVjbGFyZSBsZXQgJDogYW55O1xuXG5leHBvcnQgY2xhc3MgU3R5bGVNYXRjaGVyQ29uZmlnIGltcGxlbWVudHMgU3R5bGVNYXRjaGVyT3B0aW9ucyB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc3dhZ2dlckNvbmZpZzogU3dhZ2dlckNvbmZpZztcbiAgcHJpdmF0ZSByZWFkb25seSByZWRvY0NvbmZpZzogUmVkb2NUcnlJdE91dENvbmZpZztcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmluZm9ybWF0aW9uLWNvbnRhaW5lclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRoV3JhcHBlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmF1dGgtd3JhcHBlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RlbHNDb250YWluZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5tb2RlbHNcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgaW5wdXRbdHlwZT10ZXh0XVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZWxlY3RUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIHNlbGVjdFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF90ZXh0QXJlYVRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgdGV4dGFyZWFcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYWdyYXBoVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9IFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgcFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9leGVjdXRlQnRuVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAuYnRuLmV4ZWN1dGVcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLm9wYmxvY2stYm9keSAucmVzcG9uc2VzLWlubmVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgPiBkaXYgPiBoNFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciBoNFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyID4gLnJlc3BvbnNlcy10YWJsZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtd3JhcHBlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5idG4tZ3JvdXAgKyAucmVzcG9uc2VzLXdyYXBwZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VNaWNyb2xpZ2h0VGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAubWljcm9saWdodFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZUNvZGVUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5taWNyb2xpZ2h0IGNvZGVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VDbGlwYm9hcmRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgLmNvcHktdG8tY2xpcGJvYXJkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIC5jb3B5LXRvLWNsaXBib2FyZCBidXR0b25cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VDdXJsQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIC5jdXJsLWNvbW1hbmQgLmNvcHktdG8tY2xpcGJvYXJkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlRG93bmxvYWRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgLmRvd25sb2FkLWNvbnRlbnRzXCI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfc2VydmVyUmVzcG9uc2VIZWFkZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgLnJlc3BvbnNlcy1oZWFkZXIgdGQuY29sX2hlYWRlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXJ2ZXJSZXNwb25zZVN0YXR1c1RhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAucmVzcG9uc2UgLnJlc3BvbnNlLWNvbF9zdGF0dXNcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc2VydmVyUmVzcG9uc2VEZXNjcmlwdGlvblRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAucmVzcG9uc2UgLnJlc3BvbnNlLWNvbF9kZXNjcmlwdGlvblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXJ2ZXJSZXNwb25zZVN1YkhlYWRlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAucmVzcG9uc2UgaDVcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9jbGVhckJ0blRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLmJ0bi1ncm91cCAuYnRuLWNsZWFyXCI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0aW9uVGFnVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jay10YWdbZGF0YS10YWddXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvbkhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLm9wYmxvY2stc2VjdGlvbi1oZWFkZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0aW9uSGVhZGVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1zZWN0aW9uLWhlYWRlciBoNFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25IZWFkZXJEZWNvcmF0aW9uVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1zZWN0aW9uLWhlYWRlciBoNCBzcGFuOjphZnRlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25UcnlPdXRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGVyYXRpb24tdGFnLWNvbnRlbnQgZGl2LnRyeS1vdXRcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9kZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLm9wYmxvY2stYm9keSAub3BibG9jay1kZXNjcmlwdGlvbi13cmFwcGVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3N1bW1hcnlUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGVyYXRpb24tdGFnLWNvbnRlbnQgZGl2Lm9wYmxvY2sgLm9wYmxvY2stc3VtbWFyeVwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGFsSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuZGlhbG9nLXV4IC5tb2RhbC11eC1oZWFkZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxIZWFkZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4LWhlYWRlciBoM1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RhbFRpdGxlVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuZGlhbG9nLXV4IC5tb2RhbC11eC1jb250ZW50IGg0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuZGlhbG9nLXV4IC5tb2RhbC11eC1jb250ZW50IC53cmFwcGVyIGNvZGVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm1vZGFsLXV4IGxhYmVsXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGFsQ29kZVRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm1vZGFsLXV4IGNvZGVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxCdG5UYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5tb2RhbC11eCBidXR0b25cIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJzVGFibGVDb250YWluZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXIgdGFibGUucGFyYW1ldGVycyB0aGVhZFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJOYW1lRmllbGRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXIgdGFibGUucGFyYW1ldGVycyAucGFyYW1ldGVyX19uYW1lXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtZXRlclR5cGVGaWVsZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIC5wYXJhbWV0ZXJfX3R5cGVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyRGVwcmVjYXRlZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIC5wYXJhbWV0ZXJfX2RlcHJlY2F0ZWRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyU291cmNlVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAudGFibGUtY29udGFpbmVyIHRhYmxlLnBhcmFtZXRlcnMgLnBhcmFtZXRlcl9faW5cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyUmVxdWlyZWRNYXJrZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXIgdGFibGUucGFyYW1ldGVycyAucGFyYW1ldGVyX19uYW1lLnJlcXVpcmVkIHNwYW5cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyUmVxdWlyZWRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXIgdGFibGUucGFyYW1ldGVycyAucGFyYW1ldGVyX19uYW1lLnJlcXVpcmVkOjphZnRlclwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2FwaUNvbnRlbnRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCIuYXBpLWNvbnRlbnRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaW5wdXRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJba2luZD1maWVsZF0gfiB0ZFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2RlU291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiY29kZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9jb2RlQm94U291cmNlU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCJbZGF0YS1zZWN0aW9uLWlkXSBbcm9sZT10YWJwYW5lbF1cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGF0YVNlY3Rpb25Tb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIltkYXRhLXNlY3Rpb24taWRdID4gZGl2ID4gZGl2XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpZWxkU291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiW2tpbmQ9ZmllbGRdXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3JlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJba2luZD1maWVsZF0gZGl2XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2ZpZWxkTWFya2VyU291cmNlU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCJba2luZD1maWVsZF06Zmlyc3Qgc3BhbjpmaXJzdC1jaGlsZFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zYW5TZXJpZkZvbnRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJoMlwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIltraW5kPWZpZWxkXSBzcGFuXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsdGVybmF0aXZlU2Fuc1NlcmlmU291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiaDVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaDJTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJoMlwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oM1NvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcImgzXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2g1U291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiaDVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbGFiZWxTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJba2luZD1maWVsZF0gfiB0ZFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF90eXBlU291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiW2tpbmQ9ZmllbGRdIH4gdGQgc3BhblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9idG5Tb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJbcm9sZT10YWJwYW5lbF0gYnV0dG9uXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2RlZmF1bHRCb3JkZXJDb2xvclNlbGVjdG9yOiBzdHJpbmcgPSBcImg1XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhCdG5Tb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICAnYVtocmVmKj1cInN3YWdnZXIuanNvblwiXTplcSgwKSc7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2h0dHBWZXJiU291cmNlU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCJbZGF0YS1zZWN0aW9uLWlkXSAuaHR0cC12ZXJiXCI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIG9wdGlvbnM6IFN0eWxlTWF0Y2hlck9wdGlvbnMsXG4gICAgc3dhZ2dlckNvbmZpZzogU3dhZ2dlckNvbmZpZyxcbiAgICByZWRvY0NvbmZpZzogUmVkb2NUcnlJdE91dENvbmZpZyxcbiAgKSB7XG4gICAgQ29uZmlnLnBhcnNlT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgICB0aGlzLnN3YWdnZXJDb25maWcgPSBzd2FnZ2VyQ29uZmlnO1xuICAgIHRoaXMucmVkb2NDb25maWcgPSByZWRvY0NvbmZpZztcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbmVkSW5mb3JtYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9LiR7dGhpcy5zd2FnZ2VyQ29uZmlnLnNob3dDbGFzc30gJHt0aGlzLl9pbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW5lZEF1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfS4ke3RoaXMuc3dhZ2dlckNvbmZpZy5zaG93Q2xhc3N9ICR7dGhpcy5fYXV0aFdyYXBwZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuZWRNb2RlbHNDb250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9LiR7dGhpcy5zd2FnZ2VyQ29uZmlnLnNob3dDbGFzc30gJHt0aGlzLl9tb2RlbHNDb250YWluZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcub3BlcmF0aW9uQ29udGFpbmVyU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbmVkT3BlcmF0aW9uQ29udGFpbmVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5vcGVyYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3Rvcn0uJHt0aGlzLnN3YWdnZXJDb25maWcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzc31gO1xuICB9XG5cbiAgcHVibGljIGdldCBpbnB1dFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9pbnB1dFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9zZWxlY3RUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCB0ZXh0QXJlYVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl90ZXh0QXJlYVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFncmFwaFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhZ3JhcGhUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBleGVjdXRlQnRuVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX2V4ZWN1dGVCdG5UYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlVGFibGVUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VXcmFwcGVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VXcmFwcGVyUmVzdWx0VGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlV3JhcHBlclJlc3VsdFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvblNlY3Rpb25UYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcub3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW5lZE9wZXJhdGlvblNlY3Rpb25TZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm9wZXJhdGlvblNlY3Rpb25UYXJnZXRTZWxlY3Rvcn0uJHt0aGlzLnN3YWdnZXJDb25maWcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzc31gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25UYWdUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uVGFnVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX29wZXJhdGlvbkhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNsZWFyQnRuVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX2NsZWFyQnRuVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uSGVhZGVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX29wZXJhdGlvbkhlYWRlclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VNaWNyb2xpZ2h0VGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlTWljcm9saWdodFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlQ29kZVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZUNvZGVUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlc2NyaXB0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX2Rlc2NyaXB0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmVyUmVzcG9uc2VTdWJIZWFkZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fc2VydmVyUmVzcG9uc2VTdWJIZWFkZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2ZXJSZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9zZXJ2ZXJSZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZlclJlc3BvbnNlU3RhdHVzVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3NlcnZlclJlc3BvbnNlU3RhdHVzVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmVyUmVzcG9uc2VEZXNjcmlwdGlvblRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VDbGlwYm9hcmRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VDbGlwYm9hcmRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZUNsaXBib2FyZEJ0blRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZUNsaXBib2FyZEJ0blRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZUN1cmxDbGlwYm9hcmRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZURvd25sb2FkVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlRG93bmxvYWRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5hdXRob3JpemVNb2RhbFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxIZWFkZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fbW9kYWxIZWFkZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbFRpdGxlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsVGl0bGVUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbExhYmVsVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsTGFiZWxUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbFRpdGxlQ29kZVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9tb2RhbFRpdGxlQ29kZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsQ29kZVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9tb2RhbENvZGVUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbEJ0blRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9tb2RhbEJ0blRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uSGVhZGVyRGVjb3JhdGlvblRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJzVGFibGVDb250YWluZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJzSGVhZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJzSGVhZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtZXRlck5hbWVGaWVsZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJOYW1lRmllbGRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJUeXBlRmllbGRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcGFyYW1ldGVyVHlwZUZpZWxkVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyRGVwcmVjYXRlZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyU291cmNlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlclNvdXJjZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyUmVxdWlyZWRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcGFyYW1ldGVyUmVxdWlyZWRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25UcnlPdXRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uVHJ5T3V0VGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc3VtbWFyeVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9zdW1tYXJ5VGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VUaXRsZVRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZVRpdGxlVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXBpQ29udGVudFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fYXBpQ29udGVudFNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0U291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9pbnB1dFNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRpbnB1dFNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuaW5wdXRTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvZGVTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2NvZGVTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkY29kZVNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuY29kZVNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29kZUJveFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fY29kZUJveFNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRjb2RlQm94U291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5jb2RlQm94U291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhU2VjdGlvblNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fZGF0YVNlY3Rpb25Tb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkZGF0YVNlY3Rpb25Tb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmRhdGFTZWN0aW9uU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBmaWVsZFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fZmllbGRTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkZmllbGRTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmZpZWxkU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCByZXF1aXJlZEZpZWxkU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9yZXF1aXJlZEZpZWxkU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJHJlcXVpcmVkRmllbGRTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLnJlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpZWxkTWFya2VyU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9maWVsZE1hcmtlclNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRmaWVsZE1hcmtlclNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuZmllbGRNYXJrZXJTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBzYW5TZXJpZkZvbnRTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX3NhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRzYW5TZXJpZkZvbnRTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLnNhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWx0ZXJuYXRpdmVTYW5zU2VyaWZTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2FsdGVybmF0aXZlU2Fuc1NlcmlmU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaDJTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2gyU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGgyU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5oMlNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaDNTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2gzU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGgzU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5oM1NvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaDVTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2g1U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGg1U291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5oNVNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbGFiZWxTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2xhYmVsU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGxhYmVsU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5sYWJlbFNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHlwZVNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fdHlwZVNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICR0eXBlU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy50eXBlU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBidG5Tb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2J0blNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRidG5Tb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmJ0blNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdEJvcmRlckNvbG9yU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9kZWZhdWx0Qm9yZGVyQ29sb3JTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0Qm9yZGVyQ29sb3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJCh0aGlzLmxhYmVsU291cmNlU2VsZWN0b3IpLmNzcyhcImJvcmRlci1jb2xvclwiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVmYXVsdEJhY2tncm91bmRDb2xvcigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGJnID1cbiAgICAgICQodGhpcy5hcGlDb250ZW50U291cmNlU2VsZWN0b3IpLmNzcyhcImJhY2tncm91bmQtY29sb3JcIikgfHwgXCJ3aGl0ZVwiO1xuICAgIHJldHVybiAvcmdiYShcXHMpKj9cXCgwLChcXHMpKj8wLChcXHMpKj8wLChcXHMpKj8wKFxccykqP1xcKS8udGVzdChiZylcbiAgICAgID8gXCJ3aGl0ZVwiXG4gICAgICA6IGJnO1xuICB9XG5cbiAgcHVibGljIGdldCBhdXRoQnRuU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9hdXRoQnRuU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGF1dGhCdG5Tb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmF1dGhCdG5Tb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dGhCdG5DbGFzc2VzU291cmNlKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuICQodGhpcy5hdXRoQnRuU291cmNlU2VsZWN0b3IpLmF0dHIoXCJjbGFzc1wiKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaHR0cFZlcmJTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2h0dHBWZXJiU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGh0dHBWZXJiU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5odHRwVmVyYlNvdXJjZVNlbGVjdG9yKTtcbiAgfVxufVxuIiwiaW1wb3J0IHtcbiAgQ2FsbGJhY2tGdW5jdGlvbixcbiAgU3dhZ2dlck9wdGlvbnMsXG59IGZyb20gXCIuLi9pbnRlcmZhY2VzL3N3YWdnZXItb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgU3dhZ2dlckNvbmZpZyBpbXBsZW1lbnRzIFN3YWdnZXJPcHRpb25zIHtcbiAgcHJpdmF0ZSBfcmVzb2x2ZTogQ2FsbGJhY2tGdW5jdGlvbiA9ICgpID0+IHt9OyAvL2VzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHByaXZhdGUgcmVhZG9ubHkgX29uQ29tcGxldGU6IENhbGxiYWNrRnVuY3Rpb24gPSAoKSA9PiB7fTsgLy9lc2xpbnQtZGlzYWJsZS1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1lbXB0eS1mdW5jdGlvblxuICBwdWJsaWMgcmVhZG9ubHkgb25Db21wbGV0ZVByb21pc2U6IFByb21pc2U8dm9pZD47XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aG9yaXplQnRuU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuYXV0aC13cmFwcGVyIC5hdXRob3JpemVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aG9yaXplRG9uZUJ0blNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmF1dGgtYnRuLXdyYXBwZXIgLmJ0bi1kb25lXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhvcml6ZU1vZGFsQ2xvc2VCdG5TZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4LWhlYWRlciAuY2xvc2UtbW9kYWxcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aG9yaXplTW9kYWxTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGFsT3ZlcmxheVNlbGVjdG9yOiBzdHJpbmcgPSBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXhcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25TZWN0aW9uQ29udGFpbmVyU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jay10YWctc2VjdGlvblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25Db250YWluZXJTZWxlY3Rvcjogc3RyaW5nID0gXCIuc3dhZ2dlci11aSAub3BibG9ja1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yOiBzdHJpbmcgPVxuICAgICcuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1zdW1tYXJ5LXttZXRob2R9IFtkYXRhLXBhdGg9XCJ7YXBpfVwiXSc7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfd3JhcHBlclNlbGVjdG9yOiBzdHJpbmcgPSBcIi5zd2FnZ2VyLXVpIC53cmFwcGVyXCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IGRvbV9pZDogc3RyaW5nID0gXCIjc3dhZ2dlci11aVwiO1xuICBwdWJsaWMgcmVhZG9ubHkgdXJsOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSB0cnlJdE91dEVuYWJsZWQ6IGJvb2xlYW47XG5cbiAgcHVibGljIHJlYWRvbmx5IGF1dGhNb2RhbENsYXNzOiBzdHJpbmcgPSBcImF1dGgtbW9kYWxcIjtcbiAgcHVibGljIHJlYWRvbmx5IGhpZGVDbGFzczogc3RyaW5nID0gXCJoaWRlXCI7XG4gIHB1YmxpYyByZWFkb25seSBzaG93Q2xhc3M6IHN0cmluZyA9IFwic2hvd1wiO1xuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzczogc3RyaW5nID0gXCJvcGVuZWQtc2hhZG93XCI7XG5cbiAgcHVibGljIHJlYWRvbmx5IHZlcnNpb246IHN0cmluZyA9IFwiMy40OC4wXCI7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogU3dhZ2dlck9wdGlvbnMsIHVybDogc3RyaW5nLCB0cnlJdE91dEVuYWJsZWQ6IGJvb2xlYW4pIHtcbiAgICBDb25maWcucGFyc2VPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMudXJsID0gdXJsO1xuICAgIHRoaXMudHJ5SXRPdXRFbmFibGVkID0gdHJ5SXRPdXRFbmFibGVkO1xuICAgIHRoaXMub25Db21wbGV0ZVByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPihcbiAgICAgIChyZXNvbHZlKSA9PiAodGhpcy5fcmVzb2x2ZSA9IHJlc29sdmUpLFxuICAgICk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZG9tX2lkLnJlcGxhY2UoXCIjXCIsIFwiXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCBib3hTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmRvbV9pZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0aG9yaXplQnRuU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9hdXRob3JpemVCdG5TZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBhdXRob3JpemVEb25lQnRuU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9hdXRob3JpemVEb25lQnRuU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0aG9yaXplTW9kYWxDbG9zZUJ0blNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9ICR7dGhpcy5fYXV0aG9yaXplTW9kYWxDbG9zZUJ0blNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dGhvcml6ZU1vZGFsU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9hdXRob3JpemVNb2RhbFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW5Nb2RhbE92ZXJsYXlTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNob3duQXV0aE1vZGFsU2VsZWN0b3J9ICR7dGhpcy5fbW9kYWxPdmVybGF5U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uQ29udGFpbmVyU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uU3VtbWFyeVBhdHRlcm5TZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfSAke3RoaXMuX29wZXJhdGlvblN1bW1hcnlQYXR0ZXJuU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgd3JhcHBlclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9ICR7dGhpcy5fd3JhcHBlclNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW5BdXRob3JpemVNb2RhbFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2hvd25BdXRoTW9kYWxTZWxlY3Rvcn0gJHt0aGlzLl9hdXRob3JpemVNb2RhbFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZGRlblNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9LiR7dGhpcy5oaWRlQ2xhc3N9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd25TZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfS4ke3RoaXMuc2hvd0NsYXNzfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNob3duQXV0aE1vZGFsU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0uJHt0aGlzLmF1dGhNb2RhbENsYXNzfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ1bmRsZVVybCgpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHtDb25maWcuY2RuVXJsfS9zd2FnZ2VyLXVpLWRpc3RAJHt0aGlzLnZlcnNpb259L3N3YWdnZXItdWktYnVuZGxlLmpzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3NzVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke0NvbmZpZy5jZG5Vcmx9c3dhZ2dlci11aS1kaXN0QCR7dGhpcy52ZXJzaW9ufS9zd2FnZ2VyLXVpLmNzc2A7XG4gIH1cblxuICBwdWJsaWMgb25Db21wbGV0ZSA9ICgpID0+IHtcbiAgICB0aGlzLl9vbkNvbXBsZXRlKCk7XG4gICAgdGhpcy5fcmVzb2x2ZSgpO1xuICB9O1xufVxuIiwiaW1wb3J0IHsgVHJ5QnRuT3B0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3RyeS1idG4tb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IENvbmZpZyB9IGZyb20gXCIuL2NvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgVHJ5QnRuQ29uZmlnQ29uZmlnIGltcGxlbWVudHMgVHJ5QnRuT3B0aW9ucyB7XG4gIHB1YmxpYyByZWFkb25seSBzaWJsaW5nU2VsZWN0b3I6IHN0cmluZyA9IFwiLmh0dHAtdmVyYlwiO1xuICBwdWJsaWMgcmVhZG9ubHkgdGV4dDogc3RyaW5nID0gXCJUUlkgT1VUXCI7XG4gIHB1YmxpYyByZWFkb25seSBjbGFzc05hbWU6IHN0cmluZyA9IFwidHJ5QnRuXCI7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZENsYXNzTmFtZTogc3RyaW5nID0gXCJzZWxlY3RlZFwiO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihvcHRpb25zOiBUcnlCdG5PcHRpb25zKSB7XG4gICAgQ29uZmlnLnBhcnNlT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYC4ke3RoaXMuY2xhc3NOYW1lfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlbGVjdGVkU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zZWxlY3Rvcn0uJHt0aGlzLnNlbGVjdGVkQ2xhc3NOYW1lfWA7XG4gIH1cbn1cbiIsImltcG9ydCB7IFN3YWdnZXJXcmFwcGVyIH0gZnJvbSBcIi4uL3dyYXBwZXJzL3N3YWdnZXIud3JhcHBlclwiO1xuaW1wb3J0IHsgVHJ5QnRuIH0gZnJvbSBcIi4vdHJ5LmJ0blwiO1xuaW1wb3J0IHsgQXV0aEJ0bkNvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvYXV0aC1idG4tY29uZmlnXCI7XG5cbmRlY2xhcmUgbGV0ICQ6IGFueTtcblxuY29uc3QgYXV0aENsb3NlQ2xpY2tIYW5kbGVyID0gKCkgPT4ge1xuICBTd2FnZ2VyV3JhcHBlci5oaWRlQXV0aE1vZGFsKCk7XG59O1xuXG5jb25zdCBhdXRoQ2xpY2tIYW5kbGVyID0gKCkgPT4ge1xuICBUcnlCdG4udW5zZWxlY3RBbGwoKTtcbiAgU3dhZ2dlcldyYXBwZXIuc2hvd0F1dGhNb2RhbCgpO1xufTtcblxuZXhwb3J0IGNsYXNzIEF1dGhCdG4ge1xuICBwdWJsaWMgc3RhdGljIGNmZzogQXV0aEJ0bkNvbmZpZztcblxuICBwdWJsaWMgc3RhdGljIGdldCAkZWxlbWVudCgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAuJHtBdXRoQnRuLmNmZy5jbGFzc05hbWV9YCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGluaXQoKTogdm9pZCB7XG4gICAgaWYgKCFTd2FnZ2VyV3JhcHBlci5oYXNBdXRoKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgJGF1dGhCdG4gPSAkKFxuICAgICAgYDxkaXYgY2xhc3M9XCIke0F1dGhCdG4uY2ZnLmNsYXNzTmFtZX1cIj4ke0F1dGhCdG4uY2ZnLnRleHR9PC9kaXY+YCxcbiAgICApO1xuICAgICRhdXRoQnRuLmNsaWNrKGF1dGhDbGlja0hhbmRsZXIpO1xuICAgICQoQXV0aEJ0bi5jZmcucG9zU2VsZWN0b3IpLmFmdGVyKCRhdXRoQnRuKTtcbiAgICBTd2FnZ2VyV3JhcHBlci5vbkNsb3NlQXV0aE1vZGFsKGF1dGhDbG9zZUNsaWNrSGFuZGxlcik7XG4gIH1cbn1cbiIsImltcG9ydCB7IFN3YWdnZXJXcmFwcGVyIH0gZnJvbSBcIi4uL3dyYXBwZXJzL3N3YWdnZXIud3JhcHBlclwiO1xuaW1wb3J0IHsgUmVkb2NXcmFwcGVyIH0gZnJvbSBcIi4uL3dyYXBwZXJzL3JlZG9jLndyYXBwZXJcIjtcbmltcG9ydCB7IFRyeUJ0bkNvbmZpZ0NvbmZpZyB9IGZyb20gXCIuLi9jb25maWcvdHJ5LWJ0bi1jb25maWdcIjtcblxuZGVjbGFyZSBsZXQgJDogYW55O1xuXG5jb25zdCB0cnlDbGlja0hhbmRsZXIgPSAoZXZlbnQ6IEV2ZW50KSA9PiB7XG4gIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICBjb25zdCAkdHJ5QnRuID0gJChldmVudC50YXJnZXQpO1xuICBjb25zdCBzaG91bGRPcGVuID0gIVRyeUJ0bi5pc1NlbGVjdGVkKCR0cnlCdG4pO1xuICBUcnlCdG4udW5zZWxlY3RBbGwoKTtcbiAgaWYgKHNob3VsZE9wZW4pIHtcbiAgICBUcnlCdG4uc2VsZWN0KCR0cnlCdG4pO1xuICB9XG59O1xuXG5leHBvcnQgY2xhc3MgVHJ5QnRuIHtcbiAgcHVibGljIHN0YXRpYyBjZmc6IFRyeUJ0bkNvbmZpZ0NvbmZpZztcblxuICBwcml2YXRlIHN0YXRpYyBnZXQgJHNpYmxpbmcoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChgJHtUcnlCdG4uY2ZnLnNpYmxpbmdTZWxlY3Rvcn1gKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaXNTZWxlY3RlZCgkYnRuOiBKUXVlcnkpOiBib29sZWFuIHtcbiAgICByZXR1cm4gJGJ0bi5oYXNDbGFzcyhUcnlCdG4uY2ZnLnNlbGVjdGVkQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgdW5zZWxlY3RBbGwoKTogdm9pZCB7XG4gICAgU3dhZ2dlcldyYXBwZXIuaGlkZSgpO1xuICAgIFJlZG9jV3JhcHBlci5oaWRlKCk7XG4gICAgJChUcnlCdG4uY2ZnLnNlbGVjdG9yKS5yZW1vdmVDbGFzcyhUcnlCdG4uY2ZnLnNlbGVjdGVkQ2xhc3NOYW1lKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0KCRidG46IEpRdWVyeSk6IHZvaWQge1xuICAgICRidG4uYWRkQ2xhc3MoVHJ5QnRuLmNmZy5zZWxlY3RlZENsYXNzTmFtZSk7XG4gICAgUmVkb2NXcmFwcGVyLmNvbmZpZ3VyZVRyeUJveCgpO1xuXG4gICAgY29uc3QgeyBhcGksIG1ldGhvZCB9ID0gUmVkb2NXcmFwcGVyLmdldEN1cnJlbnRBcGlJbmZvKCk7XG4gICAgU3dhZ2dlcldyYXBwZXIuc2VsZWN0QXBpU2VjdGlvbihhcGksIG1ldGhvZCk7XG5cbiAgICBSZWRvY1dyYXBwZXIuJHRyeUl0Qm94Q29udGFpbmVyLmFwcGVuZChTd2FnZ2VyV3JhcHBlci4kYm94KTtcbiAgICBTd2FnZ2VyV3JhcHBlci5zaG93KCk7XG4gICAgUmVkb2NXcmFwcGVyLmZpeFNjcm9sbFBvc2l0aW9uKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCAkc2VsZWN0ZWQoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChgJHtUcnlCdG4uY2ZnLnNlbGVjdGVkU2VsZWN0b3J9YCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCAkYnRuKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQoYC4ke1RyeUJ0bi5jZmcuY2xhc3NOYW1lfWApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpbml0KCk6IHZvaWQge1xuICAgIGNvbnN0ICR0cnlCdG4gPSAkKFxuICAgICAgYDxidXR0b24gY2xhc3M9XCIke1RyeUJ0bi5jZmcuY2xhc3NOYW1lfVwiPiR7VHJ5QnRuLmNmZy50ZXh0fTwvYnV0dG9uPmAsXG4gICAgKTtcbiAgICAkdHJ5QnRuLmNsaWNrKHRyeUNsaWNrSGFuZGxlcik7XG4gICAgVHJ5QnRuLiRzaWJsaW5nLmFmdGVyKCR0cnlCdG4pO1xuICB9XG59XG4iLCJleHBvcnQgY2xhc3MgSW52YWxpZEVsZW1lbnRFcnJvciBleHRlbmRzIEVycm9yIHt9XG4iLCJpbXBvcnQgeyBsb2FkU2NyaXB0IH0gZnJvbSBcIi4vdXRpbHMvbG9hZGVycy9zY3JpcHRzXCI7XG5pbXBvcnQgeyBTdHlsZXIgfSBmcm9tIFwiLi9zdHlsZXJcIjtcbmltcG9ydCB7IFJlZG9jVHJ5SXRPdXRPcHRpb25zIH0gZnJvbSBcIi4vaW50ZXJmYWNlcy9yZWRvYy10cnktaXQtb3V0LW9wdGlvbnMuaW50ZXJmYWNlXCI7XG5pbXBvcnQgeyBTd2FnZ2VyV3JhcHBlciB9IGZyb20gXCIuL3dyYXBwZXJzL3N3YWdnZXIud3JhcHBlclwiO1xuaW1wb3J0IHsgUmVkb2NXcmFwcGVyIH0gZnJvbSBcIi4vd3JhcHBlcnMvcmVkb2Mud3JhcHBlclwiO1xuaW1wb3J0IHsgQXV0aEJ0biB9IGZyb20gXCIuL2VsZW1lbnRzL2F1dGguYnRuXCI7XG5pbXBvcnQgeyBUcnlCdG4gfSBmcm9tIFwiLi9lbGVtZW50cy90cnkuYnRuXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3N3YWdnZXItY29uZmlnXCI7XG5pbXBvcnQgeyBSZWRvY1RyeUl0T3V0Q29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3JlZG9jLXRyeS1pdC1vdXQtY29uZmlnXCI7XG5pbXBvcnQgeyBBdXRoQnRuQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL2F1dGgtYnRuLWNvbmZpZ1wiO1xuaW1wb3J0IHsgVHJ5QnRuQ29uZmlnQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnL3RyeS1idG4tY29uZmlnXCI7XG5pbXBvcnQgeyBTdHlsZU1hdGNoZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvc3R5bGUtbWF0Y2hlci5jb25maWdcIjtcblxuZXhwb3J0IGNsYXNzIFJlZG9jVHJ5SXRPdXQge1xuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkRGVwZW5kZW5jaWVzKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGxvYWRTY3JpcHQoUmVkb2NXcmFwcGVyLmNmZy50cnlJdERlcGVuZGVuY2llcy5qcXVlcnlVcmwpO1xuICAgIHJldHVybiBsb2FkU2NyaXB0KFJlZG9jV3JhcHBlci5jZmcudHJ5SXREZXBlbmRlbmNpZXMuanF1ZXJ5U2Nyb2xsVG9VcmwpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgYXN5bmMgbG9hZEFsbCgpOiBQcm9taXNlPHZvaWRbXT4ge1xuICAgIGF3YWl0IFJlZG9jVHJ5SXRPdXQubG9hZERlcGVuZGVuY2llcygpO1xuICAgIHJldHVybiBQcm9taXNlLmFsbChbUmVkb2NXcmFwcGVyLmluaXQoKSwgU3dhZ2dlcldyYXBwZXIuaW5pdCgpXSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBjb25maWcoXG4gICAgdXJsOiBzdHJpbmcsXG4gICAgY2ZnOiBSZWRvY1RyeUl0T3V0T3B0aW9ucyxcbiAgICBlbGVtZW50PzogSFRNTEVsZW1lbnQsXG4gICk6IHZvaWQge1xuICAgIFJlZG9jV3JhcHBlci5jZmcgPSBuZXcgUmVkb2NUcnlJdE91dENvbmZpZyh1cmwsIGNmZywgZWxlbWVudCk7XG5cbiAgICBpZiAoUmVkb2NXcmFwcGVyLmNmZy50cnlJdE91dEVuYWJsZWQpIHtcbiAgICAgIFN3YWdnZXJXcmFwcGVyLmNmZyA9IG5ldyBTd2FnZ2VyQ29uZmlnKFxuICAgICAgICBjZmcuc3dhZ2dlck9wdGlvbnMgfHwge30sXG4gICAgICAgIHVybCxcbiAgICAgICAgdHJ1ZSxcbiAgICAgICk7XG4gICAgICBBdXRoQnRuLmNmZyA9IG5ldyBBdXRoQnRuQ29uZmlnKGNmZy5hdXRoQnRuIHx8IHt9KTtcbiAgICAgIFRyeUJ0bi5jZmcgPSBuZXcgVHJ5QnRuQ29uZmlnQ29uZmlnKGNmZy50cnlCdG4gfHwge30pO1xuICAgICAgU3R5bGVyLmNmZyA9IG5ldyBTdHlsZU1hdGNoZXJDb25maWcoXG4gICAgICAgIGNmZy5zdHlsZXJNYXRjaGVyIHx8IHt9LFxuICAgICAgICBTd2FnZ2VyV3JhcHBlci5jZmcsXG4gICAgICAgIFJlZG9jV3JhcHBlci5jZmcsXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgaW5pdChcbiAgICBkb2NVcmw6IHN0cmluZyxcbiAgICBjZmc6IFJlZG9jVHJ5SXRPdXRPcHRpb25zLFxuICAgIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCxcbiAgKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgLy8gVGhpcyBwYXJzZXMgYW5kIHNldHMgdGhlIGNvbmZpZyBvbiB0aGUgc3RhdGljIGNmZyBwcm9wZXJ0eSBvbiB0aGUgUmVkb2NXcmFwcGVyIGNsYXNzXG4gICAgUmVkb2NUcnlJdE91dC5jb25maWcoZG9jVXJsLCBjZmcsIGVsZW1lbnQpO1xuXG4gICAgaWYgKFJlZG9jV3JhcHBlci5jZmcuZGlzYWJsZVplbnNjcm9sbCkge1xuICAgICAgKHdpbmRvdyBhcyBhbnkpLm5vWmVuc21vb3RoID0gdHJ1ZTtcbiAgICB9XG5cbiAgICBpZiAoUmVkb2NXcmFwcGVyLmNmZy50cnlJdE91dEVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IFJlZG9jVHJ5SXRPdXQubG9hZEFsbCgpO1xuICAgICAgQXV0aEJ0bi5pbml0KCk7XG4gICAgICBUcnlCdG4uaW5pdCgpO1xuICAgICAgU3R5bGVyLmluaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgUmVkb2NXcmFwcGVyLmluaXQoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFN0eWxlQnVpbGRlciB9IGZyb20gXCIuL3V0aWxzL3N0eWxlLWJ1aWxkZXJcIjtcbmltcG9ydCB7IFN3YWdnZXJXcmFwcGVyIH0gZnJvbSBcIi4vd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyXCI7XG5pbXBvcnQgeyBUcnlCdG4gfSBmcm9tIFwiLi9lbGVtZW50cy90cnkuYnRuXCI7XG5pbXBvcnQgeyBBdXRoQnRuIH0gZnJvbSBcIi4vZWxlbWVudHMvYXV0aC5idG5cIjtcbmltcG9ydCB7IFN0eWxlTWF0Y2hlckNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9zdHlsZS1tYXRjaGVyLmNvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgU3R5bGVyIHtcbiAgcHVibGljIHN0YXRpYyBjZmc6IFN0eWxlTWF0Y2hlckNvbmZpZztcblxuICBwcml2YXRlIHN0YXRpYyBzaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblxuICBwcml2YXRlIHN0YXRpYyBzaGVldEFkZGVkT25Eb2N1bWVudDogZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdXBkYXRlKCk6IHZvaWQge1xuICAgIGlmICghU3R5bGVyLnNoZWV0QWRkZWRPbkRvY3VtZW50KSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFN0eWxlci5zaGVldCk7XG4gICAgfVxuICAgIFN0eWxlci5zaGVldC5pbm5lckhUTUwgPSBTdHlsZUJ1aWxkZXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGF1dGhBcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLnNob3duQXV0aE1vZGFsU2VsZWN0b3IpXG4gICAgICAuaGlkZGVuKClcbiAgICAgIC5zdHlsZSh7IGhlaWdodDogXCJhdXRvXCIsIGxlZnQ6IDAsIHRvcDogMCwgd2lkdGg6IFwiYXV0b1wiIH0pXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5hdXRob3JpemVNb2RhbFNlbGVjdG9yKVxuICAgICAgLmhpZGRlbigpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVuTW9kYWxPdmVybGF5U2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVuQXV0aG9yaXplTW9kYWxTZWxlY3RvcilcbiAgICAgIC52aXNpYmxlKClcbiAgICAgIC5zdHlsZSh7IHdpZHRoOiBcImF1dG9cIiwgaGVpZ2h0OiBcImF1dG9cIiB9KTtcblxuICAgIEF1dGhCdG4uJGVsZW1lbnQuYWRkQ2xhc3MoU3R5bGVyLmNmZy5hdXRoQnRuQ2xhc3Nlc1NvdXJjZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0cnlCdG5BcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoVHJ5QnRuLmNmZy5zZWxlY3RvcilcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYXV0aEJ0blNvdXJjZSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaHR0cFZlcmJTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaHR0cFZlcmJTb3VyY2UsIFtcInBhZGRpbmdcIl0pXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kYXV0aEJ0blNvdXJjZSwgW1wiY29sb3JcIl0pXG4gICAgICAuc3R5bGUoe1xuICAgICAgICBcImJhY2tncm91bmQtY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICBcIm1hcmdpbi1sZWZ0XCI6IFwiMnB4XCIsXG4gICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlucHV0QXBwbGllcygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcuaW5wdXRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSlcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSwgW1wiY29sb3JcIiwgXCJmb250LXNpemVcIl0pXG4gICAgICAuc3R5bGUoeyBcImJvcmRlci1yYWRpdXNcIjogMCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1vZGFsQXBwbGllcygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcubW9kYWxIZWFkZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaDJTb3VyY2UpXG4gICAgICAuYWRkKFN0eWxlci5jZmcubW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbFRpdGxlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGgzU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm1vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kbGFiZWxTb3VyY2UsIFwiZm9udC1zaXplXCIpXG4gICAgICAuYWRkKFN0eWxlci5jZmcubW9kYWxDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGgzU291cmNlKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm1vZGFsVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcImJhY2tncm91bmQtY29sb3JcIjogXCJ3aGl0ZVwiLCBcImJvcmRlci1yYWRpdXNcIjogXCIwXCIgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbEJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJHNhblNlcmlmRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLnN0eWxlKHsgXCJib3JkZXItcmFkaXVzXCI6IDAgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgXCJib3JkZXItY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0Qm9yZGVyQ29sb3IgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0cnlJdEJveEFwcGxpZXMoKTogdm9pZCB7XG4gICAgU3R5bGVCdWlsZGVyLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvblNlY3Rpb25UYXJnZXRTZWxlY3RvcilcbiAgICAgIC5oaWRkZW4oKVxuICAgICAgLm5vSGVpZ2h0KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVuZWRPcGVyYXRpb25TZWN0aW9uU2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuc3R5bGUoeyBoZWlnaHQ6IFwiaW5pdGlhbFwiIH0pO1xuXG4gICAgU3R5bGVCdWlsZGVyLmFkZChTdHlsZXIuY2ZnLm9wZW5lZE9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yKS5zdHlsZSh7XG4gICAgICBkaXNwbGF5OiBcImJsb2NrXCIsXG4gICAgfSk7XG5cbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kZGF0YVNlY3Rpb25Tb3VyY2UsIFwicGFkZGluZ1wiKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVyYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuc3R5bGUoeyBcImJhY2tncm91bmQtY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0QmFja2dyb3VuZENvbG9yIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcuc2VsZWN0VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGlucHV0U291cmNlKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSwgW1wiYm9yZGVyLXdpZHRoXCIsIFwiYm9yZGVyLXN0eWxlXCJdKVxuICAgICAgLmFic29sdXRlKClcbiAgICAgIC5zdHlsZSh7XG4gICAgICAgIFwiYm9yZGVyLXdpZHRoXCI6IFwiMXB4XCIsXG4gICAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBTdHlsZXIuY2ZnLmRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIFwiYm9yZGVyLXN0eWxlXCI6IFwic29saWRcIixcbiAgICAgICAgcGFkZGluZzogXCIwIDVweFwiLFxuICAgICAgICBcIm1hcmdpbi10b3BcIjogXCItMyVcIixcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIFwibWFyZ2luLXJpZ2h0XCI6IFN0eWxlci5jZmcuJGRhdGFTZWN0aW9uU291cmNlLmNzcyhcInBhZGRpbmctcmlnaHRcIiksXG4gICAgICB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFncmFwaFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy50ZXh0QXJlYVRhcmdldFNlbGVjdG9yKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlKVxuICAgICAgLmNsb25lQm9yZGVyKFN0eWxlci5jZmcuJGNvZGVCb3hTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgW1wiY29sb3JcIl0pXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgW1wiYmFja2dyb3VuZC1jb2xvclwiXSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5kZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN0eWxlci5jZmcuZXhlY3V0ZUJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRhdXRoQnRuU291cmNlKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRhdXRoQnRuU291cmNlKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGF1dGhCdG5Tb3VyY2UsIFtcImJhY2tncm91bmQtY29sb3JcIl0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaDVTb3VyY2UsIFtcInBhZGRpbmdcIiwgXCJtYXJnaW5cIl0pXG4gICAgICAuc3R5bGUoeyBcImJveC1zaGFkb3dcIjogXCJub25lXCIgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRoNVNvdXJjZSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaDVTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaDVTb3VyY2UsIFwidGV4dC10cmFuc2Zvcm1cIilcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5zdHlsZSh7IGRpc3BsYXk6IFwiYmxvY2tcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBwYWRkaW5nOiBcIjAgMCAyMHB4IDBcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyTmFtZUZpZWxkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGZpZWxkU291cmNlKVxuICAgICAgLnN0eWxlKHsgZmxvYXQ6IFwicmlnaHRcIiwgd2lkdGg6IFwiNjBweFwiLCBcIndvcmQtd3JhcFwiOiBcImJyZWFrLXdvcmRcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclJlcXVpcmVkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9QYWRkaW5nKClcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kcmVxdWlyZWRGaWVsZFNvdXJjZSlcbiAgICAgIC5zdHlsZSh7IGRpc3BsYXk6IFwiYmxvY2tcIiwgXCJwYWRkaW5nLXRvcFwiOiBcIjRweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyVHlwZUZpZWxkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJHR5cGVTb3VyY2UpXG4gICAgICAuc3R5bGUoeyBcIm1hcmdpbi1sZWZ0XCI6IFwiMjhweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyRGVwcmVjYXRlZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgXCJtYXJnaW4tbGVmdFwiOiBcIjI4cHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclNvdXJjZVRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLnN0eWxlKHsgXCJtYXJnaW4tbGVmdFwiOiBcIjI4cHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGxhYmVsU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnNlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGxhYmVsU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnNlcnZlclJlc3BvbnNlU3RhdHVzVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcInBhZGRpbmctcmlnaHRcIjogXCIxMHB4XCIgfSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kdHlwZVNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcInBhZGRpbmctdG9wXCI6IDAgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zZXJ2ZXJSZXNwb25zZVN1YkhlYWRlclRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kY29kZVNvdXJjZSwgdHJ1ZSlcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRjb2RlQm94U291cmNlLCBcImJhY2tncm91bmQtY29sb3JcIiwgdHJ1ZSlcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucmVzcG9uc2VDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGNvZGVTb3VyY2UsIHRydWUpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIHRydWUpXG4gICAgICAucmVzZXRCb3JkZXIoKVxuICAgICAgLmFkZChgJHtTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3J9OmJlZm9yZWApXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGJ0blNvdXJjZSlcbiAgICAgIC5zdHlsZSh7IGNvbnRlbnQ6ICdcIkNvcHlcIicsIGRpc3BsYXk6IFwiYmxvY2tcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYnRuU291cmNlKVxuICAgICAgLnN0eWxlKHsgYmFja2dyb3VuZDogXCJub25lXCIsIHBhZGRpbmc6IFwiNXB4XCIsIHdpZHRoOiBcIjQycHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9QYWRkaW5nKClcbiAgICAgIC5zdHlsZSh7IFwiYmFja2dyb3VuZC1pbWFnZVwiOiBcIm5vbmVcIiwgaGVpZ2h0OiBcIjIxcHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgcmlnaHQ6IFwiMTBweFwiLCBib3R0b206IFwiMThweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRidG5Tb3VyY2UpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYnRuU291cmNlKVxuICAgICAgLnN0eWxlKHsgYmFja2dyb3VuZDogXCJub25lXCIgfSk7XG5cbiAgICBUcnlCdG4uJGJ0bi5vbihcImNsaWNrXCIsIFN0eWxlci5jcmVhdGVTdHlsZUVsZW1lbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHRoZW1lTWF0Y2hBcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlci5pbnB1dEFwcGxpZXMoKTtcbiAgICBTdHlsZXIubW9kYWxBcHBsaWVzKCk7XG4gICAgU3R5bGVyLnRyeUl0Qm94QXBwbGllcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGlkZURpc3R1cmJpbmdFbGVtZW50cygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uVHJ5T3V0VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zdW1tYXJ5VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5jbGVhckJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVuZWRJbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlbmVkQXV0aFdyYXBwZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZW5lZE1vZGVsc0NvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdHlsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbWFya2VyID0gU3R5bGVyLmNmZy4kZmllbGRNYXJrZXJTb3VyY2UuY2xvbmUoKTtcbiAgICAgIG1hcmtlci5jc3MoXCJmbG9hdFwiLCBcImxlZnRcIik7XG4gICAgICBtYXJrZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICBgJHtTdHlsZXIuY2ZnLnBhcmFtZXRlck5hbWVGaWVsZFRhcmdldFNlbGVjdG9yfTpmaXJzdC1jaGlsZGAsXG4gICAgICApO1xuICAgIH0sIDEwMCk7XG4gICAgVHJ5QnRuLiRzZWxlY3RlZC5vZmYoXCJjbGlja1wiLCBTdHlsZXIuY3JlYXRlU3R5bGVFbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGluaXQoKTogdm9pZCB7XG4gICAgU3R5bGVyLmhpZGVEaXN0dXJiaW5nRWxlbWVudHMoKTtcbiAgICBTdHlsZXIuYXV0aEFwcGxpZXMoKTtcbiAgICBTdHlsZXIudHJ5QnRuQXBwbGllcygpO1xuICAgIFN0eWxlci50aGVtZU1hdGNoQXBwbGllcygpO1xuICAgIFN0eWxlci51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN3YWdnZXJXcmFwcGVyKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoXCJib2R5XCIpXG4gICAgICAucmVsYXRpdmUoKVxuICAgICAgLmFkZChTd2FnZ2VyV3JhcHBlci5jZmcud3JhcHBlclNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5ib3hTZWxlY3RvcilcbiAgICAgIC5yZWxhdGl2ZSgpXG4gICAgICAubm9Ub3AoKVxuICAgICAgLm5vTGVmdCgpXG4gICAgICAubm9PdmVyZmxvdygpXG4gICAgICAucmVzZXRCb3JkZXIoKVxuICAgICAgLnN0eWxlKHtcbiAgICAgICAgXCJib3JkZXItcmFkaXVzXCI6IFwiNHB4XCIsXG4gICAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBcIiNmZmZmXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgaGVpZ2h0OiBcIjEwMHZoXCIsXG4gICAgICAgIFwiei1pbmRleFwiOiAxLFxuICAgICAgfSlcbiAgICAgIC5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLmhpZGRlblNlbGVjdG9yKVxuICAgICAgLmhpZGRlbigpXG4gICAgICAubm9XaWR0aCgpXG4gICAgICAubm9IZWlnaHQoKVxuICAgICAgLm5vQ3Vyc29yKClcbiAgICAgIC5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLnNob3duU2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuc3R5bGUoeyBjdXJzb3I6IFwiaW5pdGlhbFwiLCB3aWR0aDogXCJhdXRvXCIsIGhlaWdodDogXCJhdXRvXCIgfSk7XG5cbiAgICBTdHlsZXIudXBkYXRlKCk7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBsb2FkU2NyaXB0KHNyYzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG4gICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gbG9hZGVyO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdHlsZXNoZWV0KHN0eWxlc2hlZXRVcmw6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gIGxpbmsucmVsID0gXCJzdHlsZXNoZWV0XCI7XG4gIGxpbmsuaHJlZiA9IHN0eWxlc2hlZXRVcmw7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG59XG4iLCJpbnRlcmZhY2UgSVN0eWxlIHtcbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgXCJiYWNrZ3JvdW5kLWNvbG9yXCI/OiBzdHJpbmc7XG4gIFwiYmFja2dyb3VuZC1pbWFnZVwiPzogc3RyaW5nO1xuICBib3JkZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiYm9yZGVyLWJvdHRvbVwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1jb2xvclwiPzogc3RyaW5nO1xuICBcImJvcmRlci1sZWZ0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiYm9yZGVyLXJhZGl1c1wiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1yaWdodFwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1zdHlsZVwiPzpcbiAgICB8IFwibm9uZVwiXG4gICAgfCBcImhpZGRlblwiXG4gICAgfCBcImRvdHRlZFwiXG4gICAgfCBcImRhc2hlZFwiXG4gICAgfCBcInNvbGlkXCJcbiAgICB8IFwiZG91YmxlXCJcbiAgICB8IFwiZ3Jvb3ZlXCJcbiAgICB8IFwicmlkZ2VcIlxuICAgIHwgXCJpbnNldFwiXG4gICAgfCBcIm91dHNldFwiO1xuICBcImJvcmRlci10b3BcIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJib3JkZXItd2lkdGhcIj86IG51bWJlciB8IHN0cmluZztcbiAgYm90dG9tPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJveC1zaGFkb3dcIj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIGN1cnNvcj86IFwiaW5pdGlhbFwiIHwgXCJub25lXCIgfCBcIm5vdC1hbGxvd2VkXCIgfCBcInBvaW50ZXJcIjtcbiAgZGlzcGxheT86IHN0cmluZztcbiAgZmxvYXQ/OiBcInJpZ2h0XCIgfCBcImxlZnRcIiB8IFwibm9uZVwiIHwgXCJpbmhlcml0XCI7XG4gIFwiZm9udC1mYW1pbHlcIj86IHN0cmluZztcbiAgXCJmb250LXdlaWdodFwiPzogbnVtYmVyO1xuICBcImZvbnQtc2l6ZVwiPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGxlZnQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibGluZS1oZWlnaHRcIj86IHN0cmluZztcbiAgbWFyZ2luPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcIm1hcmdpbi1sZWZ0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibWFyZ2luLXJpZ2h0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibWFyZ2luLXRvcFwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBvdmVyZmxvdz86IFwiaGlkZGVuXCI7XG4gIHBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwicGFkZGluZy1ib3R0b21cIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJwYWRkaW5nLXJpZ2h0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwicGFkZGluZy10b3BcIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJwb2ludGVyLWV2ZW50c1wiPzogXCJpbml0aWFsXCIgfCBcIm5vbmVcIjtcbiAgcG9zaXRpb24/OiBcImFic29sdXRlXCIgfCBcInJlbGF0aXZlXCI7XG4gIHJpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuICBcInRleHQtdHJhbnNmb3JtXCI/OiBzdHJpbmc7XG4gIHRvcD86IG51bWJlciB8IHN0cmluZztcbiAgdmlzaWJpbGl0eT86IFwiaGlkZGVuXCIgfCBcInZpc2libGVcIjtcbiAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiei1pbmRleFwiPzogbnVtYmVyO1xuICBcIndvcmQtd3JhcFwiPzogXCJub3JtYWxcIiB8IFwiYnJlYWstd29yZFwiIHwgXCJpbml0aWFsXCIgfCBcImluaGVyaXRcIjtcbn1cblxuY2xhc3MgU3R5bGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU3R5bGVCdWlsZGVyO1xuICBwcml2YXRlIHByb3BlcnRpZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJlbnQ6IFN0eWxlQnVpbGRlcikge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICB9XG5cbiAgcHVibGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hZGQoc2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIHN0eWxlKHN0eWxlOiBJU3R5bGUpOiBTdHlsZSB7XG4gICAgT2JqZWN0LmVudHJpZXMoc3R5bGUpLmZvckVhY2goXG4gICAgICAoW3Byb3BlcnR5LCB2YWx1ZV0pID0+XG4gICAgICAgICh0aGlzLnByb3BlcnRpZXNbcHJvcGVydHldID0gYCR7cHJvcGVydHl9OiAke3ZhbHVlfWApLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYWJzb2x1dGUoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWxhdGl2ZSgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH0pO1xuICB9XG5cbiAgcHVibGljIGhpZGRlbigpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB2aXNpYmlsaXR5OiBcImhpZGRlblwiIH0pO1xuICB9XG5cbiAgcHVibGljIHZpc2libGUoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgdmlzaWJpbGl0eTogXCJ2aXNpYmxlXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9XaWR0aCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB3aWR0aDogMCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub0hlaWdodCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBoZWlnaHQ6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9DdXJzb3IoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgY3Vyc29yOiBcIm5vbmVcIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub1RvcCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB0b3A6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9MZWZ0KCk6IFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zdHlsZSh7IGxlZnQ6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9QYWRkaW5nKCk6IFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zdHlsZSh7IHBhZGRpbmc6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9PdmVyZmxvdygpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBvdmVyZmxvdzogXCJoaWRkZW5cIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub0Rpc3BsYXkoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgZGlzcGxheTogXCJub25lXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvbmVTdHlsZXMoXG4gICAgJHNvdXJjZTogSlF1ZXJ5LFxuICAgIGF0dHJpYnV0ZXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXG4gICAgZm9yY2VPdmVycmlkZT86IGJvb2xlYW4sXG4gICk6IFN0eWxlIHtcbiAgICBjb25zdCBpbXBvcnRhbnQgPSBmb3JjZU92ZXJyaWRlID8gXCIhaW1wb3J0YW50XCIgOiBcIlwiO1xuICAgIGF0dHJpYnV0ZXMgPSBBcnJheS5pc0FycmF5KGF0dHJpYnV0ZXMpID8gYXR0cmlidXRlcyA6IFthdHRyaWJ1dGVzXTtcbiAgICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0cnJpYnV0ZSkgPT5cbiAgICAgIHRoaXMuc3R5bGUoeyBbYXRycmlidXRlXTogYCR7JHNvdXJjZS5jc3MoYXRycmlidXRlKX0gJHtpbXBvcnRhbnR9YCB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNsb25lRm9udCgkc291cmNlOiBKUXVlcnksIGZvcmNlT3ZlcnJpZGU/OiBib29sZWFuKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLmNsb25lU3R5bGVzKFxuICAgICAgJHNvdXJjZSxcbiAgICAgIFtcImZvbnQtZmFtaWx5XCIsIFwiZm9udC1zaXplXCIsIFwiZm9udC13ZWlnaHRcIiwgXCJsaW5lLWhlaWdodFwiLCBcImNvbG9yXCJdLFxuICAgICAgZm9yY2VPdmVycmlkZSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsb25lQm9yZGVyKCRzb3VyY2U6IEpRdWVyeSwgZm9yY2VPdmVycmlkZT86IGJvb2xlYW4pOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVTdHlsZXMoXG4gICAgICAkc291cmNlLFxuICAgICAgW1wiYm9yZGVyLXRvcFwiLCBcImJvcmRlci1yaWdodFwiLCBcImJvcmRlci1sZWZ0XCIsIFwiYm9yZGVyLWJvdHRvbVwiXSxcbiAgICAgIGZvcmNlT3ZlcnJpZGUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldEJvcmRlcigpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBib3JkZXI6IDAsIFwiYm9yZGVyLXJhZGl1c1wiOiAwLCBcImJveC1zaGFkb3dcIjogXCJub25lXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BlcnRpZXMpLmpvaW4oXCI7XCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHlsZUJ1aWxkZXIge1xuICBwcml2YXRlIHN0YXRpYyBzZWxlY3RvcnNCdWlsZGVyOiBTdHlsZUJ1aWxkZXIgPSBuZXcgU3R5bGVCdWlsZGVyKCk7XG4gIHByaXZhdGUgc3RhdGljIG1lZGlhU2VsZWN0b3JzQnVpbGRlcjogeyBbbWVkaWE6IHN0cmluZ106IFN0eWxlQnVpbGRlciB9ID0ge307XG5cbiAgcHJpdmF0ZSBzZWxlY3RvcnM6IHsgW3NlbGVjdG9yOiBzdHJpbmddOiBTdHlsZSB9ID0ge307XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9IC8vZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cblxuICBwcml2YXRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHN0eWxlID0gXCJcIjtcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnNlbGVjdG9ycykuZm9yRWFjaCgoW3NlbGVjdG9yLCBzdHlsZXNdKSA9PiB7XG4gICAgICBzdHlsZSArPSBgJHtzZWxlY3Rvcn0geyAke3N0eWxlc30gfWA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9XG5cbiAgcHVibGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIGlmICghdGhpcy5zZWxlY3RvcnNbc2VsZWN0b3JdKSB7XG4gICAgICB0aGlzLnNlbGVjdG9yc1tzZWxlY3Rvcl0gPSBuZXcgU3R5bGUodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yc1tzZWxlY3Rvcl07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIGlmICghU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXSkge1xuICAgICAgU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXSA9IG5ldyBTdHlsZShcbiAgICAgICAgU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkTWVkaWFTZWxlY3RvcihzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGVCdWlsZGVyIHtcbiAgICBpZiAoIVN0eWxlQnVpbGRlci5tZWRpYVNlbGVjdG9yc0J1aWxkZXJbc2VsZWN0b3JdKSB7XG4gICAgICBTdHlsZUJ1aWxkZXIubWVkaWFTZWxlY3RvcnNCdWlsZGVyW3NlbGVjdG9yXSA9IG5ldyBTdHlsZUJ1aWxkZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0eWxlQnVpbGRlci5tZWRpYVNlbGVjdG9yc0J1aWxkZXJbc2VsZWN0b3JdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBtZWRpYSA9IFwiXCI7XG4gICAgT2JqZWN0LmVudHJpZXMoU3R5bGVCdWlsZGVyLm1lZGlhU2VsZWN0b3JzQnVpbGRlcikuZm9yRWFjaChcbiAgICAgIChbc2VsZWN0b3IsIHNlbGVjdG9yc10pID0+IHtcbiAgICAgICAgbWVkaWEgKz0gYCR7c2VsZWN0b3J9IHsgJHtzZWxlY3RvcnN9IH1gO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGAke21lZGlhfSAke1N0eWxlQnVpbGRlci5zZWxlY3RvcnNCdWlsZGVyfWA7XG4gIH1cbn1cbiIsImltcG9ydCB7IFRyeUJ0biB9IGZyb20gXCIuLi9lbGVtZW50cy90cnkuYnRuXCI7XG5pbXBvcnQgeyBSZWRvY1RyeUl0T3V0Q29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9yZWRvYy10cnktaXQtb3V0LWNvbmZpZ1wiO1xuaW1wb3J0IHsgbG9hZFNjcmlwdCB9IGZyb20gXCIuLi91dGlscy9sb2FkZXJzL3NjcmlwdHNcIjtcblxuZGVjbGFyZSBsZXQgUmVkb2M6IGFueTtcbmRlY2xhcmUgbGV0ICQ6IGFueTtcblxuZXhwb3J0IGNsYXNzIFJlZG9jV3JhcHBlciB7XG4gIHB1YmxpYyBzdGF0aWMgY2ZnOiBSZWRvY1RyeUl0T3V0Q29uZmlnO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkb3BlcmF0aW9uQm94KCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuIFRyeUJ0bi4kc2VsZWN0ZWQucGFyZW50cyhSZWRvY1dyYXBwZXIuY2ZnLm9wZXJhdGlvbkJveFNlbGVjdG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkYXBpSW5mb0NvbnRhaW5lcigpOiBKUXVlcnkge1xuICAgIHJldHVybiBUcnlCdG4uJHNlbGVjdGVkLnBhcmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGFwaUNvbnRhaW5lcigpOiBKUXVlcnkge1xuICAgIHJldHVybiBSZWRvY1dyYXBwZXIuJGFwaUluZm9Db250YWluZXIucGFyZW50KCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCAkdHJ5SXRCb3hDb250YWluZXIoKTogSlF1ZXJ5IHtcbiAgICBjb25zdCAkdHJ5SXRCb3ggPSAkKFJlZG9jV3JhcHBlci5jZmcudHJ5SXRCb3hTZWxlY3Rvcik7XG4gICAgcmV0dXJuICR0cnlJdEJveC5sZW5ndGhcbiAgICAgID8gJHRyeUl0Qm94XG4gICAgICA6ICQoYDxkaXYgaWQ9XCIke1JlZG9jV3JhcHBlci5jZmcudHJ5SXRCb3hDb250YWluZXJJZH1cIj48L2Rpdj5gKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1vdmVUcnlBcGlDb250YWluZXIoKTogdm9pZCB7XG4gICAgUmVkb2NXcmFwcGVyLmFwaUNvbnRhaW5lci5hZnRlcihSZWRvY1dyYXBwZXIuJHRyeUl0Qm94Q29udGFpbmVyKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCBkb21FbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICBpZiAoUmVkb2NXcmFwcGVyLmNmZy5lbGVtZW50KSB7XG4gICAgICByZXR1cm4gUmVkb2NXcmFwcGVyLmNmZy5lbGVtZW50O1xuICAgIH1cblxuICAgIGNvbnN0ICRlbGVtZW50ID0gJChgPGRpdiBpZD1cIiR7UmVkb2NXcmFwcGVyLmNmZy5jb250YWluZXJJZH1cIj48L2Rpdj5gKTtcbiAgICAkKFwiYm9keVwiKS5hcHBlbmQoJGVsZW1lbnQpO1xuICAgIHJldHVybiAkZWxlbWVudFswXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYXN5bmMgaW5pdCgpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBsb2FkU2NyaXB0KFJlZG9jV3JhcHBlci5jZmcuYnVuZGxlVXJsKTtcbiAgICBjb25zdCBwcm9taXNlID0gbmV3IFByb21pc2U8dm9pZD4oKHJlc29sdmUsIHJlamVjdCk6IHZvaWQgPT4ge1xuICAgICAgUmVkb2MuaW5pdChcbiAgICAgICAgUmVkb2NXcmFwcGVyLmNmZy5kb2NVcmwsXG4gICAgICAgIFJlZG9jV3JhcHBlci5jZmcsXG4gICAgICAgIFJlZG9jV3JhcHBlci5kb21FbGVtZW50LFxuICAgICAgICAoZTogRXJyb3IpID0+IChlID8gcmVqZWN0KGUpIDogcmVzb2x2ZSgpKSxcbiAgICAgICk7XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvbWlzZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgY29uZmlndXJlVHJ5Qm94KCk6IHZvaWQge1xuICAgIFJlZG9jV3JhcHBlci4kb3BlcmF0aW9uQm94LmFkZENsYXNzKFxuICAgICAgUmVkb2NXcmFwcGVyLmNmZy5zZWxlY3RlZE9wZXJhdGlvbkNsYXNzLFxuICAgICk7XG4gICAgUmVkb2NXcmFwcGVyLm1vdmVUcnlBcGlDb250YWluZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGlkZSgpOiB2b2lkIHtcbiAgICBSZWRvY1dyYXBwZXIuJG9wZXJhdGlvbkJveC5yZW1vdmVDbGFzcyhcbiAgICAgIFJlZG9jV3JhcHBlci5jZmcuc2VsZWN0ZWRPcGVyYXRpb25DbGFzcyxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBmaXhTY3JvbGxQb3NpdGlvbigpOiB2b2lkIHtcbiAgICAkKFwiYm9keVwiKS5zY3JvbGxUbyhSZWRvY1dyYXBwZXIuJG9wZXJhdGlvbkJveCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldEN1cnJlbnRBcGlJbmZvKCk6IHsgYXBpOiBzdHJpbmc7IG1ldGhvZDogc3RyaW5nIH0ge1xuICAgIGNvbnN0IHJhd0FwaUluZm8gPSBSZWRvY1dyYXBwZXIuJGFwaUluZm9Db250YWluZXJcbiAgICAgIC50ZXh0KClcbiAgICAgIC5yZXBsYWNlKFRyeUJ0bi5jZmcudGV4dCwgXCJcIilcbiAgICAgIC50cmltKCk7XG4gICAgY29uc3QgbWF0Y2ggPSByYXdBcGlJbmZvLm1hdGNoKC8oXFx3KykoLiopLyk7XG4gICAgY29uc3QgWywgbWV0aG9kLCBhcGldID0gbWF0Y2ggYXMgQXJyYXk8c3RyaW5nPjtcbiAgICByZXR1cm4geyBhcGksIG1ldGhvZCB9O1xuICB9XG59XG4iLCJpbXBvcnQgeyBsb2FkU3R5bGVzaGVldCB9IGZyb20gXCIuLi91dGlscy9sb2FkZXJzL3N0eWxlc1wiO1xuaW1wb3J0IHsgbG9hZFNjcmlwdCB9IGZyb20gXCIuLi91dGlscy9sb2FkZXJzL3NjcmlwdHNcIjtcbmltcG9ydCB7IFN0eWxlciB9IGZyb20gXCIuLi9zdHlsZXJcIjtcbmltcG9ydCB7IFN3YWdnZXJDb25maWcgfSBmcm9tIFwiLi4vY29uZmlnL3N3YWdnZXItY29uZmlnXCI7XG5pbXBvcnQgeyBDYWxsYmFja0Z1bmN0aW9uIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvc3dhZ2dlci1vcHRpb25zLmludGVyZmFjZVwiO1xuXG5kZWNsYXJlIGxldCBTd2FnZ2VyVUlCdW5kbGU6IGFueTtcbmRlY2xhcmUgbGV0ICQ6IGFueTtcblxuZXhwb3J0IGNsYXNzIFN3YWdnZXJXcmFwcGVyIHtcbiAgcHVibGljIHN0YXRpYyBjZmc6IFN3YWdnZXJDb25maWc7XG5cbiAgcHVibGljIHN0YXRpYyBnZXQgJGJveCgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAke1N3YWdnZXJXcmFwcGVyLmNmZy5ib3hTZWxlY3Rvcn1gKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkYXV0aG9yaXplQnRuKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQoYCR7U3dhZ2dlcldyYXBwZXIuY2ZnLmF1dGhvcml6ZUJ0blNlbGVjdG9yfWApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0ICRhdXRob3JpemVNb2RhbENsb3NlVHJpZ2dlcnMoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChcbiAgICAgIGAke1N3YWdnZXJXcmFwcGVyLmNmZy5hdXRob3JpemVEb25lQnRuU2VsZWN0b3J9LCAke1N3YWdnZXJXcmFwcGVyLmNmZy5hdXRob3JpemVNb2RhbENsb3NlQnRuU2VsZWN0b3J9YCxcbiAgICApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgb3BlcmF0aW9uU3VtbWFyeVNlbGVjdG9yKG1ldGhvZDogc3RyaW5nLCBhcGk6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yLnJlcGxhY2UoXG4gICAgICAvKC4qKSh7bWV0aG9kfSkoLiopKHthcGl9KSguKikvLFxuICAgICAgYCQxJHttZXRob2R9JDMke2FwaX0kNWAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkc2VsZWN0ZWRDb250YWluZXJFbGVtZW50cygpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAuJHtTd2FnZ2VyV3JhcHBlci5jZmcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzc31gKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0IGhhc0F1dGgoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuICEhU3dhZ2dlcldyYXBwZXIuJGF1dGhvcml6ZUJ0bi5sZW5ndGg7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFzeW5jIGluaXQoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgU3R5bGVyLmluaXRTd2FnZ2VyV3JhcHBlcigpO1xuICAgIGxvYWRTdHlsZXNoZWV0KFN3YWdnZXJXcmFwcGVyLmNmZy5jc3NVcmwpO1xuICAgIGF3YWl0IGxvYWRTY3JpcHQoU3dhZ2dlcldyYXBwZXIuY2ZnLmJ1bmRsZVVybCk7XG4gICAgJChcImJvZHlcIikuYXBwZW5kKFxuICAgICAgYDxkaXYgaWQ9XCIke1N3YWdnZXJXcmFwcGVyLmNmZy5pZH1cIiBjbGFzcz1cIiR7U3dhZ2dlcldyYXBwZXIuY2ZnLmhpZGVDbGFzc31cIj48L2Rpdj5gLFxuICAgICk7XG4gICAgU3dhZ2dlclVJQnVuZGxlKFN3YWdnZXJXcmFwcGVyLmNmZyk7XG4gICAgcmV0dXJuIFN3YWdnZXJXcmFwcGVyLmNmZy5vbkNvbXBsZXRlUHJvbWlzZTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGlkZSgpOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci4kYm94LmF0dHIoXCJjbGFzc1wiLCBTd2FnZ2VyV3JhcHBlci5jZmcuaGlkZUNsYXNzKTtcbiAgICBTd2FnZ2VyV3JhcHBlci4kc2VsZWN0ZWRDb250YWluZXJFbGVtZW50cy5yZW1vdmVDbGFzcyhcbiAgICAgIFN3YWdnZXJXcmFwcGVyLmNmZy5zZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzLFxuICAgICk7XG4gICAgJChcImJvZHlcIikuYXBwZW5kKFN3YWdnZXJXcmFwcGVyLiRib3gpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzaG93KCk6IHZvaWQge1xuICAgIFN3YWdnZXJXcmFwcGVyLiRib3guYXR0cihcImNsYXNzXCIsIFN3YWdnZXJXcmFwcGVyLmNmZy5zaG93Q2xhc3MpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzaG93QXV0aE1vZGFsKCk6IHZvaWQge1xuICAgIFN3YWdnZXJXcmFwcGVyLiRib3guYXR0cihcImNsYXNzXCIsIFN3YWdnZXJXcmFwcGVyLmNmZy5hdXRoTW9kYWxDbGFzcyk7XG4gICAgU3dhZ2dlcldyYXBwZXIuJGF1dGhvcml6ZUJ0bi5jbGljaygpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBoaWRlQXV0aE1vZGFsKCk6IHZvaWQge1xuICAgIFN3YWdnZXJXcmFwcGVyLmhpZGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgb25DbG9zZUF1dGhNb2RhbChldmVudDogQ2FsbGJhY2tGdW5jdGlvbik6IHZvaWQge1xuICAgIFN3YWdnZXJXcmFwcGVyLiRhdXRob3JpemVNb2RhbENsb3NlVHJpZ2dlcnMuY2xpY2soZXZlbnQpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZWxlY3RBcGlTZWN0aW9uKGFwaTogc3RyaW5nLCBtZXRob2Q6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0ICRhcGlEb20gPSAkKFN3YWdnZXJXcmFwcGVyLm9wZXJhdGlvblN1bW1hcnlTZWxlY3RvcihtZXRob2QsIGFwaSkpO1xuICAgIGNvbnN0ICRvcGVyYXRpb25Db250YWluZXIgPSAkYXBpRG9tLnBhcmVudHMoXG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcub3BlcmF0aW9uQ29udGFpbmVyU2VsZWN0b3IsXG4gICAgKTtcbiAgICBjb25zdCAkb3BlcmF0aW9uU2VjdGlvbiA9ICRvcGVyYXRpb25Db250YWluZXIucGFyZW50cyhcbiAgICAgIFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVyYXRpb25TZWN0aW9uQ29udGFpbmVyU2VsZWN0b3IsXG4gICAgKTtcblxuICAgIGlmICghJG9wZXJhdGlvbkNvbnRhaW5lci5kYXRhKFwiY2xpY2tlZFwiKSkge1xuICAgICAgJGFwaURvbS5jbGljaygpO1xuICAgIH1cblxuICAgICRvcGVyYXRpb25Db250YWluZXIuZGF0YShcImNsaWNrZWRcIiwgdHJ1ZSk7XG4gICAgJG9wZXJhdGlvbkNvbnRhaW5lci5hZGRDbGFzcyhcbiAgICAgIFN3YWdnZXJXcmFwcGVyLmNmZy5zZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzLFxuICAgICk7XG4gICAgJG9wZXJhdGlvblNlY3Rpb24uYWRkQ2xhc3MoXG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzcyxcbiAgICApO1xuICB9XG59XG4iLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIl0sIm5hbWVzIjpbIkF1dGhCdG5Db25maWciLCJvcHRpb25zIiwicG9zU2VsZWN0b3IiLCJ0ZXh0IiwiY2xhc3NOYW1lIiwiQ29uZmlnIiwicGFyc2VPcHRpb25zIiwidGhpcyIsInRoaXoiLCJPYmplY3QiLCJrZXlzIiwiZm9yRWFjaCIsImtleSIsIm9wdGlvbiIsImhhc093blByb3BlcnR5IiwiY2RuVXJsIiwiZG9jVXJsIiwiZWxlbWVudCIsIl9jb250YWluZXJJZCIsIl9vcGVyYXRpb25Cb3hTZWxlY3RvciIsInRyeUl0T3V0RW5hYmxlZCIsInRyeUl0Qm94Q29udGFpbmVySWQiLCJyZWRvY1ZlcnNpb24iLCJzZWxlY3RlZE9wZXJhdGlvbkNsYXNzIiwiZGlzYWJsZVplbnNjcm9sbCIsImRlcGVuZGVuY2llc1ZlcnNpb25zIiwianF1ZXJ5IiwianF1ZXJ5U2Nyb2xsVG8iLCJjb250YWluZXJJZCIsIiQiLCJhdHRyIiwiSW52YWxpZEVsZW1lbnRFcnJvciIsImVsZW1lbnRJZCIsImNvbnRhaW5lclNlbGVjdG9yIiwidmVyc2lvbiIsImpxdWVyeVVybCIsImpxdWVyeVNjcm9sbFRvVXJsIiwiUmVkb2NUcnlJdE91dENvbmZpZyIsInN3YWdnZXJDb25maWciLCJyZWRvY0NvbmZpZyIsIl9pbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX2F1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3IiLCJfbW9kZWxzQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJfaW5wdXRUYXJnZXRTZWxlY3RvciIsIl9zZWxlY3RUYXJnZXRTZWxlY3RvciIsIl90ZXh0QXJlYVRhcmdldFNlbGVjdG9yIiwiX3BhcmFncmFwaFRhcmdldFNlbGVjdG9yIiwiX2V4ZWN1dGVCdG5UYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlVGFibGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNvZGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3IiLCJfcmVzcG9uc2VDdXJsQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3IiLCJfcmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yIiwiX3NlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJfc2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3RvciIsIl9zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3IiLCJfc2VydmVyUmVzcG9uc2VTdWJIZWFkZXJUYXJnZXRTZWxlY3RvciIsIl9jbGVhckJ0blRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlclRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvciIsIl9vcGVyYXRpb25UcnlPdXRUYXJnZXRTZWxlY3RvciIsIl9kZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX3N1bW1hcnlUYXJnZXRTZWxlY3RvciIsIl9tb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX21vZGFsSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJfbW9kYWxUaXRsZVRhcmdldFNlbGVjdG9yIiwiX21vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IiLCJfbW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yIiwiX21vZGFsQ29kZVRhcmdldFNlbGVjdG9yIiwiX21vZGFsQnRuVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyc1RhYmxlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJOYW1lRmllbGRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJUeXBlRmllbGRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyU291cmNlVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyUmVxdWlyZWRNYXJrZXJUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJSZXF1aXJlZFRhcmdldFNlbGVjdG9yIiwiX2FwaUNvbnRlbnRTb3VyY2VTZWxlY3RvciIsIl9pbnB1dFNvdXJjZVNlbGVjdG9yIiwiX2NvZGVTb3VyY2VTZWxlY3RvciIsIl9jb2RlQm94U291cmNlU2VsZWN0b3IiLCJfZGF0YVNlY3Rpb25Tb3VyY2VTZWxlY3RvciIsIl9maWVsZFNvdXJjZVNlbGVjdG9yIiwiX3JlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3RvciIsIl9maWVsZE1hcmtlclNvdXJjZVNlbGVjdG9yIiwiX3NhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yIiwiX2FsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZVNlbGVjdG9yIiwiX2FsdGVybmF0aXZlU2Fuc1NlcmlmU291cmNlU2VsZWN0b3IiLCJfaDJTb3VyY2VTZWxlY3RvciIsIl9oM1NvdXJjZVNlbGVjdG9yIiwiX2g1U291cmNlU2VsZWN0b3IiLCJfbGFiZWxTb3VyY2VTZWxlY3RvciIsIl90eXBlU291cmNlU2VsZWN0b3IiLCJfYnRuU291cmNlU2VsZWN0b3IiLCJfZGVmYXVsdEJvcmRlckNvbG9yU2VsZWN0b3IiLCJfYXV0aEJ0blNvdXJjZVNlbGVjdG9yIiwiX2h0dHBWZXJiU291cmNlU2VsZWN0b3IiLCJib3hTZWxlY3RvciIsInNob3dDbGFzcyIsIm9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yIiwib3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJzZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzIiwib3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yIiwib3BlcmF0aW9uU2VjdGlvblRhcmdldFNlbGVjdG9yIiwiYXV0aG9yaXplTW9kYWxTZWxlY3RvciIsImlucHV0U291cmNlU2VsZWN0b3IiLCJjb2RlU291cmNlU2VsZWN0b3IiLCJjb2RlQm94U291cmNlU2VsZWN0b3IiLCJkYXRhU2VjdGlvblNvdXJjZVNlbGVjdG9yIiwiZmllbGRTb3VyY2VTZWxlY3RvciIsInJlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3RvciIsImZpZWxkTWFya2VyU291cmNlU2VsZWN0b3IiLCJhbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2VTZWxlY3RvciIsInNhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yIiwiaDJTb3VyY2VTZWxlY3RvciIsImgzU291cmNlU2VsZWN0b3IiLCJoNVNvdXJjZVNlbGVjdG9yIiwibGFiZWxTb3VyY2VTZWxlY3RvciIsInR5cGVTb3VyY2VTZWxlY3RvciIsImJ0blNvdXJjZVNlbGVjdG9yIiwiY3NzIiwiYmciLCJhcGlDb250ZW50U291cmNlU2VsZWN0b3IiLCJ0ZXN0IiwiYXV0aEJ0blNvdXJjZVNlbGVjdG9yIiwiaHR0cFZlcmJTb3VyY2VTZWxlY3RvciIsIlN0eWxlTWF0Y2hlckNvbmZpZyIsInVybCIsIl9yZXNvbHZlIiwiX29uQ29tcGxldGUiLCJfYXV0aG9yaXplQnRuU2VsZWN0b3IiLCJfYXV0aG9yaXplRG9uZUJ0blNlbGVjdG9yIiwiX2F1dGhvcml6ZU1vZGFsQ2xvc2VCdG5TZWxlY3RvciIsIl9hdXRob3JpemVNb2RhbFNlbGVjdG9yIiwiX21vZGFsT3ZlcmxheVNlbGVjdG9yIiwiX29wZXJhdGlvblNlY3Rpb25Db250YWluZXJTZWxlY3RvciIsIl9vcGVyYXRpb25Db250YWluZXJTZWxlY3RvciIsIl9vcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yIiwiX3dyYXBwZXJTZWxlY3RvciIsImRvbV9pZCIsImF1dGhNb2RhbENsYXNzIiwiaGlkZUNsYXNzIiwib25Db21wbGV0ZSIsIm9uQ29tcGxldGVQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXBsYWNlIiwic2hvd25BdXRoTW9kYWxTZWxlY3RvciIsIlN3YWdnZXJDb25maWciLCJzaWJsaW5nU2VsZWN0b3IiLCJzZWxlY3RlZENsYXNzTmFtZSIsInNlbGVjdG9yIiwiVHJ5QnRuQ29uZmlnQ29uZmlnIiwiYXV0aENsb3NlQ2xpY2tIYW5kbGVyIiwiU3dhZ2dlcldyYXBwZXIiLCJoaWRlQXV0aE1vZGFsIiwiYXV0aENsaWNrSGFuZGxlciIsIlRyeUJ0biIsInVuc2VsZWN0QWxsIiwic2hvd0F1dGhNb2RhbCIsIkF1dGhCdG4iLCJjZmciLCJpbml0IiwiaGFzQXV0aCIsIiRhdXRoQnRuIiwiY2xpY2siLCJhZnRlciIsIm9uQ2xvc2VBdXRoTW9kYWwiLCJ0cnlDbGlja0hhbmRsZXIiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsIiR0cnlCdG4iLCJ0YXJnZXQiLCJzaG91bGRPcGVuIiwiaXNTZWxlY3RlZCIsInNlbGVjdCIsIiRidG4iLCJoYXNDbGFzcyIsImhpZGUiLCJSZWRvY1dyYXBwZXIiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwiY29uZmlndXJlVHJ5Qm94IiwiZ2V0Q3VycmVudEFwaUluZm8iLCJhcGkiLCJtZXRob2QiLCJzZWxlY3RBcGlTZWN0aW9uIiwiJHRyeUl0Qm94Q29udGFpbmVyIiwiYXBwZW5kIiwiJGJveCIsInNob3ciLCJmaXhTY3JvbGxQb3NpdGlvbiIsInNlbGVjdGVkU2VsZWN0b3IiLCIkc2libGluZyIsIkVycm9yIiwibG9hZERlcGVuZGVuY2llcyIsImxvYWRTY3JpcHQiLCJ0cnlJdERlcGVuZGVuY2llcyIsImxvYWRBbGwiLCJSZWRvY1RyeUl0T3V0IiwiYWxsIiwiY29uZmlnIiwic3dhZ2dlck9wdGlvbnMiLCJhdXRoQnRuIiwidHJ5QnRuIiwiU3R5bGVyIiwic3R5bGVyTWF0Y2hlciIsIndpbmRvdyIsIm5vWmVuc21vb3RoIiwidXBkYXRlIiwic2hlZXRBZGRlZE9uRG9jdW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInNoZWV0IiwiaW5uZXJIVE1MIiwiU3R5bGVCdWlsZGVyIiwidG9TdHJpbmciLCJhdXRoQXBwbGllcyIsImFkZCIsImhpZGRlbiIsInN0eWxlIiwiaGVpZ2h0IiwibGVmdCIsInRvcCIsIndpZHRoIiwib3Blbk1vZGFsT3ZlcmxheVNlbGVjdG9yIiwidmlzaWJsZSIsIm9wZW5BdXRob3JpemVNb2RhbFNlbGVjdG9yIiwiJGVsZW1lbnQiLCJhdXRoQnRuQ2xhc3Nlc1NvdXJjZSIsInRyeUJ0bkFwcGxpZXMiLCJyZXNldEJvcmRlciIsImNsb25lQm9yZGVyIiwiJGF1dGhCdG5Tb3VyY2UiLCJjbG9uZUZvbnQiLCIkaHR0cFZlcmJTb3VyY2UiLCJjbG9uZVN0eWxlcyIsImRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IiLCJjdXJzb3IiLCJpbnB1dEFwcGxpZXMiLCJpbnB1dFRhcmdldFNlbGVjdG9yIiwiJGlucHV0U291cmNlIiwibW9kYWxBcHBsaWVzIiwibW9kYWxIZWFkZXJUYXJnZXRTZWxlY3RvciIsIiRoMlNvdXJjZSIsIm1vZGFsTGFiZWxUYXJnZXRTZWxlY3RvciIsIiRsYWJlbFNvdXJjZSIsIm1vZGFsVGl0bGVUYXJnZXRTZWxlY3RvciIsIiRoM1NvdXJjZSIsIm1vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IiLCJtb2RhbENvZGVUYXJnZXRTZWxlY3RvciIsIiRhbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2UiLCJtb2RhbFRhcmdldFNlbGVjdG9yIiwibW9kYWxCdG5UYXJnZXRTZWxlY3RvciIsIiRzYW5TZXJpZkZvbnRTb3VyY2UiLCJtb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiZGVmYXVsdEJvcmRlckNvbG9yIiwidHJ5SXRCb3hBcHBsaWVzIiwibm9IZWlnaHQiLCJvcGVuZWRPcGVyYXRpb25TZWN0aW9uU2VsZWN0b3IiLCJvcGVuZWRPcGVyYXRpb25Db250YWluZXJTZWxlY3RvciIsImRpc3BsYXkiLCIkZGF0YVNlY3Rpb25Tb3VyY2UiLCJzZWxlY3RUYXJnZXRTZWxlY3RvciIsImFic29sdXRlIiwicGFkZGluZyIsInJpZ2h0IiwicGFyYWdyYXBoVGFyZ2V0U2VsZWN0b3IiLCJ0ZXh0QXJlYVRhcmdldFNlbGVjdG9yIiwiJGNvZGVCb3hTb3VyY2UiLCJkZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwibm9QYWRkaW5nIiwiZXhlY3V0ZUJ0blRhcmdldFNlbGVjdG9yIiwib3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCIkaDVTb3VyY2UiLCJvcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlV3JhcHBlclJlc3VsdFRhcmdldFNlbGVjdG9yIiwicmVzcG9uc2VDb250YWluZXJUYXJnZXRTZWxlY3RvciIsInBhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwicGFyYW1ldGVyTmFtZUZpZWxkVGFyZ2V0U2VsZWN0b3IiLCIkZmllbGRTb3VyY2UiLCJmbG9hdCIsInBhcmFtZXRlclJlcXVpcmVkVGFyZ2V0U2VsZWN0b3IiLCIkcmVxdWlyZWRGaWVsZFNvdXJjZSIsInBhcmFtZXRlclR5cGVGaWVsZFRhcmdldFNlbGVjdG9yIiwiJHR5cGVTb3VyY2UiLCJwYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3IiLCJwYXJhbWV0ZXJTb3VyY2VUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJzZXJ2ZXJSZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yIiwic2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3RvciIsInNlcnZlclJlc3BvbnNlRGVzY3JpcHRpb25UYXJnZXRTZWxlY3RvciIsInNlcnZlclJlc3BvbnNlU3ViSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvciIsIiRjb2RlU291cmNlIiwicmVzcG9uc2VDb2RlVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZUNsaXBib2FyZEJ0blRhcmdldFNlbGVjdG9yIiwiJGJ0blNvdXJjZSIsImNvbnRlbnQiLCJyZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiYmFja2dyb3VuZCIsInJlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiYm90dG9tIiwicmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yIiwib24iLCJjcmVhdGVTdHlsZUVsZW1lbnRzIiwidGhlbWVNYXRjaEFwcGxpZXMiLCJoaWRlRGlzdHVyYmluZ0VsZW1lbnRzIiwib3BlcmF0aW9uVHJ5T3V0VGFyZ2V0U2VsZWN0b3IiLCJub0Rpc3BsYXkiLCJyZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvciIsIm9wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvciIsInBhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3IiLCJzdW1tYXJ5VGFyZ2V0U2VsZWN0b3IiLCJjbGVhckJ0blRhcmdldFNlbGVjdG9yIiwicGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvciIsIm9wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yIiwib3BlbmVkSW5mb3JtYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvciIsIm9wZW5lZEF1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3IiLCJvcGVuZWRNb2RlbHNDb250YWluZXJUYXJnZXRTZWxlY3RvciIsInNldFRpbWVvdXQiLCJtYXJrZXIiLCIkZmllbGRNYXJrZXJTb3VyY2UiLCJjbG9uZSIsImluc2VydEJlZm9yZSIsIiRzZWxlY3RlZCIsIm9mZiIsImluaXRTd2FnZ2VyV3JhcHBlciIsInJlbGF0aXZlIiwid3JhcHBlclNlbGVjdG9yIiwibm9Ub3AiLCJub0xlZnQiLCJub092ZXJmbG93IiwiaGlkZGVuU2VsZWN0b3IiLCJub1dpZHRoIiwibm9DdXJzb3IiLCJzaG93blNlbGVjdG9yIiwiY3JlYXRlRWxlbWVudCIsInNyYyIsInJlamVjdCIsInNjcmlwdCIsInR5cGUiLCJvbmxvYWQiLCJvbmVycm9yIiwiaGVhZCIsInN0eWxlc2hlZXRVcmwiLCJsaW5rIiwicmVsIiwiaHJlZiIsInBhcmVudCIsInByb3BlcnRpZXMiLCJlbnRyaWVzIiwicHJvcGVydHkiLCJ2YWx1ZSIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsIm92ZXJmbG93IiwiJHNvdXJjZSIsImF0dHJpYnV0ZXMiLCJmb3JjZU92ZXJyaWRlIiwiaW1wb3J0YW50IiwiQXJyYXkiLCJpc0FycmF5IiwiYXRycmlidXRlIiwiYm9yZGVyIiwidmFsdWVzIiwiam9pbiIsInNlbGVjdG9ycyIsInN0eWxlcyIsIlN0eWxlIiwic2VsZWN0b3JzQnVpbGRlciIsImFkZE1lZGlhU2VsZWN0b3IiLCJtZWRpYVNlbGVjdG9yc0J1aWxkZXIiLCJtZWRpYSIsInBhcmVudHMiLCJvcGVyYXRpb25Cb3hTZWxlY3RvciIsIiRhcGlJbmZvQ29udGFpbmVyIiwiJHRyeUl0Qm94IiwidHJ5SXRCb3hTZWxlY3RvciIsImxlbmd0aCIsIm1vdmVUcnlBcGlDb250YWluZXIiLCJhcGlDb250YWluZXIiLCJidW5kbGVVcmwiLCJSZWRvYyIsImRvbUVsZW1lbnQiLCJlIiwiJG9wZXJhdGlvbkJveCIsInNjcm9sbFRvIiwidHJpbSIsIm1hdGNoIiwiYXV0aG9yaXplQnRuU2VsZWN0b3IiLCJhdXRob3JpemVEb25lQnRuU2VsZWN0b3IiLCJhdXRob3JpemVNb2RhbENsb3NlQnRuU2VsZWN0b3IiLCJvcGVyYXRpb25TdW1tYXJ5U2VsZWN0b3IiLCJvcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yIiwiJGF1dGhvcml6ZUJ0biIsImxvYWRTdHlsZXNoZWV0IiwiY3NzVXJsIiwiaWQiLCJTd2FnZ2VyVUlCdW5kbGUiLCIkc2VsZWN0ZWRDb250YWluZXJFbGVtZW50cyIsIiRhdXRob3JpemVNb2RhbENsb3NlVHJpZ2dlcnMiLCIkYXBpRG9tIiwiJG9wZXJhdGlvbkNvbnRhaW5lciIsIiRvcGVyYXRpb25TZWN0aW9uIiwiZGF0YSIsIl9fd2VicGFja19tb2R1bGVfY2FjaGVfXyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImNhY2hlZE1vZHVsZSIsInVuZGVmaW5lZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJfX3dlYnBhY2tfbW9kdWxlc19fIiwiY2FsbCJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file +(()=>{"use strict";var e,t={555:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AuthBtnConfig=void 0;var o=r(782);t.AuthBtnConfig=function(e){this.posSelector="h1:eq(0)",this.text="AUTHORIZE",this.className="_auth-btn",o.Config.parseOptions(this,e)}},782:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.Config=void 0,t.Config={parseOptions:function(e,t){Object.keys(t).forEach((function(r){var o=e.hasOwnProperty(r)?r:"_".concat(r);o in e&&(e[o]=t[r])}))},cdnUrl:"https://cdn.jsdelivr.net/npm"}},918:function(e,t,r){var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r{Object.defineProperty(t,"__esModule",{value:!0}),t.StyleMatcherConfig=void 0;var o=r(782),n=function(){function e(e,t,r){this._informationContainerTargetSelector=".swagger-ui .information-container",this._authWrapperTargetSelector=".swagger-ui .auth-wrapper",this._modelsContainerTargetSelector=".swagger-ui .models",this._inputTargetSelector=".swagger-ui input[type=text]",this._selectTargetSelector=".swagger-ui .opblock select",this._textAreaTargetSelector=".swagger-ui .opblock textarea",this._paragraphTargetSelector=".swagger-ui .opblock p",this._executeBtnTargetSelector=".swagger-ui .opblock .btn.execute",this._responseContainerTargetSelector=".swagger-ui .opblock .opblock-body .responses-inner",this._responseTitleTargetSelector=".swagger-ui .opblock .responses-inner > div > h4",this._responseHeaderTargetSelector=".swagger-ui .opblock .responses-inner h4",this._responseTableTargetSelector=".swagger-ui .opblock .responses-inner > .responses-table",this._responseWrapperTargetSelector=".swagger-ui .opblock .responses-wrapper",this._responseWrapperResultTargetSelector=".swagger-ui .opblock .btn-group + .responses-wrapper",this._responseMicrolightTargetSelector=".swagger-ui .opblock .microlight",this._responseCodeTargetSelector=".swagger-ui .opblock .microlight code",this._responseClipboardTargetSelector=".swagger-ui .opblock .responses-inner .copy-to-clipboard",this._responseClipboardBtnTargetSelector=".swagger-ui .opblock .responses-inner .copy-to-clipboard button",this._responseCurlClipboardTargetSelector=".swagger-ui .opblock .responses-inner .curl-command .copy-to-clipboard",this._responseDownloadTargetSelector=".swagger-ui .opblock .responses-inner .download-contents",this._serverResponseHeaderTargetSelector=".swagger-ui .opblock .responses-inner .responses-header td.col_header",this._serverResponseStatusTargetSelector=".swagger-ui .opblock .responses-inner .response .response-col_status",this._serverResponseDescriptionTargetSelector=".swagger-ui .opblock .responses-inner .response .response-col_description",this._serverResponseSubHeaderTargetSelector=".swagger-ui .opblock .responses-inner .response h5",this._clearBtnTargetSelector=".swagger-ui .opblock .btn-group .btn-clear",this._operationTagTargetSelector=".swagger-ui .opblock-tag[data-tag]",this._operationHeaderContainerTargetSelector=".swagger-ui .opblock .opblock-section-header",this._operationHeaderTargetSelector=".swagger-ui .opblock .opblock-section-header h4",this._operationHeaderDecorationTargetSelector=".swagger-ui .opblock .opblock-section-header h4 span::after",this._operationTryOutTargetSelector=".swagger-ui .operation-tag-content div.try-out",this._descriptionContainerTargetSelector=".swagger-ui .opblock .opblock-body .opblock-description-wrapper",this._summaryTargetSelector=".swagger-ui .operation-tag-content div.opblock .opblock-summary",this._modalHeaderContainerTargetSelector=".swagger-ui .dialog-ux .modal-ux-header",this._modalHeaderTargetSelector=".swagger-ui .dialog-ux .modal-ux-header h3",this._modalTitleTargetSelector=".swagger-ui .dialog-ux .modal-ux-content h4",this._modalTitleCodeTargetSelector=".swagger-ui .dialog-ux .modal-ux-content .wrapper code",this._modalLabelTargetSelector=".swagger-ui .modal-ux label",this._modalCodeTargetSelector=".swagger-ui .modal-ux code",this._modalBtnTargetSelector=".swagger-ui .modal-ux button",this._parametersTableContainerTargetSelector=".swagger-ui .opblock .table-container",this._parametersHeadTargetSelector=".swagger-ui .opblock .table-container table.parameters thead",this._parameterNameFieldTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name",this._parameterTypeFieldTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__type",this._parameterDeprecatedTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__deprecated",this._parameterSourceTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__in",this._parameterRequiredMarkerTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name.required span",this._parameterRequiredTargetSelector=".swagger-ui .opblock .table-container table.parameters .parameter__name.required::after",this._apiContentSourceSelector=".api-content",this._inputSourceSelector="[kind=field] ~ td",this._codeSourceSelector="code",this._codeBoxSourceSelector="[data-section-id] [role=tabpanel]",this._dataSectionSourceSelector="[data-section-id] > div > div",this._fieldSourceSelector="[kind=field]",this._requiredFieldSourceSelector="[kind=field] div",this._fieldMarkerSourceSelector="[kind=field]:first span:first-child",this._sanSerifFontSourceSelector="h2",this._alternativeMonospaceFontSourceSelector="[kind=field] span",this._alternativeSansSerifSourceSelector="h5",this._h2SourceSelector="h2",this._h3SourceSelector="h3",this._h5SourceSelector="h5",this._labelSourceSelector="[kind=field] ~ td",this._typeSourceSelector="[kind=field] ~ td span",this._btnSourceSelector="[role=tabpanel] button",this._defaultBorderColorSelector="h5",this._authBtnSourceSelector='a[href*="swagger.json"]:eq(0)',this._httpVerbSourceSelector="[data-section-id] .http-verb",o.Config.parseOptions(this,e),this.swaggerConfig=t,this.redocConfig=r}return Object.defineProperty(e.prototype,"openedInformationContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._informationContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedAuthWrapperTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._authWrapperTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedModelsContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector,".").concat(this.swaggerConfig.showClass," ").concat(this._modelsContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.operationContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedOperationContainerSelector",{get:function(){return"".concat(this.operationContainerTargetSelector,".").concat(this.swaggerConfig.selectedOperationContainerClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._inputTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._selectTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"textAreaTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._textAreaTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"paragraphTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._paragraphTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"executeBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._executeBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseTableTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseTableTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseWrapperTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseWrapperTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseWrapperResultTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseWrapperResultTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSectionTargetSelector",{get:function(){return"".concat(this.swaggerConfig.operationSectionContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openedOperationSectionSelector",{get:function(){return"".concat(this.operationSectionTargetSelector,".").concat(this.swaggerConfig.selectedOperationContainerClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationTagTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationTagTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"clearBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._clearBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseMicrolightTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseMicrolightTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"descriptionContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._descriptionContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseSubHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseSubHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseStatusTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseStatusTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"serverResponseDescriptionTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._serverResponseDescriptionTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseClipboardTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseClipboardTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseClipboardBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseClipboardBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseCurlClipboardTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseCurlClipboardTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseDownloadTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseDownloadTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTargetSelector",{get:function(){return"".concat(this.swaggerConfig.authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalHeaderContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalHeaderContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalHeaderTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalHeaderTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTitleTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalTitleTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalLabelTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalLabelTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalTitleCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalTitleCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalCodeTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalCodeTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"modalBtnTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._modalBtnTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationHeaderDecorationTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationHeaderDecorationTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parametersTableContainerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parametersTableContainerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parametersHeadTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parametersHeadTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterNameFieldTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterNameFieldTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterTypeFieldTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterTypeFieldTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterDeprecatedTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterDeprecatedTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterSourceTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterSourceTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterRequiredMarkerTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterRequiredMarkerTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"parameterRequiredTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._parameterRequiredTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationTryOutTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._operationTryOutTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"summaryTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._summaryTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"responseTitleTargetSelector",{get:function(){return"".concat(this.swaggerConfig.boxSelector," ").concat(this._responseTitleTargetSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"apiContentSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._apiContentSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"inputSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._inputSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$inputSource",{get:function(){return $(this.inputSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"codeSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._codeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$codeSource",{get:function(){return $(this.codeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"codeBoxSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._codeBoxSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$codeBoxSource",{get:function(){return $(this.codeBoxSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"dataSectionSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._dataSectionSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$dataSectionSource",{get:function(){return $(this.dataSectionSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fieldSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._fieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$fieldSource",{get:function(){return $(this.fieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"requiredFieldSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._requiredFieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$requiredFieldSource",{get:function(){return $(this.requiredFieldSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"fieldMarkerSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._fieldMarkerSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$fieldMarkerSource",{get:function(){return $(this.fieldMarkerSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternativeMonospaceFontSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._alternativeMonospaceFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$alternativeMonospaceFontSource",{get:function(){return $(this.alternativeMonospaceFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"sanSerifFontSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._sanSerifFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$sanSerifFontSource",{get:function(){return $(this.sanSerifFontSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"alternativeSansSerifSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._alternativeSansSerifSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h2SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h2SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h2Source",{get:function(){return $(this.h2SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h3SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h3SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h3Source",{get:function(){return $(this.h3SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"h5SourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._h5SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$h5Source",{get:function(){return $(this.h5SourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"labelSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._labelSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$labelSource",{get:function(){return $(this.labelSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"typeSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._typeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$typeSource",{get:function(){return $(this.typeSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"btnSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._btnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$btnSource",{get:function(){return $(this.btnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBorderColorSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._defaultBorderColorSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBorderColor",{get:function(){return $(this.labelSourceSelector).css("border-color")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"defaultBackgroundColor",{get:function(){var e=$(this.apiContentSourceSelector).css("background-color")||"white";return/rgba(\s)*?\(0,(\s)*?0,(\s)*?0,(\s)*?0(\s)*?\)/.test(e)?"white":e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authBtnSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._authBtnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$authBtnSource",{get:function(){return $(this.authBtnSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authBtnClassesSource",{get:function(){return $(this.authBtnSourceSelector).attr("class")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"httpVerbSourceSelector",{get:function(){return"".concat(this.redocConfig.containerSelector," ").concat(this._httpVerbSourceSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"$httpVerbSource",{get:function(){return $(this.httpVerbSourceSelector)},enumerable:!1,configurable:!0}),e}();t.StyleMatcherConfig=n},394:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.SwaggerConfig=void 0;var o=r(782),n=function(){function e(e,t,r){var n=this;this._resolve=function(){},this._onComplete=function(){},this._authorizeBtnSelector=".swagger-ui .auth-wrapper .authorize",this._authorizeDoneBtnSelector=".swagger-ui .auth-btn-wrapper .btn-done",this._authorizeModalCloseBtnSelector=".swagger-ui .dialog-ux .modal-ux-header .close-modal",this._authorizeModalSelector=".swagger-ui .dialog-ux .modal-ux",this._modalOverlaySelector=".swagger-ui .dialog-ux",this._operationSectionContainerSelector=".swagger-ui .opblock-tag-section",this._operationContainerSelector=".swagger-ui .opblock",this._operationSummaryPatternSelector='.swagger-ui .opblock .opblock-summary-{method} [data-path="{api}"]',this._wrapperSelector=".swagger-ui .wrapper",this.dom_id="#swagger-ui",this.authModalClass="auth-modal",this.hideClass="hide",this.showClass="show",this.selectedOperationContainerClass="opened-shadow",this.version="3.48.0",this.cdnUrl=o.Config.cdnUrl,this.onComplete=function(){n._onComplete(),n._resolve()},o.Config.parseOptions(this,e),this.url=t,this.tryItOutEnabled=r,this.onCompletePromise=new Promise((function(e){return n._resolve=e}))}return Object.defineProperty(e.prototype,"id",{get:function(){return this.dom_id.replace("#","")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"boxSelector",{get:function(){return this.dom_id},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeDoneBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeDoneBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeModalCloseBtnSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeModalCloseBtnSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"authorizeModalSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openModalOverlaySelector",{get:function(){return"".concat(this.shownAuthModalSelector," ").concat(this._modalOverlaySelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSectionContainerSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationSectionContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationContainerSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationContainerSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"operationSummaryPatternSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._operationSummaryPatternSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"wrapperSelector",{get:function(){return"".concat(this.boxSelector," ").concat(this._wrapperSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"openAuthorizeModalSelector",{get:function(){return"".concat(this.shownAuthModalSelector," ").concat(this._authorizeModalSelector)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"hiddenSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.hideClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shownSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.showClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"shownAuthModalSelector",{get:function(){return"".concat(this.boxSelector,".").concat(this.authModalClass)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"bundleUrl",{get:function(){return"".concat(this.cdnUrl,"/swagger-ui-dist@").concat(this.version,"/swagger-ui-bundle.js")},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"cssUrl",{get:function(){return"".concat(this.cdnUrl,"/swagger-ui-dist@").concat(this.version,"/swagger-ui.css")},enumerable:!1,configurable:!0}),e}();t.SwaggerConfig=n},117:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TryBtnConfigConfig=void 0;var o=r(782),n=function(){function e(e){this.siblingSelector=".http-verb",this.text="TRY OUT",this.className="tryBtn",this.selectedClassName="selected",o.Config.parseOptions(this,e)}return Object.defineProperty(e.prototype,"selector",{get:function(){return".".concat(this.className)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"selectedSelector",{get:function(){return"".concat(this.selector,".").concat(this.selectedClassName)},enumerable:!1,configurable:!0}),e}();t.TryBtnConfigConfig=n},74:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.AuthBtn=void 0;var o=r(997),n=r(94),c=function(){o.SwaggerWrapper.hideAuthModal()},a=function(){n.TryBtn.unselectAll(),o.SwaggerWrapper.showAuthModal()},i=function(){function e(){}return Object.defineProperty(e,"$element",{get:function(){return $(".".concat(e.cfg.className))},enumerable:!1,configurable:!0}),e.init=function(){if(o.SwaggerWrapper.hasAuth){var t=$('
').concat(e.cfg.text,"
"));t.click(a),$(e.cfg.posSelector).after(t),o.SwaggerWrapper.onCloseAuthModal(c)}},e}();t.AuthBtn=i},94:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.TryBtn=void 0;var o=r(997),n=r(187),c=function(e){e.stopPropagation();var t=$(e.target),r=!a.isSelected(t);a.unselectAll(),r&&a.select(t)},a=function(){function e(){}return Object.defineProperty(e,"$sibling",{get:function(){return $("".concat(e.cfg.siblingSelector))},enumerable:!1,configurable:!0}),e.isSelected=function(t){return t.hasClass(e.cfg.selectedClassName)},e.unselectAll=function(){o.SwaggerWrapper.hide(),n.RedocWrapper.hide(),$(e.cfg.selector).removeClass(e.cfg.selectedClassName)},e.select=function(t){t.addClass(e.cfg.selectedClassName),n.RedocWrapper.configureTryBox();var r=n.RedocWrapper.getCurrentApiInfo(),c=r.api,a=r.method;o.SwaggerWrapper.selectApiSection(c,a),n.RedocWrapper.$tryItBoxContainer.append(o.SwaggerWrapper.$box),o.SwaggerWrapper.show(),n.RedocWrapper.fixScrollPosition()},Object.defineProperty(e,"$selected",{get:function(){return $("".concat(e.cfg.selectedSelector))},enumerable:!1,configurable:!0}),Object.defineProperty(e,"$btn",{get:function(){return $(".".concat(e.cfg.className))},enumerable:!1,configurable:!0}),e.init=function(){var t=$('"));t.click(c),e.$sibling.after(t)},e}();t.TryBtn=a},668:function(e,t){var r,o=this&&this.__extends||(r=function(e,t){return r=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(e[r]=t[r])},r(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function o(){this.constructor=e}r(e,t),e.prototype=null===t?Object.create(t):(o.prototype=t.prototype,new o)});Object.defineProperty(t,"__esModule",{value:!0}),t.InvalidElementError=void 0;var n=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return o(t,e),t}(Error);t.InvalidElementError=n},552:function(e,t,r){var o=this&&this.__assign||function(){return o=Object.assign||function(e){for(var t,r=1,o=arguments.length;r0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]{Object.defineProperty(t,"__esModule",{value:!0}),t.Styler=void 0;var o=r(9),n=r(997),c=r(94),a=r(74),i=function(){function e(){}return e.update=function(){e.sheetAddedOnDocument||document.body.appendChild(e.sheet),e.sheet.innerHTML=o.StyleBuilder.toString()},e.authApplies=function(){o.StyleBuilder.add(n.SwaggerWrapper.cfg.shownAuthModalSelector).hidden().style({height:"auto",left:0,top:0,width:"auto"}).add(n.SwaggerWrapper.cfg.authorizeModalSelector).hidden().add(n.SwaggerWrapper.cfg.openModalOverlaySelector).visible().add(n.SwaggerWrapper.cfg.openAuthorizeModalSelector).visible().style({width:"auto",height:"auto"}),a.AuthBtn.$element.addClass(e.cfg.authBtnClassesSource)},e.tryBtnApplies=function(){o.StyleBuilder.add(c.TryBtn.cfg.selector).resetBorder().cloneBorder(e.cfg.$authBtnSource).cloneFont(e.cfg.$httpVerbSource).cloneStyles(e.cfg.$httpVerbSource,["padding"]).cloneStyles(e.cfg.$authBtnSource,["color"]).style({"background-color":e.cfg.defaultBackgroundColor,"margin-left":"2px",cursor:"pointer"})},e.inputApplies=function(){o.StyleBuilder.add(e.cfg.inputTargetSelector).cloneBorder(e.cfg.$inputSource).cloneStyles(e.cfg.$inputSource,["color","font-size"]).style({"border-radius":0})},e.modalApplies=function(){o.StyleBuilder.add(e.cfg.modalHeaderTargetSelector).cloneFont(e.cfg.$h2Source).add(e.cfg.modalLabelTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.modalTitleTargetSelector).cloneFont(e.cfg.$h3Source).add(e.cfg.modalTitleCodeTargetSelector).cloneStyles(e.cfg.$labelSource,"font-size").add(e.cfg.modalCodeTargetSelector).cloneFont(e.cfg.$h3Source).cloneStyles(e.cfg.$alternativeMonospaceFontSource,"font-family").add(e.cfg.modalTargetSelector).style({"background-color":"white","border-radius":"0"}).add(e.cfg.modalBtnTargetSelector).cloneStyles(e.cfg.$sanSerifFontSource,"font-family").style({"border-radius":0}).add(e.cfg.modalHeaderContainerTargetSelector).style({"border-color":e.cfg.defaultBorderColor})},e.tryItBoxApplies=function(){o.StyleBuilder.add(e.cfg.operationSectionTargetSelector).hidden().noHeight().add(e.cfg.openedOperationSectionSelector).visible().style({height:"initial"}),o.StyleBuilder.add(e.cfg.openedOperationContainerSelector).style({display:"block"}),o.StyleBuilder.add(e.cfg.operationContainerTargetSelector).cloneStyles(e.cfg.$dataSectionSource,"padding").resetBorder().add(e.cfg.operationContainerTargetSelector).resetBorder().style({"background-color":e.cfg.defaultBackgroundColor}).add(e.cfg.selectTargetSelector).cloneFont(e.cfg.$inputSource).resetBorder().cloneStyles(e.cfg.$inputSource,["border-width","border-style"]).absolute().style({"border-width":"1px","background-color":e.cfg.defaultBackgroundColor,"border-style":"solid",padding:"0 5px","margin-top":"-3%",right:0,"margin-right":e.cfg.$dataSectionSource.css("padding-right")}).add(e.cfg.paragraphTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.textAreaTargetSelector).resetBorder().cloneFont(e.cfg.$alternativeMonospaceFontSource).cloneBorder(e.cfg.$codeBoxSource).cloneStyles(e.cfg.$codeBoxSource,["color"]).cloneStyles(e.cfg.$codeBoxSource,["background-color"]).add(e.cfg.descriptionContainerTargetSelector).noPadding().add(e.cfg.executeBtnTargetSelector).resetBorder().cloneBorder(e.cfg.$authBtnSource).cloneFont(e.cfg.$authBtnSource).cloneStyles(e.cfg.$authBtnSource,["background-color"]).add(e.cfg.operationHeaderContainerTargetSelector).cloneStyles(e.cfg.$h5Source,["padding","margin"]).style({"box-shadow":"none"}).add(e.cfg.operationHeaderTargetSelector).cloneBorder(e.cfg.$h5Source).cloneFont(e.cfg.$h5Source).cloneStyles(e.cfg.$h5Source,"text-transform").add(e.cfg.responseWrapperResultTargetSelector).style({display:"block"}).add(e.cfg.responseContainerTargetSelector).style({padding:"0 0 20px 0"}).add(e.cfg.parametersTableContainerTargetSelector).noPadding().add(e.cfg.parameterNameFieldTargetSelector).cloneFont(e.cfg.$fieldSource).style({float:"right",width:"60px","word-wrap":"break-word"}).add(e.cfg.parameterRequiredTargetSelector).noPadding().cloneFont(e.cfg.$requiredFieldSource).style({display:"block","padding-top":"4px"}).add(e.cfg.parameterTypeFieldTargetSelector).cloneFont(e.cfg.$typeSource).style({"margin-left":"28px"}).add(e.cfg.parameterDeprecatedTargetSelector).style({"margin-left":"28px"}).add(e.cfg.parameterSourceTargetSelector).cloneStyles(e.cfg.$alternativeMonospaceFontSource,"font-family").style({"margin-left":"28px"}).add(e.cfg.responseHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.serverResponseHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.serverResponseStatusTargetSelector).style({"padding-right":"10px"}).cloneFont(e.cfg.$typeSource).add(e.cfg.serverResponseDescriptionTargetSelector).style({"padding-top":0}).add(e.cfg.serverResponseSubHeaderTargetSelector).cloneFont(e.cfg.$labelSource).add(e.cfg.responseMicrolightTargetSelector).cloneFont(e.cfg.$codeSource,!0).cloneStyles(e.cfg.$codeBoxSource,"background-color",!0).resetBorder().add(e.cfg.responseCodeTargetSelector).cloneFont(e.cfg.$codeSource,!0).cloneStyles(e.cfg.$codeBoxSource,"background-color",!0).resetBorder().add("".concat(e.cfg.responseClipboardBtnTargetSelector,":before")).cloneFont(e.cfg.$btnSource).style({content:'"Copy"',display:"block"}).add(e.cfg.responseClipboardTargetSelector).cloneBorder(e.cfg.$btnSource).style({background:"none",padding:"5px",width:"42px"}).add(e.cfg.responseClipboardBtnTargetSelector).noPadding().style({"background-image":"none",height:"21px"}).add(e.cfg.responseCurlClipboardTargetSelector).style({right:"10px",bottom:"18px"}).add(e.cfg.responseDownloadTargetSelector).cloneFont(e.cfg.$btnSource).cloneBorder(e.cfg.$btnSource).style({background:"none"}),c.TryBtn.$btn.on("click",e.createStyleElements)},e.themeMatchApplies=function(){e.inputApplies(),e.modalApplies(),e.tryItBoxApplies()},e.hideDisturbingElements=function(){o.StyleBuilder.add(e.cfg.operationTryOutTargetSelector).noDisplay().add(e.cfg.responseTableTargetSelector).noDisplay().add(e.cfg.responseWrapperTargetSelector).noDisplay().add(e.cfg.responseTitleTargetSelector).noDisplay().add(e.cfg.operationHeaderDecorationTargetSelector).noDisplay().add(e.cfg.parameterRequiredMarkerTargetSelector).noDisplay().add(e.cfg.summaryTargetSelector).noDisplay().add(e.cfg.clearBtnTargetSelector).noDisplay().add(e.cfg.parametersHeadTargetSelector).noDisplay().add(e.cfg.operationTagTargetSelector).noDisplay().add(e.cfg.operationContainerTargetSelector).noDisplay().add(e.cfg.openedInformationContainerTargetSelector).noDisplay().add(e.cfg.openedAuthWrapperTargetSelector).noDisplay().add(e.cfg.openedModelsContainerTargetSelector).noDisplay()},e.createStyleElements=function(){setTimeout((function(){var t=e.cfg.$fieldMarkerSource.clone();t.css("float","left"),t.insertBefore("".concat(e.cfg.parameterNameFieldTargetSelector,":first-child"))}),100),c.TryBtn.$selected.off("click",e.createStyleElements)},e.init=function(){e.hideDisturbingElements(),e.authApplies(),e.tryBtnApplies(),e.themeMatchApplies(),e.update()},e.initSwaggerWrapper=function(){o.StyleBuilder.add("body").relative().add(n.SwaggerWrapper.cfg.wrapperSelector).noPadding().add(n.SwaggerWrapper.cfg.boxSelector).relative().noTop().noLeft().noOverflow().resetBorder().style({"border-radius":"4px","background-color":"#ffff",width:"100%",height:"100vh","z-index":1}).add(n.SwaggerWrapper.cfg.hiddenSelector).hidden().noWidth().noHeight().noCursor().add(n.SwaggerWrapper.cfg.shownSelector).visible().style({cursor:"initial",width:"auto",height:"auto"}),e.update()},e.sheet=document.createElement("style"),e}();t.Styler=i},815:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.loadScript=void 0,t.loadScript=function(e){return new Promise((function(t,r){var o=document.createElement("script");o.type="text/javascript",o.onload=t,o.onerror=r,o.src=e,document.head.append(o)}))}},402:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.loadStylesheet=void 0,t.loadStylesheet=function(e){var t=document.createElement("link");t.rel="stylesheet",t.href=e,document.head.appendChild(t)}},9:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),t.StyleBuilder=void 0;var r=function(){function e(e){this.properties={},this.parent=e}return e.prototype.add=function(e){return this.parent.add(e)},e.prototype.style=function(e){var t=this;return Object.entries(e).forEach((function(e){var r=e[0],o=e[1];return t.properties[r]="".concat(r,": ").concat(o)})),this},e.prototype.absolute=function(){return this.style({position:"absolute"})},e.prototype.relative=function(){return this.style({position:"relative"})},e.prototype.hidden=function(){return this.style({visibility:"hidden"})},e.prototype.visible=function(){return this.style({visibility:"visible"})},e.prototype.noWidth=function(){return this.style({width:0})},e.prototype.noHeight=function(){return this.style({height:0})},e.prototype.noCursor=function(){return this.style({cursor:"none"})},e.prototype.noTop=function(){return this.style({top:0})},e.prototype.noLeft=function(){return this.style({left:0})},e.prototype.noPadding=function(){return this.style({padding:0})},e.prototype.noOverflow=function(){return this.style({overflow:"hidden"})},e.prototype.noDisplay=function(){return this.style({display:"none"})},e.prototype.cloneStyles=function(e,t,r){var o=this,n=r?"!important":"";return(t=Array.isArray(t)?t:[t]).forEach((function(t){var r;return o.style(((r={})[t]="".concat(e.css(t)," ").concat(n),r))})),this},e.prototype.cloneFont=function(e,t){return this.cloneStyles(e,["font-family","font-size","font-weight","line-height","color"],t)},e.prototype.cloneBorder=function(e,t){return this.cloneStyles(e,["border-top","border-right","border-left","border-bottom"],t)},e.prototype.resetBorder=function(){return this.style({border:0,"border-radius":0,"box-shadow":"none"})},e.prototype.toString=function(){return Object.values(this.properties).join(";")},e}(),o=function(){function e(){this.selectors={}}return e.prototype.toString=function(){var e="";return Object.entries(this.selectors).forEach((function(t){var r=t[0],o=t[1];e+="".concat(r," { ").concat(o," }")})),e},e.prototype.add=function(e){return this.selectors[e]||(this.selectors[e]=new r(this)),this.selectors[e]},e.add=function(t){return e.selectorsBuilder.selectors[t]||(e.selectorsBuilder.selectors[t]=new r(e.selectorsBuilder)),e.selectorsBuilder.selectors[t]},e.addMediaSelector=function(t){return e.mediaSelectorsBuilder[t]||(e.mediaSelectorsBuilder[t]=new e),e.mediaSelectorsBuilder[t]},e.toString=function(){var t="";return Object.entries(e.mediaSelectorsBuilder).forEach((function(e){var r=e[0],o=e[1];t+="".concat(r," { ").concat(o," }")})),"".concat(t," ").concat(e.selectorsBuilder)},e.selectorsBuilder=new e,e.mediaSelectorsBuilder={},e}();t.StyleBuilder=o},187:function(e,t,r){var o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,c){function a(e){try{l(o.next(e))}catch(e){c(e)}}function i(e){try{l(o.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,i)}l((o=o.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,o,n,c,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return c={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function i(i){return function(l){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c&&(c=0,i[0]&&(a=0)),a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]'))},enumerable:!1,configurable:!0}),e.moveTryApiContainer=function(){e.apiContainer.after(e.$tryItBoxContainer)},Object.defineProperty(e,"domElement",{get:function(){if(e.cfg.element)return e.cfg.element;var t=$('
'));return $("body").append(t),t[0]},enumerable:!1,configurable:!0}),e.init=function(){return o(this,void 0,void 0,(function(){return n(this,(function(t){switch(t.label){case 0:return[4,(0,a.loadScript)(e.cfg.bundleUrl)];case 1:return t.sent(),[2,new Promise((function(t,r){Redoc.init(e.cfg.docUrl,e.cfg.options,e.domElement,(function(e){return e?r(e):t()}))}))]}}))}))},e.configureTryBox=function(){e.$operationBox.addClass(e.cfg.options.selectedOperationClass||""),e.moveTryApiContainer()},e.hide=function(){e.$operationBox.removeClass(e.cfg.options.selectedOperationClass)},e.fixScrollPosition=function(){$("body").scrollTo(e.$operationBox)},e.getCurrentApiInfo=function(){var t=e.$apiInfoContainer.text().replace(c.TryBtn.cfg.text,"").trim().match(/(\w+)(.*)/),r=t[1];return{api:t[2],method:r}},e}();t.RedocWrapper=i},997:function(e,t,r){var o=this&&this.__awaiter||function(e,t,r,o){return new(r||(r=Promise))((function(n,c){function a(e){try{l(o.next(e))}catch(e){c(e)}}function i(e){try{l(o.throw(e))}catch(e){c(e)}}function l(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(a,i)}l((o=o.apply(e,t||[])).next())}))},n=this&&this.__generator||function(e,t){var r,o,n,c,a={label:0,sent:function(){if(1&n[0])throw n[1];return n[1]},trys:[],ops:[]};return c={next:i(0),throw:i(1),return:i(2)},"function"==typeof Symbol&&(c[Symbol.iterator]=function(){return this}),c;function i(i){return function(l){return function(i){if(r)throw new TypeError("Generator is already executing.");for(;c&&(c=0,i[0]&&(a=0)),a;)try{if(r=1,o&&(n=2&i[0]?o.return:i[0]?o.throw||((n=o.return)&&n.call(o),0):o.next)&&!(n=n.call(o,i[1])).done)return n;switch(o=0,n&&(i=[2&i[0],n.value]),i[0]){case 0:case 1:n=i;break;case 4:return a.label++,{value:i[1],done:!1};case 5:a.label++,o=i[1],i=[0];continue;case 7:i=a.ops.pop(),a.trys.pop();continue;default:if(!((n=(n=a.trys).length>0&&n[n.length-1])||6!==i[0]&&2!==i[0])){a=0;continue}if(3===i[0]&&(!n||i[1]>n[0]&&i[1]')),SwaggerUIBundle(e.cfg),[2,e.cfg.onCompletePromise]}}))}))},e.hide=function(){e.$box.attr("class",e.cfg.hideClass),e.$selectedContainerElements.removeClass(e.cfg.selectedOperationContainerClass),$("body").append(e.$box)},e.show=function(){e.$box.attr("class",e.cfg.showClass)},e.showAuthModal=function(){e.$box.attr("class",e.cfg.authModalClass),e.$authorizeBtn.click()},e.hideAuthModal=function(){e.hide()},e.onCloseAuthModal=function(t){e.$authorizeModalCloseTriggers.click(t)},e.selectApiSection=function(t,r){var o=$(e.operationSummarySelector(r,t)),n=o.parents(e.cfg.operationContainerSelector),c=n.parents(e.cfg.operationSectionContainerSelector);n.data("clicked")||o.click(),n.data("clicked",!0),n.addClass(e.cfg.selectedOperationContainerClass),c.addClass(e.cfg.selectedOperationContainerClass)},e}();t.SwaggerWrapper=l}},r={};e=function e(o){var n=r[o];if(void 0!==n)return n.exports;var c=r[o]={exports:{}};return t[o].call(c.exports,c,c.exports,e),c.exports}(552),window.RedocTryItOut=window.RedocTryItOut||e.RedocTryItOut})(); +//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QkFBZCxTQUErQkUsR0FDN0JmLEVBQWV5UCw2QkFBNkI5TyxNQUFNSSxFQUNwRCxFQUVjLEVBQUFpQixpQkFBZCxTQUErQkYsRUFBYUMsR0FDMUMsSUFBTTJOLEVBQVVqWSxFQUFFdUksRUFBZWlQLHlCQUF5QmxOLEVBQVFELElBQzVENk4sRUFBc0JELEVBQVEzQixRQUNsQy9OLEVBQWVPLElBQUk5RCw0QkFFZm1ULEVBQW9CRCxFQUFvQjVCLFFBQzVDL04sRUFBZU8sSUFBSTNELG1DQUdoQitTLEVBQW9CRSxLQUFLLFlBQzVCSCxFQUFRL08sUUFHVmdQLEVBQW9CRSxLQUFLLFdBQVcsR0FDcENGLEVBQW9CaE8sU0FDbEIzQixFQUFlTyxJQUFJNUQsaUNBRXJCaVQsRUFBa0JqTyxTQUNoQjNCLEVBQWVPLElBQUk1RCxnQ0FFdkIsRUFDRixFQXpGQSxHQUFhLEVBQUFxRCxlQUFBQSxDLEdDUlQ4UCxFQUEyQixDQUFDLEVqQkRoQyxFaUJJQSxTQUFTQyxFQUFvQkMsR0FFNUIsSUFBSUMsRUFBZUgsRUFBeUJFLEdBQzVDLFFBQXFCRSxJQUFqQkQsRUFDSCxPQUFPQSxFQUFhRSxRQUdyQixJQUFJQyxFQUFTTixFQUF5QkUsR0FBWSxDQUdqREcsUUFBUyxDQUFDLEdBT1gsT0FIQUUsRUFBb0JMLEdBQVVNLEtBQUtGLEVBQU9ELFFBQVNDLEVBQVFBLEVBQU9ELFFBQVNKLEdBR3BFSyxFQUFPRCxPQUNmLENqQnRCQSxNQVFBOU0sT0FBT1IsY0FBZ0JRLE9BQU9SLGVBQWlCLEVBQUFBLGEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2Jyb3dzZXIudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9jb25maWcvYXV0aC1idG4tY29uZmlnLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvY29uZmlnL2NvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2NvbmZpZy9yZWRvYy10cnktaXQtb3V0LWNvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2NvbmZpZy9zdHlsZS1tYXRjaGVyLmNvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2NvbmZpZy9zd2FnZ2VyLWNvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2NvbmZpZy90cnktYnRuLWNvbmZpZy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2VsZW1lbnRzL2F1dGguYnRuLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvZWxlbWVudHMvdHJ5LmJ0bi50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL2Vycm9ycy9pbnZhbGlkLWVsZW1lbnQuZXJyb3IudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9tb2R1bGUudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy9zdHlsZXIudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy91dGlscy9sb2FkZXJzL3NjcmlwdHMudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy91dGlscy9sb2FkZXJzL3N0eWxlcy50cyIsIndlYnBhY2s6Ly9yZWRvYy10cnktaXQtb3V0Ly4vc3JjL3V0aWxzL3N0eWxlLWJ1aWxkZXIudHMiLCJ3ZWJwYWNrOi8vcmVkb2MtdHJ5LWl0LW91dC8uL3NyYy93cmFwcGVycy9yZWRvYy53cmFwcGVyLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvLi9zcmMvd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyLnRzIiwid2VicGFjazovL3JlZG9jLXRyeS1pdC1vdXQvd2VicGFjay9ib290c3RyYXAiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUmVkb2NUcnlJdE91dCB9IGZyb20gXCIuL21vZHVsZVwiO1xuXG5kZWNsYXJlIGdsb2JhbCB7XG4gIGludGVyZmFjZSBXaW5kb3cge1xuICAgIFJlZG9jVHJ5SXRPdXQ6IFJlZG9jVHJ5SXRPdXQ7XG4gIH1cbn1cblxud2luZG93LlJlZG9jVHJ5SXRPdXQgPSB3aW5kb3cuUmVkb2NUcnlJdE91dCB8fCBSZWRvY1RyeUl0T3V0O1xuIiwiaW1wb3J0IHsgQXV0aEJ0bk9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9hdXRoLWJ0bi1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5cbmV4cG9ydCBjbGFzcyBBdXRoQnRuQ29uZmlnIGltcGxlbWVudHMgQXV0aEJ0bk9wdGlvbnMge1xuICBwdWJsaWMgcmVhZG9ubHkgcG9zU2VsZWN0b3I6IHN0cmluZyA9IFwiaDE6ZXEoMClcIjtcbiAgcHVibGljIHJlYWRvbmx5IHRleHQ6IHN0cmluZyA9IFwiQVVUSE9SSVpFXCI7XG4gIHB1YmxpYyByZWFkb25seSBjbGFzc05hbWU6IHN0cmluZyA9IFwiX2F1dGgtYnRuXCI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IEF1dGhCdG5PcHRpb25zKSB7XG4gICAgQ29uZmlnLnBhcnNlT3B0aW9ucyh0aGlzLCBvcHRpb25zKTtcbiAgfVxufVxuIiwiZXhwb3J0IGNvbnN0IENvbmZpZyA9IHtcbiAgcGFyc2VPcHRpb25zOiA8XG4gICAgVEhJWiBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgVCBleHRlbmRzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gID4oXG4gICAgdGhpejogVEhJWixcbiAgICBvcHRpb25zOiBULFxuICApID0+IHtcbiAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5mb3JFYWNoKChrZXkpID0+IHtcbiAgICAgIC8vIFdlIGFkZCB1bmRlcnNjb3JlIHRvIHRoZSBrZXkgaWYgaXRzIG5vdCBhIHByb3BlcnR5IGRpcmVjdGx5IGRlZmluZWQgaW4gdGhpeixcbiAgICAgIC8vIHRvIGVuYWJsZSBzZXR0aW5nIHByaXZhdGUgdmFyaWFibGVzLCB0aGF0IGJlZ2luIHdpdGggdW5kZXJzY29yZS5cbiAgICAgIC8vIFRoaXMgd2FzIHByZXZpb3VzbHkgdXNpbmcgdGhlIGBpbmAga2V5d29yZCB3aGljaCByZXR1cm5lZCB0cnVlIGlmIGZpZWxkIHdhcyBpbmhlcml0ZWQgZnJvbSBpbnRlcmZhY2UuXG4gICAgICAvLyBOb3cgdXNpbmcgaGFzT3duUHJvcGVydHkgdG8gZW5zdXJlIGl0cyBkZWZpbmVkIGluIHRoZSBvYmplY3QvY2xhc3MgcGFzc2VkIGluIGFzIHRoaXouXG4gICAgICAvLyBOT1RFOiBUaGlzIGlzIGEgaHVnZSBoYWNrIGFuZCBnb2VzIGFnYWluc3QgdGhlIHZhbHVlIG9mIHVzaW5nIFR5cGVzY3JpcHRcbiAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXouaGFzT3duUHJvcGVydHkoa2V5KSA/IGtleSA6IGBfJHtrZXl9YDtcbiAgICAgIGlmIChvcHRpb24gaW4gdGhpeikge1xuICAgICAgICB0aGl6W29wdGlvbiBhcyBrZXlvZiBUSElaXSA9IG9wdGlvbnNba2V5XTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSxcblxuICBjZG5Vcmw6IFwiaHR0cHM6Ly9jZG4uanNkZWxpdnIubmV0L25wbVwiLFxufTtcbiIsImltcG9ydCB7XG4gIFJlZG9jVHJ5SXRPdXRPcHRpb25zLFxuICBEZXBlbmRlbmNpZXNWZXJzaW9ucyxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvcmVkb2MtdHJ5LWl0LW91dC1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBJbnZhbGlkRWxlbWVudEVycm9yIH0gZnJvbSBcIi4uL2Vycm9ycy9pbnZhbGlkLWVsZW1lbnQuZXJyb3JcIjtcblxuZGVjbGFyZSBsZXQgJDogYW55O1xuXG5jb25zdCBERUZBVUxUX1JFRE9DX1ZFUlNJT04gPSBcIjIuMC4wLXJjLjU2XCI7XG5jb25zdCBERUZBVUxUX0pRVUVSWV9WRVJTSU9OID0gXCIzLjYuMFwiO1xuY29uc3QgREVGQVVMVF9KUVVFUllfU0NST0xMX1ZFUlNJT04gPSBcIjIuMS4yXCI7XG5cbmV4cG9ydCBjbGFzcyBSZWRvY1RyeUl0T3V0Q29uZmlnIHtcbiAgcHVibGljIHJlYWRvbmx5IGRvY1VybDogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgZWxlbWVudD86IEhUTUxFbGVtZW50O1xuICBwdWJsaWMgcmVhZG9ubHkgb3B0aW9uczogUmVkb2NUcnlJdE91dE9wdGlvbnM7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKFxuICAgIGRvY1VybDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IFJlZG9jVHJ5SXRPdXRPcHRpb25zLFxuICAgIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCxcbiAgKSB7XG4gICAgdGhpcy5vcHRpb25zID0ge1xuICAgICAgdHJ5SXRPdXRFbmFibGVkOiB0cnVlLFxuICAgICAgdHJ5SXRCb3hDb250YWluZXJJZDogXCJ0cnktb3V0LXdyYXBwZXJcIixcbiAgICAgIHJlZG9jVmVyc2lvbjogREVGQVVMVF9SRURPQ19WRVJTSU9OLFxuICAgICAgc2VsZWN0ZWRPcGVyYXRpb25DbGFzczogXCJ0cnlcIixcbiAgICAgIGRpc2FibGVaZW5zY3JvbGw6IHRydWUsXG4gICAgICBkZXBlbmRlbmNpZXNWZXJzaW9uczoge1xuICAgICAgICAuLi57XG4gICAgICAgICAganF1ZXJ5OiBERUZBVUxUX0pRVUVSWV9WRVJTSU9OLFxuICAgICAgICAgIGpxdWVyeVNjcm9sbFRvOiBERUZBVUxUX0pRVUVSWV9TQ1JPTExfVkVSU0lPTixcbiAgICAgICAgfSxcbiAgICAgICAgLi4ub3B0aW9ucy5kZXBlbmRlbmNpZXNWZXJzaW9ucyxcbiAgICAgIH0sXG4gICAgICBjb250YWluZXJJZDogXCJyZWRvYy1jb250YWluZXJcIixcbiAgICAgIG9wZXJhdGlvbkJveFNlbGVjdG9yOiBcIltkYXRhLXNlY3Rpb24taWRdXCIsXG4gICAgICBjZG5Vcmw6IENvbmZpZy5jZG5VcmwsXG4gICAgICAuLi5vcHRpb25zLFxuICAgIH07XG4gICAgdGhpcy5kb2NVcmwgPSBkb2NVcmw7XG4gICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGVsZW1lbnRJZCgpOiBzdHJpbmcge1xuICAgIGNvbnN0IGNvbnRhaW5lcklkID0gJCh0aGlzLmVsZW1lbnQpLmF0dHIoXCJpZFwiKTtcblxuICAgIGlmICghY29udGFpbmVySWQpIHtcbiAgICAgIHRocm93IG5ldyBJbnZhbGlkRWxlbWVudEVycm9yKFwicmVkb2MgY29udGFpbmVyIGVsZW1lbnQgbXVzdCBoYXZlIGFuIGlkXCIpO1xuICAgIH1cblxuICAgIHJldHVybiBjb250YWluZXJJZDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJ5SXRCb3hTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgIyR7dGhpcy5vcHRpb25zLnRyeUl0Qm94Q29udGFpbmVySWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmVyc2lvbigpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLm9wdGlvbnMucmVkb2NWZXJzaW9uIHx8IFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRhaW5lcklkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZWxlbWVudCA/IHRoaXMuZWxlbWVudElkIDogdGhpcy5vcHRpb25zLmNvbnRhaW5lcklkIHx8IFwiXCI7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRhaW5lclNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAjJHt0aGlzLm9wdGlvbnMuY29udGFpbmVySWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uQm94U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLm9wdGlvbnMub3BlcmF0aW9uQm94U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnVuZGxlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMub3B0aW9ucy5jZG5Vcmx9L3JlZG9jQCR7dGhpcy52ZXJzaW9ufS9idW5kbGVzL3JlZG9jLnN0YW5kYWxvbmUubWluLmpzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgdHJ5SXREZXBlbmRlbmNpZXMoKToge1xuICAgIGpxdWVyeVVybDogc3RyaW5nO1xuICAgIGpxdWVyeVNjcm9sbFRvVXJsOiBzdHJpbmc7XG4gIH0ge1xuICAgIHJldHVybiB7XG4gICAgICBqcXVlcnlVcmw6IGAke3RoaXMub3B0aW9ucy5jZG5Vcmx9L2pxdWVyeUAke3RoaXMub3B0aW9ucy5kZXBlbmRlbmNpZXNWZXJzaW9ucz8uanF1ZXJ5IHx8IFwiXCJ9L2Rpc3QvanF1ZXJ5Lm1pbi5qc2AsXG4gICAgICBqcXVlcnlTY3JvbGxUb1VybDogYCR7dGhpcy5vcHRpb25zLmNkblVybH0vanF1ZXJ5LnNjcm9sbHRvQCR7dGhpcy5vcHRpb25zLmRlcGVuZGVuY2llc1ZlcnNpb25zPy5qcXVlcnlTY3JvbGxUbyB8fCBcIlwifS9qcXVlcnkuc2Nyb2xsVG8ubWluLmpzYCxcbiAgICB9O1xuICB9XG59XG4iLCJpbXBvcnQgeyBTdHlsZU1hdGNoZXJPcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvc3R5bGUtbWF0Y2hlci1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQ29uZmlnIH0gZnJvbSBcIi4vc3dhZ2dlci1jb25maWdcIjtcbmltcG9ydCB7IFJlZG9jVHJ5SXRPdXRDb25maWcgfSBmcm9tIFwiLi9yZWRvYy10cnktaXQtb3V0LWNvbmZpZ1wiO1xuXG5kZWNsYXJlIGxldCAkOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBTdHlsZU1hdGNoZXJDb25maWcgaW1wbGVtZW50cyBTdHlsZU1hdGNoZXJPcHRpb25zIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzd2FnZ2VyQ29uZmlnOiBTd2FnZ2VyQ29uZmlnO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZG9jQ29uZmlnOiBSZWRvY1RyeUl0T3V0Q29uZmlnO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2luZm9ybWF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuaW5mb3JtYXRpb24tY29udGFpbmVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2F1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuYXV0aC13cmFwcGVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGVsc0NvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm1vZGVsc1wiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2lucHV0VGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSBpbnB1dFt0eXBlPXRleHRdXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlbGVjdFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgc2VsZWN0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3RleHRBcmVhVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayB0ZXh0YXJlYVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhZ3JhcGhUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID0gXCIuc3dhZ2dlci11aSAub3BibG9jayBwXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2V4ZWN1dGVCdG5UYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5idG4uZXhlY3V0ZVwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1ib2R5IC5yZXNwb25zZXMtaW5uZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VUaXRsZVRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciA+IGRpdiA+IGg0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIGg0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlVGFibGVUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgPiAucmVzcG9uc2VzLXRhYmxlXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlV3JhcHBlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy13cmFwcGVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlV3JhcHBlclJlc3VsdFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLmJ0bi1ncm91cCArIC5yZXNwb25zZXMtd3JhcHBlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5taWNyb2xpZ2h0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3Jlc3BvbnNlQ29kZVRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLm1pY3JvbGlnaHQgY29kZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAuY29weS10by1jbGlwYm9hcmRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VDbGlwYm9hcmRCdG5UYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgLmNvcHktdG8tY2xpcGJvYXJkIGJ1dHRvblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9yZXNwb25zZUN1cmxDbGlwYm9hcmRUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5yZXNwb25zZXMtaW5uZXIgLmN1cmwtY29tbWFuZCAuY29weS10by1jbGlwYm9hcmRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAuZG93bmxvYWQtY29udGVudHNcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9zZXJ2ZXJSZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnJlc3BvbnNlcy1pbm5lciAucmVzcG9uc2VzLWhlYWRlciB0ZC5jb2xfaGVhZGVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlcnZlclJlc3BvbnNlU3RhdHVzVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIC5yZXNwb25zZSAucmVzcG9uc2UtY29sX3N0YXR1c1wiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIC5yZXNwb25zZSAucmVzcG9uc2UtY29sX2Rlc2NyaXB0aW9uXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NlcnZlclJlc3BvbnNlU3ViSGVhZGVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAucmVzcG9uc2VzLWlubmVyIC5yZXNwb25zZSBoNVwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2NsZWFyQnRuVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAuYnRuLWdyb3VwIC5idG4tY2xlYXJcIjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25UYWdUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrLXRhZ1tkYXRhLXRhZ11cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfb3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1zZWN0aW9uLWhlYWRlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9vcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5vcGJsb2NrLXNlY3Rpb24taGVhZGVyIGg0XCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5vcGJsb2NrLXNlY3Rpb24taGVhZGVyIGg0IHNwYW46OmFmdGVyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvblRyeU91dFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wZXJhdGlvbi10YWctY29udGVudCBkaXYudHJ5LW91dFwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX2Rlc2NyaXB0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAub3BibG9jay1ib2R5IC5vcGJsb2NrLWRlc2NyaXB0aW9uLXdyYXBwZXJcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfc3VtbWFyeVRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wZXJhdGlvbi10YWctY29udGVudCBkaXYub3BibG9jayAub3BibG9jay1zdW1tYXJ5XCI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxIZWFkZXJDb250YWluZXJUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4LWhlYWRlclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RhbEhlYWRlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmRpYWxvZy11eCAubW9kYWwtdXgtaGVhZGVyIGgzXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX21vZGFsVGl0bGVUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4LWNvbnRlbnQgaDRcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxUaXRsZUNvZGVUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5kaWFsb2ctdXggLm1vZGFsLXV4LWNvbnRlbnQgLndyYXBwZXIgY29kZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RhbExhYmVsVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAubW9kYWwtdXggbGFiZWxcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxDb2RlVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAubW9kYWwtdXggY29kZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9tb2RhbEJ0blRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm1vZGFsLXV4IGJ1dHRvblwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lclwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJzSGVhZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIHRoZWFkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3BhcmFtZXRlck5hbWVGaWVsZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIC5wYXJhbWV0ZXJfX25hbWVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcGFyYW1ldGVyVHlwZUZpZWxkVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAudGFibGUtY29udGFpbmVyIHRhYmxlLnBhcmFtZXRlcnMgLnBhcmFtZXRlcl9fdHlwZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAub3BibG9jayAudGFibGUtY29udGFpbmVyIHRhYmxlLnBhcmFtZXRlcnMgLnBhcmFtZXRlcl9fZGVwcmVjYXRlZFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJTb3VyY2VUYXJnZXRTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrIC50YWJsZS1jb250YWluZXIgdGFibGUucGFyYW1ldGVycyAucGFyYW1ldGVyX19pblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJSZXF1aXJlZE1hcmtlclRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIC5wYXJhbWV0ZXJfX25hbWUucmVxdWlyZWQgc3BhblwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9wYXJhbWV0ZXJSZXF1aXJlZFRhcmdldFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLm9wYmxvY2sgLnRhYmxlLWNvbnRhaW5lciB0YWJsZS5wYXJhbWV0ZXJzIC5wYXJhbWV0ZXJfX25hbWUucmVxdWlyZWQ6OmFmdGVyXCI7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBfYXBpQ29udGVudFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcIi5hcGktY29udGVudFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9pbnB1dFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcIltraW5kPWZpZWxkXSB+IHRkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvZGVTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJjb2RlXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2NvZGVCb3hTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIltkYXRhLXNlY3Rpb24taWRdIFtyb2xlPXRhYnBhbmVsXVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9kYXRhU2VjdGlvblNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiW2RhdGEtc2VjdGlvbi1pZF0gPiBkaXYgPiBkaXZcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJba2luZD1maWVsZF1cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfcmVxdWlyZWRGaWVsZFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcIltraW5kPWZpZWxkXSBkaXZcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZmllbGRNYXJrZXJTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIltraW5kPWZpZWxkXTpmaXJzdCBzcGFuOmZpcnN0LWNoaWxkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3NhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcImgyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2FsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiW2tpbmQ9ZmllbGRdIHNwYW5cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYWx0ZXJuYXRpdmVTYW5zU2VyaWZTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJoNVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9oMlNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcImgyXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2gzU291cmNlU2VsZWN0b3I6IHN0cmluZyA9IFwiaDNcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfaDVTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJoNVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9sYWJlbFNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcIltraW5kPWZpZWxkXSB+IHRkXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX3R5cGVTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID0gXCJba2luZD1maWVsZF0gfiB0ZCBzcGFuXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX2J0blNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPSBcIltyb2xlPXRhYnBhbmVsXSBidXR0b25cIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfZGVmYXVsdEJvcmRlckNvbG9yU2VsZWN0b3I6IHN0cmluZyA9IFwiaDVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aEJ0blNvdXJjZVNlbGVjdG9yOiBzdHJpbmcgPVxuICAgICdhW2hyZWYqPVwic3dhZ2dlci5qc29uXCJdOmVxKDApJztcbiAgcHJpdmF0ZSByZWFkb25seSBfaHR0cFZlcmJTb3VyY2VTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIltkYXRhLXNlY3Rpb24taWRdIC5odHRwLXZlcmJcIjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoXG4gICAgb3B0aW9uczogU3R5bGVNYXRjaGVyT3B0aW9ucyxcbiAgICBzd2FnZ2VyQ29uZmlnOiBTd2FnZ2VyQ29uZmlnLFxuICAgIHJlZG9jQ29uZmlnOiBSZWRvY1RyeUl0T3V0Q29uZmlnLFxuICApIHtcbiAgICBDb25maWcucGFyc2VPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICAgIHRoaXMuc3dhZ2dlckNvbmZpZyA9IHN3YWdnZXJDb25maWc7XG4gICAgdGhpcy5yZWRvY0NvbmZpZyA9IHJlZG9jQ29uZmlnO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuZWRJbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0uJHt0aGlzLnN3YWdnZXJDb25maWcuc2hvd0NsYXNzfSAke3RoaXMuX2luZm9ybWF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbmVkQXV0aFdyYXBwZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9LiR7dGhpcy5zd2FnZ2VyQ29uZmlnLnNob3dDbGFzc30gJHt0aGlzLl9hdXRoV3JhcHBlclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZW5lZE1vZGVsc0NvbnRhaW5lclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0uJHt0aGlzLnN3YWdnZXJDb25maWcuc2hvd0NsYXNzfSAke3RoaXMuX21vZGVsc0NvbnRhaW5lclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5vcGVyYXRpb25Db250YWluZXJTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVuZWRPcGVyYXRpb25Db250YWluZXJTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLm9wZXJhdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yfS4ke3RoaXMuc3dhZ2dlckNvbmZpZy5zZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGlucHV0VGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX2lucHV0VGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0VGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3NlbGVjdFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHRleHRBcmVhVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3RleHRBcmVhVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYWdyYXBoVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFncmFwaFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGV4ZWN1dGVCdG5UYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fZXhlY3V0ZUJ0blRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlVGFibGVUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VUYWJsZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlV3JhcHBlclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VXcmFwcGVyUmVzdWx0VGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uU2VjdGlvblRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5vcGVyYXRpb25TZWN0aW9uQ29udGFpbmVyU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbmVkT3BlcmF0aW9uU2VjdGlvblNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMub3BlcmF0aW9uU2VjdGlvblRhcmdldFNlbGVjdG9yfS4ke3RoaXMuc3dhZ2dlckNvbmZpZy5zZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25UYWdUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25IZWFkZXJDb250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY2xlYXJCdG5UYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fY2xlYXJCdG5UYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uSGVhZGVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VIZWFkZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VIZWFkZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VNaWNyb2xpZ2h0VGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VDb2RlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlQ29kZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVzY3JpcHRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fZGVzY3JpcHRpb25Db250YWluZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2ZXJSZXNwb25zZVN1YkhlYWRlclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9zZXJ2ZXJSZXNwb25zZVN1YkhlYWRlclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3NlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fc2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBzZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3NlcnZlclJlc3BvbnNlRGVzY3JpcHRpb25UYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9yZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcmVzcG9uc2VDdXJsQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlc3BvbnNlRG93bmxvYWRUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmF1dGhvcml6ZU1vZGFsU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxIZWFkZXJDb250YWluZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fbW9kYWxIZWFkZXJDb250YWluZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBtb2RhbEhlYWRlclRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9tb2RhbEhlYWRlclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsVGl0bGVUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fbW9kYWxUaXRsZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsTGFiZWxUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fbW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgbW9kYWxDb2RlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsQ29kZVRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1vZGFsQnRuVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX21vZGFsQnRuVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uSGVhZGVyRGVjb3JhdGlvblRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25IZWFkZXJEZWNvcmF0aW9uVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyc1RhYmxlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtZXRlcnNIZWFkVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlcnNIZWFkVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyTmFtZUZpZWxkVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlck5hbWVGaWVsZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHBhcmFtZXRlclR5cGVGaWVsZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJUeXBlRmllbGRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3BhcmFtZXRlckRlcHJlY2F0ZWRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJTb3VyY2VUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcGFyYW1ldGVyU291cmNlVGFyZ2V0U2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcGFyYW1ldGVyUmVxdWlyZWRNYXJrZXJUYXJnZXRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnN3YWdnZXJDb25maWcuYm94U2VsZWN0b3J9ICR7dGhpcy5fcGFyYW1ldGVyUmVxdWlyZWRNYXJrZXJUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBwYXJhbWV0ZXJSZXF1aXJlZFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9wYXJhbWV0ZXJSZXF1aXJlZFRhcmdldFNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG9wZXJhdGlvblRyeU91dFRhcmdldFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc3dhZ2dlckNvbmZpZy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25UcnlPdXRUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBzdW1tYXJ5VGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3N1bW1hcnlUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCByZXNwb25zZVRpdGxlVGFyZ2V0U2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zd2FnZ2VyQ29uZmlnLmJveFNlbGVjdG9yfSAke3RoaXMuX3Jlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBhcGlDb250ZW50U291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9hcGlDb250ZW50U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaW5wdXRTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2lucHV0U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGlucHV0U291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5pbnB1dFNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY29kZVNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fY29kZVNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRjb2RlU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5jb2RlU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBjb2RlQm94U291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9jb2RlQm94U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGNvZGVCb3hTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmNvZGVCb3hTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGFTZWN0aW9uU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9kYXRhU2VjdGlvblNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRkYXRhU2VjdGlvblNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuZGF0YVNlY3Rpb25Tb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGZpZWxkU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9maWVsZFNvdXJjZVNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0ICRmaWVsZFNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuZmllbGRTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHJlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX3JlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkcmVxdWlyZWRGaWVsZFNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMucmVxdWlyZWRGaWVsZFNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZmllbGRNYXJrZXJTb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2ZpZWxkTWFya2VyU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGZpZWxkTWFya2VyU291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5maWVsZE1hcmtlclNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl9hbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQodGhpcy5hbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fc2FuU2VyaWZGb250U291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJHNhblNlcmlmRm9udFNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuc2FuU2VyaWZGb250U291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBhbHRlcm5hdGl2ZVNhbnNTZXJpZlNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fYWx0ZXJuYXRpdmVTYW5zU2VyaWZTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBoMlNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5faDJTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkaDJTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmgyU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBoM1NvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5faDNTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkaDNTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmgzU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBoNVNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5faDVTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkaDVTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmg1U291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBsYWJlbFNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fbGFiZWxTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkbGFiZWxTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmxhYmVsU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCB0eXBlU291cmNlU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5yZWRvY0NvbmZpZy5jb250YWluZXJTZWxlY3Rvcn0gJHt0aGlzLl90eXBlU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJHR5cGVTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLnR5cGVTb3VyY2VTZWxlY3Rvcik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJ0blNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5fYnRuU291cmNlU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgJGJ0blNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuYnRuU291cmNlU2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0Qm9yZGVyQ29sb3JTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2RlZmF1bHRCb3JkZXJDb2xvclNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRlZmF1bHRCb3JkZXJDb2xvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiAkKHRoaXMubGFiZWxTb3VyY2VTZWxlY3RvcikuY3NzKFwiYm9yZGVyLWNvbG9yXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCBkZWZhdWx0QmFja2dyb3VuZENvbG9yKCk6IHN0cmluZyB7XG4gICAgY29uc3QgYmcgPVxuICAgICAgJCh0aGlzLmFwaUNvbnRlbnRTb3VyY2VTZWxlY3RvcikuY3NzKFwiYmFja2dyb3VuZC1jb2xvclwiKSB8fCBcIndoaXRlXCI7XG4gICAgcmV0dXJuIC9yZ2JhKFxccykqP1xcKDAsKFxccykqPzAsKFxccykqPzAsKFxccykqPzAoXFxzKSo/XFwpLy50ZXN0KGJnKVxuICAgICAgPyBcIndoaXRlXCJcbiAgICAgIDogYmc7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dGhCdG5Tb3VyY2VTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnJlZG9jQ29uZmlnLmNvbnRhaW5lclNlbGVjdG9yfSAke3RoaXMuX2F1dGhCdG5Tb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkYXV0aEJ0blNvdXJjZSgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKHRoaXMuYXV0aEJ0blNvdXJjZVNlbGVjdG9yKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0aEJ0bkNsYXNzZXNTb3VyY2UoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gJCh0aGlzLmF1dGhCdG5Tb3VyY2VTZWxlY3RvcikuYXR0cihcImNsYXNzXCIpO1xuICB9XG5cbiAgcHVibGljIGdldCBodHRwVmVyYlNvdXJjZVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMucmVkb2NDb25maWcuY29udGFpbmVyU2VsZWN0b3J9ICR7dGhpcy5faHR0cFZlcmJTb3VyY2VTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCAkaHR0cFZlcmJTb3VyY2UoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJCh0aGlzLmh0dHBWZXJiU291cmNlU2VsZWN0b3IpO1xuICB9XG59XG4iLCJpbXBvcnQge1xuICBDYWxsYmFja0Z1bmN0aW9uLFxuICBTd2FnZ2VyT3B0aW9ucyxcbn0gZnJvbSBcIi4uL2ludGVyZmFjZXMvc3dhZ2dlci1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5cbmV4cG9ydCBjbGFzcyBTd2FnZ2VyQ29uZmlnIGltcGxlbWVudHMgU3dhZ2dlck9wdGlvbnMge1xuICBwcml2YXRlIF9yZXNvbHZlOiBDYWxsYmFja0Z1bmN0aW9uID0gKCkgPT4ge307IC8vZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cbiAgcHJpdmF0ZSByZWFkb25seSBfb25Db21wbGV0ZTogQ2FsbGJhY2tGdW5jdGlvbiA9ICgpID0+IHt9OyAvL2VzbGludC1kaXNhYmxlLWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWVtcHR5LWZ1bmN0aW9uXG4gIHB1YmxpYyByZWFkb25seSBvbkNvbXBsZXRlUHJvbWlzZTogUHJvbWlzZTx2b2lkPjtcblxuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRob3JpemVCdG5TZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5hdXRoLXdyYXBwZXIgLmF1dGhvcml6ZVwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRob3JpemVEb25lQnRuU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgXCIuc3dhZ2dlci11aSAuYXV0aC1idG4td3JhcHBlciAuYnRuLWRvbmVcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfYXV0aG9yaXplTW9kYWxDbG9zZUJ0blNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmRpYWxvZy11eCAubW9kYWwtdXgtaGVhZGVyIC5jbG9zZS1tb2RhbFwiO1xuICBwcml2YXRlIHJlYWRvbmx5IF9hdXRob3JpemVNb2RhbFNlbGVjdG9yOiBzdHJpbmcgPVxuICAgIFwiLnN3YWdnZXItdWkgLmRpYWxvZy11eCAubW9kYWwtdXhcIjtcbiAgcHJpdmF0ZSByZWFkb25seSBfbW9kYWxPdmVybGF5U2VsZWN0b3I6IHN0cmluZyA9IFwiLnN3YWdnZXItdWkgLmRpYWxvZy11eFwiO1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvblNlY3Rpb25Db250YWluZXJTZWxlY3Rvcjogc3RyaW5nID1cbiAgICBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrLXRhZy1zZWN0aW9uXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yOiBzdHJpbmcgPSBcIi5zd2FnZ2VyLXVpIC5vcGJsb2NrXCI7XG4gIHByaXZhdGUgcmVhZG9ubHkgX29wZXJhdGlvblN1bW1hcnlQYXR0ZXJuU2VsZWN0b3I6IHN0cmluZyA9XG4gICAgJy5zd2FnZ2VyLXVpIC5vcGJsb2NrIC5vcGJsb2NrLXN1bW1hcnkte21ldGhvZH0gW2RhdGEtcGF0aD1cInthcGl9XCJdJztcblxuICBwcml2YXRlIHJlYWRvbmx5IF93cmFwcGVyU2VsZWN0b3I6IHN0cmluZyA9IFwiLnN3YWdnZXItdWkgLndyYXBwZXJcIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgZG9tX2lkOiBzdHJpbmcgPSBcIiNzd2FnZ2VyLXVpXCI7XG4gIHB1YmxpYyByZWFkb25seSB1cmw6IHN0cmluZztcbiAgcHVibGljIHJlYWRvbmx5IHRyeUl0T3V0RW5hYmxlZDogYm9vbGVhbjtcblxuICBwdWJsaWMgcmVhZG9ubHkgYXV0aE1vZGFsQ2xhc3M6IHN0cmluZyA9IFwiYXV0aC1tb2RhbFwiO1xuICBwdWJsaWMgcmVhZG9ubHkgaGlkZUNsYXNzOiBzdHJpbmcgPSBcImhpZGVcIjtcbiAgcHVibGljIHJlYWRvbmx5IHNob3dDbGFzczogc3RyaW5nID0gXCJzaG93XCI7XG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzOiBzdHJpbmcgPSBcIm9wZW5lZC1zaGFkb3dcIjtcblxuICBwdWJsaWMgcmVhZG9ubHkgdmVyc2lvbjogc3RyaW5nID0gXCIzLjQ4LjBcIjtcbiAgcHVibGljIHJlYWRvbmx5IGNkblVybDogc3RyaW5nID0gQ29uZmlnLmNkblVybDtcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBTd2FnZ2VyT3B0aW9ucywgdXJsOiBzdHJpbmcsIHRyeUl0T3V0RW5hYmxlZDogYm9vbGVhbikge1xuICAgIENvbmZpZy5wYXJzZU9wdGlvbnModGhpcywgb3B0aW9ucyk7XG4gICAgdGhpcy51cmwgPSB1cmw7XG4gICAgdGhpcy50cnlJdE91dEVuYWJsZWQgPSB0cnlJdE91dEVuYWJsZWQ7XG4gICAgdGhpcy5vbkNvbXBsZXRlUHJvbWlzZSA9IG5ldyBQcm9taXNlPHZvaWQ+KFxuICAgICAgKHJlc29sdmUpID0+ICh0aGlzLl9yZXNvbHZlID0gcmVzb2x2ZSksXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaWQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5kb21faWQucmVwbGFjZShcIiNcIiwgXCJcIik7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGJveFNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuZG9tX2lkO1xuICB9XG5cbiAgcHVibGljIGdldCBhdXRob3JpemVCdG5TZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfSAke3RoaXMuX2F1dGhvcml6ZUJ0blNlbGVjdG9yfWA7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGF1dGhvcml6ZURvbmVCdG5TZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfSAke3RoaXMuX2F1dGhvcml6ZURvbmVCdG5TZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBhdXRob3JpemVNb2RhbENsb3NlQnRuU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9hdXRob3JpemVNb2RhbENsb3NlQnRuU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYXV0aG9yaXplTW9kYWxTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfSAke3RoaXMuX2F1dGhvcml6ZU1vZGFsU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3Blbk1vZGFsT3ZlcmxheVNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuc2hvd25BdXRoTW9kYWxTZWxlY3Rvcn0gJHt0aGlzLl9tb2RhbE92ZXJsYXlTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25TZWN0aW9uQ29udGFpbmVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25TZWN0aW9uQ29udGFpbmVyU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlcmF0aW9uQ29udGFpbmVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl9vcGVyYXRpb25Db250YWluZXJTZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCBvcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9ICR7dGhpcy5fb3BlcmF0aW9uU3VtbWFyeVBhdHRlcm5TZWxlY3Rvcn1gO1xuICB9XG5cbiAgcHVibGljIGdldCB3cmFwcGVyU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0gJHt0aGlzLl93cmFwcGVyU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgb3BlbkF1dGhvcml6ZU1vZGFsU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5zaG93bkF1dGhNb2RhbFNlbGVjdG9yfSAke3RoaXMuX2F1dGhvcml6ZU1vZGFsU2VsZWN0b3J9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgaGlkZGVuU2VsZWN0b3IoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gYCR7dGhpcy5ib3hTZWxlY3Rvcn0uJHt0aGlzLmhpZGVDbGFzc31gO1xuICB9XG5cbiAgcHVibGljIGdldCBzaG93blNlbGVjdG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuYm94U2VsZWN0b3J9LiR7dGhpcy5zaG93Q2xhc3N9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2hvd25BdXRoTW9kYWxTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLmJveFNlbGVjdG9yfS4ke3RoaXMuYXV0aE1vZGFsQ2xhc3N9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgYnVuZGxlVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY2RuVXJsfS9zd2FnZ2VyLXVpLWRpc3RAJHt0aGlzLnZlcnNpb259L3N3YWdnZXItdWktYnVuZGxlLmpzYDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgY3NzVXJsKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIGAke3RoaXMuY2RuVXJsfS9zd2FnZ2VyLXVpLWRpc3RAJHt0aGlzLnZlcnNpb259L3N3YWdnZXItdWkuY3NzYDtcbiAgfVxuXG4gIHB1YmxpYyBvbkNvbXBsZXRlID0gKCkgPT4ge1xuICAgIHRoaXMuX29uQ29tcGxldGUoKTtcbiAgICB0aGlzLl9yZXNvbHZlKCk7XG4gIH07XG59XG4iLCJpbXBvcnQgeyBUcnlCdG5PcHRpb25zIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvdHJ5LWJ0bi1vcHRpb25zLmludGVyZmFjZVwiO1xuaW1wb3J0IHsgQ29uZmlnIH0gZnJvbSBcIi4vY29uZmlnXCI7XG5cbmV4cG9ydCBjbGFzcyBUcnlCdG5Db25maWdDb25maWcgaW1wbGVtZW50cyBUcnlCdG5PcHRpb25zIHtcbiAgcHVibGljIHJlYWRvbmx5IHNpYmxpbmdTZWxlY3Rvcjogc3RyaW5nID0gXCIuaHR0cC12ZXJiXCI7XG4gIHB1YmxpYyByZWFkb25seSB0ZXh0OiBzdHJpbmcgPSBcIlRSWSBPVVRcIjtcbiAgcHVibGljIHJlYWRvbmx5IGNsYXNzTmFtZTogc3RyaW5nID0gXCJ0cnlCdG5cIjtcbiAgcHVibGljIHJlYWRvbmx5IHNlbGVjdGVkQ2xhc3NOYW1lOiBzdHJpbmcgPSBcInNlbGVjdGVkXCI7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKG9wdGlvbnM6IFRyeUJ0bk9wdGlvbnMpIHtcbiAgICBDb25maWcucGFyc2VPcHRpb25zKHRoaXMsIG9wdGlvbnMpO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgLiR7dGhpcy5jbGFzc05hbWV9YDtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0ZWRTZWxlY3RvcigpOiBzdHJpbmcge1xuICAgIHJldHVybiBgJHt0aGlzLnNlbGVjdG9yfS4ke3RoaXMuc2VsZWN0ZWRDbGFzc05hbWV9YDtcbiAgfVxufVxuIiwiaW1wb3J0IHsgU3dhZ2dlcldyYXBwZXIgfSBmcm9tIFwiLi4vd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyXCI7XG5pbXBvcnQgeyBUcnlCdG4gfSBmcm9tIFwiLi90cnkuYnRuXCI7XG5pbXBvcnQgeyBBdXRoQnRuQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9hdXRoLWJ0bi1jb25maWdcIjtcblxuZGVjbGFyZSBsZXQgJDogYW55O1xuXG5jb25zdCBhdXRoQ2xvc2VDbGlja0hhbmRsZXIgPSAoKSA9PiB7XG4gIFN3YWdnZXJXcmFwcGVyLmhpZGVBdXRoTW9kYWwoKTtcbn07XG5cbmNvbnN0IGF1dGhDbGlja0hhbmRsZXIgPSAoKSA9PiB7XG4gIFRyeUJ0bi51bnNlbGVjdEFsbCgpO1xuICBTd2FnZ2VyV3JhcHBlci5zaG93QXV0aE1vZGFsKCk7XG59O1xuXG5leHBvcnQgY2xhc3MgQXV0aEJ0biB7XG4gIHB1YmxpYyBzdGF0aWMgY2ZnOiBBdXRoQnRuQ29uZmlnO1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0ICRlbGVtZW50KCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQoYC4ke0F1dGhCdG4uY2ZnLmNsYXNzTmFtZX1gKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIVN3YWdnZXJXcmFwcGVyLmhhc0F1dGgpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCAkYXV0aEJ0biA9ICQoXG4gICAgICBgPGRpdiBjbGFzcz1cIiR7QXV0aEJ0bi5jZmcuY2xhc3NOYW1lfVwiPiR7QXV0aEJ0bi5jZmcudGV4dH08L2Rpdj5gLFxuICAgICk7XG4gICAgJGF1dGhCdG4uY2xpY2soYXV0aENsaWNrSGFuZGxlcik7XG4gICAgJChBdXRoQnRuLmNmZy5wb3NTZWxlY3RvcikuYWZ0ZXIoJGF1dGhCdG4pO1xuICAgIFN3YWdnZXJXcmFwcGVyLm9uQ2xvc2VBdXRoTW9kYWwoYXV0aENsb3NlQ2xpY2tIYW5kbGVyKTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgU3dhZ2dlcldyYXBwZXIgfSBmcm9tIFwiLi4vd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyXCI7XG5pbXBvcnQgeyBSZWRvY1dyYXBwZXIgfSBmcm9tIFwiLi4vd3JhcHBlcnMvcmVkb2Mud3JhcHBlclwiO1xuaW1wb3J0IHsgVHJ5QnRuQ29uZmlnQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy90cnktYnRuLWNvbmZpZ1wiO1xuXG5kZWNsYXJlIGxldCAkOiBhbnk7XG5cbmNvbnN0IHRyeUNsaWNrSGFuZGxlciA9IChldmVudDogRXZlbnQpID0+IHtcbiAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gIGNvbnN0ICR0cnlCdG4gPSAkKGV2ZW50LnRhcmdldCk7XG4gIGNvbnN0IHNob3VsZE9wZW4gPSAhVHJ5QnRuLmlzU2VsZWN0ZWQoJHRyeUJ0bik7XG4gIFRyeUJ0bi51bnNlbGVjdEFsbCgpO1xuICBpZiAoc2hvdWxkT3Blbikge1xuICAgIFRyeUJ0bi5zZWxlY3QoJHRyeUJ0bik7XG4gIH1cbn07XG5cbmV4cG9ydCBjbGFzcyBUcnlCdG4ge1xuICBwdWJsaWMgc3RhdGljIGNmZzogVHJ5QnRuQ29uZmlnQ29uZmlnO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkc2libGluZygpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAke1RyeUJ0bi5jZmcuc2libGluZ1NlbGVjdG9yfWApO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBpc1NlbGVjdGVkKCRidG46IEpRdWVyeSk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAkYnRuLmhhc0NsYXNzKFRyeUJ0bi5jZmcuc2VsZWN0ZWRDbGFzc05hbWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB1bnNlbGVjdEFsbCgpOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci5oaWRlKCk7XG4gICAgUmVkb2NXcmFwcGVyLmhpZGUoKTtcbiAgICAkKFRyeUJ0bi5jZmcuc2VsZWN0b3IpLnJlbW92ZUNsYXNzKFRyeUJ0bi5jZmcuc2VsZWN0ZWRDbGFzc05hbWUpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBzZWxlY3QoJGJ0bjogSlF1ZXJ5KTogdm9pZCB7XG4gICAgJGJ0bi5hZGRDbGFzcyhUcnlCdG4uY2ZnLnNlbGVjdGVkQ2xhc3NOYW1lKTtcbiAgICBSZWRvY1dyYXBwZXIuY29uZmlndXJlVHJ5Qm94KCk7XG5cbiAgICBjb25zdCB7IGFwaSwgbWV0aG9kIH0gPSBSZWRvY1dyYXBwZXIuZ2V0Q3VycmVudEFwaUluZm8oKTtcbiAgICBTd2FnZ2VyV3JhcHBlci5zZWxlY3RBcGlTZWN0aW9uKGFwaSwgbWV0aG9kKTtcblxuICAgIFJlZG9jV3JhcHBlci4kdHJ5SXRCb3hDb250YWluZXIuYXBwZW5kKFN3YWdnZXJXcmFwcGVyLiRib3gpO1xuICAgIFN3YWdnZXJXcmFwcGVyLnNob3coKTtcbiAgICBSZWRvY1dyYXBwZXIuZml4U2Nyb2xsUG9zaXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0ICRzZWxlY3RlZCgpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAke1RyeUJ0bi5jZmcuc2VsZWN0ZWRTZWxlY3Rvcn1gKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0ICRidG4oKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChgLiR7VHJ5QnRuLmNmZy5jbGFzc05hbWV9YCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGluaXQoKTogdm9pZCB7XG4gICAgY29uc3QgJHRyeUJ0biA9ICQoXG4gICAgICBgPGJ1dHRvbiBjbGFzcz1cIiR7VHJ5QnRuLmNmZy5jbGFzc05hbWV9XCI+JHtUcnlCdG4uY2ZnLnRleHR9PC9idXR0b24+YCxcbiAgICApO1xuICAgICR0cnlCdG4uY2xpY2sodHJ5Q2xpY2tIYW5kbGVyKTtcbiAgICBUcnlCdG4uJHNpYmxpbmcuYWZ0ZXIoJHRyeUJ0bik7XG4gIH1cbn1cbiIsImV4cG9ydCBjbGFzcyBJbnZhbGlkRWxlbWVudEVycm9yIGV4dGVuZHMgRXJyb3Ige31cbiIsImltcG9ydCB7IGxvYWRTY3JpcHQgfSBmcm9tIFwiLi91dGlscy9sb2FkZXJzL3NjcmlwdHNcIjtcbmltcG9ydCB7IFN0eWxlciB9IGZyb20gXCIuL3N0eWxlclwiO1xuaW1wb3J0IHsgUmVkb2NUcnlJdE91dE9wdGlvbnMgfSBmcm9tIFwiLi9pbnRlcmZhY2VzL3JlZG9jLXRyeS1pdC1vdXQtb3B0aW9ucy5pbnRlcmZhY2VcIjtcbmltcG9ydCB7IFN3YWdnZXJXcmFwcGVyIH0gZnJvbSBcIi4vd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyXCI7XG5pbXBvcnQgeyBSZWRvY1dyYXBwZXIgfSBmcm9tIFwiLi93cmFwcGVycy9yZWRvYy53cmFwcGVyXCI7XG5pbXBvcnQgeyBBdXRoQnRuIH0gZnJvbSBcIi4vZWxlbWVudHMvYXV0aC5idG5cIjtcbmltcG9ydCB7IFRyeUJ0biB9IGZyb20gXCIuL2VsZW1lbnRzL3RyeS5idG5cIjtcbmltcG9ydCB7IFN3YWdnZXJDb25maWcgfSBmcm9tIFwiLi9jb25maWcvc3dhZ2dlci1jb25maWdcIjtcbmltcG9ydCB7IFJlZG9jVHJ5SXRPdXRDb25maWcgfSBmcm9tIFwiLi9jb25maWcvcmVkb2MtdHJ5LWl0LW91dC1jb25maWdcIjtcbmltcG9ydCB7IEF1dGhCdG5Db25maWcgfSBmcm9tIFwiLi9jb25maWcvYXV0aC1idG4tY29uZmlnXCI7XG5pbXBvcnQgeyBUcnlCdG5Db25maWdDb25maWcgfSBmcm9tIFwiLi9jb25maWcvdHJ5LWJ0bi1jb25maWdcIjtcbmltcG9ydCB7IFN0eWxlTWF0Y2hlckNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9zdHlsZS1tYXRjaGVyLmNvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgUmVkb2NUcnlJdE91dCB7XG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIGxvYWREZXBlbmRlbmNpZXMoKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgbG9hZFNjcmlwdChSZWRvY1dyYXBwZXIuY2ZnLnRyeUl0RGVwZW5kZW5jaWVzLmpxdWVyeVVybCk7XG4gICAgcmV0dXJuIGxvYWRTY3JpcHQoUmVkb2NXcmFwcGVyLmNmZy50cnlJdERlcGVuZGVuY2llcy5qcXVlcnlTY3JvbGxUb1VybCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBhc3luYyBsb2FkQWxsKCk6IFByb21pc2U8dm9pZFtdPiB7XG4gICAgYXdhaXQgUmVkb2NUcnlJdE91dC5sb2FkRGVwZW5kZW5jaWVzKCk7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFtSZWRvY1dyYXBwZXIuaW5pdCgpLCBTd2FnZ2VyV3JhcHBlci5pbml0KCldKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGNvbmZpZyhcbiAgICB1cmw6IHN0cmluZyxcbiAgICBjZmc6IFJlZG9jVHJ5SXRPdXRPcHRpb25zLFxuICAgIGVsZW1lbnQ/OiBIVE1MRWxlbWVudCxcbiAgKTogdm9pZCB7XG4gICAgUmVkb2NXcmFwcGVyLmNmZyA9IG5ldyBSZWRvY1RyeUl0T3V0Q29uZmlnKHVybCwgY2ZnLCBlbGVtZW50KTtcblxuICAgIGlmIChSZWRvY1dyYXBwZXIuY2ZnLm9wdGlvbnMudHJ5SXRPdXRFbmFibGVkKSB7XG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcgPSBuZXcgU3dhZ2dlckNvbmZpZyhcbiAgICAgICAge1xuICAgICAgICAgIGNkblVybDogUmVkb2NXcmFwcGVyLmNmZy5vcHRpb25zLmNkblVybCxcbiAgICAgICAgICAuLi4oY2ZnLnN3YWdnZXJPcHRpb25zIHx8IHt9KSxcbiAgICAgICAgfSxcbiAgICAgICAgdXJsLFxuICAgICAgICB0cnVlLFxuICAgICAgKTtcbiAgICAgIEF1dGhCdG4uY2ZnID0gbmV3IEF1dGhCdG5Db25maWcoY2ZnLmF1dGhCdG4gfHwge30pO1xuICAgICAgVHJ5QnRuLmNmZyA9IG5ldyBUcnlCdG5Db25maWdDb25maWcoY2ZnLnRyeUJ0biB8fCB7fSk7XG4gICAgICBTdHlsZXIuY2ZnID0gbmV3IFN0eWxlTWF0Y2hlckNvbmZpZyhcbiAgICAgICAgY2ZnLnN0eWxlck1hdGNoZXIgfHwge30sXG4gICAgICAgIFN3YWdnZXJXcmFwcGVyLmNmZyxcbiAgICAgICAgUmVkb2NXcmFwcGVyLmNmZyxcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBpbml0KFxuICAgIGRvY1VybDogc3RyaW5nLFxuICAgIGNmZzogUmVkb2NUcnlJdE91dE9wdGlvbnMsXG4gICAgZWxlbWVudD86IEhUTUxFbGVtZW50LFxuICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAvLyBUaGlzIHBhcnNlcyBhbmQgc2V0cyB0aGUgY29uZmlnIG9uIHRoZSBzdGF0aWMgY2ZnIHByb3BlcnR5IG9uIHRoZSBSZWRvY1dyYXBwZXIgY2xhc3NcbiAgICBSZWRvY1RyeUl0T3V0LmNvbmZpZyhkb2NVcmwsIGNmZywgZWxlbWVudCk7XG5cbiAgICBpZiAoUmVkb2NXcmFwcGVyLmNmZy5vcHRpb25zLmRpc2FibGVaZW5zY3JvbGwpIHtcbiAgICAgICh3aW5kb3cgYXMgYW55KS5ub1plbnNtb290aCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKFJlZG9jV3JhcHBlci5jZmcub3B0aW9ucy50cnlJdE91dEVuYWJsZWQpIHtcbiAgICAgIGF3YWl0IFJlZG9jVHJ5SXRPdXQubG9hZEFsbCgpO1xuICAgICAgQXV0aEJ0bi5pbml0KCk7XG4gICAgICBUcnlCdG4uaW5pdCgpO1xuICAgICAgU3R5bGVyLmluaXQoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgYXdhaXQgUmVkb2NXcmFwcGVyLmluaXQoKTtcbiAgICB9XG4gIH1cbn1cbiIsImltcG9ydCB7IFN0eWxlQnVpbGRlciB9IGZyb20gXCIuL3V0aWxzL3N0eWxlLWJ1aWxkZXJcIjtcbmltcG9ydCB7IFN3YWdnZXJXcmFwcGVyIH0gZnJvbSBcIi4vd3JhcHBlcnMvc3dhZ2dlci53cmFwcGVyXCI7XG5pbXBvcnQgeyBUcnlCdG4gfSBmcm9tIFwiLi9lbGVtZW50cy90cnkuYnRuXCI7XG5pbXBvcnQgeyBBdXRoQnRuIH0gZnJvbSBcIi4vZWxlbWVudHMvYXV0aC5idG5cIjtcbmltcG9ydCB7IFN0eWxlTWF0Y2hlckNvbmZpZyB9IGZyb20gXCIuL2NvbmZpZy9zdHlsZS1tYXRjaGVyLmNvbmZpZ1wiO1xuXG5leHBvcnQgY2xhc3MgU3R5bGVyIHtcbiAgcHVibGljIHN0YXRpYyBjZmc6IFN0eWxlTWF0Y2hlckNvbmZpZztcblxuICBwcml2YXRlIHN0YXRpYyBzaGVldCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcblxuICBwcml2YXRlIHN0YXRpYyBzaGVldEFkZGVkT25Eb2N1bWVudDogZmFsc2U7XG5cbiAgcHJpdmF0ZSBzdGF0aWMgdXBkYXRlKCk6IHZvaWQge1xuICAgIGlmICghU3R5bGVyLnNoZWV0QWRkZWRPbkRvY3VtZW50KSB7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKFN0eWxlci5zaGVldCk7XG4gICAgfVxuICAgIFN0eWxlci5zaGVldC5pbm5lckhUTUwgPSBTdHlsZUJ1aWxkZXIudG9TdHJpbmcoKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGF1dGhBcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLnNob3duQXV0aE1vZGFsU2VsZWN0b3IpXG4gICAgICAuaGlkZGVuKClcbiAgICAgIC5zdHlsZSh7IGhlaWdodDogXCJhdXRvXCIsIGxlZnQ6IDAsIHRvcDogMCwgd2lkdGg6IFwiYXV0b1wiIH0pXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5hdXRob3JpemVNb2RhbFNlbGVjdG9yKVxuICAgICAgLmhpZGRlbigpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVuTW9kYWxPdmVybGF5U2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5vcGVuQXV0aG9yaXplTW9kYWxTZWxlY3RvcilcbiAgICAgIC52aXNpYmxlKClcbiAgICAgIC5zdHlsZSh7IHdpZHRoOiBcImF1dG9cIiwgaGVpZ2h0OiBcImF1dG9cIiB9KTtcblxuICAgIEF1dGhCdG4uJGVsZW1lbnQuYWRkQ2xhc3MoU3R5bGVyLmNmZy5hdXRoQnRuQ2xhc3Nlc1NvdXJjZSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0cnlCdG5BcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoVHJ5QnRuLmNmZy5zZWxlY3RvcilcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYXV0aEJ0blNvdXJjZSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaHR0cFZlcmJTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaHR0cFZlcmJTb3VyY2UsIFtcInBhZGRpbmdcIl0pXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kYXV0aEJ0blNvdXJjZSwgW1wiY29sb3JcIl0pXG4gICAgICAuc3R5bGUoe1xuICAgICAgICBcImJhY2tncm91bmQtY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0QmFja2dyb3VuZENvbG9yLFxuICAgICAgICBcIm1hcmdpbi1sZWZ0XCI6IFwiMnB4XCIsXG4gICAgICAgIGN1cnNvcjogXCJwb2ludGVyXCIsXG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGlucHV0QXBwbGllcygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcuaW5wdXRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSlcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSwgW1wiY29sb3JcIiwgXCJmb250LXNpemVcIl0pXG4gICAgICAuc3R5bGUoeyBcImJvcmRlci1yYWRpdXNcIjogMCB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG1vZGFsQXBwbGllcygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcubW9kYWxIZWFkZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaDJTb3VyY2UpXG4gICAgICAuYWRkKFN0eWxlci5jZmcubW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbFRpdGxlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGgzU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm1vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kbGFiZWxTb3VyY2UsIFwiZm9udC1zaXplXCIpXG4gICAgICAuYWRkKFN0eWxlci5jZmcubW9kYWxDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGgzU291cmNlKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm1vZGFsVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcImJhY2tncm91bmQtY29sb3JcIjogXCJ3aGl0ZVwiLCBcImJvcmRlci1yYWRpdXNcIjogXCIwXCIgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbEJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJHNhblNlcmlmRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLnN0eWxlKHsgXCJib3JkZXItcmFkaXVzXCI6IDAgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5tb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgXCJib3JkZXItY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0Qm9yZGVyQ29sb3IgfSk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyB0cnlJdEJveEFwcGxpZXMoKTogdm9pZCB7XG4gICAgU3R5bGVCdWlsZGVyLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvblNlY3Rpb25UYXJnZXRTZWxlY3RvcilcbiAgICAgIC5oaWRkZW4oKVxuICAgICAgLm5vSGVpZ2h0KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVuZWRPcGVyYXRpb25TZWN0aW9uU2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuc3R5bGUoeyBoZWlnaHQ6IFwiaW5pdGlhbFwiIH0pO1xuXG4gICAgU3R5bGVCdWlsZGVyLmFkZChTdHlsZXIuY2ZnLm9wZW5lZE9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yKS5zdHlsZSh7XG4gICAgICBkaXNwbGF5OiBcImJsb2NrXCIsXG4gICAgfSk7XG5cbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kZGF0YVNlY3Rpb25Tb3VyY2UsIFwicGFkZGluZ1wiKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVyYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuc3R5bGUoeyBcImJhY2tncm91bmQtY29sb3JcIjogU3R5bGVyLmNmZy5kZWZhdWx0QmFja2dyb3VuZENvbG9yIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcuc2VsZWN0VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGlucHV0U291cmNlKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRpbnB1dFNvdXJjZSwgW1wiYm9yZGVyLXdpZHRoXCIsIFwiYm9yZGVyLXN0eWxlXCJdKVxuICAgICAgLmFic29sdXRlKClcbiAgICAgIC5zdHlsZSh7XG4gICAgICAgIFwiYm9yZGVyLXdpZHRoXCI6IFwiMXB4XCIsXG4gICAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBTdHlsZXIuY2ZnLmRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IsXG4gICAgICAgIFwiYm9yZGVyLXN0eWxlXCI6IFwic29saWRcIixcbiAgICAgICAgcGFkZGluZzogXCIwIDVweFwiLFxuICAgICAgICBcIm1hcmdpbi10b3BcIjogXCItMyVcIixcbiAgICAgICAgcmlnaHQ6IDAsXG4gICAgICAgIFwibWFyZ2luLXJpZ2h0XCI6IFN0eWxlci5jZmcuJGRhdGFTZWN0aW9uU291cmNlLmNzcyhcInBhZGRpbmctcmlnaHRcIiksXG4gICAgICB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFncmFwaFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy50ZXh0QXJlYVRhcmdldFNlbGVjdG9yKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kYWx0ZXJuYXRpdmVNb25vc3BhY2VGb250U291cmNlKVxuICAgICAgLmNsb25lQm9yZGVyKFN0eWxlci5jZmcuJGNvZGVCb3hTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgW1wiY29sb3JcIl0pXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgW1wiYmFja2dyb3VuZC1jb2xvclwiXSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5kZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN0eWxlci5jZmcuZXhlY3V0ZUJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLnJlc2V0Qm9yZGVyKClcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRhdXRoQnRuU291cmNlKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRhdXRoQnRuU291cmNlKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGF1dGhCdG5Tb3VyY2UsIFtcImJhY2tncm91bmQtY29sb3JcIl0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaDVTb3VyY2UsIFtcInBhZGRpbmdcIiwgXCJtYXJnaW5cIl0pXG4gICAgICAuc3R5bGUoeyBcImJveC1zaGFkb3dcIjogXCJub25lXCIgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUJvcmRlcihTdHlsZXIuY2ZnLiRoNVNvdXJjZSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kaDVTb3VyY2UpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kaDVTb3VyY2UsIFwidGV4dC10cmFuc2Zvcm1cIilcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5zdHlsZSh7IGRpc3BsYXk6IFwiYmxvY2tcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBwYWRkaW5nOiBcIjAgMCAyMHB4IDBcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyTmFtZUZpZWxkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGZpZWxkU291cmNlKVxuICAgICAgLnN0eWxlKHsgZmxvYXQ6IFwicmlnaHRcIiwgd2lkdGg6IFwiNjBweFwiLCBcIndvcmQtd3JhcFwiOiBcImJyZWFrLXdvcmRcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclJlcXVpcmVkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9QYWRkaW5nKClcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kcmVxdWlyZWRGaWVsZFNvdXJjZSlcbiAgICAgIC5zdHlsZSh7IGRpc3BsYXk6IFwiYmxvY2tcIiwgXCJwYWRkaW5nLXRvcFwiOiBcIjRweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyVHlwZUZpZWxkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJHR5cGVTb3VyY2UpXG4gICAgICAuc3R5bGUoeyBcIm1hcmdpbi1sZWZ0XCI6IFwiMjhweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyRGVwcmVjYXRlZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgXCJtYXJnaW4tbGVmdFwiOiBcIjI4cHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclNvdXJjZVRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lU3R5bGVzKFN0eWxlci5jZmcuJGFsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZSwgXCJmb250LWZhbWlseVwiKVxuICAgICAgLnN0eWxlKHsgXCJtYXJnaW4tbGVmdFwiOiBcIjI4cHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGxhYmVsU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnNlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGxhYmVsU291cmNlKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnNlcnZlclJlc3BvbnNlU3RhdHVzVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcInBhZGRpbmctcmlnaHRcIjogXCIxMHB4XCIgfSlcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kdHlwZVNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuc3R5bGUoeyBcInBhZGRpbmctdG9wXCI6IDAgfSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zZXJ2ZXJSZXNwb25zZVN1YkhlYWRlclRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRsYWJlbFNvdXJjZSlcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5jbG9uZUZvbnQoU3R5bGVyLmNmZy4kY29kZVNvdXJjZSwgdHJ1ZSlcbiAgICAgIC5jbG9uZVN0eWxlcyhTdHlsZXIuY2ZnLiRjb2RlQm94U291cmNlLCBcImJhY2tncm91bmQtY29sb3JcIiwgdHJ1ZSlcbiAgICAgIC5yZXNldEJvcmRlcigpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucmVzcG9uc2VDb2RlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGNvZGVTb3VyY2UsIHRydWUpXG4gICAgICAuY2xvbmVTdHlsZXMoU3R5bGVyLmNmZy4kY29kZUJveFNvdXJjZSwgXCJiYWNrZ3JvdW5kLWNvbG9yXCIsIHRydWUpXG4gICAgICAucmVzZXRCb3JkZXIoKVxuICAgICAgLmFkZChgJHtTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3J9OmJlZm9yZWApXG4gICAgICAuY2xvbmVGb250KFN0eWxlci5jZmcuJGJ0blNvdXJjZSlcbiAgICAgIC5zdHlsZSh7IGNvbnRlbnQ6ICdcIkNvcHlcIicsIGRpc3BsYXk6IFwiYmxvY2tcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYnRuU291cmNlKVxuICAgICAgLnN0eWxlKHsgYmFja2dyb3VuZDogXCJub25lXCIsIHBhZGRpbmc6IFwiNXB4XCIsIHdpZHRoOiBcIjQycHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9QYWRkaW5nKClcbiAgICAgIC5zdHlsZSh7IFwiYmFja2dyb3VuZC1pbWFnZVwiOiBcIm5vbmVcIiwgaGVpZ2h0OiBcIjIxcHhcIiB9KVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLnN0eWxlKHsgcmlnaHQ6IFwiMTBweFwiLCBib3R0b206IFwiMThweFwiIH0pXG4gICAgICAuYWRkKFN0eWxlci5jZmcucmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yKVxuICAgICAgLmNsb25lRm9udChTdHlsZXIuY2ZnLiRidG5Tb3VyY2UpXG4gICAgICAuY2xvbmVCb3JkZXIoU3R5bGVyLmNmZy4kYnRuU291cmNlKVxuICAgICAgLnN0eWxlKHsgYmFja2dyb3VuZDogXCJub25lXCIgfSk7XG5cbiAgICBUcnlCdG4uJGJ0bi5vbihcImNsaWNrXCIsIFN0eWxlci5jcmVhdGVTdHlsZUVsZW1lbnRzKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIHRoZW1lTWF0Y2hBcHBsaWVzKCk6IHZvaWQge1xuICAgIFN0eWxlci5pbnB1dEFwcGxpZXMoKTtcbiAgICBTdHlsZXIubW9kYWxBcHBsaWVzKCk7XG4gICAgU3R5bGVyLnRyeUl0Qm94QXBwbGllcygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgaGlkZURpc3R1cmJpbmdFbGVtZW50cygpOiB2b2lkIHtcbiAgICBTdHlsZUJ1aWxkZXIuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uVHJ5T3V0VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnJlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLnBhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5zdW1tYXJ5VGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5jbGVhckJ0blRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcucGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IpXG4gICAgICAubm9EaXNwbGF5KClcbiAgICAgIC5hZGQoU3R5bGVyLmNmZy5vcGVuZWRJbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpXG4gICAgICAuYWRkKFN0eWxlci5jZmcub3BlbmVkQXV0aFdyYXBwZXJUYXJnZXRTZWxlY3RvcilcbiAgICAgIC5ub0Rpc3BsYXkoKVxuICAgICAgLmFkZChTdHlsZXIuY2ZnLm9wZW5lZE1vZGVsc0NvbnRhaW5lclRhcmdldFNlbGVjdG9yKVxuICAgICAgLm5vRGlzcGxheSgpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBjcmVhdGVTdHlsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgbWFya2VyID0gU3R5bGVyLmNmZy4kZmllbGRNYXJrZXJTb3VyY2UuY2xvbmUoKTtcbiAgICAgIG1hcmtlci5jc3MoXCJmbG9hdFwiLCBcImxlZnRcIik7XG4gICAgICBtYXJrZXIuaW5zZXJ0QmVmb3JlKFxuICAgICAgICBgJHtTdHlsZXIuY2ZnLnBhcmFtZXRlck5hbWVGaWVsZFRhcmdldFNlbGVjdG9yfTpmaXJzdC1jaGlsZGAsXG4gICAgICApO1xuICAgIH0sIDEwMCk7XG4gICAgVHJ5QnRuLiRzZWxlY3RlZC5vZmYoXCJjbGlja1wiLCBTdHlsZXIuY3JlYXRlU3R5bGVFbGVtZW50cyk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGluaXQoKTogdm9pZCB7XG4gICAgU3R5bGVyLmhpZGVEaXN0dXJiaW5nRWxlbWVudHMoKTtcbiAgICBTdHlsZXIuYXV0aEFwcGxpZXMoKTtcbiAgICBTdHlsZXIudHJ5QnRuQXBwbGllcygpO1xuICAgIFN0eWxlci50aGVtZU1hdGNoQXBwbGllcygpO1xuICAgIFN0eWxlci51cGRhdGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaW5pdFN3YWdnZXJXcmFwcGVyKCk6IHZvaWQge1xuICAgIFN0eWxlQnVpbGRlci5hZGQoXCJib2R5XCIpXG4gICAgICAucmVsYXRpdmUoKVxuICAgICAgLmFkZChTd2FnZ2VyV3JhcHBlci5jZmcud3JhcHBlclNlbGVjdG9yKVxuICAgICAgLm5vUGFkZGluZygpXG4gICAgICAuYWRkKFN3YWdnZXJXcmFwcGVyLmNmZy5ib3hTZWxlY3RvcilcbiAgICAgIC5yZWxhdGl2ZSgpXG4gICAgICAubm9Ub3AoKVxuICAgICAgLm5vTGVmdCgpXG4gICAgICAubm9PdmVyZmxvdygpXG4gICAgICAucmVzZXRCb3JkZXIoKVxuICAgICAgLnN0eWxlKHtcbiAgICAgICAgXCJib3JkZXItcmFkaXVzXCI6IFwiNHB4XCIsXG4gICAgICAgIFwiYmFja2dyb3VuZC1jb2xvclwiOiBcIiNmZmZmXCIsXG4gICAgICAgIHdpZHRoOiBcIjEwMCVcIixcbiAgICAgICAgaGVpZ2h0OiBcIjEwMHZoXCIsXG4gICAgICAgIFwiei1pbmRleFwiOiAxLFxuICAgICAgfSlcbiAgICAgIC5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLmhpZGRlblNlbGVjdG9yKVxuICAgICAgLmhpZGRlbigpXG4gICAgICAubm9XaWR0aCgpXG4gICAgICAubm9IZWlnaHQoKVxuICAgICAgLm5vQ3Vyc29yKClcbiAgICAgIC5hZGQoU3dhZ2dlcldyYXBwZXIuY2ZnLnNob3duU2VsZWN0b3IpXG4gICAgICAudmlzaWJsZSgpXG4gICAgICAuc3R5bGUoeyBjdXJzb3I6IFwiaW5pdGlhbFwiLCB3aWR0aDogXCJhdXRvXCIsIGhlaWdodDogXCJhdXRvXCIgfSk7XG5cbiAgICBTdHlsZXIudXBkYXRlKCk7XG4gIH1cbn1cbiIsImV4cG9ydCBmdW5jdGlvbiBsb2FkU2NyaXB0KHNyYzogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgY29uc3QgbG9hZGVyID0gbmV3IFByb21pc2U8YW55PigocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgY29uc3Qgc2NyaXB0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICBzY3JpcHQudHlwZSA9IFwidGV4dC9qYXZhc2NyaXB0XCI7XG4gICAgc2NyaXB0Lm9ubG9hZCA9IHJlc29sdmU7XG4gICAgc2NyaXB0Lm9uZXJyb3IgPSByZWplY3Q7XG4gICAgc2NyaXB0LnNyYyA9IHNyYztcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZChzY3JpcHQpO1xuICB9KTtcblxuICByZXR1cm4gbG9hZGVyO1xufVxuIiwiZXhwb3J0IGZ1bmN0aW9uIGxvYWRTdHlsZXNoZWV0KHN0eWxlc2hlZXRVcmw6IHN0cmluZyk6IHZvaWQge1xuICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gIGxpbmsucmVsID0gXCJzdHlsZXNoZWV0XCI7XG4gIGxpbmsuaHJlZiA9IHN0eWxlc2hlZXRVcmw7XG4gIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQobGluayk7XG59XG4iLCJpbnRlcmZhY2UgSVN0eWxlIHtcbiAgYmFja2dyb3VuZD86IHN0cmluZztcbiAgXCJiYWNrZ3JvdW5kLWNvbG9yXCI/OiBzdHJpbmc7XG4gIFwiYmFja2dyb3VuZC1pbWFnZVwiPzogc3RyaW5nO1xuICBib3JkZXI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiYm9yZGVyLWJvdHRvbVwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1jb2xvclwiPzogc3RyaW5nO1xuICBcImJvcmRlci1sZWZ0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiYm9yZGVyLXJhZGl1c1wiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1yaWdodFwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJvcmRlci1zdHlsZVwiPzpcbiAgICB8IFwibm9uZVwiXG4gICAgfCBcImhpZGRlblwiXG4gICAgfCBcImRvdHRlZFwiXG4gICAgfCBcImRhc2hlZFwiXG4gICAgfCBcInNvbGlkXCJcbiAgICB8IFwiZG91YmxlXCJcbiAgICB8IFwiZ3Jvb3ZlXCJcbiAgICB8IFwicmlkZ2VcIlxuICAgIHwgXCJpbnNldFwiXG4gICAgfCBcIm91dHNldFwiO1xuICBcImJvcmRlci10b3BcIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJib3JkZXItd2lkdGhcIj86IG51bWJlciB8IHN0cmluZztcbiAgYm90dG9tPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcImJveC1zaGFkb3dcIj86IHN0cmluZztcbiAgY29sb3I/OiBzdHJpbmc7XG4gIGNvbnRlbnQ/OiBzdHJpbmc7XG4gIGN1cnNvcj86IFwiaW5pdGlhbFwiIHwgXCJub25lXCIgfCBcIm5vdC1hbGxvd2VkXCIgfCBcInBvaW50ZXJcIjtcbiAgZGlzcGxheT86IHN0cmluZztcbiAgZmxvYXQ/OiBcInJpZ2h0XCIgfCBcImxlZnRcIiB8IFwibm9uZVwiIHwgXCJpbmhlcml0XCI7XG4gIFwiZm9udC1mYW1pbHlcIj86IHN0cmluZztcbiAgXCJmb250LXdlaWdodFwiPzogbnVtYmVyO1xuICBcImZvbnQtc2l6ZVwiPzogc3RyaW5nO1xuICBoZWlnaHQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIGxlZnQ/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibGluZS1oZWlnaHRcIj86IHN0cmluZztcbiAgbWFyZ2luPzogbnVtYmVyIHwgc3RyaW5nO1xuICBcIm1hcmdpbi1sZWZ0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibWFyZ2luLXJpZ2h0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwibWFyZ2luLXRvcFwiPzogbnVtYmVyIHwgc3RyaW5nO1xuICBvdmVyZmxvdz86IFwiaGlkZGVuXCI7XG4gIHBhZGRpbmc/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwicGFkZGluZy1ib3R0b21cIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJwYWRkaW5nLXJpZ2h0XCI/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwicGFkZGluZy10b3BcIj86IG51bWJlciB8IHN0cmluZztcbiAgXCJwb2ludGVyLWV2ZW50c1wiPzogXCJpbml0aWFsXCIgfCBcIm5vbmVcIjtcbiAgcG9zaXRpb24/OiBcImFic29sdXRlXCIgfCBcInJlbGF0aXZlXCI7XG4gIHJpZ2h0PzogbnVtYmVyIHwgc3RyaW5nO1xuICBcInRleHQtdHJhbnNmb3JtXCI/OiBzdHJpbmc7XG4gIHRvcD86IG51bWJlciB8IHN0cmluZztcbiAgdmlzaWJpbGl0eT86IFwiaGlkZGVuXCIgfCBcInZpc2libGVcIjtcbiAgd2lkdGg/OiBudW1iZXIgfCBzdHJpbmc7XG4gIFwiei1pbmRleFwiPzogbnVtYmVyO1xuICBcIndvcmQtd3JhcFwiPzogXCJub3JtYWxcIiB8IFwiYnJlYWstd29yZFwiIHwgXCJpbml0aWFsXCIgfCBcImluaGVyaXRcIjtcbn1cblxuY2xhc3MgU3R5bGUge1xuICBwcml2YXRlIHJlYWRvbmx5IHBhcmVudDogU3R5bGVCdWlsZGVyO1xuICBwcml2YXRlIHByb3BlcnRpZXM6IHsgW3Byb3BlcnR5OiBzdHJpbmddOiBzdHJpbmcgfSA9IHt9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihwYXJlbnQ6IFN0eWxlQnVpbGRlcikge1xuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xuICB9XG5cbiAgcHVibGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnBhcmVudC5hZGQoc2VsZWN0b3IpO1xuICB9XG5cbiAgcHVibGljIHN0eWxlKHN0eWxlOiBJU3R5bGUpOiBTdHlsZSB7XG4gICAgT2JqZWN0LmVudHJpZXMoc3R5bGUpLmZvckVhY2goXG4gICAgICAoW3Byb3BlcnR5LCB2YWx1ZV0pID0+XG4gICAgICAgICh0aGlzLnByb3BlcnRpZXNbcHJvcGVydHldID0gYCR7cHJvcGVydHl9OiAke3ZhbHVlfWApLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBwdWJsaWMgYWJzb2x1dGUoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgcG9zaXRpb246IFwiYWJzb2x1dGVcIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyByZWxhdGl2ZSgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBwb3NpdGlvbjogXCJyZWxhdGl2ZVwiIH0pO1xuICB9XG5cbiAgcHVibGljIGhpZGRlbigpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB2aXNpYmlsaXR5OiBcImhpZGRlblwiIH0pO1xuICB9XG5cbiAgcHVibGljIHZpc2libGUoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgdmlzaWJpbGl0eTogXCJ2aXNpYmxlXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9XaWR0aCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB3aWR0aDogMCB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub0hlaWdodCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBoZWlnaHQ6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9DdXJzb3IoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgY3Vyc29yOiBcIm5vbmVcIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub1RvcCgpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyB0b3A6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9MZWZ0KCk6IFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zdHlsZSh7IGxlZnQ6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9QYWRkaW5nKCk6IFN0eWxlIHtcbiAgICByZXR1cm4gdGhpcy5zdHlsZSh7IHBhZGRpbmc6IDAgfSk7XG4gIH1cblxuICBwdWJsaWMgbm9PdmVyZmxvdygpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBvdmVyZmxvdzogXCJoaWRkZW5cIiB9KTtcbiAgfVxuXG4gIHB1YmxpYyBub0Rpc3BsYXkoKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLnN0eWxlKHsgZGlzcGxheTogXCJub25lXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgY2xvbmVTdHlsZXMoXG4gICAgJHNvdXJjZTogSlF1ZXJ5LFxuICAgIGF0dHJpYnV0ZXM6IHN0cmluZyB8IEFycmF5PHN0cmluZz4sXG4gICAgZm9yY2VPdmVycmlkZT86IGJvb2xlYW4sXG4gICk6IFN0eWxlIHtcbiAgICBjb25zdCBpbXBvcnRhbnQgPSBmb3JjZU92ZXJyaWRlID8gXCIhaW1wb3J0YW50XCIgOiBcIlwiO1xuICAgIGF0dHJpYnV0ZXMgPSBBcnJheS5pc0FycmF5KGF0dHJpYnV0ZXMpID8gYXR0cmlidXRlcyA6IFthdHRyaWJ1dGVzXTtcbiAgICBhdHRyaWJ1dGVzLmZvckVhY2goKGF0cnJpYnV0ZSkgPT5cbiAgICAgIHRoaXMuc3R5bGUoeyBbYXRycmlidXRlXTogYCR7JHNvdXJjZS5jc3MoYXRycmlidXRlKX0gJHtpbXBvcnRhbnR9YCB9KSxcbiAgICApO1xuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgcHVibGljIGNsb25lRm9udCgkc291cmNlOiBKUXVlcnksIGZvcmNlT3ZlcnJpZGU/OiBib29sZWFuKTogU3R5bGUge1xuICAgIHJldHVybiB0aGlzLmNsb25lU3R5bGVzKFxuICAgICAgJHNvdXJjZSxcbiAgICAgIFtcImZvbnQtZmFtaWx5XCIsIFwiZm9udC1zaXplXCIsIFwiZm9udC13ZWlnaHRcIiwgXCJsaW5lLWhlaWdodFwiLCBcImNvbG9yXCJdLFxuICAgICAgZm9yY2VPdmVycmlkZSxcbiAgICApO1xuICB9XG5cbiAgcHVibGljIGNsb25lQm9yZGVyKCRzb3VyY2U6IEpRdWVyeSwgZm9yY2VPdmVycmlkZT86IGJvb2xlYW4pOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuY2xvbmVTdHlsZXMoXG4gICAgICAkc291cmNlLFxuICAgICAgW1wiYm9yZGVyLXRvcFwiLCBcImJvcmRlci1yaWdodFwiLCBcImJvcmRlci1sZWZ0XCIsIFwiYm9yZGVyLWJvdHRvbVwiXSxcbiAgICAgIGZvcmNlT3ZlcnJpZGUsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyByZXNldEJvcmRlcigpOiBTdHlsZSB7XG4gICAgcmV0dXJuIHRoaXMuc3R5bGUoeyBib3JkZXI6IDAsIFwiYm9yZGVyLXJhZGl1c1wiOiAwLCBcImJveC1zaGFkb3dcIjogXCJub25lXCIgfSk7XG4gIH1cblxuICBwdWJsaWMgdG9TdHJpbmcoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh0aGlzLnByb3BlcnRpZXMpLmpvaW4oXCI7XCIpO1xuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdHlsZUJ1aWxkZXIge1xuICBwcml2YXRlIHN0YXRpYyBzZWxlY3RvcnNCdWlsZGVyOiBTdHlsZUJ1aWxkZXIgPSBuZXcgU3R5bGVCdWlsZGVyKCk7XG4gIHByaXZhdGUgc3RhdGljIG1lZGlhU2VsZWN0b3JzQnVpbGRlcjogeyBbbWVkaWE6IHN0cmluZ106IFN0eWxlQnVpbGRlciB9ID0ge307XG5cbiAgcHJpdmF0ZSBzZWxlY3RvcnM6IHsgW3NlbGVjdG9yOiBzdHJpbmddOiBTdHlsZSB9ID0ge307XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHt9IC8vZXNsaW50LWRpc2FibGUtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZW1wdHktZnVuY3Rpb25cblxuICBwcml2YXRlIHRvU3RyaW5nKCk6IHN0cmluZyB7XG4gICAgbGV0IHN0eWxlID0gXCJcIjtcbiAgICBPYmplY3QuZW50cmllcyh0aGlzLnNlbGVjdG9ycykuZm9yRWFjaCgoW3NlbGVjdG9yLCBzdHlsZXNdKSA9PiB7XG4gICAgICBzdHlsZSArPSBgJHtzZWxlY3Rvcn0geyAke3N0eWxlc30gfWA7XG4gICAgfSk7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9XG5cbiAgcHVibGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIGlmICghdGhpcy5zZWxlY3RvcnNbc2VsZWN0b3JdKSB7XG4gICAgICB0aGlzLnNlbGVjdG9yc1tzZWxlY3Rvcl0gPSBuZXcgU3R5bGUodGhpcyk7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLnNlbGVjdG9yc1tzZWxlY3Rvcl07XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGFkZChzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGUge1xuICAgIGlmICghU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXSkge1xuICAgICAgU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXSA9IG5ldyBTdHlsZShcbiAgICAgICAgU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm4gU3R5bGVCdWlsZGVyLnNlbGVjdG9yc0J1aWxkZXIuc2VsZWN0b3JzW3NlbGVjdG9yXTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgYWRkTWVkaWFTZWxlY3RvcihzZWxlY3Rvcjogc3RyaW5nKTogU3R5bGVCdWlsZGVyIHtcbiAgICBpZiAoIVN0eWxlQnVpbGRlci5tZWRpYVNlbGVjdG9yc0J1aWxkZXJbc2VsZWN0b3JdKSB7XG4gICAgICBTdHlsZUJ1aWxkZXIubWVkaWFTZWxlY3RvcnNCdWlsZGVyW3NlbGVjdG9yXSA9IG5ldyBTdHlsZUJ1aWxkZXIoKTtcbiAgICB9XG4gICAgcmV0dXJuIFN0eWxlQnVpbGRlci5tZWRpYVNlbGVjdG9yc0J1aWxkZXJbc2VsZWN0b3JdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyB0b1N0cmluZygpOiBzdHJpbmcge1xuICAgIGxldCBtZWRpYSA9IFwiXCI7XG4gICAgT2JqZWN0LmVudHJpZXMoU3R5bGVCdWlsZGVyLm1lZGlhU2VsZWN0b3JzQnVpbGRlcikuZm9yRWFjaChcbiAgICAgIChbc2VsZWN0b3IsIHNlbGVjdG9yc10pID0+IHtcbiAgICAgICAgbWVkaWEgKz0gYCR7c2VsZWN0b3J9IHsgJHtzZWxlY3RvcnN9IH1gO1xuICAgICAgfSxcbiAgICApO1xuXG4gICAgcmV0dXJuIGAke21lZGlhfSAke1N0eWxlQnVpbGRlci5zZWxlY3RvcnNCdWlsZGVyfWA7XG4gIH1cbn1cbiIsImltcG9ydCB7IFRyeUJ0biB9IGZyb20gXCIuLi9lbGVtZW50cy90cnkuYnRuXCI7XG5pbXBvcnQgeyBSZWRvY1RyeUl0T3V0Q29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9yZWRvYy10cnktaXQtb3V0LWNvbmZpZ1wiO1xuaW1wb3J0IHsgbG9hZFNjcmlwdCB9IGZyb20gXCIuLi91dGlscy9sb2FkZXJzL3NjcmlwdHNcIjtcblxuZGVjbGFyZSBsZXQgUmVkb2M6IGFueTtcbmRlY2xhcmUgbGV0ICQ6IGFueTtcblxuZXhwb3J0IGNsYXNzIFJlZG9jV3JhcHBlciB7XG4gIHB1YmxpYyBzdGF0aWMgY2ZnOiBSZWRvY1RyeUl0T3V0Q29uZmlnO1xuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkb3BlcmF0aW9uQm94KCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuIFRyeUJ0bi4kc2VsZWN0ZWQucGFyZW50cyhSZWRvY1dyYXBwZXIuY2ZnLm9wZXJhdGlvbkJveFNlbGVjdG9yKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkYXBpSW5mb0NvbnRhaW5lcigpOiBKUXVlcnkge1xuICAgIHJldHVybiBUcnlCdG4uJHNlbGVjdGVkLnBhcmVudCgpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGFwaUNvbnRhaW5lcigpOiBKUXVlcnkge1xuICAgIHJldHVybiBSZWRvY1dyYXBwZXIuJGFwaUluZm9Db250YWluZXIucGFyZW50KCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCAkdHJ5SXRCb3hDb250YWluZXIoKTogSlF1ZXJ5IHtcbiAgICBjb25zdCAkdHJ5SXRCb3ggPSAkKFJlZG9jV3JhcHBlci5jZmcudHJ5SXRCb3hTZWxlY3Rvcik7XG4gICAgcmV0dXJuICR0cnlJdEJveC5sZW5ndGhcbiAgICAgID8gJHRyeUl0Qm94XG4gICAgICA6ICQoYDxkaXYgaWQ9XCIke1JlZG9jV3JhcHBlci5jZmcub3B0aW9ucy50cnlJdEJveENvbnRhaW5lcklkfVwiPjwvZGl2PmApO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgbW92ZVRyeUFwaUNvbnRhaW5lcigpOiB2b2lkIHtcbiAgICBSZWRvY1dyYXBwZXIuYXBpQ29udGFpbmVyLmFmdGVyKFJlZG9jV3JhcHBlci4kdHJ5SXRCb3hDb250YWluZXIpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgZ2V0IGRvbUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIGlmIChSZWRvY1dyYXBwZXIuY2ZnLmVsZW1lbnQpIHtcbiAgICAgIHJldHVybiBSZWRvY1dyYXBwZXIuY2ZnLmVsZW1lbnQ7XG4gICAgfVxuXG4gICAgY29uc3QgJGVsZW1lbnQgPSAkKGA8ZGl2IGlkPVwiJHtSZWRvY1dyYXBwZXIuY2ZnLmNvbnRhaW5lcklkfVwiPjwvZGl2PmApO1xuICAgICQoXCJib2R5XCIpLmFwcGVuZCgkZWxlbWVudCk7XG4gICAgcmV0dXJuICRlbGVtZW50WzBdO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGF3YWl0IGxvYWRTY3JpcHQoUmVkb2NXcmFwcGVyLmNmZy5idW5kbGVVcmwpO1xuICAgIGNvbnN0IHByb21pc2UgPSBuZXcgUHJvbWlzZTx2b2lkPigocmVzb2x2ZSwgcmVqZWN0KTogdm9pZCA9PiB7XG4gICAgICBSZWRvYy5pbml0KFxuICAgICAgICBSZWRvY1dyYXBwZXIuY2ZnLmRvY1VybCxcbiAgICAgICAgUmVkb2NXcmFwcGVyLmNmZy5vcHRpb25zLFxuICAgICAgICBSZWRvY1dyYXBwZXIuZG9tRWxlbWVudCxcbiAgICAgICAgKGU6IEVycm9yKSA9PiAoZSA/IHJlamVjdChlKSA6IHJlc29sdmUoKSksXG4gICAgICApO1xuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGNvbmZpZ3VyZVRyeUJveCgpOiB2b2lkIHtcbiAgICBSZWRvY1dyYXBwZXIuJG9wZXJhdGlvbkJveC5hZGRDbGFzcyhcbiAgICAgIFJlZG9jV3JhcHBlci5jZmcub3B0aW9ucy5zZWxlY3RlZE9wZXJhdGlvbkNsYXNzIHx8IFwiXCIsXG4gICAgKTtcbiAgICBSZWRvY1dyYXBwZXIubW92ZVRyeUFwaUNvbnRhaW5lcigpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBoaWRlKCk6IHZvaWQge1xuICAgIFJlZG9jV3JhcHBlci4kb3BlcmF0aW9uQm94LnJlbW92ZUNsYXNzKFxuICAgICAgUmVkb2NXcmFwcGVyLmNmZy5vcHRpb25zLnNlbGVjdGVkT3BlcmF0aW9uQ2xhc3MsXG4gICAgKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZml4U2Nyb2xsUG9zaXRpb24oKTogdm9pZCB7XG4gICAgJChcImJvZHlcIikuc2Nyb2xsVG8oUmVkb2NXcmFwcGVyLiRvcGVyYXRpb25Cb3gpO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRDdXJyZW50QXBpSW5mbygpOiB7IGFwaTogc3RyaW5nOyBtZXRob2Q6IHN0cmluZyB9IHtcbiAgICBjb25zdCByYXdBcGlJbmZvID0gUmVkb2NXcmFwcGVyLiRhcGlJbmZvQ29udGFpbmVyXG4gICAgICAudGV4dCgpXG4gICAgICAucmVwbGFjZShUcnlCdG4uY2ZnLnRleHQsIFwiXCIpXG4gICAgICAudHJpbSgpO1xuICAgIGNvbnN0IG1hdGNoID0gcmF3QXBpSW5mby5tYXRjaCgvKFxcdyspKC4qKS8pO1xuICAgIGNvbnN0IFssIG1ldGhvZCwgYXBpXSA9IG1hdGNoIGFzIEFycmF5PHN0cmluZz47XG4gICAgcmV0dXJuIHsgYXBpLCBtZXRob2QgfTtcbiAgfVxufVxuIiwiaW1wb3J0IHsgbG9hZFN0eWxlc2hlZXQgfSBmcm9tIFwiLi4vdXRpbHMvbG9hZGVycy9zdHlsZXNcIjtcbmltcG9ydCB7IGxvYWRTY3JpcHQgfSBmcm9tIFwiLi4vdXRpbHMvbG9hZGVycy9zY3JpcHRzXCI7XG5pbXBvcnQgeyBTdHlsZXIgfSBmcm9tIFwiLi4vc3R5bGVyXCI7XG5pbXBvcnQgeyBTd2FnZ2VyQ29uZmlnIH0gZnJvbSBcIi4uL2NvbmZpZy9zd2FnZ2VyLWNvbmZpZ1wiO1xuaW1wb3J0IHsgQ2FsbGJhY2tGdW5jdGlvbiB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL3N3YWdnZXItb3B0aW9ucy5pbnRlcmZhY2VcIjtcblxuZGVjbGFyZSBsZXQgU3dhZ2dlclVJQnVuZGxlOiBhbnk7XG5kZWNsYXJlIGxldCAkOiBhbnk7XG5cbmV4cG9ydCBjbGFzcyBTd2FnZ2VyV3JhcHBlciB7XG4gIHB1YmxpYyBzdGF0aWMgY2ZnOiBTd2FnZ2VyQ29uZmlnO1xuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0ICRib3goKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChgJHtTd2FnZ2VyV3JhcHBlci5jZmcuYm94U2VsZWN0b3J9YCk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgJGF1dGhvcml6ZUJ0bigpOiBKUXVlcnkge1xuICAgIHJldHVybiAkKGAke1N3YWdnZXJXcmFwcGVyLmNmZy5hdXRob3JpemVCdG5TZWxlY3Rvcn1gKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIGdldCAkYXV0aG9yaXplTW9kYWxDbG9zZVRyaWdnZXJzKCk6IEpRdWVyeSB7XG4gICAgcmV0dXJuICQoXG4gICAgICBgJHtTd2FnZ2VyV3JhcHBlci5jZmcuYXV0aG9yaXplRG9uZUJ0blNlbGVjdG9yfSwgJHtTd2FnZ2VyV3JhcHBlci5jZmcuYXV0aG9yaXplTW9kYWxDbG9zZUJ0blNlbGVjdG9yfWAsXG4gICAgKTtcbiAgfVxuXG4gIHByaXZhdGUgc3RhdGljIG9wZXJhdGlvblN1bW1hcnlTZWxlY3RvcihtZXRob2Q6IHN0cmluZywgYXBpOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBTd2FnZ2VyV3JhcHBlci5jZmcub3BlcmF0aW9uU3VtbWFyeVBhdHRlcm5TZWxlY3Rvci5yZXBsYWNlKFxuICAgICAgLyguKikoe21ldGhvZH0pKC4qKSh7YXBpfSkoLiopLyxcbiAgICAgIGAkMSR7bWV0aG9kfSQzJHthcGl9JDVgLFxuICAgICk7XG4gIH1cblxuICBwcml2YXRlIHN0YXRpYyBnZXQgJHNlbGVjdGVkQ29udGFpbmVyRWxlbWVudHMoKTogSlF1ZXJ5IHtcbiAgICByZXR1cm4gJChgLiR7U3dhZ2dlcldyYXBwZXIuY2ZnLnNlbGVjdGVkT3BlcmF0aW9uQ29udGFpbmVyQ2xhc3N9YCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGdldCBoYXNBdXRoKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiAhIVN3YWdnZXJXcmFwcGVyLiRhdXRob3JpemVCdG4ubGVuZ3RoO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBhc3luYyBpbml0KCk6IFByb21pc2U8dm9pZD4ge1xuICAgIFN0eWxlci5pbml0U3dhZ2dlcldyYXBwZXIoKTtcbiAgICBsb2FkU3R5bGVzaGVldChTd2FnZ2VyV3JhcHBlci5jZmcuY3NzVXJsKTtcbiAgICBhd2FpdCBsb2FkU2NyaXB0KFN3YWdnZXJXcmFwcGVyLmNmZy5idW5kbGVVcmwpO1xuICAgICQoXCJib2R5XCIpLmFwcGVuZChcbiAgICAgIGA8ZGl2IGlkPVwiJHtTd2FnZ2VyV3JhcHBlci5jZmcuaWR9XCIgY2xhc3M9XCIke1N3YWdnZXJXcmFwcGVyLmNmZy5oaWRlQ2xhc3N9XCI+PC9kaXY+YCxcbiAgICApO1xuICAgIFN3YWdnZXJVSUJ1bmRsZShTd2FnZ2VyV3JhcHBlci5jZmcpO1xuICAgIHJldHVybiBTd2FnZ2VyV3JhcHBlci5jZmcub25Db21wbGV0ZVByb21pc2U7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIGhpZGUoKTogdm9pZCB7XG4gICAgU3dhZ2dlcldyYXBwZXIuJGJveC5hdHRyKFwiY2xhc3NcIiwgU3dhZ2dlcldyYXBwZXIuY2ZnLmhpZGVDbGFzcyk7XG4gICAgU3dhZ2dlcldyYXBwZXIuJHNlbGVjdGVkQ29udGFpbmVyRWxlbWVudHMucmVtb3ZlQ2xhc3MoXG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzcyxcbiAgICApO1xuICAgICQoXCJib2R5XCIpLmFwcGVuZChTd2FnZ2VyV3JhcHBlci4kYm94KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2hvdygpOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci4kYm94LmF0dHIoXCJjbGFzc1wiLCBTd2FnZ2VyV3JhcHBlci5jZmcuc2hvd0NsYXNzKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2hvd0F1dGhNb2RhbCgpOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci4kYm94LmF0dHIoXCJjbGFzc1wiLCBTd2FnZ2VyV3JhcHBlci5jZmcuYXV0aE1vZGFsQ2xhc3MpO1xuICAgIFN3YWdnZXJXcmFwcGVyLiRhdXRob3JpemVCdG4uY2xpY2soKTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgaGlkZUF1dGhNb2RhbCgpOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci5oaWRlKCk7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG9uQ2xvc2VBdXRoTW9kYWwoZXZlbnQ6IENhbGxiYWNrRnVuY3Rpb24pOiB2b2lkIHtcbiAgICBTd2FnZ2VyV3JhcHBlci4kYXV0aG9yaXplTW9kYWxDbG9zZVRyaWdnZXJzLmNsaWNrKGV2ZW50KTtcbiAgfVxuXG4gIHB1YmxpYyBzdGF0aWMgc2VsZWN0QXBpU2VjdGlvbihhcGk6IHN0cmluZywgbWV0aG9kOiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCAkYXBpRG9tID0gJChTd2FnZ2VyV3JhcHBlci5vcGVyYXRpb25TdW1tYXJ5U2VsZWN0b3IobWV0aG9kLCBhcGkpKTtcbiAgICBjb25zdCAkb3BlcmF0aW9uQ29udGFpbmVyID0gJGFwaURvbS5wYXJlbnRzKFxuICAgICAgU3dhZ2dlcldyYXBwZXIuY2ZnLm9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yLFxuICAgICk7XG4gICAgY29uc3QgJG9wZXJhdGlvblNlY3Rpb24gPSAkb3BlcmF0aW9uQ29udGFpbmVyLnBhcmVudHMoXG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcub3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yLFxuICAgICk7XG5cbiAgICBpZiAoISRvcGVyYXRpb25Db250YWluZXIuZGF0YShcImNsaWNrZWRcIikpIHtcbiAgICAgICRhcGlEb20uY2xpY2soKTtcbiAgICB9XG5cbiAgICAkb3BlcmF0aW9uQ29udGFpbmVyLmRhdGEoXCJjbGlja2VkXCIsIHRydWUpO1xuICAgICRvcGVyYXRpb25Db250YWluZXIuYWRkQ2xhc3MoXG4gICAgICBTd2FnZ2VyV3JhcHBlci5jZmcuc2VsZWN0ZWRPcGVyYXRpb25Db250YWluZXJDbGFzcyxcbiAgICApO1xuICAgICRvcGVyYXRpb25TZWN0aW9uLmFkZENsYXNzKFxuICAgICAgU3dhZ2dlcldyYXBwZXIuY2ZnLnNlbGVjdGVkT3BlcmF0aW9uQ29udGFpbmVyQ2xhc3MsXG4gICAgKTtcbiAgfVxufVxuIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiJdLCJuYW1lcyI6WyJBdXRoQnRuQ29uZmlnIiwib3B0aW9ucyIsInBvc1NlbGVjdG9yIiwidGV4dCIsImNsYXNzTmFtZSIsIkNvbmZpZyIsInBhcnNlT3B0aW9ucyIsInRoaXMiLCJ0aGl6IiwiT2JqZWN0Iiwia2V5cyIsImZvckVhY2giLCJrZXkiLCJvcHRpb24iLCJoYXNPd25Qcm9wZXJ0eSIsImNkblVybCIsImRvY1VybCIsImVsZW1lbnQiLCJ0cnlJdE91dEVuYWJsZWQiLCJ0cnlJdEJveENvbnRhaW5lcklkIiwicmVkb2NWZXJzaW9uIiwic2VsZWN0ZWRPcGVyYXRpb25DbGFzcyIsImRpc2FibGVaZW5zY3JvbGwiLCJkZXBlbmRlbmNpZXNWZXJzaW9ucyIsImpxdWVyeSIsImpxdWVyeVNjcm9sbFRvIiwiY29udGFpbmVySWQiLCJvcGVyYXRpb25Cb3hTZWxlY3RvciIsIiQiLCJhdHRyIiwiSW52YWxpZEVsZW1lbnRFcnJvciIsImVsZW1lbnRJZCIsImNvbnRhaW5lclNlbGVjdG9yIiwidmVyc2lvbiIsImpxdWVyeVVybCIsImpxdWVyeVNjcm9sbFRvVXJsIiwiUmVkb2NUcnlJdE91dENvbmZpZyIsInN3YWdnZXJDb25maWciLCJyZWRvY0NvbmZpZyIsIl9pbmZvcm1hdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX2F1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3IiLCJfbW9kZWxzQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJfaW5wdXRUYXJnZXRTZWxlY3RvciIsIl9zZWxlY3RUYXJnZXRTZWxlY3RvciIsIl90ZXh0QXJlYVRhcmdldFNlbGVjdG9yIiwiX3BhcmFncmFwaFRhcmdldFNlbGVjdG9yIiwiX2V4ZWN1dGVCdG5UYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlVGFibGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZVdyYXBwZXJSZXN1bHRUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNvZGVUYXJnZXRTZWxlY3RvciIsIl9yZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiX3Jlc3BvbnNlQ2xpcGJvYXJkQnRuVGFyZ2V0U2VsZWN0b3IiLCJfcmVzcG9uc2VDdXJsQ2xpcGJvYXJkVGFyZ2V0U2VsZWN0b3IiLCJfcmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yIiwiX3NlcnZlclJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJfc2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3RvciIsIl9zZXJ2ZXJSZXNwb25zZURlc2NyaXB0aW9uVGFyZ2V0U2VsZWN0b3IiLCJfc2VydmVyUmVzcG9uc2VTdWJIZWFkZXJUYXJnZXRTZWxlY3RvciIsIl9jbGVhckJ0blRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlclRhcmdldFNlbGVjdG9yIiwiX29wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvciIsIl9vcGVyYXRpb25UcnlPdXRUYXJnZXRTZWxlY3RvciIsIl9kZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX3N1bW1hcnlUYXJnZXRTZWxlY3RvciIsIl9tb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiX21vZGFsSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJfbW9kYWxUaXRsZVRhcmdldFNlbGVjdG9yIiwiX21vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IiLCJfbW9kYWxMYWJlbFRhcmdldFNlbGVjdG9yIiwiX21vZGFsQ29kZVRhcmdldFNlbGVjdG9yIiwiX21vZGFsQnRuVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyc1RhYmxlQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJOYW1lRmllbGRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJUeXBlRmllbGRUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyU291cmNlVGFyZ2V0U2VsZWN0b3IiLCJfcGFyYW1ldGVyUmVxdWlyZWRNYXJrZXJUYXJnZXRTZWxlY3RvciIsIl9wYXJhbWV0ZXJSZXF1aXJlZFRhcmdldFNlbGVjdG9yIiwiX2FwaUNvbnRlbnRTb3VyY2VTZWxlY3RvciIsIl9pbnB1dFNvdXJjZVNlbGVjdG9yIiwiX2NvZGVTb3VyY2VTZWxlY3RvciIsIl9jb2RlQm94U291cmNlU2VsZWN0b3IiLCJfZGF0YVNlY3Rpb25Tb3VyY2VTZWxlY3RvciIsIl9maWVsZFNvdXJjZVNlbGVjdG9yIiwiX3JlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3RvciIsIl9maWVsZE1hcmtlclNvdXJjZVNlbGVjdG9yIiwiX3NhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yIiwiX2FsdGVybmF0aXZlTW9ub3NwYWNlRm9udFNvdXJjZVNlbGVjdG9yIiwiX2FsdGVybmF0aXZlU2Fuc1NlcmlmU291cmNlU2VsZWN0b3IiLCJfaDJTb3VyY2VTZWxlY3RvciIsIl9oM1NvdXJjZVNlbGVjdG9yIiwiX2g1U291cmNlU2VsZWN0b3IiLCJfbGFiZWxTb3VyY2VTZWxlY3RvciIsIl90eXBlU291cmNlU2VsZWN0b3IiLCJfYnRuU291cmNlU2VsZWN0b3IiLCJfZGVmYXVsdEJvcmRlckNvbG9yU2VsZWN0b3IiLCJfYXV0aEJ0blNvdXJjZVNlbGVjdG9yIiwiX2h0dHBWZXJiU291cmNlU2VsZWN0b3IiLCJib3hTZWxlY3RvciIsInNob3dDbGFzcyIsIm9wZXJhdGlvbkNvbnRhaW5lclNlbGVjdG9yIiwib3BlcmF0aW9uQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCJzZWxlY3RlZE9wZXJhdGlvbkNvbnRhaW5lckNsYXNzIiwib3BlcmF0aW9uU2VjdGlvbkNvbnRhaW5lclNlbGVjdG9yIiwib3BlcmF0aW9uU2VjdGlvblRhcmdldFNlbGVjdG9yIiwiYXV0aG9yaXplTW9kYWxTZWxlY3RvciIsImlucHV0U291cmNlU2VsZWN0b3IiLCJjb2RlU291cmNlU2VsZWN0b3IiLCJjb2RlQm94U291cmNlU2VsZWN0b3IiLCJkYXRhU2VjdGlvblNvdXJjZVNlbGVjdG9yIiwiZmllbGRTb3VyY2VTZWxlY3RvciIsInJlcXVpcmVkRmllbGRTb3VyY2VTZWxlY3RvciIsImZpZWxkTWFya2VyU291cmNlU2VsZWN0b3IiLCJhbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2VTZWxlY3RvciIsInNhblNlcmlmRm9udFNvdXJjZVNlbGVjdG9yIiwiaDJTb3VyY2VTZWxlY3RvciIsImgzU291cmNlU2VsZWN0b3IiLCJoNVNvdXJjZVNlbGVjdG9yIiwibGFiZWxTb3VyY2VTZWxlY3RvciIsInR5cGVTb3VyY2VTZWxlY3RvciIsImJ0blNvdXJjZVNlbGVjdG9yIiwiY3NzIiwiYmciLCJhcGlDb250ZW50U291cmNlU2VsZWN0b3IiLCJ0ZXN0IiwiYXV0aEJ0blNvdXJjZVNlbGVjdG9yIiwiaHR0cFZlcmJTb3VyY2VTZWxlY3RvciIsIlN0eWxlTWF0Y2hlckNvbmZpZyIsInVybCIsIl9yZXNvbHZlIiwiX29uQ29tcGxldGUiLCJfYXV0aG9yaXplQnRuU2VsZWN0b3IiLCJfYXV0aG9yaXplRG9uZUJ0blNlbGVjdG9yIiwiX2F1dGhvcml6ZU1vZGFsQ2xvc2VCdG5TZWxlY3RvciIsIl9hdXRob3JpemVNb2RhbFNlbGVjdG9yIiwiX21vZGFsT3ZlcmxheVNlbGVjdG9yIiwiX29wZXJhdGlvblNlY3Rpb25Db250YWluZXJTZWxlY3RvciIsIl9vcGVyYXRpb25Db250YWluZXJTZWxlY3RvciIsIl9vcGVyYXRpb25TdW1tYXJ5UGF0dGVyblNlbGVjdG9yIiwiX3dyYXBwZXJTZWxlY3RvciIsImRvbV9pZCIsImF1dGhNb2RhbENsYXNzIiwiaGlkZUNsYXNzIiwib25Db21wbGV0ZSIsIm9uQ29tcGxldGVQcm9taXNlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZXBsYWNlIiwic2hvd25BdXRoTW9kYWxTZWxlY3RvciIsIlN3YWdnZXJDb25maWciLCJzaWJsaW5nU2VsZWN0b3IiLCJzZWxlY3RlZENsYXNzTmFtZSIsInNlbGVjdG9yIiwiVHJ5QnRuQ29uZmlnQ29uZmlnIiwiYXV0aENsb3NlQ2xpY2tIYW5kbGVyIiwiU3dhZ2dlcldyYXBwZXIiLCJoaWRlQXV0aE1vZGFsIiwiYXV0aENsaWNrSGFuZGxlciIsIlRyeUJ0biIsInVuc2VsZWN0QWxsIiwic2hvd0F1dGhNb2RhbCIsIkF1dGhCdG4iLCJjZmciLCJpbml0IiwiaGFzQXV0aCIsIiRhdXRoQnRuIiwiY2xpY2siLCJhZnRlciIsIm9uQ2xvc2VBdXRoTW9kYWwiLCJ0cnlDbGlja0hhbmRsZXIiLCJldmVudCIsInN0b3BQcm9wYWdhdGlvbiIsIiR0cnlCdG4iLCJ0YXJnZXQiLCJzaG91bGRPcGVuIiwiaXNTZWxlY3RlZCIsInNlbGVjdCIsIiRidG4iLCJoYXNDbGFzcyIsImhpZGUiLCJSZWRvY1dyYXBwZXIiLCJyZW1vdmVDbGFzcyIsImFkZENsYXNzIiwiY29uZmlndXJlVHJ5Qm94IiwiZ2V0Q3VycmVudEFwaUluZm8iLCJhcGkiLCJtZXRob2QiLCJzZWxlY3RBcGlTZWN0aW9uIiwiJHRyeUl0Qm94Q29udGFpbmVyIiwiYXBwZW5kIiwiJGJveCIsInNob3ciLCJmaXhTY3JvbGxQb3NpdGlvbiIsInNlbGVjdGVkU2VsZWN0b3IiLCIkc2libGluZyIsIkVycm9yIiwibG9hZERlcGVuZGVuY2llcyIsImxvYWRTY3JpcHQiLCJ0cnlJdERlcGVuZGVuY2llcyIsImxvYWRBbGwiLCJSZWRvY1RyeUl0T3V0IiwiYWxsIiwiY29uZmlnIiwic3dhZ2dlck9wdGlvbnMiLCJhdXRoQnRuIiwidHJ5QnRuIiwiU3R5bGVyIiwic3R5bGVyTWF0Y2hlciIsIndpbmRvdyIsIm5vWmVuc21vb3RoIiwidXBkYXRlIiwic2hlZXRBZGRlZE9uRG9jdW1lbnQiLCJkb2N1bWVudCIsImJvZHkiLCJhcHBlbmRDaGlsZCIsInNoZWV0IiwiaW5uZXJIVE1MIiwiU3R5bGVCdWlsZGVyIiwidG9TdHJpbmciLCJhdXRoQXBwbGllcyIsImFkZCIsImhpZGRlbiIsInN0eWxlIiwiaGVpZ2h0IiwibGVmdCIsInRvcCIsIndpZHRoIiwib3Blbk1vZGFsT3ZlcmxheVNlbGVjdG9yIiwidmlzaWJsZSIsIm9wZW5BdXRob3JpemVNb2RhbFNlbGVjdG9yIiwiJGVsZW1lbnQiLCJhdXRoQnRuQ2xhc3Nlc1NvdXJjZSIsInRyeUJ0bkFwcGxpZXMiLCJyZXNldEJvcmRlciIsImNsb25lQm9yZGVyIiwiJGF1dGhCdG5Tb3VyY2UiLCJjbG9uZUZvbnQiLCIkaHR0cFZlcmJTb3VyY2UiLCJjbG9uZVN0eWxlcyIsImRlZmF1bHRCYWNrZ3JvdW5kQ29sb3IiLCJjdXJzb3IiLCJpbnB1dEFwcGxpZXMiLCJpbnB1dFRhcmdldFNlbGVjdG9yIiwiJGlucHV0U291cmNlIiwibW9kYWxBcHBsaWVzIiwibW9kYWxIZWFkZXJUYXJnZXRTZWxlY3RvciIsIiRoMlNvdXJjZSIsIm1vZGFsTGFiZWxUYXJnZXRTZWxlY3RvciIsIiRsYWJlbFNvdXJjZSIsIm1vZGFsVGl0bGVUYXJnZXRTZWxlY3RvciIsIiRoM1NvdXJjZSIsIm1vZGFsVGl0bGVDb2RlVGFyZ2V0U2VsZWN0b3IiLCJtb2RhbENvZGVUYXJnZXRTZWxlY3RvciIsIiRhbHRlcm5hdGl2ZU1vbm9zcGFjZUZvbnRTb3VyY2UiLCJtb2RhbFRhcmdldFNlbGVjdG9yIiwibW9kYWxCdG5UYXJnZXRTZWxlY3RvciIsIiRzYW5TZXJpZkZvbnRTb3VyY2UiLCJtb2RhbEhlYWRlckNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwiZGVmYXVsdEJvcmRlckNvbG9yIiwidHJ5SXRCb3hBcHBsaWVzIiwibm9IZWlnaHQiLCJvcGVuZWRPcGVyYXRpb25TZWN0aW9uU2VsZWN0b3IiLCJvcGVuZWRPcGVyYXRpb25Db250YWluZXJTZWxlY3RvciIsImRpc3BsYXkiLCIkZGF0YVNlY3Rpb25Tb3VyY2UiLCJzZWxlY3RUYXJnZXRTZWxlY3RvciIsImFic29sdXRlIiwicGFkZGluZyIsInJpZ2h0IiwicGFyYWdyYXBoVGFyZ2V0U2VsZWN0b3IiLCJ0ZXh0QXJlYVRhcmdldFNlbGVjdG9yIiwiJGNvZGVCb3hTb3VyY2UiLCJkZXNjcmlwdGlvbkNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwibm9QYWRkaW5nIiwiZXhlY3V0ZUJ0blRhcmdldFNlbGVjdG9yIiwib3BlcmF0aW9uSGVhZGVyQ29udGFpbmVyVGFyZ2V0U2VsZWN0b3IiLCIkaDVTb3VyY2UiLCJvcGVyYXRpb25IZWFkZXJUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlV3JhcHBlclJlc3VsdFRhcmdldFNlbGVjdG9yIiwicmVzcG9uc2VDb250YWluZXJUYXJnZXRTZWxlY3RvciIsInBhcmFtZXRlcnNUYWJsZUNvbnRhaW5lclRhcmdldFNlbGVjdG9yIiwicGFyYW1ldGVyTmFtZUZpZWxkVGFyZ2V0U2VsZWN0b3IiLCIkZmllbGRTb3VyY2UiLCJmbG9hdCIsInBhcmFtZXRlclJlcXVpcmVkVGFyZ2V0U2VsZWN0b3IiLCIkcmVxdWlyZWRGaWVsZFNvdXJjZSIsInBhcmFtZXRlclR5cGVGaWVsZFRhcmdldFNlbGVjdG9yIiwiJHR5cGVTb3VyY2UiLCJwYXJhbWV0ZXJEZXByZWNhdGVkVGFyZ2V0U2VsZWN0b3IiLCJwYXJhbWV0ZXJTb3VyY2VUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJzZXJ2ZXJSZXNwb25zZUhlYWRlclRhcmdldFNlbGVjdG9yIiwic2VydmVyUmVzcG9uc2VTdGF0dXNUYXJnZXRTZWxlY3RvciIsInNlcnZlclJlc3BvbnNlRGVzY3JpcHRpb25UYXJnZXRTZWxlY3RvciIsInNlcnZlclJlc3BvbnNlU3ViSGVhZGVyVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZU1pY3JvbGlnaHRUYXJnZXRTZWxlY3RvciIsIiRjb2RlU291cmNlIiwicmVzcG9uc2VDb2RlVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZUNsaXBib2FyZEJ0blRhcmdldFNlbGVjdG9yIiwiJGJ0blNvdXJjZSIsImNvbnRlbnQiLCJyZXNwb25zZUNsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiYmFja2dyb3VuZCIsInJlc3BvbnNlQ3VybENsaXBib2FyZFRhcmdldFNlbGVjdG9yIiwiYm90dG9tIiwicmVzcG9uc2VEb3dubG9hZFRhcmdldFNlbGVjdG9yIiwib24iLCJjcmVhdGVTdHlsZUVsZW1lbnRzIiwidGhlbWVNYXRjaEFwcGxpZXMiLCJoaWRlRGlzdHVyYmluZ0VsZW1lbnRzIiwib3BlcmF0aW9uVHJ5T3V0VGFyZ2V0U2VsZWN0b3IiLCJub0Rpc3BsYXkiLCJyZXNwb25zZVRhYmxlVGFyZ2V0U2VsZWN0b3IiLCJyZXNwb25zZVdyYXBwZXJUYXJnZXRTZWxlY3RvciIsInJlc3BvbnNlVGl0bGVUYXJnZXRTZWxlY3RvciIsIm9wZXJhdGlvbkhlYWRlckRlY29yYXRpb25UYXJnZXRTZWxlY3RvciIsInBhcmFtZXRlclJlcXVpcmVkTWFya2VyVGFyZ2V0U2VsZWN0b3IiLCJzdW1tYXJ5VGFyZ2V0U2VsZWN0b3IiLCJjbGVhckJ0blRhcmdldFNlbGVjdG9yIiwicGFyYW1ldGVyc0hlYWRUYXJnZXRTZWxlY3RvciIsIm9wZXJhdGlvblRhZ1RhcmdldFNlbGVjdG9yIiwib3BlbmVkSW5mb3JtYXRpb25Db250YWluZXJUYXJnZXRTZWxlY3RvciIsIm9wZW5lZEF1dGhXcmFwcGVyVGFyZ2V0U2VsZWN0b3IiLCJvcGVuZWRNb2RlbHNDb250YWluZXJUYXJnZXRTZWxlY3RvciIsInNldFRpbWVvdXQiLCJtYXJrZXIiLCIkZmllbGRNYXJrZXJTb3VyY2UiLCJjbG9uZSIsImluc2VydEJlZm9yZSIsIiRzZWxlY3RlZCIsIm9mZiIsImluaXRTd2FnZ2VyV3JhcHBlciIsInJlbGF0aXZlIiwid3JhcHBlclNlbGVjdG9yIiwibm9Ub3AiLCJub0xlZnQiLCJub092ZXJmbG93IiwiaGlkZGVuU2VsZWN0b3IiLCJub1dpZHRoIiwibm9DdXJzb3IiLCJzaG93blNlbGVjdG9yIiwiY3JlYXRlRWxlbWVudCIsInNyYyIsInJlamVjdCIsInNjcmlwdCIsInR5cGUiLCJvbmxvYWQiLCJvbmVycm9yIiwiaGVhZCIsInN0eWxlc2hlZXRVcmwiLCJsaW5rIiwicmVsIiwiaHJlZiIsInBhcmVudCIsInByb3BlcnRpZXMiLCJlbnRyaWVzIiwicHJvcGVydHkiLCJ2YWx1ZSIsInBvc2l0aW9uIiwidmlzaWJpbGl0eSIsIm92ZXJmbG93IiwiJHNvdXJjZSIsImF0dHJpYnV0ZXMiLCJmb3JjZU92ZXJyaWRlIiwiaW1wb3J0YW50IiwiQXJyYXkiLCJpc0FycmF5IiwiYXRycmlidXRlIiwiYm9yZGVyIiwidmFsdWVzIiwiam9pbiIsInNlbGVjdG9ycyIsInN0eWxlcyIsIlN0eWxlIiwic2VsZWN0b3JzQnVpbGRlciIsImFkZE1lZGlhU2VsZWN0b3IiLCJtZWRpYVNlbGVjdG9yc0J1aWxkZXIiLCJtZWRpYSIsInBhcmVudHMiLCIkYXBpSW5mb0NvbnRhaW5lciIsIiR0cnlJdEJveCIsInRyeUl0Qm94U2VsZWN0b3IiLCJsZW5ndGgiLCJtb3ZlVHJ5QXBpQ29udGFpbmVyIiwiYXBpQ29udGFpbmVyIiwiYnVuZGxlVXJsIiwiUmVkb2MiLCJkb21FbGVtZW50IiwiZSIsIiRvcGVyYXRpb25Cb3giLCJzY3JvbGxUbyIsInRyaW0iLCJtYXRjaCIsImF1dGhvcml6ZUJ0blNlbGVjdG9yIiwiYXV0aG9yaXplRG9uZUJ0blNlbGVjdG9yIiwiYXV0aG9yaXplTW9kYWxDbG9zZUJ0blNlbGVjdG9yIiwib3BlcmF0aW9uU3VtbWFyeVNlbGVjdG9yIiwib3BlcmF0aW9uU3VtbWFyeVBhdHRlcm5TZWxlY3RvciIsIiRhdXRob3JpemVCdG4iLCJsb2FkU3R5bGVzaGVldCIsImNzc1VybCIsImlkIiwiU3dhZ2dlclVJQnVuZGxlIiwiJHNlbGVjdGVkQ29udGFpbmVyRWxlbWVudHMiLCIkYXV0aG9yaXplTW9kYWxDbG9zZVRyaWdnZXJzIiwiJGFwaURvbSIsIiRvcGVyYXRpb25Db250YWluZXIiLCIkb3BlcmF0aW9uU2VjdGlvbiIsImRhdGEiLCJfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18iLCJfX3dlYnBhY2tfcmVxdWlyZV9fIiwibW9kdWxlSWQiLCJjYWNoZWRNb2R1bGUiLCJ1bmRlZmluZWQiLCJleHBvcnRzIiwibW9kdWxlIiwiX193ZWJwYWNrX21vZHVsZXNfXyIsImNhbGwiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/src/config/config.ts b/src/config/config.ts index cac024d..98abd82 100644 --- a/src/config/config.ts +++ b/src/config/config.ts @@ -19,5 +19,5 @@ export const Config = { }); }, - cdnUrl: "https://cdn.jsdelivr.net/npm/", + cdnUrl: "https://cdn.jsdelivr.net/npm", }; diff --git a/src/config/redoc-try-it-out-config.ts b/src/config/redoc-try-it-out-config.ts index 1ac52eb..e4e54a5 100644 --- a/src/config/redoc-try-it-out-config.ts +++ b/src/config/redoc-try-it-out-config.ts @@ -11,30 +11,34 @@ const DEFAULT_REDOC_VERSION = "2.0.0-rc.56"; const DEFAULT_JQUERY_VERSION = "3.6.0"; const DEFAULT_JQUERY_SCROLL_VERSION = "2.1.2"; -export class RedocTryItOutConfig implements RedocTryItOutOptions { +export class RedocTryItOutConfig { public readonly docUrl: string; public readonly element?: HTMLElement; - - private readonly _containerId: string = "redoc-container"; - private readonly _operationBoxSelector: string = "[data-section-id]"; - - public readonly tryItOutEnabled: boolean = true; - public readonly tryItBoxContainerId: string = "try-out-wrapper"; - public readonly redocVersion: string = DEFAULT_REDOC_VERSION; - public readonly selectedOperationClass: string = "try"; - public readonly disableZenscroll: boolean = true; - - public readonly dependenciesVersions: DependenciesVersions = { - jquery: DEFAULT_JQUERY_VERSION, - jqueryScrollTo: DEFAULT_JQUERY_SCROLL_VERSION, - }; + public readonly options: RedocTryItOutOptions; public constructor( docUrl: string, options: RedocTryItOutOptions, element?: HTMLElement, ) { - Config.parseOptions(this, options); + this.options = { + tryItOutEnabled: true, + tryItBoxContainerId: "try-out-wrapper", + redocVersion: DEFAULT_REDOC_VERSION, + selectedOperationClass: "try", + disableZenscroll: true, + dependenciesVersions: { + ...{ + jquery: DEFAULT_JQUERY_VERSION, + jqueryScrollTo: DEFAULT_JQUERY_SCROLL_VERSION, + }, + ...options.dependenciesVersions, + }, + containerId: "redoc-container", + operationBoxSelector: "[data-section-id]", + cdnUrl: Config.cdnUrl, + ...options, + }; this.docUrl = docUrl; this.element = element; } @@ -50,27 +54,27 @@ export class RedocTryItOutConfig implements RedocTryItOutOptions { } public get tryItBoxSelector(): string { - return `#${this.tryItBoxContainerId}`; + return `#${this.options.tryItBoxContainerId}`; } public get version(): string { - return this.redocVersion; + return this.options.redocVersion || ""; } public get containerId(): string { - return this.element ? this.elementId : this._containerId; + return this.element ? this.elementId : this.options.containerId || ""; } public get containerSelector(): string { - return `#${this.containerId}`; + return `#${this.options.containerId}`; } public get operationBoxSelector(): string { - return `${this.containerSelector} ${this._operationBoxSelector}`; + return `${this.containerSelector} ${this.options.operationBoxSelector}`; } public get bundleUrl(): string { - return `${Config.cdnUrl}/redoc@${this.version}/bundles/redoc.standalone.min.js`; + return `${this.options.cdnUrl}/redoc@${this.version}/bundles/redoc.standalone.min.js`; } public get tryItDependencies(): { @@ -78,8 +82,8 @@ export class RedocTryItOutConfig implements RedocTryItOutOptions { jqueryScrollToUrl: string; } { return { - jqueryUrl: `${Config.cdnUrl}/jquery@${this.dependenciesVersions.jquery}/dist/jquery.min.js`, - jqueryScrollToUrl: `${Config.cdnUrl}/jquery.scrollto@${this.dependenciesVersions.jqueryScrollTo}/jquery.scrollTo.min.js`, + jqueryUrl: `${this.options.cdnUrl}/jquery@${this.options.dependenciesVersions?.jquery || ""}/dist/jquery.min.js`, + jqueryScrollToUrl: `${this.options.cdnUrl}/jquery.scrollto@${this.options.dependenciesVersions?.jqueryScrollTo || ""}/jquery.scrollTo.min.js`, }; } } diff --git a/src/config/swagger-config.ts b/src/config/swagger-config.ts index c62028d..27eba61 100644 --- a/src/config/swagger-config.ts +++ b/src/config/swagger-config.ts @@ -37,6 +37,7 @@ export class SwaggerConfig implements SwaggerOptions { public readonly selectedOperationContainerClass: string = "opened-shadow"; public readonly version: string = "3.48.0"; + public readonly cdnUrl: string = Config.cdnUrl; constructor(options: SwaggerOptions, url: string, tryItOutEnabled: boolean) { Config.parseOptions(this, options); @@ -108,11 +109,11 @@ export class SwaggerConfig implements SwaggerOptions { } public get bundleUrl(): string { - return `${Config.cdnUrl}/swagger-ui-dist@${this.version}/swagger-ui-bundle.js`; + return `${this.cdnUrl}/swagger-ui-dist@${this.version}/swagger-ui-bundle.js`; } public get cssUrl(): string { - return `${Config.cdnUrl}swagger-ui-dist@${this.version}/swagger-ui.css`; + return `${this.cdnUrl}/swagger-ui-dist@${this.version}/swagger-ui.css`; } public onComplete = () => { diff --git a/src/interfaces/redoc-try-it-out-options.interface.ts b/src/interfaces/redoc-try-it-out-options.interface.ts index 2136cb6..0840e1d 100644 --- a/src/interfaces/redoc-try-it-out-options.interface.ts +++ b/src/interfaces/redoc-try-it-out-options.interface.ts @@ -234,4 +234,5 @@ export interface RedocTryItOutOptions extends RedocOptions { swaggerOptions?: SwaggerOptions; stylerMatcher?: StyleMatcherOptions; disableZenscroll?: boolean; + cdnUrl?: string; } diff --git a/src/interfaces/swagger-options.interface.ts b/src/interfaces/swagger-options.interface.ts index a846be1..f34055c 100644 --- a/src/interfaces/swagger-options.interface.ts +++ b/src/interfaces/swagger-options.interface.ts @@ -17,4 +17,5 @@ export interface SwaggerOptions { selectedOperationContainerClass?: string; wrapperSelector?: string; onComplete?: CallbackFunction; + cdnUrl?: string; } diff --git a/src/module.ts b/src/module.ts index 17281d7..043a9c5 100644 --- a/src/module.ts +++ b/src/module.ts @@ -29,9 +29,12 @@ export class RedocTryItOut { ): void { RedocWrapper.cfg = new RedocTryItOutConfig(url, cfg, element); - if (RedocWrapper.cfg.tryItOutEnabled) { + if (RedocWrapper.cfg.options.tryItOutEnabled) { SwaggerWrapper.cfg = new SwaggerConfig( - cfg.swaggerOptions || {}, + { + cdnUrl: RedocWrapper.cfg.options.cdnUrl, + ...(cfg.swaggerOptions || {}), + }, url, true, ); @@ -53,11 +56,11 @@ export class RedocTryItOut { // This parses and sets the config on the static cfg property on the RedocWrapper class RedocTryItOut.config(docUrl, cfg, element); - if (RedocWrapper.cfg.disableZenscroll) { + if (RedocWrapper.cfg.options.disableZenscroll) { (window as any).noZensmooth = true; } - if (RedocWrapper.cfg.tryItOutEnabled) { + if (RedocWrapper.cfg.options.tryItOutEnabled) { await RedocTryItOut.loadAll(); AuthBtn.init(); TryBtn.init(); diff --git a/src/wrappers/redoc.wrapper.ts b/src/wrappers/redoc.wrapper.ts index 553baab..f66d4c0 100644 --- a/src/wrappers/redoc.wrapper.ts +++ b/src/wrappers/redoc.wrapper.ts @@ -24,7 +24,7 @@ export class RedocWrapper { const $tryItBox = $(RedocWrapper.cfg.tryItBoxSelector); return $tryItBox.length ? $tryItBox - : $(`
`); + : $(`
`); } private static moveTryApiContainer(): void { @@ -46,7 +46,7 @@ export class RedocWrapper { const promise = new Promise((resolve, reject): void => { Redoc.init( RedocWrapper.cfg.docUrl, - RedocWrapper.cfg, + RedocWrapper.cfg.options, RedocWrapper.domElement, (e: Error) => (e ? reject(e) : resolve()), ); @@ -57,14 +57,14 @@ export class RedocWrapper { public static configureTryBox(): void { RedocWrapper.$operationBox.addClass( - RedocWrapper.cfg.selectedOperationClass, + RedocWrapper.cfg.options.selectedOperationClass || "", ); RedocWrapper.moveTryApiContainer(); } public static hide(): void { RedocWrapper.$operationBox.removeClass( - RedocWrapper.cfg.selectedOperationClass, + RedocWrapper.cfg.options.selectedOperationClass, ); } diff --git a/test/RedocTryItOutConfig.test.ts b/test/RedocTryItOutConfig.test.ts index b6a6662..a88eb6a 100644 --- a/test/RedocTryItOutConfig.test.ts +++ b/test/RedocTryItOutConfig.test.ts @@ -13,20 +13,36 @@ describe("RedocTryItOutConfig", () => { jquery: "0.1", jqueryScrollTo: "0.3", }, + theme: { + spacing: { + unit: 4, + sectionHorizontal: 20, + sectionVertical: 10, + }, + }, }); - expect(config.redocVersion).toEqual("foo"); - expect(config.tryItOutEnabled).toEqual(false); - expect(config.tryItBoxContainerId).toEqual("other-tryItBoxContainerId"); - expect(config.containerId).toEqual("other-containerId"); + expect(config.options.redocVersion).toEqual("foo"); + expect(config.options.tryItOutEnabled).toEqual(false); + expect(config.options.tryItBoxContainerId).toEqual( + "other-tryItBoxContainerId", + ); + expect(config.options.containerId).toEqual("other-containerId"); expect(config.containerSelector).toEqual("#other-containerId"); expect(config.operationBoxSelector).toEqual( "#other-containerId other-operationBoxSelector", ); - expect(config.selectedOperationClass).toEqual("dont-try"); - expect(config.dependenciesVersions).toEqual({ + expect(config.options.selectedOperationClass).toEqual("dont-try"); + expect(config.options.dependenciesVersions).toEqual({ jquery: "0.1", jqueryScrollTo: "0.3", }); + expect(config.options.theme).toEqual({ + spacing: { + unit: 4, + sectionHorizontal: 20, + sectionVertical: 10, + }, + }); }); });