-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy path3633.80791790.iframe.bundle.js
3 lines (3 loc) · 103 KB
/
3633.80791790.iframe.bundle.js
1
2
3
/*! For license information please see 3633.80791790.iframe.bundle.js.LICENSE.txt */
(self.webpackChunkblockly_mooc=self.webpackChunkblockly_mooc||[]).push([[3633],{"./src/sharedComponents/StylizedBaseDialog.jsx":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.FooterButton=FooterButton,exports.default=StylizedBaseDialog;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_Button=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/Button.jsx")),_BaseDialog=_interopRequireDefault(__webpack_require__("./src/templates/BaseDialog.jsx")),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js")),_utils=__webpack_require__("./src/utils.js"),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_excluded=["type","color"];function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _extends(){return _extends=Object.assign?Object.assign.bind():function(n){for(var e=1;e<arguments.length;e++){var t=arguments[e];for(var r in t)({}).hasOwnProperty.call(t,r)&&(n[r]=t[r])}return n},_extends.apply(null,arguments)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var FooterButtonType=(0,_utils.makeEnum)("cancel","confirm","default"),FooterButtonColor=_defineProperty(_defineProperty({},FooterButtonType.cancel,_Button.default.ButtonColor.gray),FooterButtonType.confirm,_Button.default.ButtonColor.brandSecondaryDefault),DialogStyle=(0,_utils.makeEnum)("default","simple");function FooterButton(props){var type=props.type,color=props.color,buttonProps=function _objectWithoutProperties(e,t){if(null==e)return{};var o,r,i=function _objectWithoutPropertiesLoose(r,e){if(null==r)return{};var t={};for(var n in r)if({}.hasOwnProperty.call(r,n)){if(e.includes(n))continue;t[n]=r[n]}return t}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(r=0;r<s.length;r++)o=s[r],t.includes(o)||{}.propertyIsEnumerable.call(e,o)&&(i[o]=e[o])}return i}(props,_excluded),buttonColor=color||FooterButtonColor[type]||void 0,style=_objectSpread(_objectSpread({},styles.buttons.all),styles.buttons[props.type]||{});return _react.default.createElement(_Button.default,_extends({style,color:buttonColor},buttonProps))}function StylizedBaseDialog(props){var horizontalRule=props.type===DialogStyle.simple?null:_react.default.createElement("hr",{style:styles.hr}),defaultButtons=[_react.default.createElement(FooterButton,{key:"cancel",type:FooterButtonType.cancel,text:props.cancellationButtonText,onClick:props.handleCancellation||props.handleClose}),_react.default.createElement(FooterButton,{className:"uitest-base-dialog-confirm",key:"confirm",type:FooterButtonType.confirm,text:props.confirmationButtonText,onClick:props.handleConfirmation||props.handleClose,disabled:props.disableConfirmationButton})];return _react.default.createElement(_BaseDialog.default,_extends({},function passThroughProps(){var passThrough=_objectSpread({},props);return delete passThrough.style,delete passThrough.children,passThrough}(),{useUpdatedStyles:!0,useFlexbox:props.stickyHeaderFooter}),props.title&&_react.default.createElement(_react.default.Fragment,null,_react.default.createElement("div",{style:styles.container},function renderTitle(){var title=props.title;return"string"==typeof title?_react.default.createElement("h1",{style:styles.title},title):title}()),horizontalRule),_react.default.createElement("div",{style:_objectSpread(_objectSpread(_objectSpread({},styles.container),styles.body[props.type]||{}),{},{overflowY:props.stickyHeaderFooter&&"auto"})},props.body?props.body:props.children),!props.hideFooter&&_react.default.createElement("div",{className:"uitest-base-dialog-footer"},horizontalRule,_react.default.createElement("div",{style:_objectSpread(_objectSpread(_objectSpread({},styles.container),styles.footer),{},{justifyContent:props.footerJustification})},props.renderFooter(defaultButtons))))}FooterButton.propTypes={type:_propTypes.default.oneOf(Object.keys(FooterButtonType)).isRequired,color:_propTypes.default.string},FooterButton.defaultProps={type:FooterButtonType.default},StylizedBaseDialog.propTypes={title:_propTypes.default.oneOfType([_propTypes.default.element,_propTypes.default.string]),body:_propTypes.default.oneOfType([_propTypes.default.element,_propTypes.default.string]),children:_propTypes.default.node,footerJustification:_propTypes.default.oneOf(["flex-start","flex-end","space-between"]),renderFooter:_propTypes.default.func.isRequired,hideFooter:_propTypes.default.bool,confirmationButtonText:_propTypes.default.string.isRequired,cancellationButtonText:_propTypes.default.string.isRequired,disableConfirmationButton:_propTypes.default.bool,handleConfirmation:_propTypes.default.func,handleClose:_propTypes.default.func.isRequired,handleCancellation:_propTypes.default.func,type:_propTypes.default.oneOf(Object.keys(DialogStyle)),stickyHeaderFooter:_propTypes.default.bool},StylizedBaseDialog.defaultProps={footerJustification:"flex-end",renderFooter:function renderFooter(buttons){return buttons},hideFooter:!1,confirmationButtonText:_locale.default.dialogOK(),cancellationButtonText:_locale.default.dialogCancel(),type:DialogStyle.default};var styles={container:{padding:"0 ".concat(20,"px")},title:{color:_color.default.dark_charcoal},hr:{margin:0,borderColor:_color.default.lighter_gray},body:_defineProperty({},DialogStyle.default,{padding:20}),footer:{display:"flex",alignItems:"center",padding:"".concat(10,"px ").concat(17,"px")},buttons:_defineProperty({all:{boxShadow:"none",flexShrink:0}},FooterButtonType.confirm,{borderColor:_color.default.orange})}},"./src/templates/BaseDialog.jsx":(module,exports,__webpack_require__)=>{"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=void 0;var _propTypes=_interopRequireDefault(__webpack_require__("./node_modules/prop-types/index.js")),_react=_interopRequireDefault(__webpack_require__("./node_modules/react/index.js")),_Button=_interopRequireDefault(__webpack_require__("./src/legacySharedComponents/Button.jsx")),_locale=_interopRequireDefault(__webpack_require__("./src/util/locale-do-not-import.js")),_constants=__webpack_require__("./src/constants.js"),_color=_interopRequireDefault(__webpack_require__("./src/util/color.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}function _typeof(o){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter((function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable}))),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach((function(r){_defineProperty(e,r,t[r])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach((function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))}))}return e}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=function _toPropertyKey(t){var i=function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}(t,"string");return"symbol"==_typeof(i)?i:i+""}(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}var BaseDialog=exports.default=function(_React$Component){function BaseDialog(){for(var _this,_len=arguments.length,args=new Array(_len),_key=0;_key<_len;_key++)args[_key]=arguments[_key];return _defineProperty(_this=_React$Component.call.apply(_React$Component,[this].concat(args))||this,"handleKeyDown",(function(event){"Escape"===event.key&&_this.closeDialog(),_this.props.handleKeyDown&&_this.props.handleKeyDown(event)})),_defineProperty(_this,"closeDialog",(function(){!_this.props.uncloseable&&_this.props.handleClose&&(_this.props.handleClose(),_this.props.soundPlayer&&_this.props.soundPlayer.stopAllAudio())})),_this}!function _inheritsLoose(t,o){t.prototype=Object.create(o.prototype),t.prototype.constructor=t,_setPrototypeOf(t,o)}(BaseDialog,_React$Component);var _proto=BaseDialog.prototype;return _proto.componentDidMount=function componentDidMount(){this.focusDialog()},_proto.componentDidUpdate=function componentDidUpdate(){this.focusDialog()},_proto.getTabbableElements=function getTabbableElements(){return[].slice.call(this.refs.dialog.querySelectorAll("a,button,input"))},_proto.focusDialog=function focusDialog(){var descendantIsActive=document.activeElement&&this.refs.dialog&&this.refs.dialog.contains(document.activeElement);this.props.isOpen&&!descendantIsActive&&this.refs.dialog.focus()},_proto.render=function render(){if(!this.props.isOpen&&!this.props.hideBackdrop)return _react.default.createElement("div",null);var bodyStyle,modalBodyStyle,xCloseStyle;this.props.fullWidth&&(bodyStyle=_objectSpread(_objectSpread({},bodyStyle),{},{width:"90%",marginLeft:"-45%"})),this.props.fullHeight&&(bodyStyle=_objectSpread(_objectSpread({},bodyStyle),{},{height:"80%"}),modalBodyStyle=_objectSpread(_objectSpread({},modalBodyStyle),{},{boxSizing:"border-box"}));var wrapperClassNames="",modalClassNames="modal",modalBodyClassNames="modal-body",overflowX=this.props.overflow||"hidden",overflowY=this.props.overflow||(this.props.fixedHeight||this.props.fullHeight?"hidden":"auto");this.props.useUpdatedStyles?(wrapperClassNames="dashboard-styles",modalBodyClassNames="",modalBodyStyle={background:"#fff",height:this.props.fixedHeight,maxHeight:!this.props.fixedHeight&&"85vh",overflowX,overflowY,borderRadius:4},this.props.useFlexbox&&(modalBodyStyle=_objectSpread(_objectSpread({},modalBodyStyle),{},{display:"flex",flexDirection:"column"})),bodyStyle=_objectSpread(_objectSpread({},bodyStyle),{},{width:this.props.fixedWidth||_constants.BASE_DIALOG_WIDTH,marginLeft:-this.props.fixedWidth/2||-350})):this.props.noModalStyles&&(modalClassNames="",modalBodyClassNames=""),bodyStyle=_objectSpread(_objectSpread(_objectSpread({},bodyStyle),this.props.hideBackdrop&&{position:"initial",marginLeft:0}),this.props.style),xCloseStyle={position:"absolute",top:0,insetInlineEnd:0,padding:0,color:_color.default.neutral_dark30,cursor:"pointer",fontSize:24,border:"none"},modalBodyClassNames=[modalBodyClassNames,this.props.bodyClassName].filter((function(className){return!!className})).join(" ");var body=_react.default.createElement("div",{style:bodyStyle,tabIndex:"-1",className:modalClassNames,ref:"dialog",onKeyDown:this.handleKeyDown},_react.default.createElement("div",{style:modalBodyStyle,id:this.props.bodyId,className:modalBodyClassNames},!this.props.uncloseable&&!this.props.hideCloseButton&&_react.default.createElement(_Button.default,{id:"x-close",onClick:this.closeDialog,icon:"fa-solid fa-xmark",style:xCloseStyle,color:"white","aria-label":_locale.default.closeDialog()}),this.props.children));return this.props.hideBackdrop?body:_react.default.createElement("div",{className:wrapperClassNames},_react.default.createElement("div",{className:"modal-backdrop",style:this.props.backdropStyle,onClick:this.closeDialog}),body)},BaseDialog}(_react.default.Component);_defineProperty(BaseDialog,"propTypes",{isOpen:_propTypes.default.bool,handleClose:_propTypes.default.func,uncloseable:_propTypes.default.bool,hideCloseButton:_propTypes.default.bool,handleKeyDown:_propTypes.default.func,hideBackdrop:_propTypes.default.bool,fullWidth:_propTypes.default.bool,fullHeight:_propTypes.default.bool,useUpdatedStyles:_propTypes.default.bool,noModalStyles:_propTypes.default.bool,children:_propTypes.default.node,fixedWidth:_propTypes.default.number,fixedHeight:_propTypes.default.number,useFlexbox:_propTypes.default.bool,bodyId:_propTypes.default.string,bodyClassName:_propTypes.default.string,style:_propTypes.default.object,soundPlayer:_propTypes.default.object,overflow:_propTypes.default.string,backdropStyle:_propTypes.default.object}),module.exports=exports.default},"./src/util/color.js":module=>{module.exports={black:"#000",background_black:"#121416",dark_gray:"#2D3139",darkest_gray:"#292F36",dark_slate_gray:"#282c34",darkest_slate_gray:"#25292d",dark_charcoal:"#4d575f",charcoal:"#5b6770",light_gray:"#949ca2",lighter_gray:"#c6cacd",lightest_gray:"#e7e8ea",background_gray:"#f2f2f2",dimgray:"#696969",white:"#fff",default_blue:"#3670b3",dark_teal:"#0094a3",teal:"#0093a4",applab_button_teal:"#1abc9c",light_teal:"#59cad3",lightish_teal:"#80d6de",lighter_teal:"#a6e3e8",lightest_teal:"#d9f3f5",ai_rubric_cyan:"#3cfff8",purple:"#8c52ba",light_purple:"#a69bc1",lighter_purple:"#cfc9de",lightest_purple:"#ebe8f1",cyan:"#0094ca",light_cyan:"#59b9dc",lighter_cyan:"#a6daed",lightest_cyan:"#d9eff7",almost_white_cyan:"#f5fcff",orange:"#ffa400",light_orange:"#ffc459",lighter_orange:"#ffe0a6",lightest_orange:"#fff2d9",dark_orange:"#ff8600",green:"#b9bf15",light_green:"#d1d567",lighter_green:"#e7e9ad",lightest_green:"#f5f5dc",highlight_green:"#8afc9b",yellow:"#ffb81d",light_yellow:"#ffdb74",lighter_yellow:"#ffebb5",lightest_yellow:"#fff7df",goldenrod:"#daa520",header_text:"#fff",bkgnd_color:"#0093a4",inset_color:"#c6cacd",dark_color:"#8c52ba",hdr_color:"#8c52ba",red:"#c00",lightest_red:"#fcc",dark_red:"#d62911",realgreen:"#008000",realyellow:"#ff0",mustardyellow:"#efcd1c",twitter_blue:"#00aced",facebook_blue:"#3b5998",linkedin_blue:"#0077B5",dark_blue:"#00647f",blockly_flyout_gray:"#ddd",default_text:"#333",border_gray:"#bbb",border_light_gray:"#d8d8d8",table_header:"#ececec",table_light_row:"#fcfcfc",table_dark_row:"#f4f4f4",level_submitted:"#8c52ba",level_perfect:"rgb(14, 190, 14)",level_passed:"rgb(159, 212, 159)",level_attempted:"#ff0",level_not_tried:"#fefefe",level_current:"#ffa400",level_review_rejected:"#c00",level_review_accepted:"rgb(11, 142, 11)",assessment:"#0094ca",workspace_running_background:"#e5e5e5",dark_purple:"#682A77",bright_green:"#0ebe0e",neon_pink:"#e9118f",link_color:"#0596ce",shadow:"rgba(0, 0, 0, 0.3)",bootstrap_button_blue:"#337ab7",bootstrap_button_red:"#d9534f",bootstrap_error_background:"#f2dede",bootstrap_error_text:"#b94a48",bootstrap_v3_error_text:"#a94442",bootstrap_error_border:"#ebccd1",bootstrap_warning_background:"#fcf8e3",bootstrap_warning_text:"#c09853",bootstrap_warning_border:"#faebcc",bootstrap_border_color:"#cccccc",bootstrap_success_background:"#dff0d8",bootstrap_success_text:"#468847",bootstrap_success_border:"#d6e9c6",droplet_light_green:"#d3e965",droplet_blue:"#64b5f6",droplet_bright_blue:"#19c3e1",droplet_yellow:"#fff176",droplet_orange:"#ffb74d",droplet_red:"#f78183",droplet_cyan:"#4dd0e1",droplet_pink:"#f57ac6",droplet_purple:"#bb77c7",droplet_green:"#68d995",droplet_white:"#fff",oceans_deep_blue:"rgb(2, 0, 28)",dark_black:"#121212",brand_primary_light:"#E0F8F9",brand_primary_default:"#009EB0",brand_primary_dark:"#007785",brand_secondary_light:"#E0D1EC",brand_secondary_default:"#8C52BA",brand_secondary_dark:"#6C468A",brand_accent_default:"#ED6060",brand_teal_5:"#DFF2F4",product_affirmative_default:"#3EA33E",product_negative_light:"#FDEBE9",product_negative_default:"#E5311A",product_negative_dark:"#AA2513",product_caution_default:"#F9CB28",product_information_default:"#007ACC",neutral_white:"#FFFFFF",neutral_light:"#F7F8FA",neutral_gray10:"#EAEBEB",neutral_dark10:"#EAECEF",neutral_dark20:"#D1D4D8",neutral_dark30:"#BEC2C7",neutral_dark40:"#ABB0B6",neutral_dark50:"#989EA5",neutral_dark60:"#858C94",neutral_dark70:"#727A83",neutral_dark80:"#5F6872",neutral_dark90:"#4C5661",neutral_dark:"#292F36",google_brand_color:"#0F9D58",microsoft_brand_color:"#FFB900",facebook_brand_color:"#3B5998",clever_brand_color:"#1464FF",light_primary_100:"#BFE4E8",light_primary_500:"#0093A4",light_primary_700:"#007785",light_secondary_100:"#E2D4EE",light_secondary_500:"#8C52BA",light_secondary_700:"#6C468A",light_gray_50:"#F7F8FA",light_gray_100:"#EAECEF",light_gray_200:"#D1D4D8",light_gray_300:"#BEC2C7",light_gray_400:"#ABB0B6",light_gray_500:"#989EA5",light_gray_600:"#858C94",light_gray_700:"#727A83",light_gray_800:"#5F6872",light_gray_900:"#4C5661",light_gray_950:"#394450",light_affirmative_100:"#E2F1E2",light_affirmative_500:"#3EA33E",light_affirmative_700:"#2D742D",light_negative_100:"#FBE0DD",light_negative_500:"#E5311A",light_negative_700:"#B24949",light_caution_100:"#FEF7DF",light_caution_500:"#F9CB28",light_caution_700:"#C7A220",light_accent_100:"#FAD7D7",light_accent_500:"#ED6060",light_accent_700:"#D84C4C",light_aqua_100:"#CEFFFD",light_aqua_500:"#3CFFF8",light_aqua_700:"#30CCC6",light_orange_100:"#FFEDCC",light_orange_500:"#FFA400",light_orange_700:"#CC8300",light_info_100:"#DCEFFB",light_info_500:"#1892E3",light_info_700:"#1375B6",light_white:"#FFFFFF",light_black:"#292F36",light_black_opacity_90:"rgba(41, 47, 54, 0.90)","light_black_opacity-80":"rgba(41, 47, 54, 0.80)","light_black_opacity-70":"rgba(41, 47, 54, 0.70)","light_black_opacity-60":"rgba(41, 47, 54, 0.60)","light_black_opacity-50":"rgba(41, 47, 54, 0.50)","light_black_opacity-40":"rgba(41, 47, 54, 0.40)","light_black_opacity-30":"rgba(41, 47, 54, 0.30)","light_black_opacity-20":"rgba(41, 47, 54, 0.20)","light_black_opacity-10":"rgba(41, 47, 54, 0.10)"}},"./src/weblab/locale-do-not-import.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";var _i18nStringTracker=_interopRequireDefault(__webpack_require__("./src/util/i18nStringTracker.js"));function _interopRequireDefault(e){return e&&e.__esModule?e:{default:e}}var locale=(0,_interopRequireDefault(__webpack_require__("./src/util/safeLoadLocale.js")).default)("weblab_locale");locale=(0,_i18nStringTracker.default)(locale,"weblab"),module.exports=locale},"./node_modules/classnames/index.js":(module,exports)=>{var __WEBPACK_AMD_DEFINE_RESULT__;!function(){"use strict";var hasOwn={}.hasOwnProperty;function classNames(){for(var classes=[],i=0;i<arguments.length;i++){var arg=arguments[i];if(arg){var argType=typeof arg;if("string"===argType||"number"===argType)classes.push(arg);else if(Array.isArray(arg)){if(arg.length){var inner=classNames.apply(null,arg);inner&&classes.push(inner)}}else if("object"===argType){if(arg.toString!==Object.prototype.toString&&!arg.toString.toString().includes("[native code]")){classes.push(arg.toString());continue}for(var key in arg)hasOwn.call(arg,key)&&arg[key]&&classes.push(key)}}}return classes.join(" ")}module.exports?(classNames.default=classNames,module.exports=classNames):void 0===(__WEBPACK_AMD_DEFINE_RESULT__=function(){return classNames}.apply(exports,[]))||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)}()},"./node_modules/css-loader/dist/runtime/api.js":module=>{"use strict";module.exports=function(cssWithMappingToString){var list=[];return list.toString=function toString(){return this.map((function(item){var content="",needLayer=void 0!==item[5];return item[4]&&(content+="@supports (".concat(item[4],") {")),item[2]&&(content+="@media ".concat(item[2]," {")),needLayer&&(content+="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {")),content+=cssWithMappingToString(item),needLayer&&(content+="}"),item[2]&&(content+="}"),item[4]&&(content+="}"),content})).join("")},list.i=function i(modules,media,dedupe,supports,layer){"string"==typeof modules&&(modules=[[null,modules,void 0]]);var alreadyImportedModules={};if(dedupe)for(var k=0;k<this.length;k++){var id=this[k][0];null!=id&&(alreadyImportedModules[id]=!0)}for(var _k=0;_k<modules.length;_k++){var item=[].concat(modules[_k]);dedupe&&alreadyImportedModules[item[0]]||(void 0!==layer&&(void 0===item[5]||(item[1]="@layer".concat(item[5].length>0?" ".concat(item[5]):""," {").concat(item[1],"}")),item[5]=layer),media&&(item[2]?(item[1]="@media ".concat(item[2]," {").concat(item[1],"}"),item[2]=media):item[2]=media),supports&&(item[4]?(item[1]="@supports (".concat(item[4],") {").concat(item[1],"}"),item[4]=supports):item[4]="".concat(supports)),list.push(item))}},list}},"./node_modules/css-loader/dist/runtime/sourceMaps.js":module=>{"use strict";module.exports=function(item){var content=item[1],cssMapping=item[3];if(!cssMapping)return content;if("function"==typeof btoa){var base64=btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))),data="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64),sourceMapping="/*# ".concat(data," */"),sourceURLs=cssMapping.sources.map((function(source){return"/*# sourceURL=".concat(cssMapping.sourceRoot||"").concat(source," */")}));return[content].concat(sourceURLs).concat([sourceMapping]).join("\n")}return[content].join("\n")}},"./node_modules/prop-types/factoryWithThrowingShims.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";var ReactPropTypesSecret=__webpack_require__("./node_modules/prop-types/lib/ReactPropTypesSecret.js");function emptyFunction(){}module.exports=function(){function shim(props,propName,componentName,location,propFullName,secret){if(secret!==ReactPropTypesSecret){var err=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw err.name="Invariant Violation",err}}function getShim(){return shim}shim.isRequired=shim;var ReactPropTypes={array:shim,bool:shim,func:shim,number:shim,object:shim,string:shim,symbol:shim,any:shim,arrayOf:getShim,element:shim,instanceOf:getShim,node:shim,objectOf:getShim,oneOf:getShim,oneOfType:getShim,shape:getShim,exact:getShim};return ReactPropTypes.checkPropTypes=emptyFunction,ReactPropTypes.PropTypes=ReactPropTypes,ReactPropTypes}},"./node_modules/prop-types/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{module.exports=__webpack_require__("./node_modules/prop-types/factoryWithThrowingShims.js")()},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":module=>{"use strict";module.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":module=>{"use strict";var stylesInDOM=[];function getIndexByIdentifier(identifier){for(var result=-1,i=0;i<stylesInDOM.length;i++)if(stylesInDOM[i].identifier===identifier){result=i;break}return result}function modulesToDom(list,options){for(var idCountMap={},identifiers=[],i=0;i<list.length;i++){var item=list[i],id=options.base?item[0]+options.base:item[0],count=idCountMap[id]||0,identifier="".concat(id," ").concat(count);idCountMap[id]=count+1;var indexByIdentifier=getIndexByIdentifier(identifier),obj={css:item[1],media:item[2],sourceMap:item[3],supports:item[4],layer:item[5]};if(-1!==indexByIdentifier)stylesInDOM[indexByIdentifier].references++,stylesInDOM[indexByIdentifier].updater(obj);else{var updater=addElementStyle(obj,options);options.byIndex=i,stylesInDOM.splice(i,0,{identifier,updater,references:1})}identifiers.push(identifier)}return identifiers}function addElementStyle(obj,options){var api=options.domAPI(options);api.update(obj);return function updater(newObj){if(newObj){if(newObj.css===obj.css&&newObj.media===obj.media&&newObj.sourceMap===obj.sourceMap&&newObj.supports===obj.supports&&newObj.layer===obj.layer)return;api.update(obj=newObj)}else api.remove()}}module.exports=function(list,options){var lastIdentifiers=modulesToDom(list=list||[],options=options||{});return function update(newList){newList=newList||[];for(var i=0;i<lastIdentifiers.length;i++){var index=getIndexByIdentifier(lastIdentifiers[i]);stylesInDOM[index].references--}for(var newLastIdentifiers=modulesToDom(newList,options),_i=0;_i<lastIdentifiers.length;_i++){var _index=getIndexByIdentifier(lastIdentifiers[_i]);0===stylesInDOM[_index].references&&(stylesInDOM[_index].updater(),stylesInDOM.splice(_index,1))}lastIdentifiers=newLastIdentifiers}}},"./node_modules/style-loader/dist/runtime/insertBySelector.js":module=>{"use strict";var memo={};module.exports=function insertBySelector(insert,style){var target=function getTarget(target){if(void 0===memo[target]){var styleTarget=document.querySelector(target);if(window.HTMLIFrameElement&&styleTarget instanceof window.HTMLIFrameElement)try{styleTarget=styleTarget.contentDocument.head}catch(e){styleTarget=null}memo[target]=styleTarget}return memo[target]}(insert);if(!target)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");target.appendChild(style)}},"./node_modules/style-loader/dist/runtime/insertStyleElement.js":module=>{"use strict";module.exports=function insertStyleElement(options){var element=document.createElement("style");return options.setAttributes(element,options.attributes),options.insert(element,options.options),element}},"./node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";module.exports=function setAttributesWithoutAttributes(styleElement){var nonce=__webpack_require__.nc;nonce&&styleElement.setAttribute("nonce",nonce)}},"./node_modules/style-loader/dist/runtime/styleDomAPI.js":module=>{"use strict";module.exports=function domAPI(options){var styleElement=options.insertStyleElement(options);return{update:function update(obj){!function apply(styleElement,options,obj){var css="";obj.supports&&(css+="@supports (".concat(obj.supports,") {")),obj.media&&(css+="@media ".concat(obj.media," {"));var needLayer=void 0!==obj.layer;needLayer&&(css+="@layer".concat(obj.layer.length>0?" ".concat(obj.layer):""," {")),css+=obj.css,needLayer&&(css+="}"),obj.media&&(css+="}"),obj.supports&&(css+="}");var sourceMap=obj.sourceMap;sourceMap&&"undefined"!=typeof btoa&&(css+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap))))," */")),options.styleTagTransform(css,styleElement,options.options)}(styleElement,options,obj)},remove:function remove(){!function removeStyleElement(styleElement){if(null===styleElement.parentNode)return!1;styleElement.parentNode.removeChild(styleElement)}(styleElement)}}}},"./node_modules/style-loader/dist/runtime/styleTagTransform.js":module=>{"use strict";module.exports=function styleTagTransform(css,styleElement){if(styleElement.styleSheet)styleElement.styleSheet.cssText=css;else{for(;styleElement.firstChild;)styleElement.removeChild(styleElement.firstChild);styleElement.appendChild(document.createTextNode(css))}}}}]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QUFZMUosU0FBU3lLLGVBQWU1QyxLQUNuRCxDQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vc3JjL3NoYXJlZENvbXBvbmVudHMvU3R5bGl6ZWRCYXNlRGlhbG9nLmpzeCIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9zcmMvdGVtcGxhdGVzL0Jhc2VEaWFsb2cuanN4Iiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy91dGlsL2NvbG9yLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL3NyYy93ZWJsYWIvbG9jYWxlLWRvLW5vdC1pbXBvcnQuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2NsYXNzbmFtZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL2Nzcy1sb2FkZXIvZGlzdC9ydW50aW1lL2FwaS5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvY3NzLWxvYWRlci9kaXN0L3J1bnRpbWUvc291cmNlTWFwcy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvcHJvcC10eXBlcy9mYWN0b3J5V2l0aFRocm93aW5nU2hpbXMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3Byb3AtdHlwZXMvbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0LmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luamVjdFN0eWxlc0ludG9TdHlsZVRhZy5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9pbnNlcnRCeVNlbGVjdG9yLmpzIiwid2VicGFjazovL2Jsb2NrbHktbW9vYy8uL25vZGVfbW9kdWxlcy9zdHlsZS1sb2FkZXIvZGlzdC9ydW50aW1lL2luc2VydFN0eWxlRWxlbWVudC5qcyIsIndlYnBhY2s6Ly9ibG9ja2x5LW1vb2MvLi9ub2RlX21vZHVsZXMvc3R5bGUtbG9hZGVyL2Rpc3QvcnVudGltZS9zZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVEb21BUEkuanMiLCJ3ZWJwYWNrOi8vYmxvY2tseS1tb29jLy4vbm9kZV9tb2R1bGVzL3N0eWxlLWxvYWRlci9kaXN0L3J1bnRpbWUvc3R5bGVUYWdUcmFuc2Zvcm0uanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBCdXR0b24gZnJvbSAnQGNkby9hcHBzL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvQnV0dG9uJztcbmltcG9ydCBCYXNlRGlhbG9nIGZyb20gJ0BjZG8vYXBwcy90ZW1wbGF0ZXMvQmFzZURpYWxvZyc7XG5pbXBvcnQgY29sb3IgZnJvbSAnQGNkby9hcHBzL3V0aWwvY29sb3InO1xuaW1wb3J0IHttYWtlRW51bX0gZnJvbSAnQGNkby9hcHBzL3V0aWxzJztcbmltcG9ydCBpMThuIGZyb20gJ0BjZG8vbG9jYWxlJztcblxuLyoqXG4gKiBTdHlsaXplZEJhc2VEaWFsb2dcbiAqIEEgc3R5bGVkIHZlcnNpb24gb2YgdGhlIEJhc2VEaWFsb2cgY29tcG9uZW50LlxuICpcbiAqIEluY2x1ZGVzIGEgRm9vdGVyQnV0dG9uIGNvbXBvbmVudCB0aGF0IGFwcHJvcHJpYXRlbHkgc3R5bGVzIGJ1dHRvbnMgZm9yIHRoZSBkaWFsb2cuXG4gKi9cblxuY29uc3QgRm9vdGVyQnV0dG9uVHlwZSA9IG1ha2VFbnVtKCdjYW5jZWwnLCAnY29uZmlybScsICdkZWZhdWx0Jyk7XG5jb25zdCBGb290ZXJCdXR0b25Db2xvciA9IHtcbiAgW0Zvb3RlckJ1dHRvblR5cGUuY2FuY2VsXTogQnV0dG9uLkJ1dHRvbkNvbG9yLmdyYXksXG4gIFtGb290ZXJCdXR0b25UeXBlLmNvbmZpcm1dOiBCdXR0b24uQnV0dG9uQ29sb3IuYnJhbmRTZWNvbmRhcnlEZWZhdWx0LFxufTtcblxuY29uc3QgRGlhbG9nU3R5bGUgPSBtYWtlRW51bSgnZGVmYXVsdCcsICdzaW1wbGUnKTtcblxuZXhwb3J0IGZ1bmN0aW9uIEZvb3RlckJ1dHRvbihwcm9wcykge1xuICBjb25zdCB7dHlwZSwgY29sb3IsIC4uLmJ1dHRvblByb3BzfSA9IHByb3BzO1xuICBjb25zdCBidXR0b25Db2xvciA9IGNvbG9yIHx8IEZvb3RlckJ1dHRvbkNvbG9yW3R5cGVdIHx8IHVuZGVmaW5lZDtcblxuICAvLyBUT0RPOiBXZSBzaG91bGRuJ3QgbmVlZCB0byBvdmVycmlkZSA8QnV0dG9uLz4gc3R5bGVzIC0tIHRoZXkgc2hvdWxkIGxpa2VseSBiZSBkZWZhdWx0LlxuICAvLyBUcmFja2VkIGJ5IGh0dHBzOi8vY29kZWRvdG9yZy5hdGxhc3NpYW4ubmV0L2Jyb3dzZS9TVEFSLTE2MTYuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIC4uLnN0eWxlcy5idXR0b25zLmFsbCxcbiAgICAuLi4oc3R5bGVzLmJ1dHRvbnNbcHJvcHMudHlwZV0gfHwge30pLFxuICB9O1xuXG4gIHJldHVybiA8QnV0dG9uIHN0eWxlPXtzdHlsZX0gY29sb3I9e2J1dHRvbkNvbG9yfSB7Li4uYnV0dG9uUHJvcHN9IC8+O1xufVxuXG4vLyBUaGlzIGNvbXBvbmVudCByZW5kZXJzIGEgPEJ1dHRvbi8+LCBzbyBpdCB3aWxsIGFsc28gYWNjZXB0L3JlcXVpcmUgYW55IHByb3BUeXBlc1xuLy8gZnJvbSB0aGF0IGNvbXBvbmVudC5cbkZvb3RlckJ1dHRvbi5wcm9wVHlwZXMgPSB7XG4gIHR5cGU6IFByb3BUeXBlcy5vbmVPZihPYmplY3Qua2V5cyhGb290ZXJCdXR0b25UeXBlKSkuaXNSZXF1aXJlZCxcbiAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5Gb290ZXJCdXR0b24uZGVmYXVsdFByb3BzID0ge1xuICB0eXBlOiBGb290ZXJCdXR0b25UeXBlLmRlZmF1bHQsXG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBTdHlsaXplZEJhc2VEaWFsb2cocHJvcHMpIHtcbiAgLy8gUmVtb3ZlIGFueSBwcm9wcyB0aGF0IHNob3VsZCAqbm90KiBiZSBwYXNzZWQgdGhyb3VnaCB0byA8QmFzZURpYWxvZy8+LlxuICBmdW5jdGlvbiBwYXNzVGhyb3VnaFByb3BzKCkge1xuICAgIGxldCBwYXNzVGhyb3VnaCA9IHsuLi5wcm9wc307XG4gICAgZGVsZXRlIHBhc3NUaHJvdWdoLnN0eWxlO1xuICAgIGRlbGV0ZSBwYXNzVGhyb3VnaC5jaGlsZHJlbjtcblxuICAgIHJldHVybiBwYXNzVGhyb3VnaDtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlbmRlclRpdGxlKCkge1xuICAgIGNvbnN0IHt0aXRsZX0gPSBwcm9wcztcbiAgICBpZiAodHlwZW9mIHRpdGxlID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIDxoMSBzdHlsZT17c3R5bGVzLnRpdGxlfT57dGl0bGV9PC9oMT47XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aXRsZTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBob3Jpem9udGFsUnVsZSA9XG4gICAgcHJvcHMudHlwZSA9PT0gRGlhbG9nU3R5bGUuc2ltcGxlID8gbnVsbCA6IDxociBzdHlsZT17c3R5bGVzLmhyfSAvPjtcbiAgY29uc3QgZGVmYXVsdEJ1dHRvbnMgPSBbXG4gICAgPEZvb3RlckJ1dHRvblxuICAgICAga2V5PVwiY2FuY2VsXCJcbiAgICAgIHR5cGU9e0Zvb3RlckJ1dHRvblR5cGUuY2FuY2VsfVxuICAgICAgdGV4dD17cHJvcHMuY2FuY2VsbGF0aW9uQnV0dG9uVGV4dH1cbiAgICAgIG9uQ2xpY2s9e3Byb3BzLmhhbmRsZUNhbmNlbGxhdGlvbiB8fCBwcm9wcy5oYW5kbGVDbG9zZX1cbiAgICAvPixcbiAgICA8Rm9vdGVyQnV0dG9uXG4gICAgICBjbGFzc05hbWU9XCJ1aXRlc3QtYmFzZS1kaWFsb2ctY29uZmlybVwiXG4gICAgICBrZXk9XCJjb25maXJtXCJcbiAgICAgIHR5cGU9e0Zvb3RlckJ1dHRvblR5cGUuY29uZmlybX1cbiAgICAgIHRleHQ9e3Byb3BzLmNvbmZpcm1hdGlvbkJ1dHRvblRleHR9XG4gICAgICBvbkNsaWNrPXtwcm9wcy5oYW5kbGVDb25maXJtYXRpb24gfHwgcHJvcHMuaGFuZGxlQ2xvc2V9XG4gICAgICBkaXNhYmxlZD17cHJvcHMuZGlzYWJsZUNvbmZpcm1hdGlvbkJ1dHRvbn1cbiAgICAvPixcbiAgXTtcblxuICByZXR1cm4gKFxuICAgIDxCYXNlRGlhbG9nXG4gICAgICB7Li4ucGFzc1Rocm91Z2hQcm9wcygpfVxuICAgICAgdXNlVXBkYXRlZFN0eWxlc1xuICAgICAgdXNlRmxleGJveD17cHJvcHMuc3RpY2t5SGVhZGVyRm9vdGVyfVxuICAgID5cbiAgICAgIHtwcm9wcy50aXRsZSAmJiAoXG4gICAgICAgIDw+XG4gICAgICAgICAgPGRpdiBzdHlsZT17c3R5bGVzLmNvbnRhaW5lcn0+e3JlbmRlclRpdGxlKCl9PC9kaXY+XG4gICAgICAgICAge2hvcml6b250YWxSdWxlfVxuICAgICAgICA8Lz5cbiAgICAgICl9XG4gICAgICA8ZGl2XG4gICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgLi4uc3R5bGVzLmNvbnRhaW5lcixcbiAgICAgICAgICAuLi4oc3R5bGVzLmJvZHlbcHJvcHMudHlwZV0gfHwge30pLFxuICAgICAgICAgIG92ZXJmbG93WTogcHJvcHMuc3RpY2t5SGVhZGVyRm9vdGVyICYmICdhdXRvJyxcbiAgICAgICAgfX1cbiAgICAgID5cbiAgICAgICAge3Byb3BzLmJvZHkgPyBwcm9wcy5ib2R5IDogcHJvcHMuY2hpbGRyZW59XG4gICAgICA8L2Rpdj5cbiAgICAgIHshcHJvcHMuaGlkZUZvb3RlciAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidWl0ZXN0LWJhc2UtZGlhbG9nLWZvb3RlclwiPlxuICAgICAgICAgIHtob3Jpem9udGFsUnVsZX1cbiAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAuLi5zdHlsZXMuY29udGFpbmVyLFxuICAgICAgICAgICAgICAuLi5zdHlsZXMuZm9vdGVyLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogcHJvcHMuZm9vdGVySnVzdGlmaWNhdGlvbixcbiAgICAgICAgICAgIH19XG4gICAgICAgICAgPlxuICAgICAgICAgICAge3Byb3BzLnJlbmRlckZvb3RlcihkZWZhdWx0QnV0dG9ucyl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgKX1cbiAgICA8L0Jhc2VEaWFsb2c+XG4gICk7XG59XG5cblN0eWxpemVkQmFzZURpYWxvZy5wcm9wVHlwZXMgPSB7XG4gIHRpdGxlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICBib2R5OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZWxlbWVudCwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvLyBBbHRlcm5hdGl2ZSB0byBwcm92aWRpbmcgYm9keSBwcm9wXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgZm9vdGVySnVzdGlmaWNhdGlvbjogUHJvcFR5cGVzLm9uZU9mKFtcbiAgICAnZmxleC1zdGFydCcsXG4gICAgJ2ZsZXgtZW5kJyxcbiAgICAnc3BhY2UtYmV0d2VlbicsXG4gIF0pLFxuICByZW5kZXJGb290ZXI6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gIGhpZGVGb290ZXI6IFByb3BUeXBlcy5ib29sLFxuICBjb25maXJtYXRpb25CdXR0b25UZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gIGNhbmNlbGxhdGlvbkJ1dHRvblRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgZGlzYWJsZUNvbmZpcm1hdGlvbkJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gIGhhbmRsZUNvbmZpcm1hdGlvbjogUHJvcFR5cGVzLmZ1bmMsXG4gIGhhbmRsZUNsb3NlOiBQcm9wVHlwZXMuZnVuYy5pc1JlcXVpcmVkLFxuICBoYW5kbGVDYW5jZWxsYXRpb246IFByb3BUeXBlcy5mdW5jLFxuICB0eXBlOiBQcm9wVHlwZXMub25lT2YoT2JqZWN0LmtleXMoRGlhbG9nU3R5bGUpKSxcbiAgc3RpY2t5SGVhZGVyRm9vdGVyOiBQcm9wVHlwZXMuYm9vbCxcbn07XG5cblN0eWxpemVkQmFzZURpYWxvZy5kZWZhdWx0UHJvcHMgPSB7XG4gIGZvb3Rlckp1c3RpZmljYXRpb246ICdmbGV4LWVuZCcsXG4gIHJlbmRlckZvb3RlcjogYnV0dG9ucyA9PiBidXR0b25zLFxuICBoaWRlRm9vdGVyOiBmYWxzZSxcbiAgY29uZmlybWF0aW9uQnV0dG9uVGV4dDogaTE4bi5kaWFsb2dPSygpLFxuICBjYW5jZWxsYXRpb25CdXR0b25UZXh0OiBpMThuLmRpYWxvZ0NhbmNlbCgpLFxuICB0eXBlOiBEaWFsb2dTdHlsZS5kZWZhdWx0LFxufTtcblxuY29uc3QgR1VUVEVSID0gMjA7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGNvbnRhaW5lcjoge1xuICAgIHBhZGRpbmc6IGAwICR7R1VUVEVSfXB4YCxcbiAgfSxcbiAgdGl0bGU6IHtcbiAgICBjb2xvcjogY29sb3IuZGFya19jaGFyY29hbCxcbiAgfSxcbiAgaHI6IHtcbiAgICBtYXJnaW46IDAsXG4gICAgYm9yZGVyQ29sb3I6IGNvbG9yLmxpZ2h0ZXJfZ3JheSxcbiAgfSxcbiAgYm9keToge1xuICAgIFtEaWFsb2dTdHlsZS5kZWZhdWx0XToge3BhZGRpbmc6IEdVVFRFUn0sXG4gIH0sXG4gIGZvb3Rlcjoge1xuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBwYWRkaW5nOiBgJHtHVVRURVIgLyAyfXB4ICR7R1VUVEVSIC0gM31weGAsIC8vIC0zIHRvIGFjY291bnQgZm9yIDNweC1tYXJnaW4gYXJvdW5kIDxCdXR0b24vPlxuICB9LFxuICBidXR0b25zOiB7XG4gICAgYWxsOiB7Ym94U2hhZG93OiAnbm9uZScsIGZsZXhTaHJpbms6IDB9LFxuICAgIFtGb290ZXJCdXR0b25UeXBlLmNvbmZpcm1dOiB7Ym9yZGVyQ29sb3I6IGNvbG9yLm9yYW5nZX0sXG4gIH0sXG59O1xuIiwiaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5cbmltcG9ydCBCdXR0b24gZnJvbSAnQGNkby9hcHBzL2xlZ2FjeVNoYXJlZENvbXBvbmVudHMvQnV0dG9uJztcbmltcG9ydCBpMThuIGZyb20gJ0BjZG8vbG9jYWxlJztcblxuaW1wb3J0IHtCQVNFX0RJQUxPR19XSURUSH0gZnJvbSAnLi4vY29uc3RhbnRzJztcbmltcG9ydCBjb2xvciBmcm9tICcuLi91dGlsL2NvbG9yJztcblxuLyoqXG4gKiBCYXNlRGlhbG9nXG4gKiBBIGdlbmVyaWMgbW9kYWwgZGlhbG9nIHRoYXQgaGFzIGFuIHgtY2xvc2UgaW4gdGhlIHVwcGVyIHJpZ2h0LCBhbmQgYVxuICogc2VtaS10cmFuc3BhcmVudCBiYWNrZHJvcC4gQ2FuIGJlIGNsb3NlZCBieSBjbGlja2luZyB0aGUgeCwgY2xpY2tpbmcgdGhlXG4gKiBiYWNrZHJvcCwgb3IgcHJlc3NpbmcgZXNjLlxuICpcbiAqIFRvIHVzZSBhIHN0eWxlZCB2ZXJzaW9uIG9mIHRoaXMgY29tcG9uZW50IHRoYXQgZm9sbG93cyBvdXIgc3R5bGUgZ3VpZGUsXG4gKiB1c2UgU3R5bGl6ZWRCYXNlRGlhbG9nLmpzeC5cbiAqL1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQmFzZURpYWxvZyBleHRlbmRzIFJlYWN0LkNvbXBvbmVudCB7XG4gIHN0YXRpYyBwcm9wVHlwZXMgPSB7XG4gICAgaXNPcGVuOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBoYW5kbGVDbG9zZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgdW5jbG9zZWFibGU6IFByb3BUeXBlcy5ib29sLFxuICAgIGhpZGVDbG9zZUJ1dHRvbjogUHJvcFR5cGVzLmJvb2wsXG4gICAgaGFuZGxlS2V5RG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgLy8gRm9yIHVzZSBpbiByZWFjdC1zdG9yeWJvb2s7IGFsbG93cyByZW5kZXJpbmcgZGlhbG9nIGlubGluZSBpbiBzdG9yeSB0YWJsZXMuXG4gICAgaGlkZUJhY2tkcm9wOiBQcm9wVHlwZXMuYm9vbCxcbiAgICBmdWxsV2lkdGg6IFByb3BUeXBlcy5ib29sLFxuICAgIGZ1bGxIZWlnaHQ6IFByb3BUeXBlcy5ib29sLFxuICAgIHVzZVVwZGF0ZWRTdHlsZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIG5vTW9kYWxTdHlsZXM6IFByb3BUeXBlcy5ib29sLFxuICAgIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgICBmaXhlZFdpZHRoOiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIGZpeGVkSGVpZ2h0OiBQcm9wVHlwZXMubnVtYmVyLFxuICAgIHVzZUZsZXhib3g6IFByb3BUeXBlcy5ib29sLFxuICAgIGJvZHlJZDogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBib2R5Q2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHNvdW5kUGxheWVyOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG92ZXJmbG93OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIC8vIFRlbXBvcmFyeSBwcm9wIHVudGlsIEFuaW1hdGlvblBpY2tlckJvZHkgaXMgcmVkZXNpZ25lZFxuICAgIGJhY2tkcm9wU3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIH07XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgdGhpcy5mb2N1c0RpYWxvZygpO1xuICB9XG5cbiAgY29tcG9uZW50RGlkVXBkYXRlKCkge1xuICAgIHRoaXMuZm9jdXNEaWFsb2coKTtcbiAgfVxuXG4gIGhhbmRsZUtleURvd24gPSBldmVudCA9PiB7XG4gICAgaWYgKGV2ZW50LmtleSA9PT0gJ0VzY2FwZScpIHtcbiAgICAgIHRoaXMuY2xvc2VEaWFsb2coKTtcbiAgICB9XG4gICAgdGhpcy5wcm9wcy5oYW5kbGVLZXlEb3duICYmIHRoaXMucHJvcHMuaGFuZGxlS2V5RG93bihldmVudCk7XG4gIH07XG5cbiAgY2xvc2VEaWFsb2cgPSAoKSA9PiB7XG4gICAgaWYgKCF0aGlzLnByb3BzLnVuY2xvc2VhYmxlICYmIHRoaXMucHJvcHMuaGFuZGxlQ2xvc2UpIHtcbiAgICAgIHRoaXMucHJvcHMuaGFuZGxlQ2xvc2UoKTtcbiAgICAgIGlmICh0aGlzLnByb3BzLnNvdW5kUGxheWVyKSB7XG4gICAgICAgIHRoaXMucHJvcHMuc291bmRQbGF5ZXIuc3RvcEFsbEF1ZGlvKCk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIC8qKiBAcmV0dXJucyB7QXJyYXkuPEVsZW1lbnQ+fSAqL1xuICBnZXRUYWJiYWJsZUVsZW1lbnRzKCkge1xuICAgIHJldHVybiBbXS5zbGljZS5jYWxsKHRoaXMucmVmcy5kaWFsb2cucXVlcnlTZWxlY3RvckFsbCgnYSxidXR0b24saW5wdXQnKSk7XG4gIH1cblxuICBmb2N1c0RpYWxvZygpIHtcbiAgICAvLyBEb24ndCBzdGVhbCBmb2N1cyBpZiB0aGUgYWN0aXZlIGVsZW1lbnQgaXMgYWxyZWFkeSBhIGRlc2NlbmRhbnQgb2YgdGhlXG4gICAgLy8gZGlhbG9nIC0gcHJldmVudHMgZm9jdXMgbG9zcyBvbiB1cGRhdGVzIG9mIG9wZW4gQmFzZURpYWxvZyBjb21wb25lbnRzLlxuICAgIGNvbnN0IGRlc2NlbmRhbnRJc0FjdGl2ZSA9XG4gICAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50ICYmXG4gICAgICB0aGlzLnJlZnMuZGlhbG9nICYmXG4gICAgICB0aGlzLnJlZnMuZGlhbG9nLmNvbnRhaW5zKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQpO1xuICAgIGlmICh0aGlzLnByb3BzLmlzT3BlbiAmJiAhZGVzY2VuZGFudElzQWN0aXZlKSB7XG4gICAgICB0aGlzLnJlZnMuZGlhbG9nLmZvY3VzKCk7XG4gICAgfVxuICB9XG5cbiAgcmVuZGVyKCkge1xuICAgIGlmICghdGhpcy5wcm9wcy5pc09wZW4gJiYgIXRoaXMucHJvcHMuaGlkZUJhY2tkcm9wKSB7XG4gICAgICByZXR1cm4gPGRpdiAvPjtcbiAgICB9XG5cbiAgICBsZXQgYm9keVN0eWxlLCBtb2RhbEJvZHlTdHlsZSwgeENsb3NlU3R5bGU7XG4gICAgaWYgKHRoaXMucHJvcHMuZnVsbFdpZHRoKSB7XG4gICAgICBib2R5U3R5bGUgPSB7XG4gICAgICAgIC4uLmJvZHlTdHlsZSxcbiAgICAgICAgd2lkdGg6ICc5MCUnLFxuICAgICAgICBtYXJnaW5MZWZ0OiAnLTQ1JScsXG4gICAgICB9O1xuICAgIH1cbiAgICBpZiAodGhpcy5wcm9wcy5mdWxsSGVpZ2h0KSB7XG4gICAgICBib2R5U3R5bGUgPSB7XG4gICAgICAgIC4uLmJvZHlTdHlsZSxcbiAgICAgICAgaGVpZ2h0OiAnODAlJyxcbiAgICAgIH07XG4gICAgICBtb2RhbEJvZHlTdHlsZSA9IHtcbiAgICAgICAgLi4ubW9kYWxCb2R5U3R5bGUsXG4gICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBsZXQgd3JhcHBlckNsYXNzTmFtZXMgPSAnJztcbiAgICBsZXQgbW9kYWxDbGFzc05hbWVzID0gJ21vZGFsJztcbiAgICBsZXQgbW9kYWxCb2R5Q2xhc3NOYW1lcyA9ICdtb2RhbC1ib2R5JztcbiAgICBsZXQgbW9kYWxCYWNrZHJvcENsYXNzTmFtZXMgPSAnbW9kYWwtYmFja2Ryb3AnO1xuICAgIGNvbnN0IG92ZXJmbG93WCA9IHRoaXMucHJvcHMub3ZlcmZsb3cgfHwgJ2hpZGRlbic7XG4gICAgY29uc3Qgb3ZlcmZsb3dZID1cbiAgICAgIHRoaXMucHJvcHMub3ZlcmZsb3cgfHxcbiAgICAgICh0aGlzLnByb3BzLmZpeGVkSGVpZ2h0IHx8IHRoaXMucHJvcHMuZnVsbEhlaWdodCA/ICdoaWRkZW4nIDogJ2F1dG8nKTtcblxuICAgIGlmICh0aGlzLnByb3BzLnVzZVVwZGF0ZWRTdHlsZXMpIHtcbiAgICAgIHdyYXBwZXJDbGFzc05hbWVzID0gJ2Rhc2hib2FyZC1zdHlsZXMnO1xuICAgICAgbW9kYWxCb2R5Q2xhc3NOYW1lcyA9ICcnO1xuICAgICAgbW9kYWxCb2R5U3R5bGUgPSB7XG4gICAgICAgIGJhY2tncm91bmQ6ICcjZmZmJyxcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnByb3BzLmZpeGVkSGVpZ2h0LFxuICAgICAgICBtYXhIZWlnaHQ6ICF0aGlzLnByb3BzLmZpeGVkSGVpZ2h0ICYmICc4NXZoJyxcbiAgICAgICAgb3ZlcmZsb3dYOiBvdmVyZmxvd1gsXG4gICAgICAgIG92ZXJmbG93WTogb3ZlcmZsb3dZLFxuICAgICAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgICB9O1xuICAgICAgaWYgKHRoaXMucHJvcHMudXNlRmxleGJveCkge1xuICAgICAgICBtb2RhbEJvZHlTdHlsZSA9IHtcbiAgICAgICAgICAuLi5tb2RhbEJvZHlTdHlsZSxcbiAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBib2R5U3R5bGUgPSB7XG4gICAgICAgIC4uLmJvZHlTdHlsZSxcbiAgICAgICAgd2lkdGg6IHRoaXMucHJvcHMuZml4ZWRXaWR0aCB8fCBCQVNFX0RJQUxPR19XSURUSCxcbiAgICAgICAgbWFyZ2luTGVmdDogLXRoaXMucHJvcHMuZml4ZWRXaWR0aCAvIDIgfHwgLTM1MCxcbiAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0aGlzLnByb3BzLm5vTW9kYWxTdHlsZXMpIHtcbiAgICAgIG1vZGFsQ2xhc3NOYW1lcyA9ICcnO1xuICAgICAgbW9kYWxCb2R5Q2xhc3NOYW1lcyA9ICcnO1xuICAgIH1cblxuICAgIGJvZHlTdHlsZSA9IHtcbiAgICAgIC4uLmJvZHlTdHlsZSxcbiAgICAgIC4uLih0aGlzLnByb3BzLmhpZGVCYWNrZHJvcCAmJiB7XG4gICAgICAgIHBvc2l0aW9uOiAnaW5pdGlhbCcsXG4gICAgICAgIG1hcmdpbkxlZnQ6IDAsXG4gICAgICB9KSxcbiAgICAgIC4uLnRoaXMucHJvcHMuc3R5bGUsXG4gICAgfTtcbiAgICB4Q2xvc2VTdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAwLFxuICAgICAgaW5zZXRJbmxpbmVFbmQ6IDAsXG4gICAgICBwYWRkaW5nOiAwLFxuICAgICAgY29sb3I6IGNvbG9yLm5ldXRyYWxfZGFyazMwLFxuICAgICAgY3Vyc29yOiAncG9pbnRlcicsXG4gICAgICBmb250U2l6ZTogMjQsXG4gICAgICBib3JkZXI6ICdub25lJyxcbiAgICB9O1xuXG4gICAgbW9kYWxCb2R5Q2xhc3NOYW1lcyA9IFttb2RhbEJvZHlDbGFzc05hbWVzLCB0aGlzLnByb3BzLmJvZHlDbGFzc05hbWVdXG4gICAgICAuZmlsdGVyKGNsYXNzTmFtZSA9PiAhIWNsYXNzTmFtZSlcbiAgICAgIC5qb2luKCcgJyk7XG5cbiAgICBsZXQgYm9keSA9IChcbiAgICAgIDxkaXZcbiAgICAgICAgc3R5bGU9e2JvZHlTdHlsZX1cbiAgICAgICAgdGFiSW5kZXg9XCItMVwiXG4gICAgICAgIGNsYXNzTmFtZT17bW9kYWxDbGFzc05hbWVzfVxuICAgICAgICByZWY9XCJkaWFsb2dcIlxuICAgICAgICBvbktleURvd249e3RoaXMuaGFuZGxlS2V5RG93bn1cbiAgICAgID5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIHN0eWxlPXttb2RhbEJvZHlTdHlsZX1cbiAgICAgICAgICBpZD17dGhpcy5wcm9wcy5ib2R5SWR9XG4gICAgICAgICAgY2xhc3NOYW1lPXttb2RhbEJvZHlDbGFzc05hbWVzfVxuICAgICAgICA+XG4gICAgICAgICAgeyF0aGlzLnByb3BzLnVuY2xvc2VhYmxlICYmICF0aGlzLnByb3BzLmhpZGVDbG9zZUJ1dHRvbiAmJiAoXG4gICAgICAgICAgICA8QnV0dG9uXG4gICAgICAgICAgICAgIGlkPVwieC1jbG9zZVwiXG4gICAgICAgICAgICAgIG9uQ2xpY2s9e3RoaXMuY2xvc2VEaWFsb2d9XG4gICAgICAgICAgICAgIGljb249XCJmYS1zb2xpZCBmYS14bWFya1wiXG4gICAgICAgICAgICAgIHN0eWxlPXt4Q2xvc2VTdHlsZX1cbiAgICAgICAgICAgICAgY29sb3I9XCJ3aGl0ZVwiXG4gICAgICAgICAgICAgIGFyaWEtbGFiZWw9e2kxOG4uY2xvc2VEaWFsb2coKX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgICB7dGhpcy5wcm9wcy5jaGlsZHJlbn1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICApO1xuXG4gICAgaWYgKHRoaXMucHJvcHMuaGlkZUJhY2tkcm9wKSB7XG4gICAgICByZXR1cm4gYm9keTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgPGRpdiBjbGFzc05hbWU9e3dyYXBwZXJDbGFzc05hbWVzfT5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17bW9kYWxCYWNrZHJvcENsYXNzTmFtZXN9XG4gICAgICAgICAgc3R5bGU9e3RoaXMucHJvcHMuYmFja2Ryb3BTdHlsZX1cbiAgICAgICAgICBvbkNsaWNrPXt0aGlzLmNsb3NlRGlhbG9nfVxuICAgICAgICAvPlxuICAgICAgICB7Ym9keX1cbiAgICAgIDwvZGl2PlxuICAgICk7XG4gIH1cbn1cbiIsIi8qIGVzbGludC1kaXNhYmxlICovXG5cbi8vIGFwcHMvc3JjL3V0aWwvY29sb3IuanNcbi8vIEdFTkVSQVRFRCBGSUxFOiBETyBOT1QgTU9ESUZZIERJUkVDVExZXG4vLyBUaGlzIGdlbmVyYXRlZCBmaWxlIGV4cG9ydHMgYWxsIHZhcmlhYmxlcyBkZWZpbmVkIGluIHNoYXJlZC9jc3MvY29sb3Iuc2Nzc1xuLy8gZm9yIHVzZSBpbiBKYXZhU2NyaXB0LiBUaGUgZ2VuZXJhdG9yIHNjcmlwdCBpcyBjb252ZXJ0LXNjc3MtdmFyaWFibGVzLmpzXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgXCJibGFja1wiOiBcIiMwMDBcIixcbiAgXCJiYWNrZ3JvdW5kX2JsYWNrXCI6IFwiIzEyMTQxNlwiLFxuICBcImRhcmtfZ3JheVwiOiBcIiMyRDMxMzlcIixcbiAgXCJkYXJrZXN0X2dyYXlcIjogXCIjMjkyRjM2XCIsXG4gIFwiZGFya19zbGF0ZV9ncmF5XCI6IFwiIzI4MmMzNFwiLFxuICBcImRhcmtlc3Rfc2xhdGVfZ3JheVwiOiBcIiMyNTI5MmRcIixcbiAgXCJkYXJrX2NoYXJjb2FsXCI6IFwiIzRkNTc1ZlwiLFxuICBcImNoYXJjb2FsXCI6IFwiIzViNjc3MFwiLFxuICBcImxpZ2h0X2dyYXlcIjogXCIjOTQ5Y2EyXCIsXG4gIFwibGlnaHRlcl9ncmF5XCI6IFwiI2M2Y2FjZFwiLFxuICBcImxpZ2h0ZXN0X2dyYXlcIjogXCIjZTdlOGVhXCIsXG4gIFwiYmFja2dyb3VuZF9ncmF5XCI6IFwiI2YyZjJmMlwiLFxuICBcImRpbWdyYXlcIjogXCIjNjk2OTY5XCIsXG4gIFwid2hpdGVcIjogXCIjZmZmXCIsXG4gIFwiZGVmYXVsdF9ibHVlXCI6IFwiIzM2NzBiM1wiLFxuICBcImRhcmtfdGVhbFwiOiBcIiMwMDk0YTNcIixcbiAgXCJ0ZWFsXCI6IFwiIzAwOTNhNFwiLFxuICBcImFwcGxhYl9idXR0b25fdGVhbFwiOiBcIiMxYWJjOWNcIixcbiAgXCJsaWdodF90ZWFsXCI6IFwiIzU5Y2FkM1wiLFxuICBcImxpZ2h0aXNoX3RlYWxcIjogXCIjODBkNmRlXCIsXG4gIFwibGlnaHRlcl90ZWFsXCI6IFwiI2E2ZTNlOFwiLFxuICBcImxpZ2h0ZXN0X3RlYWxcIjogXCIjZDlmM2Y1XCIsXG4gIFwiYWlfcnVicmljX2N5YW5cIjogXCIjM2NmZmY4XCIsXG4gIFwicHVycGxlXCI6IFwiIzhjNTJiYVwiLFxuICBcImxpZ2h0X3B1cnBsZVwiOiBcIiNhNjliYzFcIixcbiAgXCJsaWdodGVyX3B1cnBsZVwiOiBcIiNjZmM5ZGVcIixcbiAgXCJsaWdodGVzdF9wdXJwbGVcIjogXCIjZWJlOGYxXCIsXG4gIFwiY3lhblwiOiBcIiMwMDk0Y2FcIixcbiAgXCJsaWdodF9jeWFuXCI6IFwiIzU5YjlkY1wiLFxuICBcImxpZ2h0ZXJfY3lhblwiOiBcIiNhNmRhZWRcIixcbiAgXCJsaWdodGVzdF9jeWFuXCI6IFwiI2Q5ZWZmN1wiLFxuICBcImFsbW9zdF93aGl0ZV9jeWFuXCI6IFwiI2Y1ZmNmZlwiLFxuICBcIm9yYW5nZVwiOiBcIiNmZmE0MDBcIixcbiAgXCJsaWdodF9vcmFuZ2VcIjogXCIjZmZjNDU5XCIsXG4gIFwibGlnaHRlcl9vcmFuZ2VcIjogXCIjZmZlMGE2XCIsXG4gIFwibGlnaHRlc3Rfb3JhbmdlXCI6IFwiI2ZmZjJkOVwiLFxuICBcImRhcmtfb3JhbmdlXCI6IFwiI2ZmODYwMFwiLFxuICBcImdyZWVuXCI6IFwiI2I5YmYxNVwiLFxuICBcImxpZ2h0X2dyZWVuXCI6IFwiI2QxZDU2N1wiLFxuICBcImxpZ2h0ZXJfZ3JlZW5cIjogXCIjZTdlOWFkXCIsXG4gIFwibGlnaHRlc3RfZ3JlZW5cIjogXCIjZjVmNWRjXCIsXG4gIFwiaGlnaGxpZ2h0X2dyZWVuXCI6IFwiIzhhZmM5YlwiLFxuICBcInllbGxvd1wiOiBcIiNmZmI4MWRcIixcbiAgXCJsaWdodF95ZWxsb3dcIjogXCIjZmZkYjc0XCIsXG4gIFwibGlnaHRlcl95ZWxsb3dcIjogXCIjZmZlYmI1XCIsXG4gIFwibGlnaHRlc3RfeWVsbG93XCI6IFwiI2ZmZjdkZlwiLFxuICBcImdvbGRlbnJvZFwiOiBcIiNkYWE1MjBcIixcbiAgXCJoZWFkZXJfdGV4dFwiOiBcIiNmZmZcIixcbiAgXCJia2duZF9jb2xvclwiOiBcIiMwMDkzYTRcIixcbiAgXCJpbnNldF9jb2xvclwiOiBcIiNjNmNhY2RcIixcbiAgXCJkYXJrX2NvbG9yXCI6IFwiIzhjNTJiYVwiLFxuICBcImhkcl9jb2xvclwiOiBcIiM4YzUyYmFcIixcbiAgXCJyZWRcIjogXCIjYzAwXCIsXG4gIFwibGlnaHRlc3RfcmVkXCI6IFwiI2ZjY1wiLFxuICBcImRhcmtfcmVkXCI6IFwiI2Q2MjkxMVwiLFxuICBcInJlYWxncmVlblwiOiBcIiMwMDgwMDBcIixcbiAgXCJyZWFseWVsbG93XCI6IFwiI2ZmMFwiLFxuICBcIm11c3RhcmR5ZWxsb3dcIjogXCIjZWZjZDFjXCIsXG4gIFwidHdpdHRlcl9ibHVlXCI6IFwiIzAwYWNlZFwiLFxuICBcImZhY2Vib29rX2JsdWVcIjogXCIjM2I1OTk4XCIsXG4gIFwibGlua2VkaW5fYmx1ZVwiOiBcIiMwMDc3QjVcIixcbiAgXCJkYXJrX2JsdWVcIjogXCIjMDA2NDdmXCIsXG4gIFwiYmxvY2tseV9mbHlvdXRfZ3JheVwiOiBcIiNkZGRcIixcbiAgXCJkZWZhdWx0X3RleHRcIjogXCIjMzMzXCIsXG4gIFwiYm9yZGVyX2dyYXlcIjogXCIjYmJiXCIsXG4gIFwiYm9yZGVyX2xpZ2h0X2dyYXlcIjogXCIjZDhkOGQ4XCIsXG4gIFwidGFibGVfaGVhZGVyXCI6IFwiI2VjZWNlY1wiLFxuICBcInRhYmxlX2xpZ2h0X3Jvd1wiOiBcIiNmY2ZjZmNcIixcbiAgXCJ0YWJsZV9kYXJrX3Jvd1wiOiBcIiNmNGY0ZjRcIixcbiAgXCJsZXZlbF9zdWJtaXR0ZWRcIjogXCIjOGM1MmJhXCIsXG4gIFwibGV2ZWxfcGVyZmVjdFwiOiBcInJnYigxNCwgMTkwLCAxNClcIixcbiAgXCJsZXZlbF9wYXNzZWRcIjogXCJyZ2IoMTU5LCAyMTIsIDE1OSlcIixcbiAgXCJsZXZlbF9hdHRlbXB0ZWRcIjogXCIjZmYwXCIsXG4gIFwibGV2ZWxfbm90X3RyaWVkXCI6IFwiI2ZlZmVmZVwiLFxuICBcImxldmVsX2N1cnJlbnRcIjogXCIjZmZhNDAwXCIsXG4gIFwibGV2ZWxfcmV2aWV3X3JlamVjdGVkXCI6IFwiI2MwMFwiLFxuICBcImxldmVsX3Jldmlld19hY2NlcHRlZFwiOiBcInJnYigxMSwgMTQyLCAxMSlcIixcbiAgXCJhc3Nlc3NtZW50XCI6IFwiIzAwOTRjYVwiLFxuICBcIndvcmtzcGFjZV9ydW5uaW5nX2JhY2tncm91bmRcIjogXCIjZTVlNWU1XCIsXG4gIFwiZGFya19wdXJwbGVcIjogXCIjNjgyQTc3XCIsXG4gIFwiYnJpZ2h0X2dyZWVuXCI6IFwiIzBlYmUwZVwiLFxuICBcIm5lb25fcGlua1wiOiBcIiNlOTExOGZcIixcbiAgXCJsaW5rX2NvbG9yXCI6IFwiIzA1OTZjZVwiLFxuICBcInNoYWRvd1wiOiBcInJnYmEoMCwgMCwgMCwgMC4zKVwiLFxuICBcImJvb3RzdHJhcF9idXR0b25fYmx1ZVwiOiBcIiMzMzdhYjdcIixcbiAgXCJib290c3RyYXBfYnV0dG9uX3JlZFwiOiBcIiNkOTUzNGZcIixcbiAgXCJib290c3RyYXBfZXJyb3JfYmFja2dyb3VuZFwiOiBcIiNmMmRlZGVcIixcbiAgXCJib290c3RyYXBfZXJyb3JfdGV4dFwiOiBcIiNiOTRhNDhcIixcbiAgXCJib290c3RyYXBfdjNfZXJyb3JfdGV4dFwiOiBcIiNhOTQ0NDJcIixcbiAgXCJib290c3RyYXBfZXJyb3JfYm9yZGVyXCI6IFwiI2ViY2NkMVwiLFxuICBcImJvb3RzdHJhcF93YXJuaW5nX2JhY2tncm91bmRcIjogXCIjZmNmOGUzXCIsXG4gIFwiYm9vdHN0cmFwX3dhcm5pbmdfdGV4dFwiOiBcIiNjMDk4NTNcIixcbiAgXCJib290c3RyYXBfd2FybmluZ19ib3JkZXJcIjogXCIjZmFlYmNjXCIsXG4gIFwiYm9vdHN0cmFwX2JvcmRlcl9jb2xvclwiOiBcIiNjY2NjY2NcIixcbiAgXCJib290c3RyYXBfc3VjY2Vzc19iYWNrZ3JvdW5kXCI6IFwiI2RmZjBkOFwiLFxuICBcImJvb3RzdHJhcF9zdWNjZXNzX3RleHRcIjogXCIjNDY4ODQ3XCIsXG4gIFwiYm9vdHN0cmFwX3N1Y2Nlc3NfYm9yZGVyXCI6IFwiI2Q2ZTljNlwiLFxuICBcImRyb3BsZXRfbGlnaHRfZ3JlZW5cIjogXCIjZDNlOTY1XCIsXG4gIFwiZHJvcGxldF9ibHVlXCI6IFwiIzY0YjVmNlwiLFxuICBcImRyb3BsZXRfYnJpZ2h0X2JsdWVcIjogXCIjMTljM2UxXCIsXG4gIFwiZHJvcGxldF95ZWxsb3dcIjogXCIjZmZmMTc2XCIsXG4gIFwiZHJvcGxldF9vcmFuZ2VcIjogXCIjZmZiNzRkXCIsXG4gIFwiZHJvcGxldF9yZWRcIjogXCIjZjc4MTgzXCIsXG4gIFwiZHJvcGxldF9jeWFuXCI6IFwiIzRkZDBlMVwiLFxuICBcImRyb3BsZXRfcGlua1wiOiBcIiNmNTdhYzZcIixcbiAgXCJkcm9wbGV0X3B1cnBsZVwiOiBcIiNiYjc3YzdcIixcbiAgXCJkcm9wbGV0X2dyZWVuXCI6IFwiIzY4ZDk5NVwiLFxuICBcImRyb3BsZXRfd2hpdGVcIjogXCIjZmZmXCIsXG4gIFwib2NlYW5zX2RlZXBfYmx1ZVwiOiBcInJnYigyLCAwLCAyOClcIixcbiAgXCJkYXJrX2JsYWNrXCI6IFwiIzEyMTIxMlwiLFxuICBcImJyYW5kX3ByaW1hcnlfbGlnaHRcIjogXCIjRTBGOEY5XCIsXG4gIFwiYnJhbmRfcHJpbWFyeV9kZWZhdWx0XCI6IFwiIzAwOUVCMFwiLFxuICBcImJyYW5kX3ByaW1hcnlfZGFya1wiOiBcIiMwMDc3ODVcIixcbiAgXCJicmFuZF9zZWNvbmRhcnlfbGlnaHRcIjogXCIjRTBEMUVDXCIsXG4gIFwiYnJhbmRfc2Vjb25kYXJ5X2RlZmF1bHRcIjogXCIjOEM1MkJBXCIsXG4gIFwiYnJhbmRfc2Vjb25kYXJ5X2RhcmtcIjogXCIjNkM0NjhBXCIsXG4gIFwiYnJhbmRfYWNjZW50X2RlZmF1bHRcIjogXCIjRUQ2MDYwXCIsXG4gIFwiYnJhbmRfdGVhbF81XCI6IFwiI0RGRjJGNFwiLFxuICBcInByb2R1Y3RfYWZmaXJtYXRpdmVfZGVmYXVsdFwiOiBcIiMzRUEzM0VcIixcbiAgXCJwcm9kdWN0X25lZ2F0aXZlX2xpZ2h0XCI6IFwiI0ZERUJFOVwiLFxuICBcInByb2R1Y3RfbmVnYXRpdmVfZGVmYXVsdFwiOiBcIiNFNTMxMUFcIixcbiAgXCJwcm9kdWN0X25lZ2F0aXZlX2RhcmtcIjogXCIjQUEyNTEzXCIsXG4gIFwicHJvZHVjdF9jYXV0aW9uX2RlZmF1bHRcIjogXCIjRjlDQjI4XCIsXG4gIFwicHJvZHVjdF9pbmZvcm1hdGlvbl9kZWZhdWx0XCI6IFwiIzAwN0FDQ1wiLFxuICBcIm5ldXRyYWxfd2hpdGVcIjogXCIjRkZGRkZGXCIsXG4gIFwibmV1dHJhbF9saWdodFwiOiBcIiNGN0Y4RkFcIixcbiAgXCJuZXV0cmFsX2dyYXkxMFwiOiBcIiNFQUVCRUJcIixcbiAgXCJuZXV0cmFsX2RhcmsxMFwiOiBcIiNFQUVDRUZcIixcbiAgXCJuZXV0cmFsX2RhcmsyMFwiOiBcIiNEMUQ0RDhcIixcbiAgXCJuZXV0cmFsX2RhcmszMFwiOiBcIiNCRUMyQzdcIixcbiAgXCJuZXV0cmFsX2Rhcms0MFwiOiBcIiNBQkIwQjZcIixcbiAgXCJuZXV0cmFsX2Rhcms1MFwiOiBcIiM5ODlFQTVcIixcbiAgXCJuZXV0cmFsX2Rhcms2MFwiOiBcIiM4NThDOTRcIixcbiAgXCJuZXV0cmFsX2Rhcms3MFwiOiBcIiM3MjdBODNcIixcbiAgXCJuZXV0cmFsX2Rhcms4MFwiOiBcIiM1RjY4NzJcIixcbiAgXCJuZXV0cmFsX2Rhcms5MFwiOiBcIiM0QzU2NjFcIixcbiAgXCJuZXV0cmFsX2RhcmtcIjogXCIjMjkyRjM2XCIsXG4gIFwiZ29vZ2xlX2JyYW5kX2NvbG9yXCI6IFwiIzBGOUQ1OFwiLFxuICBcIm1pY3Jvc29mdF9icmFuZF9jb2xvclwiOiBcIiNGRkI5MDBcIixcbiAgXCJmYWNlYm9va19icmFuZF9jb2xvclwiOiBcIiMzQjU5OThcIixcbiAgXCJjbGV2ZXJfYnJhbmRfY29sb3JcIjogXCIjMTQ2NEZGXCIsXG4gIFwibGlnaHRfcHJpbWFyeV8xMDBcIjogXCIjQkZFNEU4XCIsXG4gIFwibGlnaHRfcHJpbWFyeV81MDBcIjogXCIjMDA5M0E0XCIsXG4gIFwibGlnaHRfcHJpbWFyeV83MDBcIjogXCIjMDA3Nzg1XCIsXG4gIFwibGlnaHRfc2Vjb25kYXJ5XzEwMFwiOiBcIiNFMkQ0RUVcIixcbiAgXCJsaWdodF9zZWNvbmRhcnlfNTAwXCI6IFwiIzhDNTJCQVwiLFxuICBcImxpZ2h0X3NlY29uZGFyeV83MDBcIjogXCIjNkM0NjhBXCIsXG4gIFwibGlnaHRfZ3JheV81MFwiOiBcIiNGN0Y4RkFcIixcbiAgXCJsaWdodF9ncmF5XzEwMFwiOiBcIiNFQUVDRUZcIixcbiAgXCJsaWdodF9ncmF5XzIwMFwiOiBcIiNEMUQ0RDhcIixcbiAgXCJsaWdodF9ncmF5XzMwMFwiOiBcIiNCRUMyQzdcIixcbiAgXCJsaWdodF9ncmF5XzQwMFwiOiBcIiNBQkIwQjZcIixcbiAgXCJsaWdodF9ncmF5XzUwMFwiOiBcIiM5ODlFQTVcIixcbiAgXCJsaWdodF9ncmF5XzYwMFwiOiBcIiM4NThDOTRcIixcbiAgXCJsaWdodF9ncmF5XzcwMFwiOiBcIiM3MjdBODNcIixcbiAgXCJsaWdodF9ncmF5XzgwMFwiOiBcIiM1RjY4NzJcIixcbiAgXCJsaWdodF9ncmF5XzkwMFwiOiBcIiM0QzU2NjFcIixcbiAgXCJsaWdodF9ncmF5Xzk1MFwiOiBcIiMzOTQ0NTBcIixcbiAgXCJsaWdodF9hZmZpcm1hdGl2ZV8xMDBcIjogXCIjRTJGMUUyXCIsXG4gIFwibGlnaHRfYWZmaXJtYXRpdmVfNTAwXCI6IFwiIzNFQTMzRVwiLFxuICBcImxpZ2h0X2FmZmlybWF0aXZlXzcwMFwiOiBcIiMyRDc0MkRcIixcbiAgXCJsaWdodF9uZWdhdGl2ZV8xMDBcIjogXCIjRkJFMEREXCIsXG4gIFwibGlnaHRfbmVnYXRpdmVfNTAwXCI6IFwiI0U1MzExQVwiLFxuICBcImxpZ2h0X25lZ2F0aXZlXzcwMFwiOiBcIiNCMjQ5NDlcIixcbiAgXCJsaWdodF9jYXV0aW9uXzEwMFwiOiBcIiNGRUY3REZcIixcbiAgXCJsaWdodF9jYXV0aW9uXzUwMFwiOiBcIiNGOUNCMjhcIixcbiAgXCJsaWdodF9jYXV0aW9uXzcwMFwiOiBcIiNDN0EyMjBcIixcbiAgXCJsaWdodF9hY2NlbnRfMTAwXCI6IFwiI0ZBRDdEN1wiLFxuICBcImxpZ2h0X2FjY2VudF81MDBcIjogXCIjRUQ2MDYwXCIsXG4gIFwibGlnaHRfYWNjZW50XzcwMFwiOiBcIiNEODRDNENcIixcbiAgXCJsaWdodF9hcXVhXzEwMFwiOiBcIiNDRUZGRkRcIixcbiAgXCJsaWdodF9hcXVhXzUwMFwiOiBcIiMzQ0ZGRjhcIixcbiAgXCJsaWdodF9hcXVhXzcwMFwiOiBcIiMzMENDQzZcIixcbiAgXCJsaWdodF9vcmFuZ2VfMTAwXCI6IFwiI0ZGRURDQ1wiLFxuICBcImxpZ2h0X29yYW5nZV81MDBcIjogXCIjRkZBNDAwXCIsXG4gIFwibGlnaHRfb3JhbmdlXzcwMFwiOiBcIiNDQzgzMDBcIixcbiAgXCJsaWdodF9pbmZvXzEwMFwiOiBcIiNEQ0VGRkJcIixcbiAgXCJsaWdodF9pbmZvXzUwMFwiOiBcIiMxODkyRTNcIixcbiAgXCJsaWdodF9pbmZvXzcwMFwiOiBcIiMxMzc1QjZcIixcbiAgXCJsaWdodF93aGl0ZVwiOiBcIiNGRkZGRkZcIixcbiAgXCJsaWdodF9ibGFja1wiOiBcIiMyOTJGMzZcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5XzkwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjkwKVwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHktODBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuODApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS03MFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC43MClcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5LTYwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjYwKVwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHktNTBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuNTApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS00MFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC40MClcIixcbiAgXCJsaWdodF9ibGFja19vcGFjaXR5LTMwXCI6IFwicmdiYSg0MSwgNDcsIDU0LCAwLjMwKVwiLFxuICBcImxpZ2h0X2JsYWNrX29wYWNpdHktMjBcIjogXCJyZ2JhKDQxLCA0NywgNTQsIDAuMjApXCIsXG4gIFwibGlnaHRfYmxhY2tfb3BhY2l0eS0xMFwiOiBcInJnYmEoNDEsIDQ3LCA1NCwgMC4xMClcIixcbn07XG4iLCIvKipcbiAqIERPIE5PVCBJTVBPUlQgVEhJUyBESVJFQ1RMWS4gSW5zdGVhZCBkbzpcbiAqICAgYGBgXG4gKiAgIGltcG9ydCBtc2cgZnJvbSAnQGNkby93ZWJsYWIvbG9jYWxlJy5cbiAqICAgYGBgXG4gKiBUaGlzIGFsbG93cyB0aGUgd2VicGFjayBjb25maWcgdG8gZGV0ZXJtaW5lIGhvdyBsb2NhbGVzIHNob3VsZCBiZSBsb2FkZWQsXG4gKiB3aGljaCBpcyBpbXBvcnRhbnQgZm9yIG1ha2luZyBsb2NhbGUgc2V0dXAgd29yayBzZWFtbGVzc2x5IGluIHRlc3RzLlxuICovXG4vLyBsb2NhbGUgZm9yIHdlYmxhYlxuXG5pbXBvcnQgbG9jYWxlV2l0aEkxOG5TdHJpbmdUcmFja2VyIGZyb20gJ0BjZG8vYXBwcy91dGlsL2kxOG5TdHJpbmdUcmFja2VyJztcbmltcG9ydCBzYWZlTG9hZExvY2FsZSBmcm9tICdAY2RvL2FwcHMvdXRpbC9zYWZlTG9hZExvY2FsZSc7XG5cbmxldCBsb2NhbGUgPSBzYWZlTG9hZExvY2FsZSgnd2VibGFiX2xvY2FsZScpO1xubG9jYWxlID0gbG9jYWxlV2l0aEkxOG5TdHJpbmdUcmFja2VyKGxvY2FsZSwgJ3dlYmxhYicpO1xubW9kdWxlLmV4cG9ydHMgPSBsb2NhbGU7XG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qXG4gIE1JVCBMaWNlbnNlIGh0dHA6Ly93d3cub3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvbWl0LWxpY2Vuc2UucGhwXG4gIEF1dGhvciBUb2JpYXMgS29wcGVycyBAc29rcmFcbiovXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChjc3NXaXRoTWFwcGluZ1RvU3RyaW5nKSB7XG4gIHZhciBsaXN0ID0gW107IC8vIHJldHVybiB0aGUgbGlzdCBvZiBtb2R1bGVzIGFzIGNzcyBzdHJpbmdcblxuICBsaXN0LnRvU3RyaW5nID0gZnVuY3Rpb24gdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uIChpdGVtKSB7XG4gICAgICB2YXIgY29udGVudCA9IFwiXCI7XG4gICAgICB2YXIgbmVlZExheWVyID0gdHlwZW9mIGl0ZW1bNV0gIT09IFwidW5kZWZpbmVkXCI7XG5cbiAgICAgIGlmIChpdGVtWzRdKSB7XG4gICAgICAgIGNvbnRlbnQgKz0gXCJAc3VwcG9ydHMgKFwiLmNvbmNhdChpdGVtWzRdLCBcIikge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGl0ZW1bMl0pIHtcbiAgICAgICAgY29udGVudCArPSBcIkBtZWRpYSBcIi5jb25jYXQoaXRlbVsyXSwgXCIge1wiKTtcbiAgICAgIH1cblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwiQGxheWVyXCIuY29uY2F0KGl0ZW1bNV0ubGVuZ3RoID4gMCA/IFwiIFwiLmNvbmNhdChpdGVtWzVdKSA6IFwiXCIsIFwiIHtcIik7XG4gICAgICB9XG5cbiAgICAgIGNvbnRlbnQgKz0gY3NzV2l0aE1hcHBpbmdUb1N0cmluZyhpdGVtKTtcblxuICAgICAgaWYgKG5lZWRMYXllcikge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVsyXSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICBpZiAoaXRlbVs0XSkge1xuICAgICAgICBjb250ZW50ICs9IFwifVwiO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gY29udGVudDtcbiAgICB9KS5qb2luKFwiXCIpO1xuICB9OyAvLyBpbXBvcnQgYSBsaXN0IG9mIG1vZHVsZXMgaW50byB0aGUgbGlzdFxuXG5cbiAgbGlzdC5pID0gZnVuY3Rpb24gaShtb2R1bGVzLCBtZWRpYSwgZGVkdXBlLCBzdXBwb3J0cywgbGF5ZXIpIHtcbiAgICBpZiAodHlwZW9mIG1vZHVsZXMgPT09IFwic3RyaW5nXCIpIHtcbiAgICAgIG1vZHVsZXMgPSBbW251bGwsIG1vZHVsZXMsIHVuZGVmaW5lZF1dO1xuICAgIH1cblxuICAgIHZhciBhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzID0ge307XG5cbiAgICBpZiAoZGVkdXBlKSB7XG4gICAgICBmb3IgKHZhciBrID0gMDsgayA8IHRoaXMubGVuZ3RoOyBrKyspIHtcbiAgICAgICAgdmFyIGlkID0gdGhpc1trXVswXTtcblxuICAgICAgICBpZiAoaWQgIT0gbnVsbCkge1xuICAgICAgICAgIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaWRdID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9rID0gMDsgX2sgPCBtb2R1bGVzLmxlbmd0aDsgX2srKykge1xuICAgICAgdmFyIGl0ZW0gPSBbXS5jb25jYXQobW9kdWxlc1tfa10pO1xuXG4gICAgICBpZiAoZGVkdXBlICYmIGFscmVhZHlJbXBvcnRlZE1vZHVsZXNbaXRlbVswXV0pIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgbGF5ZXIgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtWzVdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBsYXllclwiLmNvbmNhdChpdGVtWzVdLmxlbmd0aCA+IDAgPyBcIiBcIi5jb25jYXQoaXRlbVs1XSkgOiBcIlwiLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs1XSA9IGxheWVyO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChtZWRpYSkge1xuICAgICAgICBpZiAoIWl0ZW1bMl0pIHtcbiAgICAgICAgICBpdGVtWzJdID0gbWVkaWE7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgaXRlbVsxXSA9IFwiQG1lZGlhIFwiLmNvbmNhdChpdGVtWzJdLCBcIiB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVsyXSA9IG1lZGlhO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzdXBwb3J0cykge1xuICAgICAgICBpZiAoIWl0ZW1bNF0pIHtcbiAgICAgICAgICBpdGVtWzRdID0gXCJcIi5jb25jYXQoc3VwcG9ydHMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIGl0ZW1bMV0gPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KGl0ZW1bNF0sIFwiKSB7XCIpLmNvbmNhdChpdGVtWzFdLCBcIn1cIik7XG4gICAgICAgICAgaXRlbVs0XSA9IHN1cHBvcnRzO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGxpc3QucHVzaChpdGVtKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIGxpc3Q7XG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdGVtKSB7XG4gIHZhciBjb250ZW50ID0gaXRlbVsxXTtcbiAgdmFyIGNzc01hcHBpbmcgPSBpdGVtWzNdO1xuXG4gIGlmICghY3NzTWFwcGluZykge1xuICAgIHJldHVybiBjb250ZW50O1xuICB9XG5cbiAgaWYgKHR5cGVvZiBidG9hID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICB2YXIgYmFzZTY0ID0gYnRvYSh1bmVzY2FwZShlbmNvZGVVUklDb21wb25lbnQoSlNPTi5zdHJpbmdpZnkoY3NzTWFwcGluZykpKSk7XG4gICAgdmFyIGRhdGEgPSBcInNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTg7YmFzZTY0LFwiLmNvbmNhdChiYXNlNjQpO1xuICAgIHZhciBzb3VyY2VNYXBwaW5nID0gXCIvKiMgXCIuY29uY2F0KGRhdGEsIFwiICovXCIpO1xuICAgIHZhciBzb3VyY2VVUkxzID0gY3NzTWFwcGluZy5zb3VyY2VzLm1hcChmdW5jdGlvbiAoc291cmNlKSB7XG4gICAgICByZXR1cm4gXCIvKiMgc291cmNlVVJMPVwiLmNvbmNhdChjc3NNYXBwaW5nLnNvdXJjZVJvb3QgfHwgXCJcIikuY29uY2F0KHNvdXJjZSwgXCIgKi9cIik7XG4gICAgfSk7XG4gICAgcmV0dXJuIFtjb250ZW50XS5jb25jYXQoc291cmNlVVJMcykuY29uY2F0KFtzb3VyY2VNYXBwaW5nXSkuam9pbihcIlxcblwiKTtcbiAgfVxuXG4gIHJldHVybiBbY29udGVudF0uam9pbihcIlxcblwiKTtcbn07IiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTMtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSZWFjdFByb3BUeXBlc1NlY3JldCA9IHJlcXVpcmUoJy4vbGliL1JlYWN0UHJvcFR5cGVzU2VjcmV0Jyk7XG5cbmZ1bmN0aW9uIGVtcHR5RnVuY3Rpb24oKSB7fVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uKCkge1xuICBmdW5jdGlvbiBzaGltKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSwgbG9jYXRpb24sIHByb3BGdWxsTmFtZSwgc2VjcmV0KSB7XG4gICAgaWYgKHNlY3JldCA9PT0gUmVhY3RQcm9wVHlwZXNTZWNyZXQpIHtcbiAgICAgIC8vIEl0IGlzIHN0aWxsIHNhZmUgd2hlbiBjYWxsZWQgZnJvbSBSZWFjdC5cbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcihcbiAgICAgICdDYWxsaW5nIFByb3BUeXBlcyB2YWxpZGF0b3JzIGRpcmVjdGx5IGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLiAnICtcbiAgICAgICdVc2UgUHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzKCkgdG8gY2FsbCB0aGVtLiAnICtcbiAgICAgICdSZWFkIG1vcmUgYXQgaHR0cDovL2ZiLm1lL3VzZS1jaGVjay1wcm9wLXR5cGVzJ1xuICAgICk7XG4gICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgdGhyb3cgZXJyO1xuICB9O1xuICBzaGltLmlzUmVxdWlyZWQgPSBzaGltO1xuICBmdW5jdGlvbiBnZXRTaGltKCkge1xuICAgIHJldHVybiBzaGltO1xuICB9O1xuICAvLyBJbXBvcnRhbnQhXG4gIC8vIEtlZXAgdGhpcyBsaXN0IGluIHN5bmMgd2l0aCBwcm9kdWN0aW9uIHZlcnNpb24gaW4gYC4vZmFjdG9yeVdpdGhUeXBlQ2hlY2tlcnMuanNgLlxuICB2YXIgUmVhY3RQcm9wVHlwZXMgPSB7XG4gICAgYXJyYXk6IHNoaW0sXG4gICAgYm9vbDogc2hpbSxcbiAgICBmdW5jOiBzaGltLFxuICAgIG51bWJlcjogc2hpbSxcbiAgICBvYmplY3Q6IHNoaW0sXG4gICAgc3RyaW5nOiBzaGltLFxuICAgIHN5bWJvbDogc2hpbSxcblxuICAgIGFueTogc2hpbSxcbiAgICBhcnJheU9mOiBnZXRTaGltLFxuICAgIGVsZW1lbnQ6IHNoaW0sXG4gICAgaW5zdGFuY2VPZjogZ2V0U2hpbSxcbiAgICBub2RlOiBzaGltLFxuICAgIG9iamVjdE9mOiBnZXRTaGltLFxuICAgIG9uZU9mOiBnZXRTaGltLFxuICAgIG9uZU9mVHlwZTogZ2V0U2hpbSxcbiAgICBzaGFwZTogZ2V0U2hpbSxcbiAgICBleGFjdDogZ2V0U2hpbVxuICB9O1xuXG4gIFJlYWN0UHJvcFR5cGVzLmNoZWNrUHJvcFR5cGVzID0gZW1wdHlGdW5jdGlvbjtcbiAgUmVhY3RQcm9wVHlwZXMuUHJvcFR5cGVzID0gUmVhY3RQcm9wVHlwZXM7XG5cbiAgcmV0dXJuIFJlYWN0UHJvcFR5cGVzO1xufTtcbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSAncHJvZHVjdGlvbicpIHtcbiAgdmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9ICh0eXBlb2YgU3ltYm9sID09PSAnZnVuY3Rpb24nICYmXG4gICAgU3ltYm9sLmZvciAmJlxuICAgIFN5bWJvbC5mb3IoJ3JlYWN0LmVsZW1lbnQnKSkgfHxcbiAgICAweGVhYzc7XG5cbiAgdmFyIGlzVmFsaWRFbGVtZW50ID0gZnVuY3Rpb24ob2JqZWN0KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBvYmplY3QgPT09ICdvYmplY3QnICYmXG4gICAgICBvYmplY3QgIT09IG51bGwgJiZcbiAgICAgIG9iamVjdC4kJHR5cGVvZiA9PT0gUkVBQ1RfRUxFTUVOVF9UWVBFO1xuICB9O1xuXG4gIC8vIEJ5IGV4cGxpY2l0bHkgdXNpbmcgYHByb3AtdHlwZXNgIHlvdSBhcmUgb3B0aW5nIGludG8gbmV3IGRldmVsb3BtZW50IGJlaGF2aW9yLlxuICAvLyBodHRwOi8vZmIubWUvcHJvcC10eXBlcy1pbi1wcm9kXG4gIHZhciB0aHJvd09uRGlyZWN0QWNjZXNzID0gdHJ1ZTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2ZhY3RvcnlXaXRoVHlwZUNoZWNrZXJzJykoaXNWYWxpZEVsZW1lbnQsIHRocm93T25EaXJlY3RBY2Nlc3MpO1xufSBlbHNlIHtcbiAgLy8gQnkgZXhwbGljaXRseSB1c2luZyBgcHJvcC10eXBlc2AgeW91IGFyZSBvcHRpbmcgaW50byBuZXcgcHJvZHVjdGlvbiBiZWhhdmlvci5cbiAgLy8gaHR0cDovL2ZiLm1lL3Byb3AtdHlwZXMtaW4tcHJvZFxuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vZmFjdG9yeVdpdGhUaHJvd2luZ1NoaW1zJykoKTtcbn1cbiIsIi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuJ3VzZSBzdHJpY3QnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXQgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbnZhciBzdHlsZXNJbkRPTSA9IFtdO1xuXG5mdW5jdGlvbiBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKSB7XG4gIHZhciByZXN1bHQgPSAtMTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlc0luRE9NLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKHN0eWxlc0luRE9NW2ldLmlkZW50aWZpZXIgPT09IGlkZW50aWZpZXIpIHtcbiAgICAgIHJlc3VsdCA9IGk7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuXG5mdW5jdGlvbiBtb2R1bGVzVG9Eb20obGlzdCwgb3B0aW9ucykge1xuICB2YXIgaWRDb3VudE1hcCA9IHt9O1xuICB2YXIgaWRlbnRpZmllcnMgPSBbXTtcblxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgaXRlbSA9IGxpc3RbaV07XG4gICAgdmFyIGlkID0gb3B0aW9ucy5iYXNlID8gaXRlbVswXSArIG9wdGlvbnMuYmFzZSA6IGl0ZW1bMF07XG4gICAgdmFyIGNvdW50ID0gaWRDb3VudE1hcFtpZF0gfHwgMDtcbiAgICB2YXIgaWRlbnRpZmllciA9IFwiXCIuY29uY2F0KGlkLCBcIiBcIikuY29uY2F0KGNvdW50KTtcbiAgICBpZENvdW50TWFwW2lkXSA9IGNvdW50ICsgMTtcbiAgICB2YXIgaW5kZXhCeUlkZW50aWZpZXIgPSBnZXRJbmRleEJ5SWRlbnRpZmllcihpZGVudGlmaWVyKTtcbiAgICB2YXIgb2JqID0ge1xuICAgICAgY3NzOiBpdGVtWzFdLFxuICAgICAgbWVkaWE6IGl0ZW1bMl0sXG4gICAgICBzb3VyY2VNYXA6IGl0ZW1bM10sXG4gICAgICBzdXBwb3J0czogaXRlbVs0XSxcbiAgICAgIGxheWVyOiBpdGVtWzVdXG4gICAgfTtcblxuICAgIGlmIChpbmRleEJ5SWRlbnRpZmllciAhPT0gLTEpIHtcbiAgICAgIHN0eWxlc0luRE9NW2luZGV4QnlJZGVudGlmaWVyXS5yZWZlcmVuY2VzKys7XG4gICAgICBzdHlsZXNJbkRPTVtpbmRleEJ5SWRlbnRpZmllcl0udXBkYXRlcihvYmopO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgdXBkYXRlciA9IGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpO1xuICAgICAgb3B0aW9ucy5ieUluZGV4ID0gaTtcbiAgICAgIHN0eWxlc0luRE9NLnNwbGljZShpLCAwLCB7XG4gICAgICAgIGlkZW50aWZpZXI6IGlkZW50aWZpZXIsXG4gICAgICAgIHVwZGF0ZXI6IHVwZGF0ZXIsXG4gICAgICAgIHJlZmVyZW5jZXM6IDFcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlkZW50aWZpZXJzLnB1c2goaWRlbnRpZmllcik7XG4gIH1cblxuICByZXR1cm4gaWRlbnRpZmllcnM7XG59XG5cbmZ1bmN0aW9uIGFkZEVsZW1lbnRTdHlsZShvYmosIG9wdGlvbnMpIHtcbiAgdmFyIGFwaSA9IG9wdGlvbnMuZG9tQVBJKG9wdGlvbnMpO1xuICBhcGkudXBkYXRlKG9iaik7XG5cbiAgdmFyIHVwZGF0ZXIgPSBmdW5jdGlvbiB1cGRhdGVyKG5ld09iaikge1xuICAgIGlmIChuZXdPYmopIHtcbiAgICAgIGlmIChuZXdPYmouY3NzID09PSBvYmouY3NzICYmIG5ld09iai5tZWRpYSA9PT0gb2JqLm1lZGlhICYmIG5ld09iai5zb3VyY2VNYXAgPT09IG9iai5zb3VyY2VNYXAgJiYgbmV3T2JqLnN1cHBvcnRzID09PSBvYmouc3VwcG9ydHMgJiYgbmV3T2JqLmxheWVyID09PSBvYmoubGF5ZXIpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBhcGkudXBkYXRlKG9iaiA9IG5ld09iaik7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZW1vdmUoKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIHVwZGF0ZXI7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGxpc3QsIG9wdGlvbnMpIHtcbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG4gIGxpc3QgPSBsaXN0IHx8IFtdO1xuICB2YXIgbGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKGxpc3QsIG9wdGlvbnMpO1xuICByZXR1cm4gZnVuY3Rpb24gdXBkYXRlKG5ld0xpc3QpIHtcbiAgICBuZXdMaXN0ID0gbmV3TGlzdCB8fCBbXTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGFzdElkZW50aWZpZXJzLmxlbmd0aDsgaSsrKSB7XG4gICAgICB2YXIgaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tpXTtcbiAgICAgIHZhciBpbmRleCA9IGdldEluZGV4QnlJZGVudGlmaWVyKGlkZW50aWZpZXIpO1xuICAgICAgc3R5bGVzSW5ET01baW5kZXhdLnJlZmVyZW5jZXMtLTtcbiAgICB9XG5cbiAgICB2YXIgbmV3TGFzdElkZW50aWZpZXJzID0gbW9kdWxlc1RvRG9tKG5ld0xpc3QsIG9wdGlvbnMpO1xuXG4gICAgZm9yICh2YXIgX2kgPSAwOyBfaSA8IGxhc3RJZGVudGlmaWVycy5sZW5ndGg7IF9pKyspIHtcbiAgICAgIHZhciBfaWRlbnRpZmllciA9IGxhc3RJZGVudGlmaWVyc1tfaV07XG5cbiAgICAgIHZhciBfaW5kZXggPSBnZXRJbmRleEJ5SWRlbnRpZmllcihfaWRlbnRpZmllcik7XG5cbiAgICAgIGlmIChzdHlsZXNJbkRPTVtfaW5kZXhdLnJlZmVyZW5jZXMgPT09IDApIHtcbiAgICAgICAgc3R5bGVzSW5ET01bX2luZGV4XS51cGRhdGVyKCk7XG5cbiAgICAgICAgc3R5bGVzSW5ET00uc3BsaWNlKF9pbmRleCwgMSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgbGFzdElkZW50aWZpZXJzID0gbmV3TGFzdElkZW50aWZpZXJzO1xuICB9O1xufTsiLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIG1lbW8gPSB7fTtcbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5mdW5jdGlvbiBnZXRUYXJnZXQodGFyZ2V0KSB7XG4gIGlmICh0eXBlb2YgbWVtb1t0YXJnZXRdID09PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgdmFyIHN0eWxlVGFyZ2V0ID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rvcih0YXJnZXQpOyAvLyBTcGVjaWFsIGNhc2UgdG8gcmV0dXJuIGhlYWQgb2YgaWZyYW1lIGluc3RlYWQgb2YgaWZyYW1lIGl0c2VsZlxuXG4gICAgaWYgKHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCAmJiBzdHlsZVRhcmdldCBpbnN0YW5jZW9mIHdpbmRvdy5IVE1MSUZyYW1lRWxlbWVudCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgLy8gVGhpcyB3aWxsIHRocm93IGFuIGV4Y2VwdGlvbiBpZiBhY2Nlc3MgdG8gaWZyYW1lIGlzIGJsb2NrZWRcbiAgICAgICAgLy8gZHVlIHRvIGNyb3NzLW9yaWdpbiByZXN0cmljdGlvbnNcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBzdHlsZVRhcmdldC5jb250ZW50RG9jdW1lbnQuaGVhZDtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgLy8gaXN0YW5idWwgaWdub3JlIG5leHRcbiAgICAgICAgc3R5bGVUYXJnZXQgPSBudWxsO1xuICAgICAgfVxuICAgIH1cblxuICAgIG1lbW9bdGFyZ2V0XSA9IHN0eWxlVGFyZ2V0O1xuICB9XG5cbiAgcmV0dXJuIG1lbW9bdGFyZ2V0XTtcbn1cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuXG5cbmZ1bmN0aW9uIGluc2VydEJ5U2VsZWN0b3IoaW5zZXJ0LCBzdHlsZSkge1xuICB2YXIgdGFyZ2V0ID0gZ2V0VGFyZ2V0KGluc2VydCk7XG5cbiAgaWYgKCF0YXJnZXQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJDb3VsZG4ndCBmaW5kIGEgc3R5bGUgdGFyZ2V0LiBUaGlzIHByb2JhYmx5IG1lYW5zIHRoYXQgdGhlIHZhbHVlIGZvciB0aGUgJ2luc2VydCcgcGFyYW1ldGVyIGlzIGludmFsaWQuXCIpO1xuICB9XG5cbiAgdGFyZ2V0LmFwcGVuZENoaWxkKHN0eWxlKTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBpbnNlcnRCeVNlbGVjdG9yOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIGluc2VydFN0eWxlRWxlbWVudChvcHRpb25zKSB7XG4gIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInN0eWxlXCIpO1xuICBvcHRpb25zLnNldEF0dHJpYnV0ZXMoZWxlbWVudCwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgb3B0aW9ucy5pbnNlcnQoZWxlbWVudCwgb3B0aW9ucy5vcHRpb25zKTtcbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gaW5zZXJ0U3R5bGVFbGVtZW50OyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZXNXaXRob3V0QXR0cmlidXRlcyhzdHlsZUVsZW1lbnQpIHtcbiAgdmFyIG5vbmNlID0gdHlwZW9mIF9fd2VicGFja19ub25jZV9fICE9PSBcInVuZGVmaW5lZFwiID8gX193ZWJwYWNrX25vbmNlX18gOiBudWxsO1xuXG4gIGlmIChub25jZSkge1xuICAgIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG4gIH1cbn1cblxubW9kdWxlLmV4cG9ydHMgPSBzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXM7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbi8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICAqL1xuZnVuY3Rpb24gYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopIHtcbiAgdmFyIGNzcyA9IFwiXCI7XG5cbiAgaWYgKG9iai5zdXBwb3J0cykge1xuICAgIGNzcyArPSBcIkBzdXBwb3J0cyAoXCIuY29uY2F0KG9iai5zdXBwb3J0cywgXCIpIHtcIik7XG4gIH1cblxuICBpZiAob2JqLm1lZGlhKSB7XG4gICAgY3NzICs9IFwiQG1lZGlhIFwiLmNvbmNhdChvYmoubWVkaWEsIFwiIHtcIik7XG4gIH1cblxuICB2YXIgbmVlZExheWVyID0gdHlwZW9mIG9iai5sYXllciAhPT0gXCJ1bmRlZmluZWRcIjtcblxuICBpZiAobmVlZExheWVyKSB7XG4gICAgY3NzICs9IFwiQGxheWVyXCIuY29uY2F0KG9iai5sYXllci5sZW5ndGggPiAwID8gXCIgXCIuY29uY2F0KG9iai5sYXllcikgOiBcIlwiLCBcIiB7XCIpO1xuICB9XG5cbiAgY3NzICs9IG9iai5jc3M7XG5cbiAgaWYgKG5lZWRMYXllcikge1xuICAgIGNzcyArPSBcIn1cIjtcbiAgfVxuXG4gIGlmIChvYmoubWVkaWEpIHtcbiAgICBjc3MgKz0gXCJ9XCI7XG4gIH1cblxuICBpZiAob2JqLnN1cHBvcnRzKSB7XG4gICAgY3NzICs9IFwifVwiO1xuICB9XG5cbiAgdmFyIHNvdXJjZU1hcCA9IG9iai5zb3VyY2VNYXA7XG5cbiAgaWYgKHNvdXJjZU1hcCAmJiB0eXBlb2YgYnRvYSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgIGNzcyArPSBcIlxcbi8qIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsXCIuY29uY2F0KGJ0b2EodW5lc2NhcGUoZW5jb2RlVVJJQ29tcG9uZW50KEpTT04uc3RyaW5naWZ5KHNvdXJjZU1hcCkpKSksIFwiICovXCIpO1xuICB9IC8vIEZvciBvbGQgSUVcblxuICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgICovXG5cblxuICBvcHRpb25zLnN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50LCBvcHRpb25zLm9wdGlvbnMpO1xufVxuXG5mdW5jdGlvbiByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KSB7XG4gIC8vIGlzdGFuYnVsIGlnbm9yZSBpZlxuICBpZiAoc3R5bGVFbGVtZW50LnBhcmVudE5vZGUgPT09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBzdHlsZUVsZW1lbnQucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChzdHlsZUVsZW1lbnQpO1xufVxuLyogaXN0YW5idWwgaWdub3JlIG5leHQgICovXG5cblxuZnVuY3Rpb24gZG9tQVBJKG9wdGlvbnMpIHtcbiAgdmFyIHN0eWxlRWxlbWVudCA9IG9wdGlvbnMuaW5zZXJ0U3R5bGVFbGVtZW50KG9wdGlvbnMpO1xuICByZXR1cm4ge1xuICAgIHVwZGF0ZTogZnVuY3Rpb24gdXBkYXRlKG9iaikge1xuICAgICAgYXBwbHkoc3R5bGVFbGVtZW50LCBvcHRpb25zLCBvYmopO1xuICAgIH0sXG4gICAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUoKSB7XG4gICAgICByZW1vdmVTdHlsZUVsZW1lbnQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH07XG59XG5cbm1vZHVsZS5leHBvcnRzID0gZG9tQVBJOyIsIlwidXNlIHN0cmljdFwiO1xuXG4vKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAgKi9cbmZ1bmN0aW9uIHN0eWxlVGFnVHJhbnNmb3JtKGNzcywgc3R5bGVFbGVtZW50KSB7XG4gIGlmIChzdHlsZUVsZW1lbnQuc3R5bGVTaGVldCkge1xuICAgIHN0eWxlRWxlbWVudC5zdHlsZVNoZWV0LmNzc1RleHQgPSBjc3M7XG4gIH0gZWxzZSB7XG4gICAgd2hpbGUgKHN0eWxlRWxlbWVudC5maXJzdENoaWxkKSB7XG4gICAgICBzdHlsZUVsZW1lbnQucmVtb3ZlQ2hpbGQoc3R5bGVFbGVtZW50LmZpcnN0Q2hpbGQpO1xuICAgIH1cblxuICAgIHN0eWxlRWxlbWVudC5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgfVxufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHN0eWxlVGFnVHJhbnNmb3JtOyJdLCJuYW1lcyI6WyJfcHJvcFR5cGVzIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfcmVhY3QiLCJfQnV0dG9uIiwiX0Jhc2VEaWFsb2ciLCJfY29sb3IiLCJfdXRpbHMiLCJfbG9jYWxlIiwiX2V4Y2x1ZGVkIiwiZSIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mIiwibyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwiY29uc3RydWN0b3IiLCJwcm90b3R5cGUiLCJfZXh0ZW5kcyIsIk9iamVjdCIsImFzc2lnbiIsImJpbmQiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwidCIsInIiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJhcHBseSIsIm93bktleXMiLCJrZXlzIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwiZmlsdGVyIiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwiZW51bWVyYWJsZSIsInB1c2giLCJfb2JqZWN0U3ByZWFkIiwiZm9yRWFjaCIsIl9kZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvcnMiLCJkZWZpbmVQcm9wZXJ0aWVzIiwiZGVmaW5lUHJvcGVydHkiLCJfdG9Qcm9wZXJ0eUtleSIsImkiLCJfdG9QcmltaXRpdmUiLCJ0b1ByaW1pdGl2ZSIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsInZhbHVlIiwiY29uZmlndXJhYmxlIiwid3JpdGFibGUiLCJGb290ZXJCdXR0b25UeXBlIiwibWFrZUVudW0iLCJGb290ZXJCdXR0b25Db2xvciIsImNhbmNlbCIsIkJ1dHRvbiIsIkJ1dHRvbkNvbG9yIiwiZ3JheSIsImNvbmZpcm0iLCJicmFuZFNlY29uZGFyeURlZmF1bHQiLCJEaWFsb2dTdHlsZSIsIkZvb3RlckJ1dHRvbiIsInByb3BzIiwidHlwZSIsImNvbG9yIiwiYnV0dG9uUHJvcHMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsImluY2x1ZGVzIiwicyIsInByb3BlcnR5SXNFbnVtZXJhYmxlIiwiYnV0dG9uQ29sb3IiLCJ1bmRlZmluZWQiLCJzdHlsZSIsInN0eWxlcyIsImJ1dHRvbnMiLCJhbGwiLCJjcmVhdGVFbGVtZW50IiwiU3R5bGl6ZWRCYXNlRGlhbG9nIiwiaG9yaXpvbnRhbFJ1bGUiLCJzaW1wbGUiLCJociIsImRlZmF1bHRCdXR0b25zIiwia2V5IiwidGV4dCIsImNhbmNlbGxhdGlvbkJ1dHRvblRleHQiLCJvbkNsaWNrIiwiaGFuZGxlQ2FuY2VsbGF0aW9uIiwiaGFuZGxlQ2xvc2UiLCJjbGFzc05hbWUiLCJjb25maXJtYXRpb25CdXR0b25UZXh0IiwiaGFuZGxlQ29uZmlybWF0aW9uIiwiZGlzYWJsZWQiLCJkaXNhYmxlQ29uZmlybWF0aW9uQnV0dG9uIiwicGFzc1Rocm91Z2hQcm9wcyIsInBhc3NUaHJvdWdoIiwiY2hpbGRyZW4iLCJ1c2VVcGRhdGVkU3R5bGVzIiwidXNlRmxleGJveCIsInN0aWNreUhlYWRlckZvb3RlciIsInRpdGxlIiwiRnJhZ21lbnQiLCJjb250YWluZXIiLCJyZW5kZXJUaXRsZSIsImJvZHkiLCJvdmVyZmxvd1kiLCJoaWRlRm9vdGVyIiwiZm9vdGVyIiwianVzdGlmeUNvbnRlbnQiLCJmb290ZXJKdXN0aWZpY2F0aW9uIiwicmVuZGVyRm9vdGVyIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib25lT2YiLCJpc1JlcXVpcmVkIiwic3RyaW5nIiwiZGVmYXVsdFByb3BzIiwib25lT2ZUeXBlIiwiZWxlbWVudCIsIm5vZGUiLCJmdW5jIiwiYm9vbCIsImkxOG4iLCJkaWFsb2dPSyIsImRpYWxvZ0NhbmNlbCIsInBhZGRpbmciLCJjb25jYXQiLCJkYXJrX2NoYXJjb2FsIiwibWFyZ2luIiwiYm9yZGVyQ29sb3IiLCJsaWdodGVyX2dyYXkiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsIkdVVFRFUiIsImJveFNoYWRvdyIsImZsZXhTaHJpbmsiLCJvcmFuZ2UiLCJfY29uc3RhbnRzIiwiX3NldFByb3RvdHlwZU9mIiwic2V0UHJvdG90eXBlT2YiLCJfX3Byb3RvX18iLCJCYXNlRGlhbG9nIiwiZXhwb3J0cyIsIl9SZWFjdCRDb21wb25lbnQiLCJfdGhpcyIsIl9sZW4iLCJhcmdzIiwiQXJyYXkiLCJfa2V5IiwiZXZlbnQiLCJjbG9zZURpYWxvZyIsImhhbmRsZUtleURvd24iLCJ1bmNsb3NlYWJsZSIsInNvdW5kUGxheWVyIiwic3RvcEFsbEF1ZGlvIiwiX2luaGVyaXRzTG9vc2UiLCJjcmVhdGUiLCJfcHJvdG8iLCJjb21wb25lbnREaWRNb3VudCIsInRoaXMiLCJmb2N1c0RpYWxvZyIsImNvbXBvbmVudERpZFVwZGF0ZSIsImdldFRhYmJhYmxlRWxlbWVudHMiLCJzbGljZSIsInJlZnMiLCJkaWFsb2ciLCJxdWVyeVNlbGVjdG9yQWxsIiwiZGVzY2VuZGFudElzQWN0aXZlIiwiZG9jdW1lbnQiLCJhY3RpdmVFbGVtZW50IiwiY29udGFpbnMiLCJpc09wZW4iLCJmb2N1cyIsInJlbmRlciIsImhpZGVCYWNrZHJvcCIsImJvZHlTdHlsZSIsIm1vZGFsQm9keVN0eWxlIiwieENsb3NlU3R5bGUiLCJmdWxsV2lkdGgiLCJ3aWR0aCIsIm1hcmdpbkxlZnQiLCJmdWxsSGVpZ2h0IiwiaGVpZ2h0IiwiYm94U2l6aW5nIiwid3JhcHBlckNsYXNzTmFtZXMiLCJtb2RhbENsYXNzTmFtZXMiLCJtb2RhbEJvZHlDbGFzc05hbWVzIiwib3ZlcmZsb3dYIiwib3ZlcmZsb3ciLCJmaXhlZEhlaWdodCIsImJhY2tncm91bmQiLCJtYXhIZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJmbGV4RGlyZWN0aW9uIiwiZml4ZWRXaWR0aCIsIkJBU0VfRElBTE9HX1dJRFRIIiwibm9Nb2RhbFN0eWxlcyIsInBvc2l0aW9uIiwidG9wIiwiaW5zZXRJbmxpbmVFbmQiLCJuZXV0cmFsX2RhcmszMCIsImN1cnNvciIsImZvbnRTaXplIiwiYm9yZGVyIiwiYm9keUNsYXNzTmFtZSIsImpvaW4iLCJ0YWJJbmRleCIsInJlZiIsIm9uS2V5RG93biIsImlkIiwiYm9keUlkIiwiaGlkZUNsb3NlQnV0dG9uIiwiaWNvbiIsImJhY2tkcm9wU3R5bGUiLCJSZWFjdCIsIkNvbXBvbmVudCIsIm51bWJlciIsIm9iamVjdCIsIm1vZHVsZSIsImRlZmF1bHQiLCJfaTE4blN0cmluZ1RyYWNrZXIiLCJsb2NhbGUiLCJzYWZlTG9hZExvY2FsZSIsImxvY2FsZVdpdGhJMThuU3RyaW5nVHJhY2tlciIsImhhc093biIsImNsYXNzTmFtZXMiLCJjbGFzc2VzIiwiYXJnIiwiYXJnVHlwZSIsImlzQXJyYXkiLCJpbm5lciIsInRvU3RyaW5nIiwiY3NzV2l0aE1hcHBpbmdUb1N0cmluZyIsImxpc3QiLCJtYXAiLCJpdGVtIiwiY29udGVudCIsIm5lZWRMYXllciIsIm1vZHVsZXMiLCJtZWRpYSIsImRlZHVwZSIsInN1cHBvcnRzIiwibGF5ZXIiLCJhbHJlYWR5SW1wb3J0ZWRNb2R1bGVzIiwiayIsIl9rIiwiY3NzTWFwcGluZyIsImJ0b2EiLCJiYXNlNjQiLCJ1bmVzY2FwZSIsImVuY29kZVVSSUNvbXBvbmVudCIsIkpTT04iLCJzdHJpbmdpZnkiLCJkYXRhIiwic291cmNlTWFwcGluZyIsInNvdXJjZVVSTHMiLCJzb3VyY2VzIiwic291cmNlIiwic291cmNlUm9vdCIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0IiwiZW1wdHlGdW5jdGlvbiIsInNoaW0iLCJwcm9wTmFtZSIsImNvbXBvbmVudE5hbWUiLCJsb2NhdGlvbiIsInByb3BGdWxsTmFtZSIsInNlY3JldCIsImVyciIsIkVycm9yIiwibmFtZSIsImdldFNoaW0iLCJSZWFjdFByb3BUeXBlcyIsImFycmF5Iiwic3ltYm9sIiwiYW55IiwiYXJyYXlPZiIsImluc3RhbmNlT2YiLCJvYmplY3RPZiIsInNoYXBlIiwiZXhhY3QiLCJjaGVja1Byb3BUeXBlcyIsInN0eWxlc0luRE9NIiwiZ2V0SW5kZXhCeUlkZW50aWZpZXIiLCJpZGVudGlmaWVyIiwicmVzdWx0IiwibW9kdWxlc1RvRG9tIiwib3B0aW9ucyIsImlkQ291bnRNYXAiLCJpZGVudGlmaWVycyIsImJhc2UiLCJjb3VudCIsImluZGV4QnlJZGVudGlmaWVyIiwib2JqIiwiY3NzIiwic291cmNlTWFwIiwicmVmZXJlbmNlcyIsInVwZGF0ZXIiLCJhZGRFbGVtZW50U3R5bGUiLCJieUluZGV4Iiwic3BsaWNlIiwiYXBpIiwiZG9tQVBJIiwidXBkYXRlIiwibmV3T2JqIiwicmVtb3ZlIiwibGFzdElkZW50aWZpZXJzIiwibmV3TGlzdCIsImluZGV4IiwibmV3TGFzdElkZW50aWZpZXJzIiwiX2kiLCJfaW5kZXgiLCJtZW1vIiwiaW5zZXJ0QnlTZWxlY3RvciIsImluc2VydCIsInRhcmdldCIsImdldFRhcmdldCIsInN0eWxlVGFyZ2V0IiwicXVlcnlTZWxlY3RvciIsIndpbmRvdyIsIkhUTUxJRnJhbWVFbGVtZW50IiwiY29udGVudERvY3VtZW50IiwiaGVhZCIsImFwcGVuZENoaWxkIiwiaW5zZXJ0U3R5bGVFbGVtZW50Iiwic2V0QXR0cmlidXRlcyIsImF0dHJpYnV0ZXMiLCJzZXRBdHRyaWJ1dGVzV2l0aG91dEF0dHJpYnV0ZXMiLCJzdHlsZUVsZW1lbnQiLCJub25jZSIsInNldEF0dHJpYnV0ZSIsInN0eWxlVGFnVHJhbnNmb3JtIiwicmVtb3ZlU3R5bGVFbGVtZW50IiwicGFyZW50Tm9kZSIsInJlbW92ZUNoaWxkIiwic3R5bGVTaGVldCIsImNzc1RleHQiLCJmaXJzdENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiXSwic291cmNlUm9vdCI6IiJ9