mindstream-gravity-form
Version:
Mindstream Fork of Gravity Forms on React apps via the Wordpress API
2 lines • 37.4 kB
JavaScript
;function _typeof(a){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(a){return typeof a}:function(a){return a&&"function"==typeof Symbol&&a.constructor===Symbol&&a!==Symbol.prototype?"symbol":typeof a},_typeof(a)}Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=void 0;var _react=_interopRequireWildcard(require("react")),_reactDatepicker=_interopRequireDefault(require("react-datepicker"));function _interopRequireDefault(a){return a&&a.__esModule?a:{default:a}}function _getRequireWildcardCache(){if("function"!=typeof WeakMap)return null;var a=new WeakMap;return _getRequireWildcardCache=function(){return a},a}function _interopRequireWildcard(a){if(a&&a.__esModule)return a;if(null===a||"object"!==_typeof(a)&&"function"!=typeof a)return{default:a};var b=_getRequireWildcardCache();if(b&&b.has(a))return b.get(a);var c={},d=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var e in a)if(Object.prototype.hasOwnProperty.call(a,e)){var f=d?Object.getOwnPropertyDescriptor(a,e):null;f&&(f.get||f.set)?Object.defineProperty(c,e,f):c[e]=a[e]}return c["default"]=a,b&&b.set(a,c),c}function ownKeys(a,b){var c=Object.keys(a);if(Object.getOwnPropertySymbols){var d=Object.getOwnPropertySymbols(a);b&&(d=d.filter(function(b){return Object.getOwnPropertyDescriptor(a,b).enumerable})),c.push.apply(c,d)}return c}function _objectSpread(a){for(var b,c=1;c<arguments.length;c++)b=null==arguments[c]?{}:arguments[c],c%2?ownKeys(Object(b),!0).forEach(function(c){_defineProperty(a,c,b[c])}):Object.getOwnPropertyDescriptors?Object.defineProperties(a,Object.getOwnPropertyDescriptors(b)):ownKeys(Object(b)).forEach(function(c){Object.defineProperty(a,c,Object.getOwnPropertyDescriptor(b,c))});return a}function _defineProperty(a,b,c){return b in a?Object.defineProperty(a,b,{value:c,enumerable:!0,configurable:!0,writable:!0}):a[b]=c,a}function _extends(){return _extends=Object.assign||function(a){for(var b,c=1;c<arguments.length;c++)for(var d in b=arguments[c],b)Object.prototype.hasOwnProperty.call(b,d)&&(a[d]=b[d]);return a},_extends.apply(this,arguments)}function _slicedToArray(a,b){return _arrayWithHoles(a)||_iterableToArrayLimit(a,b)||_unsupportedIterableToArray(a,b)||_nonIterableRest()}function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(a,b){if(a){if("string"==typeof a)return _arrayLikeToArray(a,b);var c=Object.prototype.toString.call(a).slice(8,-1);return"Object"===c&&a.constructor&&(c=a.constructor.name),"Map"===c||"Set"===c?Array.from(a):"Arguments"===c||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?_arrayLikeToArray(a,b):void 0}}function _arrayLikeToArray(a,b){(null==b||b>a.length)&&(b=a.length);for(var c=0,d=Array(b);c<b;c++)d[c]=a[c];return d}function _iterableToArrayLimit(a,b){if("undefined"!=typeof Symbol&&Symbol.iterator in Object(a)){var c=[],d=!0,e=!1,f=void 0;try{for(var g,h=a[Symbol.iterator]();!(d=(g=h.next()).done)&&(c.push(g.value),!(b&&c.length===b));d=!0);}catch(a){e=!0,f=a}finally{try{d||null==h["return"]||h["return"]()}finally{if(e)throw f}}return c}}function _arrayWithHoles(a){if(Array.isArray(a))return a}function _objectWithoutProperties(a,b){if(null==a)return{};var c,d,e=_objectWithoutPropertiesLoose(a,b);if(Object.getOwnPropertySymbols){var f=Object.getOwnPropertySymbols(a);for(d=0;d<f.length;d++)c=f[d],!(0<=b.indexOf(c))&&Object.prototype.propertyIsEnumerable.call(a,c)&&(e[c]=a[c])}return e}function _objectWithoutPropertiesLoose(a,b){if(null==a)return{};var c,d,e={},f=Object.keys(a);for(d=0;d<f.length;d++)c=f[d],0<=b.indexOf(c)||(e[c]=a[c]);return e}var _default=function(a){var b=a.field,c=a.value,d=a.validationMessage,e=a.touched,f=a.setTouched,g=a.hideField,h=a.updateForm,i=a.styledComponents,j=a.error,k=a.unsetError,l=a.setFocusClass,m=a.cssClass,n=_objectWithoutProperties(a,["field","value","validationMessage","touched","setTouched","hideField","updateForm","styledComponents","error","unsetError","setFocusClass","cssClass"]),o=b.id,p=b.formId,q=b.type,r=b.label,s=b.placeholder,t=b.isRequired,u=b.maxLength,v=b.description,w=b.descriptionPlacement,x=b.labelPlacement,y=b.width,z=b.inputs,A=b.customName,B=b.dateType,C=b.dateFormat,D=b.defaultValue,E=b.datepickerOptions,F=i||!1,G=F.Input,H=void 0===G?"input":G,I=F.Label,J=void 0===I?"label":I,K=F.Box,L=void 0===K?"div":K,M=F.DatePicker,N=void 0===M?"div":M,O=F.ReactSelect,P=O||Select,Q=!!(C&&"dmy"===C)&&"dd/MM/yyyy",R=!!D&&new Date(D);if(Q&&D){var S=-1<D.indexOf("/"),T=S?D.split("/"):D.split("-"),U=S?new Date(+T[2],T[1]-1,+T[0]):T;R=U}var V=(0,_react.useState)(R),W=_slicedToArray(V,2),X=W[0],Y=W[1],Z=function getFormattedInputs(a){if(B){if("datefield"===B)return"dmy"===C||"dmy_dash"===C||"dmy_dot"===C?[a[1],a[0],a[2]]:"ymd_slash"===C||"ymd_dash"===C||"ymd_dot"===C?[a[2],a[0],a[1]]:a;if("datedropdown"===B)return[a[1],a[0],a[2]]}return a}(z),$=function adjustDatePickerOptions(a){if(B&&"datepicker"===B&&a){var b=Object.keys(a);if(b&&0<b.length)for(var c=0;c<b.length;c++)("minDate"===b[c]||"maxDate"===b[c])&&(a[b[c]]=new Date(a[b[c]]))}return a}(E)||{},_=function(a,b,c){for(var d=[],e=b<c?1:-1,f=b;f!=c+e;f+=e)d.push({value:f,label:f,selected:parseInt(f)===parseInt(a)});return d},aa=function(a,b,c){var d=X||[],e=0===c?2:2===c?0:1;d[e]=a.value,Y(d);var f={target:{value:a.value}};h(f,b)},ba=function(a){if(X){var b=0===a?2:1===a?1:0;return X[b]?{value:X[b],label:X[b]}:void 0}};return _react["default"].createElement(L,{width:y,className:d&&e||j?"form-field error ".concat(m):"form-field ".concat(m),style:{display:g?"none":void 0}},_react["default"].createElement(J,{htmlFor:"input_".concat(p,"_").concat(o),className:"gf-label ".concat(x)},r,t?_react["default"].createElement("abbr",null,"*"):null),_react["default"].createElement("div",{className:q},"above"===w&&v&&_react["default"].createElement("div",{className:"description"},v),B&&"datefield"!==B?"datepicker"===B?_react["default"].createElement(_react["default"].Fragment,null,_react["default"].createElement(N,{className:"ginput_container ginput_container_date"},_react["default"].createElement(_reactDatepicker["default"],_extends({name:"input_".concat(o),id:"input_".concat(p,"_").concat(o),type:"text",className:"datepicker hasDatepicker",selected:X,onChange:function onChange(a){Y(a),h({target:{value:a}},b),f(o),k(o),l(a)},onBlur:function onBlur(){h({target:{value:X}},b),f(o),k(o),l(X)},dateFormat:Q||void 0,onFocus:function onFocus(){return l(!0)},autoComplete:"off",required:t,placeholderText:s,maxDate:m.includes("past")&&new Date},$))),(d&&e||j)&&_react["default"].createElement("span",{className:"error-message",id:"error_".concat(p,"_").concat(o)},d||j)):_react["default"].createElement(_react["default"].Fragment,null,Z&&Z.map(function(a,c){return _react["default"].createElement("div",{key:a.id,className:"gfield_date_dropdown"},_react["default"].createElement(P,{required:t,placeholder:a.placeholder,options:0===c?_(1,1,31):1===c?_(3,1,12):_(0,1920,new Date().getFullYear()),value:ba(c),id:"input_".concat(p,"_").concat(o,"_").concat(c+1),name:A||"input_".concat(o,"[]"),onBlur:function onBlur(){var d=ba(c);if(!d){var e=_objectSpread(_objectSpread({},b),{},{subId:c,dateLabel:a.label});aa({value:""},e,c)}f(o),k(o),l(""!==a.value)},onChange:function onChange(d){var e=_objectSpread(_objectSpread({},b),{},{subId:c,dateLabel:a.label});aa(d,e,c),k(o)},onFocus:function onFocus(){return l(!0)}}))}),(d&&e||j)&&_react["default"].createElement("span",{className:"error-message",id:"error_".concat(p,"_").concat(o)},d||j)):_react["default"].createElement(_react["default"].Fragment,null,Z&&Z.map(function(a,c){return _react["default"].createElement("div",{className:q,key:a.id},_react["default"].createElement(H,{id:"input_".concat(p,"_").concat(o,"_").concat(c),type:"number",name:A||"input_".concat(o,"[]"),placeholder:a.placeholder,step:"1",min:"1",max:"MM"===a.label?12:"DD"===a.label?31:new Date().getFullYear()+1,maxLength:"YYYY"===a.label?4:2,value:a.value,onBlur:function onBlur(d){b.subId=c,b.dateLabel=a.label,h(d,b),f(o),k(o),l(""!==a.value)},onFocus:function onFocus(){return l(!0)}}),_react["default"].createElement("label",{htmlFor:"input_".concat(p,"_").concat(o,"_").concat(c),className:"hide-label"},a.label),d&&e&&d[c]&&c===d[c].index&&d[c].message&&_react["default"].createElement("span",{className:"error-message",id:"error_".concat(p,"_").concat(a.id)},d[c].message),j&&_react["default"].createElement("span",{className:"error-message"},j))})),"above"!==w&&v&&_react["default"].createElement("div",{className:"description"},v)))};exports["default"]=_default;
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9GaWVsZHMvRGF0ZS5qc3giXSwibmFtZXMiOlsiZmllbGQiLCJ2YWx1ZSIsInZhbGlkYXRpb25NZXNzYWdlIiwidG91Y2hlZCIsInNldFRvdWNoZWQiLCJoaWRlRmllbGQiLCJ1cGRhdGVGb3JtIiwic3R5bGVkQ29tcG9uZW50cyIsImVycm9yIiwidW5zZXRFcnJvciIsInNldEZvY3VzQ2xhc3MiLCJjc3NDbGFzcyIsInByb3BzIiwiaWQiLCJmb3JtSWQiLCJ0eXBlIiwibGFiZWwiLCJwbGFjZWhvbGRlciIsImlzUmVxdWlyZWQiLCJtYXhMZW5ndGgiLCJkZXNjcmlwdGlvbiIsImRlc2NyaXB0aW9uUGxhY2VtZW50IiwibGFiZWxQbGFjZW1lbnQiLCJ3aWR0aCIsImlucHV0cyIsImN1c3RvbU5hbWUiLCJkYXRlVHlwZSIsImRhdGVGb3JtYXQiLCJkZWZhdWx0VmFsdWUiLCJkYXRlcGlja2VyT3B0aW9ucyIsIklucHV0IiwiTGFiZWwiLCJCb3giLCJEYXRlUGlja2VyIiwiU2RhdGVQaWNrZXIiLCJSZWFjdFNlbGVjdCIsIlJTZWxlY3QiLCJTZWxlY3QiLCJmb3JtYXQiLCJzZWxlY3RlZFZhbHVlIiwiRGF0ZSIsInRtcEZvcm1hdCIsImluZGV4T2YiLCJkYXRlUGFydHMiLCJzcGxpdCIsImRhdGVPYmplY3QiLCJzdGFydERhdGUiLCJzZXREYXRlIiwiZm9ybWF0ZWRJbnB1dHMiLCJnZXRGb3JtYXR0ZWRJbnB1dHMiLCJpdGVtcyIsImRhdGVPcHRpb25zIiwiYWRqdXN0RGF0ZVBpY2tlck9wdGlvbnMiLCJvcHRpb25zIiwia2V5cyIsIk9iamVjdCIsImxlbmd0aCIsImkiLCJnZXRfbnVtYmVyX2Ryb3Bkb3duIiwic2VsZWN0ZWRfdmFsdWUiLCJzdGFydF9udW1iZXIiLCJlbmRfbnVtYmVyIiwiaW5jcmVtZW50IiwicHVzaCIsInNlbGVjdGVkIiwicGFyc2VJbnQiLCJoYW5kbGVDaGFuZ2UiLCJpbmRleCIsInRtcCIsImtleSIsImV2ZW50IiwidGFyZ2V0IiwiZ2V0VmFsdWVCeUluZGV4IiwiZGlzcGxheSIsImRhdGUiLCJpbmNsdWRlcyIsIm1hcCIsImlucHV0IiwiZ2V0RnVsbFllYXIiLCJ0bXBTdGF0ZSIsInN1YklkIiwiZGF0ZUxhYmVsIiwib3B0aW9uIiwiaXRlbSIsIm1lc3NhZ2UiXSwibWFwcGluZ3MiOiJ5dEhBR2UsV0FjVCxJQWJKQSxDQUFBQSxDQWFJLEdBYkpBLEtBYUksQ0FaSkMsQ0FZSSxHQVpKQSxLQVlJLENBWEpDLENBV0ksR0FYSkEsaUJBV0ksQ0FWSkMsQ0FVSSxHQVZKQSxPQVVJLENBVEpDLENBU0ksR0FUSkEsVUFTSSxDQVJKQyxDQVFJLEdBUkpBLFNBUUksQ0FQSkMsQ0FPSSxHQVBKQSxVQU9JLENBTkpDLENBTUksR0FOSkEsZ0JBTUksQ0FMSkMsQ0FLSSxHQUxKQSxLQUtJLENBSkpDLENBSUksR0FKSkEsVUFJSSxDQUhKQyxDQUdJLEdBSEpBLGFBR0ksQ0FGSkMsQ0FFSSxHQUZKQSxRQUVJLENBRERDLENBQ0Msc0xBRUZDLENBRkUsQ0FtQkFiLENBbkJBLENBRUZhLEVBRkUsQ0FHRkMsQ0FIRSxDQW1CQWQsQ0FuQkEsQ0FHRmMsTUFIRSxDQUlGQyxDQUpFLENBbUJBZixDQW5CQSxDQUlGZSxJQUpFLENBS0ZDLENBTEUsQ0FtQkFoQixDQW5CQSxDQUtGZ0IsS0FMRSxDQU1GQyxDQU5FLENBbUJBakIsQ0FuQkEsQ0FNRmlCLFdBTkUsQ0FPRkMsQ0FQRSxDQW1CQWxCLENBbkJBLENBT0ZrQixVQVBFLENBUUZDLENBUkUsQ0FtQkFuQixDQW5CQSxDQVFGbUIsU0FSRSxDQVNGQyxDQVRFLENBbUJBcEIsQ0FuQkEsQ0FTRm9CLFdBVEUsQ0FVRkMsQ0FWRSxDQW1CQXJCLENBbkJBLENBVUZxQixvQkFWRSxDQVdGQyxDQVhFLENBbUJBdEIsQ0FuQkEsQ0FXRnNCLGNBWEUsQ0FZRkMsQ0FaRSxDQW1CQXZCLENBbkJBLENBWUZ1QixLQVpFLENBYUZDLENBYkUsQ0FtQkF4QixDQW5CQSxDQWFGd0IsTUFiRSxDQWNGQyxDQWRFLENB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Z0IsQ0FBSSxDQUFDbkUsS0FKUixDQTNCRixDQWlDR2QsQ0FBaUIsRUFDaEJDLENBREQsRUFFQ0QsQ0FBaUIsQ0FBQ2lFLENBQUQsQ0FGbEIsRUFHQ0EsQ0FBSyxHQUFLakUsQ0FBaUIsQ0FBQ2lFLENBQUQsQ0FBakIsQ0FBeUJBLEtBSHBDLEVBSUNqRSxDQUFpQixDQUFDaUUsQ0FBRCxDQUFqQixDQUF5QmlCLE9BSjFCLEVBS0csd0NBQ0UsU0FBUyxDQUFDLGVBRFosQ0FFRSxFQUFFLGlCQUFXdEUsQ0FBWCxhQUFxQnFFLENBQUksQ0FBQ3RFLEVBQTFCLENBRkosRUFJR1gsQ0FBaUIsQ0FBQ2lFLENBQUQsQ0FBakIsQ0FBeUJpQixPQUo1QixDQXRDTixDQTZDRzVFLENBQUssRUFBSSx3Q0FBTSxTQUFTLENBQUMsZUFBaEIsRUFBaUNBLENBQWpDLENBN0NaLENBRGlCLENBQW5CLENBRkosQ0FqSEosQ0FzSzRCLE9BQXpCLEdBQUFhLENBQW9CLEVBQWdCRCxDQUFwQyxFQUNDLHVDQUFLLFNBQVMsQ0FBQyxhQUFmLEVBQThCQSxDQUE5QixDQXZLSixDQWhCRixDQTRMSCxDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZVN0YXRlIH0gZnJvbSBcInJlYWN0XCI7XHJcbmltcG9ydCBEYXRlUGlja2VyIGZyb20gXCJyZWFjdC1kYXRlcGlja2VyXCI7XHJcblxyXG5leHBvcnQgZGVmYXVsdCAoe1xyXG4gIGZpZWxkLFxyXG4gIHZhbHVlLFxyXG4gIHZhbGlkYXRpb25NZXNzYWdlLFxyXG4gIHRvdWNoZWQsXHJcbiAgc2V0VG91Y2hlZCxcclxuICBoaWRlRmllbGQsXHJcbiAgdXBkYXRlRm9ybSxcclxuICBzdHlsZWRDb21wb25lbnRzLFxyXG4gIGVycm9yLFxyXG4gIHVuc2V0RXJyb3IsXHJcbiAgc2V0Rm9jdXNDbGFzcyxcclxuICBjc3NDbGFzcyxcclxuICAuLi5wcm9wc1xyXG59KSA9PiB7XHJcbiAgY29uc3Qge1xyXG4gICAgaWQsXHJcbiAgICBmb3JtSWQsXHJcbiAgICB0eXBlLFxyXG4gICAgbGFiZWwsXHJcbiAgICBwbGFjZWhvbGRlcixcclxuICAgIGlzUmVxdWlyZWQsXHJcbiAgICBtYXhMZW5ndGgsXHJcbiAgICBkZXNjcmlwdGlvbixcclxuICAgIGRlc2NyaXB0aW9uUGxhY2VtZW50LFxyXG4gICAgbGFiZWxQbGFjZW1lbnQsXHJcbiAgICB3aWR0aCxcclxuICAgIGlucHV0cyxcclxuICAgIGN1c3RvbU5hbWUsXHJcbiAgICBkYXRlVHlwZSxcclxuICAgIGRhdGVGb3JtYXQsXHJcbiAgICBkZWZhdWx0VmFsdWUsXHJcbiAgICBkYXRlcGlja2VyT3B0aW9ucyxcclxuICB9ID0gZmllbGQ7XHJcblxyXG4gIGNvbnN0IHtcclxuICAgIElucHV0ID0gXCJpbnB1dFwiLFxyXG4gICAgTGFiZWwgPSBcImxhYmVsXCIsXHJcbiAgICBCb3ggPSBcImRpdlwiLFxyXG4gICAgRGF0ZVBpY2tlcjogU2RhdGVQaWNrZXIgPSBcImRpdlwiLFxyXG4gICAgUmVhY3RTZWxlY3QsXHJcbiAgfSA9IHN0eWxlZENvbXBvbmVudHMgfHwgZmFsc2U7XHJcblxyXG4gIGNvbnN0IFJTZWxlY3QgPSBSZWFjdFNlbGVjdCB8fCBTZWxlY3Q7XHJcblxyXG4gIC8vIGNvbnZlciBkYXRlIGZvcm1hdFxyXG4gIGNvbnN0IGZvcm1hdCA9IGRhdGVGb3JtYXQgJiYgZGF0ZUZvcm1hdCA9PT0gXCJkbXlcIiA/IFwiZGQvTU0veXl5eVwiIDogZmFsc2U7XHJcblxyXG4gIGxldCBzZWxlY3RlZFZhbHVlID0gZGVmYXVsdFZhbHVlID8gbmV3IERhdGUoZGVmYXVsdFZhbHVlKSA6IGZhbHNlO1xyXG4gIGlmIChmb3JtYXQgJiYgZGVmYXVsdFZhbHVlKSB7XHJcbiAgICBjb25zdCB0bXBGb3JtYXQgPSBkZWZhdWx0VmFsdWUuaW5kZXhPZihcIi9cIikgPiAtMTtcclxuICAgIGNvbnN0IGRhdGVQYXJ0cyA9IHRtcEZvcm1hdFxyXG4gICAgICA/IGRlZmF1bHRWYWx1ZS5zcGxpdChcIi9cIilcclxuICAgICAgOiBkZWZhdWx0VmFsdWUuc3BsaXQoXCItXCIpO1xyXG5cclxuICAgIGNvbnN0IGRhdGVPYmplY3QgPSB0bXBGb3JtYXRcclxuICAgICAgPyBuZXcgRGF0ZSgrZGF0ZVBhcnRzWzJdLCBkYXRlUGFydHNbMV0gLSAxLCArZGF0ZVBhcnRzWzBdKVxyXG4gICAgICA6IGRhdGVQYXJ0cztcclxuXHJcbiAgICBzZWxlY3RlZFZhbHVlID0gZGF0ZU9iamVjdDtcclxuICB9XHJcblxyXG4gIGNvbnN0IFtzdGFydERhdGUsIHNldERhdGVdID0gdXNlU3RhdGUoc2VsZWN0ZWRWYWx1ZSk7XHJcblxyXG4gIGNvbnN0IGdldEZvcm1hdHRlZElucHV0cyA9IChpdGVtcykgPT4ge1xyXG4gICAgaWYgKGRhdGVUeXBlKSB7XHJcbiAgICAgIGlmIChkYXRlVHlwZSA9PT0gXCJkYXRlZmllbGRcIikge1xyXG4gICAgICAgIC8vIDAgLSBNTVxyXG4gICAgICAgIC8vIDEgLSBERFxyXG4gICAgICAgIC8vIDIgLSBZWVlZXHJcbiAgICAgICAgc3dpdGNoIChkYXRlRm9ybWF0KSB7XHJcbiAgICAgICAgICBjYXNlIFwiZG15XCI6XHJcbiAgICAgICAgICBjYXNlIFwiZG15X2Rhc2hcIjpcclxuICAgICAgICAgIGNhc2UgXCJkbXlfZG90XCI6XHJcbiAgICAgICAgICAgIHJldHVybiBbaXRlbXNbMV0sIGl0ZW1zWzBdLCBpdGVtc1syXV07XHJcbiAgICAgICAgICBjYXNlIFwieW1kX3NsYXNoXCI6XHJcbiAgICAgICAgICBjYXNlIFwieW1kX2Rhc2hcIjpcclxuICAgICAgICAgIGNhc2UgXCJ5bWRfZG90XCI6XHJcbiAgICAgICAgICAgIHJldHVybiBbaXRlbXNbMl0sIGl0ZW1zWzBdLCBpdGVtc1sxXV07XHJcbiAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2UgaWYgKGRhdGVUeXBlID09PSBcImRhdGVkcm9wZG93blwiKSB7XHJcbiAgICAgICAgcmV0dXJuIFtpdGVtc1sxXSwgaXRlbXNbMF0sIGl0ZW1zWzJdXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW1zO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGZvcm1hdGVkSW5wdXRzID0gZ2V0Rm9ybWF0dGVkSW5wdXRzKGlucHV0cyk7XHJcblxyXG4gIGNvbnN0IGFkanVzdERhdGVQaWNrZXJPcHRpb25zID0gKG9wdGlvbnMpID0+IHtcclxuICAgIGlmIChkYXRlVHlwZSAmJiBkYXRlVHlwZSA9PT0gXCJkYXRlcGlja2VyXCIgJiYgb3B0aW9ucykge1xyXG4gICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXMob3B0aW9ucyk7XHJcbiAgICAgIGlmIChrZXlzICYmIGtleXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgaWYgKGtleXNbaV0gPT09IFwibWluRGF0ZVwiIHx8IGtleXNbaV0gPT09IFwibWF4RGF0ZVwiKSB7XHJcbiAgICAgICAgICAgIG9wdGlvbnNba2V5c1tpXV0gPSBuZXcgRGF0ZShvcHRpb25zW2tleXNbaV1dKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBvcHRpb25zO1xyXG4gIH07XHJcbiAgY29uc3QgZGF0ZU9wdGlvbnMgPSBhZGp1c3REYXRlUGlja2VyT3B0aW9ucyhkYXRlcGlja2VyT3B0aW9ucykgfHwge307XHJcblxyXG4gIGNvbnN0IGdldF9udW1iZXJfZHJvcGRvd24gPSAoc2VsZWN0ZWRfdmFsdWUsIHN0YXJ0X251bWJlciwgZW5kX251bWJlcikgPT4ge1xyXG4gICAgY29uc3Qgb3B0aW9ucyA9IFtdO1xyXG4gICAgY29uc3QgaW5jcmVtZW50ID0gc3RhcnRfbnVtYmVyIDwgZW5kX251bWJlciA/IDEgOiAtMTtcclxuICAgIGZvciAobGV0IGkgPSBzdGFydF9udW1iZXI7IGkgIT0gZW5kX251bWJlciArIGluY3JlbWVudDsgaSArPSBpbmNyZW1lbnQpIHtcclxuICAgICAgb3B0aW9ucy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaSxcclxuICAgICAgICBzZWxlY3RlZDogcGFyc2VJbnQoaSkgPT09IHBhcnNlSW50KHNlbGVjdGVkX3ZhbHVlKSxcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gb3B0aW9ucztcclxuICB9O1xyXG5cclxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAodmFsdWUsIGZpZWxkLCBpbmRleCkgPT4ge1xyXG4gICAgY29uc3QgdG1wID0gc3RhcnREYXRlIHx8IFtdO1xyXG4gICAgY29uc3Qga2V5ID0gaW5kZXggPT09IDAgPyAyIDogaW5kZXggPT09IDIgPyAwIDogMTtcclxuICAgIHRtcFtrZXldID0gdmFsdWUudmFsdWU7XHJcblxyXG4gICAgc2V0RGF0ZSh0bXApO1xyXG5cclxuICAgIGNvbnN0IGV2ZW50ID0ge1xyXG4gICAgICB0YXJnZXQ6IHtcclxuICAgICAgICB2YWx1ZTogdmFsdWUudmFsdWUsXHJcbiAgICAgIH0sXHJcbiAgICB9O1xyXG4gICAgdXBkYXRlRm9ybShldmVudCwgZmllbGQpO1xyXG4gIH07XHJcblxyXG4gIGNvbnN0IGdldFZhbHVlQnlJbmRleCA9IChpbmRleCkgPT4ge1xyXG4gICAgaWYgKCFzdGFydERhdGUpIHJldHVybjtcclxuXHJcbiAgICBjb25zdCBpID0gaW5kZXggPT09IDAgPyAyIDogaW5kZXggPT09IDEgPyAxIDogMDtcclxuXHJcbiAgICByZXR1cm4gc3RhcnREYXRlW2ldXHJcbiAgICAgID8geyB2YWx1ZTogc3RhcnREYXRlW2ldLCBsYWJlbDogc3RhcnREYXRlW2ldIH1cclxuICAgICAgOiB1bmRlZmluZWQ7XHJcblxyXG4gICAgLy8gaW5kZXggPT09IDAgJiYgc3RhcnREYXRlWycyJ11cclxuICAgIC8vICAgPyB7IHZhbHVlOiBzdGFydERhdGVbJzInXSwgbGFiZWw6IHN0YXJ0RGF0ZVsnMiddIH1cclxuICAgIC8vICAgOiBpbmRleCA9PT0gMSAmJiBzdGFydERhdGVbJzEnXVxyXG4gICAgLy8gICA/IHsgdmFsdWU6IHN0YXJ0RGF0ZVsnMSddLCBsYWJlbDogc3RhcnREYXRlWycxJ10gfVxyXG4gICAgLy8gICA6IHN0YXJ0RGF0ZVsnMCddXHJcbiAgICAvLyAgID8geyB2YWx1ZTogc3RhcnREYXRlWycwJ10sIGxhYmVsOiBzdGFydERhdGVbJzAnXSB9XHJcbiAgICAvLyAgIDogdW5kZWZpbmVkO1xyXG4gIH07XHJcblxyXG4gIHJldHVybiAoXHJcbiAgICA8Qm94XHJcbiAgICAgIHdpZHRoPXt3aWR0aH1cclxuICAgICAgY2xhc3NOYW1lPXtcclxuICAgICAgICAodmFsaWRhdGlvbk1lc3NhZ2UgJiYgdG91Y2hlZCkgfHwgZXJyb3JcclxuICAgICAgICAgID8gYGZvcm0tZmllbGQgZXJyb3IgJHtjc3NDbGFzc31gXHJcbiAgICAgICAgICA6IGBmb3JtLWZpZWxkICR7Y3NzQ2xhc3N9YFxyXG4gICAgICB9XHJcbiAgICAgIHN0eWxlPXt7IGRpc3BsYXk6IGhpZGVGaWVsZCA/IFwibm9uZVwiIDogdW5kZWZpbmVkIH19XHJcbiAgICA+XHJcbiAgICAgIDxMYWJlbFxyXG4gICAgICAgIGh0bWxGb3I9e2BpbnB1dF8ke2Zvcm1JZH1fJHtpZH1gfVxyXG4gICAgICAgIGNsYXNzTmFtZT17YGdmLWxhYmVsICR7bGFiZWxQbGFjZW1lbnR9YH1cclxuICAgICAgPlxyXG4gICAgICAgIHtsYWJlbH1cclxuICAgICAgICB7aXNSZXF1aXJlZCA/IDxhYmJyPio8L2FiYnI+IDogbnVsbH1cclxuICAgICAgPC9MYWJlbD5cclxuICAgICAgPGRpdiBjbGFzc05hbWU9e3R5cGV9PlxyXG4gICAgICAgIHtkZXNjcmlwdGlvblBsYWNlbWVudCA9PT0gXCJhYm92ZVwiICYmIGRlc2NyaXB0aW9uICYmIChcclxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGVzY3JpcHRpb25cIj57ZGVzY3JpcHRpb259PC9kaXY+XHJcbiAgICAgICAgKX1cclxuICAgICAgICB7ZGF0ZVR5cGUgJiYgZGF0ZVR5cGUgIT09IFwiZGF0ZWZpZWxkXCIgPyAoXHJcbiAgICAgICAgICBkYXRlVHlwZSA9PT0gXCJkYXRlcGlja2VyXCIgPyAoXHJcbiAgICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgICAgPFNkYXRlUGlja2VyIGNsYXNzTmFtZT1cImdpbnB1dF9jb250YWluZXIgZ2lucHV0X2NvbnRhaW5lcl9kYXRlXCI+XHJcbiAgICAgICAgICAgICAgICA8RGF0ZVBpY2tlclxyXG4gICAgICAgICAgICAgICAgICBuYW1lPXtgaW5wdXRfJHtpZH1gfVxyXG4gICAgICAgICAgICAgICAgICBpZD17YGlucHV0XyR7Zm9ybUlkfV8ke2lkfWB9XHJcbiAgICAgICAgICAgICAgICAgIHR5cGU9XCJ0ZXh0XCJcclxuICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiZGF0ZXBpY2tlciBoYXNEYXRlcGlja2VyXCJcclxuICAgICAgICAgICAgICAgICAgc2VsZWN0ZWQ9e3N0YXJ0RGF0ZX1cclxuICAgICAgICAgICAgICAgICAgb25DaGFuZ2U9eyhkYXRlKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0RGF0ZShkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgICB1cGRhdGVGb3JtKFxyXG4gICAgICAgICAgICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZTogZGF0ZSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZFxyXG4gICAgICAgICAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0VG91Y2hlZChpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5zZXRFcnJvcihpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgc2V0Rm9jdXNDbGFzcyhkYXRlKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgb25CbHVyPXsoZSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZvcm0oXHJcbiAgICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldDoge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBzdGFydERhdGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgICAgICAgZmllbGRcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldFRvdWNoZWQoaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHVuc2V0RXJyb3IoaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNldEZvY3VzQ2xhc3Moc3RhcnREYXRlKTtcclxuICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgZGF0ZUZvcm1hdD17Zm9ybWF0IHx8IHVuZGVmaW5lZH1cclxuICAgICAgICAgICAgICAgICAgb25Gb2N1cz17KCkgPT4gc2V0Rm9jdXNDbGFzcyh0cnVlKX1cclxuICAgICAgICAgICAgICAgICAgYXV0b0NvbXBsZXRlPVwib2ZmXCJcclxuICAgICAgICAgICAgICAgICAgcmVxdWlyZWQ9e2lzUmVxdWlyZWR9XHJcbiAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyVGV4dD17cGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICAgICAgICAgIG1heERhdGU9e2Nzc0NsYXNzLmluY2x1ZGVzKFwicGFzdFwiKSAmJiBuZXcgRGF0ZSgpfVxyXG4gICAgICAgICAgICAgICAgICB7Li4uZGF0ZU9wdGlvbnN9XHJcbiAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIDwvU2RhdGVQaWNrZXI+XHJcbiAgICAgICAgICAgICAgeygodmFsaWRhdGlvbk1lc3NhZ2UgJiYgdG91Y2hlZCkgfHwgZXJyb3IpICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIiBpZD17YGVycm9yXyR7Zm9ybUlkfV8ke2lkfWB9PlxyXG4gICAgICAgICAgICAgICAgICB7dmFsaWRhdGlvbk1lc3NhZ2UgfHwgZXJyb3J9XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICApIDogKFxyXG4gICAgICAgICAgICA8PlxyXG4gICAgICAgICAgICAgIHtmb3JtYXRlZElucHV0cyAmJlxyXG4gICAgICAgICAgICAgICAgZm9ybWF0ZWRJbnB1dHMubWFwKChpbnB1dCwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgICAgPGRpdiBrZXk9e2lucHV0LmlkfSBjbGFzc05hbWU9XCJnZmllbGRfZGF0ZV9kcm9wZG93blwiPlxyXG4gICAgICAgICAgICAgICAgICAgIDxSU2VsZWN0XHJcbiAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZD17aXNSZXF1aXJlZH1cclxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtpbnB1dC5wbGFjZWhvbGRlcn1cclxuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnM9e1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpbmRleCA9PT0gMFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgID8gZ2V0X251bWJlcl9kcm9wZG93bigxLCAxLCAzMSlcclxuICAgICAgICAgICAgICAgICAgICAgICAgICA6IGluZGV4ID09PSAxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPyBnZXRfbnVtYmVyX2Ryb3Bkb3duKDMsIDEsIDEyKVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIDogZ2V0X251bWJlcl9kcm9wZG93bihcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTkyMCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z2V0VmFsdWVCeUluZGV4KGluZGV4KX1cclxuICAgICAgICAgICAgICAgICAgICAgIGlkPXtgaW5wdXRfJHtmb3JtSWR9XyR7aWR9XyR7aW5kZXggKyAxfWB9XHJcbiAgICAgICAgICAgICAgICAgICAgICBuYW1lPXtjdXN0b21OYW1lIHx8IGBpbnB1dF8ke2lkfVtdYH1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQmx1cj17KGV2ZW50KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gZ2V0VmFsdWVCeUluZGV4KGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFN0YXRlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uZmllbGQsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJJZDogaW5kZXgsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlTGFiZWw6IGlucHV0LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2hhbmdlKHsgdmFsdWU6IFwiXCIgfSwgdG1wU3RhdGUsIGluZGV4KTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBzZXRUb3VjaGVkKGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5zZXRFcnJvcihpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldEZvY3VzQ2xhc3MoaW5wdXQudmFsdWUgIT09IFwiXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsob3B0aW9uKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHRtcFN0YXRlID0ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIC4uLmZpZWxkLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHN1YklkOiBpbmRleCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlTGFiZWw6IGlucHV0LmxhYmVsLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDaGFuZ2Uob3B0aW9uLCB0bXBTdGF0ZSwgaW5kZXgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bnNldEVycm9yKGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIH19XHJcbiAgICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRGb2N1c0NsYXNzKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAgIC8+XHJcbiAgICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgKSl9XHJcbiAgICAgICAgICAgICAgeygodmFsaWRhdGlvbk1lc3NhZ2UgJiYgdG91Y2hlZCkgfHwgZXJyb3IpICYmIChcclxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIiBpZD17YGVycm9yXyR7Zm9ybUlkfV8ke2lkfWB9PlxyXG4gICAgICAgICAgICAgICAgICB7dmFsaWRhdGlvbk1lc3NhZ2UgfHwgZXJyb3J9XHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgKX1cclxuICAgICAgICAgICAgPC8+XHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKSA6IChcclxuICAgICAgICAgIDw+XHJcbiAgICAgICAgICAgIHtmb3JtYXRlZElucHV0cyAmJlxyXG4gICAgICAgICAgICAgIGZvcm1hdGVkSW5wdXRzLm1hcCgoaXRlbSwgaW5kZXgpID0+IChcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXt0eXBlfSBrZXk9e2l0ZW0uaWR9PlxyXG4gICAgICAgICAgICAgICAgICA8SW5wdXRcclxuICAgICAgICAgICAgICAgICAgICBpZD17YGlucHV0XyR7Zm9ybUlkfV8ke2lkfV8ke2luZGV4fWB9XHJcbiAgICAgICAgICAgICAgICAgICAgdHlwZT1cIm51bWJlclwiXHJcbiAgICAgICAgICAgICAgICAgICAgbmFtZT17Y3VzdG9tTmFtZSB8fCBgaW5wdXRfJHtpZH1bXWB9XHJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e2l0ZW0ucGxhY2Vob2xkZXJ9XHJcbiAgICAgICAgICAgICAgICAgICAgc3RlcD1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1pbj1cIjFcIlxyXG4gICAgICAgICAgICAgICAgICAgIG1heD17XHJcbiAgICAgICAgICAgICAgICAgICAgICBpdGVtLmxhYmVsID09PSBcIk1NXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgPyAxMlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA6IGl0ZW0ubGFiZWwgPT09IFwiRERcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICA/IDMxXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbmV3IERhdGUoKS5nZXRGdWxsWWVhcigpICsgMVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICBtYXhMZW5ndGg9e2l0ZW0ubGFiZWwgPT09IFwiWVlZWVwiID8gNCA6IDJ9XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2l0ZW0udmFsdWV9XHJcbiAgICAgICAgICAgICAgICAgICAgb25CbHVyPXsoZXZlbnQpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgIGZpZWxkLnN1YklkID0gaW5kZXg7XHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWVsZC5kYXRlTGFiZWwgPSBpdGVtLmxhYmVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRm9ybShldmVudCwgZmllbGQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgc2V0VG91Y2hlZChpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB1bnNldEVycm9yKGlkKTtcclxuICAgICAgICAgICAgICAgICAgICAgIHNldEZvY3VzQ2xhc3MoaXRlbS52YWx1ZSAhPT0gXCJcIik7XHJcbiAgICAgICAgICAgICAgICAgICAgfX1cclxuICAgICAgICAgICAgICAgICAgICBvbkZvY3VzPXsoKSA9PiBzZXRGb2N1c0NsYXNzKHRydWUpfVxyXG4gICAgICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgICAgICA8bGFiZWxcclxuICAgICAgICAgICAgICAgICAgICBodG1sRm9yPXtgaW5wdXRfJHtmb3JtSWR9XyR7aWR9XyR7aW5kZXh9YH1cclxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoaWRlLWxhYmVsXCJcclxuICAgICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICAgIHtpdGVtLmxhYmVsfVxyXG4gICAgICAgICAgICAgICAgICA8L2xhYmVsPlxyXG4gICAgICAgICAgICAgICAgICB7dmFsaWRhdGlvbk1lc3NhZ2UgJiZcclxuICAgICAgICAgICAgICAgICAgICB0b3VjaGVkICYmXHJcbiAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGlvbk1lc3NhZ2VbaW5kZXhdICYmXHJcbiAgICAgICAgICAgICAgICAgICAgaW5kZXggPT09IHZhbGlkYXRpb25NZXNzYWdlW2luZGV4XS5pbmRleCAmJlxyXG4gICAgICAgICAgICAgICAgICAgIHZhbGlkYXRpb25NZXNzYWdlW2luZGV4XS5tZXNzYWdlICYmIChcclxuICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImVycm9yLW1lc3NhZ2VcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZD17YGVycm9yXyR7Zm9ybUlkfV8ke2l0ZW0uaWR9YH1cclxuICAgICAgICAgICAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICAgICAgICAgICAge3ZhbGlkYXRpb25NZXNzYWdlW2luZGV4XS5tZXNzYWdlfVxyXG4gICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgICAgICAgICl9XHJcbiAgICAgICAgICAgICAgICAgIHtlcnJvciAmJiA8c3BhbiBjbGFzc05hbWU9XCJlcnJvci1tZXNzYWdlXCI+e2Vycm9yfTwvc3Bhbj59XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICApKX1cclxuICAgICAgICAgIDwvPlxyXG4gICAgICAgICl9XHJcbiAgICAgICAge2Rlc2NyaXB0aW9uUGxhY2VtZW50ICE9PSBcImFib3ZlXCIgJiYgZGVzY3JpcHRpb24gJiYgKFxyXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJkZXNjcmlwdGlvblwiPntkZXNjcmlwdGlvbn08L2Rpdj5cclxuICAgICAgICApfVxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvQm94PlxyXG4gICk7XHJcbn07XHJcbiJdfQ==