demio-ui 1.0.22 → 1.0.24
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/dist/cjs/index.css +1 -1
- package/dist/cjs/index.js +2 -2
- package/dist/cjs/types/src/components/Tooltip/Tooltip.d.ts +2 -1
- package/dist/esm/index.css +1 -1
- package/dist/esm/index.js +2 -2
- package/dist/esm/types/src/components/Tooltip/Tooltip.d.ts +2 -1
- package/dist/types.d.ts +2 -1
- package/package.json +15 -15
package/dist/esm/index.js
CHANGED
|
@@ -3,5 +3,5 @@ import*as e from"react";import t,{useCallback as n,createContext as r,useMemo as
|
|
|
3
3
|
Copyright (c) 2018 Jed Watson.
|
|
4
4
|
Licensed under the MIT License (MIT), see
|
|
5
5
|
http://jedwatson.github.io/classnames
|
|
6
|
-
*/O=C,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var i=t.apply(null,o);i&&n.push(i)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var l in o)e.call(o,l)&&o[l]&&n.push(l)}}}return n.join(" ")}O.exports?(t.default=t,O.exports=t):window.classNames=t}();var D=E(C.exports),T={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},k=t.forwardRef((function(e,n){var r,o=e.disabled,a=void 0!==o&&o,i=e.children,l=e.onClick,c=e.size,s=void 0===c?"medium":c,u=e.variant,d=void 0===u?"primary":u,f=e.type,p=void 0===f?"button":f,m=e.prefix,v=void 0===m?"":m,h=e.suffix,g=void 0===h?"":h,y=e.className,w=void 0===y?"":y,b=e.fullWidth,E=void 0!==b&&b,O=x(e,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth"]);return t.createElement("button",_({ref:n,type:p,disabled:a,className:D(T.button,(r={},r[w]=w,r[T[s]]=s,r[T[d]]=d,r[T.fullWidth]=E,r)),onClick:l},O),v&&t.createElement("span",{className:T.prefix},v),i,g&&t.createElement("span",{className:T.suffix},g))}));function S(){return S=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S.apply(this,arguments)}function A(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}function P(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function M(...e){return n(P(...e),e)}function I(e,t=[]){let n=[];const l=()=>{const t=n.map((e=>r(e)));return function(n){const r=(null==n?void 0:n[e])||t;return o((()=>({[`__scope${e}`]:{...n,[e]:r}})),[n,r])}};return l.scopeName=e,[function(t,l){const c=r(l),s=n.length;function u(t){const{scope:n,children:r,...i}=t,l=(null==n?void 0:n[e][s])||c,u=o((()=>i),Object.values(i));return a(l.Provider,{value:u},r)}return n=[...n,l],u.displayName=t+"Provider",[u,function(n,r){const o=(null==r?void 0:r[e][s])||c,a=i(o);if(a)return a;if(void 0!==l)return l;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},L(l,...t)]}function L(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const r=n.reduce(((t,{useScope:n,scopeName:r})=>({...t,...n(e)[`__scope${r}`]})),{});return o((()=>({[`__scope${t.scopeName}`]:r})),[r])}};return n.scopeName=t.scopeName,n}const N=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?l:()=>{},R=e["useId".toString()]||(()=>{});let H=0;function j(t){const[n,r]=e.useState(R());return N((()=>{t||r((e=>null!=e?e:String(H++)))}),[t]),t||(n?`radix-${n}`:"")}function Z(e){const t=c(e);return s((()=>{t.current=e})),o((()=>(...e)=>{var n;return null===(n=t.current)||void 0===n?void 0:n.call(t,...e)}),[])}function F({prop:e,defaultProp:t,onChange:r=(()=>{})}){const[o,a]=function({defaultProp:e,onChange:t}){const n=u(e),[r]=n,o=c(r),a=Z(t);return s((()=>{o.current!==r&&(a(r),o.current=r)}),[r,o,a]),n}({defaultProp:t,onChange:r}),i=void 0!==e,l=i?e:o,d=Z(r);return[l,n((t=>{if(i){const n="function"==typeof t?t(e):t;n!==e&&d(n)}else a(t)}),[i,e,a,d])]}const U=d(((e,t)=>{const{children:n,...r}=e,o=f.toArray(n),i=o.find(W);if(i){const e=i.props.children,n=o.map((t=>t===i?f.count(e)>1?f.only(null):p(e)?e.props.children:null:t));return a(B,S({},r,{ref:t}),p(e)?m(e,void 0,n):null)}return a(B,S({},r,{ref:t}),n)}));U.displayName="Slot";const B=d(((e,t)=>{const{children:n,...r}=e;return p(n)?m(n,{...z(r,n.props),ref:t?P(t,n.ref):n.ref}):f.count(n)>1?f.only(null):null}));B.displayName="SlotClone";const V=({children:e})=>a(v,null,e);function W(e){return p(e)&&e.type===V}function z(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=(...e)=>{a(...e),o(...e)}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}const K=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((e,t)=>{const n=d(((e,n)=>{const{asChild:r,...o}=e,i=r?U:t;return s((()=>{window[Symbol.for("radix-ui")]=!0}),[]),a(i,S({},o,{ref:n}))}));return n.displayName=`Primitive.${t}`,{...e,[t]:n}}),{});const $="dismissableLayer.update",q="dismissableLayer.pointerDownOutside",G="dismissableLayer.focusOutside";let X;const Y=r({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),J=d(((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:f,onDismiss:p,...m}=e,v=i(Y),[h,g]=u(null),y=null!==(n=null==h?void 0:h.ownerDocument)&&void 0!==n?n:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,w]=u({}),b=M(t,(e=>g(e))),_=Array.from(v.layers),[x]=[...v.layersWithOutsidePointerEventsDisabled].slice(-1),E=_.indexOf(x),O=h?_.indexOf(h):-1,C=v.layersWithOutsidePointerEventsDisabled.size>0,D=O>=E,T=function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e),r=c(!1),o=c((()=>{}));return s((()=>{const e=e=>{if(e.target&&!r.current){const i={originalEvent:e};function a(){ee(q,n,i,{discrete:!0})}"touch"===e.pointerType?(t.removeEventListener("click",o.current),o.current=a,t.addEventListener("click",o.current,{once:!0})):a()}r.current=!1},a=window.setTimeout((()=>{t.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",o.current)}}),[t,n]),{onPointerDownCapture:()=>r.current=!0}}((e=>{const t=e.target,n=[...v.branches].some((e=>e.contains(t)));D&&!n&&(null==l||l(e),null==f||f(e),e.defaultPrevented||null==p||p())}),y),k=function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e),r=c(!1);return s((()=>{const e=e=>{if(e.target&&!r.current){ee(G,n,{originalEvent:e},{discrete:!1})}};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)}),[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}((e=>{const t=e.target;[...v.branches].some((e=>e.contains(t)))||(null==d||d(e),null==f||f(e),e.defaultPrevented||null==p||p())}),y);return function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e);s((()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)}),[n,t])}((e=>{O===v.layers.size-1&&(null==o||o(e),!e.defaultPrevented&&p&&(e.preventDefault(),p()))}),y),s((()=>{if(h)return r&&(0===v.layersWithOutsidePointerEventsDisabled.size&&(X=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),v.layersWithOutsidePointerEventsDisabled.add(h)),v.layers.add(h),Q(),()=>{r&&1===v.layersWithOutsidePointerEventsDisabled.size&&(y.body.style.pointerEvents=X)}}),[h,y,r,v]),s((()=>()=>{h&&(v.layers.delete(h),v.layersWithOutsidePointerEventsDisabled.delete(h),Q())}),[h,v]),s((()=>{const e=()=>w({});return document.addEventListener($,e),()=>document.removeEventListener($,e)}),[]),a(K.div,S({},m,{ref:b,style:{pointerEvents:C?D?"auto":"none":void 0,...e.style},onFocusCapture:A(e.onFocusCapture,k.onFocusCapture),onBlurCapture:A(e.onBlurCapture,k.onBlurCapture),onPointerDownCapture:A(e.onPointerDownCapture,T.onPointerDownCapture)}))}));function Q(){const e=new CustomEvent($);document.dispatchEvent(e)}function ee(e,t,n,{discrete:r}){const o=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?function(e,t){e&&w((()=>e.dispatchEvent(t)))}(o,a):o.dispatchEvent(a)}const te="focusScope.autoFocusOnMount",ne="focusScope.autoFocusOnUnmount",re={bubbles:!1,cancelable:!0},oe=d(((e,t)=>{const{loop:r=!1,trapped:o=!1,onMountAutoFocus:i,onUnmountAutoFocus:l,...d}=e,[f,p]=u(null),m=Z(i),v=Z(l),h=c(null),g=M(t,(e=>p(e))),y=c({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s((()=>{if(o){function e(e){if(y.paused||!f)return;const t=e.target;f.contains(t)?h.current=t:ce(h.current,{select:!0})}function t(e){if(y.paused||!f)return;const t=e.relatedTarget;null!==t&&(f.contains(t)||ce(h.current,{select:!0}))}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const n=new MutationObserver((function(e){const t=document.activeElement;for(const n of e)n.removedNodes.length>0&&(null!=f&&f.contains(t)||ce(f))}));return f&&n.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}}),[o,f,y.paused]),s((()=>{if(f){se.add(y);const t=document.activeElement;if(!f.contains(t)){const n=new CustomEvent(te,re);f.addEventListener(te,m),f.dispatchEvent(n),n.defaultPrevented||(!function(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(ce(r,{select:t}),document.activeElement!==n)return}((e=ae(f),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&ce(f))}return()=>{f.removeEventListener(te,m),setTimeout((()=>{const e=new CustomEvent(ne,re);f.addEventListener(ne,v),f.dispatchEvent(e),e.defaultPrevented||ce(null!=t?t:document.body,{select:!0}),f.removeEventListener(ne,v),se.remove(y)}),0)}}var e}),[f,m,v,y]);const w=n((e=>{if(!r&&!o)return;if(y.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=document.activeElement;if(t&&n){const t=e.currentTarget,[o,a]=function(e){const t=ae(e),n=ie(t,e),r=ie(t.reverse(),e);return[n,r]}(t);o&&a?e.shiftKey||n!==a?e.shiftKey&&n===o&&(e.preventDefault(),r&&ce(a,{select:!0})):(e.preventDefault(),r&&ce(o,{select:!0})):n===t&&e.preventDefault()}}),[r,o,y.paused]);return a(K.div,S({tabIndex:-1},d,{ref:g,onKeyDown:w}))}));function ae(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ie(e,t){for(const n of e)if(!le(n,{upTo:t}))return n}function le(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function ce(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const se=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null==n||n.pause()),e=ue(e,t),e.unshift(t)},remove(t){var n;e=ue(e,t),null===(n=e[0])||void 0===n||n.resume()}}}();function ue(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}const de=d(((e,t)=>{var n;const{container:r=(null===globalThis||void 0===globalThis||null===(n=globalThis.document)||void 0===n?void 0:n.body),...o}=e;return r?y.createPortal(a(K.div,S({},o,{ref:t})),r):null}));const fe=e=>{const{present:t,children:r}=e,o=function(e){const[t,r]=u(),o=c({}),a=c(e),i=c("none"),l=e?"mounted":"unmounted",[d,f]=function(e,t){return h(((e,n)=>{const r=t[e][n];return null!=r?r:e}),e)}(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return s((()=>{const e=pe(o.current);i.current="mounted"===d?e:"none"}),[d]),N((()=>{const t=o.current,n=a.current;if(n!==e){const r=i.current,o=pe(t);if(e)f("MOUNT");else if("none"===o||"none"===(null==t?void 0:t.display))f("UNMOUNT");else{f(n&&r!==o?"ANIMATION_OUT":"UNMOUNT")}a.current=e}}),[e,f]),N((()=>{if(t){const e=e=>{const n=pe(o.current).includes(e.animationName);e.target===t&&n&&w((()=>f("ANIMATION_END")))},n=e=>{e.target===t&&(i.current=pe(o.current))};return t.addEventListener("animationstart",n),t.addEventListener("animationcancel",e),t.addEventListener("animationend",e),()=>{t.removeEventListener("animationstart",n),t.removeEventListener("animationcancel",e),t.removeEventListener("animationend",e)}}f("ANIMATION_END")}),[t,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:n((e=>{e&&(o.current=getComputedStyle(e)),r(e)}),[])}}(t),a="function"==typeof r?r({present:o.isPresent}):f.only(r),i=M(o.ref,a.ref);return"function"==typeof r||o.isPresent?m(a,{ref:i}):null};function pe(e){return(null==e?void 0:e.animationName)||"none"}fe.displayName="Presence";let me=0;function ve(){s((()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:he()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:he()),me++,()=>{1===me&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),me--}}),[])}function he(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var ge="right-scroll-bar-position",ye="width-before-scroll-bar";function we(e,t){return n=t||null,r=function(t){return e.forEach((function(e){return function(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}(e,t)}))},(o=u((function(){return{value:n,callback:r,facade:{get current(){return o.value},set current(e){var t=o.value;t!==e&&(o.value=e,o.callback(e,t))}}}}))[0]).callback=r,o.facade;var n,r,o}function be(e){return e}var _e=function(t){var n=t.sideCar,r=x(t,["sideCar"]);if(!n)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=n.read();if(!o)throw new Error("Sidecar medium not found");return e.createElement(o,_({},r))};_e.isSideCarExport=!0;var xe=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=be);var n=[],r=!1;return{read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var o=t(e,r);return n.push(o),function(){n=n.filter((function(e){return e!==o}))}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var o=n;n=[],o.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},i=function(){return Promise.resolve().then(a)};i(),n={push:function(e){t.push(e),i()},filter:function(e){return t=t.filter(e),n}}}}}(null);return t.options=_({async:!0,ssr:!1},e),t}(),Ee=function(){},Oe=e.forwardRef((function(t,n){var r=e.useRef(null),o=e.useState({onScrollCapture:Ee,onWheelCapture:Ee,onTouchMoveCapture:Ee}),a=o[0],i=o[1],l=t.forwardProps,c=t.children,s=t.className,u=t.removeScrollBar,d=t.enabled,f=t.shards,p=t.sideCar,m=t.noIsolation,v=t.inert,h=t.allowPinchZoom,g=t.as,y=void 0===g?"div":g,w=x(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),b=p,E=we([r,n]),O=_(_({},w),a);return e.createElement(e.Fragment,null,d&&e.createElement(b,{sideCar:xe,removeScrollBar:u,shards:f,noIsolation:m,inert:v,setCallbacks:i,allowPinchZoom:!!h,lockRef:r}),l?e.cloneElement(e.Children.only(c),_(_({},O),{ref:E})):e.createElement(y,_({},O,{className:s,ref:E}),c))}));Oe.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},Oe.classNames={fullWidth:ye,zeroRight:ge};function Ce(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var De=function(){var e=0,t=null;return{add:function(n){var r,o;0==e&&(t=Ce())&&(o=n,(r=t).styleSheet?r.styleSheet.cssText=o:r.appendChild(document.createTextNode(o)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){!--e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Te=function(){var t,n=(t=De(),function(n,r){e.useEffect((function(){return t.add(n),function(){t.remove()}}),[n&&r])});return function(e){var t=e.styles,r=e.dynamic;return n(t,r),null}},ke={left:0,top:0,right:0,gap:0},Se=function(e){return parseInt(e||"",10)||0},Ae=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return ke;var t=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[Se(n),Se(r),Se(o)]}(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Pe=Te(),Me=function(e,t,n,r){var o=e.left,a=e.top,i=e.right,l=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(l,"px ").concat(r,";\n }\n body {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(i,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(l,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(ge," {\n right: ").concat(l,"px ").concat(r,";\n }\n \n .").concat(ye," {\n margin-right: ").concat(l,"px ").concat(r,";\n }\n \n .").concat(ge," .").concat(ge," {\n right: 0 ").concat(r,";\n }\n \n .").concat(ye," .").concat(ye," {\n margin-right: 0 ").concat(r,";\n }\n \n body {\n ").concat("--removed-body-scroll-bar-size",": ").concat(l,"px;\n }\n")},Ie=function(t){var n=t.noRelative,r=t.noImportant,o=t.gapMode,a=void 0===o?"margin":o,i=e.useMemo((function(){return Ae(a)}),[a]);return e.createElement(Pe,{styles:Me(i,!n,a,r?"":"!important")})},Le=!1;if("undefined"!=typeof window)try{var Ne=Object.defineProperty({},"passive",{get:function(){return Le=!0,!0}});window.addEventListener("test",Ne,Ne),window.removeEventListener("test",Ne,Ne)}catch(e){Le=!1}var Re=!!Le&&{passive:!1},He=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===n[t])},je=function(e,t){var n=t;do{if("undefined"!=typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),Ze(e,n)){var r=Fe(e,n);if(r[1]>r[2])return!0}n=n.parentNode}while(n&&n!==document.body);return!1},Ze=function(e,t){return"v"===e?function(e){return He(e,"overflowY")}(t):function(e){return He(e,"overflowX")}(t)},Fe=function(e,t){return"v"===e?[(n=t).scrollTop,n.scrollHeight,n.clientHeight]:function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t);var n},Ue=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Be=function(e){return[e.deltaX,e.deltaY]},Ve=function(e){return e&&"current"in e?e.current:e},We=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},ze=0,Ke=[];var $e,qe=($e=function(t){var n=e.useRef([]),r=e.useRef([0,0]),o=e.useRef(),a=e.useState(ze++)[0],i=e.useState((function(){return Te()}))[0],l=e.useRef(t);e.useEffect((function(){l.current=t}),[t]),e.useEffect((function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(a));var e=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([t.lockRef.current],(t.shards||[]).map(Ve),!0).filter(Boolean);return e.forEach((function(e){return e.classList.add("allow-interactivity-".concat(a))})),function(){document.body.classList.remove("block-interactivity-".concat(a)),e.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(a))}))}}}),[t.inert,t.lockRef.current,t.shards]);var c=e.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!l.current.allowPinchZoom;var n,a=Ue(e),i=r.current,c="deltaX"in e?e.deltaX:i[0]-a[0],s="deltaY"in e?e.deltaY:i[1]-a[1],u=e.target,d=Math.abs(c)>Math.abs(s)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var f=je(d,u);if(!f)return!0;if(f?n=d:(n="v"===d?"h":"v",f=je(d,u)),!f)return!1;if(!o.current&&"changedTouches"in e&&(c||s)&&(o.current=n),!n)return!0;var p=o.current||n;return function(e,t,n,r,o){var a=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),i=a*r,l=n.target,c=t.contains(l),s=!1,u=i>0,d=0,f=0;do{var p=Fe(e,l),m=p[0],v=p[1]-p[2]-a*m;(m||v)&&Ze(e,l)&&(d+=v,f+=m),l=l.parentNode}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return(u&&(o&&0===d||!o&&i>d)||!u&&(o&&0===f||!o&&-i>f))&&(s=!0),s}(p,t,e,"h"===p?c:s,!0)}),[]),s=e.useCallback((function(e){var t=e;if(Ke.length&&Ke[Ke.length-1]===i){var r="deltaY"in t?Be(t):Ue(t),o=n.current.filter((function(e){return e.name===t.type&&e.target===t.target&&(n=e.delta,o=r,n[0]===o[0]&&n[1]===o[1]);var n,o}))[0];if(o&&o.should)t.cancelable&&t.preventDefault();else if(!o){var a=(l.current.shards||[]).map(Ve).filter(Boolean).filter((function(e){return e.contains(t.target)}));(a.length>0?c(t,a[0]):!l.current.noIsolation)&&t.cancelable&&t.preventDefault()}}}),[]),u=e.useCallback((function(e,t,r,o){var a={name:e,delta:t,target:r,should:o};n.current.push(a),setTimeout((function(){n.current=n.current.filter((function(e){return e!==a}))}),1)}),[]),d=e.useCallback((function(e){r.current=Ue(e),o.current=void 0}),[]),f=e.useCallback((function(e){u(e.type,Be(e),e.target,c(e,t.lockRef.current))}),[]),p=e.useCallback((function(e){u(e.type,Ue(e),e.target,c(e,t.lockRef.current))}),[]);e.useEffect((function(){return Ke.push(i),t.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",s,Re),document.addEventListener("touchmove",s,Re),document.addEventListener("touchstart",d,Re),function(){Ke=Ke.filter((function(e){return e!==i})),document.removeEventListener("wheel",s,Re),document.removeEventListener("touchmove",s,Re),document.removeEventListener("touchstart",d,Re)}}),[]);var m=t.removeScrollBar,v=t.inert;return e.createElement(e.Fragment,null,v?e.createElement(i,{styles:We(a)}):null,m?e.createElement(Ie,{gapMode:"margin"}):null)},xe.useMedium($e),_e),Ge=e.forwardRef((function(t,n){return e.createElement(Oe,_({},t,{ref:n,sideCar:qe}))}));Ge.classNames=Oe.classNames;var Xe=Ge,Ye=new WeakMap,Je=new WeakMap,Qe={},et=0,tt=function(e){return e&&(e.host||tt(e.parentNode))},nt=function(e,t,n,r){var o=function(e,t){return t.map((function(t){if(e.contains(t))return t;var n=tt(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);Qe[n]||(Qe[n]=new WeakMap);var a=Qe[n],i=[],l=new Set,c=new Set(o),s=function(e){e&&!l.has(e)&&(l.add(e),s(e.parentNode))};o.forEach(s);var u=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(l.has(e))u(e);else{var t=e.getAttribute(r),o=null!==t&&"false"!==t,c=(Ye.get(e)||0)+1,s=(a.get(e)||0)+1;Ye.set(e,c),a.set(e,s),i.push(e),1===c&&o&&Je.set(e,!0),1===s&&e.setAttribute(n,"true"),o||e.setAttribute(r,"true")}}))};return u(t),l.clear(),et++,function(){i.forEach((function(e){var t=Ye.get(e)-1,o=a.get(e)-1;Ye.set(e,t),a.set(e,o),t||(Je.has(e)||e.removeAttribute(r),Je.delete(e)),o||e.removeAttribute(n)})),--et||(Ye=new WeakMap,Ye=new WeakMap,Je=new WeakMap,Qe={})}},rt=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),nt(r,o,n,"aria-hidden")):function(){return null}};const ot="Dialog",[at,it]=I(ot),[lt,ct]=at(ot),st="DialogPortal",[ut,dt]=at(st,{forceMount:void 0}),ft="DialogOverlay",pt=d(((e,t)=>{const n=dt(ft,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=ct(ft,e.__scopeDialog);return i.modal?a(fe,{present:r||i.open},a(mt,S({},o,{ref:t}))):null})),mt=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct(ft,n);return a(Xe,{as:U,allowPinchZoom:!0,shards:[o.contentRef]},a(K.div,S({"data-state":Ot(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))})),vt="DialogContent",ht=d(((e,t)=>{const n=dt(vt,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=ct(vt,e.__scopeDialog);return a(fe,{present:r||i.open},i.modal?a(gt,S({},o,{ref:t})):a(yt,S({},o,{ref:t})))})),gt=d(((e,t)=>{const n=ct(vt,e.__scopeDialog),r=c(null),o=M(t,n.contentRef,r);return s((()=>{const e=r.current;if(e)return rt(e)}),[]),a(wt,S({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:A(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:A(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()})),onFocusOutside:A(e.onFocusOutside,(e=>e.preventDefault()))}))})),yt=d(((e,t)=>{const n=ct(vt,e.__scopeDialog),r=c(!1),o=c(!1);return a(wt,S({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var a,i;(null===(a=e.onCloseAutoFocus)||void 0===a||a.call(e,t),t.defaultPrevented)||(r.current||null===(i=n.triggerRef.current)||void 0===i||i.focus(),t.preventDefault());r.current=!1,o.current=!1},onInteractOutside:t=>{var a,i;null===(a=e.onInteractOutside)||void 0===a||a.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(o.current=!0));const l=t.target;(null===(i=n.triggerRef.current)||void 0===i?void 0:i.contains(l))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&o.current&&t.preventDefault()}}))})),wt=d(((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...l}=e,s=ct(vt,n),u=M(t,c(null));return ve(),a(v,null,a(oe,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},a(J,S({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Ot(s.open)},l,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)})),bt="DialogTitle",_t=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct(bt,n);return a(K.h2,S({id:o.titleId},r,{ref:t}))})),xt=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct("DialogDescription",n);return a(K.p,S({id:o.descriptionId},r,{ref:t}))})),Et=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct("DialogClose",n);return a(K.button,S({type:"button"},r,{ref:t,onClick:A(e.onClick,(()=>o.onOpenChange(!1)))}))}));function Ot(e){return e?"open":"closed"}const[Ct,Dt]=function(e,t){const n=r(t);function l(e){const{children:t,...r}=e,i=o((()=>r),Object.values(r));return a(n.Provider,{value:i},t)}return l.displayName=e+"Provider",[l,function(r){const o=i(n);if(o)return o;if(void 0!==t)return t;throw new Error(`\`${r}\` must be used within \`${e}\``)}]}("DialogTitleWarning",{contentName:vt,titleName:bt,docsSlug:"dialog"}),Tt=e=>{const{__scopeDialog:t,children:r,open:o,defaultOpen:i,onOpenChange:l,modal:s=!0}=e,u=c(null),d=c(null),[f=!1,p]=F({prop:o,defaultProp:i,onChange:l});return a(lt,{scope:t,triggerRef:u,contentRef:d,contentId:j(),titleId:j(),descriptionId:j(),open:f,onOpenChange:p,onOpenToggle:n((()=>p((e=>!e))),[p]),modal:s},r)},kt=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=ct(st,t);return a(ut,{scope:t,forceMount:n},f.map(r,(e=>a(fe,{present:n||i.open},a(de,{asChild:!0,container:o},e)))))},St=pt,At=ht,Pt=_t,Mt=xt,It=Et;var Lt,Nt,Rt="Modal-modules_overlay__V-vTn",Ht="Modal-modules_header__-dxAm",jt="Modal-modules_close__CwIjR",Zt="Modal-modules_title__3ehge",Ft="Modal-modules_titleCentered__Qqy8u",Ut="Modal-modules_content__sK9HS",Bt="Modal-modules_body__8Khpx";function Vt(){return Vt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vt.apply(this,arguments)}var Wt=function(t){return e.createElement("svg",Vt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Lt||(Lt=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Nt||(Nt=e.createElement("g",{mask:"url(#close_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))};function zt(e){var n,r,o=e.children,a=e.open,i=e.onOpenChange,l=e.title,c=e.hideCloseButton,s=void 0!==c&&c,u=e.contentClassName,d=void 0===u?"":u,f=e.maxHeight,p=void 0===f?"auto":f,m=e.width,v=void 0===m?"432px":m;return t.createElement(Tt,{open:a,onOpenChange:i},t.createElement(kt,null,t.createElement(St,{className:Rt},t.createElement(At,{className:D(Ut,(n={},n[d]=!!d,n)),style:{maxHeight:p,width:v}},t.createElement("div",{className:Ht},l&&t.createElement(Pt,{className:D(Zt,(r={},r[Ft]=!!s,r))},l),!s&&t.createElement(It,{className:jt},t.createElement(Wt,null))),t.createElement("div",{className:Bt},o)))))}function Kt(e){const n=e+"CollectionProvider",[r,o]=I(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),l=e+"CollectionSlot",c=e+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:e=>{const{scope:n,children:r}=e,o=t.useRef(null),i=t.useRef(new Map).current;return t.createElement(a,{scope:n,itemMap:i,collectionRef:o},r)},Slot:t.forwardRef(((e,n)=>{const{scope:r,children:o}=e,a=M(n,i(l,r).collectionRef);return t.createElement(U,{ref:a},o)})),ItemSlot:t.forwardRef(((e,n)=>{const{scope:r,children:o,...a}=e,l=t.useRef(null),u=M(n,l),d=i(c,r);return t.useEffect((()=>(d.itemMap.set(l,{ref:l,...a}),()=>{d.itemMap.delete(l)}))),t.createElement(U,{[s]:"",ref:u},o)}))},function(n){const r=i(e+"CollectionConsumer",n);return t.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const $t=r(void 0);function qt(e){const t=i($t);return e||t||"ltr"}const Gt="rovingFocusGroup.onEntryFocus",Xt={bubbles:!1,cancelable:!0},Yt="RovingFocusGroup",[Jt,Qt,en]=Kt(Yt),[tn,nn]=I(Yt,[en]),[rn,on]=tn(Yt),an=d(((e,t)=>a(Jt.Provider,{scope:e.__scopeRovingFocusGroup},a(Jt.Slot,{scope:e.__scopeRovingFocusGroup},a(ln,S({},e,{ref:t})))))),ln=d(((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:i=!1,dir:l,currentTabStopId:d,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:p,onEntryFocus:m,...v}=e,h=c(null),g=M(t,h),y=qt(l),[w=null,b]=F({prop:d,defaultProp:f,onChange:p}),[_,x]=u(!1),E=Z(m),O=Qt(r),C=c(!1),[D,T]=u(0);return s((()=>{const e=h.current;if(e)return e.addEventListener(Gt,E),()=>e.removeEventListener(Gt,E)}),[E]),a(rn,{scope:r,orientation:o,dir:y,loop:i,currentTabStopId:w,onItemFocus:n((e=>b(e)),[b]),onItemShiftTab:n((()=>x(!0)),[]),onFocusableItemAdd:n((()=>T((e=>e+1))),[]),onFocusableItemRemove:n((()=>T((e=>e-1))),[])},a(K.div,S({tabIndex:_||0===D?-1:0,"data-orientation":o},v,{ref:g,style:{outline:"none",...e.style},onMouseDown:A(e.onMouseDown,(()=>{C.current=!0})),onFocus:A(e.onFocus,(e=>{const t=!C.current;if(e.target===e.currentTarget&&t&&!_){const t=new CustomEvent(Gt,Xt);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=O().filter((e=>e.focusable));un([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}C.current=!1})),onBlur:A(e.onBlur,(()=>x(!1)))})))})),cn=d(((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...l}=e,c=j(),u=i||c,d=on("RovingFocusGroupItem",n),f=d.currentTabStopId===u,p=Qt(n),{onFocusableItemAdd:m,onFocusableItemRemove:v}=d;return s((()=>{if(r)return m(),()=>v()}),[r,m,v]),a(Jt.ItemSlot,{scope:n,id:u,focusable:r,active:o},a(K.span,S({tabIndex:f?0:-1,"data-orientation":d.orientation},l,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{r?d.onItemFocus(u):e.preventDefault()})),onFocus:A(e.onFocus,(()=>d.onItemFocus(u))),onKeyDown:A(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void d.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:sn[r]}(e,d.orientation,d.dir);if(void 0!==t){e.preventDefault();let o=p().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=d.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>un(o)))}var n,r}))})))})),sn={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function un(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const dn=an,fn=cn,pn="Tabs",[mn,vn]=I(pn,[nn]),hn=nn(),[gn,yn]=mn(pn);function wn(e,t){return`${e}-trigger-${t}`}function bn(e,t){return`${e}-content-${t}`}const _n=d(((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:l="horizontal",dir:c,activationMode:s="automatic",...u}=e,d=qt(c),[f,p]=F({prop:r,onChange:o,defaultProp:i});return a(gn,{scope:n,baseId:j(),value:f,onValueChange:p,orientation:l,dir:d,activationMode:s},a(K.div,S({dir:d,"data-orientation":l},u,{ref:t})))})),xn=d(((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=yn("TabsList",n),l=hn(n);return a(dn,S({asChild:!0},l,{orientation:i.orientation,dir:i.dir,loop:r}),a(K.div,S({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))})),En=d(((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,l=yn("TabsTrigger",n),c=hn(n),s=wn(l.baseId,r),u=bn(l.baseId,r),d=r===l.value;return a(fn,S({asChild:!0},c,{focusable:!o,active:d}),a(K.button,S({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{o||0!==e.button||!1!==e.ctrlKey?e.preventDefault():l.onValueChange(r)})),onKeyDown:A(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&l.onValueChange(r)})),onFocus:A(e.onFocus,(()=>{const e="manual"!==l.activationMode;d||o||!e||l.onValueChange(r)}))})))})),On=d(((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...l}=e,u=yn("TabsContent",n),d=wn(u.baseId,r),f=bn(u.baseId,r),p=r===u.value,m=c(p);return s((()=>{const e=requestAnimationFrame((()=>m.current=!1));return()=>cancelAnimationFrame(e)}),[]),a(fe,{present:o||p},(({present:n})=>a(K.div,S({"data-state":p?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!n,id:f,tabIndex:0},l,{ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0}}),n&&i)))}));var Cn="Tabs-modules_root__TvYE1",Dn="Tabs-modules_list__G3KVd",Tn="Tabs-modules_tab__-FuG6",kn="Tabs-modules_content__X0OLh";function Sn(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=x(e,["children","className"]);return t.createElement(_n,_({},i,{className:D(Cn,(n={},n[a]=a,n))}),r)}function An(e){var n,r=e.children,o=e.className,a=void 0===o?"":o;return t.createElement(xn,{className:D(Dn,(n={},n[a]=a,n))},r)}function Pn(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=x(e,["children","className"]);return t.createElement(En,_({},i,{className:D(Tn,(n={},n[a]=a,n))}),r)}function Mn(e){var n,r=e.children,o=e.value,a=e.className,i=void 0===a?"":a;return t.createElement(On,{value:o,className:D(kn,(n={},n[i]=i,n))},r)}function In(e){const t=c({value:e,previous:e});return o((()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous)),[e])}function Ln(e){const[t,n]=u(void 0);return N((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let o,a;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=e.offsetWidth,a=e.offsetHeight;n({width:o,height:a})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}const Nn="Switch",[Rn,Hn]=I(Nn),[jn,Zn]=Rn(Nn),Fn=d(((e,t)=>{const{__scopeSwitch:n,name:r,checked:o,defaultChecked:i,required:l,disabled:s,value:d="on",onCheckedChange:f,...p}=e,[m,v]=u(null),h=M(t,(e=>v(e))),g=c(!1),y=!m||Boolean(m.closest("form")),[w=!1,b]=F({prop:o,defaultProp:i,onChange:f});return a(jn,{scope:n,checked:w,disabled:s},a(K.button,S({type:"button",role:"switch","aria-checked":w,"aria-required":l,"data-state":Bn(w),"data-disabled":s?"":void 0,disabled:s,value:d},p,{ref:h,onClick:A(e.onClick,(e=>{b((e=>!e)),y&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),y&&a(Un,{control:m,bubbles:!g.current,name:r,value:d,checked:w,required:l,disabled:s,style:{transform:"translateX(-100%)"}}))})),Un=e=>{const{control:t,checked:n,bubbles:r=!0,...o}=e,i=c(null),l=In(n),u=Ln(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),a("input",S({type:"checkbox","aria-hidden":!0,defaultChecked:n},o,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Bn(e){return e?"checked":"unchecked"}const Vn=Fn,Wn=d(((e,t)=>{const{__scopeSwitch:n,...r}=e,o=Zn("SwitchThumb",n);return a(K.span,S({"data-state":Bn(o.checked),"data-disabled":o.disabled?"":void 0},r,{ref:t}))}));var zn="Switch-modules_root__V5S6a",Kn="Switch-modules_thumb__PZ-lR";function $n(e){var n,r=e.className,o=void 0===r?"":r,a=e.id,i=void 0===a?"":a,l=e.disabled,c=void 0!==l&&l,s=e.required,u=void 0!==s&&s,d=e.name,f=x(e,["className","id","disabled","required","name"]);return t.createElement(Vn,_({className:D(zn,(n={},n[o]=o,n)),disabled:c,required:u,name:d,id:i||d},f),t.createElement(Wn,{className:Kn}))}function qn(e){return e.split("-")[1]}function Gn(e){return"y"===e?"height":"width"}function Xn(e){return e.split("-")[0]}function Yn(e){return["top","bottom"].includes(Xn(e))?"x":"y"}function Jn(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=Yn(t),c=Gn(l),s=r[c]/2-o[c]/2,u="x"===l;let d;switch(Xn(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:i};break;case"left":d={x:r.x-o.width,y:i};break;default:d={x:r.x,y:r.y}}switch(qn(t)){case"start":d[l]-=s*(n&&u?-1:1);break;case"end":d[l]+=s*(n&&u?-1:1)}return d}function Qn(e,t){return"function"==typeof e?e(t):e}function er(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function tr(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function nr(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:i,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=Qn(t,e),m=er(p),v=l[f?"floating"===d?"reference":"floating":d],h=tr(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...i.floating,x:r,y:o}:i.reference,y=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),w=await(null==a.isElement?void 0:a.isElement(y))&&await(null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},b=tr(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:y,strategy:c}):g);return{top:(h.top-b.top+m.top)/w.y,bottom:(b.bottom-h.bottom+m.bottom)/w.y,left:(h.left-b.left+m.left)/w.x,right:(b.right-h.right+m.right)/w.x}}const rr=Math.min,or=Math.max;function ar(e,t,n){return or(e,rr(t,n))}const ir=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:l}=t,{element:c,padding:s=0}=Qn(e,t)||{};if(null==c)return{};const u=er(s),d={x:n,y:r},f=Yn(o),p=Gn(f),m=await i.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",y=v?"clientHeight":"clientWidth",w=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],_=await(null==i.getOffsetParent?void 0:i.getOffsetParent(c));let x=_?_[y]:0;x&&await(null==i.isElement?void 0:i.isElement(_))||(x=l.floating[y]||a.floating[p]);const E=w/2-b/2,O=x/2-m[p]/2-1,C=rr(u[h],O),D=rr(u[g],O),T=C,k=x-m[p]-D,S=x/2-m[p]/2+E,A=ar(T,S,k),P=null!=qn(o)&&S!=A&&a.reference[p]/2-(S<T?C:D)-m[p]/2<0;return{[f]:d[f]-(P?S<T?T-S:k-S:0),data:{[f]:A,centerOffset:S-A}}}}),lr=["top","right","bottom","left"],cr={left:"right",right:"left",bottom:"top",top:"bottom"};function sr(e){return e.replace(/left|right|bottom|top/g,(e=>cr[e]))}const ur={start:"end",end:"start"};function dr(e){return e.replace(/start|end/g,(e=>ur[e]))}const fr=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:i,platform:l,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=Qn(e,t),h=Xn(r),g=Xn(i)===i,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=d||(g||!m?[sr(i)]:function(e){const t=sr(e);return[dr(e),t,dr(t)]}(i));d||"none"===p||w.push(...function(e,t,n,r){const o=qn(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}(Xn(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(dr)))),a}(i,m,p,y));const b=[i,...w],_=await nr(t,v),x=[];let E=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&x.push(_[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=qn(e),o=Yn(e),a=Gn(o);let i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=sr(i)),{main:i,cross:sr(i)}}(r,a,y);x.push(_[e],_[t])}if(E=[...E,{placement:r,overflows:x}],!x.every((e=>e<=0))){var O,C;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:E},reset:{placement:t}};let n=null==(C=E.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:C.placement;if(!n)switch(f){case"bestFit":{var D;const e=null==(D=E.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:D[0];e&&(n=e);break}case"initialPlacement":n=i}if(r!==n)return{reset:{placement:n}}}return{}}}};function pr(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function mr(e){return lr.some((t=>e[t]>=0))}const vr=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=Qn(e,t);switch(r){case"referenceHidden":{const e=pr(await nr(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:mr(e)}}}case"escaped":{const e=pr(await nr(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:mr(e)}}}default:return{}}}}};const hr=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),i=Xn(n),l=qn(n),c="x"===Yn(n),s=["left","top"].includes(i)?-1:1,u=a&&c?-1:1,d=Qn(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return l&&"number"==typeof m&&(p="end"===l?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function gr(e){return"x"===e?"y":"x"}const yr=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=Qn(e,t),s={x:n,y:r},u=await nr(t,c),d=Yn(Xn(o)),f=gr(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=ar(p+u["y"===d?"top":"left"],p,p-u[e])}if(i){const e="y"===f?"bottom":"right";m=ar(m+u["y"===f?"top":"left"],m,m-u[e])}const v=l.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},wr=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:i}=t,{offset:l=0,mainAxis:c=!0,crossAxis:s=!0}=Qn(e,t),u={x:n,y:r},d=Yn(o),f=gr(d);let p=u[d],m=u[f];const v=Qn(l,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,y;const e="y"===d?"width":"height",t=["top","left"].includes(Xn(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=i.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(y=i.offset)?void 0:y[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},br=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:i=(()=>{}),...l}=Qn(e,t),c=await nr(t,l),s=Xn(n),u=qn(n),d="x"===Yn(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],y=!t.middlewareData.shift;let w=h,b=g;if(d){const e=f-c.left-c.right;b=u||y?rr(g,e):e}else{const e=p-c.top-c.bottom;w=u||y?rr(h,e):e}if(y&&!u){const e=or(c.left,0),t=or(c.right,0),n=or(c.top,0),r=or(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:or(c.left,c.right)):w=p-2*(0!==n||0!==r?n+r:or(c.top,c.bottom))}await i({...t,availableWidth:b,availableHeight:w});const _=await o.getDimensions(a.floating);return f!==_.width||p!==_.height?{reset:{rects:!0}}:{}}}};function _r(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function xr(e){return _r(e).getComputedStyle(e)}function Er(e){return e instanceof _r(e).Node}function Or(e){return Er(e)?(e.nodeName||"").toLowerCase():""}function Cr(e){return e instanceof _r(e).HTMLElement}function Dr(e){return e instanceof _r(e).Element}function Tr(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof _r(e).ShadowRoot||e instanceof ShadowRoot}function kr(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=xr(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Sr(e){return["table","td","th"].includes(Or(e))}function Ar(e){const t=Pr(),n=xr(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function Pr(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Mr(e){return["html","body","#document"].includes(Or(e))}const Ir=Math.min,Lr=Math.max,Nr=Math.round;function Rr(e){const t=xr(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Cr(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Nr(n)!==a||Nr(r)!==i;return l&&(n=a,r=i),{width:n,height:r,fallback:l}}function Hr(e){return Dr(e)?e:e.contextElement}const jr={x:1,y:1};function Zr(e){const t=Hr(e);if(!Cr(t))return jr;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Rr(t);let i=(a?Nr(n.width):n.width)/r,l=(a?Nr(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Fr={x:0,y:0};function Ur(e,t,n){var r,o;if(void 0===t&&(t=!0),!Pr())return Fr;const a=e?_r(e):window;return!n||t&&n!==a?Fr:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Br(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=Hr(e);let i=jr;t&&(r?Dr(r)&&(i=Zr(r)):i=Zr(e));const l=Ur(a,n,r);let c=(o.left+l.x)/i.x,s=(o.top+l.y)/i.y,u=o.width/i.x,d=o.height/i.y;if(a){const e=_r(a),t=r&&Dr(r)?_r(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=Zr(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=_r(n).frameElement}}return tr({width:u,height:d,x:c,y:s})}function Vr(e){return((Er(e)?e.ownerDocument:e.document)||window.document).documentElement}function Wr(e){return Dr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function zr(e){return Br(Vr(e)).left+Wr(e).scrollLeft}function Kr(e){if("html"===Or(e))return e;const t=e.assignedSlot||e.parentNode||Tr(e)&&e.host||Vr(e);return Tr(t)?t.host:t}function $r(e){const t=Kr(e);return Mr(t)?t.ownerDocument.body:Cr(t)&&kr(t)?t:$r(t)}function qr(e,t){var n;void 0===t&&(t=[]);const r=$r(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=_r(r);return o?t.concat(a,a.visualViewport||[],kr(r)?r:[]):t.concat(r,qr(r))}function Gr(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=_r(e),r=Vr(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,l=0,c=0;if(o){a=o.width,i=o.height;const e=Pr();(!e||e&&"fixed"===t)&&(l=o.offsetLeft,c=o.offsetTop)}return{width:a,height:i,x:l,y:c}}(e,n);else if("document"===t)r=function(e){const t=Vr(e),n=Wr(e),r=e.ownerDocument.body,o=Lr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=Lr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+zr(e);const l=-n.scrollTop;return"rtl"===xr(r).direction&&(i+=Lr(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(Vr(e));else if(Dr(t))r=function(e,t){const n=Br(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Cr(e)?Zr(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ur(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return tr(r)}function Xr(e,t){const n=Kr(e);return!(n===t||!Dr(n)||Mr(n))&&("fixed"===xr(n).position||Xr(n,t))}function Yr(e,t){return Cr(e)&&"fixed"!==xr(e).position?t?t(e):e.offsetParent:null}function Jr(e,t){const n=_r(e);if(!Cr(e))return n;let r=Yr(e,t);for(;r&&Sr(r)&&"static"===xr(r).position;)r=Yr(r,t);return r&&("html"===Or(r)||"body"===Or(r)&&"static"===xr(r).position&&!Ar(r))?n:r||function(e){let t=Kr(e);for(;Cr(t)&&!Mr(t);){if(Ar(t))return t;t=Kr(t)}return null}(e)||n}function Qr(e,t,n){const r=Cr(t),o=Vr(t),a="fixed"===n,i=Br(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==Or(t)||kr(o))&&(l=Wr(t)),Cr(t)){const e=Br(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=zr(o));return{x:i.left+l.scrollLeft-c.x,y:i.top+l.scrollTop-c.y,width:i.width,height:i.height}}const eo={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=qr(e).filter((e=>Dr(e)&&"body"!==Or(e))),o=null;const a="fixed"===xr(e).position;let i=a?Kr(e):e;for(;Dr(i)&&!Mr(i);){const t=xr(i),n=Ar(i);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||kr(i)&&!n&&Xr(e,i))?r=r.filter((e=>e!==i)):o=t,i=Kr(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce(((e,n)=>{const r=Gr(t,n,o);return e.top=Lr(r.top,e.top),e.right=Ir(r.right,e.right),e.bottom=Ir(r.bottom,e.bottom),e.left=Lr(r.left,e.left),e}),Gr(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Cr(n),a=Vr(n);if(n===a)return t;let i={scrollLeft:0,scrollTop:0},l={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==Or(n)||kr(a))&&(i=Wr(n)),Cr(n))){const e=Br(n);l=Zr(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+c.x,y:t.y*l.y-i.scrollTop*l.y+c.y}},isElement:Dr,getDimensions:function(e){return Rr(e)},getOffsetParent:Jr,getDocumentElement:Vr,getScale:Zr,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Jr,a=this.getDimensions;return{reference:Qr(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===xr(e).direction};function to(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=!0,animationFrame:l=!1}=r,c=o||a?[...Dr(e)?qr(e):e.contextElement?qr(e.contextElement):[],...qr(t)]:[];c.forEach((e=>{const t=!Dr(e)&&e.toString().includes("V");!o||l&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;i&&(u=new ResizeObserver((()=>{n()})),Dr(e)&&!l&&u.observe(e),Dr(e)||!e.contextElement||l||u.observe(e.contextElement),u.observe(t));let d=l?Br(e):null;return l&&function t(){const r=Br(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,l&&cancelAnimationFrame(s)}}const no=(e,t,n)=>{const r=new Map,o={platform:eo,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,l=a.filter(Boolean),c=await(null==i.isRTL?void 0:i.isRTL(t));let s=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Jn(s,r,c),f=r,p={},m=0;for(let n=0;n<l.length;n++){const{name:a,fn:v}=l[n],{x:h,y:g,data:y,reset:w}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:i,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...y}},w&&m<=50&&(m++,"object"==typeof w&&(w.placement&&(f=w.placement),w.rects&&(s=!0===w.rects?await i.getElementRects({reference:e,floating:t,strategy:o}):w.rects),({x:u,y:d}=Jn(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},ro=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?ir({element:n.current,padding:r}).fn(t):{}:n?ir({element:n,padding:r}).fn(t):{};var o}});var oo="undefined"!=typeof document?l:s;function ao(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!ao(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!ao(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function io(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function lo(e,t){const n=io(e);return Math.round(t*n)/n}function co(t){const n=e.useRef(t);return oo((()=>{n.current=t})),n}const so=d(((e,t)=>{const{children:n,width:r=10,height:o=5,...i}=e;return a(K.svg,S({},i,{ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),e.asChild?n:a("polygon",{points:"0,0 30,0 15,10"}))})),uo="Popper",[fo,po]=I(uo),[mo,vo]=fo(uo),ho=d(((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=vo("PopperAnchor",n),l=c(null),u=M(t,l);return s((()=>{i.onAnchorChange((null==r?void 0:r.current)||l.current)})),r?null:a(K.div,S({},o,{ref:u}))})),go="PopperContent",[yo,wo]=fo(go),bo=d(((t,n)=>{var r,o,i,l,c,s,d,f;const{__scopePopper:p,side:m="bottom",sideOffset:v=0,align:h="center",alignOffset:y=0,arrowPadding:w=0,collisionBoundary:b=[],collisionPadding:_=0,sticky:x="partial",hideWhenDetached:E=!1,avoidCollisions:O=!0,onPlaced:C,...D}=t,T=vo(go,p),[k,A]=u(null),P=M(n,(e=>A(e))),[I,L]=u(null),R=Ln(I),H=null!==(r=null==R?void 0:R.width)&&void 0!==r?r:0,j=null!==(o=null==R?void 0:R.height)&&void 0!==o?o:0,F=m+("center"!==h?"-"+h:""),U="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},B=Array.isArray(b)?b:[b],V=B.length>0,W={padding:U,boundary:B.filter(xo),altBoundary:V},{refs:z,floatingStyles:$,placement:q,isPositioned:G,middlewareData:X}=function(t){void 0===t&&(t={});const{placement:n="bottom",strategy:r="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:l}={},transform:c=!0,whileElementsMounted:s,open:u}=t,[d,f]=e.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[p,m]=e.useState(o);ao(p,o)||m(o);const[v,h]=e.useState(null),[y,w]=e.useState(null),b=e.useCallback((e=>{e!=O.current&&(O.current=e,h(e))}),[h]),_=e.useCallback((e=>{e!==C.current&&(C.current=e,w(e))}),[w]),x=i||v,E=l||y,O=e.useRef(null),C=e.useRef(null),D=e.useRef(d),T=co(s),k=co(a),S=e.useCallback((()=>{if(!O.current||!C.current)return;const e={placement:n,strategy:r,middleware:p};k.current&&(e.platform=k.current),no(O.current,C.current,e).then((e=>{const t={...e,isPositioned:!0};A.current&&!ao(D.current,t)&&(D.current=t,g.flushSync((()=>{f(t)})))}))}),[p,n,r,k]);oo((()=>{!1===u&&D.current.isPositioned&&(D.current.isPositioned=!1,f((e=>({...e,isPositioned:!1}))))}),[u]);const A=e.useRef(!1);oo((()=>(A.current=!0,()=>{A.current=!1})),[]),oo((()=>{if(x&&(O.current=x),E&&(C.current=E),x&&E){if(T.current)return T.current(x,E,S);S()}}),[x,E,S,T]);const P=e.useMemo((()=>({reference:O,floating:C,setReference:b,setFloating:_})),[b,_]),M=e.useMemo((()=>({reference:x,floating:E})),[x,E]),I=e.useMemo((()=>{const e={position:r,left:0,top:0};if(!M.floating)return e;const t=lo(M.floating,d.x),n=lo(M.floating,d.y);return c?{...e,transform:"translate("+t+"px, "+n+"px)",...io(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,c,M.floating,d.x,d.y]);return e.useMemo((()=>({...d,update:S,refs:P,elements:M,floatingStyles:I})),[d,S,P,M,I])}({strategy:"fixed",placement:F,whileElementsMounted:to,elements:{reference:T.anchor},middleware:[hr({mainAxis:v+j,alignmentAxis:y}),O&&yr({mainAxis:!0,crossAxis:!1,limiter:"partial"===x?wr():void 0,...W}),O&&fr({...W}),br({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,i=e.floating.style;i.setProperty("--radix-popper-available-width",`${n}px`),i.setProperty("--radix-popper-available-height",`${r}px`),i.setProperty("--radix-popper-anchor-width",`${o}px`),i.setProperty("--radix-popper-anchor-height",`${a}px`)}}),I&&ro({element:I,padding:w}),Eo({arrowWidth:H,arrowHeight:j}),E&&vr({strategy:"referenceHidden"})]}),[Y,J]=Oo(q),Q=Z(C);N((()=>{G&&(null==Q||Q())}),[G,Q]);const ee=null===(i=X.arrow)||void 0===i?void 0:i.x,te=null===(l=X.arrow)||void 0===l?void 0:l.y,ne=0!==(null===(c=X.arrow)||void 0===c?void 0:c.centerOffset),[re,oe]=u();return N((()=>{k&&oe(window.getComputedStyle(k).zIndex)}),[k]),a("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:G?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:re,"--radix-popper-transform-origin":[null===(s=X.transformOrigin)||void 0===s?void 0:s.x,null===(d=X.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},a(yo,{scope:p,placedSide:Y,onArrowChange:L,arrowX:ee,arrowY:te,shouldHideArrow:ne},a(K.div,S({"data-side":Y,"data-align":J},D,{ref:P,style:{...D.style,animation:G?void 0:"none",opacity:null!==(f=X.hide)&&void 0!==f&&f.referenceHidden?0:void 0}}))))})),_o={top:"bottom",right:"left",bottom:"top",left:"right"};function xo(e){return null!==e}const Eo=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,i;const{placement:l,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=Oo(l),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(i=s.arrow)||void 0===i?void 0:i.y)&&void 0!==a?a:0)+f/2;let y="",w="";return"bottom"===p?(y=u?v:`${h}px`,w=-f+"px"):"top"===p?(y=u?v:`${h}px`,w=`${c.floating.height+f}px`):"right"===p?(y=-f+"px",w=u?v:`${g}px`):"left"===p&&(y=`${c.floating.width+f}px`,w=u?v:`${g}px`),{data:{x:y,y:w}}}});function Oo(e){const[t,n="center"]=e.split("-");return[t,n]}const Co=e=>{const{__scopePopper:t,children:n}=e,[r,o]=u(null);return a(mo,{scope:t,anchor:r,onAnchorChange:o},n)},Do=ho,To=bo,ko=d((function(e,t){const{__scopePopper:n,...r}=e,o=wo("PopperArrow",n),i=_o[o.placedSide];return a("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0}},a(so,S({},r,{ref:t,style:{...r.style,display:"block"}})))})),So=d(((e,t)=>a(K.span,S({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})))),Ao=So,[Po,Mo]=I("Tooltip",[po]),Io=po(),Lo=700,No="tooltip.open",[Ro,Ho]=Po("TooltipProvider"),jo="Tooltip",[Zo,Fo]=Po(jo),Uo="TooltipTrigger",Bo=d(((e,t)=>{const{__scopeTooltip:r,...o}=e,i=Fo(Uo,r),l=Ho(Uo,r),u=Io(r),d=M(t,c(null),i.onTriggerChange),f=c(!1),p=c(!1),m=n((()=>f.current=!1),[]);return s((()=>()=>document.removeEventListener("pointerup",m)),[m]),a(Do,S({asChild:!0},u),a(K.button,S({"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute},o,{ref:d,onPointerMove:A(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(p.current||l.isPointerInTransitRef.current||(i.onTriggerEnter(),p.current=!0))})),onPointerLeave:A(e.onPointerLeave,(()=>{i.onTriggerLeave(),p.current=!1})),onPointerDown:A(e.onPointerDown,(()=>{f.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:A(e.onFocus,(()=>{f.current||i.onOpen()})),onBlur:A(e.onBlur,i.onClose),onClick:A(e.onClick,i.onClose)})))})),[Vo,Wo]=Po("TooltipPortal",{forceMount:void 0}),zo="TooltipContent",Ko=d(((e,t)=>{const n=Wo(zo,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...i}=e,l=Fo(zo,e.__scopeTooltip);return a(fe,{present:r||l.open},l.disableHoverableContent?a(Xo,S({side:o},i,{ref:t})):a($o,S({side:o},i,{ref:t})))})),$o=d(((e,t)=>{const r=Fo(zo,e.__scopeTooltip),o=Ho(zo,e.__scopeTooltip),i=c(null),l=M(t,i),[d,f]=u(null),{trigger:p,onClose:m}=r,v=i.current,{onPointerInTransitChange:h}=o,g=n((()=>{f(null),h(!1)}),[h]),y=n(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);f(a),h(!0)}),[h]);return s((()=>()=>g()),[g]),s((()=>{if(p&&v){const e=e=>y(e,v),t=e=>y(e,p);return p.addEventListener("pointerleave",e),v.addEventListener("pointerleave",t),()=>{p.removeEventListener("pointerleave",e),v.removeEventListener("pointerleave",t)}}}),[p,v,y,g]),s((()=>{if(d){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==p?void 0:p.contains(t))||(null==v?void 0:v.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const i=t[e].x,l=t[e].y,c=t[a].x,s=t[a].y;l>r!=s>r&&n<(c-i)*(r-l)/(s-l)+i&&(o=!o)}return o}(n,d);r?g():o&&(g(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[p,v,d,m,g]),a(Xo,S({},e,{ref:l}))})),[qo,Go]=Po(jo,{isInside:!1}),Xo=d(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":o,onEscapeKeyDown:i,onPointerDownOutside:l,...c}=e,u=Fo(zo,n),d=Io(n),{onClose:f}=u;return s((()=>(document.addEventListener(No,f),()=>document.removeEventListener(No,f))),[f]),s((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,f]),a(J,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:f},a(To,S({"data-state":u.stateAttribute},d,c,{ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),a(V,null,r),a(qo,{scope:n,isInside:!0},a(Ao,{id:u.contentId,role:"tooltip"},o||r))))}));const Yo=e=>{const{__scopeTooltip:t,delayDuration:r=Lo,skipDelayDuration:o=300,disableHoverableContent:i=!1,children:l}=e,[d,f]=u(!0),p=c(!1),m=c(0);return s((()=>{const e=m.current;return()=>window.clearTimeout(e)}),[]),a(Ro,{scope:t,isOpenDelayed:d,delayDuration:r,onOpen:n((()=>{window.clearTimeout(m.current),f(!1)}),[]),onClose:n((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>f(!0)),o)}),[o]),isPointerInTransitRef:p,onPointerInTransitChange:n((e=>{p.current=e}),[]),disableHoverableContent:i},l)},Jo=e=>{const{__scopeTooltip:t,children:r,open:i,defaultOpen:l=!1,onOpenChange:d,disableHoverableContent:f,delayDuration:p}=e,m=Ho(jo,e.__scopeTooltip),v=Io(t),[h,g]=u(null),y=j(),w=c(0),b=null!=f?f:m.disableHoverableContent,_=null!=p?p:m.delayDuration,x=c(!1),[E=!1,O]=F({prop:i,defaultProp:l,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(No))):m.onClose(),null==d||d(e)}}),C=o((()=>E?x.current?"delayed-open":"instant-open":"closed"),[E]),D=n((()=>{window.clearTimeout(w.current),x.current=!1,O(!0)}),[O]),T=n((()=>{window.clearTimeout(w.current),O(!1)}),[O]),k=n((()=>{window.clearTimeout(w.current),w.current=window.setTimeout((()=>{x.current=!0,O(!0)}),_)}),[_,O]);return s((()=>()=>window.clearTimeout(w.current)),[]),a(Co,v,a(Zo,{scope:t,contentId:y,open:E,stateAttribute:C,trigger:h,onTriggerChange:g,onTriggerEnter:n((()=>{m.isOpenDelayed?k():D()}),[m.isOpenDelayed,k,D]),onTriggerLeave:n((()=>{b?T():window.clearTimeout(w.current)}),[T,b]),onOpen:D,onClose:T,disableHoverableContent:b},r))},Qo=Bo,ea=Ko,ta=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,o=Io(n);return Go("TooltipArrow",n).isInside?null:a(ko,S({},o,r,{ref:t}))}));var na="Tooltip-modules_content__--tK0",ra="Tooltip-modules_arrow__4vjj8";function oa(e){var n,r=e.children,o=e.content,a=e.open,i=e.defaultOpen,l=e.onOpenChange,c=e.side,s=void 0===c?"top":c,u=e.align,d=void 0===u?"center":u,f=e.className,p=void 0===f?"":f,m=e.delayDuration,v=void 0===m?200:m,h=e.sideOffset,g=void 0===h?4:h,y=x(e,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset"]);return o?t.createElement(Yo,null,t.createElement(Jo,{delayDuration:v,open:a,defaultOpen:i,onOpenChange:l},t.createElement(Qo,{asChild:!0},r),t.createElement(ea,_({sideOffset:g,side:s,align:d},y,{className:D(na,(n={},n[p]=p,n))}),o,t.createElement(ta,{className:ra,width:11,height:5})))):r}function aa(e,[t,n]){return Math.min(n,Math.max(t,e))}const ia=[" ","Enter","ArrowUp","ArrowDown"],la=[" ","Enter"],ca="Select",[sa,ua,da]=Kt(ca),[fa,pa]=I(ca,[da,po]),ma=po(),[va,ha]=fa(ca),[ga,ya]=fa(ca),wa=d(((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...o}=e,i=ma(n),l=ha("SelectTrigger",n),c=l.disabled||r,s=M(t,l.onTriggerChange),u=ua(n),[d,f,p]=Ka((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===l.value)),r=$a(t,e,n);void 0!==r&&l.onValueChange(r.value)})),m=()=>{c||(l.onOpenChange(!0),p())};return a(Do,S({asChild:!0},i),a(K.button,S({type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===l.value?"":void 0},o,{ref:s,onClick:A(o.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:A(o.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(m(),l.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:A(o.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||f(e.key),t&&" "===e.key||ia.includes(e.key)&&(m(),e.preventDefault())}))})))})),ba=d(((e,t)=>{const{__scopeSelect:n,className:r,style:o,children:i,placeholder:l,...c}=e,s=ha("SelectValue",n),{onValueNodeHasChildrenChange:u}=s,d=void 0!==i,f=M(t,s.onValueNodeChange);return N((()=>{u(d)}),[u,d]),a(K.span,S({},c,{ref:f,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==l?l:i)})),_a=d(((e,t)=>{const{__scopeSelect:n,children:r,...o}=e;return a(K.span,S({"aria-hidden":!0},o,{ref:t}),r||"▼")})),xa="SelectContent",Ea=d(((e,t)=>{const n=ha(xa,e.__scopeSelect),[r,o]=u();if(N((()=>{o(new DocumentFragment)}),[]),!n.open){const t=r;return t?b(a(Ca,{scope:e.__scopeSelect},a(sa.Slot,{scope:e.__scopeSelect},a("div",null,e.children))),t):null}return a(Ta,S({},e,{ref:t}))})),Oa=10,[Ca,Da]=fa(xa),Ta=d(((e,t)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:l,onPointerDownOutside:d,side:f,sideOffset:p,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_,...x}=e,E=ha(xa,r),[O,C]=u(null),[D,T]=u(null),k=M(t,(e=>C(e))),[P,I]=u(null),[L,N]=u(null),R=ua(r),[H,j]=u(!1),Z=c(!1);s((()=>{if(O)return rt(O)}),[O]),ve();const F=n((e=>{const[t,...n]=R().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&D&&(D.scrollTop=0),n===r&&D&&(D.scrollTop=D.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[R,D]),B=n((()=>F([P,O])),[F,P,O]);s((()=>{H&&B()}),[H,B]);const{onOpenChange:V,triggerPointerDownPosRef:W}=E;s((()=>{if(O){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=W.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=W.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():O.contains(n.target)||V(!1),document.removeEventListener("pointermove",t),W.current=null};return null!==W.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[O,V,W]),s((()=>{const e=()=>V(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[V]);const[z,K]=Ka((e=>{const t=R().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=$a(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),$=n(((e,t,n)=>{const r=!Z.current&&!n;(void 0!==E.value&&E.value===t||r)&&(I(e),r&&(Z.current=!0))}),[E.value]),q=n((()=>null==O?void 0:O.focus()),[O]),G=n(((e,t,n)=>{const r=!Z.current&&!n;(void 0!==E.value&&E.value===t||r)&&N(e)}),[E.value]),X="popper"===o?Sa:ka,Y=X===Sa?{side:f,sideOffset:p,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_}:{};return a(Ca,{scope:r,content:O,viewport:D,onViewportChange:T,itemRefCallback:$,selectedItem:P,onItemLeave:q,itemTextRefCallback:G,focusSelectedItem:B,selectedItemText:L,position:o,isPositioned:H,searchRef:z},a(Xe,{as:U,allowPinchZoom:!0},a(oe,{asChild:!0,trapped:E.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:A(i,(e=>{var t;null===(t=E.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},a(J,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>E.onOpenChange(!1)},a(X,S({role:"listbox",id:E.contentId,"data-state":E.open?"open":"closed",dir:E.dir,onContextMenu:e=>e.preventDefault()},x,Y,{onPlaced:()=>j(!0),ref:k,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:A(x.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||K(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=R().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>F(t))),e.preventDefault()}}))}))))))})),ka=d(((e,t)=>{const{__scopeSelect:r,onPlaced:o,...i}=e,l=ha(xa,r),s=Da(xa,r),[d,f]=u(null),[p,m]=u(null),v=M(t,(e=>m(e))),h=ua(r),g=c(!1),y=c(!0),{viewport:w,selectedItem:b,selectedItemText:_,focusSelectedItem:x}=s,E=n((()=>{if(l.trigger&&l.valueNode&&d&&p&&w&&b&&_){const e=l.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),r=_.getBoundingClientRect();if("rtl"!==l.dir){const o=r.left-t.left,a=n.left-o,i=e.left-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-Oa,u=aa(a,[Oa,s-c]);d.style.minWidth=l+"px",d.style.left=u+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,i=window.innerWidth-e.right-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-Oa,u=aa(a,[Oa,s-c]);d.style.minWidth=l+"px",d.style.right=u+"px"}const a=h(),i=window.innerHeight-2*Oa,c=w.scrollHeight,s=window.getComputedStyle(p),u=parseInt(s.borderTopWidth,10),f=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=u+f+c+parseInt(s.paddingBottom,10)+m,y=Math.min(5*b.offsetHeight,v),x=window.getComputedStyle(w),E=parseInt(x.paddingTop,10),O=parseInt(x.paddingBottom,10),C=e.top+e.height/2-Oa,D=i-C,T=b.offsetHeight/2,k=u+f+(b.offsetTop+T),S=v-k;if(k<=C){const e=b===a[a.length-1].ref.current;d.style.bottom="0px";const t=p.clientHeight-w.offsetTop-w.offsetHeight,n=k+Math.max(D,T+(e?O:0)+t+m);d.style.height=n+"px"}else{const e=b===a[0].ref.current;d.style.top="0px";const t=Math.max(C,u+w.offsetTop+(e?E:0)+T)+S;d.style.height=t+"px",w.scrollTop=k-C+w.offsetTop}d.style.margin=`${Oa}px 0`,d.style.minHeight=y+"px",d.style.maxHeight=i+"px",null==o||o(),requestAnimationFrame((()=>g.current=!0))}}),[h,l.trigger,l.valueNode,d,p,w,b,_,l.dir,o]);N((()=>E()),[E]);const[O,C]=u();N((()=>{p&&C(window.getComputedStyle(p).zIndex)}),[p]);const D=n((e=>{e&&!0===y.current&&(E(),null==x||x(),y.current=!1)}),[E,x]);return a(Aa,{scope:r,contentWrapper:d,shouldExpandOnScrollRef:g,onScrollButtonChange:D},a("div",{ref:f,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:O}},a(K.div,S({},i,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}}))))})),Sa=d(((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:o=Oa,...i}=e,l=ma(n);return a(To,S({},l,i,{ref:t,align:r,collisionPadding:o,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[Aa,Pa]=fa(xa,{}),Ma="SelectViewport",Ia=d(((e,t)=>{const{__scopeSelect:n,...r}=e,o=Da(Ma,n),i=Pa(Ma,n),l=M(t,o.onViewportChange),s=c(0);return a(v,null,a("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),a(sa.Slot,{scope:n},a(K.div,S({"data-radix-select-viewport":"",role:"presentation"},r,{ref:l,style:{position:"relative",flex:1,overflow:"auto",...r.style},onScroll:A(r.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(s.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*Oa,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),i=Math.max(o,a);if(i<r){const o=i+e,a=Math.min(r,o),l=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=l>0?l:0,n.style.justifyContent="flex-end")}}}s.current=t.scrollTop}))}))))}));fa("SelectGroup");const La="SelectItem",[Na,Ra]=fa(La),Ha=d(((e,t)=>{const{__scopeSelect:r,value:o,disabled:i=!1,textValue:l,...c}=e,s=ha(La,r),d=Da(La,r),f=s.value===o,[p,m]=u(null!=l?l:""),[v,h]=u(!1),g=M(t,(e=>{var t;return null===(t=d.itemRefCallback)||void 0===t?void 0:t.call(d,e,o,i)})),y=j(),w=()=>{i||(s.onValueChange(o),s.onOpenChange(!1))};return a(Na,{scope:r,value:o,disabled:i,textId:y,isSelected:f,onItemTextChange:n((e=>{m((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},a(sa.ItemSlot,{scope:r,value:o,disabled:i,textValue:p},a(K.div,S({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":f&&v,"data-state":f?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1},c,{ref:g,onFocus:A(c.onFocus,(()=>h(!0))),onBlur:A(c.onBlur,(()=>h(!1))),onPointerUp:A(c.onPointerUp,w),onPointerMove:A(c.onPointerMove,(e=>{var t;i?null===(t=d.onItemLeave)||void 0===t||t.call(d):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:A(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=d.onItemLeave)||void 0===t||t.call(d))})),onKeyDown:A(c.onKeyDown,(e=>{var t;""!==(null===(t=d.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(la.includes(e.key)&&w()," "===e.key&&e.preventDefault())}))}))))})),ja="SelectItemText",Za=d(((e,t)=>{const{__scopeSelect:n,className:r,style:i,...l}=e,c=ha(ja,n),s=Da(ja,n),d=Ra(ja,n),f=ya(ja,n),[p,m]=u(null),h=M(t,(e=>m(e)),d.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,d.value,d.disabled)})),g=null==p?void 0:p.textContent,y=o((()=>a("option",{key:d.value,value:d.value,disabled:d.disabled},g)),[d.disabled,d.value,g]),{onNativeOptionAdd:w,onNativeOptionRemove:_}=f;return N((()=>(w(y),()=>_(y))),[w,_,y]),a(v,null,a(K.span,S({id:d.textId},l,{ref:h})),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren?b(l.children,c.valueNode):null)})),Fa="SelectScrollUpButton",Ua=d(((e,t)=>{const n=Da(Fa,e.__scopeSelect),r=Pa(Fa,e.__scopeSelect),[o,i]=u(!1),l=M(t,r.onScrollButtonChange);return N((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollTop>0;i(e)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),o?a(Wa,S({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Ba="SelectScrollDownButton",Va=d(((e,t)=>{const n=Da(Ba,e.__scopeSelect),r=Pa(Ba,e.__scopeSelect),[o,i]=u(!1),l=M(t,r.onScrollButtonChange);return N((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;i(n)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),o?a(Wa,S({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),Wa=d(((e,t)=>{const{__scopeSelect:r,onAutoScroll:o,...i}=e,l=Da("SelectScrollButton",r),u=c(null),d=ua(r),f=n((()=>{null!==u.current&&(window.clearInterval(u.current),u.current=null)}),[]);return s((()=>()=>f()),[f]),N((()=>{var e;const t=d().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[d]),a(K.div,S({"aria-hidden":!0},i,{ref:t,style:{flexShrink:0,...i.style},onPointerDown:A(i.onPointerDown,(()=>{null===u.current&&(u.current=window.setInterval(o,50))})),onPointerMove:A(i.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===u.current&&(u.current=window.setInterval(o,50))})),onPointerLeave:A(i.onPointerLeave,(()=>{f()}))}))})),za=d(((e,t)=>{const{value:n,...r}=e,o=c(null),i=M(t,o),l=In(n);return s((()=>{const e=o.current,t=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(t,"value").set;if(l!==n&&r){const t=new Event("change",{bubbles:!0});r.call(e,n),e.dispatchEvent(t)}}),[l,n]),a(So,{asChild:!0},a("select",S({},r,{ref:i,defaultValue:n})))}));function Ka(e){const t=Z(e),r=c(""),o=c(0),a=n((e=>{const n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(n)}),[t]),i=n((()=>{r.current="",window.clearTimeout(o.current)}),[]);return s((()=>()=>window.clearTimeout(o.current)),[]),[r,a,i]}function $a(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(i=e,l=Math.max(o,0),i.map(((e,t)=>i[(l+t)%i.length])));var i,l;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}za.displayName="BubbleSelect";const qa=e=>{const{__scopeSelect:t,children:r,open:o,defaultOpen:i,onOpenChange:l,value:s,defaultValue:d,onValueChange:f,dir:p,name:m,autoComplete:v,disabled:h,required:g}=e,y=ma(t),[w,b]=u(null),[_,x]=u(null),[E,O]=u(!1),C=qt(p),[D=!1,T]=F({prop:o,defaultProp:i,onChange:l}),[k,S]=F({prop:s,defaultProp:d,onChange:f}),A=c(null),P=!w||Boolean(w.closest("form")),[M,I]=u(new Set),L=Array.from(M).map((e=>e.props.value)).join(";");return a(Co,y,a(va,{required:g,scope:t,trigger:w,onTriggerChange:b,valueNode:_,onValueNodeChange:x,valueNodeHasChildren:E,onValueNodeHasChildrenChange:O,contentId:j(),value:k,onValueChange:S,open:D,onOpenChange:T,dir:C,triggerPointerDownPosRef:A,disabled:h},a(sa.Provider,{scope:t},a(ga,{scope:e.__scopeSelect,onNativeOptionAdd:n((e=>{I((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:n((e=>{I((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),P?a(za,{key:L,"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:v,value:k,onChange:e=>S(e.target.value),disabled:h},void 0===k?a("option",{value:""}):null,Array.from(M)):null))},Ga=wa,Xa=ba,Ya=_a,Ja=Ea,Qa=Ia,ei=Ha,ti=Za,ni=Ua,ri=Va;var oi,ai;function ii(){return ii=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ii.apply(this,arguments)}var li,ci;function si(){return si=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},si.apply(this,arguments)}var ui,di;function fi(){return fi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fi.apply(this,arguments)}var pi,mi;function vi(){return vi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vi.apply(this,arguments)}var hi,gi;function yi(){return yi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yi.apply(this,arguments)}var wi,bi;function _i(){return _i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_i.apply(this,arguments)}var xi,Ei;function Oi(){return Oi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Oi.apply(this,arguments)}var Ci,Di;function Ti(){return Ti=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ti.apply(this,arguments)}var ki,Si;function Ai(){return Ai=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ai.apply(this,arguments)}var Pi,Mi,Ii=function(t){return e.createElement("svg",Ai({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ki||(ki=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Si||(Si=e.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Li.apply(this,arguments)}var Ni,Ri;function Hi(){return Hi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Hi.apply(this,arguments)}var ji,Zi;function Fi(){return Fi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Fi.apply(this,arguments)}var Ui,Bi;function Vi(){return Vi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vi.apply(this,arguments)}var Wi,zi;function Ki(){return Ki=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ki.apply(this,arguments)}var $i,qi;function Gi(){return Gi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Gi.apply(this,arguments)}var Xi,Yi;function Ji(){return Ji=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ji.apply(this,arguments)}var Qi,el;function tl(){return tl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},tl.apply(this,arguments)}var nl,rl;function ol(){return ol=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ol.apply(this,arguments)}var al,il;function ll(){return ll=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ll.apply(this,arguments)}var cl,sl;function ul(){return ul=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ul.apply(this,arguments)}var dl,fl;function pl(){return pl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},pl.apply(this,arguments)}var ml,vl;function hl(){return hl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},hl.apply(this,arguments)}var gl,yl;function wl(){return wl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},wl.apply(this,arguments)}var bl=Object.freeze({__proto__:null,AddIcon:function(t){return e.createElement("svg",ii({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},oi||(oi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ai||(ai=e.createElement("g",{mask:"url(#add_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:Ii,BlockIcon:function(t){return e.createElement("svg",si({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},li||(li=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ci||(ci=e.createElement("g",{mask:"url(#block_svg__a)"},e.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(t){return e.createElement("svg",fi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ui||(ui=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),di||(di=e.createElement("g",{mask:"url(#blur_on_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(t){return e.createElement("svg",vi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},pi||(pi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),mi||(mi=e.createElement("g",{mask:"url(#cached_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CheckCircleIcon:function(t){return e.createElement("svg",yi({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},hi||(hi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),gi||(gi=e.createElement("g",{mask:"url(#check_circle_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CloseIcon:Wt,DeleteIcon:function(t){return e.createElement("svg",_i({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wi||(wi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),bi||(bi=e.createElement("g",{mask:"url(#delete_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},InfoIcon:function(t){return e.createElement("svg",Oi({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},xi||(xi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ei||(Ei=e.createElement("g",{mask:"url(#info_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(t){return e.createElement("svg",Ti({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ci||(Ci=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Di||(Di=e.createElement("g",{mask:"url(#info-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MicOffIcon:function(t){return e.createElement("svg",Fi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ji||(ji=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Zi||(Zi=e.createElement("g",{mask:"url(#mic_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(t){return e.createElement("svg",Vi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ui||(Ui=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Bi||(Bi=e.createElement("g",{mask:"url(#mic_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(t){return e.createElement("svg",Li({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Pi||(Pi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Mi||(Mi=e.createElement("g",{mask:"url(#mic-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(t){return e.createElement("svg",Hi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ni||(Ni=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ri||(Ri=e.createElement("g",{mask:"url(#mic_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},VideoCamOffIcon:function(t){return e.createElement("svg",tl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Qi||(Qi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),el||(el=e.createElement("g",{mask:"url(#videocam_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(t){return e.createElement("svg",Ji({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Xi||(Xi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Yi||(Yi=e.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(t){return e.createElement("svg",Gi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},$i||($i=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),qi||(qi=e.createElement("g",{mask:"url(#videocam_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(t){return e.createElement("svg",Ki({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Wi||(Wi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),zi||(zi=e.createElement("g",{mask:"url(#videocam-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(t){return e.createElement("svg",ol({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},nl||(nl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),rl||(rl=e.createElement("g",{mask:"url(#volume_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(t){return e.createElement("svg",ll({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},al||(al=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),il||(il=e.createElement("g",{mask:"url(#volume_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(t){return e.createElement("svg",ul({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},cl||(cl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),sl||(sl=e.createElement("g",{mask:"url(#volume_up-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(t){return e.createElement("svg",pl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},dl||(dl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),fl||(fl=e.createElement("g",{mask:"url(#volume_up_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(t){return e.createElement("svg",wl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},gl||(gl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),yl||(yl=e.createElement("g",{mask:"url(#warning-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(t){return e.createElement("svg",hl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ml||(ml=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),vl||(vl=e.createElement("g",{mask:"url(#warning_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}}),_l="Select-modules_trigger__dS9Dx",xl="Select-modules_icon__sgRRc",El="Select-modules_startIcon__kohMV",Ol="Select-modules_value__h6Q4Z",Cl="Select-modules_content__YuAqS",Dl="Select-modules_item__cTAIm",Tl=t.forwardRef((function(e,n){var r=e.children,o=e.sideOffset,a=void 0===o?4:o,i=e.position,l=void 0===i?"popper":i,c=e.disabled,s=void 0!==c&&c,u=e.value,d=void 0===u?"":u,f=e.id,p=e.icon,m=void 0===p?null:p,v=e.placeholder,h=void 0===v?"":v,g=x(e,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return t.createElement(qa,_({value:d||void 0,disabled:s},g),t.createElement(Ga,{id:f,ref:n,className:_l},m&&t.createElement("span",{className:El},m),t.createElement("span",{className:Ol},t.createElement(Xa,{placeholder:h})),t.createElement(Ya,{className:xl},t.createElement(Ii,null))),t.createElement(Ja,{position:l,className:Cl,sideOffset:a},t.createElement(Qa,null,t.createElement(ni,null,"ChevronUpIcon"),t.createElement(Qa,null,r),t.createElement(ri,null,"ChevronDownIcon"))))})),kl=t.forwardRef((function(e,n){var r=e.children,o=e.disabled,a=void 0!==o&&o,i=x(e,["children","disabled"]);return t.createElement(ei,_({},i,{ref:n,className:Dl,disabled:a}),r)})),Sl=ti;const Al=d(((e,t)=>a(K.label,S({},e,{ref:t,onMouseDown:t=>{var n;null===(n=e.onMouseDown)||void 0===n||n.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault()}}))));var Pl="Label-modules_label__rXO6J";function Ml(e){var n=e.htmlFor,r=e.children;return t.createElement(Al,{htmlFor:n,className:Pl},r)}var Il={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};function Ll(e){var n,r=e.children,o=e.position,a=void 0===o?"vertical":o,i=e.justify,l=void 0===i?"start":i,c=e.alignItems,s=void 0===c?"start":c;return t.createElement("div",{className:D(Il.formGroup,(n={},n[Il.horizontal]="horizontal"===a,n[Il.vertical]="vertical"===a,n[Il[l]]=!!l,n[Il["".concat(s,"AlignItems")]]=!!s,n))},r)}const Nl="Progress",Rl=100,[Hl,jl]=I(Nl),[Zl,Fl]=Hl(Nl),Ul=d(((e,t)=>{const{__scopeProgress:n,value:r,max:o,getValueLabel:i=Bl,...l}=e,c=zl(o)?o:Rl,s=Kl(r,c)?r:null,u=Wl(s)?i(s,c):void 0;return a(Zl,{scope:n,value:s,max:c},a(K.div,S({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Wl(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":Vl(s,c),"data-value":null!=s?s:void 0,"data-max":c},l,{ref:t})))}));Ul.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!zl(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=zl(e.max)?e.max:Rl;return null==r||Kl(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function Bl(e,t){return`${Math.round(e/t*100)}%`}function Vl(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Wl(e){return"number"==typeof e}function zl(e){return Wl(e)&&!isNaN(e)&&e>0}function Kl(e,t){return Wl(e)&&!isNaN(e)&&e<=t&&e>=0}const $l=Ul,ql=d(((e,t)=>{var n;const{__scopeProgress:r,...o}=e,i=Fl("ProgressIndicator",r);return a(K.div,S({"data-state":Vl(i.value,i.max),"data-value":null!==(n=i.value)&&void 0!==n?n:void 0,"data-max":i.max},o,{ref:t}))}));var Gl="Progress-modules_root__E0rHH",Xl="Progress-modules_indicator__qpwRi";function Yl(e){var n=e.max,r=void 0===n?100:n,o=e.progress,a=void 0===o?0:o,i=x(e,["max","progress"]),l=a>r?"100%":"".concat(a/r*100,"%");return t.createElement($l,_({className:Gl,value:a>r?r:a,max:r},i),t.createElement(ql,{className:Xl,style:{width:l}}))}const[Jl,Ql]=I("AlertDialog",[it]),ec=it(),tc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=ec(n);return a(St,S({},o,r,{ref:t}))})),nc="AlertDialogContent",[rc,oc]=Jl(nc),ac=d(((e,t)=>{const{__scopeAlertDialog:n,children:r,...o}=e,i=ec(n),l=M(t,c(null)),s=c(null);return a(Ct,{contentName:nc,titleName:ic,docsSlug:"alert-dialog"},a(rc,{scope:n,cancelRef:s},a(At,S({role:"alertdialog"},i,o,{ref:l,onOpenAutoFocus:A(o.onOpenAutoFocus,(e=>{var t;e.preventDefault(),null===(t=s.current)||void 0===t||t.focus({preventScroll:!0})})),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault()}),a(V,null,r),!1)))})),ic="AlertDialogTitle",lc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=ec(n);return a(Pt,S({},o,r,{ref:t}))})),cc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=ec(n);return a(Mt,S({},o,r,{ref:t}))})),sc=e=>{const{__scopeAlertDialog:t,...n}=e,r=ec(t);return a(Tt,S({},r,n,{modal:!0}))},uc=e=>{const{__scopeAlertDialog:t,...n}=e,r=ec(t);return a(kt,S({},r,n))},dc=tc,fc=ac,pc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=ec(n);return a(It,S({},o,r,{ref:t}))})),mc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,{cancelRef:o}=oc("AlertDialogCancel",n),i=ec(n),l=M(t,o);return a(It,S({},i,r,{ref:l}))})),vc=lc,hc=cc;var gc={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"};function yc(e){var n=e.onOpenChange,r=e.open,o=e.actionText,a=void 0===o?"OK":o,i=e.onActionClick,l=e.cancelText,c=void 0===l?"Cancel":l,s=e.onCancelClick,u=e.title,d=e.description,f=void 0===d?"":d;return t.createElement(sc,{open:r,onOpenChange:n},t.createElement(uc,{className:gc.portal},t.createElement(dc,{className:gc.overlay}),t.createElement(fc,{className:gc.content},t.createElement("button",{className:gc.close,onClick:function(){return n(!1)},"data-testid":"close-button"},t.createElement(Wt,null)),t.createElement(vc,{className:gc.title},u),f&&t.createElement(hc,{className:gc.description},f),t.createElement("div",{className:gc.buttons},t.createElement(mc,{asChild:!0},t.createElement(k,{onClick:s,variant:"outline"},c)),t.createElement(pc,{asChild:!0},t.createElement(k,{onClick:i,variant:"danger"},a))))))}export{yc as Alert,k as Button,Ll as FormGroup,Ml as Label,zt as Modal,Yl as Progress,Tl as Select,kl as SelectItem,Sl as SelectItemText,$n as Switch,Pn as Tab,Mn as TabsContent,An as TabsList,Sn as TabsRoot,oa as Tooltip,bl as icons};
|
|
7
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtaWQvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93bi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcnRhbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkcy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L2Fzc2lnblJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9tZWRpdW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1VJLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29tcG9uZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L2hhbmRsZVNjcm9sbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1NpZGVFZmZlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJpYS1oaWRkZW4vZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtcm92aW5nLWZvY3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10YWJzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGFicy9UYWJzLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc3dpdGNoL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QtZG9tL2Rpc3QvZmxvYXRpbmctdWkucmVhY3QtZG9tLmVzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtYXJyb3cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcHBlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10b29sdGlwL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVG9vbHRpcC9Ub29sdGlwLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvbnVtYmVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zZWxlY3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9zcmMvaWNvbnMvYWRkLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibG9jay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvYmx1cl9vbi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2FjaGVkLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jaGVja19jaXJjbGUuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2RlbGV0ZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9rZXlib2FyZF9hcnJvd19kb3duLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWMtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWNfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW1fb2ZmLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92b2x1bWVfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92b2x1bWVfdXAuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3dhcm5pbmcuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3dhcm5pbmctMS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Gb3JtR3JvdXAvRm9ybUdyb3VwLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Qcm9ncmVzcy9Qcm9ncmVzcy50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FsZXJ0L0FsZXJ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIixudWxsLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgKiBhcyAkMkFPRHgkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5jb25zdCAkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCA9ICQyQU9EeCRyZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldIHx8ICgoKT0+dW5kZWZpbmVkXG4pO1xubGV0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyhkZXRlcm1pbmlzdGljSWQpIHtcbiAgICBjb25zdCBbaWQsIHNldElkXSA9ICQyQU9EeCRyZWFjdC51c2VTdGF0ZSgkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCgpKTsgLy8gUmVhY3QgdmVyc2lvbnMgb2xkZXIgdGhhbiAxOCB3aWxsIGhhdmUgY2xpZW50LXNpZGUgaWRzIG9ubHkuXG4gICAgJDJBT0R4JHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoIWRldGVybWluaXN0aWNJZCkgc2V0SWQoKHJlYWN0SWQpPT5yZWFjdElkICE9PSBudWxsICYmIHJlYWN0SWQgIT09IHZvaWQgMCA/IHJlYWN0SWQgOiBTdHJpbmcoJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50KyspXG4gICAgICAgICk7XG4gICAgfSwgW1xuICAgICAgICBkZXRlcm1pbmlzdGljSWRcbiAgICBdKTtcbiAgICByZXR1cm4gZGV0ZXJtaW5pc3RpY0lkIHx8IChpZCA/IGByYWRpeC0ke2lkfWAgOiAnJyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzcgYXMgdXNlSWR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VSZWYgYXMgJGx3aVdqJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRsd2lXaiR1c2VFZmZlY3QsIHVzZU1lbW8gYXMgJGx3aVdqJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbnZlcnRzIGEgY2FsbGJhY2sgdG8gYSByZWYgdG8gYXZvaWQgdHJpZ2dlcmluZyByZS1yZW5kZXJzIHdoZW4gcGFzc2VkIGFzIGFcbiAqIHByb3Agb3IgYXZvaWQgcmUtZXhlY3V0aW5nIGVmZmVjdHMgd2hlbiBwYXNzZWQgYXMgYSBkZXBlbmRlbmN5XG4gKi8gZnVuY3Rpb24gJGIxYjIzMTRmNWY5YTFkODQkZXhwb3J0JDI1YmVjOGM2ZjU0ZWU3OWEoY2FsbGJhY2spIHtcbiAgICBjb25zdCBjYWxsYmFja1JlZiA9ICRsd2lXaiR1c2VSZWYoY2FsbGJhY2spO1xuICAgICRsd2lXaiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICAgIH0pOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MjQwXG4gICAgcmV0dXJuICRsd2lXaiR1c2VNZW1vKCgpPT4oLi4uYXJncyk9PntcbiAgICAgICAgICAgIHZhciBfY2FsbGJhY2tSZWYkY3VycmVudDtcbiAgICAgICAgICAgIHJldHVybiAoX2NhbGxiYWNrUmVmJGN1cnJlbnQgPSBjYWxsYmFja1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY2FsbGJhY2tSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NhbGxiYWNrUmVmJGN1cnJlbnQuY2FsbChjYWxsYmFja1JlZiwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAsIFtdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YSBhcyB1c2VDYWxsYmFja1JlZn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICRiblB3OSR1c2VDYWxsYmFjaywgdXNlU3RhdGUgYXMgJGJuUHc5JHVzZVN0YXRlLCB1c2VSZWYgYXMgJGJuUHc5JHVzZVJlZiwgdXNlRWZmZWN0IGFzICRiblB3OSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkYm5QdzkkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyh7IHByb3A6IHByb3AgLCBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgPSAoKT0+e30gIH0pIHtcbiAgICBjb25zdCBbdW5jb250cm9sbGVkUHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcF0gPSAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoe1xuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHByb3AgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZTEgPSBpc0NvbnRyb2xsZWQgPyBwcm9wIDogdW5jb250cm9sbGVkUHJvcDtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgIGNvbnN0IHNldFZhbHVlID0gJGJuUHc5JHVzZUNhbGxiYWNrKChuZXh0VmFsdWUpPT57XG4gICAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRlciA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHNldHRlcihwcm9wKSA6IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gcHJvcCkgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHNldFVuY29udHJvbGxlZFByb3AobmV4dFZhbHVlKTtcbiAgICB9LCBbXG4gICAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcCxcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdmFsdWUxLFxuICAgICAgICBzZXRWYWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoeyBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgIH0pIHtcbiAgICBjb25zdCB1bmNvbnRyb2xsZWRTdGF0ZSA9ICRiblB3OSR1c2VTdGF0ZShkZWZhdWx0UHJvcCk7XG4gICAgY29uc3QgW3ZhbHVlXSA9IHVuY29udHJvbGxlZFN0YXRlO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9ICRiblB3OSR1c2VSZWYodmFsdWUpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgJGJuUHc5JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocHJldlZhbHVlUmVmLmN1cnJlbnQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHByZXZWYWx1ZVJlZixcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIHVuY29udHJvbGxlZFN0YXRlO1xufVxuXG5cblxuXG5leHBvcnQgeyQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMgYXMgdXNlQ29udHJvbGxhYmxlU3RhdGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ5SXJqWCRmb3J3YXJkUmVmLCBDaGlsZHJlbiBhcyAkOUlyalgkQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50IGFzICQ5SXJqWCRpc1ZhbGlkRWxlbWVudCwgY3JlYXRlRWxlbWVudCBhcyAkOUlyalgkY3JlYXRlRWxlbWVudCwgY2xvbmVFbGVtZW50IGFzICQ5SXJqWCRjbG9uZUVsZW1lbnQsIEZyYWdtZW50IGFzICQ5SXJqWCRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VSZWZzIGFzICQ5SXJqWCRjb21wb3NlUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSAkOUlyalgkQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZSk7XG4gICAgaWYgKHNsb3R0YWJsZSkge1xuICAgICAgICAvLyB0aGUgbmV3IGVsZW1lbnQgdG8gcmVuZGVyIGlzIHRoZSBvbmUgcGFzc2VkIGFzIGEgY2hpbGQgb2YgYFNsb3R0YWJsZWBcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IHNsb3R0YWJsZS5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIG5ldyBlbGVtZW50IHdpbGwgYmUgdGhlIG9uZSByZW5kZXJlZCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgIC8vIGluIGdyYWJiaW5nIGl0cyBjaGlsZHJlbiAoYG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW5gKVxuICAgICAgICAgICAgICAgIGlmICgkOUlyalgkQ2hpbGRyZW4uY291bnQobmV3RWxlbWVudCkgPiAxKSByZXR1cm4gJDlJcmpYJENoaWxkcmVuLm9ubHkobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGNyZWF0ZUVsZW1lbnQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSwgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBzbG90UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IC8qI19fUFVSRV9fKi8gJDlJcmpYJGNsb25lRWxlbWVudChuZXdFbGVtZW50LCB1bmRlZmluZWQsIG5ld0NoaWxkcmVuKSA6IG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbik7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwLmRpc3BsYXlOYW1lID0gJ1Nsb3QnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdENsb25lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUgPSAvKiNfX1BVUkVfXyovICQ5SXJqWCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uc2xvdFByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAoLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIC4uLiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpLFxuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiA/ICQ5SXJqWCRjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIGNoaWxkcmVuLnJlZikgOiBjaGlsZHJlbi5yZWZcbiAgICB9KTtcbiAgICByZXR1cm4gJDlJcmpYJENoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEgPyAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKSA6IG51bGw7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUuZGlzcGxheU5hbWUgPSAnU2xvdENsb25lJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsb3R0YWJsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSA9ICh7IGNoaWxkcmVuOiBjaGlsZHJlbiAgfSk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkOUlyalgkRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZShjaGlsZCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQudHlwZSA9PT0gJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDU7XG59XG5mdW5jdGlvbiAkNWU2M2M5NjFmYzFjZTIxMSR2YXIkbWVyZ2VQcm9wcyhzbG90UHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgICAvLyBhbGwgY2hpbGQgcHJvcHMgc2hvdWxkIG92ZXJyaWRlXG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHtcbiAgICAgICAgLi4uY2hpbGRQcm9wc1xuICAgIH07XG4gICAgZm9yKGNvbnN0IHByb3BOYW1lIGluIGNoaWxkUHJvcHMpe1xuICAgICAgICBjb25zdCBzbG90UHJvcFZhbHVlID0gc2xvdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICAgICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGhhbmRsZXIgZXhpc3RzIG9uIGJvdGgsIHdlIGNvbXBvc2UgdGhlbVxuICAgICAgICAgICAgaWYgKHNsb3RQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbHNlIGlmIChzbG90UHJvcFZhbHVlKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09ICdzdHlsZScpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0ge1xuICAgICAgICAgICAgLi4uc2xvdFByb3BWYWx1ZSxcbiAgICAgICAgICAgIC4uLmNoaWxkUHJvcFZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIGVsc2UgaWYgKHByb3BOYW1lID09PSAnY2xhc3NOYW1lJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbXG4gICAgICAgICAgICBzbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5zbG90UHJvcHMsXG4gICAgICAgIC4uLm92ZXJyaWRlUHJvcHNcbiAgICB9O1xufVxuY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MDtcblxuXG5cblxuZXhwb3J0IHskNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCBhcyBTbG90LCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSBhcyBTbG90dGFibGUsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0cTVGcSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0cTVGcSRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJDRxNUZxJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkNHE1RnEkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkNHE1RnEkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDRxNUZxJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbmNvbnN0ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUyA9IFtcbiAgICAnYScsXG4gICAgJ2J1dHRvbicsXG4gICAgJ2RpdicsXG4gICAgJ2Zvcm0nLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaW1nJyxcbiAgICAnaW5wdXQnLFxuICAgICdsYWJlbCcsXG4gICAgJ2xpJyxcbiAgICAnbmF2JyxcbiAgICAnb2wnLFxuICAgICdwJyxcbiAgICAnc3BhbicsXG4gICAgJ3N2ZycsXG4gICAgJ3VsJ1xuXTsgLy8gVGVtcG9yYXJ5IHdoaWxlIHdlIGF3YWl0IG1lcmdlIG9mIHRoaXMgZml4OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvcHVsbC81NTM5NlxuLy8gcHJldHRpZXItaWdub3JlXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQcmltaXRpdmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQgPSAkODkyN2Y2ZjJhY2M0ZjM4NiR2YXIkTk9ERVMucmVkdWNlKChwcmltaXRpdmUsIG5vZGUpPT57XG4gICAgY29uc3QgTm9kZSA9IC8qI19fUFVSRV9fKi8gJDRxNUZxJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgYXNDaGlsZDogYXNDaGlsZCAsIC4uLnByaW1pdGl2ZVByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyAkNHE1RnEkU2xvdCA6IG5vZGU7XG4gICAgICAgICQ0cTVGcSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKCdyYWRpeC11aScpXSA9IHRydWU7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRxNUZxJGNyZWF0ZUVsZW1lbnQoQ29tcCwgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcmltaXRpdmVQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuICAgIE5vZGUuZGlzcGxheU5hbWUgPSBgUHJpbWl0aXZlLiR7bm9kZX1gO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByaW1pdGl2ZSxcbiAgICAgICAgW25vZGVdOiBOb2RlXG4gICAgfTtcbn0sIHt9KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogRmx1c2ggY3VzdG9tIGV2ZW50IGRpc3BhdGNoXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9wdWxsLzEzNzhcbiAqXG4gKiBSZWFjdCBiYXRjaGVzICphbGwqIGV2ZW50IGhhbmRsZXJzIHNpbmNlIHZlcnNpb24gMTgsIHRoaXMgaW50cm9kdWNlcyBjZXJ0YWluIGNvbnNpZGVyYXRpb25zIHdoZW4gdXNpbmcgY3VzdG9tIGV2ZW50IHR5cGVzLlxuICpcbiAqIEludGVybmFsbHksIFJlYWN0IHByaW9yaXRpc2VzIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogIC0gZGlzY3JldGVcbiAqICAtIGNvbnRpbnVvdXNcbiAqICAtIGRlZmF1bHRcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9hOGE0NzQyZjFjNTQ0OTNkZjAwZGE2NDhhM2Y5ZDI2ZTNkYjljOGI1L3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvZXZlbnRzL1JlYWN0RE9NRXZlbnRMaXN0ZW5lci5qcyNMMjk0LUwzNTBcbiAqXG4gKiBgZGlzY3JldGVgIGlzIGFuICBpbXBvcnRhbnQgZGlzdGluY3Rpb24gYXMgdXBkYXRlcyB3aXRoaW4gdGhlc2UgZXZlbnRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LlxuICogUmVhY3QgaG93ZXZlciwgaXMgbm90IGFibGUgdG8gaW5mZXIgdGhlIHByaW9yaXR5IG9mIGN1c3RvbSBldmVudCB0eXBlcyBkdWUgdG8gaG93IHRoZXkgYXJlIGRldGVjdGVkIGludGVybmFsbHkuXG4gKiBCZWNhdXNlIG9mIHRoaXMsIGl0J3MgcG9zc2libGUgZm9yIHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIHRvIGJlIHVuZXhwZWN0ZWRseSBiYXRjaGVkIHdoZW5cbiAqIGRpc3BhdGNoZWQgYnkgYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LlxuICpcbiAqIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIGFyZSBhcHBsaWVkIHByZWRpY3RhYmx5LCB3ZSBuZWVkIHRvIG1hbnVhbGx5IGZsdXNoIHRoZSBiYXRjaC5cbiAqIFRoaXMgdXRpbGl0eSBzaG91bGQgYmUgdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGEgY3VzdG9tIGV2ZW50IGZyb20gd2l0aGluIGFub3RoZXIgYGRpc2NyZXRlYCBldmVudCwgdGhpcyB1dGlsaXR5XG4gKiBpcyBub3QgbmVzc2VzYXJ5IHdoZW4gZGlzcGF0Y2hpbmcga25vd24gZXZlbnQgdHlwZXMsIG9yIGlmIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgaW5zaWRlIGEgbm9uLWRpc2NyZXRlIGV2ZW50LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBrbm93biBjbGljayDwn5GOXG4gKiB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo4oCYY2xpY2vigJkpKVxuICpcbiAqIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgd2l0aGluIGEgbm9uLWRpc2NyZXRlIGV2ZW50IPCfkY5cbiAqIG9uU2Nyb2xsPXsoZXZlbnQpID0+IGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCjigJhjdXN0b21UeXBl4oCZKSl9XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBgZGlzY3JldGVgIGV2ZW50IPCfkY1cbiAqIG9uUG9pbnRlckRvd249eyhldmVudCkgPT4gZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KGV2ZW50LnRhcmdldCwgbmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBOb3RlOiB0aG91Z2ggUmVhY3QgY2xhc3NpZmllcyBgZm9jdXNgLCBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIGFzIGBkaXNjcmV0ZWAsIGl0J3MgIG5vdCByZWNvbW1lbmRlZCB0byB1c2VcbiAqIHRoaXMgdXRpbGl0eSB3aXRoIHRoZW0uIFRoaXMgaXMgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIGZvciB0aG9zZSBoYW5kbGVycyB0byBiZSBjYWxsZWQgaW1wbGljaXRseSBkdXJpbmcgcmVuZGVyXG4gKiBlLmcuIHdoZW4gZm9jdXMgaXMgd2l0aGluIGEgY29tcG9uZW50IGFzIGl0IGlzIHVubW91bnRlZCwgb3Igd2hlbiBtYW5hZ2luZyBmb2N1cyBvbiBtb3VudC5cbiAqLyBmdW5jdGlvbiAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkNmQxYTAzMTdiZGU3ZGU3Zih0YXJnZXQsIGV2ZW50KSB7XG4gICAgaWYgKHRhcmdldCkgJDRxNUZxJGZsdXNoU3luYygoKT0+dGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNDtcblxuXG5cblxuZXhwb3J0IHskODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCBhcyBQcmltaXRpdmUsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmIGFzIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHQgYXMgJGtxd3BIJGNyZWF0ZUNvbnRleHQsIGZvcndhcmRSZWYgYXMgJGtxd3BIJGZvcndhcmRSZWYsIHVzZUNvbnRleHQgYXMgJGtxd3BIJHVzZUNvbnRleHQsIHVzZVN0YXRlIGFzICRrcXdwSCR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICRrcXdwSCR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJGtxd3BIJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAka3F3cEgkdXNlUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGtxd3BIJFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IGFzICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka3F3cEgkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka3F3cEgkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VFc2NhcGVLZXlkb3duIGFzICRrcXdwSCR1c2VFc2NhcGVLZXlkb3dufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93blwiO1xuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpc21pc3NhYmxlTGF5ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUUgPSAnRGlzbWlzc2FibGVMYXllcic7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUgPSAnZGlzbWlzc2FibGVMYXllci51cGRhdGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIucG9pbnRlckRvd25PdXRzaWRlJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlJztcbmxldCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUNvbnRleHQoe1xuICAgIGxheWVyczogbmV3IFNldCgpLFxuICAgIGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOiBuZXcgU2V0KCksXG4gICAgYnJhbmNoZXM6IG5ldyBTZXQoKVxufSk7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgY29uc3QgeyBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUgLCBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUgLCBvbkRpc21pc3M6IG9uRGlzbWlzcyAsIC4uLmxheWVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAka3F3cEgkdXNlQ29udGV4dCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRGlzbWlzc2FibGVMYXllckNvbnRleHQpO1xuICAgIGNvbnN0IFtub2RlMSwgc2V0Tm9kZV0gPSAka3F3cEgkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZTEgPT09IG51bGwgfHwgbm9kZTEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUxLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlJG93bmVyRG9jdW1lbnQgIT09IHZvaWQgMCA/IF9ub2RlJG93bmVyRG9jdW1lbnQgOiBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4gICAgY29uc3QgWywgZm9yY2VdID0gJGtxd3BIJHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXROb2RlKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBsYXllcnMgPSBBcnJheS5mcm9tKGNvbnRleHQubGF5ZXJzKTtcbiAgICBjb25zdCBbaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdID0gW1xuICAgICAgICAuLi5jb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXG4gICAgXS5zbGljZSgtMSk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXggPSBsYXllcnMuaW5kZXhPZihoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGluZGV4ID0gbm9kZTEgPyBsYXllcnMuaW5kZXhPZihub2RlMSkgOiAtMTtcbiAgICBjb25zdCBpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQgPSBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPiAwO1xuICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPSBpbmRleCA+PSBoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4O1xuICAgIGNvbnN0IHBvaW50ZXJEb3duT3V0c2lkZSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUoKGV2ZW50KT0+e1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckRvd25PbkJyYW5jaCA9IFtcbiAgICAgICAgICAgIC4uLmNvbnRleHQuYnJhbmNoZXNcbiAgICAgICAgXS5zb21lKChicmFuY2gpPT5icmFuY2guY29udGFpbnModGFyZ2V0KVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c0VuYWJsZWQgfHwgaXNQb2ludGVyRG93bk9uQnJhbmNoKSByZXR1cm47XG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlID09PSBudWxsIHx8IG9uUG9pbnRlckRvd25PdXRzaWRlID09PSB2b2lkIDAgfHwgb25Qb2ludGVyRG93bk91dHNpZGUoZXZlbnQpO1xuICAgICAgICBvbkludGVyYWN0T3V0c2lkZSA9PT0gbnVsbCB8fCBvbkludGVyYWN0T3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uSW50ZXJhY3RPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgfHwgb25EaXNtaXNzKCk7XG4gICAgfSwgb3duZXJEb2N1bWVudCk7XG4gICAgY29uc3QgZm9jdXNPdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNGb2N1c0luQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpc0ZvY3VzSW5CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Gb2N1c091dHNpZGUgPT09IG51bGwgfHwgb25Gb2N1c091dHNpZGUgPT09IHZvaWQgMCB8fCBvbkZvY3VzT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRXNjYXBlS2V5ZG93bigoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IGlzSGlnaGVzdExheWVyID0gaW5kZXggPT09IGNvbnRleHQubGF5ZXJzLnNpemUgLSAxO1xuICAgICAgICBpZiAoIWlzSGlnaGVzdExheWVyKSByZXR1cm47XG4gICAgICAgIG9uRXNjYXBlS2V5RG93biA9PT0gbnVsbCB8fCBvbkVzY2FwZUtleURvd24gPT09IHZvaWQgMCB8fCBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgb25EaXNtaXNzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgb25EaXNtaXNzKCk7XG4gICAgICAgIH1cbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgICAgICAgaWYgKGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzID0gb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM7XG4gICAgICAgICAgICAgICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChub2RlMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5sYXllcnMuYWRkKG5vZGUxKTtcbiAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyAmJiBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPT09IDEpIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBwcmV2ZW50IGNvbWJpbmluZyB0aGlzIGVmZmVjdCB3aXRoIHRoZSBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCBlZmZlY3RcbiAgICogYmVjYXVzZSBhIGNoYW5nZSB0byBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCB3b3VsZCByZW1vdmUgdGhpcyBsYXllciBmcm9tIHRoZSBzdGFja1xuICAgKiBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgYWdhaW4gc28gdGhlIGxheWVyaW5nIG9yZGVyIHdvdWxkbid0IGJlIF9jcmVhdGlvbiBvcmRlcl8uXG4gICAqIFdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZXh0IHN0YWNrcyB3aGVuIHVubW91bnRlZC5cbiAgICovICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoIW5vZGUxKSByZXR1cm47XG4gICAgICAgICAgICBjb250ZXh0LmxheWVycy5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgY29udGV4dFxuICAgIF0pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlVXBkYXRlID0gKCk9PmZvcmNlKHt9KVxuICAgICAgICA7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpO1xuICAgICAgICByZXR1cm4gKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgbGF5ZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA/IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPyAnYXV0bycgOiAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNDYXB0dXJlLCBmb2N1c091dHNpZGUub25Gb2N1c0NhcHR1cmUpLFxuICAgICAgICBvbkJsdXJDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyQ2FwdHVyZSwgZm9jdXNPdXRzaWRlLm9uQmx1ckNhcHR1cmUpLFxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25DYXB0dXJlLCBwb2ludGVyRG93bk91dHNpZGUub25Qb2ludGVyRG93bkNhcHR1cmUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllckJyYW5jaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUUgPSAnRGlzbWlzc2FibGVMYXllckJyYW5jaCc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgcmVmID0gJGtxd3BIJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnRleHQuYnJhbmNoZXMuYWRkKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LmJyYW5jaGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIExpc3RlbnMgZm9yIGBwb2ludGVyZG93bmAgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuIFdlIHVzZSBgcG9pbnRlcmRvd25gIHJhdGhlciB0aGFuIGBwb2ludGVydXBgXG4gKiB0byBtaW1pYyBsYXllciBkaXNtaXNzaW5nIGJlaGF2aW91ciBwcmVzZW50IGluIE9TLlxuICogUmV0dXJucyBwcm9wcyB0byBwYXNzIHRvIHRoZSBub2RlIHdlIHdhbnQgdG8gY2hlY2sgZm9yIG91dHNpZGUgZXZlbnRzLlxuICovIGZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUob25Qb2ludGVyRG93bk91dHNpZGUsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAka3F3cEgkdXNlQ2FsbGJhY2tSZWYob25Qb2ludGVyRG93bk91dHNpZGUpO1xuICAgIGNvbnN0IGlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrUmVmID0gJGtxd3BIJHVzZVJlZigoKT0+e30pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIHRvdWNoIGRldmljZXMsIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSBjbGljayBldmVudCBiZWNhdXNlIGJyb3dzZXJzIGltcGxlbWVudFxuICAgICAgICAgKiBhIH4zNTBtcyBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSB1c2VyIHN0b3BzIHRvdWNoaW5nIHRoZSBkaXNwbGF5IGFuZCB3aGVuIHRoZVxuICAgICAgICAgKiBicm93c2VyIGV4ZWN1dHJlcyBldmVudHMuIFdlIG5lZWQgdG8gZW5zdXJlIHdlIGRvbid0IHJlYWN0aXZhdGUgcG9pbnRlci1ldmVudHMgd2l0aGluXG4gICAgICAgICAqIHRoaXMgdGltZWZyYW1lIG90aGVyd2lzZSB0aGUgYnJvd3NlciBtYXkgZXhlY3V0ZSBldmVudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHByZXZlbnRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQWRkaXRpb25hbGx5LCB0aGlzIGFsc28gbGV0cyB1cyBkZWFsIGF1dG9tYXRpY2FsbHkgd2l0aCBjYW5jZWxsYXRpb25zIHdoZW4gYSBjbGljayBldmVudFxuICAgICAgICAgKiBpc24ndCByYWlzZWQgYmVjYXVzZSB0aGUgcGFnZSB3YXMgY29uc2lkZXJlZCBzY3JvbGxlZC9kcmFnLXNjcm9sbGVkLCBsb25nLXByZXNzZWQsIGV0Yy5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyBpcyB3aHkgd2UgYWxzbyBjb250aW51b3VzbHkgcmVtb3ZlIHRoZSBwcmV2aW91cyBsaXN0ZW5lciwgYmVjYXVzZSB3ZSBjYW5ub3QgYmVcbiAgICAgICAgICogY2VydGFpbiB0aGF0IGl0IHdhcyByYWlzZWQsIGFuZCB0aGVyZWZvcmUgY2xlYW5lZC11cC5cbiAgICAgICAgICovIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQgPSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICogaWYgdGhpcyBob29rIGV4ZWN1dGVzIGluIGEgY29tcG9uZW50IHRoYXQgbW91bnRzIHZpYSBhIGBwb2ludGVyZG93bmAgZXZlbnQsIHRoZSBldmVudFxuICAgICAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgZG9jdW1lbnQgYW5kIHRyaWdnZXIgYSBgcG9pbnRlckRvd25PdXRzaWRlYCBldmVudC4gV2UgYXZvaWRcbiAgICAgKiB0aGlzIGJ5IGRlbGF5aW5nIHRoZSBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb24gb24gdGhlIGRvY3VtZW50LlxuICAgICAqIFRoaXMgaXMgbm90IFJlYWN0IHNwZWNpZmljLCBidXQgcmF0aGVyIGhvdyB0aGUgRE9NIHdvcmtzLCBpZTpcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZygnSSB3aWxsIGxvZycpO1xuICAgICAqICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdJIHdpbGwgYWxzbyBsb2cnKTtcbiAgICAgKiAgIH0pXG4gICAgICogfSk7XG4gICAgICovIGNvbnN0IHRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBoYW5kbGVQb2ludGVyRG93bk91dHNpZGVcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBlbnN1cmVzIHdlIGNoZWNrIFJlYWN0IGNvbXBvbmVudCB0cmVlIChub3QganVzdCBET00gdHJlZSlcbiAgICAgICAgb25Qb2ludGVyRG93bkNhcHR1cmU6ICgpPT5pc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9O1xufVxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIGZvY3VzIGhhcHBlbnMgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIHJvb3QgKG5vZGUpIG9mIHRoZSBzdWJ0cmVlIHdlIHdhbnQgdG8gY2hlY2suXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZShvbkZvY3VzT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvbkZvY3VzT3V0c2lkZSk7XG4gICAgY29uc3QgaXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudERldGFpbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFLCBoYW5kbGVGb2N1c091dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cyk7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXMpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZUZvY3VzT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAoKT0+aXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAsXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH07XG59XG5mdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKSB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFKTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KG5hbWUsIGhhbmRsZXIsIGRldGFpbCwgeyBkaXNjcmV0ZTogZGlzY3JldGUgIH0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSBkZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQ7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlcikgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlciwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGRpc2NyZXRlKSAka3F3cEgkZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KHRhcmdldCwgZXZlbnQpO1xuICAgIGVsc2UgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMjtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCRhZWNiMmRkY2I1NWM5NWJlID0gJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjg7XG5cblxuXG5cbmV4cG9ydCB7JDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIgYXMgRGlzbWlzc2FibGVMYXllciwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjggYXMgRGlzbWlzc2FibGVMYXllckJyYW5jaCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgYXMgQnJhbmNofTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlRWZmZWN0IGFzICRoUFNRNSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkaFBTUTUkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIHRoZSBlc2NhcGUga2V5IGlzIGRvd25cbiAqLyBmdW5jdGlvbiAkYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NShvbkVzY2FwZUtleURvd25Qcm9wLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gJGhQU1E1JHVzZUNhbGxiYWNrUmVmKG9uRXNjYXBlS2V5RG93blByb3ApO1xuICAgICRoUFNRNSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG93bmVyRG9jdW1lbnRcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NSBhcyB1c2VFc2NhcGVLZXlkb3dufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkNDVRSHYkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJDQ1UUh2JHVzZVN0YXRlLCB1c2VSZWYgYXMgJDQ1UUh2JHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ0NVFIdiR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ0NVFIdiR1c2VDYWxsYmFjaywgY3JlYXRlRWxlbWVudCBhcyAkNDVRSHYkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDQ1UUh2JFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cblxuXG5cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCc7XG5jb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRm9jdXNTY29wZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRSA9ICdGb2N1c1Njb3BlJztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2ID0gLyojX19QVVJFX18qLyAkNDVRSHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGxvb3A6IGxvb3AgPSBmYWxzZSAsIHRyYXBwZWQ6IHRyYXBwZWQgPSBmYWxzZSAsIG9uTW91bnRBdXRvRm9jdXM6IG9uTW91bnRBdXRvRm9jdXNQcm9wICwgb25Vbm1vdW50QXV0b0ZvY3VzOiBvblVubW91bnRBdXRvRm9jdXNQcm9wICwgLi4uc2NvcGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2NvbnRhaW5lcjEsIHNldENvbnRhaW5lcl0gPSAkNDVRSHYkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb25Nb3VudEF1dG9Gb2N1cyA9ICQ0NVFIdiR1c2VDYWxsYmFja1JlZihvbk1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3Qgb25Vbm1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uVW5tb3VudEF1dG9Gb2N1c1Byb3ApO1xuICAgIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudFJlZiA9ICQ0NVFIdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGFpbmVyKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBmb2N1c1Njb3BlID0gJDQ1UUh2JHVzZVJlZih7XG4gICAgICAgIHBhdXNlZDogZmFsc2UsXG4gICAgICAgIHBhdXNlICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdW1lICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KS5jdXJyZW50OyAvLyBUYWtlcyBjYXJlIG9mIHRyYXBwaW5nIGZvY3VzIGlmIGZvY3VzIGlzIG1vdmVkIG91dHNpZGUgcHJvZ3JhbW1hdGljYWxseSBmb3IgZXhhbXBsZVxuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRyYXBwZWQpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzSW4oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQgfHwgIWNvbnRhaW5lcjEpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEuY29udGFpbnModGFyZ2V0KSkgbGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgZWxzZSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMobGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c091dChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OyAvLyBBIGBmb2N1c291dGAgZXZlbnQgd2l0aCBhIGBudWxsYCBgcmVsYXRlZFRhcmdldGAgd2lsbCBoYXBwZW4gaW4gYXQgbGVhc3QgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gV2hlbiB0aGUgdXNlciBzd2l0Y2hlcyBhcHAvdGFicy93aW5kb3dzL3RoZSBicm93c2VyIGl0c2VsZiBsb3NlcyBmb2N1cy5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCB3aGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBXZSBsZXQgdGhlIGJyb3dzZXIgZG8gaXRzIHRoaW5nIGhlcmUgYmVjYXVzZTpcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBicm93c2VyIGFscmVhZHkga2VlcHMgYSBtZW1vcnkgb2Ygd2hhdCdzIGZvY3VzZWQgZm9yIHdoZW4gdGhlIHBhZ2UgZ2V0cyByZWZvY3VzZWQuXG4gICAgICAgICAgICAgICAgLy8gMi4gSW4gR29vZ2xlIENocm9tZSwgaWYgd2UgdHJ5IHRvIGZvY3VzIHRoZSBkZWxldGVkIGZvY3VzZWQgZWxlbWVudCAoYXMgcGVyIGJlbG93KSwgaXRcbiAgICAgICAgICAgICAgICAvLyAgICB0aHJvd3MgdGhlIENQVSB0byAxMDAlLCBzbyB3ZSBhdm9pZCBkb2luZyBhbnl0aGluZyBmb3IgdGhpcyByZWFzb24gaGVyZSB0b28uXG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHJldHVybjsgLy8gSWYgdGhlIGZvY3VzIGhhcyBtb3ZlZCB0byBhbiBhY3R1YWwgbGVnaXRpbWF0ZSBlbGVtZW50IChgcmVsYXRlZFRhcmdldCAhPT0gbnVsbGApXG4gICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcjEuY29udGFpbnMocmVsYXRlZFRhcmdldCkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gLy8gV2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGJyb3dzZXJzIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIC8vIGJhY2sgdG8gdGhlIGRvY3VtZW50LmJvZHkuIEluIHRoaXMgY2FzZSwgd2UgbW92ZSBmb2N1cyB0byB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICAvLyB0byBrZWVwIGZvY3VzIHRyYXBwZWQgY29ycmVjdGx5LlxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlTXV0YXRpb25zKG11dGF0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyl7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29udGFpbmVyMSAhPT0gbnVsbCAmJiBjb250YWluZXIxICE9PSB2b2lkIDAgJiYgY29udGFpbmVyMS5jb250YWlucyhmb2N1c2VkRWxlbWVudCkpKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY29udGFpbmVyMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0KTtcbiAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEpIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIxLCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJhcHBlZCxcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgZm9jdXNTY29wZS5wYXVzZWRcbiAgICBdKTtcbiAgICAkNDVRSHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250YWluZXIxKSB7XG4gICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaGFzRm9jdXNlZENhbmRpZGF0ZSA9IGNvbnRhaW5lcjEuY29udGFpbnMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzRm9jdXNlZENhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKCRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyMSkpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgb25Nb3VudEF1dG9Gb2N1cyk7IC8vIFdlIGhpdCBhIHJlYWN0IGJ1ZyAoZml4ZWQgaW4gdjE3KSB3aXRoIGZvY3VzaW5nIGluIHVubW91bnQuXG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkZWxheSB0aGUgZm9jdXMgYSBsaXR0bGUgdG8gZ2V0IGFyb3VuZCBpdCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNzg5NFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmFkZEV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQodW5tb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gbnVsbCAmJiBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgIT09IHZvaWQgMCA/IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA6IGRvY3VtZW50LmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lciBhZnRlciB3ZSBgZGlzcGF0Y2hFdmVudGBcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyMS5yZW1vdmVFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sucmVtb3ZlKGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBmb2N1c1Njb3BlXG4gICAgXSk7IC8vIFRha2VzIGNhcmUgb2YgbG9vcGluZyBmb2N1cyAod2hlbiB0YWJiaW5nIHdoaWxzdCBhdCB0aGUgZWRnZXMpXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICQ0NVFIdiR1c2VDYWxsYmFjaygoZXZlbnQpPT57XG4gICAgICAgIGlmICghbG9vcCAmJiAhdHJhcHBlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNUYWJLZXkgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXk7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGlzVGFiS2V5ICYmIGZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCBsYXN0XSA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzSW5zaWRlID0gZmlyc3QgJiYgbGFzdDsgLy8gd2UgY2FuIG9ubHkgd3JhcCBmb2N1cyBpZiB3ZSBoYXZlIHRhYmJhYmxlIGVkZ2VzXG4gICAgICAgICAgICBpZiAoIWhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgPT09IGNvbnRhaW5lcikgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGZpcnN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3ApICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBsb29wLFxuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0NVFIdiRjcmVhdGVFbGVtZW50KCQ0NVFIdiRQcmltaXRpdmUuZGl2LCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogLTFcbiAgICB9LCBzY29wZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVdGlsc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIEF0dGVtcHRzIGZvY3VzaW5nIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgbGlzdCBvZiBjYW5kaWRhdGVzLlxuICogU3RvcHMgd2hlbiBmb2N1cyBoYXMgYWN0dWFsbHkgbW92ZWQuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcywgeyBzZWxlY3Q6IHNlbGVjdCA9IGZhbHNlICB9ID0ge30pIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY2FuZGlkYXRlLCB7XG4gICAgICAgICAgICBzZWxlY3Q6IHNlbGVjdFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgcmV0dXJuO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYW5kIGxhc3QgdGFiYmFibGUgZWxlbWVudHMgaW5zaWRlIGEgY29udGFpbmVyLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcik7XG4gICAgY29uc3QgZmlyc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgICBjb25zdCBsYXN0ID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGNhbmRpZGF0ZXMucmV2ZXJzZSgpLCBjb250YWluZXIpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGZpcnN0LFxuICAgICAgICBsYXN0XG4gICAgXTtcbn1cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcG90ZW50aWFsIHRhYmJhYmxlIGNhbmRpZGF0ZXMuXG4gKlxuICogTk9URTogVGhpcyBpcyBvbmx5IGEgY2xvc2UgYXBwcm94aW1hdGlvbi4gRm9yIGV4YW1wbGUgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBjYXNlcyBsaWtlIHdoZW5cbiAqIGVsZW1lbnRzIGFyZSBub3QgdmlzaWJsZS4gVGhpcyBjYW5ub3QgYmUgd29ya2VkIG91dCBlYXNpbHkgYnkganVzdCByZWFkaW5nIGEgcHJvcGVydHksIGJ1dCByYXRoZXJcbiAqIG5lY2Vzc2l0YXRlIHJ1bnRpbWUga25vd2xlZGdlIChjb21wdXRlZCBzdHlsZXMsIGV0YykuIFdlIGRlYWwgd2l0aCB0aGVzZSBjYXNlcyBzZXBhcmF0ZWx5LlxuICpcbiAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RyZWVXYWxrZXJcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2Rpc2NvcmQvZm9jdXMtbGF5ZXJzL2Jsb2IvbWFzdGVyL3NyYy91dGlsL3dyYXBGb2N1cy50c3gjTDFcbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihjb250YWluZXIsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7XG4gICAgICAgIGFjY2VwdE5vZGU6IChub2RlKT0+e1xuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW5JbnB1dCA9IG5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBub2RlLnR5cGUgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGlzYWJsZWQgfHwgbm9kZS5oaWRkZW4gfHwgaXNIaWRkZW5JbnB1dCkgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7IC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHdoaWxlKHdhbGtlci5uZXh0Tm9kZSgpKW5vZGVzLnB1c2god2Fsa2VyLmN1cnJlbnROb2RlKTsgLy8gd2UgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmRlciBvZiBub2RlcyB3aXRoIHBvc2l0aXZlIGB0YWJJbmRleGAgYXMgaXRcbiAgICAvLyBoaW5kZXJzIGFjY2Vzc2liaWxpdHkgdG8gaGF2ZSB0YWIgb3JkZXIgZGlmZmVyZW50IGZyb20gdmlzdWFsIG9yZGVyLlxuICAgIHJldHVybiBub2Rlcztcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgdmlzaWJsZSBlbGVtZW50IGluIGEgbGlzdC5cbiAqIE5PVEU6IE9ubHkgY2hlY2tzIHZpc2liaWxpdHkgdXAgdG8gdGhlIGBjb250YWluZXJgLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShlbGVtZW50cywgY29udGFpbmVyKSB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKXtcbiAgICAgICAgLy8gd2Ugc3RvcCBjaGVja2luZyBpZiBpdCdzIGhpZGRlbiBhdCB0aGUgYGNvbnRhaW5lcmAgbGV2ZWwgKGV4Y2x1ZGluZylcbiAgICAgICAgaWYgKCEkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4oZWxlbWVudCwge1xuICAgICAgICAgICAgdXBUbzogY29udGFpbmVyXG4gICAgICAgIH0pKSByZXR1cm4gZWxlbWVudDtcbiAgICB9XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4obm9kZSwgeyB1cFRvOiB1cFRvICB9KSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicpIHJldHVybiB0cnVlO1xuICAgIHdoaWxlKG5vZGUpe1xuICAgICAgICAvLyB3ZSBzdG9wIGF0IGB1cFRvYCAoZXhjbHVkaW5nIGl0KVxuICAgICAgICBpZiAodXBUbyAhPT0gdW5kZWZpbmVkICYmIG5vZGUgPT09IHVwVG8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkuZGlzcGxheSA9PT0gJ25vbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgJ3NlbGVjdCcgaW4gZWxlbWVudDtcbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhlbGVtZW50LCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIC8vIG9ubHkgZm9jdXMgaWYgdGhhdCBlbGVtZW50IGlzIGZvY3VzYWJsZVxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsgLy8gTk9URTogd2UgcHJldmVudCBzY3JvbGxpbmcgb24gZm9jdXMsIHRvIG1pbmltaXplIGphcnJpbmcgdHJhbnNpdGlvbnMgZm9yIHVzZXJzXG4gICAgICAgIGVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICB9KTsgLy8gb25seSBzZWxlY3QgaWYgaXRzIG5vdCB0aGUgc2FtZSBlbGVtZW50LCBpdCBzdXBwb3J0cyBzZWxlY3Rpb24gYW5kIHdlIG5lZWQgdG8gc2VsZWN0XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpICYmIHNlbGVjdCkgZWxlbWVudC5zZWxlY3QoKTtcbiAgICB9XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlIHN0YWNrXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRjcmVhdGVGb2N1c1Njb3Blc1N0YWNrKCkge1xuICAgIC8qKiBBIHN0YWNrIG9mIGZvY3VzIHNjb3Blcywgd2l0aCB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgdG9wICovIGxldCBzdGFjayA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZCAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgLy8gcGF1c2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgZm9jdXMgc2NvcGUgKGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrKVxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRm9jdXNTY29wZSA9IHN0YWNrWzBdO1xuICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUgIT09IGFjdGl2ZUZvY3VzU2NvcGUpIGFjdGl2ZUZvY3VzU2NvcGUgPT09IG51bGwgfHwgYWN0aXZlRm9jdXNTY29wZSA9PT0gdm9pZCAwIHx8IGFjdGl2ZUZvY3VzU2NvcGUucGF1c2UoKTtcbiAgICAgICAgICAgICAvLyByZW1vdmUgaW4gY2FzZSBpdCBhbHJlYWR5IGV4aXN0cyAoYmVjYXVzZSB3ZSdsbCByZS1hZGQgaXQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBzdGFjay51bnNoaWZ0KGZvY3VzU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmUgKGZvY3VzU2NvcGUpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2skO1xuICAgICAgICAgICAgc3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoc3RhY2ssIGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgKF9zdGFjayQgPSBzdGFja1swXSkgPT09IG51bGwgfHwgX3N0YWNrJCA9PT0gdm9pZCAwIHx8IF9zdGFjayQucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKGFycmF5LCBpdGVtKSB7XG4gICAgY29uc3QgdXBkYXRlZEFycmF5ID0gW1xuICAgICAgICAuLi5hcnJheVxuICAgIF07XG4gICAgY29uc3QgaW5kZXggPSB1cGRhdGVkQXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB1cGRhdGVkQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdXBkYXRlZEFycmF5O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSk9Pml0ZW0udGFnTmFtZSAhPT0gJ0EnXG4gICAgKTtcbn1cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjY7XG5cblxuXG5cbmV4cG9ydCB7JGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgYXMgRm9jdXNTY29wZSwgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdTWGwyJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdTWGwyJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICQ3U1hsMiRyZWFjdGRvbSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1NYbDIkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUUgPSAnUG9ydGFsJztcbmNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gLyojX19QVVJFX18qLyAkN1NYbDIkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2dsb2JhbFRoaXMkZG9jdW1lbnQ7XG4gICAgY29uc3QgeyBjb250YWluZXI6IGNvbnRhaW5lciA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9nbG9iYWxUaGlzJGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudCkgPT09IG51bGwgfHwgX2dsb2JhbFRoaXMkZG9jdW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nbG9iYWxUaGlzJGRvY3VtZW50LmJvZHkgLCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIGNvbnRhaW5lciA/IC8qI19fUFVSRV9fKi8gJDdTWGwyJHJlYWN0ZG9tLmNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQ3U1hsMiRjcmVhdGVFbGVtZW50KCQ3U1hsMiRQcmltaXRpdmUuZGl2LCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcnRhbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpLCBjb250YWluZXIpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjLCB7XG4gICAgZGlzcGxheU5hbWU6ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmM7XG5cblxuXG5cbmV4cG9ydCB7JGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Q2hpbGRyZW4gYXMgJGlxcTNyJENoaWxkcmVuLCBjbG9uZUVsZW1lbnQgYXMgJGlxcTNyJGNsb25lRWxlbWVudCwgdXNlU3RhdGUgYXMgJGlxcTNyJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlxcTNyJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRpcXEzciR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICRpcXEzciR1c2VDYWxsYmFjaywgdXNlUmVkdWNlciBhcyAkaXFxM3IkdXNlUmVkdWNlcn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkaXFxM3IkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXFxM3IkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGlxcTNyJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuXG5cblxuXG5cblxuZnVuY3Rpb24gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCBtYWNoaW5lKSB7XG4gICAgcmV0dXJuICRpcXEzciR1c2VSZWR1Y2VyKChzdGF0ZSwgZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IG1hY2hpbmVbc3RhdGVdW2V2ZW50XTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZSAhPT0gbnVsbCAmJiBuZXh0U3RhdGUgIT09IHZvaWQgMCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICAgIH0sIGluaXRpYWxTdGF0ZSk7XG59XG5cblxuY29uc3QgJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBwcmVzZW50OiBwcmVzZW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJlc2VuY2UgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkdXNlUHJlc2VuY2UocHJlc2VudCk7XG4gICAgY29uc3QgY2hpbGQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbih7XG4gICAgICAgIHByZXNlbnQ6IHByZXNlbmNlLmlzUHJlc2VudFxuICAgIH0pIDogJGlxcTNyJENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgIGNvbnN0IHJlZiA9ICRpcXEzciR1c2VDb21wb3NlZFJlZnMocHJlc2VuY2UucmVmLCBjaGlsZC5yZWYpO1xuICAgIGNvbnN0IGZvcmNlTW91bnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG4gICAgcmV0dXJuIGZvcmNlTW91bnQgfHwgcHJlc2VuY2UuaXNQcmVzZW50ID8gLyojX19QVVJFX18qLyAkaXFxM3IkY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkgOiBudWxsO1xufTtcbiQ5MjFhODg5Y2VlNmRmN2U4JGV4cG9ydCQ5OWMyYjc3OWFhNGU4YjhiLmRpc3BsYXlOYW1lID0gJ1ByZXNlbmNlJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIHVzZVByZXNlbmNlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KSB7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRpcXEzciR1c2VTdGF0ZSgpO1xuICAgIGNvbnN0IHN0eWxlc1JlZiA9ICRpcXEzciR1c2VSZWYoe30pO1xuICAgIGNvbnN0IHByZXZQcmVzZW50UmVmID0gJGlxcTNyJHVzZVJlZihwcmVzZW50KTtcbiAgICBjb25zdCBwcmV2QW5pbWF0aW9uTmFtZVJlZiA9ICRpcXEzciR1c2VSZWYoJ25vbmUnKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBwcmVzZW50ID8gJ21vdW50ZWQnIDogJ3VubW91bnRlZCc7XG4gICAgY29uc3QgW3N0YXRlLCBzZW5kXSA9ICRmZTk2M2IzNTUzNDdjYzY4JGV4cG9ydCQzZTY1NDNkZTE0Zjg2MTRmKGluaXRpYWxTdGF0ZSwge1xuICAgICAgICBtb3VudGVkOiB7XG4gICAgICAgICAgICBVTk1PVU5UOiAndW5tb3VudGVkJyxcbiAgICAgICAgICAgIEFOSU1BVElPTl9PVVQ6ICd1bm1vdW50U3VzcGVuZGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50U3VzcGVuZGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX0VORDogJ3VubW91bnRlZCdcbiAgICAgICAgfSxcbiAgICAgICAgdW5tb3VudGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAkaXFxM3IkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICAgIH0sIFtcbiAgICAgICAgc3RhdGVcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCB3YXNQcmVzZW50ID0gcHJldlByZXNlbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzUHJlc2VudENoYW5nZWQgPSB3YXNQcmVzZW50ICE9PSBwcmVzZW50O1xuICAgICAgICBpZiAoaGFzUHJlc2VudENoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lID0gcHJldkFuaW1hdGlvbk5hbWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChwcmVzZW50KSBzZW5kKCdNT1VOVCcpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEFuaW1hdGlvbk5hbWUgPT09ICdub25lJyB8fCAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmRpc3BsYXkpID09PSAnbm9uZScpIC8vIElmIHRoZXJlIGlzIG5vIGV4aXQgYW5pbWF0aW9uIG9yIHRoZSBlbGVtZW50IGlzIGhpZGRlbiwgYW5pbWF0aW9ucyB3b24ndCBydW5cbiAgICAgICAgICAgIC8vIHNvIHdlIHVubW91bnQgaW5zdGFudGx5XG4gICAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqLyBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykgc2VuZCgnQU5JTUFUSU9OX09VVCcpO1xuICAgICAgICAgICAgICAgIGVsc2Ugc2VuZCgnVU5NT1VOVCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXNlbnQsXG4gICAgICAgIHNlbmRcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChub2RlMSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VyaW5nIGFuIEFOSU1BVElPTl9PVVQgZHVyaW5nIGFuIEFOSU1BVElPTl9JTiB3aWxsIGZpcmUgYW4gYGFuaW1hdGlvbmNhbmNlbGBcbiAgICAgICAqIGV2ZW50IGZvciBBTklNQVRJT05fSU4gYWZ0ZXIgd2UgaGF2ZSBlbnRlcmVkIGB1bm1vdW50U3VzcGVuZGVkYCBzdGF0ZS4gU28sIHdlXG4gICAgICAgKiBtYWtlIHN1cmUgd2Ugb25seSB0cmlnZ2VyIEFOSU1BVElPTl9FTkQgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbi5cbiAgICAgICAqLyBjb25zdCBoYW5kbGVBbmltYXRpb25FbmQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoZXZlbnQuYW5pbWF0aW9uTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEgJiYgaXNDdXJyZW50QW5pbWF0aW9uKSAvLyBXaXRoIFJlYWN0IDE4IGNvbmN1cnJlbmN5IHRoaXMgdXBkYXRlIGlzIGFwcGxpZWRcbiAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcywgY3JlYXRpbmcgYSBmbGFzaCBvZiB2aXNpYmxlIGNvbnRlbnQuXG4gICAgICAgICAgICAgICAgLy8gQnkgbWFudWFsbHkgZmx1c2hpbmcgd2UgZW5zdXJlIHRoZXkgc3luYyB3aXRoaW4gYSBmcmFtZSwgcmVtb3ZpbmcgdGhlIGZsYXNoLlxuICAgICAgICAgICAgICAgICRpcXEzciRmbHVzaFN5bmMoKCk9PnNlbmQoJ0FOSU1BVElPTl9FTkQnKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEpIC8vIGlmIGFuaW1hdGlvbiBvY2N1cnJlZCwgc3RvcmUgaXRzIG5hbWUgYXMgdGhlIHByZXZpb3VzIGFuaW1hdGlvbi5cbiAgICAgICAgICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgLy8gVHJhbnNpdGlvbiB0byB0aGUgdW5tb3VudGVkIHN0YXRlIGlmIHRoZSBub2RlIGlzIHJlbW92ZWQgcHJlbWF0dXJlbHkuXG4gICAgICAgIC8vIFdlIGF2b2lkIGRvaW5nIHNvIGR1cmluZyBjbGVhbnVwIGFzIHRoZSBub2RlIG1heSBjaGFuZ2UgYnV0IHN0aWxsIGV4aXN0LlxuICAgICAgICBzZW5kKCdBTklNQVRJT05fRU5EJyk7XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudDogW1xuICAgICAgICAgICAgJ21vdW50ZWQnLFxuICAgICAgICAgICAgJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIF0uaW5jbHVkZXMoc3RhdGUpLFxuICAgICAgICByZWY6ICRpcXEzciR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgICAgIGlmIChub2RlKSBzdHlsZXNSZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgICAgICBzZXROb2RlKG5vZGUpO1xuICAgICAgICB9LCBbXSlcbiAgICB9O1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpIHtcbiAgICByZXR1cm4gKHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5hbmltYXRpb25OYW1lKSB8fCAnbm9uZSc7XG59XG5cblxuXG5cbmV4cG9ydCB7JDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgYXMgUHJlc2VuY2V9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJDF3RXJ6JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqIE51bWJlciBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgcmVxdWVzdGVkIGludGVyZXN0IHRvIGhhdmUgZm9jdXMgZ3VhcmRzICovIGxldCAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPSAwO1xuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGFjNWI1ODA0M2I3OTQ0OWIocHJvcHMpIHtcbiAgICAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpO1xuICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbi8qKlxuICogSW5qZWN0cyBhIHBhaXIgb2YgZm9jdXMgZ3VhcmRzIGF0IHRoZSBlZGdlcyBvZiB0aGUgd2hvbGUgRE9NIHRyZWVcbiAqIHRvIGVuc3VyZSBgZm9jdXNpbmAgJiBgZm9jdXNvdXRgIGV2ZW50cyBjYW4gYmUgY2F1Z2h0IGNvbnNpc3RlbnRseS5cbiAqLyBmdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpIHtcbiAgICAkMXdFcnokdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfZWRnZUd1YXJkcyQsIF9lZGdlR3VhcmRzJDI7XG4gICAgICAgIGNvbnN0IGVkZ2VHdWFyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCAoX2VkZ2VHdWFyZHMkID0gZWRnZUd1YXJkc1swXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQgOiAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCgpKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIChfZWRnZUd1YXJkcyQyID0gZWRnZUd1YXJkc1sxXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkMiAhPT0gdm9pZCAwID8gX2VkZ2VHdWFyZHMkMiA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQrKztcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50ID09PSAxKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKS5mb3JFYWNoKChub2RlKT0+bm9kZS5yZW1vdmUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudC0tO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbn1cbmZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmQnLCAnJyk7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gJ291dGxpbmU6IG5vbmU7IG9wYWNpdHk6IDA7IHBvc2l0aW9uOiBmaXhlZDsgcG9pbnRlci1ldmVudHM6IG5vbmUnO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuY29uc3QgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YjtcblxuXG5cblxuZXhwb3J0IHskM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YiBhcyBGb2N1c0d1YXJkcywgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMgYXMgdXNlRm9jdXNHdWFyZHN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiIsImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIiwiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmZ1bmN0aW9uIEl0b0koYSkge1xuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpIHtcbiAgICBpZiAobWlkZGxld2FyZSA9PT0gdm9pZCAwKSB7IG1pZGRsZXdhcmUgPSBJdG9JOyB9XG4gICAgdmFyIGJ1ZmZlciA9IFtdO1xuICAgIHZhciBhc3NpZ25lZCA9IGZhbHNlO1xuICAgIHZhciBtZWRpdW0gPSB7XG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhc3NpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhcjogY291bGQgbm90IGByZWFkYCBmcm9tIGFuIGBhc3NpZ25lZGAgbWVkaXVtLiBgcmVhZGAgY291bGQgYmUgdXNlZCBvbmx5IHdpdGggYHVzZU1lZGl1bWAuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgICAgICB9LFxuICAgICAgICB1c2VNZWRpdW06IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IG1pZGRsZXdhcmUoZGF0YSwgYXNzaWduZWQpO1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IGl0ZW07IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduU3luY01lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7IHJldHVybiBjYih4KTsgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJ1ZmZlcjsgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGFzc2lnbk1lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGVuZGluZ1F1ZXVlID0gW107XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBleGVjdXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IHBlbmRpbmdRdWV1ZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGN5Y2xlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihleGVjdXRlUXVldWUpOyB9O1xuICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHtcbiAgICAgICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBwZW5kaW5nUXVldWUuZmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICByZXR1cm4gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWRlY2FyTWVkaXVtKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBtZWRpdW0gPSBpbm5lckNyZWF0ZU1lZGl1bShudWxsKTtcbiAgICBtZWRpdW0ub3B0aW9ucyA9IF9fYXNzaWduKHsgYXN5bmM6IHRydWUsIHNzcjogZmFsc2UgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1lZGl1bTtcbn1cbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVTaWRlY2FyTWVkaXVtIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuZXhwb3J0IHZhciBlZmZlY3RDYXIgPSBjcmVhdGVTaWRlY2FyTWVkaXVtKCk7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiIsImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIiwidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsImltcG9ydCB7IHN0eWxlSG9va1NpbmdsZXRvbiB9IGZyb20gJy4vaG9vayc7XG4vKipcbiAqIGNyZWF0ZSBhIENvbXBvbmVudCB0byBhZGQgc3R5bGVzIG9uIGRlbWFuZFxuICogLSBzdHlsZXMgYXJlIGFkZGVkIHdoZW4gZmlyc3QgaW5zdGFuY2UgaXMgbW91bnRlZFxuICogLSBzdHlsZXMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbGFzdCBpbnN0YW5jZSBpcyB1bm1vdW50ZWRcbiAqIC0gY2hhbmdpbmcgc3R5bGVzIGluIHJ1bnRpbWUgZG9lcyBub3RoaW5nIHVubGVzcyBkeW5hbWljIGlzIHNldC4gQnV0IHdpdGggbXVsdGlwbGUgY29tcG9uZW50cyB0aGF0IGNhbiBsZWFkIHRvIHRoZSB1bmRlZmluZWQgYmVoYXZpb3JcbiAqL1xuZXhwb3J0IHZhciBzdHlsZVNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAgICB2YXIgU2hlZXQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHN0eWxlcyA9IF9hLnN0eWxlcywgZHluYW1pYyA9IF9hLmR5bmFtaWM7XG4gICAgICAgIHVzZVN0eWxlKHN0eWxlcywgZHluYW1pYyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0O1xufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG4vKipcbiAqIGNyZWF0ZXMgYSBob29rIHRvIGNvbnRyb2wgc3R5bGUgc2luZ2xldG9uXG4gKiBAc2VlIHtAbGluayBzdHlsZVNpbmdsZXRvbn0gZm9yIGEgc2FmZXIgY29tcG9uZW50IHZlcnNpb25cbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVzZVN0eWxlID0gc3R5bGVIb29rU2luZ2xldG9uKCk7XG4gKiAvLy9cbiAqIHVzZVN0eWxlKCdib2R5IHsgb3ZlcmZsb3c6IGhpZGRlbn0nKTtcbiAqL1xuZXhwb3J0IHZhciBzdHlsZUhvb2tTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0ID0gc3R5bGVzaGVldFNpbmdsZXRvbigpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3R5bGVzLCBpc0R5bmFtaWMpIHtcbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZChzdHlsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaGVldC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtzdHlsZXMgJiYgaXNEeW5hbWljXSk7XG4gICAgfTtcbn07XG4iLCJleHBvcnQgdmFyIHplcm9HYXAgPSB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgZ2FwOiAwLFxufTtcbnZhciBwYXJzZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiBwYXJzZUludCh4IHx8ICcnLCAxMCkgfHwgMDsgfTtcbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIHZhciBjcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpO1xuICAgIHZhciBsZWZ0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdMZWZ0JyA6ICdtYXJnaW5MZWZ0J107XG4gICAgdmFyIHRvcCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nVG9wJyA6ICdtYXJnaW5Ub3AnXTtcbiAgICB2YXIgcmlnaHQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1JpZ2h0JyA6ICdtYXJnaW5SaWdodCddO1xuICAgIHJldHVybiBbcGFyc2UobGVmdCksIHBhcnNlKHRvcCksIHBhcnNlKHJpZ2h0KV07XG59O1xuZXhwb3J0IHZhciBnZXRHYXBXaWR0aCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgaWYgKGdhcE1vZGUgPT09IHZvaWQgMCkgeyBnYXBNb2RlID0gJ21hcmdpbic7IH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHplcm9HYXA7XG4gICAgfVxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0KGdhcE1vZGUpO1xuICAgIHZhciBkb2N1bWVudFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IG9mZnNldHNbMF0sXG4gICAgICAgIHRvcDogb2Zmc2V0c1sxXSxcbiAgICAgICAgcmlnaHQ6IG9mZnNldHNbMl0sXG4gICAgICAgIGdhcDogTWF0aC5tYXgoMCwgd2luZG93V2lkdGggLSBkb2N1bWVudFdpZHRoICsgb2Zmc2V0c1syXSAtIG9mZnNldHNbMF0pLFxuICAgIH07XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgZnVsbFdpZHRoQ2xhc3NOYW1lLCB6ZXJvUmlnaHRDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEdhcFdpZHRoIH0gZnJvbSAnLi91dGlscyc7XG52YXIgU3R5bGUgPSBzdHlsZVNpbmdsZXRvbigpO1xuLy8gaW1wb3J0YW50IHRpcCAtIG9uY2Ugd2UgbWVhc3VyZSBzY3JvbGxCYXIgd2lkdGggYW5kIHJlbW92ZSB0aGVtXG4vLyB3ZSBjb3VsZCBub3QgcmVwZWF0IHRoaXMgb3BlcmF0aW9uXG4vLyB0aHVzIHdlIGFyZSB1c2luZyBzdHlsZS1zaW5nbGV0b24gLSBvbmx5IHRoZSBmaXJzdCBcInlldCBjb3JyZWN0XCIgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChfYSwgYWxsb3dSZWxhdGl2ZSwgZ2FwTW9kZSwgaW1wb3J0YW50KSB7XG4gICAgdmFyIGxlZnQgPSBfYS5sZWZ0LCB0b3AgPSBfYS50b3AsIHJpZ2h0ID0gX2EucmlnaHQsIGdhcCA9IF9hLmdhcDtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIHJldHVybiBcIlxcbiAgLlwiLmNvbmNhdChub1Njcm9sbGJhcnNDbGFzc05hbWUsIFwiIHtcXG4gICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBib2R5IHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XFxuICAgIFwiKS5jb25jYXQoW1xuICAgICAgICBhbGxvd1JlbGF0aXZlICYmIFwicG9zaXRpb246IHJlbGF0aXZlIFwiLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICAgICAgZ2FwTW9kZSA9PT0gJ21hcmdpbicgJiZcbiAgICAgICAgICAgIFwiXFxuICAgIHBhZGRpbmctbGVmdDogXCIuY29uY2F0KGxlZnQsIFwicHg7XFxuICAgIHBhZGRpbmctdG9wOiBcIikuY29uY2F0KHRvcCwgXCJweDtcXG4gICAgcGFkZGluZy1yaWdodDogXCIpLmNvbmNhdChyaWdodCwgXCJweDtcXG4gICAgbWFyZ2luLWxlZnQ6MDtcXG4gICAgbWFyZ2luLXRvcDowO1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgXCIpLFxuICAgICAgICBnYXBNb2RlID09PSAncGFkZGluZycgJiYgXCJwYWRkaW5nLXJpZ2h0OiBcIi5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcIiksXG4gICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcnKSwgXCJcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiB7XFxuICAgIHJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdChmdWxsV2lkdGhDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICBib2R5IHtcXG4gICAgXCIpLmNvbmNhdChyZW1vdmVkQmFyU2l6ZVZhcmlhYmxlLCBcIjogXCIpLmNvbmNhdChnYXAsIFwicHg7XFxuICB9XFxuXCIpO1xufTtcbi8qKlxuICogUmVtb3ZlcyBwYWdlIHNjcm9sbGJhciBhbmQgYmxvY2tzIHBhZ2Ugc2Nyb2xsIHdoZW4gbW91bnRlZFxuICovXG5leHBvcnQgdmFyIFJlbW92ZVNjcm9sbEJhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBub1JlbGF0aXZlID0gcHJvcHMubm9SZWxhdGl2ZSwgbm9JbXBvcnRhbnQgPSBwcm9wcy5ub0ltcG9ydGFudCwgX2EgPSBwcm9wcy5nYXBNb2RlLCBnYXBNb2RlID0gX2EgPT09IHZvaWQgMCA/ICdtYXJnaW4nIDogX2E7XG4gICAgLypcbiAgICAgZ2FwIHdpbGwgYmUgbWVhc3VyZWQgb24gZXZlcnkgY29tcG9uZW50IG1vdW50XG4gICAgIGhvd2V2ZXIgaXQgd2lsbCBiZSB1c2VkIG9ubHkgYnkgdGhlIFwiZmlyc3RcIiBpbnZvY2F0aW9uXG4gICAgIGR1ZSB0byBzaW5nbGV0b24gbmF0dXJlIG9mIDxTdHlsZVxuICAgICAqL1xuICAgIHZhciBnYXAgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldEdhcFdpZHRoKGdhcE1vZGUpOyB9LCBbZ2FwTW9kZV0pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlLCB7IHN0eWxlczogZ2V0U3R5bGVzKGdhcCwgIW5vUmVsYXRpdmUsIGdhcE1vZGUsICFub0ltcG9ydGFudCA/ICchaW1wb3J0YW50JyA6ICcnKSB9KTtcbn07XG4iLCJ2YXIgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgbm9uUGFzc2l2ZSA9IHBhc3NpdmVTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IGZhbHNlIH0gOiBmYWxzZTtcbiIsInZhciBhbHdheXNDb250YWluc1Njcm9sbCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gdGV4dGFyZWEgd2lsbCBhbHdheXMgX2NvbnRhaW5fIHNjcm9sbCBpbnNpZGUgc2VsZi4gSXQgb25seSBjYW4gYmUgaGlkZGVuXG4gICAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJztcbn07XG52YXIgZWxlbWVudENhbkJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSwgb3ZlcmZsb3cpIHtcbiAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgcmV0dXJuIChcbiAgICAvLyBub3Qtbm90LXNjcm9sbGFibGVcbiAgICBzdHlsZXNbb3ZlcmZsb3ddICE9PSAnaGlkZGVuJyAmJlxuICAgICAgICAvLyBjb250YWlucyBzY3JvbGwgaW5zaWRlIHNlbGZcbiAgICAgICAgIShzdHlsZXMub3ZlcmZsb3dZID09PSBzdHlsZXMub3ZlcmZsb3dYICYmICFhbHdheXNDb250YWluc1Njcm9sbChub2RlKSAmJiBzdHlsZXNbb3ZlcmZsb3ddID09PSAndmlzaWJsZScpKTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WScpOyB9O1xudmFyIGVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkID0gZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIGVsZW1lbnRDYW5CZVNjcm9sbGVkKG5vZGUsICdvdmVyZmxvd1gnKTsgfTtcbmV4cG9ydCB2YXIgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAoYXhpcywgbm9kZSkge1xuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICBkbyB7XG4gICAgICAgIC8vIFNraXAgb3ZlciBzaGFkb3cgcm9vdFxuICAgICAgICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgIT09ICd1bmRlZmluZWQnICYmIGN1cnJlbnQgaW5zdGFuY2VvZiBTaGFkb3dSb290KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1Njcm9sbGFibGUgPSBlbGVtZW50Q291bGRCZVNjcm9sbGVkKGF4aXMsIGN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNTY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgY3VycmVudCksIHMgPSBfYVsxXSwgZCA9IF9hWzJdO1xuICAgICAgICAgICAgaWYgKHMgPiBkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IGRvY3VtZW50LmJvZHkpO1xuICAgIHJldHVybiBmYWxzZTtcbn07XG52YXIgZ2V0VlNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxUb3AgPSBfYS5zY3JvbGxUb3AsIHNjcm9sbEhlaWdodCA9IF9hLnNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0ID0gX2EuY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBjbGllbnRIZWlnaHQsXG4gICAgXTtcbn07XG52YXIgZ2V0SFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxMZWZ0ID0gX2Euc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggPSBfYS5zY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggPSBfYS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gW1xuICAgICAgICBzY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxXaWR0aCxcbiAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgXTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkKG5vZGUpIDogZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQobm9kZSk7XG59O1xudmFyIGdldFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGdldFZTY3JvbGxWYXJpYWJsZXMobm9kZSkgOiBnZXRIU2Nyb2xsVmFyaWFibGVzKG5vZGUpO1xufTtcbnZhciBnZXREaXJlY3Rpb25GYWN0b3IgPSBmdW5jdGlvbiAoYXhpcywgZGlyZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb24gaXMgcnRsIChyaWdodC10by1sZWZ0KSwgdGhlbiBzY3JvbGxMZWZ0IGlzIDAgd2hlbiB0aGUgc2Nyb2xsYmFyIGlzIGF0IGl0cyByaWdodG1vc3QgcG9zaXRpb24sXG4gICAgICogYW5kIHRoZW4gaW5jcmVhc2luZ2x5IG5lZ2F0aXZlIGFzIHlvdSBzY3JvbGwgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBjb250ZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvc2Nyb2xsTGVmdFxuICAgICAqL1xuICAgIHJldHVybiBheGlzID09PSAnaCcgJiYgZGlyZWN0aW9uID09PSAncnRsJyA/IC0xIDogMTtcbn07XG5leHBvcnQgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uIChheGlzLCBlbmRUYXJnZXQsIGV2ZW50LCBzb3VyY2VEZWx0YSwgbm9PdmVyc2Nyb2xsKSB7XG4gICAgdmFyIGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihheGlzLCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbmRUYXJnZXQpLmRpcmVjdGlvbik7XG4gICAgdmFyIGRlbHRhID0gZGlyZWN0aW9uRmFjdG9yICogc291cmNlRGVsdGE7XG4gICAgLy8gZmluZCBzY3JvbGxhYmxlIHRhcmdldFxuICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHRhcmdldEluTG9jayA9IGVuZFRhcmdldC5jb250YWlucyh0YXJnZXQpO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGxUb3AgPSAwO1xuICAgIGRvIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0U2Nyb2xsVmFyaWFibGVzKGF4aXMsIHRhcmdldCksIHBvc2l0aW9uID0gX2FbMF0sIHNjcm9sbF8xID0gX2FbMV0sIGNhcGFjaXR5ID0gX2FbMl07XG4gICAgICAgIHZhciBlbGVtZW50U2Nyb2xsID0gc2Nyb2xsXzEgLSBjYXBhY2l0eSAtIGRpcmVjdGlvbkZhY3RvciAqIHBvc2l0aW9uO1xuICAgICAgICBpZiAocG9zaXRpb24gfHwgZWxlbWVudFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbCArPSBlbGVtZW50U2Nyb2xsO1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbFRvcCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChcbiAgICAvLyBwb3J0YWxlZCBjb250ZW50XG4gICAgKCF0YXJnZXRJbkxvY2sgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudC5ib2R5KSB8fFxuICAgICAgICAvLyBzZWxmIGNvbnRlbnRcbiAgICAgICAgKHRhcmdldEluTG9jayAmJiAoZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgZW5kVGFyZ2V0ID09PSB0YXJnZXQpKSk7XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGwgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzRGVsdGFQb3NpdGl2ZSAmJlxuICAgICAgICAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGxUb3AgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIC1kZWx0YSA+IGF2YWlsYWJsZVNjcm9sbFRvcCkpKSB7XG4gICAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaG91bGRDYW5jZWxTY3JvbGw7XG59O1xuIiwiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsQmFyIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXInO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgbm9uUGFzc2l2ZSB9IGZyb20gJy4vYWdncmVzaXZlQ2FwdHVyZSc7XG5pbXBvcnQgeyBoYW5kbGVTY3JvbGwsIGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIH0gZnJvbSAnLi9oYW5kbGVTY3JvbGwnO1xuZXhwb3J0IHZhciBnZXRUb3VjaFhZID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdjaGFuZ2VkVG91Y2hlcycgaW4gZXZlbnQgPyBbZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WV0gOiBbMCwgMF07XG59O1xuZXhwb3J0IHZhciBnZXREZWx0YVhZID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJldHVybiBbZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0YVldOyB9O1xudmFyIGV4dHJhY3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgcmV0dXJuIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWY7XG59O1xudmFyIGRlbHRhQ29tcGFyZSA9IGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4WzBdID09PSB5WzBdICYmIHhbMV0gPT09IHlbMV07IH07XG52YXIgZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gXCJcXG4gIC5ibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBub25lO31cXG4gIC5hbGxvdy1pbnRlcmFjdGl2aXR5LVwiKS5jb25jYXQoaWQsIFwiIHtwb2ludGVyLWV2ZW50czogYWxsO31cXG5cIik7IH07XG52YXIgaWRDb3VudGVyID0gMDtcbnZhciBsb2NrU3RhY2sgPSBbXTtcbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVTY3JvbGxTaWRlQ2FyKHByb3BzKSB7XG4gICAgdmFyIHNob3VsZFByZXZlbnRRdWV1ZSA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgdmFyIHRvdWNoU3RhcnRSZWYgPSBSZWFjdC51c2VSZWYoWzAsIDBdKTtcbiAgICB2YXIgYWN0aXZlQXhpcyA9IFJlYWN0LnVzZVJlZigpO1xuICAgIHZhciBpZCA9IFJlYWN0LnVzZVN0YXRlKGlkQ291bnRlcisrKVswXTtcbiAgICB2YXIgU3R5bGUgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiBzdHlsZVNpbmdsZXRvbigpOyB9KVswXTtcbiAgICB2YXIgbGFzdFByb3BzID0gUmVhY3QudXNlUmVmKHByb3BzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0UHJvcHMuY3VycmVudCA9IHByb3BzO1xuICAgIH0sIFtwcm9wc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwcm9wcy5pbmVydCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgIHZhciBhbGxvd18xID0gX19zcHJlYWRBcnJheShbcHJvcHMubG9ja1JlZi5jdXJyZW50XSwgKHByb3BzLnNoYXJkcyB8fCBbXSkubWFwKGV4dHJhY3RSZWYpLCB0cnVlKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7XG4gICAgICAgICAgICAgICAgYWxsb3dfMS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShcImFsbG93LWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSwgW3Byb3BzLmluZXJ0LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQsIHByb3BzLnNoYXJkc10pO1xuICAgIHZhciBzaG91bGRDYW5jZWxFdmVudCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCwgcGFyZW50KSB7XG4gICAgICAgIGlmICgndG91Y2hlcycgaW4gZXZlbnQgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAhbGFzdFByb3BzLmN1cnJlbnQuYWxsb3dQaW5jaFpvb207XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdWNoID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIHZhciB0b3VjaFN0YXJ0ID0gdG91Y2hTdGFydFJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgZGVsdGFYID0gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiB0b3VjaFN0YXJ0WzBdIC0gdG91Y2hbMF07XG4gICAgICAgIHZhciBkZWx0YVkgPSAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IHRvdWNoU3RhcnRbMV0gLSB0b3VjaFsxXTtcbiAgICAgICAgdmFyIGN1cnJlbnRBeGlzO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB2YXIgbW92ZURpcmVjdGlvbiA9IE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpID8gJ2gnIDogJ3YnO1xuICAgICAgICAvLyBhbGxvdyBob3Jpem9udGFsIHRvdWNoIG1vdmUgb24gUmFuZ2UgaW5wdXRzLiBUaGV5IHdpbGwgbm90IGNhdXNlIGFueSBzY3JvbGxcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBtb3ZlRGlyZWN0aW9uID09PSAnaCcgJiYgdGFyZ2V0LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgIGlmICghY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbiA9PT0gJ3YnID8gJ2gnIDogJ3YnO1xuICAgICAgICAgICAgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgICAgICAvLyBvdGhlciBheGlzIG1pZ2h0IGJlIG5vdCBzY3JvbGxhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY3RpdmVBeGlzLmN1cnJlbnQgJiYgJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCAmJiAoZGVsdGFYIHx8IGRlbHRhWSkpIHtcbiAgICAgICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IGN1cnJlbnRBeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudEF4aXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxpbmdBeGlzID0gYWN0aXZlQXhpcy5jdXJyZW50IHx8IGN1cnJlbnRBeGlzO1xuICAgICAgICByZXR1cm4gaGFuZGxlU2Nyb2xsKGNhbmNlbGluZ0F4aXMsIHBhcmVudCwgZXZlbnQsIGNhbmNlbGluZ0F4aXMgPT09ICdoJyA/IGRlbHRhWCA6IGRlbHRhWSwgdHJ1ZSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRQcmV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKF9ldmVudCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBfZXZlbnQ7XG4gICAgICAgIGlmICghbG9ja1N0YWNrLmxlbmd0aCB8fCBsb2NrU3RhY2tbbG9ja1N0YWNrLmxlbmd0aCAtIDFdICE9PSBTdHlsZSkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBsYXN0IGFjdGl2ZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWx0YSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZ2V0RGVsdGFYWShldmVudCkgOiBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHNvdXJjZUV2ZW50ID0gc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLm5hbWUgPT09IGV2ZW50LnR5cGUgJiYgZS50YXJnZXQgPT09IGV2ZW50LnRhcmdldCAmJiBkZWx0YUNvbXBhcmUoZS5kZWx0YSwgZGVsdGEpOyB9KVswXTtcbiAgICAgICAgLy8gc2VsZiBldmVudCwgYW5kIHNob3VsZCBiZSBjYW5jZWxlZFxuICAgICAgICBpZiAoc291cmNlRXZlbnQgJiYgc291cmNlRXZlbnQuc2hvdWxkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3V0c2lkZSBvciBzaGFyZCBldmVudFxuICAgICAgICBpZiAoIXNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgc2hhcmROb2RlcyA9IChsYXN0UHJvcHMuY3VycmVudC5zaGFyZHMgfHwgW10pXG4gICAgICAgICAgICAgICAgLm1hcChleHRyYWN0UmVmKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7IH0pO1xuICAgICAgICAgICAgdmFyIHNob3VsZFN0b3AgPSBzaGFyZE5vZGVzLmxlbmd0aCA+IDAgPyBzaG91bGRDYW5jZWxFdmVudChldmVudCwgc2hhcmROb2Rlc1swXSkgOiAhbGFzdFByb3BzLmN1cnJlbnQubm9Jc29sYXRpb247XG4gICAgICAgICAgICBpZiAoc2hvdWxkU3RvcCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmFtZSwgZGVsdGEsIHRhcmdldCwgc2hvdWxkKSB7XG4gICAgICAgIHZhciBldmVudCA9IHsgbmFtZTogbmFtZSwgZGVsdGE6IGRlbHRhLCB0YXJnZXQ6IHRhcmdldCwgc2hvdWxkOiBzaG91bGQgfTtcbiAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQucHVzaChldmVudCk7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgIT09IGV2ZW50OyB9KTtcbiAgICAgICAgfSwgMSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaFN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRvdWNoU3RhcnRSZWYuY3VycmVudCA9IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICBhY3RpdmVBeGlzLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxXaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBzaG91bGRDYW5jZWwoZXZlbnQudHlwZSwgZ2V0RGVsdGFYWShldmVudCksIGV2ZW50LnRhcmdldCwgc2hvdWxkQ2FuY2VsRXZlbnQoZXZlbnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCkpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgc2Nyb2xsVG91Y2hNb3ZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXRUb3VjaFhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvY2tTdGFjay5wdXNoKFN0eWxlKTtcbiAgICAgICAgcHJvcHMuc2V0Q2FsbGJhY2tzKHtcbiAgICAgICAgICAgIG9uU2Nyb2xsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvbldoZWVsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IHNjcm9sbFRvdWNoTW92ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NrU3RhY2sgPSBsb2NrU3RhY2suZmlsdGVyKGZ1bmN0aW9uIChpbnN0KSB7IHJldHVybiBpbnN0ICE9PSBTdHlsZTsgfSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHZhciByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGluZXJ0ID0gcHJvcHMuaW5lcnQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBpbmVydCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZW5lcmF0ZVN0eWxlKGlkKSB9KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZVNjcm9sbEJhciA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsQmFyLCB7IGdhcE1vZGU6IFwibWFyZ2luXCIgfSkgOiBudWxsKSk7XG59XG4iLCJpbXBvcnQgeyBleHBvcnRTaWRlY2FyIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsU2lkZUNhciB9IGZyb20gJy4vU2lkZUVmZmVjdCc7XG5pbXBvcnQgeyBlZmZlY3RDYXIgfSBmcm9tICcuL21lZGl1bSc7XG5leHBvcnQgZGVmYXVsdCBleHBvcnRTaWRlY2FyKGVmZmVjdENhciwgUmVtb3ZlU2Nyb2xsU2lkZUNhcik7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsIH0gZnJvbSAnLi9VSSc7XG5pbXBvcnQgU2lkZUNhciBmcm9tICcuL3NpZGVjYXInO1xudmFyIFJlYWN0UmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgcmVmOiByZWYsIHNpZGVDYXI6IFNpZGVDYXIgfSkpKTsgfSk7XG5SZWFjdFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0gUmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXM7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlbW92ZVNjcm9sbDtcbiIsInZhciBnZXREZWZhdWx0UGFyZW50ID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzYW1wbGVUYXJnZXQgPSBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0WzBdIDogb3JpZ2luYWxUYXJnZXQ7XG4gICAgcmV0dXJuIHNhbXBsZVRhcmdldC5vd25lckRvY3VtZW50LmJvZHk7XG59O1xudmFyIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHVuY29udHJvbGxlZE5vZGVzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBtYXJrZXJNYXAgPSB7fTtcbnZhciBsb2NrQ291bnQgPSAwO1xudmFyIHVud3JhcEhvc3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlICYmIChub2RlLmhvc3QgfHwgdW53cmFwSG9zdChub2RlLnBhcmVudE5vZGUpKTtcbn07XG52YXIgY29ycmVjdFRhcmdldHMgPSBmdW5jdGlvbiAocGFyZW50LCB0YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRhcmdldHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmIChwYXJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29ycmVjdGVkVGFyZ2V0ID0gdW53cmFwSG9zdCh0YXJnZXQpO1xuICAgICAgICBpZiAoY29ycmVjdGVkVGFyZ2V0ICYmIHBhcmVudC5jb250YWlucyhjb3JyZWN0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29ycmVjdGVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FyaWEtaGlkZGVuJywgdGFyZ2V0LCAnaW4gbm90IGNvbnRhaW5lZCBpbnNpZGUnLCBwYXJlbnQsICcuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gQm9vbGVhbih4KTsgfSk7XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2NvbnRyb2xBdHRyaWJ1dGVdIC0gaHRtbCBBdHRyaWJ1dGUgdG8gY29udHJvbFxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbnZhciBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lLCBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgdmFyIHRhcmdldHMgPSBjb3JyZWN0VGFyZ2V0cyhwYXJlbnROb2RlLCBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICAgICAgbWFya2VyTWFwW21hcmtlck5hbWVdID0gbmV3IFdlYWtNYXAoKTtcbiAgICB9XG4gICAgdmFyIG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gICAgdmFyIGhpZGRlbk5vZGVzID0gW107XG4gICAgdmFyIGVsZW1lbnRzVG9LZWVwID0gbmV3IFNldCgpO1xuICAgIHZhciBlbGVtZW50c1RvU3RvcCA9IG5ldyBTZXQodGFyZ2V0cyk7XG4gICAgdmFyIGtlZXAgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKCFlbCB8fCBlbGVtZW50c1RvS2VlcC5oYXMoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudHNUb0tlZXAuYWRkKGVsKTtcbiAgICAgICAga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgICB9O1xuICAgIHRhcmdldHMuZm9yRWFjaChrZWVwKTtcbiAgICB2YXIgZGVlcCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKCFwYXJlbnQgfHwgZWxlbWVudHNUb1N0b3AuaGFzKHBhcmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHBhcmVudC5jaGlsZHJlbiwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1RvS2VlcC5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgYWxyZWFkeUhpZGRlbiA9IGF0dHIgIT09IG51bGwgJiYgYXR0ciAhPT0gJ2ZhbHNlJztcbiAgICAgICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gKGNvdW50ZXJNYXAuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgICAgICAgICB2YXIgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJWYWx1ZSA9PT0gMSAmJiBhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLnNldChub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG1hcmtlck5hbWUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBkZWVwKHBhcmVudE5vZGUpO1xuICAgIGVsZW1lbnRzVG9LZWVwLmNsZWFyKCk7XG4gICAgbG9ja0NvdW50Kys7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGlkZGVuTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJNYXAuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdW5jb250cm9sbGVkTm9kZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1bmNvbnRyb2xsZWROb2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobWFya2VyTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NrQ291bnQtLTtcbiAgICAgICAgaWYgKCFsb2NrQ291bnQpIHtcbiAgICAgICAgICAgIC8vIGNsZWFyXG4gICAgICAgICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgbWFya2VyTWFwID0ge307XG4gICAgICAgIH1cbiAgICB9O1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgYXJpYS1oaWRkZW5cbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaGlkZU90aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLWFyaWEtaGlkZGVuJzsgfVxuICAgIHZhciB0YXJnZXRzID0gQXJyYXkuZnJvbShBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgLy8gd2Ugc2hvdWxkIG5vdCBoaWRlIGFyaWFMaXZlIGVsZW1lbnRzIC0gaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS9hcmlhLWhpZGRlbi9pc3N1ZXMvMTBcbiAgICB0YXJnZXRzLnB1c2guYXBwbHkodGFyZ2V0cywgQXJyYXkuZnJvbShhY3RpdmVQYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKTtcbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh0YXJnZXRzLCBhY3RpdmVQYXJlbnROb2RlLCBtYXJrZXJOYW1lLCAnYXJpYS1oaWRkZW4nKTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGluZXJ0XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIGluZXJ0T3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtaW5lcnQtZWQnOyB9XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMob3JpZ2luYWxUYXJnZXQsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdpbmVydCcpO1xufTtcbi8qKlxuICogQHJldHVybnMgaWYgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIGluZXJ0XG4gKi9cbmV4cG9ydCB2YXIgc3VwcG9ydHNJbmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBBdXRvbWF0aWMgZnVuY3Rpb24gdG8gXCJzdXBwcmVzc1wiIERPTSBlbGVtZW50cyAtIF9oaWRlXyBvciBfaW5lcnRfIGluIHRoZSBiZXN0IHBvc3NpYmxlIHdheVxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBzdXBwcmVzc090aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLXN1cHByZXNzZWQnOyB9XG4gICAgcmV0dXJuIChzdXBwb3J0c0luZXJ0KCkgPyBpbmVydE90aGVycyA6IGhpZGVPdGhlcnMpKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKTtcbn07XG4iLCJpbXBvcnQgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVJlZiBhcyAkNjdVSG0kdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ2N1VIbSRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkNjdVSG0kdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDY3VUhtJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ2N1VIbSRDaGlsZHJlbiwgdXNlRWZmZWN0IGFzICQ2N1VIbSR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQ2N1VIbSRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2N1VIbSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlLCBjcmVhdGVDb250ZXh0IGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDY3VUhtJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDY3VUhtJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkNjdVSG0kRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDY3VUhtJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDY3VUhtJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNjdVSG0kUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkNjdVSG0kdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkNjdVSG0kUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQ2N1VIbSRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7U2xvdCBhcyAkNjdVSG0kU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSA9ICdEaWFsb2cnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MV0gPSAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlKCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ1Byb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUpO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIG1vZGFsOiBtb2RhbCA9IHRydWUgIH0gPSBwcm9wcztcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVEaWFsb2csXG4gICAgICAgIHRyaWdnZXJSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgIGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYsXG4gICAgICAgIGNvbnRlbnRJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIHRpdGxlSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbklkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBvbk9wZW5Ub2dnbGU6ICQ2N1VIbSR1c2VDYWxsYmFjaygoKT0+c2V0T3BlbigocHJldk9wZW4pPT4hcHJldk9wZW5cbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBtb2RhbDogbW9kYWxcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUUgPSAnRGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMmUxZTExMjJjZjBjYmE4OCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29tcG9zZWRUcmlnZ2VyUmVmID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQudHJpZ2dlclJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5idXR0b24sICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImRpYWxvZ1wiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkVHJpZ2dlclJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIGNvbnRleHQub25PcGVuVG9nZ2xlKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSA9ICdEaWFsb2dQb3J0YWwnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FLCB7XG4gICAgZm9yY2VNb3VudDogdW5kZWZpbmVkXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sICQ2N1VIbSRDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9Pi8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByZXNlbmNlLCB7XG4gICAgICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQb3J0YWwsIHtcbiAgICAgICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgICAgICB9LCBjaGlsZCkpXG4gICAgKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dPdmVybGF5XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUgPSAnRGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUVcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkT1ZFUkxBWV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyAvLyBNYWtlIHN1cmUgYENvbnRlbnRgIGlzIHNjcm9sbGFibGUgZXZlbiB3aGVuIGl0IGRvZXNuJ3QgbGl2ZSBpbnNpZGUgYFJlbW92ZVNjcm9sbGBcbiAgICAvLyBpZS4gd2hlbiBgT3ZlcmxheWAgYW5kIGBDb250ZW50YCBhcmUgc2libGluZ3NcbiAgICAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkNjdVSG0kU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWUsXG4gICAgICAgIHNoYXJkczogW1xuICAgICAgICAgICAgY29udGV4dC5jb250ZW50UmVmXG4gICAgICAgIF1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuZGl2LCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKGNvbnRleHQub3BlbilcbiAgICB9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYgLy8gV2UgcmUtZW5hYmxlIHBvaW50ZXItZXZlbnRzIHByZXZlbnRlZCBieSBgRGlhbG9nLkNvbnRlbnRgIHRvIGFsbG93IHNjcm9sbGluZyB0aGUgb3ZlcmxheS5cbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgLi4ub3ZlcmxheVByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FID0gJ0RpYWxvZ0NvbnRlbnQnO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHBvcnRhbENvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCB7IGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgPSBwb3J0YWxDb250ZXh0LmZvcmNlTW91bnQgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb250ZW50UmVmLCBjb250ZW50UmVmKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkNjdVSG0kaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIG1ha2Ugc3VyZSBmb2N1cyBpc24ndCB0cmFwcGVkIG9uY2UgYERpYWxvZ0NvbnRlbnRgIGhhcyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBGb2N1czogY29udGV4dC5vcGVuLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyUmVmJGMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjLmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25PdXRzaWRlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQ7XG4gICAgICAgICAgICBjb25zdCBjdHJsTGVmdENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDAgJiYgb3JpZ2luYWxFdmVudC5jdHJsS2V5ID09PSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNSaWdodENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDIgfHwgY3RybExlZnRDbGljazsgLy8gSWYgdGhlIGV2ZW50IGlzIGEgcmlnaHQtY2xpY2ssIHdlIHNob3VsZG4ndCBjbG9zZSBiZWNhdXNlXG4gICAgICAgICAgICAvLyBpdCBpcyBlZmZlY3RpdmVseSBhcyBpZiB3ZSByaWdodC1jbGlja2VkIHRoZSBgT3ZlcmxheWAuXG4gICAgICAgICAgICBpZiAoaXNSaWdodENsaWNrKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgYGZvY3Vzb3V0YCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c091dHNpZGUsIChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHRyYXBGb2N1czogZmFsc2UsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25DbG9zZUF1dG9Gb2M7XG4gICAgICAgICAgICAoX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID0gcHJvcHMub25DbG9zZUF1dG9Gb2N1cykgPT09IG51bGwgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGMyO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIuZm9jdXMoKTsgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25JbnRlcmFjdE91dHMsIF9jb250ZXh0JHRyaWdnZXJSZWYkYzM7XG4gICAgICAgICAgICAoX3Byb3BzJG9uSW50ZXJhY3RPdXRzID0gcHJvcHMub25JbnRlcmFjdE91dHNpZGUpID09PSBudWxsIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJykgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSAvLyBQcmV2ZW50IGRpc21pc3Npbmcgd2hlbiBjbGlja2luZyB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGlzIGFscmVhZHkgc2V0dXAgdG8gY2xvc2UsIHdpdGhvdXQgZG9pbmcgc28gd291bGRcbiAgICAgICAgICAgIC8vIGNhdXNlIGl0IHRvIGNsb3NlIGFuZCBpbW1lZGlhdGVseSBvcGVuLlxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SXNUcmlnZ2VyID0gKF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRleHQkdHJpZ2dlclJlZiRjMy5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldElzVHJpZ2dlcikgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT24gU2FmYXJpIGlmIHRoZSB0cmlnZ2VyIGlzIGluc2lkZSBhIGNvbnRhaW5lciB3aXRoIHRhYkluZGV4PXswfSwgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICAvLyB3ZSB3aWxsIGdldCB0aGUgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQgb24gdGhlIHRyaWdnZXIsIGJ1dCB0aGVuIGEgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gZm9jdXMgb3V0c2lkZSBldmVudCBvbiB0aGUgY29udGFpbmVyLCB3ZSBpZ25vcmUgYW55IGZvY3VzIG91dHNpZGUgZXZlbnQgd2hlbiB3ZSd2ZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYWQgYSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudC5cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAnZm9jdXNpbicgJiYgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCB0cmFwRm9jdXM6IHRyYXBGb2N1cyAsIG9uT3BlbkF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBEaWFsb2dgIHdpbGwgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlYWN1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICQ2N1VIbSR1c2VGb2N1c0d1YXJkcygpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB0cmFwcGVkOiB0cmFwRm9jdXMsXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzXG4gICAgfSwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRGlzbWlzc2FibGVMYXllciwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogY29udGV4dC5kZXNjcmlwdGlvbklkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBjb250ZXh0LnRpdGxlSWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSkpKSwgZmFsc2UpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVElUTEVfTkFNRSA9ICdEaWFsb2dUaXRsZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udGl0bGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmgyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC50aXRsZUlkXG4gICAgfSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUucCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGNvbnRleHQuZGVzY3JpcHRpb25JZFxuICAgIH0sIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDbG9zZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRSA9ICdEaWFsb2dDbG9zZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4uY2xvc2VQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgIH0sIGNsb3NlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShvcGVuKSB7XG4gICAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUgPSAnRGlhbG9nVGl0bGVXYXJuaW5nJztcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0XSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUsIHtcbiAgICBjb250ZW50TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSxcbiAgICB0aXRsZU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLFxuICAgIGRvY3NTbHVnOiAnZGlhbG9nJ1xufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVGl0bGVXYXJuaW5nID0gKHsgdGl0bGVJZDogdGl0bGVJZCAgfSk9PntcbiAgICBjb25zdCB0aXRsZVdhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfVxcYCByZXF1aXJlcyBhIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbklmIHlvdSB3YW50IHRvIGhpZGUgdGhlIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgLCB5b3UgY2FuIHdyYXAgaXQgd2l0aCBvdXIgVmlzdWFsbHlIaWRkZW4gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzLyR7dGl0bGVXYXJuaW5nQ29udGV4dC5kb2NzU2x1Z31gO1xuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRpdGxlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGl0bGVJZCk7XG4gICAgICAgICAgICBpZiAoIWhhc1RpdGxlKSB0aHJvdyBuZXcgRXJyb3IoTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIHRpdGxlSWRcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uV2FybmluZyc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGVzY3JpcHRpb25XYXJuaW5nID0gKHsgY29udGVudFJlZjogY29udGVudFJlZiAsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQgIH0pPT57XG4gICAgY29uc3QgZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VXYXJuaW5nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FKTtcbiAgICBjb25zdCBNRVNTQUdFID0gYFdhcm5pbmc6IE1pc3NpbmcgXFxgRGVzY3JpcHRpb25cXGAgb3IgXFxgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxcYCBmb3IgeyR7ZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dC5jb250ZW50TmFtZX19LmA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVkQnlJZCA9IChfY29udGVudFJlZiRjdXJyZW50ID0gY29udGVudFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGVudFJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudFJlZiRjdXJyZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpOyAvLyBpZiB3ZSBoYXZlIGFuIGlkIGFuZCB0aGUgdXNlciBoYXNuJ3Qgc2V0IGFyaWEtZGVzY3JpYmVkYnk9e3VuZGVmaW5lZH1cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uSWQgJiYgZGVzY3JpYmVkQnlJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXNjcmlwdGlvbklkKTtcbiAgICAgICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgY29udGVudFJlZixcbiAgICAgICAgZGVzY3JpcHRpb25JZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTM7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZGFkN2M5NTU0MmJhY2NlMDtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDU7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjO1xuXG5cblxuXG5leHBvcnQgeyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIGFzIGNyZWF0ZURpYWxvZ1Njb3BlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyBhcyBEaWFsb2csICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4IGFzIERpYWxvZ1RyaWdnZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwIGFzIERpYWxvZ1BvcnRhbCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcgYXMgRGlhbG9nT3ZlcmxheSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgYXMgRGlhbG9nQ29udGVudCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkgYXMgRGlhbG9nVGl0bGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IGFzIERpYWxvZ0Rlc2NyaXB0aW9uLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyBhcyBEaWFsb2dDbG9zZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIGFzIENsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiBhcyBXYXJuaW5nUHJvdmlkZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4MlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4MilcIj5cbjxwYXRoIGQ9XCJNMTIgMTMuMDUzOEw2LjkyNjg5IDE4LjEyNjlDNi43ODg0NCAxOC4yNjU0IDYuNjE0NCAxOC4zMzYyIDYuNDA0NzkgMTguMzM5NEM2LjE5NTE5IDE4LjM0MjYgNi4wMTc5NSAxOC4yNzE4IDUuODczMDkgMTguMTI2OUM1LjcyODIgMTcuOTgyIDUuNjU1NzYgMTcuODA2NCA1LjY1NTc2IDE3LjZDNS42NTU3NiAxNy4zOTM2IDUuNzI4MiAxNy4yMTggNS44NzMwOSAxNy4wNzMxTDEwLjk0NjIgMTJMNS44NzMwOSA2LjkyNjg5QzUuNzM0NjIgNi43ODg0NCA1LjY2Mzc5IDYuNjE0NCA1LjY2MDU5IDYuNDA0NzlDNS42NTczNyA2LjE5NTE5IDUuNzI4MiA2LjAxNzk1IDUuODczMDkgNS44NzMwOUM2LjAxNzk1IDUuNzI4MiA2LjE5MzU5IDUuNjU1NzYgNi4zOTk5OSA1LjY1NTc2QzYuNjA2MzkgNS42NTU3NiA2Ljc4MjAyIDUuNzI4MiA2LjkyNjg5IDUuODczMDlMMTIgMTAuOTQ2MkwxNy4wNzMxIDUuODczMDlDMTcuMjExNSA1LjczNDYyIDE3LjM4NTYgNS42NjM3OSAxNy41OTUyIDUuNjYwNTlDMTcuODA0OCA1LjY1NzM3IDE3Ljk4MiA1LjcyODIgMTguMTI2OSA1Ljg3MzA5QzE4LjI3MTggNi4wMTc5NSAxOC4zNDQyIDYuMTkzNTkgMTguMzQ0MiA2LjM5OTk5QzE4LjM0NDIgNi42MDYzOSAxOC4yNzE4IDYuNzgyMDIgMTguMTI2OSA2LjkyNjg5TDEzLjA1MzggMTJMMTguMTI2OSAxNy4wNzMxQzE4LjI2NTQgMTcuMjExNSAxOC4zMzYyIDE3LjM4NTYgMTguMzM5NCAxNy41OTUyQzE4LjM0MjYgMTcuODA0OCAxOC4yNzE4IDE3Ljk4MiAxOC4xMjY5IDE4LjEyNjlDMTcuOTgyIDE4LjI3MTggMTcuODA2NCAxOC4zNDQyIDE3LjYgMTguMzQ0MkMxNy4zOTM2IDE4LjM0NDIgMTcuMjE4IDE4LjI3MTggMTcuMDczMSAxOC4xMjY5TDEyIDEzLjA1MzhaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsbnVsbCwiaW1wb3J0ICQ2dlloVSRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDZ2WWhVJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7U2xvdCBhcyAkNnZZaFUkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuLy8gV2UgaGF2ZSByZXNvcnRlZCB0byByZXR1cm5pbmcgc2xvdHMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXhwb3NpbmcgcHJpbWl0aXZlcyB0aGF0IGNhbiB0aGVuXG4vLyBiZSBzbG90dGVkIGxpa2UgYDxDb2xsZWN0aW9uSXRlbSBhcz17U2xvdH0+4oCmPC9Db2xsZWN0aW9uSXRlbT5gLlxuLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGlzc3VlcyB3aXRoIGdlbmVyaWMgdHlwZXMgdGhhdCBjYW5ub3QgYmUgc3RhdGljYWxseSBhbmFseXNlZFxuLy8gZHVlIHRvIGNyZWF0aW5nIHRoZW0gZHluYW1pY2FsbHkgdmlhIGNyZWF0ZUNvbGxlY3Rpb24uXG5mdW5jdGlvbiAkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMihuYW1lKSB7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblByb3ZpZGVyXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IFBST1ZJREVSX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25Qcm92aWRlcic7XG4gICAgY29uc3QgW2NyZWF0ZUNvbGxlY3Rpb25Db250ZXh0LCBjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gJDZ2WWhVJGNyZWF0ZUNvbnRleHRTY29wZShQUk9WSURFUl9OQU1FKTtcbiAgICBjb25zdCBbQ29sbGVjdGlvblByb3ZpZGVySW1wbCwgdXNlQ29sbGVjdGlvbkNvbnRleHRdID0gY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQoUFJPVklERVJfTkFNRSwge1xuICAgICAgICBjb2xsZWN0aW9uUmVmOiB7XG4gICAgICAgICAgICBjdXJyZW50OiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1NYXA6IG5ldyBNYXAoKVxuICAgIH0pO1xuICAgIGNvbnN0IENvbGxlY3Rpb25Qcm92aWRlciA9IChwcm9wcyk9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgcmVmID0gJDZ2WWhVJHJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAgICAgY29uc3QgaXRlbU1hcCA9ICQ2dlloVSRyZWFjdC51c2VSZWYobmV3IE1hcCgpKS5jdXJyZW50O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudChDb2xsZWN0aW9uUHJvdmlkZXJJbXBsLCB7XG4gICAgICAgICAgICBzY29wZTogc2NvcGUsXG4gICAgICAgICAgICBpdGVtTWFwOiBpdGVtTWFwLFxuICAgICAgICAgICAgY29sbGVjdGlvblJlZjogcmVmXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9O1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uUHJvdmlkZXIsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IFBST1ZJREVSX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uU2xvdFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBDT0xMRUNUSU9OX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvblNsb3QnO1xuICAgIGNvbnN0IENvbGxlY3Rpb25TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KENPTExFQ1RJT05fU0xPVF9OQU1FLCBzY29wZSk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LmNvbGxlY3Rpb25SZWYpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogQ09MTEVDVElPTl9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uSXRlbVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBJVEVNX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvbkl0ZW1TbG90JztcbiAgICBjb25zdCBJVEVNX0RBVEFfQVRUUiA9ICdkYXRhLXJhZGl4LWNvbGxlY3Rpb24taXRlbSc7XG4gICAgY29uc3QgQ29sbGVjdGlvbkl0ZW1TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5pdGVtRGF0YSB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHJlZiA9ICQ2dlloVSRyZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoSVRFTV9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgICAgJDZ2WWhVJHJlYWN0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5pdGVtTWFwLnNldChyZWYsIHtcbiAgICAgICAgICAgICAgICByZWY6IHJlZixcbiAgICAgICAgICAgICAgICAuLi5pdGVtRGF0YVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnZvaWQgY29udGV4dC5pdGVtTWFwLmRlbGV0ZShyZWYpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgW0lURU1fREFUQV9BVFRSXTogJycsXG4gICAgICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfSk7XG4gICAgLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKENvbGxlY3Rpb25JdGVtU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogSVRFTV9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB1c2VDb2xsZWN0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uIHVzZUNvbGxlY3Rpb24oc2NvcGUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KG5hbWUgKyAnQ29sbGVjdGlvbkNvbnN1bWVyJywgc2NvcGUpO1xuICAgICAgICBjb25zdCBnZXRJdGVtcyA9ICQ2dlloVSRyZWFjdC51c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbk5vZGUgPSBjb250ZXh0LmNvbGxlY3Rpb25SZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghY29sbGVjdGlvbk5vZGUpIHJldHVybiBbXTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyZWROb2RlcyA9IEFycmF5LmZyb20oY29sbGVjdGlvbk5vZGUucXVlcnlTZWxlY3RvckFsbChgWyR7SVRFTV9EQVRBX0FUVFJ9XWApKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbShjb250ZXh0Lml0ZW1NYXAudmFsdWVzKCkpO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJlZEl0ZW1zID0gaXRlbXMuc29ydCgoYSwgYik9Pm9yZGVyZWROb2Rlcy5pbmRleE9mKGEucmVmLmN1cnJlbnQpIC0gb3JkZXJlZE5vZGVzLmluZGV4T2YoYi5yZWYuY3VycmVudClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gb3JkZXJlZEl0ZW1zO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBjb250ZXh0LmNvbGxlY3Rpb25SZWYsXG4gICAgICAgICAgICBjb250ZXh0Lml0ZW1NYXBcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBnZXRJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgUHJvdmlkZXI6IENvbGxlY3Rpb25Qcm92aWRlcixcbiAgICAgICAgICAgIFNsb3Q6IENvbGxlY3Rpb25TbG90LFxuICAgICAgICAgICAgSXRlbVNsb3Q6IENvbGxlY3Rpb25JdGVtU2xvdFxuICAgICAgICB9LFxuICAgICAgICB1c2VDb2xsZWN0aW9uLFxuICAgICAgICBjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbiAgICBdO1xufVxuXG5cblxuXG5leHBvcnQgeyRlMDJhN2Q5Y2IxZGMxMjhjJGV4cG9ydCRjNzQxMjVhOGUzYWY2YmIyIGFzIGNyZWF0ZUNvbGxlY3Rpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHtjcmVhdGVDb250ZXh0IGFzICQ3R2pjZCRjcmVhdGVDb250ZXh0LCBjcmVhdGVFbGVtZW50IGFzICQ3R2pjZCRjcmVhdGVFbGVtZW50LCB1c2VDb250ZXh0IGFzICQ3R2pjZCR1c2VDb250ZXh0fSBmcm9tIFwicmVhY3RcIjtcblxuXG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpcmVjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGRpcjogZGlyICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUVsZW1lbnQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGRpclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzKGxvY2FsRGlyKSB7XG4gICAgY29uc3QgZ2xvYmFsRGlyID0gJDdHamNkJHVzZUNvbnRleHQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQpO1xuICAgIHJldHVybiBsb2NhbERpciB8fCBnbG9iYWxEaXIgfHwgJ2x0cic7XG59XG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSA9ICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxO1xuXG5cblxuXG5leHBvcnQgeyRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzIGFzIHVzZURpcmVjdGlvbiwgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxIGFzIERpcmVjdGlvblByb3ZpZGVyfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkOThJeWUkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkOThJeWUkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQ5OEl5ZSR1c2VSZWYsIHVzZVN0YXRlIGFzICQ5OEl5ZSR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICQ5OEl5ZSR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ5OEl5ZSR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29sbGVjdGlvbiBhcyAkOThJeWUkY3JlYXRlQ29sbGVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkOThJeWUkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUlkIGFzICQ5OEl5ZSR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDk4SXllJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDk4SXllJHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQ5OEl5ZSR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMgPSAncm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMnO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMgPSB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY2FuY2VsYWJsZTogdHJ1ZVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJvdmluZ0ZvY3VzR3JvdXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUgPSAnUm92aW5nRm9jdXNHcm91cCc7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24sICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQ5OEl5ZSRjcmVhdGVDb2xsZWN0aW9uKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjRdID0gJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZSgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSwgW1xuICAgICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbl0pO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c1Byb3ZpZGVyLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0XSA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzR3JvdXBJbXBsLCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUm92aW5nRm9jdXNHcm91cDogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gLCBsb29wOiBsb29wID0gZmFsc2UgLCBkaXI6IGRpciAsIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWRQcm9wICwgZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQ6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkICwgb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlOiBvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2UgLCBvbkVudHJ5Rm9jdXM6IG9uRW50cnlGb2N1cyAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQ5OEl5ZSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDk4SXllJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDk4SXllJHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFtjdXJyZW50VGFiU3RvcElkID0gbnVsbCwgc2V0Q3VycmVudFRhYlN0b3BJZF0gPSAkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBjdXJyZW50VGFiU3RvcElkUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkLFxuICAgICAgICBvbkNoYW5nZTogb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW2lzVGFiYmluZ0JhY2tPdXQsIHNldElzVGFiYmluZ0JhY2tPdXRdID0gJDk4SXllJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoYW5kbGVFbnRyeUZvY3VzID0gJDk4SXllJHVzZUNhbGxiYWNrUmVmKG9uRW50cnlGb2N1cyk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gICAgY29uc3QgaXNDbGlja0ZvY3VzUmVmID0gJDk4SXllJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW2ZvY3VzYWJsZUl0ZW1zQ291bnQsIHNldEZvY3VzYWJsZUl0ZW1zQ291bnRdID0gJDk4SXllJHVzZVN0YXRlKDApO1xuICAgICQ5OEl5ZSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgaGFuZGxlRW50cnlGb2N1cyk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pm5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZUVudHJ5Rm9jdXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGxvb3A6IGxvb3AsXG4gICAgICAgIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWQsXG4gICAgICAgIG9uSXRlbUZvY3VzOiAkOThJeWUkdXNlQ2FsbGJhY2soKHRhYlN0b3BJZCk9PnNldEN1cnJlbnRUYWJTdG9wSWQodGFiU3RvcElkKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldEN1cnJlbnRUYWJTdG9wSWRcbiAgICAgICAgXSksXG4gICAgICAgIG9uSXRlbVNoaWZ0VGFiOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldElzVGFiYmluZ0JhY2tPdXQodHJ1ZSlcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZDogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRGb2N1c2FibGVJdGVtc0NvdW50KChwcmV2Q291bnQpPT5wcmV2Q291bnQgKyAxXG4gICAgICAgICAgICApXG4gICAgICAgICwgW10pLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KT0+cHJldkNvdW50IC0gMVxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtdKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJDk4SXllJFByaW1pdGl2ZS5kaXYsICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiBpc1RhYmJpbmdCYWNrT3V0IHx8IGZvY3VzYWJsZUl0ZW1zQ291bnQgPT09IDAgPyAtMSA6IDAsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoKT0+e1xuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIFdlIG5vcm1hbGx5IHdvdWxkbid0IG5lZWQgdGhpcyBjaGVjaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGNoZWNrXG4gICAgICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSBTYWZhcmkgZG9lc24ndCBmb2N1cyBidXR0b25zIHdoZW4gY2xpY2tlZCwgYW5kXG4gICAgICAgICAgICAvLyBpbnN0ZWFkLCB0aGUgd3JhcHBlciB3aWxsIGdldCBmb2N1c2VkIGFuZCBub3QgdGhyb3VnaCBhIGJ1YmJsaW5nIGV2ZW50LlxuICAgICAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIWlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc0tleWJvYXJkRm9jdXMgJiYgIWlzVGFiYmluZ0JhY2tPdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KGVudHJ5Rm9jdXNFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmlkID09PSBjdXJyZW50VGFiU3RvcElkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlSXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVOb2Rlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uQmx1cjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgKCk9PnNldElzVGFiYmluZ0JhY2tPdXQoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwSXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXBJdGVtJztcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQgPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwICwgZm9jdXNhYmxlOiBmb2N1c2FibGUgPSB0cnVlICwgYWN0aXZlOiBhY3RpdmUgPSBmYWxzZSAsIHRhYlN0b3BJZDogdGFiU3RvcElkICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBhdXRvSWQgPSAkOThJeWUkdXNlSWQoKTtcbiAgICBjb25zdCBpZCA9IHRhYlN0b3BJZCB8fCBhdXRvSWQ7XG4gICAgY29uc3QgY29udGV4dCA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VSb3ZpbmdGb2N1c0NvbnRleHQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRSwgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IGlzQ3VycmVudFRhYlN0b3AgPSBjb250ZXh0LmN1cnJlbnRUYWJTdG9wSWQgPT09IGlkO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IHsgb25Gb2N1c2FibGVJdGVtQWRkOiBvbkZvY3VzYWJsZUl0ZW1BZGQgLCBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6IG9uRm9jdXNhYmxlSXRlbVJlbW92ZSAgfSA9IGNvbnRleHQ7XG4gICAgJDk4SXllJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQoKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+b25Gb2N1c2FibGVJdGVtUmVtb3ZlKClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQsXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLkl0ZW1TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCxcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCQ5OEl5ZSRQcmltaXRpdmUuc3BhbiwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdGFiSW5kZXg6IGlzQ3VycmVudFRhYlN0b3AgPyAwIDogLTEsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgaXRlbVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGZvY3VzaW5nIG5vbi1mb2N1c2FibGUgaXRlbXMgb24gYG1vdXNlZG93bmAuXG4gICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgaXRlbSBoYXMgdGFiSW5kZXg9ey0xfSwgdGhhdCBvbmx5IG1lYW5zIHRha2UgaXQgb3V0IG9mIHRoZSB0YWIgb3JkZXIuXG4gICAgICAgICAgICBpZiAoIWZvY3VzYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIGVsc2UgY29udGV4dC5vbkl0ZW1Gb2N1cyhpZCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PmNvbnRleHQub25JdGVtRm9jdXMoaWQpXG4gICAgICAgICksXG4gICAgICAgIG9uS2V5RG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uSXRlbVNoaWZ0VGFiKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgZm9jdXNJbnRlbnQgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIGNvbnRleHQub3JpZW50YXRpb24sIGNvbnRleHQuZGlyKTtcbiAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ2xhc3QnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JyB8fCBmb2N1c0ludGVudCA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVzID0gY29udGV4dC5sb29wID8gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHdyYXBBcnJheShjYW5kaWRhdGVOb2RlcywgY3VycmVudEluZGV4ICsgMSkgOiBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+JGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gLy8gcHJldHRpZXItaWdub3JlXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQgPSB7XG4gICAgQXJyb3dMZWZ0OiAncHJldicsXG4gICAgQXJyb3dVcDogJ3ByZXYnLFxuICAgIEFycm93UmlnaHQ6ICduZXh0JyxcbiAgICBBcnJvd0Rvd246ICduZXh0JyxcbiAgICBQYWdlVXA6ICdmaXJzdCcsXG4gICAgSG9tZTogJ2ZpcnN0JyxcbiAgICBQYWdlRG93bjogJ2xhc3QnLFxuICAgIEVuZDogJ2xhc3QnXG59O1xuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGtleSwgZGlyKSB7XG4gICAgaWYgKGRpciAhPT0gJ3J0bCcpIHJldHVybiBrZXk7XG4gICAgcmV0dXJuIGtleSA9PT0gJ0Fycm93TGVmdCcgPyAnQXJyb3dSaWdodCcgOiBrZXkgPT09ICdBcnJvd1JpZ2h0JyA/ICdBcnJvd0xlZnQnIDoga2V5O1xufVxuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50KGV2ZW50LCBvcmllbnRhdGlvbiwgZGlyKSB7XG4gICAgY29uc3Qga2V5ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGV2ZW50LmtleSwgZGlyKTtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgW1xuICAgICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICAgJ0Fycm93UmlnaHQnXG4gICAgXS5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIFtcbiAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAnQXJyb3dEb3duJ1xuICAgIF0uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UW2tleV07XG59XG5mdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVzKSB7XG4gICAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAvLyBpZiBmb2N1cyBpcyBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgdG8gZ28sIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBnb2luZyB0aHJvdWdoIHRoZSBjYW5kaWRhdGVzXG4gICAgICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICB9XG59XG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovIGZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciR3cmFwQXJyYXkoYXJyYXksIHN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gYXJyYXkubWFwKChfLCBpbmRleCk9PmFycmF5WyhzdGFydEluZGV4ICsgaW5kZXgpICUgYXJyYXkubGVuZ3RoXVxuICAgICk7XG59XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4O1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgPSAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0O1xuXG5cblxuXG5leHBvcnQgeyRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQgYXMgY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCBhcyBSb3ZpbmdGb2N1c0dyb3VwLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0IGFzIFJvdmluZ0ZvY3VzR3JvdXBJdGVtLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkMUlIemskZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkMUlIemskY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQxSUh6ayR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkMUlIemskdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDFJSHprJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge2NyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSBhcyAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCBSb290IGFzICQxSUh6ayRSb290LCBJdGVtIGFzICQxSUh6ayRJdGVtfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1c1wiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkMUlIemskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQxSUh6ayRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkMUlIemskdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkMUlIemskdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSA9ICdUYWJzJztcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkY3JlYXRlVGFic0NvbnRleHQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQzNTVmNWJkMjA5ZDdiMTNhXSA9ICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGUoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSwgW1xuICAgICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGVcbl0pO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoKTtcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHRdID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUpO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJyAsIGRpcjogZGlyICwgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlID0gJ2F1dG9tYXRpYycgLCAuLi50YWJzUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQxSUh6ayR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9ICQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IHZhbHVlUHJvcCxcbiAgICAgICAgb25DaGFuZ2U6IG9uVmFsdWVDaGFuZ2UsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVGFicyxcbiAgICAgICAgYmFzZUlkOiAkMUlIemskdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIHRhYnNQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNMaXN0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FID0gJ1RhYnNMaXN0JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIGxvb3A6IGxvb3AgPSB0cnVlICwgLi4ubGlzdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FLCBfX3Njb3BlVGFicyk7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlVGFicyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFJvb3QsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgb3JpZW50YXRpb246IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgIGRpcjogY29udGV4dC5kaXIsXG4gICAgICAgIGxvb3A6IGxvb3BcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgbGlzdFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUgPSAnVGFic1RyaWdnZXInO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJEl0ZW0sICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgZm9jdXNhYmxlOiAhZGlzYWJsZWQsXG4gICAgICAgIGFjdGl2ZTogaXNTZWxlY3RlZFxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmltaXRpdmUuYnV0dG9uLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogaXNTZWxlY3RlZCxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGlzU2VsZWN0ZWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZScsXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIGlkOiB0cmlnZ2VySWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIG9ubHkgY2FsbCBoYW5kbGVyIGlmIGl0J3MgdGhlIGxlZnQgYnV0dG9uIChtb3VzZWRvd24gZ2V0cyB0cmlnZ2VyZWQgYnkgYWxsIG1vdXNlIGJ1dHRvbnMpXG4gICAgICAgICAgICAvLyBidXQgbm90IHdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQgKGF2b2lkaW5nIE1hY09TIHJpZ2h0IGNsaWNrKVxuICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiBldmVudC5idXR0b24gPT09IDAgJiYgZXZlbnQuY3RybEtleSA9PT0gZmFsc2UpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIC8vIHByZXZlbnQgZm9jdXMgdG8gYXZvaWQgYWNjaWRlbnRhbCBhY3RpdmF0aW9uXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICcgJyxcbiAgICAgICAgICAgICAgICAnRW50ZXInXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIC8vIGhhbmRsZSBcImF1dG9tYXRpY1wiIGFjdGl2YXRpb24gaWYgbmVjZXNzYXJ5XG4gICAgICAgICAgICAvLyBpZS4gYWN0aXZhdGUgdGFiIGZvbGxvd2luZyBmb2N1c1xuICAgICAgICAgICAgY29uc3QgaXNBdXRvbWF0aWNBY3RpdmF0aW9uID0gY29udGV4dC5hY3RpdmF0aW9uTW9kZSAhPT0gJ21hbnVhbCc7XG4gICAgICAgICAgICBpZiAoIWlzU2VsZWN0ZWQgJiYgIWRpc2FibGVkICYmIGlzQXV0b21hdGljQWN0aXZhdGlvbikgY29udGV4dC5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FID0gJ1RhYnNDb250ZW50JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgY29uc3QgaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiA9ICQxSUh6ayR1c2VSZWYoaXNTZWxlY3RlZCk7XG4gICAgJDFJSHprJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCByQUYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUockFGKVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGlzU2VsZWN0ZWRcbiAgICB9LCAoeyBwcmVzZW50OiBwcmVzZW50ICB9KT0+LyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICAgICAgXCJkYXRhLW9yaWVudGF0aW9uXCI6IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICBoaWRkZW46ICFwcmVzZW50LFxuICAgICAgICAgICAgaWQ6IGNvbnRlbnRJZCxcbiAgICAgICAgICAgIHRhYkluZGV4OiAwXG4gICAgICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBpc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPyAnMHMnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBwcmVzZW50ICYmIGNoaWxkcmVuKVxuICAgICk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LXRyaWdnZXItJHt2YWx1ZX1gO1xufVxuZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LWNvbnRlbnQtJHt2YWx1ZX1gO1xufVxuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDk3MTJkMjJlZGMwZDc4YzE7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYjtcblxuXG5cblxuZXhwb3J0IHskNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYSBhcyBjcmVhdGVUYWJzU2NvcGUsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjIGFzIFRhYnMsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxIGFzIFRhYnNMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYSBhcyBUYWJzVHJpZ2dlciwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIgYXMgVGFic0NvbnRlbnQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IGFzIExpc3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJpbXBvcnQge3VzZVJlZiBhcyAkOEx2dkskdXNlUmVmLCB1c2VNZW1vIGFzICQ4THZ2SyR1c2VNZW1vfSBmcm9tIFwicmVhY3RcIjtcblxuXG5mdW5jdGlvbiAkMDEwYzI5MTNkYmQyZmUzZCRleHBvcnQkNWNhZTM2MWFkODJkY2U4Yih2YWx1ZSkge1xuICAgIGNvbnN0IHJlZiA9ICQ4THZ2SyR1c2VSZWYoe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHByZXZpb3VzOiB2YWx1ZVxuICAgIH0pOyAvLyBXZSBjb21wYXJlIHZhbHVlcyBiZWZvcmUgbWFraW5nIGFuIHVwZGF0ZSB0byBlbnN1cmUgdGhhdFxuICAgIC8vIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuIFRoaXMgZW5zdXJlcyB0aGUgcHJldmlvdXMgdmFsdWUgaXNcbiAgICAvLyBwZXJzaXN0ZWQgY29ycmVjdGx5IGJldHdlZW4gcmVuZGVycy5cbiAgICByZXR1cm4gJDhMdnZLJHVzZU1lbW8oKCk9PntcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQucHJldmlvdXMgPSByZWYuY3VycmVudC52YWx1ZTtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZi5jdXJyZW50LnByZXZpb3VzO1xuICAgIH0sIFtcbiAgICAgICAgdmFsdWVcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMDEwYzI5MTNkYmQyZmUzZCRleHBvcnQkNWNhZTM2MWFkODJkY2U4YiBhcyB1c2VQcmV2aW91c307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZVN0YXRlIGFzICQ5Z3lHUiR1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5mdW5jdGlvbiAkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOChlbGVtZW50KSB7XG4gICAgY29uc3QgW3NpemUsIHNldFNpemVdID0gJDlneUdSJHVzZVN0YXRlKHVuZGVmaW5lZCk7XG4gICAgJDlneUdSJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgLy8gcHJvdmlkZSBzaXplIGFzIGVhcmx5IGFzIHBvc3NpYmxlXG4gICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKT0+e1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBvbmx5IG9ic2VydmUgdGhlIG9uZSBlbGVtZW50LCB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciB0aGVcbiAgICAgICAgICAgICAgICAvLyBhcnJheVxuICAgICAgICAgICAgICAgIGlmICghZW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoO1xuICAgICAgICAgICAgICAgIGxldCBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKCdib3JkZXJCb3hTaXplJyBpbiBlbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJTaXplRW50cnkgPSBlbnRyeVsnYm9yZGVyQm94U2l6ZSddOyAvLyBpcm9uIG91dCBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSBBcnJheS5pc0FycmF5KGJvcmRlclNpemVFbnRyeSkgPyBib3JkZXJTaXplRW50cnlbMF0gOiBib3JkZXJTaXplRW50cnk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gYm9yZGVyU2l6ZVsnaW5saW5lU2l6ZSddO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBib3JkZXJTaXplWydibG9ja1NpemUnXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGBib3JkZXJCb3hTaXplYFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYWxjdWxhdGUgaXQgb3Vyc2VsdmVzIHRvIGdldCB0aGUgY29ycmVjdCBib3JkZXIgYm94LlxuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBib3g6ICdib3JkZXItYm94J1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICAgICAgO1xuICAgICAgICB9IGVsc2UgLy8gV2Ugb25seSB3YW50IHRvIHJlc2V0IHRvIGB1bmRlZmluZWRgIHdoZW4gdGhlIGVsZW1lbnQgYmVjb21lcyBgbnVsbGAsXG4gICAgICAgIC8vIG5vdCBpZiBpdCBjaGFuZ2VzIHRvIGFub3RoZXIgZWxlbWVudC5cbiAgICAgICAgc2V0U2l6ZSh1bmRlZmluZWQpO1xuICAgIH0sIFtcbiAgICAgICAgZWxlbWVudFxuICAgIF0pO1xuICAgIHJldHVybiBzaXplO1xufVxuXG5cblxuXG5leHBvcnQgeyRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4IGFzIHVzZVNpemV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRpclBJbCRmb3J3YXJkUmVmLCB1c2VTdGF0ZSBhcyAkaXJQSWwkdXNlU3RhdGUsIHVzZVJlZiBhcyAkaXJQSWwkdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICRpclBJbCRjcmVhdGVFbGVtZW50LCB1c2VFZmZlY3QgYXMgJGlyUElsJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICRpclBJbCRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRpclBJbCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJGlyUElsJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlUHJldmlvdXMgYXMgJGlyUElsJHVzZVByZXZpb3VzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91c1wiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRpclBJbCR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkaXJQSWwkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTd2l0Y2hcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FID0gJ1N3aXRjaCc7XG5jb25zdCBbJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGNyZWF0ZVN3aXRjaENvbnRleHQsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRjZjdmNWYxN2Y2OWNiZDQzXSA9ICRpclBJbCRjcmVhdGVDb250ZXh0U2NvcGUoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FKTtcbmNvbnN0IFskNmJlNDk2NmZkOWJiYzY5OCR2YXIkU3dpdGNoUHJvdmlkZXIsICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciR1c2VTd2l0Y2hDb250ZXh0XSA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSk7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiA9IC8qI19fUFVSRV9fKi8gJGlyUElsJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU3dpdGNoOiBfX3Njb3BlU3dpdGNoICwgbmFtZTogbmFtZSAsIGNoZWNrZWQ6IGNoZWNrZWRQcm9wICwgZGVmYXVsdENoZWNrZWQ6IGRlZmF1bHRDaGVja2VkICwgcmVxdWlyZWQ6IHJlcXVpcmVkICwgZGlzYWJsZWQ6IGRpc2FibGVkICwgdmFsdWU6IHZhbHVlID0gJ29uJyAsIG9uQ2hlY2tlZENoYW5nZTogb25DaGVja2VkQ2hhbmdlICwgLi4uc3dpdGNoUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtidXR0b24sIHNldEJ1dHRvbl0gPSAkaXJQSWwkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJGlyUElsJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0QnV0dG9uKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiA9ICRpclBJbCR1c2VSZWYoZmFsc2UpOyAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gYnV0dG9uID8gQm9vbGVhbihidXR0b24uY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgY29uc3QgW2NoZWNrZWQgPSBmYWxzZSwgc2V0Q2hlY2tlZF0gPSAkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBjaGVja2VkUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDaGVja2VkLFxuICAgICAgICBvbkNoYW5nZTogb25DaGVja2VkQ2hhbmdlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU3dpdGNoLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCRpclBJbCRQcmltaXRpdmUuYnV0dG9uLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjogcmVxdWlyZWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHN3aXRjaFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkNsaWNrOiAkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgc2V0Q2hlY2tlZCgocHJldkNoZWNrZWQpPT4hcHJldkNoZWNrZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyAvLyBpZiBzd2l0Y2ggaXMgaW4gYSBmb3JtLCBzdG9wIHByb3BhZ2F0aW9uIGZyb20gdGhlIGJ1dHRvbiBzbyB0aGF0IHdlIG9ubHkgcHJvcGFnYXRlXG4gICAgICAgICAgICAgICAgLy8gb25lIGNsaWNrIGV2ZW50IChmcm9tIHRoZSBpbnB1dCkuIFdlIHByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gYW4gaW5wdXQgc28gdGhhdCBuYXRpdmVcbiAgICAgICAgICAgICAgICAvLyBmb3JtIHZhbGlkYXRpb24gd29ya3MgYW5kIGZvcm0gZXZlbnRzIHJlZmxlY3Qgc3dpdGNoIHVwZGF0ZXMuXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSksIGlzRm9ybUNvbnRyb2wgJiYgLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkQnViYmxlSW5wdXQsIHtcbiAgICAgICAgY29udHJvbDogYnV0dG9uLFxuICAgICAgICBidWJibGVzOiAhaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCAvLyBXZSB0cmFuc2Zvcm0gYmVjYXVzZSB0aGUgaW5wdXQgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJ1dCB3ZSBoYXZlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJ1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFN3aXRjaFRodW1iXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FID0gJ1N3aXRjaFRodW1iJztcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2ID0gLyojX19QVVJFX18qLyAkaXJQSWwkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTd2l0Y2g6IF9fc2NvcGVTd2l0Y2ggLCAuLi50aHVtYlByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUUsIF9fc2NvcGVTd2l0Y2gpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCRpclBJbCRQcmltaXRpdmUuc3BhbiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjb250ZXh0LmNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogY29udGV4dC5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgdGh1bWJQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgY29udHJvbDogY29udHJvbCAsIGNoZWNrZWQ6IGNoZWNrZWQgLCBidWJibGVzOiBidWJibGVzID0gdHJ1ZSAsIC4uLmlucHV0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICRpclBJbCR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldkNoZWNrZWQgPSAkaXJQSWwkdXNlUHJldmlvdXMoY2hlY2tlZCk7XG4gICAgY29uc3QgY29udHJvbFNpemUgPSAkaXJQSWwkdXNlU2l6ZShjb250cm9sKTsgLy8gQnViYmxlIGNoZWNrZWQgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkaXJQSWwkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlucHV0UHJvdG8gPSB3aW5kb3cuSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGlucHV0UHJvdG8sICdjaGVja2VkJyk7XG4gICAgICAgIGNvbnN0IHNldENoZWNrZWQgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZDaGVja2VkICE9PSBjaGVja2VkICYmIHNldENoZWNrZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiBidWJibGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldENoZWNrZWQuY2FsbChpbnB1dCwgY2hlY2tlZCk7XG4gICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJldkNoZWNrZWQsXG4gICAgICAgIGNoZWNrZWQsXG4gICAgICAgIGJ1YmJsZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudChcImlucHV0XCIsICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZDogY2hlY2tlZFxuICAgIH0sIGlucHV0UHJvcHMsIHtcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLi4uY29udHJvbFNpemUsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgfVxuICAgIH0pKTtcbn07XG5mdW5jdGlvbiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY2hlY2tlZCkge1xuICAgIHJldHVybiBjaGVja2VkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCc7XG59XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIgPSAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNjtcblxuXG5cblxuZXhwb3J0IHskNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkY2Y3ZjVmMTdmNjljYmQ0MyBhcyBjcmVhdGVTd2l0Y2hTY29wZSwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIgYXMgU3dpdGNoLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiBhcyBTd2l0Y2hUaHVtYiwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIgYXMgVGh1bWJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJmdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoRnJvbUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5cbmZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneCcgOiAneSc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1tsZW5ndGhdIC8gMjtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IG1haW5BeGlzID09PSAneCc7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgLi4ucmVjdCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgLi4ucmVjdHMuZmxvYXRpbmcsXG4gICAgeCxcbiAgICB5XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcblxuZnVuY3Rpb24gd2l0aGluKG1pbiQxLCB2YWx1ZSwgbWF4JDEpIHtcbiAgcmV0dXJuIG1heChtaW4kMSwgbWluKHZhbHVlLCBtYXgkMSkpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50c1xuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSB3aXRoaW4obWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRoaXMgc3RvcHMgYHNoaWZ0KClgIGZyb20gdGFraW5nIGFjdGlvbiwgYnV0IGNhblxuICAgIC8vIGJlIHdvcmtlZCBhcm91bmQgYnkgY2FsbGluZyBpdCBhZ2FpbiBhZnRlciB0aGUgYGFycm93KClgIGlmIGRlc2lyZWQuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBtaW4kMSAtIGNlbnRlciA6IG1heCAtIGNlbnRlciA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdIC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxsUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItc3RhcnRcIiwgc2lkZSArIFwiLWVuZFwiKSwgW10pO1xuXG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuXG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogbWFpbkFsaWdubWVudFNpZGUsXG4gICAgY3Jvc3M6IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKVxuICB9O1xufVxuXG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IGFsbFBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IGFsbFBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50c1tjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW4sXG4gICAgICAgIGNyb3NzXG4gICAgICB9ID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1ttYWluXSwgb3ZlcmZsb3dbY3Jvc3NdXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJykge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1haW4sXG4gICAgICAgICAgY3Jvc3NcbiAgICAgICAgfSA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W21haW5dLCBvdmVyZmxvd1tjcm9zc10pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkbWFwJHNvO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRtYXAkc28gPSBvdmVyZmxvd3NEYXRhLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRtYXAkc29bMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gJ3gnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkgPT09ICd4JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsLFxuICAgIC4uLnJhd1ZhbHVlXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IGRpZmZDb29yZHNcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Q3Jvc3NBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSB3aXRoaW4obWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gd2l0aGluKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGF4aXMgPT09ICd4JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV07XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0LCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpIDogbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCByZWN0VG9DbGllbnRSZWN0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIHJldHVybiBpc05vZGUobm9kZSkgPyAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6ICcnO1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBgU2hhZG93Um9vdGAgc3VwcG9ydC5cbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgY29uc3Qgc2FmYXJpID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgIXNhZmFyaSAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXNhZmFyaSAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5cbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBmYWxsYmFjazogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmNvbnN0IEZBTExCQUNLX1NDQUxFID0ge1xuICB4OiAxLFxuICB5OiAxXG59O1xuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIEZBTExCQUNLX1NDQUxFO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGZhbGxiYWNrXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9IChmYWxsYmFjayA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoZmFsbGJhY2sgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgdmFyIF93aW4kdmlzdWFsVmlld3BvcnQsIF93aW4kdmlzdWFsVmlld3BvcnQyO1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IHRydWU7XG4gIH1cbiAgaWYgKCFpc1NhZmFyaSgpKSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50ID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93O1xuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IHdpbikge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiAoKF93aW4kdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luJHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQpIHx8IDAsXG4gICAgeTogKChfd2luJHZpc3VhbFZpZXdwb3J0MiA9IHdpbi52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW4kdmlzdWFsVmlld3BvcnQyLm9mZnNldFRvcCkgfHwgMFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IEZBTExCQUNLX1NDQUxFO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gd2luLmZyYW1lRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSB3aW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBpZnJhbWVSZWN0LnggKz0gKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgaWZyYW1lUmVjdC55ICs9IChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGlmcmFtZVJlY3QueDtcbiAgICAgIHkgKz0gaWZyYW1lUmVjdC55O1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKS5mcmFtZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICByZXR1cm4gKChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnBhZ2VYT2Zmc2V0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5wYWdlWU9mZnNldFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgc3RyYXRlZ3kgIT09ICdmaXhlZCcpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUkMShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIC8vIGBnZXRQYXJlbnROb2RlYCB3aWxsIG5ldmVyIHJldHVybiBhIGBEb2N1bWVudGAgZHVlIHRvIHRoZSBmYWxsYmFja1xuICAgIC8vIGNoZWNrLCBzbyBpdCdzIGVpdGhlciB0aGUgPGh0bWw+IG9yIDxib2R5PiBlbGVtZW50LlxuICAgIHJldHVybiBwYXJlbnROb2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IpKTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1NhZmFyaSgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgLi4uY2xpcHBpbmdBbmNlc3RvcixcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSQxKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50KS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUkMShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgaXNFbGVtZW50LFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0U2NhbGUsXG4gIGFzeW5jIGdldEVsZW1lbnRSZWN0cyhfcmVmKSB7XG4gICAgbGV0IHtcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgc3RyYXRlZ3lcbiAgICB9ID0gX3JlZjtcbiAgICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQocmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihmbG9hdGluZyksIHN0cmF0ZWd5KSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIC4uLihhd2FpdCBnZXREaW1lbnNpb25zRm4oZmxvYXRpbmcpKVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldENsaWVudFJlY3RzOiBlbGVtZW50ID0+IEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKSxcbiAgaXNSVEw6IGVsZW1lbnQgPT4gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCdcbn07XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0cnVlLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAvLyBpZ25vcmVzIFdpbmRvdywgY2hlY2tzIGZvciBbb2JqZWN0IFZpc3VhbFZpZXdwb3J0XVxuICAgIGNvbnN0IGlzVmlzdWFsVmlld3BvcnQgPSAhaXNFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci50b1N0cmluZygpLmluY2x1ZGVzKCdWJyk7XG4gICAgaWYgKGFuY2VzdG9yU2Nyb2xsICYmIChhbmltYXRpb25GcmFtZSA/IGlzVmlzdWFsVmlld3BvcnQgOiB0cnVlKSkge1xuICAgICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgbGV0IG9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpc0VsZW1lbnQocmVmZXJlbmNlKSAmJiAhYW5pbWF0aW9uRnJhbWUgJiYgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UpO1xuICAgIGlmICghaXNFbGVtZW50KHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpO1xuICAgIH1cbiAgICBvYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX29ic2VydmVyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIChfb2JzZXJ2ZXIgPSBvYnNlcnZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmdcbiAqIHN0cmF0ZWd5LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4ge1xuICBmdW5jdGlvbiBpc1JlZih2YWx1ZSkge1xuICAgIHJldHVybiB7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY3VycmVudCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmdcbiAgICAgIH0gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMoc3RhdGUpIDogb3B0aW9ucztcbiAgICAgIGlmIChlbGVtZW50ICYmIGlzUmVmKGVsZW1lbnQpKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQuY3VycmVudCxcbiAgICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgICB9KS5mbihzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoLCBpLCBrZXlzO1xuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmIChrZXkgPT09ICdfb3duZXInICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdFxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIHJlZmVyZW5jZTogZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZzogZXh0ZXJuYWxGbG9hdGluZ1xuICAgIH0gPSB7fSxcbiAgICB0cmFuc2Zvcm0gPSB0cnVlLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkLFxuICAgIG9wZW5cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgc3RyYXRlZ3ksXG4gICAgcGxhY2VtZW50LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7fSxcbiAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBbbGF0ZXN0TWlkZGxld2FyZSwgc2V0TGF0ZXN0TWlkZGxld2FyZV0gPSBSZWFjdC51c2VTdGF0ZShtaWRkbGV3YXJlKTtcbiAgaWYgKCFkZWVwRXF1YWwobGF0ZXN0TWlkZGxld2FyZSwgbWlkZGxld2FyZSkpIHtcbiAgICBzZXRMYXRlc3RNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICB9XG4gIGNvbnN0IFtfcmVmZXJlbmNlLCBfc2V0UmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbX2Zsb2F0aW5nLCBfc2V0RmxvYXRpbmddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IHJlZmVyZW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICByZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgIH1cbiAgfSwgW19zZXRSZWZlcmVuY2VdKTtcbiAgY29uc3Qgc2V0RmxvYXRpbmcgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgfVxuICB9LCBbX3NldEZsb2F0aW5nXSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gZXh0ZXJuYWxSZWZlcmVuY2UgfHwgX3JlZmVyZW5jZTtcbiAgY29uc3QgZmxvYXRpbmdFbCA9IGV4dGVybmFsRmxvYXRpbmcgfHwgX2Zsb2F0aW5nO1xuICBjb25zdCByZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKGRhdGEpO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiB0cnVlXG4gICAgICB9O1xuICAgICAgaWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmICFkZWVwRXF1YWwoZGF0YVJlZi5jdXJyZW50LCBmdWxsRGF0YSkpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50ID0gZnVsbERhdGE7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0RGF0YShmdWxsRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbbGF0ZXN0TWlkZGxld2FyZSwgcGxhY2VtZW50LCBzdHJhdGVneSwgcGxhdGZvcm1SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChvcGVuID09PSBmYWxzZSAmJiBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICBzZXREYXRhKGRhdGEgPT4gKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAocmVmZXJlbmNlRWwpIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlRWw7XG4gICAgaWYgKGZsb2F0aW5nRWwpIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBmbG9hdGluZ0VsO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiBmbG9hdGluZ0VsKSB7XG4gICAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gd2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudChyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUsIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmXSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VSZWYsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nUmVmLFxuICAgIHNldFJlZmVyZW5jZSxcbiAgICBzZXRGbG9hdGluZ1xuICB9KSwgW3NldFJlZmVyZW5jZSwgc2V0RmxvYXRpbmddKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VFbCxcbiAgICBmbG9hdGluZzogZmxvYXRpbmdFbFxuICB9KSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsXSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuICAgIGlmICghZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS54KTtcbiAgICBjb25zdCB5ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS55KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZWxlbWVudHMuZmxvYXRpbmcpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiB4LFxuICAgICAgdG9wOiB5XG4gICAgfTtcbiAgfSwgW3N0cmF0ZWd5LCB0cmFuc2Zvcm0sIGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngsIGRhdGEueV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLmRhdGEsXG4gICAgdXBkYXRlLFxuICAgIHJlZnMsXG4gICAgZWxlbWVudHMsXG4gICAgZmxvYXRpbmdTdHlsZXNcbiAgfSksIFtkYXRhLCB1cGRhdGUsIHJlZnMsIGVsZW1lbnRzLCBmbG9hdGluZ1N0eWxlc10pO1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAka1k5M1YkdXNlU3RhdGUsIGNyZWF0ZUVsZW1lbnQgYXMgJGtZOTNWJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJGtZOTNWJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAka1k5M1YkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGtZOTNWJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUZsb2F0aW5nIGFzICRrWTkzViR1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSBhcyAka1k5M1YkYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzICRrWTkzViRvZmZzZXQsIHNoaWZ0IGFzICRrWTkzViRzaGlmdCwgbGltaXRTaGlmdCBhcyAka1k5M1YkbGltaXRTaGlmdCwgZmxpcCBhcyAka1k5M1YkZmxpcCwgc2l6ZSBhcyAka1k5M1Ykc2l6ZSwgYXJyb3cgYXMgJGtZOTNWJGFycm93LCBoaWRlIGFzICRrWTkzViRoaWRlfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHtSb290IGFzICRrWTkzViRSb290fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWFycm93XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka1k5M1YkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka1k5M1YkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka1k5M1YkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGtZOTNWJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRrWTkzViR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2ZjAwODZkYTA5YzRiOWYgPSBbXG4gICAgJ3RvcCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYm90dG9tJyxcbiAgICAnbGVmdCdcbl07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzY3MWZmYWI3YjMwMmZjOSA9IFtcbiAgICAnc3RhcnQnLFxuICAgICdjZW50ZXInLFxuICAgICdlbmQnXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSA9ICdQb3BwZXInO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjNdID0gJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZSgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUpO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHRdID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FKTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3IsIHNldEFuY2hvcl0gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgb25BbmNob3JDaGFuZ2U6IHNldEFuY2hvclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFuY2hvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUUgPSAnUG9wcGVyQW5jaG9yJztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIHZpcnR1YWxSZWY6IHZpcnR1YWxSZWYgLCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgcmVmID0gJGtZOTNWJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka1k5M1YkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka1k5M1YkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIENvbnN1bWVyIGNhbiBhbmNob3IgdGhlIHBvcHBlciB0byBzb21ldGhpbmcgdGhhdCBpc24ndFxuICAgICAgICAvLyBhIERPTSBub2RlIGUuZy4gcG9pbnRlciBwb3NpdGlvbiwgc28gd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAgIC8vIGBhbmNob3JSZWZgIHdpdGggdGhlaXIgdmlydHVhbCByZWYgaW4gdGhpcyBjYXNlLlxuICAgICAgICBjb250ZXh0Lm9uQW5jaG9yQ2hhbmdlKCh2aXJ0dWFsUmVmID09PSBudWxsIHx8IHZpcnR1YWxSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZpcnR1YWxSZWYuY3VycmVudCkgfHwgcmVmLmN1cnJlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiB2aXJ0dWFsUmVmID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFByaW1pdGl2ZS5kaXYsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYW5jaG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUgPSAnUG9wcGVyQ29udGVudCc7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0XSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUpO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9hcnJvd1NpemUkd2lkdGgsIF9hcnJvd1NpemUkaGVpZ2h0LCBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRhcnJvdzIsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzMsIF9taWRkbGV3YXJlRGF0YSR0cmFucywgX21pZGRsZXdhcmVEYXRhJHRyYW5zMiwgX21pZGRsZXdhcmVEYXRhJGhpZGU7XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgc2lkZTogc2lkZSA9ICdib3R0b20nICwgc2lkZU9mZnNldDogc2lkZU9mZnNldCA9IDAgLCBhbGlnbjogYWxpZ24gPSAnY2VudGVyJyAsIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCA9IDAgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyA9IDAgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgPSBbXSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmdQcm9wID0gMCAsIHN0aWNreTogc3RpY2t5ID0gJ3BhcnRpYWwnICwgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCA9IGZhbHNlICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgPSB0cnVlICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrWTkzViR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFthcnJvdywgc2V0QXJyb3ddID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGFycm93U2l6ZSA9ICRrWTkzViR1c2VTaXplKGFycm93KTtcbiAgICBjb25zdCBhcnJvd1dpZHRoID0gKF9hcnJvd1NpemUkd2lkdGggPSBhcnJvd1NpemUgPT09IG51bGwgfHwgYXJyb3dTaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd1NpemUud2lkdGgpICE9PSBudWxsICYmIF9hcnJvd1NpemUkd2lkdGggIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkd2lkdGggOiAwO1xuICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gKF9hcnJvd1NpemUkaGVpZ2h0ID0gYXJyb3dTaXplID09PSBudWxsIHx8IGFycm93U2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dTaXplLmhlaWdodCkgIT09IG51bGwgJiYgX2Fycm93U2l6ZSRoZWlnaHQgIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkaGVpZ2h0IDogMDtcbiAgICBjb25zdCBkZXNpcmVkUGxhY2VtZW50ID0gc2lkZSArIChhbGlnbiAhPT0gJ2NlbnRlcicgPyAnLScgKyBhbGlnbiA6ICcnKTtcbiAgICBjb25zdCBjb2xsaXNpb25QYWRkaW5nID0gdHlwZW9mIGNvbGxpc2lvblBhZGRpbmdQcm9wID09PSAnbnVtYmVyJyA/IGNvbGxpc2lvblBhZGRpbmdQcm9wIDoge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIC4uLmNvbGxpc2lvblBhZGRpbmdQcm9wXG4gICAgfTtcbiAgICBjb25zdCBib3VuZGFyeSA9IEFycmF5LmlzQXJyYXkoY29sbGlzaW9uQm91bmRhcnkpID8gY29sbGlzaW9uQm91bmRhcnkgOiBbXG4gICAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5XG4gICAgXTtcbiAgICBjb25zdCBoYXNFeHBsaWNpdEJvdW5kYXJpZXMgPSBib3VuZGFyeS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRldGVjdE92ZXJmbG93T3B0aW9ucyA9IHtcbiAgICAgICAgcGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LmZpbHRlcigkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsKSxcbiAgICAgICAgLy8gd2l0aCBgc3RyYXRlZ3k6ICdmaXhlZCdgLCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBnZXQgaXQgdG8gcmVzcGVjdCBib3VuZGFyaWVzXG4gICAgICAgIGFsdEJvdW5kYXJ5OiBoYXNFeHBsaWNpdEJvdW5kYXJpZXNcbiAgICB9O1xuICAgIGNvbnN0IHsgcmVmczogcmVmcyAsIGZsb2F0aW5nU3R5bGVzOiBmbG9hdGluZ1N0eWxlcyAsIHBsYWNlbWVudDogcGxhY2VtZW50ICwgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQgLCBtaWRkbGV3YXJlRGF0YTogbWlkZGxld2FyZURhdGEgIH0gPSAka1k5M1YkdXNlRmxvYXRpbmcoe1xuICAgICAgICAvLyBkZWZhdWx0IHRvIGBmaXhlZGAgc3RyYXRlZ3kgc28gdXNlcnMgZG9uJ3QgaGF2ZSB0byBwaWNrIGFuZCB3ZSBhbHNvIGF2b2lkIGZvY3VzIHNjcm9sbCBpc3N1ZXNcbiAgICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICAgIHBsYWNlbWVudDogZGVzaXJlZFBsYWNlbWVudCxcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6ICRrWTkzViRhdXRvVXBkYXRlLFxuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgcmVmZXJlbmNlOiBjb250ZXh0LmFuY2hvclxuICAgICAgICB9LFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICAka1k5M1Ykb2Zmc2V0KHtcbiAgICAgICAgICAgICAgICBtYWluQXhpczogc2lkZU9mZnNldCArIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGFsaWdubWVudEF4aXM6IGFsaWduT2Zmc2V0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiAka1k5M1Ykc2hpZnQoe1xuICAgICAgICAgICAgICAgIG1haW5BeGlzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNyb3NzQXhpczogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGltaXRlcjogc3RpY2t5ID09PSAncGFydGlhbCcgPyAka1k5M1YkbGltaXRTaGlmdCgpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhdm9pZENvbGxpc2lvbnMgJiYgJGtZOTNWJGZsaXAoe1xuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAka1k5M1Ykc2l6ZSh7XG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICAgIGFwcGx5OiAoeyBlbGVtZW50czogZWxlbWVudHMgLCByZWN0czogcmVjdHMgLCBhdmFpbGFibGVXaWR0aDogYXZhaWxhYmxlV2lkdGggLCBhdmFpbGFibGVIZWlnaHQ6IGF2YWlsYWJsZUhlaWdodCAgfSk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogYW5jaG9yV2lkdGggLCBoZWlnaHQ6IGFuY2hvckhlaWdodCAgfSA9IHJlY3RzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFN0eWxlID0gZWxlbWVudHMuZmxvYXRpbmcuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoJywgYCR7YXZhaWxhYmxlV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoJywgYCR7YW5jaG9yV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0JywgYCR7YW5jaG9ySGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhcnJvdyAmJiAka1k5M1YkYXJyb3coe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGFycm93LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IGFycm93UGFkZGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luKHtcbiAgICAgICAgICAgICAgICBhcnJvd1dpZHRoOiBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0OiBhcnJvd0hlaWdodFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoaWRlV2hlbkRldGFjaGVkICYmICRrWTkzViRoaWRlKHtcbiAgICAgICAgICAgICAgICBzdHJhdGVneTogJ3JlZmVyZW5jZUhpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbiAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICBjb25zdCBoYW5kbGVQbGFjZWQgPSAka1k5M1YkdXNlQ2FsbGJhY2tSZWYob25QbGFjZWQpO1xuICAgICRrWTkzViR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGlzUG9zaXRpb25lZCkgaGFuZGxlUGxhY2VkID09PSBudWxsIHx8IGhhbmRsZVBsYWNlZCA9PT0gdm9pZCAwIHx8IGhhbmRsZVBsYWNlZCgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBoYW5kbGVQbGFjZWRcbiAgICBdKTtcbiAgICBjb25zdCBhcnJvd1ggPSAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Lng7XG4gICAgY29uc3QgYXJyb3dZID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzIgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Mi55O1xuICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3czID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMuY2VudGVyT2Zmc2V0KSAhPT0gMDtcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAka1k5M1YkdXNlU3RhdGUoKTtcbiAgICAka1k5M1YkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHJlZnMuc2V0RmxvYXRpbmcsXG4gICAgICAgIFwiZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXCI6IFwiXCIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5mbG9hdGluZ1N0eWxlcyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogaXNQb3NpdGlvbmVkID8gZmxvYXRpbmdTdHlsZXMudHJhbnNmb3JtIDogJ3RyYW5zbGF0ZSgwLCAtMjAwJSknLFxuICAgICAgICAgICAgLy8ga2VlcCBvZmYgdGhlIHBhZ2Ugd2hlbiBtZWFzdXJpbmdcbiAgICAgICAgICAgIG1pbldpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4LFxuICAgICAgICAgICAgWyctLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luJ106IFtcbiAgICAgICAgICAgICAgICAoX21pZGRsZXdhcmVEYXRhJHRyYW5zID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSR0cmFucy54LFxuICAgICAgICAgICAgICAgIChfbWlkZGxld2FyZURhdGEkdHJhbnMyID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkdHJhbnMyLnlcbiAgICAgICAgICAgIF0uam9pbignICcpXG4gICAgICAgIH0gLy8gRmxvYXRpbmcgVUkgaW50ZXJhbGx5IGNhbGN1bGF0ZXMgbG9naWNhbCBhbGlnbm1lbnQgYmFzZWQgdGhlIGBkaXJgIGF0dHJpYnV0ZSBvblxuICAgICAgICAsXG4gICAgICAgIGRpcjogcHJvcHMuZGlyXG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBwbGFjZWRTaWRlOiBwbGFjZWRTaWRlLFxuICAgICAgICBvbkFycm93Q2hhbmdlOiBzZXRBcnJvdyxcbiAgICAgICAgYXJyb3dYOiBhcnJvd1gsXG4gICAgICAgIGFycm93WTogYXJyb3dZLFxuICAgICAgICBzaG91bGRIaWRlQXJyb3c6IGNhbm5vdENlbnRlckFycm93XG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUHJpbWl0aXZlLmRpdiwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXNpZGVcIjogcGxhY2VkU2lkZSxcbiAgICAgICAgXCJkYXRhLWFsaWduXCI6IHBsYWNlZEFsaWduXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLy8gaWYgdGhlIFBvcHBlckNvbnRlbnQgaGFzbid0IGJlZW4gcGxhY2VkIHlldCAobm90IGFsbCBtZWFzdXJlbWVudHMgZG9uZSlcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgYW5pbWF0aW9ucyBzbyB0aGF0IHVzZXJzJ3MgYW5pbWF0aW9uIGRvbid0IGtpY2sgaW4gdG9vIGVhcmx5IHJlZmVycmluZyB3cm9uZyBzaWRlc1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAhaXNQb3NpdGlvbmVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gaGlkZSB0aGUgY29udGVudCBpZiB1c2luZyB0aGUgaGlkZSBtaWRkbGV3YXJlIGFuZCBzaG91bGQgYmUgaGlkZGVuXG4gICAgICAgICAgICBvcGFjaXR5OiAoX21pZGRsZXdhcmVEYXRhJGhpZGUgPSBtaWRkbGV3YXJlRGF0YS5oaWRlKSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkaGlkZSAhPT0gdm9pZCAwICYmIF9taWRkbGV3YXJlRGF0YSRoaWRlLnJlZmVyZW5jZUhpZGRlbiA/IDAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FID0gJ1BvcHBlckFycm93JztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFID0ge1xuICAgIHRvcDogJ2JvdHRvbScsXG4gICAgcmlnaHQ6ICdsZWZ0JyxcbiAgICBib3R0b206ICd0b3AnLFxuICAgIGxlZnQ6ICdyaWdodCdcbn07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCBiYXNlU2lkZSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFW2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIHdlIGhhdmUgdG8gdXNlIGFuIGV4dHJhIHdyYXBwZXIgYmVjYXVzZSBgUmVzaXplT2JzZXJ2ZXJgICh1c2VkIGJ5IGB1c2VTaXplYClcbiAgICAvLyBkb2Vzbid0IHJlcG9ydCBzaXplIGFzIHdlJ2QgZXhwZWN0IG9uIFNWRyBlbGVtZW50cy5cbiAgICAvLyBpdCByZXBvcnRzIHRoZWlyIGJvdW5kaW5nIGJveCB3aGljaCBpcyBlZmZlY3RpdmVseSB0aGUgbGFyZ2VzdCBwYXRoIGluc2lkZSB0aGUgU1ZHLlxuICAgICRrWTkzViRjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIHJlZjogY29udGVudENvbnRleHQub25BcnJvd0NoYW5nZSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgbGVmdDogY29udGVudENvbnRleHQuYXJyb3dYLFxuICAgICAgICAgICAgdG9wOiBjb250ZW50Q29udGV4dC5hcnJvd1ksXG4gICAgICAgICAgICBbYmFzZVNpZGVdOiAwLFxuICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgICAgICAgICByaWdodDogJzAgMCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnY2VudGVyIDAnLFxuICAgICAgICAgICAgICAgIGxlZnQ6ICcxMDAlIDAnXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAndHJhbnNsYXRlWSgxMDAlKScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAgICAgICAgICAgICBib3R0b206IGByb3RhdGUoMTgwZGVnKWAsXG4gICAgICAgICAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSknXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogY29udGVudENvbnRleHQuc2hvdWxkSGlkZUFycm93ID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFJvb3QsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmFycm93UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAvLyBlbnN1cmVzIHRoZSBlbGVtZW50IGNhbiBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgKG1vc3RseSBmb3IgaWYgU1ZHKVxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGw7XG59XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luID0gKG9wdGlvbnMpPT4oe1xuICAgICAgICBuYW1lOiAndHJhbnNmb3JtT3JpZ2luJyxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgZm4gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3c0LCBfbWlkZGxld2FyZURhdGEkYXJyb3c1LCBfbWlkZGxld2FyZURhdGEkYXJyb3c2LCBfbWlkZGxld2FyZURhdGEkYXJyb3c3LCBfbWlkZGxld2FyZURhdGEkYXJyb3c4O1xuICAgICAgICAgICAgY29uc3QgeyBwbGFjZW1lbnQ6IHBsYWNlbWVudCAsIHJlY3RzOiByZWN0cyAsIG1pZGRsZXdhcmVEYXRhOiBtaWRkbGV3YXJlRGF0YSAgfSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBjYW5ub3RDZW50ZXJBcnJvdyA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NCA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c0LmNlbnRlck9mZnNldCkgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93SGlkZGVuID0gY2Fubm90Q2VudGVyQXJyb3c7XG4gICAgICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IGlzQXJyb3dIaWRkZW4gPyAwIDogb3B0aW9ucy5hcnJvd0hlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgICAgICAgY29uc3Qgbm9BcnJvd0FsaWduID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiAnMCUnLFxuICAgICAgICAgICAgICAgIGNlbnRlcjogJzUwJScsXG4gICAgICAgICAgICAgICAgZW5kOiAnMTAwJSdcbiAgICAgICAgICAgIH1bcGxhY2VkQWxpZ25dO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dYQ2VudGVyID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c1ID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzYgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93NiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Ni54KSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3c1ICE9PSB2b2lkIDAgPyBfbWlkZGxld2FyZURhdGEkYXJyb3c1IDogMCkgKyBhcnJvd1dpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGFycm93WUNlbnRlciA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NyA9IChfbWlkZGxld2FyZURhdGEkYXJyb3c4ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzgueSkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93NyAhPT0gdm9pZCAwID8gX21pZGRsZXdhcmVEYXRhJGFycm93NyA6IDApICsgYXJyb3dIZWlnaHQgLyAyO1xuICAgICAgICAgICAgbGV0IHggPSAnJztcbiAgICAgICAgICAgIGxldCB5ID0gJyc7XG4gICAgICAgICAgICBpZiAocGxhY2VkU2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1hDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBgJHtyZWN0cy5mbG9hdGluZy5oZWlnaHQgKyBhcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHggPSBgJHtyZWN0cy5mbG9hdGluZy53aWR0aCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgICAgICAgICAgeTogeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KVxuO1xuZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gICAgY29uc3QgW3NpZGUsIGFsaWduID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2lkZSxcbiAgICAgICAgYWxpZ25cbiAgICBdO1xufVxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZDtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDA7XG5cblxuXG5cbmV4cG9ydCB7JGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDcyMmFhYzE5NGFlOTIzIGFzIGNyZWF0ZVBvcHBlclNjb3BlLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSBhcyBQb3BwZXIsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgYXMgUG9wcGVyQW5jaG9yLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjIGFzIFBvcHBlckNvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwIGFzIFBvcHBlckFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyBhcyBBbmNob3IsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzZmMDA4NmRhMDljNGI5ZiBhcyBTSURFX09QVElPTlMsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNjcxZmZhYjdiMzAyZmM5IGFzIEFMSUdOX09QVElPTlN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRrVndudyRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRrVndudyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrVndudyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFZpc3VhbGx5SGlkZGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJHZhciROQU1FID0gJ1Zpc3VhbGx5SGlkZGVuJztcbmNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0ID0gLyojX19QVVJFX18qLyAka1Z3bnckZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1Z3bnckY3JlYXRlRWxlbWVudCgka1Z3bnckUHJpbWl0aXZlLnNwYW4sICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9zY3NzL21peGlucy9fc2NyZWVuLXJlYWRlci5zY3NzXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICBjbGlwOiAncmVjdCgwLCAwLCAwLCAwKScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIHdvcmRXcmFwOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQ7XG5cblxuXG5cbmV4cG9ydCB7JGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQgYXMgVmlzdWFsbHlIaWRkZW4sICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOHdlcEskdXNlU3RhdGUsIHVzZVJlZiBhcyAkOHdlcEskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDh3ZXBLJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkOHdlcEskY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDh3ZXBLJHVzZUNhbGxiYWNrLCB1c2VNZW1vIGFzICQ4d2VwSyR1c2VNZW1vLCBmb3J3YXJkUmVmIGFzICQ4d2VwSyRmb3J3YXJkUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDh3ZXBLJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQ4d2VwSyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUlkIGFzICQ4d2VwSyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDh3ZXBLJFJvb3QsIEFuY2hvciBhcyAkOHdlcEskQW5jaG9yLCBDb250ZW50IGFzICQ4d2VwSyRDb250ZW50LCBBcnJvdyBhcyAkOHdlcEskQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkOHdlcEskUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOHdlcEskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4d2VwSyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkOHdlcEskU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7Um9vdCBhcyAkOHdlcEskUm9vdDF9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1XSA9ICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUoJ1Rvb2x0aXAnLCBbXG4gICAgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZSA9ICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FID0gJ1Rvb2x0aXBQcm92aWRlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiA9IDcwMDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4gPSAndG9vbHRpcC5vcGVuJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBST1ZJREVSX05BTUUpO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gLCBza2lwRGVsYXlEdXJhdGlvbjogc2tpcERlbGF5RHVyYXRpb24gPSAzMDAgLCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBmYWxzZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpc09wZW5EZWxheWVkLCBzZXRJc09wZW5EZWxheWVkXSA9ICQ4d2VwSyR1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBpc1BvaW50ZXJJblRyYW5zaXRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBza2lwRGVsYXlUaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBza2lwRGVsYXlUaW1lciA9IHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dChza2lwRGVsYXlUaW1lcilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNPcGVuRGVsYXllZDogaXNPcGVuRGVsYXllZCxcbiAgICAgICAgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbixcbiAgICAgICAgb25PcGVuOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBzZXRJc09wZW5EZWxheWVkKGZhbHNlKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbkNsb3NlOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnNldElzT3BlbkRlbGF5ZWQodHJ1ZSlcbiAgICAgICAgICAgICwgc2tpcERlbGF5RHVyYXRpb24pO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBza2lwRGVsYXlEdXJhdGlvblxuICAgICAgICBdKSxcbiAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmOiBpc1BvaW50ZXJJblRyYW5zaXRSZWYsXG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogJDh3ZXBLJHVzZUNhbGxiYWNrKChpblRyYW5zaXQpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCA9IGluVHJhbnNpdDtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSA9ICdUb29sdGlwJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gPSBmYWxzZSAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAsIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb25Qcm9wICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29udGVudElkID0gJDh3ZXBLJHVzZUlkKCk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gJDh3ZXBLJHVzZVJlZigwKTtcbiAgICBjb25zdCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudCA9IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAhPT0gbnVsbCAmJiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IHZvaWQgMCA/IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudDtcbiAgICBjb25zdCBkZWxheUR1cmF0aW9uID0gZGVsYXlEdXJhdGlvblByb3AgIT09IG51bGwgJiYgZGVsYXlEdXJhdGlvblByb3AgIT09IHZvaWQgMCA/IGRlbGF5RHVyYXRpb25Qcm9wIDogcHJvdmlkZXJDb250ZXh0LmRlbGF5RHVyYXRpb247XG4gICAgY29uc3Qgd2FzT3BlbkRlbGF5ZWRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbjEgPSBmYWxzZSwgc2V0T3Blbl0gPSAkOHdlcEskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogKG9wZW4pPT57XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5vbk9wZW4oKTsgLy8gYXMgYG9uQ2hhbmdlYCBpcyBjYWxsZWQgd2l0aGluIGEgbGlmZWN5Y2xlIG1ldGhvZCB3ZVxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGRpc3BhdGNoaW5nIHZpYSBgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50YC5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOKSk7XG4gICAgICAgICAgICB9IGVsc2UgcHJvdmlkZXJDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCB8fCBvbk9wZW5DaGFuZ2Uob3Blbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZSA9ICQ4d2VwSyR1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBvcGVuMSA/IHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPyAnZGVsYXllZC1vcGVuJyA6ICdpbnN0YW50LW9wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfSwgW1xuICAgICAgICBvcGVuMVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9LCBbXG4gICAgICAgIHNldE9wZW5cbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsYXllZE9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICAgICAgfSwgZGVsYXlEdXJhdGlvbik7XG4gICAgfSwgW1xuICAgICAgICBkZWxheUR1cmF0aW9uLFxuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgY29udGVudElkOiBjb250ZW50SWQsXG4gICAgICAgIG9wZW46IG9wZW4xLFxuICAgICAgICBzdGF0ZUF0dHJpYnV0ZTogc3RhdGVBdHRyaWJ1dGUsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyRW50ZXI6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkKSBoYW5kbGVEZWxheWVkT3BlbigpO1xuICAgICAgICAgICAgZWxzZSBoYW5kbGVPcGVuKCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkLFxuICAgICAgICAgICAgaGFuZGxlRGVsYXllZE9wZW4sXG4gICAgICAgICAgICBoYW5kbGVPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBvblRyaWdnZXJMZWF2ZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQpIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIC8vIENsZWFyIHRoZSB0aW1lciBpbiBjYXNlIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgb3BlbmVkLlxuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlLFxuICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICAgICAgXSksXG4gICAgICAgIG9uT3BlbjogaGFuZGxlT3BlbixcbiAgICAgICAgb25DbG9zZTogaGFuZGxlQ2xvc2UsXG4gICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSA9ICdUb29sdGlwVHJpZ2dlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT5pc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICwgW10pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXApXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVBvaW50ZXJVcFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRBbmNob3IsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByaW1pdGl2ZS5idXR0b24sICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIC8vIFdlIHB1cnBvc2VmdWxseSBhdm9pZCBhZGRpbmcgYHR5cGU9YnV0dG9uYCBoZXJlIGJlY2F1c2UgdG9vbHRpcCB0cmlnZ2VycyBhcmUgYWxzb1xuICAgICAgICAvLyBjb21tb25seSBhbmNob3JzIGFuZCB0aGUgYW5jaG9yIGB0eXBlYCBhdHRyaWJ1dGUgc2lnbmlmaWVzIE1JTUUgdHlwZS5cbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGNvbnRleHQub3BlbiA/IGNvbnRleHQuY29udGVudElkIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFoYXNQb2ludGVyTW92ZU9wZW5lZFJlZi5jdXJyZW50ICYmICFwcm92aWRlckNvbnRleHQuaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uVHJpZ2dlckVudGVyKCk7XG4gICAgICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJMZWF2ZSgpO1xuICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIGlmICghaXNQb2ludGVyRG93blJlZi5jdXJyZW50KSBjb250ZXh0Lm9uT3BlbigpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCBjb250ZXh0Lm9uQ2xvc2UpLFxuICAgICAgICBvbkNsaWNrOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbkNsb3NlKVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FID0gJ1Rvb2x0aXBQb3J0YWwnO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FID0gJ1Rvb2x0aXBDb250ZW50JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIHNpZGU6IHNpZGUgPSAndG9wJyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudCA/IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBzaWRlOiBzaWRlXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBbcG9pbnRlckdyYWNlQXJlYSwgc2V0UG9pbnRlckdyYWNlQXJlYV0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyICwgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgY29udGVudCA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHsgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOiBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UgIH0gPSBwcm92aWRlckNvbnRleHQ7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEobnVsbCk7XG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZShmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDcmVhdGVHcmFjZUFyZWEgPSAkOHdlcEskdXNlQ2FsbGJhY2soKGV2ZW50LCBob3ZlclRhcmdldCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IGV4aXRQb2ludCA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRTaWRlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEV4aXRTaWRlRnJvbVJlY3QoZXhpdFBvaW50LCBjdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUpO1xuICAgICAgICBjb25zdCBob3ZlclRhcmdldFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChob3ZlclRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IGdyYWNlQXJlYSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsKFtcbiAgICAgICAgICAgIC4uLnBhZGRlZEV4aXRQb2ludHMsXG4gICAgICAgICAgICAuLi5ob3ZlclRhcmdldFBvaW50c1xuICAgICAgICBdKTtcbiAgICAgICAgc2V0UG9pbnRlckdyYWNlQXJlYShncmFjZUFyZWEpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UodHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJpZ2dlciAmJiBjb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVDb250ZW50TGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIHRyaWdnZXIpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZUNvbnRlbnRMZWF2ZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICAgICAgY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhLFxuICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWFcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwb2ludGVyR3JhY2VBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFbnRlcmVkVGFyZ2V0ID0gKHRyaWdnZXIgPT09IG51bGwgfHwgdHJpZ2dlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlci5jb250YWlucyh0YXJnZXQpKSB8fCAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEgPSAhJGEwOTNjN2UxZWMyNWEwNTckdmFyJGlzUG9pbnRJblBvbHlnb24ocG9pbnRlclBvc2l0aW9uLCBwb2ludGVyR3JhY2VBcmVhKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRW50ZXJlZFRhcmdldCkgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyT3V0c2lkZUdyYWNlQXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWEoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVRyYWNrUG9pbnRlckdyYWNlKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgcG9pbnRlckdyYWNlQXJlYSxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FLCB7XG4gICAgaXNJbnNpZGU6IGZhbHNlXG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7IC8vIENsb3NlIHRoaXMgdG9vbHRpcCBpZiBhbm90aGVyIG9uZSBvcGVuc1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4sIG9uQ2xvc2UpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ2xvc2VcbiAgICBdKTsgLy8gQ2xvc2UgdGhlIHRvb2x0aXAgaWYgdGhlIHRyaWdnZXIgaXMgc2Nyb2xsZWRcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHZvaWQgMCAmJiB0YXJnZXQuY29udGFpbnMoY29udGV4dC50cmlnZ2VyKSkgb25DbG9zZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBvbkNsb3NlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6IG9uQ2xvc2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRDb250ZW50LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHBvcHBlclNjb3BlLCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVUb29sdGlwLFxuICAgICAgICBpc0luc2lkZTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QxLCB7XG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgcm9sZTogXCJ0b29sdGlwXCJcbiAgICB9LCBhcmlhTGFiZWwgfHwgY2hpbGRyZW4pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUgPSAnVG9vbHRpcEFycm93JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5ID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVUb29sdGlwKTsgLy8gaWYgdGhlIGFycm93IGlzIGluc2lkZSB0aGUgYFZpc3VhbGx5SGlkZGVuYCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgaXQgYWxsIHRvXG4gICAgLy8gcHJldmVudCBpc3N1ZXMgaW4gcG9zaXRpb25pbmcgdGhlIGFycm93IGR1ZSB0byB0aGUgZHVwbGljYXRlXG4gICAgcmV0dXJuIHZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQuaXNJbnNpZGUgPyBudWxsIDogLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQXJyb3csICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMocmVjdC50b3AgLSBwb2ludC55KTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhyZWN0LmJvdHRvbSAtIHBvaW50LnkpO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMocmVjdC5yaWdodCAtIHBvaW50LngpO1xuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmFicyhyZWN0LmxlZnQgLSBwb2ludC54KTtcbiAgICBzd2l0Y2goTWF0aC5taW4odG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0KSl7XG4gICAgICAgIGNhc2UgbGVmdDpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIGNhc2UgcmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgY2FzZSB0b3A6XG4gICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGNhc2UgYm90dG9tOlxuICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUsIHBhZGRpbmcgPSA1KSB7XG4gICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9IFtdO1xuICAgIHN3aXRjaChleGl0U2lkZSl7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSArIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcGFkZGVkRXhpdFBvaW50cztcbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChyZWN0KSB7XG4gICAgY29uc3QgeyB0b3A6IHRvcCAsIHJpZ2h0OiByaWdodCAsIGJvdHRvbTogYm90dG9tICwgbGVmdDogbGVmdCAgfSA9IHJlY3Q7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogYm90dG9tXG4gICAgICAgIH1cbiAgICBdO1xufSAvLyBEZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBpbnNpZGUgb2YgYSBwb2x5Z29uLlxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL3BvaW50LWluLXBvbHlnb25cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gICAgY29uc3QgeyB4OiB4ICwgeTogeSAgfSA9IHBvaW50O1xuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspe1xuICAgICAgICBjb25zdCB4aSA9IHBvbHlnb25baV0ueDtcbiAgICAgICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgICAgIGNvbnN0IHhqID0gcG9seWdvbltqXS54O1xuICAgICAgICBjb25zdCB5aiA9IHBvbHlnb25bal0ueTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIGNvbnN0IGludGVyc2VjdCA9IHlpID4geSAhPT0geWogPiB5ICYmIHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufSAvLyBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBnaXZlbiBzZXQgb2YgcG9pbnRzLlxuLy8gaHR0cHM6Ly93d3cubmF5dWtpLmlvL3BhZ2UvY29udmV4LWh1bGwtYWxnb3JpdGhtXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChwb2ludHMpIHtcbiAgICBjb25zdCBuZXdQb2ludHMgPSBwb2ludHMuc2xpY2UoKTtcbiAgICBuZXdQb2ludHMuc29ydCgoYSwgYik9PntcbiAgICAgICAgaWYgKGEueCA8IGIueCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmIChhLnggPiBiLngpIHJldHVybiAxO1xuICAgICAgICBlbHNlIGlmIChhLnkgPCBiLnkpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS55ID4gYi55KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQobmV3UG9pbnRzKTtcbn0gLy8gUmV0dXJucyB0aGUgY29udmV4IGh1bGwsIGFzc3VtaW5nIHRoYXQgZWFjaCBwb2ludHNbaV0gPD0gcG9pbnRzW2kgKyAxXS4gUnVucyBpbiBPKG4pIHRpbWUuXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbFByZXNvcnRlZChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gcG9pbnRzLnNsaWNlKCk7XG4gICAgY29uc3QgdXBwZXJIdWxsID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIHdoaWxlKHVwcGVySHVsbC5sZW5ndGggPj0gMil7XG4gICAgICAgICAgICBjb25zdCBxID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB1cHBlckh1bGxbdXBwZXJIdWxsLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgaWYgKChxLnggLSByLngpICogKHAueSAtIHIueSkgPj0gKHEueSAtIHIueSkgKiAocC54IC0gci54KSkgdXBwZXJIdWxsLnBvcCgpO1xuICAgICAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB1cHBlckh1bGwucHVzaChwKTtcbiAgICB9XG4gICAgdXBwZXJIdWxsLnBvcCgpO1xuICAgIGNvbnN0IGxvd2VySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaTEgPSBwb2ludHMubGVuZ3RoIC0gMTsgaTEgPj0gMDsgaTEtLSl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaTFdO1xuICAgICAgICB3aGlsZShsb3dlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gbG93ZXJIdWxsW2xvd2VySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIGxvd2VySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbG93ZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIGxvd2VySHVsbC5wb3AoKTtcbiAgICBpZiAodXBwZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiBsb3dlckh1bGwubGVuZ3RoID09PSAxICYmIHVwcGVySHVsbFswXS54ID09PSBsb3dlckh1bGxbMF0ueCAmJiB1cHBlckh1bGxbMF0ueSA9PT0gbG93ZXJIdWxsWzBdLnkpIHJldHVybiB1cHBlckh1bGw7XG4gICAgZWxzZSByZXR1cm4gdXBwZXJIdWxsLmNvbmNhdChsb3dlckh1bGwpO1xufVxuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiODtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWE7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5O1xuXG5cblxuXG5leHBvcnQgeyRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1IGFzIGNyZWF0ZVRvb2x0aXBTY29wZSwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggYXMgVG9vbHRpcFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSBhcyBUb29sdGlwLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCBhcyBUb29sdGlwVHJpZ2dlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgYXMgVG9vbHRpcFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAgYXMgVG9vbHRpcENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5IGFzIFRvb2x0aXBBcnJvdywgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJmdW5jdGlvbiAkYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCh2YWx1ZSwgW21pbiwgbWF4XSkge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCBhcyBjbGFtcH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVN0YXRlIGFzICQwMWI5YyR1c2VTdGF0ZSwgdXNlUmVmIGFzICQwMWI5YyR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDAxYjljJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQwMWI5YyR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkMDFiOWMkZm9yd2FyZFJlZiwgdXNlRWZmZWN0IGFzICQwMWI5YyR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQwMWI5YyRGcmFnbWVudCwgdXNlTWVtbyBhcyAkMDFiOWMkdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbCBhcyAkMDFiOWMkY3JlYXRlUG9ydGFsfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge2NsYW1wIGFzICQwMWI5YyRjbGFtcH0gZnJvbSBcIkByYWRpeC11aS9udW1iZXJcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb2xsZWN0aW9uIGFzICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQwMWI5YyR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkMDFiOWMkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQwMWI5YyR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDAxYjljJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7dXNlRm9jdXNHdWFyZHMgYXMgJDAxYjljJHVzZUZvY3VzR3VhcmRzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkc1wiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICQwMWI5YyRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge3VzZUlkIGFzICQwMWI5YyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDAxYjljJFJvb3QsIEFuY2hvciBhcyAkMDFiOWMkQW5jaG9yLCBDb250ZW50IGFzICQwMWI5YyRDb250ZW50LCBBcnJvdyBhcyAkMDFiOWMkQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkMDFiOWMkUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDAxYjljJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdCBhcyAkMDFiOWMkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICQwMWI5YyR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICQwMWI5YyR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7VmlzdWFsbHlIaWRkZW4gYXMgJDAxYjljJFZpc3VhbGx5SGlkZGVufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQwMWI5YyRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICQwMWI5YyRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyA9IFtcbiAgICAnICcsXG4gICAgJ0VudGVyJyxcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bidcbl07XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMgPSBbXG4gICAgJyAnLFxuICAgICdFbnRlcidcbl07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FID0gJ1NlbGVjdCc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24sICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9uKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkXSA9ICQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGUoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FLCBbXG4gICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSxcbiAgICAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGVcbl0pO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlID0gJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlKCk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIHZhbHVlOiB2YWx1ZVByb3AgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkaXI6IGRpciAsIG5hbWU6IG5hbWUgLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHJlcXVpcmVkOiByZXF1aXJlZCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFt0cmlnZ2VyLCBzZXRUcmlnZ2VyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmFsdWVOb2RlLCBzZXRWYWx1ZU5vZGVdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZU5vZGVIYXNDaGlsZHJlbiwgc2V0VmFsdWVOb2RlSGFzQ2hpbGRyZW5dID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMDFiOWMkdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW29wZW4gPSBmYWxzZSwgc2V0T3Blbl0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogb25PcGVuQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IHRyaWdnZXIgPyBCb29sZWFuKHRyaWdnZXIuY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgY29uc3QgW25hdGl2ZU9wdGlvbnNTZXQsIHNldE5hdGl2ZU9wdGlvbnNTZXRdID0gJDAxYjljJHVzZVN0YXRlKG5ldyBTZXQoKSk7IC8vIFRoZSBuYXRpdmUgYHNlbGVjdGAgb25seSBhc3NvY2lhdGVzIHRoZSBjb3JyZWN0IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAvLyBgb3B0aW9uYCBpcyByZW5kZXJlZCBhcyBhIGNoaWxkICoqYXQgdGhlIHNhbWUgdGltZSoqIGFzIGl0c2VsZi5cbiAgICAvLyBCZWNhdXNlIGl0IG1pZ2h0IHRha2UgYSBmZXcgcmVuZGVycyBmb3Igb3VyIGl0ZW1zIHRvIGdhdGhlciB0aGUgaW5mb3JtYXRpb24gdG8gYnVpbGRcbiAgICAvLyB0aGUgbmF0aXZlIGBvcHRpb25gKHMpLCB3ZSBnZW5lcmF0ZSBhIGtleSBvbiB0aGUgYHNlbGVjdGAgdG8gbWFrZSBzdXJlIFJlYWN0IHJlLWJ1aWxkcyBpdFxuICAgIC8vIGVhY2ggdGltZSB0aGUgb3B0aW9ucyBjaGFuZ2UuXG4gICAgY29uc3QgbmF0aXZlU2VsZWN0S2V5ID0gQXJyYXkuZnJvbShuYXRpdmVPcHRpb25zU2V0KS5tYXAoKG9wdGlvbik9Pm9wdGlvbi5wcm9wcy52YWx1ZVxuICAgICkuam9pbignOycpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSb290LCBwb3BwZXJTY29wZSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIsIHtcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyQ2hhbmdlOiBzZXRUcmlnZ2VyLFxuICAgICAgICB2YWx1ZU5vZGU6IHZhbHVlTm9kZSxcbiAgICAgICAgb25WYWx1ZU5vZGVDaGFuZ2U6IHNldFZhbHVlTm9kZSxcbiAgICAgICAgdmFsdWVOb2RlSGFzQ2hpbGRyZW46IHZhbHVlTm9kZUhhc0NoaWxkcmVuLFxuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlOiBzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbixcbiAgICAgICAgY29udGVudElkOiAkMDFiOWMkdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3RcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3QsXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT5uZXcgU2V0KHByZXYpLmFkZChvcHRpb24pXG4gICAgICAgICAgICApO1xuICAgICAgICB9LCBbXSksXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1NldCA9IG5ldyBTZXQocHJldik7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1NldC5kZWxldGUob3B0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1NldDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSlcbiAgICB9LCBjaGlsZHJlbikpLCBpc0Zvcm1Db250cm9sID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LCB7XG4gICAgICAgIGtleTogbmF0aXZlU2VsZWN0S2V5LFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlIC8vIGVuYWJsZSBmb3JtIGF1dG9maWxsXG4gICAgICAgICxcbiAgICAgICAgb25DaGFuZ2U6IChldmVudCk9PnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7XG4gICAgICAgIHZhbHVlOiBcIlwiXG4gICAgfSkgOiBudWxsLCBBcnJheS5mcm9tKG5hdGl2ZU9wdGlvbnNTZXQpKSA6IG51bGwpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSA9ICdTZWxlY3RUcmlnZ2VyJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGNvbnRleHQuZGlzYWJsZWQgfHwgZGlzYWJsZWQ7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQub25UcmlnZ2VyQ2hhbmdlKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtzZWFyY2hSZWYsIGhhbmRsZVR5cGVhaGVhZFNlYXJjaCwgcmVzZXRUeXBlYWhlYWRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCgoc2VhcmNoKT0+e1xuICAgICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9PiFpdGVtLmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gZW5hYmxlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnZhbHVlID09PSBjb250ZXh0LnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShlbmFibGVkSXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pO1xuICAgICAgICBpZiAobmV4dEl0ZW0gIT09IHVuZGVmaW5lZCkgY29udGV4dC5vblZhbHVlQ2hhbmdlKG5leHRJdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcGVuID0gKCk9PntcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uT3BlbkNoYW5nZSh0cnVlKTsgLy8gcmVzZXQgdHlwZWFoZWFkIHdoZW4gd2Ugb3BlblxuICAgICAgICAgICAgcmVzZXRUeXBlYWhlYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEFuY2hvciwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIHBvcHBlclNjb3BlKSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmJ1dHRvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiBjb250ZXh0LnJlcXVpcmVkLFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibm9uZVwiLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5vcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCcsXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtcGxhY2Vob2xkZXJcIjogY29udGV4dC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gRW5hYmxlIGNvbXBhdGliaWxpdHkgd2l0aCBuYXRpdmUgbGFiZWwgb3IgY3VzdG9tIGBMYWJlbGAgXCJjbGlja1wiIGZvciBTYWZhcmk6XG4gICAgICAgICxcbiAgICAgICAgb25DbGljazogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXaGlsc3QgYnJvd3NlcnMgZ2VuZXJhbGx5IGhhdmUgbm8gaXNzdWUgZm9jdXNpbmcgdGhlIHRyaWdnZXIgd2hlbiBjbGlja2luZ1xuICAgICAgICAgICAgLy8gb24gYSBsYWJlbCwgU2FmYXJpIHNlZW1zIHRvIHN0cnVnZ2xlIHdpdGggdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGBvbkNsaWNrYC5cbiAgICAgICAgICAgIC8vIFdlIGZvcmNlIGBmb2N1c2AgaW4gdGhpcyBjYXNlLiBOb3RlOiB0aGlzIGRvZXNuJ3QgY3JlYXRlIGFueSBvdGhlciBzaWRlLWVmZmVjdFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgcHJldmVudGluZyBkZWZhdWx0IGluIGBvblBvaW50ZXJEb3duYCBzbyBlZmZlY3RpdmVseVxuICAgICAgICAgICAgLy8gdGhpcyBvbmx5IHJ1bnMgZm9yIGEgbGFiZWwgXCJjbGlja1wiXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModHJpZ2dlclByb3BzLm9uUG9pbnRlckRvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIHByZXZlbnQgaW1wbGljaXQgcG9pbnRlciBjYXB0dXJlXG4gICAgICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcG9pbnRlcmV2ZW50czMvI2ltcGxpY2l0LXBvaW50ZXItY2FwdHVyZVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKSB0YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgICAgICAgLy8gb25seSBjYWxsIGhhbmRsZXIgaWYgaXQncyB0aGUgbGVmdCBidXR0b24gKG1vdXNlZG93biBnZXRzIHRyaWdnZXJlZCBieSBhbGwgbW91c2UgYnV0dG9ucylcbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgd2hlbiB0aGUgY29udHJvbCBrZXkgaXMgcHJlc3NlZCAoYXZvaWRpbmcgTWFjT1MgcmlnaHQgY2xpY2spXG4gICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQudHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQoZXZlbnQucGFnZVgpLFxuICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZKVxuICAgICAgICAgICAgICAgIH07IC8vIHByZXZlbnQgdHJpZ2dlciBmcm9tIHN0ZWFsaW5nIGZvY3VzIGZyb20gdGhlIGFjdGl2ZSBpdGVtIGFmdGVyIG9wZW5pbmcuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSBzZWFyY2hSZWYuY3VycmVudCAhPT0gJyc7XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTtcbiAgICAgICAgICAgIGlmICghaXNNb2RpZmllcktleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSBoYW5kbGVUeXBlYWhlYWRTZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1R5cGluZ0FoZWFkICYmIGV2ZW50LmtleSA9PT0gJyAnKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RWYWx1ZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRSA9ICdTZWxlY3RWYWx1ZSc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgLy8gV2UgaWdub3JlIGBjbGFzc05hbWVgIGFuZCBgc3R5bGVgIGFzIHRoaXMgcGFydCBzaG91bGRuJ3QgYmUgc3R5bGVkLlxuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNsYXNzTmFtZTogY2xhc3NOYW1lICwgc3R5bGU6IHN0eWxlICwgY2hpbGRyZW46IGNoaWxkcmVuICwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyICwgLi4udmFsdWVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRWQUxVRV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB7IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2U6IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UgIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gY2hpbGRyZW4gIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5vblZhbHVlTm9kZUNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlKGhhc0NoaWxkcmVuKTtcbiAgICB9LCBbXG4gICAgICAgIG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UsXG4gICAgICAgIGhhc0NoaWxkcmVuXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHZhbHVlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgZG9uJ3Qgd2FudCBldmVudHMgZnJvbSB0aGUgcG9ydGFsbGVkIGBTZWxlY3RWYWx1ZWAgY2hpbGRyZW4gdG8gYnViYmxlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICAgICAgICB9XG4gICAgfSksIGNvbnRleHQudmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkID8gcGxhY2Vob2xkZXIgOiBjaGlsZHJlbik7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJY29uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJQ09OX05BTUUgPSAnU2VsZWN0SWNvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uaWNvblByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIGljb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbiB8fCAn4pa8Jyk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSUNPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUUgPSAnU2VsZWN0UG9ydGFsJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzID0gKHByb3BzKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQb3J0YWwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwcm9wcykpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Q29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FID0gJ1NlbGVjdENvbnRlbnQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbZnJhZ21lbnQsIHNldEZyYWdtZW50XSA9ICQwMWI5YyR1c2VTdGF0ZSgpOyAvLyBzZXR0aW5nIHRoZSBmcmFnbWVudCBpbiBgdXNlTGF5b3V0RWZmZWN0YCBhcyBgRG9jdW1lbnRGcmFnbWVudGAgZG9lc24ndCBleGlzdCBvbiB0aGUgc2VydmVyXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBzZXRGcmFnbWVudChuZXcgRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKCFjb250ZXh0Lm9wZW4pIHtcbiAgICAgICAgY29uc3QgZnJhZyA9IGZyYWdtZW50O1xuICAgICAgICByZXR1cm4gZnJhZyA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3RcbiAgICAgICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBwcm9wcy5jaGlsZHJlbikpKSwgZnJhZykgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdENvbnRlbnRJbXBsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiA9IDEwO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX0lNUExfTkFNRSA9ICdTZWxlY3RDb250ZW50SW1wbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIHBvc2l0aW9uOiBwb3NpdGlvbiA9ICdpdGVtLWFsaWduZWQnICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duICwgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlICwgc2lkZTogLy9cbiAgICAvLyBQb3BwZXJDb250ZW50IHByb3BzXG4gICAgc2lkZSAsIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQgLCBhbGlnbjogYWxpZ24gLCBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyAsIGNvbGxpc2lvbkJvdW5kYXJ5OiBjb2xsaXNpb25Cb3VuZGFyeSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcgLCBzdGlja3k6IHN0aWNreSAsIGhpZGVXaGVuRGV0YWNoZWQ6IGhpZGVXaGVuRGV0YWNoZWQgLCBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9ucyAsIC8vXG4gICAgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3cG9ydCwgc2V0Vmlld3BvcnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW0sIHNldFNlbGVjdGVkSXRlbV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSXRlbVRleHQsIHNldFNlbGVjdGVkSXRlbVRleHRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2lzUG9zaXRpb25lZCwgc2V0SXNQb3NpdGlvbmVkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICQwMWI5YyRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBNYWtlIHN1cmUgdGhlIHdob2xlIHRyZWUgaGFzIGZvY3VzIGd1YXJkcyBhcyBvdXIgYFNlbGVjdGAgbWF5IGJlXG4gICAgLy8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgRE9NIChiZWNhdXNlIG9mIHRoZSBgUG9ydGFsYClcbiAgICAkMDFiOWMkdXNlRm9jdXNHdWFyZHMoKTtcbiAgICBjb25zdCBmb2N1c0ZpcnN0ID0gJDAxYjljJHVzZUNhbGxiYWNrKChjYW5kaWRhdGVzKT0+e1xuICAgICAgICBjb25zdCBbZmlyc3RJdGVtLCAuLi5yZXN0SXRlbXNdID0gZ2V0SXRlbXMoKS5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IFtsYXN0SXRlbV0gPSByZXN0SXRlbXMuc2xpY2UoLTEpO1xuICAgICAgICBjb25zdCBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAgICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gbnVsbCB8fCBjYW5kaWRhdGUgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgICAgIH0pOyAvLyB2aWV3cG9ydCBtaWdodCBoYXZlIHBhZGRpbmcgc28gc2Nyb2xsIHRvIGl0cyBlZGdlcyB3aGVuIGZvY3VzaW5nIGZpcnN0L2xhc3QgaXRlbXMuXG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBmaXJzdEl0ZW0gJiYgdmlld3BvcnQpIHZpZXdwb3J0LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBsYXN0SXRlbSAmJiB2aWV3cG9ydCkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY2FuZGlkYXRlID09PSBudWxsIHx8IGNhbmRpZGF0ZSA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICB2aWV3cG9ydFxuICAgIF0pO1xuICAgIGNvbnN0IGZvY3VzU2VsZWN0ZWRJdGVtID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT5mb2N1c0ZpcnN0KFtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgXSlcbiAgICAsIFtcbiAgICAgICAgZm9jdXNGaXJzdCxcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFNpbmNlIHRoaXMgaXMgbm90IGRlcGVuZGVudCBvbiBsYXlvdXQsIHdlIHdhbnQgdG8gZW5zdXJlIHRoaXMgcnVucyBhdCB0aGUgc2FtZSB0aW1lIGFzXG4gICAgLy8gb3RoZXIgZWZmZWN0cyBhY3Jvc3MgY29tcG9uZW50cy4gSGVuY2Ugd2h5IHdlIGRvbid0IGNhbGwgYGZvY3VzU2VsZWN0ZWRJdGVtYCBpbnNpZGUgYHBvc2l0aW9uYC5cbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChpc1Bvc2l0aW9uZWQpIGZvY3VzU2VsZWN0ZWRJdGVtKCk7XG4gICAgfSwgW1xuICAgICAgICBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtXG4gICAgXSk7IC8vIHByZXZlbnQgc2VsZWN0aW5nIGl0ZW1zIG9uIGBwb2ludGVydXBgIGluIHNvbWUgY2FzZXMgYWZ0ZXIgb3BlbmluZyBmcm9tIGBwb2ludGVyZG93bmBcbiAgICAvLyBhbmQgY2xvc2Ugb24gYHBvaW50ZXJ1cGAgb3V0c2lkZS5cbiAgICBjb25zdCB7IG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYgIH0gPSBjb250ZXh0O1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxldCBwb2ludGVyTW92ZURlbHRhID0ge1xuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJNb3ZlID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgICAgIHZhciBfdHJpZ2dlclBvaW50ZXJEb3duUG8sIF90cmlnZ2VyUG9pbnRlckRvd25QbzIsIF90cmlnZ2VyUG9pbnRlckRvd25QbzMsIF90cmlnZ2VyUG9pbnRlckRvd25QbzQ7XG4gICAgICAgICAgICAgICAgcG9pbnRlck1vdmVEZWx0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5hYnMoTWF0aC5yb3VuZChldmVudC5wYWdlWCkgLSAoKF90cmlnZ2VyUG9pbnRlckRvd25QbyA9IChfdHJpZ2dlclBvaW50ZXJEb3duUG8yID0gdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90cmlnZ2VyUG9pbnRlckRvd25QbzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmlnZ2VyUG9pbnRlckRvd25QbzIueCkgIT09IG51bGwgJiYgX3RyaWdnZXJQb2ludGVyRG93blBvICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8gOiAwKSksXG4gICAgICAgICAgICAgICAgICAgIHk6IE1hdGguYWJzKE1hdGgucm91bmQoZXZlbnQucGFnZVkpIC0gKChfdHJpZ2dlclBvaW50ZXJEb3duUG8zID0gKF90cmlnZ2VyUG9pbnRlckRvd25QbzQgPSB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3RyaWdnZXJQb2ludGVyRG93blBvNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyaWdnZXJQb2ludGVyRG93blBvNC55KSAhPT0gbnVsbCAmJiBfdHJpZ2dlclBvaW50ZXJEb3duUG8zICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8zIDogMCkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyVXAgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaGFzbid0IG1vdmVkIGJ5IGEgY2VydGFpbiB0aHJlc2hvbGQgdGhlbiB3ZSBwcmV2ZW50IHNlbGVjdGluZyBpdGVtIG9uIGBwb2ludGVydXBgLlxuICAgICAgICAgICAgICAgIGlmIChwb2ludGVyTW92ZURlbHRhLnggPD0gMTAgJiYgcG9pbnRlck1vdmVEZWx0YS55IDw9IDEwKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVsc2UgLy8gb3RoZXJ3aXNlLCBpZiB0aGUgZXZlbnQgd2FzIG91dHNpZGUgdGhlIGNvbnRlbnQsIGNsb3NlLlxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5jb250YWlucyhldmVudC50YXJnZXQpKSBvbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXAsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjbG9zZSA9ICgpPT5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIDtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZSk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2UpO1xuICAgICAgICB9O1xuICAgIH0sIFtcbiAgICAgICAgb25PcGVuQ2hhbmdlXG4gICAgXSk7XG4gICAgY29uc3QgW3NlYXJjaFJlZiwgaGFuZGxlVHlwZWFoZWFkU2VhcmNoXSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2goKHNlYXJjaCk9PntcbiAgICAgICAgY29uc3QgZW5hYmxlZEl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGVuYWJsZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0SXRlbSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oZW5hYmxlZEl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgaWYgKG5leHRJdGVtKSAvKipcbiAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAqLyBzZXRUaW1lb3V0KCgpPT5uZXh0SXRlbS5yZWYuY3VycmVudC5mb2N1cygpXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgY29uc3QgaXRlbVJlZkNhbGxiYWNrID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlLCB2YWx1ZSwgZGlzYWJsZWQpPT57XG4gICAgICAgIGNvbnN0IGlzRmlyc3RWYWxpZEl0ZW0gPSAhZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZEl0ZW0gPSBjb250ZXh0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkSXRlbSB8fCBpc0ZpcnN0VmFsaWRJdGVtKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEl0ZW0obm9kZSk7XG4gICAgICAgICAgICBpZiAoaXNGaXJzdFZhbGlkSXRlbSkgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC52YWx1ZVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1MZWF2ZSA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+Y29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmZvY3VzKClcbiAgICAsIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pO1xuICAgIGNvbnN0IGl0ZW1UZXh0UmVmQ2FsbGJhY2sgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk9PntcbiAgICAgICAgY29uc3QgaXNGaXJzdFZhbGlkSXRlbSA9ICFmaXJzdFZhbGlkSXRlbUZvdW5kUmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkO1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkSXRlbSA9IGNvbnRleHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRJdGVtIHx8IGlzRmlyc3RWYWxpZEl0ZW0pIHNldFNlbGVjdGVkSXRlbVRleHQobm9kZSk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LnZhbHVlXG4gICAgXSk7XG4gICAgY29uc3QgU2VsZWN0UG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gJ3BvcHBlcicgPyAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbjsgLy8gU2lsZW50bHkgaWdub3JlIHByb3BzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gXG4gICAgY29uc3QgcG9wcGVyQ29udGVudFByb3BzID0gU2VsZWN0UG9zaXRpb24gPT09ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA/IHtcbiAgICAgICAgc2lkZTogc2lkZSxcbiAgICAgICAgc2lkZU9mZnNldDogc2lkZU9mZnNldCxcbiAgICAgICAgYWxpZ246IGFsaWduLFxuICAgICAgICBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQsXG4gICAgICAgIGFycm93UGFkZGluZzogYXJyb3dQYWRkaW5nLFxuICAgICAgICBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnksXG4gICAgICAgIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIHN0aWNreTogc3RpY2t5LFxuICAgICAgICBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkLFxuICAgICAgICBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9uc1xuICAgIH0gOiB7fTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICB2aWV3cG9ydDogdmlld3BvcnQsXG4gICAgICAgIG9uVmlld3BvcnRDaGFuZ2U6IHNldFZpZXdwb3J0LFxuICAgICAgICBpdGVtUmVmQ2FsbGJhY2s6IGl0ZW1SZWZDYWxsYmFjayxcbiAgICAgICAgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIG9uSXRlbUxlYXZlOiBoYW5kbGVJdGVtTGVhdmUsXG4gICAgICAgIGl0ZW1UZXh0UmVmQ2FsbGJhY2s6IGl0ZW1UZXh0UmVmQ2FsbGJhY2ssXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtOiBmb2N1c1NlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dDogc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBpc1Bvc2l0aW9uZWQ6IGlzUG9zaXRpb25lZCxcbiAgICAgICAgc2VhcmNoUmVmOiBzZWFyY2hSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICQwMWI5YyRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZvY3VzU2NvcGUsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSAvLyB3ZSBtYWtlIHN1cmUgd2UncmUgbm90IHRyYXBwaW5nIG9uY2UgaXQncyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBwZWQ6IGNvbnRleHQub3BlbixcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gd2UgcHJldmVudCBvcGVuIGF1dG9mb2N1cyBiZWNhdXNlIHdlIG1hbnVhbGx5IGZvY3VzIHRoZSBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlcjtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyID0gY29udGV4dC50cmlnZ2VyKSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlci5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgICAgICBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBmb2N1c291dCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChTZWxlY3RQb3NpdGlvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQub3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBvbkNvbnRleHRNZW51OiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSwgY29udGVudFByb3BzLCBwb3BwZXJDb250ZW50UHJvcHMsIHtcbiAgICAgICAgb25QbGFjZWQ6ICgpPT5zZXRJc1Bvc2l0aW9uZWQodHJ1ZSlcbiAgICAgICAgLFxuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIGZsZXggbGF5b3V0IHNvIHdlIGNhbiBwbGFjZSB0aGUgc2Nyb2xsIGJ1dHRvbnMgcHJvcGVybHlcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIG91dGxpbmUgYnkgZGVmYXVsdCBhcyB0aGUgY29udGVudCBNQVkgZ2V0IGZvY3VzZWRcbiAgICAgICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgICAgIC4uLmNvbnRlbnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhjb250ZW50UHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTsgLy8gc2VsZWN0IHNob3VsZCBub3QgYmUgbmF2aWdhdGVkIHVzaW5nIHRhYiBrZXkgc28gd2UgcHJldmVudCBpdFxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlzTW9kaWZpZXJLZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgaGFuZGxlVHlwZWFoZWFkU2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAgICAgJ0VuZCdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZU5vZGVzID0gaXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICAgICAnRW5kJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd0Rvd24nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVOb2Rlcy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+Zm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50SW1wbCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9JTVBMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9BTElHTkVEX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4ucG9wcGVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY29udGVudFdyYXBwZXIsIHNldENvbnRlbnRXcmFwcGVyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGVudChub2RlKVxuICAgICk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHNob3VsZFJlcG9zaXRpb25SZWYgPSAkMDFiOWMkdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gLCBzZWxlY3RlZEl0ZW1UZXh0OiBzZWxlY3RlZEl0ZW1UZXh0ICwgZm9jdXNTZWxlY3RlZEl0ZW06IGZvY3VzU2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgY29uc3QgcG9zaXRpb24gPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgaWYgKGNvbnRleHQudHJpZ2dlciAmJiBjb250ZXh0LnZhbHVlTm9kZSAmJiBjb250ZW50V3JhcHBlciAmJiBjb250ZW50ICYmIHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSAmJiBzZWxlY3RlZEl0ZW1UZXh0KSB7XG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyUmVjdCA9IGNvbnRleHQudHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vICBIb3Jpem9udGFsIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgY29uc3QgY29udGVudFJlY3QgPSBjb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlUmVjdCA9IGNvbnRleHQudmFsdWVOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgaXRlbVRleHRSZWN0ID0gc2VsZWN0ZWRJdGVtVGV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmRpciAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGl0ZW1UZXh0UmVjdC5sZWZ0IC0gY29udGVudFJlY3QubGVmdDtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gdmFsdWVOb2RlUmVjdC5sZWZ0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdERlbHRhID0gdHJpZ2dlclJlY3QubGVmdCAtIGxlZnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluQ29udGVudFdpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGggKyBsZWZ0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRFZGdlID0gd2luZG93LmlubmVyV2lkdGggLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZExlZnQgPSAkMDFiOWMkY2xhbXAobGVmdCwgW1xuICAgICAgICAgICAgICAgICAgICAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5sZWZ0ID0gY2xhbXBlZExlZnQgKyAncHgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGNvbnRlbnRSZWN0LnJpZ2h0IC0gaXRlbVRleHRSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSB2YWx1ZU5vZGVSZWN0LnJpZ2h0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHREZWx0YSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdHJpZ2dlclJlY3QucmlnaHQgLSByaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5Db250ZW50V2lkdGggPSB0cmlnZ2VyUmVjdC53aWR0aCArIHJpZ2h0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkUmlnaHQgPSAkMDFiOWMkY2xhbXAocmlnaHQsIFtcbiAgICAgICAgICAgICAgICAgICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5yaWdodCA9IGNsYW1wZWRSaWdodCArICdweCc7XG4gICAgICAgICAgICB9IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBWZXJ0aWNhbCBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAqIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0hlaWdodCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMuYm9yZGVyVG9wV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQYWRkaW5nVG9wID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5wYWRkaW5nVG9wLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGggPSBwYXJzZUludChjb250ZW50U3R5bGVzLmJvcmRlckJvdHRvbVdpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMucGFkZGluZ0JvdHRvbSwgMTApO1xuICAgICAgICAgICAgY29uc3QgZnVsbENvbnRlbnRIZWlnaHQgPSBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyBjb250ZW50UGFkZGluZ1RvcCArIGl0ZW1zSGVpZ2h0ICsgY29udGVudFBhZGRpbmdCb3R0b20gKyBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGg7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgbWluQ29udGVudEhlaWdodCA9IE1hdGgubWluKHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQgKiA1LCBmdWxsQ29udGVudEhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZXdwb3J0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ1RvcCA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdUb3AsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSB0cmlnZ2VyUmVjdC50b3AgKyB0cmlnZ2VyUmVjdC5oZWlnaHQgLyAyIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSA9IGF2YWlsYWJsZUhlaWdodCAtIHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGU7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ID0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtT2Zmc2V0TWlkZGxlID0gc2VsZWN0ZWRJdGVtLm9mZnNldFRvcCArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VG9wVG9JdGVtTWlkZGxlID0gY29udGVudEJvcmRlclRvcFdpZHRoICsgY29udGVudFBhZGRpbmdUb3AgKyBpdGVtT2Zmc2V0TWlkZGxlO1xuICAgICAgICAgICAgY29uc3QgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSA9IGZ1bGxDb250ZW50SGVpZ2h0IC0gY29udGVudFRvcFRvSXRlbU1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IHdpbGxBbGlnbldpdGhvdXRUb3BPdmVyZmxvdyA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgPD0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZTtcbiAgICAgICAgICAgIGlmICh3aWxsQWxpZ25XaXRob3V0VG9wT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJdGVtID0gc2VsZWN0ZWRJdGVtID09PSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5yZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5ib3R0b20gPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0T2Zmc2V0Qm90dG9tID0gY29udGVudC5jbGllbnRIZWlnaHQgLSB2aWV3cG9ydC5vZmZzZXRUb3AgLSB2aWV3cG9ydC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UgPSBNYXRoLm1heCh0cmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlLCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ICsgKGlzTGFzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdCb3R0b20gOiAwKSArIHZpZXdwb3J0T2Zmc2V0Qm90dG9tICsgY29udGVudEJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlICsgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2U7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdEl0ZW0gPSBzZWxlY3RlZEl0ZW0gPT09IGl0ZW1zWzBdLnJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLnRvcCA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSBNYXRoLm1heCh0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlLCBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyB2aWV3cG9ydC5vZmZzZXRUb3AgKyAoaXNGaXJzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdUb3AgOiAwKSArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNsYW1wZWRUb3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgLSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgdmlld3BvcnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWFyZ2luID0gYCR7JGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOfXB4IDBgO1xuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWluSGVpZ2h0ID0gbWluQ29udGVudEhlaWdodCArICdweCc7XG4gICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5tYXhIZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgKyAncHgnOyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgb25QbGFjZWQgPT09IG51bGwgfHwgb25QbGFjZWQgPT09IHZvaWQgMCB8fCBvblBsYWNlZCgpOyAvLyB3ZSBkb24ndCB3YW50IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBhZGp1c3RtZW50IHRvIHRyaWdnZXIgXCJleHBhbmQgb24gc2Nyb2xsXCJcbiAgICAgICAgICAgIC8vIHNvIHdlIGV4cGxpY2l0bHkgdHVybiBpdCBvbiBvbmx5IGFmdGVyIHRoZXkndmUgcmVnaXN0ZXJlZC5cbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+c2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICBjb250ZXh0LnRyaWdnZXIsXG4gICAgICAgIGNvbnRleHQudmFsdWVOb2RlLFxuICAgICAgICBjb250ZW50V3JhcHBlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdmlld3BvcnQsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgY29udGV4dC5kaXIsXG4gICAgICAgIG9uUGxhY2VkXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+cG9zaXRpb24oKVxuICAgICwgW1xuICAgICAgICBwb3NpdGlvblxuICAgIF0pOyAvLyBjb3B5IHotaW5kZXggZnJvbSBjb250ZW50IHRvIHdyYXBwZXJcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAkMDFiOWMkdXNlU3RhdGUoKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBhdCB0aGUgdG9wLCB0aGUgc2Nyb2xsIHVwIGJ1dHRvbiB3aWxsIG1vdW50LlxuICAgIC8vIEJlY2F1c2UgaXQgaXMgcGFydCBvZiB0aGUgbm9ybWFsIGZsb3csIGl0IHdpbGwgcHVzaCBkb3duIHRoZSB2aWV3cG9ydCwgdGh1cyB0aHJvd2luZyBvdXJcbiAgICAvLyB0cmlnZ2VyID0+IHNlbGVjdGVkSXRlbSBhbGlnbm1lbnQgb2ZmIGJ5IHRoZSBhbW91bnQgdGhlIHZpZXdwb3J0IHdhcyBwdXNoZWQgZG93bi5cbiAgICAvLyBXZSB3YWl0IGZvciB0aGlzIHRvIGhhcHBlbiBhbmQgdGhlbiByZS1ydW4gdGhlIHBvc2l0aW5pbmcgbG9naWMgb25lIG1vcmUgdGltZSB0byBhY2NvdW50IGZvciBpdC5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2UgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgIGlmIChub2RlICYmIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb24oKTtcbiAgICAgICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtID09PSBudWxsIHx8IGZvY3VzU2VsZWN0ZWRJdGVtID09PSB2b2lkIDAgfHwgZm9jdXNTZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgICAgIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW1cbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyLFxuICAgICAgICBzaG91bGRFeHBhbmRPblNjcm9sbFJlZjogc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYsXG4gICAgICAgIG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOiBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiBzZXRDb250ZW50V3JhcHBlcixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbnRlbnRaSW5kZXhcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGdldCB0aGUgaGVpZ2h0IG9mIHRoZSBjb250ZW50LCBpdCBpbmNsdWRlcyBib3JkZXJzLiBJZiB3ZSB3ZXJlIHRvIHNldFxuICAgICAgICAgICAgLy8gdGhlIGhlaWdodCB3aXRob3V0IGhhdmluZyBgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdgIGl0IHdvdWxkIGJlIHRvbyBiaWcuXG4gICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBjb250ZW50IGRvZXNuJ3QgZ2V0IHRhbGxlciB0aGFuIHRoZSB3cmFwcGVyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIC4uLnBvcHBlclByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0FMSUdORURfUE9TSVRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RQb3BwZXJQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0UG9wcGVyUG9zaXRpb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBhbGlnbjogYWxpZ24gPSAnc3RhcnQnICwgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAsIC4uLnBvcHBlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQ29udGVudCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJTY29wZSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgICAgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIEVuc3VyZSBib3JkZXItYm94IGZvciBmbG9hdGluZy11aSBjYWxjdWxhdGlvbnNcbiAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgLi4ucG9wcGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzogJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0KSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Vmlld3BvcnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RWaWV3cG9ydFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIHt9KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FID0gJ1NlbGVjdFZpZXdwb3J0JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi52aWV3cG9ydFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRDb250ZXh0Lm9uVmlld3BvcnRDaGFuZ2UpO1xuICAgIGNvbnN0IHByZXZTY3JvbGxUb3BSZWYgPSAkMDFiOWMkdXNlUmVmKDApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgIF9faHRtbDogYFtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF17c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fVtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1gXG4gICAgICAgIH1cbiAgICB9KSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydFwiOiBcIlwiLFxuICAgICAgICByb2xlOiBcInByZXNlbnRhdGlvblwiXG4gICAgfSwgdmlld3BvcnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBwb3NpdGlvbjogJ3JlbGF0aXZlJyBoZXJlIG9uIHRoZSBgdmlld3BvcnRgIHNvIHRoYXQgd2hlbiB3ZSBjYWxsXG4gICAgICAgICAgICAvLyBgc2VsZWN0ZWRJdGVtLm9mZnNldFRvcGAgaW4gY2FsY3VsYXRpb25zLCB0aGUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydFxuICAgICAgICAgICAgLy8gKGluZGVwZW5kZW50IG9mIHRoZSBzY3JvbGxVcEJ1dHRvbikuXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIGZsZXg6IDEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgLi4udmlld3BvcnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblNjcm9sbDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHZpZXdwb3J0UHJvcHMub25TY3JvbGwsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyICwgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICB9ID0gdmlld3BvcnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSBudWxsICYmIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSB2b2lkIDAgJiYgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCAmJiBjb250ZW50V3JhcHBlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVkQnkgPSBNYXRoLmFicyhwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgLSB2aWV3cG9ydC5zY3JvbGxUb3ApO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZEJ5ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gKiAyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NNaW5IZWlnaHQgPSBwYXJzZUZsb2F0KGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc0hlaWdodCA9IHBhcnNlRmxvYXQoY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldkhlaWdodCA9IE1hdGgubWF4KGNzc01pbkhlaWdodCwgY3NzSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZIZWlnaHQgPCBhdmFpbGFibGVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRIZWlnaHQgPSBwcmV2SGVpZ2h0ICsgc2Nyb2xsZWRCeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWROZXh0SGVpZ2h0ID0gTWF0aC5taW4oYXZhaWxhYmxlSGVpZ2h0LCBuZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodERpZmYgPSBuZXh0SGVpZ2h0IC0gY2xhbXBlZE5leHRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBjbGFtcGVkTmV4dEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFdyYXBwZXIuc3R5bGUuYm90dG9tID09PSAnMHB4Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGhlaWdodERpZmYgPiAwID8gaGVpZ2h0RGlmZiA6IDA7IC8vIGVuc3VyZSB0aGUgY29udGVudCBzdGF5cyBwaW5uZWQgdG8gdGhlIGJvdHRvbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtZW5kJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IHZpZXdwb3J0LnNjcm9sbFRvcDtcbiAgICAgICAgfSlcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEdyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FID0gJ1NlbGVjdEdyb3VwJztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RHcm91cENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGdyb3VwSWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGlkOiBncm91cElkXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJncm91cFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBncm91cElkXG4gICAgfSwgZ3JvdXBQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSA9ICdTZWxlY3RMYWJlbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4ubGFiZWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZ3JvdXBDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEdyb3VwQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBncm91cENvbnRleHQuaWRcbiAgICB9LCBsYWJlbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FID0gJ1NlbGVjdEl0ZW0nO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQ29udGV4dFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCB0ZXh0VmFsdWU6IHRleHRWYWx1ZVByb3AgLCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgY29uc3QgW3RleHRWYWx1ZSwgc2V0VGV4dFZhbHVlXSA9ICQwMWI5YyR1c2VTdGF0ZSh0ZXh0VmFsdWVQcm9wICE9PSBudWxsICYmIHRleHRWYWx1ZVByb3AgIT09IHZvaWQgMCA/IHRleHRWYWx1ZVByb3AgOiAnJyk7XG4gICAgY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JGl0ZW1SO1xuICAgICAgICByZXR1cm4gKF9jb250ZW50Q29udGV4dCRpdGVtUiA9IGNvbnRlbnRDb250ZXh0Lml0ZW1SZWZDYWxsYmFjaykgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JGl0ZW1SID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkaXRlbVIuY2FsbChjb250ZW50Q29udGV4dCwgbm9kZSwgdmFsdWUsIGRpc2FibGVkKTtcbiAgICB9KTtcbiAgICBjb25zdCB0ZXh0SWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoKT0+e1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRJZDogdGV4dElkLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvbkl0ZW1UZXh0Q2hhbmdlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgICAgICBzZXRUZXh0VmFsdWUoKHByZXZUZXh0VmFsdWUpPT57XG4gICAgICAgICAgICAgICAgdmFyIF9ub2RlJHRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2VGV4dFZhbHVlIHx8ICgoX25vZGUkdGV4dENvbnRlbnQgPSBub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUudGV4dENvbnRlbnQpICE9PSBudWxsICYmIF9ub2RlJHRleHRDb250ZW50ICE9PSB2b2lkIDAgPyBfbm9kZSR0ZXh0Q29udGVudCA6ICcnKS50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5JdGVtU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRWYWx1ZTogdGV4dFZhbHVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdGV4dElkLFxuICAgICAgICBcImRhdGEtaGlnaGxpZ2h0ZWRcIjogaXNGb2N1c2VkID8gJycgOiB1bmRlZmluZWQgLy8gYGlzRm9jdXNlZGAgY2F2ZWF0IGZpeGVzIHN0dXR0ZXJpbmcgaW4gVm9pY2VPdmVyXG4gICAgICAgICxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQgJiYgaXNGb2N1c2VkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogLTFcbiAgICB9LCBpdGVtUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Gb2N1cywgKCk9PnNldElzRm9jdXNlZCh0cnVlKVxuICAgICAgICApLFxuICAgICAgICBvbkJsdXI6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25CbHVyLCAoKT0+c2V0SXNGb2N1c2VkKGZhbHNlKVxuICAgICAgICApLFxuICAgICAgICBvblBvaW50ZXJVcDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJVcCwgaGFuZGxlU2VsZWN0KSxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJNb3ZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIC8vIGV2ZW4gdGhvdWdoIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcHRpb24sIGl0J3MgYWNjZXB0YWJsZVxuICAgICAgICAgICAgLy8gYXMgaXQgb25seSBtZWFucyBpdCBtaWdodCBzY3JvbGwgYSBmZXcgcGl4ZWxzIHdoZW4gdXNpbmcgdGhlIHBvaW50ZXIuXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uUG9pbnRlckxlYXZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUyO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUyID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTIgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUyLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRzZWFyYztcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSAoKF9jb250ZW50Q29udGV4dCRzZWFyYyA9IGNvbnRlbnRDb250ZXh0LnNlYXJjaFJlZikgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JHNlYXJjID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkc2VhcmMuY3VycmVudCkgIT09ICcnO1xuICAgICAgICAgICAgaWYgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpIHJldHVybjtcbiAgICAgICAgICAgIGlmICgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkgaGFuZGxlU2VsZWN0KCk7IC8vIHByZXZlbnQgcGFnZSBzY3JvbGwgaWYgdXNpbmcgdGhlIHNwYWNlIGtleSB0byBzZWxlY3QgYW4gaXRlbVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtVGV4dFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUgPSAnU2VsZWN0SXRlbVRleHQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIC8vIFdlIGlnbm9yZSBgY2xhc3NOYW1lYCBhbmQgYHN0eWxlYCBhcyB0aGlzIHBhcnQgc2hvdWxkbid0IGJlIHN0eWxlZC5cbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjbGFzc05hbWU6IGNsYXNzTmFtZSAsIHN0eWxlOiBzdHlsZSAsIC4uLml0ZW1UZXh0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXRlbUNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBuYXRpdmVPcHRpb25zQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtpdGVtVGV4dE5vZGUsIHNldEl0ZW1UZXh0Tm9kZV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0SXRlbVRleHROb2RlKG5vZGUpXG4gICAgLCBpdGVtQ29udGV4dC5vbkl0ZW1UZXh0Q2hhbmdlLCAobm9kZSk9PntcbiAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRpdGVtVDtcbiAgICAgICAgcmV0dXJuIChfY29udGVudENvbnRleHQkaXRlbVQgPSBjb250ZW50Q29udGV4dC5pdGVtVGV4dFJlZkNhbGxiYWNrKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkaXRlbVQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50Q29udGV4dCRpdGVtVC5jYWxsKGNvbnRlbnRDb250ZXh0LCBub2RlLCBpdGVtQ29udGV4dC52YWx1ZSwgaXRlbUNvbnRleHQuZGlzYWJsZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRleHRDb250ZW50ID0gaXRlbVRleHROb2RlID09PSBudWxsIHx8IGl0ZW1UZXh0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbVRleHROb2RlLnRleHRDb250ZW50O1xuICAgIGNvbnN0IG5hdGl2ZU9wdGlvbiA9ICQwMWI5YyR1c2VNZW1vKCgpPT4vKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgIGtleTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXRlbUNvbnRleHQuZGlzYWJsZWRcbiAgICAgICAgfSwgdGV4dENvbnRlbnQpXG4gICAgLCBbXG4gICAgICAgIGl0ZW1Db250ZXh0LmRpc2FibGVkLFxuICAgICAgICBpdGVtQ29udGV4dC52YWx1ZSxcbiAgICAgICAgdGV4dENvbnRlbnRcbiAgICBdKTtcbiAgICBjb25zdCB7IG9uTmF0aXZlT3B0aW9uQWRkOiBvbk5hdGl2ZU9wdGlvbkFkZCAsIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiBvbk5hdGl2ZU9wdGlvblJlbW92ZSAgfSA9IG5hdGl2ZU9wdGlvbnNDb250ZXh0O1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgb25OYXRpdmVPcHRpb25BZGQobmF0aXZlT3B0aW9uKTtcbiAgICAgICAgcmV0dXJuICgpPT5vbk5hdGl2ZU9wdGlvblJlbW92ZShuYXRpdmVPcHRpb24pXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkLFxuICAgICAgICBvbk5hdGl2ZU9wdGlvblJlbW92ZSxcbiAgICAgICAgbmF0aXZlT3B0aW9uXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGl0ZW1Db250ZXh0LnRleHRJZFxuICAgIH0sIGl0ZW1UZXh0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSksIGl0ZW1Db250ZXh0LmlzU2VsZWN0ZWQgJiYgY29udGV4dC52YWx1ZU5vZGUgJiYgIWNvbnRleHQudmFsdWVOb2RlSGFzQ2hpbGRyZW4gPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVQb3J0YWwoaXRlbVRleHRQcm9wcy5jaGlsZHJlbiwgY29udGV4dC52YWx1ZU5vZGUpIDogbnVsbCk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUluZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRSA9ICdTZWxlY3RJdGVtSW5kaWNhdG9yJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5pdGVtSW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gaXRlbUNvbnRleHQuaXNTZWxlY3RlZCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBpdGVtSW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2Nyb2xsVXBCdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSA9ICdTZWxlY3RTY3JvbGxVcEJ1dHRvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY2FuU2Nyb2xsVXAxLCBzZXRDYW5TY3JvbGxVcF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCB2aWV3cG9ydENvbnRleHQub25TY3JvbGxCdXR0b25DaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0ICYmIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZW50Q29udGV4dC52aWV3cG9ydDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5TY3JvbGxVcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCA+IDA7XG4gICAgICAgICAgICAgICAgc2V0Q2FuU2Nyb2xsVXAoY2FuU2Nyb2xsVXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsVXAxID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25BdXRvU2Nyb2xsOiAoKT0+e1xuICAgICAgICAgICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wIC0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNjcm9sbERvd25CdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FID0gJ1NlbGVjdFNjcm9sbERvd25CdXR0b24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NhblNjcm9sbERvd24xLCBzZXRDYW5TY3JvbGxEb3duXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHZpZXdwb3J0Q29udGV4dC5vblNjcm9sbEJ1dHRvbkNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudENvbnRleHQudmlld3BvcnQgJiYgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0O1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodCAtIHZpZXdwb3J0LmNsaWVudEhlaWdodDsgLy8gd2UgdXNlIE1hdGguY2VpbCBoZXJlIGJlY2F1c2UgaWYgdGhlIFVJIGlzIHpvb21lZC1pblxuICAgICAgICAgICAgICAgIC8vIGBzY3JvbGxUb3BgIGlzIG5vdCBhbHdheXMgcmVwb3J0ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhblNjcm9sbERvd24gPSBNYXRoLmNlaWwodmlld3BvcnQuc2Nyb2xsVG9wKSA8IG1heFNjcm9sbDtcbiAgICAgICAgICAgICAgICBzZXRDYW5TY3JvbGxEb3duKGNhblNjcm9sbERvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsRG93bjEgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkF1dG9TY3JvbGw6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgICAgICAgICBpZiAodmlld3BvcnQgJiYgc2VsZWN0ZWRJdGVtKSB2aWV3cG9ydC5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxUb3AgKyBzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FXG59KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBvbkF1dG9TY3JvbGw6IG9uQXV0b1Njcm9sbCAsIC4uLnNjcm9sbEluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgnU2VsZWN0U2Nyb2xsQnV0dG9uJywgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgYXV0b1Njcm9sbFRpbWVyUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNsZWFyQXV0b1Njcm9sbFRpbWVyID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5jbGVhckF1dG9TY3JvbGxUaW1lcigpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyXG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBvbiBlaXRoZXIgc2lkZSwgdGhlIHJlbGV2YW50IHNjcm9sbCBidXR0b24gd2lsbCBtb3VudC5cbiAgICAvLyBCZWNhdXNlIGl0IGlzIHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LCBpdCB3aWxsIHB1c2ggZG93biAodG9wIGJ1dHRvbikgb3Igc2hyaW5rIChib3R0b20gYnV0dG9uKVxuICAgIC8vIHRoZSB2aWV3cG9ydCwgcG90ZW50aWFsbHkgY2F1c2luZyB0aGUgYWN0aXZlIGl0ZW0gdG8gbm93IGJlIHBhcnRpYWxseSBvdXQgb2Ygdmlldy5cbiAgICAvLyBXZSByZS1ydW4gdGhlIGBzY3JvbGxJbnRvVmlld2AgbG9naWMgdG8gbWFrZSBzdXJlIGl0IHN0YXlzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlO1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gZ2V0SXRlbXMoKS5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBhY3RpdmVJdGVtID09PSBudWxsIHx8IGFjdGl2ZUl0ZW0gPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID0gYWN0aXZlSXRlbS5yZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID09PSB2b2lkIDAgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgfSk7XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBzY3JvbGxJbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgICAuLi5zY3JvbGxJbmRpY2F0b3JQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyRG93biwgKCk9PntcbiAgICAgICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9PT0gbnVsbCkgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwob25BdXRvU2Nyb2xsLCA1MCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJNb3ZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyTW92ZSwgKCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUzO1xuICAgICAgICAgICAgKF9jb250ZW50Q29udGV4dCRvbkl0ZTMgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMyA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTMuY2FsbChjb250ZW50Q29udGV4dCk7XG4gICAgICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPT09IG51bGwpIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldEludGVydmFsKG9uQXV0b1Njcm9sbCwgNTApO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhzY3JvbGxJbmRpY2F0b3JQcm9wcy5vblBvaW50ZXJMZWF2ZSwgKCk9PntcbiAgICAgICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyKCk7XG4gICAgICAgIH0pXG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTZXBhcmF0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFUEFSQVRPUl9OQU1FID0gJ1NlbGVjdFNlcGFyYXRvcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5zZXBhcmF0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIHNlcGFyYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VQQVJBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0QXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUgPSAnU2VsZWN0QXJyb3cnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjggPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiBjb250ZXh0Lm9wZW4gJiYgY29udGVudENvbnRleHQucG9zaXRpb24gPT09ICdwb3BwZXInID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQXJyb3csICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IHZhbHVlOiB2YWx1ZSAsIC4uLnNlbGVjdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkMDFiOWMkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9ICQwMWI5YyR1c2VQcmV2aW91cyh2YWx1ZSk7IC8vIEJ1YmJsZSB2YWx1ZSBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHNlbGVjdFByb3RvID0gd2luZG93LkhUTUxTZWxlY3RFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0UHJvdG8sICd2YWx1ZScpO1xuICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldlZhbHVlICE9PSB2YWx1ZSAmJiBzZXRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldFZhbHVlLmNhbGwoc2VsZWN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBzZWxlY3QuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXZWYWx1ZSxcbiAgICAgICAgdmFsdWVcbiAgICBdKTtcbiAgICAvKipcbiAgICogV2UgcHVycG9zZWZ1bGx5IHVzZSBhIGBzZWxlY3RgIGhlcmUgdG8gc3VwcG9ydCBmb3JtIGF1dG9maWxsIGFzIG11Y2hcbiAgICogYXMgcG9zc2libGUuXG4gICAqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBkbyBub3QgYWRkIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBoZXJlIHRvIGFsbG93IHRoZSB2YWx1ZVxuICAgKiB0byBiZSBzZXQgcHJvZ3JhbWF0aWNhbGx5IGFuZCBidWJibGUgdG8gYW55IHBhcmVudCBmb3JtIGBvbkNoYW5nZWAgZXZlbnQuXG4gICAqIEFkZGluZyB0aGUgYHZhbHVlYCB3aWxsIGNhdXNlIFJlYWN0IHRvIGNvbnNpZGVyIHRoZSBwcm9ncmFtYXRpY1xuICAgKiBkaXNwYXRjaCBhIGR1cGxpY2F0ZSBhbmQgaXQgd2lsbCBnZXQgc3dhbGxvd2VkLlxuICAgKlxuICAgKiBXZSB1c2UgYFZpc3VhbGx5SGlkZGVuYCByYXRoZXIgdGhhbiBgZGlzcGxheTogXCJub25lXCJgIGJlY2F1c2UgU2FmYXJpIGF1dG9maWxsXG4gICAqIHdvbid0IHdvcmsgb3RoZXJ3aXNlLlxuICAgKi8gcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFZpc3VhbGx5SGlkZGVuLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwic2VsZWN0XCIsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgc2VsZWN0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVcbiAgICB9KSkpO1xufSk7XG4kY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LmRpc3BsYXlOYW1lID0gJ0J1YmJsZVNlbGVjdCc7XG5mdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKG9uU2VhcmNoQ2hhbmdlKSB7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gJDAxYjljJHVzZUNhbGxiYWNrUmVmKG9uU2VhcmNoQ2hhbmdlKTtcbiAgICBjb25zdCBzZWFyY2hSZWYgPSAkMDFiOWMkdXNlUmVmKCcnKTtcbiAgICBjb25zdCB0aW1lclJlZiA9ICQwMWI5YyR1c2VSZWYoMCk7XG4gICAgY29uc3QgaGFuZGxlVHlwZWFoZWFkU2VhcmNoID0gJDAxYjljJHVzZUNhbGxiYWNrKChrZXkpPT57XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHNlYXJjaFJlZi5jdXJyZW50ICsga2V5O1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2Uoc2VhcmNoKTtcbiAgICAgICAgKGZ1bmN0aW9uIHVwZGF0ZVNlYXJjaCh2YWx1ZSkge1xuICAgICAgICAgICAgc2VhcmNoUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7IC8vIFJlc2V0IGBzZWFyY2hSZWZgIDEgc2Vjb25kIGFmdGVyIGl0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+dXBkYXRlU2VhcmNoKCcnKVxuICAgICAgICAgICAgLCAxMDAwKTtcbiAgICAgICAgfSkoc2VhcmNoKTtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVNlYXJjaENoYW5nZVxuICAgIF0pO1xuICAgIGNvbnN0IHJlc2V0VHlwZWFoZWFkID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gJyc7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT53aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2VhcmNoUmVmLFxuICAgICAgICBoYW5kbGVUeXBlYWhlYWRTZWFyY2gsXG4gICAgICAgIHJlc2V0VHlwZWFoZWFkXG4gICAgXTtcbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgXCJtZWF0XCIgb2YgdGhlIHR5cGVhaGVhZCBtYXRjaGluZyBsb2dpYy4gSXQgdGFrZXMgaW4gYSBsaXN0IG9mIGl0ZW1zLFxuICogdGhlIHNlYXJjaCBhbmQgdGhlIGN1cnJlbnQgaXRlbSwgYW5kIHJldHVybnMgdGhlIG5leHQgaXRlbSAob3IgYHVuZGVmaW5lZGApLlxuICpcbiAqIFdlIG5vcm1hbGl6ZSB0aGUgc2VhcmNoIGJlY2F1c2UgaWYgYSB1c2VyIGhhcyByZXBlYXRlZGx5IHByZXNzZWQgYSBjaGFyYWN0ZXIsXG4gKiB3ZSB3YW50IHRoZSBleGFjdCBzYW1lIGJlaGF2aW9yIGFzIGlmIHdlIG9ubHkgaGFkIHRoYXQgb25lIGNoYXJhY3RlclxuICogKGllLiBjeWNsZSB0aHJvdWdoIGl0ZW1zIHN0YXJ0aW5nIHdpdGggdGhhdCBjaGFyYWN0ZXIpXG4gKlxuICogV2UgYWxzbyByZW9yZGVyIHRoZSBpdGVtcyBieSB3cmFwcGluZyB0aGUgYXJyYXkgYXJvdW5kIHRoZSBjdXJyZW50IGl0ZW0uXG4gKiBUaGlzIGlzIHNvIHdlIGFsd2F5cyBsb29rIGZvcndhcmQgZnJvbSB0aGUgY3VycmVudCBpdGVtLCBhbmQgcGlja2luZyB0aGUgZmlyc3RcbiAqIGl0ZW0gd2lsbCBhbHdheXMgYmUgdGhlIGNvcnJlY3Qgb25lLlxuICpcbiAqIEZpbmFsbHksIGlmIHRoZSBub3JtYWxpemVkIHNlYXJjaCBpcyBleGFjdGx5IG9uZSBjaGFyYWN0ZXIsIHdlIGV4Y2x1ZGUgdGhlXG4gKiBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgdmFsdWVzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxkIGJlIHRoZSBmaXJzdCB0byBtYXRjaCBhbHdheXNcbiAqIGFuZCBmb2N1cyB3b3VsZCBuZXZlciBtb3ZlLiBUaGlzIGlzIGFzIG9wcG9zZWQgdG8gdGhlIHJlZ3VsYXIgY2FzZSwgd2hlcmUgd2VcbiAqIGRvbid0IHdhbnQgZm9jdXMgdG8gbW92ZSBpZiB0aGUgY3VycmVudCBpdGVtIHN0aWxsIG1hdGNoZXMuXG4gKi8gZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShpdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSkge1xuICAgIGNvbnN0IGlzUmVwZWF0ZWQgPSBzZWFyY2gubGVuZ3RoID4gMSAmJiBBcnJheS5mcm9tKHNlYXJjaCkuZXZlcnkoKGNoYXIpPT5jaGFyID09PSBzZWFyY2hbMF1cbiAgICApO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2ggPSBpc1JlcGVhdGVkID8gc2VhcmNoWzBdIDogc2VhcmNoO1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtSW5kZXggPSBjdXJyZW50SXRlbSA/IGl0ZW1zLmluZGV4T2YoY3VycmVudEl0ZW0pIDogLTE7XG4gICAgbGV0IHdyYXBwZWRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR3cmFwQXJyYXkoaXRlbXMsIE1hdGgubWF4KGN1cnJlbnRJdGVtSW5kZXgsIDApKTtcbiAgICBjb25zdCBleGNsdWRlQ3VycmVudEl0ZW0gPSBub3JtYWxpemVkU2VhcmNoLmxlbmd0aCA9PT0gMTtcbiAgICBpZiAoZXhjbHVkZUN1cnJlbnRJdGVtKSB3cmFwcGVkSXRlbXMgPSB3cmFwcGVkSXRlbXMuZmlsdGVyKCh2KT0+diAhPT0gY3VycmVudEl0ZW1cbiAgICApO1xuICAgIGNvbnN0IG5leHRJdGVtID0gd3JhcHBlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnRleHRWYWx1ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobm9ybWFsaXplZFNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgcmV0dXJuIG5leHRJdGVtICE9PSBjdXJyZW50SXRlbSA/IG5leHRJdGVtIDogdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBXcmFwcyBhbiBhcnJheSBhcm91bmQgaXRzZWxmIGF0IGEgZ2l2ZW4gc3RhcnQgaW5kZXhcbiAqIEV4YW1wbGU6IGB3cmFwQXJyYXkoWydhJywgJ2InLCAnYycsICdkJ10sIDIpID09PSBbJ2MnLCAnZCcsICdhJywgJ2InXWBcbiAqLyBmdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkd3JhcEFycmF5KGFycmF5LCBzdGFydEluZGV4KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpPT5hcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF1cbiAgICApO1xufVxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjA7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2Q7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDVjNmMwOGRjMmQzY2E3ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQ7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWIyZmNmZGJkN2JhOTdkNCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmODtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyZjYwZDNlYzlhZDQ2OGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMWZmM2MzZjA4YWU5NjNjMCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDM7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4O1xuXG5cblxuXG5leHBvcnQgeyRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIGFzIGNyZWF0ZVNlbGVjdFNjb3BlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZiBhcyBTZWxlY3QsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgYXMgU2VsZWN0VHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAgYXMgU2VsZWN0VmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IGFzIFNlbGVjdEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzIGFzIFNlbGVjdFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgYXMgU2VsZWN0Q29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQgYXMgU2VsZWN0Vmlld3BvcnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0IGFzIFNlbGVjdEdyb3VwLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCBhcyBTZWxlY3RMYWJlbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYgYXMgU2VsZWN0SXRlbSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgYXMgU2VsZWN0SXRlbVRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2IGFzIFNlbGVjdEl0ZW1JbmRpY2F0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IGFzIFNlbGVjdFNjcm9sbFVwQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5IGFzIFNlbGVjdFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMgYXMgU2VsZWN0U2VwYXJhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyOCBhcyBTZWxlY3RBcnJvdywgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQgYXMgVmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmMDRhNjEyOThhNDdhNDBmIGFzIEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyBhcyBWaWV3cG9ydCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViMmZjZmRiZDdiYTk3ZDQgYXMgR3JvdXAsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSBhcyBJdGVtVGV4dCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgYXMgSXRlbUluZGljYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIgYXMgU2Nyb2xsVXBCdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIGFzIFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxZmYzYzNmMDhhZTk2M2MwIGFzIFNlcGFyYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4NVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4NSlcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5NyAxOC43NUMxMS43ODcxIDE4Ljc1IDExLjYwOSAxOC42NzgxIDExLjQ2NTQgMTguNTM0NEMxMS4zMjE4IDE4LjM5MDYgMTEuMjUgMTguMjEyNSAxMS4yNSAxOFYxMi43NUg1Ljk5OTk3QzUuNzg3NDcgMTIuNzUgNS42MDkzNiAxMi42NzggNS40NjU2MyAxMi41MzQyQzUuMzIxODggMTIuMzkwNCA1LjI1IDEyLjIxMjIgNS4yNSAxMS45OTk3QzUuMjUgMTEuNzg3MSA1LjMyMTg4IDExLjYwOSA1LjQ2NTYzIDExLjQ2NTRDNS42MDkzNiAxMS4zMjE4IDUuNzg3NDcgMTEuMjUgNS45OTk5NyAxMS4yNUgxMS4yNVY1Ljk5OTk3QzExLjI1IDUuNzg3NDcgMTEuMzIxOSA1LjYwOTM1IDExLjQ2NTcgNS40NjU2QzExLjYwOTUgNS4zMjE4NyAxMS43ODc3IDUuMjUgMTIuMDAwMyA1LjI1QzEyLjIxMjkgNS4yNSAxMi4zOTEgNS4zMjE4NyAxMi41MzQ2IDUuNDY1NkMxMi42NzgyIDUuNjA5MzUgMTIuNzQ5OSA1Ljc4NzQ3IDEyLjc0OTkgNS45OTk5N1YxMS4yNUgxOEMxOC4yMTI1IDExLjI1IDE4LjM5MDYgMTEuMzIxOSAxOC41MzQ0IDExLjQ2NTdDMTguNjc4MSAxMS42MDk1IDE4Ljc1IDExLjc4NzcgMTguNzUgMTIuMDAwM0MxOC43NSAxMi4yMTI5IDE4LjY3ODEgMTIuMzkxIDE4LjUzNDQgMTIuNTM0NkMxOC4zOTA2IDEyLjY3ODIgMTguMjEyNSAxMi43NSAxOCAxMi43NUgxMi43NDk5VjE4QzEyLjc0OTkgMTguMjEyNSAxMi42NzggMTguMzkwNiAxMi41MzQyIDE4LjUzNDRDMTIuMzkwNCAxOC42NzgxIDEyLjIxMjIgMTguNzUgMTEuOTk5NyAxOC43NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzIwMl85MDk0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfMjAyXzkwOTQpXCI+XG48cGF0aCBkPVwiTTEyLjAwMTYgMjEuNUMxMC42ODc3IDIxLjUgOS40NTI2OCAyMS4yNTA2IDguMjk2NTUgMjAuNzUyQzcuMTQwNCAyMC4yNTMzIDYuMTM0NzIgMTkuNTc2NSA1LjI3OTUgMTguNzIxN0M0LjQyNDI3IDE3Ljg2NjkgMy43NDcyMSAxNi44NjE2IDMuMjQ4MzMgMTUuNzA2QzIuNzQ5NDQgMTQuNTUwNCAyLjUgMTMuMzE1NiAyLjUgMTIuMDAxN0MyLjUgMTAuNjg3NyAyLjc0OTMzIDkuNDUyNjggMy4yNDggOC4yOTY1NUMzLjc0NjY3IDcuMTQwNCA0LjQyMzQyIDYuMTM0NzIgNS4yNzgyNSA1LjI3OTVDNi4xMzMxIDQuNDI0MjcgNy4xMzgzNCAzLjc0NzIxIDguMjkzOTggMy4yNDgzM0M5LjQ0OTU5IDIuNzQ5NDQgMTAuNjg0NCAyLjUgMTEuOTk4MyAyLjVDMTMuMzEyMiAyLjUgMTQuNTQ3MyAyLjc0OTMzIDE1LjcwMzQgMy4yNDhDMTYuODU5NiAzLjc0NjY3IDE3Ljg2NTIgNC40MjM0MiAxOC43MjA1IDUuMjc4MjVDMTkuNTc1NyA2LjEzMzEgMjAuMjUyNyA3LjEzODM0IDIwLjc1MTYgOC4yOTM5OEMyMS4yNTA1IDkuNDQ5NTkgMjEuNSAxMC42ODQ0IDIxLjUgMTEuOTk4M0MyMS41IDEzLjMxMjIgMjEuMjUwNiAxNC41NDczIDIwLjc1MiAxNS43MDM0QzIwLjI1MzMgMTYuODU5NiAxOS41NzY1IDE3Ljg2NTIgMTguNzIxNyAxOC43MjA1QzE3Ljg2NjkgMTkuNTc1NyAxNi44NjE2IDIwLjI1MjcgMTUuNzA2IDIwLjc1MTZDMTQuNTUwNCAyMS4yNTA1IDEzLjMxNTYgMjEuNSAxMi4wMDE2IDIxLjVaTTEyIDIwQzE0LjIzMzMgMjAgMTYuMTI1IDE5LjIyNSAxNy42NzUgMTcuNjc1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzMyAyMCAxMkMyMCAxMS4wNjE4IDE5LjgzOTcgMTAuMTU4MyAxOS41MTkyIDkuMjg5NThDMTkuMTk4NyA4LjQyMDg2IDE4Ljc0MSA3LjYyNjg4IDE4LjE0NjEgNi45MDc2NUw2LjkwNzY1IDE4LjE0NjFDNy42MjY4OCAxOC43NDc0IDguNDIwODYgMTkuMjA2NyA5LjI4OTU4IDE5LjUyNEMxMC4xNTgzIDE5Ljg0MTMgMTEuMDYxOCAyMCAxMiAyMFpNNS44NTM4MyAxNy4wOTIzTDE3LjA5MjMgNS44NTM4MkMxNi4zNzk1IDUuMjQ2MTQgMTUuNTg3NyA0Ljc4NTI0IDE0LjcxNjkgNC40NzExM0MxMy44NDYxIDQuMTU3MDMgMTIuOTQwNCAzLjk5OTk3IDEyIDMuOTk5OTdDOS43NjY2NCAzLjk5OTk3IDcuODc0OTggNC43NzQ5OCA2LjMyNDk4IDYuMzI0OThDNC43NzQ5OCA3Ljg3NDk4IDMuOTk5OTggOS43NjY2NCAzLjk5OTk4IDEyQzMuOTk5OTggMTIuOTM4MiA0LjE1ODYzIDEzLjg0MTcgNC40NzU5NSAxNC43MTA0QzQuNzkzMjUgMTUuNTc5MSA1LjI1MjU0IDE2LjM3MzEgNS44NTM4MyAxNy4wOTIzWlwiIGZpbGw9XCIjNDI0NTRCXCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDcwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDcwKVwiPlxuPHBhdGggZD1cIk0zIDE0LjVDMi44NjY2NyAxNC41IDIuNzUgMTQuNDUgMi42NSAxNC4zNUMyLjU1IDE0LjI1IDIuNSAxNC4xMzMzIDIuNSAxNEMyLjUgMTMuODY2NyAyLjU1IDEzLjc1IDIuNjUgMTMuNjVDMi43NSAxMy41NSAyLjg2NjY3IDEzLjUgMyAxMy41QzMuMTMzMzMgMTMuNSAzLjI1IDEzLjU1IDMuMzUgMTMuNjVDMy40NSAxMy43NSAzLjUgMTMuODY2NyAzLjUgMTRDMy41IDE0LjEzMzMgMy40NSAxNC4yNSAzLjM1IDE0LjM1QzMuMjUgMTQuNDUgMy4xMzMzMyAxNC41IDMgMTQuNVpNMyAxMC41QzIuODY2NjcgMTAuNSAyLjc1IDEwLjQ1IDIuNjUgMTAuMzVDMi41NSAxMC4yNSAyLjUgMTAuMTMzMyAyLjUgMTBDMi41IDkuODY2NjcgMi41NSA5Ljc1IDIuNjUgOS42NUMyLjc1IDkuNTUgMi44NjY2NyA5LjUgMyA5LjVDMy4xMzMzMyA5LjUgMy4yNSA5LjU1IDMuMzUgOS42NUMzLjQ1IDkuNzUgMy41IDkuODY2NjcgMy41IDEwQzMuNSAxMC4xMzMzIDMuNDUgMTAuMjUgMy4zNSAxMC4zNUMzLjI1IDEwLjQ1IDMuMTMzMzMgMTAuNSAzIDEwLjVaTTYgMTguOTIzMUM1LjczODQ3IDE4LjkyMzEgNS41MTkyMyAxOC44MzQ2IDUuMzQyMyAxOC42NTc3QzUuMTY1MzggMTguNDgwOCA1LjA3NjkzIDE4LjI2MTUgNS4wNzY5MyAxOEM1LjA3NjkzIDE3LjczODUgNS4xNjUzOCAxNy41MTkyIDUuMzQyMyAxNy4zNDIzQzUuNTE5MjMgMTcuMTY1NCA1LjczODQ3IDE3LjA3NjkgNiAxNy4wNzY5QzYuMjYxNTMgMTcuMDc2OSA2LjQ4MDc3IDE3LjE2NTQgNi42NTc3IDE3LjM0MjNDNi44MzQ2MiAxNy41MTkyIDYuOTIzMDggMTcuNzM4NSA2LjkyMzA4IDE4QzYuOTIzMDggMTguMjYxNSA2LjgzNDYyIDE4LjQ4MDggNi42NTc3IDE4LjY1NzdDNi40ODA3NyAxOC44MzQ2IDYuMjYxNTMgMTguOTIzMSA2IDE4LjkyMzFaTTYgMTQuOTIzMUM1LjczODQ3IDE0LjkyMzEgNS41MTkyMyAxNC44MzQ2IDUuMzQyMyAxNC42NTc3QzUuMTY1MzggMTQuNDgwOCA1LjA3NjkzIDE0LjI2MTUgNS4wNzY5MyAxNEM1LjA3NjkzIDEzLjczODUgNS4xNjUzOCAxMy41MTkyIDUuMzQyMyAxMy4zNDIzQzUuNTE5MjMgMTMuMTY1NCA1LjczODQ3IDEzLjA3NjkgNiAxMy4wNzY5QzYuMjYxNTMgMTMuMDc2OSA2LjQ4MDc3IDEzLjE2NTQgNi42NTc3IDEzLjM0MjNDNi44MzQ2MiAxMy41MTkyIDYuOTIzMDggMTMuNzM4NSA2LjkyMzA4IDE0QzYuOTIzMDggMTQuMjYxNSA2LjgzNDYyIDE0LjQ4MDggNi42NTc3IDE0LjY1NzdDNi40ODA3NyAxNC44MzQ2IDYuMjYxNTMgMTQuOTIzMSA2IDE0LjkyMzFaTTYgMTAuOTIzMUM1LjczODQ3IDEwLjkyMzEgNS41MTkyMyAxMC44MzQ2IDUuMzQyMyAxMC42NTc3QzUuMTY1MzggMTAuNDgwOCA1LjA3NjkzIDEwLjI2MTUgNS4wNzY5MyAxMEM1LjA3NjkzIDkuNzM4NDcgNS4xNjUzOCA5LjUxOTI0IDUuMzQyMyA5LjM0MjMyQzUuNTE5MjMgOS4xNjUzOSA1LjczODQ3IDkuMDc2OTIgNiA5LjA3NjkyQzYuMjYxNTMgOS4wNzY5MiA2LjQ4MDc3IDkuMTY1MzkgNi42NTc3IDkuMzQyMzJDNi44MzQ2MiA5LjUxOTI0IDYuOTIzMDggOS43Mzg0NyA2LjkyMzA4IDEwQzYuOTIzMDggMTAuMjYxNSA2LjgzNDYyIDEwLjQ4MDggNi42NTc3IDEwLjY1NzdDNi40ODA3NyAxMC44MzQ2IDYuMjYxNTMgMTAuOTIzMSA2IDEwLjkyMzFaTTYgNi45MjMwOEM1LjczODQ3IDYuOTIzMDggNS41MTkyMyA2LjgzNDYxIDUuMzQyMyA2LjY1NzY4QzUuMTY1MzggNi40ODA3NiA1LjA3NjkzIDYuMjYxNTMgNS4wNzY5MyA2QzUuMDc2OTMgNS43Mzg0NyA1LjE2NTM4IDUuNTE5MjQgNS4zNDIzIDUuMzQyMzJDNS41MTkyMyA1LjE2NTM5IDUuNzM4NDcgNS4wNzY5MyA2IDUuMDc2OTNDNi4yNjE1MyA1LjA3NjkzIDYuNDgwNzcgNS4xNjUzOSA2LjY1NzcgNS4zNDIzMkM2LjgzNDYyIDUuNTE5MjQgNi45MjMwOCA1LjczODQ3IDYuOTIzMDggNkM2LjkyMzA4IDYuMjYxNTMgNi44MzQ2MiA2LjQ4MDc2IDYuNjU3NyA2LjY1NzY4QzYuNDgwNzcgNi44MzQ2MSA2LjI2MTUzIDYuOTIzMDggNiA2LjkyMzA4Wk0xMC4wMDIzIDE1LjM0NjJDOS42Mjg5NyAxNS4zNDYyIDkuMzEwOTEgMTUuMjE1NSA5LjA0ODA4IDE0Ljk1NDJDOC43ODUyNiAxNC42OTI5IDguNjUzODUgMTQuMzc1NiA4LjY1Mzg1IDE0LjAwMjNDOC42NTM4NSAxMy42MjkgOC43ODQ1MSAxMy4zMTA5IDkuMDQ1ODMgMTMuMDQ4MUM5LjMwNzE0IDEyLjc4NTMgOS42MjQ0NCAxMi42NTM4IDkuOTk3NzMgMTIuNjUzOEMxMC4zNzEgMTIuNjUzOCAxMC42ODkxIDEyLjc4NDUgMTAuOTUxOSAxMy4wNDU4QzExLjIxNDcgMTMuMzA3MSAxMS4zNDYyIDEzLjYyNDQgMTEuMzQ2MiAxMy45OTc3QzExLjM0NjIgMTQuMzcxIDExLjIxNTUgMTQuNjg5MSAxMC45NTQyIDE0Ljk1MTlDMTAuNjkyOSAxNS4yMTQ3IDEwLjM3NTYgMTUuMzQ2MiAxMC4wMDIzIDE1LjM0NjJaTTEwLjAwMjMgMTEuMzQ2MkM5LjYyODk3IDExLjM0NjIgOS4zMTA5MSAxMS4yMTU1IDkuMDQ4MDggMTAuOTU0MkM4Ljc4NTI2IDEwLjY5MjkgOC42NTM4NSAxMC4zNzU2IDguNjUzODUgMTAuMDAyM0M4LjY1Mzg1IDkuNjI4OTcgOC43ODQ1MSA5LjMxMDkxIDkuMDQ1ODMgOS4wNDgwOEM5LjMwNzE0IDguNzg1MjYgOS42MjQ0NCA4LjY1Mzg1IDkuOTk3NzMgOC42NTM4NUMxMC4zNzEgOC42NTM4NSAxMC42ODkxIDguNzg0NTEgMTAuOTUxOSA5LjA0NTgzQzExLjIxNDcgOS4zMDcxMyAxMS4zNDYyIDkuNjI0NDIgMTEuMzQ2MiA5Ljk5NzczQzExLjM0NjIgMTAuMzcxIDExLjIxNTUgMTAuNjg5MSAxMC45NTQyIDEwLjk1MTlDMTAuNjkyOSAxMS4yMTQ3IDEwLjM3NTYgMTEuMzQ2MiAxMC4wMDIzIDExLjM0NjJaTTEwIDE4LjkyMzFDOS43Mzg0NyAxOC45MjMxIDkuNTE5MjMgMTguODM0NiA5LjM0MjMgMTguNjU3N0M5LjE2NTM4IDE4LjQ4MDggOS4wNzY5MiAxOC4yNjE1IDkuMDc2OTIgMThDOS4wNzY5MiAxNy43Mzg1IDkuMTY1MzggMTcuNTE5MiA5LjM0MjMgMTcuMzQyM0M5LjUxOTIzIDE3LjE2NTQgOS43Mzg0NyAxNy4wNzY5IDEwIDE3LjA3NjlDMTAuMjYxNSAxNy4wNzY5IDEwLjQ4MDggMTcuMTY1NCAxMC42NTc3IDE3LjM0MjNDMTAuODM0NiAxNy41MTkyIDEwLjkyMzEgMTcuNzM4NSAxMC45MjMxIDE4QzEwLjkyMzEgMTguMjYxNSAxMC44MzQ2IDE4LjQ4MDggMTAuNjU3NyAxOC42NTc3QzEwLjQ4MDggMTguODM0NiAxMC4yNjE1IDE4LjkyMzEgMTAgMTguOTIzMVpNMTAgNi45MjMwOEM5LjczODQ3IDYuOTIzMDggOS41MTkyMyA2LjgzNDYxIDkuMzQyMyA2LjY1NzY4QzkuMTY1MzggNi40ODA3NiA5LjA3NjkyIDYuMjYxNTMgOS4wNzY5MiA2QzkuMDc2OTIgNS43Mzg0NyA5LjE2NTM4IDUuNTE5MjQgOS4zNDIzIDUuMzQyMzJDOS41MTkyMyA1LjE2NTM5IDkuNzM4NDcgNS4wNzY5MyAxMCA1LjA3NjkzQzEwLjI2MTUgNS4wNzY5MyAxMC40ODA4IDUuMTY1MzkgMTAuNjU3NyA1LjM0MjMyQzEwLjgzNDYgNS41MTkyNCAxMC45MjMxIDUuNzM4NDcgMTAuOTIzMSA2QzEwLjkyMzEgNi4yNjE1MyAxMC44MzQ2IDYuNDgwNzYgMTAuNjU3NyA2LjY1NzY4QzEwLjQ4MDggNi44MzQ2MSAxMC4yNjE1IDYuOTIzMDggMTAgNi45MjMwOFpNMTAgMjEuNUM5Ljg2NjY3IDIxLjUgOS43NSAyMS40NSA5LjY1IDIxLjM1QzkuNTUgMjEuMjUgOS41IDIxLjEzMzMgOS41IDIxQzkuNSAyMC44NjY3IDkuNTUgMjAuNzUgOS42NSAyMC42NUM5Ljc1IDIwLjU1IDkuODY2NjcgMjAuNSAxMCAyMC41QzEwLjEzMzMgMjAuNSAxMC4yNSAyMC41NSAxMC4zNSAyMC42NUMxMC40NSAyMC43NSAxMC41IDIwLjg2NjcgMTAuNSAyMUMxMC41IDIxLjEzMzMgMTAuNDUgMjEuMjUgMTAuMzUgMjEuMzVDMTAuMjUgMjEuNDUgMTAuMTMzMyAyMS41IDEwIDIxLjVaTTEwIDMuNUM5Ljg2NjY3IDMuNSA5Ljc1IDMuNDUgOS42NSAzLjM1QzkuNTUgMy4yNSA5LjUgMy4xMzMzMyA5LjUgM0M5LjUgMi44NjY2NyA5LjU1IDIuNzUgOS42NSAyLjY1QzkuNzUgMi41NSA5Ljg2NjY3IDIuNSAxMCAyLjVDMTAuMTMzMyAyLjUgMTAuMjUgMi41NSAxMC4zNSAyLjY1QzEwLjQ1IDIuNzUgMTAuNSAyLjg2NjY3IDEwLjUgM0MxMC41IDMuMTMzMzMgMTAuNDUgMy4yNSAxMC4zNSAzLjM1QzEwLjI1IDMuNDUgMTAuMTMzMyAzLjUgMTAgMy41Wk0xNC4wMDIzIDE1LjM0NjJDMTMuNjI5IDE1LjM0NjIgMTMuMzEwOSAxNS4yMTU1IDEzLjA0ODEgMTQuOTU0MkMxMi43ODUzIDE0LjY5MjkgMTIuNjUzOCAxNC4zNzU2IDEyLjY1MzggMTQuMDAyM0MxMi42NTM4IDEzLjYyOSAxMi43ODQ1IDEzLjMxMDkgMTMuMDQ1OCAxMy4wNDgxQzEzLjMwNzEgMTIuNzg1MyAxMy42MjQ0IDEyLjY1MzggMTMuOTk3NyAxMi42NTM4QzE0LjM3MSAxMi42NTM4IDE0LjY4OTEgMTIuNzg0NSAxNC45NTE5IDEzLjA0NThDMTUuMjE0NyAxMy4zMDcxIDE1LjM0NjIgMTMuNjI0NCAxNS4zNDYyIDEzLjk5NzdDMTUuMzQ2MiAxNC4zNzEgMTUuMjE1NSAxNC42ODkxIDE0Ljk1NDIgMTQuOTUxOUMxNC42OTI5IDE1LjIxNDcgMTQuMzc1NiAxNS4zNDYyIDE0LjAwMjMgMTUuMzQ2MlpNMTQuMDAyMyAxMS4zNDYyQzEzLjYyOSAxMS4zNDYyIDEzLjMxMDkgMTEuMjE1NSAxMy4wNDgxIDEwLjk1NDJDMTIuNzg1MyAxMC42OTI5IDEyLjY1MzggMTAuMzc1NiAxMi42NTM4IDEwLjAwMjNDMTIuNjUzOCA5LjYyODk3IDEyLjc4NDUgOS4zMTA5MSAxMy4wNDU4IDkuMDQ4MDhDMTMuMzA3MSA4Ljc4NTI2IDEzLjYyNDQgOC42NTM4NSAxMy45OTc3IDguNjUzODVDMTQuMzcxIDguNjUzODUgMTQuNjg5MSA4Ljc4NDUxIDE0Ljk1MTkgOS4wNDU4M0MxNS4yMTQ3IDkuMzA3MTMgMTUuMzQ2MiA5LjYyNDQyIDE1LjM0NjIgOS45OTc3M0MxNS4zNDYyIDEwLjM3MSAxNS4yMTU1IDEwLjY4OTEgMTQuOTU0MiAxMC45NTE5QzE0LjY5MjkgMTEuMjE0NyAxNC4zNzU2IDExLjM0NjIgMTQuMDAyMyAxMS4zNDYyWk0xNCAxOC45MjMxQzEzLjczODUgMTguOTIzMSAxMy41MTkyIDE4LjgzNDYgMTMuMzQyMyAxOC42NTc3QzEzLjE2NTQgMTguNDgwOCAxMy4wNzY5IDE4LjI2MTUgMTMuMDc2OSAxOEMxMy4wNzY5IDE3LjczODUgMTMuMTY1NCAxNy41MTkyIDEzLjM0MjMgMTcuMzQyM0MxMy41MTkyIDE3LjE2NTQgMTMuNzM4NSAxNy4wNzY5IDE0IDE3LjA3NjlDMTQuMjYxNSAxNy4wNzY5IDE0LjQ4MDggMTcuMTY1NCAxNC42NTc3IDE3LjM0MjNDMTQuODM0NiAxNy41MTkyIDE0LjkyMzEgMTcuNzM4NSAxNC45MjMxIDE4QzE0LjkyMzEgMTguMjYxNSAxNC44MzQ2IDE4LjQ4MDggMTQuNjU3NyAxOC42NTc3QzE0LjQ4MDggMTguODM0NiAxNC4yNjE1IDE4LjkyMzEgMTQgMTguOTIzMVpNMTQgNi45MjMwOEMxMy43Mzg1IDYuOTIzMDggMTMuNTE5MiA2LjgzNDYxIDEzLjM0MjMgNi42NTc2OEMxMy4xNjU0IDYuNDgwNzYgMTMuMDc2OSA2LjI2MTUzIDEzLjA3NjkgNkMxMy4wNzY5IDUuNzM4NDcgMTMuMTY1NCA1LjUxOTI0IDEzLjM0MjMgNS4zNDIzMkMxMy41MTkyIDUuMTY1MzkgMTMuNzM4NSA1LjA3NjkzIDE0IDUuMDc2OTNDMTQuMjYxNSA1LjA3NjkzIDE0LjQ4MDggNS4xNjUzOSAxNC42NTc3IDUuMzQyMzJDMTQuODM0NiA1LjUxOTI0IDE0LjkyMzEgNS43Mzg0NyAxNC45MjMxIDZDMTQuOTIzMSA2LjI2MTUzIDE0LjgzNDYgNi40ODA3NiAxNC42NTc3IDYuNjU3NjhDMTQuNDgwOCA2LjgzNDYxIDE0LjI2MTUgNi45MjMwOCAxNCA2LjkyMzA4Wk0xNCAyMS41QzEzLjg2NjcgMjEuNSAxMy43NSAyMS40NSAxMy42NSAyMS4zNUMxMy41NSAyMS4yNSAxMy41IDIxLjEzMzMgMTMuNSAyMUMxMy41IDIwLjg2NjcgMTMuNTUgMjAuNzUgMTMuNjUgMjAuNjVDMTMuNzUgMjAuNTUgMTMuODY2NyAyMC41IDE0IDIwLjVDMTQuMTMzMyAyMC41IDE0LjI1IDIwLjU1IDE0LjM1IDIwLjY1QzE0LjQ1IDIwLjc1IDE0LjUgMjAuODY2NyAxNC41IDIxQzE0LjUgMjEuMTMzMyAxNC40NSAyMS4yNSAxNC4zNSAyMS4zNUMxNC4yNSAyMS40NSAxNC4xMzMzIDIxLjUgMTQgMjEuNVpNMTQgMy41QzEzLjg2NjcgMy41IDEzLjc1IDMuNDUgMTMuNjUgMy4zNUMxMy41NSAzLjI1IDEzLjUgMy4xMzMzMyAxMy41IDNDMTMuNSAyLjg2NjY3IDEzLjU1IDIuNzUgMTMuNjUgMi42NUMxMy43NSAyLjU1IDEzLjg2NjcgMi41IDE0IDIuNUMxNC4xMzMzIDIuNSAxNC4yNSAyLjU1IDE0LjM1IDIuNjVDMTQuNDUgMi43NSAxNC41IDIuODY2NjcgMTQuNSAzQzE0LjUgMy4xMzMzMyAxNC40NSAzLjI1IDE0LjM1IDMuMzVDMTQuMjUgMy40NSAxNC4xMzMzIDMuNSAxNCAzLjVaTTE4IDE4LjkyMzFDMTcuNzM4NSAxOC45MjMxIDE3LjUxOTIgMTguODM0NiAxNy4zNDIzIDE4LjY1NzdDMTcuMTY1NCAxOC40ODA4IDE3LjA3NjkgMTguMjYxNSAxNy4wNzY5IDE4QzE3LjA3NjkgMTcuNzM4NSAxNy4xNjU0IDE3LjUxOTIgMTcuMzQyMyAxNy4zNDIzQzE3LjUxOTIgMTcuMTY1NCAxNy43Mzg1IDE3LjA3NjkgMTggMTcuMDc2OUMxOC4yNjE1IDE3LjA3NjkgMTguNDgwOCAxNy4xNjU0IDE4LjY1NzcgMTcuMzQyM0MxOC44MzQ2IDE3LjUxOTIgMTguOTIzMSAxNy43Mzg1IDE4LjkyMzEgMThDMTguOTIzMSAxOC4yNjE1IDE4LjgzNDYgMTguNDgwOCAxOC42NTc3IDE4LjY1NzdDMTguNDgwOCAxOC44MzQ2IDE4LjI2MTUgMTguOTIzMSAxOCAxOC45MjMxWk0xOCAxNC45MjMxQzE3LjczODUgMTQuOTIzMSAxNy41MTkyIDE0LjgzNDYgMTcuMzQyMyAxNC42NTc3QzE3LjE2NTQgMTQuNDgwOCAxNy4wNzY5IDE0LjI2MTUgMTcuMDc2OSAxNEMxNy4wNzY5IDEzLjczODUgMTcuMTY1NCAxMy41MTkyIDE3LjM0MjMgMTMuMzQyM0MxNy41MTkyIDEzLjE2NTQgMTcuNzM4NSAxMy4wNzY5IDE4IDEzLjA3NjlDMTguMjYxNSAxMy4wNzY5IDE4LjQ4MDggMTMuMTY1NCAxOC42NTc3IDEzLjM0MjNDMTguODM0NiAxMy41MTkyIDE4LjkyMzEgMTMuNzM4NSAxOC45MjMxIDE0QzE4LjkyMzEgMTQuMjYxNSAxOC44MzQ2IDE0LjQ4MDggMTguNjU3NyAxNC42NTc3QzE4LjQ4MDggMTQuODM0NiAxOC4yNjE1IDE0LjkyMzEgMTggMTQuOTIzMVpNMTggMTAuOTIzMUMxNy43Mzg1IDEwLjkyMzEgMTcuNTE5MiAxMC44MzQ2IDE3LjM0MjMgMTAuNjU3N0MxNy4xNjU0IDEwLjQ4MDggMTcuMDc2OSAxMC4yNjE1IDE3LjA3NjkgMTBDMTcuMDc2OSA5LjczODQ3IDE3LjE2NTQgOS41MTkyNCAxNy4zNDIzIDkuMzQyMzJDMTcuNTE5MiA5LjE2NTM5IDE3LjczODUgOS4wNzY5MiAxOCA5LjA3NjkyQzE4LjI2MTUgOS4wNzY5MiAxOC40ODA4IDkuMTY1MzkgMTguNjU3NyA5LjM0MjMyQzE4LjgzNDYgOS41MTkyNCAxOC45MjMxIDkuNzM4NDcgMTguOTIzMSAxMEMxOC45MjMxIDEwLjI2MTUgMTguODM0NiAxMC40ODA4IDE4LjY1NzcgMTAuNjU3N0MxOC40ODA4IDEwLjgzNDYgMTguMjYxNSAxMC45MjMxIDE4IDEwLjkyMzFaTTE4IDYuOTIzMDhDMTcuNzM4NSA2LjkyMzA4IDE3LjUxOTIgNi44MzQ2MSAxNy4zNDIzIDYuNjU3NjhDMTcuMTY1NCA2LjQ4MDc2IDE3LjA3NjkgNi4yNjE1MyAxNy4wNzY5IDZDMTcuMDc2OSA1LjczODQ3IDE3LjE2NTQgNS41MTkyNCAxNy4zNDIzIDUuMzQyMzJDMTcuNTE5MiA1LjE2NTM5IDE3LjczODUgNS4wNzY5MyAxOCA1LjA3NjkzQzE4LjI2MTUgNS4wNzY5MyAxOC40ODA4IDUuMTY1MzkgMTguNjU3NyA1LjM0MjMyQzE4LjgzNDYgNS41MTkyNCAxOC45MjMxIDUuNzM4NDcgMTguOTIzMSA2QzE4LjkyMzEgNi4yNjE1MyAxOC44MzQ2IDYuNDgwNzYgMTguNjU3NyA2LjY1NzY4QzE4LjQ4MDggNi44MzQ2MSAxOC4yNjE1IDYuOTIzMDggMTggNi45MjMwOFpNMjEgMTQuNUMyMC44NjY3IDE0LjUgMjAuNzUgMTQuNDUgMjAuNjUgMTQuMzVDMjAuNTUgMTQuMjUgMjAuNSAxNC4xMzMzIDIwLjUgMTRDMjAuNSAxMy44NjY3IDIwLjU1IDEzLjc1IDIwLjY1IDEzLjY1QzIwLjc1IDEzLjU1IDIwLjg2NjcgMTMuNSAyMSAxMy41QzIxLjEzMzMgMTMuNSAyMS4yNSAxMy41NSAyMS4zNSAxMy42NUMyMS40NSAxMy43NSAyMS41IDEzLjg2NjcgMjEuNSAxNEMyMS41IDE0LjEzMzMgMjEuNDUgMTQuMjUgMjEuMzUgMTQuMzVDMjEuMjUgMTQuNDUgMjEuMTMzMyAxNC41IDIxIDE0LjVaTTIxIDEwLjVDMjAuODY2NyAxMC41IDIwLjc1IDEwLjQ1IDIwLjY1IDEwLjM1QzIwLjU1IDEwLjI1IDIwLjUgMTAuMTMzMyAyMC41IDEwQzIwLjUgOS44NjY2NyAyMC41NSA5Ljc1IDIwLjY1IDkuNjVDMjAuNzUgOS41NSAyMC44NjY3IDkuNSAyMSA5LjVDMjEuMTMzMyA5LjUgMjEuMjUgOS41NSAyMS4zNSA5LjY1QzIxLjQ1IDkuNzUgMjEuNSA5Ljg2NjY3IDIxLjUgMTBDMjEuNSAxMC4xMzMzIDIxLjQ1IDEwLjI1IDIxLjM1IDEwLjM1QzIxLjI1IDEwLjQ1IDIxLjEzMzMgMTAuNSAyMSAxMC41WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDkxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDkxKVwiPlxuPHBhdGggZD1cIk0xMi4wNSAxOS43NUM5Ljg4NzE5IDE5Ljc1IDguMDQ2NDkgMTguOTk3NCA2LjUyNzkxIDE3LjQ5MjNDNS4wMDkzMyAxNS45ODcxIDQuMjUwMDQgMTQuMTU2NCA0LjI1MDA0IDEyVjExLjIxOTJMMi45MjY5MSAxMi41NDIzQzIuNzg4NDYgMTIuNjgwNyAyLjYxNDQzIDEyLjc1MTYgMi40MDQ4MSAxMi43NTQ4QzIuMTk1MjEgMTIuNzU4IDIuMDE3OTggMTIuNjg3MSAxLjg3MzExIDEyLjU0MjNDMS43MjgyMSAxMi4zOTc0IDEuNjU1NzYgMTIuMjIxOCAxLjY1NTc2IDEyLjAxNTNDMS42NTU3NiAxMS44MDg5IDEuNzI4MiAxMS42MzMzIDEuODczMDkgMTEuNDg4NUw0LjM2NzMxIDguOTk0MjJDNC41NDgwOCA4LjgxMzQ2IDQuNzU4OTcgOC43MjMwOCA0Ljk5OTk5IDguNzIzMDhDNS4yNDEgOC43MjMwOCA1LjQ1MTg5IDguODEzNDYgNS42MzI2NiA4Ljk5NDIyTDguMTI2ODkgMTEuNDg4NUM4LjI2NTM1IDExLjYyNjkgOC4zMzYxOSAxMS44MDA5IDguMzM5MzkgMTIuMDEwNUM4LjM0MjYgMTIuMjIwMiA4LjI3MTc3IDEyLjM5NzQgOC4xMjY4OSAxMi41NDIzQzcuOTgyMDIgMTIuNjg3MSA3LjgwNjM5IDEyLjc1OTYgNy41OTk5OSAxMi43NTk2QzcuMzkzNTkgMTIuNzU5NiA3LjIxNzk1IDEyLjY4NzEgNy4wNzMwOSAxMi41NDIzTDUuNzQ5OTYgMTEuMjE5MlYxMkM1Ljc0OTk2IDEzLjczNzIgNi4zNjE1IDE1LjIxMzEgNy41ODQ1OSAxNi40Mjc5QzguODA3NjkgMTcuNjQyNiAxMC4yOTYyIDE4LjI1IDEyLjA1IDE4LjI1QzEyLjM0MjMgMTguMjUgMTIuNjMzNyAxOC4yMzAxIDEyLjkyNDEgMTguMTkwNEMxMy4yMTQ0IDE4LjE1MDYgMTMuNTAwNyAxOC4wODI3IDEzLjc4MjcgMTcuOTg2NUMxMy45OTU1IDE3LjkyMjQgMTQuMTk2NSAxNy45MjkyIDE0LjM4NTYgMTguMDA2N0MxNC41NzQ3IDE4LjA4NDMgMTQuNzE2NyAxOC4yMTYgMTQuODExNSAxOC40MDE5QzE0LjkwNjQgMTguNTk4MSAxNC45MTI1IDE4Ljc5MzIgMTQuODI5OCAxOC45ODc1QzE0Ljc0NzEgMTkuMTgxNyAxNC41OTk0IDE5LjMxMDkgMTQuMzg2NSAxOS4zNzVDMTQuMDA5NiAxOS41MDgzIDEzLjYyNDQgMTkuNjA0MSAxMy4yMzA4IDE5LjY2MjVDMTIuODM3MiAxOS43MjA4IDEyLjQ0MzYgMTkuNzUgMTIuMDUgMTkuNzVaTTExLjk1IDUuNzQ5OTVDMTEuNjU3NyA1Ljc0OTk1IDExLjM2NjMgNS43Njk4MiAxMS4wNzYgNS44MDk1N0MxMC43ODU2IDUuODQ5MzIgMTAuNDk5NCA1LjkxNzI3IDEwLjIxNzMgNi4wMTM0MkMxMC4wMDQ1IDYuMDc3NTIgOS44MDA5NyA2LjA3MDc5IDkuNjA2NzQgNS45OTMyM0M5LjQxMjUyIDUuOTE1NjYgOS4yNjc5OCA1Ljc4MzkzIDkuMTczMTEgNS41OTgwNUM5LjA3ODIzIDUuNDEyMTUgOS4wNzA1NCA1LjIyMjA5IDkuMTUwMDQgNS4wMjc4N0M5LjIyOTUyIDQuODMzNjQgOS4zNzA1NCA0LjcwNDQ3IDkuNTczMDkgNC42NDAzN0M5Ljk2MDI3IDQuNTA3MDQgMTAuMzUyMyA0LjQwODY0IDEwLjc0OTEgNC4zNDUxOEMxMS4xNDU4IDQuMjgxNzMgMTEuNTQ2MiA0LjI1IDExLjk1IDQuMjVDMTQuMTEyOCA0LjI1IDE1Ljk1MzUgNS4wMDI1NiAxNy40NzIxIDYuNTA3NjhDMTguOTkwNyA4LjAxMjgxIDE5Ljc1IDkuODQzNTcgMTkuNzUgMTJWMTIuNzgwOEwyMS4wNzMxIDExLjQ1NzdDMjEuMjExNiAxMS4zMTkyIDIxLjM4NTYgMTEuMjQ4NCAyMS41OTUyIDExLjI0NTJDMjEuODA0OCAxMS4yNDIgMjEuOTgyIDExLjMxMjggMjIuMTI2OSAxMS40NTc3QzIyLjI3MTggMTEuNjAyNSAyMi4zNDQyIDExLjc3ODIgMjIuMzQ0MiAxMS45ODQ2QzIyLjM0NDIgMTIuMTkxIDIyLjI3MTggMTIuMzY2NiAyMi4xMjY5IDEyLjUxMTVMMTkuNjMyNyAxNS4wMDU3QzE5LjQ1MTkgMTUuMTg2NSAxOS4yNDEgMTUuMjc2OSAxOSAxNS4yNzY5QzE4Ljc1OSAxNS4yNzY5IDE4LjU0ODEgMTUuMTg2NSAxOC4zNjczIDE1LjAwNTdMMTUuODczMSAxMi41MTE1QzE1LjczNDYgMTIuMzczMSAxNS42NjM4IDEyLjE5OSAxNS42NjA2IDExLjk4OTRDMTUuNjU3NCAxMS43Nzk4IDE1LjcyODIgMTEuNjAyNSAxNS44NzMxIDExLjQ1NzdDMTYuMDE4IDExLjMxMjggMTYuMTkzNiAxMS4yNDA0IDE2LjQgMTEuMjQwNEMxNi42MDY0IDExLjI0MDQgMTYuNzgyIDExLjMxMjggMTYuOTI2OSAxMS40NTc3TDE4LjI1IDEyLjc4MDhWMTJDMTguMjUgMTAuMjYyOCAxNy42Mzg1IDguNzg2ODMgMTYuNDE1NCA3LjU3MjA3QzE1LjE5MjMgNi4zNTczMiAxMy43MDM5IDUuNzQ5OTUgMTEuOTUgNS43NDk5NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIm0xMC41OCAxNC4xNDYtMi4zMjItMi4zMjNhLjcyNC43MjQgMCAwIDAtLjUyMi0uMjEyLjcwNy43MDcgMCAwIDAtLjUzMi4yMTIuNzE3LjcxNyAwIDAgMC0uMjE3LjUyN2MwIC4yMDYuMDcyLjM4Mi4yMTcuNTI3bDIuNzQ0IDIuNzQ0YS44Ny44NyAwIDAgMCAuNjMzLjI3MWMuMjQgMCAuNDUyLS4wOS42MzItLjI3bDUuNTY0LTUuNTY0YS43MjUuNzI1IDAgMCAwIC4yMTItLjUyMi43MDcuNzA3IDAgMCAwLS4yMTItLjUzMi43MTguNzE4IDAgMCAwLS41MjctLjIxNy43MTcuNzE3IDAgMCAwLS41MjcuMjE3bC01LjE0MiA1LjE0MlptMS40MjIgNy4zNTRhOS4yNTUgOS4yNTUgMCAwIDEtMy43MDUtLjc0OCA5LjU5OCA5LjU5OCAwIDAgMS0zLjAxOC0yLjAzIDkuNTkxIDkuNTkxIDAgMCAxLTIuMDMtMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEtLjc0OS0zLjcwNGMwLTEuMzE0LjI1LTIuNTUuNzQ4LTMuNzA1YTkuNTk3IDkuNTk3IDAgMCAxIDIuMDMtMy4wMTggOS41OTIgOS41OTIgMCAwIDEgMy4wMTYtMi4wMyA5LjI0NSA5LjI0NSAwIDAgMSAzLjcwNC0uNzQ5YzEuMzE0IDAgMi41NS4yNSAzLjcwNS43NDhhOS41OTcgOS41OTcgMCAwIDEgMy4wMTggMi4wMyA5LjU5MiA5LjU5MiAwIDAgMSAyLjAzIDMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxIC43NDkgMy43MDRjMCAxLjMxNC0uMjUgMi41NS0uNzQ4IDMuNzA1YTkuNTk4IDkuNTk4IDAgMCAxLTIuMDMgMy4wMTggOS41OTIgOS41OTIgMCAwIDEtMy4wMTYgMi4wMyA5LjI0NSA5LjI0NSAwIDAgMS0zLjcwNC43NDlaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTcuMzA4IDIwLjVjLS41MDUgMC0uOTMzLS4xNzUtMS4yODMtLjUyNWExLjc0NSAxLjc0NSAwIDAgMS0uNTI1LTEuMjgzVjZoLS4yNWEuNzI2LjcyNiAwIDAgMS0uNTM1LS4yMTUuNzI2LjcyNiAwIDAgMS0uMjE1LS41MzUuNzMuNzMgMCAwIDEgLjIxNS0uNTM1LjcyNi43MjYgMCAwIDEgLjUzNS0uMjE1SDlhLjg0Ljg0IDAgMCAxIC4yNjMtLjYzLjg4OS44ODkgMCAwIDEgLjY0LS4yNTVoNC4xOTNjLjI1MSAwIC40NjUuMDg1LjY0LjI1NEEuODQuODQgMCAwIDEgMTUgNC41aDMuNzVhLjczLjczIDAgMCAxIC41MzUuMjE1LjcyNi43MjYgMCAwIDEgLjIxNS41MzUuNzI2LjcyNiAwIDAgMS0uMjE1LjUzNS43MjYuNzI2IDAgMCAxLS41MzUuMjE1aC0uMjV2MTIuNjkyYzAgLjUwNi0uMTc1LjkzMy0uNTI1IDEuMjgzLS4zNS4zNS0uNzc4LjUyNS0xLjI4My41MjVINy4zMDhaTTcgNnYxMi42OTJhLjMuMyAwIDAgMCAuMDg3LjIyMS4zLjMgMCAwIDAgLjIyLjA4N2g5LjM4NWEuMy4zIDAgMCAwIC4yMjEtLjA4Ny4zLjMgMCAwIDAgLjA4Ny0uMjJWNkg3Wm0yLjQwNCAxMC4yNWEuNzMuNzMgMCAwIDAgLjIxNS41MzUuNzI2LjcyNiAwIDAgMCAuNTM1LjIxNS43MjYuNzI2IDAgMCAwIC41MzQtLjIxNS43MjYuNzI2IDAgMCAwIC4yMTYtLjUzNXYtNy41YS43MjYuNzI2IDAgMCAwLS4yMTYtLjUzNS43MjYuNzI2IDAgMCAwLS41MzQtLjIxNS43MjYuNzI2IDAgMCAwLS41MzUuMjE1LjcyNi43MjYgMCAwIDAtLjIxNS41MzV2Ny41Wm0zLjY5MiAwYzAgLjIxMy4wNzIuMzkxLjIxNi41MzVhLjcyNi43MjYgMCAwIDAgLjUzNC4yMTUuNzI2LjcyNiAwIDAgMCAuNTM1LS4yMTUuNzI2LjcyNiAwIDAgMCAuMjE1LS41MzV2LTcuNWEuNzI2LjcyNiAwIDAgMC0uMjE1LS41MzUuNzI2LjcyNiAwIDAgMC0uNTM1LS4yMTUuNzI2LjcyNiAwIDAgMC0uNTM0LjIxNS43MjYuNzI2IDAgMCAwLS4yMTYuNTM1djcuNVpNNyA2djEyLjY5MmEuMy4zIDAgMCAwIC4wODcuMjIxLjMuMyAwIDAgMCAuMjIuMDg3SDdWNlpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTYuNzVhLjcyNi43MjYgMCAwIDAgLjUzNS0uMjE2LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM0di00LjI1YS43MjYuNzI2IDAgMCAwLS4yMTYtLjUzNEEuNzI3LjcyNyAwIDAgMCAxMiAxMWEuNzI1LjcyNSAwIDAgMC0uNTM1LjIxNi43MjYuNzI2IDAgMCAwLS4yMTUuNTM0VjE2YzAgLjIxMi4wNzIuMzkuMjE2LjUzNGEuNzI2LjcyNiAwIDAgMCAuNTM0LjIxNlptMC03LjQ2MmEuNzguNzggMCAwIDAgLjU3NS0uMjMyLjc4MS43ODEgMCAwIDAgLjIzMy0uNTc1Ljc4Mi43ODIgMCAwIDAtLjIzMi0uNTc2Ljc4Mi43ODIgMCAwIDAtLjU3Ni0uMjMyLjc4MS43ODEgMCAwIDAtLjU3NS4yMzIuNzgyLjc4MiAwIDAgMC0uMjMzLjU3NmMwIC4yMjkuMDc4LjQyLjIzMi41NzVhLjc4MS43ODEgMCAwIDAgLjU3Ni4yMzJabS4wMDIgMTIuMjEyYTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5Wk0xMiAyMGMyLjIzMyAwIDQuMTI1LS43NzUgNS42NzUtMi4zMjVDMTkuMjI1IDE2LjEyNSAyMCAxNC4yMzMgMjAgMTJjMC0yLjIzMy0uNzc1LTQuMTI1LTIuMzI1LTUuNjc1QzE2LjEyNSA0Ljc3NSAxNC4yMzMgNCAxMiA0Yy0yLjIzMyAwLTQuMTI1Ljc3NS01LjY3NSAyLjMyNUM0Ljc3NSA3Ljg3NSA0IDkuNzY3IDQgMTJjMCAyLjIzMy43NzUgNC4xMjUgMi4zMjUgNS42NzVDNy44NzUgMTkuMjI1IDkuNzY3IDIwIDEyIDIwWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0xMiAxN2EuOTcuOTcgMCAwIDAgLjcxMy0uMjg4QS45NjguOTY4IDAgMCAwIDEzIDE2di00YS45NjguOTY4IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiAxMWEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMSAxMnY0YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLThjLjI4MyAwIC41Mi0uMDk2LjcxMy0uMjg3QS45NjcuOTY3IDAgMCAwIDEzIDhhLjk2Ny45NjcgMCAwIDAtLjI4Ny0uNzEzQS45NjguOTY4IDAgMCAwIDEyIDdhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2Ny45NjcgMCAwIDAgMTEgOGMwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1ptMCAxM2E5LjczOCA5LjczOCAwIDAgMS0zLjktLjc4OCAxMC4wOTkgMTAuMDk5IDAgMCAxLTMuMTc1LTIuMTM3Yy0uOS0uOS0xLjYxMi0xLjk1OC0yLjEzNy0zLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyIDEyYTkuNzQgOS43NCAwIDAgMSAuNzg4LTMuOSAxMC4wOTkgMTAuMDk5IDAgMCAxIDIuMTM3LTMuMTc1Yy45LS45IDEuOTU4LTEuNjEyIDMuMTc1LTIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDJhOS43NCA5Ljc0IDAgMCAxIDMuOS43ODggMTAuMDk4IDEwLjA5OCAwIDAgMSAzLjE3NSAyLjEzN2MuOS45IDEuNjEzIDEuOTU4IDIuMTM3IDMuMTc1QTkuNzM4IDkuNzM4IDAgMCAxIDIyIDEyYTkuNzM4IDkuNzM4IDAgMCAxLS43ODggMy45IDEwLjA5OCAxMC4wOTggMCAwIDEtMi4xMzcgMy4xNzVjLS45LjktMS45NTggMS42MTMtMy4xNzUgMi4xMzdBOS43MzggOS43MzggMCAwIDEgMTIgMjJaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTEyIDE0LjY3N2EuOTMuOTMgMCAwIDEtLjM0LS4wNjYuODQuODQgMCAwIDEtLjI5My0uMTlMNi44NzMgOS45MjdhLjcxNy43MTcgMCAwIDEtLjIxNy0uNTI3YzAtLjIwNi4wNzItLjM4Mi4yMTctLjUyN2EuNzE3LjcxNyAwIDAgMSAuNTI3LS4yMTdjLjIwNiAwIC4zODIuMDcyLjUyNy4yMTdMMTIgMTIuOTQ2bDQuMDczLTQuMDczYS43MTcuNzE3IDAgMCAxIC41MjctLjIxN2MuMjA2IDAgLjM4Mi4wNzIuNTI3LjIxNy4xNDUuMTQ1LjIxNy4zMi4yMTcuNTI3YS43MTcuNzE3IDAgMCAxLS4yMTcuNTI3bC00LjQ5NCA0LjQ5NGEuODMuODMgMCAwIDEtLjYzMy4yNTZaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDY0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDY0KVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1NzZDOS43MzgzIDE3LjI4MzMgOC40NTM2OCAxNi42NjczIDcuMzk1OTggMTUuNjA5NkM2LjMzODMgMTQuNTUxOSA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MTkgMTYuNjAzNiAxNS42MDk2QzE1LjU0NTkgMTYuNjY3MyAxNC4yNjEzIDE3LjI4MzMgMTIuNzQ5OCAxNy40NTc2VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDYxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDYxKVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1MzhDOS43MzgzIDE3LjI3NTYgOC40NTM2OCAxNi42NTkyIDcuMzk1OTggMTUuNjA0N0M2LjMzODMgMTQuNTUwMyA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MDMgMTYuNjAzNiAxNS42MDQ3QzE1LjU0NTkgMTYuNjU5MiAxNC4yNjEzIDE3LjI3NTYgMTIuNzQ5OCAxNy40NTM4VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1Wk0xMS45OTk4IDEyQzEyLjI4MzEgMTIgMTIuNTIwNiAxMS45MDQxIDEyLjcxMjMgMTEuNzEyNUMxMi45MDQgMTEuNTIwOCAxMi45OTk4IDExLjI4MzMgMTIuOTk5OCAxMVY0Ljk5OTk3QzEyLjk5OTggNC43MTY2NCAxMi45MDQgNC40NzkxNCAxMi43MTIzIDQuMjg3NDdDMTIuNTIwNiA0LjA5NTgxIDEyLjI4MzEgMy45OTk5NyAxMS45OTk4IDMuOTk5OTdDMTEuNzE2NSAzLjk5OTk3IDExLjQ3OSA0LjA5NTgxIDExLjI4NzMgNC4yODc0N0MxMS4wOTU2IDQuNDc5MTQgMTAuOTk5OCA0LjcxNjY0IDEwLjk5OTggNC45OTk5N1YxMUMxMC45OTk4IDExLjI4MzMgMTEuMDk1NiAxMS41MjA4IDExLjI4NzMgMTEuNzEyNUMxMS40NzkgMTEuOTA0MSAxMS43MTY1IDEyIDExLjk5OTggMTJaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNzNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNzMpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0wxMi42NDQyIDkuNTUzNzhWNC45OTk5N0MxMi42NDQyIDQuNzE2NjQgMTIuNTQ4NCA0LjQ3OTE0IDEyLjM1NjcgNC4yODc0N0MxMi4xNjUgNC4wOTU4MSAxMS45Mjc1IDMuOTk5OTcgMTEuNjQ0MiAzLjk5OTk3QzExLjM2MDkgMy45OTk5NyAxMS4xMjM0IDQuMDk1ODEgMTAuOTMxNyA0LjI4NzQ3QzEwLjc0IDQuNDc5MTQgMTAuNjQ0MiA0LjcxNjY0IDEwLjY0NDIgNC45OTk5N1Y3LjUzNDU1TDkuMTQ0MjQgNi4wMzQ1N1Y0Ljk5OTk3QzkuMTQ0MjQgNC4zMDEyOCA5LjM4NjIzIDMuNzA5OTMgOS44NzAxOSAzLjIyNTk1QzEwLjM1NDIgMi43NDE5OCAxMC45NDU1IDIuNSAxMS42NDQyIDIuNUMxMi4zNDI5IDIuNSAxMi45MzQzIDIuNzQxOTggMTMuNDE4MiAzLjIyNTk1QzEzLjkwMjIgMy43MDk5MyAxNC4xNDQyIDQuMzAxMjggMTQuMTQ0MiA0Ljk5OTk3VjEwLjM0NjFDMTQuMTQ0MiAxMC40NTg5IDE0LjEzMTMgMTAuNTYxNSAxNC4xMDU3IDEwLjY1MzhDMTQuMDgwMSAxMC43NDYxIDE0LjA1MTkgMTAuODM4NCAxNC4wMjExIDEwLjkzMDdaTTE5LjM0MDQgMjEuMTg4NEwyLjIwNTc3IDQuMDUzNzVDMi4wNjczMiAzLjkxNTMgMS45OTY0OCAzLjc0MTI3IDEuOTkzMjcgMy41MzE2NUMxLjk5MDA3IDMuMzIyMDUgMi4wNjA5IDMuMTQ0ODIgMi4yMDU3NyAyLjk5OTk1QzIuMzUwNjMgMi44NTUwNyAyLjUyNjI3IDIuNzgyNjIgMi43MzI2NyAyLjc4MjYyQzIuOTM5MDggMi43ODI2MiAzLjExNDczIDIuODU1MDcgMy4yNTk1OSAyLjk5OTk1TDIwLjM5NDIgMjAuMTM0NkMyMC41MzI3IDIwLjI3MyAyMC42MDM1IDIwLjQ0NzEgMjAuNjA2NyAyMC42NTY3QzIwLjYwOTkgMjAuODY2MyAyMC41MzkxIDIxLjA0MzUgMjAuMzk0MiAyMS4xODg0QzIwLjI0OTMgMjEuMzMzMyAyMC4wNzM3IDIxLjQwNTcgMTkuODY3MyAyMS40MDU3QzE5LjY2MDkgMjEuNDA1NyAxOS40ODUzIDIxLjMzMzMgMTkuMzQwNCAyMS4xODg0Wk0xMC44OTQyIDIwVjE3LjQ1MzhDOS4zODI2OCAxNy4yNzU2IDguMDk4MDcgMTYuNjU5MiA3LjA0MDM3IDE1LjYwNDdDNS45ODI2OCAxNC41NTAzIDUuMzY2MDMgMTMuMjgwNyA1LjE5MDM5IDExLjc5NjFDNS4xNTk2MyAxMS41ODMzIDUuMjE4NiAxMS4zOTc0IDUuMzY3MzIgMTEuMjM4NEM1LjUxNjAyIDExLjA3OTUgNS43MTIxNiAxMSA1Ljk1NTc0IDExQzYuMTMxMzkgMTEgNi4yODg0NCAxMS4wNjY2IDYuNDI2ODkgMTEuMkM2LjU2NTM2IDExLjMzMzMgNi42NTMxOCAxMS40OTYxIDYuNjkwMzQgMTEuNjg4NEM2Ljg1NTczIDEyLjkwNjQgNy40MDYzNyAxMy45Mjk1IDguMzQyMjcgMTQuNzU3N0M5LjI3ODE3IDE1LjU4NTkgMTAuMzc4OCAxNiAxMS42NDQyIDE2QzEyLjI4NzggMTYgMTIuODkyNiAxNS44ODUyIDEzLjQ1ODYgMTUuNjU1N0MxNC4wMjQ3IDE1LjQyNjIgMTQuNTI1NiAxNS4xMDgzIDE0Ljk2MTUgMTQuNzAxOUwxNi4wMzA3IDE1Ljc3MTFDMTUuNTQ3NCAxNi4yMjQ5IDE0Ljk5NzQgMTYuNjAxMiAxNC4zODA3IDE2LjlDMTMuNzY0MSAxNy4xOTg3IDEzLjEwMTkgMTcuMzgzMyAxMi4zOTQyIDE3LjQ1MzhWMjBDMTIuMzk0MiAyMC4yMTI4IDEyLjMyMjQgMjAuMzkxIDEyLjE3ODggMjAuNTM0NkMxMi4wMzUyIDIwLjY3ODIgMTEuODU3IDIwLjc1IDExLjY0NDIgMjAuNzVDMTEuNDMxNCAyMC43NSAxMS4yNTMyIDIwLjY3ODIgMTEuMTA5NiAyMC41MzQ2QzEwLjk2NiAyMC4zOTEgMTAuODk0MiAyMC4yMTI4IDEwLjg5NDIgMjBaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNjdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNjcpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0w5LjE0NDI0IDYuMDM0NTdWNC45OTk5N0M5LjE0NDI0IDQuMzAxMjggOS4zODYyMyAzLjcwOTkzIDkuODcwMTkgMy4yMjU5NUMxMC4zNTQyIDIuNzQxOTggMTAuOTQ1NSAyLjUgMTEuNjQ0MiAyLjVDMTIuMzQyOSAyLjUgMTIuOTM0MyAyLjc0MTk4IDEzLjQxODIgMy4yMjU5NUMxMy45MDIyIDMuNzA5OTMgMTQuMTQ0MiA0LjMwMTI4IDE0LjE0NDIgNC45OTk5N1YxMC4zNDYxQzE0LjE0NDIgMTAuNDU4OSAxNC4xMzEzIDEwLjU2MTUgMTQuMTA1NyAxMC42NTM4QzE0LjA4MDEgMTAuNzQ2MSAxNC4wNTE5IDEwLjgzODQgMTQuMDIxMSAxMC45MzA3Wk0xOS4zNDA0IDIxLjE4ODRMMi4yMDU3NyA0LjA1Mzc1QzIuMDY3MzIgMy45MTUzIDEuOTk2NDggMy43NDEyNyAxLjk5MzI3IDMuNTMxNjVDMS45OTAwNyAzLjMyMjA1IDIuMDYwOSAzLjE0NDgyIDIuMjA1NzcgMi45OTk5NUMyLjM1MDYzIDIuODU1MDcgMi41MjYyNyAyLjc4MjYyIDIuNzMyNjcgMi43ODI2MkMyLjkzOTA4IDIuNzgyNjIgMy4xMTQ3MyAyLjg1NTA3IDMuMjU5NTkgMi45OTk5NUwyMC4zOTQyIDIwLjEzNDZDMjAuNTMyNyAyMC4yNzMgMjAuNjAzNSAyMC40NDcxIDIwLjYwNjcgMjAuNjU2N0MyMC42MDk5IDIwLjg2NjMgMjAuNTM5MSAyMS4wNDM1IDIwLjM5NDIgMjEuMTg4NEMyMC4yNDkzIDIxLjMzMzMgMjAuMDczNyAyMS40MDU3IDE5Ljg2NzMgMjEuNDA1N0MxOS42NjA5IDIxLjQwNTcgMTkuNDg1MyAyMS4zMzMzIDE5LjM0MDQgMjEuMTg4NFpNMTAuODk0MiAyMFYxNy40NTc2QzkuMzgyNjggMTcuMjgzMyA4LjA5ODA3IDE2LjY2NzMgNy4wNDAzNyAxNS42MDk2QzUuOTgyNjggMTQuNTUxOSA1LjM2NjAzIDEzLjI4MDcgNS4xOTAzOSAxMS43OTYxQzUuMTU5NjMgMTEuNTgzMyA1LjIxODYgMTEuMzk3NCA1LjM2NzMyIDExLjIzODRDNS41MTYwMiAxMS4wNzk1IDUuNzEyMTYgMTEgNS45NTU3NCAxMUM2LjEzMTM5IDExIDYuMjg4NDQgMTEuMDY2NiA2LjQyNjg5IDExLjJDNi41NjUzNiAxMS4zMzMzIDYuNjUzMTggMTEuNDk2MSA2LjY5MDM0IDExLjY4ODRDNi44NTU3MyAxMi45MDY0IDcuNDA2MzcgMTMuOTI5NSA4LjM0MjI3IDE0Ljc1NzdDOS4yNzgxNyAxNS41ODU5IDEwLjM3ODggMTYgMTEuNjQ0MiAxNkMxMi4yODc4IDE2IDEyLjg5MjYgMTUuODg1MiAxMy40NTg2IDE1LjY1NTdDMTQuMDI0NyAxNS40MjYyIDE0LjUyNTYgMTUuMTA4MyAxNC45NjE1IDE0LjcwMTlMMTYuMDMwNyAxNS43NzExQzE1LjU0NzQgMTYuMjI0OSAxNC45OTc0IDE2LjU5ODYgMTQuMzgwNyAxNi44OTIyQzEzLjc2NDEgMTcuMTg1OCAxMy4xMDE5IDE3LjM3NDMgMTIuMzk0MiAxNy40NTc2VjIwQzEyLjM5NDIgMjAuMjEyOCAxMi4zMjI0IDIwLjM5MSAxMi4xNzg4IDIwLjUzNDZDMTIuMDM1MiAyMC42NzgyIDExLjg1NyAyMC43NSAxMS42NDQyIDIwLjc1QzExLjQzMTQgMjAuNzUgMTEuMjUzMiAyMC42NzgyIDExLjEwOTYgMjAuNTM0NkMxMC45NjYgMjAuMzkxIDEwLjg5NDIgMjAuMjEyOCAxMC44OTQyIDIwWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDQwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDQwKVwiPlxuPHBhdGggZD1cIk00LjU0NzkxIDE5LjVDNC4wNDI3OCAxOS41IDMuNjE1MjEgMTkuMzI1IDMuMjY1MjEgMTguOTc1QzIuOTE1MjMgMTguNjI1IDIuNzQwMjMgMTguMTk3NCAyLjc0MDIzIDE3LjY5MjJWNi4zMDc3QzIuNzQwMjMgNS44MDI1NyAyLjkxNTIzIDUuMzc1IDMuMjY1MjEgNS4wMjVDMy42MTUyMSA0LjY3NSA0LjA0Mjc4IDQuNSA0LjU0NzkxIDQuNUgxNS45MzI1QzE2LjQzNzYgNC41IDE2Ljg2NTIgNC42NzUgMTcuMjE1MiA1LjAyNUMxNy41NjUyIDUuMzc1IDE3Ljc0MDIgNS44MDI1NyAxNy43NDAyIDYuMzA3N1YxMC44ODQ2TDIwLjQ3NjcgOC4xNDgxQzIwLjYyMDIgOC4wMDQ1MiAyMC43ODY2IDcuOTcwMjIgMjAuOTc1NyA4LjA0NTIyQzIxLjE2NDggOC4xMjAyMiAyMS4yNTkzIDguMjY0NzcgMjEuMjU5MyA4LjQ3ODg3VjE1LjUyMTFDMjEuMjU5MyAxNS43MzUyIDIxLjE2NDggMTUuODc5NyAyMC45NzU3IDE1Ljk1NDdDMjAuNzg2NiAxNi4wMjk3IDIwLjYyMDIgMTUuOTk1NCAyMC40NzY3IDE1Ljg1MTlMMTcuNzQwMiAxMy4xMTUzVjE3LjY5MjJDMTcuNzQwMiAxOC4xOTc0IDE3LjU2NTIgMTguNjI1IDE3LjIxNTIgMTguOTc1QzE2Ljg2NTIgMTkuMzI1IDE2LjQzNzYgMTkuNSAxNS45MzI1IDE5LjVINC41NDc5MVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzAzNFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzAzNClcIj5cbjxwYXRoIGQ9XCJNNC41NDc5MSAxOS41QzQuMDQyNzggMTkuNSAzLjYxNTIxIDE5LjMyNSAzLjI2NTIxIDE4Ljk3NUMyLjkxNTIzIDE4LjYyNSAyLjc0MDIzIDE4LjE5NzQgMi43NDAyMyAxNy42OTIyVjYuMzA3N0MyLjc0MDIzIDUuODAyNTcgMi45MTUyMyA1LjM3NSAzLjI2NTIxIDUuMDI1QzMuNjE1MjEgNC42NzUgNC4wNDI3OCA0LjUgNC41NDc5MSA0LjVIMTUuOTMyNUMxNi40Mzc2IDQuNSAxNi44NjUyIDQuNjc1IDE3LjIxNTIgNS4wMjVDMTcuNTY1MiA1LjM3NSAxNy43NDAyIDUuODAyNTcgMTcuNzQwMiA2LjMwNzdWMTAuODg0NkwyMC40NzY3IDguMTQ4MUMyMC42MzA1IDcuOTk0MjcgMjAuNzk5NCA3Ljk1NzQxIDIwLjk4MzQgOC4wMzc1M0MyMS4xNjc0IDguMTE3NjYgMjEuMjU5MyA4LjI2NDc3IDIxLjI1OTMgOC40Nzg4N1YxNS41MjExQzIxLjI1OTMgMTUuNzM1MiAyMS4xNjc0IDE1Ljg4MjMgMjAuOTgzNCAxNS45NjI0QzIwLjc5OTQgMTYuMDQyNSAyMC42MzA1IDE2LjAwNTcgMjAuNDc2NyAxNS44NTE5TDE3Ljc0MDIgMTMuMTE1M1YxNy42OTIyQzE3Ljc0MDIgMTguMTk3NCAxNy41NjUyIDE4LjYyNSAxNy4yMTUyIDE4Ljk3NUMxNi44NjUyIDE5LjMyNSAxNi40Mzc2IDE5LjUgMTUuOTMyNSAxOS41SDQuNTQ3OTFaTTQuNTQ3OTEgMThIMTUuOTMyNUMxNi4wMjIyIDE4IDE2LjA5NiAxNy45NzExIDE2LjE1MzYgMTcuOTEzNEMxNi4yMTEzIDE3Ljg1NTcgMTYuMjQwMiAxNy43ODIgMTYuMjQwMiAxNy42OTIyVjYuMzA3N0MxNi4yNDAyIDYuMjE3OTUgMTYuMjExMyA2LjE0NDIzIDE2LjE1MzYgNi4wODY1MkMxNi4wOTYgNi4wMjg4MiAxNi4wMjIyIDUuOTk5OTcgMTUuOTMyNSA1Ljk5OTk3SDQuNTQ3OTFDNC40NTgxNiA1Ljk5OTk3IDQuMzg0NDMgNi4wMjg4MiA0LjMyNjczIDYuMDg2NTJDNC4yNjkwMyA2LjE0NDIzIDQuMjQwMTggNi4yMTc5NSA0LjI0MDE4IDYuMzA3N1YxNy42OTIyQzQuMjQwMTggMTcuNzgyIDQuMjY5MDMgMTcuODU1NyA0LjMyNjczIDE3LjkxMzRDNC4zODQ0MyAxNy45NzExIDQuNDU4MTYgMTggNC41NDc5MSAxOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0MylcIj5cbjxwYXRoIGQ9XCJNMTkuNDcxMiAyMS42MzA3TDIuMDYxNyA0LjIyMTFDMS45MjMyNCA0LjA4MjY1IDEuODU0IDMuOTE1MzUgMS44NTQgMy43MTkyQzEuODU0IDMuNTIzMDUgMS45MzE1NyAzLjM0NzQyIDIuMDg2NyAzLjE5MjNDMi4yMzE1NyAzLjA0NzQyIDIuNDA3MiAyLjk3NDk4IDIuNjEzNiAyLjk3NDk4QzIuODIgMi45NzQ5OCAyLjk5NTY0IDMuMDQ3NDIgMy4xNDA1IDMuMTkyM0wyMC41NTAxIDIwLjYwMThDMjAuNjg4NSAyMC43NDAzIDIwLjc1NzcgMjAuOTA3NiAyMC43NTc3IDIxLjEwMzdDMjAuNzU3NyAyMS4yOTk5IDIwLjY4MDIgMjEuNDc1NSAyMC41MjUxIDIxLjYzMDdDMjAuMzgwMiAyMS43NzU1IDIwLjIwNDUgMjEuODQ2NCAxOS45OTgxIDIxLjg0MzJDMTkuNzkxNyAyMS44Mzk5IDE5LjYxNjEgMjEuNzY5MSAxOS40NzEyIDIxLjYzMDdaTTE3Ljc5NDMgMTUuMDExNUw3LjI4MjgzIDQuNDk5OThIMTUuOTg2NkMxNi40OTE4IDQuNDk5OTggMTYuOTE5MyA0LjY3NDk4IDE3LjI2OTMgNS4wMjQ5OEMxNy42MTkzIDUuMzc0OTggMTcuNzk0MyA1LjgwMjU0IDE3Ljc5NDMgNi4zMDc2OFYxMC44ODQ2TDIwLjUzMDggOC4xNDgwOEMyMC42NzQ0IDguMDA0NDkgMjAuODQwOCA3Ljk3MDIgMjEuMDI5OSA4LjA0NTJDMjEuMjE5IDguMTIwMiAyMS4zMTM1IDguMjY0NzUgMjEuMzEzNSA4LjQ3ODg1VjE1LjUyMTFDMjEuMzEzNSAxNS43MzUyIDIxLjIxOSAxNS44Nzk3IDIxLjAyOTkgMTUuOTU0N0MyMC44NDA4IDE2LjAyOTcgMjAuNjc0NCAxNS45OTU0IDIwLjUzMDggMTUuODUxOEwxNy43OTQzIDEzLjExNTNWMTUuMDExNVpNNC40Njc0NSA0LjUxOTIzTDE3Ljc3NTEgMTcuODI2OEMxNy43NTg0IDE4LjI4MzMgMTcuNTY2MSAxOC42NzYyIDE3LjE5ODIgMTkuMDA1N0MxNi44MzAyIDE5LjMzNTIgMTYuNDE4IDE5LjQ5OTkgMTUuOTYxNiAxOS40OTk5SDQuNTc3MDhDNC4wNzE5NSAxOS40OTk5IDMuNjQ0MzggMTkuMzI0OSAzLjI5NDM4IDE4Ljk3NDlDMi45NDQzOCAxOC42MjQ5IDIuNzY5MzggMTguMTk3NCAyLjc2OTM4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTM4IDUuODUxMjYgMi45MzY2OSA1LjQzOTA4IDMuMjcxMyA1LjA3MTE1QzMuNjA1OTIgNC43MDMyIDQuMDA0NjQgNC41MTkyMyA0LjQ2NzQ1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzcpXCI+XG48cGF0aCBkPVwiTTIwLjUwNTkgMTUuODUxOEwxNy43Njk0IDEzLjExNTNWMTUuMDExNUwxNi4yNjk1IDEzLjUxMTVWNi4zMDc2OEMxNi4yNjk1IDYuMjE3OTMgMTYuMjQwNiA2LjE0NDIgMTYuMTgyOSA2LjA4NjVDMTYuMTI1MiA2LjAyODggMTYuMDUxNSA1Ljk5OTk1IDE1Ljk2MTcgNS45OTk5NUg4Ljc1Nzg4TDcuMjU3OTMgNC40OTk5OEgxNS45NjE3QzE2LjQ2NjkgNC40OTk5OCAxNi44OTQ0IDQuNjc0OTggMTcuMjQ0NCA1LjAyNDk4QzE3LjU5NDQgNS4zNzQ5OCAxNy43Njk0IDUuODAyNTQgMTcuNzY5NCA2LjMwNzY4VjEwLjg4NDZMMjAuNTA1OSA4LjE0ODA4QzIwLjY1OTggNy45OTQyNCAyMC44Mjg3IDcuOTU3MzggMjEuMDEyNyA4LjAzNzVDMjEuMTk2NiA4LjExNzYzIDIxLjI4ODYgOC4yNjQ3NSAyMS4yODg2IDguNDc4ODVWMTUuNTIxMUMyMS4yODg2IDE1LjczNTIgMjEuMTk2NiAxNS44ODIzIDIxLjAxMjcgMTUuOTYyNEMyMC44Mjg3IDE2LjA0MjUgMjAuNjU5OCAxNi4wMDU3IDIwLjUwNTkgMTUuODUxOFpNMTkuNDQ2MyAyMS42MzA3TDIuMDM2OCA0LjIyMTFDMS44OTgzMyA0LjA4MjY1IDEuODI5MSAzLjkxNTM1IDEuODI5MSAzLjcxOTJDMS44MjkxIDMuNTIzMDUgMS45MDY2NyAzLjM0NzQyIDIuMDYxOCAzLjE5MjNDMi4yMDY2NyAzLjA0NzQyIDIuMzgyMyAyLjk3NDk4IDIuNTg4NyAyLjk3NDk4QzIuNzk1MSAyLjk3NDk4IDIuOTcwNzMgMy4wNDc0MiAzLjExNTYgMy4xOTIzTDIwLjUyNTIgMjAuNjAxOEMyMC42NjM2IDIwLjc0MDMgMjAuNzMyOCAyMC45MDc2IDIwLjczMjggMjEuMTAzN0MyMC43MzI4IDIxLjI5OTkgMjAuNjU1MyAyMS40NzU1IDIwLjUwMDIgMjEuNjMwN0MyMC4zNTUzIDIxLjc3NTUgMjAuMTc4IDIxLjg0NzkgMTkuOTY4NCAyMS44NDc5QzE5Ljc1ODggMjEuODQ3OSAxOS41ODQ4IDIxLjc3NTUgMTkuNDQ2MyAyMS42MzA3Wk00LjQ0MjU1IDQuNTE5MjNMNS45MjMyOCA1Ljk5OTk1SDQuNTc3MThDNC40ODc0MyA1Ljk5OTk1IDQuNDEzNyA2LjAyODggNC4zNTYgNi4wODY1QzQuMjk4MyA2LjE0NDIgNC4yNjk0NSA2LjIxNzkzIDQuMjY5NDUgNi4zMDc2OFYxNy42OTIyQzQuMjY5NDUgMTcuNzgyIDQuMjk4MyAxNy44NTU3IDQuMzU2IDE3LjkxMzRDNC40MTM3IDE3Ljk3MTEgNC40ODc0MyAxOCA0LjU3NzE4IDE4SDE1Ljk2MTdDMTYuMDUxNSAxOCAxNi4xMjUyIDE3Ljk3MTEgMTYuMTgyOSAxNy45MTM0QzE2LjI0MDYgMTcuODU1NyAxNi4yNjk1IDE3Ljc4MiAxNi4yNjk1IDE3LjY5MjJWMTYuMzQ2MUwxNy43NTAyIDE3LjgyNjhDMTcuNzE4MSAxOC4yOTM1IDE3LjUzMTkgMTguNjg5IDE3LjE5MTUgMTkuMDEzNEMxNi44NTExIDE5LjMzNzcgMTYuNDQxMiAxOS40OTk5IDE1Ljk2MTcgMTkuNDk5OUg0LjU3NzE4QzQuMDcyMDQgMTkuNDk5OSAzLjY0NDQ4IDE5LjMyNDkgMy4yOTQ0OCAxOC45NzQ5QzIuOTQ0NDggMTguNjI0OSAyLjc2OTQ4IDE4LjE5NzQgMi43Njk0OCAxNy42OTIyVjYuMzA3NjhDMi43Njk0OCA1LjgyODE5IDIuOTMxNjYgNS40MTgyNiAzLjI1NjAzIDUuMDc3ODhDMy41ODAzOCA0LjczNzQ5IDMuOTc1ODkgNC41NTEyOCA0LjQ0MjU1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNTVcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTUpXCI+XG48cGF0aCBkPVwiTTE4Ljk0NjIgMjEuNjExNUwxNi40NTc3IDE5LjEyMzFDMTYuMjUgMTkuMjQzNiAxNi4wNDM5IDE5LjM1ODMgMTUuODM5NCAxOS40NjczQzE1LjYzNSAxOS41NzYyIDE1LjQyMDYgMTkuNjc3NSAxNS4xOTYyIDE5Ljc3MTFDMTQuOTQ2MiAxOS44NzI0IDE0LjcxMzIgMTkuODQxOSAxNC40OTcyIDE5LjY3OThDMTQuMjgxMiAxOS41MTc2IDE0LjE3MzIgMTkuMjkyOSAxNC4xNzMyIDE5LjAwNThDMTQuMTczMiAxOC44NjczIDE0LjIxNDUgMTguNzQ2NSAxNC4yOTcyIDE4LjY0MzNDMTQuMzc5OSAxOC41NDAxIDE0LjQ4MjEgMTguNDYxNSAxNC42MDM5IDE4LjQwNzdDMTQuNzM3MiAxOC4zNTc3IDE0Ljg2OCAxOC4zMDE5IDE0Ljk5NjIgMTguMjQwNEMxNS4xMjQ0IDE4LjE3ODkgMTUuMjUwMSAxOC4xMTE1IDE1LjM3MzEgMTguMDM4NUwxMS43ODg1IDE0LjQ1MzhWMTYuNjAzOEMxMS43ODg1IDE3LjAwODkgMTEuNjAzNiAxNy4yODkzIDExLjIzMzcgMTcuNDQ1MUMxMC44NjM4IDE3LjYwMDkgMTAuNTM2NiAxNy41MzY1IDEwLjI1MiAxNy4yNTE5TDcuNTAwMDggMTQuNUg0LjY5MjRDNC40MzQ3MiAxNC41IDQuMjE5NjYgMTQuNDEzOCA0LjA0NzIzIDE0LjI0MTNDMy44NzQ3OSAxNC4wNjg5IDMuNzg4NTggMTMuODUzOCAzLjc4ODU4IDEzLjU5NjFWMTAuNDAzOUMzLjc4ODU4IDEwLjE0NjIgMy44NzQ3OSA5LjkzMTE0IDQuMDQ3MjMgOS43NTg3MUM0LjIxOTY2IDkuNTg2MjYgNC40MzQ3MiA5LjUwMDAzIDQuNjkyNCA5LjUwMDAzSDYuODM0N0wyLjUyMzE1IDUuMTg4NDhDMi4zODQ3IDUuMDUwMDMgMi4zMTM4NyA0Ljg3NiAyLjMxMDY1IDQuNjY2MzhDMi4zMDc0NSA0LjQ1Njc4IDIuMzc4MjggNC4yNzk1NCAyLjUyMzE1IDQuMTM0NjZDMi42NjgwMiAzLjk4OTc5IDIuODQzNjYgMy45MTczNiAzLjA1MDA4IDMuOTE3MzZDMy4yNTY0OCAzLjkxNzM2IDMuNDMyMTEgMy45ODk3OSAzLjU3Njk4IDQuMTM0NjZMMjAgMjAuNTU3N0MyMC4xMzg1IDIwLjY5NjIgMjAuMjA5MyAyMC44NzAyIDIwLjIxMjUgMjEuMDc5OEMyMC4yMTU3IDIxLjI4OTQgMjAuMTQ0OSAyMS40NjY3IDIwIDIxLjYxMTVDMTkuODU1MSAyMS43NTY0IDE5LjY3OTUgMjEuODI4OCAxOS40NzMxIDIxLjgyODhDMTkuMjY2NyAyMS44Mjg4IDE5LjA5MTEgMjEuNzU2NCAxOC45NDYyIDIxLjYxMTVaTTE1LjE5NjIgNC4xNzg4OEMxNi43ODcyIDQuODM2NTggMTguMDY1NyA1Ljg2NTc1IDE5LjAzMTggNy4yNjYzOEMxOS45OTc4IDguNjY3MDIgMjAuNDgwOCAxMC4yMzY2IDIwLjQ4MDggMTEuOTc1QzIwLjQ4MDggMTIuODUxOSAyMC4zNTAzIDEzLjY5MzkgMjAuMDg5NCAxNC41MDFDMTkuODI4NSAxNS4zMDggMTkuNDYwMyAxNi4wNTE5IDE4Ljk4NDYgMTYuNzMyN0wxNy45MDk2IDE1LjY1NzdDMTguMjU3MSAxNS4xMTU0IDE4LjUyMjUgMTQuNTMzNyAxOC43MDU4IDEzLjkxMjVDMTguODg5MiAxMy4yOTE0IDE4Ljk4MDggMTIuNjQ1NSAxOC45ODA4IDExLjk3NUMxOC45ODA4IDEwLjUzNCAxOC41ODE1IDkuMjM0OTYgMTcuNzgyOCA4LjA3NzkxQzE2Ljk4NCA2LjkyMDg2IDE1LjkyNDQgNi4wNzU2NyAxNC42MDM5IDUuNTQyMzNDMTQuNDY1NCA1LjQ4ODQ4IDE0LjM1OSA1LjQwNTc5IDE0LjI4NDcgNS4yOTQyNkMxNC4yMTAzIDUuMTgyNzIgMTQuMTczMiA1LjA1NzcyIDE0LjE3MzIgNC45MTkyNkMxNC4xNzMyIDQuNjQyMzQgMTQuMjgxMiA0LjQyNDQgMTQuNDk3MiA0LjI2NTQzQzE0LjcxMzIgNC4xMDY0NyAxNC45NDYyIDQuMDc3NjIgMTUuMTk2MiA0LjE3ODg4Wk0xNS45MjMxIDEzLjY3MTJMMTQuMTczMiAxMS45MjEyVjguMjk2MThDMTQuODQ3NSA4LjY2Mjg1IDE1LjM2ODYgOS4xNzkxOSAxNS43MzY2IDkuODQ1MjFDMTYuMTA0NSAxMC41MTEyIDE2LjI4ODUgMTEuMjI5NSAxNi4yODg1IDEyQzE2LjI4ODUgMTIuMjk0OSAxNi4yNTggMTIuNTgyNCAxNi4xOTcyIDEyLjg2MjVDMTYuMTM2MyAxMy4xNDI2IDE2LjA0NDkgMTMuNDEyMiAxNS45MjMxIDEzLjY3MTJaTTExLjc4ODUgOS41MzY1OEw5LjYzMDgzIDcuMzY5MjhMMTAuMjUyIDYuNzQ4MTZDMTAuNTM2NiA2LjQ2MzU0IDEwLjg2MzggNi4zOTkxMiAxMS4yMzM3IDYuNTU0ODhDMTEuNjAzNiA2LjcxMDY3IDExLjc4ODUgNi45OTExMiAxMS43ODg1IDcuMzk2MjNWOS41MzY1OFpNMTAuMjg4NSAxNS4xNVYxMi45NTM5TDguMzM0NjggMTFINS4yODg1M1YxM0g4LjEzODUzTDEwLjI4ODUgMTUuMTVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNTJcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTIpXCI+XG48cGF0aCBkPVwiTTE4Ljk0NjIgMjEuNjExNUwxNi40NTc3IDE5LjEyMzFDMTYuMjUgMTkuMjQzNiAxNi4wNDM5IDE5LjM1ODMgMTUuODM5NCAxOS40NjczQzE1LjYzNSAxOS41NzYyIDE1LjQyMDYgMTkuNjc3NSAxNS4xOTYyIDE5Ljc3MTFDMTQuOTQ2MiAxOS44NzI0IDE0LjcxMzIgMTkuODQxOSAxNC40OTcyIDE5LjY3OThDMTQuMjgxMiAxOS41MTc2IDE0LjE3MzIgMTkuMjkyOSAxNC4xNzMyIDE5LjAwNThDMTQuMTczMiAxOC44NjczIDE0LjIxNDUgMTguNzQ2NSAxNC4yOTcyIDE4LjY0MzNDMTQuMzc5OSAxOC41NDAxIDE0LjQ4MjEgMTguNDYxNSAxNC42MDM5IDE4LjQwNzdDMTQuNzM3MiAxOC4zNTc3IDE0Ljg2OCAxOC4zMDE5IDE0Ljk5NjIgMTguMjQwNEMxNS4xMjQ0IDE4LjE3ODkgMTUuMjUwMSAxOC4xMTE1IDE1LjM3MzEgMTguMDM4NUwxMS43ODg1IDE0LjQ1MzhWMTYuNjAzOEMxMS43ODg1IDE3LjAwODkgMTEuNjAzNiAxNy4yODkzIDExLjIzMzcgMTcuNDQ1MUMxMC44NjM4IDE3LjYwMDkgMTAuNTM2NiAxNy41MzY1IDEwLjI1MiAxNy4yNTE5TDcuNTAwMDggMTQuNUg0LjY5MjRDNC40MzQ3MiAxNC41IDQuMjE5NjYgMTQuNDEzOCA0LjA0NzIzIDE0LjI0MTNDMy44NzQ3OSAxNC4wNjg5IDMuNzg4NTggMTMuODUzOCAzLjc4ODU4IDEzLjU5NjFWMTAuNDAzOUMzLjc4ODU4IDEwLjE0NjIgMy44NzQ3OSA5LjkzMTE0IDQuMDQ3MjMgOS43NTg3MUM0LjIxOTY2IDkuNTg2MjYgNC40MzQ3MiA5LjUwMDAzIDQuNjkyNCA5LjUwMDAzSDYuODM0N0wyLjUyMzE1IDUuMTg4NDhDMi4zODQ3IDUuMDUwMDMgMi4zMTM4NyA0Ljg3NiAyLjMxMDY1IDQuNjY2MzhDMi4zMDc0NSA0LjQ1Njc4IDIuMzc4MjggNC4yNzk1NCAyLjUyMzE1IDQuMTM0NjZDMi42NjgwMiAzLjk4OTc5IDIuODQzNjYgMy45MTczNiAzLjA1MDA4IDMuOTE3MzZDMy4yNTY0OCAzLjkxNzM2IDMuNDMyMTEgMy45ODk3OSAzLjU3Njk4IDQuMTM0NjZMMjAgMjAuNTU3N0MyMC4xMzg1IDIwLjY5NjIgMjAuMjA5MyAyMC44NzAyIDIwLjIxMjUgMjEuMDc5OEMyMC4yMTU3IDIxLjI4OTQgMjAuMTQ0OSAyMS40NjY3IDIwIDIxLjYxMTVDMTkuODU1MSAyMS43NTY0IDE5LjY3OTUgMjEuODI4OCAxOS40NzMxIDIxLjgyODhDMTkuMjY2NyAyMS44Mjg4IDE5LjA5MTEgMjEuNzU2NCAxOC45NDYyIDIxLjYxMTVaTTE1LjE5NjIgNC4xNzg4OEMxNi43ODcyIDQuODM2NTggMTguMDY1NyA1Ljg2NTc1IDE5LjAzMTggNy4yNjYzOEMxOS45OTc4IDguNjY3MDIgMjAuNDgwOCAxMC4yMzY2IDIwLjQ4MDggMTEuOTc1QzIwLjQ4MDggMTIuODUxOSAyMC4zNTAzIDEzLjY5MzkgMjAuMDg5NCAxNC41MDFDMTkuODI4NSAxNS4zMDggMTkuNDYwMyAxNi4wNTE5IDE4Ljk4NDYgMTYuNzMyN0wxNy45MDk2IDE1LjY1NzdDMTguMjU3MSAxNS4xMTU0IDE4LjUyMjUgMTQuNTMzNyAxOC43MDU4IDEzLjkxMjVDMTguODg5MiAxMy4yOTE0IDE4Ljk4MDggMTIuNjQ1NSAxOC45ODA4IDExLjk3NUMxOC45ODA4IDEwLjUzNCAxOC41ODE1IDkuMjM0OTYgMTcuNzgyOCA4LjA3NzkxQzE2Ljk4NCA2LjkyMDg2IDE1LjkyNDQgNi4wNzU2NyAxNC42MDM5IDUuNTQyMzNDMTQuNDY1NCA1LjQ4ODQ4IDE0LjM1OSA1LjQwNTc5IDE0LjI4NDcgNS4yOTQyNkMxNC4yMTAzIDUuMTgyNzIgMTQuMTczMiA1LjA1NzcyIDE0LjE3MzIgNC45MTkyNkMxNC4xNzMyIDQuNjQyMzQgMTQuMjgxMiA0LjQyNDQgMTQuNDk3MiA0LjI2NTQzQzE0LjcxMzIgNC4xMDY0NyAxNC45NDYyIDQuMDc3NjIgMTUuMTk2MiA0LjE3ODg4Wk0xNS45MjMxIDEzLjY3MTJMMTQuMTczMiAxMS45MjEyVjguMjk2MThDMTQuODQ3NSA4LjY2Mjg1IDE1LjM2ODYgOS4xNzkxOSAxNS43MzY2IDkuODQ1MjFDMTYuMTA0NSAxMC41MTEyIDE2LjI4ODUgMTEuMjI5NSAxNi4yODg1IDEyQzE2LjI4ODUgMTIuMjk0OSAxNi4yNTggMTIuNTgyNCAxNi4xOTcyIDEyLjg2MjVDMTYuMTM2MyAxMy4xNDI2IDE2LjA0NDkgMTMuNDEyMiAxNS45MjMxIDEzLjY3MTJaTTExLjc4ODUgOS41MzY1OEw5LjYzMDgzIDcuMzY5MjhMMTAuMjUyIDYuNzQ4MTZDMTAuNTM2NiA2LjQ2MzU0IDEwLjg2MzggNi4zOTkxMiAxMS4yMzM3IDYuNTU0ODhDMTEuNjAzNiA2LjcxMDY3IDExLjc4ODUgNi45OTExMiAxMS43ODg1IDcuMzk2MjNWOS41MzY1OFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA1OFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA1OClcIj5cbjxwYXRoIGQ9XCJNMTUuMDYxNCAxOS43NzExQzE0LjgxMTQgMTkuODcyNCAxNC41Nzg0IDE5Ljg0MTggMTQuMzYyNCAxOS42NzkzQzE0LjE0NjQgMTkuNTE2OCAxNC4wMzg0IDE5LjI5MTggMTQuMDM4NCAxOS4wMDQzQzE0LjAzODQgMTguODY2OCAxNC4wNzk3IDE4Ljc0NjQgMTQuMTYyNCAxOC42NDMyQzE0LjI0NTEgMTguNTQgMTQuMzQ3MyAxOC40NjE1IDE0LjQ2OTEgMTguNDA3N0MxNS43ODk2IDE3Ljg3NDMgMTYuODQ5MyAxNy4wMjkxIDE3LjY0OCAxNS44NzIxQzE4LjQ0NjcgMTQuNzE1IDE4Ljg0NjEgMTMuNDE2IDE4Ljg0NjEgMTEuOTc1QzE4Ljg0NjEgMTAuNTM0IDE4LjQ0NjcgOS4yMzQ5NCAxNy42NDggOC4wNzc4OUMxNi44NDkzIDYuOTIwODQgMTUuNzg5NiA2LjA3NTY0IDE0LjQ2OTEgNS41NDIzMUMxNC4zMzA3IDUuNDg4NDYgMTQuMjI0MyA1LjQwNTIgMTQuMTQ5OSA1LjI5MjU0QzE0LjA3NTYgNS4xNzk4NyAxNC4wMzg0IDUuMDU0NjkgMTQuMDM4NCA0LjkxNjk5QzE0LjAzODQgNC42NDE1NyAxNC4xNDY0IDQuNDI0MzggMTQuMzYyNCA0LjI2NTQxQzE0LjU3ODQgNC4xMDY0NCAxNC44MTE0IDQuMDc3NTkgMTUuMDYxNCA0LjE3ODg2QzE2LjY0NiA0LjgzNjU2IDE3LjkyMjkgNS44NjUwMyAxOC44OTIyIDcuMjY0MjZDMTkuODYxNCA4LjY2MzQ4IDIwLjM0NiAxMC4yMzM3IDIwLjM0NiAxMS45NzVDMjAuMzQ2IDEzLjcxNjMgMTkuODYxNCAxNS4yODY1IDE4Ljg5MjIgMTYuNjg1N0MxNy45MjI5IDE4LjA4NDkgMTYuNjQ2IDE5LjExMzQgMTUuMDYxNCAxOS43NzExWk00LjU1NzYzIDE0LjVDNC4zMDE1NSAxNC41IDQuMDg2ODkgMTQuNDEzMyAzLjkxMzY2IDE0LjI0MDFDMy43NDA0MyAxNC4wNjY5IDMuNjUzODEgMTMuODUyMiAzLjY1MzgxIDEzLjU5NjFWMTAuNDAzOUMzLjY1MzgxIDEwLjE0NzggMy43NDA0MyA5LjkzMzEyIDMuOTEzNjYgOS43NTk4OUM0LjA4Njg5IDkuNTg2NjQgNC4zMDE1NSA5LjUwMDAxIDQuNTU3NjMgOS41MDAwMUg3LjM2NTMxTDEwLjExNzIgNi43NDgxNEMxMC40MDE4IDYuNDYzNTIgMTAuNzI5MSA2LjM5OTU5IDExLjA5ODkgNi41NTYzNkMxMS40Njg4IDYuNzEzMTQgMTEuNjUzNyA2Ljk5MzA5IDExLjY1MzcgNy4zOTYyMVYxNi42MDM4QzExLjY1MzcgMTcuMDA2OSAxMS40Njg4IDE3LjI4NjggMTEuMDk4OSAxNy40NDM2QzEwLjcyOTEgMTcuNjAwNCAxMC40MDE4IDE3LjUzNjUgMTAuMTE3MiAxNy4yNTE4TDcuMzY1MzEgMTQuNUg0LjU1NzYzWk0xNC4wMzg0IDE1LjY1MzhWOC4yOTYxNkMxNC42ODU4IDguNjQ2MTYgMTUuMjAwMiA5LjE1NDE3IDE1LjU4MTYgOS44MjAxOUMxNS45NjMgMTAuNDg2MiAxNi4xNTM3IDExLjIxMjggMTYuMTUzNyAxMkMxNi4xNTM3IDEyLjc4NzIgMTUuOTYzIDEzLjUwNTQgMTUuNTgxNiAxNC4xNTQ4QzE1LjIwMDIgMTQuODA0MSAxNC42ODU4IDE1LjMwMzggMTQuMDM4NCAxNS42NTM4Wk0xMC4xNTM4IDguODQ5OTlMOC4wMDM3NiAxMUg1LjE1Mzc2VjEzSDguMDAzNzZMMTAuMTUzOCAxNS4xNVY4Ljg0OTk5WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDQ2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDQ2KVwiPlxuPHBhdGggZD1cIk0xNS4wNjE0IDE5Ljc3MTFDMTQuODExNCAxOS44NzI0IDE0LjU3ODQgMTkuODQxOSAxNC4zNjI0IDE5LjY3OThDMTQuMTQ2NCAxOS41MTc2IDE0LjAzODQgMTkuMjkyOSAxNC4wMzg0IDE5LjAwNTdDMTQuMDM4NCAxOC44NjczIDE0LjA3OTcgMTguNzQ2NCAxNC4xNjI0IDE4LjY0MzJDMTQuMjQ1MSAxOC41NCAxNC4zNDczIDE4LjQ2MTUgMTQuNDY5MSAxOC40MDc3QzE1Ljc4OTYgMTcuODc0MyAxNi44NDkzIDE3LjAyOTEgMTcuNjQ4IDE1Ljg3MjFDMTguNDQ2NyAxNC43MTUgMTguODQ2MSAxMy40MTYgMTguODQ2MSAxMS45NzVDMTguODQ2MSAxMC41MzQgMTguNDQ2NyA5LjIzNDk0IDE3LjY0OCA4LjA3Nzg5QzE2Ljg0OTMgNi45MjA4NCAxNS43ODk2IDYuMDc1NjQgMTQuNDY5MSA1LjU0MjMxQzE0LjMzMDcgNS40ODg0NiAxNC4yMjQzIDUuNDA1NzcgMTQuMTQ5OSA1LjI5NDI0QzE0LjA3NTYgNS4xODI3IDE0LjAzODQgNS4wNTc3IDE0LjAzODQgNC45MTkyNEMxNC4wMzg0IDQuNjQyMzIgMTQuMTQ2NCA0LjQyNDM4IDE0LjM2MjQgNC4yNjU0MUMxNC41Nzg0IDQuMTA2NDQgMTQuODExNCA0LjA3NzU5IDE1LjA2MTQgNC4xNzg4NkMxNi42NDYgNC44MzY1NiAxNy45MjI5IDUuODY1NzMgMTguODkyMiA3LjI2NjM2QzE5Ljg2MTQgOC42NjY5OSAyMC4zNDYgMTAuMjM2NSAyMC4zNDYgMTEuOTc1QzIwLjM0NiAxMy43MTM0IDE5Ljg2MTQgMTUuMjgzIDE4Ljg5MjIgMTYuNjgzNkMxNy45MjI5IDE4LjA4NDIgMTYuNjQ2IDE5LjExMzQgMTUuMDYxNCAxOS43NzExWk00LjU1NzYzIDE0LjVDNC4yOTk5NSAxNC41IDQuMDg0ODkgMTQuNDEzNyAzLjkxMjQ2IDE0LjI0MTNDMy43NDAwMyAxNC4wNjg5IDMuNjUzODEgMTMuODUzOCAzLjY1MzgxIDEzLjU5NjFWMTAuNDAzOUMzLjY1MzgxIDEwLjE0NjIgMy43NDAwMyA5LjkzMTEyIDMuOTEyNDYgOS43NTg2OUM0LjA4NDg5IDkuNTg2MjQgNC4yOTk5NSA5LjUwMDAxIDQuNTU3NjMgOS41MDAwMUg3LjM2NTMxTDEwLjExNzIgNi43NDgxNEMxMC40MDE4IDYuNDYzNTIgMTAuNzI5MSA2LjM5OTA5IDExLjA5ODkgNi41NTQ4NkMxMS40Njg4IDYuNzEwNjQgMTEuNjUzNyA2Ljk5MTA5IDExLjY1MzcgNy4zOTYyMVYxNi42MDM4QzExLjY1MzcgMTcuMDA4OSAxMS40Njg4IDE3LjI4OTMgMTEuMDk4OSAxNy40NDUxQzEwLjcyOTEgMTcuNjAwOSAxMC40MDE4IDE3LjUzNjUgMTAuMTE3MiAxNy4yNTE4TDcuMzY1MzEgMTQuNUg0LjU1NzYzWk0xNC4wMzg0IDE1LjY1MzhWOC4yOTYxNkMxNC42ODU4IDguNjQ2MTYgMTUuMjAwMiA5LjE1NDE3IDE1LjU4MTYgOS44MjAxOUMxNS45NjMgMTAuNDg2MiAxNi4xNTM3IDExLjIxMjggMTYuMTUzNyAxMkMxNi4xNTM3IDEyLjc4NzIgMTUuOTYzIDEzLjUwNTQgMTUuNTgxNiAxNC4xNTQ4QzE1LjIwMDIgMTQuODA0MSAxNC42ODU4IDE1LjMwMzggMTQuMDM4NCAxNS42NTM4WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTIuNzI1IDIxYS45NzMuOTczIDAgMCAxLS44NS0uNSAxLjA5OCAxLjA5OCAwIDAgMS0uMTM4LS40ODguODk4Ljg5OCAwIDAgMSAuMTM4LS41MTJsOS4yNS0xNmEuOTguOTggMCAwIDEgLjM4Ny0uMzc1QzExLjY3MSAzLjA0MiAxMS44MzMgMyAxMiAzYy4xNjYgMCAuMzI5LjA0Mi40ODcuMTI1YS45ODMuOTgzIDAgMCAxIC4zODguMzc1bDkuMjUgMTZjLjEuMTY3LjE0Ni4zMzcuMTM3LjUxMmExLjA5OCAxLjA5OCAwIDAgMS0uMTM3LjQ4OC45NzMuOTczIDAgMCAxLS44NS41SDIuNzI1Wk0xMiAxOGMuMjgzIDAgLjUyLS4wOTYuNzEyLS4yODhBLjk2OC45NjggMCAwIDAgMTMgMTdhLjk2OC45NjggMCAwIDAtLjI4OC0uNzEyQS45NjguOTY4IDAgMCAwIDEyIDE2YS45NjguOTY4IDAgMCAwLS43MTMuMjg4QS45NjguOTY4IDAgMCAwIDExIDE3YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLTNhLjk3Ljk3IDAgMCAwIC43MTItLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMyAxNHYtM2EuOTY4Ljk2OCAwIDAgMC0uMjg4LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTBhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTF2M2MwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1pcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF81NTVfMzM2N1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzU1NV8zMzY3KVwiPlxuPHBhdGggZD1cIk0zLjQyNTU1IDIwLjVDMy4yNTYwNSAyMC41IDMuMTAzODIgMjAuNDU4NiAyLjk2ODg3IDIwLjM3NTdDMi44MzM5MiAyMC4yOTI5IDIuNzI4OTcgMjAuMTgzNiAyLjY1NCAyMC4wNDgxQzIuNTc2MDIgMTkuOTEzNSAyLjUzMzEyIDE5Ljc2NzYgMi41MjUzMiAxOS42MTA2QzIuNTE3NTIgMTkuNDUzNSAyLjU1OTkgMTkuMjk4IDIuNjUyNDUgMTkuMTQ0TDExLjIxMzIgNC4zNTYxNkMxMS4zMDU3IDQuMjAyMTIgMTEuNDIxNiA0LjA4ODI1IDExLjU2MDcgNC4wMTQ1M0MxMS42OTk4IDMuOTQwOCAxMS44NDYyIDMuOTAzOTMgMTIuMDAwMSAzLjkwMzkzQzEyLjE1MzkgMy45MDM5MyAxMi4zMDA0IDMuOTQwOCAxMi40Mzk1IDQuMDE0NTNDMTIuNTc4NiA0LjA4ODI1IDEyLjY5NDQgNC4yMDIxMiAxMi43ODcgNC4zNTYxNkwyMS4zNDc3IDE5LjE0NEMyMS40NDAzIDE5LjI5OCAyMS40ODI3IDE5LjQ1MzUgMjEuNDc0OSAxOS42MTA2QzIxLjQ2NzEgMTkuNzY3NiAyMS40MjQyIDE5LjkxMzUgMjEuMzQ2MiAyMC4wNDgxQzIxLjI3MTIgMjAuMTgzNiAyMS4xNjYzIDIwLjI5MjkgMjEuMDMxMyAyMC4zNzU3QzIwLjg5NjQgMjAuNDU4NiAyMC43NDQxIDIwLjUgMjAuNTc0NiAyMC41SDMuNDI1NTVaTTQuNDUwMSAxOUgxOS41NTAxTDEyLjAwMDEgNi4wMDAwM0w0LjQ1MDEgMTlaTTEyLjAwMDEgMTcuODA3N0MxMi4yMjg5IDE3LjgwNzcgMTIuNDIwOCAxNy43MzAzIDEyLjU3NTYgMTcuNTc1NUMxMi43MzA0IDE3LjQyMDcgMTIuODA3OCAxNy4yMjg5IDEyLjgwNzggMTdDMTIuODA3OCAxNi43NzEyIDEyLjczMDQgMTYuNTc5NCAxMi41NzU2IDE2LjQyNDZDMTIuNDIwOCAxNi4yNjk4IDEyLjIyODkgMTYuMTkyNCAxMi4wMDAxIDE2LjE5MjRDMTEuNzcxMiAxNi4xOTI0IDExLjU3OTQgMTYuMjY5OCAxMS40MjQ2IDE2LjQyNDZDMTEuMjY5OCAxNi41Nzk0IDExLjE5MjQgMTYuNzcxMiAxMS4xOTI0IDE3QzExLjE5MjQgMTcuMjI4OSAxMS4yNjk4IDE3LjQyMDcgMTEuNDI0NiAxNy41NzU1QzExLjU3OTQgMTcuNzMwMyAxMS43NzEyIDE3LjgwNzcgMTIuMDAwMSAxNy44MDc3Wk0xMi4wMDA0IDE1LjE5MjRDMTIuMjEzIDE1LjE5MjQgMTIuMzkxMSAxNS4xMjA1IDEyLjUzNDcgMTQuOTc2N0MxMi42NzgzIDE0LjgzMyAxMi43NTAxIDE0LjY1NDkgMTIuNzUwMSAxNC40NDI0VjEwLjk0MjNDMTIuNzUwMSAxMC43Mjk4IDEyLjY3ODIgMTAuNTUxNyAxMi41MzQ0IDEwLjQwOEMxMi4zOTA2IDEwLjI2NDIgMTIuMjEyNCAxMC4xOTI0IDExLjk5OTggMTAuMTkyNEMxMS43ODcyIDEwLjE5MjQgMTEuNjA5MSAxMC4yNjQyIDExLjQ2NTUgMTAuNDA4QzExLjMyMTkgMTAuNTUxNyAxMS4yNTAxIDEwLjcyOTggMTEuMjUwMSAxMC45NDIzVjE0LjQ0MjRDMTEuMjUwMSAxNC42NTQ5IDExLjMyMiAxNC44MzMgMTEuNDY1OCAxNC45NzY3QzExLjYwOTYgMTUuMTIwNSAxMS43ODc4IDE1LjE5MjQgMTIuMDAwNCAxNS4xOTI0WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLG51bGwsImltcG9ydCAkN1Y0SlokYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkN1Y0SlokZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkN1Y0SlokY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1Y0SlokUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCR2YXIkTkFNRSA9ICdMYWJlbCc7XG5jb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSA9IC8qI19fUFVSRV9fKi8gJDdWNEpaJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdWNEpaJGNyZWF0ZUVsZW1lbnQoJDdWNEpaJFByaW1pdGl2ZS5sYWJlbCwgJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25Nb3VzZURvd246IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25Nb3VzZURvd247XG4gICAgICAgICAgICAoX3Byb3BzJG9uTW91c2VEb3duID0gcHJvcHMub25Nb3VzZURvd24pID09PSBudWxsIHx8IF9wcm9wcyRvbk1vdXNlRG93biA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbk1vdXNlRG93bi5jYWxsKHByb3BzLCBldmVudCk7IC8vIHByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hlbiBkb3VibGUgY2xpY2tpbmcgbGFiZWxcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBldmVudC5kZXRhaWwgPiAxKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGI3M2E2YzY2ODVlNzIxODQkdmFyJE5BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1O1xuXG5cblxuXG5leHBvcnQgeyRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCxudWxsLCJpbXBvcnQgJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGswM3dJJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGswM3dJJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkazAzd0kkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FID0gJ1Byb2dyZXNzJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0LCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZl0gPSAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciwgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dF0gPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQcm9ncmVzczogX19zY29wZVByb2dyZXNzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG1heDogbWF4UHJvcCAsIGdldFZhbHVlTGFiZWw6IGdldFZhbHVlTGFiZWwgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwgLCAuLi5wcm9ncmVzc1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXhQcm9wKSA/IG1heFByb3AgOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgY29uc3QgdmFsdWUgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlUHJvcCwgbWF4KSA/IHZhbHVlUHJvcCA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyBnZXRWYWx1ZUxhYmVsKHZhbHVlLCBtYXgpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUHJvZ3Jlc3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgbWF4OiBtYXhcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogbWF4LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXZhbHVldGV4dFwiOiB2YWx1ZUxhYmVsLFxuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSh2YWx1ZSwgbWF4KSxcbiAgICAgICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLW1heFwiOiBtYXhcbiAgICB9LCBwcm9ncmVzc1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FXG59KTtcbiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLnByb3BUeXBlcyA9IHtcbiAgICBtYXggKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyhwcm9wVmFsdWUpO1xuICAgICAgICBpZiAocHJvcFZhbHVlICYmICEkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wVmFsdWUpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3Ioc3RyVmFsLCBjb21wb25lbnROYW1lKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgdmFsdWUgKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyh2YWx1ZVByb3ApO1xuICAgICAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wcy5tYXgpID8gcHJvcHMubWF4IDogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYO1xuICAgICAgICBpZiAodmFsdWVQcm9wICE9IG51bGwgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdQcm9ncmVzc0luZGljYXRvcic7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCA9IC8qI19fUFVSRV9fKi8gJGswM3dJJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9jb250ZXh0JHZhbHVlO1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUHJvZ3Jlc3MpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUoY29udGV4dC52YWx1ZSwgY29udGV4dC5tYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogKF9jb250ZXh0JHZhbHVlID0gY29udGV4dC52YWx1ZSkgIT09IG51bGwgJiYgX2NvbnRleHQkdmFsdWUgIT09IHZvaWQgMCA/IF9jb250ZXh0JHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IGNvbnRleHQubWF4XG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBmdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKX0lYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIobWF4KSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlLCBtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xufSAvLyBTcGxpdCB0aGlzIG91dCBmb3IgY2xlYXJlciByZWFkYWJpbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9XFxgLmA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgdmFsdWVcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmU6XG4gIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7JDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYfSBpZiBubyBcXGBtYXhcXGAgcHJvcCBpcyBzZXQpXG4gIC0gXFxgbnVsbFxcYCBpZiB0aGUgcHJvZ3Jlc3MgaXMgaW5kZXRlcm1pbmF0ZS5cblxuRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG59XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZDtcblxuXG5cblxuZXhwb3J0IHskNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiBhcyBjcmVhdGVQcm9ncmVzc1Njb3BlLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiBhcyBQcm9ncmVzcywgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDJiNzc2ZjdlN2VlNjBkYmQgYXMgUHJvZ3Jlc3NJbmRpY2F0b3IsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLG51bGwsImltcG9ydCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Y3JlYXRlRWxlbWVudCBhcyAkNGs0RDAkY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiBhcyAkNGs0RDAkZm9yd2FyZFJlZiwgdXNlUmVmIGFzICQ0azREMCR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkNGs0RDAkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDRrNEQwJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlRGlhbG9nU2NvcGUgYXMgJDRrNEQwJGNyZWF0ZURpYWxvZ1Njb3BlLCBSb290IGFzICQ0azREMCRSb290LCBUcmlnZ2VyIGFzICQ0azREMCRUcmlnZ2VyLCBQb3J0YWwgYXMgJDRrNEQwJFBvcnRhbCwgT3ZlcmxheSBhcyAkNGs0RDAkT3ZlcmxheSwgV2FybmluZ1Byb3ZpZGVyIGFzICQ0azREMCRXYXJuaW5nUHJvdmlkZXIsIENvbnRlbnQgYXMgJDRrNEQwJENvbnRlbnQsIFRpdGxlIGFzICQ0azREMCRUaXRsZSwgRGVzY3JpcHRpb24gYXMgJDRrNEQwJERlc2NyaXB0aW9uLCBDbG9zZSBhcyAkNGs0RDAkQ2xvc2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlhbG9nXCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ0azREMCRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdHRhYmxlIGFzICQ0azREMCRTbG90dGFibGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSA9ICdBbGVydERpYWxvZyc7XG5jb25zdCBbJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWJdID0gJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FLCBbXG4gICAgJDRrNEQwJGNyZWF0ZURpYWxvZ1Njb3BlXG5dKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSA9ICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSgpO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmFsZXJ0RGlhbG9nUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFJvb3QsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFsZXJ0RGlhbG9nUHJvcHMsIHtcbiAgICAgICAgbW9kYWw6IHRydWVcbiAgICB9KSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUUklHR0VSX05BTUUgPSAnQWxlcnREaWFsb2dUcmlnZ2VyJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUcmlnZ2VyLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRSA9ICdBbGVydERpYWxvZ1BvcnRhbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjYwZjJiZmRiOTg2NzA2YyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4ucG9ydGFsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFBvcnRhbCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgcG9ydGFsUHJvcHMpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nT3ZlcmxheVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkT1ZFUkxBWV9OQU1FID0gJ0FsZXJ0RGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkT3ZlcmxheSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgb3ZlcmxheVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0NvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSA9ICdBbGVydERpYWxvZ0NvbnRlbnQnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRBbGVydERpYWxvZ0NvbnRlbnRQcm92aWRlciwgJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHRdID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNGs0RDAkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ0azREMCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTtcbiAgICBjb25zdCBjYW5jZWxSZWYgPSAkNGs0RDAkdXNlUmVmKG51bGwpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRXYXJuaW5nUHJvdmlkZXIsIHtcbiAgICAgICAgY29udGVudE5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUsXG4gICAgICAgIHRpdGxlTmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUUsXG4gICAgICAgIGRvY3NTbHVnOiBcImFsZXJ0LWRpYWxvZ1wiXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVBbGVydERpYWxvZyxcbiAgICAgICAgY2FuY2VsUmVmOiBjYW5jZWxSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRDb250ZW50LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImFsZXJ0ZGlhbG9nXCJcbiAgICB9LCBkaWFsb2dTY29wZSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbk9wZW5BdXRvRm9jdXM6ICQ0azREMCRjb21wb3NlRXZlbnRIYW5kbGVycyhjb250ZW50UHJvcHMub25PcGVuQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NhbmNlbFJlZiRjdXJyZW50O1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY2FuY2VsUmVmJGN1cnJlbnQgPSBjYW5jZWxSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NhbmNlbFJlZiRjdXJyZW50ID09PSB2b2lkIDAgfHwgX2NhbmNlbFJlZiRjdXJyZW50LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9KSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkU2xvdHRhYmxlLCBudWxsLCBjaGlsZHJlbiksIGZhbHNlKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1RpdGxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FID0gJ0FsZXJ0RGlhbG9nVGl0bGUnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRpdGxlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFRpdGxlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCB0aXRsZVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNywge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRERVNDUklQVElPTl9OQU1FID0gJ0FsZXJ0RGlhbG9nRGVzY3JpcHRpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCREZXNjcmlwdGlvbiwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgZGVzY3JpcHRpb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRERVNDUklQVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQWN0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRBQ1RJT05fTkFNRSA9ICdBbGVydERpYWxvZ0FjdGlvbic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmFjdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRDbG9zZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgYWN0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDYW5jZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FID0gJ0FsZXJ0RGlhbG9nQ2FuY2VsJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uY2FuY2VsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgY2FuY2VsUmVmOiBjYW5jZWxSZWYgIH0gPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlQWxlcnREaWFsb2dDb250ZW50Q29udGV4dCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ0FOQ0VMX05BTUUsIF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCByZWYgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY2FuY2VsUmVmKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGNhbmNlbFByb3BzLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJERlc2NyaXB0aW9uV2FybmluZyA9ICh7IGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYgIH0pPT57XG4gICAgY29uc3QgTUVTU0FHRSA9IGBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgIHJlcXVpcmVzIGEgZGVzY3JpcHRpb24gZm9yIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzaWJsZSBmb3Igc2NyZWVuIHJlYWRlciB1c2Vycy5cblxuWW91IGNhbiBhZGQgYSBkZXNjcmlwdGlvbiB0byB0aGUgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCBieSBwYXNzaW5nIGEgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRX1cXGAgY29tcG9uZW50IGFzIGEgY2hpbGQsIHdoaWNoIGFsc28gYmVuZWZpdHMgc2lnaHRlZCB1c2VycyBieSBhZGRpbmcgdmlzaWJsZSBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cbkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHlvdXIgb3duIGNvbXBvbmVudCBhcyBhIGRlc2NyaXB0aW9uIGJ5IGFzc2lnbmluZyBpdCBhbiBcXGBpZFxcYCBhbmQgcGFzc2luZyB0aGUgc2FtZSB2YWx1ZSB0byB0aGUgXFxgYXJpYS1kZXNjcmliZWRieVxcYCBwcm9wIGluIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAuIElmIHRoZSBkZXNjcmlwdGlvbiBpcyBjb25mdXNpbmcgb3IgZHVwbGljYXRpdmUgZm9yIHNpZ2h0ZWQgdXNlcnMsIHlvdSBjYW4gdXNlIHRoZSBcXGBAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXFxgIHByaW1pdGl2ZSBhcyBhIHdyYXBwZXIgYXJvdW5kIHlvdXIgZGVzY3JpcHRpb24gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZ2A7XG4gICAgJDRrNEQwJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgoX2NvbnRlbnRSZWYkY3VycmVudCA9IGNvbnRlbnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRlbnRSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRSZWYkY3VycmVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKSk7XG4gICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIGNvbnRlbnRSZWZcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmM7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRlMTljZDVmOTM3NmY4Y2VlID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkODQ4YzliN2VhZDBkZjk2NyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMjI1ZTBkYTYyZDMxNGI3O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNTtcblxuXG5cblxuZXhwb3J0IHskOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjg4OTE4ODA3NTFjMmM1YiBhcyBjcmVhdGVBbGVydERpYWxvZ1Njb3BlLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSBhcyBBbGVydERpYWxvZywgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIgYXMgQWxlcnREaWFsb2dUcmlnZ2VyLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjYwZjJiZmRiOTg2NzA2YyBhcyBBbGVydERpYWxvZ1BvcnRhbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgYXMgQWxlcnREaWFsb2dPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCBhcyBBbGVydERpYWxvZ0NvbnRlbnQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkIGFzIEFsZXJ0RGlhbG9nQWN0aW9uLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCBhcyBBbGVydERpYWxvZ0NhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyBhcyBBbGVydERpYWxvZ1RpdGxlLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSBhcyBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmIGFzIE92ZXJsYXksICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRlMTljZDVmOTM3NmY4Y2VlIGFzIEFjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgYXMgQ2FuY2VsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsXSwibmFtZXMiOlsiX19hc3NpZ24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwidGhpcyIsIl9fcmVzdCIsImUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJ0b1N0cmluZyIsImluY2x1ZGVzIiwia2V5Iiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0Iiwid2luZG93IiwiQnV0dG9uIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwiX2EiLCJyZWYiLCJfYyIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiX2QiLCJzaXplIiwiX2UiLCJ2YXJpYW50IiwiX2YiLCJ0eXBlIiwiX2ciLCJwcmVmaXgiLCJfaCIsInN1ZmZpeCIsIl9qIiwiY2xhc3NOYW1lIiwiX2siLCJmdWxsV2lkdGgiLCJwcm9wcyIsInN0eWxlcyIsImJ1dHRvbiIsIl9iIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsIiRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIiwib3JpZ2luYWxFdmVudEhhbmRsZXIiLCJvdXJFdmVudEhhbmRsZXIiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiIsInJlZnMiLCJub2RlIiwiZm9yRWFjaCIsInZhbHVlIiwiY3VycmVudCIsIiQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkYzdiMmNiZTM1NTJhMGQwNSIsIiQzdnFtciR1c2VDYWxsYmFjayIsIiRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEiLCJzY29wZU5hbWUiLCJjcmVhdGVDb250ZXh0U2NvcGVEZXBzIiwiZGVmYXVsdENvbnRleHRzIiwiY3JlYXRlU2NvcGUiLCJzY29wZUNvbnRleHRzIiwibWFwIiwiZGVmYXVsdENvbnRleHQiLCIkM2JrQUskY3JlYXRlQ29udGV4dCIsInNjb3BlIiwiY29udGV4dHMiLCIkM2JrQUskdXNlTWVtbyIsInJvb3RDb21wb25lbnROYW1lIiwiQmFzZUNvbnRleHQiLCJpbmRleCIsIlByb3ZpZGVyIiwiY29udGV4dCIsIkNvbnRleHQiLCJ2YWx1ZXMiLCIkM2JrQUskY3JlYXRlRWxlbWVudCIsImRpc3BsYXlOYW1lIiwiY29uc3VtZXJOYW1lIiwiJDNia0FLJHVzZUNvbnRleHQiLCJ1bmRlZmluZWQiLCJFcnJvciIsIiRjNTEyYzI3YWIwMmVmODk1JHZhciRjb21wb3NlQ29udGV4dFNjb3BlcyIsInNjb3BlcyIsImJhc2VTY29wZSIsImNyZWF0ZVNjb3BlMSIsInNjb3BlSG9va3MiLCJ1c2VTY29wZSIsIm92ZXJyaWRlU2NvcGVzIiwibmV4dFNjb3BlczEiLCJyZWR1Y2UiLCJuZXh0U2NvcGVzIiwiJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMiLCJCb29sZWFuIiwiZ2xvYmFsVGhpcyIsImRvY3VtZW50IiwiJGR4bHdIJHVzZUxheW91dEVmZmVjdCIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkIiwiJDJBT0R4JHJlYWN0IiwiJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50IiwiJDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzciLCJkZXRlcm1pbmlzdGljSWQiLCJpZCIsInNldElkIiwidXNlU3RhdGUiLCIkMkFPRHgkdXNlTGF5b3V0RWZmZWN0IiwicmVhY3RJZCIsIlN0cmluZyIsIiRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIiwiY2FsbGJhY2siLCJjYWxsYmFja1JlZiIsIiRsd2lXaiR1c2VSZWYiLCIkbHdpV2okdXNlRWZmZWN0IiwiJGx3aVdqJHVzZU1lbW8iLCJhcmdzIiwiX2NhbGxiYWNrUmVmJGN1cnJlbnQiLCIkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIiwicHJvcCIsImRlZmF1bHRQcm9wIiwib25DaGFuZ2UiLCJ1bmNvbnRyb2xsZWRQcm9wIiwic2V0VW5jb250cm9sbGVkUHJvcCIsInVuY29udHJvbGxlZFN0YXRlIiwiJGJuUHc5JHVzZVN0YXRlIiwicHJldlZhbHVlUmVmIiwiJGJuUHc5JHVzZVJlZiIsImhhbmRsZUNoYW5nZSIsIiRiblB3OSR1c2VDYWxsYmFja1JlZiIsIiRiblB3OSR1c2VFZmZlY3QiLCIkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZTEiLCIkYm5QdzkkdXNlQ2FsbGJhY2siLCJuZXh0VmFsdWUiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCIsIiQ5SXJqWCRmb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwic2xvdFByb3BzIiwiY2hpbGRyZW5BcnJheSIsIiQ5SXJqWCRDaGlsZHJlbiIsInRvQXJyYXkiLCJzbG90dGFibGUiLCJmaW5kIiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlIiwibmV3RWxlbWVudCIsIm5ld0NoaWxkcmVuIiwiY2hpbGQiLCJjb3VudCIsIm9ubHkiLCIkOUlyalgkaXNWYWxpZEVsZW1lbnQiLCIkOUlyalgkY3JlYXRlRWxlbWVudCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUiLCIkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOUlyalgkY2xvbmVFbGVtZW50IiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJG1lcmdlUHJvcHMiLCIkOUlyalgkY29tcG9zZVJlZnMiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSIsIiQ5SXJqWCRGcmFnbWVudCIsImNoaWxkUHJvcHMiLCJvdmVycmlkZVByb3BzIiwicHJvcE5hbWUiLCJzbG90UHJvcFZhbHVlIiwiY2hpbGRQcm9wVmFsdWUiLCJ0ZXN0IiwiZmlsdGVyIiwiJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQiLCJwcmltaXRpdmUiLCJOb2RlIiwiJDRxNUZxJGZvcndhcmRSZWYiLCJhc0NoaWxkIiwicHJpbWl0aXZlUHJvcHMiLCJDb21wIiwiJDRxNUZxJFNsb3QiLCIkNHE1RnEkdXNlRWZmZWN0IiwiU3ltYm9sIiwiZm9yIiwiJDRxNUZxJGNyZWF0ZUVsZW1lbnQiLCIkNHE1RnEkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRk9DVVNfT1VUU0lERSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0IiwiJGtxd3BIJGNyZWF0ZUNvbnRleHQiLCJsYXllcnMiLCJTZXQiLCJsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsImJyYW5jaGVzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIiLCIka3F3cEgkZm9yd2FyZFJlZiIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMiLCJvbkVzY2FwZUtleURvd24iLCJvblBvaW50ZXJEb3duT3V0c2lkZSIsIm9uRm9jdXNPdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJvbkRpc21pc3MiLCJsYXllclByb3BzIiwiJGtxd3BIJHVzZUNvbnRleHQiLCJub2RlMSIsInNldE5vZGUiLCIka3F3cEgkdXNlU3RhdGUiLCJvd25lckRvY3VtZW50IiwiZm9yY2UiLCJjb21wb3NlZFJlZnMiLCIka3F3cEgkdXNlQ29tcG9zZWRSZWZzIiwiZnJvbSIsImhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkIiwic2xpY2UiLCJoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4IiwiaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkIiwiaXNQb2ludGVyRXZlbnRzRW5hYmxlZCIsInBvaW50ZXJEb3duT3V0c2lkZSIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIiRrcXdwSCR1c2VDYWxsYmFja1JlZiIsImlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiIsIiRrcXdwSCR1c2VSZWYiLCJoYW5kbGVDbGlja1JlZiIsIiRrcXdwSCR1c2VFZmZlY3QiLCJoYW5kbGVQb2ludGVyRG93biIsImV2ZW50RGV0YWlsIiwib3JpZ2luYWxFdmVudCIsImhhbmRsZUFuZERpc3BhdGNoUG9pbnRlckRvd25PdXRzaWRlRXZlbnQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCIsImRpc2NyZXRlIiwicG9pbnRlclR5cGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJ0aW1lcklkIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uUG9pbnRlckRvd25DYXB0dXJlIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZSIsImlzUG9pbnRlckRvd25PbkJyYW5jaCIsInNvbWUiLCJicmFuY2giLCJjb250YWlucyIsImZvY3VzT3V0c2lkZSIsImhhbmRsZUZvY3VzT3V0c2lkZSIsImlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYiLCJoYW5kbGVGb2N1cyIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VGb2N1c091dHNpZGUiLCJvbkVzY2FwZUtleURvd25Qcm9wIiwiJGhQU1E1JHVzZUNhbGxiYWNrUmVmIiwiJGhQU1E1JHVzZUVmZmVjdCIsImhhbmRsZUtleURvd24iLCIka3F3cEgkdXNlRXNjYXBlS2V5ZG93biIsInByZXZlbnREZWZhdWx0IiwiYm9keSIsInN0eWxlIiwicG9pbnRlckV2ZW50cyIsImFkZCIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRkaXNwYXRjaFVwZGF0ZSIsImRlbGV0ZSIsImhhbmRsZVVwZGF0ZSIsIiRrcXdwSCRjcmVhdGVFbGVtZW50IiwiJGtxd3BIJFByaW1pdGl2ZSIsImRpdiIsIiRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRrcXdwSCRjb21wb3NlRXZlbnRIYW5kbGVycyIsIkN1c3RvbUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIm5hbWUiLCJoYW5kbGVyIiwiZGV0YWlsIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCIkNHE1RnEkZmx1c2hTeW5jIiwiJGtxd3BIJGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX1VOTU9VTlQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2IiwiJDQ1UUh2JGZvcndhcmRSZWYiLCJsb29wIiwidHJhcHBlZCIsIm9uTW91bnRBdXRvRm9jdXMiLCJvbk1vdW50QXV0b0ZvY3VzUHJvcCIsIm9uVW5tb3VudEF1dG9Gb2N1cyIsIm9uVW5tb3VudEF1dG9Gb2N1c1Byb3AiLCJzY29wZVByb3BzIiwiY29udGFpbmVyMSIsInNldENvbnRhaW5lciIsIiQ0NVFIdiR1c2VTdGF0ZSIsIiQ0NVFIdiR1c2VDYWxsYmFja1JlZiIsImxhc3RGb2N1c2VkRWxlbWVudFJlZiIsIiQ0NVFIdiR1c2VSZWYiLCIkNDVRSHYkdXNlQ29tcG9zZWRSZWZzIiwiZm9jdXNTY29wZSIsInBhdXNlZCIsInBhdXNlIiwicmVzdW1lIiwiJDQ1UUh2JHVzZUVmZmVjdCIsImhhbmRsZUZvY3VzSW4iLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMiLCJzZWxlY3QiLCJoYW5kbGVGb2N1c091dCIsInJlbGF0ZWRUYXJnZXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImZvY3VzZWRFbGVtZW50IiwiYWN0aXZlRWxlbWVudCIsIm11dGF0aW9uIiwicmVtb3ZlZE5vZGVzIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJkaXNjb25uZWN0IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2siLCJwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQiLCJtb3VudEV2ZW50IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c0ZpcnN0IiwiaXRlbXMiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzIiwiaXRlbSIsInRhZ05hbWUiLCJ1bm1vdW50RXZlbnQiLCJyZW1vdmUiLCIkNDVRSHYkdXNlQ2FsbGJhY2siLCJpc1RhYktleSIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5IiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImZpcnN0IiwibGFzdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZSIsInJldmVyc2UiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVFZGdlcyIsInNoaWZ0S2V5IiwiJDQ1UUh2JGNyZWF0ZUVsZW1lbnQiLCIkNDVRSHYkUHJpbWl0aXZlIiwiJDQ1UUh2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidGFiSW5kZXgiLCJvbktleURvd24iLCJub2RlcyIsIndhbGtlciIsImNyZWF0ZVRyZWVXYWxrZXIiLCJOb2RlRmlsdGVyIiwiU0hPV19FTEVNRU5UIiwiYWNjZXB0Tm9kZSIsImlzSGlkZGVuSW5wdXQiLCJoaWRkZW4iLCJGSUxURVJfU0tJUCIsIkZJTFRFUl9BQ0NFUFQiLCJuZXh0Tm9kZSIsImN1cnJlbnROb2RlIiwiZWxlbWVudHMiLCJlbGVtZW50IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzSGlkZGVuIiwidXBUbyIsImdldENvbXB1dGVkU3R5bGUiLCJ2aXNpYmlsaXR5IiwiZGlzcGxheSIsInBhcmVudEVsZW1lbnQiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJIVE1MSW5wdXRFbGVtZW50IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0Iiwic3RhY2siLCJhY3RpdmVGb2N1c1Njb3BlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlIiwidW5zaGlmdCIsIl9zdGFjayQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkY3JlYXRlRm9jdXNTY29wZXNTdGFjayIsImFycmF5IiwidXBkYXRlZEFycmF5Iiwic3BsaWNlIiwiJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkN1NYbDIkZm9yd2FyZFJlZiIsIl9nbG9iYWxUaGlzJGRvY3VtZW50IiwicG9ydGFsUHJvcHMiLCIkN1NYbDIkcmVhY3Rkb20iLCJjcmVhdGVQb3J0YWwiLCIkN1NYbDIkY3JlYXRlRWxlbWVudCIsIiQ3U1hsMiRQcmltaXRpdmUiLCIkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiIsInByZXNlbnQiLCJwcmVzZW5jZSIsIiRpcXEzciR1c2VTdGF0ZSIsInN0eWxlc1JlZiIsIiRpcXEzciR1c2VSZWYiLCJwcmV2UHJlc2VudFJlZiIsInByZXZBbmltYXRpb25OYW1lUmVmIiwiaW5pdGlhbFN0YXRlIiwic3RhdGUiLCJzZW5kIiwibWFjaGluZSIsIiRpcXEzciR1c2VSZWR1Y2VyIiwibmV4dFN0YXRlIiwiJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYiLCJtb3VudGVkIiwiVU5NT1VOVCIsIkFOSU1BVElPTl9PVVQiLCJ1bm1vdW50U3VzcGVuZGVkIiwiTU9VTlQiLCJBTklNQVRJT05fRU5EIiwidW5tb3VudGVkIiwiJGlxcTNyJHVzZUVmZmVjdCIsImN1cnJlbnRBbmltYXRpb25OYW1lIiwiJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUiLCIkaXFxM3IkdXNlTGF5b3V0RWZmZWN0Iiwid2FzUHJlc2VudCIsInByZXZBbmltYXRpb25OYW1lIiwiaGFuZGxlQW5pbWF0aW9uRW5kIiwiaXNDdXJyZW50QW5pbWF0aW9uIiwiYW5pbWF0aW9uTmFtZSIsIiRpcXEzciRmbHVzaFN5bmMiLCJoYW5kbGVBbmltYXRpb25TdGFydCIsImlzUHJlc2VudCIsIiRpcXEzciR1c2VDYWxsYmFjayIsIiQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZSIsIiRpcXEzciRDaGlsZHJlbiIsIiRpcXEzciR1c2VDb21wb3NlZFJlZnMiLCIkaXFxM3IkY2xvbmVFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMiLCIkMXdFcnokdXNlRWZmZWN0IiwiX2VkZ2VHdWFyZHMkIiwiX2VkZ2VHdWFyZHMkMiIsImVkZ2VHdWFyZHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQiLCJzZXRBdHRyaWJ1dGUiLCJjc3NUZXh0IiwiemVyb1JpZ2h0Q2xhc3NOYW1lIiwiZnVsbFdpZHRoQ2xhc3NOYW1lIiwidXNlTWVyZ2VSZWZzIiwiZGVmYXVsdFZhbHVlIiwiaW5pdGlhbFZhbHVlIiwibmV3VmFsdWUiLCJhc3NpZ25SZWYiLCJmYWNhZGUiLCJJdG9JIiwiYSIsIlNpZGVDYXIiLCJzaWRlQ2FyIiwicmVzdCIsIlRhcmdldCIsInJlYWQiLCJpc1NpZGVDYXJFeHBvcnQiLCJlZmZlY3RDYXIiLCJvcHRpb25zIiwibWVkaXVtIiwiZGVmYXVsdHMiLCJtaWRkbGV3YXJlIiwiYnVmZmVyIiwiYXNzaWduZWQiLCJ1c2VNZWRpdW0iLCJkYXRhIiwieCIsImFzc2lnblN5bmNNZWRpdW0iLCJjYiIsImNicyIsImFzc2lnbk1lZGl1bSIsInBlbmRpbmdRdWV1ZSIsImV4ZWN1dGVRdWV1ZSIsImN5Y2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiaW5uZXJDcmVhdGVNZWRpdW0iLCJhc3luYyIsInNzciIsImNyZWF0ZVNpZGVjYXJNZWRpdW0iLCJub3RoaW5nIiwiUmVtb3ZlU2Nyb2xsIiwicGFyZW50UmVmIiwidXNlUmVmIiwib25TY3JvbGxDYXB0dXJlIiwib25XaGVlbENhcHR1cmUiLCJvblRvdWNoTW92ZUNhcHR1cmUiLCJjYWxsYmFja3MiLCJzZXRDYWxsYmFja3MiLCJmb3J3YXJkUHJvcHMiLCJyZW1vdmVTY3JvbGxCYXIiLCJlbmFibGVkIiwic2hhcmRzIiwibm9Jc29sYXRpb24iLCJpbmVydCIsImFsbG93UGluY2hab29tIiwiYXMiLCJDb250YWluZXIiLCJjb250YWluZXJSZWYiLCJjb250YWluZXJQcm9wcyIsIkZyYWdtZW50IiwibG9ja1JlZiIsImNsb25lRWxlbWVudCIsIkNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJ1c2VNZW1vIiwicGFzc2l2ZVN1cHBvcnRlZCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiZXJyIiwibm9uUGFzc2l2ZSIsInBhc3NpdmUiLCJlbGVtZW50Q2FuQmVTY3JvbGxlZCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiYWx3YXlzQ29udGFpbnNTY3JvbGwiLCJsb2NhdGlvbkNvdWxkQmVTY3JvbGxlZCIsImF4aXMiLCJTaGFkb3dSb290IiwiaG9zdCIsImVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQiLCJnZXRTY3JvbGxWYXJpYWJsZXMiLCJlbGVtZW50Q291bGRCZVZTY3JvbGxlZCIsImVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsTGVmdCIsInNjcm9sbFdpZHRoIiwiZ2V0SFNjcm9sbFZhcmlhYmxlcyIsImdldFRvdWNoWFkiLCJjaGFuZ2VkVG91Y2hlcyIsImNsaWVudFgiLCJjbGllbnRZIiwiZ2V0RGVsdGFYWSIsImRlbHRhWCIsImRlbHRhWSIsImV4dHJhY3RSZWYiLCJnZW5lcmF0ZVN0eWxlIiwiaWRDb3VudGVyIiwibG9ja1N0YWNrIiwiZXhwb3J0ZWQiLCJzaG91bGRQcmV2ZW50UXVldWUiLCJ0b3VjaFN0YXJ0UmVmIiwiYWN0aXZlQXhpcyIsImxhc3RQcm9wcyIsImNsYXNzTGlzdCIsImFsbG93XzEiLCJ0byIsInBhY2siLCJhciIsImwiLCJfX3NwcmVhZEFycmF5IiwiZWwiLCJzaG91bGRDYW5jZWxFdmVudCIsInVzZUNhbGxiYWNrIiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJtYXJrZXJDb3VudGVyIiwiaGlkZGVuTm9kZXMiLCJlbGVtZW50c1RvS2VlcCIsImVsZW1lbnRzVG9TdG9wIiwia2VlcCIsImhhcyIsImRlZXAiLCJhdHRyIiwiZ2V0QXR0cmlidXRlIiwiYWxyZWFkeUhpZGRlbiIsImNvdW50ZXJWYWx1ZSIsIm1hcmtlclZhbHVlIiwic2V0IiwiY2xlYXIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJoaWRlT3RoZXJzIiwiYWN0aXZlUGFyZW50Tm9kZSIsImdldERlZmF1bHRQYXJlbnQiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIiwiJDY3VUhtJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQiLCJmb3JjZU1vdW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3IiwiJDY3VUhtJGZvcndhcmRSZWYiLCJwb3J0YWxDb250ZXh0IiwiX19zY29wZURpYWxvZyIsIm92ZXJsYXlQcm9wcyIsIm1vZGFsIiwiJDY3VUhtJGNyZWF0ZUVsZW1lbnQiLCIkNjdVSG0kUHJlc2VuY2UiLCJvcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsIiwiJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDY3VUhtJFJlbW92ZVNjcm9sbCIsIiQ2N1VIbSRTbG90IiwiY29udGVudFJlZiIsIiQ2N1VIbSRQcmltaXRpdmUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YiLCJjb250ZW50UHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCIsIiQ2N1VIbSR1c2VSZWYiLCIkNjdVSG0kdXNlQ29tcG9zZWRSZWZzIiwiJDY3VUhtJHVzZUVmZmVjdCIsImNvbnRlbnQiLCIkNjdVSG0kaGlkZU90aGVycyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCIsInRyYXBGb2N1cyIsIm9uQ2xvc2VBdXRvRm9jdXMiLCIkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMiLCJ0cmlnZ2VyUmVmIiwiY3RybExlZnRDbGljayIsImhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmIiwiaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmIiwiX3Byb3BzJG9uQ2xvc2VBdXRvRm9jIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjMiIsIl9wcm9wcyRvbkludGVyYWN0T3V0cyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzMiLCJvbk9wZW5BdXRvRm9jdXMiLCIkNjdVSG0kdXNlRm9jdXNHdWFyZHMiLCIkNjdVSG0kRnJhZ21lbnQiLCIkNjdVSG0kRm9jdXNTY29wZSIsIiQ2N1VIbSREaXNtaXNzYWJsZUxheWVyIiwicm9sZSIsImNvbnRlbnRJZCIsImRlc2NyaXB0aW9uSWQiLCJ0aXRsZUlkIiwib25PcGVuQ2hhbmdlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSIsInRpdGxlUHJvcHMiLCJoMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IiwiZGVzY3JpcHRpb25Qcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIiwiY2xvc2VQcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0IiwiJDY3VUhtJGNyZWF0ZUNvbnRleHQiLCJjb250ZW50TmFtZSIsInRpdGxlTmFtZSIsImRvY3NTbHVnIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJvcGVuUHJvcCIsImRlZmF1bHRPcGVuIiwic2V0T3BlbiIsIiQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ2N1VIbSR1c2VJZCIsIm9uT3BlblRvZ2dsZSIsIiQ2N1VIbSR1c2VDYWxsYmFjayIsInByZXZPcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkNjdVSG0kQ2hpbGRyZW4iLCIkNjdVSG0kUG9ydGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSIsIl9wYXRoIiwiU3ZnQ2xvc2UiLCJ4bWxucyIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIm1hc2tVbml0cyIsIm1hc2tUeXBlIiwiZCIsIm1hc2siLCJNb2RhbCIsInRpdGxlIiwiaGlkZUNsb3NlQnV0dG9uIiwiY29udGVudENsYXNzTmFtZSIsIm1heEhlaWdodCIsIkRpYWxvZy5Sb290IiwiRGlhbG9nLlBvcnRhbCIsIkRpYWxvZy5PdmVybGF5IiwiRGlhbG9nLkNvbnRlbnQiLCJEaWFsb2cuVGl0bGUiLCJEaWFsb2cuQ2xvc2UiLCJDbG9zZUljb24iLCIkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUiLCJDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIiwidXNlQ29sbGVjdGlvbkNvbnRleHQiLCJjb2xsZWN0aW9uUmVmIiwiaXRlbU1hcCIsIk1hcCIsIkNPTExFQ1RJT05fU0xPVF9OQU1FIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIiQ2dlloVSRyZWFjdCIsIlNsb3QiLCIkNnZZaFUkdXNlQ29tcG9zZWRSZWZzIiwiJDZ2WWhVJFNsb3QiLCJJdGVtU2xvdCIsIml0ZW1EYXRhIiwiY29sbGVjdGlvbk5vZGUiLCJvcmRlcmVkTm9kZXMiLCJzb3J0IiwiYiIsIiRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0IiwiJDdHamNkJGNyZWF0ZUNvbnRleHQiLCIkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyIsImxvY2FsRGlyIiwiZ2xvYmFsRGlyIiwiJDdHamNkJHVzZUNvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUiLCIkOThJeWUkY3JlYXRlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQiLCIkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgiLCIkOThJeWUkZm9yd2FyZFJlZiIsIiQ5OEl5ZSRjcmVhdGVFbGVtZW50IiwiX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwiLCIkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJvcmllbnRhdGlvbiIsImRpciIsImN1cnJlbnRUYWJTdG9wSWQiLCJjdXJyZW50VGFiU3RvcElkUHJvcCIsImRlZmF1bHRDdXJyZW50VGFiU3RvcElkIiwib25DdXJyZW50VGFiU3RvcElkQ2hhbmdlIiwib25FbnRyeUZvY3VzIiwiZ3JvdXBQcm9wcyIsIiQ5OEl5ZSR1c2VSZWYiLCIkOThJeWUkdXNlQ29tcG9zZWRSZWZzIiwiJDk4SXllJHVzZURpcmVjdGlvbiIsInNldEN1cnJlbnRUYWJTdG9wSWQiLCIkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJpc1RhYmJpbmdCYWNrT3V0Iiwic2V0SXNUYWJiaW5nQmFja091dCIsIiQ5OEl5ZSR1c2VTdGF0ZSIsImhhbmRsZUVudHJ5Rm9jdXMiLCIkOThJeWUkdXNlQ2FsbGJhY2tSZWYiLCJnZXRJdGVtcyIsImlzQ2xpY2tGb2N1c1JlZiIsImZvY3VzYWJsZUl0ZW1zQ291bnQiLCJzZXRGb2N1c2FibGVJdGVtc0NvdW50IiwiJDk4SXllJHVzZUVmZmVjdCIsIm9uSXRlbUZvY3VzIiwiJDk4SXllJHVzZUNhbGxiYWNrIiwidGFiU3RvcElkIiwib25JdGVtU2hpZnRUYWIiLCJvbkZvY3VzYWJsZUl0ZW1BZGQiLCJwcmV2Q291bnQiLCJvbkZvY3VzYWJsZUl0ZW1SZW1vdmUiLCIkOThJeWUkUHJpbWl0aXZlIiwib3V0bGluZSIsIm9uTW91c2VEb3duIiwiJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwib25Gb2N1cyIsImlzS2V5Ym9hcmRGb2N1cyIsImVudHJ5Rm9jdXNFdmVudCIsImZvY3VzYWJsZSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0IiwiYWN0aXZlIiwib25CbHVyIiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCIsIml0ZW1Qcm9wcyIsImF1dG9JZCIsIiQ5OEl5ZSR1c2VJZCIsImlzQ3VycmVudFRhYlN0b3AiLCJzcGFuIiwiZm9jdXNJbnRlbnQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQiLCJjYW5kaWRhdGVOb2RlcyIsImN1cnJlbnRJbmRleCIsInN0YXJ0SW5kZXgiLCJfIiwiQXJyb3dMZWZ0IiwiQXJyb3dVcCIsIkFycm93UmlnaHQiLCJBcnJvd0Rvd24iLCJQYWdlVXAiLCJIb21lIiwiUGFnZURvd24iLCJFbmQiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EiLCIkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQiLCJiYXNlSWQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZUNvbnRlbnRJZCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDFJSHprJGZvcndhcmRSZWYiLCJfX3Njb3BlVGFicyIsInZhbHVlUHJvcCIsIm9uVmFsdWVDaGFuZ2UiLCJhY3RpdmF0aW9uTW9kZSIsInRhYnNQcm9wcyIsIiQxSUh6ayR1c2VEaXJlY3Rpb24iLCJzZXRWYWx1ZSIsIiQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQxSUh6ayRjcmVhdGVFbGVtZW50IiwiJDFJSHprJHVzZUlkIiwiJDFJSHprJFByaW1pdGl2ZSIsIiQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IiwibGlzdFByb3BzIiwicm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJDFJSHprJFJvb3QiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsInRyaWdnZXJQcm9wcyIsInRyaWdnZXJJZCIsImlzU2VsZWN0ZWQiLCIkMUlIemskSXRlbSIsIiQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzQXV0b21hdGljQWN0aXZhdGlvbiIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiIsIiQxSUh6ayR1c2VSZWYiLCIkMUlIemskdXNlRWZmZWN0IiwickFGIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCIkMUlIemskUHJlc2VuY2UiLCJhbmltYXRpb25EdXJhdGlvbiIsIlRhYnNSb290IiwiVGFicy5Sb290IiwiVGFic0xpc3QiLCJUYWJzLkxpc3QiLCJUYWIiLCJUYWJzLlRyaWdnZXIiLCJUYWJzQ29udGVudCIsIlRhYnMuQ29udGVudCIsIiQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIiwiJDhMdnZLJHVzZVJlZiIsInByZXZpb3VzIiwiJDhMdnZLJHVzZU1lbW8iLCIkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCIsInNldFNpemUiLCIkOWd5R1IkdXNlU3RhdGUiLCIkOWd5R1IkdXNlTGF5b3V0RWZmZWN0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYm9yZGVyU2l6ZUVudHJ5IiwiYm9yZGVyU2l6ZSIsImJveCIsInVub2JzZXJ2ZSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMiLCIkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiIsIiRpclBJbCRmb3J3YXJkUmVmIiwiX19zY29wZVN3aXRjaCIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJzd2l0Y2hQcm9wcyIsInNldEJ1dHRvbiIsIiRpclBJbCR1c2VTdGF0ZSIsIiRpclBJbCR1c2VDb21wb3NlZFJlZnMiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsIiRpclBJbCR1c2VSZWYiLCJpc0Zvcm1Db250cm9sIiwiY2xvc2VzdCIsInNldENoZWNrZWQiLCIkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkaXJQSWwkY3JlYXRlRWxlbWVudCIsIiRpclBJbCRQcmltaXRpdmUiLCIkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUiLCIkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJwcmV2Q2hlY2tlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic3RvcFByb3BhZ2F0aW9uIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0IiwiY29udHJvbCIsInRyYW5zZm9ybSIsImlucHV0UHJvcHMiLCIkaXJQSWwkdXNlUHJldmlvdXMiLCJjb250cm9sU2l6ZSIsIiRpclBJbCR1c2VTaXplIiwiJGlyUElsJHVzZUVmZmVjdCIsImlucHV0IiwiaW5wdXRQcm90byIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkV2ZW50Iiwib3BhY2l0eSIsIm1hcmdpbiIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIiLCJ0aHVtYlByb3BzIiwiU3dpdGNoIiwiUmFkaXhTd2l0Y2guUm9vdCIsIlJhZGl4U3dpdGNoLlRodW1iIiwiZ2V0QWxpZ25tZW50IiwicGxhY2VtZW50Iiwic3BsaXQiLCJnZXRMZW5ndGhGcm9tQXhpcyIsImdldFNpZGUiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJydGwiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJjb21tb25BbGlnbiIsImlzVmVydGljYWwiLCJjb29yZHMiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nIiwicGFkZGluZyIsImJvdHRvbSIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImRldGVjdE92ZXJmbG93IiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwicGxhdGZvcm0iLCJyZWN0cyIsInN0cmF0ZWd5IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImlzRWxlbWVudCIsImNvbnRleHRFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJnZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJtaW4iLCJ3aXRoaW4iLCJtaW4kMSIsIm1heCQxIiwiYXJyb3ciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXREaW1lbnNpb25zIiwiaXNZQXhpcyIsIm1pblByb3AiLCJtYXhQcm9wIiwiY2xpZW50UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImxhcmdlc3RQb3NzaWJsZVBhZGRpbmciLCJtaW5QYWRkaW5nIiwibWF4UGFkZGluZyIsImNlbnRlciIsIm9mZnNldCIsInNob3VsZEFkZE9mZnNldCIsImNlbnRlck9mZnNldCIsInNpZGVzIiwib3Bwb3NpdGVTaWRlTWFwIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJyZXBsYWNlIiwic2lkZSIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwic3RhcnQiLCJlbmQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJfbWlkZGxld2FyZURhdGEkZmxpcCIsIm1pZGRsZXdhcmVEYXRhIiwiaW5pdGlhbFBsYWNlbWVudCIsImNoZWNrTWFpbkF4aXMiLCJjcm9zc0F4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImZhbGxiYWNrUGxhY2VtZW50cyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrU3RyYXRlZ3kiLCJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwiZmxpcEFsaWdubWVudCIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsImlzQmFzZVBsYWNlbWVudCIsImlzUlRMIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZFBsYWNlbWVudHMiLCJsaXN0IiwiaXNTdGFydCIsImxyIiwicmwiLCJ0YiIsImJ0IiwiZ2V0U2lkZUxpc3QiLCJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIm92ZXJmbG93cyIsIm92ZXJmbG93c0RhdGEiLCJtYWluIiwiY3Jvc3MiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldEFsaWdubWVudFNpZGVzIiwiZXZlcnkiLCJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCJuZXh0SW5kZXgiLCJuZXh0UGxhY2VtZW50IiwicmVzZXQiLCJyZXNldFBsYWNlbWVudCIsIl9vdmVyZmxvd3NEYXRhJG1hcCRzbyIsImFjYyIsImdldFNpZGVPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwiaGlkZSIsInJlZmVyZW5jZUhpZGRlbk9mZnNldHMiLCJyZWZlcmVuY2VIaWRkZW4iLCJlc2NhcGVkT2Zmc2V0cyIsImVzY2FwZWQiLCJkaWZmQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJhbGlnbm1lbnRBeGlzIiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJnZXRDcm9zc0F4aXMiLCJzaGlmdCIsImxpbWl0ZXIiLCJmbiIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwibGltaXRTaGlmdCIsInJhd09mZnNldCIsImNvbXB1dGVkT2Zmc2V0IiwibGVuIiwibGltaXRNaW4iLCJsaW1pdE1heCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZTIiLCJpc09yaWdpblNpZGUiLCJpc1hBeGlzIiwiaGVpZ2h0U2lkZSIsIndpZHRoU2lkZSIsIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0Iiwib3ZlcmZsb3dBdmFpbGFibGVXaWR0aCIsIm5vU2hpZnQiLCJhdmFpbGFibGVIZWlnaHQiLCJhdmFpbGFibGVXaWR0aCIsIm1heGltdW1DbGlwcGluZ1dpZHRoIiwibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsIm5leHREaW1lbnNpb25zIiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJnZXRDb21wdXRlZFN0eWxlJDEiLCJpc05vZGUiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJpc1RhYmxlRWxlbWVudCIsImlzQ29udGFpbmluZ0Jsb2NrIiwic2FmYXJpIiwiaXNTYWZhcmkiLCJwZXJzcGVjdGl2ZSIsImJhY2tkcm9wRmlsdGVyIiwid2lsbENoYW5nZSIsImNvbnRhaW4iLCJDU1MiLCJzdXBwb3J0cyIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsInJvdW5kIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInBhcnNlRmxvYXQiLCJoYXNPZmZzZXQiLCJzaG91bGRGYWxsYmFjayIsImZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsIkZBTExCQUNLX1NDQUxFIiwiZG9tRWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIk51bWJlciIsImlzRmluaXRlIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsIl93aW4kdmlzdWFsVmlld3BvcnQiLCJfd2luJHZpc3VhbFZpZXdwb3J0MiIsIndpbiIsInZpc3VhbFZpZXdwb3J0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50SUZyYW1lIiwiZnJhbWVFbGVtZW50IiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwiY2xpZW50TGVmdCIsInBhZGRpbmdMZWZ0IiwiY2xpZW50VG9wIiwicGFkZGluZ1RvcCIsImdldE5vZGVTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldFBhcmVudE5vZGUiLCJyZXN1bHQiLCJhc3NpZ25lZFNsb3QiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImh0bWwiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0Vmlld3BvcnRSZWN0Iiwic2Nyb2xsIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsImdldENvbnRhaW5pbmdCbG9jayIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImdldENsaWVudFJlY3RzIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJhbmNlc3RvcnMiLCJpc1Zpc3VhbFZpZXdwb3J0IiwiZnJhbWVJZCIsIm9ic2VydmVyIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9vYnNlcnZlciIsImNvbXB1dGVQb3NpdGlvbiIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbmZpZyIsInZhbGlkTWlkZGxld2FyZSIsImdldEVsZW1lbnRSZWN0cyIsInN0YXRlZnVsUGxhY2VtZW50IiwicmVzZXRDb3VudCIsIm5leHRYIiwibmV4dFkiLCJjb21wdXRlUG9zaXRpb24kMSIsImFycm93JDEiLCJ1c2VMYXlvdXRFZmZlY3QiLCJkZWVwRXF1YWwiLCJrZXlzIiwiJCR0eXBlb2YiLCJnZXREUFIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRCeURQUiIsImRwciIsInVzZUxhdGVzdFJlZiIsIiQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGpibkV4JGZvcndhcmRSZWYiLCJhcnJvd1Byb3BzIiwiJGpibkV4JGNyZWF0ZUVsZW1lbnQiLCIkamJuRXgkUHJpbWl0aXZlIiwic3ZnIiwiJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwb2ludHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyIsIiRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQiLCIka1k5M1YkZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BwZXIiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCIka1k5M1YkdXNlUmVmIiwiJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyIsIiRrWTkzViR1c2VFZmZlY3QiLCJvbkFuY2hvckNoYW5nZSIsIiRrWTkzViRjcmVhdGVFbGVtZW50IiwiJGtZOTNWJFByaW1pdGl2ZSIsIiRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyIsIl9hcnJvd1NpemUkd2lkdGgiLCJfYXJyb3dTaXplJGhlaWdodCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzIiLCJfbWlkZGxld2FyZURhdGEkYXJyb3czIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zMiIsIl9taWRkbGV3YXJlRGF0YSRoaWRlIiwic2lkZU9mZnNldCIsImFsaWduIiwiYWxpZ25PZmZzZXQiLCJhcnJvd1BhZGRpbmciLCJjb2xsaXNpb25Cb3VuZGFyeSIsImNvbGxpc2lvblBhZGRpbmciLCJjb2xsaXNpb25QYWRkaW5nUHJvcCIsInN0aWNreSIsImhpZGVXaGVuRGV0YWNoZWQiLCJhdm9pZENvbGxpc2lvbnMiLCJvblBsYWNlZCIsInNldENvbnRlbnQiLCIka1k5M1YkdXNlU3RhdGUiLCJzZXRBcnJvdyIsImFycm93U2l6ZSIsIiRrWTkzViR1c2VTaXplIiwiYXJyb3dXaWR0aCIsImFycm93SGVpZ2h0IiwiZGVzaXJlZFBsYWNlbWVudCIsImhhc0V4cGxpY2l0Qm91bmRhcmllcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwiLCJmbG9hdGluZ1N0eWxlcyIsImlzUG9zaXRpb25lZCIsImV4dGVybmFsUmVmZXJlbmNlIiwiZXh0ZXJuYWxGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwic2V0RGF0YSIsImxhdGVzdE1pZGRsZXdhcmUiLCJzZXRMYXRlc3RNaWRkbGV3YXJlIiwiX3JlZmVyZW5jZSIsIl9zZXRSZWZlcmVuY2UiLCJfZmxvYXRpbmciLCJfc2V0RmxvYXRpbmciLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VSZWYiLCJzZXRGbG9hdGluZyIsImZsb2F0aW5nUmVmIiwicmVmZXJlbmNlRWwiLCJmbG9hdGluZ0VsIiwiZGF0YVJlZiIsIndoaWxlRWxlbWVudHNNb3VudGVkUmVmIiwicGxhdGZvcm1SZWYiLCJmdWxsRGF0YSIsImlzTW91bnRlZFJlZiIsIlJlYWN0RE9NIiwiZmx1c2hTeW5jIiwiaW5pdGlhbFN0eWxlcyIsIiRrWTkzViR1c2VGbG9hdGluZyIsIiRrWTkzViRhdXRvVXBkYXRlIiwiYW5jaG9yIiwiJGtZOTNWJG9mZnNldCIsIiRrWTkzViRzaGlmdCIsIiRrWTkzViRsaW1pdFNoaWZ0IiwiJGtZOTNWJGZsaXAiLCIka1k5M1Ykc2l6ZSIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwic2V0UHJvcGVydHkiLCIka1k5M1YkYXJyb3ciLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luIiwiJGtZOTNWJGhpZGUiLCJwbGFjZWRTaWRlIiwicGxhY2VkQWxpZ24iLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudCIsImhhbmRsZVBsYWNlZCIsIiRrWTkzViR1c2VDYWxsYmFja1JlZiIsIiRrWTkzViR1c2VMYXlvdXRFZmZlY3QiLCJhcnJvd1giLCJhcnJvd1kiLCJjYW5ub3RDZW50ZXJBcnJvdyIsImNvbnRlbnRaSW5kZXgiLCJzZXRDb250ZW50WkluZGV4IiwiekluZGV4IiwibWluV2lkdGgiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJvbkFycm93Q2hhbmdlIiwic2hvdWxkSGlkZUFycm93IiwiYW5pbWF0aW9uIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c0IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzYiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c3IiwiX21pZGRsZXdhcmVEYXRhJGFycm93OCIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJhcnJvd1hDZW50ZXIiLCJhcnJvd1lDZW50ZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEFuY2hvciIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCIka1k5M1YkUm9vdCIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IiwiJGtWd253JGZvcndhcmRSZWYiLCIka1Z3bnckY3JlYXRlRWxlbWVudCIsIiRrVndudyRQcmltaXRpdmUiLCIka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJib3JkZXIiLCJjbGlwIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSIsIiQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQiLCIkOHdlcEskZm9yd2FyZFJlZiIsIl9fc2NvcGVUb29sdGlwIiwicHJvdmlkZXJDb250ZXh0IiwicG9wcGVyU2NvcGUiLCIkOHdlcEskdXNlQ29tcG9zZWRSZWZzIiwiJDh3ZXBLJHVzZVJlZiIsIm9uVHJpZ2dlckNoYW5nZSIsImlzUG9pbnRlckRvd25SZWYiLCJoYXNQb2ludGVyTW92ZU9wZW5lZFJlZiIsImhhbmRsZVBvaW50ZXJVcCIsIiQ4d2VwSyR1c2VDYWxsYmFjayIsIiQ4d2VwSyR1c2VFZmZlY3QiLCIkOHdlcEskY3JlYXRlRWxlbWVudCIsIiQ4d2VwSyRBbmNob3IiLCIkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOHdlcEskUHJpbWl0aXZlIiwic3RhdGVBdHRyaWJ1dGUiLCJvblBvaW50ZXJNb3ZlIiwiJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNQb2ludGVySW5UcmFuc2l0UmVmIiwib25UcmlnZ2VyRW50ZXIiLCJvblBvaW50ZXJMZWF2ZSIsIm9uVHJpZ2dlckxlYXZlIiwib25Qb2ludGVyRG93biIsIm9uT3BlbiIsIm9uQ2xvc2UiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUG9ydGFsUHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9ydGFsQ29udGV4dCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZTkwMDNlMmJlMzdlYzA2MCIsIiQ4d2VwSyRQcmVzZW5jZSIsImRpc2FibGVIb3ZlcmFibGVDb250ZW50IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSIsInBvaW50ZXJHcmFjZUFyZWEiLCJzZXRQb2ludGVyR3JhY2VBcmVhIiwiJDh3ZXBLJHVzZVN0YXRlIiwidHJpZ2dlciIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJhcmlhTGFiZWwiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIlRvb2x0aXAiLCJUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyIiwiVG9vbHRpcFByaW1pdGl2ZS5Sb290IiwiVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyIiwiVG9vbHRpcFByaW1pdGl2ZS5Db250ZW50IiwiVG9vbHRpcFByaW1pdGl2ZS5BcnJvdyIsIiRhZTY5MzNlNTM1MjQ3ZDNkJGV4cG9ydCQ3ZDE1YjY0Y2Y1YTNhNGM0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RJT05fS0VZUyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlIiwiJDAxYjljJGNyZWF0ZUNvbGxlY3Rpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIiwiJDAxYjljJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQwMWI5YyRjcmVhdGVQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdE5hdGl2ZU9wdGlvbnNQcm92aWRlciIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEiLCIkMDFiOWMkZm9yd2FyZFJlZiIsIl9fc2NvcGVTZWxlY3QiLCJpc0Rpc2FibGVkIiwiJDAxYjljJHVzZUNvbXBvc2VkUmVmcyIsInNlYXJjaFJlZiIsImhhbmRsZVR5cGVhaGVhZFNlYXJjaCIsInJlc2V0VHlwZWFoZWFkIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCIsInNlYXJjaCIsImVuYWJsZWRJdGVtcyIsImN1cnJlbnRJdGVtIiwibmV4dEl0ZW0iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkZmluZE5leHRJdGVtIiwiJDAxYjljJGNyZWF0ZUVsZW1lbnQiLCIkMDFiOWMkQW5jaG9yIiwiJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDAxYjljJFByaW1pdGl2ZSIsIiQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyIsImhhc1BvaW50ZXJDYXB0dXJlIiwicG9pbnRlcklkIiwicmVsZWFzZVBvaW50ZXJDYXB0dXJlIiwidHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmIiwicGFnZVgiLCJwYWdlWSIsImlzVHlwaW5nQWhlYWQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCIsInBsYWNlaG9sZGVyIiwidmFsdWVQcm9wcyIsIm9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UiLCJoYXNDaGlsZHJlbiIsIm9uVmFsdWVOb2RlQ2hhbmdlIiwiJDAxYjljJHVzZUxheW91dEVmZmVjdCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IiwiaWNvblByb3BzIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRjOTczYTRiM2NiODZhMDNkIiwiZnJhZ21lbnQiLCJzZXRGcmFnbWVudCIsIiQwMWI5YyR1c2VTdGF0ZSIsIkRvY3VtZW50RnJhZ21lbnQiLCJmcmFnIiwiJDAxYjljJGNyZWF0ZVBvcnRhbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQiLCJ2aWV3cG9ydCIsInNldFZpZXdwb3J0Iiwic2VsZWN0ZWRJdGVtIiwic2V0U2VsZWN0ZWRJdGVtIiwic2VsZWN0ZWRJdGVtVGV4dCIsInNldFNlbGVjdGVkSXRlbVRleHQiLCJzZXRJc1Bvc2l0aW9uZWQiLCJmaXJzdFZhbGlkSXRlbUZvdW5kUmVmIiwiJDAxYjljJHVzZVJlZiIsIiQwMWI5YyR1c2VFZmZlY3QiLCIkMDFiOWMkaGlkZU90aGVycyIsIiQwMWI5YyR1c2VGb2N1c0d1YXJkcyIsImZvY3VzRmlyc3QiLCIkMDFiOWMkdXNlQ2FsbGJhY2siLCJmaXJzdEl0ZW0iLCJyZXN0SXRlbXMiLCJsYXN0SXRlbSIsInNjcm9sbEludG9WaWV3IiwiYmxvY2siLCJmb2N1c1NlbGVjdGVkSXRlbSIsInBvaW50ZXJNb3ZlRGVsdGEiLCJoYW5kbGVQb2ludGVyTW92ZSIsIl90cmlnZ2VyUG9pbnRlckRvd25QbyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzIiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8zIiwiX3RyaWdnZXJQb2ludGVyRG93blBvNCIsImNsb3NlIiwiaXRlbVJlZkNhbGxiYWNrIiwiaXNGaXJzdFZhbGlkSXRlbSIsImhhbmRsZUl0ZW1MZWF2ZSIsIml0ZW1UZXh0UmVmQ2FsbGJhY2siLCJTZWxlY3RQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uIiwicG9wcGVyQ29udGVudFByb3BzIiwib25WaWV3cG9ydENoYW5nZSIsIm9uSXRlbUxlYXZlIiwiJDAxYjljJFNsb3QiLCIkMDFiOWMkRm9jdXNTY29wZSIsIl9jb250ZXh0JHRyaWdnZXIiLCIkMDFiOWMkRGlzbWlzc2FibGVMYXllciIsIm9uQ29udGV4dE1lbnUiLCJmbGV4RGlyZWN0aW9uIiwiaXNNb2RpZmllcktleSIsImN1cnJlbnRFbGVtZW50IiwicG9wcGVyUHJvcHMiLCJjb250ZW50V3JhcHBlciIsInNldENvbnRlbnRXcmFwcGVyIiwic2hvdWxkRXhwYW5kT25TY3JvbGxSZWYiLCJzaG91bGRSZXBvc2l0aW9uUmVmIiwidmFsdWVOb2RlIiwidHJpZ2dlclJlY3QiLCJjb250ZW50UmVjdCIsInZhbHVlTm9kZVJlY3QiLCJpdGVtVGV4dFJlY3QiLCJpdGVtVGV4dE9mZnNldCIsImxlZnREZWx0YSIsIm1pbkNvbnRlbnRXaWR0aCIsImNvbnRlbnRXaWR0aCIsInJpZ2h0RWRnZSIsImNsYW1wZWRMZWZ0IiwiJDAxYjljJGNsYW1wIiwicmlnaHREZWx0YSIsImxlZnRFZGdlIiwiY2xhbXBlZFJpZ2h0IiwiaW5uZXJIZWlnaHQiLCJpdGVtc0hlaWdodCIsImNvbnRlbnRTdHlsZXMiLCJjb250ZW50Qm9yZGVyVG9wV2lkdGgiLCJib3JkZXJUb3BXaWR0aCIsImNvbnRlbnRQYWRkaW5nVG9wIiwiY29udGVudEJvcmRlckJvdHRvbVdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJmdWxsQ29udGVudEhlaWdodCIsInBhZGRpbmdCb3R0b20iLCJtaW5Db250ZW50SGVpZ2h0Iiwidmlld3BvcnRTdHlsZXMiLCJ2aWV3cG9ydFBhZGRpbmdUb3AiLCJ2aWV3cG9ydFBhZGRpbmdCb3R0b20iLCJ0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlIiwidHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSIsInNlbGVjdGVkSXRlbUhhbGZIZWlnaHQiLCJjb250ZW50VG9wVG9JdGVtTWlkZGxlIiwiaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSIsImlzTGFzdEl0ZW0iLCJ2aWV3cG9ydE9mZnNldEJvdHRvbSIsImlzRmlyc3RJdGVtIiwibWluSGVpZ2h0IiwiaGFuZGxlU2Nyb2xsQnV0dG9uQ2hhbmdlIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFZpZXdwb3J0UHJvdmlkZXIiLCJvblNjcm9sbEJ1dHRvbkNoYW5nZSIsImJveFNpemluZyIsIiQwMWI5YyRDb250ZW50IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQiLCJ2aWV3cG9ydFByb3BzIiwidmlld3BvcnRDb250ZXh0IiwicHJldlNjcm9sbFRvcFJlZiIsIiQwMWI5YyRGcmFnbWVudCIsImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MIiwiX19odG1sIiwiZmxleCIsIm9uU2Nyb2xsIiwic2Nyb2xsZWRCeSIsImNzc01pbkhlaWdodCIsImNzc0hlaWdodCIsInByZXZIZWlnaHQiLCJuZXh0SGVpZ2h0IiwiY2xhbXBlZE5leHRIZWlnaHQiLCJoZWlnaHREaWZmIiwianVzdGlmeUNvbnRlbnQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdEl0ZW1Db250ZXh0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiIsInRleHRWYWx1ZSIsInRleHRWYWx1ZVByb3AiLCJzZXRUZXh0VmFsdWUiLCJpc0ZvY3VzZWQiLCJzZXRJc0ZvY3VzZWQiLCJfY29udGVudENvbnRleHQkaXRlbVIiLCJ0ZXh0SWQiLCIkMDFiOWMkdXNlSWQiLCJoYW5kbGVTZWxlY3QiLCJvbkl0ZW1UZXh0Q2hhbmdlIiwicHJldlRleHRWYWx1ZSIsIl9ub2RlJHRleHRDb250ZW50IiwidGV4dENvbnRlbnQiLCJ0cmltIiwib25Qb2ludGVyVXAiLCJfY29udGVudENvbnRleHQkb25JdGUiLCJfY29udGVudENvbnRleHQkb25JdGUyIiwiX2NvbnRlbnRDb250ZXh0JHNlYXJjIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkiLCJpdGVtVGV4dFByb3BzIiwiaXRlbUNvbnRleHQiLCJuYXRpdmVPcHRpb25zQ29udGV4dCIsIml0ZW1UZXh0Tm9kZSIsInNldEl0ZW1UZXh0Tm9kZSIsIl9jb250ZW50Q29udGV4dCRpdGVtVCIsIm5hdGl2ZU9wdGlvbiIsIiQwMWI5YyR1c2VNZW1vIiwib25OYXRpdmVPcHRpb25BZGQiLCJvbk5hdGl2ZU9wdGlvblJlbW92ZSIsInZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IiwiY2FuU2Nyb2xsVXAxIiwic2V0Q2FuU2Nyb2xsVXAiLCJjYW5TY3JvbGxVcCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsIiwib25BdXRvU2Nyb2xsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSIsImNhblNjcm9sbERvd24xIiwic2V0Q2FuU2Nyb2xsRG93biIsIm1heFNjcm9sbCIsImNhblNjcm9sbERvd24iLCJjZWlsIiwic2Nyb2xsSW5kaWNhdG9yUHJvcHMiLCJhdXRvU2Nyb2xsVGltZXJSZWYiLCJjbGVhckF1dG9TY3JvbGxUaW1lciIsImNsZWFySW50ZXJ2YWwiLCJfYWN0aXZlSXRlbSRyZWYkY3VycmUiLCJhY3RpdmVJdGVtIiwiZmxleFNocmluayIsInNldEludGVydmFsIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRCdWJibGVTZWxlY3QiLCJzZWxlY3RQcm9wcyIsInByZXZWYWx1ZSIsIiQwMWI5YyR1c2VQcmV2aW91cyIsInNlbGVjdFByb3RvIiwiSFRNTFNlbGVjdEVsZW1lbnQiLCIkMDFiOWMkVmlzdWFsbHlIaWRkZW4iLCJvblNlYXJjaENoYW5nZSIsImhhbmRsZVNlYXJjaENoYW5nZSIsIiQwMWI5YyR1c2VDYWxsYmFja1JlZiIsInRpbWVyUmVmIiwidXBkYXRlU2VhcmNoIiwibm9ybWFsaXplZFNlYXJjaCIsImNoYXIiLCJjdXJyZW50SXRlbUluZGV4Iiwid3JhcHBlZEl0ZW1zIiwidiIsInN0YXJ0c1dpdGgiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsImF1dG9Db21wbGV0ZSIsInNldFZhbHVlTm9kZSIsInNldFZhbHVlTm9kZUhhc0NoaWxkcmVuIiwiJDAxYjljJHVzZURpcmVjdGlvbiIsIiQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIm5hdGl2ZU9wdGlvbnNTZXQiLCJzZXROYXRpdmVPcHRpb25zU2V0IiwibmF0aXZlU2VsZWN0S2V5Iiwib3B0aW9uIiwiJDAxYjljJFJvb3QiLCJwcmV2Iiwib3B0aW9uc1NldCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ2ZTViZjljNDNlYTkzMTkiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMmY2MGQzZWM5YWQ0NjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIiwiU3ZnS2V5Ym9hcmRBcnJvd0Rvd24iLCJTZWxlY3QiLCJpY29uIiwiU2VsZWN0UHJpbWl0aXZlLlJvb3QiLCJTZWxlY3RQcmltaXRpdmUuVHJpZ2dlciIsIlNlbGVjdFByaW1pdGl2ZS5WYWx1ZSIsIlNlbGVjdFByaW1pdGl2ZS5JY29uIiwiQXJyb3dEb3duSWNvbiIsIlNlbGVjdFByaW1pdGl2ZS5Db250ZW50IiwiU2VsZWN0UHJpbWl0aXZlLlZpZXdwb3J0IiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbFVwQnV0dG9uIiwiU2VsZWN0UHJpbWl0aXZlLlNjcm9sbERvd25CdXR0b24iLCJTZWxlY3RJdGVtIiwiU2VsZWN0UHJpbWl0aXZlLkl0ZW0iLCJTZWxlY3RJdGVtVGV4dCIsIlNlbGVjdFByaW1pdGl2ZS5JdGVtVGV4dCIsIiRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDdWNEpaJGZvcndhcmRSZWYiLCIkN1Y0SlokY3JlYXRlRWxlbWVudCIsIiQ3VjRKWiRQcmltaXRpdmUiLCJsYWJlbCIsIiQ3VjRKWiRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIl9wcm9wcyRvbk1vdXNlRG93biIsIkxhYmVsIiwiaHRtbEZvciIsIlJlZHV4TGFiZWwuUm9vdCIsIkZvcm1Hcm91cCIsImp1c3RpZnkiLCJhbGlnbkl0ZW1zIiwiZm9ybUdyb3VwIiwiaG9yaXpvbnRhbCIsInZlcnRpY2FsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFBST0dSRVNTX05BTUUiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVgiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDM4OGViMmQ4ZjZkMzI2MWYiLCIkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJFByb2dyZXNzUHJvdmlkZXIiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkdXNlUHJvZ3Jlc3NDb250ZXh0IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGIyNWEzMDRlYzdkNzQ2YmIiLCIkazAzd0kkZm9yd2FyZFJlZiIsIl9fc2NvcGVQcm9ncmVzcyIsImdldFZhbHVlTGFiZWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwiLCJwcm9ncmVzc1Byb3BzIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyIiwidmFsdWVMYWJlbCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlciIsIiRrMDN3SSRjcmVhdGVFbGVtZW50IiwiJGswM3dJJFByaW1pdGl2ZSIsIiRrMDN3SSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlIiwicHJvcFR5cGVzIiwiY29tcG9uZW50TmFtZSIsInByb3BWYWx1ZSIsInN0clZhbCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IiLCJtYXhWYWx1ZSIsImlzTmFOIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYWRiNTg0NzM3ZDcxMmI3MCIsIl9jb250ZXh0JHZhbHVlIiwiaW5kaWNhdG9yUHJvcHMiLCJQcm9ncmVzcyIsInByb2dyZXNzIiwiUHJvZ3Jlc3NQcmltaXRpdmUuUm9vdCIsIlByb2dyZXNzUHJpbWl0aXZlLkluZGljYXRvciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRjcmVhdGVBbGVydERpYWxvZ0NvbnRleHQiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjg4OTE4ODA3NTFjMmM1YiIsIiQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGUiLCIkNGs0RDAkY3JlYXRlRGlhbG9nU2NvcGUiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NiIsIiQ0azREMCRmb3J3YXJkUmVmIiwiX19zY29wZUFsZXJ0RGlhbG9nIiwiZGlhbG9nU2NvcGUiLCIkNGs0RDAkY3JlYXRlRWxlbWVudCIsIiQ0azREMCRPdmVybGF5IiwiJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRBbGVydERpYWxvZ0NvbnRlbnRQcm92aWRlciIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VBbGVydERpYWxvZ0NvbnRlbnRDb250ZXh0IiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQiLCIkNGs0RDAkdXNlQ29tcG9zZWRSZWZzIiwiJDRrNEQwJHVzZVJlZiIsImNhbmNlbFJlZiIsIiQ0azREMCRXYXJuaW5nUHJvdmlkZXIiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRSIsIiQ0azREMCRDb250ZW50IiwiJDRrNEQwJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiX2NhbmNlbFJlZiRjdXJyZW50IiwiJDRrNEQwJFNsb3R0YWJsZSIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyMjVlMGRhNjJkMzE0YjciLCIkNGs0RDAkVGl0bGUiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSIsIiQ0azREMCREZXNjcmlwdGlvbiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiYWxlcnREaWFsb2dQcm9wcyIsIiQ0azREMCRSb290IiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkNGs0RDAkUG9ydGFsIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRlMTljZDVmOTM3NmY4Y2VlIiwiYWN0aW9uUHJvcHMiLCIkNGs0RDAkQ2xvc2UiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkODQ4YzliN2VhZDBkZjk2NyIsImNhbmNlbFByb3BzIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMzkzZWRjNzk4YzQ3Mzc5ZCIsIkFsZXJ0IiwiYWN0aW9uVGV4dCIsIm9uQWN0aW9uQ2xpY2siLCJjYW5jZWxUZXh0Iiwib25DYW5jZWxDbGljayIsImRlc2NyaXB0aW9uIiwiQWxlcnREaWFsb2cuUm9vdCIsIkFsZXJ0RGlhbG9nLlBvcnRhbCIsInBvcnRhbCIsIkFsZXJ0RGlhbG9nLk92ZXJsYXkiLCJvdmVybGF5IiwiQWxlcnREaWFsb2cuQ29udGVudCIsIkFsZXJ0RGlhbG9nLlRpdGxlIiwiQWxlcnREaWFsb2cuRGVzY3JpcHRpb24iLCJidXR0b25zIiwiQWxlcnREaWFsb2cuQ2FuY2VsIiwiQWxlcnREaWFsb2cuQWN0aW9uIl0sIm1hcHBpbmdzIjoieVhBK0JPLElBQUlBLEVBQVcsV0FRbEIsT0FQQUEsRUFBV0MsT0FBT0MsUUFBVSxTQUFrQkMsR0FDMUMsSUFBSyxJQUFJQyxFQUFHQyxFQUFJLEVBQUdDLEVBQUlDLFVBQVVDLE9BQVFILEVBQUlDLEVBQUdELElBRTVDLElBQUssSUFBSUksS0FEVEwsRUFBSUcsVUFBVUYsR0FDT0osT0FBT1MsVUFBVUMsZUFBZUMsS0FBS1IsRUFBR0ssS0FBSU4sRUFBRU0sR0FBS0wsRUFBRUssSUFFOUUsT0FBT04sQ0FDVixFQUNNSCxFQUFTYSxNQUFNQyxLQUFNUCxVQUNoQyxFQUVPLFNBQVNRLEVBQU9YLEVBQUdZLEdBQ3RCLElBQUliLEVBQUksQ0FBQSxFQUNSLElBQUssSUFBSU0sS0FBS0wsRUFBT0gsT0FBT1MsVUFBVUMsZUFBZUMsS0FBS1IsRUFBR0ssSUFBTU8sRUFBRUMsUUFBUVIsR0FBSyxJQUM5RU4sRUFBRU0sR0FB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QixLQUNKL29CLEVBQWlCdkIsRUFBQW03RCxXQUFqQkEsT0FBVSxJQUFBNTVELEVBQUcsS0FBSUEsRUFDakI2NUQsa0JBQ0FsN0QsRUFBQUYsRUFBQXE3RCxXQUFBQSxPQUFhLElBQUFuN0QsRUFBQSxTQUFRQSxFQUNyQm83RCxFQUFhdDdELEVBQUFzN0QsY0FDYjdyQyxFQUFLenZCLEVBQUF5dkIsTUFDTG52QixFQUFnQk4sRUFBQXU3RCxZQUFoQkEsT0FBVyxJQUFBajdELEVBQUcsR0FBRUEsRUFFaEIsT0FDRVIsRUFBQTBCLGNBQUNnNkQsR0FBZ0IsQ0FBQ2x4QyxLQUFNQSxFQUFNd0MsYUFBY0EsR0FDMUNodEIsRUFBQzBCLGNBQUFpNkQsR0FBa0IsQ0FBQ3g2RCxVQUFXSSxHQUFPcTZELFFBQ3BDNTdELEVBQUMwQixjQUFBbTZELEdBQW1CLENBQUMxNkQsVUFBV0ksR0FBT3U2RCxVQUN2Qzk3RCxFQUFDMEIsY0FBQXE2RCxHQUFtQixDQUFDNTZELFVBQVdJLEdBQU9pcUIsU0FDckN4ckIsRUFBQTBCLGNBQUEsU0FBQSxDQUNFUCxVQUFXSSxHQUFPcW5ELE1BQ2xCcm9ELFFBQVMsV0FBTSxPQUFBeXNCLEdBQWEsRUFBYixnQkFDSCxnQkFDWmh0QixFQUFDMEIsY0FBQTJ1QixVQUVIcndCLEVBQUMwQixjQUFBczZELEdBQWtCLENBQUE3NkQsVUFBV0ksR0FBT291QixPQUFRQSxHQUM1QzhyQyxHQUNDejdELEVBQUMwQixjQUFBdTZELEdBQXVCLENBQUM5NkQsVUFBV0ksR0FBT2s2RCxhQUN4Q0EsR0FHTHo3RCxFQUFBMEIsY0FBQSxNQUFBLENBQUtQLFVBQVdJLEdBQU8yNkQsU0FDckJsOEQsRUFBQTBCLGNBQUN5NkQsR0FBa0IsQ0FBQ3J5RCxTQUFPLEdBQ3pCOUosRUFBQTBCLGNBQUMzQixFQUFNLENBQUNRLFFBQVNpN0QsRUFBZTc2RCxRQUFRLFdBQ3JDNDZELElBR0x2N0QsRUFBQTBCLGNBQUMwNkQsR0FBa0IsQ0FBQ3R5RCxTQUFPLEdBQ3pCOUosRUFBQTBCLGNBQUMzQixFQUFPLENBQUFRLFFBQVMrNkQsRUFBZTM2RCxRQUFRLFVBQ3JDMDZELE9BUWpCIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMSwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQyLDQzLDQ0LDQ1LDQ3LDQ4LDQ5LDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU5LDYwLDg1LDg4LDkwXX0=
|
|
6
|
+
*/O=C,function(){var e={}.hasOwnProperty;function t(){for(var n=[],r=0;r<arguments.length;r++){var o=arguments[r];if(o){var a=typeof o;if("string"===a||"number"===a)n.push(o);else if(Array.isArray(o)){if(o.length){var i=t.apply(null,o);i&&n.push(i)}}else if("object"===a){if(o.toString!==Object.prototype.toString&&!o.toString.toString().includes("[native code]")){n.push(o.toString());continue}for(var l in o)e.call(o,l)&&o[l]&&n.push(l)}}}return n.join(" ")}O.exports?(t.default=t,O.exports=t):window.classNames=t}();var D=E(C.exports),T={button:"Button-modules_button__tpJr3",secondary:"Button-modules_secondary__JGOIF",outline:"Button-modules_outline__R9gjd",danger:"Button-modules_danger__eTzli",small:"Button-modules_small__dNTOw",large:"Button-modules_large__5tvgy",prefix:"Button-modules_prefix__86hpR",suffix:"Button-modules_suffix__5uHiO",fullWidth:"Button-modules_fullWidth__3ET8J"},k=t.forwardRef((function(e,n){var r,o=e.disabled,a=void 0!==o&&o,i=e.children,l=e.onClick,c=e.size,s=void 0===c?"medium":c,u=e.variant,d=void 0===u?"primary":u,f=e.type,p=void 0===f?"button":f,m=e.prefix,v=void 0===m?"":m,h=e.suffix,g=void 0===h?"":h,y=e.className,w=void 0===y?"":y,b=e.fullWidth,E=void 0!==b&&b,O=x(e,["disabled","children","onClick","size","variant","type","prefix","suffix","className","fullWidth"]);return t.createElement("button",_({ref:n,type:p,disabled:a,className:D(T.button,(r={},r[w]=w,r[T[s]]=s,r[T[d]]=d,r[T.fullWidth]=E,r)),onClick:l},O),v&&t.createElement("span",{className:T.prefix},v),i,g&&t.createElement("span",{className:T.suffix},g))}));function S(){return S=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},S.apply(this,arguments)}function A(e,t,{checkForDefaultPrevented:n=!0}={}){return function(r){if(null==e||e(r),!1===n||!r.defaultPrevented)return null==t?void 0:t(r)}}function P(...e){return t=>e.forEach((e=>function(e,t){"function"==typeof e?e(t):null!=e&&(e.current=t)}(e,t)))}function M(...e){return n(P(...e),e)}function I(e,t=[]){let n=[];const l=()=>{const t=n.map((e=>r(e)));return function(n){const r=(null==n?void 0:n[e])||t;return o((()=>({[`__scope${e}`]:{...n,[e]:r}})),[n,r])}};return l.scopeName=e,[function(t,l){const c=r(l),s=n.length;function u(t){const{scope:n,children:r,...i}=t,l=(null==n?void 0:n[e][s])||c,u=o((()=>i),Object.values(i));return a(l.Provider,{value:u},r)}return n=[...n,l],u.displayName=t+"Provider",[u,function(n,r){const o=(null==r?void 0:r[e][s])||c,a=i(o);if(a)return a;if(void 0!==l)return l;throw new Error(`\`${n}\` must be used within \`${t}\``)}]},L(l,...t)]}function L(...e){const t=e[0];if(1===e.length)return t;const n=()=>{const n=e.map((e=>({useScope:e(),scopeName:e.scopeName})));return function(e){const r=n.reduce(((t,{useScope:n,scopeName:r})=>({...t,...n(e)[`__scope${r}`]})),{});return o((()=>({[`__scope${t.scopeName}`]:r})),[r])}};return n.scopeName=t.scopeName,n}const N=Boolean(null===globalThis||void 0===globalThis?void 0:globalThis.document)?l:()=>{},R=e["useId".toString()]||(()=>{});let H=0;function j(t){const[n,r]=e.useState(R());return N((()=>{t||r((e=>null!=e?e:String(H++)))}),[t]),t||(n?`radix-${n}`:"")}function Z(e){const t=c(e);return s((()=>{t.current=e})),o((()=>(...e)=>{var n;return null===(n=t.current)||void 0===n?void 0:n.call(t,...e)}),[])}function F({prop:e,defaultProp:t,onChange:r=(()=>{})}){const[o,a]=function({defaultProp:e,onChange:t}){const n=u(e),[r]=n,o=c(r),a=Z(t);return s((()=>{o.current!==r&&(a(r),o.current=r)}),[r,o,a]),n}({defaultProp:t,onChange:r}),i=void 0!==e,l=i?e:o,d=Z(r);return[l,n((t=>{if(i){const n="function"==typeof t?t(e):t;n!==e&&d(n)}else a(t)}),[i,e,a,d])]}const U=d(((e,t)=>{const{children:n,...r}=e,o=f.toArray(n),i=o.find(W);if(i){const e=i.props.children,n=o.map((t=>t===i?f.count(e)>1?f.only(null):p(e)?e.props.children:null:t));return a(B,S({},r,{ref:t}),p(e)?m(e,void 0,n):null)}return a(B,S({},r,{ref:t}),n)}));U.displayName="Slot";const B=d(((e,t)=>{const{children:n,...r}=e;return p(n)?m(n,{...z(r,n.props),ref:t?P(t,n.ref):n.ref}):f.count(n)>1?f.only(null):null}));B.displayName="SlotClone";const V=({children:e})=>a(v,null,e);function W(e){return p(e)&&e.type===V}function z(e,t){const n={...t};for(const r in t){const o=e[r],a=t[r];/^on[A-Z]/.test(r)?o&&a?n[r]=(...e)=>{a(...e),o(...e)}:o&&(n[r]=o):"style"===r?n[r]={...o,...a}:"className"===r&&(n[r]=[o,a].filter(Boolean).join(" "))}return{...e,...n}}const K=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","span","svg","ul"].reduce(((e,t)=>{const n=d(((e,n)=>{const{asChild:r,...o}=e,i=r?U:t;return s((()=>{window[Symbol.for("radix-ui")]=!0}),[]),a(i,S({},o,{ref:n}))}));return n.displayName=`Primitive.${t}`,{...e,[t]:n}}),{});const $="dismissableLayer.update",q="dismissableLayer.pointerDownOutside",G="dismissableLayer.focusOutside";let X;const Y=r({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),J=d(((e,t)=>{var n;const{disableOutsidePointerEvents:r=!1,onEscapeKeyDown:o,onPointerDownOutside:l,onFocusOutside:d,onInteractOutside:f,onDismiss:p,...m}=e,v=i(Y),[h,g]=u(null),y=null!==(n=null==h?void 0:h.ownerDocument)&&void 0!==n?n:null===globalThis||void 0===globalThis?void 0:globalThis.document,[,w]=u({}),b=M(t,(e=>g(e))),_=Array.from(v.layers),[x]=[...v.layersWithOutsidePointerEventsDisabled].slice(-1),E=_.indexOf(x),O=h?_.indexOf(h):-1,C=v.layersWithOutsidePointerEventsDisabled.size>0,D=O>=E,T=function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e),r=c(!1),o=c((()=>{}));return s((()=>{const e=e=>{if(e.target&&!r.current){const i={originalEvent:e};function a(){ee(q,n,i,{discrete:!0})}"touch"===e.pointerType?(t.removeEventListener("click",o.current),o.current=a,t.addEventListener("click",o.current,{once:!0})):a()}r.current=!1},a=window.setTimeout((()=>{t.addEventListener("pointerdown",e)}),0);return()=>{window.clearTimeout(a),t.removeEventListener("pointerdown",e),t.removeEventListener("click",o.current)}}),[t,n]),{onPointerDownCapture:()=>r.current=!0}}((e=>{const t=e.target,n=[...v.branches].some((e=>e.contains(t)));D&&!n&&(null==l||l(e),null==f||f(e),e.defaultPrevented||null==p||p())}),y),k=function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e),r=c(!1);return s((()=>{const e=e=>{if(e.target&&!r.current){ee(G,n,{originalEvent:e},{discrete:!1})}};return t.addEventListener("focusin",e),()=>t.removeEventListener("focusin",e)}),[t,n]),{onFocusCapture:()=>r.current=!0,onBlurCapture:()=>r.current=!1}}((e=>{const t=e.target;[...v.branches].some((e=>e.contains(t)))||(null==d||d(e),null==f||f(e),e.defaultPrevented||null==p||p())}),y);return function(e,t=(null===globalThis||void 0===globalThis?void 0:globalThis.document)){const n=Z(e);s((()=>{const e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e),()=>t.removeEventListener("keydown",e)}),[n,t])}((e=>{O===v.layers.size-1&&(null==o||o(e),!e.defaultPrevented&&p&&(e.preventDefault(),p()))}),y),s((()=>{if(h)return r&&(0===v.layersWithOutsidePointerEventsDisabled.size&&(X=y.body.style.pointerEvents,y.body.style.pointerEvents="none"),v.layersWithOutsidePointerEventsDisabled.add(h)),v.layers.add(h),Q(),()=>{r&&1===v.layersWithOutsidePointerEventsDisabled.size&&(y.body.style.pointerEvents=X)}}),[h,y,r,v]),s((()=>()=>{h&&(v.layers.delete(h),v.layersWithOutsidePointerEventsDisabled.delete(h),Q())}),[h,v]),s((()=>{const e=()=>w({});return document.addEventListener($,e),()=>document.removeEventListener($,e)}),[]),a(K.div,S({},m,{ref:b,style:{pointerEvents:C?D?"auto":"none":void 0,...e.style},onFocusCapture:A(e.onFocusCapture,k.onFocusCapture),onBlurCapture:A(e.onBlurCapture,k.onBlurCapture),onPointerDownCapture:A(e.onPointerDownCapture,T.onPointerDownCapture)}))}));function Q(){const e=new CustomEvent($);document.dispatchEvent(e)}function ee(e,t,n,{discrete:r}){const o=n.originalEvent.target,a=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),r?function(e,t){e&&w((()=>e.dispatchEvent(t)))}(o,a):o.dispatchEvent(a)}const te="focusScope.autoFocusOnMount",ne="focusScope.autoFocusOnUnmount",re={bubbles:!1,cancelable:!0},oe=d(((e,t)=>{const{loop:r=!1,trapped:o=!1,onMountAutoFocus:i,onUnmountAutoFocus:l,...d}=e,[f,p]=u(null),m=Z(i),v=Z(l),h=c(null),g=M(t,(e=>p(e))),y=c({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;s((()=>{if(o){function e(e){if(y.paused||!f)return;const t=e.target;f.contains(t)?h.current=t:ce(h.current,{select:!0})}function t(e){if(y.paused||!f)return;const t=e.relatedTarget;null!==t&&(f.contains(t)||ce(h.current,{select:!0}))}document.addEventListener("focusin",e),document.addEventListener("focusout",t);const n=new MutationObserver((function(e){const t=document.activeElement;for(const n of e)n.removedNodes.length>0&&(null!=f&&f.contains(t)||ce(f))}));return f&&n.observe(f,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}}),[o,f,y.paused]),s((()=>{if(f){se.add(y);const t=document.activeElement;if(!f.contains(t)){const n=new CustomEvent(te,re);f.addEventListener(te,m),f.dispatchEvent(n),n.defaultPrevented||(!function(e,{select:t=!1}={}){const n=document.activeElement;for(const r of e)if(ce(r,{select:t}),document.activeElement!==n)return}((e=ae(f),e.filter((e=>"A"!==e.tagName))),{select:!0}),document.activeElement===t&&ce(f))}return()=>{f.removeEventListener(te,m),setTimeout((()=>{const e=new CustomEvent(ne,re);f.addEventListener(ne,v),f.dispatchEvent(e),e.defaultPrevented||ce(null!=t?t:document.body,{select:!0}),f.removeEventListener(ne,v),se.remove(y)}),0)}}var e}),[f,m,v,y]);const w=n((e=>{if(!r&&!o)return;if(y.paused)return;const t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,n=document.activeElement;if(t&&n){const t=e.currentTarget,[o,a]=function(e){const t=ae(e),n=ie(t,e),r=ie(t.reverse(),e);return[n,r]}(t);o&&a?e.shiftKey||n!==a?e.shiftKey&&n===o&&(e.preventDefault(),r&&ce(a,{select:!0})):(e.preventDefault(),r&&ce(o,{select:!0})):n===t&&e.preventDefault()}}),[r,o,y.paused]);return a(K.div,S({tabIndex:-1},d,{ref:g,onKeyDown:w}))}));function ae(e){const t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{const t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ie(e,t){for(const n of e)if(!le(n,{upTo:t}))return n}function le(e,{upTo:t}){if("hidden"===getComputedStyle(e).visibility)return!0;for(;e;){if(void 0!==t&&e===t)return!1;if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}function ce(e,{select:t=!1}={}){if(e&&e.focus){const n=document.activeElement;e.focus({preventScroll:!0}),e!==n&&function(e){return e instanceof HTMLInputElement&&"select"in e}(e)&&t&&e.select()}}const se=function(){let e=[];return{add(t){const n=e[0];t!==n&&(null==n||n.pause()),e=ue(e,t),e.unshift(t)},remove(t){var n;e=ue(e,t),null===(n=e[0])||void 0===n||n.resume()}}}();function ue(e,t){const n=[...e],r=n.indexOf(t);return-1!==r&&n.splice(r,1),n}const de=d(((e,t)=>{var n;const{container:r=(null===globalThis||void 0===globalThis||null===(n=globalThis.document)||void 0===n?void 0:n.body),...o}=e;return r?y.createPortal(a(K.div,S({},o,{ref:t})),r):null}));const fe=e=>{const{present:t,children:r}=e,o=function(e){const[t,r]=u(),o=c({}),a=c(e),i=c("none"),l=e?"mounted":"unmounted",[d,f]=function(e,t){return h(((e,n)=>{const r=t[e][n];return null!=r?r:e}),e)}(l,{mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}});return s((()=>{const e=pe(o.current);i.current="mounted"===d?e:"none"}),[d]),N((()=>{const t=o.current,n=a.current;if(n!==e){const r=i.current,o=pe(t);if(e)f("MOUNT");else if("none"===o||"none"===(null==t?void 0:t.display))f("UNMOUNT");else{f(n&&r!==o?"ANIMATION_OUT":"UNMOUNT")}a.current=e}}),[e,f]),N((()=>{if(t){const e=e=>{const n=pe(o.current).includes(e.animationName);e.target===t&&n&&w((()=>f("ANIMATION_END")))},n=e=>{e.target===t&&(i.current=pe(o.current))};return t.addEventListener("animationstart",n),t.addEventListener("animationcancel",e),t.addEventListener("animationend",e),()=>{t.removeEventListener("animationstart",n),t.removeEventListener("animationcancel",e),t.removeEventListener("animationend",e)}}f("ANIMATION_END")}),[t,f]),{isPresent:["mounted","unmountSuspended"].includes(d),ref:n((e=>{e&&(o.current=getComputedStyle(e)),r(e)}),[])}}(t),a="function"==typeof r?r({present:o.isPresent}):f.only(r),i=M(o.ref,a.ref);return"function"==typeof r||o.isPresent?m(a,{ref:i}):null};function pe(e){return(null==e?void 0:e.animationName)||"none"}fe.displayName="Presence";let me=0;function ve(){s((()=>{var e,t;const n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!==(e=n[0])&&void 0!==e?e:he()),document.body.insertAdjacentElement("beforeend",null!==(t=n[1])&&void 0!==t?t:he()),me++,()=>{1===me&&document.querySelectorAll("[data-radix-focus-guard]").forEach((e=>e.remove())),me--}}),[])}function he(){const e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.cssText="outline: none; opacity: 0; position: fixed; pointer-events: none",e}var ge="right-scroll-bar-position",ye="width-before-scroll-bar";function we(e,t){return n=t||null,r=function(t){return e.forEach((function(e){return function(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}(e,t)}))},(o=u((function(){return{value:n,callback:r,facade:{get current(){return o.value},set current(e){var t=o.value;t!==e&&(o.value=e,o.callback(e,t))}}}}))[0]).callback=r,o.facade;var n,r,o}function be(e){return e}var _e=function(t){var n=t.sideCar,r=x(t,["sideCar"]);if(!n)throw new Error("Sidecar: please provide `sideCar` property to import the right car");var o=n.read();if(!o)throw new Error("Sidecar medium not found");return e.createElement(o,_({},r))};_e.isSideCarExport=!0;var xe=function(e){void 0===e&&(e={});var t=function(e,t){void 0===t&&(t=be);var n=[],r=!1;return{read:function(){if(r)throw new Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return n.length?n[n.length-1]:e},useMedium:function(e){var o=t(e,r);return n.push(o),function(){n=n.filter((function(e){return e!==o}))}},assignSyncMedium:function(e){for(r=!0;n.length;){var t=n;n=[],t.forEach(e)}n={push:function(t){return e(t)},filter:function(){return n}}},assignMedium:function(e){r=!0;var t=[];if(n.length){var o=n;n=[],o.forEach(e),t=n}var a=function(){var n=t;t=[],n.forEach(e)},i=function(){return Promise.resolve().then(a)};i(),n={push:function(e){t.push(e),i()},filter:function(e){return t=t.filter(e),n}}}}}(null);return t.options=_({async:!0,ssr:!1},e),t}(),Ee=function(){},Oe=e.forwardRef((function(t,n){var r=e.useRef(null),o=e.useState({onScrollCapture:Ee,onWheelCapture:Ee,onTouchMoveCapture:Ee}),a=o[0],i=o[1],l=t.forwardProps,c=t.children,s=t.className,u=t.removeScrollBar,d=t.enabled,f=t.shards,p=t.sideCar,m=t.noIsolation,v=t.inert,h=t.allowPinchZoom,g=t.as,y=void 0===g?"div":g,w=x(t,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as"]),b=p,E=we([r,n]),O=_(_({},w),a);return e.createElement(e.Fragment,null,d&&e.createElement(b,{sideCar:xe,removeScrollBar:u,shards:f,noIsolation:m,inert:v,setCallbacks:i,allowPinchZoom:!!h,lockRef:r}),l?e.cloneElement(e.Children.only(c),_(_({},O),{ref:E})):e.createElement(y,_({},O,{className:s,ref:E}),c))}));Oe.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},Oe.classNames={fullWidth:ye,zeroRight:ge};function Ce(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=function(){if("undefined"!=typeof __webpack_nonce__)return __webpack_nonce__}();return t&&e.setAttribute("nonce",t),e}var De=function(){var e=0,t=null;return{add:function(n){var r,o;0==e&&(t=Ce())&&(o=n,(r=t).styleSheet?r.styleSheet.cssText=o:r.appendChild(document.createTextNode(o)),function(e){(document.head||document.getElementsByTagName("head")[0]).appendChild(e)}(t)),e++},remove:function(){!--e&&t&&(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},Te=function(){var t,n=(t=De(),function(n,r){e.useEffect((function(){return t.add(n),function(){t.remove()}}),[n&&r])});return function(e){var t=e.styles,r=e.dynamic;return n(t,r),null}},ke={left:0,top:0,right:0,gap:0},Se=function(e){return parseInt(e||"",10)||0},Ae=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return ke;var t=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[Se(n),Se(r),Se(o)]}(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},Pe=Te(),Me=function(e,t,n,r){var o=e.left,a=e.top,i=e.right,l=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(l,"px ").concat(r,";\n }\n body {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(i,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(l,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(l,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(ge," {\n right: ").concat(l,"px ").concat(r,";\n }\n \n .").concat(ye," {\n margin-right: ").concat(l,"px ").concat(r,";\n }\n \n .").concat(ge," .").concat(ge," {\n right: 0 ").concat(r,";\n }\n \n .").concat(ye," .").concat(ye," {\n margin-right: 0 ").concat(r,";\n }\n \n body {\n ").concat("--removed-body-scroll-bar-size",": ").concat(l,"px;\n }\n")},Ie=function(t){var n=t.noRelative,r=t.noImportant,o=t.gapMode,a=void 0===o?"margin":o,i=e.useMemo((function(){return Ae(a)}),[a]);return e.createElement(Pe,{styles:Me(i,!n,a,r?"":"!important")})},Le=!1;if("undefined"!=typeof window)try{var Ne=Object.defineProperty({},"passive",{get:function(){return Le=!0,!0}});window.addEventListener("test",Ne,Ne),window.removeEventListener("test",Ne,Ne)}catch(e){Le=!1}var Re=!!Le&&{passive:!1},He=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&!function(e){return"TEXTAREA"===e.tagName}(e)&&"visible"===n[t])},je=function(e,t){var n=t;do{if("undefined"!=typeof ShadowRoot&&n instanceof ShadowRoot&&(n=n.host),Ze(e,n)){var r=Fe(e,n);if(r[1]>r[2])return!0}n=n.parentNode}while(n&&n!==document.body);return!1},Ze=function(e,t){return"v"===e?function(e){return He(e,"overflowY")}(t):function(e){return He(e,"overflowX")}(t)},Fe=function(e,t){return"v"===e?[(n=t).scrollTop,n.scrollHeight,n.clientHeight]:function(e){return[e.scrollLeft,e.scrollWidth,e.clientWidth]}(t);var n},Ue=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},Be=function(e){return[e.deltaX,e.deltaY]},Ve=function(e){return e&&"current"in e?e.current:e},We=function(e){return"\n .block-interactivity-".concat(e," {pointer-events: none;}\n .allow-interactivity-").concat(e," {pointer-events: all;}\n")},ze=0,Ke=[];var $e,qe=($e=function(t){var n=e.useRef([]),r=e.useRef([0,0]),o=e.useRef(),a=e.useState(ze++)[0],i=e.useState((function(){return Te()}))[0],l=e.useRef(t);e.useEffect((function(){l.current=t}),[t]),e.useEffect((function(){if(t.inert){document.body.classList.add("block-interactivity-".concat(a));var e=function(e,t,n){if(n||2===arguments.length)for(var r,o=0,a=t.length;o<a;o++)!r&&o in t||(r||(r=Array.prototype.slice.call(t,0,o)),r[o]=t[o]);return e.concat(r||Array.prototype.slice.call(t))}([t.lockRef.current],(t.shards||[]).map(Ve),!0).filter(Boolean);return e.forEach((function(e){return e.classList.add("allow-interactivity-".concat(a))})),function(){document.body.classList.remove("block-interactivity-".concat(a)),e.forEach((function(e){return e.classList.remove("allow-interactivity-".concat(a))}))}}}),[t.inert,t.lockRef.current,t.shards]);var c=e.useCallback((function(e,t){if("touches"in e&&2===e.touches.length)return!l.current.allowPinchZoom;var n,a=Ue(e),i=r.current,c="deltaX"in e?e.deltaX:i[0]-a[0],s="deltaY"in e?e.deltaY:i[1]-a[1],u=e.target,d=Math.abs(c)>Math.abs(s)?"h":"v";if("touches"in e&&"h"===d&&"range"===u.type)return!1;var f=je(d,u);if(!f)return!0;if(f?n=d:(n="v"===d?"h":"v",f=je(d,u)),!f)return!1;if(!o.current&&"changedTouches"in e&&(c||s)&&(o.current=n),!n)return!0;var p=o.current||n;return function(e,t,n,r,o){var a=function(e,t){return"h"===e&&"rtl"===t?-1:1}(e,window.getComputedStyle(t).direction),i=a*r,l=n.target,c=t.contains(l),s=!1,u=i>0,d=0,f=0;do{var p=Fe(e,l),m=p[0],v=p[1]-p[2]-a*m;(m||v)&&Ze(e,l)&&(d+=v,f+=m),l=l.parentNode}while(!c&&l!==document.body||c&&(t.contains(l)||t===l));return(u&&(o&&0===d||!o&&i>d)||!u&&(o&&0===f||!o&&-i>f))&&(s=!0),s}(p,t,e,"h"===p?c:s,!0)}),[]),s=e.useCallback((function(e){var t=e;if(Ke.length&&Ke[Ke.length-1]===i){var r="deltaY"in t?Be(t):Ue(t),o=n.current.filter((function(e){return e.name===t.type&&e.target===t.target&&(n=e.delta,o=r,n[0]===o[0]&&n[1]===o[1]);var n,o}))[0];if(o&&o.should)t.cancelable&&t.preventDefault();else if(!o){var a=(l.current.shards||[]).map(Ve).filter(Boolean).filter((function(e){return e.contains(t.target)}));(a.length>0?c(t,a[0]):!l.current.noIsolation)&&t.cancelable&&t.preventDefault()}}}),[]),u=e.useCallback((function(e,t,r,o){var a={name:e,delta:t,target:r,should:o};n.current.push(a),setTimeout((function(){n.current=n.current.filter((function(e){return e!==a}))}),1)}),[]),d=e.useCallback((function(e){r.current=Ue(e),o.current=void 0}),[]),f=e.useCallback((function(e){u(e.type,Be(e),e.target,c(e,t.lockRef.current))}),[]),p=e.useCallback((function(e){u(e.type,Ue(e),e.target,c(e,t.lockRef.current))}),[]);e.useEffect((function(){return Ke.push(i),t.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:p}),document.addEventListener("wheel",s,Re),document.addEventListener("touchmove",s,Re),document.addEventListener("touchstart",d,Re),function(){Ke=Ke.filter((function(e){return e!==i})),document.removeEventListener("wheel",s,Re),document.removeEventListener("touchmove",s,Re),document.removeEventListener("touchstart",d,Re)}}),[]);var m=t.removeScrollBar,v=t.inert;return e.createElement(e.Fragment,null,v?e.createElement(i,{styles:We(a)}):null,m?e.createElement(Ie,{gapMode:"margin"}):null)},xe.useMedium($e),_e),Ge=e.forwardRef((function(t,n){return e.createElement(Oe,_({},t,{ref:n,sideCar:qe}))}));Ge.classNames=Oe.classNames;var Xe=Ge,Ye=new WeakMap,Je=new WeakMap,Qe={},et=0,tt=function(e){return e&&(e.host||tt(e.parentNode))},nt=function(e,t,n,r){var o=function(e,t){return t.map((function(t){if(e.contains(t))return t;var n=tt(t);return n&&e.contains(n)?n:(console.error("aria-hidden",t,"in not contained inside",e,". Doing nothing"),null)})).filter((function(e){return Boolean(e)}))}(t,Array.isArray(e)?e:[e]);Qe[n]||(Qe[n]=new WeakMap);var a=Qe[n],i=[],l=new Set,c=new Set(o),s=function(e){e&&!l.has(e)&&(l.add(e),s(e.parentNode))};o.forEach(s);var u=function(e){e&&!c.has(e)&&Array.prototype.forEach.call(e.children,(function(e){if(l.has(e))u(e);else{var t=e.getAttribute(r),o=null!==t&&"false"!==t,c=(Ye.get(e)||0)+1,s=(a.get(e)||0)+1;Ye.set(e,c),a.set(e,s),i.push(e),1===c&&o&&Je.set(e,!0),1===s&&e.setAttribute(n,"true"),o||e.setAttribute(r,"true")}}))};return u(t),l.clear(),et++,function(){i.forEach((function(e){var t=Ye.get(e)-1,o=a.get(e)-1;Ye.set(e,t),a.set(e,o),t||(Je.has(e)||e.removeAttribute(r),Je.delete(e)),o||e.removeAttribute(n)})),--et||(Ye=new WeakMap,Ye=new WeakMap,Je=new WeakMap,Qe={})}},rt=function(e,t,n){void 0===n&&(n="data-aria-hidden");var r=Array.from(Array.isArray(e)?e:[e]),o=t||function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body}(e);return o?(r.push.apply(r,Array.from(o.querySelectorAll("[aria-live]"))),nt(r,o,n,"aria-hidden")):function(){return null}};const ot="Dialog",[at,it]=I(ot),[lt,ct]=at(ot),st="DialogPortal",[ut,dt]=at(st,{forceMount:void 0}),ft="DialogOverlay",pt=d(((e,t)=>{const n=dt(ft,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=ct(ft,e.__scopeDialog);return i.modal?a(fe,{present:r||i.open},a(mt,S({},o,{ref:t}))):null})),mt=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct(ft,n);return a(Xe,{as:U,allowPinchZoom:!0,shards:[o.contentRef]},a(K.div,S({"data-state":Ot(o.open)},r,{ref:t,style:{pointerEvents:"auto",...r.style}})))})),vt="DialogContent",ht=d(((e,t)=>{const n=dt(vt,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,i=ct(vt,e.__scopeDialog);return a(fe,{present:r||i.open},i.modal?a(gt,S({},o,{ref:t})):a(yt,S({},o,{ref:t})))})),gt=d(((e,t)=>{const n=ct(vt,e.__scopeDialog),r=c(null),o=M(t,n.contentRef,r);return s((()=>{const e=r.current;if(e)return rt(e)}),[]),a(wt,S({},e,{ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:A(e.onCloseAutoFocus,(e=>{var t;e.preventDefault(),null===(t=n.triggerRef.current)||void 0===t||t.focus()})),onPointerDownOutside:A(e.onPointerDownOutside,(e=>{const t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()})),onFocusOutside:A(e.onFocusOutside,(e=>e.preventDefault()))}))})),yt=d(((e,t)=>{const n=ct(vt,e.__scopeDialog),r=c(!1),o=c(!1);return a(wt,S({},e,{ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var a,i;(null===(a=e.onCloseAutoFocus)||void 0===a||a.call(e,t),t.defaultPrevented)||(r.current||null===(i=n.triggerRef.current)||void 0===i||i.focus(),t.preventDefault());r.current=!1,o.current=!1},onInteractOutside:t=>{var a,i;null===(a=e.onInteractOutside)||void 0===a||a.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(o.current=!0));const l=t.target;(null===(i=n.triggerRef.current)||void 0===i?void 0:i.contains(l))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&o.current&&t.preventDefault()}}))})),wt=d(((e,t)=>{const{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:i,...l}=e,s=ct(vt,n),u=M(t,c(null));return ve(),a(v,null,a(oe,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:i},a(J,S({role:"dialog",id:s.contentId,"aria-describedby":s.descriptionId,"aria-labelledby":s.titleId,"data-state":Ot(s.open)},l,{ref:u,onDismiss:()=>s.onOpenChange(!1)}))),!1)})),bt="DialogTitle",_t=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct(bt,n);return a(K.h2,S({id:o.titleId},r,{ref:t}))})),xt=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct("DialogDescription",n);return a(K.p,S({id:o.descriptionId},r,{ref:t}))})),Et=d(((e,t)=>{const{__scopeDialog:n,...r}=e,o=ct("DialogClose",n);return a(K.button,S({type:"button"},r,{ref:t,onClick:A(e.onClick,(()=>o.onOpenChange(!1)))}))}));function Ot(e){return e?"open":"closed"}const[Ct,Dt]=function(e,t){const n=r(t);function l(e){const{children:t,...r}=e,i=o((()=>r),Object.values(r));return a(n.Provider,{value:i},t)}return l.displayName=e+"Provider",[l,function(r){const o=i(n);if(o)return o;if(void 0!==t)return t;throw new Error(`\`${r}\` must be used within \`${e}\``)}]}("DialogTitleWarning",{contentName:vt,titleName:bt,docsSlug:"dialog"}),Tt=e=>{const{__scopeDialog:t,children:r,open:o,defaultOpen:i,onOpenChange:l,modal:s=!0}=e,u=c(null),d=c(null),[f=!1,p]=F({prop:o,defaultProp:i,onChange:l});return a(lt,{scope:t,triggerRef:u,contentRef:d,contentId:j(),titleId:j(),descriptionId:j(),open:f,onOpenChange:p,onOpenToggle:n((()=>p((e=>!e))),[p]),modal:s},r)},kt=e=>{const{__scopeDialog:t,forceMount:n,children:r,container:o}=e,i=ct(st,t);return a(ut,{scope:t,forceMount:n},f.map(r,(e=>a(fe,{present:n||i.open},a(de,{asChild:!0,container:o},e)))))},St=pt,At=ht,Pt=_t,Mt=xt,It=Et;var Lt,Nt,Rt="Modal-modules_overlay__V-vTn",Ht="Modal-modules_header__-dxAm",jt="Modal-modules_close__CwIjR",Zt="Modal-modules_title__3ehge",Ft="Modal-modules_titleCentered__Qqy8u",Ut="Modal-modules_content__sK9HS",Bt="Modal-modules_body__8Khpx";function Vt(){return Vt=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Vt.apply(this,arguments)}var Wt=function(t){return e.createElement("svg",Vt({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"close_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Lt||(Lt=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Nt||(Nt=e.createElement("g",{mask:"url(#close_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m12 13.054-5.073 5.073a.724.724 0 0 1-.522.212.707.707 0 0 1-.532-.212.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527L10.946 12 5.873 6.927a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.532.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 10.946l5.073-5.073a.724.724 0 0 1 .522-.212.707.707 0 0 1 .532.212c.145.145.217.32.217.527a.717.717 0 0 1-.217.527L13.054 12l5.073 5.073c.138.139.21.313.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.217L12 13.054Z"}))))};function zt(e){var n,r,o=e.children,a=e.open,i=e.onOpenChange,l=e.title,c=e.hideCloseButton,s=void 0!==c&&c,u=e.contentClassName,d=void 0===u?"":u,f=e.maxHeight,p=void 0===f?"auto":f,m=e.width,v=void 0===m?"432px":m;return t.createElement(Tt,{open:a,onOpenChange:i},t.createElement(kt,null,t.createElement(St,{className:Rt},t.createElement(At,{className:D(Ut,(n={},n[d]=!!d,n)),style:{maxHeight:p,width:v}},t.createElement("div",{className:Ht},l&&t.createElement(Pt,{className:D(Zt,(r={},r[Ft]=!!s,r))},l),!s&&t.createElement(It,{className:jt},t.createElement(Wt,null))),t.createElement("div",{className:Bt},o)))))}function Kt(e){const n=e+"CollectionProvider",[r,o]=I(n),[a,i]=r(n,{collectionRef:{current:null},itemMap:new Map}),l=e+"CollectionSlot",c=e+"CollectionItemSlot",s="data-radix-collection-item";return[{Provider:e=>{const{scope:n,children:r}=e,o=t.useRef(null),i=t.useRef(new Map).current;return t.createElement(a,{scope:n,itemMap:i,collectionRef:o},r)},Slot:t.forwardRef(((e,n)=>{const{scope:r,children:o}=e,a=M(n,i(l,r).collectionRef);return t.createElement(U,{ref:a},o)})),ItemSlot:t.forwardRef(((e,n)=>{const{scope:r,children:o,...a}=e,l=t.useRef(null),u=M(n,l),d=i(c,r);return t.useEffect((()=>(d.itemMap.set(l,{ref:l,...a}),()=>{d.itemMap.delete(l)}))),t.createElement(U,{[s]:"",ref:u},o)}))},function(n){const r=i(e+"CollectionConsumer",n);return t.useCallback((()=>{const e=r.collectionRef.current;if(!e)return[];const t=Array.from(e.querySelectorAll(`[${s}]`));return Array.from(r.itemMap.values()).sort(((e,n)=>t.indexOf(e.ref.current)-t.indexOf(n.ref.current)))}),[r.collectionRef,r.itemMap])},o]}const $t=r(void 0);function qt(e){const t=i($t);return e||t||"ltr"}const Gt="rovingFocusGroup.onEntryFocus",Xt={bubbles:!1,cancelable:!0},Yt="RovingFocusGroup",[Jt,Qt,en]=Kt(Yt),[tn,nn]=I(Yt,[en]),[rn,on]=tn(Yt),an=d(((e,t)=>a(Jt.Provider,{scope:e.__scopeRovingFocusGroup},a(Jt.Slot,{scope:e.__scopeRovingFocusGroup},a(ln,S({},e,{ref:t})))))),ln=d(((e,t)=>{const{__scopeRovingFocusGroup:r,orientation:o,loop:i=!1,dir:l,currentTabStopId:d,defaultCurrentTabStopId:f,onCurrentTabStopIdChange:p,onEntryFocus:m,...v}=e,h=c(null),g=M(t,h),y=qt(l),[w=null,b]=F({prop:d,defaultProp:f,onChange:p}),[_,x]=u(!1),E=Z(m),O=Qt(r),C=c(!1),[D,T]=u(0);return s((()=>{const e=h.current;if(e)return e.addEventListener(Gt,E),()=>e.removeEventListener(Gt,E)}),[E]),a(rn,{scope:r,orientation:o,dir:y,loop:i,currentTabStopId:w,onItemFocus:n((e=>b(e)),[b]),onItemShiftTab:n((()=>x(!0)),[]),onFocusableItemAdd:n((()=>T((e=>e+1))),[]),onFocusableItemRemove:n((()=>T((e=>e-1))),[])},a(K.div,S({tabIndex:_||0===D?-1:0,"data-orientation":o},v,{ref:g,style:{outline:"none",...e.style},onMouseDown:A(e.onMouseDown,(()=>{C.current=!0})),onFocus:A(e.onFocus,(e=>{const t=!C.current;if(e.target===e.currentTarget&&t&&!_){const t=new CustomEvent(Gt,Xt);if(e.currentTarget.dispatchEvent(t),!t.defaultPrevented){const e=O().filter((e=>e.focusable));un([e.find((e=>e.active)),e.find((e=>e.id===w)),...e].filter(Boolean).map((e=>e.ref.current)))}}C.current=!1})),onBlur:A(e.onBlur,(()=>x(!1)))})))})),cn=d(((e,t)=>{const{__scopeRovingFocusGroup:n,focusable:r=!0,active:o=!1,tabStopId:i,...l}=e,c=j(),u=i||c,d=on("RovingFocusGroupItem",n),f=d.currentTabStopId===u,p=Qt(n),{onFocusableItemAdd:m,onFocusableItemRemove:v}=d;return s((()=>{if(r)return m(),()=>v()}),[r,m,v]),a(Jt.ItemSlot,{scope:n,id:u,focusable:r,active:o},a(K.span,S({tabIndex:f?0:-1,"data-orientation":d.orientation},l,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{r?d.onItemFocus(u):e.preventDefault()})),onFocus:A(e.onFocus,(()=>d.onItemFocus(u))),onKeyDown:A(e.onKeyDown,(e=>{if("Tab"===e.key&&e.shiftKey)return void d.onItemShiftTab();if(e.target!==e.currentTarget)return;const t=function(e,t,n){const r=function(e,t){return"rtl"!==t?e:"ArrowLeft"===e?"ArrowRight":"ArrowRight"===e?"ArrowLeft":e}(e.key,n);return"vertical"===t&&["ArrowLeft","ArrowRight"].includes(r)||"horizontal"===t&&["ArrowUp","ArrowDown"].includes(r)?void 0:sn[r]}(e,d.orientation,d.dir);if(void 0!==t){e.preventDefault();let o=p().filter((e=>e.focusable)).map((e=>e.ref.current));if("last"===t)o.reverse();else if("prev"===t||"next"===t){"prev"===t&&o.reverse();const a=o.indexOf(e.currentTarget);o=d.loop?(r=a+1,(n=o).map(((e,t)=>n[(r+t)%n.length]))):o.slice(a+1)}setTimeout((()=>un(o)))}var n,r}))})))})),sn={ArrowLeft:"prev",ArrowUp:"prev",ArrowRight:"next",ArrowDown:"next",PageUp:"first",Home:"first",PageDown:"last",End:"last"};function un(e){const t=document.activeElement;for(const n of e){if(n===t)return;if(n.focus(),document.activeElement!==t)return}}const dn=an,fn=cn,pn="Tabs",[mn,vn]=I(pn,[nn]),hn=nn(),[gn,yn]=mn(pn);function wn(e,t){return`${e}-trigger-${t}`}function bn(e,t){return`${e}-content-${t}`}const _n=d(((e,t)=>{const{__scopeTabs:n,value:r,onValueChange:o,defaultValue:i,orientation:l="horizontal",dir:c,activationMode:s="automatic",...u}=e,d=qt(c),[f,p]=F({prop:r,onChange:o,defaultProp:i});return a(gn,{scope:n,baseId:j(),value:f,onValueChange:p,orientation:l,dir:d,activationMode:s},a(K.div,S({dir:d,"data-orientation":l},u,{ref:t})))})),xn=d(((e,t)=>{const{__scopeTabs:n,loop:r=!0,...o}=e,i=yn("TabsList",n),l=hn(n);return a(dn,S({asChild:!0},l,{orientation:i.orientation,dir:i.dir,loop:r}),a(K.div,S({role:"tablist","aria-orientation":i.orientation},o,{ref:t})))})),En=d(((e,t)=>{const{__scopeTabs:n,value:r,disabled:o=!1,...i}=e,l=yn("TabsTrigger",n),c=hn(n),s=wn(l.baseId,r),u=bn(l.baseId,r),d=r===l.value;return a(fn,S({asChild:!0},c,{focusable:!o,active:d}),a(K.button,S({type:"button",role:"tab","aria-selected":d,"aria-controls":u,"data-state":d?"active":"inactive","data-disabled":o?"":void 0,disabled:o,id:s},i,{ref:t,onMouseDown:A(e.onMouseDown,(e=>{o||0!==e.button||!1!==e.ctrlKey?e.preventDefault():l.onValueChange(r)})),onKeyDown:A(e.onKeyDown,(e=>{[" ","Enter"].includes(e.key)&&l.onValueChange(r)})),onFocus:A(e.onFocus,(()=>{const e="manual"!==l.activationMode;d||o||!e||l.onValueChange(r)}))})))})),On=d(((e,t)=>{const{__scopeTabs:n,value:r,forceMount:o,children:i,...l}=e,u=yn("TabsContent",n),d=wn(u.baseId,r),f=bn(u.baseId,r),p=r===u.value,m=c(p);return s((()=>{const e=requestAnimationFrame((()=>m.current=!1));return()=>cancelAnimationFrame(e)}),[]),a(fe,{present:o||p},(({present:n})=>a(K.div,S({"data-state":p?"active":"inactive","data-orientation":u.orientation,role:"tabpanel","aria-labelledby":d,hidden:!n,id:f,tabIndex:0},l,{ref:t,style:{...e.style,animationDuration:m.current?"0s":void 0}}),n&&i)))}));var Cn="Tabs-modules_root__TvYE1",Dn="Tabs-modules_list__G3KVd",Tn="Tabs-modules_tab__-FuG6",kn="Tabs-modules_content__X0OLh";function Sn(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=x(e,["children","className"]);return t.createElement(_n,_({},i,{className:D(Cn,(n={},n[a]=a,n))}),r)}function An(e){var n,r=e.children,o=e.className,a=void 0===o?"":o;return t.createElement(xn,{className:D(Dn,(n={},n[a]=a,n))},r)}function Pn(e){var n,r=e.children,o=e.className,a=void 0===o?"":o,i=x(e,["children","className"]);return t.createElement(En,_({},i,{className:D(Tn,(n={},n[a]=a,n))}),r)}function Mn(e){var n,r=e.children,o=e.value,a=e.className,i=void 0===a?"":a;return t.createElement(On,{value:o,className:D(kn,(n={},n[i]=i,n))},r)}function In(e){const t=c({value:e,previous:e});return o((()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous)),[e])}function Ln(e){const[t,n]=u(void 0);return N((()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});const t=new ResizeObserver((t=>{if(!Array.isArray(t))return;if(!t.length)return;const r=t[0];let o,a;if("borderBoxSize"in r){const e=r.borderBoxSize,t=Array.isArray(e)?e[0]:e;o=t.inlineSize,a=t.blockSize}else o=e.offsetWidth,a=e.offsetHeight;n({width:o,height:a})}));return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)}),[e]),t}const Nn="Switch",[Rn,Hn]=I(Nn),[jn,Zn]=Rn(Nn),Fn=d(((e,t)=>{const{__scopeSwitch:n,name:r,checked:o,defaultChecked:i,required:l,disabled:s,value:d="on",onCheckedChange:f,...p}=e,[m,v]=u(null),h=M(t,(e=>v(e))),g=c(!1),y=!m||Boolean(m.closest("form")),[w=!1,b]=F({prop:o,defaultProp:i,onChange:f});return a(jn,{scope:n,checked:w,disabled:s},a(K.button,S({type:"button",role:"switch","aria-checked":w,"aria-required":l,"data-state":Bn(w),"data-disabled":s?"":void 0,disabled:s,value:d},p,{ref:h,onClick:A(e.onClick,(e=>{b((e=>!e)),y&&(g.current=e.isPropagationStopped(),g.current||e.stopPropagation())}))})),y&&a(Un,{control:m,bubbles:!g.current,name:r,value:d,checked:w,required:l,disabled:s,style:{transform:"translateX(-100%)"}}))})),Un=e=>{const{control:t,checked:n,bubbles:r=!0,...o}=e,i=c(null),l=In(n),u=Ln(t);return s((()=>{const e=i.current,t=window.HTMLInputElement.prototype,o=Object.getOwnPropertyDescriptor(t,"checked").set;if(l!==n&&o){const t=new Event("click",{bubbles:r});o.call(e,n),e.dispatchEvent(t)}}),[l,n,r]),a("input",S({type:"checkbox","aria-hidden":!0,defaultChecked:n},o,{tabIndex:-1,ref:i,style:{...e.style,...u,position:"absolute",pointerEvents:"none",opacity:0,margin:0}}))};function Bn(e){return e?"checked":"unchecked"}const Vn=Fn,Wn=d(((e,t)=>{const{__scopeSwitch:n,...r}=e,o=Zn("SwitchThumb",n);return a(K.span,S({"data-state":Bn(o.checked),"data-disabled":o.disabled?"":void 0},r,{ref:t}))}));var zn="Switch-modules_root__V5S6a",Kn="Switch-modules_thumb__PZ-lR";function $n(e){var n,r=e.className,o=void 0===r?"":r,a=e.id,i=void 0===a?"":a,l=e.disabled,c=void 0!==l&&l,s=e.required,u=void 0!==s&&s,d=e.name,f=x(e,["className","id","disabled","required","name"]);return t.createElement(Vn,_({className:D(zn,(n={},n[o]=o,n)),disabled:c,required:u,name:d,id:i||d},f),t.createElement(Wn,{className:Kn}))}function qn(e){return e.split("-")[1]}function Gn(e){return"y"===e?"height":"width"}function Xn(e){return e.split("-")[0]}function Yn(e){return["top","bottom"].includes(Xn(e))?"x":"y"}function Jn(e,t,n){let{reference:r,floating:o}=e;const a=r.x+r.width/2-o.width/2,i=r.y+r.height/2-o.height/2,l=Yn(t),c=Gn(l),s=r[c]/2-o[c]/2,u="x"===l;let d;switch(Xn(t)){case"top":d={x:a,y:r.y-o.height};break;case"bottom":d={x:a,y:r.y+r.height};break;case"right":d={x:r.x+r.width,y:i};break;case"left":d={x:r.x-o.width,y:i};break;default:d={x:r.x,y:r.y}}switch(qn(t)){case"start":d[l]-=s*(n&&u?-1:1);break;case"end":d[l]+=s*(n&&u?-1:1)}return d}function Qn(e,t){return"function"==typeof e?e(t):e}function er(e){return"number"!=typeof e?function(e){return{top:0,right:0,bottom:0,left:0,...e}}(e):{top:e,right:e,bottom:e,left:e}}function tr(e){return{...e,top:e.y,left:e.x,right:e.x+e.width,bottom:e.y+e.height}}async function nr(e,t){var n;void 0===t&&(t={});const{x:r,y:o,platform:a,rects:i,elements:l,strategy:c}=e,{boundary:s="clippingAncestors",rootBoundary:u="viewport",elementContext:d="floating",altBoundary:f=!1,padding:p=0}=Qn(t,e),m=er(p),v=l[f?"floating"===d?"reference":"floating":d],h=tr(await a.getClippingRect({element:null==(n=await(null==a.isElement?void 0:a.isElement(v)))||n?v:v.contextElement||await(null==a.getDocumentElement?void 0:a.getDocumentElement(l.floating)),boundary:s,rootBoundary:u,strategy:c})),g="floating"===d?{...i.floating,x:r,y:o}:i.reference,y=await(null==a.getOffsetParent?void 0:a.getOffsetParent(l.floating)),w=await(null==a.isElement?void 0:a.isElement(y))&&await(null==a.getScale?void 0:a.getScale(y))||{x:1,y:1},b=tr(a.convertOffsetParentRelativeRectToViewportRelativeRect?await a.convertOffsetParentRelativeRectToViewportRelativeRect({rect:g,offsetParent:y,strategy:c}):g);return{top:(h.top-b.top+m.top)/w.y,bottom:(b.bottom-h.bottom+m.bottom)/w.y,left:(h.left-b.left+m.left)/w.x,right:(b.right-h.right+m.right)/w.x}}const rr=Math.min,or=Math.max;function ar(e,t,n){return or(e,rr(t,n))}const ir=e=>({name:"arrow",options:e,async fn(t){const{x:n,y:r,placement:o,rects:a,platform:i,elements:l}=t,{element:c,padding:s=0}=Qn(e,t)||{};if(null==c)return{};const u=er(s),d={x:n,y:r},f=Yn(o),p=Gn(f),m=await i.getDimensions(c),v="y"===f,h=v?"top":"left",g=v?"bottom":"right",y=v?"clientHeight":"clientWidth",w=a.reference[p]+a.reference[f]-d[f]-a.floating[p],b=d[f]-a.reference[f],_=await(null==i.getOffsetParent?void 0:i.getOffsetParent(c));let x=_?_[y]:0;x&&await(null==i.isElement?void 0:i.isElement(_))||(x=l.floating[y]||a.floating[p]);const E=w/2-b/2,O=x/2-m[p]/2-1,C=rr(u[h],O),D=rr(u[g],O),T=C,k=x-m[p]-D,S=x/2-m[p]/2+E,A=ar(T,S,k),P=null!=qn(o)&&S!=A&&a.reference[p]/2-(S<T?C:D)-m[p]/2<0;return{[f]:d[f]-(P?S<T?T-S:k-S:0),data:{[f]:A,centerOffset:S-A}}}}),lr=["top","right","bottom","left"],cr={left:"right",right:"left",bottom:"top",top:"bottom"};function sr(e){return e.replace(/left|right|bottom|top/g,(e=>cr[e]))}const ur={start:"end",end:"start"};function dr(e){return e.replace(/start|end/g,(e=>ur[e]))}const fr=function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n;const{placement:r,middlewareData:o,rects:a,initialPlacement:i,platform:l,elements:c}=t,{mainAxis:s=!0,crossAxis:u=!0,fallbackPlacements:d,fallbackStrategy:f="bestFit",fallbackAxisSideDirection:p="none",flipAlignment:m=!0,...v}=Qn(e,t),h=Xn(r),g=Xn(i)===i,y=await(null==l.isRTL?void 0:l.isRTL(c.floating)),w=d||(g||!m?[sr(i)]:function(e){const t=sr(e);return[dr(e),t,dr(t)]}(i));d||"none"===p||w.push(...function(e,t,n,r){const o=qn(e);let a=function(e,t,n){const r=["left","right"],o=["right","left"],a=["top","bottom"],i=["bottom","top"];switch(e){case"top":case"bottom":return n?t?o:r:t?r:o;case"left":case"right":return t?a:i;default:return[]}}(Xn(e),"start"===n,r);return o&&(a=a.map((e=>e+"-"+o)),t&&(a=a.concat(a.map(dr)))),a}(i,m,p,y));const b=[i,...w],_=await nr(t,v),x=[];let E=(null==(n=o.flip)?void 0:n.overflows)||[];if(s&&x.push(_[h]),u){const{main:e,cross:t}=function(e,t,n){void 0===n&&(n=!1);const r=qn(e),o=Yn(e),a=Gn(o);let i="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[a]>t.floating[a]&&(i=sr(i)),{main:i,cross:sr(i)}}(r,a,y);x.push(_[e],_[t])}if(E=[...E,{placement:r,overflows:x}],!x.every((e=>e<=0))){var O,C;const e=((null==(O=o.flip)?void 0:O.index)||0)+1,t=b[e];if(t)return{data:{index:e,overflows:E},reset:{placement:t}};let n=null==(C=E.filter((e=>e.overflows[0]<=0)).sort(((e,t)=>e.overflows[1]-t.overflows[1]))[0])?void 0:C.placement;if(!n)switch(f){case"bestFit":{var D;const e=null==(D=E.map((e=>[e.placement,e.overflows.filter((e=>e>0)).reduce(((e,t)=>e+t),0)])).sort(((e,t)=>e[1]-t[1]))[0])?void 0:D[0];e&&(n=e);break}case"initialPlacement":n=i}if(r!==n)return{reset:{placement:n}}}return{}}}};function pr(e,t){return{top:e.top-t.height,right:e.right-t.width,bottom:e.bottom-t.height,left:e.left-t.width}}function mr(e){return lr.some((t=>e[t]>=0))}const vr=function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){const{rects:n}=t,{strategy:r="referenceHidden",...o}=Qn(e,t);switch(r){case"referenceHidden":{const e=pr(await nr(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:mr(e)}}}case"escaped":{const e=pr(await nr(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:mr(e)}}}default:return{}}}}};const hr=function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){const{x:n,y:r}=t,o=await async function(e,t){const{placement:n,platform:r,elements:o}=e,a=await(null==r.isRTL?void 0:r.isRTL(o.floating)),i=Xn(n),l=qn(n),c="x"===Yn(n),s=["left","top"].includes(i)?-1:1,u=a&&c?-1:1,d=Qn(t,e);let{mainAxis:f,crossAxis:p,alignmentAxis:m}="number"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return l&&"number"==typeof m&&(p="end"===l?-1*m:m),c?{x:p*u,y:f*s}:{x:f*s,y:p*u}}(t,e);return{x:n+o.x,y:r+o.y,data:o}}}};function gr(e){return"x"===e?"y":"x"}const yr=function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){const{x:n,y:r,placement:o}=t,{mainAxis:a=!0,crossAxis:i=!1,limiter:l={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...c}=Qn(e,t),s={x:n,y:r},u=await nr(t,c),d=Yn(Xn(o)),f=gr(d);let p=s[d],m=s[f];if(a){const e="y"===d?"bottom":"right";p=ar(p+u["y"===d?"top":"left"],p,p-u[e])}if(i){const e="y"===f?"bottom":"right";m=ar(m+u["y"===f?"top":"left"],m,m-u[e])}const v=l.fn({...t,[d]:p,[f]:m});return{...v,data:{x:v.x-n,y:v.y-r}}}}},wr=function(e){return void 0===e&&(e={}),{options:e,fn(t){const{x:n,y:r,placement:o,rects:a,middlewareData:i}=t,{offset:l=0,mainAxis:c=!0,crossAxis:s=!0}=Qn(e,t),u={x:n,y:r},d=Yn(o),f=gr(d);let p=u[d],m=u[f];const v=Qn(l,t),h="number"==typeof v?{mainAxis:v,crossAxis:0}:{mainAxis:0,crossAxis:0,...v};if(c){const e="y"===d?"height":"width",t=a.reference[d]-a.floating[e]+h.mainAxis,n=a.reference[d]+a.reference[e]-h.mainAxis;p<t?p=t:p>n&&(p=n)}if(s){var g,y;const e="y"===d?"width":"height",t=["top","left"].includes(Xn(o)),n=a.reference[f]-a.floating[e]+(t&&(null==(g=i.offset)?void 0:g[f])||0)+(t?0:h.crossAxis),r=a.reference[f]+a.reference[e]+(t?0:(null==(y=i.offset)?void 0:y[f])||0)-(t?h.crossAxis:0);m<n?m=n:m>r&&(m=r)}return{[d]:p,[f]:m}}}},br=function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){const{placement:n,rects:r,platform:o,elements:a}=t,{apply:i=(()=>{}),...l}=Qn(e,t),c=await nr(t,l),s=Xn(n),u=qn(n),d="x"===Yn(n),{width:f,height:p}=r.floating;let m,v;"top"===s||"bottom"===s?(m=s,v=u===(await(null==o.isRTL?void 0:o.isRTL(a.floating))?"start":"end")?"left":"right"):(v=s,m="end"===u?"top":"bottom");const h=p-c[m],g=f-c[v],y=!t.middlewareData.shift;let w=h,b=g;if(d){const e=f-c.left-c.right;b=u||y?rr(g,e):e}else{const e=p-c.top-c.bottom;w=u||y?rr(h,e):e}if(y&&!u){const e=or(c.left,0),t=or(c.right,0),n=or(c.top,0),r=or(c.bottom,0);d?b=f-2*(0!==e||0!==t?e+t:or(c.left,c.right)):w=p-2*(0!==n||0!==r?n+r:or(c.top,c.bottom))}await i({...t,availableWidth:b,availableHeight:w});const _=await o.getDimensions(a.floating);return f!==_.width||p!==_.height?{reset:{rects:!0}}:{}}}};function _r(e){var t;return(null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function xr(e){return _r(e).getComputedStyle(e)}function Er(e){return e instanceof _r(e).Node}function Or(e){return Er(e)?(e.nodeName||"").toLowerCase():""}function Cr(e){return e instanceof _r(e).HTMLElement}function Dr(e){return e instanceof _r(e).Element}function Tr(e){if("undefined"==typeof ShadowRoot)return!1;return e instanceof _r(e).ShadowRoot||e instanceof ShadowRoot}function kr(e){const{overflow:t,overflowX:n,overflowY:r,display:o}=xr(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Sr(e){return["table","td","th"].includes(Or(e))}function Ar(e){const t=Pr(),n=xr(e);return"none"!==n.transform||"none"!==n.perspective||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","perspective","filter"].some((e=>(n.willChange||"").includes(e)))||["paint","layout","strict","content"].some((e=>(n.contain||"").includes(e)))}function Pr(){return!("undefined"==typeof CSS||!CSS.supports)&&CSS.supports("-webkit-backdrop-filter","none")}function Mr(e){return["html","body","#document"].includes(Or(e))}const Ir=Math.min,Lr=Math.max,Nr=Math.round;function Rr(e){const t=xr(e);let n=parseFloat(t.width)||0,r=parseFloat(t.height)||0;const o=Cr(e),a=o?e.offsetWidth:n,i=o?e.offsetHeight:r,l=Nr(n)!==a||Nr(r)!==i;return l&&(n=a,r=i),{width:n,height:r,fallback:l}}function Hr(e){return Dr(e)?e:e.contextElement}const jr={x:1,y:1};function Zr(e){const t=Hr(e);if(!Cr(t))return jr;const n=t.getBoundingClientRect(),{width:r,height:o,fallback:a}=Rr(t);let i=(a?Nr(n.width):n.width)/r,l=(a?Nr(n.height):n.height)/o;return i&&Number.isFinite(i)||(i=1),l&&Number.isFinite(l)||(l=1),{x:i,y:l}}const Fr={x:0,y:0};function Ur(e,t,n){var r,o;if(void 0===t&&(t=!0),!Pr())return Fr;const a=e?_r(e):window;return!n||t&&n!==a?Fr:{x:(null==(r=a.visualViewport)?void 0:r.offsetLeft)||0,y:(null==(o=a.visualViewport)?void 0:o.offsetTop)||0}}function Br(e,t,n,r){void 0===t&&(t=!1),void 0===n&&(n=!1);const o=e.getBoundingClientRect(),a=Hr(e);let i=jr;t&&(r?Dr(r)&&(i=Zr(r)):i=Zr(e));const l=Ur(a,n,r);let c=(o.left+l.x)/i.x,s=(o.top+l.y)/i.y,u=o.width/i.x,d=o.height/i.y;if(a){const e=_r(a),t=r&&Dr(r)?_r(r):r;let n=e.frameElement;for(;n&&r&&t!==e;){const e=Zr(n),t=n.getBoundingClientRect(),r=getComputedStyle(n);t.x+=(n.clientLeft+parseFloat(r.paddingLeft))*e.x,t.y+=(n.clientTop+parseFloat(r.paddingTop))*e.y,c*=e.x,s*=e.y,u*=e.x,d*=e.y,c+=t.x,s+=t.y,n=_r(n).frameElement}}return tr({width:u,height:d,x:c,y:s})}function Vr(e){return((Er(e)?e.ownerDocument:e.document)||window.document).documentElement}function Wr(e){return Dr(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function zr(e){return Br(Vr(e)).left+Wr(e).scrollLeft}function Kr(e){if("html"===Or(e))return e;const t=e.assignedSlot||e.parentNode||Tr(e)&&e.host||Vr(e);return Tr(t)?t.host:t}function $r(e){const t=Kr(e);return Mr(t)?t.ownerDocument.body:Cr(t)&&kr(t)?t:$r(t)}function qr(e,t){var n;void 0===t&&(t=[]);const r=$r(e),o=r===(null==(n=e.ownerDocument)?void 0:n.body),a=_r(r);return o?t.concat(a,a.visualViewport||[],kr(r)?r:[]):t.concat(r,qr(r))}function Gr(e,t,n){let r;if("viewport"===t)r=function(e,t){const n=_r(e),r=Vr(e),o=n.visualViewport;let a=r.clientWidth,i=r.clientHeight,l=0,c=0;if(o){a=o.width,i=o.height;const e=Pr();(!e||e&&"fixed"===t)&&(l=o.offsetLeft,c=o.offsetTop)}return{width:a,height:i,x:l,y:c}}(e,n);else if("document"===t)r=function(e){const t=Vr(e),n=Wr(e),r=e.ownerDocument.body,o=Lr(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),a=Lr(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight);let i=-n.scrollLeft+zr(e);const l=-n.scrollTop;return"rtl"===xr(r).direction&&(i+=Lr(t.clientWidth,r.clientWidth)-o),{width:o,height:a,x:i,y:l}}(Vr(e));else if(Dr(t))r=function(e,t){const n=Br(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,a=Cr(e)?Zr(e):{x:1,y:1};return{width:e.clientWidth*a.x,height:e.clientHeight*a.y,x:o*a.x,y:r*a.y}}(t,n);else{const n=Ur(e);r={...t,x:t.x-n.x,y:t.y-n.y}}return tr(r)}function Xr(e,t){const n=Kr(e);return!(n===t||!Dr(n)||Mr(n))&&("fixed"===xr(n).position||Xr(n,t))}function Yr(e,t){return Cr(e)&&"fixed"!==xr(e).position?t?t(e):e.offsetParent:null}function Jr(e,t){const n=_r(e);if(!Cr(e))return n;let r=Yr(e,t);for(;r&&Sr(r)&&"static"===xr(r).position;)r=Yr(r,t);return r&&("html"===Or(r)||"body"===Or(r)&&"static"===xr(r).position&&!Ar(r))?n:r||function(e){let t=Kr(e);for(;Cr(t)&&!Mr(t);){if(Ar(t))return t;t=Kr(t)}return null}(e)||n}function Qr(e,t,n){const r=Cr(t),o=Vr(t),a="fixed"===n,i=Br(e,!0,a,t);let l={scrollLeft:0,scrollTop:0};const c={x:0,y:0};if(r||!r&&!a)if(("body"!==Or(t)||kr(o))&&(l=Wr(t)),Cr(t)){const e=Br(t,!0,a,t);c.x=e.x+t.clientLeft,c.y=e.y+t.clientTop}else o&&(c.x=zr(o));return{x:i.left+l.scrollLeft-c.x,y:i.top+l.scrollTop-c.y,width:i.width,height:i.height}}const eo={getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e;const a=[..."clippingAncestors"===n?function(e,t){const n=t.get(e);if(n)return n;let r=qr(e).filter((e=>Dr(e)&&"body"!==Or(e))),o=null;const a="fixed"===xr(e).position;let i=a?Kr(e):e;for(;Dr(i)&&!Mr(i);){const t=xr(i),n=Ar(i);n||"fixed"!==t.position||(o=null),(a?!n&&!o:!n&&"static"===t.position&&o&&["absolute","fixed"].includes(o.position)||kr(i)&&!n&&Xr(e,i))?r=r.filter((e=>e!==i)):o=t,i=Kr(i)}return t.set(e,r),r}(t,this._c):[].concat(n),r],i=a[0],l=a.reduce(((e,n)=>{const r=Gr(t,n,o);return e.top=Lr(r.top,e.top),e.right=Ir(r.right,e.right),e.bottom=Ir(r.bottom,e.bottom),e.left=Lr(r.left,e.left),e}),Gr(t,i,o));return{width:l.right-l.left,height:l.bottom-l.top,x:l.left,y:l.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{rect:t,offsetParent:n,strategy:r}=e;const o=Cr(n),a=Vr(n);if(n===a)return t;let i={scrollLeft:0,scrollTop:0},l={x:1,y:1};const c={x:0,y:0};if((o||!o&&"fixed"!==r)&&(("body"!==Or(n)||kr(a))&&(i=Wr(n)),Cr(n))){const e=Br(n);l=Zr(n),c.x=e.x+n.clientLeft,c.y=e.y+n.clientTop}return{width:t.width*l.x,height:t.height*l.y,x:t.x*l.x-i.scrollLeft*l.x+c.x,y:t.y*l.y-i.scrollTop*l.y+c.y}},isElement:Dr,getDimensions:function(e){return Rr(e)},getOffsetParent:Jr,getDocumentElement:Vr,getScale:Zr,async getElementRects(e){let{reference:t,floating:n,strategy:r}=e;const o=this.getOffsetParent||Jr,a=this.getDimensions;return{reference:Qr(t,await o(n),r),floating:{x:0,y:0,...await a(n)}}},getClientRects:e=>Array.from(e.getClientRects()),isRTL:e=>"rtl"===xr(e).direction};function to(e,t,n,r){void 0===r&&(r={});const{ancestorScroll:o=!0,ancestorResize:a=!0,elementResize:i=!0,animationFrame:l=!1}=r,c=o||a?[...Dr(e)?qr(e):e.contextElement?qr(e.contextElement):[],...qr(t)]:[];c.forEach((e=>{const t=!Dr(e)&&e.toString().includes("V");!o||l&&!t||e.addEventListener("scroll",n,{passive:!0}),a&&e.addEventListener("resize",n)}));let s,u=null;i&&(u=new ResizeObserver((()=>{n()})),Dr(e)&&!l&&u.observe(e),Dr(e)||!e.contextElement||l||u.observe(e.contextElement),u.observe(t));let d=l?Br(e):null;return l&&function t(){const r=Br(e);!d||r.x===d.x&&r.y===d.y&&r.width===d.width&&r.height===d.height||n();d=r,s=requestAnimationFrame(t)}(),n(),()=>{var e;c.forEach((e=>{o&&e.removeEventListener("scroll",n),a&&e.removeEventListener("resize",n)})),null==(e=u)||e.disconnect(),u=null,l&&cancelAnimationFrame(s)}}const no=(e,t,n)=>{const r=new Map,o={platform:eo,...n},a={...o.platform,_c:r};return(async(e,t,n)=>{const{placement:r="bottom",strategy:o="absolute",middleware:a=[],platform:i}=n,l=a.filter(Boolean),c=await(null==i.isRTL?void 0:i.isRTL(t));let s=await i.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:d}=Jn(s,r,c),f=r,p={},m=0;for(let n=0;n<l.length;n++){const{name:a,fn:v}=l[n],{x:h,y:g,data:y,reset:w}=await v({x:u,y:d,initialPlacement:r,placement:f,strategy:o,middlewareData:p,rects:s,platform:i,elements:{reference:e,floating:t}});u=null!=h?h:u,d=null!=g?g:d,p={...p,[a]:{...p[a],...y}},w&&m<=50&&(m++,"object"==typeof w&&(w.placement&&(f=w.placement),w.rects&&(s=!0===w.rects?await i.getElementRects({reference:e,floating:t,strategy:o}):w.rects),({x:u,y:d}=Jn(s,f,c))),n=-1)}return{x:u,y:d,placement:f,strategy:o,middlewareData:p}})(e,t,{...o,platform:a})},ro=e=>({name:"arrow",options:e,fn(t){const{element:n,padding:r}="function"==typeof e?e(t):e;return n&&(o=n,{}.hasOwnProperty.call(o,"current"))?null!=n.current?ir({element:n.current,padding:r}).fn(t):{}:n?ir({element:n,padding:r}).fn(t):{};var o}});var oo="undefined"!=typeof document?l:s;function ao(e,t){if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;let n,r,o;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if(n=e.length,n!=t.length)return!1;for(r=n;0!=r--;)if(!ao(e[r],t[r]))return!1;return!0}if(o=Object.keys(e),n=o.length,n!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!{}.hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){const n=o[r];if(("_owner"!==n||!e.$$typeof)&&!ao(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function io(e){if("undefined"==typeof window)return 1;return(e.ownerDocument.defaultView||window).devicePixelRatio||1}function lo(e,t){const n=io(e);return Math.round(t*n)/n}function co(t){const n=e.useRef(t);return oo((()=>{n.current=t})),n}const so=d(((e,t)=>{const{children:n,width:r=10,height:o=5,...i}=e;return a(K.svg,S({},i,{ref:t,width:r,height:o,viewBox:"0 0 30 10",preserveAspectRatio:"none"}),e.asChild?n:a("polygon",{points:"0,0 30,0 15,10"}))})),uo="Popper",[fo,po]=I(uo),[mo,vo]=fo(uo),ho=d(((e,t)=>{const{__scopePopper:n,virtualRef:r,...o}=e,i=vo("PopperAnchor",n),l=c(null),u=M(t,l);return s((()=>{i.onAnchorChange((null==r?void 0:r.current)||l.current)})),r?null:a(K.div,S({},o,{ref:u}))})),go="PopperContent",[yo,wo]=fo(go),bo=d(((t,n)=>{var r,o,i,l,c,s,d,f;const{__scopePopper:p,side:m="bottom",sideOffset:v=0,align:h="center",alignOffset:y=0,arrowPadding:w=0,collisionBoundary:b=[],collisionPadding:_=0,sticky:x="partial",hideWhenDetached:E=!1,avoidCollisions:O=!0,onPlaced:C,...D}=t,T=vo(go,p),[k,A]=u(null),P=M(n,(e=>A(e))),[I,L]=u(null),R=Ln(I),H=null!==(r=null==R?void 0:R.width)&&void 0!==r?r:0,j=null!==(o=null==R?void 0:R.height)&&void 0!==o?o:0,F=m+("center"!==h?"-"+h:""),U="number"==typeof _?_:{top:0,right:0,bottom:0,left:0,..._},B=Array.isArray(b)?b:[b],V=B.length>0,W={padding:U,boundary:B.filter(xo),altBoundary:V},{refs:z,floatingStyles:$,placement:q,isPositioned:G,middlewareData:X}=function(t){void 0===t&&(t={});const{placement:n="bottom",strategy:r="absolute",middleware:o=[],platform:a,elements:{reference:i,floating:l}={},transform:c=!0,whileElementsMounted:s,open:u}=t,[d,f]=e.useState({x:0,y:0,strategy:r,placement:n,middlewareData:{},isPositioned:!1}),[p,m]=e.useState(o);ao(p,o)||m(o);const[v,h]=e.useState(null),[y,w]=e.useState(null),b=e.useCallback((e=>{e!=O.current&&(O.current=e,h(e))}),[h]),_=e.useCallback((e=>{e!==C.current&&(C.current=e,w(e))}),[w]),x=i||v,E=l||y,O=e.useRef(null),C=e.useRef(null),D=e.useRef(d),T=co(s),k=co(a),S=e.useCallback((()=>{if(!O.current||!C.current)return;const e={placement:n,strategy:r,middleware:p};k.current&&(e.platform=k.current),no(O.current,C.current,e).then((e=>{const t={...e,isPositioned:!0};A.current&&!ao(D.current,t)&&(D.current=t,g.flushSync((()=>{f(t)})))}))}),[p,n,r,k]);oo((()=>{!1===u&&D.current.isPositioned&&(D.current.isPositioned=!1,f((e=>({...e,isPositioned:!1}))))}),[u]);const A=e.useRef(!1);oo((()=>(A.current=!0,()=>{A.current=!1})),[]),oo((()=>{if(x&&(O.current=x),E&&(C.current=E),x&&E){if(T.current)return T.current(x,E,S);S()}}),[x,E,S,T]);const P=e.useMemo((()=>({reference:O,floating:C,setReference:b,setFloating:_})),[b,_]),M=e.useMemo((()=>({reference:x,floating:E})),[x,E]),I=e.useMemo((()=>{const e={position:r,left:0,top:0};if(!M.floating)return e;const t=lo(M.floating,d.x),n=lo(M.floating,d.y);return c?{...e,transform:"translate("+t+"px, "+n+"px)",...io(M.floating)>=1.5&&{willChange:"transform"}}:{position:r,left:t,top:n}}),[r,c,M.floating,d.x,d.y]);return e.useMemo((()=>({...d,update:S,refs:P,elements:M,floatingStyles:I})),[d,S,P,M,I])}({strategy:"fixed",placement:F,whileElementsMounted:to,elements:{reference:T.anchor},middleware:[hr({mainAxis:v+j,alignmentAxis:y}),O&&yr({mainAxis:!0,crossAxis:!1,limiter:"partial"===x?wr():void 0,...W}),O&&fr({...W}),br({...W,apply:({elements:e,rects:t,availableWidth:n,availableHeight:r})=>{const{width:o,height:a}=t.reference,i=e.floating.style;i.setProperty("--radix-popper-available-width",`${n}px`),i.setProperty("--radix-popper-available-height",`${r}px`),i.setProperty("--radix-popper-anchor-width",`${o}px`),i.setProperty("--radix-popper-anchor-height",`${a}px`)}}),I&&ro({element:I,padding:w}),Eo({arrowWidth:H,arrowHeight:j}),E&&vr({strategy:"referenceHidden"})]}),[Y,J]=Oo(q),Q=Z(C);N((()=>{G&&(null==Q||Q())}),[G,Q]);const ee=null===(i=X.arrow)||void 0===i?void 0:i.x,te=null===(l=X.arrow)||void 0===l?void 0:l.y,ne=0!==(null===(c=X.arrow)||void 0===c?void 0:c.centerOffset),[re,oe]=u();return N((()=>{k&&oe(window.getComputedStyle(k).zIndex)}),[k]),a("div",{ref:z.setFloating,"data-radix-popper-content-wrapper":"",style:{...$,transform:G?$.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:re,"--radix-popper-transform-origin":[null===(s=X.transformOrigin)||void 0===s?void 0:s.x,null===(d=X.transformOrigin)||void 0===d?void 0:d.y].join(" ")},dir:t.dir},a(yo,{scope:p,placedSide:Y,onArrowChange:L,arrowX:ee,arrowY:te,shouldHideArrow:ne},a(K.div,S({"data-side":Y,"data-align":J},D,{ref:P,style:{...D.style,animation:G?void 0:"none",opacity:null!==(f=X.hide)&&void 0!==f&&f.referenceHidden?0:void 0}}))))})),_o={top:"bottom",right:"left",bottom:"top",left:"right"};function xo(e){return null!==e}const Eo=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,a,i;const{placement:l,rects:c,middlewareData:s}=t,u=0!==(null===(n=s.arrow)||void 0===n?void 0:n.centerOffset),d=u?0:e.arrowWidth,f=u?0:e.arrowHeight,[p,m]=Oo(l),v={start:"0%",center:"50%",end:"100%"}[m],h=(null!==(r=null===(o=s.arrow)||void 0===o?void 0:o.x)&&void 0!==r?r:0)+d/2,g=(null!==(a=null===(i=s.arrow)||void 0===i?void 0:i.y)&&void 0!==a?a:0)+f/2;let y="",w="";return"bottom"===p?(y=u?v:`${h}px`,w=-f+"px"):"top"===p?(y=u?v:`${h}px`,w=`${c.floating.height+f}px`):"right"===p?(y=-f+"px",w=u?v:`${g}px`):"left"===p&&(y=`${c.floating.width+f}px`,w=u?v:`${g}px`),{data:{x:y,y:w}}}});function Oo(e){const[t,n="center"]=e.split("-");return[t,n]}const Co=e=>{const{__scopePopper:t,children:n}=e,[r,o]=u(null);return a(mo,{scope:t,anchor:r,onAnchorChange:o},n)},Do=ho,To=bo,ko=d((function(e,t){const{__scopePopper:n,...r}=e,o=wo("PopperArrow",n),i=_o[o.placedSide];return a("span",{ref:o.onArrowChange,style:{position:"absolute",left:o.arrowX,top:o.arrowY,[i]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[o.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[o.placedSide],visibility:o.shouldHideArrow?"hidden":void 0}},a(so,S({},r,{ref:t,style:{...r.style,display:"block"}})))})),So=d(((e,t)=>a(K.span,S({},e,{ref:t,style:{position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal",...e.style}})))),Ao=So,[Po,Mo]=I("Tooltip",[po]),Io=po(),Lo=700,No="tooltip.open",[Ro,Ho]=Po("TooltipProvider"),jo="Tooltip",[Zo,Fo]=Po(jo),Uo="TooltipTrigger",Bo=d(((e,t)=>{const{__scopeTooltip:r,...o}=e,i=Fo(Uo,r),l=Ho(Uo,r),u=Io(r),d=M(t,c(null),i.onTriggerChange),f=c(!1),p=c(!1),m=n((()=>f.current=!1),[]);return s((()=>()=>document.removeEventListener("pointerup",m)),[m]),a(Do,S({asChild:!0},u),a(K.button,S({"aria-describedby":i.open?i.contentId:void 0,"data-state":i.stateAttribute},o,{ref:d,onPointerMove:A(e.onPointerMove,(e=>{"touch"!==e.pointerType&&(p.current||l.isPointerInTransitRef.current||(i.onTriggerEnter(),p.current=!0))})),onPointerLeave:A(e.onPointerLeave,(()=>{i.onTriggerLeave(),p.current=!1})),onPointerDown:A(e.onPointerDown,(()=>{f.current=!0,document.addEventListener("pointerup",m,{once:!0})})),onFocus:A(e.onFocus,(()=>{f.current||i.onOpen()})),onBlur:A(e.onBlur,i.onClose),onClick:A(e.onClick,i.onClose)})))})),Vo="TooltipPortal",[Wo,zo]=Po(Vo,{forceMount:void 0}),Ko="TooltipContent",$o=d(((e,t)=>{const n=zo(Ko,e.__scopeTooltip),{forceMount:r=n.forceMount,side:o="top",...i}=e,l=Fo(Ko,e.__scopeTooltip);return a(fe,{present:r||l.open},l.disableHoverableContent?a(Yo,S({side:o},i,{ref:t})):a(qo,S({side:o},i,{ref:t})))})),qo=d(((e,t)=>{const r=Fo(Ko,e.__scopeTooltip),o=Ho(Ko,e.__scopeTooltip),i=c(null),l=M(t,i),[d,f]=u(null),{trigger:p,onClose:m}=r,v=i.current,{onPointerInTransitChange:h}=o,g=n((()=>{f(null),h(!1)}),[h]),y=n(((e,t)=>{const n=e.currentTarget,r={x:e.clientX,y:e.clientY},o=function(e,t,n=5){const r=[];switch(t){case"top":r.push({x:e.x-n,y:e.y+n},{x:e.x+n,y:e.y+n});break;case"bottom":r.push({x:e.x-n,y:e.y-n},{x:e.x+n,y:e.y-n});break;case"left":r.push({x:e.x+n,y:e.y-n},{x:e.x+n,y:e.y+n});break;case"right":r.push({x:e.x-n,y:e.y-n},{x:e.x-n,y:e.y+n})}return r}(r,function(e,t){const n=Math.abs(t.top-e.y),r=Math.abs(t.bottom-e.y),o=Math.abs(t.right-e.x),a=Math.abs(t.left-e.x);switch(Math.min(n,r,o,a)){case a:return"left";case o:return"right";case n:return"top";case r:return"bottom";default:throw new Error("unreachable")}}(r,n.getBoundingClientRect())),a=function(e){const t=e.slice();return t.sort(((e,t)=>e.x<t.x?-1:e.x>t.x?1:e.y<t.y?-1:e.y>t.y?1:0)),function(e){if(e.length<=1)return e.slice();const t=[];for(let n=0;n<e.length;n++){const r=e[n];for(;t.length>=2;){const e=t[t.length-1],n=t[t.length-2];if(!((e.x-n.x)*(r.y-n.y)>=(e.y-n.y)*(r.x-n.x)))break;t.pop()}t.push(r)}t.pop();const n=[];for(let t=e.length-1;t>=0;t--){const r=e[t];for(;n.length>=2;){const e=n[n.length-1],t=n[n.length-2];if(!((e.x-t.x)*(r.y-t.y)>=(e.y-t.y)*(r.x-t.x)))break;n.pop()}n.push(r)}return n.pop(),1===t.length&&1===n.length&&t[0].x===n[0].x&&t[0].y===n[0].y?t:t.concat(n)}(t)}([...o,...function(e){const{top:t,right:n,bottom:r,left:o}=e;return[{x:o,y:t},{x:n,y:t},{x:n,y:r},{x:o,y:r}]}(t.getBoundingClientRect())]);f(a),h(!0)}),[h]);return s((()=>()=>g()),[g]),s((()=>{if(p&&v){const e=e=>y(e,v),t=e=>y(e,p);return p.addEventListener("pointerleave",e),v.addEventListener("pointerleave",t),()=>{p.removeEventListener("pointerleave",e),v.removeEventListener("pointerleave",t)}}}),[p,v,y,g]),s((()=>{if(d){const e=e=>{const t=e.target,n={x:e.clientX,y:e.clientY},r=(null==p?void 0:p.contains(t))||(null==v?void 0:v.contains(t)),o=!function(e,t){const{x:n,y:r}=e;let o=!1;for(let e=0,a=t.length-1;e<t.length;a=e++){const i=t[e].x,l=t[e].y,c=t[a].x,s=t[a].y;l>r!=s>r&&n<(c-i)*(r-l)/(s-l)+i&&(o=!o)}return o}(n,d);r?g():o&&(g(),m())};return document.addEventListener("pointermove",e),()=>document.removeEventListener("pointermove",e)}}),[p,v,d,m,g]),a(Yo,S({},e,{ref:l}))})),[Go,Xo]=Po(jo,{isInside:!1}),Yo=d(((e,t)=>{const{__scopeTooltip:n,children:r,"aria-label":o,onEscapeKeyDown:i,onPointerDownOutside:l,...c}=e,u=Fo(Ko,n),d=Io(n),{onClose:f}=u;return s((()=>(document.addEventListener(No,f),()=>document.removeEventListener(No,f))),[f]),s((()=>{if(u.trigger){const e=e=>{const t=e.target;null!=t&&t.contains(u.trigger)&&f()};return window.addEventListener("scroll",e,{capture:!0}),()=>window.removeEventListener("scroll",e,{capture:!0})}}),[u.trigger,f]),a(J,{asChild:!0,disableOutsidePointerEvents:!1,onEscapeKeyDown:i,onPointerDownOutside:l,onFocusOutside:e=>e.preventDefault(),onDismiss:f},a(To,S({"data-state":u.stateAttribute},d,c,{ref:t,style:{...c.style,"--radix-tooltip-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-tooltip-content-available-width":"var(--radix-popper-available-width)","--radix-tooltip-content-available-height":"var(--radix-popper-available-height)","--radix-tooltip-trigger-width":"var(--radix-popper-anchor-width)","--radix-tooltip-trigger-height":"var(--radix-popper-anchor-height)"}}),a(V,null,r),a(Go,{scope:n,isInside:!0},a(Ao,{id:u.contentId,role:"tooltip"},o||r))))}));const Jo=e=>{const{__scopeTooltip:t,delayDuration:r=Lo,skipDelayDuration:o=300,disableHoverableContent:i=!1,children:l}=e,[d,f]=u(!0),p=c(!1),m=c(0);return s((()=>{const e=m.current;return()=>window.clearTimeout(e)}),[]),a(Ro,{scope:t,isOpenDelayed:d,delayDuration:r,onOpen:n((()=>{window.clearTimeout(m.current),f(!1)}),[]),onClose:n((()=>{window.clearTimeout(m.current),m.current=window.setTimeout((()=>f(!0)),o)}),[o]),isPointerInTransitRef:p,onPointerInTransitChange:n((e=>{p.current=e}),[]),disableHoverableContent:i},l)},Qo=e=>{const{__scopeTooltip:t,children:r,open:i,defaultOpen:l=!1,onOpenChange:d,disableHoverableContent:f,delayDuration:p}=e,m=Ho(jo,e.__scopeTooltip),v=Io(t),[h,g]=u(null),y=j(),w=c(0),b=null!=f?f:m.disableHoverableContent,_=null!=p?p:m.delayDuration,x=c(!1),[E=!1,O]=F({prop:i,defaultProp:l,onChange:e=>{e?(m.onOpen(),document.dispatchEvent(new CustomEvent(No))):m.onClose(),null==d||d(e)}}),C=o((()=>E?x.current?"delayed-open":"instant-open":"closed"),[E]),D=n((()=>{window.clearTimeout(w.current),x.current=!1,O(!0)}),[O]),T=n((()=>{window.clearTimeout(w.current),O(!1)}),[O]),k=n((()=>{window.clearTimeout(w.current),w.current=window.setTimeout((()=>{x.current=!0,O(!0)}),_)}),[_,O]);return s((()=>()=>window.clearTimeout(w.current)),[]),a(Co,v,a(Zo,{scope:t,contentId:y,open:E,stateAttribute:C,trigger:h,onTriggerChange:g,onTriggerEnter:n((()=>{m.isOpenDelayed?k():D()}),[m.isOpenDelayed,k,D]),onTriggerLeave:n((()=>{b?T():window.clearTimeout(w.current)}),[T,b]),onOpen:D,onClose:T,disableHoverableContent:b},r))},ea=Bo,ta=e=>{const{__scopeTooltip:t,forceMount:n,children:r,container:o}=e,i=Fo(Vo,t);return a(Wo,{scope:t,forceMount:n},a(fe,{present:n||i.open},a(de,{asChild:!0,container:o},r)))},na=$o,ra=d(((e,t)=>{const{__scopeTooltip:n,...r}=e,o=Io(n);return Xo("TooltipArrow",n).isInside?null:a(ko,S({},o,r,{ref:t}))}));var oa="Tooltip-modules_content__--tK0",aa="Tooltip-modules_arrow__4vjj8";function ia(e){var n,r=e.children,o=e.content,a=e.open,i=e.defaultOpen,l=e.onOpenChange,c=e.side,s=void 0===c?"top":c,u=e.align,d=void 0===u?"center":u,f=e.className,p=void 0===f?"":f,m=e.delayDuration,v=void 0===m?200:m,h=e.sideOffset,g=void 0===h?4:h,y=e.isPortal,w=void 0!==y&&y,b=x(e,["children","content","open","defaultOpen","onOpenChange","side","align","className","delayDuration","sideOffset","isPortal"]),E=t.createElement(na,_({sideOffset:g,side:s,align:d},b,{className:D(oa,(n={},n[p]=p,n))}),o,t.createElement(ra,{className:aa,width:11,height:5}));return o?t.createElement(Jo,null,t.createElement(Qo,{delayDuration:v,open:a,defaultOpen:i,onOpenChange:l},t.createElement(ea,{asChild:!0},r),w?t.createElement(ta,null,E):E)):r}function la(e,[t,n]){return Math.min(n,Math.max(t,e))}const ca=[" ","Enter","ArrowUp","ArrowDown"],sa=[" ","Enter"],ua="Select",[da,fa,pa]=Kt(ua),[ma,va]=I(ua,[pa,po]),ha=po(),[ga,ya]=ma(ua),[wa,ba]=ma(ua),_a=d(((e,t)=>{const{__scopeSelect:n,disabled:r=!1,...o}=e,i=ha(n),l=ya("SelectTrigger",n),c=l.disabled||r,s=M(t,l.onTriggerChange),u=fa(n),[d,f,p]=qa((e=>{const t=u().filter((e=>!e.disabled)),n=t.find((e=>e.value===l.value)),r=Ga(t,e,n);void 0!==r&&l.onValueChange(r.value)})),m=()=>{c||(l.onOpenChange(!0),p())};return a(Do,S({asChild:!0},i),a(K.button,S({type:"button",role:"combobox","aria-controls":l.contentId,"aria-expanded":l.open,"aria-required":l.required,"aria-autocomplete":"none",dir:l.dir,"data-state":l.open?"open":"closed",disabled:c,"data-disabled":c?"":void 0,"data-placeholder":void 0===l.value?"":void 0},o,{ref:s,onClick:A(o.onClick,(e=>{e.currentTarget.focus()})),onPointerDown:A(o.onPointerDown,(e=>{const t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&(m(),l.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)},e.preventDefault())})),onKeyDown:A(o.onKeyDown,(e=>{const t=""!==d.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||f(e.key),t&&" "===e.key||ca.includes(e.key)&&(m(),e.preventDefault())}))})))})),xa=d(((e,t)=>{const{__scopeSelect:n,className:r,style:o,children:i,placeholder:l,...c}=e,s=ya("SelectValue",n),{onValueNodeHasChildrenChange:u}=s,d=void 0!==i,f=M(t,s.onValueNodeChange);return N((()=>{u(d)}),[u,d]),a(K.span,S({},c,{ref:f,style:{pointerEvents:"none"}}),void 0===s.value&&void 0!==l?l:i)})),Ea=d(((e,t)=>{const{__scopeSelect:n,children:r,...o}=e;return a(K.span,S({"aria-hidden":!0},o,{ref:t}),r||"▼")})),Oa="SelectContent",Ca=d(((e,t)=>{const n=ya(Oa,e.__scopeSelect),[r,o]=u();if(N((()=>{o(new DocumentFragment)}),[]),!n.open){const t=r;return t?b(a(Ta,{scope:e.__scopeSelect},a(da.Slot,{scope:e.__scopeSelect},a("div",null,e.children))),t):null}return a(Sa,S({},e,{ref:t}))})),Da=10,[Ta,ka]=ma(Oa),Sa=d(((e,t)=>{const{__scopeSelect:r,position:o="item-aligned",onCloseAutoFocus:i,onEscapeKeyDown:l,onPointerDownOutside:d,side:f,sideOffset:p,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_,...x}=e,E=ya(Oa,r),[O,C]=u(null),[D,T]=u(null),k=M(t,(e=>C(e))),[P,I]=u(null),[L,N]=u(null),R=fa(r),[H,j]=u(!1),Z=c(!1);s((()=>{if(O)return rt(O)}),[O]),ve();const F=n((e=>{const[t,...n]=R().map((e=>e.ref.current)),[r]=n.slice(-1),o=document.activeElement;for(const n of e){if(n===o)return;if(null==n||n.scrollIntoView({block:"nearest"}),n===t&&D&&(D.scrollTop=0),n===r&&D&&(D.scrollTop=D.scrollHeight),null==n||n.focus(),document.activeElement!==o)return}}),[R,D]),B=n((()=>F([P,O])),[F,P,O]);s((()=>{H&&B()}),[H,B]);const{onOpenChange:V,triggerPointerDownPosRef:W}=E;s((()=>{if(O){let e={x:0,y:0};const t=t=>{var n,r,o,a;e={x:Math.abs(Math.round(t.pageX)-(null!==(n=null===(r=W.current)||void 0===r?void 0:r.x)&&void 0!==n?n:0)),y:Math.abs(Math.round(t.pageY)-(null!==(o=null===(a=W.current)||void 0===a?void 0:a.y)&&void 0!==o?o:0))}},n=n=>{e.x<=10&&e.y<=10?n.preventDefault():O.contains(n.target)||V(!1),document.removeEventListener("pointermove",t),W.current=null};return null!==W.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",n,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",n,{capture:!0})}}}),[O,V,W]),s((()=>{const e=()=>V(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}}),[V]);const[z,K]=qa((e=>{const t=R().filter((e=>!e.disabled)),n=t.find((e=>e.ref.current===document.activeElement)),r=Ga(t,e,n);r&&setTimeout((()=>r.ref.current.focus()))})),$=n(((e,t,n)=>{const r=!Z.current&&!n;(void 0!==E.value&&E.value===t||r)&&(I(e),r&&(Z.current=!0))}),[E.value]),q=n((()=>null==O?void 0:O.focus()),[O]),G=n(((e,t,n)=>{const r=!Z.current&&!n;(void 0!==E.value&&E.value===t||r)&&N(e)}),[E.value]),X="popper"===o?Pa:Aa,Y=X===Pa?{side:f,sideOffset:p,align:m,alignOffset:v,arrowPadding:h,collisionBoundary:g,collisionPadding:y,sticky:w,hideWhenDetached:b,avoidCollisions:_}:{};return a(Ta,{scope:r,content:O,viewport:D,onViewportChange:T,itemRefCallback:$,selectedItem:P,onItemLeave:q,itemTextRefCallback:G,focusSelectedItem:B,selectedItemText:L,position:o,isPositioned:H,searchRef:z},a(Xe,{as:U,allowPinchZoom:!0},a(oe,{asChild:!0,trapped:E.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:A(i,(e=>{var t;null===(t=E.trigger)||void 0===t||t.focus({preventScroll:!0}),e.preventDefault()}))},a(J,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:l,onPointerDownOutside:d,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>E.onOpenChange(!1)},a(X,S({role:"listbox",id:E.contentId,"data-state":E.open?"open":"closed",dir:E.dir,onContextMenu:e=>e.preventDefault()},x,Y,{onPlaced:()=>j(!0),ref:k,style:{display:"flex",flexDirection:"column",outline:"none",...x.style},onKeyDown:A(x.onKeyDown,(e=>{const t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||K(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=R().filter((e=>!e.disabled)).map((e=>e.ref.current));if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){const n=e.target,r=t.indexOf(n);t=t.slice(r+1)}setTimeout((()=>F(t))),e.preventDefault()}}))}))))))})),Aa=d(((e,t)=>{const{__scopeSelect:r,onPlaced:o,...i}=e,l=ya(Oa,r),s=ka(Oa,r),[d,f]=u(null),[p,m]=u(null),v=M(t,(e=>m(e))),h=fa(r),g=c(!1),y=c(!0),{viewport:w,selectedItem:b,selectedItemText:_,focusSelectedItem:x}=s,E=n((()=>{if(l.trigger&&l.valueNode&&d&&p&&w&&b&&_){const e=l.trigger.getBoundingClientRect(),t=p.getBoundingClientRect(),n=l.valueNode.getBoundingClientRect(),r=_.getBoundingClientRect();if("rtl"!==l.dir){const o=r.left-t.left,a=n.left-o,i=e.left-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-Da,u=la(a,[Da,s-c]);d.style.minWidth=l+"px",d.style.left=u+"px"}else{const o=t.right-r.right,a=window.innerWidth-n.right-o,i=window.innerWidth-e.right-a,l=e.width+i,c=Math.max(l,t.width),s=window.innerWidth-Da,u=la(a,[Da,s-c]);d.style.minWidth=l+"px",d.style.right=u+"px"}const a=h(),i=window.innerHeight-2*Da,c=w.scrollHeight,s=window.getComputedStyle(p),u=parseInt(s.borderTopWidth,10),f=parseInt(s.paddingTop,10),m=parseInt(s.borderBottomWidth,10),v=u+f+c+parseInt(s.paddingBottom,10)+m,y=Math.min(5*b.offsetHeight,v),x=window.getComputedStyle(w),E=parseInt(x.paddingTop,10),O=parseInt(x.paddingBottom,10),C=e.top+e.height/2-Da,D=i-C,T=b.offsetHeight/2,k=u+f+(b.offsetTop+T),S=v-k;if(k<=C){const e=b===a[a.length-1].ref.current;d.style.bottom="0px";const t=p.clientHeight-w.offsetTop-w.offsetHeight,n=k+Math.max(D,T+(e?O:0)+t+m);d.style.height=n+"px"}else{const e=b===a[0].ref.current;d.style.top="0px";const t=Math.max(C,u+w.offsetTop+(e?E:0)+T)+S;d.style.height=t+"px",w.scrollTop=k-C+w.offsetTop}d.style.margin=`${Da}px 0`,d.style.minHeight=y+"px",d.style.maxHeight=i+"px",null==o||o(),requestAnimationFrame((()=>g.current=!0))}}),[h,l.trigger,l.valueNode,d,p,w,b,_,l.dir,o]);N((()=>E()),[E]);const[O,C]=u();N((()=>{p&&C(window.getComputedStyle(p).zIndex)}),[p]);const D=n((e=>{e&&!0===y.current&&(E(),null==x||x(),y.current=!1)}),[E,x]);return a(Ma,{scope:r,contentWrapper:d,shouldExpandOnScrollRef:g,onScrollButtonChange:D},a("div",{ref:f,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:O}},a(K.div,S({},i,{ref:v,style:{boxSizing:"border-box",maxHeight:"100%",...i.style}}))))})),Pa=d(((e,t)=>{const{__scopeSelect:n,align:r="start",collisionPadding:o=Da,...i}=e,l=ha(n);return a(To,S({},l,i,{ref:t,align:r,collisionPadding:o,style:{boxSizing:"border-box",...i.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}}))})),[Ma,Ia]=ma(Oa,{}),La="SelectViewport",Na=d(((e,t)=>{const{__scopeSelect:n,...r}=e,o=ka(La,n),i=Ia(La,n),l=M(t,o.onViewportChange),s=c(0);return a(v,null,a("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"}}),a(da.Slot,{scope:n},a(K.div,S({"data-radix-select-viewport":"",role:"presentation"},r,{ref:l,style:{position:"relative",flex:1,overflow:"auto",...r.style},onScroll:A(r.onScroll,(e=>{const t=e.currentTarget,{contentWrapper:n,shouldExpandOnScrollRef:r}=i;if(null!=r&&r.current&&n){const e=Math.abs(s.current-t.scrollTop);if(e>0){const r=window.innerHeight-2*Da,o=parseFloat(n.style.minHeight),a=parseFloat(n.style.height),i=Math.max(o,a);if(i<r){const o=i+e,a=Math.min(r,o),l=o-a;n.style.height=a+"px","0px"===n.style.bottom&&(t.scrollTop=l>0?l:0,n.style.justifyContent="flex-end")}}}s.current=t.scrollTop}))}))))}));ma("SelectGroup");const Ra="SelectItem",[Ha,ja]=ma(Ra),Za=d(((e,t)=>{const{__scopeSelect:r,value:o,disabled:i=!1,textValue:l,...c}=e,s=ya(Ra,r),d=ka(Ra,r),f=s.value===o,[p,m]=u(null!=l?l:""),[v,h]=u(!1),g=M(t,(e=>{var t;return null===(t=d.itemRefCallback)||void 0===t?void 0:t.call(d,e,o,i)})),y=j(),w=()=>{i||(s.onValueChange(o),s.onOpenChange(!1))};return a(Ha,{scope:r,value:o,disabled:i,textId:y,isSelected:f,onItemTextChange:n((e=>{m((t=>{var n;return t||(null!==(n=null==e?void 0:e.textContent)&&void 0!==n?n:"").trim()}))}),[])},a(da.ItemSlot,{scope:r,value:o,disabled:i,textValue:p},a(K.div,S({role:"option","aria-labelledby":y,"data-highlighted":v?"":void 0,"aria-selected":f&&v,"data-state":f?"checked":"unchecked","aria-disabled":i||void 0,"data-disabled":i?"":void 0,tabIndex:i?void 0:-1},c,{ref:g,onFocus:A(c.onFocus,(()=>h(!0))),onBlur:A(c.onBlur,(()=>h(!1))),onPointerUp:A(c.onPointerUp,w),onPointerMove:A(c.onPointerMove,(e=>{var t;i?null===(t=d.onItemLeave)||void 0===t||t.call(d):e.currentTarget.focus({preventScroll:!0})})),onPointerLeave:A(c.onPointerLeave,(e=>{var t;e.currentTarget===document.activeElement&&(null===(t=d.onItemLeave)||void 0===t||t.call(d))})),onKeyDown:A(c.onKeyDown,(e=>{var t;""!==(null===(t=d.searchRef)||void 0===t?void 0:t.current)&&" "===e.key||(sa.includes(e.key)&&w()," "===e.key&&e.preventDefault())}))}))))})),Fa="SelectItemText",Ua=d(((e,t)=>{const{__scopeSelect:n,className:r,style:i,...l}=e,c=ya(Fa,n),s=ka(Fa,n),d=ja(Fa,n),f=ba(Fa,n),[p,m]=u(null),h=M(t,(e=>m(e)),d.onItemTextChange,(e=>{var t;return null===(t=s.itemTextRefCallback)||void 0===t?void 0:t.call(s,e,d.value,d.disabled)})),g=null==p?void 0:p.textContent,y=o((()=>a("option",{key:d.value,value:d.value,disabled:d.disabled},g)),[d.disabled,d.value,g]),{onNativeOptionAdd:w,onNativeOptionRemove:_}=f;return N((()=>(w(y),()=>_(y))),[w,_,y]),a(v,null,a(K.span,S({id:d.textId},l,{ref:h})),d.isSelected&&c.valueNode&&!c.valueNodeHasChildren?b(l.children,c.valueNode):null)})),Ba="SelectScrollUpButton",Va=d(((e,t)=>{const n=ka(Ba,e.__scopeSelect),r=Ia(Ba,e.__scopeSelect),[o,i]=u(!1),l=M(t,r.onScrollButtonChange);return N((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollTop>0;i(e)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),o?a(Ka,S({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}})):null})),Wa="SelectScrollDownButton",za=d(((e,t)=>{const n=ka(Wa,e.__scopeSelect),r=Ia(Wa,e.__scopeSelect),[o,i]=u(!1),l=M(t,r.onScrollButtonChange);return N((()=>{if(n.viewport&&n.isPositioned){const t=n.viewport;function e(){const e=t.scrollHeight-t.clientHeight,n=Math.ceil(t.scrollTop)<e;i(n)}return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}}),[n.viewport,n.isPositioned]),o?a(Ka,S({},e,{ref:l,onAutoScroll:()=>{const{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}})):null})),Ka=d(((e,t)=>{const{__scopeSelect:r,onAutoScroll:o,...i}=e,l=ka("SelectScrollButton",r),u=c(null),d=fa(r),f=n((()=>{null!==u.current&&(window.clearInterval(u.current),u.current=null)}),[]);return s((()=>()=>f()),[f]),N((()=>{var e;const t=d().find((e=>e.ref.current===document.activeElement));null==t||null===(e=t.ref.current)||void 0===e||e.scrollIntoView({block:"nearest"})}),[d]),a(K.div,S({"aria-hidden":!0},i,{ref:t,style:{flexShrink:0,...i.style},onPointerDown:A(i.onPointerDown,(()=>{null===u.current&&(u.current=window.setInterval(o,50))})),onPointerMove:A(i.onPointerMove,(()=>{var e;null===(e=l.onItemLeave)||void 0===e||e.call(l),null===u.current&&(u.current=window.setInterval(o,50))})),onPointerLeave:A(i.onPointerLeave,(()=>{f()}))}))})),$a=d(((e,t)=>{const{value:n,...r}=e,o=c(null),i=M(t,o),l=In(n);return s((()=>{const e=o.current,t=window.HTMLSelectElement.prototype,r=Object.getOwnPropertyDescriptor(t,"value").set;if(l!==n&&r){const t=new Event("change",{bubbles:!0});r.call(e,n),e.dispatchEvent(t)}}),[l,n]),a(So,{asChild:!0},a("select",S({},r,{ref:i,defaultValue:n})))}));function qa(e){const t=Z(e),r=c(""),o=c(0),a=n((e=>{const n=r.current+e;t(n),function e(t){r.current=t,window.clearTimeout(o.current),""!==t&&(o.current=window.setTimeout((()=>e("")),1e3))}(n)}),[t]),i=n((()=>{r.current="",window.clearTimeout(o.current)}),[]);return s((()=>()=>window.clearTimeout(o.current)),[]),[r,a,i]}function Ga(e,t,n){const r=t.length>1&&Array.from(t).every((e=>e===t[0]))?t[0]:t,o=n?e.indexOf(n):-1;let a=(i=e,l=Math.max(o,0),i.map(((e,t)=>i[(l+t)%i.length])));var i,l;1===r.length&&(a=a.filter((e=>e!==n)));const c=a.find((e=>e.textValue.toLowerCase().startsWith(r.toLowerCase())));return c!==n?c:void 0}$a.displayName="BubbleSelect";const Xa=e=>{const{__scopeSelect:t,children:r,open:o,defaultOpen:i,onOpenChange:l,value:s,defaultValue:d,onValueChange:f,dir:p,name:m,autoComplete:v,disabled:h,required:g}=e,y=ha(t),[w,b]=u(null),[_,x]=u(null),[E,O]=u(!1),C=qt(p),[D=!1,T]=F({prop:o,defaultProp:i,onChange:l}),[k,S]=F({prop:s,defaultProp:d,onChange:f}),A=c(null),P=!w||Boolean(w.closest("form")),[M,I]=u(new Set),L=Array.from(M).map((e=>e.props.value)).join(";");return a(Co,y,a(ga,{required:g,scope:t,trigger:w,onTriggerChange:b,valueNode:_,onValueNodeChange:x,valueNodeHasChildren:E,onValueNodeHasChildrenChange:O,contentId:j(),value:k,onValueChange:S,open:D,onOpenChange:T,dir:C,triggerPointerDownPosRef:A,disabled:h},a(da.Provider,{scope:t},a(wa,{scope:e.__scopeSelect,onNativeOptionAdd:n((e=>{I((t=>new Set(t).add(e)))}),[]),onNativeOptionRemove:n((e=>{I((t=>{const n=new Set(t);return n.delete(e),n}))}),[])},r)),P?a($a,{key:L,"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:v,value:k,onChange:e=>S(e.target.value),disabled:h},void 0===k?a("option",{value:""}):null,Array.from(M)):null))},Ya=_a,Ja=xa,Qa=Ea,ei=Ca,ti=Na,ni=Za,ri=Ua,oi=Va,ai=za;var ii,li;function ci(){return ci=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},ci.apply(this,arguments)}var si,ui;function di(){return di=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},di.apply(this,arguments)}var fi,pi;function mi(){return mi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},mi.apply(this,arguments)}var vi,hi;function gi(){return gi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gi.apply(this,arguments)}var yi,wi;function bi(){return bi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},bi.apply(this,arguments)}var _i,xi;function Ei(){return Ei=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ei.apply(this,arguments)}var Oi,Ci;function Di(){return Di=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Di.apply(this,arguments)}var Ti,ki;function Si(){return Si=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Si.apply(this,arguments)}var Ai,Pi;function Mi(){return Mi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mi.apply(this,arguments)}var Ii,Li,Ni=function(t){return e.createElement("svg",Mi({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"keyboard_arrow_down_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ai||(Ai=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Pi||(Pi=e.createElement("g",{mask:"url(#keyboard_arrow_down_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 14.677a.93.93 0 0 1-.34-.066.84.84 0 0 1-.293-.19L6.873 9.927a.717.717 0 0 1-.217-.527c0-.206.072-.382.217-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217L12 12.946l4.073-4.073a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217.145.145.217.32.217.527a.717.717 0 0 1-.217.527l-4.494 4.494a.83.83 0 0 1-.633.256Z"}))))};function Ri(){return Ri=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ri.apply(this,arguments)}var Hi,ji;function Zi(){return Zi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Zi.apply(this,arguments)}var Fi,Ui;function Bi(){return Bi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Bi.apply(this,arguments)}var Vi,Wi;function zi(){return zi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},zi.apply(this,arguments)}var Ki,$i;function qi(){return qi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},qi.apply(this,arguments)}var Gi,Xi;function Yi(){return Yi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Yi.apply(this,arguments)}var Ji,Qi;function el(){return el=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},el.apply(this,arguments)}var tl,nl;function rl(){return rl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},rl.apply(this,arguments)}var ol,al;function il(){return il=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},il.apply(this,arguments)}var ll,cl;function sl(){return sl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},sl.apply(this,arguments)}var ul,dl;function fl(){return fl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},fl.apply(this,arguments)}var pl,ml;function vl(){return vl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},vl.apply(this,arguments)}var hl,gl;function yl(){return yl=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},yl.apply(this,arguments)}var wl,bl;function _l(){return _l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},_l.apply(this,arguments)}var xl=Object.freeze({__proto__:null,AddIcon:function(t){return e.createElement("svg",ci({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"add_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ii||(ii=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),li||(li=e.createElement("g",{mask:"url(#add_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 18.75a.725.725 0 0 1-.535-.216.726.726 0 0 1-.215-.534v-5.25H6a.726.726 0 0 1-.534-.216A.726.726 0 0 1 5.25 12c0-.213.072-.391.216-.535A.726.726 0 0 1 6 11.25h5.25V6c0-.213.072-.39.216-.534A.726.726 0 0 1 12 5.25c.213 0 .391.072.535.216A.726.726 0 0 1 12.75 6v5.25H18c.212 0 .39.072.534.216a.726.726 0 0 1 .216.534c0 .213-.072.391-.216.535a.726.726 0 0 1-.534.215h-5.25V18c0 .212-.072.39-.216.534a.726.726 0 0 1-.534.216Z"}))))},ArrowDownIcon:Ni,BlockIcon:function(t){return e.createElement("svg",di({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"block_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},si||(si=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ui||(ui=e.createElement("g",{mask:"url(#block_svg__a)"},e.createElement("path",{fill:"#42454B",d:"M12.002 21.5a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-.938-.16-1.842-.48-2.71a8.124 8.124 0 0 0-1.374-2.382L6.908 18.146a7.93 7.93 0 0 0 2.382 1.378A7.839 7.839 0 0 0 12 20Zm-6.146-2.908L17.092 5.854a7.62 7.62 0 0 0-2.375-1.383A7.947 7.947 0 0 0 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 .938.159 1.842.476 2.71a7.93 7.93 0 0 0 1.378 2.382Z"}))))},BlurOnIcon:function(t){return e.createElement("svg",mi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"blur_on_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},fi||(fi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),pi||(pi=e.createElement("g",{mask:"url(#blur_on_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3 14.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm3 8.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 17.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658A.893.893 0 0 1 6 13.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 6 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265A.893.893 0 0 1 5.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 6 5.077c.262 0 .48.088.658.265A.893.893 0 0 1 6.923 6c0 .262-.088.48-.265.658A.893.893 0 0 1 6 6.923Zm4.002 8.423c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM10 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265A.893.893 0 0 1 9.077 6c0-.262.088-.48.265-.658A.893.893 0 0 1 10 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM10 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4.002 11.846c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394Zm0-4c-.373 0-.691-.13-.954-.392a1.292 1.292 0 0 1-.394-.952c0-.373.13-.691.392-.954.261-.263.578-.394.952-.394.373 0 .691.13.954.392.263.261.394.578.394.952 0 .373-.13.691-.392.954a1.292 1.292 0 0 1-.952.394ZM14 18.923a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-12a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 14 5.077c.261 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265ZM14 21.5a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-18a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm4 15.423a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.261.088-.48.265-.658a.893.893 0 0 1 .658-.265c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 9.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .261-.088.48-.265.658a.893.893 0 0 1-.658.265Zm0-4a.893.893 0 0 1-.658-.265.893.893 0 0 1-.265-.658c0-.262.088-.48.265-.658A.893.893 0 0 1 18 5.077c.262 0 .48.088.658.265a.893.893 0 0 1 .265.658c0 .262-.088.48-.265.658a.893.893 0 0 1-.658.265Zm3 7.577a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Zm0-4a.48.48 0 0 1-.35-.15.48.48 0 0 1 0-.7.48.48 0 0 1 .7 0 .48.48 0 0 1 0 .7.48.48 0 0 1-.35.15Z"}))))},CachedIcon:function(t){return e.createElement("svg",gi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"cached_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},vi||(vi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),hi||(hi=e.createElement("g",{mask:"url(#cached_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12.05 19.75c-2.163 0-4.004-.753-5.522-2.258C5.009 15.987 4.25 14.156 4.25 12v-.78l-1.323 1.322a.725.725 0 0 1-.522.213.707.707 0 0 1-.532-.213.718.718 0 0 1-.217-.527c0-.206.072-.382.217-.527l2.494-2.494A.867.867 0 0 1 5 8.724c.241 0 .452.09.633.27l2.494 2.495c.138.138.21.312.212.521a.707.707 0 0 1-.212.532.718.718 0 0 1-.527.218.718.718 0 0 1-.527-.218L5.75 11.22V12c0 1.737.612 3.213 1.835 4.428 1.223 1.215 2.711 1.822 4.465 1.822.292 0 .584-.02.874-.06.29-.04.577-.107.859-.204a.879.879 0 0 1 .603.02.81.81 0 0 1 .426.396.678.678 0 0 1 .018.585.664.664 0 0 1-.444.388c-.376.133-.762.23-1.155.288a8.049 8.049 0 0 1-1.181.087Zm-.1-14c-.292 0-.584.02-.874.06-.29.04-.577.107-.859.203a.901.901 0 0 1-.61-.02.808.808 0 0 1-.434-.395.655.655 0 0 1-.023-.57.646.646 0 0 1 .423-.388c.387-.133.78-.231 1.176-.295a7.593 7.593 0 0 1 1.201-.095c2.163 0 4.004.753 5.522 2.258C18.991 8.013 19.75 9.844 19.75 12v.78l1.323-1.322a.725.725 0 0 1 .522-.213.707.707 0 0 1 .532.213c.145.144.217.32.217.527a.717.717 0 0 1-.217.527l-2.494 2.494a.867.867 0 0 1-.633.27.867.867 0 0 1-.633-.27l-2.494-2.495a.724.724 0 0 1-.212-.522.707.707 0 0 1 .212-.531.717.717 0 0 1 .527-.218c.206 0 .382.073.527.218l1.323 1.323V12c0-1.737-.611-3.213-1.835-4.428-1.223-1.215-2.711-1.822-4.465-1.822Z"}))))},CheckCircleIcon:function(t){return e.createElement("svg",bi({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"check_circle_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},yi||(yi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),wi||(wi=e.createElement("g",{mask:"url(#check_circle_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m10.58 14.146-2.322-2.323a.724.724 0 0 0-.522-.212.707.707 0 0 0-.532.212.717.717 0 0 0-.217.527c0 .206.072.382.217.527l2.744 2.744a.87.87 0 0 0 .633.271c.24 0 .452-.09.632-.27l5.564-5.564a.725.725 0 0 0 .212-.522.707.707 0 0 0-.212-.532.718.718 0 0 0-.527-.217.717.717 0 0 0-.527.217l-5.142 5.142Zm1.422 7.354a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749Z"}))))},CloseIcon:Wt,DeleteIcon:function(t){return e.createElement("svg",Ei({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"delete_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},_i||(_i=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),xi||(xi=e.createElement("g",{mask:"url(#delete_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M7.308 20.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6h-.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535.73.73 0 0 1 .215-.535.726.726 0 0 1 .535-.215H9a.84.84 0 0 1 .263-.63.889.889 0 0 1 .64-.255h4.193c.251 0 .465.085.64.254A.84.84 0 0 1 15 4.5h3.75a.73.73 0 0 1 .535.215.726.726 0 0 1 .215.535.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215h-.25v12.692c0 .506-.175.933-.525 1.283-.35.35-.778.525-1.283.525H7.308ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087h9.385a.3.3 0 0 0 .221-.087.3.3 0 0 0 .087-.22V6H7Zm2.404 10.25a.73.73 0 0 0 .215.535.726.726 0 0 0 .535.215.726.726 0 0 0 .534-.215.726.726 0 0 0 .216-.535v-7.5a.726.726 0 0 0-.216-.535.726.726 0 0 0-.534-.215.726.726 0 0 0-.535.215.726.726 0 0 0-.215.535v7.5Zm3.692 0c0 .213.072.391.216.535a.726.726 0 0 0 .534.215.726.726 0 0 0 .535-.215.726.726 0 0 0 .215-.535v-7.5a.726.726 0 0 0-.215-.535.726.726 0 0 0-.535-.215.726.726 0 0 0-.534.215.726.726 0 0 0-.216.535v7.5ZM7 6v12.692a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087H7V6Z"}))))},InfoIcon:function(t){return e.createElement("svg",Di({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Oi||(Oi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ci||(Ci=e.createElement("g",{mask:"url(#info_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 16.75a.726.726 0 0 0 .535-.216.726.726 0 0 0 .215-.534v-4.25a.726.726 0 0 0-.216-.534A.727.727 0 0 0 12 11a.725.725 0 0 0-.535.216.726.726 0 0 0-.215.534V16c0 .212.072.39.216.534a.726.726 0 0 0 .534.216Zm0-7.462a.78.78 0 0 0 .575-.232.781.781 0 0 0 .233-.575.782.782 0 0 0-.232-.576.782.782 0 0 0-.576-.232.781.781 0 0 0-.575.232.782.782 0 0 0-.233.576c0 .229.078.42.232.575a.781.781 0 0 0 .576.232Zm.002 12.212a9.255 9.255 0 0 1-3.705-.748 9.598 9.598 0 0 1-3.018-2.03 9.591 9.591 0 0 1-2.03-3.016 9.245 9.245 0 0 1-.749-3.704c0-1.314.25-2.55.748-3.705a9.597 9.597 0 0 1 2.03-3.018 9.592 9.592 0 0 1 3.016-2.03 9.245 9.245 0 0 1 3.704-.749c1.314 0 2.55.25 3.705.748a9.597 9.597 0 0 1 3.018 2.03 9.592 9.592 0 0 1 2.03 3.016 9.245 9.245 0 0 1 .749 3.704c0 1.314-.25 2.55-.748 3.705a9.598 9.598 0 0 1-2.03 3.018 9.592 9.592 0 0 1-3.016 2.03 9.245 9.245 0 0 1-3.704.749ZM12 20c2.233 0 4.125-.775 5.675-2.325C19.225 16.125 20 14.233 20 12c0-2.233-.775-4.125-2.325-5.675C16.125 4.775 14.233 4 12 4c-2.233 0-4.125.775-5.675 2.325C4.775 7.875 4 9.767 4 12c0 2.233.775 4.125 2.325 5.675C7.875 19.225 9.767 20 12 20Z"}))))},InfoSolidIcon:function(t){return e.createElement("svg",Si({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"info-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ti||(Ti=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ki||(ki=e.createElement("g",{mask:"url(#info-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 17a.97.97 0 0 0 .713-.288A.968.968 0 0 0 13 16v-4a.968.968 0 0 0-.287-.713A.968.968 0 0 0 12 11a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 12v4c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-8c.283 0 .52-.096.713-.287A.967.967 0 0 0 13 8a.967.967 0 0 0-.287-.713A.968.968 0 0 0 12 7a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 8c0 .283.096.52.287.713.192.191.43.287.713.287Zm0 13a9.738 9.738 0 0 1-3.9-.788 10.099 10.099 0 0 1-3.175-2.137c-.9-.9-1.612-1.958-2.137-3.175A9.738 9.738 0 0 1 2 12a9.74 9.74 0 0 1 .788-3.9 10.099 10.099 0 0 1 2.137-3.175c.9-.9 1.958-1.612 3.175-2.137A9.738 9.738 0 0 1 12 2a9.74 9.74 0 0 1 3.9.788 10.098 10.098 0 0 1 3.175 2.137c.9.9 1.613 1.958 2.137 3.175A9.738 9.738 0 0 1 22 12a9.738 9.738 0 0 1-.788 3.9 10.098 10.098 0 0 1-2.137 3.175c-.9.9-1.958 1.613-3.175 2.137A9.738 9.738 0 0 1 12 22Z"}))))},MicOffIcon:function(t){return e.createElement("svg",Bi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Fi||(Fi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Ui||(Ui=e.createElement("g",{mask:"url(#mic_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25-1.377-1.376V5a.967.967 0 0 0-.287-.713.968.968 0 0 0-.713-.287.968.968 0 0 0-.712.287.967.967 0 0 0-.288.713v2.535l-1.5-1.5V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.546c-1.511-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.593 6.593 0 0 1-1.65 1.128 5.849 5.849 0 0 1-1.987.554V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOffSolidIcon:function(t){return e.createElement("svg",zi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Vi||(Vi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Wi||(Wi=e.createElement("g",{mask:"url(#mic_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m17.24 14.18-1.103-1.122c.105-.193.199-.405.281-.636.083-.231.143-.476.18-.734a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558c-.058.457-.16.88-.31 1.272a6.47 6.47 0 0 1-.548 1.113Zm-3.219-3.25L9.144 6.036V5c0-.699.242-1.29.726-1.774a2.413 2.413 0 0 1 1.774-.726c.699 0 1.29.242 1.774.726s.726 1.075.726 1.774v5.346c0 .113-.013.216-.038.308a5.62 5.62 0 0 1-.085.277Zm5.32 10.258L2.205 4.054a.725.725 0 0 1-.213-.522A.707.707 0 0 1 2.206 3a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.134 17.135c.139.138.21.312.213.522a.707.707 0 0 1-.213.531.717.717 0 0 1-.527.218.717.717 0 0 1-.527-.218ZM10.893 20v-2.542c-1.511-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558.768.768 0 0 1 .589-.238c.175 0 .332.067.47.2a.898.898 0 0 1 .264.488c.166 1.218.716 2.242 1.652 3.07.936.828 2.037 1.242 3.302 1.242.644 0 1.249-.115 1.815-.344a4.86 4.86 0 0 0 1.502-.954l1.07 1.07a6.432 6.432 0 0 1-1.65 1.12 6.3 6.3 0 0 1-1.987.566V20a.726.726 0 0 1-.215.535.726.726 0 0 1-.535.215.726.726 0 0 1-.534-.215.726.726 0 0 1-.216-.535Z"}))))},MicOnSolidIcon:function(t){return e.createElement("svg",Ri({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ii||(Ii=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Li||(Li=e.createElement("g",{mask:"url(#mic-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.542c-1.512-.175-2.796-.79-3.854-1.848a6.295 6.295 0 0 1-1.85-3.814.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.295 6.295 0 0 1-1.85 3.814c-1.058 1.057-2.343 1.673-3.854 1.848V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215Z"}))))},MicOnfIcon:function(t){return e.createElement("svg",Zi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"mic_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Hi||(Hi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ji||(ji=e.createElement("g",{mask:"url(#mic_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M12 13.5c-.699 0-1.29-.242-1.774-.726A2.413 2.413 0 0 1 9.5 11V5c0-.699.242-1.29.726-1.774A2.413 2.413 0 0 1 12 2.5c.698 0 1.29.242 1.774.726S14.5 4.301 14.5 5v6c0 .699-.242 1.29-.726 1.774A2.413 2.413 0 0 1 12 13.5Zm0 7.25a.726.726 0 0 1-.535-.215.726.726 0 0 1-.215-.535v-2.546c-1.512-.178-2.796-.795-3.854-1.85a6.273 6.273 0 0 1-1.85-3.808.644.644 0 0 1 .177-.558A.768.768 0 0 1 6.31 11c.176 0 .333.067.471.2a.898.898 0 0 1 .264.488c.165 1.218.716 2.242 1.652 3.07C9.634 15.586 10.734 16 12 16c1.265 0 2.366-.414 3.302-1.242.936-.828 1.486-1.852 1.652-3.07a.89.89 0 0 1 .266-.488c.14-.133.302-.2.484-.2a.75.75 0 0 1 .573.238.644.644 0 0 1 .177.558 6.273 6.273 0 0 1-1.85 3.809c-1.058 1.054-2.343 1.67-3.854 1.849V20a.726.726 0 0 1-.216.535.726.726 0 0 1-.534.215ZM12 12c.283 0 .52-.096.712-.287A.968.968 0 0 0 13 11V5a.967.967 0 0 0-.288-.713A.968.968 0 0 0 12 4a.968.968 0 0 0-.713.287A.967.967 0 0 0 11 5v6c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))},VideoCamOffIcon:function(t){return e.createElement("svg",rl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},tl||(tl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),nl||(nl=e.createElement("g",{mask:"url(#videocam_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m20.506 15.852-2.737-2.737v1.896l-1.5-1.5V6.308a.3.3 0 0 0-.086-.221.3.3 0 0 0-.221-.087H8.758l-1.5-1.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.323-.19.507-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.353.044-.507-.11Zm-1.06 5.779L2.036 4.22a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.527.217l17.41 17.41a.684.684 0 0 1 .207.502.727.727 0 0 1-.233.527.724.724 0 0 1-.532.217.692.692 0 0 1-.522-.217ZM4.443 4.519 5.923 6H4.577a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .221.087h11.385a.3.3 0 0 0 .22-.087.3.3 0 0 0 .088-.22v-1.347l1.48 1.48a1.752 1.752 0 0 1-.558 1.187c-.34.325-.75.487-1.23.487H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.48.163-.89.487-1.23.324-.34.72-.527 1.187-.559Z"}))))},VideoCamOffSolidIcon:function(t){return e.createElement("svg",el({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ji||(Ji=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Qi||(Qi=e.createElement("g",{mask:"url(#videocam_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M19.471 21.63 2.061 4.222a.684.684 0 0 1-.207-.502c0-.196.078-.372.233-.527a.717.717 0 0 1 .527-.217c.206 0 .382.072.526.217l17.41 17.41a.684.684 0 0 1 .208.502.727.727 0 0 1-.233.527.702.702 0 0 1-.527.212.753.753 0 0 1-.527-.212Zm-1.677-6.618L7.283 4.5h8.704c.505 0 .932.175 1.282.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.284.22.284.434v7.042c0 .214-.095.359-.284.434a.43.43 0 0 1-.5-.103l-2.736-2.737v1.896ZM4.467 4.518l13.308 13.308c-.017.456-.209.85-.577 1.179-.368.33-.78.494-1.236.494H4.577c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.457.168-.869.502-1.237.335-.368.734-.552 1.196-.552Z"}))))},VideoCamOnIcon:function(t){return e.createElement("svg",Yi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Gi||(Gi=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),Xi||(Xi=e.createElement("g",{mask:"url(#videocam_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737c.154-.154.322-.19.506-.11s.276.227.276.44v7.043c0 .214-.092.361-.276.441-.184.08-.352.044-.506-.11l-2.737-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Zm0-1.5h11.384a.3.3 0 0 0 .222-.087.3.3 0 0 0 .086-.22V6.307a.3.3 0 0 0-.086-.221.3.3 0 0 0-.222-.087H4.548a.3.3 0 0 0-.221.087.3.3 0 0 0-.087.22v11.385a.3.3 0 0 0 .087.221.3.3 0 0 0 .22.087Z"}))))},VideoCamOnSolidIcon:function(t){return e.createElement("svg",qi({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"videocam-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},Ki||(Ki=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),$i||($i=e.createElement("g",{mask:"url(#videocam-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M4.548 19.5c-.505 0-.933-.175-1.283-.525a1.745 1.745 0 0 1-.525-1.283V6.308c0-.505.175-.933.525-1.283.35-.35.778-.525 1.283-.525h11.384c.506 0 .933.175 1.283.525.35.35.525.778.525 1.283v4.577l2.737-2.737a.43.43 0 0 1 .499-.103c.189.075.283.22.283.434v7.042c0 .214-.094.359-.283.434a.43.43 0 0 1-.5-.103l-2.736-2.737v4.577c0 .505-.175.933-.525 1.283-.35.35-.777.525-1.283.525H4.548Z"}))))},VolumeOffIcon:function(t){return e.createElement("svg",il({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ol||(ol=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),al||(al=e.createElement("g",{mask:"url(#volume_off-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Zm-1.5 5.613v-2.196L8.335 11H5.289v2h2.85l2.15 2.15Z"}))))},VolumeOffSolidIcon:function(t){return e.createElement("svg",sl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_off_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ll||(ll=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),cl||(cl=e.createElement("g",{mask:"url(#volume_off_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"m18.946 21.611-2.488-2.488c-.208.12-.414.235-.619.344a7.54 7.54 0 0 1-.643.304.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.041-.26.124-.363a.803.803 0 0 1 .307-.235 4.822 4.822 0 0 0 .77-.37l-3.585-3.584v2.15c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.5 14.5H4.692a.875.875 0 0 1-.645-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .645-.259h2.143L2.523 5.188a.725.725 0 0 1-.212-.522.707.707 0 0 1 .212-.531.718.718 0 0 1 .527-.218c.206 0 .382.073.527.218L20 20.558c.139.138.21.312.212.522a.707.707 0 0 1-.212.532.717.717 0 0 1-.527.217.717.717 0 0 1-.527-.218ZM15.196 4.18a8.508 8.508 0 0 1 3.836 3.087c.966 1.401 1.449 2.97 1.449 4.709 0 .877-.13 1.719-.392 2.526-.26.807-.629 1.55-1.104 2.232l-1.075-1.075a6.768 6.768 0 0 0 1.07-3.683c0-1.441-.399-2.74-1.197-3.897a6.932 6.932 0 0 0-3.18-2.536.657.657 0 0 1-.43-.623c0-.277.108-.495.324-.654a.68.68 0 0 1 .7-.086Zm.727 9.492-1.75-1.75V8.296a3.85 3.85 0 0 1 1.564 1.55 4.385 4.385 0 0 1 .46 3.017c-.06.28-.152.55-.274.808ZM11.79 9.537 9.63 7.369l.621-.62c.285-.285.612-.35.982-.194.37.156.555.436.555.841v2.14Z"}))))},VolumeUpIcon:function(t){return e.createElement("svg",fl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},ul||(ul=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),dl||(dl=e.createElement("g",{mask:"url(#volume_up-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.092.797.797 0 0 1-.324-.675.56.56 0 0 1 .124-.36.803.803 0 0 1 .307-.236 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.654.654 0 0 1-.43-.625c0-.275.107-.493.323-.652a.68.68 0 0 1 .7-.086 8.551 8.551 0 0 1 3.83 3.085c.97 1.4 1.454 2.97 1.454 4.711s-.485 3.312-1.454 4.71a8.552 8.552 0 0 1-3.83 3.086ZM4.558 14.5a.875.875 0 0 1-.644-.26.875.875 0 0 1-.26-.644v-3.192c0-.256.086-.47.26-.644a.874.874 0 0 1 .644-.26h2.807l2.752-2.752c.285-.284.612-.348.982-.192.37.157.555.437.555.84v9.208c0 .403-.185.683-.555.84-.37.156-.697.093-.982-.192L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499ZM10.154 8.85 8.004 11h-2.85v2h2.85l2.15 2.15v-6.3Z"}))))},VolumeUpSolidIcon:function(t){return e.createElement("svg",vl({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"volume_up_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},pl||(pl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),ml||(ml=e.createElement("g",{mask:"url(#volume_up_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M15.061 19.771a.673.673 0 0 1-.699-.091.796.796 0 0 1-.324-.674c0-.139.042-.26.124-.363a.803.803 0 0 1 .307-.235 6.933 6.933 0 0 0 3.179-2.536c.799-1.157 1.198-2.456 1.198-3.897 0-1.441-.4-2.74-1.198-3.897a6.932 6.932 0 0 0-3.179-2.536.658.658 0 0 1-.32-.248.661.661 0 0 1-.11-.375c0-.277.107-.495.323-.654a.68.68 0 0 1 .7-.086 8.547 8.547 0 0 1 3.83 3.087c.97 1.401 1.454 2.97 1.454 4.709 0 1.738-.485 3.308-1.454 4.709a8.547 8.547 0 0 1-3.83 3.087ZM4.558 14.5a.876.876 0 0 1-.646-.259.876.876 0 0 1-.258-.645v-3.192c0-.258.086-.473.258-.645a.876.876 0 0 1 .646-.259h2.807l2.752-2.752c.285-.284.612-.349.982-.193.37.156.555.436.555.841v9.208c0 .405-.185.685-.555.841-.37.156-.697.091-.982-.193L7.365 14.5H4.558Zm9.48 1.154V8.296c.648.35 1.162.858 1.544 1.524a4.31 4.31 0 0 1 .572 2.18c0 .787-.191 1.505-.572 2.155a3.932 3.932 0 0 1-1.544 1.499Z"}))))},WarningIcon:function(t){return e.createElement("svg",_l({xmlns:"http://www.w3.org/2000/svg",width:24,height:24,fill:"none"},t),e.createElement("mask",{id:"warning-1_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},wl||(wl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),bl||(bl=e.createElement("g",{mask:"url(#warning-1_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M3.426 20.5a.878.878 0 0 1-.772-.452.955.955 0 0 1-.129-.437.816.816 0 0 1 .127-.467l8.561-14.788A.896.896 0 0 1 12 3.904a.897.897 0 0 1 .787.452l8.56 14.788c.093.154.136.31.128.467a.955.955 0 0 1-.129.437.878.878 0 0 1-.771.452H3.425ZM4.45 19h15.1L12 6 4.45 19ZM12 17.808c.229 0 .42-.078.576-.232a.781.781 0 0 0 .232-.576.781.781 0 0 0-.232-.575.782.782 0 0 0-.576-.233.781.781 0 0 0-.575.233.781.781 0 0 0-.233.575c0 .229.078.42.233.576a.781.781 0 0 0 .575.232Zm0-2.616c.213 0 .391-.072.535-.215a.726.726 0 0 0 .215-.535v-3.5a.725.725 0 0 0-.216-.534.726.726 0 0 0-.534-.216.725.725 0 0 0-.534.216.726.726 0 0 0-.216.534v3.5c0 .213.072.391.216.535a.726.726 0 0 0 .534.215Z"}))))},WarningSolidIcon:function(t){return e.createElement("svg",yl({xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},t),e.createElement("mask",{id:"warning_svg__a",width:24,height:24,x:0,y:0,maskUnits:"userSpaceOnUse",style:{maskType:"alpha"}},hl||(hl=e.createElement("path",{fill:"#D9D9D9",d:"M0 0h24v24H0z"}))),gl||(gl=e.createElement("g",{mask:"url(#warning_svg__a)"},e.createElement("path",{fill:"#2C3336",d:"M2.725 21a.973.973 0 0 1-.85-.5 1.098 1.098 0 0 1-.138-.488.898.898 0 0 1 .138-.512l9.25-16a.98.98 0 0 1 .387-.375C11.671 3.042 11.833 3 12 3c.166 0 .329.042.487.125a.983.983 0 0 1 .388.375l9.25 16c.1.167.146.337.137.512a1.098 1.098 0 0 1-.137.488.973.973 0 0 1-.85.5H2.725ZM12 18c.283 0 .52-.096.712-.288A.968.968 0 0 0 13 17a.968.968 0 0 0-.288-.712A.968.968 0 0 0 12 16a.968.968 0 0 0-.713.288A.968.968 0 0 0 11 17c0 .283.096.52.287.712.192.192.43.288.713.288Zm0-3a.97.97 0 0 0 .712-.287A.968.968 0 0 0 13 14v-3a.968.968 0 0 0-.288-.713A.968.968 0 0 0 12 10a.968.968 0 0 0-.713.287A.968.968 0 0 0 11 11v3c0 .283.096.52.287.713.192.191.43.287.713.287Z"}))))}}),El="Select-modules_trigger__dS9Dx",Ol="Select-modules_icon__sgRRc",Cl="Select-modules_startIcon__kohMV",Dl="Select-modules_value__h6Q4Z",Tl="Select-modules_content__YuAqS",kl="Select-modules_item__cTAIm",Sl=t.forwardRef((function(e,n){var r=e.children,o=e.sideOffset,a=void 0===o?4:o,i=e.position,l=void 0===i?"popper":i,c=e.disabled,s=void 0!==c&&c,u=e.value,d=void 0===u?"":u,f=e.id,p=e.icon,m=void 0===p?null:p,v=e.placeholder,h=void 0===v?"":v,g=x(e,["children","sideOffset","position","disabled","value","id","icon","placeholder"]);return t.createElement(Xa,_({value:d||void 0,disabled:s},g),t.createElement(Ya,{id:f,ref:n,className:El},m&&t.createElement("span",{className:Cl},m),t.createElement("span",{className:Dl},t.createElement(Ja,{placeholder:h})),t.createElement(Qa,{className:Ol},t.createElement(Ni,null))),t.createElement(ei,{position:l,className:Tl,sideOffset:a},t.createElement(ti,null,t.createElement(oi,null,"ChevronUpIcon"),t.createElement(ti,null,r),t.createElement(ai,null,"ChevronDownIcon"))))})),Al=t.forwardRef((function(e,n){var r=e.children,o=e.disabled,a=void 0!==o&&o,i=x(e,["children","disabled"]);return t.createElement(ni,_({},i,{ref:n,className:kl,disabled:a}),r)})),Pl=ri;const Ml=d(((e,t)=>a(K.label,S({},e,{ref:t,onMouseDown:t=>{var n;null===(n=e.onMouseDown)||void 0===n||n.call(e,t),!t.defaultPrevented&&t.detail>1&&t.preventDefault()}}))));var Il="Label-modules_label__rXO6J";function Ll(e){var n=e.htmlFor,r=e.children;return t.createElement(Ml,{htmlFor:n,className:Il},r)}var Nl={formGroup:"FormGroup-modules_formGroup__Zjh7i",horizontal:"FormGroup-modules_horizontal__9g7gn",vertical:"FormGroup-modules_vertical__yPEor",between:"FormGroup-modules_between__poqnA",start:"FormGroup-modules_start__ylflU",startAlignItems:"FormGroup-modules_startAlignItems__h-nDr",stretchAlignItems:"FormGroup-modules_stretchAlignItems__jg3e0"};function Rl(e){var n,r=e.children,o=e.position,a=void 0===o?"vertical":o,i=e.justify,l=void 0===i?"start":i,c=e.alignItems,s=void 0===c?"start":c;return t.createElement("div",{className:D(Nl.formGroup,(n={},n[Nl.horizontal]="horizontal"===a,n[Nl.vertical]="vertical"===a,n[Nl[l]]=!!l,n[Nl["".concat(s,"AlignItems")]]=!!s,n))},r)}const Hl="Progress",jl=100,[Zl,Fl]=I(Hl),[Ul,Bl]=Zl(Hl),Vl=d(((e,t)=>{const{__scopeProgress:n,value:r,max:o,getValueLabel:i=Wl,...l}=e,c=$l(o)?o:jl,s=ql(r,c)?r:null,u=Kl(s)?i(s,c):void 0;return a(Ul,{scope:n,value:s,max:c},a(K.div,S({"aria-valuemax":c,"aria-valuemin":0,"aria-valuenow":Kl(s)?s:void 0,"aria-valuetext":u,role:"progressbar","data-state":zl(s,c),"data-value":null!=s?s:void 0,"data-max":c},l,{ref:t})))}));Vl.propTypes={max(e,t,n){const r=e[t],o=String(r);return r&&!$l(r)?new Error(function(e,t){return`Invalid prop \`max\` of value \`${e}\` supplied to \`${t}\`. Only numbers greater than 0 are valid max values. Defaulting to \`100\`.`}(o,n)):null},value(e,t,n){const r=e[t],o=String(r),a=$l(e.max)?e.max:jl;return null==r||ql(r,a)?null:new Error(function(e,t){return`Invalid prop \`value\` of value \`${e}\` supplied to \`${t}\`. The \`value\` prop must be:\n - a positive number\n - less than the value passed to \`max\` (or 100 if no \`max\` prop is set)\n - \`null\` if the progress is indeterminate.\n\nDefaulting to \`null\`.`}(o,n))}};function Wl(e,t){return`${Math.round(e/t*100)}%`}function zl(e,t){return null==e?"indeterminate":e===t?"complete":"loading"}function Kl(e){return"number"==typeof e}function $l(e){return Kl(e)&&!isNaN(e)&&e>0}function ql(e,t){return Kl(e)&&!isNaN(e)&&e<=t&&e>=0}const Gl=Vl,Xl=d(((e,t)=>{var n;const{__scopeProgress:r,...o}=e,i=Bl("ProgressIndicator",r);return a(K.div,S({"data-state":zl(i.value,i.max),"data-value":null!==(n=i.value)&&void 0!==n?n:void 0,"data-max":i.max},o,{ref:t}))}));var Yl="Progress-modules_root__E0rHH",Jl="Progress-modules_indicator__qpwRi";function Ql(e){var n=e.max,r=void 0===n?100:n,o=e.progress,a=void 0===o?0:o,i=x(e,["max","progress"]),l=a>r?"100%":"".concat(a/r*100,"%");return t.createElement(Gl,_({className:Yl,value:a>r?r:a,max:r},i),t.createElement(Xl,{className:Jl,style:{width:l}}))}const[ec,tc]=I("AlertDialog",[it]),nc=it(),rc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=nc(n);return a(St,S({},o,r,{ref:t}))})),oc="AlertDialogContent",[ac,ic]=ec(oc),lc=d(((e,t)=>{const{__scopeAlertDialog:n,children:r,...o}=e,i=nc(n),l=M(t,c(null)),s=c(null);return a(Ct,{contentName:oc,titleName:cc,docsSlug:"alert-dialog"},a(ac,{scope:n,cancelRef:s},a(At,S({role:"alertdialog"},i,o,{ref:l,onOpenAutoFocus:A(o.onOpenAutoFocus,(e=>{var t;e.preventDefault(),null===(t=s.current)||void 0===t||t.focus({preventScroll:!0})})),onPointerDownOutside:e=>e.preventDefault(),onInteractOutside:e=>e.preventDefault()}),a(V,null,r),!1)))})),cc="AlertDialogTitle",sc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=nc(n);return a(Pt,S({},o,r,{ref:t}))})),uc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=nc(n);return a(Mt,S({},o,r,{ref:t}))})),dc=e=>{const{__scopeAlertDialog:t,...n}=e,r=nc(t);return a(Tt,S({},r,n,{modal:!0}))},fc=e=>{const{__scopeAlertDialog:t,...n}=e,r=nc(t);return a(kt,S({},r,n))},pc=rc,mc=lc,vc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,o=nc(n);return a(It,S({},o,r,{ref:t}))})),hc=d(((e,t)=>{const{__scopeAlertDialog:n,...r}=e,{cancelRef:o}=ic("AlertDialogCancel",n),i=nc(n),l=M(t,o);return a(It,S({},i,r,{ref:l}))})),gc=sc,yc=uc;var wc={overlay:"Alert-modules_overlay__4XRHj","overlay-show":"Alert-modules_overlay-show__rdwHo",close:"Alert-modules_close__dyL0l",content:"Alert-modules_content__Y7nMS","content-show":"Alert-modules_content-show__ncLtG",title:"Alert-modules_title__e8UHT",description:"Alert-modules_description__wyWR-",buttons:"Alert-modules_buttons__cOEDw"};function bc(e){var n=e.onOpenChange,r=e.open,o=e.actionText,a=void 0===o?"OK":o,i=e.onActionClick,l=e.cancelText,c=void 0===l?"Cancel":l,s=e.onCancelClick,u=e.title,d=e.description,f=void 0===d?"":d;return t.createElement(dc,{open:r,onOpenChange:n},t.createElement(fc,{className:wc.portal},t.createElement(pc,{className:wc.overlay}),t.createElement(mc,{className:wc.content},t.createElement("button",{className:wc.close,onClick:function(){return n(!1)},"data-testid":"close-button"},t.createElement(Wt,null)),t.createElement(gc,{className:wc.title},u),f&&t.createElement(yc,{className:wc.description},f),t.createElement("div",{className:wc.buttons},t.createElement(hc,{asChild:!0},t.createElement(k,{onClick:s,variant:"outline"},c)),t.createElement(vc,{asChild:!0},t.createElement(k,{onClick:i,variant:"danger"},a))))))}export{bc as Alert,k as Button,Rl as FormGroup,Ll as Label,zt as Modal,Ql as Progress,Sl as Select,Al as SelectItem,Pl as SelectItemText,$n as Switch,Pn as Tab,Mn as TabsContent,An as TabsList,Sn as TabsRoot,ia as Tooltip,xl as icons};
|
|
7
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VzIjpbIi4uLy4uL25vZGVfbW9kdWxlcy90c2xpYi90c2xpYi5lczYuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0J1dHRvbi9CdXR0b24udHN4IiwiLi4vLi4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3ByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1jb250ZXh0L2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtaWQvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWYvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXNsb3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXIvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93bi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtZm9jdXMtc2NvcGUvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcnRhbC9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2UvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkcy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsLWJhci9kaXN0L2VzMjAxNS9jb25zdGFudHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLWNhbGxiYWNrLXJlZi9kaXN0L2VzMjAxNS91c2VNZXJnZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L3VzZVJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2UtY2FsbGJhY2stcmVmL2Rpc3QvZXMyMDE1L2Fzc2lnblJlZi5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy91c2Utc2lkZWNhci9kaXN0L2VzMjAxNS9tZWRpdW0uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvdXNlLXNpZGVjYXIvZGlzdC9lczIwMTUvZXhwb3J0cy5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L21lZGl1bS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1VJLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9zaW5nbGV0b24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvZ2V0LW5vbmNlL2Rpc3QvZXMyMDE1L2luZGV4LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXN0eWxlLXNpbmdsZXRvbi9kaXN0L2VzMjAxNS9jb21wb25lbnQuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3Qtc3R5bGUtc2luZ2xldG9uL2Rpc3QvZXMyMDE1L2hvb2suanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvdXRpbHMuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXIvZGlzdC9lczIwMTUvY29tcG9uZW50LmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvYWdncmVzaXZlQ2FwdHVyZS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L2hhbmRsZVNjcm9sbC5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1yZW1vdmUtc2Nyb2xsL2Rpc3QvZXMyMDE1L1NpZGVFZmZlY3QuanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvcmVhY3QtcmVtb3ZlLXNjcm9sbC9kaXN0L2VzMjAxNS9zaWRlY2FyLmpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LXJlbW92ZS1zY3JvbGwvZGlzdC9lczIwMTUvQ29tYmluYXRpb24uanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvYXJpYS1oaWRkZW4vZGlzdC9lczIwMTUvaW5kZXguanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL3NyYy9pY29ucy9jbG9zZS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Nb2RhbC9Nb2RhbC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb24vZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvbi9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtcm92aW5nLWZvY3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10YWJzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVGFicy9UYWJzLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdXNlLXByZXZpb3VzL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC11c2Utc2l6ZS9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3Qtc3dpdGNoL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvU3dpdGNoL1N3aXRjaC50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQGZsb2F0aW5nLXVpL2NvcmUvZGlzdC9mbG9hdGluZy11aS5jb3JlLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvZG9tL2Rpc3QvZmxvYXRpbmctdWkuZG9tLm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AZmxvYXRpbmctdWkvcmVhY3QtZG9tL2Rpc3QvZmxvYXRpbmctdWkucmVhY3QtZG9tLmVzbS5qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtYXJyb3cvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LXBvcHBlci9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC10b29sdGlwL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvVG9vbHRpcC9Ub29sdGlwLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvbnVtYmVyL2Rpc3QvaW5kZXgubWpzIiwiLi4vLi4vbm9kZV9tb2R1bGVzL0ByYWRpeC11aS9yZWFjdC1zZWxlY3QvZGlzdC9pbmRleC5tanMiLCIuLi8uLi9zcmMvaWNvbnMvYWRkLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9ibG9jay5zdmciLCIuLi8uLi9zcmMvaWNvbnMvYmx1cl9vbi5zdmciLCIuLi8uLi9zcmMvaWNvbnMvY2FjaGVkLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9jaGVja19jaXJjbGUuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL2RlbGV0ZS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby5zdmciLCIuLi8uLi9zcmMvaWNvbnMvaW5mby0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9rZXlib2FyZF9hcnJvd19kb3duLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWMtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvbWljLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy9taWNfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL21pY19vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZpZGVvY2FtLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92aWRlb2NhbV9vZmYtMS5zdmciLCIuLi8uLi9zcmMvaWNvbnMvdmlkZW9jYW1fb2ZmLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92b2x1bWVfb2ZmLTEuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV9vZmYuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3ZvbHVtZV91cC0xLnN2ZyIsIi4uLy4uL3NyYy9pY29ucy92b2x1bWVfdXAuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3dhcm5pbmcuc3ZnIiwiLi4vLi4vc3JjL2ljb25zL3dhcm5pbmctMS5zdmciLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9TZWxlY3QvU2VsZWN0LnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtbGFiZWwvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9MYWJlbC9MYWJlbC50c3giLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Gb3JtR3JvdXAvRm9ybUdyb3VwLnRzeCIsIi4uLy4uL25vZGVfbW9kdWxlcy9AcmFkaXgtdWkvcmVhY3QtcHJvZ3Jlc3MvZGlzdC9pbmRleC5tanMiLCIuLi8uLi8uLi9zcmMvY29tcG9uZW50cy9Qcm9ncmVzcy9Qcm9ncmVzcy50c3giLCIuLi8uLi9ub2RlX21vZHVsZXMvQHJhZGl4LXVpL3JlYWN0LWFsZXJ0LWRpYWxvZy9kaXN0L2luZGV4Lm1qcyIsIi4uLy4uLy4uL3NyYy9jb21wb25lbnRzL0FsZXJ0L0FsZXJ0LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLlxyXG5cclxuUGVybWlzc2lvbiB0byB1c2UsIGNvcHksIG1vZGlmeSwgYW5kL29yIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBmb3IgYW55XHJcbnB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZC5cclxuXHJcblRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTIFdJVEhcclxuUkVHQVJEIFRPIFRISVMgU09GVFdBUkUgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZXHJcbkFORCBGSVRORVNTLiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIERJUkVDVCxcclxuSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NXHJcbkxPU1MgT0YgVVNFLCBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SXHJcbk9USEVSIFRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1JcclxuUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24oZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxyXG4gICAgICAgICh7IF9fcHJvdG9fXzogW10gfSBpbnN0YW5jZW9mIEFycmF5ICYmIGZ1bmN0aW9uIChkLCBiKSB7IGQuX19wcm90b19fID0gYjsgfSkgfHxcclxuICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xyXG4gICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHRlbmRzKGQsIGIpIHtcclxuICAgIGlmICh0eXBlb2YgYiAhPT0gXCJmdW5jdGlvblwiICYmIGIgIT09IG51bGwpXHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gZnVuY3Rpb24oKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gX19hc3NpZ24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH1cclxuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19yZXN0KHMsIGUpIHtcclxuICAgIHZhciB0ID0ge307XHJcbiAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkgJiYgZS5pbmRleE9mKHApIDwgMClcclxuICAgICAgICB0W3BdID0gc1twXTtcclxuICAgIGlmIChzICE9IG51bGwgJiYgdHlwZW9mIE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMgPT09IFwiZnVuY3Rpb25cIilcclxuICAgICAgICBmb3IgKHZhciBpID0gMCwgcCA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eVN5bWJvbHMocyk7IGkgPCBwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcclxuICAgICAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgICAgIH1cclxuICAgIHJldHVybiB0O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYykge1xyXG4gICAgdmFyIGMgPSBhcmd1bWVudHMubGVuZ3RoLCByID0gYyA8IDMgPyB0YXJnZXQgOiBkZXNjID09PSBudWxsID8gZGVzYyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IodGFyZ2V0LCBrZXkpIDogZGVzYywgZDtcclxuICAgIGlmICh0eXBlb2YgUmVmbGVjdCA9PT0gXCJvYmplY3RcIiAmJiB0eXBlb2YgUmVmbGVjdC5kZWNvcmF0ZSA9PT0gXCJmdW5jdGlvblwiKSByID0gUmVmbGVjdC5kZWNvcmF0ZShkZWNvcmF0b3JzLCB0YXJnZXQsIGtleSwgZGVzYyk7XHJcbiAgICBlbHNlIGZvciAodmFyIGkgPSBkZWNvcmF0b3JzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSBpZiAoZCA9IGRlY29yYXRvcnNbaV0pIHIgPSAoYyA8IDMgPyBkKHIpIDogYyA+IDMgPyBkKHRhcmdldCwga2V5LCByKSA6IGQodGFyZ2V0LCBrZXkpKSB8fCByO1xyXG4gICAgcmV0dXJuIGMgPiAzICYmIHIgJiYgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwga2V5LCByKSwgcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcGFyYW0ocGFyYW1JbmRleCwgZGVjb3JhdG9yKSB7XHJcbiAgICByZXR1cm4gZnVuY3Rpb24gKHRhcmdldCwga2V5KSB7IGRlY29yYXRvcih0YXJnZXQsIGtleSwgcGFyYW1JbmRleCk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZXNEZWNvcmF0ZShjdG9yLCBkZXNjcmlwdG9ySW4sIGRlY29yYXRvcnMsIGNvbnRleHRJbiwgaW5pdGlhbGl6ZXJzLCBleHRyYUluaXRpYWxpemVycykge1xyXG4gICAgZnVuY3Rpb24gYWNjZXB0KGYpIHsgaWYgKGYgIT09IHZvaWQgMCAmJiB0eXBlb2YgZiAhPT0gXCJmdW5jdGlvblwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRnVuY3Rpb24gZXhwZWN0ZWRcIik7IHJldHVybiBmOyB9XHJcbiAgICB2YXIga2luZCA9IGNvbnRleHRJbi5raW5kLCBrZXkgPSBraW5kID09PSBcImdldHRlclwiID8gXCJnZXRcIiA6IGtpbmQgPT09IFwic2V0dGVyXCIgPyBcInNldFwiIDogXCJ2YWx1ZVwiO1xyXG4gICAgdmFyIHRhcmdldCA9ICFkZXNjcmlwdG9ySW4gJiYgY3RvciA/IGNvbnRleHRJbltcInN0YXRpY1wiXSA/IGN0b3IgOiBjdG9yLnByb3RvdHlwZSA6IG51bGw7XHJcbiAgICB2YXIgZGVzY3JpcHRvciA9IGRlc2NyaXB0b3JJbiB8fCAodGFyZ2V0ID8gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGNvbnRleHRJbi5uYW1lKSA6IHt9KTtcclxuICAgIHZhciBfLCBkb25lID0gZmFsc2U7XHJcbiAgICBmb3IgKHZhciBpID0gZGVjb3JhdG9ycy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkge1xyXG4gICAgICAgIHZhciBjb250ZXh0ID0ge307XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4pIGNvbnRleHRbcF0gPSBwID09PSBcImFjY2Vzc1wiID8ge30gOiBjb250ZXh0SW5bcF07XHJcbiAgICAgICAgZm9yICh2YXIgcCBpbiBjb250ZXh0SW4uYWNjZXNzKSBjb250ZXh0LmFjY2Vzc1twXSA9IGNvbnRleHRJbi5hY2Nlc3NbcF07XHJcbiAgICAgICAgY29udGV4dC5hZGRJbml0aWFsaXplciA9IGZ1bmN0aW9uIChmKSB7IGlmIChkb25lKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IGFkZCBpbml0aWFsaXplcnMgYWZ0ZXIgZGVjb3JhdGlvbiBoYXMgY29tcGxldGVkXCIpOyBleHRyYUluaXRpYWxpemVycy5wdXNoKGFjY2VwdChmIHx8IG51bGwpKTsgfTtcclxuICAgICAgICB2YXIgcmVzdWx0ID0gKDAsIGRlY29yYXRvcnNbaV0pKGtpbmQgPT09IFwiYWNjZXNzb3JcIiA/IHsgZ2V0OiBkZXNjcmlwdG9yLmdldCwgc2V0OiBkZXNjcmlwdG9yLnNldCB9IDogZGVzY3JpcHRvcltrZXldLCBjb250ZXh0KTtcclxuICAgICAgICBpZiAoa2luZCA9PT0gXCJhY2Nlc3NvclwiKSB7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IHZvaWQgMCkgY29udGludWU7XHJcbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwgfHwgdHlwZW9mIHJlc3VsdCAhPT0gXCJvYmplY3RcIikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIk9iamVjdCBleHBlY3RlZFwiKTtcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmdldCkpIGRlc2NyaXB0b3IuZ2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LnNldCkpIGRlc2NyaXB0b3Iuc2V0ID0gXztcclxuICAgICAgICAgICAgaWYgKF8gPSBhY2NlcHQocmVzdWx0LmluaXQpKSBpbml0aWFsaXplcnMudW5zaGlmdChfKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoXyA9IGFjY2VwdChyZXN1bHQpKSB7XHJcbiAgICAgICAgICAgIGlmIChraW5kID09PSBcImZpZWxkXCIpIGluaXRpYWxpemVycy51bnNoaWZ0KF8pO1xyXG4gICAgICAgICAgICBlbHNlIGRlc2NyaXB0b3Jba2V5XSA9IF87XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRhcmdldCkgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgY29udGV4dEluLm5hbWUsIGRlc2NyaXB0b3IpO1xyXG4gICAgZG9uZSA9IHRydWU7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19ydW5Jbml0aWFsaXplcnModGhpc0FyZywgaW5pdGlhbGl6ZXJzLCB2YWx1ZSkge1xyXG4gICAgdmFyIHVzZVZhbHVlID0gYXJndW1lbnRzLmxlbmd0aCA+IDI7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGluaXRpYWxpemVycy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhbHVlID0gdXNlVmFsdWUgPyBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnLCB2YWx1ZSkgOiBpbml0aWFsaXplcnNbaV0uY2FsbCh0aGlzQXJnKTtcclxuICAgIH1cclxuICAgIHJldHVybiB1c2VWYWx1ZSA/IHZhbHVlIDogdm9pZCAwO1xyXG59O1xyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcHJvcEtleSh4KSB7XHJcbiAgICByZXR1cm4gdHlwZW9mIHggPT09IFwic3ltYm9sXCIgPyB4IDogXCJcIi5jb25jYXQoeCk7XHJcbn07XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19zZXRGdW5jdGlvbk5hbWUoZiwgbmFtZSwgcHJlZml4KSB7XHJcbiAgICBpZiAodHlwZW9mIG5hbWUgPT09IFwic3ltYm9sXCIpIG5hbWUgPSBuYW1lLmRlc2NyaXB0aW9uID8gXCJbXCIuY29uY2F0KG5hbWUuZGVzY3JpcHRpb24sIFwiXVwiKSA6IFwiXCI7XHJcbiAgICByZXR1cm4gT2JqZWN0LmRlZmluZVByb3BlcnR5KGYsIFwibmFtZVwiLCB7IGNvbmZpZ3VyYWJsZTogdHJ1ZSwgdmFsdWU6IHByZWZpeCA/IFwiXCIuY29uY2F0KHByZWZpeCwgXCIgXCIsIG5hbWUpIDogbmFtZSB9KTtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKSB7XHJcbiAgICBpZiAodHlwZW9mIFJlZmxlY3QgPT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIFJlZmxlY3QubWV0YWRhdGEgPT09IFwiZnVuY3Rpb25cIikgcmV0dXJuIFJlZmxlY3QubWV0YWRhdGEobWV0YWRhdGFLZXksIG1ldGFkYXRhVmFsdWUpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdGVyKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xyXG4gICAgZnVuY3Rpb24gYWRvcHQodmFsdWUpIHsgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgUCA/IHZhbHVlIDogbmV3IFAoZnVuY3Rpb24gKHJlc29sdmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0pOyB9XHJcbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcclxuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gcmVqZWN0ZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3JbXCJ0aHJvd1wiXSh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XHJcbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cclxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XHJcbiAgICB9KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fZ2VuZXJhdG9yKHRoaXNBcmcsIGJvZHkpIHtcclxuICAgIHZhciBfID0geyBsYWJlbDogMCwgc2VudDogZnVuY3Rpb24oKSB7IGlmICh0WzBdICYgMSkgdGhyb3cgdFsxXTsgcmV0dXJuIHRbMV07IH0sIHRyeXM6IFtdLCBvcHM6IFtdIH0sIGYsIHksIHQsIGc7XHJcbiAgICByZXR1cm4gZyA9IHsgbmV4dDogdmVyYigwKSwgXCJ0aHJvd1wiOiB2ZXJiKDEpLCBcInJldHVyblwiOiB2ZXJiKDIpIH0sIHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiAoZ1tTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24oKSB7IHJldHVybiB0aGlzOyB9KSwgZztcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc3RlcChvcCkge1xyXG4gICAgICAgIGlmIChmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiR2VuZXJhdG9yIGlzIGFscmVhZHkgZXhlY3V0aW5nLlwiKTtcclxuICAgICAgICB3aGlsZSAoZyAmJiAoZyA9IDAsIG9wWzBdICYmIChfID0gMCkpLCBfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSBvcFswXSAmIDIgPyB5W1wicmV0dXJuXCJdIDogb3BbMF0gPyB5W1widGhyb3dcIl0gfHwgKCh0ID0geVtcInJldHVyblwiXSkgJiYgdC5jYWxsKHkpLCAwKSA6IHkubmV4dCkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcclxuICAgICAgICAgICAgc3dpdGNoIChvcFswXSkge1xyXG4gICAgICAgICAgICAgICAgY2FzZSAwOiBjYXNlIDE6IHQgPSBvcDsgYnJlYWs7XHJcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xyXG4gICAgICAgICAgICAgICAgY2FzZSA1OiBfLmxhYmVsKys7IHkgPSBvcFsxXTsgb3AgPSBbMF07IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA3OiBvcCA9IF8ub3BzLnBvcCgpOyBfLnRyeXMucG9wKCk7IGNvbnRpbnVlO1xyXG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgICAgICAgICBpZiAoISh0ID0gXy50cnlzLCB0ID0gdC5sZW5ndGggPiAwICYmIHRbdC5sZW5ndGggLSAxXSkgJiYgKG9wWzBdID09PSA2IHx8IG9wWzBdID09PSAyKSkgeyBfID0gMDsgY29udGludWU7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDMgJiYgKCF0IHx8IChvcFsxXSA+IHRbMF0gJiYgb3BbMV0gPCB0WzNdKSkpIHsgXy5sYWJlbCA9IG9wWzFdOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0ICYmIF8ubGFiZWwgPCB0WzJdKSB7IF8ubGFiZWwgPSB0WzJdOyBfLm9wcy5wdXNoKG9wKTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodFsyXSkgXy5vcHMucG9wKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBvcCA9IGJvZHkuY2FsbCh0aGlzQXJnLCBfKTtcclxuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XHJcbiAgICAgICAgaWYgKG9wWzBdICYgNSkgdGhyb3cgb3BbMV07IHJldHVybiB7IHZhbHVlOiBvcFswXSA/IG9wWzFdIDogdm9pZCAwLCBkb25lOiB0cnVlIH07XHJcbiAgICB9XHJcbn1cclxuXHJcbmV4cG9ydCB2YXIgX19jcmVhdGVCaW5kaW5nID0gT2JqZWN0LmNyZWF0ZSA/IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xyXG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcclxuICAgIHZhciBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihtLCBrKTtcclxuICAgIGlmICghZGVzYyB8fCAoXCJnZXRcIiBpbiBkZXNjID8gIW0uX19lc01vZHVsZSA6IGRlc2Mud3JpdGFibGUgfHwgZGVzYy5jb25maWd1cmFibGUpKSB7XHJcbiAgICAgICAgZGVzYyA9IHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfTtcclxuICAgIH1cclxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShvLCBrMiwgZGVzYyk7XHJcbn0pIDogKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XHJcbiAgICBpZiAoazIgPT09IHVuZGVmaW5lZCkgazIgPSBrO1xyXG4gICAgb1trMl0gPSBtW2tdO1xyXG59KTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4cG9ydFN0YXIobSwgbykge1xyXG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvLCBwKSkgX19jcmVhdGVCaW5kaW5nKG8sIG0sIHApO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX192YWx1ZXMobykge1xyXG4gICAgdmFyIHMgPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgU3ltYm9sLml0ZXJhdG9yLCBtID0gcyAmJiBvW3NdLCBpID0gMDtcclxuICAgIGlmIChtKSByZXR1cm4gbS5jYWxsKG8pO1xyXG4gICAgaWYgKG8gJiYgdHlwZW9mIG8ubGVuZ3RoID09PSBcIm51bWJlclwiKSByZXR1cm4ge1xyXG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgaWYgKG8gJiYgaSA+PSBvLmxlbmd0aCkgbyA9IHZvaWQgMDtcclxuICAgICAgICAgICAgcmV0dXJuIHsgdmFsdWU6IG8gJiYgb1tpKytdLCBkb25lOiAhbyB9O1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKHMgPyBcIk9iamVjdCBpcyBub3QgaXRlcmFibGUuXCIgOiBcIlN5bWJvbC5pdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3JlYWQobywgbikge1xyXG4gICAgdmFyIG0gPSB0eXBlb2YgU3ltYm9sID09PSBcImZ1bmN0aW9uXCIgJiYgb1tTeW1ib2wuaXRlcmF0b3JdO1xyXG4gICAgaWYgKCFtKSByZXR1cm4gbztcclxuICAgIHZhciBpID0gbS5jYWxsKG8pLCByLCBhciA9IFtdLCBlO1xyXG4gICAgdHJ5IHtcclxuICAgICAgICB3aGlsZSAoKG4gPT09IHZvaWQgMCB8fCBuLS0gPiAwKSAmJiAhKHIgPSBpLm5leHQoKSkuZG9uZSkgYXIucHVzaChyLnZhbHVlKTtcclxuICAgIH1cclxuICAgIGNhdGNoIChlcnJvcikgeyBlID0geyBlcnJvcjogZXJyb3IgfTsgfVxyXG4gICAgZmluYWxseSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgaWYgKHIgJiYgIXIuZG9uZSAmJiAobSA9IGlbXCJyZXR1cm5cIl0pKSBtLmNhbGwoaSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGZpbmFsbHkgeyBpZiAoZSkgdGhyb3cgZS5lcnJvcjsgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkKCkge1xyXG4gICAgZm9yICh2YXIgYXIgPSBbXSwgaSA9IDA7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXHJcbiAgICAgICAgYXIgPSBhci5jb25jYXQoX19yZWFkKGFyZ3VtZW50c1tpXSkpO1xyXG4gICAgcmV0dXJuIGFyO1xyXG59XHJcblxyXG4vKiogQGRlcHJlY2F0ZWQgKi9cclxuZXhwb3J0IGZ1bmN0aW9uIF9fc3ByZWFkQXJyYXlzKCkge1xyXG4gICAgZm9yICh2YXIgcyA9IDAsIGkgPSAwLCBpbCA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBpbDsgaSsrKSBzICs9IGFyZ3VtZW50c1tpXS5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciByID0gQXJyYXkocyksIGsgPSAwLCBpID0gMDsgaSA8IGlsOyBpKyspXHJcbiAgICAgICAgZm9yICh2YXIgYSA9IGFyZ3VtZW50c1tpXSwgaiA9IDAsIGpsID0gYS5sZW5ndGg7IGogPCBqbDsgaisrLCBrKyspXHJcbiAgICAgICAgICAgIHJba10gPSBhW2pdO1xyXG4gICAgcmV0dXJuIHI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZEFycmF5KHRvLCBmcm9tLCBwYWNrKSB7XHJcbiAgICBpZiAocGFjayB8fCBhcmd1bWVudHMubGVuZ3RoID09PSAyKSBmb3IgKHZhciBpID0gMCwgbCA9IGZyb20ubGVuZ3RoLCBhcjsgaSA8IGw7IGkrKykge1xyXG4gICAgICAgIGlmIChhciB8fCAhKGkgaW4gZnJvbSkpIHtcclxuICAgICAgICAgICAgaWYgKCFhcikgYXIgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChmcm9tLCAwLCBpKTtcclxuICAgICAgICAgICAgYXJbaV0gPSBmcm9tW2ldO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB0by5jb25jYXQoYXIgfHwgQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoZnJvbSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19hd2FpdCh2KSB7XHJcbiAgICByZXR1cm4gdGhpcyBpbnN0YW5jZW9mIF9fYXdhaXQgPyAodGhpcy52ID0gdiwgdGhpcykgOiBuZXcgX19hd2FpdCh2KTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNHZW5lcmF0b3IodGhpc0FyZywgX2FyZ3VtZW50cywgZ2VuZXJhdG9yKSB7XHJcbiAgICBpZiAoIVN5bWJvbC5hc3luY0l0ZXJhdG9yKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiU3ltYm9sLmFzeW5jSXRlcmF0b3IgaXMgbm90IGRlZmluZWQuXCIpO1xyXG4gICAgdmFyIGcgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSksIGksIHEgPSBbXTtcclxuICAgIHJldHVybiBpID0ge30sIHZlcmIoXCJuZXh0XCIpLCB2ZXJiKFwidGhyb3dcIiksIHZlcmIoXCJyZXR1cm5cIiksIGlbU3ltYm9sLmFzeW5jSXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobikgeyBpZiAoZ1tuXSkgaVtuXSA9IGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAoYSwgYikgeyBxLnB1c2goW24sIHYsIGEsIGJdKSA+IDEgfHwgcmVzdW1lKG4sIHYpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gcmVzdW1lKG4sIHYpIHsgdHJ5IHsgc3RlcChnW25dKHYpKTsgfSBjYXRjaCAoZSkgeyBzZXR0bGUocVswXVszXSwgZSk7IH0gfVxyXG4gICAgZnVuY3Rpb24gc3RlcChyKSB7IHIudmFsdWUgaW5zdGFuY2VvZiBfX2F3YWl0ID8gUHJvbWlzZS5yZXNvbHZlKHIudmFsdWUudikudGhlbihmdWxmaWxsLCByZWplY3QpIDogc2V0dGxlKHFbMF1bMl0sIHIpOyB9XHJcbiAgICBmdW5jdGlvbiBmdWxmaWxsKHZhbHVlKSB7IHJlc3VtZShcIm5leHRcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiByZWplY3QodmFsdWUpIHsgcmVzdW1lKFwidGhyb3dcIiwgdmFsdWUpOyB9XHJcbiAgICBmdW5jdGlvbiBzZXR0bGUoZiwgdikgeyBpZiAoZih2KSwgcS5zaGlmdCgpLCBxLmxlbmd0aCkgcmVzdW1lKHFbMF1bMF0sIHFbMF1bMV0pOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jRGVsZWdhdG9yKG8pIHtcclxuICAgIHZhciBpLCBwO1xyXG4gICAgcmV0dXJuIGkgPSB7fSwgdmVyYihcIm5leHRcIiksIHZlcmIoXCJ0aHJvd1wiLCBmdW5jdGlvbiAoZSkgeyB0aHJvdyBlOyB9KSwgdmVyYihcInJldHVyblwiKSwgaVtTeW1ib2wuaXRlcmF0b3JdID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gdGhpczsgfSwgaTtcclxuICAgIGZ1bmN0aW9uIHZlcmIobiwgZikgeyBpW25dID0gb1tuXSA/IGZ1bmN0aW9uICh2KSB7IHJldHVybiAocCA9ICFwKSA/IHsgdmFsdWU6IF9fYXdhaXQob1tuXSh2KSksIGRvbmU6IGZhbHNlIH0gOiBmID8gZih2KSA6IHY7IH0gOiBmOyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdLCBpO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiAobyA9IHR5cGVvZiBfX3ZhbHVlcyA9PT0gXCJmdW5jdGlvblwiID8gX192YWx1ZXMobykgOiBvW1N5bWJvbC5pdGVyYXRvcl0oKSwgaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGkpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IGlbbl0gPSBvW25dICYmIGZ1bmN0aW9uICh2KSB7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHYgPSBvW25dKHYpLCBzZXR0bGUocmVzb2x2ZSwgcmVqZWN0LCB2LmRvbmUsIHYudmFsdWUpOyB9KTsgfTsgfVxyXG4gICAgZnVuY3Rpb24gc2V0dGxlKHJlc29sdmUsIHJlamVjdCwgZCwgdikgeyBQcm9taXNlLnJlc29sdmUodikudGhlbihmdW5jdGlvbih2KSB7IHJlc29sdmUoeyB2YWx1ZTogdiwgZG9uZTogZCB9KTsgfSwgcmVqZWN0KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tYWtlVGVtcGxhdGVPYmplY3QoY29va2VkLCByYXcpIHtcclxuICAgIGlmIChPYmplY3QuZGVmaW5lUHJvcGVydHkpIHsgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNvb2tlZCwgXCJyYXdcIiwgeyB2YWx1ZTogcmF3IH0pOyB9IGVsc2UgeyBjb29rZWQucmF3ID0gcmF3OyB9XHJcbiAgICByZXR1cm4gY29va2VkO1xyXG59O1xyXG5cclxudmFyIF9fc2V0TW9kdWxlRGVmYXVsdCA9IE9iamVjdC5jcmVhdGUgPyAoZnVuY3Rpb24obywgdikge1xyXG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG8sIFwiZGVmYXVsdFwiLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2IH0pO1xyXG59KSA6IGZ1bmN0aW9uKG8sIHYpIHtcclxuICAgIG9bXCJkZWZhdWx0XCJdID0gdjtcclxufTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydFN0YXIobW9kKSB7XHJcbiAgICBpZiAobW9kICYmIG1vZC5fX2VzTW9kdWxlKSByZXR1cm4gbW9kO1xyXG4gICAgdmFyIHJlc3VsdCA9IHt9O1xyXG4gICAgaWYgKG1vZCAhPSBudWxsKSBmb3IgKHZhciBrIGluIG1vZCkgaWYgKGsgIT09IFwiZGVmYXVsdFwiICYmIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChtb2QsIGspKSBfX2NyZWF0ZUJpbmRpbmcocmVzdWx0LCBtb2QsIGspO1xyXG4gICAgX19zZXRNb2R1bGVEZWZhdWx0KHJlc3VsdCwgbW9kKTtcclxuICAgIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2ltcG9ydERlZmF1bHQobW9kKSB7XHJcbiAgICByZXR1cm4gKG1vZCAmJiBtb2QuX19lc01vZHVsZSkgPyBtb2QgOiB7IGRlZmF1bHQ6IG1vZCB9O1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEdldChyZWNlaXZlciwgc3RhdGUsIGtpbmQsIGYpIHtcclxuICAgIGlmIChraW5kID09PSBcImFcIiAmJiAhZikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlByaXZhdGUgYWNjZXNzb3Igd2FzIGRlZmluZWQgd2l0aG91dCBhIGdldHRlclwiKTtcclxuICAgIGlmICh0eXBlb2Ygc3RhdGUgPT09IFwiZnVuY3Rpb25cIiA/IHJlY2VpdmVyICE9PSBzdGF0ZSB8fCAhZiA6ICFzdGF0ZS5oYXMocmVjZWl2ZXIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHJlYWQgcHJpdmF0ZSBtZW1iZXIgZnJvbSBhbiBvYmplY3Qgd2hvc2UgY2xhc3MgZGlkIG5vdCBkZWNsYXJlIGl0XCIpO1xyXG4gICAgcmV0dXJuIGtpbmQgPT09IFwibVwiID8gZiA6IGtpbmQgPT09IFwiYVwiID8gZi5jYWxsKHJlY2VpdmVyKSA6IGYgPyBmLnZhbHVlIDogc3RhdGUuZ2V0KHJlY2VpdmVyKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fY2xhc3NQcml2YXRlRmllbGRTZXQocmVjZWl2ZXIsIHN0YXRlLCB2YWx1ZSwga2luZCwgZikge1xyXG4gICAgaWYgKGtpbmQgPT09IFwibVwiKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBtZXRob2QgaXMgbm90IHdyaXRhYmxlXCIpO1xyXG4gICAgaWYgKGtpbmQgPT09IFwiYVwiICYmICFmKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUHJpdmF0ZSBhY2Nlc3NvciB3YXMgZGVmaW5lZCB3aXRob3V0IGEgc2V0dGVyXCIpO1xyXG4gICAgaWYgKHR5cGVvZiBzdGF0ZSA9PT0gXCJmdW5jdGlvblwiID8gcmVjZWl2ZXIgIT09IHN0YXRlIHx8ICFmIDogIXN0YXRlLmhhcyhyZWNlaXZlcikpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYW5ub3Qgd3JpdGUgcHJpdmF0ZSBtZW1iZXIgdG8gYW4gb2JqZWN0IHdob3NlIGNsYXNzIGRpZCBub3QgZGVjbGFyZSBpdFwiKTtcclxuICAgIHJldHVybiAoa2luZCA9PT0gXCJhXCIgPyBmLmNhbGwocmVjZWl2ZXIsIHZhbHVlKSA6IGYgPyBmLnZhbHVlID0gdmFsdWUgOiBzdGF0ZS5zZXQocmVjZWl2ZXIsIHZhbHVlKSksIHZhbHVlO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19jbGFzc1ByaXZhdGVGaWVsZEluKHN0YXRlLCByZWNlaXZlcikge1xyXG4gICAgaWYgKHJlY2VpdmVyID09PSBudWxsIHx8ICh0eXBlb2YgcmVjZWl2ZXIgIT09IFwib2JqZWN0XCIgJiYgdHlwZW9mIHJlY2VpdmVyICE9PSBcImZ1bmN0aW9uXCIpKSB0aHJvdyBuZXcgVHlwZUVycm9yKFwiQ2Fubm90IHVzZSAnaW4nIG9wZXJhdG9yIG9uIG5vbi1vYmplY3RcIik7XHJcbiAgICByZXR1cm4gdHlwZW9mIHN0YXRlID09PSBcImZ1bmN0aW9uXCIgPyByZWNlaXZlciA9PT0gc3RhdGUgOiBzdGF0ZS5oYXMocmVjZWl2ZXIpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgICBfX2V4dGVuZHMsXHJcbiAgICBfX2Fzc2lnbixcclxuICAgIF9fcmVzdCxcclxuICAgIF9fZGVjb3JhdGUsXHJcbiAgICBfX3BhcmFtLFxyXG4gICAgX19tZXRhZGF0YSxcclxuICAgIF9fYXdhaXRlcixcclxuICAgIF9fZ2VuZXJhdG9yLFxyXG4gICAgX19jcmVhdGVCaW5kaW5nLFxyXG4gICAgX19leHBvcnRTdGFyLFxyXG4gICAgX192YWx1ZXMsXHJcbiAgICBfX3JlYWQsXHJcbiAgICBfX3NwcmVhZCxcclxuICAgIF9fc3ByZWFkQXJyYXlzLFxyXG4gICAgX19zcHJlYWRBcnJheSxcclxuICAgIF9fYXdhaXQsXHJcbiAgICBfX2FzeW5jR2VuZXJhdG9yLFxyXG4gICAgX19hc3luY0RlbGVnYXRvcixcclxuICAgIF9fYXN5bmNWYWx1ZXMsXHJcbiAgICBfX21ha2VUZW1wbGF0ZU9iamVjdCxcclxuICAgIF9faW1wb3J0U3RhcixcclxuICAgIF9faW1wb3J0RGVmYXVsdCxcclxuICAgIF9fY2xhc3NQcml2YXRlRmllbGRHZXQsXHJcbiAgICBfX2NsYXNzUHJpdmF0ZUZpZWxkU2V0LFxyXG4gICAgX19jbGFzc1ByaXZhdGVGaWVsZEluLFxyXG59O1xyXG4iLCIvKiFcblx0Q29weXJpZ2h0IChjKSAyMDE4IEplZCBXYXRzb24uXG5cdExpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgTGljZW5zZSAoTUlUKSwgc2VlXG5cdGh0dHA6Ly9qZWR3YXRzb24uZ2l0aHViLmlvL2NsYXNzbmFtZXNcbiovXG4vKiBnbG9iYWwgZGVmaW5lICovXG5cbihmdW5jdGlvbiAoKSB7XG5cdCd1c2Ugc3RyaWN0JztcblxuXHR2YXIgaGFzT3duID0ge30uaGFzT3duUHJvcGVydHk7XG5cdHZhciBuYXRpdmVDb2RlU3RyaW5nID0gJ1tuYXRpdmUgY29kZV0nO1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyAhPT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZyAmJiAhYXJnLnRvU3RyaW5nLnRvU3RyaW5nKCkuaW5jbHVkZXMoJ1tuYXRpdmUgY29kZV0nKSkge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdFx0Y29udGludWU7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRmb3IgKHZhciBrZXkgaW4gYXJnKSB7XG5cdFx0XHRcdFx0aWYgKGhhc093bi5jYWxsKGFyZywga2V5KSAmJiBhcmdba2V5XSkge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGNsYXNzZXMuam9pbignICcpO1xuXHR9XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIixudWxsLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBfZXh0ZW5kcygpIHtcbiAgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduID8gT2JqZWN0LmFzc2lnbi5iaW5kKCkgOiBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG4gICAgICBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgICAgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdGFyZ2V0O1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiAkZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMChvcmlnaW5hbEV2ZW50SGFuZGxlciwgb3VyRXZlbnRIYW5kbGVyLCB7IGNoZWNrRm9yRGVmYXVsdFByZXZlbnRlZDogY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID0gdHJ1ZSAgfSA9IHt9KSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGhhbmRsZUV2ZW50KGV2ZW50KSB7XG4gICAgICAgIG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSBudWxsIHx8IG9yaWdpbmFsRXZlbnRIYW5kbGVyID09PSB2b2lkIDAgfHwgb3JpZ2luYWxFdmVudEhhbmRsZXIoZXZlbnQpO1xuICAgICAgICBpZiAoY2hlY2tGb3JEZWZhdWx0UHJldmVudGVkID09PSBmYWxzZSB8fCAhZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgcmV0dXJuIG91ckV2ZW50SGFuZGxlciA9PT0gbnVsbCB8fCBvdXJFdmVudEhhbmRsZXIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG91ckV2ZW50SGFuZGxlcihldmVudCk7XG4gICAgfTtcbn1cblxuXG5cblxuZXhwb3J0IHskZTQyZTEwNjNjNDBmYjNlZiRleHBvcnQkYjllY2Q0MjhiNTU4ZmYxMCBhcyBjb21wb3NlRXZlbnRIYW5kbGVyc307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICQzdnFtciR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBTZXQgYSBnaXZlbiByZWYgdG8gYSBnaXZlbiB2YWx1ZVxuICogVGhpcyB1dGlsaXR5IHRha2VzIGNhcmUgb2YgZGlmZmVyZW50IHR5cGVzIG9mIHJlZnM6IGNhbGxiYWNrIHJlZnMgYW5kIFJlZk9iamVjdChzKVxuICovIGZ1bmN0aW9uICQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSByZWYodmFsdWUpO1xuICAgIGVsc2UgaWYgKHJlZiAhPT0gbnVsbCAmJiByZWYgIT09IHVuZGVmaW5lZCkgcmVmLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbi8qKlxuICogQSB1dGlsaXR5IHRvIGNvbXBvc2UgbXVsdGlwbGUgcmVmcyB0b2dldGhlclxuICogQWNjZXB0cyBjYWxsYmFjayByZWZzIGFuZCBSZWZPYmplY3QocylcbiAqLyBmdW5jdGlvbiAkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiguLi5yZWZzKSB7XG4gICAgcmV0dXJuIChub2RlKT0+cmVmcy5mb3JFYWNoKChyZWYpPT4kNmVkMDQwNjg4OGY3M2ZjNCR2YXIkc2V0UmVmKHJlZiwgbm9kZSlcbiAgICAgICAgKVxuICAgIDtcbn1cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbXBvc2VzIG11bHRpcGxlIHJlZnNcbiAqIEFjY2VwdHMgY2FsbGJhY2sgcmVmcyBhbmQgUmVmT2JqZWN0KHMpXG4gKi8gZnVuY3Rpb24gJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUoLi4ucmVmcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgICByZXR1cm4gJDN2cW1yJHVzZUNhbGxiYWNrKCQ2ZWQwNDA2ODg4ZjczZmM0JGV4cG9ydCQ0M2U0NDZkMzJiM2QyMWFmKC4uLnJlZnMpLCByZWZzKTtcbn1cblxuXG5cblxuZXhwb3J0IHskNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiBhcyBjb21wb3NlUmVmcywgJDZlZDA0MDY4ODhmNzNmYzQkZXhwb3J0JGM3YjJjYmUzNTUyYTBkMDUgYXMgdXNlQ29tcG9zZWRSZWZzfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Y3JlYXRlQ29udGV4dCBhcyAkM2JrQUskY3JlYXRlQ29udGV4dCwgdXNlTWVtbyBhcyAkM2JrQUskdXNlTWVtbywgY3JlYXRlRWxlbWVudCBhcyAkM2JrQUskY3JlYXRlRWxlbWVudCwgdXNlQ29udGV4dCBhcyAkM2JrQUskdXNlQ29udGV4dH0gZnJvbSBcInJlYWN0XCI7XG5cblxuZnVuY3Rpb24gJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkocm9vdENvbXBvbmVudE5hbWUsIGRlZmF1bHRDb250ZXh0KSB7XG4gICAgY29uc3QgQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUNvbnRleHQoZGVmYXVsdENvbnRleHQpO1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKHByb3BzKSB7XG4gICAgICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGV4dCB9ID0gcHJvcHM7IC8vIE9ubHkgcmUtbWVtb2l6ZSB3aGVuIHByb3AgdmFsdWVzIGNoYW5nZVxuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIGNvbnN0IHZhbHVlID0gJDNia0FLJHVzZU1lbW8oKCk9PmNvbnRleHRcbiAgICAgICAgLCBPYmplY3QudmFsdWVzKGNvbnRleHQpKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgdmFsdWU6IHZhbHVlXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9XG4gICAgZnVuY3Rpb24gdXNlQ29udGV4dChjb25zdW1lck5hbWUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICBpZiAoY29udGV4dCkgcmV0dXJuIGNvbnRleHQ7XG4gICAgICAgIGlmIChkZWZhdWx0Q29udGV4dCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gZGVmYXVsdENvbnRleHQ7IC8vIGlmIGEgZGVmYXVsdENvbnRleHQgd2Fzbid0IHNwZWNpZmllZCwgaXQncyBhIHJlcXVpcmVkIGNvbnRleHQuXG4gICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICB9XG4gICAgUHJvdmlkZXIuZGlzcGxheU5hbWUgPSByb290Q29tcG9uZW50TmFtZSArICdQcm92aWRlcic7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgUHJvdmlkZXIsXG4gICAgICAgIHVzZUNvbnRleHRcbiAgICBdO1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogY3JlYXRlQ29udGV4dFNjb3BlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEoc2NvcGVOYW1lLCBjcmVhdGVDb250ZXh0U2NvcGVEZXBzID0gW10pIHtcbiAgICBsZXQgZGVmYXVsdENvbnRleHRzID0gW107XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogY3JlYXRlQ29udGV4dFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOShyb290Q29tcG9uZW50TmFtZSwgZGVmYXVsdENvbnRleHQpIHtcbiAgICAgICAgY29uc3QgQmFzZUNvbnRleHQgPSAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgY29uc3QgaW5kZXggPSBkZWZhdWx0Q29udGV4dHMubGVuZ3RoO1xuICAgICAgICBkZWZhdWx0Q29udGV4dHMgPSBbXG4gICAgICAgICAgICAuLi5kZWZhdWx0Q29udGV4dHMsXG4gICAgICAgICAgICBkZWZhdWx0Q29udGV4dFxuICAgICAgICBdO1xuICAgICAgICBmdW5jdGlvbiBQcm92aWRlcihwcm9wcykge1xuICAgICAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZXh0IH0gPSBwcm9wcztcbiAgICAgICAgICAgIGNvbnN0IENvbnRleHQgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV1baW5kZXhdKSB8fCBCYXNlQ29udGV4dDsgLy8gT25seSByZS1tZW1vaXplIHdoZW4gcHJvcCB2YWx1ZXMgY2hhbmdlXG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9ICQzYmtBSyR1c2VNZW1vKCgpPT5jb250ZXh0XG4gICAgICAgICAgICAsIE9iamVjdC52YWx1ZXMoY29udGV4dCkpO1xuICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDNia0FLJGNyZWF0ZUVsZW1lbnQoQ29udGV4dC5Qcm92aWRlciwge1xuICAgICAgICAgICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgICAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgICAgICB9XG4gICAgICAgIGZ1bmN0aW9uIHVzZUNvbnRleHQoY29uc3VtZXJOYW1lLCBzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgQ29udGV4dCA9IChzY29wZSA9PT0gbnVsbCB8fCBzY29wZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2NvcGVbc2NvcGVOYW1lXVtpbmRleF0pIHx8IEJhc2VDb250ZXh0O1xuICAgICAgICAgICAgY29uc3QgY29udGV4dCA9ICQzYmtBSyR1c2VDb250ZXh0KENvbnRleHQpO1xuICAgICAgICAgICAgaWYgKGNvbnRleHQpIHJldHVybiBjb250ZXh0O1xuICAgICAgICAgICAgaWYgKGRlZmF1bHRDb250ZXh0ICE9PSB1bmRlZmluZWQpIHJldHVybiBkZWZhdWx0Q29udGV4dDsgLy8gaWYgYSBkZWZhdWx0Q29udGV4dCB3YXNuJ3Qgc3BlY2lmaWVkLCBpdCdzIGEgcmVxdWlyZWQgY29udGV4dC5cbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgXFxgJHtjb25zdW1lck5hbWV9XFxgIG11c3QgYmUgdXNlZCB3aXRoaW4gXFxgJHtyb290Q29tcG9uZW50TmFtZX1cXGBgKTtcbiAgICAgICAgfVxuICAgICAgICBQcm92aWRlci5kaXNwbGF5TmFtZSA9IHJvb3RDb21wb25lbnROYW1lICsgJ1Byb3ZpZGVyJztcbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIFByb3ZpZGVyLFxuICAgICAgICAgICAgdXNlQ29udGV4dFxuICAgICAgICBdO1xuICAgIH1cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBjcmVhdGVTY29wZVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBjcmVhdGVTY29wZSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlQ29udGV4dHMgPSBkZWZhdWx0Q29udGV4dHMubWFwKChkZWZhdWx0Q29udGV4dCk9PntcbiAgICAgICAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQzYmtBSyRjcmVhdGVDb250ZXh0KGRlZmF1bHRDb250ZXh0KTtcbiAgICAgICAgfSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VTY29wZShzY29wZSkge1xuICAgICAgICAgICAgY29uc3QgY29udGV4dHMgPSAoc2NvcGUgPT09IG51bGwgfHwgc2NvcGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHNjb3BlW3Njb3BlTmFtZV0pIHx8IHNjb3BlQ29udGV4dHM7XG4gICAgICAgICAgICByZXR1cm4gJDNia0FLJHVzZU1lbW8oKCk9Pih7XG4gICAgICAgICAgICAgICAgICAgIFtgX19zY29wZSR7c2NvcGVOYW1lfWBdOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi5zY29wZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIFtzY29wZU5hbWVdOiBjb250ZXh0c1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIHNjb3BlLFxuICAgICAgICAgICAgICAgIGNvbnRleHRzXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTtcbiAgICByZXR1cm4gW1xuICAgICAgICAkYzUxMmMyN2FiMDJlZjg5NSRleHBvcnQkZmQ0MmY1MmZkM2FlMTEwOSxcbiAgICAgICAgJGM1MTJjMjdhYjAyZWY4OTUkdmFyJGNvbXBvc2VDb250ZXh0U2NvcGVzKGNyZWF0ZVNjb3BlLCAuLi5jcmVhdGVDb250ZXh0U2NvcGVEZXBzKVxuICAgIF07XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBjb21wb3NlQ29udGV4dFNjb3Blc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkYzUxMmMyN2FiMDJlZjg5NSR2YXIkY29tcG9zZUNvbnRleHRTY29wZXMoLi4uc2NvcGVzKSB7XG4gICAgY29uc3QgYmFzZVNjb3BlID0gc2NvcGVzWzBdO1xuICAgIGlmIChzY29wZXMubGVuZ3RoID09PSAxKSByZXR1cm4gYmFzZVNjb3BlO1xuICAgIGNvbnN0IGNyZWF0ZVNjb3BlMSA9ICgpPT57XG4gICAgICAgIGNvbnN0IHNjb3BlSG9va3MgPSBzY29wZXMubWFwKChjcmVhdGVTY29wZSk9Pih7XG4gICAgICAgICAgICAgICAgdXNlU2NvcGU6IGNyZWF0ZVNjb3BlKCksXG4gICAgICAgICAgICAgICAgc2NvcGVOYW1lOiBjcmVhdGVTY29wZS5zY29wZU5hbWVcbiAgICAgICAgICAgIH0pXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiB1c2VDb21wb3NlZFNjb3BlcyhvdmVycmlkZVNjb3Blcykge1xuICAgICAgICAgICAgY29uc3QgbmV4dFNjb3BlczEgPSBzY29wZUhvb2tzLnJlZHVjZSgobmV4dFNjb3BlcywgeyB1c2VTY29wZTogdXNlU2NvcGUgLCBzY29wZU5hbWU6IHNjb3BlTmFtZSAgfSk9PntcbiAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY2FsbGluZyBhIGhvb2sgaW5zaWRlIGEgY2FsbGJhY2sgd2hpY2ggUmVhY3Qgd2FybnMgYWdhaW5zdCB0byBhdm9pZCBpbmNvbnNpc3RlbnRcbiAgICAgICAgICAgICAgICAvLyByZW5kZXJzLCBob3dldmVyLCBzY29waW5nIGRvZXNuJ3QgaGF2ZSByZW5kZXIgc2lkZSBlZmZlY3RzIHNvIHdlIGlnbm9yZSB0aGUgcnVsZS5cbiAgICAgICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvcnVsZXMtb2YtaG9va3NcbiAgICAgICAgICAgICAgICBjb25zdCBzY29wZVByb3BzID0gdXNlU2NvcGUob3ZlcnJpZGVTY29wZXMpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRTY29wZSA9IHNjb3BlUHJvcHNbYF9fc2NvcGUke3Njb3BlTmFtZX1gXTtcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAuLi5uZXh0U2NvcGVzLFxuICAgICAgICAgICAgICAgICAgICAuLi5jdXJyZW50U2NvcGVcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSwge30pO1xuICAgICAgICAgICAgcmV0dXJuICQzYmtBSyR1c2VNZW1vKCgpPT4oe1xuICAgICAgICAgICAgICAgICAgICBbYF9fc2NvcGUke2Jhc2VTY29wZS5zY29wZU5hbWV9YF06IG5leHRTY29wZXMxXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICwgW1xuICAgICAgICAgICAgICAgIG5leHRTY29wZXMxXG4gICAgICAgICAgICBdKTtcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIGNyZWF0ZVNjb3BlMS5zY29wZU5hbWUgPSBiYXNlU2NvcGUuc2NvcGVOYW1lO1xuICAgIHJldHVybiBjcmVhdGVTY29wZTE7XG59XG5cblxuXG5cbmV4cG9ydCB7JGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JGZkNDJmNTJmZDNhZTExMDkgYXMgY3JlYXRlQ29udGV4dCwgJGM1MTJjMjdhYjAyZWY4OTUkZXhwb3J0JDUwYzdiNGU5ZDlmMTljMSBhcyBjcmVhdGVDb250ZXh0U2NvcGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGR4bHdIJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqXG4gKiBPbiB0aGUgc2VydmVyLCBSZWFjdCBlbWl0cyBhIHdhcm5pbmcgd2hlbiBjYWxsaW5nIGB1c2VMYXlvdXRFZmZlY3RgLlxuICogVGhpcyBpcyBiZWNhdXNlIG5laXRoZXIgYHVzZUxheW91dEVmZmVjdGAgbm9yIGB1c2VFZmZlY3RgIHJ1biBvbiB0aGUgc2VydmVyLlxuICogV2UgdXNlIHRoaXMgc2FmZSB2ZXJzaW9uIHdoaWNoIHN1cHByZXNzZXMgdGhlIHdhcm5pbmcgYnkgcmVwbGFjaW5nIGl0IHdpdGggYSBub29wIG9uIHRoZSBzZXJ2ZXIuXG4gKlxuICogU2VlOiBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlbGF5b3V0ZWZmZWN0XG4gKi8gY29uc3QgJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMgPSBCb29sZWFuKGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkgPyAkZHhsd0gkdXNlTGF5b3V0RWZmZWN0IDogKCk9Pnt9O1xuXG5cblxuXG5leHBvcnQgeyQ5Zjc5NjU5ODg2OTQ2YzE2JGV4cG9ydCRlNWM1YTVmOTE3YTU4NzFjIGFzIHVzZUxheW91dEVmZmVjdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgKiBhcyAkMkFPRHgkcmVhY3QgZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMkFPRHgkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5jb25zdCAkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCA9ICQyQU9EeCRyZWFjdFsndXNlSWQnLnRvU3RyaW5nKCldIHx8ICgoKT0+dW5kZWZpbmVkXG4pO1xubGV0ICQxNzQ2YTM0NWYzZDczYmI3JHZhciRjb3VudCA9IDA7XG5mdW5jdGlvbiAkMTc0NmEzNDVmM2Q3M2JiNyRleHBvcnQkZjY4MDg3N2EzNDcxMWUzNyhkZXRlcm1pbmlzdGljSWQpIHtcbiAgICBjb25zdCBbaWQsIHNldElkXSA9ICQyQU9EeCRyZWFjdC51c2VTdGF0ZSgkMTc0NmEzNDVmM2Q3M2JiNyR2YXIkdXNlUmVhY3RJZCgpKTsgLy8gUmVhY3QgdmVyc2lvbnMgb2xkZXIgdGhhbiAxOCB3aWxsIGhhdmUgY2xpZW50LXNpZGUgaWRzIG9ubHkuXG4gICAgJDJBT0R4JHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoIWRldGVybWluaXN0aWNJZCkgc2V0SWQoKHJlYWN0SWQpPT5yZWFjdElkICE9PSBudWxsICYmIHJlYWN0SWQgIT09IHZvaWQgMCA/IHJlYWN0SWQgOiBTdHJpbmcoJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50KyspXG4gICAgICAgICk7XG4gICAgfSwgW1xuICAgICAgICBkZXRlcm1pbmlzdGljSWRcbiAgICBdKTtcbiAgICByZXR1cm4gZGV0ZXJtaW5pc3RpY0lkIHx8IChpZCA/IGByYWRpeC0ke2lkfWAgOiAnJyk7XG59XG5cblxuXG5cbmV4cG9ydCB7JDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzcgYXMgdXNlSWR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VSZWYgYXMgJGx3aVdqJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRsd2lXaiR1c2VFZmZlY3QsIHVzZU1lbW8gYXMgJGx3aVdqJHVzZU1lbW99IGZyb20gXCJyZWFjdFwiO1xuXG5cbi8qKlxuICogQSBjdXN0b20gaG9vayB0aGF0IGNvbnZlcnRzIGEgY2FsbGJhY2sgdG8gYSByZWYgdG8gYXZvaWQgdHJpZ2dlcmluZyByZS1yZW5kZXJzIHdoZW4gcGFzc2VkIGFzIGFcbiAqIHByb3Agb3IgYXZvaWQgcmUtZXhlY3V0aW5nIGVmZmVjdHMgd2hlbiBwYXNzZWQgYXMgYSBkZXBlbmRlbmN5XG4gKi8gZnVuY3Rpb24gJGIxYjIzMTRmNWY5YTFkODQkZXhwb3J0JDI1YmVjOGM2ZjU0ZWU3OWEoY2FsbGJhY2spIHtcbiAgICBjb25zdCBjYWxsYmFja1JlZiA9ICRsd2lXaiR1c2VSZWYoY2FsbGJhY2spO1xuICAgICRsd2lXaiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY2FsbGJhY2tSZWYuY3VycmVudCA9IGNhbGxiYWNrO1xuICAgIH0pOyAvLyBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvaXNzdWVzLzE5MjQwXG4gICAgcmV0dXJuICRsd2lXaiR1c2VNZW1vKCgpPT4oLi4uYXJncyk9PntcbiAgICAgICAgICAgIHZhciBfY2FsbGJhY2tSZWYkY3VycmVudDtcbiAgICAgICAgICAgIHJldHVybiAoX2NhbGxiYWNrUmVmJGN1cnJlbnQgPSBjYWxsYmFja1JlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY2FsbGJhY2tSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NhbGxiYWNrUmVmJGN1cnJlbnQuY2FsbChjYWxsYmFja1JlZiwgLi4uYXJncyk7XG4gICAgICAgIH1cbiAgICAsIFtdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYjFiMjMxNGY1ZjlhMWQ4NCRleHBvcnQkMjViZWM4YzZmNTRlZTc5YSBhcyB1c2VDYWxsYmFja1JlZn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZUNhbGxiYWNrIGFzICRiblB3OSR1c2VDYWxsYmFjaywgdXNlU3RhdGUgYXMgJGJuUHc5JHVzZVN0YXRlLCB1c2VSZWYgYXMgJGJuUHc5JHVzZVJlZiwgdXNlRWZmZWN0IGFzICRiblB3OSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkYm5QdzkkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuZnVuY3Rpb24gJDcxY2Q3NmNjNjBlMDQ1NGUkZXhwb3J0JDZmMzIxMzUwODBjYjRjMyh7IHByb3A6IHByb3AgLCBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgPSAoKT0+e30gIH0pIHtcbiAgICBjb25zdCBbdW5jb250cm9sbGVkUHJvcCwgc2V0VW5jb250cm9sbGVkUHJvcF0gPSAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoe1xuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AsXG4gICAgICAgIG9uQ2hhbmdlOiBvbkNoYW5nZVxuICAgIH0pO1xuICAgIGNvbnN0IGlzQ29udHJvbGxlZCA9IHByb3AgIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCB2YWx1ZTEgPSBpc0NvbnRyb2xsZWQgPyBwcm9wIDogdW5jb250cm9sbGVkUHJvcDtcbiAgICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAkYm5QdzkkdXNlQ2FsbGJhY2tSZWYob25DaGFuZ2UpO1xuICAgIGNvbnN0IHNldFZhbHVlID0gJGJuUHc5JHVzZUNhbGxiYWNrKChuZXh0VmFsdWUpPT57XG4gICAgICAgIGlmIChpc0NvbnRyb2xsZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHNldHRlciA9IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIG5leHRWYWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHNldHRlcihwcm9wKSA6IG5leHRWYWx1ZTtcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gcHJvcCkgaGFuZGxlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSBlbHNlIHNldFVuY29udHJvbGxlZFByb3AobmV4dFZhbHVlKTtcbiAgICB9LCBbXG4gICAgICAgIGlzQ29udHJvbGxlZCxcbiAgICAgICAgcHJvcCxcbiAgICAgICAgc2V0VW5jb250cm9sbGVkUHJvcCxcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgdmFsdWUxLFxuICAgICAgICBzZXRWYWx1ZVxuICAgIF07XG59XG5mdW5jdGlvbiAkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUoeyBkZWZhdWx0UHJvcDogZGVmYXVsdFByb3AgLCBvbkNoYW5nZTogb25DaGFuZ2UgIH0pIHtcbiAgICBjb25zdCB1bmNvbnRyb2xsZWRTdGF0ZSA9ICRiblB3OSR1c2VTdGF0ZShkZWZhdWx0UHJvcCk7XG4gICAgY29uc3QgW3ZhbHVlXSA9IHVuY29udHJvbGxlZFN0YXRlO1xuICAgIGNvbnN0IHByZXZWYWx1ZVJlZiA9ICRiblB3OSR1c2VSZWYodmFsdWUpO1xuICAgIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICRiblB3OSR1c2VDYWxsYmFja1JlZihvbkNoYW5nZSk7XG4gICAgJGJuUHc5JHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAocHJldlZhbHVlUmVmLmN1cnJlbnQgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICBoYW5kbGVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgcHJldlZhbHVlUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIHByZXZWYWx1ZVJlZixcbiAgICAgICAgaGFuZGxlQ2hhbmdlXG4gICAgXSk7XG4gICAgcmV0dXJuIHVuY29udHJvbGxlZFN0YXRlO1xufVxuXG5cblxuXG5leHBvcnQgeyQ3MWNkNzZjYzYwZTA0NTRlJGV4cG9ydCQ2ZjMyMTM1MDgwY2I0YzMgYXMgdXNlQ29udHJvbGxhYmxlU3RhdGV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ5SXJqWCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ5SXJqWCRmb3J3YXJkUmVmLCBDaGlsZHJlbiBhcyAkOUlyalgkQ2hpbGRyZW4sIGlzVmFsaWRFbGVtZW50IGFzICQ5SXJqWCRpc1ZhbGlkRWxlbWVudCwgY3JlYXRlRWxlbWVudCBhcyAkOUlyalgkY3JlYXRlRWxlbWVudCwgY2xvbmVFbGVtZW50IGFzICQ5SXJqWCRjbG9uZUVsZW1lbnQsIEZyYWdtZW50IGFzICQ5SXJqWCRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VSZWZzIGFzICQ5SXJqWCRjb21wb3NlUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCA9IC8qI19fUFVSRV9fKi8gJDlJcmpYJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5zbG90UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNoaWxkcmVuQXJyYXkgPSAkOUlyalgkQ2hpbGRyZW4udG9BcnJheShjaGlsZHJlbik7XG4gICAgY29uc3Qgc2xvdHRhYmxlID0gY2hpbGRyZW5BcnJheS5maW5kKCQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZSk7XG4gICAgaWYgKHNsb3R0YWJsZSkge1xuICAgICAgICAvLyB0aGUgbmV3IGVsZW1lbnQgdG8gcmVuZGVyIGlzIHRoZSBvbmUgcGFzc2VkIGFzIGEgY2hpbGQgb2YgYFNsb3R0YWJsZWBcbiAgICAgICAgY29uc3QgbmV3RWxlbWVudCA9IHNsb3R0YWJsZS5wcm9wcy5jaGlsZHJlbjtcbiAgICAgICAgY29uc3QgbmV3Q2hpbGRyZW4gPSBjaGlsZHJlbkFycmF5Lm1hcCgoY2hpbGQpPT57XG4gICAgICAgICAgICBpZiAoY2hpbGQgPT09IHNsb3R0YWJsZSkge1xuICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgdGhlIG5ldyBlbGVtZW50IHdpbGwgYmUgdGhlIG9uZSByZW5kZXJlZCwgd2UgYXJlIG9ubHkgaW50ZXJlc3RlZFxuICAgICAgICAgICAgICAgIC8vIGluIGdyYWJiaW5nIGl0cyBjaGlsZHJlbiAoYG5ld0VsZW1lbnQucHJvcHMuY2hpbGRyZW5gKVxuICAgICAgICAgICAgICAgIGlmICgkOUlyalgkQ2hpbGRyZW4uY291bnQobmV3RWxlbWVudCkgPiAxKSByZXR1cm4gJDlJcmpYJENoaWxkcmVuLm9ubHkobnVsbCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGlzVmFsaWRFbGVtZW50KG5ld0VsZW1lbnQpID8gbmV3RWxlbWVudC5wcm9wcy5jaGlsZHJlbiA6IG51bGw7XG4gICAgICAgICAgICB9IGVsc2UgcmV0dXJuIGNoaWxkO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDlJcmpYJGNyZWF0ZUVsZW1lbnQoJDVlNjNjOTYxZmMxY2UyMTEkdmFyJFNsb3RDbG9uZSwgJDlJcmpYJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBzbG90UHJvcHMsIHtcbiAgICAgICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgICAgIH0pLCAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChuZXdFbGVtZW50KSA/IC8qI19fUFVSRV9fKi8gJDlJcmpYJGNsb25lRWxlbWVudChuZXdFbGVtZW50LCB1bmRlZmluZWQsIG5ld0NoaWxkcmVuKSA6IG51bGwpO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkNWU2M2M5NjFmYzFjZTIxMSR2YXIkU2xvdENsb25lLCAkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHNsb3RQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbik7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCQ4YzZlZDVjNjY2YWMxMzYwLmRpc3BsYXlOYW1lID0gJ1Nsb3QnO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2xvdENsb25lXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUgPSAvKiNfX1BVUkVfXyovICQ5SXJqWCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uc2xvdFByb3BzIH0gPSBwcm9wcztcbiAgICBpZiAoLyojX19QVVJFX18qLyAkOUlyalgkaXNWYWxpZEVsZW1lbnQoY2hpbGRyZW4pKSByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY2xvbmVFbGVtZW50KGNoaWxkcmVuLCB7XG4gICAgICAgIC4uLiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRtZXJnZVByb3BzKHNsb3RQcm9wcywgY2hpbGRyZW4ucHJvcHMpLFxuICAgICAgICByZWY6IGZvcndhcmRlZFJlZiA/ICQ5SXJqWCRjb21wb3NlUmVmcyhmb3J3YXJkZWRSZWYsIGNoaWxkcmVuLnJlZikgOiBjaGlsZHJlbi5yZWZcbiAgICB9KTtcbiAgICByZXR1cm4gJDlJcmpYJENoaWxkcmVuLmNvdW50KGNoaWxkcmVuKSA+IDEgPyAkOUlyalgkQ2hpbGRyZW4ub25seShudWxsKSA6IG51bGw7XG59KTtcbiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUuZGlzcGxheU5hbWUgPSAnU2xvdENsb25lJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNsb3R0YWJsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSA9ICh7IGNoaWxkcmVuOiBjaGlsZHJlbiAgfSk9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOUlyalgkY3JlYXRlRWxlbWVudCgkOUlyalgkRnJhZ21lbnQsIG51bGwsIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovIGZ1bmN0aW9uICQ1ZTYzYzk2MWZjMWNlMjExJHZhciRpc1Nsb3R0YWJsZShjaGlsZCkge1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5SXJqWCRpc1ZhbGlkRWxlbWVudChjaGlsZCkgJiYgY2hpbGQudHlwZSA9PT0gJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGQ5ZjFjY2YwYmRiMDVkNDU7XG59XG5mdW5jdGlvbiAkNWU2M2M5NjFmYzFjZTIxMSR2YXIkbWVyZ2VQcm9wcyhzbG90UHJvcHMsIGNoaWxkUHJvcHMpIHtcbiAgICAvLyBhbGwgY2hpbGQgcHJvcHMgc2hvdWxkIG92ZXJyaWRlXG4gICAgY29uc3Qgb3ZlcnJpZGVQcm9wcyA9IHtcbiAgICAgICAgLi4uY2hpbGRQcm9wc1xuICAgIH07XG4gICAgZm9yKGNvbnN0IHByb3BOYW1lIGluIGNoaWxkUHJvcHMpe1xuICAgICAgICBjb25zdCBzbG90UHJvcFZhbHVlID0gc2xvdFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgY2hpbGRQcm9wVmFsdWUgPSBjaGlsZFByb3BzW3Byb3BOYW1lXTtcbiAgICAgICAgY29uc3QgaXNIYW5kbGVyID0gL15vbltBLVpdLy50ZXN0KHByb3BOYW1lKTtcbiAgICAgICAgaWYgKGlzSGFuZGxlcikge1xuICAgICAgICAgICAgLy8gaWYgdGhlIGhhbmRsZXIgZXhpc3RzIG9uIGJvdGgsIHdlIGNvbXBvc2UgdGhlbVxuICAgICAgICAgICAgaWYgKHNsb3RQcm9wVmFsdWUgJiYgY2hpbGRQcm9wVmFsdWUpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0gKC4uLmFyZ3MpPT57XG4gICAgICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWUoLi4uYXJncyk7XG4gICAgICAgICAgICAgICAgc2xvdFByb3BWYWx1ZSguLi5hcmdzKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBlbHNlIGlmIChzbG90UHJvcFZhbHVlKSBvdmVycmlkZVByb3BzW3Byb3BOYW1lXSA9IHNsb3RQcm9wVmFsdWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJvcE5hbWUgPT09ICdzdHlsZScpIG92ZXJyaWRlUHJvcHNbcHJvcE5hbWVdID0ge1xuICAgICAgICAgICAgLi4uc2xvdFByb3BWYWx1ZSxcbiAgICAgICAgICAgIC4uLmNoaWxkUHJvcFZhbHVlXG4gICAgICAgIH07XG4gICAgICAgIGVsc2UgaWYgKHByb3BOYW1lID09PSAnY2xhc3NOYW1lJykgb3ZlcnJpZGVQcm9wc1twcm9wTmFtZV0gPSBbXG4gICAgICAgICAgICBzbG90UHJvcFZhbHVlLFxuICAgICAgICAgICAgY2hpbGRQcm9wVmFsdWVcbiAgICAgICAgXS5maWx0ZXIoQm9vbGVhbikuam9pbignICcpO1xuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICAuLi5zbG90UHJvcHMsXG4gICAgICAgIC4uLm92ZXJyaWRlUHJvcHNcbiAgICB9O1xufVxuY29uc3QgJDVlNjNjOTYxZmMxY2UyMTEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MDtcblxuXG5cblxuZXhwb3J0IHskNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCBhcyBTbG90LCAkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSBhcyBTbG90dGFibGUsICQ1ZTYzYzk2MWZjMWNlMjExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ0cTVGcSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICQ0cTVGcSRmb3J3YXJkUmVmLCB1c2VFZmZlY3QgYXMgJDRxNUZxJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkNHE1RnEkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkNHE1RnEkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1Nsb3QgYXMgJDRxNUZxJFNsb3R9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cbmNvbnN0ICQ4OTI3ZjZmMmFjYzRmMzg2JHZhciROT0RFUyA9IFtcbiAgICAnYScsXG4gICAgJ2J1dHRvbicsXG4gICAgJ2RpdicsXG4gICAgJ2Zvcm0nLFxuICAgICdoMicsXG4gICAgJ2gzJyxcbiAgICAnaW1nJyxcbiAgICAnaW5wdXQnLFxuICAgICdsYWJlbCcsXG4gICAgJ2xpJyxcbiAgICAnbmF2JyxcbiAgICAnb2wnLFxuICAgICdwJyxcbiAgICAnc3BhbicsXG4gICAgJ3N2ZycsXG4gICAgJ3VsJ1xuXTsgLy8gVGVtcG9yYXJ5IHdoaWxlIHdlIGF3YWl0IG1lcmdlIG9mIHRoaXMgZml4OlxuLy8gaHR0cHM6Ly9naXRodWIuY29tL0RlZmluaXRlbHlUeXBlZC9EZWZpbml0ZWx5VHlwZWQvcHVsbC81NTM5NlxuLy8gcHJldHRpZXItaWdub3JlXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQcmltaXRpdmVcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQgPSAkODkyN2Y2ZjJhY2M0ZjM4NiR2YXIkTk9ERVMucmVkdWNlKChwcmltaXRpdmUsIG5vZGUpPT57XG4gICAgY29uc3QgTm9kZSA9IC8qI19fUFVSRV9fKi8gJDRxNUZxJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgICAgIGNvbnN0IHsgYXNDaGlsZDogYXNDaGlsZCAsIC4uLnByaW1pdGl2ZVByb3BzIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgQ29tcCA9IGFzQ2hpbGQgPyAkNHE1RnEkU2xvdCA6IG5vZGU7XG4gICAgICAgICQ0cTVGcSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgICAgIHdpbmRvd1tTeW1ib2wuZm9yKCdyYWRpeC11aScpXSA9IHRydWU7XG4gICAgICAgIH0sIFtdKTtcbiAgICAgICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRxNUZxJGNyZWF0ZUVsZW1lbnQoQ29tcCwgJDRxNUZxJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcmltaXRpdmVQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICAgICAgfSkpO1xuICAgIH0pO1xuICAgIE5vZGUuZGlzcGxheU5hbWUgPSBgUHJpbWl0aXZlLiR7bm9kZX1gO1xuICAgIHJldHVybiB7XG4gICAgICAgIC4uLnByaW1pdGl2ZSxcbiAgICAgICAgW25vZGVdOiBOb2RlXG4gICAgfTtcbn0sIHt9KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFV0aWxzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIC8qKlxuICogRmx1c2ggY3VzdG9tIGV2ZW50IGRpc3BhdGNoXG4gKiBodHRwczovL2dpdGh1Yi5jb20vcmFkaXgtdWkvcHJpbWl0aXZlcy9wdWxsLzEzNzhcbiAqXG4gKiBSZWFjdCBiYXRjaGVzICphbGwqIGV2ZW50IGhhbmRsZXJzIHNpbmNlIHZlcnNpb24gMTgsIHRoaXMgaW50cm9kdWNlcyBjZXJ0YWluIGNvbnNpZGVyYXRpb25zIHdoZW4gdXNpbmcgY3VzdG9tIGV2ZW50IHR5cGVzLlxuICpcbiAqIEludGVybmFsbHksIFJlYWN0IHByaW9yaXRpc2VzIGV2ZW50cyBpbiB0aGUgZm9sbG93aW5nIG9yZGVyOlxuICogIC0gZGlzY3JldGVcbiAqICAtIGNvbnRpbnVvdXNcbiAqICAtIGRlZmF1bHRcbiAqXG4gKiBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVhY3QvYmxvYi9hOGE0NzQyZjFjNTQ0OTNkZjAwZGE2NDhhM2Y5ZDI2ZTNkYjljOGI1L3BhY2thZ2VzL3JlYWN0LWRvbS9zcmMvZXZlbnRzL1JlYWN0RE9NRXZlbnRMaXN0ZW5lci5qcyNMMjk0LUwzNTBcbiAqXG4gKiBgZGlzY3JldGVgIGlzIGFuICBpbXBvcnRhbnQgZGlzdGluY3Rpb24gYXMgdXBkYXRlcyB3aXRoaW4gdGhlc2UgZXZlbnRzIGFyZSBhcHBsaWVkIGltbWVkaWF0ZWx5LlxuICogUmVhY3QgaG93ZXZlciwgaXMgbm90IGFibGUgdG8gaW5mZXIgdGhlIHByaW9yaXR5IG9mIGN1c3RvbSBldmVudCB0eXBlcyBkdWUgdG8gaG93IHRoZXkgYXJlIGRldGVjdGVkIGludGVybmFsbHkuXG4gKiBCZWNhdXNlIG9mIHRoaXMsIGl0J3MgcG9zc2libGUgZm9yIHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIHRvIGJlIHVuZXhwZWN0ZWRseSBiYXRjaGVkIHdoZW5cbiAqIGRpc3BhdGNoZWQgYnkgYW5vdGhlciBgZGlzY3JldGVgIGV2ZW50LlxuICpcbiAqIEluIG9yZGVyIHRvIGVuc3VyZSB0aGF0IHVwZGF0ZXMgZnJvbSBjdXN0b20gZXZlbnRzIGFyZSBhcHBsaWVkIHByZWRpY3RhYmx5LCB3ZSBuZWVkIHRvIG1hbnVhbGx5IGZsdXNoIHRoZSBiYXRjaC5cbiAqIFRoaXMgdXRpbGl0eSBzaG91bGQgYmUgdXNlZCB3aGVuIGRpc3BhdGNoaW5nIGEgY3VzdG9tIGV2ZW50IGZyb20gd2l0aGluIGFub3RoZXIgYGRpc2NyZXRlYCBldmVudCwgdGhpcyB1dGlsaXR5XG4gKiBpcyBub3QgbmVzc2VzYXJ5IHdoZW4gZGlzcGF0Y2hpbmcga25vd24gZXZlbnQgdHlwZXMsIG9yIGlmIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgaW5zaWRlIGEgbm9uLWRpc2NyZXRlIGV2ZW50LlxuICogRm9yIGV4YW1wbGU6XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBrbm93biBjbGljayDwn5GOXG4gKiB0YXJnZXQuZGlzcGF0Y2hFdmVudChuZXcgRXZlbnQo4oCYY2xpY2vigJkpKVxuICpcbiAqIGRpc3BhdGNoaW5nIGEgY3VzdG9tIHR5cGUgd2l0aGluIGEgbm9uLWRpc2NyZXRlIGV2ZW50IPCfkY5cbiAqIG9uU2Nyb2xsPXsoZXZlbnQpID0+IGV2ZW50LnRhcmdldC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCjigJhjdXN0b21UeXBl4oCZKSl9XG4gKlxuICogZGlzcGF0Y2hpbmcgYSBjdXN0b20gdHlwZSB3aXRoaW4gYSBgZGlzY3JldGVgIGV2ZW50IPCfkY1cbiAqIG9uUG9pbnRlckRvd249eyhldmVudCkgPT4gZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KGV2ZW50LnRhcmdldCwgbmV3IEN1c3RvbUV2ZW50KOKAmGN1c3RvbVR5cGXigJkpKX1cbiAqXG4gKiBOb3RlOiB0aG91Z2ggUmVhY3QgY2xhc3NpZmllcyBgZm9jdXNgLCBgZm9jdXNpbmAgYW5kIGBmb2N1c291dGAgZXZlbnRzIGFzIGBkaXNjcmV0ZWAsIGl0J3MgIG5vdCByZWNvbW1lbmRlZCB0byB1c2VcbiAqIHRoaXMgdXRpbGl0eSB3aXRoIHRoZW0uIFRoaXMgaXMgYmVjYXVzZSBpdCdzIHBvc3NpYmxlIGZvciB0aG9zZSBoYW5kbGVycyB0byBiZSBjYWxsZWQgaW1wbGljaXRseSBkdXJpbmcgcmVuZGVyXG4gKiBlLmcuIHdoZW4gZm9jdXMgaXMgd2l0aGluIGEgY29tcG9uZW50IGFzIGl0IGlzIHVubW91bnRlZCwgb3Igd2hlbiBtYW5hZ2luZyBmb2N1cyBvbiBtb3VudC5cbiAqLyBmdW5jdGlvbiAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkNmQxYTAzMTdiZGU3ZGU3Zih0YXJnZXQsIGV2ZW50KSB7XG4gICAgaWYgKHRhcmdldCkgJDRxNUZxJGZsdXNoU3luYygoKT0+dGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpXG4gICAgKTtcbn1cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNDtcblxuXG5cblxuZXhwb3J0IHskODkyN2Y2ZjJhY2M0ZjM4NiRleHBvcnQkMjUwZmZhNjNjZGMwZDAzNCBhcyBQcmltaXRpdmUsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ4OTI3ZjZmMmFjYzRmMzg2JGV4cG9ydCQ2ZDFhMDMxN2JkZTdkZTdmIGFzIGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJGtxd3BIJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHQgYXMgJGtxd3BIJGNyZWF0ZUNvbnRleHQsIGZvcndhcmRSZWYgYXMgJGtxd3BIJGZvcndhcmRSZWYsIHVzZUNvbnRleHQgYXMgJGtxd3BIJHVzZUNvbnRleHQsIHVzZVN0YXRlIGFzICRrcXdwSCR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICRrcXdwSCR1c2VFZmZlY3QsIGNyZWF0ZUVsZW1lbnQgYXMgJGtxd3BIJGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiBhcyAka3F3cEgkdXNlUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJGtxd3BIJFByaW1pdGl2ZSwgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50IGFzICRrcXdwSCRkaXNwYXRjaERpc2NyZXRlQ3VzdG9tRXZlbnR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka3F3cEgkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka3F3cEgkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VFc2NhcGVLZXlkb3duIGFzICRrcXdwSCR1c2VFc2NhcGVLZXlkb3dufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1lc2NhcGUta2V5ZG93blwiO1xuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpc21pc3NhYmxlTGF5ZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUUgPSAnRGlzbWlzc2FibGVMYXllcic7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUgPSAnZGlzbWlzc2FibGVMYXllci51cGRhdGUnO1xuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIucG9pbnRlckRvd25PdXRzaWRlJztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFID0gJ2Rpc21pc3NhYmxlTGF5ZXIuZm9jdXNPdXRzaWRlJztcbmxldCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkb3JpZ2luYWxCb2R5UG9pbnRlckV2ZW50cztcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUNvbnRleHQoe1xuICAgIGxheWVyczogbmV3IFNldCgpLFxuICAgIGxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkOiBuZXcgU2V0KCksXG4gICAgYnJhbmNoZXM6IG5ldyBTZXQoKVxufSk7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMiA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9ub2RlJG93bmVyRG9jdW1lbnQ7XG4gICAgY29uc3QgeyBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyA9IGZhbHNlICwgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24gLCBvblBvaW50ZXJEb3duT3V0c2lkZTogb25Qb2ludGVyRG93bk91dHNpZGUgLCBvbkZvY3VzT3V0c2lkZTogb25Gb2N1c091dHNpZGUgLCBvbkludGVyYWN0T3V0c2lkZTogb25JbnRlcmFjdE91dHNpZGUgLCBvbkRpc21pc3M6IG9uRGlzbWlzcyAsIC4uLmxheWVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAka3F3cEgkdXNlQ29udGV4dCgkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRGlzbWlzc2FibGVMYXllckNvbnRleHQpO1xuICAgIGNvbnN0IFtub2RlMSwgc2V0Tm9kZV0gPSAka3F3cEgkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb3duZXJEb2N1bWVudCA9IChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZTEgPT09IG51bGwgfHwgbm9kZTEgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUxLm93bmVyRG9jdW1lbnQpICE9PSBudWxsICYmIF9ub2RlJG93bmVyRG9jdW1lbnQgIT09IHZvaWQgMCA/IF9ub2RlJG93bmVyRG9jdW1lbnQgOiBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQ7XG4gICAgY29uc3QgWywgZm9yY2VdID0gJGtxd3BIJHVzZVN0YXRlKHt9KTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgKG5vZGUpPT5zZXROb2RlKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBsYXllcnMgPSBBcnJheS5mcm9tKGNvbnRleHQubGF5ZXJzKTtcbiAgICBjb25zdCBbaGlnaGVzdExheWVyV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWRdID0gW1xuICAgICAgICAuLi5jb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkXG4gICAgXS5zbGljZSgtMSk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkSW5kZXggPSBsYXllcnMuaW5kZXhPZihoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCk7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgIGNvbnN0IGluZGV4ID0gbm9kZTEgPyBsYXllcnMuaW5kZXhPZihub2RlMSkgOiAtMTtcbiAgICBjb25zdCBpc0JvZHlQb2ludGVyRXZlbnRzRGlzYWJsZWQgPSBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPiAwO1xuICAgIGNvbnN0IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPSBpbmRleCA+PSBoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4O1xuICAgIGNvbnN0IHBvaW50ZXJEb3duT3V0c2lkZSA9ICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUoKGV2ZW50KT0+e1xuICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgIGNvbnN0IGlzUG9pbnRlckRvd25PbkJyYW5jaCA9IFtcbiAgICAgICAgICAgIC4uLmNvbnRleHQuYnJhbmNoZXNcbiAgICAgICAgXS5zb21lKChicmFuY2gpPT5icmFuY2guY29udGFpbnModGFyZ2V0KVxuICAgICAgICApO1xuICAgICAgICBpZiAoIWlzUG9pbnRlckV2ZW50c0VuYWJsZWQgfHwgaXNQb2ludGVyRG93bk9uQnJhbmNoKSByZXR1cm47XG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlID09PSBudWxsIHx8IG9uUG9pbnRlckRvd25PdXRzaWRlID09PSB2b2lkIDAgfHwgb25Qb2ludGVyRG93bk91dHNpZGUoZXZlbnQpO1xuICAgICAgICBvbkludGVyYWN0T3V0c2lkZSA9PT0gbnVsbCB8fCBvbkludGVyYWN0T3V0c2lkZSA9PT0gdm9pZCAwIHx8IG9uSW50ZXJhY3RPdXRzaWRlKGV2ZW50KTtcbiAgICAgICAgaWYgKCFldmVudC5kZWZhdWx0UHJldmVudGVkKSBvbkRpc21pc3MgPT09IG51bGwgfHwgb25EaXNtaXNzID09PSB2b2lkIDAgfHwgb25EaXNtaXNzKCk7XG4gICAgfSwgb3duZXJEb2N1bWVudCk7XG4gICAgY29uc3QgZm9jdXNPdXRzaWRlID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZSgoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldDtcbiAgICAgICAgY29uc3QgaXNGb2N1c0luQnJhbmNoID0gW1xuICAgICAgICAgICAgLi4uY29udGV4dC5icmFuY2hlc1xuICAgICAgICBdLnNvbWUoKGJyYW5jaCk9PmJyYW5jaC5jb250YWlucyh0YXJnZXQpXG4gICAgICAgICk7XG4gICAgICAgIGlmIChpc0ZvY3VzSW5CcmFuY2gpIHJldHVybjtcbiAgICAgICAgb25Gb2N1c091dHNpZGUgPT09IG51bGwgfHwgb25Gb2N1c091dHNpZGUgPT09IHZvaWQgMCB8fCBvbkZvY3VzT3V0c2lkZShldmVudCk7XG4gICAgICAgIG9uSW50ZXJhY3RPdXRzaWRlID09PSBudWxsIHx8IG9uSW50ZXJhY3RPdXRzaWRlID09PSB2b2lkIDAgfHwgb25JbnRlcmFjdE91dHNpZGUoZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIG9uRGlzbWlzcyA9PT0gbnVsbCB8fCBvbkRpc21pc3MgPT09IHZvaWQgMCB8fCBvbkRpc21pc3MoKTtcbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRXNjYXBlS2V5ZG93bigoZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IGlzSGlnaGVzdExheWVyID0gaW5kZXggPT09IGNvbnRleHQubGF5ZXJzLnNpemUgLSAxO1xuICAgICAgICBpZiAoIWlzSGlnaGVzdExheWVyKSByZXR1cm47XG4gICAgICAgIG9uRXNjYXBlS2V5RG93biA9PT0gbnVsbCB8fCBvbkVzY2FwZUtleURvd24gPT09IHZvaWQgMCB8fCBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQgJiYgb25EaXNtaXNzKSB7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgb25EaXNtaXNzKCk7XG4gICAgICAgIH1cbiAgICB9LCBvd25lckRvY3VtZW50KTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmICghbm9kZTEpIHJldHVybjtcbiAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cykge1xuICAgICAgICAgICAgaWYgKGNvbnRleHQubGF5ZXJzV2l0aE91dHNpZGVQb2ludGVyRXZlbnRzRGlzYWJsZWQuc2l6ZSA9PT0gMCkge1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzID0gb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHM7XG4gICAgICAgICAgICAgICAgb3duZXJEb2N1bWVudC5ib2R5LnN0eWxlLnBvaW50ZXJFdmVudHMgPSAnbm9uZSc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLmFkZChub2RlMSk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5sYXllcnMuYWRkKG5vZGUxKTtcbiAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgaWYgKGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50cyAmJiBjb250ZXh0LmxheWVyc1dpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkLnNpemUgPT09IDEpIG93bmVyRG9jdW1lbnQuYm9keS5zdHlsZS5wb2ludGVyRXZlbnRzID0gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJG9yaWdpbmFsQm9keVBvaW50ZXJFdmVudHM7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgb3duZXJEb2N1bWVudCxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzLFxuICAgICAgICBjb250ZXh0XG4gICAgXSk7XG4gICAgLyoqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBwcmV2ZW50IGNvbWJpbmluZyB0aGlzIGVmZmVjdCB3aXRoIHRoZSBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCBlZmZlY3RcbiAgICogYmVjYXVzZSBhIGNoYW5nZSB0byBgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzYCB3b3VsZCByZW1vdmUgdGhpcyBsYXllciBmcm9tIHRoZSBzdGFja1xuICAgKiBhbmQgYWRkIGl0IHRvIHRoZSBlbmQgYWdhaW4gc28gdGhlIGxheWVyaW5nIG9yZGVyIHdvdWxkbid0IGJlIF9jcmVhdGlvbiBvcmRlcl8uXG4gICAqIFdlIG9ubHkgd2FudCB0aGVtIHRvIGJlIHJlbW92ZWQgZnJvbSBjb250ZXh0IHN0YWNrcyB3aGVuIHVubW91bnRlZC5cbiAgICovICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoIW5vZGUxKSByZXR1cm47XG4gICAgICAgICAgICBjb250ZXh0LmxheWVycy5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgY29udGV4dC5sYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZC5kZWxldGUobm9kZTEpO1xuICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGRpc3BhdGNoVXBkYXRlKCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgY29udGV4dFxuICAgIF0pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlVXBkYXRlID0gKCk9PmZvcmNlKHt9KVxuICAgICAgICA7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpO1xuICAgICAgICByZXR1cm4gKCk9PmRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFLCBoYW5kbGVVcGRhdGUpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgbGF5ZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6IGlzQm9keVBvaW50ZXJFdmVudHNEaXNhYmxlZCA/IGlzUG9pbnRlckV2ZW50c0VuYWJsZWQgPyAnYXV0bycgOiAnbm9uZScgOiB1bmRlZmluZWQsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbkZvY3VzQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXNDYXB0dXJlLCBmb2N1c091dHNpZGUub25Gb2N1c0NhcHR1cmUpLFxuICAgICAgICBvbkJsdXJDYXB0dXJlOiAka3F3cEgkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyQ2FwdHVyZSwgZm9jdXNPdXRzaWRlLm9uQmx1ckNhcHR1cmUpLFxuICAgICAgICBvblBvaW50ZXJEb3duQ2FwdHVyZTogJGtxd3BIJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25DYXB0dXJlLCBwb2ludGVyRG93bk91dHNpZGUub25Qb2ludGVyRG93bkNhcHR1cmUpXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERJU01JU1NBQkxFX0xBWUVSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlzbWlzc2FibGVMYXllckJyYW5jaFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUUgPSAnRGlzbWlzc2FibGVMYXllckJyYW5jaCc7XG5jb25zdCAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCA9IC8qI19fUFVSRV9fKi8gJGtxd3BIJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGV4dCA9ICRrcXdwSCR1c2VDb250ZXh0KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciREaXNtaXNzYWJsZUxheWVyQ29udGV4dCk7XG4gICAgY29uc3QgcmVmID0gJGtxd3BIJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka3F3cEgkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka3F3cEgkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IG5vZGUgPSByZWYuY3VycmVudDtcbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICAgIGNvbnRleHQuYnJhbmNoZXMuYWRkKG5vZGUpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgY29udGV4dC5icmFuY2hlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LmJyYW5jaGVzXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtxd3BIJGNyZWF0ZUVsZW1lbnQoJGtxd3BIJFByaW1pdGl2ZS5kaXYsICRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkNGQ1ZWIyMTA5ZGIxNDIyOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQlJBTkNIX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIExpc3RlbnMgZm9yIGBwb2ludGVyZG93bmAgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuIFdlIHVzZSBgcG9pbnRlcmRvd25gIHJhdGhlciB0aGFuIGBwb2ludGVydXBgXG4gKiB0byBtaW1pYyBsYXllciBkaXNtaXNzaW5nIGJlaGF2aW91ciBwcmVzZW50IGluIE9TLlxuICogUmV0dXJucyBwcm9wcyB0byBwYXNzIHRvIHRoZSBub2RlIHdlIHdhbnQgdG8gY2hlY2sgZm9yIG91dHNpZGUgZXZlbnRzLlxuICovIGZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VQb2ludGVyRG93bk91dHNpZGUob25Qb2ludGVyRG93bk91dHNpZGUsIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxUaGlzID09PSBudWxsIHx8IGdsb2JhbFRoaXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IGdsb2JhbFRoaXMuZG9jdW1lbnQpIHtcbiAgICBjb25zdCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUgPSAka3F3cEgkdXNlQ2FsbGJhY2tSZWYob25Qb2ludGVyRG93bk91dHNpZGUpO1xuICAgIGNvbnN0IGlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhbmRsZUNsaWNrUmVmID0gJGtxd3BIJHVzZVJlZigoKT0+e30pO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlUG9pbnRlckRvd24gPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGV2ZW50RGV0YWlsID0ge1xuICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbEV2ZW50OiBldmVudFxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpIHtcbiAgICAgICAgICAgICAgICAgICAgJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJGhhbmRsZUFuZERpc3BhdGNoQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJFBPSU5URVJfRE9XTl9PVVRTSURFLCBoYW5kbGVQb2ludGVyRG93bk91dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNjcmV0ZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIE9uIHRvdWNoIGRldmljZXMsIHdlIG5lZWQgdG8gd2FpdCBmb3IgYSBjbGljayBldmVudCBiZWNhdXNlIGJyb3dzZXJzIGltcGxlbWVudFxuICAgICAgICAgKiBhIH4zNTBtcyBkZWxheSBiZXR3ZWVuIHRoZSB0aW1lIHRoZSB1c2VyIHN0b3BzIHRvdWNoaW5nIHRoZSBkaXNwbGF5IGFuZCB3aGVuIHRoZVxuICAgICAgICAgKiBicm93c2VyIGV4ZWN1dHJlcyBldmVudHMuIFdlIG5lZWQgdG8gZW5zdXJlIHdlIGRvbid0IHJlYWN0aXZhdGUgcG9pbnRlci1ldmVudHMgd2l0aGluXG4gICAgICAgICAqIHRoaXMgdGltZWZyYW1lIG90aGVyd2lzZSB0aGUgYnJvd3NlciBtYXkgZXhlY3V0ZSBldmVudHMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHByZXZlbnRlZC5cbiAgICAgICAgICpcbiAgICAgICAgICogQWRkaXRpb25hbGx5LCB0aGlzIGFsc28gbGV0cyB1cyBkZWFsIGF1dG9tYXRpY2FsbHkgd2l0aCBjYW5jZWxsYXRpb25zIHdoZW4gYSBjbGljayBldmVudFxuICAgICAgICAgKiBpc24ndCByYWlzZWQgYmVjYXVzZSB0aGUgcGFnZSB3YXMgY29uc2lkZXJlZCBzY3JvbGxlZC9kcmFnLXNjcm9sbGVkLCBsb25nLXByZXNzZWQsIGV0Yy5cbiAgICAgICAgICpcbiAgICAgICAgICogVGhpcyBpcyB3aHkgd2UgYWxzbyBjb250aW51b3VzbHkgcmVtb3ZlIHRoZSBwcmV2aW91cyBsaXN0ZW5lciwgYmVjYXVzZSB3ZSBjYW5ub3QgYmVcbiAgICAgICAgICogY2VydGFpbiB0aGF0IGl0IHdhcyByYWlzZWQsIGFuZCB0aGVyZWZvcmUgY2xlYW5lZC11cC5cbiAgICAgICAgICovIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykge1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgICAgIGhhbmRsZUNsaWNrUmVmLmN1cnJlbnQgPSBoYW5kbGVBbmREaXNwYXRjaFBvaW50ZXJEb3duT3V0c2lkZUV2ZW50O1xuICAgICAgICAgICAgICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9IGVsc2UgaGFuZGxlQW5kRGlzcGF0Y2hQb2ludGVyRG93bk91dHNpZGVFdmVudCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNQb2ludGVySW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfTtcbiAgICAgICAgLyoqXG4gICAgICogaWYgdGhpcyBob29rIGV4ZWN1dGVzIGluIGEgY29tcG9uZW50IHRoYXQgbW91bnRzIHZpYSBhIGBwb2ludGVyZG93bmAgZXZlbnQsIHRoZSBldmVudFxuICAgICAqIHdvdWxkIGJ1YmJsZSB1cCB0byB0aGUgZG9jdW1lbnQgYW5kIHRyaWdnZXIgYSBgcG9pbnRlckRvd25PdXRzaWRlYCBldmVudC4gV2UgYXZvaWRcbiAgICAgKiB0aGlzIGJ5IGRlbGF5aW5nIHRoZSBldmVudCBsaXN0ZW5lciByZWdpc3RyYXRpb24gb24gdGhlIGRvY3VtZW50LlxuICAgICAqIFRoaXMgaXMgbm90IFJlYWN0IHNwZWNpZmljLCBidXQgcmF0aGVyIGhvdyB0aGUgRE9NIHdvcmtzLCBpZTpcbiAgICAgKiBgYGBcbiAgICAgKiBidXR0b24uYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICBjb25zb2xlLmxvZygnSSB3aWxsIGxvZycpO1xuICAgICAqICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCAoKSA9PiB7XG4gICAgICogICAgIGNvbnNvbGUubG9nKCdJIHdpbGwgYWxzbyBsb2cnKTtcbiAgICAgKiAgIH0pXG4gICAgICogfSk7XG4gICAgICovIGNvbnN0IHRpbWVySWQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+e1xuICAgICAgICAgICAgb3duZXJEb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVyZG93bicsIGhhbmRsZVBvaW50ZXJEb3duKTtcbiAgICAgICAgfSwgMCk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dCh0aW1lcklkKTtcbiAgICAgICAgICAgIG93bmVyRG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcmRvd24nLCBoYW5kbGVQb2ludGVyRG93bik7XG4gICAgICAgICAgICBvd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgaGFuZGxlQ2xpY2tSZWYuY3VycmVudCk7XG4gICAgICAgIH07XG4gICAgfSwgW1xuICAgICAgICBvd25lckRvY3VtZW50LFxuICAgICAgICBoYW5kbGVQb2ludGVyRG93bk91dHNpZGVcbiAgICBdKTtcbiAgICByZXR1cm4ge1xuICAgICAgICAvLyBlbnN1cmVzIHdlIGNoZWNrIFJlYWN0IGNvbXBvbmVudCB0cmVlIChub3QganVzdCBET00gdHJlZSlcbiAgICAgICAgb25Qb2ludGVyRG93bkNhcHR1cmU6ICgpPT5pc1BvaW50ZXJJbnNpZGVSZWFjdFRyZWVSZWYuY3VycmVudCA9IHRydWVcbiAgICB9O1xufVxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIGZvY3VzIGhhcHBlbnMgb3V0c2lkZSBhIHJlYWN0IHN1YnRyZWUuXG4gKiBSZXR1cm5zIHByb3BzIHRvIHBhc3MgdG8gdGhlIHJvb3QgKG5vZGUpIG9mIHRoZSBzdWJ0cmVlIHdlIHdhbnQgdG8gY2hlY2suXG4gKi8gZnVuY3Rpb24gJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZUZvY3VzT3V0c2lkZShvbkZvY3VzT3V0c2lkZSwgb3duZXJEb2N1bWVudCA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogZ2xvYmFsVGhpcy5kb2N1bWVudCkge1xuICAgIGNvbnN0IGhhbmRsZUZvY3VzT3V0c2lkZSA9ICRrcXdwSCR1c2VDYWxsYmFja1JlZihvbkZvY3VzT3V0c2lkZSk7XG4gICAgY29uc3QgaXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZiA9ICRrcXdwSCR1c2VSZWYoZmFsc2UpO1xuICAgICRrcXdwSCR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlRm9jdXMgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQudGFyZ2V0ICYmICFpc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBldmVudERldGFpbCA9IHtcbiAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxFdmVudDogZXZlbnRcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KCQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRGT0NVU19PVVRTSURFLCBoYW5kbGVGb2N1c091dHNpZGUsIGV2ZW50RGV0YWlsLCB7XG4gICAgICAgICAgICAgICAgICAgIGRpc2NyZXRlOiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2ZvY3VzaW4nLCBoYW5kbGVGb2N1cyk7XG4gICAgICAgIHJldHVybiAoKT0+b3duZXJEb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXMpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG93bmVyRG9jdW1lbnQsXG4gICAgICAgIGhhbmRsZUZvY3VzT3V0c2lkZVxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIG9uRm9jdXNDYXB0dXJlOiAoKT0+aXNGb2N1c0luc2lkZVJlYWN0VHJlZVJlZi5jdXJyZW50ID0gdHJ1ZVxuICAgICAgICAsXG4gICAgICAgIG9uQmx1ckNhcHR1cmU6ICgpPT5pc0ZvY3VzSW5zaWRlUmVhY3RUcmVlUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgIH07XG59XG5mdW5jdGlvbiAkNWNiOTJiZWY3NTc3OTYwZSR2YXIkZGlzcGF0Y2hVcGRhdGUoKSB7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJENPTlRFWFRfVVBEQVRFKTtcbiAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbn1cbmZ1bmN0aW9uICQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRoYW5kbGVBbmREaXNwYXRjaEN1c3RvbUV2ZW50KG5hbWUsIGhhbmRsZXIsIGRldGFpbCwgeyBkaXNjcmV0ZTogZGlzY3JldGUgIH0pIHtcbiAgICBjb25zdCB0YXJnZXQgPSBkZXRhaWwub3JpZ2luYWxFdmVudC50YXJnZXQ7XG4gICAgY29uc3QgZXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQobmFtZSwge1xuICAgICAgICBidWJibGVzOiBmYWxzZSxcbiAgICAgICAgY2FuY2VsYWJsZTogdHJ1ZSxcbiAgICAgICAgZGV0YWlsOiBkZXRhaWxcbiAgICB9KTtcbiAgICBpZiAoaGFuZGxlcikgdGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIobmFtZSwgaGFuZGxlciwge1xuICAgICAgICBvbmNlOiB0cnVlXG4gICAgfSk7XG4gICAgaWYgKGRpc2NyZXRlKSAka3F3cEgkZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50KHRhcmdldCwgZXZlbnQpO1xuICAgIGVsc2UgdGFyZ2V0LmRpc3BhdGNoRXZlbnQoZXZlbnQpO1xufVxuY29uc3QgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNWNiOTJiZWY3NTc3OTYwZSRleHBvcnQkMTc3ZmI2MmZmM2VjMWYyMjtcbmNvbnN0ICQ1Y2I5MmJlZjc1Nzc5NjBlJGV4cG9ydCRhZWNiMmRkY2I1NWM5NWJlID0gJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjg7XG5cblxuXG5cbmV4cG9ydCB7JDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIgYXMgRGlzbWlzc2FibGVMYXllciwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDRkNWViMjEwOWRiMTQyMjggYXMgRGlzbWlzc2FibGVMYXllckJyYW5jaCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JGFlY2IyZGRjYjU1Yzk1YmUgYXMgQnJhbmNofTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7dXNlRWZmZWN0IGFzICRoUFNRNSR1c2VFZmZlY3R9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAkaFBTUTUkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuXG5cblxuLyoqXG4gKiBMaXN0ZW5zIGZvciB3aGVuIHRoZSBlc2NhcGUga2V5IGlzIGRvd25cbiAqLyBmdW5jdGlvbiAkYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NShvbkVzY2FwZUtleURvd25Qcm9wLCBvd25lckRvY3VtZW50ID0gZ2xvYmFsVGhpcyA9PT0gbnVsbCB8fCBnbG9iYWxUaGlzID09PSB2b2lkIDAgPyB2b2lkIDAgOiBnbG9iYWxUaGlzLmRvY3VtZW50KSB7XG4gICAgY29uc3Qgb25Fc2NhcGVLZXlEb3duID0gJGhQU1E1JHVzZUNhbGxiYWNrUmVmKG9uRXNjYXBlS2V5RG93blByb3ApO1xuICAgICRoUFNRNSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgaGFuZGxlS2V5RG93biA9IChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5rZXkgPT09ICdFc2NhcGUnKSBvbkVzY2FwZUtleURvd24oZXZlbnQpO1xuICAgICAgICB9O1xuICAgICAgICBvd25lckRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKTtcbiAgICAgICAgcmV0dXJuICgpPT5vd25lckRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBoYW5kbGVLZXlEb3duKVxuICAgICAgICA7XG4gICAgfSwgW1xuICAgICAgICBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG93bmVyRG9jdW1lbnRcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWRkYzE2ZTFiYmU1OGZkMCRleHBvcnQkM2E3MmE1NzI0NGQ2ZTc2NSBhcyB1c2VFc2NhcGVLZXlkb3dufTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkNDVRSHYkZm9yd2FyZFJlZiwgdXNlU3RhdGUgYXMgJDQ1UUh2JHVzZVN0YXRlLCB1c2VSZWYgYXMgJDQ1UUh2JHVzZVJlZiwgdXNlRWZmZWN0IGFzICQ0NVFIdiR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ0NVFIdiR1c2VDYWxsYmFjaywgY3JlYXRlRWxlbWVudCBhcyAkNDVRSHYkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkNDVRSHYkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDQ1UUh2JFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDQ1UUh2JHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcblxuXG5cblxuXG5cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQgPSAnZm9jdXNTY29wZS5hdXRvRm9jdXNPbk1vdW50JztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCA9ICdmb2N1c1Njb3BlLmF1dG9Gb2N1c09uVW5tb3VudCc7XG5jb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyA9IHtcbiAgICBidWJibGVzOiBmYWxzZSxcbiAgICBjYW5jZWxhYmxlOiB0cnVlXG59O1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRm9jdXNTY29wZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRSA9ICdGb2N1c1Njb3BlJztcbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2ID0gLyojX19QVVJFX18qLyAkNDVRSHYkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IGxvb3A6IGxvb3AgPSBmYWxzZSAsIHRyYXBwZWQ6IHRyYXBwZWQgPSBmYWxzZSAsIG9uTW91bnRBdXRvRm9jdXM6IG9uTW91bnRBdXRvRm9jdXNQcm9wICwgb25Vbm1vdW50QXV0b0ZvY3VzOiBvblVubW91bnRBdXRvRm9jdXNQcm9wICwgLi4uc2NvcGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgW2NvbnRhaW5lcjEsIHNldENvbnRhaW5lcl0gPSAkNDVRSHYkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3Qgb25Nb3VudEF1dG9Gb2N1cyA9ICQ0NVFIdiR1c2VDYWxsYmFja1JlZihvbk1vdW50QXV0b0ZvY3VzUHJvcCk7XG4gICAgY29uc3Qgb25Vbm1vdW50QXV0b0ZvY3VzID0gJDQ1UUh2JHVzZUNhbGxiYWNrUmVmKG9uVW5tb3VudEF1dG9Gb2N1c1Byb3ApO1xuICAgIGNvbnN0IGxhc3RGb2N1c2VkRWxlbWVudFJlZiA9ICQ0NVFIdiR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDQ1UUh2JHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGFpbmVyKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBmb2N1c1Njb3BlID0gJDQ1UUh2JHVzZVJlZih7XG4gICAgICAgIHBhdXNlZDogZmFsc2UsXG4gICAgICAgIHBhdXNlICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gdHJ1ZTtcbiAgICAgICAgfSxcbiAgICAgICAgcmVzdW1lICgpIHtcbiAgICAgICAgICAgIHRoaXMucGF1c2VkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICB9KS5jdXJyZW50OyAvLyBUYWtlcyBjYXJlIG9mIHRyYXBwaW5nIGZvY3VzIGlmIGZvY3VzIGlzIG1vdmVkIG91dHNpZGUgcHJvZ3JhbW1hdGljYWxseSBmb3IgZXhhbXBsZVxuICAgICQ0NVFIdiR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRyYXBwZWQpIHtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZUZvY3VzSW4oZXZlbnQpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQgfHwgIWNvbnRhaW5lcjEpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEuY29udGFpbnModGFyZ2V0KSkgbGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQgPSB0YXJnZXQ7XG4gICAgICAgICAgICAgICAgZWxzZSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMobGFzdEZvY3VzZWRFbGVtZW50UmVmLmN1cnJlbnQsIHtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0OiB0cnVlXG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBmdW5jdGlvbiBoYW5kbGVGb2N1c091dChldmVudCkge1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c1Njb3BlLnBhdXNlZCB8fCAhY29udGFpbmVyMSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlbGF0ZWRUYXJnZXQgPSBldmVudC5yZWxhdGVkVGFyZ2V0OyAvLyBBIGBmb2N1c291dGAgZXZlbnQgd2l0aCBhIGBudWxsYCBgcmVsYXRlZFRhcmdldGAgd2lsbCBoYXBwZW4gaW4gYXQgbGVhc3QgdHdvIGNhc2VzOlxuICAgICAgICAgICAgICAgIC8vXG4gICAgICAgICAgICAgICAgLy8gMS4gV2hlbiB0aGUgdXNlciBzd2l0Y2hlcyBhcHAvdGFicy93aW5kb3dzL3RoZSBicm93c2VyIGl0c2VsZiBsb3NlcyBmb2N1cy5cbiAgICAgICAgICAgICAgICAvLyAyLiBJbiBHb29nbGUgQ2hyb21lLCB3aGVuIHRoZSBmb2N1c2VkIGVsZW1lbnQgaXMgcmVtb3ZlZCBmcm9tIHRoZSBET00uXG4gICAgICAgICAgICAgICAgLy9cbiAgICAgICAgICAgICAgICAvLyBXZSBsZXQgdGhlIGJyb3dzZXIgZG8gaXRzIHRoaW5nIGhlcmUgYmVjYXVzZTpcbiAgICAgICAgICAgICAgICAvL1xuICAgICAgICAgICAgICAgIC8vIDEuIFRoZSBicm93c2VyIGFscmVhZHkga2VlcHMgYSBtZW1vcnkgb2Ygd2hhdCdzIGZvY3VzZWQgZm9yIHdoZW4gdGhlIHBhZ2UgZ2V0cyByZWZvY3VzZWQuXG4gICAgICAgICAgICAgICAgLy8gMi4gSW4gR29vZ2xlIENocm9tZSwgaWYgd2UgdHJ5IHRvIGZvY3VzIHRoZSBkZWxldGVkIGZvY3VzZWQgZWxlbWVudCAoYXMgcGVyIGJlbG93KSwgaXRcbiAgICAgICAgICAgICAgICAvLyAgICB0aHJvd3MgdGhlIENQVSB0byAxMDAlLCBzbyB3ZSBhdm9pZCBkb2luZyBhbnl0aGluZyBmb3IgdGhpcyByZWFzb24gaGVyZSB0b28uXG4gICAgICAgICAgICAgICAgaWYgKHJlbGF0ZWRUYXJnZXQgPT09IG51bGwpIHJldHVybjsgLy8gSWYgdGhlIGZvY3VzIGhhcyBtb3ZlZCB0byBhbiBhY3R1YWwgbGVnaXRpbWF0ZSBlbGVtZW50IChgcmVsYXRlZFRhcmdldCAhPT0gbnVsbGApXG4gICAgICAgICAgICAgICAgLy8gdGhhdCBpcyBvdXRzaWRlIHRoZSBjb250YWluZXIsIHdlIG1vdmUgZm9jdXMgdG8gdGhlIGxhc3QgdmFsaWQgZm9jdXNlZCBlbGVtZW50IGluc2lkZS5cbiAgICAgICAgICAgICAgICBpZiAoIWNvbnRhaW5lcjEuY29udGFpbnMocmVsYXRlZFRhcmdldCkpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0Rm9jdXNlZEVsZW1lbnRSZWYuY3VycmVudCwge1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0gLy8gV2hlbiB0aGUgZm9jdXNlZCBlbGVtZW50IGdldHMgcmVtb3ZlZCBmcm9tIHRoZSBET00sIGJyb3dzZXJzIG1vdmUgZm9jdXNcbiAgICAgICAgICAgIC8vIGJhY2sgdG8gdGhlIGRvY3VtZW50LmJvZHkuIEluIHRoaXMgY2FzZSwgd2UgbW92ZSBmb2N1cyB0byB0aGUgY29udGFpbmVyXG4gICAgICAgICAgICAvLyB0byBrZWVwIGZvY3VzIHRyYXBwZWQgY29ycmVjdGx5LlxuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlTXV0YXRpb25zKG11dGF0aW9ucykge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG11dGF0aW9uIG9mIG11dGF0aW9ucyl7XG4gICAgICAgICAgICAgICAgICAgIGlmIChtdXRhdGlvbi5yZW1vdmVkTm9kZXMubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY29udGFpbmVyMSAhPT0gbnVsbCAmJiBjb250YWluZXIxICE9PSB2b2lkIDAgJiYgY29udGFpbmVyMS5jb250YWlucyhmb2N1c2VkRWxlbWVudCkpKSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY29udGFpbmVyMSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c2luJywgaGFuZGxlRm9jdXNJbik7XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdmb2N1c291dCcsIGhhbmRsZUZvY3VzT3V0KTtcbiAgICAgICAgICAgIGNvbnN0IG11dGF0aW9uT2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihoYW5kbGVNdXRhdGlvbnMpO1xuICAgICAgICAgICAgaWYgKGNvbnRhaW5lcjEpIG11dGF0aW9uT2JzZXJ2ZXIub2JzZXJ2ZShjb250YWluZXIxLCB7XG4gICAgICAgICAgICAgICAgY2hpbGRMaXN0OiB0cnVlLFxuICAgICAgICAgICAgICAgIHN1YnRyZWU6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignZm9jdXNpbicsIGhhbmRsZUZvY3VzSW4pO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2ZvY3Vzb3V0JywgaGFuZGxlRm9jdXNPdXQpO1xuICAgICAgICAgICAgICAgIG11dGF0aW9uT2JzZXJ2ZXIuZGlzY29ubmVjdCgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJhcHBlZCxcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgZm9jdXNTY29wZS5wYXVzZWRcbiAgICBdKTtcbiAgICAkNDVRSHYkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250YWluZXIxKSB7XG4gICAgICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXNTY29wZXNTdGFjay5hZGQoZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgICAgICAgICAgY29uc3QgaGFzRm9jdXNlZENhbmRpZGF0ZSA9IGNvbnRhaW5lcjEuY29udGFpbnMocHJldmlvdXNseUZvY3VzZWRFbGVtZW50KTtcbiAgICAgICAgICAgIGlmICghaGFzRm9jdXNlZENhbmRpZGF0ZSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1vdW50RXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgIGNvbnRhaW5lcjEuYWRkRXZlbnRMaXN0ZW5lcigkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX01PVU5ULCBvbk1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQobW91bnRFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFtb3VudEV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKCRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUNhbmRpZGF0ZXMoY29udGFpbmVyMSkpLCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudC5hY3RpdmVFbGVtZW50ID09PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQpICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhjb250YWluZXIxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBjb250YWluZXIxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9NT1VOVCwgb25Nb3VudEF1dG9Gb2N1cyk7IC8vIFdlIGhpdCBhIHJlYWN0IGJ1ZyAoZml4ZWQgaW4gdjE3KSB3aXRoIGZvY3VzaW5nIGluIHVubW91bnQuXG4gICAgICAgICAgICAgICAgLy8gV2UgbmVlZCB0byBkZWxheSB0aGUgZm9jdXMgYSBsaXR0bGUgdG8gZ2V0IGFyb3VuZCBpdCBmb3Igbm93LlxuICAgICAgICAgICAgICAgIC8vIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8xNzg5NFxuICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdW5tb3VudEV2ZW50ID0gbmV3IEN1c3RvbUV2ZW50KCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEVWRU5UX09QVElPTlMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmFkZEV2ZW50TGlzdGVuZXIoJGQzODYzYzQ2YTE3ZThhMjgkdmFyJEFVVE9GT0NVU19PTl9VTk1PVU5ULCBvblVubW91bnRBdXRvRm9jdXMpO1xuICAgICAgICAgICAgICAgICAgICBjb250YWluZXIxLmRpc3BhdGNoRXZlbnQodW5tb3VudEV2ZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCF1bm1vdW50RXZlbnQuZGVmYXVsdFByZXZlbnRlZCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCAhPT0gbnVsbCAmJiBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgIT09IHZvaWQgMCA/IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCA6IGRvY3VtZW50LmJvZHksIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdDogdHJ1ZVxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSBsaXN0ZW5lciBhZnRlciB3ZSBgZGlzcGF0Y2hFdmVudGBcbiAgICAgICAgICAgICAgICAgICAgY29udGFpbmVyMS5yZW1vdmVFdmVudExpc3RlbmVyKCRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fVU5NT1VOVCwgb25Vbm1vdW50QXV0b0ZvY3VzKTtcbiAgICAgICAgICAgICAgICAgICAgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2sucmVtb3ZlKGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgICAgIH0sIDApO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGFpbmVyMSxcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzLFxuICAgICAgICBmb2N1c1Njb3BlXG4gICAgXSk7IC8vIFRha2VzIGNhcmUgb2YgbG9vcGluZyBmb2N1cyAod2hlbiB0YWJiaW5nIHdoaWxzdCBhdCB0aGUgZWRnZXMpXG4gICAgY29uc3QgaGFuZGxlS2V5RG93biA9ICQ0NVFIdiR1c2VDYWxsYmFjaygoZXZlbnQpPT57XG4gICAgICAgIGlmICghbG9vcCAmJiAhdHJhcHBlZCkgcmV0dXJuO1xuICAgICAgICBpZiAoZm9jdXNTY29wZS5wYXVzZWQpIHJldHVybjtcbiAgICAgICAgY29uc3QgaXNUYWJLZXkgPSBldmVudC5rZXkgPT09ICdUYWInICYmICFldmVudC5hbHRLZXkgJiYgIWV2ZW50LmN0cmxLZXkgJiYgIWV2ZW50Lm1ldGFLZXk7XG4gICAgICAgIGNvbnN0IGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDtcbiAgICAgICAgaWYgKGlzVGFiS2V5ICYmIGZvY3VzZWRFbGVtZW50KSB7XG4gICAgICAgICAgICBjb25zdCBjb250YWluZXIgPSBldmVudC5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgW2ZpcnN0LCBsYXN0XSA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcik7XG4gICAgICAgICAgICBjb25zdCBoYXNUYWJiYWJsZUVsZW1lbnRzSW5zaWRlID0gZmlyc3QgJiYgbGFzdDsgLy8gd2UgY2FuIG9ubHkgd3JhcCBmb2N1cyBpZiB3ZSBoYXZlIHRhYmJhYmxlIGVkZ2VzXG4gICAgICAgICAgICBpZiAoIWhhc1RhYmJhYmxlRWxlbWVudHNJbnNpZGUpIHtcbiAgICAgICAgICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgPT09IGNvbnRhaW5lcikgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKCFldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gbGFzdCkge1xuICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobG9vcCkgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzKGZpcnN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudC5zaGlmdEtleSAmJiBmb2N1c2VkRWxlbWVudCA9PT0gZmlyc3QpIHtcbiAgICAgICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvb3ApICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhsYXN0LCB7XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3Q6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBsb29wLFxuICAgICAgICB0cmFwcGVkLFxuICAgICAgICBmb2N1c1Njb3BlLnBhdXNlZFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0NVFIdiRjcmVhdGVFbGVtZW50KCQ0NVFIdiRQcmltaXRpdmUuZGl2LCAkNDVRSHYkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0YWJJbmRleDogLTFcbiAgICB9LCBzY29wZVByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbktleURvd246IGhhbmRsZUtleURvd25cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDM4NjNjNDZhMTdlOGEyOCRleHBvcnQkMjBlNDAyODk2NDFmYmJiNiwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRk9DVVNfU0NPUEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBVdGlsc1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyAvKipcbiAqIEF0dGVtcHRzIGZvY3VzaW5nIHRoZSBmaXJzdCBlbGVtZW50IGluIGEgbGlzdCBvZiBjYW5kaWRhdGVzLlxuICogU3RvcHMgd2hlbiBmb2N1cyBoYXMgYWN0dWFsbHkgbW92ZWQuXG4gKi8gZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlcywgeyBzZWxlY3Q6IHNlbGVjdCA9IGZhbHNlICB9ID0ge30pIHtcbiAgICBjb25zdCBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMoY2FuZGlkYXRlLCB7XG4gICAgICAgICAgICBzZWxlY3Q6IHNlbGVjdFxuICAgICAgICB9KTtcbiAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHByZXZpb3VzbHlGb2N1c2VkRWxlbWVudCkgcmV0dXJuO1xuICAgIH1cbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgYW5kIGxhc3QgdGFiYmFibGUgZWxlbWVudHMgaW5zaWRlIGEgY29udGFpbmVyLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRnZXRUYWJiYWJsZUVkZ2VzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IGNhbmRpZGF0ZXMgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcik7XG4gICAgY29uc3QgZmlyc3QgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZmluZFZpc2libGUoY2FuZGlkYXRlcywgY29udGFpbmVyKTtcbiAgICBjb25zdCBsYXN0ID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZpbmRWaXNpYmxlKGNhbmRpZGF0ZXMucmV2ZXJzZSgpLCBjb250YWluZXIpO1xuICAgIHJldHVybiBbXG4gICAgICAgIGZpcnN0LFxuICAgICAgICBsYXN0XG4gICAgXTtcbn1cbi8qKlxuICogUmV0dXJucyBhIGxpc3Qgb2YgcG90ZW50aWFsIHRhYmJhYmxlIGNhbmRpZGF0ZXMuXG4gKlxuICogTk9URTogVGhpcyBpcyBvbmx5IGEgY2xvc2UgYXBwcm94aW1hdGlvbi4gRm9yIGV4YW1wbGUgaXQgZG9lc24ndCB0YWtlIGludG8gYWNjb3VudCBjYXNlcyBsaWtlIHdoZW5cbiAqIGVsZW1lbnRzIGFyZSBub3QgdmlzaWJsZS4gVGhpcyBjYW5ub3QgYmUgd29ya2VkIG91dCBlYXNpbHkgYnkganVzdCByZWFkaW5nIGEgcHJvcGVydHksIGJ1dCByYXRoZXJcbiAqIG5lY2Vzc2l0YXRlIHJ1bnRpbWUga25vd2xlZGdlIChjb21wdXRlZCBzdHlsZXMsIGV0YykuIFdlIGRlYWwgd2l0aCB0aGVzZSBjYXNlcyBzZXBhcmF0ZWx5LlxuICpcbiAqIFNlZTogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RyZWVXYWxrZXJcbiAqIENyZWRpdDogaHR0cHM6Ly9naXRodWIuY29tL2Rpc2NvcmQvZm9jdXMtbGF5ZXJzL2Jsb2IvbWFzdGVyL3NyYy91dGlsL3dyYXBGb2N1cy50c3gjTDFcbiAqLyBmdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzKGNvbnRhaW5lcikge1xuICAgIGNvbnN0IG5vZGVzID0gW107XG4gICAgY29uc3Qgd2Fsa2VyID0gZG9jdW1lbnQuY3JlYXRlVHJlZVdhbGtlcihjb250YWluZXIsIE5vZGVGaWx0ZXIuU0hPV19FTEVNRU5ULCB7XG4gICAgICAgIGFjY2VwdE5vZGU6IChub2RlKT0+e1xuICAgICAgICAgICAgY29uc3QgaXNIaWRkZW5JbnB1dCA9IG5vZGUudGFnTmFtZSA9PT0gJ0lOUFVUJyAmJiBub2RlLnR5cGUgPT09ICdoaWRkZW4nO1xuICAgICAgICAgICAgaWYgKG5vZGUuZGlzYWJsZWQgfHwgbm9kZS5oaWRkZW4gfHwgaXNIaWRkZW5JbnB1dCkgcmV0dXJuIE5vZGVGaWx0ZXIuRklMVEVSX1NLSVA7IC8vIGAudGFiSW5kZXhgIGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgYHRhYmluZGV4YCBhdHRyaWJ1dGUuIEl0IHdvcmtzIG9uIHRoZVxuICAgICAgICAgICAgLy8gcnVudGltZSdzIHVuZGVyc3RhbmRpbmcgb2YgdGFiYmFiaWxpdHksIHNvIHRoaXMgYXV0b21hdGljYWxseSBhY2NvdW50c1xuICAgICAgICAgICAgLy8gZm9yIGFueSBraW5kIG9mIGVsZW1lbnQgdGhhdCBjb3VsZCBiZSB0YWJiZWQgdG8uXG4gICAgICAgICAgICByZXR1cm4gbm9kZS50YWJJbmRleCA+PSAwID8gTm9kZUZpbHRlci5GSUxURVJfQUNDRVBUIDogTm9kZUZpbHRlci5GSUxURVJfU0tJUDtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHdoaWxlKHdhbGtlci5uZXh0Tm9kZSgpKW5vZGVzLnB1c2god2Fsa2VyLmN1cnJlbnROb2RlKTsgLy8gd2UgZG8gbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBvcmRlciBvZiBub2RlcyB3aXRoIHBvc2l0aXZlIGB0YWJJbmRleGAgYXMgaXRcbiAgICAvLyBoaW5kZXJzIGFjY2Vzc2liaWxpdHkgdG8gaGF2ZSB0YWIgb3JkZXIgZGlmZmVyZW50IGZyb20gdmlzdWFsIG9yZGVyLlxuICAgIHJldHVybiBub2Rlcztcbn1cbi8qKlxuICogUmV0dXJucyB0aGUgZmlyc3QgdmlzaWJsZSBlbGVtZW50IGluIGEgbGlzdC5cbiAqIE5PVEU6IE9ubHkgY2hlY2tzIHZpc2liaWxpdHkgdXAgdG8gdGhlIGBjb250YWluZXJgLlxuICovIGZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZShlbGVtZW50cywgY29udGFpbmVyKSB7XG4gICAgZm9yIChjb25zdCBlbGVtZW50IG9mIGVsZW1lbnRzKXtcbiAgICAgICAgLy8gd2Ugc3RvcCBjaGVja2luZyBpZiBpdCdzIGhpZGRlbiBhdCB0aGUgYGNvbnRhaW5lcmAgbGV2ZWwgKGV4Y2x1ZGluZylcbiAgICAgICAgaWYgKCEkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4oZWxlbWVudCwge1xuICAgICAgICAgICAgdXBUbzogY29udGFpbmVyXG4gICAgICAgIH0pKSByZXR1cm4gZWxlbWVudDtcbiAgICB9XG59XG5mdW5jdGlvbiAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkaXNIaWRkZW4obm9kZSwgeyB1cFRvOiB1cFRvICB9KSB7XG4gICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkudmlzaWJpbGl0eSA9PT0gJ2hpZGRlbicpIHJldHVybiB0cnVlO1xuICAgIHdoaWxlKG5vZGUpe1xuICAgICAgICAvLyB3ZSBzdG9wIGF0IGB1cFRvYCAoZXhjbHVkaW5nIGl0KVxuICAgICAgICBpZiAodXBUbyAhPT0gdW5kZWZpbmVkICYmIG5vZGUgPT09IHVwVG8pIHJldHVybiBmYWxzZTtcbiAgICAgICAgaWYgKGdldENvbXB1dGVkU3R5bGUobm9kZSkuZGlzcGxheSA9PT0gJ25vbmUnKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgbm9kZSA9IG5vZGUucGFyZW50RWxlbWVudDtcbiAgICB9XG4gICAgcmV0dXJuIGZhbHNlO1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpIHtcbiAgICByZXR1cm4gZWxlbWVudCBpbnN0YW5jZW9mIEhUTUxJbnB1dEVsZW1lbnQgJiYgJ3NlbGVjdCcgaW4gZWxlbWVudDtcbn1cbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1cyhlbGVtZW50LCB7IHNlbGVjdDogc2VsZWN0ID0gZmFsc2UgIH0gPSB7fSkge1xuICAgIC8vIG9ubHkgZm9jdXMgaWYgdGhhdCBlbGVtZW50IGlzIGZvY3VzYWJsZVxuICAgIGlmIChlbGVtZW50ICYmIGVsZW1lbnQuZm9jdXMpIHtcbiAgICAgICAgY29uc3QgcHJldmlvdXNseUZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudDsgLy8gTk9URTogd2UgcHJldmVudCBzY3JvbGxpbmcgb24gZm9jdXMsIHRvIG1pbmltaXplIGphcnJpbmcgdHJhbnNpdGlvbnMgZm9yIHVzZXJzXG4gICAgICAgIGVsZW1lbnQuZm9jdXMoe1xuICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICB9KTsgLy8gb25seSBzZWxlY3QgaWYgaXRzIG5vdCB0aGUgc2FtZSBlbGVtZW50LCBpdCBzdXBwb3J0cyBzZWxlY3Rpb24gYW5kIHdlIG5lZWQgdG8gc2VsZWN0XG4gICAgICAgIGlmIChlbGVtZW50ICE9PSBwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQgJiYgJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0KGVsZW1lbnQpICYmIHNlbGVjdCkgZWxlbWVudC5zZWxlY3QoKTtcbiAgICB9XG59XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBGb2N1c1Njb3BlIHN0YWNrXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c1Njb3Blc1N0YWNrID0gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGNyZWF0ZUZvY3VzU2NvcGVzU3RhY2soKTtcbmZ1bmN0aW9uICRkMzg2M2M0NmExN2U4YTI4JHZhciRjcmVhdGVGb2N1c1Njb3Blc1N0YWNrKCkge1xuICAgIC8qKiBBIHN0YWNrIG9mIGZvY3VzIHNjb3Blcywgd2l0aCB0aGUgYWN0aXZlIG9uZSBhdCB0aGUgdG9wICovIGxldCBzdGFjayA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICAgIGFkZCAoZm9jdXNTY29wZSkge1xuICAgICAgICAgICAgLy8gcGF1c2UgdGhlIGN1cnJlbnRseSBhY3RpdmUgZm9jdXMgc2NvcGUgKGF0IHRoZSB0b3Agb2YgdGhlIHN0YWNrKVxuICAgICAgICAgICAgY29uc3QgYWN0aXZlRm9jdXNTY29wZSA9IHN0YWNrWzBdO1xuICAgICAgICAgICAgaWYgKGZvY3VzU2NvcGUgIT09IGFjdGl2ZUZvY3VzU2NvcGUpIGFjdGl2ZUZvY3VzU2NvcGUgPT09IG51bGwgfHwgYWN0aXZlRm9jdXNTY29wZSA9PT0gdm9pZCAwIHx8IGFjdGl2ZUZvY3VzU2NvcGUucGF1c2UoKTtcbiAgICAgICAgICAgICAvLyByZW1vdmUgaW4gY2FzZSBpdCBhbHJlYWR5IGV4aXN0cyAoYmVjYXVzZSB3ZSdsbCByZS1hZGQgaXQgYXQgdGhlIHRvcCBvZiB0aGUgc3RhY2spXG4gICAgICAgICAgICBzdGFjayA9ICRkMzg2M2M0NmExN2U4YTI4JHZhciRhcnJheVJlbW92ZShzdGFjaywgZm9jdXNTY29wZSk7XG4gICAgICAgICAgICBzdGFjay51bnNoaWZ0KGZvY3VzU2NvcGUpO1xuICAgICAgICB9LFxuICAgICAgICByZW1vdmUgKGZvY3VzU2NvcGUpIHtcbiAgICAgICAgICAgIHZhciBfc3RhY2skO1xuICAgICAgICAgICAgc3RhY2sgPSAkZDM4NjNjNDZhMTdlOGEyOCR2YXIkYXJyYXlSZW1vdmUoc3RhY2ssIGZvY3VzU2NvcGUpO1xuICAgICAgICAgICAgKF9zdGFjayQgPSBzdGFja1swXSkgPT09IG51bGwgfHwgX3N0YWNrJCA9PT0gdm9pZCAwIHx8IF9zdGFjayQucmVzdW1lKCk7XG4gICAgICAgIH1cbiAgICB9O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlKGFycmF5LCBpdGVtKSB7XG4gICAgY29uc3QgdXBkYXRlZEFycmF5ID0gW1xuICAgICAgICAuLi5hcnJheVxuICAgIF07XG4gICAgY29uc3QgaW5kZXggPSB1cGRhdGVkQXJyYXkuaW5kZXhPZihpdGVtKTtcbiAgICBpZiAoaW5kZXggIT09IC0xKSB1cGRhdGVkQXJyYXkuc3BsaWNlKGluZGV4LCAxKTtcbiAgICByZXR1cm4gdXBkYXRlZEFycmF5O1xufVxuZnVuY3Rpb24gJGQzODYzYzQ2YTE3ZThhMjgkdmFyJHJlbW92ZUxpbmtzKGl0ZW1zKSB7XG4gICAgcmV0dXJuIGl0ZW1zLmZpbHRlcigoaXRlbSk9Pml0ZW0udGFnTmFtZSAhPT0gJ0EnXG4gICAgKTtcbn1cbmNvbnN0ICRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjY7XG5cblxuXG5cbmV4cG9ydCB7JGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JDIwZTQwMjg5NjQxZmJiYjYgYXMgRm9jdXNTY29wZSwgJGQzODYzYzQ2YTE3ZThhMjgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDdTWGwyJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJDdTWGwyJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDdTWGwyJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICQ3U1hsMiRyZWFjdGRvbSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1NYbDIkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjE3MDFiZWFlMDgzZGJhZSR2YXIkUE9SVEFMX05BTUUgPSAnUG9ydGFsJztcbmNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gLyojX19QVVJFX18qLyAkN1NYbDIkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICB2YXIgX2dsb2JhbFRoaXMkZG9jdW1lbnQ7XG4gICAgY29uc3QgeyBjb250YWluZXI6IGNvbnRhaW5lciA9IGdsb2JhbFRoaXMgPT09IG51bGwgfHwgZ2xvYmFsVGhpcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogKF9nbG9iYWxUaGlzJGRvY3VtZW50ID0gZ2xvYmFsVGhpcy5kb2N1bWVudCkgPT09IG51bGwgfHwgX2dsb2JhbFRoaXMkZG9jdW1lbnQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9nbG9iYWxUaGlzJGRvY3VtZW50LmJvZHkgLCAuLi5wb3J0YWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIGNvbnRhaW5lciA/IC8qI19fUFVSRV9fKi8gJDdTWGwyJHJlYWN0ZG9tLmNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQ3U1hsMiRjcmVhdGVFbGVtZW50KCQ3U1hsMiRQcmltaXRpdmUuZGl2LCAkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHBvcnRhbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpLCBjb250YWluZXIpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjLCB7XG4gICAgZGlzcGxheU5hbWU6ICRmMTcwMWJlYWUwODNkYmFlJHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRmMTcwMWJlYWUwODNkYmFlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmM7XG5cblxuXG5cbmV4cG9ydCB7JGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkZjE3MDFiZWFlMDgzZGJhZSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCB7Q2hpbGRyZW4gYXMgJGlxcTNyJENoaWxkcmVuLCBjbG9uZUVsZW1lbnQgYXMgJGlxcTNyJGNsb25lRWxlbWVudCwgdXNlU3RhdGUgYXMgJGlxcTNyJHVzZVN0YXRlLCB1c2VSZWYgYXMgJGlxcTNyJHVzZVJlZiwgdXNlRWZmZWN0IGFzICRpcXEzciR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICRpcXEzciR1c2VDYWxsYmFjaywgdXNlUmVkdWNlciBhcyAkaXFxM3IkdXNlUmVkdWNlcn0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2ZsdXNoU3luYyBhcyAkaXFxM3IkZmx1c2hTeW5jfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkaXFxM3IkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGlxcTNyJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuXG5cblxuXG5cblxuZnVuY3Rpb24gJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYoaW5pdGlhbFN0YXRlLCBtYWNoaW5lKSB7XG4gICAgcmV0dXJuICRpcXEzciR1c2VSZWR1Y2VyKChzdGF0ZSwgZXZlbnQpPT57XG4gICAgICAgIGNvbnN0IG5leHRTdGF0ZSA9IG1hY2hpbmVbc3RhdGVdW2V2ZW50XTtcbiAgICAgICAgcmV0dXJuIG5leHRTdGF0ZSAhPT0gbnVsbCAmJiBuZXh0U3RhdGUgIT09IHZvaWQgMCA/IG5leHRTdGF0ZSA6IHN0YXRlO1xuICAgIH0sIGluaXRpYWxTdGF0ZSk7XG59XG5cblxuY29uc3QgJDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBwcmVzZW50OiBwcmVzZW50ICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJlc2VuY2UgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkdXNlUHJlc2VuY2UocHJlc2VudCk7XG4gICAgY29uc3QgY2hpbGQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbicgPyBjaGlsZHJlbih7XG4gICAgICAgIHByZXNlbnQ6IHByZXNlbmNlLmlzUHJlc2VudFxuICAgIH0pIDogJGlxcTNyJENoaWxkcmVuLm9ubHkoY2hpbGRyZW4pO1xuICAgIGNvbnN0IHJlZiA9ICRpcXEzciR1c2VDb21wb3NlZFJlZnMocHJlc2VuY2UucmVmLCBjaGlsZC5yZWYpO1xuICAgIGNvbnN0IGZvcmNlTW91bnQgPSB0eXBlb2YgY2hpbGRyZW4gPT09ICdmdW5jdGlvbic7XG4gICAgcmV0dXJuIGZvcmNlTW91bnQgfHwgcHJlc2VuY2UuaXNQcmVzZW50ID8gLyojX19QVVJFX18qLyAkaXFxM3IkY2xvbmVFbGVtZW50KGNoaWxkLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkgOiBudWxsO1xufTtcbiQ5MjFhODg5Y2VlNmRmN2U4JGV4cG9ydCQ5OWMyYjc3OWFhNGU4YjhiLmRpc3BsYXlOYW1lID0gJ1ByZXNlbmNlJztcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIHVzZVByZXNlbmNlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZShwcmVzZW50KSB7XG4gICAgY29uc3QgW25vZGUxLCBzZXROb2RlXSA9ICRpcXEzciR1c2VTdGF0ZSgpO1xuICAgIGNvbnN0IHN0eWxlc1JlZiA9ICRpcXEzciR1c2VSZWYoe30pO1xuICAgIGNvbnN0IHByZXZQcmVzZW50UmVmID0gJGlxcTNyJHVzZVJlZihwcmVzZW50KTtcbiAgICBjb25zdCBwcmV2QW5pbWF0aW9uTmFtZVJlZiA9ICRpcXEzciR1c2VSZWYoJ25vbmUnKTtcbiAgICBjb25zdCBpbml0aWFsU3RhdGUgPSBwcmVzZW50ID8gJ21vdW50ZWQnIDogJ3VubW91bnRlZCc7XG4gICAgY29uc3QgW3N0YXRlLCBzZW5kXSA9ICRmZTk2M2IzNTUzNDdjYzY4JGV4cG9ydCQzZTY1NDNkZTE0Zjg2MTRmKGluaXRpYWxTdGF0ZSwge1xuICAgICAgICBtb3VudGVkOiB7XG4gICAgICAgICAgICBVTk1PVU5UOiAndW5tb3VudGVkJyxcbiAgICAgICAgICAgIEFOSU1BVElPTl9PVVQ6ICd1bm1vdW50U3VzcGVuZGVkJ1xuICAgICAgICB9LFxuICAgICAgICB1bm1vdW50U3VzcGVuZGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnLFxuICAgICAgICAgICAgQU5JTUFUSU9OX0VORDogJ3VubW91bnRlZCdcbiAgICAgICAgfSxcbiAgICAgICAgdW5tb3VudGVkOiB7XG4gICAgICAgICAgICBNT1VOVDogJ21vdW50ZWQnXG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAkaXFxM3IkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gc3RhdGUgPT09ICdtb3VudGVkJyA/IGN1cnJlbnRBbmltYXRpb25OYW1lIDogJ25vbmUnO1xuICAgIH0sIFtcbiAgICAgICAgc3RhdGVcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IHN0eWxlcyA9IHN0eWxlc1JlZi5jdXJyZW50O1xuICAgICAgICBjb25zdCB3YXNQcmVzZW50ID0gcHJldlByZXNlbnRSZWYuY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzUHJlc2VudENoYW5nZWQgPSB3YXNQcmVzZW50ICE9PSBwcmVzZW50O1xuICAgICAgICBpZiAoaGFzUHJlc2VudENoYW5nZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IHByZXZBbmltYXRpb25OYW1lID0gcHJldkFuaW1hdGlvbk5hbWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRBbmltYXRpb25OYW1lID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzKTtcbiAgICAgICAgICAgIGlmIChwcmVzZW50KSBzZW5kKCdNT1VOVCcpO1xuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEFuaW1hdGlvbk5hbWUgPT09ICdub25lJyB8fCAoc3R5bGVzID09PSBudWxsIHx8IHN0eWxlcyA9PT0gdm9pZCAwID8gdm9pZCAwIDogc3R5bGVzLmRpc3BsYXkpID09PSAnbm9uZScpIC8vIElmIHRoZXJlIGlzIG5vIGV4aXQgYW5pbWF0aW9uIG9yIHRoZSBlbGVtZW50IGlzIGhpZGRlbiwgYW5pbWF0aW9ucyB3b24ndCBydW5cbiAgICAgICAgICAgIC8vIHNvIHdlIHVubW91bnQgaW5zdGFudGx5XG4gICAgICAgICAgICBzZW5kKCdVTk1PVU5UJyk7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAvKipcbiAgICAgICAgICogV2hlbiBgcHJlc2VudGAgY2hhbmdlcyB0byBgZmFsc2VgLCB3ZSBjaGVjayBjaGFuZ2VzIHRvIGFuaW1hdGlvbi1uYW1lIHRvXG4gICAgICAgICAqIGRldGVybWluZSB3aGV0aGVyIGFuIGFuaW1hdGlvbiBoYXMgc3RhcnRlZC4gV2UgY2hvc2UgdGhpcyBhcHByb2FjaCAocmVhZGluZ1xuICAgICAgICAgKiBjb21wdXRlZCBzdHlsZXMpIGJlY2F1c2UgdGhlcmUgaXMgbm8gYGFuaW1hdGlvbnJ1bmAgZXZlbnQgYW5kIGBhbmltYXRpb25zdGFydGBcbiAgICAgICAgICogZmlyZXMgYWZ0ZXIgYGFuaW1hdGlvbi1kZWxheWAgaGFzIGV4cGlyZWQgd2hpY2ggd291bGQgYmUgdG9vIGxhdGUuXG4gICAgICAgICAqLyBjb25zdCBpc0FuaW1hdGluZyA9IHByZXZBbmltYXRpb25OYW1lICE9PSBjdXJyZW50QW5pbWF0aW9uTmFtZTtcbiAgICAgICAgICAgICAgICBpZiAod2FzUHJlc2VudCAmJiBpc0FuaW1hdGluZykgc2VuZCgnQU5JTUFUSU9OX09VVCcpO1xuICAgICAgICAgICAgICAgIGVsc2Ugc2VuZCgnVU5NT1VOVCcpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcHJldlByZXNlbnRSZWYuY3VycmVudCA9IHByZXNlbnQ7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXNlbnQsXG4gICAgICAgIHNlbmRcbiAgICBdKTtcbiAgICAkaXFxM3IkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChub2RlMSkge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgKiBUcmlnZ2VyaW5nIGFuIEFOSU1BVElPTl9PVVQgZHVyaW5nIGFuIEFOSU1BVElPTl9JTiB3aWxsIGZpcmUgYW4gYGFuaW1hdGlvbmNhbmNlbGBcbiAgICAgICAqIGV2ZW50IGZvciBBTklNQVRJT05fSU4gYWZ0ZXIgd2UgaGF2ZSBlbnRlcmVkIGB1bm1vdW50U3VzcGVuZGVkYCBzdGF0ZS4gU28sIHdlXG4gICAgICAgKiBtYWtlIHN1cmUgd2Ugb25seSB0cmlnZ2VyIEFOSU1BVElPTl9FTkQgZm9yIHRoZSBjdXJyZW50bHkgYWN0aXZlIGFuaW1hdGlvbi5cbiAgICAgICAqLyBjb25zdCBoYW5kbGVBbmltYXRpb25FbmQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgY29uc3QgY3VycmVudEFuaW1hdGlvbk5hbWUgPSAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXNSZWYuY3VycmVudCk7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNDdXJyZW50QW5pbWF0aW9uID0gY3VycmVudEFuaW1hdGlvbk5hbWUuaW5jbHVkZXMoZXZlbnQuYW5pbWF0aW9uTmFtZSk7XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEgJiYgaXNDdXJyZW50QW5pbWF0aW9uKSAvLyBXaXRoIFJlYWN0IDE4IGNvbmN1cnJlbmN5IHRoaXMgdXBkYXRlIGlzIGFwcGxpZWRcbiAgICAgICAgICAgICAgICAvLyBhIGZyYW1lIGFmdGVyIHRoZSBhbmltYXRpb24gZW5kcywgY3JlYXRpbmcgYSBmbGFzaCBvZiB2aXNpYmxlIGNvbnRlbnQuXG4gICAgICAgICAgICAgICAgLy8gQnkgbWFudWFsbHkgZmx1c2hpbmcgd2UgZW5zdXJlIHRoZXkgc3luYyB3aXRoaW4gYSBmcmFtZSwgcmVtb3ZpbmcgdGhlIGZsYXNoLlxuICAgICAgICAgICAgICAgICRpcXEzciRmbHVzaFN5bmMoKCk9PnNlbmQoJ0FOSU1BVElPTl9FTkQnKVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgaGFuZGxlQW5pbWF0aW9uU3RhcnQgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gbm9kZTEpIC8vIGlmIGFuaW1hdGlvbiBvY2N1cnJlZCwgc3RvcmUgaXRzIG5hbWUgYXMgdGhlIHByZXZpb3VzIGFuaW1hdGlvbi5cbiAgICAgICAgICAgICAgICBwcmV2QW5pbWF0aW9uTmFtZVJlZi5jdXJyZW50ID0gJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUoc3R5bGVzUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbnN0YXJ0JywgaGFuZGxlQW5pbWF0aW9uU3RhcnQpO1xuICAgICAgICAgICAgbm9kZTEuYWRkRXZlbnRMaXN0ZW5lcignYW5pbWF0aW9uY2FuY2VsJywgaGFuZGxlQW5pbWF0aW9uRW5kKTtcbiAgICAgICAgICAgIG5vZGUxLmFkZEV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25zdGFydCcsIGhhbmRsZUFuaW1hdGlvblN0YXJ0KTtcbiAgICAgICAgICAgICAgICBub2RlMS5yZW1vdmVFdmVudExpc3RlbmVyKCdhbmltYXRpb25jYW5jZWwnLCBoYW5kbGVBbmltYXRpb25FbmQpO1xuICAgICAgICAgICAgICAgIG5vZGUxLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2FuaW1hdGlvbmVuZCcsIGhhbmRsZUFuaW1hdGlvbkVuZCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9IGVsc2UgLy8gVHJhbnNpdGlvbiB0byB0aGUgdW5tb3VudGVkIHN0YXRlIGlmIHRoZSBub2RlIGlzIHJlbW92ZWQgcHJlbWF0dXJlbHkuXG4gICAgICAgIC8vIFdlIGF2b2lkIGRvaW5nIHNvIGR1cmluZyBjbGVhbnVwIGFzIHRoZSBub2RlIG1heSBjaGFuZ2UgYnV0IHN0aWxsIGV4aXN0LlxuICAgICAgICBzZW5kKCdBTklNQVRJT05fRU5EJyk7XG4gICAgfSwgW1xuICAgICAgICBub2RlMSxcbiAgICAgICAgc2VuZFxuICAgIF0pO1xuICAgIHJldHVybiB7XG4gICAgICAgIGlzUHJlc2VudDogW1xuICAgICAgICAgICAgJ21vdW50ZWQnLFxuICAgICAgICAgICAgJ3VubW91bnRTdXNwZW5kZWQnXG4gICAgICAgIF0uaW5jbHVkZXMoc3RhdGUpLFxuICAgICAgICByZWY6ICRpcXEzciR1c2VDYWxsYmFjaygobm9kZSk9PntcbiAgICAgICAgICAgIGlmIChub2RlKSBzdHlsZXNSZWYuY3VycmVudCA9IGdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgICAgICAgICBzZXROb2RlKG5vZGUpO1xuICAgICAgICB9LCBbXSlcbiAgICB9O1xufVxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBmdW5jdGlvbiAkOTIxYTg4OWNlZTZkZjdlOCR2YXIkZ2V0QW5pbWF0aW9uTmFtZShzdHlsZXMpIHtcbiAgICByZXR1cm4gKHN0eWxlcyA9PT0gbnVsbCB8fCBzdHlsZXMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHN0eWxlcy5hbmltYXRpb25OYW1lKSB8fCAnbm9uZSc7XG59XG5cblxuXG5cbmV4cG9ydCB7JDkyMWE4ODljZWU2ZGY3ZTgkZXhwb3J0JDk5YzJiNzc5YWE0ZThiOGIgYXMgUHJlc2VuY2V9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHt1c2VFZmZlY3QgYXMgJDF3RXJ6JHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5cblxuLyoqIE51bWJlciBvZiBjb21wb25lbnRzIHdoaWNoIGhhdmUgcmVxdWVzdGVkIGludGVyZXN0IHRvIGhhdmUgZm9jdXMgZ3VhcmRzICovIGxldCAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQgPSAwO1xuZnVuY3Rpb24gJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGFjNWI1ODA0M2I3OTQ0OWIocHJvcHMpIHtcbiAgICAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpO1xuICAgIHJldHVybiBwcm9wcy5jaGlsZHJlbjtcbn1cbi8qKlxuICogSW5qZWN0cyBhIHBhaXIgb2YgZm9jdXMgZ3VhcmRzIGF0IHRoZSBlZGdlcyBvZiB0aGUgd2hvbGUgRE9NIHRyZWVcbiAqIHRvIGVuc3VyZSBgZm9jdXNpbmAgJiBgZm9jdXNvdXRgIGV2ZW50cyBjYW4gYmUgY2F1Z2h0IGNvbnNpc3RlbnRseS5cbiAqLyBmdW5jdGlvbiAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYjdlY2UyNGEyMmFlZGE4YygpIHtcbiAgICAkMXdFcnokdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHZhciBfZWRnZUd1YXJkcyQsIF9lZGdlR3VhcmRzJDI7XG4gICAgICAgIGNvbnN0IGVkZ2VHdWFyZHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2FmdGVyYmVnaW4nLCAoX2VkZ2VHdWFyZHMkID0gZWRnZUd1YXJkc1swXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkICE9PSB2b2lkIDAgPyBfZWRnZUd1YXJkcyQgOiAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY3JlYXRlRm9jdXNHdWFyZCgpKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5pbnNlcnRBZGphY2VudEVsZW1lbnQoJ2JlZm9yZWVuZCcsIChfZWRnZUd1YXJkcyQyID0gZWRnZUd1YXJkc1sxXSkgIT09IG51bGwgJiYgX2VkZ2VHdWFyZHMkMiAhPT0gdm9pZCAwID8gX2VkZ2VHdWFyZHMkMiA6ICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkpO1xuICAgICAgICAkM2RiMzhiN2QxZmIzZmU2YSR2YXIkY291bnQrKztcbiAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICBpZiAoJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50ID09PSAxKSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdbZGF0YS1yYWRpeC1mb2N1cy1ndWFyZF0nKS5mb3JFYWNoKChub2RlKT0+bm9kZS5yZW1vdmUoKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjb3VudC0tO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbn1cbmZ1bmN0aW9uICQzZGIzOGI3ZDFmYjNmZTZhJHZhciRjcmVhdGVGb2N1c0d1YXJkKCkge1xuICAgIGNvbnN0IGVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7XG4gICAgZWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2RhdGEtcmFkaXgtZm9jdXMtZ3VhcmQnLCAnJyk7XG4gICAgZWxlbWVudC50YWJJbmRleCA9IDA7XG4gICAgZWxlbWVudC5zdHlsZS5jc3NUZXh0ID0gJ291dGxpbmU6IG5vbmU7IG9wYWNpdHk6IDA7IHBvc2l0aW9uOiBmaXhlZDsgcG9pbnRlci1ldmVudHM6IG5vbmUnO1xuICAgIHJldHVybiBlbGVtZW50O1xufVxuY29uc3QgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YjtcblxuXG5cblxuZXhwb3J0IHskM2RiMzhiN2QxZmIzZmU2YSRleHBvcnQkYWM1YjU4MDQzYjc5NDQ5YiBhcyBGb2N1c0d1YXJkcywgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMgYXMgdXNlRm9jdXNHdWFyZHN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiZXhwb3J0IHZhciB6ZXJvUmlnaHRDbGFzc05hbWUgPSAncmlnaHQtc2Nyb2xsLWJhci1wb3NpdGlvbic7XG5leHBvcnQgdmFyIGZ1bGxXaWR0aENsYXNzTmFtZSA9ICd3aWR0aC1iZWZvcmUtc2Nyb2xsLWJhcic7XG5leHBvcnQgdmFyIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSA9ICd3aXRoLXNjcm9sbC1iYXJzLWhpZGRlbic7XG4vKipcbiAqIE5hbWUgb2YgYSBDU1MgdmFyaWFibGUgY29udGFpbmluZyB0aGUgYW1vdW50IG9mIFwiaGlkZGVuXCIgc2Nyb2xsYmFyXG4gKiAhIG1pZ2h0IGJlIHVuZGVmaW5lZCAhIHVzZSB3aWxsIGZhbGxiYWNrIVxuICovXG5leHBvcnQgdmFyIHJlbW92ZWRCYXJTaXplVmFyaWFibGUgPSAnLS1yZW1vdmVkLWJvZHktc2Nyb2xsLWJhci1zaXplJztcbiIsImltcG9ydCB7IGFzc2lnblJlZiB9IGZyb20gJy4vYXNzaWduUmVmJztcbmltcG9ydCB7IHVzZUNhbGxiYWNrUmVmIH0gZnJvbSAnLi91c2VSZWYnO1xuLyoqXG4gKiBNZXJnZXMgdHdvIG9yIG1vcmUgcmVmcyB0b2dldGhlciBwcm92aWRpbmcgYSBzaW5nbGUgaW50ZXJmYWNlIHRvIHNldCB0aGVpciB2YWx1ZVxuICogQHBhcmFtIHtSZWZPYmplY3R8UmVmfSByZWZzXG4gKiBAcmV0dXJucyB7TXV0YWJsZVJlZk9iamVjdH0gLSBhIG5ldyByZWYsIHdoaWNoIHRyYW5zbGF0ZXMgYWxsIGNoYW5nZXMgdG8ge3JlZnN9XG4gKlxuICogQHNlZSB7QGxpbmsgbWVyZ2VSZWZzfSBhIHZlcnNpb24gd2l0aG91dCBidWl0LWluIG1lbW9pemF0aW9uXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VtZXJnZXJlZnNcbiAqIEBleGFtcGxlXG4gKiBjb25zdCBDb21wb25lbnQgPSBSZWFjdC5mb3J3YXJkUmVmKChwcm9wcywgcmVmKSA9PiB7XG4gKiAgIGNvbnN0IG93blJlZiA9IHVzZVJlZigpO1xuICogICBjb25zdCBkb21SZWYgPSB1c2VNZXJnZVJlZnMoW3JlZiwgb3duUmVmXSk7IC8vIPCfkYggbWVyZ2UgdG9nZXRoZXJcbiAqICAgcmV0dXJuIDxkaXYgcmVmPXtkb21SZWZ9Pi4uLjwvZGl2PlxuICogfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTWVyZ2VSZWZzKHJlZnMsIGRlZmF1bHRWYWx1ZSkge1xuICAgIHJldHVybiB1c2VDYWxsYmFja1JlZihkZWZhdWx0VmFsdWUgfHwgbnVsbCwgZnVuY3Rpb24gKG5ld1ZhbHVlKSB7IHJldHVybiByZWZzLmZvckVhY2goZnVuY3Rpb24gKHJlZikgeyByZXR1cm4gYXNzaWduUmVmKHJlZiwgbmV3VmFsdWUpOyB9KTsgfSk7XG59XG4iLCJpbXBvcnQgeyB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0Jztcbi8qKlxuICogY3JlYXRlcyBhIE11dGFibGVSZWYgd2l0aCByZWYgY2hhbmdlIGNhbGxiYWNrXG4gKiBAcGFyYW0gaW5pdGlhbFZhbHVlIC0gaW5pdGlhbCByZWYgdmFsdWVcbiAqIEBwYXJhbSB7RnVuY3Rpb259IGNhbGxiYWNrIC0gYSBjYWxsYmFjayB0byBydW4gd2hlbiB2YWx1ZSBjaGFuZ2VzXG4gKlxuICogQGV4YW1wbGVcbiAqIGNvbnN0IHJlZiA9IHVzZUNhbGxiYWNrUmVmKDAsIChuZXdWYWx1ZSwgb2xkVmFsdWUpID0+IGNvbnNvbGUubG9nKG9sZFZhbHVlLCAnLT4nLCBuZXdWYWx1ZSk7XG4gKiByZWYuY3VycmVudCA9IDE7XG4gKiAvLyBwcmludHMgMCAtPiAxXG4gKlxuICogQHNlZSBodHRwczovL3JlYWN0anMub3JnL2RvY3MvaG9va3MtcmVmZXJlbmNlLmh0bWwjdXNlcmVmXG4gKiBAc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS90aGVLYXNoZXkvdXNlLWNhbGxiYWNrLXJlZiN1c2VjYWxsYmFja3JlZi0tLXRvLXJlcGxhY2UtcmVhY3R1c2VyZWZcbiAqIEByZXR1cm5zIHtNdXRhYmxlUmVmT2JqZWN0fVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlQ2FsbGJhY2tSZWYoaW5pdGlhbFZhbHVlLCBjYWxsYmFjaykge1xuICAgIHZhciByZWYgPSB1c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiAoe1xuICAgICAgICAvLyB2YWx1ZVxuICAgICAgICB2YWx1ZTogaW5pdGlhbFZhbHVlLFxuICAgICAgICAvLyBsYXN0IGNhbGxiYWNrXG4gICAgICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICAgICAgLy8gXCJtZW1vaXplZFwiIHB1YmxpYyBpbnRlcmZhY2VcbiAgICAgICAgZmFjYWRlOiB7XG4gICAgICAgICAgICBnZXQgY3VycmVudCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcmVmLnZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCBjdXJyZW50KHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgdmFyIGxhc3QgPSByZWYudmFsdWU7XG4gICAgICAgICAgICAgICAgaWYgKGxhc3QgIT09IHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIHJlZi52YWx1ZSA9IHZhbHVlO1xuICAgICAgICAgICAgICAgICAgICByZWYuY2FsbGJhY2sodmFsdWUsIGxhc3QpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgfSk7IH0pWzBdO1xuICAgIC8vIHVwZGF0ZSBjYWxsYmFja1xuICAgIHJlZi5jYWxsYmFjayA9IGNhbGxiYWNrO1xuICAgIHJldHVybiByZWYuZmFjYWRlO1xufVxuIiwiLyoqXG4gKiBBc3NpZ25zIGEgdmFsdWUgZm9yIGEgZ2l2ZW4gcmVmLCBubyBtYXR0ZXIgb2YgdGhlIHJlZiBmb3JtYXRcbiAqIEBwYXJhbSB7UmVmT2JqZWN0fSByZWYgLSBhIGNhbGxiYWNrIGZ1bmN0aW9uIG9yIHJlZiBvYmplY3RcbiAqIEBwYXJhbSB2YWx1ZSAtIGEgbmV3IHZhbHVlXG4gKlxuICogQHNlZSBodHRwczovL2dpdGh1Yi5jb20vdGhlS2FzaGV5L3VzZS1jYWxsYmFjay1yZWYjYXNzaWducmVmXG4gKiBAZXhhbXBsZVxuICogY29uc3QgcmVmT2JqZWN0ID0gdXNlUmVmKCk7XG4gKiBjb25zdCByZWZGbiA9IChyZWYpID0+IHsuLi4ufVxuICpcbiAqIGFzc2lnblJlZihyZWZPYmplY3QsIFwicmVmVmFsdWVcIik7XG4gKiBhc3NpZ25SZWYocmVmRm4sIFwicmVmVmFsdWVcIik7XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBhc3NpZ25SZWYocmVmLCB2YWx1ZSkge1xuICAgIGlmICh0eXBlb2YgcmVmID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgIHJlZih2YWx1ZSk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHJlZikge1xuICAgICAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICAgIH1cbiAgICByZXR1cm4gcmVmO1xufVxuIiwiaW1wb3J0IHsgX19hc3NpZ24gfSBmcm9tIFwidHNsaWJcIjtcbmZ1bmN0aW9uIEl0b0koYSkge1xuICAgIHJldHVybiBhO1xufVxuZnVuY3Rpb24gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpIHtcbiAgICBpZiAobWlkZGxld2FyZSA9PT0gdm9pZCAwKSB7IG1pZGRsZXdhcmUgPSBJdG9JOyB9XG4gICAgdmFyIGJ1ZmZlciA9IFtdO1xuICAgIHZhciBhc3NpZ25lZCA9IGZhbHNlO1xuICAgIHZhciBtZWRpdW0gPSB7XG4gICAgICAgIHJlYWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChhc3NpZ25lZCkge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhcjogY291bGQgbm90IGByZWFkYCBmcm9tIGFuIGBhc3NpZ25lZGAgbWVkaXVtLiBgcmVhZGAgY291bGQgYmUgdXNlZCBvbmx5IHdpdGggYHVzZU1lZGl1bWAuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXJbYnVmZmVyLmxlbmd0aCAtIDFdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHRzO1xuICAgICAgICB9LFxuICAgICAgICB1c2VNZWRpdW06IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgICAgICAgICB2YXIgaXRlbSA9IG1pZGRsZXdhcmUoZGF0YSwgYXNzaWduZWQpO1xuICAgICAgICAgICAgYnVmZmVyLnB1c2goaXRlbSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGJ1ZmZlciA9IGJ1ZmZlci5maWx0ZXIoZnVuY3Rpb24gKHgpIHsgcmV0dXJuIHggIT09IGl0ZW07IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSxcbiAgICAgICAgYXNzaWduU3luY01lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgYnVmZmVyID0ge1xuICAgICAgICAgICAgICAgIHB1c2g6IGZ1bmN0aW9uICh4KSB7IHJldHVybiBjYih4KTsgfSxcbiAgICAgICAgICAgICAgICBmaWx0ZXI6IGZ1bmN0aW9uICgpIHsgcmV0dXJuIGJ1ZmZlcjsgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgICAgIGFzc2lnbk1lZGl1bTogZnVuY3Rpb24gKGNiKSB7XG4gICAgICAgICAgICBhc3NpZ25lZCA9IHRydWU7XG4gICAgICAgICAgICB2YXIgcGVuZGluZ1F1ZXVlID0gW107XG4gICAgICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHZhciBjYnMgPSBidWZmZXI7XG4gICAgICAgICAgICAgICAgYnVmZmVyID0gW107XG4gICAgICAgICAgICAgICAgY2JzLmZvckVhY2goY2IpO1xuICAgICAgICAgICAgICAgIHBlbmRpbmdRdWV1ZSA9IGJ1ZmZlcjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBleGVjdXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNicyA9IHBlbmRpbmdRdWV1ZTtcbiAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBbXTtcbiAgICAgICAgICAgICAgICBjYnMuZm9yRWFjaChjYik7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdmFyIGN5Y2xlID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKCkudGhlbihleGVjdXRlUXVldWUpOyB9O1xuICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgIGJ1ZmZlciA9IHtcbiAgICAgICAgICAgICAgICBwdXNoOiBmdW5jdGlvbiAoeCkge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUucHVzaCh4KTtcbiAgICAgICAgICAgICAgICAgICAgY3ljbGUoKTtcbiAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIGZpbHRlcjogZnVuY3Rpb24gKGZpbHRlcikge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nUXVldWUgPSBwZW5kaW5nUXVldWUuZmlsdGVyKGZpbHRlcik7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBidWZmZXI7XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sXG4gICAgfTtcbiAgICByZXR1cm4gbWVkaXVtO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZU1lZGl1bShkZWZhdWx0cywgbWlkZGxld2FyZSkge1xuICAgIGlmIChtaWRkbGV3YXJlID09PSB2b2lkIDApIHsgbWlkZGxld2FyZSA9IEl0b0k7IH1cbiAgICByZXR1cm4gaW5uZXJDcmVhdGVNZWRpdW0oZGVmYXVsdHMsIG1pZGRsZXdhcmUpO1xufVxuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9iYW4tdHlwZXNcbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVTaWRlY2FyTWVkaXVtKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBtZWRpdW0gPSBpbm5lckNyZWF0ZU1lZGl1bShudWxsKTtcbiAgICBtZWRpdW0ub3B0aW9ucyA9IF9fYXNzaWduKHsgYXN5bmM6IHRydWUsIHNzcjogZmFsc2UgfSwgb3B0aW9ucyk7XG4gICAgcmV0dXJuIG1lZGl1bTtcbn1cbiIsImltcG9ydCB7IF9fYXNzaWduLCBfX3Jlc3QgfSBmcm9tIFwidHNsaWJcIjtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbnZhciBTaWRlQ2FyID0gZnVuY3Rpb24gKF9hKSB7XG4gICAgdmFyIHNpZGVDYXIgPSBfYS5zaWRlQ2FyLCByZXN0ID0gX19yZXN0KF9hLCBbXCJzaWRlQ2FyXCJdKTtcbiAgICBpZiAoIXNpZGVDYXIpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTaWRlY2FyOiBwbGVhc2UgcHJvdmlkZSBgc2lkZUNhcmAgcHJvcGVydHkgdG8gaW1wb3J0IHRoZSByaWdodCBjYXInKTtcbiAgICB9XG4gICAgdmFyIFRhcmdldCA9IHNpZGVDYXIucmVhZCgpO1xuICAgIGlmICghVGFyZ2V0KSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU2lkZWNhciBtZWRpdW0gbm90IGZvdW5kJyk7XG4gICAgfVxuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFRhcmdldCwgX19hc3NpZ24oe30sIHJlc3QpKTtcbn07XG5TaWRlQ2FyLmlzU2lkZUNhckV4cG9ydCA9IHRydWU7XG5leHBvcnQgZnVuY3Rpb24gZXhwb3J0U2lkZWNhcihtZWRpdW0sIGV4cG9ydGVkKSB7XG4gICAgbWVkaXVtLnVzZU1lZGl1bShleHBvcnRlZCk7XG4gICAgcmV0dXJuIFNpZGVDYXI7XG59XG4iLCJpbXBvcnQgeyBjcmVhdGVTaWRlY2FyTWVkaXVtIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuZXhwb3J0IHZhciBlZmZlY3RDYXIgPSBjcmVhdGVTaWRlY2FyTWVkaXVtKCk7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiwgX19yZXN0IH0gZnJvbSBcInRzbGliXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBmdWxsV2lkdGhDbGFzc05hbWUsIHplcm9SaWdodENsYXNzTmFtZSB9IGZyb20gJ3JlYWN0LXJlbW92ZS1zY3JvbGwtYmFyL2NvbnN0YW50cyc7XG5pbXBvcnQgeyB1c2VNZXJnZVJlZnMgfSBmcm9tICd1c2UtY2FsbGJhY2stcmVmJztcbmltcG9ydCB7IGVmZmVjdENhciB9IGZyb20gJy4vbWVkaXVtJztcbnZhciBub3RoaW5nID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybjtcbn07XG4vKipcbiAqIFJlbW92ZXMgc2Nyb2xsYmFyIGZyb20gdGhlIHBhZ2UgYW5kIGNvbnRhaW4gdGhlIHNjcm9sbCB3aXRoaW4gdGhlIExvY2tcbiAqL1xudmFyIFJlbW92ZVNjcm9sbCA9IFJlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCBwYXJlbnRSZWYpIHtcbiAgICB2YXIgcmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICAgIHZhciBfYSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICAgICAgb25TY3JvbGxDYXB0dXJlOiBub3RoaW5nLFxuICAgICAgICBvbldoZWVsQ2FwdHVyZTogbm90aGluZyxcbiAgICAgICAgb25Ub3VjaE1vdmVDYXB0dXJlOiBub3RoaW5nLFxuICAgIH0pLCBjYWxsYmFja3MgPSBfYVswXSwgc2V0Q2FsbGJhY2tzID0gX2FbMV07XG4gICAgdmFyIGZvcndhcmRQcm9wcyA9IHByb3BzLmZvcndhcmRQcm9wcywgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbiwgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLCByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGVuYWJsZWQgPSBwcm9wcy5lbmFibGVkLCBzaGFyZHMgPSBwcm9wcy5zaGFyZHMsIHNpZGVDYXIgPSBwcm9wcy5zaWRlQ2FyLCBub0lzb2xhdGlvbiA9IHByb3BzLm5vSXNvbGF0aW9uLCBpbmVydCA9IHByb3BzLmluZXJ0LCBhbGxvd1BpbmNoWm9vbSA9IHByb3BzLmFsbG93UGluY2hab29tLCBfYiA9IHByb3BzLmFzLCBDb250YWluZXIgPSBfYiA9PT0gdm9pZCAwID8gJ2RpdicgOiBfYiwgcmVzdCA9IF9fcmVzdChwcm9wcywgW1wiZm9yd2FyZFByb3BzXCIsIFwiY2hpbGRyZW5cIiwgXCJjbGFzc05hbWVcIiwgXCJyZW1vdmVTY3JvbGxCYXJcIiwgXCJlbmFibGVkXCIsIFwic2hhcmRzXCIsIFwic2lkZUNhclwiLCBcIm5vSXNvbGF0aW9uXCIsIFwiaW5lcnRcIiwgXCJhbGxvd1BpbmNoWm9vbVwiLCBcImFzXCJdKTtcbiAgICB2YXIgU2lkZUNhciA9IHNpZGVDYXI7XG4gICAgdmFyIGNvbnRhaW5lclJlZiA9IHVzZU1lcmdlUmVmcyhbcmVmLCBwYXJlbnRSZWZdKTtcbiAgICB2YXIgY29udGFpbmVyUHJvcHMgPSBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcmVzdCksIGNhbGxiYWNrcyk7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBlbmFibGVkICYmIChSZWFjdC5jcmVhdGVFbGVtZW50KFNpZGVDYXIsIHsgc2lkZUNhcjogZWZmZWN0Q2FyLCByZW1vdmVTY3JvbGxCYXI6IHJlbW92ZVNjcm9sbEJhciwgc2hhcmRzOiBzaGFyZHMsIG5vSXNvbGF0aW9uOiBub0lzb2xhdGlvbiwgaW5lcnQ6IGluZXJ0LCBzZXRDYWxsYmFja3M6IHNldENhbGxiYWNrcywgYWxsb3dQaW5jaFpvb206ICEhYWxsb3dQaW5jaFpvb20sIGxvY2tSZWY6IHJlZiB9KSksXG4gICAgICAgIGZvcndhcmRQcm9wcyA/IChSZWFjdC5jbG9uZUVsZW1lbnQoUmVhY3QuQ2hpbGRyZW4ub25seShjaGlsZHJlbiksIF9fYXNzaWduKF9fYXNzaWduKHt9LCBjb250YWluZXJQcm9wcyksIHsgcmVmOiBjb250YWluZXJSZWYgfSkpKSA6IChSZWFjdC5jcmVhdGVFbGVtZW50KENvbnRhaW5lciwgX19hc3NpZ24oe30sIGNvbnRhaW5lclByb3BzLCB7IGNsYXNzTmFtZTogY2xhc3NOYW1lLCByZWY6IGNvbnRhaW5lclJlZiB9KSwgY2hpbGRyZW4pKSkpO1xufSk7XG5SZW1vdmVTY3JvbGwuZGVmYXVsdFByb3BzID0ge1xuICAgIGVuYWJsZWQ6IHRydWUsXG4gICAgcmVtb3ZlU2Nyb2xsQmFyOiB0cnVlLFxuICAgIGluZXJ0OiBmYWxzZSxcbn07XG5SZW1vdmVTY3JvbGwuY2xhc3NOYW1lcyA9IHtcbiAgICBmdWxsV2lkdGg6IGZ1bGxXaWR0aENsYXNzTmFtZSxcbiAgICB6ZXJvUmlnaHQ6IHplcm9SaWdodENsYXNzTmFtZSxcbn07XG5leHBvcnQgeyBSZW1vdmVTY3JvbGwgfTtcbiIsImltcG9ydCB7IGdldE5vbmNlIH0gZnJvbSAnZ2V0LW5vbmNlJztcbmZ1bmN0aW9uIG1ha2VTdHlsZVRhZygpIHtcbiAgICBpZiAoIWRvY3VtZW50KVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB2YXIgdGFnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICB0YWcudHlwZSA9ICd0ZXh0L2Nzcyc7XG4gICAgdmFyIG5vbmNlID0gZ2V0Tm9uY2UoKTtcbiAgICBpZiAobm9uY2UpIHtcbiAgICAgICAgdGFnLnNldEF0dHJpYnV0ZSgnbm9uY2UnLCBub25jZSk7XG4gICAgfVxuICAgIHJldHVybiB0YWc7XG59XG5mdW5jdGlvbiBpbmplY3RTdHlsZXModGFnLCBjc3MpIHtcbiAgICAvLyBAdHMtaWdub3JlXG4gICAgaWYgKHRhZy5zdHlsZVNoZWV0KSB7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdGFnLnN0eWxlU2hlZXQuY3NzVGV4dCA9IGNzcztcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHRhZy5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShjc3MpKTtcbiAgICB9XG59XG5mdW5jdGlvbiBpbnNlcnRTdHlsZVRhZyh0YWcpIHtcbiAgICB2YXIgaGVhZCA9IGRvY3VtZW50LmhlYWQgfHwgZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXTtcbiAgICBoZWFkLmFwcGVuZENoaWxkKHRhZyk7XG59XG5leHBvcnQgdmFyIHN0eWxlc2hlZXRTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGNvdW50ZXIgPSAwO1xuICAgIHZhciBzdHlsZXNoZWV0ID0gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgICBhZGQ6IGZ1bmN0aW9uIChzdHlsZSkge1xuICAgICAgICAgICAgaWYgKGNvdW50ZXIgPT0gMCkge1xuICAgICAgICAgICAgICAgIGlmICgoc3R5bGVzaGVldCA9IG1ha2VTdHlsZVRhZygpKSkge1xuICAgICAgICAgICAgICAgICAgICBpbmplY3RTdHlsZXMoc3R5bGVzaGVldCwgc3R5bGUpO1xuICAgICAgICAgICAgICAgICAgICBpbnNlcnRTdHlsZVRhZyhzdHlsZXNoZWV0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb3VudGVyKys7XG4gICAgICAgIH0sXG4gICAgICAgIHJlbW92ZTogZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgY291bnRlci0tO1xuICAgICAgICAgICAgaWYgKCFjb3VudGVyICYmIHN0eWxlc2hlZXQpIHtcbiAgICAgICAgICAgICAgICBzdHlsZXNoZWV0LnBhcmVudE5vZGUgJiYgc3R5bGVzaGVldC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHN0eWxlc2hlZXQpO1xuICAgICAgICAgICAgICAgIHN0eWxlc2hlZXQgPSBudWxsO1xuICAgICAgICAgICAgfVxuICAgICAgICB9LFxuICAgIH07XG59O1xuIiwidmFyIGN1cnJlbnROb25jZTtcbmV4cG9ydCB2YXIgc2V0Tm9uY2UgPSBmdW5jdGlvbiAobm9uY2UpIHtcbiAgICBjdXJyZW50Tm9uY2UgPSBub25jZTtcbn07XG5leHBvcnQgdmFyIGdldE5vbmNlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmIChjdXJyZW50Tm9uY2UpIHtcbiAgICAgICAgcmV0dXJuIGN1cnJlbnROb25jZTtcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBfX3dlYnBhY2tfbm9uY2VfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIF9fd2VicGFja19ub25jZV9fO1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xufTtcbiIsImltcG9ydCB7IHN0eWxlSG9va1NpbmdsZXRvbiB9IGZyb20gJy4vaG9vayc7XG4vKipcbiAqIGNyZWF0ZSBhIENvbXBvbmVudCB0byBhZGQgc3R5bGVzIG9uIGRlbWFuZFxuICogLSBzdHlsZXMgYXJlIGFkZGVkIHdoZW4gZmlyc3QgaW5zdGFuY2UgaXMgbW91bnRlZFxuICogLSBzdHlsZXMgYXJlIHJlbW92ZWQgd2hlbiB0aGUgbGFzdCBpbnN0YW5jZSBpcyB1bm1vdW50ZWRcbiAqIC0gY2hhbmdpbmcgc3R5bGVzIGluIHJ1bnRpbWUgZG9lcyBub3RoaW5nIHVubGVzcyBkeW5hbWljIGlzIHNldC4gQnV0IHdpdGggbXVsdGlwbGUgY29tcG9uZW50cyB0aGF0IGNhbiBsZWFkIHRvIHRoZSB1bmRlZmluZWQgYmVoYXZpb3JcbiAqL1xuZXhwb3J0IHZhciBzdHlsZVNpbmdsZXRvbiA9IGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgdXNlU3R5bGUgPSBzdHlsZUhvb2tTaW5nbGV0b24oKTtcbiAgICB2YXIgU2hlZXQgPSBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHN0eWxlcyA9IF9hLnN0eWxlcywgZHluYW1pYyA9IF9hLmR5bmFtaWM7XG4gICAgICAgIHVzZVN0eWxlKHN0eWxlcywgZHluYW1pYyk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH07XG4gICAgcmV0dXJuIFNoZWV0O1xufTtcbiIsImltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IHN0eWxlc2hlZXRTaW5nbGV0b24gfSBmcm9tICcuL3NpbmdsZXRvbic7XG4vKipcbiAqIGNyZWF0ZXMgYSBob29rIHRvIGNvbnRyb2wgc3R5bGUgc2luZ2xldG9uXG4gKiBAc2VlIHtAbGluayBzdHlsZVNpbmdsZXRvbn0gZm9yIGEgc2FmZXIgY29tcG9uZW50IHZlcnNpb25cbiAqIEBleGFtcGxlXG4gKiBgYGB0c3hcbiAqIGNvbnN0IHVzZVN0eWxlID0gc3R5bGVIb29rU2luZ2xldG9uKCk7XG4gKiAvLy9cbiAqIHVzZVN0eWxlKCdib2R5IHsgb3ZlcmZsb3c6IGhpZGRlbn0nKTtcbiAqL1xuZXhwb3J0IHZhciBzdHlsZUhvb2tTaW5nbGV0b24gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHNoZWV0ID0gc3R5bGVzaGVldFNpbmdsZXRvbigpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoc3R5bGVzLCBpc0R5bmFtaWMpIHtcbiAgICAgICAgUmVhY3QudXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNoZWV0LmFkZChzdHlsZXMpO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBzaGVldC5yZW1vdmUoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH0sIFtzdHlsZXMgJiYgaXNEeW5hbWljXSk7XG4gICAgfTtcbn07XG4iLCJleHBvcnQgdmFyIHplcm9HYXAgPSB7XG4gICAgbGVmdDogMCxcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgZ2FwOiAwLFxufTtcbnZhciBwYXJzZSA9IGZ1bmN0aW9uICh4KSB7IHJldHVybiBwYXJzZUludCh4IHx8ICcnLCAxMCkgfHwgMDsgfTtcbnZhciBnZXRPZmZzZXQgPSBmdW5jdGlvbiAoZ2FwTW9kZSkge1xuICAgIHZhciBjcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmJvZHkpO1xuICAgIHZhciBsZWZ0ID0gY3NbZ2FwTW9kZSA9PT0gJ3BhZGRpbmcnID8gJ3BhZGRpbmdMZWZ0JyA6ICdtYXJnaW5MZWZ0J107XG4gICAgdmFyIHRvcCA9IGNzW2dhcE1vZGUgPT09ICdwYWRkaW5nJyA/ICdwYWRkaW5nVG9wJyA6ICdtYXJnaW5Ub3AnXTtcbiAgICB2YXIgcmlnaHQgPSBjc1tnYXBNb2RlID09PSAncGFkZGluZycgPyAncGFkZGluZ1JpZ2h0JyA6ICdtYXJnaW5SaWdodCddO1xuICAgIHJldHVybiBbcGFyc2UobGVmdCksIHBhcnNlKHRvcCksIHBhcnNlKHJpZ2h0KV07XG59O1xuZXhwb3J0IHZhciBnZXRHYXBXaWR0aCA9IGZ1bmN0aW9uIChnYXBNb2RlKSB7XG4gICAgaWYgKGdhcE1vZGUgPT09IHZvaWQgMCkgeyBnYXBNb2RlID0gJ21hcmdpbic7IH1cbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIHplcm9HYXA7XG4gICAgfVxuICAgIHZhciBvZmZzZXRzID0gZ2V0T2Zmc2V0KGdhcE1vZGUpO1xuICAgIHZhciBkb2N1bWVudFdpZHRoID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoO1xuICAgIHZhciB3aW5kb3dXaWR0aCA9IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgIHJldHVybiB7XG4gICAgICAgIGxlZnQ6IG9mZnNldHNbMF0sXG4gICAgICAgIHRvcDogb2Zmc2V0c1sxXSxcbiAgICAgICAgcmlnaHQ6IG9mZnNldHNbMl0sXG4gICAgICAgIGdhcDogTWF0aC5tYXgoMCwgd2luZG93V2lkdGggLSBkb2N1bWVudFdpZHRoICsgb2Zmc2V0c1syXSAtIG9mZnNldHNbMF0pLFxuICAgIH07XG59O1xuIiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgZnVsbFdpZHRoQ2xhc3NOYW1lLCB6ZXJvUmlnaHRDbGFzc05hbWUsIG5vU2Nyb2xsYmFyc0NsYXNzTmFtZSwgcmVtb3ZlZEJhclNpemVWYXJpYWJsZSB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IGdldEdhcFdpZHRoIH0gZnJvbSAnLi91dGlscyc7XG52YXIgU3R5bGUgPSBzdHlsZVNpbmdsZXRvbigpO1xuLy8gaW1wb3J0YW50IHRpcCAtIG9uY2Ugd2UgbWVhc3VyZSBzY3JvbGxCYXIgd2lkdGggYW5kIHJlbW92ZSB0aGVtXG4vLyB3ZSBjb3VsZCBub3QgcmVwZWF0IHRoaXMgb3BlcmF0aW9uXG4vLyB0aHVzIHdlIGFyZSB1c2luZyBzdHlsZS1zaW5nbGV0b24gLSBvbmx5IHRoZSBmaXJzdCBcInlldCBjb3JyZWN0XCIgc3R5bGUgd2lsbCBiZSBhcHBsaWVkLlxudmFyIGdldFN0eWxlcyA9IGZ1bmN0aW9uIChfYSwgYWxsb3dSZWxhdGl2ZSwgZ2FwTW9kZSwgaW1wb3J0YW50KSB7XG4gICAgdmFyIGxlZnQgPSBfYS5sZWZ0LCB0b3AgPSBfYS50b3AsIHJpZ2h0ID0gX2EucmlnaHQsIGdhcCA9IF9hLmdhcDtcbiAgICBpZiAoZ2FwTW9kZSA9PT0gdm9pZCAwKSB7IGdhcE1vZGUgPSAnbWFyZ2luJzsgfVxuICAgIHJldHVybiBcIlxcbiAgLlwiLmNvbmNhdChub1Njcm9sbGJhcnNDbGFzc05hbWUsIFwiIHtcXG4gICBvdmVyZmxvdzogaGlkZGVuIFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICBwYWRkaW5nLXJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBib2R5IHtcXG4gICAgb3ZlcmZsb3c6IGhpZGRlbiBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICAgIG92ZXJzY3JvbGwtYmVoYXZpb3I6IGNvbnRhaW47XFxuICAgIFwiKS5jb25jYXQoW1xuICAgICAgICBhbGxvd1JlbGF0aXZlICYmIFwicG9zaXRpb246IHJlbGF0aXZlIFwiLmNvbmNhdChpbXBvcnRhbnQsIFwiO1wiKSxcbiAgICAgICAgZ2FwTW9kZSA9PT0gJ21hcmdpbicgJiZcbiAgICAgICAgICAgIFwiXFxuICAgIHBhZGRpbmctbGVmdDogXCIuY29uY2F0KGxlZnQsIFwicHg7XFxuICAgIHBhZGRpbmctdG9wOiBcIikuY29uY2F0KHRvcCwgXCJweDtcXG4gICAgcGFkZGluZy1yaWdodDogXCIpLmNvbmNhdChyaWdodCwgXCJweDtcXG4gICAgbWFyZ2luLWxlZnQ6MDtcXG4gICAgbWFyZ2luLXRvcDowO1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gICAgXCIpLFxuICAgICAgICBnYXBNb2RlID09PSAncGFkZGluZycgJiYgXCJwYWRkaW5nLXJpZ2h0OiBcIi5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcIiksXG4gICAgXVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pXG4gICAgICAgIC5qb2luKCcnKSwgXCJcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiB7XFxuICAgIHJpZ2h0OiBcIikuY29uY2F0KGdhcCwgXCJweCBcIikuY29uY2F0KGltcG9ydGFudCwgXCI7XFxuICB9XFxuICBcXG4gIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IFwiKS5jb25jYXQoZ2FwLCBcInB4IFwiKS5jb25jYXQoaW1wb3J0YW50LCBcIjtcXG4gIH1cXG4gIFxcbiAgLlwiKS5jb25jYXQoemVyb1JpZ2h0Q2xhc3NOYW1lLCBcIiAuXCIpLmNvbmNhdCh6ZXJvUmlnaHRDbGFzc05hbWUsIFwiIHtcXG4gICAgcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICAuXCIpLmNvbmNhdChmdWxsV2lkdGhDbGFzc05hbWUsIFwiIC5cIikuY29uY2F0KGZ1bGxXaWR0aENsYXNzTmFtZSwgXCIge1xcbiAgICBtYXJnaW4tcmlnaHQ6IDAgXCIpLmNvbmNhdChpbXBvcnRhbnQsIFwiO1xcbiAgfVxcbiAgXFxuICBib2R5IHtcXG4gICAgXCIpLmNvbmNhdChyZW1vdmVkQmFyU2l6ZVZhcmlhYmxlLCBcIjogXCIpLmNvbmNhdChnYXAsIFwicHg7XFxuICB9XFxuXCIpO1xufTtcbi8qKlxuICogUmVtb3ZlcyBwYWdlIHNjcm9sbGJhciBhbmQgYmxvY2tzIHBhZ2Ugc2Nyb2xsIHdoZW4gbW91bnRlZFxuICovXG5leHBvcnQgdmFyIFJlbW92ZVNjcm9sbEJhciA9IGZ1bmN0aW9uIChwcm9wcykge1xuICAgIHZhciBub1JlbGF0aXZlID0gcHJvcHMubm9SZWxhdGl2ZSwgbm9JbXBvcnRhbnQgPSBwcm9wcy5ub0ltcG9ydGFudCwgX2EgPSBwcm9wcy5nYXBNb2RlLCBnYXBNb2RlID0gX2EgPT09IHZvaWQgMCA/ICdtYXJnaW4nIDogX2E7XG4gICAgLypcbiAgICAgZ2FwIHdpbGwgYmUgbWVhc3VyZWQgb24gZXZlcnkgY29tcG9uZW50IG1vdW50XG4gICAgIGhvd2V2ZXIgaXQgd2lsbCBiZSB1c2VkIG9ubHkgYnkgdGhlIFwiZmlyc3RcIiBpbnZvY2F0aW9uXG4gICAgIGR1ZSB0byBzaW5nbGV0b24gbmF0dXJlIG9mIDxTdHlsZVxuICAgICAqL1xuICAgIHZhciBnYXAgPSBSZWFjdC51c2VNZW1vKGZ1bmN0aW9uICgpIHsgcmV0dXJuIGdldEdhcFdpZHRoKGdhcE1vZGUpOyB9LCBbZ2FwTW9kZV0pO1xuICAgIHJldHVybiBSZWFjdC5jcmVhdGVFbGVtZW50KFN0eWxlLCB7IHN0eWxlczogZ2V0U3R5bGVzKGdhcCwgIW5vUmVsYXRpdmUsIGdhcE1vZGUsICFub0ltcG9ydGFudCA/ICchaW1wb3J0YW50JyA6ICcnKSB9KTtcbn07XG4iLCJ2YXIgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuaWYgKHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkoe30sICdwYXNzaXZlJywge1xuICAgICAgICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IHRydWU7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9KTtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndGVzdCcsIG9wdGlvbnMsIG9wdGlvbnMpO1xuICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd0ZXN0Jywgb3B0aW9ucywgb3B0aW9ucyk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcGFzc2l2ZVN1cHBvcnRlZCA9IGZhbHNlO1xuICAgIH1cbn1cbmV4cG9ydCB2YXIgbm9uUGFzc2l2ZSA9IHBhc3NpdmVTdXBwb3J0ZWQgPyB7IHBhc3NpdmU6IGZhbHNlIH0gOiBmYWxzZTtcbiIsInZhciBhbHdheXNDb250YWluc1Njcm9sbCA9IGZ1bmN0aW9uIChub2RlKSB7XG4gICAgLy8gdGV4dGFyZWEgd2lsbCBhbHdheXMgX2NvbnRhaW5fIHNjcm9sbCBpbnNpZGUgc2VsZi4gSXQgb25seSBjYW4gYmUgaGlkZGVuXG4gICAgcmV0dXJuIG5vZGUudGFnTmFtZSA9PT0gJ1RFWFRBUkVBJztcbn07XG52YXIgZWxlbWVudENhbkJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSwgb3ZlcmZsb3cpIHtcbiAgICB2YXIgc3R5bGVzID0gd2luZG93LmdldENvbXB1dGVkU3R5bGUobm9kZSk7XG4gICAgcmV0dXJuIChcbiAgICAvLyBub3Qtbm90LXNjcm9sbGFibGVcbiAgICBzdHlsZXNbb3ZlcmZsb3ddICE9PSAnaGlkZGVuJyAmJlxuICAgICAgICAvLyBjb250YWlucyBzY3JvbGwgaW5zaWRlIHNlbGZcbiAgICAgICAgIShzdHlsZXMub3ZlcmZsb3dZID09PSBzdHlsZXMub3ZlcmZsb3dYICYmICFhbHdheXNDb250YWluc1Njcm9sbChub2RlKSAmJiBzdHlsZXNbb3ZlcmZsb3ddID09PSAndmlzaWJsZScpKTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVWU2Nyb2xsZWQgPSBmdW5jdGlvbiAobm9kZSkgeyByZXR1cm4gZWxlbWVudENhbkJlU2Nyb2xsZWQobm9kZSwgJ292ZXJmbG93WScpOyB9O1xudmFyIGVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkID0gZnVuY3Rpb24gKG5vZGUpIHsgcmV0dXJuIGVsZW1lbnRDYW5CZVNjcm9sbGVkKG5vZGUsICdvdmVyZmxvd1gnKTsgfTtcbmV4cG9ydCB2YXIgbG9jYXRpb25Db3VsZEJlU2Nyb2xsZWQgPSBmdW5jdGlvbiAoYXhpcywgbm9kZSkge1xuICAgIHZhciBjdXJyZW50ID0gbm9kZTtcbiAgICBkbyB7XG4gICAgICAgIC8vIFNraXAgb3ZlciBzaGFkb3cgcm9vdFxuICAgICAgICBpZiAodHlwZW9mIFNoYWRvd1Jvb3QgIT09ICd1bmRlZmluZWQnICYmIGN1cnJlbnQgaW5zdGFuY2VvZiBTaGFkb3dSb290KSB7XG4gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5ob3N0O1xuICAgICAgICB9XG4gICAgICAgIHZhciBpc1Njcm9sbGFibGUgPSBlbGVtZW50Q291bGRCZVNjcm9sbGVkKGF4aXMsIGN1cnJlbnQpO1xuICAgICAgICBpZiAoaXNTY3JvbGxhYmxlKSB7XG4gICAgICAgICAgICB2YXIgX2EgPSBnZXRTY3JvbGxWYXJpYWJsZXMoYXhpcywgY3VycmVudCksIHMgPSBfYVsxXSwgZCA9IF9hWzJdO1xuICAgICAgICAgICAgaWYgKHMgPiBkKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChjdXJyZW50ICYmIGN1cnJlbnQgIT09IGRvY3VtZW50LmJvZHkpO1xuICAgIHJldHVybiBmYWxzZTtcbn07XG52YXIgZ2V0VlNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxUb3AgPSBfYS5zY3JvbGxUb3AsIHNjcm9sbEhlaWdodCA9IF9hLnNjcm9sbEhlaWdodCwgY2xpZW50SGVpZ2h0ID0gX2EuY2xpZW50SGVpZ2h0O1xuICAgIHJldHVybiBbXG4gICAgICAgIHNjcm9sbFRvcCxcbiAgICAgICAgc2Nyb2xsSGVpZ2h0LFxuICAgICAgICBjbGllbnRIZWlnaHQsXG4gICAgXTtcbn07XG52YXIgZ2V0SFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBzY3JvbGxMZWZ0ID0gX2Euc2Nyb2xsTGVmdCwgc2Nyb2xsV2lkdGggPSBfYS5zY3JvbGxXaWR0aCwgY2xpZW50V2lkdGggPSBfYS5jbGllbnRXaWR0aDtcbiAgICByZXR1cm4gW1xuICAgICAgICBzY3JvbGxMZWZ0LFxuICAgICAgICBzY3JvbGxXaWR0aCxcbiAgICAgICAgY2xpZW50V2lkdGgsXG4gICAgXTtcbn07XG52YXIgZWxlbWVudENvdWxkQmVTY3JvbGxlZCA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGVsZW1lbnRDb3VsZEJlVlNjcm9sbGVkKG5vZGUpIDogZWxlbWVudENvdWxkQmVIU2Nyb2xsZWQobm9kZSk7XG59O1xudmFyIGdldFNjcm9sbFZhcmlhYmxlcyA9IGZ1bmN0aW9uIChheGlzLCBub2RlKSB7XG4gICAgcmV0dXJuIGF4aXMgPT09ICd2JyA/IGdldFZTY3JvbGxWYXJpYWJsZXMobm9kZSkgOiBnZXRIU2Nyb2xsVmFyaWFibGVzKG5vZGUpO1xufTtcbnZhciBnZXREaXJlY3Rpb25GYWN0b3IgPSBmdW5jdGlvbiAoYXhpcywgZGlyZWN0aW9uKSB7XG4gICAgLyoqXG4gICAgICogSWYgdGhlIGVsZW1lbnQncyBkaXJlY3Rpb24gaXMgcnRsIChyaWdodC10by1sZWZ0KSwgdGhlbiBzY3JvbGxMZWZ0IGlzIDAgd2hlbiB0aGUgc2Nyb2xsYmFyIGlzIGF0IGl0cyByaWdodG1vc3QgcG9zaXRpb24sXG4gICAgICogYW5kIHRoZW4gaW5jcmVhc2luZ2x5IG5lZ2F0aXZlIGFzIHlvdSBzY3JvbGwgdG93YXJkcyB0aGUgZW5kIG9mIHRoZSBjb250ZW50LlxuICAgICAqIEBzZWUgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0VsZW1lbnQvc2Nyb2xsTGVmdFxuICAgICAqL1xuICAgIHJldHVybiBheGlzID09PSAnaCcgJiYgZGlyZWN0aW9uID09PSAncnRsJyA/IC0xIDogMTtcbn07XG5leHBvcnQgdmFyIGhhbmRsZVNjcm9sbCA9IGZ1bmN0aW9uIChheGlzLCBlbmRUYXJnZXQsIGV2ZW50LCBzb3VyY2VEZWx0YSwgbm9PdmVyc2Nyb2xsKSB7XG4gICAgdmFyIGRpcmVjdGlvbkZhY3RvciA9IGdldERpcmVjdGlvbkZhY3RvcihheGlzLCB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShlbmRUYXJnZXQpLmRpcmVjdGlvbik7XG4gICAgdmFyIGRlbHRhID0gZGlyZWN0aW9uRmFjdG9yICogc291cmNlRGVsdGE7XG4gICAgLy8gZmluZCBzY3JvbGxhYmxlIHRhcmdldFxuICAgIHZhciB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgdmFyIHRhcmdldEluTG9jayA9IGVuZFRhcmdldC5jb250YWlucyh0YXJnZXQpO1xuICAgIHZhciBzaG91bGRDYW5jZWxTY3JvbGwgPSBmYWxzZTtcbiAgICB2YXIgaXNEZWx0YVBvc2l0aXZlID0gZGVsdGEgPiAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGwgPSAwO1xuICAgIHZhciBhdmFpbGFibGVTY3JvbGxUb3AgPSAwO1xuICAgIGRvIHtcbiAgICAgICAgdmFyIF9hID0gZ2V0U2Nyb2xsVmFyaWFibGVzKGF4aXMsIHRhcmdldCksIHBvc2l0aW9uID0gX2FbMF0sIHNjcm9sbF8xID0gX2FbMV0sIGNhcGFjaXR5ID0gX2FbMl07XG4gICAgICAgIHZhciBlbGVtZW50U2Nyb2xsID0gc2Nyb2xsXzEgLSBjYXBhY2l0eSAtIGRpcmVjdGlvbkZhY3RvciAqIHBvc2l0aW9uO1xuICAgICAgICBpZiAocG9zaXRpb24gfHwgZWxlbWVudFNjcm9sbCkge1xuICAgICAgICAgICAgaWYgKGVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQoYXhpcywgdGFyZ2V0KSkge1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbCArPSBlbGVtZW50U2Nyb2xsO1xuICAgICAgICAgICAgICAgIGF2YWlsYWJsZVNjcm9sbFRvcCArPSBwb3NpdGlvbjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0YXJnZXQgPSB0YXJnZXQucGFyZW50Tm9kZTtcbiAgICB9IHdoaWxlIChcbiAgICAvLyBwb3J0YWxlZCBjb250ZW50XG4gICAgKCF0YXJnZXRJbkxvY2sgJiYgdGFyZ2V0ICE9PSBkb2N1bWVudC5ib2R5KSB8fFxuICAgICAgICAvLyBzZWxmIGNvbnRlbnRcbiAgICAgICAgKHRhcmdldEluTG9jayAmJiAoZW5kVGFyZ2V0LmNvbnRhaW5zKHRhcmdldCkgfHwgZW5kVGFyZ2V0ID09PSB0YXJnZXQpKSk7XG4gICAgaWYgKGlzRGVsdGFQb3NpdGl2ZSAmJiAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGwgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIGRlbHRhID4gYXZhaWxhYmxlU2Nyb2xsKSkpIHtcbiAgICAgICAgc2hvdWxkQ2FuY2VsU2Nyb2xsID0gdHJ1ZTtcbiAgICB9XG4gICAgZWxzZSBpZiAoIWlzRGVsdGFQb3NpdGl2ZSAmJlxuICAgICAgICAoKG5vT3ZlcnNjcm9sbCAmJiBhdmFpbGFibGVTY3JvbGxUb3AgPT09IDApIHx8ICghbm9PdmVyc2Nyb2xsICYmIC1kZWx0YSA+IGF2YWlsYWJsZVNjcm9sbFRvcCkpKSB7XG4gICAgICAgIHNob3VsZENhbmNlbFNjcm9sbCA9IHRydWU7XG4gICAgfVxuICAgIHJldHVybiBzaG91bGRDYW5jZWxTY3JvbGw7XG59O1xuIiwiaW1wb3J0IHsgX19zcHJlYWRBcnJheSB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsQmFyIH0gZnJvbSAncmVhY3QtcmVtb3ZlLXNjcm9sbC1iYXInO1xuaW1wb3J0IHsgc3R5bGVTaW5nbGV0b24gfSBmcm9tICdyZWFjdC1zdHlsZS1zaW5nbGV0b24nO1xuaW1wb3J0IHsgbm9uUGFzc2l2ZSB9IGZyb20gJy4vYWdncmVzaXZlQ2FwdHVyZSc7XG5pbXBvcnQgeyBoYW5kbGVTY3JvbGwsIGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkIH0gZnJvbSAnLi9oYW5kbGVTY3JvbGwnO1xuZXhwb3J0IHZhciBnZXRUb3VjaFhZID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgcmV0dXJuICdjaGFuZ2VkVG91Y2hlcycgaW4gZXZlbnQgPyBbZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WCwgZXZlbnQuY2hhbmdlZFRvdWNoZXNbMF0uY2xpZW50WV0gOiBbMCwgMF07XG59O1xuZXhwb3J0IHZhciBnZXREZWx0YVhZID0gZnVuY3Rpb24gKGV2ZW50KSB7IHJldHVybiBbZXZlbnQuZGVsdGFYLCBldmVudC5kZWx0YVldOyB9O1xudmFyIGV4dHJhY3RSZWYgPSBmdW5jdGlvbiAocmVmKSB7XG4gICAgcmV0dXJuIHJlZiAmJiAnY3VycmVudCcgaW4gcmVmID8gcmVmLmN1cnJlbnQgOiByZWY7XG59O1xudmFyIGRlbHRhQ29tcGFyZSA9IGZ1bmN0aW9uICh4LCB5KSB7IHJldHVybiB4WzBdID09PSB5WzBdICYmIHhbMV0gPT09IHlbMV07IH07XG52YXIgZ2VuZXJhdGVTdHlsZSA9IGZ1bmN0aW9uIChpZCkgeyByZXR1cm4gXCJcXG4gIC5ibG9jay1pbnRlcmFjdGl2aXR5LVwiLmNvbmNhdChpZCwgXCIge3BvaW50ZXItZXZlbnRzOiBub25lO31cXG4gIC5hbGxvdy1pbnRlcmFjdGl2aXR5LVwiKS5jb25jYXQoaWQsIFwiIHtwb2ludGVyLWV2ZW50czogYWxsO31cXG5cIik7IH07XG52YXIgaWRDb3VudGVyID0gMDtcbnZhciBsb2NrU3RhY2sgPSBbXTtcbmV4cG9ydCBmdW5jdGlvbiBSZW1vdmVTY3JvbGxTaWRlQ2FyKHByb3BzKSB7XG4gICAgdmFyIHNob3VsZFByZXZlbnRRdWV1ZSA9IFJlYWN0LnVzZVJlZihbXSk7XG4gICAgdmFyIHRvdWNoU3RhcnRSZWYgPSBSZWFjdC51c2VSZWYoWzAsIDBdKTtcbiAgICB2YXIgYWN0aXZlQXhpcyA9IFJlYWN0LnVzZVJlZigpO1xuICAgIHZhciBpZCA9IFJlYWN0LnVzZVN0YXRlKGlkQ291bnRlcisrKVswXTtcbiAgICB2YXIgU3R5bGUgPSBSZWFjdC51c2VTdGF0ZShmdW5jdGlvbiAoKSB7IHJldHVybiBzdHlsZVNpbmdsZXRvbigpOyB9KVswXTtcbiAgICB2YXIgbGFzdFByb3BzID0gUmVhY3QudXNlUmVmKHByb3BzKTtcbiAgICBSZWFjdC51c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICBsYXN0UHJvcHMuY3VycmVudCA9IHByb3BzO1xuICAgIH0sIFtwcm9wc10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChwcm9wcy5pbmVydCkge1xuICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKFwiYmxvY2staW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTtcbiAgICAgICAgICAgIHZhciBhbGxvd18xID0gX19zcHJlYWRBcnJheShbcHJvcHMubG9ja1JlZi5jdXJyZW50XSwgKHByb3BzLnNoYXJkcyB8fCBbXSkubWFwKGV4dHJhY3RSZWYpLCB0cnVlKS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICBhbGxvd18xLmZvckVhY2goZnVuY3Rpb24gKGVsKSB7IHJldHVybiBlbC5jbGFzc0xpc3QuYWRkKFwiYWxsb3ctaW50ZXJhY3Rpdml0eS1cIi5jb25jYXQoaWQpKTsgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZShcImJsb2NrLWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7XG4gICAgICAgICAgICAgICAgYWxsb3dfMS5mb3JFYWNoKGZ1bmN0aW9uIChlbCkgeyByZXR1cm4gZWwuY2xhc3NMaXN0LnJlbW92ZShcImFsbG93LWludGVyYWN0aXZpdHktXCIuY29uY2F0KGlkKSk7IH0pO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm47XG4gICAgfSwgW3Byb3BzLmluZXJ0LCBwcm9wcy5sb2NrUmVmLmN1cnJlbnQsIHByb3BzLnNoYXJkc10pO1xuICAgIHZhciBzaG91bGRDYW5jZWxFdmVudCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCwgcGFyZW50KSB7XG4gICAgICAgIGlmICgndG91Y2hlcycgaW4gZXZlbnQgJiYgZXZlbnQudG91Y2hlcy5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgIHJldHVybiAhbGFzdFByb3BzLmN1cnJlbnQuYWxsb3dQaW5jaFpvb207XG4gICAgICAgIH1cbiAgICAgICAgdmFyIHRvdWNoID0gZ2V0VG91Y2hYWShldmVudCk7XG4gICAgICAgIHZhciB0b3VjaFN0YXJ0ID0gdG91Y2hTdGFydFJlZi5jdXJyZW50O1xuICAgICAgICB2YXIgZGVsdGFYID0gJ2RlbHRhWCcgaW4gZXZlbnQgPyBldmVudC5kZWx0YVggOiB0b3VjaFN0YXJ0WzBdIC0gdG91Y2hbMF07XG4gICAgICAgIHZhciBkZWx0YVkgPSAnZGVsdGFZJyBpbiBldmVudCA/IGV2ZW50LmRlbHRhWSA6IHRvdWNoU3RhcnRbMV0gLSB0b3VjaFsxXTtcbiAgICAgICAgdmFyIGN1cnJlbnRBeGlzO1xuICAgICAgICB2YXIgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICB2YXIgbW92ZURpcmVjdGlvbiA9IE1hdGguYWJzKGRlbHRhWCkgPiBNYXRoLmFicyhkZWx0YVkpID8gJ2gnIDogJ3YnO1xuICAgICAgICAvLyBhbGxvdyBob3Jpem9udGFsIHRvdWNoIG1vdmUgb24gUmFuZ2UgaW5wdXRzLiBUaGV5IHdpbGwgbm90IGNhdXNlIGFueSBzY3JvbGxcbiAgICAgICAgaWYgKCd0b3VjaGVzJyBpbiBldmVudCAmJiBtb3ZlRGlyZWN0aW9uID09PSAnaCcgJiYgdGFyZ2V0LnR5cGUgPT09ICdyYW5nZScpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgIGlmICghY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbjtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGN1cnJlbnRBeGlzID0gbW92ZURpcmVjdGlvbiA9PT0gJ3YnID8gJ2gnIDogJ3YnO1xuICAgICAgICAgICAgY2FuQmVTY3JvbGxlZEluTWFpbkRpcmVjdGlvbiA9IGxvY2F0aW9uQ291bGRCZVNjcm9sbGVkKG1vdmVEaXJlY3Rpb24sIHRhcmdldCk7XG4gICAgICAgICAgICAvLyBvdGhlciBheGlzIG1pZ2h0IGJlIG5vdCBzY3JvbGxhYmxlXG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFjYW5CZVNjcm9sbGVkSW5NYWluRGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFhY3RpdmVBeGlzLmN1cnJlbnQgJiYgJ2NoYW5nZWRUb3VjaGVzJyBpbiBldmVudCAmJiAoZGVsdGFYIHx8IGRlbHRhWSkpIHtcbiAgICAgICAgICAgIGFjdGl2ZUF4aXMuY3VycmVudCA9IGN1cnJlbnRBeGlzO1xuICAgICAgICB9XG4gICAgICAgIGlmICghY3VycmVudEF4aXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG4gICAgICAgIHZhciBjYW5jZWxpbmdBeGlzID0gYWN0aXZlQXhpcy5jdXJyZW50IHx8IGN1cnJlbnRBeGlzO1xuICAgICAgICByZXR1cm4gaGFuZGxlU2Nyb2xsKGNhbmNlbGluZ0F4aXMsIHBhcmVudCwgZXZlbnQsIGNhbmNlbGluZ0F4aXMgPT09ICdoJyA/IGRlbHRhWCA6IGRlbHRhWSwgdHJ1ZSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRQcmV2ZW50ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKF9ldmVudCkge1xuICAgICAgICB2YXIgZXZlbnQgPSBfZXZlbnQ7XG4gICAgICAgIGlmICghbG9ja1N0YWNrLmxlbmd0aCB8fCBsb2NrU3RhY2tbbG9ja1N0YWNrLmxlbmd0aCAtIDFdICE9PSBTdHlsZSkge1xuICAgICAgICAgICAgLy8gbm90IHRoZSBsYXN0IGFjdGl2ZVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIHZhciBkZWx0YSA9ICdkZWx0YVknIGluIGV2ZW50ID8gZ2V0RGVsdGFYWShldmVudCkgOiBnZXRUb3VjaFhZKGV2ZW50KTtcbiAgICAgICAgdmFyIHNvdXJjZUV2ZW50ID0gc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQuZmlsdGVyKGZ1bmN0aW9uIChlKSB7IHJldHVybiBlLm5hbWUgPT09IGV2ZW50LnR5cGUgJiYgZS50YXJnZXQgPT09IGV2ZW50LnRhcmdldCAmJiBkZWx0YUNvbXBhcmUoZS5kZWx0YSwgZGVsdGEpOyB9KVswXTtcbiAgICAgICAgLy8gc2VsZiBldmVudCwgYW5kIHNob3VsZCBiZSBjYW5jZWxlZFxuICAgICAgICBpZiAoc291cmNlRXZlbnQgJiYgc291cmNlRXZlbnQuc2hvdWxkKSB7XG4gICAgICAgICAgICBpZiAoZXZlbnQuY2FuY2VsYWJsZSkge1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgLy8gb3V0c2lkZSBvciBzaGFyZCBldmVudFxuICAgICAgICBpZiAoIXNvdXJjZUV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgc2hhcmROb2RlcyA9IChsYXN0UHJvcHMuY3VycmVudC5zaGFyZHMgfHwgW10pXG4gICAgICAgICAgICAgICAgLm1hcChleHRyYWN0UmVmKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoQm9vbGVhbilcbiAgICAgICAgICAgICAgICAuZmlsdGVyKGZ1bmN0aW9uIChub2RlKSB7IHJldHVybiBub2RlLmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7IH0pO1xuICAgICAgICAgICAgdmFyIHNob3VsZFN0b3AgPSBzaGFyZE5vZGVzLmxlbmd0aCA+IDAgPyBzaG91bGRDYW5jZWxFdmVudChldmVudCwgc2hhcmROb2Rlc1swXSkgOiAhbGFzdFByb3BzLmN1cnJlbnQubm9Jc29sYXRpb247XG4gICAgICAgICAgICBpZiAoc2hvdWxkU3RvcCkge1xuICAgICAgICAgICAgICAgIGlmIChldmVudC5jYW5jZWxhYmxlKSB7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgIHZhciBzaG91bGRDYW5jZWwgPSBSZWFjdC51c2VDYWxsYmFjayhmdW5jdGlvbiAobmFtZSwgZGVsdGEsIHRhcmdldCwgc2hvdWxkKSB7XG4gICAgICAgIHZhciBldmVudCA9IHsgbmFtZTogbmFtZSwgZGVsdGE6IGRlbHRhLCB0YXJnZXQ6IHRhcmdldCwgc2hvdWxkOiBzaG91bGQgfTtcbiAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQucHVzaChldmVudCk7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgc2hvdWxkUHJldmVudFF1ZXVlLmN1cnJlbnQgPSBzaG91bGRQcmV2ZW50UXVldWUuY3VycmVudC5maWx0ZXIoZnVuY3Rpb24gKGUpIHsgcmV0dXJuIGUgIT09IGV2ZW50OyB9KTtcbiAgICAgICAgfSwgMSk7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxUb3VjaFN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHRvdWNoU3RhcnRSZWYuY3VycmVudCA9IGdldFRvdWNoWFkoZXZlbnQpO1xuICAgICAgICBhY3RpdmVBeGlzLmN1cnJlbnQgPSB1bmRlZmluZWQ7XG4gICAgfSwgW10pO1xuICAgIHZhciBzY3JvbGxXaGVlbCA9IFJlYWN0LnVzZUNhbGxiYWNrKGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgICBzaG91bGRDYW5jZWwoZXZlbnQudHlwZSwgZ2V0RGVsdGFYWShldmVudCksIGV2ZW50LnRhcmdldCwgc2hvdWxkQ2FuY2VsRXZlbnQoZXZlbnQsIHByb3BzLmxvY2tSZWYuY3VycmVudCkpO1xuICAgIH0sIFtdKTtcbiAgICB2YXIgc2Nyb2xsVG91Y2hNb3ZlID0gUmVhY3QudXNlQ2FsbGJhY2soZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICAgIHNob3VsZENhbmNlbChldmVudC50eXBlLCBnZXRUb3VjaFhZKGV2ZW50KSwgZXZlbnQudGFyZ2V0LCBzaG91bGRDYW5jZWxFdmVudChldmVudCwgcHJvcHMubG9ja1JlZi5jdXJyZW50KSk7XG4gICAgfSwgW10pO1xuICAgIFJlYWN0LnVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIGxvY2tTdGFjay5wdXNoKFN0eWxlKTtcbiAgICAgICAgcHJvcHMuc2V0Q2FsbGJhY2tzKHtcbiAgICAgICAgICAgIG9uU2Nyb2xsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvbldoZWVsQ2FwdHVyZTogc2Nyb2xsV2hlZWwsXG4gICAgICAgICAgICBvblRvdWNoTW92ZUNhcHR1cmU6IHNjcm9sbFRvdWNoTW92ZSxcbiAgICAgICAgfSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3doZWVsJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBsb2NrU3RhY2sgPSBsb2NrU3RhY2suZmlsdGVyKGZ1bmN0aW9uIChpbnN0KSB7IHJldHVybiBpbnN0ICE9PSBTdHlsZTsgfSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd3aGVlbCcsIHNob3VsZFByZXZlbnQsIG5vblBhc3NpdmUpO1xuICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgc2hvdWxkUHJldmVudCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0Jywgc2Nyb2xsVG91Y2hTdGFydCwgbm9uUGFzc2l2ZSk7XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuICAgIHZhciByZW1vdmVTY3JvbGxCYXIgPSBwcm9wcy5yZW1vdmVTY3JvbGxCYXIsIGluZXJ0ID0gcHJvcHMuaW5lcnQ7XG4gICAgcmV0dXJuIChSZWFjdC5jcmVhdGVFbGVtZW50KFJlYWN0LkZyYWdtZW50LCBudWxsLFxuICAgICAgICBpbmVydCA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoU3R5bGUsIHsgc3R5bGVzOiBnZW5lcmF0ZVN0eWxlKGlkKSB9KSA6IG51bGwsXG4gICAgICAgIHJlbW92ZVNjcm9sbEJhciA/IFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsQmFyLCB7IGdhcE1vZGU6IFwibWFyZ2luXCIgfSkgOiBudWxsKSk7XG59XG4iLCJpbXBvcnQgeyBleHBvcnRTaWRlY2FyIH0gZnJvbSAndXNlLXNpZGVjYXInO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsU2lkZUNhciB9IGZyb20gJy4vU2lkZUVmZmVjdCc7XG5pbXBvcnQgeyBlZmZlY3RDYXIgfSBmcm9tICcuL21lZGl1bSc7XG5leHBvcnQgZGVmYXVsdCBleHBvcnRTaWRlY2FyKGVmZmVjdENhciwgUmVtb3ZlU2Nyb2xsU2lkZUNhcik7XG4iLCJpbXBvcnQgeyBfX2Fzc2lnbiB9IGZyb20gXCJ0c2xpYlwiO1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgUmVtb3ZlU2Nyb2xsIH0gZnJvbSAnLi9VSSc7XG5pbXBvcnQgU2lkZUNhciBmcm9tICcuL3NpZGVjYXInO1xudmFyIFJlYWN0UmVtb3ZlU2Nyb2xsID0gUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikgeyByZXR1cm4gKFJlYWN0LmNyZWF0ZUVsZW1lbnQoUmVtb3ZlU2Nyb2xsLCBfX2Fzc2lnbih7fSwgcHJvcHMsIHsgcmVmOiByZWYsIHNpZGVDYXI6IFNpZGVDYXIgfSkpKTsgfSk7XG5SZWFjdFJlbW92ZVNjcm9sbC5jbGFzc05hbWVzID0gUmVtb3ZlU2Nyb2xsLmNsYXNzTmFtZXM7XG5leHBvcnQgZGVmYXVsdCBSZWFjdFJlbW92ZVNjcm9sbDtcbiIsInZhciBnZXREZWZhdWx0UGFyZW50ID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0KSB7XG4gICAgaWYgKHR5cGVvZiBkb2N1bWVudCA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciBzYW1wbGVUYXJnZXQgPSBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0WzBdIDogb3JpZ2luYWxUYXJnZXQ7XG4gICAgcmV0dXJuIHNhbXBsZVRhcmdldC5vd25lckRvY3VtZW50LmJvZHk7XG59O1xudmFyIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xudmFyIHVuY29udHJvbGxlZE5vZGVzID0gbmV3IFdlYWtNYXAoKTtcbnZhciBtYXJrZXJNYXAgPSB7fTtcbnZhciBsb2NrQ291bnQgPSAwO1xudmFyIHVud3JhcEhvc3QgPSBmdW5jdGlvbiAobm9kZSkge1xuICAgIHJldHVybiBub2RlICYmIChub2RlLmhvc3QgfHwgdW53cmFwSG9zdChub2RlLnBhcmVudE5vZGUpKTtcbn07XG52YXIgY29ycmVjdFRhcmdldHMgPSBmdW5jdGlvbiAocGFyZW50LCB0YXJnZXRzKSB7XG4gICAgcmV0dXJuIHRhcmdldHNcbiAgICAgICAgLm1hcChmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgICAgIGlmIChwYXJlbnQuY29udGFpbnModGFyZ2V0KSkge1xuICAgICAgICAgICAgcmV0dXJuIHRhcmdldDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgY29ycmVjdGVkVGFyZ2V0ID0gdW53cmFwSG9zdCh0YXJnZXQpO1xuICAgICAgICBpZiAoY29ycmVjdGVkVGFyZ2V0ICYmIHBhcmVudC5jb250YWlucyhjb3JyZWN0ZWRUYXJnZXQpKSB7XG4gICAgICAgICAgICByZXR1cm4gY29ycmVjdGVkVGFyZ2V0O1xuICAgICAgICB9XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ2FyaWEtaGlkZGVuJywgdGFyZ2V0LCAnaW4gbm90IGNvbnRhaW5lZCBpbnNpZGUnLCBwYXJlbnQsICcuIERvaW5nIG5vdGhpbmcnKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfSlcbiAgICAgICAgLmZpbHRlcihmdW5jdGlvbiAoeCkgeyByZXR1cm4gQm9vbGVhbih4KTsgfSk7XG59O1xuLyoqXG4gKiBNYXJrcyBldmVyeXRoaW5nIGV4Y2VwdCBnaXZlbiBub2RlKG9yIG5vZGVzKSBhcyBhcmlhLWhpZGRlblxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcGFyYW0ge1N0cmluZ30gW2NvbnRyb2xBdHRyaWJ1dGVdIC0gaHRtbCBBdHRyaWJ1dGUgdG8gY29udHJvbFxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbnZhciBhcHBseUF0dHJpYnV0ZVRvT3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lLCBjb250cm9sQXR0cmlidXRlKSB7XG4gICAgdmFyIHRhcmdldHMgPSBjb3JyZWN0VGFyZ2V0cyhwYXJlbnROb2RlLCBBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgaWYgKCFtYXJrZXJNYXBbbWFya2VyTmFtZV0pIHtcbiAgICAgICAgbWFya2VyTWFwW21hcmtlck5hbWVdID0gbmV3IFdlYWtNYXAoKTtcbiAgICB9XG4gICAgdmFyIG1hcmtlckNvdW50ZXIgPSBtYXJrZXJNYXBbbWFya2VyTmFtZV07XG4gICAgdmFyIGhpZGRlbk5vZGVzID0gW107XG4gICAgdmFyIGVsZW1lbnRzVG9LZWVwID0gbmV3IFNldCgpO1xuICAgIHZhciBlbGVtZW50c1RvU3RvcCA9IG5ldyBTZXQodGFyZ2V0cyk7XG4gICAgdmFyIGtlZXAgPSBmdW5jdGlvbiAoZWwpIHtcbiAgICAgICAgaWYgKCFlbCB8fCBlbGVtZW50c1RvS2VlcC5oYXMoZWwpKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgZWxlbWVudHNUb0tlZXAuYWRkKGVsKTtcbiAgICAgICAga2VlcChlbC5wYXJlbnROb2RlKTtcbiAgICB9O1xuICAgIHRhcmdldHMuZm9yRWFjaChrZWVwKTtcbiAgICB2YXIgZGVlcCA9IGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgICAgaWYgKCFwYXJlbnQgfHwgZWxlbWVudHNUb1N0b3AuaGFzKHBhcmVudCkpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBBcnJheS5wcm90b3R5cGUuZm9yRWFjaC5jYWxsKHBhcmVudC5jaGlsZHJlbiwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgICAgICAgIGlmIChlbGVtZW50c1RvS2VlcC5oYXMobm9kZSkpIHtcbiAgICAgICAgICAgICAgICBkZWVwKG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFyIGF0dHIgPSBub2RlLmdldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlKTtcbiAgICAgICAgICAgICAgICB2YXIgYWxyZWFkeUhpZGRlbiA9IGF0dHIgIT09IG51bGwgJiYgYXR0ciAhPT0gJ2ZhbHNlJztcbiAgICAgICAgICAgICAgICB2YXIgY291bnRlclZhbHVlID0gKGNvdW50ZXJNYXAuZ2V0KG5vZGUpIHx8IDApICsgMTtcbiAgICAgICAgICAgICAgICB2YXIgbWFya2VyVmFsdWUgPSAobWFya2VyQ291bnRlci5nZXQobm9kZSkgfHwgMCkgKyAxO1xuICAgICAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgbWFya2VyQ291bnRlci5zZXQobm9kZSwgbWFya2VyVmFsdWUpO1xuICAgICAgICAgICAgICAgIGhpZGRlbk5vZGVzLnB1c2gobm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKGNvdW50ZXJWYWx1ZSA9PT0gMSAmJiBhbHJlYWR5SGlkZGVuKSB7XG4gICAgICAgICAgICAgICAgICAgIHVuY29udHJvbGxlZE5vZGVzLnNldChub2RlLCB0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKG1hcmtlclZhbHVlID09PSAxKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG1hcmtlck5hbWUsICd0cnVlJyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghYWxyZWFkeUhpZGRlbikge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShjb250cm9sQXR0cmlidXRlLCAndHJ1ZScpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICBkZWVwKHBhcmVudE5vZGUpO1xuICAgIGVsZW1lbnRzVG9LZWVwLmNsZWFyKCk7XG4gICAgbG9ja0NvdW50Kys7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaGlkZGVuTm9kZXMuZm9yRWFjaChmdW5jdGlvbiAobm9kZSkge1xuICAgICAgICAgICAgdmFyIGNvdW50ZXJWYWx1ZSA9IGNvdW50ZXJNYXAuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIHZhciBtYXJrZXJWYWx1ZSA9IG1hcmtlckNvdW50ZXIuZ2V0KG5vZGUpIC0gMTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAuc2V0KG5vZGUsIGNvdW50ZXJWYWx1ZSk7XG4gICAgICAgICAgICBtYXJrZXJDb3VudGVyLnNldChub2RlLCBtYXJrZXJWYWx1ZSk7XG4gICAgICAgICAgICBpZiAoIWNvdW50ZXJWYWx1ZSkge1xuICAgICAgICAgICAgICAgIGlmICghdW5jb250cm9sbGVkTm9kZXMuaGFzKG5vZGUpKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKGNvbnRyb2xBdHRyaWJ1dGUpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB1bmNvbnRyb2xsZWROb2Rlcy5kZWxldGUobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIW1hcmtlclZhbHVlKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5yZW1vdmVBdHRyaWJ1dGUobWFya2VyTmFtZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBsb2NrQ291bnQtLTtcbiAgICAgICAgaWYgKCFsb2NrQ291bnQpIHtcbiAgICAgICAgICAgIC8vIGNsZWFyXG4gICAgICAgICAgICBjb3VudGVyTWFwID0gbmV3IFdlYWtNYXAoKTtcbiAgICAgICAgICAgIGNvdW50ZXJNYXAgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgdW5jb250cm9sbGVkTm9kZXMgPSBuZXcgV2Vha01hcCgpO1xuICAgICAgICAgICAgbWFya2VyTWFwID0ge307XG4gICAgICAgIH1cbiAgICB9O1xufTtcbi8qKlxuICogTWFya3MgZXZlcnl0aGluZyBleGNlcHQgZ2l2ZW4gbm9kZShvciBub2RlcykgYXMgYXJpYS1oaWRkZW5cbiAqIEBwYXJhbSB7RWxlbWVudCB8IEVsZW1lbnRbXX0gb3JpZ2luYWxUYXJnZXQgLSBlbGVtZW50cyB0byBrZWVwIG9uIHRoZSBwYWdlXG4gKiBAcGFyYW0gW3BhcmVudE5vZGVdIC0gdG9wIGVsZW1lbnQsIGRlZmF1bHRzIHRvIGRvY3VtZW50LmJvZHlcbiAqIEBwYXJhbSB7U3RyaW5nfSBbbWFya2VyTmFtZV0gLSBhIHNwZWNpYWwgYXR0cmlidXRlIHRvIG1hcmsgZXZlcnkgbm9kZVxuICogQHJldHVybiB7VW5kb30gdW5kbyBjb21tYW5kXG4gKi9cbmV4cG9ydCB2YXIgaGlkZU90aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLWFyaWEtaGlkZGVuJzsgfVxuICAgIHZhciB0YXJnZXRzID0gQXJyYXkuZnJvbShBcnJheS5pc0FycmF5KG9yaWdpbmFsVGFyZ2V0KSA/IG9yaWdpbmFsVGFyZ2V0IDogW29yaWdpbmFsVGFyZ2V0XSk7XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgLy8gd2Ugc2hvdWxkIG5vdCBoaWRlIGFyaWFMaXZlIGVsZW1lbnRzIC0gaHR0cHM6Ly9naXRodWIuY29tL3RoZUthc2hleS9hcmlhLWhpZGRlbi9pc3N1ZXMvMTBcbiAgICB0YXJnZXRzLnB1c2guYXBwbHkodGFyZ2V0cywgQXJyYXkuZnJvbShhY3RpdmVQYXJlbnROb2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJ1thcmlhLWxpdmVdJykpKTtcbiAgICByZXR1cm4gYXBwbHlBdHRyaWJ1dGVUb090aGVycyh0YXJnZXRzLCBhY3RpdmVQYXJlbnROb2RlLCBtYXJrZXJOYW1lLCAnYXJpYS1oaWRkZW4nKTtcbn07XG4vKipcbiAqIE1hcmtzIGV2ZXJ5dGhpbmcgZXhjZXB0IGdpdmVuIG5vZGUob3Igbm9kZXMpIGFzIGluZXJ0XG4gKiBAcGFyYW0ge0VsZW1lbnQgfCBFbGVtZW50W119IG9yaWdpbmFsVGFyZ2V0IC0gZWxlbWVudHMgdG8ga2VlcCBvbiB0aGUgcGFnZVxuICogQHBhcmFtIFtwYXJlbnROb2RlXSAtIHRvcCBlbGVtZW50LCBkZWZhdWx0cyB0byBkb2N1bWVudC5ib2R5XG4gKiBAcGFyYW0ge1N0cmluZ30gW21hcmtlck5hbWVdIC0gYSBzcGVjaWFsIGF0dHJpYnV0ZSB0byBtYXJrIGV2ZXJ5IG5vZGVcbiAqIEByZXR1cm4ge1VuZG99IHVuZG8gY29tbWFuZFxuICovXG5leHBvcnQgdmFyIGluZXJ0T3RoZXJzID0gZnVuY3Rpb24gKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKSB7XG4gICAgaWYgKG1hcmtlck5hbWUgPT09IHZvaWQgMCkgeyBtYXJrZXJOYW1lID0gJ2RhdGEtaW5lcnQtZWQnOyB9XG4gICAgdmFyIGFjdGl2ZVBhcmVudE5vZGUgPSBwYXJlbnROb2RlIHx8IGdldERlZmF1bHRQYXJlbnQob3JpZ2luYWxUYXJnZXQpO1xuICAgIGlmICghYWN0aXZlUGFyZW50Tm9kZSkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkgeyByZXR1cm4gbnVsbDsgfTtcbiAgICB9XG4gICAgcmV0dXJuIGFwcGx5QXR0cmlidXRlVG9PdGhlcnMob3JpZ2luYWxUYXJnZXQsIGFjdGl2ZVBhcmVudE5vZGUsIG1hcmtlck5hbWUsICdpbmVydCcpO1xufTtcbi8qKlxuICogQHJldHVybnMgaWYgY3VycmVudCBicm93c2VyIHN1cHBvcnRzIGluZXJ0XG4gKi9cbmV4cG9ydCB2YXIgc3VwcG9ydHNJbmVydCA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdHlwZW9mIEhUTUxFbGVtZW50ICE9PSAndW5kZWZpbmVkJyAmJiBIVE1MRWxlbWVudC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkoJ2luZXJ0Jyk7XG59O1xuLyoqXG4gKiBBdXRvbWF0aWMgZnVuY3Rpb24gdG8gXCJzdXBwcmVzc1wiIERPTSBlbGVtZW50cyAtIF9oaWRlXyBvciBfaW5lcnRfIGluIHRoZSBiZXN0IHBvc3NpYmxlIHdheVxuICogQHBhcmFtIHtFbGVtZW50IHwgRWxlbWVudFtdfSBvcmlnaW5hbFRhcmdldCAtIGVsZW1lbnRzIHRvIGtlZXAgb24gdGhlIHBhZ2VcbiAqIEBwYXJhbSBbcGFyZW50Tm9kZV0gLSB0b3AgZWxlbWVudCwgZGVmYXVsdHMgdG8gZG9jdW1lbnQuYm9keVxuICogQHBhcmFtIHtTdHJpbmd9IFttYXJrZXJOYW1lXSAtIGEgc3BlY2lhbCBhdHRyaWJ1dGUgdG8gbWFyayBldmVyeSBub2RlXG4gKiBAcmV0dXJuIHtVbmRvfSB1bmRvIGNvbW1hbmRcbiAqL1xuZXhwb3J0IHZhciBzdXBwcmVzc090aGVycyA9IGZ1bmN0aW9uIChvcmlnaW5hbFRhcmdldCwgcGFyZW50Tm9kZSwgbWFya2VyTmFtZSkge1xuICAgIGlmIChtYXJrZXJOYW1lID09PSB2b2lkIDApIHsgbWFya2VyTmFtZSA9ICdkYXRhLXN1cHByZXNzZWQnOyB9XG4gICAgcmV0dXJuIChzdXBwb3J0c0luZXJ0KCkgPyBpbmVydE90aGVycyA6IGhpZGVPdGhlcnMpKG9yaWdpbmFsVGFyZ2V0LCBwYXJlbnROb2RlLCBtYXJrZXJOYW1lKTtcbn07XG4iLCJpbXBvcnQgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVJlZiBhcyAkNjdVSG0kdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICQ2N1VIbSRjcmVhdGVFbGVtZW50LCB1c2VDYWxsYmFjayBhcyAkNjdVSG0kdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgYXMgJDY3VUhtJGZvcndhcmRSZWYsIENoaWxkcmVuIGFzICQ2N1VIbSRDaGlsZHJlbiwgdXNlRWZmZWN0IGFzICQ2N1VIbSR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQ2N1VIbSRGcmFnbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQ2N1VIbSR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlLCBjcmVhdGVDb250ZXh0IGFzICQ2N1VIbSRjcmVhdGVDb250ZXh0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlSWQgYXMgJDY3VUhtJHVzZUlkfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWlkXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDY3VUhtJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7Rm9jdXNTY29wZSBhcyAkNjdVSG0kRm9jdXNTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1mb2N1cy1zY29wZVwiO1xuaW1wb3J0IHtQb3J0YWwgYXMgJDY3VUhtJFBvcnRhbH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wb3J0YWxcIjtcbmltcG9ydCB7UHJlc2VuY2UgYXMgJDY3VUhtJFByZXNlbmNlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByZXNlbmNlXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkNjdVSG0kUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VGb2N1c0d1YXJkcyBhcyAkNjdVSG0kdXNlRm9jdXNHdWFyZHN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZm9jdXMtZ3VhcmRzXCI7XG5pbXBvcnQge1JlbW92ZVNjcm9sbCBhcyAkNjdVSG0kUmVtb3ZlU2Nyb2xsfSBmcm9tIFwicmVhY3QtcmVtb3ZlLXNjcm9sbFwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQ2N1VIbSRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7U2xvdCBhcyAkNjdVSG0kU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSA9ICdEaWFsb2cnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRjcmVhdGVEaWFsb2dDb250ZXh0LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkY2M3MDI3NzNiOGVhM2U0MV0gPSAkNjdVSG0kY3JlYXRlQ29udGV4dFNjb3BlKCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRSk7XG5jb25zdCBbJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ1Byb3ZpZGVyLCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dF0gPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUpO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTMgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIG1vZGFsOiBtb2RhbCA9IHRydWUgIH0gPSBwcm9wcztcbiAgICBjb25zdCB0cmlnZ2VyUmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBbb3BlbiA9IGZhbHNlLCBzZXRPcGVuXSA9ICQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IG9wZW5Qcm9wLFxuICAgICAgICBkZWZhdWx0UHJvcDogZGVmYXVsdE9wZW4sXG4gICAgICAgIG9uQ2hhbmdlOiBvbk9wZW5DaGFuZ2VcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVEaWFsb2csXG4gICAgICAgIHRyaWdnZXJSZWY6IHRyaWdnZXJSZWYsXG4gICAgICAgIGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYsXG4gICAgICAgIGNvbnRlbnRJZDogJDY3VUhtJHVzZUlkKCksXG4gICAgICAgIHRpdGxlSWQ6ICQ2N1VIbSR1c2VJZCgpLFxuICAgICAgICBkZXNjcmlwdGlvbklkOiAkNjdVSG0kdXNlSWQoKSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBvbk9wZW5Ub2dnbGU6ICQ2N1VIbSR1c2VDYWxsYmFjaygoKT0+c2V0T3BlbigocHJldk9wZW4pPT4hcHJldk9wZW5cbiAgICAgICAgICAgIClcbiAgICAgICAgLCBbXG4gICAgICAgICAgICBzZXRPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBtb2RhbDogbW9kYWxcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzZGRmMmQxNzRjZTAxMTUzLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRESUFMT0dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUUgPSAnRGlhbG9nVHJpZ2dlcic7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMmUxZTExMjJjZjBjYmE4OCA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgY29tcG9zZWRUcmlnZ2VyUmVmID0gJDY3VUhtJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQudHJpZ2dlclJlZik7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByaW1pdGl2ZS5idXR0b24sICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiYnV0dG9uXCIsXG4gICAgICAgIFwiYXJpYS1oYXNwb3B1cFwiOiBcImRpYWxvZ1wiLFxuICAgICAgICBcImFyaWEtZXhwYW5kZWRcIjogY29udGV4dC5vcGVuLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkVHJpZ2dlclJlZixcbiAgICAgICAgb25DbGljazogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQ2xpY2ssIGNvbnRleHQub25PcGVuVG9nZ2xlKVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUUklHR0VSX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRSA9ICdEaWFsb2dQb3J0YWwnO1xuY29uc3QgWyQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGNyZWF0ZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FLCB7XG4gICAgZm9yY2VNb3VudDogdW5kZWZpbmVkXG59KTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZURpYWxvZzogX19zY29wZURpYWxvZyAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkUE9SVEFMX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQb3J0YWxQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZURpYWxvZyxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sICQ2N1VIbSRDaGlsZHJlbi5tYXAoY2hpbGRyZW4sIChjaGlsZCk9Pi8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDY3VUhtJFByZXNlbmNlLCB7XG4gICAgICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGNvbnRleHQub3BlblxuICAgICAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQb3J0YWwsIHtcbiAgICAgICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgICAgICBjb250YWluZXI6IGNvbnRhaW5lclxuICAgICAgICB9LCBjaGlsZCkpXG4gICAgKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dPdmVybGF5XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUgPSAnRGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYmQxZDA2Yzc5YmUxOWUxNyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgcG9ydGFsQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VQb3J0YWxDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUUsIHByb3BzLl9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dPdmVybGF5SW1wbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRPVkVSTEFZX05BTUVcbn0pO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5vdmVybGF5UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkT1ZFUkxBWV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4oLyojX19QVVJFX18qLyAvLyBNYWtlIHN1cmUgYENvbnRlbnRgIGlzIHNjcm9sbGFibGUgZXZlbiB3aGVuIGl0IGRvZXNuJ3QgbGl2ZSBpbnNpZGUgYFJlbW92ZVNjcm9sbGBcbiAgICAvLyBpZS4gd2hlbiBgT3ZlcmxheWAgYW5kIGBDb250ZW50YCBhcmUgc2libGluZ3NcbiAgICAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUmVtb3ZlU2Nyb2xsLCB7XG4gICAgICAgIGFzOiAkNjdVSG0kU2xvdCxcbiAgICAgICAgYWxsb3dQaW5jaFpvb206IHRydWUsXG4gICAgICAgIHNoYXJkczogW1xuICAgICAgICAgICAgY29udGV4dC5jb250ZW50UmVmXG4gICAgICAgIF1cbiAgICB9LCAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUuZGl2LCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJGdldFN0YXRlKGNvbnRleHQub3BlbilcbiAgICB9LCBvdmVybGF5UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYgLy8gV2UgcmUtZW5hYmxlIHBvaW50ZXItZXZlbnRzIHByZXZlbnRlZCBieSBgRGlhbG9nLkNvbnRlbnRgIHRvIGFsbG93IHNjcm9sbGluZyB0aGUgb3ZlcmxheS5cbiAgICAgICAgLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgcG9pbnRlckV2ZW50czogJ2F1dG8nLFxuICAgICAgICAgICAgLi4ub3ZlcmxheVByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogRGlhbG9nQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FID0gJ0RpYWxvZ0NvbnRlbnQnO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHBvcnRhbENvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlUG9ydGFsQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCB7IGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgPSBwb3J0YWxDb250ZXh0LmZvcmNlTW91bnQgLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJlc2VuY2UsIHtcbiAgICAgICAgcHJlc2VudDogZm9yY2VNb3VudCB8fCBjb250ZXh0Lm9wZW5cbiAgICB9LCBjb250ZXh0Lm1vZGFsID8gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YsIHtcbiAgICBkaXNwbGF5TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50TW9kYWwgPSAvKiNfX1BVUkVfXyovICQ2N1VIbSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkdXNlRGlhbG9nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlRGlhbG9nKTtcbiAgICBjb25zdCBjb250ZW50UmVmID0gJDY3VUhtJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkNjdVSG0kdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5jb250ZW50UmVmLCBjb250ZW50UmVmKTsgLy8gYXJpYS1oaWRlIGV2ZXJ5dGhpbmcgZXhjZXB0IHRoZSBjb250ZW50IChiZXR0ZXIgc3VwcG9ydGVkIGVxdWl2YWxlbnQgdG8gc2V0dGluZyBhcmlhLW1vZGFsKVxuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3QgY29udGVudCA9IGNvbnRlbnRSZWYuY3VycmVudDtcbiAgICAgICAgaWYgKGNvbnRlbnQpIHJldHVybiAkNjdVSG0kaGlkZU90aGVycyhjb250ZW50KTtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDY3VUhtJGNyZWF0ZUVsZW1lbnQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzIC8vIHdlIG1ha2Ugc3VyZSBmb2N1cyBpc24ndCB0cmFwcGVkIG9uY2UgYERpYWxvZ0NvbnRlbnRgIGhhcyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBGb2N1czogY29udGV4dC5vcGVuLFxuICAgICAgICBkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlclJlZiRjO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyUmVmJGMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjLmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duT3V0c2lkZTogJDY3VUhtJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd25PdXRzaWRlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBvcmlnaW5hbEV2ZW50ID0gZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQ7XG4gICAgICAgICAgICBjb25zdCBjdHJsTGVmdENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDAgJiYgb3JpZ2luYWxFdmVudC5jdHJsS2V5ID09PSB0cnVlO1xuICAgICAgICAgICAgY29uc3QgaXNSaWdodENsaWNrID0gb3JpZ2luYWxFdmVudC5idXR0b24gPT09IDIgfHwgY3RybExlZnRDbGljazsgLy8gSWYgdGhlIGV2ZW50IGlzIGEgcmlnaHQtY2xpY2ssIHdlIHNob3VsZG4ndCBjbG9zZSBiZWNhdXNlXG4gICAgICAgICAgICAvLyBpdCBpcyBlZmZlY3RpdmVseSBhcyBpZiB3ZSByaWdodC1jbGlja2VkIHRoZSBgT3ZlcmxheWAuXG4gICAgICAgICAgICBpZiAoaXNSaWdodENsaWNrKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSAvLyBXaGVuIGZvY3VzIGlzIHRyYXBwZWQsIGEgYGZvY3Vzb3V0YCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1c091dHNpZGUsIChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgKVxuICAgIH0pKTtcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE5vbk1vZGFsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZURpYWxvZyk7XG4gICAgY29uc3QgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBoYXNQb2ludGVyRG93bk91dHNpZGVSZWYgPSAkNjdVSG0kdXNlUmVmKGZhbHNlKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudEltcGwsICQ2N1VIbSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHRyYXBGb2N1czogZmFsc2UsXG4gICAgICAgIGRpc2FibGVPdXRzaWRlUG9pbnRlckV2ZW50czogZmFsc2UsXG4gICAgICAgIG9uQ2xvc2VBdXRvRm9jdXM6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25DbG9zZUF1dG9Gb2M7XG4gICAgICAgICAgICAoX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID0gcHJvcHMub25DbG9zZUF1dG9Gb2N1cykgPT09IG51bGwgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jID09PSB2b2lkIDAgfHwgX3Byb3BzJG9uQ2xvc2VBdXRvRm9jLmNhbGwocHJvcHMsIGV2ZW50KTtcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGV4dCR0cmlnZ2VyUmVmJGMyO1xuICAgICAgICAgICAgICAgIGlmICghaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCkgKF9jb250ZXh0JHRyaWdnZXJSZWYkYzIgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMiA9PT0gdm9pZCAwIHx8IF9jb250ZXh0JHRyaWdnZXJSZWYkYzIuZm9jdXMoKTsgLy8gQWx3YXlzIHByZXZlbnQgYXV0byBmb2N1cyBiZWNhdXNlIHdlIGVpdGhlciBmb2N1cyBtYW51YWxseSBvciB3YW50IHVzZXIgYWdlbnQgZm9jdXNcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFzSW50ZXJhY3RlZE91dHNpZGVSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICAgICAgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25JbnRlcmFjdE91dHMsIF9jb250ZXh0JHRyaWdnZXJSZWYkYzM7XG4gICAgICAgICAgICAoX3Byb3BzJG9uSW50ZXJhY3RPdXRzID0gcHJvcHMub25JbnRlcmFjdE91dHNpZGUpID09PSBudWxsIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cyA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbkludGVyYWN0T3V0cy5jYWxsKHByb3BzLCBldmVudCk7XG4gICAgICAgICAgICBpZiAoIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgICAgICAgICAgICBoYXNJbnRlcmFjdGVkT3V0c2lkZVJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZGV0YWlsLm9yaWdpbmFsRXZlbnQudHlwZSA9PT0gJ3BvaW50ZXJkb3duJykgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgfSAvLyBQcmV2ZW50IGRpc21pc3Npbmcgd2hlbiBjbGlja2luZyB0aGUgdHJpZ2dlci5cbiAgICAgICAgICAgIC8vIEFzIHRoZSB0cmlnZ2VyIGlzIGFscmVhZHkgc2V0dXAgdG8gY2xvc2UsIHdpdGhvdXQgZG9pbmcgc28gd291bGRcbiAgICAgICAgICAgIC8vIGNhdXNlIGl0IHRvIGNsb3NlIGFuZCBpbW1lZGlhdGVseSBvcGVuLlxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgY29uc3QgdGFyZ2V0SXNUcmlnZ2VyID0gKF9jb250ZXh0JHRyaWdnZXJSZWYkYzMgPSBjb250ZXh0LnRyaWdnZXJSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRleHQkdHJpZ2dlclJlZiRjMyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRleHQkdHJpZ2dlclJlZiRjMy5jb250YWlucyh0YXJnZXQpO1xuICAgICAgICAgICAgaWYgKHRhcmdldElzVHJpZ2dlcikgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gT24gU2FmYXJpIGlmIHRoZSB0cmlnZ2VyIGlzIGluc2lkZSBhIGNvbnRhaW5lciB3aXRoIHRhYkluZGV4PXswfSwgd2hlbiBjbGlja2VkXG4gICAgICAgICAgICAvLyB3ZSB3aWxsIGdldCB0aGUgcG9pbnRlciBkb3duIG91dHNpZGUgZXZlbnQgb24gdGhlIHRyaWdnZXIsIGJ1dCB0aGVuIGEgc3Vic2VxdWVudFxuICAgICAgICAgICAgLy8gZm9jdXMgb3V0c2lkZSBldmVudCBvbiB0aGUgY29udGFpbmVyLCB3ZSBpZ25vcmUgYW55IGZvY3VzIG91dHNpZGUgZXZlbnQgd2hlbiB3ZSd2ZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBoYWQgYSBwb2ludGVyIGRvd24gb3V0c2lkZSBldmVudC5cbiAgICAgICAgICAgIGlmIChldmVudC5kZXRhaWwub3JpZ2luYWxFdmVudC50eXBlID09PSAnZm9jdXNpbicgJiYgaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmLmN1cnJlbnQpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnRJbXBsID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCB0cmFwRm9jdXM6IHRyYXBGb2N1cyAsIG9uT3BlbkF1dG9Gb2N1czogb25PcGVuQXV0b0ZvY3VzICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDT05URU5UX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNjdVSG0kdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2N1VIbSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTsgLy8gTWFrZSBzdXJlIHRoZSB3aG9sZSB0cmVlIGhhcyBmb2N1cyBndWFyZHMgYXMgb3VyIGBEaWFsb2dgIHdpbGwgYmVcbiAgICAvLyB0aGUgbGFzdCBlbGVtZW50IGluIHRoZSBET00gKGJlYWN1c2Ugb2YgdGhlIGBQb3J0YWxgKVxuICAgICQ2N1VIbSR1c2VGb2N1c0d1YXJkcygpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRm9jdXNTY29wZSwge1xuICAgICAgICBhc0NoaWxkOiB0cnVlLFxuICAgICAgICBsb29wOiB0cnVlLFxuICAgICAgICB0cmFwcGVkOiB0cmFwRm9jdXMsXG4gICAgICAgIG9uTW91bnRBdXRvRm9jdXM6IG9uT3BlbkF1dG9Gb2N1cyxcbiAgICAgICAgb25Vbm1vdW50QXV0b0ZvY3VzOiBvbkNsb3NlQXV0b0ZvY3VzXG4gICAgfSwgLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kRGlzbWlzc2FibGVMYXllciwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJkaWFsb2dcIixcbiAgICAgICAgaWQ6IGNvbnRleHQuY29udGVudElkLFxuICAgICAgICBcImFyaWEtZGVzY3JpYmVkYnlcIjogY29udGV4dC5kZXNjcmlwdGlvbklkLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBjb250ZXh0LnRpdGxlSWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUoY29udGV4dC5vcGVuKVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSkpKSwgZmFsc2UpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dUaXRsZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVElUTEVfTkFNRSA9ICdEaWFsb2dUaXRsZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4udGl0bGVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmgyLCAkNjdVSG0kYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBpZDogY29udGV4dC50aXRsZUlkXG4gICAgfSwgdGl0bGVQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQxNmY3NjM4ZTRhMzRiOTA5LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRERVNDUklQVElPTl9OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uJztcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1ID0gLyojX19QVVJFX18qLyAkNjdVSG0kZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVEaWFsb2c6IF9fc2NvcGVEaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZURpYWxvZ0NvbnRleHQoJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERFU0NSSVBUSU9OX05BTUUsIF9fc2NvcGVEaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ2N1VIbSRjcmVhdGVFbGVtZW50KCQ2N1VIbSRQcmltaXRpdmUucCwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGNvbnRleHQuZGVzY3JpcHRpb25JZFxuICAgIH0sIGRlc2NyaXB0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkOTRlOTRjMmVjMmM5NTRkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBEaWFsb2dDbG9zZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRSA9ICdEaWFsb2dDbG9zZSc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyA9IC8qI19fUFVSRV9fKi8gJDY3VUhtJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlRGlhbG9nOiBfX3Njb3BlRGlhbG9nICwgLi4uY2xvc2VQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRDTE9TRV9OQU1FLCBfX3Njb3BlRGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNjdVSG0kY3JlYXRlRWxlbWVudCgkNjdVSG0kUHJpbWl0aXZlLmJ1dHRvbiwgJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIlxuICAgIH0sIGNsb3NlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uQ2xpY2s6ICQ2N1VIbSRjb21wb3NlRXZlbnRIYW5kbGVycyhwcm9wcy5vbkNsaWNrLCAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ0xPU0VfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRnZXRTdGF0ZShvcGVuKSB7XG4gICAgcmV0dXJuIG9wZW4gPyAnb3BlbicgOiAnY2xvc2VkJztcbn1cbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUgPSAnRGlhbG9nVGl0bGVXYXJuaW5nJztcbmNvbnN0IFskNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiwgJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0XSA9ICQ2N1VIbSRjcmVhdGVDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUsIHtcbiAgICBjb250ZW50TmFtZTogJDVkMzg1MGM0ZDBiNGU2YzckdmFyJENPTlRFTlRfTkFNRSxcbiAgICB0aXRsZU5hbWU6ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9OQU1FLFxuICAgIGRvY3NTbHVnOiAnZGlhbG9nJ1xufSk7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkVGl0bGVXYXJuaW5nID0gKHsgdGl0bGVJZDogdGl0bGVJZCAgfSk9PntcbiAgICBjb25zdCB0aXRsZVdhcm5pbmdDb250ZXh0ID0gJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0KCQ1ZDM4NTBjNGQwYjRlNmM3JHZhciRUSVRMRV9XQVJOSU5HX05BTUUpO1xuICAgIGNvbnN0IE1FU1NBR0UgPSBgXFxgJHt0aXRsZVdhcm5pbmdDb250ZXh0LmNvbnRlbnROYW1lfVxcYCByZXF1aXJlcyBhIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgIGZvciB0aGUgY29tcG9uZW50IHRvIGJlIGFjY2Vzc2libGUgZm9yIHNjcmVlbiByZWFkZXIgdXNlcnMuXG5cbklmIHlvdSB3YW50IHRvIGhpZGUgdGhlIFxcYCR7dGl0bGVXYXJuaW5nQ29udGV4dC50aXRsZU5hbWV9XFxgLCB5b3UgY2FuIHdyYXAgaXQgd2l0aCBvdXIgVmlzdWFsbHlIaWRkZW4gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzLyR7dGl0bGVXYXJuaW5nQ29udGV4dC5kb2NzU2x1Z31gO1xuICAgICQ2N1VIbSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKHRpdGxlSWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhc1RpdGxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGl0bGVJZCk7XG4gICAgICAgICAgICBpZiAoIWhhc1RpdGxlKSB0aHJvdyBuZXcgRXJyb3IoTUVTU0FHRSk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIHRpdGxlSWRcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FID0gJ0RpYWxvZ0Rlc2NyaXB0aW9uV2FybmluZyc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGVzY3JpcHRpb25XYXJuaW5nID0gKHsgY29udGVudFJlZjogY29udGVudFJlZiAsIGRlc2NyaXB0aW9uSWQ6IGRlc2NyaXB0aW9uSWQgIH0pPT57XG4gICAgY29uc3QgZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VXYXJuaW5nQ29udGV4dCgkNWQzODUwYzRkMGI0ZTZjNyR2YXIkREVTQ1JJUFRJT05fV0FSTklOR19OQU1FKTtcbiAgICBjb25zdCBNRVNTQUdFID0gYFdhcm5pbmc6IE1pc3NpbmcgXFxgRGVzY3JpcHRpb25cXGAgb3IgXFxgYXJpYS1kZXNjcmliZWRieT17dW5kZWZpbmVkfVxcYCBmb3IgeyR7ZGVzY3JpcHRpb25XYXJuaW5nQ29udGV4dC5jb250ZW50TmFtZX19LmA7XG4gICAgJDY3VUhtJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgZGVzY3JpYmVkQnlJZCA9IChfY29udGVudFJlZiRjdXJyZW50ID0gY29udGVudFJlZi5jdXJyZW50KSA9PT0gbnVsbCB8fCBfY29udGVudFJlZiRjdXJyZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudFJlZiRjdXJyZW50LmdldEF0dHJpYnV0ZSgnYXJpYS1kZXNjcmliZWRieScpOyAvLyBpZiB3ZSBoYXZlIGFuIGlkIGFuZCB0aGUgdXNlciBoYXNuJ3Qgc2V0IGFyaWEtZGVzY3JpYmVkYnk9e3VuZGVmaW5lZH1cbiAgICAgICAgaWYgKGRlc2NyaXB0aW9uSWQgJiYgZGVzY3JpYmVkQnlJZCkge1xuICAgICAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChkZXNjcmlwdGlvbklkKTtcbiAgICAgICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgTUVTU0FHRSxcbiAgICAgICAgY29udGVudFJlZixcbiAgICAgICAgZGVzY3JpcHRpb25JZFxuICAgIF0pO1xuICAgIHJldHVybiBudWxsO1xufTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDNkZGYyZDE3NGNlMDExNTM7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4O1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZGFkN2M5NTU0MmJhY2NlMDtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTc7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiNmQ5NTY1ZGUxZTA2OGNmO1xuY29uc3QgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOTtcbmNvbnN0ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQzOTNlZGM3OThjNDczNzlkID0gJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDk0ZTk0YzJlYzJjOTU0ZDU7XG5jb25zdCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSA9ICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjO1xuXG5cblxuXG5leHBvcnQgeyQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIGFzIGNyZWF0ZURpYWxvZ1Njb3BlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkM2RkZjJkMTc0Y2UwMTE1MyBhcyBEaWFsb2csICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQyZTFlMTEyMmNmMGNiYTg4IGFzIERpYWxvZ1RyaWdnZXIsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRkYWQ3Yzk1NTQyYmFjY2UwIGFzIERpYWxvZ1BvcnRhbCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJkMWQwNmM3OWJlMTllMTcgYXMgRGlhbG9nT3ZlcmxheSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YgYXMgRGlhbG9nQ29udGVudCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDE2Zjc2MzhlNGEzNGI5MDkgYXMgRGlhbG9nVGl0bGUsICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IGFzIERpYWxvZ0Rlc2NyaXB0aW9uLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZmJhMmZiN2NkNzgxYjdhYyBhcyBEaWFsb2dDbG9zZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgYXMgUG9ydGFsLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiBhcyBPdmVybGF5LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiBhcyBDb250ZW50LCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb24sICQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmMzljMmQxNjVjZDg2MWZlIGFzIENsb3NlLCAkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkNjliNjJhNDkzOTM5MTdkNiBhcyBXYXJuaW5nUHJvdmlkZXJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4MlwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4MilcIj5cbjxwYXRoIGQ9XCJNMTIgMTMuMDUzOEw2LjkyNjg5IDE4LjEyNjlDNi43ODg0NCAxOC4yNjU0IDYuNjE0NCAxOC4zMzYyIDYuNDA0NzkgMTguMzM5NEM2LjE5NTE5IDE4LjM0MjYgNi4wMTc5NSAxOC4yNzE4IDUuODczMDkgMTguMTI2OUM1LjcyODIgMTcuOTgyIDUuNjU1NzYgMTcuODA2NCA1LjY1NTc2IDE3LjZDNS42NTU3NiAxNy4zOTM2IDUuNzI4MiAxNy4yMTggNS44NzMwOSAxNy4wNzMxTDEwLjk0NjIgMTJMNS44NzMwOSA2LjkyNjg5QzUuNzM0NjIgNi43ODg0NCA1LjY2Mzc5IDYuNjE0NCA1LjY2MDU5IDYuNDA0NzlDNS42NTczNyA2LjE5NTE5IDUuNzI4MiA2LjAxNzk1IDUuODczMDkgNS44NzMwOUM2LjAxNzk1IDUuNzI4MiA2LjE5MzU5IDUuNjU1NzYgNi4zOTk5OSA1LjY1NTc2QzYuNjA2MzkgNS42NTU3NiA2Ljc4MjAyIDUuNzI4MiA2LjkyNjg5IDUuODczMDlMMTIgMTAuOTQ2MkwxNy4wNzMxIDUuODczMDlDMTcuMjExNSA1LjczNDYyIDE3LjM4NTYgNS42NjM3OSAxNy41OTUyIDUuNjYwNTlDMTcuODA0OCA1LjY1NzM3IDE3Ljk4MiA1LjcyODIgMTguMTI2OSA1Ljg3MzA5QzE4LjI3MTggNi4wMTc5NSAxOC4zNDQyIDYuMTkzNTkgMTguMzQ0MiA2LjM5OTk5QzE4LjM0NDIgNi42MDYzOSAxOC4yNzE4IDYuNzgyMDIgMTguMTI2OSA2LjkyNjg5TDEzLjA1MzggMTJMMTguMTI2OSAxNy4wNzMxQzE4LjI2NTQgMTcuMjExNSAxOC4zMzYyIDE3LjM4NTYgMTguMzM5NCAxNy41OTUyQzE4LjM0MjYgMTcuODA0OCAxOC4yNzE4IDE3Ljk4MiAxOC4xMjY5IDE4LjEyNjlDMTcuOTgyIDE4LjI3MTggMTcuODA2NCAxOC4zNDQyIDE3LjYgMTguMzQ0MkMxNy4zOTM2IDE4LjM0NDIgMTcuMjE4IDE4LjI3MTggMTcuMDczMSAxOC4xMjY5TDEyIDEzLjA1MzhaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsbnVsbCwiaW1wb3J0ICQ2dlloVSRyZWFjdCBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDZ2WWhVJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7U2xvdCBhcyAkNnZZaFUkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5cblxuXG5cblxuLy8gV2UgaGF2ZSByZXNvcnRlZCB0byByZXR1cm5pbmcgc2xvdHMgZGlyZWN0bHkgcmF0aGVyIHRoYW4gZXhwb3NpbmcgcHJpbWl0aXZlcyB0aGF0IGNhbiB0aGVuXG4vLyBiZSBzbG90dGVkIGxpa2UgYDxDb2xsZWN0aW9uSXRlbSBhcz17U2xvdH0+4oCmPC9Db2xsZWN0aW9uSXRlbT5gLlxuLy8gVGhpcyBpcyBiZWNhdXNlIHdlIGVuY291bnRlcmVkIGlzc3VlcyB3aXRoIGdlbmVyaWMgdHlwZXMgdGhhdCBjYW5ub3QgYmUgc3RhdGljYWxseSBhbmFseXNlZFxuLy8gZHVlIHRvIGNyZWF0aW5nIHRoZW0gZHluYW1pY2FsbHkgdmlhIGNyZWF0ZUNvbGxlY3Rpb24uXG5mdW5jdGlvbiAkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMihuYW1lKSB7XG4gICAgLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICogQ29sbGVjdGlvblByb3ZpZGVyXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0IFBST1ZJREVSX05BTUUgPSBuYW1lICsgJ0NvbGxlY3Rpb25Qcm92aWRlcic7XG4gICAgY29uc3QgW2NyZWF0ZUNvbGxlY3Rpb25Db250ZXh0LCBjcmVhdGVDb2xsZWN0aW9uU2NvcGVdID0gJDZ2WWhVJGNyZWF0ZUNvbnRleHRTY29wZShQUk9WSURFUl9OQU1FKTtcbiAgICBjb25zdCBbQ29sbGVjdGlvblByb3ZpZGVySW1wbCwgdXNlQ29sbGVjdGlvbkNvbnRleHRdID0gY3JlYXRlQ29sbGVjdGlvbkNvbnRleHQoUFJPVklERVJfTkFNRSwge1xuICAgICAgICBjb2xsZWN0aW9uUmVmOiB7XG4gICAgICAgICAgICBjdXJyZW50OiBudWxsXG4gICAgICAgIH0sXG4gICAgICAgIGl0ZW1NYXA6IG5ldyBNYXAoKVxuICAgIH0pO1xuICAgIGNvbnN0IENvbGxlY3Rpb25Qcm92aWRlciA9IChwcm9wcyk9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgcmVmID0gJDZ2WWhVJHJlYWN0LnVzZVJlZihudWxsKTtcbiAgICAgICAgY29uc3QgaXRlbU1hcCA9ICQ2dlloVSRyZWFjdC51c2VSZWYobmV3IE1hcCgpKS5jdXJyZW50O1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudChDb2xsZWN0aW9uUHJvdmlkZXJJbXBsLCB7XG4gICAgICAgICAgICBzY29wZTogc2NvcGUsXG4gICAgICAgICAgICBpdGVtTWFwOiBpdGVtTWFwLFxuICAgICAgICAgICAgY29sbGVjdGlvblJlZjogcmVmXG4gICAgICAgIH0sIGNoaWxkcmVuKTtcbiAgICB9O1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uUHJvdmlkZXIsIHtcbiAgICAgICAgZGlzcGxheU5hbWU6IFBST1ZJREVSX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uU2xvdFxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBDT0xMRUNUSU9OX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvblNsb3QnO1xuICAgIGNvbnN0IENvbGxlY3Rpb25TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gIH0gPSBwcm9wcztcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KENPTExFQ1RJT05fU0xPVF9OQU1FLCBzY29wZSk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZXh0LmNvbGxlY3Rpb25SZWYpO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICAgICAgfSwgY2hpbGRyZW4pO1xuICAgIH0pO1xuICAgIC8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbihDb2xsZWN0aW9uU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogQ09MTEVDVElPTl9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiBDb2xsZWN0aW9uSXRlbVxuICAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCBJVEVNX1NMT1RfTkFNRSA9IG5hbWUgKyAnQ29sbGVjdGlvbkl0ZW1TbG90JztcbiAgICBjb25zdCBJVEVNX0RBVEFfQVRUUiA9ICdkYXRhLXJhZGl4LWNvbGxlY3Rpb24taXRlbSc7XG4gICAgY29uc3QgQ29sbGVjdGlvbkl0ZW1TbG90ID0gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICAgICAgY29uc3QgeyBzY29wZTogc2NvcGUgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5pdGVtRGF0YSB9ID0gcHJvcHM7XG4gICAgICAgIGNvbnN0IHJlZiA9ICQ2dlloVSRyZWFjdC51c2VSZWYobnVsbCk7XG4gICAgICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ2dlloVSR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgICAgICBjb25zdCBjb250ZXh0ID0gdXNlQ29sbGVjdGlvbkNvbnRleHQoSVRFTV9TTE9UX05BTUUsIHNjb3BlKTtcbiAgICAgICAgJDZ2WWhVJHJlYWN0LnVzZUVmZmVjdCgoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5pdGVtTWFwLnNldChyZWYsIHtcbiAgICAgICAgICAgICAgICByZWY6IHJlZixcbiAgICAgICAgICAgICAgICAuLi5pdGVtRGF0YVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnZvaWQgY29udGV4dC5pdGVtTWFwLmRlbGV0ZShyZWYpXG4gICAgICAgICAgICA7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNnZZaFUkcmVhY3QuY3JlYXRlRWxlbWVudCgkNnZZaFUkU2xvdCwge1xuICAgICAgICAgICAgW0lURU1fREFUQV9BVFRSXTogJycsXG4gICAgICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgICAgICB9LCBjaGlsZHJlbik7XG4gICAgfSk7XG4gICAgLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKENvbGxlY3Rpb25JdGVtU2xvdCwge1xuICAgICAgICBkaXNwbGF5TmFtZTogSVRFTV9TTE9UX05BTUVcbiAgICB9KTtcbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgKiB1c2VDb2xsZWN0aW9uXG4gICAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uIHVzZUNvbGxlY3Rpb24oc2NvcGUpIHtcbiAgICAgICAgY29uc3QgY29udGV4dCA9IHVzZUNvbGxlY3Rpb25Db250ZXh0KG5hbWUgKyAnQ29sbGVjdGlvbkNvbnN1bWVyJywgc2NvcGUpO1xuICAgICAgICBjb25zdCBnZXRJdGVtcyA9ICQ2dlloVSRyZWFjdC51c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgY29uc3QgY29sbGVjdGlvbk5vZGUgPSBjb250ZXh0LmNvbGxlY3Rpb25SZWYuY3VycmVudDtcbiAgICAgICAgICAgIGlmICghY29sbGVjdGlvbk5vZGUpIHJldHVybiBbXTtcbiAgICAgICAgICAgIGNvbnN0IG9yZGVyZWROb2RlcyA9IEFycmF5LmZyb20oY29sbGVjdGlvbk5vZGUucXVlcnlTZWxlY3RvckFsbChgWyR7SVRFTV9EQVRBX0FUVFJ9XWApKTtcbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gQXJyYXkuZnJvbShjb250ZXh0Lml0ZW1NYXAudmFsdWVzKCkpO1xuICAgICAgICAgICAgY29uc3Qgb3JkZXJlZEl0ZW1zID0gaXRlbXMuc29ydCgoYSwgYik9Pm9yZGVyZWROb2Rlcy5pbmRleE9mKGEucmVmLmN1cnJlbnQpIC0gb3JkZXJlZE5vZGVzLmluZGV4T2YoYi5yZWYuY3VycmVudClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gb3JkZXJlZEl0ZW1zO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBjb250ZXh0LmNvbGxlY3Rpb25SZWYsXG4gICAgICAgICAgICBjb250ZXh0Lml0ZW1NYXBcbiAgICAgICAgXSk7XG4gICAgICAgIHJldHVybiBnZXRJdGVtcztcbiAgICB9XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgUHJvdmlkZXI6IENvbGxlY3Rpb25Qcm92aWRlcixcbiAgICAgICAgICAgIFNsb3Q6IENvbGxlY3Rpb25TbG90LFxuICAgICAgICAgICAgSXRlbVNsb3Q6IENvbGxlY3Rpb25JdGVtU2xvdFxuICAgICAgICB9LFxuICAgICAgICB1c2VDb2xsZWN0aW9uLFxuICAgICAgICBjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbiAgICBdO1xufVxuXG5cblxuXG5leHBvcnQgeyRlMDJhN2Q5Y2IxZGMxMjhjJGV4cG9ydCRjNzQxMjVhOGUzYWY2YmIyIGFzIGNyZWF0ZUNvbGxlY3Rpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0IHtjcmVhdGVDb250ZXh0IGFzICQ3R2pjZCRjcmVhdGVDb250ZXh0LCBjcmVhdGVFbGVtZW50IGFzICQ3R2pjZCRjcmVhdGVFbGVtZW50LCB1c2VDb250ZXh0IGFzICQ3R2pjZCR1c2VDb250ZXh0fSBmcm9tIFwicmVhY3RcIjtcblxuXG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSR2YXIkRGlyZWN0aW9uQ29udGV4dCA9IC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUNvbnRleHQodW5kZWZpbmVkKTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIERpcmVjdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYzc2MGMwOWZkZDU1ODM1MSA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IGRpcjogZGlyICwgY2hpbGRyZW46IGNoaWxkcmVuICB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdHamNkJGNyZWF0ZUVsZW1lbnQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQuUHJvdmlkZXIsIHtcbiAgICAgICAgdmFsdWU6IGRpclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzKGxvY2FsRGlyKSB7XG4gICAgY29uc3QgZ2xvYmFsRGlyID0gJDdHamNkJHVzZUNvbnRleHQoJGY2MzE2NjNkYjMyOTRhY2UkdmFyJERpcmVjdGlvbkNvbnRleHQpO1xuICAgIHJldHVybiBsb2NhbERpciB8fCBnbG9iYWxEaXIgfHwgJ2x0cic7XG59XG5jb25zdCAkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSA9ICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxO1xuXG5cblxuXG5leHBvcnQgeyRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRiMzkxMjZkNTFkOTRlNmYzIGFzIHVzZURpcmVjdGlvbiwgJGY2MzE2NjNkYjMyOTRhY2UkZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRmNjMxNjYzZGIzMjk0YWNlJGV4cG9ydCRjNzYwYzA5ZmRkNTU4MzUxIGFzIERpcmVjdGlvblByb3ZpZGVyfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkOThJeWUkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkOThJeWUkY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQ5OEl5ZSR1c2VSZWYsIHVzZVN0YXRlIGFzICQ5OEl5ZSR1c2VTdGF0ZSwgdXNlRWZmZWN0IGFzICQ5OEl5ZSR1c2VFZmZlY3QsIHVzZUNhbGxiYWNrIGFzICQ5OEl5ZSR1c2VDYWxsYmFja30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ5OEl5ZSRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7Y3JlYXRlQ29sbGVjdGlvbiBhcyAkOThJeWUkY3JlYXRlQ29sbGVjdGlvbn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb2xsZWN0aW9uXCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAkOThJeWUkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge3VzZUlkIGFzICQ5OEl5ZSR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDk4SXllJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ2FsbGJhY2tSZWYgYXMgJDk4SXllJHVzZUNhbGxiYWNrUmVmfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jYWxsYmFjay1yZWZcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDk4SXllJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQ5OEl5ZSR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMgPSAncm92aW5nRm9jdXNHcm91cC5vbkVudHJ5Rm9jdXMnO1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVWRU5UX09QVElPTlMgPSB7XG4gICAgYnViYmxlczogZmFsc2UsXG4gICAgY2FuY2VsYWJsZTogdHJ1ZVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFJvdmluZ0ZvY3VzR3JvdXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEdST1VQX05BTUUgPSAnUm92aW5nRm9jdXNHcm91cCc7XG5jb25zdCBbJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24sICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VDb2xsZWN0aW9uLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQ5OEl5ZSRjcmVhdGVDb2xsZWN0aW9uKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FKTtcbmNvbnN0IFskZDdiZGZiOWViMGZkZjMxMSR2YXIkY3JlYXRlUm92aW5nRm9jdXNHcm91cENvbnRleHQsICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjRdID0gJDk4SXllJGNyZWF0ZUNvbnRleHRTY29wZSgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSwgW1xuICAgICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGVcbl0pO1xuY29uc3QgWyRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c1Byb3ZpZGVyLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0XSA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRSk7XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwXG4gICAgfSwgLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlUm92aW5nRm9jdXNHcm91cFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzR3JvdXBJbXBsLCAkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJHZhciRSb3ZpbmdGb2N1c0dyb3VwSW1wbCA9IC8qI19fUFVSRV9fKi8gJDk4SXllJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlUm92aW5nRm9jdXNHcm91cDogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAgLCBvcmllbnRhdGlvbjogb3JpZW50YXRpb24gLCBsb29wOiBsb29wID0gZmFsc2UgLCBkaXI6IGRpciAsIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWRQcm9wICwgZGVmYXVsdEN1cnJlbnRUYWJTdG9wSWQ6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkICwgb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlOiBvbkN1cnJlbnRUYWJTdG9wSWRDaGFuZ2UgLCBvbkVudHJ5Rm9jdXM6IG9uRW50cnlGb2N1cyAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICQ5OEl5ZSR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDk4SXllJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHJlZik7XG4gICAgY29uc3QgZGlyZWN0aW9uID0gJDk4SXllJHVzZURpcmVjdGlvbihkaXIpO1xuICAgIGNvbnN0IFtjdXJyZW50VGFiU3RvcElkID0gbnVsbCwgc2V0Q3VycmVudFRhYlN0b3BJZF0gPSAkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBjdXJyZW50VGFiU3RvcElkUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDdXJyZW50VGFiU3RvcElkLFxuICAgICAgICBvbkNoYW5nZTogb25DdXJyZW50VGFiU3RvcElkQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW2lzVGFiYmluZ0JhY2tPdXQsIHNldElzVGFiYmluZ0JhY2tPdXRdID0gJDk4SXllJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBoYW5kbGVFbnRyeUZvY3VzID0gJDk4SXllJHVzZUNhbGxiYWNrUmVmKG9uRW50cnlGb2N1cyk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlUm92aW5nRm9jdXNHcm91cCk7XG4gICAgY29uc3QgaXNDbGlja0ZvY3VzUmVmID0gJDk4SXllJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgW2ZvY3VzYWJsZUl0ZW1zQ291bnQsIHNldEZvY3VzYWJsZUl0ZW1zQ291bnRdID0gJDk4SXllJHVzZVN0YXRlKDApO1xuICAgICQ5OEl5ZSR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgbm9kZSA9IHJlZi5jdXJyZW50O1xuICAgICAgICBpZiAobm9kZSkge1xuICAgICAgICAgICAgbm9kZS5hZGRFdmVudExpc3RlbmVyKCRkN2JkZmI5ZWIwZmRmMzExJHZhciRFTlRSWV9GT0NVUywgaGFuZGxlRW50cnlGb2N1cyk7XG4gICAgICAgICAgICByZXR1cm4gKCk9Pm5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcigkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMsIGhhbmRsZUVudHJ5Rm9jdXMpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZUVudHJ5Rm9jdXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOThJeWUkY3JlYXRlRWxlbWVudCgkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAsXG4gICAgICAgIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbixcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIGxvb3A6IGxvb3AsXG4gICAgICAgIGN1cnJlbnRUYWJTdG9wSWQ6IGN1cnJlbnRUYWJTdG9wSWQsXG4gICAgICAgIG9uSXRlbUZvY3VzOiAkOThJeWUkdXNlQ2FsbGJhY2soKHRhYlN0b3BJZCk9PnNldEN1cnJlbnRUYWJTdG9wSWQodGFiU3RvcElkKVxuICAgICAgICAsIFtcbiAgICAgICAgICAgIHNldEN1cnJlbnRUYWJTdG9wSWRcbiAgICAgICAgXSksXG4gICAgICAgIG9uSXRlbVNoaWZ0VGFiOiAkOThJeWUkdXNlQ2FsbGJhY2soKCk9PnNldElzVGFiYmluZ0JhY2tPdXQodHJ1ZSlcbiAgICAgICAgLCBbXSksXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbUFkZDogJDk4SXllJHVzZUNhbGxiYWNrKCgpPT5zZXRGb2N1c2FibGVJdGVtc0NvdW50KChwcmV2Q291bnQpPT5wcmV2Q291bnQgKyAxXG4gICAgICAgICAgICApXG4gICAgICAgICwgW10pLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6ICQ5OEl5ZSR1c2VDYWxsYmFjaygoKT0+c2V0Rm9jdXNhYmxlSXRlbXNDb3VudCgocHJldkNvdW50KT0+cHJldkNvdW50IC0gMVxuICAgICAgICAgICAgKVxuICAgICAgICAsIFtdKVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDk4SXllJGNyZWF0ZUVsZW1lbnQoJDk4SXllJFByaW1pdGl2ZS5kaXYsICQ5OEl5ZSRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHRhYkluZGV4OiBpc1RhYmJpbmdCYWNrT3V0IHx8IGZvY3VzYWJsZUl0ZW1zQ291bnQgPT09IDAgPyAtMSA6IDAsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIGdyb3VwUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICBvdXRsaW5lOiAnbm9uZScsXG4gICAgICAgICAgICAuLi5wcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoKT0+e1xuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Gb2N1czogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uRm9jdXMsIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIFdlIG5vcm1hbGx5IHdvdWxkbid0IG5lZWQgdGhpcyBjaGVjaywgYmVjYXVzZSB3ZSBhbHJlYWR5IGNoZWNrXG4gICAgICAgICAgICAvLyB0aGF0IHRoZSBmb2N1cyBpcyBvbiB0aGUgY3VycmVudCB0YXJnZXQgYW5kIG5vdCBidWJibGluZyB0byBpdC5cbiAgICAgICAgICAgIC8vIFdlIGRvIHRoaXMgYmVjYXVzZSBTYWZhcmkgZG9lc24ndCBmb2N1cyBidXR0b25zIHdoZW4gY2xpY2tlZCwgYW5kXG4gICAgICAgICAgICAvLyBpbnN0ZWFkLCB0aGUgd3JhcHBlciB3aWxsIGdldCBmb2N1c2VkIGFuZCBub3QgdGhyb3VnaCBhIGJ1YmJsaW5nIGV2ZW50LlxuICAgICAgICAgICAgY29uc3QgaXNLZXlib2FyZEZvY3VzID0gIWlzQ2xpY2tGb2N1c1JlZi5jdXJyZW50O1xuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCA9PT0gZXZlbnQuY3VycmVudFRhcmdldCAmJiBpc0tleWJvYXJkRm9jdXMgJiYgIWlzVGFiYmluZ0JhY2tPdXQpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeUZvY3VzRXZlbnQgPSBuZXcgQ3VzdG9tRXZlbnQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJEVOVFJZX0ZPQ1VTLCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyk7XG4gICAgICAgICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldC5kaXNwYXRjaEV2ZW50KGVudHJ5Rm9jdXNFdmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKCFlbnRyeUZvY3VzRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgYWN0aXZlSXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmFjdGl2ZVxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLmlkID09PSBjdXJyZW50VGFiU3RvcElkXG4gICAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZUl0ZW1zID0gW1xuICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlSXRlbSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRJdGVtLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaXRlbXNcbiAgICAgICAgICAgICAgICAgICAgXS5maWx0ZXIoQm9vbGVhbik7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbmRpZGF0ZU5vZGVzID0gY2FuZGlkYXRlSXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVOb2Rlcyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaXNDbGlja0ZvY3VzUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uQmx1cjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uQmx1ciwgKCk9PnNldElzVGFiYmluZ0JhY2tPdXQoZmFsc2UpXG4gICAgICAgIClcbiAgICB9KSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBSb3ZpbmdGb2N1c0dyb3VwSXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FID0gJ1JvdmluZ0ZvY3VzR3JvdXBJdGVtJztcbmNvbnN0ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRhYjlkZjdjNTNmZTg0NTQgPSAvKiNfX1BVUkVfXyovICQ5OEl5ZSRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXA6IF9fc2NvcGVSb3ZpbmdGb2N1c0dyb3VwICwgZm9jdXNhYmxlOiBmb2N1c2FibGUgPSB0cnVlICwgYWN0aXZlOiBhY3RpdmUgPSBmYWxzZSAsIHRhYlN0b3BJZDogdGFiU3RvcElkICwgLi4uaXRlbVByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBhdXRvSWQgPSAkOThJeWUkdXNlSWQoKTtcbiAgICBjb25zdCBpZCA9IHRhYlN0b3BJZCB8fCBhdXRvSWQ7XG4gICAgY29uc3QgY29udGV4dCA9ICRkN2JkZmI5ZWIwZmRmMzExJHZhciR1c2VSb3ZpbmdGb2N1c0NvbnRleHQoJGQ3YmRmYjllYjBmZGYzMTEkdmFyJElURU1fTkFNRSwgX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IGlzQ3VycmVudFRhYlN0b3AgPSBjb250ZXh0LmN1cnJlbnRUYWJTdG9wSWQgPT09IGlkO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVJvdmluZ0ZvY3VzR3JvdXApO1xuICAgIGNvbnN0IHsgb25Gb2N1c2FibGVJdGVtQWRkOiBvbkZvY3VzYWJsZUl0ZW1BZGQgLCBvbkZvY3VzYWJsZUl0ZW1SZW1vdmU6IG9uRm9jdXNhYmxlSXRlbVJlbW92ZSAgfSA9IGNvbnRleHQ7XG4gICAgJDk4SXllJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoZm9jdXNhYmxlKSB7XG4gICAgICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQoKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+b25Gb2N1c2FibGVJdGVtUmVtb3ZlKClcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgZm9jdXNhYmxlLFxuICAgICAgICBvbkZvY3VzYWJsZUl0ZW1BZGQsXG4gICAgICAgIG9uRm9jdXNhYmxlSXRlbVJlbW92ZVxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCRkN2JkZmI5ZWIwZmRmMzExJHZhciRDb2xsZWN0aW9uLkl0ZW1TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUm92aW5nRm9jdXNHcm91cCxcbiAgICAgICAgaWQ6IGlkLFxuICAgICAgICBmb2N1c2FibGU6IGZvY3VzYWJsZSxcbiAgICAgICAgYWN0aXZlOiBhY3RpdmVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ5OEl5ZSRjcmVhdGVFbGVtZW50KCQ5OEl5ZSRQcmltaXRpdmUuc3BhbiwgJDk4SXllJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdGFiSW5kZXg6IGlzQ3VycmVudFRhYlN0b3AgPyAwIDogLTEsXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgaXRlbVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmLFxuICAgICAgICBvbk1vdXNlRG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uTW91c2VEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXZSBwcmV2ZW50IGZvY3VzaW5nIG5vbi1mb2N1c2FibGUgaXRlbXMgb24gYG1vdXNlZG93bmAuXG4gICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGUgaXRlbSBoYXMgdGFiSW5kZXg9ey0xfSwgdGhhdCBvbmx5IG1lYW5zIHRha2UgaXQgb3V0IG9mIHRoZSB0YWIgb3JkZXIuXG4gICAgICAgICAgICBpZiAoIWZvY3VzYWJsZSkgZXZlbnQucHJldmVudERlZmF1bHQoKTsgLy8gU2FmYXJpIGRvZXNuJ3QgZm9jdXMgYSBidXR0b24gd2hlbiBjbGlja2VkIHNvIHdlIHJ1biBvdXIgbG9naWMgb24gbW91c2Vkb3duIGFsc29cbiAgICAgICAgICAgIGVsc2UgY29udGV4dC5vbkl0ZW1Gb2N1cyhpZCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOThJeWUkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PmNvbnRleHQub25JdGVtRm9jdXMoaWQpXG4gICAgICAgICksXG4gICAgICAgIG9uS2V5RG93bjogJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicgJiYgZXZlbnQuc2hpZnRLZXkpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uSXRlbVNoaWZ0VGFiKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGV2ZW50LnRhcmdldCAhPT0gZXZlbnQuY3VycmVudFRhcmdldCkgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgZm9jdXNJbnRlbnQgPSAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQoZXZlbnQsIGNvbnRleHQub3JpZW50YXRpb24sIGNvbnRleHQuZGlyKTtcbiAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtcyA9IGdldEl0ZW1zKCkuZmlsdGVyKChpdGVtKT0+aXRlbS5mb2N1c2FibGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGxldCBjYW5kaWRhdGVOb2RlcyA9IGl0ZW1zLm1hcCgoaXRlbSk9Pml0ZW0ucmVmLmN1cnJlbnRcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ2xhc3QnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoZm9jdXNJbnRlbnQgPT09ICdwcmV2JyB8fCBmb2N1c0ludGVudCA9PT0gJ25leHQnKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChmb2N1c0ludGVudCA9PT0gJ3ByZXYnKSBjYW5kaWRhdGVOb2Rlcy5yZXZlcnNlKCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IGNhbmRpZGF0ZU5vZGVzLmluZGV4T2YoZXZlbnQuY3VycmVudFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIGNhbmRpZGF0ZU5vZGVzID0gY29udGV4dC5sb29wID8gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJHdyYXBBcnJheShjYW5kaWRhdGVOb2RlcywgY3VycmVudEluZGV4ICsgMSkgOiBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+JGQ3YmRmYjllYjBmZGYzMTEkdmFyJGZvY3VzRmlyc3QoY2FuZGlkYXRlTm9kZXMpXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkSVRFTV9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gLy8gcHJldHRpZXItaWdub3JlXG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQgPSB7XG4gICAgQXJyb3dMZWZ0OiAncHJldicsXG4gICAgQXJyb3dVcDogJ3ByZXYnLFxuICAgIEFycm93UmlnaHQ6ICduZXh0JyxcbiAgICBBcnJvd0Rvd246ICduZXh0JyxcbiAgICBQYWdlVXA6ICdmaXJzdCcsXG4gICAgSG9tZTogJ2ZpcnN0JyxcbiAgICBQYWdlRG93bjogJ2xhc3QnLFxuICAgIEVuZDogJ2xhc3QnXG59O1xuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGtleSwgZGlyKSB7XG4gICAgaWYgKGRpciAhPT0gJ3J0bCcpIHJldHVybiBrZXk7XG4gICAgcmV0dXJuIGtleSA9PT0gJ0Fycm93TGVmdCcgPyAnQXJyb3dSaWdodCcgOiBrZXkgPT09ICdBcnJvd1JpZ2h0JyA/ICdBcnJvd0xlZnQnIDoga2V5O1xufVxuZnVuY3Rpb24gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldEZvY3VzSW50ZW50KGV2ZW50LCBvcmllbnRhdGlvbiwgZGlyKSB7XG4gICAgY29uc3Qga2V5ID0gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJGdldERpcmVjdGlvbkF3YXJlS2V5KGV2ZW50LmtleSwgZGlyKTtcbiAgICBpZiAob3JpZW50YXRpb24gPT09ICd2ZXJ0aWNhbCcgJiYgW1xuICAgICAgICAnQXJyb3dMZWZ0JyxcbiAgICAgICAgJ0Fycm93UmlnaHQnXG4gICAgXS5pbmNsdWRlcyhrZXkpKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgIGlmIChvcmllbnRhdGlvbiA9PT0gJ2hvcml6b250YWwnICYmIFtcbiAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAnQXJyb3dEb3duJ1xuICAgIF0uaW5jbHVkZXMoa2V5KSkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICByZXR1cm4gJGQ3YmRmYjllYjBmZGYzMTEkdmFyJE1BUF9LRVlfVE9fRk9DVVNfSU5URU5UW2tleV07XG59XG5mdW5jdGlvbiAkZDdiZGZiOWViMGZkZjMxMSR2YXIkZm9jdXNGaXJzdChjYW5kaWRhdGVzKSB7XG4gICAgY29uc3QgUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQgPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50O1xuICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAvLyBpZiBmb2N1cyBpcyBhbHJlYWR5IHdoZXJlIHdlIHdhbnQgdG8gZ28sIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBnb2luZyB0aHJvdWdoIHRoZSBjYW5kaWRhdGVzXG4gICAgICAgIGlmIChjYW5kaWRhdGUgPT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICB9XG59XG4vKipcbiAqIFdyYXBzIGFuIGFycmF5IGFyb3VuZCBpdHNlbGYgYXQgYSBnaXZlbiBzdGFydCBpbmRleFxuICogRXhhbXBsZTogYHdyYXBBcnJheShbJ2EnLCAnYicsICdjJywgJ2QnXSwgMikgPT09IFsnYycsICdkJywgJ2EnLCAnYiddYFxuICovIGZ1bmN0aW9uICRkN2JkZmI5ZWIwZmRmMzExJHZhciR3cmFwQXJyYXkoYXJyYXksIHN0YXJ0SW5kZXgpIHtcbiAgICByZXR1cm4gYXJyYXkubWFwKChfLCBpbmRleCk9PmFycmF5WyhzdGFydEluZGV4ICsgaW5kZXgpICUgYXJyYXkubGVuZ3RoXVxuICAgICk7XG59XG5jb25zdCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCQ4Njk5ZjdjOGFmMTQ4MzM4O1xuY29uc3QgJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIgPSAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0O1xuXG5cblxuXG5leHBvcnQgeyRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQgYXMgY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkODY5OWY3YzhhZjE0ODMzOCBhcyBSb3ZpbmdGb2N1c0dyb3VwLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYWI5ZGY3YzUzZmU4NDU0IGFzIFJvdmluZ0ZvY3VzR3JvdXBJdGVtLCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkZDdiZGZiOWViMGZkZjMxMSRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtfTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsImltcG9ydCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkMUlIemskZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkMUlIemskY3JlYXRlRWxlbWVudCwgdXNlUmVmIGFzICQxSUh6ayR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkMUlIemskdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDFJSHprJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJDFJSHprJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge2NyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSBhcyAkMUlIemskY3JlYXRlUm92aW5nRm9jdXNHcm91cFNjb3BlLCBSb290IGFzICQxSUh6ayRSb290LCBJdGVtIGFzICQxSUh6ayRJdGVtfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXJvdmluZy1mb2N1c1wiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkMUlIemskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQxSUh6ayRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge3VzZURpcmVjdGlvbiBhcyAkMUlIemskdXNlRGlyZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpcmVjdGlvblwiO1xuaW1wb3J0IHt1c2VDb250cm9sbGFibGVTdGF0ZSBhcyAkMUlIemskdXNlQ29udHJvbGxhYmxlU3RhdGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNvbnRyb2xsYWJsZS1zdGF0ZVwiO1xuaW1wb3J0IHt1c2VJZCBhcyAkMUlIemskdXNlSWR9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtaWRcIjtcblxuXG5cblxuXG5cblxuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSA9ICdUYWJzJztcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkY3JlYXRlVGFic0NvbnRleHQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQzNTVmNWJkMjA5ZDdiMTNhXSA9ICQxSUh6ayRjcmVhdGVDb250ZXh0U2NvcGUoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRBQlNfTkFNRSwgW1xuICAgICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGVcbl0pO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQxSUh6ayRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoKTtcbmNvbnN0IFskNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHRdID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJTX05BTUUpO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGIyNTM5YmVkNTAyM2MyMWMgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9yaWVudGF0aW9uOiBvcmllbnRhdGlvbiA9ICdob3Jpem9udGFsJyAsIGRpcjogZGlyICwgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlID0gJ2F1dG9tYXRpYycgLCAuLi50YWJzUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpcmVjdGlvbiA9ICQxSUh6ayR1c2VEaXJlY3Rpb24oZGlyKTtcbiAgICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9ICQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSh7XG4gICAgICAgIHByb3A6IHZhbHVlUHJvcCxcbiAgICAgICAgb25DaGFuZ2U6IG9uVmFsdWVDaGFuZ2UsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWVcbiAgICB9KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVGFicyxcbiAgICAgICAgYmFzZUlkOiAkMUlIemskdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3JpZW50YXRpb246IG9yaWVudGF0aW9uLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgYWN0aXZhdGlvbk1vZGU6IGFjdGl2YXRpb25Nb2RlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgZGlyOiBkaXJlY3Rpb24sXG4gICAgICAgIFwiZGF0YS1vcmllbnRhdGlvblwiOiBvcmllbnRhdGlvblxuICAgIH0sIHRhYnNQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYywge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNMaXN0XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FID0gJ1RhYnNMaXN0JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIGxvb3A6IGxvb3AgPSB0cnVlICwgLi4ubGlzdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0KCQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FLCBfX3Njb3BlVGFicyk7XG4gICAgY29uc3Qgcm92aW5nRm9jdXNHcm91cFNjb3BlID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVJvdmluZ0ZvY3VzR3JvdXBTY29wZShfX3Njb3BlVGFicyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJFJvb3QsICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgb3JpZW50YXRpb246IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgIGRpcjogY29udGV4dC5kaXIsXG4gICAgICAgIGxvb3A6IGxvb3BcbiAgICB9KSwgLyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJ0YWJsaXN0XCIsXG4gICAgICAgIFwiYXJpYS1vcmllbnRhdGlvblwiOiBjb250ZXh0Lm9yaWVudGF0aW9uXG4gICAgfSwgbGlzdFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUQUJfTElTVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRhYnNUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRUUklHR0VSX05BTUUgPSAnVGFic1RyaWdnZXInO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEgPSAvKiNfX1BVUkVfXyovICQxSUh6ayRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRhYnM6IF9fc2NvcGVUYWJzICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHJvdmluZ0ZvY3VzR3JvdXBTY29wZSA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUoX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDFJSHprJGNyZWF0ZUVsZW1lbnQoJDFJSHprJEl0ZW0sICQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCByb3ZpbmdGb2N1c0dyb3VwU2NvcGUsIHtcbiAgICAgICAgZm9jdXNhYmxlOiAhZGlzYWJsZWQsXG4gICAgICAgIGFjdGl2ZTogaXNTZWxlY3RlZFxuICAgIH0pLCAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmltaXRpdmUuYnV0dG9uLCAkMUlIemskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInRhYlwiLFxuICAgICAgICBcImFyaWEtc2VsZWN0ZWRcIjogaXNTZWxlY3RlZCxcbiAgICAgICAgXCJhcmlhLWNvbnRyb2xzXCI6IGNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGlzU2VsZWN0ZWQgPyAnYWN0aXZlJyA6ICdpbmFjdGl2ZScsXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIGlkOiB0cmlnZ2VySWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIG9uTW91c2VEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Nb3VzZURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIG9ubHkgY2FsbCBoYW5kbGVyIGlmIGl0J3MgdGhlIGxlZnQgYnV0dG9uIChtb3VzZWRvd24gZ2V0cyB0cmlnZ2VyZWQgYnkgYWxsIG1vdXNlIGJ1dHRvbnMpXG4gICAgICAgICAgICAvLyBidXQgbm90IHdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIHByZXNzZWQgKGF2b2lkaW5nIE1hY09TIHJpZ2h0IGNsaWNrKVxuICAgICAgICAgICAgaWYgKCFkaXNhYmxlZCAmJiBldmVudC5idXR0b24gPT09IDAgJiYgZXZlbnQuY3RybEtleSA9PT0gZmFsc2UpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgICAgICBlbHNlIC8vIHByZXZlbnQgZm9jdXMgdG8gYXZvaWQgYWNjaWRlbnRhbCBhY3RpdmF0aW9uXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICcgJyxcbiAgICAgICAgICAgICAgICAnRW50ZXInXG4gICAgICAgICAgICBdLmluY2x1ZGVzKGV2ZW50LmtleSkpIGNvbnRleHQub25WYWx1ZUNoYW5nZSh2YWx1ZSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkMUlIemskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIC8vIGhhbmRsZSBcImF1dG9tYXRpY1wiIGFjdGl2YXRpb24gaWYgbmVjZXNzYXJ5XG4gICAgICAgICAgICAvLyBpZS4gYWN0aXZhdGUgdGFiIGZvbGxvd2luZyBmb2N1c1xuICAgICAgICAgICAgY29uc3QgaXNBdXRvbWF0aWNBY3RpdmF0aW9uID0gY29udGV4dC5hY3RpdmF0aW9uTW9kZSAhPT0gJ21hbnVhbCc7XG4gICAgICAgICAgICBpZiAoIWlzU2VsZWN0ZWQgJiYgIWRpc2FibGVkICYmIGlzQXV0b21hdGljQWN0aXZhdGlvbikgY29udGV4dC5vblZhbHVlQ2hhbmdlKHZhbHVlKTtcbiAgICAgICAgfSlcbiAgICB9KSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDgxMTRiOWZkZmRmOWYzYmEsIHtcbiAgICBkaXNwbGF5TmFtZTogJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUYWJzQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FID0gJ1RhYnNDb250ZW50JztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZDkwNWQ3MGU4ZmQyZWJiID0gLyojX19QVVJFX18qLyAkMUlIemskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUYWJzOiBfX3Njb3BlVGFicyAsIHZhbHVlOiB2YWx1ZSAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCAuLi5jb250ZW50UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkdXNlVGFic0NvbnRleHQoJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVRhYnMpO1xuICAgIGNvbnN0IHRyaWdnZXJJZCA9ICQ2OWNiMzBiYjAwMTdkZjA1JHZhciRtYWtlVHJpZ2dlcklkKGNvbnRleHQuYmFzZUlkLCB2YWx1ZSk7XG4gICAgY29uc3QgY29udGVudElkID0gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoY29udGV4dC5iYXNlSWQsIHZhbHVlKTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gdmFsdWUgPT09IGNvbnRleHQudmFsdWU7XG4gICAgY29uc3QgaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiA9ICQxSUh6ayR1c2VSZWYoaXNTZWxlY3RlZCk7XG4gICAgJDFJSHprJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCByQUYgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCk9PmlzTW91bnRBbmltYXRpb25QcmV2ZW50ZWRSZWYuY3VycmVudCA9IGZhbHNlXG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiAoKT0+Y2FuY2VsQW5pbWF0aW9uRnJhbWUockFGKVxuICAgICAgICA7XG4gICAgfSwgW10pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQxSUh6ayRjcmVhdGVFbGVtZW50KCQxSUh6ayRQcmVzZW5jZSwge1xuICAgICAgICBwcmVzZW50OiBmb3JjZU1vdW50IHx8IGlzU2VsZWN0ZWRcbiAgICB9LCAoeyBwcmVzZW50OiBwcmVzZW50ICB9KT0+LyojX19QVVJFX18qLyAkMUlIemskY3JlYXRlRWxlbWVudCgkMUlIemskUHJpbWl0aXZlLmRpdiwgJDFJSHprJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgICAgIFwiZGF0YS1zdGF0ZVwiOiBpc1NlbGVjdGVkID8gJ2FjdGl2ZScgOiAnaW5hY3RpdmUnLFxuICAgICAgICAgICAgXCJkYXRhLW9yaWVudGF0aW9uXCI6IGNvbnRleHQub3JpZW50YXRpb24sXG4gICAgICAgICAgICByb2xlOiBcInRhYnBhbmVsXCIsXG4gICAgICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiB0cmlnZ2VySWQsXG4gICAgICAgICAgICBoaWRkZW46ICFwcmVzZW50LFxuICAgICAgICAgICAgaWQ6IGNvbnRlbnRJZCxcbiAgICAgICAgICAgIHRhYkluZGV4OiAwXG4gICAgICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgICAgIGFuaW1hdGlvbkR1cmF0aW9uOiBpc01vdW50QW5pbWF0aW9uUHJldmVudGVkUmVmLmN1cnJlbnQgPyAnMHMnIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLCBwcmVzZW50ICYmIGNoaWxkcmVuKVxuICAgICk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYiwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjljYjMwYmIwMDE3ZGYwNSR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LXRyaWdnZXItJHt2YWx1ZX1gO1xufVxuZnVuY3Rpb24gJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VDb250ZW50SWQoYmFzZUlkLCB2YWx1ZSkge1xuICAgIHJldHVybiBgJHtiYXNlSWR9LWNvbnRlbnQtJHt2YWx1ZX1gO1xufVxuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYjI1MzliZWQ1MDIzYzIxYztcbmNvbnN0ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1ID0gJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDk3MTJkMjJlZGMwZDc4YzE7XG5jb25zdCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ4MTE0YjlmZGZkZjlmM2JhO1xuY29uc3QgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkYmQ5MDVkNzBlOGZkMmViYjtcblxuXG5cblxuZXhwb3J0IHskNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkMzU1ZjViZDIwOWQ3YjEzYSBhcyBjcmVhdGVUYWJzU2NvcGUsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiMjUzOWJlZDUwMjNjMjFjIGFzIFRhYnMsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ5NzEyZDIyZWRjMGQ3OGMxIGFzIFRhYnNMaXN0LCAkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkODExNGI5ZmRmZGY5ZjNiYSBhcyBUYWJzVHJpZ2dlciwgJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JGJkOTA1ZDcwZThmZDJlYmIgYXMgVGFic0NvbnRlbnQsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IGFzIExpc3QsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnR9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJpbXBvcnQge3VzZVJlZiBhcyAkOEx2dkskdXNlUmVmLCB1c2VNZW1vIGFzICQ4THZ2SyR1c2VNZW1vfSBmcm9tIFwicmVhY3RcIjtcblxuXG5mdW5jdGlvbiAkMDEwYzI5MTNkYmQyZmUzZCRleHBvcnQkNWNhZTM2MWFkODJkY2U4Yih2YWx1ZSkge1xuICAgIGNvbnN0IHJlZiA9ICQ4THZ2SyR1c2VSZWYoe1xuICAgICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICAgIHByZXZpb3VzOiB2YWx1ZVxuICAgIH0pOyAvLyBXZSBjb21wYXJlIHZhbHVlcyBiZWZvcmUgbWFraW5nIGFuIHVwZGF0ZSB0byBlbnN1cmUgdGhhdFxuICAgIC8vIGEgY2hhbmdlIGhhcyBiZWVuIG1hZGUuIFRoaXMgZW5zdXJlcyB0aGUgcHJldmlvdXMgdmFsdWUgaXNcbiAgICAvLyBwZXJzaXN0ZWQgY29ycmVjdGx5IGJldHdlZW4gcmVuZGVycy5cbiAgICByZXR1cm4gJDhMdnZLJHVzZU1lbW8oKCk9PntcbiAgICAgICAgaWYgKHJlZi5jdXJyZW50LnZhbHVlICE9PSB2YWx1ZSkge1xuICAgICAgICAgICAgcmVmLmN1cnJlbnQucHJldmlvdXMgPSByZWYuY3VycmVudC52YWx1ZTtcbiAgICAgICAgICAgIHJlZi5jdXJyZW50LnZhbHVlID0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlZi5jdXJyZW50LnByZXZpb3VzO1xuICAgIH0sIFtcbiAgICAgICAgdmFsdWVcbiAgICBdKTtcbn1cblxuXG5cblxuZXhwb3J0IHskMDEwYzI5MTNkYmQyZmUzZCRleHBvcnQkNWNhZTM2MWFkODJkY2U4YiBhcyB1c2VQcmV2aW91c307XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQge3VzZVN0YXRlIGFzICQ5Z3lHUiR1c2VTdGF0ZX0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkOWd5R1IkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5cblxuXG5mdW5jdGlvbiAkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOChlbGVtZW50KSB7XG4gICAgY29uc3QgW3NpemUsIHNldFNpemVdID0gJDlneUdSJHVzZVN0YXRlKHVuZGVmaW5lZCk7XG4gICAgJDlneUdSJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoZWxlbWVudCkge1xuICAgICAgICAgICAgLy8gcHJvdmlkZSBzaXplIGFzIGVhcmx5IGFzIHBvc3NpYmxlXG4gICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICB3aWR0aDogZWxlbWVudC5vZmZzZXRXaWR0aCxcbiAgICAgICAgICAgICAgICBoZWlnaHQ6IGVsZW1lbnQub2Zmc2V0SGVpZ2h0XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IHJlc2l6ZU9ic2VydmVyID0gbmV3IFJlc2l6ZU9ic2VydmVyKChlbnRyaWVzKT0+e1xuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShlbnRyaWVzKSkgcmV0dXJuO1xuICAgICAgICAgICAgICAgICAvLyBTaW5jZSB3ZSBvbmx5IG9ic2VydmUgdGhlIG9uZSBlbGVtZW50LCB3ZSBkb24ndCBuZWVkIHRvIGxvb3Agb3ZlciB0aGVcbiAgICAgICAgICAgICAgICAvLyBhcnJheVxuICAgICAgICAgICAgICAgIGlmICghZW50cmllcy5sZW5ndGgpIHJldHVybjtcbiAgICAgICAgICAgICAgICBjb25zdCBlbnRyeSA9IGVudHJpZXNbMF07XG4gICAgICAgICAgICAgICAgbGV0IHdpZHRoO1xuICAgICAgICAgICAgICAgIGxldCBoZWlnaHQ7XG4gICAgICAgICAgICAgICAgaWYgKCdib3JkZXJCb3hTaXplJyBpbiBlbnRyeSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBib3JkZXJTaXplRW50cnkgPSBlbnRyeVsnYm9yZGVyQm94U2l6ZSddOyAvLyBpcm9uIG91dCBkaWZmZXJlbmNlcyBiZXR3ZWVuIGJyb3dzZXJzXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvcmRlclNpemUgPSBBcnJheS5pc0FycmF5KGJvcmRlclNpemVFbnRyeSkgPyBib3JkZXJTaXplRW50cnlbMF0gOiBib3JkZXJTaXplRW50cnk7XG4gICAgICAgICAgICAgICAgICAgIHdpZHRoID0gYm9yZGVyU2l6ZVsnaW5saW5lU2l6ZSddO1xuICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSBib3JkZXJTaXplWydibG9ja1NpemUnXTtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAvLyBmb3IgYnJvd3NlcnMgdGhhdCBkb24ndCBzdXBwb3J0IGBib3JkZXJCb3hTaXplYFxuICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYWxjdWxhdGUgaXQgb3Vyc2VsdmVzIHRvIGdldCB0aGUgY29ycmVjdCBib3JkZXIgYm94LlxuICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IGVsZW1lbnQub2Zmc2V0V2lkdGg7XG4gICAgICAgICAgICAgICAgICAgIGhlaWdodCA9IGVsZW1lbnQub2Zmc2V0SGVpZ2h0O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBzZXRTaXplKHtcbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6IHdpZHRoLFxuICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6IGhlaWdodFxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXNpemVPYnNlcnZlci5vYnNlcnZlKGVsZW1lbnQsIHtcbiAgICAgICAgICAgICAgICBib3g6ICdib3JkZXItYm94J1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PnJlc2l6ZU9ic2VydmVyLnVub2JzZXJ2ZShlbGVtZW50KVxuICAgICAgICAgICAgO1xuICAgICAgICB9IGVsc2UgLy8gV2Ugb25seSB3YW50IHRvIHJlc2V0IHRvIGB1bmRlZmluZWRgIHdoZW4gdGhlIGVsZW1lbnQgYmVjb21lcyBgbnVsbGAsXG4gICAgICAgIC8vIG5vdCBpZiBpdCBjaGFuZ2VzIHRvIGFub3RoZXIgZWxlbWVudC5cbiAgICAgICAgc2V0U2l6ZSh1bmRlZmluZWQpO1xuICAgIH0sIFtcbiAgICAgICAgZWxlbWVudFxuICAgIF0pO1xuICAgIHJldHVybiBzaXplO1xufVxuXG5cblxuXG5leHBvcnQgeyRkYjZjMzQ4NTE1MGI4ZTY2JGV4cG9ydCQxYWI3YWU3MTQ2OThjNGI4IGFzIHVzZVNpemV9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRpclBJbCRmb3J3YXJkUmVmLCB1c2VTdGF0ZSBhcyAkaXJQSWwkdXNlU3RhdGUsIHVzZVJlZiBhcyAkaXJQSWwkdXNlUmVmLCBjcmVhdGVFbGVtZW50IGFzICRpclBJbCRjcmVhdGVFbGVtZW50LCB1c2VFZmZlY3QgYXMgJGlyUElsJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICRpclBJbCRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICRpclBJbCR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJGlyUElsJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7dXNlUHJldmlvdXMgYXMgJGlyUElsJHVzZVByZXZpb3VzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1wcmV2aW91c1wiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRpclBJbCR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkaXJQSWwkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cblxuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTd2l0Y2hcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FID0gJ1N3aXRjaCc7XG5jb25zdCBbJDZiZTQ5NjZmZDliYmM2OTgkdmFyJGNyZWF0ZVN3aXRjaENvbnRleHQsICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRjZjdmNWYxN2Y2OWNiZDQzXSA9ICRpclBJbCRjcmVhdGVDb250ZXh0U2NvcGUoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FKTtcbmNvbnN0IFskNmJlNDk2NmZkOWJiYzY5OCR2YXIkU3dpdGNoUHJvdmlkZXIsICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciR1c2VTd2l0Y2hDb250ZXh0XSA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0KCQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSk7XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiA9IC8qI19fUFVSRV9fKi8gJGlyUElsJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU3dpdGNoOiBfX3Njb3BlU3dpdGNoICwgbmFtZTogbmFtZSAsIGNoZWNrZWQ6IGNoZWNrZWRQcm9wICwgZGVmYXVsdENoZWNrZWQ6IGRlZmF1bHRDaGVja2VkICwgcmVxdWlyZWQ6IHJlcXVpcmVkICwgZGlzYWJsZWQ6IGRpc2FibGVkICwgdmFsdWU6IHZhbHVlID0gJ29uJyAsIG9uQ2hlY2tlZENoYW5nZTogb25DaGVja2VkQ2hhbmdlICwgLi4uc3dpdGNoUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtidXR0b24sIHNldEJ1dHRvbl0gPSAkaXJQSWwkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJGlyUElsJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0QnV0dG9uKG5vZGUpXG4gICAgKTtcbiAgICBjb25zdCBoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiA9ICRpclBJbCR1c2VSZWYoZmFsc2UpOyAvLyBXZSBzZXQgdGhpcyB0byB0cnVlIGJ5IGRlZmF1bHQgc28gdGhhdCBldmVudHMgYnViYmxlIHRvIGZvcm1zIHdpdGhvdXQgSlMgKFNTUilcbiAgICBjb25zdCBpc0Zvcm1Db250cm9sID0gYnV0dG9uID8gQm9vbGVhbihidXR0b24uY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgY29uc3QgW2NoZWNrZWQgPSBmYWxzZSwgc2V0Q2hlY2tlZF0gPSAkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBjaGVja2VkUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRDaGVja2VkLFxuICAgICAgICBvbkNoYW5nZTogb25DaGVja2VkQ2hhbmdlXG4gICAgfSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGlyUElsJGNyZWF0ZUVsZW1lbnQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU3dpdGNoLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCRpclBJbCRQcmltaXRpdmUuYnV0dG9uLCAkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICB0eXBlOiBcImJ1dHRvblwiLFxuICAgICAgICByb2xlOiBcInN3aXRjaFwiLFxuICAgICAgICBcImFyaWEtY2hlY2tlZFwiOiBjaGVja2VkLFxuICAgICAgICBcImFyaWEtcmVxdWlyZWRcIjogcmVxdWlyZWQsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY2hlY2tlZCksXG4gICAgICAgIFwiZGF0YS1kaXNhYmxlZFwiOiBkaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHZhbHVlOiB2YWx1ZVxuICAgIH0sIHN3aXRjaFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkNsaWNrOiAkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgKGV2ZW50KT0+e1xuICAgICAgICAgICAgc2V0Q2hlY2tlZCgocHJldkNoZWNrZWQpPT4hcHJldkNoZWNrZWRcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoaXNGb3JtQ29udHJvbCkge1xuICAgICAgICAgICAgICAgIGhhc0NvbnN1bWVyU3RvcHBlZFByb3BhZ2F0aW9uUmVmLmN1cnJlbnQgPSBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpOyAvLyBpZiBzd2l0Y2ggaXMgaW4gYSBmb3JtLCBzdG9wIHByb3BhZ2F0aW9uIGZyb20gdGhlIGJ1dHRvbiBzbyB0aGF0IHdlIG9ubHkgcHJvcGFnYXRlXG4gICAgICAgICAgICAgICAgLy8gb25lIGNsaWNrIGV2ZW50IChmcm9tIHRoZSBpbnB1dCkuIFdlIHByb3BhZ2F0ZSBjaGFuZ2VzIGZyb20gYW4gaW5wdXQgc28gdGhhdCBuYXRpdmVcbiAgICAgICAgICAgICAgICAvLyBmb3JtIHZhbGlkYXRpb24gd29ya3MgYW5kIGZvcm0gZXZlbnRzIHJlZmxlY3Qgc3dpdGNoIHVwZGF0ZXMuXG4gICAgICAgICAgICAgICAgaWYgKCFoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZi5jdXJyZW50KSBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICB9KSksIGlzRm9ybUNvbnRyb2wgJiYgLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudCgkNmJlNDk2NmZkOWJiYzY5OCR2YXIkQnViYmxlSW5wdXQsIHtcbiAgICAgICAgY29udHJvbDogYnV0dG9uLFxuICAgICAgICBidWJibGVzOiAhaGFzQ29uc3VtZXJTdG9wcGVkUHJvcGFnYXRpb25SZWYuY3VycmVudCxcbiAgICAgICAgbmFtZTogbmFtZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBjaGVja2VkOiBjaGVja2VkLFxuICAgICAgICByZXF1aXJlZDogcmVxdWlyZWQsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCAvLyBXZSB0cmFuc2Zvcm0gYmVjYXVzZSB0aGUgaW5wdXQgaXMgYWJzb2x1dGVseSBwb3NpdGlvbmVkIGJ1dCB3ZSBoYXZlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTEwMCUpJ1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIsIHtcbiAgICBkaXNwbGF5TmFtZTogJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFNXSVRDSF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFN3aXRjaFRodW1iXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FID0gJ1N3aXRjaFRodW1iJztcbmNvbnN0ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2ID0gLyojX19QVVJFX18qLyAkaXJQSWwkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTd2l0Y2g6IF9fc2NvcGVTd2l0Y2ggLCAuLi50aHVtYlByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQoJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFRIVU1CX05BTUUsIF9fc2NvcGVTd2l0Y2gpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRpclBJbCRjcmVhdGVFbGVtZW50KCRpclBJbCRQcmltaXRpdmUuc3BhbiwgJGlyUElsJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRnZXRTdGF0ZShjb250ZXh0LmNoZWNrZWQpLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogY29udGV4dC5kaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkXG4gICAgfSwgdGh1bWJQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCQ0ZDA3YmY2NTNlYTY5MTA2LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRUSFVNQl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgY29udHJvbDogY29udHJvbCAsIGNoZWNrZWQ6IGNoZWNrZWQgLCBidWJibGVzOiBidWJibGVzID0gdHJ1ZSAsIC4uLmlucHV0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHJlZiA9ICRpclBJbCR1c2VSZWYobnVsbCk7XG4gICAgY29uc3QgcHJldkNoZWNrZWQgPSAkaXJQSWwkdXNlUHJldmlvdXMoY2hlY2tlZCk7XG4gICAgY29uc3QgY29udHJvbFNpemUgPSAkaXJQSWwkdXNlU2l6ZShjb250cm9sKTsgLy8gQnViYmxlIGNoZWNrZWQgY2hhbmdlIHRvIHBhcmVudHMgKGUuZyBmb3JtIGNoYW5nZSBldmVudClcbiAgICAkaXJQSWwkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGNvbnN0IGlucHV0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IGlucHV0UHJvdG8gPSB3aW5kb3cuSFRNTElucHV0RWxlbWVudC5wcm90b3R5cGU7XG4gICAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKGlucHV0UHJvdG8sICdjaGVja2VkJyk7XG4gICAgICAgIGNvbnN0IHNldENoZWNrZWQgPSBkZXNjcmlwdG9yLnNldDtcbiAgICAgICAgaWYgKHByZXZDaGVja2VkICE9PSBjaGVja2VkICYmIHNldENoZWNrZWQpIHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50ID0gbmV3IEV2ZW50KCdjbGljaycsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiBidWJibGVzXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldENoZWNrZWQuY2FsbChpbnB1dCwgY2hlY2tlZCk7XG4gICAgICAgICAgICBpbnB1dC5kaXNwYXRjaEV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgcHJldkNoZWNrZWQsXG4gICAgICAgIGNoZWNrZWQsXG4gICAgICAgIGJ1YmJsZXNcbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkaXJQSWwkY3JlYXRlRWxlbWVudChcImlucHV0XCIsICRpclBJbCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIHR5cGU6IFwiY2hlY2tib3hcIixcbiAgICAgICAgXCJhcmlhLWhpZGRlblwiOiB0cnVlLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZDogY2hlY2tlZFxuICAgIH0sIGlucHV0UHJvcHMsIHtcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICByZWY6IHJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLi4uY29udHJvbFNpemUsXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgICAgICAgICAgIG9wYWNpdHk6IDAsXG4gICAgICAgICAgICBtYXJnaW46IDBcbiAgICAgICAgfVxuICAgIH0pKTtcbn07XG5mdW5jdGlvbiAkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUoY2hlY2tlZCkge1xuICAgIHJldHVybiBjaGVja2VkID8gJ2NoZWNrZWQnIDogJ3VuY2hlY2tlZCc7XG59XG5jb25zdCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiNWQ1Y2Y4OTI3YWI3MjYyO1xuY29uc3QgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIgPSAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNjtcblxuXG5cblxuZXhwb3J0IHskNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkY2Y3ZjVmMTdmNjljYmQ0MyBhcyBjcmVhdGVTd2l0Y2hTY29wZSwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGI1ZDVjZjg5MjdhYjcyNjIgYXMgU3dpdGNoLCAkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkNGQwN2JmNjUzZWE2OTEwNiBhcyBTd2l0Y2hUaHVtYiwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIgYXMgVGh1bWJ9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJmdW5jdGlvbiBnZXRBbGlnbm1lbnQocGxhY2VtZW50KSB7XG4gIHJldHVybiBwbGFjZW1lbnQuc3BsaXQoJy0nKVsxXTtcbn1cblxuZnVuY3Rpb24gZ2V0TGVuZ3RoRnJvbUF4aXMoYXhpcykge1xuICByZXR1cm4gYXhpcyA9PT0gJ3knID8gJ2hlaWdodCcgOiAnd2lkdGgnO1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlKHBsYWNlbWVudCkge1xuICByZXR1cm4gcGxhY2VtZW50LnNwbGl0KCctJylbMF07XG59XG5cbmZ1bmN0aW9uIGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIFsndG9wJywgJ2JvdHRvbSddLmluY2x1ZGVzKGdldFNpZGUocGxhY2VtZW50KSkgPyAneCcgOiAneSc7XG59XG5cbmZ1bmN0aW9uIGNvbXB1dGVDb29yZHNGcm9tUGxhY2VtZW50KF9yZWYsIHBsYWNlbWVudCwgcnRsKSB7XG4gIGxldCB7XG4gICAgcmVmZXJlbmNlLFxuICAgIGZsb2F0aW5nXG4gIH0gPSBfcmVmO1xuICBjb25zdCBjb21tb25YID0gcmVmZXJlbmNlLnggKyByZWZlcmVuY2Uud2lkdGggLyAyIC0gZmxvYXRpbmcud2lkdGggLyAyO1xuICBjb25zdCBjb21tb25ZID0gcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0IC8gMiAtIGZsb2F0aW5nLmhlaWdodCAvIDI7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgY29uc3QgY29tbW9uQWxpZ24gPSByZWZlcmVuY2VbbGVuZ3RoXSAvIDIgLSBmbG9hdGluZ1tsZW5ndGhdIC8gMjtcbiAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgY29uc3QgaXNWZXJ0aWNhbCA9IG1haW5BeGlzID09PSAneCc7XG4gIGxldCBjb29yZHM7XG4gIHN3aXRjaCAoc2lkZSkge1xuICAgIGNhc2UgJ3RvcCc6XG4gICAgICBjb29yZHMgPSB7XG4gICAgICAgIHg6IGNvbW1vblgsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55IC0gZmxvYXRpbmcuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAnYm90dG9tJzpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogY29tbW9uWCxcbiAgICAgICAgeTogcmVmZXJlbmNlLnkgKyByZWZlcmVuY2UuaGVpZ2h0XG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCArIHJlZmVyZW5jZS53aWR0aCxcbiAgICAgICAgeTogY29tbW9uWVxuICAgICAgfTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2xlZnQnOlxuICAgICAgY29vcmRzID0ge1xuICAgICAgICB4OiByZWZlcmVuY2UueCAtIGZsb2F0aW5nLndpZHRoLFxuICAgICAgICB5OiBjb21tb25ZXG4gICAgICB9O1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGNvb3JkcyA9IHtcbiAgICAgICAgeDogcmVmZXJlbmNlLngsXG4gICAgICAgIHk6IHJlZmVyZW5jZS55XG4gICAgICB9O1xuICB9XG4gIHN3aXRjaCAoZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkpIHtcbiAgICBjYXNlICdzdGFydCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdIC09IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2VuZCc6XG4gICAgICBjb29yZHNbbWFpbkF4aXNdICs9IGNvbW1vbkFsaWduICogKHJ0bCAmJiBpc1ZlcnRpY2FsID8gLTEgOiAxKTtcbiAgICAgIGJyZWFrO1xuICB9XG4gIHJldHVybiBjb29yZHM7XG59XG5cbi8qKlxuICogQ29tcHV0ZXMgdGhlIGB4YCBhbmQgYHlgIGNvb3JkaW5hdGVzIHRoYXQgd2lsbCBwbGFjZSB0aGUgZmxvYXRpbmcgZWxlbWVudFxuICogbmV4dCB0byBhIHJlZmVyZW5jZSBlbGVtZW50IHdoZW4gaXQgaXMgZ2l2ZW4gYSBjZXJ0YWluIHBvc2l0aW9uaW5nIHN0cmF0ZWd5LlxuICpcbiAqIFRoaXMgZXhwb3J0IGRvZXMgbm90IGhhdmUgYW55IGBwbGF0Zm9ybWAgaW50ZXJmYWNlIGxvZ2ljLiBZb3Ugd2lsbCBuZWVkIHRvXG4gKiB3cml0ZSBvbmUgZm9yIHRoZSBwbGF0Zm9ybSB5b3UgYXJlIHVzaW5nIEZsb2F0aW5nIFVJIHdpdGguXG4gKi9cbmNvbnN0IGNvbXB1dGVQb3NpdGlvbiA9IGFzeW5jIChyZWZlcmVuY2UsIGZsb2F0aW5nLCBjb25maWcpID0+IHtcbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm1cbiAgfSA9IGNvbmZpZztcbiAgY29uc3QgdmFsaWRNaWRkbGV3YXJlID0gbWlkZGxld2FyZS5maWx0ZXIoQm9vbGVhbik7XG4gIGNvbnN0IHJ0bCA9IGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZmxvYXRpbmcpKTtcbiAgbGV0IHJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICByZWZlcmVuY2UsXG4gICAgZmxvYXRpbmcsXG4gICAgc3RyYXRlZ3lcbiAgfSk7XG4gIGxldCB7XG4gICAgeCxcbiAgICB5XG4gIH0gPSBjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudChyZWN0cywgcGxhY2VtZW50LCBydGwpO1xuICBsZXQgc3RhdGVmdWxQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gIGxldCBtaWRkbGV3YXJlRGF0YSA9IHt9O1xuICBsZXQgcmVzZXRDb3VudCA9IDA7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdmFsaWRNaWRkbGV3YXJlLmxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3Qge1xuICAgICAgbmFtZSxcbiAgICAgIGZuXG4gICAgfSA9IHZhbGlkTWlkZGxld2FyZVtpXTtcbiAgICBjb25zdCB7XG4gICAgICB4OiBuZXh0WCxcbiAgICAgIHk6IG5leHRZLFxuICAgICAgZGF0YSxcbiAgICAgIHJlc2V0XG4gICAgfSA9IGF3YWl0IGZuKHtcbiAgICAgIHgsXG4gICAgICB5LFxuICAgICAgaW5pdGlhbFBsYWNlbWVudDogcGxhY2VtZW50LFxuICAgICAgcGxhY2VtZW50OiBzdGF0ZWZ1bFBsYWNlbWVudCxcbiAgICAgIHN0cmF0ZWd5LFxuICAgICAgbWlkZGxld2FyZURhdGEsXG4gICAgICByZWN0cyxcbiAgICAgIHBsYXRmb3JtLFxuICAgICAgZWxlbWVudHM6IHtcbiAgICAgICAgcmVmZXJlbmNlLFxuICAgICAgICBmbG9hdGluZ1xuICAgICAgfVxuICAgIH0pO1xuICAgIHggPSBuZXh0WCAhPSBudWxsID8gbmV4dFggOiB4O1xuICAgIHkgPSBuZXh0WSAhPSBudWxsID8gbmV4dFkgOiB5O1xuICAgIG1pZGRsZXdhcmVEYXRhID0ge1xuICAgICAgLi4ubWlkZGxld2FyZURhdGEsXG4gICAgICBbbmFtZV06IHtcbiAgICAgICAgLi4ubWlkZGxld2FyZURhdGFbbmFtZV0sXG4gICAgICAgIC4uLmRhdGFcbiAgICAgIH1cbiAgICB9O1xuICAgIGlmIChyZXNldCAmJiByZXNldENvdW50IDw9IDUwKSB7XG4gICAgICByZXNldENvdW50Kys7XG4gICAgICBpZiAodHlwZW9mIHJlc2V0ID09PSAnb2JqZWN0Jykge1xuICAgICAgICBpZiAocmVzZXQucGxhY2VtZW50KSB7XG4gICAgICAgICAgc3RhdGVmdWxQbGFjZW1lbnQgPSByZXNldC5wbGFjZW1lbnQ7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHJlc2V0LnJlY3RzKSB7XG4gICAgICAgICAgcmVjdHMgPSByZXNldC5yZWN0cyA9PT0gdHJ1ZSA/IGF3YWl0IHBsYXRmb3JtLmdldEVsZW1lbnRSZWN0cyh7XG4gICAgICAgICAgICByZWZlcmVuY2UsXG4gICAgICAgICAgICBmbG9hdGluZyxcbiAgICAgICAgICAgIHN0cmF0ZWd5XG4gICAgICAgICAgfSkgOiByZXNldC5yZWN0cztcbiAgICAgICAgfVxuICAgICAgICAoe1xuICAgICAgICAgIHgsXG4gICAgICAgICAgeVxuICAgICAgICB9ID0gY29tcHV0ZUNvb3Jkc0Zyb21QbGFjZW1lbnQocmVjdHMsIHN0YXRlZnVsUGxhY2VtZW50LCBydGwpKTtcbiAgICAgIH1cbiAgICAgIGkgPSAtMTtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHgsXG4gICAgeSxcbiAgICBwbGFjZW1lbnQ6IHN0YXRlZnVsUGxhY2VtZW50LFxuICAgIHN0cmF0ZWd5LFxuICAgIG1pZGRsZXdhcmVEYXRhXG4gIH07XG59O1xuXG5mdW5jdGlvbiBldmFsdWF0ZSh2YWx1ZSwgcGFyYW0pIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyA/IHZhbHVlKHBhcmFtKSA6IHZhbHVlO1xufVxuXG5mdW5jdGlvbiBleHBhbmRQYWRkaW5nT2JqZWN0KHBhZGRpbmcpIHtcbiAgcmV0dXJuIHtcbiAgICB0b3A6IDAsXG4gICAgcmlnaHQ6IDAsXG4gICAgYm90dG9tOiAwLFxuICAgIGxlZnQ6IDAsXG4gICAgLi4ucGFkZGluZ1xuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZykge1xuICByZXR1cm4gdHlwZW9mIHBhZGRpbmcgIT09ICdudW1iZXInID8gZXhwYW5kUGFkZGluZ09iamVjdChwYWRkaW5nKSA6IHtcbiAgICB0b3A6IHBhZGRpbmcsXG4gICAgcmlnaHQ6IHBhZGRpbmcsXG4gICAgYm90dG9tOiBwYWRkaW5nLFxuICAgIGxlZnQ6IHBhZGRpbmdcbiAgfTtcbn1cblxuZnVuY3Rpb24gcmVjdFRvQ2xpZW50UmVjdChyZWN0KSB7XG4gIHJldHVybiB7XG4gICAgLi4ucmVjdCxcbiAgICB0b3A6IHJlY3QueSxcbiAgICBsZWZ0OiByZWN0LngsXG4gICAgcmlnaHQ6IHJlY3QueCArIHJlY3Qud2lkdGgsXG4gICAgYm90dG9tOiByZWN0LnkgKyByZWN0LmhlaWdodFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIHdpdGggYW4gb2JqZWN0IG9mIG92ZXJmbG93IHNpZGUgb2Zmc2V0cyB0aGF0IGRldGVybWluZSBob3cgbXVjaCB0aGVcbiAqIGVsZW1lbnQgaXMgb3ZlcmZsb3dpbmcgYSBnaXZlbiBjbGlwcGluZyBib3VuZGFyeSBvbiBlYWNoIHNpZGUuXG4gKiAtIHBvc2l0aXZlID0gb3ZlcmZsb3dpbmcgdGhlIGJvdW5kYXJ5IGJ5IHRoYXQgbnVtYmVyIG9mIHBpeGVsc1xuICogLSBuZWdhdGl2ZSA9IGhvdyBtYW55IHBpeGVscyBsZWZ0IGJlZm9yZSBpdCB3aWxsIG92ZXJmbG93XG4gKiAtIDAgPSBsaWVzIGZsdXNoIHdpdGggdGhlIGJvdW5kYXJ5XG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvZGV0ZWN0T3ZlcmZsb3dcbiAqL1xuYXN5bmMgZnVuY3Rpb24gZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIG9wdGlvbnMpIHtcbiAgdmFyIF9hd2FpdCRwbGF0Zm9ybSRpc0VsZTtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICBjb25zdCB7XG4gICAgeCxcbiAgICB5LFxuICAgIHBsYXRmb3JtLFxuICAgIHJlY3RzLFxuICAgIGVsZW1lbnRzLFxuICAgIHN0cmF0ZWd5XG4gIH0gPSBzdGF0ZTtcbiAgY29uc3Qge1xuICAgIGJvdW5kYXJ5ID0gJ2NsaXBwaW5nQW5jZXN0b3JzJyxcbiAgICByb290Qm91bmRhcnkgPSAndmlld3BvcnQnLFxuICAgIGVsZW1lbnRDb250ZXh0ID0gJ2Zsb2F0aW5nJyxcbiAgICBhbHRCb3VuZGFyeSA9IGZhbHNlLFxuICAgIHBhZGRpbmcgPSAwXG4gIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gIGNvbnN0IHBhZGRpbmdPYmplY3QgPSBnZXRTaWRlT2JqZWN0RnJvbVBhZGRpbmcocGFkZGluZyk7XG4gIGNvbnN0IGFsdENvbnRleHQgPSBlbGVtZW50Q29udGV4dCA9PT0gJ2Zsb2F0aW5nJyA/ICdyZWZlcmVuY2UnIDogJ2Zsb2F0aW5nJztcbiAgY29uc3QgZWxlbWVudCA9IGVsZW1lbnRzW2FsdEJvdW5kYXJ5ID8gYWx0Q29udGV4dCA6IGVsZW1lbnRDb250ZXh0XTtcbiAgY29uc3QgY2xpcHBpbmdDbGllbnRSZWN0ID0gcmVjdFRvQ2xpZW50UmVjdChhd2FpdCBwbGF0Zm9ybS5nZXRDbGlwcGluZ1JlY3Qoe1xuICAgIGVsZW1lbnQ6ICgoX2F3YWl0JHBsYXRmb3JtJGlzRWxlID0gYXdhaXQgKHBsYXRmb3JtLmlzRWxlbWVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNFbGVtZW50KGVsZW1lbnQpKSkgIT0gbnVsbCA/IF9hd2FpdCRwbGF0Zm9ybSRpc0VsZSA6IHRydWUpID8gZWxlbWVudCA6IGVsZW1lbnQuY29udGV4dEVsZW1lbnQgfHwgKGF3YWl0IChwbGF0Zm9ybS5nZXREb2N1bWVudEVsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldERvY3VtZW50RWxlbWVudChlbGVtZW50cy5mbG9hdGluZykpKSxcbiAgICBib3VuZGFyeSxcbiAgICByb290Qm91bmRhcnksXG4gICAgc3RyYXRlZ3lcbiAgfSkpO1xuICBjb25zdCByZWN0ID0gZWxlbWVudENvbnRleHQgPT09ICdmbG9hdGluZycgPyB7XG4gICAgLi4ucmVjdHMuZmxvYXRpbmcsXG4gICAgeCxcbiAgICB5XG4gIH0gOiByZWN0cy5yZWZlcmVuY2U7XG4gIGNvbnN0IG9mZnNldFBhcmVudCA9IGF3YWl0IChwbGF0Zm9ybS5nZXRPZmZzZXRQYXJlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmdldE9mZnNldFBhcmVudChlbGVtZW50cy5mbG9hdGluZykpO1xuICBjb25zdCBvZmZzZXRTY2FsZSA9IChhd2FpdCAocGxhdGZvcm0uaXNFbGVtZW50ID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc0VsZW1lbnQob2Zmc2V0UGFyZW50KSkpID8gKGF3YWl0IChwbGF0Zm9ybS5nZXRTY2FsZSA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0U2NhbGUob2Zmc2V0UGFyZW50KSkpIHx8IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfSA6IHtcbiAgICB4OiAxLFxuICAgIHk6IDFcbiAgfTtcbiAgY29uc3QgZWxlbWVudENsaWVudFJlY3QgPSByZWN0VG9DbGllbnRSZWN0KHBsYXRmb3JtLmNvbnZlcnRPZmZzZXRQYXJlbnRSZWxhdGl2ZVJlY3RUb1ZpZXdwb3J0UmVsYXRpdmVSZWN0ID8gYXdhaXQgcGxhdGZvcm0uY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3Qoe1xuICAgIHJlY3QsXG4gICAgb2Zmc2V0UGFyZW50LFxuICAgIHN0cmF0ZWd5XG4gIH0pIDogcmVjdCk7XG4gIHJldHVybiB7XG4gICAgdG9wOiAoY2xpcHBpbmdDbGllbnRSZWN0LnRvcCAtIGVsZW1lbnRDbGllbnRSZWN0LnRvcCArIHBhZGRpbmdPYmplY3QudG9wKSAvIG9mZnNldFNjYWxlLnksXG4gICAgYm90dG9tOiAoZWxlbWVudENsaWVudFJlY3QuYm90dG9tIC0gY2xpcHBpbmdDbGllbnRSZWN0LmJvdHRvbSArIHBhZGRpbmdPYmplY3QuYm90dG9tKSAvIG9mZnNldFNjYWxlLnksXG4gICAgbGVmdDogKGNsaXBwaW5nQ2xpZW50UmVjdC5sZWZ0IC0gZWxlbWVudENsaWVudFJlY3QubGVmdCArIHBhZGRpbmdPYmplY3QubGVmdCkgLyBvZmZzZXRTY2FsZS54LFxuICAgIHJpZ2h0OiAoZWxlbWVudENsaWVudFJlY3QucmlnaHQgLSBjbGlwcGluZ0NsaWVudFJlY3QucmlnaHQgKyBwYWRkaW5nT2JqZWN0LnJpZ2h0KSAvIG9mZnNldFNjYWxlLnhcbiAgfTtcbn1cblxuY29uc3QgbWluID0gTWF0aC5taW47XG5jb25zdCBtYXggPSBNYXRoLm1heDtcblxuZnVuY3Rpb24gd2l0aGluKG1pbiQxLCB2YWx1ZSwgbWF4JDEpIHtcbiAgcmV0dXJuIG1heChtaW4kMSwgbWluKHZhbHVlLCBtYXgkMSkpO1xufVxuXG4vKipcbiAqIFByb3ZpZGVzIGRhdGEgdG8gcG9zaXRpb24gYW4gaW5uZXIgZWxlbWVudCBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCBzbyB0aGF0IGl0XG4gKiBhcHBlYXJzIGNlbnRlcmVkIHRvIHRoZSByZWZlcmVuY2UgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4gKHtcbiAgbmFtZTogJ2Fycm93JyxcbiAgb3B0aW9ucyxcbiAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICBjb25zdCB7XG4gICAgICB4LFxuICAgICAgeSxcbiAgICAgIHBsYWNlbWVudCxcbiAgICAgIHJlY3RzLFxuICAgICAgcGxhdGZvcm0sXG4gICAgICBlbGVtZW50c1xuICAgIH0gPSBzdGF0ZTtcbiAgICAvLyBTaW5jZSBgZWxlbWVudGAgaXMgcmVxdWlyZWQsIHdlIGRvbid0IFBhcnRpYWw8PiB0aGUgdHlwZS5cbiAgICBjb25zdCB7XG4gICAgICBlbGVtZW50LFxuICAgICAgcGFkZGluZyA9IDBcbiAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpIHx8IHt9O1xuICAgIGlmIChlbGVtZW50ID09IG51bGwpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICBjb25zdCBjb29yZHMgPSB7XG4gICAgICB4LFxuICAgICAgeVxuICAgIH07XG4gICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKGF4aXMpO1xuICAgIGNvbnN0IGFycm93RGltZW5zaW9ucyA9IGF3YWl0IHBsYXRmb3JtLmdldERpbWVuc2lvbnMoZWxlbWVudCk7XG4gICAgY29uc3QgaXNZQXhpcyA9IGF4aXMgPT09ICd5JztcbiAgICBjb25zdCBtaW5Qcm9wID0gaXNZQXhpcyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgIGNvbnN0IG1heFByb3AgPSBpc1lBeGlzID8gJ2JvdHRvbScgOiAncmlnaHQnO1xuICAgIGNvbnN0IGNsaWVudFByb3AgPSBpc1lBeGlzID8gJ2NsaWVudEhlaWdodCcgOiAnY2xpZW50V2lkdGgnO1xuICAgIGNvbnN0IGVuZERpZmYgPSByZWN0cy5yZWZlcmVuY2VbbGVuZ3RoXSArIHJlY3RzLnJlZmVyZW5jZVtheGlzXSAtIGNvb3Jkc1theGlzXSAtIHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgY29uc3Qgc3RhcnREaWZmID0gY29vcmRzW2F4aXNdIC0gcmVjdHMucmVmZXJlbmNlW2F4aXNdO1xuICAgIGNvbnN0IGFycm93T2Zmc2V0UGFyZW50ID0gYXdhaXQgKHBsYXRmb3JtLmdldE9mZnNldFBhcmVudCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0T2Zmc2V0UGFyZW50KGVsZW1lbnQpKTtcbiAgICBsZXQgY2xpZW50U2l6ZSA9IGFycm93T2Zmc2V0UGFyZW50ID8gYXJyb3dPZmZzZXRQYXJlbnRbY2xpZW50UHJvcF0gOiAwO1xuXG4gICAgLy8gRE9NIHBsYXRmb3JtIGNhbiByZXR1cm4gYHdpbmRvd2AgYXMgdGhlIGBvZmZzZXRQYXJlbnRgLlxuICAgIGlmICghY2xpZW50U2l6ZSB8fCAhKGF3YWl0IChwbGF0Zm9ybS5pc0VsZW1lbnQgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzRWxlbWVudChhcnJvd09mZnNldFBhcmVudCkpKSkge1xuICAgICAgY2xpZW50U2l6ZSA9IGVsZW1lbnRzLmZsb2F0aW5nW2NsaWVudFByb3BdIHx8IHJlY3RzLmZsb2F0aW5nW2xlbmd0aF07XG4gICAgfVxuICAgIGNvbnN0IGNlbnRlclRvUmVmZXJlbmNlID0gZW5kRGlmZiAvIDIgLSBzdGFydERpZmYgLyAyO1xuXG4gICAgLy8gSWYgdGhlIHBhZGRpbmcgaXMgbGFyZ2UgZW5vdWdoIHRoYXQgaXQgY2F1c2VzIHRoZSBhcnJvdyB0byBubyBsb25nZXIgYmVcbiAgICAvLyBjZW50ZXJlZCwgbW9kaWZ5IHRoZSBwYWRkaW5nIHNvIHRoYXQgaXQgaXMgY2VudGVyZWQuXG4gICAgY29uc3QgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyA9IGNsaWVudFNpemUgLyAyIC0gYXJyb3dEaW1lbnNpb25zW2xlbmd0aF0gLyAyIC0gMTtcbiAgICBjb25zdCBtaW5QYWRkaW5nID0gbWluKHBhZGRpbmdPYmplY3RbbWluUHJvcF0sIGxhcmdlc3RQb3NzaWJsZVBhZGRpbmcpO1xuICAgIGNvbnN0IG1heFBhZGRpbmcgPSBtaW4ocGFkZGluZ09iamVjdFttYXhQcm9wXSwgbGFyZ2VzdFBvc3NpYmxlUGFkZGluZyk7XG5cbiAgICAvLyBNYWtlIHN1cmUgdGhlIGFycm93IGRvZXNuJ3Qgb3ZlcmZsb3cgdGhlIGZsb2F0aW5nIGVsZW1lbnQgaWYgdGhlIGNlbnRlclxuICAgIC8vIHBvaW50IGlzIG91dHNpZGUgdGhlIGZsb2F0aW5nIGVsZW1lbnQncyBib3VuZHMuXG4gICAgY29uc3QgbWluJDEgPSBtaW5QYWRkaW5nO1xuICAgIGNvbnN0IG1heCA9IGNsaWVudFNpemUgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAtIG1heFBhZGRpbmc7XG4gICAgY29uc3QgY2VudGVyID0gY2xpZW50U2l6ZSAvIDIgLSBhcnJvd0RpbWVuc2lvbnNbbGVuZ3RoXSAvIDIgKyBjZW50ZXJUb1JlZmVyZW5jZTtcbiAgICBjb25zdCBvZmZzZXQgPSB3aXRoaW4obWluJDEsIGNlbnRlciwgbWF4KTtcblxuICAgIC8vIElmIHRoZSByZWZlcmVuY2UgaXMgc21hbGwgZW5vdWdoIHRoYXQgdGhlIGFycm93J3MgcGFkZGluZyBjYXVzZXMgaXQgdG9cbiAgICAvLyB0byBwb2ludCB0byBub3RoaW5nIGZvciBhbiBhbGlnbmVkIHBsYWNlbWVudCwgYWRqdXN0IHRoZSBvZmZzZXQgb2YgdGhlXG4gICAgLy8gZmxvYXRpbmcgZWxlbWVudCBpdHNlbGYuIFRoaXMgc3RvcHMgYHNoaWZ0KClgIGZyb20gdGFraW5nIGFjdGlvbiwgYnV0IGNhblxuICAgIC8vIGJlIHdvcmtlZCBhcm91bmQgYnkgY2FsbGluZyBpdCBhZ2FpbiBhZnRlciB0aGUgYGFycm93KClgIGlmIGRlc2lyZWQuXG4gICAgY29uc3Qgc2hvdWxkQWRkT2Zmc2V0ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgIT0gbnVsbCAmJiBjZW50ZXIgIT0gb2Zmc2V0ICYmIHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdIC8gMiAtIChjZW50ZXIgPCBtaW4kMSA/IG1pblBhZGRpbmcgOiBtYXhQYWRkaW5nKSAtIGFycm93RGltZW5zaW9uc1tsZW5ndGhdIC8gMiA8IDA7XG4gICAgY29uc3QgYWxpZ25tZW50T2Zmc2V0ID0gc2hvdWxkQWRkT2Zmc2V0ID8gY2VudGVyIDwgbWluJDEgPyBtaW4kMSAtIGNlbnRlciA6IG1heCAtIGNlbnRlciA6IDA7XG4gICAgcmV0dXJuIHtcbiAgICAgIFtheGlzXTogY29vcmRzW2F4aXNdIC0gYWxpZ25tZW50T2Zmc2V0LFxuICAgICAgZGF0YToge1xuICAgICAgICBbYXhpc106IG9mZnNldCxcbiAgICAgICAgY2VudGVyT2Zmc2V0OiBjZW50ZXIgLSBvZmZzZXRcbiAgICAgIH1cbiAgICB9O1xuICB9XG59KTtcblxuY29uc3Qgc2lkZXMgPSBbJ3RvcCcsICdyaWdodCcsICdib3R0b20nLCAnbGVmdCddO1xuY29uc3QgYWxsUGxhY2VtZW50cyA9IC8qI19fUFVSRV9fKi9zaWRlcy5yZWR1Y2UoKGFjYywgc2lkZSkgPT4gYWNjLmNvbmNhdChzaWRlLCBzaWRlICsgXCItc3RhcnRcIiwgc2lkZSArIFwiLWVuZFwiKSwgW10pO1xuXG5jb25zdCBvcHBvc2l0ZVNpZGVNYXAgPSB7XG4gIGxlZnQ6ICdyaWdodCcsXG4gIHJpZ2h0OiAnbGVmdCcsXG4gIGJvdHRvbTogJ3RvcCcsXG4gIHRvcDogJ2JvdHRvbSdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZVBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9sZWZ0fHJpZ2h0fGJvdHRvbXx0b3AvZywgc2lkZSA9PiBvcHBvc2l0ZVNpZGVNYXBbc2lkZV0pO1xufVxuXG5mdW5jdGlvbiBnZXRBbGlnbm1lbnRTaWRlcyhwbGFjZW1lbnQsIHJlY3RzLCBydGwpIHtcbiAgaWYgKHJ0bCA9PT0gdm9pZCAwKSB7XG4gICAgcnRsID0gZmFsc2U7XG4gIH1cbiAgY29uc3QgYWxpZ25tZW50ID0gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIGNvbnN0IGxlbmd0aCA9IGdldExlbmd0aEZyb21BeGlzKG1haW5BeGlzKTtcbiAgbGV0IG1haW5BbGlnbm1lbnRTaWRlID0gbWFpbkF4aXMgPT09ICd4JyA/IGFsaWdubWVudCA9PT0gKHJ0bCA/ICdlbmQnIDogJ3N0YXJ0JykgPyAncmlnaHQnIDogJ2xlZnQnIDogYWxpZ25tZW50ID09PSAnc3RhcnQnID8gJ2JvdHRvbScgOiAndG9wJztcbiAgaWYgKHJlY3RzLnJlZmVyZW5jZVtsZW5ndGhdID4gcmVjdHMuZmxvYXRpbmdbbGVuZ3RoXSkge1xuICAgIG1haW5BbGlnbm1lbnRTaWRlID0gZ2V0T3Bwb3NpdGVQbGFjZW1lbnQobWFpbkFsaWdubWVudFNpZGUpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbWFpbjogbWFpbkFsaWdubWVudFNpZGUsXG4gICAgY3Jvc3M6IGdldE9wcG9zaXRlUGxhY2VtZW50KG1haW5BbGlnbm1lbnRTaWRlKVxuICB9O1xufVxuXG5jb25zdCBvcHBvc2l0ZUFsaWdubWVudE1hcCA9IHtcbiAgc3RhcnQ6ICdlbmQnLFxuICBlbmQ6ICdzdGFydCdcbn07XG5mdW5jdGlvbiBnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudChwbGFjZW1lbnQpIHtcbiAgcmV0dXJuIHBsYWNlbWVudC5yZXBsYWNlKC9zdGFydHxlbmQvZywgYWxpZ25tZW50ID0+IG9wcG9zaXRlQWxpZ25tZW50TWFwW2FsaWdubWVudF0pO1xufVxuXG5mdW5jdGlvbiBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCwgYXV0b0FsaWdubWVudCwgYWxsb3dlZFBsYWNlbWVudHMpIHtcbiAgY29uc3QgYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudCA9IGFsaWdubWVudCA/IFsuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpID09PSBhbGlnbm1lbnQpLCAuLi5hbGxvd2VkUGxhY2VtZW50cy5maWx0ZXIocGxhY2VtZW50ID0+IGdldEFsaWdubWVudChwbGFjZW1lbnQpICE9PSBhbGlnbm1lbnQpXSA6IGFsbG93ZWRQbGFjZW1lbnRzLmZpbHRlcihwbGFjZW1lbnQgPT4gZ2V0U2lkZShwbGFjZW1lbnQpID09PSBwbGFjZW1lbnQpO1xuICByZXR1cm4gYWxsb3dlZFBsYWNlbWVudHNTb3J0ZWRCeUFsaWdubWVudC5maWx0ZXIocGxhY2VtZW50ID0+IHtcbiAgICBpZiAoYWxpZ25tZW50KSB7XG4gICAgICByZXR1cm4gZ2V0QWxpZ25tZW50KHBsYWNlbWVudCkgPT09IGFsaWdubWVudCB8fCAoYXV0b0FsaWdubWVudCA/IGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KHBsYWNlbWVudCkgIT09IHBsYWNlbWVudCA6IGZhbHNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHRydWU7XG4gIH0pO1xufVxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgY2hvb3NpbmcgdGhlIHBsYWNlbWVudFxuICogdGhhdCBoYXMgdGhlIG1vc3Qgc3BhY2UgYXZhaWxhYmxlIGF1dG9tYXRpY2FsbHksIHdpdGhvdXQgbmVlZGluZyB0byBzcGVjaWZ5IGFcbiAqIHByZWZlcnJlZCBwbGFjZW1lbnQuIEFsdGVybmF0aXZlIHRvIGBmbGlwYC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hdXRvUGxhY2VtZW50XG4gKi9cbmNvbnN0IGF1dG9QbGFjZW1lbnQgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2F1dG9QbGFjZW1lbnQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXV0b1AsIF9taWRkbGV3YXJlRGF0YSRhdXRvUDIsIF9wbGFjZW1lbnRzVGhhdEZpdE9uRTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIG1pZGRsZXdhcmVEYXRhLFxuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBjcm9zc0F4aXMgPSBmYWxzZSxcbiAgICAgICAgYWxpZ25tZW50LFxuICAgICAgICBhbGxvd2VkUGxhY2VtZW50cyA9IGFsbFBsYWNlbWVudHMsXG4gICAgICAgIGF1dG9BbGlnbm1lbnQgPSB0cnVlLFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBwbGFjZW1lbnRzID0gYWxpZ25tZW50ICE9PSB1bmRlZmluZWQgfHwgYWxsb3dlZFBsYWNlbWVudHMgPT09IGFsbFBsYWNlbWVudHMgPyBnZXRQbGFjZW1lbnRMaXN0KGFsaWdubWVudCB8fCBudWxsLCBhdXRvQWxpZ25tZW50LCBhbGxvd2VkUGxhY2VtZW50cykgOiBhbGxvd2VkUGxhY2VtZW50cztcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gYXdhaXQgZGV0ZWN0T3ZlcmZsb3coc3RhdGUsIGRldGVjdE92ZXJmbG93T3B0aW9ucyk7XG4gICAgICBjb25zdCBjdXJyZW50SW5kZXggPSAoKF9taWRkbGV3YXJlRGF0YSRhdXRvUCA9IG1pZGRsZXdhcmVEYXRhLmF1dG9QbGFjZW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXV0b1AuaW5kZXgpIHx8IDA7XG4gICAgICBjb25zdCBjdXJyZW50UGxhY2VtZW50ID0gcGxhY2VtZW50c1tjdXJyZW50SW5kZXhdO1xuICAgICAgaWYgKGN1cnJlbnRQbGFjZW1lbnQgPT0gbnVsbCkge1xuICAgICAgICByZXR1cm4ge307XG4gICAgICB9XG4gICAgICBjb25zdCB7XG4gICAgICAgIG1haW4sXG4gICAgICAgIGNyb3NzXG4gICAgICB9ID0gZ2V0QWxpZ25tZW50U2lkZXMoY3VycmVudFBsYWNlbWVudCwgcmVjdHMsIGF3YWl0IChwbGF0Zm9ybS5pc1JUTCA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uaXNSVEwoZWxlbWVudHMuZmxvYXRpbmcpKSk7XG5cbiAgICAgIC8vIE1ha2UgYGNvbXB1dGVDb29yZHNgIHN0YXJ0IGZyb20gdGhlIHJpZ2h0IHBsYWNlLlxuICAgICAgaWYgKHBsYWNlbWVudCAhPT0gY3VycmVudFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IHBsYWNlbWVudHNbMF1cbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBjdXJyZW50T3ZlcmZsb3dzID0gW292ZXJmbG93W2dldFNpZGUoY3VycmVudFBsYWNlbWVudCldLCBvdmVyZmxvd1ttYWluXSwgb3ZlcmZsb3dbY3Jvc3NdXTtcbiAgICAgIGNvbnN0IGFsbE92ZXJmbG93cyA9IFsuLi4oKChfbWlkZGxld2FyZURhdGEkYXV0b1AyID0gbWlkZGxld2FyZURhdGEuYXV0b1BsYWNlbWVudCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhdXRvUDIub3ZlcmZsb3dzKSB8fCBbXSksIHtcbiAgICAgICAgcGxhY2VtZW50OiBjdXJyZW50UGxhY2VtZW50LFxuICAgICAgICBvdmVyZmxvd3M6IGN1cnJlbnRPdmVyZmxvd3NcbiAgICAgIH1dO1xuICAgICAgY29uc3QgbmV4dFBsYWNlbWVudCA9IHBsYWNlbWVudHNbY3VycmVudEluZGV4ICsgMV07XG5cbiAgICAgIC8vIFRoZXJlIGFyZSBtb3JlIHBsYWNlbWVudHMgdG8gY2hlY2suXG4gICAgICBpZiAobmV4dFBsYWNlbWVudCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgIGluZGV4OiBjdXJyZW50SW5kZXggKyAxLFxuICAgICAgICAgICAgb3ZlcmZsb3dzOiBhbGxPdmVyZmxvd3NcbiAgICAgICAgICB9LFxuICAgICAgICAgIHJlc2V0OiB7XG4gICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICBjb25zdCBwbGFjZW1lbnRzU29ydGVkQnlNb3N0U3BhY2UgPSBhbGxPdmVyZmxvd3MubWFwKGQgPT4ge1xuICAgICAgICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQoZC5wbGFjZW1lbnQpO1xuICAgICAgICByZXR1cm4gW2QucGxhY2VtZW50LCBhbGlnbm1lbnQgJiYgY3Jvc3NBeGlzID9cbiAgICAgICAgLy8gQ2hlY2sgYWxvbmcgdGhlIG1haW5BeGlzIGFuZCBtYWluIGNyb3NzQXhpcyBzaWRlLlxuICAgICAgICBkLm92ZXJmbG93cy5zbGljZSgwLCAyKS5yZWR1Y2UoKGFjYywgdikgPT4gYWNjICsgdiwgMCkgOlxuICAgICAgICAvLyBDaGVjayBvbmx5IHRoZSBtYWluQXhpcy5cbiAgICAgICAgZC5vdmVyZmxvd3NbMF0sIGQub3ZlcmZsb3dzXTtcbiAgICAgIH0pLnNvcnQoKGEsIGIpID0+IGFbMV0gLSBiWzFdKTtcbiAgICAgIGNvbnN0IHBsYWNlbWVudHNUaGF0Rml0T25FYWNoU2lkZSA9IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZS5maWx0ZXIoZCA9PiBkWzJdLnNsaWNlKDAsXG4gICAgICAvLyBBbGlnbmVkIHBsYWNlbWVudHMgc2hvdWxkIG5vdCBjaGVjayB0aGVpciBvcHBvc2l0ZSBjcm9zc0F4aXNcbiAgICAgIC8vIHNpZGUuXG4gICAgICBnZXRBbGlnbm1lbnQoZFswXSkgPyAyIDogMykuZXZlcnkodiA9PiB2IDw9IDApKTtcbiAgICAgIGNvbnN0IHJlc2V0UGxhY2VtZW50ID0gKChfcGxhY2VtZW50c1RoYXRGaXRPbkUgPSBwbGFjZW1lbnRzVGhhdEZpdE9uRWFjaFNpZGVbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfcGxhY2VtZW50c1RoYXRGaXRPbkVbMF0pIHx8IHBsYWNlbWVudHNTb3J0ZWRCeU1vc3RTcGFjZVswXVswXTtcbiAgICAgIGlmIChyZXNldFBsYWNlbWVudCAhPT0gcGxhY2VtZW50KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgaW5kZXg6IGN1cnJlbnRJbmRleCArIDEsXG4gICAgICAgICAgICBvdmVyZmxvd3M6IGFsbE92ZXJmbG93c1xuICAgICAgICAgIH0sXG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHBsYWNlbWVudDogcmVzZXRQbGFjZW1lbnRcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKHBsYWNlbWVudCkge1xuICBjb25zdCBvcHBvc2l0ZVBsYWNlbWVudCA9IGdldE9wcG9zaXRlUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gIHJldHVybiBbZ2V0T3Bwb3NpdGVBbGlnbm1lbnRQbGFjZW1lbnQocGxhY2VtZW50KSwgb3Bwb3NpdGVQbGFjZW1lbnQsIGdldE9wcG9zaXRlQWxpZ25tZW50UGxhY2VtZW50KG9wcG9zaXRlUGxhY2VtZW50KV07XG59XG5cbmZ1bmN0aW9uIGdldFNpZGVMaXN0KHNpZGUsIGlzU3RhcnQsIHJ0bCkge1xuICBjb25zdCBsciA9IFsnbGVmdCcsICdyaWdodCddO1xuICBjb25zdCBybCA9IFsncmlnaHQnLCAnbGVmdCddO1xuICBjb25zdCB0YiA9IFsndG9wJywgJ2JvdHRvbSddO1xuICBjb25zdCBidCA9IFsnYm90dG9tJywgJ3RvcCddO1xuICBzd2l0Y2ggKHNpZGUpIHtcbiAgICBjYXNlICd0b3AnOlxuICAgIGNhc2UgJ2JvdHRvbSc6XG4gICAgICBpZiAocnRsKSByZXR1cm4gaXNTdGFydCA/IHJsIDogbHI7XG4gICAgICByZXR1cm4gaXNTdGFydCA/IGxyIDogcmw7XG4gICAgY2FzZSAnbGVmdCc6XG4gICAgY2FzZSAncmlnaHQnOlxuICAgICAgcmV0dXJuIGlzU3RhcnQgPyB0YiA6IGJ0O1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gW107XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE9wcG9zaXRlQXhpc1BsYWNlbWVudHMocGxhY2VtZW50LCBmbGlwQWxpZ25tZW50LCBkaXJlY3Rpb24sIHJ0bCkge1xuICBjb25zdCBhbGlnbm1lbnQgPSBnZXRBbGlnbm1lbnQocGxhY2VtZW50KTtcbiAgbGV0IGxpc3QgPSBnZXRTaWRlTGlzdChnZXRTaWRlKHBsYWNlbWVudCksIGRpcmVjdGlvbiA9PT0gJ3N0YXJ0JywgcnRsKTtcbiAgaWYgKGFsaWdubWVudCkge1xuICAgIGxpc3QgPSBsaXN0Lm1hcChzaWRlID0+IHNpZGUgKyBcIi1cIiArIGFsaWdubWVudCk7XG4gICAgaWYgKGZsaXBBbGlnbm1lbnQpIHtcbiAgICAgIGxpc3QgPSBsaXN0LmNvbmNhdChsaXN0Lm1hcChnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCkpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbGlzdDtcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgZmxpcHBpbmcgdGhlIGBwbGFjZW1lbnRgXG4gKiBpbiBvcmRlciB0byBrZWVwIGl0IGluIHZpZXcgd2hlbiB0aGUgcHJlZmVycmVkIHBsYWNlbWVudChzKSB3aWxsIG92ZXJmbG93IHRoZVxuICogY2xpcHBpbmcgYm91bmRhcnkuIEFsdGVybmF0aXZlIHRvIGBhdXRvUGxhY2VtZW50YC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9mbGlwXG4gKi9cbmNvbnN0IGZsaXAgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2ZsaXAnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkZmxpcDtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICBtaWRkbGV3YXJlRGF0YSxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIGluaXRpYWxQbGFjZW1lbnQsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBtYWluQXhpczogY2hlY2tNYWluQXhpcyA9IHRydWUsXG4gICAgICAgIGNyb3NzQXhpczogY2hlY2tDcm9zc0F4aXMgPSB0cnVlLFxuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHM6IHNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyxcbiAgICAgICAgZmFsbGJhY2tTdHJhdGVneSA9ICdiZXN0Rml0JyxcbiAgICAgICAgZmFsbGJhY2tBeGlzU2lkZURpcmVjdGlvbiA9ICdub25lJyxcbiAgICAgICAgZmxpcEFsaWdubWVudCA9IHRydWUsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBpc0Jhc2VQbGFjZW1lbnQgPSBnZXRTaWRlKGluaXRpYWxQbGFjZW1lbnQpID09PSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgY29uc3QgcnRsID0gYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpO1xuICAgICAgY29uc3QgZmFsbGJhY2tQbGFjZW1lbnRzID0gc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzIHx8IChpc0Jhc2VQbGFjZW1lbnQgfHwgIWZsaXBBbGlnbm1lbnQgPyBbZ2V0T3Bwb3NpdGVQbGFjZW1lbnQoaW5pdGlhbFBsYWNlbWVudCldIDogZ2V0RXhwYW5kZWRQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQpKTtcbiAgICAgIGlmICghc3BlY2lmaWVkRmFsbGJhY2tQbGFjZW1lbnRzICYmIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24gIT09ICdub25lJykge1xuICAgICAgICBmYWxsYmFja1BsYWNlbWVudHMucHVzaCguLi5nZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzKGluaXRpYWxQbGFjZW1lbnQsIGZsaXBBbGlnbm1lbnQsIGZhbGxiYWNrQXhpc1NpZGVEaXJlY3Rpb24sIHJ0bCkpO1xuICAgICAgfVxuICAgICAgY29uc3QgcGxhY2VtZW50cyA9IFtpbml0aWFsUGxhY2VtZW50LCAuLi5mYWxsYmFja1BsYWNlbWVudHNdO1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG92ZXJmbG93cyA9IFtdO1xuICAgICAgbGV0IG92ZXJmbG93c0RhdGEgPSAoKF9taWRkbGV3YXJlRGF0YSRmbGlwID0gbWlkZGxld2FyZURhdGEuZmxpcCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRmbGlwLm92ZXJmbG93cykgfHwgW107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBvdmVyZmxvd3MucHVzaChvdmVyZmxvd1tzaWRlXSk7XG4gICAgICB9XG4gICAgICBpZiAoY2hlY2tDcm9zc0F4aXMpIHtcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIG1haW4sXG4gICAgICAgICAgY3Jvc3NcbiAgICAgICAgfSA9IGdldEFsaWdubWVudFNpZGVzKHBsYWNlbWVudCwgcmVjdHMsIHJ0bCk7XG4gICAgICAgIG92ZXJmbG93cy5wdXNoKG92ZXJmbG93W21haW5dLCBvdmVyZmxvd1tjcm9zc10pO1xuICAgICAgfVxuICAgICAgb3ZlcmZsb3dzRGF0YSA9IFsuLi5vdmVyZmxvd3NEYXRhLCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgb3ZlcmZsb3dzXG4gICAgICB9XTtcblxuICAgICAgLy8gT25lIG9yIG1vcmUgc2lkZXMgaXMgb3ZlcmZsb3dpbmcuXG4gICAgICBpZiAoIW92ZXJmbG93cy5ldmVyeShzaWRlID0+IHNpZGUgPD0gMCkpIHtcbiAgICAgICAgdmFyIF9taWRkbGV3YXJlRGF0YSRmbGlwMiwgX292ZXJmbG93c0RhdGEkZmlsdGVyO1xuICAgICAgICBjb25zdCBuZXh0SW5kZXggPSAoKChfbWlkZGxld2FyZURhdGEkZmxpcDIgPSBtaWRkbGV3YXJlRGF0YS5mbGlwKSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGZsaXAyLmluZGV4KSB8fCAwKSArIDE7XG4gICAgICAgIGNvbnN0IG5leHRQbGFjZW1lbnQgPSBwbGFjZW1lbnRzW25leHRJbmRleF07XG4gICAgICAgIGlmIChuZXh0UGxhY2VtZW50KSB7XG4gICAgICAgICAgLy8gVHJ5IG5leHQgcGxhY2VtZW50IGFuZCByZS1ydW4gdGhlIGxpZmVjeWNsZS5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgZGF0YToge1xuICAgICAgICAgICAgICBpbmRleDogbmV4dEluZGV4LFxuICAgICAgICAgICAgICBvdmVyZmxvd3M6IG92ZXJmbG93c0RhdGFcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgICBwbGFjZW1lbnQ6IG5leHRQbGFjZW1lbnRcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gRmlyc3QsIGZpbmQgdGhlIGNhbmRpZGF0ZXMgdGhhdCBmaXQgb24gdGhlIG1haW5BeGlzIHNpZGUgb2Ygb3ZlcmZsb3csXG4gICAgICAgIC8vIHRoZW4gZmluZCB0aGUgcGxhY2VtZW50IHRoYXQgZml0cyB0aGUgYmVzdCBvbiB0aGUgbWFpbiBjcm9zc0F4aXMgc2lkZS5cbiAgICAgICAgbGV0IHJlc2V0UGxhY2VtZW50ID0gKF9vdmVyZmxvd3NEYXRhJGZpbHRlciA9IG92ZXJmbG93c0RhdGEuZmlsdGVyKGQgPT4gZC5vdmVyZmxvd3NbMF0gPD0gMCkuc29ydCgoYSwgYikgPT4gYS5vdmVyZmxvd3NbMV0gLSBiLm92ZXJmbG93c1sxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIucGxhY2VtZW50O1xuXG4gICAgICAgIC8vIE90aGVyd2lzZSBmYWxsYmFjay5cbiAgICAgICAgaWYgKCFyZXNldFBsYWNlbWVudCkge1xuICAgICAgICAgIHN3aXRjaCAoZmFsbGJhY2tTdHJhdGVneSkge1xuICAgICAgICAgICAgY2FzZSAnYmVzdEZpdCc6XG4gICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICB2YXIgX292ZXJmbG93c0RhdGEkbWFwJHNvO1xuICAgICAgICAgICAgICAgIGNvbnN0IHBsYWNlbWVudCA9IChfb3ZlcmZsb3dzRGF0YSRtYXAkc28gPSBvdmVyZmxvd3NEYXRhLm1hcChkID0+IFtkLnBsYWNlbWVudCwgZC5vdmVyZmxvd3MuZmlsdGVyKG92ZXJmbG93ID0+IG92ZXJmbG93ID4gMCkucmVkdWNlKChhY2MsIG92ZXJmbG93KSA9PiBhY2MgKyBvdmVyZmxvdywgMCldKS5zb3J0KChhLCBiKSA9PiBhWzFdIC0gYlsxXSlbMF0pID09IG51bGwgPyB2b2lkIDAgOiBfb3ZlcmZsb3dzRGF0YSRtYXAkc29bMF07XG4gICAgICAgICAgICAgICAgaWYgKHBsYWNlbWVudCkge1xuICAgICAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBwbGFjZW1lbnQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBjYXNlICdpbml0aWFsUGxhY2VtZW50JzpcbiAgICAgICAgICAgICAgcmVzZXRQbGFjZW1lbnQgPSBpbml0aWFsUGxhY2VtZW50O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBsYWNlbWVudCAhPT0gcmVzZXRQbGFjZW1lbnQpIHtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgICAgcGxhY2VtZW50OiByZXNldFBsYWNlbWVudFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG4gIH07XG59O1xuXG5mdW5jdGlvbiBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdCkge1xuICByZXR1cm4ge1xuICAgIHRvcDogb3ZlcmZsb3cudG9wIC0gcmVjdC5oZWlnaHQsXG4gICAgcmlnaHQ6IG92ZXJmbG93LnJpZ2h0IC0gcmVjdC53aWR0aCxcbiAgICBib3R0b206IG92ZXJmbG93LmJvdHRvbSAtIHJlY3QuaGVpZ2h0LFxuICAgIGxlZnQ6IG92ZXJmbG93LmxlZnQgLSByZWN0LndpZHRoXG4gIH07XG59XG5mdW5jdGlvbiBpc0FueVNpZGVGdWxseUNsaXBwZWQob3ZlcmZsb3cpIHtcbiAgcmV0dXJuIHNpZGVzLnNvbWUoc2lkZSA9PiBvdmVyZmxvd1tzaWRlXSA+PSAwKTtcbn1cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBoaWRlIHRoZSBmbG9hdGluZyBlbGVtZW50IGluIGFwcGxpY2FibGUgc2l0dWF0aW9ucywgc3VjaCBhc1xuICogd2hlbiBpdCBpcyBub3QgaW4gdGhlIHNhbWUgY2xpcHBpbmcgY29udGV4dCBhcyB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvaGlkZVxuICovXG5jb25zdCBoaWRlID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdoaWRlJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHJlY3RzXG4gICAgICB9ID0gc3RhdGU7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHN0cmF0ZWd5ID0gJ3JlZmVyZW5jZUhpZGRlbicsXG4gICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIHN3aXRjaCAoc3RyYXRlZ3kpIHtcbiAgICAgICAgY2FzZSAncmVmZXJlbmNlSGlkZGVuJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgZWxlbWVudENvbnRleHQ6ICdyZWZlcmVuY2UnXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnN0IG9mZnNldHMgPSBnZXRTaWRlT2Zmc2V0cyhvdmVyZmxvdywgcmVjdHMucmVmZXJlbmNlKTtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICByZWZlcmVuY2VIaWRkZW5PZmZzZXRzOiBvZmZzZXRzLFxuICAgICAgICAgICAgICAgIHJlZmVyZW5jZUhpZGRlbjogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBjYXNlICdlc2NhcGVkJzpcbiAgICAgICAgICB7XG4gICAgICAgICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCB7XG4gICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9ucyxcbiAgICAgICAgICAgICAgYWx0Qm91bmRhcnk6IHRydWVcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgY29uc3Qgb2Zmc2V0cyA9IGdldFNpZGVPZmZzZXRzKG92ZXJmbG93LCByZWN0cy5mbG9hdGluZyk7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICBkYXRhOiB7XG4gICAgICAgICAgICAgICAgZXNjYXBlZE9mZnNldHM6IG9mZnNldHMsXG4gICAgICAgICAgICAgICAgZXNjYXBlZDogaXNBbnlTaWRlRnVsbHlDbGlwcGVkKG9mZnNldHMpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgfVxuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHtcbiAgICAgICAgICAgIHJldHVybiB7fTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdSZWN0KHJlY3RzKSB7XG4gIGNvbnN0IG1pblggPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5sZWZ0KSk7XG4gIGNvbnN0IG1pblkgPSBtaW4oLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC50b3ApKTtcbiAgY29uc3QgbWF4WCA9IG1heCguLi5yZWN0cy5tYXAocmVjdCA9PiByZWN0LnJpZ2h0KSk7XG4gIGNvbnN0IG1heFkgPSBtYXgoLi4ucmVjdHMubWFwKHJlY3QgPT4gcmVjdC5ib3R0b20pKTtcbiAgcmV0dXJuIHtcbiAgICB4OiBtaW5YLFxuICAgIHk6IG1pblksXG4gICAgd2lkdGg6IG1heFggLSBtaW5YLFxuICAgIGhlaWdodDogbWF4WSAtIG1pbllcbiAgfTtcbn1cbmZ1bmN0aW9uIGdldFJlY3RzQnlMaW5lKHJlY3RzKSB7XG4gIGNvbnN0IHNvcnRlZFJlY3RzID0gcmVjdHMuc2xpY2UoKS5zb3J0KChhLCBiKSA9PiBhLnkgLSBiLnkpO1xuICBjb25zdCBncm91cHMgPSBbXTtcbiAgbGV0IHByZXZSZWN0ID0gbnVsbDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzb3J0ZWRSZWN0cy5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IHJlY3QgPSBzb3J0ZWRSZWN0c1tpXTtcbiAgICBpZiAoIXByZXZSZWN0IHx8IHJlY3QueSAtIHByZXZSZWN0LnkgPiBwcmV2UmVjdC5oZWlnaHQgLyAyKSB7XG4gICAgICBncm91cHMucHVzaChbcmVjdF0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBncm91cHNbZ3JvdXBzLmxlbmd0aCAtIDFdLnB1c2gocmVjdCk7XG4gICAgfVxuICAgIHByZXZSZWN0ID0gcmVjdDtcbiAgfVxuICByZXR1cm4gZ3JvdXBzLm1hcChyZWN0ID0+IHJlY3RUb0NsaWVudFJlY3QoZ2V0Qm91bmRpbmdSZWN0KHJlY3QpKSk7XG59XG4vKipcbiAqIFByb3ZpZGVzIGltcHJvdmVkIHBvc2l0aW9uaW5nIGZvciBpbmxpbmUgcmVmZXJlbmNlIGVsZW1lbnRzIHRoYXQgY2FuIHNwYW5cbiAqIG92ZXIgbXVsdGlwbGUgbGluZXMsIHN1Y2ggYXMgaHlwZXJsaW5rcyBvciByYW5nZSBzZWxlY3Rpb25zLlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL2lubGluZVxuICovXG5jb25zdCBpbmxpbmUgPSBmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2lubGluZScsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICBwbGFjZW1lbnQsXG4gICAgICAgIGVsZW1lbnRzLFxuICAgICAgICByZWN0cyxcbiAgICAgICAgcGxhdGZvcm0sXG4gICAgICAgIHN0cmF0ZWd5XG4gICAgICB9ID0gc3RhdGU7XG4gICAgICAvLyBBIE1vdXNlRXZlbnQncyBjbGllbnR7WCxZfSBjb29yZHMgY2FuIGJlIHVwIHRvIDIgcGl4ZWxzIG9mZiBhXG4gICAgICAvLyBDbGllbnRSZWN0J3MgYm91bmRzLCBkZXNwaXRlIHRoZSBldmVudCBsaXN0ZW5lciBiZWluZyB0cmlnZ2VyZWQuIEFcbiAgICAgIC8vIHBhZGRpbmcgb2YgMiBzZWVtcyB0byBoYW5kbGUgdGhpcyBpc3N1ZS5cbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGFkZGluZyA9IDIsXG4gICAgICAgIHgsXG4gICAgICAgIHlcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBuYXRpdmVDbGllbnRSZWN0cyA9IEFycmF5LmZyb20oKGF3YWl0IChwbGF0Zm9ybS5nZXRDbGllbnRSZWN0cyA9PSBudWxsID8gdm9pZCAwIDogcGxhdGZvcm0uZ2V0Q2xpZW50UmVjdHMoZWxlbWVudHMucmVmZXJlbmNlKSkpIHx8IFtdKTtcbiAgICAgIGNvbnN0IGNsaWVudFJlY3RzID0gZ2V0UmVjdHNCeUxpbmUobmF0aXZlQ2xpZW50UmVjdHMpO1xuICAgICAgY29uc3QgZmFsbGJhY2sgPSByZWN0VG9DbGllbnRSZWN0KGdldEJvdW5kaW5nUmVjdChuYXRpdmVDbGllbnRSZWN0cykpO1xuICAgICAgY29uc3QgcGFkZGluZ09iamVjdCA9IGdldFNpZGVPYmplY3RGcm9tUGFkZGluZyhwYWRkaW5nKTtcbiAgICAgIGZ1bmN0aW9uIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIHtcbiAgICAgICAgLy8gVGhlcmUgYXJlIHR3byByZWN0cyBhbmQgdGhleSBhcmUgZGlzam9pbmVkLlxuICAgICAgICBpZiAoY2xpZW50UmVjdHMubGVuZ3RoID09PSAyICYmIGNsaWVudFJlY3RzWzBdLmxlZnQgPiBjbGllbnRSZWN0c1sxXS5yaWdodCAmJiB4ICE9IG51bGwgJiYgeSAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gRmluZCB0aGUgZmlyc3QgcmVjdCBpbiB3aGljaCB0aGUgcG9pbnQgaXMgZnVsbHkgaW5zaWRlLlxuICAgICAgICAgIHJldHVybiBjbGllbnRSZWN0cy5maW5kKHJlY3QgPT4geCA+IHJlY3QubGVmdCAtIHBhZGRpbmdPYmplY3QubGVmdCAmJiB4IDwgcmVjdC5yaWdodCArIHBhZGRpbmdPYmplY3QucmlnaHQgJiYgeSA+IHJlY3QudG9wIC0gcGFkZGluZ09iamVjdC50b3AgJiYgeSA8IHJlY3QuYm90dG9tICsgcGFkZGluZ09iamVjdC5ib3R0b20pIHx8IGZhbGxiYWNrO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gVGhlcmUgYXJlIDIgb3IgbW9yZSBjb25uZWN0ZWQgcmVjdHMuXG4gICAgICAgIGlmIChjbGllbnRSZWN0cy5sZW5ndGggPj0gMikge1xuICAgICAgICAgIGlmIChnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQocGxhY2VtZW50KSA9PT0gJ3gnKSB7XG4gICAgICAgICAgICBjb25zdCBmaXJzdFJlY3QgPSBjbGllbnRSZWN0c1swXTtcbiAgICAgICAgICAgIGNvbnN0IGxhc3RSZWN0ID0gY2xpZW50UmVjdHNbY2xpZW50UmVjdHMubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCBpc1RvcCA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ3RvcCc7XG4gICAgICAgICAgICBjb25zdCB0b3AgPSBmaXJzdFJlY3QudG9wO1xuICAgICAgICAgICAgY29uc3QgYm90dG9tID0gbGFzdFJlY3QuYm90dG9tO1xuICAgICAgICAgICAgY29uc3QgbGVmdCA9IGlzVG9wID8gZmlyc3RSZWN0LmxlZnQgOiBsYXN0UmVjdC5sZWZ0O1xuICAgICAgICAgICAgY29uc3QgcmlnaHQgPSBpc1RvcCA/IGZpcnN0UmVjdC5yaWdodCA6IGxhc3RSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgY29uc3Qgd2lkdGggPSByaWdodCAtIGxlZnQ7XG4gICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBib3R0b20gLSB0b3A7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB0b3AsXG4gICAgICAgICAgICAgIGJvdHRvbSxcbiAgICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgICAgcmlnaHQsXG4gICAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICAgIHg6IGxlZnQsXG4gICAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgaXNMZWZ0U2lkZSA9IGdldFNpZGUocGxhY2VtZW50KSA9PT0gJ2xlZnQnO1xuICAgICAgICAgIGNvbnN0IG1heFJpZ2h0ID0gbWF4KC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QucmlnaHQpKTtcbiAgICAgICAgICBjb25zdCBtaW5MZWZ0ID0gbWluKC4uLmNsaWVudFJlY3RzLm1hcChyZWN0ID0+IHJlY3QubGVmdCkpO1xuICAgICAgICAgIGNvbnN0IG1lYXN1cmVSZWN0cyA9IGNsaWVudFJlY3RzLmZpbHRlcihyZWN0ID0+IGlzTGVmdFNpZGUgPyByZWN0LmxlZnQgPT09IG1pbkxlZnQgOiByZWN0LnJpZ2h0ID09PSBtYXhSaWdodCk7XG4gICAgICAgICAgY29uc3QgdG9wID0gbWVhc3VyZVJlY3RzWzBdLnRvcDtcbiAgICAgICAgICBjb25zdCBib3R0b20gPSBtZWFzdXJlUmVjdHNbbWVhc3VyZVJlY3RzLmxlbmd0aCAtIDFdLmJvdHRvbTtcbiAgICAgICAgICBjb25zdCBsZWZ0ID0gbWluTGVmdDtcbiAgICAgICAgICBjb25zdCByaWdodCA9IG1heFJpZ2h0O1xuICAgICAgICAgIGNvbnN0IHdpZHRoID0gcmlnaHQgLSBsZWZ0O1xuICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGJvdHRvbSAtIHRvcDtcbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG9wLFxuICAgICAgICAgICAgYm90dG9tLFxuICAgICAgICAgICAgbGVmdCxcbiAgICAgICAgICAgIHJpZ2h0LFxuICAgICAgICAgICAgd2lkdGgsXG4gICAgICAgICAgICBoZWlnaHQsXG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogdG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsbGJhY2s7XG4gICAgICB9XG4gICAgICBjb25zdCByZXNldFJlY3RzID0gYXdhaXQgcGxhdGZvcm0uZ2V0RWxlbWVudFJlY3RzKHtcbiAgICAgICAgcmVmZXJlbmNlOiB7XG4gICAgICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG4gICAgICAgIH0sXG4gICAgICAgIGZsb2F0aW5nOiBlbGVtZW50cy5mbG9hdGluZyxcbiAgICAgICAgc3RyYXRlZ3lcbiAgICAgIH0pO1xuICAgICAgaWYgKHJlY3RzLnJlZmVyZW5jZS54ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS54IHx8IHJlY3RzLnJlZmVyZW5jZS55ICE9PSByZXNldFJlY3RzLnJlZmVyZW5jZS55IHx8IHJlY3RzLnJlZmVyZW5jZS53aWR0aCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2Uud2lkdGggfHwgcmVjdHMucmVmZXJlbmNlLmhlaWdodCAhPT0gcmVzZXRSZWN0cy5yZWZlcmVuY2UuaGVpZ2h0KSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgcmVzZXQ6IHtcbiAgICAgICAgICAgIHJlY3RzOiByZXNldFJlY3RzXG4gICAgICAgICAgfVxuICAgICAgICB9O1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbmFzeW5jIGZ1bmN0aW9uIGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKSB7XG4gIGNvbnN0IHtcbiAgICBwbGFjZW1lbnQsXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHNcbiAgfSA9IHN0YXRlO1xuICBjb25zdCBydGwgPSBhd2FpdCAocGxhdGZvcm0uaXNSVEwgPT0gbnVsbCA/IHZvaWQgMCA6IHBsYXRmb3JtLmlzUlRMKGVsZW1lbnRzLmZsb2F0aW5nKSk7XG4gIGNvbnN0IHNpZGUgPSBnZXRTaWRlKHBsYWNlbWVudCk7XG4gIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICBjb25zdCBpc1ZlcnRpY2FsID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCkgPT09ICd4JztcbiAgY29uc3QgbWFpbkF4aXNNdWx0aSA9IFsnbGVmdCcsICd0b3AnXS5pbmNsdWRlcyhzaWRlKSA/IC0xIDogMTtcbiAgY29uc3QgY3Jvc3NBeGlzTXVsdGkgPSBydGwgJiYgaXNWZXJ0aWNhbCA/IC0xIDogMTtcbiAgY29uc3QgcmF3VmFsdWUgPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHByZWZlci1jb25zdFxuICBsZXQge1xuICAgIG1haW5BeGlzLFxuICAgIGNyb3NzQXhpcyxcbiAgICBhbGlnbm1lbnRBeGlzXG4gIH0gPSB0eXBlb2YgcmF3VmFsdWUgPT09ICdudW1iZXInID8ge1xuICAgIG1haW5BeGlzOiByYXdWYWx1ZSxcbiAgICBjcm9zc0F4aXM6IDAsXG4gICAgYWxpZ25tZW50QXhpczogbnVsbFxuICB9IDoge1xuICAgIG1haW5BeGlzOiAwLFxuICAgIGNyb3NzQXhpczogMCxcbiAgICBhbGlnbm1lbnRBeGlzOiBudWxsLFxuICAgIC4uLnJhd1ZhbHVlXG4gIH07XG4gIGlmIChhbGlnbm1lbnQgJiYgdHlwZW9mIGFsaWdubWVudEF4aXMgPT09ICdudW1iZXInKSB7XG4gICAgY3Jvc3NBeGlzID0gYWxpZ25tZW50ID09PSAnZW5kJyA/IGFsaWdubWVudEF4aXMgKiAtMSA6IGFsaWdubWVudEF4aXM7XG4gIH1cbiAgcmV0dXJuIGlzVmVydGljYWwgPyB7XG4gICAgeDogY3Jvc3NBeGlzICogY3Jvc3NBeGlzTXVsdGksXG4gICAgeTogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpXG4gIH0gOiB7XG4gICAgeDogbWFpbkF4aXMgKiBtYWluQXhpc011bHRpLFxuICAgIHk6IGNyb3NzQXhpcyAqIGNyb3NzQXhpc011bHRpXG4gIH07XG59XG5cbi8qKlxuICogTW9kaWZpZXMgdGhlIHBsYWNlbWVudCBieSB0cmFuc2xhdGluZyB0aGUgZmxvYXRpbmcgZWxlbWVudCBhbG9uZyB0aGVcbiAqIHNwZWNpZmllZCBheGVzLlxuICogQSBudW1iZXIgKHNob3J0aGFuZCBmb3IgYG1haW5BeGlzYCBvciBkaXN0YW5jZSksIG9yIGFuIGF4ZXMgY29uZmlndXJhdGlvblxuICogb2JqZWN0IG1heSBiZSBwYXNzZWQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvb2Zmc2V0XG4gKi9cbmNvbnN0IG9mZnNldCA9IGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0gMDtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdvZmZzZXQnLFxuICAgIG9wdGlvbnMsXG4gICAgYXN5bmMgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3QgZGlmZkNvb3JkcyA9IGF3YWl0IGNvbnZlcnRWYWx1ZVRvQ29vcmRzKHN0YXRlLCBvcHRpb25zKTtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHg6IHggKyBkaWZmQ29vcmRzLngsXG4gICAgICAgIHk6IHkgKyBkaWZmQ29vcmRzLnksXG4gICAgICAgIGRhdGE6IGRpZmZDb29yZHNcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuZnVuY3Rpb24gZ2V0Q3Jvc3NBeGlzKGF4aXMpIHtcbiAgcmV0dXJuIGF4aXMgPT09ICd4JyA/ICd5JyA6ICd4Jztcbn1cblxuLyoqXG4gKiBPcHRpbWl6ZXMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQgYnkgc2hpZnRpbmcgaXQgaW4gb3JkZXIgdG9cbiAqIGtlZXAgaXQgaW4gdmlldyB3aGVuIGl0IHdpbGwgb3ZlcmZsb3cgdGhlIGNsaXBwaW5nIGJvdW5kYXJ5LlxuICogQHNlZSBodHRwczovL2Zsb2F0aW5nLXVpLmNvbS9kb2NzL3NoaWZ0XG4gKi9cbmNvbnN0IHNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaGlmdCcsXG4gICAgb3B0aW9ucyxcbiAgICBhc3luYyBmbihzdGF0ZSkge1xuICAgICAgY29uc3Qge1xuICAgICAgICB4LFxuICAgICAgICB5LFxuICAgICAgICBwbGFjZW1lbnRcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gZmFsc2UsXG4gICAgICAgIGxpbWl0ZXIgPSB7XG4gICAgICAgICAgZm46IF9yZWYgPT4ge1xuICAgICAgICAgICAgbGV0IHtcbiAgICAgICAgICAgICAgeCxcbiAgICAgICAgICAgICAgeVxuICAgICAgICAgICAgfSA9IF9yZWY7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICB4LFxuICAgICAgICAgICAgICB5XG4gICAgICAgICAgICB9O1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zXG4gICAgICB9ID0gZXZhbHVhdGUob3B0aW9ucywgc3RhdGUpO1xuICAgICAgY29uc3QgY29vcmRzID0ge1xuICAgICAgICB4LFxuICAgICAgICB5XG4gICAgICB9O1xuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBhd2FpdCBkZXRlY3RPdmVyZmxvdyhzdGF0ZSwgZGV0ZWN0T3ZlcmZsb3dPcHRpb25zKTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KGdldFNpZGUocGxhY2VtZW50KSk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBpZiAoY2hlY2tNYWluQXhpcykge1xuICAgICAgICBjb25zdCBtaW5TaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gbWFpbkF4aXMgPT09ICd5JyA/ICdib3R0b20nIDogJ3JpZ2h0JztcbiAgICAgICAgY29uc3QgbWluID0gbWFpbkF4aXNDb29yZCArIG92ZXJmbG93W21pblNpZGVdO1xuICAgICAgICBjb25zdCBtYXggPSBtYWluQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIG1haW5BeGlzQ29vcmQgPSB3aXRoaW4obWluLCBtYWluQXhpc0Nvb3JkLCBtYXgpO1xuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1pblNpZGUgPSBjcm9zc0F4aXMgPT09ICd5JyA/ICd0b3AnIDogJ2xlZnQnO1xuICAgICAgICBjb25zdCBtYXhTaWRlID0gY3Jvc3NBeGlzID09PSAneScgPyAnYm90dG9tJyA6ICdyaWdodCc7XG4gICAgICAgIGNvbnN0IG1pbiA9IGNyb3NzQXhpc0Nvb3JkICsgb3ZlcmZsb3dbbWluU2lkZV07XG4gICAgICAgIGNvbnN0IG1heCA9IGNyb3NzQXhpc0Nvb3JkIC0gb3ZlcmZsb3dbbWF4U2lkZV07XG4gICAgICAgIGNyb3NzQXhpc0Nvb3JkID0gd2l0aGluKG1pbiwgY3Jvc3NBeGlzQ29vcmQsIG1heCk7XG4gICAgICB9XG4gICAgICBjb25zdCBsaW1pdGVkQ29vcmRzID0gbGltaXRlci5mbih7XG4gICAgICAgIC4uLnN0YXRlLFxuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubGltaXRlZENvb3JkcyxcbiAgICAgICAgZGF0YToge1xuICAgICAgICAgIHg6IGxpbWl0ZWRDb29yZHMueCAtIHgsXG4gICAgICAgICAgeTogbGltaXRlZENvb3Jkcy55IC0geVxuICAgICAgICB9XG4gICAgICB9O1xuICAgIH1cbiAgfTtcbn07XG4vKipcbiAqIEJ1aWx0LWluIGBsaW1pdGVyYCB0aGF0IHdpbGwgc3RvcCBgc2hpZnQoKWAgYXQgYSBjZXJ0YWluIHBvaW50LlxuICovXG5jb25zdCBsaW1pdFNoaWZ0ID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG9wdGlvbnMsXG4gICAgZm4oc3RhdGUpIHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgeCxcbiAgICAgICAgeSxcbiAgICAgICAgcGxhY2VtZW50LFxuICAgICAgICByZWN0cyxcbiAgICAgICAgbWlkZGxld2FyZURhdGFcbiAgICAgIH0gPSBzdGF0ZTtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgb2Zmc2V0ID0gMCxcbiAgICAgICAgbWFpbkF4aXM6IGNoZWNrTWFpbkF4aXMgPSB0cnVlLFxuICAgICAgICBjcm9zc0F4aXM6IGNoZWNrQ3Jvc3NBeGlzID0gdHJ1ZVxuICAgICAgfSA9IGV2YWx1YXRlKG9wdGlvbnMsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvb3JkcyA9IHtcbiAgICAgICAgeCxcbiAgICAgICAgeVxuICAgICAgfTtcbiAgICAgIGNvbnN0IG1haW5BeGlzID0gZ2V0TWFpbkF4aXNGcm9tUGxhY2VtZW50KHBsYWNlbWVudCk7XG4gICAgICBjb25zdCBjcm9zc0F4aXMgPSBnZXRDcm9zc0F4aXMobWFpbkF4aXMpO1xuICAgICAgbGV0IG1haW5BeGlzQ29vcmQgPSBjb29yZHNbbWFpbkF4aXNdO1xuICAgICAgbGV0IGNyb3NzQXhpc0Nvb3JkID0gY29vcmRzW2Nyb3NzQXhpc107XG4gICAgICBjb25zdCByYXdPZmZzZXQgPSBldmFsdWF0ZShvZmZzZXQsIHN0YXRlKTtcbiAgICAgIGNvbnN0IGNvbXB1dGVkT2Zmc2V0ID0gdHlwZW9mIHJhd09mZnNldCA9PT0gJ251bWJlcicgPyB7XG4gICAgICAgIG1haW5BeGlzOiByYXdPZmZzZXQsXG4gICAgICAgIGNyb3NzQXhpczogMFxuICAgICAgfSA6IHtcbiAgICAgICAgbWFpbkF4aXM6IDAsXG4gICAgICAgIGNyb3NzQXhpczogMCxcbiAgICAgICAgLi4ucmF3T2Zmc2V0XG4gICAgICB9O1xuICAgICAgaWYgKGNoZWNrTWFpbkF4aXMpIHtcbiAgICAgICAgY29uc3QgbGVuID0gbWFpbkF4aXMgPT09ICd5JyA/ICdoZWlnaHQnIDogJ3dpZHRoJztcbiAgICAgICAgY29uc3QgbGltaXRNaW4gPSByZWN0cy5yZWZlcmVuY2VbbWFpbkF4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBjb25zdCBsaW1pdE1heCA9IHJlY3RzLnJlZmVyZW5jZVttYWluQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSAtIGNvbXB1dGVkT2Zmc2V0Lm1haW5BeGlzO1xuICAgICAgICBpZiAobWFpbkF4aXNDb29yZCA8IGxpbWl0TWluKSB7XG4gICAgICAgICAgbWFpbkF4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKG1haW5BeGlzQ29vcmQgPiBsaW1pdE1heCkge1xuICAgICAgICAgIG1haW5BeGlzQ29vcmQgPSBsaW1pdE1heDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGNoZWNrQ3Jvc3NBeGlzKSB7XG4gICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkb2Zmc2UsIF9taWRkbGV3YXJlRGF0YSRvZmZzZTI7XG4gICAgICAgIGNvbnN0IGxlbiA9IG1haW5BeGlzID09PSAneScgPyAnd2lkdGgnIDogJ2hlaWdodCc7XG4gICAgICAgIGNvbnN0IGlzT3JpZ2luU2lkZSA9IFsndG9wJywgJ2xlZnQnXS5pbmNsdWRlcyhnZXRTaWRlKHBsYWNlbWVudCkpO1xuICAgICAgICBjb25zdCBsaW1pdE1pbiA9IHJlY3RzLnJlZmVyZW5jZVtjcm9zc0F4aXNdIC0gcmVjdHMuZmxvYXRpbmdbbGVuXSArIChpc09yaWdpblNpZGUgPyAoKF9taWRkbGV3YXJlRGF0YSRvZmZzZSA9IG1pZGRsZXdhcmVEYXRhLm9mZnNldCkgPT0gbnVsbCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRvZmZzZVtjcm9zc0F4aXNdKSB8fCAwIDogMCkgKyAoaXNPcmlnaW5TaWRlID8gMCA6IGNvbXB1dGVkT2Zmc2V0LmNyb3NzQXhpcyk7XG4gICAgICAgIGNvbnN0IGxpbWl0TWF4ID0gcmVjdHMucmVmZXJlbmNlW2Nyb3NzQXhpc10gKyByZWN0cy5yZWZlcmVuY2VbbGVuXSArIChpc09yaWdpblNpZGUgPyAwIDogKChfbWlkZGxld2FyZURhdGEkb2Zmc2UyID0gbWlkZGxld2FyZURhdGEub2Zmc2V0KSA9PSBudWxsID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJG9mZnNlMltjcm9zc0F4aXNdKSB8fCAwKSAtIChpc09yaWdpblNpZGUgPyBjb21wdXRlZE9mZnNldC5jcm9zc0F4aXMgOiAwKTtcbiAgICAgICAgaWYgKGNyb3NzQXhpc0Nvb3JkIDwgbGltaXRNaW4pIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWluO1xuICAgICAgICB9IGVsc2UgaWYgKGNyb3NzQXhpc0Nvb3JkID4gbGltaXRNYXgpIHtcbiAgICAgICAgICBjcm9zc0F4aXNDb29yZCA9IGxpbWl0TWF4O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBbbWFpbkF4aXNdOiBtYWluQXhpc0Nvb3JkLFxuICAgICAgICBbY3Jvc3NBeGlzXTogY3Jvc3NBeGlzQ29vcmRcbiAgICAgIH07XG4gICAgfVxuICB9O1xufTtcblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRoYXQgYWxsb3dzIHlvdSB0byBjaGFuZ2UgdGhlIHNpemUgb2YgdGhlIGZsb2F0aW5nIGVsZW1lbnQg4oCUXG4gKiBmb3IgaW5zdGFuY2UsIHByZXZlbnQgaXQgZnJvbSBvdmVyZmxvd2luZyB0aGUgY2xpcHBpbmcgYm91bmRhcnkgb3IgbWF0Y2ggdGhlXG4gKiB3aWR0aCBvZiB0aGUgcmVmZXJlbmNlIGVsZW1lbnQuXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3Mvc2l6ZVxuICovXG5jb25zdCBzaXplID0gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuICByZXR1cm4ge1xuICAgIG5hbWU6ICdzaXplJyxcbiAgICBvcHRpb25zLFxuICAgIGFzeW5jIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIHBsYWNlbWVudCxcbiAgICAgICAgcmVjdHMsXG4gICAgICAgIHBsYXRmb3JtLFxuICAgICAgICBlbGVtZW50c1xuICAgICAgfSA9IHN0YXRlO1xuICAgICAgY29uc3Qge1xuICAgICAgICBhcHBseSA9ICgpID0+IHt9LFxuICAgICAgICAuLi5kZXRlY3RPdmVyZmxvd09wdGlvbnNcbiAgICAgIH0gPSBldmFsdWF0ZShvcHRpb25zLCBzdGF0ZSk7XG4gICAgICBjb25zdCBvdmVyZmxvdyA9IGF3YWl0IGRldGVjdE92ZXJmbG93KHN0YXRlLCBkZXRlY3RPdmVyZmxvd09wdGlvbnMpO1xuICAgICAgY29uc3Qgc2lkZSA9IGdldFNpZGUocGxhY2VtZW50KTtcbiAgICAgIGNvbnN0IGFsaWdubWVudCA9IGdldEFsaWdubWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgYXhpcyA9IGdldE1haW5BeGlzRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgY29uc3QgaXNYQXhpcyA9IGF4aXMgPT09ICd4JztcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodFxuICAgICAgfSA9IHJlY3RzLmZsb2F0aW5nO1xuICAgICAgbGV0IGhlaWdodFNpZGU7XG4gICAgICBsZXQgd2lkdGhTaWRlO1xuICAgICAgaWYgKHNpZGUgPT09ICd0b3AnIHx8IHNpZGUgPT09ICdib3R0b20nKSB7XG4gICAgICAgIGhlaWdodFNpZGUgPSBzaWRlO1xuICAgICAgICB3aWR0aFNpZGUgPSBhbGlnbm1lbnQgPT09ICgoYXdhaXQgKHBsYXRmb3JtLmlzUlRMID09IG51bGwgPyB2b2lkIDAgOiBwbGF0Zm9ybS5pc1JUTChlbGVtZW50cy5mbG9hdGluZykpKSA/ICdzdGFydCcgOiAnZW5kJykgPyAnbGVmdCcgOiAncmlnaHQnO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2lkdGhTaWRlID0gc2lkZTtcbiAgICAgICAgaGVpZ2h0U2lkZSA9IGFsaWdubWVudCA9PT0gJ2VuZCcgPyAndG9wJyA6ICdib3R0b20nO1xuICAgICAgfVxuICAgICAgY29uc3Qgb3ZlcmZsb3dBdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvd1toZWlnaHRTaWRlXTtcbiAgICAgIGNvbnN0IG92ZXJmbG93QXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIG92ZXJmbG93W3dpZHRoU2lkZV07XG4gICAgICBjb25zdCBub1NoaWZ0ID0gIXN0YXRlLm1pZGRsZXdhcmVEYXRhLnNoaWZ0O1xuICAgICAgbGV0IGF2YWlsYWJsZUhlaWdodCA9IG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0O1xuICAgICAgbGV0IGF2YWlsYWJsZVdpZHRoID0gb3ZlcmZsb3dBdmFpbGFibGVXaWR0aDtcbiAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgIGNvbnN0IG1heGltdW1DbGlwcGluZ1dpZHRoID0gd2lkdGggLSBvdmVyZmxvdy5sZWZ0IC0gb3ZlcmZsb3cucmlnaHQ7XG4gICAgICAgIGF2YWlsYWJsZVdpZHRoID0gYWxpZ25tZW50IHx8IG5vU2hpZnQgPyBtaW4ob3ZlcmZsb3dBdmFpbGFibGVXaWR0aCwgbWF4aW11bUNsaXBwaW5nV2lkdGgpIDogbWF4aW11bUNsaXBwaW5nV2lkdGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQgPSBoZWlnaHQgLSBvdmVyZmxvdy50b3AgLSBvdmVyZmxvdy5ib3R0b207XG4gICAgICAgIGF2YWlsYWJsZUhlaWdodCA9IGFsaWdubWVudCB8fCBub1NoaWZ0ID8gbWluKG92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0LCBtYXhpbXVtQ2xpcHBpbmdIZWlnaHQpIDogbWF4aW11bUNsaXBwaW5nSGVpZ2h0O1xuICAgICAgfVxuICAgICAgaWYgKG5vU2hpZnQgJiYgIWFsaWdubWVudCkge1xuICAgICAgICBjb25zdCB4TWluID0gbWF4KG92ZXJmbG93LmxlZnQsIDApO1xuICAgICAgICBjb25zdCB4TWF4ID0gbWF4KG92ZXJmbG93LnJpZ2h0LCAwKTtcbiAgICAgICAgY29uc3QgeU1pbiA9IG1heChvdmVyZmxvdy50b3AsIDApO1xuICAgICAgICBjb25zdCB5TWF4ID0gbWF4KG92ZXJmbG93LmJvdHRvbSwgMCk7XG4gICAgICAgIGlmIChpc1hBeGlzKSB7XG4gICAgICAgICAgYXZhaWxhYmxlV2lkdGggPSB3aWR0aCAtIDIgKiAoeE1pbiAhPT0gMCB8fCB4TWF4ICE9PSAwID8geE1pbiArIHhNYXggOiBtYXgob3ZlcmZsb3cubGVmdCwgb3ZlcmZsb3cucmlnaHQpKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhdmFpbGFibGVIZWlnaHQgPSBoZWlnaHQgLSAyICogKHlNaW4gIT09IDAgfHwgeU1heCAhPT0gMCA/IHlNaW4gKyB5TWF4IDogbWF4KG92ZXJmbG93LnRvcCwgb3ZlcmZsb3cuYm90dG9tKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGF3YWl0IGFwcGx5KHtcbiAgICAgICAgLi4uc3RhdGUsXG4gICAgICAgIGF2YWlsYWJsZVdpZHRoLFxuICAgICAgICBhdmFpbGFibGVIZWlnaHRcbiAgICAgIH0pO1xuICAgICAgY29uc3QgbmV4dERpbWVuc2lvbnMgPSBhd2FpdCBwbGF0Zm9ybS5nZXREaW1lbnNpb25zKGVsZW1lbnRzLmZsb2F0aW5nKTtcbiAgICAgIGlmICh3aWR0aCAhPT0gbmV4dERpbWVuc2lvbnMud2lkdGggfHwgaGVpZ2h0ICE9PSBuZXh0RGltZW5zaW9ucy5oZWlnaHQpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByZXNldDoge1xuICAgICAgICAgICAgcmVjdHM6IHRydWVcbiAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuICB9O1xufTtcblxuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGhpZGUsIGlubGluZSwgbGltaXRTaGlmdCwgb2Zmc2V0LCByZWN0VG9DbGllbnRSZWN0LCBzaGlmdCwgc2l6ZSB9O1xuIiwiaW1wb3J0IHsgcmVjdFRvQ2xpZW50UmVjdCwgY29tcHV0ZVBvc2l0aW9uIGFzIGNvbXB1dGVQb3NpdGlvbiQxIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2NvcmUnO1xuZXhwb3J0IHsgYXJyb3csIGF1dG9QbGFjZW1lbnQsIGRldGVjdE92ZXJmbG93LCBmbGlwLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgc2hpZnQsIHNpemUgfSBmcm9tICdAZmxvYXRpbmctdWkvY29yZSc7XG5cbmZ1bmN0aW9uIGdldFdpbmRvdyhub2RlKSB7XG4gIHZhciBfbm9kZSRvd25lckRvY3VtZW50O1xuICByZXR1cm4gKChfbm9kZSRvd25lckRvY3VtZW50ID0gbm9kZS5vd25lckRvY3VtZW50KSA9PSBudWxsID8gdm9pZCAwIDogX25vZGUkb3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykgfHwgd2luZG93O1xufVxuXG5mdW5jdGlvbiBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkge1xuICByZXR1cm4gZ2V0V2luZG93KGVsZW1lbnQpLmdldENvbXB1dGVkU3R5bGUoZWxlbWVudCk7XG59XG5cbmZ1bmN0aW9uIGlzTm9kZSh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBnZXRXaW5kb3codmFsdWUpLk5vZGU7XG59XG5mdW5jdGlvbiBnZXROb2RlTmFtZShub2RlKSB7XG4gIHJldHVybiBpc05vZGUobm9kZSkgPyAobm9kZS5ub2RlTmFtZSB8fCAnJykudG9Mb3dlckNhc2UoKSA6ICcnO1xufVxuXG5mdW5jdGlvbiBpc0hUTUxFbGVtZW50KHZhbHVlKSB7XG4gIHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIGdldFdpbmRvdyh2YWx1ZSkuSFRNTEVsZW1lbnQ7XG59XG5mdW5jdGlvbiBpc0VsZW1lbnQodmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlIGluc3RhbmNlb2YgZ2V0V2luZG93KHZhbHVlKS5FbGVtZW50O1xufVxuZnVuY3Rpb24gaXNTaGFkb3dSb290KG5vZGUpIHtcbiAgLy8gQnJvd3NlcnMgd2l0aG91dCBgU2hhZG93Um9vdGAgc3VwcG9ydC5cbiAgaWYgKHR5cGVvZiBTaGFkb3dSb290ID09PSAndW5kZWZpbmVkJykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBjb25zdCBPd25FbGVtZW50ID0gZ2V0V2luZG93KG5vZGUpLlNoYWRvd1Jvb3Q7XG4gIHJldHVybiBub2RlIGluc3RhbmNlb2YgT3duRWxlbWVudCB8fCBub2RlIGluc3RhbmNlb2YgU2hhZG93Um9vdDtcbn1cbmZ1bmN0aW9uIGlzT3ZlcmZsb3dFbGVtZW50KGVsZW1lbnQpIHtcbiAgY29uc3Qge1xuICAgIG92ZXJmbG93LFxuICAgIG92ZXJmbG93WCxcbiAgICBvdmVyZmxvd1ksXG4gICAgZGlzcGxheVxuICB9ID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuICByZXR1cm4gL2F1dG98c2Nyb2xsfG92ZXJsYXl8aGlkZGVufGNsaXAvLnRlc3Qob3ZlcmZsb3cgKyBvdmVyZmxvd1kgKyBvdmVyZmxvd1gpICYmICFbJ2lubGluZScsICdjb250ZW50cyddLmluY2x1ZGVzKGRpc3BsYXkpO1xufVxuZnVuY3Rpb24gaXNUYWJsZUVsZW1lbnQoZWxlbWVudCkge1xuICByZXR1cm4gWyd0YWJsZScsICd0ZCcsICd0aCddLmluY2x1ZGVzKGdldE5vZGVOYW1lKGVsZW1lbnQpKTtcbn1cbmZ1bmN0aW9uIGlzQ29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgY29uc3Qgc2FmYXJpID0gaXNTYWZhcmkoKTtcbiAgY29uc3QgY3NzID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpO1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHJldHVybiBjc3MudHJhbnNmb3JtICE9PSAnbm9uZScgfHwgY3NzLnBlcnNwZWN0aXZlICE9PSAnbm9uZScgfHwgIXNhZmFyaSAmJiAoY3NzLmJhY2tkcm9wRmlsdGVyID8gY3NzLmJhY2tkcm9wRmlsdGVyICE9PSAnbm9uZScgOiBmYWxzZSkgfHwgIXNhZmFyaSAmJiAoY3NzLmZpbHRlciA/IGNzcy5maWx0ZXIgIT09ICdub25lJyA6IGZhbHNlKSB8fCBbJ3RyYW5zZm9ybScsICdwZXJzcGVjdGl2ZScsICdmaWx0ZXInXS5zb21lKHZhbHVlID0+IChjc3Mud2lsbENoYW5nZSB8fCAnJykuaW5jbHVkZXModmFsdWUpKSB8fCBbJ3BhaW50JywgJ2xheW91dCcsICdzdHJpY3QnLCAnY29udGVudCddLnNvbWUodmFsdWUgPT4gKGNzcy5jb250YWluIHx8ICcnKS5pbmNsdWRlcyh2YWx1ZSkpO1xufVxuZnVuY3Rpb24gaXNTYWZhcmkoKSB7XG4gIGlmICh0eXBlb2YgQ1NTID09PSAndW5kZWZpbmVkJyB8fCAhQ1NTLnN1cHBvcnRzKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiBDU1Muc3VwcG9ydHMoJy13ZWJraXQtYmFja2Ryb3AtZmlsdGVyJywgJ25vbmUnKTtcbn1cbmZ1bmN0aW9uIGlzTGFzdFRyYXZlcnNhYmxlTm9kZShub2RlKSB7XG4gIHJldHVybiBbJ2h0bWwnLCAnYm9keScsICcjZG9jdW1lbnQnXS5pbmNsdWRlcyhnZXROb2RlTmFtZShub2RlKSk7XG59XG5cbmNvbnN0IG1pbiA9IE1hdGgubWluO1xuY29uc3QgbWF4ID0gTWF0aC5tYXg7XG5jb25zdCByb3VuZCA9IE1hdGgucm91bmQ7XG5cbmZ1bmN0aW9uIGdldENzc0RpbWVuc2lvbnMoZWxlbWVudCkge1xuICBjb25zdCBjc3MgPSBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCk7XG4gIC8vIEluIHRlc3RpbmcgZW52aXJvbm1lbnRzLCB0aGUgYHdpZHRoYCBhbmQgYGhlaWdodGAgcHJvcGVydGllcyBhcmUgZW1wdHlcbiAgLy8gc3RyaW5ncyBmb3IgU1ZHIGVsZW1lbnRzLCByZXR1cm5pbmcgTmFOLiBGYWxsYmFjayB0byBgMGAgaW4gdGhpcyBjYXNlLlxuICBsZXQgd2lkdGggPSBwYXJzZUZsb2F0KGNzcy53aWR0aCkgfHwgMDtcbiAgbGV0IGhlaWdodCA9IHBhcnNlRmxvYXQoY3NzLmhlaWdodCkgfHwgMDtcbiAgY29uc3QgaGFzT2Zmc2V0ID0gaXNIVE1MRWxlbWVudChlbGVtZW50KTtcbiAgY29uc3Qgb2Zmc2V0V2lkdGggPSBoYXNPZmZzZXQgPyBlbGVtZW50Lm9mZnNldFdpZHRoIDogd2lkdGg7XG4gIGNvbnN0IG9mZnNldEhlaWdodCA9IGhhc09mZnNldCA/IGVsZW1lbnQub2Zmc2V0SGVpZ2h0IDogaGVpZ2h0O1xuICBjb25zdCBzaG91bGRGYWxsYmFjayA9IHJvdW5kKHdpZHRoKSAhPT0gb2Zmc2V0V2lkdGggfHwgcm91bmQoaGVpZ2h0KSAhPT0gb2Zmc2V0SGVpZ2h0O1xuICBpZiAoc2hvdWxkRmFsbGJhY2spIHtcbiAgICB3aWR0aCA9IG9mZnNldFdpZHRoO1xuICAgIGhlaWdodCA9IG9mZnNldEhlaWdodDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICBmYWxsYmFjazogc2hvdWxkRmFsbGJhY2tcbiAgfTtcbn1cblxuZnVuY3Rpb24gdW53cmFwRWxlbWVudChlbGVtZW50KSB7XG4gIHJldHVybiAhaXNFbGVtZW50KGVsZW1lbnQpID8gZWxlbWVudC5jb250ZXh0RWxlbWVudCA6IGVsZW1lbnQ7XG59XG5cbmNvbnN0IEZBTExCQUNLX1NDQUxFID0ge1xuICB4OiAxLFxuICB5OiAxXG59O1xuZnVuY3Rpb24gZ2V0U2NhbGUoZWxlbWVudCkge1xuICBjb25zdCBkb21FbGVtZW50ID0gdW53cmFwRWxlbWVudChlbGVtZW50KTtcbiAgaWYgKCFpc0hUTUxFbGVtZW50KGRvbUVsZW1lbnQpKSB7XG4gICAgcmV0dXJuIEZBTExCQUNLX1NDQUxFO1xuICB9XG4gIGNvbnN0IHJlY3QgPSBkb21FbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICBjb25zdCB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIGZhbGxiYWNrXG4gIH0gPSBnZXRDc3NEaW1lbnNpb25zKGRvbUVsZW1lbnQpO1xuICBsZXQgeCA9IChmYWxsYmFjayA/IHJvdW5kKHJlY3Qud2lkdGgpIDogcmVjdC53aWR0aCkgLyB3aWR0aDtcbiAgbGV0IHkgPSAoZmFsbGJhY2sgPyByb3VuZChyZWN0LmhlaWdodCkgOiByZWN0LmhlaWdodCkgLyBoZWlnaHQ7XG5cbiAgLy8gMCwgTmFOLCBvciBJbmZpbml0eSBzaG91bGQgYWx3YXlzIGZhbGxiYWNrIHRvIDEuXG5cbiAgaWYgKCF4IHx8ICFOdW1iZXIuaXNGaW5pdGUoeCkpIHtcbiAgICB4ID0gMTtcbiAgfVxuICBpZiAoIXkgfHwgIU51bWJlci5pc0Zpbml0ZSh5KSkge1xuICAgIHkgPSAxO1xuICB9XG4gIHJldHVybiB7XG4gICAgeCxcbiAgICB5XG4gIH07XG59XG5cbmNvbnN0IG5vT2Zmc2V0cyA9IHtcbiAgeDogMCxcbiAgeTogMFxufTtcbmZ1bmN0aW9uIGdldFZpc3VhbE9mZnNldHMoZWxlbWVudCwgaXNGaXhlZCwgZmxvYXRpbmdPZmZzZXRQYXJlbnQpIHtcbiAgdmFyIF93aW4kdmlzdWFsVmlld3BvcnQsIF93aW4kdmlzdWFsVmlld3BvcnQyO1xuICBpZiAoaXNGaXhlZCA9PT0gdm9pZCAwKSB7XG4gICAgaXNGaXhlZCA9IHRydWU7XG4gIH1cbiAgaWYgKCFpc1NhZmFyaSgpKSB7XG4gICAgcmV0dXJuIG5vT2Zmc2V0cztcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50ID8gZ2V0V2luZG93KGVsZW1lbnQpIDogd2luZG93O1xuICBpZiAoIWZsb2F0aW5nT2Zmc2V0UGFyZW50IHx8IGlzRml4ZWQgJiYgZmxvYXRpbmdPZmZzZXRQYXJlbnQgIT09IHdpbikge1xuICAgIHJldHVybiBub09mZnNldHM7XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiAoKF93aW4kdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQpID09IG51bGwgPyB2b2lkIDAgOiBfd2luJHZpc3VhbFZpZXdwb3J0Lm9mZnNldExlZnQpIHx8IDAsXG4gICAgeTogKChfd2luJHZpc3VhbFZpZXdwb3J0MiA9IHdpbi52aXN1YWxWaWV3cG9ydCkgPT0gbnVsbCA/IHZvaWQgMCA6IF93aW4kdmlzdWFsVmlld3BvcnQyLm9mZnNldFRvcCkgfHwgMFxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgaW5jbHVkZVNjYWxlLCBpc0ZpeGVkU3RyYXRlZ3ksIG9mZnNldFBhcmVudCkge1xuICBpZiAoaW5jbHVkZVNjYWxlID09PSB2b2lkIDApIHtcbiAgICBpbmNsdWRlU2NhbGUgPSBmYWxzZTtcbiAgfVxuICBpZiAoaXNGaXhlZFN0cmF0ZWd5ID09PSB2b2lkIDApIHtcbiAgICBpc0ZpeGVkU3RyYXRlZ3kgPSBmYWxzZTtcbiAgfVxuICBjb25zdCBjbGllbnRSZWN0ID0gZWxlbWVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgY29uc3QgZG9tRWxlbWVudCA9IHVud3JhcEVsZW1lbnQoZWxlbWVudCk7XG4gIGxldCBzY2FsZSA9IEZBTExCQUNLX1NDQUxFO1xuICBpZiAoaW5jbHVkZVNjYWxlKSB7XG4gICAgaWYgKG9mZnNldFBhcmVudCkge1xuICAgICAgaWYgKGlzRWxlbWVudChvZmZzZXRQYXJlbnQpKSB7XG4gICAgICAgIHNjYWxlID0gZ2V0U2NhbGUob2Zmc2V0UGFyZW50KTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShlbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgY29uc3QgdmlzdWFsT2Zmc2V0cyA9IGdldFZpc3VhbE9mZnNldHMoZG9tRWxlbWVudCwgaXNGaXhlZFN0cmF0ZWd5LCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgeCA9IChjbGllbnRSZWN0LmxlZnQgKyB2aXN1YWxPZmZzZXRzLngpIC8gc2NhbGUueDtcbiAgbGV0IHkgPSAoY2xpZW50UmVjdC50b3AgKyB2aXN1YWxPZmZzZXRzLnkpIC8gc2NhbGUueTtcbiAgbGV0IHdpZHRoID0gY2xpZW50UmVjdC53aWR0aCAvIHNjYWxlLng7XG4gIGxldCBoZWlnaHQgPSBjbGllbnRSZWN0LmhlaWdodCAvIHNjYWxlLnk7XG4gIGlmIChkb21FbGVtZW50KSB7XG4gICAgY29uc3Qgd2luID0gZ2V0V2luZG93KGRvbUVsZW1lbnQpO1xuICAgIGNvbnN0IG9mZnNldFdpbiA9IG9mZnNldFBhcmVudCAmJiBpc0VsZW1lbnQob2Zmc2V0UGFyZW50KSA/IGdldFdpbmRvdyhvZmZzZXRQYXJlbnQpIDogb2Zmc2V0UGFyZW50O1xuICAgIGxldCBjdXJyZW50SUZyYW1lID0gd2luLmZyYW1lRWxlbWVudDtcbiAgICB3aGlsZSAoY3VycmVudElGcmFtZSAmJiBvZmZzZXRQYXJlbnQgJiYgb2Zmc2V0V2luICE9PSB3aW4pIHtcbiAgICAgIGNvbnN0IGlmcmFtZVNjYWxlID0gZ2V0U2NhbGUoY3VycmVudElGcmFtZSk7XG4gICAgICBjb25zdCBpZnJhbWVSZWN0ID0gY3VycmVudElGcmFtZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgIGNvbnN0IGNzcyA9IGdldENvbXB1dGVkU3R5bGUoY3VycmVudElGcmFtZSk7XG4gICAgICBpZnJhbWVSZWN0LnggKz0gKGN1cnJlbnRJRnJhbWUuY2xpZW50TGVmdCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdMZWZ0KSkgKiBpZnJhbWVTY2FsZS54O1xuICAgICAgaWZyYW1lUmVjdC55ICs9IChjdXJyZW50SUZyYW1lLmNsaWVudFRvcCArIHBhcnNlRmxvYXQoY3NzLnBhZGRpbmdUb3ApKSAqIGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICo9IGlmcmFtZVNjYWxlLng7XG4gICAgICB5ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB3aWR0aCAqPSBpZnJhbWVTY2FsZS54O1xuICAgICAgaGVpZ2h0ICo9IGlmcmFtZVNjYWxlLnk7XG4gICAgICB4ICs9IGlmcmFtZVJlY3QueDtcbiAgICAgIHkgKz0gaWZyYW1lUmVjdC55O1xuICAgICAgY3VycmVudElGcmFtZSA9IGdldFdpbmRvdyhjdXJyZW50SUZyYW1lKS5mcmFtZUVsZW1lbnQ7XG4gICAgfVxuICB9XG4gIHJldHVybiByZWN0VG9DbGllbnRSZWN0KHtcbiAgICB3aWR0aCxcbiAgICBoZWlnaHQsXG4gICAgeCxcbiAgICB5XG4gIH0pO1xufVxuXG5mdW5jdGlvbiBnZXREb2N1bWVudEVsZW1lbnQobm9kZSkge1xuICByZXR1cm4gKChpc05vZGUobm9kZSkgPyBub2RlLm93bmVyRG9jdW1lbnQgOiBub2RlLmRvY3VtZW50KSB8fCB3aW5kb3cuZG9jdW1lbnQpLmRvY3VtZW50RWxlbWVudDtcbn1cblxuZnVuY3Rpb24gZ2V0Tm9kZVNjcm9sbChlbGVtZW50KSB7XG4gIGlmIChpc0VsZW1lbnQoZWxlbWVudCkpIHtcbiAgICByZXR1cm4ge1xuICAgICAgc2Nyb2xsTGVmdDogZWxlbWVudC5zY3JvbGxMZWZ0LFxuICAgICAgc2Nyb2xsVG9wOiBlbGVtZW50LnNjcm9sbFRvcFxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHtcbiAgICBzY3JvbGxMZWZ0OiBlbGVtZW50LnBhZ2VYT2Zmc2V0LFxuICAgIHNjcm9sbFRvcDogZWxlbWVudC5wYWdlWU9mZnNldFxuICB9O1xufVxuXG5mdW5jdGlvbiBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdChfcmVmKSB7XG4gIGxldCB7XG4gICAgcmVjdCxcbiAgICBvZmZzZXRQYXJlbnQsXG4gICAgc3RyYXRlZ3lcbiAgfSA9IF9yZWY7XG4gIGNvbnN0IGlzT2Zmc2V0UGFyZW50QW5FbGVtZW50ID0gaXNIVE1MRWxlbWVudChvZmZzZXRQYXJlbnQpO1xuICBjb25zdCBkb2N1bWVudEVsZW1lbnQgPSBnZXREb2N1bWVudEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgaWYgKG9mZnNldFBhcmVudCA9PT0gZG9jdW1lbnRFbGVtZW50KSB7XG4gICAgcmV0dXJuIHJlY3Q7XG4gIH1cbiAgbGV0IHNjcm9sbCA9IHtcbiAgICBzY3JvbGxMZWZ0OiAwLFxuICAgIHNjcm9sbFRvcDogMFxuICB9O1xuICBsZXQgc2NhbGUgPSB7XG4gICAgeDogMSxcbiAgICB5OiAxXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgc3RyYXRlZ3kgIT09ICdmaXhlZCcpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQpO1xuICAgICAgc2NhbGUgPSBnZXRTY2FsZShvZmZzZXRQYXJlbnQpO1xuICAgICAgb2Zmc2V0cy54ID0gb2Zmc2V0UmVjdC54ICsgb2Zmc2V0UGFyZW50LmNsaWVudExlZnQ7XG4gICAgICBvZmZzZXRzLnkgPSBvZmZzZXRSZWN0LnkgKyBvZmZzZXRQYXJlbnQuY2xpZW50VG9wO1xuICAgIH1cbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoOiByZWN0LndpZHRoICogc2NhbGUueCxcbiAgICBoZWlnaHQ6IHJlY3QuaGVpZ2h0ICogc2NhbGUueSxcbiAgICB4OiByZWN0LnggKiBzY2FsZS54IC0gc2Nyb2xsLnNjcm9sbExlZnQgKiBzY2FsZS54ICsgb2Zmc2V0cy54LFxuICAgIHk6IHJlY3QueSAqIHNjYWxlLnkgLSBzY3JvbGwuc2Nyb2xsVG9wICogc2NhbGUueSArIG9mZnNldHMueVxuICB9O1xufVxuXG5mdW5jdGlvbiBnZXRXaW5kb3dTY3JvbGxCYXJYKGVsZW1lbnQpIHtcbiAgLy8gSWYgPGh0bWw+IGhhcyBhIENTUyB3aWR0aCBncmVhdGVyIHRoYW4gdGhlIHZpZXdwb3J0LCB0aGVuIHRoaXMgd2lsbCBiZVxuICAvLyBpbmNvcnJlY3QgZm9yIFJUTC5cbiAgcmV0dXJuIGdldEJvdW5kaW5nQ2xpZW50UmVjdChnZXREb2N1bWVudEVsZW1lbnQoZWxlbWVudCkpLmxlZnQgKyBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpLnNjcm9sbExlZnQ7XG59XG5cbi8vIEdldHMgdGhlIGVudGlyZSBzaXplIG9mIHRoZSBzY3JvbGxhYmxlIGRvY3VtZW50IGFyZWEsIGV2ZW4gZXh0ZW5kaW5nIG91dHNpZGVcbi8vIG9mIHRoZSBgPGh0bWw+YCBhbmQgYDxib2R5PmAgcmVjdCBib3VuZHMgaWYgaG9yaXpvbnRhbGx5IHNjcm9sbGFibGUuXG5mdW5jdGlvbiBnZXREb2N1bWVudFJlY3QoZWxlbWVudCkge1xuICBjb25zdCBodG1sID0gZ2V0RG9jdW1lbnRFbGVtZW50KGVsZW1lbnQpO1xuICBjb25zdCBzY3JvbGwgPSBnZXROb2RlU2Nyb2xsKGVsZW1lbnQpO1xuICBjb25zdCBib2R5ID0gZWxlbWVudC5vd25lckRvY3VtZW50LmJvZHk7XG4gIGNvbnN0IHdpZHRoID0gbWF4KGh0bWwuc2Nyb2xsV2lkdGgsIGh0bWwuY2xpZW50V2lkdGgsIGJvZHkuc2Nyb2xsV2lkdGgsIGJvZHkuY2xpZW50V2lkdGgpO1xuICBjb25zdCBoZWlnaHQgPSBtYXgoaHRtbC5zY3JvbGxIZWlnaHQsIGh0bWwuY2xpZW50SGVpZ2h0LCBib2R5LnNjcm9sbEhlaWdodCwgYm9keS5jbGllbnRIZWlnaHQpO1xuICBsZXQgeCA9IC1zY3JvbGwuc2Nyb2xsTGVmdCArIGdldFdpbmRvd1Njcm9sbEJhclgoZWxlbWVudCk7XG4gIGNvbnN0IHkgPSAtc2Nyb2xsLnNjcm9sbFRvcDtcbiAgaWYgKGdldENvbXB1dGVkU3R5bGUkMShib2R5KS5kaXJlY3Rpb24gPT09ICdydGwnKSB7XG4gICAgeCArPSBtYXgoaHRtbC5jbGllbnRXaWR0aCwgYm9keS5jbGllbnRXaWR0aCkgLSB3aWR0aDtcbiAgfVxuICByZXR1cm4ge1xuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgICB4LFxuICAgIHlcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0UGFyZW50Tm9kZShub2RlKSB7XG4gIGlmIChnZXROb2RlTmFtZShub2RlKSA9PT0gJ2h0bWwnKSB7XG4gICAgcmV0dXJuIG5vZGU7XG4gIH1cbiAgY29uc3QgcmVzdWx0ID1cbiAgLy8gU3RlcCBpbnRvIHRoZSBzaGFkb3cgRE9NIG9mIHRoZSBwYXJlbnQgb2YgYSBzbG90dGVkIG5vZGUuXG4gIG5vZGUuYXNzaWduZWRTbG90IHx8XG4gIC8vIERPTSBFbGVtZW50IGRldGVjdGVkLlxuICBub2RlLnBhcmVudE5vZGUgfHxcbiAgLy8gU2hhZG93Um9vdCBkZXRlY3RlZC5cbiAgaXNTaGFkb3dSb290KG5vZGUpICYmIG5vZGUuaG9zdCB8fFxuICAvLyBGYWxsYmFjay5cbiAgZ2V0RG9jdW1lbnRFbGVtZW50KG5vZGUpO1xuICByZXR1cm4gaXNTaGFkb3dSb290KHJlc3VsdCkgPyByZXN1bHQuaG9zdCA6IHJlc3VsdDtcbn1cblxuZnVuY3Rpb24gZ2V0TmVhcmVzdE92ZXJmbG93QW5jZXN0b3Iobm9kZSkge1xuICBjb25zdCBwYXJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShub2RlKTtcbiAgaWYgKGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIC8vIGBnZXRQYXJlbnROb2RlYCB3aWxsIG5ldmVyIHJldHVybiBhIGBEb2N1bWVudGAgZHVlIHRvIHRoZSBmYWxsYmFja1xuICAgIC8vIGNoZWNrLCBzbyBpdCdzIGVpdGhlciB0aGUgPGh0bWw+IG9yIDxib2R5PiBlbGVtZW50LlxuICAgIHJldHVybiBwYXJlbnROb2RlLm93bmVyRG9jdW1lbnQuYm9keTtcbiAgfVxuICBpZiAoaXNIVE1MRWxlbWVudChwYXJlbnROb2RlKSAmJiBpc092ZXJmbG93RWxlbWVudChwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBwYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvcihwYXJlbnROb2RlKTtcbn1cblxuZnVuY3Rpb24gZ2V0T3ZlcmZsb3dBbmNlc3RvcnMobm9kZSwgbGlzdCkge1xuICB2YXIgX25vZGUkb3duZXJEb2N1bWVudDtcbiAgaWYgKGxpc3QgPT09IHZvaWQgMCkge1xuICAgIGxpc3QgPSBbXTtcbiAgfVxuICBjb25zdCBzY3JvbGxhYmxlQW5jZXN0b3IgPSBnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3Rvcihub2RlKTtcbiAgY29uc3QgaXNCb2R5ID0gc2Nyb2xsYWJsZUFuY2VzdG9yID09PSAoKF9ub2RlJG93bmVyRG9jdW1lbnQgPSBub2RlLm93bmVyRG9jdW1lbnQpID09IG51bGwgPyB2b2lkIDAgOiBfbm9kZSRvd25lckRvY3VtZW50LmJvZHkpO1xuICBjb25zdCB3aW4gPSBnZXRXaW5kb3coc2Nyb2xsYWJsZUFuY2VzdG9yKTtcbiAgaWYgKGlzQm9keSkge1xuICAgIHJldHVybiBsaXN0LmNvbmNhdCh3aW4sIHdpbi52aXN1YWxWaWV3cG9ydCB8fCBbXSwgaXNPdmVyZmxvd0VsZW1lbnQoc2Nyb2xsYWJsZUFuY2VzdG9yKSA/IHNjcm9sbGFibGVBbmNlc3RvciA6IFtdKTtcbiAgfVxuICByZXR1cm4gbGlzdC5jb25jYXQoc2Nyb2xsYWJsZUFuY2VzdG9yLCBnZXRPdmVyZmxvd0FuY2VzdG9ycyhzY3JvbGxhYmxlQW5jZXN0b3IpKTtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRSZWN0KGVsZW1lbnQsIHN0cmF0ZWd5KSB7XG4gIGNvbnN0IHdpbiA9IGdldFdpbmRvdyhlbGVtZW50KTtcbiAgY29uc3QgaHRtbCA9IGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KTtcbiAgY29uc3QgdmlzdWFsVmlld3BvcnQgPSB3aW4udmlzdWFsVmlld3BvcnQ7XG4gIGxldCB3aWR0aCA9IGh0bWwuY2xpZW50V2lkdGg7XG4gIGxldCBoZWlnaHQgPSBodG1sLmNsaWVudEhlaWdodDtcbiAgbGV0IHggPSAwO1xuICBsZXQgeSA9IDA7XG4gIGlmICh2aXN1YWxWaWV3cG9ydCkge1xuICAgIHdpZHRoID0gdmlzdWFsVmlld3BvcnQud2lkdGg7XG4gICAgaGVpZ2h0ID0gdmlzdWFsVmlld3BvcnQuaGVpZ2h0O1xuICAgIGNvbnN0IHZpc3VhbFZpZXdwb3J0QmFzZWQgPSBpc1NhZmFyaSgpO1xuICAgIGlmICghdmlzdWFsVmlld3BvcnRCYXNlZCB8fCB2aXN1YWxWaWV3cG9ydEJhc2VkICYmIHN0cmF0ZWd5ID09PSAnZml4ZWQnKSB7XG4gICAgICB4ID0gdmlzdWFsVmlld3BvcnQub2Zmc2V0TGVmdDtcbiAgICAgIHkgPSB2aXN1YWxWaWV3cG9ydC5vZmZzZXRUb3A7XG4gICAgfVxuICB9XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuXG4vLyBSZXR1cm5zIHRoZSBpbm5lciBjbGllbnQgcmVjdCwgc3VidHJhY3Rpbmcgc2Nyb2xsYmFycyBpZiBwcmVzZW50LlxuZnVuY3Rpb24gZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpIHtcbiAgY29uc3QgY2xpZW50UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBzdHJhdGVneSA9PT0gJ2ZpeGVkJyk7XG4gIGNvbnN0IHRvcCA9IGNsaWVudFJlY3QudG9wICsgZWxlbWVudC5jbGllbnRUb3A7XG4gIGNvbnN0IGxlZnQgPSBjbGllbnRSZWN0LmxlZnQgKyBlbGVtZW50LmNsaWVudExlZnQ7XG4gIGNvbnN0IHNjYWxlID0gaXNIVE1MRWxlbWVudChlbGVtZW50KSA/IGdldFNjYWxlKGVsZW1lbnQpIDoge1xuICAgIHg6IDEsXG4gICAgeTogMVxuICB9O1xuICBjb25zdCB3aWR0aCA9IGVsZW1lbnQuY2xpZW50V2lkdGggKiBzY2FsZS54O1xuICBjb25zdCBoZWlnaHQgPSBlbGVtZW50LmNsaWVudEhlaWdodCAqIHNjYWxlLnk7XG4gIGNvbnN0IHggPSBsZWZ0ICogc2NhbGUueDtcbiAgY29uc3QgeSA9IHRvcCAqIHNjYWxlLnk7XG4gIHJldHVybiB7XG4gICAgd2lkdGgsXG4gICAgaGVpZ2h0LFxuICAgIHgsXG4gICAgeVxuICB9O1xufVxuZnVuY3Rpb24gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KSB7XG4gIGxldCByZWN0O1xuICBpZiAoY2xpcHBpbmdBbmNlc3RvciA9PT0gJ3ZpZXdwb3J0Jykge1xuICAgIHJlY3QgPSBnZXRWaWV3cG9ydFJlY3QoZWxlbWVudCwgc3RyYXRlZ3kpO1xuICB9IGVsc2UgaWYgKGNsaXBwaW5nQW5jZXN0b3IgPT09ICdkb2N1bWVudCcpIHtcbiAgICByZWN0ID0gZ2V0RG9jdW1lbnRSZWN0KGdldERvY3VtZW50RWxlbWVudChlbGVtZW50KSk7XG4gIH0gZWxzZSBpZiAoaXNFbGVtZW50KGNsaXBwaW5nQW5jZXN0b3IpKSB7XG4gICAgcmVjdCA9IGdldElubmVyQm91bmRpbmdDbGllbnRSZWN0KGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2aXN1YWxPZmZzZXRzID0gZ2V0VmlzdWFsT2Zmc2V0cyhlbGVtZW50KTtcbiAgICByZWN0ID0ge1xuICAgICAgLi4uY2xpcHBpbmdBbmNlc3RvcixcbiAgICAgIHg6IGNsaXBwaW5nQW5jZXN0b3IueCAtIHZpc3VhbE9mZnNldHMueCxcbiAgICAgIHk6IGNsaXBwaW5nQW5jZXN0b3IueSAtIHZpc3VhbE9mZnNldHMueVxuICAgIH07XG4gIH1cbiAgcmV0dXJuIHJlY3RUb0NsaWVudFJlY3QocmVjdCk7XG59XG5mdW5jdGlvbiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgc3RvcE5vZGUpIHtcbiAgY29uc3QgcGFyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoZWxlbWVudCk7XG4gIGlmIChwYXJlbnROb2RlID09PSBzdG9wTm9kZSB8fCAhaXNFbGVtZW50KHBhcmVudE5vZGUpIHx8IGlzTGFzdFRyYXZlcnNhYmxlTm9kZShwYXJlbnROb2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gZ2V0Q29tcHV0ZWRTdHlsZSQxKHBhcmVudE5vZGUpLnBvc2l0aW9uID09PSAnZml4ZWQnIHx8IGhhc0ZpeGVkUG9zaXRpb25BbmNlc3RvcihwYXJlbnROb2RlLCBzdG9wTm9kZSk7XG59XG5cbi8vIEEgXCJjbGlwcGluZyBhbmNlc3RvclwiIGlzIGFuIGBvdmVyZmxvd2AgZWxlbWVudCB3aXRoIHRoZSBjaGFyYWN0ZXJpc3RpYyBvZlxuLy8gY2xpcHBpbmcgKG9yIGhpZGluZykgY2hpbGQgZWxlbWVudHMuIFRoaXMgcmV0dXJucyBhbGwgY2xpcHBpbmcgYW5jZXN0b3JzXG4vLyBvZiB0aGUgZ2l2ZW4gZWxlbWVudCB1cCB0aGUgdHJlZS5cbmZ1bmN0aW9uIGdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyhlbGVtZW50LCBjYWNoZSkge1xuICBjb25zdCBjYWNoZWRSZXN1bHQgPSBjYWNoZS5nZXQoZWxlbWVudCk7XG4gIGlmIChjYWNoZWRSZXN1bHQpIHtcbiAgICByZXR1cm4gY2FjaGVkUmVzdWx0O1xuICB9XG4gIGxldCByZXN1bHQgPSBnZXRPdmVyZmxvd0FuY2VzdG9ycyhlbGVtZW50KS5maWx0ZXIoZWwgPT4gaXNFbGVtZW50KGVsKSAmJiBnZXROb2RlTmFtZShlbCkgIT09ICdib2R5Jyk7XG4gIGxldCBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gIGNvbnN0IGVsZW1lbnRJc0ZpeGVkID0gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLnBvc2l0aW9uID09PSAnZml4ZWQnO1xuICBsZXQgY3VycmVudE5vZGUgPSBlbGVtZW50SXNGaXhlZCA/IGdldFBhcmVudE5vZGUoZWxlbWVudCkgOiBlbGVtZW50O1xuXG4gIC8vIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0NTUy9Db250YWluaW5nX2Jsb2NrI2lkZW50aWZ5aW5nX3RoZV9jb250YWluaW5nX2Jsb2NrXG4gIHdoaWxlIChpc0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgY29uc3QgY29tcHV0ZWRTdHlsZSA9IGdldENvbXB1dGVkU3R5bGUkMShjdXJyZW50Tm9kZSk7XG4gICAgY29uc3QgY3VycmVudE5vZGVJc0NvbnRhaW5pbmcgPSBpc0NvbnRhaW5pbmdCbG9jayhjdXJyZW50Tm9kZSk7XG4gICAgaWYgKCFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnZml4ZWQnKSB7XG4gICAgICBjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA9IG51bGw7XG4gICAgfVxuICAgIGNvbnN0IHNob3VsZERyb3BDdXJyZW50Tm9kZSA9IGVsZW1lbnRJc0ZpeGVkID8gIWN1cnJlbnROb2RlSXNDb250YWluaW5nICYmICFjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZSA6ICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBjb21wdXRlZFN0eWxlLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhIWN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlICYmIFsnYWJzb2x1dGUnLCAnZml4ZWQnXS5pbmNsdWRlcyhjdXJyZW50Q29udGFpbmluZ0Jsb2NrQ29tcHV0ZWRTdHlsZS5wb3NpdGlvbikgfHwgaXNPdmVyZmxvd0VsZW1lbnQoY3VycmVudE5vZGUpICYmICFjdXJyZW50Tm9kZUlzQ29udGFpbmluZyAmJiBoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IoZWxlbWVudCwgY3VycmVudE5vZGUpO1xuICAgIGlmIChzaG91bGREcm9wQ3VycmVudE5vZGUpIHtcbiAgICAgIC8vIERyb3Agbm9uLWNvbnRhaW5pbmcgYmxvY2tzLlxuICAgICAgcmVzdWx0ID0gcmVzdWx0LmZpbHRlcihhbmNlc3RvciA9PiBhbmNlc3RvciAhPT0gY3VycmVudE5vZGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZWNvcmQgbGFzdCBjb250YWluaW5nIGJsb2NrIGZvciBuZXh0IGl0ZXJhdGlvbi5cbiAgICAgIGN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlID0gY29tcHV0ZWRTdHlsZTtcbiAgICB9XG4gICAgY3VycmVudE5vZGUgPSBnZXRQYXJlbnROb2RlKGN1cnJlbnROb2RlKTtcbiAgfVxuICBjYWNoZS5zZXQoZWxlbWVudCwgcmVzdWx0KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cblxuLy8gR2V0cyB0aGUgbWF4aW11bSBhcmVhIHRoYXQgdGhlIGVsZW1lbnQgaXMgdmlzaWJsZSBpbiBkdWUgdG8gYW55IG51bWJlciBvZlxuLy8gY2xpcHBpbmcgYW5jZXN0b3JzLlxuZnVuY3Rpb24gZ2V0Q2xpcHBpbmdSZWN0KF9yZWYpIHtcbiAgbGV0IHtcbiAgICBlbGVtZW50LFxuICAgIGJvdW5kYXJ5LFxuICAgIHJvb3RCb3VuZGFyeSxcbiAgICBzdHJhdGVneVxuICB9ID0gX3JlZjtcbiAgY29uc3QgZWxlbWVudENsaXBwaW5nQW5jZXN0b3JzID0gYm91bmRhcnkgPT09ICdjbGlwcGluZ0FuY2VzdG9ycycgPyBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnMoZWxlbWVudCwgdGhpcy5fYykgOiBbXS5jb25jYXQoYm91bmRhcnkpO1xuICBjb25zdCBjbGlwcGluZ0FuY2VzdG9ycyA9IFsuLi5lbGVtZW50Q2xpcHBpbmdBbmNlc3RvcnMsIHJvb3RCb3VuZGFyeV07XG4gIGNvbnN0IGZpcnN0Q2xpcHBpbmdBbmNlc3RvciA9IGNsaXBwaW5nQW5jZXN0b3JzWzBdO1xuICBjb25zdCBjbGlwcGluZ1JlY3QgPSBjbGlwcGluZ0FuY2VzdG9ycy5yZWR1Y2UoKGFjY1JlY3QsIGNsaXBwaW5nQW5jZXN0b3IpID0+IHtcbiAgICBjb25zdCByZWN0ID0gZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yKGVsZW1lbnQsIGNsaXBwaW5nQW5jZXN0b3IsIHN0cmF0ZWd5KTtcbiAgICBhY2NSZWN0LnRvcCA9IG1heChyZWN0LnRvcCwgYWNjUmVjdC50b3ApO1xuICAgIGFjY1JlY3QucmlnaHQgPSBtaW4ocmVjdC5yaWdodCwgYWNjUmVjdC5yaWdodCk7XG4gICAgYWNjUmVjdC5ib3R0b20gPSBtaW4ocmVjdC5ib3R0b20sIGFjY1JlY3QuYm90dG9tKTtcbiAgICBhY2NSZWN0LmxlZnQgPSBtYXgocmVjdC5sZWZ0LCBhY2NSZWN0LmxlZnQpO1xuICAgIHJldHVybiBhY2NSZWN0O1xuICB9LCBnZXRDbGllbnRSZWN0RnJvbUNsaXBwaW5nQW5jZXN0b3IoZWxlbWVudCwgZmlyc3RDbGlwcGluZ0FuY2VzdG9yLCBzdHJhdGVneSkpO1xuICByZXR1cm4ge1xuICAgIHdpZHRoOiBjbGlwcGluZ1JlY3QucmlnaHQgLSBjbGlwcGluZ1JlY3QubGVmdCxcbiAgICBoZWlnaHQ6IGNsaXBwaW5nUmVjdC5ib3R0b20gLSBjbGlwcGluZ1JlY3QudG9wLFxuICAgIHg6IGNsaXBwaW5nUmVjdC5sZWZ0LFxuICAgIHk6IGNsaXBwaW5nUmVjdC50b3BcbiAgfTtcbn1cblxuZnVuY3Rpb24gZ2V0RGltZW5zaW9ucyhlbGVtZW50KSB7XG4gIHJldHVybiBnZXRDc3NEaW1lbnNpb25zKGVsZW1lbnQpO1xufVxuXG5mdW5jdGlvbiBnZXRUcnVlT2Zmc2V0UGFyZW50KGVsZW1lbnQsIHBvbHlmaWxsKSB7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSB8fCBnZXRDb21wdXRlZFN0eWxlJDEoZWxlbWVudCkucG9zaXRpb24gPT09ICdmaXhlZCcpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBpZiAocG9seWZpbGwpIHtcbiAgICByZXR1cm4gcG9seWZpbGwoZWxlbWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQub2Zmc2V0UGFyZW50O1xufVxuZnVuY3Rpb24gZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHtcbiAgbGV0IGN1cnJlbnROb2RlID0gZ2V0UGFyZW50Tm9kZShlbGVtZW50KTtcbiAgd2hpbGUgKGlzSFRNTEVsZW1lbnQoY3VycmVudE5vZGUpICYmICFpc0xhc3RUcmF2ZXJzYWJsZU5vZGUoY3VycmVudE5vZGUpKSB7XG4gICAgaWYgKGlzQ29udGFpbmluZ0Jsb2NrKGN1cnJlbnROb2RlKSkge1xuICAgICAgcmV0dXJuIGN1cnJlbnROb2RlO1xuICAgIH0gZWxzZSB7XG4gICAgICBjdXJyZW50Tm9kZSA9IGdldFBhcmVudE5vZGUoY3VycmVudE5vZGUpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuLy8gR2V0cyB0aGUgY2xvc2VzdCBhbmNlc3RvciBwb3NpdGlvbmVkIGVsZW1lbnQuIEhhbmRsZXMgc29tZSBlZGdlIGNhc2VzLFxuLy8gc3VjaCBhcyB0YWJsZSBhbmNlc3RvcnMgYW5kIGNyb3NzIGJyb3dzZXIgYnVncy5cbmZ1bmN0aW9uIGdldE9mZnNldFBhcmVudChlbGVtZW50LCBwb2x5ZmlsbCkge1xuICBjb25zdCB3aW5kb3cgPSBnZXRXaW5kb3coZWxlbWVudCk7XG4gIGlmICghaXNIVE1MRWxlbWVudChlbGVtZW50KSkge1xuICAgIHJldHVybiB3aW5kb3c7XG4gIH1cbiAgbGV0IG9mZnNldFBhcmVudCA9IGdldFRydWVPZmZzZXRQYXJlbnQoZWxlbWVudCwgcG9seWZpbGwpO1xuICB3aGlsZSAob2Zmc2V0UGFyZW50ICYmIGlzVGFibGVFbGVtZW50KG9mZnNldFBhcmVudCkgJiYgZ2V0Q29tcHV0ZWRTdHlsZSQxKG9mZnNldFBhcmVudCkucG9zaXRpb24gPT09ICdzdGF0aWMnKSB7XG4gICAgb2Zmc2V0UGFyZW50ID0gZ2V0VHJ1ZU9mZnNldFBhcmVudChvZmZzZXRQYXJlbnQsIHBvbHlmaWxsKTtcbiAgfVxuICBpZiAob2Zmc2V0UGFyZW50ICYmIChnZXROb2RlTmFtZShvZmZzZXRQYXJlbnQpID09PSAnaHRtbCcgfHwgZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSA9PT0gJ2JvZHknICYmIGdldENvbXB1dGVkU3R5bGUkMShvZmZzZXRQYXJlbnQpLnBvc2l0aW9uID09PSAnc3RhdGljJyAmJiAhaXNDb250YWluaW5nQmxvY2sob2Zmc2V0UGFyZW50KSkpIHtcbiAgICByZXR1cm4gd2luZG93O1xuICB9XG4gIHJldHVybiBvZmZzZXRQYXJlbnQgfHwgZ2V0Q29udGFpbmluZ0Jsb2NrKGVsZW1lbnQpIHx8IHdpbmRvdztcbn1cblxuZnVuY3Rpb24gZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQoZWxlbWVudCwgb2Zmc2V0UGFyZW50LCBzdHJhdGVneSkge1xuICBjb25zdCBpc09mZnNldFBhcmVudEFuRWxlbWVudCA9IGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KTtcbiAgY29uc3QgZG9jdW1lbnRFbGVtZW50ID0gZ2V0RG9jdW1lbnRFbGVtZW50KG9mZnNldFBhcmVudCk7XG4gIGNvbnN0IGlzRml4ZWQgPSBzdHJhdGVneSA9PT0gJ2ZpeGVkJztcbiAgY29uc3QgcmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChlbGVtZW50LCB0cnVlLCBpc0ZpeGVkLCBvZmZzZXRQYXJlbnQpO1xuICBsZXQgc2Nyb2xsID0ge1xuICAgIHNjcm9sbExlZnQ6IDAsXG4gICAgc2Nyb2xsVG9wOiAwXG4gIH07XG4gIGNvbnN0IG9mZnNldHMgPSB7XG4gICAgeDogMCxcbiAgICB5OiAwXG4gIH07XG4gIGlmIChpc09mZnNldFBhcmVudEFuRWxlbWVudCB8fCAhaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQgJiYgIWlzRml4ZWQpIHtcbiAgICBpZiAoZ2V0Tm9kZU5hbWUob2Zmc2V0UGFyZW50KSAhPT0gJ2JvZHknIHx8IGlzT3ZlcmZsb3dFbGVtZW50KGRvY3VtZW50RWxlbWVudCkpIHtcbiAgICAgIHNjcm9sbCA9IGdldE5vZGVTY3JvbGwob2Zmc2V0UGFyZW50KTtcbiAgICB9XG4gICAgaWYgKGlzSFRNTEVsZW1lbnQob2Zmc2V0UGFyZW50KSkge1xuICAgICAgY29uc3Qgb2Zmc2V0UmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChvZmZzZXRQYXJlbnQsIHRydWUsIGlzRml4ZWQsIG9mZnNldFBhcmVudCk7XG4gICAgICBvZmZzZXRzLnggPSBvZmZzZXRSZWN0LnggKyBvZmZzZXRQYXJlbnQuY2xpZW50TGVmdDtcbiAgICAgIG9mZnNldHMueSA9IG9mZnNldFJlY3QueSArIG9mZnNldFBhcmVudC5jbGllbnRUb3A7XG4gICAgfSBlbHNlIGlmIChkb2N1bWVudEVsZW1lbnQpIHtcbiAgICAgIG9mZnNldHMueCA9IGdldFdpbmRvd1Njcm9sbEJhclgoZG9jdW1lbnRFbGVtZW50KTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHtcbiAgICB4OiByZWN0LmxlZnQgKyBzY3JvbGwuc2Nyb2xsTGVmdCAtIG9mZnNldHMueCxcbiAgICB5OiByZWN0LnRvcCArIHNjcm9sbC5zY3JvbGxUb3AgLSBvZmZzZXRzLnksXG4gICAgd2lkdGg6IHJlY3Qud2lkdGgsXG4gICAgaGVpZ2h0OiByZWN0LmhlaWdodFxuICB9O1xufVxuXG5jb25zdCBwbGF0Zm9ybSA9IHtcbiAgZ2V0Q2xpcHBpbmdSZWN0LFxuICBjb252ZXJ0T2Zmc2V0UGFyZW50UmVsYXRpdmVSZWN0VG9WaWV3cG9ydFJlbGF0aXZlUmVjdCxcbiAgaXNFbGVtZW50LFxuICBnZXREaW1lbnNpb25zLFxuICBnZXRPZmZzZXRQYXJlbnQsXG4gIGdldERvY3VtZW50RWxlbWVudCxcbiAgZ2V0U2NhbGUsXG4gIGFzeW5jIGdldEVsZW1lbnRSZWN0cyhfcmVmKSB7XG4gICAgbGV0IHtcbiAgICAgIHJlZmVyZW5jZSxcbiAgICAgIGZsb2F0aW5nLFxuICAgICAgc3RyYXRlZ3lcbiAgICB9ID0gX3JlZjtcbiAgICBjb25zdCBnZXRPZmZzZXRQYXJlbnRGbiA9IHRoaXMuZ2V0T2Zmc2V0UGFyZW50IHx8IGdldE9mZnNldFBhcmVudDtcbiAgICBjb25zdCBnZXREaW1lbnNpb25zRm4gPSB0aGlzLmdldERpbWVuc2lvbnM7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlZmVyZW5jZTogZ2V0UmVjdFJlbGF0aXZlVG9PZmZzZXRQYXJlbnQocmVmZXJlbmNlLCBhd2FpdCBnZXRPZmZzZXRQYXJlbnRGbihmbG9hdGluZyksIHN0cmF0ZWd5KSxcbiAgICAgIGZsb2F0aW5nOiB7XG4gICAgICAgIHg6IDAsXG4gICAgICAgIHk6IDAsXG4gICAgICAgIC4uLihhd2FpdCBnZXREaW1lbnNpb25zRm4oZmxvYXRpbmcpKVxuICAgICAgfVxuICAgIH07XG4gIH0sXG4gIGdldENsaWVudFJlY3RzOiBlbGVtZW50ID0+IEFycmF5LmZyb20oZWxlbWVudC5nZXRDbGllbnRSZWN0cygpKSxcbiAgaXNSVEw6IGVsZW1lbnQgPT4gZ2V0Q29tcHV0ZWRTdHlsZSQxKGVsZW1lbnQpLmRpcmVjdGlvbiA9PT0gJ3J0bCdcbn07XG5cbi8qKlxuICogQXV0b21hdGljYWxseSB1cGRhdGVzIHRoZSBwb3NpdGlvbiBvZiB0aGUgZmxvYXRpbmcgZWxlbWVudCB3aGVuIG5lY2Vzc2FyeS5cbiAqIFNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBmbG9hdGluZyBlbGVtZW50IGlzIG1vdW50ZWQgb24gdGhlIERPTSBvclxuICogdmlzaWJsZSBvbiB0aGUgc2NyZWVuLlxuICogQHJldHVybnMgY2xlYW51cCBmdW5jdGlvbiB0aGF0IHNob3VsZCBiZSBpbnZva2VkIHdoZW4gdGhlIGZsb2F0aW5nIGVsZW1lbnQgaXNcbiAqIHJlbW92ZWQgZnJvbSB0aGUgRE9NIG9yIGhpZGRlbiBmcm9tIHRoZSBzY3JlZW4uXG4gKiBAc2VlIGh0dHBzOi8vZmxvYXRpbmctdWkuY29tL2RvY3MvYXV0b1VwZGF0ZVxuICovXG5mdW5jdGlvbiBhdXRvVXBkYXRlKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHVwZGF0ZSwgb3B0aW9ucykge1xuICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGNvbnN0IHtcbiAgICBhbmNlc3RvclNjcm9sbCA9IHRydWUsXG4gICAgYW5jZXN0b3JSZXNpemUgPSB0cnVlLFxuICAgIGVsZW1lbnRSZXNpemUgPSB0cnVlLFxuICAgIGFuaW1hdGlvbkZyYW1lID0gZmFsc2VcbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IGFuY2VzdG9ycyA9IGFuY2VzdG9yU2Nyb2xsIHx8IGFuY2VzdG9yUmVzaXplID8gWy4uLihpc0VsZW1lbnQocmVmZXJlbmNlKSA/IGdldE92ZXJmbG93QW5jZXN0b3JzKHJlZmVyZW5jZSkgOiByZWZlcmVuY2UuY29udGV4dEVsZW1lbnQgPyBnZXRPdmVyZmxvd0FuY2VzdG9ycyhyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpIDogW10pLCAuLi5nZXRPdmVyZmxvd0FuY2VzdG9ycyhmbG9hdGluZyldIDogW107XG4gIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAvLyBpZ25vcmVzIFdpbmRvdywgY2hlY2tzIGZvciBbb2JqZWN0IFZpc3VhbFZpZXdwb3J0XVxuICAgIGNvbnN0IGlzVmlzdWFsVmlld3BvcnQgPSAhaXNFbGVtZW50KGFuY2VzdG9yKSAmJiBhbmNlc3Rvci50b1N0cmluZygpLmluY2x1ZGVzKCdWJyk7XG4gICAgaWYgKGFuY2VzdG9yU2Nyb2xsICYmIChhbmltYXRpb25GcmFtZSA/IGlzVmlzdWFsVmlld3BvcnQgOiB0cnVlKSkge1xuICAgICAgYW5jZXN0b3IuYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsJywgdXBkYXRlLCB7XG4gICAgICAgIHBhc3NpdmU6IHRydWVcbiAgICAgIH0pO1xuICAgIH1cbiAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICB9KTtcbiAgbGV0IG9ic2VydmVyID0gbnVsbDtcbiAgaWYgKGVsZW1lbnRSZXNpemUpIHtcbiAgICBvYnNlcnZlciA9IG5ldyBSZXNpemVPYnNlcnZlcigoKSA9PiB7XG4gICAgICB1cGRhdGUoKTtcbiAgICB9KTtcbiAgICBpc0VsZW1lbnQocmVmZXJlbmNlKSAmJiAhYW5pbWF0aW9uRnJhbWUgJiYgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UpO1xuICAgIGlmICghaXNFbGVtZW50KHJlZmVyZW5jZSkgJiYgcmVmZXJlbmNlLmNvbnRleHRFbGVtZW50ICYmICFhbmltYXRpb25GcmFtZSkge1xuICAgICAgb2JzZXJ2ZXIub2JzZXJ2ZShyZWZlcmVuY2UuY29udGV4dEVsZW1lbnQpO1xuICAgIH1cbiAgICBvYnNlcnZlci5vYnNlcnZlKGZsb2F0aW5nKTtcbiAgfVxuICBsZXQgZnJhbWVJZDtcbiAgbGV0IHByZXZSZWZSZWN0ID0gYW5pbWF0aW9uRnJhbWUgPyBnZXRCb3VuZGluZ0NsaWVudFJlY3QocmVmZXJlbmNlKSA6IG51bGw7XG4gIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgIGZyYW1lTG9vcCgpO1xuICB9XG4gIGZ1bmN0aW9uIGZyYW1lTG9vcCgpIHtcbiAgICBjb25zdCBuZXh0UmVmUmVjdCA9IGdldEJvdW5kaW5nQ2xpZW50UmVjdChyZWZlcmVuY2UpO1xuICAgIGlmIChwcmV2UmVmUmVjdCAmJiAobmV4dFJlZlJlY3QueCAhPT0gcHJldlJlZlJlY3QueCB8fCBuZXh0UmVmUmVjdC55ICE9PSBwcmV2UmVmUmVjdC55IHx8IG5leHRSZWZSZWN0LndpZHRoICE9PSBwcmV2UmVmUmVjdC53aWR0aCB8fCBuZXh0UmVmUmVjdC5oZWlnaHQgIT09IHByZXZSZWZSZWN0LmhlaWdodCkpIHtcbiAgICAgIHVwZGF0ZSgpO1xuICAgIH1cbiAgICBwcmV2UmVmUmVjdCA9IG5leHRSZWZSZWN0O1xuICAgIGZyYW1lSWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoZnJhbWVMb29wKTtcbiAgfVxuICB1cGRhdGUoKTtcbiAgcmV0dXJuICgpID0+IHtcbiAgICB2YXIgX29ic2VydmVyO1xuICAgIGFuY2VzdG9ycy5mb3JFYWNoKGFuY2VzdG9yID0+IHtcbiAgICAgIGFuY2VzdG9yU2Nyb2xsICYmIGFuY2VzdG9yLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIHVwZGF0ZSk7XG4gICAgICBhbmNlc3RvclJlc2l6ZSAmJiBhbmNlc3Rvci5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCB1cGRhdGUpO1xuICAgIH0pO1xuICAgIChfb2JzZXJ2ZXIgPSBvYnNlcnZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF9vYnNlcnZlci5kaXNjb25uZWN0KCk7XG4gICAgb2JzZXJ2ZXIgPSBudWxsO1xuICAgIGlmIChhbmltYXRpb25GcmFtZSkge1xuICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoZnJhbWVJZCk7XG4gICAgfVxuICB9O1xufVxuXG4vKipcbiAqIENvbXB1dGVzIHRoZSBgeGAgYW5kIGB5YCBjb29yZGluYXRlcyB0aGF0IHdpbGwgcGxhY2UgdGhlIGZsb2F0aW5nIGVsZW1lbnRcbiAqIG5leHQgdG8gYSByZWZlcmVuY2UgZWxlbWVudCB3aGVuIGl0IGlzIGdpdmVuIGEgY2VydGFpbiBDU1MgcG9zaXRpb25pbmdcbiAqIHN0cmF0ZWd5LlxuICovXG5jb25zdCBjb21wdXRlUG9zaXRpb24gPSAocmVmZXJlbmNlLCBmbG9hdGluZywgb3B0aW9ucykgPT4ge1xuICAvLyBUaGlzIGNhY2hlcyB0aGUgZXhwZW5zaXZlIGBnZXRDbGlwcGluZ0VsZW1lbnRBbmNlc3RvcnNgIGZ1bmN0aW9uIHNvIHRoYXRcbiAgLy8gbXVsdGlwbGUgbGlmZWN5Y2xlIHJlc2V0cyByZS11c2UgdGhlIHNhbWUgcmVzdWx0LiBJdCBvbmx5IGxpdmVzIGZvciBhXG4gIC8vIHNpbmdsZSBjYWxsLiBJZiBvdGhlciBmdW5jdGlvbnMgYmVjb21lIGV4cGVuc2l2ZSwgd2UgY2FuIGFkZCB0aGVtIGFzIHdlbGwuXG4gIGNvbnN0IGNhY2hlID0gbmV3IE1hcCgpO1xuICBjb25zdCBtZXJnZWRPcHRpb25zID0ge1xuICAgIHBsYXRmb3JtLFxuICAgIC4uLm9wdGlvbnNcbiAgfTtcbiAgY29uc3QgcGxhdGZvcm1XaXRoQ2FjaGUgPSB7XG4gICAgLi4ubWVyZ2VkT3B0aW9ucy5wbGF0Zm9ybSxcbiAgICBfYzogY2FjaGVcbiAgfTtcbiAgcmV0dXJuIGNvbXB1dGVQb3NpdGlvbiQxKHJlZmVyZW5jZSwgZmxvYXRpbmcsIHtcbiAgICAuLi5tZXJnZWRPcHRpb25zLFxuICAgIHBsYXRmb3JtOiBwbGF0Zm9ybVdpdGhDYWNoZVxuICB9KTtcbn07XG5cbmV4cG9ydCB7IGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZ2V0T3ZlcmZsb3dBbmNlc3RvcnMsIHBsYXRmb3JtIH07XG4iLCJpbXBvcnQgeyBhcnJvdyBhcyBhcnJvdyQxLCBjb21wdXRlUG9zaXRpb24gfSBmcm9tICdAZmxvYXRpbmctdWkvZG9tJztcbmV4cG9ydCB7IGF1dG9QbGFjZW1lbnQsIGF1dG9VcGRhdGUsIGNvbXB1dGVQb3NpdGlvbiwgZGV0ZWN0T3ZlcmZsb3csIGZsaXAsIGdldE92ZXJmbG93QW5jZXN0b3JzLCBoaWRlLCBpbmxpbmUsIGxpbWl0U2hpZnQsIG9mZnNldCwgcGxhdGZvcm0sIHNoaWZ0LCBzaXplIH0gZnJvbSAnQGZsb2F0aW5nLXVpL2RvbSc7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyB1c2VMYXlvdXRFZmZlY3QsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCAqIGFzIFJlYWN0RE9NIGZyb20gJ3JlYWN0LWRvbSc7XG5cbi8qKlxuICogUHJvdmlkZXMgZGF0YSB0byBwb3NpdGlvbiBhbiBpbm5lciBlbGVtZW50IG9mIHRoZSBmbG9hdGluZyBlbGVtZW50IHNvIHRoYXQgaXRcbiAqIGFwcGVhcnMgY2VudGVyZWQgdG8gdGhlIHJlZmVyZW5jZSBlbGVtZW50LlxuICogVGhpcyB3cmFwcyB0aGUgY29yZSBgYXJyb3dgIG1pZGRsZXdhcmUgdG8gYWxsb3cgUmVhY3QgcmVmcyBhcyB0aGUgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9hcnJvd1xuICovXG5jb25zdCBhcnJvdyA9IG9wdGlvbnMgPT4ge1xuICBmdW5jdGlvbiBpc1JlZih2YWx1ZSkge1xuICAgIHJldHVybiB7fS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHZhbHVlLCAnY3VycmVudCcpO1xuICB9XG4gIHJldHVybiB7XG4gICAgbmFtZTogJ2Fycm93JyxcbiAgICBvcHRpb25zLFxuICAgIGZuKHN0YXRlKSB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIGVsZW1lbnQsXG4gICAgICAgIHBhZGRpbmdcbiAgICAgIH0gPSB0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJyA/IG9wdGlvbnMoc3RhdGUpIDogb3B0aW9ucztcbiAgICAgIGlmIChlbGVtZW50ICYmIGlzUmVmKGVsZW1lbnQpKSB7XG4gICAgICAgIGlmIChlbGVtZW50LmN1cnJlbnQgIT0gbnVsbCkge1xuICAgICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICAgIGVsZW1lbnQ6IGVsZW1lbnQuY3VycmVudCxcbiAgICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgICB9KS5mbihzdGF0ZSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHt9O1xuICAgICAgfSBlbHNlIGlmIChlbGVtZW50KSB7XG4gICAgICAgIHJldHVybiBhcnJvdyQxKHtcbiAgICAgICAgICBlbGVtZW50LFxuICAgICAgICAgIHBhZGRpbmdcbiAgICAgICAgfSkuZm4oc3RhdGUpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cbiAgfTtcbn07XG5cbnZhciBpbmRleCA9IHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgPyB1c2VMYXlvdXRFZmZlY3QgOiB1c2VFZmZlY3Q7XG5cbi8vIEZvcmsgb2YgYGZhc3QtZGVlcC1lcXVhbGAgdGhhdCBvbmx5IGRvZXMgdGhlIGNvbXBhcmlzb25zIHdlIG5lZWQgYW5kIGNvbXBhcmVzXG4vLyBmdW5jdGlvbnNcbmZ1bmN0aW9uIGRlZXBFcXVhbChhLCBiKSB7XG4gIGlmIChhID09PSBiKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKHR5cGVvZiBhICE9PSB0eXBlb2YgYikge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICBpZiAodHlwZW9mIGEgPT09ICdmdW5jdGlvbicgJiYgYS50b1N0cmluZygpID09PSBiLnRvU3RyaW5nKCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICBsZXQgbGVuZ3RoLCBpLCBrZXlzO1xuICBpZiAoYSAmJiBiICYmIHR5cGVvZiBhID09ICdvYmplY3QnKSB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICAgIGxlbmd0aCA9IGEubGVuZ3RoO1xuICAgICAgaWYgKGxlbmd0aCAhPSBiLmxlbmd0aCkgcmV0dXJuIGZhbHNlO1xuICAgICAgZm9yIChpID0gbGVuZ3RoOyBpLS0gIT09IDA7KSB7XG4gICAgICAgIGlmICghZGVlcEVxdWFsKGFbaV0sIGJbaV0pKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gICAga2V5cyA9IE9iamVjdC5rZXlzKGEpO1xuICAgIGxlbmd0aCA9IGtleXMubGVuZ3RoO1xuICAgIGlmIChsZW5ndGggIT09IE9iamVjdC5rZXlzKGIpLmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBmb3IgKGkgPSBsZW5ndGg7IGktLSAhPT0gMDspIHtcbiAgICAgIGlmICghe30uaGFzT3duUHJvcGVydHkuY2FsbChiLCBrZXlzW2ldKSkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG4gICAgfVxuICAgIGZvciAoaSA9IGxlbmd0aDsgaS0tICE9PSAwOykge1xuICAgICAgY29uc3Qga2V5ID0ga2V5c1tpXTtcbiAgICAgIGlmIChrZXkgPT09ICdfb3duZXInICYmIGEuJCR0eXBlb2YpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG4gICAgICBpZiAoIWRlZXBFcXVhbChhW2tleV0sIGJba2V5XSkpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuICByZXR1cm4gYSAhPT0gYSAmJiBiICE9PSBiO1xufVxuXG5mdW5jdGlvbiBnZXREUFIoZWxlbWVudCkge1xuICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICByZXR1cm4gMTtcbiAgfVxuICBjb25zdCB3aW4gPSBlbGVtZW50Lm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXcgfHwgd2luZG93O1xuICByZXR1cm4gd2luLmRldmljZVBpeGVsUmF0aW8gfHwgMTtcbn1cblxuZnVuY3Rpb24gcm91bmRCeURQUihlbGVtZW50LCB2YWx1ZSkge1xuICBjb25zdCBkcHIgPSBnZXREUFIoZWxlbWVudCk7XG4gIHJldHVybiBNYXRoLnJvdW5kKHZhbHVlICogZHByKSAvIGRwcjtcbn1cblxuZnVuY3Rpb24gdXNlTGF0ZXN0UmVmKHZhbHVlKSB7XG4gIGNvbnN0IHJlZiA9IFJlYWN0LnVzZVJlZih2YWx1ZSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICByZWYuY3VycmVudCA9IHZhbHVlO1xuICB9KTtcbiAgcmV0dXJuIHJlZjtcbn1cblxuLyoqXG4gKiBQcm92aWRlcyBkYXRhIHRvIHBvc2l0aW9uIGEgZmxvYXRpbmcgZWxlbWVudC5cbiAqIEBzZWUgaHR0cHM6Ly9mbG9hdGluZy11aS5jb20vZG9jcy9yZWFjdFxuICovXG5mdW5jdGlvbiB1c2VGbG9hdGluZyhvcHRpb25zKSB7XG4gIGlmIChvcHRpb25zID09PSB2b2lkIDApIHtcbiAgICBvcHRpb25zID0ge307XG4gIH1cbiAgY29uc3Qge1xuICAgIHBsYWNlbWVudCA9ICdib3R0b20nLFxuICAgIHN0cmF0ZWd5ID0gJ2Fic29sdXRlJyxcbiAgICBtaWRkbGV3YXJlID0gW10sXG4gICAgcGxhdGZvcm0sXG4gICAgZWxlbWVudHM6IHtcbiAgICAgIHJlZmVyZW5jZTogZXh0ZXJuYWxSZWZlcmVuY2UsXG4gICAgICBmbG9hdGluZzogZXh0ZXJuYWxGbG9hdGluZ1xuICAgIH0gPSB7fSxcbiAgICB0cmFuc2Zvcm0gPSB0cnVlLFxuICAgIHdoaWxlRWxlbWVudHNNb3VudGVkLFxuICAgIG9wZW5cbiAgfSA9IG9wdGlvbnM7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IFJlYWN0LnVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgc3RyYXRlZ3ksXG4gICAgcGxhY2VtZW50LFxuICAgIG1pZGRsZXdhcmVEYXRhOiB7fSxcbiAgICBpc1Bvc2l0aW9uZWQ6IGZhbHNlXG4gIH0pO1xuICBjb25zdCBbbGF0ZXN0TWlkZGxld2FyZSwgc2V0TGF0ZXN0TWlkZGxld2FyZV0gPSBSZWFjdC51c2VTdGF0ZShtaWRkbGV3YXJlKTtcbiAgaWYgKCFkZWVwRXF1YWwobGF0ZXN0TWlkZGxld2FyZSwgbWlkZGxld2FyZSkpIHtcbiAgICBzZXRMYXRlc3RNaWRkbGV3YXJlKG1pZGRsZXdhcmUpO1xuICB9XG4gIGNvbnN0IFtfcmVmZXJlbmNlLCBfc2V0UmVmZXJlbmNlXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICBjb25zdCBbX2Zsb2F0aW5nLCBfc2V0RmxvYXRpbmddID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IHNldFJlZmVyZW5jZSA9IFJlYWN0LnVzZUNhbGxiYWNrKG5vZGUgPT4ge1xuICAgIGlmIChub2RlICE9IHJlZmVyZW5jZVJlZi5jdXJyZW50KSB7XG4gICAgICByZWZlcmVuY2VSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0UmVmZXJlbmNlKG5vZGUpO1xuICAgIH1cbiAgfSwgW19zZXRSZWZlcmVuY2VdKTtcbiAgY29uc3Qgc2V0RmxvYXRpbmcgPSBSZWFjdC51c2VDYWxsYmFjayhub2RlID0+IHtcbiAgICBpZiAobm9kZSAhPT0gZmxvYXRpbmdSZWYuY3VycmVudCkge1xuICAgICAgZmxvYXRpbmdSZWYuY3VycmVudCA9IG5vZGU7XG4gICAgICBfc2V0RmxvYXRpbmcobm9kZSk7XG4gICAgfVxuICB9LCBbX3NldEZsb2F0aW5nXSk7XG4gIGNvbnN0IHJlZmVyZW5jZUVsID0gZXh0ZXJuYWxSZWZlcmVuY2UgfHwgX3JlZmVyZW5jZTtcbiAgY29uc3QgZmxvYXRpbmdFbCA9IGV4dGVybmFsRmxvYXRpbmcgfHwgX2Zsb2F0aW5nO1xuICBjb25zdCByZWZlcmVuY2VSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGZsb2F0aW5nUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCBkYXRhUmVmID0gUmVhY3QudXNlUmVmKGRhdGEpO1xuICBjb25zdCB3aGlsZUVsZW1lbnRzTW91bnRlZFJlZiA9IHVzZUxhdGVzdFJlZih3aGlsZUVsZW1lbnRzTW91bnRlZCk7XG4gIGNvbnN0IHBsYXRmb3JtUmVmID0gdXNlTGF0ZXN0UmVmKHBsYXRmb3JtKTtcbiAgY29uc3QgdXBkYXRlID0gUmVhY3QudXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmICghcmVmZXJlbmNlUmVmLmN1cnJlbnQgfHwgIWZsb2F0aW5nUmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgcGxhY2VtZW50LFxuICAgICAgc3RyYXRlZ3ksXG4gICAgICBtaWRkbGV3YXJlOiBsYXRlc3RNaWRkbGV3YXJlXG4gICAgfTtcbiAgICBpZiAocGxhdGZvcm1SZWYuY3VycmVudCkge1xuICAgICAgY29uZmlnLnBsYXRmb3JtID0gcGxhdGZvcm1SZWYuY3VycmVudDtcbiAgICB9XG4gICAgY29tcHV0ZVBvc2l0aW9uKHJlZmVyZW5jZVJlZi5jdXJyZW50LCBmbG9hdGluZ1JlZi5jdXJyZW50LCBjb25maWcpLnRoZW4oZGF0YSA9PiB7XG4gICAgICBjb25zdCBmdWxsRGF0YSA9IHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiB0cnVlXG4gICAgICB9O1xuICAgICAgaWYgKGlzTW91bnRlZFJlZi5jdXJyZW50ICYmICFkZWVwRXF1YWwoZGF0YVJlZi5jdXJyZW50LCBmdWxsRGF0YSkpIHtcbiAgICAgICAgZGF0YVJlZi5jdXJyZW50ID0gZnVsbERhdGE7XG4gICAgICAgIFJlYWN0RE9NLmZsdXNoU3luYygoKSA9PiB7XG4gICAgICAgICAgc2V0RGF0YShmdWxsRGF0YSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICB9LCBbbGF0ZXN0TWlkZGxld2FyZSwgcGxhY2VtZW50LCBzdHJhdGVneSwgcGxhdGZvcm1SZWZdKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlmIChvcGVuID09PSBmYWxzZSAmJiBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICBkYXRhUmVmLmN1cnJlbnQuaXNQb3NpdGlvbmVkID0gZmFsc2U7XG4gICAgICBzZXREYXRhKGRhdGEgPT4gKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaXNQb3NpdGlvbmVkOiBmYWxzZVxuICAgICAgfSkpO1xuICAgIH1cbiAgfSwgW29wZW5dKTtcbiAgY29uc3QgaXNNb3VudGVkUmVmID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgaW5kZXgoKCkgPT4ge1xuICAgIGlzTW91bnRlZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaXNNb3VudGVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICB9O1xuICB9LCBbXSk7XG4gIGluZGV4KCgpID0+IHtcbiAgICBpZiAocmVmZXJlbmNlRWwpIHJlZmVyZW5jZVJlZi5jdXJyZW50ID0gcmVmZXJlbmNlRWw7XG4gICAgaWYgKGZsb2F0aW5nRWwpIGZsb2F0aW5nUmVmLmN1cnJlbnQgPSBmbG9hdGluZ0VsO1xuICAgIGlmIChyZWZlcmVuY2VFbCAmJiBmbG9hdGluZ0VsKSB7XG4gICAgICBpZiAod2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudCkge1xuICAgICAgICByZXR1cm4gd2hpbGVFbGVtZW50c01vdW50ZWRSZWYuY3VycmVudChyZWZlcmVuY2VFbCwgZmxvYXRpbmdFbCwgdXBkYXRlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZSgpO1xuICAgICAgfVxuICAgIH1cbiAgfSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsLCB1cGRhdGUsIHdoaWxlRWxlbWVudHNNb3VudGVkUmVmXSk7XG4gIGNvbnN0IHJlZnMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VSZWYsXG4gICAgZmxvYXRpbmc6IGZsb2F0aW5nUmVmLFxuICAgIHNldFJlZmVyZW5jZSxcbiAgICBzZXRGbG9hdGluZ1xuICB9KSwgW3NldFJlZmVyZW5jZSwgc2V0RmxvYXRpbmddKTtcbiAgY29uc3QgZWxlbWVudHMgPSBSZWFjdC51c2VNZW1vKCgpID0+ICh7XG4gICAgcmVmZXJlbmNlOiByZWZlcmVuY2VFbCxcbiAgICBmbG9hdGluZzogZmxvYXRpbmdFbFxuICB9KSwgW3JlZmVyZW5jZUVsLCBmbG9hdGluZ0VsXSk7XG4gIGNvbnN0IGZsb2F0aW5nU3R5bGVzID0gUmVhY3QudXNlTWVtbygoKSA9PiB7XG4gICAgY29uc3QgaW5pdGlhbFN0eWxlcyA9IHtcbiAgICAgIHBvc2l0aW9uOiBzdHJhdGVneSxcbiAgICAgIGxlZnQ6IDAsXG4gICAgICB0b3A6IDBcbiAgICB9O1xuICAgIGlmICghZWxlbWVudHMuZmxvYXRpbmcpIHtcbiAgICAgIHJldHVybiBpbml0aWFsU3R5bGVzO1xuICAgIH1cbiAgICBjb25zdCB4ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS54KTtcbiAgICBjb25zdCB5ID0gcm91bmRCeURQUihlbGVtZW50cy5mbG9hdGluZywgZGF0YS55KTtcbiAgICBpZiAodHJhbnNmb3JtKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5pbml0aWFsU3R5bGVzLFxuICAgICAgICB0cmFuc2Zvcm06IFwidHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCIsXG4gICAgICAgIC4uLihnZXREUFIoZWxlbWVudHMuZmxvYXRpbmcpID49IDEuNSAmJiB7XG4gICAgICAgICAgd2lsbENoYW5nZTogJ3RyYW5zZm9ybSdcbiAgICAgICAgfSlcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwb3NpdGlvbjogc3RyYXRlZ3ksXG4gICAgICBsZWZ0OiB4LFxuICAgICAgdG9wOiB5XG4gICAgfTtcbiAgfSwgW3N0cmF0ZWd5LCB0cmFuc2Zvcm0sIGVsZW1lbnRzLmZsb2F0aW5nLCBkYXRhLngsIGRhdGEueV0pO1xuICByZXR1cm4gUmVhY3QudXNlTWVtbygoKSA9PiAoe1xuICAgIC4uLmRhdGEsXG4gICAgdXBkYXRlLFxuICAgIHJlZnMsXG4gICAgZWxlbWVudHMsXG4gICAgZmxvYXRpbmdTdHlsZXNcbiAgfSksIFtkYXRhLCB1cGRhdGUsIHJlZnMsIGVsZW1lbnRzLCBmbG9hdGluZ1N0eWxlc10pO1xufVxuXG5leHBvcnQgeyBhcnJvdywgdXNlRmxvYXRpbmcgfTtcbiIsImltcG9ydCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkamJuRXgkZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkamJuRXgkY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkamJuRXgkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBcnJvd1xuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRSA9ICdBcnJvdyc7XG5jb25zdCAkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9IC8qI19fUFVSRV9fKi8gJGpibkV4JGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBjaGlsZHJlbjogY2hpbGRyZW4gLCB3aWR0aDogd2lkdGggPSAxMCAsIGhlaWdodDogaGVpZ2h0ID0gNSAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRqYm5FeCRjcmVhdGVFbGVtZW50KCRqYm5FeCRQcmltaXRpdmUuc3ZnLCAkamJuRXgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHdpZHRoOiB3aWR0aCxcbiAgICAgICAgaGVpZ2h0OiBoZWlnaHQsXG4gICAgICAgIHZpZXdCb3g6IFwiMCAwIDMwIDEwXCIsXG4gICAgICAgIHByZXNlcnZlQXNwZWN0UmF0aW86IFwibm9uZVwiXG4gICAgfSksIHByb3BzLmFzQ2hpbGQgPyBjaGlsZHJlbiA6IC8qI19fUFVSRV9fKi8gJGpibkV4JGNyZWF0ZUVsZW1lbnQoXCJwb2x5Z29uXCIsIHtcbiAgICAgICAgcG9pbnRzOiBcIjAsMCAzMCwwIDE1LDEwXCJcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkN2U4ZjVjZDA3MTg3ODAzZSRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkN2U4ZjVjZDA3MTg3ODAzZSR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDU7XG5cblxuXG5cbmV4cG9ydCB7JDdlOGY1Y2QwNzE4NzgwM2UkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3csICQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAka1k5M1YkdXNlU3RhdGUsIGNyZWF0ZUVsZW1lbnQgYXMgJGtZOTNWJGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgYXMgJGtZOTNWJGZvcndhcmRSZWYsIHVzZVJlZiBhcyAka1k5M1YkdXNlUmVmLCB1c2VFZmZlY3QgYXMgJGtZOTNWJHVzZUVmZmVjdH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge3VzZUZsb2F0aW5nIGFzICRrWTkzViR1c2VGbG9hdGluZywgYXV0b1VwZGF0ZSBhcyAka1k5M1YkYXV0b1VwZGF0ZSwgb2Zmc2V0IGFzICRrWTkzViRvZmZzZXQsIHNoaWZ0IGFzICRrWTkzViRzaGlmdCwgbGltaXRTaGlmdCBhcyAka1k5M1YkbGltaXRTaGlmdCwgZmxpcCBhcyAka1k5M1YkZmxpcCwgc2l6ZSBhcyAka1k5M1Ykc2l6ZSwgYXJyb3cgYXMgJGtZOTNWJGFycm93LCBoaWRlIGFzICRrWTkzViRoaWRlfSBmcm9tIFwiQGZsb2F0aW5nLXVpL3JlYWN0LWRvbVwiO1xuaW1wb3J0IHtSb290IGFzICRrWTkzViRSb290fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWFycm93XCI7XG5pbXBvcnQge3VzZUNvbXBvc2VkUmVmcyBhcyAka1k5M1YkdXNlQ29tcG9zZWRSZWZzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbXBvc2UtcmVmc1wiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAka1k5M1YkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDYWxsYmFja1JlZiBhcyAka1k5M1YkdXNlQ2FsbGJhY2tSZWZ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdXNlLWNhbGxiYWNrLXJlZlwiO1xuaW1wb3J0IHt1c2VMYXlvdXRFZmZlY3QgYXMgJGtZOTNWJHVzZUxheW91dEVmZmVjdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtbGF5b3V0LWVmZmVjdFwiO1xuaW1wb3J0IHt1c2VTaXplIGFzICRrWTkzViR1c2VTaXplfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1zaXplXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDM2ZjAwODZkYTA5YzRiOWYgPSBbXG4gICAgJ3RvcCcsXG4gICAgJ3JpZ2h0JyxcbiAgICAnYm90dG9tJyxcbiAgICAnbGVmdCdcbl07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzY3MWZmYWI3YjMwMmZjOSA9IFtcbiAgICAnc3RhcnQnLFxuICAgICdjZW50ZXInLFxuICAgICdlbmQnXG5dO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogUG9wcGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRQT1BQRVJfTkFNRSA9ICdQb3BwZXInO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzIyYWFjMTk0YWU5MjNdID0gJGtZOTNWJGNyZWF0ZUNvbnRleHRTY29wZSgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUpO1xuY29uc3QgWyRjZjFhYzVkOWZlMGU4MjA2JHZhciRQb3BwZXJQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHRdID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGNyZWF0ZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FKTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiYWRhYzlhZGEzYTBiZGY5ID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFthbmNob3IsIHNldEFuY2hvcl0gPSAka1k5M1YkdXNlU3RhdGUobnVsbCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlclByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBhbmNob3I6IGFuY2hvcixcbiAgICAgICAgb25BbmNob3JDaGFuZ2U6IHNldEFuY2hvclxuICAgIH0sIGNoaWxkcmVuKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJhZGFjOWFkYTNhMGJkZjksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBPUFBFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFuY2hvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQU5DSE9SX05BTUUgPSAnUG9wcGVyQW5jaG9yJztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgPSAvKiNfX1BVUkVfXyovICRrWTkzViRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIHZpcnR1YWxSZWY6IHZpcnR1YWxSZWYgLCAuLi5hbmNob3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciR1c2VQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgcmVmID0gJGtZOTNWJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAka1k5M1YkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICAka1k5M1YkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIC8vIENvbnN1bWVyIGNhbiBhbmNob3IgdGhlIHBvcHBlciB0byBzb21ldGhpbmcgdGhhdCBpc24ndFxuICAgICAgICAvLyBhIERPTSBub2RlIGUuZy4gcG9pbnRlciBwb3NpdGlvbiwgc28gd2Ugb3ZlcnJpZGUgdGhlXG4gICAgICAgIC8vIGBhbmNob3JSZWZgIHdpdGggdGhlaXIgdmlydHVhbCByZWYgaW4gdGhpcyBjYXNlLlxuICAgICAgICBjb250ZXh0Lm9uQW5jaG9yQ2hhbmdlKCh2aXJ0dWFsUmVmID09PSBudWxsIHx8IHZpcnR1YWxSZWYgPT09IHZvaWQgMCA/IHZvaWQgMCA6IHZpcnR1YWxSZWYuY3VycmVudCkgfHwgcmVmLmN1cnJlbnQpO1xuICAgIH0pO1xuICAgIHJldHVybiB2aXJ0dWFsUmVmID8gbnVsbCA6IC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFByaW1pdGl2ZS5kaXYsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYW5jaG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkZWNkNGUxY2NhYjZlZDZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBTkNIT1JfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBQb3BwZXJDb250ZW50XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUgPSAnUG9wcGVyQ29udGVudCc7XG5jb25zdCBbJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJFBvcHBlckNvbnRlbnRQcm92aWRlciwgJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0XSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRjcmVhdGVQb3BwZXJDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUpO1xuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9hcnJvd1NpemUkd2lkdGgsIF9hcnJvd1NpemUkaGVpZ2h0LCBfbWlkZGxld2FyZURhdGEkYXJyb3csIF9taWRkbGV3YXJlRGF0YSRhcnJvdzIsIF9taWRkbGV3YXJlRGF0YSRhcnJvdzMsIF9taWRkbGV3YXJlRGF0YSR0cmFucywgX21pZGRsZXdhcmVEYXRhJHRyYW5zMiwgX21pZGRsZXdhcmVEYXRhJGhpZGU7XG4gICAgY29uc3QgeyBfX3Njb3BlUG9wcGVyOiBfX3Njb3BlUG9wcGVyICwgc2lkZTogc2lkZSA9ICdib3R0b20nICwgc2lkZU9mZnNldDogc2lkZU9mZnNldCA9IDAgLCBhbGlnbjogYWxpZ24gPSAnY2VudGVyJyAsIGFsaWduT2Zmc2V0OiBhbGlnbk9mZnNldCA9IDAgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyA9IDAgLCBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnkgPSBbXSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmdQcm9wID0gMCAsIHN0aWNreTogc3RpY2t5ID0gJ3BhcnRpYWwnICwgaGlkZVdoZW5EZXRhY2hlZDogaGlkZVdoZW5EZXRhY2hlZCA9IGZhbHNlICwgYXZvaWRDb2xsaXNpb25zOiBhdm9pZENvbGxpc2lvbnMgPSB0cnVlICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZVBvcHBlckNvbnRleHQoJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVBvcHBlcik7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICRrWTkzViR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFthcnJvdywgc2V0QXJyb3ddID0gJGtZOTNWJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGFycm93U2l6ZSA9ICRrWTkzViR1c2VTaXplKGFycm93KTtcbiAgICBjb25zdCBhcnJvd1dpZHRoID0gKF9hcnJvd1NpemUkd2lkdGggPSBhcnJvd1NpemUgPT09IG51bGwgfHwgYXJyb3dTaXplID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcnJvd1NpemUud2lkdGgpICE9PSBudWxsICYmIF9hcnJvd1NpemUkd2lkdGggIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkd2lkdGggOiAwO1xuICAgIGNvbnN0IGFycm93SGVpZ2h0ID0gKF9hcnJvd1NpemUkaGVpZ2h0ID0gYXJyb3dTaXplID09PSBudWxsIHx8IGFycm93U2l6ZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogYXJyb3dTaXplLmhlaWdodCkgIT09IG51bGwgJiYgX2Fycm93U2l6ZSRoZWlnaHQgIT09IHZvaWQgMCA/IF9hcnJvd1NpemUkaGVpZ2h0IDogMDtcbiAgICBjb25zdCBkZXNpcmVkUGxhY2VtZW50ID0gc2lkZSArIChhbGlnbiAhPT0gJ2NlbnRlcicgPyAnLScgKyBhbGlnbiA6ICcnKTtcbiAgICBjb25zdCBjb2xsaXNpb25QYWRkaW5nID0gdHlwZW9mIGNvbGxpc2lvblBhZGRpbmdQcm9wID09PSAnbnVtYmVyJyA/IGNvbGxpc2lvblBhZGRpbmdQcm9wIDoge1xuICAgICAgICB0b3A6IDAsXG4gICAgICAgIHJpZ2h0OiAwLFxuICAgICAgICBib3R0b206IDAsXG4gICAgICAgIGxlZnQ6IDAsXG4gICAgICAgIC4uLmNvbGxpc2lvblBhZGRpbmdQcm9wXG4gICAgfTtcbiAgICBjb25zdCBib3VuZGFyeSA9IEFycmF5LmlzQXJyYXkoY29sbGlzaW9uQm91bmRhcnkpID8gY29sbGlzaW9uQm91bmRhcnkgOiBbXG4gICAgICAgIGNvbGxpc2lvbkJvdW5kYXJ5XG4gICAgXTtcbiAgICBjb25zdCBoYXNFeHBsaWNpdEJvdW5kYXJpZXMgPSBib3VuZGFyeS5sZW5ndGggPiAwO1xuICAgIGNvbnN0IGRldGVjdE92ZXJmbG93T3B0aW9ucyA9IHtcbiAgICAgICAgcGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgYm91bmRhcnk6IGJvdW5kYXJ5LmZpbHRlcigkY2YxYWM1ZDlmZTBlODIwNiR2YXIkaXNOb3ROdWxsKSxcbiAgICAgICAgLy8gd2l0aCBgc3RyYXRlZ3k6ICdmaXhlZCdgLCB0aGlzIGlzIHRoZSBvbmx5IHdheSB0byBnZXQgaXQgdG8gcmVzcGVjdCBib3VuZGFyaWVzXG4gICAgICAgIGFsdEJvdW5kYXJ5OiBoYXNFeHBsaWNpdEJvdW5kYXJpZXNcbiAgICB9O1xuICAgIGNvbnN0IHsgcmVmczogcmVmcyAsIGZsb2F0aW5nU3R5bGVzOiBmbG9hdGluZ1N0eWxlcyAsIHBsYWNlbWVudDogcGxhY2VtZW50ICwgaXNQb3NpdGlvbmVkOiBpc1Bvc2l0aW9uZWQgLCBtaWRkbGV3YXJlRGF0YTogbWlkZGxld2FyZURhdGEgIH0gPSAka1k5M1YkdXNlRmxvYXRpbmcoe1xuICAgICAgICAvLyBkZWZhdWx0IHRvIGBmaXhlZGAgc3RyYXRlZ3kgc28gdXNlcnMgZG9uJ3QgaGF2ZSB0byBwaWNrIGFuZCB3ZSBhbHNvIGF2b2lkIGZvY3VzIHNjcm9sbCBpc3N1ZXNcbiAgICAgICAgc3RyYXRlZ3k6ICdmaXhlZCcsXG4gICAgICAgIHBsYWNlbWVudDogZGVzaXJlZFBsYWNlbWVudCxcbiAgICAgICAgd2hpbGVFbGVtZW50c01vdW50ZWQ6ICRrWTkzViRhdXRvVXBkYXRlLFxuICAgICAgICBlbGVtZW50czoge1xuICAgICAgICAgICAgcmVmZXJlbmNlOiBjb250ZXh0LmFuY2hvclxuICAgICAgICB9LFxuICAgICAgICBtaWRkbGV3YXJlOiBbXG4gICAgICAgICAgICAka1k5M1Ykb2Zmc2V0KHtcbiAgICAgICAgICAgICAgICBtYWluQXhpczogc2lkZU9mZnNldCArIGFycm93SGVpZ2h0LFxuICAgICAgICAgICAgICAgIGFsaWdubWVudEF4aXM6IGFsaWduT2Zmc2V0XG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIGF2b2lkQ29sbGlzaW9ucyAmJiAka1k5M1Ykc2hpZnQoe1xuICAgICAgICAgICAgICAgIG1haW5BeGlzOiB0cnVlLFxuICAgICAgICAgICAgICAgIGNyb3NzQXhpczogZmFsc2UsXG4gICAgICAgICAgICAgICAgbGltaXRlcjogc3RpY2t5ID09PSAncGFydGlhbCcgPyAka1k5M1YkbGltaXRTaGlmdCgpIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhdm9pZENvbGxpc2lvbnMgJiYgJGtZOTNWJGZsaXAoe1xuICAgICAgICAgICAgICAgIC4uLmRldGVjdE92ZXJmbG93T3B0aW9uc1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAka1k5M1Ykc2l6ZSh7XG4gICAgICAgICAgICAgICAgLi4uZGV0ZWN0T3ZlcmZsb3dPcHRpb25zLFxuICAgICAgICAgICAgICAgIGFwcGx5OiAoeyBlbGVtZW50czogZWxlbWVudHMgLCByZWN0czogcmVjdHMgLCBhdmFpbGFibGVXaWR0aDogYXZhaWxhYmxlV2lkdGggLCBhdmFpbGFibGVIZWlnaHQ6IGF2YWlsYWJsZUhlaWdodCAgfSk9PntcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgeyB3aWR0aDogYW5jaG9yV2lkdGggLCBoZWlnaHQ6IGFuY2hvckhlaWdodCAgfSA9IHJlY3RzLnJlZmVyZW5jZTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudFN0eWxlID0gZWxlbWVudHMuZmxvYXRpbmcuc3R5bGU7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoJywgYCR7YXZhaWxhYmxlV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hdmFpbGFibGUtaGVpZ2h0JywgYCR7YXZhaWxhYmxlSGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnRlbnRTdHlsZS5zZXRQcm9wZXJ0eSgnLS1yYWRpeC1wb3BwZXItYW5jaG9yLXdpZHRoJywgYCR7YW5jaG9yV2lkdGh9cHhgKTtcbiAgICAgICAgICAgICAgICAgICAgY29udGVudFN0eWxlLnNldFByb3BlcnR5KCctLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0JywgYCR7YW5jaG9ySGVpZ2h0fXB4YCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBhcnJvdyAmJiAka1k5M1YkYXJyb3coe1xuICAgICAgICAgICAgICAgIGVsZW1lbnQ6IGFycm93LFxuICAgICAgICAgICAgICAgIHBhZGRpbmc6IGFycm93UGFkZGluZ1xuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luKHtcbiAgICAgICAgICAgICAgICBhcnJvd1dpZHRoOiBhcnJvd1dpZHRoLFxuICAgICAgICAgICAgICAgIGFycm93SGVpZ2h0OiBhcnJvd0hlaWdodFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBoaWRlV2hlbkRldGFjaGVkICYmICRrWTkzViRoaWRlKHtcbiAgICAgICAgICAgICAgICBzdHJhdGVneTogJ3JlZmVyZW5jZUhpZGRlbidcbiAgICAgICAgICAgIH0pXG4gICAgICAgIF1cbiAgICB9KTtcbiAgICBjb25zdCBbcGxhY2VkU2lkZSwgcGxhY2VkQWxpZ25dID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KTtcbiAgICBjb25zdCBoYW5kbGVQbGFjZWQgPSAka1k5M1YkdXNlQ2FsbGJhY2tSZWYob25QbGFjZWQpO1xuICAgICRrWTkzViR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGlzUG9zaXRpb25lZCkgaGFuZGxlUGxhY2VkID09PSBudWxsIHx8IGhhbmRsZVBsYWNlZCA9PT0gdm9pZCAwIHx8IGhhbmRsZVBsYWNlZCgpO1xuICAgIH0sIFtcbiAgICAgICAgaXNQb3NpdGlvbmVkLFxuICAgICAgICBoYW5kbGVQbGFjZWRcbiAgICBdKTtcbiAgICBjb25zdCBhcnJvd1ggPSAoX21pZGRsZXdhcmVEYXRhJGFycm93ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdyA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Lng7XG4gICAgY29uc3QgYXJyb3dZID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzIgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93MiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Mi55O1xuICAgIGNvbnN0IGNhbm5vdENlbnRlckFycm93ID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3czID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzMuY2VudGVyT2Zmc2V0KSAhPT0gMDtcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAka1k5M1YkdXNlU3RhdGUoKTtcbiAgICAka1k5M1YkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoXCJkaXZcIiwge1xuICAgICAgICByZWY6IHJlZnMuc2V0RmxvYXRpbmcsXG4gICAgICAgIFwiZGF0YS1yYWRpeC1wb3BwZXItY29udGVudC13cmFwcGVyXCI6IFwiXCIsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5mbG9hdGluZ1N0eWxlcyxcbiAgICAgICAgICAgIHRyYW5zZm9ybTogaXNQb3NpdGlvbmVkID8gZmxvYXRpbmdTdHlsZXMudHJhbnNmb3JtIDogJ3RyYW5zbGF0ZSgwLCAtMjAwJSknLFxuICAgICAgICAgICAgLy8ga2VlcCBvZmYgdGhlIHBhZ2Ugd2hlbiBtZWFzdXJpbmdcbiAgICAgICAgICAgIG1pbldpZHRoOiAnbWF4LWNvbnRlbnQnLFxuICAgICAgICAgICAgekluZGV4OiBjb250ZW50WkluZGV4LFxuICAgICAgICAgICAgWyctLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luJ106IFtcbiAgICAgICAgICAgICAgICAoX21pZGRsZXdhcmVEYXRhJHRyYW5zID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSR0cmFucy54LFxuICAgICAgICAgICAgICAgIChfbWlkZGxld2FyZURhdGEkdHJhbnMyID0gbWlkZGxld2FyZURhdGEudHJhbnNmb3JtT3JpZ2luKSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkdHJhbnMyID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkdHJhbnMyLnlcbiAgICAgICAgICAgIF0uam9pbignICcpXG4gICAgICAgIH0gLy8gRmxvYXRpbmcgVUkgaW50ZXJhbGx5IGNhbGN1bGF0ZXMgbG9naWNhbCBhbGlnbm1lbnQgYmFzZWQgdGhlIGBkaXJgIGF0dHJpYnV0ZSBvblxuICAgICAgICAsXG4gICAgICAgIGRpcjogcHJvcHMuZGlyXG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUG9wcGVyLFxuICAgICAgICBwbGFjZWRTaWRlOiBwbGFjZWRTaWRlLFxuICAgICAgICBvbkFycm93Q2hhbmdlOiBzZXRBcnJvdyxcbiAgICAgICAgYXJyb3dYOiBhcnJvd1gsXG4gICAgICAgIGFycm93WTogYXJyb3dZLFxuICAgICAgICBzaG91bGRIaWRlQXJyb3c6IGNhbm5vdENlbnRlckFycm93XG4gICAgfSwgLyojX19QVVJFX18qLyAka1k5M1YkY3JlYXRlRWxlbWVudCgka1k5M1YkUHJpbWl0aXZlLmRpdiwgJGtZOTNWJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXNpZGVcIjogcGxhY2VkU2lkZSxcbiAgICAgICAgXCJkYXRhLWFsaWduXCI6IHBsYWNlZEFsaWduXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgLi4uY29udGVudFByb3BzLnN0eWxlLFxuICAgICAgICAgICAgLy8gaWYgdGhlIFBvcHBlckNvbnRlbnQgaGFzbid0IGJlZW4gcGxhY2VkIHlldCAobm90IGFsbCBtZWFzdXJlbWVudHMgZG9uZSlcbiAgICAgICAgICAgIC8vIHdlIHByZXZlbnQgYW5pbWF0aW9ucyBzbyB0aGF0IHVzZXJzJ3MgYW5pbWF0aW9uIGRvbid0IGtpY2sgaW4gdG9vIGVhcmx5IHJlZmVycmluZyB3cm9uZyBzaWRlc1xuICAgICAgICAgICAgYW5pbWF0aW9uOiAhaXNQb3NpdGlvbmVkID8gJ25vbmUnIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgLy8gaGlkZSB0aGUgY29udGVudCBpZiB1c2luZyB0aGUgaGlkZSBtaWRkbGV3YXJlIGFuZCBzaG91bGQgYmUgaGlkZGVuXG4gICAgICAgICAgICBvcGFjaXR5OiAoX21pZGRsZXdhcmVEYXRhJGhpZGUgPSBtaWRkbGV3YXJlRGF0YS5oaWRlKSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkaGlkZSAhPT0gdm9pZCAwICYmIF9taWRkbGV3YXJlRGF0YSRoaWRlLnJlZmVyZW5jZUhpZGRlbiA/IDAgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFBvcHBlckFycm93XG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FID0gJ1BvcHBlckFycm93JztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFID0ge1xuICAgIHRvcDogJ2JvdHRvbScsXG4gICAgcmlnaHQ6ICdsZWZ0JyxcbiAgICBib3R0b206ICd0b3AnLFxuICAgIGxlZnQ6ICdyaWdodCdcbn07XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCA9IC8qI19fUFVSRV9fKi8gJGtZOTNWJGZvcndhcmRSZWYoZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDAocHJvcHMsIGZvcndhcmRlZFJlZikge1xuICAgIGNvbnN0IHsgX19zY29wZVBvcHBlcjogX19zY29wZVBvcHBlciAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0KCRjZjFhYzVkOWZlMGU4MjA2JHZhciRBUlJPV19OQU1FLCBfX3Njb3BlUG9wcGVyKTtcbiAgICBjb25zdCBiYXNlU2lkZSA9ICRjZjFhYzVkOWZlMGU4MjA2JHZhciRPUFBPU0lURV9TSURFW2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdO1xuICAgIHJldHVybigvKiNfX1BVUkVfXyovIC8vIHdlIGhhdmUgdG8gdXNlIGFuIGV4dHJhIHdyYXBwZXIgYmVjYXVzZSBgUmVzaXplT2JzZXJ2ZXJgICh1c2VkIGJ5IGB1c2VTaXplYClcbiAgICAvLyBkb2Vzbid0IHJlcG9ydCBzaXplIGFzIHdlJ2QgZXhwZWN0IG9uIFNWRyBlbGVtZW50cy5cbiAgICAvLyBpdCByZXBvcnRzIHRoZWlyIGJvdW5kaW5nIGJveCB3aGljaCBpcyBlZmZlY3RpdmVseSB0aGUgbGFyZ2VzdCBwYXRoIGluc2lkZSB0aGUgU1ZHLlxuICAgICRrWTkzViRjcmVhdGVFbGVtZW50KFwic3BhblwiLCB7XG4gICAgICAgIHJlZjogY29udGVudENvbnRleHQub25BcnJvd0NoYW5nZSxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgICAgICAgbGVmdDogY29udGVudENvbnRleHQuYXJyb3dYLFxuICAgICAgICAgICAgdG9wOiBjb250ZW50Q29udGV4dC5hcnJvd1ksXG4gICAgICAgICAgICBbYmFzZVNpZGVdOiAwLFxuICAgICAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAnJyxcbiAgICAgICAgICAgICAgICByaWdodDogJzAgMCcsXG4gICAgICAgICAgICAgICAgYm90dG9tOiAnY2VudGVyIDAnLFxuICAgICAgICAgICAgICAgIGxlZnQ6ICcxMDAlIDAnXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdHJhbnNmb3JtOiB7XG4gICAgICAgICAgICAgICAgdG9wOiAndHJhbnNsYXRlWSgxMDAlKScsXG4gICAgICAgICAgICAgICAgcmlnaHQ6ICd0cmFuc2xhdGVZKDUwJSkgcm90YXRlKDkwZGVnKSB0cmFuc2xhdGVYKC01MCUpJyxcbiAgICAgICAgICAgICAgICBib3R0b206IGByb3RhdGUoMTgwZGVnKWAsXG4gICAgICAgICAgICAgICAgbGVmdDogJ3RyYW5zbGF0ZVkoNTAlKSByb3RhdGUoLTkwZGVnKSB0cmFuc2xhdGVYKDUwJSknXG4gICAgICAgICAgICB9W2NvbnRlbnRDb250ZXh0LnBsYWNlZFNpZGVdLFxuICAgICAgICAgICAgdmlzaWJpbGl0eTogY29udGVudENvbnRleHQuc2hvdWxkSGlkZUFycm93ID8gJ2hpZGRlbicgOiB1bmRlZmluZWRcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJGtZOTNWJGNyZWF0ZUVsZW1lbnQoJGtZOTNWJFJvb3QsICRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgYXJyb3dQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC4uLmFycm93UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAvLyBlbnN1cmVzIHRoZSBlbGVtZW50IGNhbiBiZSBtZWFzdXJlZCBjb3JyZWN0bHkgKG1vc3RseSBmb3IgaWYgU1ZHKVxuICAgICAgICAgICAgZGlzcGxheTogJ2Jsb2NrJ1xuICAgICAgICB9XG4gICAgfSkpKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkNzlkNjJjZDRlMTBhM2ZkMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUgIT09IG51bGw7XG59XG5jb25zdCAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luID0gKG9wdGlvbnMpPT4oe1xuICAgICAgICBuYW1lOiAndHJhbnNmb3JtT3JpZ2luJyxcbiAgICAgICAgb3B0aW9uczogb3B0aW9ucyxcbiAgICAgICAgZm4gKGRhdGEpIHtcbiAgICAgICAgICAgIHZhciBfbWlkZGxld2FyZURhdGEkYXJyb3c0LCBfbWlkZGxld2FyZURhdGEkYXJyb3c1LCBfbWlkZGxld2FyZURhdGEkYXJyb3c2LCBfbWlkZGxld2FyZURhdGEkYXJyb3c3LCBfbWlkZGxld2FyZURhdGEkYXJyb3c4O1xuICAgICAgICAgICAgY29uc3QgeyBwbGFjZW1lbnQ6IHBsYWNlbWVudCAsIHJlY3RzOiByZWN0cyAsIG1pZGRsZXdhcmVEYXRhOiBtaWRkbGV3YXJlRGF0YSAgfSA9IGRhdGE7XG4gICAgICAgICAgICBjb25zdCBjYW5ub3RDZW50ZXJBcnJvdyA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NCA9IG1pZGRsZXdhcmVEYXRhLmFycm93KSA9PT0gbnVsbCB8fCBfbWlkZGxld2FyZURhdGEkYXJyb3c0ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfbWlkZGxld2FyZURhdGEkYXJyb3c0LmNlbnRlck9mZnNldCkgIT09IDA7XG4gICAgICAgICAgICBjb25zdCBpc0Fycm93SGlkZGVuID0gY2Fubm90Q2VudGVyQXJyb3c7XG4gICAgICAgICAgICBjb25zdCBhcnJvd1dpZHRoID0gaXNBcnJvd0hpZGRlbiA/IDAgOiBvcHRpb25zLmFycm93V2lkdGg7XG4gICAgICAgICAgICBjb25zdCBhcnJvd0hlaWdodCA9IGlzQXJyb3dIaWRkZW4gPyAwIDogb3B0aW9ucy5hcnJvd0hlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IFtwbGFjZWRTaWRlLCBwbGFjZWRBbGlnbl0gPSAkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudChwbGFjZW1lbnQpO1xuICAgICAgICAgICAgY29uc3Qgbm9BcnJvd0FsaWduID0ge1xuICAgICAgICAgICAgICAgIHN0YXJ0OiAnMCUnLFxuICAgICAgICAgICAgICAgIGNlbnRlcjogJzUwJScsXG4gICAgICAgICAgICAgICAgZW5kOiAnMTAwJSdcbiAgICAgICAgICAgIH1bcGxhY2VkQWxpZ25dO1xuICAgICAgICAgICAgY29uc3QgYXJyb3dYQ2VudGVyID0gKChfbWlkZGxld2FyZURhdGEkYXJyb3c1ID0gKF9taWRkbGV3YXJlRGF0YSRhcnJvdzYgPSBtaWRkbGV3YXJlRGF0YS5hcnJvdykgPT09IG51bGwgfHwgX21pZGRsZXdhcmVEYXRhJGFycm93NiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX21pZGRsZXdhcmVEYXRhJGFycm93Ni54KSAhPT0gbnVsbCAmJiBfbWlkZGxld2FyZURhdGEkYXJyb3c1ICE9PSB2b2lkIDAgPyBfbWlkZGxld2FyZURhdGEkYXJyb3c1IDogMCkgKyBhcnJvd1dpZHRoIC8gMjtcbiAgICAgICAgICAgIGNvbnN0IGFycm93WUNlbnRlciA9ICgoX21pZGRsZXdhcmVEYXRhJGFycm93NyA9IChfbWlkZGxld2FyZURhdGEkYXJyb3c4ID0gbWlkZGxld2FyZURhdGEuYXJyb3cpID09PSBudWxsIHx8IF9taWRkbGV3YXJlRGF0YSRhcnJvdzggPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9taWRkbGV3YXJlRGF0YSRhcnJvdzgueSkgIT09IG51bGwgJiYgX21pZGRsZXdhcmVEYXRhJGFycm93NyAhPT0gdm9pZCAwID8gX21pZGRsZXdhcmVEYXRhJGFycm93NyA6IDApICsgYXJyb3dIZWlnaHQgLyAyO1xuICAgICAgICAgICAgbGV0IHggPSAnJztcbiAgICAgICAgICAgIGxldCB5ID0gJyc7XG4gICAgICAgICAgICBpZiAocGxhY2VkU2lkZSA9PT0gJ2JvdHRvbScpIHtcbiAgICAgICAgICAgICAgICB4ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WENlbnRlcn1weGA7XG4gICAgICAgICAgICAgICAgeSA9IGAkey1hcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICd0b3AnKSB7XG4gICAgICAgICAgICAgICAgeCA9IGlzQXJyb3dIaWRkZW4gPyBub0Fycm93QWxpZ24gOiBgJHthcnJvd1hDZW50ZXJ9cHhgO1xuICAgICAgICAgICAgICAgIHkgPSBgJHtyZWN0cy5mbG9hdGluZy5oZWlnaHQgKyBhcnJvd0hlaWdodH1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdyaWdodCcpIHtcbiAgICAgICAgICAgICAgICB4ID0gYCR7LWFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHBsYWNlZFNpZGUgPT09ICdsZWZ0Jykge1xuICAgICAgICAgICAgICAgIHggPSBgJHtyZWN0cy5mbG9hdGluZy53aWR0aCArIGFycm93SGVpZ2h0fXB4YDtcbiAgICAgICAgICAgICAgICB5ID0gaXNBcnJvd0hpZGRlbiA/IG5vQXJyb3dBbGlnbiA6IGAke2Fycm93WUNlbnRlcn1weGA7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIGRhdGE6IHtcbiAgICAgICAgICAgICAgICAgICAgeDogeCxcbiAgICAgICAgICAgICAgICAgICAgeTogeVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9KVxuO1xuZnVuY3Rpb24gJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJGdldFNpZGVBbmRBbGlnbkZyb21QbGFjZW1lbnQocGxhY2VtZW50KSB7XG4gICAgY29uc3QgW3NpZGUsIGFsaWduID0gJ2NlbnRlciddID0gcGxhY2VtZW50LnNwbGl0KCctJyk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2lkZSxcbiAgICAgICAgYWxpZ25cbiAgICBdO1xufVxuY29uc3QgJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOTtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGVjZDRlMWNjYWI2ZWQ2ZDtcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYztcbmNvbnN0ICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1ID0gJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDc5ZDYyY2Q0ZTEwYTNmZDA7XG5cblxuXG5cbmV4cG9ydCB7JGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDcyMmFhYzE5NGFlOTIzIGFzIGNyZWF0ZVBvcHBlclNjb3BlLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmFkYWM5YWRhM2EwYmRmOSBhcyBQb3BwZXIsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQgYXMgUG9wcGVyQW5jaG9yLCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmM0YWU1ODU1ZDNjNGZjIGFzIFBvcHBlckNvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3OWQ2MmNkNGUxMGEzZmQwIGFzIFBvcHBlckFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYjY4ODI1Mzk1OGI4ZGZlNyBhcyBBbmNob3IsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQyMWIwN2M4ZjI3NGFlYmQ1IGFzIEFycm93LCAkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMzZmMDA4NmRhMDljNGI5ZiBhcyBTSURFX09QVElPTlMsICRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQzNjcxZmZhYjdiMzAyZmM5IGFzIEFMSUdOX09QVElPTlN9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHtmb3J3YXJkUmVmIGFzICRrVndudyRmb3J3YXJkUmVmLCBjcmVhdGVFbGVtZW50IGFzICRrVndudyRjcmVhdGVFbGVtZW50fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICRrVndudyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFZpc3VhbGx5SGlkZGVuXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJHZhciROQU1FID0gJ1Zpc3VhbGx5SGlkZGVuJztcbmNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0ID0gLyojX19QVVJFX18qLyAka1Z3bnckZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAka1Z3bnckY3JlYXRlRWxlbWVudCgka1Z3bnckUHJpbWl0aXZlLnNwYW4sICRrVndudyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS90d2JzL2Jvb3RzdHJhcC9ibG9iL21hc3Rlci9zY3NzL21peGlucy9fc2NyZWVuLXJlYWRlci5zY3NzXG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIGJvcmRlcjogMCxcbiAgICAgICAgICAgIHdpZHRoOiAxLFxuICAgICAgICAgICAgaGVpZ2h0OiAxLFxuICAgICAgICAgICAgcGFkZGluZzogMCxcbiAgICAgICAgICAgIG1hcmdpbjogLTEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2hpZGRlbicsXG4gICAgICAgICAgICBjbGlwOiAncmVjdCgwLCAwLCAwLCAwKScsXG4gICAgICAgICAgICB3aGl0ZVNwYWNlOiAnbm93cmFwJyxcbiAgICAgICAgICAgIHdvcmRXcmFwOiAnbm9ybWFsJyxcbiAgICAgICAgICAgIC4uLnByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkZWExZWY1OTRjZjU3MGQ4MyRleHBvcnQkNDM5ZDI5YTRlMTEwYTE2NCwge1xuICAgIGRpc3BsYXlOYW1lOiAkZWExZWY1OTRjZjU3MGQ4MyR2YXIkTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQ7XG5cblxuXG5cbmV4cG9ydCB7JGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JDQzOWQyOWE0ZTExMGExNjQgYXMgVmlzdWFsbHlIaWRkZW4sICRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3R9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiaW1wb3J0ICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IHt1c2VTdGF0ZSBhcyAkOHdlcEskdXNlU3RhdGUsIHVzZVJlZiBhcyAkOHdlcEskdXNlUmVmLCB1c2VFZmZlY3QgYXMgJDh3ZXBLJHVzZUVmZmVjdCwgY3JlYXRlRWxlbWVudCBhcyAkOHdlcEskY3JlYXRlRWxlbWVudCwgdXNlQ2FsbGJhY2sgYXMgJDh3ZXBLJHVzZUNhbGxiYWNrLCB1c2VNZW1vIGFzICQ4d2VwSyR1c2VNZW1vLCBmb3J3YXJkUmVmIGFzICQ4d2VwSyRmb3J3YXJkUmVmfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDh3ZXBLJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHtEaXNtaXNzYWJsZUxheWVyIGFzICQ4d2VwSyREaXNtaXNzYWJsZUxheWVyfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWRpc21pc3NhYmxlLWxheWVyXCI7XG5pbXBvcnQge3VzZUlkIGFzICQ4d2VwSyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDh3ZXBLJFJvb3QsIEFuY2hvciBhcyAkOHdlcEskQW5jaG9yLCBDb250ZW50IGFzICQ4d2VwSyRDb250ZW50LCBBcnJvdyBhcyAkOHdlcEskQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkOHdlcEskUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmVzZW5jZSBhcyAkOHdlcEskUHJlc2VuY2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJlc2VuY2VcIjtcbmltcG9ydCB7UHJpbWl0aXZlIGFzICQ4d2VwSyRQcmltaXRpdmV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcHJpbWl0aXZlXCI7XG5pbXBvcnQge1Nsb3R0YWJsZSBhcyAkOHdlcEskU2xvdHRhYmxlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXNsb3RcIjtcbmltcG9ydCB7dXNlQ29udHJvbGxhYmxlU3RhdGUgYXMgJDh3ZXBLJHVzZUNvbnRyb2xsYWJsZVN0YXRlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1jb250cm9sbGFibGUtc3RhdGVcIjtcbmltcG9ydCB7Um9vdCBhcyAkOHdlcEskUm9vdDF9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1XSA9ICQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUoJ1Rvb2x0aXAnLCBbXG4gICAgJDh3ZXBLJGNyZWF0ZVBvcHBlclNjb3BlXG5dKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZSA9ICQ4d2VwSyRjcmVhdGVQb3BwZXJTY29wZSgpO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFByb3ZpZGVyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FID0gJ1Rvb2x0aXBQcm92aWRlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiA9IDcwMDtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4gPSAndG9vbHRpcC5vcGVuJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dF0gPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBST1ZJREVSX05BTUUpO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCBkZWxheUR1cmF0aW9uOiBkZWxheUR1cmF0aW9uID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJERFRkFVTFRfREVMQVlfRFVSQVRJT04gLCBza2lwRGVsYXlEdXJhdGlvbjogc2tpcERlbGF5RHVyYXRpb24gPSAzMDAgLCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQgPSBmYWxzZSAsIGNoaWxkcmVuOiBjaGlsZHJlbiAgfSA9IHByb3BzO1xuICAgIGNvbnN0IFtpc09wZW5EZWxheWVkLCBzZXRJc09wZW5EZWxheWVkXSA9ICQ4d2VwSyR1c2VTdGF0ZSh0cnVlKTtcbiAgICBjb25zdCBpc1BvaW50ZXJJblRyYW5zaXRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBza2lwRGVsYXlUaW1lclJlZiA9ICQ4d2VwSyR1c2VSZWYoMCk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBza2lwRGVsYXlUaW1lciA9IHNraXBEZWxheVRpbWVyUmVmLmN1cnJlbnQ7XG4gICAgICAgIHJldHVybiAoKT0+d2luZG93LmNsZWFyVGltZW91dChza2lwRGVsYXlUaW1lcilcbiAgICAgICAgO1xuICAgIH0sIFtdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgaXNPcGVuRGVsYXllZDogaXNPcGVuRGVsYXllZCxcbiAgICAgICAgZGVsYXlEdXJhdGlvbjogZGVsYXlEdXJhdGlvbixcbiAgICAgICAgb25PcGVuOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBzZXRJc09wZW5EZWxheWVkKGZhbHNlKTtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBvbkNsb3NlOiAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQoc2tpcERlbGF5VGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgICAgICBza2lwRGVsYXlUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PnNldElzT3BlbkRlbGF5ZWQodHJ1ZSlcbiAgICAgICAgICAgICwgc2tpcERlbGF5RHVyYXRpb24pO1xuICAgICAgICB9LCBbXG4gICAgICAgICAgICBza2lwRGVsYXlEdXJhdGlvblxuICAgICAgICBdKSxcbiAgICAgICAgaXNQb2ludGVySW5UcmFuc2l0UmVmOiBpc1BvaW50ZXJJblRyYW5zaXRSZWYsXG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZTogJDh3ZXBLJHVzZUNhbGxiYWNrKChpblRyYW5zaXQpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJJblRyYW5zaXRSZWYuY3VycmVudCA9IGluVHJhbnNpdDtcbiAgICAgICAgfSwgW10pLFxuICAgICAgICBkaXNhYmxlSG92ZXJhYmxlQ29udGVudDogZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICB9LCBjaGlsZHJlbik7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRmNzg2NDlmYjljYTU2NmI4LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQUk9WSURFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSA9ICdUb29sdGlwJztcbmNvbnN0IFskYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcENvbnRleHRQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FKTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhID0gKHByb3BzKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gPSBmYWxzZSAsIG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQ6IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAsIGRlbGF5RHVyYXRpb246IGRlbGF5RHVyYXRpb25Qcm9wICB9ID0gcHJvcHM7XG4gICAgY29uc3QgcHJvdmlkZXJDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRPT0xUSVBfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBbdHJpZ2dlciwgc2V0VHJpZ2dlcl0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29udGVudElkID0gJDh3ZXBLJHVzZUlkKCk7XG4gICAgY29uc3Qgb3BlblRpbWVyUmVmID0gJDh3ZXBLJHVzZVJlZigwKTtcbiAgICBjb25zdCBkaXNhYmxlSG92ZXJhYmxlQ29udGVudCA9IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCAhPT0gbnVsbCAmJiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFByb3AgIT09IHZvaWQgMCA/IGRpc2FibGVIb3ZlcmFibGVDb250ZW50UHJvcCA6IHByb3ZpZGVyQ29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudDtcbiAgICBjb25zdCBkZWxheUR1cmF0aW9uID0gZGVsYXlEdXJhdGlvblByb3AgIT09IG51bGwgJiYgZGVsYXlEdXJhdGlvblByb3AgIT09IHZvaWQgMCA/IGRlbGF5RHVyYXRpb25Qcm9wIDogcHJvdmlkZXJDb250ZXh0LmRlbGF5RHVyYXRpb247XG4gICAgY29uc3Qgd2FzT3BlbkRlbGF5ZWRSZWYgPSAkOHdlcEskdXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCBbb3BlbjEgPSBmYWxzZSwgc2V0T3Blbl0gPSAkOHdlcEskdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogKG9wZW4pPT57XG4gICAgICAgICAgICBpZiAob3Blbikge1xuICAgICAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5vbk9wZW4oKTsgLy8gYXMgYG9uQ2hhbmdlYCBpcyBjYWxsZWQgd2l0aGluIGEgbGlmZWN5Y2xlIG1ldGhvZCB3ZVxuICAgICAgICAgICAgICAgIC8vIGF2b2lkIGRpc3BhdGNoaW5nIHZpYSBgZGlzcGF0Y2hEaXNjcmV0ZUN1c3RvbUV2ZW50YC5cbiAgICAgICAgICAgICAgICBkb2N1bWVudC5kaXNwYXRjaEV2ZW50KG5ldyBDdXN0b21FdmVudCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOKSk7XG4gICAgICAgICAgICB9IGVsc2UgcHJvdmlkZXJDb250ZXh0Lm9uQ2xvc2UoKTtcbiAgICAgICAgICAgIG9uT3BlbkNoYW5nZSA9PT0gbnVsbCB8fCBvbk9wZW5DaGFuZ2UgPT09IHZvaWQgMCB8fCBvbk9wZW5DaGFuZ2Uob3Blbik7XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICBjb25zdCBzdGF0ZUF0dHJpYnV0ZSA9ICQ4d2VwSyR1c2VNZW1vKCgpPT57XG4gICAgICAgIHJldHVybiBvcGVuMSA/IHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPyAnZGVsYXllZC1vcGVuJyA6ICdpbnN0YW50LW9wZW4nIDogJ2Nsb3NlZCc7XG4gICAgfSwgW1xuICAgICAgICBvcGVuMVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZU9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICB9LCBbXG4gICAgICAgIHNldE9wZW5cbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDbG9zZSA9ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KG9wZW5UaW1lclJlZi5jdXJyZW50KTtcbiAgICAgICAgc2V0T3BlbihmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgY29uc3QgaGFuZGxlRGVsYXllZE9wZW4gPSAkOHdlcEskdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIG9wZW5UaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldFRpbWVvdXQoKCk9PntcbiAgICAgICAgICAgIHdhc09wZW5EZWxheWVkUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgc2V0T3Blbih0cnVlKTtcbiAgICAgICAgfSwgZGVsYXlEdXJhdGlvbik7XG4gICAgfSwgW1xuICAgICAgICBkZWxheUR1cmF0aW9uLFxuICAgICAgICBzZXRPcGVuXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICByZXR1cm4gKCk9PndpbmRvdy5jbGVhclRpbWVvdXQob3BlblRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QsIHBvcHBlclNjb3BlLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGV4dFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgY29udGVudElkOiBjb250ZW50SWQsXG4gICAgICAgIG9wZW46IG9wZW4xLFxuICAgICAgICBzdGF0ZUF0dHJpYnV0ZTogc3RhdGVBdHRyaWJ1dGUsXG4gICAgICAgIHRyaWdnZXI6IHRyaWdnZXIsXG4gICAgICAgIG9uVHJpZ2dlckNoYW5nZTogc2V0VHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyRW50ZXI6ICQ4d2VwSyR1c2VDYWxsYmFjaygoKT0+e1xuICAgICAgICAgICAgaWYgKHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkKSBoYW5kbGVEZWxheWVkT3BlbigpO1xuICAgICAgICAgICAgZWxzZSBoYW5kbGVPcGVuKCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIHByb3ZpZGVyQ29udGV4dC5pc09wZW5EZWxheWVkLFxuICAgICAgICAgICAgaGFuZGxlRGVsYXllZE9wZW4sXG4gICAgICAgICAgICBoYW5kbGVPcGVuXG4gICAgICAgIF0pLFxuICAgICAgICBvblRyaWdnZXJMZWF2ZTogJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnQpIGhhbmRsZUNsb3NlKCk7XG4gICAgICAgICAgICBlbHNlIC8vIENsZWFyIHRoZSB0aW1lciBpbiBjYXNlIHRoZSBwb2ludGVyIGxlYXZlcyB0aGUgdHJpZ2dlciBiZWZvcmUgdGhlIHRvb2x0aXAgaXMgb3BlbmVkLlxuICAgICAgICAgICAgd2luZG93LmNsZWFyVGltZW91dChvcGVuVGltZXJSZWYuY3VycmVudCk7XG4gICAgICAgIH0sIFtcbiAgICAgICAgICAgIGhhbmRsZUNsb3NlLFxuICAgICAgICAgICAgZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRcbiAgICAgICAgXSksXG4gICAgICAgIG9uT3BlbjogaGFuZGxlT3BlbixcbiAgICAgICAgb25DbG9zZTogaGFuZGxlQ2xvc2UsXG4gICAgICAgIGRpc2FibGVIb3ZlcmFibGVDb250ZW50OiBkaXNhYmxlSG92ZXJhYmxlQ29udGVudFxuICAgIH0sIGNoaWxkcmVuKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQyOGM2NjBjNjNiNzkyZGVhLCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogVG9vbHRpcFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSA9ICdUb29sdGlwVHJpZ2dlcic7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCA9IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlVG9vbHRpcDogX19zY29wZVRvb2x0aXAgLCAuLi50cmlnZ2VyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHByb3ZpZGVyQ29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwUHJvdmlkZXJDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUUklHR0VSX05BTUUsIF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmLCBjb250ZXh0Lm9uVHJpZ2dlckNoYW5nZSk7XG4gICAgY29uc3QgaXNQb2ludGVyRG93blJlZiA9ICQ4d2VwSyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IGhhc1BvaW50ZXJNb3ZlT3BlbmVkUmVmID0gJDh3ZXBLJHVzZVJlZihmYWxzZSk7XG4gICAgY29uc3QgaGFuZGxlUG9pbnRlclVwID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT5pc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSBmYWxzZVxuICAgICwgW10pO1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXApXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVBvaW50ZXJVcFxuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRBbmNob3IsICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwb3BwZXJTY29wZSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByaW1pdGl2ZS5idXR0b24sICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIC8vIFdlIHB1cnBvc2VmdWxseSBhdm9pZCBhZGRpbmcgYHR5cGU9YnV0dG9uYCBoZXJlIGJlY2F1c2UgdG9vbHRpcCB0cmlnZ2VycyBhcmUgYWxzb1xuICAgICAgICAvLyBjb21tb25seSBhbmNob3JzIGFuZCB0aGUgYW5jaG9yIGB0eXBlYCBhdHRyaWJ1dGUgc2lnbmlmaWVzIE1JTUUgdHlwZS5cbiAgICAgICAgXCJhcmlhLWRlc2NyaWJlZGJ5XCI6IGNvbnRleHQub3BlbiA/IGNvbnRleHQuY29udGVudElkIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHRyaWdnZXJQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlck1vdmUsIChldmVudCk9PntcbiAgICAgICAgICAgIGlmIChldmVudC5wb2ludGVyVHlwZSA9PT0gJ3RvdWNoJykgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCFoYXNQb2ludGVyTW92ZU9wZW5lZFJlZi5jdXJyZW50ICYmICFwcm92aWRlckNvbnRleHQuaXNQb2ludGVySW5UcmFuc2l0UmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm9uVHJpZ2dlckVudGVyKCk7XG4gICAgICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJMZWF2ZTogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckxlYXZlLCAoKT0+e1xuICAgICAgICAgICAgY29udGV4dC5vblRyaWdnZXJMZWF2ZSgpO1xuICAgICAgICAgICAgaGFzUG9pbnRlck1vdmVPcGVuZWRSZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyRG93bjogJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzKHByb3BzLm9uUG9pbnRlckRvd24sICgpPT57XG4gICAgICAgICAgICBpc1BvaW50ZXJEb3duUmVmLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH0pLFxuICAgICAgICBvbkZvY3VzOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25Gb2N1cywgKCk9PntcbiAgICAgICAgICAgIGlmICghaXNQb2ludGVyRG93blJlZi5jdXJyZW50KSBjb250ZXh0Lm9uT3BlbigpO1xuICAgICAgICB9KSxcbiAgICAgICAgb25CbHVyOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25CbHVyLCBjb250ZXh0Lm9uQ2xvc2UpLFxuICAgICAgICBvbkNsaWNrOiAkOHdlcEskY29tcG9zZUV2ZW50SGFuZGxlcnMocHJvcHMub25DbGljaywgY29udGV4dC5vbkNsb3NlKVxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFRvb2x0aXBQb3J0YWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FID0gJ1Rvb2x0aXBQb3J0YWwnO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRQb3J0YWxQcm92aWRlciwgJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHRdID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGNyZWF0ZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRSwge1xuICAgIGZvcmNlTW91bnQ6IHVuZGVmaW5lZFxufSk7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIGZvcmNlTW91bnQ6IGZvcmNlTW91bnQgLCBjaGlsZHJlbjogY2hpbGRyZW4gLCBjb250YWluZXI6IGNvbnRhaW5lciAgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBPUlRBTF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFBvcnRhbFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlVG9vbHRpcCxcbiAgICAgICAgZm9yY2VNb3VudDogZm9yY2VNb3VudFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskUG9ydGFsLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWUsXG4gICAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyXG4gICAgfSwgY2hpbGRyZW4pKSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YjM2YjhmOTI1YWI3NDk3LCB7XG4gICAgZGlzcGxheU5hbWU6ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRQT1JUQUxfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQ29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FID0gJ1Rvb2x0aXBDb250ZW50JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRlOTAwM2UyYmUzN2VjMDYwID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBwb3J0YWxDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcnRhbENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRSwgcHJvcHMuX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgZm9yY2VNb3VudDogZm9yY2VNb3VudCA9IHBvcnRhbENvbnRleHQuZm9yY2VNb3VudCAsIHNpZGU6IHNpZGUgPSAndG9wJyAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFByZXNlbmNlLCB7XG4gICAgICAgIHByZXNlbnQ6IGZvcmNlTW91bnQgfHwgY29udGV4dC5vcGVuXG4gICAgfSwgY29udGV4dC5kaXNhYmxlSG92ZXJhYmxlQ29udGVudCA/IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgc2lkZTogc2lkZVxuICAgIH0sIGNvbnRlbnRQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSA6IC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlLCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBzaWRlOiBzaWRlXG4gICAgfSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SG92ZXJhYmxlID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCBjb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBDb250ZXh0KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUsIHByb3BzLl9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCBwcm92aWRlckNvbnRleHQgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcFByb3ZpZGVyQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcmVmID0gJDh3ZXBLJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkOHdlcEskdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgcmVmKTtcbiAgICBjb25zdCBbcG9pbnRlckdyYWNlQXJlYSwgc2V0UG9pbnRlckdyYWNlQXJlYV0gPSAkOHdlcEskdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgeyB0cmlnZ2VyOiB0cmlnZ2VyICwgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7XG4gICAgY29uc3QgY29udGVudCA9IHJlZi5jdXJyZW50O1xuICAgIGNvbnN0IHsgb25Qb2ludGVySW5UcmFuc2l0Q2hhbmdlOiBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UgIH0gPSBwcm92aWRlckNvbnRleHQ7XG4gICAgY29uc3QgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhID0gJDh3ZXBLJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNldFBvaW50ZXJHcmFjZUFyZWEobnVsbCk7XG4gICAgICAgIG9uUG9pbnRlckluVHJhbnNpdENoYW5nZShmYWxzZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICBjb25zdCBoYW5kbGVDcmVhdGVHcmFjZUFyZWEgPSAkOHdlcEskdXNlQ2FsbGJhY2soKGV2ZW50LCBob3ZlclRhcmdldCk9PntcbiAgICAgICAgY29uc3QgY3VycmVudFRhcmdldCA9IGV2ZW50LmN1cnJlbnRUYXJnZXQ7XG4gICAgICAgIGNvbnN0IGV4aXRQb2ludCA9IHtcbiAgICAgICAgICAgIHg6IGV2ZW50LmNsaWVudFgsXG4gICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGV4aXRTaWRlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEV4aXRTaWRlRnJvbVJlY3QoZXhpdFBvaW50LCBjdXJyZW50VGFyZ2V0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpKTtcbiAgICAgICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUpO1xuICAgICAgICBjb25zdCBob3ZlclRhcmdldFBvaW50cyA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChob3ZlclRhcmdldC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKSk7XG4gICAgICAgIGNvbnN0IGdyYWNlQXJlYSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsKFtcbiAgICAgICAgICAgIC4uLnBhZGRlZEV4aXRQb2ludHMsXG4gICAgICAgICAgICAuLi5ob3ZlclRhcmdldFBvaW50c1xuICAgICAgICBdKTtcbiAgICAgICAgc2V0UG9pbnRlckdyYWNlQXJlYShncmFjZUFyZWEpO1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2UodHJ1ZSk7XG4gICAgfSwgW1xuICAgICAgICBvblBvaW50ZXJJblRyYW5zaXRDaGFuZ2VcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIHJldHVybiAoKT0+aGFuZGxlUmVtb3ZlR3JhY2VBcmVhKClcbiAgICAgICAgO1xuICAgIH0sIFtcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgJDh3ZXBLJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAodHJpZ2dlciAmJiBjb250ZW50KSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmlnZ2VyTGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIGNvbnRlbnQpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVDb250ZW50TGVhdmUgPSAoZXZlbnQpPT5oYW5kbGVDcmVhdGVHcmFjZUFyZWEoZXZlbnQsIHRyaWdnZXIpXG4gICAgICAgICAgICA7XG4gICAgICAgICAgICB0cmlnZ2VyLmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICBjb250ZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZUNvbnRlbnRMZWF2ZSk7XG4gICAgICAgICAgICByZXR1cm4gKCk9PntcbiAgICAgICAgICAgICAgICB0cmlnZ2VyLnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJsZWF2ZScsIGhhbmRsZVRyaWdnZXJMZWF2ZSk7XG4gICAgICAgICAgICAgICAgY29udGVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdwb2ludGVybGVhdmUnLCBoYW5kbGVDb250ZW50TGVhdmUpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgaGFuZGxlQ3JlYXRlR3JhY2VBcmVhLFxuICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWFcbiAgICBdKTtcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChwb2ludGVyR3JhY2VBcmVhKSB7XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcG9pbnRlclBvc2l0aW9uID0ge1xuICAgICAgICAgICAgICAgICAgICB4OiBldmVudC5jbGllbnRYLFxuICAgICAgICAgICAgICAgICAgICB5OiBldmVudC5jbGllbnRZXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICBjb25zdCBoYXNFbnRlcmVkVGFyZ2V0ID0gKHRyaWdnZXIgPT09IG51bGwgfHwgdHJpZ2dlciA9PT0gdm9pZCAwID8gdm9pZCAwIDogdHJpZ2dlci5jb250YWlucyh0YXJnZXQpKSB8fCAoY29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmNvbnRhaW5zKHRhcmdldCkpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGlzUG9pbnRlck91dHNpZGVHcmFjZUFyZWEgPSAhJGEwOTNjN2UxZWMyNWEwNTckdmFyJGlzUG9pbnRJblBvbHlnb24ocG9pbnRlclBvc2l0aW9uLCBwb2ludGVyR3JhY2VBcmVhKTtcbiAgICAgICAgICAgICAgICBpZiAoaGFzRW50ZXJlZFRhcmdldCkgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhKCk7XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoaXNQb2ludGVyT3V0c2lkZUdyYWNlQXJlYSkge1xuICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVHcmFjZUFyZWEoKTtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZSgpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVRyYWNrUG9pbnRlckdyYWNlKTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+ZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgdHJpZ2dlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgcG9pbnRlckdyYWNlQXJlYSxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgaGFuZGxlUmVtb3ZlR3JhY2VBcmVhXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCwgJDh3ZXBLJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmc1xuICAgIH0pKTtcbn0pO1xuY29uc3QgWyRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0XSA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRjcmVhdGVUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FLCB7XG4gICAgaXNJbnNpZGU6IGZhbHNlXG59KTtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQ4d2VwSyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVRvb2x0aXA6IF9fc2NvcGVUb29sdGlwICwgY2hpbGRyZW46IGNoaWxkcmVuICwgJ2FyaWEtbGFiZWwnOiBhcmlhTGFiZWwgLCBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93biAsIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSAsIC4uLmNvbnRlbnRQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VUb29sdGlwQ29udGV4dCgkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlVG9vbHRpcCk7XG4gICAgY29uc3QgcG9wcGVyU2NvcGUgPSAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUoX19zY29wZVRvb2x0aXApO1xuICAgIGNvbnN0IHsgb25DbG9zZTogb25DbG9zZSAgfSA9IGNvbnRleHQ7IC8vIENsb3NlIHRoaXMgdG9vbHRpcCBpZiBhbm90aGVyIG9uZSBvcGVuc1xuICAgICQ4d2VwSyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9PUEVOLCBvbkNsb3NlKTtcbiAgICAgICAgcmV0dXJuICgpPT5kb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4sIG9uQ2xvc2UpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uQ2xvc2VcbiAgICBdKTsgLy8gQ2xvc2UgdGhlIHRvb2x0aXAgaWYgdGhlIHRyaWdnZXIgaXMgc2Nyb2xsZWRcbiAgICAkOHdlcEskdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZXh0LnRyaWdnZXIpIHtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVNjcm9sbCA9IChldmVudCk9PntcbiAgICAgICAgICAgICAgICBjb25zdCB0YXJnZXQgPSBldmVudC50YXJnZXQ7XG4gICAgICAgICAgICAgICAgaWYgKHRhcmdldCAhPT0gbnVsbCAmJiB0YXJnZXQgIT09IHZvaWQgMCAmJiB0YXJnZXQuY29udGFpbnMoY29udGV4dC50cmlnZ2VyKSkgb25DbG9zZSgpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwsIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiAoKT0+d2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGhhbmRsZVNjcm9sbCwge1xuICAgICAgICAgICAgICAgICAgICBjYXB0dXJlOiB0cnVlXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIDtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC50cmlnZ2VyLFxuICAgICAgICBvbkNsb3NlXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiBmYWxzZSxcbiAgICAgICAgb25Fc2NhcGVLZXlEb3duOiBvbkVzY2FwZUtleURvd24sXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiBvblBvaW50ZXJEb3duT3V0c2lkZSxcbiAgICAgICAgb25Gb2N1c091dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgLFxuICAgICAgICBvbkRpc21pc3M6IG9uQ2xvc2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCQ4d2VwSyRDb250ZW50LCAkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5zdGF0ZUF0dHJpYnV0ZVxuICAgIH0sIHBvcHBlclNjb3BlLCBjb250ZW50UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAuLi5jb250ZW50UHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtdHJhbnNmb3JtLW9yaWdpbic6ICd2YXIoLS1yYWRpeC1wb3BwZXItdHJhbnNmb3JtLW9yaWdpbiknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC1jb250ZW50LWF2YWlsYWJsZS13aWR0aCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLXdpZHRoKScsXG4gICAgICAgICAgICAnLS1yYWRpeC10b29sdGlwLWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtdG9vbHRpcC10cmlnZ2VyLXdpZHRoJzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3Itd2lkdGgpJyxcbiAgICAgICAgICAgICctLXJhZGl4LXRvb2x0aXAtdHJpZ2dlci1oZWlnaHQnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci1oZWlnaHQpJ1xuICAgICAgICB9XG4gICAgfSksIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFNsb3R0YWJsZSwgbnVsbCwgY2hpbGRyZW4pLCAvKiNfX1BVUkVfXyovICQ4d2VwSyRjcmVhdGVFbGVtZW50KCRhMDkzYzdlMWVjMjVhMDU3JHZhciRWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVUb29sdGlwLFxuICAgICAgICBpc0luc2lkZTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDh3ZXBLJGNyZWF0ZUVsZW1lbnQoJDh3ZXBLJFJvb3QxLCB7XG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgcm9sZTogXCJ0b29sdGlwXCJcbiAgICB9LCBhcmlhTGFiZWwgfHwgY2hpbGRyZW4pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAsIHtcbiAgICBkaXNwbGF5TmFtZTogJGEwOTNjN2UxZWMyNWEwNTckdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBUb29sdGlwQXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUgPSAnVG9vbHRpcEFycm93JztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5ID0gLyojX19QVVJFX18qLyAkOHdlcEskZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVUb29sdGlwOiBfX3Njb3BlVG9vbHRpcCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVUb29sdGlwKTtcbiAgICBjb25zdCB2aXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0ID0gJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQoJGEwOTNjN2UxZWMyNWEwNTckdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVUb29sdGlwKTsgLy8gaWYgdGhlIGFycm93IGlzIGluc2lkZSB0aGUgYFZpc3VhbGx5SGlkZGVuYCwgd2UgZG9uJ3Qgd2FudCB0byByZW5kZXIgaXQgYWxsIHRvXG4gICAgLy8gcHJldmVudCBpc3N1ZXMgaW4gcG9zaXRpb25pbmcgdGhlIGFycm93IGR1ZSB0byB0aGUgZHVwbGljYXRlXG4gICAgcmV0dXJuIHZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHQuaXNJbnNpZGUgPyBudWxsIDogLyojX19QVVJFX18qLyAkOHdlcEskY3JlYXRlRWxlbWVudCgkOHdlcEskQXJyb3csICQ4d2VwSyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkYzI3ZWUwYWQ3MTBmNzU1OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkQVJST1dfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0KHBvaW50LCByZWN0KSB7XG4gICAgY29uc3QgdG9wID0gTWF0aC5hYnMocmVjdC50b3AgLSBwb2ludC55KTtcbiAgICBjb25zdCBib3R0b20gPSBNYXRoLmFicyhyZWN0LmJvdHRvbSAtIHBvaW50LnkpO1xuICAgIGNvbnN0IHJpZ2h0ID0gTWF0aC5hYnMocmVjdC5yaWdodCAtIHBvaW50LngpO1xuICAgIGNvbnN0IGxlZnQgPSBNYXRoLmFicyhyZWN0LmxlZnQgLSBwb2ludC54KTtcbiAgICBzd2l0Y2goTWF0aC5taW4odG9wLCBib3R0b20sIHJpZ2h0LCBsZWZ0KSl7XG4gICAgICAgIGNhc2UgbGVmdDpcbiAgICAgICAgICAgIHJldHVybiAnbGVmdCc7XG4gICAgICAgIGNhc2UgcmlnaHQ6XG4gICAgICAgICAgICByZXR1cm4gJ3JpZ2h0JztcbiAgICAgICAgY2FzZSB0b3A6XG4gICAgICAgICAgICByZXR1cm4gJ3RvcCc7XG4gICAgICAgIGNhc2UgYm90dG9tOlxuICAgICAgICAgICAgcmV0dXJuICdib3R0b20nO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd1bnJlYWNoYWJsZScpO1xuICAgIH1cbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQYWRkZWRFeGl0UG9pbnRzKGV4aXRQb2ludCwgZXhpdFNpZGUsIHBhZGRpbmcgPSA1KSB7XG4gICAgY29uc3QgcGFkZGVkRXhpdFBvaW50cyA9IFtdO1xuICAgIHN3aXRjaChleGl0U2lkZSl7XG4gICAgICAgIGNhc2UgJ3RvcCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSArIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdib3R0b20nOlxuICAgICAgICAgICAgcGFkZGVkRXhpdFBvaW50cy5wdXNoKHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgLSBwYWRkaW5nXG4gICAgICAgICAgICB9LCB7XG4gICAgICAgICAgICAgICAgeDogZXhpdFBvaW50LnggKyBwYWRkaW5nLFxuICAgICAgICAgICAgICAgIHk6IGV4aXRQb2ludC55IC0gcGFkZGluZ1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnbGVmdCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54ICsgcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCArIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICdyaWdodCc6XG4gICAgICAgICAgICBwYWRkZWRFeGl0UG9pbnRzLnB1c2goe1xuICAgICAgICAgICAgICAgIHg6IGV4aXRQb2ludC54IC0gcGFkZGluZyxcbiAgICAgICAgICAgICAgICB5OiBleGl0UG9pbnQueSAtIHBhZGRpbmdcbiAgICAgICAgICAgIH0sIHtcbiAgICAgICAgICAgICAgICB4OiBleGl0UG9pbnQueCAtIHBhZGRpbmcsXG4gICAgICAgICAgICAgICAgeTogZXhpdFBvaW50LnkgKyBwYWRkaW5nXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgIH1cbiAgICByZXR1cm4gcGFkZGVkRXhpdFBvaW50cztcbn1cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRQb2ludHNGcm9tUmVjdChyZWN0KSB7XG4gICAgY29uc3QgeyB0b3A6IHRvcCAsIHJpZ2h0OiByaWdodCAsIGJvdHRvbTogYm90dG9tICwgbGVmdDogbGVmdCAgfSA9IHJlY3Q7XG4gICAgcmV0dXJuIFtcbiAgICAgICAge1xuICAgICAgICAgICAgeDogbGVmdCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IHRvcFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiByaWdodCxcbiAgICAgICAgICAgIHk6IGJvdHRvbVxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICB4OiBsZWZ0LFxuICAgICAgICAgICAgeTogYm90dG9tXG4gICAgICAgIH1cbiAgICBdO1xufSAvLyBEZXRlcm1pbmUgaWYgYSBwb2ludCBpcyBpbnNpZGUgb2YgYSBwb2x5Z29uLlxuLy8gQmFzZWQgb24gaHR0cHM6Ly9naXRodWIuY29tL3N1YnN0YWNrL3BvaW50LWluLXBvbHlnb25cbmZ1bmN0aW9uICRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uKHBvaW50LCBwb2x5Z29uKSB7XG4gICAgY29uc3QgeyB4OiB4ICwgeTogeSAgfSA9IHBvaW50O1xuICAgIGxldCBpbnNpZGUgPSBmYWxzZTtcbiAgICBmb3IobGV0IGkgPSAwLCBqID0gcG9seWdvbi5sZW5ndGggLSAxOyBpIDwgcG9seWdvbi5sZW5ndGg7IGogPSBpKyspe1xuICAgICAgICBjb25zdCB4aSA9IHBvbHlnb25baV0ueDtcbiAgICAgICAgY29uc3QgeWkgPSBwb2x5Z29uW2ldLnk7XG4gICAgICAgIGNvbnN0IHhqID0gcG9seWdvbltqXS54O1xuICAgICAgICBjb25zdCB5aiA9IHBvbHlnb25bal0ueTsgLy8gcHJldHRpZXItaWdub3JlXG4gICAgICAgIGNvbnN0IGludGVyc2VjdCA9IHlpID4geSAhPT0geWogPiB5ICYmIHggPCAoeGogLSB4aSkgKiAoeSAtIHlpKSAvICh5aiAtIHlpKSArIHhpO1xuICAgICAgICBpZiAoaW50ZXJzZWN0KSBpbnNpZGUgPSAhaW5zaWRlO1xuICAgIH1cbiAgICByZXR1cm4gaW5zaWRlO1xufSAvLyBSZXR1cm5zIGEgbmV3IGFycmF5IG9mIHBvaW50cyByZXByZXNlbnRpbmcgdGhlIGNvbnZleCBodWxsIG9mIHRoZSBnaXZlbiBzZXQgb2YgcG9pbnRzLlxuLy8gaHR0cHM6Ly93d3cubmF5dWtpLmlvL3BhZ2UvY29udmV4LWh1bGwtYWxnb3JpdGhtXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbChwb2ludHMpIHtcbiAgICBjb25zdCBuZXdQb2ludHMgPSBwb2ludHMuc2xpY2UoKTtcbiAgICBuZXdQb2ludHMuc29ydCgoYSwgYik9PntcbiAgICAgICAgaWYgKGEueCA8IGIueCkgcmV0dXJuIC0xO1xuICAgICAgICBlbHNlIGlmIChhLnggPiBiLngpIHJldHVybiAxO1xuICAgICAgICBlbHNlIGlmIChhLnkgPCBiLnkpIHJldHVybiAtMTtcbiAgICAgICAgZWxzZSBpZiAoYS55ID4gYi55KSByZXR1cm4gMTtcbiAgICAgICAgZWxzZSByZXR1cm4gMDtcbiAgICB9KTtcbiAgICByZXR1cm4gJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGxQcmVzb3J0ZWQobmV3UG9pbnRzKTtcbn0gLy8gUmV0dXJucyB0aGUgY29udmV4IGh1bGwsIGFzc3VtaW5nIHRoYXQgZWFjaCBwb2ludHNbaV0gPD0gcG9pbnRzW2kgKyAxXS4gUnVucyBpbiBPKG4pIHRpbWUuXG5mdW5jdGlvbiAkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0SHVsbFByZXNvcnRlZChwb2ludHMpIHtcbiAgICBpZiAocG9pbnRzLmxlbmd0aCA8PSAxKSByZXR1cm4gcG9pbnRzLnNsaWNlKCk7XG4gICAgY29uc3QgdXBwZXJIdWxsID0gW107XG4gICAgZm9yKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKyl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaV07XG4gICAgICAgIHdoaWxlKHVwcGVySHVsbC5sZW5ndGggPj0gMil7XG4gICAgICAgICAgICBjb25zdCBxID0gdXBwZXJIdWxsW3VwcGVySHVsbC5sZW5ndGggLSAxXTtcbiAgICAgICAgICAgIGNvbnN0IHIgPSB1cHBlckh1bGxbdXBwZXJIdWxsLmxlbmd0aCAtIDJdO1xuICAgICAgICAgICAgaWYgKChxLnggLSByLngpICogKHAueSAtIHIueSkgPj0gKHEueSAtIHIueSkgKiAocC54IC0gci54KSkgdXBwZXJIdWxsLnBvcCgpO1xuICAgICAgICAgICAgZWxzZSBicmVhaztcbiAgICAgICAgfVxuICAgICAgICB1cHBlckh1bGwucHVzaChwKTtcbiAgICB9XG4gICAgdXBwZXJIdWxsLnBvcCgpO1xuICAgIGNvbnN0IGxvd2VySHVsbCA9IFtdO1xuICAgIGZvcihsZXQgaTEgPSBwb2ludHMubGVuZ3RoIC0gMTsgaTEgPj0gMDsgaTEtLSl7XG4gICAgICAgIGNvbnN0IHAgPSBwb2ludHNbaTFdO1xuICAgICAgICB3aGlsZShsb3dlckh1bGwubGVuZ3RoID49IDIpe1xuICAgICAgICAgICAgY29uc3QgcSA9IGxvd2VySHVsbFtsb3dlckh1bGwubGVuZ3RoIC0gMV07XG4gICAgICAgICAgICBjb25zdCByID0gbG93ZXJIdWxsW2xvd2VySHVsbC5sZW5ndGggLSAyXTtcbiAgICAgICAgICAgIGlmICgocS54IC0gci54KSAqIChwLnkgLSByLnkpID49IChxLnkgLSByLnkpICogKHAueCAtIHIueCkpIGxvd2VySHVsbC5wb3AoKTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbG93ZXJIdWxsLnB1c2gocCk7XG4gICAgfVxuICAgIGxvd2VySHVsbC5wb3AoKTtcbiAgICBpZiAodXBwZXJIdWxsLmxlbmd0aCA9PT0gMSAmJiBsb3dlckh1bGwubGVuZ3RoID09PSAxICYmIHVwcGVySHVsbFswXS54ID09PSBsb3dlckh1bGxbMF0ueCAmJiB1cHBlckh1bGxbMF0ueSA9PT0gbG93ZXJIdWxsWzBdLnkpIHJldHVybiB1cHBlckh1bGw7XG4gICAgZWxzZSByZXR1cm4gdXBwZXJIdWxsLmNvbmNhdChsb3dlckh1bGwpO1xufVxuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZjc4NjQ5ZmI5Y2E1NjZiODtcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5ID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4YzY2MGM2M2I3OTJkZWE7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ4YzYxMDc0NGVmY2Y4YTFkO1xuY29uc3QgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkN2IzNmI4ZjkyNWFiNzQ5NztcbmNvbnN0ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjA7XG5jb25zdCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5O1xuXG5cblxuXG5leHBvcnQgeyRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQxYzU0MGEyMjI0ZjBkODY1IGFzIGNyZWF0ZVRvb2x0aXBTY29wZSwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGY3ODY0OWZiOWNhNTY2YjggYXMgVG9vbHRpcFByb3ZpZGVyLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjhjNjYwYzYzYjc5MmRlYSBhcyBUb29sdGlwLCAkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkOGM2MTA3NDRlZmNmOGExZCBhcyBUb29sdGlwVHJpZ2dlciwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdiMzZiOGY5MjVhYjc0OTcgYXMgVG9vbHRpcFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JGU5MDAzZTJiZTM3ZWMwNjAgYXMgVG9vbHRpcENvbnRlbnQsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRjMjdlZTBhZDcxMGY3NTU5IGFzIFRvb2x0aXBBcnJvdywgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDI4ODE0OTllMzdiNzViOWEgYXMgUHJvdmlkZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IGFzIFRyaWdnZXIsICRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsLCJmdW5jdGlvbiAkYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCh2YWx1ZSwgW21pbiwgbWF4XSkge1xuICAgIHJldHVybiBNYXRoLm1pbihtYXgsIE1hdGgubWF4KG1pbiwgdmFsdWUpKTtcbn1cblxuXG5cblxuZXhwb3J0IHskYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCBhcyBjbGFtcH07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLCJpbXBvcnQgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge3VzZVN0YXRlIGFzICQwMWI5YyR1c2VTdGF0ZSwgdXNlUmVmIGFzICQwMWI5YyR1c2VSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJDAxYjljJGNyZWF0ZUVsZW1lbnQsIHVzZUNhbGxiYWNrIGFzICQwMWI5YyR1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiBhcyAkMDFiOWMkZm9yd2FyZFJlZiwgdXNlRWZmZWN0IGFzICQwMWI5YyR1c2VFZmZlY3QsIEZyYWdtZW50IGFzICQwMWI5YyRGcmFnbWVudCwgdXNlTWVtbyBhcyAkMDFiOWMkdXNlTWVtb30gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge2NyZWF0ZVBvcnRhbCBhcyAkMDFiOWMkY3JlYXRlUG9ydGFsfSBmcm9tIFwicmVhY3QtZG9tXCI7XG5pbXBvcnQge2NsYW1wIGFzICQwMWI5YyRjbGFtcH0gZnJvbSBcIkByYWRpeC11aS9udW1iZXJcIjtcbmltcG9ydCB7Y29tcG9zZUV2ZW50SGFuZGxlcnMgYXMgJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzfSBmcm9tIFwiQHJhZGl4LXVpL3ByaW1pdGl2ZVwiO1xuaW1wb3J0IHtjcmVhdGVDb2xsZWN0aW9uIGFzICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9ufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbGxlY3Rpb25cIjtcbmltcG9ydCB7dXNlQ29tcG9zZWRSZWZzIGFzICQwMWI5YyR1c2VDb21wb3NlZFJlZnN9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29tcG9zZS1yZWZzXCI7XG5pbXBvcnQge2NyZWF0ZUNvbnRleHRTY29wZSBhcyAkMDFiOWMkY3JlYXRlQ29udGV4dFNjb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWNvbnRleHRcIjtcbmltcG9ydCB7dXNlRGlyZWN0aW9uIGFzICQwMWI5YyR1c2VEaXJlY3Rpb259IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlyZWN0aW9uXCI7XG5pbXBvcnQge0Rpc21pc3NhYmxlTGF5ZXIgYXMgJDAxYjljJERpc21pc3NhYmxlTGF5ZXJ9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlzbWlzc2FibGUtbGF5ZXJcIjtcbmltcG9ydCB7dXNlRm9jdXNHdWFyZHMgYXMgJDAxYjljJHVzZUZvY3VzR3VhcmRzfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLWd1YXJkc1wiO1xuaW1wb3J0IHtGb2N1c1Njb3BlIGFzICQwMWI5YyRGb2N1c1Njb3BlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LWZvY3VzLXNjb3BlXCI7XG5pbXBvcnQge3VzZUlkIGFzICQwMWI5YyR1c2VJZH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1pZFwiO1xuaW1wb3J0IHtjcmVhdGVQb3BwZXJTY29wZSBhcyAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUsIFJvb3QgYXMgJDAxYjljJFJvb3QsIEFuY2hvciBhcyAkMDFiOWMkQW5jaG9yLCBDb250ZW50IGFzICQwMWI5YyRDb250ZW50LCBBcnJvdyBhcyAkMDFiOWMkQXJyb3d9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtcG9wcGVyXCI7XG5pbXBvcnQge1BvcnRhbCBhcyAkMDFiOWMkUG9ydGFsfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXBvcnRhbFwiO1xuaW1wb3J0IHtQcmltaXRpdmUgYXMgJDAxYjljJFByaW1pdGl2ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdCBhcyAkMDFiOWMkU2xvdH0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1zbG90XCI7XG5pbXBvcnQge3VzZUNhbGxiYWNrUmVmIGFzICQwMWI5YyR1c2VDYWxsYmFja1JlZn0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY2FsbGJhY2stcmVmXCI7XG5pbXBvcnQge3VzZUNvbnRyb2xsYWJsZVN0YXRlIGFzICQwMWI5YyR1c2VDb250cm9sbGFibGVTdGF0ZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtY29udHJvbGxhYmxlLXN0YXRlXCI7XG5pbXBvcnQge3VzZUxheW91dEVmZmVjdCBhcyAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0fSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXVzZS1sYXlvdXQtZWZmZWN0XCI7XG5pbXBvcnQge3VzZVByZXZpb3VzIGFzICQwMWI5YyR1c2VQcmV2aW91c30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC11c2UtcHJldmlvdXNcIjtcbmltcG9ydCB7VmlzdWFsbHlIaWRkZW4gYXMgJDAxYjljJFZpc3VhbGx5SGlkZGVufSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXZpc3VhbGx5LWhpZGRlblwiO1xuaW1wb3J0IHtoaWRlT3RoZXJzIGFzICQwMWI5YyRoaWRlT3RoZXJzfSBmcm9tIFwiYXJpYS1oaWRkZW5cIjtcbmltcG9ydCB7UmVtb3ZlU2Nyb2xsIGFzICQwMWI5YyRSZW1vdmVTY3JvbGx9IGZyb20gXCJyZWFjdC1yZW1vdmUtc2Nyb2xsXCI7XG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuXG5cblxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUyA9IFtcbiAgICAnICcsXG4gICAgJ0VudGVyJyxcbiAgICAnQXJyb3dVcCcsXG4gICAgJ0Fycm93RG93bidcbl07XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMgPSBbXG4gICAgJyAnLFxuICAgICdFbnRlcidcbl07XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FID0gJ1NlbGVjdCc7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24sICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlQ29sbGVjdGlvblNjb3BlXSA9ICQwMWI5YyRjcmVhdGVDb2xsZWN0aW9uKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTRUxFQ1RfTkFNRSk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkXSA9ICQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGUoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FLCBbXG4gICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSxcbiAgICAkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGVcbl0pO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlID0gJDAxYjljJGNyZWF0ZVBvcHBlclNjb3BlKCk7XG5jb25zdCBbJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgb3Blbjogb3BlblByb3AgLCBkZWZhdWx0T3BlbjogZGVmYXVsdE9wZW4gLCBvbk9wZW5DaGFuZ2U6IG9uT3BlbkNoYW5nZSAsIHZhbHVlOiB2YWx1ZVByb3AgLCBkZWZhdWx0VmFsdWU6IGRlZmF1bHRWYWx1ZSAsIG9uVmFsdWVDaGFuZ2U6IG9uVmFsdWVDaGFuZ2UgLCBkaXI6IGRpciAsIG5hbWU6IG5hbWUgLCBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSAsIGRpc2FibGVkOiBkaXNhYmxlZCAsIHJlcXVpcmVkOiByZXF1aXJlZCAgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFt0cmlnZ2VyLCBzZXRUcmlnZ2VyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbdmFsdWVOb2RlLCBzZXRWYWx1ZU5vZGVdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2YWx1ZU5vZGVIYXNDaGlsZHJlbiwgc2V0VmFsdWVOb2RlSGFzQ2hpbGRyZW5dID0gJDAxYjljJHVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBkaXJlY3Rpb24gPSAkMDFiOWMkdXNlRGlyZWN0aW9uKGRpcik7XG4gICAgY29uc3QgW29wZW4gPSBmYWxzZSwgc2V0T3Blbl0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiBvcGVuUHJvcCxcbiAgICAgICAgZGVmYXVsdFByb3A6IGRlZmF1bHRPcGVuLFxuICAgICAgICBvbkNoYW5nZTogb25PcGVuQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgW3ZhbHVlLCBzZXRWYWx1ZV0gPSAkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUoe1xuICAgICAgICBwcm9wOiB2YWx1ZVByb3AsXG4gICAgICAgIGRlZmF1bHRQcm9wOiBkZWZhdWx0VmFsdWUsXG4gICAgICAgIG9uQ2hhbmdlOiBvblZhbHVlQ2hhbmdlXG4gICAgfSk7XG4gICAgY29uc3QgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTsgLy8gV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBieSBkZWZhdWx0IHNvIHRoYXQgZXZlbnRzIGJ1YmJsZSB0byBmb3JtcyB3aXRob3V0IEpTIChTU1IpXG4gICAgY29uc3QgaXNGb3JtQ29udHJvbCA9IHRyaWdnZXIgPyBCb29sZWFuKHRyaWdnZXIuY2xvc2VzdCgnZm9ybScpKSA6IHRydWU7XG4gICAgY29uc3QgW25hdGl2ZU9wdGlvbnNTZXQsIHNldE5hdGl2ZU9wdGlvbnNTZXRdID0gJDAxYjljJHVzZVN0YXRlKG5ldyBTZXQoKSk7IC8vIFRoZSBuYXRpdmUgYHNlbGVjdGAgb25seSBhc3NvY2lhdGVzIHRoZSBjb3JyZWN0IGRlZmF1bHQgdmFsdWUgaWYgdGhlIGNvcnJlc3BvbmRpbmdcbiAgICAvLyBgb3B0aW9uYCBpcyByZW5kZXJlZCBhcyBhIGNoaWxkICoqYXQgdGhlIHNhbWUgdGltZSoqIGFzIGl0c2VsZi5cbiAgICAvLyBCZWNhdXNlIGl0IG1pZ2h0IHRha2UgYSBmZXcgcmVuZGVycyBmb3Igb3VyIGl0ZW1zIHRvIGdhdGhlciB0aGUgaW5mb3JtYXRpb24gdG8gYnVpbGRcbiAgICAvLyB0aGUgbmF0aXZlIGBvcHRpb25gKHMpLCB3ZSBnZW5lcmF0ZSBhIGtleSBvbiB0aGUgYHNlbGVjdGAgdG8gbWFrZSBzdXJlIFJlYWN0IHJlLWJ1aWxkcyBpdFxuICAgIC8vIGVhY2ggdGltZSB0aGUgb3B0aW9ucyBjaGFuZ2UuXG4gICAgY29uc3QgbmF0aXZlU2VsZWN0S2V5ID0gQXJyYXkuZnJvbShuYXRpdmVPcHRpb25zU2V0KS5tYXAoKG9wdGlvbik9Pm9wdGlvbi5wcm9wcy52YWx1ZVxuICAgICkuam9pbignOycpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSb290LCBwb3BwZXJTY29wZSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIsIHtcbiAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdHJpZ2dlcjogdHJpZ2dlcixcbiAgICAgICAgb25UcmlnZ2VyQ2hhbmdlOiBzZXRUcmlnZ2VyLFxuICAgICAgICB2YWx1ZU5vZGU6IHZhbHVlTm9kZSxcbiAgICAgICAgb25WYWx1ZU5vZGVDaGFuZ2U6IHNldFZhbHVlTm9kZSxcbiAgICAgICAgdmFsdWVOb2RlSGFzQ2hpbGRyZW46IHZhbHVlTm9kZUhhc0NoaWxkcmVuLFxuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlOiBzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbixcbiAgICAgICAgY29udGVudElkOiAkMDFiOWMkdXNlSWQoKSxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBvblZhbHVlQ2hhbmdlOiBzZXRWYWx1ZSxcbiAgICAgICAgb3Blbjogb3BlbixcbiAgICAgICAgb25PcGVuQ2hhbmdlOiBzZXRPcGVuLFxuICAgICAgICBkaXI6IGRpcmVjdGlvbixcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYsXG4gICAgICAgIGRpc2FibGVkOiBkaXNhYmxlZFxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3RcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3QsXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT5uZXcgU2V0KHByZXYpLmFkZChvcHRpb24pXG4gICAgICAgICAgICApO1xuICAgICAgICB9LCBbXSksXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG9wdGlvbik9PntcbiAgICAgICAgICAgIHNldE5hdGl2ZU9wdGlvbnNTZXQoKHByZXYpPT57XG4gICAgICAgICAgICAgICAgY29uc3Qgb3B0aW9uc1NldCA9IG5ldyBTZXQocHJldik7XG4gICAgICAgICAgICAgICAgb3B0aW9uc1NldC5kZWxldGUob3B0aW9uKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gb3B0aW9uc1NldDtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9LCBbXSlcbiAgICB9LCBjaGlsZHJlbikpLCBpc0Zvcm1Db250cm9sID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LCB7XG4gICAgICAgIGtleTogbmF0aXZlU2VsZWN0S2V5LFxuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWUsXG4gICAgICAgIHJlcXVpcmVkOiByZXF1aXJlZCxcbiAgICAgICAgdGFiSW5kZXg6IC0xLFxuICAgICAgICBuYW1lOiBuYW1lLFxuICAgICAgICBhdXRvQ29tcGxldGU6IGF1dG9Db21wbGV0ZSxcbiAgICAgICAgdmFsdWU6IHZhbHVlIC8vIGVuYWJsZSBmb3JtIGF1dG9maWxsXG4gICAgICAgICxcbiAgICAgICAgb25DaGFuZ2U6IChldmVudCk9PnNldFZhbHVlKGV2ZW50LnRhcmdldC52YWx1ZSlcbiAgICAgICAgLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWRcbiAgICB9LCB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcIm9wdGlvblwiLCB7XG4gICAgICAgIHZhbHVlOiBcIlwiXG4gICAgfSkgOiBudWxsLCBBcnJheS5mcm9tKG5hdGl2ZU9wdGlvbnNTZXQpKSA6IG51bGwpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVmOWIxYTU5ZTU5MjI4OGYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFTEVDVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFRyaWdnZXJcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSA9ICdTZWxlY3RUcmlnZ2VyJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGRpc2FibGVkOiBkaXNhYmxlZCA9IGZhbHNlICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXNEaXNhYmxlZCA9IGNvbnRleHQuZGlzYWJsZWQgfHwgZGlzYWJsZWQ7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRleHQub25UcmlnZ2VyQ2hhbmdlKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtzZWFyY2hSZWYsIGhhbmRsZVR5cGVhaGVhZFNlYXJjaCwgcmVzZXRUeXBlYWhlYWRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVR5cGVhaGVhZFNlYXJjaCgoc2VhcmNoKT0+e1xuICAgICAgICBjb25zdCBlbmFibGVkSXRlbXMgPSBnZXRJdGVtcygpLmZpbHRlcigoaXRlbSk9PiFpdGVtLmRpc2FibGVkXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRJdGVtID0gZW5hYmxlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnZhbHVlID09PSBjb250ZXh0LnZhbHVlXG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IG5leHRJdGVtID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShlbmFibGVkSXRlbXMsIHNlYXJjaCwgY3VycmVudEl0ZW0pO1xuICAgICAgICBpZiAobmV4dEl0ZW0gIT09IHVuZGVmaW5lZCkgY29udGV4dC5vblZhbHVlQ2hhbmdlKG5leHRJdGVtLnZhbHVlKTtcbiAgICB9KTtcbiAgICBjb25zdCBoYW5kbGVPcGVuID0gKCk9PntcbiAgICAgICAgaWYgKCFpc0Rpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uT3BlbkNoYW5nZSh0cnVlKTsgLy8gcmVzZXQgdHlwZWFoZWFkIHdoZW4gd2Ugb3BlblxuICAgICAgICAgICAgcmVzZXRUeXBlYWhlYWQoKTtcbiAgICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEFuY2hvciwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZVxuICAgIH0sIHBvcHBlclNjb3BlKSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmJ1dHRvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgdHlwZTogXCJidXR0b25cIixcbiAgICAgICAgcm9sZTogXCJjb21ib2JveFwiLFxuICAgICAgICBcImFyaWEtY29udHJvbHNcIjogY29udGV4dC5jb250ZW50SWQsXG4gICAgICAgIFwiYXJpYS1leHBhbmRlZFwiOiBjb250ZXh0Lm9wZW4sXG4gICAgICAgIFwiYXJpYS1yZXF1aXJlZFwiOiBjb250ZXh0LnJlcXVpcmVkLFxuICAgICAgICBcImFyaWEtYXV0b2NvbXBsZXRlXCI6IFwibm9uZVwiLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogY29udGV4dC5vcGVuID8gJ29wZW4nIDogJ2Nsb3NlZCcsXG4gICAgICAgIGRpc2FibGVkOiBpc0Rpc2FibGVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogaXNEaXNhYmxlZCA/ICcnIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtcGxhY2Vob2xkZXJcIjogY29udGV4dC52YWx1ZSA9PT0gdW5kZWZpbmVkID8gJycgOiB1bmRlZmluZWRcbiAgICB9LCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gRW5hYmxlIGNvbXBhdGliaWxpdHkgd2l0aCBuYXRpdmUgbGFiZWwgb3IgY3VzdG9tIGBMYWJlbGAgXCJjbGlja1wiIGZvciBTYWZhcmk6XG4gICAgICAgICxcbiAgICAgICAgb25DbGljazogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbkNsaWNrLCAoZXZlbnQpPT57XG4gICAgICAgICAgICAvLyBXaGlsc3QgYnJvd3NlcnMgZ2VuZXJhbGx5IGhhdmUgbm8gaXNzdWUgZm9jdXNpbmcgdGhlIHRyaWdnZXIgd2hlbiBjbGlja2luZ1xuICAgICAgICAgICAgLy8gb24gYSBsYWJlbCwgU2FmYXJpIHNlZW1zIHRvIHN0cnVnZ2xlIHdpdGggdGhlIGZhY3QgdGhhdCB0aGVyZSdzIG5vIGBvbkNsaWNrYC5cbiAgICAgICAgICAgIC8vIFdlIGZvcmNlIGBmb2N1c2AgaW4gdGhpcyBjYXNlLiBOb3RlOiB0aGlzIGRvZXNuJ3QgY3JlYXRlIGFueSBvdGhlciBzaWRlLWVmZmVjdFxuICAgICAgICAgICAgLy8gYmVjYXVzZSB3ZSBhcmUgcHJldmVudGluZyBkZWZhdWx0IGluIGBvblBvaW50ZXJEb3duYCBzbyBlZmZlY3RpdmVseVxuICAgICAgICAgICAgLy8gdGhpcyBvbmx5IHJ1bnMgZm9yIGEgbGFiZWwgXCJjbGlja1wiXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnModHJpZ2dlclByb3BzLm9uUG9pbnRlckRvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIC8vIHByZXZlbnQgaW1wbGljaXQgcG9pbnRlciBjYXB0dXJlXG4gICAgICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvcG9pbnRlcmV2ZW50czMvI2ltcGxpY2l0LXBvaW50ZXItY2FwdHVyZVxuICAgICAgICAgICAgY29uc3QgdGFyZ2V0ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgaWYgKHRhcmdldC5oYXNQb2ludGVyQ2FwdHVyZShldmVudC5wb2ludGVySWQpKSB0YXJnZXQucmVsZWFzZVBvaW50ZXJDYXB0dXJlKGV2ZW50LnBvaW50ZXJJZCk7XG4gICAgICAgICAgICAgLy8gb25seSBjYWxsIGhhbmRsZXIgaWYgaXQncyB0aGUgbGVmdCBidXR0b24gKG1vdXNlZG93biBnZXRzIHRyaWdnZXJlZCBieSBhbGwgbW91c2UgYnV0dG9ucylcbiAgICAgICAgICAgIC8vIGJ1dCBub3Qgd2hlbiB0aGUgY29udHJvbCBrZXkgaXMgcHJlc3NlZCAoYXZvaWRpbmcgTWFjT1MgcmlnaHQgY2xpY2spXG4gICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uID09PSAwICYmIGV2ZW50LmN0cmxLZXkgPT09IGZhbHNlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGNvbnRleHQudHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgPSB7XG4gICAgICAgICAgICAgICAgICAgIHg6IE1hdGgucm91bmQoZXZlbnQucGFnZVgpLFxuICAgICAgICAgICAgICAgICAgICB5OiBNYXRoLnJvdW5kKGV2ZW50LnBhZ2VZKVxuICAgICAgICAgICAgICAgIH07IC8vIHByZXZlbnQgdHJpZ2dlciBmcm9tIHN0ZWFsaW5nIGZvY3VzIGZyb20gdGhlIGFjdGl2ZSBpdGVtIGFmdGVyIG9wZW5pbmcuXG4gICAgICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSksXG4gICAgICAgIG9uS2V5RG93bjogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHRyaWdnZXJQcm9wcy5vbktleURvd24sIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSBzZWFyY2hSZWYuY3VycmVudCAhPT0gJyc7XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTtcbiAgICAgICAgICAgIGlmICghaXNNb2RpZmllcktleSAmJiBldmVudC5rZXkubGVuZ3RoID09PSAxKSBoYW5kbGVUeXBlYWhlYWRTZWFyY2goZXZlbnQua2V5KTtcbiAgICAgICAgICAgIGlmIChpc1R5cGluZ0FoZWFkICYmIGV2ZW50LmtleSA9PT0gJyAnKSByZXR1cm47XG4gICAgICAgICAgICBpZiAoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJE9QRU5fS0VZUy5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlT3BlbigpO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFRSSUdHRVJfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RWYWx1ZVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRSA9ICdTZWxlY3RWYWx1ZSc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgLy8gV2UgaWdub3JlIGBjbGFzc05hbWVgIGFuZCBgc3R5bGVgIGFzIHRoaXMgcGFydCBzaG91bGRuJ3QgYmUgc3R5bGVkLlxuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIGNsYXNzTmFtZTogY2xhc3NOYW1lICwgc3R5bGU6IHN0eWxlICwgY2hpbGRyZW46IGNoaWxkcmVuICwgcGxhY2Vob2xkZXI6IHBsYWNlaG9sZGVyICwgLi4udmFsdWVQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRWQUxVRV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB7IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2U6IG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UgIH0gPSBjb250ZXh0O1xuICAgIGNvbnN0IGhhc0NoaWxkcmVuID0gY2hpbGRyZW4gIT09IHVuZGVmaW5lZDtcbiAgICBjb25zdCBjb21wb3NlZFJlZnMgPSAkMDFiOWMkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY29udGV4dC5vblZhbHVlTm9kZUNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlKGhhc0NoaWxkcmVuKTtcbiAgICB9LCBbXG4gICAgICAgIG9uVmFsdWVOb2RlSGFzQ2hpbGRyZW5DaGFuZ2UsXG4gICAgICAgIGhhc0NoaWxkcmVuXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHZhbHVlUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMgLy8gd2UgZG9uJ3Qgd2FudCBldmVudHMgZnJvbSB0aGUgcG9ydGFsbGVkIGBTZWxlY3RWYWx1ZWAgY2hpbGRyZW4gdG8gYnViYmxlXG4gICAgICAgICxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIHBvaW50ZXJFdmVudHM6ICdub25lJ1xuICAgICAgICB9XG4gICAgfSksIGNvbnRleHQudmFsdWUgPT09IHVuZGVmaW5lZCAmJiBwbGFjZWhvbGRlciAhPT0gdW5kZWZpbmVkID8gcGxhY2Vob2xkZXIgOiBjaGlsZHJlbik7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZTI4ODczMWZkNzEyNjRmMCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVkFMVUVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJY29uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJQ09OX05BTUUgPSAnU2VsZWN0SWNvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uaWNvblByb3BzIH0gPSBwcm9wcztcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLnNwYW4sICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIGljb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pLCBjaGlsZHJlbiB8fCAn4pa8Jyk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSUNPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFBvcnRhbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUUgPSAnU2VsZWN0UG9ydGFsJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzID0gKHByb3BzKT0+e1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQb3J0YWwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCBwcm9wcykpO1xufTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9SVEFMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Q29udGVudFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FID0gJ1NlbGVjdENvbnRlbnQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbZnJhZ21lbnQsIHNldEZyYWdtZW50XSA9ICQwMWI5YyR1c2VTdGF0ZSgpOyAvLyBzZXR0aW5nIHRoZSBmcmFnbWVudCBpbiBgdXNlTGF5b3V0RWZmZWN0YCBhcyBgRG9jdW1lbnRGcmFnbWVudGAgZG9lc24ndCBleGlzdCBvbiB0aGUgc2VydmVyXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBzZXRGcmFnbWVudChuZXcgRG9jdW1lbnRGcmFnbWVudCgpKTtcbiAgICB9LCBbXSk7XG4gICAgaWYgKCFjb250ZXh0Lm9wZW4pIHtcbiAgICAgICAgY29uc3QgZnJhZyA9IGZyYWdtZW50O1xuICAgICAgICByZXR1cm4gZnJhZyA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZVBvcnRhbCgvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgICAgIHNjb3BlOiBwcm9wcy5fX3Njb3BlU2VsZWN0XG4gICAgICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENvbGxlY3Rpb24uU2xvdCwge1xuICAgICAgICAgICAgc2NvcGU6IHByb3BzLl9fc2NvcGVTZWxlY3RcbiAgICAgICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcImRpdlwiLCBudWxsLCBwcm9wcy5jaGlsZHJlbikpKSwgZnJhZykgOiBudWxsO1xuICAgIH1cbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdENvbnRlbnRJbXBsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiA9IDEwO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dF0gPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkY3JlYXRlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX0lNUExfTkFNRSA9ICdTZWxlY3RDb250ZW50SW1wbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudEltcGwgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIHBvc2l0aW9uOiBwb3NpdGlvbiA9ICdpdGVtLWFsaWduZWQnICwgb25DbG9zZUF1dG9Gb2N1czogb25DbG9zZUF1dG9Gb2N1cyAsIG9uRXNjYXBlS2V5RG93bjogb25Fc2NhcGVLZXlEb3duICwgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlICwgc2lkZTogLy9cbiAgICAvLyBQb3BwZXJDb250ZW50IHByb3BzXG4gICAgc2lkZSAsIHNpZGVPZmZzZXQ6IHNpZGVPZmZzZXQgLCBhbGlnbjogYWxpZ24gLCBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQgLCBhcnJvd1BhZGRpbmc6IGFycm93UGFkZGluZyAsIGNvbGxpc2lvbkJvdW5kYXJ5OiBjb2xsaXNpb25Cb3VuZGFyeSAsIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcgLCBzdGlja3k6IHN0aWNreSAsIGhpZGVXaGVuRGV0YWNoZWQ6IGhpZGVXaGVuRGV0YWNoZWQgLCBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9ucyAsIC8vXG4gICAgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NvbnRlbnQsIHNldENvbnRlbnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IFt2aWV3cG9ydCwgc2V0Vmlld3BvcnRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCAobm9kZSk9PnNldENvbnRlbnQobm9kZSlcbiAgICApO1xuICAgIGNvbnN0IFtzZWxlY3RlZEl0ZW0sIHNldFNlbGVjdGVkSXRlbV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3NlbGVjdGVkSXRlbVRleHQsIHNldFNlbGVjdGVkSXRlbVRleHRdID0gJDAxYjljJHVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGdldEl0ZW1zID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZUNvbGxlY3Rpb24oX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2lzUG9zaXRpb25lZCwgc2V0SXNQb3NpdGlvbmVkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpOyAvLyBhcmlhLWhpZGUgZXZlcnl0aGluZyBleGNlcHQgdGhlIGNvbnRlbnQgKGJldHRlciBzdXBwb3J0ZWQgZXF1aXZhbGVudCB0byBzZXR0aW5nIGFyaWEtbW9kYWwpXG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudCkgcmV0dXJuICQwMWI5YyRoaWRlT3RoZXJzKGNvbnRlbnQpO1xuICAgIH0sIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pOyAvLyBNYWtlIHN1cmUgdGhlIHdob2xlIHRyZWUgaGFzIGZvY3VzIGd1YXJkcyBhcyBvdXIgYFNlbGVjdGAgbWF5IGJlXG4gICAgLy8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgRE9NIChiZWNhdXNlIG9mIHRoZSBgUG9ydGFsYClcbiAgICAkMDFiOWMkdXNlRm9jdXNHdWFyZHMoKTtcbiAgICBjb25zdCBmb2N1c0ZpcnN0ID0gJDAxYjljJHVzZUNhbGxiYWNrKChjYW5kaWRhdGVzKT0+e1xuICAgICAgICBjb25zdCBbZmlyc3RJdGVtLCAuLi5yZXN0SXRlbXNdID0gZ2V0SXRlbXMoKS5tYXAoKGl0ZW0pPT5pdGVtLnJlZi5jdXJyZW50XG4gICAgICAgICk7XG4gICAgICAgIGNvbnN0IFtsYXN0SXRlbV0gPSByZXN0SXRlbXMuc2xpY2UoLTEpO1xuICAgICAgICBjb25zdCBQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ7XG4gICAgICAgIGZvciAoY29uc3QgY2FuZGlkYXRlIG9mIGNhbmRpZGF0ZXMpe1xuICAgICAgICAgICAgLy8gaWYgZm9jdXMgaXMgYWxyZWFkeSB3aGVyZSB3ZSB3YW50IHRvIGdvLCB3ZSBkb24ndCB3YW50IHRvIGtlZXAgZ29pbmcgdGhyb3VnaCB0aGUgY2FuZGlkYXRlc1xuICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZSA9PT0gUFJFVklPVVNMWV9GT0NVU0VEX0VMRU1FTlQpIHJldHVybjtcbiAgICAgICAgICAgIGNhbmRpZGF0ZSA9PT0gbnVsbCB8fCBjYW5kaWRhdGUgPT09IHZvaWQgMCB8fCBjYW5kaWRhdGUuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgICAgIH0pOyAvLyB2aWV3cG9ydCBtaWdodCBoYXZlIHBhZGRpbmcgc28gc2Nyb2xsIHRvIGl0cyBlZGdlcyB3aGVuIGZvY3VzaW5nIGZpcnN0L2xhc3QgaXRlbXMuXG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBmaXJzdEl0ZW0gJiYgdmlld3BvcnQpIHZpZXdwb3J0LnNjcm9sbFRvcCA9IDA7XG4gICAgICAgICAgICBpZiAoY2FuZGlkYXRlID09PSBsYXN0SXRlbSAmJiB2aWV3cG9ydCkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsSGVpZ2h0O1xuICAgICAgICAgICAgY2FuZGlkYXRlID09PSBudWxsIHx8IGNhbmRpZGF0ZSA9PT0gdm9pZCAwIHx8IGNhbmRpZGF0ZS5mb2N1cygpO1xuICAgICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IFBSRVZJT1VTTFlfRk9DVVNFRF9FTEVNRU5UKSByZXR1cm47XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICB2aWV3cG9ydFxuICAgIF0pO1xuICAgIGNvbnN0IGZvY3VzU2VsZWN0ZWRJdGVtID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT5mb2N1c0ZpcnN0KFtcbiAgICAgICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgICAgIGNvbnRlbnRcbiAgICAgICAgXSlcbiAgICAsIFtcbiAgICAgICAgZm9jdXNGaXJzdCxcbiAgICAgICAgc2VsZWN0ZWRJdGVtLFxuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFNpbmNlIHRoaXMgaXMgbm90IGRlcGVuZGVudCBvbiBsYXlvdXQsIHdlIHdhbnQgdG8gZW5zdXJlIHRoaXMgcnVucyBhdCB0aGUgc2FtZSB0aW1lIGFzXG4gICAgLy8gb3RoZXIgZWZmZWN0cyBhY3Jvc3MgY29tcG9uZW50cy4gSGVuY2Ugd2h5IHdlIGRvbid0IGNhbGwgYGZvY3VzU2VsZWN0ZWRJdGVtYCBpbnNpZGUgYHBvc2l0aW9uYC5cbiAgICAkMDFiOWMkdXNlRWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChpc1Bvc2l0aW9uZWQpIGZvY3VzU2VsZWN0ZWRJdGVtKCk7XG4gICAgfSwgW1xuICAgICAgICBpc1Bvc2l0aW9uZWQsXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtXG4gICAgXSk7IC8vIHByZXZlbnQgc2VsZWN0aW5nIGl0ZW1zIG9uIGBwb2ludGVydXBgIGluIHNvbWUgY2FzZXMgYWZ0ZXIgb3BlbmluZyBmcm9tIGBwb2ludGVyZG93bmBcbiAgICAvLyBhbmQgY2xvc2Ugb24gYHBvaW50ZXJ1cGAgb3V0c2lkZS5cbiAgICBjb25zdCB7IG9uT3BlbkNoYW5nZTogb25PcGVuQ2hhbmdlICwgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmOiB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYgIH0gPSBjb250ZXh0O1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnQpIHtcbiAgICAgICAgICAgIGxldCBwb2ludGVyTW92ZURlbHRhID0ge1xuICAgICAgICAgICAgICAgIHg6IDAsXG4gICAgICAgICAgICAgICAgeTogMFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGhhbmRsZVBvaW50ZXJNb3ZlID0gKGV2ZW50KT0+e1xuICAgICAgICAgICAgICAgIHZhciBfdHJpZ2dlclBvaW50ZXJEb3duUG8sIF90cmlnZ2VyUG9pbnRlckRvd25QbzIsIF90cmlnZ2VyUG9pbnRlckRvd25QbzMsIF90cmlnZ2VyUG9pbnRlckRvd25QbzQ7XG4gICAgICAgICAgICAgICAgcG9pbnRlck1vdmVEZWx0YSA9IHtcbiAgICAgICAgICAgICAgICAgICAgeDogTWF0aC5hYnMoTWF0aC5yb3VuZChldmVudC5wYWdlWCkgLSAoKF90cmlnZ2VyUG9pbnRlckRvd25QbyA9IChfdHJpZ2dlclBvaW50ZXJEb3duUG8yID0gdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQpID09PSBudWxsIHx8IF90cmlnZ2VyUG9pbnRlckRvd25QbzIgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF90cmlnZ2VyUG9pbnRlckRvd25QbzIueCkgIT09IG51bGwgJiYgX3RyaWdnZXJQb2ludGVyRG93blBvICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8gOiAwKSksXG4gICAgICAgICAgICAgICAgICAgIHk6IE1hdGguYWJzKE1hdGgucm91bmQoZXZlbnQucGFnZVkpIC0gKChfdHJpZ2dlclBvaW50ZXJEb3duUG8zID0gKF90cmlnZ2VyUG9pbnRlckRvd25QbzQgPSB0cmlnZ2VyUG9pbnRlckRvd25Qb3NSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX3RyaWdnZXJQb2ludGVyRG93blBvNCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX3RyaWdnZXJQb2ludGVyRG93blBvNC55KSAhPT0gbnVsbCAmJiBfdHJpZ2dlclBvaW50ZXJEb3duUG8zICE9PSB2b2lkIDAgPyBfdHJpZ2dlclBvaW50ZXJEb3duUG8zIDogMCkpXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBjb25zdCBoYW5kbGVQb2ludGVyVXAgPSAoZXZlbnQpPT57XG4gICAgICAgICAgICAgICAgLy8gSWYgdGhlIHBvaW50ZXIgaGFzbid0IG1vdmVkIGJ5IGEgY2VydGFpbiB0aHJlc2hvbGQgdGhlbiB3ZSBwcmV2ZW50IHNlbGVjdGluZyBpdGVtIG9uIGBwb2ludGVydXBgLlxuICAgICAgICAgICAgICAgIGlmIChwb2ludGVyTW92ZURlbHRhLnggPD0gMTAgJiYgcG9pbnRlck1vdmVEZWx0YS55IDw9IDEwKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVsc2UgLy8gb3RoZXJ3aXNlLCBpZiB0aGUgZXZlbnQgd2FzIG91dHNpZGUgdGhlIGNvbnRlbnQsIGNsb3NlLlxuICAgICAgICAgICAgICAgIGlmICghY29udGVudC5jb250YWlucyhldmVudC50YXJnZXQpKSBvbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3BvaW50ZXJtb3ZlJywgaGFuZGxlUG9pbnRlck1vdmUpO1xuICAgICAgICAgICAgICAgIHRyaWdnZXJQb2ludGVyRG93blBvc1JlZi5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBpZiAodHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmLmN1cnJlbnQgIT09IG51bGwpIHtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVybW92ZScsIGhhbmRsZVBvaW50ZXJNb3ZlKTtcbiAgICAgICAgICAgICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdwb2ludGVydXAnLCBoYW5kbGVQb2ludGVyVXAsIHtcbiAgICAgICAgICAgICAgICAgICAgY2FwdHVyZTogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgb25jZTogdHJ1ZVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuICgpPT57XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcm1vdmUnLCBoYW5kbGVQb2ludGVyTW92ZSk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigncG9pbnRlcnVwJywgaGFuZGxlUG9pbnRlclVwLCB7XG4gICAgICAgICAgICAgICAgICAgIGNhcHR1cmU6IHRydWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH07XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnQsXG4gICAgICAgIG9uT3BlbkNoYW5nZSxcbiAgICAgICAgdHJpZ2dlclBvaW50ZXJEb3duUG9zUmVmXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICBjb25zdCBjbG9zZSA9ICgpPT5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgICAgIDtcbiAgICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCBjbG9zZSk7XG4gICAgICAgIHJldHVybiAoKT0+e1xuICAgICAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2JsdXInLCBjbG9zZSk7XG4gICAgICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgY2xvc2UpO1xuICAgICAgICB9O1xuICAgIH0sIFtcbiAgICAgICAgb25PcGVuQ2hhbmdlXG4gICAgXSk7XG4gICAgY29uc3QgW3NlYXJjaFJlZiwgaGFuZGxlVHlwZWFoZWFkU2VhcmNoXSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2goKHNlYXJjaCk9PntcbiAgICAgICAgY29uc3QgZW5hYmxlZEl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IGVuYWJsZWRJdGVtcy5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBjb25zdCBuZXh0SXRlbSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRmaW5kTmV4dEl0ZW0oZW5hYmxlZEl0ZW1zLCBzZWFyY2gsIGN1cnJlbnRJdGVtKTtcbiAgICAgICAgaWYgKG5leHRJdGVtKSAvKipcbiAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAqIHRvIGF2b2lkIHBvdGVudGlhbCBidWdzLiBTZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvMjAzMzJcbiAgICAgICAqLyBzZXRUaW1lb3V0KCgpPT5uZXh0SXRlbS5yZWYuY3VycmVudC5mb2N1cygpXG4gICAgICAgICk7XG4gICAgfSk7XG4gICAgY29uc3QgaXRlbVJlZkNhbGxiYWNrID0gJDAxYjljJHVzZUNhbGxiYWNrKChub2RlLCB2YWx1ZSwgZGlzYWJsZWQpPT57XG4gICAgICAgIGNvbnN0IGlzRmlyc3RWYWxpZEl0ZW0gPSAhZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ICYmICFkaXNhYmxlZDtcbiAgICAgICAgY29uc3QgaXNTZWxlY3RlZEl0ZW0gPSBjb250ZXh0LnZhbHVlICE9PSB1bmRlZmluZWQgJiYgY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgICAgIGlmIChpc1NlbGVjdGVkSXRlbSB8fCBpc0ZpcnN0VmFsaWRJdGVtKSB7XG4gICAgICAgICAgICBzZXRTZWxlY3RlZEl0ZW0obm9kZSk7XG4gICAgICAgICAgICBpZiAoaXNGaXJzdFZhbGlkSXRlbSkgZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgIH0sIFtcbiAgICAgICAgY29udGV4dC52YWx1ZVxuICAgIF0pO1xuICAgIGNvbnN0IGhhbmRsZUl0ZW1MZWF2ZSA9ICQwMWI5YyR1c2VDYWxsYmFjaygoKT0+Y29udGVudCA9PT0gbnVsbCB8fCBjb250ZW50ID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjb250ZW50LmZvY3VzKClcbiAgICAsIFtcbiAgICAgICAgY29udGVudFxuICAgIF0pO1xuICAgIGNvbnN0IGl0ZW1UZXh0UmVmQ2FsbGJhY2sgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUsIHZhbHVlLCBkaXNhYmxlZCk9PntcbiAgICAgICAgY29uc3QgaXNGaXJzdFZhbGlkSXRlbSA9ICFmaXJzdFZhbGlkSXRlbUZvdW5kUmVmLmN1cnJlbnQgJiYgIWRpc2FibGVkO1xuICAgICAgICBjb25zdCBpc1NlbGVjdGVkSXRlbSA9IGNvbnRleHQudmFsdWUgIT09IHVuZGVmaW5lZCAmJiBjb250ZXh0LnZhbHVlID09PSB2YWx1ZTtcbiAgICAgICAgaWYgKGlzU2VsZWN0ZWRJdGVtIHx8IGlzRmlyc3RWYWxpZEl0ZW0pIHNldFNlbGVjdGVkSXRlbVRleHQobm9kZSk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZXh0LnZhbHVlXG4gICAgXSk7XG4gICAgY29uc3QgU2VsZWN0UG9zaXRpb24gPSBwb3NpdGlvbiA9PT0gJ3BvcHBlcicgPyAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24gOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbjsgLy8gU2lsZW50bHkgaWdub3JlIHByb3BzIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgYFNlbGVjdEl0ZW1BbGlnbmVkUG9zaXRpb25gXG4gICAgY29uc3QgcG9wcGVyQ29udGVudFByb3BzID0gU2VsZWN0UG9zaXRpb24gPT09ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiA/IHtcbiAgICAgICAgc2lkZTogc2lkZSxcbiAgICAgICAgc2lkZU9mZnNldDogc2lkZU9mZnNldCxcbiAgICAgICAgYWxpZ246IGFsaWduLFxuICAgICAgICBhbGlnbk9mZnNldDogYWxpZ25PZmZzZXQsXG4gICAgICAgIGFycm93UGFkZGluZzogYXJyb3dQYWRkaW5nLFxuICAgICAgICBjb2xsaXNpb25Cb3VuZGFyeTogY29sbGlzaW9uQm91bmRhcnksXG4gICAgICAgIGNvbGxpc2lvblBhZGRpbmc6IGNvbGxpc2lvblBhZGRpbmcsXG4gICAgICAgIHN0aWNreTogc3RpY2t5LFxuICAgICAgICBoaWRlV2hlbkRldGFjaGVkOiBoaWRlV2hlbkRldGFjaGVkLFxuICAgICAgICBhdm9pZENvbGxpc2lvbnM6IGF2b2lkQ29sbGlzaW9uc1xuICAgIH0gOiB7fTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0LFxuICAgICAgICBjb250ZW50OiBjb250ZW50LFxuICAgICAgICB2aWV3cG9ydDogdmlld3BvcnQsXG4gICAgICAgIG9uVmlld3BvcnRDaGFuZ2U6IHNldFZpZXdwb3J0LFxuICAgICAgICBpdGVtUmVmQ2FsbGJhY2s6IGl0ZW1SZWZDYWxsYmFjayxcbiAgICAgICAgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0sXG4gICAgICAgIG9uSXRlbUxlYXZlOiBoYW5kbGVJdGVtTGVhdmUsXG4gICAgICAgIGl0ZW1UZXh0UmVmQ2FsbGJhY2s6IGl0ZW1UZXh0UmVmQ2FsbGJhY2ssXG4gICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtOiBmb2N1c1NlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dDogc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgcG9zaXRpb246IHBvc2l0aW9uLFxuICAgICAgICBpc1Bvc2l0aW9uZWQ6IGlzUG9zaXRpb25lZCxcbiAgICAgICAgc2VhcmNoUmVmOiBzZWFyY2hSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRSZW1vdmVTY3JvbGwsIHtcbiAgICAgICAgYXM6ICQwMWI5YyRTbG90LFxuICAgICAgICBhbGxvd1BpbmNoWm9vbTogdHJ1ZVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZvY3VzU2NvcGUsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSAvLyB3ZSBtYWtlIHN1cmUgd2UncmUgbm90IHRyYXBwaW5nIG9uY2UgaXQncyBiZWVuIGNsb3NlZFxuICAgICAgICAsXG4gICAgICAgIHRyYXBwZWQ6IGNvbnRleHQub3BlbixcbiAgICAgICAgb25Nb3VudEF1dG9Gb2N1czogKGV2ZW50KT0+e1xuICAgICAgICAgICAgLy8gd2UgcHJldmVudCBvcGVuIGF1dG9mb2N1cyBiZWNhdXNlIHdlIG1hbnVhbGx5IGZvY3VzIHRoZSBzZWxlY3RlZCBpdGVtXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9LFxuICAgICAgICBvblVubW91bnRBdXRvRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhvbkNsb3NlQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NvbnRleHQkdHJpZ2dlcjtcbiAgICAgICAgICAgIChfY29udGV4dCR0cmlnZ2VyID0gY29udGV4dC50cmlnZ2VyKSA9PT0gbnVsbCB8fCBfY29udGV4dCR0cmlnZ2VyID09PSB2b2lkIDAgfHwgX2NvbnRleHQkdHJpZ2dlci5mb2N1cyh7XG4gICAgICAgICAgICAgICAgcHJldmVudFNjcm9sbDogdHJ1ZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJERpc21pc3NhYmxlTGF5ZXIsIHtcbiAgICAgICAgYXNDaGlsZDogdHJ1ZSxcbiAgICAgICAgZGlzYWJsZU91dHNpZGVQb2ludGVyRXZlbnRzOiB0cnVlLFxuICAgICAgICBvbkVzY2FwZUtleURvd246IG9uRXNjYXBlS2V5RG93bixcbiAgICAgICAgb25Qb2ludGVyRG93bk91dHNpZGU6IG9uUG9pbnRlckRvd25PdXRzaWRlIC8vIFdoZW4gZm9jdXMgaXMgdHJhcHBlZCwgYSBmb2N1c291dCBldmVudCBtYXkgc3RpbGwgaGFwcGVuLlxuICAgICAgICAsXG4gICAgICAgIG9uRm9jdXNPdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25EaXNtaXNzOiAoKT0+Y29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChTZWxlY3RQb3NpdGlvbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJsaXN0Ym94XCIsXG4gICAgICAgIGlkOiBjb250ZXh0LmNvbnRlbnRJZCxcbiAgICAgICAgXCJkYXRhLXN0YXRlXCI6IGNvbnRleHQub3BlbiA/ICdvcGVuJyA6ICdjbG9zZWQnLFxuICAgICAgICBkaXI6IGNvbnRleHQuZGlyLFxuICAgICAgICBvbkNvbnRleHRNZW51OiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgfSwgY29udGVudFByb3BzLCBwb3BwZXJDb250ZW50UHJvcHMsIHtcbiAgICAgICAgb25QbGFjZWQ6ICgpPT5zZXRJc1Bvc2l0aW9uZWQodHJ1ZSlcbiAgICAgICAgLFxuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIGZsZXggbGF5b3V0IHNvIHdlIGNhbiBwbGFjZSB0aGUgc2Nyb2xsIGJ1dHRvbnMgcHJvcGVybHlcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgLy8gcmVzZXQgdGhlIG91dGxpbmUgYnkgZGVmYXVsdCBhcyB0aGUgY29udGVudCBNQVkgZ2V0IGZvY3VzZWRcbiAgICAgICAgICAgIG91dGxpbmU6ICdub25lJyxcbiAgICAgICAgICAgIC4uLmNvbnRlbnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvbktleURvd246ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhjb250ZW50UHJvcHMub25LZXlEb3duLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBjb25zdCBpc01vZGlmaWVyS2V5ID0gZXZlbnQuY3RybEtleSB8fCBldmVudC5hbHRLZXkgfHwgZXZlbnQubWV0YUtleTsgLy8gc2VsZWN0IHNob3VsZCBub3QgYmUgbmF2aWdhdGVkIHVzaW5nIHRhYiBrZXkgc28gd2UgcHJldmVudCBpdFxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJ1RhYicpIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICBpZiAoIWlzTW9kaWZpZXJLZXkgJiYgZXZlbnQua2V5Lmxlbmd0aCA9PT0gMSkgaGFuZGxlVHlwZWFoZWFkU2VhcmNoKGV2ZW50LmtleSk7XG4gICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICdBcnJvd1VwJyxcbiAgICAgICAgICAgICAgICAnQXJyb3dEb3duJyxcbiAgICAgICAgICAgICAgICAnSG9tZScsXG4gICAgICAgICAgICAgICAgJ0VuZCdcbiAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKS5maWx0ZXIoKGl0ZW0pPT4haXRlbS5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgbGV0IGNhbmRpZGF0ZU5vZGVzID0gaXRlbXMubWFwKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudFxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKFtcbiAgICAgICAgICAgICAgICAgICAgJ0Fycm93VXAnLFxuICAgICAgICAgICAgICAgICAgICAnRW5kJ1xuICAgICAgICAgICAgICAgIF0uaW5jbHVkZXMoZXZlbnQua2V5KSkgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZSgpLnJldmVyc2UoKTtcbiAgICAgICAgICAgICAgICBpZiAoW1xuICAgICAgICAgICAgICAgICAgICAnQXJyb3dVcCcsXG4gICAgICAgICAgICAgICAgICAgICdBcnJvd0Rvd24nXG4gICAgICAgICAgICAgICAgXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGN1cnJlbnRFbGVtZW50ID0gZXZlbnQudGFyZ2V0O1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdXJyZW50SW5kZXggPSBjYW5kaWRhdGVOb2Rlcy5pbmRleE9mKGN1cnJlbnRFbGVtZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY2FuZGlkYXRlTm9kZXMgPSBjYW5kaWRhdGVOb2Rlcy5zbGljZShjdXJyZW50SW5kZXggKyAxKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgLyoqXG4gICAgICAgICAqIEltcGVyYXRpdmUgZm9jdXMgZHVyaW5nIGtleWRvd24gaXMgcmlza3kgc28gd2UgcHJldmVudCBSZWFjdCdzIGJhdGNoaW5nIHVwZGF0ZXNcbiAgICAgICAgICogdG8gYXZvaWQgcG90ZW50aWFsIGJ1Z3MuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L2lzc3Vlcy8yMDMzMlxuICAgICAgICAgKi8gc2V0VGltZW91dCgoKT0+Zm9jdXNGaXJzdChjYW5kaWRhdGVOb2RlcylcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSkpKSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RDb250ZW50SW1wbCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9JTVBMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9BTElHTkVEX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgb25QbGFjZWQ6IG9uUGxhY2VkICwgLi4ucG9wcGVyUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY29udGVudFdyYXBwZXIsIHNldENvbnRlbnRXcmFwcGVyXSA9ICQwMWI5YyR1c2VTdGF0ZShudWxsKTtcbiAgICBjb25zdCBbY29udGVudCwgc2V0Q29udGVudF0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0Q29udGVudChub2RlKVxuICAgICk7XG4gICAgY29uc3QgZ2V0SXRlbXMgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlQ29sbGVjdGlvbihfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBzaG91bGRFeHBhbmRPblNjcm9sbFJlZiA9ICQwMWI5YyR1c2VSZWYoZmFsc2UpO1xuICAgIGNvbnN0IHNob3VsZFJlcG9zaXRpb25SZWYgPSAkMDFiOWMkdXNlUmVmKHRydWUpO1xuICAgIGNvbnN0IHsgdmlld3BvcnQ6IHZpZXdwb3J0ICwgc2VsZWN0ZWRJdGVtOiBzZWxlY3RlZEl0ZW0gLCBzZWxlY3RlZEl0ZW1UZXh0OiBzZWxlY3RlZEl0ZW1UZXh0ICwgZm9jdXNTZWxlY3RlZEl0ZW06IGZvY3VzU2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgY29uc3QgcG9zaXRpb24gPSAkMDFiOWMkdXNlQ2FsbGJhY2soKCk9PntcbiAgICAgICAgaWYgKGNvbnRleHQudHJpZ2dlciAmJiBjb250ZXh0LnZhbHVlTm9kZSAmJiBjb250ZW50V3JhcHBlciAmJiBjb250ZW50ICYmIHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSAmJiBzZWxlY3RlZEl0ZW1UZXh0KSB7XG4gICAgICAgICAgICBjb25zdCB0cmlnZ2VyUmVjdCA9IGNvbnRleHQudHJpZ2dlci5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTsgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIC8vICBIb3Jpem9udGFsIHBvc2l0aW9uaW5nXG4gICAgICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgY29uc3QgY29udGVudFJlY3QgPSBjb250ZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgdmFsdWVOb2RlUmVjdCA9IGNvbnRleHQudmFsdWVOb2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgICAgICAgICAgY29uc3QgaXRlbVRleHRSZWN0ID0gc2VsZWN0ZWRJdGVtVGV4dC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICAgICAgICAgIGlmIChjb250ZXh0LmRpciAhPT0gJ3J0bCcpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGl0ZW1UZXh0UmVjdC5sZWZ0IC0gY29udGVudFJlY3QubGVmdDtcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gdmFsdWVOb2RlUmVjdC5sZWZ0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdERlbHRhID0gdHJpZ2dlclJlY3QubGVmdCAtIGxlZnQ7XG4gICAgICAgICAgICAgICAgY29uc3QgbWluQ29udGVudFdpZHRoID0gdHJpZ2dlclJlY3Qud2lkdGggKyBsZWZ0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHRFZGdlID0gd2luZG93LmlubmVyV2lkdGggLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU47XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZExlZnQgPSAkMDFiOWMkY2xhbXAobGVmdCwgW1xuICAgICAgICAgICAgICAgICAgICAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4sXG4gICAgICAgICAgICAgICAgICAgIHJpZ2h0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5sZWZ0ID0gY2xhbXBlZExlZnQgKyAncHgnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpdGVtVGV4dE9mZnNldCA9IGNvbnRlbnRSZWN0LnJpZ2h0IC0gaXRlbVRleHRSZWN0LnJpZ2h0O1xuICAgICAgICAgICAgICAgIGNvbnN0IHJpZ2h0ID0gd2luZG93LmlubmVyV2lkdGggLSB2YWx1ZU5vZGVSZWN0LnJpZ2h0IC0gaXRlbVRleHRPZmZzZXQ7XG4gICAgICAgICAgICAgICAgY29uc3QgcmlnaHREZWx0YSA9IHdpbmRvdy5pbm5lcldpZHRoIC0gdHJpZ2dlclJlY3QucmlnaHQgLSByaWdodDtcbiAgICAgICAgICAgICAgICBjb25zdCBtaW5Db250ZW50V2lkdGggPSB0cmlnZ2VyUmVjdC53aWR0aCArIHJpZ2h0RGVsdGE7XG4gICAgICAgICAgICAgICAgY29uc3QgY29udGVudFdpZHRoID0gTWF0aC5tYXgobWluQ29udGVudFdpZHRoLCBjb250ZW50UmVjdC53aWR0aCk7XG4gICAgICAgICAgICAgICAgY29uc3QgbGVmdEVkZ2UgPSB3aW5kb3cuaW5uZXJXaWR0aCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTjtcbiAgICAgICAgICAgICAgICBjb25zdCBjbGFtcGVkUmlnaHQgPSAkMDFiOWMkY2xhbXAocmlnaHQsIFtcbiAgICAgICAgICAgICAgICAgICAgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOLFxuICAgICAgICAgICAgICAgICAgICBsZWZ0RWRnZSAtIGNvbnRlbnRXaWR0aFxuICAgICAgICAgICAgICAgIF0pO1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbldpZHRoID0gbWluQ29udGVudFdpZHRoICsgJ3B4JztcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5yaWdodCA9IGNsYW1wZWRSaWdodCArICdweCc7XG4gICAgICAgICAgICB9IC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gICAgICAgICAgICAvLyBWZXJ0aWNhbCBwb3NpdGlvbmluZ1xuICAgICAgICAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgICAgICAgICAgIGNvbnN0IGl0ZW1zID0gZ2V0SXRlbXMoKTtcbiAgICAgICAgICAgIGNvbnN0IGF2YWlsYWJsZUhlaWdodCA9IHdpbmRvdy5pbm5lckhlaWdodCAtICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAqIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtc0hlaWdodCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodDtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRTdHlsZXMgPSB3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZShjb250ZW50KTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRCb3JkZXJUb3BXaWR0aCA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMuYm9yZGVyVG9wV2lkdGgsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnRQYWRkaW5nVG9wID0gcGFyc2VJbnQoY29udGVudFN0eWxlcy5wYWRkaW5nVG9wLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGggPSBwYXJzZUludChjb250ZW50U3R5bGVzLmJvcmRlckJvdHRvbVdpZHRoLCAxMCk7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KGNvbnRlbnRTdHlsZXMucGFkZGluZ0JvdHRvbSwgMTApO1xuICAgICAgICAgICAgY29uc3QgZnVsbENvbnRlbnRIZWlnaHQgPSBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyBjb250ZW50UGFkZGluZ1RvcCArIGl0ZW1zSGVpZ2h0ICsgY29udGVudFBhZGRpbmdCb3R0b20gKyBjb250ZW50Qm9yZGVyQm90dG9tV2lkdGg7IC8vIHByZXR0aWVyLWlnbm9yZVxuICAgICAgICAgICAgY29uc3QgbWluQ29udGVudEhlaWdodCA9IE1hdGgubWluKHNlbGVjdGVkSXRlbS5vZmZzZXRIZWlnaHQgKiA1LCBmdWxsQ29udGVudEhlaWdodCk7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydFN0eWxlcyA9IHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKHZpZXdwb3J0KTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ1RvcCA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdUb3AsIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0UGFkZGluZ0JvdHRvbSA9IHBhcnNlSW50KHZpZXdwb3J0U3R5bGVzLnBhZGRpbmdCb3R0b20sIDEwKTtcbiAgICAgICAgICAgIGNvbnN0IHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSB0cmlnZ2VyUmVjdC50b3AgKyB0cmlnZ2VyUmVjdC5oZWlnaHQgLyAyIC0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOO1xuICAgICAgICAgICAgY29uc3QgdHJpZ2dlck1pZGRsZVRvQm90dG9tRWRnZSA9IGF2YWlsYWJsZUhlaWdodCAtIHRvcEVkZ2VUb1RyaWdnZXJNaWRkbGU7XG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ID0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodCAvIDI7XG4gICAgICAgICAgICBjb25zdCBpdGVtT2Zmc2V0TWlkZGxlID0gc2VsZWN0ZWRJdGVtLm9mZnNldFRvcCArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQ7XG4gICAgICAgICAgICBjb25zdCBjb250ZW50VG9wVG9JdGVtTWlkZGxlID0gY29udGVudEJvcmRlclRvcFdpZHRoICsgY29udGVudFBhZGRpbmdUb3AgKyBpdGVtT2Zmc2V0TWlkZGxlO1xuICAgICAgICAgICAgY29uc3QgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbSA9IGZ1bGxDb250ZW50SGVpZ2h0IC0gY29udGVudFRvcFRvSXRlbU1pZGRsZTtcbiAgICAgICAgICAgIGNvbnN0IHdpbGxBbGlnbldpdGhvdXRUb3BPdmVyZmxvdyA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgPD0gdG9wRWRnZVRvVHJpZ2dlck1pZGRsZTtcbiAgICAgICAgICAgIGlmICh3aWxsQWxpZ25XaXRob3V0VG9wT3ZlcmZsb3cpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBpc0xhc3RJdGVtID0gc2VsZWN0ZWRJdGVtID09PSBpdGVtc1tpdGVtcy5sZW5ndGggLSAxXS5yZWYuY3VycmVudDtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5ib3R0b20gPSBcIjBweFwiO1xuICAgICAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0T2Zmc2V0Qm90dG9tID0gY29udGVudC5jbGllbnRIZWlnaHQgLSB2aWV3cG9ydC5vZmZzZXRUb3AgLSB2aWV3cG9ydC5vZmZzZXRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UgPSBNYXRoLm1heCh0cmlnZ2VyTWlkZGxlVG9Cb3R0b21FZGdlLCBzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0ICsgKGlzTGFzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdCb3R0b20gOiAwKSArIHZpZXdwb3J0T2Zmc2V0Qm90dG9tICsgY29udGVudEJvcmRlckJvdHRvbVdpZHRoKTtcbiAgICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBjb250ZW50VG9wVG9JdGVtTWlkZGxlICsgY2xhbXBlZFRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2U7XG4gICAgICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0ID0gaGVpZ2h0ICsgJ3B4JztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNGaXJzdEl0ZW0gPSBzZWxlY3RlZEl0ZW0gPT09IGl0ZW1zWzBdLnJlZi5jdXJyZW50O1xuICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLnRvcCA9IFwiMHB4XCI7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xhbXBlZFRvcEVkZ2VUb1RyaWdnZXJNaWRkbGUgPSBNYXRoLm1heCh0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlLCBjb250ZW50Qm9yZGVyVG9wV2lkdGggKyB2aWV3cG9ydC5vZmZzZXRUb3AgKyAoaXNGaXJzdEl0ZW0gPyB2aWV3cG9ydFBhZGRpbmdUb3AgOiAwKSArIHNlbGVjdGVkSXRlbUhhbGZIZWlnaHQpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IGNsYW1wZWRUb3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgaXRlbU1pZGRsZVRvQ29udGVudEJvdHRvbTtcbiAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBoZWlnaHQgKyAncHgnO1xuICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGNvbnRlbnRUb3BUb0l0ZW1NaWRkbGUgLSB0b3BFZGdlVG9UcmlnZ2VyTWlkZGxlICsgdmlld3BvcnQub2Zmc2V0VG9wO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWFyZ2luID0gYCR7JGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOfXB4IDBgO1xuICAgICAgICAgICAgY29udGVudFdyYXBwZXIuc3R5bGUubWluSGVpZ2h0ID0gbWluQ29udGVudEhlaWdodCArICdweCc7XG4gICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5tYXhIZWlnaHQgPSBhdmFpbGFibGVIZWlnaHQgKyAncHgnOyAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAgICAgICAgICAgb25QbGFjZWQgPT09IG51bGwgfHwgb25QbGFjZWQgPT09IHZvaWQgMCB8fCBvblBsYWNlZCgpOyAvLyB3ZSBkb24ndCB3YW50IHRoZSBpbml0aWFsIHNjcm9sbCBwb3NpdGlvbiBhZGp1c3RtZW50IHRvIHRyaWdnZXIgXCJleHBhbmQgb24gc2Nyb2xsXCJcbiAgICAgICAgICAgIC8vIHNvIHdlIGV4cGxpY2l0bHkgdHVybiBpdCBvbiBvbmx5IGFmdGVyIHRoZXkndmUgcmVnaXN0ZXJlZC5cbiAgICAgICAgICAgIHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKT0+c2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCA9IHRydWVcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGdldEl0ZW1zLFxuICAgICAgICBjb250ZXh0LnRyaWdnZXIsXG4gICAgICAgIGNvbnRleHQudmFsdWVOb2RlLFxuICAgICAgICBjb250ZW50V3JhcHBlcixcbiAgICAgICAgY29udGVudCxcbiAgICAgICAgdmlld3BvcnQsXG4gICAgICAgIHNlbGVjdGVkSXRlbSxcbiAgICAgICAgc2VsZWN0ZWRJdGVtVGV4dCxcbiAgICAgICAgY29udGV4dC5kaXIsXG4gICAgICAgIG9uUGxhY2VkXG4gICAgXSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+cG9zaXRpb24oKVxuICAgICwgW1xuICAgICAgICBwb3NpdGlvblxuICAgIF0pOyAvLyBjb3B5IHotaW5kZXggZnJvbSBjb250ZW50IHRvIHdyYXBwZXJcbiAgICBjb25zdCBbY29udGVudFpJbmRleCwgc2V0Q29udGVudFpJbmRleF0gPSAkMDFiOWMkdXNlU3RhdGUoKTtcbiAgICAkMDFiOWMkdXNlTGF5b3V0RWZmZWN0KCgpPT57XG4gICAgICAgIGlmIChjb250ZW50KSBzZXRDb250ZW50WkluZGV4KHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGNvbnRlbnQpLnpJbmRleCk7XG4gICAgfSwgW1xuICAgICAgICBjb250ZW50XG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBhdCB0aGUgdG9wLCB0aGUgc2Nyb2xsIHVwIGJ1dHRvbiB3aWxsIG1vdW50LlxuICAgIC8vIEJlY2F1c2UgaXQgaXMgcGFydCBvZiB0aGUgbm9ybWFsIGZsb3csIGl0IHdpbGwgcHVzaCBkb3duIHRoZSB2aWV3cG9ydCwgdGh1cyB0aHJvd2luZyBvdXJcbiAgICAvLyB0cmlnZ2VyID0+IHNlbGVjdGVkSXRlbSBhbGlnbm1lbnQgb2ZmIGJ5IHRoZSBhbW91bnQgdGhlIHZpZXdwb3J0IHdhcyBwdXNoZWQgZG93bi5cbiAgICAvLyBXZSB3YWl0IGZvciB0aGlzIHRvIGhhcHBlbiBhbmQgdGhlbiByZS1ydW4gdGhlIHBvc2l0aW5pbmcgbG9naWMgb25lIG1vcmUgdGltZSB0byBhY2NvdW50IGZvciBpdC5cbiAgICBjb25zdCBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2UgPSAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgIGlmIChub2RlICYmIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcG9zaXRpb24oKTtcbiAgICAgICAgICAgIGZvY3VzU2VsZWN0ZWRJdGVtID09PSBudWxsIHx8IGZvY3VzU2VsZWN0ZWRJdGVtID09PSB2b2lkIDAgfHwgZm9jdXNTZWxlY3RlZEl0ZW0oKTtcbiAgICAgICAgICAgIHNob3VsZFJlcG9zaXRpb25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgICB9XG4gICAgfSwgW1xuICAgICAgICBwb3NpdGlvbixcbiAgICAgICAgZm9jdXNTZWxlY3RlZEl0ZW1cbiAgICBdKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Vmlld3BvcnRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyLFxuICAgICAgICBzaG91bGRFeHBhbmRPblNjcm9sbFJlZjogc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYsXG4gICAgICAgIG9uU2Nyb2xsQnV0dG9uQ2hhbmdlOiBoYW5kbGVTY3JvbGxCdXR0b25DaGFuZ2VcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwiZGl2XCIsIHtcbiAgICAgICAgcmVmOiBzZXRDb250ZW50V3JhcHBlcixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICAgICAgICAgIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICAgICAgICAgICAgcG9zaXRpb246ICdmaXhlZCcsXG4gICAgICAgICAgICB6SW5kZXg6IGNvbnRlbnRaSW5kZXhcbiAgICAgICAgfVxuICAgIH0sIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGdldCB0aGUgaGVpZ2h0IG9mIHRoZSBjb250ZW50LCBpdCBpbmNsdWRlcyBib3JkZXJzLiBJZiB3ZSB3ZXJlIHRvIHNldFxuICAgICAgICAgICAgLy8gdGhlIGhlaWdodCB3aXRob3V0IGhhdmluZyBgYm94U2l6aW5nOiAnYm9yZGVyLWJveCdgIGl0IHdvdWxkIGJlIHRvbyBiaWcuXG4gICAgICAgICAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICAgICAgICAgIC8vIFdlIG5lZWQgdG8gZW5zdXJlIHRoZSBjb250ZW50IGRvZXNuJ3QgZ2V0IHRhbGxlciB0aGFuIHRoZSB3cmFwcGVyXG4gICAgICAgICAgICBtYXhIZWlnaHQ6ICcxMDAlJyxcbiAgICAgICAgICAgIC4uLnBvcHBlclByb3BzLnN0eWxlXG4gICAgICAgIH1cbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQWxpZ25lZFBvc2l0aW9uLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0FMSUdORURfUE9TSVRJT05fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RQb3BwZXJQb3NpdGlvblxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUUgPSAnU2VsZWN0UG9wcGVyUG9zaXRpb24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdFBvcHBlclBvc2l0aW9uID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBhbGlnbjogYWxpZ24gPSAnc3RhcnQnICwgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX01BUkdJTiAsIC4uLnBvcHBlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBwb3BwZXJTY29wZSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VQb3BwZXJTY29wZShfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQ29udGVudCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwb3BwZXJTY29wZSwgcG9wcGVyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWYsXG4gICAgICAgIGFsaWduOiBhbGlnbixcbiAgICAgICAgY29sbGlzaW9uUGFkZGluZzogY29sbGlzaW9uUGFkZGluZyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIEVuc3VyZSBib3JkZXItYm94IGZvciBmbG9hdGluZy11aSBjYWxjdWxhdGlvbnNcbiAgICAgICAgICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgICAgICAgICAgLi4ucG9wcGVyUHJvcHMuc3R5bGUsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC10cmFuc2Zvcm0tb3JpZ2luJzogJ3ZhcigtLXJhZGl4LXBvcHBlci10cmFuc2Zvcm0tb3JpZ2luKScsXG4gICAgICAgICAgICAnLS1yYWRpeC1zZWxlY3QtY29udGVudC1hdmFpbGFibGUtd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWF2YWlsYWJsZS13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LWNvbnRlbnQtYXZhaWxhYmxlLWhlaWdodCc6ICd2YXIoLS1yYWRpeC1wb3BwZXItYXZhaWxhYmxlLWhlaWdodCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItd2lkdGgnOiAndmFyKC0tcmFkaXgtcG9wcGVyLWFuY2hvci13aWR0aCknLFxuICAgICAgICAgICAgJy0tcmFkaXgtc2VsZWN0LXRyaWdnZXItaGVpZ2h0JzogJ3ZhcigtLXJhZGl4LXBvcHBlci1hbmNob3ItaGVpZ2h0KSdcbiAgICAgICAgfVxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RQb3BwZXJQb3NpdGlvbiwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkUE9QUEVSX1BPU0lUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0Vmlld3BvcnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RWaWV3cG9ydFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0XSA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRjcmVhdGVTZWxlY3RDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUsIHt9KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FID0gJ1NlbGVjdFZpZXdwb3J0JztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi52aWV3cG9ydFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIGNvbnRlbnRDb250ZXh0Lm9uVmlld3BvcnRDaGFuZ2UpO1xuICAgIGNvbnN0IHByZXZTY3JvbGxUb3BSZWYgPSAkMDFiOWMkdXNlUmVmKDApO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRGcmFnbWVudCwgbnVsbCwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICAgIF9faHRtbDogYFtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF17c2Nyb2xsYmFyLXdpZHRoOm5vbmU7LW1zLW92ZXJmbG93LXN0eWxlOm5vbmU7LXdlYmtpdC1vdmVyZmxvdy1zY3JvbGxpbmc6dG91Y2g7fVtkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydF06Oi13ZWJraXQtc2Nyb2xsYmFye2Rpc3BsYXk6bm9uZX1gXG4gICAgICAgIH1cbiAgICB9KSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5TbG90LCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlU2VsZWN0XG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgXCJkYXRhLXJhZGl4LXNlbGVjdC12aWV3cG9ydFwiOiBcIlwiLFxuICAgICAgICByb2xlOiBcInByZXNlbnRhdGlvblwiXG4gICAgfSwgdmlld3BvcnRQcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIC8vIHdlIHVzZSBwb3NpdGlvbjogJ3JlbGF0aXZlJyBoZXJlIG9uIHRoZSBgdmlld3BvcnRgIHNvIHRoYXQgd2hlbiB3ZSBjYWxsXG4gICAgICAgICAgICAvLyBgc2VsZWN0ZWRJdGVtLm9mZnNldFRvcGAgaW4gY2FsY3VsYXRpb25zLCB0aGUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIHRoZSB2aWV3cG9ydFxuICAgICAgICAgICAgLy8gKGluZGVwZW5kZW50IG9mIHRoZSBzY3JvbGxVcEJ1dHRvbikuXG4gICAgICAgICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgICAgICAgIGZsZXg6IDEsXG4gICAgICAgICAgICBvdmVyZmxvdzogJ2F1dG8nLFxuICAgICAgICAgICAgLi4udmlld3BvcnRQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblNjcm9sbDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKHZpZXdwb3J0UHJvcHMub25TY3JvbGwsIChldmVudCk9PntcbiAgICAgICAgICAgIGNvbnN0IHZpZXdwb3J0ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICAgICAgICAgIGNvbnN0IHsgY29udGVudFdyYXBwZXI6IGNvbnRlbnRXcmFwcGVyICwgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWY6IHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICB9ID0gdmlld3BvcnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSBudWxsICYmIHNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmICE9PSB2b2lkIDAgJiYgc2hvdWxkRXhwYW5kT25TY3JvbGxSZWYuY3VycmVudCAmJiBjb250ZW50V3JhcHBlcikge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNjcm9sbGVkQnkgPSBNYXRoLmFicyhwcmV2U2Nyb2xsVG9wUmVmLmN1cnJlbnQgLSB2aWV3cG9ydC5zY3JvbGxUb3ApO1xuICAgICAgICAgICAgICAgIGlmIChzY3JvbGxlZEJ5ID4gMCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBhdmFpbGFibGVIZWlnaHQgPSB3aW5kb3cuaW5uZXJIZWlnaHQgLSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ09OVEVOVF9NQVJHSU4gKiAyO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjc3NNaW5IZWlnaHQgPSBwYXJzZUZsb2F0KGNvbnRlbnRXcmFwcGVyLnN0eWxlLm1pbkhlaWdodCk7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGNzc0hlaWdodCA9IHBhcnNlRmxvYXQoY29udGVudFdyYXBwZXIuc3R5bGUuaGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcHJldkhlaWdodCA9IE1hdGgubWF4KGNzc01pbkhlaWdodCwgY3NzSGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZIZWlnaHQgPCBhdmFpbGFibGVIZWlnaHQpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IG5leHRIZWlnaHQgPSBwcmV2SGVpZ2h0ICsgc2Nyb2xsZWRCeTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNsYW1wZWROZXh0SGVpZ2h0ID0gTWF0aC5taW4oYXZhaWxhYmxlSGVpZ2h0LCBuZXh0SGVpZ2h0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlaWdodERpZmYgPSBuZXh0SGVpZ2h0IC0gY2xhbXBlZE5leHRIZWlnaHQ7XG4gICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50V3JhcHBlci5zdHlsZS5oZWlnaHQgPSBjbGFtcGVkTmV4dEhlaWdodCArICdweCc7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudFdyYXBwZXIuc3R5bGUuYm90dG9tID09PSAnMHB4Jykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpZXdwb3J0LnNjcm9sbFRvcCA9IGhlaWdodERpZmYgPiAwID8gaGVpZ2h0RGlmZiA6IDA7IC8vIGVuc3VyZSB0aGUgY29udGVudCBzdGF5cyBwaW5uZWQgdG8gdGhlIGJvdHRvbVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRXcmFwcGVyLnN0eWxlLmp1c3RpZnlDb250ZW50ID0gJ2ZsZXgtZW5kJztcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHByZXZTY3JvbGxUb3BSZWYuY3VycmVudCA9IHZpZXdwb3J0LnNjcm9sbFRvcDtcbiAgICAgICAgfSlcbiAgICB9KSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkLCB7XG4gICAgZGlzcGxheU5hbWU6ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRWSUVXUE9SVF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdEdyb3VwXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRHUk9VUF9OQU1FID0gJ1NlbGVjdEdyb3VwJztcbmNvbnN0IFskY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RHcm91cENvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEdST1VQX05BTUUpO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGVlMjVhMzM0YzU1ZGUxZjQgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmdyb3VwUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGdyb3VwSWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0R3JvdXBDb250ZXh0UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVTZWxlY3QsXG4gICAgICAgIGlkOiBncm91cElkXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJncm91cFwiLFxuICAgICAgICBcImFyaWEtbGFiZWxsZWRieVwiOiBncm91cElkXG4gICAgfSwgZ3JvdXBQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWUyNWEzMzRjNTVkZTFmNCwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkR1JPVVBfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSA9ICdTZWxlY3RMYWJlbCc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgLi4ubGFiZWxQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZ3JvdXBDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEdyb3VwQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkTEFCRUxfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIGlkOiBncm91cENvbnRleHQuaWRcbiAgICB9LCBsYWJlbFByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGY2NzMzOGQyOWJkOTcyZjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJExBQkVMX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FID0gJ1NlbGVjdEl0ZW0nO1xuY29uc3QgWyRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQ29udGV4dFByb3ZpZGVyLCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHRdID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMTNlZjQ4YTkzNDIzMDg5NiA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlU2VsZWN0OiBfX3Njb3BlU2VsZWN0ICwgdmFsdWU6IHZhbHVlICwgZGlzYWJsZWQ6IGRpc2FibGVkID0gZmFsc2UgLCB0ZXh0VmFsdWU6IHRleHRWYWx1ZVByb3AgLCAuLi5pdGVtUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBpc1NlbGVjdGVkID0gY29udGV4dC52YWx1ZSA9PT0gdmFsdWU7XG4gICAgY29uc3QgW3RleHRWYWx1ZSwgc2V0VGV4dFZhbHVlXSA9ICQwMWI5YyR1c2VTdGF0ZSh0ZXh0VmFsdWVQcm9wICE9PSBudWxsICYmIHRleHRWYWx1ZVByb3AgIT09IHZvaWQgMCA/IHRleHRWYWx1ZVByb3AgOiAnJyk7XG4gICAgY29uc3QgW2lzRm9jdXNlZCwgc2V0SXNGb2N1c2VkXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JGl0ZW1SO1xuICAgICAgICByZXR1cm4gKF9jb250ZW50Q29udGV4dCRpdGVtUiA9IGNvbnRlbnRDb250ZXh0Lml0ZW1SZWZDYWxsYmFjaykgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JGl0ZW1SID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkaXRlbVIuY2FsbChjb250ZW50Q29udGV4dCwgbm9kZSwgdmFsdWUsIGRpc2FibGVkKTtcbiAgICB9KTtcbiAgICBjb25zdCB0ZXh0SWQgPSAkMDFiOWMkdXNlSWQoKTtcbiAgICBjb25zdCBoYW5kbGVTZWxlY3QgPSAoKT0+e1xuICAgICAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICAgICAgICBjb250ZXh0Lm9uVmFsdWVDaGFuZ2UodmFsdWUpO1xuICAgICAgICAgICAgY29udGV4dC5vbk9wZW5DaGFuZ2UoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUNvbnRleHRQcm92aWRlciwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRJZDogdGV4dElkLFxuICAgICAgICBpc1NlbGVjdGVkOiBpc1NlbGVjdGVkLFxuICAgICAgICBvbkl0ZW1UZXh0Q2hhbmdlOiAkMDFiOWMkdXNlQ2FsbGJhY2soKG5vZGUpPT57XG4gICAgICAgICAgICBzZXRUZXh0VmFsdWUoKHByZXZUZXh0VmFsdWUpPT57XG4gICAgICAgICAgICAgICAgdmFyIF9ub2RlJHRleHRDb250ZW50O1xuICAgICAgICAgICAgICAgIHJldHVybiBwcmV2VGV4dFZhbHVlIHx8ICgoX25vZGUkdGV4dENvbnRlbnQgPSBub2RlID09PSBudWxsIHx8IG5vZGUgPT09IHZvaWQgMCA/IHZvaWQgMCA6IG5vZGUudGV4dENvbnRlbnQpICE9PSBudWxsICYmIF9ub2RlJHRleHRDb250ZW50ICE9PSB2b2lkIDAgPyBfbm9kZSR0ZXh0Q29udGVudCA6ICcnKS50cmltKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSwgW10pXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbi5JdGVtU2xvdCwge1xuICAgICAgICBzY29wZTogX19zY29wZVNlbGVjdCxcbiAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICBkaXNhYmxlZDogZGlzYWJsZWQsXG4gICAgICAgIHRleHRWYWx1ZTogdGV4dFZhbHVlXG4gICAgfSwgLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkUHJpbWl0aXZlLmRpdiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgcm9sZTogXCJvcHRpb25cIixcbiAgICAgICAgXCJhcmlhLWxhYmVsbGVkYnlcIjogdGV4dElkLFxuICAgICAgICBcImRhdGEtaGlnaGxpZ2h0ZWRcIjogaXNGb2N1c2VkID8gJycgOiB1bmRlZmluZWQgLy8gYGlzRm9jdXNlZGAgY2F2ZWF0IGZpeGVzIHN0dXR0ZXJpbmcgaW4gVm9pY2VPdmVyXG4gICAgICAgICxcbiAgICAgICAgXCJhcmlhLXNlbGVjdGVkXCI6IGlzU2VsZWN0ZWQgJiYgaXNGb2N1c2VkLFxuICAgICAgICBcImRhdGEtc3RhdGVcIjogaXNTZWxlY3RlZCA/ICdjaGVja2VkJyA6ICd1bmNoZWNrZWQnLFxuICAgICAgICBcImFyaWEtZGlzYWJsZWRcIjogZGlzYWJsZWQgfHwgdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtZGlzYWJsZWRcIjogZGlzYWJsZWQgPyAnJyA6IHVuZGVmaW5lZCxcbiAgICAgICAgdGFiSW5kZXg6IGRpc2FibGVkID8gdW5kZWZpbmVkIDogLTFcbiAgICB9LCBpdGVtUHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIG9uRm9jdXM6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25Gb2N1cywgKCk9PnNldElzRm9jdXNlZCh0cnVlKVxuICAgICAgICApLFxuICAgICAgICBvbkJsdXI6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhpdGVtUHJvcHMub25CbHVyLCAoKT0+c2V0SXNGb2N1c2VkKGZhbHNlKVxuICAgICAgICApLFxuICAgICAgICBvblBvaW50ZXJVcDogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJVcCwgaGFuZGxlU2VsZWN0KSxcbiAgICAgICAgb25Qb2ludGVyTW92ZTogJDAxYjljJGNvbXBvc2VFdmVudEhhbmRsZXJzKGl0ZW1Qcm9wcy5vblBvaW50ZXJNb3ZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICB2YXIgX2NvbnRlbnRDb250ZXh0JG9uSXRlO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlID09PSB2b2lkIDAgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfSBlbHNlIC8vIGV2ZW4gdGhvdWdoIHNhZmFyaSBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcHRpb24sIGl0J3MgYWNjZXB0YWJsZVxuICAgICAgICAgICAgLy8gYXMgaXQgb25seSBtZWFucyBpdCBtaWdodCBzY3JvbGwgYSBmZXcgcGl4ZWxzIHdoZW4gdXNpbmcgdGhlIHBvaW50ZXIuXG4gICAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckxlYXZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uUG9pbnRlckxlYXZlLCAoZXZlbnQpPT57XG4gICAgICAgICAgICBpZiAoZXZlbnQuY3VycmVudFRhcmdldCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudCkge1xuICAgICAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUyO1xuICAgICAgICAgICAgICAgIChfY29udGVudENvbnRleHQkb25JdGUyID0gY29udGVudENvbnRleHQub25JdGVtTGVhdmUpID09PSBudWxsIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTIgPT09IHZvaWQgMCB8fCBfY29udGVudENvbnRleHQkb25JdGUyLmNhbGwoY29udGVudENvbnRleHQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KSxcbiAgICAgICAgb25LZXlEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoaXRlbVByb3BzLm9uS2V5RG93biwgKGV2ZW50KT0+e1xuICAgICAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRzZWFyYztcbiAgICAgICAgICAgIGNvbnN0IGlzVHlwaW5nQWhlYWQgPSAoKF9jb250ZW50Q29udGV4dCRzZWFyYyA9IGNvbnRlbnRDb250ZXh0LnNlYXJjaFJlZikgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JHNlYXJjID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfY29udGVudENvbnRleHQkc2VhcmMuY3VycmVudCkgIT09ICcnO1xuICAgICAgICAgICAgaWYgKGlzVHlwaW5nQWhlYWQgJiYgZXZlbnQua2V5ID09PSAnICcpIHJldHVybjtcbiAgICAgICAgICAgIGlmICgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSkgaGFuZGxlU2VsZWN0KCk7IC8vIHByZXZlbnQgcGFnZSBzY3JvbGwgaWYgdXNpbmcgdGhlIHNwYWNlIGtleSB0byBzZWxlY3QgYW4gaXRlbVxuICAgICAgICAgICAgaWYgKGV2ZW50LmtleSA9PT0gJyAnKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9KVxuICAgIH0pKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RJdGVtVGV4dFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUgPSAnU2VsZWN0SXRlbVRleHQnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIC8vIFdlIGlnbm9yZSBgY2xhc3NOYW1lYCBhbmQgYHN0eWxlYCBhcyB0aGlzIHBhcnQgc2hvdWxkbid0IGJlIHN0eWxlZC5cbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBjbGFzc05hbWU6IGNsYXNzTmFtZSAsIHN0eWxlOiBzdHlsZSAsIC4uLml0ZW1UZXh0UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRlbnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgaXRlbUNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0SXRlbUNvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fVEVYVF9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBuYXRpdmVPcHRpb25zQ29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3ROYXRpdmVPcHRpb25zQ29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IFtpdGVtVGV4dE5vZGUsIHNldEl0ZW1UZXh0Tm9kZV0gPSAkMDFiOWMkdXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIChub2RlKT0+c2V0SXRlbVRleHROb2RlKG5vZGUpXG4gICAgLCBpdGVtQ29udGV4dC5vbkl0ZW1UZXh0Q2hhbmdlLCAobm9kZSk9PntcbiAgICAgICAgdmFyIF9jb250ZW50Q29udGV4dCRpdGVtVDtcbiAgICAgICAgcmV0dXJuIChfY29udGVudENvbnRleHQkaXRlbVQgPSBjb250ZW50Q29udGV4dC5pdGVtVGV4dFJlZkNhbGxiYWNrKSA9PT0gbnVsbCB8fCBfY29udGVudENvbnRleHQkaXRlbVQgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9jb250ZW50Q29udGV4dCRpdGVtVC5jYWxsKGNvbnRlbnRDb250ZXh0LCBub2RlLCBpdGVtQ29udGV4dC52YWx1ZSwgaXRlbUNvbnRleHQuZGlzYWJsZWQpO1xuICAgIH0pO1xuICAgIGNvbnN0IHRleHRDb250ZW50ID0gaXRlbVRleHROb2RlID09PSBudWxsIHx8IGl0ZW1UZXh0Tm9kZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogaXRlbVRleHROb2RlLnRleHRDb250ZW50O1xuICAgIGNvbnN0IG5hdGl2ZU9wdGlvbiA9ICQwMWI5YyR1c2VNZW1vKCgpPT4vKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwib3B0aW9uXCIsIHtcbiAgICAgICAgICAgIGtleTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICB2YWx1ZTogaXRlbUNvbnRleHQudmFsdWUsXG4gICAgICAgICAgICBkaXNhYmxlZDogaXRlbUNvbnRleHQuZGlzYWJsZWRcbiAgICAgICAgfSwgdGV4dENvbnRlbnQpXG4gICAgLCBbXG4gICAgICAgIGl0ZW1Db250ZXh0LmRpc2FibGVkLFxuICAgICAgICBpdGVtQ29udGV4dC52YWx1ZSxcbiAgICAgICAgdGV4dENvbnRlbnRcbiAgICBdKTtcbiAgICBjb25zdCB7IG9uTmF0aXZlT3B0aW9uQWRkOiBvbk5hdGl2ZU9wdGlvbkFkZCAsIG9uTmF0aXZlT3B0aW9uUmVtb3ZlOiBvbk5hdGl2ZU9wdGlvblJlbW92ZSAgfSA9IG5hdGl2ZU9wdGlvbnNDb250ZXh0O1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgb25OYXRpdmVPcHRpb25BZGQobmF0aXZlT3B0aW9uKTtcbiAgICAgICAgcmV0dXJuICgpPT5vbk5hdGl2ZU9wdGlvblJlbW92ZShuYXRpdmVPcHRpb24pXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIG9uTmF0aXZlT3B0aW9uQWRkLFxuICAgICAgICBvbk5hdGl2ZU9wdGlvblJlbW92ZSxcbiAgICAgICAgbmF0aXZlT3B0aW9uXG4gICAgXSk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJEZyYWdtZW50LCBudWxsLCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuc3BhbiwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHtcbiAgICAgICAgaWQ6IGl0ZW1Db250ZXh0LnRleHRJZFxuICAgIH0sIGl0ZW1UZXh0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnNcbiAgICB9KSksIGl0ZW1Db250ZXh0LmlzU2VsZWN0ZWQgJiYgY29udGV4dC52YWx1ZU5vZGUgJiYgIWNvbnRleHQudmFsdWVOb2RlSGFzQ2hpbGRyZW4gPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVQb3J0YWwoaXRlbVRleHRQcm9wcy5jaGlsZHJlbiwgY29udGV4dC52YWx1ZU5vZGUpIDogbnVsbCk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzU3MmZiMGZiODIxZmY0OSwge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9URVhUX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0SXRlbUluZGljYXRvclxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkSVRFTV9JTkRJQ0FUT1JfTkFNRSA9ICdTZWxlY3RJdGVtSW5kaWNhdG9yJztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5pdGVtSW5kaWNhdG9yUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGl0ZW1Db250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX0lORElDQVRPUl9OQU1FLCBfX3Njb3BlU2VsZWN0KTtcbiAgICByZXR1cm4gaXRlbUNvbnRleHQuaXNTZWxlY3RlZCA/IC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5zcGFuLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBpdGVtSW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDZiOTE5OGRlMTlhY2NmZTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0U2Nyb2xsVXBCdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSA9ICdTZWxlY3RTY3JvbGxVcEJ1dHRvbic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9VUF9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3Qgdmlld3BvcnRDb250ZXh0ID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdFZpZXdwb3J0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCBbY2FuU2Nyb2xsVXAxLCBzZXRDYW5TY3JvbGxVcF0gPSAkMDFiOWMkdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCB2aWV3cG9ydENvbnRleHQub25TY3JvbGxCdXR0b25DaGFuZ2UpO1xuICAgICQwMWI5YyR1c2VMYXlvdXRFZmZlY3QoKCk9PntcbiAgICAgICAgaWYgKGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0ICYmIGNvbnRlbnRDb250ZXh0LmlzUG9zaXRpb25lZCkge1xuICAgICAgICAgICAgY29uc3Qgdmlld3BvcnQgPSBjb250ZW50Q29udGV4dC52aWV3cG9ydDtcbiAgICAgICAgICAgIGZ1bmN0aW9uIGhhbmRsZVNjcm9sbCgpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjYW5TY3JvbGxVcCA9IHZpZXdwb3J0LnNjcm9sbFRvcCA+IDA7XG4gICAgICAgICAgICAgICAgc2V0Q2FuU2Nyb2xsVXAoY2FuU2Nyb2xsVXApO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsVXAxID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCwgJDAxYjljJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGNvbXBvc2VkUmVmcyxcbiAgICAgICAgb25BdXRvU2Nyb2xsOiAoKT0+e1xuICAgICAgICAgICAgY29uc3QgeyB2aWV3cG9ydDogdmlld3BvcnQgLCBzZWxlY3RlZEl0ZW06IHNlbGVjdGVkSXRlbSAgfSA9IGNvbnRlbnRDb250ZXh0O1xuICAgICAgICAgICAgaWYgKHZpZXdwb3J0ICYmIHNlbGVjdGVkSXRlbSkgdmlld3BvcnQuc2Nyb2xsVG9wID0gdmlld3BvcnQuc2Nyb2xsVG9wIC0gc2VsZWN0ZWRJdGVtLm9mZnNldEhlaWdodDtcbiAgICAgICAgfVxuICAgIH0pKSA6IG51bGw7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0NST0xMX1VQX0JVVFRPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFNlbGVjdFNjcm9sbERvd25CdXR0b25cbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FID0gJ1NlbGVjdFNjcm9sbERvd25CdXR0b24nO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGZmOTUxZTQ3NmMxMjE4OSA9IC8qI19fUFVSRV9fKi8gJDAxYjljJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FLCBwcm9wcy5fX3Njb3BlU2VsZWN0KTtcbiAgICBjb25zdCB2aWV3cG9ydENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Vmlld3BvcnRDb250ZXh0KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSwgcHJvcHMuX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgW2NhblNjcm9sbERvd24xLCBzZXRDYW5TY3JvbGxEb3duXSA9ICQwMWI5YyR1c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgY29tcG9zZWRSZWZzID0gJDAxYjljJHVzZUNvbXBvc2VkUmVmcyhmb3J3YXJkZWRSZWYsIHZpZXdwb3J0Q29udGV4dC5vblNjcm9sbEJ1dHRvbkNoYW5nZSk7XG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICBpZiAoY29udGVudENvbnRleHQudmlld3BvcnQgJiYgY29udGVudENvbnRleHQuaXNQb3NpdGlvbmVkKSB7XG4gICAgICAgICAgICBjb25zdCB2aWV3cG9ydCA9IGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0O1xuICAgICAgICAgICAgZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKCkge1xuICAgICAgICAgICAgICAgIGNvbnN0IG1heFNjcm9sbCA9IHZpZXdwb3J0LnNjcm9sbEhlaWdodCAtIHZpZXdwb3J0LmNsaWVudEhlaWdodDsgLy8gd2UgdXNlIE1hdGguY2VpbCBoZXJlIGJlY2F1c2UgaWYgdGhlIFVJIGlzIHpvb21lZC1pblxuICAgICAgICAgICAgICAgIC8vIGBzY3JvbGxUb3BgIGlzIG5vdCBhbHdheXMgcmVwb3J0ZWQgYXMgYW4gaW50ZWdlclxuICAgICAgICAgICAgICAgIGNvbnN0IGNhblNjcm9sbERvd24gPSBNYXRoLmNlaWwodmlld3BvcnQuc2Nyb2xsVG9wKSA8IG1heFNjcm9sbDtcbiAgICAgICAgICAgICAgICBzZXRDYW5TY3JvbGxEb3duKGNhblNjcm9sbERvd24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaGFuZGxlU2Nyb2xsKCk7XG4gICAgICAgICAgICB2aWV3cG9ydC5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpO1xuICAgICAgICAgICAgcmV0dXJuICgpPT52aWV3cG9ydC5yZW1vdmVFdmVudExpc3RlbmVyKCdzY3JvbGwnLCBoYW5kbGVTY3JvbGwpXG4gICAgICAgICAgICA7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIGNvbnRlbnRDb250ZXh0LnZpZXdwb3J0LFxuICAgICAgICBjb250ZW50Q29udGV4dC5pc1Bvc2l0aW9uZWRcbiAgICBdKTtcbiAgICByZXR1cm4gY2FuU2Nyb2xsRG93bjEgPyAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsLCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbkF1dG9TY3JvbGw6ICgpPT57XG4gICAgICAgICAgICBjb25zdCB7IHZpZXdwb3J0OiB2aWV3cG9ydCAsIHNlbGVjdGVkSXRlbTogc2VsZWN0ZWRJdGVtICB9ID0gY29udGVudENvbnRleHQ7XG4gICAgICAgICAgICBpZiAodmlld3BvcnQgJiYgc2VsZWN0ZWRJdGVtKSB2aWV3cG9ydC5zY3JvbGxUb3AgPSB2aWV3cG9ydC5zY3JvbGxUb3AgKyBzZWxlY3RlZEl0ZW0ub2Zmc2V0SGVpZ2h0O1xuICAgICAgICB9XG4gICAgfSkpIDogbnVsbDtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODksIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNDUk9MTF9ET1dOX0JVVFRPTl9OQU1FXG59KTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RTY3JvbGxCdXR0b25JbXBsID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCBvbkF1dG9TY3JvbGw6IG9uQXV0b1Njcm9sbCAsIC4uLnNjcm9sbEluZGljYXRvclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBjb250ZW50Q29udGV4dCA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RDb250ZW50Q29udGV4dCgnU2VsZWN0U2Nyb2xsQnV0dG9uJywgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgYXV0b1Njcm9sbFRpbWVyUmVmID0gJDAxYjljJHVzZVJlZihudWxsKTtcbiAgICBjb25zdCBnZXRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNsZWFyQXV0b1Njcm9sbFRpbWVyID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCAhPT0gbnVsbCkge1xuICAgICAgICAgICAgd2luZG93LmNsZWFySW50ZXJ2YWwoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQpO1xuICAgICAgICAgICAgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgICB9XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT5jbGVhckF1dG9TY3JvbGxUaW1lcigpXG4gICAgICAgIDtcbiAgICB9LCBbXG4gICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyXG4gICAgXSk7IC8vIFdoZW4gdGhlIHZpZXdwb3J0IGJlY29tZXMgc2Nyb2xsYWJsZSBvbiBlaXRoZXIgc2lkZSwgdGhlIHJlbGV2YW50IHNjcm9sbCBidXR0b24gd2lsbCBtb3VudC5cbiAgICAvLyBCZWNhdXNlIGl0IGlzIHBhcnQgb2YgdGhlIG5vcm1hbCBmbG93LCBpdCB3aWxsIHB1c2ggZG93biAodG9wIGJ1dHRvbikgb3Igc2hyaW5rIChib3R0b20gYnV0dG9uKVxuICAgIC8vIHRoZSB2aWV3cG9ydCwgcG90ZW50aWFsbHkgY2F1c2luZyB0aGUgYWN0aXZlIGl0ZW0gdG8gbm93IGJlIHBhcnRpYWxseSBvdXQgb2Ygdmlldy5cbiAgICAvLyBXZSByZS1ydW4gdGhlIGBzY3JvbGxJbnRvVmlld2AgbG9naWMgdG8gbWFrZSBzdXJlIGl0IHN0YXlzIHdpdGhpbiB0aGUgdmlld3BvcnQuXG4gICAgJDAxYjljJHVzZUxheW91dEVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlO1xuICAgICAgICBjb25zdCBhY3RpdmVJdGVtID0gZ2V0SXRlbXMoKS5maW5kKChpdGVtKT0+aXRlbS5yZWYuY3VycmVudCA9PT0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICAgICAgICApO1xuICAgICAgICBhY3RpdmVJdGVtID09PSBudWxsIHx8IGFjdGl2ZUl0ZW0gPT09IHZvaWQgMCB8fCAoX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID0gYWN0aXZlSXRlbS5yZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlID09PSB2b2lkIDAgfHwgX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlLnNjcm9sbEludG9WaWV3KHtcbiAgICAgICAgICAgIGJsb2NrOiAnbmVhcmVzdCdcbiAgICAgICAgfSk7XG4gICAgfSwgW1xuICAgICAgICBnZXRJdGVtc1xuICAgIF0pO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KCQwMWI5YyRQcmltaXRpdmUuZGl2LCAkMDFiOWMkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtaGlkZGVuXCI6IHRydWVcbiAgICB9LCBzY3JvbGxJbmRpY2F0b3JQcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgc3R5bGU6IHtcbiAgICAgICAgICAgIGZsZXhTaHJpbms6IDAsXG4gICAgICAgICAgICAuLi5zY3JvbGxJbmRpY2F0b3JQcm9wcy5zdHlsZVxuICAgICAgICB9LFxuICAgICAgICBvblBvaW50ZXJEb3duOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyRG93biwgKCk9PntcbiAgICAgICAgICAgIGlmIChhdXRvU2Nyb2xsVGltZXJSZWYuY3VycmVudCA9PT0gbnVsbCkgYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0SW50ZXJ2YWwob25BdXRvU2Nyb2xsLCA1MCk7XG4gICAgICAgIH0pLFxuICAgICAgICBvblBvaW50ZXJNb3ZlOiAkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMoc2Nyb2xsSW5kaWNhdG9yUHJvcHMub25Qb2ludGVyTW92ZSwgKCk9PntcbiAgICAgICAgICAgIHZhciBfY29udGVudENvbnRleHQkb25JdGUzO1xuICAgICAgICAgICAgKF9jb250ZW50Q29udGV4dCRvbkl0ZTMgPSBjb250ZW50Q29udGV4dC5vbkl0ZW1MZWF2ZSkgPT09IG51bGwgfHwgX2NvbnRlbnRDb250ZXh0JG9uSXRlMyA9PT0gdm9pZCAwIHx8IF9jb250ZW50Q29udGV4dCRvbkl0ZTMuY2FsbChjb250ZW50Q29udGV4dCk7XG4gICAgICAgICAgICBpZiAoYXV0b1Njcm9sbFRpbWVyUmVmLmN1cnJlbnQgPT09IG51bGwpIGF1dG9TY3JvbGxUaW1lclJlZi5jdXJyZW50ID0gd2luZG93LnNldEludGVydmFsKG9uQXV0b1Njcm9sbCwgNTApO1xuICAgICAgICB9KSxcbiAgICAgICAgb25Qb2ludGVyTGVhdmU6ICQwMWI5YyRjb21wb3NlRXZlbnRIYW5kbGVycyhzY3JvbGxJbmRpY2F0b3JQcm9wcy5vblBvaW50ZXJMZWF2ZSwgKCk9PntcbiAgICAgICAgICAgIGNsZWFyQXV0b1Njcm9sbFRpbWVyKCk7XG4gICAgICAgIH0pXG4gICAgfSkpO1xufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBTZWxlY3RTZXBhcmF0b3JcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNFUEFSQVRPUl9OQU1FID0gJ1NlbGVjdFNlcGFyYXRvcic7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWJhNGIxZGYwN2NiMWQzID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVTZWxlY3Q6IF9fc2NvcGVTZWxlY3QgLCAuLi5zZXBhcmF0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFByaW1pdGl2ZS5kaXYsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7XG4gICAgICAgIFwiYXJpYS1oaWRkZW5cIjogdHJ1ZVxuICAgIH0sIHNlcGFyYXRvclByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViYTRiMWRmMDdjYjFkMywge1xuICAgIGRpc3BsYXlOYW1lOiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VQQVJBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogU2VsZWN0QXJyb3dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUgPSAnU2VsZWN0QXJyb3cnO1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjggPSAvKiNfX1BVUkVfXyovICQwMWI5YyRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZVNlbGVjdDogX19zY29wZVNlbGVjdCAsIC4uLmFycm93UHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHBvcHBlclNjb3BlID0gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVBvcHBlclNjb3BlKF9fc2NvcGVTZWxlY3QpO1xuICAgIGNvbnN0IGNvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCgkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQVJST1dfTkFNRSwgX19zY29wZVNlbGVjdCk7XG4gICAgY29uc3QgY29udGVudENvbnRleHQgPSAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGVudENvbnRleHQoJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUUsIF9fc2NvcGVTZWxlY3QpO1xuICAgIHJldHVybiBjb250ZXh0Lm9wZW4gJiYgY29udGVudENvbnRleHQucG9zaXRpb24gPT09ICdwb3BwZXInID8gLyojX19QVVJFX18qLyAkMDFiOWMkY3JlYXRlRWxlbWVudCgkMDFiOWMkQXJyb3csICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgcG9wcGVyU2NvcGUsIGFycm93UHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSkgOiBudWxsO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDMxNGY0Y2I4ZjgwOTk2MjgsIHtcbiAgICBkaXNwbGF5TmFtZTogJGNjN2UwNWE0NTkwMGU3M2YkdmFyJEFSUk9XX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0ID0gLyojX19QVVJFX18qLyAkMDFiOWMkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IHZhbHVlOiB2YWx1ZSAsIC4uLnNlbGVjdFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCByZWYgPSAkMDFiOWMkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQwMWI5YyR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCByZWYpO1xuICAgIGNvbnN0IHByZXZWYWx1ZSA9ICQwMWI5YyR1c2VQcmV2aW91cyh2YWx1ZSk7IC8vIEJ1YmJsZSB2YWx1ZSBjaGFuZ2UgdG8gcGFyZW50cyAoZS5nIGZvcm0gY2hhbmdlIGV2ZW50KVxuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgY29uc3Qgc2VsZWN0ID0gcmVmLmN1cnJlbnQ7XG4gICAgICAgIGNvbnN0IHNlbGVjdFByb3RvID0gd2luZG93LkhUTUxTZWxlY3RFbGVtZW50LnByb3RvdHlwZTtcbiAgICAgICAgY29uc3QgZGVzY3JpcHRvciA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Ioc2VsZWN0UHJvdG8sICd2YWx1ZScpO1xuICAgICAgICBjb25zdCBzZXRWYWx1ZSA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgICAgICBpZiAocHJldlZhbHVlICE9PSB2YWx1ZSAmJiBzZXRWYWx1ZSkge1xuICAgICAgICAgICAgY29uc3QgZXZlbnQgPSBuZXcgRXZlbnQoJ2NoYW5nZScsIHtcbiAgICAgICAgICAgICAgICBidWJibGVzOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHNldFZhbHVlLmNhbGwoc2VsZWN0LCB2YWx1ZSk7XG4gICAgICAgICAgICBzZWxlY3QuZGlzcGF0Y2hFdmVudChldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXG4gICAgICAgIHByZXZWYWx1ZSxcbiAgICAgICAgdmFsdWVcbiAgICBdKTtcbiAgICAvKipcbiAgICogV2UgcHVycG9zZWZ1bGx5IHVzZSBhIGBzZWxlY3RgIGhlcmUgdG8gc3VwcG9ydCBmb3JtIGF1dG9maWxsIGFzIG11Y2hcbiAgICogYXMgcG9zc2libGUuXG4gICAqXG4gICAqIFdlIHB1cnBvc2VmdWxseSBkbyBub3QgYWRkIHRoZSBgdmFsdWVgIGF0dHJpYnV0ZSBoZXJlIHRvIGFsbG93IHRoZSB2YWx1ZVxuICAgKiB0byBiZSBzZXQgcHJvZ3JhbWF0aWNhbGx5IGFuZCBidWJibGUgdG8gYW55IHBhcmVudCBmb3JtIGBvbkNoYW5nZWAgZXZlbnQuXG4gICAqIEFkZGluZyB0aGUgYHZhbHVlYCB3aWxsIGNhdXNlIFJlYWN0IHRvIGNvbnNpZGVyIHRoZSBwcm9ncmFtYXRpY1xuICAgKiBkaXNwYXRjaCBhIGR1cGxpY2F0ZSBhbmQgaXQgd2lsbCBnZXQgc3dhbGxvd2VkLlxuICAgKlxuICAgKiBXZSB1c2UgYFZpc3VhbGx5SGlkZGVuYCByYXRoZXIgdGhhbiBgZGlzcGxheTogXCJub25lXCJgIGJlY2F1c2UgU2FmYXJpIGF1dG9maWxsXG4gICAqIHdvbid0IHdvcmsgb3RoZXJ3aXNlLlxuICAgKi8gcmV0dXJuIC8qI19fUFVSRV9fKi8gJDAxYjljJGNyZWF0ZUVsZW1lbnQoJDAxYjljJFZpc3VhbGx5SGlkZGVuLCB7XG4gICAgICAgIGFzQ2hpbGQ6IHRydWVcbiAgICB9LCAvKiNfX1BVUkVfXyovICQwMWI5YyRjcmVhdGVFbGVtZW50KFwic2VsZWN0XCIsICQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgc2VsZWN0UHJvcHMsIHtcbiAgICAgICAgcmVmOiBjb21wb3NlZFJlZnMsXG4gICAgICAgIGRlZmF1bHRWYWx1ZTogdmFsdWVcbiAgICB9KSkpO1xufSk7XG4kY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0LmRpc3BsYXlOYW1lID0gJ0J1YmJsZVNlbGVjdCc7XG5mdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlVHlwZWFoZWFkU2VhcmNoKG9uU2VhcmNoQ2hhbmdlKSB7XG4gICAgY29uc3QgaGFuZGxlU2VhcmNoQ2hhbmdlID0gJDAxYjljJHVzZUNhbGxiYWNrUmVmKG9uU2VhcmNoQ2hhbmdlKTtcbiAgICBjb25zdCBzZWFyY2hSZWYgPSAkMDFiOWMkdXNlUmVmKCcnKTtcbiAgICBjb25zdCB0aW1lclJlZiA9ICQwMWI5YyR1c2VSZWYoMCk7XG4gICAgY29uc3QgaGFuZGxlVHlwZWFoZWFkU2VhcmNoID0gJDAxYjljJHVzZUNhbGxiYWNrKChrZXkpPT57XG4gICAgICAgIGNvbnN0IHNlYXJjaCA9IHNlYXJjaFJlZi5jdXJyZW50ICsga2V5O1xuICAgICAgICBoYW5kbGVTZWFyY2hDaGFuZ2Uoc2VhcmNoKTtcbiAgICAgICAgKGZ1bmN0aW9uIHVwZGF0ZVNlYXJjaCh2YWx1ZSkge1xuICAgICAgICAgICAgc2VhcmNoUmVmLmN1cnJlbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7IC8vIFJlc2V0IGBzZWFyY2hSZWZgIDEgc2Vjb25kIGFmdGVyIGl0IHdhcyBsYXN0IHVwZGF0ZWRcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gJycpIHRpbWVyUmVmLmN1cnJlbnQgPSB3aW5kb3cuc2V0VGltZW91dCgoKT0+dXBkYXRlU2VhcmNoKCcnKVxuICAgICAgICAgICAgLCAxMDAwKTtcbiAgICAgICAgfSkoc2VhcmNoKTtcbiAgICB9LCBbXG4gICAgICAgIGhhbmRsZVNlYXJjaENoYW5nZVxuICAgIF0pO1xuICAgIGNvbnN0IHJlc2V0VHlwZWFoZWFkID0gJDAxYjljJHVzZUNhbGxiYWNrKCgpPT57XG4gICAgICAgIHNlYXJjaFJlZi5jdXJyZW50ID0gJyc7XG4gICAgICAgIHdpbmRvdy5jbGVhclRpbWVvdXQodGltZXJSZWYuY3VycmVudCk7XG4gICAgfSwgW10pO1xuICAgICQwMWI5YyR1c2VFZmZlY3QoKCk9PntcbiAgICAgICAgcmV0dXJuICgpPT53aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVyUmVmLmN1cnJlbnQpXG4gICAgICAgIDtcbiAgICB9LCBbXSk7XG4gICAgcmV0dXJuIFtcbiAgICAgICAgc2VhcmNoUmVmLFxuICAgICAgICBoYW5kbGVUeXBlYWhlYWRTZWFyY2gsXG4gICAgICAgIHJlc2V0VHlwZWFoZWFkXG4gICAgXTtcbn1cbi8qKlxuICogVGhpcyBpcyB0aGUgXCJtZWF0XCIgb2YgdGhlIHR5cGVhaGVhZCBtYXRjaGluZyBsb2dpYy4gSXQgdGFrZXMgaW4gYSBsaXN0IG9mIGl0ZW1zLFxuICogdGhlIHNlYXJjaCBhbmQgdGhlIGN1cnJlbnQgaXRlbSwgYW5kIHJldHVybnMgdGhlIG5leHQgaXRlbSAob3IgYHVuZGVmaW5lZGApLlxuICpcbiAqIFdlIG5vcm1hbGl6ZSB0aGUgc2VhcmNoIGJlY2F1c2UgaWYgYSB1c2VyIGhhcyByZXBlYXRlZGx5IHByZXNzZWQgYSBjaGFyYWN0ZXIsXG4gKiB3ZSB3YW50IHRoZSBleGFjdCBzYW1lIGJlaGF2aW9yIGFzIGlmIHdlIG9ubHkgaGFkIHRoYXQgb25lIGNoYXJhY3RlclxuICogKGllLiBjeWNsZSB0aHJvdWdoIGl0ZW1zIHN0YXJ0aW5nIHdpdGggdGhhdCBjaGFyYWN0ZXIpXG4gKlxuICogV2UgYWxzbyByZW9yZGVyIHRoZSBpdGVtcyBieSB3cmFwcGluZyB0aGUgYXJyYXkgYXJvdW5kIHRoZSBjdXJyZW50IGl0ZW0uXG4gKiBUaGlzIGlzIHNvIHdlIGFsd2F5cyBsb29rIGZvcndhcmQgZnJvbSB0aGUgY3VycmVudCBpdGVtLCBhbmQgcGlja2luZyB0aGUgZmlyc3RcbiAqIGl0ZW0gd2lsbCBhbHdheXMgYmUgdGhlIGNvcnJlY3Qgb25lLlxuICpcbiAqIEZpbmFsbHksIGlmIHRoZSBub3JtYWxpemVkIHNlYXJjaCBpcyBleGFjdGx5IG9uZSBjaGFyYWN0ZXIsIHdlIGV4Y2x1ZGUgdGhlXG4gKiBjdXJyZW50IGl0ZW0gZnJvbSB0aGUgdmFsdWVzIGJlY2F1c2Ugb3RoZXJ3aXNlIGl0IHdvdWxkIGJlIHRoZSBmaXJzdCB0byBtYXRjaCBhbHdheXNcbiAqIGFuZCBmb2N1cyB3b3VsZCBuZXZlciBtb3ZlLiBUaGlzIGlzIGFzIG9wcG9zZWQgdG8gdGhlIHJlZ3VsYXIgY2FzZSwgd2hlcmUgd2VcbiAqIGRvbid0IHdhbnQgZm9jdXMgdG8gbW92ZSBpZiB0aGUgY3VycmVudCBpdGVtIHN0aWxsIG1hdGNoZXMuXG4gKi8gZnVuY3Rpb24gJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbShpdGVtcywgc2VhcmNoLCBjdXJyZW50SXRlbSkge1xuICAgIGNvbnN0IGlzUmVwZWF0ZWQgPSBzZWFyY2gubGVuZ3RoID4gMSAmJiBBcnJheS5mcm9tKHNlYXJjaCkuZXZlcnkoKGNoYXIpPT5jaGFyID09PSBzZWFyY2hbMF1cbiAgICApO1xuICAgIGNvbnN0IG5vcm1hbGl6ZWRTZWFyY2ggPSBpc1JlcGVhdGVkID8gc2VhcmNoWzBdIDogc2VhcmNoO1xuICAgIGNvbnN0IGN1cnJlbnRJdGVtSW5kZXggPSBjdXJyZW50SXRlbSA/IGl0ZW1zLmluZGV4T2YoY3VycmVudEl0ZW0pIDogLTE7XG4gICAgbGV0IHdyYXBwZWRJdGVtcyA9ICRjYzdlMDVhNDU5MDBlNzNmJHZhciR3cmFwQXJyYXkoaXRlbXMsIE1hdGgubWF4KGN1cnJlbnRJdGVtSW5kZXgsIDApKTtcbiAgICBjb25zdCBleGNsdWRlQ3VycmVudEl0ZW0gPSBub3JtYWxpemVkU2VhcmNoLmxlbmd0aCA9PT0gMTtcbiAgICBpZiAoZXhjbHVkZUN1cnJlbnRJdGVtKSB3cmFwcGVkSXRlbXMgPSB3cmFwcGVkSXRlbXMuZmlsdGVyKCh2KT0+diAhPT0gY3VycmVudEl0ZW1cbiAgICApO1xuICAgIGNvbnN0IG5leHRJdGVtID0gd3JhcHBlZEl0ZW1zLmZpbmQoKGl0ZW0pPT5pdGVtLnRleHRWYWx1ZS50b0xvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgobm9ybWFsaXplZFNlYXJjaC50b0xvd2VyQ2FzZSgpKVxuICAgICk7XG4gICAgcmV0dXJuIG5leHRJdGVtICE9PSBjdXJyZW50SXRlbSA/IG5leHRJdGVtIDogdW5kZWZpbmVkO1xufVxuLyoqXG4gKiBXcmFwcyBhbiBhcnJheSBhcm91bmQgaXRzZWxmIGF0IGEgZ2l2ZW4gc3RhcnQgaW5kZXhcbiAqIEV4YW1wbGU6IGB3cmFwQXJyYXkoWydhJywgJ2InLCAnYycsICdkJ10sIDIpID09PSBbJ2MnLCAnZCcsICdhJywgJ2InXWBcbiAqLyBmdW5jdGlvbiAkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkd3JhcEFycmF5KGFycmF5LCBzdGFydEluZGV4KSB7XG4gICAgcmV0dXJuIGFycmF5Lm1hcCgoXywgaW5kZXgpPT5hcnJheVsoc3RhcnRJbmRleCArIGluZGV4KSAlIGFycmF5Lmxlbmd0aF1cbiAgICApO1xufVxuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDNhYzFlODhhMWMwYjlmMTtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjA7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjA0YTYxMjk4YTQ3YTQwZiA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYjJhZjZjOTk0NDI5NjIxMztcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2Q7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDVjNmMwOGRjMmQzY2E3ID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQ7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWIyZmNmZGJkN2JhOTdkNCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmODtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2ZDA4NzczZDJlNjZmOGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTY7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5O1xuY29uc3QgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgPSAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmI5MTk4ZGUxOWFjY2ZlNjtcbmNvbnN0ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyZjYwZDNlYzlhZDQ2OGYyID0gJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ4MTE3OTI3NjU4YWY2ZDc7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODk7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMWZmM2MzZjA4YWU5NjNjMCA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDM7XG5jb25zdCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSA9ICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzMTRmNGNiOGY4MDk5NjI4O1xuXG5cblxuXG5leHBvcnQgeyRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQyODY3MjdhNzVkYzAzOWJkIGFzIGNyZWF0ZVNlbGVjdFNjb3BlLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZWY5YjFhNTllNTkyMjg4ZiBhcyBTZWxlY3QsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzYWMxZTg4YTFjMGI5ZjEgYXMgU2VsZWN0VHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAgYXMgU2VsZWN0VmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5OWI0MDBjYWJiNThjNTE1IGFzIFNlbGVjdEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMmFmNmM5OTQ0Mjk2MjEzIGFzIFNlbGVjdFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGM5NzNhNGIzY2I4NmEwM2QgYXMgU2VsZWN0Q29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDllZDZlN2I0MDI0OGQzNmQgYXMgU2VsZWN0Vmlld3BvcnQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlZTI1YTMzNGM1NWRlMWY0IGFzIFNlbGVjdEdyb3VwLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZjY3MzM4ZDI5YmQ5NzJmOCBhcyBTZWxlY3RMYWJlbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYgYXMgU2VsZWN0SXRlbSwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDM1NzJmYjBmYjgyMWZmNDkgYXMgU2VsZWN0SXRlbVRleHQsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2YjkxOThkZTE5YWNjZmU2IGFzIFNlbGVjdEl0ZW1JbmRpY2F0b3IsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkODExNzkyNzY1OGFmNmQ3IGFzIFNlbGVjdFNjcm9sbFVwQnV0dG9uLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZmY5NTFlNDc2YzEyMTg5IGFzIFNlbGVjdFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRlYmE0YjFkZjA3Y2IxZDMgYXMgU2VsZWN0U2VwYXJhdG9yLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMzE0ZjRjYjhmODA5OTYyOCBhcyBTZWxlY3RBcnJvdywgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkgYXMgUm9vdCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgYXMgVHJpZ2dlciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDRjOGQxYTU3YTc2MWVmOTQgYXMgVmFsdWUsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmMDRhNjEyOThhNDdhNDBmIGFzIEljb24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIGFzIFBvcnRhbCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgYXMgQ29udGVudCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGQ1YzZjMDhkYzJkM2NhNyBhcyBWaWV3cG9ydCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGViMmZjZmRiZDdiYTk3ZDQgYXMgR3JvdXAsICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiBhcyBJdGVtLCAkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDZlNWJmOWM0M2VhOTMxOSBhcyBJdGVtVGV4dCwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGMzNDY4ZTI3MTRkMTc1ZmEgYXMgSXRlbUluZGljYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIgYXMgU2Nyb2xsVXBCdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRiZjFhZWRjMzAzOWM4ZDYzIGFzIFNjcm9sbERvd25CdXR0b24sICRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQxZmYzYzNmMDhhZTk2M2MwIGFzIFNlcGFyYXRvciwgJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDIxYjA3YzhmMjc0YWViZDUgYXMgQXJyb3d9O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA4NVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA4NSlcIj5cbjxwYXRoIGQ9XCJNMTEuOTk5NyAxOC43NUMxMS43ODcxIDE4Ljc1IDExLjYwOSAxOC42NzgxIDExLjQ2NTQgMTguNTM0NEMxMS4zMjE4IDE4LjM5MDYgMTEuMjUgMTguMjEyNSAxMS4yNSAxOFYxMi43NUg1Ljk5OTk3QzUuNzg3NDcgMTIuNzUgNS42MDkzNiAxMi42NzggNS40NjU2MyAxMi41MzQyQzUuMzIxODggMTIuMzkwNCA1LjI1IDEyLjIxMjIgNS4yNSAxMS45OTk3QzUuMjUgMTEuNzg3MSA1LjMyMTg4IDExLjYwOSA1LjQ2NTYzIDExLjQ2NTRDNS42MDkzNiAxMS4zMjE4IDUuNzg3NDcgMTEuMjUgNS45OTk5NyAxMS4yNUgxMS4yNVY1Ljk5OTk3QzExLjI1IDUuNzg3NDcgMTEuMzIxOSA1LjYwOTM1IDExLjQ2NTcgNS40NjU2QzExLjYwOTUgNS4zMjE4NyAxMS43ODc3IDUuMjUgMTIuMDAwMyA1LjI1QzEyLjIxMjkgNS4yNSAxMi4zOTEgNS4zMjE4NyAxMi41MzQ2IDUuNDY1NkMxMi42NzgyIDUuNjA5MzUgMTIuNzQ5OSA1Ljc4NzQ3IDEyLjc0OTkgNS45OTk5N1YxMS4yNUgxOEMxOC4yMTI1IDExLjI1IDE4LjM5MDYgMTEuMzIxOSAxOC41MzQ0IDExLjQ2NTdDMTguNjc4MSAxMS42MDk1IDE4Ljc1IDExLjc4NzcgMTguNzUgMTIuMDAwM0MxOC43NSAxMi4yMTI5IDE4LjY3ODEgMTIuMzkxIDE4LjUzNDQgMTIuNTM0NkMxOC4zOTA2IDEyLjY3ODIgMTguMjEyNSAxMi43NSAxOCAxMi43NUgxMi43NDk5VjE4QzEyLjc0OTkgMTguMjEyNSAxMi42NzggMTguMzkwNiAxMi41MzQyIDE4LjUzNDRDMTIuMzkwNCAxOC42NzgxIDEyLjIxMjIgMTguNzUgMTEuOTk5NyAxOC43NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzIwMl85MDk0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfMjAyXzkwOTQpXCI+XG48cGF0aCBkPVwiTTEyLjAwMTYgMjEuNUMxMC42ODc3IDIxLjUgOS40NTI2OCAyMS4yNTA2IDguMjk2NTUgMjAuNzUyQzcuMTQwNCAyMC4yNTMzIDYuMTM0NzIgMTkuNTc2NSA1LjI3OTUgMTguNzIxN0M0LjQyNDI3IDE3Ljg2NjkgMy43NDcyMSAxNi44NjE2IDMuMjQ4MzMgMTUuNzA2QzIuNzQ5NDQgMTQuNTUwNCAyLjUgMTMuMzE1NiAyLjUgMTIuMDAxN0MyLjUgMTAuNjg3NyAyLjc0OTMzIDkuNDUyNjggMy4yNDggOC4yOTY1NUMzLjc0NjY3IDcuMTQwNCA0LjQyMzQyIDYuMTM0NzIgNS4yNzgyNSA1LjI3OTVDNi4xMzMxIDQuNDI0MjcgNy4xMzgzNCAzLjc0NzIxIDguMjkzOTggMy4yNDgzM0M5LjQ0OTU5IDIuNzQ5NDQgMTAuNjg0NCAyLjUgMTEuOTk4MyAyLjVDMTMuMzEyMiAyLjUgMTQuNTQ3MyAyLjc0OTMzIDE1LjcwMzQgMy4yNDhDMTYuODU5NiAzLjc0NjY3IDE3Ljg2NTIgNC40MjM0MiAxOC43MjA1IDUuMjc4MjVDMTkuNTc1NyA2LjEzMzEgMjAuMjUyNyA3LjEzODM0IDIwLjc1MTYgOC4yOTM5OEMyMS4yNTA1IDkuNDQ5NTkgMjEuNSAxMC42ODQ0IDIxLjUgMTEuOTk4M0MyMS41IDEzLjMxMjIgMjEuMjUwNiAxNC41NDczIDIwLjc1MiAxNS43MDM0QzIwLjI1MzMgMTYuODU5NiAxOS41NzY1IDE3Ljg2NTIgMTguNzIxNyAxOC43MjA1QzE3Ljg2NjkgMTkuNTc1NyAxNi44NjE2IDIwLjI1MjcgMTUuNzA2IDIwLjc1MTZDMTQuNTUwNCAyMS4yNTA1IDEzLjMxNTYgMjEuNSAxMi4wMDE2IDIxLjVaTTEyIDIwQzE0LjIzMzMgMjAgMTYuMTI1IDE5LjIyNSAxNy42NzUgMTcuNjc1QzE5LjIyNSAxNi4xMjUgMjAgMTQuMjMzMyAyMCAxMkMyMCAxMS4wNjE4IDE5LjgzOTcgMTAuMTU4MyAxOS41MTkyIDkuMjg5NThDMTkuMTk4NyA4LjQyMDg2IDE4Ljc0MSA3LjYyNjg4IDE4LjE0NjEgNi45MDc2NUw2LjkwNzY1IDE4LjE0NjFDNy42MjY4OCAxOC43NDc0IDguNDIwODYgMTkuMjA2NyA5LjI4OTU4IDE5LjUyNEMxMC4xNTgzIDE5Ljg0MTMgMTEuMDYxOCAyMCAxMiAyMFpNNS44NTM4MyAxNy4wOTIzTDE3LjA5MjMgNS44NTM4MkMxNi4zNzk1IDUuMjQ2MTQgMTUuNTg3NyA0Ljc4NTI0IDE0LjcxNjkgNC40NzExM0MxMy44NDYxIDQuMTU3MDMgMTIuOTQwNCAzLjk5OTk3IDEyIDMuOTk5OTdDOS43NjY2NCAzLjk5OTk3IDcuODc0OTggNC43NzQ5OCA2LjMyNDk4IDYuMzI0OThDNC43NzQ5OCA3Ljg3NDk4IDMuOTk5OTggOS43NjY2NCAzLjk5OTk4IDEyQzMuOTk5OTggMTIuOTM4MiA0LjE1ODYzIDEzLjg0MTcgNC40NzU5NSAxNC43MTA0QzQuNzkzMjUgMTUuNTc5MSA1LjI1MjU0IDE2LjM3MzEgNS44NTM4MyAxNy4wOTIzWlwiIGZpbGw9XCIjNDI0NTRCXCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDcwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDcwKVwiPlxuPHBhdGggZD1cIk0zIDE0LjVDMi44NjY2NyAxNC41IDIuNzUgMTQuNDUgMi42NSAxNC4zNUMyLjU1IDE0LjI1IDIuNSAxNC4xMzMzIDIuNSAxNEMyLjUgMTMuODY2NyAyLjU1IDEzLjc1IDIuNjUgMTMuNjVDMi43NSAxMy41NSAyLjg2NjY3IDEzLjUgMyAxMy41QzMuMTMzMzMgMTMuNSAzLjI1IDEzLjU1IDMuMzUgMTMuNjVDMy40NSAxMy43NSAzLjUgMTMuODY2NyAzLjUgMTRDMy41IDE0LjEzMzMgMy40NSAxNC4yNSAzLjM1IDE0LjM1QzMuMjUgMTQuNDUgMy4xMzMzMyAxNC41IDMgMTQuNVpNMyAxMC41QzIuODY2NjcgMTAuNSAyLjc1IDEwLjQ1IDIuNjUgMTAuMzVDMi41NSAxMC4yNSAyLjUgMTAuMTMzMyAyLjUgMTBDMi41IDkuODY2NjcgMi41NSA5Ljc1IDIuNjUgOS42NUMyLjc1IDkuNTUgMi44NjY2NyA5LjUgMyA5LjVDMy4xMzMzMyA5LjUgMy4yNSA5LjU1IDMuMzUgOS42NUMzLjQ1IDkuNzUgMy41IDkuODY2NjcgMy41IDEwQzMuNSAxMC4xMzMzIDMuNDUgMTAuMjUgMy4zNSAxMC4zNUMzLjI1IDEwLjQ1IDMuMTMzMzMgMTAuNSAzIDEwLjVaTTYgMTguOTIzMUM1LjczODQ3IDE4LjkyMzEgNS41MTkyMyAxOC44MzQ2IDUuMzQyMyAxOC42NTc3QzUuMTY1MzggMTguNDgwOCA1LjA3NjkzIDE4LjI2MTUgNS4wNzY5MyAxOEM1LjA3NjkzIDE3LjczODUgNS4xNjUzOCAxNy41MTkyIDUuMzQyMyAxNy4zNDIzQzUuNTE5MjMgMTcuMTY1NCA1LjczODQ3IDE3LjA3NjkgNiAxNy4wNzY5QzYuMjYxNTMgMTcuMDc2OSA2LjQ4MDc3IDE3LjE2NTQgNi42NTc3IDE3LjM0MjNDNi44MzQ2MiAxNy41MTkyIDYuOTIzMDggMTcuNzM4NSA2LjkyMzA4IDE4QzYuOTIzMDggMTguMjYxNSA2LjgzNDYyIDE4LjQ4MDggNi42NTc3IDE4LjY1NzdDNi40ODA3NyAxOC44MzQ2IDYuMjYxNTMgMTguOTIzMSA2IDE4LjkyMzFaTTYgMTQuOTIzMUM1LjczODQ3IDE0LjkyMzEgNS41MTkyMyAxNC44MzQ2IDUuMzQyMyAxNC42NTc3QzUuMTY1MzggMTQuNDgwOCA1LjA3NjkzIDE0LjI2MTUgNS4wNzY5MyAxNEM1LjA3NjkzIDEzLjczODUgNS4xNjUzOCAxMy41MTkyIDUuMzQyMyAxMy4zNDIzQzUuNTE5MjMgMTMuMTY1NCA1LjczODQ3IDEzLjA3NjkgNiAxMy4wNzY5QzYuMjYxNTMgMTMuMDc2OSA2LjQ4MDc3IDEzLjE2NTQgNi42NTc3IDEzLjM0MjNDNi44MzQ2MiAxMy41MTkyIDYuOTIzMDggMTMuNzM4NSA2LjkyMzA4IDE0QzYuOTIzMDggMTQuMjYxNSA2LjgzNDYyIDE0LjQ4MDggNi42NTc3IDE0LjY1NzdDNi40ODA3NyAxNC44MzQ2IDYuMjYxNTMgMTQuOTIzMSA2IDE0LjkyMzFaTTYgMTAuOTIzMUM1LjczODQ3IDEwLjkyMzEgNS41MTkyMyAxMC44MzQ2IDUuMzQyMyAxMC42NTc3QzUuMTY1MzggMTAuNDgwOCA1LjA3NjkzIDEwLjI2MTUgNS4wNzY5MyAxMEM1LjA3NjkzIDkuNzM4NDcgNS4xNjUzOCA5LjUxOTI0IDUuMzQyMyA5LjM0MjMyQzUuNTE5MjMgOS4xNjUzOSA1LjczODQ3IDkuMDc2OTIgNiA5LjA3NjkyQzYuMjYxNTMgOS4wNzY5MiA2LjQ4MDc3IDkuMTY1MzkgNi42NTc3IDkuMzQyMzJDNi44MzQ2MiA5LjUxOTI0IDYuOTIzMDggOS43Mzg0NyA2LjkyMzA4IDEwQzYuOTIzMDggMTAuMjYxNSA2LjgzNDYyIDEwLjQ4MDggNi42NTc3IDEwLjY1NzdDNi40ODA3NyAxMC44MzQ2IDYuMjYxNTMgMTAuOTIzMSA2IDEwLjkyMzFaTTYgNi45MjMwOEM1LjczODQ3IDYuOTIzMDggNS41MTkyMyA2LjgzNDYxIDUuMzQyMyA2LjY1NzY4QzUuMTY1MzggNi40ODA3NiA1LjA3NjkzIDYuMjYxNTMgNS4wNzY5MyA2QzUuMDc2OTMgNS43Mzg0NyA1LjE2NTM4IDUuNTE5MjQgNS4zNDIzIDUuMzQyMzJDNS41MTkyMyA1LjE2NTM5IDUuNzM4NDcgNS4wNzY5MyA2IDUuMDc2OTNDNi4yNjE1MyA1LjA3NjkzIDYuNDgwNzcgNS4xNjUzOSA2LjY1NzcgNS4zNDIzMkM2LjgzNDYyIDUuNTE5MjQgNi45MjMwOCA1LjczODQ3IDYuOTIzMDggNkM2LjkyMzA4IDYuMjYxNTMgNi44MzQ2MiA2LjQ4MDc2IDYuNjU3NyA2LjY1NzY4QzYuNDgwNzcgNi44MzQ2MSA2LjI2MTUzIDYuOTIzMDggNiA2LjkyMzA4Wk0xMC4wMDIzIDE1LjM0NjJDOS42Mjg5NyAxNS4zNDYyIDkuMzEwOTEgMTUuMjE1NSA5LjA0ODA4IDE0Ljk1NDJDOC43ODUyNiAxNC42OTI5IDguNjUzODUgMTQuMzc1NiA4LjY1Mzg1IDE0LjAwMjNDOC42NTM4NSAxMy42MjkgOC43ODQ1MSAxMy4zMTA5IDkuMDQ1ODMgMTMuMDQ4MUM5LjMwNzE0IDEyLjc4NTMgOS42MjQ0NCAxMi42NTM4IDkuOTk3NzMgMTIuNjUzOEMxMC4zNzEgMTIuNjUzOCAxMC42ODkxIDEyLjc4NDUgMTAuOTUxOSAxMy4wNDU4QzExLjIxNDcgMTMuMzA3MSAxMS4zNDYyIDEzLjYyNDQgMTEuMzQ2MiAxMy45OTc3QzExLjM0NjIgMTQuMzcxIDExLjIxNTUgMTQuNjg5MSAxMC45NTQyIDE0Ljk1MTlDMTAuNjkyOSAxNS4yMTQ3IDEwLjM3NTYgMTUuMzQ2MiAxMC4wMDIzIDE1LjM0NjJaTTEwLjAwMjMgMTEuMzQ2MkM5LjYyODk3IDExLjM0NjIgOS4zMTA5MSAxMS4yMTU1IDkuMDQ4MDggMTAuOTU0MkM4Ljc4NTI2IDEwLjY5MjkgOC42NTM4NSAxMC4zNzU2IDguNjUzODUgMTAuMDAyM0M4LjY1Mzg1IDkuNjI4OTcgOC43ODQ1MSA5LjMxMDkxIDkuMDQ1ODMgOS4wNDgwOEM5LjMwNzE0IDguNzg1MjYgOS42MjQ0NCA4LjY1Mzg1IDkuOTk3NzMgOC42NTM4NUMxMC4zNzEgOC42NTM4NSAxMC42ODkxIDguNzg0NTEgMTAuOTUxOSA5LjA0NTgzQzExLjIxNDcgOS4zMDcxMyAxMS4zNDYyIDkuNjI0NDIgMTEuMzQ2MiA5Ljk5NzczQzExLjM0NjIgMTAuMzcxIDExLjIxNTUgMTAuNjg5MSAxMC45NTQyIDEwLjk1MTlDMTAuNjkyOSAxMS4yMTQ3IDEwLjM3NTYgMTEuMzQ2MiAxMC4wMDIzIDExLjM0NjJaTTEwIDE4LjkyMzFDOS43Mzg0NyAxOC45MjMxIDkuNTE5MjMgMTguODM0NiA5LjM0MjMgMTguNjU3N0M5LjE2NTM4IDE4LjQ4MDggOS4wNzY5MiAxOC4yNjE1IDkuMDc2OTIgMThDOS4wNzY5MiAxNy43Mzg1IDkuMTY1MzggMTcuNTE5MiA5LjM0MjMgMTcuMzQyM0M5LjUxOTIzIDE3LjE2NTQgOS43Mzg0NyAxNy4wNzY5IDEwIDE3LjA3NjlDMTAuMjYxNSAxNy4wNzY5IDEwLjQ4MDggMTcuMTY1NCAxMC42NTc3IDE3LjM0MjNDMTAuODM0NiAxNy41MTkyIDEwLjkyMzEgMTcuNzM4NSAxMC45MjMxIDE4QzEwLjkyMzEgMTguMjYxNSAxMC44MzQ2IDE4LjQ4MDggMTAuNjU3NyAxOC42NTc3QzEwLjQ4MDggMTguODM0NiAxMC4yNjE1IDE4LjkyMzEgMTAgMTguOTIzMVpNMTAgNi45MjMwOEM5LjczODQ3IDYuOTIzMDggOS41MTkyMyA2LjgzNDYxIDkuMzQyMyA2LjY1NzY4QzkuMTY1MzggNi40ODA3NiA5LjA3NjkyIDYuMjYxNTMgOS4wNzY5MiA2QzkuMDc2OTIgNS43Mzg0NyA5LjE2NTM4IDUuNTE5MjQgOS4zNDIzIDUuMzQyMzJDOS41MTkyMyA1LjE2NTM5IDkuNzM4NDcgNS4wNzY5MyAxMCA1LjA3NjkzQzEwLjI2MTUgNS4wNzY5MyAxMC40ODA4IDUuMTY1MzkgMTAuNjU3NyA1LjM0MjMyQzEwLjgzNDYgNS41MTkyNCAxMC45MjMxIDUuNzM4NDcgMTAuOTIzMSA2QzEwLjkyMzEgNi4yNjE1MyAxMC44MzQ2IDYuNDgwNzYgMTAuNjU3NyA2LjY1NzY4QzEwLjQ4MDggNi44MzQ2MSAxMC4yNjE1IDYuOTIzMDggMTAgNi45MjMwOFpNMTAgMjEuNUM5Ljg2NjY3IDIxLjUgOS43NSAyMS40NSA5LjY1IDIxLjM1QzkuNTUgMjEuMjUgOS41IDIxLjEzMzMgOS41IDIxQzkuNSAyMC44NjY3IDkuNTUgMjAuNzUgOS42NSAyMC42NUM5Ljc1IDIwLjU1IDkuODY2NjcgMjAuNSAxMCAyMC41QzEwLjEzMzMgMjAuNSAxMC4yNSAyMC41NSAxMC4zNSAyMC42NUMxMC40NSAyMC43NSAxMC41IDIwLjg2NjcgMTAuNSAyMUMxMC41IDIxLjEzMzMgMTAuNDUgMjEuMjUgMTAuMzUgMjEuMzVDMTAuMjUgMjEuNDUgMTAuMTMzMyAyMS41IDEwIDIxLjVaTTEwIDMuNUM5Ljg2NjY3IDMuNSA5Ljc1IDMuNDUgOS42NSAzLjM1QzkuNTUgMy4yNSA5LjUgMy4xMzMzMyA5LjUgM0M5LjUgMi44NjY2NyA5LjU1IDIuNzUgOS42NSAyLjY1QzkuNzUgMi41NSA5Ljg2NjY3IDIuNSAxMCAyLjVDMTAuMTMzMyAyLjUgMTAuMjUgMi41NSAxMC4zNSAyLjY1QzEwLjQ1IDIuNzUgMTAuNSAyLjg2NjY3IDEwLjUgM0MxMC41IDMuMTMzMzMgMTAuNDUgMy4yNSAxMC4zNSAzLjM1QzEwLjI1IDMuNDUgMTAuMTMzMyAzLjUgMTAgMy41Wk0xNC4wMDIzIDE1LjM0NjJDMTMuNjI5IDE1LjM0NjIgMTMuMzEwOSAxNS4yMTU1IDEzLjA0ODEgMTQuOTU0MkMxMi43ODUzIDE0LjY5MjkgMTIuNjUzOCAxNC4zNzU2IDEyLjY1MzggMTQuMDAyM0MxMi42NTM4IDEzLjYyOSAxMi43ODQ1IDEzLjMxMDkgMTMuMDQ1OCAxMy4wNDgxQzEzLjMwNzEgMTIuNzg1MyAxMy42MjQ0IDEyLjY1MzggMTMuOTk3NyAxMi42NTM4QzE0LjM3MSAxMi42NTM4IDE0LjY4OTEgMTIuNzg0NSAxNC45NTE5IDEzLjA0NThDMTUuMjE0NyAxMy4zMDcxIDE1LjM0NjIgMTMuNjI0NCAxNS4zNDYyIDEzLjk5NzdDMTUuMzQ2MiAxNC4zNzEgMTUuMjE1NSAxNC42ODkxIDE0Ljk1NDIgMTQuOTUxOUMxNC42OTI5IDE1LjIxNDcgMTQuMzc1NiAxNS4zNDYyIDE0LjAwMjMgMTUuMzQ2MlpNMTQuMDAyMyAxMS4zNDYyQzEzLjYyOSAxMS4zNDYyIDEzLjMxMDkgMTEuMjE1NSAxMy4wNDgxIDEwLjk1NDJDMTIuNzg1MyAxMC42OTI5IDEyLjY1MzggMTAuMzc1NiAxMi42NTM4IDEwLjAwMjNDMTIuNjUzOCA5LjYyODk3IDEyLjc4NDUgOS4zMTA5MSAxMy4wNDU4IDkuMDQ4MDhDMTMuMzA3MSA4Ljc4NTI2IDEzLjYyNDQgOC42NTM4NSAxMy45OTc3IDguNjUzODVDMTQuMzcxIDguNjUzODUgMTQuNjg5MSA4Ljc4NDUxIDE0Ljk1MTkgOS4wNDU4M0MxNS4yMTQ3IDkuMzA3MTMgMTUuMzQ2MiA5LjYyNDQyIDE1LjM0NjIgOS45OTc3M0MxNS4zNDYyIDEwLjM3MSAxNS4yMTU1IDEwLjY4OTEgMTQuOTU0MiAxMC45NTE5QzE0LjY5MjkgMTEuMjE0NyAxNC4zNzU2IDExLjM0NjIgMTQuMDAyMyAxMS4zNDYyWk0xNCAxOC45MjMxQzEzLjczODUgMTguOTIzMSAxMy41MTkyIDE4LjgzNDYgMTMuMzQyMyAxOC42NTc3QzEzLjE2NTQgMTguNDgwOCAxMy4wNzY5IDE4LjI2MTUgMTMuMDc2OSAxOEMxMy4wNzY5IDE3LjczODUgMTMuMTY1NCAxNy41MTkyIDEzLjM0MjMgMTcuMzQyM0MxMy41MTkyIDE3LjE2NTQgMTMuNzM4NSAxNy4wNzY5IDE0IDE3LjA3NjlDMTQuMjYxNSAxNy4wNzY5IDE0LjQ4MDggMTcuMTY1NCAxNC42NTc3IDE3LjM0MjNDMTQuODM0NiAxNy41MTkyIDE0LjkyMzEgMTcuNzM4NSAxNC45MjMxIDE4QzE0LjkyMzEgMTguMjYxNSAxNC44MzQ2IDE4LjQ4MDggMTQuNjU3NyAxOC42NTc3QzE0LjQ4MDggMTguODM0NiAxNC4yNjE1IDE4LjkyMzEgMTQgMTguOTIzMVpNMTQgNi45MjMwOEMxMy43Mzg1IDYuOTIzMDggMTMuNTE5MiA2LjgzNDYxIDEzLjM0MjMgNi42NTc2OEMxMy4xNjU0IDYuNDgwNzYgMTMuMDc2OSA2LjI2MTUzIDEzLjA3NjkgNkMxMy4wNzY5IDUuNzM4NDcgMTMuMTY1NCA1LjUxOTI0IDEzLjM0MjMgNS4zNDIzMkMxMy41MTkyIDUuMTY1MzkgMTMuNzM4NSA1LjA3NjkzIDE0IDUuMDc2OTNDMTQuMjYxNSA1LjA3NjkzIDE0LjQ4MDggNS4xNjUzOSAxNC42NTc3IDUuMzQyMzJDMTQuODM0NiA1LjUxOTI0IDE0LjkyMzEgNS43Mzg0NyAxNC45MjMxIDZDMTQuOTIzMSA2LjI2MTUzIDE0LjgzNDYgNi40ODA3NiAxNC42NTc3IDYuNjU3NjhDMTQuNDgwOCA2LjgzNDYxIDE0LjI2MTUgNi45MjMwOCAxNCA2LjkyMzA4Wk0xNCAyMS41QzEzLjg2NjcgMjEuNSAxMy43NSAyMS40NSAxMy42NSAyMS4zNUMxMy41NSAyMS4yNSAxMy41IDIxLjEzMzMgMTMuNSAyMUMxMy41IDIwLjg2NjcgMTMuNTUgMjAuNzUgMTMuNjUgMjAuNjVDMTMuNzUgMjAuNTUgMTMuODY2NyAyMC41IDE0IDIwLjVDMTQuMTMzMyAyMC41IDE0LjI1IDIwLjU1IDE0LjM1IDIwLjY1QzE0LjQ1IDIwLjc1IDE0LjUgMjAuODY2NyAxNC41IDIxQzE0LjUgMjEuMTMzMyAxNC40NSAyMS4yNSAxNC4zNSAyMS4zNUMxNC4yNSAyMS40NSAxNC4xMzMzIDIxLjUgMTQgMjEuNVpNMTQgMy41QzEzLjg2NjcgMy41IDEzLjc1IDMuNDUgMTMuNjUgMy4zNUMxMy41NSAzLjI1IDEzLjUgMy4xMzMzMyAxMy41IDNDMTMuNSAyLjg2NjY3IDEzLjU1IDIuNzUgMTMuNjUgMi42NUMxMy43NSAyLjU1IDEzLjg2NjcgMi41IDE0IDIuNUMxNC4xMzMzIDIuNSAxNC4yNSAyLjU1IDE0LjM1IDIuNjVDMTQuNDUgMi43NSAxNC41IDIuODY2NjcgMTQuNSAzQzE0LjUgMy4xMzMzMyAxNC40NSAzLjI1IDE0LjM1IDMuMzVDMTQuMjUgMy40NSAxNC4xMzMzIDMuNSAxNCAzLjVaTTE4IDE4LjkyMzFDMTcuNzM4NSAxOC45MjMxIDE3LjUxOTIgMTguODM0NiAxNy4zNDIzIDE4LjY1NzdDMTcuMTY1NCAxOC40ODA4IDE3LjA3NjkgMTguMjYxNSAxNy4wNzY5IDE4QzE3LjA3NjkgMTcuNzM4NSAxNy4xNjU0IDE3LjUxOTIgMTcuMzQyMyAxNy4zNDIzQzE3LjUxOTIgMTcuMTY1NCAxNy43Mzg1IDE3LjA3NjkgMTggMTcuMDc2OUMxOC4yNjE1IDE3LjA3NjkgMTguNDgwOCAxNy4xNjU0IDE4LjY1NzcgMTcuMzQyM0MxOC44MzQ2IDE3LjUxOTIgMTguOTIzMSAxNy43Mzg1IDE4LjkyMzEgMThDMTguOTIzMSAxOC4yNjE1IDE4LjgzNDYgMTguNDgwOCAxOC42NTc3IDE4LjY1NzdDMTguNDgwOCAxOC44MzQ2IDE4LjI2MTUgMTguOTIzMSAxOCAxOC45MjMxWk0xOCAxNC45MjMxQzE3LjczODUgMTQuOTIzMSAxNy41MTkyIDE0LjgzNDYgMTcuMzQyMyAxNC42NTc3QzE3LjE2NTQgMTQuNDgwOCAxNy4wNzY5IDE0LjI2MTUgMTcuMDc2OSAxNEMxNy4wNzY5IDEzLjczODUgMTcuMTY1NCAxMy41MTkyIDE3LjM0MjMgMTMuMzQyM0MxNy41MTkyIDEzLjE2NTQgMTcuNzM4NSAxMy4wNzY5IDE4IDEzLjA3NjlDMTguMjYxNSAxMy4wNzY5IDE4LjQ4MDggMTMuMTY1NCAxOC42NTc3IDEzLjM0MjNDMTguODM0NiAxMy41MTkyIDE4LjkyMzEgMTMuNzM4NSAxOC45MjMxIDE0QzE4LjkyMzEgMTQuMjYxNSAxOC44MzQ2IDE0LjQ4MDggMTguNjU3NyAxNC42NTc3QzE4LjQ4MDggMTQuODM0NiAxOC4yNjE1IDE0LjkyMzEgMTggMTQuOTIzMVpNMTggMTAuOTIzMUMxNy43Mzg1IDEwLjkyMzEgMTcuNTE5MiAxMC44MzQ2IDE3LjM0MjMgMTAuNjU3N0MxNy4xNjU0IDEwLjQ4MDggMTcuMDc2OSAxMC4yNjE1IDE3LjA3NjkgMTBDMTcuMDc2OSA5LjczODQ3IDE3LjE2NTQgOS41MTkyNCAxNy4zNDIzIDkuMzQyMzJDMTcuNTE5MiA5LjE2NTM5IDE3LjczODUgOS4wNzY5MiAxOCA5LjA3NjkyQzE4LjI2MTUgOS4wNzY5MiAxOC40ODA4IDkuMTY1MzkgMTguNjU3NyA5LjM0MjMyQzE4LjgzNDYgOS41MTkyNCAxOC45MjMxIDkuNzM4NDcgMTguOTIzMSAxMEMxOC45MjMxIDEwLjI2MTUgMTguODM0NiAxMC40ODA4IDE4LjY1NzcgMTAuNjU3N0MxOC40ODA4IDEwLjgzNDYgMTguMjYxNSAxMC45MjMxIDE4IDEwLjkyMzFaTTE4IDYuOTIzMDhDMTcuNzM4NSA2LjkyMzA4IDE3LjUxOTIgNi44MzQ2MSAxNy4zNDIzIDYuNjU3NjhDMTcuMTY1NCA2LjQ4MDc2IDE3LjA3NjkgNi4yNjE1MyAxNy4wNzY5IDZDMTcuMDc2OSA1LjczODQ3IDE3LjE2NTQgNS41MTkyNCAxNy4zNDIzIDUuMzQyMzJDMTcuNTE5MiA1LjE2NTM5IDE3LjczODUgNS4wNzY5MyAxOCA1LjA3NjkzQzE4LjI2MTUgNS4wNzY5MyAxOC40ODA4IDUuMTY1MzkgMTguNjU3NyA1LjM0MjMyQzE4LjgzNDYgNS41MTkyNCAxOC45MjMxIDUuNzM4NDcgMTguOTIzMSA2QzE4LjkyMzEgNi4yNjE1MyAxOC44MzQ2IDYuNDgwNzYgMTguNjU3NyA2LjY1NzY4QzE4LjQ4MDggNi44MzQ2MSAxOC4yNjE1IDYuOTIzMDggMTggNi45MjMwOFpNMjEgMTQuNUMyMC44NjY3IDE0LjUgMjAuNzUgMTQuNDUgMjAuNjUgMTQuMzVDMjAuNTUgMTQuMjUgMjAuNSAxNC4xMzMzIDIwLjUgMTRDMjAuNSAxMy44NjY3IDIwLjU1IDEzLjc1IDIwLjY1IDEzLjY1QzIwLjc1IDEzLjU1IDIwLjg2NjcgMTMuNSAyMSAxMy41QzIxLjEzMzMgMTMuNSAyMS4yNSAxMy41NSAyMS4zNSAxMy42NUMyMS40NSAxMy43NSAyMS41IDEzLjg2NjcgMjEuNSAxNEMyMS41IDE0LjEzMzMgMjEuNDUgMTQuMjUgMjEuMzUgMTQuMzVDMjEuMjUgMTQuNDUgMjEuMTMzMyAxNC41IDIxIDE0LjVaTTIxIDEwLjVDMjAuODY2NyAxMC41IDIwLjc1IDEwLjQ1IDIwLjY1IDEwLjM1QzIwLjU1IDEwLjI1IDIwLjUgMTAuMTMzMyAyMC41IDEwQzIwLjUgOS44NjY2NyAyMC41NSA5Ljc1IDIwLjY1IDkuNjVDMjAuNzUgOS41NSAyMC44NjY3IDkuNSAyMSA5LjVDMjEuMTMzMyA5LjUgMjEuMjUgOS41NSAyMS4zNSA5LjY1QzIxLjQ1IDkuNzUgMjEuNSA5Ljg2NjY3IDIxLjUgMTBDMjEuNSAxMC4xMzMzIDIxLjQ1IDEwLjI1IDIxLjM1IDEwLjM1QzIxLjI1IDEwLjQ1IDIxLjEzMzMgMTAuNSAyMSAxMC41WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDkxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDkxKVwiPlxuPHBhdGggZD1cIk0xMi4wNSAxOS43NUM5Ljg4NzE5IDE5Ljc1IDguMDQ2NDkgMTguOTk3NCA2LjUyNzkxIDE3LjQ5MjNDNS4wMDkzMyAxNS45ODcxIDQuMjUwMDQgMTQuMTU2NCA0LjI1MDA0IDEyVjExLjIxOTJMMi45MjY5MSAxMi41NDIzQzIuNzg4NDYgMTIuNjgwNyAyLjYxNDQzIDEyLjc1MTYgMi40MDQ4MSAxMi43NTQ4QzIuMTk1MjEgMTIuNzU4IDIuMDE3OTggMTIuNjg3MSAxLjg3MzExIDEyLjU0MjNDMS43MjgyMSAxMi4zOTc0IDEuNjU1NzYgMTIuMjIxOCAxLjY1NTc2IDEyLjAxNTNDMS42NTU3NiAxMS44MDg5IDEuNzI4MiAxMS42MzMzIDEuODczMDkgMTEuNDg4NUw0LjM2NzMxIDguOTk0MjJDNC41NDgwOCA4LjgxMzQ2IDQuNzU4OTcgOC43MjMwOCA0Ljk5OTk5IDguNzIzMDhDNS4yNDEgOC43MjMwOCA1LjQ1MTg5IDguODEzNDYgNS42MzI2NiA4Ljk5NDIyTDguMTI2ODkgMTEuNDg4NUM4LjI2NTM1IDExLjYyNjkgOC4zMzYxOSAxMS44MDA5IDguMzM5MzkgMTIuMDEwNUM4LjM0MjYgMTIuMjIwMiA4LjI3MTc3IDEyLjM5NzQgOC4xMjY4OSAxMi41NDIzQzcuOTgyMDIgMTIuNjg3MSA3LjgwNjM5IDEyLjc1OTYgNy41OTk5OSAxMi43NTk2QzcuMzkzNTkgMTIuNzU5NiA3LjIxNzk1IDEyLjY4NzEgNy4wNzMwOSAxMi41NDIzTDUuNzQ5OTYgMTEuMjE5MlYxMkM1Ljc0OTk2IDEzLjczNzIgNi4zNjE1IDE1LjIxMzEgNy41ODQ1OSAxNi40Mjc5QzguODA3NjkgMTcuNjQyNiAxMC4yOTYyIDE4LjI1IDEyLjA1IDE4LjI1QzEyLjM0MjMgMTguMjUgMTIuNjMzNyAxOC4yMzAxIDEyLjkyNDEgMTguMTkwNEMxMy4yMTQ0IDE4LjE1MDYgMTMuNTAwNyAxOC4wODI3IDEzLjc4MjcgMTcuOTg2NUMxMy45OTU1IDE3LjkyMjQgMTQuMTk2NSAxNy45MjkyIDE0LjM4NTYgMTguMDA2N0MxNC41NzQ3IDE4LjA4NDMgMTQuNzE2NyAxOC4yMTYgMTQuODExNSAxOC40MDE5QzE0LjkwNjQgMTguNTk4MSAxNC45MTI1IDE4Ljc5MzIgMTQuODI5OCAxOC45ODc1QzE0Ljc0NzEgMTkuMTgxNyAxNC41OTk0IDE5LjMxMDkgMTQuMzg2NSAxOS4zNzVDMTQuMDA5NiAxOS41MDgzIDEzLjYyNDQgMTkuNjA0MSAxMy4yMzA4IDE5LjY2MjVDMTIuODM3MiAxOS43MjA4IDEyLjQ0MzYgMTkuNzUgMTIuMDUgMTkuNzVaTTExLjk1IDUuNzQ5OTVDMTEuNjU3NyA1Ljc0OTk1IDExLjM2NjMgNS43Njk4MiAxMS4wNzYgNS44MDk1N0MxMC43ODU2IDUuODQ5MzIgMTAuNDk5NCA1LjkxNzI3IDEwLjIxNzMgNi4wMTM0MkMxMC4wMDQ1IDYuMDc3NTIgOS44MDA5NyA2LjA3MDc5IDkuNjA2NzQgNS45OTMyM0M5LjQxMjUyIDUuOTE1NjYgOS4yNjc5OCA1Ljc4MzkzIDkuMTczMTEgNS41OTgwNUM5LjA3ODIzIDUuNDEyMTUgOS4wNzA1NCA1LjIyMjA5IDkuMTUwMDQgNS4wMjc4N0M5LjIyOTUyIDQuODMzNjQgOS4zNzA1NCA0LjcwNDQ3IDkuNTczMDkgNC42NDAzN0M5Ljk2MDI3IDQuNTA3MDQgMTAuMzUyMyA0LjQwODY0IDEwLjc0OTEgNC4zNDUxOEMxMS4xNDU4IDQuMjgxNzMgMTEuNTQ2MiA0LjI1IDExLjk1IDQuMjVDMTQuMTEyOCA0LjI1IDE1Ljk1MzUgNS4wMDI1NiAxNy40NzIxIDYuNTA3NjhDMTguOTkwNyA4LjAxMjgxIDE5Ljc1IDkuODQzNTcgMTkuNzUgMTJWMTIuNzgwOEwyMS4wNzMxIDExLjQ1NzdDMjEuMjExNiAxMS4zMTkyIDIxLjM4NTYgMTEuMjQ4NCAyMS41OTUyIDExLjI0NTJDMjEuODA0OCAxMS4yNDIgMjEuOTgyIDExLjMxMjggMjIuMTI2OSAxMS40NTc3QzIyLjI3MTggMTEuNjAyNSAyMi4zNDQyIDExLjc3ODIgMjIuMzQ0MiAxMS45ODQ2QzIyLjM0NDIgMTIuMTkxIDIyLjI3MTggMTIuMzY2NiAyMi4xMjY5IDEyLjUxMTVMMTkuNjMyNyAxNS4wMDU3QzE5LjQ1MTkgMTUuMTg2NSAxOS4yNDEgMTUuMjc2OSAxOSAxNS4yNzY5QzE4Ljc1OSAxNS4yNzY5IDE4LjU0ODEgMTUuMTg2NSAxOC4zNjczIDE1LjAwNTdMMTUuODczMSAxMi41MTE1QzE1LjczNDYgMTIuMzczMSAxNS42NjM4IDEyLjE5OSAxNS42NjA2IDExLjk4OTRDMTUuNjU3NCAxMS43Nzk4IDE1LjcyODIgMTEuNjAyNSAxNS44NzMxIDExLjQ1NzdDMTYuMDE4IDExLjMxMjggMTYuMTkzNiAxMS4yNDA0IDE2LjQgMTEuMjQwNEMxNi42MDY0IDExLjI0MDQgMTYuNzgyIDExLjMxMjggMTYuOTI2OSAxMS40NTc3TDE4LjI1IDEyLjc4MDhWMTJDMTguMjUgMTAuMjYyOCAxNy42Mzg1IDguNzg2ODMgMTYuNDE1NCA3LjU3MjA3QzE1LjE5MjMgNi4zNTczMiAxMy43MDM5IDUuNzQ5OTUgMTEuOTUgNS43NDk5NVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIm0xMC41OCAxNC4xNDYtMi4zMjItMi4zMjNhLjcyNC43MjQgMCAwIDAtLjUyMi0uMjEyLjcwNy43MDcgMCAwIDAtLjUzMi4yMTIuNzE3LjcxNyAwIDAgMC0uMjE3LjUyN2MwIC4yMDYuMDcyLjM4Mi4yMTcuNTI3bDIuNzQ0IDIuNzQ0YS44Ny44NyAwIDAgMCAuNjMzLjI3MWMuMjQgMCAuNDUyLS4wOS42MzItLjI3bDUuNTY0LTUuNTY0YS43MjUuNzI1IDAgMCAwIC4yMTItLjUyMi43MDcuNzA3IDAgMCAwLS4yMTItLjUzMi43MTguNzE4IDAgMCAwLS41MjctLjIxNy43MTcuNzE3IDAgMCAwLS41MjcuMjE3bC01LjE0MiA1LjE0MlptMS40MjIgNy4zNTRhOS4yNTUgOS4yNTUgMCAwIDEtMy43MDUtLjc0OCA5LjU5OCA5LjU5OCAwIDAgMS0zLjAxOC0yLjAzIDkuNTkxIDkuNTkxIDAgMCAxLTIuMDMtMy4wMTYgOS4yNDUgOS4yNDUgMCAwIDEtLjc0OS0zLjcwNGMwLTEuMzE0LjI1LTIuNTUuNzQ4LTMuNzA1YTkuNTk3IDkuNTk3IDAgMCAxIDIuMDMtMy4wMTggOS41OTIgOS41OTIgMCAwIDEgMy4wMTYtMi4wMyA5LjI0NSA5LjI0NSAwIDAgMSAzLjcwNC0uNzQ5YzEuMzE0IDAgMi41NS4yNSAzLjcwNS43NDhhOS41OTcgOS41OTcgMCAwIDEgMy4wMTggMi4wMyA5LjU5MiA5LjU5MiAwIDAgMSAyLjAzIDMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxIC43NDkgMy43MDRjMCAxLjMxNC0uMjUgMi41NS0uNzQ4IDMuNzA1YTkuNTk4IDkuNTk4IDAgMCAxLTIuMDMgMy4wMTggOS41OTIgOS41OTIgMCAwIDEtMy4wMTYgMi4wMyA5LjI0NSA5LjI0NSAwIDAgMS0zLjcwNC43NDlaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTcuMzA4IDIwLjVjLS41MDUgMC0uOTMzLS4xNzUtMS4yODMtLjUyNWExLjc0NSAxLjc0NSAwIDAgMS0uNTI1LTEuMjgzVjZoLS4yNWEuNzI2LjcyNiAwIDAgMS0uNTM1LS4yMTUuNzI2LjcyNiAwIDAgMS0uMjE1LS41MzUuNzMuNzMgMCAwIDEgLjIxNS0uNTM1LjcyNi43MjYgMCAwIDEgLjUzNS0uMjE1SDlhLjg0Ljg0IDAgMCAxIC4yNjMtLjYzLjg4OS44ODkgMCAwIDEgLjY0LS4yNTVoNC4xOTNjLjI1MSAwIC40NjUuMDg1LjY0LjI1NEEuODQuODQgMCAwIDEgMTUgNC41aDMuNzVhLjczLjczIDAgMCAxIC41MzUuMjE1LjcyNi43MjYgMCAwIDEgLjIxNS41MzUuNzI2LjcyNiAwIDAgMS0uMjE1LjUzNS43MjYuNzI2IDAgMCAxLS41MzUuMjE1aC0uMjV2MTIuNjkyYzAgLjUwNi0uMTc1LjkzMy0uNTI1IDEuMjgzLS4zNS4zNS0uNzc4LjUyNS0xLjI4My41MjVINy4zMDhaTTcgNnYxMi42OTJhLjMuMyAwIDAgMCAuMDg3LjIyMS4zLjMgMCAwIDAgLjIyLjA4N2g5LjM4NWEuMy4zIDAgMCAwIC4yMjEtLjA4Ny4zLjMgMCAwIDAgLjA4Ny0uMjJWNkg3Wm0yLjQwNCAxMC4yNWEuNzMuNzMgMCAwIDAgLjIxNS41MzUuNzI2LjcyNiAwIDAgMCAuNTM1LjIxNS43MjYuNzI2IDAgMCAwIC41MzQtLjIxNS43MjYuNzI2IDAgMCAwIC4yMTYtLjUzNXYtNy41YS43MjYuNzI2IDAgMCAwLS4yMTYtLjUzNS43MjYuNzI2IDAgMCAwLS41MzQtLjIxNS43MjYuNzI2IDAgMCAwLS41MzUuMjE1LjcyNi43MjYgMCAwIDAtLjIxNS41MzV2Ny41Wm0zLjY5MiAwYzAgLjIxMy4wNzIuMzkxLjIxNi41MzVhLjcyNi43MjYgMCAwIDAgLjUzNC4yMTUuNzI2LjcyNiAwIDAgMCAuNTM1LS4yMTUuNzI2LjcyNiAwIDAgMCAuMjE1LS41MzV2LTcuNWEuNzI2LjcyNiAwIDAgMC0uMjE1LS41MzUuNzI2LjcyNiAwIDAgMC0uNTM1LS4yMTUuNzI2LjcyNiAwIDAgMC0uNTM0LjIxNS43MjYuNzI2IDAgMCAwLS4yMTYuNTM1djcuNVpNNyA2djEyLjY5MmEuMy4zIDAgMCAwIC4wODcuMjIxLjMuMyAwIDAgMCAuMjIuMDg3SDdWNlpcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGZpbGw9XCJub25lXCIgdmlld0JveD1cIjAgMCAyNCAyNFwiPlxuICA8bWFzayBpZD1cImFcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB4PVwiMFwiIHk9XCIwXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjRDlEOUQ5XCIgZD1cIk0wIDBoMjR2MjRIMHpcIi8+XG4gIDwvbWFzaz5cbiAgPGcgbWFzaz1cInVybCgjYSlcIj5cbiAgICA8cGF0aCBmaWxsPVwiIzJDMzMzNlwiIGQ9XCJNMTIgMTYuNzVhLjcyNi43MjYgMCAwIDAgLjUzNS0uMjE2LjcyNi43MjYgMCAwIDAgLjIxNS0uNTM0di00LjI1YS43MjYuNzI2IDAgMCAwLS4yMTYtLjUzNEEuNzI3LjcyNyAwIDAgMCAxMiAxMWEuNzI1LjcyNSAwIDAgMC0uNTM1LjIxNi43MjYuNzI2IDAgMCAwLS4yMTUuNTM0VjE2YzAgLjIxMi4wNzIuMzkuMjE2LjUzNGEuNzI2LjcyNiAwIDAgMCAuNTM0LjIxNlptMC03LjQ2MmEuNzguNzggMCAwIDAgLjU3NS0uMjMyLjc4MS43ODEgMCAwIDAgLjIzMy0uNTc1Ljc4Mi43ODIgMCAwIDAtLjIzMi0uNTc2Ljc4Mi43ODIgMCAwIDAtLjU3Ni0uMjMyLjc4MS43ODEgMCAwIDAtLjU3NS4yMzIuNzgyLjc4MiAwIDAgMC0uMjMzLjU3NmMwIC4yMjkuMDc4LjQyLjIzMi41NzVhLjc4MS43ODEgMCAwIDAgLjU3Ni4yMzJabS4wMDIgMTIuMjEyYTkuMjU1IDkuMjU1IDAgMCAxLTMuNzA1LS43NDggOS41OTggOS41OTggMCAwIDEtMy4wMTgtMi4wMyA5LjU5MSA5LjU5MSAwIDAgMS0yLjAzLTMuMDE2IDkuMjQ1IDkuMjQ1IDAgMCAxLS43NDktMy43MDRjMC0xLjMxNC4yNS0yLjU1Ljc0OC0zLjcwNWE5LjU5NyA5LjU5NyAwIDAgMSAyLjAzLTMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxIDMuMDE2LTIuMDMgOS4yNDUgOS4yNDUgMCAwIDEgMy43MDQtLjc0OWMxLjMxNCAwIDIuNTUuMjUgMy43MDUuNzQ4YTkuNTk3IDkuNTk3IDAgMCAxIDMuMDE4IDIuMDMgOS41OTIgOS41OTIgMCAwIDEgMi4wMyAzLjAxNiA5LjI0NSA5LjI0NSAwIDAgMSAuNzQ5IDMuNzA0YzAgMS4zMTQtLjI1IDIuNTUtLjc0OCAzLjcwNWE5LjU5OCA5LjU5OCAwIDAgMS0yLjAzIDMuMDE4IDkuNTkyIDkuNTkyIDAgMCAxLTMuMDE2IDIuMDMgOS4yNDUgOS4yNDUgMCAwIDEtMy43MDQuNzQ5Wk0xMiAyMGMyLjIzMyAwIDQuMTI1LS43NzUgNS42NzUtMi4zMjVDMTkuMjI1IDE2LjEyNSAyMCAxNC4yMzMgMjAgMTJjMC0yLjIzMy0uNzc1LTQuMTI1LTIuMzI1LTUuNjc1QzE2LjEyNSA0Ljc3NSAxNC4yMzMgNCAxMiA0Yy0yLjIzMyAwLTQuMTI1Ljc3NS01LjY3NSAyLjMyNUM0Ljc3NSA3Ljg3NSA0IDkuNzY3IDQgMTJjMCAyLjIzMy43NzUgNC4xMjUgMi4zMjUgNS42NzVDNy44NzUgMTkuMjI1IDkuNzY3IDIwIDEyIDIwWlwiLz5cbiAgPC9nPlxuPC9zdmc+IiwiPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgZmlsbD1cIm5vbmVcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCI+XG4gIDxtYXNrIGlkPVwiYVwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHg9XCIwXCIgeT1cIjBcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCI+XG4gICAgPHBhdGggZmlsbD1cIiNEOUQ5RDlcIiBkPVwiTTAgMGgyNHYyNEgwelwiLz5cbiAgPC9tYXNrPlxuICA8ZyBtYXNrPVwidXJsKCNhKVwiPlxuICAgIDxwYXRoIGZpbGw9XCIjMkMzMzM2XCIgZD1cIk0xMiAxN2EuOTcuOTcgMCAwIDAgLjcxMy0uMjg4QS45NjguOTY4IDAgMCAwIDEzIDE2di00YS45NjguOTY4IDAgMCAwLS4yODctLjcxM0EuOTY4Ljk2OCAwIDAgMCAxMiAxMWEuOTY4Ljk2OCAwIDAgMC0uNzEzLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMSAxMnY0YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLThjLjI4MyAwIC41Mi0uMDk2LjcxMy0uMjg3QS45NjcuOTY3IDAgMCAwIDEzIDhhLjk2Ny45NjcgMCAwIDAtLjI4Ny0uNzEzQS45NjguOTY4IDAgMCAwIDEyIDdhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2Ny45NjcgMCAwIDAgMTEgOGMwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1ptMCAxM2E5LjczOCA5LjczOCAwIDAgMS0zLjktLjc4OCAxMC4wOTkgMTAuMDk5IDAgMCAxLTMuMTc1LTIuMTM3Yy0uOS0uOS0xLjYxMi0xLjk1OC0yLjEzNy0zLjE3NUE5LjczOCA5LjczOCAwIDAgMSAyIDEyYTkuNzQgOS43NCAwIDAgMSAuNzg4LTMuOSAxMC4wOTkgMTAuMDk5IDAgMCAxIDIuMTM3LTMuMTc1Yy45LS45IDEuOTU4LTEuNjEyIDMuMTc1LTIuMTM3QTkuNzM4IDkuNzM4IDAgMCAxIDEyIDJhOS43NCA5Ljc0IDAgMCAxIDMuOS43ODggMTAuMDk4IDEwLjA5OCAwIDAgMSAzLjE3NSAyLjEzN2MuOS45IDEuNjEzIDEuOTU4IDIuMTM3IDMuMTc1QTkuNzM4IDkuNzM4IDAgMCAxIDIyIDEyYTkuNzM4IDkuNzM4IDAgMCAxLS43ODggMy45IDEwLjA5OCAxMC4wOTggMCAwIDEtMi4xMzcgMy4xNzVjLS45LjktMS45NTggMS42MTMtMy4xNzUgMi4xMzdBOS43MzggOS43MzggMCAwIDEgMTIgMjJaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTEyIDE0LjY3N2EuOTMuOTMgMCAwIDEtLjM0LS4wNjYuODQuODQgMCAwIDEtLjI5My0uMTlMNi44NzMgOS45MjdhLjcxNy43MTcgMCAwIDEtLjIxNy0uNTI3YzAtLjIwNi4wNzItLjM4Mi4yMTctLjUyN2EuNzE3LjcxNyAwIDAgMSAuNTI3LS4yMTdjLjIwNiAwIC4zODIuMDcyLjUyNy4yMTdMMTIgMTIuOTQ2bDQuMDczLTQuMDczYS43MTcuNzE3IDAgMCAxIC41MjctLjIxN2MuMjA2IDAgLjM4Mi4wNzIuNTI3LjIxNy4xNDUuMTQ1LjIxNy4zMi4yMTcuNTI3YS43MTcuNzE3IDAgMCAxLS4yMTcuNTI3bC00LjQ5NCA0LjQ5NGEuODMuODMgMCAwIDEtLjYzMy4yNTZaXCIvPlxuICA8L2c+XG48L3N2Zz4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDY0XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDY0KVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1NzZDOS43MzgzIDE3LjI4MzMgOC40NTM2OCAxNi42NjczIDcuMzk1OTggMTUuNjA5NkM2LjMzODMgMTQuNTUxOSA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MTkgMTYuNjAzNiAxNS42MDk2QzE1LjU0NTkgMTYuNjY3MyAxNC4yNjEzIDE3LjI4MzMgMTIuNzQ5OCAxNy40NTc2VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDYxXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDYxKVwiPlxuPHBhdGggZD1cIk0xMS45OTk4IDEzLjVDMTEuMzAxMSAxMy41IDEwLjcwOTggMTMuMjU4IDEwLjIyNTggMTIuNzc0QzkuNzQxODEgMTIuMjkgOS40OTk4MyAxMS42OTg3IDkuNDk5ODMgMTFWNC45OTk5N0M5LjQ5OTgzIDQuMzAxMjcgOS43NDE4MSAzLjcwOTkzIDEwLjIyNTggMy4yMjU5NUMxMC43MDk4IDIuNzQxOTggMTEuMzAxMSAyLjUgMTEuOTk5OCAyLjVDMTIuNjk4NSAyLjUgMTMuMjg5OCAyLjc0MTk4IDEzLjc3MzggMy4yMjU5NUMxNC4yNTc4IDMuNzA5OTMgMTQuNDk5OCA0LjMwMTI3IDE0LjQ5OTggNC45OTk5N1YxMUMxNC40OTk4IDExLjY5ODcgMTQuMjU3OCAxMi4yOSAxMy43NzM4IDEyLjc3NEMxMy4yODk4IDEzLjI1OCAxMi42OTg1IDEzLjUgMTEuOTk5OCAxMy41Wk0xMS45OTk4IDIwLjc1QzExLjc4NyAyMC43NSAxMS42MDg4IDIwLjY3ODIgMTEuNDY1MiAyMC41MzQ2QzExLjMyMTYgMjAuMzkxIDExLjI0OTggMjAuMjEyOCAxMS4yNDk4IDIwVjE3LjQ1MzhDOS43MzgzIDE3LjI3NTYgOC40NTM2OCAxNi42NTkyIDcuMzk1OTggMTUuNjA0N0M2LjMzODMgMTQuNTUwMyA1LjcyMTY0IDEzLjI4MDcgNS41NDYgMTEuNzk2MUM1LjUxNTIyIDExLjU4MzMgNS41NzQxOSAxMS4zOTc0IDUuNzIyOSAxMS4yMzg0QzUuODcxNjIgMTEuMDc5NSA2LjA2Nzc3IDExIDYuMzExMzUgMTFDNi40ODY5OSAxMSA2LjY0NDA0IDExLjA2NjYgNi43ODI1IDExLjJDNi45MjA5NSAxMS4zMzMzIDcuMDA4NzcgMTEuNDk2MSA3LjA0NTk1IDExLjY4ODRDNy4yMTEzNCAxMi45MDY0IDcuNzYxOTggMTMuOTI5NSA4LjY5Nzg4IDE0Ljc1NzdDOS42MzM3OCAxNS41ODU5IDEwLjczNDQgMTYgMTEuOTk5OCAxNkMxMy4yNjUyIDE2IDE0LjM2NTggMTUuNTg1OSAxNS4zMDE3IDE0Ljc1NzdDMTYuMjM3NiAxMy45Mjk1IDE2Ljc4ODMgMTIuOTA2NCAxNi45NTM3IDExLjY4ODRDMTYuOTkwOCAxMS40OTYxIDE3LjA3OTYgMTEuMzMzMyAxNy4yMiAxMS4yQzE3LjM2MDQgMTEuMDY2NiAxNy41MjE2IDExIDE3LjcwMzYgMTFDMTcuOTM3IDExIDE4LjEyOCAxMS4wNzk1IDE4LjI3NjcgMTEuMjM4NEMxOC40MjU0IDExLjM5NzQgMTguNDg0NCAxMS41ODMzIDE4LjQ1MzYgMTEuNzk2MUMxOC4yNzggMTMuMjgwNyAxNy42NjEzIDE0LjU1MDMgMTYuNjAzNiAxNS42MDQ3QzE1LjU0NTkgMTYuNjU5MiAxNC4yNjEzIDE3LjI3NTYgMTIuNzQ5OCAxNy40NTM4VjIwQzEyLjc0OTggMjAuMjEyOCAxMi42NzggMjAuMzkxIDEyLjUzNDQgMjAuNTM0NkMxMi4zOTA4IDIwLjY3ODIgMTIuMjEyNiAyMC43NSAxMS45OTk4IDIwLjc1Wk0xMS45OTk4IDEyQzEyLjI4MzEgMTIgMTIuNTIwNiAxMS45MDQxIDEyLjcxMjMgMTEuNzEyNUMxMi45MDQgMTEuNTIwOCAxMi45OTk4IDExLjI4MzMgMTIuOTk5OCAxMVY0Ljk5OTk3QzEyLjk5OTggNC43MTY2NCAxMi45MDQgNC40NzkxNCAxMi43MTIzIDQuMjg3NDdDMTIuNTIwNiA0LjA5NTgxIDEyLjI4MzEgMy45OTk5NyAxMS45OTk4IDMuOTk5OTdDMTEuNzE2NSAzLjk5OTk3IDExLjQ3OSA0LjA5NTgxIDExLjI4NzMgNC4yODc0N0MxMS4wOTU2IDQuNDc5MTQgMTAuOTk5OCA0LjcxNjY0IDEwLjk5OTggNC45OTk5N1YxMUMxMC45OTk4IDExLjI4MzMgMTEuMDk1NiAxMS41MjA4IDExLjI4NzMgMTEuNzEyNUMxMS40NzkgMTEuOTA0MSAxMS43MTY1IDEyIDExLjk5OTggMTJaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNzNcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNzMpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0wxMi42NDQyIDkuNTUzNzhWNC45OTk5N0MxMi42NDQyIDQuNzE2NjQgMTIuNTQ4NCA0LjQ3OTE0IDEyLjM1NjcgNC4yODc0N0MxMi4xNjUgNC4wOTU4MSAxMS45Mjc1IDMuOTk5OTcgMTEuNjQ0MiAzLjk5OTk3QzExLjM2MDkgMy45OTk5NyAxMS4xMjM0IDQuMDk1ODEgMTAuOTMxNyA0LjI4NzQ3QzEwLjc0IDQuNDc5MTQgMTAuNjQ0MiA0LjcxNjY0IDEwLjY0NDIgNC45OTk5N1Y3LjUzNDU1TDkuMTQ0MjQgNi4wMzQ1N1Y0Ljk5OTk3QzkuMTQ0MjQgNC4zMDEyOCA5LjM4NjIzIDMuNzA5OTMgOS44NzAxOSAzLjIyNTk1QzEwLjM1NDIgMi43NDE5OCAxMC45NDU1IDIuNSAxMS42NDQyIDIuNUMxMi4zNDI5IDIuNSAxMi45MzQzIDIuNzQxOTggMTMuNDE4MiAzLjIyNTk1QzEzLjkwMjIgMy43MDk5MyAxNC4xNDQyIDQuMzAxMjggMTQuMTQ0MiA0Ljk5OTk3VjEwLjM0NjFDMTQuMTQ0MiAxMC40NTg5IDE0LjEzMTMgMTAuNTYxNSAxNC4xMDU3IDEwLjY1MzhDMTQuMDgwMSAxMC43NDYxIDE0LjA1MTkgMTAuODM4NCAxNC4wMjExIDEwLjkzMDdaTTE5LjM0MDQgMjEuMTg4NEwyLjIwNTc3IDQuMDUzNzVDMi4wNjczMiAzLjkxNTMgMS45OTY0OCAzLjc0MTI3IDEuOTkzMjcgMy41MzE2NUMxLjk5MDA3IDMuMzIyMDUgMi4wNjA5IDMuMTQ0ODIgMi4yMDU3NyAyLjk5OTk1QzIuMzUwNjMgMi44NTUwNyAyLjUyNjI3IDIuNzgyNjIgMi43MzI2NyAyLjc4MjYyQzIuOTM5MDggMi43ODI2MiAzLjExNDczIDIuODU1MDcgMy4yNTk1OSAyLjk5OTk1TDIwLjM5NDIgMjAuMTM0NkMyMC41MzI3IDIwLjI3MyAyMC42MDM1IDIwLjQ0NzEgMjAuNjA2NyAyMC42NTY3QzIwLjYwOTkgMjAuODY2MyAyMC41MzkxIDIxLjA0MzUgMjAuMzk0MiAyMS4xODg0QzIwLjI0OTMgMjEuMzMzMyAyMC4wNzM3IDIxLjQwNTcgMTkuODY3MyAyMS40MDU3QzE5LjY2MDkgMjEuNDA1NyAxOS40ODUzIDIxLjMzMzMgMTkuMzQwNCAyMS4xODg0Wk0xMC44OTQyIDIwVjE3LjQ1MzhDOS4zODI2OCAxNy4yNzU2IDguMDk4MDcgMTYuNjU5MiA3LjA0MDM3IDE1LjYwNDdDNS45ODI2OCAxNC41NTAzIDUuMzY2MDMgMTMuMjgwNyA1LjE5MDM5IDExLjc5NjFDNS4xNTk2MyAxMS41ODMzIDUuMjE4NiAxMS4zOTc0IDUuMzY3MzIgMTEuMjM4NEM1LjUxNjAyIDExLjA3OTUgNS43MTIxNiAxMSA1Ljk1NTc0IDExQzYuMTMxMzkgMTEgNi4yODg0NCAxMS4wNjY2IDYuNDI2ODkgMTEuMkM2LjU2NTM2IDExLjMzMzMgNi42NTMxOCAxMS40OTYxIDYuNjkwMzQgMTEuNjg4NEM2Ljg1NTczIDEyLjkwNjQgNy40MDYzNyAxMy45Mjk1IDguMzQyMjcgMTQuNzU3N0M5LjI3ODE3IDE1LjU4NTkgMTAuMzc4OCAxNiAxMS42NDQyIDE2QzEyLjI4NzggMTYgMTIuODkyNiAxNS44ODUyIDEzLjQ1ODYgMTUuNjU1N0MxNC4wMjQ3IDE1LjQyNjIgMTQuNTI1NiAxNS4xMDgzIDE0Ljk2MTUgMTQuNzAxOUwxNi4wMzA3IDE1Ljc3MTFDMTUuNTQ3NCAxNi4yMjQ5IDE0Ljk5NzQgMTYuNjAxMiAxNC4zODA3IDE2LjlDMTMuNzY0MSAxNy4xOTg3IDEzLjEwMTkgMTcuMzgzMyAxMi4zOTQyIDE3LjQ1MzhWMjBDMTIuMzk0MiAyMC4yMTI4IDEyLjMyMjQgMjAuMzkxIDEyLjE3ODggMjAuNTM0NkMxMi4wMzUyIDIwLjY3ODIgMTEuODU3IDIwLjc1IDExLjY0NDIgMjAuNzVDMTEuNDMxNCAyMC43NSAxMS4yNTMyIDIwLjY3ODIgMTEuMTA5NiAyMC41MzQ2QzEwLjk2NiAyMC4zOTEgMTAuODk0MiAyMC4yMTI4IDEwLjg5NDIgMjBaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNjdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNjcpXCI+XG48cGF0aCBkPVwiTTE3LjI0MDMgMTQuMTgwN0wxNi4xMzY1IDEzLjA1NzZDMTYuMjQxNyAxMi44NjUzIDE2LjMzNTYgMTIuNjUzNSAxNi40MTgyIDEyLjQyMjFDMTYuNTAwOSAxMi4xOTA3IDE2LjU2MDkgMTEuOTQ2MSAxNi41OTggMTEuNjg4NEMxNi42MzUyIDExLjQ5NjEgMTYuNzI0IDExLjMzMzMgMTYuODY0NCAxMS4yQzE3LjAwNDggMTEuMDY2NiAxNy4xNjYgMTEgMTcuMzQ4IDExQzE3LjU4MTQgMTEgMTcuNzcyNCAxMS4wNzk1IDE3LjkyMTEgMTEuMjM4NEMxOC4wNjk4IDExLjM5NzQgMTguMTI4OCAxMS41ODMzIDE4LjA5OCAxMS43OTYxQzE4LjA0MDMgMTIuMjUyNSAxNy45MzcxIDEyLjY3NjUgMTcuNzg4NCAxMy4wNjgyQzE3LjYzOTcgMTMuNDU5OSAxNy40NTcgMTMuODMwNyAxNy4yNDAzIDE0LjE4MDdaTTE0LjAyMTEgMTAuOTMwN0w5LjE0NDI0IDYuMDM0NTdWNC45OTk5N0M5LjE0NDI0IDQuMzAxMjggOS4zODYyMyAzLjcwOTkzIDkuODcwMTkgMy4yMjU5NUMxMC4zNTQyIDIuNzQxOTggMTAuOTQ1NSAyLjUgMTEuNjQ0MiAyLjVDMTIuMzQyOSAyLjUgMTIuOTM0MyAyLjc0MTk4IDEzLjQxODIgMy4yMjU5NUMxMy45MDIyIDMuNzA5OTMgMTQuMTQ0MiA0LjMwMTI4IDE0LjE0NDIgNC45OTk5N1YxMC4zNDYxQzE0LjE0NDIgMTAuNDU4OSAxNC4xMzEzIDEwLjU2MTUgMTQuMTA1NyAxMC42NTM4QzE0LjA4MDEgMTAuNzQ2MSAxNC4wNTE5IDEwLjgzODQgMTQuMDIxMSAxMC45MzA3Wk0xOS4zNDA0IDIxLjE4ODRMMi4yMDU3NyA0LjA1Mzc1QzIuMDY3MzIgMy45MTUzIDEuOTk2NDggMy43NDEyNyAxLjk5MzI3IDMuNTMxNjVDMS45OTAwNyAzLjMyMjA1IDIuMDYwOSAzLjE0NDgyIDIuMjA1NzcgMi45OTk5NUMyLjM1MDYzIDIuODU1MDcgMi41MjYyNyAyLjc4MjYyIDIuNzMyNjcgMi43ODI2MkMyLjkzOTA4IDIuNzgyNjIgMy4xMTQ3MyAyLjg1NTA3IDMuMjU5NTkgMi45OTk5NUwyMC4zOTQyIDIwLjEzNDZDMjAuNTMyNyAyMC4yNzMgMjAuNjAzNSAyMC40NDcxIDIwLjYwNjcgMjAuNjU2N0MyMC42MDk5IDIwLjg2NjMgMjAuNTM5MSAyMS4wNDM1IDIwLjM5NDIgMjEuMTg4NEMyMC4yNDkzIDIxLjMzMzMgMjAuMDczNyAyMS40MDU3IDE5Ljg2NzMgMjEuNDA1N0MxOS42NjA5IDIxLjQwNTcgMTkuNDg1MyAyMS4zMzMzIDE5LjM0MDQgMjEuMTg4NFpNMTAuODk0MiAyMFYxNy40NTc2QzkuMzgyNjggMTcuMjgzMyA4LjA5ODA3IDE2LjY2NzMgNy4wNDAzNyAxNS42MDk2QzUuOTgyNjggMTQuNTUxOSA1LjM2NjAzIDEzLjI4MDcgNS4xOTAzOSAxMS43OTYxQzUuMTU5NjMgMTEuNTgzMyA1LjIxODYgMTEuMzk3NCA1LjM2NzMyIDExLjIzODRDNS41MTYwMiAxMS4wNzk1IDUuNzEyMTYgMTEgNS45NTU3NCAxMUM2LjEzMTM5IDExIDYuMjg4NDQgMTEuMDY2NiA2LjQyNjg5IDExLjJDNi41NjUzNiAxMS4zMzMzIDYuNjUzMTggMTEuNDk2MSA2LjY5MDM0IDExLjY4ODRDNi44NTU3MyAxMi45MDY0IDcuNDA2MzcgMTMuOTI5NSA4LjM0MjI3IDE0Ljc1NzdDOS4yNzgxNyAxNS41ODU5IDEwLjM3ODggMTYgMTEuNjQ0MiAxNkMxMi4yODc4IDE2IDEyLjg5MjYgMTUuODg1MiAxMy40NTg2IDE1LjY1NTdDMTQuMDI0NyAxNS40MjYyIDE0LjUyNTYgMTUuMTA4MyAxNC45NjE1IDE0LjcwMTlMMTYuMDMwNyAxNS43NzExQzE1LjU0NzQgMTYuMjI0OSAxNC45OTc0IDE2LjU5ODYgMTQuMzgwNyAxNi44OTIyQzEzLjc2NDEgMTcuMTg1OCAxMy4xMDE5IDE3LjM3NDMgMTIuMzk0MiAxNy40NTc2VjIwQzEyLjM5NDIgMjAuMjEyOCAxMi4zMjI0IDIwLjM5MSAxMi4xNzg4IDIwLjUzNDZDMTIuMDM1MiAyMC42NzgyIDExLjg1NyAyMC43NSAxMS42NDQyIDIwLjc1QzExLjQzMTQgMjAuNzUgMTEuMjUzMiAyMC42NzgyIDExLjEwOTYgMjAuNTM0NkMxMC45NjYgMjAuMzkxIDEwLjg5NDIgMjAuMjEyOCAxMC44OTQyIDIwWlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDQwXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDQwKVwiPlxuPHBhdGggZD1cIk00LjU0NzkxIDE5LjVDNC4wNDI3OCAxOS41IDMuNjE1MjEgMTkuMzI1IDMuMjY1MjEgMTguOTc1QzIuOTE1MjMgMTguNjI1IDIuNzQwMjMgMTguMTk3NCAyLjc0MDIzIDE3LjY5MjJWNi4zMDc3QzIuNzQwMjMgNS44MDI1NyAyLjkxNTIzIDUuMzc1IDMuMjY1MjEgNS4wMjVDMy42MTUyMSA0LjY3NSA0LjA0Mjc4IDQuNSA0LjU0NzkxIDQuNUgxNS45MzI1QzE2LjQzNzYgNC41IDE2Ljg2NTIgNC42NzUgMTcuMjE1MiA1LjAyNUMxNy41NjUyIDUuMzc1IDE3Ljc0MDIgNS44MDI1NyAxNy43NDAyIDYuMzA3N1YxMC44ODQ2TDIwLjQ3NjcgOC4xNDgxQzIwLjYyMDIgOC4wMDQ1MiAyMC43ODY2IDcuOTcwMjIgMjAuOTc1NyA4LjA0NTIyQzIxLjE2NDggOC4xMjAyMiAyMS4yNTkzIDguMjY0NzcgMjEuMjU5MyA4LjQ3ODg3VjE1LjUyMTFDMjEuMjU5MyAxNS43MzUyIDIxLjE2NDggMTUuODc5NyAyMC45NzU3IDE1Ljk1NDdDMjAuNzg2NiAxNi4wMjk3IDIwLjYyMDIgMTUuOTk1NCAyMC40NzY3IDE1Ljg1MTlMMTcuNzQwMiAxMy4xMTUzVjE3LjY5MjJDMTcuNzQwMiAxOC4xOTc0IDE3LjU2NTIgMTguNjI1IDE3LjIxNTIgMTguOTc1QzE2Ljg2NTIgMTkuMzI1IDE2LjQzNzYgMTkuNSAxNS45MzI1IDE5LjVINC41NDc5MVpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzAzNFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzAzNClcIj5cbjxwYXRoIGQ9XCJNNC41NDc5MSAxOS41QzQuMDQyNzggMTkuNSAzLjYxNTIxIDE5LjMyNSAzLjI2NTIxIDE4Ljk3NUMyLjkxNTIzIDE4LjYyNSAyLjc0MDIzIDE4LjE5NzQgMi43NDAyMyAxNy42OTIyVjYuMzA3N0MyLjc0MDIzIDUuODAyNTcgMi45MTUyMyA1LjM3NSAzLjI2NTIxIDUuMDI1QzMuNjE1MjEgNC42NzUgNC4wNDI3OCA0LjUgNC41NDc5MSA0LjVIMTUuOTMyNUMxNi40Mzc2IDQuNSAxNi44NjUyIDQuNjc1IDE3LjIxNTIgNS4wMjVDMTcuNTY1MiA1LjM3NSAxNy43NDAyIDUuODAyNTcgMTcuNzQwMiA2LjMwNzdWMTAuODg0NkwyMC40NzY3IDguMTQ4MUMyMC42MzA1IDcuOTk0MjcgMjAuNzk5NCA3Ljk1NzQxIDIwLjk4MzQgOC4wMzc1M0MyMS4xNjc0IDguMTE3NjYgMjEuMjU5MyA4LjI2NDc3IDIxLjI1OTMgOC40Nzg4N1YxNS41MjExQzIxLjI1OTMgMTUuNzM1MiAyMS4xNjc0IDE1Ljg4MjMgMjAuOTgzNCAxNS45NjI0QzIwLjc5OTQgMTYuMDQyNSAyMC42MzA1IDE2LjAwNTcgMjAuNDc2NyAxNS44NTE5TDE3Ljc0MDIgMTMuMTE1M1YxNy42OTIyQzE3Ljc0MDIgMTguMTk3NCAxNy41NjUyIDE4LjYyNSAxNy4yMTUyIDE4Ljk3NUMxNi44NjUyIDE5LjMyNSAxNi40Mzc2IDE5LjUgMTUuOTMyNSAxOS41SDQuNTQ3OTFaTTQuNTQ3OTEgMThIMTUuOTMyNUMxNi4wMjIyIDE4IDE2LjA5NiAxNy45NzExIDE2LjE1MzYgMTcuOTEzNEMxNi4yMTEzIDE3Ljg1NTcgMTYuMjQwMiAxNy43ODIgMTYuMjQwMiAxNy42OTIyVjYuMzA3N0MxNi4yNDAyIDYuMjE3OTUgMTYuMjExMyA2LjE0NDIzIDE2LjE1MzYgNi4wODY1MkMxNi4wOTYgNi4wMjg4MiAxNi4wMjIyIDUuOTk5OTcgMTUuOTMyNSA1Ljk5OTk3SDQuNTQ3OTFDNC40NTgxNiA1Ljk5OTk3IDQuMzg0NDMgNi4wMjg4MiA0LjMyNjczIDYuMDg2NTJDNC4yNjkwMyA2LjE0NDIzIDQuMjQwMTggNi4yMTc5NSA0LjI0MDE4IDYuMzA3N1YxNy42OTIyQzQuMjQwMTggMTcuNzgyIDQuMjY5MDMgMTcuODU1NyA0LjMyNjczIDE3LjkxMzRDNC4zODQ0MyAxNy45NzExIDQuNDU4MTYgMTggNC41NDc5MSAxOFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA0M1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA0MylcIj5cbjxwYXRoIGQ9XCJNMTkuNDcxMiAyMS42MzA3TDIuMDYxNyA0LjIyMTFDMS45MjMyNCA0LjA4MjY1IDEuODU0IDMuOTE1MzUgMS44NTQgMy43MTkyQzEuODU0IDMuNTIzMDUgMS45MzE1NyAzLjM0NzQyIDIuMDg2NyAzLjE5MjNDMi4yMzE1NyAzLjA0NzQyIDIuNDA3MiAyLjk3NDk4IDIuNjEzNiAyLjk3NDk4QzIuODIgMi45NzQ5OCAyLjk5NTY0IDMuMDQ3NDIgMy4xNDA1IDMuMTkyM0wyMC41NTAxIDIwLjYwMThDMjAuNjg4NSAyMC43NDAzIDIwLjc1NzcgMjAuOTA3NiAyMC43NTc3IDIxLjEwMzdDMjAuNzU3NyAyMS4yOTk5IDIwLjY4MDIgMjEuNDc1NSAyMC41MjUxIDIxLjYzMDdDMjAuMzgwMiAyMS43NzU1IDIwLjIwNDUgMjEuODQ2NCAxOS45OTgxIDIxLjg0MzJDMTkuNzkxNyAyMS44Mzk5IDE5LjYxNjEgMjEuNzY5MSAxOS40NzEyIDIxLjYzMDdaTTE3Ljc5NDMgMTUuMDExNUw3LjI4MjgzIDQuNDk5OThIMTUuOTg2NkMxNi40OTE4IDQuNDk5OTggMTYuOTE5MyA0LjY3NDk4IDE3LjI2OTMgNS4wMjQ5OEMxNy42MTkzIDUuMzc0OTggMTcuNzk0MyA1LjgwMjU0IDE3Ljc5NDMgNi4zMDc2OFYxMC44ODQ2TDIwLjUzMDggOC4xNDgwOEMyMC42NzQ0IDguMDA0NDkgMjAuODQwOCA3Ljk3MDIgMjEuMDI5OSA4LjA0NTJDMjEuMjE5IDguMTIwMiAyMS4zMTM1IDguMjY0NzUgMjEuMzEzNSA4LjQ3ODg1VjE1LjUyMTFDMjEuMzEzNSAxNS43MzUyIDIxLjIxOSAxNS44Nzk3IDIxLjAyOTkgMTUuOTU0N0MyMC44NDA4IDE2LjAyOTcgMjAuNjc0NCAxNS45OTU0IDIwLjUzMDggMTUuODUxOEwxNy43OTQzIDEzLjExNTNWMTUuMDExNVpNNC40Njc0NSA0LjUxOTIzTDE3Ljc3NTEgMTcuODI2OEMxNy43NTg0IDE4LjI4MzMgMTcuNTY2MSAxOC42NzYyIDE3LjE5ODIgMTkuMDA1N0MxNi44MzAyIDE5LjMzNTIgMTYuNDE4IDE5LjQ5OTkgMTUuOTYxNiAxOS40OTk5SDQuNTc3MDhDNC4wNzE5NSAxOS40OTk5IDMuNjQ0MzggMTkuMzI0OSAzLjI5NDM4IDE4Ljk3NDlDMi45NDQzOCAxOC42MjQ5IDIuNzY5MzggMTguMTk3NCAyLjc2OTM4IDE3LjY5MjJWNi4zMDc2OEMyLjc2OTM4IDUuODUxMjYgMi45MzY2OSA1LjQzOTA4IDMuMjcxMyA1LjA3MTE1QzMuNjA1OTIgNC43MDMyIDQuMDA0NjQgNC41MTkyMyA0LjQ2NzQ1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwMzdcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwMzcpXCI+XG48cGF0aCBkPVwiTTIwLjUwNTkgMTUuODUxOEwxNy43Njk0IDEzLjExNTNWMTUuMDExNUwxNi4yNjk1IDEzLjUxMTVWNi4zMDc2OEMxNi4yNjk1IDYuMjE3OTMgMTYuMjQwNiA2LjE0NDIgMTYuMTgyOSA2LjA4NjVDMTYuMTI1MiA2LjAyODggMTYuMDUxNSA1Ljk5OTk1IDE1Ljk2MTcgNS45OTk5NUg4Ljc1Nzg4TDcuMjU3OTMgNC40OTk5OEgxNS45NjE3QzE2LjQ2NjkgNC40OTk5OCAxNi44OTQ0IDQuNjc0OTggMTcuMjQ0NCA1LjAyNDk4QzE3LjU5NDQgNS4zNzQ5OCAxNy43Njk0IDUuODAyNTQgMTcuNzY5NCA2LjMwNzY4VjEwLjg4NDZMMjAuNTA1OSA4LjE0ODA4QzIwLjY1OTggNy45OTQyNCAyMC44Mjg3IDcuOTU3MzggMjEuMDEyNyA4LjAzNzVDMjEuMTk2NiA4LjExNzYzIDIxLjI4ODYgOC4yNjQ3NSAyMS4yODg2IDguNDc4ODVWMTUuNTIxMUMyMS4yODg2IDE1LjczNTIgMjEuMTk2NiAxNS44ODIzIDIxLjAxMjcgMTUuOTYyNEMyMC44Mjg3IDE2LjA0MjUgMjAuNjU5OCAxNi4wMDU3IDIwLjUwNTkgMTUuODUxOFpNMTkuNDQ2MyAyMS42MzA3TDIuMDM2OCA0LjIyMTFDMS44OTgzMyA0LjA4MjY1IDEuODI5MSAzLjkxNTM1IDEuODI5MSAzLjcxOTJDMS44MjkxIDMuNTIzMDUgMS45MDY2NyAzLjM0NzQyIDIuMDYxOCAzLjE5MjNDMi4yMDY2NyAzLjA0NzQyIDIuMzgyMyAyLjk3NDk4IDIuNTg4NyAyLjk3NDk4QzIuNzk1MSAyLjk3NDk4IDIuOTcwNzMgMy4wNDc0MiAzLjExNTYgMy4xOTIzTDIwLjUyNTIgMjAuNjAxOEMyMC42NjM2IDIwLjc0MDMgMjAuNzMyOCAyMC45MDc2IDIwLjczMjggMjEuMTAzN0MyMC43MzI4IDIxLjI5OTkgMjAuNjU1MyAyMS40NzU1IDIwLjUwMDIgMjEuNjMwN0MyMC4zNTUzIDIxLjc3NTUgMjAuMTc4IDIxLjg0NzkgMTkuOTY4NCAyMS44NDc5QzE5Ljc1ODggMjEuODQ3OSAxOS41ODQ4IDIxLjc3NTUgMTkuNDQ2MyAyMS42MzA3Wk00LjQ0MjU1IDQuNTE5MjNMNS45MjMyOCA1Ljk5OTk1SDQuNTc3MThDNC40ODc0MyA1Ljk5OTk1IDQuNDEzNyA2LjAyODggNC4zNTYgNi4wODY1QzQuMjk4MyA2LjE0NDIgNC4yNjk0NSA2LjIxNzkzIDQuMjY5NDUgNi4zMDc2OFYxNy42OTIyQzQuMjY5NDUgMTcuNzgyIDQuMjk4MyAxNy44NTU3IDQuMzU2IDE3LjkxMzRDNC40MTM3IDE3Ljk3MTEgNC40ODc0MyAxOCA0LjU3NzE4IDE4SDE1Ljk2MTdDMTYuMDUxNSAxOCAxNi4xMjUyIDE3Ljk3MTEgMTYuMTgyOSAxNy45MTM0QzE2LjI0MDYgMTcuODU1NyAxNi4yNjk1IDE3Ljc4MiAxNi4yNjk1IDE3LjY5MjJWMTYuMzQ2MUwxNy43NTAyIDE3LjgyNjhDMTcuNzE4MSAxOC4yOTM1IDE3LjUzMTkgMTguNjg5IDE3LjE5MTUgMTkuMDEzNEMxNi44NTExIDE5LjMzNzcgMTYuNDQxMiAxOS40OTk5IDE1Ljk2MTcgMTkuNDk5OUg0LjU3NzE4QzQuMDcyMDQgMTkuNDk5OSAzLjY0NDQ4IDE5LjMyNDkgMy4yOTQ0OCAxOC45NzQ5QzIuOTQ0NDggMTguNjI0OSAyLjc2OTQ4IDE4LjE5NzQgMi43Njk0OCAxNy42OTIyVjYuMzA3NjhDMi43Njk0OCA1LjgyODE5IDIuOTMxNjYgNS40MTgyNiAzLjI1NjAzIDUuMDc3ODhDMy41ODAzOCA0LjczNzQ5IDMuOTc1ODkgNC41NTEyOCA0LjQ0MjU1IDQuNTE5MjNaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNTVcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTUpXCI+XG48cGF0aCBkPVwiTTE4Ljk0NjIgMjEuNjExNUwxNi40NTc3IDE5LjEyMzFDMTYuMjUgMTkuMjQzNiAxNi4wNDM5IDE5LjM1ODMgMTUuODM5NCAxOS40NjczQzE1LjYzNSAxOS41NzYyIDE1LjQyMDYgMTkuNjc3NSAxNS4xOTYyIDE5Ljc3MTFDMTQuOTQ2MiAxOS44NzI0IDE0LjcxMzIgMTkuODQxOSAxNC40OTcyIDE5LjY3OThDMTQuMjgxMiAxOS41MTc2IDE0LjE3MzIgMTkuMjkyOSAxNC4xNzMyIDE5LjAwNThDMTQuMTczMiAxOC44NjczIDE0LjIxNDUgMTguNzQ2NSAxNC4yOTcyIDE4LjY0MzNDMTQuMzc5OSAxOC41NDAxIDE0LjQ4MjEgMTguNDYxNSAxNC42MDM5IDE4LjQwNzdDMTQuNzM3MiAxOC4zNTc3IDE0Ljg2OCAxOC4zMDE5IDE0Ljk5NjIgMTguMjQwNEMxNS4xMjQ0IDE4LjE3ODkgMTUuMjUwMSAxOC4xMTE1IDE1LjM3MzEgMTguMDM4NUwxMS43ODg1IDE0LjQ1MzhWMTYuNjAzOEMxMS43ODg1IDE3LjAwODkgMTEuNjAzNiAxNy4yODkzIDExLjIzMzcgMTcuNDQ1MUMxMC44NjM4IDE3LjYwMDkgMTAuNTM2NiAxNy41MzY1IDEwLjI1MiAxNy4yNTE5TDcuNTAwMDggMTQuNUg0LjY5MjRDNC40MzQ3MiAxNC41IDQuMjE5NjYgMTQuNDEzOCA0LjA0NzIzIDE0LjI0MTNDMy44NzQ3OSAxNC4wNjg5IDMuNzg4NTggMTMuODUzOCAzLjc4ODU4IDEzLjU5NjFWMTAuNDAzOUMzLjc4ODU4IDEwLjE0NjIgMy44NzQ3OSA5LjkzMTE0IDQuMDQ3MjMgOS43NTg3MUM0LjIxOTY2IDkuNTg2MjYgNC40MzQ3MiA5LjUwMDAzIDQuNjkyNCA5LjUwMDAzSDYuODM0N0wyLjUyMzE1IDUuMTg4NDhDMi4zODQ3IDUuMDUwMDMgMi4zMTM4NyA0Ljg3NiAyLjMxMDY1IDQuNjY2MzhDMi4zMDc0NSA0LjQ1Njc4IDIuMzc4MjggNC4yNzk1NCAyLjUyMzE1IDQuMTM0NjZDMi42NjgwMiAzLjk4OTc5IDIuODQzNjYgMy45MTczNiAzLjA1MDA4IDMuOTE3MzZDMy4yNTY0OCAzLjkxNzM2IDMuNDMyMTEgMy45ODk3OSAzLjU3Njk4IDQuMTM0NjZMMjAgMjAuNTU3N0MyMC4xMzg1IDIwLjY5NjIgMjAuMjA5MyAyMC44NzAyIDIwLjIxMjUgMjEuMDc5OEMyMC4yMTU3IDIxLjI4OTQgMjAuMTQ0OSAyMS40NjY3IDIwIDIxLjYxMTVDMTkuODU1MSAyMS43NTY0IDE5LjY3OTUgMjEuODI4OCAxOS40NzMxIDIxLjgyODhDMTkuMjY2NyAyMS44Mjg4IDE5LjA5MTEgMjEuNzU2NCAxOC45NDYyIDIxLjYxMTVaTTE1LjE5NjIgNC4xNzg4OEMxNi43ODcyIDQuODM2NTggMTguMDY1NyA1Ljg2NTc1IDE5LjAzMTggNy4yNjYzOEMxOS45OTc4IDguNjY3MDIgMjAuNDgwOCAxMC4yMzY2IDIwLjQ4MDggMTEuOTc1QzIwLjQ4MDggMTIuODUxOSAyMC4zNTAzIDEzLjY5MzkgMjAuMDg5NCAxNC41MDFDMTkuODI4NSAxNS4zMDggMTkuNDYwMyAxNi4wNTE5IDE4Ljk4NDYgMTYuNzMyN0wxNy45MDk2IDE1LjY1NzdDMTguMjU3MSAxNS4xMTU0IDE4LjUyMjUgMTQuNTMzNyAxOC43MDU4IDEzLjkxMjVDMTguODg5MiAxMy4yOTE0IDE4Ljk4MDggMTIuNjQ1NSAxOC45ODA4IDExLjk3NUMxOC45ODA4IDEwLjUzNCAxOC41ODE1IDkuMjM0OTYgMTcuNzgyOCA4LjA3NzkxQzE2Ljk4NCA2LjkyMDg2IDE1LjkyNDQgNi4wNzU2NyAxNC42MDM5IDUuNTQyMzNDMTQuNDY1NCA1LjQ4ODQ4IDE0LjM1OSA1LjQwNTc5IDE0LjI4NDcgNS4yOTQyNkMxNC4yMTAzIDUuMTgyNzIgMTQuMTczMiA1LjA1NzcyIDE0LjE3MzIgNC45MTkyNkMxNC4xNzMyIDQuNjQyMzQgMTQuMjgxMiA0LjQyNDQgMTQuNDk3MiA0LjI2NTQzQzE0LjcxMzIgNC4xMDY0NyAxNC45NDYyIDQuMDc3NjIgMTUuMTk2MiA0LjE3ODg4Wk0xNS45MjMxIDEzLjY3MTJMMTQuMTczMiAxMS45MjEyVjguMjk2MThDMTQuODQ3NSA4LjY2Mjg1IDE1LjM2ODYgOS4xNzkxOSAxNS43MzY2IDkuODQ1MjFDMTYuMTA0NSAxMC41MTEyIDE2LjI4ODUgMTEuMjI5NSAxNi4yODg1IDEyQzE2LjI4ODUgMTIuMjk0OSAxNi4yNTggMTIuNTgyNCAxNi4xOTcyIDEyLjg2MjVDMTYuMTM2MyAxMy4xNDI2IDE2LjA0NDkgMTMuNDEyMiAxNS45MjMxIDEzLjY3MTJaTTExLjc4ODUgOS41MzY1OEw5LjYzMDgzIDcuMzY5MjhMMTAuMjUyIDYuNzQ4MTZDMTAuNTM2NiA2LjQ2MzU0IDEwLjg2MzggNi4zOTkxMiAxMS4yMzM3IDYuNTU0ODhDMTEuNjAzNiA2LjcxMDY3IDExLjc4ODUgNi45OTExMiAxMS43ODg1IDcuMzk2MjNWOS41MzY1OFpNMTAuMjg4NSAxNS4xNVYxMi45NTM5TDguMzM0NjggMTFINS4yODg1M1YxM0g4LjEzODUzTDEwLjI4ODUgMTUuMTVaXCIgZmlsbD1cIiMyQzMzMzZcIi8+XG48L2c+XG48L3N2Zz5cbiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF82XzMwNTJcIiBzdHlsZT1cIm1hc2stdHlwZTphbHBoYVwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgeD1cIjBcIiB5PVwiMFwiIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiPlxuPHJlY3Qgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgZmlsbD1cIiNEOUQ5RDlcIi8+XG48L21hc2s+XG48ZyBtYXNrPVwidXJsKCNtYXNrMF82XzMwNTIpXCI+XG48cGF0aCBkPVwiTTE4Ljk0NjIgMjEuNjExNUwxNi40NTc3IDE5LjEyMzFDMTYuMjUgMTkuMjQzNiAxNi4wNDM5IDE5LjM1ODMgMTUuODM5NCAxOS40NjczQzE1LjYzNSAxOS41NzYyIDE1LjQyMDYgMTkuNjc3NSAxNS4xOTYyIDE5Ljc3MTFDMTQuOTQ2MiAxOS44NzI0IDE0LjcxMzIgMTkuODQxOSAxNC40OTcyIDE5LjY3OThDMTQuMjgxMiAxOS41MTc2IDE0LjE3MzIgMTkuMjkyOSAxNC4xNzMyIDE5LjAwNThDMTQuMTczMiAxOC44NjczIDE0LjIxNDUgMTguNzQ2NSAxNC4yOTcyIDE4LjY0MzNDMTQuMzc5OSAxOC41NDAxIDE0LjQ4MjEgMTguNDYxNSAxNC42MDM5IDE4LjQwNzdDMTQuNzM3MiAxOC4zNTc3IDE0Ljg2OCAxOC4zMDE5IDE0Ljk5NjIgMTguMjQwNEMxNS4xMjQ0IDE4LjE3ODkgMTUuMjUwMSAxOC4xMTE1IDE1LjM3MzEgMTguMDM4NUwxMS43ODg1IDE0LjQ1MzhWMTYuNjAzOEMxMS43ODg1IDE3LjAwODkgMTEuNjAzNiAxNy4yODkzIDExLjIzMzcgMTcuNDQ1MUMxMC44NjM4IDE3LjYwMDkgMTAuNTM2NiAxNy41MzY1IDEwLjI1MiAxNy4yNTE5TDcuNTAwMDggMTQuNUg0LjY5MjRDNC40MzQ3MiAxNC41IDQuMjE5NjYgMTQuNDEzOCA0LjA0NzIzIDE0LjI0MTNDMy44NzQ3OSAxNC4wNjg5IDMuNzg4NTggMTMuODUzOCAzLjc4ODU4IDEzLjU5NjFWMTAuNDAzOUMzLjc4ODU4IDEwLjE0NjIgMy44NzQ3OSA5LjkzMTE0IDQuMDQ3MjMgOS43NTg3MUM0LjIxOTY2IDkuNTg2MjYgNC40MzQ3MiA5LjUwMDAzIDQuNjkyNCA5LjUwMDAzSDYuODM0N0wyLjUyMzE1IDUuMTg4NDhDMi4zODQ3IDUuMDUwMDMgMi4zMTM4NyA0Ljg3NiAyLjMxMDY1IDQuNjY2MzhDMi4zMDc0NSA0LjQ1Njc4IDIuMzc4MjggNC4yNzk1NCAyLjUyMzE1IDQuMTM0NjZDMi42NjgwMiAzLjk4OTc5IDIuODQzNjYgMy45MTczNiAzLjA1MDA4IDMuOTE3MzZDMy4yNTY0OCAzLjkxNzM2IDMuNDMyMTEgMy45ODk3OSAzLjU3Njk4IDQuMTM0NjZMMjAgMjAuNTU3N0MyMC4xMzg1IDIwLjY5NjIgMjAuMjA5MyAyMC44NzAyIDIwLjIxMjUgMjEuMDc5OEMyMC4yMTU3IDIxLjI4OTQgMjAuMTQ0OSAyMS40NjY3IDIwIDIxLjYxMTVDMTkuODU1MSAyMS43NTY0IDE5LjY3OTUgMjEuODI4OCAxOS40NzMxIDIxLjgyODhDMTkuMjY2NyAyMS44Mjg4IDE5LjA5MTEgMjEuNzU2NCAxOC45NDYyIDIxLjYxMTVaTTE1LjE5NjIgNC4xNzg4OEMxNi43ODcyIDQuODM2NTggMTguMDY1NyA1Ljg2NTc1IDE5LjAzMTggNy4yNjYzOEMxOS45OTc4IDguNjY3MDIgMjAuNDgwOCAxMC4yMzY2IDIwLjQ4MDggMTEuOTc1QzIwLjQ4MDggMTIuODUxOSAyMC4zNTAzIDEzLjY5MzkgMjAuMDg5NCAxNC41MDFDMTkuODI4NSAxNS4zMDggMTkuNDYwMyAxNi4wNTE5IDE4Ljk4NDYgMTYuNzMyN0wxNy45MDk2IDE1LjY1NzdDMTguMjU3MSAxNS4xMTU0IDE4LjUyMjUgMTQuNTMzNyAxOC43MDU4IDEzLjkxMjVDMTguODg5MiAxMy4yOTE0IDE4Ljk4MDggMTIuNjQ1NSAxOC45ODA4IDExLjk3NUMxOC45ODA4IDEwLjUzNCAxOC41ODE1IDkuMjM0OTYgMTcuNzgyOCA4LjA3NzkxQzE2Ljk4NCA2LjkyMDg2IDE1LjkyNDQgNi4wNzU2NyAxNC42MDM5IDUuNTQyMzNDMTQuNDY1NCA1LjQ4ODQ4IDE0LjM1OSA1LjQwNTc5IDE0LjI4NDcgNS4yOTQyNkMxNC4yMTAzIDUuMTgyNzIgMTQuMTczMiA1LjA1NzcyIDE0LjE3MzIgNC45MTkyNkMxNC4xNzMyIDQuNjQyMzQgMTQuMjgxMiA0LjQyNDQgMTQuNDk3MiA0LjI2NTQzQzE0LjcxMzIgNC4xMDY0NyAxNC45NDYyIDQuMDc3NjIgMTUuMTk2MiA0LjE3ODg4Wk0xNS45MjMxIDEzLjY3MTJMMTQuMTczMiAxMS45MjEyVjguMjk2MThDMTQuODQ3NSA4LjY2Mjg1IDE1LjM2ODYgOS4xNzkxOSAxNS43MzY2IDkuODQ1MjFDMTYuMTA0NSAxMC41MTEyIDE2LjI4ODUgMTEuMjI5NSAxNi4yODg1IDEyQzE2LjI4ODUgMTIuMjk0OSAxNi4yNTggMTIuNTgyNCAxNi4xOTcyIDEyLjg2MjVDMTYuMTM2MyAxMy4xNDI2IDE2LjA0NDkgMTMuNDEyMiAxNS45MjMxIDEzLjY3MTJaTTExLjc4ODUgOS41MzY1OEw5LjYzMDgzIDcuMzY5MjhMMTAuMjUyIDYuNzQ4MTZDMTAuNTM2NiA2LjQ2MzU0IDEwLjg2MzggNi4zOTkxMiAxMS4yMzM3IDYuNTU0ODhDMTEuNjAzNiA2LjcxMDY3IDExLjc4ODUgNi45OTExMiAxMS43ODg1IDcuMzk2MjNWOS41MzY1OFpcIiBmaWxsPVwiIzJDMzMzNlwiLz5cbjwvZz5cbjwvc3ZnPlxuIiwiPHN2ZyB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI+XG48bWFzayBpZD1cIm1hc2swXzZfMzA1OFwiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzZfMzA1OClcIj5cbjxwYXRoIGQ9XCJNMTUuMDYxNCAxOS43NzExQzE0LjgxMTQgMTkuODcyNCAxNC41Nzg0IDE5Ljg0MTggMTQuMzYyNCAxOS42NzkzQzE0LjE0NjQgMTkuNTE2OCAxNC4wMzg0IDE5LjI5MTggMTQuMDM4NCAxOS4wMDQzQzE0LjAzODQgMTguODY2OCAxNC4wNzk3IDE4Ljc0NjQgMTQuMTYyNCAxOC42NDMyQzE0LjI0NTEgMTguNTQgMTQuMzQ3MyAxOC40NjE1IDE0LjQ2OTEgMTguNDA3N0MxNS43ODk2IDE3Ljg3NDMgMTYuODQ5MyAxNy4wMjkxIDE3LjY0OCAxNS44NzIxQzE4LjQ0NjcgMTQuNzE1IDE4Ljg0NjEgMTMuNDE2IDE4Ljg0NjEgMTEuOTc1QzE4Ljg0NjEgMTAuNTM0IDE4LjQ0NjcgOS4yMzQ5NCAxNy42NDggOC4wNzc4OUMxNi44NDkzIDYuOTIwODQgMTUuNzg5NiA2LjA3NTY0IDE0LjQ2OTEgNS41NDIzMUMxNC4zMzA3IDUuNDg4NDYgMTQuMjI0MyA1LjQwNTIgMTQuMTQ5OSA1LjI5MjU0QzE0LjA3NTYgNS4xNzk4NyAxNC4wMzg0IDUuMDU0NjkgMTQuMDM4NCA0LjkxNjk5QzE0LjAzODQgNC42NDE1NyAxNC4xNDY0IDQuNDI0MzggMTQuMzYyNCA0LjI2NTQxQzE0LjU3ODQgNC4xMDY0NCAxNC44MTE0IDQuMDc3NTkgMTUuMDYxNCA0LjE3ODg2QzE2LjY0NiA0LjgzNjU2IDE3LjkyMjkgNS44NjUwMyAxOC44OTIyIDcuMjY0MjZDMTkuODYxNCA4LjY2MzQ4IDIwLjM0NiAxMC4yMzM3IDIwLjM0NiAxMS45NzVDMjAuMzQ2IDEzLjcxNjMgMTkuODYxNCAxNS4yODY1IDE4Ljg5MjIgMTYuNjg1N0MxNy45MjI5IDE4LjA4NDkgMTYuNjQ2IDE5LjExMzQgMTUuMDYxNCAxOS43NzExWk00LjU1NzYzIDE0LjVDNC4zMDE1NSAxNC41IDQuMDg2ODkgMTQuNDEzMyAzLjkxMzY2IDE0LjI0MDFDMy43NDA0MyAxNC4wNjY5IDMuNjUzODEgMTMuODUyMiAzLjY1MzgxIDEzLjU5NjFWMTAuNDAzOUMzLjY1MzgxIDEwLjE0NzggMy43NDA0MyA5LjkzMzEyIDMuOTEzNjYgOS43NTk4OUM0LjA4Njg5IDkuNTg2NjQgNC4zMDE1NSA5LjUwMDAxIDQuNTU3NjMgOS41MDAwMUg3LjM2NTMxTDEwLjExNzIgNi43NDgxNEMxMC40MDE4IDYuNDYzNTIgMTAuNzI5MSA2LjM5OTU5IDExLjA5ODkgNi41NTYzNkMxMS40Njg4IDYuNzEzMTQgMTEuNjUzNyA2Ljk5MzA5IDExLjY1MzcgNy4zOTYyMVYxNi42MDM4QzExLjY1MzcgMTcuMDA2OSAxMS40Njg4IDE3LjI4NjggMTEuMDk4OSAxNy40NDM2QzEwLjcyOTEgMTcuNjAwNCAxMC40MDE4IDE3LjUzNjUgMTAuMTE3MiAxNy4yNTE4TDcuMzY1MzEgMTQuNUg0LjU1NzYzWk0xNC4wMzg0IDE1LjY1MzhWOC4yOTYxNkMxNC42ODU4IDguNjQ2MTYgMTUuMjAwMiA5LjE1NDE3IDE1LjU4MTYgOS44MjAxOUMxNS45NjMgMTAuNDg2MiAxNi4xNTM3IDExLjIxMjggMTYuMTUzNyAxMkMxNi4xNTM3IDEyLjc4NzIgMTUuOTYzIDEzLjUwNTQgMTUuNTgxNiAxNC4xNTQ4QzE1LjIwMDIgMTQuODA0MSAxNC42ODU4IDE1LjMwMzggMTQuMDM4NCAxNS42NTM4Wk0xMC4xNTM4IDguODQ5OTlMOC4wMDM3NiAxMUg1LjE1Mzc2VjEzSDguMDAzNzZMMTAuMTUzOCAxNS4xNVY4Ljg0OTk5WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIj5cbjxtYXNrIGlkPVwibWFzazBfNl8zMDQ2XCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIiBtYXNrVW5pdHM9XCJ1c2VyU3BhY2VPblVzZVwiIHg9XCIwXCIgeT1cIjBcIiB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIj5cbjxyZWN0IHdpZHRoPVwiMjRcIiBoZWlnaHQ9XCIyNFwiIGZpbGw9XCIjRDlEOUQ5XCIvPlxuPC9tYXNrPlxuPGcgbWFzaz1cInVybCgjbWFzazBfNl8zMDQ2KVwiPlxuPHBhdGggZD1cIk0xNS4wNjE0IDE5Ljc3MTFDMTQuODExNCAxOS44NzI0IDE0LjU3ODQgMTkuODQxOSAxNC4zNjI0IDE5LjY3OThDMTQuMTQ2NCAxOS41MTc2IDE0LjAzODQgMTkuMjkyOSAxNC4wMzg0IDE5LjAwNTdDMTQuMDM4NCAxOC44NjczIDE0LjA3OTcgMTguNzQ2NCAxNC4xNjI0IDE4LjY0MzJDMTQuMjQ1MSAxOC41NCAxNC4zNDczIDE4LjQ2MTUgMTQuNDY5MSAxOC40MDc3QzE1Ljc4OTYgMTcuODc0MyAxNi44NDkzIDE3LjAyOTEgMTcuNjQ4IDE1Ljg3MjFDMTguNDQ2NyAxNC43MTUgMTguODQ2MSAxMy40MTYgMTguODQ2MSAxMS45NzVDMTguODQ2MSAxMC41MzQgMTguNDQ2NyA5LjIzNDk0IDE3LjY0OCA4LjA3Nzg5QzE2Ljg0OTMgNi45MjA4NCAxNS43ODk2IDYuMDc1NjQgMTQuNDY5MSA1LjU0MjMxQzE0LjMzMDcgNS40ODg0NiAxNC4yMjQzIDUuNDA1NzcgMTQuMTQ5OSA1LjI5NDI0QzE0LjA3NTYgNS4xODI3IDE0LjAzODQgNS4wNTc3IDE0LjAzODQgNC45MTkyNEMxNC4wMzg0IDQuNjQyMzIgMTQuMTQ2NCA0LjQyNDM4IDE0LjM2MjQgNC4yNjU0MUMxNC41Nzg0IDQuMTA2NDQgMTQuODExNCA0LjA3NzU5IDE1LjA2MTQgNC4xNzg4NkMxNi42NDYgNC44MzY1NiAxNy45MjI5IDUuODY1NzMgMTguODkyMiA3LjI2NjM2QzE5Ljg2MTQgOC42NjY5OSAyMC4zNDYgMTAuMjM2NSAyMC4zNDYgMTEuOTc1QzIwLjM0NiAxMy43MTM0IDE5Ljg2MTQgMTUuMjgzIDE4Ljg5MjIgMTYuNjgzNkMxNy45MjI5IDE4LjA4NDIgMTYuNjQ2IDE5LjExMzQgMTUuMDYxNCAxOS43NzExWk00LjU1NzYzIDE0LjVDNC4yOTk5NSAxNC41IDQuMDg0ODkgMTQuNDEzNyAzLjkxMjQ2IDE0LjI0MTNDMy43NDAwMyAxNC4wNjg5IDMuNjUzODEgMTMuODUzOCAzLjY1MzgxIDEzLjU5NjFWMTAuNDAzOUMzLjY1MzgxIDEwLjE0NjIgMy43NDAwMyA5LjkzMTEyIDMuOTEyNDYgOS43NTg2OUM0LjA4NDg5IDkuNTg2MjQgNC4yOTk5NSA5LjUwMDAxIDQuNTU3NjMgOS41MDAwMUg3LjM2NTMxTDEwLjExNzIgNi43NDgxNEMxMC40MDE4IDYuNDYzNTIgMTAuNzI5MSA2LjM5OTA5IDExLjA5ODkgNi41NTQ4NkMxMS40Njg4IDYuNzEwNjQgMTEuNjUzNyA2Ljk5MTA5IDExLjY1MzcgNy4zOTYyMVYxNi42MDM4QzExLjY1MzcgMTcuMDA4OSAxMS40Njg4IDE3LjI4OTMgMTEuMDk4OSAxNy40NDUxQzEwLjcyOTEgMTcuNjAwOSAxMC40MDE4IDE3LjUzNjUgMTAuMTE3MiAxNy4yNTE4TDcuMzY1MzEgMTQuNUg0LjU1NzYzWk0xNC4wMzg0IDE1LjY1MzhWOC4yOTYxNkMxNC42ODU4IDguNjQ2MTYgMTUuMjAwMiA5LjE1NDE3IDE1LjU4MTYgOS44MjAxOUMxNS45NjMgMTAuNDg2MiAxNi4xNTM3IDExLjIxMjggMTYuMTUzNyAxMkMxNi4xNTM3IDEyLjc4NzIgMTUuOTYzIDEzLjUwNTQgMTUuNTgxNiAxNC4xNTQ4QzE1LjIwMDIgMTQuODA0MSAxNC42ODU4IDE1LjMwMzggMTQuMDM4NCAxNS42NTM4WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLCI8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBmaWxsPVwibm9uZVwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIj5cbiAgPG1hc2sgaWQ9XCJhXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgeD1cIjBcIiB5PVwiMFwiIG1hc2tVbml0cz1cInVzZXJTcGFjZU9uVXNlXCIgc3R5bGU9XCJtYXNrLXR5cGU6YWxwaGFcIj5cbiAgICA8cGF0aCBmaWxsPVwiI0Q5RDlEOVwiIGQ9XCJNMCAwaDI0djI0SDB6XCIvPlxuICA8L21hc2s+XG4gIDxnIG1hc2s9XCJ1cmwoI2EpXCI+XG4gICAgPHBhdGggZmlsbD1cIiMyQzMzMzZcIiBkPVwiTTIuNzI1IDIxYS45NzMuOTczIDAgMCAxLS44NS0uNSAxLjA5OCAxLjA5OCAwIDAgMS0uMTM4LS40ODguODk4Ljg5OCAwIDAgMSAuMTM4LS41MTJsOS4yNS0xNmEuOTguOTggMCAwIDEgLjM4Ny0uMzc1QzExLjY3MSAzLjA0MiAxMS44MzMgMyAxMiAzYy4xNjYgMCAuMzI5LjA0Mi40ODcuMTI1YS45ODMuOTgzIDAgMCAxIC4zODguMzc1bDkuMjUgMTZjLjEuMTY3LjE0Ni4zMzcuMTM3LjUxMmExLjA5OCAxLjA5OCAwIDAgMS0uMTM3LjQ4OC45NzMuOTczIDAgMCAxLS44NS41SDIuNzI1Wk0xMiAxOGMuMjgzIDAgLjUyLS4wOTYuNzEyLS4yODhBLjk2OC45NjggMCAwIDAgMTMgMTdhLjk2OC45NjggMCAwIDAtLjI4OC0uNzEyQS45NjguOTY4IDAgMCAwIDEyIDE2YS45NjguOTY4IDAgMCAwLS43MTMuMjg4QS45NjguOTY4IDAgMCAwIDExIDE3YzAgLjI4My4wOTYuNTIuMjg3LjcxMi4xOTIuMTkyLjQzLjI4OC43MTMuMjg4Wm0wLTNhLjk3Ljk3IDAgMCAwIC43MTItLjI4N0EuOTY4Ljk2OCAwIDAgMCAxMyAxNHYtM2EuOTY4Ljk2OCAwIDAgMC0uMjg4LS43MTNBLjk2OC45NjggMCAwIDAgMTIgMTBhLjk2OC45NjggMCAwIDAtLjcxMy4yODdBLjk2OC45NjggMCAwIDAgMTEgMTF2M2MwIC4yODMuMDk2LjUyLjI4Ny43MTMuMTkyLjE5MS40My4yODcuNzEzLjI4N1pcIi8+XG4gIDwvZz5cbjwvc3ZnPiIsIjxzdmcgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiPlxuPG1hc2sgaWQ9XCJtYXNrMF81NTVfMzM2N1wiIHN0eWxlPVwibWFzay10eXBlOmFscGhhXCIgbWFza1VuaXRzPVwidXNlclNwYWNlT25Vc2VcIiB4PVwiMFwiIHk9XCIwXCIgd2lkdGg9XCIyNFwiIGhlaWdodD1cIjI0XCI+XG48cmVjdCB3aWR0aD1cIjI0XCIgaGVpZ2h0PVwiMjRcIiBmaWxsPVwiI0Q5RDlEOVwiLz5cbjwvbWFzaz5cbjxnIG1hc2s9XCJ1cmwoI21hc2swXzU1NV8zMzY3KVwiPlxuPHBhdGggZD1cIk0zLjQyNTU1IDIwLjVDMy4yNTYwNSAyMC41IDMuMTAzODIgMjAuNDU4NiAyLjk2ODg3IDIwLjM3NTdDMi44MzM5MiAyMC4yOTI5IDIuNzI4OTcgMjAuMTgzNiAyLjY1NCAyMC4wNDgxQzIuNTc2MDIgMTkuOTEzNSAyLjUzMzEyIDE5Ljc2NzYgMi41MjUzMiAxOS42MTA2QzIuNTE3NTIgMTkuNDUzNSAyLjU1OTkgMTkuMjk4IDIuNjUyNDUgMTkuMTQ0TDExLjIxMzIgNC4zNTYxNkMxMS4zMDU3IDQuMjAyMTIgMTEuNDIxNiA0LjA4ODI1IDExLjU2MDcgNC4wMTQ1M0MxMS42OTk4IDMuOTQwOCAxMS44NDYyIDMuOTAzOTMgMTIuMDAwMSAzLjkwMzkzQzEyLjE1MzkgMy45MDM5MyAxMi4zMDA0IDMuOTQwOCAxMi40Mzk1IDQuMDE0NTNDMTIuNTc4NiA0LjA4ODI1IDEyLjY5NDQgNC4yMDIxMiAxMi43ODcgNC4zNTYxNkwyMS4zNDc3IDE5LjE0NEMyMS40NDAzIDE5LjI5OCAyMS40ODI3IDE5LjQ1MzUgMjEuNDc0OSAxOS42MTA2QzIxLjQ2NzEgMTkuNzY3NiAyMS40MjQyIDE5LjkxMzUgMjEuMzQ2MiAyMC4wNDgxQzIxLjI3MTIgMjAuMTgzNiAyMS4xNjYzIDIwLjI5MjkgMjEuMDMxMyAyMC4zNzU3QzIwLjg5NjQgMjAuNDU4NiAyMC43NDQxIDIwLjUgMjAuNTc0NiAyMC41SDMuNDI1NTVaTTQuNDUwMSAxOUgxOS41NTAxTDEyLjAwMDEgNi4wMDAwM0w0LjQ1MDEgMTlaTTEyLjAwMDEgMTcuODA3N0MxMi4yMjg5IDE3LjgwNzcgMTIuNDIwOCAxNy43MzAzIDEyLjU3NTYgMTcuNTc1NUMxMi43MzA0IDE3LjQyMDcgMTIuODA3OCAxNy4yMjg5IDEyLjgwNzggMTdDMTIuODA3OCAxNi43NzEyIDEyLjczMDQgMTYuNTc5NCAxMi41NzU2IDE2LjQyNDZDMTIuNDIwOCAxNi4yNjk4IDEyLjIyODkgMTYuMTkyNCAxMi4wMDAxIDE2LjE5MjRDMTEuNzcxMiAxNi4xOTI0IDExLjU3OTQgMTYuMjY5OCAxMS40MjQ2IDE2LjQyNDZDMTEuMjY5OCAxNi41Nzk0IDExLjE5MjQgMTYuNzcxMiAxMS4xOTI0IDE3QzExLjE5MjQgMTcuMjI4OSAxMS4yNjk4IDE3LjQyMDcgMTEuNDI0NiAxNy41NzU1QzExLjU3OTQgMTcuNzMwMyAxMS43NzEyIDE3LjgwNzcgMTIuMDAwMSAxNy44MDc3Wk0xMi4wMDA0IDE1LjE5MjRDMTIuMjEzIDE1LjE5MjQgMTIuMzkxMSAxNS4xMjA1IDEyLjUzNDcgMTQuOTc2N0MxMi42NzgzIDE0LjgzMyAxMi43NTAxIDE0LjY1NDkgMTIuNzUwMSAxNC40NDI0VjEwLjk0MjNDMTIuNzUwMSAxMC43Mjk4IDEyLjY3ODIgMTAuNTUxNyAxMi41MzQ0IDEwLjQwOEMxMi4zOTA2IDEwLjI2NDIgMTIuMjEyNCAxMC4xOTI0IDExLjk5OTggMTAuMTkyNEMxMS43ODcyIDEwLjE5MjQgMTEuNjA5MSAxMC4yNjQyIDExLjQ2NTUgMTAuNDA4QzExLjMyMTkgMTAuNTUxNyAxMS4yNTAxIDEwLjcyOTggMTEuMjUwMSAxMC45NDIzVjE0LjQ0MjRDMTEuMjUwMSAxNC42NTQ5IDExLjMyMiAxNC44MzMgMTEuNDY1OCAxNC45NzY3QzExLjYwOTYgMTUuMTIwNSAxMS43ODc4IDE1LjE5MjQgMTIuMDAwNCAxNS4xOTI0WlwiIGZpbGw9XCIjMkMzMzM2XCIvPlxuPC9nPlxuPC9zdmc+XG4iLG51bGwsImltcG9ydCAkN1Y0SlokYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Zm9yd2FyZFJlZiBhcyAkN1Y0SlokZm9yd2FyZFJlZiwgY3JlYXRlRWxlbWVudCBhcyAkN1Y0SlokY3JlYXRlRWxlbWVudH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkN1Y0SlokUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBMYWJlbFxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCR2YXIkTkFNRSA9ICdMYWJlbCc7XG5jb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYjA0YmUyOWFhMjAxZDRmNSA9IC8qI19fUFVSRV9fKi8gJDdWNEpaJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDdWNEpaJGNyZWF0ZUVsZW1lbnQoJDdWNEpaJFByaW1pdGl2ZS5sYWJlbCwgJDdWNEpaJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBwcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZixcbiAgICAgICAgb25Nb3VzZURvd246IChldmVudCk9PntcbiAgICAgICAgICAgIHZhciBfcHJvcHMkb25Nb3VzZURvd247XG4gICAgICAgICAgICAoX3Byb3BzJG9uTW91c2VEb3duID0gcHJvcHMub25Nb3VzZURvd24pID09PSBudWxsIHx8IF9wcm9wcyRvbk1vdXNlRG93biA9PT0gdm9pZCAwIHx8IF9wcm9wcyRvbk1vdXNlRG93bi5jYWxsKHByb3BzLCBldmVudCk7IC8vIHByZXZlbnQgdGV4dCBzZWxlY3Rpb24gd2hlbiBkb3VibGUgY2xpY2tpbmcgbGFiZWxcbiAgICAgICAgICAgIGlmICghZXZlbnQuZGVmYXVsdFByZXZlbnRlZCAmJiBldmVudC5kZXRhaWwgPiAxKSBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICB9XG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJGI3M2E2YzY2ODVlNzIxODQkZXhwb3J0JGIwNGJlMjlhYTIwMWQ0ZjUsIHtcbiAgICBkaXNwbGF5TmFtZTogJGI3M2E2YzY2ODVlNzIxODQkdmFyJE5BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1O1xuXG5cblxuXG5leHBvcnQgeyRiNzNhNmM2Njg1ZTcyMTg0JGV4cG9ydCRiMDRiZTI5YWEyMDFkNGY1IGFzIExhYmVsLCAkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290fTtcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWluZGV4Lm1qcy5tYXBcbiIsbnVsbCxudWxsLCJpbXBvcnQgJGswM3dJJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQge2ZvcndhcmRSZWYgYXMgJGswM3dJJGZvcndhcmRSZWYsIGNyZWF0ZUVsZW1lbnQgYXMgJGswM3dJJGNyZWF0ZUVsZW1lbnR9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtjcmVhdGVDb250ZXh0U2NvcGUgYXMgJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZX0gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb250ZXh0XCI7XG5pbXBvcnQge1ByaW1pdGl2ZSBhcyAkazAzd0kkUHJpbWl0aXZlfSBmcm9tIFwiQHJhZGl4LXVpL3JlYWN0LXByaW1pdGl2ZVwiO1xuXG5cblxuXG5cbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FID0gJ1Byb2dyZXNzJztcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRERUZBVUxUX01BWCA9IDEwMDtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0LCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZl0gPSAkazAzd0kkY3JlYXRlQ29udGV4dFNjb3BlKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0IFskNjc4MjRkOTgyNDUyMDhhMCR2YXIkUHJvZ3Jlc3NQcm92aWRlciwgJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dF0gPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkY3JlYXRlUHJvZ3Jlc3NDb250ZXh0KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FKTtcbmNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiID0gLyojX19QVVJFX18qLyAkazAzd0kkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVQcm9ncmVzczogX19zY29wZVByb2dyZXNzICwgdmFsdWU6IHZhbHVlUHJvcCAsIG1heDogbWF4UHJvcCAsIGdldFZhbHVlTGFiZWw6IGdldFZhbHVlTGFiZWwgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwgLCAuLi5wcm9ncmVzc1Byb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihtYXhQcm9wKSA/IG1heFByb3AgOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVg7XG4gICAgY29uc3QgdmFsdWUgPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlUHJvcCwgbWF4KSA/IHZhbHVlUHJvcCA6IG51bGw7XG4gICAgY29uc3QgdmFsdWVMYWJlbCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyBnZXRWYWx1ZUxhYmVsKHZhbHVlLCBtYXgpIDogdW5kZWZpbmVkO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyLCB7XG4gICAgICAgIHNjb3BlOiBfX3Njb3BlUHJvZ3Jlc3MsXG4gICAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgICAgbWF4OiBtYXhcbiAgICB9LCAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImFyaWEtdmFsdWVtYXhcIjogbWF4LFxuICAgICAgICBcImFyaWEtdmFsdWVtaW5cIjogMCxcbiAgICAgICAgXCJhcmlhLXZhbHVlbm93XCI6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJhcmlhLXZhbHVldGV4dFwiOiB2YWx1ZUxhYmVsLFxuICAgICAgICByb2xlOiBcInByb2dyZXNzYmFyXCIsXG4gICAgICAgIFwiZGF0YS1zdGF0ZVwiOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSh2YWx1ZSwgbWF4KSxcbiAgICAgICAgXCJkYXRhLXZhbHVlXCI6IHZhbHVlICE9PSBudWxsICYmIHZhbHVlICE9PSB2b2lkIDAgPyB2YWx1ZSA6IHVuZGVmaW5lZCxcbiAgICAgICAgXCJkYXRhLW1heFwiOiBtYXhcbiAgICB9LCBwcm9ncmVzc1Byb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLCB7XG4gICAgZGlzcGxheU5hbWU6ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FXG59KTtcbiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiLnByb3BUeXBlcyA9IHtcbiAgICBtYXggKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCBwcm9wVmFsdWUgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyhwcm9wVmFsdWUpO1xuICAgICAgICBpZiAocHJvcFZhbHVlICYmICEkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wVmFsdWUpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3Ioc3RyVmFsLCBjb21wb25lbnROYW1lKSk7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH0sXG4gICAgdmFsdWUgKHByb3BzLCBwcm9wTmFtZSwgY29tcG9uZW50TmFtZSkge1xuICAgICAgICBjb25zdCB2YWx1ZVByb3AgPSBwcm9wc1twcm9wTmFtZV07XG4gICAgICAgIGNvbnN0IHN0clZhbCA9IFN0cmluZyh2YWx1ZVByb3ApO1xuICAgICAgICBjb25zdCBtYXggPSAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZE1heE51bWJlcihwcm9wcy5tYXgpID8gcHJvcHMubWF4IDogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYO1xuICAgICAgICBpZiAodmFsdWVQcm9wICE9IG51bGwgJiYgISQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkVmFsdWVOdW1iZXIodmFsdWVQcm9wLCBtYXgpKSByZXR1cm4gbmV3IEVycm9yKCQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkVmFsdWVFcnJvcihzdHJWYWwsIGNvbXBvbmVudE5hbWUpKTtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxufTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIFByb2dyZXNzSW5kaWNhdG9yXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRJTkRJQ0FUT1JfTkFNRSA9ICdQcm9ncmVzc0luZGljYXRvcic7XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCA9IC8qI19fUFVSRV9fKi8gJGswM3dJJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgdmFyIF9jb250ZXh0JHZhbHVlO1xuICAgIGNvbnN0IHsgX19zY29wZVByb2dyZXNzOiBfX3Njb3BlUHJvZ3Jlc3MgLCAuLi5pbmRpY2F0b3JQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgY29udGV4dCA9ICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciR1c2VQcm9ncmVzc0NvbnRleHQoJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJElORElDQVRPUl9OQU1FLCBfX3Njb3BlUHJvZ3Jlc3MpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICRrMDN3SSRjcmVhdGVFbGVtZW50KCRrMDN3SSRQcmltaXRpdmUuZGl2LCAkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICBcImRhdGEtc3RhdGVcIjogJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldFByb2dyZXNzU3RhdGUoY29udGV4dC52YWx1ZSwgY29udGV4dC5tYXgpLFxuICAgICAgICBcImRhdGEtdmFsdWVcIjogKF9jb250ZXh0JHZhbHVlID0gY29udGV4dC52YWx1ZSkgIT09IG51bGwgJiYgX2NvbnRleHQkdmFsdWUgIT09IHZvaWQgMCA/IF9jb250ZXh0JHZhbHVlIDogdW5kZWZpbmVkLFxuICAgICAgICBcImRhdGEtbWF4XCI6IGNvbnRleHQubWF4XG4gICAgfSwgaW5kaWNhdG9yUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkSU5ESUNBVE9SX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLyBmdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZGVmYXVsdEdldFZhbHVlTGFiZWwodmFsdWUsIG1heCkge1xuICAgIHJldHVybiBgJHtNYXRoLnJvdW5kKHZhbHVlIC8gbWF4ICogMTAwKX0lYDtcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRQcm9ncmVzc1N0YXRlKHZhbHVlLCBtYXhWYWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZSA9PSBudWxsID8gJ2luZGV0ZXJtaW5hdGUnIDogdmFsdWUgPT09IG1heFZhbHVlID8gJ2NvbXBsZXRlJyA6ICdsb2FkaW5nJztcbn1cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcih2YWx1ZSkge1xuICAgIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInO1xufVxuZnVuY3Rpb24gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRNYXhOdW1iZXIobWF4KSB7XG4gICAgLy8gcHJldHRpZXItaWdub3JlXG4gICAgcmV0dXJuICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc051bWJlcihtYXgpICYmICFpc05hTihtYXgpICYmIG1heCA+IDA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNWYWxpZFZhbHVlTnVtYmVyKHZhbHVlLCBtYXgpIHtcbiAgICAvLyBwcmV0dGllci1pZ25vcmVcbiAgICByZXR1cm4gJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzTnVtYmVyKHZhbHVlKSAmJiAhaXNOYU4odmFsdWUpICYmIHZhbHVlIDw9IG1heCAmJiB2YWx1ZSA+PSAwO1xufSAvLyBTcGxpdCB0aGlzIG91dCBmb3IgY2xlYXJlciByZWFkYWJpbGl0eSBvZiB0aGUgZXJyb3IgbWVzc2FnZS5cbmZ1bmN0aW9uICQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRnZXRJbnZhbGlkTWF4RXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgbWF4XFxgIG9mIHZhbHVlIFxcYCR7cHJvcFZhbHVlfVxcYCBzdXBwbGllZCB0byBcXGAke2NvbXBvbmVudE5hbWV9XFxgLiBPbmx5IG51bWJlcnMgZ3JlYXRlciB0aGFuIDAgYXJlIHZhbGlkIG1heCB2YWx1ZXMuIERlZmF1bHRpbmcgdG8gXFxgJHskNjc4MjRkOTgyNDUyMDhhMCR2YXIkREVGQVVMVF9NQVh9XFxgLmA7XG59XG5mdW5jdGlvbiAkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZFZhbHVlRXJyb3IocHJvcFZhbHVlLCBjb21wb25lbnROYW1lKSB7XG4gICAgcmV0dXJuIGBJbnZhbGlkIHByb3AgXFxgdmFsdWVcXGAgb2YgdmFsdWUgXFxgJHtwcm9wVmFsdWV9XFxgIHN1cHBsaWVkIHRvIFxcYCR7Y29tcG9uZW50TmFtZX1cXGAuIFRoZSBcXGB2YWx1ZVxcYCBwcm9wIG11c3QgYmU6XG4gIC0gYSBwb3NpdGl2ZSBudW1iZXJcbiAgLSBsZXNzIHRoYW4gdGhlIHZhbHVlIHBhc3NlZCB0byBcXGBtYXhcXGAgKG9yICR7JDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYfSBpZiBubyBcXGBtYXhcXGAgcHJvcCBpcyBzZXQpXG4gIC0gXFxgbnVsbFxcYCBpZiB0aGUgcHJvZ3Jlc3MgaXMgaW5kZXRlcm1pbmF0ZS5cblxuRGVmYXVsdGluZyB0byBcXGBudWxsXFxgLmA7XG59XG5jb25zdCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiO1xuY29uc3QgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAgPSAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMmI3NzZmN2U3ZWU2MGRiZDtcblxuXG5cblxuZXhwb3J0IHskNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkMzg4ZWIyZDhmNmQzMjYxZiBhcyBjcmVhdGVQcm9ncmVzc1Njb3BlLCAkNjc4MjRkOTgyNDUyMDhhMCRleHBvcnQkYjI1YTMwNGVjN2Q3NDZiYiBhcyBQcm9ncmVzcywgJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JDJiNzc2ZjdlN2VlNjBkYmQgYXMgUHJvZ3Jlc3NJbmRpY2F0b3IsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IGFzIFJvb3QsICQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRhZGI1ODQ3MzdkNzEyYjcwIGFzIEluZGljYXRvcn07XG4vLyMgc291cmNlTWFwcGluZ1VSTD1pbmRleC5tanMubWFwXG4iLG51bGwsImltcG9ydCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCB7Y3JlYXRlRWxlbWVudCBhcyAkNGs0RDAkY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiBhcyAkNGs0RDAkZm9yd2FyZFJlZiwgdXNlUmVmIGFzICQ0azREMCR1c2VSZWYsIHVzZUVmZmVjdCBhcyAkNGs0RDAkdXNlRWZmZWN0fSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7Y3JlYXRlQ29udGV4dFNjb3BlIGFzICQ0azREMCRjcmVhdGVDb250ZXh0U2NvcGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtY29udGV4dFwiO1xuaW1wb3J0IHt1c2VDb21wb3NlZFJlZnMgYXMgJDRrNEQwJHVzZUNvbXBvc2VkUmVmc30gZnJvbSBcIkByYWRpeC11aS9yZWFjdC1jb21wb3NlLXJlZnNcIjtcbmltcG9ydCB7Y3JlYXRlRGlhbG9nU2NvcGUgYXMgJDRrNEQwJGNyZWF0ZURpYWxvZ1Njb3BlLCBSb290IGFzICQ0azREMCRSb290LCBUcmlnZ2VyIGFzICQ0azREMCRUcmlnZ2VyLCBQb3J0YWwgYXMgJDRrNEQwJFBvcnRhbCwgT3ZlcmxheSBhcyAkNGs0RDAkT3ZlcmxheSwgV2FybmluZ1Byb3ZpZGVyIGFzICQ0azREMCRXYXJuaW5nUHJvdmlkZXIsIENvbnRlbnQgYXMgJDRrNEQwJENvbnRlbnQsIFRpdGxlIGFzICQ0azREMCRUaXRsZSwgRGVzY3JpcHRpb24gYXMgJDRrNEQwJERlc2NyaXB0aW9uLCBDbG9zZSBhcyAkNGs0RDAkQ2xvc2V9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3QtZGlhbG9nXCI7XG5pbXBvcnQge2NvbXBvc2VFdmVudEhhbmRsZXJzIGFzICQ0azREMCRjb21wb3NlRXZlbnRIYW5kbGVyc30gZnJvbSBcIkByYWRpeC11aS9wcmltaXRpdmVcIjtcbmltcG9ydCB7U2xvdHRhYmxlIGFzICQ0azREMCRTbG90dGFibGV9IGZyb20gXCJAcmFkaXgtdWkvcmVhY3Qtc2xvdFwiO1xuXG5cblxuXG5cblxuXG5cblxuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJFJPT1RfTkFNRSA9ICdBbGVydERpYWxvZyc7XG5jb25zdCBbJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWJdID0gJDRrNEQwJGNyZWF0ZUNvbnRleHRTY29wZSgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkUk9PVF9OQU1FLCBbXG4gICAgJDRrNEQwJGNyZWF0ZURpYWxvZ1Njb3BlXG5dKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZSA9ICQ0azREMCRjcmVhdGVEaWFsb2dTY29wZSgpO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGRlNDY2ZGQ4MzE3YjBiNzUgPSAocHJvcHMpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmFsZXJ0RGlhbG9nUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFJvb3QsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGFsZXJ0RGlhbG9nUHJvcHMsIHtcbiAgICAgICAgbW9kYWw6IHRydWVcbiAgICB9KSk7XG59O1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRST09UX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dUcmlnZ2VyXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUUklHR0VSX05BTUUgPSAnQWxlcnREaWFsb2dUcmlnZ2VyJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2ZWRkN2E2MjNlZjBmNDBiID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4udHJpZ2dlclByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRUcmlnZ2VyLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCB0cmlnZ2VyUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYiwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVFJJR0dFUl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nUG9ydGFsXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRQT1JUQUxfTkFNRSA9ICdBbGVydERpYWxvZ1BvcnRhbCc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjYwZjJiZmRiOTg2NzA2YyA9IChwcm9wcyk9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4ucG9ydGFsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFBvcnRhbCwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgcG9ydGFsUHJvcHMpKTtcbn07XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmMsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFBPUlRBTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nT3ZlcmxheVxuICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLyBjb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkT1ZFUkxBWV9OQU1FID0gJ0FsZXJ0RGlhbG9nT3ZlcmxheSc7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTcwN2E0ODk1Y2UyMzI1NiA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLm92ZXJsYXlQcm9wcyB9ID0gcHJvcHM7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkT3ZlcmxheSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgb3ZlcmxheVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJE9WRVJMQVlfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0NvbnRlbnRcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRSA9ICdBbGVydERpYWxvZ0NvbnRlbnQnO1xuY29uc3QgWyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRBbGVydERpYWxvZ0NvbnRlbnRQcm92aWRlciwgJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZUFsZXJ0RGlhbG9nQ29udGVudENvbnRleHRdID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJGNyZWF0ZUFsZXJ0RGlhbG9nQ29udGV4dCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FKTtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgY2hpbGRyZW46IGNoaWxkcmVuICwgLi4uY29udGVudFByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIGNvbnN0IGNvbnRlbnRSZWYgPSAkNGs0RDAkdXNlUmVmKG51bGwpO1xuICAgIGNvbnN0IGNvbXBvc2VkUmVmcyA9ICQ0azREMCR1c2VDb21wb3NlZFJlZnMoZm9yd2FyZGVkUmVmLCBjb250ZW50UmVmKTtcbiAgICBjb25zdCBjYW5jZWxSZWYgPSAkNGs0RDAkdXNlUmVmKG51bGwpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRXYXJuaW5nUHJvdmlkZXIsIHtcbiAgICAgICAgY29udGVudE5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUsXG4gICAgICAgIHRpdGxlTmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUUsXG4gICAgICAgIGRvY3NTbHVnOiBcImFsZXJ0LWRpYWxvZ1wiXG4gICAgfSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIsIHtcbiAgICAgICAgc2NvcGU6IF9fc2NvcGVBbGVydERpYWxvZyxcbiAgICAgICAgY2FuY2VsUmVmOiBjYW5jZWxSZWZcbiAgICB9LCAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRDb250ZW50LCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe1xuICAgICAgICByb2xlOiBcImFsZXJ0ZGlhbG9nXCJcbiAgICB9LCBkaWFsb2dTY29wZSwgY29udGVudFByb3BzLCB7XG4gICAgICAgIHJlZjogY29tcG9zZWRSZWZzLFxuICAgICAgICBvbk9wZW5BdXRvRm9jdXM6ICQ0azREMCRjb21wb3NlRXZlbnRIYW5kbGVycyhjb250ZW50UHJvcHMub25PcGVuQXV0b0ZvY3VzLCAoZXZlbnQpPT57XG4gICAgICAgICAgICB2YXIgX2NhbmNlbFJlZiRjdXJyZW50O1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICAgIChfY2FuY2VsUmVmJGN1cnJlbnQgPSBjYW5jZWxSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NhbmNlbFJlZiRjdXJyZW50ID09PSB2b2lkIDAgfHwgX2NhbmNlbFJlZiRjdXJyZW50LmZvY3VzKHtcbiAgICAgICAgICAgICAgICBwcmV2ZW50U2Nyb2xsOiB0cnVlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSksXG4gICAgICAgIG9uUG9pbnRlckRvd25PdXRzaWRlOiAoZXZlbnQpPT5ldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICxcbiAgICAgICAgb25JbnRlcmFjdE91dHNpZGU6IChldmVudCk9PmV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICB9KSwgLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkU2xvdHRhYmxlLCBudWxsLCBjaGlsZHJlbiksIGZhbHNlKSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDk0ZTZhZjQ1ZjBhZjRlZmQsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ1RpdGxlXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRUSVRMRV9OQU1FID0gJ0FsZXJ0RGlhbG9nVGl0bGUnO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLnRpdGxlUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IGRpYWxvZ1Njb3BlID0gJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlKF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgcmV0dXJuIC8qI19fUFVSRV9fKi8gJDRrNEQwJGNyZWF0ZUVsZW1lbnQoJDRrNEQwJFRpdGxlLCAkNGs0RDAkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMoe30sIGRpYWxvZ1Njb3BlLCB0aXRsZVByb3BzLCB7XG4gICAgICAgIHJlZjogZm9yd2FyZGVkUmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNywge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkVElUTEVfTkFNRVxufSk7XG4vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gKiBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRERVNDUklQVElPTl9OQU1FID0gJ0FsZXJ0RGlhbG9nRGVzY3JpcHRpb24nO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUgPSAvKiNfX1BVUkVfXyovICQ0azREMCRmb3J3YXJkUmVmKChwcm9wcywgZm9yd2FyZGVkUmVmKT0+e1xuICAgIGNvbnN0IHsgX19zY29wZUFsZXJ0RGlhbG9nOiBfX3Njb3BlQWxlcnREaWFsb2cgLCAuLi5kZXNjcmlwdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCREZXNjcmlwdGlvbiwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgZGVzY3JpcHRpb25Qcm9wcywge1xuICAgICAgICByZWY6IGZvcndhcmRlZFJlZlxuICAgIH0pKTtcbn0pO1xuLyojX19QVVJFX18qLyBPYmplY3QuYXNzaWduKCQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhMjNiNTVjZGU1NWFkOWE1LCB7XG4gICAgZGlzcGxheU5hbWU6ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRERVNDUklQVElPTl9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAqIEFsZXJ0RGlhbG9nQWN0aW9uXG4gKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovIGNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciRBQ1RJT05fTkFNRSA9ICdBbGVydERpYWxvZ0FjdGlvbic7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCA9IC8qI19fUFVSRV9fKi8gJDRrNEQwJGZvcndhcmRSZWYoKHByb3BzLCBmb3J3YXJkZWRSZWYpPT57XG4gICAgY29uc3QgeyBfX3Njb3BlQWxlcnREaWFsb2c6IF9fc2NvcGVBbGVydERpYWxvZyAsIC4uLmFjdGlvblByb3BzIH0gPSBwcm9wcztcbiAgICBjb25zdCBkaWFsb2dTY29wZSA9ICQ5MDVmNGFlOTE4YWFiMWFhJHZhciR1c2VEaWFsb2dTY29wZShfX3Njb3BlQWxlcnREaWFsb2cpO1xuICAgIHJldHVybiAvKiNfX1BVUkVfXyovICQ0azREMCRjcmVhdGVFbGVtZW50KCQ0azREMCRDbG9zZSwgJDRrNEQwJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzKHt9LCBkaWFsb2dTY29wZSwgYWN0aW9uUHJvcHMsIHtcbiAgICAgICAgcmVmOiBmb3J3YXJkZWRSZWZcbiAgICB9KSk7XG59KTtcbi8qI19fUFVSRV9fKi8gT2JqZWN0LmFzc2lnbigkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjQ1NGY4MThjNThlZTg1ZCwge1xuICAgIGRpc3BsYXlOYW1lOiAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQUNUSU9OX05BTUVcbn0pO1xuLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICogQWxlcnREaWFsb2dDYW5jZWxcbiAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FID0gJ0FsZXJ0RGlhbG9nQ2FuY2VsJztcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwID0gLyojX19QVVJFX18qLyAkNGs0RDAkZm9yd2FyZFJlZigocHJvcHMsIGZvcndhcmRlZFJlZik9PntcbiAgICBjb25zdCB7IF9fc2NvcGVBbGVydERpYWxvZzogX19zY29wZUFsZXJ0RGlhbG9nICwgLi4uY2FuY2VsUHJvcHMgfSA9IHByb3BzO1xuICAgIGNvbnN0IHsgY2FuY2VsUmVmOiBjYW5jZWxSZWYgIH0gPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlQWxlcnREaWFsb2dDb250ZW50Q29udGV4dCgkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ0FOQ0VMX05BTUUsIF9fc2NvcGVBbGVydERpYWxvZyk7XG4gICAgY29uc3QgZGlhbG9nU2NvcGUgPSAkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlRGlhbG9nU2NvcGUoX19zY29wZUFsZXJ0RGlhbG9nKTtcbiAgICBjb25zdCByZWYgPSAkNGs0RDAkdXNlQ29tcG9zZWRSZWZzKGZvcndhcmRlZFJlZiwgY2FuY2VsUmVmKTtcbiAgICByZXR1cm4gLyojX19QVVJFX18qLyAkNGs0RDAkY3JlYXRlRWxlbWVudCgkNGs0RDAkQ2xvc2UsICQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyh7fSwgZGlhbG9nU2NvcGUsIGNhbmNlbFByb3BzLCB7XG4gICAgICAgIHJlZjogcmVmXG4gICAgfSkpO1xufSk7XG4vKiNfX1BVUkVfXyovIE9iamVjdC5hc3NpZ24oJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDJmNjdhOTIzNTcxYWFlYTAsIHtcbiAgICBkaXNwbGF5TmFtZTogJDkwNWY0YWU5MThhYWIxYWEkdmFyJENBTkNFTF9OQU1FXG59KTtcbi8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8gY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkdmFyJERlc2NyaXB0aW9uV2FybmluZyA9ICh7IGNvbnRlbnRSZWY6IGNvbnRlbnRSZWYgIH0pPT57XG4gICAgY29uc3QgTUVTU0FHRSA9IGBcXGAkeyQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUV9XFxgIHJlcXVpcmVzIGEgZGVzY3JpcHRpb24gZm9yIHRoZSBjb21wb25lbnQgdG8gYmUgYWNjZXNzaWJsZSBmb3Igc2NyZWVuIHJlYWRlciB1c2Vycy5cblxuWW91IGNhbiBhZGQgYSBkZXNjcmlwdGlvbiB0byB0aGUgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQ09OVEVOVF9OQU1FfVxcYCBieSBwYXNzaW5nIGEgXFxgJHskOTA1ZjRhZTkxOGFhYjFhYSR2YXIkREVTQ1JJUFRJT05fTkFNRX1cXGAgY29tcG9uZW50IGFzIGEgY2hpbGQsIHdoaWNoIGFsc28gYmVuZWZpdHMgc2lnaHRlZCB1c2VycyBieSBhZGRpbmcgdmlzaWJsZSBjb250ZXh0IHRvIHRoZSBkaWFsb2cuXG5cbkFsdGVybmF0aXZlbHksIHlvdSBjYW4gdXNlIHlvdXIgb3duIGNvbXBvbmVudCBhcyBhIGRlc2NyaXB0aW9uIGJ5IGFzc2lnbmluZyBpdCBhbiBcXGBpZFxcYCBhbmQgcGFzc2luZyB0aGUgc2FtZSB2YWx1ZSB0byB0aGUgXFxgYXJpYS1kZXNjcmliZWRieVxcYCBwcm9wIGluIFxcYCR7JDkwNWY0YWU5MThhYWIxYWEkdmFyJENPTlRFTlRfTkFNRX1cXGAuIElmIHRoZSBkZXNjcmlwdGlvbiBpcyBjb25mdXNpbmcgb3IgZHVwbGljYXRpdmUgZm9yIHNpZ2h0ZWQgdXNlcnMsIHlvdSBjYW4gdXNlIHRoZSBcXGBAcmFkaXgtdWkvcmVhY3QtdmlzdWFsbHktaGlkZGVuXFxgIHByaW1pdGl2ZSBhcyBhIHdyYXBwZXIgYXJvdW5kIHlvdXIgZGVzY3JpcHRpb24gY29tcG9uZW50LlxuXG5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgc2VlIGh0dHBzOi8vcmFkaXgtdWkuY29tL3ByaW1pdGl2ZXMvZG9jcy9jb21wb25lbnRzL2FsZXJ0LWRpYWxvZ2A7XG4gICAgJDRrNEQwJHVzZUVmZmVjdCgoKT0+e1xuICAgICAgICB2YXIgX2NvbnRlbnRSZWYkY3VycmVudDtcbiAgICAgICAgY29uc3QgaGFzRGVzY3JpcHRpb24gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgoX2NvbnRlbnRSZWYkY3VycmVudCA9IGNvbnRlbnRSZWYuY3VycmVudCkgPT09IG51bGwgfHwgX2NvbnRlbnRSZWYkY3VycmVudCA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2NvbnRlbnRSZWYkY3VycmVudC5nZXRBdHRyaWJ1dGUoJ2FyaWEtZGVzY3JpYmVkYnknKSk7XG4gICAgICAgIGlmICghaGFzRGVzY3JpcHRpb24pIGNvbnNvbGUud2FybihNRVNTQUdFKTtcbiAgICB9LCBbXG4gICAgICAgIE1FU1NBR0UsXG4gICAgICAgIGNvbnRlbnRSZWZcbiAgICBdKTtcbiAgICByZXR1cm4gbnVsbDtcbn07XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRkZTQ2NmRkODMxN2IwYjc1O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDQxZmI5ZjA2MTcxYzc1ZjQgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNmVkZDdhNjIzZWYwZjQwYjtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDY2MGYyYmZkYjk4NjcwNmM7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYzZmZGI4MzdiMDcwYjRmZiA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRhNzA3YTQ4OTVjZTIzMjU2O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZDtcbmNvbnN0ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRlMTljZDVmOTM3NmY4Y2VlID0gJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI0NTRmODE4YzU4ZWU4NWQ7XG5jb25zdCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkODQ4YzliN2VhZDBkZjk2NyA9ICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQyZjY3YTkyMzU3MWFhZWEwO1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGY5OTIzMzI4MWVmZDA4YTAgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMjI1ZTBkYTYyZDMxNGI3O1xuY29uc3QgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgPSAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNTtcblxuXG5cblxuZXhwb3J0IHskOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYjg4OTE4ODA3NTFjMmM1YiBhcyBjcmVhdGVBbGVydERpYWxvZ1Njb3BlLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZGU0NjZkZDgzMTdiMGI3NSBhcyBBbGVydERpYWxvZywgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDZlZGQ3YTYyM2VmMGY0MGIgYXMgQWxlcnREaWFsb2dUcmlnZ2VyLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjYwZjJiZmRiOTg2NzA2YyBhcyBBbGVydERpYWxvZ1BvcnRhbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYgYXMgQWxlcnREaWFsb2dPdmVybGF5LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkOTRlNmFmNDVmMGFmNGVmZCBhcyBBbGVydERpYWxvZ0NvbnRlbnQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRiNDU0ZjgxOGM1OGVlODVkIGFzIEFsZXJ0RGlhbG9nQWN0aW9uLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMmY2N2E5MjM1NzFhYWVhMCBhcyBBbGVydERpYWxvZ0NhbmNlbCwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDIyNWUwZGE2MmQzMTRiNyBhcyBBbGVydERpYWxvZ1RpdGxlLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYTIzYjU1Y2RlNTVhZDlhNSBhcyBBbGVydERpYWxvZ0Rlc2NyaXB0aW9uLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSBhcyBSb290LCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCBhcyBUcmlnZ2VyLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkNjAyZWFjMTg1ODI2NDgyYyBhcyBQb3J0YWwsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmIGFzIE92ZXJsYXksICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIGFzIENvbnRlbnQsICQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRlMTljZDVmOTM3NmY4Y2VlIGFzIEFjdGlvbiwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjcgYXMgQ2FuY2VsLCAkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZjk5MjMzMjgxZWZkMDhhMCBhcyBUaXRsZSwgJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQgYXMgRGVzY3JpcHRpb259O1xuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXgubWpzLm1hcFxuIixudWxsXSwibmFtZXMiOlsiX19hc3NpZ24iLCJPYmplY3QiLCJhc3NpZ24iLCJ0IiwicyIsImkiLCJuIiwiYXJndW1lbnRzIiwibGVuZ3RoIiwicCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImFwcGx5IiwidGhpcyIsIl9fcmVzdCIsImUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJoYXNPd24iLCJjbGFzc05hbWVzIiwiY2xhc3NlcyIsImFyZyIsImFyZ1R5cGUiLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiaW5uZXIiLCJ0b1N0cmluZyIsImluY2x1ZGVzIiwia2V5Iiwiam9pbiIsIm1vZHVsZSIsImV4cG9ydHMiLCJkZWZhdWx0Iiwid2luZG93IiwiQnV0dG9uIiwiUmVhY3QiLCJmb3J3YXJkUmVmIiwiX2EiLCJyZWYiLCJfYyIsImRpc2FibGVkIiwiY2hpbGRyZW4iLCJvbkNsaWNrIiwiX2QiLCJzaXplIiwiX2UiLCJ2YXJpYW50IiwiX2YiLCJ0eXBlIiwiX2ciLCJwcmVmaXgiLCJfaCIsInN1ZmZpeCIsIl9qIiwiY2xhc3NOYW1lIiwiX2siLCJmdWxsV2lkdGgiLCJwcm9wcyIsInN0eWxlcyIsImJ1dHRvbiIsIl9iIiwiY3JlYXRlRWxlbWVudCIsIl9leHRlbmRzIiwiYmluZCIsInRhcmdldCIsInNvdXJjZSIsIiRlNDJlMTA2M2M0MGZiM2VmJGV4cG9ydCRiOWVjZDQyOGI1NThmZjEwIiwib3JpZ2luYWxFdmVudEhhbmRsZXIiLCJvdXJFdmVudEhhbmRsZXIiLCJjaGVja0ZvckRlZmF1bHRQcmV2ZW50ZWQiLCJldmVudCIsImRlZmF1bHRQcmV2ZW50ZWQiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkNDNlNDQ2ZDMyYjNkMjFhZiIsInJlZnMiLCJub2RlIiwiZm9yRWFjaCIsInZhbHVlIiwiY3VycmVudCIsIiQ2ZWQwNDA2ODg4ZjczZmM0JHZhciRzZXRSZWYiLCIkNmVkMDQwNjg4OGY3M2ZjNCRleHBvcnQkYzdiMmNiZTM1NTJhMGQwNSIsIiQzdnFtciR1c2VDYWxsYmFjayIsIiRjNTEyYzI3YWIwMmVmODk1JGV4cG9ydCQ1MGM3YjRlOWQ5ZjE5YzEiLCJzY29wZU5hbWUiLCJjcmVhdGVDb250ZXh0U2NvcGVEZXBzIiwiZGVmYXVsdENvbnRleHRzIiwiY3JlYXRlU2NvcGUiLCJzY29wZUNvbnRleHRzIiwibWFwIiwiZGVmYXVsdENvbnRleHQiLCIkM2JrQUskY3JlYXRlQ29udGV4dCIsInNjb3BlIiwiY29udGV4dHMiLCIkM2JrQUskdXNlTWVtbyIsInJvb3RDb21wb25lbnROYW1lIiwiQmFzZUNvbnRleHQiLCJpbmRleCIsIlByb3ZpZGVyIiwiY29udGV4dCIsIkNvbnRleHQiLCJ2YWx1ZXMiLCIkM2JrQUskY3JlYXRlRWxlbWVudCIsImRpc3BsYXlOYW1lIiwiY29uc3VtZXJOYW1lIiwiJDNia0FLJHVzZUNvbnRleHQiLCJ1bmRlZmluZWQiLCJFcnJvciIsIiRjNTEyYzI3YWIwMmVmODk1JHZhciRjb21wb3NlQ29udGV4dFNjb3BlcyIsInNjb3BlcyIsImJhc2VTY29wZSIsImNyZWF0ZVNjb3BlMSIsInNjb3BlSG9va3MiLCJ1c2VTY29wZSIsIm92ZXJyaWRlU2NvcGVzIiwibmV4dFNjb3BlczEiLCJyZWR1Y2UiLCJuZXh0U2NvcGVzIiwiJDlmNzk2NTk4ODY5NDZjMTYkZXhwb3J0JGU1YzVhNWY5MTdhNTg3MWMiLCJCb29sZWFuIiwiZ2xvYmFsVGhpcyIsImRvY3VtZW50IiwiJGR4bHdIJHVzZUxheW91dEVmZmVjdCIsIiQxNzQ2YTM0NWYzZDczYmI3JHZhciR1c2VSZWFjdElkIiwiJDJBT0R4JHJlYWN0IiwiJDE3NDZhMzQ1ZjNkNzNiYjckdmFyJGNvdW50IiwiJDE3NDZhMzQ1ZjNkNzNiYjckZXhwb3J0JGY2ODA4NzdhMzQ3MTFlMzciLCJkZXRlcm1pbmlzdGljSWQiLCJpZCIsInNldElkIiwidXNlU3RhdGUiLCIkMkFPRHgkdXNlTGF5b3V0RWZmZWN0IiwicmVhY3RJZCIsIlN0cmluZyIsIiRiMWIyMzE0ZjVmOWExZDg0JGV4cG9ydCQyNWJlYzhjNmY1NGVlNzlhIiwiY2FsbGJhY2siLCJjYWxsYmFja1JlZiIsIiRsd2lXaiR1c2VSZWYiLCIkbHdpV2okdXNlRWZmZWN0IiwiJGx3aVdqJHVzZU1lbW8iLCJhcmdzIiwiX2NhbGxiYWNrUmVmJGN1cnJlbnQiLCIkNzFjZDc2Y2M2MGUwNDU0ZSRleHBvcnQkNmYzMjEzNTA4MGNiNGMzIiwicHJvcCIsImRlZmF1bHRQcm9wIiwib25DaGFuZ2UiLCJ1bmNvbnRyb2xsZWRQcm9wIiwic2V0VW5jb250cm9sbGVkUHJvcCIsInVuY29udHJvbGxlZFN0YXRlIiwiJGJuUHc5JHVzZVN0YXRlIiwicHJldlZhbHVlUmVmIiwiJGJuUHc5JHVzZVJlZiIsImhhbmRsZUNoYW5nZSIsIiRiblB3OSR1c2VDYWxsYmFja1JlZiIsIiRiblB3OSR1c2VFZmZlY3QiLCIkNzFjZDc2Y2M2MGUwNDU0ZSR2YXIkdXNlVW5jb250cm9sbGVkU3RhdGUiLCJpc0NvbnRyb2xsZWQiLCJ2YWx1ZTEiLCIkYm5QdzkkdXNlQ2FsbGJhY2siLCJuZXh0VmFsdWUiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkOGM2ZWQ1YzY2NmFjMTM2MCIsIiQ5SXJqWCRmb3J3YXJkUmVmIiwiZm9yd2FyZGVkUmVmIiwic2xvdFByb3BzIiwiY2hpbGRyZW5BcnJheSIsIiQ5SXJqWCRDaGlsZHJlbiIsInRvQXJyYXkiLCJzbG90dGFibGUiLCJmaW5kIiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJGlzU2xvdHRhYmxlIiwibmV3RWxlbWVudCIsIm5ld0NoaWxkcmVuIiwiY2hpbGQiLCJjb3VudCIsIm9ubHkiLCIkOUlyalgkaXNWYWxpZEVsZW1lbnQiLCIkOUlyalgkY3JlYXRlRWxlbWVudCIsIiQ1ZTYzYzk2MWZjMWNlMjExJHZhciRTbG90Q2xvbmUiLCIkOUlyalgkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOUlyalgkY2xvbmVFbGVtZW50IiwiJDVlNjNjOTYxZmMxY2UyMTEkdmFyJG1lcmdlUHJvcHMiLCIkOUlyalgkY29tcG9zZVJlZnMiLCIkNWU2M2M5NjFmYzFjZTIxMSRleHBvcnQkZDlmMWNjZjBiZGIwNWQ0NSIsIiQ5SXJqWCRGcmFnbWVudCIsImNoaWxkUHJvcHMiLCJvdmVycmlkZVByb3BzIiwicHJvcE5hbWUiLCJzbG90UHJvcFZhbHVlIiwiY2hpbGRQcm9wVmFsdWUiLCJ0ZXN0IiwiZmlsdGVyIiwiJDg5MjdmNmYyYWNjNGYzODYkZXhwb3J0JDI1MGZmYTYzY2RjMGQwMzQiLCJwcmltaXRpdmUiLCJOb2RlIiwiJDRxNUZxJGZvcndhcmRSZWYiLCJhc0NoaWxkIiwicHJpbWl0aXZlUHJvcHMiLCJDb21wIiwiJDRxNUZxJFNsb3QiLCIkNHE1RnEkdXNlRWZmZWN0IiwiU3ltYm9sIiwiZm9yIiwiJDRxNUZxJGNyZWF0ZUVsZW1lbnQiLCIkNHE1RnEkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkQ09OVEVYVF9VUERBVEUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkUE9JTlRFUl9ET1dOX09VVFNJREUiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkRk9DVVNfT1VUU0lERSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRvcmlnaW5hbEJvZHlQb2ludGVyRXZlbnRzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJERpc21pc3NhYmxlTGF5ZXJDb250ZXh0IiwiJGtxd3BIJGNyZWF0ZUNvbnRleHQiLCJsYXllcnMiLCJTZXQiLCJsYXllcnNXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZCIsImJyYW5jaGVzIiwiJDVjYjkyYmVmNzU3Nzk2MGUkZXhwb3J0JDE3N2ZiNjJmZjNlYzFmMjIiLCIka3F3cEgkZm9yd2FyZFJlZiIsIl9ub2RlJG93bmVyRG9jdW1lbnQiLCJkaXNhYmxlT3V0c2lkZVBvaW50ZXJFdmVudHMiLCJvbkVzY2FwZUtleURvd24iLCJvblBvaW50ZXJEb3duT3V0c2lkZSIsIm9uRm9jdXNPdXRzaWRlIiwib25JbnRlcmFjdE91dHNpZGUiLCJvbkRpc21pc3MiLCJsYXllclByb3BzIiwiJGtxd3BIJHVzZUNvbnRleHQiLCJub2RlMSIsInNldE5vZGUiLCIka3F3cEgkdXNlU3RhdGUiLCJvd25lckRvY3VtZW50IiwiZm9yY2UiLCJjb21wb3NlZFJlZnMiLCIka3F3cEgkdXNlQ29tcG9zZWRSZWZzIiwiZnJvbSIsImhpZ2hlc3RMYXllcldpdGhPdXRzaWRlUG9pbnRlckV2ZW50c0Rpc2FibGVkIiwic2xpY2UiLCJoaWdoZXN0TGF5ZXJXaXRoT3V0c2lkZVBvaW50ZXJFdmVudHNEaXNhYmxlZEluZGV4IiwiaXNCb2R5UG9pbnRlckV2ZW50c0Rpc2FibGVkIiwiaXNQb2ludGVyRXZlbnRzRW5hYmxlZCIsInBvaW50ZXJEb3duT3V0c2lkZSIsImhhbmRsZVBvaW50ZXJEb3duT3V0c2lkZSIsIiRrcXdwSCR1c2VDYWxsYmFja1JlZiIsImlzUG9pbnRlckluc2lkZVJlYWN0VHJlZVJlZiIsIiRrcXdwSCR1c2VSZWYiLCJoYW5kbGVDbGlja1JlZiIsIiRrcXdwSCR1c2VFZmZlY3QiLCJoYW5kbGVQb2ludGVyRG93biIsImV2ZW50RGV0YWlsIiwib3JpZ2luYWxFdmVudCIsImhhbmRsZUFuZERpc3BhdGNoUG9pbnRlckRvd25PdXRzaWRlRXZlbnQiLCIkNWNiOTJiZWY3NTc3OTYwZSR2YXIkaGFuZGxlQW5kRGlzcGF0Y2hDdXN0b21FdmVudCIsImRpc2NyZXRlIiwicG9pbnRlclR5cGUiLCJyZW1vdmVFdmVudExpc3RlbmVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsIm9uY2UiLCJ0aW1lcklkIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIm9uUG9pbnRlckRvd25DYXB0dXJlIiwiJDVjYjkyYmVmNzU3Nzk2MGUkdmFyJHVzZVBvaW50ZXJEb3duT3V0c2lkZSIsImlzUG9pbnRlckRvd25PbkJyYW5jaCIsInNvbWUiLCJicmFuY2giLCJjb250YWlucyIsImZvY3VzT3V0c2lkZSIsImhhbmRsZUZvY3VzT3V0c2lkZSIsImlzRm9jdXNJbnNpZGVSZWFjdFRyZWVSZWYiLCJoYW5kbGVGb2N1cyIsIm9uRm9jdXNDYXB0dXJlIiwib25CbHVyQ2FwdHVyZSIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciR1c2VGb2N1c091dHNpZGUiLCJvbkVzY2FwZUtleURvd25Qcm9wIiwiJGhQU1E1JHVzZUNhbGxiYWNrUmVmIiwiJGhQU1E1JHVzZUVmZmVjdCIsImhhbmRsZUtleURvd24iLCIka3F3cEgkdXNlRXNjYXBlS2V5ZG93biIsInByZXZlbnREZWZhdWx0IiwiYm9keSIsInN0eWxlIiwicG9pbnRlckV2ZW50cyIsImFkZCIsIiQ1Y2I5MmJlZjc1Nzc5NjBlJHZhciRkaXNwYXRjaFVwZGF0ZSIsImRlbGV0ZSIsImhhbmRsZVVwZGF0ZSIsIiRrcXdwSCRjcmVhdGVFbGVtZW50IiwiJGtxd3BIJFByaW1pdGl2ZSIsImRpdiIsIiRrcXdwSCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRrcXdwSCRjb21wb3NlRXZlbnRIYW5kbGVycyIsIkN1c3RvbUV2ZW50IiwiZGlzcGF0Y2hFdmVudCIsIm5hbWUiLCJoYW5kbGVyIiwiZGV0YWlsIiwiYnViYmxlcyIsImNhbmNlbGFibGUiLCIkNHE1RnEkZmx1c2hTeW5jIiwiJGtxd3BIJGRpc3BhdGNoRGlzY3JldGVDdXN0b21FdmVudCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRBVVRPRk9DVVNfT05fTU9VTlQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkQVVUT0ZPQ1VTX09OX1VOTU9VTlQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkMzg2M2M0NmExN2U4YTI4JGV4cG9ydCQyMGU0MDI4OTY0MWZiYmI2IiwiJDQ1UUh2JGZvcndhcmRSZWYiLCJsb29wIiwidHJhcHBlZCIsIm9uTW91bnRBdXRvRm9jdXMiLCJvbk1vdW50QXV0b0ZvY3VzUHJvcCIsIm9uVW5tb3VudEF1dG9Gb2N1cyIsIm9uVW5tb3VudEF1dG9Gb2N1c1Byb3AiLCJzY29wZVByb3BzIiwiY29udGFpbmVyMSIsInNldENvbnRhaW5lciIsIiQ0NVFIdiR1c2VTdGF0ZSIsIiQ0NVFIdiR1c2VDYWxsYmFja1JlZiIsImxhc3RGb2N1c2VkRWxlbWVudFJlZiIsIiQ0NVFIdiR1c2VSZWYiLCIkNDVRSHYkdXNlQ29tcG9zZWRSZWZzIiwiZm9jdXNTY29wZSIsInBhdXNlZCIsInBhdXNlIiwicmVzdW1lIiwiJDQ1UUh2JHVzZUVmZmVjdCIsImhhbmRsZUZvY3VzSW4iLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZm9jdXMiLCJzZWxlY3QiLCJoYW5kbGVGb2N1c091dCIsInJlbGF0ZWRUYXJnZXQiLCJtdXRhdGlvbk9ic2VydmVyIiwiTXV0YXRpb25PYnNlcnZlciIsIm11dGF0aW9ucyIsImZvY3VzZWRFbGVtZW50IiwiYWN0aXZlRWxlbWVudCIsIm11dGF0aW9uIiwicmVtb3ZlZE5vZGVzIiwib2JzZXJ2ZSIsImNoaWxkTGlzdCIsInN1YnRyZWUiLCJkaXNjb25uZWN0IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGZvY3VzU2NvcGVzU3RhY2siLCJwcmV2aW91c2x5Rm9jdXNlZEVsZW1lbnQiLCJtb3VudEV2ZW50IiwiY2FuZGlkYXRlcyIsImNhbmRpZGF0ZSIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmb2N1c0ZpcnN0IiwiaXRlbXMiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVDYW5kaWRhdGVzIiwiaXRlbSIsInRhZ05hbWUiLCJ1bm1vdW50RXZlbnQiLCJyZW1vdmUiLCIkNDVRSHYkdXNlQ2FsbGJhY2siLCJpc1RhYktleSIsImFsdEtleSIsImN0cmxLZXkiLCJtZXRhS2V5IiwiY29udGFpbmVyIiwiY3VycmVudFRhcmdldCIsImZpcnN0IiwibGFzdCIsIiRkMzg2M2M0NmExN2U4YTI4JHZhciRmaW5kVmlzaWJsZSIsInJldmVyc2UiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkZ2V0VGFiYmFibGVFZGdlcyIsInNoaWZ0S2V5IiwiJDQ1UUh2JGNyZWF0ZUVsZW1lbnQiLCIkNDVRSHYkUHJpbWl0aXZlIiwiJDQ1UUh2JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidGFiSW5kZXgiLCJvbktleURvd24iLCJub2RlcyIsIndhbGtlciIsImNyZWF0ZVRyZWVXYWxrZXIiLCJOb2RlRmlsdGVyIiwiU0hPV19FTEVNRU5UIiwiYWNjZXB0Tm9kZSIsImlzSGlkZGVuSW5wdXQiLCJoaWRkZW4iLCJGSUxURVJfU0tJUCIsIkZJTFRFUl9BQ0NFUFQiLCJuZXh0Tm9kZSIsImN1cnJlbnROb2RlIiwiZWxlbWVudHMiLCJlbGVtZW50IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzSGlkZGVuIiwidXBUbyIsImdldENvbXB1dGVkU3R5bGUiLCJ2aXNpYmlsaXR5IiwiZGlzcGxheSIsInBhcmVudEVsZW1lbnQiLCJmb2N1cyIsInByZXZlbnRTY3JvbGwiLCJIVE1MSW5wdXRFbGVtZW50IiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGlzU2VsZWN0YWJsZUlucHV0Iiwic3RhY2siLCJhY3RpdmVGb2N1c1Njb3BlIiwiJGQzODYzYzQ2YTE3ZThhMjgkdmFyJGFycmF5UmVtb3ZlIiwidW5zaGlmdCIsIl9zdGFjayQiLCIkZDM4NjNjNDZhMTdlOGEyOCR2YXIkY3JlYXRlRm9jdXNTY29wZXNTdGFjayIsImFycmF5IiwidXBkYXRlZEFycmF5Iiwic3BsaWNlIiwiJGYxNzAxYmVhZTA4M2RiYWUkZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkN1NYbDIkZm9yd2FyZFJlZiIsIl9nbG9iYWxUaGlzJGRvY3VtZW50IiwicG9ydGFsUHJvcHMiLCIkN1NYbDIkcmVhY3Rkb20iLCJjcmVhdGVQb3J0YWwiLCIkN1NYbDIkY3JlYXRlRWxlbWVudCIsIiQ3U1hsMiRQcmltaXRpdmUiLCIkN1NYbDIkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOTIxYTg4OWNlZTZkZjdlOCRleHBvcnQkOTljMmI3NzlhYTRlOGI4YiIsInByZXNlbnQiLCJwcmVzZW5jZSIsIiRpcXEzciR1c2VTdGF0ZSIsInN0eWxlc1JlZiIsIiRpcXEzciR1c2VSZWYiLCJwcmV2UHJlc2VudFJlZiIsInByZXZBbmltYXRpb25OYW1lUmVmIiwiaW5pdGlhbFN0YXRlIiwic3RhdGUiLCJzZW5kIiwibWFjaGluZSIsIiRpcXEzciR1c2VSZWR1Y2VyIiwibmV4dFN0YXRlIiwiJGZlOTYzYjM1NTM0N2NjNjgkZXhwb3J0JDNlNjU0M2RlMTRmODYxNGYiLCJtb3VudGVkIiwiVU5NT1VOVCIsIkFOSU1BVElPTl9PVVQiLCJ1bm1vdW50U3VzcGVuZGVkIiwiTU9VTlQiLCJBTklNQVRJT05fRU5EIiwidW5tb3VudGVkIiwiJGlxcTNyJHVzZUVmZmVjdCIsImN1cnJlbnRBbmltYXRpb25OYW1lIiwiJDkyMWE4ODljZWU2ZGY3ZTgkdmFyJGdldEFuaW1hdGlvbk5hbWUiLCIkaXFxM3IkdXNlTGF5b3V0RWZmZWN0Iiwid2FzUHJlc2VudCIsInByZXZBbmltYXRpb25OYW1lIiwiaGFuZGxlQW5pbWF0aW9uRW5kIiwiaXNDdXJyZW50QW5pbWF0aW9uIiwiYW5pbWF0aW9uTmFtZSIsIiRpcXEzciRmbHVzaFN5bmMiLCJoYW5kbGVBbmltYXRpb25TdGFydCIsImlzUHJlc2VudCIsIiRpcXEzciR1c2VDYWxsYmFjayIsIiQ5MjFhODg5Y2VlNmRmN2U4JHZhciR1c2VQcmVzZW5jZSIsIiRpcXEzciRDaGlsZHJlbiIsIiRpcXEzciR1c2VDb21wb3NlZFJlZnMiLCIkaXFxM3IkY2xvbmVFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNvdW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkZXhwb3J0JGI3ZWNlMjRhMjJhZWRhOGMiLCIkMXdFcnokdXNlRWZmZWN0IiwiX2VkZ2VHdWFyZHMkIiwiX2VkZ2VHdWFyZHMkMiIsImVkZ2VHdWFyZHMiLCJxdWVyeVNlbGVjdG9yQWxsIiwiaW5zZXJ0QWRqYWNlbnRFbGVtZW50IiwiJDNkYjM4YjdkMWZiM2ZlNmEkdmFyJGNyZWF0ZUZvY3VzR3VhcmQiLCJzZXRBdHRyaWJ1dGUiLCJjc3NUZXh0IiwiemVyb1JpZ2h0Q2xhc3NOYW1lIiwiZnVsbFdpZHRoQ2xhc3NOYW1lIiwidXNlTWVyZ2VSZWZzIiwiZGVmYXVsdFZhbHVlIiwiaW5pdGlhbFZhbHVlIiwibmV3VmFsdWUiLCJhc3NpZ25SZWYiLCJmYWNhZGUiLCJJdG9JIiwiYSIsIlNpZGVDYXIiLCJzaWRlQ2FyIiwicmVzdCIsIlRhcmdldCIsInJlYWQiLCJpc1NpZGVDYXJFeHBvcnQiLCJlZmZlY3RDYXIiLCJvcHRpb25zIiwibWVkaXVtIiwiZGVmYXVsdHMiLCJtaWRkbGV3YXJlIiwiYnVmZmVyIiwiYXNzaWduZWQiLCJ1c2VNZWRpdW0iLCJkYXRhIiwieCIsImFzc2lnblN5bmNNZWRpdW0iLCJjYiIsImNicyIsImFzc2lnbk1lZGl1bSIsInBlbmRpbmdRdWV1ZSIsImV4ZWN1dGVRdWV1ZSIsImN5Y2xlIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiaW5uZXJDcmVhdGVNZWRpdW0iLCJhc3luYyIsInNzciIsImNyZWF0ZVNpZGVjYXJNZWRpdW0iLCJub3RoaW5nIiwiUmVtb3ZlU2Nyb2xsIiwicGFyZW50UmVmIiwidXNlUmVmIiwib25TY3JvbGxDYXB0dXJlIiwib25XaGVlbENhcHR1cmUiLCJvblRvdWNoTW92ZUNhcHR1cmUiLCJjYWxsYmFja3MiLCJzZXRDYWxsYmFja3MiLCJmb3J3YXJkUHJvcHMiLCJyZW1vdmVTY3JvbGxCYXIiLCJlbmFibGVkIiwic2hhcmRzIiwibm9Jc29sYXRpb24iLCJpbmVydCIsImFsbG93UGluY2hab29tIiwiYXMiLCJDb250YWluZXIiLCJjb250YWluZXJSZWYiLCJjb250YWluZXJQcm9wcyIsIkZyYWdtZW50IiwibG9ja1JlZiIsImNsb25lRWxlbWVudCIsIkNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwiemVyb1JpZ2h0IiwibWFrZVN0eWxlVGFnIiwidGFnIiwibm9uY2UiLCJfX3dlYnBhY2tfbm9uY2VfXyIsImdldE5vbmNlIiwic3R5bGVzaGVldFNpbmdsZXRvbiIsImNvdW50ZXIiLCJzdHlsZXNoZWV0IiwiY3NzIiwic3R5bGVTaGVldCIsImFwcGVuZENoaWxkIiwiY3JlYXRlVGV4dE5vZGUiLCJoZWFkIiwiZ2V0RWxlbWVudHNCeVRhZ05hbWUiLCJpbnNlcnRTdHlsZVRhZyIsInBhcmVudE5vZGUiLCJyZW1vdmVDaGlsZCIsInN0eWxlU2luZ2xldG9uIiwic2hlZXQiLCJ1c2VTdHlsZSIsImlzRHluYW1pYyIsInVzZUVmZmVjdCIsImR5bmFtaWMiLCJ6ZXJvR2FwIiwibGVmdCIsInRvcCIsInJpZ2h0IiwiZ2FwIiwicGFyc2UiLCJwYXJzZUludCIsImdldEdhcFdpZHRoIiwiZ2FwTW9kZSIsIm9mZnNldHMiLCJjcyIsImdldE9mZnNldCIsImRvY3VtZW50V2lkdGgiLCJkb2N1bWVudEVsZW1lbnQiLCJjbGllbnRXaWR0aCIsIndpbmRvd1dpZHRoIiwiaW5uZXJXaWR0aCIsIk1hdGgiLCJtYXgiLCJTdHlsZSIsImdldFN0eWxlcyIsImFsbG93UmVsYXRpdmUiLCJpbXBvcnRhbnQiLCJjb25jYXQiLCJSZW1vdmVTY3JvbGxCYXIiLCJub1JlbGF0aXZlIiwibm9JbXBvcnRhbnQiLCJ1c2VNZW1vIiwicGFzc2l2ZVN1cHBvcnRlZCIsImRlZmluZVByb3BlcnR5IiwiZ2V0IiwiZXJyIiwibm9uUGFzc2l2ZSIsInBhc3NpdmUiLCJlbGVtZW50Q2FuQmVTY3JvbGxlZCIsIm92ZXJmbG93Iiwib3ZlcmZsb3dZIiwib3ZlcmZsb3dYIiwiYWx3YXlzQ29udGFpbnNTY3JvbGwiLCJsb2NhdGlvbkNvdWxkQmVTY3JvbGxlZCIsImF4aXMiLCJTaGFkb3dSb290IiwiaG9zdCIsImVsZW1lbnRDb3VsZEJlU2Nyb2xsZWQiLCJnZXRTY3JvbGxWYXJpYWJsZXMiLCJlbGVtZW50Q291bGRCZVZTY3JvbGxlZCIsImVsZW1lbnRDb3VsZEJlSFNjcm9sbGVkIiwic2Nyb2xsVG9wIiwic2Nyb2xsSGVpZ2h0IiwiY2xpZW50SGVpZ2h0Iiwic2Nyb2xsTGVmdCIsInNjcm9sbFdpZHRoIiwiZ2V0SFNjcm9sbFZhcmlhYmxlcyIsImdldFRvdWNoWFkiLCJjaGFuZ2VkVG91Y2hlcyIsImNsaWVudFgiLCJjbGllbnRZIiwiZ2V0RGVsdGFYWSIsImRlbHRhWCIsImRlbHRhWSIsImV4dHJhY3RSZWYiLCJnZW5lcmF0ZVN0eWxlIiwiaWRDb3VudGVyIiwibG9ja1N0YWNrIiwiZXhwb3J0ZWQiLCJzaG91bGRQcmV2ZW50UXVldWUiLCJ0b3VjaFN0YXJ0UmVmIiwiYWN0aXZlQXhpcyIsImxhc3RQcm9wcyIsImNsYXNzTGlzdCIsImFsbG93XzEiLCJ0byIsInBhY2siLCJhciIsImwiLCJfX3NwcmVhZEFycmF5IiwiZWwiLCJzaG91bGRDYW5jZWxFdmVudCIsInVzZUNhbGxiYWNrIiwicGFyZW50IiwidG91Y2hlcyIsImN1cnJlbnRBeGlzIiwidG91Y2giLCJ0b3VjaFN0YXJ0IiwibW92ZURpcmVjdGlvbiIsImFicyIsImNhbkJlU2Nyb2xsZWRJbk1haW5EaXJlY3Rpb24iLCJjYW5jZWxpbmdBeGlzIiwiZW5kVGFyZ2V0Iiwic291cmNlRGVsdGEiLCJub092ZXJzY3JvbGwiLCJkaXJlY3Rpb25GYWN0b3IiLCJkaXJlY3Rpb24iLCJnZXREaXJlY3Rpb25GYWN0b3IiLCJkZWx0YSIsInRhcmdldEluTG9jayIsInNob3VsZENhbmNlbFNjcm9sbCIsImlzRGVsdGFQb3NpdGl2ZSIsImF2YWlsYWJsZVNjcm9sbCIsImF2YWlsYWJsZVNjcm9sbFRvcCIsInBvc2l0aW9uIiwiZWxlbWVudFNjcm9sbCIsImhhbmRsZVNjcm9sbCIsInNob3VsZFByZXZlbnQiLCJfZXZlbnQiLCJzb3VyY2VFdmVudCIsInkiLCJzaG91bGQiLCJzaGFyZE5vZGVzIiwic2hvdWxkQ2FuY2VsIiwic2Nyb2xsVG91Y2hTdGFydCIsInNjcm9sbFdoZWVsIiwic2Nyb2xsVG91Y2hNb3ZlIiwiaW5zdCIsIlJlYWN0UmVtb3ZlU2Nyb2xsIiwiJDAxYjljJFJlbW92ZVNjcm9sbCIsImNvdW50ZXJNYXAiLCJXZWFrTWFwIiwidW5jb250cm9sbGVkTm9kZXMiLCJtYXJrZXJNYXAiLCJsb2NrQ291bnQiLCJ1bndyYXBIb3N0IiwiYXBwbHlBdHRyaWJ1dGVUb090aGVycyIsIm9yaWdpbmFsVGFyZ2V0IiwibWFya2VyTmFtZSIsImNvbnRyb2xBdHRyaWJ1dGUiLCJ0YXJnZXRzIiwiY29ycmVjdGVkVGFyZ2V0IiwiY29uc29sZSIsImVycm9yIiwiY29ycmVjdFRhcmdldHMiLCJtYXJrZXJDb3VudGVyIiwiaGlkZGVuTm9kZXMiLCJlbGVtZW50c1RvS2VlcCIsImVsZW1lbnRzVG9TdG9wIiwia2VlcCIsImhhcyIsImRlZXAiLCJhdHRyIiwiZ2V0QXR0cmlidXRlIiwiYWxyZWFkeUhpZGRlbiIsImNvdW50ZXJWYWx1ZSIsIm1hcmtlclZhbHVlIiwic2V0IiwiY2xlYXIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJoaWRlT3RoZXJzIiwiYWN0aXZlUGFyZW50Tm9kZSIsImdldERlZmF1bHRQYXJlbnQiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRElBTE9HX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkY3JlYXRlRGlhbG9nQ29udGV4dCIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRjYzcwMjc3M2I4ZWEzZTQxIiwiJDY3VUhtJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dQcm92aWRlciIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciR1c2VEaWFsb2dDb250ZXh0IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBPUlRBTF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFBvcnRhbFByb3ZpZGVyIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVBvcnRhbENvbnRleHQiLCJmb3JjZU1vdW50IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJE9WRVJMQVlfTkFNRSIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRiZDFkMDZjNzliZTE5ZTE3IiwiJDY3VUhtJGZvcndhcmRSZWYiLCJwb3J0YWxDb250ZXh0IiwiX19zY29wZURpYWxvZyIsIm92ZXJsYXlQcm9wcyIsIm1vZGFsIiwiJDY3VUhtJGNyZWF0ZUVsZW1lbnQiLCIkNjdVSG0kUHJlc2VuY2UiLCJvcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ092ZXJsYXlJbXBsIiwiJDY3VUhtJGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwiJDY3VUhtJFJlbW92ZVNjcm9sbCIsIiQ2N1VIbSRTbG90IiwiY29udGVudFJlZiIsIiQ2N1VIbSRQcmltaXRpdmUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkZ2V0U3RhdGUiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkQ09OVEVOVF9OQU1FIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGI2ZDk1NjVkZTFlMDY4Y2YiLCJjb250ZW50UHJvcHMiLCIkNWQzODUwYzRkMGI0ZTZjNyR2YXIkRGlhbG9nQ29udGVudE1vZGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJERpYWxvZ0NvbnRlbnROb25Nb2RhbCIsIiQ2N1VIbSR1c2VSZWYiLCIkNjdVSG0kdXNlQ29tcG9zZWRSZWZzIiwiJDY3VUhtJHVzZUVmZmVjdCIsImNvbnRlbnQiLCIkNjdVSG0kaGlkZU90aGVycyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JHZhciREaWFsb2dDb250ZW50SW1wbCIsInRyYXBGb2N1cyIsIm9uQ2xvc2VBdXRvRm9jdXMiLCIkNjdVSG0kY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJfY29udGV4dCR0cmlnZ2VyUmVmJGMiLCJ0cmlnZ2VyUmVmIiwiY3RybExlZnRDbGljayIsImhhc0ludGVyYWN0ZWRPdXRzaWRlUmVmIiwiaGFzUG9pbnRlckRvd25PdXRzaWRlUmVmIiwiX3Byb3BzJG9uQ2xvc2VBdXRvRm9jIiwiX2NvbnRleHQkdHJpZ2dlclJlZiRjMiIsIl9wcm9wcyRvbkludGVyYWN0T3V0cyIsIl9jb250ZXh0JHRyaWdnZXJSZWYkYzMiLCJvbk9wZW5BdXRvRm9jdXMiLCIkNjdVSG0kdXNlRm9jdXNHdWFyZHMiLCIkNjdVSG0kRnJhZ21lbnQiLCIkNjdVSG0kRm9jdXNTY29wZSIsIiQ2N1VIbSREaXNtaXNzYWJsZUxheWVyIiwicm9sZSIsImNvbnRlbnRJZCIsImRlc2NyaXB0aW9uSWQiLCJ0aXRsZUlkIiwib25PcGVuQ2hhbmdlIiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJFRJVExFX05BTUUiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkMTZmNzYzOGU0YTM0YjkwOSIsInRpdGxlUHJvcHMiLCJoMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ5NGU5NGMyZWMyYzk1NGQ1IiwiZGVzY3JpcHRpb25Qcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmYmEyZmI3Y2Q3ODFiN2FjIiwiY2xvc2VQcm9wcyIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCQ2OWI2MmE0OTM5MzkxN2Q2IiwiJDVkMzg1MGM0ZDBiNGU2YzckdmFyJHVzZVdhcm5pbmdDb250ZXh0IiwiJDY3VUhtJGNyZWF0ZUNvbnRleHQiLCJjb250ZW50TmFtZSIsInRpdGxlTmFtZSIsImRvY3NTbHVnIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJvcGVuUHJvcCIsImRlZmF1bHRPcGVuIiwic2V0T3BlbiIsIiQ2N1VIbSR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ2N1VIbSR1c2VJZCIsIm9uT3BlblRvZ2dsZSIsIiQ2N1VIbSR1c2VDYWxsYmFjayIsInByZXZPcGVuIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkNjdVSG0kQ2hpbGRyZW4iLCIkNjdVSG0kUG9ydGFsIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JGM2ZmRiODM3YjA3MGI0ZmYiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiQ1ZDM4NTBjNGQwYjRlNmM3JGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIiwiJDVkMzg1MGM0ZDBiNGU2YzckZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQiLCIkNWQzODUwYzRkMGI0ZTZjNyRleHBvcnQkZjM5YzJkMTY1Y2Q4NjFmZSIsIl9wYXRoIiwiU3ZnQ2xvc2UiLCJ4bWxucyIsIndpZHRoIiwiaGVpZ2h0IiwiZmlsbCIsIm1hc2tVbml0cyIsIm1hc2tUeXBlIiwiZCIsIm1hc2siLCJNb2RhbCIsInRpdGxlIiwiaGlkZUNsb3NlQnV0dG9uIiwiY29udGVudENsYXNzTmFtZSIsIm1heEhlaWdodCIsIkRpYWxvZy5Sb290IiwiRGlhbG9nLlBvcnRhbCIsIkRpYWxvZy5PdmVybGF5IiwiRGlhbG9nLkNvbnRlbnQiLCJEaWFsb2cuVGl0bGUiLCJEaWFsb2cuQ2xvc2UiLCJDbG9zZUljb24iLCIkZTAyYTdkOWNiMWRjMTI4YyRleHBvcnQkYzc0MTI1YThlM2FmNmJiMiIsIlBST1ZJREVSX05BTUUiLCJjcmVhdGVDb2xsZWN0aW9uQ29udGV4dCIsImNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQ2dlloVSRjcmVhdGVDb250ZXh0U2NvcGUiLCJDb2xsZWN0aW9uUHJvdmlkZXJJbXBsIiwidXNlQ29sbGVjdGlvbkNvbnRleHQiLCJjb2xsZWN0aW9uUmVmIiwiaXRlbU1hcCIsIk1hcCIsIkNPTExFQ1RJT05fU0xPVF9OQU1FIiwiSVRFTV9TTE9UX05BTUUiLCJJVEVNX0RBVEFfQVRUUiIsIiQ2dlloVSRyZWFjdCIsIlNsb3QiLCIkNnZZaFUkdXNlQ29tcG9zZWRSZWZzIiwiJDZ2WWhVJFNsb3QiLCJJdGVtU2xvdCIsIml0ZW1EYXRhIiwiY29sbGVjdGlvbk5vZGUiLCJvcmRlcmVkTm9kZXMiLCJzb3J0IiwiYiIsIiRmNjMxNjYzZGIzMjk0YWNlJHZhciREaXJlY3Rpb25Db250ZXh0IiwiJDdHamNkJGNyZWF0ZUNvbnRleHQiLCIkZjYzMTY2M2RiMzI5NGFjZSRleHBvcnQkYjM5MTI2ZDUxZDk0ZTZmMyIsImxvY2FsRGlyIiwiZ2xvYmFsRGlyIiwiJDdHamNkJHVzZUNvbnRleHQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRU5UUllfRk9DVVMiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkRVZFTlRfT1BUSU9OUyIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRHUk9VUF9OQU1FIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJENvbGxlY3Rpb24iLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVDb2xsZWN0aW9uU2NvcGUiLCIkOThJeWUkY3JlYXRlQ29sbGVjdGlvbiIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRjcmVhdGVSb3ZpbmdGb2N1c0dyb3VwQ29udGV4dCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRjNzEwOTQ4OTU1MWE0ZjQiLCIkOThJeWUkY3JlYXRlQ29udGV4dFNjb3BlIiwiJGQ3YmRmYjllYjBmZGYzMTEkdmFyJFJvdmluZ0ZvY3VzUHJvdmlkZXIiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkdXNlUm92aW5nRm9jdXNDb250ZXh0IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDg2OTlmN2M4YWYxNDgzMzgiLCIkOThJeWUkZm9yd2FyZFJlZiIsIiQ5OEl5ZSRjcmVhdGVFbGVtZW50IiwiX19zY29wZVJvdmluZ0ZvY3VzR3JvdXAiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkUm92aW5nRm9jdXNHcm91cEltcGwiLCIkOThJeWUkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJvcmllbnRhdGlvbiIsImRpciIsImN1cnJlbnRUYWJTdG9wSWQiLCJjdXJyZW50VGFiU3RvcElkUHJvcCIsImRlZmF1bHRDdXJyZW50VGFiU3RvcElkIiwib25DdXJyZW50VGFiU3RvcElkQ2hhbmdlIiwib25FbnRyeUZvY3VzIiwiZ3JvdXBQcm9wcyIsIiQ5OEl5ZSR1c2VSZWYiLCIkOThJeWUkdXNlQ29tcG9zZWRSZWZzIiwiJDk4SXllJHVzZURpcmVjdGlvbiIsInNldEN1cnJlbnRUYWJTdG9wSWQiLCIkOThJeWUkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJpc1RhYmJpbmdCYWNrT3V0Iiwic2V0SXNUYWJiaW5nQmFja091dCIsIiQ5OEl5ZSR1c2VTdGF0ZSIsImhhbmRsZUVudHJ5Rm9jdXMiLCIkOThJeWUkdXNlQ2FsbGJhY2tSZWYiLCJnZXRJdGVtcyIsImlzQ2xpY2tGb2N1c1JlZiIsImZvY3VzYWJsZUl0ZW1zQ291bnQiLCJzZXRGb2N1c2FibGVJdGVtc0NvdW50IiwiJDk4SXllJHVzZUVmZmVjdCIsIm9uSXRlbUZvY3VzIiwiJDk4SXllJHVzZUNhbGxiYWNrIiwidGFiU3RvcElkIiwib25JdGVtU2hpZnRUYWIiLCJvbkZvY3VzYWJsZUl0ZW1BZGQiLCJwcmV2Q291bnQiLCJvbkZvY3VzYWJsZUl0ZW1SZW1vdmUiLCIkOThJeWUkUHJpbWl0aXZlIiwib3V0bGluZSIsIm9uTW91c2VEb3duIiwiJDk4SXllJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwib25Gb2N1cyIsImlzS2V5Ym9hcmRGb2N1cyIsImVudHJ5Rm9jdXNFdmVudCIsImZvY3VzYWJsZSIsIiRkN2JkZmI5ZWIwZmRmMzExJHZhciRmb2N1c0ZpcnN0IiwiYWN0aXZlIiwib25CbHVyIiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JGFiOWRmN2M1M2ZlODQ1NCIsIml0ZW1Qcm9wcyIsImF1dG9JZCIsIiQ5OEl5ZSR1c2VJZCIsImlzQ3VycmVudFRhYlN0b3AiLCJzcGFuIiwiZm9jdXNJbnRlbnQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0RGlyZWN0aW9uQXdhcmVLZXkiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkTUFQX0tFWV9UT19GT0NVU19JTlRFTlQiLCIkZDdiZGZiOWViMGZkZjMxMSR2YXIkZ2V0Rm9jdXNJbnRlbnQiLCJjYW5kaWRhdGVOb2RlcyIsImN1cnJlbnRJbmRleCIsInN0YXJ0SW5kZXgiLCJfIiwiQXJyb3dMZWZ0IiwiQXJyb3dVcCIsIkFycm93UmlnaHQiLCJBcnJvd0Rvd24iLCJQYWdlVXAiLCJIb21lIiwiUGFnZURvd24iLCJFbmQiLCJQUkVWSU9VU0xZX0ZPQ1VTRURfRUxFTUVOVCIsIiRkN2JkZmI5ZWIwZmRmMzExJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGQ3YmRmYjllYjBmZGYzMTEkZXhwb3J0JDZkMDg3NzNkMmU2NmY4ZjIiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVEFCU19OQU1FIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJGNyZWF0ZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkZXhwb3J0JDM1NWY1YmQyMDlkN2IxM2EiLCIkMUlIemskY3JlYXRlQ29udGV4dFNjb3BlIiwiJDFJSHprJGNyZWF0ZVJvdmluZ0ZvY3VzR3JvdXBTY29wZSIsIiQ2OWNiMzBiYjAwMTdkZjA1JHZhciR1c2VSb3ZpbmdGb2N1c0dyb3VwU2NvcGUiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkVGFic1Byb3ZpZGVyIiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJHVzZVRhYnNDb250ZXh0IiwiJDY5Y2IzMGJiMDAxN2RmMDUkdmFyJG1ha2VUcmlnZ2VySWQiLCJiYXNlSWQiLCIkNjljYjMwYmIwMDE3ZGYwNSR2YXIkbWFrZUNvbnRlbnRJZCIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDFJSHprJGZvcndhcmRSZWYiLCJfX3Njb3BlVGFicyIsInZhbHVlUHJvcCIsIm9uVmFsdWVDaGFuZ2UiLCJhY3RpdmF0aW9uTW9kZSIsInRhYnNQcm9wcyIsIiQxSUh6ayR1c2VEaXJlY3Rpb24iLCJzZXRWYWx1ZSIsIiQxSUh6ayR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQxSUh6ayRjcmVhdGVFbGVtZW50IiwiJDFJSHprJHVzZUlkIiwiJDFJSHprJFByaW1pdGl2ZSIsIiQxSUh6ayRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ1NGMyZTNkYzdhY2VhOWY1IiwibGlzdFByb3BzIiwicm92aW5nRm9jdXNHcm91cFNjb3BlIiwiJDFJSHprJFJvb3QiLCIkNjljYjMwYmIwMDE3ZGYwNSRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsInRyaWdnZXJQcm9wcyIsInRyaWdnZXJJZCIsImlzU2VsZWN0ZWQiLCIkMUlIemskSXRlbSIsIiQxSUh6ayRjb21wb3NlRXZlbnRIYW5kbGVycyIsImlzQXV0b21hdGljQWN0aXZhdGlvbiIsIiQ2OWNiMzBiYjAwMTdkZjA1JGV4cG9ydCQ3YzZlMmMwMjE1N2JiN2QyIiwiaXNNb3VudEFuaW1hdGlvblByZXZlbnRlZFJlZiIsIiQxSUh6ayR1c2VSZWYiLCIkMUlIemskdXNlRWZmZWN0IiwickFGIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCIkMUlIemskUHJlc2VuY2UiLCJhbmltYXRpb25EdXJhdGlvbiIsIlRhYnNSb290IiwiVGFicy5Sb290IiwiVGFic0xpc3QiLCJUYWJzLkxpc3QiLCJUYWIiLCJUYWJzLlRyaWdnZXIiLCJUYWJzQ29udGVudCIsIlRhYnMuQ29udGVudCIsIiQwMTBjMjkxM2RiZDJmZTNkJGV4cG9ydCQ1Y2FlMzYxYWQ4MmRjZThiIiwiJDhMdnZLJHVzZVJlZiIsInByZXZpb3VzIiwiJDhMdnZLJHVzZU1lbW8iLCIkZGI2YzM0ODUxNTBiOGU2NiRleHBvcnQkMWFiN2FlNzE0Njk4YzRiOCIsInNldFNpemUiLCIkOWd5R1IkdXNlU3RhdGUiLCIkOWd5R1IkdXNlTGF5b3V0RWZmZWN0Iiwib2Zmc2V0V2lkdGgiLCJvZmZzZXRIZWlnaHQiLCJyZXNpemVPYnNlcnZlciIsIlJlc2l6ZU9ic2VydmVyIiwiZW50cmllcyIsImVudHJ5IiwiYm9yZGVyU2l6ZUVudHJ5IiwiYm9yZGVyU2l6ZSIsImJveCIsInVub2JzZXJ2ZSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRTV0lUQ0hfTkFNRSIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JHZhciRjcmVhdGVTd2l0Y2hDb250ZXh0IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JGNmN2Y1ZjE3ZjY5Y2JkNDMiLCIkaXJQSWwkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJFN3aXRjaFByb3ZpZGVyIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJHVzZVN3aXRjaENvbnRleHQiLCIkNmJlNDk2NmZkOWJiYzY5OCRleHBvcnQkYjVkNWNmODkyN2FiNzI2MiIsIiRpclBJbCRmb3J3YXJkUmVmIiwiX19zY29wZVN3aXRjaCIsImNoZWNrZWQiLCJjaGVja2VkUHJvcCIsImRlZmF1bHRDaGVja2VkIiwicmVxdWlyZWQiLCJvbkNoZWNrZWRDaGFuZ2UiLCJzd2l0Y2hQcm9wcyIsInNldEJ1dHRvbiIsIiRpclBJbCR1c2VTdGF0ZSIsIiRpclBJbCR1c2VDb21wb3NlZFJlZnMiLCJoYXNDb25zdW1lclN0b3BwZWRQcm9wYWdhdGlvblJlZiIsIiRpclBJbCR1c2VSZWYiLCJpc0Zvcm1Db250cm9sIiwiY2xvc2VzdCIsInNldENoZWNrZWQiLCIkaXJQSWwkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCIkaXJQSWwkY3JlYXRlRWxlbWVudCIsIiRpclBJbCRQcmltaXRpdmUiLCIkaXJQSWwkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNmJlNDk2NmZkOWJiYzY5OCR2YXIkZ2V0U3RhdGUiLCIkaXJQSWwkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJwcmV2Q2hlY2tlZCIsImlzUHJvcGFnYXRpb25TdG9wcGVkIiwic3RvcFByb3BhZ2F0aW9uIiwiJDZiZTQ5NjZmZDliYmM2OTgkdmFyJEJ1YmJsZUlucHV0IiwiY29udHJvbCIsInRyYW5zZm9ybSIsImlucHV0UHJvcHMiLCIkaXJQSWwkdXNlUHJldmlvdXMiLCJjb250cm9sU2l6ZSIsIiRpclBJbCR1c2VTaXplIiwiJGlyUElsJHVzZUVmZmVjdCIsImlucHV0IiwiaW5wdXRQcm90byIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsIkV2ZW50Iiwib3BhY2l0eSIsIm1hcmdpbiIsIiQ2YmU0OTY2ZmQ5YmJjNjk4JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDZiZTQ5NjZmZDliYmM2OTgkZXhwb3J0JDY1MjE0MzNlZDE1YTM0ZGIiLCJ0aHVtYlByb3BzIiwiU3dpdGNoIiwiUmFkaXhTd2l0Y2guUm9vdCIsIlJhZGl4U3dpdGNoLlRodW1iIiwiZ2V0QWxpZ25tZW50IiwicGxhY2VtZW50Iiwic3BsaXQiLCJnZXRMZW5ndGhGcm9tQXhpcyIsImdldFNpZGUiLCJnZXRNYWluQXhpc0Zyb21QbGFjZW1lbnQiLCJjb21wdXRlQ29vcmRzRnJvbVBsYWNlbWVudCIsIl9yZWYiLCJydGwiLCJyZWZlcmVuY2UiLCJmbG9hdGluZyIsImNvbW1vblgiLCJjb21tb25ZIiwibWFpbkF4aXMiLCJjb21tb25BbGlnbiIsImlzVmVydGljYWwiLCJjb29yZHMiLCJldmFsdWF0ZSIsInBhcmFtIiwiZ2V0U2lkZU9iamVjdEZyb21QYWRkaW5nIiwicGFkZGluZyIsImJvdHRvbSIsImV4cGFuZFBhZGRpbmdPYmplY3QiLCJyZWN0VG9DbGllbnRSZWN0IiwicmVjdCIsImRldGVjdE92ZXJmbG93IiwiX2F3YWl0JHBsYXRmb3JtJGlzRWxlIiwicGxhdGZvcm0iLCJyZWN0cyIsInN0cmF0ZWd5IiwiYm91bmRhcnkiLCJyb290Qm91bmRhcnkiLCJlbGVtZW50Q29udGV4dCIsImFsdEJvdW5kYXJ5IiwicGFkZGluZ09iamVjdCIsImNsaXBwaW5nQ2xpZW50UmVjdCIsImdldENsaXBwaW5nUmVjdCIsImlzRWxlbWVudCIsImNvbnRleHRFbGVtZW50IiwiZ2V0RG9jdW1lbnRFbGVtZW50Iiwib2Zmc2V0UGFyZW50IiwiZ2V0T2Zmc2V0UGFyZW50Iiwib2Zmc2V0U2NhbGUiLCJnZXRTY2FsZSIsImVsZW1lbnRDbGllbnRSZWN0IiwiY29udmVydE9mZnNldFBhcmVudFJlbGF0aXZlUmVjdFRvVmlld3BvcnRSZWxhdGl2ZVJlY3QiLCJtaW4iLCJ3aXRoaW4iLCJtaW4kMSIsIm1heCQxIiwiYXJyb3ciLCJhcnJvd0RpbWVuc2lvbnMiLCJnZXREaW1lbnNpb25zIiwiaXNZQXhpcyIsIm1pblByb3AiLCJtYXhQcm9wIiwiY2xpZW50UHJvcCIsImVuZERpZmYiLCJzdGFydERpZmYiLCJhcnJvd09mZnNldFBhcmVudCIsImNsaWVudFNpemUiLCJjZW50ZXJUb1JlZmVyZW5jZSIsImxhcmdlc3RQb3NzaWJsZVBhZGRpbmciLCJtaW5QYWRkaW5nIiwibWF4UGFkZGluZyIsImNlbnRlciIsIm9mZnNldCIsInNob3VsZEFkZE9mZnNldCIsImNlbnRlck9mZnNldCIsInNpZGVzIiwib3Bwb3NpdGVTaWRlTWFwIiwiZ2V0T3Bwb3NpdGVQbGFjZW1lbnQiLCJyZXBsYWNlIiwic2lkZSIsIm9wcG9zaXRlQWxpZ25tZW50TWFwIiwic3RhcnQiLCJlbmQiLCJnZXRPcHBvc2l0ZUFsaWdubWVudFBsYWNlbWVudCIsImFsaWdubWVudCIsImZsaXAiLCJfbWlkZGxld2FyZURhdGEkZmxpcCIsIm1pZGRsZXdhcmVEYXRhIiwiaW5pdGlhbFBsYWNlbWVudCIsImNoZWNrTWFpbkF4aXMiLCJjcm9zc0F4aXMiLCJjaGVja0Nyb3NzQXhpcyIsImZhbGxiYWNrUGxhY2VtZW50cyIsInNwZWNpZmllZEZhbGxiYWNrUGxhY2VtZW50cyIsImZhbGxiYWNrU3RyYXRlZ3kiLCJmYWxsYmFja0F4aXNTaWRlRGlyZWN0aW9uIiwiZmxpcEFsaWdubWVudCIsImRldGVjdE92ZXJmbG93T3B0aW9ucyIsImlzQmFzZVBsYWNlbWVudCIsImlzUlRMIiwib3Bwb3NpdGVQbGFjZW1lbnQiLCJnZXRFeHBhbmRlZFBsYWNlbWVudHMiLCJsaXN0IiwiaXNTdGFydCIsImxyIiwicmwiLCJ0YiIsImJ0IiwiZ2V0U2lkZUxpc3QiLCJnZXRPcHBvc2l0ZUF4aXNQbGFjZW1lbnRzIiwicGxhY2VtZW50cyIsIm92ZXJmbG93cyIsIm92ZXJmbG93c0RhdGEiLCJtYWluIiwiY3Jvc3MiLCJtYWluQWxpZ25tZW50U2lkZSIsImdldEFsaWdubWVudFNpZGVzIiwiZXZlcnkiLCJfbWlkZGxld2FyZURhdGEkZmxpcDIiLCJfb3ZlcmZsb3dzRGF0YSRmaWx0ZXIiLCJuZXh0SW5kZXgiLCJuZXh0UGxhY2VtZW50IiwicmVzZXQiLCJyZXNldFBsYWNlbWVudCIsIl9vdmVyZmxvd3NEYXRhJG1hcCRzbyIsImFjYyIsImdldFNpZGVPZmZzZXRzIiwiaXNBbnlTaWRlRnVsbHlDbGlwcGVkIiwiaGlkZSIsInJlZmVyZW5jZUhpZGRlbk9mZnNldHMiLCJyZWZlcmVuY2VIaWRkZW4iLCJlc2NhcGVkT2Zmc2V0cyIsImVzY2FwZWQiLCJkaWZmQ29vcmRzIiwibWFpbkF4aXNNdWx0aSIsImNyb3NzQXhpc011bHRpIiwicmF3VmFsdWUiLCJhbGlnbm1lbnRBeGlzIiwiY29udmVydFZhbHVlVG9Db29yZHMiLCJnZXRDcm9zc0F4aXMiLCJzaGlmdCIsImxpbWl0ZXIiLCJmbiIsIm1haW5BeGlzQ29vcmQiLCJjcm9zc0F4aXNDb29yZCIsIm1heFNpZGUiLCJsaW1pdGVkQ29vcmRzIiwibGltaXRTaGlmdCIsInJhd09mZnNldCIsImNvbXB1dGVkT2Zmc2V0IiwibGVuIiwibGltaXRNaW4iLCJsaW1pdE1heCIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZSIsIl9taWRkbGV3YXJlRGF0YSRvZmZzZTIiLCJpc09yaWdpblNpZGUiLCJpc1hBeGlzIiwiaGVpZ2h0U2lkZSIsIndpZHRoU2lkZSIsIm92ZXJmbG93QXZhaWxhYmxlSGVpZ2h0Iiwib3ZlcmZsb3dBdmFpbGFibGVXaWR0aCIsIm5vU2hpZnQiLCJhdmFpbGFibGVIZWlnaHQiLCJhdmFpbGFibGVXaWR0aCIsIm1heGltdW1DbGlwcGluZ1dpZHRoIiwibWF4aW11bUNsaXBwaW5nSGVpZ2h0IiwieE1pbiIsInhNYXgiLCJ5TWluIiwieU1heCIsIm5leHREaW1lbnNpb25zIiwiZ2V0V2luZG93IiwiZGVmYXVsdFZpZXciLCJnZXRDb21wdXRlZFN0eWxlJDEiLCJpc05vZGUiLCJnZXROb2RlTmFtZSIsIm5vZGVOYW1lIiwidG9Mb3dlckNhc2UiLCJpc0hUTUxFbGVtZW50IiwiSFRNTEVsZW1lbnQiLCJFbGVtZW50IiwiaXNTaGFkb3dSb290IiwiaXNPdmVyZmxvd0VsZW1lbnQiLCJpc1RhYmxlRWxlbWVudCIsImlzQ29udGFpbmluZ0Jsb2NrIiwic2FmYXJpIiwiaXNTYWZhcmkiLCJwZXJzcGVjdGl2ZSIsImJhY2tkcm9wRmlsdGVyIiwid2lsbENoYW5nZSIsImNvbnRhaW4iLCJDU1MiLCJzdXBwb3J0cyIsImlzTGFzdFRyYXZlcnNhYmxlTm9kZSIsInJvdW5kIiwiZ2V0Q3NzRGltZW5zaW9ucyIsInBhcnNlRmxvYXQiLCJoYXNPZmZzZXQiLCJzaG91bGRGYWxsYmFjayIsImZhbGxiYWNrIiwidW53cmFwRWxlbWVudCIsIkZBTExCQUNLX1NDQUxFIiwiZG9tRWxlbWVudCIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsIk51bWJlciIsImlzRmluaXRlIiwibm9PZmZzZXRzIiwiZ2V0VmlzdWFsT2Zmc2V0cyIsImlzRml4ZWQiLCJmbG9hdGluZ09mZnNldFBhcmVudCIsIl93aW4kdmlzdWFsVmlld3BvcnQiLCJfd2luJHZpc3VhbFZpZXdwb3J0MiIsIndpbiIsInZpc3VhbFZpZXdwb3J0Iiwib2Zmc2V0TGVmdCIsIm9mZnNldFRvcCIsImluY2x1ZGVTY2FsZSIsImlzRml4ZWRTdHJhdGVneSIsImNsaWVudFJlY3QiLCJzY2FsZSIsInZpc3VhbE9mZnNldHMiLCJvZmZzZXRXaW4iLCJjdXJyZW50SUZyYW1lIiwiZnJhbWVFbGVtZW50IiwiaWZyYW1lU2NhbGUiLCJpZnJhbWVSZWN0IiwiY2xpZW50TGVmdCIsInBhZGRpbmdMZWZ0IiwiY2xpZW50VG9wIiwicGFkZGluZ1RvcCIsImdldE5vZGVTY3JvbGwiLCJwYWdlWE9mZnNldCIsInBhZ2VZT2Zmc2V0IiwiZ2V0V2luZG93U2Nyb2xsQmFyWCIsImdldFBhcmVudE5vZGUiLCJyZXN1bHQiLCJhc3NpZ25lZFNsb3QiLCJnZXROZWFyZXN0T3ZlcmZsb3dBbmNlc3RvciIsImdldE92ZXJmbG93QW5jZXN0b3JzIiwic2Nyb2xsYWJsZUFuY2VzdG9yIiwiaXNCb2R5IiwiZ2V0Q2xpZW50UmVjdEZyb21DbGlwcGluZ0FuY2VzdG9yIiwiY2xpcHBpbmdBbmNlc3RvciIsImh0bWwiLCJ2aXN1YWxWaWV3cG9ydEJhc2VkIiwiZ2V0Vmlld3BvcnRSZWN0Iiwic2Nyb2xsIiwiZ2V0RG9jdW1lbnRSZWN0IiwiZ2V0SW5uZXJCb3VuZGluZ0NsaWVudFJlY3QiLCJoYXNGaXhlZFBvc2l0aW9uQW5jZXN0b3IiLCJzdG9wTm9kZSIsImdldFRydWVPZmZzZXRQYXJlbnQiLCJwb2x5ZmlsbCIsImdldENvbnRhaW5pbmdCbG9jayIsImdldFJlY3RSZWxhdGl2ZVRvT2Zmc2V0UGFyZW50IiwiaXNPZmZzZXRQYXJlbnRBbkVsZW1lbnQiLCJvZmZzZXRSZWN0IiwiY2xpcHBpbmdBbmNlc3RvcnMiLCJjYWNoZSIsImNhY2hlZFJlc3VsdCIsImN1cnJlbnRDb250YWluaW5nQmxvY2tDb21wdXRlZFN0eWxlIiwiZWxlbWVudElzRml4ZWQiLCJjb21wdXRlZFN0eWxlIiwiY3VycmVudE5vZGVJc0NvbnRhaW5pbmciLCJhbmNlc3RvciIsImdldENsaXBwaW5nRWxlbWVudEFuY2VzdG9ycyIsImZpcnN0Q2xpcHBpbmdBbmNlc3RvciIsImNsaXBwaW5nUmVjdCIsImFjY1JlY3QiLCJnZXRPZmZzZXRQYXJlbnRGbiIsImdldERpbWVuc2lvbnNGbiIsImdldENsaWVudFJlY3RzIiwiYXV0b1VwZGF0ZSIsInVwZGF0ZSIsImFuY2VzdG9yU2Nyb2xsIiwiYW5jZXN0b3JSZXNpemUiLCJlbGVtZW50UmVzaXplIiwiYW5pbWF0aW9uRnJhbWUiLCJhbmNlc3RvcnMiLCJpc1Zpc3VhbFZpZXdwb3J0IiwiZnJhbWVJZCIsIm9ic2VydmVyIiwicHJldlJlZlJlY3QiLCJmcmFtZUxvb3AiLCJuZXh0UmVmUmVjdCIsIl9vYnNlcnZlciIsImNvbXB1dGVQb3NpdGlvbiIsIm1lcmdlZE9wdGlvbnMiLCJwbGF0Zm9ybVdpdGhDYWNoZSIsImNvbmZpZyIsInZhbGlkTWlkZGxld2FyZSIsImdldEVsZW1lbnRSZWN0cyIsInN0YXRlZnVsUGxhY2VtZW50IiwicmVzZXRDb3VudCIsIm5leHRYIiwibmV4dFkiLCJjb21wdXRlUG9zaXRpb24kMSIsImFycm93JDEiLCJ1c2VMYXlvdXRFZmZlY3QiLCJkZWVwRXF1YWwiLCJrZXlzIiwiJCR0eXBlb2YiLCJnZXREUFIiLCJkZXZpY2VQaXhlbFJhdGlvIiwicm91bmRCeURQUiIsImRwciIsInVzZUxhdGVzdFJlZiIsIiQ3ZThmNWNkMDcxODc4MDNlJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJGpibkV4JGZvcndhcmRSZWYiLCJhcnJvd1Byb3BzIiwiJGpibkV4JGNyZWF0ZUVsZW1lbnQiLCIkamJuRXgkUHJpbWl0aXZlIiwic3ZnIiwiJGpibkV4JGJhYmVscnVudGltZWhlbHBlcnNlc21leHRlbmRzIiwidmlld0JveCIsInByZXNlcnZlQXNwZWN0UmF0aW8iLCJwb2ludHMiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUE9QUEVSX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkY3JlYXRlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCQ3MjJhYWMxOTRhZTkyMyIsIiRrWTkzViRjcmVhdGVDb250ZXh0U2NvcGUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyUHJvdmlkZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdXNlUG9wcGVyQ29udGV4dCIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRlY2Q0ZTFjY2FiNmVkNmQiLCIka1k5M1YkZm9yd2FyZFJlZiIsIl9fc2NvcGVQb3BwZXIiLCJ2aXJ0dWFsUmVmIiwiYW5jaG9yUHJvcHMiLCIka1k5M1YkdXNlUmVmIiwiJGtZOTNWJHVzZUNvbXBvc2VkUmVmcyIsIiRrWTkzViR1c2VFZmZlY3QiLCJvbkFuY2hvckNoYW5nZSIsIiRrWTkzViRjcmVhdGVFbGVtZW50IiwiJGtZOTNWJFByaW1pdGl2ZSIsIiRrWTkzViRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRDT05URU5UX05BTUUiLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkUG9wcGVyQ29udGVudFByb3ZpZGVyIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJHVzZUNvbnRlbnRDb250ZXh0IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JGJjNGFlNTg1NWQzYzRmYyIsIl9hcnJvd1NpemUkd2lkdGgiLCJfYXJyb3dTaXplJGhlaWdodCIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdyIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzIiLCJfbWlkZGxld2FyZURhdGEkYXJyb3czIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zIiwiX21pZGRsZXdhcmVEYXRhJHRyYW5zMiIsIl9taWRkbGV3YXJlRGF0YSRoaWRlIiwic2lkZU9mZnNldCIsImFsaWduIiwiYWxpZ25PZmZzZXQiLCJhcnJvd1BhZGRpbmciLCJjb2xsaXNpb25Cb3VuZGFyeSIsImNvbGxpc2lvblBhZGRpbmciLCJjb2xsaXNpb25QYWRkaW5nUHJvcCIsInN0aWNreSIsImhpZGVXaGVuRGV0YWNoZWQiLCJhdm9pZENvbGxpc2lvbnMiLCJvblBsYWNlZCIsInNldENvbnRlbnQiLCIka1k5M1YkdXNlU3RhdGUiLCJzZXRBcnJvdyIsImFycm93U2l6ZSIsIiRrWTkzViR1c2VTaXplIiwiYXJyb3dXaWR0aCIsImFycm93SGVpZ2h0IiwiZGVzaXJlZFBsYWNlbWVudCIsImhhc0V4cGxpY2l0Qm91bmRhcmllcyIsIiRjZjFhYzVkOWZlMGU4MjA2JHZhciRpc05vdE51bGwiLCJmbG9hdGluZ1N0eWxlcyIsImlzUG9zaXRpb25lZCIsImV4dGVybmFsUmVmZXJlbmNlIiwiZXh0ZXJuYWxGbG9hdGluZyIsIndoaWxlRWxlbWVudHNNb3VudGVkIiwic2V0RGF0YSIsImxhdGVzdE1pZGRsZXdhcmUiLCJzZXRMYXRlc3RNaWRkbGV3YXJlIiwiX3JlZmVyZW5jZSIsIl9zZXRSZWZlcmVuY2UiLCJfZmxvYXRpbmciLCJfc2V0RmxvYXRpbmciLCJzZXRSZWZlcmVuY2UiLCJyZWZlcmVuY2VSZWYiLCJzZXRGbG9hdGluZyIsImZsb2F0aW5nUmVmIiwicmVmZXJlbmNlRWwiLCJmbG9hdGluZ0VsIiwiZGF0YVJlZiIsIndoaWxlRWxlbWVudHNNb3VudGVkUmVmIiwicGxhdGZvcm1SZWYiLCJmdWxsRGF0YSIsImlzTW91bnRlZFJlZiIsIlJlYWN0RE9NIiwiZmx1c2hTeW5jIiwiaW5pdGlhbFN0eWxlcyIsIiRrWTkzViR1c2VGbG9hdGluZyIsIiRrWTkzViRhdXRvVXBkYXRlIiwiYW5jaG9yIiwiJGtZOTNWJG9mZnNldCIsIiRrWTkzViRzaGlmdCIsIiRrWTkzViRsaW1pdFNoaWZ0IiwiJGtZOTNWJGZsaXAiLCIka1k5M1Ykc2l6ZSIsImFuY2hvcldpZHRoIiwiYW5jaG9ySGVpZ2h0IiwiY29udGVudFN0eWxlIiwic2V0UHJvcGVydHkiLCIka1k5M1YkYXJyb3ciLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkdHJhbnNmb3JtT3JpZ2luIiwiJGtZOTNWJGhpZGUiLCJwbGFjZWRTaWRlIiwicGxhY2VkQWxpZ24iLCIkY2YxYWM1ZDlmZTBlODIwNiR2YXIkZ2V0U2lkZUFuZEFsaWduRnJvbVBsYWNlbWVudCIsImhhbmRsZVBsYWNlZCIsIiRrWTkzViR1c2VDYWxsYmFja1JlZiIsIiRrWTkzViR1c2VMYXlvdXRFZmZlY3QiLCJhcnJvd1giLCJhcnJvd1kiLCJjYW5ub3RDZW50ZXJBcnJvdyIsImNvbnRlbnRaSW5kZXgiLCJzZXRDb250ZW50WkluZGV4IiwiekluZGV4IiwibWluV2lkdGgiLCJ0cmFuc2Zvcm1PcmlnaW4iLCJvbkFycm93Q2hhbmdlIiwic2hvdWxkSGlkZUFycm93IiwiYW5pbWF0aW9uIiwiJGNmMWFjNWQ5ZmUwZTgyMDYkdmFyJE9QUE9TSVRFX1NJREUiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c0IiwiX21pZGRsZXdhcmVEYXRhJGFycm93NSIsIl9taWRkbGV3YXJlRGF0YSRhcnJvdzYiLCJfbWlkZGxld2FyZURhdGEkYXJyb3c3IiwiX21pZGRsZXdhcmVEYXRhJGFycm93OCIsImlzQXJyb3dIaWRkZW4iLCJub0Fycm93QWxpZ24iLCJhcnJvd1hDZW50ZXIiLCJhcnJvd1lDZW50ZXIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsInNldEFuY2hvciIsIiRjZjFhYzVkOWZlMGU4MjA2JGV4cG9ydCRiNjg4MjUzOTU4YjhkZmU3IiwiJGNmMWFjNWQ5ZmUwZTgyMDYkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkY2YxYWM1ZDlmZTBlODIwNiRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsImNvbnRlbnRDb250ZXh0IiwiYmFzZVNpZGUiLCIka1k5M1YkUm9vdCIsIiRlYTFlZjU5NGNmNTcwZDgzJGV4cG9ydCQ0MzlkMjlhNGUxMTBhMTY0IiwiJGtWd253JGZvcndhcmRSZWYiLCIka1Z3bnckY3JlYXRlRWxlbWVudCIsIiRrVndudyRQcmltaXRpdmUiLCIka1Z3bnckYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJib3JkZXIiLCJjbGlwIiwid2hpdGVTcGFjZSIsIndvcmRXcmFwIiwiJGVhMWVmNTk0Y2Y1NzBkODMkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkY3JlYXRlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMWM1NDBhMjIyNGYwZDg2NSIsIiQ4d2VwSyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkOHdlcEskY3JlYXRlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkREVGQVVMVF9ERUxBWV9EVVJBVElPTiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUT09MVElQX09QRU4iLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVG9vbHRpcFByb3ZpZGVyQ29udGV4dFByb3ZpZGVyIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJHVzZVRvb2x0aXBQcm92aWRlckNvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVE9PTFRJUF9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZXh0UHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlVG9vbHRpcENvbnRleHQiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkVFJJR0dFUl9OQU1FIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDhjNjEwNzQ0ZWZjZjhhMWQiLCIkOHdlcEskZm9yd2FyZFJlZiIsIl9fc2NvcGVUb29sdGlwIiwicHJvdmlkZXJDb250ZXh0IiwicG9wcGVyU2NvcGUiLCIkOHdlcEskdXNlQ29tcG9zZWRSZWZzIiwiJDh3ZXBLJHVzZVJlZiIsIm9uVHJpZ2dlckNoYW5nZSIsImlzUG9pbnRlckRvd25SZWYiLCJoYXNQb2ludGVyTW92ZU9wZW5lZFJlZiIsImhhbmRsZVBvaW50ZXJVcCIsIiQ4d2VwSyR1c2VDYWxsYmFjayIsIiQ4d2VwSyR1c2VFZmZlY3QiLCIkOHdlcEskY3JlYXRlRWxlbWVudCIsIiQ4d2VwSyRBbmNob3IiLCIkOHdlcEskYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkOHdlcEskUHJpbWl0aXZlIiwic3RhdGVBdHRyaWJ1dGUiLCJvblBvaW50ZXJNb3ZlIiwiJDh3ZXBLJGNvbXBvc2VFdmVudEhhbmRsZXJzIiwiaXNQb2ludGVySW5UcmFuc2l0UmVmIiwib25UcmlnZ2VyRW50ZXIiLCJvblBvaW50ZXJMZWF2ZSIsIm9uVHJpZ2dlckxlYXZlIiwib25Qb2ludGVyRG93biIsIm9uT3BlbiIsIm9uQ2xvc2UiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUE9SVEFMX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkUG9ydGFsUHJvdmlkZXIiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkdXNlUG9ydGFsQ29udGV4dCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRDT05URU5UX05BTUUiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkZTkwMDNlMmJlMzdlYzA2MCIsIiQ4d2VwSyRQcmVzZW5jZSIsImRpc2FibGVIb3ZlcmFibGVDb250ZW50IiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFRvb2x0aXBDb250ZW50SW1wbCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRUb29sdGlwQ29udGVudEhvdmVyYWJsZSIsInBvaW50ZXJHcmFjZUFyZWEiLCJzZXRQb2ludGVyR3JhY2VBcmVhIiwiJDh3ZXBLJHVzZVN0YXRlIiwidHJpZ2dlciIsIm9uUG9pbnRlckluVHJhbnNpdENoYW5nZSIsImhhbmRsZVJlbW92ZUdyYWNlQXJlYSIsImhhbmRsZUNyZWF0ZUdyYWNlQXJlYSIsImhvdmVyVGFyZ2V0IiwiZXhpdFBvaW50IiwicGFkZGVkRXhpdFBvaW50cyIsImV4aXRTaWRlIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldFBhZGRlZEV4aXRQb2ludHMiLCJwb2ludCIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRFeGl0U2lkZUZyb21SZWN0IiwiZ3JhY2VBcmVhIiwibmV3UG9pbnRzIiwidXBwZXJIdWxsIiwicSIsInIiLCJwb3AiLCJsb3dlckh1bGwiLCJpMSIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRnZXRIdWxsUHJlc29ydGVkIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJGdldEh1bGwiLCIkYTA5M2M3ZTFlYzI1YTA1NyR2YXIkZ2V0UG9pbnRzRnJvbVJlY3QiLCJoYW5kbGVUcmlnZ2VyTGVhdmUiLCJoYW5kbGVDb250ZW50TGVhdmUiLCJoYW5kbGVUcmFja1BvaW50ZXJHcmFjZSIsInBvaW50ZXJQb3NpdGlvbiIsImhhc0VudGVyZWRUYXJnZXQiLCJpc1BvaW50ZXJPdXRzaWRlR3JhY2VBcmVhIiwicG9seWdvbiIsImluc2lkZSIsImoiLCJ4aSIsInlpIiwieGoiLCJ5aiIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciRpc1BvaW50SW5Qb2x5Z29uIiwiJGEwOTNjN2UxZWMyNWEwNTckdmFyJFZpc3VhbGx5SGlkZGVuQ29udGVudENvbnRleHRQcm92aWRlciIsIiRhMDkzYzdlMWVjMjVhMDU3JHZhciR1c2VWaXN1YWxseUhpZGRlbkNvbnRlbnRDb250ZXh0IiwiaXNJbnNpZGUiLCJhcmlhTGFiZWwiLCJjYXB0dXJlIiwiJDh3ZXBLJERpc21pc3NhYmxlTGF5ZXIiLCIkOHdlcEskQ29udGVudCIsIiQ4d2VwSyRTbG90dGFibGUiLCIkOHdlcEskUm9vdDEiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjg4MTQ5OWUzN2I3NWI5YSIsImRlbGF5RHVyYXRpb24iLCJza2lwRGVsYXlEdXJhdGlvbiIsImlzT3BlbkRlbGF5ZWQiLCJzZXRJc09wZW5EZWxheWVkIiwic2tpcERlbGF5VGltZXJSZWYiLCJza2lwRGVsYXlUaW1lciIsImluVHJhbnNpdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiZGlzYWJsZUhvdmVyYWJsZUNvbnRlbnRQcm9wIiwiZGVsYXlEdXJhdGlvblByb3AiLCJzZXRUcmlnZ2VyIiwiJDh3ZXBLJHVzZUlkIiwib3BlblRpbWVyUmVmIiwid2FzT3BlbkRlbGF5ZWRSZWYiLCJvcGVuMSIsIiQ4d2VwSyR1c2VDb250cm9sbGFibGVTdGF0ZSIsIiQ4d2VwSyR1c2VNZW1vIiwiaGFuZGxlT3BlbiIsImhhbmRsZUNsb3NlIiwiaGFuZGxlRGVsYXllZE9wZW4iLCIkOHdlcEskUm9vdCIsIiRhMDkzYzdlMWVjMjVhMDU3JGV4cG9ydCQ0MWZiOWYwNjE3MWM3NWY0IiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDYwMmVhYzE4NTgyNjQ4MmMiLCIkOHdlcEskUG9ydGFsIiwiJGEwOTNjN2UxZWMyNWEwNTckZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkYTA5M2M3ZTFlYzI1YTA1NyRleHBvcnQkMjFiMDdjOGYyNzRhZWJkNSIsIiQ4d2VwSyRBcnJvdyIsIlRvb2x0aXAiLCJpc1BvcnRhbCIsIlRvb2x0aXBQcmltaXRpdmUuQ29udGVudCIsIlRvb2x0aXBQcmltaXRpdmUuQXJyb3ciLCJUb29sdGlwUHJpbWl0aXZlLlByb3ZpZGVyIiwiVG9vbHRpcFByaW1pdGl2ZS5Sb290IiwiVG9vbHRpcFByaW1pdGl2ZS5UcmlnZ2VyIiwiVG9vbHRpcFByaW1pdGl2ZS5Qb3J0YWwiLCIkYWU2OTMzZTUzNTI0N2QzZCRleHBvcnQkN2QxNWI2NGNmNWEzYTRjNCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRPUEVOX0tFWVMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUSU9OX0tFWVMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU0VMRUNUX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQ29sbGVjdGlvbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZUNvbGxlY3Rpb25TY29wZSIsIiQwMWI5YyRjcmVhdGVDb2xsZWN0aW9uIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGNyZWF0ZVNlbGVjdENvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkMjg2NzI3YTc1ZGMwMzliZCIsIiQwMWI5YyRjcmVhdGVDb250ZXh0U2NvcGUiLCIkMDFiOWMkY3JlYXRlUG9wcGVyU2NvcGUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlUG9wcGVyU2NvcGUiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0Q29udGV4dCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3ROYXRpdmVPcHRpb25zUHJvdmlkZXIiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkdXNlU2VsZWN0TmF0aXZlT3B0aW9uc0NvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkM2FjMWU4OGExYzBiOWYxIiwiJDAxYjljJGZvcndhcmRSZWYiLCJfX3Njb3BlU2VsZWN0IiwiaXNEaXNhYmxlZCIsIiQwMWI5YyR1c2VDb21wb3NlZFJlZnMiLCJzZWFyY2hSZWYiLCJoYW5kbGVUeXBlYWhlYWRTZWFyY2giLCJyZXNldFR5cGVhaGVhZCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VUeXBlYWhlYWRTZWFyY2giLCJzZWFyY2giLCJlbmFibGVkSXRlbXMiLCJjdXJyZW50SXRlbSIsIm5leHRJdGVtIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJGZpbmROZXh0SXRlbSIsIiQwMWI5YyRjcmVhdGVFbGVtZW50IiwiJDAxYjljJEFuY2hvciIsIiQwMWI5YyRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQwMWI5YyRQcmltaXRpdmUiLCIkMDFiOWMkY29tcG9zZUV2ZW50SGFuZGxlcnMiLCJoYXNQb2ludGVyQ2FwdHVyZSIsInBvaW50ZXJJZCIsInJlbGVhc2VQb2ludGVyQ2FwdHVyZSIsInRyaWdnZXJQb2ludGVyRG93blBvc1JlZiIsInBhZ2VYIiwicGFnZVkiLCJpc1R5cGluZ0FoZWFkIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGUyODg3MzFmZDcxMjY0ZjAiLCJwbGFjZWhvbGRlciIsInZhbHVlUHJvcHMiLCJvblZhbHVlTm9kZUhhc0NoaWxkcmVuQ2hhbmdlIiwiaGFzQ2hpbGRyZW4iLCJvblZhbHVlTm9kZUNoYW5nZSIsIiQwMWI5YyR1c2VMYXlvdXRFZmZlY3QiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkOTliNDAwY2FiYjU4YzUxNSIsImljb25Qcm9wcyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRDT05URU5UX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYzk3M2E0YjNjYjg2YTAzZCIsImZyYWdtZW50Iiwic2V0RnJhZ21lbnQiLCIkMDFiOWMkdXNlU3RhdGUiLCJEb2N1bWVudEZyYWdtZW50IiwiZnJhZyIsIiQwMWI5YyRjcmVhdGVQb3J0YWwiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0Q29udGVudFByb3ZpZGVyIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJFNlbGVjdENvbnRlbnRJbXBsIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJENPTlRFTlRfTUFSR0lOIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdENvbnRlbnRDb250ZXh0Iiwidmlld3BvcnQiLCJzZXRWaWV3cG9ydCIsInNlbGVjdGVkSXRlbSIsInNldFNlbGVjdGVkSXRlbSIsInNlbGVjdGVkSXRlbVRleHQiLCJzZXRTZWxlY3RlZEl0ZW1UZXh0Iiwic2V0SXNQb3NpdGlvbmVkIiwiZmlyc3RWYWxpZEl0ZW1Gb3VuZFJlZiIsIiQwMWI5YyR1c2VSZWYiLCIkMDFiOWMkdXNlRWZmZWN0IiwiJDAxYjljJGhpZGVPdGhlcnMiLCIkMDFiOWMkdXNlRm9jdXNHdWFyZHMiLCJmb2N1c0ZpcnN0IiwiJDAxYjljJHVzZUNhbGxiYWNrIiwiZmlyc3RJdGVtIiwicmVzdEl0ZW1zIiwibGFzdEl0ZW0iLCJzY3JvbGxJbnRvVmlldyIsImJsb2NrIiwiZm9jdXNTZWxlY3RlZEl0ZW0iLCJwb2ludGVyTW92ZURlbHRhIiwiaGFuZGxlUG9pbnRlck1vdmUiLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8iLCJfdHJpZ2dlclBvaW50ZXJEb3duUG8yIiwiX3RyaWdnZXJQb2ludGVyRG93blBvMyIsIl90cmlnZ2VyUG9pbnRlckRvd25QbzQiLCJjbG9zZSIsIml0ZW1SZWZDYWxsYmFjayIsImlzRmlyc3RWYWxpZEl0ZW0iLCJoYW5kbGVJdGVtTGVhdmUiLCJpdGVtVGV4dFJlZkNhbGxiYWNrIiwiU2VsZWN0UG9zaXRpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0UG9wcGVyUG9zaXRpb24iLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0SXRlbUFsaWduZWRQb3NpdGlvbiIsInBvcHBlckNvbnRlbnRQcm9wcyIsIm9uVmlld3BvcnRDaGFuZ2UiLCJvbkl0ZW1MZWF2ZSIsIiQwMWI5YyRTbG90IiwiJDAxYjljJEZvY3VzU2NvcGUiLCJfY29udGV4dCR0cmlnZ2VyIiwiJDAxYjljJERpc21pc3NhYmxlTGF5ZXIiLCJvbkNvbnRleHRNZW51IiwiZmxleERpcmVjdGlvbiIsImlzTW9kaWZpZXJLZXkiLCJjdXJyZW50RWxlbWVudCIsInBvcHBlclByb3BzIiwiY29udGVudFdyYXBwZXIiLCJzZXRDb250ZW50V3JhcHBlciIsInNob3VsZEV4cGFuZE9uU2Nyb2xsUmVmIiwic2hvdWxkUmVwb3NpdGlvblJlZiIsInZhbHVlTm9kZSIsInRyaWdnZXJSZWN0IiwiY29udGVudFJlY3QiLCJ2YWx1ZU5vZGVSZWN0IiwiaXRlbVRleHRSZWN0IiwiaXRlbVRleHRPZmZzZXQiLCJsZWZ0RGVsdGEiLCJtaW5Db250ZW50V2lkdGgiLCJjb250ZW50V2lkdGgiLCJyaWdodEVkZ2UiLCJjbGFtcGVkTGVmdCIsIiQwMWI5YyRjbGFtcCIsInJpZ2h0RGVsdGEiLCJsZWZ0RWRnZSIsImNsYW1wZWRSaWdodCIsImlubmVySGVpZ2h0IiwiaXRlbXNIZWlnaHQiLCJjb250ZW50U3R5bGVzIiwiY29udGVudEJvcmRlclRvcFdpZHRoIiwiYm9yZGVyVG9wV2lkdGgiLCJjb250ZW50UGFkZGluZ1RvcCIsImNvbnRlbnRCb3JkZXJCb3R0b21XaWR0aCIsImJvcmRlckJvdHRvbVdpZHRoIiwiZnVsbENvbnRlbnRIZWlnaHQiLCJwYWRkaW5nQm90dG9tIiwibWluQ29udGVudEhlaWdodCIsInZpZXdwb3J0U3R5bGVzIiwidmlld3BvcnRQYWRkaW5nVG9wIiwidmlld3BvcnRQYWRkaW5nQm90dG9tIiwidG9wRWRnZVRvVHJpZ2dlck1pZGRsZSIsInRyaWdnZXJNaWRkbGVUb0JvdHRvbUVkZ2UiLCJzZWxlY3RlZEl0ZW1IYWxmSGVpZ2h0IiwiY29udGVudFRvcFRvSXRlbU1pZGRsZSIsIml0ZW1NaWRkbGVUb0NvbnRlbnRCb3R0b20iLCJpc0xhc3RJdGVtIiwidmlld3BvcnRPZmZzZXRCb3R0b20iLCJpc0ZpcnN0SXRlbSIsIm1pbkhlaWdodCIsImhhbmRsZVNjcm9sbEJ1dHRvbkNoYW5nZSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RWaWV3cG9ydFByb3ZpZGVyIiwib25TY3JvbGxCdXR0b25DaGFuZ2UiLCJib3hTaXppbmciLCIkMDFiOWMkQ29udGVudCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciR1c2VTZWxlY3RWaWV3cG9ydENvbnRleHQiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkVklFV1BPUlRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ5ZWQ2ZTdiNDAyNDhkMzZkIiwidmlld3BvcnRQcm9wcyIsInZpZXdwb3J0Q29udGV4dCIsInByZXZTY3JvbGxUb3BSZWYiLCIkMDFiOWMkRnJhZ21lbnQiLCJkYW5nZXJvdXNseVNldElubmVySFRNTCIsIl9faHRtbCIsImZsZXgiLCJvblNjcm9sbCIsInNjcm9sbGVkQnkiLCJjc3NNaW5IZWlnaHQiLCJjc3NIZWlnaHQiLCJwcmV2SGVpZ2h0IiwibmV4dEhlaWdodCIsImNsYW1wZWROZXh0SGVpZ2h0IiwiaGVpZ2h0RGlmZiIsImp1c3RpZnlDb250ZW50IiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJElURU1fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTZWxlY3RJdGVtQ29udGV4dFByb3ZpZGVyIiwiJGNjN2UwNWE0NTkwMGU3M2YkdmFyJHVzZVNlbGVjdEl0ZW1Db250ZXh0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDEzZWY0OGE5MzQyMzA4OTYiLCJ0ZXh0VmFsdWUiLCJ0ZXh0VmFsdWVQcm9wIiwic2V0VGV4dFZhbHVlIiwiaXNGb2N1c2VkIiwic2V0SXNGb2N1c2VkIiwiX2NvbnRlbnRDb250ZXh0JGl0ZW1SIiwidGV4dElkIiwiJDAxYjljJHVzZUlkIiwiaGFuZGxlU2VsZWN0Iiwib25JdGVtVGV4dENoYW5nZSIsInByZXZUZXh0VmFsdWUiLCJfbm9kZSR0ZXh0Q29udGVudCIsInRleHRDb250ZW50IiwidHJpbSIsIm9uUG9pbnRlclVwIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlIiwiX2NvbnRlbnRDb250ZXh0JG9uSXRlMiIsIl9jb250ZW50Q29udGV4dCRzZWFyYyIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRJVEVNX1RFWFRfTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQzNTcyZmIwZmI4MjFmZjQ5IiwiaXRlbVRleHRQcm9wcyIsIml0ZW1Db250ZXh0IiwibmF0aXZlT3B0aW9uc0NvbnRleHQiLCJpdGVtVGV4dE5vZGUiLCJzZXRJdGVtVGV4dE5vZGUiLCJfY29udGVudENvbnRleHQkaXRlbVQiLCJuYXRpdmVPcHRpb24iLCIkMDFiOWMkdXNlTWVtbyIsIm9uTmF0aXZlT3B0aW9uQWRkIiwib25OYXRpdmVPcHRpb25SZW1vdmUiLCJ2YWx1ZU5vZGVIYXNDaGlsZHJlbiIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfVVBfQlVUVE9OX05BTUUiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkZDgxMTc5Mjc2NThhZjZkNyIsImNhblNjcm9sbFVwMSIsInNldENhblNjcm9sbFVwIiwiY2FuU2Nyb2xsVXAiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkU2VsZWN0U2Nyb2xsQnV0dG9uSW1wbCIsIm9uQXV0b1Njcm9sbCIsIiRjYzdlMDVhNDU5MDBlNzNmJHZhciRTQ1JPTExfRE9XTl9CVVRUT05fTkFNRSIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRmZjk1MWU0NzZjMTIxODkiLCJjYW5TY3JvbGxEb3duMSIsInNldENhblNjcm9sbERvd24iLCJtYXhTY3JvbGwiLCJjYW5TY3JvbGxEb3duIiwiY2VpbCIsInNjcm9sbEluZGljYXRvclByb3BzIiwiYXV0b1Njcm9sbFRpbWVyUmVmIiwiY2xlYXJBdXRvU2Nyb2xsVGltZXIiLCJjbGVhckludGVydmFsIiwiX2FjdGl2ZUl0ZW0kcmVmJGN1cnJlIiwiYWN0aXZlSXRlbSIsImZsZXhTaHJpbmsiLCJzZXRJbnRlcnZhbCIsIl9jb250ZW50Q29udGV4dCRvbkl0ZTMiLCIkY2M3ZTA1YTQ1OTAwZTczZiR2YXIkQnViYmxlU2VsZWN0Iiwic2VsZWN0UHJvcHMiLCJwcmV2VmFsdWUiLCIkMDFiOWMkdXNlUHJldmlvdXMiLCJzZWxlY3RQcm90byIsIkhUTUxTZWxlY3RFbGVtZW50IiwiJDAxYjljJFZpc3VhbGx5SGlkZGVuIiwib25TZWFyY2hDaGFuZ2UiLCJoYW5kbGVTZWFyY2hDaGFuZ2UiLCIkMDFiOWMkdXNlQ2FsbGJhY2tSZWYiLCJ0aW1lclJlZiIsInVwZGF0ZVNlYXJjaCIsIm5vcm1hbGl6ZWRTZWFyY2giLCJjaGFyIiwiY3VycmVudEl0ZW1JbmRleCIsIndyYXBwZWRJdGVtcyIsInYiLCJzdGFydHNXaXRoIiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGJlOTJiNmY1ZjAzYzBmZTkiLCJhdXRvQ29tcGxldGUiLCJzZXRWYWx1ZU5vZGUiLCJzZXRWYWx1ZU5vZGVIYXNDaGlsZHJlbiIsIiQwMWI5YyR1c2VEaXJlY3Rpb24iLCIkMDFiOWMkdXNlQ29udHJvbGxhYmxlU3RhdGUiLCJuYXRpdmVPcHRpb25zU2V0Iiwic2V0TmF0aXZlT3B0aW9uc1NldCIsIm5hdGl2ZVNlbGVjdEtleSIsIm9wdGlvbiIsIiQwMWI5YyRSb290IiwicHJldiIsIm9wdGlvbnNTZXQiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNDFmYjlmMDYxNzFjNzVmNCIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCQ0YzhkMWE1N2E3NjFlZjk0IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JGYwNGE2MTI5OGE0N2E0MGYiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkN2M2ZTJjMDIxNTdiYjdkMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNWM2YzA4ZGMyZDNjYTciLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkNmQwODc3M2QyZTY2ZjhmMiIsIiRjYzdlMDVhNDU5MDBlNzNmJGV4cG9ydCRkNmU1YmY5YzQzZWE5MzE5IiwiJGNjN2UwNWE0NTkwMGU3M2YkZXhwb3J0JDJmNjBkM2VjOWFkNDY4ZjIiLCIkY2M3ZTA1YTQ1OTAwZTczZiRleHBvcnQkYmYxYWVkYzMwMzljOGQ2MyIsIlN2Z0tleWJvYXJkQXJyb3dEb3duIiwiU2VsZWN0IiwiaWNvbiIsIlNlbGVjdFByaW1pdGl2ZS5Sb290IiwiU2VsZWN0UHJpbWl0aXZlLlRyaWdnZXIiLCJTZWxlY3RQcmltaXRpdmUuVmFsdWUiLCJTZWxlY3RQcmltaXRpdmUuSWNvbiIsIkFycm93RG93bkljb24iLCJTZWxlY3RQcmltaXRpdmUuQ29udGVudCIsIlNlbGVjdFByaW1pdGl2ZS5WaWV3cG9ydCIsIlNlbGVjdFByaW1pdGl2ZS5TY3JvbGxVcEJ1dHRvbiIsIlNlbGVjdFByaW1pdGl2ZS5TY3JvbGxEb3duQnV0dG9uIiwiU2VsZWN0SXRlbSIsIlNlbGVjdFByaW1pdGl2ZS5JdGVtIiwiU2VsZWN0SXRlbVRleHQiLCJTZWxlY3RQcmltaXRpdmUuSXRlbVRleHQiLCIkYjczYTZjNjY4NWU3MjE4NCRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsIiQ3VjRKWiRmb3J3YXJkUmVmIiwiJDdWNEpaJGNyZWF0ZUVsZW1lbnQiLCIkN1Y0SlokUHJpbWl0aXZlIiwibGFiZWwiLCIkN1Y0SlokYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCJfcHJvcHMkb25Nb3VzZURvd24iLCJMYWJlbCIsImh0bWxGb3IiLCJSZWR1eExhYmVsLlJvb3QiLCJGb3JtR3JvdXAiLCJqdXN0aWZ5IiwiYWxpZ25JdGVtcyIsImZvcm1Hcm91cCIsImhvcml6b250YWwiLCJ2ZXJ0aWNhbCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQUk9HUkVTU19OQU1FIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJERFRkFVTFRfTUFYIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGNyZWF0ZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCQzODhlYjJkOGY2ZDMyNjFmIiwiJGswM3dJJGNyZWF0ZUNvbnRleHRTY29wZSIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRQcm9ncmVzc1Byb3ZpZGVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJHVzZVByb2dyZXNzQ29udGV4dCIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiMjVhMzA0ZWM3ZDc0NmJiIiwiJGswM3dJJGZvcndhcmRSZWYiLCJfX3Njb3BlUHJvZ3Jlc3MiLCJnZXRWYWx1ZUxhYmVsIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGRlZmF1bHRHZXRWYWx1ZUxhYmVsIiwicHJvZ3Jlc3NQcm9wcyIsIiQ2NzgyNGQ5ODI0NTIwOGEwJHZhciRpc1ZhbGlkTWF4TnVtYmVyIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGlzVmFsaWRWYWx1ZU51bWJlciIsInZhbHVlTGFiZWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkaXNOdW1iZXIiLCIkazAzd0kkY3JlYXRlRWxlbWVudCIsIiRrMDN3SSRQcmltaXRpdmUiLCIkazAzd0kkYmFiZWxydW50aW1laGVscGVyc2VzbWV4dGVuZHMiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0UHJvZ3Jlc3NTdGF0ZSIsInByb3BUeXBlcyIsImNvbXBvbmVudE5hbWUiLCJwcm9wVmFsdWUiLCJzdHJWYWwiLCIkNjc4MjRkOTgyNDUyMDhhMCR2YXIkZ2V0SW52YWxpZE1heEVycm9yIiwiJDY3ODI0ZDk4MjQ1MjA4YTAkdmFyJGdldEludmFsaWRWYWx1ZUVycm9yIiwibWF4VmFsdWUiLCJpc05hTiIsIiQ2NzgyNGQ5ODI0NTIwOGEwJGV4cG9ydCRiZTkyYjZmNWYwM2MwZmU5IiwiJDY3ODI0ZDk4MjQ1MjA4YTAkZXhwb3J0JGFkYjU4NDczN2Q3MTJiNzAiLCJfY29udGV4dCR2YWx1ZSIsImluZGljYXRvclByb3BzIiwiUHJvZ3Jlc3MiLCJwcm9ncmVzcyIsIlByb2dyZXNzUHJpbWl0aXZlLlJvb3QiLCJQcm9ncmVzc1ByaW1pdGl2ZS5JbmRpY2F0b3IiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkY3JlYXRlQWxlcnREaWFsb2dDb250ZXh0IiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGI4ODkxODgwNzUxYzJjNWIiLCIkNGs0RDAkY3JlYXRlQ29udGV4dFNjb3BlIiwiJDRrNEQwJGNyZWF0ZURpYWxvZ1Njb3BlIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJHVzZURpYWxvZ1Njb3BlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGE3MDdhNDg5NWNlMjMyNTYiLCIkNGs0RDAkZm9yd2FyZFJlZiIsIl9fc2NvcGVBbGVydERpYWxvZyIsImRpYWxvZ1Njb3BlIiwiJDRrNEQwJGNyZWF0ZUVsZW1lbnQiLCIkNGs0RDAkT3ZlcmxheSIsIiQ0azREMCRiYWJlbHJ1bnRpbWVoZWxwZXJzZXNtZXh0ZW5kcyIsIiQ5MDVmNGFlOTE4YWFiMWFhJHZhciRDT05URU5UX05BTUUiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkQWxlcnREaWFsb2dDb250ZW50UHJvdmlkZXIiLCIkOTA1ZjRhZTkxOGFhYjFhYSR2YXIkdXNlQWxlcnREaWFsb2dDb250ZW50Q29udGV4dCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ5NGU2YWY0NWYwYWY0ZWZkIiwiJDRrNEQwJHVzZUNvbXBvc2VkUmVmcyIsIiQ0azREMCR1c2VSZWYiLCJjYW5jZWxSZWYiLCIkNGs0RDAkV2FybmluZ1Byb3ZpZGVyIiwiJDkwNWY0YWU5MThhYWIxYWEkdmFyJFRJVExFX05BTUUiLCIkNGs0RDAkQ29udGVudCIsIiQ0azREMCRjb21wb3NlRXZlbnRIYW5kbGVycyIsIl9jYW5jZWxSZWYkY3VycmVudCIsIiQ0azREMCRTbG90dGFibGUiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkMjI1ZTBkYTYyZDMxNGI3IiwiJDRrNEQwJFRpdGxlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JGEyM2I1NWNkZTU1YWQ5YTUiLCIkNGs0RDAkRGVzY3JpcHRpb24iLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkYmU5MmI2ZjVmMDNjMGZlOSIsImFsZXJ0RGlhbG9nUHJvcHMiLCIkNGs0RDAkUm9vdCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCQ2MDJlYWMxODU4MjY0ODJjIiwiJDRrNEQwJFBvcnRhbCIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRjNmZkYjgzN2IwNzBiNGZmIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDdjNmUyYzAyMTU3YmI3ZDIiLCIkOTA1ZjRhZTkxOGFhYjFhYSRleHBvcnQkZTE5Y2Q1ZjkzNzZmOGNlZSIsImFjdGlvblByb3BzIiwiJDRrNEQwJENsb3NlIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDg0OGM5YjdlYWQwZGY5NjciLCJjYW5jZWxQcm9wcyIsIiQ5MDVmNGFlOTE4YWFiMWFhJGV4cG9ydCRmOTkyMzMyODFlZmQwOGEwIiwiJDkwNWY0YWU5MThhYWIxYWEkZXhwb3J0JDM5M2VkYzc5OGM0NzM3OWQiLCJBbGVydCIsImFjdGlvblRleHQiLCJvbkFjdGlvbkNsaWNrIiwiY2FuY2VsVGV4dCIsIm9uQ2FuY2VsQ2xpY2siLCJkZXNjcmlwdGlvbiIsIkFsZXJ0RGlhbG9nLlJvb3QiLCJBbGVydERpYWxvZy5Qb3J0YWwiLCJwb3J0YWwiLCJBbGVydERpYWxvZy5PdmVybGF5Iiwib3ZlcmxheSIsIkFsZXJ0RGlhbG9nLkNvbnRlbnQiLCJBbGVydERpYWxvZy5UaXRsZSIsIkFsZXJ0RGlhbG9nLkRlc2NyaXB0aW9uIiwiYnV0dG9ucyIsIkFsZXJ0RGlhbG9nLkNhbmNlbCIsIkFsZXJ0RGlhbG9nLkFjdGlvbiJdLCJtYXBwaW5ncyI6InlYQStCTyxJQUFJQSxFQUFXLFdBUWxCLE9BUEFBLEVBQVdDLE9BQU9DLFFBQVUsU0FBa0JDLEdBQzFDLElBQUssSUFBSUMsRUFBR0MsRUFBSSxFQUFHQyxFQUFJQyxVQUFVQyxPQUFRSCxFQUFJQyxFQUFHRCxJQUU1QyxJQUFLLElBQUlJLEtBRFRMLEVBQUlHLFVBQVVGLEdBQ09KLE9BQU9TLFVBQVVDLGVBQWVDLEtBQUtSLEVBQUdLLEtBQUlOLEVBQUVNLEdBQUtMLEVBQUVLLElBRTlFLE9BQU9OLENBQ1YsRUFDTUgsRUFBU2EsTUFBTUMsS0FBTVAsVUFDaEMsRUFFTyxTQUFT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QUMwQixjQUFBdzZELEdBQW1CLENBQUMvNkQsVUFBV0ksR0FBTzQ2RCxVQUN2Q244RCxFQUFDMEIsY0FBQTA2RCxHQUFtQixDQUFDajdELFVBQVdJLEdBQU9pcUIsU0FDckN4ckIsRUFBQTBCLGNBQUEsU0FBQSxDQUNFUCxVQUFXSSxHQUFPMG5ELE1BQ2xCMW9ELFFBQVMsV0FBTSxPQUFBeXNCLEdBQWEsRUFBYixnQkFDSCxnQkFDWmh0QixFQUFDMEIsY0FBQTJ1QixVQUVIcndCLEVBQUMwQixjQUFBMjZELEdBQWtCLENBQUFsN0QsVUFBV0ksR0FBT291QixPQUFRQSxHQUM1Q21zQyxHQUNDOTdELEVBQUMwQixjQUFBNDZELEdBQXVCLENBQUNuN0QsVUFBV0ksR0FBT3U2RCxhQUN4Q0EsR0FHTDk3RCxFQUFBMEIsY0FBQSxNQUFBLENBQUtQLFVBQVdJLEdBQU9nN0QsU0FDckJ2OEQsRUFBQTBCLGNBQUM4NkQsR0FBa0IsQ0FBQzF5RCxTQUFPLEdBQ3pCOUosRUFBQTBCLGNBQUMzQixFQUFNLENBQUNRLFFBQVNzN0QsRUFBZWw3RCxRQUFRLFdBQ3JDaTdELElBR0w1N0QsRUFBQTBCLGNBQUMrNkQsR0FBa0IsQ0FBQzN5RCxTQUFPLEdBQ3pCOUosRUFBQTBCLGNBQUMzQixFQUFPLENBQUFRLFFBQVNvN0QsRUFBZWg3RCxRQUFRLFVBQ3JDKzZELE9BUWpCIiwieF9nb29nbGVfaWdub3JlTGlzdCI6WzAsMSwzLDQsNSw2LDcsOCw5LDEwLDExLDEyLDEzLDE0LDE1LDE2LDE3LDE4LDE5LDIwLDIxLDIyLDIzLDI0LDI1LDI2LDI3LDI4LDI5LDMwLDMxLDMyLDMzLDM0LDM1LDM2LDM3LDM4LDM5LDQyLDQzLDQ0LDQ1LDQ3LDQ4LDQ5LDUxLDUyLDUzLDU0LDU1LDU2LDU3LDU5LDYwLDg1LDg4LDkwXX0=
|