@preply/ds-docs 0.4.3-beta.32
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/README.md +92 -0
- package/config/main.js +23 -0
- package/config/manager-head.html +1 -0
- package/config/manager.js +16 -0
- package/config/packages.js +21 -0
- package/config/preview-head.html +1 -0
- package/config/preview.js +16 -0
- package/config/webpack.config.js +97 -0
- package/dist/0.338f6ec8c298c14e9987.manager.bundle.js +1 -0
- package/dist/0.3fa9c511.iframe.bundle.js +1 -0
- package/dist/10.cbab8b16.iframe.bundle.js +1 -0
- package/dist/11.eb6590ee.iframe.bundle.js +1 -0
- package/dist/12.14fcbdc9.iframe.bundle.js +1 -0
- package/dist/4.ca91571aa289a44fd646.manager.bundle.js +2 -0
- package/dist/4.ca91571aa289a44fd646.manager.bundle.js.LICENSE.txt +8 -0
- package/dist/5.09384b194ae4afd5b83d.manager.bundle.js +1 -0
- package/dist/6.32fc62c8a6ce2df04956.manager.bundle.js +2 -0
- package/dist/6.32fc62c8a6ce2df04956.manager.bundle.js.LICENSE.txt +12 -0
- package/dist/7.caafbbb780553290f515.manager.bundle.js +1 -0
- package/dist/8.66293b7ba6e3ca90f9ef.manager.bundle.js +1 -0
- package/dist/9.50d8be07.iframe.bundle.js +1 -0
- package/dist/docs-pages/docs/pages/00.welcome/static/andre.jpg +0 -0
- package/dist/docs-pages/docs/pages/00.welcome/static/designers.svg +5 -0
- package/dist/docs-pages/docs/pages/00.welcome/static/developers.svg +5 -0
- package/dist/docs-pages/docs/pages/00.welcome/static/header.png +0 -0
- package/dist/docs-pages/docs/pages/00.welcome/static/vadim.jpg +0 -0
- package/dist/docs-pages/docs/pages/04.contributing/static/flowchart.png +0 -0
- package/dist/favicon.ico +0 -0
- package/dist/global/docs/static/favicon.svg +4 -0
- package/dist/global/docs/static/logo.svg +1 -0
- package/dist/iframe.html +138 -0
- package/dist/index.html +55 -0
- package/dist/main.515f4f3f1dbf7ce958bc.manager.bundle.js +1 -0
- package/dist/main~493df0b3.c053cefd.iframe.bundle.js +1 -0
- package/dist/runtime~main.b422f1cd6ad7b4837a59.manager.bundle.js +1 -0
- package/dist/runtime~main.b9288cbc.iframe.bundle.js +1 -0
- package/dist/vendors~main.a298dbf4b4228db7a7c0.manager.bundle.js +2 -0
- package/dist/vendors~main.a298dbf4b4228db7a7c0.manager.bundle.js.LICENSE.txt +82 -0
- package/dist/vendors~main~253ae210.2cd1feec.iframe.bundle.js +1 -0
- package/dist/vendors~main~4134d62c.806278b4.iframe.bundle.js +1 -0
- package/dist/vendors~main~678f84af.83492059.iframe.bundle.js +1 -0
- package/dist/vendors~main~a353122d.312fbc2d.iframe.bundle.js +1 -0
- package/dist/vendors~main~bdc480fb.2ad5d7bf.iframe.bundle.js +1 -0
- package/dist/vendors~main~d88e64ba.a117b568.iframe.bundle.js +1 -0
- package/dist/web-lib/src/components/Avatar/docs/static/avatar.png +0 -0
- package/docs/static/favicon.svg +4 -0
- package/docs/static/logo.svg +1 -0
- package/package.json +47 -0
- package/scripts/copy-metadata-and-assets.js +87 -0
- package/scripts/copy-statics.js +10 -0
- package/tsconfig.json +3 -0
- package/utils/globs.js +16 -0
- package/utils/statics.js +30 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
(window.webpackJsonp=window.webpackJsonp||[]).push([[10],{1007:function(module,__webpack_exports__,__webpack_require__){"use strict";eval('// ESM COMPAT FLAG\n__webpack_require__.r(__webpack_exports__);\n\n// EXPORTS\n__webpack_require__.d(__webpack_exports__, "ColorControl", function() { return /* binding */ Color_ColorControl; });\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.object.keys.js\nvar es_object_keys = __webpack_require__(18);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.symbol.js\nvar es_symbol = __webpack_require__(4);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.symbol.description.js\nvar es_symbol_description = __webpack_require__(11);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.object.to-string.js\nvar es_object_to_string = __webpack_require__(12);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.symbol.iterator.js\nvar es_symbol_iterator = __webpack_require__(19);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.string.iterator.js\nvar es_string_iterator = __webpack_require__(15);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.iterator.js\nvar es_array_iterator = __webpack_require__(13);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/web.dom-collections.iterator.js\nvar web_dom_collections_iterator = __webpack_require__(14);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.from.js\nvar es_array_from = __webpack_require__(22);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.concat.js\nvar es_array_concat = __webpack_require__(21);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.object.assign.js\nvar es_object_assign = __webpack_require__(8);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.object.values.js\nvar es_object_values = __webpack_require__(129);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.string.match.js\nvar es_string_match = __webpack_require__(116);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.regexp.exec.js\nvar es_regexp_exec = __webpack_require__(30);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.map.js\nvar es_array_map = __webpack_require__(24);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.number.constructor.js\nvar es_number_constructor = __webpack_require__(153);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.string.replace.js\nvar es_string_replace = __webpack_require__(47);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.string.starts-with.js\nvar es_string_starts_with = __webpack_require__(152);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.string.split.js\nvar es_string_split = __webpack_require__(67);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.slice.js\nvar es_array_slice = __webpack_require__(9);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.array.filter.js\nvar es_array_filter = __webpack_require__(51);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/core-js/modules/es.function.name.js\nvar es_function_name = __webpack_require__(7);\n\n// EXTERNAL MODULE: ./node_modules/react/index.js\nvar react = __webpack_require__(1);\nvar react_default = /*#__PURE__*/__webpack_require__.n(react);\n\n// CONCATENATED MODULE: ./node_modules/react-colorful/dist/index.module.js\nfunction index_module_u(){return(index_module_u=Object.assign||function(e){for(var r=1;r<arguments.length;r++){var t=arguments[r];for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])}return e}).apply(this,arguments)}function index_module_c(e,r){if(null==e)return{};var t,n,o={},a=Object.keys(e);for(n=0;n<a.length;n++)r.indexOf(t=a[n])>=0||(o[t]=e[t]);return o}function index_module_i(e){var t=Object(react["useRef"])(e),n=Object(react["useRef"])(function(e){t.current&&t.current(e)});return t.current=e,n.current}var index_module_s=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=1),e>t?t:e<r?r:e},index_module_f=function(e){return"touches"in e},index_module_v=function(e){return e&&e.ownerDocument.defaultView||self},index_module_d=function(e,r,t){var n=e.getBoundingClientRect(),o=index_module_f(r)?function(e,r){for(var t=0;t<e.length;t++)if(e[t].identifier===r)return e[t];return e[0]}(r.touches,t):r;return{left:index_module_s((o.pageX-(n.left+index_module_v(e).pageXOffset))/n.width),top:index_module_s((o.pageY-(n.top+index_module_v(e).pageYOffset))/n.height)}},index_module_h=function(e){!index_module_f(e)&&e.preventDefault()},index_module_m=react_default.a.memo(function(o){var a=o.onMove,l=o.onKey,s=index_module_c(o,["onMove","onKey"]),m=Object(react["useRef"])(null),g=index_module_i(a),p=index_module_i(l),b=Object(react["useRef"])(null),_=Object(react["useRef"])(!1),x=Object(react["useMemo"])(function(){var e=function(e){index_module_h(e),(index_module_f(e)?e.touches.length>0:e.buttons>0)&&m.current?g(index_module_d(m.current,e,b.current)):t(!1)},r=function(){return t(!1)};function t(t){var n=_.current,o=index_module_v(m.current),a=t?o.addEventListener:o.removeEventListener;a(n?"touchmove":"mousemove",e),a(n?"touchend":"mouseup",r)}return[function(e){var r=e.nativeEvent,n=m.current;if(n&&(index_module_h(r),!function(e,r){return r&&!index_module_f(e)}(r,_.current)&&n)){if(index_module_f(r)){_.current=!0;var o=r.changedTouches||[];o.length&&(b.current=o[0].identifier)}n.focus(),g(index_module_d(n,r,b.current)),t(!0)}},function(e){var r=e.which||e.keyCode;r<37||r>40||(e.preventDefault(),p({left:39===r?.05:37===r?-.05:0,top:40===r?.05:38===r?-.05:0}))},t]},[p,g]),C=x[0],E=x[1],H=x[2];return Object(react["useEffect"])(function(){return H},[H]),react_default.a.createElement("div",index_module_u({},s,{onTouchStart:C,onMouseDown:C,className:"react-colorful__interactive",ref:m,onKeyDown:E,tabIndex:0,role:"slider"}))}),index_module_g=function(e){return e.filter(Boolean).join(" ")},index_module_p=function(r){var t=r.color,n=r.left,o=r.top,a=void 0===o?.5:o,l=index_module_g(["react-colorful__pointer",r.className]);return react_default.a.createElement("div",{className:l,style:{top:100*a+"%",left:100*n+"%"}},react_default.a.createElement("div",{className:"react-colorful__pointer-fill",style:{backgroundColor:t}}))},index_module_b=function(e,r,t){return void 0===r&&(r=0),void 0===t&&(t=Math.pow(10,r)),Math.round(t*e)/t},index_module_={grad:.9,turn:360,rad:360/(2*Math.PI)},index_module_x=function(e){return"#"===e[0]&&(e=e.substr(1)),e.length<6?{r:parseInt(e[0]+e[0],16),g:parseInt(e[1]+e[1],16),b:parseInt(e[2]+e[2],16),a:1}:{r:parseInt(e.substr(0,2),16),g:parseInt(e.substr(2,2),16),b:parseInt(e.substr(4,2),16),a:1}},index_module_C=function(e,r){return void 0===r&&(r="deg"),Number(e)*(index_module_[r]||1)},index_module_E=function(e){var r=/hsla?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?M({h:index_module_C(r[1],r[2]),s:Number(r[3]),l:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},index_module_H=index_module_E,M=function(e){var r=e.s,t=e.l;return{h:e.h,s:(r*=(t<50?t:100-t)/100)>0?2*r/(t+r)*100:0,v:t+r,a:e.a}},N=function(e){var r=e.s,t=e.v,n=e.a,o=(200-r)*t/100;return{h:index_module_b(e.h),s:index_module_b(o>0&&o<200?r*t/100/(o<=100?o:200-o)*100:0),l:index_module_b(o/2),a:index_module_b(n,2)}},w=function(e){var r=N(e);return"hsl("+r.h+", "+r.s+"%, "+r.l+"%)"},y=function(e){var r=N(e);return"hsla("+r.h+", "+r.s+"%, "+r.l+"%, "+r.a+")"},q=function(e){var r=e.h,t=e.s,n=e.v,o=e.a;r=r/360*6,t/=100,n/=100;var a=Math.floor(r),l=n*(1-t),u=n*(1-(r-a)*t),c=n*(1-(1-r+a)*t),i=a%6;return{r:index_module_b(255*[n,u,l,l,c,n][i]),g:index_module_b(255*[c,n,n,u,l,l][i]),b:index_module_b(255*[l,l,c,n,n,u][i]),a:index_module_b(o,2)}},k=function(e){var r=/hsva?\\(?\\s*(-?\\d*\\.?\\d+)(deg|rad|grad|turn)?[,\\s]+(-?\\d*\\.?\\d+)%?[,\\s]+(-?\\d*\\.?\\d+)%?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?D({h:index_module_C(r[1],r[2]),s:Number(r[3]),v:Number(r[4]),a:void 0===r[5]?1:Number(r[5])/(r[6]?100:1)}):{h:0,s:0,v:0,a:1}},O=k,I=function(e){var r=/rgba?\\(?\\s*(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?[,\\s]+(-?\\d*\\.?\\d+)(%)?,?\\s*[/\\s]*(-?\\d*\\.?\\d+)?(%)?\\s*\\)?/i.exec(e);return r?B({r:Number(r[1])/(r[2]?100/255:1),g:Number(r[3])/(r[4]?100/255:1),b:Number(r[5])/(r[6]?100/255:1),a:void 0===r[7]?1:Number(r[7])/(r[8]?100:1)}):{h:0,s:0,v:0,a:1}},j=I,z=function(e){var r=e.toString(16);return r.length<2?"0"+r:r},B=function(e){var r=e.r,t=e.g,n=e.b,o=e.a,a=Math.max(r,t,n),l=a-Math.min(r,t,n),u=l?a===r?(t-n)/l:a===t?2+(n-r)/l:4+(r-t)/l:0;return{h:index_module_b(60*(u<0?u+6:u)),s:index_module_b(a?l/a*100:0),v:index_module_b(a/255*100),a:o}},D=function(e){return{h:index_module_b(e.h),s:index_module_b(e.s),v:index_module_b(e.v),a:index_module_b(e.a,2)}},K=react_default.a.memo(function(r){var t=r.hue,n=r.onChange,o=index_module_g(["react-colorful__hue",r.className]);return react_default.a.createElement("div",{className:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({h:360*e.left})},onKey:function(e){n({h:index_module_s(t+360*e.left,0,360)})},"aria-label":"Hue","aria-valuetext":index_module_b(t)},react_default.a.createElement(index_module_p,{className:"react-colorful__hue-pointer",left:t/360,color:w({h:t,s:100,v:100,a:1})})))}),L=react_default.a.memo(function(r){var t=r.hsva,n=r.onChange,o={backgroundColor:w({h:t.h,s:100,v:100,a:1})};return react_default.a.createElement("div",{className:"react-colorful__saturation",style:o},react_default.a.createElement(index_module_m,{onMove:function(e){n({s:100*e.left,v:100-100*e.top})},onKey:function(e){n({s:index_module_s(t.s+100*e.left,0,100),v:index_module_s(t.v-100*e.top,0,100)})},"aria-label":"Color","aria-valuetext":"Saturation "+index_module_b(t.s)+"%, Brightness "+index_module_b(t.v)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__saturation-pointer",top:1-t.v/100,left:t.s/100,color:w(t)})))}),A=function(e,r){if(e===r)return!0;for(var t in e)if(e[t]!==r[t])return!1;return!0},S=function(e,r){return e.replace(/\\s/g,"")===r.replace(/\\s/g,"")};function T(e,t,l){var u=index_module_i(l),c=Object(react["useState"])(function(){return e.toHsva(t)}),s=c[0],f=c[1],v=Object(react["useRef"])({color:t,hsva:s});Object(react["useEffect"])(function(){if(!e.equal(t,v.current.color)){var r=e.toHsva(t);v.current={hsva:r,color:t},f(r)}},[t,e]),Object(react["useEffect"])(function(){var r;A(s,v.current.hsva)||e.equal(r=e.fromHsva(s),v.current.color)||(v.current={hsva:s,color:r},u(r))},[s,e,u]);var d=Object(react["useCallback"])(function(e){f(function(r){return Object.assign({},r,e)})},[]);return[s,d]}var F,P="undefined"!=typeof window?react["useLayoutEffect"]:react["useEffect"],X=function(){return F||( true?__webpack_require__.nc:undefined)},Y=function(e){F=e},R=new Map,V=function(e){P(function(){var r=e.current?e.current.ownerDocument:document;if(void 0!==r&&!R.has(r)){var t=r.createElement("style");t.innerHTML=\'.react-colorful{position:relative;display:flex;flex-direction:column;width:200px;height:200px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;cursor:default}.react-colorful__saturation{position:relative;flex-grow:1;border-color:transparent;border-bottom:12px solid #000;border-radius:8px 8px 0 0;background-image:linear-gradient(0deg,#000,transparent),linear-gradient(90deg,#fff,hsla(0,0%,100%,0))}.react-colorful__alpha-gradient,.react-colorful__pointer-fill{content:"";position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;border-radius:inherit}.react-colorful__alpha-gradient,.react-colorful__saturation{box-shadow:inset 0 0 0 1px rgba(0,0,0,.05)}.react-colorful__alpha,.react-colorful__hue{position:relative;height:24px}.react-colorful__hue{background:linear-gradient(90deg,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red)}.react-colorful__last-control{border-radius:0 0 8px 8px}.react-colorful__interactive{position:absolute;left:0;top:0;right:0;bottom:0;border-radius:inherit;outline:none;touch-action:none}.react-colorful__pointer{position:absolute;z-index:1;box-sizing:border-box;width:28px;height:28px;transform:translate(-50%,-50%);background-color:#fff;border:2px solid #fff;border-radius:50%;box-shadow:0 2px 4px rgba(0,0,0,.2)}.react-colorful__interactive:focus .react-colorful__pointer{transform:translate(-50%,-50%) scale(1.1)}.react-colorful__alpha,.react-colorful__alpha-pointer{background-color:#fff;background-image:url(\\\'data:image/svg+xml;charset=utf-8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill-opacity=".05"><path d="M8 0h8v8H8zM0 8h8v8H0z"/></svg>\\\')}.react-colorful__saturation-pointer{z-index:3}.react-colorful__hue-pointer{z-index:2}\',R.set(r,t);var n=X();n&&t.setAttribute("nonce",n),r.head.appendChild(t)}},[])},$=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h,className:"react-colorful__last-control"}))},G={defaultColor:"000",toHsva:function(e){return B(index_module_x(e))},fromHsva:function(e){return t=(r=q(e)).g,n=r.b,"#"+z(r.r)+z(t)+z(n);var r,t,n},equal:function(e,r){return e.toLowerCase()===r.toLowerCase()||A(index_module_x(e),index_module_x(r))}},J=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:G}))},Q=function(r){var t=r.className,n=r.hsva,o=r.onChange,a={backgroundImage:"linear-gradient(90deg, "+y(Object.assign({},n,{a:0}))+", "+y(Object.assign({},n,{a:1}))+")"},l=index_module_g(["react-colorful__alpha",t]);return react_default.a.createElement("div",{className:l},react_default.a.createElement("div",{className:"react-colorful__alpha-gradient",style:a}),react_default.a.createElement(index_module_m,{onMove:function(e){o({a:e.left})},onKey:function(e){o({a:index_module_s(n.a+e.left)})},"aria-label":"Alpha","aria-valuetext":index_module_b(100*n.a)+"%"},react_default.a.createElement(index_module_p,{className:"react-colorful__alpha-pointer",left:n.a,color:y(n)})))},U=function(t){var n=t.className,o=t.colorModel,a=t.color,l=void 0===a?o.defaultColor:a,i=t.onChange,s=index_module_c(t,["className","colorModel","color","onChange"]),f=Object(react["useRef"])(null);V(f);var v=T(o,l,i),d=v[0],h=v[1],m=index_module_g(["react-colorful",n]);return react_default.a.createElement("div",index_module_u({},s,{ref:f,className:m}),react_default.a.createElement(L,{hsva:d,onChange:h}),react_default.a.createElement(K,{hue:d.h,onChange:h}),react_default.a.createElement(Q,{hsva:d,onChange:h,className:"react-colorful__last-control"}))},W={defaultColor:{h:0,s:0,l:0,a:1},toHsva:M,fromHsva:N,equal:A},Z=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:W}))},ee={defaultColor:"hsla(0, 0%, 0%, 1)",toHsva:index_module_E,fromHsva:y,equal:S},re=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ee}))},te={defaultColor:{h:0,s:0,l:0},toHsva:function(e){return M({h:e.h,s:e.s,l:e.l,a:1})},fromHsva:function(e){return{h:(r=N(e)).h,s:r.s,l:r.l};var r},equal:A},ne=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:te}))},oe={defaultColor:"hsl(0, 0%, 0%)",toHsva:index_module_H,fromHsva:w,equal:S},ae=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:oe}))},le={defaultColor:{h:0,s:0,v:0,a:1},toHsva:function(e){return e},fromHsva:D,equal:A},ue=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:le}))},ce={defaultColor:"hsva(0, 0%, 0%, 1)",toHsva:k,fromHsva:function(e){var r=D(e);return"hsva("+r.h+", "+r.s+"%, "+r.v+"%, "+r.a+")"},equal:S},ie=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ce}))},se={defaultColor:{h:0,s:0,v:0},toHsva:function(e){return{h:e.h,s:e.s,v:e.v,a:1}},fromHsva:function(e){var r=D(e);return{h:r.h,s:r.s,v:r.v}},equal:A},fe=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:se}))},ve={defaultColor:"hsv(0, 0%, 0%)",toHsva:O,fromHsva:function(e){var r=D(e);return"hsv("+r.h+", "+r.s+"%, "+r.v+"%)"},equal:S},de=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:ve}))},he={defaultColor:{r:0,g:0,b:0,a:1},toHsva:B,fromHsva:q,equal:A},me=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:he}))},ge={defaultColor:"rgba(0, 0, 0, 1)",toHsva:I,fromHsva:function(e){var r=q(e);return"rgba("+r.r+", "+r.g+", "+r.b+", "+r.a+")"},equal:S},pe=function(r){return react_default.a.createElement(U,index_module_u({},r,{colorModel:ge}))},be={defaultColor:{r:0,g:0,b:0},toHsva:function(e){return B({r:e.r,g:e.g,b:e.b,a:1})},fromHsva:function(e){return{r:(r=q(e)).r,g:r.g,b:r.b};var r},equal:A},_e=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:be}))},xe={defaultColor:"rgb(0, 0, 0)",toHsva:j,fromHsva:function(e){var r=q(e);return"rgb("+r.r+", "+r.g+", "+r.b+")"},equal:S},Ce=function(r){return react_default.a.createElement($,index_module_u({},r,{colorModel:xe}))},Ee=/^#?([0-9A-F]{3,8})$/i,He=function(r){var t=r.color,l=void 0===t?"":t,s=r.onChange,f=r.onBlur,v=r.escape,d=r.validate,h=r.format,m=r.process,g=index_module_c(r,["color","onChange","onBlur","escape","validate","format","process"]),p=Object(react["useState"])(function(){return v(l)}),b=p[0],_=p[1],x=index_module_i(s),C=index_module_i(f),E=Object(react["useCallback"])(function(e){var r=v(e.target.value);_(r),d(r)&&x(m?m(r):r)},[v,m,d,x]),H=Object(react["useCallback"])(function(e){d(e.target.value)||_(v(l)),C(e)},[l,v,d,C]);return Object(react["useEffect"])(function(){_(v(l))},[l,v]),react_default.a.createElement("input",index_module_u({},g,{value:h?h(b):b,spellCheck:"false",onChange:E,onBlur:H}))},Me=function(e){return"#"+e},Ne=function(r){var t=r.prefixed,n=r.alpha,o=index_module_c(r,["prefixed","alpha"]),l=Object(react["useCallback"])(function(e){return e.replace(/([^0-9A-F]+)/gi,"").substr(0,n?8:6)},[n]),i=Object(react["useCallback"])(function(e){return function(e,r){var t=Ee.exec(e),n=t?t[1].length:0;return 3===n||6===n||!!r&&4===n||!!r&&8===n}(e,n)},[n]);return react_default.a.createElement(He,index_module_u({},o,{escape:l,format:t?Me:void 0,process:Me,validate:i}))};\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/color-convert/index.js\nvar color_convert = __webpack_require__(1075);\nvar color_convert_default = /*#__PURE__*/__webpack_require__.n(color_convert);\n\n// EXTERNAL MODULE: /home/jenkins/workspace/design-system_PR-13/node_modules/lodash/throttle.js\nvar throttle = __webpack_require__(1078);\nvar throttle_default = /*#__PURE__*/__webpack_require__.n(throttle);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/theming/dist/esm/index.js\nvar esm = __webpack_require__(3);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/TooltipNote.js\nvar TooltipNote = __webpack_require__(572);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/tooltip/lazy-WithTooltip.js\nvar lazy_WithTooltip = __webpack_require__(214);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/form/index.js + 2 modules\nvar esm_form = __webpack_require__(72);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/icon/icon.js + 2 modules\nvar icon = __webpack_require__(65);\n\n// EXTERNAL MODULE: ./node_modules/@storybook/components/dist/esm/controls/helpers.js\nvar helpers = __webpack_require__(64);\n\n// CONCATENATED MODULE: ./node_modules/@storybook/components/dist/esm/controls/Color.js\n\n\n\n\n\n\n\n\n\n\nvar _ColorPicker, _fallbackColor;\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _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."); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Wrapper = esm["styled"].div({\n position: \'relative\',\n maxWidth: 250\n});\nvar PickerTooltip = Object(esm["styled"])(lazy_WithTooltip["a" /* WithTooltip */])({\n position: \'absolute\',\n zIndex: 1,\n top: 4,\n left: 4\n});\nvar TooltipContent = esm["styled"].div({\n width: 200,\n margin: 5,\n \'.react-colorful__saturation\': {\n borderRadius: \'4px 4px 0 0\'\n },\n \'.react-colorful__hue\': {\n boxShadow: \'inset 0 0 0 1px rgb(0 0 0 / 5%)\'\n },\n \'.react-colorful__last-control\': {\n borderRadius: \'0 0 4px 4px\'\n }\n});\nvar Note = Object(esm["styled"])(TooltipNote["a" /* TooltipNote */])(function (_ref) {\n var theme = _ref.theme;\n return {\n fontFamily: theme.typography.fonts.base\n };\n});\nvar Swatches = esm["styled"].div({\n display: \'grid\',\n gridTemplateColumns: \'repeat(9, 16px)\',\n gap: 6,\n padding: 3,\n marginTop: 5,\n width: 200\n});\nvar SwatchColor = esm["styled"].div(function (_ref2) {\n var theme = _ref2.theme,\n active = _ref2.active;\n return {\n width: 16,\n height: 16,\n boxShadow: active ? "".concat(theme.appBorderColor, " 0 0 0 1px inset, ").concat(theme.color.mediumdark, "50 0 0 0 4px") : "".concat(theme.appBorderColor, " 0 0 0 1px inset"),\n borderRadius: theme.appBorderRadius\n };\n});\nvar swatchBackground = "url(\'data:image/svg+xml;charset=utf-8,<svg xmlns=\\"http://www.w3.org/2000/svg\\" width=\\"16\\" height=\\"16\\" fill-opacity=\\".05\\"><path d=\\"M8 0h8v8H8zM0 8h8v8H0z\\"/></svg>\')";\n\nvar Color_Swatch = function Swatch(_ref3) {\n var value = _ref3.value,\n active = _ref3.active,\n onClick = _ref3.onClick,\n style = _ref3.style,\n props = _objectWithoutProperties(_ref3, ["value", "active", "onClick", "style"]);\n\n var backgroundImage = "linear-gradient(".concat(value, ", ").concat(value, "), ").concat(swatchBackground, ", linear-gradient(#fff, #fff)");\n return /*#__PURE__*/react_default.a.createElement(SwatchColor, _extends({}, props, {\n active: active,\n onClick: onClick,\n style: Object.assign({}, style, {\n backgroundImage: backgroundImage\n })\n }));\n};\n\nColor_Swatch.displayName = "Swatch";\nvar Input = Object(esm["styled"])(esm_form["a" /* Form */].Input)(function (_ref4) {\n var theme = _ref4.theme;\n return {\n width: \'100%\',\n paddingLeft: 30,\n paddingRight: 30,\n boxSizing: \'border-box\',\n fontFamily: theme.typography.fonts.base\n };\n});\nvar ToggleIcon = Object(esm["styled"])(icon["a" /* Icons */])(function (_ref5) {\n var theme = _ref5.theme;\n return {\n position: \'absolute\',\n zIndex: 1,\n top: 6,\n right: 7,\n width: 20,\n height: 20,\n padding: 4,\n boxSizing: \'border-box\',\n cursor: \'pointer\',\n color: theme.input.color\n };\n});\nvar ColorSpace;\n\n(function (ColorSpace) {\n ColorSpace["RGB"] = "rgb";\n ColorSpace["HSL"] = "hsl";\n ColorSpace["HEX"] = "hex";\n})(ColorSpace || (ColorSpace = {}));\n\nvar COLOR_SPACES = Object.values(ColorSpace);\nvar COLOR_REGEXP = /\\(([0-9]+),\\s*([0-9]+)%?,\\s*([0-9]+)%?,?\\s*([0-9.]+)?\\)/;\nvar RGB_REGEXP = /^\\s*rgba?\\(([0-9]+),\\s*([0-9]+),\\s*([0-9]+),?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HSL_REGEXP = /^\\s*hsla?\\(([0-9]+),\\s*([0-9]+)%,\\s*([0-9]+)%,?\\s*([0-9.]+)?\\)\\s*$/i;\nvar HEX_REGEXP = /^\\s*#?([0-9a-f]{3}|[0-9a-f]{6})\\s*$/i;\nvar SHORTHEX_REGEXP = /^\\s*#?([0-9a-f]{3})\\s*$/i;\nvar ColorPicker = (_ColorPicker = {}, _defineProperty(_ColorPicker, ColorSpace.HEX, J), _defineProperty(_ColorPicker, ColorSpace.RGB, pe), _defineProperty(_ColorPicker, ColorSpace.HSL, re), _ColorPicker);\nvar fallbackColor = (_fallbackColor = {}, _defineProperty(_fallbackColor, ColorSpace.HEX, \'transparent\'), _defineProperty(_fallbackColor, ColorSpace.RGB, \'rgba(0, 0, 0, 0)\'), _defineProperty(_fallbackColor, ColorSpace.HSL, \'hsla(0, 0%, 0%, 0)\'), _fallbackColor);\n\nvar stringToArgs = function stringToArgs(value) {\n var match = value === null || value === void 0 ? void 0 : value.match(COLOR_REGEXP);\n if (!match) return [0, 0, 0, 1];\n\n var _match = _slicedToArray(match, 5),\n x = _match[1],\n y = _match[2],\n z = _match[3],\n _match$ = _match[4],\n a = _match$ === void 0 ? 1 : _match$;\n\n return [x, y, z, a].map(Number);\n};\n\nvar Color_parseValue = function parseValue(value) {\n var _ref12;\n\n if (!value) return undefined;\n var valid = true;\n\n if (RGB_REGEXP.test(value)) {\n var _ref8;\n\n var _stringToArgs = stringToArgs(value),\n _stringToArgs2 = _slicedToArray(_stringToArgs, 4),\n r = _stringToArgs2[0],\n g = _stringToArgs2[1],\n b = _stringToArgs2[2],\n a = _stringToArgs2[3];\n\n var _ref6 = color_convert_default.a.rgb.hsl([r, g, b]) || [0, 0, 0],\n _ref7 = _slicedToArray(_ref6, 3),\n h = _ref7[0],\n s = _ref7[1],\n l = _ref7[2];\n\n return _ref8 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.rgb.keyword([r, g, b]),\n colorSpace: ColorSpace.RGB\n }, _defineProperty(_ref8, ColorSpace.RGB, value), _defineProperty(_ref8, ColorSpace.HSL, "hsla(".concat(h, ", ").concat(s, "%, ").concat(l, "%, ").concat(a, ")")), _defineProperty(_ref8, ColorSpace.HEX, "#".concat(color_convert_default.a.rgb.hex([r, g, b]).toLowerCase())), _ref8;\n }\n\n if (HSL_REGEXP.test(value)) {\n var _ref11;\n\n var _stringToArgs3 = stringToArgs(value),\n _stringToArgs4 = _slicedToArray(_stringToArgs3, 4),\n _h = _stringToArgs4[0],\n _s2 = _stringToArgs4[1],\n _l = _stringToArgs4[2],\n _a = _stringToArgs4[3];\n\n var _ref9 = color_convert_default.a.hsl.rgb([_h, _s2, _l]) || [0, 0, 0],\n _ref10 = _slicedToArray(_ref9, 3),\n _r = _ref10[0],\n _g = _ref10[1],\n _b = _ref10[2];\n\n return _ref11 = {\n valid: valid,\n value: value,\n keyword: color_convert_default.a.hsl.keyword([_h, _s2, _l]),\n colorSpace: ColorSpace.HSL\n }, _defineProperty(_ref11, ColorSpace.RGB, "rgba(".concat(_r, ", ").concat(_g, ", ").concat(_b, ", ").concat(_a, ")")), _defineProperty(_ref11, ColorSpace.HSL, value), _defineProperty(_ref11, ColorSpace.HEX, "#".concat(color_convert_default.a.hsl.hex([_h, _s2, _l]).toLowerCase())), _ref11;\n }\n\n var plain = value.replace(\'#\', \'\');\n var rgb = color_convert_default.a.keyword.rgb(plain) || color_convert_default.a.hex.rgb(plain);\n var hsl = color_convert_default.a.rgb.hsl(rgb);\n var mapped = value;\n if (/[^#a-f0-9]/i.test(value)) mapped = plain;else if (HEX_REGEXP.test(value)) mapped = "#".concat(plain);\n\n if (mapped.startsWith(\'#\')) {\n valid = HEX_REGEXP.test(mapped);\n } else {\n try {\n color_convert_default.a.keyword.hex(mapped);\n } catch (e) {\n valid = false;\n }\n }\n\n return _ref12 = {\n valid: valid,\n value: mapped,\n keyword: color_convert_default.a.rgb.keyword(rgb),\n colorSpace: ColorSpace.HEX\n }, _defineProperty(_ref12, ColorSpace.RGB, "rgba(".concat(rgb[0], ", ").concat(rgb[1], ", ").concat(rgb[2], ", 1)")), _defineProperty(_ref12, ColorSpace.HSL, "hsla(".concat(hsl[0], ", ").concat(hsl[1], "%, ").concat(hsl[2], "%, 1)")), _defineProperty(_ref12, ColorSpace.HEX, mapped), _ref12;\n};\n\nvar Color_getRealValue = function getRealValue(value, color, colorSpace) {\n if (!value || !(color !== null && color !== void 0 && color.valid)) return fallbackColor[colorSpace];\n if (colorSpace !== ColorSpace.HEX) return (color === null || color === void 0 ? void 0 : color[colorSpace]) || fallbackColor[colorSpace];\n\n if (!color.hex.startsWith(\'#\')) {\n try {\n return "#".concat(color_convert_default.a.keyword.hex(color.hex));\n } catch (e) {\n return fallbackColor.hex;\n }\n }\n\n var short = color.hex.match(SHORTHEX_REGEXP);\n if (!short) return HEX_REGEXP.test(color.hex) ? color.hex : fallbackColor.hex;\n\n var _short$1$split = short[1].split(\'\'),\n _short$1$split2 = _slicedToArray(_short$1$split, 3),\n r = _short$1$split2[0],\n g = _short$1$split2[1],\n b = _short$1$split2[2];\n\n return "#".concat(r).concat(r).concat(g).concat(g).concat(b).concat(b);\n};\n\nvar Color_useColorInput = function useColorInput(initialValue, onChange) {\n var _useState = Object(react["useState"])(initialValue || \'\'),\n _useState2 = _slicedToArray(_useState, 2),\n value = _useState2[0],\n setValue = _useState2[1];\n\n var _useState3 = Object(react["useState"])(function () {\n return Color_parseValue(value);\n }),\n _useState4 = _slicedToArray(_useState3, 2),\n color = _useState4[0],\n setColor = _useState4[1];\n\n var _useState5 = Object(react["useState"])((color === null || color === void 0 ? void 0 : color.colorSpace) || ColorSpace.HEX),\n _useState6 = _slicedToArray(_useState5, 2),\n colorSpace = _useState6[0],\n setColorSpace = _useState6[1]; // Reset state when initialValue becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (initialValue !== undefined) return;\n setValue(\'\');\n setColor(undefined);\n setColorSpace(ColorSpace.HEX);\n }, [initialValue]);\n var realValue = Object(react["useMemo"])(function () {\n return Color_getRealValue(value, color, colorSpace).toLowerCase();\n }, [value, color, colorSpace]);\n var updateValue = Object(react["useCallback"])(function (update) {\n var parsed = Color_parseValue(update);\n setValue((parsed === null || parsed === void 0 ? void 0 : parsed.value) || update || \'\');\n if (!parsed) return;\n setColor(parsed);\n setColorSpace(parsed.colorSpace);\n onChange(parsed.value);\n }, [onChange]);\n var cycleColorSpace = Object(react["useCallback"])(function () {\n var next = COLOR_SPACES.indexOf(colorSpace) + 1;\n if (next >= COLOR_SPACES.length) next = 0;\n setColorSpace(COLOR_SPACES[next]);\n var update = (color === null || color === void 0 ? void 0 : color[COLOR_SPACES[next]]) || \'\';\n setValue(update);\n onChange(update);\n }, [color, colorSpace, onChange]);\n return {\n value: value,\n realValue: realValue,\n updateValue: updateValue,\n color: color,\n colorSpace: colorSpace,\n cycleColorSpace: cycleColorSpace\n };\n};\n\nvar id = function id(value) {\n return value.replace(/\\s*/, \'\').toLowerCase();\n};\n\nvar Color_usePresets = function usePresets(presetColors, currentColor, colorSpace) {\n var _useState7 = Object(react["useState"])(currentColor !== null && currentColor !== void 0 && currentColor.valid ? [currentColor] : []),\n _useState8 = _slicedToArray(_useState7, 2),\n selectedColors = _useState8[0],\n setSelectedColors = _useState8[1]; // Reset state when currentColor becomes undefined (when resetting controls)\n\n\n Object(react["useEffect"])(function () {\n if (currentColor !== undefined) return;\n setSelectedColors([]);\n }, [currentColor]);\n var presets = Object(react["useMemo"])(function () {\n var initialPresets = (presetColors || []).map(function (preset) {\n if (typeof preset === \'string\') return Color_parseValue(preset);\n if (preset.title) return Object.assign({}, Color_parseValue(preset.color), {\n keyword: preset.title\n });\n return Color_parseValue(preset.color);\n });\n return initialPresets.concat(selectedColors).filter(Boolean).slice(-27);\n }, [presetColors, selectedColors]);\n var addPreset = Object(react["useCallback"])(function (color) {\n if (!(color !== null && color !== void 0 && color.valid)) return;\n if (presets.some(function (preset) {\n return id(preset[colorSpace]) === id(color[colorSpace]);\n })) return;\n setSelectedColors(function (arr) {\n return arr.concat(color);\n });\n }, [colorSpace, presets]);\n return {\n presets: presets,\n addPreset: addPreset\n };\n};\n\nvar Color_ColorControl = function ColorControl(_ref13) {\n var name = _ref13.name,\n initialValue = _ref13.value,\n onChange = _ref13.onChange,\n onFocus = _ref13.onFocus,\n onBlur = _ref13.onBlur,\n presetColors = _ref13.presetColors,\n startOpen = _ref13.startOpen;\n\n var _useColorInput = Color_useColorInput(initialValue, throttle_default()(onChange, 200)),\n value = _useColorInput.value,\n realValue = _useColorInput.realValue,\n updateValue = _useColorInput.updateValue,\n color = _useColorInput.color,\n colorSpace = _useColorInput.colorSpace,\n cycleColorSpace = _useColorInput.cycleColorSpace;\n\n var _usePresets = Color_usePresets(presetColors, color, colorSpace),\n presets = _usePresets.presets,\n addPreset = _usePresets.addPreset;\n\n var Picker = ColorPicker[colorSpace];\n return /*#__PURE__*/react_default.a.createElement(Wrapper, null, /*#__PURE__*/react_default.a.createElement(PickerTooltip, {\n trigger: "click",\n startOpen: startOpen,\n closeOnClick: true,\n onVisibilityChange: function onVisibilityChange() {\n return addPreset(color);\n },\n tooltip: /*#__PURE__*/react_default.a.createElement(TooltipContent, null, /*#__PURE__*/react_default.a.createElement(Picker, {\n color: realValue === \'transparent\' ? \'#000000\' : realValue,\n onChange: updateValue,\n onFocus: onFocus,\n onBlur: onBlur\n }), presets.length > 0 && /*#__PURE__*/react_default.a.createElement(Swatches, null, presets.map(function (preset, index) {\n return /*#__PURE__*/react_default.a.createElement(lazy_WithTooltip["a" /* WithTooltip */] // eslint-disable-next-line react/no-array-index-key\n , {\n key: "".concat(preset.value, "-").concat(index),\n hasChrome: false,\n tooltip: /*#__PURE__*/react_default.a.createElement(Note, {\n note: preset.keyword || preset.value\n })\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: preset[colorSpace],\n active: color && id(preset[colorSpace]) === id(color[colorSpace]),\n onClick: function onClick() {\n return updateValue(preset.value);\n }\n }));\n })))\n }, /*#__PURE__*/react_default.a.createElement(Color_Swatch, {\n value: realValue,\n style: {\n margin: 4\n }\n })), /*#__PURE__*/react_default.a.createElement(Input, {\n id: Object(helpers["a" /* getControlId */])(name),\n value: value,\n onChange: function onChange(e) {\n return updateValue(e.target.value);\n },\n onFocus: function onFocus(e) {\n return e.target.select();\n },\n placeholder: "Choose color..."\n }), /*#__PURE__*/react_default.a.createElement(ToggleIcon, {\n icon: "markup",\n onClick: cycleColorSpace\n }));\n};\nColor_ColorControl.displayName = "ColorControl";\n/* harmony default export */ var Color = __webpack_exports__["default"] = (Color_ColorControl);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2hvb2tzL3VzZUV2ZW50Q2FsbGJhY2sudHM/MmM3YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2NsYW1wLnRzPzI3MTkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9JbnRlcmFjdGl2ZS50c3g/MjFkOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL2Zvcm1hdC50cz82MWIxIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vUG9pbnRlci50c3g/ODM1YyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL3JvdW5kLnRzPzU5ZDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy9jb252ZXJ0LnRzP2NiMzkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9IdWUudHN4P2NlNzEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9TYXR1cmF0aW9uLnRzeD8wNGVhIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvdXRpbHMvY29tcGFyZS50cz9lZjM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvaG9va3MvdXNlQ29sb3JNYW5pcHVsYXRpb24udHM/YzM4YiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL3V0aWxzL25vbmNlLnRzPzU5MjMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0LnRzP2I5NDkiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9ob29rcy91c2VTdHlsZVNoZWV0LnRzPzNlMzciLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9Db2xvclBpY2tlci50c3g/YjhjOSIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JQaWNrZXIudHN4PzM1ZmIiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL2NvbW1vbi9BbHBoYS50c3g/NWQ0OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvY29tbW9uL0FscGhhQ29sb3JQaWNrZXIudHN4P2YzZjEiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzbGFDb2xvclBpY2tlci50c3g/MzA1MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsYVN0cmluZ0NvbG9yUGlja2VyLnRzeD9mYTEwIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic2xDb2xvclBpY2tlci50c3g/Mzg4NiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHNsU3RyaW5nQ29sb3JQaWNrZXIudHN4PzI0NWMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL0hzdmFDb2xvclBpY2tlci50c3g/N2RmZiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2YVN0cmluZ0NvbG9yUGlja2VyLnRzeD9kYTQ5Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9Ic3ZDb2xvclBpY2tlci50c3g/OTJmYyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSHN2U3RyaW5nQ29sb3JQaWNrZXIudHN4P2IyOTAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy9jb21wb25lbnRzL1JnYmFDb2xvclBpY2tlci50c3g/ZmQzNiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiYVN0cmluZ0NvbG9yUGlja2VyLnRzeD8xNzJkIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9SZ2JDb2xvclBpY2tlci50c3g/NDg2OCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvUmdiU3RyaW5nQ29sb3JQaWNrZXIudHN4PzQ5YmUiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWN0LWNvbG9yZnVsL3NyYy91dGlscy92YWxpZGF0ZS50cz80OGM1Iiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFjdC1jb2xvcmZ1bC9zcmMvY29tcG9uZW50cy9jb21tb24vQ29sb3JJbnB1dC50c3g/NmQ2MiIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhY3QtY29sb3JmdWwvc3JjL2NvbXBvbmVudHMvSGV4Q29sb3JJbnB1dC50c3g/ZmY0MCIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL2NvbnRyb2xzL0NvbG9yLmpzP2MzYTAiXSwibmFtZXMiOlsidXNlRXZlbnRDYWxsYmFjayIsImhhbmRsZXIiLCJjYWxsYmFja1JlZiIsInVzZVJlZiIsImZuIiwidmFsdWUiLCJjdXJyZW50IiwiY2xhbXAiLCJudW1iZXIiLCJtaW4iLCJtYXgiLCJpc1RvdWNoIiwiZXZlbnQiLCJnZXRQYXJlbnRXaW5kb3ciLCJub2RlIiwib3duZXJEb2N1bWVudCIsImRlZmF1bHRWaWV3Iiwic2VsZiIsImdldFJlbGF0aXZlUG9zaXRpb24iLCJ0b3VjaElkIiwicmVjdCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsInBvaW50ZXIiLCJ0b3VjaGVzIiwiaSIsImxlbmd0aCIsImlkZW50aWZpZXIiLCJnZXRUb3VjaFBvaW50IiwibGVmdCIsInBhZ2VYIiwicGFnZVhPZmZzZXQiLCJ3aWR0aCIsInRvcCIsInBhZ2VZIiwicGFnZVlPZmZzZXQiLCJoZWlnaHQiLCJwcmV2ZW50RGVmYXVsdE1vdmUiLCJwcmV2ZW50RGVmYXVsdCIsIkludGVyYWN0aXZlIiwiUmVhY3QiLCJtZW1vIiwib25Nb3ZlIiwib25LZXkiLCJyZXN0IiwiY29udGFpbmVyIiwib25Nb3ZlQ2FsbGJhY2siLCJvbktleUNhbGxiYWNrIiwiaGFzVG91Y2giLCJ1c2VNZW1vIiwiaGFuZGxlTW92ZSIsImJ1dHRvbnMiLCJ0b2dnbGVEb2N1bWVudEV2ZW50cyIsImhhbmRsZU1vdmVFbmQiLCJzdGF0ZSIsInRvdWNoIiwicGFyZW50V2luZG93IiwidG9nZ2xlRXZlbnQiLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsIm5hdGl2ZUV2ZW50IiwiZWwiLCJpc0ludmFsaWQiLCJjaGFuZ2VkVG91Y2hlcyIsImZvY3VzIiwia2V5Q29kZSIsIndoaWNoIiwiaGFuZGxlTW92ZVN0YXJ0IiwiaGFuZGxlS2V5RG93biIsInVzZUVmZmVjdCIsIm9uVG91Y2hTdGFydCIsIm9uTW91c2VEb3duIiwiY2xhc3NOYW1lIiwicmVmIiwib25LZXlEb3duIiwidGFiSW5kZXgiLCJyb2xlIiwiZm9ybWF0Q2xhc3NOYW1lIiwibmFtZXMiLCJmaWx0ZXIiLCJCb29sZWFuIiwiam9pbiIsIlBvaW50ZXIiLCJjb2xvciIsIm5vZGVDbGFzc05hbWUiLCJzdHlsZSIsImJhY2tncm91bmRDb2xvciIsInJvdW5kIiwiZGlnaXRzIiwiYmFzZSIsIk1hdGgiLCJwb3ciLCJhbmdsZVVuaXRzIiwiZ3JhZCIsInR1cm4iLCJyYWQiLCJQSSIsImhleFRvUmdiYSIsImhleCIsInN1YnN0ciIsInIiLCJwYXJzZUludCIsImciLCJiIiwiYSIsInBhcnNlSHVlIiwidW5pdCIsIk51bWJlciIsImhzbGFTdHJpbmdUb0hzdmEiLCJoc2xTdHJpbmciLCJtYXRjaCIsImV4ZWMiLCJoc2xhVG9Ic3ZhIiwiaCIsInMiLCJsIiwidW5kZWZpbmVkIiwidiIsImhzbFN0cmluZ1RvSHN2YSIsImhzdmFUb0hzbGEiLCJoaCIsImhzdmFUb0hzbFN0cmluZyIsImhzdmEiLCJoc3ZhVG9Ic2xhU3RyaW5nIiwiaHN2YVRvUmdiYSIsImZsb29yIiwiYyIsImQiLCJtb2R1bGUiLCJoc3ZhU3RyaW5nVG9Ic3ZhIiwiaHN2U3RyaW5nIiwicm91bmRIc3ZhIiwiaHN2U3RyaW5nVG9Ic3ZhIiwicmdiYVN0cmluZ1RvSHN2YSIsInJnYmFTdHJpbmciLCJyZ2JhVG9Ic3ZhIiwicmdiU3RyaW5nVG9Ic3ZhIiwiZm9ybWF0IiwidG9TdHJpbmciLCJkZWx0YSIsIkh1ZSIsImh1ZSIsIm9uQ2hhbmdlIiwiaW50ZXJhY3Rpb24iLCJvZmZzZXQiLCJhcmlhLWxhYmVsIiwiYXJpYS12YWx1ZXRleHQiLCJTYXR1cmF0aW9uIiwiY29udGFpbmVyU3R5bGUiLCJlcXVhbENvbG9yT2JqZWN0cyIsImZpcnN0Iiwic2Vjb25kIiwicHJvcCIsImVxdWFsQ29sb3JTdHJpbmciLCJyZXBsYWNlIiwidXNlQ29sb3JNYW5pcHVsYXRpb24iLCJjb2xvck1vZGVsIiwib25DaGFuZ2VDYWxsYmFjayIsInVzZVN0YXRlIiwidG9Ic3ZhIiwidXBkYXRlSHN2YSIsImNhY2hlIiwiZXF1YWwiLCJuZXdIc3ZhIiwibmV3Q29sb3IiLCJmcm9tSHN2YSIsImhhbmRsZUNoYW5nZSIsInVzZUNhbGxiYWNrIiwicGFyYW1zIiwiT2JqZWN0IiwiYXNzaWduIiwibm9uY2UiLCJ1c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0Iiwid2luZG93IiwidXNlTGF5b3V0RWZmZWN0IiwiZ2V0Tm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsInNldE5vbmNlIiwiaGFzaCIsInN0eWxlRWxlbWVudE1hcCIsIk1hcCIsInVzZVN0eWxlU2hlZXQiLCJub2RlUmVmIiwicGFyZW50RG9jdW1lbnQiLCJkb2N1bWVudCIsImhhcyIsInN0eWxlRWxlbWVudCIsImNyZWF0ZUVsZW1lbnQiLCJpbm5lckhUTUwiLCJzZXQiLCJzZXRBdHRyaWJ1dGUiLCJoZWFkIiwiYXBwZW5kQ2hpbGQiLCJDb2xvclBpY2tlciIsImRlZmF1bHRDb2xvciIsInRvTG93ZXJDYXNlIiwiSGV4Q29sb3JQaWNrZXIiLCJwcm9wcyIsIkFscGhhIiwiZ3JhZGllbnRTdHlsZSIsImJhY2tncm91bmRJbWFnZSIsIkFscGhhQ29sb3JQaWNrZXIiLCJIc2xhQ29sb3JQaWNrZXIiLCJIc2xhU3RyaW5nQ29sb3JQaWNrZXIiLCJIc2xDb2xvclBpY2tlciIsIkhzbFN0cmluZ0NvbG9yUGlja2VyIiwiSHN2YUNvbG9yUGlja2VyIiwiSHN2YVN0cmluZ0NvbG9yUGlja2VyIiwiSHN2Q29sb3JQaWNrZXIiLCJIc3ZTdHJpbmdDb2xvclBpY2tlciIsIlJnYmFDb2xvclBpY2tlciIsIlJnYmFTdHJpbmdDb2xvclBpY2tlciIsIlJnYkNvbG9yUGlja2VyIiwiUmdiU3RyaW5nQ29sb3JQaWNrZXIiLCJtYXRjaGVyIiwiQ29sb3JJbnB1dCIsIm9uQmx1ciIsImVzY2FwZSIsInZhbGlkYXRlIiwicHJvY2VzcyIsInNldFZhbHVlIiwib25CbHVyQ2FsbGJhY2siLCJlIiwiaW5wdXRWYWx1ZSIsInRhcmdldCIsImhhbmRsZUJsdXIiLCJzcGVsbENoZWNrIiwicHJlZml4IiwiSGV4Q29sb3JJbnB1dCIsInByZWZpeGVkIiwiYWxwaGEiLCJ2YWxpZEhleCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7bVlBR2dCQSxlQUFvQkMsR0FDbEMsSUFBTUMsRUFBY0Msd0JBQU9GLEdBQ3JCRyxFQUFLRCx3QkFBTyxTQUFDRSxHQUNqQkgsRUFBWUksU0FBV0osRUFBWUksUUFBUUQsS0FJN0MsT0FGQUgsRUFBWUksUUFBVUwsRUFFZkcsRUFBR0UsWUNQQ0MsZUFBUSxTQUFDQyxFQUFnQkMsRUFBU0MsR0FDN0MsZ0JBRG9DRCxNQUFNLFlBQUdDLE1BQU0sR0FDNUNGLEVBQVNFLEVBQU1BLEVBQU1GLEVBQVNDLEVBQU1BLEVBQU1ELEdDTzdDRyxlQUFVLFNBQUNDLFNBQXdELFlBQWFBLEdBV2hGQyxlQUFrQixTQUFDQyxHQUN2QixPQUFRQSxHQUFRQSxFQUFLQyxjQUFjQyxhQUFnQkMsTUFJL0NDLGVBQXNCLFNBQzFCSixFQUNBRixFQUNBTyxHQUVBLElBQU1DLEVBQU9OLEVBQUtPLHdCQUdaQyxFQUFVWCxlQUFRQyxHQXJCSixTQUFDVyxFQUFvQkosR0FDekMsSUFBSyxJQUFJSyxFQUFJLEVBQUdBLEVBQUlELEVBQVFFLE9BQVFELElBQ2xDLEdBQUlELEVBQVFDLEdBQUdFLGFBQWVQLEVBQVMsT0FBT0ksRUFBUUMsR0FFeEQsT0FBT0QsRUFBUSxHQWlCa0JJLENBQWNmLEVBQU1XLFFBQVNKLEdBQVlQLEVBRTFFLE1BQU8sQ0FDTGdCLEtBQU1yQixnQkFBT2UsRUFBUU8sT0FBU1QsRUFBS1EsS0FBT2YsZUFBZ0JDLEdBQU1nQixjQUFnQlYsRUFBS1csT0FDckZDLElBQUt6QixnQkFBT2UsRUFBUVcsT0FBU2IsRUFBS1ksSUFBTW5CLGVBQWdCQyxHQUFNb0Is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Q3ZCLEtBQUs7QUFDTDtBQUNBLEdBQUc7QUFDSCxrQkFBa0IsNEJBQVc7QUFDN0I7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0wsR0FBRztBQUNIO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRU8sSUFBSSxrQkFBWTtBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSx1QkFBdUIsbUJBQWEsZUFBZSxrQkFBUTtBQUMzRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEsb0JBQW9CLGdCQUFVO0FBQzlCO0FBQ0E7O0FBRUE7QUFDQSxzQkFBc0IsZUFBSywyQ0FBMkMsZUFBSztBQUMzRTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMLDBCQUEwQixlQUFLLGtEQUFrRCxlQUFLO0FBQ3RGO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSyxzQ0FBc0MsZUFBSztBQUNoRCwwQkFBMEIsZUFBSyxlQUFlLHVDQUFXO0FBQ3pEO0FBQ0E7QUFDQTtBQUNBLDhCQUE4QixlQUFLO0FBQ25DO0FBQ0EsU0FBUztBQUNULE9BQU8sZUFBZSxlQUFLLGVBQWUsWUFBTTtBQUNoRDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsT0FBTztBQUNQLEtBQUs7QUFDTCxHQUFHLGVBQWUsZUFBSyxlQUFlLFlBQU07QUFDNUM7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHLGlCQUFpQixlQUFLO0FBQ3pCLFFBQVEsdUNBQVk7QUFDcEI7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQSxHQUFHLGdCQUFnQixlQUFLO0FBQ3hCO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7QUFDQSxrQkFBWTtBQUNHLDZGQUFZIiwiZmlsZSI6IjEwMDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuLy8gU2F2ZXMgaW5jb21pbmcgaGFuZGxlciB0byB0aGUgcmVmIGluIG9yZGVyIHRvIGF2b2lkIFwidXNlQ2FsbGJhY2sgaGVsbFwiXG5leHBvcnQgZnVuY3Rpb24gdXNlRXZlbnRDYWxsYmFjazxUPihoYW5kbGVyPzogKHZhbHVlOiBUKSA9PiB2b2lkKTogKHZhbHVlOiBUKSA9PiB2b2lkIHtcbiAgY29uc3QgY2FsbGJhY2tSZWYgPSB1c2VSZWYoaGFuZGxlcik7XG4gIGNvbnN0IGZuID0gdXNlUmVmKCh2YWx1ZTogVCkgPT4ge1xuICAgIGNhbGxiYWNrUmVmLmN1cnJlbnQgJiYgY2FsbGJhY2tSZWYuY3VycmVudCh2YWx1ZSk7XG4gIH0pO1xuICBjYWxsYmFja1JlZi5jdXJyZW50ID0gaGFuZGxlcjtcblxuICByZXR1cm4gZm4uY3VycmVudDtcbn1cbiIsIi8vIENsYW1wcyBhIHZhbHVlIGJldHdlZW4gYW4gdXBwZXIgYW5kIGxvd2VyIGJvdW5kLlxuLy8gV2UgdXNlIHRlcm5hcnkgb3BlcmF0b3JzIGJlY2F1c2UgaXQgbWFrZXMgdGhlIG1pbmlmaWVkIGNvZGVcbi8vIDIgdGltZXMgc2hvcnRlciB0aGVuIGBNYXRoLm1pbihNYXRoLm1heChhLGIpLGMpYFxuZXhwb3J0IGNvbnN0IGNsYW1wID0gKG51bWJlcjogbnVtYmVyLCBtaW4gPSAwLCBtYXggPSAxKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIG51bWJlciA+IG1heCA/IG1heCA6IG51bWJlciA8IG1pbiA/IG1pbiA6IG51bWJlcjtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmLCB1c2VNZW1vLCB1c2VFZmZlY3QgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBjbGFtcCB9IGZyb20gXCIuLi8uLi91dGlscy9jbGFtcFwiO1xuXG5leHBvcnQgaW50ZXJmYWNlIEludGVyYWN0aW9uIHtcbiAgbGVmdDogbnVtYmVyO1xuICB0b3A6IG51bWJlcjtcbn1cblxuLy8gQ2hlY2sgaWYgYW4gZXZlbnQgd2FzIHRyaWdnZXJlZCBieSB0b3VjaFxuY29uc3QgaXNUb3VjaCA9IChldmVudDogTW91c2VFdmVudCB8IFRvdWNoRXZlbnQpOiBldmVudCBpcyBUb3VjaEV2ZW50ID0+IFwidG91Y2hlc1wiIGluIGV2ZW50O1xuXG4vLyBGaW5kcyBhIHByb3BlciB0b3VjaCBwb2ludCBieSBpdHMgaWRlbnRpZmllclxuY29uc3QgZ2V0VG91Y2hQb2ludCA9ICh0b3VjaGVzOiBUb3VjaExpc3QsIHRvdWNoSWQ6IG51bGwgfCBudW1iZXIpOiBUb3VjaCA9PiB7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG91Y2hlcy5sZW5ndGg7IGkrKykge1xuICAgIGlmICh0b3VjaGVzW2ldLmlkZW50aWZpZXIgPT09IHRvdWNoSWQpIHJldHVybiB0b3VjaGVzW2ldO1xuICB9XG4gIHJldHVybiB0b3VjaGVzWzBdO1xufTtcblxuLy8gRmluZHMgdGhlIHByb3BlciB3aW5kb3cgb2JqZWN0IHRvIGZpeCBpZnJhbWUgZW1iZWRkaW5nIGlzc3Vlc1xuY29uc3QgZ2V0UGFyZW50V2luZG93ID0gKG5vZGU/OiBIVE1MRGl2RWxlbWVudCB8IG51bGwpOiBXaW5kb3cgPT4ge1xuICByZXR1cm4gKG5vZGUgJiYgbm9kZS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fCBzZWxmO1xufTtcblxuLy8gUmV0dXJucyBhIHJlbGF0aXZlIHBvc2l0aW9uIG9mIHRoZSBwb2ludGVyIGluc2lkZSB0aGUgbm9kZSdzIGJvdW5kaW5nIGJveFxuY29uc3QgZ2V0UmVsYXRpdmVQb3NpdGlvbiA9IChcbiAgbm9kZTogSFRNTERpdkVsZW1lbnQsXG4gIGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCxcbiAgdG91Y2hJZDogbnVsbCB8IG51bWJlclxuKTogSW50ZXJhY3Rpb24gPT4ge1xuICBjb25zdCByZWN0ID0gbm9kZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcblxuICAvLyBHZXQgdXNlcidzIHBvaW50ZXIgcG9zaXRpb24gZnJvbSBgdG91Y2hlc2AgYXJyYXkgaWYgaXQncyBhIGBUb3VjaEV2ZW50YFxuICBjb25zdCBwb2ludGVyID0gaXNUb3VjaChldmVudCkgPyBnZXRUb3VjaFBvaW50KGV2ZW50LnRvdWNoZXMsIHRvdWNoSWQpIDogKGV2ZW50IGFzIE1vdXNlRXZlbnQpO1xuXG4gIHJldHVybiB7XG4gICAgbGVmdDogY2xhbXAoKHBvaW50ZXIucGFnZVggLSAocmVjdC5sZWZ0ICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VYT2Zmc2V0KSkgLyByZWN0LndpZHRoKSxcbiAgICB0b3A6IGNsYW1wKChwb2ludGVyLnBhZ2VZIC0gKHJlY3QudG9wICsgZ2V0UGFyZW50V2luZG93KG5vZGUpLnBhZ2VZT2Zmc2V0KSkgLyByZWN0LmhlaWdodCksXG4gIH07XG59O1xuXG4vLyBCcm93c2VycyBpbnRyb2R1Y2VkIGFuIGludGVydmVudGlvbiwgbWFraW5nIHRvdWNoIGV2ZW50cyBwYXNzaXZlIGJ5IGRlZmF1bHQuXG4vLyBUaGlzIHdvcmthcm91bmQgcmVtb3ZlcyBgcHJldmVudERlZmF1bHRgIGNhbGwgZnJvbSB0aGUgdG91Y2ggaGFuZGxlcnMuXG4vLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5NjUxXG5jb25zdCBwcmV2ZW50RGVmYXVsdE1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KTogdm9pZCA9PiB7XG4gICFpc1RvdWNoKGV2ZW50KSAmJiBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xufTtcblxuLy8gUHJldmVudCBtb2JpbGUgYnJvd3NlcnMgZnJvbSBoYW5kbGluZyBtb3VzZSBldmVudHMgKGNvbmZsaWN0aW5nIHdpdGggdG91Y2ggb25lcykuXG4vLyBJZiB3ZSBkZXRlY3RlZCBhIHRvdWNoIGludGVyYWN0aW9uIGJlZm9yZSwgd2UgcHJlZmVyIHJlYWN0aW5nIHRvIHRvdWNoIGV2ZW50cyBvbmx5LlxuY29uc3QgaXNJbnZhbGlkID0gKGV2ZW50OiBNb3VzZUV2ZW50IHwgVG91Y2hFdmVudCwgaGFzVG91Y2g6IGJvb2xlYW4pOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGhhc1RvdWNoICYmICFpc1RvdWNoKGV2ZW50KTtcbn07XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIG9uTW92ZTogKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4gdm9pZDtcbiAgb25LZXk6IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB2b2lkO1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xufVxuXG5jb25zdCBJbnRlcmFjdGl2ZUJhc2UgPSAoeyBvbk1vdmUsIG9uS2V5LCAuLi5yZXN0IH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGNvbnRhaW5lciA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIGNvbnN0IG9uTW92ZUNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxJbnRlcmFjdGlvbj4ob25Nb3ZlKTtcbiAgY29uc3Qgb25LZXlDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8SW50ZXJhY3Rpb24+KG9uS2V5KTtcbiAgY29uc3QgdG91Y2hJZCA9IHVzZVJlZjxudWxsIHwgbnVtYmVyPihudWxsKTtcbiAgY29uc3QgaGFzVG91Y2ggPSB1c2VSZWYoZmFsc2UpO1xuXG4gIGNvbnN0IFtoYW5kbGVNb3ZlU3RhcnQsIGhhbmRsZUtleURvd24sIHRvZ2dsZURvY3VtZW50RXZlbnRzXSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IGhhbmRsZU1vdmVTdGFydCA9ICh7IG5hdGl2ZUV2ZW50IH06IFJlYWN0Lk1vdXNlRXZlbnQgfCBSZWFjdC5Ub3VjaEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBlbCA9IGNvbnRhaW5lci5jdXJyZW50O1xuICAgICAgaWYgKCFlbCkgcmV0dXJuO1xuXG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUobmF0aXZlRXZlbnQpO1xuXG4gICAgICBpZiAoaXNJbnZhbGlkKG5hdGl2ZUV2ZW50LCBoYXNUb3VjaC5jdXJyZW50KSB8fCAhZWwpIHJldHVybjtcblxuICAgICAgaWYgKGlzVG91Y2gobmF0aXZlRXZlbnQpKSB7XG4gICAgICAgIGhhc1RvdWNoLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICBjb25zdCBjaGFuZ2VkVG91Y2hlcyA9IG5hdGl2ZUV2ZW50LmNoYW5nZWRUb3VjaGVzIHx8IFtdO1xuICAgICAgICBpZiAoY2hhbmdlZFRvdWNoZXMubGVuZ3RoKSB0b3VjaElkLmN1cnJlbnQgPSBjaGFuZ2VkVG91Y2hlc1swXS5pZGVudGlmaWVyO1xuICAgICAgfVxuXG4gICAgICBlbC5mb2N1cygpO1xuICAgICAgb25Nb3ZlQ2FsbGJhY2soZ2V0UmVsYXRpdmVQb3NpdGlvbihlbCwgbmF0aXZlRXZlbnQsIHRvdWNoSWQuY3VycmVudCkpO1xuICAgICAgdG9nZ2xlRG9jdW1lbnRFdmVudHModHJ1ZSk7XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmUgPSAoZXZlbnQ6IE1vdXNlRXZlbnQgfCBUb3VjaEV2ZW50KSA9PiB7XG4gICAgICAvLyBQcmV2ZW50IHRleHQgc2VsZWN0aW9uXG4gICAgICBwcmV2ZW50RGVmYXVsdE1vdmUoZXZlbnQpO1xuXG4gICAgICAvLyBJZiB1c2VyIG1vdmVzIHRoZSBwb2ludGVyIG91dHNpZGUgb2YgdGhlIHdpbmRvdyBvciBpZnJhbWUgYm91bmRzIGFuZCByZWxlYXNlIGl0IHRoZXJlLFxuICAgICAgLy8gYG1vdXNldXBgL2B0b3VjaGVuZGAgd29uJ3QgYmUgZmlyZWQuIEluIG9yZGVyIHRvIHN0b3AgdGhlIHBpY2tlciBmcm9tIGZvbGxvd2luZyB0aGUgY3Vyc29yXG4gICAgICAvLyBhZnRlciB0aGUgdXNlciBoYXMgbW92ZWQgdGhlIG1vdXNlL2ZpbmdlciBiYWNrIHRvIHRoZSBkb2N1bWVudCwgd2UgY2hlY2sgYGV2ZW50LmJ1dHRvbnNgXG4gICAgICAvLyBhbmQgYGV2ZW50LnRvdWNoZXNgLiBJdCBhbGxvd3MgdXMgdG8gZGV0ZWN0IHRoYXQgdGhlIHVzZXIgaXMganVzdCBtb3ZpbmcgaGlzIHBvaW50ZXJcbiAgICAgIC8vIHdpdGhvdXQgcHJlc3NpbmcgaXQgZG93blxuICAgICAgY29uc3QgaXNEb3duID0gaXNUb3VjaChldmVudCkgPyBldmVudC50b3VjaGVzLmxlbmd0aCA+IDAgOiBldmVudC5idXR0b25zID4gMDtcblxuICAgICAgaWYgKGlzRG93biAmJiBjb250YWluZXIuY3VycmVudCkge1xuICAgICAgICBvbk1vdmVDYWxsYmFjayhnZXRSZWxhdGl2ZVBvc2l0aW9uKGNvbnRhaW5lci5jdXJyZW50LCBldmVudCwgdG91Y2hJZC5jdXJyZW50KSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZU1vdmVFbmQgPSAoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cyhmYWxzZSk7XG5cbiAgICBjb25zdCBoYW5kbGVLZXlEb3duID0gKGV2ZW50OiBSZWFjdC5LZXlib2FyZEV2ZW50KSA9PiB7XG4gICAgICBjb25zdCBrZXlDb2RlID0gZXZlbnQud2hpY2ggfHwgZXZlbnQua2V5Q29kZTtcblxuICAgICAgLy8gSWdub3JlIGFsbCBrZXlzIGV4Y2VwdCBhcnJvdyBvbmVzXG4gICAgICBpZiAoa2V5Q29kZSA8IDM3IHx8IGtleUNvZGUgPiA0MCkgcmV0dXJuO1xuICAgICAgLy8gRG8gbm90IHNjcm9sbCBwYWdlIGJ5IGFycm93IGtleXMgd2hlbiBkb2N1bWVudCBpcyBmb2N1c2VkIG9uIHRoZSBlbGVtZW50XG4gICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgLy8gU2VuZCByZWxhdGl2ZSBvZmZzZXQgdG8gdGhlIHBhcmVudCBjb21wb25lbnQuXG4gICAgICAvLyBXZSB1c2UgY29kZXMgKDM34oaQLCAzOOKGkSwgMznihpIsIDQw4oaTKSBpbnN0ZWFkIG9mIGtleXMgKCdBcnJvd1JpZ2h0JywgJ0Fycm93RG93bicsIGV0YylcbiAgICAgIC8vIHRvIHJlZHVjZSB0aGUgc2l6ZSBvZiB0aGUgbGlicmFyeVxuICAgICAgb25LZXlDYWxsYmFjayh7XG4gICAgICAgIGxlZnQ6IGtleUNvZGUgPT09IDM5ID8gMC4wNSA6IGtleUNvZGUgPT09IDM3ID8gLTAuMDUgOiAwLFxuICAgICAgICB0b3A6IGtleUNvZGUgPT09IDQwID8gMC4wNSA6IGtleUNvZGUgPT09IDM4ID8gLTAuMDUgOiAwLFxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIGZ1bmN0aW9uIHRvZ2dsZURvY3VtZW50RXZlbnRzKHN0YXRlPzogYm9vbGVhbikge1xuICAgICAgY29uc3QgdG91Y2ggPSBoYXNUb3VjaC5jdXJyZW50O1xuICAgICAgY29uc3QgZWwgPSBjb250YWluZXIuY3VycmVudDtcbiAgICAgIGNvbnN0IHBhcmVudFdpbmRvdyA9IGdldFBhcmVudFdpbmRvdyhlbCk7XG5cbiAgICAgIC8vIEFkZCBvciByZW1vdmUgYWRkaXRpb25hbCBwb2ludGVyIGV2ZW50IGxpc3RlbmVyc1xuICAgICAgY29uc3QgdG9nZ2xlRXZlbnQgPSBzdGF0ZSA/IHBhcmVudFdpbmRvdy5hZGRFdmVudExpc3RlbmVyIDogcGFyZW50V2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXI7XG4gICAgICB0b2dnbGVFdmVudCh0b3VjaCA/IFwidG91Y2htb3ZlXCIgOiBcIm1vdXNlbW92ZVwiLCBoYW5kbGVNb3ZlKTtcbiAgICAgIHRvZ2dsZUV2ZW50KHRvdWNoID8gXCJ0b3VjaGVuZFwiIDogXCJtb3VzZXVwXCIsIGhhbmRsZU1vdmVFbmQpO1xuICAgIH1cblxuICAgIHJldHVybiBbaGFuZGxlTW92ZVN0YXJ0LCBoYW5kbGVLZXlEb3duLCB0b2dnbGVEb2N1bWVudEV2ZW50c107XG4gIH0sIFtvbktleUNhbGxiYWNrLCBvbk1vdmVDYWxsYmFja10pO1xuXG4gIC8vIFJlbW92ZSB3aW5kb3cgZXZlbnQgbGlzdGVuZXJzIGJlZm9yZSB1bm1vdW50aW5nXG4gIHVzZUVmZmVjdCgoKSA9PiB0b2dnbGVEb2N1bWVudEV2ZW50cywgW3RvZ2dsZURvY3VtZW50RXZlbnRzXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIG9uVG91Y2hTdGFydD17aGFuZGxlTW92ZVN0YXJ0fVxuICAgICAgb25Nb3VzZURvd249e2hhbmRsZU1vdmVTdGFydH1cbiAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19pbnRlcmFjdGl2ZVwiXG4gICAgICByZWY9e2NvbnRhaW5lcn1cbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93bn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cInNsaWRlclwiXG4gICAgLz5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBJbnRlcmFjdGl2ZSA9IFJlYWN0Lm1lbW8oSW50ZXJhY3RpdmVCYXNlKTtcbiIsImV4cG9ydCBjb25zdCBmb3JtYXRDbGFzc05hbWUgPSAobmFtZXM6IHVua25vd25bXSk6IHN0cmluZyA9PiBuYW1lcy5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgdG9wPzogbnVtYmVyO1xuICBsZWZ0OiBudW1iZXI7XG4gIGNvbG9yOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjb25zdCBQb2ludGVyID0gKHsgY2xhc3NOYW1lLCBjb2xvciwgbGVmdCwgdG9wID0gMC41IH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19wb2ludGVyXCIsIGNsYXNzTmFtZV0pO1xuXG4gIGNvbnN0IHN0eWxlID0ge1xuICAgIHRvcDogYCR7dG9wICogMTAwfSVgLFxuICAgIGxlZnQ6IGAke2xlZnQgKiAxMDB9JWAsXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0gc3R5bGU9e3N0eWxlfT5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3BvaW50ZXItZmlsbFwiIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogY29sb3IgfX0gLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJleHBvcnQgY29uc3Qgcm91bmQgPSAobnVtYmVyOiBudW1iZXIsIGRpZ2l0cyA9IDAsIGJhc2UgPSBNYXRoLnBvdygxMCwgZGlnaXRzKSk6IG51bWJlciA9PiB7XG4gIHJldHVybiBNYXRoLnJvdW5kKGJhc2UgKiBudW1iZXIpIC8gYmFzZTtcbn07XG4iLCJpbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuL3JvdW5kXCI7XG5pbXBvcnQgeyBSZ2JhQ29sb3IsIFJnYkNvbG9yLCBIc2xhQ29sb3IsIEhzbENvbG9yLCBIc3ZhQ29sb3IsIEhzdkNvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5cbi8qKlxuICogVmFsaWQgQ1NTIDxhbmdsZT4gdW5pdHMuXG4gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9DU1MvYW5nbGVcbiAqL1xuY29uc3QgYW5nbGVVbml0czogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHtcbiAgZ3JhZDogMzYwIC8gNDAwLFxuICB0dXJuOiAzNjAsXG4gIHJhZDogMzYwIC8gKE1hdGguUEkgKiAyKSxcbn07XG5cbmV4cG9ydCBjb25zdCBoZXhUb0hzdmEgPSAoaGV4OiBzdHJpbmcpOiBIc3ZhQ29sb3IgPT4gcmdiYVRvSHN2YShoZXhUb1JnYmEoaGV4KSk7XG5cbmV4cG9ydCBjb25zdCBoZXhUb1JnYmEgPSAoaGV4OiBzdHJpbmcpOiBSZ2JhQ29sb3IgPT4ge1xuICBpZiAoaGV4WzBdID09PSBcIiNcIikgaGV4ID0gaGV4LnN1YnN0cigxKTtcblxuICBpZiAoaGV4Lmxlbmd0aCA8IDYpIHtcbiAgICByZXR1cm4ge1xuICAgICAgcjogcGFyc2VJbnQoaGV4WzBdICsgaGV4WzBdLCAxNiksXG4gICAgICBnOiBwYXJzZUludChoZXhbMV0gKyBoZXhbMV0sIDE2KSxcbiAgICAgIGI6IHBhcnNlSW50KGhleFsyXSArIGhleFsyXSwgMTYpLFxuICAgICAgYTogMSxcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICByOiBwYXJzZUludChoZXguc3Vic3RyKDAsIDIpLCAxNiksXG4gICAgZzogcGFyc2VJbnQoaGV4LnN1YnN0cigyLCAyKSwgMTYpLFxuICAgIGI6IHBhcnNlSW50KGhleC5zdWJzdHIoNCwgMiksIDE2KSxcbiAgICBhOiAxLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHBhcnNlSHVlID0gKHZhbHVlOiBzdHJpbmcsIHVuaXQgPSBcImRlZ1wiKTogbnVtYmVyID0+IHtcbiAgcmV0dXJuIE51bWJlcih2YWx1ZSkgKiAoYW5nbGVVbml0c1t1bml0XSB8fCAxKTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xhU3RyaW5nVG9Ic3ZhID0gKGhzbFN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc2xhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHNsU3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIGhzbGFUb0hzdmEoe1xuICAgIGg6IHBhcnNlSHVlKG1hdGNoWzFdLCBtYXRjaFsyXSksXG4gICAgczogTnVtYmVyKG1hdGNoWzNdKSxcbiAgICBsOiBOdW1iZXIobWF0Y2hbNF0pLFxuICAgIGE6IG1hdGNoWzVdID09PSB1bmRlZmluZWQgPyAxIDogTnVtYmVyKG1hdGNoWzVdKSAvIChtYXRjaFs2XSA/IDEwMCA6IDEpLFxuICB9KTtcbn07XG5cbmV4cG9ydCBjb25zdCBoc2xTdHJpbmdUb0hzdmEgPSBoc2xhU3RyaW5nVG9Ic3ZhO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHN2YSA9ICh7IGgsIHMsIGwsIGEgfTogSHNsYUNvbG9yKTogSHN2YUNvbG9yID0+IHtcbiAgcyAqPSAobCA8IDUwID8gbCA6IDEwMCAtIGwpIC8gMTAwO1xuXG4gIHJldHVybiB7XG4gICAgaDogaCxcbiAgICBzOiBzID4gMCA/ICgoMiAqIHMpIC8gKGwgKyBzKSkgKiAxMDAgOiAwLFxuICAgIHY6IGwgKyBzLFxuICAgIGEsXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSGV4ID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiByZ2JhVG9IZXgoaHN2YVRvUmdiYShoc3ZhKSk7XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic2xhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBIc2xhQ29sb3IgPT4ge1xuICBjb25zdCBoaCA9ICgoMjAwIC0gcykgKiB2KSAvIDEwMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKGgpLFxuICAgIHM6IHJvdW5kKGhoID4gMCAmJiBoaCA8IDIwMCA/ICgocyAqIHYpIC8gMTAwIC8gKGhoIDw9IDEwMCA/IGhoIDogMjAwIC0gaGgpKSAqIDEwMCA6IDApLFxuICAgIGw6IHJvdW5kKGhoIC8gMiksXG4gICAgYTogcm91bmQoYSwgMiksXG4gIH07XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgbCB9ID0gaHN2YVRvSHNsYShoc3ZhKTtcbiAgcmV0dXJuIGBoc2woJHtofSwgJHtzfSUsICR7bH0lKWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2U3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdigke2h9LCAke3N9JSwgJHt2fSUpYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9Ic3ZhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgaCwgcywgdiwgYSB9ID0gcm91bmRIc3ZhKGhzdmEpO1xuICByZXR1cm4gYGhzdmEoJHtofSwgJHtzfSUsICR7dn0lLCAke2F9KWA7XG59O1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHNsYVN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IGgsIHMsIGwsIGEgfSA9IGhzdmFUb0hzbGEoaHN2YSk7XG4gIHJldHVybiBgaHNsYSgke2h9LCAke3N9JSwgJHtsfSUsICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhID0gKHsgaCwgcywgdiwgYSB9OiBIc3ZhQ29sb3IpOiBSZ2JhQ29sb3IgPT4ge1xuICBoID0gKGggLyAzNjApICogNjtcbiAgcyA9IHMgLyAxMDA7XG4gIHYgPSB2IC8gMTAwO1xuXG4gIGNvbnN0IGhoID0gTWF0aC5mbG9vcihoKSxcbiAgICBiID0gdiAqICgxIC0gcyksXG4gICAgYyA9IHYgKiAoMSAtIChoIC0gaGgpICogcyksXG4gICAgZCA9IHYgKiAoMSAtICgxIC0gaCArIGhoKSAqIHMpLFxuICAgIG1vZHVsZSA9IGhoICUgNjtcblxuICByZXR1cm4ge1xuICAgIHI6IHJvdW5kKFt2LCBjLCBiLCBiLCBkLCB2XVttb2R1bGVdICogMjU1KSxcbiAgICBnOiByb3VuZChbZCwgdiwgdiwgYywgYiwgYl1bbW9kdWxlXSAqIDI1NSksXG4gICAgYjogcm91bmQoW2IsIGIsIGQsIHYsIHYsIGNdW21vZHVsZV0gKiAyNTUpLFxuICAgIGE6IHJvdW5kKGEsIDIpLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdmFUb1JnYlN0cmluZyA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBzdHJpbmcgPT4ge1xuICBjb25zdCB7IHIsIGcsIGIgfSA9IGhzdmFUb1JnYmEoaHN2YSk7XG4gIHJldHVybiBgcmdiKCR7cn0sICR7Z30sICR7Yn0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhVG9SZ2JhU3RyaW5nID0gKGhzdmE6IEhzdmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHsgciwgZywgYiwgYSB9ID0gaHN2YVRvUmdiYShoc3ZhKTtcbiAgcmV0dXJuIGByZ2JhKCR7cn0sICR7Z30sICR7Yn0sICR7YX0pYDtcbn07XG5cbmV4cG9ydCBjb25zdCBoc3ZhU3RyaW5nVG9Ic3ZhID0gKGhzdlN0cmluZzogc3RyaW5nKTogSHN2YUNvbG9yID0+IHtcbiAgY29uc3QgbWF0Y2hlciA9IC9oc3ZhP1xcKD9cXHMqKC0/XFxkKlxcLj9cXGQrKShkZWd8cmFkfGdyYWR8dHVybik/WyxcXHNdKygtP1xcZCpcXC4/XFxkKyklP1ssXFxzXSsoLT9cXGQqXFwuP1xcZCspJT8sP1xccypbL1xcc10qKC0/XFxkKlxcLj9cXGQrKT8oJSk/XFxzKlxcKT8vaTtcbiAgY29uc3QgbWF0Y2ggPSBtYXRjaGVyLmV4ZWMoaHN2U3RyaW5nKTtcblxuICBpZiAoIW1hdGNoKSByZXR1cm4geyBoOiAwLCBzOiAwLCB2OiAwLCBhOiAxIH07XG5cbiAgcmV0dXJuIHJvdW5kSHN2YSh7XG4gICAgaDogcGFyc2VIdWUobWF0Y2hbMV0sIG1hdGNoWzJdKSxcbiAgICBzOiBOdW1iZXIobWF0Y2hbM10pLFxuICAgIHY6IE51bWJlcihtYXRjaFs0XSksXG4gICAgYTogbWF0Y2hbNV0gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IGhzdlN0cmluZ1RvSHN2YSA9IGhzdmFTdHJpbmdUb0hzdmE7XG5cbmV4cG9ydCBjb25zdCByZ2JhU3RyaW5nVG9Ic3ZhID0gKHJnYmFTdHJpbmc6IHN0cmluZyk6IEhzdmFDb2xvciA9PiB7XG4gIGNvbnN0IG1hdGNoZXIgPSAvcmdiYT9cXCg/XFxzKigtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/WyxcXHNdKygtP1xcZCpcXC4/XFxkKykoJSk/LD9cXHMqWy9cXHNdKigtP1xcZCpcXC4/XFxkKyk/KCUpP1xccypcXCk/L2k7XG4gIGNvbnN0IG1hdGNoID0gbWF0Y2hlci5leGVjKHJnYmFTdHJpbmcpO1xuXG4gIGlmICghbWF0Y2gpIHJldHVybiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfTtcblxuICByZXR1cm4gcmdiYVRvSHN2YSh7XG4gICAgcjogTnVtYmVyKG1hdGNoWzFdKSAvIChtYXRjaFsyXSA/IDEwMCAvIDI1NSA6IDEpLFxuICAgIGc6IE51bWJlcihtYXRjaFszXSkgLyAobWF0Y2hbNF0gPyAxMDAgLyAyNTUgOiAxKSxcbiAgICBiOiBOdW1iZXIobWF0Y2hbNV0pIC8gKG1hdGNoWzZdID8gMTAwIC8gMjU1IDogMSksXG4gICAgYTogbWF0Y2hbN10gPT09IHVuZGVmaW5lZCA/IDEgOiBOdW1iZXIobWF0Y2hbN10pIC8gKG1hdGNoWzhdID8gMTAwIDogMSksXG4gIH0pO1xufTtcblxuZXhwb3J0IGNvbnN0IHJnYlN0cmluZ1RvSHN2YSA9IHJnYmFTdHJpbmdUb0hzdmE7XG5cbmNvbnN0IGZvcm1hdCA9IChudW1iZXI6IG51bWJlcikgPT4ge1xuICBjb25zdCBoZXggPSBudW1iZXIudG9TdHJpbmcoMTYpO1xuICByZXR1cm4gaGV4Lmxlbmd0aCA8IDIgPyBcIjBcIiArIGhleCA6IGhleDtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9IZXggPSAoeyByLCBnLCBiIH06IFJnYmFDb2xvcik6IHN0cmluZyA9PiB7XG4gIHJldHVybiBcIiNcIiArIGZvcm1hdChyKSArIGZvcm1hdChnKSArIGZvcm1hdChiKTtcbn07XG5cbmV4cG9ydCBjb25zdCByZ2JhVG9Ic3ZhID0gKHsgciwgZywgYiwgYSB9OiBSZ2JhQ29sb3IpOiBIc3ZhQ29sb3IgPT4ge1xuICBjb25zdCBtYXggPSBNYXRoLm1heChyLCBnLCBiKTtcbiAgY29uc3QgZGVsdGEgPSBtYXggLSBNYXRoLm1pbihyLCBnLCBiKTtcblxuICAvLyBwcmV0dGllci1pZ25vcmVcbiAgY29uc3QgaGggPSBkZWx0YVxuICAgID8gbWF4ID09PSByXG4gICAgICA/IChnIC0gYikgLyBkZWx0YVxuICAgICAgOiBtYXggPT09IGdcbiAgICAgICAgPyAyICsgKGIgLSByKSAvIGRlbHRhXG4gICAgICAgIDogNCArIChyIC0gZykgLyBkZWx0YVxuICAgIDogMDtcblxuICByZXR1cm4ge1xuICAgIGg6IHJvdW5kKDYwICogKGhoIDwgMCA/IGhoICsgNiA6IGhoKSksXG4gICAgczogcm91bmQobWF4ID8gKGRlbHRhIC8gbWF4KSAqIDEwMCA6IDApLFxuICAgIHY6IHJvdW5kKChtYXggLyAyNTUpICogMTAwKSxcbiAgICBhLFxuICB9O1xufTtcblxuZXhwb3J0IGNvbnN0IHJvdW5kSHN2YSA9IChoc3ZhOiBIc3ZhQ29sb3IpOiBIc3ZhQ29sb3IgPT4gKHtcbiAgaDogcm91bmQoaHN2YS5oKSxcbiAgczogcm91bmQoaHN2YS5zKSxcbiAgdjogcm91bmQoaHN2YS52KSxcbiAgYTogcm91bmQoaHN2YS5hLCAyKSxcbn0pO1xuXG5leHBvcnQgY29uc3QgcmdiYVRvUmdiID0gKHsgciwgZywgYiB9OiBSZ2JhQ29sb3IpOiBSZ2JDb2xvciA9PiAoeyByLCBnLCBiIH0pO1xuXG5leHBvcnQgY29uc3QgaHNsYVRvSHNsID0gKHsgaCwgcywgbCB9OiBIc2xhQ29sb3IpOiBIc2xDb2xvciA9PiAoeyBoLCBzLCBsIH0pO1xuXG5leHBvcnQgY29uc3QgaHN2YVRvSHN2ID0gKGhzdmE6IEhzdmFDb2xvcik6IEhzdkNvbG9yID0+IHtcbiAgY29uc3QgeyBoLCBzLCB2IH0gPSByb3VuZEhzdmEoaHN2YSk7XG4gIHJldHVybiB7IGgsIHMsIHYgfTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY29udmVydFwiO1xuaW1wb3J0IHsgZm9ybWF0Q2xhc3NOYW1lIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2Zvcm1hdFwiO1xuaW1wb3J0IHsgY2xhbXAgfSBmcm9tIFwiLi4vLi4vdXRpbHMvY2xhbXBcIjtcbmltcG9ydCB7IHJvdW5kIH0gZnJvbSBcIi4uLy4uL3V0aWxzL3JvdW5kXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHVlOiBudW1iZXI7XG4gIG9uQ2hhbmdlOiAobmV3SHVlOiB7IGg6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5jb25zdCBIdWVCYXNlID0gKHsgY2xhc3NOYW1lLCBodWUsIG9uQ2hhbmdlIH06IFByb3BzKSA9PiB7XG4gIGNvbnN0IGhhbmRsZU1vdmUgPSAoaW50ZXJhY3Rpb246IEludGVyYWN0aW9uKSA9PiB7XG4gICAgb25DaGFuZ2UoeyBoOiAzNjAgKiBpbnRlcmFjdGlvbi5sZWZ0IH0pO1xuICB9O1xuXG4gIGNvbnN0IGhhbmRsZUtleSA9IChvZmZzZXQ6IEludGVyYWN0aW9uKSA9PiB7XG4gICAgLy8gSHVlIG1lYXN1cmVkIGluIGRlZ3JlZXMgb2YgdGhlIGNvbG9yIGNpcmNsZSByYW5naW5nIGZyb20gMCB0byAzNjBcbiAgICBvbkNoYW5nZSh7XG4gICAgICBoOiBjbGFtcChodWUgKyBvZmZzZXQubGVmdCAqIDM2MCwgMCwgMzYwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsX19odWVcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8SW50ZXJhY3RpdmVcbiAgICAgICAgb25Nb3ZlPXtoYW5kbGVNb3ZlfVxuICAgICAgICBvbktleT17aGFuZGxlS2V5fVxuICAgICAgICBhcmlhLWxhYmVsPVwiSHVlXCJcbiAgICAgICAgYXJpYS12YWx1ZXRleHQ9e3JvdW5kKGh1ZSl9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2h1ZS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtodWUgLyAzNjB9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbFN0cmluZyh7IGg6IGh1ZSwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcblxuZXhwb3J0IGNvbnN0IEh1ZSA9IFJlYWN0Lm1lbW8oSHVlQmFzZSk7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBJbnRlcmFjdGl2ZSwgSW50ZXJhY3Rpb24gfSBmcm9tIFwiLi9JbnRlcmFjdGl2ZVwiO1xuaW1wb3J0IHsgUG9pbnRlciB9IGZyb20gXCIuL1BvaW50ZXJcIjtcbmltcG9ydCB7IEhzdmFDb2xvciB9IGZyb20gXCIuLi8uLi90eXBlc1wiO1xuaW1wb3J0IHsgaHN2YVRvSHNsU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuXG5pbnRlcmZhY2UgUHJvcHMge1xuICBoc3ZhOiBIc3ZhQ29sb3I7XG4gIG9uQ2hhbmdlOiAobmV3Q29sb3I6IHsgczogbnVtYmVyOyB2OiBudW1iZXIgfSkgPT4gdm9pZDtcbn1cblxuY29uc3QgU2F0dXJhdGlvbkJhc2UgPSAoeyBoc3ZhLCBvbkNoYW5nZSB9OiBQcm9wcykgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGludGVyYWN0aW9uLmxlZnQgKiAxMDAsXG4gICAgICB2OiAxMDAgLSBpbnRlcmFjdGlvbi50b3AgKiAxMDAsXG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlS2V5ID0gKG9mZnNldDogSW50ZXJhY3Rpb24pID0+IHtcbiAgICAvLyBTYXR1cmF0aW9uIGFuZCBicmlnaHRuZXNzIGFsd2F5cyBmaXQgaW50byBbMCwgMTAwXSByYW5nZVxuICAgIG9uQ2hhbmdlKHtcbiAgICAgIHM6IGNsYW1wKGhzdmEucyArIG9mZnNldC5sZWZ0ICogMTAwLCAwLCAxMDApLFxuICAgICAgdjogY2xhbXAoaHN2YS52IC0gb2Zmc2V0LnRvcCAqIDEwMCwgMCwgMTAwKSxcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjb250YWluZXJTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGhzdmFUb0hzbFN0cmluZyh7IGg6IGhzdmEuaCwgczogMTAwLCB2OiAxMDAsIGE6IDEgfSksXG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19zYXR1cmF0aW9uXCIgc3R5bGU9e2NvbnRhaW5lclN0eWxlfT5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJDb2xvclwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgU2F0dXJhdGlvbiAke3JvdW5kKGhzdmEucyl9JSwgQnJpZ2h0bmVzcyAke3JvdW5kKGhzdmEudil9JWB9XG4gICAgICA+XG4gICAgICAgIDxQb2ludGVyXG4gICAgICAgICAgY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24tcG9pbnRlclwiXG4gICAgICAgICAgdG9wPXsxIC0gaHN2YS52IC8gMTAwfVxuICAgICAgICAgIGxlZnQ9e2hzdmEucyAvIDEwMH1cbiAgICAgICAgICBjb2xvcj17aHN2YVRvSHNsU3RyaW5nKGhzdmEpfVxuICAgICAgICAvPlxuICAgICAgPC9JbnRlcmFjdGl2ZT5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG5cbmV4cG9ydCBjb25zdCBTYXR1cmF0aW9uID0gUmVhY3QubWVtbyhTYXR1cmF0aW9uQmFzZSk7XG4iLCJpbXBvcnQgeyBoZXhUb1JnYmEgfSBmcm9tIFwiLi9jb252ZXJ0XCI7XG5pbXBvcnQgeyBPYmplY3RDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuXG5leHBvcnQgY29uc3QgZXF1YWxDb2xvck9iamVjdHMgPSAoZmlyc3Q6IE9iamVjdENvbG9yLCBzZWNvbmQ6IE9iamVjdENvbG9yKTogYm9vbGVhbiA9PiB7XG4gIGlmIChmaXJzdCA9PT0gc2Vjb25kKSByZXR1cm4gdHJ1ZTtcblxuICBmb3IgKGNvbnN0IHByb3AgaW4gZmlyc3QpIHtcbiAgICAvLyBUaGUgZm9sbG93aW5nIGFsbG93cyBmb3IgYSB0eXBlLXNhZmUgY2FsbGluZyBvZiB0aGlzIGZ1bmN0aW9uIChmaXJzdCAmIHNlY29uZCBoYXZlIHRvIGJlIEhTTCwgSFNWLCBvciBSR0IpXG4gICAgLy8gd2l0aCB0eXBlLXVuc2FmZSBpdGVyYXRpbmcgb3ZlciBvYmplY3Qga2V5cy4gVFMgZG9lcyBub3QgYWxsb3cgdGhpcyB3aXRob3V0IGFuIGluZGV4IChgW2tleTogc3RyaW5nXTogbnVtYmVyYClcbiAgICAvLyBvbiBhbiBvYmplY3QgdG8gZGVmaW5lIGhvdyBpdGVyYXRpb24gaXMgbm9ybWFsbHkgZG9uZS4gVG8gZW5zdXJlIGV4dHJhIGtleXMgYXJlIG5vdCBhbGxvd2VkIG9uIG91ciB0eXBlcyxcbiAgICAvLyB3ZSBtdXN0IGNhc3Qgb3VyIG9iamVjdCB0byB1bmtub3duIChhcyBSR0IgZGVtYW5kcyBgcmAgYmUgYSBrZXksIHdoaWxlIGBSZWNvcmQ8c3RyaW5nLCB4PmAgZG9lcyBub3QgY2FyZSBpZlxuICAgIC8vIHRoZXJlIGlzIG9yIG5vdCksIGFuZCB0aGVuIGFzIGEgdHlwZSBUUyBjYW4gaXRlcmF0ZSBvdmVyLlxuICAgIGlmIChcbiAgICAgICgoZmlyc3QgYXMgdW5rbm93bikgYXMgUmVjb3JkPHN0cmluZywgbnVtYmVyPilbcHJvcF0gIT09XG4gICAgICAoKHNlY29uZCBhcyB1bmtub3duKSBhcyBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+KVtwcm9wXVxuICAgIClcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufTtcblxuZXhwb3J0IGNvbnN0IGVxdWFsQ29sb3JTdHJpbmcgPSAoZmlyc3Q6IHN0cmluZywgc2Vjb25kOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIGZpcnN0LnJlcGxhY2UoL1xccy9nLCBcIlwiKSA9PT0gc2Vjb25kLnJlcGxhY2UoL1xccy9nLCBcIlwiKTtcbn07XG5cbmV4cG9ydCBjb25zdCBlcXVhbEhleCA9IChmaXJzdDogc3RyaW5nLCBzZWNvbmQ6IHN0cmluZyk6IGJvb2xlYW4gPT4ge1xuICBpZiAoZmlyc3QudG9Mb3dlckNhc2UoKSA9PT0gc2Vjb25kLnRvTG93ZXJDYXNlKCkpIHJldHVybiB0cnVlO1xuXG4gIC8vIFRvIGNvbXBhcmUgY29sb3JzIGxpa2UgYCNGRkZgIGFuZCBgZmZmZmZmYCB3ZSBjb252ZXJ0IHRoZW0gaW50byBSR0Igb2JqZWN0c1xuICByZXR1cm4gZXF1YWxDb2xvck9iamVjdHMoaGV4VG9SZ2JhKGZpcnN0KSwgaGV4VG9SZ2JhKHNlY29uZCkpO1xufTtcbiIsImltcG9ydCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QsIHVzZUNhbGxiYWNrLCB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIEFueUNvbG9yLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHVzZUV2ZW50Q2FsbGJhY2sgfSBmcm9tIFwiLi91c2VFdmVudENhbGxiYWNrXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VDb2xvck1hbmlwdWxhdGlvbjxUIGV4dGVuZHMgQW55Q29sb3I+KFxuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+LFxuICBjb2xvcjogVCxcbiAgb25DaGFuZ2U/OiAoY29sb3I6IFQpID0+IHZvaWRcbik6IFtIc3ZhQ29sb3IsIChjb2xvcjogUGFydGlhbDxIc3ZhQ29sb3I+KSA9PiB2b2lkXSB7XG4gIC8vIFNhdmUgb25DaGFuZ2UgY2FsbGJhY2sgaW4gdGhlIHJlZiBmb3IgYXZvaWRpbmcgXCJ1c2VDYWxsYmFjayBoZWxsXCJcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8VD4ob25DaGFuZ2UpO1xuXG4gIC8vIE5vIG1hdHRlciB3aGljaCBjb2xvciBtb2RlbCBpcyB1c2VkIChIRVgsIFJHQihBKSBvciBIU0woQSkpLFxuICAvLyBhbGwgaW50ZXJuYWwgY2FsY3VsYXRpb25zIGFyZSBiYXNlZCBvbiBIU1ZBIG1vZGVsXG4gIGNvbnN0IFtoc3ZhLCB1cGRhdGVIc3ZhXSA9IHVzZVN0YXRlPEhzdmFDb2xvcj4oKCkgPT4gY29sb3JNb2RlbC50b0hzdmEoY29sb3IpKTtcblxuICAvLyBCeSB1c2luZyB0aGlzIHJlZiB3ZSdyZSBhYmxlIHRvIHByZXZlbnQgZXh0cmEgdXBkYXRlc1xuICAvLyBhbmQgdGhlIGVmZmVjdHMgcmVjdXJzaW9uIGR1cmluZyB0aGUgY29sb3IgY29udmVyc2lvblxuICBjb25zdCBjYWNoZSA9IHVzZVJlZih7IGNvbG9yLCBoc3ZhIH0pO1xuXG4gIC8vIFVwZGF0ZSBsb2NhbCBIU1ZBLXZhbHVlIGlmIGBjb2xvcmAgcHJvcGVydHkgdmFsdWUgaXMgY2hhbmdlZCxcbiAgLy8gYnV0IG9ubHkgaWYgdGhhdCdzIG5vdCB0aGUgc2FtZSBjb2xvciB0aGF0IHdlIGp1c3Qgc2VudCB0byB0aGUgcGFyZW50XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFjb2xvck1vZGVsLmVxdWFsKGNvbG9yLCBjYWNoZS5jdXJyZW50LmNvbG9yKSkge1xuICAgICAgY29uc3QgbmV3SHN2YSA9IGNvbG9yTW9kZWwudG9Ic3ZhKGNvbG9yKTtcbiAgICAgIGNhY2hlLmN1cnJlbnQgPSB7IGhzdmE6IG5ld0hzdmEsIGNvbG9yIH07XG4gICAgICB1cGRhdGVIc3ZhKG5ld0hzdmEpO1xuICAgIH1cbiAgfSwgW2NvbG9yLCBjb2xvck1vZGVsXSk7XG5cbiAgLy8gVHJpZ2dlciBgb25DaGFuZ2VgIGNhbGxiYWNrIG9ubHkgaWYgYW4gdXBkYXRlZCBjb2xvciBpcyBkaWZmZXJlbnQgZnJvbSBjYWNoZWQgb25lO1xuICAvLyBzYXZlIHRoZSBuZXcgY29sb3IgdG8gdGhlIHJlZiB0byBwcmV2ZW50IHVubmVjZXNzYXJ5IHVwZGF0ZXNcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsZXQgbmV3Q29sb3I7XG4gICAgaWYgKFxuICAgICAgIWVxdWFsQ29sb3JPYmplY3RzKGhzdmEsIGNhY2hlLmN1cnJlbnQuaHN2YSkgJiZcbiAgICAgICFjb2xvck1vZGVsLmVxdWFsKChuZXdDb2xvciA9IGNvbG9yTW9kZWwuZnJvbUhzdmEoaHN2YSkpLCBjYWNoZS5jdXJyZW50LmNvbG9yKVxuICAgICkge1xuICAgICAgY2FjaGUuY3VycmVudCA9IHsgaHN2YSwgY29sb3I6IG5ld0NvbG9yIH07XG4gICAgICBvbkNoYW5nZUNhbGxiYWNrKG5ld0NvbG9yKTtcbiAgICB9XG4gIH0sIFtoc3ZhLCBjb2xvck1vZGVsLCBvbkNoYW5nZUNhbGxiYWNrXSk7XG5cbiAgLy8gTWVyZ2UgdGhlIGN1cnJlbnQgSFNWQSBjb2xvciBvYmplY3Qgd2l0aCB1cGRhdGVkIHBhcmFtcy5cbiAgLy8gRm9yIGV4YW1wbGUsIHdoZW4gYSBjaGlsZCBjb21wb25lbnQgc2VuZHMgYGhgIG9yIGBzYCBvbmx5XG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9IHVzZUNhbGxiYWNrKChwYXJhbXM6IFBhcnRpYWw8SHN2YUNvbG9yPikgPT4ge1xuICAgIHVwZGF0ZUhzdmEoKGN1cnJlbnQpID0+IE9iamVjdC5hc3NpZ24oe30sIGN1cnJlbnQsIHBhcmFtcykpO1xuICB9LCBbXSk7XG5cbiAgcmV0dXJuIFtoc3ZhLCBoYW5kbGVDaGFuZ2VdO1xufVxuIiwiZGVjbGFyZSBjb25zdCBfX3dlYnBhY2tfbm9uY2VfXzogc3RyaW5nIHwgdW5kZWZpbmVkO1xubGV0IG5vbmNlOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5cbi8qKlxuICogUmV0dXJucyBhIG5vbmNlIGhhc2ggaW5jbHVkZWQgYnkgV2VicGFjayBvciB0aGUgb25lIGRlZmluZWQgbWFudWFsbHkgYnkgZGV2ZWxvcGVyLlxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSFRNTC9HbG9iYWxfYXR0cmlidXRlcy9ub25jZVxuICogaHR0cHM6Ly93ZWJwYWNrLmpzLm9yZy9ndWlkZXMvY3NwL1xuICovXG5leHBvcnQgY29uc3QgZ2V0Tm9uY2UgPSAoKTogc3RyaW5nIHwgdW5kZWZpbmVkID0+IHtcbiAgaWYgKG5vbmNlKSByZXR1cm4gbm9uY2U7XG4gIGlmICh0eXBlb2YgX193ZWJwYWNrX25vbmNlX18gIT09IFwidW5kZWZpbmVkXCIpIHJldHVybiBfX3dlYnBhY2tfbm9uY2VfXztcbiAgcmV0dXJuIHVuZGVmaW5lZDtcbn07XG5cbi8qKlxuICogU2lnbnMgdGhlIHN0eWxlIHRhZyB3aXRoIGEgYmFzZTY0LWVuY29kZWQgc3RyaW5nIChub25jZSkgdG8gY29uZm9ybXMgdG8gQ29udGVudCBTZWN1cml0eSBQb2xpY2llcy5cbiAqIFRoaXMgZnVuY3Rpb24gaGFzIHRvIGJlIGludm9rZWQgYmVmb3JlIGFueSBwaWNrZXIgaXMgcmVuZGVyZWQgaWYgeW91IGFyZW4ndCB1c2luZyBXZWJwYWNrIGZvciBDU1AuXG4gKi9cbmV4cG9ydCBjb25zdCBzZXROb25jZSA9IChoYXNoOiBzdHJpbmcpOiB2b2lkID0+IHtcbiAgbm9uY2UgPSBoYXNoO1xufTtcbiIsImltcG9ydCB7IHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbi8vIFJlYWN0IGN1cnJlbnRseSB0aHJvd3MgYSB3YXJuaW5nIHdoZW4gdXNpbmcgdXNlTGF5b3V0RWZmZWN0IG9uIHRoZSBzZXJ2ZXIuXG4vLyBUbyBnZXQgYXJvdW5kIGl0LCB3ZSBjYW4gY29uZGl0aW9uYWxseSB1c2VFZmZlY3Qgb24gdGhlIHNlcnZlciAobm8tb3ApIGFuZFxuLy8gdXNlTGF5b3V0RWZmZWN0IGluIHRoZSBicm93c2VyLlxuZXhwb3J0IGNvbnN0IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgPVxuICB0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiID8gdXNlTGF5b3V0RWZmZWN0IDogdXNlRWZmZWN0O1xuIiwiaW1wb3J0IHsgUmVmT2JqZWN0IH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IHVzZUlzb21vcnBoaWNMYXlvdXRFZmZlY3QgfSBmcm9tIFwiLi91c2VJc29tb3JwaGljTGF5b3V0RWZmZWN0XCI7XG5pbXBvcnQgeyBnZXROb25jZSB9IGZyb20gXCIuLi91dGlscy9ub25jZVwiO1xuXG4vLyBCdW5kbGVyIGlzIGNvbmZpZ3VyZWQgdG8gbG9hZCB0aGlzIGFzIGEgcHJvY2Vzc2VkIG1pbmlmaWVkIENTUy1zdHJpbmdcbmltcG9ydCBzdHlsZXMgZnJvbSBcIi4uL2Nzcy9zdHlsZXMuY3NzXCI7XG5cbmNvbnN0IHN0eWxlRWxlbWVudE1hcDogTWFwPERvY3VtZW50LCBIVE1MU3R5bGVFbGVtZW50PiA9IG5ldyBNYXAoKTtcblxuLyoqXG4gKiBJbmplY3RzIENTUyBjb2RlIGludG8gdGhlIGRvY3VtZW50J3MgPGhlYWQ+XG4gKi9cbmV4cG9ydCBjb25zdCB1c2VTdHlsZVNoZWV0ID0gKG5vZGVSZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4pOiB2b2lkID0+IHtcbiAgdXNlSXNvbW9ycGhpY0xheW91dEVmZmVjdCgoKSA9PiB7XG4gICAgY29uc3QgcGFyZW50RG9jdW1lbnQgPSBub2RlUmVmLmN1cnJlbnQgPyBub2RlUmVmLmN1cnJlbnQub3duZXJEb2N1bWVudCA6IGRvY3VtZW50O1xuXG4gICAgaWYgKHR5cGVvZiBwYXJlbnREb2N1bWVudCAhPT0gXCJ1bmRlZmluZWRcIiAmJiAhc3R5bGVFbGVtZW50TWFwLmhhcyhwYXJlbnREb2N1bWVudCkpIHtcbiAgICAgIGNvbnN0IHN0eWxlRWxlbWVudCA9IHBhcmVudERvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJzdHlsZVwiKTtcbiAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICBzdHlsZUVsZW1lbnRNYXAuc2V0KHBhcmVudERvY3VtZW50LCBzdHlsZUVsZW1lbnQpO1xuXG4gICAgICAvLyBDb25mb3JtIHRvIENTUCBydWxlcyBieSBzZXR0aW5nIGBub25jZWAgYXR0cmlidXRlIHRvIHRoZSBpbmxpbmUgc3R5bGVzXG4gICAgICBjb25zdCBub25jZSA9IGdldE5vbmNlKCk7XG4gICAgICBpZiAobm9uY2UpIHN0eWxlRWxlbWVudC5zZXRBdHRyaWJ1dGUoXCJub25jZVwiLCBub25jZSk7XG5cbiAgICAgIHBhcmVudERvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG4gIH0sIFtdKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlUmVmIH0gZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEh1ZSB9IGZyb20gXCIuL0h1ZVwiO1xuaW1wb3J0IHsgU2F0dXJhdGlvbiB9IGZyb20gXCIuL1NhdHVyYXRpb25cIjtcblxuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEFueUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5pbXBvcnQgeyB1c2VDb2xvck1hbmlwdWxhdGlvbiB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VDb2xvck1hbmlwdWxhdGlvblwiO1xuaW1wb3J0IHsgdXNlU3R5bGVTaGVldCB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VTdHlsZVNoZWV0XCI7XG5pbXBvcnQgeyBmb3JtYXRDbGFzc05hbWUgfSBmcm9tIFwiLi4vLi4vdXRpbHMvZm9ybWF0XCI7XG5cbmludGVyZmFjZSBQcm9wczxUIGV4dGVuZHMgQW55Q29sb3I+IGV4dGVuZHMgUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxUPj4ge1xuICBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFQ+O1xufVxuXG5leHBvcnQgY29uc3QgQ29sb3JQaWNrZXIgPSA8VCBleHRlbmRzIEFueUNvbG9yPih7XG4gIGNsYXNzTmFtZSxcbiAgY29sb3JNb2RlbCxcbiAgY29sb3IgPSBjb2xvck1vZGVsLmRlZmF1bHRDb2xvcixcbiAgb25DaGFuZ2UsXG4gIC4uLnJlc3Rcbn06IFByb3BzPFQ+KTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBub2RlUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKTtcbiAgdXNlU3R5bGVTaGVldChub2RlUmVmKTtcblxuICBjb25zdCBbaHN2YSwgdXBkYXRlSHN2YV0gPSB1c2VDb2xvck1hbmlwdWxhdGlvbjxUPihjb2xvck1vZGVsLCBjb2xvciwgb25DaGFuZ2UpO1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxcIiwgY2xhc3NOYW1lXSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IHsuLi5yZXN0fSByZWY9e25vZGVSZWZ9IGNsYXNzTmFtZT17bm9kZUNsYXNzTmFtZX0+XG4gICAgICA8U2F0dXJhdGlvbiBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxIdWUgaHVlPXtoc3ZhLmh9IG9uQ2hhbmdlPXt1cGRhdGVIc3ZhfSBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fbGFzdC1jb250cm9sXCIgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxIZXggfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaGV4VG9Ic3ZhLCBoc3ZhVG9IZXggfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCIwMDBcIixcbiAgdG9Ic3ZhOiBoZXhUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9IZXgsXG4gIGVxdWFsOiBlcXVhbEhleCxcbn07XG5cbmV4cG9ydCBjb25zdCBIZXhDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEludGVyYWN0aXZlLCBJbnRlcmFjdGlvbiB9IGZyb20gXCIuL0ludGVyYWN0aXZlXCI7XG5pbXBvcnQgeyBQb2ludGVyIH0gZnJvbSBcIi4vUG9pbnRlclwiO1xuXG5pbXBvcnQgeyBoc3ZhVG9Ic2xhU3RyaW5nIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NvbnZlcnRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcbmltcG9ydCB7IGNsYW1wIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NsYW1wXCI7XG5pbXBvcnQgeyByb3VuZCB9IGZyb20gXCIuLi8uLi91dGlscy9yb3VuZFwiO1xuaW1wb3J0IHsgSHN2YUNvbG9yIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyB7XG4gIGNsYXNzTmFtZT86IHN0cmluZztcbiAgaHN2YTogSHN2YUNvbG9yO1xuICBvbkNoYW5nZTogKG5ld0FscGhhOiB7IGE6IG51bWJlciB9KSA9PiB2b2lkO1xufVxuXG5leHBvcnQgY29uc3QgQWxwaGEgPSAoeyBjbGFzc05hbWUsIGhzdmEsIG9uQ2hhbmdlIH06IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCBoYW5kbGVNb3ZlID0gKGludGVyYWN0aW9uOiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIG9uQ2hhbmdlKHsgYTogaW50ZXJhY3Rpb24ubGVmdCB9KTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVLZXkgPSAob2Zmc2V0OiBJbnRlcmFjdGlvbikgPT4ge1xuICAgIC8vIEFscGhhIGFsd2F5cyBmaXQgaW50byBbMCwgMV0gcmFuZ2VcbiAgICBvbkNoYW5nZSh7IGE6IGNsYW1wKGhzdmEuYSArIG9mZnNldC5sZWZ0KSB9KTtcbiAgfTtcblxuICAvLyBXZSB1c2UgYE9iamVjdC5hc3NpZ25gIGluc3RlYWQgb2YgdGhlIHNwcmVhZCBvcGVyYXRvclxuICAvLyB0byBwcmV2ZW50IGFkZGluZyB0aGUgcG9seWZpbGwgKGFib3V0IDE1MCBieXRlcyBnemlwcGVkKVxuICBjb25zdCBjb2xvckZyb20gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMCB9KSk7XG4gIGNvbnN0IGNvbG9yVG8gPSBoc3ZhVG9Ic2xhU3RyaW5nKE9iamVjdC5hc3NpZ24oe30sIGhzdmEsIHsgYTogMSB9KSk7XG5cbiAgY29uc3QgZ3JhZGllbnRTdHlsZSA9IHtcbiAgICBiYWNrZ3JvdW5kSW1hZ2U6IGBsaW5lYXItZ3JhZGllbnQoOTBkZWcsICR7Y29sb3JGcm9tfSwgJHtjb2xvclRvfSlgLFxuICB9O1xuXG4gIGNvbnN0IG5vZGVDbGFzc05hbWUgPSBmb3JtYXRDbGFzc05hbWUoW1wicmVhY3QtY29sb3JmdWxfX2FscGhhXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWFjdC1jb2xvcmZ1bF9fYWxwaGEtZ3JhZGllbnRcIiBzdHlsZT17Z3JhZGllbnRTdHlsZX0gLz5cbiAgICAgIDxJbnRlcmFjdGl2ZVxuICAgICAgICBvbk1vdmU9e2hhbmRsZU1vdmV9XG4gICAgICAgIG9uS2V5PXtoYW5kbGVLZXl9XG4gICAgICAgIGFyaWEtbGFiZWw9XCJBbHBoYVwiXG4gICAgICAgIGFyaWEtdmFsdWV0ZXh0PXtgJHtyb3VuZChoc3ZhLmEgKiAxMDApfSVgfVxuICAgICAgPlxuICAgICAgICA8UG9pbnRlclxuICAgICAgICAgIGNsYXNzTmFtZT1cInJlYWN0LWNvbG9yZnVsX19hbHBoYS1wb2ludGVyXCJcbiAgICAgICAgICBsZWZ0PXtoc3ZhLmF9XG4gICAgICAgICAgY29sb3I9e2hzdmFUb0hzbGFTdHJpbmcoaHN2YSl9XG4gICAgICAgIC8+XG4gICAgICA8L0ludGVyYWN0aXZlPlxuICAgIDwvZGl2PlxuICApO1xufTtcbiIsImltcG9ydCBSZWFjdCwgeyB1c2VSZWYgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgSHVlIH0gZnJvbSBcIi4vSHVlXCI7XG5pbXBvcnQgeyBTYXR1cmF0aW9uIH0gZnJvbSBcIi4vU2F0dXJhdGlvblwiO1xuaW1wb3J0IHsgQWxwaGEgfSBmcm9tIFwiLi9BbHBoYVwiO1xuXG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgQW55Q29sb3IgfSBmcm9tIFwiLi4vLi4vdHlwZXNcIjtcbmltcG9ydCB7IHVzZUNvbG9yTWFuaXB1bGF0aW9uIH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZUNvbG9yTWFuaXB1bGF0aW9uXCI7XG5pbXBvcnQgeyB1c2VTdHlsZVNoZWV0IH0gZnJvbSBcIi4uLy4uL2hvb2tzL3VzZVN0eWxlU2hlZXRcIjtcbmltcG9ydCB7IGZvcm1hdENsYXNzTmFtZSB9IGZyb20gXCIuLi8uLi91dGlscy9mb3JtYXRcIjtcblxuaW50ZXJmYWNlIFByb3BzPFQgZXh0ZW5kcyBBbnlDb2xvcj4gZXh0ZW5kcyBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPFQ+PiB7XG4gIGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8VD47XG59XG5cbmV4cG9ydCBjb25zdCBBbHBoYUNvbG9yUGlja2VyID0gPFQgZXh0ZW5kcyBBbnlDb2xvcj4oe1xuICBjbGFzc05hbWUsXG4gIGNvbG9yTW9kZWwsXG4gIGNvbG9yID0gY29sb3JNb2RlbC5kZWZhdWx0Q29sb3IsXG4gIG9uQ2hhbmdlLFxuICAuLi5yZXN0XG59OiBQcm9wczxUPik6IEpTWC5FbGVtZW50ID0+IHtcbiAgY29uc3Qgbm9kZVJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbCk7XG4gIHVzZVN0eWxlU2hlZXQobm9kZVJlZik7XG5cbiAgY29uc3QgW2hzdmEsIHVwZGF0ZUhzdmFdID0gdXNlQ29sb3JNYW5pcHVsYXRpb248VD4oY29sb3JNb2RlbCwgY29sb3IsIG9uQ2hhbmdlKTtcblxuICBjb25zdCBub2RlQ2xhc3NOYW1lID0gZm9ybWF0Q2xhc3NOYW1lKFtcInJlYWN0LWNvbG9yZnVsXCIsIGNsYXNzTmFtZV0pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiB7Li4ucmVzdH0gcmVmPXtub2RlUmVmfSBjbGFzc05hbWU9e25vZGVDbGFzc05hbWV9PlxuICAgICAgPFNhdHVyYXRpb24gaHN2YT17aHN2YX0gb25DaGFuZ2U9e3VwZGF0ZUhzdmF9IC8+XG4gICAgICA8SHVlIGh1ZT17aHN2YS5ofSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gLz5cbiAgICAgIDxBbHBoYSBoc3ZhPXtoc3ZhfSBvbkNoYW5nZT17dXBkYXRlSHN2YX0gY2xhc3NOYW1lPVwicmVhY3QtY29sb3JmdWxfX2xhc3QtY29udHJvbFwiIC8+XG4gICAgPC9kaXY+XG4gICk7XG59O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc2xhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzbGFUb0hzdmEsIGhzdmFUb0hzbGEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbGFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyBoOiAwLCBzOiAwLCBsOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogaHNsYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbGEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8SHNsYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsYVN0cmluZ1RvSHN2YSwgaHN2YVRvSHNsYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcImhzbGEoMCwgMCUsIDAlLCAxKVwiLFxuICB0b0hzdmE6IGhzbGFTdHJpbmdUb0hzdmEsXG4gIGZyb21Ic3ZhOiBoc3ZhVG9Ic2xhU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBIc2xhU3RyaW5nQ29sb3JQaWNrZXIgPSAoXG4gIHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPHN0cmluZz4+XG4pOiBKU1guRWxlbWVudCA9PiA8QWxwaGFDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+O1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMsIEhzbENvbG9yIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yT2JqZWN0cyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc2xhVG9Ic3ZhLCBoc3ZhVG9Ic2xhLCBoc2xhVG9Ic2wgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPEhzbENvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIGw6IDAgfSxcbiAgdG9Ic3ZhOiAoeyBoLCBzLCBsIH0pID0+IGhzbGFUb0hzdmEoeyBoLCBzLCBsLCBhOiAxIH0pLFxuICBmcm9tSHN2YTogKGhzdmEpID0+IGhzbGFUb0hzbChoc3ZhVG9Ic2xhKGhzdmEpKSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzbENvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzbENvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHNsU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic2xTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc2woMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzbFN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzbFN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHNsU3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBIc3ZhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJvdW5kSHN2YSB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2YUNvbG9yPiA9IHtcbiAgZGVmYXVsdENvbG9yOiB7IGg6IDAsIHM6IDAsIHY6IDAsIGE6IDEgfSxcbiAgdG9Ic3ZhOiAoaHN2YSkgPT4gaHN2YSxcbiAgZnJvbUhzdmE6IHJvdW5kSHN2YSxcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxIc3ZhQ29sb3I+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQWxwaGFDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9BbHBoYUNvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcyB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvclN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb21wYXJlXCI7XG5pbXBvcnQgeyBoc3ZhU3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZhU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwiaHN2YSgwLCAwJSwgMCUsIDEpXCIsXG4gIHRvSHN2YTogaHN2YVN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdmFTdHJpbmcsXG4gIGVxdWFsOiBlcXVhbENvbG9yU3RyaW5nLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdmFTdHJpbmdDb2xvclBpY2tlciA9IChcbiAgcHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj5cbik6IEpTWC5FbGVtZW50ID0+IDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz47XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IENvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0NvbG9yUGlja2VyXCI7XG5pbXBvcnQgeyBDb2xvck1vZGVsLCBDb2xvclBpY2tlckJhc2VQcm9wcywgSHN2Q29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IGhzdmFUb0hzdiB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8SHN2Q29sb3I+ID0ge1xuICBkZWZhdWx0Q29sb3I6IHsgaDogMCwgczogMCwgdjogMCB9LFxuICB0b0hzdmE6ICh7IGgsIHMsIHYgfSkgPT4gKHsgaCwgcywgdiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdixcbiAgZXF1YWw6IGVxdWFsQ29sb3JPYmplY3RzLFxufTtcblxuZXhwb3J0IGNvbnN0IEhzdkNvbG9yUGlja2VyID0gKHByb3BzOiBQYXJ0aWFsPENvbG9yUGlja2VyQmFzZVByb3BzPEhzdkNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBDb2xvclBpY2tlciB9IGZyb20gXCIuL2NvbW1vbi9Db2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgaHN2U3RyaW5nVG9Ic3ZhLCBoc3ZhVG9Ic3ZTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPHN0cmluZz4gPSB7XG4gIGRlZmF1bHRDb2xvcjogXCJoc3YoMCwgMCUsIDAlKVwiLFxuICB0b0hzdmE6IGhzdlN0cmluZ1RvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb0hzdlN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgSHN2U3RyaW5nQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8c3RyaW5nPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxDb2xvclBpY2tlciB7Li4ucHJvcHN9IGNvbG9yTW9kZWw9e2NvbG9yTW9kZWx9IC8+XG4pO1xuIiwiaW1wb3J0IFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuXG5pbXBvcnQgeyBBbHBoYUNvbG9yUGlja2VyIH0gZnJvbSBcIi4vY29tbW9uL0FscGhhQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JhQ29sb3IgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JPYmplY3RzIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYmFUb0hzdmEsIGhzdmFUb1JnYmEgfSBmcm9tIFwiLi4vdXRpbHMvY29udmVydFwiO1xuXG5jb25zdCBjb2xvck1vZGVsOiBDb2xvck1vZGVsPFJnYmFDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwLCBhOiAxIH0sXG4gIHRvSHN2YTogcmdiYVRvSHN2YSxcbiAgZnJvbUhzdmE6IGhzdmFUb1JnYmEsXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JhQ29sb3JQaWNrZXIgPSAocHJvcHM6IFBhcnRpYWw8Q29sb3JQaWNrZXJCYXNlUHJvcHM8UmdiYUNvbG9yPj4pOiBKU1guRWxlbWVudCA9PiAoXG4gIDxBbHBoYUNvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJpbXBvcnQgUmVhY3QgZnJvbSBcInJlYWN0XCI7XG5cbmltcG9ydCB7IEFscGhhQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQWxwaGFDb2xvclBpY2tlclwiO1xuaW1wb3J0IHsgQ29sb3JNb2RlbCwgQ29sb3JQaWNrZXJCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGVxdWFsQ29sb3JTdHJpbmcgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiYVN0cmluZyB9IGZyb20gXCIuLi91dGlscy9jb252ZXJ0XCI7XG5cbmNvbnN0IGNvbG9yTW9kZWw6IENvbG9yTW9kZWw8c3RyaW5nPiA9IHtcbiAgZGVmYXVsdENvbG9yOiBcInJnYmEoMCwgMCwgMCwgMSlcIixcbiAgdG9Ic3ZhOiByZ2JhU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiYVN0cmluZyxcbiAgZXF1YWw6IGVxdWFsQ29sb3JTdHJpbmcsXG59O1xuXG5leHBvcnQgY29uc3QgUmdiYVN0cmluZ0NvbG9yUGlja2VyID0gKFxuICBwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+PlxuKTogSlNYLkVsZW1lbnQgPT4gPEFscGhhQ29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPjtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzLCBSZ2JDb2xvciB9IGZyb20gXCIuLi90eXBlc1wiO1xuaW1wb3J0IHsgZXF1YWxDb2xvck9iamVjdHMgfSBmcm9tIFwiLi4vdXRpbHMvY29tcGFyZVwiO1xuaW1wb3J0IHsgcmdiYVRvSHN2YSwgaHN2YVRvUmdiYSwgcmdiYVRvUmdiIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxSZ2JDb2xvcj4gPSB7XG4gIGRlZmF1bHRDb2xvcjogeyByOiAwLCBnOiAwLCBiOiAwIH0sXG4gIHRvSHN2YTogKHsgciwgZywgYiB9KSA9PiByZ2JhVG9Ic3ZhKHsgciwgZywgYiwgYTogMSB9KSxcbiAgZnJvbUhzdmE6IChoc3ZhKSA9PiByZ2JhVG9SZ2IoaHN2YVRvUmdiYShoc3ZhKSksXG4gIGVxdWFsOiBlcXVhbENvbG9yT2JqZWN0cyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxSZ2JDb2xvcj4+KTogSlNYLkVsZW1lbnQgPT4gKFxuICA8Q29sb3JQaWNrZXIgey4uLnByb3BzfSBjb2xvck1vZGVsPXtjb2xvck1vZGVsfSAvPlxuKTtcbiIsImltcG9ydCBSZWFjdCBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgQ29sb3JQaWNrZXIgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JQaWNrZXJcIjtcbmltcG9ydCB7IENvbG9yTW9kZWwsIENvbG9yUGlja2VyQmFzZVByb3BzIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBlcXVhbENvbG9yU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbXBhcmVcIjtcbmltcG9ydCB7IHJnYlN0cmluZ1RvSHN2YSwgaHN2YVRvUmdiU3RyaW5nIH0gZnJvbSBcIi4uL3V0aWxzL2NvbnZlcnRcIjtcblxuY29uc3QgY29sb3JNb2RlbDogQ29sb3JNb2RlbDxzdHJpbmc+ID0ge1xuICBkZWZhdWx0Q29sb3I6IFwicmdiKDAsIDAsIDApXCIsXG4gIHRvSHN2YTogcmdiU3RyaW5nVG9Ic3ZhLFxuICBmcm9tSHN2YTogaHN2YVRvUmdiU3RyaW5nLFxuICBlcXVhbDogZXF1YWxDb2xvclN0cmluZyxcbn07XG5cbmV4cG9ydCBjb25zdCBSZ2JTdHJpbmdDb2xvclBpY2tlciA9IChwcm9wczogUGFydGlhbDxDb2xvclBpY2tlckJhc2VQcm9wczxzdHJpbmc+Pik6IEpTWC5FbGVtZW50ID0+IChcbiAgPENvbG9yUGlja2VyIHsuLi5wcm9wc30gY29sb3JNb2RlbD17Y29sb3JNb2RlbH0gLz5cbik7XG4iLCJjb25zdCBtYXRjaGVyID0gL14jPyhbMC05QS1GXXszLDh9KSQvaTtcblxuZXhwb3J0IGNvbnN0IHZhbGlkSGV4ID0gKHZhbHVlOiBzdHJpbmcsIGFscGhhPzogYm9vbGVhbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBtYXRjaCA9IG1hdGNoZXIuZXhlYyh2YWx1ZSk7XG4gIGNvbnN0IGxlbmd0aCA9IG1hdGNoID8gbWF0Y2hbMV0ubGVuZ3RoIDogMDtcblxuICByZXR1cm4gKFxuICAgIGxlbmd0aCA9PT0gMyB8fCAvLyAnI3JnYicgZm9ybWF0XG4gICAgbGVuZ3RoID09PSA2IHx8IC8vICcjcnJnZ2JiJyBmb3JtYXRcbiAgICAoISFhbHBoYSAmJiBsZW5ndGggPT09IDQpIHx8IC8vICcjcmdiYScgZm9ybWF0XG4gICAgKCEhYWxwaGEgJiYgbGVuZ3RoID09PSA4KSAvLyAnI3JyZ2diYmFhJyBmb3JtYXRcbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcblxuaW1wb3J0IHsgdXNlRXZlbnRDYWxsYmFjayB9IGZyb20gXCIuLi8uLi9ob29rcy91c2VFdmVudENhbGxiYWNrXCI7XG5pbXBvcnQgeyBDb2xvcklucHV0QmFzZVByb3BzIH0gZnJvbSBcIi4uLy4uL3R5cGVzXCI7XG5cbmludGVyZmFjZSBQcm9wcyBleHRlbmRzIENvbG9ySW5wdXRCYXNlUHJvcHMge1xuICAvKiogQmxvY2tzIHR5cGluZyBpbnZhbGlkIGNoYXJhY3RlcnMgYW5kIGxpbWl0cyBzdHJpbmcgbGVuZ3RoICovXG4gIGVzY2FwZTogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbiAgLyoqIENoZWNrcyB0aGF0IHZhbHVlIGlzIHZhbGlkIGNvbG9yIHN0cmluZyAqL1xuICB2YWxpZGF0ZTogKHZhbHVlOiBzdHJpbmcpID0+IGJvb2xlYW47XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIGRpc3BsYXlpbmcgaXQgaW4gdGhlIGlucHV0ICovXG4gIGZvcm1hdD86ICh2YWx1ZTogc3RyaW5nKSA9PiBzdHJpbmc7XG4gIC8qKiBQcm9jZXNzZXMgdmFsdWUgYmVmb3JlIHNlbmRpbmcgaXQgaW4gYG9uQ2hhbmdlYCAqL1xuICBwcm9jZXNzPzogKHZhbHVlOiBzdHJpbmcpID0+IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IENvbG9ySW5wdXQgPSAocHJvcHM6IFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IGNvbG9yID0gXCJcIiwgb25DaGFuZ2UsIG9uQmx1ciwgZXNjYXBlLCB2YWxpZGF0ZSwgZm9ybWF0LCBwcm9jZXNzLCAuLi5yZXN0IH0gPSBwcm9wcztcbiAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSB1c2VTdGF0ZSgoKSA9PiBlc2NhcGUoY29sb3IpKTtcbiAgY29uc3Qgb25DaGFuZ2VDYWxsYmFjayA9IHVzZUV2ZW50Q2FsbGJhY2s8c3RyaW5nPihvbkNoYW5nZSk7XG4gIGNvbnN0IG9uQmx1ckNhbGxiYWNrID0gdXNlRXZlbnRDYWxsYmFjazxSZWFjdC5Gb2N1c0V2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+PihvbkJsdXIpO1xuXG4gIC8vIFRyaWdnZXIgYG9uQ2hhbmdlYCBoYW5kbGVyIG9ubHkgaWYgdGhlIGlucHV0IHZhbHVlIGlzIGEgdmFsaWQgY29sb3JcbiAgY29uc3QgaGFuZGxlQ2hhbmdlID0gdXNlQ2FsbGJhY2soXG4gICAgKGU6IFJlYWN0LkNoYW5nZUV2ZW50PEhUTUxJbnB1dEVsZW1lbnQ+KSA9PiB7XG4gICAgICBjb25zdCBpbnB1dFZhbHVlID0gZXNjYXBlKGUudGFyZ2V0LnZhbHVlKTtcbiAgICAgIHNldFZhbHVlKGlucHV0VmFsdWUpO1xuICAgICAgaWYgKHZhbGlkYXRlKGlucHV0VmFsdWUpKSBvbkNoYW5nZUNhbGxiYWNrKHByb2Nlc3MgPyBwcm9jZXNzKGlucHV0VmFsdWUpIDogaW5wdXRWYWx1ZSk7XG4gICAgfSxcbiAgICBbZXNjYXBlLCBwcm9jZXNzLCB2YWxpZGF0ZSwgb25DaGFuZ2VDYWxsYmFja11cbiAgKTtcblxuICAvLyBUYWtlIHRoZSBjb2xvciBmcm9tIHByb3BzIGlmIHRoZSBsYXN0IHR5cGVkIGNvbG9yIChpbiBsb2NhbCBzdGF0ZSkgaXMgbm90IHZhbGlkXG4gIGNvbnN0IGhhbmRsZUJsdXIgPSB1c2VDYWxsYmFjayhcbiAgICAoZTogUmVhY3QuRm9jdXNFdmVudDxIVE1MSW5wdXRFbGVtZW50PikgPT4ge1xuICAgICAgaWYgKCF2YWxpZGF0ZShlLnRhcmdldC52YWx1ZSkpIHNldFZhbHVlKGVzY2FwZShjb2xvcikpO1xuICAgICAgb25CbHVyQ2FsbGJhY2soZSk7XG4gICAgfSxcbiAgICBbY29sb3IsIGVzY2FwZSwgdmFsaWRhdGUsIG9uQmx1ckNhbGxiYWNrXVxuICApO1xuXG4gIC8vIFVwZGF0ZSB0aGUgbG9jYWwgc3RhdGUgd2hlbiBgY29sb3JgIHByb3BlcnR5IHZhbHVlIGlzIGNoYW5nZWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRWYWx1ZShlc2NhcGUoY29sb3IpKTtcbiAgfSwgW2NvbG9yLCBlc2NhcGVdKTtcblxuICByZXR1cm4gKFxuICAgIDxpbnB1dFxuICAgICAgey4uLnJlc3R9XG4gICAgICB2YWx1ZT17Zm9ybWF0ID8gZm9ybWF0KHZhbHVlKSA6IHZhbHVlfVxuICAgICAgc3BlbGxDaGVjaz1cImZhbHNlXCIgLy8gdGhlIGVsZW1lbnQgc2hvdWxkIG5vdCBiZSBjaGVja2VkIGZvciBzcGVsbGluZyBlcnJvcnNcbiAgICAgIG9uQ2hhbmdlPXtoYW5kbGVDaGFuZ2V9XG4gICAgICBvbkJsdXI9e2hhbmRsZUJsdXJ9XG4gICAgLz5cbiAgKTtcbn07XG4iLCJpbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2sgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IENvbG9ySW5wdXRCYXNlUHJvcHMgfSBmcm9tIFwiLi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgdmFsaWRIZXggfSBmcm9tIFwiLi4vdXRpbHMvdmFsaWRhdGVcIjtcbmltcG9ydCB7IENvbG9ySW5wdXQgfSBmcm9tIFwiLi9jb21tb24vQ29sb3JJbnB1dFwiO1xuXG5pbnRlcmZhY2UgSGV4Q29sb3JJbnB1dFByb3BzIGV4dGVuZHMgQ29sb3JJbnB1dEJhc2VQcm9wcyB7XG4gIC8qKiBFbmFibGVzIGAjYCBwcmVmaXggZGlzcGxheWluZyAqL1xuICBwcmVmaXhlZD86IGJvb2xlYW47XG4gIC8qKiBBbGxvd3MgYCNyZ2JhYCBhbmQgYCNycmdnYmJhYWAgY29sb3IgZm9ybWF0cyAqL1xuICBhbHBoYT86IGJvb2xlYW47XG59XG5cbi8qKiBBZGRzIFwiI1wiIHN5bWJvbCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmcgKi9cbmNvbnN0IHByZWZpeCA9ICh2YWx1ZTogc3RyaW5nKSA9PiBcIiNcIiArIHZhbHVlO1xuXG5leHBvcnQgY29uc3QgSGV4Q29sb3JJbnB1dCA9IChwcm9wczogSGV4Q29sb3JJbnB1dFByb3BzKTogSlNYLkVsZW1lbnQgPT4ge1xuICBjb25zdCB7IHByZWZpeGVkLCBhbHBoYSwgLi4ucmVzdCB9ID0gcHJvcHM7XG5cbiAgLyoqIEVzY2FwZXMgYWxsIG5vbi1oZXhhZGVjaW1hbCBjaGFyYWN0ZXJzIGluY2x1ZGluZyBcIiNcIiAqL1xuICBjb25zdCBlc2NhcGUgPSB1c2VDYWxsYmFjayhcbiAgICAodmFsdWU6IHN0cmluZykgPT4gdmFsdWUucmVwbGFjZSgvKFteMC05QS1GXSspL2dpLCBcIlwiKS5zdWJzdHIoMCwgYWxwaGEgPyA4IDogNiksXG4gICAgW2FscGhhXVxuICApO1xuXG4gIC8qKiBWYWxpZGF0ZXMgaGV4YWRlY2ltYWwgc3RyaW5ncyAqL1xuICBjb25zdCB2YWxpZGF0ZSA9IHVzZUNhbGxiYWNrKCh2YWx1ZTogc3RyaW5nKSA9PiB2YWxpZEhleCh2YWx1ZSwgYWxwaGEpLCBbYWxwaGFdKTtcblxuICByZXR1cm4gKFxuICAgIDxDb2xvcklucHV0XG4gICAgICB7Li4ucmVzdH1cbiAgICAgIGVzY2FwZT17ZXNjYXBlfVxuICAgICAgZm9ybWF0PXtwcmVmaXhlZCA/IHByZWZpeCA6IHVuZGVmaW5lZH1cbiAgICAgIHByb2Nlc3M9e3ByZWZpeH1cbiAgICAgIHZhbGlkYXRlPXt2YWxpZGF0ZX1cbiAgICAvPlxuICApO1xufTtcbiIsImltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5kZXNjcmlwdGlvbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC50by1zdHJpbmcuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zeW1ib2wuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5pdGVyYXRvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL3dlYi5kb20tY29sbGVjdGlvbnMuaXRlcmF0b3IuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5mcm9tLmpzXCI7XG5cbnZhciBfQ29sb3JQaWNrZXIsIF9mYWxsYmFja0NvbG9yO1xuXG5mdW5jdGlvbiBfc2xpY2VkVG9BcnJheShhcnIsIGkpIHsgcmV0dXJuIF9hcnJheVdpdGhIb2xlcyhhcnIpIHx8IF9pdGVyYWJsZVRvQXJyYXlMaW1pdChhcnIsIGkpIHx8IF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShhcnIsIGkpIHx8IF9ub25JdGVyYWJsZVJlc3QoKTsgfVxuXG5mdW5jdGlvbiBfbm9uSXRlcmFibGVSZXN0KCkgeyB0aHJvdyBuZXcgVHlwZUVycm9yKFwiSW52YWxpZCBhdHRlbXB0IHRvIGRlc3RydWN0dXJlIG5vbi1pdGVyYWJsZSBpbnN0YW5jZS5cXG5JbiBvcmRlciB0byBiZSBpdGVyYWJsZSwgbm9uLWFycmF5IG9iamVjdHMgbXVzdCBoYXZlIGEgW1N5bWJvbC5pdGVyYXRvcl0oKSBtZXRob2QuXCIpOyB9XG5cbmZ1bmN0aW9uIF91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheShvLCBtaW5MZW4pIHsgaWYgKCFvKSByZXR1cm47IGlmICh0eXBlb2YgbyA9PT0gXCJzdHJpbmdcIikgcmV0dXJuIF9hcnJheUxpa2VUb0FycmF5KG8sIG1pbkxlbik7IHZhciBuID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pLnNsaWNlKDgsIC0xKTsgaWYgKG4gPT09IFwiT2JqZWN0XCIgJiYgby5jb25zdHJ1Y3RvcikgbiA9IG8uY29uc3RydWN0b3IubmFtZTsgaWYgKG4gPT09IFwiTWFwXCIgfHwgbiA9PT0gXCJTZXRcIikgcmV0dXJuIEFycmF5LmZyb20obyk7IGlmIChuID09PSBcIkFyZ3VtZW50c1wiIHx8IC9eKD86VWl8SSludCg/Ojh8MTZ8MzIpKD86Q2xhbXBlZCk/QXJyYXkkLy50ZXN0KG4pKSByZXR1cm4gX2FycmF5TGlrZVRvQXJyYXkobywgbWluTGVuKTsgfVxuXG5mdW5jdGlvbiBfYXJyYXlMaWtlVG9BcnJheShhcnIsIGxlbikgeyBpZiAobGVuID09IG51bGwgfHwgbGVuID4gYXJyLmxlbmd0aCkgbGVuID0gYXJyLmxlbmd0aDsgZm9yICh2YXIgaSA9IDAsIGFycjIgPSBuZXcgQXJyYXkobGVuKTsgaSA8IGxlbjsgaSsrKSB7IGFycjJbaV0gPSBhcnJbaV07IH0gcmV0dXJuIGFycjI7IH1cblxuZnVuY3Rpb24gX2l0ZXJhYmxlVG9BcnJheUxpbWl0KGFyciwgaSkgeyBpZiAodHlwZW9mIFN5bWJvbCA9PT0gXCJ1bmRlZmluZWRcIiB8fCAhKFN5bWJvbC5pdGVyYXRvciBpbiBPYmplY3QoYXJyKSkpIHJldHVybjsgdmFyIF9hcnIgPSBbXTsgdmFyIF9uID0gdHJ1ZTsgdmFyIF9kID0gZmFsc2U7IHZhciBfZSA9IHVuZGVmaW5lZDsgdHJ5IHsgZm9yICh2YXIgX2kgPSBhcnJbU3ltYm9sLml0ZXJhdG9yXSgpLCBfczsgIShfbiA9IChfcyA9IF9pLm5leHQoKSkuZG9uZSk7IF9uID0gdHJ1ZSkgeyBfYXJyLnB1c2goX3MudmFsdWUpOyBpZiAoaSAmJiBfYXJyLmxlbmd0aCA9PT0gaSkgYnJlYWs7IH0gfSBjYXRjaCAoZXJyKSB7IF9kID0gdHJ1ZTsgX2UgPSBlcnI7IH0gZmluYWxseSB7IHRyeSB7IGlmICghX24gJiYgX2lbXCJyZXR1cm5cIl0gIT0gbnVsbCkgX2lbXCJyZXR1cm5cIl0oKTsgfSBmaW5hbGx5IHsgaWYgKF9kKSB0aHJvdyBfZTsgfSB9IHJldHVybiBfYXJyOyB9XG5cbmZ1bmN0aW9uIF9hcnJheVdpdGhIb2xlcyhhcnIpIHsgaWYgKEFycmF5LmlzQXJyYXkoYXJyKSkgcmV0dXJuIGFycjsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7IGlmIChrZXkgaW4gb2JqKSB7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvYmosIGtleSwgeyB2YWx1ZTogdmFsdWUsIGVudW1lcmFibGU6IHRydWUsIGNvbmZpZ3VyYWJsZTogdHJ1ZSwgd3JpdGFibGU6IHRydWUgfSk7IH0gZWxzZSB7IG9ialtrZXldID0gdmFsdWU7IH0gcmV0dXJuIG9iajsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuY29uY2F0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMub2JqZWN0LmFzc2lnbi5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm9iamVjdC52YWx1ZXMuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5zdHJpbmcubWF0Y2guanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5yZWdleHAuZXhlYy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLmFycmF5Lm1hcC5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLm51bWJlci5jb25zdHJ1Y3Rvci5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN0cmluZy5yZXBsYWNlLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnN0YXJ0cy13aXRoLmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLnNwbGl0LmpzXCI7XG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuYXJyYXkuc2xpY2UuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5hcnJheS5maWx0ZXIuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5mdW5jdGlvbi5uYW1lLmpzXCI7XG5pbXBvcnQgUmVhY3QsIHsgdXNlQ2FsbGJhY2ssIHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBIZXhDb2xvclBpY2tlciwgSHNsYVN0cmluZ0NvbG9yUGlja2VyLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIgfSBmcm9tICdyZWFjdC1jb2xvcmZ1bCc7XG5pbXBvcnQgY29udmVydCBmcm9tICdjb2xvci1jb252ZXJ0JztcbmltcG9ydCB0aHJvdHRsZSBmcm9tICdsb2Rhc2gvdGhyb3R0bGUnO1xuaW1wb3J0IHsgc3R5bGVkIH0gZnJvbSAnQHN0b3J5Ym9vay90aGVtaW5nJztcbmltcG9ydCB7IFRvb2x0aXBOb3RlIH0gZnJvbSAnLi4vdG9vbHRpcC9Ub29sdGlwTm90ZSc7XG5pbXBvcnQgeyBXaXRoVG9vbHRpcCB9IGZyb20gJy4uL3Rvb2x0aXAvbGF6eS1XaXRoVG9vbHRpcCc7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSAnLi4vZm9ybSc7XG5pbXBvcnQgeyBJY29ucyB9IGZyb20gJy4uL2ljb24vaWNvbic7XG5pbXBvcnQgeyBnZXRDb250cm9sSWQgfSBmcm9tICcuL2hlbHBlcnMnO1xudmFyIFdyYXBwZXIgPSBzdHlsZWQuZGl2KHtcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIG1heFdpZHRoOiAyNTBcbn0pO1xudmFyIFBpY2tlclRvb2x0aXAgPSBzdHlsZWQoV2l0aFRvb2x0aXApKHtcbiAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gIHpJbmRleDogMSxcbiAgdG9wOiA0LFxuICBsZWZ0OiA0XG59KTtcbnZhciBUb29sdGlwQ29udGVudCA9IHN0eWxlZC5kaXYoe1xuICB3aWR0aDogMjAwLFxuICBtYXJnaW46IDUsXG4gICcucmVhY3QtY29sb3JmdWxfX3NhdHVyYXRpb24nOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4IDRweCAwIDAnXG4gIH0sXG4gICcucmVhY3QtY29sb3JmdWxfX2h1ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdpbnNldCAwIDAgMCAxcHggcmdiKDAgMCAwIC8gNSUpJ1xuICB9LFxuICAnLnJlYWN0LWNvbG9yZnVsX19sYXN0LWNvbnRyb2wnOiB7XG4gICAgYm9yZGVyUmFkaXVzOiAnMCAwIDRweCA0cHgnXG4gIH1cbn0pO1xudmFyIE5vdGUgPSBzdHlsZWQoVG9vbHRpcE5vdGUpKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciB0aGVtZSA9IF9yZWYudGhlbWU7XG4gIHJldHVybiB7XG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBTd2F0Y2hlcyA9IHN0eWxlZC5kaXYoe1xuICBkaXNwbGF5OiAnZ3JpZCcsXG4gIGdyaWRUZW1wbGF0ZUNvbHVtbnM6ICdyZXBlYXQoOSwgMTZweCknLFxuICBnYXA6IDYsXG4gIHBhZGRpbmc6IDMsXG4gIG1hcmdpblRvcDogNSxcbiAgd2lkdGg6IDIwMFxufSk7XG52YXIgU3dhdGNoQ29sb3IgPSBzdHlsZWQuZGl2KGZ1bmN0aW9uIChfcmVmMikge1xuICB2YXIgdGhlbWUgPSBfcmVmMi50aGVtZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYyLmFjdGl2ZTtcbiAgcmV0dXJuIHtcbiAgICB3aWR0aDogMTYsXG4gICAgaGVpZ2h0OiAxNixcbiAgICBib3hTaGFkb3c6IGFjdGl2ZSA/IFwiXCIuY29uY2F0KHRoZW1lLmFwcEJvcmRlckNvbG9yLCBcIiAwIDAgMCAxcHggaW5zZXQsIFwiKS5jb25jYXQodGhlbWUuY29sb3IubWVkaXVtZGFyaywgXCI1MCAwIDAgMCA0cHhcIikgOiBcIlwiLmNvbmNhdCh0aGVtZS5hcHBCb3JkZXJDb2xvciwgXCIgMCAwIDAgMXB4IGluc2V0XCIpLFxuICAgIGJvcmRlclJhZGl1czogdGhlbWUuYXBwQm9yZGVyUmFkaXVzXG4gIH07XG59KTtcbnZhciBzd2F0Y2hCYWNrZ3JvdW5kID0gXCJ1cmwoJ2RhdGE6aW1hZ2Uvc3ZnK3htbDtjaGFyc2V0PXV0Zi04LDxzdmcgeG1sbnM9XFxcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXFxcIiB3aWR0aD1cXFwiMTZcXFwiIGhlaWdodD1cXFwiMTZcXFwiIGZpbGwtb3BhY2l0eT1cXFwiLjA1XFxcIj48cGF0aCBkPVxcXCJNOCAwaDh2OEg4ek0wIDhoOHY4SDB6XFxcIi8+PC9zdmc+JylcIjtcblxudmFyIFN3YXRjaCA9IGZ1bmN0aW9uIFN3YXRjaChfcmVmMykge1xuICB2YXIgdmFsdWUgPSBfcmVmMy52YWx1ZSxcbiAgICAgIGFjdGl2ZSA9IF9yZWYzLmFjdGl2ZSxcbiAgICAgIG9uQ2xpY2sgPSBfcmVmMy5vbkNsaWNrLFxuICAgICAgc3R5bGUgPSBfcmVmMy5zdHlsZSxcbiAgICAgIHByb3BzID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzKF9yZWYzLCBbXCJ2YWx1ZVwiLCBcImFjdGl2ZVwiLCBcIm9uQ2xpY2tcIiwgXCJzdHlsZVwiXSk7XG5cbiAgdmFyIGJhY2tncm91bmRJbWFnZSA9IFwibGluZWFyLWdyYWRpZW50KFwiLmNvbmNhdCh2YWx1ZSwgXCIsIFwiKS5jb25jYXQodmFsdWUsIFwiKSwgXCIpLmNvbmNhdChzd2F0Y2hCYWNrZ3JvdW5kLCBcIiwgbGluZWFyLWdyYWRpZW50KCNmZmYsICNmZmYpXCIpO1xuICByZXR1cm4gLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoU3dhdGNoQ29sb3IsIF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGFjdGl2ZTogYWN0aXZlLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIHN0eWxlLCB7XG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6IGJhY2tncm91bmRJbWFnZVxuICAgIH0pXG4gIH0pKTtcbn07XG5cblN3YXRjaC5kaXNwbGF5TmFtZSA9IFwiU3dhdGNoXCI7XG52YXIgSW5wdXQgPSBzdHlsZWQoRm9ybS5JbnB1dCkoZnVuY3Rpb24gKF9yZWY0KSB7XG4gIHZhciB0aGVtZSA9IF9yZWY0LnRoZW1lO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gICAgcGFkZGluZ0xlZnQ6IDMwLFxuICAgIHBhZGRpbmdSaWdodDogMzAsXG4gICAgYm94U2l6aW5nOiAnYm9yZGVyLWJveCcsXG4gICAgZm9udEZhbWlseTogdGhlbWUudHlwb2dyYXBoeS5mb250cy5iYXNlXG4gIH07XG59KTtcbnZhciBUb2dnbGVJY29uID0gc3R5bGVkKEljb25zKShmdW5jdGlvbiAoX3JlZjUpIHtcbiAgdmFyIHRoZW1lID0gX3JlZjUudGhlbWU7XG4gIHJldHVybiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgekluZGV4OiAxLFxuICAgIHRvcDogNixcbiAgICByaWdodDogNyxcbiAgICB3aWR0aDogMjAsXG4gICAgaGVpZ2h0OiAyMCxcbiAgICBwYWRkaW5nOiA0LFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGNvbG9yOiB0aGVtZS5pbnB1dC5jb2xvclxuICB9O1xufSk7XG52YXIgQ29sb3JTcGFjZTtcblxuKGZ1bmN0aW9uIChDb2xvclNwYWNlKSB7XG4gIENvbG9yU3BhY2VbXCJSR0JcIl0gPSBcInJnYlwiO1xuICBDb2xvclNwYWNlW1wiSFNMXCJdID0gXCJoc2xcIjtcbiAgQ29sb3JTcGFjZVtcIkhFWFwiXSA9IFwiaGV4XCI7XG59KShDb2xvclNwYWNlIHx8IChDb2xvclNwYWNlID0ge30pKTtcblxudmFyIENPTE9SX1NQQUNFUyA9IE9iamVjdC52YWx1ZXMoQ29sb3JTcGFjZSk7XG52YXIgQ09MT1JfUkVHRVhQID0gL1xcKChbMC05XSspLFxccyooWzAtOV0rKSU/LFxccyooWzAtOV0rKSU/LD9cXHMqKFswLTkuXSspP1xcKS87XG52YXIgUkdCX1JFR0VYUCA9IC9eXFxzKnJnYmE/XFwoKFswLTldKyksXFxzKihbMC05XSspLFxccyooWzAtOV0rKSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhTTF9SRUdFWFAgPSAvXlxccypoc2xhP1xcKChbMC05XSspLFxccyooWzAtOV0rKSUsXFxzKihbMC05XSspJSw/XFxzKihbMC05Ll0rKT9cXClcXHMqJC9pO1xudmFyIEhFWF9SRUdFWFAgPSAvXlxccyojPyhbMC05YS1mXXszfXxbMC05YS1mXXs2fSlcXHMqJC9pO1xudmFyIFNIT1JUSEVYX1JFR0VYUCA9IC9eXFxzKiM/KFswLTlhLWZdezN9KVxccyokL2k7XG52YXIgQ29sb3JQaWNrZXIgPSAoX0NvbG9yUGlja2VyID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuSEVYLCBIZXhDb2xvclBpY2tlciksIF9kZWZpbmVQcm9wZXJ0eShfQ29sb3JQaWNrZXIsIENvbG9yU3BhY2UuUkdCLCBSZ2JhU3RyaW5nQ29sb3JQaWNrZXIpLCBfZGVmaW5lUHJvcGVydHkoX0NvbG9yUGlja2VyLCBDb2xvclNwYWNlLkhTTCwgSHNsYVN0cmluZ0NvbG9yUGlja2VyKSwgX0NvbG9yUGlja2VyKTtcbnZhciBmYWxsYmFja0NvbG9yID0gKF9mYWxsYmFja0NvbG9yID0ge30sIF9kZWZpbmVQcm9wZXJ0eShfZmFsbGJhY2tDb2xvciwgQ29sb3JTcGFjZS5IRVgsICd0cmFuc3BhcmVudCcpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuUkdCLCAncmdiYSgwLCAwLCAwLCAwKScpLCBfZGVmaW5lUHJvcGVydHkoX2ZhbGxiYWNrQ29sb3IsIENvbG9yU3BhY2UuSFNMLCAnaHNsYSgwLCAwJSwgMCUsIDApJyksIF9mYWxsYmFja0NvbG9yKTtcblxudmFyIHN0cmluZ1RvQXJncyA9IGZ1bmN0aW9uIHN0cmluZ1RvQXJncyh2YWx1ZSkge1xuICB2YXIgbWF0Y2ggPSB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogdmFsdWUubWF0Y2goQ09MT1JfUkVHRVhQKTtcbiAgaWYgKCFtYXRjaCkgcmV0dXJuIFswLCAwLCAwLCAxXTtcblxuICB2YXIgX21hdGNoID0gX3NsaWNlZFRvQXJyYXkobWF0Y2gsIDUpLFxuICAgICAgeCA9IF9tYXRjaFsxXSxcbiAgICAgIHkgPSBfbWF0Y2hbMl0sXG4gICAgICB6ID0gX21hdGNoWzNdLFxuICAgICAgX21hdGNoJCA9IF9tYXRjaFs0XSxcbiAgICAgIGEgPSBfbWF0Y2gkID09PSB2b2lkIDAgPyAxIDogX21hdGNoJDtcblxuICByZXR1cm4gW3gsIHksIHosIGFdLm1hcChOdW1iZXIpO1xufTtcblxudmFyIHBhcnNlVmFsdWUgPSBmdW5jdGlvbiBwYXJzZVZhbHVlKHZhbHVlKSB7XG4gIHZhciBfcmVmMTI7XG5cbiAgaWYgKCF2YWx1ZSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgdmFyIHZhbGlkID0gdHJ1ZTtcblxuICBpZiAoUkdCX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmODtcblxuICAgIHZhciBfc3RyaW5nVG9BcmdzID0gc3RyaW5nVG9BcmdzKHZhbHVlKSxcbiAgICAgICAgX3N0cmluZ1RvQXJnczIgPSBfc2xpY2VkVG9BcnJheShfc3RyaW5nVG9BcmdzLCA0KSxcbiAgICAgICAgciA9IF9zdHJpbmdUb0FyZ3MyWzBdLFxuICAgICAgICBnID0gX3N0cmluZ1RvQXJnczJbMV0sXG4gICAgICAgIGIgPSBfc3RyaW5nVG9BcmdzMlsyXSxcbiAgICAgICAgYSA9IF9zdHJpbmdUb0FyZ3MyWzNdO1xuXG4gICAgdmFyIF9yZWY2ID0gY29udmVydC5yZ2IuaHNsKFtyLCBnLCBiXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmNyA9IF9zbGljZWRUb0FycmF5KF9yZWY2LCAzKSxcbiAgICAgICAgaCA9IF9yZWY3WzBdLFxuICAgICAgICBzID0gX3JlZjdbMV0sXG4gICAgICAgIGwgPSBfcmVmN1syXTtcblxuICAgIHJldHVybiBfcmVmOCA9IHtcbiAgICAgIHZhbGlkOiB2YWxpZCxcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGtleXdvcmQ6IGNvbnZlcnQucmdiLmtleXdvcmQoW3IsIGcsIGJdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuUkdCXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLlJHQiwgdmFsdWUpLCBfZGVmaW5lUHJvcGVydHkoX3JlZjgsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGgsIFwiLCBcIikuY29uY2F0KHMsIFwiJSwgXCIpLmNvbmNhdChsLCBcIiUsIFwiKS5jb25jYXQoYSwgXCIpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWY4LCBDb2xvclNwYWNlLkhFWCwgXCIjXCIuY29uY2F0KGNvbnZlcnQucmdiLmhleChbciwgZywgYl0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjg7XG4gIH1cblxuICBpZiAoSFNMX1JFR0VYUC50ZXN0KHZhbHVlKSkge1xuICAgIHZhciBfcmVmMTE7XG5cbiAgICB2YXIgX3N0cmluZ1RvQXJnczMgPSBzdHJpbmdUb0FyZ3ModmFsdWUpLFxuICAgICAgICBfc3RyaW5nVG9BcmdzNCA9IF9zbGljZWRUb0FycmF5KF9zdHJpbmdUb0FyZ3MzLCA0KSxcbiAgICAgICAgX2ggPSBfc3RyaW5nVG9BcmdzNFswXSxcbiAgICAgICAgX3MyID0gX3N0cmluZ1RvQXJnczRbMV0sXG4gICAgICAgIF9sID0gX3N0cmluZ1RvQXJnczRbMl0sXG4gICAgICAgIF9hID0gX3N0cmluZ1RvQXJnczRbM107XG5cbiAgICB2YXIgX3JlZjkgPSBjb252ZXJ0LmhzbC5yZ2IoW19oLCBfczIsIF9sXSkgfHwgWzAsIDAsIDBdLFxuICAgICAgICBfcmVmMTAgPSBfc2xpY2VkVG9BcnJheShfcmVmOSwgMyksXG4gICAgICAgIF9yID0gX3JlZjEwWzBdLFxuICAgICAgICBfZyA9IF9yZWYxMFsxXSxcbiAgICAgICAgX2IgPSBfcmVmMTBbMl07XG5cbiAgICByZXR1cm4gX3JlZjExID0ge1xuICAgICAgdmFsaWQ6IHZhbGlkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAga2V5d29yZDogY29udmVydC5oc2wua2V5d29yZChbX2gsIF9zMiwgX2xdKSxcbiAgICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSFNMXG4gICAgfSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMSwgQ29sb3JTcGFjZS5SR0IsIFwicmdiYShcIi5jb25jYXQoX3IsIFwiLCBcIikuY29uY2F0KF9nLCBcIiwgXCIpLmNvbmNhdChfYiwgXCIsIFwiKS5jb25jYXQoX2EsIFwiKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSFNMLCB2YWx1ZSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTEsIENvbG9yU3BhY2UuSEVYLCBcIiNcIi5jb25jYXQoY29udmVydC5oc2wuaGV4KFtfaCwgX3MyLCBfbF0pLnRvTG93ZXJDYXNlKCkpKSwgX3JlZjExO1xuICB9XG5cbiAgdmFyIHBsYWluID0gdmFsdWUucmVwbGFjZSgnIycsICcnKTtcbiAgdmFyIHJnYiA9IGNvbnZlcnQua2V5d29yZC5yZ2IocGxhaW4pIHx8IGNvbnZlcnQuaGV4LnJnYihwbGFpbik7XG4gIHZhciBoc2wgPSBjb252ZXJ0LnJnYi5oc2wocmdiKTtcbiAgdmFyIG1hcHBlZCA9IHZhbHVlO1xuICBpZiAoL1teI2EtZjAtOV0vaS50ZXN0KHZhbHVlKSkgbWFwcGVkID0gcGxhaW47ZWxzZSBpZiAoSEVYX1JFR0VYUC50ZXN0KHZhbHVlKSkgbWFwcGVkID0gXCIjXCIuY29uY2F0KHBsYWluKTtcblxuICBpZiAobWFwcGVkLnN0YXJ0c1dpdGgoJyMnKSkge1xuICAgIHZhbGlkID0gSEVYX1JFR0VYUC50ZXN0KG1hcHBlZCk7XG4gIH0gZWxzZSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnZlcnQua2V5d29yZC5oZXgobWFwcGVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB2YWxpZCA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBfcmVmMTIgPSB7XG4gICAgdmFsaWQ6IHZhbGlkLFxuICAgIHZhbHVlOiBtYXBwZWQsXG4gICAga2V5d29yZDogY29udmVydC5yZ2Iua2V5d29yZChyZ2IpLFxuICAgIGNvbG9yU3BhY2U6IENvbG9yU3BhY2UuSEVYXG4gIH0sIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuUkdCLCBcInJnYmEoXCIuY29uY2F0KHJnYlswXSwgXCIsIFwiKS5jb25jYXQocmdiWzFdLCBcIiwgXCIpLmNvbmNhdChyZ2JbMl0sIFwiLCAxKVwiKSksIF9kZWZpbmVQcm9wZXJ0eShfcmVmMTIsIENvbG9yU3BhY2UuSFNMLCBcImhzbGEoXCIuY29uY2F0KGhzbFswXSwgXCIsIFwiKS5jb25jYXQoaHNsWzFdLCBcIiUsIFwiKS5jb25jYXQoaHNsWzJdLCBcIiUsIDEpXCIpKSwgX2RlZmluZVByb3BlcnR5KF9yZWYxMiwgQ29sb3JTcGFjZS5IRVgsIG1hcHBlZCksIF9yZWYxMjtcbn07XG5cbnZhciBnZXRSZWFsVmFsdWUgPSBmdW5jdGlvbiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKSB7XG4gIGlmICghdmFsdWUgfHwgIShjb2xvciAhPT0gbnVsbCAmJiBjb2xvciAhPT0gdm9pZCAwICYmIGNvbG9yLnZhbGlkKSkgcmV0dXJuIGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG4gIGlmIChjb2xvclNwYWNlICE9PSBDb2xvclNwYWNlLkhFWCkgcmV0dXJuIChjb2xvciA9PT0gbnVsbCB8fCBjb2xvciA9PT0gdm9pZCAwID8gdm9pZCAwIDogY29sb3JbY29sb3JTcGFjZV0pIHx8IGZhbGxiYWNrQ29sb3JbY29sb3JTcGFjZV07XG5cbiAgaWYgKCFjb2xvci5oZXguc3RhcnRzV2l0aCgnIycpKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBcIiNcIi5jb25jYXQoY29udmVydC5rZXl3b3JkLmhleChjb2xvci5oZXgpKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXR1cm4gZmFsbGJhY2tDb2xvci5oZXg7XG4gICAgfVxuICB9XG5cbiAgdmFyIHNob3J0ID0gY29sb3IuaGV4Lm1hdGNoKFNIT1JUSEVYX1JFR0VYUCk7XG4gIGlmICghc2hvcnQpIHJldHVybiBIRVhfUkVHRVhQLnRlc3QoY29sb3IuaGV4KSA/IGNvbG9yLmhleCA6IGZhbGxiYWNrQ29sb3IuaGV4O1xuXG4gIHZhciBfc2hvcnQkMSRzcGxpdCA9IHNob3J0WzFdLnNwbGl0KCcnKSxcbiAgICAgIF9zaG9ydCQxJHNwbGl0MiA9IF9zbGljZWRUb0FycmF5KF9zaG9ydCQxJHNwbGl0LCAzKSxcbiAgICAgIHIgPSBfc2hvcnQkMSRzcGxpdDJbMF0sXG4gICAgICBnID0gX3Nob3J0JDEkc3BsaXQyWzFdLFxuICAgICAgYiA9IF9zaG9ydCQxJHNwbGl0MlsyXTtcblxuICByZXR1cm4gXCIjXCIuY29uY2F0KHIpLmNvbmNhdChyKS5jb25jYXQoZykuY29uY2F0KGcpLmNvbmNhdChiKS5jb25jYXQoYik7XG59O1xuXG52YXIgdXNlQ29sb3JJbnB1dCA9IGZ1bmN0aW9uIHVzZUNvbG9ySW5wdXQoaW5pdGlhbFZhbHVlLCBvbkNoYW5nZSkge1xuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoaW5pdGlhbFZhbHVlIHx8ICcnKSxcbiAgICAgIF91c2VTdGF0ZTIgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGUsIDIpLFxuICAgICAgdmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgc2V0VmFsdWUgPSBfdXNlU3RhdGUyWzFdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBwYXJzZVZhbHVlKHZhbHVlKTtcbiAgfSksXG4gICAgICBfdXNlU3RhdGU0ID0gX3NsaWNlZFRvQXJyYXkoX3VzZVN0YXRlMywgMiksXG4gICAgICBjb2xvciA9IF91c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRDb2xvciA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZSgoY29sb3IgPT09IG51bGwgfHwgY29sb3IgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGNvbG9yLmNvbG9yU3BhY2UpIHx8IENvbG9yU3BhY2UuSEVYKSxcbiAgICAgIF91c2VTdGF0ZTYgPSBfc2xpY2VkVG9BcnJheShfdXNlU3RhdGU1LCAyKSxcbiAgICAgIGNvbG9yU3BhY2UgPSBfdXNlU3RhdGU2WzBdLFxuICAgICAgc2V0Q29sb3JTcGFjZSA9IF91c2VTdGF0ZTZbMV07IC8vIFJlc2V0IHN0YXRlIHdoZW4gaW5pdGlhbFZhbHVlIGJlY29tZXMgdW5kZWZpbmVkICh3aGVuIHJlc2V0dGluZyBjb250cm9scylcblxuXG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGluaXRpYWxWYWx1ZSAhPT0gdW5kZWZpbmVkKSByZXR1cm47XG4gICAgc2V0VmFsdWUoJycpO1xuICAgIHNldENvbG9yKHVuZGVmaW5lZCk7XG4gICAgc2V0Q29sb3JTcGFjZShDb2xvclNwYWNlLkhFWCk7XG4gIH0sIFtpbml0aWFsVmFsdWVdKTtcbiAgdmFyIHJlYWxWYWx1ZSA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBnZXRSZWFsVmFsdWUodmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlKS50b0xvd2VyQ2FzZSgpO1xuICB9LCBbdmFsdWUsIGNvbG9yLCBjb2xvclNwYWNlXSk7XG4gIHZhciB1cGRhdGVWYWx1ZSA9IHVzZUNhbGxiYWNrKGZ1bmN0aW9uICh1cGRhdGUpIHtcbiAgICB2YXIgcGFyc2VkID0gcGFyc2VWYWx1ZSh1cGRhdGUpO1xuICAgIHNldFZhbHVlKChwYXJzZWQgPT09IG51bGwgfHwgcGFyc2VkID09PSB2b2lkIDAgPyB2b2lkIDAgOiBwYXJzZWQudmFsdWUpIHx8IHVwZGF0ZSB8fCAnJyk7XG4gICAgaWYgKCFwYXJzZWQpIHJldHVybjtcbiAgICBzZXRDb2xvcihwYXJzZWQpO1xuICAgIHNldENvbG9yU3BhY2UocGFyc2VkLmNvbG9yU3BhY2UpO1xuICAgIG9uQ2hhbmdlKHBhcnNlZC52YWx1ZSk7XG4gIH0sIFtvbkNoYW5nZV0pO1xuICB2YXIgY3ljbGVDb2xvclNwYWNlID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKCkge1xuICAgIHZhciBuZXh0ID0gQ09MT1JfU1BBQ0VTLmluZGV4T2YoY29sb3JTcGFjZSkgKyAxO1xuICAgIGlmIChuZXh0ID49IENPTE9SX1NQQUNFUy5sZW5ndGgpIG5leHQgPSAwO1xuICAgIHNldENvbG9yU3BhY2UoQ09MT1JfU1BBQ0VTW25leHRdKTtcbiAgICB2YXIgdXBkYXRlID0gKGNvbG9yID09PSBudWxsIHx8IGNvbG9yID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb2xvcltDT0xPUl9TUEFDRVNbbmV4dF1dKSB8fCAnJztcbiAgICBzZXRWYWx1ZSh1cGRhdGUpO1xuICAgIG9uQ2hhbmdlKHVwZGF0ZSk7XG4gIH0sIFtjb2xvciwgY29sb3JTcGFjZSwgb25DaGFuZ2VdKTtcbiAgcmV0dXJuIHtcbiAgICB2YWx1ZTogdmFsdWUsXG4gICAgcmVhbFZhbHVlOiByZWFsVmFsdWUsXG4gICAgdXBkYXRlVmFsdWU6IHVwZGF0ZVZhbHVlLFxuICAgIGNvbG9yOiBjb2xvcixcbiAgICBjb2xvclNwYWNlOiBjb2xvclNwYWNlLFxuICAgIGN5Y2xlQ29sb3JTcGFjZTogY3ljbGVDb2xvclNwYWNlXG4gIH07XG59O1xuXG52YXIgaWQgPSBmdW5jdGlvbiBpZCh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZSgvXFxzKi8sICcnKS50b0xvd2VyQ2FzZSgpO1xufTtcblxudmFyIHVzZVByZXNldHMgPSBmdW5jdGlvbiB1c2VQcmVzZXRzKHByZXNldENvbG9ycywgY3VycmVudENvbG9yLCBjb2xvclNwYWNlKSB7XG4gIHZhciBfdXNlU3RhdGU3ID0gdXNlU3RhdGUoY3VycmVudENvbG9yICE9PSBudWxsICYmIGN1cnJlbnRDb2xvciAhPT0gdm9pZCAwICYmIGN1cnJlbnRDb2xvci52YWxpZCA/IFtjdXJyZW50Q29sb3JdIDogW10pLFxuICAgICAgX3VzZVN0YXRlOCA9IF9zbGljZWRUb0FycmF5KF91c2VTdGF0ZTcsIDIpLFxuICAgICAgc2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzBdLFxuICAgICAgc2V0U2VsZWN0ZWRDb2xvcnMgPSBfdXNlU3RhdGU4WzFdOyAvLyBSZXNldCBzdGF0ZSB3aGVuIGN1cnJlbnRDb2xvciBiZWNvbWVzIHVuZGVmaW5lZCAod2hlbiByZXNldHRpbmcgY29udHJvbHMpXG5cblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Q29sb3IgIT09IHVuZGVmaW5lZCkgcmV0dXJuO1xuICAgIHNldFNlbGVjdGVkQ29sb3JzKFtdKTtcbiAgfSwgW2N1cnJlbnRDb2xvcl0pO1xuICB2YXIgcHJlc2V0cyA9IHVzZU1lbW8oZnVuY3Rpb24gKCkge1xuICAgIHZhciBpbml0aWFsUHJlc2V0cyA9IChwcmVzZXRDb2xvcnMgfHwgW10pLm1hcChmdW5jdGlvbiAocHJlc2V0KSB7XG4gICAgICBpZiAodHlwZW9mIHByZXNldCA9PT0gJ3N0cmluZycpIHJldHVybiBwYXJzZVZhbHVlKHByZXNldCk7XG4gICAgICBpZiAocHJlc2V0LnRpdGxlKSByZXR1cm4gT2JqZWN0LmFzc2lnbih7fSwgcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpLCB7XG4gICAgICAgIGtleXdvcmQ6IHByZXNldC50aXRsZVxuICAgICAgfSk7XG4gICAgICByZXR1cm4gcGFyc2VWYWx1ZShwcmVzZXQuY29sb3IpO1xuICAgIH0pO1xuICAgIHJldHVybiBpbml0aWFsUHJlc2V0cy5jb25jYXQoc2VsZWN0ZWRDb2xvcnMpLmZpbHRlcihCb29sZWFuKS5zbGljZSgtMjcpO1xuICB9LCBbcHJlc2V0Q29sb3JzLCBzZWxlY3RlZENvbG9yc10pO1xuICB2YXIgYWRkUHJlc2V0ID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGNvbG9yKSB7XG4gICAgaWYgKCEoY29sb3IgIT09IG51bGwgJiYgY29sb3IgIT09IHZvaWQgMCAmJiBjb2xvci52YWxpZCkpIHJldHVybjtcbiAgICBpZiAocHJlc2V0cy5zb21lKGZ1bmN0aW9uIChwcmVzZXQpIHtcbiAgICAgIHJldHVybiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSk7XG4gICAgfSkpIHJldHVybjtcbiAgICBzZXRTZWxlY3RlZENvbG9ycyhmdW5jdGlvbiAoYXJyKSB7XG4gICAgICByZXR1cm4gYXJyLmNvbmNhdChjb2xvcik7XG4gICAgfSk7XG4gIH0sIFtjb2xvclNwYWNlLCBwcmVzZXRzXSk7XG4gIHJldHVybiB7XG4gICAgcHJlc2V0czogcHJlc2V0cyxcbiAgICBhZGRQcmVzZXQ6IGFkZFByZXNldFxuICB9O1xufTtcblxuZXhwb3J0IHZhciBDb2xvckNvbnRyb2wgPSBmdW5jdGlvbiBDb2xvckNvbnRyb2woX3JlZjEzKSB7XG4gIHZhciBuYW1lID0gX3JlZjEzLm5hbWUsXG4gICAgICBpbml0aWFsVmFsdWUgPSBfcmVmMTMudmFsdWUsXG4gICAgICBvbkNoYW5nZSA9IF9yZWYxMy5vbkNoYW5nZSxcbiAgICAgIG9uRm9jdXMgPSBfcmVmMTMub25Gb2N1cyxcbiAgICAgIG9uQmx1ciA9IF9yZWYxMy5vbkJsdXIsXG4gICAgICBwcmVzZXRDb2xvcnMgPSBfcmVmMTMucHJlc2V0Q29sb3JzLFxuICAgICAgc3RhcnRPcGVuID0gX3JlZjEzLnN0YXJ0T3BlbjtcblxuICB2YXIgX3VzZUNvbG9ySW5wdXQgPSB1c2VDb2xvcklucHV0KGluaXRpYWxWYWx1ZSwgdGhyb3R0bGUob25DaGFuZ2UsIDIwMCkpLFxuICAgICAgdmFsdWUgPSBfdXNlQ29sb3JJbnB1dC52YWx1ZSxcbiAgICAgIHJlYWxWYWx1ZSA9IF91c2VDb2xvcklucHV0LnJlYWxWYWx1ZSxcbiAgICAgIHVwZGF0ZVZhbHVlID0gX3VzZUNvbG9ySW5wdXQudXBkYXRlVmFsdWUsXG4gICAgICBjb2xvciA9IF91c2VDb2xvcklucHV0LmNvbG9yLFxuICAgICAgY29sb3JTcGFjZSA9IF91c2VDb2xvcklucHV0LmNvbG9yU3BhY2UsXG4gICAgICBjeWNsZUNvbG9yU3BhY2UgPSBfdXNlQ29sb3JJbnB1dC5jeWNsZUNvbG9yU3BhY2U7XG5cbiAgdmFyIF91c2VQcmVzZXRzID0gdXNlUHJlc2V0cyhwcmVzZXRDb2xvcnMsIGNvbG9yLCBjb2xvclNwYWNlKSxcbiAgICAgIHByZXNldHMgPSBfdXNlUHJlc2V0cy5wcmVzZXRzLFxuICAgICAgYWRkUHJlc2V0ID0gX3VzZVByZXNldHMuYWRkUHJlc2V0O1xuXG4gIHZhciBQaWNrZXIgPSBDb2xvclBpY2tlcltjb2xvclNwYWNlXTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFdyYXBwZXIsIG51bGwsIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFBpY2tlclRvb2x0aXAsIHtcbiAgICB0cmlnZ2VyOiBcImNsaWNrXCIsXG4gICAgc3RhcnRPcGVuOiBzdGFydE9wZW4sXG4gICAgY2xvc2VPbkNsaWNrOiB0cnVlLFxuICAgIG9uVmlzaWJpbGl0eUNoYW5nZTogZnVuY3Rpb24gb25WaXNpYmlsaXR5Q2hhbmdlKCkge1xuICAgICAgcmV0dXJuIGFkZFByZXNldChjb2xvcik7XG4gICAgfSxcbiAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChUb29sdGlwQ29udGVudCwgbnVsbCwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoUGlja2VyLCB7XG4gICAgICBjb2xvcjogcmVhbFZhbHVlID09PSAndHJhbnNwYXJlbnQnID8gJyMwMDAwMDAnIDogcmVhbFZhbHVlLFxuICAgICAgb25DaGFuZ2U6IHVwZGF0ZVZhbHVlLFxuICAgICAgb25Gb2N1czogb25Gb2N1cyxcbiAgICAgIG9uQmx1cjogb25CbHVyXG4gICAgfSksIHByZXNldHMubGVuZ3RoID4gMCAmJiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2hlcywgbnVsbCwgcHJlc2V0cy5tYXAoZnVuY3Rpb24gKHByZXNldCwgaW5kZXgpIHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChXaXRoVG9vbHRpcCAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3Qvbm8tYXJyYXktaW5kZXgta2V5XG4gICAgICAsIHtcbiAgICAgICAga2V5OiBcIlwiLmNvbmNhdChwcmVzZXQudmFsdWUsIFwiLVwiKS5jb25jYXQoaW5kZXgpLFxuICAgICAgICBoYXNDaHJvbWU6IGZhbHNlLFxuICAgICAgICB0b29sdGlwOiAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChOb3RlLCB7XG4gICAgICAgICAgbm90ZTogcHJlc2V0LmtleXdvcmQgfHwgcHJlc2V0LnZhbHVlXG4gICAgICAgIH0pXG4gICAgICB9LCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChTd2F0Y2gsIHtcbiAgICAgICAgdmFsdWU6IHByZXNldFtjb2xvclNwYWNlXSxcbiAgICAgICAgYWN0aXZlOiBjb2xvciAmJiBpZChwcmVzZXRbY29sb3JTcGFjZV0pID09PSBpZChjb2xvcltjb2xvclNwYWNlXSksXG4gICAgICAgIG9uQ2xpY2s6IGZ1bmN0aW9uIG9uQ2xpY2soKSB7XG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVZhbHVlKHByZXNldC52YWx1ZSk7XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KSkpXG4gIH0sIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KFN3YXRjaCwge1xuICAgIHZhbHVlOiByZWFsVmFsdWUsXG4gICAgc3R5bGU6IHtcbiAgICAgIG1hcmdpbjogNFxuICAgIH1cbiAgfSkpLCAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlRWxlbWVudChJbnB1dCwge1xuICAgIGlkOiBnZXRDb250cm9sSWQobmFtZSksXG4gICAgdmFsdWU6IHZhbHVlLFxuICAgIG9uQ2hhbmdlOiBmdW5jdGlvbiBvbkNoYW5nZShlKSB7XG4gICAgICByZXR1cm4gdXBkYXRlVmFsdWUoZS50YXJnZXQudmFsdWUpO1xuICAgIH0sXG4gICAgb25Gb2N1czogZnVuY3Rpb24gb25Gb2N1cyhlKSB7XG4gICAgICByZXR1cm4gZS50YXJnZXQuc2VsZWN0KCk7XG4gICAgfSxcbiAgICBwbGFjZWhvbGRlcjogXCJDaG9vc2UgY29sb3IuLi5cIlxuICB9KSwgLyojX19QVVJFX18qL1JlYWN0LmNyZWF0ZUVsZW1lbnQoVG9nZ2xlSWNvbiwge1xuICAgIGljb246IFwibWFya3VwXCIsXG4gICAgb25DbGljazogY3ljbGVDb2xvclNwYWNlXG4gIH0pKTtcbn07XG5Db2xvckNvbnRyb2wuZGlzcGxheU5hbWUgPSBcIkNvbG9yQ29udHJvbFwiO1xuZXhwb3J0IGRlZmF1bHQgQ29sb3JDb250cm9sOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1007\n')},1032:function(module,exports,__webpack_require__){eval("/* MIT license */\n/* eslint-disable no-mixed-operators */\nconst cssKeywords = __webpack_require__(1076);\n\n// NOTE: conversions should only return primitive values (i.e. arrays, or\n// values that give correct `typeof` results).\n// do not use box values types (i.e. Number(), String(), etc.)\n\nconst reverseKeywords = {};\nfor (const key of Object.keys(cssKeywords)) {\n\treverseKeywords[cssKeywords[key]] = key;\n}\n\nconst convert = {\n\trgb: {channels: 3, labels: 'rgb'},\n\thsl: {channels: 3, labels: 'hsl'},\n\thsv: {channels: 3, labels: 'hsv'},\n\thwb: {channels: 3, labels: 'hwb'},\n\tcmyk: {channels: 4, labels: 'cmyk'},\n\txyz: {channels: 3, labels: 'xyz'},\n\tlab: {channels: 3, labels: 'lab'},\n\tlch: {channels: 3, labels: 'lch'},\n\thex: {channels: 1, labels: ['hex']},\n\tkeyword: {channels: 1, labels: ['keyword']},\n\tansi16: {channels: 1, labels: ['ansi16']},\n\tansi256: {channels: 1, labels: ['ansi256']},\n\thcg: {channels: 3, labels: ['h', 'c', 'g']},\n\tapple: {channels: 3, labels: ['r16', 'g16', 'b16']},\n\tgray: {channels: 1, labels: ['gray']}\n};\n\nmodule.exports = convert;\n\n// Hide .channels and .labels properties\nfor (const model of Object.keys(convert)) {\n\tif (!('channels' in convert[model])) {\n\t\tthrow new Error('missing channels property: ' + model);\n\t}\n\n\tif (!('labels' in convert[model])) {\n\t\tthrow new Error('missing channel labels property: ' + model);\n\t}\n\n\tif (convert[model].labels.length !== convert[model].channels) {\n\t\tthrow new Error('channel and label counts mismatch: ' + model);\n\t}\n\n\tconst {channels, labels} = convert[model];\n\tdelete convert[model].channels;\n\tdelete convert[model].labels;\n\tObject.defineProperty(convert[model], 'channels', {value: channels});\n\tObject.defineProperty(convert[model], 'labels', {value: labels});\n}\n\nconvert.rgb.hsl = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst min = Math.min(r, g, b);\n\tconst max = Math.max(r, g, b);\n\tconst delta = max - min;\n\tlet h;\n\tlet s;\n\n\tif (max === min) {\n\t\th = 0;\n\t} else if (r === max) {\n\t\th = (g - b) / delta;\n\t} else if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t} else if (b === max) {\n\t\th = 4 + (r - g) / delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst l = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t} else if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t} else {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n\nconvert.rgb.hsv = function (rgb) {\n\tlet rdif;\n\tlet gdif;\n\tlet bdif;\n\tlet h;\n\tlet s;\n\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst v = Math.max(r, g, b);\n\tconst diff = v - Math.min(r, g, b);\n\tconst diffc = function (c) {\n\t\treturn (v - c) / 6 / diff + 1 / 2;\n\t};\n\n\tif (diff === 0) {\n\t\th = 0;\n\t\ts = 0;\n\t} else {\n\t\ts = diff / v;\n\t\trdif = diffc(r);\n\t\tgdif = diffc(g);\n\t\tbdif = diffc(b);\n\n\t\tif (r === v) {\n\t\t\th = bdif - gdif;\n\t\t} else if (g === v) {\n\t\t\th = (1 / 3) + rdif - bdif;\n\t\t} else if (b === v) {\n\t\t\th = (2 / 3) + gdif - rdif;\n\t\t}\n\n\t\tif (h < 0) {\n\t\t\th += 1;\n\t\t} else if (h > 1) {\n\t\t\th -= 1;\n\t\t}\n\t}\n\n\treturn [\n\t\th * 360,\n\t\ts * 100,\n\t\tv * 100\n\t];\n};\n\nconvert.rgb.hwb = function (rgb) {\n\tconst r = rgb[0];\n\tconst g = rgb[1];\n\tlet b = rgb[2];\n\tconst h = convert.rgb.hsl(rgb)[0];\n\tconst w = 1 / 255 * Math.min(r, Math.min(g, b));\n\n\tb = 1 - 1 / 255 * Math.max(r, Math.max(g, b));\n\n\treturn [h, w * 100, b * 100];\n};\n\nconvert.rgb.cmyk = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\n\tconst k = Math.min(1 - r, 1 - g, 1 - b);\n\tconst c = (1 - r - k) / (1 - k) || 0;\n\tconst m = (1 - g - k) / (1 - k) || 0;\n\tconst y = (1 - b - k) / (1 - k) || 0;\n\n\treturn [c * 100, m * 100, y * 100, k * 100];\n};\n\nfunction comparativeDistance(x, y) {\n\t/*\n\t\tSee https://en.m.wikipedia.org/wiki/Euclidean_distance#Squared_Euclidean_distance\n\t*/\n\treturn (\n\t\t((x[0] - y[0]) ** 2) +\n\t\t((x[1] - y[1]) ** 2) +\n\t\t((x[2] - y[2]) ** 2)\n\t);\n}\n\nconvert.rgb.keyword = function (rgb) {\n\tconst reversed = reverseKeywords[rgb];\n\tif (reversed) {\n\t\treturn reversed;\n\t}\n\n\tlet currentClosestDistance = Infinity;\n\tlet currentClosestKeyword;\n\n\tfor (const keyword of Object.keys(cssKeywords)) {\n\t\tconst value = cssKeywords[keyword];\n\n\t\t// Compute comparative distance\n\t\tconst distance = comparativeDistance(rgb, value);\n\n\t\t// Check if its less, if so set as closest\n\t\tif (distance < currentClosestDistance) {\n\t\t\tcurrentClosestDistance = distance;\n\t\t\tcurrentClosestKeyword = keyword;\n\t\t}\n\t}\n\n\treturn currentClosestKeyword;\n};\n\nconvert.keyword.rgb = function (keyword) {\n\treturn cssKeywords[keyword];\n};\n\nconvert.rgb.xyz = function (rgb) {\n\tlet r = rgb[0] / 255;\n\tlet g = rgb[1] / 255;\n\tlet b = rgb[2] / 255;\n\n\t// Assume sRGB\n\tr = r > 0.04045 ? (((r + 0.055) / 1.055) ** 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? (((g + 0.055) / 1.055) ** 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? (((b + 0.055) / 1.055) ** 2.4) : (b / 12.92);\n\n\tconst x = (r * 0.4124) + (g * 0.3576) + (b * 0.1805);\n\tconst y = (r * 0.2126) + (g * 0.7152) + (b * 0.0722);\n\tconst z = (r * 0.0193) + (g * 0.1192) + (b * 0.9505);\n\n\treturn [x * 100, y * 100, z * 100];\n};\n\nconvert.rgb.lab = function (rgb) {\n\tconst xyz = convert.rgb.xyz(rgb);\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.hsl.rgb = function (hsl) {\n\tconst h = hsl[0] / 360;\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\tlet t2;\n\tlet t3;\n\tlet val;\n\n\tif (s === 0) {\n\t\tval = l * 255;\n\t\treturn [val, val, val];\n\t}\n\n\tif (l < 0.5) {\n\t\tt2 = l * (1 + s);\n\t} else {\n\t\tt2 = l + s - l * s;\n\t}\n\n\tconst t1 = 2 * l - t2;\n\n\tconst rgb = [0, 0, 0];\n\tfor (let i = 0; i < 3; i++) {\n\t\tt3 = h + 1 / 3 * -(i - 1);\n\t\tif (t3 < 0) {\n\t\t\tt3++;\n\t\t}\n\n\t\tif (t3 > 1) {\n\t\t\tt3--;\n\t\t}\n\n\t\tif (6 * t3 < 1) {\n\t\t\tval = t1 + (t2 - t1) * 6 * t3;\n\t\t} else if (2 * t3 < 1) {\n\t\t\tval = t2;\n\t\t} else if (3 * t3 < 2) {\n\t\t\tval = t1 + (t2 - t1) * (2 / 3 - t3) * 6;\n\t\t} else {\n\t\t\tval = t1;\n\t\t}\n\n\t\trgb[i] = val * 255;\n\t}\n\n\treturn rgb;\n};\n\nconvert.hsl.hsv = function (hsl) {\n\tconst h = hsl[0];\n\tlet s = hsl[1] / 100;\n\tlet l = hsl[2] / 100;\n\tlet smin = s;\n\tconst lmin = Math.max(l, 0.01);\n\n\tl *= 2;\n\ts *= (l <= 1) ? l : 2 - l;\n\tsmin *= lmin <= 1 ? lmin : 2 - lmin;\n\tconst v = (l + s) / 2;\n\tconst sv = l === 0 ? (2 * smin) / (lmin + smin) : (2 * s) / (l + s);\n\n\treturn [h, sv * 100, v * 100];\n};\n\nconvert.hsv.rgb = function (hsv) {\n\tconst h = hsv[0] / 60;\n\tconst s = hsv[1] / 100;\n\tlet v = hsv[2] / 100;\n\tconst hi = Math.floor(h) % 6;\n\n\tconst f = h - Math.floor(h);\n\tconst p = 255 * v * (1 - s);\n\tconst q = 255 * v * (1 - (s * f));\n\tconst t = 255 * v * (1 - (s * (1 - f)));\n\tv *= 255;\n\n\tswitch (hi) {\n\t\tcase 0:\n\t\t\treturn [v, t, p];\n\t\tcase 1:\n\t\t\treturn [q, v, p];\n\t\tcase 2:\n\t\t\treturn [p, v, t];\n\t\tcase 3:\n\t\t\treturn [p, q, v];\n\t\tcase 4:\n\t\t\treturn [t, p, v];\n\t\tcase 5:\n\t\t\treturn [v, p, q];\n\t}\n};\n\nconvert.hsv.hsl = function (hsv) {\n\tconst h = hsv[0];\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\tconst vmin = Math.max(v, 0.01);\n\tlet sl;\n\tlet l;\n\n\tl = (2 - s) * v;\n\tconst lmin = (2 - s) * vmin;\n\tsl = s * vmin;\n\tsl /= (lmin <= 1) ? lmin : 2 - lmin;\n\tsl = sl || 0;\n\tl /= 2;\n\n\treturn [h, sl * 100, l * 100];\n};\n\n// http://dev.w3.org/csswg/css-color/#hwb-to-rgb\nconvert.hwb.rgb = function (hwb) {\n\tconst h = hwb[0] / 360;\n\tlet wh = hwb[1] / 100;\n\tlet bl = hwb[2] / 100;\n\tconst ratio = wh + bl;\n\tlet f;\n\n\t// Wh + bl cant be > 1\n\tif (ratio > 1) {\n\t\twh /= ratio;\n\t\tbl /= ratio;\n\t}\n\n\tconst i = Math.floor(6 * h);\n\tconst v = 1 - bl;\n\tf = 6 * h - i;\n\n\tif ((i & 0x01) !== 0) {\n\t\tf = 1 - f;\n\t}\n\n\tconst n = wh + f * (v - wh); // Linear interpolation\n\n\tlet r;\n\tlet g;\n\tlet b;\n\t/* eslint-disable max-statements-per-line,no-multi-spaces */\n\tswitch (i) {\n\t\tdefault:\n\t\tcase 6:\n\t\tcase 0: r = v; g = n; b = wh; break;\n\t\tcase 1: r = n; g = v; b = wh; break;\n\t\tcase 2: r = wh; g = v; b = n; break;\n\t\tcase 3: r = wh; g = n; b = v; break;\n\t\tcase 4: r = n; g = wh; b = v; break;\n\t\tcase 5: r = v; g = wh; b = n; break;\n\t}\n\t/* eslint-enable max-statements-per-line,no-multi-spaces */\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.cmyk.rgb = function (cmyk) {\n\tconst c = cmyk[0] / 100;\n\tconst m = cmyk[1] / 100;\n\tconst y = cmyk[2] / 100;\n\tconst k = cmyk[3] / 100;\n\n\tconst r = 1 - Math.min(1, c * (1 - k) + k);\n\tconst g = 1 - Math.min(1, m * (1 - k) + k);\n\tconst b = 1 - Math.min(1, y * (1 - k) + k);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.rgb = function (xyz) {\n\tconst x = xyz[0] / 100;\n\tconst y = xyz[1] / 100;\n\tconst z = xyz[2] / 100;\n\tlet r;\n\tlet g;\n\tlet b;\n\n\tr = (x * 3.2406) + (y * -1.5372) + (z * -0.4986);\n\tg = (x * -0.9689) + (y * 1.8758) + (z * 0.0415);\n\tb = (x * 0.0557) + (y * -0.2040) + (z * 1.0570);\n\n\t// Assume sRGB\n\tr = r > 0.0031308\n\t\t? ((1.055 * (r ** (1.0 / 2.4))) - 0.055)\n\t\t: r * 12.92;\n\n\tg = g > 0.0031308\n\t\t? ((1.055 * (g ** (1.0 / 2.4))) - 0.055)\n\t\t: g * 12.92;\n\n\tb = b > 0.0031308\n\t\t? ((1.055 * (b ** (1.0 / 2.4))) - 0.055)\n\t\t: b * 12.92;\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n};\n\nconvert.xyz.lab = function (xyz) {\n\tlet x = xyz[0];\n\tlet y = xyz[1];\n\tlet z = xyz[2];\n\n\tx /= 95.047;\n\ty /= 100;\n\tz /= 108.883;\n\n\tx = x > 0.008856 ? (x ** (1 / 3)) : (7.787 * x) + (16 / 116);\n\ty = y > 0.008856 ? (y ** (1 / 3)) : (7.787 * y) + (16 / 116);\n\tz = z > 0.008856 ? (z ** (1 / 3)) : (7.787 * z) + (16 / 116);\n\n\tconst l = (116 * y) - 16;\n\tconst a = 500 * (x - y);\n\tconst b = 200 * (y - z);\n\n\treturn [l, a, b];\n};\n\nconvert.lab.xyz = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet x;\n\tlet y;\n\tlet z;\n\n\ty = (l + 16) / 116;\n\tx = a / 500 + y;\n\tz = y - b / 200;\n\n\tconst y2 = y ** 3;\n\tconst x2 = x ** 3;\n\tconst z2 = z ** 3;\n\ty = y2 > 0.008856 ? y2 : (y - 16 / 116) / 7.787;\n\tx = x2 > 0.008856 ? x2 : (x - 16 / 116) / 7.787;\n\tz = z2 > 0.008856 ? z2 : (z - 16 / 116) / 7.787;\n\n\tx *= 95.047;\n\ty *= 100;\n\tz *= 108.883;\n\n\treturn [x, y, z];\n};\n\nconvert.lab.lch = function (lab) {\n\tconst l = lab[0];\n\tconst a = lab[1];\n\tconst b = lab[2];\n\tlet h;\n\n\tconst hr = Math.atan2(b, a);\n\th = hr * 360 / 2 / Math.PI;\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tconst c = Math.sqrt(a * a + b * b);\n\n\treturn [l, c, h];\n};\n\nconvert.lch.lab = function (lch) {\n\tconst l = lch[0];\n\tconst c = lch[1];\n\tconst h = lch[2];\n\n\tconst hr = h / 360 * 2 * Math.PI;\n\tconst a = c * Math.cos(hr);\n\tconst b = c * Math.sin(hr);\n\n\treturn [l, a, b];\n};\n\nconvert.rgb.ansi16 = function (args, saturation = null) {\n\tconst [r, g, b] = args;\n\tlet value = saturation === null ? convert.rgb.hsv(args)[2] : saturation; // Hsv -> ansi16 optimization\n\n\tvalue = Math.round(value / 50);\n\n\tif (value === 0) {\n\t\treturn 30;\n\t}\n\n\tlet ansi = 30\n\t\t+ ((Math.round(b / 255) << 2)\n\t\t| (Math.round(g / 255) << 1)\n\t\t| Math.round(r / 255));\n\n\tif (value === 2) {\n\t\tansi += 60;\n\t}\n\n\treturn ansi;\n};\n\nconvert.hsv.ansi16 = function (args) {\n\t// Optimization here; we already know the value and don't need to get\n\t// it converted for us.\n\treturn convert.rgb.ansi16(convert.hsv.rgb(args), args[2]);\n};\n\nconvert.rgb.ansi256 = function (args) {\n\tconst r = args[0];\n\tconst g = args[1];\n\tconst b = args[2];\n\n\t// We use the extended greyscale palette here, with the exception of\n\t// black and white. normal palette only has 4 greyscale shades.\n\tif (r === g && g === b) {\n\t\tif (r < 8) {\n\t\t\treturn 16;\n\t\t}\n\n\t\tif (r > 248) {\n\t\t\treturn 231;\n\t\t}\n\n\t\treturn Math.round(((r - 8) / 247) * 24) + 232;\n\t}\n\n\tconst ansi = 16\n\t\t+ (36 * Math.round(r / 255 * 5))\n\t\t+ (6 * Math.round(g / 255 * 5))\n\t\t+ Math.round(b / 255 * 5);\n\n\treturn ansi;\n};\n\nconvert.ansi16.rgb = function (args) {\n\tlet color = args % 10;\n\n\t// Handle greyscale\n\tif (color === 0 || color === 7) {\n\t\tif (args > 50) {\n\t\t\tcolor += 3.5;\n\t\t}\n\n\t\tcolor = color / 10.5 * 255;\n\n\t\treturn [color, color, color];\n\t}\n\n\tconst mult = (~~(args > 50) + 1) * 0.5;\n\tconst r = ((color & 1) * mult) * 255;\n\tconst g = (((color >> 1) & 1) * mult) * 255;\n\tconst b = (((color >> 2) & 1) * mult) * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.ansi256.rgb = function (args) {\n\t// Handle greyscale\n\tif (args >= 232) {\n\t\tconst c = (args - 232) * 10 + 8;\n\t\treturn [c, c, c];\n\t}\n\n\targs -= 16;\n\n\tlet rem;\n\tconst r = Math.floor(args / 36) / 5 * 255;\n\tconst g = Math.floor((rem = args % 36) / 6) / 5 * 255;\n\tconst b = (rem % 6) / 5 * 255;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hex = function (args) {\n\tconst integer = ((Math.round(args[0]) & 0xFF) << 16)\n\t\t+ ((Math.round(args[1]) & 0xFF) << 8)\n\t\t+ (Math.round(args[2]) & 0xFF);\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.hex.rgb = function (args) {\n\tconst match = args.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);\n\tif (!match) {\n\t\treturn [0, 0, 0];\n\t}\n\n\tlet colorString = match[0];\n\n\tif (match[0].length === 3) {\n\t\tcolorString = colorString.split('').map(char => {\n\t\t\treturn char + char;\n\t\t}).join('');\n\t}\n\n\tconst integer = parseInt(colorString, 16);\n\tconst r = (integer >> 16) & 0xFF;\n\tconst g = (integer >> 8) & 0xFF;\n\tconst b = integer & 0xFF;\n\n\treturn [r, g, b];\n};\n\nconvert.rgb.hcg = function (rgb) {\n\tconst r = rgb[0] / 255;\n\tconst g = rgb[1] / 255;\n\tconst b = rgb[2] / 255;\n\tconst max = Math.max(Math.max(r, g), b);\n\tconst min = Math.min(Math.min(r, g), b);\n\tconst chroma = (max - min);\n\tlet grayscale;\n\tlet hue;\n\n\tif (chroma < 1) {\n\t\tgrayscale = min / (1 - chroma);\n\t} else {\n\t\tgrayscale = 0;\n\t}\n\n\tif (chroma <= 0) {\n\t\thue = 0;\n\t} else\n\tif (max === r) {\n\t\thue = ((g - b) / chroma) % 6;\n\t} else\n\tif (max === g) {\n\t\thue = 2 + (b - r) / chroma;\n\t} else {\n\t\thue = 4 + (r - g) / chroma;\n\t}\n\n\thue /= 6;\n\thue %= 1;\n\n\treturn [hue * 360, chroma * 100, grayscale * 100];\n};\n\nconvert.hsl.hcg = function (hsl) {\n\tconst s = hsl[1] / 100;\n\tconst l = hsl[2] / 100;\n\n\tconst c = l < 0.5 ? (2.0 * s * l) : (2.0 * s * (1.0 - l));\n\n\tlet f = 0;\n\tif (c < 1.0) {\n\t\tf = (l - 0.5 * c) / (1.0 - c);\n\t}\n\n\treturn [hsl[0], c * 100, f * 100];\n};\n\nconvert.hsv.hcg = function (hsv) {\n\tconst s = hsv[1] / 100;\n\tconst v = hsv[2] / 100;\n\n\tconst c = s * v;\n\tlet f = 0;\n\n\tif (c < 1.0) {\n\t\tf = (v - c) / (1 - c);\n\t}\n\n\treturn [hsv[0], c * 100, f * 100];\n};\n\nconvert.hcg.rgb = function (hcg) {\n\tconst h = hcg[0] / 360;\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tif (c === 0.0) {\n\t\treturn [g * 255, g * 255, g * 255];\n\t}\n\n\tconst pure = [0, 0, 0];\n\tconst hi = (h % 1) * 6;\n\tconst v = hi % 1;\n\tconst w = 1 - v;\n\tlet mg = 0;\n\n\t/* eslint-disable max-statements-per-line */\n\tswitch (Math.floor(hi)) {\n\t\tcase 0:\n\t\t\tpure[0] = 1; pure[1] = v; pure[2] = 0; break;\n\t\tcase 1:\n\t\t\tpure[0] = w; pure[1] = 1; pure[2] = 0; break;\n\t\tcase 2:\n\t\t\tpure[0] = 0; pure[1] = 1; pure[2] = v; break;\n\t\tcase 3:\n\t\t\tpure[0] = 0; pure[1] = w; pure[2] = 1; break;\n\t\tcase 4:\n\t\t\tpure[0] = v; pure[1] = 0; pure[2] = 1; break;\n\t\tdefault:\n\t\t\tpure[0] = 1; pure[1] = 0; pure[2] = w;\n\t}\n\t/* eslint-enable max-statements-per-line */\n\n\tmg = (1.0 - c) * g;\n\n\treturn [\n\t\t(c * pure[0] + mg) * 255,\n\t\t(c * pure[1] + mg) * 255,\n\t\t(c * pure[2] + mg) * 255\n\t];\n};\n\nconvert.hcg.hsv = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst v = c + g * (1.0 - c);\n\tlet f = 0;\n\n\tif (v > 0.0) {\n\t\tf = c / v;\n\t}\n\n\treturn [hcg[0], f * 100, v * 100];\n};\n\nconvert.hcg.hsl = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\n\tconst l = g * (1.0 - c) + 0.5 * c;\n\tlet s = 0;\n\n\tif (l > 0.0 && l < 0.5) {\n\t\ts = c / (2 * l);\n\t} else\n\tif (l >= 0.5 && l < 1.0) {\n\t\ts = c / (2 * (1 - l));\n\t}\n\n\treturn [hcg[0], s * 100, l * 100];\n};\n\nconvert.hcg.hwb = function (hcg) {\n\tconst c = hcg[1] / 100;\n\tconst g = hcg[2] / 100;\n\tconst v = c + g * (1.0 - c);\n\treturn [hcg[0], (v - c) * 100, (1 - v) * 100];\n};\n\nconvert.hwb.hcg = function (hwb) {\n\tconst w = hwb[1] / 100;\n\tconst b = hwb[2] / 100;\n\tconst v = 1 - b;\n\tconst c = v - w;\n\tlet g = 0;\n\n\tif (c < 1) {\n\t\tg = (v - c) / (1 - c);\n\t}\n\n\treturn [hwb[0], c * 100, g * 100];\n};\n\nconvert.apple.rgb = function (apple) {\n\treturn [(apple[0] / 65535) * 255, (apple[1] / 65535) * 255, (apple[2] / 65535) * 255];\n};\n\nconvert.rgb.apple = function (rgb) {\n\treturn [(rgb[0] / 255) * 65535, (rgb[1] / 255) * 65535, (rgb[2] / 255) * 65535];\n};\n\nconvert.gray.rgb = function (args) {\n\treturn [args[0] / 100 * 255, args[0] / 100 * 255, args[0] / 100 * 255];\n};\n\nconvert.gray.hsl = function (args) {\n\treturn [0, 0, args[0]];\n};\n\nconvert.gray.hsv = convert.gray.hsl;\n\nconvert.gray.hwb = function (gray) {\n\treturn [0, 100, gray[0]];\n};\n\nconvert.gray.cmyk = function (gray) {\n\treturn [0, 0, 0, gray[0]];\n};\n\nconvert.gray.lab = function (gray) {\n\treturn [gray[0], 0, 0];\n};\n\nconvert.gray.hex = function (gray) {\n\tconst val = Math.round(gray[0] / 100 * 255) & 0xFF;\n\tconst integer = (val << 16) + (val << 8) + val;\n\n\tconst string = integer.toString(16).toUpperCase();\n\treturn '000000'.substring(string.length) + string;\n};\n\nconvert.rgb.gray = function (rgb) {\n\tconst val = (rgb[0] + rgb[1] + rgb[2]) / 3;\n\treturn [val / 255 * 100];\n};\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9jb252ZXJzaW9ucy5qcz83YWQzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQ0E7QUFDQSxvQkFBb0IsbUJBQU8sQ0FBQyxJQUFZOztBQUV4QztBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQSxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxRQUFRLDRCQUE0QjtBQUNwQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDJCQUEyQjtBQUNsQyxPQUFPLDZCQUE2QjtBQUNwQyxXQUFXLGlDQUFpQztBQUM1QyxVQUFVLGdDQUFnQztBQUMxQyxXQUFXLGlDQUFpQztBQUM1QyxPQUFPLHFDQUFxQztBQUM1QyxTQUFTLDJDQUEyQztBQUNwRCxRQUFRO0FBQ1I7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBLFFBQVEsaUJBQWlCO0FBQ3pCO0FBQ0E7QUFDQSxvREFBb0QsZ0JBQWdCO0FBQ3BFLGtEQUFrRCxjQUFjO0FBQ2hFOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEdBQUc7QUFDSDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLGdCQUFnQixPQUFPO0FBQ3ZCO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0EsR0FBRztBQUNIO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEsNkJBQTZCOztBQUU3QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGdCQUFnQixRQUFRLFNBQVM7QUFDakMsZ0JBQWdCLFFBQVEsU0FBUztBQUNqQyxpQkFBaUIsT0FBTyxRQUFRO0FBQ2hDLGlCQUFpQixPQUFPLFFBQVE7QUFDaEMsZ0JBQWdCLFNBQVMsT0FBTztBQUNoQyxnQkFBZ0IsU0FBUyxPQUFPO0FBQ2hDO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLHlFQUF5RTs7QUFFekU7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0Esc0JBQXNCO0FBQ3RCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLGlEQUFpRCxFQUFFLFVBQVUsRUFBRTtBQUMvRDtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsR0FBRztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTs7QUFFQTtBQUNBO0FBQ0EsRUFBRTtBQUNGO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBLEVBQUU7QUFDRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhLGFBQWE7QUFDekM7QUFDQSxlQUFlLGFBQWEsYUFBYTtBQUN6QztBQUNBLGVBQWUsYUFBYSxhQUFhO0FBQ3pDO0FBQ0EsZUFBZSxhQUFhO0FBQzVCO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQSxFQUFFO0FBQ0Y7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMDMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogTUlUIGxpY2Vuc2UgKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xuY29uc3QgY3NzS2V5d29yZHMgPSByZXF1aXJlKCdjb2xvci1uYW1lJyk7XG5cbi8vIE5PVEU6IGNvbnZlcnNpb25zIHNob3VsZCBvbmx5IHJldHVybiBwcmltaXRpdmUgdmFsdWVzIChpLmUuIGFycmF5cywgb3Jcbi8vICAgICAgIHZhbHVlcyB0aGF0IGdpdmUgY29ycmVjdCBgdHlwZW9mYCByZXN1bHRzKS5cbi8vICAgICAgIGRvIG5vdCB1c2UgYm94IHZhbHVlcyB0eXBlcyAoaS5lLiBOdW1iZXIoKSwgU3RyaW5nKCksIGV0Yy4pXG5cbmNvbnN0IHJldmVyc2VLZXl3b3JkcyA9IHt9O1xuZm9yIChjb25zdCBrZXkgb2YgT2JqZWN0LmtleXMoY3NzS2V5d29yZHMpKSB7XG5cdHJldmVyc2VLZXl3b3Jkc1tjc3NLZXl3b3Jkc1trZXldXSA9IGtleTtcbn1cblxuY29uc3QgY29udmVydCA9IHtcblx0cmdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3JnYid9LFxuXHRoc2w6IHtjaGFubmVsczogMywgbGFiZWxzOiAnaHNsJ30sXG5cdGhzdjoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdoc3YnfSxcblx0aHdiOiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ2h3Yid9LFxuXHRjbXlrOiB7Y2hhbm5lbHM6IDQsIGxhYmVsczogJ2NteWsnfSxcblx0eHl6OiB7Y2hhbm5lbHM6IDMsIGxhYmVsczogJ3h5eid9LFxuXHRsYWI6IHtjaGFubmVsczogMywgbGFiZWxzOiAnbGFiJ30sXG5cdGxjaDoge2NoYW5uZWxzOiAzLCBsYWJlbHM6ICdsY2gnfSxcblx0aGV4OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydoZXgnXX0sXG5cdGtleXdvcmQ6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2tleXdvcmQnXX0sXG5cdGFuc2kxNjoge2NoYW5uZWxzOiAxLCBsYWJlbHM6IFsnYW5zaTE2J119LFxuXHRhbnNpMjU2OiB7Y2hhbm5lbHM6IDEsIGxhYmVsczogWydhbnNpMjU2J119LFxuXHRoY2c6IHtjaGFubmVsczogMywgbGFiZWxzOiBbJ2gnLCAnYycsICdnJ119LFxuXHRhcHBsZToge2NoYW5uZWxzOiAzLCBsYWJlbHM6IFsncjE2JywgJ2cxNicsICdiMTYnXX0sXG5cdGdyYXk6IHtjaGFubmVsczogMSwgbGFiZWxzOiBbJ2dyYXknXX1cbn07XG5cbm1vZHVsZS5leHBvcnRzID0gY29udmVydDtcblxuLy8gSGlkZSAuY2hhbm5lbHMgYW5kIC5sYWJlbHMgcHJvcGVydGllc1xuZm9yIChjb25zdCBtb2RlbCBvZiBPYmplY3Qua2V5cyhjb252ZXJ0KSkge1xuXHRpZiAoISgnY2hhbm5lbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmICghKCdsYWJlbHMnIGluIGNvbnZlcnRbbW9kZWxdKSkge1xuXHRcdHRocm93IG5ldyBFcnJvcignbWlzc2luZyBjaGFubmVsIGxhYmVscyBwcm9wZXJ0eTogJyArIG1vZGVsKTtcblx0fVxuXG5cdGlmIChjb252ZXJ0W21vZGVsXS5sYWJlbHMubGVuZ3RoICE9PSBjb252ZXJ0W21vZGVsXS5jaGFubmVscykge1xuXHRcdHRocm93IG5ldyBFcnJvcignY2hhbm5lbCBhbmQgbGFiZWwgY291bnRzIG1pc21hdGNoOiAnICsgbW9kZWwpO1xuXHR9XG5cblx0Y29uc3Qge2NoYW5uZWxzLCBsYWJlbHN9ID0gY29udmVydFttb2RlbF07XG5cdGRlbGV0ZSBjb252ZXJ0W21vZGVsXS5jaGFubmVscztcblx0ZGVsZXRlIGNvbnZlcnRbbW9kZWxdLmxhYmVscztcblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGNvbnZlcnRbbW9kZWxdLCAnY2hhbm5lbHMnLCB7dmFsdWU6IGNoYW5uZWxzfSk7XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W21vZGVsXSwgJ2xhYmVscycsIHt2YWx1ZTogbGFiZWxzfSk7XG59XG5cbmNvbnZlcnQucmdiLmhzbCA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWluID0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IG1heCA9IE1hdGgubWF4KHIsIGcsIGIpO1xuXHRjb25zdCBkZWx0YSA9IG1heCAtIG1pbjtcblx0bGV0IGg7XG5cdGxldCBzO1xuXG5cdGlmIChtYXggPT09IG1pbikge1xuXHRcdGggPSAwO1xuXHR9IGVsc2UgaWYgKHIgPT09IG1heCkge1xuXHRcdGggPSAoZyAtIGIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoZyA9PT0gbWF4KSB7XG5cdFx0aCA9IDIgKyAoYiAtIHIpIC8gZGVsdGE7XG5cdH0gZWxzZSBpZiAoYiA9PT0gbWF4KSB7XG5cdFx0aCA9IDQgKyAociAtIGcpIC8gZGVsdGE7XG5cdH1cblxuXHRoID0gTWF0aC5taW4oaCAqIDYwLCAzNjApO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgbCA9IChtaW4gKyBtYXgpIC8gMjtcblxuXHRpZiAobWF4ID09PSBtaW4pIHtcblx0XHRzID0gMDtcblx0fSBlbHNlIGlmIChsIDw9IDAuNSkge1xuXHRcdHMgPSBkZWx0YSAvIChtYXggKyBtaW4pO1xuXHR9IGVsc2Uge1xuXHRcdHMgPSBkZWx0YSAvICgyIC0gbWF4IC0gbWluKTtcblx0fVxuXG5cdHJldHVybiBbaCwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5oc3YgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByZGlmO1xuXHRsZXQgZ2RpZjtcblx0bGV0IGJkaWY7XG5cdGxldCBoO1xuXHRsZXQgcztcblxuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXHRjb25zdCB2ID0gTWF0aC5tYXgociwgZywgYik7XG5cdGNvbnN0IGRpZmYgPSB2IC0gTWF0aC5taW4ociwgZywgYik7XG5cdGNvbnN0IGRpZmZjID0gZnVuY3Rpb24gKGMpIHtcblx0XHRyZXR1cm4gKHYgLSBjKSAvIDYgLyBkaWZmICsgMSAvIDI7XG5cdH07XG5cblx0aWYgKGRpZmYgPT09IDApIHtcblx0XHRoID0gMDtcblx0XHRzID0gMDtcblx0fSBlbHNlIHtcblx0XHRzID0gZGlmZiAvIHY7XG5cdFx0cmRpZiA9IGRpZmZjKHIpO1xuXHRcdGdkaWYgPSBkaWZmYyhnKTtcblx0XHRiZGlmID0gZGlmZmMoYik7XG5cblx0XHRpZiAociA9PT0gdikge1xuXHRcdFx0aCA9IGJkaWYgLSBnZGlmO1xuXHRcdH0gZWxzZSBpZiAoZyA9PT0gdikge1xuXHRcdFx0aCA9ICgxIC8gMykgKyByZGlmIC0gYmRpZjtcblx0XHR9IGVsc2UgaWYgKGIgPT09IHYpIHtcblx0XHRcdGggPSAoMiAvIDMpICsgZ2RpZiAtIHJkaWY7XG5cdFx0fVxuXG5cdFx0aWYgKGggPCAwKSB7XG5cdFx0XHRoICs9IDE7XG5cdFx0fSBlbHNlIGlmIChoID4gMSkge1xuXHRcdFx0aCAtPSAxO1xuXHRcdH1cblx0fVxuXG5cdHJldHVybiBbXG5cdFx0aCAqIDM2MCxcblx0XHRzICogMTAwLFxuXHRcdHYgKiAxMDBcblx0XTtcbn07XG5cbmNvbnZlcnQucmdiLmh3YiA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXTtcblx0Y29uc3QgZyA9IHJnYlsxXTtcblx0bGV0IGIgPSByZ2JbMl07XG5cdGNvbnN0IGggPSBjb252ZXJ0LnJnYi5oc2wocmdiKVswXTtcblx0Y29uc3QgdyA9IDEgLyAyNTUgKiBNYXRoLm1pbihyLCBNYXRoLm1pbihnLCBiKSk7XG5cblx0YiA9IDEgLSAxIC8gMjU1ICogTWF0aC5tYXgociwgTWF0aC5tYXgoZywgYikpO1xuXG5cdHJldHVybiBbaCwgdyAqIDEwMCwgYiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5jbXlrID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByID0gcmdiWzBdIC8gMjU1O1xuXHRjb25zdCBnID0gcmdiWzFdIC8gMjU1O1xuXHRjb25zdCBiID0gcmdiWzJdIC8gMjU1O1xuXG5cdGNvbnN0IGsgPSBNYXRoLm1pbigxIC0gciwgMSAtIGcsIDEgLSBiKTtcblx0Y29uc3QgYyA9ICgxIC0gciAtIGspIC8gKDEgLSBrKSB8fCAwO1xuXHRjb25zdCBtID0gKDEgLSBnIC0gaykgLyAoMSAtIGspIHx8IDA7XG5cdGNvbnN0IHkgPSAoMSAtIGIgLSBrKSAvICgxIC0gaykgfHwgMDtcblxuXHRyZXR1cm4gW2MgKiAxMDAsIG0gKiAxMDAsIHkgKiAxMDAsIGsgKiAxMDBdO1xufTtcblxuZnVuY3Rpb24gY29tcGFyYXRpdmVEaXN0YW5jZSh4LCB5KSB7XG5cdC8qXG5cdFx0U2VlIGh0dHBzOi8vZW4ubS53aWtpcGVkaWEub3JnL3dpa2kvRXVjbGlkZWFuX2Rpc3RhbmNlI1NxdWFyZWRfRXVjbGlkZWFuX2Rpc3RhbmNlXG5cdCovXG5cdHJldHVybiAoXG5cdFx0KCh4WzBdIC0geVswXSkgKiogMikgK1xuXHRcdCgoeFsxXSAtIHlbMV0pICoqIDIpICtcblx0XHQoKHhbMl0gLSB5WzJdKSAqKiAyKVxuXHQpO1xufVxuXG5jb252ZXJ0LnJnYi5rZXl3b3JkID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCByZXZlcnNlZCA9IHJldmVyc2VLZXl3b3Jkc1tyZ2JdO1xuXHRpZiAocmV2ZXJzZWQpIHtcblx0XHRyZXR1cm4gcmV2ZXJzZWQ7XG5cdH1cblxuXHRsZXQgY3VycmVudENsb3Nlc3REaXN0YW5jZSA9IEluZmluaXR5O1xuXHRsZXQgY3VycmVudENsb3Nlc3RLZXl3b3JkO1xuXG5cdGZvciAoY29uc3Qga2V5d29yZCBvZiBPYmplY3Qua2V5cyhjc3NLZXl3b3JkcykpIHtcblx0XHRjb25zdCB2YWx1ZSA9IGNzc0tleXdvcmRzW2tleXdvcmRdO1xuXG5cdFx0Ly8gQ29tcHV0ZSBjb21wYXJhdGl2ZSBkaXN0YW5jZVxuXHRcdGNvbnN0IGRpc3RhbmNlID0gY29tcGFyYXRpdmVEaXN0YW5jZShyZ2IsIHZhbHVlKTtcblxuXHRcdC8vIENoZWNrIGlmIGl0cyBsZXNzLCBpZiBzbyBzZXQgYXMgY2xvc2VzdFxuXHRcdGlmIChkaXN0YW5jZSA8IGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UpIHtcblx0XHRcdGN1cnJlbnRDbG9zZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTtcblx0XHRcdGN1cnJlbnRDbG9zZXN0S2V5d29yZCA9IGtleXdvcmQ7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGN1cnJlbnRDbG9zZXN0S2V5d29yZDtcbn07XG5cbmNvbnZlcnQua2V5d29yZC5yZ2IgPSBmdW5jdGlvbiAoa2V5d29yZCkge1xuXHRyZXR1cm4gY3NzS2V5d29yZHNba2V5d29yZF07XG59O1xuXG5jb252ZXJ0LnJnYi54eXogPSBmdW5jdGlvbiAocmdiKSB7XG5cdGxldCByID0gcmdiWzBdIC8gMjU1O1xuXHRsZXQgZyA9IHJnYlsxXSAvIDI1NTtcblx0bGV0IGIgPSByZ2JbMl0gLyAyNTU7XG5cblx0Ly8gQXNzdW1lIHNSR0Jcblx0ciA9IHIgPiAwLjA0MDQ1ID8gKCgociArIDAuMDU1KSAvIDEuMDU1KSAqKiAyLjQpIDogKHIgLyAxMi45Mik7XG5cdGcgPSBnID4gMC4wNDA0NSA/ICgoKGcgKyAwLjA1NSkgLyAxLjA1NSkgKiogMi40KSA6IChnIC8gMTIuOTIpO1xuXHRiID0gYiA+IDAuMDQwNDUgPyAoKChiICsgMC4wNTUpIC8gMS4wNTUpICoqIDIuNCkgOiAoYiAvIDEyLjkyKTtcblxuXHRjb25zdCB4ID0gKHIgKiAwLjQxMjQpICsgKGcgKiAwLjM1NzYpICsgKGIgKiAwLjE4MDUpO1xuXHRjb25zdCB5ID0gKHIgKiAwLjIxMjYpICsgKGcgKiAwLjcxNTIpICsgKGIgKiAwLjA3MjIpO1xuXHRjb25zdCB6ID0gKHIgKiAwLjAxOTMpICsgKGcgKiAwLjExOTIpICsgKGIgKiAwLjk1MDUpO1xuXG5cdHJldHVybiBbeCAqIDEwMCwgeSAqIDEwMCwgeiAqIDEwMF07XG59O1xuXG5jb252ZXJ0LnJnYi5sYWIgPSBmdW5jdGlvbiAocmdiKSB7XG5cdGNvbnN0IHh5eiA9IGNvbnZlcnQucmdiLnh5eihyZ2IpO1xuXHRsZXQgeCA9IHh5elswXTtcblx0bGV0IHkgPSB4eXpbMV07XG5cdGxldCB6ID0geHl6WzJdO1xuXG5cdHggLz0gOTUuMDQ3O1xuXHR5IC89IDEwMDtcblx0eiAvPSAxMDguODgzO1xuXG5cdHggPSB4ID4gMC4wMDg4NTYgPyAoeCAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHgpICsgKDE2IC8gMTE2KTtcblx0eSA9IHkgPiAwLjAwODg1NiA/ICh5ICoqICgxIC8gMykpIDogKDcuNzg3ICogeSkgKyAoMTYgLyAxMTYpO1xuXHR6ID0geiA+IDAuMDA4ODU2ID8gKHogKiogKDEgLyAzKSkgOiAoNy43ODcgKiB6KSArICgxNiAvIDExNik7XG5cblx0Y29uc3QgbCA9ICgxMTYgKiB5KSAtIDE2O1xuXHRjb25zdCBhID0gNTAwICogKHggLSB5KTtcblx0Y29uc3QgYiA9IDIwMCAqICh5IC0geik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQuaHNsLnJnYiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXSAvIDM2MDtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblx0bGV0IHQyO1xuXHRsZXQgdDM7XG5cdGxldCB2YWw7XG5cblx0aWYgKHMgPT09IDApIHtcblx0XHR2YWwgPSBsICogMjU1O1xuXHRcdHJldHVybiBbdmFsLCB2YWwsIHZhbF07XG5cdH1cblxuXHRpZiAobCA8IDAuNSkge1xuXHRcdHQyID0gbCAqICgxICsgcyk7XG5cdH0gZWxzZSB7XG5cdFx0dDIgPSBsICsgcyAtIGwgKiBzO1xuXHR9XG5cblx0Y29uc3QgdDEgPSAyICogbCAtIHQyO1xuXG5cdGNvbnN0IHJnYiA9IFswLCAwLCAwXTtcblx0Zm9yIChsZXQgaSA9IDA7IGkgPCAzOyBpKyspIHtcblx0XHR0MyA9IGggKyAxIC8gMyAqIC0oaSAtIDEpO1xuXHRcdGlmICh0MyA8IDApIHtcblx0XHRcdHQzKys7XG5cdFx0fVxuXG5cdFx0aWYgKHQzID4gMSkge1xuXHRcdFx0dDMtLTtcblx0XHR9XG5cblx0XHRpZiAoNiAqIHQzIDwgMSkge1xuXHRcdFx0dmFsID0gdDEgKyAodDIgLSB0MSkgKiA2ICogdDM7XG5cdFx0fSBlbHNlIGlmICgyICogdDMgPCAxKSB7XG5cdFx0XHR2YWwgPSB0Mjtcblx0XHR9IGVsc2UgaWYgKDMgKiB0MyA8IDIpIHtcblx0XHRcdHZhbCA9IHQxICsgKHQyIC0gdDEpICogKDIgLyAzIC0gdDMpICogNjtcblx0XHR9IGVsc2Uge1xuXHRcdFx0dmFsID0gdDE7XG5cdFx0fVxuXG5cdFx0cmdiW2ldID0gdmFsICogMjU1O1xuXHR9XG5cblx0cmV0dXJuIHJnYjtcbn07XG5cbmNvbnZlcnQuaHNsLmhzdiA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgaCA9IGhzbFswXTtcblx0bGV0IHMgPSBoc2xbMV0gLyAxMDA7XG5cdGxldCBsID0gaHNsWzJdIC8gMTAwO1xuXHRsZXQgc21pbiA9IHM7XG5cdGNvbnN0IGxtaW4gPSBNYXRoLm1heChsLCAwLjAxKTtcblxuXHRsICo9IDI7XG5cdHMgKj0gKGwgPD0gMSkgPyBsIDogMiAtIGw7XG5cdHNtaW4gKj0gbG1pbiA8PSAxID8gbG1pbiA6IDIgLSBsbWluO1xuXHRjb25zdCB2ID0gKGwgKyBzKSAvIDI7XG5cdGNvbnN0IHN2ID0gbCA9PT0gMCA/ICgyICogc21pbikgLyAobG1pbiArIHNtaW4pIDogKDIgKiBzKSAvIChsICsgcyk7XG5cblx0cmV0dXJuIFtoLCBzdiAqIDEwMCwgdiAqIDEwMF07XG59O1xuXG5jb252ZXJ0Lmhzdi5yZ2IgPSBmdW5jdGlvbiAoaHN2KSB7XG5cdGNvbnN0IGggPSBoc3ZbMF0gLyA2MDtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0bGV0IHYgPSBoc3ZbMl0gLyAxMDA7XG5cdGNvbnN0IGhpID0gTWF0aC5mbG9vcihoKSAlIDY7XG5cblx0Y29uc3QgZiA9IGggLSBNYXRoLmZsb29yKGgpO1xuXHRjb25zdCBwID0gMjU1ICogdiAqICgxIC0gcyk7XG5cdGNvbnN0IHEgPSAyNTUgKiB2ICogKDEgLSAocyAqIGYpKTtcblx0Y29uc3QgdCA9IDI1NSAqIHYgKiAoMSAtIChzICogKDEgLSBmKSkpO1xuXHR2ICo9IDI1NTtcblxuXHRzd2l0Y2ggKGhpKSB7XG5cdFx0Y2FzZSAwOlxuXHRcdFx0cmV0dXJuIFt2LCB0LCBwXTtcblx0XHRjYXNlIDE6XG5cdFx0XHRyZXR1cm4gW3EsIHYsIHBdO1xuXHRcdGNhc2UgMjpcblx0XHRcdHJldHVybiBbcCwgdiwgdF07XG5cdFx0Y2FzZSAzOlxuXHRcdFx0cmV0dXJuIFtwLCBxLCB2XTtcblx0XHRjYXNlIDQ6XG5cdFx0XHRyZXR1cm4gW3QsIHAsIHZdO1xuXHRcdGNhc2UgNTpcblx0XHRcdHJldHVybiBbdiwgcCwgcV07XG5cdH1cbn07XG5cbmNvbnZlcnQuaHN2LmhzbCA9IGZ1bmN0aW9uIChoc3YpIHtcblx0Y29uc3QgaCA9IGhzdlswXTtcblx0Y29uc3QgcyA9IGhzdlsxXSAvIDEwMDtcblx0Y29uc3QgdiA9IGhzdlsyXSAvIDEwMDtcblx0Y29uc3Qgdm1pbiA9IE1hdGgubWF4KHYsIDAuMDEpO1xuXHRsZXQgc2w7XG5cdGxldCBsO1xuXG5cdGwgPSAoMiAtIHMpICogdjtcblx0Y29uc3QgbG1pbiA9ICgyIC0gcykgKiB2bWluO1xuXHRzbCA9IHMgKiB2bWluO1xuXHRzbCAvPSAobG1pbiA8PSAxKSA/IGxtaW4gOiAyIC0gbG1pbjtcblx0c2wgPSBzbCB8fCAwO1xuXHRsIC89IDI7XG5cblx0cmV0dXJuIFtoLCBzbCAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG4vLyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MtY29sb3IvI2h3Yi10by1yZ2JcbmNvbnZlcnQuaHdiLnJnYiA9IGZ1bmN0aW9uIChod2IpIHtcblx0Y29uc3QgaCA9IGh3YlswXSAvIDM2MDtcblx0bGV0IHdoID0gaHdiWzFdIC8gMTAwO1xuXHRsZXQgYmwgPSBod2JbMl0gLyAxMDA7XG5cdGNvbnN0IHJhdGlvID0gd2ggKyBibDtcblx0bGV0IGY7XG5cblx0Ly8gV2ggKyBibCBjYW50IGJlID4gMVxuXHRpZiAocmF0aW8gPiAxKSB7XG5cdFx0d2ggLz0gcmF0aW87XG5cdFx0YmwgLz0gcmF0aW87XG5cdH1cblxuXHRjb25zdCBpID0gTWF0aC5mbG9vcig2ICogaCk7XG5cdGNvbnN0IHYgPSAxIC0gYmw7XG5cdGYgPSA2ICogaCAtIGk7XG5cblx0aWYgKChpICYgMHgwMSkgIT09IDApIHtcblx0XHRmID0gMSAtIGY7XG5cdH1cblxuXHRjb25zdCBuID0gd2ggKyBmICogKHYgLSB3aCk7IC8vIExpbmVhciBpbnRlcnBvbGF0aW9uXG5cblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblx0LyogZXNsaW50LWRpc2FibGUgbWF4LXN0YXRlbWVudHMtcGVyLWxpbmUsbm8tbXVsdGktc3BhY2VzICovXG5cdHN3aXRjaCAoaSkge1xuXHRcdGRlZmF1bHQ6XG5cdFx0Y2FzZSA2OlxuXHRcdGNhc2UgMDogciA9IHY7ICBnID0gbjsgIGIgPSB3aDsgYnJlYWs7XG5cdFx0Y2FzZSAxOiByID0gbjsgIGcgPSB2OyAgYiA9IHdoOyBicmVhaztcblx0XHRjYXNlIDI6IHIgPSB3aDsgZyA9IHY7ICBiID0gbjsgYnJlYWs7XG5cdFx0Y2FzZSAzOiByID0gd2g7IGcgPSBuOyAgYiA9IHY7IGJyZWFrO1xuXHRcdGNhc2UgNDogciA9IG47ICBnID0gd2g7IGIgPSB2OyBicmVhaztcblx0XHRjYXNlIDU6IHIgPSB2OyAgZyA9IHdoOyBiID0gbjsgYnJlYWs7XG5cdH1cblx0LyogZXNsaW50LWVuYWJsZSBtYXgtc3RhdGVtZW50cy1wZXItbGluZSxuby1tdWx0aS1zcGFjZXMgKi9cblxuXHRyZXR1cm4gW3IgKiAyNTUsIGcgKiAyNTUsIGIgKiAyNTVdO1xufTtcblxuY29udmVydC5jbXlrLnJnYiA9IGZ1bmN0aW9uIChjbXlrKSB7XG5cdGNvbnN0IGMgPSBjbXlrWzBdIC8gMTAwO1xuXHRjb25zdCBtID0gY215a1sxXSAvIDEwMDtcblx0Y29uc3QgeSA9IGNteWtbMl0gLyAxMDA7XG5cdGNvbnN0IGsgPSBjbXlrWzNdIC8gMTAwO1xuXG5cdGNvbnN0IHIgPSAxIC0gTWF0aC5taW4oMSwgYyAqICgxIC0gaykgKyBrKTtcblx0Y29uc3QgZyA9IDEgLSBNYXRoLm1pbigxLCBtICogKDEgLSBrKSArIGspO1xuXHRjb25zdCBiID0gMSAtIE1hdGgubWluKDEsIHkgKiAoMSAtIGspICsgayk7XG5cblx0cmV0dXJuIFtyICogMjU1LCBnICogMjU1LCBiICogMjU1XTtcbn07XG5cbmNvbnZlcnQueHl6LnJnYiA9IGZ1bmN0aW9uICh4eXopIHtcblx0Y29uc3QgeCA9IHh5elswXSAvIDEwMDtcblx0Y29uc3QgeSA9IHh5elsxXSAvIDEwMDtcblx0Y29uc3QgeiA9IHh5elsyXSAvIDEwMDtcblx0bGV0IHI7XG5cdGxldCBnO1xuXHRsZXQgYjtcblxuXHRyID0gKHggKiAzLjI0MDYpICsgKHkgKiAtMS41MzcyKSArICh6ICogLTAuNDk4Nik7XG5cdGcgPSAoeCAqIC0wLjk2ODkpICsgKHkgKiAxLjg3NTgpICsgKHogKiAwLjA0MTUpO1xuXHRiID0gKHggKiAwLjA1NTcpICsgKHkgKiAtMC4yMDQwKSArICh6ICogMS4wNTcwKTtcblxuXHQvLyBBc3N1bWUgc1JHQlxuXHRyID0gciA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChyICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IHIgKiAxMi45MjtcblxuXHRnID0gZyA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChnICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGcgKiAxMi45MjtcblxuXHRiID0gYiA+IDAuMDAzMTMwOFxuXHRcdD8gKCgxLjA1NSAqIChiICoqICgxLjAgLyAyLjQpKSkgLSAwLjA1NSlcblx0XHQ6IGIgKiAxMi45MjtcblxuXHRyID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgciksIDEpO1xuXHRnID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgZyksIDEpO1xuXHRiID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgYiksIDEpO1xuXG5cdHJldHVybiBbciAqIDI1NSwgZyAqIDI1NSwgYiAqIDI1NV07XG59O1xuXG5jb252ZXJ0Lnh5ei5sYWIgPSBmdW5jdGlvbiAoeHl6KSB7XG5cdGxldCB4ID0geHl6WzBdO1xuXHRsZXQgeSA9IHh5elsxXTtcblx0bGV0IHogPSB4eXpbMl07XG5cblx0eCAvPSA5NS4wNDc7XG5cdHkgLz0gMTAwO1xuXHR6IC89IDEwOC44ODM7XG5cblx0eCA9IHggPiAwLjAwODg1NiA/ICh4ICoqICgxIC8gMykpIDogKDcuNzg3ICogeCkgKyAoMTYgLyAxMTYpO1xuXHR5ID0geSA+IDAuMDA4ODU2ID8gKHkgKiogKDEgLyAzKSkgOiAoNy43ODcgKiB5KSArICgxNiAvIDExNik7XG5cdHogPSB6ID4gMC4wMDg4NTYgPyAoeiAqKiAoMSAvIDMpKSA6ICg3Ljc4NyAqIHopICsgKDE2IC8gMTE2KTtcblxuXHRjb25zdCBsID0gKDExNiAqIHkpIC0gMTY7XG5cdGNvbnN0IGEgPSA1MDAgKiAoeCAtIHkpO1xuXHRjb25zdCBiID0gMjAwICogKHkgLSB6KTtcblxuXHRyZXR1cm4gW2wsIGEsIGJdO1xufTtcblxuY29udmVydC5sYWIueHl6ID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgeDtcblx0bGV0IHk7XG5cdGxldCB6O1xuXG5cdHkgPSAobCArIDE2KSAvIDExNjtcblx0eCA9IGEgLyA1MDAgKyB5O1xuXHR6ID0geSAtIGIgLyAyMDA7XG5cblx0Y29uc3QgeTIgPSB5ICoqIDM7XG5cdGNvbnN0IHgyID0geCAqKiAzO1xuXHRjb25zdCB6MiA9IHogKiogMztcblx0eSA9IHkyID4gMC4wMDg4NTYgPyB5MiA6ICh5IC0gMTYgLyAxMTYpIC8gNy43ODc7XG5cdHggPSB4MiA+IDAuMDA4ODU2ID8geDIgOiAoeCAtIDE2IC8gMTE2KSAvIDcuNzg3O1xuXHR6ID0gejIgPiAwLjAwODg1NiA/IHoyIDogKHogLSAxNiAvIDExNikgLyA3Ljc4NztcblxuXHR4ICo9IDk1LjA0Nztcblx0eSAqPSAxMDA7XG5cdHogKj0gMTA4Ljg4MztcblxuXHRyZXR1cm4gW3gsIHksIHpdO1xufTtcblxuY29udmVydC5sYWIubGNoID0gZnVuY3Rpb24gKGxhYikge1xuXHRjb25zdCBsID0gbGFiWzBdO1xuXHRjb25zdCBhID0gbGFiWzFdO1xuXHRjb25zdCBiID0gbGFiWzJdO1xuXHRsZXQgaDtcblxuXHRjb25zdCBociA9IE1hdGguYXRhbjIoYiwgYSk7XG5cdGggPSBociAqIDM2MCAvIDIgLyBNYXRoLlBJO1xuXG5cdGlmIChoIDwgMCkge1xuXHRcdGggKz0gMzYwO1xuXHR9XG5cblx0Y29uc3QgYyA9IE1hdGguc3FydChhICogYSArIGIgKiBiKTtcblxuXHRyZXR1cm4gW2wsIGMsIGhdO1xufTtcblxuY29udmVydC5sY2gubGFiID0gZnVuY3Rpb24gKGxjaCkge1xuXHRjb25zdCBsID0gbGNoWzBdO1xuXHRjb25zdCBjID0gbGNoWzFdO1xuXHRjb25zdCBoID0gbGNoWzJdO1xuXG5cdGNvbnN0IGhyID0gaCAvIDM2MCAqIDIgKiBNYXRoLlBJO1xuXHRjb25zdCBhID0gYyAqIE1hdGguY29zKGhyKTtcblx0Y29uc3QgYiA9IGMgKiBNYXRoLnNpbihocik7XG5cblx0cmV0dXJuIFtsLCBhLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kxNiA9IGZ1bmN0aW9uIChhcmdzLCBzYXR1cmF0aW9uID0gbnVsbCkge1xuXHRjb25zdCBbciwgZywgYl0gPSBhcmdzO1xuXHRsZXQgdmFsdWUgPSBzYXR1cmF0aW9uID09PSBudWxsID8gY29udmVydC5yZ2IuaHN2KGFyZ3MpWzJdIDogc2F0dXJhdGlvbjsgLy8gSHN2IC0+IGFuc2kxNiBvcHRpbWl6YXRpb25cblxuXHR2YWx1ZSA9IE1hdGgucm91bmQodmFsdWUgLyA1MCk7XG5cblx0aWYgKHZhbHVlID09PSAwKSB7XG5cdFx0cmV0dXJuIDMwO1xuXHR9XG5cblx0bGV0IGFuc2kgPSAzMFxuXHRcdCsgKChNYXRoLnJvdW5kKGIgLyAyNTUpIDw8IDIpXG5cdFx0fCAoTWF0aC5yb3VuZChnIC8gMjU1KSA8PCAxKVxuXHRcdHwgTWF0aC5yb3VuZChyIC8gMjU1KSk7XG5cblx0aWYgKHZhbHVlID09PSAyKSB7XG5cdFx0YW5zaSArPSA2MDtcblx0fVxuXG5cdHJldHVybiBhbnNpO1xufTtcblxuY29udmVydC5oc3YuYW5zaTE2ID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gT3B0aW1pemF0aW9uIGhlcmU7IHdlIGFscmVhZHkga25vdyB0aGUgdmFsdWUgYW5kIGRvbid0IG5lZWQgdG8gZ2V0XG5cdC8vIGl0IGNvbnZlcnRlZCBmb3IgdXMuXG5cdHJldHVybiBjb252ZXJ0LnJnYi5hbnNpMTYoY29udmVydC5oc3YucmdiKGFyZ3MpLCBhcmdzWzJdKTtcbn07XG5cbmNvbnZlcnQucmdiLmFuc2kyNTYgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCByID0gYXJnc1swXTtcblx0Y29uc3QgZyA9IGFyZ3NbMV07XG5cdGNvbnN0IGIgPSBhcmdzWzJdO1xuXG5cdC8vIFdlIHVzZSB0aGUgZXh0ZW5kZWQgZ3JleXNjYWxlIHBhbGV0dGUgaGVyZSwgd2l0aCB0aGUgZXhjZXB0aW9uIG9mXG5cdC8vIGJsYWNrIGFuZCB3aGl0ZS4gbm9ybWFsIHBhbGV0dGUgb25seSBoYXMgNCBncmV5c2NhbGUgc2hhZGVzLlxuXHRpZiAociA9PT0gZyAmJiBnID09PSBiKSB7XG5cdFx0aWYgKHIgPCA4KSB7XG5cdFx0XHRyZXR1cm4gMTY7XG5cdFx0fVxuXG5cdFx0aWYgKHIgPiAyNDgpIHtcblx0XHRcdHJldHVybiAyMzE7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIE1hdGgucm91bmQoKChyIC0gOCkgLyAyNDcpICogMjQpICsgMjMyO1xuXHR9XG5cblx0Y29uc3QgYW5zaSA9IDE2XG5cdFx0KyAoMzYgKiBNYXRoLnJvdW5kKHIgLyAyNTUgKiA1KSlcblx0XHQrICg2ICogTWF0aC5yb3VuZChnIC8gMjU1ICogNSkpXG5cdFx0KyBNYXRoLnJvdW5kKGIgLyAyNTUgKiA1KTtcblxuXHRyZXR1cm4gYW5zaTtcbn07XG5cbmNvbnZlcnQuYW5zaTE2LnJnYiA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGxldCBjb2xvciA9IGFyZ3MgJSAxMDtcblxuXHQvLyBIYW5kbGUgZ3JleXNjYWxlXG5cdGlmIChjb2xvciA9PT0gMCB8fCBjb2xvciA9PT0gNykge1xuXHRcdGlmIChhcmdzID4gNTApIHtcblx0XHRcdGNvbG9yICs9IDMuNTtcblx0XHR9XG5cblx0XHRjb2xvciA9IGNvbG9yIC8gMTAuNSAqIDI1NTtcblxuXHRcdHJldHVybiBbY29sb3IsIGNvbG9yLCBjb2xvcl07XG5cdH1cblxuXHRjb25zdCBtdWx0ID0gKH5+KGFyZ3MgPiA1MCkgKyAxKSAqIDAuNTtcblx0Y29uc3QgciA9ICgoY29sb3IgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBnID0gKCgoY29sb3IgPj4gMSkgJiAxKSAqIG11bHQpICogMjU1O1xuXHRjb25zdCBiID0gKCgoY29sb3IgPj4gMikgJiAxKSAqIG11bHQpICogMjU1O1xuXG5cdHJldHVybiBbciwgZywgYl07XG59O1xuXG5jb252ZXJ0LmFuc2kyNTYucmdiID0gZnVuY3Rpb24gKGFyZ3MpIHtcblx0Ly8gSGFuZGxlIGdyZXlzY2FsZVxuXHRpZiAoYXJncyA+PSAyMzIpIHtcblx0XHRjb25zdCBjID0gKGFyZ3MgLSAyMzIpICogMTAgKyA4O1xuXHRcdHJldHVybiBbYywgYywgY107XG5cdH1cblxuXHRhcmdzIC09IDE2O1xuXG5cdGxldCByZW07XG5cdGNvbnN0IHIgPSBNYXRoLmZsb29yKGFyZ3MgLyAzNikgLyA1ICogMjU1O1xuXHRjb25zdCBnID0gTWF0aC5mbG9vcigocmVtID0gYXJncyAlIDM2KSAvIDYpIC8gNSAqIDI1NTtcblx0Y29uc3QgYiA9IChyZW0gJSA2KSAvIDUgKiAyNTU7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhleCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdGNvbnN0IGludGVnZXIgPSAoKE1hdGgucm91bmQoYXJnc1swXSkgJiAweEZGKSA8PCAxNilcblx0XHQrICgoTWF0aC5yb3VuZChhcmdzWzFdKSAmIDB4RkYpIDw8IDgpXG5cdFx0KyAoTWF0aC5yb3VuZChhcmdzWzJdKSAmIDB4RkYpO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LmhleC5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRjb25zdCBtYXRjaCA9IGFyZ3MudG9TdHJpbmcoMTYpLm1hdGNoKC9bYS1mMC05XXs2fXxbYS1mMC05XXszfS9pKTtcblx0aWYgKCFtYXRjaCkge1xuXHRcdHJldHVybiBbMCwgMCwgMF07XG5cdH1cblxuXHRsZXQgY29sb3JTdHJpbmcgPSBtYXRjaFswXTtcblxuXHRpZiAobWF0Y2hbMF0ubGVuZ3RoID09PSAzKSB7XG5cdFx0Y29sb3JTdHJpbmcgPSBjb2xvclN0cmluZy5zcGxpdCgnJykubWFwKGNoYXIgPT4ge1xuXHRcdFx0cmV0dXJuIGNoYXIgKyBjaGFyO1xuXHRcdH0pLmpvaW4oJycpO1xuXHR9XG5cblx0Y29uc3QgaW50ZWdlciA9IHBhcnNlSW50KGNvbG9yU3RyaW5nLCAxNik7XG5cdGNvbnN0IHIgPSAoaW50ZWdlciA+PiAxNikgJiAweEZGO1xuXHRjb25zdCBnID0gKGludGVnZXIgPj4gOCkgJiAweEZGO1xuXHRjb25zdCBiID0gaW50ZWdlciAmIDB4RkY7XG5cblx0cmV0dXJuIFtyLCBnLCBiXTtcbn07XG5cbmNvbnZlcnQucmdiLmhjZyA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0Y29uc3QgciA9IHJnYlswXSAvIDI1NTtcblx0Y29uc3QgZyA9IHJnYlsxXSAvIDI1NTtcblx0Y29uc3QgYiA9IHJnYlsyXSAvIDI1NTtcblx0Y29uc3QgbWF4ID0gTWF0aC5tYXgoTWF0aC5tYXgociwgZyksIGIpO1xuXHRjb25zdCBtaW4gPSBNYXRoLm1pbihNYXRoLm1pbihyLCBnKSwgYik7XG5cdGNvbnN0IGNocm9tYSA9IChtYXggLSBtaW4pO1xuXHRsZXQgZ3JheXNjYWxlO1xuXHRsZXQgaHVlO1xuXG5cdGlmIChjaHJvbWEgPCAxKSB7XG5cdFx0Z3JheXNjYWxlID0gbWluIC8gKDEgLSBjaHJvbWEpO1xuXHR9IGVsc2Uge1xuXHRcdGdyYXlzY2FsZSA9IDA7XG5cdH1cblxuXHRpZiAoY2hyb21hIDw9IDApIHtcblx0XHRodWUgPSAwO1xuXHR9IGVsc2Vcblx0aWYgKG1heCA9PT0gcikge1xuXHRcdGh1ZSA9ICgoZyAtIGIpIC8gY2hyb21hKSAlIDY7XG5cdH0gZWxzZVxuXHRpZiAobWF4ID09PSBnKSB7XG5cdFx0aHVlID0gMiArIChiIC0gcikgLyBjaHJvbWE7XG5cdH0gZWxzZSB7XG5cdFx0aHVlID0gNCArIChyIC0gZykgLyBjaHJvbWE7XG5cdH1cblxuXHRodWUgLz0gNjtcblx0aHVlICU9IDE7XG5cblx0cmV0dXJuIFtodWUgKiAzNjAsIGNocm9tYSAqIDEwMCwgZ3JheXNjYWxlICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaHNsLmhjZyA9IGZ1bmN0aW9uIChoc2wpIHtcblx0Y29uc3QgcyA9IGhzbFsxXSAvIDEwMDtcblx0Y29uc3QgbCA9IGhzbFsyXSAvIDEwMDtcblxuXHRjb25zdCBjID0gbCA8IDAuNSA/ICgyLjAgKiBzICogbCkgOiAoMi4wICogcyAqICgxLjAgLSBsKSk7XG5cblx0bGV0IGYgPSAwO1xuXHRpZiAoYyA8IDEuMCkge1xuXHRcdGYgPSAobCAtIDAuNSAqIGMpIC8gKDEuMCAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc2xbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oc3YuaGNnID0gZnVuY3Rpb24gKGhzdikge1xuXHRjb25zdCBzID0gaHN2WzFdIC8gMTAwO1xuXHRjb25zdCB2ID0gaHN2WzJdIC8gMTAwO1xuXG5cdGNvbnN0IGMgPSBzICogdjtcblx0bGV0IGYgPSAwO1xuXG5cdGlmIChjIDwgMS4wKSB7XG5cdFx0ZiA9ICh2IC0gYykgLyAoMSAtIGMpO1xuXHR9XG5cblx0cmV0dXJuIFtoc3ZbMF0sIGMgKiAxMDAsIGYgKiAxMDBdO1xufTtcblxuY29udmVydC5oY2cucmdiID0gZnVuY3Rpb24gKGhjZykge1xuXHRjb25zdCBoID0gaGNnWzBdIC8gMzYwO1xuXHRjb25zdCBjID0gaGNnWzFdIC8gMTAwO1xuXHRjb25zdCBnID0gaGNnWzJdIC8gMTAwO1xuXG5cdGlmIChjID09PSAwLjApIHtcblx0XHRyZXR1cm4gW2cgKiAyNTUsIGcgKiAyNTUsIGcgKiAyNTVdO1xuXHR9XG5cblx0Y29uc3QgcHVyZSA9IFswLCAwLCAwXTtcblx0Y29uc3QgaGkgPSAoaCAlIDEpICogNjtcblx0Y29uc3QgdiA9IGhpICUgMTtcblx0Y29uc3QgdyA9IDEgLSB2O1xuXHRsZXQgbWcgPSAwO1xuXG5cdC8qIGVzbGludC1kaXNhYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cdHN3aXRjaCAoTWF0aC5mbG9vcihoaSkpIHtcblx0XHRjYXNlIDA6XG5cdFx0XHRwdXJlWzBdID0gMTsgcHVyZVsxXSA9IHY7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDE6XG5cdFx0XHRwdXJlWzBdID0gdzsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSAwOyBicmVhaztcblx0XHRjYXNlIDI6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IDE7IHB1cmVbMl0gPSB2OyBicmVhaztcblx0XHRjYXNlIDM6XG5cdFx0XHRwdXJlWzBdID0gMDsgcHVyZVsxXSA9IHc7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRjYXNlIDQ6XG5cdFx0XHRwdXJlWzBdID0gdjsgcHVyZVsxXSA9IDA7IHB1cmVbMl0gPSAxOyBicmVhaztcblx0XHRkZWZhdWx0OlxuXHRcdFx0cHVyZVswXSA9IDE7IHB1cmVbMV0gPSAwOyBwdXJlWzJdID0gdztcblx0fVxuXHQvKiBlc2xpbnQtZW5hYmxlIG1heC1zdGF0ZW1lbnRzLXBlci1saW5lICovXG5cblx0bWcgPSAoMS4wIC0gYykgKiBnO1xuXG5cdHJldHVybiBbXG5cdFx0KGMgKiBwdXJlWzBdICsgbWcpICogMjU1LFxuXHRcdChjICogcHVyZVsxXSArIG1nKSAqIDI1NSxcblx0XHQoYyAqIHB1cmVbMl0gKyBtZykgKiAyNTVcblx0XTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzdiA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCB2ID0gYyArIGcgKiAoMS4wIC0gYyk7XG5cdGxldCBmID0gMDtcblxuXHRpZiAodiA+IDAuMCkge1xuXHRcdGYgPSBjIC8gdjtcblx0fVxuXG5cdHJldHVybiBbaGNnWzBdLCBmICogMTAwLCB2ICogMTAwXTtcbn07XG5cbmNvbnZlcnQuaGNnLmhzbCA9IGZ1bmN0aW9uIChoY2cpIHtcblx0Y29uc3QgYyA9IGhjZ1sxXSAvIDEwMDtcblx0Y29uc3QgZyA9IGhjZ1syXSAvIDEwMDtcblxuXHRjb25zdCBsID0gZyAqICgxLjAgLSBjKSArIDAuNSAqIGM7XG5cdGxldCBzID0gMDtcblxuXHRpZiAobCA+IDAuMCAmJiBsIDwgMC41KSB7XG5cdFx0cyA9IGMgLyAoMiAqIGwpO1xuXHR9IGVsc2Vcblx0aWYgKGwgPj0gMC41ICYmIGwgPCAxLjApIHtcblx0XHRzID0gYyAvICgyICogKDEgLSBsKSk7XG5cdH1cblxuXHRyZXR1cm4gW2hjZ1swXSwgcyAqIDEwMCwgbCAqIDEwMF07XG59O1xuXG5jb252ZXJ0LmhjZy5od2IgPSBmdW5jdGlvbiAoaGNnKSB7XG5cdGNvbnN0IGMgPSBoY2dbMV0gLyAxMDA7XG5cdGNvbnN0IGcgPSBoY2dbMl0gLyAxMDA7XG5cdGNvbnN0IHYgPSBjICsgZyAqICgxLjAgLSBjKTtcblx0cmV0dXJuIFtoY2dbMF0sICh2IC0gYykgKiAxMDAsICgxIC0gdikgKiAxMDBdO1xufTtcblxuY29udmVydC5od2IuaGNnID0gZnVuY3Rpb24gKGh3Yikge1xuXHRjb25zdCB3ID0gaHdiWzFdIC8gMTAwO1xuXHRjb25zdCBiID0gaHdiWzJdIC8gMTAwO1xuXHRjb25zdCB2ID0gMSAtIGI7XG5cdGNvbnN0IGMgPSB2IC0gdztcblx0bGV0IGcgPSAwO1xuXG5cdGlmIChjIDwgMSkge1xuXHRcdGcgPSAodiAtIGMpIC8gKDEgLSBjKTtcblx0fVxuXG5cdHJldHVybiBbaHdiWzBdLCBjICogMTAwLCBnICogMTAwXTtcbn07XG5cbmNvbnZlcnQuYXBwbGUucmdiID0gZnVuY3Rpb24gKGFwcGxlKSB7XG5cdHJldHVybiBbKGFwcGxlWzBdIC8gNjU1MzUpICogMjU1LCAoYXBwbGVbMV0gLyA2NTUzNSkgKiAyNTUsIChhcHBsZVsyXSAvIDY1NTM1KSAqIDI1NV07XG59O1xuXG5jb252ZXJ0LnJnYi5hcHBsZSA9IGZ1bmN0aW9uIChyZ2IpIHtcblx0cmV0dXJuIFsocmdiWzBdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzFdIC8gMjU1KSAqIDY1NTM1LCAocmdiWzJdIC8gMjU1KSAqIDY1NTM1XTtcbn07XG5cbmNvbnZlcnQuZ3JheS5yZ2IgPSBmdW5jdGlvbiAoYXJncykge1xuXHRyZXR1cm4gW2FyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTUsIGFyZ3NbMF0gLyAxMDAgKiAyNTVdO1xufTtcblxuY29udmVydC5ncmF5LmhzbCA9IGZ1bmN0aW9uIChhcmdzKSB7XG5cdHJldHVybiBbMCwgMCwgYXJnc1swXV07XG59O1xuXG5jb252ZXJ0LmdyYXkuaHN2ID0gY29udmVydC5ncmF5LmhzbDtcblxuY29udmVydC5ncmF5Lmh3YiA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdHJldHVybiBbMCwgMTAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5jbXlrID0gZnVuY3Rpb24gKGdyYXkpIHtcblx0cmV0dXJuIFswLCAwLCAwLCBncmF5WzBdXTtcbn07XG5cbmNvbnZlcnQuZ3JheS5sYWIgPSBmdW5jdGlvbiAoZ3JheSkge1xuXHRyZXR1cm4gW2dyYXlbMF0sIDAsIDBdO1xufTtcblxuY29udmVydC5ncmF5LmhleCA9IGZ1bmN0aW9uIChncmF5KSB7XG5cdGNvbnN0IHZhbCA9IE1hdGgucm91bmQoZ3JheVswXSAvIDEwMCAqIDI1NSkgJiAweEZGO1xuXHRjb25zdCBpbnRlZ2VyID0gKHZhbCA8PCAxNikgKyAodmFsIDw8IDgpICsgdmFsO1xuXG5cdGNvbnN0IHN0cmluZyA9IGludGVnZXIudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCk7XG5cdHJldHVybiAnMDAwMDAwJy5zdWJzdHJpbmcoc3RyaW5nLmxlbmd0aCkgKyBzdHJpbmc7XG59O1xuXG5jb252ZXJ0LnJnYi5ncmF5ID0gZnVuY3Rpb24gKHJnYikge1xuXHRjb25zdCB2YWwgPSAocmdiWzBdICsgcmdiWzFdICsgcmdiWzJdKSAvIDM7XG5cdHJldHVybiBbdmFsIC8gMjU1ICogMTAwXTtcbn07XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1032\n")},1075:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1032);\nconst route = __webpack_require__(1077);\n\nconst convert = {};\n\nconst models = Object.keys(conversions);\n\nfunction wrapRaw(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\treturn fn(args);\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nfunction wrapRounded(fn) {\n\tconst wrappedFn = function (...args) {\n\t\tconst arg0 = args[0];\n\n\t\tif (arg0 === undefined || arg0 === null) {\n\t\t\treturn arg0;\n\t\t}\n\n\t\tif (arg0.length > 1) {\n\t\t\targs = arg0;\n\t\t}\n\n\t\tconst result = fn(args);\n\n\t\t// We're assuming the result is an array here.\n\t\t// see notice in conversions.js; don't use box types\n\t\t// in conversion functions.\n\t\tif (typeof result === 'object') {\n\t\t\tfor (let len = result.length, i = 0; i < len; i++) {\n\t\t\t\tresult[i] = Math.round(result[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn result;\n\t};\n\n\t// Preserve .conversion property if there is one\n\tif ('conversion' in fn) {\n\t\twrappedFn.conversion = fn.conversion;\n\t}\n\n\treturn wrappedFn;\n}\n\nmodels.forEach(fromModel => {\n\tconvert[fromModel] = {};\n\n\tObject.defineProperty(convert[fromModel], 'channels', {value: conversions[fromModel].channels});\n\tObject.defineProperty(convert[fromModel], 'labels', {value: conversions[fromModel].labels});\n\n\tconst routes = route(fromModel);\n\tconst routeModels = Object.keys(routes);\n\n\trouteModels.forEach(toModel => {\n\t\tconst fn = routes[toModel];\n\n\t\tconvert[fromModel][toModel] = wrapRounded(fn);\n\t\tconvert[fromModel][toModel].raw = wrapRaw(fn);\n\t});\n});\n\nmodule.exports = convert;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9pbmRleC5qcz80M2Q5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLElBQWU7QUFDM0MsY0FBYyxtQkFBTyxDQUFDLElBQVM7O0FBRS9COztBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBOztBQUVBO0FBQ0Esa0NBQWtDO0FBQ2xDO0FBQ0E7QUFDQSx1Q0FBdUMsU0FBUztBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUEsd0RBQXdELHVDQUF1QztBQUMvRixzREFBc0QscUNBQXFDOztBQUUzRjtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBLEVBQUU7QUFDRixDQUFDOztBQUVEIiwiZmlsZSI6IjEwNzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb252ZXJzaW9ucyA9IHJlcXVpcmUoJy4vY29udmVyc2lvbnMnKTtcbmNvbnN0IHJvdXRlID0gcmVxdWlyZSgnLi9yb3V0ZScpO1xuXG5jb25zdCBjb252ZXJ0ID0ge307XG5cbmNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zKTtcblxuZnVuY3Rpb24gd3JhcFJhdyhmbikge1xuXHRjb25zdCB3cmFwcGVkRm4gPSBmdW5jdGlvbiAoLi4uYXJncykge1xuXHRcdGNvbnN0IGFyZzAgPSBhcmdzWzBdO1xuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGZuKGFyZ3MpO1xuXHR9O1xuXG5cdC8vIFByZXNlcnZlIC5jb252ZXJzaW9uIHByb3BlcnR5IGlmIHRoZXJlIGlzIG9uZVxuXHRpZiAoJ2NvbnZlcnNpb24nIGluIGZuKSB7XG5cdFx0d3JhcHBlZEZuLmNvbnZlcnNpb24gPSBmbi5jb252ZXJzaW9uO1xuXHR9XG5cblx0cmV0dXJuIHdyYXBwZWRGbjtcbn1cblxuZnVuY3Rpb24gd3JhcFJvdW5kZWQoZm4pIHtcblx0Y29uc3Qgd3JhcHBlZEZuID0gZnVuY3Rpb24gKC4uLmFyZ3MpIHtcblx0XHRjb25zdCBhcmcwID0gYXJnc1swXTtcblxuXHRcdGlmIChhcmcwID09PSB1bmRlZmluZWQgfHwgYXJnMCA9PT0gbnVsbCkge1xuXHRcdFx0cmV0dXJuIGFyZzA7XG5cdFx0fVxuXG5cdFx0aWYgKGFyZzAubGVuZ3RoID4gMSkge1xuXHRcdFx0YXJncyA9IGFyZzA7XG5cdFx0fVxuXG5cdFx0Y29uc3QgcmVzdWx0ID0gZm4oYXJncyk7XG5cblx0XHQvLyBXZSdyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFuIGFycmF5IGhlcmUuXG5cdFx0Ly8gc2VlIG5vdGljZSBpbiBjb252ZXJzaW9ucy5qczsgZG9uJ3QgdXNlIGJveCB0eXBlc1xuXHRcdC8vIGluIGNvbnZlcnNpb24gZnVuY3Rpb25zLlxuXHRcdGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0Jykge1xuXHRcdFx0Zm9yIChsZXQgbGVuID0gcmVzdWx0Lmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRyZXN1bHRbaV0gPSBNYXRoLnJvdW5kKHJlc3VsdFtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fTtcblxuXHQvLyBQcmVzZXJ2ZSAuY29udmVyc2lvbiBwcm9wZXJ0eSBpZiB0aGVyZSBpcyBvbmVcblx0aWYgKCdjb252ZXJzaW9uJyBpbiBmbikge1xuXHRcdHdyYXBwZWRGbi5jb252ZXJzaW9uID0gZm4uY29udmVyc2lvbjtcblx0fVxuXG5cdHJldHVybiB3cmFwcGVkRm47XG59XG5cbm1vZGVscy5mb3JFYWNoKGZyb21Nb2RlbCA9PiB7XG5cdGNvbnZlcnRbZnJvbU1vZGVsXSA9IHt9O1xuXG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjb252ZXJ0W2Zyb21Nb2RlbF0sICdjaGFubmVscycsIHt2YWx1ZTogY29udmVyc2lvbnNbZnJvbU1vZGVsXS5jaGFubmVsc30pO1xuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoY29udmVydFtmcm9tTW9kZWxdLCAnbGFiZWxzJywge3ZhbHVlOiBjb252ZXJzaW9uc1tmcm9tTW9kZWxdLmxhYmVsc30pO1xuXG5cdGNvbnN0IHJvdXRlcyA9IHJvdXRlKGZyb21Nb2RlbCk7XG5cdGNvbnN0IHJvdXRlTW9kZWxzID0gT2JqZWN0LmtleXMocm91dGVzKTtcblxuXHRyb3V0ZU1vZGVscy5mb3JFYWNoKHRvTW9kZWwgPT4ge1xuXHRcdGNvbnN0IGZuID0gcm91dGVzW3RvTW9kZWxdO1xuXG5cdFx0Y29udmVydFtmcm9tTW9kZWxdW3RvTW9kZWxdID0gd3JhcFJvdW5kZWQoZm4pO1xuXHRcdGNvbnZlcnRbZnJvbU1vZGVsXVt0b01vZGVsXS5yYXcgPSB3cmFwUmF3KGZuKTtcblx0fSk7XG59KTtcblxubW9kdWxlLmV4cG9ydHMgPSBjb252ZXJ0O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1075\n")},1076:function(module,exports,__webpack_require__){"use strict";eval('\r\n\r\nmodule.exports = {\r\n\t"aliceblue": [240, 248, 255],\r\n\t"antiquewhite": [250, 235, 215],\r\n\t"aqua": [0, 255, 255],\r\n\t"aquamarine": [127, 255, 212],\r\n\t"azure": [240, 255, 255],\r\n\t"beige": [245, 245, 220],\r\n\t"bisque": [255, 228, 196],\r\n\t"black": [0, 0, 0],\r\n\t"blanchedalmond": [255, 235, 205],\r\n\t"blue": [0, 0, 255],\r\n\t"blueviolet": [138, 43, 226],\r\n\t"brown": [165, 42, 42],\r\n\t"burlywood": [222, 184, 135],\r\n\t"cadetblue": [95, 158, 160],\r\n\t"chartreuse": [127, 255, 0],\r\n\t"chocolate": [210, 105, 30],\r\n\t"coral": [255, 127, 80],\r\n\t"cornflowerblue": [100, 149, 237],\r\n\t"cornsilk": [255, 248, 220],\r\n\t"crimson": [220, 20, 60],\r\n\t"cyan": [0, 255, 255],\r\n\t"darkblue": [0, 0, 139],\r\n\t"darkcyan": [0, 139, 139],\r\n\t"darkgoldenrod": [184, 134, 11],\r\n\t"darkgray": [169, 169, 169],\r\n\t"darkgreen": [0, 100, 0],\r\n\t"darkgrey": [169, 169, 169],\r\n\t"darkkhaki": [189, 183, 107],\r\n\t"darkmagenta": [139, 0, 139],\r\n\t"darkolivegreen": [85, 107, 47],\r\n\t"darkorange": [255, 140, 0],\r\n\t"darkorchid": [153, 50, 204],\r\n\t"darkred": [139, 0, 0],\r\n\t"darksalmon": [233, 150, 122],\r\n\t"darkseagreen": [143, 188, 143],\r\n\t"darkslateblue": [72, 61, 139],\r\n\t"darkslategray": [47, 79, 79],\r\n\t"darkslategrey": [47, 79, 79],\r\n\t"darkturquoise": [0, 206, 209],\r\n\t"darkviolet": [148, 0, 211],\r\n\t"deeppink": [255, 20, 147],\r\n\t"deepskyblue": [0, 191, 255],\r\n\t"dimgray": [105, 105, 105],\r\n\t"dimgrey": [105, 105, 105],\r\n\t"dodgerblue": [30, 144, 255],\r\n\t"firebrick": [178, 34, 34],\r\n\t"floralwhite": [255, 250, 240],\r\n\t"forestgreen": [34, 139, 34],\r\n\t"fuchsia": [255, 0, 255],\r\n\t"gainsboro": [220, 220, 220],\r\n\t"ghostwhite": [248, 248, 255],\r\n\t"gold": [255, 215, 0],\r\n\t"goldenrod": [218, 165, 32],\r\n\t"gray": [128, 128, 128],\r\n\t"green": [0, 128, 0],\r\n\t"greenyellow": [173, 255, 47],\r\n\t"grey": [128, 128, 128],\r\n\t"honeydew": [240, 255, 240],\r\n\t"hotpink": [255, 105, 180],\r\n\t"indianred": [205, 92, 92],\r\n\t"indigo": [75, 0, 130],\r\n\t"ivory": [255, 255, 240],\r\n\t"khaki": [240, 230, 140],\r\n\t"lavender": [230, 230, 250],\r\n\t"lavenderblush": [255, 240, 245],\r\n\t"lawngreen": [124, 252, 0],\r\n\t"lemonchiffon": [255, 250, 205],\r\n\t"lightblue": [173, 216, 230],\r\n\t"lightcoral": [240, 128, 128],\r\n\t"lightcyan": [224, 255, 255],\r\n\t"lightgoldenrodyellow": [250, 250, 210],\r\n\t"lightgray": [211, 211, 211],\r\n\t"lightgreen": [144, 238, 144],\r\n\t"lightgrey": [211, 211, 211],\r\n\t"lightpink": [255, 182, 193],\r\n\t"lightsalmon": [255, 160, 122],\r\n\t"lightseagreen": [32, 178, 170],\r\n\t"lightskyblue": [135, 206, 250],\r\n\t"lightslategray": [119, 136, 153],\r\n\t"lightslategrey": [119, 136, 153],\r\n\t"lightsteelblue": [176, 196, 222],\r\n\t"lightyellow": [255, 255, 224],\r\n\t"lime": [0, 255, 0],\r\n\t"limegreen": [50, 205, 50],\r\n\t"linen": [250, 240, 230],\r\n\t"magenta": [255, 0, 255],\r\n\t"maroon": [128, 0, 0],\r\n\t"mediumaquamarine": [102, 205, 170],\r\n\t"mediumblue": [0, 0, 205],\r\n\t"mediumorchid": [186, 85, 211],\r\n\t"mediumpurple": [147, 112, 219],\r\n\t"mediumseagreen": [60, 179, 113],\r\n\t"mediumslateblue": [123, 104, 238],\r\n\t"mediumspringgreen": [0, 250, 154],\r\n\t"mediumturquoise": [72, 209, 204],\r\n\t"mediumvioletred": [199, 21, 133],\r\n\t"midnightblue": [25, 25, 112],\r\n\t"mintcream": [245, 255, 250],\r\n\t"mistyrose": [255, 228, 225],\r\n\t"moccasin": [255, 228, 181],\r\n\t"navajowhite": [255, 222, 173],\r\n\t"navy": [0, 0, 128],\r\n\t"oldlace": [253, 245, 230],\r\n\t"olive": [128, 128, 0],\r\n\t"olivedrab": [107, 142, 35],\r\n\t"orange": [255, 165, 0],\r\n\t"orangered": [255, 69, 0],\r\n\t"orchid": [218, 112, 214],\r\n\t"palegoldenrod": [238, 232, 170],\r\n\t"palegreen": [152, 251, 152],\r\n\t"paleturquoise": [175, 238, 238],\r\n\t"palevioletred": [219, 112, 147],\r\n\t"papayawhip": [255, 239, 213],\r\n\t"peachpuff": [255, 218, 185],\r\n\t"peru": [205, 133, 63],\r\n\t"pink": [255, 192, 203],\r\n\t"plum": [221, 160, 221],\r\n\t"powderblue": [176, 224, 230],\r\n\t"purple": [128, 0, 128],\r\n\t"rebeccapurple": [102, 51, 153],\r\n\t"red": [255, 0, 0],\r\n\t"rosybrown": [188, 143, 143],\r\n\t"royalblue": [65, 105, 225],\r\n\t"saddlebrown": [139, 69, 19],\r\n\t"salmon": [250, 128, 114],\r\n\t"sandybrown": [244, 164, 96],\r\n\t"seagreen": [46, 139, 87],\r\n\t"seashell": [255, 245, 238],\r\n\t"sienna": [160, 82, 45],\r\n\t"silver": [192, 192, 192],\r\n\t"skyblue": [135, 206, 235],\r\n\t"slateblue": [106, 90, 205],\r\n\t"slategray": [112, 128, 144],\r\n\t"slategrey": [112, 128, 144],\r\n\t"snow": [255, 250, 250],\r\n\t"springgreen": [0, 255, 127],\r\n\t"steelblue": [70, 130, 180],\r\n\t"tan": [210, 180, 140],\r\n\t"teal": [0, 128, 128],\r\n\t"thistle": [216, 191, 216],\r\n\t"tomato": [255, 99, 71],\r\n\t"turquoise": [64, 224, 208],\r\n\t"violet": [238, 130, 238],\r\n\t"wheat": [245, 222, 179],\r\n\t"white": [255, 255, 255],\r\n\t"whitesmoke": [245, 245, 245],\r\n\t"yellow": [255, 255, 0],\r\n\t"yellowgreen": [154, 205, 50]\r\n};\r\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9ub2RlX21vZHVsZXMvY29sb3ItbmFtZS9pbmRleC5qcz84NzVhIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFZOztBQUVaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSIsImZpbGUiOiIxMDc2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IHtcclxuXHRcImFsaWNlYmx1ZVwiOiBbMjQwLCAyNDgsIDI1NV0sXHJcblx0XCJhbnRpcXVld2hpdGVcIjogWzI1MCwgMjM1LCAyMTVdLFxyXG5cdFwiYXF1YVwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiYXF1YW1hcmluZVwiOiBbMTI3LCAyNTUsIDIxMl0sXHJcblx0XCJhenVyZVwiOiBbMjQwLCAyNTUsIDI1NV0sXHJcblx0XCJiZWlnZVwiOiBbMjQ1LCAyNDUsIDIyMF0sXHJcblx0XCJiaXNxdWVcIjogWzI1NSwgMjI4LCAxOTZdLFxyXG5cdFwiYmxhY2tcIjogWzAsIDAsIDBdLFxyXG5cdFwiYmxhbmNoZWRhbG1vbmRcIjogWzI1NSwgMjM1LCAyMDVdLFxyXG5cdFwiYmx1ZVwiOiBbMCwgMCwgMjU1XSxcclxuXHRcImJsdWV2aW9sZXRcIjogWzEzOCwgNDMsIDIyNl0sXHJcblx0XCJicm93blwiOiBbMTY1LCA0MiwgNDJdLFxyXG5cdFwiYnVybHl3b29kXCI6IFsyMjIsIDE4NCwgMTM1XSxcclxuXHRcImNhZGV0Ymx1ZVwiOiBbOTUsIDE1OCwgMTYwXSxcclxuXHRcImNoYXJ0cmV1c2VcIjogWzEyNywgMjU1LCAwXSxcclxuXHRcImNob2NvbGF0ZVwiOiBbMjEwLCAxMDUsIDMwXSxcclxuXHRcImNvcmFsXCI6IFsyNTUsIDEyNywgODBdLFxyXG5cdFwiY29ybmZsb3dlcmJsdWVcIjogWzEwMCwgMTQ5LCAyMzddLFxyXG5cdFwiY29ybnNpbGtcIjogWzI1NSwgMjQ4LCAyMjBdLFxyXG5cdFwiY3JpbXNvblwiOiBbMjIwLCAyMCwgNjBdLFxyXG5cdFwiY3lhblwiOiBbMCwgMjU1LCAyNTVdLFxyXG5cdFwiZGFya2JsdWVcIjogWzAsIDAsIDEzOV0sXHJcblx0XCJkYXJrY3lhblwiOiBbMCwgMTM5LCAxMzldLFxyXG5cdFwiZGFya2dvbGRlbnJvZFwiOiBbMTg0LCAxMzQsIDExXSxcclxuXHRcImRhcmtncmF5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtncmVlblwiOiBbMCwgMTAwLCAwXSxcclxuXHRcImRhcmtncmV5XCI6IFsxNjksIDE2OSwgMTY5XSxcclxuXHRcImRhcmtraGFraVwiOiBbMTg5LCAxODMsIDEwN10sXHJcblx0XCJkYXJrbWFnZW50YVwiOiBbMTM5LCAwLCAxMzldLFxyXG5cdFwiZGFya29saXZlZ3JlZW5cIjogWzg1LCAxMDcsIDQ3XSxcclxuXHRcImRhcmtvcmFuZ2VcIjogWzI1NSwgMTQwLCAwXSxcclxuXHRcImRhcmtvcmNoaWRcIjogWzE1MywgNTAsIDIwNF0sXHJcblx0XCJkYXJrcmVkXCI6IFsxMzksIDAsIDBdLFxyXG5cdFwiZGFya3NhbG1vblwiOiBbMjMzLCAxNTAsIDEyMl0sXHJcblx0XCJkYXJrc2VhZ3JlZW5cIjogWzE0MywgMTg4LCAxNDNdLFxyXG5cdFwiZGFya3NsYXRlYmx1ZVwiOiBbNzIsIDYxLCAxMzldLFxyXG5cdFwiZGFya3NsYXRlZ3JheVwiOiBbNDcsIDc5LCA3OV0sXHJcblx0XCJkYXJrc2xhdGVncmV5XCI6IFs0NywgNzksIDc5XSxcclxuXHRcImRhcmt0dXJxdW9pc2VcIjogWzAsIDIwNiwgMjA5XSxcclxuXHRcImRhcmt2aW9sZXRcIjogWzE0OCwgMCwgMjExXSxcclxuXHRcImRlZXBwaW5rXCI6IFsyNTUsIDIwLCAxNDddLFxyXG5cdFwiZGVlcHNreWJsdWVcIjogWzAsIDE5MSwgMjU1XSxcclxuXHRcImRpbWdyYXlcIjogWzEwNSwgMTA1LCAxMDVdLFxyXG5cdFwiZGltZ3JleVwiOiBbMTA1LCAxMDUsIDEwNV0sXHJcblx0XCJkb2RnZXJibHVlXCI6IFszMCwgMTQ0LCAyNTVdLFxyXG5cdFwiZmlyZWJyaWNrXCI6IFsxNzgsIDM0LCAzNF0sXHJcblx0XCJmbG9yYWx3aGl0ZVwiOiBbMjU1LCAyNTAsIDI0MF0sXHJcblx0XCJmb3Jlc3RncmVlblwiOiBbMzQsIDEzOSwgMzRdLFxyXG5cdFwiZnVjaHNpYVwiOiBbMjU1LCAwLCAyNTVdLFxyXG5cdFwiZ2FpbnNib3JvXCI6IFsyMjAsIDIyMCwgMjIwXSxcclxuXHRcImdob3N0d2hpdGVcIjogWzI0OCwgMjQ4LCAyNTVdLFxyXG5cdFwiZ29sZFwiOiBbMjU1LCAyMTUsIDBdLFxyXG5cdFwiZ29sZGVucm9kXCI6IFsyMTgsIDE2NSwgMzJdLFxyXG5cdFwiZ3JheVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJncmVlblwiOiBbMCwgMTI4LCAwXSxcclxuXHRcImdyZWVueWVsbG93XCI6IFsxNzMsIDI1NSwgNDddLFxyXG5cdFwiZ3JleVwiOiBbMTI4LCAxMjgsIDEyOF0sXHJcblx0XCJob25leWRld1wiOiBbMjQwLCAyNTUsIDI0MF0sXHJcblx0XCJob3RwaW5rXCI6IFsyNTUsIDEwNSwgMTgwXSxcclxuXHRcImluZGlhbnJlZFwiOiBbMjA1LCA5MiwgOTJdLFxyXG5cdFwiaW5kaWdvXCI6IFs3NSwgMCwgMTMwXSxcclxuXHRcIml2b3J5XCI6IFsyNTUsIDI1NSwgMjQwXSxcclxuXHRcImtoYWtpXCI6IFsyNDAsIDIzMCwgMTQwXSxcclxuXHRcImxhdmVuZGVyXCI6IFsyMzAsIDIzMCwgMjUwXSxcclxuXHRcImxhdmVuZGVyYmx1c2hcIjogWzI1NSwgMjQwLCAyNDVdLFxyXG5cdFwibGF3bmdyZWVuXCI6IFsxMjQsIDI1MiwgMF0sXHJcblx0XCJsZW1vbmNoaWZmb25cIjogWzI1NSwgMjUwLCAyMDVdLFxyXG5cdFwibGlnaHRibHVlXCI6IFsxNzMsIDIxNiwgMjMwXSxcclxuXHRcImxpZ2h0Y29yYWxcIjogWzI0MCwgMTI4LCAxMjhdLFxyXG5cdFwibGlnaHRjeWFuXCI6IFsyMjQsIDI1NSwgMjU1XSxcclxuXHRcImxpZ2h0Z29sZGVucm9keWVsbG93XCI6IFsyNTAsIDI1MCwgMjEwXSxcclxuXHRcImxpZ2h0Z3JheVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodGdyZWVuXCI6IFsxNDQsIDIzOCwgMTQ0XSxcclxuXHRcImxpZ2h0Z3JleVwiOiBbMjExLCAyMTEsIDIxMV0sXHJcblx0XCJsaWdodHBpbmtcIjogWzI1NSwgMTgyLCAxOTNdLFxyXG5cdFwibGlnaHRzYWxtb25cIjogWzI1NSwgMTYwLCAxMjJdLFxyXG5cdFwibGlnaHRzZWFncmVlblwiOiBbMzIsIDE3OCwgMTcwXSxcclxuXHRcImxpZ2h0c2t5Ymx1ZVwiOiBbMTM1LCAyMDYsIDI1MF0sXHJcblx0XCJsaWdodHNsYXRlZ3JheVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHNsYXRlZ3JleVwiOiBbMTE5LCAxMzYsIDE1M10sXHJcblx0XCJsaWdodHN0ZWVsYmx1ZVwiOiBbMTc2LCAxOTYsIDIyMl0sXHJcblx0XCJsaWdodHllbGxvd1wiOiBbMjU1LCAyNTUsIDIyNF0sXHJcblx0XCJsaW1lXCI6IFswLCAyNTUsIDBdLFxyXG5cdFwibGltZWdyZWVuXCI6IFs1MCwgMjA1LCA1MF0sXHJcblx0XCJsaW5lblwiOiBbMjUwLCAyNDAsIDIzMF0sXHJcblx0XCJtYWdlbnRhXCI6IFsyNTUsIDAsIDI1NV0sXHJcblx0XCJtYXJvb25cIjogWzEyOCwgMCwgMF0sXHJcblx0XCJtZWRpdW1hcXVhbWFyaW5lXCI6IFsxMDIsIDIwNSwgMTcwXSxcclxuXHRcIm1lZGl1bWJsdWVcIjogWzAsIDAsIDIwNV0sXHJcblx0XCJtZWRpdW1vcmNoaWRcIjogWzE4NiwgODUsIDIxMV0sXHJcblx0XCJtZWRpdW1wdXJwbGVcIjogWzE0NywgMTEyLCAyMTldLFxyXG5cdFwibWVkaXVtc2VhZ3JlZW5cIjogWzYwLCAxNzksIDExM10sXHJcblx0XCJtZWRpdW1zbGF0ZWJsdWVcIjogWzEyMywgMTA0LCAyMzhdLFxyXG5cdFwibWVkaXVtc3ByaW5nZ3JlZW5cIjogWzAsIDI1MCwgMTU0XSxcclxuXHRcIm1lZGl1bXR1cnF1b2lzZVwiOiBbNzIsIDIwOSwgMjA0XSxcclxuXHRcIm1lZGl1bXZpb2xldHJlZFwiOiBbMTk5LCAyMSwgMTMzXSxcclxuXHRcIm1pZG5pZ2h0Ymx1ZVwiOiBbMjUsIDI1LCAxMTJdLFxyXG5cdFwibWludGNyZWFtXCI6IFsyNDUsIDI1NSwgMjUwXSxcclxuXHRcIm1pc3R5cm9zZVwiOiBbMjU1LCAyMjgsIDIyNV0sXHJcblx0XCJtb2NjYXNpblwiOiBbMjU1LCAyMjgsIDE4MV0sXHJcblx0XCJuYXZham93aGl0ZVwiOiBbMjU1LCAyMjIsIDE3M10sXHJcblx0XCJuYXZ5XCI6IFswLCAwLCAxMjhdLFxyXG5cdFwib2xkbGFjZVwiOiBbMjUzLCAyNDUsIDIzMF0sXHJcblx0XCJvbGl2ZVwiOiBbMTI4LCAxMjgsIDBdLFxyXG5cdFwib2xpdmVkcmFiXCI6IFsxMDcsIDE0MiwgMzVdLFxyXG5cdFwib3JhbmdlXCI6IFsyNTUsIDE2NSwgMF0sXHJcblx0XCJvcmFuZ2VyZWRcIjogWzI1NSwgNjksIDBdLFxyXG5cdFwib3JjaGlkXCI6IFsyMTgsIDExMiwgMjE0XSxcclxuXHRcInBhbGVnb2xkZW5yb2RcIjogWzIzOCwgMjMyLCAxNzBdLFxyXG5cdFwicGFsZWdyZWVuXCI6IFsxNTIsIDI1MSwgMTUyXSxcclxuXHRcInBhbGV0dXJxdW9pc2VcIjogWzE3NSwgMjM4LCAyMzhdLFxyXG5cdFwicGFsZXZpb2xldHJlZFwiOiBbMjE5LCAxMTIsIDE0N10sXHJcblx0XCJwYXBheWF3aGlwXCI6IFsyNTUsIDIzOSwgMjEzXSxcclxuXHRcInBlYWNocHVmZlwiOiBbMjU1LCAyMTgsIDE4NV0sXHJcblx0XCJwZXJ1XCI6IFsyMDUsIDEzMywgNjNdLFxyXG5cdFwicGlua1wiOiBbMjU1LCAxOTIsIDIwM10sXHJcblx0XCJwbHVtXCI6IFsyMjEsIDE2MCwgMjIxXSxcclxuXHRcInBvd2RlcmJsdWVcIjogWzE3NiwgMjI0LCAyMzBdLFxyXG5cdFwicHVycGxlXCI6IFsxMjgsIDAsIDEyOF0sXHJcblx0XCJyZWJlY2NhcHVycGxlXCI6IFsxMDIsIDUxLCAxNTNdLFxyXG5cdFwicmVkXCI6IFsyNTUsIDAsIDBdLFxyXG5cdFwicm9zeWJyb3duXCI6IFsxODgsIDE0MywgMTQzXSxcclxuXHRcInJveWFsYmx1ZVwiOiBbNjUsIDEwNSwgMjI1XSxcclxuXHRcInNhZGRsZWJyb3duXCI6IFsxMzksIDY5LCAxOV0sXHJcblx0XCJzYWxtb25cIjogWzI1MCwgMTI4LCAxMTRdLFxyXG5cdFwic2FuZHlicm93blwiOiBbMjQ0LCAxNjQsIDk2XSxcclxuXHRcInNlYWdyZWVuXCI6IFs0NiwgMTM5LCA4N10sXHJcblx0XCJzZWFzaGVsbFwiOiBbMjU1LCAyNDUsIDIzOF0sXHJcblx0XCJzaWVubmFcIjogWzE2MCwgODIsIDQ1XSxcclxuXHRcInNpbHZlclwiOiBbMTkyLCAxOTIsIDE5Ml0sXHJcblx0XCJza3libHVlXCI6IFsxMzUsIDIwNiwgMjM1XSxcclxuXHRcInNsYXRlYmx1ZVwiOiBbMTA2LCA5MCwgMjA1XSxcclxuXHRcInNsYXRlZ3JheVwiOiBbMTEyLCAxMjgsIDE0NF0sXHJcblx0XCJzbGF0ZWdyZXlcIjogWzExMiwgMTI4LCAxNDRdLFxyXG5cdFwic25vd1wiOiBbMjU1LCAyNTAsIDI1MF0sXHJcblx0XCJzcHJpbmdncmVlblwiOiBbMCwgMjU1LCAxMjddLFxyXG5cdFwic3RlZWxibHVlXCI6IFs3MCwgMTMwLCAxODBdLFxyXG5cdFwidGFuXCI6IFsyMTAsIDE4MCwgMTQwXSxcclxuXHRcInRlYWxcIjogWzAsIDEyOCwgMTI4XSxcclxuXHRcInRoaXN0bGVcIjogWzIxNiwgMTkxLCAyMTZdLFxyXG5cdFwidG9tYXRvXCI6IFsyNTUsIDk5LCA3MV0sXHJcblx0XCJ0dXJxdW9pc2VcIjogWzY0LCAyMjQsIDIwOF0sXHJcblx0XCJ2aW9sZXRcIjogWzIzOCwgMTMwLCAyMzhdLFxyXG5cdFwid2hlYXRcIjogWzI0NSwgMjIyLCAxNzldLFxyXG5cdFwid2hpdGVcIjogWzI1NSwgMjU1LCAyNTVdLFxyXG5cdFwid2hpdGVzbW9rZVwiOiBbMjQ1LCAyNDUsIDI0NV0sXHJcblx0XCJ5ZWxsb3dcIjogWzI1NSwgMjU1LCAwXSxcclxuXHRcInllbGxvd2dyZWVuXCI6IFsxNTQsIDIwNSwgNTBdXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1076\n')},1077:function(module,exports,__webpack_require__){eval("const conversions = __webpack_require__(1032);\n\n/*\n\tThis function routes a model to all other models.\n\n\tall functions that are routed have a property `.conversion` attached\n\tto the returned synthetic function. This property is an array\n\tof strings, each with the steps in between the 'from' and 'to'\n\tcolor models (inclusive).\n\n\tconversions that are not possible simply are not included.\n*/\n\nfunction buildGraph() {\n\tconst graph = {};\n\t// https://jsperf.com/object-keys-vs-for-in-with-closure/3\n\tconst models = Object.keys(conversions);\n\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tgraph[models[i]] = {\n\t\t\t// http://jsperf.com/1-vs-infinity\n\t\t\t// micro-opt, but this is simple.\n\t\t\tdistance: -1,\n\t\t\tparent: null\n\t\t};\n\t}\n\n\treturn graph;\n}\n\n// https://en.wikipedia.org/wiki/Breadth-first_search\nfunction deriveBFS(fromModel) {\n\tconst graph = buildGraph();\n\tconst queue = [fromModel]; // Unshift -> queue -> pop\n\n\tgraph[fromModel].distance = 0;\n\n\twhile (queue.length) {\n\t\tconst current = queue.pop();\n\t\tconst adjacents = Object.keys(conversions[current]);\n\n\t\tfor (let len = adjacents.length, i = 0; i < len; i++) {\n\t\t\tconst adjacent = adjacents[i];\n\t\t\tconst node = graph[adjacent];\n\n\t\t\tif (node.distance === -1) {\n\t\t\t\tnode.distance = graph[current].distance + 1;\n\t\t\t\tnode.parent = current;\n\t\t\t\tqueue.unshift(adjacent);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn graph;\n}\n\nfunction link(from, to) {\n\treturn function (args) {\n\t\treturn to(from(args));\n\t};\n}\n\nfunction wrapConversion(toModel, graph) {\n\tconst path = [graph[toModel].parent, toModel];\n\tlet fn = conversions[graph[toModel].parent][toModel];\n\n\tlet cur = graph[toModel].parent;\n\twhile (graph[cur].parent) {\n\t\tpath.unshift(graph[cur].parent);\n\t\tfn = link(conversions[graph[cur].parent][cur], fn);\n\t\tcur = graph[cur].parent;\n\t}\n\n\tfn.conversion = path;\n\treturn fn;\n}\n\nmodule.exports = function (fromModel) {\n\tconst graph = deriveBFS(fromModel);\n\tconst conversion = {};\n\n\tconst models = Object.keys(graph);\n\tfor (let len = models.length, i = 0; i < len; i++) {\n\t\tconst toModel = models[i];\n\t\tconst node = graph[toModel];\n\n\t\tif (node.parent === null) {\n\t\t\t// No possible conversion, or this node is the source model.\n\t\t\tcontinue;\n\t\t}\n\n\t\tconversion[toModel] = wrapConversion(toModel, graph);\n\t}\n\n\treturn conversion;\n};\n\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvY29sb3ItY29udmVydC9yb3V0ZS5qcz80OTQ1Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLG9CQUFvQixtQkFBTyxDQUFDLElBQWU7O0FBRTNDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxxQ0FBcUMsU0FBUztBQUM5QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLDJCQUEyQjs7QUFFM0I7O0FBRUE7QUFDQTtBQUNBOztBQUVBLHlDQUF5QyxTQUFTO0FBQ2xEO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBLHFDQUFxQyxTQUFTO0FBQzlDO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBIiwiZmlsZSI6IjEwNzcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBjb252ZXJzaW9ucyA9IHJlcXVpcmUoJy4vY29udmVyc2lvbnMnKTtcblxuLypcblx0VGhpcyBmdW5jdGlvbiByb3V0ZXMgYSBtb2RlbCB0byBhbGwgb3RoZXIgbW9kZWxzLlxuXG5cdGFsbCBmdW5jdGlvbnMgdGhhdCBhcmUgcm91dGVkIGhhdmUgYSBwcm9wZXJ0eSBgLmNvbnZlcnNpb25gIGF0dGFjaGVkXG5cdHRvIHRoZSByZXR1cm5lZCBzeW50aGV0aWMgZnVuY3Rpb24uIFRoaXMgcHJvcGVydHkgaXMgYW4gYXJyYXlcblx0b2Ygc3RyaW5ncywgZWFjaCB3aXRoIHRoZSBzdGVwcyBpbiBiZXR3ZWVuIHRoZSAnZnJvbScgYW5kICd0bydcblx0Y29sb3IgbW9kZWxzIChpbmNsdXNpdmUpLlxuXG5cdGNvbnZlcnNpb25zIHRoYXQgYXJlIG5vdCBwb3NzaWJsZSBzaW1wbHkgYXJlIG5vdCBpbmNsdWRlZC5cbiovXG5cbmZ1bmN0aW9uIGJ1aWxkR3JhcGgoKSB7XG5cdGNvbnN0IGdyYXBoID0ge307XG5cdC8vIGh0dHBzOi8vanNwZXJmLmNvbS9vYmplY3Qta2V5cy12cy1mb3ItaW4td2l0aC1jbG9zdXJlLzNcblx0Y29uc3QgbW9kZWxzID0gT2JqZWN0LmtleXMoY29udmVyc2lvbnMpO1xuXG5cdGZvciAobGV0IGxlbiA9IG1vZGVscy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRncmFwaFttb2RlbHNbaV1dID0ge1xuXHRcdFx0Ly8gaHR0cDovL2pzcGVyZi5jb20vMS12cy1pbmZpbml0eVxuXHRcdFx0Ly8gbWljcm8tb3B0LCBidXQgdGhpcyBpcyBzaW1wbGUuXG5cdFx0XHRkaXN0YW5jZTogLTEsXG5cdFx0XHRwYXJlbnQ6IG51bGxcblx0XHR9O1xuXHR9XG5cblx0cmV0dXJuIGdyYXBoO1xufVxuXG4vLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcmVhZHRoLWZpcnN0X3NlYXJjaFxuZnVuY3Rpb24gZGVyaXZlQkZTKGZyb21Nb2RlbCkge1xuXHRjb25zdCBncmFwaCA9IGJ1aWxkR3JhcGgoKTtcblx0Y29uc3QgcXVldWUgPSBbZnJvbU1vZGVsXTsgLy8gVW5zaGlmdCAtPiBxdWV1ZSAtPiBwb3BcblxuXHRncmFwaFtmcm9tTW9kZWxdLmRpc3RhbmNlID0gMDtcblxuXHR3aGlsZSAocXVldWUubGVuZ3RoKSB7XG5cdFx0Y29uc3QgY3VycmVudCA9IHF1ZXVlLnBvcCgpO1xuXHRcdGNvbnN0IGFkamFjZW50cyA9IE9iamVjdC5rZXlzKGNvbnZlcnNpb25zW2N1cnJlbnRdKTtcblxuXHRcdGZvciAobGV0IGxlbiA9IGFkamFjZW50cy5sZW5ndGgsIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcblx0XHRcdGNvbnN0IGFkamFjZW50ID0gYWRqYWNlbnRzW2ldO1xuXHRcdFx0Y29uc3Qgbm9kZSA9IGdyYXBoW2FkamFjZW50XTtcblxuXHRcdFx0aWYgKG5vZGUuZGlzdGFuY2UgPT09IC0xKSB7XG5cdFx0XHRcdG5vZGUuZGlzdGFuY2UgPSBncmFwaFtjdXJyZW50XS5kaXN0YW5jZSArIDE7XG5cdFx0XHRcdG5vZGUucGFyZW50ID0gY3VycmVudDtcblx0XHRcdFx0cXVldWUudW5zaGlmdChhZGphY2VudCk7XG5cdFx0XHR9XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIGdyYXBoO1xufVxuXG5mdW5jdGlvbiBsaW5rKGZyb20sIHRvKSB7XG5cdHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuXHRcdHJldHVybiB0byhmcm9tKGFyZ3MpKTtcblx0fTtcbn1cblxuZnVuY3Rpb24gd3JhcENvbnZlcnNpb24odG9Nb2RlbCwgZ3JhcGgpIHtcblx0Y29uc3QgcGF0aCA9IFtncmFwaFt0b01vZGVsXS5wYXJlbnQsIHRvTW9kZWxdO1xuXHRsZXQgZm4gPSBjb252ZXJzaW9uc1tncmFwaFt0b01vZGVsXS5wYXJlbnRdW3RvTW9kZWxdO1xuXG5cdGxldCBjdXIgPSBncmFwaFt0b01vZGVsXS5wYXJlbnQ7XG5cdHdoaWxlIChncmFwaFtjdXJdLnBhcmVudCkge1xuXHRcdHBhdGgudW5zaGlmdChncmFwaFtjdXJdLnBhcmVudCk7XG5cdFx0Zm4gPSBsaW5rKGNvbnZlcnNpb25zW2dyYXBoW2N1cl0ucGFyZW50XVtjdXJdLCBmbik7XG5cdFx0Y3VyID0gZ3JhcGhbY3VyXS5wYXJlbnQ7XG5cdH1cblxuXHRmbi5jb252ZXJzaW9uID0gcGF0aDtcblx0cmV0dXJuIGZuO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChmcm9tTW9kZWwpIHtcblx0Y29uc3QgZ3JhcGggPSBkZXJpdmVCRlMoZnJvbU1vZGVsKTtcblx0Y29uc3QgY29udmVyc2lvbiA9IHt9O1xuXG5cdGNvbnN0IG1vZGVscyA9IE9iamVjdC5rZXlzKGdyYXBoKTtcblx0Zm9yIChsZXQgbGVuID0gbW9kZWxzLmxlbmd0aCwgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdGNvbnN0IHRvTW9kZWwgPSBtb2RlbHNbaV07XG5cdFx0Y29uc3Qgbm9kZSA9IGdyYXBoW3RvTW9kZWxdO1xuXG5cdFx0aWYgKG5vZGUucGFyZW50ID09PSBudWxsKSB7XG5cdFx0XHQvLyBObyBwb3NzaWJsZSBjb252ZXJzaW9uLCBvciB0aGlzIG5vZGUgaXMgdGhlIHNvdXJjZSBtb2RlbC5cblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGNvbnZlcnNpb25bdG9Nb2RlbF0gPSB3cmFwQ29udmVyc2lvbih0b01vZGVsLCBncmFwaCk7XG5cdH1cblxuXHRyZXR1cm4gY29udmVyc2lvbjtcbn07XG5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1077\n")},1078:function(module,exports,__webpack_require__){eval("var debounce = __webpack_require__(1079),\n isObject = __webpack_require__(151);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\nfunction throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n}\n\nmodule.exports = throttle;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL3Rocm90dGxlLmpzP2FmN2QiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLElBQVk7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLEdBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU8sWUFBWTtBQUM5QixXQUFXLFFBQVE7QUFDbkI7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbURBQW1ELG9CQUFvQjtBQUN2RTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUFHO0FBQ0g7O0FBRUEiLCJmaWxlIjoiMTA3OC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWJvdW5jZSA9IHJlcXVpcmUoJy4vZGVib3VuY2UnKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKTtcblxuLyoqIEVycm9yIG1lc3NhZ2UgY29uc3RhbnRzLiAqL1xudmFyIEZVTkNfRVJST1JfVEVYVCA9ICdFeHBlY3RlZCBhIGZ1bmN0aW9uJztcblxuLyoqXG4gKiBDcmVhdGVzIGEgdGhyb3R0bGVkIGZ1bmN0aW9uIHRoYXQgb25seSBpbnZva2VzIGBmdW5jYCBhdCBtb3N0IG9uY2UgcGVyXG4gKiBldmVyeSBgd2FpdGAgbWlsbGlzZWNvbmRzLiBUaGUgdGhyb3R0bGVkIGZ1bmN0aW9uIGNvbWVzIHdpdGggYSBgY2FuY2VsYFxuICogbWV0aG9kIHRvIGNhbmNlbCBkZWxheWVkIGBmdW5jYCBpbnZvY2F0aW9ucyBhbmQgYSBgZmx1c2hgIG1ldGhvZCB0b1xuICogaW1tZWRpYXRlbHkgaW52b2tlIHRoZW0uIFByb3ZpZGUgYG9wdGlvbnNgIHRvIGluZGljYXRlIHdoZXRoZXIgYGZ1bmNgXG4gKiBzaG91bGQgYmUgaW52b2tlZCBvbiB0aGUgbGVhZGluZyBhbmQvb3IgdHJhaWxpbmcgZWRnZSBvZiB0aGUgYHdhaXRgXG4gKiB0aW1lb3V0LiBUaGUgYGZ1bmNgIGlzIGludm9rZWQgd2l0aCB0aGUgbGFzdCBhcmd1bWVudHMgcHJvdmlkZWQgdG8gdGhlXG4gKiB0aHJvdHRsZWQgZnVuY3Rpb24uIFN1YnNlcXVlbnQgY2FsbHMgdG8gdGhlIHRocm90dGxlZCBmdW5jdGlvbiByZXR1cm4gdGhlXG4gKiByZXN1bHQgb2YgdGhlIGxhc3QgYGZ1bmNgIGludm9jYXRpb24uXG4gKlxuICogKipOb3RlOioqIElmIGBsZWFkaW5nYCBhbmQgYHRyYWlsaW5nYCBvcHRpb25zIGFyZSBgdHJ1ZWAsIGBmdW5jYCBpc1xuICogaW52b2tlZCBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dCBvbmx5IGlmIHRoZSB0aHJvdHRsZWQgZnVuY3Rpb25cbiAqIGlzIGludm9rZWQgbW9yZSB0aGFuIG9uY2UgZHVyaW5nIHRoZSBgd2FpdGAgdGltZW91dC5cbiAqXG4gKiBJZiBgd2FpdGAgaXMgYDBgIGFuZCBgbGVhZGluZ2AgaXMgYGZhbHNlYCwgYGZ1bmNgIGludm9jYXRpb24gaXMgZGVmZXJyZWRcbiAqIHVudGlsIHRvIHRoZSBuZXh0IHRpY2ssIHNpbWlsYXIgdG8gYHNldFRpbWVvdXRgIHdpdGggYSB0aW1lb3V0IG9mIGAwYC5cbiAqXG4gKiBTZWUgW0RhdmlkIENvcmJhY2hvJ3MgYXJ0aWNsZV0oaHR0cHM6Ly9jc3MtdHJpY2tzLmNvbS9kZWJvdW5jaW5nLXRocm90dGxpbmctZXhwbGFpbmVkLWV4YW1wbGVzLylcbiAqIGZvciBkZXRhaWxzIG92ZXIgdGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYF8udGhyb3R0bGVgIGFuZCBgXy5kZWJvdW5jZWAuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAwLjEuMFxuICogQGNhdGVnb3J5IEZ1bmN0aW9uXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmdW5jIFRoZSBmdW5jdGlvbiB0byB0aHJvdHRsZS5cbiAqIEBwYXJhbSB7bnVtYmVyfSBbd2FpdD0wXSBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB0aHJvdHRsZSBpbnZvY2F0aW9ucyB0by5cbiAqIEBwYXJhbSB7T2JqZWN0fSBbb3B0aW9ucz17fV0gVGhlIG9wdGlvbnMgb2JqZWN0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy5sZWFkaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtib29sZWFufSBbb3B0aW9ucy50cmFpbGluZz10cnVlXVxuICogIFNwZWNpZnkgaW52b2tpbmcgb24gdGhlIHRyYWlsaW5nIGVkZ2Ugb2YgdGhlIHRpbWVvdXQuXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IFJldHVybnMgdGhlIG5ldyB0aHJvdHRsZWQgZnVuY3Rpb24uXG4gKiBAZXhhbXBsZVxuICpcbiAqIC8vIEF2b2lkIGV4Y2Vzc2l2ZWx5IHVwZGF0aW5nIHRoZSBwb3NpdGlvbiB3aGlsZSBzY3JvbGxpbmcuXG4gKiBqUXVlcnkod2luZG93KS5vbignc2Nyb2xsJywgXy50aHJvdHRsZSh1cGRhdGVQb3NpdGlvbiwgMTAwKSk7XG4gKlxuICogLy8gSW52b2tlIGByZW5ld1Rva2VuYCB3aGVuIHRoZSBjbGljayBldmVudCBpcyBmaXJlZCwgYnV0IG5vdCBtb3JlIHRoYW4gb25jZSBldmVyeSA1IG1pbnV0ZXMuXG4gKiB2YXIgdGhyb3R0bGVkID0gXy50aHJvdHRsZShyZW5ld1Rva2VuLCAzMDAwMDAsIHsgJ3RyYWlsaW5nJzogZmFsc2UgfSk7XG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgdGhyb3R0bGVkKTtcbiAqXG4gKiAvLyBDYW5jZWwgdGhlIHRyYWlsaW5nIHRocm90dGxlZCBpbnZvY2F0aW9uLlxuICogalF1ZXJ5KHdpbmRvdykub24oJ3BvcHN0YXRlJywgdGhyb3R0bGVkLmNhbmNlbCk7XG4gKi9cbmZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQsIG9wdGlvbnMpIHtcbiAgdmFyIGxlYWRpbmcgPSB0cnVlLFxuICAgICAgdHJhaWxpbmcgPSB0cnVlO1xuXG4gIGlmICh0eXBlb2YgZnVuYyAhPSAnZnVuY3Rpb24nKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcihGVU5DX0VSUk9SX1RFWFQpO1xuICB9XG4gIGlmIChpc09iamVjdChvcHRpb25zKSkge1xuICAgIGxlYWRpbmcgPSAnbGVhZGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy5sZWFkaW5nIDogbGVhZGluZztcbiAgICB0cmFpbGluZyA9ICd0cmFpbGluZycgaW4gb3B0aW9ucyA/ICEhb3B0aW9ucy50cmFpbGluZyA6IHRyYWlsaW5nO1xuICB9XG4gIHJldHVybiBkZWJvdW5jZShmdW5jLCB3YWl0LCB7XG4gICAgJ2xlYWRpbmcnOiBsZWFkaW5nLFxuICAgICdtYXhXYWl0Jzogd2FpdCxcbiAgICAndHJhaWxpbmcnOiB0cmFpbGluZ1xuICB9KTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0aHJvdHRsZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1078\n")},1079:function(module,exports,__webpack_require__){eval("var isObject = __webpack_require__(151),\n now = __webpack_require__(1080),\n toNumber = __webpack_require__(1081);\n\n/** Error message constants. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\nmodule.exports = debounce;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL2RlYm91bmNlLmpzP2RkZDQiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLEdBQVk7QUFDbkMsVUFBVSxtQkFBTyxDQUFDLElBQU87QUFDekIsZUFBZSxtQkFBTyxDQUFDLElBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxTQUFTO0FBQ3BCLFdBQVcsT0FBTztBQUNsQixXQUFXLE9BQU8sWUFBWTtBQUM5QixXQUFXLFFBQVE7QUFDbkI7QUFDQSxXQUFXLE9BQU87QUFDbEI7QUFDQSxXQUFXLFFBQVE7QUFDbkI7QUFDQSxhQUFhLFNBQVM7QUFDdEI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQSw4Q0FBOEMsa0JBQWtCO0FBQ2hFO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiMTA3OS5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBub3cgPSByZXF1aXJlKCcuL25vdycpLFxuICAgIHRvTnVtYmVyID0gcmVxdWlyZSgnLi90b051bWJlcicpO1xuXG4vKiogRXJyb3IgbWVzc2FnZSBjb25zdGFudHMuICovXG52YXIgRlVOQ19FUlJPUl9URVhUID0gJ0V4cGVjdGVkIGEgZnVuY3Rpb24nO1xuXG4vKiBCdWlsdC1pbiBtZXRob2QgcmVmZXJlbmNlcyBmb3IgdGhvc2Ugd2l0aCB0aGUgc2FtZSBuYW1lIGFzIG90aGVyIGBsb2Rhc2hgIG1ldGhvZHMuICovXG52YXIgbmF0aXZlTWF4ID0gTWF0aC5tYXgsXG4gICAgbmF0aXZlTWluID0gTWF0aC5taW47XG5cbi8qKlxuICogQ3JlYXRlcyBhIGRlYm91bmNlZCBmdW5jdGlvbiB0aGF0IGRlbGF5cyBpbnZva2luZyBgZnVuY2AgdW50aWwgYWZ0ZXIgYHdhaXRgXG4gKiBtaWxsaXNlY29uZHMgaGF2ZSBlbGFwc2VkIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRlYm91bmNlZCBmdW5jdGlvbiB3YXNcbiAqIGludm9rZWQuIFRoZSBkZWJvdW5jZWQgZnVuY3Rpb24gY29tZXMgd2l0aCBhIGBjYW5jZWxgIG1ldGhvZCB0byBjYW5jZWxcbiAqIGRlbGF5ZWQgYGZ1bmNgIGludm9jYXRpb25zIGFuZCBhIGBmbHVzaGAgbWV0aG9kIHRvIGltbWVkaWF0ZWx5IGludm9rZSB0aGVtLlxuICogUHJvdmlkZSBgb3B0aW9uc2AgdG8gaW5kaWNhdGUgd2hldGhlciBgZnVuY2Agc2hvdWxkIGJlIGludm9rZWQgb24gdGhlXG4gKiBsZWFkaW5nIGFuZC9vciB0cmFpbGluZyBlZGdlIG9mIHRoZSBgd2FpdGAgdGltZW91dC4gVGhlIGBmdW5jYCBpcyBpbnZva2VkXG4gKiB3aXRoIHRoZSBsYXN0IGFyZ3VtZW50cyBwcm92aWRlZCB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uLiBTdWJzZXF1ZW50XG4gKiBjYWxscyB0byB0aGUgZGVib3VuY2VkIGZ1bmN0aW9uIHJldHVybiB0aGUgcmVzdWx0IG9mIHRoZSBsYXN0IGBmdW5jYFxuICogaW52b2NhdGlvbi5cbiAqXG4gKiAqKk5vdGU6KiogSWYgYGxlYWRpbmdgIGFuZCBgdHJhaWxpbmdgIG9wdGlvbnMgYXJlIGB0cnVlYCwgYGZ1bmNgIGlzXG4gKiBpbnZva2VkIG9uIHRoZSB0cmFpbGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0IG9ubHkgaWYgdGhlIGRlYm91bmNlZCBmdW5jdGlvblxuICogaXMgaW52b2tlZCBtb3JlIHRoYW4gb25jZSBkdXJpbmcgdGhlIGB3YWl0YCB0aW1lb3V0LlxuICpcbiAqIElmIGB3YWl0YCBpcyBgMGAgYW5kIGBsZWFkaW5nYCBpcyBgZmFsc2VgLCBgZnVuY2AgaW52b2NhdGlvbiBpcyBkZWZlcnJlZFxuICogdW50aWwgdG8gdGhlIG5leHQgdGljaywgc2ltaWxhciB0byBgc2V0VGltZW91dGAgd2l0aCBhIHRpbWVvdXQgb2YgYDBgLlxuICpcbiAqIFNlZSBbRGF2aWQgQ29yYmFjaG8ncyBhcnRpY2xlXShodHRwczovL2Nzcy10cmlja3MuY29tL2RlYm91bmNpbmctdGhyb3R0bGluZy1leHBsYWluZWQtZXhhbXBsZXMvKVxuICogZm9yIGRldGFpbHMgb3ZlciB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBgXy5kZWJvdW5jZWAgYW5kIGBfLnRocm90dGxlYC5cbiAqXG4gKiBAc3RhdGljXG4gKiBAbWVtYmVyT2YgX1xuICogQHNpbmNlIDAuMS4wXG4gKiBAY2F0ZWdvcnkgRnVuY3Rpb25cbiAqIEBwYXJhbSB7RnVuY3Rpb259IGZ1bmMgVGhlIGZ1bmN0aW9uIHRvIGRlYm91bmNlLlxuICogQHBhcmFtIHtudW1iZXJ9IFt3YWl0PTBdIFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIGRlbGF5LlxuICogQHBhcmFtIHtPYmplY3R9IFtvcHRpb25zPXt9XSBUaGUgb3B0aW9ucyBvYmplY3QuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLmxlYWRpbmc9ZmFsc2VdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgbGVhZGluZyBlZGdlIG9mIHRoZSB0aW1lb3V0LlxuICogQHBhcmFtIHtudW1iZXJ9IFtvcHRpb25zLm1heFdhaXRdXG4gKiAgVGhlIG1heGltdW0gdGltZSBgZnVuY2AgaXMgYWxsb3dlZCB0byBiZSBkZWxheWVkIGJlZm9yZSBpdCdzIGludm9rZWQuXG4gKiBAcGFyYW0ge2Jvb2xlYW59IFtvcHRpb25zLnRyYWlsaW5nPXRydWVdXG4gKiAgU3BlY2lmeSBpbnZva2luZyBvbiB0aGUgdHJhaWxpbmcgZWRnZSBvZiB0aGUgdGltZW91dC5cbiAqIEByZXR1cm5zIHtGdW5jdGlvbn0gUmV0dXJucyB0aGUgbmV3IGRlYm91bmNlZCBmdW5jdGlvbi5cbiAqIEBleGFtcGxlXG4gKlxuICogLy8gQXZvaWQgY29zdGx5IGNhbGN1bGF0aW9ucyB3aGlsZSB0aGUgd2luZG93IHNpemUgaXMgaW4gZmx1eC5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdyZXNpemUnLCBfLmRlYm91bmNlKGNhbGN1bGF0ZUxheW91dCwgMTUwKSk7XG4gKlxuICogLy8gSW52b2tlIGBzZW5kTWFpbGAgd2hlbiBjbGlja2VkLCBkZWJvdW5jaW5nIHN1YnNlcXVlbnQgY2FsbHMuXG4gKiBqUXVlcnkoZWxlbWVudCkub24oJ2NsaWNrJywgXy5kZWJvdW5jZShzZW5kTWFpbCwgMzAwLCB7XG4gKiAgICdsZWFkaW5nJzogdHJ1ZSxcbiAqICAgJ3RyYWlsaW5nJzogZmFsc2VcbiAqIH0pKTtcbiAqXG4gKiAvLyBFbnN1cmUgYGJhdGNoTG9nYCBpcyBpbnZva2VkIG9uY2UgYWZ0ZXIgMSBzZWNvbmQgb2YgZGVib3VuY2VkIGNhbGxzLlxuICogdmFyIGRlYm91bmNlZCA9IF8uZGVib3VuY2UoYmF0Y2hMb2csIDI1MCwgeyAnbWF4V2FpdCc6IDEwMDAgfSk7XG4gKiB2YXIgc291cmNlID0gbmV3IEV2ZW50U291cmNlKCcvc3RyZWFtJyk7XG4gKiBqUXVlcnkoc291cmNlKS5vbignbWVzc2FnZScsIGRlYm91bmNlZCk7XG4gKlxuICogLy8gQ2FuY2VsIHRoZSB0cmFpbGluZyBkZWJvdW5jZWQgaW52b2NhdGlvbi5cbiAqIGpRdWVyeSh3aW5kb3cpLm9uKCdwb3BzdGF0ZScsIGRlYm91bmNlZC5jYW5jZWwpO1xuICovXG5mdW5jdGlvbiBkZWJvdW5jZShmdW5jLCB3YWl0LCBvcHRpb25zKSB7XG4gIHZhciBsYXN0QXJncyxcbiAgICAgIGxhc3RUaGlzLFxuICAgICAgbWF4V2FpdCxcbiAgICAgIHJlc3VsdCxcbiAgICAgIHRpbWVySWQsXG4gICAgICBsYXN0Q2FsbFRpbWUsXG4gICAgICBsYXN0SW52b2tlVGltZSA9IDAsXG4gICAgICBsZWFkaW5nID0gZmFsc2UsXG4gICAgICBtYXhpbmcgPSBmYWxzZSxcbiAgICAgIHRyYWlsaW5nID0gdHJ1ZTtcblxuICBpZiAodHlwZW9mIGZ1bmMgIT0gJ2Z1bmN0aW9uJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoRlVOQ19FUlJPUl9URVhUKTtcbiAgfVxuICB3YWl0ID0gdG9OdW1iZXIod2FpdCkgfHwgMDtcbiAgaWYgKGlzT2JqZWN0KG9wdGlvbnMpKSB7XG4gICAgbGVhZGluZyA9ICEhb3B0aW9ucy5sZWFkaW5nO1xuICAgIG1heGluZyA9ICdtYXhXYWl0JyBpbiBvcHRpb25zO1xuICAgIG1heFdhaXQgPSBtYXhpbmcgPyBuYXRpdmVNYXgodG9OdW1iZXIob3B0aW9ucy5tYXhXYWl0KSB8fCAwLCB3YWl0KSA6IG1heFdhaXQ7XG4gICAgdHJhaWxpbmcgPSAndHJhaWxpbmcnIGluIG9wdGlvbnMgPyAhIW9wdGlvbnMudHJhaWxpbmcgOiB0cmFpbGluZztcbiAgfVxuXG4gIGZ1bmN0aW9uIGludm9rZUZ1bmModGltZSkge1xuICAgIHZhciBhcmdzID0gbGFzdEFyZ3MsXG4gICAgICAgIHRoaXNBcmcgPSBsYXN0VGhpcztcblxuICAgIGxhc3RBcmdzID0gbGFzdFRoaXMgPSB1bmRlZmluZWQ7XG4gICAgbGFzdEludm9rZVRpbWUgPSB0aW1lO1xuICAgIHJlc3VsdCA9IGZ1bmMuYXBwbHkodGhpc0FyZywgYXJncyk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxlYWRpbmdFZGdlKHRpbWUpIHtcbiAgICAvLyBSZXNldCBhbnkgYG1heFdhaXRgIHRpbWVyLlxuICAgIGxhc3RJbnZva2VUaW1lID0gdGltZTtcbiAgICAvLyBTdGFydCB0aGUgdGltZXIgZm9yIHRoZSB0cmFpbGluZyBlZGdlLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgd2FpdCk7XG4gICAgLy8gSW52b2tlIHRoZSBsZWFkaW5nIGVkZ2UuXG4gICAgcmV0dXJuIGxlYWRpbmcgPyBpbnZva2VGdW5jKHRpbWUpIDogcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gcmVtYWluaW5nV2FpdCh0aW1lKSB7XG4gICAgdmFyIHRpbWVTaW5jZUxhc3RDYWxsID0gdGltZSAtIGxhc3RDYWxsVGltZSxcbiAgICAgICAgdGltZVNpbmNlTGFzdEludm9rZSA9IHRpbWUgLSBsYXN0SW52b2tlVGltZSxcbiAgICAgICAgdGltZVdhaXRpbmcgPSB3YWl0IC0gdGltZVNpbmNlTGFzdENhbGw7XG5cbiAgICByZXR1cm4gbWF4aW5nXG4gICAgICA/IG5hdGl2ZU1pbih0aW1lV2FpdGluZywgbWF4V2FpdCAtIHRpbWVTaW5jZUxhc3RJbnZva2UpXG4gICAgICA6IHRpbWVXYWl0aW5nO1xuICB9XG5cbiAgZnVuY3Rpb24gc2hvdWxkSW52b2tlKHRpbWUpIHtcbiAgICB2YXIgdGltZVNpbmNlTGFzdENhbGwgPSB0aW1lIC0gbGFzdENhbGxUaW1lLFxuICAgICAgICB0aW1lU2luY2VMYXN0SW52b2tlID0gdGltZSAtIGxhc3RJbnZva2VUaW1lO1xuXG4gICAgLy8gRWl0aGVyIHRoaXMgaXMgdGhlIGZpcnN0IGNhbGwsIGFjdGl2aXR5IGhhcyBzdG9wcGVkIGFuZCB3ZSdyZSBhdCB0aGVcbiAgICAvLyB0cmFpbGluZyBlZGdlLCB0aGUgc3lzdGVtIHRpbWUgaGFzIGdvbmUgYmFja3dhcmRzIGFuZCB3ZSdyZSB0cmVhdGluZ1xuICAgIC8vIGl0IGFzIHRoZSB0cmFpbGluZyBlZGdlLCBvciB3ZSd2ZSBoaXQgdGhlIGBtYXhXYWl0YCBsaW1pdC5cbiAgICByZXR1cm4gKGxhc3RDYWxsVGltZSA9PT0gdW5kZWZpbmVkIHx8ICh0aW1lU2luY2VMYXN0Q2FsbCA+PSB3YWl0KSB8fFxuICAgICAgKHRpbWVTaW5jZUxhc3RDYWxsIDwgMCkgfHwgKG1heGluZyAmJiB0aW1lU2luY2VMYXN0SW52b2tlID49IG1heFdhaXQpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHRpbWVyRXhwaXJlZCgpIHtcbiAgICB2YXIgdGltZSA9IG5vdygpO1xuICAgIGlmIChzaG91bGRJbnZva2UodGltZSkpIHtcbiAgICAgIHJldHVybiB0cmFpbGluZ0VkZ2UodGltZSk7XG4gICAgfVxuICAgIC8vIFJlc3RhcnQgdGhlIHRpbWVyLlxuICAgIHRpbWVySWQgPSBzZXRUaW1lb3V0KHRpbWVyRXhwaXJlZCwgcmVtYWluaW5nV2FpdCh0aW1lKSk7XG4gIH1cblxuICBmdW5jdGlvbiB0cmFpbGluZ0VkZ2UodGltZSkge1xuICAgIHRpbWVySWQgPSB1bmRlZmluZWQ7XG5cbiAgICAvLyBPbmx5IGludm9rZSBpZiB3ZSBoYXZlIGBsYXN0QXJnc2Agd2hpY2ggbWVhbnMgYGZ1bmNgIGhhcyBiZWVuXG4gICAgLy8gZGVib3VuY2VkIGF0IGxlYXN0IG9uY2UuXG4gICAgaWYgKHRyYWlsaW5nICYmIGxhc3RBcmdzKSB7XG4gICAgICByZXR1cm4gaW52b2tlRnVuYyh0aW1lKTtcbiAgICB9XG4gICAgbGFzdEFyZ3MgPSBsYXN0VGhpcyA9IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuY2VsKCkge1xuICAgIGlmICh0aW1lcklkICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICB9XG4gICAgbGFzdEludm9rZVRpbWUgPSAwO1xuICAgIGxhc3RBcmdzID0gbGFzdENhbGxUaW1lID0gbGFzdFRoaXMgPSB0aW1lcklkID0gdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gZmx1c2goKSB7XG4gICAgcmV0dXJuIHRpbWVySWQgPT09IHVuZGVmaW5lZCA/IHJlc3VsdCA6IHRyYWlsaW5nRWRnZShub3coKSk7XG4gIH1cblxuICBmdW5jdGlvbiBkZWJvdW5jZWQoKSB7XG4gICAgdmFyIHRpbWUgPSBub3coKSxcbiAgICAgICAgaXNJbnZva2luZyA9IHNob3VsZEludm9rZSh0aW1lKTtcblxuICAgIGxhc3RBcmdzID0gYXJndW1lbnRzO1xuICAgIGxhc3RUaGlzID0gdGhpcztcbiAgICBsYXN0Q2FsbFRpbWUgPSB0aW1lO1xuXG4gICAgaWYgKGlzSW52b2tpbmcpIHtcbiAgICAgIGlmICh0aW1lcklkID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgcmV0dXJuIGxlYWRpbmdFZGdlKGxhc3RDYWxsVGltZSk7XG4gICAgICB9XG4gICAgICBpZiAobWF4aW5nKSB7XG4gICAgICAgIC8vIEhhbmRsZSBpbnZvY2F0aW9ucyBpbiBhIHRpZ2h0IGxvb3AuXG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICAgICAgcmV0dXJuIGludm9rZUZ1bmMobGFzdENhbGxUaW1lKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHRpbWVySWQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgdGltZXJJZCA9IHNldFRpbWVvdXQodGltZXJFeHBpcmVkLCB3YWl0KTtcbiAgICB9XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuICBkZWJvdW5jZWQuY2FuY2VsID0gY2FuY2VsO1xuICBkZWJvdW5jZWQuZmx1c2ggPSBmbHVzaDtcbiAgcmV0dXJuIGRlYm91bmNlZDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBkZWJvdW5jZTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1079\n")},1080:function(module,exports,__webpack_require__){eval("var root = __webpack_require__(117);\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\nmodule.exports = now;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL25vdy5qcz8yOGQ0Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLFdBQVcsbUJBQU8sQ0FBQyxHQUFTOztBQUU1QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsSUFBSTtBQUNKO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiMTA4MC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByb290ID0gcmVxdWlyZSgnLi9fcm9vdCcpO1xuXG4vKipcbiAqIEdldHMgdGhlIHRpbWVzdGFtcCBvZiB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGF0IGhhdmUgZWxhcHNlZCBzaW5jZVxuICogdGhlIFVuaXggZXBvY2ggKDEgSmFudWFyeSAxOTcwIDAwOjAwOjAwIFVUQykuXG4gKlxuICogQHN0YXRpY1xuICogQG1lbWJlck9mIF9cbiAqIEBzaW5jZSAyLjQuMFxuICogQGNhdGVnb3J5IERhdGVcbiAqIEByZXR1cm5zIHtudW1iZXJ9IFJldHVybnMgdGhlIHRpbWVzdGFtcC5cbiAqIEBleGFtcGxlXG4gKlxuICogXy5kZWZlcihmdW5jdGlvbihzdGFtcCkge1xuICogICBjb25zb2xlLmxvZyhfLm5vdygpIC0gc3RhbXApO1xuICogfSwgXy5ub3coKSk7XG4gKiAvLyA9PiBMb2dzIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGl0IHRvb2sgZm9yIHRoZSBkZWZlcnJlZCBpbnZvY2F0aW9uLlxuICovXG52YXIgbm93ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiByb290LkRhdGUubm93KCk7XG59O1xuXG5tb2R1bGUuZXhwb3J0cyA9IG5vdztcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///1080\n")},1081:function(module,exports,__webpack_require__){eval("var baseTrim = __webpack_require__(1082),\n isObject = __webpack_require__(151),\n isSymbol = __webpack_require__(292);\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL3RvTnVtYmVyLmpzPzU2ODgiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZUFBZSxtQkFBTyxDQUFDLElBQWE7QUFDcEMsZUFBZSxtQkFBTyxDQUFDLEdBQVk7QUFDbkMsZUFBZSxtQkFBTyxDQUFDLEdBQVk7O0FBRW5DO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLFdBQVcsRUFBRTtBQUNiLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSIsImZpbGUiOiIxMDgxLmpzIiwic291cmNlc0NvbnRlbnQiOlsidmFyIGJhc2VUcmltID0gcmVxdWlyZSgnLi9fYmFzZVRyaW0nKSxcbiAgICBpc09iamVjdCA9IHJlcXVpcmUoJy4vaXNPYmplY3QnKSxcbiAgICBpc1N5bWJvbCA9IHJlcXVpcmUoJy4vaXNTeW1ib2wnKTtcblxuLyoqIFVzZWQgYXMgcmVmZXJlbmNlcyBmb3IgdmFyaW91cyBgTnVtYmVyYCBjb25zdGFudHMuICovXG52YXIgTkFOID0gMCAvIDA7XG5cbi8qKiBVc2VkIHRvIGRldGVjdCBiYWQgc2lnbmVkIGhleGFkZWNpbWFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JhZEhleCA9IC9eWy0rXTB4WzAtOWEtZl0rJC9pO1xuXG4vKiogVXNlZCB0byBkZXRlY3QgYmluYXJ5IHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc0JpbmFyeSA9IC9eMGJbMDFdKyQvaTtcblxuLyoqIFVzZWQgdG8gZGV0ZWN0IG9jdGFsIHN0cmluZyB2YWx1ZXMuICovXG52YXIgcmVJc09jdGFsID0gL14wb1swLTddKyQvaTtcblxuLyoqIEJ1aWx0LWluIG1ldGhvZCByZWZlcmVuY2VzIHdpdGhvdXQgYSBkZXBlbmRlbmN5IG9uIGByb290YC4gKi9cbnZhciBmcmVlUGFyc2VJbnQgPSBwYXJzZUludDtcblxuLyoqXG4gKiBDb252ZXJ0cyBgdmFsdWVgIHRvIGEgbnVtYmVyLlxuICpcbiAqIEBzdGF0aWNcbiAqIEBtZW1iZXJPZiBfXG4gKiBAc2luY2UgNC4wLjBcbiAqIEBjYXRlZ29yeSBMYW5nXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byBwcm9jZXNzLlxuICogQHJldHVybnMge251bWJlcn0gUmV0dXJucyB0aGUgbnVtYmVyLlxuICogQGV4YW1wbGVcbiAqXG4gKiBfLnRvTnVtYmVyKDMuMik7XG4gKiAvLyA9PiAzLjJcbiAqXG4gKiBfLnRvTnVtYmVyKE51bWJlci5NSU5fVkFMVUUpO1xuICogLy8gPT4gNWUtMzI0XG4gKlxuICogXy50b051bWJlcihJbmZpbml0eSk7XG4gKiAvLyA9PiBJbmZpbml0eVxuICpcbiAqIF8udG9OdW1iZXIoJzMuMicpO1xuICogLy8gPT4gMy4yXG4gKi9cbmZ1bmN0aW9uIHRvTnVtYmVyKHZhbHVlKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gdmFsdWU7XG4gIH1cbiAgaWYgKGlzU3ltYm9sKHZhbHVlKSkge1xuICAgIHJldHVybiBOQU47XG4gIH1cbiAgaWYgKGlzT2JqZWN0KHZhbHVlKSkge1xuICAgIHZhciBvdGhlciA9IHR5cGVvZiB2YWx1ZS52YWx1ZU9mID09ICdmdW5jdGlvbicgPyB2YWx1ZS52YWx1ZU9mKCkgOiB2YWx1ZTtcbiAgICB2YWx1ZSA9IGlzT2JqZWN0KG90aGVyKSA/IChvdGhlciArICcnKSA6IG90aGVyO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIHtcbiAgICByZXR1cm4gdmFsdWUgPT09IDAgPyB2YWx1ZSA6ICt2YWx1ZTtcbiAgfVxuICB2YWx1ZSA9IGJhc2VUcmltKHZhbHVlKTtcbiAgdmFyIGlzQmluYXJ5ID0gcmVJc0JpbmFyeS50ZXN0KHZhbHVlKTtcbiAgcmV0dXJuIChpc0JpbmFyeSB8fCByZUlzT2N0YWwudGVzdCh2YWx1ZSkpXG4gICAgPyBmcmVlUGFyc2VJbnQodmFsdWUuc2xpY2UoMiksIGlzQmluYXJ5ID8gMiA6IDgpXG4gICAgOiAocmVJc0JhZEhleC50ZXN0KHZhbHVlKSA/IE5BTiA6ICt2YWx1ZSk7XG59XG5cbm1vZHVsZS5leHBvcnRzID0gdG9OdW1iZXI7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1081\n")},1082:function(module,exports,__webpack_require__){eval("var trimmedEndIndex = __webpack_require__(1083);\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL19iYXNlVHJpbS5qcz8wZWI5Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLHNCQUFzQixtQkFBTyxDQUFDLElBQW9COztBQUVsRDtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsV0FBVyxPQUFPO0FBQ2xCLGFBQWEsT0FBTztBQUNwQjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiMTA4Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciB0cmltbWVkRW5kSW5kZXggPSByZXF1aXJlKCcuL190cmltbWVkRW5kSW5kZXgnKTtcblxuLyoqIFVzZWQgdG8gbWF0Y2ggbGVhZGluZyB3aGl0ZXNwYWNlLiAqL1xudmFyIHJlVHJpbVN0YXJ0ID0gL15cXHMrLztcblxuLyoqXG4gKiBUaGUgYmFzZSBpbXBsZW1lbnRhdGlvbiBvZiBgXy50cmltYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIHRyaW0uXG4gKiBAcmV0dXJucyB7c3RyaW5nfSBSZXR1cm5zIHRoZSB0cmltbWVkIHN0cmluZy5cbiAqL1xuZnVuY3Rpb24gYmFzZVRyaW0oc3RyaW5nKSB7XG4gIHJldHVybiBzdHJpbmdcbiAgICA/IHN0cmluZy5zbGljZSgwLCB0cmltbWVkRW5kSW5kZXgoc3RyaW5nKSArIDEpLnJlcGxhY2UocmVUcmltU3RhcnQsICcnKVxuICAgIDogc3RyaW5nO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGJhc2VUcmltO1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///1082\n")},1083:function(module,exports){eval("/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vL2hvbWUvamVua2lucy93b3Jrc3BhY2UvZGVzaWduLXN5c3RlbV9QUi0xMy9ub2RlX21vZHVsZXMvbG9kYXNoL190cmltbWVkRW5kSW5kZXguanM/YzUyNiJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxXQUFXLE9BQU87QUFDbEIsYUFBYSxPQUFPO0FBQ3BCO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUEiLCJmaWxlIjoiMTA4My5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKiBVc2VkIHRvIG1hdGNoIGEgc2luZ2xlIHdoaXRlc3BhY2UgY2hhcmFjdGVyLiAqL1xudmFyIHJlV2hpdGVzcGFjZSA9IC9cXHMvO1xuXG4vKipcbiAqIFVzZWQgYnkgYF8udHJpbWAgYW5kIGBfLnRyaW1FbmRgIHRvIGdldCB0aGUgaW5kZXggb2YgdGhlIGxhc3Qgbm9uLXdoaXRlc3BhY2VcbiAqIGNoYXJhY3RlciBvZiBgc3RyaW5nYC5cbiAqXG4gKiBAcHJpdmF0ZVxuICogQHBhcmFtIHtzdHJpbmd9IHN0cmluZyBUaGUgc3RyaW5nIHRvIGluc3BlY3QuXG4gKiBAcmV0dXJucyB7bnVtYmVyfSBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUgbGFzdCBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXIuXG4gKi9cbmZ1bmN0aW9uIHRyaW1tZWRFbmRJbmRleChzdHJpbmcpIHtcbiAgdmFyIGluZGV4ID0gc3RyaW5nLmxlbmd0aDtcblxuICB3aGlsZSAoaW5kZXgtLSAmJiByZVdoaXRlc3BhY2UudGVzdChzdHJpbmcuY2hhckF0KGluZGV4KSkpIHt9XG4gIHJldHVybiBpbmRleDtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSB0cmltbWVkRW5kSW5kZXg7XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///1083\n")},572:function(module,__webpack_exports__,__webpack_require__){"use strict";eval("/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return TooltipNote; });\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(167);\n/* harmony import */ var core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_bold_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(18);\n/* harmony import */ var core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_keys_js__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(4);\n/* harmony import */ var core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_symbol_js__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _storybook_theming__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(3);\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\n\n\n\n\n\nvar Note = _storybook_theming__WEBPACK_IMPORTED_MODULE_4__[\"styled\"].div(function (_ref) {\n var theme = _ref.theme;\n return {\n padding: '2px 6px',\n lineHeight: '16px',\n fontSize: 10,\n fontWeight: theme.typography.weight.bold,\n color: theme.color.lightest,\n boxShadow: '0 0 5px 0 rgba(0, 0, 0, 0.3)',\n borderRadius: 4,\n whiteSpace: 'nowrap',\n pointerEvents: 'none',\n zIndex: -1,\n background: 'rgba(0, 0, 0, 0.4)',\n margin: 6\n };\n});\nvar TooltipNote = function TooltipNote(_ref2) {\n var note = _ref2.note,\n props = _objectWithoutProperties(_ref2, [\"note\"]);\n\n return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_3___default.a.createElement(Note, props, note);\n};\nTooltipNote.displayName = \"TooltipNote\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQHN0b3J5Ym9vay9jb21wb25lbnRzL2Rpc3QvZXNtL3Rvb2x0aXAvVG9vbHRpcE5vdGUuanM/ZmUxYyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLHFEQUFxRCwrQkFBK0IsOERBQThELFlBQVksb0NBQW9DLDZEQUE2RCxZQUFZLDZCQUE2QixPQUFPLDJCQUEyQiwwQ0FBMEMsd0VBQXdFLDJCQUEyQixFQUFFLEVBQUUsZUFBZTs7QUFFMWUsMERBQTBELCtCQUErQixpQkFBaUIsc0NBQXNDLFlBQVksWUFBWSx1QkFBdUIsT0FBTyxxQkFBcUIsMENBQTBDLDJCQUEyQixFQUFFLGVBQWU7O0FBRXRRO0FBQ0E7QUFDTDtBQUNaO0FBQ2tCO0FBQzVDLFdBQVcseURBQU07QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsQ0FBQztBQUNNO0FBQ1A7QUFDQTs7QUFFQSxzQkFBc0IsNENBQUs7QUFDM0I7QUFDQSIsImZpbGUiOiI1NzIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXMoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpOyB2YXIga2V5LCBpOyBpZiAoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scykgeyB2YXIgc291cmNlU3ltYm9sS2V5cyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMoc291cmNlKTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZVN5bWJvbEtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlU3ltYm9sS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgaWYgKCFPYmplY3QucHJvdG90eXBlLnByb3BlcnR5SXNFbnVtZXJhYmxlLmNhbGwoc291cmNlLCBrZXkpKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgXCJjb3JlLWpzL21vZHVsZXMvZXMuc3RyaW5nLmJvbGQuanNcIjtcbmltcG9ydCBcImNvcmUtanMvbW9kdWxlcy9lcy5vYmplY3Qua2V5cy5qc1wiO1xuaW1wb3J0IFwiY29yZS1qcy9tb2R1bGVzL2VzLnN5bWJvbC5qc1wiO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlZCB9IGZyb20gJ0BzdG9yeWJvb2svdGhlbWluZyc7XG52YXIgTm90ZSA9IHN0eWxlZC5kaXYoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHRoZW1lID0gX3JlZi50aGVtZTtcbiAgcmV0dXJuIHtcbiAgICBwYWRkaW5nOiAnMnB4IDZweCcsXG4gICAgbGluZUhlaWdodDogJzE2cHgnLFxuICAgIGZvbnRTaXplOiAxMCxcbiAgICBmb250V2VpZ2h0OiB0aGVtZS50eXBvZ3JhcGh5LndlaWdodC5ib2xkLFxuICAgIGNvbG9yOiB0aGVtZS5jb2xvci5saWdodGVzdCxcbiAgICBib3hTaGFkb3c6ICcwIDAgNXB4IDAgcmdiYSgwLCAwLCAwLCAwLjMpJyxcbiAgICBib3JkZXJSYWRpdXM6IDQsXG4gICAgd2hpdGVTcGFjZTogJ25vd3JhcCcsXG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIHpJbmRleDogLTEsXG4gICAgYmFja2dyb3VuZDogJ3JnYmEoMCwgMCwgMCwgMC40KScsXG4gICAgbWFyZ2luOiA2XG4gIH07XG59KTtcbmV4cG9ydCB2YXIgVG9vbHRpcE5vdGUgPSBmdW5jdGlvbiBUb29sdGlwTm90ZShfcmVmMikge1xuICB2YXIgbm90ZSA9IF9yZWYyLm5vdGUsXG4gICAgICBwcm9wcyA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllcyhfcmVmMiwgW1wibm90ZVwiXSk7XG5cbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVFbGVtZW50KE5vdGUsIHByb3BzLCBub3RlKTtcbn07XG5Ub29sdGlwTm90ZS5kaXNwbGF5TmFtZSA9IFwiVG9vbHRpcE5vdGVcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///572\n")}}]);
|