revisit 0.0.10__py2.py3-none-any.whl → 0.0.11__py2.py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
revisit/static/widget.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
|
-
var Fv=Object.create;var gi=Object.defineProperty;var Pv=Object.getOwnPropertyDescriptor;var Iv=Object.getOwnPropertyNames;var ld=Object.getPrototypeOf,td=Object.prototype.hasOwnProperty;var rt=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports);var ud=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of Iv(t))!td.call(l,e)&&e!==u&&gi(l,e,{get:()=>t[e],enumerable:!(a=Pv(t,e))||a.enumerable});return l};var Qn=(l,t,u)=>(u=l!=null?Fv(ld(l)):{},ud(t||!l||!l.__esModule?gi(u,"default",{value:l,enumerable:!0}):u,l));var Ui=rt(M=>{"use strict";var Zn=Symbol.for("react.transitional.element"),ad=Symbol.for("react.portal"),ed=Symbol.for("react.fragment"),nd=Symbol.for("react.strict_mode"),cd=Symbol.for("react.profiler"),fd=Symbol.for("react.consumer"),id=Symbol.for("react.context"),sd=Symbol.for("react.forward_ref"),vd=Symbol.for("react.suspense"),dd=Symbol.for("react.memo"),zi=Symbol.for("react.lazy"),Si=Symbol.iterator;function yd(l){return l===null||typeof l!="object"?null:(l=Si&&l[Si]||l["@@iterator"],typeof l=="function"?l:null)}var Ai={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Oi=Object.assign,Mi={};function bu(l,t,u){this.props=l,this.context=t,this.refs=Mi,this.updater=u||Ai}bu.prototype.isReactComponent={};bu.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};bu.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function _i(){}_i.prototype=bu.prototype;function xn(l,t,u){this.props=l,this.context=t,this.refs=Mi,this.updater=u||Ai}var jn=xn.prototype=new _i;jn.constructor=xn;Oi(jn,bu.prototype);jn.isPureReactComponent=!0;var bi=Array.isArray,j={H:null,A:null,T:null,S:null},Di=Object.prototype.hasOwnProperty;function Vn(l,t,u,a,e,n){return u=n.ref,{$$typeof:Zn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function hd(l,t){return Vn(l.type,t,void 0,void 0,void 0,l.props)}function Ln(l){return typeof l=="object"&&l!==null&&l.$$typeof===Zn}function md(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var Ei=/\/+/g;function Cn(l,t){return typeof l=="object"&&l!==null&&l.key!=null?md(""+l.key):t.toString(36)}function ri(){}function od(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(ri,ri):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function Su(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Zn:case ad:c=!0;break;case zi:return c=l._init,Su(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+Cn(l,0):a,bi(e)?(u="",c!=null&&(u=c.replace(Ei,"$&/")+"/"),Su(e,t,u,"",function(s){return s})):e!=null&&(Ln(e)&&(e=hd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(Ei,"$&/")+"/")+c)),t.push(e)),1;c=0;var f=a===""?".":a+":";if(bi(l))for(var i=0;i<l.length;i++)a=l[i],n=f+Cn(a,i),c+=Su(a,t,u,n,e);else if(i=yd(l),typeof i=="function")for(l=i.call(l),i=0;!(a=l.next()).done;)a=a.value,n=f+Cn(a,i++),c+=Su(a,t,u,n,e);else if(n==="object"){if(typeof l.then=="function")return Su(od(l),t,u,a,e);throw t=String(l),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(l).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return c}function de(l,t,u){if(l==null)return l;var a=[],e=0;return Su(l,a,"","",function(n){return t.call(u,n,e++)}),a}function gd(l){if(l._status===-1){var t=l._result;t=t(),t.then(function(u){(l._status===0||l._status===-1)&&(l._status=1,l._result=u)},function(u){(l._status===0||l._status===-1)&&(l._status=2,l._result=u)}),l._status===-1&&(l._status=0,l._result=t)}if(l._status===1)return l._result.default;throw l._result}var Ti=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function Sd(){}M.Children={map:de,forEach:function(l,t,u){de(l,function(){t.apply(this,arguments)},u)},count:function(l){var t=0;return de(l,function(){t++}),t},toArray:function(l){return de(l,function(t){return t})||[]},only:function(l){if(!Ln(l))throw Error("React.Children.only expected to receive a single React element child.");return l}};M.Component=bu;M.Fragment=ed;M.Profiler=cd;M.PureComponent=xn;M.StrictMode=nd;M.Suspense=vd;M.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=j;M.act=function(){throw Error("act(...) is not supported in production builds of React.")};M.cache=function(l){return function(){return l.apply(null,arguments)}};M.cloneElement=function(l,t,u){if(l==null)throw Error("The argument must be a React element, but you passed "+l+".");var a=Oi({},l.props),e=l.key,n=void 0;if(t!=null)for(c in t.ref!==void 0&&(n=void 0),t.key!==void 0&&(e=""+t.key),t)!Di.call(t,c)||c==="key"||c==="__self"||c==="__source"||c==="ref"&&t.ref===void 0||(a[c]=t[c]);var c=arguments.length-2;if(c===1)a.children=u;else if(1<c){for(var f=Array(c),i=0;i<c;i++)f[i]=arguments[i+2];a.children=f}return Vn(l.type,e,void 0,void 0,n,a)};M.createContext=function(l){return l={$$typeof:id,_currentValue:l,_currentValue2:l,_threadCount:0,Provider:null,Consumer:null},l.Provider=l,l.Consumer={$$typeof:fd,_context:l},l};M.createElement=function(l,t,u){var a,e={},n=null;if(t!=null)for(a in t.key!==void 0&&(n=""+t.key),t)Di.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(e[a]=t[a]);var c=arguments.length-2;if(c===1)e.children=u;else if(1<c){for(var f=Array(c),i=0;i<c;i++)f[i]=arguments[i+2];e.children=f}if(l&&l.defaultProps)for(a in c=l.defaultProps,c)e[a]===void 0&&(e[a]=c[a]);return Vn(l,n,void 0,void 0,null,e)};M.createRef=function(){return{current:null}};M.forwardRef=function(l){return{$$typeof:sd,render:l}};M.isValidElement=Ln;M.lazy=function(l){return{$$typeof:zi,_payload:{_status:-1,_result:l},_init:gd}};M.memo=function(l,t){return{$$typeof:dd,type:l,compare:t===void 0?null:t}};M.startTransition=function(l){var t=j.T,u={};j.T=u;try{var a=l(),e=j.S;e!==null&&e(u,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(Sd,Ti)}catch(n){Ti(n)}finally{j.T=t}};M.unstable_useCacheRefresh=function(){return j.H.useCacheRefresh()};M.use=function(l){return j.H.use(l)};M.useActionState=function(l,t,u){return j.H.useActionState(l,t,u)};M.useCallback=function(l,t){return j.H.useCallback(l,t)};M.useContext=function(l){return j.H.useContext(l)};M.useDebugValue=function(){};M.useDeferredValue=function(l,t){return j.H.useDeferredValue(l,t)};M.useEffect=function(l,t){return j.H.useEffect(l,t)};M.useId=function(){return j.H.useId()};M.useImperativeHandle=function(l,t,u){return j.H.useImperativeHandle(l,t,u)};M.useInsertionEffect=function(l,t){return j.H.useInsertionEffect(l,t)};M.useLayoutEffect=function(l,t){return j.H.useLayoutEffect(l,t)};M.useMemo=function(l,t){return j.H.useMemo(l,t)};M.useOptimistic=function(l,t){return j.H.useOptimistic(l,t)};M.useReducer=function(l,t,u){return j.H.useReducer(l,t,u)};M.useRef=function(l){return j.H.useRef(l)};M.useState=function(l){return j.H.useState(l)};M.useSyncExternalStore=function(l,t,u){return j.H.useSyncExternalStore(l,t,u)};M.useTransition=function(){return j.H.useTransition()};M.version="19.0.0"});var na=rt((tm,Ri)=>{"use strict";Ri.exports=Ui()});var Ci=rt(B=>{"use strict";function Wn(l,t){var u=l.length;l.push(t);l:for(;0<u;){var a=u-1>>>1,e=l[a];if(0<ye(e,t))l[a]=t,l[u]=e,u=a;else break l}}function xl(l){return l.length===0?null:l[0]}function me(l){if(l.length===0)return null;var t=l[0],u=l.pop();if(u!==t){l[0]=u;l:for(var a=0,e=l.length,n=e>>>1;a<n;){var c=2*(a+1)-1,f=l[c],i=c+1,s=l[i];if(0>ye(f,u))i<e&&0>ye(s,f)?(l[a]=s,l[i]=u,a=i):(l[a]=f,l[c]=u,a=c);else if(i<e&&0>ye(s,u))l[a]=s,l[i]=u,a=i;else break l}}return t}function ye(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}B.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Hi=performance,B.unstable_now=function(){return Hi.now()}):(Kn=Date,Ni=Kn.now(),B.unstable_now=function(){return Kn.now()-Ni});var Hi,Kn,Ni,Jl=[],Tt=[],bd=1,Ul=null,vl=3,oe=!1,wt=!1,fa=!1,Yi=typeof setTimeout=="function"?setTimeout:null,Bi=typeof clearTimeout=="function"?clearTimeout:null,qi=typeof setImmediate<"u"?setImmediate:null;function he(l){for(var t=xl(Tt);t!==null;){if(t.callback===null)me(Tt);else if(t.startTime<=l)me(Tt),t.sortIndex=t.expirationTime,Wn(Jl,t);else break;t=xl(Tt)}}function $n(l){if(fa=!1,he(l),!wt)if(xl(Jl)!==null)wt=!0,kn();else{var t=xl(Tt);t!==null&&Fn($n,t.startTime-l)}}var ge=!1,ia=-1,Gi=5,Xi=-1;function Qi(){return!(B.unstable_now()-Xi<Gi)}function Jn(){if(ge){var l=B.unstable_now();Xi=l;var t=!0;try{l:{wt=!1,fa&&(fa=!1,Bi(ia),ia=-1),oe=!0;var u=vl;try{t:{for(he(l),Ul=xl(Jl);Ul!==null&&!(Ul.expirationTime>l&&Qi());){var a=Ul.callback;if(typeof a=="function"){Ul.callback=null,vl=Ul.priorityLevel;var e=a(Ul.expirationTime<=l);if(l=B.unstable_now(),typeof e=="function"){Ul.callback=e,he(l),t=!0;break t}Ul===xl(Jl)&&me(Jl),he(l)}else me(Jl);Ul=xl(Jl)}if(Ul!==null)t=!0;else{var n=xl(Tt);n!==null&&Fn($n,n.startTime-l),t=!1}}break l}finally{Ul=null,vl=u,oe=!1}t=void 0}}finally{t?ca():ge=!1}}}var ca;typeof qi=="function"?ca=function(){qi(Jn)}:typeof MessageChannel<"u"?(wn=new MessageChannel,pi=wn.port2,wn.port1.onmessage=Jn,ca=function(){pi.postMessage(null)}):ca=function(){Yi(Jn,0)};var wn,pi;function kn(){ge||(ge=!0,ca())}function Fn(l,t){ia=Yi(function(){l(B.unstable_now())},t)}B.unstable_IdlePriority=5;B.unstable_ImmediatePriority=1;B.unstable_LowPriority=4;B.unstable_NormalPriority=3;B.unstable_Profiling=null;B.unstable_UserBlockingPriority=2;B.unstable_cancelCallback=function(l){l.callback=null};B.unstable_continueExecution=function(){wt||oe||(wt=!0,kn())};B.unstable_forceFrameRate=function(l){0>l||125<l?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Gi=0<l?Math.floor(1e3/l):5};B.unstable_getCurrentPriorityLevel=function(){return vl};B.unstable_getFirstCallbackNode=function(){return xl(Jl)};B.unstable_next=function(l){switch(vl){case 1:case 2:case 3:var t=3;break;default:t=vl}var u=vl;vl=t;try{return l()}finally{vl=u}};B.unstable_pauseExecution=function(){};B.unstable_requestPaint=function(){};B.unstable_runWithPriority=function(l,t){switch(l){case 1:case 2:case 3:case 4:case 5:break;default:l=3}var u=vl;vl=l;try{return t()}finally{vl=u}};B.unstable_scheduleCallback=function(l,t,u){var a=B.unstable_now();switch(typeof u=="object"&&u!==null?(u=u.delay,u=typeof u=="number"&&0<u?a+u:a):u=a,l){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1e4;break;default:e=5e3}return e=u+e,l={id:bd++,callback:t,priorityLevel:l,startTime:u,expirationTime:e,sortIndex:-1},u>a?(l.sortIndex=u,Wn(Tt,l),xl(Jl)===null&&l===xl(Tt)&&(fa?(Bi(ia),ia=-1):fa=!0,Fn($n,u-a))):(l.sortIndex=e,Wn(Jl,l),wt||oe||(wt=!0,kn())),l};B.unstable_shouldYield=Qi;B.unstable_wrapCallback=function(l){var t=vl;return function(){var u=vl;vl=t;try{return l.apply(this,arguments)}finally{vl=u}}}});var xi=rt((am,Zi)=>{"use strict";Zi.exports=Ci()});var Vi=rt(ml=>{"use strict";var Ed=na();function ji(l){var t="https://react.dev/errors/"+l;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var u=2;u<arguments.length;u++)t+="&args[]="+encodeURIComponent(arguments[u])}return"Minified React error #"+l+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function zt(){}var hl={d:{f:zt,r:function(){throw Error(ji(522))},D:zt,C:zt,L:zt,m:zt,X:zt,S:zt,M:zt},p:0,findDOMNode:null},rd=Symbol.for("react.portal");function Td(l,t,u){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:rd,key:a==null?null:""+a,children:l,containerInfo:t,implementation:u}}var sa=Ed.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Se(l,t){if(l==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}ml.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=hl;ml.createPortal=function(l,t){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(ji(299));return Td(l,t,null,u)};ml.flushSync=function(l){var t=sa.T,u=hl.p;try{if(sa.T=null,hl.p=2,l)return l()}finally{sa.T=t,hl.p=u,hl.d.f()}};ml.preconnect=function(l,t){typeof l=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,hl.d.C(l,t))};ml.prefetchDNS=function(l){typeof l=="string"&&hl.d.D(l)};ml.preinit=function(l,t){if(typeof l=="string"&&t&&typeof t.as=="string"){var u=t.as,a=Se(u,t.crossOrigin),e=typeof t.integrity=="string"?t.integrity:void 0,n=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;u==="style"?hl.d.S(l,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:e,fetchPriority:n}):u==="script"&&hl.d.X(l,{crossOrigin:a,integrity:e,fetchPriority:n,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};ml.preinitModule=function(l,t){if(typeof l=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var u=Se(t.as,t.crossOrigin);hl.d.M(l,{crossOrigin:u,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&hl.d.M(l)};ml.preload=function(l,t){if(typeof l=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var u=t.as,a=Se(u,t.crossOrigin);hl.d.L(l,u,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};ml.preloadModule=function(l,t){if(typeof l=="string")if(t){var u=Se(t.as,t.crossOrigin);hl.d.m(l,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:u,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else hl.d.m(l)};ml.requestFormReset=function(l){hl.d.r(l)};ml.unstable_batchedUpdates=function(l,t){return l(t)};ml.useFormState=function(l,t,u){return sa.H.useFormState(l,t,u)};ml.useFormStatus=function(){return sa.H.useHostTransitionStatus()};ml.version="19.0.0"});var Ji=rt((nm,Ki)=>{"use strict";function Li(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Li)}catch(l){console.error(l)}}Li(),Ki.exports=Vi()});var xv=rt(Xn=>{"use strict";var tl=xi(),d1=na(),zd=Ji();function S(l){var t="https://react.dev/errors/"+l;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var u=2;u<arguments.length;u++)t+="&args[]="+encodeURIComponent(arguments[u])}return"Minified React error #"+l+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function y1(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}var Ad=Symbol.for("react.element"),be=Symbol.for("react.transitional.element"),ba=Symbol.for("react.portal"),Mu=Symbol.for("react.fragment"),h1=Symbol.for("react.strict_mode"),Rc=Symbol.for("react.profiler"),Od=Symbol.for("react.provider"),m1=Symbol.for("react.consumer"),it=Symbol.for("react.context"),Af=Symbol.for("react.forward_ref"),Hc=Symbol.for("react.suspense"),Nc=Symbol.for("react.suspense_list"),Of=Symbol.for("react.memo"),Mt=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");var o1=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var Md=Symbol.for("react.memo_cache_sentinel"),wi=Symbol.iterator;function va(l){return l===null||typeof l!="object"?null:(l=wi&&l[wi]||l["@@iterator"],typeof l=="function"?l:null)}var _d=Symbol.for("react.client.reference");function qc(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===_d?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case Mu:return"Fragment";case ba:return"Portal";case Rc:return"Profiler";case h1:return"StrictMode";case Hc:return"Suspense";case Nc:return"SuspenseList"}if(typeof l=="object")switch(l.$$typeof){case it:return(l.displayName||"Context")+".Provider";case m1:return(l._context.displayName||"Context")+".Consumer";case Af:var t=l.render;return l=l.displayName,l||(l=t.displayName||t.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case Of:return t=l.displayName||null,t!==null?t:qc(l.type)||"Memo";case Mt:t=l._payload,l=l._init;try{return qc(l(t))}catch{}}return null}var O=d1.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=Object.assign,Pn,Wi;function Ea(l){if(Pn===void 0)try{throw Error()}catch(u){var t=u.stack.trim().match(/\n( *(at )?)/);Pn=t&&t[1]||"",Wi=-1<u.stack.indexOf(`
|
1
|
+
var $v=Object.create;var gi=Object.defineProperty;var kv=Object.getOwnPropertyDescriptor;var Fv=Object.getOwnPropertyNames;var Pv=Object.getPrototypeOf,Iv=Object.prototype.hasOwnProperty;var rt=(l,t)=>()=>(t||l((t={exports:{}}).exports,t),t.exports);var ld=(l,t,u,a)=>{if(t&&typeof t=="object"||typeof t=="function")for(let e of Fv(t))!Iv.call(l,e)&&e!==u&&gi(l,e,{get:()=>t[e],enumerable:!(a=kv(t,e))||a.enumerable});return l};var Qn=(l,t,u)=>(u=l!=null?$v(Pv(l)):{},ld(t||!l||!l.__esModule?gi(u,"default",{value:l,enumerable:!0}):u,l));var Ui=rt(M=>{"use strict";var Zn=Symbol.for("react.transitional.element"),td=Symbol.for("react.portal"),ud=Symbol.for("react.fragment"),ad=Symbol.for("react.strict_mode"),ed=Symbol.for("react.profiler"),nd=Symbol.for("react.consumer"),cd=Symbol.for("react.context"),fd=Symbol.for("react.forward_ref"),id=Symbol.for("react.suspense"),sd=Symbol.for("react.memo"),zi=Symbol.for("react.lazy"),Si=Symbol.iterator;function vd(l){return l===null||typeof l!="object"?null:(l=Si&&l[Si]||l["@@iterator"],typeof l=="function"?l:null)}var Ai={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},Oi=Object.assign,Mi={};function bu(l,t,u){this.props=l,this.context=t,this.refs=Mi,this.updater=u||Ai}bu.prototype.isReactComponent={};bu.prototype.setState=function(l,t){if(typeof l!="object"&&typeof l!="function"&&l!=null)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,l,t,"setState")};bu.prototype.forceUpdate=function(l){this.updater.enqueueForceUpdate(this,l,"forceUpdate")};function _i(){}_i.prototype=bu.prototype;function xn(l,t,u){this.props=l,this.context=t,this.refs=Mi,this.updater=u||Ai}var jn=xn.prototype=new _i;jn.constructor=xn;Oi(jn,bu.prototype);jn.isPureReactComponent=!0;var bi=Array.isArray,j={H:null,A:null,T:null,S:null},Di=Object.prototype.hasOwnProperty;function Vn(l,t,u,a,e,n){return u=n.ref,{$$typeof:Zn,type:l,key:t,ref:u!==void 0?u:null,props:n}}function dd(l,t){return Vn(l.type,t,void 0,void 0,void 0,l.props)}function Ln(l){return typeof l=="object"&&l!==null&&l.$$typeof===Zn}function yd(l){var t={"=":"=0",":":"=2"};return"$"+l.replace(/[=:]/g,function(u){return t[u]})}var Ei=/\/+/g;function Cn(l,t){return typeof l=="object"&&l!==null&&l.key!=null?yd(""+l.key):t.toString(36)}function ri(){}function hd(l){switch(l.status){case"fulfilled":return l.value;case"rejected":throw l.reason;default:switch(typeof l.status=="string"?l.then(ri,ri):(l.status="pending",l.then(function(t){l.status==="pending"&&(l.status="fulfilled",l.value=t)},function(t){l.status==="pending"&&(l.status="rejected",l.reason=t)})),l.status){case"fulfilled":return l.value;case"rejected":throw l.reason}}throw l}function Su(l,t,u,a,e){var n=typeof l;(n==="undefined"||n==="boolean")&&(l=null);var c=!1;if(l===null)c=!0;else switch(n){case"bigint":case"string":case"number":c=!0;break;case"object":switch(l.$$typeof){case Zn:case td:c=!0;break;case zi:return c=l._init,Su(c(l._payload),t,u,a,e)}}if(c)return e=e(l),c=a===""?"."+Cn(l,0):a,bi(e)?(u="",c!=null&&(u=c.replace(Ei,"$&/")+"/"),Su(e,t,u,"",function(s){return s})):e!=null&&(Ln(e)&&(e=dd(e,u+(e.key==null||l&&l.key===e.key?"":(""+e.key).replace(Ei,"$&/")+"/")+c)),t.push(e)),1;c=0;var f=a===""?".":a+":";if(bi(l))for(var i=0;i<l.length;i++)a=l[i],n=f+Cn(a,i),c+=Su(a,t,u,n,e);else if(i=vd(l),typeof i=="function")for(l=i.call(l),i=0;!(a=l.next()).done;)a=a.value,n=f+Cn(a,i++),c+=Su(a,t,u,n,e);else if(n==="object"){if(typeof l.then=="function")return Su(hd(l),t,u,a,e);throw t=String(l),Error("Objects are not valid as a React child (found: "+(t==="[object Object]"?"object with keys {"+Object.keys(l).join(", ")+"}":t)+"). If you meant to render a collection of children, use an array instead.")}return c}function de(l,t,u){if(l==null)return l;var a=[],e=0;return Su(l,a,"","",function(n){return t.call(u,n,e++)}),a}function md(l){if(l._status===-1){var t=l._result;t=t(),t.then(function(u){(l._status===0||l._status===-1)&&(l._status=1,l._result=u)},function(u){(l._status===0||l._status===-1)&&(l._status=2,l._result=u)}),l._status===-1&&(l._status=0,l._result=t)}if(l._status===1)return l._result.default;throw l._result}var Ti=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function od(){}M.Children={map:de,forEach:function(l,t,u){de(l,function(){t.apply(this,arguments)},u)},count:function(l){var t=0;return de(l,function(){t++}),t},toArray:function(l){return de(l,function(t){return t})||[]},only:function(l){if(!Ln(l))throw Error("React.Children.only expected to receive a single React element child.");return l}};M.Component=bu;M.Fragment=ud;M.Profiler=ed;M.PureComponent=xn;M.StrictMode=ad;M.Suspense=id;M.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=j;M.act=function(){throw Error("act(...) is not supported in production builds of React.")};M.cache=function(l){return function(){return l.apply(null,arguments)}};M.cloneElement=function(l,t,u){if(l==null)throw Error("The argument must be a React element, but you passed "+l+".");var a=Oi({},l.props),e=l.key,n=void 0;if(t!=null)for(c in t.ref!==void 0&&(n=void 0),t.key!==void 0&&(e=""+t.key),t)!Di.call(t,c)||c==="key"||c==="__self"||c==="__source"||c==="ref"&&t.ref===void 0||(a[c]=t[c]);var c=arguments.length-2;if(c===1)a.children=u;else if(1<c){for(var f=Array(c),i=0;i<c;i++)f[i]=arguments[i+2];a.children=f}return Vn(l.type,e,void 0,void 0,n,a)};M.createContext=function(l){return l={$$typeof:cd,_currentValue:l,_currentValue2:l,_threadCount:0,Provider:null,Consumer:null},l.Provider=l,l.Consumer={$$typeof:nd,_context:l},l};M.createElement=function(l,t,u){var a,e={},n=null;if(t!=null)for(a in t.key!==void 0&&(n=""+t.key),t)Di.call(t,a)&&a!=="key"&&a!=="__self"&&a!=="__source"&&(e[a]=t[a]);var c=arguments.length-2;if(c===1)e.children=u;else if(1<c){for(var f=Array(c),i=0;i<c;i++)f[i]=arguments[i+2];e.children=f}if(l&&l.defaultProps)for(a in c=l.defaultProps,c)e[a]===void 0&&(e[a]=c[a]);return Vn(l,n,void 0,void 0,null,e)};M.createRef=function(){return{current:null}};M.forwardRef=function(l){return{$$typeof:fd,render:l}};M.isValidElement=Ln;M.lazy=function(l){return{$$typeof:zi,_payload:{_status:-1,_result:l},_init:md}};M.memo=function(l,t){return{$$typeof:sd,type:l,compare:t===void 0?null:t}};M.startTransition=function(l){var t=j.T,u={};j.T=u;try{var a=l(),e=j.S;e!==null&&e(u,a),typeof a=="object"&&a!==null&&typeof a.then=="function"&&a.then(od,Ti)}catch(n){Ti(n)}finally{j.T=t}};M.unstable_useCacheRefresh=function(){return j.H.useCacheRefresh()};M.use=function(l){return j.H.use(l)};M.useActionState=function(l,t,u){return j.H.useActionState(l,t,u)};M.useCallback=function(l,t){return j.H.useCallback(l,t)};M.useContext=function(l){return j.H.useContext(l)};M.useDebugValue=function(){};M.useDeferredValue=function(l,t){return j.H.useDeferredValue(l,t)};M.useEffect=function(l,t){return j.H.useEffect(l,t)};M.useId=function(){return j.H.useId()};M.useImperativeHandle=function(l,t,u){return j.H.useImperativeHandle(l,t,u)};M.useInsertionEffect=function(l,t){return j.H.useInsertionEffect(l,t)};M.useLayoutEffect=function(l,t){return j.H.useLayoutEffect(l,t)};M.useMemo=function(l,t){return j.H.useMemo(l,t)};M.useOptimistic=function(l,t){return j.H.useOptimistic(l,t)};M.useReducer=function(l,t,u){return j.H.useReducer(l,t,u)};M.useRef=function(l){return j.H.useRef(l)};M.useState=function(l){return j.H.useState(l)};M.useSyncExternalStore=function(l,t,u){return j.H.useSyncExternalStore(l,t,u)};M.useTransition=function(){return j.H.useTransition()};M.version="19.0.0"});var na=rt((Fh,Ri)=>{"use strict";Ri.exports=Ui()});var Ci=rt(B=>{"use strict";function Wn(l,t){var u=l.length;l.push(t);l:for(;0<u;){var a=u-1>>>1,e=l[a];if(0<ye(e,t))l[a]=t,l[u]=e,u=a;else break l}}function xl(l){return l.length===0?null:l[0]}function me(l){if(l.length===0)return null;var t=l[0],u=l.pop();if(u!==t){l[0]=u;l:for(var a=0,e=l.length,n=e>>>1;a<n;){var c=2*(a+1)-1,f=l[c],i=c+1,s=l[i];if(0>ye(f,u))i<e&&0>ye(s,f)?(l[a]=s,l[i]=u,a=i):(l[a]=f,l[c]=u,a=c);else if(i<e&&0>ye(s,u))l[a]=s,l[i]=u,a=i;else break l}}return t}function ye(l,t){var u=l.sortIndex-t.sortIndex;return u!==0?u:l.id-t.id}B.unstable_now=void 0;typeof performance=="object"&&typeof performance.now=="function"?(Hi=performance,B.unstable_now=function(){return Hi.now()}):(Kn=Date,Ni=Kn.now(),B.unstable_now=function(){return Kn.now()-Ni});var Hi,Kn,Ni,Jl=[],Tt=[],gd=1,Ul=null,sl=3,oe=!1,wt=!1,fa=!1,Yi=typeof setTimeout=="function"?setTimeout:null,Bi=typeof clearTimeout=="function"?clearTimeout:null,pi=typeof setImmediate<"u"?setImmediate:null;function he(l){for(var t=xl(Tt);t!==null;){if(t.callback===null)me(Tt);else if(t.startTime<=l)me(Tt),t.sortIndex=t.expirationTime,Wn(Jl,t);else break;t=xl(Tt)}}function $n(l){if(fa=!1,he(l),!wt)if(xl(Jl)!==null)wt=!0,kn();else{var t=xl(Tt);t!==null&&Fn($n,t.startTime-l)}}var ge=!1,ia=-1,Gi=5,Xi=-1;function Qi(){return!(B.unstable_now()-Xi<Gi)}function Jn(){if(ge){var l=B.unstable_now();Xi=l;var t=!0;try{l:{wt=!1,fa&&(fa=!1,Bi(ia),ia=-1),oe=!0;var u=sl;try{t:{for(he(l),Ul=xl(Jl);Ul!==null&&!(Ul.expirationTime>l&&Qi());){var a=Ul.callback;if(typeof a=="function"){Ul.callback=null,sl=Ul.priorityLevel;var e=a(Ul.expirationTime<=l);if(l=B.unstable_now(),typeof e=="function"){Ul.callback=e,he(l),t=!0;break t}Ul===xl(Jl)&&me(Jl),he(l)}else me(Jl);Ul=xl(Jl)}if(Ul!==null)t=!0;else{var n=xl(Tt);n!==null&&Fn($n,n.startTime-l),t=!1}}break l}finally{Ul=null,sl=u,oe=!1}t=void 0}}finally{t?ca():ge=!1}}}var ca;typeof pi=="function"?ca=function(){pi(Jn)}:typeof MessageChannel<"u"?(wn=new MessageChannel,qi=wn.port2,wn.port1.onmessage=Jn,ca=function(){qi.postMessage(null)}):ca=function(){Yi(Jn,0)};var wn,qi;function kn(){ge||(ge=!0,ca())}function Fn(l,t){ia=Yi(function(){l(B.unstable_now())},t)}B.unstable_IdlePriority=5;B.unstable_ImmediatePriority=1;B.unstable_LowPriority=4;B.unstable_NormalPriority=3;B.unstable_Profiling=null;B.unstable_UserBlockingPriority=2;B.unstable_cancelCallback=function(l){l.callback=null};B.unstable_continueExecution=function(){wt||oe||(wt=!0,kn())};B.unstable_forceFrameRate=function(l){0>l||125<l?console.error("forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported"):Gi=0<l?Math.floor(1e3/l):5};B.unstable_getCurrentPriorityLevel=function(){return sl};B.unstable_getFirstCallbackNode=function(){return xl(Jl)};B.unstable_next=function(l){switch(sl){case 1:case 2:case 3:var t=3;break;default:t=sl}var u=sl;sl=t;try{return l()}finally{sl=u}};B.unstable_pauseExecution=function(){};B.unstable_requestPaint=function(){};B.unstable_runWithPriority=function(l,t){switch(l){case 1:case 2:case 3:case 4:case 5:break;default:l=3}var u=sl;sl=l;try{return t()}finally{sl=u}};B.unstable_scheduleCallback=function(l,t,u){var a=B.unstable_now();switch(typeof u=="object"&&u!==null?(u=u.delay,u=typeof u=="number"&&0<u?a+u:a):u=a,l){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1e4;break;default:e=5e3}return e=u+e,l={id:gd++,callback:t,priorityLevel:l,startTime:u,expirationTime:e,sortIndex:-1},u>a?(l.sortIndex=u,Wn(Tt,l),xl(Jl)===null&&l===xl(Tt)&&(fa?(Bi(ia),ia=-1):fa=!0,Fn($n,u-a))):(l.sortIndex=e,Wn(Jl,l),wt||oe||(wt=!0,kn())),l};B.unstable_shouldYield=Qi;B.unstable_wrapCallback=function(l){var t=sl;return function(){var u=sl;sl=t;try{return l.apply(this,arguments)}finally{sl=u}}}});var xi=rt((Ih,Zi)=>{"use strict";Zi.exports=Ci()});var Vi=rt(ml=>{"use strict";var Sd=na();function ji(l){var t="https://react.dev/errors/"+l;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var u=2;u<arguments.length;u++)t+="&args[]="+encodeURIComponent(arguments[u])}return"Minified React error #"+l+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function zt(){}var hl={d:{f:zt,r:function(){throw Error(ji(522))},D:zt,C:zt,L:zt,m:zt,X:zt,S:zt,M:zt},p:0,findDOMNode:null},bd=Symbol.for("react.portal");function Ed(l,t,u){var a=3<arguments.length&&arguments[3]!==void 0?arguments[3]:null;return{$$typeof:bd,key:a==null?null:""+a,children:l,containerInfo:t,implementation:u}}var sa=Sd.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE;function Se(l,t){if(l==="font")return"";if(typeof t=="string")return t==="use-credentials"?t:""}ml.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=hl;ml.createPortal=function(l,t){var u=2<arguments.length&&arguments[2]!==void 0?arguments[2]:null;if(!t||t.nodeType!==1&&t.nodeType!==9&&t.nodeType!==11)throw Error(ji(299));return Ed(l,t,null,u)};ml.flushSync=function(l){var t=sa.T,u=hl.p;try{if(sa.T=null,hl.p=2,l)return l()}finally{sa.T=t,hl.p=u,hl.d.f()}};ml.preconnect=function(l,t){typeof l=="string"&&(t?(t=t.crossOrigin,t=typeof t=="string"?t==="use-credentials"?t:"":void 0):t=null,hl.d.C(l,t))};ml.prefetchDNS=function(l){typeof l=="string"&&hl.d.D(l)};ml.preinit=function(l,t){if(typeof l=="string"&&t&&typeof t.as=="string"){var u=t.as,a=Se(u,t.crossOrigin),e=typeof t.integrity=="string"?t.integrity:void 0,n=typeof t.fetchPriority=="string"?t.fetchPriority:void 0;u==="style"?hl.d.S(l,typeof t.precedence=="string"?t.precedence:void 0,{crossOrigin:a,integrity:e,fetchPriority:n}):u==="script"&&hl.d.X(l,{crossOrigin:a,integrity:e,fetchPriority:n,nonce:typeof t.nonce=="string"?t.nonce:void 0})}};ml.preinitModule=function(l,t){if(typeof l=="string")if(typeof t=="object"&&t!==null){if(t.as==null||t.as==="script"){var u=Se(t.as,t.crossOrigin);hl.d.M(l,{crossOrigin:u,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0})}}else t==null&&hl.d.M(l)};ml.preload=function(l,t){if(typeof l=="string"&&typeof t=="object"&&t!==null&&typeof t.as=="string"){var u=t.as,a=Se(u,t.crossOrigin);hl.d.L(l,u,{crossOrigin:a,integrity:typeof t.integrity=="string"?t.integrity:void 0,nonce:typeof t.nonce=="string"?t.nonce:void 0,type:typeof t.type=="string"?t.type:void 0,fetchPriority:typeof t.fetchPriority=="string"?t.fetchPriority:void 0,referrerPolicy:typeof t.referrerPolicy=="string"?t.referrerPolicy:void 0,imageSrcSet:typeof t.imageSrcSet=="string"?t.imageSrcSet:void 0,imageSizes:typeof t.imageSizes=="string"?t.imageSizes:void 0,media:typeof t.media=="string"?t.media:void 0})}};ml.preloadModule=function(l,t){if(typeof l=="string")if(t){var u=Se(t.as,t.crossOrigin);hl.d.m(l,{as:typeof t.as=="string"&&t.as!=="script"?t.as:void 0,crossOrigin:u,integrity:typeof t.integrity=="string"?t.integrity:void 0})}else hl.d.m(l)};ml.requestFormReset=function(l){hl.d.r(l)};ml.unstable_batchedUpdates=function(l,t){return l(t)};ml.useFormState=function(l,t,u){return sa.H.useFormState(l,t,u)};ml.useFormStatus=function(){return sa.H.useHostTransitionStatus()};ml.version="19.0.0"});var Ji=rt((tm,Ki)=>{"use strict";function Li(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(Li)}catch(l){console.error(l)}}Li(),Ki.exports=Vi()});var xv=rt(Xn=>{"use strict";var ll=xi(),d1=na(),rd=Ji();function S(l){var t="https://react.dev/errors/"+l;if(1<arguments.length){t+="?args[]="+encodeURIComponent(arguments[1]);for(var u=2;u<arguments.length;u++)t+="&args[]="+encodeURIComponent(arguments[u])}return"Minified React error #"+l+"; visit "+t+" for the full message or use the non-minified dev environment for full errors and additional helpful warnings."}function y1(l){return!(!l||l.nodeType!==1&&l.nodeType!==9&&l.nodeType!==11)}var Td=Symbol.for("react.element"),be=Symbol.for("react.transitional.element"),ba=Symbol.for("react.portal"),Mu=Symbol.for("react.fragment"),h1=Symbol.for("react.strict_mode"),Rc=Symbol.for("react.profiler"),zd=Symbol.for("react.provider"),m1=Symbol.for("react.consumer"),it=Symbol.for("react.context"),Af=Symbol.for("react.forward_ref"),Hc=Symbol.for("react.suspense"),Nc=Symbol.for("react.suspense_list"),Of=Symbol.for("react.memo"),Mt=Symbol.for("react.lazy");Symbol.for("react.scope");Symbol.for("react.debug_trace_mode");var o1=Symbol.for("react.offscreen");Symbol.for("react.legacy_hidden");Symbol.for("react.tracing_marker");var Ad=Symbol.for("react.memo_cache_sentinel"),wi=Symbol.iterator;function va(l){return l===null||typeof l!="object"?null:(l=wi&&l[wi]||l["@@iterator"],typeof l=="function"?l:null)}var Od=Symbol.for("react.client.reference");function pc(l){if(l==null)return null;if(typeof l=="function")return l.$$typeof===Od?null:l.displayName||l.name||null;if(typeof l=="string")return l;switch(l){case Mu:return"Fragment";case ba:return"Portal";case Rc:return"Profiler";case h1:return"StrictMode";case Hc:return"Suspense";case Nc:return"SuspenseList"}if(typeof l=="object")switch(l.$$typeof){case it:return(l.displayName||"Context")+".Provider";case m1:return(l._context.displayName||"Context")+".Consumer";case Af:var t=l.render;return l=l.displayName,l||(l=t.displayName||t.name||"",l=l!==""?"ForwardRef("+l+")":"ForwardRef"),l;case Of:return t=l.displayName||null,t!==null?t:pc(l.type)||"Memo";case Mt:t=l._payload,l=l._init;try{return pc(l(t))}catch{}}return null}var O=d1.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,Z=Object.assign,Pn,Wi;function Ea(l){if(Pn===void 0)try{throw Error()}catch(u){var t=u.stack.trim().match(/\n( *(at )?)/);Pn=t&&t[1]||"",Wi=-1<u.stack.indexOf(`
|
2
2
|
at`)?" (<anonymous>)":-1<u.stack.indexOf("@")?"@unknown:0:0":""}return`
|
3
|
-
`+Pn+l+Wi}var In=!1;function lc(l,t){if(!l||In)return"";In=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var b=function(){throw Error()};if(Object.defineProperty(b.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(b,[])}catch(
|
3
|
+
`+Pn+l+Wi}var In=!1;function lc(l,t){if(!l||In)return"";In=!0;var u=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{var a={DetermineComponentFrameRoot:function(){try{if(t){var b=function(){throw Error()};if(Object.defineProperty(b.prototype,"props",{set:function(){throw Error()}}),typeof Reflect=="object"&&Reflect.construct){try{Reflect.construct(b,[])}catch(m){var h=m}Reflect.construct(l,[],b)}else{try{b.call()}catch(m){h=m}l.call(b.prototype)}}else{try{throw Error()}catch(m){h=m}(b=l())&&typeof b.catch=="function"&&b.catch(function(){})}}catch(m){if(m&&h&&typeof m.stack=="string")return[m.stack,h.stack]}return[null,null]}};a.DetermineComponentFrameRoot.displayName="DetermineComponentFrameRoot";var e=Object.getOwnPropertyDescriptor(a.DetermineComponentFrameRoot,"name");e&&e.configurable&&Object.defineProperty(a.DetermineComponentFrameRoot,"name",{value:"DetermineComponentFrameRoot"});var n=a.DetermineComponentFrameRoot(),c=n[0],f=n[1];if(c&&f){var i=c.split(`
|
4
4
|
`),s=f.split(`
|
5
|
-
`);for(e=a=0;a<i.length&&!i[a].includes("DetermineComponentFrameRoot");)a++;for(;e<s.length&&!s[e].includes("DetermineComponentFrameRoot");)e++;if(a===i.length||e===s.length)for(a=i.length-1,e=s.length-1;1<=a&&0<=e&&i[a]!==s[e];)e--;for(;1<=a&&0<=e;a--,e--)if(i[a]!==s[e]){if(a!==1||e!==1)do if(a--,e--,0>e||i[a]!==s[e]){var
|
6
|
-
`+i[a].replace(" at new "," at ");return l.displayName&&
|
5
|
+
`);for(e=a=0;a<i.length&&!i[a].includes("DetermineComponentFrameRoot");)a++;for(;e<s.length&&!s[e].includes("DetermineComponentFrameRoot");)e++;if(a===i.length||e===s.length)for(a=i.length-1,e=s.length-1;1<=a&&0<=e&&i[a]!==s[e];)e--;for(;1<=a&&0<=e;a--,e--)if(i[a]!==s[e]){if(a!==1||e!==1)do if(a--,e--,0>e||i[a]!==s[e]){var o=`
|
6
|
+
`+i[a].replace(" at new "," at ");return l.displayName&&o.includes("<anonymous>")&&(o=o.replace("<anonymous>",l.displayName)),o}while(1<=a&&0<=e);break}}}finally{In=!1,Error.prepareStackTrace=u}return(u=l?l.displayName||l.name:"")?Ea(u):""}function Md(l){switch(l.tag){case 26:case 27:case 5:return Ea(l.type);case 16:return Ea("Lazy");case 13:return Ea("Suspense");case 19:return Ea("SuspenseList");case 0:case 15:return l=lc(l.type,!1),l;case 11:return l=lc(l.type.render,!1),l;case 1:return l=lc(l.type,!0),l;default:return""}}function $i(l){try{var t="";do t+=Md(l),l=l.return;while(l);return t}catch(u){return`
|
7
7
|
Error generating stack: `+u.message+`
|
8
|
-
`+u.stack}}function Iu(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,t.flags&4098&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function g1(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function ki(l){if(Iu(l)!==l)throw Error(S(188))}function Ud(l){var t=l.alternate;if(!t){if(t=Iu(l),t===null)throw Error(S(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return ki(e),l;if(n===a)return ki(e),t;n=n.sibling}throw Error(S(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,f=e.child;f;){if(f===u){c=!0,u=e,a=n;break}if(f===a){c=!0,a=e,u=n;break}f=f.sibling}if(!c){for(f=n.child;f;){if(f===u){c=!0,u=n,a=e;break}if(f===a){c=!0,a=n,u=e;break}f=f.sibling}if(!c)throw Error(S(189))}}if(u.alternate!==a)throw Error(S(190))}if(u.tag!==3)throw Error(S(188));return u.stateNode.current===u?l:t}function S1(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=S1(l),t!==null)return t;l=l.sibling}return null}var ra=Array.isArray,C=zd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,lu={pending:!1,data:null,method:null,action:null},pc=[],_u=-1;function Il(l){return{current:l}}function cl(l){0>_u||(l.current=pc[_u],pc[_u]=null,_u--)}function x(l,t){_u++,pc[_u]=l.current,l.current=t}var $l=Il(null),Qa=Il(null),pt=Il(null),We=Il(null);function $e(l,t){switch(x(pt,t),x(Qa,l),x($l,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?P0(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=P0(l),t=Rv(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}cl($l),x($l,t)}function Lu(){cl($l),cl(Qa),cl(pt)}function Yc(l){l.memoizedState!==null&&x(We,l);var t=$l.current,u=Rv(t,l.type);t!==u&&(x(Qa,l),x($l,u))}function ke(l){Qa.current===l&&(cl($l),cl(Qa)),We.current===l&&(cl(We),$a._currentValue=lu)}var Bc=Object.prototype.hasOwnProperty,Mf=tl.unstable_scheduleCallback,tc=tl.unstable_cancelCallback,Rd=tl.unstable_shouldYield,Hd=tl.unstable_requestPaint,kl=tl.unstable_now,Nd=tl.unstable_getCurrentPriorityLevel,b1=tl.unstable_ImmediatePriority,E1=tl.unstable_UserBlockingPriority,Fe=tl.unstable_NormalPriority,qd=tl.unstable_LowPriority,r1=tl.unstable_IdlePriority,pd=tl.log,Yd=tl.unstable_setDisableYieldValue,Ia=null,Ol=null;function Bd(l){if(Ol&&typeof Ol.onCommitFiberRoot=="function")try{Ol.onCommitFiberRoot(Ia,l,void 0,(l.current.flags&128)===128)}catch{}}function Nt(l){if(typeof pd=="function"&&Yd(l),Ol&&typeof Ol.setStrictMode=="function")try{Ol.setStrictMode(Ia,l)}catch{}}var Ml=Math.clz32?Math.clz32:Qd,Gd=Math.log,Xd=Math.LN2;function Qd(l){return l>>>=0,l===0?32:31-(Gd(l)/Xd|0)|0}var Ee=128,re=4194304;function $t(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function An(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var f=u&134217727;return f!==0?(u=f&~e,u!==0?a=$t(u):(n&=f,n!==0?a=$t(n):l||(c=f&~c,c!==0&&(a=$t(c))))):(f=u&~e,f!==0?a=$t(f):n!==0?a=$t(n):l||(c=u&~c,c!==0&&(a=$t(c)))),a===0?0:t!==0&&t!==a&&!(t&e)&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function le(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Cd(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function T1(){var l=Ee;return Ee<<=1,!(Ee&4194176)&&(Ee=128),l}function z1(){var l=re;return re<<=1,!(re&62914560)&&(re=4194304),l}function uc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function te(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Zd(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var f=l.entanglements,i=l.expirationTimes,s=l.hiddenUpdates;for(u=c&~u;0<u;){var m=31-Ml(u),b=1<<m;f[m]=0,i[m]=-1;var h=s[m];if(h!==null)for(s[m]=null,m=0;m<h.length;m++){var o=h[m];o!==null&&(o.lane&=-536870913)}u&=~b}a!==0&&A1(l,a,0),n!==0&&e===0&&l.tag!==0&&(l.suspendedLanes|=n&~(c&~t))}function A1(l,t,u){l.pendingLanes|=t,l.suspendedLanes&=~t;var a=31-Ml(t);l.entangledLanes|=t,l.entanglements[a]=l.entanglements[a]|1073741824|u&4194218}function O1(l,t){var u=l.entangledLanes|=t;for(l=l.entanglements;u;){var a=31-Ml(u),e=1<<a;e&t|l[a]&t&&(l[a]|=t),u&=~e}}function M1(l){return l&=-l,2<l?8<l?l&134217727?32:268435456:8:2}function _1(){var l=C.p;return l!==0?l:(l=window.event,l===void 0?32:Cv(l.type))}function xd(l,t){var u=C.p;try{return C.p=l,t()}finally{C.p=u}}var Kt=Math.random().toString(36).slice(2),dl="__reactFiber$"+Kt,bl="__reactProps$"+Kt,la="__reactContainer$"+Kt,Gc="__reactEvents$"+Kt,jd="__reactListeners$"+Kt,Vd="__reactHandles$"+Kt,Fi="__reactResources$"+Kt,Ca="__reactMarker$"+Kt;function _f(l){delete l[dl],delete l[bl],delete l[Gc],delete l[jd],delete l[Vd]}function Pt(l){var t=l[dl];if(t)return t;for(var u=l.parentNode;u;){if(t=u[la]||u[dl]){if(u=t.alternate,t.child!==null||u!==null&&u.child!==null)for(l=l1(l);l!==null;){if(u=l[dl])return u;l=l1(l)}return t}l=u,u=l.parentNode}return null}function ta(l){if(l=l[dl]||l[la]){var t=l.tag;if(t===5||t===6||t===13||t===26||t===27||t===3)return l}return null}function Ta(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l.stateNode;throw Error(S(33))}function Gu(l){var t=l[Fi];return t||(t=l[Fi]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function el(l){l[Ca]=!0}var D1=new Set,U1={};function du(l,t){Ku(l,t),Ku(l+"Capture",t)}function Ku(l,t){for(U1[l]=t,l=0;l<t.length;l++)D1.add(t[l])}var mt=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),Ld=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Pi={},Ii={};function Kd(l){return Bc.call(Ii,l)?!0:Bc.call(Pi,l)?!1:Ld.test(l)?Ii[l]=!0:(Pi[l]=!0,!1)}function Ge(l,t,u){if(Kd(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Te(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function tt(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function ql(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function R1(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Jd(l){var t=R1(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function Pe(l){l._valueTracker||(l._valueTracker=Jd(l))}function H1(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=R1(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function Ie(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var wd=/[\n"\\]/g;function Bl(l){return l.replace(wd,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Xc(l,t,u,a,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+ql(t)):l.value!==""+ql(t)&&(l.value=""+ql(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Qc(l,c,ql(t)):u!=null?Qc(l,c,ql(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+ql(f):l.removeAttribute("name")}function N1(l,t,u,a,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+ql(u):"",t=t!=null?""+ql(t):u,f||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=f?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Qc(l,t,u){t==="number"&&Ie(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function Xu(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e<u.length;e++)t["$"+u[e]]=!0;for(u=0;u<l.length;u++)e=t.hasOwnProperty("$"+l[u].value),l[u].selected!==e&&(l[u].selected=e),e&&a&&(l[u].defaultSelected=!0)}else{for(u=""+ql(u),t=null,e=0;e<l.length;e++){if(l[e].value===u){l[e].selected=!0,a&&(l[e].defaultSelected=!0);return}t!==null||l[e].disabled||(t=l[e])}t!==null&&(t.selected=!0)}}function q1(l,t,u){if(t!=null&&(t=""+ql(t),t!==l.value&&(l.value=t),u==null)){l.defaultValue!==t&&(l.defaultValue=t);return}l.defaultValue=u!=null?""+ql(u):""}function p1(l,t,u,a){if(t==null){if(a!=null){if(u!=null)throw Error(S(92));if(ra(a)){if(1<a.length)throw Error(S(93));a=a[0]}u=a}u==null&&(u=""),t=u}u=ql(t),l.defaultValue=u,a=l.textContent,a===u&&a!==""&&a!==null&&(l.value=a)}function Ju(l,t){if(t){var u=l.firstChild;if(u&&u===l.lastChild&&u.nodeType===3){u.nodeValue=t;return}}l.textContent=t}var Wd=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function l0(l,t,u){var a=t.indexOf("--")===0;u==null||typeof u=="boolean"||u===""?a?l.setProperty(t,""):t==="float"?l.cssFloat="":l[t]="":a?l.setProperty(t,u):typeof u!="number"||u===0||Wd.has(t)?t==="float"?l.cssFloat=u:l[t]=(""+u).trim():l[t]=u+"px"}function Y1(l,t,u){if(t!=null&&typeof t!="object")throw Error(S(62));if(l=l.style,u!=null){for(var a in u)!u.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?l.setProperty(a,""):a==="float"?l.cssFloat="":l[a]="");for(var e in t)a=t[e],t.hasOwnProperty(e)&&u[e]!==a&&l0(l,e,a)}else for(var n in t)t.hasOwnProperty(n)&&l0(l,n,t[n])}function Df(l){if(l.indexOf("-")===-1)return!1;switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var $d=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),kd=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Xe(l){return kd.test(""+l)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":l}var Cc=null;function Uf(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var Du=null,Qu=null;function t0(l){var t=ta(l);if(t&&(l=t.stateNode)){var u=l[bl]||null;l:switch(l=t.stateNode,t.type){case"input":if(Xc(l,u.value,u.defaultValue,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name),t=u.name,u.type==="radio"&&t!=null){for(u=l;u.parentNode;)u=u.parentNode;for(u=u.querySelectorAll('input[name="'+Bl(""+t)+'"][type="radio"]'),t=0;t<u.length;t++){var a=u[t];if(a!==l&&a.form===l.form){var e=a[bl]||null;if(!e)throw Error(S(90));Xc(a,e.value,e.defaultValue,e.defaultValue,e.checked,e.defaultChecked,e.type,e.name)}}for(t=0;t<u.length;t++)a=u[t],a.form===l.form&&H1(a)}break l;case"textarea":q1(l,u.value,u.defaultValue);break l;case"select":t=u.value,t!=null&&Xu(l,!!u.multiple,t,!1)}}}var ac=!1;function B1(l,t,u){if(ac)return l(t,u);ac=!0;try{var a=l(t);return a}finally{if(ac=!1,(Du!==null||Qu!==null)&&(pn(),Du&&(t=Du,l=Qu,Qu=Du=null,t0(t),l)))for(t=0;t<l.length;t++)t0(l[t])}}function Za(l,t){var u=l.stateNode;if(u===null)return null;var a=u[bl]||null;if(a===null)return null;u=a[t];l:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(l=l.type,a=!(l==="button"||l==="input"||l==="select"||l==="textarea")),l=!a;break l;default:l=!1}if(l)return null;if(u&&typeof u!="function")throw Error(S(231,t,typeof u));return u}var Zc=!1;if(mt)try{Eu={},Object.defineProperty(Eu,"passive",{get:function(){Zc=!0}}),window.addEventListener("test",Eu,Eu),window.removeEventListener("test",Eu,Eu)}catch{Zc=!1}var Eu,qt=null,Rf=null,Qe=null;function G1(){if(Qe)return Qe;var l,t=Rf,u=t.length,a,e="value"in qt?qt.value:qt.textContent,n=e.length;for(l=0;l<u&&t[l]===e[l];l++);var c=u-l;for(a=1;a<=c&&t[u-a]===e[n-a];a++);return Qe=e.slice(l,1<a?1-a:void 0)}function Ce(l){var t=l.keyCode;return"charCode"in l?(l=l.charCode,l===0&&t===13&&(l=13)):l=t,l===10&&(l=13),32<=l||l===13?l:0}function ze(){return!0}function u0(){return!1}function El(l){function t(u,a,e,n,c){this._reactName=u,this._targetInst=e,this.type=a,this.nativeEvent=n,this.target=c,this.currentTarget=null;for(var f in l)l.hasOwnProperty(f)&&(u=l[f],this[f]=u?u(n):n[f]);return this.isDefaultPrevented=(n.defaultPrevented!=null?n.defaultPrevented:n.returnValue===!1)?ze:u0,this.isPropagationStopped=u0,this}return Z(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var u=this.nativeEvent;u&&(u.preventDefault?u.preventDefault():typeof u.returnValue!="unknown"&&(u.returnValue=!1),this.isDefaultPrevented=ze)},stopPropagation:function(){var u=this.nativeEvent;u&&(u.stopPropagation?u.stopPropagation():typeof u.cancelBubble!="unknown"&&(u.cancelBubble=!0),this.isPropagationStopped=ze)},persist:function(){},isPersistent:ze}),t}var yu={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(l){return l.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},On=El(yu),ue=Z({},yu,{view:0,detail:0}),Fd=El(ue),ec,nc,da,Mn=Z({},ue,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Hf,button:0,buttons:0,relatedTarget:function(l){return l.relatedTarget===void 0?l.fromElement===l.srcElement?l.toElement:l.fromElement:l.relatedTarget},movementX:function(l){return"movementX"in l?l.movementX:(l!==da&&(da&&l.type==="mousemove"?(ec=l.screenX-da.screenX,nc=l.screenY-da.screenY):nc=ec=0,da=l),ec)},movementY:function(l){return"movementY"in l?l.movementY:nc}}),a0=El(Mn),Pd=Z({},Mn,{dataTransfer:0}),Id=El(Pd),ly=Z({},ue,{relatedTarget:0}),cc=El(ly),ty=Z({},yu,{animationName:0,elapsedTime:0,pseudoElement:0}),uy=El(ty),ay=Z({},yu,{clipboardData:function(l){return"clipboardData"in l?l.clipboardData:window.clipboardData}}),ey=El(ay),ny=Z({},yu,{data:0}),e0=El(ny),cy={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},fy={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},iy={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function sy(l){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(l):(l=iy[l])?!!t[l]:!1}function Hf(){return sy}var vy=Z({},ue,{key:function(l){if(l.key){var t=cy[l.key]||l.key;if(t!=="Unidentified")return t}return l.type==="keypress"?(l=Ce(l),l===13?"Enter":String.fromCharCode(l)):l.type==="keydown"||l.type==="keyup"?fy[l.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Hf,charCode:function(l){return l.type==="keypress"?Ce(l):0},keyCode:function(l){return l.type==="keydown"||l.type==="keyup"?l.keyCode:0},which:function(l){return l.type==="keypress"?Ce(l):l.type==="keydown"||l.type==="keyup"?l.keyCode:0}}),dy=El(vy),yy=Z({},Mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),n0=El(yy),hy=Z({},ue,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Hf}),my=El(hy),oy=Z({},yu,{propertyName:0,elapsedTime:0,pseudoElement:0}),gy=El(oy),Sy=Z({},Mn,{deltaX:function(l){return"deltaX"in l?l.deltaX:"wheelDeltaX"in l?-l.wheelDeltaX:0},deltaY:function(l){return"deltaY"in l?l.deltaY:"wheelDeltaY"in l?-l.wheelDeltaY:"wheelDelta"in l?-l.wheelDelta:0},deltaZ:0,deltaMode:0}),by=El(Sy),Ey=Z({},yu,{newState:0,oldState:0}),ry=El(Ey),Ty=[9,13,27,32],Nf=mt&&"CompositionEvent"in window,Aa=null;mt&&"documentMode"in document&&(Aa=document.documentMode);var zy=mt&&"TextEvent"in window&&!Aa,X1=mt&&(!Nf||Aa&&8<Aa&&11>=Aa),c0=" ",f0=!1;function Q1(l,t){switch(l){case"keyup":return Ty.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function C1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Uu=!1;function Ay(l,t){switch(l){case"compositionend":return C1(t);case"keypress":return t.which!==32?null:(f0=!0,c0);case"textInput":return l=t.data,l===c0&&f0?null:l;default:return null}}function Oy(l,t){if(Uu)return l==="compositionend"||!Nf&&Q1(l,t)?(l=G1(),Qe=Rf=qt=null,Uu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return X1&&t.locale!=="ko"?null:t.data;default:return null}}var My={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function i0(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t==="input"?!!My[l.type]:t==="textarea"}function Z1(l,t,u,a){Du?Qu?Qu.push(a):Qu=[a]:Du=a,t=gn(t,"onChange"),0<t.length&&(u=new On("onChange","change",null,u,a),l.push({event:u,listeners:t}))}var Oa=null,xa=null;function _y(l){_v(l,0)}function _n(l){var t=Ta(l);if(H1(t))return l}function s0(l,t){if(l==="change")return t}var x1=!1;mt&&(mt?(Oe="oninput"in document,Oe||(fc=document.createElement("div"),fc.setAttribute("oninput","return;"),Oe=typeof fc.oninput=="function"),Ae=Oe):Ae=!1,x1=Ae&&(!document.documentMode||9<document.documentMode));var Ae,Oe,fc;function v0(){Oa&&(Oa.detachEvent("onpropertychange",j1),xa=Oa=null)}function j1(l){if(l.propertyName==="value"&&_n(xa)){var t=[];Z1(t,xa,l,Uf(l)),B1(_y,t)}}function Dy(l,t,u){l==="focusin"?(v0(),Oa=t,xa=u,Oa.attachEvent("onpropertychange",j1)):l==="focusout"&&v0()}function Uy(l){if(l==="selectionchange"||l==="keyup"||l==="keydown")return _n(xa)}function Ry(l,t){if(l==="click")return _n(t)}function Hy(l,t){if(l==="input"||l==="change")return _n(t)}function Ny(l,t){return l===t&&(l!==0||1/l===1/t)||l!==l&&t!==t}var Dl=typeof Object.is=="function"?Object.is:Ny;function ja(l,t){if(Dl(l,t))return!0;if(typeof l!="object"||l===null||typeof t!="object"||t===null)return!1;var u=Object.keys(l),a=Object.keys(t);if(u.length!==a.length)return!1;for(a=0;a<u.length;a++){var e=u[a];if(!Bc.call(t,e)||!Dl(l[e],t[e]))return!1}return!0}function d0(l){for(;l&&l.firstChild;)l=l.firstChild;return l}function y0(l,t){var u=d0(l);l=0;for(var a;u;){if(u.nodeType===3){if(a=l+u.textContent.length,l<=t&&a>=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=d0(u)}}function V1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?V1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function L1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Ie(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=Ie(l.document)}return t}function qf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function qy(l,t){var u=L1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&V1(t.ownerDocument.documentElement,t)){if(a!==null&&qf(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=y0(t,n);var c=y0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t<l.length;t++)u=l[t],u.element.scrollLeft=u.left,u.element.scrollTop=u.top}}var py=mt&&"documentMode"in document&&11>=document.documentMode,Ru=null,xc=null,Ma=null,jc=!1;function h0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;jc||Ru==null||Ru!==Ie(a)||(a=Ru,"selectionStart"in a&&qf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ma&&ja(Ma,a)||(Ma=a,a=gn(xc,"onSelect"),0<a.length&&(t=new On("onSelect","select",null,t,u),l.push({event:t,listeners:a}),t.target=Ru)))}function Wt(l,t){var u={};return u[l.toLowerCase()]=t.toLowerCase(),u["Webkit"+l]="webkit"+t,u["Moz"+l]="moz"+t,u}var Hu={animationend:Wt("Animation","AnimationEnd"),animationiteration:Wt("Animation","AnimationIteration"),animationstart:Wt("Animation","AnimationStart"),transitionrun:Wt("Transition","TransitionRun"),transitionstart:Wt("Transition","TransitionStart"),transitioncancel:Wt("Transition","TransitionCancel"),transitionend:Wt("Transition","TransitionEnd")},ic={},K1={};mt&&(K1=document.createElement("div").style,"AnimationEvent"in window||(delete Hu.animationend.animation,delete Hu.animationiteration.animation,delete Hu.animationstart.animation),"TransitionEvent"in window||delete Hu.transitionend.transition);function hu(l){if(ic[l])return ic[l];if(!Hu[l])return l;var t=Hu[l],u;for(u in t)if(t.hasOwnProperty(u)&&u in K1)return ic[l]=t[u];return l}var J1=hu("animationend"),w1=hu("animationiteration"),W1=hu("animationstart"),Yy=hu("transitionrun"),By=hu("transitionstart"),Gy=hu("transitioncancel"),$1=hu("transitionend"),k1=new Map,m0="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel".split(" ");function Kl(l,t){k1.set(l,t),du(t,[l])}var Nl=[],Nu=0,pf=0;function Dn(){for(var l=Nu,t=pf=Nu=0;t<l;){var u=Nl[t];Nl[t++]=null;var a=Nl[t];Nl[t++]=null;var e=Nl[t];Nl[t++]=null;var n=Nl[t];if(Nl[t++]=null,a!==null&&e!==null){var c=a.pending;c===null?e.next=e:(e.next=c.next,c.next=e),a.pending=e}n!==0&&F1(u,e,n)}}function Un(l,t,u,a){Nl[Nu++]=l,Nl[Nu++]=t,Nl[Nu++]=u,Nl[Nu++]=a,pf|=a,l.lanes|=a,l=l.alternate,l!==null&&(l.lanes|=a)}function Yf(l,t,u,a){return Un(l,t,u,a),ln(l)}function xt(l,t){return Un(l,null,null,t),ln(l)}function F1(l,t,u){l.lanes|=u;var a=l.alternate;a!==null&&(a.lanes|=u);for(var e=!1,n=l.return;n!==null;)n.childLanes|=u,a=n.alternate,a!==null&&(a.childLanes|=u),n.tag===22&&(l=n.stateNode,l===null||l._visibility&1||(e=!0)),l=n,n=n.return;e&&t!==null&&l.tag===3&&(n=l.stateNode,e=31-Ml(u),n=n.hiddenUpdates,l=n[e],l===null?n[e]=[t]:l.push(t),t.lane=u|536870912)}function ln(l){if(50<Xa)throw Xa=0,df=null,Error(S(185));for(var t=l.return;t!==null;)l=t,t=l.return;return l.tag===3?l.stateNode:null}var qu={},o0=new WeakMap;function Gl(l,t){if(typeof l=="object"&&l!==null){var u=o0.get(l);return u!==void 0?u:(t={value:l,source:t,stack:$i(t)},o0.set(l,t),t)}return{value:l,source:t,stack:$i(t)}}var pu=[],Yu=0,tn=null,un=0,pl=[],Yl=0,tu=null,st=1,vt="";function kt(l,t){pu[Yu++]=un,pu[Yu++]=tn,tn=l,un=t}function P1(l,t,u){pl[Yl++]=st,pl[Yl++]=vt,pl[Yl++]=tu,tu=l;var a=st;l=vt;var e=32-Ml(a)-1;a&=~(1<<e),u+=1;var n=32-Ml(t)+e;if(30<n){var c=e-e%5;n=(a&(1<<c)-1).toString(32),a>>=c,e-=c,st=1<<32-Ml(t)+e|u<<e|a,vt=n+l}else st=1<<n|u<<e|a,vt=l}function Bf(l){l.return!==null&&(kt(l,1),P1(l,1,0))}function Gf(l){for(;l===tn;)tn=pu[--Yu],pu[Yu]=null,un=pu[--Yu],pu[Yu]=null;for(;l===tu;)tu=pl[--Yl],pl[Yl]=null,vt=pl[--Yl],pl[Yl]=null,st=pl[--Yl],pl[Yl]=null}var ol=null,il=null,q=!1,Vl=null,wl=!1,Vc=Error(S(519));function cu(l){var t=Error(S(418,""));throw Va(Gl(t,l)),Vc}function g0(l){var t=l.stateNode,u=l.type,a=l.memoizedProps;switch(t[dl]=l,t[bl]=a,u){case"dialog":R("cancel",t),R("close",t);break;case"iframe":case"object":case"embed":R("load",t);break;case"video":case"audio":for(u=0;u<Ja.length;u++)R(Ja[u],t);break;case"source":R("error",t);break;case"img":case"image":case"link":R("error",t),R("load",t);break;case"details":R("toggle",t);break;case"input":R("invalid",t),N1(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0),Pe(t);break;case"select":R("invalid",t);break;case"textarea":R("invalid",t),p1(t,a.value,a.defaultValue,a.children),Pe(t)}u=a.children,typeof u!="string"&&typeof u!="number"&&typeof u!="bigint"||t.textContent===""+u||a.suppressHydrationWarning===!0||Uv(t.textContent,u)?(a.popover!=null&&(R("beforetoggle",t),R("toggle",t)),a.onScroll!=null&&R("scroll",t),a.onScrollEnd!=null&&R("scrollend",t),a.onClick!=null&&(t.onclick=Bn),t=!0):t=!1,t||cu(l)}function S0(l){for(ol=l.return;ol;)switch(ol.tag){case 3:case 27:wl=!0;return;case 5:case 13:wl=!1;return;default:ol=ol.return}}function ya(l){if(l!==ol)return!1;if(!q)return S0(l),q=!0,!1;var t=!1,u;if((u=l.tag!==3&&l.tag!==27)&&((u=l.tag===5)&&(u=l.type,u=!(u!=="form"&&u!=="button")||bf(l.type,l.memoizedProps)),u=!u),u&&(t=!0),t&&il&&cu(l),S0(l),l.tag===13){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(S(317));l:{for(l=l.nextSibling,t=0;l;){if(l.nodeType===8)if(u=l.data,u==="/$"){if(t===0){il=Ll(l.nextSibling);break l}t--}else u!=="$"&&u!=="$!"&&u!=="$?"||t++;l=l.nextSibling}il=null}}else il=ol?Ll(l.stateNode.nextSibling):null;return!0}function ae(){il=ol=null,q=!1}function Va(l){Vl===null?Vl=[l]:Vl.push(l)}var _a=Error(S(460)),I1=Error(S(474)),Lc={then:function(){}};function b0(l){return l=l.status,l==="fulfilled"||l==="rejected"}function Me(){}function ls(l,t,u){switch(u=l[u],u===void 0?l.push(t):u!==t&&(t.then(Me,Me),t=u),t.status){case"fulfilled":return t.value;case"rejected":throw l=t.reason,l===_a?Error(S(483)):l;default:if(typeof t.status=="string")t.then(Me,Me);else{if(l=Q,l!==null&&100<l.shellSuspendCounter)throw Error(S(482));l=t,l.status="pending",l.then(function(a){if(t.status==="pending"){var e=t;e.status="fulfilled",e.value=a}},function(a){if(t.status==="pending"){var e=t;e.status="rejected",e.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw l=t.reason,l===_a?Error(S(483)):l}throw Da=t,_a}}var Da=null;function E0(){if(Da===null)throw Error(S(459));var l=Da;return Da=null,l}var Cu=null,La=0;function _e(l){var t=La;return La+=1,Cu===null&&(Cu=[]),ls(Cu,l,t)}function ha(l,t){t=t.props.ref,l.ref=t!==void 0?t:null}function De(l,t){throw t.$$typeof===Ad?Error(S(525)):(l=Object.prototype.toString.call(t),Error(S(31,l==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":l)))}function r0(l){var t=l._init;return t(l._payload)}function ts(l){function t(d,v){if(l){var y=d.deletions;y===null?(d.deletions=[v],d.flags|=16):y.push(v)}}function u(d,v){if(!l)return null;for(;v!==null;)t(d,v),v=v.sibling;return null}function a(d){for(var v=new Map;d!==null;)d.key!==null?v.set(d.key,d):v.set(d.index,d),d=d.sibling;return v}function e(d,v){return d=Gt(d,v),d.index=0,d.sibling=null,d}function n(d,v,y){return d.index=y,l?(y=d.alternate,y!==null?(y=y.index,y<v?(d.flags|=33554434,v):y):(d.flags|=33554434,v)):(d.flags|=1048576,v)}function c(d){return l&&d.alternate===null&&(d.flags|=33554434),d}function f(d,v,y,g){return v===null||v.tag!==6?(v=rc(y,d.mode,g),v.return=d,v):(v=e(v,y),v.return=d,v)}function i(d,v,y,g){var E=y.type;return E===Mu?m(d,v,y.props.children,g,y.key):v!==null&&(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Mt&&r0(E)===v.type)?(v=e(v,y.props),ha(v,y),v.return=d,v):(v=Le(y.type,y.key,y.props,null,d.mode,g),ha(v,y),v.return=d,v)}function s(d,v,y,g){return v===null||v.tag!==4||v.stateNode.containerInfo!==y.containerInfo||v.stateNode.implementation!==y.implementation?(v=Tc(y,d.mode,g),v.return=d,v):(v=e(v,y.children||[]),v.return=d,v)}function m(d,v,y,g,E){return v===null||v.tag!==7?(v=au(y,d.mode,g,E),v.return=d,v):(v=e(v,y),v.return=d,v)}function b(d,v,y){if(typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint")return v=rc(""+v,d.mode,y),v.return=d,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case be:return y=Le(v.type,v.key,v.props,null,d.mode,y),ha(y,v),y.return=d,y;case ba:return v=Tc(v,d.mode,y),v.return=d,v;case Mt:var g=v._init;return v=g(v._payload),b(d,v,y)}if(ra(v)||va(v))return v=au(v,d.mode,y,null),v.return=d,v;if(typeof v.then=="function")return b(d,_e(v),y);if(v.$$typeof===it)return b(d,Ue(d,v),y);De(d,v)}return null}function h(d,v,y,g){var E=v!==null?v.key:null;if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return E!==null?null:f(d,v,""+y,g);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case be:return y.key===E?i(d,v,y,g):null;case ba:return y.key===E?s(d,v,y,g):null;case Mt:return E=y._init,y=E(y._payload),h(d,v,y,g)}if(ra(y)||va(y))return E!==null?null:m(d,v,y,g,null);if(typeof y.then=="function")return h(d,v,_e(y),g);if(y.$$typeof===it)return h(d,v,Ue(d,y),g);De(d,y)}return null}function o(d,v,y,g,E){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return d=d.get(y)||null,f(v,d,""+g,E);if(typeof g=="object"&&g!==null){switch(g.$$typeof){case be:return d=d.get(g.key===null?y:g.key)||null,i(v,d,g,E);case ba:return d=d.get(g.key===null?y:g.key)||null,s(v,d,g,E);case Mt:var D=g._init;return g=D(g._payload),o(d,v,y,g,E)}if(ra(g)||va(g))return d=d.get(y)||null,m(v,d,g,E,null);if(typeof g.then=="function")return o(d,v,y,_e(g),E);if(g.$$typeof===it)return o(d,v,y,Ue(v,g),E);De(v,g)}return null}function r(d,v,y,g){for(var E=null,D=null,T=v,z=v=0,ul=null;T!==null&&z<y.length;z++){T.index>z?(ul=T,T=null):ul=T.sibling;var N=h(d,T,y[z],g);if(N===null){T===null&&(T=ul);break}l&&T&&N.alternate===null&&t(d,T),v=n(N,v,z),D===null?E=N:D.sibling=N,D=N,T=ul}if(z===y.length)return u(d,T),q&&kt(d,z),E;if(T===null){for(;z<y.length;z++)T=b(d,y[z],g),T!==null&&(v=n(T,v,z),D===null?E=T:D.sibling=T,D=T);return q&&kt(d,z),E}for(T=a(T);z<y.length;z++)ul=o(T,d,z,y[z],g),ul!==null&&(l&&ul.alternate!==null&&T.delete(ul.key===null?z:ul.key),v=n(ul,v,z),D===null?E=ul:D.sibling=ul,D=ul);return l&&T.forEach(function(Et){return t(d,Et)}),q&&kt(d,z),E}function A(d,v,y,g){if(y==null)throw Error(S(151));for(var E=null,D=null,T=v,z=v=0,ul=null,N=y.next();T!==null&&!N.done;z++,N=y.next()){T.index>z?(ul=T,T=null):ul=T.sibling;var Et=h(d,T,N.value,g);if(Et===null){T===null&&(T=ul);break}l&&T&&Et.alternate===null&&t(d,T),v=n(Et,v,z),D===null?E=Et:D.sibling=Et,D=Et,T=ul}if(N.done)return u(d,T),q&&kt(d,z),E;if(T===null){for(;!N.done;z++,N=y.next())N=b(d,N.value,g),N!==null&&(v=n(N,v,z),D===null?E=N:D.sibling=N,D=N);return q&&kt(d,z),E}for(T=a(T);!N.done;z++,N=y.next())N=o(T,d,z,N.value,g),N!==null&&(l&&N.alternate!==null&&T.delete(N.key===null?z:N.key),v=n(N,v,z),D===null?E=N:D.sibling=N,D=N);return l&&T.forEach(function(kv){return t(d,kv)}),q&&kt(d,z),E}function K(d,v,y,g){if(typeof y=="object"&&y!==null&&y.type===Mu&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case be:l:{for(var E=y.key;v!==null;){if(v.key===E){if(E=y.type,E===Mu){if(v.tag===7){u(d,v.sibling),g=e(v,y.props.children),g.return=d,d=g;break l}}else if(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Mt&&r0(E)===v.type){u(d,v.sibling),g=e(v,y.props),ha(g,y),g.return=d,d=g;break l}u(d,v);break}else t(d,v);v=v.sibling}y.type===Mu?(g=au(y.props.children,d.mode,g,y.key),g.return=d,d=g):(g=Le(y.type,y.key,y.props,null,d.mode,g),ha(g,y),g.return=d,d=g)}return c(d);case ba:l:{for(E=y.key;v!==null;){if(v.key===E)if(v.tag===4&&v.stateNode.containerInfo===y.containerInfo&&v.stateNode.implementation===y.implementation){u(d,v.sibling),g=e(v,y.children||[]),g.return=d,d=g;break l}else{u(d,v);break}else t(d,v);v=v.sibling}g=Tc(y,d.mode,g),g.return=d,d=g}return c(d);case Mt:return E=y._init,y=E(y._payload),K(d,v,y,g)}if(ra(y))return r(d,v,y,g);if(va(y)){if(E=va(y),typeof E!="function")throw Error(S(150));return y=E.call(y),A(d,v,y,g)}if(typeof y.then=="function")return K(d,v,_e(y),g);if(y.$$typeof===it)return K(d,v,Ue(d,y),g);De(d,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,v!==null&&v.tag===6?(u(d,v.sibling),g=e(v,y),g.return=d,d=g):(u(d,v),g=rc(y,d.mode,g),g.return=d,d=g),c(d)):u(d,v)}return function(d,v,y,g){try{La=0;var E=K(d,v,y,g);return Cu=null,E}catch(T){if(T===_a)throw T;var D=Xl(29,T,null,d.mode);return D.lanes=g,D.return=d,D}finally{}}}var fu=ts(!0),us=ts(!1),wu=Il(null),an=Il(0);function T0(l,t){l=St,x(an,l),x(wu,t),St=l|t.baseLanes}function Kc(){x(an,St),x(wu,wu.current)}function Xf(){St=an.current,cl(wu),cl(an)}var Cl=Il(null),Fl=null;function Dt(l){var t=l.alternate;x(ll,ll.current&1),x(Cl,l),Fl===null&&(t===null||wu.current!==null||t.memoizedState!==null)&&(Fl=l)}function as(l){if(l.tag===22){if(x(ll,ll.current),x(Cl,l),Fl===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(Fl=l)}}else Ut(l)}function Ut(){x(ll,ll.current),x(Cl,Cl.current)}function dt(l){cl(Cl),Fl===l&&(Fl=null),cl(ll)}var ll=Il(0);function en(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var Xy=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},Qy=tl.unstable_scheduleCallback,Cy=tl.unstable_NormalPriority,I={$$typeof:it,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Qf(){return{controller:new Xy,data:new Map,refCount:0}}function ee(l){l.refCount--,l.refCount===0&&Qy(Cy,function(){l.controller.abort()})}var Ua=null,Jc=0,Wu=0,Zu=null;function Zy(l,t){if(Ua===null){var u=Ua=[];Jc=0,Wu=fi(),Zu={status:"pending",value:void 0,then:function(a){u.push(a)}}}return Jc++,t.then(z0,z0),t}function z0(){if(--Jc===0&&Ua!==null){Zu!==null&&(Zu.status="fulfilled");var l=Ua;Ua=null,Wu=0,Zu=null;for(var t=0;t<l.length;t++)(0,l[t])()}}function xy(l,t){var u=[],a={status:"pending",value:null,reason:null,then:function(e){u.push(e)}};return l.then(function(){a.status="fulfilled",a.value=t;for(var e=0;e<u.length;e++)(0,u[e])(t)},function(e){for(a.status="rejected",a.reason=e,e=0;e<u.length;e++)(0,u[e])(void 0)}),a}var A0=O.S;O.S=function(l,t){typeof t=="object"&&t!==null&&typeof t.then=="function"&&Zy(l,t),A0!==null&&A0(l,t)};var uu=Il(null);function Cf(){var l=uu.current;return l!==null?l:Q.pooledCache}function Ze(l,t){t===null?x(uu,uu.current):x(uu,t.pool)}function es(){var l=Cf();return l===null?null:{parent:I._currentValue,pool:l}}var jt=0,_=null,Y=null,F=null,nn=!1,xu=!1,iu=!1,cn=0,Ka=0,ju=null,jy=0;function W(){throw Error(S(321))}function Zf(l,t){if(t===null)return!1;for(var u=0;u<t.length&&u<l.length;u++)if(!Dl(l[u],t[u]))return!1;return!0}function xf(l,t,u,a,e,n){return jt=n,_=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,O.H=l===null||l.memoizedState===null?mu:Jt,iu=!1,n=u(a,e),iu=!1,xu&&(n=cs(t,u,a,e)),ns(l),n}function ns(l){O.H=Pl;var t=Y!==null&&Y.next!==null;if(jt=0,F=Y=_=null,nn=!1,Ka=0,ju=null,t)throw Error(S(300));l===null||nl||(l=l.dependencies,l!==null&&vn(l)&&(nl=!0))}function cs(l,t,u,a){_=l;var e=0;do{if(xu&&(ju=null),Ka=0,xu=!1,25<=e)throw Error(S(301));if(e+=1,F=Y=null,l.updateQueue!=null){var n=l.updateQueue;n.lastEffect=null,n.events=null,n.stores=null,n.memoCache!=null&&(n.memoCache.index=0)}O.H=ou,n=t(u,a)}while(xu);return n}function Vy(){var l=O.H,t=l.useState()[0];return t=typeof t.then=="function"?ne(t):t,l=l.useState()[0],(Y!==null?Y.memoizedState:null)!==l&&(_.flags|=1024),t}function jf(){var l=cn!==0;return cn=0,l}function Vf(l,t,u){t.updateQueue=l.updateQueue,t.flags&=-2053,l.lanes&=~u}function Lf(l){if(nn){for(l=l.memoizedState;l!==null;){var t=l.queue;t!==null&&(t.pending=null),l=l.next}nn=!1}jt=0,F=Y=_=null,xu=!1,Ka=cn=0,ju=null}function Sl(){var l={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return F===null?_.memoizedState=F=l:F=F.next=l,F}function P(){if(Y===null){var l=_.alternate;l=l!==null?l.memoizedState:null}else l=Y.next;var t=F===null?_.memoizedState:F.next;if(t!==null)F=t,Y=l;else{if(l===null)throw _.alternate===null?Error(S(467)):Error(S(310));Y=l,l={memoizedState:Y.memoizedState,baseState:Y.baseState,baseQueue:Y.baseQueue,queue:Y.queue,next:null},F===null?_.memoizedState=F=l:F=F.next=l}return F}var Rn;Rn=function(){return{lastEffect:null,events:null,stores:null,memoCache:null}};function ne(l){var t=Ka;return Ka+=1,ju===null&&(ju=[]),l=ls(ju,l,t),t=_,(F===null?t.memoizedState:F.next)===null&&(t=t.alternate,O.H=t===null||t.memoizedState===null?mu:Jt),l}function Hn(l){if(l!==null&&typeof l=="object"){if(typeof l.then=="function")return ne(l);if(l.$$typeof===it)return yl(l)}throw Error(S(438,String(l)))}function Kf(l){var t=null,u=_.updateQueue;if(u!==null&&(t=u.memoCache),t==null){var a=_.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(e){return e.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),u===null&&(u=Rn(),_.updateQueue=u),u.memoCache=t,u=t.data[t.index],u===void 0)for(u=t.data[t.index]=Array(l),a=0;a<l;a++)u[a]=Md;return t.index++,u}function ot(l,t){return typeof t=="function"?t(l):t}function xe(l){var t=P();return Jf(t,Y,l)}function Jf(l,t,u){var a=l.queue;if(a===null)throw Error(S(311));a.lastRenderedReducer=u;var e=l.baseQueue,n=a.pending;if(n!==null){if(e!==null){var c=e.next;e.next=n.next,n.next=c}t.baseQueue=e=n,a.pending=null}if(n=l.baseState,e===null)l.memoizedState=n;else{t=e.next;var f=c=null,i=null,s=t,m=!1;do{var b=s.lane&-536870913;if(b!==s.lane?(H&b)===b:(jt&b)===b){var h=s.revertLane;if(h===0)i!==null&&(i=i.next={lane:0,revertLane:0,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null}),b===Wu&&(m=!0);else if((jt&h)===h){s=s.next,h===Wu&&(m=!0);continue}else b={lane:0,revertLane:s.revertLane,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null},i===null?(f=i=b,c=n):i=i.next=b,_.lanes|=h,Lt|=h;b=s.action,iu&&u(n,b),n=s.hasEagerState?s.eagerState:u(n,b)}else h={lane:b,revertLane:s.revertLane,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null},i===null?(f=i=h,c=n):i=i.next=h,_.lanes|=b,Lt|=b;s=s.next}while(s!==null&&s!==t);if(i===null?c=n:i.next=f,!Dl(n,l.memoizedState)&&(nl=!0,m&&(u=Zu,u!==null)))throw u;l.memoizedState=n,l.baseState=c,l.baseQueue=i,a.lastRenderedState=n}return e===null&&(a.lanes=0),[l.memoizedState,a.dispatch]}function sc(l){var t=P(),u=t.queue;if(u===null)throw Error(S(311));u.lastRenderedReducer=l;var a=u.dispatch,e=u.pending,n=t.memoizedState;if(e!==null){u.pending=null;var c=e=e.next;do n=l(n,c.action),c=c.next;while(c!==e);Dl(n,t.memoizedState)||(nl=!0),t.memoizedState=n,t.baseQueue===null&&(t.baseState=n),u.lastRenderedState=n}return[n,a]}function fs(l,t,u){var a=_,e=P(),n=q;if(n){if(u===void 0)throw Error(S(407));u=u()}else u=t();var c=!Dl((Y||e).memoizedState,u);if(c&&(e.memoizedState=u,nl=!0),e=e.queue,wf(vs.bind(null,a,e,l),[l]),e.getSnapshot!==t||c||F!==null&&F.memoizedState.tag&1){if(a.flags|=2048,$u(9,ss.bind(null,a,e,u,t),{destroy:void 0},null),Q===null)throw Error(S(349));n||jt&60||is(a,t,u)}return u}function is(l,t,u){l.flags|=16384,l={getSnapshot:t,value:u},t=_.updateQueue,t===null?(t=Rn(),_.updateQueue=t,t.stores=[l]):(u=t.stores,u===null?t.stores=[l]:u.push(l))}function ss(l,t,u,a){t.value=u,t.getSnapshot=a,ds(t)&&ys(l)}function vs(l,t,u){return u(function(){ds(t)&&ys(l)})}function ds(l){var t=l.getSnapshot;l=l.value;try{var u=t();return!Dl(l,u)}catch{return!0}}function ys(l){var t=xt(l,2);t!==null&&gl(t,l,2)}function wc(l){var t=Sl();if(typeof l=="function"){var u=l;if(l=u(),iu){Nt(!0);try{u()}finally{Nt(!1)}}}return t.memoizedState=t.baseState=l,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:l},t}function hs(l,t,u,a){return l.baseState=u,Jf(l,Y,typeof a=="function"?a:ot)}function Ly(l,t,u,a,e){if(qn(l))throw Error(S(485));if(l=t.action,l!==null){var n={payload:e,action:l,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(c){n.listeners.push(c)}};O.T!==null?u(!0):n.isTransition=!1,a(n),u=t.pending,u===null?(n.next=t.pending=n,ms(t,n)):(n.next=u.next,t.pending=u.next=n)}}function ms(l,t){var u=t.action,a=t.payload,e=l.state;if(t.isTransition){var n=O.T,c={};O.T=c;try{var f=u(e,a),i=O.S;i!==null&&i(c,f),O0(l,t,f)}catch(s){Wc(l,t,s)}finally{O.T=n}}else try{n=u(e,a),O0(l,t,n)}catch(s){Wc(l,t,s)}}function O0(l,t,u){u!==null&&typeof u=="object"&&typeof u.then=="function"?u.then(function(a){M0(l,t,a)},function(a){return Wc(l,t,a)}):M0(l,t,u)}function M0(l,t,u){t.status="fulfilled",t.value=u,os(t),l.state=u,t=l.pending,t!==null&&(u=t.next,u===t?l.pending=null:(u=u.next,t.next=u,ms(l,u)))}function Wc(l,t,u){var a=l.pending;if(l.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=u,os(t),t=t.next;while(t!==a)}l.action=null}function os(l){l=l.listeners;for(var t=0;t<l.length;t++)(0,l[t])()}function gs(l,t){return t}function Ss(l,t){if(q){var u=Q.formState;if(u!==null){l:{var a=_;if(q){if(il){t:{for(var e=il,n=wl;e.nodeType!==8;){if(!n){e=null;break t}if(e=Ll(e.nextSibling),e===null){e=null;break t}}n=e.data,e=n==="F!"||n==="F"?e:null}if(e){il=Ll(e.nextSibling),a=e.data==="F!";break l}}cu(a)}a=!1}a&&(t=u[0])}}return u=Sl(),u.memoizedState=u.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:gs,lastRenderedState:t},u.queue=a,u=Ys.bind(null,_,a),a.dispatch=u,a=wc(!1),n=Ff.bind(null,_,!1,a.queue),a=Sl(),e={state:t,dispatch:null,action:l,pending:null},a.queue=e,u=Ly.bind(null,_,e,n,u),e.dispatch=u,a.memoizedState=l,[t,u,!1]}function bs(l){var t=P();return Es(t,Y,l)}function Es(l,t,u){t=Jf(l,t,gs)[0],l=xe(ot)[0],t=typeof t=="object"&&t!==null&&typeof t.then=="function"?ne(t):t;var a=P(),e=a.queue,n=e.dispatch;return u!==a.memoizedState&&(_.flags|=2048,$u(9,Ky.bind(null,e,u),{destroy:void 0},null)),[t,n,l]}function Ky(l,t){l.action=t}function rs(l){var t=P(),u=Y;if(u!==null)return Es(t,u,l);P(),t=t.memoizedState,u=P();var a=u.queue.dispatch;return u.memoizedState=l,[t,a,!1]}function $u(l,t,u,a){return l={tag:l,create:t,inst:u,deps:a,next:null},t=_.updateQueue,t===null&&(t=Rn(),_.updateQueue=t),u=t.lastEffect,u===null?t.lastEffect=l.next=l:(a=u.next,u.next=l,l.next=a,t.lastEffect=l),l}function Ts(){return P().memoizedState}function je(l,t,u,a){var e=Sl();_.flags|=l,e.memoizedState=$u(1|t,u,{destroy:void 0},a===void 0?null:a)}function Nn(l,t,u,a){var e=P();a=a===void 0?null:a;var n=e.memoizedState.inst;Y!==null&&a!==null&&Zf(a,Y.memoizedState.deps)?e.memoizedState=$u(t,u,n,a):(_.flags|=l,e.memoizedState=$u(1|t,u,n,a))}function _0(l,t){je(8390656,8,l,t)}function wf(l,t){Nn(2048,8,l,t)}function zs(l,t){return Nn(4,2,l,t)}function As(l,t){return Nn(4,4,l,t)}function Os(l,t){if(typeof t=="function"){l=l();var u=t(l);return function(){typeof u=="function"?u():t(null)}}if(t!=null)return l=l(),t.current=l,function(){t.current=null}}function Ms(l,t,u){u=u!=null?u.concat([l]):null,Nn(4,4,Os.bind(null,t,l),u)}function Wf(){}function _s(l,t){var u=P();t=t===void 0?null:t;var a=u.memoizedState;return t!==null&&Zf(t,a[1])?a[0]:(u.memoizedState=[l,t],l)}function Ds(l,t){var u=P();t=t===void 0?null:t;var a=u.memoizedState;if(t!==null&&Zf(t,a[1]))return a[0];if(a=l(),iu){Nt(!0);try{l()}finally{Nt(!1)}}return u.memoizedState=[a,t],a}function $f(l,t,u){return u===void 0||jt&1073741824?l.memoizedState=t:(l.memoizedState=u,l=ov(),_.lanes|=l,Lt|=l,u)}function Us(l,t,u,a){return Dl(u,t)?u:wu.current!==null?(l=$f(l,u,a),Dl(l,t)||(nl=!0),l):jt&42?(l=ov(),_.lanes|=l,Lt|=l,t):(nl=!0,l.memoizedState=u)}function Rs(l,t,u,a,e){var n=C.p;C.p=n!==0&&8>n?n:8;var c=O.T,f={};O.T=f,Ff(l,!1,t,u);try{var i=e(),s=O.S;if(s!==null&&s(f,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var m=xy(i,a);Ra(l,t,m,_l(l))}else Ra(l,t,a,_l(l))}catch(b){Ra(l,t,{then:function(){},status:"rejected",reason:b},_l())}finally{C.p=n,O.T=c}}function Jy(){}function $c(l,t,u,a){if(l.tag!==5)throw Error(S(476));var e=Hs(l).queue;Rs(l,e,t,lu,u===null?Jy:function(){return Ns(l),u(a)})}function Hs(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:lu,baseState:lu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:lu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Ns(l){var t=Hs(l).next.queue;Ra(l,t,{},_l())}function kf(){return yl($a)}function qs(){return P().memoizedState}function ps(){return P().memoizedState}function wy(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=_l();l=Yt(u);var a=Bt(t,l,u);a!==null&&(gl(a,t,u),Na(a,t,u)),t={cache:Qf()},l.payload=t;return}t=t.return}}function Wy(l,t,u){var a=_l();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},qn(l)?Bs(t,u):(u=Yf(l,t,u,a),u!==null&&(gl(u,l,a),Gs(u,t,a)))}function Ys(l,t,u){var a=_l();Ra(l,t,u,a)}function Ra(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(qn(l))Bs(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,f=n(c,u);if(e.hasEagerState=!0,e.eagerState=f,Dl(f,c))return Un(l,t,e,0),Q===null&&Dn(),!1}catch{}finally{}if(u=Yf(l,t,e,a),u!==null)return gl(u,l,a),Gs(u,t,a),!0}return!1}function Ff(l,t,u,a){if(a={lane:2,revertLane:fi(),action:a,hasEagerState:!1,eagerState:null,next:null},qn(l)){if(t)throw Error(S(479))}else t=Yf(l,u,a,2),t!==null&&gl(t,l,2)}function qn(l){var t=l.alternate;return l===_||t!==null&&t===_}function Bs(l,t){xu=nn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function Gs(l,t,u){if(u&4194176){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,O1(l,u)}}var Pl={readContext:yl,use:Hn,useCallback:W,useContext:W,useEffect:W,useImperativeHandle:W,useLayoutEffect:W,useInsertionEffect:W,useMemo:W,useReducer:W,useRef:W,useState:W,useDebugValue:W,useDeferredValue:W,useTransition:W,useSyncExternalStore:W,useId:W};Pl.useCacheRefresh=W;Pl.useMemoCache=W;Pl.useHostTransitionStatus=W;Pl.useFormState=W;Pl.useActionState=W;Pl.useOptimistic=W;var mu={readContext:yl,use:Hn,useCallback:function(l,t){return Sl().memoizedState=[l,t===void 0?null:t],l},useContext:yl,useEffect:_0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,je(4194308,4,Os.bind(null,t,l),u)},useLayoutEffect:function(l,t){return je(4194308,4,l,t)},useInsertionEffect:function(l,t){je(4,2,l,t)},useMemo:function(l,t){var u=Sl();t=t===void 0?null:t;var a=l();if(iu){Nt(!0);try{l()}finally{Nt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Sl();if(u!==void 0){var e=u(t);if(iu){Nt(!0);try{u(t)}finally{Nt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=Wy.bind(null,_,l),[a.memoizedState,l]},useRef:function(l){var t=Sl();return l={current:l},t.memoizedState=l},useState:function(l){l=wc(l);var t=l.queue,u=Ys.bind(null,_,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:Wf,useDeferredValue:function(l,t){var u=Sl();return $f(u,l,t)},useTransition:function(){var l=wc(!1);return l=Rs.bind(null,_,l.queue,!0,!1),Sl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=_,e=Sl();if(q){if(u===void 0)throw Error(S(407));u=u()}else{if(u=t(),Q===null)throw Error(S(349));H&60||is(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,_0(vs.bind(null,a,n,l),[l]),a.flags|=2048,$u(9,ss.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Sl(),t=Q.identifierPrefix;if(q){var u=vt,a=st;u=(a&~(1<<32-Ml(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=cn++,0<u&&(t+="H"+u.toString(32)),t+=":"}else u=jy++,t=":"+t+"r"+u.toString(32)+":";return l.memoizedState=t},useCacheRefresh:function(){return Sl().memoizedState=wy.bind(null,_)}};mu.useMemoCache=Kf;mu.useHostTransitionStatus=kf;mu.useFormState=Ss;mu.useActionState=Ss;mu.useOptimistic=function(l){var t=Sl();t.memoizedState=t.baseState=l;var u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=u,t=Ff.bind(null,_,!0,u),u.dispatch=t,[l,t]};var Jt={readContext:yl,use:Hn,useCallback:_s,useContext:yl,useEffect:wf,useImperativeHandle:Ms,useInsertionEffect:zs,useLayoutEffect:As,useMemo:Ds,useReducer:xe,useRef:Ts,useState:function(){return xe(ot)},useDebugValue:Wf,useDeferredValue:function(l,t){var u=P();return Us(u,Y.memoizedState,l,t)},useTransition:function(){var l=xe(ot)[0],t=P().memoizedState;return[typeof l=="boolean"?l:ne(l),t]},useSyncExternalStore:fs,useId:qs};Jt.useCacheRefresh=ps;Jt.useMemoCache=Kf;Jt.useHostTransitionStatus=kf;Jt.useFormState=bs;Jt.useActionState=bs;Jt.useOptimistic=function(l,t){var u=P();return hs(u,Y,l,t)};var ou={readContext:yl,use:Hn,useCallback:_s,useContext:yl,useEffect:wf,useImperativeHandle:Ms,useInsertionEffect:zs,useLayoutEffect:As,useMemo:Ds,useReducer:sc,useRef:Ts,useState:function(){return sc(ot)},useDebugValue:Wf,useDeferredValue:function(l,t){var u=P();return Y===null?$f(u,l,t):Us(u,Y.memoizedState,l,t)},useTransition:function(){var l=sc(ot)[0],t=P().memoizedState;return[typeof l=="boolean"?l:ne(l),t]},useSyncExternalStore:fs,useId:qs};ou.useCacheRefresh=ps;ou.useMemoCache=Kf;ou.useHostTransitionStatus=kf;ou.useFormState=rs;ou.useActionState=rs;ou.useOptimistic=function(l,t){var u=P();return Y!==null?hs(u,Y,l,t):(u.baseState=l,[l,u.queue.dispatch])};function vc(l,t,u,a){t=l.memoizedState,u=u(a,t),u=u==null?t:Z({},t,u),l.memoizedState=u,l.lanes===0&&(l.updateQueue.baseState=u)}var kc={isMounted:function(l){return(l=l._reactInternals)?Iu(l)===l:!1},enqueueSetState:function(l,t,u){l=l._reactInternals;var a=_l(),e=Yt(a);e.payload=t,u!=null&&(e.callback=u),t=Bt(l,e,a),t!==null&&(gl(t,l,a),Na(t,l,a))},enqueueReplaceState:function(l,t,u){l=l._reactInternals;var a=_l(),e=Yt(a);e.tag=1,e.payload=t,u!=null&&(e.callback=u),t=Bt(l,e,a),t!==null&&(gl(t,l,a),Na(t,l,a))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var u=_l(),a=Yt(u);a.tag=2,t!=null&&(a.callback=t),t=Bt(l,a,u),t!==null&&(gl(t,l,u),Na(t,l,u))}};function D0(l,t,u,a,e,n,c){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(a,n,c):t.prototype&&t.prototype.isPureReactComponent?!ja(u,a)||!ja(e,n):!0}function U0(l,t,u,a){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(u,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(u,a),t.state!==l&&kc.enqueueReplaceState(t,t.state,null)}function su(l,t){var u=t;if("ref"in t){u={};for(var a in t)a!=="ref"&&(u[a]=t[a])}if(l=l.defaultProps){u===t&&(u=Z({},u));for(var e in l)u[e]===void 0&&(u[e]=l[e])}return u}var fn=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function Xs(l){fn(l)}function Qs(l){console.error(l)}function Cs(l){fn(l)}function sn(l,t){try{var u=l.onUncaughtError;u(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function R0(l,t,u){try{var a=l.onCaughtError;a(u.value,{componentStack:u.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Fc(l,t,u){return u=Yt(u),u.tag=3,u.payload={element:null},u.callback=function(){sn(l,t)},u}function Zs(l){return l=Yt(l),l.tag=3,l}function xs(l,t,u,a){var e=u.type.getDerivedStateFromError;if(typeof e=="function"){var n=a.value;l.payload=function(){return e(n)},l.callback=function(){R0(t,u,a)}}var c=u.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(l.callback=function(){R0(t,u,a),typeof e!="function"&&(Xt===null?Xt=new Set([this]):Xt.add(this));var f=a.stack;this.componentDidCatch(a.value,{componentStack:f!==null?f:""})})}function $y(l,t,u,a,e){if(u.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=u.alternate,t!==null&&ce(t,u,e,!0),u=Cl.current,u!==null){switch(u.tag){case 13:return Fl===null?hf():u.alternate===null&&w===0&&(w=3),u.flags&=-257,u.flags|=65536,u.lanes=e,a===Lc?u.flags|=16384:(t=u.updateQueue,t===null?u.updateQueue=new Set([a]):t.add(a),Ac(l,a,e)),!1;case 22:return u.flags|=65536,a===Lc?u.flags|=16384:(t=u.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},u.updateQueue=t):(u=t.retryQueue,u===null?t.retryQueue=new Set([a]):u.add(a)),Ac(l,a,e)),!1}throw Error(S(435,u.tag))}return Ac(l,a,e),hf(),!1}if(q)return t=Cl.current,t!==null?(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=e,a!==Vc&&(l=Error(S(422),{cause:a}),Va(Gl(l,u)))):(a!==Vc&&(t=Error(S(423),{cause:a}),Va(Gl(t,u))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,a=Gl(a,u),e=Fc(l.stateNode,a,e),gc(l,e),w!==4&&(w=2)),!1;var n=Error(S(520),{cause:a});if(n=Gl(n,u),Ba===null?Ba=[n]:Ba.push(n),w!==4&&(w=2),t===null)return!0;a=Gl(a,u),u=t;do{switch(u.tag){case 3:return u.flags|=65536,l=e&-e,u.lanes|=l,l=Fc(u.stateNode,a,l),gc(u,l),!1;case 1:if(t=u.type,n=u.stateNode,(u.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(Xt===null||!Xt.has(n))))return u.flags|=65536,e&=-e,u.lanes|=e,e=Zs(e),xs(e,l,u,a),gc(u,e),!1}u=u.return}while(u!==null);return!1}var js=Error(S(461)),nl=!1;function fl(l,t,u,a){t.child=l===null?us(t,null,u,a):fu(t,l.child,u,a)}function H0(l,t,u,a,e){u=u.render;var n=t.ref;if("ref"in a){var c={};for(var f in a)f!=="ref"&&(c[f]=a[f])}else c=a;return vu(t),a=xf(l,t,u,c,n,e),f=jf(),l!==null&&!nl?(Vf(l,t,e),gt(l,t,e)):(q&&f&&Bf(t),t.flags|=1,fl(l,t,a,e),t.child)}function N0(l,t,u,a,e){if(l===null){var n=u.type;return typeof n=="function"&&!ui(n)&&n.defaultProps===void 0&&u.compare===null?(t.tag=15,t.type=n,Vs(l,t,n,a,e)):(l=Le(u.type,null,a,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!Pf(l,e)){var c=n.memoizedProps;if(u=u.compare,u=u!==null?u:ja,u(c,a)&&l.ref===t.ref)return gt(l,t,e)}return t.flags|=1,l=Gt(n,a),l.ref=t.ref,l.return=t,t.child=l}function Vs(l,t,u,a,e){if(l!==null){var n=l.memoizedProps;if(ja(n,a)&&l.ref===t.ref)if(nl=!1,t.pendingProps=a=n,Pf(l,e))l.flags&131072&&(nl=!0);else return t.lanes=l.lanes,gt(l,t,e)}return Pc(l,t,u,a,e)}function Ls(l,t,u){var a=t.pendingProps,e=a.children,n=(t.stateNode._pendingVisibility&2)!==0,c=l!==null?l.memoizedState:null;if(Ha(l,t),a.mode==="hidden"||n){if(t.flags&128){if(a=c!==null?c.baseLanes|u:u,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~a}else t.childLanes=0,t.child=null;return q0(l,t,a,u)}if(u&536870912)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Ze(t,c!==null?c.cachePool:null),c!==null?T0(t,c):Kc(),as(t);else return t.lanes=t.childLanes=536870912,q0(l,t,c!==null?c.baseLanes|u:u,u)}else c!==null?(Ze(t,c.cachePool),T0(t,c),Ut(t),t.memoizedState=null):(l!==null&&Ze(t,null),Kc(),Ut(t));return fl(l,t,e,u),t.child}function q0(l,t,u,a){var e=Cf();return e=e===null?null:{parent:I._currentValue,pool:e},t.memoizedState={baseLanes:u,cachePool:e},l!==null&&Ze(t,null),Kc(),as(t),l!==null&&ce(l,t,a,!0),null}function Ha(l,t){var u=t.ref;if(u===null)l!==null&&l.ref!==null&&(t.flags|=2097664);else{if(typeof u!="function"&&typeof u!="object")throw Error(S(284));(l===null||l.ref!==u)&&(t.flags|=2097664)}}function Pc(l,t,u,a,e){return vu(t),u=xf(l,t,u,a,void 0,e),a=jf(),l!==null&&!nl?(Vf(l,t,e),gt(l,t,e)):(q&&a&&Bf(t),t.flags|=1,fl(l,t,u,e),t.child)}function p0(l,t,u,a,e,n){return vu(t),t.updateQueue=null,u=cs(t,a,u,e),ns(l),a=jf(),l!==null&&!nl?(Vf(l,t,n),gt(l,t,n)):(q&&a&&Bf(t),t.flags|=1,fl(l,t,u,n),t.child)}function Y0(l,t,u,a,e){if(vu(t),t.stateNode===null){var n=qu,c=u.contextType;typeof c=="object"&&c!==null&&(n=yl(c)),n=new u(a,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=kc,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=a,n.state=t.memoizedState,n.refs={},If(t),c=u.contextType,n.context=typeof c=="object"&&c!==null?yl(c):qu,n.state=t.memoizedState,c=u.getDerivedStateFromProps,typeof c=="function"&&(vc(t,u,c,a),n.state=t.memoizedState),typeof u.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&kc.enqueueReplaceState(n,n.state,null),pa(t,a,n,e),qa(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(l===null){n=t.stateNode;var f=t.memoizedProps,i=su(u,f);n.props=i;var s=n.context,m=u.contextType;c=qu,typeof m=="object"&&m!==null&&(c=yl(m));var b=u.getDerivedStateFromProps;m=typeof b=="function"||typeof n.getSnapshotBeforeUpdate=="function",f=t.pendingProps!==f,m||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f||s!==c)&&U0(t,n,a,c),_t=!1;var h=t.memoizedState;n.state=h,pa(t,a,n,e),qa(),s=t.memoizedState,f||h!==s||_t?(typeof b=="function"&&(vc(t,u,b,a),s=t.memoizedState),(i=_t||D0(t,u,i,a,h,s,c))?(m||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=s),n.props=a,n.state=s,n.context=c,a=i):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{n=t.stateNode,ef(l,t),c=t.memoizedProps,m=su(u,c),n.props=m,b=t.pendingProps,h=n.context,s=u.contextType,i=qu,typeof s=="object"&&s!==null&&(i=yl(s)),f=u.getDerivedStateFromProps,(s=typeof f=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==b||h!==i)&&U0(t,n,a,i),_t=!1,h=t.memoizedState,n.state=h,pa(t,a,n,e),qa();var o=t.memoizedState;c!==b||h!==o||_t||l!==null&&l.dependencies!==null&&vn(l.dependencies)?(typeof f=="function"&&(vc(t,u,f,a),o=t.memoizedState),(m=_t||D0(t,u,m,a,h,o,i)||l!==null&&l.dependencies!==null&&vn(l.dependencies))?(s||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,o,i),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,o,i)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=o),n.props=a,n.state=o,n.context=i,a=m):(typeof n.componentDidUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),a=!1)}return n=a,Ha(l,t),a=(t.flags&128)!==0,n||a?(n=t.stateNode,u=a&&typeof u.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&a?(t.child=fu(t,l.child,null,e),t.child=fu(t,null,u,e)):fl(l,t,u,e),t.memoizedState=n.state,l=t.child):l=gt(l,t,e),l}function B0(l,t,u,a){return ae(),t.flags|=256,fl(l,t,u,a),t.child}var dc={dehydrated:null,treeContext:null,retryLane:0};function yc(l){return{baseLanes:l,cachePool:es()}}function hc(l,t,u){return l=l!==null?l.childLanes&~u:0,t&&(l|=Ql),l}function Ks(l,t,u){var a=t.pendingProps,e=!1,n=(t.flags&128)!==0,c;if((c=n)||(c=l!==null&&l.memoizedState===null?!1:(ll.current&2)!==0),c&&(e=!0,t.flags&=-129),c=(t.flags&32)!==0,t.flags&=-33,l===null){if(q){if(e?Dt(t):Ut(t),q){var f=il,i;if(i=f){l:{for(i=f,f=wl;i.nodeType!==8;){if(!f){f=null;break l}if(i=Ll(i.nextSibling),i===null){f=null;break l}}f=i}f!==null?(t.memoizedState={dehydrated:f,treeContext:tu!==null?{id:st,overflow:vt}:null,retryLane:536870912},i=Xl(18,null,null,0),i.stateNode=f,i.return=t,t.child=i,ol=t,il=null,i=!0):i=!1}i||cu(t)}if(f=t.memoizedState,f!==null&&(f=f.dehydrated,f!==null))return f.data==="$!"?t.lanes=16:t.lanes=536870912,null;dt(t)}return f=a.children,a=a.fallback,e?(Ut(t),e=t.mode,f=lf({mode:"hidden",children:f},e),a=au(a,e,u,null),f.return=t,a.return=t,f.sibling=a,t.child=f,e=t.child,e.memoizedState=yc(u),e.childLanes=hc(l,c,u),t.memoizedState=dc,a):(Dt(t),Ic(t,f))}if(i=l.memoizedState,i!==null&&(f=i.dehydrated,f!==null)){if(n)t.flags&256?(Dt(t),t.flags&=-257,t=mc(l,t,u)):t.memoizedState!==null?(Ut(t),t.child=l.child,t.flags|=128,t=null):(Ut(t),e=a.fallback,f=t.mode,a=lf({mode:"visible",children:a.children},f),e=au(e,f,u,null),e.flags|=2,a.return=t,e.return=t,a.sibling=e,t.child=a,fu(t,l.child,null,u),a=t.child,a.memoizedState=yc(u),a.childLanes=hc(l,c,u),t.memoizedState=dc,t=e);else if(Dt(t),f.data==="$!"){if(c=f.nextSibling&&f.nextSibling.dataset,c)var s=c.dgst;c=s,a=Error(S(419)),a.stack="",a.digest=c,Va({value:a,source:null,stack:null}),t=mc(l,t,u)}else if(nl||ce(l,t,u,!1),c=(u&l.childLanes)!==0,nl||c){if(c=Q,c!==null){if(a=u&-u,a&42)a=1;else switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:a=64;break;case 268435456:a=134217728;break;default:a=0}if(a=a&(c.suspendedLanes|u)?0:a,a!==0&&a!==i.retryLane)throw i.retryLane=a,xt(l,a),gl(c,l,a),js}f.data==="$?"||hf(),t=mc(l,t,u)}else f.data==="$?"?(t.flags|=128,t.child=l.child,t=vh.bind(null,l),f._reactRetry=t,t=null):(l=i.treeContext,il=Ll(f.nextSibling),ol=t,q=!0,Vl=null,wl=!1,l!==null&&(pl[Yl++]=st,pl[Yl++]=vt,pl[Yl++]=tu,st=l.id,vt=l.overflow,tu=t),t=Ic(t,a.children),t.flags|=4096);return t}return e?(Ut(t),e=a.fallback,f=t.mode,i=l.child,s=i.sibling,a=Gt(i,{mode:"hidden",children:a.children}),a.subtreeFlags=i.subtreeFlags&31457280,s!==null?e=Gt(s,e):(e=au(e,f,u,null),e.flags|=2),e.return=t,a.return=t,a.sibling=e,t.child=a,a=e,e=t.child,f=l.child.memoizedState,f===null?f=yc(u):(i=f.cachePool,i!==null?(s=I._currentValue,i=i.parent!==s?{parent:s,pool:s}:i):i=es(),f={baseLanes:f.baseLanes|u,cachePool:i}),e.memoizedState=f,e.childLanes=hc(l,c,u),t.memoizedState=dc,a):(Dt(t),u=l.child,l=u.sibling,u=Gt(u,{mode:"visible",children:a.children}),u.return=t,u.sibling=null,l!==null&&(c=t.deletions,c===null?(t.deletions=[l],t.flags|=16):c.push(l)),t.child=u,t.memoizedState=null,u)}function Ic(l,t){return t=lf({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function lf(l,t){return hv(l,t,0,null)}function mc(l,t,u){return fu(t,l.child,null,u),l=Ic(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function G0(l,t,u){l.lanes|=t;var a=l.alternate;a!==null&&(a.lanes|=t),uf(l.return,t,u)}function oc(l,t,u,a,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:u,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=u,n.tailMode=e)}function Js(l,t,u){var a=t.pendingProps,e=a.revealOrder,n=a.tail;if(fl(l,t,a.children,u),a=ll.current,a&2)a=a&1|2,t.flags|=128;else{if(l!==null&&l.flags&128)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&G0(l,u,t);else if(l.tag===19)G0(l,u,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}a&=1}switch(x(ll,a),e){case"forwards":for(u=t.child,e=null;u!==null;)l=u.alternate,l!==null&&en(l)===null&&(e=u),u=u.sibling;u=e,u===null?(e=t.child,t.child=null):(e=u.sibling,u.sibling=null),oc(t,!1,e,u,n);break;case"backwards":for(u=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&en(l)===null){t.child=e;break}l=e.sibling,e.sibling=u,u=e,e=l}oc(t,!0,u,null,n);break;case"together":oc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function gt(l,t,u){if(l!==null&&(t.dependencies=l.dependencies),Lt|=t.lanes,!(u&t.childLanes))if(l!==null){if(ce(l,t,u,!1),(u&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(S(153));if(t.child!==null){for(l=t.child,u=Gt(l,l.pendingProps),t.child=u,u.return=t;l.sibling!==null;)l=l.sibling,u=u.sibling=Gt(l,l.pendingProps),u.return=t;u.sibling=null}return t.child}function Pf(l,t){return l.lanes&t?!0:(l=l.dependencies,!!(l!==null&&vn(l)))}function ky(l,t,u){switch(t.tag){case 3:$e(t,t.stateNode.containerInfo),Rt(t,I,l.memoizedState.cache),ae();break;case 27:case 5:Yc(t);break;case 4:$e(t,t.stateNode.containerInfo);break;case 10:Rt(t,t.type,t.memoizedProps.value);break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Dt(t),t.flags|=128,null):u&t.child.childLanes?Ks(l,t,u):(Dt(t),l=gt(l,t,u),l!==null?l.sibling:null);Dt(t);break;case 19:var e=(l.flags&128)!==0;if(a=(u&t.childLanes)!==0,a||(ce(l,t,u,!1),a=(u&t.childLanes)!==0),e){if(a)return Js(l,t,u);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),x(ll,ll.current),a)break;return null;case 22:case 23:return t.lanes=0,Ls(l,t,u);case 24:Rt(t,I,l.memoizedState.cache)}return gt(l,t,u)}function ws(l,t,u){if(l!==null)if(l.memoizedProps!==t.pendingProps)nl=!0;else{if(!Pf(l,u)&&!(t.flags&128))return nl=!1,ky(l,t,u);nl=!!(l.flags&131072)}else nl=!1,q&&t.flags&1048576&&P1(t,un,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var a=t.elementType,e=a._init;if(a=e(a._payload),t.type=a,typeof a=="function")ui(a)?(l=su(a,l),t.tag=1,t=Y0(null,t,a,l,u)):(t.tag=0,t=Pc(null,t,a,l,u));else{if(a!=null){if(e=a.$$typeof,e===Af){t.tag=11,t=H0(null,t,a,l,u);break l}else if(e===Of){t.tag=14,t=N0(null,t,a,l,u);break l}}throw t=qc(a)||a,Error(S(306,t,""))}}return t;case 0:return Pc(l,t,t.type,t.pendingProps,u);case 1:return a=t.type,e=su(a,t.pendingProps),Y0(l,t,a,e,u);case 3:l:{if($e(t,t.stateNode.containerInfo),l===null)throw Error(S(387));var n=t.pendingProps;e=t.memoizedState,a=e.element,ef(l,t),pa(t,n,null,u);var c=t.memoizedState;if(n=c.cache,Rt(t,I,n),n!==e.cache&&af(t,[I],u,!0),qa(),n=c.element,e.isDehydrated)if(e={element:n,isDehydrated:!1,cache:c.cache},t.updateQueue.baseState=e,t.memoizedState=e,t.flags&256){t=B0(l,t,n,u);break l}else if(n!==a){a=Gl(Error(S(424)),t),Va(a),t=B0(l,t,n,u);break l}else for(il=Ll(t.stateNode.containerInfo.firstChild),ol=t,q=!0,Vl=null,wl=!0,u=us(t,null,n,u),t.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(ae(),n===a){t=gt(l,t,u);break l}fl(l,t,n,u)}t=t.child}return t;case 26:return Ha(l,t),l===null?(u=u1(t.type,null,t.pendingProps,null))?t.memoizedState=u:q||(u=t.type,l=t.pendingProps,a=Sn(pt.current).createElement(u),a[dl]=t,a[bl]=l,sl(a,u,l),el(a),t.stateNode=a):t.memoizedState=u1(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return Yc(t),l===null&&q&&(a=t.stateNode=Nv(t.type,t.pendingProps,pt.current),ol=t,wl=!0,il=Ll(a.firstChild)),a=t.pendingProps.children,l!==null||q?fl(l,t,a,u):t.child=fu(t,null,a,u),Ha(l,t),t.child;case 5:return l===null&&q&&((e=a=il)&&(a=Oh(a,t.type,t.pendingProps,wl),a!==null?(t.stateNode=a,ol=t,il=Ll(a.firstChild),wl=!1,e=!0):e=!1),e||cu(t)),Yc(t),e=t.type,n=t.pendingProps,c=l!==null?l.memoizedProps:null,a=n.children,bf(e,n)?a=null:c!==null&&bf(e,c)&&(t.flags|=32),t.memoizedState!==null&&(e=xf(l,t,Vy,null,null,u),$a._currentValue=e),Ha(l,t),fl(l,t,a,u),t.child;case 6:return l===null&&q&&((l=u=il)&&(u=Mh(u,t.pendingProps,wl),u!==null?(t.stateNode=u,ol=t,il=null,l=!0):l=!1),l||cu(t)),null;case 13:return Ks(l,t,u);case 4:return $e(t,t.stateNode.containerInfo),a=t.pendingProps,l===null?t.child=fu(t,null,a,u):fl(l,t,a,u),t.child;case 11:return H0(l,t,t.type,t.pendingProps,u);case 7:return fl(l,t,t.pendingProps,u),t.child;case 8:return fl(l,t,t.pendingProps.children,u),t.child;case 12:return fl(l,t,t.pendingProps.children,u),t.child;case 10:return a=t.pendingProps,Rt(t,t.type,a.value),fl(l,t,a.children,u),t.child;case 9:return e=t.type._context,a=t.pendingProps.children,vu(t),e=yl(e),a=a(e),t.flags|=1,fl(l,t,a,u),t.child;case 14:return N0(l,t,t.type,t.pendingProps,u);case 15:return Vs(l,t,t.type,t.pendingProps,u);case 19:return Js(l,t,u);case 22:return Ls(l,t,u);case 24:return vu(t),a=yl(I),l===null?(e=Cf(),e===null&&(e=Q,n=Qf(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=u),e=n),t.memoizedState={parent:a,cache:e},If(t),Rt(t,I,e)):(l.lanes&u&&(ef(l,t),pa(t,null,null,u),qa()),e=l.memoizedState,n=t.memoizedState,e.parent!==a?(e={parent:a,cache:a},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Rt(t,I,a)):(a=n.cache,Rt(t,I,a),a!==e.cache&&af(t,[I],u,!0))),fl(l,t,t.pendingProps.children,u),t.child;case 29:throw t.pendingProps}throw Error(S(156,t.tag))}var tf=Il(null),gu=null,yt=null;function Rt(l,t,u){x(tf,t._currentValue),t._currentValue=u}function ht(l){l._currentValue=tf.current,cl(tf)}function uf(l,t,u){for(;l!==null;){var a=l.alternate;if((l.childLanes&t)!==t?(l.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),l===u)break;l=l.return}}function af(l,t,u,a){var e=l.child;for(e!==null&&(e.return=l);e!==null;){var n=e.dependencies;if(n!==null){var c=e.child;n=n.firstContext;l:for(;n!==null;){var f=n;n=e;for(var i=0;i<t.length;i++)if(f.context===t[i]){n.lanes|=u,f=n.alternate,f!==null&&(f.lanes|=u),uf(n.return,u,l),a||(c=null);break l}n=f.next}}else if(e.tag===18){if(c=e.return,c===null)throw Error(S(341));c.lanes|=u,n=c.alternate,n!==null&&(n.lanes|=u),uf(c,u,l),c=null}else c=e.child;if(c!==null)c.return=e;else for(c=e;c!==null;){if(c===l){c=null;break}if(e=c.sibling,e!==null){e.return=c.return,c=e;break}c=c.return}e=c}}function ce(l,t,u,a){l=null;for(var e=t,n=!1;e!==null;){if(!n){if(e.flags&524288)n=!0;else if(e.flags&262144)break}if(e.tag===10){var c=e.alternate;if(c===null)throw Error(S(387));if(c=c.memoizedProps,c!==null){var f=e.type;Dl(e.pendingProps.value,c.value)||(l!==null?l.push(f):l=[f])}}else if(e===We.current){if(c=e.alternate,c===null)throw Error(S(387));c.memoizedState.memoizedState!==e.memoizedState.memoizedState&&(l!==null?l.push($a):l=[$a])}e=e.return}l!==null&&af(t,l,u,a),t.flags|=262144}function vn(l){for(l=l.firstContext;l!==null;){if(!Dl(l.context._currentValue,l.memoizedValue))return!0;l=l.next}return!1}function vu(l){gu=l,yt=null,l=l.dependencies,l!==null&&(l.firstContext=null)}function yl(l){return Ws(gu,l)}function Ue(l,t){return gu===null&&vu(l),Ws(l,t)}function Ws(l,t){var u=t._currentValue;if(t={context:t,memoizedValue:u,next:null},yt===null){if(l===null)throw Error(S(308));yt=t,l.dependencies={lanes:0,firstContext:t},l.flags|=524288}else yt=yt.next=t;return u}var _t=!1;function If(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ef(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function Yt(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function Bt(l,t,u){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,L&2){var e=a.pending;return e===null?t.next=t:(t.next=e.next,e.next=t),a.pending=t,t=ln(l),F1(l,null,u),t}return Un(l,a,t,u),ln(l)}function Na(l,t,u){if(t=t.updateQueue,t!==null&&(t=t.shared,(u&4194176)!==0)){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,O1(l,u)}}function gc(l,t){var u=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,u===a)){var e=null,n=null;if(u=u.firstBaseUpdate,u!==null){do{var c={lane:u.lane,tag:u.tag,payload:u.payload,callback:null,next:null};n===null?e=n=c:n=n.next=c,u=u.next}while(u!==null);n===null?e=n=t:n=n.next=t}else e=n=t;u={baseState:a.baseState,firstBaseUpdate:e,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},l.updateQueue=u;return}l=u.lastBaseUpdate,l===null?u.firstBaseUpdate=t:l.next=t,u.lastBaseUpdate=t}var nf=!1;function qa(){if(nf){var l=Zu;if(l!==null)throw l}}function pa(l,t,u,a){nf=!1;var e=l.updateQueue;_t=!1;var n=e.firstBaseUpdate,c=e.lastBaseUpdate,f=e.shared.pending;if(f!==null){e.shared.pending=null;var i=f,s=i.next;i.next=null,c===null?n=s:c.next=s,c=i;var m=l.alternate;m!==null&&(m=m.updateQueue,f=m.lastBaseUpdate,f!==c&&(f===null?m.firstBaseUpdate=s:f.next=s,m.lastBaseUpdate=i))}if(n!==null){var b=e.baseState;c=0,m=s=i=null,f=n;do{var h=f.lane&-536870913,o=h!==f.lane;if(o?(H&h)===h:(a&h)===h){h!==0&&h===Wu&&(nf=!0),m!==null&&(m=m.next={lane:0,tag:f.tag,payload:f.payload,callback:null,next:null});l:{var r=l,A=f;h=t;var K=u;switch(A.tag){case 1:if(r=A.payload,typeof r=="function"){b=r.call(K,b,h);break l}b=r;break l;case 3:r.flags=r.flags&-65537|128;case 0:if(r=A.payload,h=typeof r=="function"?r.call(K,b,h):r,h==null)break l;b=Z({},b,h);break l;case 2:_t=!0}}h=f.callback,h!==null&&(l.flags|=64,o&&(l.flags|=8192),o=e.callbacks,o===null?e.callbacks=[h]:o.push(h))}else o={lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},m===null?(s=m=o,i=b):m=m.next=o,c|=h;if(f=f.next,f===null){if(f=e.shared.pending,f===null)break;o=f,f=o.next,o.next=null,e.lastBaseUpdate=o,e.shared.pending=null}}while(!0);m===null&&(i=b),e.baseState=i,e.firstBaseUpdate=s,e.lastBaseUpdate=m,n===null&&(e.shared.lanes=0),Lt|=c,l.lanes=c,l.memoizedState=b}}function $s(l,t){if(typeof l!="function")throw Error(S(191,l));l.call(t)}function ks(l,t){var u=l.callbacks;if(u!==null)for(l.callbacks=null,l=0;l<u.length;l++)$s(u[l],t)}function fe(l,t){try{var u=t.updateQueue,a=u!==null?u.lastEffect:null;if(a!==null){var e=a.next;u=e;do{if((u.tag&l)===l){a=void 0;var n=u.create,c=u.inst;a=n(),c.destroy=a}u=u.next}while(u!==e)}}catch(f){G(t,t.return,f)}}function Vt(l,t,u){try{var a=t.updateQueue,e=a!==null?a.lastEffect:null;if(e!==null){var n=e.next;a=n;do{if((a.tag&l)===l){var c=a.inst,f=c.destroy;if(f!==void 0){c.destroy=void 0,e=t;var i=u;try{f()}catch(s){G(e,i,s)}}}a=a.next}while(a!==n)}}catch(s){G(t,t.return,s)}}function Fs(l){var t=l.updateQueue;if(t!==null){var u=l.stateNode;try{ks(t,u)}catch(a){G(l,l.return,a)}}}function Ps(l,t,u){u.props=su(l.type,l.memoizedProps),u.state=l.memoizedState;try{u.componentWillUnmount()}catch(a){G(l,t,a)}}function It(l,t){try{var u=l.ref;if(u!==null){var a=l.stateNode;switch(l.tag){case 26:case 27:case 5:var e=a;break;default:e=a}typeof u=="function"?l.refCleanup=u(e):u.current=e}}catch(n){G(l,t,n)}}function Al(l,t){var u=l.ref,a=l.refCleanup;if(u!==null)if(typeof a=="function")try{a()}catch(e){G(l,t,e)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof u=="function")try{u(null)}catch(e){G(l,t,e)}else u.current=null}function Is(l){var t=l.type,u=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":u.autoFocus&&a.focus();break l;case"img":u.src?a.src=u.src:u.srcSet&&(a.srcset=u.srcSet)}}catch(e){G(l,l.return,e)}}function X0(l,t,u){try{var a=l.stateNode;Eh(a,l.type,u,t),a[bl]=t}catch(e){G(l,l.return,e)}}function lv(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27||l.tag===4}function Sc(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||lv(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==27&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function cf(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?u.nodeType===8?u.parentNode.insertBefore(l,t):u.insertBefore(l,t):(u.nodeType===8?(t=u.parentNode,t.insertBefore(l,u)):(t=u,t.appendChild(l)),u=u._reactRootContainer,u!=null||t.onclick!==null||(t.onclick=Bn));else if(a!==4&&a!==27&&(l=l.child,l!==null))for(cf(l,t,u),l=l.sibling;l!==null;)cf(l,t,u),l=l.sibling}function dn(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?u.insertBefore(l,t):u.appendChild(l);else if(a!==4&&a!==27&&(l=l.child,l!==null))for(dn(l,t,u),l=l.sibling;l!==null;)dn(l,t,u),l=l.sibling}var nt=!1,J=!1,bc=!1,Q0=typeof WeakSet=="function"?WeakSet:Set,al=null,C0=!1;function Fy(l,t){if(l=l.containerInfo,gf=Tn,l=L1(l),qf(l)){if("selectionStart"in l)var u={start:l.selectionStart,end:l.selectionEnd};else l:{u=(u=l.ownerDocument)&&u.defaultView||window;var a=u.getSelection&&u.getSelection();if(a&&a.rangeCount!==0){u=a.anchorNode;var e=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{u.nodeType,n.nodeType}catch{u=null;break l}var c=0,f=-1,i=-1,s=0,m=0,b=l,h=null;t:for(;;){for(var o;b!==u||e!==0&&b.nodeType!==3||(f=c+e),b!==n||a!==0&&b.nodeType!==3||(i=c+a),b.nodeType===3&&(c+=b.nodeValue.length),(o=b.firstChild)!==null;)h=b,b=o;for(;;){if(b===l)break t;if(h===u&&++s===e&&(f=c),h===n&&++m===a&&(i=c),(o=b.nextSibling)!==null)break;b=h,h=b.parentNode}b=o}u=f===-1||i===-1?null:{start:f,end:i}}else u=null}u=u||{start:0,end:0}}else u=null;for(Sf={focusedElem:l,selectionRange:u},Tn=!1,al=t;al!==null;)if(t=al,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,al=l;else for(;al!==null;){switch(t=al,n=t.alternate,l=t.flags,t.tag){case 0:break;case 11:case 15:break;case 1:if(l&1024&&n!==null){l=void 0,u=t,e=n.memoizedProps,n=n.memoizedState,a=u.stateNode;try{var r=su(u.type,e,u.elementType===u.type);l=a.getSnapshotBeforeUpdate(r,n),a.__reactInternalSnapshotBeforeUpdate=l}catch(A){G(u,u.return,A)}}break;case 3:if(l&1024){if(l=t.stateNode.containerInfo,u=l.nodeType,u===9)Ef(l);else if(u===1)switch(l.nodeName){case"HEAD":case"HTML":case"BODY":Ef(l);break;default:l.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(l&1024)throw Error(S(163))}if(l=t.sibling,l!==null){l.return=t.return,al=l;break}al=t.return}return r=C0,C0=!1,r}function tv(l,t,u){var a=u.flags;switch(u.tag){case 0:case 11:case 15:at(l,u),a&4&&fe(5,u);break;case 1:if(at(l,u),a&4)if(l=u.stateNode,t===null)try{l.componentDidMount()}catch(f){G(u,u.return,f)}else{var e=su(u.type,t.memoizedProps);t=t.memoizedState;try{l.componentDidUpdate(e,t,l.__reactInternalSnapshotBeforeUpdate)}catch(f){G(u,u.return,f)}}a&64&&Fs(u),a&512&&It(u,u.return);break;case 3:if(at(l,u),a&64&&(a=u.updateQueue,a!==null)){if(l=null,u.child!==null)switch(u.child.tag){case 27:case 5:l=u.child.stateNode;break;case 1:l=u.child.stateNode}try{ks(a,l)}catch(f){G(u,u.return,f)}}break;case 26:at(l,u),a&512&&It(u,u.return);break;case 27:case 5:at(l,u),t===null&&a&4&&Is(u),a&512&&It(u,u.return);break;case 12:at(l,u);break;case 13:at(l,u),a&4&&ev(l,u);break;case 22:if(e=u.memoizedState!==null||nt,!e){t=t!==null&&t.memoizedState!==null||J;var n=nt,c=J;nt=e,(J=t)&&!c?Ot(l,u,(u.subtreeFlags&8772)!==0):at(l,u),nt=n,J=c}a&512&&(u.memoizedProps.mode==="manual"?It(u,u.return):Al(u,u.return));break;default:at(l,u)}}function uv(l){var t=l.alternate;t!==null&&(l.alternate=null,uv(t)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(t=l.stateNode,t!==null&&_f(t)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}var k=null,Tl=!1;function ut(l,t,u){for(u=u.child;u!==null;)av(l,t,u),u=u.sibling}function av(l,t,u){if(Ol&&typeof Ol.onCommitFiberUnmount=="function")try{Ol.onCommitFiberUnmount(Ia,u)}catch{}switch(u.tag){case 26:J||Al(u,t),ut(l,t,u),u.memoizedState?u.memoizedState.count--:u.stateNode&&(u=u.stateNode,u.parentNode.removeChild(u));break;case 27:J||Al(u,t);var a=k,e=Tl;for(k=u.stateNode,ut(l,t,u),u=u.stateNode,t=u.attributes;t.length;)u.removeAttributeNode(t[0]);_f(u),k=a,Tl=e;break;case 5:J||Al(u,t);case 6:e=k;var n=Tl;if(k=null,ut(l,t,u),k=e,Tl=n,k!==null)if(Tl)try{l=k,a=u.stateNode,l.nodeType===8?l.parentNode.removeChild(a):l.removeChild(a)}catch(c){G(u,t,c)}else try{k.removeChild(u.stateNode)}catch(c){G(u,t,c)}break;case 18:k!==null&&(Tl?(t=k,u=u.stateNode,t.nodeType===8?Uc(t.parentNode,u):t.nodeType===1&&Uc(t,u),Pa(t)):Uc(k,u.stateNode));break;case 4:a=k,e=Tl,k=u.stateNode.containerInfo,Tl=!0,ut(l,t,u),k=a,Tl=e;break;case 0:case 11:case 14:case 15:J||Vt(2,u,t),J||Vt(4,u,t),ut(l,t,u);break;case 1:J||(Al(u,t),a=u.stateNode,typeof a.componentWillUnmount=="function"&&Ps(u,t,a)),ut(l,t,u);break;case 21:ut(l,t,u);break;case 22:J||Al(u,t),J=(a=J)||u.memoizedState!==null,ut(l,t,u),J=a;break;default:ut(l,t,u)}}function ev(l,t){if(t.memoizedState===null&&(l=t.alternate,l!==null&&(l=l.memoizedState,l!==null&&(l=l.dehydrated,l!==null))))try{Pa(l)}catch(u){G(t,t.return,u)}}function Py(l){switch(l.tag){case 13:case 19:var t=l.stateNode;return t===null&&(t=l.stateNode=new Q0),t;case 22:return l=l.stateNode,t=l._retryCache,t===null&&(t=l._retryCache=new Q0),t;default:throw Error(S(435,l.tag))}}function Ec(l,t){var u=Py(l);t.forEach(function(a){var e=dh.bind(null,l,a);u.has(a)||(u.add(a),a.then(e,e))})}function Rl(l,t){var u=t.deletions;if(u!==null)for(var a=0;a<u.length;a++){var e=u[a],n=l,c=t,f=c;l:for(;f!==null;){switch(f.tag){case 27:case 5:k=f.stateNode,Tl=!1;break l;case 3:k=f.stateNode.containerInfo,Tl=!0;break l;case 4:k=f.stateNode.containerInfo,Tl=!0;break l}f=f.return}if(k===null)throw Error(S(160));av(n,c,e),k=null,Tl=!1,n=e.alternate,n!==null&&(n.return=null),e.return=null}if(t.subtreeFlags&13878)for(t=t.child;t!==null;)nv(t,l),t=t.sibling}var jl=null;function nv(l,t){var u=l.alternate,a=l.flags;switch(l.tag){case 0:case 11:case 14:case 15:Rl(t,l),Hl(l),a&4&&(Vt(3,l,l.return),fe(3,l),Vt(5,l,l.return));break;case 1:Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),a&64&&nt&&(l=l.updateQueue,l!==null&&(a=l.callbacks,a!==null&&(u=l.shared.hiddenCallbacks,l.shared.hiddenCallbacks=u===null?a:u.concat(a))));break;case 26:var e=jl;if(Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),a&4){var n=u!==null?u.memoizedState:null;if(a=l.memoizedState,u===null)if(a===null)if(l.stateNode===null){l:{a=l.type,u=l.memoizedProps,e=e.ownerDocument||e;t:switch(a){case"title":n=e.getElementsByTagName("title")[0],(!n||n[Ca]||n[dl]||n.namespaceURI==="http://www.w3.org/2000/svg"||n.hasAttribute("itemprop"))&&(n=e.createElement(a),e.head.insertBefore(n,e.querySelector("head > title"))),sl(n,a,u),n[dl]=l,el(n),a=n;break l;case"link":var c=e1("link","href",e).get(a+(u.href||""));if(c){for(var f=0;f<c.length;f++)if(n=c[f],n.getAttribute("href")===(u.href==null?null:u.href)&&n.getAttribute("rel")===(u.rel==null?null:u.rel)&&n.getAttribute("title")===(u.title==null?null:u.title)&&n.getAttribute("crossorigin")===(u.crossOrigin==null?null:u.crossOrigin)){c.splice(f,1);break t}}n=e.createElement(a),sl(n,a,u),e.head.appendChild(n);break;case"meta":if(c=e1("meta","content",e).get(a+(u.content||""))){for(f=0;f<c.length;f++)if(n=c[f],n.getAttribute("content")===(u.content==null?null:""+u.content)&&n.getAttribute("name")===(u.name==null?null:u.name)&&n.getAttribute("property")===(u.property==null?null:u.property)&&n.getAttribute("http-equiv")===(u.httpEquiv==null?null:u.httpEquiv)&&n.getAttribute("charset")===(u.charSet==null?null:u.charSet)){c.splice(f,1);break t}}n=e.createElement(a),sl(n,a,u),e.head.appendChild(n);break;default:throw Error(S(468,a))}n[dl]=l,el(n),a=n}l.stateNode=a}else n1(e,l.type,l.stateNode);else l.stateNode=a1(e,a,l.memoizedProps);else n!==a?(n===null?u.stateNode!==null&&(u=u.stateNode,u.parentNode.removeChild(u)):n.count--,a===null?n1(e,l.type,l.stateNode):a1(e,a,l.memoizedProps)):a===null&&l.stateNode!==null&&X0(l,l.memoizedProps,u.memoizedProps)}break;case 27:if(a&4&&l.alternate===null){e=l.stateNode,n=l.memoizedProps;try{for(var i=e.firstChild;i;){var s=i.nextSibling,m=i.nodeName;i[Ca]||m==="HEAD"||m==="BODY"||m==="SCRIPT"||m==="STYLE"||m==="LINK"&&i.rel.toLowerCase()==="stylesheet"||e.removeChild(i),i=s}for(var b=l.type,h=e.attributes;h.length;)e.removeAttributeNode(h[0]);sl(e,b,n),e[dl]=l,e[bl]=n}catch(r){G(l,l.return,r)}}case 5:if(Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),l.flags&32){e=l.stateNode;try{Ju(e,"")}catch(r){G(l,l.return,r)}}a&4&&l.stateNode!=null&&(e=l.memoizedProps,X0(l,e,u!==null?u.memoizedProps:e)),a&1024&&(bc=!0);break;case 6:if(Rl(t,l),Hl(l),a&4){if(l.stateNode===null)throw Error(S(162));a=l.memoizedProps,u=l.stateNode;try{u.nodeValue=a}catch(r){G(l,l.return,r)}}break;case 3:if(Je=null,e=jl,jl=bn(t.containerInfo),Rl(t,l),jl=e,Hl(l),a&4&&u!==null&&u.memoizedState.isDehydrated)try{Pa(t.containerInfo)}catch(r){G(l,l.return,r)}bc&&(bc=!1,cv(l));break;case 4:a=jl,jl=bn(l.stateNode.containerInfo),Rl(t,l),Hl(l),jl=a;break;case 12:Rl(t,l),Hl(l);break;case 13:Rl(t,l),Hl(l),l.child.flags&8192&&l.memoizedState!==null!=(u!==null&&u.memoizedState!==null)&&(ni=kl()),a&4&&(a=l.updateQueue,a!==null&&(l.updateQueue=null,Ec(l,a)));break;case 22:if(a&512&&(J||u===null||Al(u,u.return)),i=l.memoizedState!==null,s=u!==null&&u.memoizedState!==null,m=nt,b=J,nt=m||i,J=b||s,Rl(t,l),J=b,nt=m,Hl(l),t=l.stateNode,t._current=l,t._visibility&=-3,t._visibility|=t._pendingVisibility&2,a&8192&&(t._visibility=i?t._visibility&-2:t._visibility|1,i&&(t=nt||J,u===null||s||t||zu(l)),l.memoizedProps===null||l.memoizedProps.mode!=="manual"))l:for(u=null,t=l;;){if(t.tag===5||t.tag===26||t.tag===27){if(u===null){s=u=t;try{if(e=s.stateNode,i)n=e.style,typeof n.setProperty=="function"?n.setProperty("display","none","important"):n.display="none";else{c=s.stateNode,f=s.memoizedProps.style;var o=f!=null&&f.hasOwnProperty("display")?f.display:null;c.style.display=o==null||typeof o=="boolean"?"":(""+o).trim()}}catch(r){G(s,s.return,r)}}}else if(t.tag===6){if(u===null){s=t;try{s.stateNode.nodeValue=i?"":s.memoizedProps}catch(r){G(s,s.return,r)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===l)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break l;for(;t.sibling===null;){if(t.return===null||t.return===l)break l;u===t&&(u=null),t=t.return}u===t&&(u=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=l.updateQueue,a!==null&&(u=a.retryQueue,u!==null&&(a.retryQueue=null,Ec(l,u))));break;case 19:Rl(t,l),Hl(l),a&4&&(a=l.updateQueue,a!==null&&(l.updateQueue=null,Ec(l,a)));break;case 21:break;default:Rl(t,l),Hl(l)}}function Hl(l){var t=l.flags;if(t&2){try{if(l.tag!==27){l:{for(var u=l.return;u!==null;){if(lv(u)){var a=u;break l}u=u.return}throw Error(S(160))}switch(a.tag){case 27:var e=a.stateNode,n=Sc(l);dn(l,n,e);break;case 5:var c=a.stateNode;a.flags&32&&(Ju(c,""),a.flags&=-33);var f=Sc(l);dn(l,f,c);break;case 3:case 4:var i=a.stateNode.containerInfo,s=Sc(l);cf(l,s,i);break;default:throw Error(S(161))}}}catch(m){G(l,l.return,m)}l.flags&=-3}t&4096&&(l.flags&=-4097)}function cv(l){if(l.subtreeFlags&1024)for(l=l.child;l!==null;){var t=l;cv(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),l=l.sibling}}function at(l,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)tv(l,t.alternate,t),t=t.sibling}function zu(l){for(l=l.child;l!==null;){var t=l;switch(t.tag){case 0:case 11:case 14:case 15:Vt(4,t,t.return),zu(t);break;case 1:Al(t,t.return);var u=t.stateNode;typeof u.componentWillUnmount=="function"&&Ps(t,t.return,u),zu(t);break;case 26:case 27:case 5:Al(t,t.return),zu(t);break;case 22:Al(t,t.return),t.memoizedState===null&&zu(t);break;default:zu(t)}l=l.sibling}}function Ot(l,t,u){for(u=u&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,e=l,n=t,c=n.flags;switch(n.tag){case 0:case 11:case 15:Ot(e,n,u),fe(4,n);break;case 1:if(Ot(e,n,u),a=n,e=a.stateNode,typeof e.componentDidMount=="function")try{e.componentDidMount()}catch(s){G(a,a.return,s)}if(a=n,e=a.updateQueue,e!==null){var f=a.stateNode;try{var i=e.shared.hiddenCallbacks;if(i!==null)for(e.shared.hiddenCallbacks=null,e=0;e<i.length;e++)$s(i[e],f)}catch(s){G(a,a.return,s)}}u&&c&64&&Fs(n),It(n,n.return);break;case 26:case 27:case 5:Ot(e,n,u),u&&a===null&&c&4&&Is(n),It(n,n.return);break;case 12:Ot(e,n,u);break;case 13:Ot(e,n,u),u&&c&4&&ev(e,n);break;case 22:n.memoizedState===null&&Ot(e,n,u),It(n,n.return);break;default:Ot(e,n,u)}t=t.sibling}}function li(l,t){var u=null;l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==u&&(l!=null&&l.refCount++,u!=null&&ee(u))}function ti(l,t){l=null,t.alternate!==null&&(l=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==l&&(t.refCount++,l!=null&&ee(l))}function At(l,t,u,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)fv(l,t,u,a),t=t.sibling}function fv(l,t,u,a){var e=t.flags;switch(t.tag){case 0:case 11:case 15:At(l,t,u,a),e&2048&&fe(9,t);break;case 3:At(l,t,u,a),e&2048&&(l=null,t.alternate!==null&&(l=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==l&&(t.refCount++,l!=null&&ee(l)));break;case 12:if(e&2048){At(l,t,u,a),l=t.stateNode;try{var n=t.memoizedProps,c=n.id,f=n.onPostCommit;typeof f=="function"&&f(c,t.alternate===null?"mount":"update",l.passiveEffectDuration,-0)}catch(i){G(t,t.return,i)}}else At(l,t,u,a);break;case 23:break;case 22:n=t.stateNode,t.memoizedState!==null?n._visibility&4?At(l,t,u,a):Ya(l,t):n._visibility&4?At(l,t,u,a):(n._visibility|=4,Au(l,t,u,a,(t.subtreeFlags&10256)!==0)),e&2048&&li(t.alternate,t);break;case 24:At(l,t,u,a),e&2048&&ti(t.alternate,t);break;default:At(l,t,u,a)}}function Au(l,t,u,a,e){for(e=e&&(t.subtreeFlags&10256)!==0,t=t.child;t!==null;){var n=l,c=t,f=u,i=a,s=c.flags;switch(c.tag){case 0:case 11:case 15:Au(n,c,f,i,e),fe(8,c);break;case 23:break;case 22:var m=c.stateNode;c.memoizedState!==null?m._visibility&4?Au(n,c,f,i,e):Ya(n,c):(m._visibility|=4,Au(n,c,f,i,e)),e&&s&2048&&li(c.alternate,c);break;case 24:Au(n,c,f,i,e),e&&s&2048&&ti(c.alternate,c);break;default:Au(n,c,f,i,e)}t=t.sibling}}function Ya(l,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var u=l,a=t,e=a.flags;switch(a.tag){case 22:Ya(u,a),e&2048&&li(a.alternate,a);break;case 24:Ya(u,a),e&2048&&ti(a.alternate,a);break;default:Ya(u,a)}t=t.sibling}}var za=8192;function ru(l){if(l.subtreeFlags&za)for(l=l.child;l!==null;)iv(l),l=l.sibling}function iv(l){switch(l.tag){case 26:ru(l),l.flags&za&&l.memoizedState!==null&&Qh(jl,l.memoizedState,l.memoizedProps);break;case 5:ru(l);break;case 3:case 4:var t=jl;jl=bn(l.stateNode.containerInfo),ru(l),jl=t;break;case 22:l.memoizedState===null&&(t=l.alternate,t!==null&&t.memoizedState!==null?(t=za,za=16777216,ru(l),za=t):ru(l));break;default:ru(l)}}function sv(l){var t=l.alternate;if(t!==null&&(l=t.child,l!==null)){t.child=null;do t=l.sibling,l.sibling=null,l=t;while(l!==null)}}function ma(l){var t=l.deletions;if(l.flags&16){if(t!==null)for(var u=0;u<t.length;u++){var a=t[u];al=a,dv(a,l)}sv(l)}if(l.subtreeFlags&10256)for(l=l.child;l!==null;)vv(l),l=l.sibling}function vv(l){switch(l.tag){case 0:case 11:case 15:ma(l),l.flags&2048&&Vt(9,l,l.return);break;case 3:ma(l);break;case 12:ma(l);break;case 22:var t=l.stateNode;l.memoizedState!==null&&t._visibility&4&&(l.return===null||l.return.tag!==13)?(t._visibility&=-5,Ve(l)):ma(l);break;default:ma(l)}}function Ve(l){var t=l.deletions;if(l.flags&16){if(t!==null)for(var u=0;u<t.length;u++){var a=t[u];al=a,dv(a,l)}sv(l)}for(l=l.child;l!==null;){switch(t=l,t.tag){case 0:case 11:case 15:Vt(8,t,t.return),Ve(t);break;case 22:u=t.stateNode,u._visibility&4&&(u._visibility&=-5,Ve(t));break;default:Ve(t)}l=l.sibling}}function dv(l,t){for(;al!==null;){var u=al;switch(u.tag){case 0:case 11:case 15:Vt(8,u,t);break;case 23:case 22:if(u.memoizedState!==null&&u.memoizedState.cachePool!==null){var a=u.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:ee(u.memoizedState.cache)}if(a=u.child,a!==null)a.return=u,al=a;else l:for(u=l;al!==null;){a=al;var e=a.sibling,n=a.return;if(uv(a),a===u){al=null;break l}if(e!==null){e.return=n,al=e;break l}al=n}}}function Iy(l,t,u,a){this.tag=l,this.key=u,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Xl(l,t,u,a){return new Iy(l,t,u,a)}function ui(l){return l=l.prototype,!(!l||!l.isReactComponent)}function Gt(l,t){var u=l.alternate;return u===null?(u=Xl(l.tag,t,l.key,l.mode),u.elementType=l.elementType,u.type=l.type,u.stateNode=l.stateNode,u.alternate=l,l.alternate=u):(u.pendingProps=t,u.type=l.type,u.flags=0,u.subtreeFlags=0,u.deletions=null),u.flags=l.flags&31457280,u.childLanes=l.childLanes,u.lanes=l.lanes,u.child=l.child,u.memoizedProps=l.memoizedProps,u.memoizedState=l.memoizedState,u.updateQueue=l.updateQueue,t=l.dependencies,u.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},u.sibling=l.sibling,u.index=l.index,u.ref=l.ref,u.refCleanup=l.refCleanup,u}function yv(l,t){l.flags&=31457282;var u=l.alternate;return u===null?(l.childLanes=0,l.lanes=t,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,t=u.dependencies,l.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),l}function Le(l,t,u,a,e,n){var c=0;if(a=l,typeof l=="function")ui(l)&&(c=1);else if(typeof l=="string")c=Gh(l,u,$l.current)?26:l==="html"||l==="head"||l==="body"?27:5;else l:switch(l){case Mu:return au(u.children,e,n,t);case h1:c=8,e|=24;break;case Rc:return l=Xl(12,u,t,e|2),l.elementType=Rc,l.lanes=n,l;case Hc:return l=Xl(13,u,t,e),l.elementType=Hc,l.lanes=n,l;case Nc:return l=Xl(19,u,t,e),l.elementType=Nc,l.lanes=n,l;case o1:return hv(u,e,n,t);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case Od:case it:c=10;break l;case m1:c=9;break l;case Af:c=11;break l;case Of:c=14;break l;case Mt:c=16,a=null;break l}c=29,u=Error(S(130,l===null?"null":typeof l,"")),a=null}return t=Xl(c,u,t,e),t.elementType=l,t.type=a,t.lanes=n,t}function au(l,t,u,a){return l=Xl(7,l,a,t),l.lanes=u,l}function hv(l,t,u,a){l=Xl(22,l,a,t),l.elementType=o1,l.lanes=u;var e={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var n=e._current;if(n===null)throw Error(S(456));if(!(e._pendingVisibility&2)){var c=xt(n,2);c!==null&&(e._pendingVisibility|=2,gl(c,n,2))}},attach:function(){var n=e._current;if(n===null)throw Error(S(456));if(e._pendingVisibility&2){var c=xt(n,2);c!==null&&(e._pendingVisibility&=-3,gl(c,n,2))}}};return l.stateNode=e,l}function rc(l,t,u){return l=Xl(6,l,null,t),l.lanes=u,l}function Tc(l,t,u){return t=Xl(4,l.children!==null?l.children:[],l.key,t),t.lanes=u,t.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},t}function et(l){l.flags|=4}function Z0(l,t){if(t.type!=="stylesheet"||t.state.loading&4)l.flags&=-16777217;else if(l.flags|=16777216,!Yv(t)){if(t=Cl.current,t!==null&&((H&4194176)===H?Fl!==null:(H&62914560)!==H&&!(H&536870912)||t!==Fl))throw Da=Lc,I1;l.flags|=8192}}function Re(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?z1():536870912,l.lanes|=t,ku|=t)}function oa(l,t){if(!q)switch(l.tailMode){case"hidden":t=l.tail;for(var u=null;t!==null;)t.alternate!==null&&(u=t),t=t.sibling;u===null?l.tail=null:u.sibling=null;break;case"collapsed":u=l.tail;for(var a=null;u!==null;)u.alternate!==null&&(a=u),u=u.sibling;a===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:a.sibling=null}}function V(l){var t=l.alternate!==null&&l.alternate.child===l.child,u=0,a=0;if(t)for(var e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags&31457280,a|=e.flags&31457280,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags,a|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=a,l.childLanes=u,t}function lh(l,t,u){var a=t.pendingProps;switch(Gf(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return V(t),null;case 1:return V(t),null;case 3:return u=t.stateNode,a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),ht(I),Lu(),u.pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),(l===null||l.child===null)&&(ya(t)?et(t):l===null||l.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Vl!==null&&(yf(Vl),Vl=null))),V(t),null;case 26:return u=t.memoizedState,l===null?(et(t),u!==null?(V(t),Z0(t,u)):(V(t),t.flags&=-16777217)):u?u!==l.memoizedState?(et(t),V(t),Z0(t,u)):(V(t),t.flags&=-16777217):(l.memoizedProps!==a&&et(t),V(t),t.flags&=-16777217),null;case 27:ke(t),u=pt.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return V(t),null}l=$l.current,ya(t)?g0(t,l):(l=Nv(e,a,u),t.stateNode=l,et(t))}return V(t),null;case 5:if(ke(t),u=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return V(t),null}if(l=$l.current,ya(t))g0(t,l);else{switch(e=Sn(pt.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":l=e.createElement("div"),l.innerHTML="<script><\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[dl]=t,l[bl]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(sl(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&et(t)}}return V(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(S(166));if(l=pt.current,ya(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=ol,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[dl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Uv(l.nodeValue,u)),l||cu(t)}else l=Sn(l).createTextNode(a),l[dl]=t,t.stateNode=l}return V(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=ya(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(S(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));e[dl]=t}else ae(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;V(t),e=!1}else Vl!==null&&(yf(Vl),Vl=null),e=!0;if(!e)return t.flags&256?(dt(t),t):(dt(t),null)}if(dt(t),t.flags&128)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Re(t,t.updateQueue),V(t),null;case 4:return Lu(),l===null&&ii(t.stateNode.containerInfo),V(t),null;case 10:return ht(t.type),V(t),null;case 19:if(cl(ll),e=t.memoizedState,e===null)return V(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)oa(e,!1);else{if(w!==0||l!==null&&l.flags&128)for(l=t.child;l!==null;){if(n=en(l),n!==null){for(t.flags|=128,oa(e,!1),l=n.updateQueue,t.updateQueue=l,Re(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)yv(u,l),u=u.sibling;return x(ll,ll.current&1|2),t.child}l=l.sibling}e.tail!==null&&kl()>yn&&(t.flags|=128,a=!0,oa(e,!1),t.lanes=4194304)}else{if(!a)if(l=en(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Re(t,l),oa(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!q)return V(t),null}else 2*kl()-e.renderingStartTime>yn&&u!==536870912&&(t.flags|=128,a=!0,oa(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=kl(),t.sibling=null,l=ll.current,x(ll,a?l&1|2:l&1),t):(V(t),null);case 22:case 23:return dt(t),Xf(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?u&536870912&&!(t.flags&128)&&(V(t),t.subtreeFlags&6&&(t.flags|=8192)):V(t),u=t.updateQueue,u!==null&&Re(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&cl(uu),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),ht(I),V(t),null;case 25:return null}throw Error(S(156,t.tag))}function th(l,t){switch(Gf(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return ht(I),Lu(),l=t.flags,l&65536&&!(l&128)?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return ke(t),null;case 13:if(dt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(S(340));ae()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return cl(ll),null;case 4:return Lu(),null;case 10:return ht(t.type),null;case 22:case 23:return dt(t),Xf(),l!==null&&cl(uu),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return ht(I),null;case 25:return null;default:return null}}function mv(l,t){switch(Gf(t),t.tag){case 3:ht(I),Lu();break;case 26:case 27:case 5:ke(t);break;case 4:Lu();break;case 13:dt(t);break;case 19:cl(ll);break;case 10:ht(t.type);break;case 22:case 23:dt(t),Xf(),l!==null&&cl(uu);break;case 24:ht(I)}}var uh={getCacheForType:function(l){var t=yl(I),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},ah=typeof WeakMap=="function"?WeakMap:Map,L=0,Q=null,U=null,H=0,X=0,zl=null,ct=!1,ua=!1,ai=!1,St=0,w=0,Lt=0,eu=0,ei=0,Ql=0,ku=0,Ba=null,Wl=null,ff=!1,ni=0,yn=1/0,hn=null,Xt=null,He=!1,Ft=null,Ga=0,sf=0,vf=null,Xa=0,df=null;function _l(){if(L&2&&H!==0)return H&-H;if(O.T!==null){var l=Wu;return l!==0?l:fi()}return _1()}function ov(){Ql===0&&(Ql=!(H&536870912)||q?T1():536870912);var l=Cl.current;return l!==null&&(l.flags|=32),Ql}function gl(l,t,u){(l===Q&&X===2||l.cancelPendingCommit!==null)&&(Fu(l,0),ft(l,H,Ql,!1)),te(l,u),(!(L&2)||l!==Q)&&(l===Q&&(!(L&2)&&(eu|=u),w===4&&ft(l,H,Ql,!1)),lt(l))}function gv(l,t,u){if(L&6)throw Error(S(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||le(l,t),e=a?ch(l,t):zc(l,t,!0),n=a;do{if(e===0){ua&&!a&&ft(l,t,0,!1);break}else if(e===6)ft(l,t,0,!ct);else{if(u=l.current.alternate,n&&!eh(u)){e=zc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var f=l;e=Ba;var i=f.current.memoizedState.isDehydrated;if(i&&(Fu(f,c).flags|=256),c=zc(f,c,!1),c!==2){if(ai&&!i){f.errorRecoveryDisabledLanes|=n,eu|=n,e=4;break l}n=Wl,Wl=e,n!==null&&yf(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){Fu(l,0),ft(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(S(345));case 4:if((t&4194176)===t){ft(a,t,Ql,!ct);break l}break;case 2:Wl=null;break;case 3:case 5:break;default:throw Error(S(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=ni+300-kl(),10<n)){if(ft(a,t,Ql,!ct),An(a,0)!==0)break l;a.timeoutHandle=Hv(x0.bind(null,a,u,Wl,hn,ff,t,Ql,eu,ku,ct,2,-0,0),n);break l}x0(a,u,Wl,hn,ff,t,Ql,eu,ku,ct,0,-0,0)}}break}while(!0);lt(l)}function yf(l){Wl===null?Wl=l:Wl.push.apply(Wl,l)}function x0(l,t,u,a,e,n,c,f,i,s,m,b,h){var o=t.subtreeFlags;if((o&8192||(o&16785408)===16785408)&&(Wa={stylesheets:null,count:0,unsuspend:Xh},iv(t),t=Ch(),t!==null)){l.cancelPendingCommit=t(V0.bind(null,l,u,a,e,c,f,i,1,b,h)),ft(l,n,c,!s);return}V0(l,u,a,e,c,f,i,m,b,h)}function eh(l){for(var t=l;;){var u=t.tag;if((u===0||u===11||u===15)&&t.flags&16384&&(u=t.updateQueue,u!==null&&(u=u.stores,u!==null)))for(var a=0;a<u.length;a++){var e=u[a],n=e.getSnapshot;e=e.value;try{if(!Dl(n(),e))return!1}catch{return!1}}if(u=t.child,t.subtreeFlags&16384&&u!==null)u.return=t,t=u;else{if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ft(l,t,u,a){t&=~ei,t&=~eu,l.suspendedLanes|=t,l.pingedLanes&=~t,a&&(l.warmLanes|=t),a=l.expirationTimes;for(var e=t;0<e;){var n=31-Ml(e),c=1<<n;a[n]=-1,e&=~c}u!==0&&A1(l,u,t)}function pn(){return L&6?!0:(ie(0,!1),!1)}function ci(){if(U!==null){if(X===0)var l=U.return;else l=U,yt=gu=null,Lf(l),Cu=null,La=0,l=U;for(;l!==null;)mv(l.alternate,l),l=l.return;U=null}}function Fu(l,t){l.finishedWork=null,l.finishedLanes=0;var u=l.timeoutHandle;u!==-1&&(l.timeoutHandle=-1,Th(u)),u=l.cancelPendingCommit,u!==null&&(l.cancelPendingCommit=null,u()),ci(),Q=l,U=u=Gt(l.current,null),H=t,X=0,zl=null,ct=!1,ua=le(l,t),ai=!1,ku=Ql=ei=eu=Lt=w=0,Wl=Ba=null,ff=!1,t&8&&(t|=t&32);var a=l.entangledLanes;if(a!==0)for(l=l.entanglements,a&=t;0<a;){var e=31-Ml(a),n=1<<e;t|=l[e],a&=~n}return St=t,Dn(),u}function Sv(l,t){_=null,O.H=Pl,t===_a?(t=E0(),X=3):t===I1?(t=E0(),X=4):X=t===js?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,zl=t,U===null&&(w=1,sn(l,Gl(t,l.current)))}function bv(){var l=O.H;return O.H=Pl,l===null?Pl:l}function Ev(){var l=O.A;return O.A=uh,l}function hf(){w=4,ct||(H&4194176)!==H&&Cl.current!==null||(ua=!0),!(Lt&134217727)&&!(eu&134217727)||Q===null||ft(Q,H,Ql,!1)}function zc(l,t,u){var a=L;L|=2;var e=bv(),n=Ev();(Q!==l||H!==t)&&(hn=null,Fu(l,t)),t=!1;var c=w;l:do try{if(X!==0&&U!==null){var f=U,i=zl;switch(X){case 8:ci(),c=6;break l;case 3:case 2:case 6:Cl.current===null&&(t=!0);var s=X;if(X=0,zl=null,Bu(l,f,i,s),u&&ua){c=0;break l}break;default:s=X,X=0,zl=null,Bu(l,f,i,s)}}nh(),c=w;break}catch(m){Sv(l,m)}while(!0);return t&&l.shellSuspendCounter++,yt=gu=null,L=a,O.H=e,O.A=n,U===null&&(Q=null,H=0,Dn()),c}function nh(){for(;U!==null;)rv(U)}function ch(l,t){var u=L;L|=2;var a=bv(),e=Ev();Q!==l||H!==t?(hn=null,yn=kl()+500,Fu(l,t)):ua=le(l,t);l:do try{if(X!==0&&U!==null){t=U;var n=zl;t:switch(X){case 1:X=0,zl=null,Bu(l,t,n,1);break;case 2:if(b0(n)){X=0,zl=null,j0(t);break}t=function(){X===2&&Q===l&&(X=7),lt(l)},n.then(t,t);break l;case 3:X=7;break l;case 4:X=5;break l;case 7:b0(n)?(X=0,zl=null,j0(t)):(X=0,zl=null,Bu(l,t,n,7));break;case 5:var c=null;switch(U.tag){case 26:c=U.memoizedState;case 5:case 27:var f=U;if(!c||Yv(c)){X=0,zl=null;var i=f.sibling;if(i!==null)U=i;else{var s=f.return;s!==null?(U=s,Yn(s)):U=null}break t}}X=0,zl=null,Bu(l,t,n,5);break;case 6:X=0,zl=null,Bu(l,t,n,6);break;case 8:ci(),w=6;break l;default:throw Error(S(462))}}fh();break}catch(m){Sv(l,m)}while(!0);return yt=gu=null,O.H=a,O.A=e,L=u,U!==null?0:(Q=null,H=0,Dn(),w)}function fh(){for(;U!==null&&!Rd();)rv(U)}function rv(l){var t=ws(l.alternate,l,St);l.memoizedProps=l.pendingProps,t===null?Yn(l):U=t}function j0(l){var t=l,u=t.alternate;switch(t.tag){case 15:case 0:t=p0(u,t,t.pendingProps,t.type,void 0,H);break;case 11:t=p0(u,t,t.pendingProps,t.type.render,t.ref,H);break;case 5:Lf(t);default:mv(u,t),t=U=yv(t,St),t=ws(u,t,St)}l.memoizedProps=l.pendingProps,t===null?Yn(l):U=t}function Bu(l,t,u,a){yt=gu=null,Lf(t),Cu=null,La=0;var e=t.return;try{if($y(l,e,t,u,H)){w=1,sn(l,Gl(u,l.current)),U=null;return}}catch(n){if(e!==null)throw U=e,n;w=1,sn(l,Gl(u,l.current)),U=null;return}t.flags&32768?(q||a===1?l=!0:ua||H&536870912?l=!1:(ct=l=!0,(a===2||a===3||a===6)&&(a=Cl.current,a!==null&&a.tag===13&&(a.flags|=16384))),Tv(t,l)):Yn(t)}function Yn(l){var t=l;do{if(t.flags&32768){Tv(t,ct);return}l=t.return;var u=lh(t.alternate,t,St);if(u!==null){U=u;return}if(t=t.sibling,t!==null){U=t;return}U=t=l}while(t!==null);w===0&&(w=5)}function Tv(l,t){do{var u=th(l.alternate,l);if(u!==null){u.flags&=32767,U=u;return}if(u=l.return,u!==null&&(u.flags|=32768,u.subtreeFlags=0,u.deletions=null),!t&&(l=l.sibling,l!==null)){U=l;return}U=l=u}while(l!==null);w=6,U=null}function V0(l,t,u,a,e,n,c,f,i,s){var m=O.T,b=C.p;try{C.p=2,O.T=null,ih(l,t,u,a,b,e,n,c,f,i,s)}finally{O.T=m,C.p=b}}function ih(l,t,u,a,e,n,c,f){do Vu();while(Ft!==null);if(L&6)throw Error(S(327));var i=l.finishedWork;if(a=l.finishedLanes,i===null)return null;if(l.finishedWork=null,l.finishedLanes=0,i===l.current)throw Error(S(177));l.callbackNode=null,l.callbackPriority=0,l.cancelPendingCommit=null;var s=i.lanes|i.childLanes;if(s|=pf,Zd(l,a,s,n,c,f),l===Q&&(U=Q=null,H=0),!(i.subtreeFlags&10256)&&!(i.flags&10256)||He||(He=!0,sf=s,vf=u,yh(Fe,function(){return Vu(!0),null})),u=(i.flags&15990)!==0,i.subtreeFlags&15990||u?(u=O.T,O.T=null,n=C.p,C.p=2,c=L,L|=4,Fy(l,i),nv(i,l),qy(Sf,l.containerInfo),Tn=!!gf,Sf=gf=null,l.current=i,tv(l,i.alternate,i),Hd(),L=c,C.p=n,O.T=u):l.current=i,He?(He=!1,Ft=l,Ga=a):zv(l,s),s=l.pendingLanes,s===0&&(Xt=null),Bd(i.stateNode,e),lt(l),t!==null)for(e=l.onRecoverableError,i=0;i<t.length;i++)s=t[i],e(s.value,{componentStack:s.stack});return Ga&3&&Vu(),s=l.pendingLanes,a&4194218&&s&42?l===df?Xa++:(Xa=0,df=l):Xa=0,ie(0,!1),null}function zv(l,t){(l.pooledCacheLanes&=t)===0&&(t=l.pooledCache,t!=null&&(l.pooledCache=null,ee(t)))}function Vu(){if(Ft!==null){var l=Ft,t=sf;sf=0;var u=M1(Ga),a=O.T,e=C.p;try{if(C.p=32>u?32:u,O.T=null,Ft===null)var n=!1;else{u=vf,vf=null;var c=Ft,f=Ga;if(Ft=null,Ga=0,L&6)throw Error(S(331));var i=L;if(L|=4,vv(c.current),fv(c,c.current,f,u),L=i,ie(0,!1),Ol&&typeof Ol.onPostCommitFiberRoot=="function")try{Ol.onPostCommitFiberRoot(Ia,c)}catch{}n=!0}return n}finally{C.p=e,O.T=a,zv(l,t)}}return!1}function L0(l,t,u){t=Gl(u,t),t=Fc(l.stateNode,t,2),l=Bt(l,t,2),l!==null&&(te(l,2),lt(l))}function G(l,t,u){if(l.tag===3)L0(l,l,u);else for(;t!==null;){if(t.tag===3){L0(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Xt===null||!Xt.has(a))){l=Gl(u,l),u=Zs(2),a=Bt(t,u,2),a!==null&&(xs(u,a,t,l),te(a,2),lt(a));break}}t=t.return}}function Ac(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new ah;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(ai=!0,e.add(u),l=sh.bind(null,l,t,u),t.then(l,l))}function sh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,Q===l&&(H&u)===u&&(w===4||w===3&&(H&62914560)===H&&300>kl()-ni?!(L&2)&&Fu(l,0):ei|=u,ku===H&&(ku=0)),lt(l)}function Av(l,t){t===0&&(t=z1()),l=xt(l,t),l!==null&&(te(l,t),lt(l))}function vh(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Av(l,u)}function dh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(S(314))}a!==null&&a.delete(t),Av(l,u)}function yh(l,t){return Mf(l,t)}var mn=null,Ou=null,mf=!1,on=!1,Oc=!1,nu=0;function lt(l){l!==Ou&&l.next===null&&(Ou===null?mn=Ou=l:Ou=Ou.next=l),on=!0,mf||(mf=!0,mh(hh))}function ie(l,t){if(!Oc&&on){Oc=!0;do for(var u=!1,a=mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,f=a.pingedLanes;n=(1<<31-Ml(42|l)+1)-1,n&=e&~(c&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,K0(a,n))}else n=H,n=An(a,a===Q?n:0),!(n&3)||le(a,n)||(u=!0,K0(a,n));a=a.next}while(u);Oc=!1}}function hh(){on=mf=!1;var l=0;nu!==0&&(rh()&&(l=nu),nu=0);for(var t=kl(),u=null,a=mn;a!==null;){var e=a.next,n=Ov(a,t);n===0?(a.next=null,u===null?mn=e:u.next=e,e===null&&(Ou=u)):(u=a,(l!==0||n&3)&&(on=!0)),a=e}ie(l,!1)}function Ov(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0<n;){var c=31-Ml(n),f=1<<c,i=e[c];i===-1?(!(f&u)||f&a)&&(e[c]=Cd(f,t)):i<=t&&(l.expiredLanes|=f),n&=~f}if(t=Q,u=H,u=An(l,l===t?u:0),a=l.callbackNode,u===0||l===t&&X===2||l.cancelPendingCommit!==null)return a!==null&&a!==null&&tc(a),l.callbackNode=null,l.callbackPriority=0;if(!(u&3)||le(l,u)){if(t=u&-u,t===l.callbackPriority)return t;switch(a!==null&&tc(a),M1(u)){case 2:case 8:u=E1;break;case 32:u=Fe;break;case 268435456:u=r1;break;default:u=Fe}return a=Mv.bind(null,l),u=Mf(u,a),l.callbackPriority=t,l.callbackNode=u,t}return a!==null&&a!==null&&tc(a),l.callbackPriority=2,l.callbackNode=null,2}function Mv(l,t){var u=l.callbackNode;if(Vu()&&l.callbackNode!==u)return null;var a=H;return a=An(l,l===Q?a:0),a===0?null:(gv(l,a,t),Ov(l,kl()),l.callbackNode!=null&&l.callbackNode===u?Mv.bind(null,l):null)}function K0(l,t){if(Vu())return null;gv(l,t,!0)}function mh(l){zh(function(){L&6?Mf(b1,l):l()})}function fi(){return nu===0&&(nu=T1()),nu}function J0(l){return l==null||typeof l=="symbol"||typeof l=="boolean"?null:typeof l=="function"?l:Xe(""+l)}function w0(l,t){var u=t.ownerDocument.createElement("input");return u.name=t.name,u.value=t.value,l.id&&u.setAttribute("form",l.id),t.parentNode.insertBefore(u,t),l=new FormData(l),u.parentNode.removeChild(u),l}function oh(l,t,u,a,e){if(t==="submit"&&u&&u.stateNode===e){var n=J0((e[bl]||null).action),c=a.submitter;c&&(t=(t=c[bl]||null)?J0(t.formAction):c.getAttribute("formAction"),t!==null&&(n=t,c=null));var f=new On("action","action",null,a,e);l.push({event:f,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(nu!==0){var i=c?w0(e,c):new FormData(e);$c(u,{pending:!0,data:i,method:e.method,action:n},null,i)}}else typeof n=="function"&&(f.preventDefault(),i=c?w0(e,c):new FormData(e),$c(u,{pending:!0,data:i,method:e.method,action:n},n,i))},currentTarget:e}]})}}for(Ne=0;Ne<m0.length;Ne++)qe=m0[Ne],W0=qe.toLowerCase(),$0=qe[0].toUpperCase()+qe.slice(1),Kl(W0,"on"+$0);var qe,W0,$0,Ne;Kl(J1,"onAnimationEnd");Kl(w1,"onAnimationIteration");Kl(W1,"onAnimationStart");Kl("dblclick","onDoubleClick");Kl("focusin","onFocus");Kl("focusout","onBlur");Kl(Yy,"onTransitionRun");Kl(By,"onTransitionStart");Kl(Gy,"onTransitionCancel");Kl($1,"onTransitionEnd");Ku("onMouseEnter",["mouseout","mouseover"]);Ku("onMouseLeave",["mouseout","mouseover"]);Ku("onPointerEnter",["pointerout","pointerover"]);Ku("onPointerLeave",["pointerout","pointerover"]);du("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));du("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));du("onBeforeInput",["compositionend","keypress","textInput","paste"]);du("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));du("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));du("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ja="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),gh=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Ja));function _v(l,t){t=(t&4)!==0;for(var u=0;u<l.length;u++){var a=l[u],e=a.event;a=a.listeners;l:{var n=void 0;if(t)for(var c=a.length-1;0<=c;c--){var f=a[c],i=f.instance,s=f.currentTarget;if(f=f.listener,i!==n&&e.isPropagationStopped())break l;n=f,e.currentTarget=s;try{n(e)}catch(m){fn(m)}e.currentTarget=null,n=i}else for(c=0;c<a.length;c++){if(f=a[c],i=f.instance,s=f.currentTarget,f=f.listener,i!==n&&e.isPropagationStopped())break l;n=f,e.currentTarget=s;try{n(e)}catch(m){fn(m)}e.currentTarget=null,n=i}}}}function R(l,t){var u=t[Gc];u===void 0&&(u=t[Gc]=new Set);var a=l+"__bubble";u.has(a)||(Dv(t,l,2,!1),u.add(a))}function Mc(l,t,u){var a=0;t&&(a|=4),Dv(u,l,a,t)}var pe="_reactListening"+Math.random().toString(36).slice(2);function ii(l){if(!l[pe]){l[pe]=!0,D1.forEach(function(u){u!=="selectionchange"&&(gh.has(u)||Mc(u,!1,l),Mc(u,!0,l))});var t=l.nodeType===9?l:l.ownerDocument;t===null||t[pe]||(t[pe]=!0,Mc("selectionchange",!1,t))}}function Dv(l,t,u,a){switch(Cv(t)){case 2:var e=jh;break;case 8:e=Vh;break;default:e=yi}u=e.bind(null,t,u,l),e=void 0,!Zc||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(e=!0),a?e!==void 0?l.addEventListener(t,u,{capture:!0,passive:e}):l.addEventListener(t,u,!0):e!==void 0?l.addEventListener(t,u,{passive:e}):l.addEventListener(t,u,!1)}function _c(l,t,u,a,e){var n=a;if(!(t&1)&&!(t&2)&&a!==null)l:for(;;){if(a===null)return;var c=a.tag;if(c===3||c===4){var f=a.stateNode.containerInfo;if(f===e||f.nodeType===8&&f.parentNode===e)break;if(c===4)for(c=a.return;c!==null;){var i=c.tag;if((i===3||i===4)&&(i=c.stateNode.containerInfo,i===e||i.nodeType===8&&i.parentNode===e))return;c=c.return}for(;f!==null;){if(c=Pt(f),c===null)return;if(i=c.tag,i===5||i===6||i===26||i===27){a=n=c;continue l}f=f.parentNode}}a=a.return}B1(function(){var s=n,m=Uf(u),b=[];l:{var h=k1.get(l);if(h!==void 0){var o=On,r=l;switch(l){case"keypress":if(Ce(u)===0)break l;case"keydown":case"keyup":o=dy;break;case"focusin":r="focus",o=cc;break;case"focusout":r="blur",o=cc;break;case"beforeblur":case"afterblur":o=cc;break;case"click":if(u.button===2)break l;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":o=a0;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":o=Id;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":o=my;break;case J1:case w1:case W1:o=uy;break;case $1:o=gy;break;case"scroll":case"scrollend":o=Fd;break;case"wheel":o=by;break;case"copy":case"cut":case"paste":o=ey;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":o=n0;break;case"toggle":case"beforetoggle":o=ry}var A=(t&4)!==0,K=!A&&(l==="scroll"||l==="scrollend"),d=A?h!==null?h+"Capture":null:h;A=[];for(var v=s,y;v!==null;){var g=v;if(y=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||y===null||d===null||(g=Za(v,d),g!=null&&A.push(wa(v,g,y))),K)break;v=v.return}0<A.length&&(h=new o(h,r,null,u,m),b.push({event:h,listeners:A}))}}if(!(t&7)){l:{if(h=l==="mouseover"||l==="pointerover",o=l==="mouseout"||l==="pointerout",h&&u!==Cc&&(r=u.relatedTarget||u.fromElement)&&(Pt(r)||r[la]))break l;if((o||h)&&(h=m.window===m?m:(h=m.ownerDocument)?h.defaultView||h.parentWindow:window,o?(r=u.relatedTarget||u.toElement,o=s,r=r?Pt(r):null,r!==null&&(K=Iu(r),A=r.tag,r!==K||A!==5&&A!==27&&A!==6)&&(r=null)):(o=null,r=s),o!==r)){if(A=a0,g="onMouseLeave",d="onMouseEnter",v="mouse",(l==="pointerout"||l==="pointerover")&&(A=n0,g="onPointerLeave",d="onPointerEnter",v="pointer"),K=o==null?h:Ta(o),y=r==null?h:Ta(r),h=new A(g,v+"leave",o,u,m),h.target=K,h.relatedTarget=y,g=null,Pt(m)===s&&(A=new A(d,v+"enter",r,u,m),A.target=y,A.relatedTarget=K,g=A),K=g,o&&r)t:{for(A=o,d=r,v=0,y=A;y;y=Tu(y))v++;for(y=0,g=d;g;g=Tu(g))y++;for(;0<v-y;)A=Tu(A),v--;for(;0<y-v;)d=Tu(d),y--;for(;v--;){if(A===d||d!==null&&A===d.alternate)break t;A=Tu(A),d=Tu(d)}A=null}else A=null;o!==null&&k0(b,h,o,A,!1),r!==null&&K!==null&&k0(b,K,r,A,!0)}}l:{if(h=s?Ta(s):window,o=h.nodeName&&h.nodeName.toLowerCase(),o==="select"||o==="input"&&h.type==="file")var E=s0;else if(i0(h))if(x1)E=Hy;else{E=Uy;var D=Dy}else o=h.nodeName,!o||o.toLowerCase()!=="input"||h.type!=="checkbox"&&h.type!=="radio"?s&&Df(s.elementType)&&(E=s0):E=Ry;if(E&&(E=E(l,s))){Z1(b,E,u,m);break l}D&&D(l,h,s),l==="focusout"&&s&&h.type==="number"&&s.memoizedProps.value!=null&&Qc(h,"number",h.value)}switch(D=s?Ta(s):window,l){case"focusin":(i0(D)||D.contentEditable==="true")&&(Ru=D,xc=s,Ma=null);break;case"focusout":Ma=xc=Ru=null;break;case"mousedown":jc=!0;break;case"contextmenu":case"mouseup":case"dragend":jc=!1,h0(b,u,m);break;case"selectionchange":if(py)break;case"keydown":case"keyup":h0(b,u,m)}var T;if(Nf)l:{switch(l){case"compositionstart":var z="onCompositionStart";break l;case"compositionend":z="onCompositionEnd";break l;case"compositionupdate":z="onCompositionUpdate";break l}z=void 0}else Uu?Q1(l,u)&&(z="onCompositionEnd"):l==="keydown"&&u.keyCode===229&&(z="onCompositionStart");z&&(X1&&u.locale!=="ko"&&(Uu||z!=="onCompositionStart"?z==="onCompositionEnd"&&Uu&&(T=G1()):(qt=m,Rf="value"in qt?qt.value:qt.textContent,Uu=!0)),D=gn(s,z),0<D.length&&(z=new e0(z,l,null,u,m),b.push({event:z,listeners:D}),T?z.data=T:(T=C1(u),T!==null&&(z.data=T)))),(T=zy?Ay(l,u):Oy(l,u))&&(z=gn(s,"onBeforeInput"),0<z.length&&(D=new e0("onBeforeInput","beforeinput",null,u,m),b.push({event:D,listeners:z}),D.data=T)),oh(b,l,s,u,m)}_v(b,t)})}function wa(l,t,u){return{instance:l,listener:t,currentTarget:u}}function gn(l,t){for(var u=t+"Capture",a=[];l!==null;){var e=l,n=e.stateNode;e=e.tag,e!==5&&e!==26&&e!==27||n===null||(e=Za(l,u),e!=null&&a.unshift(wa(l,e,n)),e=Za(l,t),e!=null&&a.push(wa(l,e,n))),l=l.return}return a}function Tu(l){if(l===null)return null;do l=l.return;while(l&&l.tag!==5&&l.tag!==27);return l||null}function k0(l,t,u,a,e){for(var n=t._reactName,c=[];u!==null&&u!==a;){var f=u,i=f.alternate,s=f.stateNode;if(f=f.tag,i!==null&&i===a)break;f!==5&&f!==26&&f!==27||s===null||(i=s,e?(s=Za(u,n),s!=null&&c.unshift(wa(u,s,i))):e||(s=Za(u,n),s!=null&&c.push(wa(u,s,i)))),u=u.return}c.length!==0&&l.push({event:t,listeners:c})}var Sh=/\r\n?/g,bh=/\u0000|\uFFFD/g;function F0(l){return(typeof l=="string"?l:""+l).replace(Sh,`
|
9
|
-
`).replace(bh,"")}function Uv(l,t){return t=F0(t),F0(l)===t}function Bn(){}function p(l,t,u,a,e,n){switch(u){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||Ju(l,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&Ju(l,""+a);break;case"className":Te(l,"class",a);break;case"tabIndex":Te(l,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":Te(l,u,a);break;case"style":Y1(l,a,n);break;case"data":if(t!=="object"){Te(l,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||u!=="href")){l.removeAttribute(u);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){l.removeAttribute(u);break}a=Xe(""+a),l.setAttribute(u,a);break;case"action":case"formAction":if(typeof a=="function"){l.setAttribute(u,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof n=="function"&&(u==="formAction"?(t!=="input"&&p(l,t,"name",e.name,e,null),p(l,t,"formEncType",e.formEncType,e,null),p(l,t,"formMethod",e.formMethod,e,null),p(l,t,"formTarget",e.formTarget,e,null)):(p(l,t,"encType",e.encType,e,null),p(l,t,"method",e.method,e,null),p(l,t,"target",e.target,e,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){l.removeAttribute(u);break}a=Xe(""+a),l.setAttribute(u,a);break;case"onClick":a!=null&&(l.onclick=Bn);break;case"onScroll":a!=null&&R("scroll",l);break;case"onScrollEnd":a!=null&&R("scrollend",l);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(u=a.__html,u!=null){if(e.children!=null)throw Error(S(60));l.innerHTML=u}}break;case"multiple":l.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":l.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){l.removeAttribute("xlink:href");break}u=Xe(""+a),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,""+a):l.removeAttribute(u);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,""):l.removeAttribute(u);break;case"capture":case"download":a===!0?l.setAttribute(u,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,a):l.removeAttribute(u);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?l.setAttribute(u,a):l.removeAttribute(u);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?l.removeAttribute(u):l.setAttribute(u,a);break;case"popover":R("beforetoggle",l),R("toggle",l),Ge(l,"popover",a);break;case"xlinkActuate":tt(l,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":tt(l,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":tt(l,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":tt(l,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":tt(l,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":tt(l,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":tt(l,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":tt(l,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":tt(l,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":Ge(l,"is",a);break;case"innerText":case"textContent":break;default:(!(2<u.length)||u[0]!=="o"&&u[0]!=="O"||u[1]!=="n"&&u[1]!=="N")&&(u=$d.get(u)||u,Ge(l,u,a))}}function of(l,t,u,a,e,n){switch(u){case"style":Y1(l,a,n);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(u=a.__html,u!=null){if(e.children!=null)throw Error(S(60));l.innerHTML=u}}break;case"children":typeof a=="string"?Ju(l,a):(typeof a=="number"||typeof a=="bigint")&&Ju(l,""+a);break;case"onScroll":a!=null&&R("scroll",l);break;case"onScrollEnd":a!=null&&R("scrollend",l);break;case"onClick":a!=null&&(l.onclick=Bn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!U1.hasOwnProperty(u))l:{if(u[0]==="o"&&u[1]==="n"&&(e=u.endsWith("Capture"),t=u.slice(2,e?u.length-7:void 0),n=l[bl]||null,n=n!=null?n[u]:null,typeof n=="function"&&l.removeEventListener(t,n,e),typeof a=="function")){typeof n!="function"&&n!==null&&(u in l?l[u]=null:l.hasAttribute(u)&&l.removeAttribute(u)),l.addEventListener(t,a,e);break l}u in l?l[u]=a:a===!0?l.setAttribute(u,""):Ge(l,u,a)}}}function sl(l,t,u){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":R("error",l),R("load",l);var a=!1,e=!1,n;for(n in u)if(u.hasOwnProperty(n)){var c=u[n];if(c!=null)switch(n){case"src":a=!0;break;case"srcSet":e=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:p(l,t,n,c,u,null)}}e&&p(l,t,"srcSet",u.srcSet,u,null),a&&p(l,t,"src",u.src,u,null);return;case"input":R("invalid",l);var f=n=c=e=null,i=null,s=null;for(a in u)if(u.hasOwnProperty(a)){var m=u[a];if(m!=null)switch(a){case"name":e=m;break;case"type":c=m;break;case"checked":i=m;break;case"defaultChecked":s=m;break;case"value":n=m;break;case"defaultValue":f=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(S(137,t));break;default:p(l,t,a,m,u,null)}}N1(l,n,f,i,s,c,e,!1),Pe(l);return;case"select":R("invalid",l),a=c=n=null;for(e in u)if(u.hasOwnProperty(e)&&(f=u[e],f!=null))switch(e){case"value":n=f;break;case"defaultValue":c=f;break;case"multiple":a=f;default:p(l,t,e,f,u,null)}t=n,u=c,l.multiple=!!a,t!=null?Xu(l,!!a,t,!1):u!=null&&Xu(l,!!a,u,!0);return;case"textarea":R("invalid",l),n=e=a=null;for(c in u)if(u.hasOwnProperty(c)&&(f=u[c],f!=null))switch(c){case"value":a=f;break;case"defaultValue":e=f;break;case"children":n=f;break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(S(91));break;default:p(l,t,c,f,u,null)}p1(l,a,e,n),Pe(l);return;case"option":for(i in u)if(u.hasOwnProperty(i)&&(a=u[i],a!=null))switch(i){case"selected":l.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:p(l,t,i,a,u,null)}return;case"dialog":R("cancel",l),R("close",l);break;case"iframe":case"object":R("load",l);break;case"video":case"audio":for(a=0;a<Ja.length;a++)R(Ja[a],l);break;case"image":R("error",l),R("load",l);break;case"details":R("toggle",l);break;case"embed":case"source":case"link":R("error",l),R("load",l);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(s in u)if(u.hasOwnProperty(s)&&(a=u[s],a!=null))switch(s){case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:p(l,t,s,a,u,null)}return;default:if(Df(t)){for(m in u)u.hasOwnProperty(m)&&(a=u[m],a!==void 0&&of(l,t,m,a,u,void 0));return}}for(f in u)u.hasOwnProperty(f)&&(a=u[f],a!=null&&p(l,t,f,a,u,null))}function Eh(l,t,u,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var e=null,n=null,c=null,f=null,i=null,s=null,m=null;for(o in u){var b=u[o];if(u.hasOwnProperty(o)&&b!=null)switch(o){case"checked":break;case"value":break;case"defaultValue":i=b;default:a.hasOwnProperty(o)||p(l,t,o,null,a,b)}}for(var h in a){var o=a[h];if(b=u[h],a.hasOwnProperty(h)&&(o!=null||b!=null))switch(h){case"type":n=o;break;case"name":e=o;break;case"checked":s=o;break;case"defaultChecked":m=o;break;case"value":c=o;break;case"defaultValue":f=o;break;case"children":case"dangerouslySetInnerHTML":if(o!=null)throw Error(S(137,t));break;default:o!==b&&p(l,t,h,o,a,b)}}Xc(l,c,f,i,s,m,n,e);return;case"select":o=c=f=h=null;for(n in u)if(i=u[n],u.hasOwnProperty(n)&&i!=null)switch(n){case"value":break;case"multiple":o=i;default:a.hasOwnProperty(n)||p(l,t,n,null,a,i)}for(e in a)if(n=a[e],i=u[e],a.hasOwnProperty(e)&&(n!=null||i!=null))switch(e){case"value":h=n;break;case"defaultValue":f=n;break;case"multiple":c=n;default:n!==i&&p(l,t,e,n,a,i)}t=f,u=c,a=o,h!=null?Xu(l,!!u,h,!1):!!a!=!!u&&(t!=null?Xu(l,!!u,t,!0):Xu(l,!!u,u?[]:"",!1));return;case"textarea":o=h=null;for(f in u)if(e=u[f],u.hasOwnProperty(f)&&e!=null&&!a.hasOwnProperty(f))switch(f){case"value":break;case"children":break;default:p(l,t,f,null,a,e)}for(c in a)if(e=a[c],n=u[c],a.hasOwnProperty(c)&&(e!=null||n!=null))switch(c){case"value":h=e;break;case"defaultValue":o=e;break;case"children":break;case"dangerouslySetInnerHTML":if(e!=null)throw Error(S(91));break;default:e!==n&&p(l,t,c,e,a,n)}q1(l,h,o);return;case"option":for(var r in u)if(h=u[r],u.hasOwnProperty(r)&&h!=null&&!a.hasOwnProperty(r))switch(r){case"selected":l.selected=!1;break;default:p(l,t,r,null,a,h)}for(i in a)if(h=a[i],o=u[i],a.hasOwnProperty(i)&&h!==o&&(h!=null||o!=null))switch(i){case"selected":l.selected=h&&typeof h!="function"&&typeof h!="symbol";break;default:p(l,t,i,h,a,o)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in u)h=u[A],u.hasOwnProperty(A)&&h!=null&&!a.hasOwnProperty(A)&&p(l,t,A,null,a,h);for(s in a)if(h=a[s],o=u[s],a.hasOwnProperty(s)&&h!==o&&(h!=null||o!=null))switch(s){case"children":case"dangerouslySetInnerHTML":if(h!=null)throw Error(S(137,t));break;default:p(l,t,s,h,a,o)}return;default:if(Df(t)){for(var K in u)h=u[K],u.hasOwnProperty(K)&&h!==void 0&&!a.hasOwnProperty(K)&&of(l,t,K,void 0,a,h);for(m in a)h=a[m],o=u[m],!a.hasOwnProperty(m)||h===o||h===void 0&&o===void 0||of(l,t,m,h,a,o);return}}for(var d in u)h=u[d],u.hasOwnProperty(d)&&h!=null&&!a.hasOwnProperty(d)&&p(l,t,d,null,a,h);for(b in a)h=a[b],o=u[b],!a.hasOwnProperty(b)||h===o||h==null&&o==null||p(l,t,b,h,a,o)}var gf=null,Sf=null;function Sn(l){return l.nodeType===9?l:l.ownerDocument}function P0(l){switch(l){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Rv(l,t){if(l===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return l===1&&t==="foreignObject"?0:l}function bf(l,t){return l==="textarea"||l==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Dc=null;function rh(){var l=window.event;return l&&l.type==="popstate"?l===Dc?!1:(Dc=l,!0):(Dc=null,!1)}var Hv=typeof setTimeout=="function"?setTimeout:void 0,Th=typeof clearTimeout=="function"?clearTimeout:void 0,I0=typeof Promise=="function"?Promise:void 0,zh=typeof queueMicrotask=="function"?queueMicrotask:typeof I0<"u"?function(l){return I0.resolve(null).then(l).catch(Ah)}:Hv;function Ah(l){setTimeout(function(){throw l})}function Uc(l,t){var u=t,a=0;do{var e=u.nextSibling;if(l.removeChild(u),e&&e.nodeType===8)if(u=e.data,u==="/$"){if(a===0){l.removeChild(e),Pa(t);return}a--}else u!=="$"&&u!=="$?"&&u!=="$!"||a++;u=e}while(u);Pa(t)}function Ef(l){var t=l.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var u=t;switch(t=t.nextSibling,u.nodeName){case"HTML":case"HEAD":case"BODY":Ef(u),_f(u);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(u.rel.toLowerCase()==="stylesheet")continue}l.removeChild(u)}}function Oh(l,t,u,a){for(;l.nodeType===1;){var e=u;if(l.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(l.nodeName!=="INPUT"||l.type!=="hidden"))break}else if(a){if(!l[Ca])switch(t){case"meta":if(!l.hasAttribute("itemprop"))break;return l;case"link":if(n=l.getAttribute("rel"),n==="stylesheet"&&l.hasAttribute("data-precedence"))break;if(n!==e.rel||l.getAttribute("href")!==(e.href==null?null:e.href)||l.getAttribute("crossorigin")!==(e.crossOrigin==null?null:e.crossOrigin)||l.getAttribute("title")!==(e.title==null?null:e.title))break;return l;case"style":if(l.hasAttribute("data-precedence"))break;return l;case"script":if(n=l.getAttribute("src"),(n!==(e.src==null?null:e.src)||l.getAttribute("type")!==(e.type==null?null:e.type)||l.getAttribute("crossorigin")!==(e.crossOrigin==null?null:e.crossOrigin))&&n&&l.hasAttribute("async")&&!l.hasAttribute("itemprop"))break;return l;default:return l}}else if(t==="input"&&l.type==="hidden"){var n=e.name==null?null:""+e.name;if(e.type==="hidden"&&l.getAttribute("name")===n)return l}else return l;if(l=Ll(l.nextSibling),l===null)break}return null}function Mh(l,t,u){if(t==="")return null;for(;l.nodeType!==3;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!u||(l=Ll(l.nextSibling),l===null))return null;return l}function Ll(l){for(;l!=null;l=l.nextSibling){var t=l.nodeType;if(t===1||t===3)break;if(t===8){if(t=l.data,t==="$"||t==="$!"||t==="$?"||t==="F!"||t==="F")break;if(t==="/$")return null}}return l}function l1(l){l=l.previousSibling;for(var t=0;l;){if(l.nodeType===8){var u=l.data;if(u==="$"||u==="$!"||u==="$?"){if(t===0)return l;t--}else u==="/$"&&t++}l=l.previousSibling}return null}function Nv(l,t,u){switch(t=Sn(u),l){case"html":if(l=t.documentElement,!l)throw Error(S(452));return l;case"head":if(l=t.head,!l)throw Error(S(453));return l;case"body":if(l=t.body,!l)throw Error(S(454));return l;default:throw Error(S(451))}}var Zl=new Map,t1=new Set;function bn(l){return typeof l.getRootNode=="function"?l.getRootNode():l.ownerDocument}var bt=C.d;C.d={f:_h,r:Dh,D:Uh,C:Rh,L:Hh,m:Nh,X:ph,S:qh,M:Yh};function _h(){var l=bt.f(),t=pn();return l||t}function Dh(l){var t=ta(l);t!==null&&t.tag===5&&t.type==="form"?Ns(t):bt.r(l)}var aa=typeof document>"u"?null:document;function qv(l,t,u){var a=aa;if(a&&typeof t=="string"&&t){var e=Bl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),t1.has(e)||(t1.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),sl(t,"link",l),el(t),a.head.appendChild(t)))}}function Uh(l){bt.D(l),qv("dns-prefetch",l,null)}function Rh(l,t){bt.C(l,t),qv("preconnect",l,t)}function Hh(l,t,u){bt.L(l,t,u);var a=aa;if(a&&l&&t){var e='link[rel="preload"][as="'+Bl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+Bl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+Bl(u.imageSizes)+'"]')):e+='[href="'+Bl(l)+'"]';var n=e;switch(t){case"style":n=Pu(l);break;case"script":n=ea(l)}Zl.has(n)||(l=Z({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Zl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(se(n))||t==="script"&&a.querySelector(ve(n))||(t=a.createElement("link"),sl(t,"link",l),el(t),a.head.appendChild(t)))}}function Nh(l,t){bt.m(l,t);var u=aa;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+Bl(a)+'"][href="'+Bl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ea(l)}if(!Zl.has(n)&&(l=Z({rel:"modulepreload",href:l},t),Zl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(ve(n)))return}a=u.createElement("link"),sl(a,"link",l),el(a),u.head.appendChild(a)}}}function qh(l,t,u){bt.S(l,t,u);var a=aa;if(a&&l){var e=Gu(a).hoistableStyles,n=Pu(l);t=t||"default";var c=e.get(n);if(!c){var f={loading:0,preload:null};if(c=a.querySelector(se(n)))f.loading=5;else{l=Z({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Zl.get(n))&&si(l,u);var i=c=a.createElement("link");el(i),sl(i,"link",l),i._p=new Promise(function(s,m){i.onload=s,i.onerror=m}),i.addEventListener("load",function(){f.loading|=1}),i.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Ke(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:f},e.set(n,c)}}}function ph(l,t){bt.X(l,t);var u=aa;if(u&&l){var a=Gu(u).hoistableScripts,e=ea(l),n=a.get(e);n||(n=u.querySelector(ve(e)),n||(l=Z({src:l,async:!0},t),(t=Zl.get(e))&&vi(l,t),n=u.createElement("script"),el(n),sl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function Yh(l,t){bt.M(l,t);var u=aa;if(u&&l){var a=Gu(u).hoistableScripts,e=ea(l),n=a.get(e);n||(n=u.querySelector(ve(e)),n||(l=Z({src:l,async:!0,type:"module"},t),(t=Zl.get(e))&&vi(l,t),n=u.createElement("script"),el(n),sl(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function u1(l,t,u,a){var e=(e=pt.current)?bn(e):null;if(!e)throw Error(S(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=Pu(u.href),u=Gu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=Pu(u.href);var n=Gu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(se(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Zl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Zl.set(l,u),n||Bh(e,l,u,c.state))),t&&a===null)throw Error(S(528,""));return c}if(t&&a!==null)throw Error(S(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ea(u),u=Gu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(S(444,l))}}function Pu(l){return'href="'+Bl(l)+'"'}function se(l){return'link[rel="stylesheet"]['+l+"]"}function pv(l){return Z({},l,{"data-precedence":l.precedence,precedence:null})}function Bh(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),sl(t,"link",u),el(t),l.head.appendChild(t))}function ea(l){return'[src="'+Bl(l)+'"]'}function ve(l){return"script[async]"+l}function a1(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+Bl(u.href)+'"]');if(a)return t.instance=a,el(a),a;var e=Z({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),el(a),sl(a,"style",e),Ke(a,u.precedence,l),t.instance=a;case"stylesheet":e=Pu(u.href);var n=l.querySelector(se(e));if(n)return t.state.loading|=4,t.instance=n,el(n),n;a=pv(u),(e=Zl.get(e))&&si(a,e),n=(l.ownerDocument||l).createElement("link"),el(n);var c=n;return c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),sl(n,"link",a),t.state.loading|=4,Ke(n,u.precedence,l),t.instance=n;case"script":return n=ea(u.src),(e=l.querySelector(ve(n)))?(t.instance=e,el(e),e):(a=u,(e=Zl.get(n))&&(a=Z({},u),vi(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),el(e),sl(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(S(443,t.type))}else t.type==="stylesheet"&&!(t.state.loading&4)&&(a=t.instance,t.state.loading|=4,Ke(a,u.precedence,l));return t.instance}function Ke(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c<a.length;c++){var f=a[c];if(f.dataset.precedence===t)n=f;else if(n!==e)break}n?n.parentNode.insertBefore(l,n.nextSibling):(t=u.nodeType===9?u.head:u,t.insertBefore(l,t.firstChild))}function si(l,t){l.crossOrigin==null&&(l.crossOrigin=t.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=t.referrerPolicy),l.title==null&&(l.title=t.title)}function vi(l,t){l.crossOrigin==null&&(l.crossOrigin=t.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=t.referrerPolicy),l.integrity==null&&(l.integrity=t.integrity)}var Je=null;function e1(l,t,u){if(Je===null){var a=new Map,e=Je=new Map;e.set(u,a)}else e=Je,a=e.get(u),a||(a=new Map,e.set(u,a));if(a.has(l))return a;for(a.set(l,null),u=u.getElementsByTagName(l),e=0;e<u.length;e++){var n=u[e];if(!(n[Ca]||n[dl]||l==="link"&&n.getAttribute("rel")==="stylesheet")&&n.namespaceURI!=="http://www.w3.org/2000/svg"){var c=n.getAttribute(t)||"";c=l+c;var f=a.get(c);f?f.push(n):a.set(c,[n])}}return a}function n1(l,t,u){l=l.ownerDocument||l,l.head.insertBefore(u,t==="title"?l.querySelector("head > title"):null)}function Gh(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Yv(l){return!(l.type==="stylesheet"&&!(l.state.loading&3))}var Wa=null;function Xh(){}function Qh(l,t,u){if(Wa===null)throw Error(S(475));var a=Wa;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&!(t.state.loading&4)){if(t.instance===null){var e=Pu(u.href),n=l.querySelector(se(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=En.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,el(n);return}n=l.ownerDocument||l,u=pv(u),(e=Zl.get(e))&&si(u,e),n=n.createElement("link"),el(n);var c=n;c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),sl(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&!(t.state.loading&3)&&(a.count++,t=En.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function Ch(){if(Wa===null)throw Error(S(475));var l=Wa;return l.stylesheets&&l.count===0&&rf(l,l.stylesheets),0<l.count?function(t){var u=setTimeout(function(){if(l.stylesheets&&rf(l,l.stylesheets),l.unsuspend){var a=l.unsuspend;l.unsuspend=null,a()}},6e4);return l.unsuspend=t,function(){l.unsuspend=null,clearTimeout(u)}}:null}function En(){if(this.count--,this.count===0){if(this.stylesheets)rf(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var rn=null;function rf(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,rn=new Map,t.forEach(Zh,l),rn=null,En.call(l))}function Zh(l,t){if(!(t.state.loading&4)){var u=rn.get(l);if(u)var a=u.get(null);else{u=new Map,rn.set(l,u);for(var e=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n<e.length;n++){var c=e[n];(c.nodeName==="LINK"||c.getAttribute("media")!=="not all")&&(u.set(c.dataset.precedence,c),a=c)}a&&u.set(null,a)}e=t.instance,c=e.getAttribute("data-precedence"),n=u.get(c)||a,n===a&&u.set(null,e),u.set(c,e),this.count++,a=En.bind(this),e.addEventListener("load",a),e.addEventListener("error",a),n?n.parentNode.insertBefore(e,n.nextSibling):(l=l.nodeType===9?l.head:l,l.insertBefore(e,l.firstChild)),t.state.loading|=4}}var $a={$$typeof:it,Provider:null,Consumer:null,_currentValue:lu,_currentValue2:lu,_threadCount:0};function xh(l,t,u,a,e,n,c,f){this.tag=1,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=uc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=uc(0),this.hiddenUpdates=uc(null),this.identifierPrefix=a,this.onUncaughtError=e,this.onCaughtError=n,this.onRecoverableError=c,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=f,this.incompleteTransitions=new Map}function Bv(l,t,u,a,e,n,c,f,i,s,m,b){return l=new xh(l,t,u,c,f,i,s,b),t=1,n===!0&&(t|=24),n=Xl(3,null,null,t),l.current=n,n.stateNode=l,t=Qf(),t.refCount++,l.pooledCache=t,t.refCount++,n.memoizedState={element:a,isDehydrated:u,cache:t},If(n),l}function Gv(l){return l?(l=qu,l):qu}function Xv(l,t,u,a,e,n){e=Gv(e),a.context===null?a.context=e:a.pendingContext=e,a=Yt(t),a.payload={element:u},n=n===void 0?null:n,n!==null&&(a.callback=n),u=Bt(l,a,t),u!==null&&(gl(u,l,t),Na(u,l,t))}function c1(l,t){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var u=l.retryLane;l.retryLane=u!==0&&u<t?u:t}}function di(l,t){c1(l,t),(l=l.alternate)&&c1(l,t)}function Qv(l){if(l.tag===13){var t=xt(l,67108864);t!==null&&gl(t,l,67108864),di(l,67108864)}}var Tn=!0;function jh(l,t,u,a){var e=O.T;O.T=null;var n=C.p;try{C.p=2,yi(l,t,u,a)}finally{C.p=n,O.T=e}}function Vh(l,t,u,a){var e=O.T;O.T=null;var n=C.p;try{C.p=8,yi(l,t,u,a)}finally{C.p=n,O.T=e}}function yi(l,t,u,a){if(Tn){var e=Tf(a);if(e===null)_c(l,t,a,zn,u),f1(l,a);else if(Kh(e,l,t,u,a))a.stopPropagation();else if(f1(l,a),t&4&&-1<Lh.indexOf(l)){for(;e!==null;){var n=ta(e);if(n!==null)switch(n.tag){case 3:if(n=n.stateNode,n.current.memoizedState.isDehydrated){var c=$t(n.pendingLanes);if(c!==0){var f=n;for(f.pendingLanes|=2,f.entangledLanes|=2;c;){var i=1<<31-Ml(c);f.entanglements[1]|=i,c&=~i}lt(n),!(L&6)&&(yn=kl()+500,ie(0,!1))}}break;case 13:f=xt(n,2),f!==null&&gl(f,n,2),pn(),di(n,2)}if(n=Tf(a),n===null&&_c(l,t,a,zn,u),n===e)break;e=n}e!==null&&a.stopPropagation()}else _c(l,t,a,null,u)}}function Tf(l){return l=Uf(l),hi(l)}var zn=null;function hi(l){if(zn=null,l=Pt(l),l!==null){var t=Iu(l);if(t===null)l=null;else{var u=t.tag;if(u===13){if(l=g1(t),l!==null)return l;l=null}else if(u===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;l=null}else t!==l&&(l=null)}}return zn=l,null}function Cv(l){switch(l){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Nd()){case b1:return 2;case E1:return 8;case Fe:case qd:return 32;case r1:return 268435456;default:return 32}default:return 32}}var zf=!1,Qt=null,Ct=null,Zt=null,ka=new Map,Fa=new Map,Ht=[],Lh="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function f1(l,t){switch(l){case"focusin":case"focusout":Qt=null;break;case"dragenter":case"dragleave":Ct=null;break;case"mouseover":case"mouseout":Zt=null;break;case"pointerover":case"pointerout":ka.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Fa.delete(t.pointerId)}}function ga(l,t,u,a,e,n){return l===null||l.nativeEvent!==n?(l={blockedOn:t,domEventName:u,eventSystemFlags:a,nativeEvent:n,targetContainers:[e]},t!==null&&(t=ta(t),t!==null&&Qv(t)),l):(l.eventSystemFlags|=a,t=l.targetContainers,e!==null&&t.indexOf(e)===-1&&t.push(e),l)}function Kh(l,t,u,a,e){switch(t){case"focusin":return Qt=ga(Qt,l,t,u,a,e),!0;case"dragenter":return Ct=ga(Ct,l,t,u,a,e),!0;case"mouseover":return Zt=ga(Zt,l,t,u,a,e),!0;case"pointerover":var n=e.pointerId;return ka.set(n,ga(ka.get(n)||null,l,t,u,a,e)),!0;case"gotpointercapture":return n=e.pointerId,Fa.set(n,ga(Fa.get(n)||null,l,t,u,a,e)),!0}return!1}function Zv(l){var t=Pt(l.target);if(t!==null){var u=Iu(t);if(u!==null){if(t=u.tag,t===13){if(t=g1(u),t!==null){l.blockedOn=t,xd(l.priority,function(){if(u.tag===13){var a=_l(),e=xt(u,a);e!==null&&gl(e,u,a),di(u,a)}});return}}else if(t===3&&u.stateNode.current.memoizedState.isDehydrated){l.blockedOn=u.tag===3?u.stateNode.containerInfo:null;return}}}l.blockedOn=null}function we(l){if(l.blockedOn!==null)return!1;for(var t=l.targetContainers;0<t.length;){var u=Tf(l.nativeEvent);if(u===null){u=l.nativeEvent;var a=new u.constructor(u.type,u);Cc=a,u.target.dispatchEvent(a),Cc=null}else return t=ta(u),t!==null&&Qv(t),l.blockedOn=u,!1;t.shift()}return!0}function i1(l,t,u){we(l)&&u.delete(t)}function Jh(){zf=!1,Qt!==null&&we(Qt)&&(Qt=null),Ct!==null&&we(Ct)&&(Ct=null),Zt!==null&&we(Zt)&&(Zt=null),ka.forEach(i1),Fa.forEach(i1)}function Ye(l,t){l.blockedOn===t&&(l.blockedOn=null,zf||(zf=!0,tl.unstable_scheduleCallback(tl.unstable_NormalPriority,Jh)))}var Be=null;function s1(l){Be!==l&&(Be=l,tl.unstable_scheduleCallback(tl.unstable_NormalPriority,function(){Be===l&&(Be=null);for(var t=0;t<l.length;t+=3){var u=l[t],a=l[t+1],e=l[t+2];if(typeof a!="function"){if(hi(a||u)===null)continue;break}var n=ta(u);n!==null&&(l.splice(t,3),t-=3,$c(n,{pending:!0,data:e,method:u.method,action:a},a,e))}}))}function Pa(l){function t(i){return Ye(i,l)}Qt!==null&&Ye(Qt,l),Ct!==null&&Ye(Ct,l),Zt!==null&&Ye(Zt,l),ka.forEach(t),Fa.forEach(t);for(var u=0;u<Ht.length;u++){var a=Ht[u];a.blockedOn===l&&(a.blockedOn=null)}for(;0<Ht.length&&(u=Ht[0],u.blockedOn===null);)Zv(u),u.blockedOn===null&&Ht.shift();if(u=(l.ownerDocument||l).$$reactFormReplay,u!=null)for(a=0;a<u.length;a+=3){var e=u[a],n=u[a+1],c=e[bl]||null;if(typeof n=="function")c||s1(u);else if(c){var f=null;if(n&&n.hasAttribute("formAction")){if(e=n,c=n[bl]||null)f=c.formAction;else if(hi(e)!==null)continue}else f=c.action;typeof f=="function"?u[a+1]=f:(u.splice(a,3),a-=3),s1(u)}}}function mi(l){this._internalRoot=l}Gn.prototype.render=mi.prototype.render=function(l){var t=this._internalRoot;if(t===null)throw Error(S(409));var u=t.current,a=_l();Xv(u,a,l,t,null,null)};Gn.prototype.unmount=mi.prototype.unmount=function(){var l=this._internalRoot;if(l!==null){this._internalRoot=null;var t=l.containerInfo;l.tag===0&&Vu(),Xv(l.current,2,null,l,null,null),pn(),t[la]=null}};function Gn(l){this._internalRoot=l}Gn.prototype.unstable_scheduleHydration=function(l){if(l){var t=_1();l={blockedOn:null,target:l,priority:t};for(var u=0;u<Ht.length&&t!==0&&t<Ht[u].priority;u++);Ht.splice(u,0,l),u===0&&Zv(l)}};var v1=d1.version;if(v1!=="19.0.0")throw Error(S(527,v1,"19.0.0"));C.findDOMNode=function(l){var t=l._reactInternals;if(t===void 0)throw typeof l.render=="function"?Error(S(188)):(l=Object.keys(l).join(","),Error(S(268,l)));return l=Ud(t),l=l!==null?S1(l):null,l=l===null?null:l.stateNode,l};var wh={bundleType:0,version:"19.0.0",rendererPackageName:"react-dom",currentDispatcherRef:O,findFiberByHostInstance:Pt,reconcilerVersion:"19.0.0"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Sa=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Sa.isDisabled&&Sa.supportsFiber))try{Ia=Sa.inject(wh),Ol=Sa}catch{}var Sa;Xn.createRoot=function(l,t){if(!y1(l))throw Error(S(299));var u=!1,a="",e=Xs,n=Qs,c=Cs,f=null;return t!=null&&(t.unstable_strictMode===!0&&(u=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(e=t.onUncaughtError),t.onCaughtError!==void 0&&(n=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError),t.unstable_transitionCallbacks!==void 0&&(f=t.unstable_transitionCallbacks)),t=Bv(l,1,!1,null,null,u,a,e,n,c,f,null),l[la]=t.current,ii(l.nodeType===8?l.parentNode:l),new mi(t)};Xn.hydrateRoot=function(l,t,u){if(!y1(l))throw Error(S(299));var a=!1,e="",n=Xs,c=Qs,f=Cs,i=null,s=null;return u!=null&&(u.unstable_strictMode===!0&&(a=!0),u.identifierPrefix!==void 0&&(e=u.identifierPrefix),u.onUncaughtError!==void 0&&(n=u.onUncaughtError),u.onCaughtError!==void 0&&(c=u.onCaughtError),u.onRecoverableError!==void 0&&(f=u.onRecoverableError),u.unstable_transitionCallbacks!==void 0&&(i=u.unstable_transitionCallbacks),u.formState!==void 0&&(s=u.formState)),t=Bv(l,1,!0,t,u??null,a,e,n,c,f,i,s),t.context=Gv(null),u=t.current,a=_l(),e=Yt(a),e.callback=null,Bt(u,e,a),t.current.lanes=a,te(t,a),lt(t),l[la]=t.current,ii(l),new Gn(t)};Xn.version="19.0.0"});var Lv=rt((fm,Vv)=>{"use strict";function jv(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(jv)}catch(l){console.error(l)}}jv(),Vv.exports=xv()});var $=Qn(na());var rl=Qn(na(),1),Kv=Qn(Lv(),1),Jv=rl.createContext(null);function Wh(){let l=rl.useContext(Jv);if(!l)throw new Error("RenderContext not found");return l}function $h(){return Wh().model}function oi(l){let t=$h(),[u,a]=rl.useState(t.get(l));return rl.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function wv(l){return({el:t,model:u,experimental:a})=>{let e=Kv.createRoot(t);return e.render(rl.createElement(rl.StrictMode,null,rl.createElement(Jv.Provider,{value:{model:u,experimental:a}},rl.createElement(l)))),()=>e.unmount()}}var Wv=({c:l,participantSequencesCount:t,max:u,sum:a})=>$.createElement("div",{className:"sequenceComponent"},typeof l=="string"?$.createElement("div",{className:"sequenceComponentIndividual",title:`${l} = ${t[l]/u}`,style:{opacity:t[l]/u}}):$.createElement($.Fragment,null,l.components.map((e,n)=>$.createElement(Wv,{key:n,c:e,participantSequencesCount:t,max:u,sum:a})))),$v=l=>l.map(t=>typeof t=="string"?t:$v(t.components).flat());function kh(l){let t=[];function u(a){a.interruptions&&a.interruptions.forEach(e=>{e.components&&t.push(...e.components)}),Array.isArray(a.components)&&a.components.forEach(e=>{typeof e=="object"&&u(e)})}return u(l),t}var Fh=({d:l,participantSequences:t})=>{let[u,a,e]=$.useMemo(()=>{let n={};if(t.length){let i=$v(t).flat(),s=kh(l);console.log(s),i.forEach(m=>{n[m]||(n[m]=0),n[m]++});for(let m=0;m<s.length;m++)s[m]in n&&delete n[s[m]]}let c=Object.values(n).reduce((i,s)=>i+s,0),f=Math.max(...Object.values(n));return[n,f,c]},[t]);return $.createElement("div",{className:"sequence"},l.components.map((n,c)=>$.createElement(Wv,{key:c,c:n,participantSequencesCount:u,max:a,sum:e})))},Ph=wv(()=>{let[l]=oi("config"),[t,u]=$.useState(0),[a,e]=oi("sequence"),n=$.useRef(null);return $.useEffect(()=>{t&&n.current?.contentWindow?.postMessage({type:"revisitWidget/CONFIG",payload:JSON.stringify(l)},"http://localhost:8080")},[l,t]),$.useEffect(()=>{let c=f=>{f.data.type==="revisitWidget/READY"?u(i=>i+1):f.data.type==="revisitWidget/SEQUENCE_ARRAY"&&e(f.data.payload)};return window.addEventListener("message",c),()=>{window.removeEventListener("message",c)}},[l]),$.createElement("div",{className:"revisit_notebook_widget"},$.createElement(Fh,{d:l.sequence,participantSequences:a}),$.createElement("iframe",{ref:n,src:"http://localhost:8080/revisit-widget",style:{width:"100%",height:"400px"}}))}),hm={render:Ph};export{hm as default};
|
8
|
+
`+u.stack}}function Iu(l){var t=l,u=l;if(l.alternate)for(;t.return;)t=t.return;else{l=t;do t=l,t.flags&4098&&(u=t.return),l=t.return;while(l)}return t.tag===3?u:null}function g1(l){if(l.tag===13){var t=l.memoizedState;if(t===null&&(l=l.alternate,l!==null&&(t=l.memoizedState)),t!==null)return t.dehydrated}return null}function ki(l){if(Iu(l)!==l)throw Error(S(188))}function _d(l){var t=l.alternate;if(!t){if(t=Iu(l),t===null)throw Error(S(188));return t!==l?null:l}for(var u=l,a=t;;){var e=u.return;if(e===null)break;var n=e.alternate;if(n===null){if(a=e.return,a!==null){u=a;continue}break}if(e.child===n.child){for(n=e.child;n;){if(n===u)return ki(e),l;if(n===a)return ki(e),t;n=n.sibling}throw Error(S(188))}if(u.return!==a.return)u=e,a=n;else{for(var c=!1,f=e.child;f;){if(f===u){c=!0,u=e,a=n;break}if(f===a){c=!0,a=e,u=n;break}f=f.sibling}if(!c){for(f=n.child;f;){if(f===u){c=!0,u=n,a=e;break}if(f===a){c=!0,a=n,u=e;break}f=f.sibling}if(!c)throw Error(S(189))}}if(u.alternate!==a)throw Error(S(190))}if(u.tag!==3)throw Error(S(188));return u.stateNode.current===u?l:t}function S1(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l;for(l=l.child;l!==null;){if(t=S1(l),t!==null)return t;l=l.sibling}return null}var ra=Array.isArray,C=rd.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,lu={pending:!1,data:null,method:null,action:null},qc=[],_u=-1;function Il(l){return{current:l}}function nl(l){0>_u||(l.current=qc[_u],qc[_u]=null,_u--)}function x(l,t){_u++,qc[_u]=l.current,l.current=t}var $l=Il(null),Qa=Il(null),qt=Il(null),We=Il(null);function $e(l,t){switch(x(qt,t),x(Qa,l),x($l,null),l=t.nodeType,l){case 9:case 11:t=(t=t.documentElement)&&(t=t.namespaceURI)?P0(t):0;break;default:if(l=l===8?t.parentNode:t,t=l.tagName,l=l.namespaceURI)l=P0(l),t=Rv(l,t);else switch(t){case"svg":t=1;break;case"math":t=2;break;default:t=0}}nl($l),x($l,t)}function Lu(){nl($l),nl(Qa),nl(qt)}function Yc(l){l.memoizedState!==null&&x(We,l);var t=$l.current,u=Rv(t,l.type);t!==u&&(x(Qa,l),x($l,u))}function ke(l){Qa.current===l&&(nl($l),nl(Qa)),We.current===l&&(nl(We),$a._currentValue=lu)}var Bc=Object.prototype.hasOwnProperty,Mf=ll.unstable_scheduleCallback,tc=ll.unstable_cancelCallback,Dd=ll.unstable_shouldYield,Ud=ll.unstable_requestPaint,kl=ll.unstable_now,Rd=ll.unstable_getCurrentPriorityLevel,b1=ll.unstable_ImmediatePriority,E1=ll.unstable_UserBlockingPriority,Fe=ll.unstable_NormalPriority,Hd=ll.unstable_LowPriority,r1=ll.unstable_IdlePriority,Nd=ll.log,pd=ll.unstable_setDisableYieldValue,Ia=null,Ol=null;function qd(l){if(Ol&&typeof Ol.onCommitFiberRoot=="function")try{Ol.onCommitFiberRoot(Ia,l,void 0,(l.current.flags&128)===128)}catch{}}function Nt(l){if(typeof Nd=="function"&&pd(l),Ol&&typeof Ol.setStrictMode=="function")try{Ol.setStrictMode(Ia,l)}catch{}}var Ml=Math.clz32?Math.clz32:Gd,Yd=Math.log,Bd=Math.LN2;function Gd(l){return l>>>=0,l===0?32:31-(Yd(l)/Bd|0)|0}var Ee=128,re=4194304;function $t(l){var t=l&42;if(t!==0)return t;switch(l&-l){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return l&4194176;case 4194304:case 8388608:case 16777216:case 33554432:return l&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return l}}function An(l,t){var u=l.pendingLanes;if(u===0)return 0;var a=0,e=l.suspendedLanes,n=l.pingedLanes,c=l.warmLanes;l=l.finishedLanes!==0;var f=u&134217727;return f!==0?(u=f&~e,u!==0?a=$t(u):(n&=f,n!==0?a=$t(n):l||(c=f&~c,c!==0&&(a=$t(c))))):(f=u&~e,f!==0?a=$t(f):n!==0?a=$t(n):l||(c=u&~c,c!==0&&(a=$t(c)))),a===0?0:t!==0&&t!==a&&!(t&e)&&(e=a&-a,c=t&-t,e>=c||e===32&&(c&4194176)!==0)?t:a}function le(l,t){return(l.pendingLanes&~(l.suspendedLanes&~l.pingedLanes)&t)===0}function Xd(l,t){switch(l){case 1:case 2:case 4:case 8:return t+250;case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function T1(){var l=Ee;return Ee<<=1,!(Ee&4194176)&&(Ee=128),l}function z1(){var l=re;return re<<=1,!(re&62914560)&&(re=4194304),l}function uc(l){for(var t=[],u=0;31>u;u++)t.push(l);return t}function te(l,t){l.pendingLanes|=t,t!==268435456&&(l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0)}function Qd(l,t,u,a,e,n){var c=l.pendingLanes;l.pendingLanes=u,l.suspendedLanes=0,l.pingedLanes=0,l.warmLanes=0,l.expiredLanes&=u,l.entangledLanes&=u,l.errorRecoveryDisabledLanes&=u,l.shellSuspendCounter=0;var f=l.entanglements,i=l.expirationTimes,s=l.hiddenUpdates;for(u=c&~u;0<u;){var o=31-Ml(u),b=1<<o;f[o]=0,i[o]=-1;var h=s[o];if(h!==null)for(s[o]=null,o=0;o<h.length;o++){var m=h[o];m!==null&&(m.lane&=-536870913)}u&=~b}a!==0&&A1(l,a,0),n!==0&&e===0&&l.tag!==0&&(l.suspendedLanes|=n&~(c&~t))}function A1(l,t,u){l.pendingLanes|=t,l.suspendedLanes&=~t;var a=31-Ml(t);l.entangledLanes|=t,l.entanglements[a]=l.entanglements[a]|1073741824|u&4194218}function O1(l,t){var u=l.entangledLanes|=t;for(l=l.entanglements;u;){var a=31-Ml(u),e=1<<a;e&t|l[a]&t&&(l[a]|=t),u&=~e}}function M1(l){return l&=-l,2<l?8<l?l&134217727?32:268435456:8:2}function _1(){var l=C.p;return l!==0?l:(l=window.event,l===void 0?32:Cv(l.type))}function Cd(l,t){var u=C.p;try{return C.p=l,t()}finally{C.p=u}}var Kt=Math.random().toString(36).slice(2),vl="__reactFiber$"+Kt,bl="__reactProps$"+Kt,la="__reactContainer$"+Kt,Gc="__reactEvents$"+Kt,Zd="__reactListeners$"+Kt,xd="__reactHandles$"+Kt,Fi="__reactResources$"+Kt,Ca="__reactMarker$"+Kt;function _f(l){delete l[vl],delete l[bl],delete l[Gc],delete l[Zd],delete l[xd]}function Pt(l){var t=l[vl];if(t)return t;for(var u=l.parentNode;u;){if(t=u[la]||u[vl]){if(u=t.alternate,t.child!==null||u!==null&&u.child!==null)for(l=l1(l);l!==null;){if(u=l[vl])return u;l=l1(l)}return t}l=u,u=l.parentNode}return null}function ta(l){if(l=l[vl]||l[la]){var t=l.tag;if(t===5||t===6||t===13||t===26||t===27||t===3)return l}return null}function Ta(l){var t=l.tag;if(t===5||t===26||t===27||t===6)return l.stateNode;throw Error(S(33))}function Gu(l){var t=l[Fi];return t||(t=l[Fi]={hoistableStyles:new Map,hoistableScripts:new Map}),t}function al(l){l[Ca]=!0}var D1=new Set,U1={};function du(l,t){Ku(l,t),Ku(l+"Capture",t)}function Ku(l,t){for(U1[l]=t,l=0;l<t.length;l++)D1.add(t[l])}var mt=!(typeof window>"u"||typeof window.document>"u"||typeof window.document.createElement>"u"),jd=RegExp("^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$"),Pi={},Ii={};function Vd(l){return Bc.call(Ii,l)?!0:Bc.call(Pi,l)?!1:jd.test(l)?Ii[l]=!0:(Pi[l]=!0,!1)}function Ge(l,t,u){if(Vd(t))if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":l.removeAttribute(t);return;case"boolean":var a=t.toLowerCase().slice(0,5);if(a!=="data-"&&a!=="aria-"){l.removeAttribute(t);return}}l.setAttribute(t,""+u)}}function Te(l,t,u){if(u===null)l.removeAttribute(t);else{switch(typeof u){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(t);return}l.setAttribute(t,""+u)}}function tt(l,t,u,a){if(a===null)l.removeAttribute(u);else{switch(typeof a){case"undefined":case"function":case"symbol":case"boolean":l.removeAttribute(u);return}l.setAttributeNS(t,u,""+a)}}function pl(l){switch(typeof l){case"bigint":case"boolean":case"number":case"string":case"undefined":return l;case"object":return l;default:return""}}function R1(l){var t=l.type;return(l=l.nodeName)&&l.toLowerCase()==="input"&&(t==="checkbox"||t==="radio")}function Ld(l){var t=R1(l)?"checked":"value",u=Object.getOwnPropertyDescriptor(l.constructor.prototype,t),a=""+l[t];if(!l.hasOwnProperty(t)&&typeof u<"u"&&typeof u.get=="function"&&typeof u.set=="function"){var e=u.get,n=u.set;return Object.defineProperty(l,t,{configurable:!0,get:function(){return e.call(this)},set:function(c){a=""+c,n.call(this,c)}}),Object.defineProperty(l,t,{enumerable:u.enumerable}),{getValue:function(){return a},setValue:function(c){a=""+c},stopTracking:function(){l._valueTracker=null,delete l[t]}}}}function Pe(l){l._valueTracker||(l._valueTracker=Ld(l))}function H1(l){if(!l)return!1;var t=l._valueTracker;if(!t)return!0;var u=t.getValue(),a="";return l&&(a=R1(l)?l.checked?"true":"false":l.value),l=a,l!==u?(t.setValue(l),!0):!1}function Ie(l){if(l=l||(typeof document<"u"?document:void 0),typeof l>"u")return null;try{return l.activeElement||l.body}catch{return l.body}}var Kd=/[\n"\\]/g;function Bl(l){return l.replace(Kd,function(t){return"\\"+t.charCodeAt(0).toString(16)+" "})}function Xc(l,t,u,a,e,n,c,f){l.name="",c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"?l.type=c:l.removeAttribute("type"),t!=null?c==="number"?(t===0&&l.value===""||l.value!=t)&&(l.value=""+pl(t)):l.value!==""+pl(t)&&(l.value=""+pl(t)):c!=="submit"&&c!=="reset"||l.removeAttribute("value"),t!=null?Qc(l,c,pl(t)):u!=null?Qc(l,c,pl(u)):a!=null&&l.removeAttribute("value"),e==null&&n!=null&&(l.defaultChecked=!!n),e!=null&&(l.checked=e&&typeof e!="function"&&typeof e!="symbol"),f!=null&&typeof f!="function"&&typeof f!="symbol"&&typeof f!="boolean"?l.name=""+pl(f):l.removeAttribute("name")}function N1(l,t,u,a,e,n,c,f){if(n!=null&&typeof n!="function"&&typeof n!="symbol"&&typeof n!="boolean"&&(l.type=n),t!=null||u!=null){if(!(n!=="submit"&&n!=="reset"||t!=null))return;u=u!=null?""+pl(u):"",t=t!=null?""+pl(t):u,f||t===l.value||(l.value=t),l.defaultValue=t}a=a??e,a=typeof a!="function"&&typeof a!="symbol"&&!!a,l.checked=f?l.checked:!!a,l.defaultChecked=!!a,c!=null&&typeof c!="function"&&typeof c!="symbol"&&typeof c!="boolean"&&(l.name=c)}function Qc(l,t,u){t==="number"&&Ie(l.ownerDocument)===l||l.defaultValue===""+u||(l.defaultValue=""+u)}function Xu(l,t,u,a){if(l=l.options,t){t={};for(var e=0;e<u.length;e++)t["$"+u[e]]=!0;for(u=0;u<l.length;u++)e=t.hasOwnProperty("$"+l[u].value),l[u].selected!==e&&(l[u].selected=e),e&&a&&(l[u].defaultSelected=!0)}else{for(u=""+pl(u),t=null,e=0;e<l.length;e++){if(l[e].value===u){l[e].selected=!0,a&&(l[e].defaultSelected=!0);return}t!==null||l[e].disabled||(t=l[e])}t!==null&&(t.selected=!0)}}function p1(l,t,u){if(t!=null&&(t=""+pl(t),t!==l.value&&(l.value=t),u==null)){l.defaultValue!==t&&(l.defaultValue=t);return}l.defaultValue=u!=null?""+pl(u):""}function q1(l,t,u,a){if(t==null){if(a!=null){if(u!=null)throw Error(S(92));if(ra(a)){if(1<a.length)throw Error(S(93));a=a[0]}u=a}u==null&&(u=""),t=u}u=pl(t),l.defaultValue=u,a=l.textContent,a===u&&a!==""&&a!==null&&(l.value=a)}function Ju(l,t){if(t){var u=l.firstChild;if(u&&u===l.lastChild&&u.nodeType===3){u.nodeValue=t;return}}l.textContent=t}var Jd=new Set("animationIterationCount aspectRatio borderImageOutset borderImageSlice borderImageWidth boxFlex boxFlexGroup boxOrdinalGroup columnCount columns flex flexGrow flexPositive flexShrink flexNegative flexOrder gridArea gridRow gridRowEnd gridRowSpan gridRowStart gridColumn gridColumnEnd gridColumnSpan gridColumnStart fontWeight lineClamp lineHeight opacity order orphans scale tabSize widows zIndex zoom fillOpacity floodOpacity stopOpacity strokeDasharray strokeDashoffset strokeMiterlimit strokeOpacity strokeWidth MozAnimationIterationCount MozBoxFlex MozBoxFlexGroup MozLineClamp msAnimationIterationCount msFlex msZoom msFlexGrow msFlexNegative msFlexOrder msFlexPositive msFlexShrink msGridColumn msGridColumnSpan msGridRow msGridRowSpan WebkitAnimationIterationCount WebkitBoxFlex WebKitBoxFlexGroup WebkitBoxOrdinalGroup WebkitColumnCount WebkitColumns WebkitFlex WebkitFlexGrow WebkitFlexPositive WebkitFlexShrink WebkitLineClamp".split(" "));function l0(l,t,u){var a=t.indexOf("--")===0;u==null||typeof u=="boolean"||u===""?a?l.setProperty(t,""):t==="float"?l.cssFloat="":l[t]="":a?l.setProperty(t,u):typeof u!="number"||u===0||Jd.has(t)?t==="float"?l.cssFloat=u:l[t]=(""+u).trim():l[t]=u+"px"}function Y1(l,t,u){if(t!=null&&typeof t!="object")throw Error(S(62));if(l=l.style,u!=null){for(var a in u)!u.hasOwnProperty(a)||t!=null&&t.hasOwnProperty(a)||(a.indexOf("--")===0?l.setProperty(a,""):a==="float"?l.cssFloat="":l[a]="");for(var e in t)a=t[e],t.hasOwnProperty(e)&&u[e]!==a&&l0(l,e,a)}else for(var n in t)t.hasOwnProperty(n)&&l0(l,n,t[n])}function Df(l){if(l.indexOf("-")===-1)return!1;switch(l){case"annotation-xml":case"color-profile":case"font-face":case"font-face-src":case"font-face-uri":case"font-face-format":case"font-face-name":case"missing-glyph":return!1;default:return!0}}var wd=new Map([["acceptCharset","accept-charset"],["htmlFor","for"],["httpEquiv","http-equiv"],["crossOrigin","crossorigin"],["accentHeight","accent-height"],["alignmentBaseline","alignment-baseline"],["arabicForm","arabic-form"],["baselineShift","baseline-shift"],["capHeight","cap-height"],["clipPath","clip-path"],["clipRule","clip-rule"],["colorInterpolation","color-interpolation"],["colorInterpolationFilters","color-interpolation-filters"],["colorProfile","color-profile"],["colorRendering","color-rendering"],["dominantBaseline","dominant-baseline"],["enableBackground","enable-background"],["fillOpacity","fill-opacity"],["fillRule","fill-rule"],["floodColor","flood-color"],["floodOpacity","flood-opacity"],["fontFamily","font-family"],["fontSize","font-size"],["fontSizeAdjust","font-size-adjust"],["fontStretch","font-stretch"],["fontStyle","font-style"],["fontVariant","font-variant"],["fontWeight","font-weight"],["glyphName","glyph-name"],["glyphOrientationHorizontal","glyph-orientation-horizontal"],["glyphOrientationVertical","glyph-orientation-vertical"],["horizAdvX","horiz-adv-x"],["horizOriginX","horiz-origin-x"],["imageRendering","image-rendering"],["letterSpacing","letter-spacing"],["lightingColor","lighting-color"],["markerEnd","marker-end"],["markerMid","marker-mid"],["markerStart","marker-start"],["overlinePosition","overline-position"],["overlineThickness","overline-thickness"],["paintOrder","paint-order"],["panose-1","panose-1"],["pointerEvents","pointer-events"],["renderingIntent","rendering-intent"],["shapeRendering","shape-rendering"],["stopColor","stop-color"],["stopOpacity","stop-opacity"],["strikethroughPosition","strikethrough-position"],["strikethroughThickness","strikethrough-thickness"],["strokeDasharray","stroke-dasharray"],["strokeDashoffset","stroke-dashoffset"],["strokeLinecap","stroke-linecap"],["strokeLinejoin","stroke-linejoin"],["strokeMiterlimit","stroke-miterlimit"],["strokeOpacity","stroke-opacity"],["strokeWidth","stroke-width"],["textAnchor","text-anchor"],["textDecoration","text-decoration"],["textRendering","text-rendering"],["transformOrigin","transform-origin"],["underlinePosition","underline-position"],["underlineThickness","underline-thickness"],["unicodeBidi","unicode-bidi"],["unicodeRange","unicode-range"],["unitsPerEm","units-per-em"],["vAlphabetic","v-alphabetic"],["vHanging","v-hanging"],["vIdeographic","v-ideographic"],["vMathematical","v-mathematical"],["vectorEffect","vector-effect"],["vertAdvY","vert-adv-y"],["vertOriginX","vert-origin-x"],["vertOriginY","vert-origin-y"],["wordSpacing","word-spacing"],["writingMode","writing-mode"],["xmlnsXlink","xmlns:xlink"],["xHeight","x-height"]]),Wd=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*:/i;function Xe(l){return Wd.test(""+l)?"javascript:throw new Error('React has blocked a javascript: URL as a security precaution.')":l}var Cc=null;function Uf(l){return l=l.target||l.srcElement||window,l.correspondingUseElement&&(l=l.correspondingUseElement),l.nodeType===3?l.parentNode:l}var Du=null,Qu=null;function t0(l){var t=ta(l);if(t&&(l=t.stateNode)){var u=l[bl]||null;l:switch(l=t.stateNode,t.type){case"input":if(Xc(l,u.value,u.defaultValue,u.defaultValue,u.checked,u.defaultChecked,u.type,u.name),t=u.name,u.type==="radio"&&t!=null){for(u=l;u.parentNode;)u=u.parentNode;for(u=u.querySelectorAll('input[name="'+Bl(""+t)+'"][type="radio"]'),t=0;t<u.length;t++){var a=u[t];if(a!==l&&a.form===l.form){var e=a[bl]||null;if(!e)throw Error(S(90));Xc(a,e.value,e.defaultValue,e.defaultValue,e.checked,e.defaultChecked,e.type,e.name)}}for(t=0;t<u.length;t++)a=u[t],a.form===l.form&&H1(a)}break l;case"textarea":p1(l,u.value,u.defaultValue);break l;case"select":t=u.value,t!=null&&Xu(l,!!u.multiple,t,!1)}}}var ac=!1;function B1(l,t,u){if(ac)return l(t,u);ac=!0;try{var a=l(t);return a}finally{if(ac=!1,(Du!==null||Qu!==null)&&(qn(),Du&&(t=Du,l=Qu,Qu=Du=null,t0(t),l)))for(t=0;t<l.length;t++)t0(l[t])}}function Za(l,t){var u=l.stateNode;if(u===null)return null;var a=u[bl]||null;if(a===null)return null;u=a[t];l:switch(t){case"onClick":case"onClickCapture":case"onDoubleClick":case"onDoubleClickCapture":case"onMouseDown":case"onMouseDownCapture":case"onMouseMove":case"onMouseMoveCapture":case"onMouseUp":case"onMouseUpCapture":case"onMouseEnter":(a=!a.disabled)||(l=l.type,a=!(l==="button"||l==="input"||l==="select"||l==="textarea")),l=!a;break l;default:l=!1}if(l)return null;if(u&&typeof u!="function")throw Error(S(231,t,typeof u));return u}var Zc=!1;if(mt)try{Eu={},Object.defineProperty(Eu,"passive",{get:function(){Zc=!0}}),window.addEventListener("test",Eu,Eu),window.removeEventListener("test",Eu,Eu)}catch{Zc=!1}var Eu,pt=null,Rf=null,Qe=null;function G1(){if(Qe)return Qe;var l,t=Rf,u=t.length,a,e="value"in pt?pt.value:pt.textContent,n=e.length;for(l=0;l<u&&t[l]===e[l];l++);var c=u-l;for(a=1;a<=c&&t[u-a]===e[n-a];a++);return Qe=e.slice(l,1<a?1-a:void 0)}function Ce(l){var t=l.keyCode;return"charCode"in l?(l=l.charCode,l===0&&t===13&&(l=13)):l=t,l===10&&(l=13),32<=l||l===13?l:0}function ze(){return!0}function u0(){return!1}function El(l){function t(u,a,e,n,c){this._reactName=u,this._targetInst=e,this.type=a,this.nativeEvent=n,this.target=c,this.currentTarget=null;for(var f in l)l.hasOwnProperty(f)&&(u=l[f],this[f]=u?u(n):n[f]);return this.isDefaultPrevented=(n.defaultPrevented!=null?n.defaultPrevented:n.returnValue===!1)?ze:u0,this.isPropagationStopped=u0,this}return Z(t.prototype,{preventDefault:function(){this.defaultPrevented=!0;var u=this.nativeEvent;u&&(u.preventDefault?u.preventDefault():typeof u.returnValue!="unknown"&&(u.returnValue=!1),this.isDefaultPrevented=ze)},stopPropagation:function(){var u=this.nativeEvent;u&&(u.stopPropagation?u.stopPropagation():typeof u.cancelBubble!="unknown"&&(u.cancelBubble=!0),this.isPropagationStopped=ze)},persist:function(){},isPersistent:ze}),t}var yu={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(l){return l.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},On=El(yu),ue=Z({},yu,{view:0,detail:0}),$d=El(ue),ec,nc,da,Mn=Z({},ue,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:Hf,button:0,buttons:0,relatedTarget:function(l){return l.relatedTarget===void 0?l.fromElement===l.srcElement?l.toElement:l.fromElement:l.relatedTarget},movementX:function(l){return"movementX"in l?l.movementX:(l!==da&&(da&&l.type==="mousemove"?(ec=l.screenX-da.screenX,nc=l.screenY-da.screenY):nc=ec=0,da=l),ec)},movementY:function(l){return"movementY"in l?l.movementY:nc}}),a0=El(Mn),kd=Z({},Mn,{dataTransfer:0}),Fd=El(kd),Pd=Z({},ue,{relatedTarget:0}),cc=El(Pd),Id=Z({},yu,{animationName:0,elapsedTime:0,pseudoElement:0}),ly=El(Id),ty=Z({},yu,{clipboardData:function(l){return"clipboardData"in l?l.clipboardData:window.clipboardData}}),uy=El(ty),ay=Z({},yu,{data:0}),e0=El(ay),ey={Esc:"Escape",Spacebar:" ",Left:"ArrowLeft",Up:"ArrowUp",Right:"ArrowRight",Down:"ArrowDown",Del:"Delete",Win:"OS",Menu:"ContextMenu",Apps:"ContextMenu",Scroll:"ScrollLock",MozPrintableKey:"Unidentified"},ny={8:"Backspace",9:"Tab",12:"Clear",13:"Enter",16:"Shift",17:"Control",18:"Alt",19:"Pause",20:"CapsLock",27:"Escape",32:" ",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"ArrowLeft",38:"ArrowUp",39:"ArrowRight",40:"ArrowDown",45:"Insert",46:"Delete",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"NumLock",145:"ScrollLock",224:"Meta"},cy={Alt:"altKey",Control:"ctrlKey",Meta:"metaKey",Shift:"shiftKey"};function fy(l){var t=this.nativeEvent;return t.getModifierState?t.getModifierState(l):(l=cy[l])?!!t[l]:!1}function Hf(){return fy}var iy=Z({},ue,{key:function(l){if(l.key){var t=ey[l.key]||l.key;if(t!=="Unidentified")return t}return l.type==="keypress"?(l=Ce(l),l===13?"Enter":String.fromCharCode(l)):l.type==="keydown"||l.type==="keyup"?ny[l.keyCode]||"Unidentified":""},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:Hf,charCode:function(l){return l.type==="keypress"?Ce(l):0},keyCode:function(l){return l.type==="keydown"||l.type==="keyup"?l.keyCode:0},which:function(l){return l.type==="keypress"?Ce(l):l.type==="keydown"||l.type==="keyup"?l.keyCode:0}}),sy=El(iy),vy=Z({},Mn,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),n0=El(vy),dy=Z({},ue,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:Hf}),yy=El(dy),hy=Z({},yu,{propertyName:0,elapsedTime:0,pseudoElement:0}),my=El(hy),oy=Z({},Mn,{deltaX:function(l){return"deltaX"in l?l.deltaX:"wheelDeltaX"in l?-l.wheelDeltaX:0},deltaY:function(l){return"deltaY"in l?l.deltaY:"wheelDeltaY"in l?-l.wheelDeltaY:"wheelDelta"in l?-l.wheelDelta:0},deltaZ:0,deltaMode:0}),gy=El(oy),Sy=Z({},yu,{newState:0,oldState:0}),by=El(Sy),Ey=[9,13,27,32],Nf=mt&&"CompositionEvent"in window,Aa=null;mt&&"documentMode"in document&&(Aa=document.documentMode);var ry=mt&&"TextEvent"in window&&!Aa,X1=mt&&(!Nf||Aa&&8<Aa&&11>=Aa),c0=" ",f0=!1;function Q1(l,t){switch(l){case"keyup":return Ey.indexOf(t.keyCode)!==-1;case"keydown":return t.keyCode!==229;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function C1(l){return l=l.detail,typeof l=="object"&&"data"in l?l.data:null}var Uu=!1;function Ty(l,t){switch(l){case"compositionend":return C1(t);case"keypress":return t.which!==32?null:(f0=!0,c0);case"textInput":return l=t.data,l===c0&&f0?null:l;default:return null}}function zy(l,t){if(Uu)return l==="compositionend"||!Nf&&Q1(l,t)?(l=G1(),Qe=Rf=pt=null,Uu=!1,l):null;switch(l){case"paste":return null;case"keypress":if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1<t.char.length)return t.char;if(t.which)return String.fromCharCode(t.which)}return null;case"compositionend":return X1&&t.locale!=="ko"?null:t.data;default:return null}}var Ay={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function i0(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t==="input"?!!Ay[l.type]:t==="textarea"}function Z1(l,t,u,a){Du?Qu?Qu.push(a):Qu=[a]:Du=a,t=gn(t,"onChange"),0<t.length&&(u=new On("onChange","change",null,u,a),l.push({event:u,listeners:t}))}var Oa=null,xa=null;function Oy(l){_v(l,0)}function _n(l){var t=Ta(l);if(H1(t))return l}function s0(l,t){if(l==="change")return t}var x1=!1;mt&&(mt?(Oe="oninput"in document,Oe||(fc=document.createElement("div"),fc.setAttribute("oninput","return;"),Oe=typeof fc.oninput=="function"),Ae=Oe):Ae=!1,x1=Ae&&(!document.documentMode||9<document.documentMode));var Ae,Oe,fc;function v0(){Oa&&(Oa.detachEvent("onpropertychange",j1),xa=Oa=null)}function j1(l){if(l.propertyName==="value"&&_n(xa)){var t=[];Z1(t,xa,l,Uf(l)),B1(Oy,t)}}function My(l,t,u){l==="focusin"?(v0(),Oa=t,xa=u,Oa.attachEvent("onpropertychange",j1)):l==="focusout"&&v0()}function _y(l){if(l==="selectionchange"||l==="keyup"||l==="keydown")return _n(xa)}function Dy(l,t){if(l==="click")return _n(t)}function Uy(l,t){if(l==="input"||l==="change")return _n(t)}function Ry(l,t){return l===t&&(l!==0||1/l===1/t)||l!==l&&t!==t}var Dl=typeof Object.is=="function"?Object.is:Ry;function ja(l,t){if(Dl(l,t))return!0;if(typeof l!="object"||l===null||typeof t!="object"||t===null)return!1;var u=Object.keys(l),a=Object.keys(t);if(u.length!==a.length)return!1;for(a=0;a<u.length;a++){var e=u[a];if(!Bc.call(t,e)||!Dl(l[e],t[e]))return!1}return!0}function d0(l){for(;l&&l.firstChild;)l=l.firstChild;return l}function y0(l,t){var u=d0(l);l=0;for(var a;u;){if(u.nodeType===3){if(a=l+u.textContent.length,l<=t&&a>=t)return{node:u,offset:t-l};l=a}l:{for(;u;){if(u.nextSibling){u=u.nextSibling;break l}u=u.parentNode}u=void 0}u=d0(u)}}function V1(l,t){return l&&t?l===t?!0:l&&l.nodeType===3?!1:t&&t.nodeType===3?V1(l,t.parentNode):"contains"in l?l.contains(t):l.compareDocumentPosition?!!(l.compareDocumentPosition(t)&16):!1:!1}function L1(l){l=l!=null&&l.ownerDocument!=null&&l.ownerDocument.defaultView!=null?l.ownerDocument.defaultView:window;for(var t=Ie(l.document);t instanceof l.HTMLIFrameElement;){try{var u=typeof t.contentWindow.location.href=="string"}catch{u=!1}if(u)l=t.contentWindow;else break;t=Ie(l.document)}return t}function pf(l){var t=l&&l.nodeName&&l.nodeName.toLowerCase();return t&&(t==="input"&&(l.type==="text"||l.type==="search"||l.type==="tel"||l.type==="url"||l.type==="password")||t==="textarea"||l.contentEditable==="true")}function Hy(l,t){var u=L1(t);t=l.focusedElem;var a=l.selectionRange;if(u!==t&&t&&t.ownerDocument&&V1(t.ownerDocument.documentElement,t)){if(a!==null&&pf(t)){if(l=a.start,u=a.end,u===void 0&&(u=l),"selectionStart"in t)t.selectionStart=l,t.selectionEnd=Math.min(u,t.value.length);else if(u=(l=t.ownerDocument||document)&&l.defaultView||window,u.getSelection){u=u.getSelection();var e=t.textContent.length,n=Math.min(a.start,e);a=a.end===void 0?n:Math.min(a.end,e),!u.extend&&n>a&&(e=a,a=n,n=e),e=y0(t,n);var c=y0(t,a);e&&c&&(u.rangeCount!==1||u.anchorNode!==e.node||u.anchorOffset!==e.offset||u.focusNode!==c.node||u.focusOffset!==c.offset)&&(l=l.createRange(),l.setStart(e.node,e.offset),u.removeAllRanges(),n>a?(u.addRange(l),u.extend(c.node,c.offset)):(l.setEnd(c.node,c.offset),u.addRange(l)))}}for(l=[],u=t;u=u.parentNode;)u.nodeType===1&&l.push({element:u,left:u.scrollLeft,top:u.scrollTop});for(typeof t.focus=="function"&&t.focus(),t=0;t<l.length;t++)u=l[t],u.element.scrollLeft=u.left,u.element.scrollTop=u.top}}var Ny=mt&&"documentMode"in document&&11>=document.documentMode,Ru=null,xc=null,Ma=null,jc=!1;function h0(l,t,u){var a=u.window===u?u.document:u.nodeType===9?u:u.ownerDocument;jc||Ru==null||Ru!==Ie(a)||(a=Ru,"selectionStart"in a&&pf(a)?a={start:a.selectionStart,end:a.selectionEnd}:(a=(a.ownerDocument&&a.ownerDocument.defaultView||window).getSelection(),a={anchorNode:a.anchorNode,anchorOffset:a.anchorOffset,focusNode:a.focusNode,focusOffset:a.focusOffset}),Ma&&ja(Ma,a)||(Ma=a,a=gn(xc,"onSelect"),0<a.length&&(t=new On("onSelect","select",null,t,u),l.push({event:t,listeners:a}),t.target=Ru)))}function Wt(l,t){var u={};return u[l.toLowerCase()]=t.toLowerCase(),u["Webkit"+l]="webkit"+t,u["Moz"+l]="moz"+t,u}var Hu={animationend:Wt("Animation","AnimationEnd"),animationiteration:Wt("Animation","AnimationIteration"),animationstart:Wt("Animation","AnimationStart"),transitionrun:Wt("Transition","TransitionRun"),transitionstart:Wt("Transition","TransitionStart"),transitioncancel:Wt("Transition","TransitionCancel"),transitionend:Wt("Transition","TransitionEnd")},ic={},K1={};mt&&(K1=document.createElement("div").style,"AnimationEvent"in window||(delete Hu.animationend.animation,delete Hu.animationiteration.animation,delete Hu.animationstart.animation),"TransitionEvent"in window||delete Hu.transitionend.transition);function hu(l){if(ic[l])return ic[l];if(!Hu[l])return l;var t=Hu[l],u;for(u in t)if(t.hasOwnProperty(u)&&u in K1)return ic[l]=t[u];return l}var J1=hu("animationend"),w1=hu("animationiteration"),W1=hu("animationstart"),py=hu("transitionrun"),qy=hu("transitionstart"),Yy=hu("transitioncancel"),$1=hu("transitionend"),k1=new Map,m0="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll scrollEnd toggle touchMove waiting wheel".split(" ");function Kl(l,t){k1.set(l,t),du(t,[l])}var Nl=[],Nu=0,qf=0;function Dn(){for(var l=Nu,t=qf=Nu=0;t<l;){var u=Nl[t];Nl[t++]=null;var a=Nl[t];Nl[t++]=null;var e=Nl[t];Nl[t++]=null;var n=Nl[t];if(Nl[t++]=null,a!==null&&e!==null){var c=a.pending;c===null?e.next=e:(e.next=c.next,c.next=e),a.pending=e}n!==0&&F1(u,e,n)}}function Un(l,t,u,a){Nl[Nu++]=l,Nl[Nu++]=t,Nl[Nu++]=u,Nl[Nu++]=a,qf|=a,l.lanes|=a,l=l.alternate,l!==null&&(l.lanes|=a)}function Yf(l,t,u,a){return Un(l,t,u,a),ln(l)}function xt(l,t){return Un(l,null,null,t),ln(l)}function F1(l,t,u){l.lanes|=u;var a=l.alternate;a!==null&&(a.lanes|=u);for(var e=!1,n=l.return;n!==null;)n.childLanes|=u,a=n.alternate,a!==null&&(a.childLanes|=u),n.tag===22&&(l=n.stateNode,l===null||l._visibility&1||(e=!0)),l=n,n=n.return;e&&t!==null&&l.tag===3&&(n=l.stateNode,e=31-Ml(u),n=n.hiddenUpdates,l=n[e],l===null?n[e]=[t]:l.push(t),t.lane=u|536870912)}function ln(l){if(50<Xa)throw Xa=0,df=null,Error(S(185));for(var t=l.return;t!==null;)l=t,t=l.return;return l.tag===3?l.stateNode:null}var pu={},o0=new WeakMap;function Gl(l,t){if(typeof l=="object"&&l!==null){var u=o0.get(l);return u!==void 0?u:(t={value:l,source:t,stack:$i(t)},o0.set(l,t),t)}return{value:l,source:t,stack:$i(t)}}var qu=[],Yu=0,tn=null,un=0,ql=[],Yl=0,tu=null,st=1,vt="";function kt(l,t){qu[Yu++]=un,qu[Yu++]=tn,tn=l,un=t}function P1(l,t,u){ql[Yl++]=st,ql[Yl++]=vt,ql[Yl++]=tu,tu=l;var a=st;l=vt;var e=32-Ml(a)-1;a&=~(1<<e),u+=1;var n=32-Ml(t)+e;if(30<n){var c=e-e%5;n=(a&(1<<c)-1).toString(32),a>>=c,e-=c,st=1<<32-Ml(t)+e|u<<e|a,vt=n+l}else st=1<<n|u<<e|a,vt=l}function Bf(l){l.return!==null&&(kt(l,1),P1(l,1,0))}function Gf(l){for(;l===tn;)tn=qu[--Yu],qu[Yu]=null,un=qu[--Yu],qu[Yu]=null;for(;l===tu;)tu=ql[--Yl],ql[Yl]=null,vt=ql[--Yl],ql[Yl]=null,st=ql[--Yl],ql[Yl]=null}var ol=null,fl=null,p=!1,Vl=null,wl=!1,Vc=Error(S(519));function cu(l){var t=Error(S(418,""));throw Va(Gl(t,l)),Vc}function g0(l){var t=l.stateNode,u=l.type,a=l.memoizedProps;switch(t[vl]=l,t[bl]=a,u){case"dialog":R("cancel",t),R("close",t);break;case"iframe":case"object":case"embed":R("load",t);break;case"video":case"audio":for(u=0;u<Ja.length;u++)R(Ja[u],t);break;case"source":R("error",t);break;case"img":case"image":case"link":R("error",t),R("load",t);break;case"details":R("toggle",t);break;case"input":R("invalid",t),N1(t,a.value,a.defaultValue,a.checked,a.defaultChecked,a.type,a.name,!0),Pe(t);break;case"select":R("invalid",t);break;case"textarea":R("invalid",t),q1(t,a.value,a.defaultValue,a.children),Pe(t)}u=a.children,typeof u!="string"&&typeof u!="number"&&typeof u!="bigint"||t.textContent===""+u||a.suppressHydrationWarning===!0||Uv(t.textContent,u)?(a.popover!=null&&(R("beforetoggle",t),R("toggle",t)),a.onScroll!=null&&R("scroll",t),a.onScrollEnd!=null&&R("scrollend",t),a.onClick!=null&&(t.onclick=Bn),t=!0):t=!1,t||cu(l)}function S0(l){for(ol=l.return;ol;)switch(ol.tag){case 3:case 27:wl=!0;return;case 5:case 13:wl=!1;return;default:ol=ol.return}}function ya(l){if(l!==ol)return!1;if(!p)return S0(l),p=!0,!1;var t=!1,u;if((u=l.tag!==3&&l.tag!==27)&&((u=l.tag===5)&&(u=l.type,u=!(u!=="form"&&u!=="button")||bf(l.type,l.memoizedProps)),u=!u),u&&(t=!0),t&&fl&&cu(l),S0(l),l.tag===13){if(l=l.memoizedState,l=l!==null?l.dehydrated:null,!l)throw Error(S(317));l:{for(l=l.nextSibling,t=0;l;){if(l.nodeType===8)if(u=l.data,u==="/$"){if(t===0){fl=Ll(l.nextSibling);break l}t--}else u!=="$"&&u!=="$!"&&u!=="$?"||t++;l=l.nextSibling}fl=null}}else fl=ol?Ll(l.stateNode.nextSibling):null;return!0}function ae(){fl=ol=null,p=!1}function Va(l){Vl===null?Vl=[l]:Vl.push(l)}var _a=Error(S(460)),I1=Error(S(474)),Lc={then:function(){}};function b0(l){return l=l.status,l==="fulfilled"||l==="rejected"}function Me(){}function ls(l,t,u){switch(u=l[u],u===void 0?l.push(t):u!==t&&(t.then(Me,Me),t=u),t.status){case"fulfilled":return t.value;case"rejected":throw l=t.reason,l===_a?Error(S(483)):l;default:if(typeof t.status=="string")t.then(Me,Me);else{if(l=Q,l!==null&&100<l.shellSuspendCounter)throw Error(S(482));l=t,l.status="pending",l.then(function(a){if(t.status==="pending"){var e=t;e.status="fulfilled",e.value=a}},function(a){if(t.status==="pending"){var e=t;e.status="rejected",e.reason=a}})}switch(t.status){case"fulfilled":return t.value;case"rejected":throw l=t.reason,l===_a?Error(S(483)):l}throw Da=t,_a}}var Da=null;function E0(){if(Da===null)throw Error(S(459));var l=Da;return Da=null,l}var Cu=null,La=0;function _e(l){var t=La;return La+=1,Cu===null&&(Cu=[]),ls(Cu,l,t)}function ha(l,t){t=t.props.ref,l.ref=t!==void 0?t:null}function De(l,t){throw t.$$typeof===Td?Error(S(525)):(l=Object.prototype.toString.call(t),Error(S(31,l==="[object Object]"?"object with keys {"+Object.keys(t).join(", ")+"}":l)))}function r0(l){var t=l._init;return t(l._payload)}function ts(l){function t(d,v){if(l){var y=d.deletions;y===null?(d.deletions=[v],d.flags|=16):y.push(v)}}function u(d,v){if(!l)return null;for(;v!==null;)t(d,v),v=v.sibling;return null}function a(d){for(var v=new Map;d!==null;)d.key!==null?v.set(d.key,d):v.set(d.index,d),d=d.sibling;return v}function e(d,v){return d=Gt(d,v),d.index=0,d.sibling=null,d}function n(d,v,y){return d.index=y,l?(y=d.alternate,y!==null?(y=y.index,y<v?(d.flags|=33554434,v):y):(d.flags|=33554434,v)):(d.flags|=1048576,v)}function c(d){return l&&d.alternate===null&&(d.flags|=33554434),d}function f(d,v,y,g){return v===null||v.tag!==6?(v=rc(y,d.mode,g),v.return=d,v):(v=e(v,y),v.return=d,v)}function i(d,v,y,g){var E=y.type;return E===Mu?o(d,v,y.props.children,g,y.key):v!==null&&(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Mt&&r0(E)===v.type)?(v=e(v,y.props),ha(v,y),v.return=d,v):(v=Le(y.type,y.key,y.props,null,d.mode,g),ha(v,y),v.return=d,v)}function s(d,v,y,g){return v===null||v.tag!==4||v.stateNode.containerInfo!==y.containerInfo||v.stateNode.implementation!==y.implementation?(v=Tc(y,d.mode,g),v.return=d,v):(v=e(v,y.children||[]),v.return=d,v)}function o(d,v,y,g,E){return v===null||v.tag!==7?(v=au(y,d.mode,g,E),v.return=d,v):(v=e(v,y),v.return=d,v)}function b(d,v,y){if(typeof v=="string"&&v!==""||typeof v=="number"||typeof v=="bigint")return v=rc(""+v,d.mode,y),v.return=d,v;if(typeof v=="object"&&v!==null){switch(v.$$typeof){case be:return y=Le(v.type,v.key,v.props,null,d.mode,y),ha(y,v),y.return=d,y;case ba:return v=Tc(v,d.mode,y),v.return=d,v;case Mt:var g=v._init;return v=g(v._payload),b(d,v,y)}if(ra(v)||va(v))return v=au(v,d.mode,y,null),v.return=d,v;if(typeof v.then=="function")return b(d,_e(v),y);if(v.$$typeof===it)return b(d,Ue(d,v),y);De(d,v)}return null}function h(d,v,y,g){var E=v!==null?v.key:null;if(typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint")return E!==null?null:f(d,v,""+y,g);if(typeof y=="object"&&y!==null){switch(y.$$typeof){case be:return y.key===E?i(d,v,y,g):null;case ba:return y.key===E?s(d,v,y,g):null;case Mt:return E=y._init,y=E(y._payload),h(d,v,y,g)}if(ra(y)||va(y))return E!==null?null:o(d,v,y,g,null);if(typeof y.then=="function")return h(d,v,_e(y),g);if(y.$$typeof===it)return h(d,v,Ue(d,y),g);De(d,y)}return null}function m(d,v,y,g,E){if(typeof g=="string"&&g!==""||typeof g=="number"||typeof g=="bigint")return d=d.get(y)||null,f(v,d,""+g,E);if(typeof g=="object"&&g!==null){switch(g.$$typeof){case be:return d=d.get(g.key===null?y:g.key)||null,i(v,d,g,E);case ba:return d=d.get(g.key===null?y:g.key)||null,s(v,d,g,E);case Mt:var D=g._init;return g=D(g._payload),m(d,v,y,g,E)}if(ra(g)||va(g))return d=d.get(y)||null,o(v,d,g,E,null);if(typeof g.then=="function")return m(d,v,y,_e(g),E);if(g.$$typeof===it)return m(d,v,y,Ue(v,g),E);De(v,g)}return null}function r(d,v,y,g){for(var E=null,D=null,T=v,z=v=0,tl=null;T!==null&&z<y.length;z++){T.index>z?(tl=T,T=null):tl=T.sibling;var N=h(d,T,y[z],g);if(N===null){T===null&&(T=tl);break}l&&T&&N.alternate===null&&t(d,T),v=n(N,v,z),D===null?E=N:D.sibling=N,D=N,T=tl}if(z===y.length)return u(d,T),p&&kt(d,z),E;if(T===null){for(;z<y.length;z++)T=b(d,y[z],g),T!==null&&(v=n(T,v,z),D===null?E=T:D.sibling=T,D=T);return p&&kt(d,z),E}for(T=a(T);z<y.length;z++)tl=m(T,d,z,y[z],g),tl!==null&&(l&&tl.alternate!==null&&T.delete(tl.key===null?z:tl.key),v=n(tl,v,z),D===null?E=tl:D.sibling=tl,D=tl);return l&&T.forEach(function(Et){return t(d,Et)}),p&&kt(d,z),E}function A(d,v,y,g){if(y==null)throw Error(S(151));for(var E=null,D=null,T=v,z=v=0,tl=null,N=y.next();T!==null&&!N.done;z++,N=y.next()){T.index>z?(tl=T,T=null):tl=T.sibling;var Et=h(d,T,N.value,g);if(Et===null){T===null&&(T=tl);break}l&&T&&Et.alternate===null&&t(d,T),v=n(Et,v,z),D===null?E=Et:D.sibling=Et,D=Et,T=tl}if(N.done)return u(d,T),p&&kt(d,z),E;if(T===null){for(;!N.done;z++,N=y.next())N=b(d,N.value,g),N!==null&&(v=n(N,v,z),D===null?E=N:D.sibling=N,D=N);return p&&kt(d,z),E}for(T=a(T);!N.done;z++,N=y.next())N=m(T,d,z,N.value,g),N!==null&&(l&&N.alternate!==null&&T.delete(N.key===null?z:N.key),v=n(N,v,z),D===null?E=N:D.sibling=N,D=N);return l&&T.forEach(function(Wv){return t(d,Wv)}),p&&kt(d,z),E}function K(d,v,y,g){if(typeof y=="object"&&y!==null&&y.type===Mu&&y.key===null&&(y=y.props.children),typeof y=="object"&&y!==null){switch(y.$$typeof){case be:l:{for(var E=y.key;v!==null;){if(v.key===E){if(E=y.type,E===Mu){if(v.tag===7){u(d,v.sibling),g=e(v,y.props.children),g.return=d,d=g;break l}}else if(v.elementType===E||typeof E=="object"&&E!==null&&E.$$typeof===Mt&&r0(E)===v.type){u(d,v.sibling),g=e(v,y.props),ha(g,y),g.return=d,d=g;break l}u(d,v);break}else t(d,v);v=v.sibling}y.type===Mu?(g=au(y.props.children,d.mode,g,y.key),g.return=d,d=g):(g=Le(y.type,y.key,y.props,null,d.mode,g),ha(g,y),g.return=d,d=g)}return c(d);case ba:l:{for(E=y.key;v!==null;){if(v.key===E)if(v.tag===4&&v.stateNode.containerInfo===y.containerInfo&&v.stateNode.implementation===y.implementation){u(d,v.sibling),g=e(v,y.children||[]),g.return=d,d=g;break l}else{u(d,v);break}else t(d,v);v=v.sibling}g=Tc(y,d.mode,g),g.return=d,d=g}return c(d);case Mt:return E=y._init,y=E(y._payload),K(d,v,y,g)}if(ra(y))return r(d,v,y,g);if(va(y)){if(E=va(y),typeof E!="function")throw Error(S(150));return y=E.call(y),A(d,v,y,g)}if(typeof y.then=="function")return K(d,v,_e(y),g);if(y.$$typeof===it)return K(d,v,Ue(d,y),g);De(d,y)}return typeof y=="string"&&y!==""||typeof y=="number"||typeof y=="bigint"?(y=""+y,v!==null&&v.tag===6?(u(d,v.sibling),g=e(v,y),g.return=d,d=g):(u(d,v),g=rc(y,d.mode,g),g.return=d,d=g),c(d)):u(d,v)}return function(d,v,y,g){try{La=0;var E=K(d,v,y,g);return Cu=null,E}catch(T){if(T===_a)throw T;var D=Xl(29,T,null,d.mode);return D.lanes=g,D.return=d,D}finally{}}}var fu=ts(!0),us=ts(!1),wu=Il(null),an=Il(0);function T0(l,t){l=St,x(an,l),x(wu,t),St=l|t.baseLanes}function Kc(){x(an,St),x(wu,wu.current)}function Xf(){St=an.current,nl(wu),nl(an)}var Cl=Il(null),Fl=null;function Dt(l){var t=l.alternate;x(I,I.current&1),x(Cl,l),Fl===null&&(t===null||wu.current!==null||t.memoizedState!==null)&&(Fl=l)}function as(l){if(l.tag===22){if(x(I,I.current),x(Cl,l),Fl===null){var t=l.alternate;t!==null&&t.memoizedState!==null&&(Fl=l)}}else Ut(l)}function Ut(){x(I,I.current),x(Cl,Cl.current)}function dt(l){nl(Cl),Fl===l&&(Fl=null),nl(I)}var I=Il(0);function en(l){for(var t=l;t!==null;){if(t.tag===13){var u=t.memoizedState;if(u!==null&&(u=u.dehydrated,u===null||u.data==="$?"||u.data==="$!"))return t}else if(t.tag===19&&t.memoizedProps.revealOrder!==void 0){if(t.flags&128)return t}else if(t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}var By=typeof AbortController<"u"?AbortController:function(){var l=[],t=this.signal={aborted:!1,addEventListener:function(u,a){l.push(a)}};this.abort=function(){t.aborted=!0,l.forEach(function(u){return u()})}},Gy=ll.unstable_scheduleCallback,Xy=ll.unstable_NormalPriority,P={$$typeof:it,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0};function Qf(){return{controller:new By,data:new Map,refCount:0}}function ee(l){l.refCount--,l.refCount===0&&Gy(Xy,function(){l.controller.abort()})}var Ua=null,Jc=0,Wu=0,Zu=null;function Qy(l,t){if(Ua===null){var u=Ua=[];Jc=0,Wu=fi(),Zu={status:"pending",value:void 0,then:function(a){u.push(a)}}}return Jc++,t.then(z0,z0),t}function z0(){if(--Jc===0&&Ua!==null){Zu!==null&&(Zu.status="fulfilled");var l=Ua;Ua=null,Wu=0,Zu=null;for(var t=0;t<l.length;t++)(0,l[t])()}}function Cy(l,t){var u=[],a={status:"pending",value:null,reason:null,then:function(e){u.push(e)}};return l.then(function(){a.status="fulfilled",a.value=t;for(var e=0;e<u.length;e++)(0,u[e])(t)},function(e){for(a.status="rejected",a.reason=e,e=0;e<u.length;e++)(0,u[e])(void 0)}),a}var A0=O.S;O.S=function(l,t){typeof t=="object"&&t!==null&&typeof t.then=="function"&&Qy(l,t),A0!==null&&A0(l,t)};var uu=Il(null);function Cf(){var l=uu.current;return l!==null?l:Q.pooledCache}function Ze(l,t){t===null?x(uu,uu.current):x(uu,t.pool)}function es(){var l=Cf();return l===null?null:{parent:P._currentValue,pool:l}}var jt=0,_=null,Y=null,k=null,nn=!1,xu=!1,iu=!1,cn=0,Ka=0,ju=null,Zy=0;function W(){throw Error(S(321))}function Zf(l,t){if(t===null)return!1;for(var u=0;u<t.length&&u<l.length;u++)if(!Dl(l[u],t[u]))return!1;return!0}function xf(l,t,u,a,e,n){return jt=n,_=t,t.memoizedState=null,t.updateQueue=null,t.lanes=0,O.H=l===null||l.memoizedState===null?mu:Jt,iu=!1,n=u(a,e),iu=!1,xu&&(n=cs(t,u,a,e)),ns(l),n}function ns(l){O.H=Pl;var t=Y!==null&&Y.next!==null;if(jt=0,k=Y=_=null,nn=!1,Ka=0,ju=null,t)throw Error(S(300));l===null||el||(l=l.dependencies,l!==null&&vn(l)&&(el=!0))}function cs(l,t,u,a){_=l;var e=0;do{if(xu&&(ju=null),Ka=0,xu=!1,25<=e)throw Error(S(301));if(e+=1,k=Y=null,l.updateQueue!=null){var n=l.updateQueue;n.lastEffect=null,n.events=null,n.stores=null,n.memoCache!=null&&(n.memoCache.index=0)}O.H=ou,n=t(u,a)}while(xu);return n}function xy(){var l=O.H,t=l.useState()[0];return t=typeof t.then=="function"?ne(t):t,l=l.useState()[0],(Y!==null?Y.memoizedState:null)!==l&&(_.flags|=1024),t}function jf(){var l=cn!==0;return cn=0,l}function Vf(l,t,u){t.updateQueue=l.updateQueue,t.flags&=-2053,l.lanes&=~u}function Lf(l){if(nn){for(l=l.memoizedState;l!==null;){var t=l.queue;t!==null&&(t.pending=null),l=l.next}nn=!1}jt=0,k=Y=_=null,xu=!1,Ka=cn=0,ju=null}function Sl(){var l={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};return k===null?_.memoizedState=k=l:k=k.next=l,k}function F(){if(Y===null){var l=_.alternate;l=l!==null?l.memoizedState:null}else l=Y.next;var t=k===null?_.memoizedState:k.next;if(t!==null)k=t,Y=l;else{if(l===null)throw _.alternate===null?Error(S(467)):Error(S(310));Y=l,l={memoizedState:Y.memoizedState,baseState:Y.baseState,baseQueue:Y.baseQueue,queue:Y.queue,next:null},k===null?_.memoizedState=k=l:k=k.next=l}return k}var Rn;Rn=function(){return{lastEffect:null,events:null,stores:null,memoCache:null}};function ne(l){var t=Ka;return Ka+=1,ju===null&&(ju=[]),l=ls(ju,l,t),t=_,(k===null?t.memoizedState:k.next)===null&&(t=t.alternate,O.H=t===null||t.memoizedState===null?mu:Jt),l}function Hn(l){if(l!==null&&typeof l=="object"){if(typeof l.then=="function")return ne(l);if(l.$$typeof===it)return dl(l)}throw Error(S(438,String(l)))}function Kf(l){var t=null,u=_.updateQueue;if(u!==null&&(t=u.memoCache),t==null){var a=_.alternate;a!==null&&(a=a.updateQueue,a!==null&&(a=a.memoCache,a!=null&&(t={data:a.data.map(function(e){return e.slice()}),index:0})))}if(t==null&&(t={data:[],index:0}),u===null&&(u=Rn(),_.updateQueue=u),u.memoCache=t,u=t.data[t.index],u===void 0)for(u=t.data[t.index]=Array(l),a=0;a<l;a++)u[a]=Ad;return t.index++,u}function ot(l,t){return typeof t=="function"?t(l):t}function xe(l){var t=F();return Jf(t,Y,l)}function Jf(l,t,u){var a=l.queue;if(a===null)throw Error(S(311));a.lastRenderedReducer=u;var e=l.baseQueue,n=a.pending;if(n!==null){if(e!==null){var c=e.next;e.next=n.next,n.next=c}t.baseQueue=e=n,a.pending=null}if(n=l.baseState,e===null)l.memoizedState=n;else{t=e.next;var f=c=null,i=null,s=t,o=!1;do{var b=s.lane&-536870913;if(b!==s.lane?(H&b)===b:(jt&b)===b){var h=s.revertLane;if(h===0)i!==null&&(i=i.next={lane:0,revertLane:0,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null}),b===Wu&&(o=!0);else if((jt&h)===h){s=s.next,h===Wu&&(o=!0);continue}else b={lane:0,revertLane:s.revertLane,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null},i===null?(f=i=b,c=n):i=i.next=b,_.lanes|=h,Lt|=h;b=s.action,iu&&u(n,b),n=s.hasEagerState?s.eagerState:u(n,b)}else h={lane:b,revertLane:s.revertLane,action:s.action,hasEagerState:s.hasEagerState,eagerState:s.eagerState,next:null},i===null?(f=i=h,c=n):i=i.next=h,_.lanes|=b,Lt|=b;s=s.next}while(s!==null&&s!==t);if(i===null?c=n:i.next=f,!Dl(n,l.memoizedState)&&(el=!0,o&&(u=Zu,u!==null)))throw u;l.memoizedState=n,l.baseState=c,l.baseQueue=i,a.lastRenderedState=n}return e===null&&(a.lanes=0),[l.memoizedState,a.dispatch]}function sc(l){var t=F(),u=t.queue;if(u===null)throw Error(S(311));u.lastRenderedReducer=l;var a=u.dispatch,e=u.pending,n=t.memoizedState;if(e!==null){u.pending=null;var c=e=e.next;do n=l(n,c.action),c=c.next;while(c!==e);Dl(n,t.memoizedState)||(el=!0),t.memoizedState=n,t.baseQueue===null&&(t.baseState=n),u.lastRenderedState=n}return[n,a]}function fs(l,t,u){var a=_,e=F(),n=p;if(n){if(u===void 0)throw Error(S(407));u=u()}else u=t();var c=!Dl((Y||e).memoizedState,u);if(c&&(e.memoizedState=u,el=!0),e=e.queue,wf(vs.bind(null,a,e,l),[l]),e.getSnapshot!==t||c||k!==null&&k.memoizedState.tag&1){if(a.flags|=2048,$u(9,ss.bind(null,a,e,u,t),{destroy:void 0},null),Q===null)throw Error(S(349));n||jt&60||is(a,t,u)}return u}function is(l,t,u){l.flags|=16384,l={getSnapshot:t,value:u},t=_.updateQueue,t===null?(t=Rn(),_.updateQueue=t,t.stores=[l]):(u=t.stores,u===null?t.stores=[l]:u.push(l))}function ss(l,t,u,a){t.value=u,t.getSnapshot=a,ds(t)&&ys(l)}function vs(l,t,u){return u(function(){ds(t)&&ys(l)})}function ds(l){var t=l.getSnapshot;l=l.value;try{var u=t();return!Dl(l,u)}catch{return!0}}function ys(l){var t=xt(l,2);t!==null&&gl(t,l,2)}function wc(l){var t=Sl();if(typeof l=="function"){var u=l;if(l=u(),iu){Nt(!0);try{u()}finally{Nt(!1)}}}return t.memoizedState=t.baseState=l,t.queue={pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:l},t}function hs(l,t,u,a){return l.baseState=u,Jf(l,Y,typeof a=="function"?a:ot)}function jy(l,t,u,a,e){if(pn(l))throw Error(S(485));if(l=t.action,l!==null){var n={payload:e,action:l,next:null,isTransition:!0,status:"pending",value:null,reason:null,listeners:[],then:function(c){n.listeners.push(c)}};O.T!==null?u(!0):n.isTransition=!1,a(n),u=t.pending,u===null?(n.next=t.pending=n,ms(t,n)):(n.next=u.next,t.pending=u.next=n)}}function ms(l,t){var u=t.action,a=t.payload,e=l.state;if(t.isTransition){var n=O.T,c={};O.T=c;try{var f=u(e,a),i=O.S;i!==null&&i(c,f),O0(l,t,f)}catch(s){Wc(l,t,s)}finally{O.T=n}}else try{n=u(e,a),O0(l,t,n)}catch(s){Wc(l,t,s)}}function O0(l,t,u){u!==null&&typeof u=="object"&&typeof u.then=="function"?u.then(function(a){M0(l,t,a)},function(a){return Wc(l,t,a)}):M0(l,t,u)}function M0(l,t,u){t.status="fulfilled",t.value=u,os(t),l.state=u,t=l.pending,t!==null&&(u=t.next,u===t?l.pending=null:(u=u.next,t.next=u,ms(l,u)))}function Wc(l,t,u){var a=l.pending;if(l.pending=null,a!==null){a=a.next;do t.status="rejected",t.reason=u,os(t),t=t.next;while(t!==a)}l.action=null}function os(l){l=l.listeners;for(var t=0;t<l.length;t++)(0,l[t])()}function gs(l,t){return t}function Ss(l,t){if(p){var u=Q.formState;if(u!==null){l:{var a=_;if(p){if(fl){t:{for(var e=fl,n=wl;e.nodeType!==8;){if(!n){e=null;break t}if(e=Ll(e.nextSibling),e===null){e=null;break t}}n=e.data,e=n==="F!"||n==="F"?e:null}if(e){fl=Ll(e.nextSibling),a=e.data==="F!";break l}}cu(a)}a=!1}a&&(t=u[0])}}return u=Sl(),u.memoizedState=u.baseState=t,a={pending:null,lanes:0,dispatch:null,lastRenderedReducer:gs,lastRenderedState:t},u.queue=a,u=Ys.bind(null,_,a),a.dispatch=u,a=wc(!1),n=Ff.bind(null,_,!1,a.queue),a=Sl(),e={state:t,dispatch:null,action:l,pending:null},a.queue=e,u=jy.bind(null,_,e,n,u),e.dispatch=u,a.memoizedState=l,[t,u,!1]}function bs(l){var t=F();return Es(t,Y,l)}function Es(l,t,u){t=Jf(l,t,gs)[0],l=xe(ot)[0],t=typeof t=="object"&&t!==null&&typeof t.then=="function"?ne(t):t;var a=F(),e=a.queue,n=e.dispatch;return u!==a.memoizedState&&(_.flags|=2048,$u(9,Vy.bind(null,e,u),{destroy:void 0},null)),[t,n,l]}function Vy(l,t){l.action=t}function rs(l){var t=F(),u=Y;if(u!==null)return Es(t,u,l);F(),t=t.memoizedState,u=F();var a=u.queue.dispatch;return u.memoizedState=l,[t,a,!1]}function $u(l,t,u,a){return l={tag:l,create:t,inst:u,deps:a,next:null},t=_.updateQueue,t===null&&(t=Rn(),_.updateQueue=t),u=t.lastEffect,u===null?t.lastEffect=l.next=l:(a=u.next,u.next=l,l.next=a,t.lastEffect=l),l}function Ts(){return F().memoizedState}function je(l,t,u,a){var e=Sl();_.flags|=l,e.memoizedState=$u(1|t,u,{destroy:void 0},a===void 0?null:a)}function Nn(l,t,u,a){var e=F();a=a===void 0?null:a;var n=e.memoizedState.inst;Y!==null&&a!==null&&Zf(a,Y.memoizedState.deps)?e.memoizedState=$u(t,u,n,a):(_.flags|=l,e.memoizedState=$u(1|t,u,n,a))}function _0(l,t){je(8390656,8,l,t)}function wf(l,t){Nn(2048,8,l,t)}function zs(l,t){return Nn(4,2,l,t)}function As(l,t){return Nn(4,4,l,t)}function Os(l,t){if(typeof t=="function"){l=l();var u=t(l);return function(){typeof u=="function"?u():t(null)}}if(t!=null)return l=l(),t.current=l,function(){t.current=null}}function Ms(l,t,u){u=u!=null?u.concat([l]):null,Nn(4,4,Os.bind(null,t,l),u)}function Wf(){}function _s(l,t){var u=F();t=t===void 0?null:t;var a=u.memoizedState;return t!==null&&Zf(t,a[1])?a[0]:(u.memoizedState=[l,t],l)}function Ds(l,t){var u=F();t=t===void 0?null:t;var a=u.memoizedState;if(t!==null&&Zf(t,a[1]))return a[0];if(a=l(),iu){Nt(!0);try{l()}finally{Nt(!1)}}return u.memoizedState=[a,t],a}function $f(l,t,u){return u===void 0||jt&1073741824?l.memoizedState=t:(l.memoizedState=u,l=ov(),_.lanes|=l,Lt|=l,u)}function Us(l,t,u,a){return Dl(u,t)?u:wu.current!==null?(l=$f(l,u,a),Dl(l,t)||(el=!0),l):jt&42?(l=ov(),_.lanes|=l,Lt|=l,t):(el=!0,l.memoizedState=u)}function Rs(l,t,u,a,e){var n=C.p;C.p=n!==0&&8>n?n:8;var c=O.T,f={};O.T=f,Ff(l,!1,t,u);try{var i=e(),s=O.S;if(s!==null&&s(f,i),i!==null&&typeof i=="object"&&typeof i.then=="function"){var o=Cy(i,a);Ra(l,t,o,_l(l))}else Ra(l,t,a,_l(l))}catch(b){Ra(l,t,{then:function(){},status:"rejected",reason:b},_l())}finally{C.p=n,O.T=c}}function Ly(){}function $c(l,t,u,a){if(l.tag!==5)throw Error(S(476));var e=Hs(l).queue;Rs(l,e,t,lu,u===null?Ly:function(){return Ns(l),u(a)})}function Hs(l){var t=l.memoizedState;if(t!==null)return t;t={memoizedState:lu,baseState:lu,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:lu},next:null};var u={};return t.next={memoizedState:u,baseState:u,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ot,lastRenderedState:u},next:null},l.memoizedState=t,l=l.alternate,l!==null&&(l.memoizedState=t),t}function Ns(l){var t=Hs(l).next.queue;Ra(l,t,{},_l())}function kf(){return dl($a)}function ps(){return F().memoizedState}function qs(){return F().memoizedState}function Ky(l){for(var t=l.return;t!==null;){switch(t.tag){case 24:case 3:var u=_l();l=Yt(u);var a=Bt(t,l,u);a!==null&&(gl(a,t,u),Na(a,t,u)),t={cache:Qf()},l.payload=t;return}t=t.return}}function Jy(l,t,u){var a=_l();u={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null},pn(l)?Bs(t,u):(u=Yf(l,t,u,a),u!==null&&(gl(u,l,a),Gs(u,t,a)))}function Ys(l,t,u){var a=_l();Ra(l,t,u,a)}function Ra(l,t,u,a){var e={lane:a,revertLane:0,action:u,hasEagerState:!1,eagerState:null,next:null};if(pn(l))Bs(t,e);else{var n=l.alternate;if(l.lanes===0&&(n===null||n.lanes===0)&&(n=t.lastRenderedReducer,n!==null))try{var c=t.lastRenderedState,f=n(c,u);if(e.hasEagerState=!0,e.eagerState=f,Dl(f,c))return Un(l,t,e,0),Q===null&&Dn(),!1}catch{}finally{}if(u=Yf(l,t,e,a),u!==null)return gl(u,l,a),Gs(u,t,a),!0}return!1}function Ff(l,t,u,a){if(a={lane:2,revertLane:fi(),action:a,hasEagerState:!1,eagerState:null,next:null},pn(l)){if(t)throw Error(S(479))}else t=Yf(l,u,a,2),t!==null&&gl(t,l,2)}function pn(l){var t=l.alternate;return l===_||t!==null&&t===_}function Bs(l,t){xu=nn=!0;var u=l.pending;u===null?t.next=t:(t.next=u.next,u.next=t),l.pending=t}function Gs(l,t,u){if(u&4194176){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,O1(l,u)}}var Pl={readContext:dl,use:Hn,useCallback:W,useContext:W,useEffect:W,useImperativeHandle:W,useLayoutEffect:W,useInsertionEffect:W,useMemo:W,useReducer:W,useRef:W,useState:W,useDebugValue:W,useDeferredValue:W,useTransition:W,useSyncExternalStore:W,useId:W};Pl.useCacheRefresh=W;Pl.useMemoCache=W;Pl.useHostTransitionStatus=W;Pl.useFormState=W;Pl.useActionState=W;Pl.useOptimistic=W;var mu={readContext:dl,use:Hn,useCallback:function(l,t){return Sl().memoizedState=[l,t===void 0?null:t],l},useContext:dl,useEffect:_0,useImperativeHandle:function(l,t,u){u=u!=null?u.concat([l]):null,je(4194308,4,Os.bind(null,t,l),u)},useLayoutEffect:function(l,t){return je(4194308,4,l,t)},useInsertionEffect:function(l,t){je(4,2,l,t)},useMemo:function(l,t){var u=Sl();t=t===void 0?null:t;var a=l();if(iu){Nt(!0);try{l()}finally{Nt(!1)}}return u.memoizedState=[a,t],a},useReducer:function(l,t,u){var a=Sl();if(u!==void 0){var e=u(t);if(iu){Nt(!0);try{u(t)}finally{Nt(!1)}}}else e=t;return a.memoizedState=a.baseState=e,l={pending:null,lanes:0,dispatch:null,lastRenderedReducer:l,lastRenderedState:e},a.queue=l,l=l.dispatch=Jy.bind(null,_,l),[a.memoizedState,l]},useRef:function(l){var t=Sl();return l={current:l},t.memoizedState=l},useState:function(l){l=wc(l);var t=l.queue,u=Ys.bind(null,_,t);return t.dispatch=u,[l.memoizedState,u]},useDebugValue:Wf,useDeferredValue:function(l,t){var u=Sl();return $f(u,l,t)},useTransition:function(){var l=wc(!1);return l=Rs.bind(null,_,l.queue,!0,!1),Sl().memoizedState=l,[!1,l]},useSyncExternalStore:function(l,t,u){var a=_,e=Sl();if(p){if(u===void 0)throw Error(S(407));u=u()}else{if(u=t(),Q===null)throw Error(S(349));H&60||is(a,t,u)}e.memoizedState=u;var n={value:u,getSnapshot:t};return e.queue=n,_0(vs.bind(null,a,n,l),[l]),a.flags|=2048,$u(9,ss.bind(null,a,n,u,t),{destroy:void 0},null),u},useId:function(){var l=Sl(),t=Q.identifierPrefix;if(p){var u=vt,a=st;u=(a&~(1<<32-Ml(a)-1)).toString(32)+u,t=":"+t+"R"+u,u=cn++,0<u&&(t+="H"+u.toString(32)),t+=":"}else u=Zy++,t=":"+t+"r"+u.toString(32)+":";return l.memoizedState=t},useCacheRefresh:function(){return Sl().memoizedState=Ky.bind(null,_)}};mu.useMemoCache=Kf;mu.useHostTransitionStatus=kf;mu.useFormState=Ss;mu.useActionState=Ss;mu.useOptimistic=function(l){var t=Sl();t.memoizedState=t.baseState=l;var u={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=u,t=Ff.bind(null,_,!0,u),u.dispatch=t,[l,t]};var Jt={readContext:dl,use:Hn,useCallback:_s,useContext:dl,useEffect:wf,useImperativeHandle:Ms,useInsertionEffect:zs,useLayoutEffect:As,useMemo:Ds,useReducer:xe,useRef:Ts,useState:function(){return xe(ot)},useDebugValue:Wf,useDeferredValue:function(l,t){var u=F();return Us(u,Y.memoizedState,l,t)},useTransition:function(){var l=xe(ot)[0],t=F().memoizedState;return[typeof l=="boolean"?l:ne(l),t]},useSyncExternalStore:fs,useId:ps};Jt.useCacheRefresh=qs;Jt.useMemoCache=Kf;Jt.useHostTransitionStatus=kf;Jt.useFormState=bs;Jt.useActionState=bs;Jt.useOptimistic=function(l,t){var u=F();return hs(u,Y,l,t)};var ou={readContext:dl,use:Hn,useCallback:_s,useContext:dl,useEffect:wf,useImperativeHandle:Ms,useInsertionEffect:zs,useLayoutEffect:As,useMemo:Ds,useReducer:sc,useRef:Ts,useState:function(){return sc(ot)},useDebugValue:Wf,useDeferredValue:function(l,t){var u=F();return Y===null?$f(u,l,t):Us(u,Y.memoizedState,l,t)},useTransition:function(){var l=sc(ot)[0],t=F().memoizedState;return[typeof l=="boolean"?l:ne(l),t]},useSyncExternalStore:fs,useId:ps};ou.useCacheRefresh=qs;ou.useMemoCache=Kf;ou.useHostTransitionStatus=kf;ou.useFormState=rs;ou.useActionState=rs;ou.useOptimistic=function(l,t){var u=F();return Y!==null?hs(u,Y,l,t):(u.baseState=l,[l,u.queue.dispatch])};function vc(l,t,u,a){t=l.memoizedState,u=u(a,t),u=u==null?t:Z({},t,u),l.memoizedState=u,l.lanes===0&&(l.updateQueue.baseState=u)}var kc={isMounted:function(l){return(l=l._reactInternals)?Iu(l)===l:!1},enqueueSetState:function(l,t,u){l=l._reactInternals;var a=_l(),e=Yt(a);e.payload=t,u!=null&&(e.callback=u),t=Bt(l,e,a),t!==null&&(gl(t,l,a),Na(t,l,a))},enqueueReplaceState:function(l,t,u){l=l._reactInternals;var a=_l(),e=Yt(a);e.tag=1,e.payload=t,u!=null&&(e.callback=u),t=Bt(l,e,a),t!==null&&(gl(t,l,a),Na(t,l,a))},enqueueForceUpdate:function(l,t){l=l._reactInternals;var u=_l(),a=Yt(u);a.tag=2,t!=null&&(a.callback=t),t=Bt(l,a,u),t!==null&&(gl(t,l,u),Na(t,l,u))}};function D0(l,t,u,a,e,n,c){return l=l.stateNode,typeof l.shouldComponentUpdate=="function"?l.shouldComponentUpdate(a,n,c):t.prototype&&t.prototype.isPureReactComponent?!ja(u,a)||!ja(e,n):!0}function U0(l,t,u,a){l=t.state,typeof t.componentWillReceiveProps=="function"&&t.componentWillReceiveProps(u,a),typeof t.UNSAFE_componentWillReceiveProps=="function"&&t.UNSAFE_componentWillReceiveProps(u,a),t.state!==l&&kc.enqueueReplaceState(t,t.state,null)}function su(l,t){var u=t;if("ref"in t){u={};for(var a in t)a!=="ref"&&(u[a]=t[a])}if(l=l.defaultProps){u===t&&(u=Z({},u));for(var e in l)u[e]===void 0&&(u[e]=l[e])}return u}var fn=typeof reportError=="function"?reportError:function(l){if(typeof window=="object"&&typeof window.ErrorEvent=="function"){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:typeof l=="object"&&l!==null&&typeof l.message=="string"?String(l.message):String(l),error:l});if(!window.dispatchEvent(t))return}else if(typeof process=="object"&&typeof process.emit=="function"){process.emit("uncaughtException",l);return}console.error(l)};function Xs(l){fn(l)}function Qs(l){console.error(l)}function Cs(l){fn(l)}function sn(l,t){try{var u=l.onUncaughtError;u(t.value,{componentStack:t.stack})}catch(a){setTimeout(function(){throw a})}}function R0(l,t,u){try{var a=l.onCaughtError;a(u.value,{componentStack:u.stack,errorBoundary:t.tag===1?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function Fc(l,t,u){return u=Yt(u),u.tag=3,u.payload={element:null},u.callback=function(){sn(l,t)},u}function Zs(l){return l=Yt(l),l.tag=3,l}function xs(l,t,u,a){var e=u.type.getDerivedStateFromError;if(typeof e=="function"){var n=a.value;l.payload=function(){return e(n)},l.callback=function(){R0(t,u,a)}}var c=u.stateNode;c!==null&&typeof c.componentDidCatch=="function"&&(l.callback=function(){R0(t,u,a),typeof e!="function"&&(Xt===null?Xt=new Set([this]):Xt.add(this));var f=a.stack;this.componentDidCatch(a.value,{componentStack:f!==null?f:""})})}function wy(l,t,u,a,e){if(u.flags|=32768,a!==null&&typeof a=="object"&&typeof a.then=="function"){if(t=u.alternate,t!==null&&ce(t,u,e,!0),u=Cl.current,u!==null){switch(u.tag){case 13:return Fl===null?hf():u.alternate===null&&w===0&&(w=3),u.flags&=-257,u.flags|=65536,u.lanes=e,a===Lc?u.flags|=16384:(t=u.updateQueue,t===null?u.updateQueue=new Set([a]):t.add(a),Ac(l,a,e)),!1;case 22:return u.flags|=65536,a===Lc?u.flags|=16384:(t=u.updateQueue,t===null?(t={transitions:null,markerInstances:null,retryQueue:new Set([a])},u.updateQueue=t):(u=t.retryQueue,u===null?t.retryQueue=new Set([a]):u.add(a)),Ac(l,a,e)),!1}throw Error(S(435,u.tag))}return Ac(l,a,e),hf(),!1}if(p)return t=Cl.current,t!==null?(!(t.flags&65536)&&(t.flags|=256),t.flags|=65536,t.lanes=e,a!==Vc&&(l=Error(S(422),{cause:a}),Va(Gl(l,u)))):(a!==Vc&&(t=Error(S(423),{cause:a}),Va(Gl(t,u))),l=l.current.alternate,l.flags|=65536,e&=-e,l.lanes|=e,a=Gl(a,u),e=Fc(l.stateNode,a,e),gc(l,e),w!==4&&(w=2)),!1;var n=Error(S(520),{cause:a});if(n=Gl(n,u),Ba===null?Ba=[n]:Ba.push(n),w!==4&&(w=2),t===null)return!0;a=Gl(a,u),u=t;do{switch(u.tag){case 3:return u.flags|=65536,l=e&-e,u.lanes|=l,l=Fc(u.stateNode,a,l),gc(u,l),!1;case 1:if(t=u.type,n=u.stateNode,(u.flags&128)===0&&(typeof t.getDerivedStateFromError=="function"||n!==null&&typeof n.componentDidCatch=="function"&&(Xt===null||!Xt.has(n))))return u.flags|=65536,e&=-e,u.lanes|=e,e=Zs(e),xs(e,l,u,a),gc(u,e),!1}u=u.return}while(u!==null);return!1}var js=Error(S(461)),el=!1;function cl(l,t,u,a){t.child=l===null?us(t,null,u,a):fu(t,l.child,u,a)}function H0(l,t,u,a,e){u=u.render;var n=t.ref;if("ref"in a){var c={};for(var f in a)f!=="ref"&&(c[f]=a[f])}else c=a;return vu(t),a=xf(l,t,u,c,n,e),f=jf(),l!==null&&!el?(Vf(l,t,e),gt(l,t,e)):(p&&f&&Bf(t),t.flags|=1,cl(l,t,a,e),t.child)}function N0(l,t,u,a,e){if(l===null){var n=u.type;return typeof n=="function"&&!ui(n)&&n.defaultProps===void 0&&u.compare===null?(t.tag=15,t.type=n,Vs(l,t,n,a,e)):(l=Le(u.type,null,a,t,t.mode,e),l.ref=t.ref,l.return=t,t.child=l)}if(n=l.child,!Pf(l,e)){var c=n.memoizedProps;if(u=u.compare,u=u!==null?u:ja,u(c,a)&&l.ref===t.ref)return gt(l,t,e)}return t.flags|=1,l=Gt(n,a),l.ref=t.ref,l.return=t,t.child=l}function Vs(l,t,u,a,e){if(l!==null){var n=l.memoizedProps;if(ja(n,a)&&l.ref===t.ref)if(el=!1,t.pendingProps=a=n,Pf(l,e))l.flags&131072&&(el=!0);else return t.lanes=l.lanes,gt(l,t,e)}return Pc(l,t,u,a,e)}function Ls(l,t,u){var a=t.pendingProps,e=a.children,n=(t.stateNode._pendingVisibility&2)!==0,c=l!==null?l.memoizedState:null;if(Ha(l,t),a.mode==="hidden"||n){if(t.flags&128){if(a=c!==null?c.baseLanes|u:u,l!==null){for(e=t.child=l.child,n=0;e!==null;)n=n|e.lanes|e.childLanes,e=e.sibling;t.childLanes=n&~a}else t.childLanes=0,t.child=null;return p0(l,t,a,u)}if(u&536870912)t.memoizedState={baseLanes:0,cachePool:null},l!==null&&Ze(t,c!==null?c.cachePool:null),c!==null?T0(t,c):Kc(),as(t);else return t.lanes=t.childLanes=536870912,p0(l,t,c!==null?c.baseLanes|u:u,u)}else c!==null?(Ze(t,c.cachePool),T0(t,c),Ut(t),t.memoizedState=null):(l!==null&&Ze(t,null),Kc(),Ut(t));return cl(l,t,e,u),t.child}function p0(l,t,u,a){var e=Cf();return e=e===null?null:{parent:P._currentValue,pool:e},t.memoizedState={baseLanes:u,cachePool:e},l!==null&&Ze(t,null),Kc(),as(t),l!==null&&ce(l,t,a,!0),null}function Ha(l,t){var u=t.ref;if(u===null)l!==null&&l.ref!==null&&(t.flags|=2097664);else{if(typeof u!="function"&&typeof u!="object")throw Error(S(284));(l===null||l.ref!==u)&&(t.flags|=2097664)}}function Pc(l,t,u,a,e){return vu(t),u=xf(l,t,u,a,void 0,e),a=jf(),l!==null&&!el?(Vf(l,t,e),gt(l,t,e)):(p&&a&&Bf(t),t.flags|=1,cl(l,t,u,e),t.child)}function q0(l,t,u,a,e,n){return vu(t),t.updateQueue=null,u=cs(t,a,u,e),ns(l),a=jf(),l!==null&&!el?(Vf(l,t,n),gt(l,t,n)):(p&&a&&Bf(t),t.flags|=1,cl(l,t,u,n),t.child)}function Y0(l,t,u,a,e){if(vu(t),t.stateNode===null){var n=pu,c=u.contextType;typeof c=="object"&&c!==null&&(n=dl(c)),n=new u(a,n),t.memoizedState=n.state!==null&&n.state!==void 0?n.state:null,n.updater=kc,t.stateNode=n,n._reactInternals=t,n=t.stateNode,n.props=a,n.state=t.memoizedState,n.refs={},If(t),c=u.contextType,n.context=typeof c=="object"&&c!==null?dl(c):pu,n.state=t.memoizedState,c=u.getDerivedStateFromProps,typeof c=="function"&&(vc(t,u,c,a),n.state=t.memoizedState),typeof u.getDerivedStateFromProps=="function"||typeof n.getSnapshotBeforeUpdate=="function"||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(c=n.state,typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount(),c!==n.state&&kc.enqueueReplaceState(n,n.state,null),qa(t,a,n,e),pa(),n.state=t.memoizedState),typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!0}else if(l===null){n=t.stateNode;var f=t.memoizedProps,i=su(u,f);n.props=i;var s=n.context,o=u.contextType;c=pu,typeof o=="object"&&o!==null&&(c=dl(o));var b=u.getDerivedStateFromProps;o=typeof b=="function"||typeof n.getSnapshotBeforeUpdate=="function",f=t.pendingProps!==f,o||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(f||s!==c)&&U0(t,n,a,c),_t=!1;var h=t.memoizedState;n.state=h,qa(t,a,n,e),pa(),s=t.memoizedState,f||h!==s||_t?(typeof b=="function"&&(vc(t,u,b,a),s=t.memoizedState),(i=_t||D0(t,u,i,a,h,s,c))?(o||typeof n.UNSAFE_componentWillMount!="function"&&typeof n.componentWillMount!="function"||(typeof n.componentWillMount=="function"&&n.componentWillMount(),typeof n.UNSAFE_componentWillMount=="function"&&n.UNSAFE_componentWillMount()),typeof n.componentDidMount=="function"&&(t.flags|=4194308)):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),t.memoizedProps=a,t.memoizedState=s),n.props=a,n.state=s,n.context=c,a=i):(typeof n.componentDidMount=="function"&&(t.flags|=4194308),a=!1)}else{n=t.stateNode,ef(l,t),c=t.memoizedProps,o=su(u,c),n.props=o,b=t.pendingProps,h=n.context,s=u.contextType,i=pu,typeof s=="object"&&s!==null&&(i=dl(s)),f=u.getDerivedStateFromProps,(s=typeof f=="function"||typeof n.getSnapshotBeforeUpdate=="function")||typeof n.UNSAFE_componentWillReceiveProps!="function"&&typeof n.componentWillReceiveProps!="function"||(c!==b||h!==i)&&U0(t,n,a,i),_t=!1,h=t.memoizedState,n.state=h,qa(t,a,n,e),pa();var m=t.memoizedState;c!==b||h!==m||_t||l!==null&&l.dependencies!==null&&vn(l.dependencies)?(typeof f=="function"&&(vc(t,u,f,a),m=t.memoizedState),(o=_t||D0(t,u,o,a,h,m,i)||l!==null&&l.dependencies!==null&&vn(l.dependencies))?(s||typeof n.UNSAFE_componentWillUpdate!="function"&&typeof n.componentWillUpdate!="function"||(typeof n.componentWillUpdate=="function"&&n.componentWillUpdate(a,m,i),typeof n.UNSAFE_componentWillUpdate=="function"&&n.UNSAFE_componentWillUpdate(a,m,i)),typeof n.componentDidUpdate=="function"&&(t.flags|=4),typeof n.getSnapshotBeforeUpdate=="function"&&(t.flags|=1024)):(typeof n.componentDidUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),t.memoizedProps=a,t.memoizedState=m),n.props=a,n.state=m,n.context=i,a=o):(typeof n.componentDidUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=4),typeof n.getSnapshotBeforeUpdate!="function"||c===l.memoizedProps&&h===l.memoizedState||(t.flags|=1024),a=!1)}return n=a,Ha(l,t),a=(t.flags&128)!==0,n||a?(n=t.stateNode,u=a&&typeof u.getDerivedStateFromError!="function"?null:n.render(),t.flags|=1,l!==null&&a?(t.child=fu(t,l.child,null,e),t.child=fu(t,null,u,e)):cl(l,t,u,e),t.memoizedState=n.state,l=t.child):l=gt(l,t,e),l}function B0(l,t,u,a){return ae(),t.flags|=256,cl(l,t,u,a),t.child}var dc={dehydrated:null,treeContext:null,retryLane:0};function yc(l){return{baseLanes:l,cachePool:es()}}function hc(l,t,u){return l=l!==null?l.childLanes&~u:0,t&&(l|=Ql),l}function Ks(l,t,u){var a=t.pendingProps,e=!1,n=(t.flags&128)!==0,c;if((c=n)||(c=l!==null&&l.memoizedState===null?!1:(I.current&2)!==0),c&&(e=!0,t.flags&=-129),c=(t.flags&32)!==0,t.flags&=-33,l===null){if(p){if(e?Dt(t):Ut(t),p){var f=fl,i;if(i=f){l:{for(i=f,f=wl;i.nodeType!==8;){if(!f){f=null;break l}if(i=Ll(i.nextSibling),i===null){f=null;break l}}f=i}f!==null?(t.memoizedState={dehydrated:f,treeContext:tu!==null?{id:st,overflow:vt}:null,retryLane:536870912},i=Xl(18,null,null,0),i.stateNode=f,i.return=t,t.child=i,ol=t,fl=null,i=!0):i=!1}i||cu(t)}if(f=t.memoizedState,f!==null&&(f=f.dehydrated,f!==null))return f.data==="$!"?t.lanes=16:t.lanes=536870912,null;dt(t)}return f=a.children,a=a.fallback,e?(Ut(t),e=t.mode,f=lf({mode:"hidden",children:f},e),a=au(a,e,u,null),f.return=t,a.return=t,f.sibling=a,t.child=f,e=t.child,e.memoizedState=yc(u),e.childLanes=hc(l,c,u),t.memoizedState=dc,a):(Dt(t),Ic(t,f))}if(i=l.memoizedState,i!==null&&(f=i.dehydrated,f!==null)){if(n)t.flags&256?(Dt(t),t.flags&=-257,t=mc(l,t,u)):t.memoizedState!==null?(Ut(t),t.child=l.child,t.flags|=128,t=null):(Ut(t),e=a.fallback,f=t.mode,a=lf({mode:"visible",children:a.children},f),e=au(e,f,u,null),e.flags|=2,a.return=t,e.return=t,a.sibling=e,t.child=a,fu(t,l.child,null,u),a=t.child,a.memoizedState=yc(u),a.childLanes=hc(l,c,u),t.memoizedState=dc,t=e);else if(Dt(t),f.data==="$!"){if(c=f.nextSibling&&f.nextSibling.dataset,c)var s=c.dgst;c=s,a=Error(S(419)),a.stack="",a.digest=c,Va({value:a,source:null,stack:null}),t=mc(l,t,u)}else if(el||ce(l,t,u,!1),c=(u&l.childLanes)!==0,el||c){if(c=Q,c!==null){if(a=u&-u,a&42)a=1;else switch(a){case 2:a=1;break;case 8:a=4;break;case 32:a=16;break;case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:a=64;break;case 268435456:a=134217728;break;default:a=0}if(a=a&(c.suspendedLanes|u)?0:a,a!==0&&a!==i.retryLane)throw i.retryLane=a,xt(l,a),gl(c,l,a),js}f.data==="$?"||hf(),t=mc(l,t,u)}else f.data==="$?"?(t.flags|=128,t.child=l.child,t=ih.bind(null,l),f._reactRetry=t,t=null):(l=i.treeContext,fl=Ll(f.nextSibling),ol=t,p=!0,Vl=null,wl=!1,l!==null&&(ql[Yl++]=st,ql[Yl++]=vt,ql[Yl++]=tu,st=l.id,vt=l.overflow,tu=t),t=Ic(t,a.children),t.flags|=4096);return t}return e?(Ut(t),e=a.fallback,f=t.mode,i=l.child,s=i.sibling,a=Gt(i,{mode:"hidden",children:a.children}),a.subtreeFlags=i.subtreeFlags&31457280,s!==null?e=Gt(s,e):(e=au(e,f,u,null),e.flags|=2),e.return=t,a.return=t,a.sibling=e,t.child=a,a=e,e=t.child,f=l.child.memoizedState,f===null?f=yc(u):(i=f.cachePool,i!==null?(s=P._currentValue,i=i.parent!==s?{parent:s,pool:s}:i):i=es(),f={baseLanes:f.baseLanes|u,cachePool:i}),e.memoizedState=f,e.childLanes=hc(l,c,u),t.memoizedState=dc,a):(Dt(t),u=l.child,l=u.sibling,u=Gt(u,{mode:"visible",children:a.children}),u.return=t,u.sibling=null,l!==null&&(c=t.deletions,c===null?(t.deletions=[l],t.flags|=16):c.push(l)),t.child=u,t.memoizedState=null,u)}function Ic(l,t){return t=lf({mode:"visible",children:t},l.mode),t.return=l,l.child=t}function lf(l,t){return hv(l,t,0,null)}function mc(l,t,u){return fu(t,l.child,null,u),l=Ic(t,t.pendingProps.children),l.flags|=2,t.memoizedState=null,l}function G0(l,t,u){l.lanes|=t;var a=l.alternate;a!==null&&(a.lanes|=t),uf(l.return,t,u)}function oc(l,t,u,a,e){var n=l.memoizedState;n===null?l.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:a,tail:u,tailMode:e}:(n.isBackwards=t,n.rendering=null,n.renderingStartTime=0,n.last=a,n.tail=u,n.tailMode=e)}function Js(l,t,u){var a=t.pendingProps,e=a.revealOrder,n=a.tail;if(cl(l,t,a.children,u),a=I.current,a&2)a=a&1|2,t.flags|=128;else{if(l!==null&&l.flags&128)l:for(l=t.child;l!==null;){if(l.tag===13)l.memoizedState!==null&&G0(l,u,t);else if(l.tag===19)G0(l,u,t);else if(l.child!==null){l.child.return=l,l=l.child;continue}if(l===t)break l;for(;l.sibling===null;){if(l.return===null||l.return===t)break l;l=l.return}l.sibling.return=l.return,l=l.sibling}a&=1}switch(x(I,a),e){case"forwards":for(u=t.child,e=null;u!==null;)l=u.alternate,l!==null&&en(l)===null&&(e=u),u=u.sibling;u=e,u===null?(e=t.child,t.child=null):(e=u.sibling,u.sibling=null),oc(t,!1,e,u,n);break;case"backwards":for(u=null,e=t.child,t.child=null;e!==null;){if(l=e.alternate,l!==null&&en(l)===null){t.child=e;break}l=e.sibling,e.sibling=u,u=e,e=l}oc(t,!0,u,null,n);break;case"together":oc(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function gt(l,t,u){if(l!==null&&(t.dependencies=l.dependencies),Lt|=t.lanes,!(u&t.childLanes))if(l!==null){if(ce(l,t,u,!1),(u&t.childLanes)===0)return null}else return null;if(l!==null&&t.child!==l.child)throw Error(S(153));if(t.child!==null){for(l=t.child,u=Gt(l,l.pendingProps),t.child=u,u.return=t;l.sibling!==null;)l=l.sibling,u=u.sibling=Gt(l,l.pendingProps),u.return=t;u.sibling=null}return t.child}function Pf(l,t){return l.lanes&t?!0:(l=l.dependencies,!!(l!==null&&vn(l)))}function Wy(l,t,u){switch(t.tag){case 3:$e(t,t.stateNode.containerInfo),Rt(t,P,l.memoizedState.cache),ae();break;case 27:case 5:Yc(t);break;case 4:$e(t,t.stateNode.containerInfo);break;case 10:Rt(t,t.type,t.memoizedProps.value);break;case 13:var a=t.memoizedState;if(a!==null)return a.dehydrated!==null?(Dt(t),t.flags|=128,null):u&t.child.childLanes?Ks(l,t,u):(Dt(t),l=gt(l,t,u),l!==null?l.sibling:null);Dt(t);break;case 19:var e=(l.flags&128)!==0;if(a=(u&t.childLanes)!==0,a||(ce(l,t,u,!1),a=(u&t.childLanes)!==0),e){if(a)return Js(l,t,u);t.flags|=128}if(e=t.memoizedState,e!==null&&(e.rendering=null,e.tail=null,e.lastEffect=null),x(I,I.current),a)break;return null;case 22:case 23:return t.lanes=0,Ls(l,t,u);case 24:Rt(t,P,l.memoizedState.cache)}return gt(l,t,u)}function ws(l,t,u){if(l!==null)if(l.memoizedProps!==t.pendingProps)el=!0;else{if(!Pf(l,u)&&!(t.flags&128))return el=!1,Wy(l,t,u);el=!!(l.flags&131072)}else el=!1,p&&t.flags&1048576&&P1(t,un,t.index);switch(t.lanes=0,t.tag){case 16:l:{l=t.pendingProps;var a=t.elementType,e=a._init;if(a=e(a._payload),t.type=a,typeof a=="function")ui(a)?(l=su(a,l),t.tag=1,t=Y0(null,t,a,l,u)):(t.tag=0,t=Pc(null,t,a,l,u));else{if(a!=null){if(e=a.$$typeof,e===Af){t.tag=11,t=H0(null,t,a,l,u);break l}else if(e===Of){t.tag=14,t=N0(null,t,a,l,u);break l}}throw t=pc(a)||a,Error(S(306,t,""))}}return t;case 0:return Pc(l,t,t.type,t.pendingProps,u);case 1:return a=t.type,e=su(a,t.pendingProps),Y0(l,t,a,e,u);case 3:l:{if($e(t,t.stateNode.containerInfo),l===null)throw Error(S(387));var n=t.pendingProps;e=t.memoizedState,a=e.element,ef(l,t),qa(t,n,null,u);var c=t.memoizedState;if(n=c.cache,Rt(t,P,n),n!==e.cache&&af(t,[P],u,!0),pa(),n=c.element,e.isDehydrated)if(e={element:n,isDehydrated:!1,cache:c.cache},t.updateQueue.baseState=e,t.memoizedState=e,t.flags&256){t=B0(l,t,n,u);break l}else if(n!==a){a=Gl(Error(S(424)),t),Va(a),t=B0(l,t,n,u);break l}else for(fl=Ll(t.stateNode.containerInfo.firstChild),ol=t,p=!0,Vl=null,wl=!0,u=us(t,null,n,u),t.child=u;u;)u.flags=u.flags&-3|4096,u=u.sibling;else{if(ae(),n===a){t=gt(l,t,u);break l}cl(l,t,n,u)}t=t.child}return t;case 26:return Ha(l,t),l===null?(u=u1(t.type,null,t.pendingProps,null))?t.memoizedState=u:p||(u=t.type,l=t.pendingProps,a=Sn(qt.current).createElement(u),a[vl]=t,a[bl]=l,il(a,u,l),al(a),t.stateNode=a):t.memoizedState=u1(t.type,l.memoizedProps,t.pendingProps,l.memoizedState),null;case 27:return Yc(t),l===null&&p&&(a=t.stateNode=Nv(t.type,t.pendingProps,qt.current),ol=t,wl=!0,fl=Ll(a.firstChild)),a=t.pendingProps.children,l!==null||p?cl(l,t,a,u):t.child=fu(t,null,a,u),Ha(l,t),t.child;case 5:return l===null&&p&&((e=a=fl)&&(a=zh(a,t.type,t.pendingProps,wl),a!==null?(t.stateNode=a,ol=t,fl=Ll(a.firstChild),wl=!1,e=!0):e=!1),e||cu(t)),Yc(t),e=t.type,n=t.pendingProps,c=l!==null?l.memoizedProps:null,a=n.children,bf(e,n)?a=null:c!==null&&bf(e,c)&&(t.flags|=32),t.memoizedState!==null&&(e=xf(l,t,xy,null,null,u),$a._currentValue=e),Ha(l,t),cl(l,t,a,u),t.child;case 6:return l===null&&p&&((l=u=fl)&&(u=Ah(u,t.pendingProps,wl),u!==null?(t.stateNode=u,ol=t,fl=null,l=!0):l=!1),l||cu(t)),null;case 13:return Ks(l,t,u);case 4:return $e(t,t.stateNode.containerInfo),a=t.pendingProps,l===null?t.child=fu(t,null,a,u):cl(l,t,a,u),t.child;case 11:return H0(l,t,t.type,t.pendingProps,u);case 7:return cl(l,t,t.pendingProps,u),t.child;case 8:return cl(l,t,t.pendingProps.children,u),t.child;case 12:return cl(l,t,t.pendingProps.children,u),t.child;case 10:return a=t.pendingProps,Rt(t,t.type,a.value),cl(l,t,a.children,u),t.child;case 9:return e=t.type._context,a=t.pendingProps.children,vu(t),e=dl(e),a=a(e),t.flags|=1,cl(l,t,a,u),t.child;case 14:return N0(l,t,t.type,t.pendingProps,u);case 15:return Vs(l,t,t.type,t.pendingProps,u);case 19:return Js(l,t,u);case 22:return Ls(l,t,u);case 24:return vu(t),a=dl(P),l===null?(e=Cf(),e===null&&(e=Q,n=Qf(),e.pooledCache=n,n.refCount++,n!==null&&(e.pooledCacheLanes|=u),e=n),t.memoizedState={parent:a,cache:e},If(t),Rt(t,P,e)):(l.lanes&u&&(ef(l,t),qa(t,null,null,u),pa()),e=l.memoizedState,n=t.memoizedState,e.parent!==a?(e={parent:a,cache:a},t.memoizedState=e,t.lanes===0&&(t.memoizedState=t.updateQueue.baseState=e),Rt(t,P,a)):(a=n.cache,Rt(t,P,a),a!==e.cache&&af(t,[P],u,!0))),cl(l,t,t.pendingProps.children,u),t.child;case 29:throw t.pendingProps}throw Error(S(156,t.tag))}var tf=Il(null),gu=null,yt=null;function Rt(l,t,u){x(tf,t._currentValue),t._currentValue=u}function ht(l){l._currentValue=tf.current,nl(tf)}function uf(l,t,u){for(;l!==null;){var a=l.alternate;if((l.childLanes&t)!==t?(l.childLanes|=t,a!==null&&(a.childLanes|=t)):a!==null&&(a.childLanes&t)!==t&&(a.childLanes|=t),l===u)break;l=l.return}}function af(l,t,u,a){var e=l.child;for(e!==null&&(e.return=l);e!==null;){var n=e.dependencies;if(n!==null){var c=e.child;n=n.firstContext;l:for(;n!==null;){var f=n;n=e;for(var i=0;i<t.length;i++)if(f.context===t[i]){n.lanes|=u,f=n.alternate,f!==null&&(f.lanes|=u),uf(n.return,u,l),a||(c=null);break l}n=f.next}}else if(e.tag===18){if(c=e.return,c===null)throw Error(S(341));c.lanes|=u,n=c.alternate,n!==null&&(n.lanes|=u),uf(c,u,l),c=null}else c=e.child;if(c!==null)c.return=e;else for(c=e;c!==null;){if(c===l){c=null;break}if(e=c.sibling,e!==null){e.return=c.return,c=e;break}c=c.return}e=c}}function ce(l,t,u,a){l=null;for(var e=t,n=!1;e!==null;){if(!n){if(e.flags&524288)n=!0;else if(e.flags&262144)break}if(e.tag===10){var c=e.alternate;if(c===null)throw Error(S(387));if(c=c.memoizedProps,c!==null){var f=e.type;Dl(e.pendingProps.value,c.value)||(l!==null?l.push(f):l=[f])}}else if(e===We.current){if(c=e.alternate,c===null)throw Error(S(387));c.memoizedState.memoizedState!==e.memoizedState.memoizedState&&(l!==null?l.push($a):l=[$a])}e=e.return}l!==null&&af(t,l,u,a),t.flags|=262144}function vn(l){for(l=l.firstContext;l!==null;){if(!Dl(l.context._currentValue,l.memoizedValue))return!0;l=l.next}return!1}function vu(l){gu=l,yt=null,l=l.dependencies,l!==null&&(l.firstContext=null)}function dl(l){return Ws(gu,l)}function Ue(l,t){return gu===null&&vu(l),Ws(l,t)}function Ws(l,t){var u=t._currentValue;if(t={context:t,memoizedValue:u,next:null},yt===null){if(l===null)throw Error(S(308));yt=t,l.dependencies={lanes:0,firstContext:t},l.flags|=524288}else yt=yt.next=t;return u}var _t=!1;function If(l){l.updateQueue={baseState:l.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ef(l,t){l=l.updateQueue,t.updateQueue===l&&(t.updateQueue={baseState:l.baseState,firstBaseUpdate:l.firstBaseUpdate,lastBaseUpdate:l.lastBaseUpdate,shared:l.shared,callbacks:null})}function Yt(l){return{lane:l,tag:0,payload:null,callback:null,next:null}}function Bt(l,t,u){var a=l.updateQueue;if(a===null)return null;if(a=a.shared,L&2){var e=a.pending;return e===null?t.next=t:(t.next=e.next,e.next=t),a.pending=t,t=ln(l),F1(l,null,u),t}return Un(l,a,t,u),ln(l)}function Na(l,t,u){if(t=t.updateQueue,t!==null&&(t=t.shared,(u&4194176)!==0)){var a=t.lanes;a&=l.pendingLanes,u|=a,t.lanes=u,O1(l,u)}}function gc(l,t){var u=l.updateQueue,a=l.alternate;if(a!==null&&(a=a.updateQueue,u===a)){var e=null,n=null;if(u=u.firstBaseUpdate,u!==null){do{var c={lane:u.lane,tag:u.tag,payload:u.payload,callback:null,next:null};n===null?e=n=c:n=n.next=c,u=u.next}while(u!==null);n===null?e=n=t:n=n.next=t}else e=n=t;u={baseState:a.baseState,firstBaseUpdate:e,lastBaseUpdate:n,shared:a.shared,callbacks:a.callbacks},l.updateQueue=u;return}l=u.lastBaseUpdate,l===null?u.firstBaseUpdate=t:l.next=t,u.lastBaseUpdate=t}var nf=!1;function pa(){if(nf){var l=Zu;if(l!==null)throw l}}function qa(l,t,u,a){nf=!1;var e=l.updateQueue;_t=!1;var n=e.firstBaseUpdate,c=e.lastBaseUpdate,f=e.shared.pending;if(f!==null){e.shared.pending=null;var i=f,s=i.next;i.next=null,c===null?n=s:c.next=s,c=i;var o=l.alternate;o!==null&&(o=o.updateQueue,f=o.lastBaseUpdate,f!==c&&(f===null?o.firstBaseUpdate=s:f.next=s,o.lastBaseUpdate=i))}if(n!==null){var b=e.baseState;c=0,o=s=i=null,f=n;do{var h=f.lane&-536870913,m=h!==f.lane;if(m?(H&h)===h:(a&h)===h){h!==0&&h===Wu&&(nf=!0),o!==null&&(o=o.next={lane:0,tag:f.tag,payload:f.payload,callback:null,next:null});l:{var r=l,A=f;h=t;var K=u;switch(A.tag){case 1:if(r=A.payload,typeof r=="function"){b=r.call(K,b,h);break l}b=r;break l;case 3:r.flags=r.flags&-65537|128;case 0:if(r=A.payload,h=typeof r=="function"?r.call(K,b,h):r,h==null)break l;b=Z({},b,h);break l;case 2:_t=!0}}h=f.callback,h!==null&&(l.flags|=64,m&&(l.flags|=8192),m=e.callbacks,m===null?e.callbacks=[h]:m.push(h))}else m={lane:h,tag:f.tag,payload:f.payload,callback:f.callback,next:null},o===null?(s=o=m,i=b):o=o.next=m,c|=h;if(f=f.next,f===null){if(f=e.shared.pending,f===null)break;m=f,f=m.next,m.next=null,e.lastBaseUpdate=m,e.shared.pending=null}}while(!0);o===null&&(i=b),e.baseState=i,e.firstBaseUpdate=s,e.lastBaseUpdate=o,n===null&&(e.shared.lanes=0),Lt|=c,l.lanes=c,l.memoizedState=b}}function $s(l,t){if(typeof l!="function")throw Error(S(191,l));l.call(t)}function ks(l,t){var u=l.callbacks;if(u!==null)for(l.callbacks=null,l=0;l<u.length;l++)$s(u[l],t)}function fe(l,t){try{var u=t.updateQueue,a=u!==null?u.lastEffect:null;if(a!==null){var e=a.next;u=e;do{if((u.tag&l)===l){a=void 0;var n=u.create,c=u.inst;a=n(),c.destroy=a}u=u.next}while(u!==e)}}catch(f){G(t,t.return,f)}}function Vt(l,t,u){try{var a=t.updateQueue,e=a!==null?a.lastEffect:null;if(e!==null){var n=e.next;a=n;do{if((a.tag&l)===l){var c=a.inst,f=c.destroy;if(f!==void 0){c.destroy=void 0,e=t;var i=u;try{f()}catch(s){G(e,i,s)}}}a=a.next}while(a!==n)}}catch(s){G(t,t.return,s)}}function Fs(l){var t=l.updateQueue;if(t!==null){var u=l.stateNode;try{ks(t,u)}catch(a){G(l,l.return,a)}}}function Ps(l,t,u){u.props=su(l.type,l.memoizedProps),u.state=l.memoizedState;try{u.componentWillUnmount()}catch(a){G(l,t,a)}}function It(l,t){try{var u=l.ref;if(u!==null){var a=l.stateNode;switch(l.tag){case 26:case 27:case 5:var e=a;break;default:e=a}typeof u=="function"?l.refCleanup=u(e):u.current=e}}catch(n){G(l,t,n)}}function Al(l,t){var u=l.ref,a=l.refCleanup;if(u!==null)if(typeof a=="function")try{a()}catch(e){G(l,t,e)}finally{l.refCleanup=null,l=l.alternate,l!=null&&(l.refCleanup=null)}else if(typeof u=="function")try{u(null)}catch(e){G(l,t,e)}else u.current=null}function Is(l){var t=l.type,u=l.memoizedProps,a=l.stateNode;try{l:switch(t){case"button":case"input":case"select":case"textarea":u.autoFocus&&a.focus();break l;case"img":u.src?a.src=u.src:u.srcSet&&(a.srcset=u.srcSet)}}catch(e){G(l,l.return,e)}}function X0(l,t,u){try{var a=l.stateNode;Sh(a,l.type,u,t),a[bl]=t}catch(e){G(l,l.return,e)}}function lv(l){return l.tag===5||l.tag===3||l.tag===26||l.tag===27||l.tag===4}function Sc(l){l:for(;;){for(;l.sibling===null;){if(l.return===null||lv(l.return))return null;l=l.return}for(l.sibling.return=l.return,l=l.sibling;l.tag!==5&&l.tag!==6&&l.tag!==27&&l.tag!==18;){if(l.flags&2||l.child===null||l.tag===4)continue l;l.child.return=l,l=l.child}if(!(l.flags&2))return l.stateNode}}function cf(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?u.nodeType===8?u.parentNode.insertBefore(l,t):u.insertBefore(l,t):(u.nodeType===8?(t=u.parentNode,t.insertBefore(l,u)):(t=u,t.appendChild(l)),u=u._reactRootContainer,u!=null||t.onclick!==null||(t.onclick=Bn));else if(a!==4&&a!==27&&(l=l.child,l!==null))for(cf(l,t,u),l=l.sibling;l!==null;)cf(l,t,u),l=l.sibling}function dn(l,t,u){var a=l.tag;if(a===5||a===6)l=l.stateNode,t?u.insertBefore(l,t):u.appendChild(l);else if(a!==4&&a!==27&&(l=l.child,l!==null))for(dn(l,t,u),l=l.sibling;l!==null;)dn(l,t,u),l=l.sibling}var nt=!1,J=!1,bc=!1,Q0=typeof WeakSet=="function"?WeakSet:Set,ul=null,C0=!1;function $y(l,t){if(l=l.containerInfo,gf=Tn,l=L1(l),pf(l)){if("selectionStart"in l)var u={start:l.selectionStart,end:l.selectionEnd};else l:{u=(u=l.ownerDocument)&&u.defaultView||window;var a=u.getSelection&&u.getSelection();if(a&&a.rangeCount!==0){u=a.anchorNode;var e=a.anchorOffset,n=a.focusNode;a=a.focusOffset;try{u.nodeType,n.nodeType}catch{u=null;break l}var c=0,f=-1,i=-1,s=0,o=0,b=l,h=null;t:for(;;){for(var m;b!==u||e!==0&&b.nodeType!==3||(f=c+e),b!==n||a!==0&&b.nodeType!==3||(i=c+a),b.nodeType===3&&(c+=b.nodeValue.length),(m=b.firstChild)!==null;)h=b,b=m;for(;;){if(b===l)break t;if(h===u&&++s===e&&(f=c),h===n&&++o===a&&(i=c),(m=b.nextSibling)!==null)break;b=h,h=b.parentNode}b=m}u=f===-1||i===-1?null:{start:f,end:i}}else u=null}u=u||{start:0,end:0}}else u=null;for(Sf={focusedElem:l,selectionRange:u},Tn=!1,ul=t;ul!==null;)if(t=ul,l=t.child,(t.subtreeFlags&1028)!==0&&l!==null)l.return=t,ul=l;else for(;ul!==null;){switch(t=ul,n=t.alternate,l=t.flags,t.tag){case 0:break;case 11:case 15:break;case 1:if(l&1024&&n!==null){l=void 0,u=t,e=n.memoizedProps,n=n.memoizedState,a=u.stateNode;try{var r=su(u.type,e,u.elementType===u.type);l=a.getSnapshotBeforeUpdate(r,n),a.__reactInternalSnapshotBeforeUpdate=l}catch(A){G(u,u.return,A)}}break;case 3:if(l&1024){if(l=t.stateNode.containerInfo,u=l.nodeType,u===9)Ef(l);else if(u===1)switch(l.nodeName){case"HEAD":case"HTML":case"BODY":Ef(l);break;default:l.textContent=""}}break;case 5:case 26:case 27:case 6:case 4:case 17:break;default:if(l&1024)throw Error(S(163))}if(l=t.sibling,l!==null){l.return=t.return,ul=l;break}ul=t.return}return r=C0,C0=!1,r}function tv(l,t,u){var a=u.flags;switch(u.tag){case 0:case 11:case 15:at(l,u),a&4&&fe(5,u);break;case 1:if(at(l,u),a&4)if(l=u.stateNode,t===null)try{l.componentDidMount()}catch(f){G(u,u.return,f)}else{var e=su(u.type,t.memoizedProps);t=t.memoizedState;try{l.componentDidUpdate(e,t,l.__reactInternalSnapshotBeforeUpdate)}catch(f){G(u,u.return,f)}}a&64&&Fs(u),a&512&&It(u,u.return);break;case 3:if(at(l,u),a&64&&(a=u.updateQueue,a!==null)){if(l=null,u.child!==null)switch(u.child.tag){case 27:case 5:l=u.child.stateNode;break;case 1:l=u.child.stateNode}try{ks(a,l)}catch(f){G(u,u.return,f)}}break;case 26:at(l,u),a&512&&It(u,u.return);break;case 27:case 5:at(l,u),t===null&&a&4&&Is(u),a&512&&It(u,u.return);break;case 12:at(l,u);break;case 13:at(l,u),a&4&&ev(l,u);break;case 22:if(e=u.memoizedState!==null||nt,!e){t=t!==null&&t.memoizedState!==null||J;var n=nt,c=J;nt=e,(J=t)&&!c?Ot(l,u,(u.subtreeFlags&8772)!==0):at(l,u),nt=n,J=c}a&512&&(u.memoizedProps.mode==="manual"?It(u,u.return):Al(u,u.return));break;default:at(l,u)}}function uv(l){var t=l.alternate;t!==null&&(l.alternate=null,uv(t)),l.child=null,l.deletions=null,l.sibling=null,l.tag===5&&(t=l.stateNode,t!==null&&_f(t)),l.stateNode=null,l.return=null,l.dependencies=null,l.memoizedProps=null,l.memoizedState=null,l.pendingProps=null,l.stateNode=null,l.updateQueue=null}var $=null,Tl=!1;function ut(l,t,u){for(u=u.child;u!==null;)av(l,t,u),u=u.sibling}function av(l,t,u){if(Ol&&typeof Ol.onCommitFiberUnmount=="function")try{Ol.onCommitFiberUnmount(Ia,u)}catch{}switch(u.tag){case 26:J||Al(u,t),ut(l,t,u),u.memoizedState?u.memoizedState.count--:u.stateNode&&(u=u.stateNode,u.parentNode.removeChild(u));break;case 27:J||Al(u,t);var a=$,e=Tl;for($=u.stateNode,ut(l,t,u),u=u.stateNode,t=u.attributes;t.length;)u.removeAttributeNode(t[0]);_f(u),$=a,Tl=e;break;case 5:J||Al(u,t);case 6:e=$;var n=Tl;if($=null,ut(l,t,u),$=e,Tl=n,$!==null)if(Tl)try{l=$,a=u.stateNode,l.nodeType===8?l.parentNode.removeChild(a):l.removeChild(a)}catch(c){G(u,t,c)}else try{$.removeChild(u.stateNode)}catch(c){G(u,t,c)}break;case 18:$!==null&&(Tl?(t=$,u=u.stateNode,t.nodeType===8?Uc(t.parentNode,u):t.nodeType===1&&Uc(t,u),Pa(t)):Uc($,u.stateNode));break;case 4:a=$,e=Tl,$=u.stateNode.containerInfo,Tl=!0,ut(l,t,u),$=a,Tl=e;break;case 0:case 11:case 14:case 15:J||Vt(2,u,t),J||Vt(4,u,t),ut(l,t,u);break;case 1:J||(Al(u,t),a=u.stateNode,typeof a.componentWillUnmount=="function"&&Ps(u,t,a)),ut(l,t,u);break;case 21:ut(l,t,u);break;case 22:J||Al(u,t),J=(a=J)||u.memoizedState!==null,ut(l,t,u),J=a;break;default:ut(l,t,u)}}function ev(l,t){if(t.memoizedState===null&&(l=t.alternate,l!==null&&(l=l.memoizedState,l!==null&&(l=l.dehydrated,l!==null))))try{Pa(l)}catch(u){G(t,t.return,u)}}function ky(l){switch(l.tag){case 13:case 19:var t=l.stateNode;return t===null&&(t=l.stateNode=new Q0),t;case 22:return l=l.stateNode,t=l._retryCache,t===null&&(t=l._retryCache=new Q0),t;default:throw Error(S(435,l.tag))}}function Ec(l,t){var u=ky(l);t.forEach(function(a){var e=sh.bind(null,l,a);u.has(a)||(u.add(a),a.then(e,e))})}function Rl(l,t){var u=t.deletions;if(u!==null)for(var a=0;a<u.length;a++){var e=u[a],n=l,c=t,f=c;l:for(;f!==null;){switch(f.tag){case 27:case 5:$=f.stateNode,Tl=!1;break l;case 3:$=f.stateNode.containerInfo,Tl=!0;break l;case 4:$=f.stateNode.containerInfo,Tl=!0;break l}f=f.return}if($===null)throw Error(S(160));av(n,c,e),$=null,Tl=!1,n=e.alternate,n!==null&&(n.return=null),e.return=null}if(t.subtreeFlags&13878)for(t=t.child;t!==null;)nv(t,l),t=t.sibling}var jl=null;function nv(l,t){var u=l.alternate,a=l.flags;switch(l.tag){case 0:case 11:case 14:case 15:Rl(t,l),Hl(l),a&4&&(Vt(3,l,l.return),fe(3,l),Vt(5,l,l.return));break;case 1:Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),a&64&&nt&&(l=l.updateQueue,l!==null&&(a=l.callbacks,a!==null&&(u=l.shared.hiddenCallbacks,l.shared.hiddenCallbacks=u===null?a:u.concat(a))));break;case 26:var e=jl;if(Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),a&4){var n=u!==null?u.memoizedState:null;if(a=l.memoizedState,u===null)if(a===null)if(l.stateNode===null){l:{a=l.type,u=l.memoizedProps,e=e.ownerDocument||e;t:switch(a){case"title":n=e.getElementsByTagName("title")[0],(!n||n[Ca]||n[vl]||n.namespaceURI==="http://www.w3.org/2000/svg"||n.hasAttribute("itemprop"))&&(n=e.createElement(a),e.head.insertBefore(n,e.querySelector("head > title"))),il(n,a,u),n[vl]=l,al(n),a=n;break l;case"link":var c=e1("link","href",e).get(a+(u.href||""));if(c){for(var f=0;f<c.length;f++)if(n=c[f],n.getAttribute("href")===(u.href==null?null:u.href)&&n.getAttribute("rel")===(u.rel==null?null:u.rel)&&n.getAttribute("title")===(u.title==null?null:u.title)&&n.getAttribute("crossorigin")===(u.crossOrigin==null?null:u.crossOrigin)){c.splice(f,1);break t}}n=e.createElement(a),il(n,a,u),e.head.appendChild(n);break;case"meta":if(c=e1("meta","content",e).get(a+(u.content||""))){for(f=0;f<c.length;f++)if(n=c[f],n.getAttribute("content")===(u.content==null?null:""+u.content)&&n.getAttribute("name")===(u.name==null?null:u.name)&&n.getAttribute("property")===(u.property==null?null:u.property)&&n.getAttribute("http-equiv")===(u.httpEquiv==null?null:u.httpEquiv)&&n.getAttribute("charset")===(u.charSet==null?null:u.charSet)){c.splice(f,1);break t}}n=e.createElement(a),il(n,a,u),e.head.appendChild(n);break;default:throw Error(S(468,a))}n[vl]=l,al(n),a=n}l.stateNode=a}else n1(e,l.type,l.stateNode);else l.stateNode=a1(e,a,l.memoizedProps);else n!==a?(n===null?u.stateNode!==null&&(u=u.stateNode,u.parentNode.removeChild(u)):n.count--,a===null?n1(e,l.type,l.stateNode):a1(e,a,l.memoizedProps)):a===null&&l.stateNode!==null&&X0(l,l.memoizedProps,u.memoizedProps)}break;case 27:if(a&4&&l.alternate===null){e=l.stateNode,n=l.memoizedProps;try{for(var i=e.firstChild;i;){var s=i.nextSibling,o=i.nodeName;i[Ca]||o==="HEAD"||o==="BODY"||o==="SCRIPT"||o==="STYLE"||o==="LINK"&&i.rel.toLowerCase()==="stylesheet"||e.removeChild(i),i=s}for(var b=l.type,h=e.attributes;h.length;)e.removeAttributeNode(h[0]);il(e,b,n),e[vl]=l,e[bl]=n}catch(r){G(l,l.return,r)}}case 5:if(Rl(t,l),Hl(l),a&512&&(J||u===null||Al(u,u.return)),l.flags&32){e=l.stateNode;try{Ju(e,"")}catch(r){G(l,l.return,r)}}a&4&&l.stateNode!=null&&(e=l.memoizedProps,X0(l,e,u!==null?u.memoizedProps:e)),a&1024&&(bc=!0);break;case 6:if(Rl(t,l),Hl(l),a&4){if(l.stateNode===null)throw Error(S(162));a=l.memoizedProps,u=l.stateNode;try{u.nodeValue=a}catch(r){G(l,l.return,r)}}break;case 3:if(Je=null,e=jl,jl=bn(t.containerInfo),Rl(t,l),jl=e,Hl(l),a&4&&u!==null&&u.memoizedState.isDehydrated)try{Pa(t.containerInfo)}catch(r){G(l,l.return,r)}bc&&(bc=!1,cv(l));break;case 4:a=jl,jl=bn(l.stateNode.containerInfo),Rl(t,l),Hl(l),jl=a;break;case 12:Rl(t,l),Hl(l);break;case 13:Rl(t,l),Hl(l),l.child.flags&8192&&l.memoizedState!==null!=(u!==null&&u.memoizedState!==null)&&(ni=kl()),a&4&&(a=l.updateQueue,a!==null&&(l.updateQueue=null,Ec(l,a)));break;case 22:if(a&512&&(J||u===null||Al(u,u.return)),i=l.memoizedState!==null,s=u!==null&&u.memoizedState!==null,o=nt,b=J,nt=o||i,J=b||s,Rl(t,l),J=b,nt=o,Hl(l),t=l.stateNode,t._current=l,t._visibility&=-3,t._visibility|=t._pendingVisibility&2,a&8192&&(t._visibility=i?t._visibility&-2:t._visibility|1,i&&(t=nt||J,u===null||s||t||zu(l)),l.memoizedProps===null||l.memoizedProps.mode!=="manual"))l:for(u=null,t=l;;){if(t.tag===5||t.tag===26||t.tag===27){if(u===null){s=u=t;try{if(e=s.stateNode,i)n=e.style,typeof n.setProperty=="function"?n.setProperty("display","none","important"):n.display="none";else{c=s.stateNode,f=s.memoizedProps.style;var m=f!=null&&f.hasOwnProperty("display")?f.display:null;c.style.display=m==null||typeof m=="boolean"?"":(""+m).trim()}}catch(r){G(s,s.return,r)}}}else if(t.tag===6){if(u===null){s=t;try{s.stateNode.nodeValue=i?"":s.memoizedProps}catch(r){G(s,s.return,r)}}}else if((t.tag!==22&&t.tag!==23||t.memoizedState===null||t===l)&&t.child!==null){t.child.return=t,t=t.child;continue}if(t===l)break l;for(;t.sibling===null;){if(t.return===null||t.return===l)break l;u===t&&(u=null),t=t.return}u===t&&(u=null),t.sibling.return=t.return,t=t.sibling}a&4&&(a=l.updateQueue,a!==null&&(u=a.retryQueue,u!==null&&(a.retryQueue=null,Ec(l,u))));break;case 19:Rl(t,l),Hl(l),a&4&&(a=l.updateQueue,a!==null&&(l.updateQueue=null,Ec(l,a)));break;case 21:break;default:Rl(t,l),Hl(l)}}function Hl(l){var t=l.flags;if(t&2){try{if(l.tag!==27){l:{for(var u=l.return;u!==null;){if(lv(u)){var a=u;break l}u=u.return}throw Error(S(160))}switch(a.tag){case 27:var e=a.stateNode,n=Sc(l);dn(l,n,e);break;case 5:var c=a.stateNode;a.flags&32&&(Ju(c,""),a.flags&=-33);var f=Sc(l);dn(l,f,c);break;case 3:case 4:var i=a.stateNode.containerInfo,s=Sc(l);cf(l,s,i);break;default:throw Error(S(161))}}}catch(o){G(l,l.return,o)}l.flags&=-3}t&4096&&(l.flags&=-4097)}function cv(l){if(l.subtreeFlags&1024)for(l=l.child;l!==null;){var t=l;cv(t),t.tag===5&&t.flags&1024&&t.stateNode.reset(),l=l.sibling}}function at(l,t){if(t.subtreeFlags&8772)for(t=t.child;t!==null;)tv(l,t.alternate,t),t=t.sibling}function zu(l){for(l=l.child;l!==null;){var t=l;switch(t.tag){case 0:case 11:case 14:case 15:Vt(4,t,t.return),zu(t);break;case 1:Al(t,t.return);var u=t.stateNode;typeof u.componentWillUnmount=="function"&&Ps(t,t.return,u),zu(t);break;case 26:case 27:case 5:Al(t,t.return),zu(t);break;case 22:Al(t,t.return),t.memoizedState===null&&zu(t);break;default:zu(t)}l=l.sibling}}function Ot(l,t,u){for(u=u&&(t.subtreeFlags&8772)!==0,t=t.child;t!==null;){var a=t.alternate,e=l,n=t,c=n.flags;switch(n.tag){case 0:case 11:case 15:Ot(e,n,u),fe(4,n);break;case 1:if(Ot(e,n,u),a=n,e=a.stateNode,typeof e.componentDidMount=="function")try{e.componentDidMount()}catch(s){G(a,a.return,s)}if(a=n,e=a.updateQueue,e!==null){var f=a.stateNode;try{var i=e.shared.hiddenCallbacks;if(i!==null)for(e.shared.hiddenCallbacks=null,e=0;e<i.length;e++)$s(i[e],f)}catch(s){G(a,a.return,s)}}u&&c&64&&Fs(n),It(n,n.return);break;case 26:case 27:case 5:Ot(e,n,u),u&&a===null&&c&4&&Is(n),It(n,n.return);break;case 12:Ot(e,n,u);break;case 13:Ot(e,n,u),u&&c&4&&ev(e,n);break;case 22:n.memoizedState===null&&Ot(e,n,u),It(n,n.return);break;default:Ot(e,n,u)}t=t.sibling}}function li(l,t){var u=null;l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),l=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(l=t.memoizedState.cachePool.pool),l!==u&&(l!=null&&l.refCount++,u!=null&&ee(u))}function ti(l,t){l=null,t.alternate!==null&&(l=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==l&&(t.refCount++,l!=null&&ee(l))}function At(l,t,u,a){if(t.subtreeFlags&10256)for(t=t.child;t!==null;)fv(l,t,u,a),t=t.sibling}function fv(l,t,u,a){var e=t.flags;switch(t.tag){case 0:case 11:case 15:At(l,t,u,a),e&2048&&fe(9,t);break;case 3:At(l,t,u,a),e&2048&&(l=null,t.alternate!==null&&(l=t.alternate.memoizedState.cache),t=t.memoizedState.cache,t!==l&&(t.refCount++,l!=null&&ee(l)));break;case 12:if(e&2048){At(l,t,u,a),l=t.stateNode;try{var n=t.memoizedProps,c=n.id,f=n.onPostCommit;typeof f=="function"&&f(c,t.alternate===null?"mount":"update",l.passiveEffectDuration,-0)}catch(i){G(t,t.return,i)}}else At(l,t,u,a);break;case 23:break;case 22:n=t.stateNode,t.memoizedState!==null?n._visibility&4?At(l,t,u,a):Ya(l,t):n._visibility&4?At(l,t,u,a):(n._visibility|=4,Au(l,t,u,a,(t.subtreeFlags&10256)!==0)),e&2048&&li(t.alternate,t);break;case 24:At(l,t,u,a),e&2048&&ti(t.alternate,t);break;default:At(l,t,u,a)}}function Au(l,t,u,a,e){for(e=e&&(t.subtreeFlags&10256)!==0,t=t.child;t!==null;){var n=l,c=t,f=u,i=a,s=c.flags;switch(c.tag){case 0:case 11:case 15:Au(n,c,f,i,e),fe(8,c);break;case 23:break;case 22:var o=c.stateNode;c.memoizedState!==null?o._visibility&4?Au(n,c,f,i,e):Ya(n,c):(o._visibility|=4,Au(n,c,f,i,e)),e&&s&2048&&li(c.alternate,c);break;case 24:Au(n,c,f,i,e),e&&s&2048&&ti(c.alternate,c);break;default:Au(n,c,f,i,e)}t=t.sibling}}function Ya(l,t){if(t.subtreeFlags&10256)for(t=t.child;t!==null;){var u=l,a=t,e=a.flags;switch(a.tag){case 22:Ya(u,a),e&2048&&li(a.alternate,a);break;case 24:Ya(u,a),e&2048&&ti(a.alternate,a);break;default:Ya(u,a)}t=t.sibling}}var za=8192;function ru(l){if(l.subtreeFlags&za)for(l=l.child;l!==null;)iv(l),l=l.sibling}function iv(l){switch(l.tag){case 26:ru(l),l.flags&za&&l.memoizedState!==null&&Gh(jl,l.memoizedState,l.memoizedProps);break;case 5:ru(l);break;case 3:case 4:var t=jl;jl=bn(l.stateNode.containerInfo),ru(l),jl=t;break;case 22:l.memoizedState===null&&(t=l.alternate,t!==null&&t.memoizedState!==null?(t=za,za=16777216,ru(l),za=t):ru(l));break;default:ru(l)}}function sv(l){var t=l.alternate;if(t!==null&&(l=t.child,l!==null)){t.child=null;do t=l.sibling,l.sibling=null,l=t;while(l!==null)}}function ma(l){var t=l.deletions;if(l.flags&16){if(t!==null)for(var u=0;u<t.length;u++){var a=t[u];ul=a,dv(a,l)}sv(l)}if(l.subtreeFlags&10256)for(l=l.child;l!==null;)vv(l),l=l.sibling}function vv(l){switch(l.tag){case 0:case 11:case 15:ma(l),l.flags&2048&&Vt(9,l,l.return);break;case 3:ma(l);break;case 12:ma(l);break;case 22:var t=l.stateNode;l.memoizedState!==null&&t._visibility&4&&(l.return===null||l.return.tag!==13)?(t._visibility&=-5,Ve(l)):ma(l);break;default:ma(l)}}function Ve(l){var t=l.deletions;if(l.flags&16){if(t!==null)for(var u=0;u<t.length;u++){var a=t[u];ul=a,dv(a,l)}sv(l)}for(l=l.child;l!==null;){switch(t=l,t.tag){case 0:case 11:case 15:Vt(8,t,t.return),Ve(t);break;case 22:u=t.stateNode,u._visibility&4&&(u._visibility&=-5,Ve(t));break;default:Ve(t)}l=l.sibling}}function dv(l,t){for(;ul!==null;){var u=ul;switch(u.tag){case 0:case 11:case 15:Vt(8,u,t);break;case 23:case 22:if(u.memoizedState!==null&&u.memoizedState.cachePool!==null){var a=u.memoizedState.cachePool.pool;a!=null&&a.refCount++}break;case 24:ee(u.memoizedState.cache)}if(a=u.child,a!==null)a.return=u,ul=a;else l:for(u=l;ul!==null;){a=ul;var e=a.sibling,n=a.return;if(uv(a),a===u){ul=null;break l}if(e!==null){e.return=n,ul=e;break l}ul=n}}}function Fy(l,t,u,a){this.tag=l,this.key=u,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=a,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function Xl(l,t,u,a){return new Fy(l,t,u,a)}function ui(l){return l=l.prototype,!(!l||!l.isReactComponent)}function Gt(l,t){var u=l.alternate;return u===null?(u=Xl(l.tag,t,l.key,l.mode),u.elementType=l.elementType,u.type=l.type,u.stateNode=l.stateNode,u.alternate=l,l.alternate=u):(u.pendingProps=t,u.type=l.type,u.flags=0,u.subtreeFlags=0,u.deletions=null),u.flags=l.flags&31457280,u.childLanes=l.childLanes,u.lanes=l.lanes,u.child=l.child,u.memoizedProps=l.memoizedProps,u.memoizedState=l.memoizedState,u.updateQueue=l.updateQueue,t=l.dependencies,u.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext},u.sibling=l.sibling,u.index=l.index,u.ref=l.ref,u.refCleanup=l.refCleanup,u}function yv(l,t){l.flags&=31457282;var u=l.alternate;return u===null?(l.childLanes=0,l.lanes=t,l.child=null,l.subtreeFlags=0,l.memoizedProps=null,l.memoizedState=null,l.updateQueue=null,l.dependencies=null,l.stateNode=null):(l.childLanes=u.childLanes,l.lanes=u.lanes,l.child=u.child,l.subtreeFlags=0,l.deletions=null,l.memoizedProps=u.memoizedProps,l.memoizedState=u.memoizedState,l.updateQueue=u.updateQueue,l.type=u.type,t=u.dependencies,l.dependencies=t===null?null:{lanes:t.lanes,firstContext:t.firstContext}),l}function Le(l,t,u,a,e,n){var c=0;if(a=l,typeof l=="function")ui(l)&&(c=1);else if(typeof l=="string")c=Yh(l,u,$l.current)?26:l==="html"||l==="head"||l==="body"?27:5;else l:switch(l){case Mu:return au(u.children,e,n,t);case h1:c=8,e|=24;break;case Rc:return l=Xl(12,u,t,e|2),l.elementType=Rc,l.lanes=n,l;case Hc:return l=Xl(13,u,t,e),l.elementType=Hc,l.lanes=n,l;case Nc:return l=Xl(19,u,t,e),l.elementType=Nc,l.lanes=n,l;case o1:return hv(u,e,n,t);default:if(typeof l=="object"&&l!==null)switch(l.$$typeof){case zd:case it:c=10;break l;case m1:c=9;break l;case Af:c=11;break l;case Of:c=14;break l;case Mt:c=16,a=null;break l}c=29,u=Error(S(130,l===null?"null":typeof l,"")),a=null}return t=Xl(c,u,t,e),t.elementType=l,t.type=a,t.lanes=n,t}function au(l,t,u,a){return l=Xl(7,l,a,t),l.lanes=u,l}function hv(l,t,u,a){l=Xl(22,l,a,t),l.elementType=o1,l.lanes=u;var e={_visibility:1,_pendingVisibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null,_current:null,detach:function(){var n=e._current;if(n===null)throw Error(S(456));if(!(e._pendingVisibility&2)){var c=xt(n,2);c!==null&&(e._pendingVisibility|=2,gl(c,n,2))}},attach:function(){var n=e._current;if(n===null)throw Error(S(456));if(e._pendingVisibility&2){var c=xt(n,2);c!==null&&(e._pendingVisibility&=-3,gl(c,n,2))}}};return l.stateNode=e,l}function rc(l,t,u){return l=Xl(6,l,null,t),l.lanes=u,l}function Tc(l,t,u){return t=Xl(4,l.children!==null?l.children:[],l.key,t),t.lanes=u,t.stateNode={containerInfo:l.containerInfo,pendingChildren:null,implementation:l.implementation},t}function et(l){l.flags|=4}function Z0(l,t){if(t.type!=="stylesheet"||t.state.loading&4)l.flags&=-16777217;else if(l.flags|=16777216,!Yv(t)){if(t=Cl.current,t!==null&&((H&4194176)===H?Fl!==null:(H&62914560)!==H&&!(H&536870912)||t!==Fl))throw Da=Lc,I1;l.flags|=8192}}function Re(l,t){t!==null&&(l.flags|=4),l.flags&16384&&(t=l.tag!==22?z1():536870912,l.lanes|=t,ku|=t)}function oa(l,t){if(!p)switch(l.tailMode){case"hidden":t=l.tail;for(var u=null;t!==null;)t.alternate!==null&&(u=t),t=t.sibling;u===null?l.tail=null:u.sibling=null;break;case"collapsed":u=l.tail;for(var a=null;u!==null;)u.alternate!==null&&(a=u),u=u.sibling;a===null?t||l.tail===null?l.tail=null:l.tail.sibling=null:a.sibling=null}}function V(l){var t=l.alternate!==null&&l.alternate.child===l.child,u=0,a=0;if(t)for(var e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags&31457280,a|=e.flags&31457280,e.return=l,e=e.sibling;else for(e=l.child;e!==null;)u|=e.lanes|e.childLanes,a|=e.subtreeFlags,a|=e.flags,e.return=l,e=e.sibling;return l.subtreeFlags|=a,l.childLanes=u,t}function Py(l,t,u){var a=t.pendingProps;switch(Gf(t),t.tag){case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return V(t),null;case 1:return V(t),null;case 3:return u=t.stateNode,a=null,l!==null&&(a=l.memoizedState.cache),t.memoizedState.cache!==a&&(t.flags|=2048),ht(P),Lu(),u.pendingContext&&(u.context=u.pendingContext,u.pendingContext=null),(l===null||l.child===null)&&(ya(t)?et(t):l===null||l.memoizedState.isDehydrated&&!(t.flags&256)||(t.flags|=1024,Vl!==null&&(yf(Vl),Vl=null))),V(t),null;case 26:return u=t.memoizedState,l===null?(et(t),u!==null?(V(t),Z0(t,u)):(V(t),t.flags&=-16777217)):u?u!==l.memoizedState?(et(t),V(t),Z0(t,u)):(V(t),t.flags&=-16777217):(l.memoizedProps!==a&&et(t),V(t),t.flags&=-16777217),null;case 27:ke(t),u=qt.current;var e=t.type;if(l!==null&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return V(t),null}l=$l.current,ya(t)?g0(t,l):(l=Nv(e,a,u),t.stateNode=l,et(t))}return V(t),null;case 5:if(ke(t),u=t.type,l!==null&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(!a){if(t.stateNode===null)throw Error(S(166));return V(t),null}if(l=$l.current,ya(t))g0(t,l);else{switch(e=Sn(qt.current),l){case 1:l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case 2:l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;default:switch(u){case"svg":l=e.createElementNS("http://www.w3.org/2000/svg",u);break;case"math":l=e.createElementNS("http://www.w3.org/1998/Math/MathML",u);break;case"script":l=e.createElement("div"),l.innerHTML="<script><\/script>",l=l.removeChild(l.firstChild);break;case"select":l=typeof a.is=="string"?e.createElement("select",{is:a.is}):e.createElement("select"),a.multiple?l.multiple=!0:a.size&&(l.size=a.size);break;default:l=typeof a.is=="string"?e.createElement(u,{is:a.is}):e.createElement(u)}}l[vl]=t,l[bl]=a;l:for(e=t.child;e!==null;){if(e.tag===5||e.tag===6)l.appendChild(e.stateNode);else if(e.tag!==4&&e.tag!==27&&e.child!==null){e.child.return=e,e=e.child;continue}if(e===t)break l;for(;e.sibling===null;){if(e.return===null||e.return===t)break l;e=e.return}e.sibling.return=e.return,e=e.sibling}t.stateNode=l;l:switch(il(l,u,a),u){case"button":case"input":case"select":case"textarea":l=!!a.autoFocus;break l;case"img":l=!0;break l;default:l=!1}l&&et(t)}}return V(t),t.flags&=-16777217,null;case 6:if(l&&t.stateNode!=null)l.memoizedProps!==a&&et(t);else{if(typeof a!="string"&&t.stateNode===null)throw Error(S(166));if(l=qt.current,ya(t)){if(l=t.stateNode,u=t.memoizedProps,a=null,e=ol,e!==null)switch(e.tag){case 27:case 5:a=e.memoizedProps}l[vl]=t,l=!!(l.nodeValue===u||a!==null&&a.suppressHydrationWarning===!0||Uv(l.nodeValue,u)),l||cu(t)}else l=Sn(l).createTextNode(a),l[vl]=t,t.stateNode=l}return V(t),null;case 13:if(a=t.memoizedState,l===null||l.memoizedState!==null&&l.memoizedState.dehydrated!==null){if(e=ya(t),a!==null&&a.dehydrated!==null){if(l===null){if(!e)throw Error(S(318));if(e=t.memoizedState,e=e!==null?e.dehydrated:null,!e)throw Error(S(317));e[vl]=t}else ae(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;V(t),e=!1}else Vl!==null&&(yf(Vl),Vl=null),e=!0;if(!e)return t.flags&256?(dt(t),t):(dt(t),null)}if(dt(t),t.flags&128)return t.lanes=u,t;if(u=a!==null,l=l!==null&&l.memoizedState!==null,u){a=t.child,e=null,a.alternate!==null&&a.alternate.memoizedState!==null&&a.alternate.memoizedState.cachePool!==null&&(e=a.alternate.memoizedState.cachePool.pool);var n=null;a.memoizedState!==null&&a.memoizedState.cachePool!==null&&(n=a.memoizedState.cachePool.pool),n!==e&&(a.flags|=2048)}return u!==l&&u&&(t.child.flags|=8192),Re(t,t.updateQueue),V(t),null;case 4:return Lu(),l===null&&ii(t.stateNode.containerInfo),V(t),null;case 10:return ht(t.type),V(t),null;case 19:if(nl(I),e=t.memoizedState,e===null)return V(t),null;if(a=(t.flags&128)!==0,n=e.rendering,n===null)if(a)oa(e,!1);else{if(w!==0||l!==null&&l.flags&128)for(l=t.child;l!==null;){if(n=en(l),n!==null){for(t.flags|=128,oa(e,!1),l=n.updateQueue,t.updateQueue=l,Re(t,l),t.subtreeFlags=0,l=u,u=t.child;u!==null;)yv(u,l),u=u.sibling;return x(I,I.current&1|2),t.child}l=l.sibling}e.tail!==null&&kl()>yn&&(t.flags|=128,a=!0,oa(e,!1),t.lanes=4194304)}else{if(!a)if(l=en(n),l!==null){if(t.flags|=128,a=!0,l=l.updateQueue,t.updateQueue=l,Re(t,l),oa(e,!0),e.tail===null&&e.tailMode==="hidden"&&!n.alternate&&!p)return V(t),null}else 2*kl()-e.renderingStartTime>yn&&u!==536870912&&(t.flags|=128,a=!0,oa(e,!1),t.lanes=4194304);e.isBackwards?(n.sibling=t.child,t.child=n):(l=e.last,l!==null?l.sibling=n:t.child=n,e.last=n)}return e.tail!==null?(t=e.tail,e.rendering=t,e.tail=t.sibling,e.renderingStartTime=kl(),t.sibling=null,l=I.current,x(I,a?l&1|2:l&1),t):(V(t),null);case 22:case 23:return dt(t),Xf(),a=t.memoizedState!==null,l!==null?l.memoizedState!==null!==a&&(t.flags|=8192):a&&(t.flags|=8192),a?u&536870912&&!(t.flags&128)&&(V(t),t.subtreeFlags&6&&(t.flags|=8192)):V(t),u=t.updateQueue,u!==null&&Re(t,u.retryQueue),u=null,l!==null&&l.memoizedState!==null&&l.memoizedState.cachePool!==null&&(u=l.memoizedState.cachePool.pool),a=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(a=t.memoizedState.cachePool.pool),a!==u&&(t.flags|=2048),l!==null&&nl(uu),null;case 24:return u=null,l!==null&&(u=l.memoizedState.cache),t.memoizedState.cache!==u&&(t.flags|=2048),ht(P),V(t),null;case 25:return null}throw Error(S(156,t.tag))}function Iy(l,t){switch(Gf(t),t.tag){case 1:return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 3:return ht(P),Lu(),l=t.flags,l&65536&&!(l&128)?(t.flags=l&-65537|128,t):null;case 26:case 27:case 5:return ke(t),null;case 13:if(dt(t),l=t.memoizedState,l!==null&&l.dehydrated!==null){if(t.alternate===null)throw Error(S(340));ae()}return l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 19:return nl(I),null;case 4:return Lu(),null;case 10:return ht(t.type),null;case 22:case 23:return dt(t),Xf(),l!==null&&nl(uu),l=t.flags,l&65536?(t.flags=l&-65537|128,t):null;case 24:return ht(P),null;case 25:return null;default:return null}}function mv(l,t){switch(Gf(t),t.tag){case 3:ht(P),Lu();break;case 26:case 27:case 5:ke(t);break;case 4:Lu();break;case 13:dt(t);break;case 19:nl(I);break;case 10:ht(t.type);break;case 22:case 23:dt(t),Xf(),l!==null&&nl(uu);break;case 24:ht(P)}}var lh={getCacheForType:function(l){var t=dl(P),u=t.data.get(l);return u===void 0&&(u=l(),t.data.set(l,u)),u}},th=typeof WeakMap=="function"?WeakMap:Map,L=0,Q=null,U=null,H=0,X=0,zl=null,ct=!1,ua=!1,ai=!1,St=0,w=0,Lt=0,eu=0,ei=0,Ql=0,ku=0,Ba=null,Wl=null,ff=!1,ni=0,yn=1/0,hn=null,Xt=null,He=!1,Ft=null,Ga=0,sf=0,vf=null,Xa=0,df=null;function _l(){if(L&2&&H!==0)return H&-H;if(O.T!==null){var l=Wu;return l!==0?l:fi()}return _1()}function ov(){Ql===0&&(Ql=!(H&536870912)||p?T1():536870912);var l=Cl.current;return l!==null&&(l.flags|=32),Ql}function gl(l,t,u){(l===Q&&X===2||l.cancelPendingCommit!==null)&&(Fu(l,0),ft(l,H,Ql,!1)),te(l,u),(!(L&2)||l!==Q)&&(l===Q&&(!(L&2)&&(eu|=u),w===4&&ft(l,H,Ql,!1)),lt(l))}function gv(l,t,u){if(L&6)throw Error(S(327));var a=!u&&(t&60)===0&&(t&l.expiredLanes)===0||le(l,t),e=a?eh(l,t):zc(l,t,!0),n=a;do{if(e===0){ua&&!a&&ft(l,t,0,!1);break}else if(e===6)ft(l,t,0,!ct);else{if(u=l.current.alternate,n&&!uh(u)){e=zc(l,t,!1),n=!1;continue}if(e===2){if(n=t,l.errorRecoveryDisabledLanes&n)var c=0;else c=l.pendingLanes&-536870913,c=c!==0?c:c&536870912?536870912:0;if(c!==0){t=c;l:{var f=l;e=Ba;var i=f.current.memoizedState.isDehydrated;if(i&&(Fu(f,c).flags|=256),c=zc(f,c,!1),c!==2){if(ai&&!i){f.errorRecoveryDisabledLanes|=n,eu|=n,e=4;break l}n=Wl,Wl=e,n!==null&&yf(n)}e=c}if(n=!1,e!==2)continue}}if(e===1){Fu(l,0),ft(l,t,0,!0);break}l:{switch(a=l,e){case 0:case 1:throw Error(S(345));case 4:if((t&4194176)===t){ft(a,t,Ql,!ct);break l}break;case 2:Wl=null;break;case 3:case 5:break;default:throw Error(S(329))}if(a.finishedWork=u,a.finishedLanes=t,(t&62914560)===t&&(n=ni+300-kl(),10<n)){if(ft(a,t,Ql,!ct),An(a,0)!==0)break l;a.timeoutHandle=Hv(x0.bind(null,a,u,Wl,hn,ff,t,Ql,eu,ku,ct,2,-0,0),n);break l}x0(a,u,Wl,hn,ff,t,Ql,eu,ku,ct,0,-0,0)}}break}while(!0);lt(l)}function yf(l){Wl===null?Wl=l:Wl.push.apply(Wl,l)}function x0(l,t,u,a,e,n,c,f,i,s,o,b,h){var m=t.subtreeFlags;if((m&8192||(m&16785408)===16785408)&&(Wa={stylesheets:null,count:0,unsuspend:Bh},iv(t),t=Xh(),t!==null)){l.cancelPendingCommit=t(V0.bind(null,l,u,a,e,c,f,i,1,b,h)),ft(l,n,c,!s);return}V0(l,u,a,e,c,f,i,o,b,h)}function uh(l){for(var t=l;;){var u=t.tag;if((u===0||u===11||u===15)&&t.flags&16384&&(u=t.updateQueue,u!==null&&(u=u.stores,u!==null)))for(var a=0;a<u.length;a++){var e=u[a],n=e.getSnapshot;e=e.value;try{if(!Dl(n(),e))return!1}catch{return!1}}if(u=t.child,t.subtreeFlags&16384&&u!==null)u.return=t,t=u;else{if(t===l)break;for(;t.sibling===null;){if(t.return===null||t.return===l)return!0;t=t.return}t.sibling.return=t.return,t=t.sibling}}return!0}function ft(l,t,u,a){t&=~ei,t&=~eu,l.suspendedLanes|=t,l.pingedLanes&=~t,a&&(l.warmLanes|=t),a=l.expirationTimes;for(var e=t;0<e;){var n=31-Ml(e),c=1<<n;a[n]=-1,e&=~c}u!==0&&A1(l,u,t)}function qn(){return L&6?!0:(ie(0,!1),!1)}function ci(){if(U!==null){if(X===0)var l=U.return;else l=U,yt=gu=null,Lf(l),Cu=null,La=0,l=U;for(;l!==null;)mv(l.alternate,l),l=l.return;U=null}}function Fu(l,t){l.finishedWork=null,l.finishedLanes=0;var u=l.timeoutHandle;u!==-1&&(l.timeoutHandle=-1,Eh(u)),u=l.cancelPendingCommit,u!==null&&(l.cancelPendingCommit=null,u()),ci(),Q=l,U=u=Gt(l.current,null),H=t,X=0,zl=null,ct=!1,ua=le(l,t),ai=!1,ku=Ql=ei=eu=Lt=w=0,Wl=Ba=null,ff=!1,t&8&&(t|=t&32);var a=l.entangledLanes;if(a!==0)for(l=l.entanglements,a&=t;0<a;){var e=31-Ml(a),n=1<<e;t|=l[e],a&=~n}return St=t,Dn(),u}function Sv(l,t){_=null,O.H=Pl,t===_a?(t=E0(),X=3):t===I1?(t=E0(),X=4):X=t===js?8:t!==null&&typeof t=="object"&&typeof t.then=="function"?6:1,zl=t,U===null&&(w=1,sn(l,Gl(t,l.current)))}function bv(){var l=O.H;return O.H=Pl,l===null?Pl:l}function Ev(){var l=O.A;return O.A=lh,l}function hf(){w=4,ct||(H&4194176)!==H&&Cl.current!==null||(ua=!0),!(Lt&134217727)&&!(eu&134217727)||Q===null||ft(Q,H,Ql,!1)}function zc(l,t,u){var a=L;L|=2;var e=bv(),n=Ev();(Q!==l||H!==t)&&(hn=null,Fu(l,t)),t=!1;var c=w;l:do try{if(X!==0&&U!==null){var f=U,i=zl;switch(X){case 8:ci(),c=6;break l;case 3:case 2:case 6:Cl.current===null&&(t=!0);var s=X;if(X=0,zl=null,Bu(l,f,i,s),u&&ua){c=0;break l}break;default:s=X,X=0,zl=null,Bu(l,f,i,s)}}ah(),c=w;break}catch(o){Sv(l,o)}while(!0);return t&&l.shellSuspendCounter++,yt=gu=null,L=a,O.H=e,O.A=n,U===null&&(Q=null,H=0,Dn()),c}function ah(){for(;U!==null;)rv(U)}function eh(l,t){var u=L;L|=2;var a=bv(),e=Ev();Q!==l||H!==t?(hn=null,yn=kl()+500,Fu(l,t)):ua=le(l,t);l:do try{if(X!==0&&U!==null){t=U;var n=zl;t:switch(X){case 1:X=0,zl=null,Bu(l,t,n,1);break;case 2:if(b0(n)){X=0,zl=null,j0(t);break}t=function(){X===2&&Q===l&&(X=7),lt(l)},n.then(t,t);break l;case 3:X=7;break l;case 4:X=5;break l;case 7:b0(n)?(X=0,zl=null,j0(t)):(X=0,zl=null,Bu(l,t,n,7));break;case 5:var c=null;switch(U.tag){case 26:c=U.memoizedState;case 5:case 27:var f=U;if(!c||Yv(c)){X=0,zl=null;var i=f.sibling;if(i!==null)U=i;else{var s=f.return;s!==null?(U=s,Yn(s)):U=null}break t}}X=0,zl=null,Bu(l,t,n,5);break;case 6:X=0,zl=null,Bu(l,t,n,6);break;case 8:ci(),w=6;break l;default:throw Error(S(462))}}nh();break}catch(o){Sv(l,o)}while(!0);return yt=gu=null,O.H=a,O.A=e,L=u,U!==null?0:(Q=null,H=0,Dn(),w)}function nh(){for(;U!==null&&!Dd();)rv(U)}function rv(l){var t=ws(l.alternate,l,St);l.memoizedProps=l.pendingProps,t===null?Yn(l):U=t}function j0(l){var t=l,u=t.alternate;switch(t.tag){case 15:case 0:t=q0(u,t,t.pendingProps,t.type,void 0,H);break;case 11:t=q0(u,t,t.pendingProps,t.type.render,t.ref,H);break;case 5:Lf(t);default:mv(u,t),t=U=yv(t,St),t=ws(u,t,St)}l.memoizedProps=l.pendingProps,t===null?Yn(l):U=t}function Bu(l,t,u,a){yt=gu=null,Lf(t),Cu=null,La=0;var e=t.return;try{if(wy(l,e,t,u,H)){w=1,sn(l,Gl(u,l.current)),U=null;return}}catch(n){if(e!==null)throw U=e,n;w=1,sn(l,Gl(u,l.current)),U=null;return}t.flags&32768?(p||a===1?l=!0:ua||H&536870912?l=!1:(ct=l=!0,(a===2||a===3||a===6)&&(a=Cl.current,a!==null&&a.tag===13&&(a.flags|=16384))),Tv(t,l)):Yn(t)}function Yn(l){var t=l;do{if(t.flags&32768){Tv(t,ct);return}l=t.return;var u=Py(t.alternate,t,St);if(u!==null){U=u;return}if(t=t.sibling,t!==null){U=t;return}U=t=l}while(t!==null);w===0&&(w=5)}function Tv(l,t){do{var u=Iy(l.alternate,l);if(u!==null){u.flags&=32767,U=u;return}if(u=l.return,u!==null&&(u.flags|=32768,u.subtreeFlags=0,u.deletions=null),!t&&(l=l.sibling,l!==null)){U=l;return}U=l=u}while(l!==null);w=6,U=null}function V0(l,t,u,a,e,n,c,f,i,s){var o=O.T,b=C.p;try{C.p=2,O.T=null,ch(l,t,u,a,b,e,n,c,f,i,s)}finally{O.T=o,C.p=b}}function ch(l,t,u,a,e,n,c,f){do Vu();while(Ft!==null);if(L&6)throw Error(S(327));var i=l.finishedWork;if(a=l.finishedLanes,i===null)return null;if(l.finishedWork=null,l.finishedLanes=0,i===l.current)throw Error(S(177));l.callbackNode=null,l.callbackPriority=0,l.cancelPendingCommit=null;var s=i.lanes|i.childLanes;if(s|=qf,Qd(l,a,s,n,c,f),l===Q&&(U=Q=null,H=0),!(i.subtreeFlags&10256)&&!(i.flags&10256)||He||(He=!0,sf=s,vf=u,vh(Fe,function(){return Vu(!0),null})),u=(i.flags&15990)!==0,i.subtreeFlags&15990||u?(u=O.T,O.T=null,n=C.p,C.p=2,c=L,L|=4,$y(l,i),nv(i,l),Hy(Sf,l.containerInfo),Tn=!!gf,Sf=gf=null,l.current=i,tv(l,i.alternate,i),Ud(),L=c,C.p=n,O.T=u):l.current=i,He?(He=!1,Ft=l,Ga=a):zv(l,s),s=l.pendingLanes,s===0&&(Xt=null),qd(i.stateNode,e),lt(l),t!==null)for(e=l.onRecoverableError,i=0;i<t.length;i++)s=t[i],e(s.value,{componentStack:s.stack});return Ga&3&&Vu(),s=l.pendingLanes,a&4194218&&s&42?l===df?Xa++:(Xa=0,df=l):Xa=0,ie(0,!1),null}function zv(l,t){(l.pooledCacheLanes&=t)===0&&(t=l.pooledCache,t!=null&&(l.pooledCache=null,ee(t)))}function Vu(){if(Ft!==null){var l=Ft,t=sf;sf=0;var u=M1(Ga),a=O.T,e=C.p;try{if(C.p=32>u?32:u,O.T=null,Ft===null)var n=!1;else{u=vf,vf=null;var c=Ft,f=Ga;if(Ft=null,Ga=0,L&6)throw Error(S(331));var i=L;if(L|=4,vv(c.current),fv(c,c.current,f,u),L=i,ie(0,!1),Ol&&typeof Ol.onPostCommitFiberRoot=="function")try{Ol.onPostCommitFiberRoot(Ia,c)}catch{}n=!0}return n}finally{C.p=e,O.T=a,zv(l,t)}}return!1}function L0(l,t,u){t=Gl(u,t),t=Fc(l.stateNode,t,2),l=Bt(l,t,2),l!==null&&(te(l,2),lt(l))}function G(l,t,u){if(l.tag===3)L0(l,l,u);else for(;t!==null;){if(t.tag===3){L0(t,l,u);break}else if(t.tag===1){var a=t.stateNode;if(typeof t.type.getDerivedStateFromError=="function"||typeof a.componentDidCatch=="function"&&(Xt===null||!Xt.has(a))){l=Gl(u,l),u=Zs(2),a=Bt(t,u,2),a!==null&&(xs(u,a,t,l),te(a,2),lt(a));break}}t=t.return}}function Ac(l,t,u){var a=l.pingCache;if(a===null){a=l.pingCache=new th;var e=new Set;a.set(t,e)}else e=a.get(t),e===void 0&&(e=new Set,a.set(t,e));e.has(u)||(ai=!0,e.add(u),l=fh.bind(null,l,t,u),t.then(l,l))}function fh(l,t,u){var a=l.pingCache;a!==null&&a.delete(t),l.pingedLanes|=l.suspendedLanes&u,l.warmLanes&=~u,Q===l&&(H&u)===u&&(w===4||w===3&&(H&62914560)===H&&300>kl()-ni?!(L&2)&&Fu(l,0):ei|=u,ku===H&&(ku=0)),lt(l)}function Av(l,t){t===0&&(t=z1()),l=xt(l,t),l!==null&&(te(l,t),lt(l))}function ih(l){var t=l.memoizedState,u=0;t!==null&&(u=t.retryLane),Av(l,u)}function sh(l,t){var u=0;switch(l.tag){case 13:var a=l.stateNode,e=l.memoizedState;e!==null&&(u=e.retryLane);break;case 19:a=l.stateNode;break;case 22:a=l.stateNode._retryCache;break;default:throw Error(S(314))}a!==null&&a.delete(t),Av(l,u)}function vh(l,t){return Mf(l,t)}var mn=null,Ou=null,mf=!1,on=!1,Oc=!1,nu=0;function lt(l){l!==Ou&&l.next===null&&(Ou===null?mn=Ou=l:Ou=Ou.next=l),on=!0,mf||(mf=!0,yh(dh))}function ie(l,t){if(!Oc&&on){Oc=!0;do for(var u=!1,a=mn;a!==null;){if(!t)if(l!==0){var e=a.pendingLanes;if(e===0)var n=0;else{var c=a.suspendedLanes,f=a.pingedLanes;n=(1<<31-Ml(42|l)+1)-1,n&=e&~(c&~f),n=n&201326677?n&201326677|1:n?n|2:0}n!==0&&(u=!0,K0(a,n))}else n=H,n=An(a,a===Q?n:0),!(n&3)||le(a,n)||(u=!0,K0(a,n));a=a.next}while(u);Oc=!1}}function dh(){on=mf=!1;var l=0;nu!==0&&(bh()&&(l=nu),nu=0);for(var t=kl(),u=null,a=mn;a!==null;){var e=a.next,n=Ov(a,t);n===0?(a.next=null,u===null?mn=e:u.next=e,e===null&&(Ou=u)):(u=a,(l!==0||n&3)&&(on=!0)),a=e}ie(l,!1)}function Ov(l,t){for(var u=l.suspendedLanes,a=l.pingedLanes,e=l.expirationTimes,n=l.pendingLanes&-62914561;0<n;){var c=31-Ml(n),f=1<<c,i=e[c];i===-1?(!(f&u)||f&a)&&(e[c]=Xd(f,t)):i<=t&&(l.expiredLanes|=f),n&=~f}if(t=Q,u=H,u=An(l,l===t?u:0),a=l.callbackNode,u===0||l===t&&X===2||l.cancelPendingCommit!==null)return a!==null&&a!==null&&tc(a),l.callbackNode=null,l.callbackPriority=0;if(!(u&3)||le(l,u)){if(t=u&-u,t===l.callbackPriority)return t;switch(a!==null&&tc(a),M1(u)){case 2:case 8:u=E1;break;case 32:u=Fe;break;case 268435456:u=r1;break;default:u=Fe}return a=Mv.bind(null,l),u=Mf(u,a),l.callbackPriority=t,l.callbackNode=u,t}return a!==null&&a!==null&&tc(a),l.callbackPriority=2,l.callbackNode=null,2}function Mv(l,t){var u=l.callbackNode;if(Vu()&&l.callbackNode!==u)return null;var a=H;return a=An(l,l===Q?a:0),a===0?null:(gv(l,a,t),Ov(l,kl()),l.callbackNode!=null&&l.callbackNode===u?Mv.bind(null,l):null)}function K0(l,t){if(Vu())return null;gv(l,t,!0)}function yh(l){rh(function(){L&6?Mf(b1,l):l()})}function fi(){return nu===0&&(nu=T1()),nu}function J0(l){return l==null||typeof l=="symbol"||typeof l=="boolean"?null:typeof l=="function"?l:Xe(""+l)}function w0(l,t){var u=t.ownerDocument.createElement("input");return u.name=t.name,u.value=t.value,l.id&&u.setAttribute("form",l.id),t.parentNode.insertBefore(u,t),l=new FormData(l),u.parentNode.removeChild(u),l}function hh(l,t,u,a,e){if(t==="submit"&&u&&u.stateNode===e){var n=J0((e[bl]||null).action),c=a.submitter;c&&(t=(t=c[bl]||null)?J0(t.formAction):c.getAttribute("formAction"),t!==null&&(n=t,c=null));var f=new On("action","action",null,a,e);l.push({event:f,listeners:[{instance:null,listener:function(){if(a.defaultPrevented){if(nu!==0){var i=c?w0(e,c):new FormData(e);$c(u,{pending:!0,data:i,method:e.method,action:n},null,i)}}else typeof n=="function"&&(f.preventDefault(),i=c?w0(e,c):new FormData(e),$c(u,{pending:!0,data:i,method:e.method,action:n},n,i))},currentTarget:e}]})}}for(Ne=0;Ne<m0.length;Ne++)pe=m0[Ne],W0=pe.toLowerCase(),$0=pe[0].toUpperCase()+pe.slice(1),Kl(W0,"on"+$0);var pe,W0,$0,Ne;Kl(J1,"onAnimationEnd");Kl(w1,"onAnimationIteration");Kl(W1,"onAnimationStart");Kl("dblclick","onDoubleClick");Kl("focusin","onFocus");Kl("focusout","onBlur");Kl(py,"onTransitionRun");Kl(qy,"onTransitionStart");Kl(Yy,"onTransitionCancel");Kl($1,"onTransitionEnd");Ku("onMouseEnter",["mouseout","mouseover"]);Ku("onMouseLeave",["mouseout","mouseover"]);Ku("onPointerEnter",["pointerout","pointerover"]);Ku("onPointerLeave",["pointerout","pointerover"]);du("onChange","change click focusin focusout input keydown keyup selectionchange".split(" "));du("onSelect","focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange".split(" "));du("onBeforeInput",["compositionend","keypress","textInput","paste"]);du("onCompositionEnd","compositionend focusout keydown keypress keyup mousedown".split(" "));du("onCompositionStart","compositionstart focusout keydown keypress keyup mousedown".split(" "));du("onCompositionUpdate","compositionupdate focusout keydown keypress keyup mousedown".split(" "));var Ja="abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting".split(" "),mh=new Set("beforetoggle cancel close invalid load scroll scrollend toggle".split(" ").concat(Ja));function _v(l,t){t=(t&4)!==0;for(var u=0;u<l.length;u++){var a=l[u],e=a.event;a=a.listeners;l:{var n=void 0;if(t)for(var c=a.length-1;0<=c;c--){var f=a[c],i=f.instance,s=f.currentTarget;if(f=f.listener,i!==n&&e.isPropagationStopped())break l;n=f,e.currentTarget=s;try{n(e)}catch(o){fn(o)}e.currentTarget=null,n=i}else for(c=0;c<a.length;c++){if(f=a[c],i=f.instance,s=f.currentTarget,f=f.listener,i!==n&&e.isPropagationStopped())break l;n=f,e.currentTarget=s;try{n(e)}catch(o){fn(o)}e.currentTarget=null,n=i}}}}function R(l,t){var u=t[Gc];u===void 0&&(u=t[Gc]=new Set);var a=l+"__bubble";u.has(a)||(Dv(t,l,2,!1),u.add(a))}function Mc(l,t,u){var a=0;t&&(a|=4),Dv(u,l,a,t)}var qe="_reactListening"+Math.random().toString(36).slice(2);function ii(l){if(!l[qe]){l[qe]=!0,D1.forEach(function(u){u!=="selectionchange"&&(mh.has(u)||Mc(u,!1,l),Mc(u,!0,l))});var t=l.nodeType===9?l:l.ownerDocument;t===null||t[qe]||(t[qe]=!0,Mc("selectionchange",!1,t))}}function Dv(l,t,u,a){switch(Cv(t)){case 2:var e=Zh;break;case 8:e=xh;break;default:e=yi}u=e.bind(null,t,u,l),e=void 0,!Zc||t!=="touchstart"&&t!=="touchmove"&&t!=="wheel"||(e=!0),a?e!==void 0?l.addEventListener(t,u,{capture:!0,passive:e}):l.addEventListener(t,u,!0):e!==void 0?l.addEventListener(t,u,{passive:e}):l.addEventListener(t,u,!1)}function _c(l,t,u,a,e){var n=a;if(!(t&1)&&!(t&2)&&a!==null)l:for(;;){if(a===null)return;var c=a.tag;if(c===3||c===4){var f=a.stateNode.containerInfo;if(f===e||f.nodeType===8&&f.parentNode===e)break;if(c===4)for(c=a.return;c!==null;){var i=c.tag;if((i===3||i===4)&&(i=c.stateNode.containerInfo,i===e||i.nodeType===8&&i.parentNode===e))return;c=c.return}for(;f!==null;){if(c=Pt(f),c===null)return;if(i=c.tag,i===5||i===6||i===26||i===27){a=n=c;continue l}f=f.parentNode}}a=a.return}B1(function(){var s=n,o=Uf(u),b=[];l:{var h=k1.get(l);if(h!==void 0){var m=On,r=l;switch(l){case"keypress":if(Ce(u)===0)break l;case"keydown":case"keyup":m=sy;break;case"focusin":r="focus",m=cc;break;case"focusout":r="blur",m=cc;break;case"beforeblur":case"afterblur":m=cc;break;case"click":if(u.button===2)break l;case"auxclick":case"dblclick":case"mousedown":case"mousemove":case"mouseup":case"mouseout":case"mouseover":case"contextmenu":m=a0;break;case"drag":case"dragend":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"dragstart":case"drop":m=Fd;break;case"touchcancel":case"touchend":case"touchmove":case"touchstart":m=yy;break;case J1:case w1:case W1:m=ly;break;case $1:m=my;break;case"scroll":case"scrollend":m=$d;break;case"wheel":m=gy;break;case"copy":case"cut":case"paste":m=uy;break;case"gotpointercapture":case"lostpointercapture":case"pointercancel":case"pointerdown":case"pointermove":case"pointerout":case"pointerover":case"pointerup":m=n0;break;case"toggle":case"beforetoggle":m=by}var A=(t&4)!==0,K=!A&&(l==="scroll"||l==="scrollend"),d=A?h!==null?h+"Capture":null:h;A=[];for(var v=s,y;v!==null;){var g=v;if(y=g.stateNode,g=g.tag,g!==5&&g!==26&&g!==27||y===null||d===null||(g=Za(v,d),g!=null&&A.push(wa(v,g,y))),K)break;v=v.return}0<A.length&&(h=new m(h,r,null,u,o),b.push({event:h,listeners:A}))}}if(!(t&7)){l:{if(h=l==="mouseover"||l==="pointerover",m=l==="mouseout"||l==="pointerout",h&&u!==Cc&&(r=u.relatedTarget||u.fromElement)&&(Pt(r)||r[la]))break l;if((m||h)&&(h=o.window===o?o:(h=o.ownerDocument)?h.defaultView||h.parentWindow:window,m?(r=u.relatedTarget||u.toElement,m=s,r=r?Pt(r):null,r!==null&&(K=Iu(r),A=r.tag,r!==K||A!==5&&A!==27&&A!==6)&&(r=null)):(m=null,r=s),m!==r)){if(A=a0,g="onMouseLeave",d="onMouseEnter",v="mouse",(l==="pointerout"||l==="pointerover")&&(A=n0,g="onPointerLeave",d="onPointerEnter",v="pointer"),K=m==null?h:Ta(m),y=r==null?h:Ta(r),h=new A(g,v+"leave",m,u,o),h.target=K,h.relatedTarget=y,g=null,Pt(o)===s&&(A=new A(d,v+"enter",r,u,o),A.target=y,A.relatedTarget=K,g=A),K=g,m&&r)t:{for(A=m,d=r,v=0,y=A;y;y=Tu(y))v++;for(y=0,g=d;g;g=Tu(g))y++;for(;0<v-y;)A=Tu(A),v--;for(;0<y-v;)d=Tu(d),y--;for(;v--;){if(A===d||d!==null&&A===d.alternate)break t;A=Tu(A),d=Tu(d)}A=null}else A=null;m!==null&&k0(b,h,m,A,!1),r!==null&&K!==null&&k0(b,K,r,A,!0)}}l:{if(h=s?Ta(s):window,m=h.nodeName&&h.nodeName.toLowerCase(),m==="select"||m==="input"&&h.type==="file")var E=s0;else if(i0(h))if(x1)E=Uy;else{E=_y;var D=My}else m=h.nodeName,!m||m.toLowerCase()!=="input"||h.type!=="checkbox"&&h.type!=="radio"?s&&Df(s.elementType)&&(E=s0):E=Dy;if(E&&(E=E(l,s))){Z1(b,E,u,o);break l}D&&D(l,h,s),l==="focusout"&&s&&h.type==="number"&&s.memoizedProps.value!=null&&Qc(h,"number",h.value)}switch(D=s?Ta(s):window,l){case"focusin":(i0(D)||D.contentEditable==="true")&&(Ru=D,xc=s,Ma=null);break;case"focusout":Ma=xc=Ru=null;break;case"mousedown":jc=!0;break;case"contextmenu":case"mouseup":case"dragend":jc=!1,h0(b,u,o);break;case"selectionchange":if(Ny)break;case"keydown":case"keyup":h0(b,u,o)}var T;if(Nf)l:{switch(l){case"compositionstart":var z="onCompositionStart";break l;case"compositionend":z="onCompositionEnd";break l;case"compositionupdate":z="onCompositionUpdate";break l}z=void 0}else Uu?Q1(l,u)&&(z="onCompositionEnd"):l==="keydown"&&u.keyCode===229&&(z="onCompositionStart");z&&(X1&&u.locale!=="ko"&&(Uu||z!=="onCompositionStart"?z==="onCompositionEnd"&&Uu&&(T=G1()):(pt=o,Rf="value"in pt?pt.value:pt.textContent,Uu=!0)),D=gn(s,z),0<D.length&&(z=new e0(z,l,null,u,o),b.push({event:z,listeners:D}),T?z.data=T:(T=C1(u),T!==null&&(z.data=T)))),(T=ry?Ty(l,u):zy(l,u))&&(z=gn(s,"onBeforeInput"),0<z.length&&(D=new e0("onBeforeInput","beforeinput",null,u,o),b.push({event:D,listeners:z}),D.data=T)),hh(b,l,s,u,o)}_v(b,t)})}function wa(l,t,u){return{instance:l,listener:t,currentTarget:u}}function gn(l,t){for(var u=t+"Capture",a=[];l!==null;){var e=l,n=e.stateNode;e=e.tag,e!==5&&e!==26&&e!==27||n===null||(e=Za(l,u),e!=null&&a.unshift(wa(l,e,n)),e=Za(l,t),e!=null&&a.push(wa(l,e,n))),l=l.return}return a}function Tu(l){if(l===null)return null;do l=l.return;while(l&&l.tag!==5&&l.tag!==27);return l||null}function k0(l,t,u,a,e){for(var n=t._reactName,c=[];u!==null&&u!==a;){var f=u,i=f.alternate,s=f.stateNode;if(f=f.tag,i!==null&&i===a)break;f!==5&&f!==26&&f!==27||s===null||(i=s,e?(s=Za(u,n),s!=null&&c.unshift(wa(u,s,i))):e||(s=Za(u,n),s!=null&&c.push(wa(u,s,i)))),u=u.return}c.length!==0&&l.push({event:t,listeners:c})}var oh=/\r\n?/g,gh=/\u0000|\uFFFD/g;function F0(l){return(typeof l=="string"?l:""+l).replace(oh,`
|
9
|
+
`).replace(gh,"")}function Uv(l,t){return t=F0(t),F0(l)===t}function Bn(){}function q(l,t,u,a,e,n){switch(u){case"children":typeof a=="string"?t==="body"||t==="textarea"&&a===""||Ju(l,a):(typeof a=="number"||typeof a=="bigint")&&t!=="body"&&Ju(l,""+a);break;case"className":Te(l,"class",a);break;case"tabIndex":Te(l,"tabindex",a);break;case"dir":case"role":case"viewBox":case"width":case"height":Te(l,u,a);break;case"style":Y1(l,a,n);break;case"data":if(t!=="object"){Te(l,"data",a);break}case"src":case"href":if(a===""&&(t!=="a"||u!=="href")){l.removeAttribute(u);break}if(a==null||typeof a=="function"||typeof a=="symbol"||typeof a=="boolean"){l.removeAttribute(u);break}a=Xe(""+a),l.setAttribute(u,a);break;case"action":case"formAction":if(typeof a=="function"){l.setAttribute(u,"javascript:throw new Error('A React form was unexpectedly submitted. If you called form.submit() manually, consider using form.requestSubmit() instead. If you\\'re trying to use event.stopPropagation() in a submit event handler, consider also calling event.preventDefault().')");break}else typeof n=="function"&&(u==="formAction"?(t!=="input"&&q(l,t,"name",e.name,e,null),q(l,t,"formEncType",e.formEncType,e,null),q(l,t,"formMethod",e.formMethod,e,null),q(l,t,"formTarget",e.formTarget,e,null)):(q(l,t,"encType",e.encType,e,null),q(l,t,"method",e.method,e,null),q(l,t,"target",e.target,e,null)));if(a==null||typeof a=="symbol"||typeof a=="boolean"){l.removeAttribute(u);break}a=Xe(""+a),l.setAttribute(u,a);break;case"onClick":a!=null&&(l.onclick=Bn);break;case"onScroll":a!=null&&R("scroll",l);break;case"onScrollEnd":a!=null&&R("scrollend",l);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(u=a.__html,u!=null){if(e.children!=null)throw Error(S(60));l.innerHTML=u}}break;case"multiple":l.multiple=a&&typeof a!="function"&&typeof a!="symbol";break;case"muted":l.muted=a&&typeof a!="function"&&typeof a!="symbol";break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"defaultValue":case"defaultChecked":case"innerHTML":case"ref":break;case"autoFocus":break;case"xlinkHref":if(a==null||typeof a=="function"||typeof a=="boolean"||typeof a=="symbol"){l.removeAttribute("xlink:href");break}u=Xe(""+a),l.setAttributeNS("http://www.w3.org/1999/xlink","xlink:href",u);break;case"contentEditable":case"spellCheck":case"draggable":case"value":case"autoReverse":case"externalResourcesRequired":case"focusable":case"preserveAlpha":a!=null&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,""+a):l.removeAttribute(u);break;case"inert":case"allowFullScreen":case"async":case"autoPlay":case"controls":case"default":case"defer":case"disabled":case"disablePictureInPicture":case"disableRemotePlayback":case"formNoValidate":case"hidden":case"loop":case"noModule":case"noValidate":case"open":case"playsInline":case"readOnly":case"required":case"reversed":case"scoped":case"seamless":case"itemScope":a&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,""):l.removeAttribute(u);break;case"capture":case"download":a===!0?l.setAttribute(u,""):a!==!1&&a!=null&&typeof a!="function"&&typeof a!="symbol"?l.setAttribute(u,a):l.removeAttribute(u);break;case"cols":case"rows":case"size":case"span":a!=null&&typeof a!="function"&&typeof a!="symbol"&&!isNaN(a)&&1<=a?l.setAttribute(u,a):l.removeAttribute(u);break;case"rowSpan":case"start":a==null||typeof a=="function"||typeof a=="symbol"||isNaN(a)?l.removeAttribute(u):l.setAttribute(u,a);break;case"popover":R("beforetoggle",l),R("toggle",l),Ge(l,"popover",a);break;case"xlinkActuate":tt(l,"http://www.w3.org/1999/xlink","xlink:actuate",a);break;case"xlinkArcrole":tt(l,"http://www.w3.org/1999/xlink","xlink:arcrole",a);break;case"xlinkRole":tt(l,"http://www.w3.org/1999/xlink","xlink:role",a);break;case"xlinkShow":tt(l,"http://www.w3.org/1999/xlink","xlink:show",a);break;case"xlinkTitle":tt(l,"http://www.w3.org/1999/xlink","xlink:title",a);break;case"xlinkType":tt(l,"http://www.w3.org/1999/xlink","xlink:type",a);break;case"xmlBase":tt(l,"http://www.w3.org/XML/1998/namespace","xml:base",a);break;case"xmlLang":tt(l,"http://www.w3.org/XML/1998/namespace","xml:lang",a);break;case"xmlSpace":tt(l,"http://www.w3.org/XML/1998/namespace","xml:space",a);break;case"is":Ge(l,"is",a);break;case"innerText":case"textContent":break;default:(!(2<u.length)||u[0]!=="o"&&u[0]!=="O"||u[1]!=="n"&&u[1]!=="N")&&(u=wd.get(u)||u,Ge(l,u,a))}}function of(l,t,u,a,e,n){switch(u){case"style":Y1(l,a,n);break;case"dangerouslySetInnerHTML":if(a!=null){if(typeof a!="object"||!("__html"in a))throw Error(S(61));if(u=a.__html,u!=null){if(e.children!=null)throw Error(S(60));l.innerHTML=u}}break;case"children":typeof a=="string"?Ju(l,a):(typeof a=="number"||typeof a=="bigint")&&Ju(l,""+a);break;case"onScroll":a!=null&&R("scroll",l);break;case"onScrollEnd":a!=null&&R("scrollend",l);break;case"onClick":a!=null&&(l.onclick=Bn);break;case"suppressContentEditableWarning":case"suppressHydrationWarning":case"innerHTML":case"ref":break;case"innerText":case"textContent":break;default:if(!U1.hasOwnProperty(u))l:{if(u[0]==="o"&&u[1]==="n"&&(e=u.endsWith("Capture"),t=u.slice(2,e?u.length-7:void 0),n=l[bl]||null,n=n!=null?n[u]:null,typeof n=="function"&&l.removeEventListener(t,n,e),typeof a=="function")){typeof n!="function"&&n!==null&&(u in l?l[u]=null:l.hasAttribute(u)&&l.removeAttribute(u)),l.addEventListener(t,a,e);break l}u in l?l[u]=a:a===!0?l.setAttribute(u,""):Ge(l,u,a)}}}function il(l,t,u){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"img":R("error",l),R("load",l);var a=!1,e=!1,n;for(n in u)if(u.hasOwnProperty(n)){var c=u[n];if(c!=null)switch(n){case"src":a=!0;break;case"srcSet":e=!0;break;case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:q(l,t,n,c,u,null)}}e&&q(l,t,"srcSet",u.srcSet,u,null),a&&q(l,t,"src",u.src,u,null);return;case"input":R("invalid",l);var f=n=c=e=null,i=null,s=null;for(a in u)if(u.hasOwnProperty(a)){var o=u[a];if(o!=null)switch(a){case"name":e=o;break;case"type":c=o;break;case"checked":i=o;break;case"defaultChecked":s=o;break;case"value":n=o;break;case"defaultValue":f=o;break;case"children":case"dangerouslySetInnerHTML":if(o!=null)throw Error(S(137,t));break;default:q(l,t,a,o,u,null)}}N1(l,n,f,i,s,c,e,!1),Pe(l);return;case"select":R("invalid",l),a=c=n=null;for(e in u)if(u.hasOwnProperty(e)&&(f=u[e],f!=null))switch(e){case"value":n=f;break;case"defaultValue":c=f;break;case"multiple":a=f;default:q(l,t,e,f,u,null)}t=n,u=c,l.multiple=!!a,t!=null?Xu(l,!!a,t,!1):u!=null&&Xu(l,!!a,u,!0);return;case"textarea":R("invalid",l),n=e=a=null;for(c in u)if(u.hasOwnProperty(c)&&(f=u[c],f!=null))switch(c){case"value":a=f;break;case"defaultValue":e=f;break;case"children":n=f;break;case"dangerouslySetInnerHTML":if(f!=null)throw Error(S(91));break;default:q(l,t,c,f,u,null)}q1(l,a,e,n),Pe(l);return;case"option":for(i in u)if(u.hasOwnProperty(i)&&(a=u[i],a!=null))switch(i){case"selected":l.selected=a&&typeof a!="function"&&typeof a!="symbol";break;default:q(l,t,i,a,u,null)}return;case"dialog":R("cancel",l),R("close",l);break;case"iframe":case"object":R("load",l);break;case"video":case"audio":for(a=0;a<Ja.length;a++)R(Ja[a],l);break;case"image":R("error",l),R("load",l);break;case"details":R("toggle",l);break;case"embed":case"source":case"link":R("error",l),R("load",l);case"area":case"base":case"br":case"col":case"hr":case"keygen":case"meta":case"param":case"track":case"wbr":case"menuitem":for(s in u)if(u.hasOwnProperty(s)&&(a=u[s],a!=null))switch(s){case"children":case"dangerouslySetInnerHTML":throw Error(S(137,t));default:q(l,t,s,a,u,null)}return;default:if(Df(t)){for(o in u)u.hasOwnProperty(o)&&(a=u[o],a!==void 0&&of(l,t,o,a,u,void 0));return}}for(f in u)u.hasOwnProperty(f)&&(a=u[f],a!=null&&q(l,t,f,a,u,null))}function Sh(l,t,u,a){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var e=null,n=null,c=null,f=null,i=null,s=null,o=null;for(m in u){var b=u[m];if(u.hasOwnProperty(m)&&b!=null)switch(m){case"checked":break;case"value":break;case"defaultValue":i=b;default:a.hasOwnProperty(m)||q(l,t,m,null,a,b)}}for(var h in a){var m=a[h];if(b=u[h],a.hasOwnProperty(h)&&(m!=null||b!=null))switch(h){case"type":n=m;break;case"name":e=m;break;case"checked":s=m;break;case"defaultChecked":o=m;break;case"value":c=m;break;case"defaultValue":f=m;break;case"children":case"dangerouslySetInnerHTML":if(m!=null)throw Error(S(137,t));break;default:m!==b&&q(l,t,h,m,a,b)}}Xc(l,c,f,i,s,o,n,e);return;case"select":m=c=f=h=null;for(n in u)if(i=u[n],u.hasOwnProperty(n)&&i!=null)switch(n){case"value":break;case"multiple":m=i;default:a.hasOwnProperty(n)||q(l,t,n,null,a,i)}for(e in a)if(n=a[e],i=u[e],a.hasOwnProperty(e)&&(n!=null||i!=null))switch(e){case"value":h=n;break;case"defaultValue":f=n;break;case"multiple":c=n;default:n!==i&&q(l,t,e,n,a,i)}t=f,u=c,a=m,h!=null?Xu(l,!!u,h,!1):!!a!=!!u&&(t!=null?Xu(l,!!u,t,!0):Xu(l,!!u,u?[]:"",!1));return;case"textarea":m=h=null;for(f in u)if(e=u[f],u.hasOwnProperty(f)&&e!=null&&!a.hasOwnProperty(f))switch(f){case"value":break;case"children":break;default:q(l,t,f,null,a,e)}for(c in a)if(e=a[c],n=u[c],a.hasOwnProperty(c)&&(e!=null||n!=null))switch(c){case"value":h=e;break;case"defaultValue":m=e;break;case"children":break;case"dangerouslySetInnerHTML":if(e!=null)throw Error(S(91));break;default:e!==n&&q(l,t,c,e,a,n)}p1(l,h,m);return;case"option":for(var r in u)if(h=u[r],u.hasOwnProperty(r)&&h!=null&&!a.hasOwnProperty(r))switch(r){case"selected":l.selected=!1;break;default:q(l,t,r,null,a,h)}for(i in a)if(h=a[i],m=u[i],a.hasOwnProperty(i)&&h!==m&&(h!=null||m!=null))switch(i){case"selected":l.selected=h&&typeof h!="function"&&typeof h!="symbol";break;default:q(l,t,i,h,a,m)}return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var A in u)h=u[A],u.hasOwnProperty(A)&&h!=null&&!a.hasOwnProperty(A)&&q(l,t,A,null,a,h);for(s in a)if(h=a[s],m=u[s],a.hasOwnProperty(s)&&h!==m&&(h!=null||m!=null))switch(s){case"children":case"dangerouslySetInnerHTML":if(h!=null)throw Error(S(137,t));break;default:q(l,t,s,h,a,m)}return;default:if(Df(t)){for(var K in u)h=u[K],u.hasOwnProperty(K)&&h!==void 0&&!a.hasOwnProperty(K)&&of(l,t,K,void 0,a,h);for(o in a)h=a[o],m=u[o],!a.hasOwnProperty(o)||h===m||h===void 0&&m===void 0||of(l,t,o,h,a,m);return}}for(var d in u)h=u[d],u.hasOwnProperty(d)&&h!=null&&!a.hasOwnProperty(d)&&q(l,t,d,null,a,h);for(b in a)h=a[b],m=u[b],!a.hasOwnProperty(b)||h===m||h==null&&m==null||q(l,t,b,h,a,m)}var gf=null,Sf=null;function Sn(l){return l.nodeType===9?l:l.ownerDocument}function P0(l){switch(l){case"http://www.w3.org/2000/svg":return 1;case"http://www.w3.org/1998/Math/MathML":return 2;default:return 0}}function Rv(l,t){if(l===0)switch(t){case"svg":return 1;case"math":return 2;default:return 0}return l===1&&t==="foreignObject"?0:l}function bf(l,t){return l==="textarea"||l==="noscript"||typeof t.children=="string"||typeof t.children=="number"||typeof t.children=="bigint"||typeof t.dangerouslySetInnerHTML=="object"&&t.dangerouslySetInnerHTML!==null&&t.dangerouslySetInnerHTML.__html!=null}var Dc=null;function bh(){var l=window.event;return l&&l.type==="popstate"?l===Dc?!1:(Dc=l,!0):(Dc=null,!1)}var Hv=typeof setTimeout=="function"?setTimeout:void 0,Eh=typeof clearTimeout=="function"?clearTimeout:void 0,I0=typeof Promise=="function"?Promise:void 0,rh=typeof queueMicrotask=="function"?queueMicrotask:typeof I0<"u"?function(l){return I0.resolve(null).then(l).catch(Th)}:Hv;function Th(l){setTimeout(function(){throw l})}function Uc(l,t){var u=t,a=0;do{var e=u.nextSibling;if(l.removeChild(u),e&&e.nodeType===8)if(u=e.data,u==="/$"){if(a===0){l.removeChild(e),Pa(t);return}a--}else u!=="$"&&u!=="$?"&&u!=="$!"||a++;u=e}while(u);Pa(t)}function Ef(l){var t=l.firstChild;for(t&&t.nodeType===10&&(t=t.nextSibling);t;){var u=t;switch(t=t.nextSibling,u.nodeName){case"HTML":case"HEAD":case"BODY":Ef(u),_f(u);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if(u.rel.toLowerCase()==="stylesheet")continue}l.removeChild(u)}}function zh(l,t,u,a){for(;l.nodeType===1;){var e=u;if(l.nodeName.toLowerCase()!==t.toLowerCase()){if(!a&&(l.nodeName!=="INPUT"||l.type!=="hidden"))break}else if(a){if(!l[Ca])switch(t){case"meta":if(!l.hasAttribute("itemprop"))break;return l;case"link":if(n=l.getAttribute("rel"),n==="stylesheet"&&l.hasAttribute("data-precedence"))break;if(n!==e.rel||l.getAttribute("href")!==(e.href==null?null:e.href)||l.getAttribute("crossorigin")!==(e.crossOrigin==null?null:e.crossOrigin)||l.getAttribute("title")!==(e.title==null?null:e.title))break;return l;case"style":if(l.hasAttribute("data-precedence"))break;return l;case"script":if(n=l.getAttribute("src"),(n!==(e.src==null?null:e.src)||l.getAttribute("type")!==(e.type==null?null:e.type)||l.getAttribute("crossorigin")!==(e.crossOrigin==null?null:e.crossOrigin))&&n&&l.hasAttribute("async")&&!l.hasAttribute("itemprop"))break;return l;default:return l}}else if(t==="input"&&l.type==="hidden"){var n=e.name==null?null:""+e.name;if(e.type==="hidden"&&l.getAttribute("name")===n)return l}else return l;if(l=Ll(l.nextSibling),l===null)break}return null}function Ah(l,t,u){if(t==="")return null;for(;l.nodeType!==3;)if((l.nodeType!==1||l.nodeName!=="INPUT"||l.type!=="hidden")&&!u||(l=Ll(l.nextSibling),l===null))return null;return l}function Ll(l){for(;l!=null;l=l.nextSibling){var t=l.nodeType;if(t===1||t===3)break;if(t===8){if(t=l.data,t==="$"||t==="$!"||t==="$?"||t==="F!"||t==="F")break;if(t==="/$")return null}}return l}function l1(l){l=l.previousSibling;for(var t=0;l;){if(l.nodeType===8){var u=l.data;if(u==="$"||u==="$!"||u==="$?"){if(t===0)return l;t--}else u==="/$"&&t++}l=l.previousSibling}return null}function Nv(l,t,u){switch(t=Sn(u),l){case"html":if(l=t.documentElement,!l)throw Error(S(452));return l;case"head":if(l=t.head,!l)throw Error(S(453));return l;case"body":if(l=t.body,!l)throw Error(S(454));return l;default:throw Error(S(451))}}var Zl=new Map,t1=new Set;function bn(l){return typeof l.getRootNode=="function"?l.getRootNode():l.ownerDocument}var bt=C.d;C.d={f:Oh,r:Mh,D:_h,C:Dh,L:Uh,m:Rh,X:Nh,S:Hh,M:ph};function Oh(){var l=bt.f(),t=qn();return l||t}function Mh(l){var t=ta(l);t!==null&&t.tag===5&&t.type==="form"?Ns(t):bt.r(l)}var aa=typeof document>"u"?null:document;function pv(l,t,u){var a=aa;if(a&&typeof t=="string"&&t){var e=Bl(t);e='link[rel="'+l+'"][href="'+e+'"]',typeof u=="string"&&(e+='[crossorigin="'+u+'"]'),t1.has(e)||(t1.add(e),l={rel:l,crossOrigin:u,href:t},a.querySelector(e)===null&&(t=a.createElement("link"),il(t,"link",l),al(t),a.head.appendChild(t)))}}function _h(l){bt.D(l),pv("dns-prefetch",l,null)}function Dh(l,t){bt.C(l,t),pv("preconnect",l,t)}function Uh(l,t,u){bt.L(l,t,u);var a=aa;if(a&&l&&t){var e='link[rel="preload"][as="'+Bl(t)+'"]';t==="image"&&u&&u.imageSrcSet?(e+='[imagesrcset="'+Bl(u.imageSrcSet)+'"]',typeof u.imageSizes=="string"&&(e+='[imagesizes="'+Bl(u.imageSizes)+'"]')):e+='[href="'+Bl(l)+'"]';var n=e;switch(t){case"style":n=Pu(l);break;case"script":n=ea(l)}Zl.has(n)||(l=Z({rel:"preload",href:t==="image"&&u&&u.imageSrcSet?void 0:l,as:t},u),Zl.set(n,l),a.querySelector(e)!==null||t==="style"&&a.querySelector(se(n))||t==="script"&&a.querySelector(ve(n))||(t=a.createElement("link"),il(t,"link",l),al(t),a.head.appendChild(t)))}}function Rh(l,t){bt.m(l,t);var u=aa;if(u&&l){var a=t&&typeof t.as=="string"?t.as:"script",e='link[rel="modulepreload"][as="'+Bl(a)+'"][href="'+Bl(l)+'"]',n=e;switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":n=ea(l)}if(!Zl.has(n)&&(l=Z({rel:"modulepreload",href:l},t),Zl.set(n,l),u.querySelector(e)===null)){switch(a){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(u.querySelector(ve(n)))return}a=u.createElement("link"),il(a,"link",l),al(a),u.head.appendChild(a)}}}function Hh(l,t,u){bt.S(l,t,u);var a=aa;if(a&&l){var e=Gu(a).hoistableStyles,n=Pu(l);t=t||"default";var c=e.get(n);if(!c){var f={loading:0,preload:null};if(c=a.querySelector(se(n)))f.loading=5;else{l=Z({rel:"stylesheet",href:l,"data-precedence":t},u),(u=Zl.get(n))&&si(l,u);var i=c=a.createElement("link");al(i),il(i,"link",l),i._p=new Promise(function(s,o){i.onload=s,i.onerror=o}),i.addEventListener("load",function(){f.loading|=1}),i.addEventListener("error",function(){f.loading|=2}),f.loading|=4,Ke(c,t,a)}c={type:"stylesheet",instance:c,count:1,state:f},e.set(n,c)}}}function Nh(l,t){bt.X(l,t);var u=aa;if(u&&l){var a=Gu(u).hoistableScripts,e=ea(l),n=a.get(e);n||(n=u.querySelector(ve(e)),n||(l=Z({src:l,async:!0},t),(t=Zl.get(e))&&vi(l,t),n=u.createElement("script"),al(n),il(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function ph(l,t){bt.M(l,t);var u=aa;if(u&&l){var a=Gu(u).hoistableScripts,e=ea(l),n=a.get(e);n||(n=u.querySelector(ve(e)),n||(l=Z({src:l,async:!0,type:"module"},t),(t=Zl.get(e))&&vi(l,t),n=u.createElement("script"),al(n),il(n,"link",l),u.head.appendChild(n)),n={type:"script",instance:n,count:1,state:null},a.set(e,n))}}function u1(l,t,u,a){var e=(e=qt.current)?bn(e):null;if(!e)throw Error(S(446));switch(l){case"meta":case"title":return null;case"style":return typeof u.precedence=="string"&&typeof u.href=="string"?(t=Pu(u.href),u=Gu(e).hoistableStyles,a=u.get(t),a||(a={type:"style",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};case"link":if(u.rel==="stylesheet"&&typeof u.href=="string"&&typeof u.precedence=="string"){l=Pu(u.href);var n=Gu(e).hoistableStyles,c=n.get(l);if(c||(e=e.ownerDocument||e,c={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},n.set(l,c),(n=e.querySelector(se(l)))&&!n._p&&(c.instance=n,c.state.loading=5),Zl.has(l)||(u={rel:"preload",as:"style",href:u.href,crossOrigin:u.crossOrigin,integrity:u.integrity,media:u.media,hrefLang:u.hrefLang,referrerPolicy:u.referrerPolicy},Zl.set(l,u),n||qh(e,l,u,c.state))),t&&a===null)throw Error(S(528,""));return c}if(t&&a!==null)throw Error(S(529,""));return null;case"script":return t=u.async,u=u.src,typeof u=="string"&&t&&typeof t!="function"&&typeof t!="symbol"?(t=ea(u),u=Gu(e).hoistableScripts,a=u.get(t),a||(a={type:"script",instance:null,count:0,state:null},u.set(t,a)),a):{type:"void",instance:null,count:0,state:null};default:throw Error(S(444,l))}}function Pu(l){return'href="'+Bl(l)+'"'}function se(l){return'link[rel="stylesheet"]['+l+"]"}function qv(l){return Z({},l,{"data-precedence":l.precedence,precedence:null})}function qh(l,t,u,a){l.querySelector('link[rel="preload"][as="style"]['+t+"]")?a.loading=1:(t=l.createElement("link"),a.preload=t,t.addEventListener("load",function(){return a.loading|=1}),t.addEventListener("error",function(){return a.loading|=2}),il(t,"link",u),al(t),l.head.appendChild(t))}function ea(l){return'[src="'+Bl(l)+'"]'}function ve(l){return"script[async]"+l}function a1(l,t,u){if(t.count++,t.instance===null)switch(t.type){case"style":var a=l.querySelector('style[data-href~="'+Bl(u.href)+'"]');if(a)return t.instance=a,al(a),a;var e=Z({},u,{"data-href":u.href,"data-precedence":u.precedence,href:null,precedence:null});return a=(l.ownerDocument||l).createElement("style"),al(a),il(a,"style",e),Ke(a,u.precedence,l),t.instance=a;case"stylesheet":e=Pu(u.href);var n=l.querySelector(se(e));if(n)return t.state.loading|=4,t.instance=n,al(n),n;a=qv(u),(e=Zl.get(e))&&si(a,e),n=(l.ownerDocument||l).createElement("link"),al(n);var c=n;return c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),il(n,"link",a),t.state.loading|=4,Ke(n,u.precedence,l),t.instance=n;case"script":return n=ea(u.src),(e=l.querySelector(ve(n)))?(t.instance=e,al(e),e):(a=u,(e=Zl.get(n))&&(a=Z({},u),vi(a,e)),l=l.ownerDocument||l,e=l.createElement("script"),al(e),il(e,"link",a),l.head.appendChild(e),t.instance=e);case"void":return null;default:throw Error(S(443,t.type))}else t.type==="stylesheet"&&!(t.state.loading&4)&&(a=t.instance,t.state.loading|=4,Ke(a,u.precedence,l));return t.instance}function Ke(l,t,u){for(var a=u.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),e=a.length?a[a.length-1]:null,n=e,c=0;c<a.length;c++){var f=a[c];if(f.dataset.precedence===t)n=f;else if(n!==e)break}n?n.parentNode.insertBefore(l,n.nextSibling):(t=u.nodeType===9?u.head:u,t.insertBefore(l,t.firstChild))}function si(l,t){l.crossOrigin==null&&(l.crossOrigin=t.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=t.referrerPolicy),l.title==null&&(l.title=t.title)}function vi(l,t){l.crossOrigin==null&&(l.crossOrigin=t.crossOrigin),l.referrerPolicy==null&&(l.referrerPolicy=t.referrerPolicy),l.integrity==null&&(l.integrity=t.integrity)}var Je=null;function e1(l,t,u){if(Je===null){var a=new Map,e=Je=new Map;e.set(u,a)}else e=Je,a=e.get(u),a||(a=new Map,e.set(u,a));if(a.has(l))return a;for(a.set(l,null),u=u.getElementsByTagName(l),e=0;e<u.length;e++){var n=u[e];if(!(n[Ca]||n[vl]||l==="link"&&n.getAttribute("rel")==="stylesheet")&&n.namespaceURI!=="http://www.w3.org/2000/svg"){var c=n.getAttribute(t)||"";c=l+c;var f=a.get(c);f?f.push(n):a.set(c,[n])}}return a}function n1(l,t,u){l=l.ownerDocument||l,l.head.insertBefore(u,t==="title"?l.querySelector("head > title"):null)}function Yh(l,t,u){if(u===1||t.itemProp!=null)return!1;switch(l){case"meta":case"title":return!0;case"style":if(typeof t.precedence!="string"||typeof t.href!="string"||t.href==="")break;return!0;case"link":if(typeof t.rel!="string"||typeof t.href!="string"||t.href===""||t.onLoad||t.onError)break;switch(t.rel){case"stylesheet":return l=t.disabled,typeof t.precedence=="string"&&l==null;default:return!0}case"script":if(t.async&&typeof t.async!="function"&&typeof t.async!="symbol"&&!t.onLoad&&!t.onError&&t.src&&typeof t.src=="string")return!0}return!1}function Yv(l){return!(l.type==="stylesheet"&&!(l.state.loading&3))}var Wa=null;function Bh(){}function Gh(l,t,u){if(Wa===null)throw Error(S(475));var a=Wa;if(t.type==="stylesheet"&&(typeof u.media!="string"||matchMedia(u.media).matches!==!1)&&!(t.state.loading&4)){if(t.instance===null){var e=Pu(u.href),n=l.querySelector(se(e));if(n){l=n._p,l!==null&&typeof l=="object"&&typeof l.then=="function"&&(a.count++,a=En.bind(a),l.then(a,a)),t.state.loading|=4,t.instance=n,al(n);return}n=l.ownerDocument||l,u=qv(u),(e=Zl.get(e))&&si(u,e),n=n.createElement("link"),al(n);var c=n;c._p=new Promise(function(f,i){c.onload=f,c.onerror=i}),il(n,"link",u),t.instance=n}a.stylesheets===null&&(a.stylesheets=new Map),a.stylesheets.set(t,l),(l=t.state.preload)&&!(t.state.loading&3)&&(a.count++,t=En.bind(a),l.addEventListener("load",t),l.addEventListener("error",t))}}function Xh(){if(Wa===null)throw Error(S(475));var l=Wa;return l.stylesheets&&l.count===0&&rf(l,l.stylesheets),0<l.count?function(t){var u=setTimeout(function(){if(l.stylesheets&&rf(l,l.stylesheets),l.unsuspend){var a=l.unsuspend;l.unsuspend=null,a()}},6e4);return l.unsuspend=t,function(){l.unsuspend=null,clearTimeout(u)}}:null}function En(){if(this.count--,this.count===0){if(this.stylesheets)rf(this,this.stylesheets);else if(this.unsuspend){var l=this.unsuspend;this.unsuspend=null,l()}}}var rn=null;function rf(l,t){l.stylesheets=null,l.unsuspend!==null&&(l.count++,rn=new Map,t.forEach(Qh,l),rn=null,En.call(l))}function Qh(l,t){if(!(t.state.loading&4)){var u=rn.get(l);if(u)var a=u.get(null);else{u=new Map,rn.set(l,u);for(var e=l.querySelectorAll("link[data-precedence],style[data-precedence]"),n=0;n<e.length;n++){var c=e[n];(c.nodeName==="LINK"||c.getAttribute("media")!=="not all")&&(u.set(c.dataset.precedence,c),a=c)}a&&u.set(null,a)}e=t.instance,c=e.getAttribute("data-precedence"),n=u.get(c)||a,n===a&&u.set(null,e),u.set(c,e),this.count++,a=En.bind(this),e.addEventListener("load",a),e.addEventListener("error",a),n?n.parentNode.insertBefore(e,n.nextSibling):(l=l.nodeType===9?l.head:l,l.insertBefore(e,l.firstChild)),t.state.loading|=4}}var $a={$$typeof:it,Provider:null,Consumer:null,_currentValue:lu,_currentValue2:lu,_threadCount:0};function Ch(l,t,u,a,e,n,c,f){this.tag=1,this.containerInfo=l,this.finishedWork=this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=-1,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=uc(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.finishedLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=uc(0),this.hiddenUpdates=uc(null),this.identifierPrefix=a,this.onUncaughtError=e,this.onCaughtError=n,this.onRecoverableError=c,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=f,this.incompleteTransitions=new Map}function Bv(l,t,u,a,e,n,c,f,i,s,o,b){return l=new Ch(l,t,u,c,f,i,s,b),t=1,n===!0&&(t|=24),n=Xl(3,null,null,t),l.current=n,n.stateNode=l,t=Qf(),t.refCount++,l.pooledCache=t,t.refCount++,n.memoizedState={element:a,isDehydrated:u,cache:t},If(n),l}function Gv(l){return l?(l=pu,l):pu}function Xv(l,t,u,a,e,n){e=Gv(e),a.context===null?a.context=e:a.pendingContext=e,a=Yt(t),a.payload={element:u},n=n===void 0?null:n,n!==null&&(a.callback=n),u=Bt(l,a,t),u!==null&&(gl(u,l,t),Na(u,l,t))}function c1(l,t){if(l=l.memoizedState,l!==null&&l.dehydrated!==null){var u=l.retryLane;l.retryLane=u!==0&&u<t?u:t}}function di(l,t){c1(l,t),(l=l.alternate)&&c1(l,t)}function Qv(l){if(l.tag===13){var t=xt(l,67108864);t!==null&&gl(t,l,67108864),di(l,67108864)}}var Tn=!0;function Zh(l,t,u,a){var e=O.T;O.T=null;var n=C.p;try{C.p=2,yi(l,t,u,a)}finally{C.p=n,O.T=e}}function xh(l,t,u,a){var e=O.T;O.T=null;var n=C.p;try{C.p=8,yi(l,t,u,a)}finally{C.p=n,O.T=e}}function yi(l,t,u,a){if(Tn){var e=Tf(a);if(e===null)_c(l,t,a,zn,u),f1(l,a);else if(Vh(e,l,t,u,a))a.stopPropagation();else if(f1(l,a),t&4&&-1<jh.indexOf(l)){for(;e!==null;){var n=ta(e);if(n!==null)switch(n.tag){case 3:if(n=n.stateNode,n.current.memoizedState.isDehydrated){var c=$t(n.pendingLanes);if(c!==0){var f=n;for(f.pendingLanes|=2,f.entangledLanes|=2;c;){var i=1<<31-Ml(c);f.entanglements[1]|=i,c&=~i}lt(n),!(L&6)&&(yn=kl()+500,ie(0,!1))}}break;case 13:f=xt(n,2),f!==null&&gl(f,n,2),qn(),di(n,2)}if(n=Tf(a),n===null&&_c(l,t,a,zn,u),n===e)break;e=n}e!==null&&a.stopPropagation()}else _c(l,t,a,null,u)}}function Tf(l){return l=Uf(l),hi(l)}var zn=null;function hi(l){if(zn=null,l=Pt(l),l!==null){var t=Iu(l);if(t===null)l=null;else{var u=t.tag;if(u===13){if(l=g1(t),l!==null)return l;l=null}else if(u===3){if(t.stateNode.current.memoizedState.isDehydrated)return t.tag===3?t.stateNode.containerInfo:null;l=null}else t!==l&&(l=null)}}return zn=l,null}function Cv(l){switch(l){case"beforetoggle":case"cancel":case"click":case"close":case"contextmenu":case"copy":case"cut":case"auxclick":case"dblclick":case"dragend":case"dragstart":case"drop":case"focusin":case"focusout":case"input":case"invalid":case"keydown":case"keypress":case"keyup":case"mousedown":case"mouseup":case"paste":case"pause":case"play":case"pointercancel":case"pointerdown":case"pointerup":case"ratechange":case"reset":case"resize":case"seeked":case"submit":case"toggle":case"touchcancel":case"touchend":case"touchstart":case"volumechange":case"change":case"selectionchange":case"textInput":case"compositionstart":case"compositionend":case"compositionupdate":case"beforeblur":case"afterblur":case"beforeinput":case"blur":case"fullscreenchange":case"focus":case"hashchange":case"popstate":case"select":case"selectstart":return 2;case"drag":case"dragenter":case"dragexit":case"dragleave":case"dragover":case"mousemove":case"mouseout":case"mouseover":case"pointermove":case"pointerout":case"pointerover":case"scroll":case"touchmove":case"wheel":case"mouseenter":case"mouseleave":case"pointerenter":case"pointerleave":return 8;case"message":switch(Rd()){case b1:return 2;case E1:return 8;case Fe:case Hd:return 32;case r1:return 268435456;default:return 32}default:return 32}}var zf=!1,Qt=null,Ct=null,Zt=null,ka=new Map,Fa=new Map,Ht=[],jh="mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset".split(" ");function f1(l,t){switch(l){case"focusin":case"focusout":Qt=null;break;case"dragenter":case"dragleave":Ct=null;break;case"mouseover":case"mouseout":Zt=null;break;case"pointerover":case"pointerout":ka.delete(t.pointerId);break;case"gotpointercapture":case"lostpointercapture":Fa.delete(t.pointerId)}}function ga(l,t,u,a,e,n){return l===null||l.nativeEvent!==n?(l={blockedOn:t,domEventName:u,eventSystemFlags:a,nativeEvent:n,targetContainers:[e]},t!==null&&(t=ta(t),t!==null&&Qv(t)),l):(l.eventSystemFlags|=a,t=l.targetContainers,e!==null&&t.indexOf(e)===-1&&t.push(e),l)}function Vh(l,t,u,a,e){switch(t){case"focusin":return Qt=ga(Qt,l,t,u,a,e),!0;case"dragenter":return Ct=ga(Ct,l,t,u,a,e),!0;case"mouseover":return Zt=ga(Zt,l,t,u,a,e),!0;case"pointerover":var n=e.pointerId;return ka.set(n,ga(ka.get(n)||null,l,t,u,a,e)),!0;case"gotpointercapture":return n=e.pointerId,Fa.set(n,ga(Fa.get(n)||null,l,t,u,a,e)),!0}return!1}function Zv(l){var t=Pt(l.target);if(t!==null){var u=Iu(t);if(u!==null){if(t=u.tag,t===13){if(t=g1(u),t!==null){l.blockedOn=t,Cd(l.priority,function(){if(u.tag===13){var a=_l(),e=xt(u,a);e!==null&&gl(e,u,a),di(u,a)}});return}}else if(t===3&&u.stateNode.current.memoizedState.isDehydrated){l.blockedOn=u.tag===3?u.stateNode.containerInfo:null;return}}}l.blockedOn=null}function we(l){if(l.blockedOn!==null)return!1;for(var t=l.targetContainers;0<t.length;){var u=Tf(l.nativeEvent);if(u===null){u=l.nativeEvent;var a=new u.constructor(u.type,u);Cc=a,u.target.dispatchEvent(a),Cc=null}else return t=ta(u),t!==null&&Qv(t),l.blockedOn=u,!1;t.shift()}return!0}function i1(l,t,u){we(l)&&u.delete(t)}function Lh(){zf=!1,Qt!==null&&we(Qt)&&(Qt=null),Ct!==null&&we(Ct)&&(Ct=null),Zt!==null&&we(Zt)&&(Zt=null),ka.forEach(i1),Fa.forEach(i1)}function Ye(l,t){l.blockedOn===t&&(l.blockedOn=null,zf||(zf=!0,ll.unstable_scheduleCallback(ll.unstable_NormalPriority,Lh)))}var Be=null;function s1(l){Be!==l&&(Be=l,ll.unstable_scheduleCallback(ll.unstable_NormalPriority,function(){Be===l&&(Be=null);for(var t=0;t<l.length;t+=3){var u=l[t],a=l[t+1],e=l[t+2];if(typeof a!="function"){if(hi(a||u)===null)continue;break}var n=ta(u);n!==null&&(l.splice(t,3),t-=3,$c(n,{pending:!0,data:e,method:u.method,action:a},a,e))}}))}function Pa(l){function t(i){return Ye(i,l)}Qt!==null&&Ye(Qt,l),Ct!==null&&Ye(Ct,l),Zt!==null&&Ye(Zt,l),ka.forEach(t),Fa.forEach(t);for(var u=0;u<Ht.length;u++){var a=Ht[u];a.blockedOn===l&&(a.blockedOn=null)}for(;0<Ht.length&&(u=Ht[0],u.blockedOn===null);)Zv(u),u.blockedOn===null&&Ht.shift();if(u=(l.ownerDocument||l).$$reactFormReplay,u!=null)for(a=0;a<u.length;a+=3){var e=u[a],n=u[a+1],c=e[bl]||null;if(typeof n=="function")c||s1(u);else if(c){var f=null;if(n&&n.hasAttribute("formAction")){if(e=n,c=n[bl]||null)f=c.formAction;else if(hi(e)!==null)continue}else f=c.action;typeof f=="function"?u[a+1]=f:(u.splice(a,3),a-=3),s1(u)}}}function mi(l){this._internalRoot=l}Gn.prototype.render=mi.prototype.render=function(l){var t=this._internalRoot;if(t===null)throw Error(S(409));var u=t.current,a=_l();Xv(u,a,l,t,null,null)};Gn.prototype.unmount=mi.prototype.unmount=function(){var l=this._internalRoot;if(l!==null){this._internalRoot=null;var t=l.containerInfo;l.tag===0&&Vu(),Xv(l.current,2,null,l,null,null),qn(),t[la]=null}};function Gn(l){this._internalRoot=l}Gn.prototype.unstable_scheduleHydration=function(l){if(l){var t=_1();l={blockedOn:null,target:l,priority:t};for(var u=0;u<Ht.length&&t!==0&&t<Ht[u].priority;u++);Ht.splice(u,0,l),u===0&&Zv(l)}};var v1=d1.version;if(v1!=="19.0.0")throw Error(S(527,v1,"19.0.0"));C.findDOMNode=function(l){var t=l._reactInternals;if(t===void 0)throw typeof l.render=="function"?Error(S(188)):(l=Object.keys(l).join(","),Error(S(268,l)));return l=_d(t),l=l!==null?S1(l):null,l=l===null?null:l.stateNode,l};var Kh={bundleType:0,version:"19.0.0",rendererPackageName:"react-dom",currentDispatcherRef:O,findFiberByHostInstance:Pt,reconcilerVersion:"19.0.0"};if(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__<"u"&&(Sa=__REACT_DEVTOOLS_GLOBAL_HOOK__,!Sa.isDisabled&&Sa.supportsFiber))try{Ia=Sa.inject(Kh),Ol=Sa}catch{}var Sa;Xn.createRoot=function(l,t){if(!y1(l))throw Error(S(299));var u=!1,a="",e=Xs,n=Qs,c=Cs,f=null;return t!=null&&(t.unstable_strictMode===!0&&(u=!0),t.identifierPrefix!==void 0&&(a=t.identifierPrefix),t.onUncaughtError!==void 0&&(e=t.onUncaughtError),t.onCaughtError!==void 0&&(n=t.onCaughtError),t.onRecoverableError!==void 0&&(c=t.onRecoverableError),t.unstable_transitionCallbacks!==void 0&&(f=t.unstable_transitionCallbacks)),t=Bv(l,1,!1,null,null,u,a,e,n,c,f,null),l[la]=t.current,ii(l.nodeType===8?l.parentNode:l),new mi(t)};Xn.hydrateRoot=function(l,t,u){if(!y1(l))throw Error(S(299));var a=!1,e="",n=Xs,c=Qs,f=Cs,i=null,s=null;return u!=null&&(u.unstable_strictMode===!0&&(a=!0),u.identifierPrefix!==void 0&&(e=u.identifierPrefix),u.onUncaughtError!==void 0&&(n=u.onUncaughtError),u.onCaughtError!==void 0&&(c=u.onCaughtError),u.onRecoverableError!==void 0&&(f=u.onRecoverableError),u.unstable_transitionCallbacks!==void 0&&(i=u.unstable_transitionCallbacks),u.formState!==void 0&&(s=u.formState)),t=Bv(l,1,!0,t,u??null,a,e,n,c,f,i,s),t.context=Gv(null),u=t.current,a=_l(),e=Yt(a),e.callback=null,Bt(u,e,a),t.current.lanes=a,te(t,a),lt(t),l[la]=t.current,ii(l),new Gn(t)};Xn.version="19.0.0"});var Lv=rt((am,Vv)=>{"use strict";function jv(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u"||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!="function"))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(jv)}catch(l){console.error(l)}}jv(),Vv.exports=xv()});var yl=Qn(na());var rl=Qn(na(),1),Kv=Qn(Lv(),1),Jv=rl.createContext(null);function Jh(){let l=rl.useContext(Jv);if(!l)throw new Error("RenderContext not found");return l}function wh(){return Jh().model}function oi(l){let t=wh(),[u,a]=rl.useState(t.get(l));return rl.useEffect(()=>{let e=()=>a(t.get(l));return t.on(`change:${l}`,e),()=>t.off(`change:${l}`,e)},[t,l]),[u,e=>{t.set(l,e),t.save_changes()}]}function wv(l){return({el:t,model:u,experimental:a})=>{let e=Kv.createRoot(t);return e.render(rl.createElement(rl.StrictMode,null,rl.createElement(Jv.Provider,{value:{model:u,experimental:a}},rl.createElement(l)))),()=>e.unmount()}}var Wh=wv(()=>{let[l]=oi("config"),[t,u]=yl.useState(0),[a,e]=yl.useState("study"),[n,c]=oi("sequence"),f=yl.useRef(null);return yl.useEffect(()=>{t&&f.current?.contentWindow?.postMessage({type:"revisitWidget/CONFIG",payload:JSON.stringify(l)},"http://localhost:8080")},[l,t]),yl.useEffect(()=>{let i=s=>{s.data.type==="revisitWidget/READY"?u(o=>o+1):s.data.type==="revisitWidget/SEQUENCE_ARRAY"&&c(s.data.payload)};return window.addEventListener("message",i),()=>{window.removeEventListener("message",i)}},[l]),yl.createElement("div",{className:"revisit_notebook_widget"},yl.createElement("div",null,yl.createElement("button",{onClick:()=>{e("study")},disabled:a==="study"},"Study"),yl.createElement("button",{onClick:()=>{e("analysis")},disabled:a==="analysis"},"Analysis")),yl.createElement("iframe",{ref:f,src:a==="study"?"http://localhost:8080/revisit-widget":"http://localhost:8080/analysis/stats/revisit-widget",style:{width:"100%",height:"400px"}}))}),sm={render:Wh};export{sm as default};
|
10
10
|
/*! Bundled license information:
|
11
11
|
|
12
12
|
react/cjs/react.production.js:
|
@@ -53,3 +53,4 @@ react-dom/cjs/react-dom-client.production.js:
|
|
53
53
|
* LICENSE file in the root directory of this source tree.
|
54
54
|
*)
|
55
55
|
*/
|
56
|
+
//# sourceMappingURL=data:application/json;base64,ewogICJ2ZXJzaW9uIjogMywKICAic291cmNlcyI6IFsiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0L2Nqcy9yZWFjdC5wcm9kdWN0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC9pbmRleC5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2Nqcy9zY2hlZHVsZXIucHJvZHVjdGlvbi5qcyIsICIuLi8uLi8uLi9ub2RlX21vZHVsZXMvc2NoZWR1bGVyL2luZGV4LmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2pzL3JlYWN0LWRvbS5wcm9kdWN0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vaW5kZXguanMiLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3JlYWN0LWRvbS9janMvcmVhY3QtZG9tLWNsaWVudC5wcm9kdWN0aW9uLmpzIiwgIi4uLy4uLy4uL25vZGVfbW9kdWxlcy9yZWFjdC1kb20vY2xpZW50LmpzIiwgIi4uLy4uLy4uL2pzL3dpZGdldC50c3giLCAiLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0Bhbnl3aWRnZXQvcmVhY3QvaW5kZXguanMiXSwKICAic291cmNlc0NvbnRlbnQiOiBbIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cblwidXNlIHN0cmljdFwiO1xudmFyIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgUkVBQ1RfTUVNT19UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm1lbW9cIiksXG4gIFJFQUNUX0xBWllfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5sYXp5XCIpLFxuICBNQVlCRV9JVEVSQVRPUl9TWU1CT0wgPSBTeW1ib2wuaXRlcmF0b3I7XG5mdW5jdGlvbiBnZXRJdGVyYXRvckZuKG1heWJlSXRlcmFibGUpIHtcbiAgaWYgKG51bGwgPT09IG1heWJlSXRlcmFibGUgfHwgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG1heWJlSXRlcmFibGUpIHJldHVybiBudWxsO1xuICBtYXliZUl0ZXJhYmxlID1cbiAgICAoTUFZQkVfSVRFUkFUT1JfU1lNQk9MICYmIG1heWJlSXRlcmFibGVbTUFZQkVfSVRFUkFUT1JfU1lNQk9MXSkgfHxcbiAgICBtYXliZUl0ZXJhYmxlW1wiQEBpdGVyYXRvclwiXTtcbiAgcmV0dXJuIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIG1heWJlSXRlcmFibGUgPyBtYXliZUl0ZXJhYmxlIDogbnVsbDtcbn1cbnZhciBSZWFjdE5vb3BVcGRhdGVRdWV1ZSA9IHtcbiAgICBpc01vdW50ZWQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAhMTtcbiAgICB9LFxuICAgIGVucXVldWVGb3JjZVVwZGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKCkge30sXG4gICAgZW5xdWV1ZVNldFN0YXRlOiBmdW5jdGlvbiAoKSB7fVxuICB9LFxuICBhc3NpZ24gPSBPYmplY3QuYXNzaWduLFxuICBlbXB0eU9iamVjdCA9IHt9O1xuZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG5Db21wb25lbnQucHJvdG90eXBlLmlzUmVhY3RDb21wb25lbnQgPSB7fTtcbkNvbXBvbmVudC5wcm90b3R5cGUuc2V0U3RhdGUgPSBmdW5jdGlvbiAocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICBpZiAoXG4gICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHBhcnRpYWxTdGF0ZSAmJlxuICAgIG51bGwgIT0gcGFydGlhbFN0YXRlXG4gIClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwidGFrZXMgYW4gb2JqZWN0IG9mIHN0YXRlIHZhcmlhYmxlcyB0byB1cGRhdGUgb3IgYSBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFuIG9iamVjdCBvZiBzdGF0ZSB2YXJpYWJsZXMuXCJcbiAgICApO1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZVNldFN0YXRlKHRoaXMsIHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2ssIFwic2V0U3RhdGVcIik7XG59O1xuQ29tcG9uZW50LnByb3RvdHlwZS5mb3JjZVVwZGF0ZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB0aGlzLnVwZGF0ZXIuZW5xdWV1ZUZvcmNlVXBkYXRlKHRoaXMsIGNhbGxiYWNrLCBcImZvcmNlVXBkYXRlXCIpO1xufTtcbmZ1bmN0aW9uIENvbXBvbmVudER1bW15KCkge31cbkNvbXBvbmVudER1bW15LnByb3RvdHlwZSA9IENvbXBvbmVudC5wcm90b3R5cGU7XG5mdW5jdGlvbiBQdXJlQ29tcG9uZW50KHByb3BzLCBjb250ZXh0LCB1cGRhdGVyKSB7XG4gIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgdGhpcy5jb250ZXh0ID0gY29udGV4dDtcbiAgdGhpcy5yZWZzID0gZW1wdHlPYmplY3Q7XG4gIHRoaXMudXBkYXRlciA9IHVwZGF0ZXIgfHwgUmVhY3ROb29wVXBkYXRlUXVldWU7XG59XG52YXIgcHVyZUNvbXBvbmVudFByb3RvdHlwZSA9IChQdXJlQ29tcG9uZW50LnByb3RvdHlwZSA9IG5ldyBDb21wb25lbnREdW1teSgpKTtcbnB1cmVDb21wb25lbnRQcm90b3R5cGUuY29uc3RydWN0b3IgPSBQdXJlQ29tcG9uZW50O1xuYXNzaWduKHB1cmVDb21wb25lbnRQcm90b3R5cGUsIENvbXBvbmVudC5wcm90b3R5cGUpO1xucHVyZUNvbXBvbmVudFByb3RvdHlwZS5pc1B1cmVSZWFjdENvbXBvbmVudCA9ICEwO1xudmFyIGlzQXJyYXlJbXBsID0gQXJyYXkuaXNBcnJheSxcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPSB7IEg6IG51bGwsIEE6IG51bGwsIFQ6IG51bGwsIFM6IG51bGwgfSxcbiAgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuZnVuY3Rpb24gUmVhY3RFbGVtZW50KHR5cGUsIGtleSwgc2VsZiwgc291cmNlLCBvd25lciwgcHJvcHMpIHtcbiAgc2VsZiA9IHByb3BzLnJlZjtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfRUxFTUVOVF9UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAga2V5OiBrZXksXG4gICAgcmVmOiB2b2lkIDAgIT09IHNlbGYgPyBzZWxmIDogbnVsbCxcbiAgICBwcm9wczogcHJvcHNcbiAgfTtcbn1cbmZ1bmN0aW9uIGNsb25lQW5kUmVwbGFjZUtleShvbGRFbGVtZW50LCBuZXdLZXkpIHtcbiAgcmV0dXJuIFJlYWN0RWxlbWVudChcbiAgICBvbGRFbGVtZW50LnR5cGUsXG4gICAgbmV3S2V5LFxuICAgIHZvaWQgMCxcbiAgICB2b2lkIDAsXG4gICAgdm9pZCAwLFxuICAgIG9sZEVsZW1lbnQucHJvcHNcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gKFxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBvYmplY3QgJiZcbiAgICBudWxsICE9PSBvYmplY3QgJiZcbiAgICBvYmplY3QuJCR0eXBlb2YgPT09IFJFQUNUX0VMRU1FTlRfVFlQRVxuICApO1xufVxuZnVuY3Rpb24gZXNjYXBlKGtleSkge1xuICB2YXIgZXNjYXBlckxvb2t1cCA9IHsgXCI9XCI6IFwiPTBcIiwgXCI6XCI6IFwiPTJcIiB9O1xuICByZXR1cm4gKFxuICAgIFwiJFwiICtcbiAgICBrZXkucmVwbGFjZSgvWz06XS9nLCBmdW5jdGlvbiAobWF0Y2gpIHtcbiAgICAgIHJldHVybiBlc2NhcGVyTG9va3VwW21hdGNoXTtcbiAgICB9KVxuICApO1xufVxudmFyIHVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4ID0gL1xcLysvZztcbmZ1bmN0aW9uIGdldEVsZW1lbnRLZXkoZWxlbWVudCwgaW5kZXgpIHtcbiAgcmV0dXJuIFwib2JqZWN0XCIgPT09IHR5cGVvZiBlbGVtZW50ICYmIG51bGwgIT09IGVsZW1lbnQgJiYgbnVsbCAhPSBlbGVtZW50LmtleVxuICAgID8gZXNjYXBlKFwiXCIgKyBlbGVtZW50LmtleSlcbiAgICA6IGluZGV4LnRvU3RyaW5nKDM2KTtcbn1cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5mdW5jdGlvbiByZXNvbHZlVGhlbmFibGUodGhlbmFibGUpIHtcbiAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICByZXR1cm4gdGhlbmFibGUudmFsdWU7XG4gICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgZGVmYXVsdDpcbiAgICAgIHN3aXRjaCAoXG4gICAgICAgIChcInN0cmluZ1wiID09PSB0eXBlb2YgdGhlbmFibGUuc3RhdHVzXG4gICAgICAgICAgPyB0aGVuYWJsZS50aGVuKG5vb3AkMSwgbm9vcCQxKVxuICAgICAgICAgIDogKCh0aGVuYWJsZS5zdGF0dXMgPSBcInBlbmRpbmdcIiksXG4gICAgICAgICAgICB0aGVuYWJsZS50aGVuKFxuICAgICAgICAgICAgICBmdW5jdGlvbiAoZnVsZmlsbGVkVmFsdWUpIHtcbiAgICAgICAgICAgICAgICBcInBlbmRpbmdcIiA9PT0gdGhlbmFibGUuc3RhdHVzICYmXG4gICAgICAgICAgICAgICAgICAoKHRoZW5hYmxlLnN0YXR1cyA9IFwiZnVsZmlsbGVkXCIpLFxuICAgICAgICAgICAgICAgICAgKHRoZW5hYmxlLnZhbHVlID0gZnVsZmlsbGVkVmFsdWUpKTtcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgZnVuY3Rpb24gKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgXCJwZW5kaW5nXCIgPT09IHRoZW5hYmxlLnN0YXR1cyAmJlxuICAgICAgICAgICAgICAgICAgKCh0aGVuYWJsZS5zdGF0dXMgPSBcInJlamVjdGVkXCIpLCAodGhlbmFibGUucmVhc29uID0gZXJyb3IpKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKSksXG4gICAgICAgIHRoZW5hYmxlLnN0YXR1cylcbiAgICAgICkge1xuICAgICAgICBjYXNlIFwiZnVsZmlsbGVkXCI6XG4gICAgICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgICAgICBjYXNlIFwicmVqZWN0ZWRcIjpcbiAgICAgICAgICB0aHJvdyB0aGVuYWJsZS5yZWFzb247XG4gICAgICB9XG4gIH1cbiAgdGhyb3cgdGhlbmFibGU7XG59XG5mdW5jdGlvbiBtYXBJbnRvQXJyYXkoY2hpbGRyZW4sIGFycmF5LCBlc2NhcGVkUHJlZml4LCBuYW1lU29GYXIsIGNhbGxiYWNrKSB7XG4gIHZhciB0eXBlID0gdHlwZW9mIGNoaWxkcmVuO1xuICBpZiAoXCJ1bmRlZmluZWRcIiA9PT0gdHlwZSB8fCBcImJvb2xlYW5cIiA9PT0gdHlwZSkgY2hpbGRyZW4gPSBudWxsO1xuICB2YXIgaW52b2tlQ2FsbGJhY2sgPSAhMTtcbiAgaWYgKG51bGwgPT09IGNoaWxkcmVuKSBpbnZva2VDYWxsYmFjayA9ICEwO1xuICBlbHNlXG4gICAgc3dpdGNoICh0eXBlKSB7XG4gICAgICBjYXNlIFwiYmlnaW50XCI6XG4gICAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgICBjYXNlIFwibnVtYmVyXCI6XG4gICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSBcIm9iamVjdFwiOlxuICAgICAgICBzd2l0Y2ggKGNoaWxkcmVuLiQkdHlwZW9mKSB7XG4gICAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICAgIGludm9rZUNhbGxiYWNrID0gITA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgIChpbnZva2VDYWxsYmFjayA9IGNoaWxkcmVuLl9pbml0KSxcbiAgICAgICAgICAgICAgbWFwSW50b0FycmF5KFxuICAgICAgICAgICAgICAgIGludm9rZUNhbGxiYWNrKGNoaWxkcmVuLl9wYXlsb2FkKSxcbiAgICAgICAgICAgICAgICBhcnJheSxcbiAgICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4LFxuICAgICAgICAgICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgICAgICAgICBjYWxsYmFja1xuICAgICAgICAgICAgICApXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuICBpZiAoaW52b2tlQ2FsbGJhY2spXG4gICAgcmV0dXJuIChcbiAgICAgIChjYWxsYmFjayA9IGNhbGxiYWNrKGNoaWxkcmVuKSksXG4gICAgICAoaW52b2tlQ2FsbGJhY2sgPVxuICAgICAgICBcIlwiID09PSBuYW1lU29GYXIgPyBcIi5cIiArIGdldEVsZW1lbnRLZXkoY2hpbGRyZW4sIDApIDogbmFtZVNvRmFyKSxcbiAgICAgIGlzQXJyYXlJbXBsKGNhbGxiYWNrKVxuICAgICAgICA/ICgoZXNjYXBlZFByZWZpeCA9IFwiXCIpLFxuICAgICAgICAgIG51bGwgIT0gaW52b2tlQ2FsbGJhY2sgJiZcbiAgICAgICAgICAgIChlc2NhcGVkUHJlZml4ID1cbiAgICAgICAgICAgICAgaW52b2tlQ2FsbGJhY2sucmVwbGFjZSh1c2VyUHJvdmlkZWRLZXlFc2NhcGVSZWdleCwgXCIkJi9cIikgKyBcIi9cIiksXG4gICAgICAgICAgbWFwSW50b0FycmF5KGNhbGxiYWNrLCBhcnJheSwgZXNjYXBlZFByZWZpeCwgXCJcIiwgZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgICAgIHJldHVybiBjO1xuICAgICAgICAgIH0pKVxuICAgICAgICA6IG51bGwgIT0gY2FsbGJhY2sgJiZcbiAgICAgICAgICAoaXNWYWxpZEVsZW1lbnQoY2FsbGJhY2spICYmXG4gICAgICAgICAgICAoY2FsbGJhY2sgPSBjbG9uZUFuZFJlcGxhY2VLZXkoXG4gICAgICAgICAgICAgIGNhbGxiYWNrLFxuICAgICAgICAgICAgICBlc2NhcGVkUHJlZml4ICtcbiAgICAgICAgICAgICAgICAobnVsbCA9PSBjYWxsYmFjay5rZXkgfHxcbiAgICAgICAgICAgICAgICAoY2hpbGRyZW4gJiYgY2hpbGRyZW4ua2V5ID09PSBjYWxsYmFjay5rZXkpXG4gICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgIDogKFwiXCIgKyBjYWxsYmFjay5rZXkpLnJlcGxhY2UoXG4gICAgICAgICAgICAgICAgICAgICAgdXNlclByb3ZpZGVkS2V5RXNjYXBlUmVnZXgsXG4gICAgICAgICAgICAgICAgICAgICAgXCIkJi9cIlxuICAgICAgICAgICAgICAgICAgICApICsgXCIvXCIpICtcbiAgICAgICAgICAgICAgICBpbnZva2VDYWxsYmFja1xuICAgICAgICAgICAgKSksXG4gICAgICAgICAgYXJyYXkucHVzaChjYWxsYmFjaykpLFxuICAgICAgMVxuICAgICk7XG4gIGludm9rZUNhbGxiYWNrID0gMDtcbiAgdmFyIG5leHROYW1lUHJlZml4ID0gXCJcIiA9PT0gbmFtZVNvRmFyID8gXCIuXCIgOiBuYW1lU29GYXIgKyBcIjpcIjtcbiAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSlcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoaWxkcmVuLmxlbmd0aDsgaSsrKVxuICAgICAgKG5hbWVTb0ZhciA9IGNoaWxkcmVuW2ldKSxcbiAgICAgICAgKHR5cGUgPSBuZXh0TmFtZVByZWZpeCArIGdldEVsZW1lbnRLZXkobmFtZVNvRmFyLCBpKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoKChpID0gZ2V0SXRlcmF0b3JGbihjaGlsZHJlbikpLCBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpKSlcbiAgICBmb3IgKFxuICAgICAgY2hpbGRyZW4gPSBpLmNhbGwoY2hpbGRyZW4pLCBpID0gMDtcbiAgICAgICEobmFtZVNvRmFyID0gY2hpbGRyZW4ubmV4dCgpKS5kb25lO1xuXG4gICAgKVxuICAgICAgKG5hbWVTb0ZhciA9IG5hbWVTb0Zhci52YWx1ZSksXG4gICAgICAgICh0eXBlID0gbmV4dE5hbWVQcmVmaXggKyBnZXRFbGVtZW50S2V5KG5hbWVTb0ZhciwgaSsrKSksXG4gICAgICAgIChpbnZva2VDYWxsYmFjayArPSBtYXBJbnRvQXJyYXkoXG4gICAgICAgICAgbmFtZVNvRmFyLFxuICAgICAgICAgIGFycmF5LFxuICAgICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBjYWxsYmFja1xuICAgICAgICApKTtcbiAgZWxzZSBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZSkge1xuICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjaGlsZHJlbi50aGVuKVxuICAgICAgcmV0dXJuIG1hcEludG9BcnJheShcbiAgICAgICAgcmVzb2x2ZVRoZW5hYmxlKGNoaWxkcmVuKSxcbiAgICAgICAgYXJyYXksXG4gICAgICAgIGVzY2FwZWRQcmVmaXgsXG4gICAgICAgIG5hbWVTb0ZhcixcbiAgICAgICAgY2FsbGJhY2tcbiAgICAgICk7XG4gICAgYXJyYXkgPSBTdHJpbmcoY2hpbGRyZW4pO1xuICAgIHRocm93IEVycm9yKFxuICAgICAgXCJPYmplY3RzIGFyZSBub3QgdmFsaWQgYXMgYSBSZWFjdCBjaGlsZCAoZm91bmQ6IFwiICtcbiAgICAgICAgKFwiW29iamVjdCBPYmplY3RdXCIgPT09IGFycmF5XG4gICAgICAgICAgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMoY2hpbGRyZW4pLmpvaW4oXCIsIFwiKSArIFwifVwiXG4gICAgICAgICAgOiBhcnJheSkgK1xuICAgICAgICBcIikuIElmIHlvdSBtZWFudCB0byByZW5kZXIgYSBjb2xsZWN0aW9uIG9mIGNoaWxkcmVuLCB1c2UgYW4gYXJyYXkgaW5zdGVhZC5cIlxuICAgICk7XG4gIH1cbiAgcmV0dXJuIGludm9rZUNhbGxiYWNrO1xufVxuZnVuY3Rpb24gbWFwQ2hpbGRyZW4oY2hpbGRyZW4sIGZ1bmMsIGNvbnRleHQpIHtcbiAgaWYgKG51bGwgPT0gY2hpbGRyZW4pIHJldHVybiBjaGlsZHJlbjtcbiAgdmFyIHJlc3VsdCA9IFtdLFxuICAgIGNvdW50ID0gMDtcbiAgbWFwSW50b0FycmF5KGNoaWxkcmVuLCByZXN1bHQsIFwiXCIsIFwiXCIsIGZ1bmN0aW9uIChjaGlsZCkge1xuICAgIHJldHVybiBmdW5jLmNhbGwoY29udGV4dCwgY2hpbGQsIGNvdW50KyspO1xuICB9KTtcbiAgcmV0dXJuIHJlc3VsdDtcbn1cbmZ1bmN0aW9uIGxhenlJbml0aWFsaXplcihwYXlsb2FkKSB7XG4gIGlmICgtMSA9PT0gcGF5bG9hZC5fc3RhdHVzKSB7XG4gICAgdmFyIGN0b3IgPSBwYXlsb2FkLl9yZXN1bHQ7XG4gICAgY3RvciA9IGN0b3IoKTtcbiAgICBjdG9yLnRoZW4oXG4gICAgICBmdW5jdGlvbiAobW9kdWxlT2JqZWN0KSB7XG4gICAgICAgIGlmICgwID09PSBwYXlsb2FkLl9zdGF0dXMgfHwgLTEgPT09IHBheWxvYWQuX3N0YXR1cylcbiAgICAgICAgICAocGF5bG9hZC5fc3RhdHVzID0gMSksIChwYXlsb2FkLl9yZXN1bHQgPSBtb2R1bGVPYmplY3QpO1xuICAgICAgfSxcbiAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoMCA9PT0gcGF5bG9hZC5fc3RhdHVzIHx8IC0xID09PSBwYXlsb2FkLl9zdGF0dXMpXG4gICAgICAgICAgKHBheWxvYWQuX3N0YXR1cyA9IDIpLCAocGF5bG9hZC5fcmVzdWx0ID0gZXJyb3IpO1xuICAgICAgfVxuICAgICk7XG4gICAgLTEgPT09IHBheWxvYWQuX3N0YXR1cyAmJiAoKHBheWxvYWQuX3N0YXR1cyA9IDApLCAocGF5bG9hZC5fcmVzdWx0ID0gY3RvcikpO1xuICB9XG4gIGlmICgxID09PSBwYXlsb2FkLl9zdGF0dXMpIHJldHVybiBwYXlsb2FkLl9yZXN1bHQuZGVmYXVsdDtcbiAgdGhyb3cgcGF5bG9hZC5fcmVzdWx0O1xufVxudmFyIHJlcG9ydEdsb2JhbEVycm9yID1cbiAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVwb3J0RXJyb3JcbiAgICA/IHJlcG9ydEVycm9yXG4gICAgOiBmdW5jdGlvbiAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB3aW5kb3cgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3aW5kb3cuRXJyb3JFdmVudFxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgZXZlbnQgPSBuZXcgd2luZG93LkVycm9yRXZlbnQoXCJlcnJvclwiLCB7XG4gICAgICAgICAgICBidWJibGVzOiAhMCxcbiAgICAgICAgICAgIGNhbmNlbGFibGU6ICEwLFxuICAgICAgICAgICAgbWVzc2FnZTpcbiAgICAgICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGVycm9yICYmXG4gICAgICAgICAgICAgIG51bGwgIT09IGVycm9yICYmXG4gICAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBlcnJvci5tZXNzYWdlXG4gICAgICAgICAgICAgICAgPyBTdHJpbmcoZXJyb3IubWVzc2FnZSlcbiAgICAgICAgICAgICAgICA6IFN0cmluZyhlcnJvciksXG4gICAgICAgICAgICBlcnJvcjogZXJyb3JcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBpZiAoIXdpbmRvdy5kaXNwYXRjaEV2ZW50KGV2ZW50KSkgcmV0dXJuO1xuICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBwcm9jZXNzICYmXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcHJvY2Vzcy5lbWl0XG4gICAgICAgICkge1xuICAgICAgICAgIHByb2Nlc3MuZW1pdChcInVuY2F1Z2h0RXhjZXB0aW9uXCIsIGVycm9yKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgY29uc29sZS5lcnJvcihlcnJvcik7XG4gICAgICB9O1xuZnVuY3Rpb24gbm9vcCgpIHt9XG5leHBvcnRzLkNoaWxkcmVuID0ge1xuICBtYXA6IG1hcENoaWxkcmVuLFxuICBmb3JFYWNoOiBmdW5jdGlvbiAoY2hpbGRyZW4sIGZvckVhY2hGdW5jLCBmb3JFYWNoQ29udGV4dCkge1xuICAgIG1hcENoaWxkcmVuKFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvckVhY2hGdW5jLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgICB9LFxuICAgICAgZm9yRWFjaENvbnRleHRcbiAgICApO1xuICB9LFxuICBjb3VudDogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgdmFyIG4gPSAwO1xuICAgIG1hcENoaWxkcmVuKGNoaWxkcmVuLCBmdW5jdGlvbiAoKSB7XG4gICAgICBuKys7XG4gICAgfSk7XG4gICAgcmV0dXJuIG47XG4gIH0sXG4gIHRvQXJyYXk6IGZ1bmN0aW9uIChjaGlsZHJlbikge1xuICAgIHJldHVybiAoXG4gICAgICBtYXBDaGlsZHJlbihjaGlsZHJlbiwgZnVuY3Rpb24gKGNoaWxkKSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH0pIHx8IFtdXG4gICAgKTtcbiAgfSxcbiAgb25seTogZnVuY3Rpb24gKGNoaWxkcmVuKSB7XG4gICAgaWYgKCFpc1ZhbGlkRWxlbWVudChjaGlsZHJlbikpXG4gICAgICB0aHJvdyBFcnJvcihcbiAgICAgICAgXCJSZWFjdC5DaGlsZHJlbi5vbmx5IGV4cGVjdGVkIHRvIHJlY2VpdmUgYSBzaW5nbGUgUmVhY3QgZWxlbWVudCBjaGlsZC5cIlxuICAgICAgKTtcbiAgICByZXR1cm4gY2hpbGRyZW47XG4gIH1cbn07XG5leHBvcnRzLkNvbXBvbmVudCA9IENvbXBvbmVudDtcbmV4cG9ydHMuRnJhZ21lbnQgPSBSRUFDVF9GUkFHTUVOVF9UWVBFO1xuZXhwb3J0cy5Qcm9maWxlciA9IFJFQUNUX1BST0ZJTEVSX1RZUEU7XG5leHBvcnRzLlB1cmVDb21wb25lbnQgPSBQdXJlQ29tcG9uZW50O1xuZXhwb3J0cy5TdHJpY3RNb2RlID0gUkVBQ1RfU1RSSUNUX01PREVfVFlQRTtcbmV4cG9ydHMuU3VzcGVuc2UgPSBSRUFDVF9TVVNQRU5TRV9UWVBFO1xuZXhwb3J0cy5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREUgPVxuICBSZWFjdFNoYXJlZEludGVybmFscztcbmV4cG9ydHMuYWN0ID0gZnVuY3Rpb24gKCkge1xuICB0aHJvdyBFcnJvcihcImFjdCguLi4pIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZHVjdGlvbiBidWlsZHMgb2YgUmVhY3QuXCIpO1xufTtcbmV4cG9ydHMuY2FjaGUgPSBmdW5jdGlvbiAoZm4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gZm4uYXBwbHkobnVsbCwgYXJndW1lbnRzKTtcbiAgfTtcbn07XG5leHBvcnRzLmNsb25lRWxlbWVudCA9IGZ1bmN0aW9uIChlbGVtZW50LCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIGlmIChudWxsID09PSBlbGVtZW50IHx8IHZvaWQgMCA9PT0gZWxlbWVudClcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIFwiVGhlIGFyZ3VtZW50IG11c3QgYmUgYSBSZWFjdCBlbGVtZW50LCBidXQgeW91IHBhc3NlZCBcIiArIGVsZW1lbnQgKyBcIi5cIlxuICAgICk7XG4gIHZhciBwcm9wcyA9IGFzc2lnbih7fSwgZWxlbWVudC5wcm9wcyksXG4gICAga2V5ID0gZWxlbWVudC5rZXksXG4gICAgb3duZXIgPSB2b2lkIDA7XG4gIGlmIChudWxsICE9IGNvbmZpZylcbiAgICBmb3IgKHByb3BOYW1lIGluICh2b2lkIDAgIT09IGNvbmZpZy5yZWYgJiYgKG93bmVyID0gdm9pZCAwKSxcbiAgICB2b2lkIDAgIT09IGNvbmZpZy5rZXkgJiYgKGtleSA9IFwiXCIgKyBjb25maWcua2V5KSxcbiAgICBjb25maWcpKVxuICAgICAgIWhhc093blByb3BlcnR5LmNhbGwoY29uZmlnLCBwcm9wTmFtZSkgfHxcbiAgICAgICAgXCJrZXlcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NlbGZcIiA9PT0gcHJvcE5hbWUgfHxcbiAgICAgICAgXCJfX3NvdXJjZVwiID09PSBwcm9wTmFtZSB8fFxuICAgICAgICAoXCJyZWZcIiA9PT0gcHJvcE5hbWUgJiYgdm9pZCAwID09PSBjb25maWcucmVmKSB8fFxuICAgICAgICAocHJvcHNbcHJvcE5hbWVdID0gY29uZmlnW3Byb3BOYW1lXSk7XG4gIHZhciBwcm9wTmFtZSA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuICBpZiAoMSA9PT0gcHJvcE5hbWUpIHByb3BzLmNoaWxkcmVuID0gY2hpbGRyZW47XG4gIGVsc2UgaWYgKDEgPCBwcm9wTmFtZSkge1xuICAgIGZvciAodmFyIGNoaWxkQXJyYXkgPSBBcnJheShwcm9wTmFtZSksIGkgPSAwOyBpIDwgcHJvcE5hbWU7IGkrKylcbiAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgIHByb3BzLmNoaWxkcmVuID0gY2hpbGRBcnJheTtcbiAgfVxuICByZXR1cm4gUmVhY3RFbGVtZW50KGVsZW1lbnQudHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgb3duZXIsIHByb3BzKTtcbn07XG5leHBvcnRzLmNyZWF0ZUNvbnRleHQgPSBmdW5jdGlvbiAoZGVmYXVsdFZhbHVlKSB7XG4gIGRlZmF1bHRWYWx1ZSA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OVEVYVF9UWVBFLFxuICAgIF9jdXJyZW50VmFsdWU6IGRlZmF1bHRWYWx1ZSxcbiAgICBfY3VycmVudFZhbHVlMjogZGVmYXVsdFZhbHVlLFxuICAgIF90aHJlYWRDb3VudDogMCxcbiAgICBQcm92aWRlcjogbnVsbCxcbiAgICBDb25zdW1lcjogbnVsbFxuICB9O1xuICBkZWZhdWx0VmFsdWUuUHJvdmlkZXIgPSBkZWZhdWx0VmFsdWU7XG4gIGRlZmF1bHRWYWx1ZS5Db25zdW1lciA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OU1VNRVJfVFlQRSxcbiAgICBfY29udGV4dDogZGVmYXVsdFZhbHVlXG4gIH07XG4gIHJldHVybiBkZWZhdWx0VmFsdWU7XG59O1xuZXhwb3J0cy5jcmVhdGVFbGVtZW50ID0gZnVuY3Rpb24gKHR5cGUsIGNvbmZpZywgY2hpbGRyZW4pIHtcbiAgdmFyIHByb3BOYW1lLFxuICAgIHByb3BzID0ge30sXG4gICAga2V5ID0gbnVsbDtcbiAgaWYgKG51bGwgIT0gY29uZmlnKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKHZvaWQgMCAhPT0gY29uZmlnLmtleSAmJiAoa2V5ID0gXCJcIiArIGNvbmZpZy5rZXkpLCBjb25maWcpKVxuICAgICAgaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIHByb3BOYW1lKSAmJlxuICAgICAgICBcImtleVwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc2VsZlwiICE9PSBwcm9wTmFtZSAmJlxuICAgICAgICBcIl9fc291cmNlXCIgIT09IHByb3BOYW1lICYmXG4gICAgICAgIChwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdKTtcbiAgdmFyIGNoaWxkcmVuTGVuZ3RoID0gYXJndW1lbnRzLmxlbmd0aCAtIDI7XG4gIGlmICgxID09PSBjaGlsZHJlbkxlbmd0aCkgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZHJlbjtcbiAgZWxzZSBpZiAoMSA8IGNoaWxkcmVuTGVuZ3RoKSB7XG4gICAgZm9yICh2YXIgY2hpbGRBcnJheSA9IEFycmF5KGNoaWxkcmVuTGVuZ3RoKSwgaSA9IDA7IGkgPCBjaGlsZHJlbkxlbmd0aDsgaSsrKVxuICAgICAgY2hpbGRBcnJheVtpXSA9IGFyZ3VtZW50c1tpICsgMl07XG4gICAgcHJvcHMuY2hpbGRyZW4gPSBjaGlsZEFycmF5O1xuICB9XG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKVxuICAgIGZvciAocHJvcE5hbWUgaW4gKChjaGlsZHJlbkxlbmd0aCA9IHR5cGUuZGVmYXVsdFByb3BzKSwgY2hpbGRyZW5MZW5ndGgpKVxuICAgICAgdm9pZCAwID09PSBwcm9wc1twcm9wTmFtZV0gJiZcbiAgICAgICAgKHByb3BzW3Byb3BOYW1lXSA9IGNoaWxkcmVuTGVuZ3RoW3Byb3BOYW1lXSk7XG4gIHJldHVybiBSZWFjdEVsZW1lbnQodHlwZSwga2V5LCB2b2lkIDAsIHZvaWQgMCwgbnVsbCwgcHJvcHMpO1xufTtcbmV4cG9ydHMuY3JlYXRlUmVmID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4geyBjdXJyZW50OiBudWxsIH07XG59O1xuZXhwb3J0cy5mb3J3YXJkUmVmID0gZnVuY3Rpb24gKHJlbmRlcikge1xuICByZXR1cm4geyAkJHR5cGVvZjogUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSwgcmVuZGVyOiByZW5kZXIgfTtcbn07XG5leHBvcnRzLmlzVmFsaWRFbGVtZW50ID0gaXNWYWxpZEVsZW1lbnQ7XG5leHBvcnRzLmxhenkgPSBmdW5jdGlvbiAoY3Rvcikge1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9MQVpZX1RZUEUsXG4gICAgX3BheWxvYWQ6IHsgX3N0YXR1czogLTEsIF9yZXN1bHQ6IGN0b3IgfSxcbiAgICBfaW5pdDogbGF6eUluaXRpYWxpemVyXG4gIH07XG59O1xuZXhwb3J0cy5tZW1vID0gZnVuY3Rpb24gKHR5cGUsIGNvbXBhcmUpIHtcbiAgcmV0dXJuIHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfTUVNT19UWVBFLFxuICAgIHR5cGU6IHR5cGUsXG4gICAgY29tcGFyZTogdm9pZCAwID09PSBjb21wYXJlID8gbnVsbCA6IGNvbXBhcmVcbiAgfTtcbn07XG5leHBvcnRzLnN0YXJ0VHJhbnNpdGlvbiA9IGZ1bmN0aW9uIChzY29wZSkge1xuICB2YXIgcHJldlRyYW5zaXRpb24gPSBSZWFjdFNoYXJlZEludGVybmFscy5ULFxuICAgIGN1cnJlbnRUcmFuc2l0aW9uID0ge307XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBjdXJyZW50VHJhbnNpdGlvbjtcbiAgdHJ5IHtcbiAgICB2YXIgcmV0dXJuVmFsdWUgPSBzY29wZSgpLFxuICAgICAgb25TdGFydFRyYW5zaXRpb25GaW5pc2ggPSBSZWFjdFNoYXJlZEludGVybmFscy5TO1xuICAgIG51bGwgIT09IG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoICYmXG4gICAgICBvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaChjdXJyZW50VHJhbnNpdGlvbiwgcmV0dXJuVmFsdWUpO1xuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiByZXR1cm5WYWx1ZSAmJlxuICAgICAgbnVsbCAhPT0gcmV0dXJuVmFsdWUgJiZcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlLnRoZW4gJiZcbiAgICAgIHJldHVyblZhbHVlLnRoZW4obm9vcCwgcmVwb3J0R2xvYmFsRXJyb3IpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIHJlcG9ydEdsb2JhbEVycm9yKGVycm9yKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBSZWFjdFNoYXJlZEludGVybmFscy5UID0gcHJldlRyYW5zaXRpb247XG4gIH1cbn07XG5leHBvcnRzLnVuc3RhYmxlX3VzZUNhY2hlUmVmcmVzaCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlQ2FjaGVSZWZyZXNoKCk7XG59O1xuZXhwb3J0cy51c2UgPSBmdW5jdGlvbiAodXNhYmxlKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZSh1c2FibGUpO1xufTtcbmV4cG9ydHMudXNlQWN0aW9uU3RhdGUgPSBmdW5jdGlvbiAoYWN0aW9uLCBpbml0aWFsU3RhdGUsIHBlcm1hbGluaykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VBY3Rpb25TdGF0ZShhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKTtcbn07XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUNhbGxiYWNrKGNhbGxiYWNrLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZUNvbnRleHQgPSBmdW5jdGlvbiAoQ29udGV4dCkge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VDb250ZXh0KENvbnRleHQpO1xufTtcbmV4cG9ydHMudXNlRGVidWdWYWx1ZSA9IGZ1bmN0aW9uICgpIHt9O1xuZXhwb3J0cy51c2VEZWZlcnJlZFZhbHVlID0gZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRGVmZXJyZWRWYWx1ZSh2YWx1ZSwgaW5pdGlhbFZhbHVlKTtcbn07XG5leHBvcnRzLnVzZUVmZmVjdCA9IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlRWZmZWN0KGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJZCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSWQoKTtcbn07XG5leHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGUgPSBmdW5jdGlvbiAocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZSwgZGVwcyk7XG59O1xuZXhwb3J0cy51c2VJbnNlcnRpb25FZmZlY3QgPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUluc2VydGlvbkVmZmVjdChjcmVhdGUsIGRlcHMpO1xufTtcbmV4cG9ydHMudXNlTGF5b3V0RWZmZWN0ID0gZnVuY3Rpb24gKGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSC51c2VMYXlvdXRFZmZlY3QoY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU1lbW8gPSBmdW5jdGlvbiAoY3JlYXRlLCBkZXBzKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZU1lbW8oY3JlYXRlLCBkZXBzKTtcbn07XG5leHBvcnRzLnVzZU9wdGltaXN0aWMgPSBmdW5jdGlvbiAocGFzc3Rocm91Z2gsIHJlZHVjZXIpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlT3B0aW1pc3RpYyhwYXNzdGhyb3VnaCwgcmVkdWNlcik7XG59O1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gZnVuY3Rpb24gKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVkdWNlcihyZWR1Y2VyLCBpbml0aWFsQXJnLCBpbml0KTtcbn07XG5leHBvcnRzLnVzZVJlZiA9IGZ1bmN0aW9uIChpbml0aWFsVmFsdWUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlUmVmKGluaXRpYWxWYWx1ZSk7XG59O1xuZXhwb3J0cy51c2VTdGF0ZSA9IGZ1bmN0aW9uIChpbml0aWFsU3RhdGUpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlU3RhdGUoaW5pdGlhbFN0YXRlKTtcbn07XG5leHBvcnRzLnVzZVN5bmNFeHRlcm5hbFN0b3JlID0gZnVuY3Rpb24gKFxuICBzdWJzY3JpYmUsXG4gIGdldFNuYXBzaG90LFxuICBnZXRTZXJ2ZXJTbmFwc2hvdFxuKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZVN5bmNFeHRlcm5hbFN0b3JlKFxuICAgIHN1YnNjcmliZSxcbiAgICBnZXRTbmFwc2hvdCxcbiAgICBnZXRTZXJ2ZXJTbmFwc2hvdFxuICApO1xufTtcbmV4cG9ydHMudXNlVHJhbnNpdGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkgudXNlVHJhbnNpdGlvbigpO1xufTtcbmV4cG9ydHMudmVyc2lvbiA9IFwiMTkuMC4wXCI7XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3JlYWN0LnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QuZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsICIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiBzY2hlZHVsZXIucHJvZHVjdGlvbi5qc1xuICpcbiAqIENvcHlyaWdodCAoYykgTWV0YSBQbGF0Zm9ybXMsIEluYy4gYW5kIGFmZmlsaWF0ZXMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxuXCJ1c2Ugc3RyaWN0XCI7XG5mdW5jdGlvbiBwdXNoKGhlYXAsIG5vZGUpIHtcbiAgdmFyIGluZGV4ID0gaGVhcC5sZW5ndGg7XG4gIGhlYXAucHVzaChub2RlKTtcbiAgYTogZm9yICg7IDAgPCBpbmRleDsgKSB7XG4gICAgdmFyIHBhcmVudEluZGV4ID0gKGluZGV4IC0gMSkgPj4+IDEsXG4gICAgICBwYXJlbnQgPSBoZWFwW3BhcmVudEluZGV4XTtcbiAgICBpZiAoMCA8IGNvbXBhcmUocGFyZW50LCBub2RlKSlcbiAgICAgIChoZWFwW3BhcmVudEluZGV4XSA9IG5vZGUpLCAoaGVhcFtpbmRleF0gPSBwYXJlbnQpLCAoaW5kZXggPSBwYXJlbnRJbmRleCk7XG4gICAgZWxzZSBicmVhayBhO1xuICB9XG59XG5mdW5jdGlvbiBwZWVrKGhlYXApIHtcbiAgcmV0dXJuIDAgPT09IGhlYXAubGVuZ3RoID8gbnVsbCA6IGhlYXBbMF07XG59XG5mdW5jdGlvbiBwb3AoaGVhcCkge1xuICBpZiAoMCA9PT0gaGVhcC5sZW5ndGgpIHJldHVybiBudWxsO1xuICB2YXIgZmlyc3QgPSBoZWFwWzBdLFxuICAgIGxhc3QgPSBoZWFwLnBvcCgpO1xuICBpZiAobGFzdCAhPT0gZmlyc3QpIHtcbiAgICBoZWFwWzBdID0gbGFzdDtcbiAgICBhOiBmb3IgKFxuICAgICAgdmFyIGluZGV4ID0gMCwgbGVuZ3RoID0gaGVhcC5sZW5ndGgsIGhhbGZMZW5ndGggPSBsZW5ndGggPj4+IDE7XG4gICAgICBpbmRleCA8IGhhbGZMZW5ndGg7XG5cbiAgICApIHtcbiAgICAgIHZhciBsZWZ0SW5kZXggPSAyICogKGluZGV4ICsgMSkgLSAxLFxuICAgICAgICBsZWZ0ID0gaGVhcFtsZWZ0SW5kZXhdLFxuICAgICAgICByaWdodEluZGV4ID0gbGVmdEluZGV4ICsgMSxcbiAgICAgICAgcmlnaHQgPSBoZWFwW3JpZ2h0SW5kZXhdO1xuICAgICAgaWYgKDAgPiBjb21wYXJlKGxlZnQsIGxhc3QpKVxuICAgICAgICByaWdodEluZGV4IDwgbGVuZ3RoICYmIDAgPiBjb21wYXJlKHJpZ2h0LCBsZWZ0KVxuICAgICAgICAgID8gKChoZWFwW2luZGV4XSA9IHJpZ2h0KSxcbiAgICAgICAgICAgIChoZWFwW3JpZ2h0SW5kZXhdID0gbGFzdCksXG4gICAgICAgICAgICAoaW5kZXggPSByaWdodEluZGV4KSlcbiAgICAgICAgICA6ICgoaGVhcFtpbmRleF0gPSBsZWZ0KSxcbiAgICAgICAgICAgIChoZWFwW2xlZnRJbmRleF0gPSBsYXN0KSxcbiAgICAgICAgICAgIChpbmRleCA9IGxlZnRJbmRleCkpO1xuICAgICAgZWxzZSBpZiAocmlnaHRJbmRleCA8IGxlbmd0aCAmJiAwID4gY29tcGFyZShyaWdodCwgbGFzdCkpXG4gICAgICAgIChoZWFwW2luZGV4XSA9IHJpZ2h0KSwgKGhlYXBbcmlnaHRJbmRleF0gPSBsYXN0KSwgKGluZGV4ID0gcmlnaHRJbmRleCk7XG4gICAgICBlbHNlIGJyZWFrIGE7XG4gICAgfVxuICB9XG4gIHJldHVybiBmaXJzdDtcbn1cbmZ1bmN0aW9uIGNvbXBhcmUoYSwgYikge1xuICB2YXIgZGlmZiA9IGEuc29ydEluZGV4IC0gYi5zb3J0SW5kZXg7XG4gIHJldHVybiAwICE9PSBkaWZmID8gZGlmZiA6IGEuaWQgLSBiLmlkO1xufVxuZXhwb3J0cy51bnN0YWJsZV9ub3cgPSB2b2lkIDA7XG5pZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHBlcmZvcm1hbmNlICYmIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHBlcmZvcm1hbmNlLm5vdykge1xuICB2YXIgbG9jYWxQZXJmb3JtYW5jZSA9IHBlcmZvcm1hbmNlO1xuICBleHBvcnRzLnVuc3RhYmxlX25vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbG9jYWxQZXJmb3JtYW5jZS5ub3coKTtcbiAgfTtcbn0gZWxzZSB7XG4gIHZhciBsb2NhbERhdGUgPSBEYXRlLFxuICAgIGluaXRpYWxUaW1lID0gbG9jYWxEYXRlLm5vdygpO1xuICBleHBvcnRzLnVuc3RhYmxlX25vdyA9IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gbG9jYWxEYXRlLm5vdygpIC0gaW5pdGlhbFRpbWU7XG4gIH07XG59XG52YXIgdGFza1F1ZXVlID0gW10sXG4gIHRpbWVyUXVldWUgPSBbXSxcbiAgdGFza0lkQ291bnRlciA9IDEsXG4gIGN1cnJlbnRUYXNrID0gbnVsbCxcbiAgY3VycmVudFByaW9yaXR5TGV2ZWwgPSAzLFxuICBpc1BlcmZvcm1pbmdXb3JrID0gITEsXG4gIGlzSG9zdENhbGxiYWNrU2NoZWR1bGVkID0gITEsXG4gIGlzSG9zdFRpbWVvdXRTY2hlZHVsZWQgPSAhMSxcbiAgbG9jYWxTZXRUaW1lb3V0ID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2Ygc2V0VGltZW91dCA/IHNldFRpbWVvdXQgOiBudWxsLFxuICBsb2NhbENsZWFyVGltZW91dCA9IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNsZWFyVGltZW91dCA/IGNsZWFyVGltZW91dCA6IG51bGwsXG4gIGxvY2FsU2V0SW1tZWRpYXRlID0gXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIHNldEltbWVkaWF0ZSA/IHNldEltbWVkaWF0ZSA6IG51bGw7XG5mdW5jdGlvbiBhZHZhbmNlVGltZXJzKGN1cnJlbnRUaW1lKSB7XG4gIGZvciAodmFyIHRpbWVyID0gcGVlayh0aW1lclF1ZXVlKTsgbnVsbCAhPT0gdGltZXI7ICkge1xuICAgIGlmIChudWxsID09PSB0aW1lci5jYWxsYmFjaykgcG9wKHRpbWVyUXVldWUpO1xuICAgIGVsc2UgaWYgKHRpbWVyLnN0YXJ0VGltZSA8PSBjdXJyZW50VGltZSlcbiAgICAgIHBvcCh0aW1lclF1ZXVlKSxcbiAgICAgICAgKHRpbWVyLnNvcnRJbmRleCA9IHRpbWVyLmV4cGlyYXRpb25UaW1lKSxcbiAgICAgICAgcHVzaCh0YXNrUXVldWUsIHRpbWVyKTtcbiAgICBlbHNlIGJyZWFrO1xuICAgIHRpbWVyID0gcGVlayh0aW1lclF1ZXVlKTtcbiAgfVxufVxuZnVuY3Rpb24gaGFuZGxlVGltZW91dChjdXJyZW50VGltZSkge1xuICBpc0hvc3RUaW1lb3V0U2NoZWR1bGVkID0gITE7XG4gIGFkdmFuY2VUaW1lcnMoY3VycmVudFRpbWUpO1xuICBpZiAoIWlzSG9zdENhbGxiYWNrU2NoZWR1bGVkKVxuICAgIGlmIChudWxsICE9PSBwZWVrKHRhc2tRdWV1ZSkpXG4gICAgICAoaXNIb3N0Q2FsbGJhY2tTY2hlZHVsZWQgPSAhMCksIHJlcXVlc3RIb3N0Q2FsbGJhY2soKTtcbiAgICBlbHNlIHtcbiAgICAgIHZhciBmaXJzdFRpbWVyID0gcGVlayh0aW1lclF1ZXVlKTtcbiAgICAgIG51bGwgIT09IGZpcnN0VGltZXIgJiZcbiAgICAgICAgcmVxdWVzdEhvc3RUaW1lb3V0KGhhbmRsZVRpbWVvdXQsIGZpcnN0VGltZXIuc3RhcnRUaW1lIC0gY3VycmVudFRpbWUpO1xuICAgIH1cbn1cbnZhciBpc01lc3NhZ2VMb29wUnVubmluZyA9ICExLFxuICB0YXNrVGltZW91dElEID0gLTEsXG4gIGZyYW1lSW50ZXJ2YWwgPSA1LFxuICBzdGFydFRpbWUgPSAtMTtcbmZ1bmN0aW9uIHNob3VsZFlpZWxkVG9Ib3N0KCkge1xuICByZXR1cm4gZXhwb3J0cy51bnN0YWJsZV9ub3coKSAtIHN0YXJ0VGltZSA8IGZyYW1lSW50ZXJ2YWwgPyAhMSA6ICEwO1xufVxuZnVuY3Rpb24gcGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lKCkge1xuICBpZiAoaXNNZXNzYWdlTG9vcFJ1bm5pbmcpIHtcbiAgICB2YXIgY3VycmVudFRpbWUgPSBleHBvcnRzLnVuc3RhYmxlX25vdygpO1xuICAgIHN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lO1xuICAgIHZhciBoYXNNb3JlV29yayA9ICEwO1xuICAgIHRyeSB7XG4gICAgICBhOiB7XG4gICAgICAgIGlzSG9zdENhbGxiYWNrU2NoZWR1bGVkID0gITE7XG4gICAgICAgIGlzSG9zdFRpbWVvdXRTY2hlZHVsZWQgJiZcbiAgICAgICAgICAoKGlzSG9zdFRpbWVvdXRTY2hlZHVsZWQgPSAhMSksXG4gICAgICAgICAgbG9jYWxDbGVhclRpbWVvdXQodGFza1RpbWVvdXRJRCksXG4gICAgICAgICAgKHRhc2tUaW1lb3V0SUQgPSAtMSkpO1xuICAgICAgICBpc1BlcmZvcm1pbmdXb3JrID0gITA7XG4gICAgICAgIHZhciBwcmV2aW91c1ByaW9yaXR5TGV2ZWwgPSBjdXJyZW50UHJpb3JpdHlMZXZlbDtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBiOiB7XG4gICAgICAgICAgICBhZHZhbmNlVGltZXJzKGN1cnJlbnRUaW1lKTtcbiAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgIGN1cnJlbnRUYXNrID0gcGVlayh0YXNrUXVldWUpO1xuICAgICAgICAgICAgICBudWxsICE9PSBjdXJyZW50VGFzayAmJlxuICAgICAgICAgICAgICAhKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrLmV4cGlyYXRpb25UaW1lID4gY3VycmVudFRpbWUgJiYgc2hvdWxkWWllbGRUb0hvc3QoKVxuICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgdmFyIGNhbGxiYWNrID0gY3VycmVudFRhc2suY2FsbGJhY2s7XG4gICAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjYWxsYmFjaykge1xuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrLmNhbGxiYWNrID0gbnVsbDtcbiAgICAgICAgICAgICAgICBjdXJyZW50UHJpb3JpdHlMZXZlbCA9IGN1cnJlbnRUYXNrLnByaW9yaXR5TGV2ZWw7XG4gICAgICAgICAgICAgICAgdmFyIGNvbnRpbnVhdGlvbkNhbGxiYWNrID0gY2FsbGJhY2soXG4gICAgICAgICAgICAgICAgICBjdXJyZW50VGFzay5leHBpcmF0aW9uVGltZSA8PSBjdXJyZW50VGltZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgY3VycmVudFRpbWUgPSBleHBvcnRzLnVuc3RhYmxlX25vdygpO1xuICAgICAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250aW51YXRpb25DYWxsYmFjaykge1xuICAgICAgICAgICAgICAgICAgY3VycmVudFRhc2suY2FsbGJhY2sgPSBjb250aW51YXRpb25DYWxsYmFjaztcbiAgICAgICAgICAgICAgICAgIGFkdmFuY2VUaW1lcnMoY3VycmVudFRpbWUpO1xuICAgICAgICAgICAgICAgICAgaGFzTW9yZVdvcmsgPSAhMDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXNrID09PSBwZWVrKHRhc2tRdWV1ZSkgJiYgcG9wKHRhc2tRdWV1ZSk7XG4gICAgICAgICAgICAgICAgYWR2YW5jZVRpbWVycyhjdXJyZW50VGltZSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBwb3AodGFza1F1ZXVlKTtcbiAgICAgICAgICAgICAgY3VycmVudFRhc2sgPSBwZWVrKHRhc2tRdWV1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAobnVsbCAhPT0gY3VycmVudFRhc2spIGhhc01vcmVXb3JrID0gITA7XG4gICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgdmFyIGZpcnN0VGltZXIgPSBwZWVrKHRpbWVyUXVldWUpO1xuICAgICAgICAgICAgICBudWxsICE9PSBmaXJzdFRpbWVyICYmXG4gICAgICAgICAgICAgICAgcmVxdWVzdEhvc3RUaW1lb3V0KFxuICAgICAgICAgICAgICAgICAgaGFuZGxlVGltZW91dCxcbiAgICAgICAgICAgICAgICAgIGZpcnN0VGltZXIuc3RhcnRUaW1lIC0gY3VycmVudFRpbWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICBoYXNNb3JlV29yayA9ICExO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhayBhO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgIChjdXJyZW50VGFzayA9IG51bGwpLFxuICAgICAgICAgICAgKGN1cnJlbnRQcmlvcml0eUxldmVsID0gcHJldmlvdXNQcmlvcml0eUxldmVsKSxcbiAgICAgICAgICAgIChpc1BlcmZvcm1pbmdXb3JrID0gITEpO1xuICAgICAgICB9XG4gICAgICAgIGhhc01vcmVXb3JrID0gdm9pZCAwO1xuICAgICAgfVxuICAgIH0gZmluYWxseSB7XG4gICAgICBoYXNNb3JlV29ya1xuICAgICAgICA/IHNjaGVkdWxlUGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lKClcbiAgICAgICAgOiAoaXNNZXNzYWdlTG9vcFJ1bm5pbmcgPSAhMSk7XG4gICAgfVxuICB9XG59XG52YXIgc2NoZWR1bGVQZXJmb3JtV29ya1VudGlsRGVhZGxpbmU7XG5pZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbG9jYWxTZXRJbW1lZGlhdGUpXG4gIHNjaGVkdWxlUGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lID0gZnVuY3Rpb24gKCkge1xuICAgIGxvY2FsU2V0SW1tZWRpYXRlKHBlcmZvcm1Xb3JrVW50aWxEZWFkbGluZSk7XG4gIH07XG5lbHNlIGlmIChcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgTWVzc2FnZUNoYW5uZWwpIHtcbiAgdmFyIGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKSxcbiAgICBwb3J0ID0gY2hhbm5lbC5wb3J0MjtcbiAgY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSBwZXJmb3JtV29ya1VudGlsRGVhZGxpbmU7XG4gIHNjaGVkdWxlUGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lID0gZnVuY3Rpb24gKCkge1xuICAgIHBvcnQucG9zdE1lc3NhZ2UobnVsbCk7XG4gIH07XG59IGVsc2VcbiAgc2NoZWR1bGVQZXJmb3JtV29ya1VudGlsRGVhZGxpbmUgPSBmdW5jdGlvbiAoKSB7XG4gICAgbG9jYWxTZXRUaW1lb3V0KHBlcmZvcm1Xb3JrVW50aWxEZWFkbGluZSwgMCk7XG4gIH07XG5mdW5jdGlvbiByZXF1ZXN0SG9zdENhbGxiYWNrKCkge1xuICBpc01lc3NhZ2VMb29wUnVubmluZyB8fFxuICAgICgoaXNNZXNzYWdlTG9vcFJ1bm5pbmcgPSAhMCksIHNjaGVkdWxlUGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lKCkpO1xufVxuZnVuY3Rpb24gcmVxdWVzdEhvc3RUaW1lb3V0KGNhbGxiYWNrLCBtcykge1xuICB0YXNrVGltZW91dElEID0gbG9jYWxTZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICBjYWxsYmFjayhleHBvcnRzLnVuc3RhYmxlX25vdygpKTtcbiAgfSwgbXMpO1xufVxuZXhwb3J0cy51bnN0YWJsZV9JZGxlUHJpb3JpdHkgPSA1O1xuZXhwb3J0cy51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSA9IDE7XG5leHBvcnRzLnVuc3RhYmxlX0xvd1ByaW9yaXR5ID0gNDtcbmV4cG9ydHMudW5zdGFibGVfTm9ybWFsUHJpb3JpdHkgPSAzO1xuZXhwb3J0cy51bnN0YWJsZV9Qcm9maWxpbmcgPSBudWxsO1xuZXhwb3J0cy51bnN0YWJsZV9Vc2VyQmxvY2tpbmdQcmlvcml0eSA9IDI7XG5leHBvcnRzLnVuc3RhYmxlX2NhbmNlbENhbGxiYWNrID0gZnVuY3Rpb24gKHRhc2spIHtcbiAgdGFzay5jYWxsYmFjayA9IG51bGw7XG59O1xuZXhwb3J0cy51bnN0YWJsZV9jb250aW51ZUV4ZWN1dGlvbiA9IGZ1bmN0aW9uICgpIHtcbiAgaXNIb3N0Q2FsbGJhY2tTY2hlZHVsZWQgfHxcbiAgICBpc1BlcmZvcm1pbmdXb3JrIHx8XG4gICAgKChpc0hvc3RDYWxsYmFja1NjaGVkdWxlZCA9ICEwKSwgcmVxdWVzdEhvc3RDYWxsYmFjaygpKTtcbn07XG5leHBvcnRzLnVuc3RhYmxlX2ZvcmNlRnJhbWVSYXRlID0gZnVuY3Rpb24gKGZwcykge1xuICAwID4gZnBzIHx8IDEyNSA8IGZwc1xuICAgID8gY29uc29sZS5lcnJvcihcbiAgICAgICAgXCJmb3JjZUZyYW1lUmF0ZSB0YWtlcyBhIHBvc2l0aXZlIGludCBiZXR3ZWVuIDAgYW5kIDEyNSwgZm9yY2luZyBmcmFtZSByYXRlcyBoaWdoZXIgdGhhbiAxMjUgZnBzIGlzIG5vdCBzdXBwb3J0ZWRcIlxuICAgICAgKVxuICAgIDogKGZyYW1lSW50ZXJ2YWwgPSAwIDwgZnBzID8gTWF0aC5mbG9vcigxZTMgLyBmcHMpIDogNSk7XG59O1xuZXhwb3J0cy51bnN0YWJsZV9nZXRDdXJyZW50UHJpb3JpdHlMZXZlbCA9IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGN1cnJlbnRQcmlvcml0eUxldmVsO1xufTtcbmV4cG9ydHMudW5zdGFibGVfZ2V0Rmlyc3RDYWxsYmFja05vZGUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBwZWVrKHRhc2tRdWV1ZSk7XG59O1xuZXhwb3J0cy51bnN0YWJsZV9uZXh0ID0gZnVuY3Rpb24gKGV2ZW50SGFuZGxlcikge1xuICBzd2l0Y2ggKGN1cnJlbnRQcmlvcml0eUxldmVsKSB7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICBjYXNlIDM6XG4gICAgICB2YXIgcHJpb3JpdHlMZXZlbCA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcHJpb3JpdHlMZXZlbCA9IGN1cnJlbnRQcmlvcml0eUxldmVsO1xuICB9XG4gIHZhciBwcmV2aW91c1ByaW9yaXR5TGV2ZWwgPSBjdXJyZW50UHJpb3JpdHlMZXZlbDtcbiAgY3VycmVudFByaW9yaXR5TGV2ZWwgPSBwcmlvcml0eUxldmVsO1xuICB0cnkge1xuICAgIHJldHVybiBldmVudEhhbmRsZXIoKTtcbiAgfSBmaW5hbGx5IHtcbiAgICBjdXJyZW50UHJpb3JpdHlMZXZlbCA9IHByZXZpb3VzUHJpb3JpdHlMZXZlbDtcbiAgfVxufTtcbmV4cG9ydHMudW5zdGFibGVfcGF1c2VFeGVjdXRpb24gPSBmdW5jdGlvbiAoKSB7fTtcbmV4cG9ydHMudW5zdGFibGVfcmVxdWVzdFBhaW50ID0gZnVuY3Rpb24gKCkge307XG5leHBvcnRzLnVuc3RhYmxlX3J1bldpdGhQcmlvcml0eSA9IGZ1bmN0aW9uIChwcmlvcml0eUxldmVsLCBldmVudEhhbmRsZXIpIHtcbiAgc3dpdGNoIChwcmlvcml0eUxldmVsKSB7XG4gICAgY2FzZSAxOlxuICAgIGNhc2UgMjpcbiAgICBjYXNlIDM6XG4gICAgY2FzZSA0OlxuICAgIGNhc2UgNTpcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBwcmlvcml0eUxldmVsID0gMztcbiAgfVxuICB2YXIgcHJldmlvdXNQcmlvcml0eUxldmVsID0gY3VycmVudFByaW9yaXR5TGV2ZWw7XG4gIGN1cnJlbnRQcmlvcml0eUxldmVsID0gcHJpb3JpdHlMZXZlbDtcbiAgdHJ5IHtcbiAgICByZXR1cm4gZXZlbnRIYW5kbGVyKCk7XG4gIH0gZmluYWxseSB7XG4gICAgY3VycmVudFByaW9yaXR5TGV2ZWwgPSBwcmV2aW91c1ByaW9yaXR5TGV2ZWw7XG4gIH1cbn07XG5leHBvcnRzLnVuc3RhYmxlX3NjaGVkdWxlQ2FsbGJhY2sgPSBmdW5jdGlvbiAoXG4gIHByaW9yaXR5TGV2ZWwsXG4gIGNhbGxiYWNrLFxuICBvcHRpb25zXG4pIHtcbiAgdmFyIGN1cnJlbnRUaW1lID0gZXhwb3J0cy51bnN0YWJsZV9ub3coKTtcbiAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG9wdGlvbnMgJiYgbnVsbCAhPT0gb3B0aW9uc1xuICAgID8gKChvcHRpb25zID0gb3B0aW9ucy5kZWxheSksXG4gICAgICAob3B0aW9ucyA9XG4gICAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiBvcHRpb25zICYmIDAgPCBvcHRpb25zXG4gICAgICAgICAgPyBjdXJyZW50VGltZSArIG9wdGlvbnNcbiAgICAgICAgICA6IGN1cnJlbnRUaW1lKSlcbiAgICA6IChvcHRpb25zID0gY3VycmVudFRpbWUpO1xuICBzd2l0Y2ggKHByaW9yaXR5TGV2ZWwpIHtcbiAgICBjYXNlIDE6XG4gICAgICB2YXIgdGltZW91dCA9IC0xO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyOlxuICAgICAgdGltZW91dCA9IDI1MDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHRpbWVvdXQgPSAxMDczNzQxODIzO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgdGltZW91dCA9IDFlNDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB0aW1lb3V0ID0gNWUzO1xuICB9XG4gIHRpbWVvdXQgPSBvcHRpb25zICsgdGltZW91dDtcbiAgcHJpb3JpdHlMZXZlbCA9IHtcbiAgICBpZDogdGFza0lkQ291bnRlcisrLFxuICAgIGNhbGxiYWNrOiBjYWxsYmFjayxcbiAgICBwcmlvcml0eUxldmVsOiBwcmlvcml0eUxldmVsLFxuICAgIHN0YXJ0VGltZTogb3B0aW9ucyxcbiAgICBleHBpcmF0aW9uVGltZTogdGltZW91dCxcbiAgICBzb3J0SW5kZXg6IC0xXG4gIH07XG4gIG9wdGlvbnMgPiBjdXJyZW50VGltZVxuICAgID8gKChwcmlvcml0eUxldmVsLnNvcnRJbmRleCA9IG9wdGlvbnMpLFxuICAgICAgcHVzaCh0aW1lclF1ZXVlLCBwcmlvcml0eUxldmVsKSxcbiAgICAgIG51bGwgPT09IHBlZWsodGFza1F1ZXVlKSAmJlxuICAgICAgICBwcmlvcml0eUxldmVsID09PSBwZWVrKHRpbWVyUXVldWUpICYmXG4gICAgICAgIChpc0hvc3RUaW1lb3V0U2NoZWR1bGVkXG4gICAgICAgICAgPyAobG9jYWxDbGVhclRpbWVvdXQodGFza1RpbWVvdXRJRCksICh0YXNrVGltZW91dElEID0gLTEpKVxuICAgICAgICAgIDogKGlzSG9zdFRpbWVvdXRTY2hlZHVsZWQgPSAhMCksXG4gICAgICAgIHJlcXVlc3RIb3N0VGltZW91dChoYW5kbGVUaW1lb3V0LCBvcHRpb25zIC0gY3VycmVudFRpbWUpKSlcbiAgICA6ICgocHJpb3JpdHlMZXZlbC5zb3J0SW5kZXggPSB0aW1lb3V0KSxcbiAgICAgIHB1c2godGFza1F1ZXVlLCBwcmlvcml0eUxldmVsKSxcbiAgICAgIGlzSG9zdENhbGxiYWNrU2NoZWR1bGVkIHx8XG4gICAgICAgIGlzUGVyZm9ybWluZ1dvcmsgfHxcbiAgICAgICAgKChpc0hvc3RDYWxsYmFja1NjaGVkdWxlZCA9ICEwKSwgcmVxdWVzdEhvc3RDYWxsYmFjaygpKSk7XG4gIHJldHVybiBwcmlvcml0eUxldmVsO1xufTtcbmV4cG9ydHMudW5zdGFibGVfc2hvdWxkWWllbGQgPSBzaG91bGRZaWVsZFRvSG9zdDtcbmV4cG9ydHMudW5zdGFibGVfd3JhcENhbGxiYWNrID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBwYXJlbnRQcmlvcml0eUxldmVsID0gY3VycmVudFByaW9yaXR5TGV2ZWw7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHByZXZpb3VzUHJpb3JpdHlMZXZlbCA9IGN1cnJlbnRQcmlvcml0eUxldmVsO1xuICAgIGN1cnJlbnRQcmlvcml0eUxldmVsID0gcGFyZW50UHJpb3JpdHlMZXZlbDtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGNhbGxiYWNrLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIGN1cnJlbnRQcmlvcml0eUxldmVsID0gcHJldmlvdXNQcmlvcml0eUxldmVsO1xuICAgIH1cbiAgfTtcbn07XG4iLCAiJ3VzZSBzdHJpY3QnO1xuXG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgPT09ICdwcm9kdWN0aW9uJykge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5wcm9kdWN0aW9uLmpzJyk7XG59IGVsc2Uge1xuICBtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vY2pzL3NjaGVkdWxlci5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwgIi8qKlxuICogQGxpY2Vuc2UgUmVhY3RcbiAqIHJlYWN0LWRvbS5wcm9kdWN0aW9uLmpzXG4gKlxuICogQ29weXJpZ2h0IChjKSBNZXRhIFBsYXRmb3JtcywgSW5jLiBhbmQgYWZmaWxpYXRlcy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG5cInVzZSBzdHJpY3RcIjtcbnZhciBSZWFjdCA9IHJlcXVpcmUoXCJyZWFjdFwiKTtcbmZ1bmN0aW9uIGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoY29kZSkge1xuICB2YXIgdXJsID0gXCJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvXCIgKyBjb2RlO1xuICBpZiAoMSA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICB1cmwgKz0gXCI/YXJnc1tdPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICB1cmwgKz0gXCImYXJnc1tdPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tpXSk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBcIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIiArXG4gICAgY29kZSArXG4gICAgXCI7IHZpc2l0IFwiICtcbiAgICB1cmwgK1xuICAgIFwiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIlxuICApO1xufVxuZnVuY3Rpb24gbm9vcCgpIHt9XG52YXIgSW50ZXJuYWxzID0ge1xuICAgIGQ6IHtcbiAgICAgIGY6IG5vb3AsXG4gICAgICByOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNTIyKSk7XG4gICAgICB9LFxuICAgICAgRDogbm9vcCxcbiAgICAgIEM6IG5vb3AsXG4gICAgICBMOiBub29wLFxuICAgICAgbTogbm9vcCxcbiAgICAgIFg6IG5vb3AsXG4gICAgICBTOiBub29wLFxuICAgICAgTTogbm9vcFxuICAgIH0sXG4gICAgcDogMCxcbiAgICBmaW5kRE9NTm9kZTogbnVsbFxuICB9LFxuICBSRUFDVF9QT1JUQUxfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5wb3J0YWxcIik7XG5mdW5jdGlvbiBjcmVhdGVQb3J0YWwkMShjaGlsZHJlbiwgY29udGFpbmVySW5mbywgaW1wbGVtZW50YXRpb24pIHtcbiAgdmFyIGtleSA9XG4gICAgMyA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbM10gPyBhcmd1bWVudHNbM10gOiBudWxsO1xuICByZXR1cm4ge1xuICAgICQkdHlwZW9mOiBSRUFDVF9QT1JUQUxfVFlQRSxcbiAgICBrZXk6IG51bGwgPT0ga2V5ID8gbnVsbCA6IFwiXCIgKyBrZXksXG4gICAgY2hpbGRyZW46IGNoaWxkcmVuLFxuICAgIGNvbnRhaW5lckluZm86IGNvbnRhaW5lckluZm8sXG4gICAgaW1wbGVtZW50YXRpb246IGltcGxlbWVudGF0aW9uXG4gIH07XG59XG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPVxuICBSZWFjdC5fX0NMSUVOVF9JTlRFUk5BTFNfRE9fTk9UX1VTRV9PUl9XQVJOX1VTRVJTX1RIRVlfQ0FOTk9UX1VQR1JBREU7XG5mdW5jdGlvbiBnZXRDcm9zc09yaWdpblN0cmluZ0FzKGFzLCBpbnB1dCkge1xuICBpZiAoXCJmb250XCIgPT09IGFzKSByZXR1cm4gXCJcIjtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBpbnB1dClcbiAgICByZXR1cm4gXCJ1c2UtY3JlZGVudGlhbHNcIiA9PT0gaW5wdXQgPyBpbnB1dCA6IFwiXCI7XG59XG5leHBvcnRzLl9fRE9NX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSA9XG4gIEludGVybmFscztcbmV4cG9ydHMuY3JlYXRlUG9ydGFsID0gZnVuY3Rpb24gKGNoaWxkcmVuLCBjb250YWluZXIpIHtcbiAgdmFyIGtleSA9XG4gICAgMiA8IGFyZ3VtZW50cy5sZW5ndGggJiYgdm9pZCAwICE9PSBhcmd1bWVudHNbMl0gPyBhcmd1bWVudHNbMl0gOiBudWxsO1xuICBpZiAoXG4gICAgIWNvbnRhaW5lciB8fFxuICAgICgxICE9PSBjb250YWluZXIubm9kZVR5cGUgJiZcbiAgICAgIDkgIT09IGNvbnRhaW5lci5ub2RlVHlwZSAmJlxuICAgICAgMTEgIT09IGNvbnRhaW5lci5ub2RlVHlwZSlcbiAgKVxuICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjk5KSk7XG4gIHJldHVybiBjcmVhdGVQb3J0YWwkMShjaGlsZHJlbiwgY29udGFpbmVyLCBudWxsLCBrZXkpO1xufTtcbmV4cG9ydHMuZmx1c2hTeW5jID0gZnVuY3Rpb24gKGZuKSB7XG4gIHZhciBwcmV2aW91c1RyYW5zaXRpb24gPSBSZWFjdFNoYXJlZEludGVybmFscy5ULFxuICAgIHByZXZpb3VzVXBkYXRlUHJpb3JpdHkgPSBJbnRlcm5hbHMucDtcbiAgdHJ5IHtcbiAgICBpZiAoKChSZWFjdFNoYXJlZEludGVybmFscy5UID0gbnVsbCksIChJbnRlcm5hbHMucCA9IDIpLCBmbikpIHJldHVybiBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIChSZWFjdFNoYXJlZEludGVybmFscy5UID0gcHJldmlvdXNUcmFuc2l0aW9uKSxcbiAgICAgIChJbnRlcm5hbHMucCA9IHByZXZpb3VzVXBkYXRlUHJpb3JpdHkpLFxuICAgICAgSW50ZXJuYWxzLmQuZigpO1xuICB9XG59O1xuZXhwb3J0cy5wcmVjb25uZWN0ID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGhyZWYgJiZcbiAgICAob3B0aW9uc1xuICAgICAgPyAoKG9wdGlvbnMgPSBvcHRpb25zLmNyb3NzT3JpZ2luKSxcbiAgICAgICAgKG9wdGlvbnMgPVxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zXG4gICAgICAgICAgICA/IFwidXNlLWNyZWRlbnRpYWxzXCIgPT09IG9wdGlvbnNcbiAgICAgICAgICAgICAgPyBvcHRpb25zXG4gICAgICAgICAgICAgIDogXCJcIlxuICAgICAgICAgICAgOiB2b2lkIDApKVxuICAgICAgOiAob3B0aW9ucyA9IG51bGwpLFxuICAgIEludGVybmFscy5kLkMoaHJlZiwgb3B0aW9ucykpO1xufTtcbmV4cG9ydHMucHJlZmV0Y2hETlMgPSBmdW5jdGlvbiAoaHJlZikge1xuICBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJiBJbnRlcm5hbHMuZC5EKGhyZWYpO1xufTtcbmV4cG9ydHMucHJlaW5pdCA9IGZ1bmN0aW9uIChocmVmLCBvcHRpb25zKSB7XG4gIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJiBvcHRpb25zICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmFzKSB7XG4gICAgdmFyIGFzID0gb3B0aW9ucy5hcyxcbiAgICAgIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhhcywgb3B0aW9ucy5jcm9zc09yaWdpbiksXG4gICAgICBpbnRlZ3JpdHkgPVxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPyBvcHRpb25zLmludGVncml0eSA6IHZvaWQgMCxcbiAgICAgIGZldGNoUHJpb3JpdHkgPVxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5mZXRjaFByaW9yaXR5XG4gICAgICAgICAgPyBvcHRpb25zLmZldGNoUHJpb3JpdHlcbiAgICAgICAgICA6IHZvaWQgMDtcbiAgICBcInN0eWxlXCIgPT09IGFzXG4gICAgICA/IEludGVybmFscy5kLlMoXG4gICAgICAgICAgaHJlZixcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5wcmVjZWRlbmNlID8gb3B0aW9ucy5wcmVjZWRlbmNlIDogdm9pZCAwLFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgICAgICAgIGludGVncml0eTogaW50ZWdyaXR5LFxuICAgICAgICAgICAgZmV0Y2hQcmlvcml0eTogZmV0Y2hQcmlvcml0eVxuICAgICAgICAgIH1cbiAgICAgICAgKVxuICAgICAgOiBcInNjcmlwdFwiID09PSBhcyAmJlxuICAgICAgICBJbnRlcm5hbHMuZC5YKGhyZWYsIHtcbiAgICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgICAgaW50ZWdyaXR5OiBpbnRlZ3JpdHksXG4gICAgICAgICAgZmV0Y2hQcmlvcml0eTogZmV0Y2hQcmlvcml0eSxcbiAgICAgICAgICBub25jZTogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwXG4gICAgICAgIH0pO1xuICB9XG59O1xuZXhwb3J0cy5wcmVpbml0TW9kdWxlID0gZnVuY3Rpb24gKGhyZWYsIG9wdGlvbnMpIHtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBocmVmKVxuICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2Ygb3B0aW9ucyAmJiBudWxsICE9PSBvcHRpb25zKSB7XG4gICAgICBpZiAobnVsbCA9PSBvcHRpb25zLmFzIHx8IFwic2NyaXB0XCIgPT09IG9wdGlvbnMuYXMpIHtcbiAgICAgICAgdmFyIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhcbiAgICAgICAgICBvcHRpb25zLmFzLFxuICAgICAgICAgIG9wdGlvbnMuY3Jvc3NPcmlnaW5cbiAgICAgICAgKTtcbiAgICAgICAgSW50ZXJuYWxzLmQuTShocmVmLCB7XG4gICAgICAgICAgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLFxuICAgICAgICAgIGludGVncml0eTpcbiAgICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmludGVncml0eSA/IG9wdGlvbnMuaW50ZWdyaXR5IDogdm9pZCAwLFxuICAgICAgICAgIG5vbmNlOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5ub25jZSA/IG9wdGlvbnMubm9uY2UgOiB2b2lkIDBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSBlbHNlIG51bGwgPT0gb3B0aW9ucyAmJiBJbnRlcm5hbHMuZC5NKGhyZWYpO1xufTtcbmV4cG9ydHMucHJlbG9hZCA9IGZ1bmN0aW9uIChocmVmLCBvcHRpb25zKSB7XG4gIGlmIChcbiAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJlxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBvcHRpb25zICYmXG4gICAgbnVsbCAhPT0gb3B0aW9ucyAmJlxuICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmFzXG4gICkge1xuICAgIHZhciBhcyA9IG9wdGlvbnMuYXMsXG4gICAgICBjcm9zc09yaWdpbiA9IGdldENyb3NzT3JpZ2luU3RyaW5nQXMoYXMsIG9wdGlvbnMuY3Jvc3NPcmlnaW4pO1xuICAgIEludGVybmFscy5kLkwoaHJlZiwgYXMsIHtcbiAgICAgIGNyb3NzT3JpZ2luOiBjcm9zc09yaWdpbixcbiAgICAgIGludGVncml0eTpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW50ZWdyaXR5ID8gb3B0aW9ucy5pbnRlZ3JpdHkgOiB2b2lkIDAsXG4gICAgICBub25jZTogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMubm9uY2UgPyBvcHRpb25zLm5vbmNlIDogdm9pZCAwLFxuICAgICAgdHlwZTogXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMudHlwZSA/IG9wdGlvbnMudHlwZSA6IHZvaWQgMCxcbiAgICAgIGZldGNoUHJpb3JpdHk6XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmZldGNoUHJpb3JpdHlcbiAgICAgICAgICA/IG9wdGlvbnMuZmV0Y2hQcmlvcml0eVxuICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgcmVmZXJyZXJQb2xpY3k6XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLnJlZmVycmVyUG9saWN5XG4gICAgICAgICAgPyBvcHRpb25zLnJlZmVycmVyUG9saWN5XG4gICAgICAgICAgOiB2b2lkIDAsXG4gICAgICBpbWFnZVNyY1NldDpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW1hZ2VTcmNTZXQgPyBvcHRpb25zLmltYWdlU3JjU2V0IDogdm9pZCAwLFxuICAgICAgaW1hZ2VTaXplczpcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuaW1hZ2VTaXplcyA/IG9wdGlvbnMuaW1hZ2VTaXplcyA6IHZvaWQgMCxcbiAgICAgIG1lZGlhOiBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5tZWRpYSA/IG9wdGlvbnMubWVkaWEgOiB2b2lkIDBcbiAgICB9KTtcbiAgfVxufTtcbmV4cG9ydHMucHJlbG9hZE1vZHVsZSA9IGZ1bmN0aW9uIChocmVmLCBvcHRpb25zKSB7XG4gIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZilcbiAgICBpZiAob3B0aW9ucykge1xuICAgICAgdmFyIGNyb3NzT3JpZ2luID0gZ2V0Q3Jvc3NPcmlnaW5TdHJpbmdBcyhvcHRpb25zLmFzLCBvcHRpb25zLmNyb3NzT3JpZ2luKTtcbiAgICAgIEludGVybmFscy5kLm0oaHJlZiwge1xuICAgICAgICBhczpcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5hcyAmJiBcInNjcmlwdFwiICE9PSBvcHRpb25zLmFzXG4gICAgICAgICAgICA/IG9wdGlvbnMuYXNcbiAgICAgICAgICAgIDogdm9pZCAwLFxuICAgICAgICBjcm9zc09yaWdpbjogY3Jvc3NPcmlnaW4sXG4gICAgICAgIGludGVncml0eTpcbiAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2Ygb3B0aW9ucy5pbnRlZ3JpdHkgPyBvcHRpb25zLmludGVncml0eSA6IHZvaWQgMFxuICAgICAgfSk7XG4gICAgfSBlbHNlIEludGVybmFscy5kLm0oaHJlZik7XG59O1xuZXhwb3J0cy5yZXF1ZXN0Rm9ybVJlc2V0ID0gZnVuY3Rpb24gKGZvcm0pIHtcbiAgSW50ZXJuYWxzLmQucihmb3JtKTtcbn07XG5leHBvcnRzLnVuc3RhYmxlX2JhdGNoZWRVcGRhdGVzID0gZnVuY3Rpb24gKGZuLCBhKSB7XG4gIHJldHVybiBmbihhKTtcbn07XG5leHBvcnRzLnVzZUZvcm1TdGF0ZSA9IGZ1bmN0aW9uIChhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUZvcm1TdGF0ZShhY3Rpb24sIGluaXRpYWxTdGF0ZSwgcGVybWFsaW5rKTtcbn07XG5leHBvcnRzLnVzZUZvcm1TdGF0dXMgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBSZWFjdFNoYXJlZEludGVybmFscy5ILnVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzKCk7XG59O1xuZXhwb3J0cy52ZXJzaW9uID0gXCIxOS4wLjBcIjtcbiIsICIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20ucHJvZHVjdGlvbi5qcycpO1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20uZGV2ZWxvcG1lbnQuanMnKTtcbn1cbiIsICIvKipcbiAqIEBsaWNlbnNlIFJlYWN0XG4gKiByZWFjdC1kb20tY2xpZW50LnByb2R1Y3Rpb24uanNcbiAqXG4gKiBDb3B5cmlnaHQgKGMpIE1ldGEgUGxhdGZvcm1zLCBJbmMuIGFuZCBhZmZpbGlhdGVzLlxuICpcbiAqIFRoaXMgc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIGZvdW5kIGluIHRoZVxuICogTElDRU5TRSBmaWxlIGluIHRoZSByb290IGRpcmVjdG9yeSBvZiB0aGlzIHNvdXJjZSB0cmVlLlxuICovXG5cbi8qXG4gTW9kZXJuaXpyIDMuMC4wcHJlIChDdXN0b20gQnVpbGQpIHwgTUlUXG4qL1xuXCJ1c2Ugc3RyaWN0XCI7XG52YXIgU2NoZWR1bGVyID0gcmVxdWlyZShcInNjaGVkdWxlclwiKSxcbiAgUmVhY3QgPSByZXF1aXJlKFwicmVhY3RcIiksXG4gIFJlYWN0RE9NID0gcmVxdWlyZShcInJlYWN0LWRvbVwiKTtcbmZ1bmN0aW9uIGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoY29kZSkge1xuICB2YXIgdXJsID0gXCJodHRwczovL3JlYWN0LmRldi9lcnJvcnMvXCIgKyBjb2RlO1xuICBpZiAoMSA8IGFyZ3VtZW50cy5sZW5ndGgpIHtcbiAgICB1cmwgKz0gXCI/YXJnc1tdPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1sxXSk7XG4gICAgZm9yICh2YXIgaSA9IDI7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspXG4gICAgICB1cmwgKz0gXCImYXJnc1tdPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KGFyZ3VtZW50c1tpXSk7XG4gIH1cbiAgcmV0dXJuIChcbiAgICBcIk1pbmlmaWVkIFJlYWN0IGVycm9yICNcIiArXG4gICAgY29kZSArXG4gICAgXCI7IHZpc2l0IFwiICtcbiAgICB1cmwgK1xuICAgIFwiIGZvciB0aGUgZnVsbCBtZXNzYWdlIG9yIHVzZSB0aGUgbm9uLW1pbmlmaWVkIGRldiBlbnZpcm9ubWVudCBmb3IgZnVsbCBlcnJvcnMgYW5kIGFkZGl0aW9uYWwgaGVscGZ1bCB3YXJuaW5ncy5cIlxuICApO1xufVxuZnVuY3Rpb24gaXNWYWxpZENvbnRhaW5lcihub2RlKSB7XG4gIHJldHVybiAhKFxuICAgICFub2RlIHx8XG4gICAgKDEgIT09IG5vZGUubm9kZVR5cGUgJiYgOSAhPT0gbm9kZS5ub2RlVHlwZSAmJiAxMSAhPT0gbm9kZS5ub2RlVHlwZSlcbiAgKTtcbn1cbnZhciBSRUFDVF9MRUdBQ1lfRUxFTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmVsZW1lbnRcIiksXG4gIFJFQUNUX0VMRU1FTlRfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC50cmFuc2l0aW9uYWwuZWxlbWVudFwiKSxcbiAgUkVBQ1RfUE9SVEFMX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QucG9ydGFsXCIpLFxuICBSRUFDVF9GUkFHTUVOVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmZyYWdtZW50XCIpLFxuICBSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN0cmljdF9tb2RlXCIpLFxuICBSRUFDVF9QUk9GSUxFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb2ZpbGVyXCIpLFxuICBSRUFDVF9QUk9WSURFUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnByb3ZpZGVyXCIpLFxuICBSRUFDVF9DT05TVU1FUl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LmNvbnN1bWVyXCIpLFxuICBSRUFDVF9DT05URVhUX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QuY29udGV4dFwiKSxcbiAgUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5mb3J3YXJkX3JlZlwiKSxcbiAgUkVBQ1RfU1VTUEVOU0VfVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5zdXNwZW5zZVwiKSxcbiAgUkVBQ1RfU1VTUEVOU0VfTElTVF9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0LnN1c3BlbnNlX2xpc3RcIiksXG4gIFJFQUNUX01FTU9fVFlQRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5tZW1vXCIpLFxuICBSRUFDVF9MQVpZX1RZUEUgPSBTeW1ib2wuZm9yKFwicmVhY3QubGF6eVwiKTtcblN5bWJvbC5mb3IoXCJyZWFjdC5zY29wZVwiKTtcblN5bWJvbC5mb3IoXCJyZWFjdC5kZWJ1Z190cmFjZV9tb2RlXCIpO1xudmFyIFJFQUNUX09GRlNDUkVFTl9UWVBFID0gU3ltYm9sLmZvcihcInJlYWN0Lm9mZnNjcmVlblwiKTtcblN5bWJvbC5mb3IoXCJyZWFjdC5sZWdhY3lfaGlkZGVuXCIpO1xuU3ltYm9sLmZvcihcInJlYWN0LnRyYWNpbmdfbWFya2VyXCIpO1xudmFyIFJFQUNUX01FTU9fQ0FDSEVfU0VOVElORUwgPSBTeW1ib2wuZm9yKFwicmVhY3QubWVtb19jYWNoZV9zZW50aW5lbFwiKSxcbiAgTUFZQkVfSVRFUkFUT1JfU1lNQk9MID0gU3ltYm9sLml0ZXJhdG9yO1xuZnVuY3Rpb24gZ2V0SXRlcmF0b3JGbihtYXliZUl0ZXJhYmxlKSB7XG4gIGlmIChudWxsID09PSBtYXliZUl0ZXJhYmxlIHx8IFwib2JqZWN0XCIgIT09IHR5cGVvZiBtYXliZUl0ZXJhYmxlKSByZXR1cm4gbnVsbDtcbiAgbWF5YmVJdGVyYWJsZSA9XG4gICAgKE1BWUJFX0lURVJBVE9SX1NZTUJPTCAmJiBtYXliZUl0ZXJhYmxlW01BWUJFX0lURVJBVE9SX1NZTUJPTF0pIHx8XG4gICAgbWF5YmVJdGVyYWJsZVtcIkBAaXRlcmF0b3JcIl07XG4gIHJldHVybiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBtYXliZUl0ZXJhYmxlID8gbWF5YmVJdGVyYWJsZSA6IG51bGw7XG59XG52YXIgUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSA9IFN5bWJvbC5mb3IoXCJyZWFjdC5jbGllbnQucmVmZXJlbmNlXCIpO1xuZnVuY3Rpb24gZ2V0Q29tcG9uZW50TmFtZUZyb21UeXBlKHR5cGUpIHtcbiAgaWYgKG51bGwgPT0gdHlwZSkgcmV0dXJuIG51bGw7XG4gIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB0eXBlKVxuICAgIHJldHVybiB0eXBlLiQkdHlwZW9mID09PSBSRUFDVF9DTElFTlRfUkVGRVJFTkNFXG4gICAgICA/IG51bGxcbiAgICAgIDogdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlLm5hbWUgfHwgbnVsbDtcbiAgaWYgKFwic3RyaW5nXCIgPT09IHR5cGVvZiB0eXBlKSByZXR1cm4gdHlwZTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgcmV0dXJuIFwiRnJhZ21lbnRcIjtcbiAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgcmV0dXJuIFwiUG9ydGFsXCI7XG4gICAgY2FzZSBSRUFDVF9QUk9GSUxFUl9UWVBFOlxuICAgICAgcmV0dXJuIFwiUHJvZmlsZXJcIjtcbiAgICBjYXNlIFJFQUNUX1NUUklDVF9NT0RFX1RZUEU6XG4gICAgICByZXR1cm4gXCJTdHJpY3RNb2RlXCI7XG4gICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9UWVBFOlxuICAgICAgcmV0dXJuIFwiU3VzcGVuc2VcIjtcbiAgICBjYXNlIFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRTpcbiAgICAgIHJldHVybiBcIlN1c3BlbnNlTGlzdFwiO1xuICB9XG4gIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgdHlwZSlcbiAgICBzd2l0Y2ggKHR5cGUuJCR0eXBlb2YpIHtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OVEVYVF9UWVBFOlxuICAgICAgICByZXR1cm4gKHR5cGUuZGlzcGxheU5hbWUgfHwgXCJDb250ZXh0XCIpICsgXCIuUHJvdmlkZXJcIjtcbiAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgcmV0dXJuICh0eXBlLl9jb250ZXh0LmRpc3BsYXlOYW1lIHx8IFwiQ29udGV4dFwiKSArIFwiLkNvbnN1bWVyXCI7XG4gICAgICBjYXNlIFJFQUNUX0ZPUldBUkRfUkVGX1RZUEU6XG4gICAgICAgIHZhciBpbm5lclR5cGUgPSB0eXBlLnJlbmRlcjtcbiAgICAgICAgdHlwZSA9IHR5cGUuZGlzcGxheU5hbWU7XG4gICAgICAgIHR5cGUgfHxcbiAgICAgICAgICAoKHR5cGUgPSBpbm5lclR5cGUuZGlzcGxheU5hbWUgfHwgaW5uZXJUeXBlLm5hbWUgfHwgXCJcIiksXG4gICAgICAgICAgKHR5cGUgPSBcIlwiICE9PSB0eXBlID8gXCJGb3J3YXJkUmVmKFwiICsgdHlwZSArIFwiKVwiIDogXCJGb3J3YXJkUmVmXCIpKTtcbiAgICAgICAgcmV0dXJuIHR5cGU7XG4gICAgICBjYXNlIFJFQUNUX01FTU9fVFlQRTpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoaW5uZXJUeXBlID0gdHlwZS5kaXNwbGF5TmFtZSB8fCBudWxsKSxcbiAgICAgICAgICBudWxsICE9PSBpbm5lclR5cGVcbiAgICAgICAgICAgID8gaW5uZXJUeXBlXG4gICAgICAgICAgICA6IGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlLnR5cGUpIHx8IFwiTWVtb1wiXG4gICAgICAgICk7XG4gICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgaW5uZXJUeXBlID0gdHlwZS5fcGF5bG9hZDtcbiAgICAgICAgdHlwZSA9IHR5cGUuX2luaXQ7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0dXJuIGdldENvbXBvbmVudE5hbWVGcm9tVHlwZSh0eXBlKGlubmVyVHlwZSkpO1xuICAgICAgICB9IGNhdGNoICh4KSB7fVxuICAgIH1cbiAgcmV0dXJuIG51bGw7XG59XG52YXIgUmVhY3RTaGFyZWRJbnRlcm5hbHMgPVxuICAgIFJlYWN0Ll9fQ0xJRU5UX0lOVEVSTkFMU19ET19OT1RfVVNFX09SX1dBUk5fVVNFUlNfVEhFWV9DQU5OT1RfVVBHUkFERSxcbiAgYXNzaWduID0gT2JqZWN0LmFzc2lnbixcbiAgcHJlZml4LFxuICBzdWZmaXg7XG5mdW5jdGlvbiBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShuYW1lKSB7XG4gIGlmICh2b2lkIDAgPT09IHByZWZpeClcbiAgICB0cnkge1xuICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICB2YXIgbWF0Y2ggPSB4LnN0YWNrLnRyaW0oKS5tYXRjaCgvXFxuKCAqKGF0ICk/KS8pO1xuICAgICAgcHJlZml4ID0gKG1hdGNoICYmIG1hdGNoWzFdKSB8fCBcIlwiO1xuICAgICAgc3VmZml4ID1cbiAgICAgICAgLTEgPCB4LnN0YWNrLmluZGV4T2YoXCJcXG4gICAgYXRcIilcbiAgICAgICAgICA/IFwiICg8YW5vbnltb3VzPilcIlxuICAgICAgICAgIDogLTEgPCB4LnN0YWNrLmluZGV4T2YoXCJAXCIpXG4gICAgICAgICAgICA/IFwiQHVua25vd246MDowXCJcbiAgICAgICAgICAgIDogXCJcIjtcbiAgICB9XG4gIHJldHVybiBcIlxcblwiICsgcHJlZml4ICsgbmFtZSArIHN1ZmZpeDtcbn1cbnZhciByZWVudHJ5ID0gITE7XG5mdW5jdGlvbiBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZuLCBjb25zdHJ1Y3QpIHtcbiAgaWYgKCFmbiB8fCByZWVudHJ5KSByZXR1cm4gXCJcIjtcbiAgcmVlbnRyeSA9ICEwO1xuICB2YXIgcHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSA9IEVycm9yLnByZXBhcmVTdGFja1RyYWNlO1xuICBFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHZvaWQgMDtcbiAgdHJ5IHtcbiAgICB2YXIgUnVuSW5Sb290RnJhbWUgPSB7XG4gICAgICBEZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3Q6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBpZiAoY29uc3RydWN0KSB7XG4gICAgICAgICAgICB2YXIgRmFrZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoRmFrZS5wcm90b3R5cGUsIFwicHJvcHNcIiwge1xuICAgICAgICAgICAgICBzZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcigpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgUmVmbGVjdCAmJiBSZWZsZWN0LmNvbnN0cnVjdCkge1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIFJlZmxlY3QuY29uc3RydWN0KEZha2UsIFtdKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICAgICAgICAgIHZhciBjb250cm9sID0geDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBSZWZsZWN0LmNvbnN0cnVjdChmbiwgW10sIEZha2UpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBGYWtlLmNhbGwoKTtcbiAgICAgICAgICAgICAgfSBjYXRjaCAoeCQwKSB7XG4gICAgICAgICAgICAgICAgY29udHJvbCA9IHgkMDtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmbi5jYWxsKEZha2UucHJvdG90eXBlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgdGhyb3cgRXJyb3IoKTtcbiAgICAgICAgICAgIH0gY2F0Y2ggKHgkMSkge1xuICAgICAgICAgICAgICBjb250cm9sID0geCQxO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgKEZha2UgPSBmbigpKSAmJlxuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBGYWtlLmNhdGNoICYmXG4gICAgICAgICAgICAgIEZha2UuY2F0Y2goZnVuY3Rpb24gKCkge30pO1xuICAgICAgICAgIH1cbiAgICAgICAgfSBjYXRjaCAoc2FtcGxlKSB7XG4gICAgICAgICAgaWYgKHNhbXBsZSAmJiBjb250cm9sICYmIFwic3RyaW5nXCIgPT09IHR5cGVvZiBzYW1wbGUuc3RhY2spXG4gICAgICAgICAgICByZXR1cm4gW3NhbXBsZS5zdGFjaywgY29udHJvbC5zdGFja107XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFtudWxsLCBudWxsXTtcbiAgICAgIH1cbiAgICB9O1xuICAgIFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdC5kaXNwbGF5TmFtZSA9XG4gICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiO1xuICAgIHZhciBuYW1lUHJvcERlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgUnVuSW5Sb290RnJhbWUuRGV0ZXJtaW5lQ29tcG9uZW50RnJhbWVSb290LFxuICAgICAgXCJuYW1lXCJcbiAgICApO1xuICAgIG5hbWVQcm9wRGVzY3JpcHRvciAmJlxuICAgICAgbmFtZVByb3BEZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSAmJlxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KFxuICAgICAgICBSdW5JblJvb3RGcmFtZS5EZXRlcm1pbmVDb21wb25lbnRGcmFtZVJvb3QsXG4gICAgICAgIFwibmFtZVwiLFxuICAgICAgICB7IHZhbHVlOiBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiIH1cbiAgICAgICk7XG4gICAgdmFyIF9SdW5JblJvb3RGcmFtZSREZXRlciA9IFJ1bkluUm9vdEZyYW1lLkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdCgpLFxuICAgICAgc2FtcGxlU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMF0sXG4gICAgICBjb250cm9sU3RhY2sgPSBfUnVuSW5Sb290RnJhbWUkRGV0ZXJbMV07XG4gICAgaWYgKHNhbXBsZVN0YWNrICYmIGNvbnRyb2xTdGFjaykge1xuICAgICAgdmFyIHNhbXBsZUxpbmVzID0gc2FtcGxlU3RhY2suc3BsaXQoXCJcXG5cIiksXG4gICAgICAgIGNvbnRyb2xMaW5lcyA9IGNvbnRyb2xTdGFjay5zcGxpdChcIlxcblwiKTtcbiAgICAgIGZvciAoXG4gICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvciA9IFJ1bkluUm9vdEZyYW1lID0gMDtcbiAgICAgICAgUnVuSW5Sb290RnJhbWUgPCBzYW1wbGVMaW5lcy5sZW5ndGggJiZcbiAgICAgICAgIXNhbXBsZUxpbmVzW1J1bkluUm9vdEZyYW1lXS5pbmNsdWRlcyhcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiKTtcblxuICAgICAgKVxuICAgICAgICBSdW5JblJvb3RGcmFtZSsrO1xuICAgICAgZm9yIChcbiAgICAgICAgO1xuICAgICAgICBuYW1lUHJvcERlc2NyaXB0b3IgPCBjb250cm9sTGluZXMubGVuZ3RoICYmXG4gICAgICAgICFjb250cm9sTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXS5pbmNsdWRlcyhcbiAgICAgICAgICBcIkRldGVybWluZUNvbXBvbmVudEZyYW1lUm9vdFwiXG4gICAgICAgICk7XG5cbiAgICAgIClcbiAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yKys7XG4gICAgICBpZiAoXG4gICAgICAgIFJ1bkluUm9vdEZyYW1lID09PSBzYW1wbGVMaW5lcy5sZW5ndGggfHxcbiAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yID09PSBjb250cm9sTGluZXMubGVuZ3RoXG4gICAgICApXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgUnVuSW5Sb290RnJhbWUgPSBzYW1wbGVMaW5lcy5sZW5ndGggLSAxLFxuICAgICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yID0gY29udHJvbExpbmVzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgMSA8PSBSdW5JblJvb3RGcmFtZSAmJlxuICAgICAgICAgIDAgPD0gbmFtZVByb3BEZXNjcmlwdG9yICYmXG4gICAgICAgICAgc2FtcGxlTGluZXNbUnVuSW5Sb290RnJhbWVdICE9PSBjb250cm9sTGluZXNbbmFtZVByb3BEZXNjcmlwdG9yXTtcblxuICAgICAgICApXG4gICAgICAgICAgbmFtZVByb3BEZXNjcmlwdG9yLS07XG4gICAgICBmb3IgKFxuICAgICAgICA7XG4gICAgICAgIDEgPD0gUnVuSW5Sb290RnJhbWUgJiYgMCA8PSBuYW1lUHJvcERlc2NyaXB0b3I7XG4gICAgICAgIFJ1bkluUm9vdEZyYW1lLS0sIG5hbWVQcm9wRGVzY3JpcHRvci0tXG4gICAgICApXG4gICAgICAgIGlmIChzYW1wbGVMaW5lc1tSdW5JblJvb3RGcmFtZV0gIT09IGNvbnRyb2xMaW5lc1tuYW1lUHJvcERlc2NyaXB0b3JdKSB7XG4gICAgICAgICAgaWYgKDEgIT09IFJ1bkluUm9vdEZyYW1lIHx8IDEgIT09IG5hbWVQcm9wRGVzY3JpcHRvcikge1xuICAgICAgICAgICAgZG9cbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIChSdW5JblJvb3RGcmFtZS0tLFxuICAgICAgICAgICAgICAgIG5hbWVQcm9wRGVzY3JpcHRvci0tLFxuICAgICAgICAgICAgICAgIDAgPiBuYW1lUHJvcERlc2NyaXB0b3IgfHxcbiAgICAgICAgICAgICAgICAgIHNhbXBsZUxpbmVzW1J1bkluUm9vdEZyYW1lXSAhPT1cbiAgICAgICAgICAgICAgICAgICAgY29udHJvbExpbmVzW25hbWVQcm9wRGVzY3JpcHRvcl0pXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhciBmcmFtZSA9XG4gICAgICAgICAgICAgICAgICBcIlxcblwiICtcbiAgICAgICAgICAgICAgICAgIHNhbXBsZUxpbmVzW1J1bkluUm9vdEZyYW1lXS5yZXBsYWNlKFwiIGF0IG5ldyBcIiwgXCIgYXQgXCIpO1xuICAgICAgICAgICAgICAgIGZuLmRpc3BsYXlOYW1lICYmXG4gICAgICAgICAgICAgICAgICBmcmFtZS5pbmNsdWRlcyhcIjxhbm9ueW1vdXM+XCIpICYmXG4gICAgICAgICAgICAgICAgICAoZnJhbWUgPSBmcmFtZS5yZXBsYWNlKFwiPGFub255bW91cz5cIiwgZm4uZGlzcGxheU5hbWUpKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gZnJhbWU7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlICgxIDw9IFJ1bkluUm9vdEZyYW1lICYmIDAgPD0gbmFtZVByb3BEZXNjcmlwdG9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG4gIH0gZmluYWxseSB7XG4gICAgKHJlZW50cnkgPSAhMSksIChFcnJvci5wcmVwYXJlU3RhY2tUcmFjZSA9IHByZXZpb3VzUHJlcGFyZVN0YWNrVHJhY2UpO1xuICB9XG4gIHJldHVybiAocHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSA9IGZuID8gZm4uZGlzcGxheU5hbWUgfHwgZm4ubmFtZSA6IFwiXCIpXG4gICAgPyBkZXNjcmliZUJ1aWx0SW5Db21wb25lbnRGcmFtZShwcmV2aW91c1ByZXBhcmVTdGFja1RyYWNlKVxuICAgIDogXCJcIjtcbn1cbmZ1bmN0aW9uIGRlc2NyaWJlRmliZXIoZmliZXIpIHtcbiAgc3dpdGNoIChmaWJlci50YWcpIHtcbiAgICBjYXNlIDI2OlxuICAgIGNhc2UgMjc6XG4gICAgY2FzZSA1OlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKGZpYmVyLnR5cGUpO1xuICAgIGNhc2UgMTY6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJMYXp5XCIpO1xuICAgIGNhc2UgMTM6XG4gICAgICByZXR1cm4gZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUoXCJTdXNwZW5zZVwiKTtcbiAgICBjYXNlIDE5OlxuICAgICAgcmV0dXJuIGRlc2NyaWJlQnVpbHRJbkNvbXBvbmVudEZyYW1lKFwiU3VzcGVuc2VMaXN0XCIpO1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDE1OlxuICAgICAgcmV0dXJuIChmaWJlciA9IGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZmliZXIudHlwZSwgITEpKSwgZmliZXI7XG4gICAgY2FzZSAxMTpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChmaWJlciA9IGRlc2NyaWJlTmF0aXZlQ29tcG9uZW50RnJhbWUoZmliZXIudHlwZS5yZW5kZXIsICExKSksIGZpYmVyXG4gICAgICApO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiAoZmliZXIgPSBkZXNjcmliZU5hdGl2ZUNvbXBvbmVudEZyYW1lKGZpYmVyLnR5cGUsICEwKSksIGZpYmVyO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gXCJcIjtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0U3RhY2tCeUZpYmVySW5EZXZBbmRQcm9kKHdvcmtJblByb2dyZXNzKSB7XG4gIHRyeSB7XG4gICAgdmFyIGluZm8gPSBcIlwiO1xuICAgIGRvXG4gICAgICAoaW5mbyArPSBkZXNjcmliZUZpYmVyKHdvcmtJblByb2dyZXNzKSksXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcyA9IHdvcmtJblByb2dyZXNzLnJldHVybik7XG4gICAgd2hpbGUgKHdvcmtJblByb2dyZXNzKTtcbiAgICByZXR1cm4gaW5mbztcbiAgfSBjYXRjaCAoeCkge1xuICAgIHJldHVybiBcIlxcbkVycm9yIGdlbmVyYXRpbmcgc3RhY2s6IFwiICsgeC5tZXNzYWdlICsgXCJcXG5cIiArIHguc3RhY2s7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldE5lYXJlc3RNb3VudGVkRmliZXIoZmliZXIpIHtcbiAgdmFyIG5vZGUgPSBmaWJlcixcbiAgICBuZWFyZXN0TW91bnRlZCA9IGZpYmVyO1xuICBpZiAoZmliZXIuYWx0ZXJuYXRlKSBmb3IgKDsgbm9kZS5yZXR1cm47ICkgbm9kZSA9IG5vZGUucmV0dXJuO1xuICBlbHNlIHtcbiAgICBmaWJlciA9IG5vZGU7XG4gICAgZG9cbiAgICAgIChub2RlID0gZmliZXIpLFxuICAgICAgICAwICE9PSAobm9kZS5mbGFncyAmIDQwOTgpICYmIChuZWFyZXN0TW91bnRlZCA9IG5vZGUucmV0dXJuKSxcbiAgICAgICAgKGZpYmVyID0gbm9kZS5yZXR1cm4pO1xuICAgIHdoaWxlIChmaWJlcik7XG4gIH1cbiAgcmV0dXJuIDMgPT09IG5vZGUudGFnID8gbmVhcmVzdE1vdW50ZWQgOiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0U3VzcGVuc2VJbnN0YW5jZUZyb21GaWJlcihmaWJlcikge1xuICBpZiAoMTMgPT09IGZpYmVyLnRhZykge1xuICAgIHZhciBzdXNwZW5zZVN0YXRlID0gZmliZXIubWVtb2l6ZWRTdGF0ZTtcbiAgICBudWxsID09PSBzdXNwZW5zZVN0YXRlICYmXG4gICAgICAoKGZpYmVyID0gZmliZXIuYWx0ZXJuYXRlKSxcbiAgICAgIG51bGwgIT09IGZpYmVyICYmIChzdXNwZW5zZVN0YXRlID0gZmliZXIubWVtb2l6ZWRTdGF0ZSkpO1xuICAgIGlmIChudWxsICE9PSBzdXNwZW5zZVN0YXRlKSByZXR1cm4gc3VzcGVuc2VTdGF0ZS5kZWh5ZHJhdGVkO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gYXNzZXJ0SXNNb3VudGVkKGZpYmVyKSB7XG4gIGlmIChnZXROZWFyZXN0TW91bnRlZEZpYmVyKGZpYmVyKSAhPT0gZmliZXIpXG4gICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxODgpKTtcbn1cbmZ1bmN0aW9uIGZpbmRDdXJyZW50RmliZXJVc2luZ1Nsb3dQYXRoKGZpYmVyKSB7XG4gIHZhciBhbHRlcm5hdGUgPSBmaWJlci5hbHRlcm5hdGU7XG4gIGlmICghYWx0ZXJuYXRlKSB7XG4gICAgYWx0ZXJuYXRlID0gZ2V0TmVhcmVzdE1vdW50ZWRGaWJlcihmaWJlcik7XG4gICAgaWYgKG51bGwgPT09IGFsdGVybmF0ZSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxODgpKTtcbiAgICByZXR1cm4gYWx0ZXJuYXRlICE9PSBmaWJlciA/IG51bGwgOiBmaWJlcjtcbiAgfVxuICBmb3IgKHZhciBhID0gZmliZXIsIGIgPSBhbHRlcm5hdGU7IDsgKSB7XG4gICAgdmFyIHBhcmVudEEgPSBhLnJldHVybjtcbiAgICBpZiAobnVsbCA9PT0gcGFyZW50QSkgYnJlYWs7XG4gICAgdmFyIHBhcmVudEIgPSBwYXJlbnRBLmFsdGVybmF0ZTtcbiAgICBpZiAobnVsbCA9PT0gcGFyZW50Qikge1xuICAgICAgYiA9IHBhcmVudEEucmV0dXJuO1xuICAgICAgaWYgKG51bGwgIT09IGIpIHtcbiAgICAgICAgYSA9IGI7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgIGlmIChwYXJlbnRBLmNoaWxkID09PSBwYXJlbnRCLmNoaWxkKSB7XG4gICAgICBmb3IgKHBhcmVudEIgPSBwYXJlbnRBLmNoaWxkOyBwYXJlbnRCOyApIHtcbiAgICAgICAgaWYgKHBhcmVudEIgPT09IGEpIHJldHVybiBhc3NlcnRJc01vdW50ZWQocGFyZW50QSksIGZpYmVyO1xuICAgICAgICBpZiAocGFyZW50QiA9PT0gYikgcmV0dXJuIGFzc2VydElzTW91bnRlZChwYXJlbnRBKSwgYWx0ZXJuYXRlO1xuICAgICAgICBwYXJlbnRCID0gcGFyZW50Qi5zaWJsaW5nO1xuICAgICAgfVxuICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxODgpKTtcbiAgICB9XG4gICAgaWYgKGEucmV0dXJuICE9PSBiLnJldHVybikgKGEgPSBwYXJlbnRBKSwgKGIgPSBwYXJlbnRCKTtcbiAgICBlbHNlIHtcbiAgICAgIGZvciAodmFyIGRpZEZpbmRDaGlsZCA9ICExLCBjaGlsZCQyID0gcGFyZW50QS5jaGlsZDsgY2hpbGQkMjsgKSB7XG4gICAgICAgIGlmIChjaGlsZCQyID09PSBhKSB7XG4gICAgICAgICAgZGlkRmluZENoaWxkID0gITA7XG4gICAgICAgICAgYSA9IHBhcmVudEE7XG4gICAgICAgICAgYiA9IHBhcmVudEI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoaWxkJDIgPT09IGIpIHtcbiAgICAgICAgICBkaWRGaW5kQ2hpbGQgPSAhMDtcbiAgICAgICAgICBiID0gcGFyZW50QTtcbiAgICAgICAgICBhID0gcGFyZW50QjtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgICBjaGlsZCQyID0gY2hpbGQkMi5zaWJsaW5nO1xuICAgICAgfVxuICAgICAgaWYgKCFkaWRGaW5kQ2hpbGQpIHtcbiAgICAgICAgZm9yIChjaGlsZCQyID0gcGFyZW50Qi5jaGlsZDsgY2hpbGQkMjsgKSB7XG4gICAgICAgICAgaWYgKGNoaWxkJDIgPT09IGEpIHtcbiAgICAgICAgICAgIGRpZEZpbmRDaGlsZCA9ICEwO1xuICAgICAgICAgICAgYSA9IHBhcmVudEI7XG4gICAgICAgICAgICBiID0gcGFyZW50QTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgICBpZiAoY2hpbGQkMiA9PT0gYikge1xuICAgICAgICAgICAgZGlkRmluZENoaWxkID0gITA7XG4gICAgICAgICAgICBiID0gcGFyZW50QjtcbiAgICAgICAgICAgIGEgPSBwYXJlbnRBO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICAgIGNoaWxkJDIgPSBjaGlsZCQyLnNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKCFkaWRGaW5kQ2hpbGQpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTg5KSk7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChhLmFsdGVybmF0ZSAhPT0gYikgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxOTApKTtcbiAgfVxuICBpZiAoMyAhPT0gYS50YWcpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTg4KSk7XG4gIHJldHVybiBhLnN0YXRlTm9kZS5jdXJyZW50ID09PSBhID8gZmliZXIgOiBhbHRlcm5hdGU7XG59XG5mdW5jdGlvbiBmaW5kQ3VycmVudEhvc3RGaWJlckltcGwobm9kZSkge1xuICB2YXIgdGFnID0gbm9kZS50YWc7XG4gIGlmICg1ID09PSB0YWcgfHwgMjYgPT09IHRhZyB8fCAyNyA9PT0gdGFnIHx8IDYgPT09IHRhZykgcmV0dXJuIG5vZGU7XG4gIGZvciAobm9kZSA9IG5vZGUuY2hpbGQ7IG51bGwgIT09IG5vZGU7ICkge1xuICAgIHRhZyA9IGZpbmRDdXJyZW50SG9zdEZpYmVySW1wbChub2RlKTtcbiAgICBpZiAobnVsbCAhPT0gdGFnKSByZXR1cm4gdGFnO1xuICAgIG5vZGUgPSBub2RlLnNpYmxpbmc7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG52YXIgaXNBcnJheUltcGwgPSBBcnJheS5pc0FycmF5LFxuICBSZWFjdERPTVNoYXJlZEludGVybmFscyA9XG4gICAgUmVhY3RET00uX19ET01fSU5URVJOQUxTX0RPX05PVF9VU0VfT1JfV0FSTl9VU0VSU19USEVZX0NBTk5PVF9VUEdSQURFLFxuICBzaGFyZWROb3RQZW5kaW5nT2JqZWN0ID0ge1xuICAgIHBlbmRpbmc6ICExLFxuICAgIGRhdGE6IG51bGwsXG4gICAgbWV0aG9kOiBudWxsLFxuICAgIGFjdGlvbjogbnVsbFxuICB9LFxuICB2YWx1ZVN0YWNrID0gW10sXG4gIGluZGV4ID0gLTE7XG5mdW5jdGlvbiBjcmVhdGVDdXJzb3IoZGVmYXVsdFZhbHVlKSB7XG4gIHJldHVybiB7IGN1cnJlbnQ6IGRlZmF1bHRWYWx1ZSB9O1xufVxuZnVuY3Rpb24gcG9wKGN1cnNvcikge1xuICAwID4gaW5kZXggfHxcbiAgICAoKGN1cnNvci5jdXJyZW50ID0gdmFsdWVTdGFja1tpbmRleF0pLCAodmFsdWVTdGFja1tpbmRleF0gPSBudWxsKSwgaW5kZXgtLSk7XG59XG5mdW5jdGlvbiBwdXNoKGN1cnNvciwgdmFsdWUpIHtcbiAgaW5kZXgrKztcbiAgdmFsdWVTdGFja1tpbmRleF0gPSBjdXJzb3IuY3VycmVudDtcbiAgY3Vyc29yLmN1cnJlbnQgPSB2YWx1ZTtcbn1cbnZhciBjb250ZXh0U3RhY2tDdXJzb3IgPSBjcmVhdGVDdXJzb3IobnVsbCksXG4gIGNvbnRleHRGaWJlclN0YWNrQ3Vyc29yID0gY3JlYXRlQ3Vyc29yKG51bGwpLFxuICByb290SW5zdGFuY2VTdGFja0N1cnNvciA9IGNyZWF0ZUN1cnNvcihudWxsKSxcbiAgaG9zdFRyYW5zaXRpb25Qcm92aWRlckN1cnNvciA9IGNyZWF0ZUN1cnNvcihudWxsKTtcbmZ1bmN0aW9uIHB1c2hIb3N0Q29udGFpbmVyKGZpYmVyLCBuZXh0Um9vdEluc3RhbmNlKSB7XG4gIHB1c2gocm9vdEluc3RhbmNlU3RhY2tDdXJzb3IsIG5leHRSb290SW5zdGFuY2UpO1xuICBwdXNoKGNvbnRleHRGaWJlclN0YWNrQ3Vyc29yLCBmaWJlcik7XG4gIHB1c2goY29udGV4dFN0YWNrQ3Vyc29yLCBudWxsKTtcbiAgZmliZXIgPSBuZXh0Um9vdEluc3RhbmNlLm5vZGVUeXBlO1xuICBzd2l0Y2ggKGZpYmVyKSB7XG4gICAgY2FzZSA5OlxuICAgIGNhc2UgMTE6XG4gICAgICBuZXh0Um9vdEluc3RhbmNlID0gKG5leHRSb290SW5zdGFuY2UgPSBuZXh0Um9vdEluc3RhbmNlLmRvY3VtZW50RWxlbWVudClcbiAgICAgICAgPyAobmV4dFJvb3RJbnN0YW5jZSA9IG5leHRSb290SW5zdGFuY2UubmFtZXNwYWNlVVJJKVxuICAgICAgICAgID8gZ2V0T3duSG9zdENvbnRleHQobmV4dFJvb3RJbnN0YW5jZSlcbiAgICAgICAgICA6IDBcbiAgICAgICAgOiAwO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChcbiAgICAgICAgKChmaWJlciA9IDggPT09IGZpYmVyID8gbmV4dFJvb3RJbnN0YW5jZS5wYXJlbnROb2RlIDogbmV4dFJvb3RJbnN0YW5jZSksXG4gICAgICAgIChuZXh0Um9vdEluc3RhbmNlID0gZmliZXIudGFnTmFtZSksXG4gICAgICAgIChmaWJlciA9IGZpYmVyLm5hbWVzcGFjZVVSSSkpXG4gICAgICApXG4gICAgICAgIChmaWJlciA9IGdldE93bkhvc3RDb250ZXh0KGZpYmVyKSksXG4gICAgICAgICAgKG5leHRSb290SW5zdGFuY2UgPSBnZXRDaGlsZEhvc3RDb250ZXh0UHJvZChmaWJlciwgbmV4dFJvb3RJbnN0YW5jZSkpO1xuICAgICAgZWxzZVxuICAgICAgICBzd2l0Y2ggKG5leHRSb290SW5zdGFuY2UpIHtcbiAgICAgICAgICBjYXNlIFwic3ZnXCI6XG4gICAgICAgICAgICBuZXh0Um9vdEluc3RhbmNlID0gMTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJtYXRoXCI6XG4gICAgICAgICAgICBuZXh0Um9vdEluc3RhbmNlID0gMjtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBuZXh0Um9vdEluc3RhbmNlID0gMDtcbiAgICAgICAgfVxuICB9XG4gIHBvcChjb250ZXh0U3RhY2tDdXJzb3IpO1xuICBwdXNoKGNvbnRleHRTdGFja0N1cnNvciwgbmV4dFJvb3RJbnN0YW5jZSk7XG59XG5mdW5jdGlvbiBwb3BIb3N0Q29udGFpbmVyKCkge1xuICBwb3AoY29udGV4dFN0YWNrQ3Vyc29yKTtcbiAgcG9wKGNvbnRleHRGaWJlclN0YWNrQ3Vyc29yKTtcbiAgcG9wKHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yKTtcbn1cbmZ1bmN0aW9uIHB1c2hIb3N0Q29udGV4dChmaWJlcikge1xuICBudWxsICE9PSBmaWJlci5tZW1vaXplZFN0YXRlICYmIHB1c2goaG9zdFRyYW5zaXRpb25Qcm92aWRlckN1cnNvciwgZmliZXIpO1xuICB2YXIgY29udGV4dCA9IGNvbnRleHRTdGFja0N1cnNvci5jdXJyZW50O1xuICB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gZ2V0Q2hpbGRIb3N0Q29udGV4dFByb2QoY29udGV4dCwgZmliZXIudHlwZSk7XG4gIGNvbnRleHQgIT09IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmJlxuICAgIChwdXNoKGNvbnRleHRGaWJlclN0YWNrQ3Vyc29yLCBmaWJlciksXG4gICAgcHVzaChjb250ZXh0U3RhY2tDdXJzb3IsIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCkpO1xufVxuZnVuY3Rpb24gcG9wSG9zdENvbnRleHQoZmliZXIpIHtcbiAgY29udGV4dEZpYmVyU3RhY2tDdXJzb3IuY3VycmVudCA9PT0gZmliZXIgJiZcbiAgICAocG9wKGNvbnRleHRTdGFja0N1cnNvciksIHBvcChjb250ZXh0RmliZXJTdGFja0N1cnNvcikpO1xuICBob3N0VHJhbnNpdGlvblByb3ZpZGVyQ3Vyc29yLmN1cnJlbnQgPT09IGZpYmVyICYmXG4gICAgKHBvcChob3N0VHJhbnNpdGlvblByb3ZpZGVyQ3Vyc29yKSxcbiAgICAoSG9zdFRyYW5zaXRpb25Db250ZXh0Ll9jdXJyZW50VmFsdWUgPSBzaGFyZWROb3RQZW5kaW5nT2JqZWN0KSk7XG59XG52YXIgaGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LFxuICBzY2hlZHVsZUNhbGxiYWNrJDMgPSBTY2hlZHVsZXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxcbiAgY2FuY2VsQ2FsbGJhY2skMSA9IFNjaGVkdWxlci51bnN0YWJsZV9jYW5jZWxDYWxsYmFjayxcbiAgc2hvdWxkWWllbGQgPSBTY2hlZHVsZXIudW5zdGFibGVfc2hvdWxkWWllbGQsXG4gIHJlcXVlc3RQYWludCA9IFNjaGVkdWxlci51bnN0YWJsZV9yZXF1ZXN0UGFpbnQsXG4gIG5vdyA9IFNjaGVkdWxlci51bnN0YWJsZV9ub3csXG4gIGdldEN1cnJlbnRQcmlvcml0eUxldmVsID0gU2NoZWR1bGVyLnVuc3RhYmxlX2dldEN1cnJlbnRQcmlvcml0eUxldmVsLFxuICBJbW1lZGlhdGVQcmlvcml0eSA9IFNjaGVkdWxlci51bnN0YWJsZV9JbW1lZGlhdGVQcmlvcml0eSxcbiAgVXNlckJsb2NraW5nUHJpb3JpdHkgPSBTY2hlZHVsZXIudW5zdGFibGVfVXNlckJsb2NraW5nUHJpb3JpdHksXG4gIE5vcm1hbFByaW9yaXR5JDEgPSBTY2hlZHVsZXIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksXG4gIExvd1ByaW9yaXR5ID0gU2NoZWR1bGVyLnVuc3RhYmxlX0xvd1ByaW9yaXR5LFxuICBJZGxlUHJpb3JpdHkgPSBTY2hlZHVsZXIudW5zdGFibGVfSWRsZVByaW9yaXR5LFxuICBsb2ckMSA9IFNjaGVkdWxlci5sb2csXG4gIHVuc3RhYmxlX3NldERpc2FibGVZaWVsZFZhbHVlID0gU2NoZWR1bGVyLnVuc3RhYmxlX3NldERpc2FibGVZaWVsZFZhbHVlLFxuICByZW5kZXJlcklEID0gbnVsbCxcbiAgaW5qZWN0ZWRIb29rID0gbnVsbDtcbmZ1bmN0aW9uIG9uQ29tbWl0Um9vdChyb290KSB7XG4gIGlmIChpbmplY3RlZEhvb2sgJiYgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5qZWN0ZWRIb29rLm9uQ29tbWl0RmliZXJSb290KVxuICAgIHRyeSB7XG4gICAgICBpbmplY3RlZEhvb2sub25Db21taXRGaWJlclJvb3QoXG4gICAgICAgIHJlbmRlcmVySUQsXG4gICAgICAgIHJvb3QsXG4gICAgICAgIHZvaWQgMCxcbiAgICAgICAgMTI4ID09PSAocm9vdC5jdXJyZW50LmZsYWdzICYgMTI4KVxuICAgICAgKTtcbiAgICB9IGNhdGNoIChlcnIpIHt9XG59XG5mdW5jdGlvbiBzZXRJc1N0cmljdE1vZGVGb3JEZXZ0b29scyhuZXdJc1N0cmljdE1vZGUpIHtcbiAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbG9nJDEgJiYgdW5zdGFibGVfc2V0RGlzYWJsZVlpZWxkVmFsdWUobmV3SXNTdHJpY3RNb2RlKTtcbiAgaWYgKGluamVjdGVkSG9vayAmJiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbmplY3RlZEhvb2suc2V0U3RyaWN0TW9kZSlcbiAgICB0cnkge1xuICAgICAgaW5qZWN0ZWRIb29rLnNldFN0cmljdE1vZGUocmVuZGVyZXJJRCwgbmV3SXNTdHJpY3RNb2RlKTtcbiAgICB9IGNhdGNoIChlcnIpIHt9XG59XG52YXIgY2x6MzIgPSBNYXRoLmNsejMyID8gTWF0aC5jbHozMiA6IGNsejMyRmFsbGJhY2ssXG4gIGxvZyA9IE1hdGgubG9nLFxuICBMTjIgPSBNYXRoLkxOMjtcbmZ1bmN0aW9uIGNsejMyRmFsbGJhY2soeCkge1xuICB4ID4+Pj0gMDtcbiAgcmV0dXJuIDAgPT09IHggPyAzMiA6ICgzMSAtICgobG9nKHgpIC8gTE4yKSB8IDApKSB8IDA7XG59XG52YXIgbmV4dFRyYW5zaXRpb25MYW5lID0gMTI4LFxuICBuZXh0UmV0cnlMYW5lID0gNDE5NDMwNDtcbmZ1bmN0aW9uIGdldEhpZ2hlc3RQcmlvcml0eUxhbmVzKGxhbmVzKSB7XG4gIHZhciBwZW5kaW5nU3luY0xhbmVzID0gbGFuZXMgJiA0MjtcbiAgaWYgKDAgIT09IHBlbmRpbmdTeW5jTGFuZXMpIHJldHVybiBwZW5kaW5nU3luY0xhbmVzO1xuICBzd2l0Y2ggKGxhbmVzICYgLWxhbmVzKSB7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIDE7XG4gICAgY2FzZSAyOlxuICAgICAgcmV0dXJuIDI7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIDQ7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIDg7XG4gICAgY2FzZSAxNjpcbiAgICAgIHJldHVybiAxNjtcbiAgICBjYXNlIDMyOlxuICAgICAgcmV0dXJuIDMyO1xuICAgIGNhc2UgNjQ6XG4gICAgICByZXR1cm4gNjQ7XG4gICAgY2FzZSAxMjg6XG4gICAgY2FzZSAyNTY6XG4gICAgY2FzZSA1MTI6XG4gICAgY2FzZSAxMDI0OlxuICAgIGNhc2UgMjA0ODpcbiAgICBjYXNlIDQwOTY6XG4gICAgY2FzZSA4MTkyOlxuICAgIGNhc2UgMTYzODQ6XG4gICAgY2FzZSAzMjc2ODpcbiAgICBjYXNlIDY1NTM2OlxuICAgIGNhc2UgMTMxMDcyOlxuICAgIGNhc2UgMjYyMTQ0OlxuICAgIGNhc2UgNTI0Mjg4OlxuICAgIGNhc2UgMTA0ODU3NjpcbiAgICBjYXNlIDIwOTcxNTI6XG4gICAgICByZXR1cm4gbGFuZXMgJiA0MTk0MTc2O1xuICAgIGNhc2UgNDE5NDMwNDpcbiAgICBjYXNlIDgzODg2MDg6XG4gICAgY2FzZSAxNjc3NzIxNjpcbiAgICBjYXNlIDMzNTU0NDMyOlxuICAgICAgcmV0dXJuIGxhbmVzICYgNjI5MTQ1NjA7XG4gICAgY2FzZSA2NzEwODg2NDpcbiAgICAgIHJldHVybiA2NzEwODg2NDtcbiAgICBjYXNlIDEzNDIxNzcyODpcbiAgICAgIHJldHVybiAxMzQyMTc3Mjg7XG4gICAgY2FzZSAyNjg0MzU0NTY6XG4gICAgICByZXR1cm4gMjY4NDM1NDU2O1xuICAgIGNhc2UgNTM2ODcwOTEyOlxuICAgICAgcmV0dXJuIDUzNjg3MDkxMjtcbiAgICBjYXNlIDEwNzM3NDE4MjQ6XG4gICAgICByZXR1cm4gMDtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGxhbmVzO1xuICB9XG59XG5mdW5jdGlvbiBnZXROZXh0TGFuZXMocm9vdCwgd2lwTGFuZXMpIHtcbiAgdmFyIHBlbmRpbmdMYW5lcyA9IHJvb3QucGVuZGluZ0xhbmVzO1xuICBpZiAoMCA9PT0gcGVuZGluZ0xhbmVzKSByZXR1cm4gMDtcbiAgdmFyIG5leHRMYW5lcyA9IDAsXG4gICAgc3VzcGVuZGVkTGFuZXMgPSByb290LnN1c3BlbmRlZExhbmVzLFxuICAgIHBpbmdlZExhbmVzID0gcm9vdC5waW5nZWRMYW5lcyxcbiAgICB3YXJtTGFuZXMgPSByb290Lndhcm1MYW5lcztcbiAgcm9vdCA9IDAgIT09IHJvb3QuZmluaXNoZWRMYW5lcztcbiAgdmFyIG5vbklkbGVQZW5kaW5nTGFuZXMgPSBwZW5kaW5nTGFuZXMgJiAxMzQyMTc3Mjc7XG4gIDAgIT09IG5vbklkbGVQZW5kaW5nTGFuZXNcbiAgICA/ICgocGVuZGluZ0xhbmVzID0gbm9uSWRsZVBlbmRpbmdMYW5lcyAmIH5zdXNwZW5kZWRMYW5lcyksXG4gICAgICAwICE9PSBwZW5kaW5nTGFuZXNcbiAgICAgICAgPyAobmV4dExhbmVzID0gZ2V0SGlnaGVzdFByaW9yaXR5TGFuZXMocGVuZGluZ0xhbmVzKSlcbiAgICAgICAgOiAoKHBpbmdlZExhbmVzICY9IG5vbklkbGVQZW5kaW5nTGFuZXMpLFxuICAgICAgICAgIDAgIT09IHBpbmdlZExhbmVzXG4gICAgICAgICAgICA/IChuZXh0TGFuZXMgPSBnZXRIaWdoZXN0UHJpb3JpdHlMYW5lcyhwaW5nZWRMYW5lcykpXG4gICAgICAgICAgICA6IHJvb3QgfHxcbiAgICAgICAgICAgICAgKCh3YXJtTGFuZXMgPSBub25JZGxlUGVuZGluZ0xhbmVzICYgfndhcm1MYW5lcyksXG4gICAgICAgICAgICAgIDAgIT09IHdhcm1MYW5lcyAmJlxuICAgICAgICAgICAgICAgIChuZXh0TGFuZXMgPSBnZXRIaWdoZXN0UHJpb3JpdHlMYW5lcyh3YXJtTGFuZXMpKSkpKVxuICAgIDogKChub25JZGxlUGVuZGluZ0xhbmVzID0gcGVuZGluZ0xhbmVzICYgfnN1c3BlbmRlZExhbmVzKSxcbiAgICAgIDAgIT09IG5vbklkbGVQZW5kaW5nTGFuZXNcbiAgICAgICAgPyAobmV4dExhbmVzID0gZ2V0SGlnaGVzdFByaW9yaXR5TGFuZXMobm9uSWRsZVBlbmRpbmdMYW5lcykpXG4gICAgICAgIDogMCAhPT0gcGluZ2VkTGFuZXNcbiAgICAgICAgICA/IChuZXh0TGFuZXMgPSBnZXRIaWdoZXN0UHJpb3JpdHlMYW5lcyhwaW5nZWRMYW5lcykpXG4gICAgICAgICAgOiByb290IHx8XG4gICAgICAgICAgICAoKHdhcm1MYW5lcyA9IHBlbmRpbmdMYW5lcyAmIH53YXJtTGFuZXMpLFxuICAgICAgICAgICAgMCAhPT0gd2FybUxhbmVzICYmXG4gICAgICAgICAgICAgIChuZXh0TGFuZXMgPSBnZXRIaWdoZXN0UHJpb3JpdHlMYW5lcyh3YXJtTGFuZXMpKSkpO1xuICByZXR1cm4gMCA9PT0gbmV4dExhbmVzXG4gICAgPyAwXG4gICAgOiAwICE9PSB3aXBMYW5lcyAmJlxuICAgICAgICB3aXBMYW5lcyAhPT0gbmV4dExhbmVzICYmXG4gICAgICAgIDAgPT09ICh3aXBMYW5lcyAmIHN1c3BlbmRlZExhbmVzKSAmJlxuICAgICAgICAoKHN1c3BlbmRlZExhbmVzID0gbmV4dExhbmVzICYgLW5leHRMYW5lcyksXG4gICAgICAgICh3YXJtTGFuZXMgPSB3aXBMYW5lcyAmIC13aXBMYW5lcyksXG4gICAgICAgIHN1c3BlbmRlZExhbmVzID49IHdhcm1MYW5lcyB8fFxuICAgICAgICAgICgzMiA9PT0gc3VzcGVuZGVkTGFuZXMgJiYgMCAhPT0gKHdhcm1MYW5lcyAmIDQxOTQxNzYpKSlcbiAgICAgID8gd2lwTGFuZXNcbiAgICAgIDogbmV4dExhbmVzO1xufVxuZnVuY3Rpb24gY2hlY2tJZlJvb3RJc1ByZXJlbmRlcmluZyhyb290LCByZW5kZXJMYW5lcykge1xuICByZXR1cm4gKFxuICAgIDAgPT09XG4gICAgKHJvb3QucGVuZGluZ0xhbmVzICZcbiAgICAgIH4ocm9vdC5zdXNwZW5kZWRMYW5lcyAmIH5yb290LnBpbmdlZExhbmVzKSAmXG4gICAgICByZW5kZXJMYW5lcylcbiAgKTtcbn1cbmZ1bmN0aW9uIGNvbXB1dGVFeHBpcmF0aW9uVGltZShsYW5lLCBjdXJyZW50VGltZSkge1xuICBzd2l0Y2ggKGxhbmUpIHtcbiAgICBjYXNlIDE6XG4gICAgY2FzZSAyOlxuICAgIGNhc2UgNDpcbiAgICBjYXNlIDg6XG4gICAgICByZXR1cm4gY3VycmVudFRpbWUgKyAyNTA7XG4gICAgY2FzZSAxNjpcbiAgICBjYXNlIDMyOlxuICAgIGNhc2UgNjQ6XG4gICAgY2FzZSAxMjg6XG4gICAgY2FzZSAyNTY6XG4gICAgY2FzZSA1MTI6XG4gICAgY2FzZSAxMDI0OlxuICAgIGNhc2UgMjA0ODpcbiAgICBjYXNlIDQwOTY6XG4gICAgY2FzZSA4MTkyOlxuICAgIGNhc2UgMTYzODQ6XG4gICAgY2FzZSAzMjc2ODpcbiAgICBjYXNlIDY1NTM2OlxuICAgIGNhc2UgMTMxMDcyOlxuICAgIGNhc2UgMjYyMTQ0OlxuICAgIGNhc2UgNTI0Mjg4OlxuICAgIGNhc2UgMTA0ODU3NjpcbiAgICBjYXNlIDIwOTcxNTI6XG4gICAgICByZXR1cm4gY3VycmVudFRpbWUgKyA1ZTM7XG4gICAgY2FzZSA0MTk0MzA0OlxuICAgIGNhc2UgODM4ODYwODpcbiAgICBjYXNlIDE2Nzc3MjE2OlxuICAgIGNhc2UgMzM1NTQ0MzI6XG4gICAgICByZXR1cm4gLTE7XG4gICAgY2FzZSA2NzEwODg2NDpcbiAgICBjYXNlIDEzNDIxNzcyODpcbiAgICBjYXNlIDI2ODQzNTQ1NjpcbiAgICBjYXNlIDUzNjg3MDkxMjpcbiAgICBjYXNlIDEwNzM3NDE4MjQ6XG4gICAgICByZXR1cm4gLTE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAtMTtcbiAgfVxufVxuZnVuY3Rpb24gY2xhaW1OZXh0VHJhbnNpdGlvbkxhbmUoKSB7XG4gIHZhciBsYW5lID0gbmV4dFRyYW5zaXRpb25MYW5lO1xuICBuZXh0VHJhbnNpdGlvbkxhbmUgPDw9IDE7XG4gIDAgPT09IChuZXh0VHJhbnNpdGlvbkxhbmUgJiA0MTk0MTc2KSAmJiAobmV4dFRyYW5zaXRpb25MYW5lID0gMTI4KTtcbiAgcmV0dXJuIGxhbmU7XG59XG5mdW5jdGlvbiBjbGFpbU5leHRSZXRyeUxhbmUoKSB7XG4gIHZhciBsYW5lID0gbmV4dFJldHJ5TGFuZTtcbiAgbmV4dFJldHJ5TGFuZSA8PD0gMTtcbiAgMCA9PT0gKG5leHRSZXRyeUxhbmUgJiA2MjkxNDU2MCkgJiYgKG5leHRSZXRyeUxhbmUgPSA0MTk0MzA0KTtcbiAgcmV0dXJuIGxhbmU7XG59XG5mdW5jdGlvbiBjcmVhdGVMYW5lTWFwKGluaXRpYWwpIHtcbiAgZm9yICh2YXIgbGFuZU1hcCA9IFtdLCBpID0gMDsgMzEgPiBpOyBpKyspIGxhbmVNYXAucHVzaChpbml0aWFsKTtcbiAgcmV0dXJuIGxhbmVNYXA7XG59XG5mdW5jdGlvbiBtYXJrUm9vdFVwZGF0ZWQkMShyb290LCB1cGRhdGVMYW5lKSB7XG4gIHJvb3QucGVuZGluZ0xhbmVzIHw9IHVwZGF0ZUxhbmU7XG4gIDI2ODQzNTQ1NiAhPT0gdXBkYXRlTGFuZSAmJlxuICAgICgocm9vdC5zdXNwZW5kZWRMYW5lcyA9IDApLCAocm9vdC5waW5nZWRMYW5lcyA9IDApLCAocm9vdC53YXJtTGFuZXMgPSAwKSk7XG59XG5mdW5jdGlvbiBtYXJrUm9vdEZpbmlzaGVkKFxuICByb290LFxuICBmaW5pc2hlZExhbmVzLFxuICByZW1haW5pbmdMYW5lcyxcbiAgc3Bhd25lZExhbmUsXG4gIHVwZGF0ZWRMYW5lcyxcbiAgc3VzcGVuZGVkUmV0cnlMYW5lc1xuKSB7XG4gIHZhciBwcmV2aW91c2x5UGVuZGluZ0xhbmVzID0gcm9vdC5wZW5kaW5nTGFuZXM7XG4gIHJvb3QucGVuZGluZ0xhbmVzID0gcmVtYWluaW5nTGFuZXM7XG4gIHJvb3Quc3VzcGVuZGVkTGFuZXMgPSAwO1xuICByb290LnBpbmdlZExhbmVzID0gMDtcbiAgcm9vdC53YXJtTGFuZXMgPSAwO1xuICByb290LmV4cGlyZWRMYW5lcyAmPSByZW1haW5pbmdMYW5lcztcbiAgcm9vdC5lbnRhbmdsZWRMYW5lcyAmPSByZW1haW5pbmdMYW5lcztcbiAgcm9vdC5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyAmPSByZW1haW5pbmdMYW5lcztcbiAgcm9vdC5zaGVsbFN1c3BlbmRDb3VudGVyID0gMDtcbiAgdmFyIGVudGFuZ2xlbWVudHMgPSByb290LmVudGFuZ2xlbWVudHMsXG4gICAgZXhwaXJhdGlvblRpbWVzID0gcm9vdC5leHBpcmF0aW9uVGltZXMsXG4gICAgaGlkZGVuVXBkYXRlcyA9IHJvb3QuaGlkZGVuVXBkYXRlcztcbiAgZm9yIChcbiAgICByZW1haW5pbmdMYW5lcyA9IHByZXZpb3VzbHlQZW5kaW5nTGFuZXMgJiB+cmVtYWluaW5nTGFuZXM7XG4gICAgMCA8IHJlbWFpbmluZ0xhbmVzO1xuXG4gICkge1xuICAgIHZhciBpbmRleCQ3ID0gMzEgLSBjbHozMihyZW1haW5pbmdMYW5lcyksXG4gICAgICBsYW5lID0gMSA8PCBpbmRleCQ3O1xuICAgIGVudGFuZ2xlbWVudHNbaW5kZXgkN10gPSAwO1xuICAgIGV4cGlyYXRpb25UaW1lc1tpbmRleCQ3XSA9IC0xO1xuICAgIHZhciBoaWRkZW5VcGRhdGVzRm9yTGFuZSA9IGhpZGRlblVwZGF0ZXNbaW5kZXgkN107XG4gICAgaWYgKG51bGwgIT09IGhpZGRlblVwZGF0ZXNGb3JMYW5lKVxuICAgICAgZm9yIChcbiAgICAgICAgaGlkZGVuVXBkYXRlc1tpbmRleCQ3XSA9IG51bGwsIGluZGV4JDcgPSAwO1xuICAgICAgICBpbmRleCQ3IDwgaGlkZGVuVXBkYXRlc0ZvckxhbmUubGVuZ3RoO1xuICAgICAgICBpbmRleCQ3KytcbiAgICAgICkge1xuICAgICAgICB2YXIgdXBkYXRlID0gaGlkZGVuVXBkYXRlc0ZvckxhbmVbaW5kZXgkN107XG4gICAgICAgIG51bGwgIT09IHVwZGF0ZSAmJiAodXBkYXRlLmxhbmUgJj0gLTUzNjg3MDkxMyk7XG4gICAgICB9XG4gICAgcmVtYWluaW5nTGFuZXMgJj0gfmxhbmU7XG4gIH1cbiAgMCAhPT0gc3Bhd25lZExhbmUgJiYgbWFya1NwYXduZWREZWZlcnJlZExhbmUocm9vdCwgc3Bhd25lZExhbmUsIDApO1xuICAwICE9PSBzdXNwZW5kZWRSZXRyeUxhbmVzICYmXG4gICAgMCA9PT0gdXBkYXRlZExhbmVzICYmXG4gICAgMCAhPT0gcm9vdC50YWcgJiZcbiAgICAocm9vdC5zdXNwZW5kZWRMYW5lcyB8PVxuICAgICAgc3VzcGVuZGVkUmV0cnlMYW5lcyAmIH4ocHJldmlvdXNseVBlbmRpbmdMYW5lcyAmIH5maW5pc2hlZExhbmVzKSk7XG59XG5mdW5jdGlvbiBtYXJrU3Bhd25lZERlZmVycmVkTGFuZShyb290LCBzcGF3bmVkTGFuZSwgZW50YW5nbGVkTGFuZXMpIHtcbiAgcm9vdC5wZW5kaW5nTGFuZXMgfD0gc3Bhd25lZExhbmU7XG4gIHJvb3Quc3VzcGVuZGVkTGFuZXMgJj0gfnNwYXduZWRMYW5lO1xuICB2YXIgc3Bhd25lZExhbmVJbmRleCA9IDMxIC0gY2x6MzIoc3Bhd25lZExhbmUpO1xuICByb290LmVudGFuZ2xlZExhbmVzIHw9IHNwYXduZWRMYW5lO1xuICByb290LmVudGFuZ2xlbWVudHNbc3Bhd25lZExhbmVJbmRleF0gPVxuICAgIHJvb3QuZW50YW5nbGVtZW50c1tzcGF3bmVkTGFuZUluZGV4XSB8XG4gICAgMTA3Mzc0MTgyNCB8XG4gICAgKGVudGFuZ2xlZExhbmVzICYgNDE5NDIxOCk7XG59XG5mdW5jdGlvbiBtYXJrUm9vdEVudGFuZ2xlZChyb290LCBlbnRhbmdsZWRMYW5lcykge1xuICB2YXIgcm9vdEVudGFuZ2xlZExhbmVzID0gKHJvb3QuZW50YW5nbGVkTGFuZXMgfD0gZW50YW5nbGVkTGFuZXMpO1xuICBmb3IgKHJvb3QgPSByb290LmVudGFuZ2xlbWVudHM7IHJvb3RFbnRhbmdsZWRMYW5lczsgKSB7XG4gICAgdmFyIGluZGV4JDggPSAzMSAtIGNsejMyKHJvb3RFbnRhbmdsZWRMYW5lcyksXG4gICAgICBsYW5lID0gMSA8PCBpbmRleCQ4O1xuICAgIChsYW5lICYgZW50YW5nbGVkTGFuZXMpIHwgKHJvb3RbaW5kZXgkOF0gJiBlbnRhbmdsZWRMYW5lcykgJiZcbiAgICAgIChyb290W2luZGV4JDhdIHw9IGVudGFuZ2xlZExhbmVzKTtcbiAgICByb290RW50YW5nbGVkTGFuZXMgJj0gfmxhbmU7XG4gIH1cbn1cbmZ1bmN0aW9uIGxhbmVzVG9FdmVudFByaW9yaXR5KGxhbmVzKSB7XG4gIGxhbmVzICY9IC1sYW5lcztcbiAgcmV0dXJuIDIgPCBsYW5lc1xuICAgID8gOCA8IGxhbmVzXG4gICAgICA/IDAgIT09IChsYW5lcyAmIDEzNDIxNzcyNylcbiAgICAgICAgPyAzMlxuICAgICAgICA6IDI2ODQzNTQ1NlxuICAgICAgOiA4XG4gICAgOiAyO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVVwZGF0ZVByaW9yaXR5KCkge1xuICB2YXIgdXBkYXRlUHJpb3JpdHkgPSBSZWFjdERPTVNoYXJlZEludGVybmFscy5wO1xuICBpZiAoMCAhPT0gdXBkYXRlUHJpb3JpdHkpIHJldHVybiB1cGRhdGVQcmlvcml0eTtcbiAgdXBkYXRlUHJpb3JpdHkgPSB3aW5kb3cuZXZlbnQ7XG4gIHJldHVybiB2b2lkIDAgPT09IHVwZGF0ZVByaW9yaXR5ID8gMzIgOiBnZXRFdmVudFByaW9yaXR5KHVwZGF0ZVByaW9yaXR5LnR5cGUpO1xufVxuZnVuY3Rpb24gcnVuV2l0aFByaW9yaXR5KHByaW9yaXR5LCBmbikge1xuICB2YXIgcHJldmlvdXNQcmlvcml0eSA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnA7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChSZWFjdERPTVNoYXJlZEludGVybmFscy5wID0gcHJpb3JpdHkpLCBmbigpO1xuICB9IGZpbmFsbHkge1xuICAgIFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnAgPSBwcmV2aW91c1ByaW9yaXR5O1xuICB9XG59XG52YXIgcmFuZG9tS2V5ID0gTWF0aC5yYW5kb20oKS50b1N0cmluZygzNikuc2xpY2UoMiksXG4gIGludGVybmFsSW5zdGFuY2VLZXkgPSBcIl9fcmVhY3RGaWJlciRcIiArIHJhbmRvbUtleSxcbiAgaW50ZXJuYWxQcm9wc0tleSA9IFwiX19yZWFjdFByb3BzJFwiICsgcmFuZG9tS2V5LFxuICBpbnRlcm5hbENvbnRhaW5lckluc3RhbmNlS2V5ID0gXCJfX3JlYWN0Q29udGFpbmVyJFwiICsgcmFuZG9tS2V5LFxuICBpbnRlcm5hbEV2ZW50SGFuZGxlcnNLZXkgPSBcIl9fcmVhY3RFdmVudHMkXCIgKyByYW5kb21LZXksXG4gIGludGVybmFsRXZlbnRIYW5kbGVyTGlzdGVuZXJzS2V5ID0gXCJfX3JlYWN0TGlzdGVuZXJzJFwiICsgcmFuZG9tS2V5LFxuICBpbnRlcm5hbEV2ZW50SGFuZGxlc1NldEtleSA9IFwiX19yZWFjdEhhbmRsZXMkXCIgKyByYW5kb21LZXksXG4gIGludGVybmFsUm9vdE5vZGVSZXNvdXJjZXNLZXkgPSBcIl9fcmVhY3RSZXNvdXJjZXMkXCIgKyByYW5kb21LZXksXG4gIGludGVybmFsSG9pc3RhYmxlTWFya2VyID0gXCJfX3JlYWN0TWFya2VyJFwiICsgcmFuZG9tS2V5O1xuZnVuY3Rpb24gZGV0YWNoRGVsZXRlZEluc3RhbmNlKG5vZGUpIHtcbiAgZGVsZXRlIG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV07XG4gIGRlbGV0ZSBub2RlW2ludGVybmFsUHJvcHNLZXldO1xuICBkZWxldGUgbm9kZVtpbnRlcm5hbEV2ZW50SGFuZGxlcnNLZXldO1xuICBkZWxldGUgbm9kZVtpbnRlcm5hbEV2ZW50SGFuZGxlckxpc3RlbmVyc0tleV07XG4gIGRlbGV0ZSBub2RlW2ludGVybmFsRXZlbnRIYW5kbGVzU2V0S2V5XTtcbn1cbmZ1bmN0aW9uIGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHRhcmdldE5vZGUpIHtcbiAgdmFyIHRhcmdldEluc3QgPSB0YXJnZXROb2RlW2ludGVybmFsSW5zdGFuY2VLZXldO1xuICBpZiAodGFyZ2V0SW5zdCkgcmV0dXJuIHRhcmdldEluc3Q7XG4gIGZvciAodmFyIHBhcmVudE5vZGUgPSB0YXJnZXROb2RlLnBhcmVudE5vZGU7IHBhcmVudE5vZGU7ICkge1xuICAgIGlmIChcbiAgICAgICh0YXJnZXRJbnN0ID1cbiAgICAgICAgcGFyZW50Tm9kZVtpbnRlcm5hbENvbnRhaW5lckluc3RhbmNlS2V5XSB8fFxuICAgICAgICBwYXJlbnROb2RlW2ludGVybmFsSW5zdGFuY2VLZXldKVxuICAgICkge1xuICAgICAgcGFyZW50Tm9kZSA9IHRhcmdldEluc3QuYWx0ZXJuYXRlO1xuICAgICAgaWYgKFxuICAgICAgICBudWxsICE9PSB0YXJnZXRJbnN0LmNoaWxkIHx8XG4gICAgICAgIChudWxsICE9PSBwYXJlbnROb2RlICYmIG51bGwgIT09IHBhcmVudE5vZGUuY2hpbGQpXG4gICAgICApXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdGFyZ2V0Tm9kZSA9IGdldFBhcmVudFN1c3BlbnNlSW5zdGFuY2UodGFyZ2V0Tm9kZSk7XG4gICAgICAgICAgbnVsbCAhPT0gdGFyZ2V0Tm9kZTtcblxuICAgICAgICApIHtcbiAgICAgICAgICBpZiAoKHBhcmVudE5vZGUgPSB0YXJnZXROb2RlW2ludGVybmFsSW5zdGFuY2VLZXldKSkgcmV0dXJuIHBhcmVudE5vZGU7XG4gICAgICAgICAgdGFyZ2V0Tm9kZSA9IGdldFBhcmVudFN1c3BlbnNlSW5zdGFuY2UodGFyZ2V0Tm9kZSk7XG4gICAgICAgIH1cbiAgICAgIHJldHVybiB0YXJnZXRJbnN0O1xuICAgIH1cbiAgICB0YXJnZXROb2RlID0gcGFyZW50Tm9kZTtcbiAgICBwYXJlbnROb2RlID0gdGFyZ2V0Tm9kZS5wYXJlbnROb2RlO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0SW5zdGFuY2VGcm9tTm9kZShub2RlKSB7XG4gIGlmIChcbiAgICAobm9kZSA9IG5vZGVbaW50ZXJuYWxJbnN0YW5jZUtleV0gfHwgbm9kZVtpbnRlcm5hbENvbnRhaW5lckluc3RhbmNlS2V5XSlcbiAgKSB7XG4gICAgdmFyIHRhZyA9IG5vZGUudGFnO1xuICAgIGlmIChcbiAgICAgIDUgPT09IHRhZyB8fFxuICAgICAgNiA9PT0gdGFnIHx8XG4gICAgICAxMyA9PT0gdGFnIHx8XG4gICAgICAyNiA9PT0gdGFnIHx8XG4gICAgICAyNyA9PT0gdGFnIHx8XG4gICAgICAzID09PSB0YWdcbiAgICApXG4gICAgICByZXR1cm4gbm9kZTtcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbmZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkge1xuICB2YXIgdGFnID0gaW5zdC50YWc7XG4gIGlmICg1ID09PSB0YWcgfHwgMjYgPT09IHRhZyB8fCAyNyA9PT0gdGFnIHx8IDYgPT09IHRhZykgcmV0dXJuIGluc3Quc3RhdGVOb2RlO1xuICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMzKSk7XG59XG5mdW5jdGlvbiBnZXRSZXNvdXJjZXNGcm9tUm9vdChyb290KSB7XG4gIHZhciByZXNvdXJjZXMgPSByb290W2ludGVybmFsUm9vdE5vZGVSZXNvdXJjZXNLZXldO1xuICByZXNvdXJjZXMgfHxcbiAgICAocmVzb3VyY2VzID0gcm9vdFtpbnRlcm5hbFJvb3ROb2RlUmVzb3VyY2VzS2V5XSA9XG4gICAgICB7IGhvaXN0YWJsZVN0eWxlczogbmV3IE1hcCgpLCBob2lzdGFibGVTY3JpcHRzOiBuZXcgTWFwKCkgfSk7XG4gIHJldHVybiByZXNvdXJjZXM7XG59XG5mdW5jdGlvbiBtYXJrTm9kZUFzSG9pc3RhYmxlKG5vZGUpIHtcbiAgbm9kZVtpbnRlcm5hbEhvaXN0YWJsZU1hcmtlcl0gPSAhMDtcbn1cbnZhciBhbGxOYXRpdmVFdmVudHMgPSBuZXcgU2V0KCksXG4gIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXMgPSB7fTtcbmZ1bmN0aW9uIHJlZ2lzdGVyVHdvUGhhc2VFdmVudChyZWdpc3RyYXRpb25OYW1lLCBkZXBlbmRlbmNpZXMpIHtcbiAgcmVnaXN0ZXJEaXJlY3RFdmVudChyZWdpc3RyYXRpb25OYW1lLCBkZXBlbmRlbmNpZXMpO1xuICByZWdpc3RlckRpcmVjdEV2ZW50KHJlZ2lzdHJhdGlvbk5hbWUgKyBcIkNhcHR1cmVcIiwgZGVwZW5kZW5jaWVzKTtcbn1cbmZ1bmN0aW9uIHJlZ2lzdGVyRGlyZWN0RXZlbnQocmVnaXN0cmF0aW9uTmFtZSwgZGVwZW5kZW5jaWVzKSB7XG4gIHJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXNbcmVnaXN0cmF0aW9uTmFtZV0gPSBkZXBlbmRlbmNpZXM7XG4gIGZvciAoXG4gICAgcmVnaXN0cmF0aW9uTmFtZSA9IDA7XG4gICAgcmVnaXN0cmF0aW9uTmFtZSA8IGRlcGVuZGVuY2llcy5sZW5ndGg7XG4gICAgcmVnaXN0cmF0aW9uTmFtZSsrXG4gIClcbiAgICBhbGxOYXRpdmVFdmVudHMuYWRkKGRlcGVuZGVuY2llc1tyZWdpc3RyYXRpb25OYW1lXSk7XG59XG52YXIgY2FuVXNlRE9NID0gIShcbiAgICBcInVuZGVmaW5lZFwiID09PSB0eXBlb2Ygd2luZG93IHx8XG4gICAgXCJ1bmRlZmluZWRcIiA9PT0gdHlwZW9mIHdpbmRvdy5kb2N1bWVudCB8fFxuICAgIFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiB3aW5kb3cuZG9jdW1lbnQuY3JlYXRlRWxlbWVudFxuICApLFxuICBWQUxJRF9BVFRSSUJVVEVfTkFNRV9SRUdFWCA9IFJlZ0V4cChcbiAgICBcIl5bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRF1bOkEtWl9hLXpcXFxcdTAwQzAtXFxcXHUwMEQ2XFxcXHUwMEQ4LVxcXFx1MDBGNlxcXFx1MDBGOC1cXFxcdTAyRkZcXFxcdTAzNzAtXFxcXHUwMzdEXFxcXHUwMzdGLVxcXFx1MUZGRlxcXFx1MjAwQy1cXFxcdTIwMERcXFxcdTIwNzAtXFxcXHUyMThGXFxcXHUyQzAwLVxcXFx1MkZFRlxcXFx1MzAwMS1cXFxcdUQ3RkZcXFxcdUY5MDAtXFxcXHVGRENGXFxcXHVGREYwLVxcXFx1RkZGRFxcXFwtLjAtOVxcXFx1MDBCN1xcXFx1MDMwMC1cXFxcdTAzNkZcXFxcdTIwM0YtXFxcXHUyMDQwXSokXCJcbiAgKSxcbiAgaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSA9IHt9LFxuICB2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUgPSB7fTtcbmZ1bmN0aW9uIGlzQXR0cmlidXRlTmFtZVNhZmUoYXR0cmlidXRlTmFtZSkge1xuICBpZiAoaGFzT3duUHJvcGVydHkuY2FsbCh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUsIGF0dHJpYnV0ZU5hbWUpKVxuICAgIHJldHVybiAhMDtcbiAgaWYgKGhhc093blByb3BlcnR5LmNhbGwoaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSwgYXR0cmlidXRlTmFtZSkpIHJldHVybiAhMTtcbiAgaWYgKFZBTElEX0FUVFJJQlVURV9OQU1FX1JFR0VYLnRlc3QoYXR0cmlidXRlTmFtZSkpXG4gICAgcmV0dXJuICh2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSAhMCk7XG4gIGlsbGVnYWxBdHRyaWJ1dGVOYW1lQ2FjaGVbYXR0cmlidXRlTmFtZV0gPSAhMDtcbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gc2V0VmFsdWVGb3JBdHRyaWJ1dGUobm9kZSwgbmFtZSwgdmFsdWUpIHtcbiAgaWYgKGlzQXR0cmlidXRlTmFtZVNhZmUobmFtZSkpXG4gICAgaWYgKG51bGwgPT09IHZhbHVlKSBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICBlbHNlIHtcbiAgICAgIHN3aXRjaCAodHlwZW9mIHZhbHVlKSB7XG4gICAgICAgIGNhc2UgXCJ1bmRlZmluZWRcIjpcbiAgICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICAgIGNhc2UgXCJzeW1ib2xcIjpcbiAgICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNhc2UgXCJib29sZWFuXCI6XG4gICAgICAgICAgdmFyIHByZWZpeCQxMCA9IG5hbWUudG9Mb3dlckNhc2UoKS5zbGljZSgwLCA1KTtcbiAgICAgICAgICBpZiAoXCJkYXRhLVwiICE9PSBwcmVmaXgkMTAgJiYgXCJhcmlhLVwiICE9PSBwcmVmaXgkMTApIHtcbiAgICAgICAgICAgIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5vZGUuc2V0QXR0cmlidXRlKG5hbWUsIFwiXCIgKyB2YWx1ZSk7XG4gICAgfVxufVxuZnVuY3Rpb24gc2V0VmFsdWVGb3JLbm93bkF0dHJpYnV0ZShub2RlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAobnVsbCA9PT0gdmFsdWUpIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBub2RlLnNldEF0dHJpYnV0ZShuYW1lLCBcIlwiICsgdmFsdWUpO1xuICB9XG59XG5mdW5jdGlvbiBzZXRWYWx1ZUZvck5hbWVzcGFjZWRBdHRyaWJ1dGUobm9kZSwgbmFtZXNwYWNlLCBuYW1lLCB2YWx1ZSkge1xuICBpZiAobnVsbCA9PT0gdmFsdWUpIG5vZGUucmVtb3ZlQXR0cmlidXRlKG5hbWUpO1xuICBlbHNlIHtcbiAgICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgY2FzZSBcImZ1bmN0aW9uXCI6XG4gICAgICBjYXNlIFwic3ltYm9sXCI6XG4gICAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgICAgICBub2RlLnJlbW92ZUF0dHJpYnV0ZShuYW1lKTtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBub2RlLnNldEF0dHJpYnV0ZU5TKG5hbWVzcGFjZSwgbmFtZSwgXCJcIiArIHZhbHVlKTtcbiAgfVxufVxuZnVuY3Rpb24gZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSkge1xuICBzd2l0Y2ggKHR5cGVvZiB2YWx1ZSkge1xuICAgIGNhc2UgXCJiaWdpbnRcIjpcbiAgICBjYXNlIFwiYm9vbGVhblwiOlxuICAgIGNhc2UgXCJudW1iZXJcIjpcbiAgICBjYXNlIFwic3RyaW5nXCI6XG4gICAgY2FzZSBcInVuZGVmaW5lZFwiOlxuICAgICAgcmV0dXJuIHZhbHVlO1xuICAgIGNhc2UgXCJvYmplY3RcIjpcbiAgICAgIHJldHVybiB2YWx1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIFwiXCI7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzQ2hlY2thYmxlKGVsZW0pIHtcbiAgdmFyIHR5cGUgPSBlbGVtLnR5cGU7XG4gIHJldHVybiAoXG4gICAgKGVsZW0gPSBlbGVtLm5vZGVOYW1lKSAmJlxuICAgIFwiaW5wdXRcIiA9PT0gZWxlbS50b0xvd2VyQ2FzZSgpICYmXG4gICAgKFwiY2hlY2tib3hcIiA9PT0gdHlwZSB8fCBcInJhZGlvXCIgPT09IHR5cGUpXG4gICk7XG59XG5mdW5jdGlvbiB0cmFja1ZhbHVlT25Ob2RlKG5vZGUpIHtcbiAgdmFyIHZhbHVlRmllbGQgPSBpc0NoZWNrYWJsZShub2RlKSA/IFwiY2hlY2tlZFwiIDogXCJ2YWx1ZVwiLFxuICAgIGRlc2NyaXB0b3IgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFxuICAgICAgbm9kZS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsXG4gICAgICB2YWx1ZUZpZWxkXG4gICAgKSxcbiAgICBjdXJyZW50VmFsdWUgPSBcIlwiICsgbm9kZVt2YWx1ZUZpZWxkXTtcbiAgaWYgKFxuICAgICFub2RlLmhhc093blByb3BlcnR5KHZhbHVlRmllbGQpICYmXG4gICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIGRlc2NyaXB0b3IgJiZcbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBkZXNjcmlwdG9yLmdldCAmJlxuICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGRlc2NyaXB0b3Iuc2V0XG4gICkge1xuICAgIHZhciBnZXQgPSBkZXNjcmlwdG9yLmdldCxcbiAgICAgIHNldCA9IGRlc2NyaXB0b3Iuc2V0O1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShub2RlLCB2YWx1ZUZpZWxkLCB7XG4gICAgICBjb25maWd1cmFibGU6ICEwLFxuICAgICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBnZXQuY2FsbCh0aGlzKTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPSBcIlwiICsgdmFsdWU7XG4gICAgICAgIHNldC5jYWxsKHRoaXMsIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobm9kZSwgdmFsdWVGaWVsZCwge1xuICAgICAgZW51bWVyYWJsZTogZGVzY3JpcHRvci5lbnVtZXJhYmxlXG4gICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIGdldFZhbHVlOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBjdXJyZW50VmFsdWU7XG4gICAgICB9LFxuICAgICAgc2V0VmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBjdXJyZW50VmFsdWUgPSBcIlwiICsgdmFsdWU7XG4gICAgICB9LFxuICAgICAgc3RvcFRyYWNraW5nOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIG5vZGUuX3ZhbHVlVHJhY2tlciA9IG51bGw7XG4gICAgICAgIGRlbGV0ZSBub2RlW3ZhbHVlRmllbGRdO1xuICAgICAgfVxuICAgIH07XG4gIH1cbn1cbmZ1bmN0aW9uIHRyYWNrKG5vZGUpIHtcbiAgbm9kZS5fdmFsdWVUcmFja2VyIHx8IChub2RlLl92YWx1ZVRyYWNrZXIgPSB0cmFja1ZhbHVlT25Ob2RlKG5vZGUpKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZVZhbHVlSWZDaGFuZ2VkKG5vZGUpIHtcbiAgaWYgKCFub2RlKSByZXR1cm4gITE7XG4gIHZhciB0cmFja2VyID0gbm9kZS5fdmFsdWVUcmFja2VyO1xuICBpZiAoIXRyYWNrZXIpIHJldHVybiAhMDtcbiAgdmFyIGxhc3RWYWx1ZSA9IHRyYWNrZXIuZ2V0VmFsdWUoKTtcbiAgdmFyIHZhbHVlID0gXCJcIjtcbiAgbm9kZSAmJlxuICAgICh2YWx1ZSA9IGlzQ2hlY2thYmxlKG5vZGUpXG4gICAgICA/IG5vZGUuY2hlY2tlZFxuICAgICAgICA/IFwidHJ1ZVwiXG4gICAgICAgIDogXCJmYWxzZVwiXG4gICAgICA6IG5vZGUudmFsdWUpO1xuICBub2RlID0gdmFsdWU7XG4gIHJldHVybiBub2RlICE9PSBsYXN0VmFsdWUgPyAodHJhY2tlci5zZXRWYWx1ZShub2RlKSwgITApIDogITE7XG59XG5mdW5jdGlvbiBnZXRBY3RpdmVFbGVtZW50KGRvYykge1xuICBkb2MgPSBkb2MgfHwgKFwidW5kZWZpbmVkXCIgIT09IHR5cGVvZiBkb2N1bWVudCA/IGRvY3VtZW50IDogdm9pZCAwKTtcbiAgaWYgKFwidW5kZWZpbmVkXCIgPT09IHR5cGVvZiBkb2MpIHJldHVybiBudWxsO1xuICB0cnkge1xuICAgIHJldHVybiBkb2MuYWN0aXZlRWxlbWVudCB8fCBkb2MuYm9keTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiBkb2MuYm9keTtcbiAgfVxufVxudmFyIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXNSZWdleCA9IC9bXFxuXCJcXFxcXS9nO1xuZnVuY3Rpb24gZXNjYXBlU2VsZWN0b3JBdHRyaWJ1dGVWYWx1ZUluc2lkZURvdWJsZVF1b3Rlcyh2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUucmVwbGFjZShcbiAgICBlc2NhcGVTZWxlY3RvckF0dHJpYnV0ZVZhbHVlSW5zaWRlRG91YmxlUXVvdGVzUmVnZXgsXG4gICAgZnVuY3Rpb24gKGNoKSB7XG4gICAgICByZXR1cm4gXCJcXFxcXCIgKyBjaC5jaGFyQ29kZUF0KDApLnRvU3RyaW5nKDE2KSArIFwiIFwiO1xuICAgIH1cbiAgKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUlucHV0KFxuICBlbGVtZW50LFxuICB2YWx1ZSxcbiAgZGVmYXVsdFZhbHVlLFxuICBsYXN0RGVmYXVsdFZhbHVlLFxuICBjaGVja2VkLFxuICBkZWZhdWx0Q2hlY2tlZCxcbiAgdHlwZSxcbiAgbmFtZVxuKSB7XG4gIGVsZW1lbnQubmFtZSA9IFwiXCI7XG4gIG51bGwgIT0gdHlwZSAmJlxuICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiB0eXBlICYmXG4gIFwic3ltYm9sXCIgIT09IHR5cGVvZiB0eXBlICYmXG4gIFwiYm9vbGVhblwiICE9PSB0eXBlb2YgdHlwZVxuICAgID8gKGVsZW1lbnQudHlwZSA9IHR5cGUpXG4gICAgOiBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcInR5cGVcIik7XG4gIGlmIChudWxsICE9IHZhbHVlKVxuICAgIGlmIChcIm51bWJlclwiID09PSB0eXBlKSB7XG4gICAgICBpZiAoKDAgPT09IHZhbHVlICYmIFwiXCIgPT09IGVsZW1lbnQudmFsdWUpIHx8IGVsZW1lbnQudmFsdWUgIT0gdmFsdWUpXG4gICAgICAgIGVsZW1lbnQudmFsdWUgPSBcIlwiICsgZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSk7XG4gICAgfSBlbHNlXG4gICAgICBlbGVtZW50LnZhbHVlICE9PSBcIlwiICsgZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSkgJiZcbiAgICAgICAgKGVsZW1lbnQudmFsdWUgPSBcIlwiICsgZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSkpO1xuICBlbHNlXG4gICAgKFwic3VibWl0XCIgIT09IHR5cGUgJiYgXCJyZXNldFwiICE9PSB0eXBlKSB8fCBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcInZhbHVlXCIpO1xuICBudWxsICE9IHZhbHVlXG4gICAgPyBzZXREZWZhdWx0VmFsdWUoZWxlbWVudCwgdHlwZSwgZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSkpXG4gICAgOiBudWxsICE9IGRlZmF1bHRWYWx1ZVxuICAgICAgPyBzZXREZWZhdWx0VmFsdWUoZWxlbWVudCwgdHlwZSwgZ2V0VG9TdHJpbmdWYWx1ZShkZWZhdWx0VmFsdWUpKVxuICAgICAgOiBudWxsICE9IGxhc3REZWZhdWx0VmFsdWUgJiYgZWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoXCJ2YWx1ZVwiKTtcbiAgbnVsbCA9PSBjaGVja2VkICYmXG4gICAgbnVsbCAhPSBkZWZhdWx0Q2hlY2tlZCAmJlxuICAgIChlbGVtZW50LmRlZmF1bHRDaGVja2VkID0gISFkZWZhdWx0Q2hlY2tlZCk7XG4gIG51bGwgIT0gY2hlY2tlZCAmJlxuICAgIChlbGVtZW50LmNoZWNrZWQgPVxuICAgICAgY2hlY2tlZCAmJiBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjaGVja2VkICYmIFwic3ltYm9sXCIgIT09IHR5cGVvZiBjaGVja2VkKTtcbiAgbnVsbCAhPSBuYW1lICYmXG4gIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIG5hbWUgJiZcbiAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIG5hbWUgJiZcbiAgXCJib29sZWFuXCIgIT09IHR5cGVvZiBuYW1lXG4gICAgPyAoZWxlbWVudC5uYW1lID0gXCJcIiArIGdldFRvU3RyaW5nVmFsdWUobmFtZSkpXG4gICAgOiBlbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShcIm5hbWVcIik7XG59XG5mdW5jdGlvbiBpbml0SW5wdXQoXG4gIGVsZW1lbnQsXG4gIHZhbHVlLFxuICBkZWZhdWx0VmFsdWUsXG4gIGNoZWNrZWQsXG4gIGRlZmF1bHRDaGVja2VkLFxuICB0eXBlLFxuICBuYW1lLFxuICBpc0h5ZHJhdGluZ1xuKSB7XG4gIG51bGwgIT0gdHlwZSAmJlxuICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHR5cGUgJiZcbiAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdHlwZSAmJlxuICAgIFwiYm9vbGVhblwiICE9PSB0eXBlb2YgdHlwZSAmJlxuICAgIChlbGVtZW50LnR5cGUgPSB0eXBlKTtcbiAgaWYgKG51bGwgIT0gdmFsdWUgfHwgbnVsbCAhPSBkZWZhdWx0VmFsdWUpIHtcbiAgICBpZiAoXG4gICAgICAhKFxuICAgICAgICAoXCJzdWJtaXRcIiAhPT0gdHlwZSAmJiBcInJlc2V0XCIgIT09IHR5cGUpIHx8XG4gICAgICAgICh2b2lkIDAgIT09IHZhbHVlICYmIG51bGwgIT09IHZhbHVlKVxuICAgICAgKVxuICAgIClcbiAgICAgIHJldHVybjtcbiAgICBkZWZhdWx0VmFsdWUgPVxuICAgICAgbnVsbCAhPSBkZWZhdWx0VmFsdWUgPyBcIlwiICsgZ2V0VG9TdHJpbmdWYWx1ZShkZWZhdWx0VmFsdWUpIDogXCJcIjtcbiAgICB2YWx1ZSA9IG51bGwgIT0gdmFsdWUgPyBcIlwiICsgZ2V0VG9TdHJpbmdWYWx1ZSh2YWx1ZSkgOiBkZWZhdWx0VmFsdWU7XG4gICAgaXNIeWRyYXRpbmcgfHwgdmFsdWUgPT09IGVsZW1lbnQudmFsdWUgfHwgKGVsZW1lbnQudmFsdWUgPSB2YWx1ZSk7XG4gICAgZWxlbWVudC5kZWZhdWx0VmFsdWUgPSB2YWx1ZTtcbiAgfVxuICBjaGVja2VkID0gbnVsbCAhPSBjaGVja2VkID8gY2hlY2tlZCA6IGRlZmF1bHRDaGVja2VkO1xuICBjaGVja2VkID1cbiAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjaGVja2VkICYmIFwic3ltYm9sXCIgIT09IHR5cGVvZiBjaGVja2VkICYmICEhY2hlY2tlZDtcbiAgZWxlbWVudC5jaGVja2VkID0gaXNIeWRyYXRpbmcgPyBlbGVtZW50LmNoZWNrZWQgOiAhIWNoZWNrZWQ7XG4gIGVsZW1lbnQuZGVmYXVsdENoZWNrZWQgPSAhIWNoZWNrZWQ7XG4gIG51bGwgIT0gbmFtZSAmJlxuICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIG5hbWUgJiZcbiAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgbmFtZSAmJlxuICAgIFwiYm9vbGVhblwiICE9PSB0eXBlb2YgbmFtZSAmJlxuICAgIChlbGVtZW50Lm5hbWUgPSBuYW1lKTtcbn1cbmZ1bmN0aW9uIHNldERlZmF1bHRWYWx1ZShub2RlLCB0eXBlLCB2YWx1ZSkge1xuICAoXCJudW1iZXJcIiA9PT0gdHlwZSAmJiBnZXRBY3RpdmVFbGVtZW50KG5vZGUub3duZXJEb2N1bWVudCkgPT09IG5vZGUpIHx8XG4gICAgbm9kZS5kZWZhdWx0VmFsdWUgPT09IFwiXCIgKyB2YWx1ZSB8fFxuICAgIChub2RlLmRlZmF1bHRWYWx1ZSA9IFwiXCIgKyB2YWx1ZSk7XG59XG5mdW5jdGlvbiB1cGRhdGVPcHRpb25zKG5vZGUsIG11bHRpcGxlLCBwcm9wVmFsdWUsIHNldERlZmF1bHRTZWxlY3RlZCkge1xuICBub2RlID0gbm9kZS5vcHRpb25zO1xuICBpZiAobXVsdGlwbGUpIHtcbiAgICBtdWx0aXBsZSA9IHt9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcFZhbHVlLmxlbmd0aDsgaSsrKVxuICAgICAgbXVsdGlwbGVbXCIkXCIgKyBwcm9wVmFsdWVbaV1dID0gITA7XG4gICAgZm9yIChwcm9wVmFsdWUgPSAwOyBwcm9wVmFsdWUgPCBub2RlLmxlbmd0aDsgcHJvcFZhbHVlKyspXG4gICAgICAoaSA9IG11bHRpcGxlLmhhc093blByb3BlcnR5KFwiJFwiICsgbm9kZVtwcm9wVmFsdWVdLnZhbHVlKSksXG4gICAgICAgIG5vZGVbcHJvcFZhbHVlXS5zZWxlY3RlZCAhPT0gaSAmJiAobm9kZVtwcm9wVmFsdWVdLnNlbGVjdGVkID0gaSksXG4gICAgICAgIGkgJiYgc2V0RGVmYXVsdFNlbGVjdGVkICYmIChub2RlW3Byb3BWYWx1ZV0uZGVmYXVsdFNlbGVjdGVkID0gITApO1xuICB9IGVsc2Uge1xuICAgIHByb3BWYWx1ZSA9IFwiXCIgKyBnZXRUb1N0cmluZ1ZhbHVlKHByb3BWYWx1ZSk7XG4gICAgbXVsdGlwbGUgPSBudWxsO1xuICAgIGZvciAoaSA9IDA7IGkgPCBub2RlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAobm9kZVtpXS52YWx1ZSA9PT0gcHJvcFZhbHVlKSB7XG4gICAgICAgIG5vZGVbaV0uc2VsZWN0ZWQgPSAhMDtcbiAgICAgICAgc2V0RGVmYXVsdFNlbGVjdGVkICYmIChub2RlW2ldLmRlZmF1bHRTZWxlY3RlZCA9ICEwKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgbnVsbCAhPT0gbXVsdGlwbGUgfHwgbm9kZVtpXS5kaXNhYmxlZCB8fCAobXVsdGlwbGUgPSBub2RlW2ldKTtcbiAgICB9XG4gICAgbnVsbCAhPT0gbXVsdGlwbGUgJiYgKG11bHRpcGxlLnNlbGVjdGVkID0gITApO1xuICB9XG59XG5mdW5jdGlvbiB1cGRhdGVUZXh0YXJlYShlbGVtZW50LCB2YWx1ZSwgZGVmYXVsdFZhbHVlKSB7XG4gIGlmIChcbiAgICBudWxsICE9IHZhbHVlICYmXG4gICAgKCh2YWx1ZSA9IFwiXCIgKyBnZXRUb1N0cmluZ1ZhbHVlKHZhbHVlKSksXG4gICAgdmFsdWUgIT09IGVsZW1lbnQudmFsdWUgJiYgKGVsZW1lbnQudmFsdWUgPSB2YWx1ZSksXG4gICAgbnVsbCA9PSBkZWZhdWx0VmFsdWUpXG4gICkge1xuICAgIGVsZW1lbnQuZGVmYXVsdFZhbHVlICE9PSB2YWx1ZSAmJiAoZWxlbWVudC5kZWZhdWx0VmFsdWUgPSB2YWx1ZSk7XG4gICAgcmV0dXJuO1xuICB9XG4gIGVsZW1lbnQuZGVmYXVsdFZhbHVlID1cbiAgICBudWxsICE9IGRlZmF1bHRWYWx1ZSA/IFwiXCIgKyBnZXRUb1N0cmluZ1ZhbHVlKGRlZmF1bHRWYWx1ZSkgOiBcIlwiO1xufVxuZnVuY3Rpb24gaW5pdFRleHRhcmVhKGVsZW1lbnQsIHZhbHVlLCBkZWZhdWx0VmFsdWUsIGNoaWxkcmVuKSB7XG4gIGlmIChudWxsID09IHZhbHVlKSB7XG4gICAgaWYgKG51bGwgIT0gY2hpbGRyZW4pIHtcbiAgICAgIGlmIChudWxsICE9IGRlZmF1bHRWYWx1ZSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg5MikpO1xuICAgICAgaWYgKGlzQXJyYXlJbXBsKGNoaWxkcmVuKSkge1xuICAgICAgICBpZiAoMSA8IGNoaWxkcmVuLmxlbmd0aCkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg5MykpO1xuICAgICAgICBjaGlsZHJlbiA9IGNoaWxkcmVuWzBdO1xuICAgICAgfVxuICAgICAgZGVmYXVsdFZhbHVlID0gY2hpbGRyZW47XG4gICAgfVxuICAgIG51bGwgPT0gZGVmYXVsdFZhbHVlICYmIChkZWZhdWx0VmFsdWUgPSBcIlwiKTtcbiAgICB2YWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgfVxuICBkZWZhdWx0VmFsdWUgPSBnZXRUb1N0cmluZ1ZhbHVlKHZhbHVlKTtcbiAgZWxlbWVudC5kZWZhdWx0VmFsdWUgPSBkZWZhdWx0VmFsdWU7XG4gIGNoaWxkcmVuID0gZWxlbWVudC50ZXh0Q29udGVudDtcbiAgY2hpbGRyZW4gPT09IGRlZmF1bHRWYWx1ZSAmJlxuICAgIFwiXCIgIT09IGNoaWxkcmVuICYmXG4gICAgbnVsbCAhPT0gY2hpbGRyZW4gJiZcbiAgICAoZWxlbWVudC52YWx1ZSA9IGNoaWxkcmVuKTtcbn1cbmZ1bmN0aW9uIHNldFRleHRDb250ZW50KG5vZGUsIHRleHQpIHtcbiAgaWYgKHRleHQpIHtcbiAgICB2YXIgZmlyc3RDaGlsZCA9IG5vZGUuZmlyc3RDaGlsZDtcbiAgICBpZiAoXG4gICAgICBmaXJzdENoaWxkICYmXG4gICAgICBmaXJzdENoaWxkID09PSBub2RlLmxhc3RDaGlsZCAmJlxuICAgICAgMyA9PT0gZmlyc3RDaGlsZC5ub2RlVHlwZVxuICAgICkge1xuICAgICAgZmlyc3RDaGlsZC5ub2RlVmFsdWUgPSB0ZXh0O1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfVxuICBub2RlLnRleHRDb250ZW50ID0gdGV4dDtcbn1cbnZhciB1bml0bGVzc051bWJlcnMgPSBuZXcgU2V0KFxuICBcImFuaW1hdGlvbkl0ZXJhdGlvbkNvdW50IGFzcGVjdFJhdGlvIGJvcmRlckltYWdlT3V0c2V0IGJvcmRlckltYWdlU2xpY2UgYm9yZGVySW1hZ2VXaWR0aCBib3hGbGV4IGJveEZsZXhHcm91cCBib3hPcmRpbmFsR3JvdXAgY29sdW1uQ291bnQgY29sdW1ucyBmbGV4IGZsZXhHcm93IGZsZXhQb3NpdGl2ZSBmbGV4U2hyaW5rIGZsZXhOZWdhdGl2ZSBmbGV4T3JkZXIgZ3JpZEFyZWEgZ3JpZFJvdyBncmlkUm93RW5kIGdyaWRSb3dTcGFuIGdyaWRSb3dTdGFydCBncmlkQ29sdW1uIGdyaWRDb2x1bW5FbmQgZ3JpZENvbHVtblNwYW4gZ3JpZENvbHVtblN0YXJ0IGZvbnRXZWlnaHQgbGluZUNsYW1wIGxpbmVIZWlnaHQgb3BhY2l0eSBvcmRlciBvcnBoYW5zIHNjYWxlIHRhYlNpemUgd2lkb3dzIHpJbmRleCB6b29tIGZpbGxPcGFjaXR5IGZsb29kT3BhY2l0eSBzdG9wT3BhY2l0eSBzdHJva2VEYXNoYXJyYXkgc3Ryb2tlRGFzaG9mZnNldCBzdHJva2VNaXRlcmxpbWl0IHN0cm9rZU9wYWNpdHkgc3Ryb2tlV2lkdGggTW96QW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgTW96Qm94RmxleCBNb3pCb3hGbGV4R3JvdXAgTW96TGluZUNsYW1wIG1zQW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgbXNGbGV4IG1zWm9vbSBtc0ZsZXhHcm93IG1zRmxleE5lZ2F0aXZlIG1zRmxleE9yZGVyIG1zRmxleFBvc2l0aXZlIG1zRmxleFNocmluayBtc0dyaWRDb2x1bW4gbXNHcmlkQ29sdW1uU3BhbiBtc0dyaWRSb3cgbXNHcmlkUm93U3BhbiBXZWJraXRBbmltYXRpb25JdGVyYXRpb25Db3VudCBXZWJraXRCb3hGbGV4IFdlYktpdEJveEZsZXhHcm91cCBXZWJraXRCb3hPcmRpbmFsR3JvdXAgV2Via2l0Q29sdW1uQ291bnQgV2Via2l0Q29sdW1ucyBXZWJraXRGbGV4IFdlYmtpdEZsZXhHcm93IFdlYmtpdEZsZXhQb3NpdGl2ZSBXZWJraXRGbGV4U2hyaW5rIFdlYmtpdExpbmVDbGFtcFwiLnNwbGl0KFxuICAgIFwiIFwiXG4gIClcbik7XG5mdW5jdGlvbiBzZXRWYWx1ZUZvclN0eWxlKHN0eWxlLCBzdHlsZU5hbWUsIHZhbHVlKSB7XG4gIHZhciBpc0N1c3RvbVByb3BlcnR5ID0gMCA9PT0gc3R5bGVOYW1lLmluZGV4T2YoXCItLVwiKTtcbiAgbnVsbCA9PSB2YWx1ZSB8fCBcImJvb2xlYW5cIiA9PT0gdHlwZW9mIHZhbHVlIHx8IFwiXCIgPT09IHZhbHVlXG4gICAgPyBpc0N1c3RvbVByb3BlcnR5XG4gICAgICA/IHN0eWxlLnNldFByb3BlcnR5KHN0eWxlTmFtZSwgXCJcIilcbiAgICAgIDogXCJmbG9hdFwiID09PSBzdHlsZU5hbWVcbiAgICAgICAgPyAoc3R5bGUuY3NzRmxvYXQgPSBcIlwiKVxuICAgICAgICA6IChzdHlsZVtzdHlsZU5hbWVdID0gXCJcIilcbiAgICA6IGlzQ3VzdG9tUHJvcGVydHlcbiAgICAgID8gc3R5bGUuc2V0UHJvcGVydHkoc3R5bGVOYW1lLCB2YWx1ZSlcbiAgICAgIDogXCJudW1iZXJcIiAhPT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgICAgMCA9PT0gdmFsdWUgfHxcbiAgICAgICAgICB1bml0bGVzc051bWJlcnMuaGFzKHN0eWxlTmFtZSlcbiAgICAgICAgPyBcImZsb2F0XCIgPT09IHN0eWxlTmFtZVxuICAgICAgICAgID8gKHN0eWxlLmNzc0Zsb2F0ID0gdmFsdWUpXG4gICAgICAgICAgOiAoc3R5bGVbc3R5bGVOYW1lXSA9IChcIlwiICsgdmFsdWUpLnRyaW0oKSlcbiAgICAgICAgOiAoc3R5bGVbc3R5bGVOYW1lXSA9IHZhbHVlICsgXCJweFwiKTtcbn1cbmZ1bmN0aW9uIHNldFZhbHVlRm9yU3R5bGVzKG5vZGUsIHN0eWxlcywgcHJldlN0eWxlcykge1xuICBpZiAobnVsbCAhPSBzdHlsZXMgJiYgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHN0eWxlcylcbiAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDYyKSk7XG4gIG5vZGUgPSBub2RlLnN0eWxlO1xuICBpZiAobnVsbCAhPSBwcmV2U3R5bGVzKSB7XG4gICAgZm9yICh2YXIgc3R5bGVOYW1lIGluIHByZXZTdHlsZXMpXG4gICAgICAhcHJldlN0eWxlcy5oYXNPd25Qcm9wZXJ0eShzdHlsZU5hbWUpIHx8XG4gICAgICAgIChudWxsICE9IHN0eWxlcyAmJiBzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lKSkgfHxcbiAgICAgICAgKDAgPT09IHN0eWxlTmFtZS5pbmRleE9mKFwiLS1cIilcbiAgICAgICAgICA/IG5vZGUuc2V0UHJvcGVydHkoc3R5bGVOYW1lLCBcIlwiKVxuICAgICAgICAgIDogXCJmbG9hdFwiID09PSBzdHlsZU5hbWVcbiAgICAgICAgICAgID8gKG5vZGUuY3NzRmxvYXQgPSBcIlwiKVxuICAgICAgICAgICAgOiAobm9kZVtzdHlsZU5hbWVdID0gXCJcIikpO1xuICAgIGZvciAodmFyIHN0eWxlTmFtZSQxNiBpbiBzdHlsZXMpXG4gICAgICAoc3R5bGVOYW1lID0gc3R5bGVzW3N0eWxlTmFtZSQxNl0pLFxuICAgICAgICBzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lJDE2KSAmJlxuICAgICAgICAgIHByZXZTdHlsZXNbc3R5bGVOYW1lJDE2XSAhPT0gc3R5bGVOYW1lICYmXG4gICAgICAgICAgc2V0VmFsdWVGb3JTdHlsZShub2RlLCBzdHlsZU5hbWUkMTYsIHN0eWxlTmFtZSk7XG4gIH0gZWxzZVxuICAgIGZvciAodmFyIHN0eWxlTmFtZSQxNyBpbiBzdHlsZXMpXG4gICAgICBzdHlsZXMuaGFzT3duUHJvcGVydHkoc3R5bGVOYW1lJDE3KSAmJlxuICAgICAgICBzZXRWYWx1ZUZvclN0eWxlKG5vZGUsIHN0eWxlTmFtZSQxNywgc3R5bGVzW3N0eWxlTmFtZSQxN10pO1xufVxuZnVuY3Rpb24gaXNDdXN0b21FbGVtZW50KHRhZ05hbWUpIHtcbiAgaWYgKC0xID09PSB0YWdOYW1lLmluZGV4T2YoXCItXCIpKSByZXR1cm4gITE7XG4gIHN3aXRjaCAodGFnTmFtZSkge1xuICAgIGNhc2UgXCJhbm5vdGF0aW9uLXhtbFwiOlxuICAgIGNhc2UgXCJjb2xvci1wcm9maWxlXCI6XG4gICAgY2FzZSBcImZvbnQtZmFjZVwiOlxuICAgIGNhc2UgXCJmb250LWZhY2Utc3JjXCI6XG4gICAgY2FzZSBcImZvbnQtZmFjZS11cmlcIjpcbiAgICBjYXNlIFwiZm9udC1mYWNlLWZvcm1hdFwiOlxuICAgIGNhc2UgXCJmb250LWZhY2UtbmFtZVwiOlxuICAgIGNhc2UgXCJtaXNzaW5nLWdseXBoXCI6XG4gICAgICByZXR1cm4gITE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAhMDtcbiAgfVxufVxudmFyIGFsaWFzZXMgPSBuZXcgTWFwKFtcbiAgICBbXCJhY2NlcHRDaGFyc2V0XCIsIFwiYWNjZXB0LWNoYXJzZXRcIl0sXG4gICAgW1wiaHRtbEZvclwiLCBcImZvclwiXSxcbiAgICBbXCJodHRwRXF1aXZcIiwgXCJodHRwLWVxdWl2XCJdLFxuICAgIFtcImNyb3NzT3JpZ2luXCIsIFwiY3Jvc3NvcmlnaW5cIl0sXG4gICAgW1wiYWNjZW50SGVpZ2h0XCIsIFwiYWNjZW50LWhlaWdodFwiXSxcbiAgICBbXCJhbGlnbm1lbnRCYXNlbGluZVwiLCBcImFsaWdubWVudC1iYXNlbGluZVwiXSxcbiAgICBbXCJhcmFiaWNGb3JtXCIsIFwiYXJhYmljLWZvcm1cIl0sXG4gICAgW1wiYmFzZWxpbmVTaGlmdFwiLCBcImJhc2VsaW5lLXNoaWZ0XCJdLFxuICAgIFtcImNhcEhlaWdodFwiLCBcImNhcC1oZWlnaHRcIl0sXG4gICAgW1wiY2xpcFBhdGhcIiwgXCJjbGlwLXBhdGhcIl0sXG4gICAgW1wiY2xpcFJ1bGVcIiwgXCJjbGlwLXJ1bGVcIl0sXG4gICAgW1wiY29sb3JJbnRlcnBvbGF0aW9uXCIsIFwiY29sb3ItaW50ZXJwb2xhdGlvblwiXSxcbiAgICBbXCJjb2xvckludGVycG9sYXRpb25GaWx0ZXJzXCIsIFwiY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzXCJdLFxuICAgIFtcImNvbG9yUHJvZmlsZVwiLCBcImNvbG9yLXByb2ZpbGVcIl0sXG4gICAgW1wiY29sb3JSZW5kZXJpbmdcIiwgXCJjb2xvci1yZW5kZXJpbmdcIl0sXG4gICAgW1wiZG9taW5hbnRCYXNlbGluZVwiLCBcImRvbWluYW50LWJhc2VsaW5lXCJdLFxuICAgIFtcImVuYWJsZUJhY2tncm91bmRcIiwgXCJlbmFibGUtYmFja2dyb3VuZFwiXSxcbiAgICBbXCJmaWxsT3BhY2l0eVwiLCBcImZpbGwtb3BhY2l0eVwiXSxcbiAgICBbXCJmaWxsUnVsZVwiLCBcImZpbGwtcnVsZVwiXSxcbiAgICBbXCJmbG9vZENvbG9yXCIsIFwiZmxvb2QtY29sb3JcIl0sXG4gICAgW1wiZmxvb2RPcGFjaXR5XCIsIFwiZmxvb2Qtb3BhY2l0eVwiXSxcbiAgICBbXCJmb250RmFtaWx5XCIsIFwiZm9udC1mYW1pbHlcIl0sXG4gICAgW1wiZm9udFNpemVcIiwgXCJmb250LXNpemVcIl0sXG4gICAgW1wiZm9udFNpemVBZGp1c3RcIiwgXCJmb250LXNpemUtYWRqdXN0XCJdLFxuICAgIFtcImZvbnRTdHJldGNoXCIsIFwiZm9udC1zdHJldGNoXCJdLFxuICAgIFtcImZvbnRTdHlsZVwiLCBcImZvbnQtc3R5bGVcIl0sXG4gICAgW1wiZm9udFZhcmlhbnRcIiwgXCJmb250LXZhcmlhbnRcIl0sXG4gICAgW1wiZm9udFdlaWdodFwiLCBcImZvbnQtd2VpZ2h0XCJdLFxuICAgIFtcImdseXBoTmFtZVwiLCBcImdseXBoLW5hbWVcIl0sXG4gICAgW1wiZ2x5cGhPcmllbnRhdGlvbkhvcml6b250YWxcIiwgXCJnbHlwaC1vcmllbnRhdGlvbi1ob3Jpem9udGFsXCJdLFxuICAgIFtcImdseXBoT3JpZW50YXRpb25WZXJ0aWNhbFwiLCBcImdseXBoLW9yaWVudGF0aW9uLXZlcnRpY2FsXCJdLFxuICAgIFtcImhvcml6QWR2WFwiLCBcImhvcml6LWFkdi14XCJdLFxuICAgIFtcImhvcml6T3JpZ2luWFwiLCBcImhvcml6LW9yaWdpbi14XCJdLFxuICAgIFtcImltYWdlUmVuZGVyaW5nXCIsIFwiaW1hZ2UtcmVuZGVyaW5nXCJdLFxuICAgIFtcImxldHRlclNwYWNpbmdcIiwgXCJsZXR0ZXItc3BhY2luZ1wiXSxcbiAgICBbXCJsaWdodGluZ0NvbG9yXCIsIFwibGlnaHRpbmctY29sb3JcIl0sXG4gICAgW1wibWFya2VyRW5kXCIsIFwibWFya2VyLWVuZFwiXSxcbiAgICBbXCJtYXJrZXJNaWRcIiwgXCJtYXJrZXItbWlkXCJdLFxuICAgIFtcIm1hcmtlclN0YXJ0XCIsIFwibWFya2VyLXN0YXJ0XCJdLFxuICAgIFtcIm92ZXJsaW5lUG9zaXRpb25cIiwgXCJvdmVybGluZS1wb3NpdGlvblwiXSxcbiAgICBbXCJvdmVybGluZVRoaWNrbmVzc1wiLCBcIm92ZXJsaW5lLXRoaWNrbmVzc1wiXSxcbiAgICBbXCJwYWludE9yZGVyXCIsIFwicGFpbnQtb3JkZXJcIl0sXG4gICAgW1wicGFub3NlLTFcIiwgXCJwYW5vc2UtMVwiXSxcbiAgICBbXCJwb2ludGVyRXZlbnRzXCIsIFwicG9pbnRlci1ldmVudHNcIl0sXG4gICAgW1wicmVuZGVyaW5nSW50ZW50XCIsIFwicmVuZGVyaW5nLWludGVudFwiXSxcbiAgICBbXCJzaGFwZVJlbmRlcmluZ1wiLCBcInNoYXBlLXJlbmRlcmluZ1wiXSxcbiAgICBbXCJzdG9wQ29sb3JcIiwgXCJzdG9wLWNvbG9yXCJdLFxuICAgIFtcInN0b3BPcGFjaXR5XCIsIFwic3RvcC1vcGFjaXR5XCJdLFxuICAgIFtcInN0cmlrZXRocm91Z2hQb3NpdGlvblwiLCBcInN0cmlrZXRocm91Z2gtcG9zaXRpb25cIl0sXG4gICAgW1wic3RyaWtldGhyb3VnaFRoaWNrbmVzc1wiLCBcInN0cmlrZXRocm91Z2gtdGhpY2tuZXNzXCJdLFxuICAgIFtcInN0cm9rZURhc2hhcnJheVwiLCBcInN0cm9rZS1kYXNoYXJyYXlcIl0sXG4gICAgW1wic3Ryb2tlRGFzaG9mZnNldFwiLCBcInN0cm9rZS1kYXNob2Zmc2V0XCJdLFxuICAgIFtcInN0cm9rZUxpbmVjYXBcIiwgXCJzdHJva2UtbGluZWNhcFwiXSxcbiAgICBbXCJzdHJva2VMaW5lam9pblwiLCBcInN0cm9rZS1saW5lam9pblwiXSxcbiAgICBbXCJzdHJva2VNaXRlcmxpbWl0XCIsIFwic3Ryb2tlLW1pdGVybGltaXRcIl0sXG4gICAgW1wic3Ryb2tlT3BhY2l0eVwiLCBcInN0cm9rZS1vcGFjaXR5XCJdLFxuICAgIFtcInN0cm9rZVdpZHRoXCIsIFwic3Ryb2tlLXdpZHRoXCJdLFxuICAgIFtcInRleHRBbmNob3JcIiwgXCJ0ZXh0LWFuY2hvclwiXSxcbiAgICBbXCJ0ZXh0RGVjb3JhdGlvblwiLCBcInRleHQtZGVjb3JhdGlvblwiXSxcbiAgICBbXCJ0ZXh0UmVuZGVyaW5nXCIsIFwidGV4dC1yZW5kZXJpbmdcIl0sXG4gICAgW1widHJhbnNmb3JtT3JpZ2luXCIsIFwidHJhbnNmb3JtLW9yaWdpblwiXSxcbiAgICBbXCJ1bmRlcmxpbmVQb3NpdGlvblwiLCBcInVuZGVybGluZS1wb3NpdGlvblwiXSxcbiAgICBbXCJ1bmRlcmxpbmVUaGlja25lc3NcIiwgXCJ1bmRlcmxpbmUtdGhpY2tuZXNzXCJdLFxuICAgIFtcInVuaWNvZGVCaWRpXCIsIFwidW5pY29kZS1iaWRpXCJdLFxuICAgIFtcInVuaWNvZGVSYW5nZVwiLCBcInVuaWNvZGUtcmFuZ2VcIl0sXG4gICAgW1widW5pdHNQZXJFbVwiLCBcInVuaXRzLXBlci1lbVwiXSxcbiAgICBbXCJ2QWxwaGFiZXRpY1wiLCBcInYtYWxwaGFiZXRpY1wiXSxcbiAgICBbXCJ2SGFuZ2luZ1wiLCBcInYtaGFuZ2luZ1wiXSxcbiAgICBbXCJ2SWRlb2dyYXBoaWNcIiwgXCJ2LWlkZW9ncmFwaGljXCJdLFxuICAgIFtcInZNYXRoZW1hdGljYWxcIiwgXCJ2LW1hdGhlbWF0aWNhbFwiXSxcbiAgICBbXCJ2ZWN0b3JFZmZlY3RcIiwgXCJ2ZWN0b3ItZWZmZWN0XCJdLFxuICAgIFtcInZlcnRBZHZZXCIsIFwidmVydC1hZHYteVwiXSxcbiAgICBbXCJ2ZXJ0T3JpZ2luWFwiLCBcInZlcnQtb3JpZ2luLXhcIl0sXG4gICAgW1widmVydE9yaWdpbllcIiwgXCJ2ZXJ0LW9yaWdpbi15XCJdLFxuICAgIFtcIndvcmRTcGFjaW5nXCIsIFwid29yZC1zcGFjaW5nXCJdLFxuICAgIFtcIndyaXRpbmdNb2RlXCIsIFwid3JpdGluZy1tb2RlXCJdLFxuICAgIFtcInhtbG5zWGxpbmtcIiwgXCJ4bWxuczp4bGlua1wiXSxcbiAgICBbXCJ4SGVpZ2h0XCIsIFwieC1oZWlnaHRcIl1cbiAgXSksXG4gIGlzSmF2YVNjcmlwdFByb3RvY29sID1cbiAgICAvXltcXHUwMDAwLVxcdTAwMUYgXSpqW1xcclxcblxcdF0qYVtcXHJcXG5cXHRdKnZbXFxyXFxuXFx0XSphW1xcclxcblxcdF0qc1tcXHJcXG5cXHRdKmNbXFxyXFxuXFx0XSpyW1xcclxcblxcdF0qaVtcXHJcXG5cXHRdKnBbXFxyXFxuXFx0XSp0W1xcclxcblxcdF0qOi9pO1xuZnVuY3Rpb24gc2FuaXRpemVVUkwodXJsKSB7XG4gIHJldHVybiBpc0phdmFTY3JpcHRQcm90b2NvbC50ZXN0KFwiXCIgKyB1cmwpXG4gICAgPyBcImphdmFzY3JpcHQ6dGhyb3cgbmV3IEVycm9yKCdSZWFjdCBoYXMgYmxvY2tlZCBhIGphdmFzY3JpcHQ6IFVSTCBhcyBhIHNlY3VyaXR5IHByZWNhdXRpb24uJylcIlxuICAgIDogdXJsO1xufVxudmFyIGN1cnJlbnRSZXBsYXlpbmdFdmVudCA9IG51bGw7XG5mdW5jdGlvbiBnZXRFdmVudFRhcmdldChuYXRpdmVFdmVudCkge1xuICBuYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50LnRhcmdldCB8fCBuYXRpdmVFdmVudC5zcmNFbGVtZW50IHx8IHdpbmRvdztcbiAgbmF0aXZlRXZlbnQuY29ycmVzcG9uZGluZ1VzZUVsZW1lbnQgJiZcbiAgICAobmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudC5jb3JyZXNwb25kaW5nVXNlRWxlbWVudCk7XG4gIHJldHVybiAzID09PSBuYXRpdmVFdmVudC5ub2RlVHlwZSA/IG5hdGl2ZUV2ZW50LnBhcmVudE5vZGUgOiBuYXRpdmVFdmVudDtcbn1cbnZhciByZXN0b3JlVGFyZ2V0ID0gbnVsbCxcbiAgcmVzdG9yZVF1ZXVlID0gbnVsbDtcbmZ1bmN0aW9uIHJlc3RvcmVTdGF0ZU9mVGFyZ2V0KHRhcmdldCkge1xuICB2YXIgaW50ZXJuYWxJbnN0YW5jZSA9IGdldEluc3RhbmNlRnJvbU5vZGUodGFyZ2V0KTtcbiAgaWYgKGludGVybmFsSW5zdGFuY2UgJiYgKHRhcmdldCA9IGludGVybmFsSW5zdGFuY2Uuc3RhdGVOb2RlKSkge1xuICAgIHZhciBwcm9wcyA9IHRhcmdldFtpbnRlcm5hbFByb3BzS2V5XSB8fCBudWxsO1xuICAgIGE6IHN3aXRjaCAoKCh0YXJnZXQgPSBpbnRlcm5hbEluc3RhbmNlLnN0YXRlTm9kZSksIGludGVybmFsSW5zdGFuY2UudHlwZSkpIHtcbiAgICAgIGNhc2UgXCJpbnB1dFwiOlxuICAgICAgICB1cGRhdGVJbnB1dChcbiAgICAgICAgICB0YXJnZXQsXG4gICAgICAgICAgcHJvcHMudmFsdWUsXG4gICAgICAgICAgcHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgIHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgICBwcm9wcy5jaGVja2VkLFxuICAgICAgICAgIHByb3BzLmRlZmF1bHRDaGVja2VkLFxuICAgICAgICAgIHByb3BzLnR5cGUsXG4gICAgICAgICAgcHJvcHMubmFtZVxuICAgICAgICApO1xuICAgICAgICBpbnRlcm5hbEluc3RhbmNlID0gcHJvcHMubmFtZTtcbiAgICAgICAgaWYgKFwicmFkaW9cIiA9PT0gcHJvcHMudHlwZSAmJiBudWxsICE9IGludGVybmFsSW5zdGFuY2UpIHtcbiAgICAgICAgICBmb3IgKHByb3BzID0gdGFyZ2V0OyBwcm9wcy5wYXJlbnROb2RlOyApIHByb3BzID0gcHJvcHMucGFyZW50Tm9kZTtcbiAgICAgICAgICBwcm9wcyA9IHByb3BzLnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgICAgICAgICAnaW5wdXRbbmFtZT1cIicgK1xuICAgICAgICAgICAgICBlc2NhcGVTZWxlY3RvckF0dHJpYnV0ZVZhbHVlSW5zaWRlRG91YmxlUXVvdGVzKFxuICAgICAgICAgICAgICAgIFwiXCIgKyBpbnRlcm5hbEluc3RhbmNlXG4gICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAnXCJdW3R5cGU9XCJyYWRpb1wiXSdcbiAgICAgICAgICApO1xuICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICBpbnRlcm5hbEluc3RhbmNlID0gMDtcbiAgICAgICAgICAgIGludGVybmFsSW5zdGFuY2UgPCBwcm9wcy5sZW5ndGg7XG4gICAgICAgICAgICBpbnRlcm5hbEluc3RhbmNlKytcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHZhciBvdGhlck5vZGUgPSBwcm9wc1tpbnRlcm5hbEluc3RhbmNlXTtcbiAgICAgICAgICAgIGlmIChvdGhlck5vZGUgIT09IHRhcmdldCAmJiBvdGhlck5vZGUuZm9ybSA9PT0gdGFyZ2V0LmZvcm0pIHtcbiAgICAgICAgICAgICAgdmFyIG90aGVyUHJvcHMgPSBvdGhlck5vZGVbaW50ZXJuYWxQcm9wc0tleV0gfHwgbnVsbDtcbiAgICAgICAgICAgICAgaWYgKCFvdGhlclByb3BzKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDkwKSk7XG4gICAgICAgICAgICAgIHVwZGF0ZUlucHV0KFxuICAgICAgICAgICAgICAgIG90aGVyTm9kZSxcbiAgICAgICAgICAgICAgICBvdGhlclByb3BzLnZhbHVlLFxuICAgICAgICAgICAgICAgIG90aGVyUHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgICAgIG90aGVyUHJvcHMuZGVmYXVsdFZhbHVlLFxuICAgICAgICAgICAgICAgIG90aGVyUHJvcHMuY2hlY2tlZCxcbiAgICAgICAgICAgICAgICBvdGhlclByb3BzLmRlZmF1bHRDaGVja2VkLFxuICAgICAgICAgICAgICAgIG90aGVyUHJvcHMudHlwZSxcbiAgICAgICAgICAgICAgICBvdGhlclByb3BzLm5hbWVcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgZm9yIChcbiAgICAgICAgICAgIGludGVybmFsSW5zdGFuY2UgPSAwO1xuICAgICAgICAgICAgaW50ZXJuYWxJbnN0YW5jZSA8IHByb3BzLmxlbmd0aDtcbiAgICAgICAgICAgIGludGVybmFsSW5zdGFuY2UrK1xuICAgICAgICAgIClcbiAgICAgICAgICAgIChvdGhlck5vZGUgPSBwcm9wc1tpbnRlcm5hbEluc3RhbmNlXSksXG4gICAgICAgICAgICAgIG90aGVyTm9kZS5mb3JtID09PSB0YXJnZXQuZm9ybSAmJiB1cGRhdGVWYWx1ZUlmQ2hhbmdlZChvdGhlck5vZGUpO1xuICAgICAgICB9XG4gICAgICAgIGJyZWFrIGE7XG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgdXBkYXRlVGV4dGFyZWEodGFyZ2V0LCBwcm9wcy52YWx1ZSwgcHJvcHMuZGVmYXVsdFZhbHVlKTtcbiAgICAgICAgYnJlYWsgYTtcbiAgICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICAgICAgKGludGVybmFsSW5zdGFuY2UgPSBwcm9wcy52YWx1ZSksXG4gICAgICAgICAgbnVsbCAhPSBpbnRlcm5hbEluc3RhbmNlICYmXG4gICAgICAgICAgICB1cGRhdGVPcHRpb25zKHRhcmdldCwgISFwcm9wcy5tdWx0aXBsZSwgaW50ZXJuYWxJbnN0YW5jZSwgITEpO1xuICAgIH1cbiAgfVxufVxudmFyIGlzSW5zaWRlRXZlbnRIYW5kbGVyID0gITE7XG5mdW5jdGlvbiBiYXRjaGVkVXBkYXRlcyQxKGZuLCBhLCBiKSB7XG4gIGlmIChpc0luc2lkZUV2ZW50SGFuZGxlcikgcmV0dXJuIGZuKGEsIGIpO1xuICBpc0luc2lkZUV2ZW50SGFuZGxlciA9ICEwO1xuICB0cnkge1xuICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBmbihhKTtcbiAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0O1xuICB9IGZpbmFsbHkge1xuICAgIGlmIChcbiAgICAgICgoaXNJbnNpZGVFdmVudEhhbmRsZXIgPSAhMSksXG4gICAgICBudWxsICE9PSByZXN0b3JlVGFyZ2V0IHx8IG51bGwgIT09IHJlc3RvcmVRdWV1ZSlcbiAgICApXG4gICAgICBpZiAoXG4gICAgICAgIChmbHVzaFN5bmNXb3JrJDEoKSxcbiAgICAgICAgcmVzdG9yZVRhcmdldCAmJlxuICAgICAgICAgICgoYSA9IHJlc3RvcmVUYXJnZXQpLFxuICAgICAgICAgIChmbiA9IHJlc3RvcmVRdWV1ZSksXG4gICAgICAgICAgKHJlc3RvcmVRdWV1ZSA9IHJlc3RvcmVUYXJnZXQgPSBudWxsKSxcbiAgICAgICAgICByZXN0b3JlU3RhdGVPZlRhcmdldChhKSxcbiAgICAgICAgICBmbikpXG4gICAgICApXG4gICAgICAgIGZvciAoYSA9IDA7IGEgPCBmbi5sZW5ndGg7IGErKykgcmVzdG9yZVN0YXRlT2ZUYXJnZXQoZm5bYV0pO1xuICB9XG59XG5mdW5jdGlvbiBnZXRMaXN0ZW5lcihpbnN0LCByZWdpc3RyYXRpb25OYW1lKSB7XG4gIHZhciBzdGF0ZU5vZGUgPSBpbnN0LnN0YXRlTm9kZTtcbiAgaWYgKG51bGwgPT09IHN0YXRlTm9kZSkgcmV0dXJuIG51bGw7XG4gIHZhciBwcm9wcyA9IHN0YXRlTm9kZVtpbnRlcm5hbFByb3BzS2V5XSB8fCBudWxsO1xuICBpZiAobnVsbCA9PT0gcHJvcHMpIHJldHVybiBudWxsO1xuICBzdGF0ZU5vZGUgPSBwcm9wc1tyZWdpc3RyYXRpb25OYW1lXTtcbiAgYTogc3dpdGNoIChyZWdpc3RyYXRpb25OYW1lKSB7XG4gICAgY2FzZSBcIm9uQ2xpY2tcIjpcbiAgICBjYXNlIFwib25DbGlja0NhcHR1cmVcIjpcbiAgICBjYXNlIFwib25Eb3VibGVDbGlja1wiOlxuICAgIGNhc2UgXCJvbkRvdWJsZUNsaWNrQ2FwdHVyZVwiOlxuICAgIGNhc2UgXCJvbk1vdXNlRG93blwiOlxuICAgIGNhc2UgXCJvbk1vdXNlRG93bkNhcHR1cmVcIjpcbiAgICBjYXNlIFwib25Nb3VzZU1vdmVcIjpcbiAgICBjYXNlIFwib25Nb3VzZU1vdmVDYXB0dXJlXCI6XG4gICAgY2FzZSBcIm9uTW91c2VVcFwiOlxuICAgIGNhc2UgXCJvbk1vdXNlVXBDYXB0dXJlXCI6XG4gICAgY2FzZSBcIm9uTW91c2VFbnRlclwiOlxuICAgICAgKHByb3BzID0gIXByb3BzLmRpc2FibGVkKSB8fFxuICAgICAgICAoKGluc3QgPSBpbnN0LnR5cGUpLFxuICAgICAgICAocHJvcHMgPSAhKFxuICAgICAgICAgIFwiYnV0dG9uXCIgPT09IGluc3QgfHxcbiAgICAgICAgICBcImlucHV0XCIgPT09IGluc3QgfHxcbiAgICAgICAgICBcInNlbGVjdFwiID09PSBpbnN0IHx8XG4gICAgICAgICAgXCJ0ZXh0YXJlYVwiID09PSBpbnN0XG4gICAgICAgICkpKTtcbiAgICAgIGluc3QgPSAhcHJvcHM7XG4gICAgICBicmVhayBhO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpbnN0ID0gITE7XG4gIH1cbiAgaWYgKGluc3QpIHJldHVybiBudWxsO1xuICBpZiAoc3RhdGVOb2RlICYmIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHN0YXRlTm9kZSlcbiAgICB0aHJvdyBFcnJvcihcbiAgICAgIGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjMxLCByZWdpc3RyYXRpb25OYW1lLCB0eXBlb2Ygc3RhdGVOb2RlKVxuICAgICk7XG4gIHJldHVybiBzdGF0ZU5vZGU7XG59XG52YXIgcGFzc2l2ZUJyb3dzZXJFdmVudHNTdXBwb3J0ZWQgPSAhMTtcbmlmIChjYW5Vc2VET00pXG4gIHRyeSB7XG4gICAgdmFyIG9wdGlvbnMgPSB7fTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob3B0aW9ucywgXCJwYXNzaXZlXCIsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gKCkge1xuICAgICAgICBwYXNzaXZlQnJvd3NlckV2ZW50c1N1cHBvcnRlZCA9ICEwO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKFwidGVzdFwiLCBvcHRpb25zLCBvcHRpb25zKTtcbiAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihcInRlc3RcIiwgb3B0aW9ucywgb3B0aW9ucyk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBwYXNzaXZlQnJvd3NlckV2ZW50c1N1cHBvcnRlZCA9ICExO1xuICB9XG52YXIgcm9vdCA9IG51bGwsXG4gIHN0YXJ0VGV4dCA9IG51bGwsXG4gIGZhbGxiYWNrVGV4dCA9IG51bGw7XG5mdW5jdGlvbiBnZXREYXRhKCkge1xuICBpZiAoZmFsbGJhY2tUZXh0KSByZXR1cm4gZmFsbGJhY2tUZXh0O1xuICB2YXIgc3RhcnQsXG4gICAgc3RhcnRWYWx1ZSA9IHN0YXJ0VGV4dCxcbiAgICBzdGFydExlbmd0aCA9IHN0YXJ0VmFsdWUubGVuZ3RoLFxuICAgIGVuZCxcbiAgICBlbmRWYWx1ZSA9IFwidmFsdWVcIiBpbiByb290ID8gcm9vdC52YWx1ZSA6IHJvb3QudGV4dENvbnRlbnQsXG4gICAgZW5kTGVuZ3RoID0gZW5kVmFsdWUubGVuZ3RoO1xuICBmb3IgKFxuICAgIHN0YXJ0ID0gMDtcbiAgICBzdGFydCA8IHN0YXJ0TGVuZ3RoICYmIHN0YXJ0VmFsdWVbc3RhcnRdID09PSBlbmRWYWx1ZVtzdGFydF07XG4gICAgc3RhcnQrK1xuICApO1xuICB2YXIgbWluRW5kID0gc3RhcnRMZW5ndGggLSBzdGFydDtcbiAgZm9yIChcbiAgICBlbmQgPSAxO1xuICAgIGVuZCA8PSBtaW5FbmQgJiZcbiAgICBzdGFydFZhbHVlW3N0YXJ0TGVuZ3RoIC0gZW5kXSA9PT0gZW5kVmFsdWVbZW5kTGVuZ3RoIC0gZW5kXTtcbiAgICBlbmQrK1xuICApO1xuICByZXR1cm4gKGZhbGxiYWNrVGV4dCA9IGVuZFZhbHVlLnNsaWNlKHN0YXJ0LCAxIDwgZW5kID8gMSAtIGVuZCA6IHZvaWQgMCkpO1xufVxuZnVuY3Rpb24gZ2V0RXZlbnRDaGFyQ29kZShuYXRpdmVFdmVudCkge1xuICB2YXIga2V5Q29kZSA9IG5hdGl2ZUV2ZW50LmtleUNvZGU7XG4gIFwiY2hhckNvZGVcIiBpbiBuYXRpdmVFdmVudFxuICAgID8gKChuYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50LmNoYXJDb2RlKSxcbiAgICAgIDAgPT09IG5hdGl2ZUV2ZW50ICYmIDEzID09PSBrZXlDb2RlICYmIChuYXRpdmVFdmVudCA9IDEzKSlcbiAgICA6IChuYXRpdmVFdmVudCA9IGtleUNvZGUpO1xuICAxMCA9PT0gbmF0aXZlRXZlbnQgJiYgKG5hdGl2ZUV2ZW50ID0gMTMpO1xuICByZXR1cm4gMzIgPD0gbmF0aXZlRXZlbnQgfHwgMTMgPT09IG5hdGl2ZUV2ZW50ID8gbmF0aXZlRXZlbnQgOiAwO1xufVxuZnVuY3Rpb24gZnVuY3Rpb25UaGF0UmV0dXJuc1RydWUoKSB7XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGZ1bmN0aW9uVGhhdFJldHVybnNGYWxzZSgpIHtcbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gY3JlYXRlU3ludGhldGljRXZlbnQoSW50ZXJmYWNlKSB7XG4gIGZ1bmN0aW9uIFN5bnRoZXRpY0Jhc2VFdmVudChcbiAgICByZWFjdE5hbWUsXG4gICAgcmVhY3RFdmVudFR5cGUsXG4gICAgdGFyZ2V0SW5zdCxcbiAgICBuYXRpdmVFdmVudCxcbiAgICBuYXRpdmVFdmVudFRhcmdldFxuICApIHtcbiAgICB0aGlzLl9yZWFjdE5hbWUgPSByZWFjdE5hbWU7XG4gICAgdGhpcy5fdGFyZ2V0SW5zdCA9IHRhcmdldEluc3Q7XG4gICAgdGhpcy50eXBlID0gcmVhY3RFdmVudFR5cGU7XG4gICAgdGhpcy5uYXRpdmVFdmVudCA9IG5hdGl2ZUV2ZW50O1xuICAgIHRoaXMudGFyZ2V0ID0gbmF0aXZlRXZlbnRUYXJnZXQ7XG4gICAgdGhpcy5jdXJyZW50VGFyZ2V0ID0gbnVsbDtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBJbnRlcmZhY2UpXG4gICAgICBJbnRlcmZhY2UuaGFzT3duUHJvcGVydHkocHJvcE5hbWUpICYmXG4gICAgICAgICgocmVhY3ROYW1lID0gSW50ZXJmYWNlW3Byb3BOYW1lXSksXG4gICAgICAgICh0aGlzW3Byb3BOYW1lXSA9IHJlYWN0TmFtZVxuICAgICAgICAgID8gcmVhY3ROYW1lKG5hdGl2ZUV2ZW50KVxuICAgICAgICAgIDogbmF0aXZlRXZlbnRbcHJvcE5hbWVdKSk7XG4gICAgdGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSAoXG4gICAgICBudWxsICE9IG5hdGl2ZUV2ZW50LmRlZmF1bHRQcmV2ZW50ZWRcbiAgICAgICAgPyBuYXRpdmVFdmVudC5kZWZhdWx0UHJldmVudGVkXG4gICAgICAgIDogITEgPT09IG5hdGl2ZUV2ZW50LnJldHVyblZhbHVlXG4gICAgKVxuICAgICAgPyBmdW5jdGlvblRoYXRSZXR1cm5zVHJ1ZVxuICAgICAgOiBmdW5jdGlvblRoYXRSZXR1cm5zRmFsc2U7XG4gICAgdGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGZ1bmN0aW9uVGhhdFJldHVybnNGYWxzZTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxuICBhc3NpZ24oU3ludGhldGljQmFzZUV2ZW50LnByb3RvdHlwZSwge1xuICAgIHByZXZlbnREZWZhdWx0OiBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGlzLmRlZmF1bHRQcmV2ZW50ZWQgPSAhMDtcbiAgICAgIHZhciBldmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4gICAgICBldmVudCAmJlxuICAgICAgICAoZXZlbnQucHJldmVudERlZmF1bHRcbiAgICAgICAgICA/IGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICA6IFwidW5rbm93blwiICE9PSB0eXBlb2YgZXZlbnQucmV0dXJuVmFsdWUgJiYgKGV2ZW50LnJldHVyblZhbHVlID0gITEpLFxuICAgICAgICAodGhpcy5pc0RlZmF1bHRQcmV2ZW50ZWQgPSBmdW5jdGlvblRoYXRSZXR1cm5zVHJ1ZSkpO1xuICAgIH0sXG4gICAgc3RvcFByb3BhZ2F0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZXZlbnQgPSB0aGlzLm5hdGl2ZUV2ZW50O1xuICAgICAgZXZlbnQgJiZcbiAgICAgICAgKGV2ZW50LnN0b3BQcm9wYWdhdGlvblxuICAgICAgICAgID8gZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcbiAgICAgICAgICA6IFwidW5rbm93blwiICE9PSB0eXBlb2YgZXZlbnQuY2FuY2VsQnViYmxlICYmXG4gICAgICAgICAgICAoZXZlbnQuY2FuY2VsQnViYmxlID0gITApLFxuICAgICAgICAodGhpcy5pc1Byb3BhZ2F0aW9uU3RvcHBlZCA9IGZ1bmN0aW9uVGhhdFJldHVybnNUcnVlKSk7XG4gICAgfSxcbiAgICBwZXJzaXN0OiBmdW5jdGlvbiAoKSB7fSxcbiAgICBpc1BlcnNpc3RlbnQ6IGZ1bmN0aW9uVGhhdFJldHVybnNUcnVlXG4gIH0pO1xuICByZXR1cm4gU3ludGhldGljQmFzZUV2ZW50O1xufVxudmFyIEV2ZW50SW50ZXJmYWNlID0ge1xuICAgIGV2ZW50UGhhc2U6IDAsXG4gICAgYnViYmxlczogMCxcbiAgICBjYW5jZWxhYmxlOiAwLFxuICAgIHRpbWVTdGFtcDogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gZXZlbnQudGltZVN0YW1wIHx8IERhdGUubm93KCk7XG4gICAgfSxcbiAgICBkZWZhdWx0UHJldmVudGVkOiAwLFxuICAgIGlzVHJ1c3RlZDogMFxuICB9LFxuICBTeW50aGV0aWNFdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KEV2ZW50SW50ZXJmYWNlKSxcbiAgVUlFdmVudEludGVyZmFjZSA9IGFzc2lnbih7fSwgRXZlbnRJbnRlcmZhY2UsIHsgdmlldzogMCwgZGV0YWlsOiAwIH0pLFxuICBTeW50aGV0aWNVSUV2ZW50ID0gY3JlYXRlU3ludGhldGljRXZlbnQoVUlFdmVudEludGVyZmFjZSksXG4gIGxhc3RNb3ZlbWVudFgsXG4gIGxhc3RNb3ZlbWVudFksXG4gIGxhc3RNb3VzZUV2ZW50LFxuICBNb3VzZUV2ZW50SW50ZXJmYWNlID0gYXNzaWduKHt9LCBVSUV2ZW50SW50ZXJmYWNlLCB7XG4gICAgc2NyZWVuWDogMCxcbiAgICBzY3JlZW5ZOiAwLFxuICAgIGNsaWVudFg6IDAsXG4gICAgY2xpZW50WTogMCxcbiAgICBwYWdlWDogMCxcbiAgICBwYWdlWTogMCxcbiAgICBjdHJsS2V5OiAwLFxuICAgIHNoaWZ0S2V5OiAwLFxuICAgIGFsdEtleTogMCxcbiAgICBtZXRhS2V5OiAwLFxuICAgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZSxcbiAgICBidXR0b246IDAsXG4gICAgYnV0dG9uczogMCxcbiAgICByZWxhdGVkVGFyZ2V0OiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJldHVybiB2b2lkIDAgPT09IGV2ZW50LnJlbGF0ZWRUYXJnZXRcbiAgICAgICAgPyBldmVudC5mcm9tRWxlbWVudCA9PT0gZXZlbnQuc3JjRWxlbWVudFxuICAgICAgICAgID8gZXZlbnQudG9FbGVtZW50XG4gICAgICAgICAgOiBldmVudC5mcm9tRWxlbWVudFxuICAgICAgICA6IGV2ZW50LnJlbGF0ZWRUYXJnZXQ7XG4gICAgfSxcbiAgICBtb3ZlbWVudFg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgaWYgKFwibW92ZW1lbnRYXCIgaW4gZXZlbnQpIHJldHVybiBldmVudC5tb3ZlbWVudFg7XG4gICAgICBldmVudCAhPT0gbGFzdE1vdXNlRXZlbnQgJiZcbiAgICAgICAgKGxhc3RNb3VzZUV2ZW50ICYmIFwibW91c2Vtb3ZlXCIgPT09IGV2ZW50LnR5cGVcbiAgICAgICAgICA/ICgobGFzdE1vdmVtZW50WCA9IGV2ZW50LnNjcmVlblggLSBsYXN0TW91c2VFdmVudC5zY3JlZW5YKSxcbiAgICAgICAgICAgIChsYXN0TW92ZW1lbnRZID0gZXZlbnQuc2NyZWVuWSAtIGxhc3RNb3VzZUV2ZW50LnNjcmVlblkpKVxuICAgICAgICAgIDogKGxhc3RNb3ZlbWVudFkgPSBsYXN0TW92ZW1lbnRYID0gMCksXG4gICAgICAgIChsYXN0TW91c2VFdmVudCA9IGV2ZW50KSk7XG4gICAgICByZXR1cm4gbGFzdE1vdmVtZW50WDtcbiAgICB9LFxuICAgIG1vdmVtZW50WTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gXCJtb3ZlbWVudFlcIiBpbiBldmVudCA/IGV2ZW50Lm1vdmVtZW50WSA6IGxhc3RNb3ZlbWVudFk7XG4gICAgfVxuICB9KSxcbiAgU3ludGhldGljTW91c2VFdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KE1vdXNlRXZlbnRJbnRlcmZhY2UpLFxuICBEcmFnRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIE1vdXNlRXZlbnRJbnRlcmZhY2UsIHsgZGF0YVRyYW5zZmVyOiAwIH0pLFxuICBTeW50aGV0aWNEcmFnRXZlbnQgPSBjcmVhdGVTeW50aGV0aWNFdmVudChEcmFnRXZlbnRJbnRlcmZhY2UpLFxuICBGb2N1c0V2ZW50SW50ZXJmYWNlID0gYXNzaWduKHt9LCBVSUV2ZW50SW50ZXJmYWNlLCB7IHJlbGF0ZWRUYXJnZXQ6IDAgfSksXG4gIFN5bnRoZXRpY0ZvY3VzRXZlbnQgPSBjcmVhdGVTeW50aGV0aWNFdmVudChGb2N1c0V2ZW50SW50ZXJmYWNlKSxcbiAgQW5pbWF0aW9uRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIEV2ZW50SW50ZXJmYWNlLCB7XG4gICAgYW5pbWF0aW9uTmFtZTogMCxcbiAgICBlbGFwc2VkVGltZTogMCxcbiAgICBwc2V1ZG9FbGVtZW50OiAwXG4gIH0pLFxuICBTeW50aGV0aWNBbmltYXRpb25FdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KEFuaW1hdGlvbkV2ZW50SW50ZXJmYWNlKSxcbiAgQ2xpcGJvYXJkRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIEV2ZW50SW50ZXJmYWNlLCB7XG4gICAgY2xpcGJvYXJkRGF0YTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gXCJjbGlwYm9hcmREYXRhXCIgaW4gZXZlbnRcbiAgICAgICAgPyBldmVudC5jbGlwYm9hcmREYXRhXG4gICAgICAgIDogd2luZG93LmNsaXBib2FyZERhdGE7XG4gICAgfVxuICB9KSxcbiAgU3ludGhldGljQ2xpcGJvYXJkRXZlbnQgPSBjcmVhdGVTeW50aGV0aWNFdmVudChDbGlwYm9hcmRFdmVudEludGVyZmFjZSksXG4gIENvbXBvc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIEV2ZW50SW50ZXJmYWNlLCB7IGRhdGE6IDAgfSksXG4gIFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQgPSBjcmVhdGVTeW50aGV0aWNFdmVudChDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlKSxcbiAgbm9ybWFsaXplS2V5ID0ge1xuICAgIEVzYzogXCJFc2NhcGVcIixcbiAgICBTcGFjZWJhcjogXCIgXCIsXG4gICAgTGVmdDogXCJBcnJvd0xlZnRcIixcbiAgICBVcDogXCJBcnJvd1VwXCIsXG4gICAgUmlnaHQ6IFwiQXJyb3dSaWdodFwiLFxuICAgIERvd246IFwiQXJyb3dEb3duXCIsXG4gICAgRGVsOiBcIkRlbGV0ZVwiLFxuICAgIFdpbjogXCJPU1wiLFxuICAgIE1lbnU6IFwiQ29udGV4dE1lbnVcIixcbiAgICBBcHBzOiBcIkNvbnRleHRNZW51XCIsXG4gICAgU2Nyb2xsOiBcIlNjcm9sbExvY2tcIixcbiAgICBNb3pQcmludGFibGVLZXk6IFwiVW5pZGVudGlmaWVkXCJcbiAgfSxcbiAgdHJhbnNsYXRlVG9LZXkgPSB7XG4gICAgODogXCJCYWNrc3BhY2VcIixcbiAgICA5OiBcIlRhYlwiLFxuICAgIDEyOiBcIkNsZWFyXCIsXG4gICAgMTM6IFwiRW50ZXJcIixcbiAgICAxNjogXCJTaGlmdFwiLFxuICAgIDE3OiBcIkNvbnRyb2xcIixcbiAgICAxODogXCJBbHRcIixcbiAgICAxOTogXCJQYXVzZVwiLFxuICAgIDIwOiBcIkNhcHNMb2NrXCIsXG4gICAgMjc6IFwiRXNjYXBlXCIsXG4gICAgMzI6IFwiIFwiLFxuICAgIDMzOiBcIlBhZ2VVcFwiLFxuICAgIDM0OiBcIlBhZ2VEb3duXCIsXG4gICAgMzU6IFwiRW5kXCIsXG4gICAgMzY6IFwiSG9tZVwiLFxuICAgIDM3OiBcIkFycm93TGVmdFwiLFxuICAgIDM4OiBcIkFycm93VXBcIixcbiAgICAzOTogXCJBcnJvd1JpZ2h0XCIsXG4gICAgNDA6IFwiQXJyb3dEb3duXCIsXG4gICAgNDU6IFwiSW5zZXJ0XCIsXG4gICAgNDY6IFwiRGVsZXRlXCIsXG4gICAgMTEyOiBcIkYxXCIsXG4gICAgMTEzOiBcIkYyXCIsXG4gICAgMTE0OiBcIkYzXCIsXG4gICAgMTE1OiBcIkY0XCIsXG4gICAgMTE2OiBcIkY1XCIsXG4gICAgMTE3OiBcIkY2XCIsXG4gICAgMTE4OiBcIkY3XCIsXG4gICAgMTE5OiBcIkY4XCIsXG4gICAgMTIwOiBcIkY5XCIsXG4gICAgMTIxOiBcIkYxMFwiLFxuICAgIDEyMjogXCJGMTFcIixcbiAgICAxMjM6IFwiRjEyXCIsXG4gICAgMTQ0OiBcIk51bUxvY2tcIixcbiAgICAxNDU6IFwiU2Nyb2xsTG9ja1wiLFxuICAgIDIyNDogXCJNZXRhXCJcbiAgfSxcbiAgbW9kaWZpZXJLZXlUb1Byb3AgPSB7XG4gICAgQWx0OiBcImFsdEtleVwiLFxuICAgIENvbnRyb2w6IFwiY3RybEtleVwiLFxuICAgIE1ldGE6IFwibWV0YUtleVwiLFxuICAgIFNoaWZ0OiBcInNoaWZ0S2V5XCJcbiAgfTtcbmZ1bmN0aW9uIG1vZGlmaWVyU3RhdGVHZXR0ZXIoa2V5QXJnKSB7XG4gIHZhciBuYXRpdmVFdmVudCA9IHRoaXMubmF0aXZlRXZlbnQ7XG4gIHJldHVybiBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlXG4gICAgPyBuYXRpdmVFdmVudC5nZXRNb2RpZmllclN0YXRlKGtleUFyZylcbiAgICA6IChrZXlBcmcgPSBtb2RpZmllcktleVRvUHJvcFtrZXlBcmddKVxuICAgICAgPyAhIW5hdGl2ZUV2ZW50W2tleUFyZ11cbiAgICAgIDogITE7XG59XG5mdW5jdGlvbiBnZXRFdmVudE1vZGlmaWVyU3RhdGUoKSB7XG4gIHJldHVybiBtb2RpZmllclN0YXRlR2V0dGVyO1xufVxudmFyIEtleWJvYXJkRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIFVJRXZlbnRJbnRlcmZhY2UsIHtcbiAgICBrZXk6IGZ1bmN0aW9uIChuYXRpdmVFdmVudCkge1xuICAgICAgaWYgKG5hdGl2ZUV2ZW50LmtleSkge1xuICAgICAgICB2YXIga2V5ID0gbm9ybWFsaXplS2V5W25hdGl2ZUV2ZW50LmtleV0gfHwgbmF0aXZlRXZlbnQua2V5O1xuICAgICAgICBpZiAoXCJVbmlkZW50aWZpZWRcIiAhPT0ga2V5KSByZXR1cm4ga2V5O1xuICAgICAgfVxuICAgICAgcmV0dXJuIFwia2V5cHJlc3NcIiA9PT0gbmF0aXZlRXZlbnQudHlwZVxuICAgICAgICA/ICgobmF0aXZlRXZlbnQgPSBnZXRFdmVudENoYXJDb2RlKG5hdGl2ZUV2ZW50KSksXG4gICAgICAgICAgMTMgPT09IG5hdGl2ZUV2ZW50ID8gXCJFbnRlclwiIDogU3RyaW5nLmZyb21DaGFyQ29kZShuYXRpdmVFdmVudCkpXG4gICAgICAgIDogXCJrZXlkb3duXCIgPT09IG5hdGl2ZUV2ZW50LnR5cGUgfHwgXCJrZXl1cFwiID09PSBuYXRpdmVFdmVudC50eXBlXG4gICAgICAgICAgPyB0cmFuc2xhdGVUb0tleVtuYXRpdmVFdmVudC5rZXlDb2RlXSB8fCBcIlVuaWRlbnRpZmllZFwiXG4gICAgICAgICAgOiBcIlwiO1xuICAgIH0sXG4gICAgY29kZTogMCxcbiAgICBsb2NhdGlvbjogMCxcbiAgICBjdHJsS2V5OiAwLFxuICAgIHNoaWZ0S2V5OiAwLFxuICAgIGFsdEtleTogMCxcbiAgICBtZXRhS2V5OiAwLFxuICAgIHJlcGVhdDogMCxcbiAgICBsb2NhbGU6IDAsXG4gICAgZ2V0TW9kaWZpZXJTdGF0ZTogZ2V0RXZlbnRNb2RpZmllclN0YXRlLFxuICAgIGNoYXJDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJldHVybiBcImtleXByZXNzXCIgPT09IGV2ZW50LnR5cGUgPyBnZXRFdmVudENoYXJDb2RlKGV2ZW50KSA6IDA7XG4gICAgfSxcbiAgICBrZXlDb2RlOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJldHVybiBcImtleWRvd25cIiA9PT0gZXZlbnQudHlwZSB8fCBcImtleXVwXCIgPT09IGV2ZW50LnR5cGVcbiAgICAgICAgPyBldmVudC5rZXlDb2RlXG4gICAgICAgIDogMDtcbiAgICB9LFxuICAgIHdoaWNoOiBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIHJldHVybiBcImtleXByZXNzXCIgPT09IGV2ZW50LnR5cGVcbiAgICAgICAgPyBnZXRFdmVudENoYXJDb2RlKGV2ZW50KVxuICAgICAgICA6IFwia2V5ZG93blwiID09PSBldmVudC50eXBlIHx8IFwia2V5dXBcIiA9PT0gZXZlbnQudHlwZVxuICAgICAgICAgID8gZXZlbnQua2V5Q29kZVxuICAgICAgICAgIDogMDtcbiAgICB9XG4gIH0pLFxuICBTeW50aGV0aWNLZXlib2FyZEV2ZW50ID0gY3JlYXRlU3ludGhldGljRXZlbnQoS2V5Ym9hcmRFdmVudEludGVyZmFjZSksXG4gIFBvaW50ZXJFdmVudEludGVyZmFjZSA9IGFzc2lnbih7fSwgTW91c2VFdmVudEludGVyZmFjZSwge1xuICAgIHBvaW50ZXJJZDogMCxcbiAgICB3aWR0aDogMCxcbiAgICBoZWlnaHQ6IDAsXG4gICAgcHJlc3N1cmU6IDAsXG4gICAgdGFuZ2VudGlhbFByZXNzdXJlOiAwLFxuICAgIHRpbHRYOiAwLFxuICAgIHRpbHRZOiAwLFxuICAgIHR3aXN0OiAwLFxuICAgIHBvaW50ZXJUeXBlOiAwLFxuICAgIGlzUHJpbWFyeTogMFxuICB9KSxcbiAgU3ludGhldGljUG9pbnRlckV2ZW50ID0gY3JlYXRlU3ludGhldGljRXZlbnQoUG9pbnRlckV2ZW50SW50ZXJmYWNlKSxcbiAgVG91Y2hFdmVudEludGVyZmFjZSA9IGFzc2lnbih7fSwgVUlFdmVudEludGVyZmFjZSwge1xuICAgIHRvdWNoZXM6IDAsXG4gICAgdGFyZ2V0VG91Y2hlczogMCxcbiAgICBjaGFuZ2VkVG91Y2hlczogMCxcbiAgICBhbHRLZXk6IDAsXG4gICAgbWV0YUtleTogMCxcbiAgICBjdHJsS2V5OiAwLFxuICAgIHNoaWZ0S2V5OiAwLFxuICAgIGdldE1vZGlmaWVyU3RhdGU6IGdldEV2ZW50TW9kaWZpZXJTdGF0ZVxuICB9KSxcbiAgU3ludGhldGljVG91Y2hFdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KFRvdWNoRXZlbnRJbnRlcmZhY2UpLFxuICBUcmFuc2l0aW9uRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIEV2ZW50SW50ZXJmYWNlLCB7XG4gICAgcHJvcGVydHlOYW1lOiAwLFxuICAgIGVsYXBzZWRUaW1lOiAwLFxuICAgIHBzZXVkb0VsZW1lbnQ6IDBcbiAgfSksXG4gIFN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KFRyYW5zaXRpb25FdmVudEludGVyZmFjZSksXG4gIFdoZWVsRXZlbnRJbnRlcmZhY2UgPSBhc3NpZ24oe30sIE1vdXNlRXZlbnRJbnRlcmZhY2UsIHtcbiAgICBkZWx0YVg6IGZ1bmN0aW9uIChldmVudCkge1xuICAgICAgcmV0dXJuIFwiZGVsdGFYXCIgaW4gZXZlbnRcbiAgICAgICAgPyBldmVudC5kZWx0YVhcbiAgICAgICAgOiBcIndoZWVsRGVsdGFYXCIgaW4gZXZlbnRcbiAgICAgICAgICA/IC1ldmVudC53aGVlbERlbHRhWFxuICAgICAgICAgIDogMDtcbiAgICB9LFxuICAgIGRlbHRhWTogZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgICByZXR1cm4gXCJkZWx0YVlcIiBpbiBldmVudFxuICAgICAgICA/IGV2ZW50LmRlbHRhWVxuICAgICAgICA6IFwid2hlZWxEZWx0YVlcIiBpbiBldmVudFxuICAgICAgICAgID8gLWV2ZW50LndoZWVsRGVsdGFZXG4gICAgICAgICAgOiBcIndoZWVsRGVsdGFcIiBpbiBldmVudFxuICAgICAgICAgICAgPyAtZXZlbnQud2hlZWxEZWx0YVxuICAgICAgICAgICAgOiAwO1xuICAgIH0sXG4gICAgZGVsdGFaOiAwLFxuICAgIGRlbHRhTW9kZTogMFxuICB9KSxcbiAgU3ludGhldGljV2hlZWxFdmVudCA9IGNyZWF0ZVN5bnRoZXRpY0V2ZW50KFdoZWVsRXZlbnRJbnRlcmZhY2UpLFxuICBUb2dnbGVFdmVudEludGVyZmFjZSA9IGFzc2lnbih7fSwgRXZlbnRJbnRlcmZhY2UsIHtcbiAgICBuZXdTdGF0ZTogMCxcbiAgICBvbGRTdGF0ZTogMFxuICB9KSxcbiAgU3ludGhldGljVG9nZ2xlRXZlbnQgPSBjcmVhdGVTeW50aGV0aWNFdmVudChUb2dnbGVFdmVudEludGVyZmFjZSksXG4gIEVORF9LRVlDT0RFUyA9IFs5LCAxMywgMjcsIDMyXSxcbiAgY2FuVXNlQ29tcG9zaXRpb25FdmVudCA9IGNhblVzZURPTSAmJiBcIkNvbXBvc2l0aW9uRXZlbnRcIiBpbiB3aW5kb3csXG4gIGRvY3VtZW50TW9kZSA9IG51bGw7XG5jYW5Vc2VET00gJiZcbiAgXCJkb2N1bWVudE1vZGVcIiBpbiBkb2N1bWVudCAmJlxuICAoZG9jdW1lbnRNb2RlID0gZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTtcbnZhciBjYW5Vc2VUZXh0SW5wdXRFdmVudCA9IGNhblVzZURPTSAmJiBcIlRleHRFdmVudFwiIGluIHdpbmRvdyAmJiAhZG9jdW1lbnRNb2RlLFxuICB1c2VGYWxsYmFja0NvbXBvc2l0aW9uRGF0YSA9XG4gICAgY2FuVXNlRE9NICYmXG4gICAgKCFjYW5Vc2VDb21wb3NpdGlvbkV2ZW50IHx8XG4gICAgICAoZG9jdW1lbnRNb2RlICYmIDggPCBkb2N1bWVudE1vZGUgJiYgMTEgPj0gZG9jdW1lbnRNb2RlKSksXG4gIFNQQUNFQkFSX0NIQVIgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDMyKSxcbiAgaGFzU3BhY2VLZXlwcmVzcyA9ICExO1xuZnVuY3Rpb24gaXNGYWxsYmFja0NvbXBvc2l0aW9uRW5kKGRvbUV2ZW50TmFtZSwgbmF0aXZlRXZlbnQpIHtcbiAgc3dpdGNoIChkb21FdmVudE5hbWUpIHtcbiAgICBjYXNlIFwia2V5dXBcIjpcbiAgICAgIHJldHVybiAtMSAhPT0gRU5EX0tFWUNPREVTLmluZGV4T2YobmF0aXZlRXZlbnQua2V5Q29kZSk7XG4gICAgY2FzZSBcImtleWRvd25cIjpcbiAgICAgIHJldHVybiAyMjkgIT09IG5hdGl2ZUV2ZW50LmtleUNvZGU7XG4gICAgY2FzZSBcImtleXByZXNzXCI6XG4gICAgY2FzZSBcIm1vdXNlZG93blwiOlxuICAgIGNhc2UgXCJmb2N1c291dFwiOlxuICAgICAgcmV0dXJuICEwO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gITE7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpIHtcbiAgbmF0aXZlRXZlbnQgPSBuYXRpdmVFdmVudC5kZXRhaWw7XG4gIHJldHVybiBcIm9iamVjdFwiID09PSB0eXBlb2YgbmF0aXZlRXZlbnQgJiYgXCJkYXRhXCIgaW4gbmF0aXZlRXZlbnRcbiAgICA/IG5hdGl2ZUV2ZW50LmRhdGFcbiAgICA6IG51bGw7XG59XG52YXIgaXNDb21wb3NpbmcgPSAhMTtcbmZ1bmN0aW9uIGdldE5hdGl2ZUJlZm9yZUlucHV0Q2hhcnMoZG9tRXZlbnROYW1lLCBuYXRpdmVFdmVudCkge1xuICBzd2l0Y2ggKGRvbUV2ZW50TmFtZSkge1xuICAgIGNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOlxuICAgICAgcmV0dXJuIGdldERhdGFGcm9tQ3VzdG9tRXZlbnQobmF0aXZlRXZlbnQpO1xuICAgIGNhc2UgXCJrZXlwcmVzc1wiOlxuICAgICAgaWYgKDMyICE9PSBuYXRpdmVFdmVudC53aGljaCkgcmV0dXJuIG51bGw7XG4gICAgICBoYXNTcGFjZUtleXByZXNzID0gITA7XG4gICAgICByZXR1cm4gU1BBQ0VCQVJfQ0hBUjtcbiAgICBjYXNlIFwidGV4dElucHV0XCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAoZG9tRXZlbnROYW1lID0gbmF0aXZlRXZlbnQuZGF0YSksXG4gICAgICAgIGRvbUV2ZW50TmFtZSA9PT0gU1BBQ0VCQVJfQ0hBUiAmJiBoYXNTcGFjZUtleXByZXNzID8gbnVsbCA6IGRvbUV2ZW50TmFtZVxuICAgICAgKTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIG51bGw7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldEZhbGxiYWNrQmVmb3JlSW5wdXRDaGFycyhkb21FdmVudE5hbWUsIG5hdGl2ZUV2ZW50KSB7XG4gIGlmIChpc0NvbXBvc2luZylcbiAgICByZXR1cm4gXCJjb21wb3NpdGlvbmVuZFwiID09PSBkb21FdmVudE5hbWUgfHxcbiAgICAgICghY2FuVXNlQ29tcG9zaXRpb25FdmVudCAmJlxuICAgICAgICBpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQoZG9tRXZlbnROYW1lLCBuYXRpdmVFdmVudCkpXG4gICAgICA/ICgoZG9tRXZlbnROYW1lID0gZ2V0RGF0YSgpKSxcbiAgICAgICAgKGZhbGxiYWNrVGV4dCA9IHN0YXJ0VGV4dCA9IHJvb3QgPSBudWxsKSxcbiAgICAgICAgKGlzQ29tcG9zaW5nID0gITEpLFxuICAgICAgICBkb21FdmVudE5hbWUpXG4gICAgICA6IG51bGw7XG4gIHN3aXRjaCAoZG9tRXZlbnROYW1lKSB7XG4gICAgY2FzZSBcInBhc3RlXCI6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIFwia2V5cHJlc3NcIjpcbiAgICAgIGlmIChcbiAgICAgICAgIShuYXRpdmVFdmVudC5jdHJsS2V5IHx8IG5hdGl2ZUV2ZW50LmFsdEtleSB8fCBuYXRpdmVFdmVudC5tZXRhS2V5KSB8fFxuICAgICAgICAobmF0aXZlRXZlbnQuY3RybEtleSAmJiBuYXRpdmVFdmVudC5hbHRLZXkpXG4gICAgICApIHtcbiAgICAgICAgaWYgKG5hdGl2ZUV2ZW50LmNoYXIgJiYgMSA8IG5hdGl2ZUV2ZW50LmNoYXIubGVuZ3RoKVxuICAgICAgICAgIHJldHVybiBuYXRpdmVFdmVudC5jaGFyO1xuICAgICAgICBpZiAobmF0aXZlRXZlbnQud2hpY2gpIHJldHVybiBTdHJpbmcuZnJvbUNoYXJDb2RlKG5hdGl2ZUV2ZW50LndoaWNoKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOlxuICAgICAgcmV0dXJuIHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhICYmIFwia29cIiAhPT0gbmF0aXZlRXZlbnQubG9jYWxlXG4gICAgICAgID8gbnVsbFxuICAgICAgICA6IG5hdGl2ZUV2ZW50LmRhdGE7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG59XG52YXIgc3VwcG9ydGVkSW5wdXRUeXBlcyA9IHtcbiAgY29sb3I6ICEwLFxuICBkYXRlOiAhMCxcbiAgZGF0ZXRpbWU6ICEwLFxuICBcImRhdGV0aW1lLWxvY2FsXCI6ICEwLFxuICBlbWFpbDogITAsXG4gIG1vbnRoOiAhMCxcbiAgbnVtYmVyOiAhMCxcbiAgcGFzc3dvcmQ6ICEwLFxuICByYW5nZTogITAsXG4gIHNlYXJjaDogITAsXG4gIHRlbDogITAsXG4gIHRleHQ6ICEwLFxuICB0aW1lOiAhMCxcbiAgdXJsOiAhMCxcbiAgd2VlazogITBcbn07XG5mdW5jdGlvbiBpc1RleHRJbnB1dEVsZW1lbnQoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gXCJpbnB1dFwiID09PSBub2RlTmFtZVxuICAgID8gISFzdXBwb3J0ZWRJbnB1dFR5cGVzW2VsZW0udHlwZV1cbiAgICA6IFwidGV4dGFyZWFcIiA9PT0gbm9kZU5hbWVcbiAgICAgID8gITBcbiAgICAgIDogITE7XG59XG5mdW5jdGlvbiBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoXG4gIGRpc3BhdGNoUXVldWUsXG4gIGluc3QsXG4gIG5hdGl2ZUV2ZW50LFxuICB0YXJnZXRcbikge1xuICByZXN0b3JlVGFyZ2V0XG4gICAgPyByZXN0b3JlUXVldWVcbiAgICAgID8gcmVzdG9yZVF1ZXVlLnB1c2godGFyZ2V0KVxuICAgICAgOiAocmVzdG9yZVF1ZXVlID0gW3RhcmdldF0pXG4gICAgOiAocmVzdG9yZVRhcmdldCA9IHRhcmdldCk7XG4gIGluc3QgPSBhY2N1bXVsYXRlVHdvUGhhc2VMaXN0ZW5lcnMoaW5zdCwgXCJvbkNoYW5nZVwiKTtcbiAgMCA8IGluc3QubGVuZ3RoICYmXG4gICAgKChuYXRpdmVFdmVudCA9IG5ldyBTeW50aGV0aWNFdmVudChcbiAgICAgIFwib25DaGFuZ2VcIixcbiAgICAgIFwiY2hhbmdlXCIsXG4gICAgICBudWxsLFxuICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICB0YXJnZXRcbiAgICApKSxcbiAgICBkaXNwYXRjaFF1ZXVlLnB1c2goeyBldmVudDogbmF0aXZlRXZlbnQsIGxpc3RlbmVyczogaW5zdCB9KSk7XG59XG52YXIgYWN0aXZlRWxlbWVudCQxID0gbnVsbCxcbiAgYWN0aXZlRWxlbWVudEluc3QkMSA9IG51bGw7XG5mdW5jdGlvbiBydW5FdmVudEluQmF0Y2goZGlzcGF0Y2hRdWV1ZSkge1xuICBwcm9jZXNzRGlzcGF0Y2hRdWV1ZShkaXNwYXRjaFF1ZXVlLCAwKTtcbn1cbmZ1bmN0aW9uIGdldEluc3RJZlZhbHVlQ2hhbmdlZCh0YXJnZXRJbnN0KSB7XG4gIHZhciB0YXJnZXROb2RlID0gZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KTtcbiAgaWYgKHVwZGF0ZVZhbHVlSWZDaGFuZ2VkKHRhcmdldE5vZGUpKSByZXR1cm4gdGFyZ2V0SW5zdDtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JDaGFuZ2VFdmVudChkb21FdmVudE5hbWUsIHRhcmdldEluc3QpIHtcbiAgaWYgKFwiY2hhbmdlXCIgPT09IGRvbUV2ZW50TmFtZSkgcmV0dXJuIHRhcmdldEluc3Q7XG59XG52YXIgaXNJbnB1dEV2ZW50U3VwcG9ydGVkID0gITE7XG5pZiAoY2FuVXNlRE9NKSB7XG4gIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDI4MztcbiAgaWYgKGNhblVzZURPTSkge1xuICAgIHZhciBpc1N1cHBvcnRlZCRqc2NvbXAkaW5saW5lXzQxOCA9IFwib25pbnB1dFwiIGluIGRvY3VtZW50O1xuICAgIGlmICghaXNTdXBwb3J0ZWQkanNjb21wJGlubGluZV80MTgpIHtcbiAgICAgIHZhciBlbGVtZW50JGpzY29tcCRpbmxpbmVfNDE5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgIGVsZW1lbnQkanNjb21wJGlubGluZV80MTkuc2V0QXR0cmlidXRlKFwib25pbnB1dFwiLCBcInJldHVybjtcIik7XG4gICAgICBpc1N1cHBvcnRlZCRqc2NvbXAkaW5saW5lXzQxOCA9XG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGVsZW1lbnQkanNjb21wJGlubGluZV80MTkub25pbnB1dDtcbiAgICB9XG4gICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQyODMgPSBpc1N1cHBvcnRlZCRqc2NvbXAkaW5saW5lXzQxODtcbiAgfSBlbHNlIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMjgzID0gITE7XG4gIGlzSW5wdXRFdmVudFN1cHBvcnRlZCA9XG4gICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQyODMgJiZcbiAgICAoIWRvY3VtZW50LmRvY3VtZW50TW9kZSB8fCA5IDwgZG9jdW1lbnQuZG9jdW1lbnRNb2RlKTtcbn1cbmZ1bmN0aW9uIHN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlKCkge1xuICBhY3RpdmVFbGVtZW50JDEgJiZcbiAgICAoYWN0aXZlRWxlbWVudCQxLmRldGFjaEV2ZW50KFwib25wcm9wZXJ0eWNoYW5nZVwiLCBoYW5kbGVQcm9wZXJ0eUNoYW5nZSksXG4gICAgKGFjdGl2ZUVsZW1lbnRJbnN0JDEgPSBhY3RpdmVFbGVtZW50JDEgPSBudWxsKSk7XG59XG5mdW5jdGlvbiBoYW5kbGVQcm9wZXJ0eUNoYW5nZShuYXRpdmVFdmVudCkge1xuICBpZiAoXG4gICAgXCJ2YWx1ZVwiID09PSBuYXRpdmVFdmVudC5wcm9wZXJ0eU5hbWUgJiZcbiAgICBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QkMSlcbiAgKSB7XG4gICAgdmFyIGRpc3BhdGNoUXVldWUgPSBbXTtcbiAgICBjcmVhdGVBbmRBY2N1bXVsYXRlQ2hhbmdlRXZlbnQoXG4gICAgICBkaXNwYXRjaFF1ZXVlLFxuICAgICAgYWN0aXZlRWxlbWVudEluc3QkMSxcbiAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgZ2V0RXZlbnRUYXJnZXQobmF0aXZlRXZlbnQpXG4gICAgKTtcbiAgICBiYXRjaGVkVXBkYXRlcyQxKHJ1bkV2ZW50SW5CYXRjaCwgZGlzcGF0Y2hRdWV1ZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRQb2x5ZmlsbChkb21FdmVudE5hbWUsIHRhcmdldCwgdGFyZ2V0SW5zdCkge1xuICBcImZvY3VzaW5cIiA9PT0gZG9tRXZlbnROYW1lXG4gICAgPyAoc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKSxcbiAgICAgIChhY3RpdmVFbGVtZW50JDEgPSB0YXJnZXQpLFxuICAgICAgKGFjdGl2ZUVsZW1lbnRJbnN0JDEgPSB0YXJnZXRJbnN0KSxcbiAgICAgIGFjdGl2ZUVsZW1lbnQkMS5hdHRhY2hFdmVudChcIm9ucHJvcGVydHljaGFuZ2VcIiwgaGFuZGxlUHJvcGVydHlDaGFuZ2UpKVxuICAgIDogXCJmb2N1c291dFwiID09PSBkb21FdmVudE5hbWUgJiYgc3RvcFdhdGNoaW5nRm9yVmFsdWVDaGFuZ2UoKTtcbn1cbmZ1bmN0aW9uIGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGwoZG9tRXZlbnROYW1lKSB7XG4gIGlmIChcbiAgICBcInNlbGVjdGlvbmNoYW5nZVwiID09PSBkb21FdmVudE5hbWUgfHxcbiAgICBcImtleXVwXCIgPT09IGRvbUV2ZW50TmFtZSB8fFxuICAgIFwia2V5ZG93blwiID09PSBkb21FdmVudE5hbWVcbiAgKVxuICAgIHJldHVybiBnZXRJbnN0SWZWYWx1ZUNoYW5nZWQoYWN0aXZlRWxlbWVudEluc3QkMSk7XG59XG5mdW5jdGlvbiBnZXRUYXJnZXRJbnN0Rm9yQ2xpY2tFdmVudChkb21FdmVudE5hbWUsIHRhcmdldEluc3QpIHtcbiAgaWYgKFwiY2xpY2tcIiA9PT0gZG9tRXZlbnROYW1lKSByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3QpO1xufVxuZnVuY3Rpb24gZ2V0VGFyZ2V0SW5zdEZvcklucHV0T3JDaGFuZ2VFdmVudChkb21FdmVudE5hbWUsIHRhcmdldEluc3QpIHtcbiAgaWYgKFwiaW5wdXRcIiA9PT0gZG9tRXZlbnROYW1lIHx8IFwiY2hhbmdlXCIgPT09IGRvbUV2ZW50TmFtZSlcbiAgICByZXR1cm4gZ2V0SW5zdElmVmFsdWVDaGFuZ2VkKHRhcmdldEluc3QpO1xufVxuZnVuY3Rpb24gaXMoeCwgeSkge1xuICByZXR1cm4gKHggPT09IHkgJiYgKDAgIT09IHggfHwgMSAvIHggPT09IDEgLyB5KSkgfHwgKHggIT09IHggJiYgeSAhPT0geSk7XG59XG52YXIgb2JqZWN0SXMgPSBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBPYmplY3QuaXMgPyBPYmplY3QuaXMgOiBpcztcbmZ1bmN0aW9uIHNoYWxsb3dFcXVhbChvYmpBLCBvYmpCKSB7XG4gIGlmIChvYmplY3RJcyhvYmpBLCBvYmpCKSkgcmV0dXJuICEwO1xuICBpZiAoXG4gICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG9iakEgfHxcbiAgICBudWxsID09PSBvYmpBIHx8XG4gICAgXCJvYmplY3RcIiAhPT0gdHlwZW9mIG9iakIgfHxcbiAgICBudWxsID09PSBvYmpCXG4gIClcbiAgICByZXR1cm4gITE7XG4gIHZhciBrZXlzQSA9IE9iamVjdC5rZXlzKG9iakEpLFxuICAgIGtleXNCID0gT2JqZWN0LmtleXMob2JqQik7XG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkgcmV0dXJuICExO1xuICBmb3IgKGtleXNCID0gMDsga2V5c0IgPCBrZXlzQS5sZW5ndGg7IGtleXNCKyspIHtcbiAgICB2YXIgY3VycmVudEtleSA9IGtleXNBW2tleXNCXTtcbiAgICBpZiAoXG4gICAgICAhaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBjdXJyZW50S2V5KSB8fFxuICAgICAgIW9iamVjdElzKG9iakFbY3VycmVudEtleV0sIG9iakJbY3VycmVudEtleV0pXG4gICAgKVxuICAgICAgcmV0dXJuICExO1xuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGdldExlYWZOb2RlKG5vZGUpIHtcbiAgZm9yICg7IG5vZGUgJiYgbm9kZS5maXJzdENoaWxkOyApIG5vZGUgPSBub2RlLmZpcnN0Q2hpbGQ7XG4gIHJldHVybiBub2RlO1xufVxuZnVuY3Rpb24gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChyb290LCBvZmZzZXQpIHtcbiAgdmFyIG5vZGUgPSBnZXRMZWFmTm9kZShyb290KTtcbiAgcm9vdCA9IDA7XG4gIGZvciAodmFyIG5vZGVFbmQ7IG5vZGU7ICkge1xuICAgIGlmICgzID09PSBub2RlLm5vZGVUeXBlKSB7XG4gICAgICBub2RlRW5kID0gcm9vdCArIG5vZGUudGV4dENvbnRlbnQubGVuZ3RoO1xuICAgICAgaWYgKHJvb3QgPD0gb2Zmc2V0ICYmIG5vZGVFbmQgPj0gb2Zmc2V0KVxuICAgICAgICByZXR1cm4geyBub2RlOiBub2RlLCBvZmZzZXQ6IG9mZnNldCAtIHJvb3QgfTtcbiAgICAgIHJvb3QgPSBub2RlRW5kO1xuICAgIH1cbiAgICBhOiB7XG4gICAgICBmb3IgKDsgbm9kZTsgKSB7XG4gICAgICAgIGlmIChub2RlLm5leHRTaWJsaW5nKSB7XG4gICAgICAgICAgbm9kZSA9IG5vZGUubmV4dFNpYmxpbmc7XG4gICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBub2RlID0gbm9kZS5wYXJlbnROb2RlO1xuICAgICAgfVxuICAgICAgbm9kZSA9IHZvaWQgMDtcbiAgICB9XG4gICAgbm9kZSA9IGdldExlYWZOb2RlKG5vZGUpO1xuICB9XG59XG5mdW5jdGlvbiBjb250YWluc05vZGUob3V0ZXJOb2RlLCBpbm5lck5vZGUpIHtcbiAgcmV0dXJuIG91dGVyTm9kZSAmJiBpbm5lck5vZGVcbiAgICA/IG91dGVyTm9kZSA9PT0gaW5uZXJOb2RlXG4gICAgICA/ICEwXG4gICAgICA6IG91dGVyTm9kZSAmJiAzID09PSBvdXRlck5vZGUubm9kZVR5cGVcbiAgICAgICAgPyAhMVxuICAgICAgICA6IGlubmVyTm9kZSAmJiAzID09PSBpbm5lck5vZGUubm9kZVR5cGVcbiAgICAgICAgICA/IGNvbnRhaW5zTm9kZShvdXRlck5vZGUsIGlubmVyTm9kZS5wYXJlbnROb2RlKVxuICAgICAgICAgIDogXCJjb250YWluc1wiIGluIG91dGVyTm9kZVxuICAgICAgICAgICAgPyBvdXRlck5vZGUuY29udGFpbnMoaW5uZXJOb2RlKVxuICAgICAgICAgICAgOiBvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb25cbiAgICAgICAgICAgICAgPyAhIShvdXRlck5vZGUuY29tcGFyZURvY3VtZW50UG9zaXRpb24oaW5uZXJOb2RlKSAmIDE2KVxuICAgICAgICAgICAgICA6ICExXG4gICAgOiAhMTtcbn1cbmZ1bmN0aW9uIGdldEFjdGl2ZUVsZW1lbnREZWVwKGNvbnRhaW5lckluZm8pIHtcbiAgY29udGFpbmVySW5mbyA9XG4gICAgbnVsbCAhPSBjb250YWluZXJJbmZvICYmXG4gICAgbnVsbCAhPSBjb250YWluZXJJbmZvLm93bmVyRG9jdW1lbnQgJiZcbiAgICBudWxsICE9IGNvbnRhaW5lckluZm8ub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlld1xuICAgICAgPyBjb250YWluZXJJbmZvLm93bmVyRG9jdW1lbnQuZGVmYXVsdFZpZXdcbiAgICAgIDogd2luZG93O1xuICBmb3IgKFxuICAgIHZhciBlbGVtZW50ID0gZ2V0QWN0aXZlRWxlbWVudChjb250YWluZXJJbmZvLmRvY3VtZW50KTtcbiAgICBlbGVtZW50IGluc3RhbmNlb2YgY29udGFpbmVySW5mby5IVE1MSUZyYW1lRWxlbWVudDtcblxuICApIHtcbiAgICB0cnkge1xuICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9XG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBlbGVtZW50LmNvbnRlbnRXaW5kb3cubG9jYXRpb24uaHJlZjtcbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgIH1cbiAgICBpZiAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSBjb250YWluZXJJbmZvID0gZWxlbWVudC5jb250ZW50V2luZG93O1xuICAgIGVsc2UgYnJlYWs7XG4gICAgZWxlbWVudCA9IGdldEFjdGl2ZUVsZW1lbnQoY29udGFpbmVySW5mby5kb2N1bWVudCk7XG4gIH1cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5mdW5jdGlvbiBoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZWxlbSkge1xuICB2YXIgbm9kZU5hbWUgPSBlbGVtICYmIGVsZW0ubm9kZU5hbWUgJiYgZWxlbS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO1xuICByZXR1cm4gKFxuICAgIG5vZGVOYW1lICYmXG4gICAgKChcImlucHV0XCIgPT09IG5vZGVOYW1lICYmXG4gICAgICAoXCJ0ZXh0XCIgPT09IGVsZW0udHlwZSB8fFxuICAgICAgICBcInNlYXJjaFwiID09PSBlbGVtLnR5cGUgfHxcbiAgICAgICAgXCJ0ZWxcIiA9PT0gZWxlbS50eXBlIHx8XG4gICAgICAgIFwidXJsXCIgPT09IGVsZW0udHlwZSB8fFxuICAgICAgICBcInBhc3N3b3JkXCIgPT09IGVsZW0udHlwZSkpIHx8XG4gICAgICBcInRleHRhcmVhXCIgPT09IG5vZGVOYW1lIHx8XG4gICAgICBcInRydWVcIiA9PT0gZWxlbS5jb250ZW50RWRpdGFibGUpXG4gICk7XG59XG5mdW5jdGlvbiByZXN0b3JlU2VsZWN0aW9uKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24sIGNvbnRhaW5lckluZm8pIHtcbiAgdmFyIGN1ckZvY3VzZWRFbGVtID0gZ2V0QWN0aXZlRWxlbWVudERlZXAoY29udGFpbmVySW5mbyk7XG4gIGNvbnRhaW5lckluZm8gPSBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLmZvY3VzZWRFbGVtO1xuICB2YXIgcHJpb3JTZWxlY3Rpb25SYW5nZSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2VsZWN0aW9uUmFuZ2U7XG4gIGlmIChcbiAgICBjdXJGb2N1c2VkRWxlbSAhPT0gY29udGFpbmVySW5mbyAmJlxuICAgIGNvbnRhaW5lckluZm8gJiZcbiAgICBjb250YWluZXJJbmZvLm93bmVyRG9jdW1lbnQgJiZcbiAgICBjb250YWluc05vZGUoY29udGFpbmVySW5mby5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCwgY29udGFpbmVySW5mbylcbiAgKSB7XG4gICAgaWYgKG51bGwgIT09IHByaW9yU2VsZWN0aW9uUmFuZ2UgJiYgaGFzU2VsZWN0aW9uQ2FwYWJpbGl0aWVzKGNvbnRhaW5lckluZm8pKVxuICAgICAgaWYgKFxuICAgICAgICAoKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24gPSBwcmlvclNlbGVjdGlvblJhbmdlLnN0YXJ0KSxcbiAgICAgICAgKGN1ckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25SYW5nZS5lbmQpLFxuICAgICAgICB2b2lkIDAgPT09IGN1ckZvY3VzZWRFbGVtICYmXG4gICAgICAgICAgKGN1ckZvY3VzZWRFbGVtID0gcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbiksXG4gICAgICAgIFwic2VsZWN0aW9uU3RhcnRcIiBpbiBjb250YWluZXJJbmZvKVxuICAgICAgKVxuICAgICAgICAoY29udGFpbmVySW5mby5zZWxlY3Rpb25TdGFydCA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24pLFxuICAgICAgICAgIChjb250YWluZXJJbmZvLnNlbGVjdGlvbkVuZCA9IE1hdGgubWluKFxuICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0sXG4gICAgICAgICAgICBjb250YWluZXJJbmZvLnZhbHVlLmxlbmd0aFxuICAgICAgICAgICkpO1xuICAgICAgZWxzZSBpZiAoXG4gICAgICAgICgoY3VyRm9jdXNlZEVsZW0gPVxuICAgICAgICAgICgocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbiA9XG4gICAgICAgICAgICBjb250YWluZXJJbmZvLm93bmVyRG9jdW1lbnQgfHwgZG9jdW1lbnQpICYmXG4gICAgICAgICAgICBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLmRlZmF1bHRWaWV3KSB8fFxuICAgICAgICAgIHdpbmRvdyksXG4gICAgICAgIGN1ckZvY3VzZWRFbGVtLmdldFNlbGVjdGlvbilcbiAgICAgICkge1xuICAgICAgICBjdXJGb2N1c2VkRWxlbSA9IGN1ckZvY3VzZWRFbGVtLmdldFNlbGVjdGlvbigpO1xuICAgICAgICB2YXIgbGVuZ3RoID0gY29udGFpbmVySW5mby50ZXh0Q29udGVudC5sZW5ndGgsXG4gICAgICAgICAgc3RhcnQgPSBNYXRoLm1pbihwcmlvclNlbGVjdGlvblJhbmdlLnN0YXJ0LCBsZW5ndGgpO1xuICAgICAgICBwcmlvclNlbGVjdGlvblJhbmdlID1cbiAgICAgICAgICB2b2lkIDAgPT09IHByaW9yU2VsZWN0aW9uUmFuZ2UuZW5kXG4gICAgICAgICAgICA/IHN0YXJ0XG4gICAgICAgICAgICA6IE1hdGgubWluKHByaW9yU2VsZWN0aW9uUmFuZ2UuZW5kLCBsZW5ndGgpO1xuICAgICAgICAhY3VyRm9jdXNlZEVsZW0uZXh0ZW5kICYmXG4gICAgICAgICAgc3RhcnQgPiBwcmlvclNlbGVjdGlvblJhbmdlICYmXG4gICAgICAgICAgKChsZW5ndGggPSBwcmlvclNlbGVjdGlvblJhbmdlKSxcbiAgICAgICAgICAocHJpb3JTZWxlY3Rpb25SYW5nZSA9IHN0YXJ0KSxcbiAgICAgICAgICAoc3RhcnQgPSBsZW5ndGgpKTtcbiAgICAgICAgbGVuZ3RoID0gZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldChjb250YWluZXJJbmZvLCBzdGFydCk7XG4gICAgICAgIHZhciBlbmRNYXJrZXIgPSBnZXROb2RlRm9yQ2hhcmFjdGVyT2Zmc2V0KFxuICAgICAgICAgIGNvbnRhaW5lckluZm8sXG4gICAgICAgICAgcHJpb3JTZWxlY3Rpb25SYW5nZVxuICAgICAgICApO1xuICAgICAgICBsZW5ndGggJiZcbiAgICAgICAgICBlbmRNYXJrZXIgJiZcbiAgICAgICAgICAoMSAhPT0gY3VyRm9jdXNlZEVsZW0ucmFuZ2VDb3VudCB8fFxuICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0uYW5jaG9yTm9kZSAhPT0gbGVuZ3RoLm5vZGUgfHxcbiAgICAgICAgICAgIGN1ckZvY3VzZWRFbGVtLmFuY2hvck9mZnNldCAhPT0gbGVuZ3RoLm9mZnNldCB8fFxuICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0uZm9jdXNOb2RlICE9PSBlbmRNYXJrZXIubm9kZSB8fFxuICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0uZm9jdXNPZmZzZXQgIT09IGVuZE1hcmtlci5vZmZzZXQpICYmXG4gICAgICAgICAgKChwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uID1cbiAgICAgICAgICAgIHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uY3JlYXRlUmFuZ2UoKSksXG4gICAgICAgICAgcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5zZXRTdGFydChsZW5ndGgubm9kZSwgbGVuZ3RoLm9mZnNldCksXG4gICAgICAgICAgY3VyRm9jdXNlZEVsZW0ucmVtb3ZlQWxsUmFuZ2VzKCksXG4gICAgICAgICAgc3RhcnQgPiBwcmlvclNlbGVjdGlvblJhbmdlXG4gICAgICAgICAgICA/IChjdXJGb2N1c2VkRWxlbS5hZGRSYW5nZShwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uKSxcbiAgICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0uZXh0ZW5kKGVuZE1hcmtlci5ub2RlLCBlbmRNYXJrZXIub2Zmc2V0KSlcbiAgICAgICAgICAgIDogKHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24uc2V0RW5kKFxuICAgICAgICAgICAgICAgIGVuZE1hcmtlci5ub2RlLFxuICAgICAgICAgICAgICAgIGVuZE1hcmtlci5vZmZzZXRcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgY3VyRm9jdXNlZEVsZW0uYWRkUmFuZ2UocHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbikpKTtcbiAgICAgIH1cbiAgICBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uID0gW107XG4gICAgZm9yIChcbiAgICAgIGN1ckZvY3VzZWRFbGVtID0gY29udGFpbmVySW5mbztcbiAgICAgIChjdXJGb2N1c2VkRWxlbSA9IGN1ckZvY3VzZWRFbGVtLnBhcmVudE5vZGUpO1xuXG4gICAgKVxuICAgICAgMSA9PT0gY3VyRm9jdXNlZEVsZW0ubm9kZVR5cGUgJiZcbiAgICAgICAgcHJpb3JTZWxlY3Rpb25JbmZvcm1hdGlvbi5wdXNoKHtcbiAgICAgICAgICBlbGVtZW50OiBjdXJGb2N1c2VkRWxlbSxcbiAgICAgICAgICBsZWZ0OiBjdXJGb2N1c2VkRWxlbS5zY3JvbGxMZWZ0LFxuICAgICAgICAgIHRvcDogY3VyRm9jdXNlZEVsZW0uc2Nyb2xsVG9wXG4gICAgICAgIH0pO1xuICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNvbnRhaW5lckluZm8uZm9jdXMgJiYgY29udGFpbmVySW5mby5mb2N1cygpO1xuICAgIGZvciAoXG4gICAgICBjb250YWluZXJJbmZvID0gMDtcbiAgICAgIGNvbnRhaW5lckluZm8gPCBwcmlvclNlbGVjdGlvbkluZm9ybWF0aW9uLmxlbmd0aDtcbiAgICAgIGNvbnRhaW5lckluZm8rK1xuICAgIClcbiAgICAgIChjdXJGb2N1c2VkRWxlbSA9IHByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb25bY29udGFpbmVySW5mb10pLFxuICAgICAgICAoY3VyRm9jdXNlZEVsZW0uZWxlbWVudC5zY3JvbGxMZWZ0ID0gY3VyRm9jdXNlZEVsZW0ubGVmdCksXG4gICAgICAgIChjdXJGb2N1c2VkRWxlbS5lbGVtZW50LnNjcm9sbFRvcCA9IGN1ckZvY3VzZWRFbGVtLnRvcCk7XG4gIH1cbn1cbnZhciBza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQgPVxuICAgIGNhblVzZURPTSAmJiBcImRvY3VtZW50TW9kZVwiIGluIGRvY3VtZW50ICYmIDExID49IGRvY3VtZW50LmRvY3VtZW50TW9kZSxcbiAgYWN0aXZlRWxlbWVudCA9IG51bGwsXG4gIGFjdGl2ZUVsZW1lbnRJbnN0ID0gbnVsbCxcbiAgbGFzdFNlbGVjdGlvbiA9IG51bGwsXG4gIG1vdXNlRG93biA9ICExO1xuZnVuY3Rpb24gY29uc3RydWN0U2VsZWN0RXZlbnQoZGlzcGF0Y2hRdWV1ZSwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KSB7XG4gIHZhciBkb2MgPVxuICAgIG5hdGl2ZUV2ZW50VGFyZ2V0LndpbmRvdyA9PT0gbmF0aXZlRXZlbnRUYXJnZXRcbiAgICAgID8gbmF0aXZlRXZlbnRUYXJnZXQuZG9jdW1lbnRcbiAgICAgIDogOSA9PT0gbmF0aXZlRXZlbnRUYXJnZXQubm9kZVR5cGVcbiAgICAgICAgPyBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICA6IG5hdGl2ZUV2ZW50VGFyZ2V0Lm93bmVyRG9jdW1lbnQ7XG4gIG1vdXNlRG93biB8fFxuICAgIG51bGwgPT0gYWN0aXZlRWxlbWVudCB8fFxuICAgIGFjdGl2ZUVsZW1lbnQgIT09IGdldEFjdGl2ZUVsZW1lbnQoZG9jKSB8fFxuICAgICgoZG9jID0gYWN0aXZlRWxlbWVudCksXG4gICAgXCJzZWxlY3Rpb25TdGFydFwiIGluIGRvYyAmJiBoYXNTZWxlY3Rpb25DYXBhYmlsaXRpZXMoZG9jKVxuICAgICAgPyAoZG9jID0geyBzdGFydDogZG9jLnNlbGVjdGlvblN0YXJ0LCBlbmQ6IGRvYy5zZWxlY3Rpb25FbmQgfSlcbiAgICAgIDogKChkb2MgPSAoXG4gICAgICAgICAgKGRvYy5vd25lckRvY3VtZW50ICYmIGRvYy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSB8fFxuICAgICAgICAgIHdpbmRvd1xuICAgICAgICApLmdldFNlbGVjdGlvbigpKSxcbiAgICAgICAgKGRvYyA9IHtcbiAgICAgICAgICBhbmNob3JOb2RlOiBkb2MuYW5jaG9yTm9kZSxcbiAgICAgICAgICBhbmNob3JPZmZzZXQ6IGRvYy5hbmNob3JPZmZzZXQsXG4gICAgICAgICAgZm9jdXNOb2RlOiBkb2MuZm9jdXNOb2RlLFxuICAgICAgICAgIGZvY3VzT2Zmc2V0OiBkb2MuZm9jdXNPZmZzZXRcbiAgICAgICAgfSkpLFxuICAgIChsYXN0U2VsZWN0aW9uICYmIHNoYWxsb3dFcXVhbChsYXN0U2VsZWN0aW9uLCBkb2MpKSB8fFxuICAgICAgKChsYXN0U2VsZWN0aW9uID0gZG9jKSxcbiAgICAgIChkb2MgPSBhY2N1bXVsYXRlVHdvUGhhc2VMaXN0ZW5lcnMoYWN0aXZlRWxlbWVudEluc3QsIFwib25TZWxlY3RcIikpLFxuICAgICAgMCA8IGRvYy5sZW5ndGggJiZcbiAgICAgICAgKChuYXRpdmVFdmVudCA9IG5ldyBTeW50aGV0aWNFdmVudChcbiAgICAgICAgICBcIm9uU2VsZWN0XCIsXG4gICAgICAgICAgXCJzZWxlY3RcIixcbiAgICAgICAgICBudWxsLFxuICAgICAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgICAgIG5hdGl2ZUV2ZW50VGFyZ2V0XG4gICAgICAgICkpLFxuICAgICAgICBkaXNwYXRjaFF1ZXVlLnB1c2goeyBldmVudDogbmF0aXZlRXZlbnQsIGxpc3RlbmVyczogZG9jIH0pLFxuICAgICAgICAobmF0aXZlRXZlbnQudGFyZ2V0ID0gYWN0aXZlRWxlbWVudCkpKSk7XG59XG5mdW5jdGlvbiBtYWtlUHJlZml4TWFwKHN0eWxlUHJvcCwgZXZlbnROYW1lKSB7XG4gIHZhciBwcmVmaXhlcyA9IHt9O1xuICBwcmVmaXhlc1tzdHlsZVByb3AudG9Mb3dlckNhc2UoKV0gPSBldmVudE5hbWUudG9Mb3dlckNhc2UoKTtcbiAgcHJlZml4ZXNbXCJXZWJraXRcIiArIHN0eWxlUHJvcF0gPSBcIndlYmtpdFwiICsgZXZlbnROYW1lO1xuICBwcmVmaXhlc1tcIk1velwiICsgc3R5bGVQcm9wXSA9IFwibW96XCIgKyBldmVudE5hbWU7XG4gIHJldHVybiBwcmVmaXhlcztcbn1cbnZhciB2ZW5kb3JQcmVmaXhlcyA9IHtcbiAgICBhbmltYXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoXCJBbmltYXRpb25cIiwgXCJBbmltYXRpb25FbmRcIiksXG4gICAgYW5pbWF0aW9uaXRlcmF0aW9uOiBtYWtlUHJlZml4TWFwKFwiQW5pbWF0aW9uXCIsIFwiQW5pbWF0aW9uSXRlcmF0aW9uXCIpLFxuICAgIGFuaW1hdGlvbnN0YXJ0OiBtYWtlUHJlZml4TWFwKFwiQW5pbWF0aW9uXCIsIFwiQW5pbWF0aW9uU3RhcnRcIiksXG4gICAgdHJhbnNpdGlvbnJ1bjogbWFrZVByZWZpeE1hcChcIlRyYW5zaXRpb25cIiwgXCJUcmFuc2l0aW9uUnVuXCIpLFxuICAgIHRyYW5zaXRpb25zdGFydDogbWFrZVByZWZpeE1hcChcIlRyYW5zaXRpb25cIiwgXCJUcmFuc2l0aW9uU3RhcnRcIiksXG4gICAgdHJhbnNpdGlvbmNhbmNlbDogbWFrZVByZWZpeE1hcChcIlRyYW5zaXRpb25cIiwgXCJUcmFuc2l0aW9uQ2FuY2VsXCIpLFxuICAgIHRyYW5zaXRpb25lbmQ6IG1ha2VQcmVmaXhNYXAoXCJUcmFuc2l0aW9uXCIsIFwiVHJhbnNpdGlvbkVuZFwiKVxuICB9LFxuICBwcmVmaXhlZEV2ZW50TmFtZXMgPSB7fSxcbiAgc3R5bGUgPSB7fTtcbmNhblVzZURPTSAmJlxuICAoKHN0eWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImRpdlwiKS5zdHlsZSksXG4gIFwiQW5pbWF0aW9uRXZlbnRcIiBpbiB3aW5kb3cgfHxcbiAgICAoZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbmVuZC5hbmltYXRpb24sXG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbml0ZXJhdGlvbi5hbmltYXRpb24sXG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLmFuaW1hdGlvbnN0YXJ0LmFuaW1hdGlvbiksXG4gIFwiVHJhbnNpdGlvbkV2ZW50XCIgaW4gd2luZG93IHx8XG4gICAgZGVsZXRlIHZlbmRvclByZWZpeGVzLnRyYW5zaXRpb25lbmQudHJhbnNpdGlvbik7XG5mdW5jdGlvbiBnZXRWZW5kb3JQcmVmaXhlZEV2ZW50TmFtZShldmVudE5hbWUpIHtcbiAgaWYgKHByZWZpeGVkRXZlbnROYW1lc1tldmVudE5hbWVdKSByZXR1cm4gcHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV07XG4gIGlmICghdmVuZG9yUHJlZml4ZXNbZXZlbnROYW1lXSkgcmV0dXJuIGV2ZW50TmFtZTtcbiAgdmFyIHByZWZpeE1hcCA9IHZlbmRvclByZWZpeGVzW2V2ZW50TmFtZV0sXG4gICAgc3R5bGVQcm9wO1xuICBmb3IgKHN0eWxlUHJvcCBpbiBwcmVmaXhNYXApXG4gICAgaWYgKHByZWZpeE1hcC5oYXNPd25Qcm9wZXJ0eShzdHlsZVByb3ApICYmIHN0eWxlUHJvcCBpbiBzdHlsZSlcbiAgICAgIHJldHVybiAocHJlZml4ZWRFdmVudE5hbWVzW2V2ZW50TmFtZV0gPSBwcmVmaXhNYXBbc3R5bGVQcm9wXSk7XG4gIHJldHVybiBldmVudE5hbWU7XG59XG52YXIgQU5JTUFUSU9OX0VORCA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKFwiYW5pbWF0aW9uZW5kXCIpLFxuICBBTklNQVRJT05fSVRFUkFUSU9OID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoXCJhbmltYXRpb25pdGVyYXRpb25cIiksXG4gIEFOSU1BVElPTl9TVEFSVCA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKFwiYW5pbWF0aW9uc3RhcnRcIiksXG4gIFRSQU5TSVRJT05fUlVOID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoXCJ0cmFuc2l0aW9ucnVuXCIpLFxuICBUUkFOU0lUSU9OX1NUQVJUID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoXCJ0cmFuc2l0aW9uc3RhcnRcIiksXG4gIFRSQU5TSVRJT05fQ0FOQ0VMID0gZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUoXCJ0cmFuc2l0aW9uY2FuY2VsXCIpLFxuICBUUkFOU0lUSU9OX0VORCA9IGdldFZlbmRvclByZWZpeGVkRXZlbnROYW1lKFwidHJhbnNpdGlvbmVuZFwiKSxcbiAgdG9wTGV2ZWxFdmVudHNUb1JlYWN0TmFtZXMgPSBuZXcgTWFwKCksXG4gIHNpbXBsZUV2ZW50UGx1Z2luRXZlbnRzID1cbiAgICBcImFib3J0IGF1eENsaWNrIGJlZm9yZVRvZ2dsZSBjYW5jZWwgY2FuUGxheSBjYW5QbGF5VGhyb3VnaCBjbGljayBjbG9zZSBjb250ZXh0TWVudSBjb3B5IGN1dCBkcmFnIGRyYWdFbmQgZHJhZ0VudGVyIGRyYWdFeGl0IGRyYWdMZWF2ZSBkcmFnT3ZlciBkcmFnU3RhcnQgZHJvcCBkdXJhdGlvbkNoYW5nZSBlbXB0aWVkIGVuY3J5cHRlZCBlbmRlZCBlcnJvciBnb3RQb2ludGVyQ2FwdHVyZSBpbnB1dCBpbnZhbGlkIGtleURvd24ga2V5UHJlc3Mga2V5VXAgbG9hZCBsb2FkZWREYXRhIGxvYWRlZE1ldGFkYXRhIGxvYWRTdGFydCBsb3N0UG9pbnRlckNhcHR1cmUgbW91c2VEb3duIG1vdXNlTW92ZSBtb3VzZU91dCBtb3VzZU92ZXIgbW91c2VVcCBwYXN0ZSBwYXVzZSBwbGF5IHBsYXlpbmcgcG9pbnRlckNhbmNlbCBwb2ludGVyRG93biBwb2ludGVyTW92ZSBwb2ludGVyT3V0IHBvaW50ZXJPdmVyIHBvaW50ZXJVcCBwcm9ncmVzcyByYXRlQ2hhbmdlIHJlc2V0IHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1Ym1pdCBzdXNwZW5kIHRpbWVVcGRhdGUgdG91Y2hDYW5jZWwgdG91Y2hFbmQgdG91Y2hTdGFydCB2b2x1bWVDaGFuZ2Ugc2Nyb2xsIHNjcm9sbEVuZCB0b2dnbGUgdG91Y2hNb3ZlIHdhaXRpbmcgd2hlZWxcIi5zcGxpdChcbiAgICAgIFwiIFwiXG4gICAgKTtcbmZ1bmN0aW9uIHJlZ2lzdGVyU2ltcGxlRXZlbnQoZG9tRXZlbnROYW1lLCByZWFjdE5hbWUpIHtcbiAgdG9wTGV2ZWxFdmVudHNUb1JlYWN0TmFtZXMuc2V0KGRvbUV2ZW50TmFtZSwgcmVhY3ROYW1lKTtcbiAgcmVnaXN0ZXJUd29QaGFzZUV2ZW50KHJlYWN0TmFtZSwgW2RvbUV2ZW50TmFtZV0pO1xufVxudmFyIGNvbmN1cnJlbnRRdWV1ZXMgPSBbXSxcbiAgY29uY3VycmVudFF1ZXVlc0luZGV4ID0gMCxcbiAgY29uY3VycmVudGx5VXBkYXRlZExhbmVzID0gMDtcbmZ1bmN0aW9uIGZpbmlzaFF1ZXVlaW5nQ29uY3VycmVudFVwZGF0ZXMoKSB7XG4gIGZvciAoXG4gICAgdmFyIGVuZEluZGV4ID0gY29uY3VycmVudFF1ZXVlc0luZGV4LFxuICAgICAgaSA9IChjb25jdXJyZW50bHlVcGRhdGVkTGFuZXMgPSBjb25jdXJyZW50UXVldWVzSW5kZXggPSAwKTtcbiAgICBpIDwgZW5kSW5kZXg7XG5cbiAgKSB7XG4gICAgdmFyIGZpYmVyID0gY29uY3VycmVudFF1ZXVlc1tpXTtcbiAgICBjb25jdXJyZW50UXVldWVzW2krK10gPSBudWxsO1xuICAgIHZhciBxdWV1ZSA9IGNvbmN1cnJlbnRRdWV1ZXNbaV07XG4gICAgY29uY3VycmVudFF1ZXVlc1tpKytdID0gbnVsbDtcbiAgICB2YXIgdXBkYXRlID0gY29uY3VycmVudFF1ZXVlc1tpXTtcbiAgICBjb25jdXJyZW50UXVldWVzW2krK10gPSBudWxsO1xuICAgIHZhciBsYW5lID0gY29uY3VycmVudFF1ZXVlc1tpXTtcbiAgICBjb25jdXJyZW50UXVldWVzW2krK10gPSBudWxsO1xuICAgIGlmIChudWxsICE9PSBxdWV1ZSAmJiBudWxsICE9PSB1cGRhdGUpIHtcbiAgICAgIHZhciBwZW5kaW5nID0gcXVldWUucGVuZGluZztcbiAgICAgIG51bGwgPT09IHBlbmRpbmdcbiAgICAgICAgPyAodXBkYXRlLm5leHQgPSB1cGRhdGUpXG4gICAgICAgIDogKCh1cGRhdGUubmV4dCA9IHBlbmRpbmcubmV4dCksIChwZW5kaW5nLm5leHQgPSB1cGRhdGUpKTtcbiAgICAgIHF1ZXVlLnBlbmRpbmcgPSB1cGRhdGU7XG4gICAgfVxuICAgIDAgIT09IGxhbmUgJiYgbWFya1VwZGF0ZUxhbmVGcm9tRmliZXJUb1Jvb3QoZmliZXIsIHVwZGF0ZSwgbGFuZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUkMShmaWJlciwgcXVldWUsIHVwZGF0ZSwgbGFuZSkge1xuICBjb25jdXJyZW50UXVldWVzW2NvbmN1cnJlbnRRdWV1ZXNJbmRleCsrXSA9IGZpYmVyO1xuICBjb25jdXJyZW50UXVldWVzW2NvbmN1cnJlbnRRdWV1ZXNJbmRleCsrXSA9IHF1ZXVlO1xuICBjb25jdXJyZW50UXVldWVzW2NvbmN1cnJlbnRRdWV1ZXNJbmRleCsrXSA9IHVwZGF0ZTtcbiAgY29uY3VycmVudFF1ZXVlc1tjb25jdXJyZW50UXVldWVzSW5kZXgrK10gPSBsYW5lO1xuICBjb25jdXJyZW50bHlVcGRhdGVkTGFuZXMgfD0gbGFuZTtcbiAgZmliZXIubGFuZXMgfD0gbGFuZTtcbiAgZmliZXIgPSBmaWJlci5hbHRlcm5hdGU7XG4gIG51bGwgIT09IGZpYmVyICYmIChmaWJlci5sYW5lcyB8PSBsYW5lKTtcbn1cbmZ1bmN0aW9uIGVucXVldWVDb25jdXJyZW50SG9va1VwZGF0ZShmaWJlciwgcXVldWUsIHVwZGF0ZSwgbGFuZSkge1xuICBlbnF1ZXVlVXBkYXRlJDEoZmliZXIsIHF1ZXVlLCB1cGRhdGUsIGxhbmUpO1xuICByZXR1cm4gZ2V0Um9vdEZvclVwZGF0ZWRGaWJlcihmaWJlcik7XG59XG5mdW5jdGlvbiBlbnF1ZXVlQ29uY3VycmVudFJlbmRlckZvckxhbmUoZmliZXIsIGxhbmUpIHtcbiAgZW5xdWV1ZVVwZGF0ZSQxKGZpYmVyLCBudWxsLCBudWxsLCBsYW5lKTtcbiAgcmV0dXJuIGdldFJvb3RGb3JVcGRhdGVkRmliZXIoZmliZXIpO1xufVxuZnVuY3Rpb24gbWFya1VwZGF0ZUxhbmVGcm9tRmliZXJUb1Jvb3Qoc291cmNlRmliZXIsIHVwZGF0ZSwgbGFuZSkge1xuICBzb3VyY2VGaWJlci5sYW5lcyB8PSBsYW5lO1xuICB2YXIgYWx0ZXJuYXRlID0gc291cmNlRmliZXIuYWx0ZXJuYXRlO1xuICBudWxsICE9PSBhbHRlcm5hdGUgJiYgKGFsdGVybmF0ZS5sYW5lcyB8PSBsYW5lKTtcbiAgZm9yICh2YXIgaXNIaWRkZW4gPSAhMSwgcGFyZW50ID0gc291cmNlRmliZXIucmV0dXJuOyBudWxsICE9PSBwYXJlbnQ7IClcbiAgICAocGFyZW50LmNoaWxkTGFuZXMgfD0gbGFuZSksXG4gICAgICAoYWx0ZXJuYXRlID0gcGFyZW50LmFsdGVybmF0ZSksXG4gICAgICBudWxsICE9PSBhbHRlcm5hdGUgJiYgKGFsdGVybmF0ZS5jaGlsZExhbmVzIHw9IGxhbmUpLFxuICAgICAgMjIgPT09IHBhcmVudC50YWcgJiZcbiAgICAgICAgKChzb3VyY2VGaWJlciA9IHBhcmVudC5zdGF0ZU5vZGUpLFxuICAgICAgICBudWxsID09PSBzb3VyY2VGaWJlciB8fCBzb3VyY2VGaWJlci5fdmlzaWJpbGl0eSAmIDEgfHwgKGlzSGlkZGVuID0gITApKSxcbiAgICAgIChzb3VyY2VGaWJlciA9IHBhcmVudCksXG4gICAgICAocGFyZW50ID0gcGFyZW50LnJldHVybik7XG4gIGlzSGlkZGVuICYmXG4gICAgbnVsbCAhPT0gdXBkYXRlICYmXG4gICAgMyA9PT0gc291cmNlRmliZXIudGFnICYmXG4gICAgKChwYXJlbnQgPSBzb3VyY2VGaWJlci5zdGF0ZU5vZGUpLFxuICAgIChpc0hpZGRlbiA9IDMxIC0gY2x6MzIobGFuZSkpLFxuICAgIChwYXJlbnQgPSBwYXJlbnQuaGlkZGVuVXBkYXRlcyksXG4gICAgKHNvdXJjZUZpYmVyID0gcGFyZW50W2lzSGlkZGVuXSksXG4gICAgbnVsbCA9PT0gc291cmNlRmliZXJcbiAgICAgID8gKHBhcmVudFtpc0hpZGRlbl0gPSBbdXBkYXRlXSlcbiAgICAgIDogc291cmNlRmliZXIucHVzaCh1cGRhdGUpLFxuICAgICh1cGRhdGUubGFuZSA9IGxhbmUgfCA1MzY4NzA5MTIpKTtcbn1cbmZ1bmN0aW9uIGdldFJvb3RGb3JVcGRhdGVkRmliZXIoc291cmNlRmliZXIpIHtcbiAgaWYgKDUwIDwgbmVzdGVkVXBkYXRlQ291bnQpXG4gICAgdGhyb3cgKFxuICAgICAgKChuZXN0ZWRVcGRhdGVDb3VudCA9IDApLFxuICAgICAgKHJvb3RXaXRoTmVzdGVkVXBkYXRlcyA9IG51bGwpLFxuICAgICAgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxODUpKSlcbiAgICApO1xuICBmb3IgKHZhciBwYXJlbnQgPSBzb3VyY2VGaWJlci5yZXR1cm47IG51bGwgIT09IHBhcmVudDsgKVxuICAgIChzb3VyY2VGaWJlciA9IHBhcmVudCksIChwYXJlbnQgPSBzb3VyY2VGaWJlci5yZXR1cm4pO1xuICByZXR1cm4gMyA9PT0gc291cmNlRmliZXIudGFnID8gc291cmNlRmliZXIuc3RhdGVOb2RlIDogbnVsbDtcbn1cbnZhciBlbXB0eUNvbnRleHRPYmplY3QgPSB7fSxcbiAgQ2FwdHVyZWRTdGFja3MgPSBuZXcgV2Vha01hcCgpO1xuZnVuY3Rpb24gY3JlYXRlQ2FwdHVyZWRWYWx1ZUF0RmliZXIodmFsdWUsIHNvdXJjZSkge1xuICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHZhbHVlICYmIG51bGwgIT09IHZhbHVlKSB7XG4gICAgdmFyIGV4aXN0aW5nID0gQ2FwdHVyZWRTdGFja3MuZ2V0KHZhbHVlKTtcbiAgICBpZiAodm9pZCAwICE9PSBleGlzdGluZykgcmV0dXJuIGV4aXN0aW5nO1xuICAgIHNvdXJjZSA9IHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIHNvdXJjZTogc291cmNlLFxuICAgICAgc3RhY2s6IGdldFN0YWNrQnlGaWJlckluRGV2QW5kUHJvZChzb3VyY2UpXG4gICAgfTtcbiAgICBDYXB0dXJlZFN0YWNrcy5zZXQodmFsdWUsIHNvdXJjZSk7XG4gICAgcmV0dXJuIHNvdXJjZTtcbiAgfVxuICByZXR1cm4ge1xuICAgIHZhbHVlOiB2YWx1ZSxcbiAgICBzb3VyY2U6IHNvdXJjZSxcbiAgICBzdGFjazogZ2V0U3RhY2tCeUZpYmVySW5EZXZBbmRQcm9kKHNvdXJjZSlcbiAgfTtcbn1cbnZhciBmb3JrU3RhY2sgPSBbXSxcbiAgZm9ya1N0YWNrSW5kZXggPSAwLFxuICB0cmVlRm9ya1Byb3ZpZGVyID0gbnVsbCxcbiAgdHJlZUZvcmtDb3VudCA9IDAsXG4gIGlkU3RhY2sgPSBbXSxcbiAgaWRTdGFja0luZGV4ID0gMCxcbiAgdHJlZUNvbnRleHRQcm92aWRlciA9IG51bGwsXG4gIHRyZWVDb250ZXh0SWQgPSAxLFxuICB0cmVlQ29udGV4dE92ZXJmbG93ID0gXCJcIjtcbmZ1bmN0aW9uIHB1c2hUcmVlRm9yayh3b3JrSW5Qcm9ncmVzcywgdG90YWxDaGlsZHJlbikge1xuICBmb3JrU3RhY2tbZm9ya1N0YWNrSW5kZXgrK10gPSB0cmVlRm9ya0NvdW50O1xuICBmb3JrU3RhY2tbZm9ya1N0YWNrSW5kZXgrK10gPSB0cmVlRm9ya1Byb3ZpZGVyO1xuICB0cmVlRm9ya1Byb3ZpZGVyID0gd29ya0luUHJvZ3Jlc3M7XG4gIHRyZWVGb3JrQ291bnQgPSB0b3RhbENoaWxkcmVuO1xufVxuZnVuY3Rpb24gcHVzaFRyZWVJZCh3b3JrSW5Qcm9ncmVzcywgdG90YWxDaGlsZHJlbiwgaW5kZXgpIHtcbiAgaWRTdGFja1tpZFN0YWNrSW5kZXgrK10gPSB0cmVlQ29udGV4dElkO1xuICBpZFN0YWNrW2lkU3RhY2tJbmRleCsrXSA9IHRyZWVDb250ZXh0T3ZlcmZsb3c7XG4gIGlkU3RhY2tbaWRTdGFja0luZGV4KytdID0gdHJlZUNvbnRleHRQcm92aWRlcjtcbiAgdHJlZUNvbnRleHRQcm92aWRlciA9IHdvcmtJblByb2dyZXNzO1xuICB2YXIgYmFzZUlkV2l0aExlYWRpbmdCaXQgPSB0cmVlQ29udGV4dElkO1xuICB3b3JrSW5Qcm9ncmVzcyA9IHRyZWVDb250ZXh0T3ZlcmZsb3c7XG4gIHZhciBiYXNlTGVuZ3RoID0gMzIgLSBjbHozMihiYXNlSWRXaXRoTGVhZGluZ0JpdCkgLSAxO1xuICBiYXNlSWRXaXRoTGVhZGluZ0JpdCAmPSB+KDEgPDwgYmFzZUxlbmd0aCk7XG4gIGluZGV4ICs9IDE7XG4gIHZhciBsZW5ndGggPSAzMiAtIGNsejMyKHRvdGFsQ2hpbGRyZW4pICsgYmFzZUxlbmd0aDtcbiAgaWYgKDMwIDwgbGVuZ3RoKSB7XG4gICAgdmFyIG51bWJlck9mT3ZlcmZsb3dCaXRzID0gYmFzZUxlbmd0aCAtIChiYXNlTGVuZ3RoICUgNSk7XG4gICAgbGVuZ3RoID0gKFxuICAgICAgYmFzZUlkV2l0aExlYWRpbmdCaXQgJlxuICAgICAgKCgxIDw8IG51bWJlck9mT3ZlcmZsb3dCaXRzKSAtIDEpXG4gICAgKS50b1N0cmluZygzMik7XG4gICAgYmFzZUlkV2l0aExlYWRpbmdCaXQgPj49IG51bWJlck9mT3ZlcmZsb3dCaXRzO1xuICAgIGJhc2VMZW5ndGggLT0gbnVtYmVyT2ZPdmVyZmxvd0JpdHM7XG4gICAgdHJlZUNvbnRleHRJZCA9XG4gICAgICAoMSA8PCAoMzIgLSBjbHozMih0b3RhbENoaWxkcmVuKSArIGJhc2VMZW5ndGgpKSB8XG4gICAgICAoaW5kZXggPDwgYmFzZUxlbmd0aCkgfFxuICAgICAgYmFzZUlkV2l0aExlYWRpbmdCaXQ7XG4gICAgdHJlZUNvbnRleHRPdmVyZmxvdyA9IGxlbmd0aCArIHdvcmtJblByb2dyZXNzO1xuICB9IGVsc2VcbiAgICAodHJlZUNvbnRleHRJZCA9XG4gICAgICAoMSA8PCBsZW5ndGgpIHwgKGluZGV4IDw8IGJhc2VMZW5ndGgpIHwgYmFzZUlkV2l0aExlYWRpbmdCaXQpLFxuICAgICAgKHRyZWVDb250ZXh0T3ZlcmZsb3cgPSB3b3JrSW5Qcm9ncmVzcyk7XG59XG5mdW5jdGlvbiBwdXNoTWF0ZXJpYWxpemVkVHJlZUlkKHdvcmtJblByb2dyZXNzKSB7XG4gIG51bGwgIT09IHdvcmtJblByb2dyZXNzLnJldHVybiAmJlxuICAgIChwdXNoVHJlZUZvcmsod29ya0luUHJvZ3Jlc3MsIDEpLCBwdXNoVHJlZUlkKHdvcmtJblByb2dyZXNzLCAxLCAwKSk7XG59XG5mdW5jdGlvbiBwb3BUcmVlQ29udGV4dCh3b3JrSW5Qcm9ncmVzcykge1xuICBmb3IgKDsgd29ya0luUHJvZ3Jlc3MgPT09IHRyZWVGb3JrUHJvdmlkZXI7IClcbiAgICAodHJlZUZvcmtQcm92aWRlciA9IGZvcmtTdGFja1stLWZvcmtTdGFja0luZGV4XSksXG4gICAgICAoZm9ya1N0YWNrW2ZvcmtTdGFja0luZGV4XSA9IG51bGwpLFxuICAgICAgKHRyZWVGb3JrQ291bnQgPSBmb3JrU3RhY2tbLS1mb3JrU3RhY2tJbmRleF0pLFxuICAgICAgKGZvcmtTdGFja1tmb3JrU3RhY2tJbmRleF0gPSBudWxsKTtcbiAgZm9yICg7IHdvcmtJblByb2dyZXNzID09PSB0cmVlQ29udGV4dFByb3ZpZGVyOyApXG4gICAgKHRyZWVDb250ZXh0UHJvdmlkZXIgPSBpZFN0YWNrWy0taWRTdGFja0luZGV4XSksXG4gICAgICAoaWRTdGFja1tpZFN0YWNrSW5kZXhdID0gbnVsbCksXG4gICAgICAodHJlZUNvbnRleHRPdmVyZmxvdyA9IGlkU3RhY2tbLS1pZFN0YWNrSW5kZXhdKSxcbiAgICAgIChpZFN0YWNrW2lkU3RhY2tJbmRleF0gPSBudWxsKSxcbiAgICAgICh0cmVlQ29udGV4dElkID0gaWRTdGFja1stLWlkU3RhY2tJbmRleF0pLFxuICAgICAgKGlkU3RhY2tbaWRTdGFja0luZGV4XSA9IG51bGwpO1xufVxudmFyIGh5ZHJhdGlvblBhcmVudEZpYmVyID0gbnVsbCxcbiAgbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IG51bGwsXG4gIGlzSHlkcmF0aW5nID0gITEsXG4gIGh5ZHJhdGlvbkVycm9ycyA9IG51bGwsXG4gIHJvb3RPclNpbmdsZXRvbkNvbnRleHQgPSAhMSxcbiAgSHlkcmF0aW9uTWlzbWF0Y2hFeGNlcHRpb24gPSBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDUxOSkpO1xuZnVuY3Rpb24gdGhyb3dPbkh5ZHJhdGlvbk1pc21hdGNoKGZpYmVyKSB7XG4gIHZhciBlcnJvciA9IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDE4LCBcIlwiKSk7XG4gIHF1ZXVlSHlkcmF0aW9uRXJyb3IoY3JlYXRlQ2FwdHVyZWRWYWx1ZUF0RmliZXIoZXJyb3IsIGZpYmVyKSk7XG4gIHRocm93IEh5ZHJhdGlvbk1pc21hdGNoRXhjZXB0aW9uO1xufVxuZnVuY3Rpb24gcHJlcGFyZVRvSHlkcmF0ZUhvc3RJbnN0YW5jZShmaWJlcikge1xuICB2YXIgaW5zdGFuY2UgPSBmaWJlci5zdGF0ZU5vZGUsXG4gICAgdHlwZSA9IGZpYmVyLnR5cGUsXG4gICAgcHJvcHMgPSBmaWJlci5tZW1vaXplZFByb3BzO1xuICBpbnN0YW5jZVtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IGZpYmVyO1xuICBpbnN0YW5jZVtpbnRlcm5hbFByb3BzS2V5XSA9IHByb3BzO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwiZGlhbG9nXCI6XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwiY2FuY2VsXCIsIGluc3RhbmNlKTtcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJjbG9zZVwiLCBpbnN0YW5jZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiaWZyYW1lXCI6XG4gICAgY2FzZSBcIm9iamVjdFwiOlxuICAgIGNhc2UgXCJlbWJlZFwiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImxvYWRcIiwgaW5zdGFuY2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInZpZGVvXCI6XG4gICAgY2FzZSBcImF1ZGlvXCI6XG4gICAgICBmb3IgKHR5cGUgPSAwOyB0eXBlIDwgbWVkaWFFdmVudFR5cGVzLmxlbmd0aDsgdHlwZSsrKVxuICAgICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KG1lZGlhRXZlbnRUeXBlc1t0eXBlXSwgaW5zdGFuY2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInNvdXJjZVwiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImVycm9yXCIsIGluc3RhbmNlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpbWdcIjpcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICBjYXNlIFwibGlua1wiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImVycm9yXCIsIGluc3RhbmNlKTtcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJsb2FkXCIsIGluc3RhbmNlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkZXRhaWxzXCI6XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwidG9nZ2xlXCIsIGluc3RhbmNlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpbnB1dFwiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImludmFsaWRcIiwgaW5zdGFuY2UpO1xuICAgICAgaW5pdElucHV0KFxuICAgICAgICBpbnN0YW5jZSxcbiAgICAgICAgcHJvcHMudmFsdWUsXG4gICAgICAgIHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgICAgcHJvcHMuY2hlY2tlZCxcbiAgICAgICAgcHJvcHMuZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIHByb3BzLnR5cGUsXG4gICAgICAgIHByb3BzLm5hbWUsXG4gICAgICAgICEwXG4gICAgICApO1xuICAgICAgdHJhY2soaW5zdGFuY2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImludmFsaWRcIiwgaW5zdGFuY2UpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInRleHRhcmVhXCI6XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwiaW52YWxpZFwiLCBpbnN0YW5jZSksXG4gICAgICAgIGluaXRUZXh0YXJlYShpbnN0YW5jZSwgcHJvcHMudmFsdWUsIHByb3BzLmRlZmF1bHRWYWx1ZSwgcHJvcHMuY2hpbGRyZW4pLFxuICAgICAgICB0cmFjayhpbnN0YW5jZSk7XG4gIH1cbiAgdHlwZSA9IHByb3BzLmNoaWxkcmVuO1xuICAoXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHR5cGUgJiZcbiAgICBcIm51bWJlclwiICE9PSB0eXBlb2YgdHlwZSAmJlxuICAgIFwiYmlnaW50XCIgIT09IHR5cGVvZiB0eXBlKSB8fFxuICBpbnN0YW5jZS50ZXh0Q29udGVudCA9PT0gXCJcIiArIHR5cGUgfHxcbiAgITAgPT09IHByb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZyB8fFxuICBjaGVja0ZvclVubWF0Y2hlZFRleHQoaW5zdGFuY2UudGV4dENvbnRlbnQsIHR5cGUpXG4gICAgPyAobnVsbCAhPSBwcm9wcy5wb3BvdmVyICYmXG4gICAgICAgIChsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwiYmVmb3JldG9nZ2xlXCIsIGluc3RhbmNlKSxcbiAgICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcInRvZ2dsZVwiLCBpbnN0YW5jZSkpLFxuICAgICAgbnVsbCAhPSBwcm9wcy5vblNjcm9sbCAmJiBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwic2Nyb2xsXCIsIGluc3RhbmNlKSxcbiAgICAgIG51bGwgIT0gcHJvcHMub25TY3JvbGxFbmQgJiZcbiAgICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcInNjcm9sbGVuZFwiLCBpbnN0YW5jZSksXG4gICAgICBudWxsICE9IHByb3BzLm9uQ2xpY2sgJiYgKGluc3RhbmNlLm9uY2xpY2sgPSBub29wJDEpLFxuICAgICAgKGluc3RhbmNlID0gITApKVxuICAgIDogKGluc3RhbmNlID0gITEpO1xuICBpbnN0YW5jZSB8fCB0aHJvd09uSHlkcmF0aW9uTWlzbWF0Y2goZmliZXIpO1xufVxuZnVuY3Rpb24gcG9wVG9OZXh0SG9zdFBhcmVudChmaWJlcikge1xuICBmb3IgKGh5ZHJhdGlvblBhcmVudEZpYmVyID0gZmliZXIucmV0dXJuOyBoeWRyYXRpb25QYXJlbnRGaWJlcjsgKVxuICAgIHN3aXRjaCAoaHlkcmF0aW9uUGFyZW50RmliZXIudGFnKSB7XG4gICAgICBjYXNlIDM6XG4gICAgICBjYXNlIDI3OlxuICAgICAgICByb290T3JTaW5nbGV0b25Db250ZXh0ID0gITA7XG4gICAgICAgIHJldHVybjtcbiAgICAgIGNhc2UgNTpcbiAgICAgIGNhc2UgMTM6XG4gICAgICAgIHJvb3RPclNpbmdsZXRvbkNvbnRleHQgPSAhMTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaHlkcmF0aW9uUGFyZW50RmliZXIgPSBoeWRyYXRpb25QYXJlbnRGaWJlci5yZXR1cm47XG4gICAgfVxufVxuZnVuY3Rpb24gcG9wSHlkcmF0aW9uU3RhdGUoZmliZXIpIHtcbiAgaWYgKGZpYmVyICE9PSBoeWRyYXRpb25QYXJlbnRGaWJlcikgcmV0dXJuICExO1xuICBpZiAoIWlzSHlkcmF0aW5nKSByZXR1cm4gcG9wVG9OZXh0SG9zdFBhcmVudChmaWJlciksIChpc0h5ZHJhdGluZyA9ICEwKSwgITE7XG4gIHZhciBzaG91bGRDbGVhciA9ICExLFxuICAgIEpTQ29tcGlsZXJfdGVtcDtcbiAgaWYgKChKU0NvbXBpbGVyX3RlbXAgPSAzICE9PSBmaWJlci50YWcgJiYgMjcgIT09IGZpYmVyLnRhZykpIHtcbiAgICBpZiAoKEpTQ29tcGlsZXJfdGVtcCA9IDUgPT09IGZpYmVyLnRhZykpXG4gICAgICAoSlNDb21waWxlcl90ZW1wID0gZmliZXIudHlwZSksXG4gICAgICAgIChKU0NvbXBpbGVyX3RlbXAgPVxuICAgICAgICAgICEoXCJmb3JtXCIgIT09IEpTQ29tcGlsZXJfdGVtcCAmJiBcImJ1dHRvblwiICE9PSBKU0NvbXBpbGVyX3RlbXApIHx8XG4gICAgICAgICAgc2hvdWxkU2V0VGV4dENvbnRlbnQoZmliZXIudHlwZSwgZmliZXIubWVtb2l6ZWRQcm9wcykpO1xuICAgIEpTQ29tcGlsZXJfdGVtcCA9ICFKU0NvbXBpbGVyX3RlbXA7XG4gIH1cbiAgSlNDb21waWxlcl90ZW1wICYmIChzaG91bGRDbGVhciA9ICEwKTtcbiAgc2hvdWxkQ2xlYXIgJiYgbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSAmJiB0aHJvd09uSHlkcmF0aW9uTWlzbWF0Y2goZmliZXIpO1xuICBwb3BUb05leHRIb3N0UGFyZW50KGZpYmVyKTtcbiAgaWYgKDEzID09PSBmaWJlci50YWcpIHtcbiAgICBmaWJlciA9IGZpYmVyLm1lbW9pemVkU3RhdGU7XG4gICAgZmliZXIgPSBudWxsICE9PSBmaWJlciA/IGZpYmVyLmRlaHlkcmF0ZWQgOiBudWxsO1xuICAgIGlmICghZmliZXIpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzE3KSk7XG4gICAgYToge1xuICAgICAgZmliZXIgPSBmaWJlci5uZXh0U2libGluZztcbiAgICAgIGZvciAoc2hvdWxkQ2xlYXIgPSAwOyBmaWJlcjsgKSB7XG4gICAgICAgIGlmICg4ID09PSBmaWJlci5ub2RlVHlwZSlcbiAgICAgICAgICBpZiAoKChKU0NvbXBpbGVyX3RlbXAgPSBmaWJlci5kYXRhKSwgXCIvJFwiID09PSBKU0NvbXBpbGVyX3RlbXApKSB7XG4gICAgICAgICAgICBpZiAoMCA9PT0gc2hvdWxkQ2xlYXIpIHtcbiAgICAgICAgICAgICAgbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IGdldE5leHRIeWRyYXRhYmxlKGZpYmVyLm5leHRTaWJsaW5nKTtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHNob3VsZENsZWFyLS07XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICAoXCIkXCIgIT09IEpTQ29tcGlsZXJfdGVtcCAmJlxuICAgICAgICAgICAgICBcIiQhXCIgIT09IEpTQ29tcGlsZXJfdGVtcCAmJlxuICAgICAgICAgICAgICBcIiQ/XCIgIT09IEpTQ29tcGlsZXJfdGVtcCkgfHxcbiAgICAgICAgICAgICAgc2hvdWxkQ2xlYXIrKztcbiAgICAgICAgZmliZXIgPSBmaWJlci5uZXh0U2libGluZztcbiAgICAgIH1cbiAgICAgIG5leHRIeWRyYXRhYmxlSW5zdGFuY2UgPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlXG4gICAgbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IGh5ZHJhdGlvblBhcmVudEZpYmVyXG4gICAgICA/IGdldE5leHRIeWRyYXRhYmxlKGZpYmVyLnN0YXRlTm9kZS5uZXh0U2libGluZylcbiAgICAgIDogbnVsbDtcbiAgcmV0dXJuICEwO1xufVxuZnVuY3Rpb24gcmVzZXRIeWRyYXRpb25TdGF0ZSgpIHtcbiAgbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IGh5ZHJhdGlvblBhcmVudEZpYmVyID0gbnVsbDtcbiAgaXNIeWRyYXRpbmcgPSAhMTtcbn1cbmZ1bmN0aW9uIHF1ZXVlSHlkcmF0aW9uRXJyb3IoZXJyb3IpIHtcbiAgbnVsbCA9PT0gaHlkcmF0aW9uRXJyb3JzXG4gICAgPyAoaHlkcmF0aW9uRXJyb3JzID0gW2Vycm9yXSlcbiAgICA6IGh5ZHJhdGlvbkVycm9ycy5wdXNoKGVycm9yKTtcbn1cbnZhciBTdXNwZW5zZUV4Y2VwdGlvbiA9IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDYwKSksXG4gIFN1c3BlbnNleUNvbW1pdEV4Y2VwdGlvbiA9IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDc0KSksXG4gIG5vb3BTdXNwZW5zZXlDb21taXRUaGVuYWJsZSA9IHsgdGhlbjogZnVuY3Rpb24gKCkge30gfTtcbmZ1bmN0aW9uIGlzVGhlbmFibGVSZXNvbHZlZCh0aGVuYWJsZSkge1xuICB0aGVuYWJsZSA9IHRoZW5hYmxlLnN0YXR1cztcbiAgcmV0dXJuIFwiZnVsZmlsbGVkXCIgPT09IHRoZW5hYmxlIHx8IFwicmVqZWN0ZWRcIiA9PT0gdGhlbmFibGU7XG59XG5mdW5jdGlvbiBub29wJDMoKSB7fVxuZnVuY3Rpb24gdHJhY2tVc2VkVGhlbmFibGUodGhlbmFibGVTdGF0ZSwgdGhlbmFibGUsIGluZGV4KSB7XG4gIGluZGV4ID0gdGhlbmFibGVTdGF0ZVtpbmRleF07XG4gIHZvaWQgMCA9PT0gaW5kZXhcbiAgICA/IHRoZW5hYmxlU3RhdGUucHVzaCh0aGVuYWJsZSlcbiAgICA6IGluZGV4ICE9PSB0aGVuYWJsZSAmJiAodGhlbmFibGUudGhlbihub29wJDMsIG5vb3AkMyksICh0aGVuYWJsZSA9IGluZGV4KSk7XG4gIHN3aXRjaCAodGhlbmFibGUuc3RhdHVzKSB7XG4gICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgcmV0dXJuIHRoZW5hYmxlLnZhbHVlO1xuICAgIGNhc2UgXCJyZWplY3RlZFwiOlxuICAgICAgdGhlbmFibGVTdGF0ZSA9IHRoZW5hYmxlLnJlYXNvbjtcbiAgICAgIGlmICh0aGVuYWJsZVN0YXRlID09PSBTdXNwZW5zZUV4Y2VwdGlvbilcbiAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0ODMpKTtcbiAgICAgIHRocm93IHRoZW5hYmxlU3RhdGU7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChcInN0cmluZ1wiID09PSB0eXBlb2YgdGhlbmFibGUuc3RhdHVzKSB0aGVuYWJsZS50aGVuKG5vb3AkMywgbm9vcCQzKTtcbiAgICAgIGVsc2Uge1xuICAgICAgICB0aGVuYWJsZVN0YXRlID0gd29ya0luUHJvZ3Jlc3NSb290O1xuICAgICAgICBpZiAobnVsbCAhPT0gdGhlbmFibGVTdGF0ZSAmJiAxMDAgPCB0aGVuYWJsZVN0YXRlLnNoZWxsU3VzcGVuZENvdW50ZXIpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0ODIpKTtcbiAgICAgICAgdGhlbmFibGVTdGF0ZSA9IHRoZW5hYmxlO1xuICAgICAgICB0aGVuYWJsZVN0YXRlLnN0YXR1cyA9IFwicGVuZGluZ1wiO1xuICAgICAgICB0aGVuYWJsZVN0YXRlLnRoZW4oXG4gICAgICAgICAgZnVuY3Rpb24gKGZ1bGZpbGxlZFZhbHVlKSB7XG4gICAgICAgICAgICBpZiAoXCJwZW5kaW5nXCIgPT09IHRoZW5hYmxlLnN0YXR1cykge1xuICAgICAgICAgICAgICB2YXIgZnVsZmlsbGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUuc3RhdHVzID0gXCJmdWxmaWxsZWRcIjtcbiAgICAgICAgICAgICAgZnVsZmlsbGVkVGhlbmFibGUudmFsdWUgPSBmdWxmaWxsZWRWYWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgaWYgKFwicGVuZGluZ1wiID09PSB0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgICAgICAgdmFyIHJlamVjdGVkVGhlbmFibGUgPSB0aGVuYWJsZTtcbiAgICAgICAgICAgICAgcmVqZWN0ZWRUaGVuYWJsZS5zdGF0dXMgPSBcInJlamVjdGVkXCI7XG4gICAgICAgICAgICAgIHJlamVjdGVkVGhlbmFibGUucmVhc29uID0gZXJyb3I7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICApO1xuICAgICAgfVxuICAgICAgc3dpdGNoICh0aGVuYWJsZS5zdGF0dXMpIHtcbiAgICAgICAgY2FzZSBcImZ1bGZpbGxlZFwiOlxuICAgICAgICAgIHJldHVybiB0aGVuYWJsZS52YWx1ZTtcbiAgICAgICAgY2FzZSBcInJlamVjdGVkXCI6XG4gICAgICAgICAgdGhlbmFibGVTdGF0ZSA9IHRoZW5hYmxlLnJlYXNvbjtcbiAgICAgICAgICBpZiAodGhlbmFibGVTdGF0ZSA9PT0gU3VzcGVuc2VFeGNlcHRpb24pXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ4MykpO1xuICAgICAgICAgIHRocm93IHRoZW5hYmxlU3RhdGU7XG4gICAgICB9XG4gICAgICBzdXNwZW5kZWRUaGVuYWJsZSA9IHRoZW5hYmxlO1xuICAgICAgdGhyb3cgU3VzcGVuc2VFeGNlcHRpb247XG4gIH1cbn1cbnZhciBzdXNwZW5kZWRUaGVuYWJsZSA9IG51bGw7XG5mdW5jdGlvbiBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpIHtcbiAgaWYgKG51bGwgPT09IHN1c3BlbmRlZFRoZW5hYmxlKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ1OSkpO1xuICB2YXIgdGhlbmFibGUgPSBzdXNwZW5kZWRUaGVuYWJsZTtcbiAgc3VzcGVuZGVkVGhlbmFibGUgPSBudWxsO1xuICByZXR1cm4gdGhlbmFibGU7XG59XG52YXIgdGhlbmFibGVTdGF0ZSQxID0gbnVsbCxcbiAgdGhlbmFibGVJbmRleENvdW50ZXIkMSA9IDA7XG5mdW5jdGlvbiB1bndyYXBUaGVuYWJsZSh0aGVuYWJsZSkge1xuICB2YXIgaW5kZXggPSB0aGVuYWJsZUluZGV4Q291bnRlciQxO1xuICB0aGVuYWJsZUluZGV4Q291bnRlciQxICs9IDE7XG4gIG51bGwgPT09IHRoZW5hYmxlU3RhdGUkMSAmJiAodGhlbmFibGVTdGF0ZSQxID0gW10pO1xuICByZXR1cm4gdHJhY2tVc2VkVGhlbmFibGUodGhlbmFibGVTdGF0ZSQxLCB0aGVuYWJsZSwgaW5kZXgpO1xufVxuZnVuY3Rpb24gY29lcmNlUmVmKHdvcmtJblByb2dyZXNzLCBlbGVtZW50KSB7XG4gIGVsZW1lbnQgPSBlbGVtZW50LnByb3BzLnJlZjtcbiAgd29ya0luUHJvZ3Jlc3MucmVmID0gdm9pZCAwICE9PSBlbGVtZW50ID8gZWxlbWVudCA6IG51bGw7XG59XG5mdW5jdGlvbiB0aHJvd09uSW52YWxpZE9iamVjdFR5cGUocmV0dXJuRmliZXIsIG5ld0NoaWxkKSB7XG4gIGlmIChuZXdDaGlsZC4kJHR5cGVvZiA9PT0gUkVBQ1RfTEVHQUNZX0VMRU1FTlRfVFlQRSlcbiAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDUyNSkpO1xuICByZXR1cm5GaWJlciA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChuZXdDaGlsZCk7XG4gIHRocm93IEVycm9yKFxuICAgIGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoXG4gICAgICAzMSxcbiAgICAgIFwiW29iamVjdCBPYmplY3RdXCIgPT09IHJldHVybkZpYmVyXG4gICAgICAgID8gXCJvYmplY3Qgd2l0aCBrZXlzIHtcIiArIE9iamVjdC5rZXlzKG5ld0NoaWxkKS5qb2luKFwiLCBcIikgKyBcIn1cIlxuICAgICAgICA6IHJldHVybkZpYmVyXG4gICAgKVxuICApO1xufVxuZnVuY3Rpb24gcmVzb2x2ZUxhenkobGF6eVR5cGUpIHtcbiAgdmFyIGluaXQgPSBsYXp5VHlwZS5faW5pdDtcbiAgcmV0dXJuIGluaXQobGF6eVR5cGUuX3BheWxvYWQpO1xufVxuZnVuY3Rpb24gY3JlYXRlQ2hpbGRSZWNvbmNpbGVyKHNob3VsZFRyYWNrU2lkZUVmZmVjdHMpIHtcbiAgZnVuY3Rpb24gZGVsZXRlQ2hpbGQocmV0dXJuRmliZXIsIGNoaWxkVG9EZWxldGUpIHtcbiAgICBpZiAoc2hvdWxkVHJhY2tTaWRlRWZmZWN0cykge1xuICAgICAgdmFyIGRlbGV0aW9ucyA9IHJldHVybkZpYmVyLmRlbGV0aW9ucztcbiAgICAgIG51bGwgPT09IGRlbGV0aW9uc1xuICAgICAgICA/ICgocmV0dXJuRmliZXIuZGVsZXRpb25zID0gW2NoaWxkVG9EZWxldGVdKSwgKHJldHVybkZpYmVyLmZsYWdzIHw9IDE2KSlcbiAgICAgICAgOiBkZWxldGlvbnMucHVzaChjaGlsZFRvRGVsZXRlKTtcbiAgICB9XG4gIH1cbiAgZnVuY3Rpb24gZGVsZXRlUmVtYWluaW5nQ2hpbGRyZW4ocmV0dXJuRmliZXIsIGN1cnJlbnRGaXJzdENoaWxkKSB7XG4gICAgaWYgKCFzaG91bGRUcmFja1NpZGVFZmZlY3RzKSByZXR1cm4gbnVsbDtcbiAgICBmb3IgKDsgbnVsbCAhPT0gY3VycmVudEZpcnN0Q2hpbGQ7IClcbiAgICAgIGRlbGV0ZUNoaWxkKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZCksXG4gICAgICAgIChjdXJyZW50Rmlyc3RDaGlsZCA9IGN1cnJlbnRGaXJzdENoaWxkLnNpYmxpbmcpO1xuICAgIHJldHVybiBudWxsO1xuICB9XG4gIGZ1bmN0aW9uIG1hcFJlbWFpbmluZ0NoaWxkcmVuKGN1cnJlbnRGaXJzdENoaWxkKSB7XG4gICAgZm9yICh2YXIgZXhpc3RpbmdDaGlsZHJlbiA9IG5ldyBNYXAoKTsgbnVsbCAhPT0gY3VycmVudEZpcnN0Q2hpbGQ7IClcbiAgICAgIG51bGwgIT09IGN1cnJlbnRGaXJzdENoaWxkLmtleVxuICAgICAgICA/IGV4aXN0aW5nQ2hpbGRyZW4uc2V0KGN1cnJlbnRGaXJzdENoaWxkLmtleSwgY3VycmVudEZpcnN0Q2hpbGQpXG4gICAgICAgIDogZXhpc3RpbmdDaGlsZHJlbi5zZXQoY3VycmVudEZpcnN0Q2hpbGQuaW5kZXgsIGN1cnJlbnRGaXJzdENoaWxkKSxcbiAgICAgICAgKGN1cnJlbnRGaXJzdENoaWxkID0gY3VycmVudEZpcnN0Q2hpbGQuc2libGluZyk7XG4gICAgcmV0dXJuIGV4aXN0aW5nQ2hpbGRyZW47XG4gIH1cbiAgZnVuY3Rpb24gdXNlRmliZXIoZmliZXIsIHBlbmRpbmdQcm9wcykge1xuICAgIGZpYmVyID0gY3JlYXRlV29ya0luUHJvZ3Jlc3MoZmliZXIsIHBlbmRpbmdQcm9wcyk7XG4gICAgZmliZXIuaW5kZXggPSAwO1xuICAgIGZpYmVyLnNpYmxpbmcgPSBudWxsO1xuICAgIHJldHVybiBmaWJlcjtcbiAgfVxuICBmdW5jdGlvbiBwbGFjZUNoaWxkKG5ld0ZpYmVyLCBsYXN0UGxhY2VkSW5kZXgsIG5ld0luZGV4KSB7XG4gICAgbmV3RmliZXIuaW5kZXggPSBuZXdJbmRleDtcbiAgICBpZiAoIXNob3VsZFRyYWNrU2lkZUVmZmVjdHMpXG4gICAgICByZXR1cm4gKG5ld0ZpYmVyLmZsYWdzIHw9IDEwNDg1NzYpLCBsYXN0UGxhY2VkSW5kZXg7XG4gICAgbmV3SW5kZXggPSBuZXdGaWJlci5hbHRlcm5hdGU7XG4gICAgaWYgKG51bGwgIT09IG5ld0luZGV4KVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKG5ld0luZGV4ID0gbmV3SW5kZXguaW5kZXgpLFxuICAgICAgICBuZXdJbmRleCA8IGxhc3RQbGFjZWRJbmRleFxuICAgICAgICAgID8gKChuZXdGaWJlci5mbGFncyB8PSAzMzU1NDQzNCksIGxhc3RQbGFjZWRJbmRleClcbiAgICAgICAgICA6IG5ld0luZGV4XG4gICAgICApO1xuICAgIG5ld0ZpYmVyLmZsYWdzIHw9IDMzNTU0NDM0O1xuICAgIHJldHVybiBsYXN0UGxhY2VkSW5kZXg7XG4gIH1cbiAgZnVuY3Rpb24gcGxhY2VTaW5nbGVDaGlsZChuZXdGaWJlcikge1xuICAgIHNob3VsZFRyYWNrU2lkZUVmZmVjdHMgJiZcbiAgICAgIG51bGwgPT09IG5ld0ZpYmVyLmFsdGVybmF0ZSAmJlxuICAgICAgKG5ld0ZpYmVyLmZsYWdzIHw9IDMzNTU0NDM0KTtcbiAgICByZXR1cm4gbmV3RmliZXI7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlVGV4dE5vZGUocmV0dXJuRmliZXIsIGN1cnJlbnQsIHRleHRDb250ZW50LCBsYW5lcykge1xuICAgIGlmIChudWxsID09PSBjdXJyZW50IHx8IDYgIT09IGN1cnJlbnQudGFnKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKGN1cnJlbnQgPSBjcmVhdGVGaWJlckZyb21UZXh0KHRleHRDb250ZW50LCByZXR1cm5GaWJlci5tb2RlLCBsYW5lcykpLFxuICAgICAgICAoY3VycmVudC5yZXR1cm4gPSByZXR1cm5GaWJlciksXG4gICAgICAgIGN1cnJlbnRcbiAgICAgICk7XG4gICAgY3VycmVudCA9IHVzZUZpYmVyKGN1cnJlbnQsIHRleHRDb250ZW50KTtcbiAgICBjdXJyZW50LnJldHVybiA9IHJldHVybkZpYmVyO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZUVsZW1lbnQocmV0dXJuRmliZXIsIGN1cnJlbnQsIGVsZW1lbnQsIGxhbmVzKSB7XG4gICAgdmFyIGVsZW1lbnRUeXBlID0gZWxlbWVudC50eXBlO1xuICAgIGlmIChlbGVtZW50VHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSlcbiAgICAgIHJldHVybiB1cGRhdGVGcmFnbWVudChcbiAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgIGN1cnJlbnQsXG4gICAgICAgIGVsZW1lbnQucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgIGxhbmVzLFxuICAgICAgICBlbGVtZW50LmtleVxuICAgICAgKTtcbiAgICBpZiAoXG4gICAgICBudWxsICE9PSBjdXJyZW50ICYmXG4gICAgICAoY3VycmVudC5lbGVtZW50VHlwZSA9PT0gZWxlbWVudFR5cGUgfHxcbiAgICAgICAgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBlbGVtZW50VHlwZSAmJlxuICAgICAgICAgIG51bGwgIT09IGVsZW1lbnRUeXBlICYmXG4gICAgICAgICAgZWxlbWVudFR5cGUuJCR0eXBlb2YgPT09IFJFQUNUX0xBWllfVFlQRSAmJlxuICAgICAgICAgIHJlc29sdmVMYXp5KGVsZW1lbnRUeXBlKSA9PT0gY3VycmVudC50eXBlKSlcbiAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoY3VycmVudCA9IHVzZUZpYmVyKGN1cnJlbnQsIGVsZW1lbnQucHJvcHMpKSxcbiAgICAgICAgY29lcmNlUmVmKGN1cnJlbnQsIGVsZW1lbnQpLFxuICAgICAgICAoY3VycmVudC5yZXR1cm4gPSByZXR1cm5GaWJlciksXG4gICAgICAgIGN1cnJlbnRcbiAgICAgICk7XG4gICAgY3VycmVudCA9IGNyZWF0ZUZpYmVyRnJvbVR5cGVBbmRQcm9wcyhcbiAgICAgIGVsZW1lbnQudHlwZSxcbiAgICAgIGVsZW1lbnQua2V5LFxuICAgICAgZWxlbWVudC5wcm9wcyxcbiAgICAgIG51bGwsXG4gICAgICByZXR1cm5GaWJlci5tb2RlLFxuICAgICAgbGFuZXNcbiAgICApO1xuICAgIGNvZXJjZVJlZihjdXJyZW50LCBlbGVtZW50KTtcbiAgICBjdXJyZW50LnJldHVybiA9IHJldHVybkZpYmVyO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gIGZ1bmN0aW9uIHVwZGF0ZVBvcnRhbChyZXR1cm5GaWJlciwgY3VycmVudCwgcG9ydGFsLCBsYW5lcykge1xuICAgIGlmIChcbiAgICAgIG51bGwgPT09IGN1cnJlbnQgfHxcbiAgICAgIDQgIT09IGN1cnJlbnQudGFnIHx8XG4gICAgICBjdXJyZW50LnN0YXRlTm9kZS5jb250YWluZXJJbmZvICE9PSBwb3J0YWwuY29udGFpbmVySW5mbyB8fFxuICAgICAgY3VycmVudC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24gIT09IHBvcnRhbC5pbXBsZW1lbnRhdGlvblxuICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChjdXJyZW50ID0gY3JlYXRlRmliZXJGcm9tUG9ydGFsKHBvcnRhbCwgcmV0dXJuRmliZXIubW9kZSwgbGFuZXMpKSxcbiAgICAgICAgKGN1cnJlbnQucmV0dXJuID0gcmV0dXJuRmliZXIpLFxuICAgICAgICBjdXJyZW50XG4gICAgICApO1xuICAgIGN1cnJlbnQgPSB1c2VGaWJlcihjdXJyZW50LCBwb3J0YWwuY2hpbGRyZW4gfHwgW10pO1xuICAgIGN1cnJlbnQucmV0dXJuID0gcmV0dXJuRmliZXI7XG4gICAgcmV0dXJuIGN1cnJlbnQ7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlRnJhZ21lbnQocmV0dXJuRmliZXIsIGN1cnJlbnQsIGZyYWdtZW50LCBsYW5lcywga2V5KSB7XG4gICAgaWYgKG51bGwgPT09IGN1cnJlbnQgfHwgNyAhPT0gY3VycmVudC50YWcpXG4gICAgICByZXR1cm4gKFxuICAgICAgICAoY3VycmVudCA9IGNyZWF0ZUZpYmVyRnJvbUZyYWdtZW50KFxuICAgICAgICAgIGZyYWdtZW50LFxuICAgICAgICAgIHJldHVybkZpYmVyLm1vZGUsXG4gICAgICAgICAgbGFuZXMsXG4gICAgICAgICAga2V5XG4gICAgICAgICkpLFxuICAgICAgICAoY3VycmVudC5yZXR1cm4gPSByZXR1cm5GaWJlciksXG4gICAgICAgIGN1cnJlbnRcbiAgICAgICk7XG4gICAgY3VycmVudCA9IHVzZUZpYmVyKGN1cnJlbnQsIGZyYWdtZW50KTtcbiAgICBjdXJyZW50LnJldHVybiA9IHJldHVybkZpYmVyO1xuICAgIHJldHVybiBjdXJyZW50O1xuICB9XG4gIGZ1bmN0aW9uIGNyZWF0ZUNoaWxkKHJldHVybkZpYmVyLCBuZXdDaGlsZCwgbGFuZXMpIHtcbiAgICBpZiAoXG4gICAgICAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG5ld0NoaWxkICYmIFwiXCIgIT09IG5ld0NoaWxkKSB8fFxuICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIG5ld0NoaWxkIHx8XG4gICAgICBcImJpZ2ludFwiID09PSB0eXBlb2YgbmV3Q2hpbGRcbiAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICAobmV3Q2hpbGQgPSBjcmVhdGVGaWJlckZyb21UZXh0KFxuICAgICAgICAgIFwiXCIgKyBuZXdDaGlsZCxcbiAgICAgICAgICByZXR1cm5GaWJlci5tb2RlLFxuICAgICAgICAgIGxhbmVzXG4gICAgICAgICkpLFxuICAgICAgICAobmV3Q2hpbGQucmV0dXJuID0gcmV0dXJuRmliZXIpLFxuICAgICAgICBuZXdDaGlsZFxuICAgICAgKTtcbiAgICBpZiAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5ld0NoaWxkICYmIG51bGwgIT09IG5ld0NoaWxkKSB7XG4gICAgICBzd2l0Y2ggKG5ld0NoaWxkLiQkdHlwZW9mKSB7XG4gICAgICAgIGNhc2UgUkVBQ1RfRUxFTUVOVF9UWVBFOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAobGFuZXMgPSBjcmVhdGVGaWJlckZyb21UeXBlQW5kUHJvcHMoXG4gICAgICAgICAgICAgIG5ld0NoaWxkLnR5cGUsXG4gICAgICAgICAgICAgIG5ld0NoaWxkLmtleSxcbiAgICAgICAgICAgICAgbmV3Q2hpbGQucHJvcHMsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIHJldHVybkZpYmVyLm1vZGUsXG4gICAgICAgICAgICAgIGxhbmVzXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGNvZXJjZVJlZihsYW5lcywgbmV3Q2hpbGQpLFxuICAgICAgICAgICAgKGxhbmVzLnJldHVybiA9IHJldHVybkZpYmVyKSxcbiAgICAgICAgICAgIGxhbmVzXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKG5ld0NoaWxkID0gY3JlYXRlRmliZXJGcm9tUG9ydGFsKFxuICAgICAgICAgICAgICBuZXdDaGlsZCxcbiAgICAgICAgICAgICAgcmV0dXJuRmliZXIubW9kZSxcbiAgICAgICAgICAgICAgbGFuZXNcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgKG5ld0NoaWxkLnJldHVybiA9IHJldHVybkZpYmVyKSxcbiAgICAgICAgICAgIG5ld0NoaWxkXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgdmFyIGluaXQgPSBuZXdDaGlsZC5faW5pdDtcbiAgICAgICAgICBuZXdDaGlsZCA9IGluaXQobmV3Q2hpbGQuX3BheWxvYWQpO1xuICAgICAgICAgIHJldHVybiBjcmVhdGVDaGlsZChyZXR1cm5GaWJlciwgbmV3Q2hpbGQsIGxhbmVzKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5SW1wbChuZXdDaGlsZCkgfHwgZ2V0SXRlcmF0b3JGbihuZXdDaGlsZCkpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKG5ld0NoaWxkID0gY3JlYXRlRmliZXJGcm9tRnJhZ21lbnQoXG4gICAgICAgICAgICBuZXdDaGlsZCxcbiAgICAgICAgICAgIHJldHVybkZpYmVyLm1vZGUsXG4gICAgICAgICAgICBsYW5lcyxcbiAgICAgICAgICAgIG51bGxcbiAgICAgICAgICApKSxcbiAgICAgICAgICAobmV3Q2hpbGQucmV0dXJuID0gcmV0dXJuRmliZXIpLFxuICAgICAgICAgIG5ld0NoaWxkXG4gICAgICAgICk7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbmV3Q2hpbGQudGhlbilcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUNoaWxkKHJldHVybkZpYmVyLCB1bndyYXBUaGVuYWJsZShuZXdDaGlsZCksIGxhbmVzKTtcbiAgICAgIGlmIChuZXdDaGlsZC4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFKVxuICAgICAgICByZXR1cm4gY3JlYXRlQ2hpbGQoXG4gICAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgICAgcmVhZENvbnRleHREdXJpbmdSZWNvbmNpbGlhdGlvbihyZXR1cm5GaWJlciwgbmV3Q2hpbGQpLFxuICAgICAgICAgIGxhbmVzXG4gICAgICAgICk7XG4gICAgICB0aHJvd09uSW52YWxpZE9iamVjdFR5cGUocmV0dXJuRmliZXIsIG5ld0NoaWxkKTtcbiAgICB9XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgZnVuY3Rpb24gdXBkYXRlU2xvdChyZXR1cm5GaWJlciwgb2xkRmliZXIsIG5ld0NoaWxkLCBsYW5lcykge1xuICAgIHZhciBrZXkgPSBudWxsICE9PSBvbGRGaWJlciA/IG9sZEZpYmVyLmtleSA6IG51bGw7XG4gICAgaWYgKFxuICAgICAgKFwic3RyaW5nXCIgPT09IHR5cGVvZiBuZXdDaGlsZCAmJiBcIlwiICE9PSBuZXdDaGlsZCkgfHxcbiAgICAgIFwibnVtYmVyXCIgPT09IHR5cGVvZiBuZXdDaGlsZCB8fFxuICAgICAgXCJiaWdpbnRcIiA9PT0gdHlwZW9mIG5ld0NoaWxkXG4gICAgKVxuICAgICAgcmV0dXJuIG51bGwgIT09IGtleVxuICAgICAgICA/IG51bGxcbiAgICAgICAgOiB1cGRhdGVUZXh0Tm9kZShyZXR1cm5GaWJlciwgb2xkRmliZXIsIFwiXCIgKyBuZXdDaGlsZCwgbGFuZXMpO1xuICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgbmV3Q2hpbGQgJiYgbnVsbCAhPT0gbmV3Q2hpbGQpIHtcbiAgICAgIHN3aXRjaCAobmV3Q2hpbGQuJCR0eXBlb2YpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIG5ld0NoaWxkLmtleSA9PT0ga2V5XG4gICAgICAgICAgICA/IHVwZGF0ZUVsZW1lbnQocmV0dXJuRmliZXIsIG9sZEZpYmVyLCBuZXdDaGlsZCwgbGFuZXMpXG4gICAgICAgICAgICA6IG51bGw7XG4gICAgICAgIGNhc2UgUkVBQ1RfUE9SVEFMX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIG5ld0NoaWxkLmtleSA9PT0ga2V5XG4gICAgICAgICAgICA/IHVwZGF0ZVBvcnRhbChyZXR1cm5GaWJlciwgb2xkRmliZXIsIG5ld0NoaWxkLCBsYW5lcylcbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChrZXkgPSBuZXdDaGlsZC5faW5pdCksXG4gICAgICAgICAgICAobmV3Q2hpbGQgPSBrZXkobmV3Q2hpbGQuX3BheWxvYWQpKSxcbiAgICAgICAgICAgIHVwZGF0ZVNsb3QocmV0dXJuRmliZXIsIG9sZEZpYmVyLCBuZXdDaGlsZCwgbGFuZXMpXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIGlmIChpc0FycmF5SW1wbChuZXdDaGlsZCkgfHwgZ2V0SXRlcmF0b3JGbihuZXdDaGlsZCkpXG4gICAgICAgIHJldHVybiBudWxsICE9PSBrZXlcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IHVwZGF0ZUZyYWdtZW50KHJldHVybkZpYmVyLCBvbGRGaWJlciwgbmV3Q2hpbGQsIGxhbmVzLCBudWxsKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBuZXdDaGlsZC50aGVuKVxuICAgICAgICByZXR1cm4gdXBkYXRlU2xvdChcbiAgICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgICBvbGRGaWJlcixcbiAgICAgICAgICB1bndyYXBUaGVuYWJsZShuZXdDaGlsZCksXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIGlmIChuZXdDaGlsZC4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFKVxuICAgICAgICByZXR1cm4gdXBkYXRlU2xvdChcbiAgICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgICBvbGRGaWJlcixcbiAgICAgICAgICByZWFkQ29udGV4dER1cmluZ1JlY29uY2lsaWF0aW9uKHJldHVybkZpYmVyLCBuZXdDaGlsZCksXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIHRocm93T25JbnZhbGlkT2JqZWN0VHlwZShyZXR1cm5GaWJlciwgbmV3Q2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiB1cGRhdGVGcm9tTWFwKFxuICAgIGV4aXN0aW5nQ2hpbGRyZW4sXG4gICAgcmV0dXJuRmliZXIsXG4gICAgbmV3SWR4LFxuICAgIG5ld0NoaWxkLFxuICAgIGxhbmVzXG4gICkge1xuICAgIGlmIChcbiAgICAgIChcInN0cmluZ1wiID09PSB0eXBlb2YgbmV3Q2hpbGQgJiYgXCJcIiAhPT0gbmV3Q2hpbGQpIHx8XG4gICAgICBcIm51bWJlclwiID09PSB0eXBlb2YgbmV3Q2hpbGQgfHxcbiAgICAgIFwiYmlnaW50XCIgPT09IHR5cGVvZiBuZXdDaGlsZFxuICAgIClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChleGlzdGluZ0NoaWxkcmVuID0gZXhpc3RpbmdDaGlsZHJlbi5nZXQobmV3SWR4KSB8fCBudWxsKSxcbiAgICAgICAgdXBkYXRlVGV4dE5vZGUocmV0dXJuRmliZXIsIGV4aXN0aW5nQ2hpbGRyZW4sIFwiXCIgKyBuZXdDaGlsZCwgbGFuZXMpXG4gICAgICApO1xuICAgIGlmIChcIm9iamVjdFwiID09PSB0eXBlb2YgbmV3Q2hpbGQgJiYgbnVsbCAhPT0gbmV3Q2hpbGQpIHtcbiAgICAgIHN3aXRjaCAobmV3Q2hpbGQuJCR0eXBlb2YpIHtcbiAgICAgICAgY2FzZSBSRUFDVF9FTEVNRU5UX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChleGlzdGluZ0NoaWxkcmVuID1cbiAgICAgICAgICAgICAgZXhpc3RpbmdDaGlsZHJlbi5nZXQoXG4gICAgICAgICAgICAgICAgbnVsbCA9PT0gbmV3Q2hpbGQua2V5ID8gbmV3SWR4IDogbmV3Q2hpbGQua2V5XG4gICAgICAgICAgICAgICkgfHwgbnVsbCksXG4gICAgICAgICAgICB1cGRhdGVFbGVtZW50KHJldHVybkZpYmVyLCBleGlzdGluZ0NoaWxkcmVuLCBuZXdDaGlsZCwgbGFuZXMpXG4gICAgICAgICAgKTtcbiAgICAgICAgY2FzZSBSRUFDVF9QT1JUQUxfVFlQRTpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKGV4aXN0aW5nQ2hpbGRyZW4gPVxuICAgICAgICAgICAgICBleGlzdGluZ0NoaWxkcmVuLmdldChcbiAgICAgICAgICAgICAgICBudWxsID09PSBuZXdDaGlsZC5rZXkgPyBuZXdJZHggOiBuZXdDaGlsZC5rZXlcbiAgICAgICAgICAgICAgKSB8fCBudWxsKSxcbiAgICAgICAgICAgIHVwZGF0ZVBvcnRhbChyZXR1cm5GaWJlciwgZXhpc3RpbmdDaGlsZHJlbiwgbmV3Q2hpbGQsIGxhbmVzKVxuICAgICAgICAgICk7XG4gICAgICAgIGNhc2UgUkVBQ1RfTEFaWV9UWVBFOlxuICAgICAgICAgIHZhciBpbml0ID0gbmV3Q2hpbGQuX2luaXQ7XG4gICAgICAgICAgbmV3Q2hpbGQgPSBpbml0KG5ld0NoaWxkLl9wYXlsb2FkKTtcbiAgICAgICAgICByZXR1cm4gdXBkYXRlRnJvbU1hcChcbiAgICAgICAgICAgIGV4aXN0aW5nQ2hpbGRyZW4sXG4gICAgICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgICAgIG5ld0lkeCxcbiAgICAgICAgICAgIG5ld0NoaWxkLFxuICAgICAgICAgICAgbGFuZXNcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlJbXBsKG5ld0NoaWxkKSB8fCBnZXRJdGVyYXRvckZuKG5ld0NoaWxkKSlcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoZXhpc3RpbmdDaGlsZHJlbiA9IGV4aXN0aW5nQ2hpbGRyZW4uZ2V0KG5ld0lkeCkgfHwgbnVsbCksXG4gICAgICAgICAgdXBkYXRlRnJhZ21lbnQocmV0dXJuRmliZXIsIGV4aXN0aW5nQ2hpbGRyZW4sIG5ld0NoaWxkLCBsYW5lcywgbnVsbClcbiAgICAgICAgKTtcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBuZXdDaGlsZC50aGVuKVxuICAgICAgICByZXR1cm4gdXBkYXRlRnJvbU1hcChcbiAgICAgICAgICBleGlzdGluZ0NoaWxkcmVuLFxuICAgICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICAgIG5ld0lkeCxcbiAgICAgICAgICB1bndyYXBUaGVuYWJsZShuZXdDaGlsZCksXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIGlmIChuZXdDaGlsZC4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFKVxuICAgICAgICByZXR1cm4gdXBkYXRlRnJvbU1hcChcbiAgICAgICAgICBleGlzdGluZ0NoaWxkcmVuLFxuICAgICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICAgIG5ld0lkeCxcbiAgICAgICAgICByZWFkQ29udGV4dER1cmluZ1JlY29uY2lsaWF0aW9uKHJldHVybkZpYmVyLCBuZXdDaGlsZCksXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIHRocm93T25JbnZhbGlkT2JqZWN0VHlwZShyZXR1cm5GaWJlciwgbmV3Q2hpbGQpO1xuICAgIH1cbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuICBmdW5jdGlvbiByZWNvbmNpbGVDaGlsZHJlbkFycmF5KFxuICAgIHJldHVybkZpYmVyLFxuICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgIG5ld0NoaWxkcmVuLFxuICAgIGxhbmVzXG4gICkge1xuICAgIGZvciAoXG4gICAgICB2YXIgcmVzdWx0aW5nRmlyc3RDaGlsZCA9IG51bGwsXG4gICAgICAgIHByZXZpb3VzTmV3RmliZXIgPSBudWxsLFxuICAgICAgICBvbGRGaWJlciA9IGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICBuZXdJZHggPSAoY3VycmVudEZpcnN0Q2hpbGQgPSAwKSxcbiAgICAgICAgbmV4dE9sZEZpYmVyID0gbnVsbDtcbiAgICAgIG51bGwgIT09IG9sZEZpYmVyICYmIG5ld0lkeCA8IG5ld0NoaWxkcmVuLmxlbmd0aDtcbiAgICAgIG5ld0lkeCsrXG4gICAgKSB7XG4gICAgICBvbGRGaWJlci5pbmRleCA+IG5ld0lkeFxuICAgICAgICA/ICgobmV4dE9sZEZpYmVyID0gb2xkRmliZXIpLCAob2xkRmliZXIgPSBudWxsKSlcbiAgICAgICAgOiAobmV4dE9sZEZpYmVyID0gb2xkRmliZXIuc2libGluZyk7XG4gICAgICB2YXIgbmV3RmliZXIgPSB1cGRhdGVTbG90KFxuICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgb2xkRmliZXIsXG4gICAgICAgIG5ld0NoaWxkcmVuW25ld0lkeF0sXG4gICAgICAgIGxhbmVzXG4gICAgICApO1xuICAgICAgaWYgKG51bGwgPT09IG5ld0ZpYmVyKSB7XG4gICAgICAgIG51bGwgPT09IG9sZEZpYmVyICYmIChvbGRGaWJlciA9IG5leHRPbGRGaWJlcik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgc2hvdWxkVHJhY2tTaWRlRWZmZWN0cyAmJlxuICAgICAgICBvbGRGaWJlciAmJlxuICAgICAgICBudWxsID09PSBuZXdGaWJlci5hbHRlcm5hdGUgJiZcbiAgICAgICAgZGVsZXRlQ2hpbGQocmV0dXJuRmliZXIsIG9sZEZpYmVyKTtcbiAgICAgIGN1cnJlbnRGaXJzdENoaWxkID0gcGxhY2VDaGlsZChuZXdGaWJlciwgY3VycmVudEZpcnN0Q2hpbGQsIG5ld0lkeCk7XG4gICAgICBudWxsID09PSBwcmV2aW91c05ld0ZpYmVyXG4gICAgICAgID8gKHJlc3VsdGluZ0ZpcnN0Q2hpbGQgPSBuZXdGaWJlcilcbiAgICAgICAgOiAocHJldmlvdXNOZXdGaWJlci5zaWJsaW5nID0gbmV3RmliZXIpO1xuICAgICAgcHJldmlvdXNOZXdGaWJlciA9IG5ld0ZpYmVyO1xuICAgICAgb2xkRmliZXIgPSBuZXh0T2xkRmliZXI7XG4gICAgfVxuICAgIGlmIChuZXdJZHggPT09IG5ld0NoaWxkcmVuLmxlbmd0aClcbiAgICAgIHJldHVybiAoXG4gICAgICAgIGRlbGV0ZVJlbWFpbmluZ0NoaWxkcmVuKHJldHVybkZpYmVyLCBvbGRGaWJlciksXG4gICAgICAgIGlzSHlkcmF0aW5nICYmIHB1c2hUcmVlRm9yayhyZXR1cm5GaWJlciwgbmV3SWR4KSxcbiAgICAgICAgcmVzdWx0aW5nRmlyc3RDaGlsZFxuICAgICAgKTtcbiAgICBpZiAobnVsbCA9PT0gb2xkRmliZXIpIHtcbiAgICAgIGZvciAoOyBuZXdJZHggPCBuZXdDaGlsZHJlbi5sZW5ndGg7IG5ld0lkeCsrKVxuICAgICAgICAob2xkRmliZXIgPSBjcmVhdGVDaGlsZChyZXR1cm5GaWJlciwgbmV3Q2hpbGRyZW5bbmV3SWR4XSwgbGFuZXMpKSxcbiAgICAgICAgICBudWxsICE9PSBvbGRGaWJlciAmJlxuICAgICAgICAgICAgKChjdXJyZW50Rmlyc3RDaGlsZCA9IHBsYWNlQ2hpbGQoXG4gICAgICAgICAgICAgIG9sZEZpYmVyLFxuICAgICAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZCxcbiAgICAgICAgICAgICAgbmV3SWR4XG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIG51bGwgPT09IHByZXZpb3VzTmV3RmliZXJcbiAgICAgICAgICAgICAgPyAocmVzdWx0aW5nRmlyc3RDaGlsZCA9IG9sZEZpYmVyKVxuICAgICAgICAgICAgICA6IChwcmV2aW91c05ld0ZpYmVyLnNpYmxpbmcgPSBvbGRGaWJlciksXG4gICAgICAgICAgICAocHJldmlvdXNOZXdGaWJlciA9IG9sZEZpYmVyKSk7XG4gICAgICBpc0h5ZHJhdGluZyAmJiBwdXNoVHJlZUZvcmsocmV0dXJuRmliZXIsIG5ld0lkeCk7XG4gICAgICByZXR1cm4gcmVzdWx0aW5nRmlyc3RDaGlsZDtcbiAgICB9XG4gICAgZm9yIChcbiAgICAgIG9sZEZpYmVyID0gbWFwUmVtYWluaW5nQ2hpbGRyZW4ob2xkRmliZXIpO1xuICAgICAgbmV3SWR4IDwgbmV3Q2hpbGRyZW4ubGVuZ3RoO1xuICAgICAgbmV3SWR4KytcbiAgICApXG4gICAgICAobmV4dE9sZEZpYmVyID0gdXBkYXRlRnJvbU1hcChcbiAgICAgICAgb2xkRmliZXIsXG4gICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICBuZXdJZHgsXG4gICAgICAgIG5ld0NoaWxkcmVuW25ld0lkeF0sXG4gICAgICAgIGxhbmVzXG4gICAgICApKSxcbiAgICAgICAgbnVsbCAhPT0gbmV4dE9sZEZpYmVyICYmXG4gICAgICAgICAgKHNob3VsZFRyYWNrU2lkZUVmZmVjdHMgJiZcbiAgICAgICAgICAgIG51bGwgIT09IG5leHRPbGRGaWJlci5hbHRlcm5hdGUgJiZcbiAgICAgICAgICAgIG9sZEZpYmVyLmRlbGV0ZShcbiAgICAgICAgICAgICAgbnVsbCA9PT0gbmV4dE9sZEZpYmVyLmtleSA/IG5ld0lkeCA6IG5leHRPbGRGaWJlci5rZXlcbiAgICAgICAgICAgICksXG4gICAgICAgICAgKGN1cnJlbnRGaXJzdENoaWxkID0gcGxhY2VDaGlsZChcbiAgICAgICAgICAgIG5leHRPbGRGaWJlcixcbiAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICAgICAgbmV3SWR4XG4gICAgICAgICAgKSksXG4gICAgICAgICAgbnVsbCA9PT0gcHJldmlvdXNOZXdGaWJlclxuICAgICAgICAgICAgPyAocmVzdWx0aW5nRmlyc3RDaGlsZCA9IG5leHRPbGRGaWJlcilcbiAgICAgICAgICAgIDogKHByZXZpb3VzTmV3RmliZXIuc2libGluZyA9IG5leHRPbGRGaWJlciksXG4gICAgICAgICAgKHByZXZpb3VzTmV3RmliZXIgPSBuZXh0T2xkRmliZXIpKTtcbiAgICBzaG91bGRUcmFja1NpZGVFZmZlY3RzICYmXG4gICAgICBvbGRGaWJlci5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICByZXR1cm4gZGVsZXRlQ2hpbGQocmV0dXJuRmliZXIsIGNoaWxkKTtcbiAgICAgIH0pO1xuICAgIGlzSHlkcmF0aW5nICYmIHB1c2hUcmVlRm9yayhyZXR1cm5GaWJlciwgbmV3SWR4KTtcbiAgICByZXR1cm4gcmVzdWx0aW5nRmlyc3RDaGlsZDtcbiAgfVxuICBmdW5jdGlvbiByZWNvbmNpbGVDaGlsZHJlbkl0ZXJhdG9yKFxuICAgIHJldHVybkZpYmVyLFxuICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgIG5ld0NoaWxkcmVuLFxuICAgIGxhbmVzXG4gICkge1xuICAgIGlmIChudWxsID09IG5ld0NoaWxkcmVuKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE1MSkpO1xuICAgIGZvciAoXG4gICAgICB2YXIgcmVzdWx0aW5nRmlyc3RDaGlsZCA9IG51bGwsXG4gICAgICAgIHByZXZpb3VzTmV3RmliZXIgPSBudWxsLFxuICAgICAgICBvbGRGaWJlciA9IGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICBuZXdJZHggPSAoY3VycmVudEZpcnN0Q2hpbGQgPSAwKSxcbiAgICAgICAgbmV4dE9sZEZpYmVyID0gbnVsbCxcbiAgICAgICAgc3RlcCA9IG5ld0NoaWxkcmVuLm5leHQoKTtcbiAgICAgIG51bGwgIT09IG9sZEZpYmVyICYmICFzdGVwLmRvbmU7XG4gICAgICBuZXdJZHgrKywgc3RlcCA9IG5ld0NoaWxkcmVuLm5leHQoKVxuICAgICkge1xuICAgICAgb2xkRmliZXIuaW5kZXggPiBuZXdJZHhcbiAgICAgICAgPyAoKG5leHRPbGRGaWJlciA9IG9sZEZpYmVyKSwgKG9sZEZpYmVyID0gbnVsbCkpXG4gICAgICAgIDogKG5leHRPbGRGaWJlciA9IG9sZEZpYmVyLnNpYmxpbmcpO1xuICAgICAgdmFyIG5ld0ZpYmVyID0gdXBkYXRlU2xvdChyZXR1cm5GaWJlciwgb2xkRmliZXIsIHN0ZXAudmFsdWUsIGxhbmVzKTtcbiAgICAgIGlmIChudWxsID09PSBuZXdGaWJlcikge1xuICAgICAgICBudWxsID09PSBvbGRGaWJlciAmJiAob2xkRmliZXIgPSBuZXh0T2xkRmliZXIpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIHNob3VsZFRyYWNrU2lkZUVmZmVjdHMgJiZcbiAgICAgICAgb2xkRmliZXIgJiZcbiAgICAgICAgbnVsbCA9PT0gbmV3RmliZXIuYWx0ZXJuYXRlICYmXG4gICAgICAgIGRlbGV0ZUNoaWxkKHJldHVybkZpYmVyLCBvbGRGaWJlcik7XG4gICAgICBjdXJyZW50Rmlyc3RDaGlsZCA9IHBsYWNlQ2hpbGQobmV3RmliZXIsIGN1cnJlbnRGaXJzdENoaWxkLCBuZXdJZHgpO1xuICAgICAgbnVsbCA9PT0gcHJldmlvdXNOZXdGaWJlclxuICAgICAgICA/IChyZXN1bHRpbmdGaXJzdENoaWxkID0gbmV3RmliZXIpXG4gICAgICAgIDogKHByZXZpb3VzTmV3RmliZXIuc2libGluZyA9IG5ld0ZpYmVyKTtcbiAgICAgIHByZXZpb3VzTmV3RmliZXIgPSBuZXdGaWJlcjtcbiAgICAgIG9sZEZpYmVyID0gbmV4dE9sZEZpYmVyO1xuICAgIH1cbiAgICBpZiAoc3RlcC5kb25lKVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgZGVsZXRlUmVtYWluaW5nQ2hpbGRyZW4ocmV0dXJuRmliZXIsIG9sZEZpYmVyKSxcbiAgICAgICAgaXNIeWRyYXRpbmcgJiYgcHVzaFRyZWVGb3JrKHJldHVybkZpYmVyLCBuZXdJZHgpLFxuICAgICAgICByZXN1bHRpbmdGaXJzdENoaWxkXG4gICAgICApO1xuICAgIGlmIChudWxsID09PSBvbGRGaWJlcikge1xuICAgICAgZm9yICg7ICFzdGVwLmRvbmU7IG5ld0lkeCsrLCBzdGVwID0gbmV3Q2hpbGRyZW4ubmV4dCgpKVxuICAgICAgICAoc3RlcCA9IGNyZWF0ZUNoaWxkKHJldHVybkZpYmVyLCBzdGVwLnZhbHVlLCBsYW5lcykpLFxuICAgICAgICAgIG51bGwgIT09IHN0ZXAgJiZcbiAgICAgICAgICAgICgoY3VycmVudEZpcnN0Q2hpbGQgPSBwbGFjZUNoaWxkKHN0ZXAsIGN1cnJlbnRGaXJzdENoaWxkLCBuZXdJZHgpKSxcbiAgICAgICAgICAgIG51bGwgPT09IHByZXZpb3VzTmV3RmliZXJcbiAgICAgICAgICAgICAgPyAocmVzdWx0aW5nRmlyc3RDaGlsZCA9IHN0ZXApXG4gICAgICAgICAgICAgIDogKHByZXZpb3VzTmV3RmliZXIuc2libGluZyA9IHN0ZXApLFxuICAgICAgICAgICAgKHByZXZpb3VzTmV3RmliZXIgPSBzdGVwKSk7XG4gICAgICBpc0h5ZHJhdGluZyAmJiBwdXNoVHJlZUZvcmsocmV0dXJuRmliZXIsIG5ld0lkeCk7XG4gICAgICByZXR1cm4gcmVzdWx0aW5nRmlyc3RDaGlsZDtcbiAgICB9XG4gICAgZm9yIChcbiAgICAgIG9sZEZpYmVyID0gbWFwUmVtYWluaW5nQ2hpbGRyZW4ob2xkRmliZXIpO1xuICAgICAgIXN0ZXAuZG9uZTtcbiAgICAgIG5ld0lkeCsrLCBzdGVwID0gbmV3Q2hpbGRyZW4ubmV4dCgpXG4gICAgKVxuICAgICAgKHN0ZXAgPSB1cGRhdGVGcm9tTWFwKG9sZEZpYmVyLCByZXR1cm5GaWJlciwgbmV3SWR4LCBzdGVwLnZhbHVlLCBsYW5lcykpLFxuICAgICAgICBudWxsICE9PSBzdGVwICYmXG4gICAgICAgICAgKHNob3VsZFRyYWNrU2lkZUVmZmVjdHMgJiZcbiAgICAgICAgICAgIG51bGwgIT09IHN0ZXAuYWx0ZXJuYXRlICYmXG4gICAgICAgICAgICBvbGRGaWJlci5kZWxldGUobnVsbCA9PT0gc3RlcC5rZXkgPyBuZXdJZHggOiBzdGVwLmtleSksXG4gICAgICAgICAgKGN1cnJlbnRGaXJzdENoaWxkID0gcGxhY2VDaGlsZChzdGVwLCBjdXJyZW50Rmlyc3RDaGlsZCwgbmV3SWR4KSksXG4gICAgICAgICAgbnVsbCA9PT0gcHJldmlvdXNOZXdGaWJlclxuICAgICAgICAgICAgPyAocmVzdWx0aW5nRmlyc3RDaGlsZCA9IHN0ZXApXG4gICAgICAgICAgICA6IChwcmV2aW91c05ld0ZpYmVyLnNpYmxpbmcgPSBzdGVwKSxcbiAgICAgICAgICAocHJldmlvdXNOZXdGaWJlciA9IHN0ZXApKTtcbiAgICBzaG91bGRUcmFja1NpZGVFZmZlY3RzICYmXG4gICAgICBvbGRGaWJlci5mb3JFYWNoKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgICByZXR1cm4gZGVsZXRlQ2hpbGQocmV0dXJuRmliZXIsIGNoaWxkKTtcbiAgICAgIH0pO1xuICAgIGlzSHlkcmF0aW5nICYmIHB1c2hUcmVlRm9yayhyZXR1cm5GaWJlciwgbmV3SWR4KTtcbiAgICByZXR1cm4gcmVzdWx0aW5nRmlyc3RDaGlsZDtcbiAgfVxuICBmdW5jdGlvbiByZWNvbmNpbGVDaGlsZEZpYmVyc0ltcGwoXG4gICAgcmV0dXJuRmliZXIsXG4gICAgY3VycmVudEZpcnN0Q2hpbGQsXG4gICAgbmV3Q2hpbGQsXG4gICAgbGFuZXNcbiAgKSB7XG4gICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIG5ld0NoaWxkICYmXG4gICAgICBudWxsICE9PSBuZXdDaGlsZCAmJlxuICAgICAgbmV3Q2hpbGQudHlwZSA9PT0gUkVBQ1RfRlJBR01FTlRfVFlQRSAmJlxuICAgICAgbnVsbCA9PT0gbmV3Q2hpbGQua2V5ICYmXG4gICAgICAobmV3Q2hpbGQgPSBuZXdDaGlsZC5wcm9wcy5jaGlsZHJlbik7XG4gICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBuZXdDaGlsZCAmJiBudWxsICE9PSBuZXdDaGlsZCkge1xuICAgICAgc3dpdGNoIChuZXdDaGlsZC4kJHR5cGVvZikge1xuICAgICAgICBjYXNlIFJFQUNUX0VMRU1FTlRfVFlQRTpcbiAgICAgICAgICBhOiB7XG4gICAgICAgICAgICBmb3IgKHZhciBrZXkgPSBuZXdDaGlsZC5rZXk7IG51bGwgIT09IGN1cnJlbnRGaXJzdENoaWxkOyApIHtcbiAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGaXJzdENoaWxkLmtleSA9PT0ga2V5KSB7XG4gICAgICAgICAgICAgICAga2V5ID0gbmV3Q2hpbGQudHlwZTtcbiAgICAgICAgICAgICAgICBpZiAoa2V5ID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFKSB7XG4gICAgICAgICAgICAgICAgICBpZiAoNyA9PT0gY3VycmVudEZpcnN0Q2hpbGQudGFnKSB7XG4gICAgICAgICAgICAgICAgICAgIGRlbGV0ZVJlbWFpbmluZ0NoaWxkcmVuKFxuICAgICAgICAgICAgICAgICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLnNpYmxpbmdcbiAgICAgICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICAgICAgbGFuZXMgPSB1c2VGaWJlcihcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZCxcbiAgICAgICAgICAgICAgICAgICAgICBuZXdDaGlsZC5wcm9wcy5jaGlsZHJlblxuICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBsYW5lcy5yZXR1cm4gPSByZXR1cm5GaWJlcjtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRmliZXIgPSBsYW5lcztcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgICAgICAgY3VycmVudEZpcnN0Q2hpbGQuZWxlbWVudFR5cGUgPT09IGtleSB8fFxuICAgICAgICAgICAgICAgICAgKFwib2JqZWN0XCIgPT09IHR5cGVvZiBrZXkgJiZcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0ga2V5ICYmXG4gICAgICAgICAgICAgICAgICAgIGtleS4kJHR5cGVvZiA9PT0gUkVBQ1RfTEFaWV9UWVBFICYmXG4gICAgICAgICAgICAgICAgICAgIHJlc29sdmVMYXp5KGtleSkgPT09IGN1cnJlbnRGaXJzdENoaWxkLnR5cGUpXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGVSZW1haW5pbmdDaGlsZHJlbihcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLnNpYmxpbmdcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsYW5lcyA9IHVzZUZpYmVyKGN1cnJlbnRGaXJzdENoaWxkLCBuZXdDaGlsZC5wcm9wcyk7XG4gICAgICAgICAgICAgICAgICBjb2VyY2VSZWYobGFuZXMsIG5ld0NoaWxkKTtcbiAgICAgICAgICAgICAgICAgIGxhbmVzLnJldHVybiA9IHJldHVybkZpYmVyO1xuICAgICAgICAgICAgICAgICAgcmV0dXJuRmliZXIgPSBsYW5lcztcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGRlbGV0ZVJlbWFpbmluZ0NoaWxkcmVuKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIH0gZWxzZSBkZWxldGVDaGlsZChyZXR1cm5GaWJlciwgY3VycmVudEZpcnN0Q2hpbGQpO1xuICAgICAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZCA9IGN1cnJlbnRGaXJzdENoaWxkLnNpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBuZXdDaGlsZC50eXBlID09PSBSRUFDVF9GUkFHTUVOVF9UWVBFXG4gICAgICAgICAgICAgID8gKChsYW5lcyA9IGNyZWF0ZUZpYmVyRnJvbUZyYWdtZW50KFxuICAgICAgICAgICAgICAgICAgbmV3Q2hpbGQucHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgICAgICAgICByZXR1cm5GaWJlci5tb2RlLFxuICAgICAgICAgICAgICAgICAgbGFuZXMsXG4gICAgICAgICAgICAgICAgICBuZXdDaGlsZC5rZXlcbiAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgICAobGFuZXMucmV0dXJuID0gcmV0dXJuRmliZXIpLFxuICAgICAgICAgICAgICAgIChyZXR1cm5GaWJlciA9IGxhbmVzKSlcbiAgICAgICAgICAgICAgOiAoKGxhbmVzID0gY3JlYXRlRmliZXJGcm9tVHlwZUFuZFByb3BzKFxuICAgICAgICAgICAgICAgICAgbmV3Q2hpbGQudHlwZSxcbiAgICAgICAgICAgICAgICAgIG5ld0NoaWxkLmtleSxcbiAgICAgICAgICAgICAgICAgIG5ld0NoaWxkLnByb3BzLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIHJldHVybkZpYmVyLm1vZGUsXG4gICAgICAgICAgICAgICAgICBsYW5lc1xuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIGNvZXJjZVJlZihsYW5lcywgbmV3Q2hpbGQpLFxuICAgICAgICAgICAgICAgIChsYW5lcy5yZXR1cm4gPSByZXR1cm5GaWJlciksXG4gICAgICAgICAgICAgICAgKHJldHVybkZpYmVyID0gbGFuZXMpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgcmV0dXJuIHBsYWNlU2luZ2xlQ2hpbGQocmV0dXJuRmliZXIpO1xuICAgICAgICBjYXNlIFJFQUNUX1BPUlRBTF9UWVBFOlxuICAgICAgICAgIGE6IHtcbiAgICAgICAgICAgIGZvciAoa2V5ID0gbmV3Q2hpbGQua2V5OyBudWxsICE9PSBjdXJyZW50Rmlyc3RDaGlsZDsgKSB7XG4gICAgICAgICAgICAgIGlmIChjdXJyZW50Rmlyc3RDaGlsZC5rZXkgPT09IGtleSlcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICA0ID09PSBjdXJyZW50Rmlyc3RDaGlsZC50YWcgJiZcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLnN0YXRlTm9kZS5jb250YWluZXJJbmZvID09PVxuICAgICAgICAgICAgICAgICAgICBuZXdDaGlsZC5jb250YWluZXJJbmZvICYmXG4gICAgICAgICAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZC5zdGF0ZU5vZGUuaW1wbGVtZW50YXRpb24gPT09XG4gICAgICAgICAgICAgICAgICAgIG5ld0NoaWxkLmltcGxlbWVudGF0aW9uXG4gICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGVSZW1haW5pbmdDaGlsZHJlbihcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLnNpYmxpbmdcbiAgICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgICBsYW5lcyA9IHVzZUZpYmVyKGN1cnJlbnRGaXJzdENoaWxkLCBuZXdDaGlsZC5jaGlsZHJlbiB8fCBbXSk7XG4gICAgICAgICAgICAgICAgICBsYW5lcy5yZXR1cm4gPSByZXR1cm5GaWJlcjtcbiAgICAgICAgICAgICAgICAgIHJldHVybkZpYmVyID0gbGFuZXM7XG4gICAgICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBkZWxldGVSZW1haW5pbmdDaGlsZHJlbihyZXR1cm5GaWJlciwgY3VycmVudEZpcnN0Q2hpbGQpO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBlbHNlIGRlbGV0ZUNoaWxkKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkID0gY3VycmVudEZpcnN0Q2hpbGQuc2libGluZztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhbmVzID0gY3JlYXRlRmliZXJGcm9tUG9ydGFsKG5ld0NoaWxkLCByZXR1cm5GaWJlci5tb2RlLCBsYW5lcyk7XG4gICAgICAgICAgICBsYW5lcy5yZXR1cm4gPSByZXR1cm5GaWJlcjtcbiAgICAgICAgICAgIHJldHVybkZpYmVyID0gbGFuZXM7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJldHVybiBwbGFjZVNpbmdsZUNoaWxkKHJldHVybkZpYmVyKTtcbiAgICAgICAgY2FzZSBSRUFDVF9MQVpZX1RZUEU6XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIChrZXkgPSBuZXdDaGlsZC5faW5pdCksXG4gICAgICAgICAgICAobmV3Q2hpbGQgPSBrZXkobmV3Q2hpbGQuX3BheWxvYWQpKSxcbiAgICAgICAgICAgIHJlY29uY2lsZUNoaWxkRmliZXJzSW1wbChcbiAgICAgICAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICAgICAgICBuZXdDaGlsZCxcbiAgICAgICAgICAgICAgbGFuZXNcbiAgICAgICAgICAgIClcbiAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgaWYgKGlzQXJyYXlJbXBsKG5ld0NoaWxkKSlcbiAgICAgICAgcmV0dXJuIHJlY29uY2lsZUNoaWxkcmVuQXJyYXkoXG4gICAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgICAgY3VycmVudEZpcnN0Q2hpbGQsXG4gICAgICAgICAgbmV3Q2hpbGQsXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIGlmIChnZXRJdGVyYXRvckZuKG5ld0NoaWxkKSkge1xuICAgICAgICBrZXkgPSBnZXRJdGVyYXRvckZuKG5ld0NoaWxkKTtcbiAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGtleSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNTApKTtcbiAgICAgICAgbmV3Q2hpbGQgPSBrZXkuY2FsbChuZXdDaGlsZCk7XG4gICAgICAgIHJldHVybiByZWNvbmNpbGVDaGlsZHJlbkl0ZXJhdG9yKFxuICAgICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICAgIG5ld0NoaWxkLFxuICAgICAgICAgIGxhbmVzXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgbmV3Q2hpbGQudGhlbilcbiAgICAgICAgcmV0dXJuIHJlY29uY2lsZUNoaWxkRmliZXJzSW1wbChcbiAgICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgICBjdXJyZW50Rmlyc3RDaGlsZCxcbiAgICAgICAgICB1bndyYXBUaGVuYWJsZShuZXdDaGlsZCksXG4gICAgICAgICAgbGFuZXNcbiAgICAgICAgKTtcbiAgICAgIGlmIChuZXdDaGlsZC4kJHR5cGVvZiA9PT0gUkVBQ1RfQ09OVEVYVF9UWVBFKVxuICAgICAgICByZXR1cm4gcmVjb25jaWxlQ2hpbGRGaWJlcnNJbXBsKFxuICAgICAgICAgIHJldHVybkZpYmVyLFxuICAgICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICAgIHJlYWRDb250ZXh0RHVyaW5nUmVjb25jaWxpYXRpb24ocmV0dXJuRmliZXIsIG5ld0NoaWxkKSxcbiAgICAgICAgICBsYW5lc1xuICAgICAgICApO1xuICAgICAgdGhyb3dPbkludmFsaWRPYmplY3RUeXBlKHJldHVybkZpYmVyLCBuZXdDaGlsZCk7XG4gICAgfVxuICAgIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG5ld0NoaWxkICYmIFwiXCIgIT09IG5ld0NoaWxkKSB8fFxuICAgICAgXCJudW1iZXJcIiA9PT0gdHlwZW9mIG5ld0NoaWxkIHx8XG4gICAgICBcImJpZ2ludFwiID09PSB0eXBlb2YgbmV3Q2hpbGRcbiAgICAgID8gKChuZXdDaGlsZCA9IFwiXCIgKyBuZXdDaGlsZCksXG4gICAgICAgIG51bGwgIT09IGN1cnJlbnRGaXJzdENoaWxkICYmIDYgPT09IGN1cnJlbnRGaXJzdENoaWxkLnRhZ1xuICAgICAgICAgID8gKGRlbGV0ZVJlbWFpbmluZ0NoaWxkcmVuKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZC5zaWJsaW5nKSxcbiAgICAgICAgICAgIChsYW5lcyA9IHVzZUZpYmVyKGN1cnJlbnRGaXJzdENoaWxkLCBuZXdDaGlsZCkpLFxuICAgICAgICAgICAgKGxhbmVzLnJldHVybiA9IHJldHVybkZpYmVyKSxcbiAgICAgICAgICAgIChyZXR1cm5GaWJlciA9IGxhbmVzKSlcbiAgICAgICAgICA6IChkZWxldGVSZW1haW5pbmdDaGlsZHJlbihyZXR1cm5GaWJlciwgY3VycmVudEZpcnN0Q2hpbGQpLFxuICAgICAgICAgICAgKGxhbmVzID0gY3JlYXRlRmliZXJGcm9tVGV4dChuZXdDaGlsZCwgcmV0dXJuRmliZXIubW9kZSwgbGFuZXMpKSxcbiAgICAgICAgICAgIChsYW5lcy5yZXR1cm4gPSByZXR1cm5GaWJlciksXG4gICAgICAgICAgICAocmV0dXJuRmliZXIgPSBsYW5lcykpLFxuICAgICAgICBwbGFjZVNpbmdsZUNoaWxkKHJldHVybkZpYmVyKSlcbiAgICAgIDogZGVsZXRlUmVtYWluaW5nQ2hpbGRyZW4ocmV0dXJuRmliZXIsIGN1cnJlbnRGaXJzdENoaWxkKTtcbiAgfVxuICByZXR1cm4gZnVuY3Rpb24gKHJldHVybkZpYmVyLCBjdXJyZW50Rmlyc3RDaGlsZCwgbmV3Q2hpbGQsIGxhbmVzKSB7XG4gICAgdHJ5IHtcbiAgICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyJDEgPSAwO1xuICAgICAgdmFyIGZpcnN0Q2hpbGRGaWJlciA9IHJlY29uY2lsZUNoaWxkRmliZXJzSW1wbChcbiAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgIGN1cnJlbnRGaXJzdENoaWxkLFxuICAgICAgICBuZXdDaGlsZCxcbiAgICAgICAgbGFuZXNcbiAgICAgICk7XG4gICAgICB0aGVuYWJsZVN0YXRlJDEgPSBudWxsO1xuICAgICAgcmV0dXJuIGZpcnN0Q2hpbGRGaWJlcjtcbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICBpZiAoeCA9PT0gU3VzcGVuc2VFeGNlcHRpb24pIHRocm93IHg7XG4gICAgICB2YXIgZmliZXIgPSBjcmVhdGVGaWJlckltcGxDbGFzcygyOSwgeCwgbnVsbCwgcmV0dXJuRmliZXIubW9kZSk7XG4gICAgICBmaWJlci5sYW5lcyA9IGxhbmVzO1xuICAgICAgZmliZXIucmV0dXJuID0gcmV0dXJuRmliZXI7XG4gICAgICByZXR1cm4gZmliZXI7XG4gICAgfSBmaW5hbGx5IHtcbiAgICB9XG4gIH07XG59XG52YXIgcmVjb25jaWxlQ2hpbGRGaWJlcnMgPSBjcmVhdGVDaGlsZFJlY29uY2lsZXIoITApLFxuICBtb3VudENoaWxkRmliZXJzID0gY3JlYXRlQ2hpbGRSZWNvbmNpbGVyKCExKSxcbiAgY3VycmVudFRyZWVIaWRkZW5TdGFja0N1cnNvciA9IGNyZWF0ZUN1cnNvcihudWxsKSxcbiAgcHJldkVudGFuZ2xlZFJlbmRlckxhbmVzQ3Vyc29yID0gY3JlYXRlQ3Vyc29yKDApO1xuZnVuY3Rpb24gcHVzaEhpZGRlbkNvbnRleHQoZmliZXIsIGNvbnRleHQpIHtcbiAgZmliZXIgPSBlbnRhbmdsZWRSZW5kZXJMYW5lcztcbiAgcHVzaChwcmV2RW50YW5nbGVkUmVuZGVyTGFuZXNDdXJzb3IsIGZpYmVyKTtcbiAgcHVzaChjdXJyZW50VHJlZUhpZGRlblN0YWNrQ3Vyc29yLCBjb250ZXh0KTtcbiAgZW50YW5nbGVkUmVuZGVyTGFuZXMgPSBmaWJlciB8IGNvbnRleHQuYmFzZUxhbmVzO1xufVxuZnVuY3Rpb24gcmV1c2VIaWRkZW5Db250ZXh0T25TdGFjaygpIHtcbiAgcHVzaChwcmV2RW50YW5nbGVkUmVuZGVyTGFuZXNDdXJzb3IsIGVudGFuZ2xlZFJlbmRlckxhbmVzKTtcbiAgcHVzaChjdXJyZW50VHJlZUhpZGRlblN0YWNrQ3Vyc29yLCBjdXJyZW50VHJlZUhpZGRlblN0YWNrQ3Vyc29yLmN1cnJlbnQpO1xufVxuZnVuY3Rpb24gcG9wSGlkZGVuQ29udGV4dCgpIHtcbiAgZW50YW5nbGVkUmVuZGVyTGFuZXMgPSBwcmV2RW50YW5nbGVkUmVuZGVyTGFuZXNDdXJzb3IuY3VycmVudDtcbiAgcG9wKGN1cnJlbnRUcmVlSGlkZGVuU3RhY2tDdXJzb3IpO1xuICBwb3AocHJldkVudGFuZ2xlZFJlbmRlckxhbmVzQ3Vyc29yKTtcbn1cbnZhciBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvciA9IGNyZWF0ZUN1cnNvcihudWxsKSxcbiAgc2hlbGxCb3VuZGFyeSA9IG51bGw7XG5mdW5jdGlvbiBwdXNoUHJpbWFyeVRyZWVTdXNwZW5zZUhhbmRsZXIoaGFuZGxlcikge1xuICB2YXIgY3VycmVudCA9IGhhbmRsZXIuYWx0ZXJuYXRlO1xuICBwdXNoKHN1c3BlbnNlU3RhY2tDdXJzb3IsIHN1c3BlbnNlU3RhY2tDdXJzb3IuY3VycmVudCAmIDEpO1xuICBwdXNoKHN1c3BlbnNlSGFuZGxlclN0YWNrQ3Vyc29yLCBoYW5kbGVyKTtcbiAgbnVsbCA9PT0gc2hlbGxCb3VuZGFyeSAmJlxuICAgIChudWxsID09PSBjdXJyZW50IHx8IG51bGwgIT09IGN1cnJlbnRUcmVlSGlkZGVuU3RhY2tDdXJzb3IuY3VycmVudFxuICAgICAgPyAoc2hlbGxCb3VuZGFyeSA9IGhhbmRsZXIpXG4gICAgICA6IG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSAmJiAoc2hlbGxCb3VuZGFyeSA9IGhhbmRsZXIpKTtcbn1cbmZ1bmN0aW9uIHB1c2hPZmZzY3JlZW5TdXNwZW5zZUhhbmRsZXIoZmliZXIpIHtcbiAgaWYgKDIyID09PSBmaWJlci50YWcpIHtcbiAgICBpZiAoXG4gICAgICAocHVzaChzdXNwZW5zZVN0YWNrQ3Vyc29yLCBzdXNwZW5zZVN0YWNrQ3Vyc29yLmN1cnJlbnQpLFxuICAgICAgcHVzaChzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvciwgZmliZXIpLFxuICAgICAgbnVsbCA9PT0gc2hlbGxCb3VuZGFyeSlcbiAgICApIHtcbiAgICAgIHZhciBjdXJyZW50ID0gZmliZXIuYWx0ZXJuYXRlO1xuICAgICAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgICBudWxsICE9PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgKHNoZWxsQm91bmRhcnkgPSBmaWJlcik7XG4gICAgfVxuICB9IGVsc2UgcmV1c2VTdXNwZW5zZUhhbmRsZXJPblN0YWNrKGZpYmVyKTtcbn1cbmZ1bmN0aW9uIHJldXNlU3VzcGVuc2VIYW5kbGVyT25TdGFjaygpIHtcbiAgcHVzaChzdXNwZW5zZVN0YWNrQ3Vyc29yLCBzdXNwZW5zZVN0YWNrQ3Vyc29yLmN1cnJlbnQpO1xuICBwdXNoKHN1c3BlbnNlSGFuZGxlclN0YWNrQ3Vyc29yLCBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvci5jdXJyZW50KTtcbn1cbmZ1bmN0aW9uIHBvcFN1c3BlbnNlSGFuZGxlcihmaWJlcikge1xuICBwb3Aoc3VzcGVuc2VIYW5kbGVyU3RhY2tDdXJzb3IpO1xuICBzaGVsbEJvdW5kYXJ5ID09PSBmaWJlciAmJiAoc2hlbGxCb3VuZGFyeSA9IG51bGwpO1xuICBwb3Aoc3VzcGVuc2VTdGFja0N1cnNvcik7XG59XG52YXIgc3VzcGVuc2VTdGFja0N1cnNvciA9IGNyZWF0ZUN1cnNvcigwKTtcbmZ1bmN0aW9uIGZpbmRGaXJzdFN1c3BlbmRlZChyb3cpIHtcbiAgZm9yICh2YXIgbm9kZSA9IHJvdzsgbnVsbCAhPT0gbm9kZTsgKSB7XG4gICAgaWYgKDEzID09PSBub2RlLnRhZykge1xuICAgICAgdmFyIHN0YXRlID0gbm9kZS5tZW1vaXplZFN0YXRlO1xuICAgICAgaWYgKFxuICAgICAgICBudWxsICE9PSBzdGF0ZSAmJlxuICAgICAgICAoKHN0YXRlID0gc3RhdGUuZGVoeWRyYXRlZCksXG4gICAgICAgIG51bGwgPT09IHN0YXRlIHx8IFwiJD9cIiA9PT0gc3RhdGUuZGF0YSB8fCBcIiQhXCIgPT09IHN0YXRlLmRhdGEpXG4gICAgICApXG4gICAgICAgIHJldHVybiBub2RlO1xuICAgIH0gZWxzZSBpZiAoMTkgPT09IG5vZGUudGFnICYmIHZvaWQgMCAhPT0gbm9kZS5tZW1vaXplZFByb3BzLnJldmVhbE9yZGVyKSB7XG4gICAgICBpZiAoMCAhPT0gKG5vZGUuZmxhZ3MgJiAxMjgpKSByZXR1cm4gbm9kZTtcbiAgICB9IGVsc2UgaWYgKG51bGwgIT09IG5vZGUuY2hpbGQpIHtcbiAgICAgIG5vZGUuY2hpbGQucmV0dXJuID0gbm9kZTtcbiAgICAgIG5vZGUgPSBub2RlLmNoaWxkO1xuICAgICAgY29udGludWU7XG4gICAgfVxuICAgIGlmIChub2RlID09PSByb3cpIGJyZWFrO1xuICAgIGZvciAoOyBudWxsID09PSBub2RlLnNpYmxpbmc7ICkge1xuICAgICAgaWYgKG51bGwgPT09IG5vZGUucmV0dXJuIHx8IG5vZGUucmV0dXJuID09PSByb3cpIHJldHVybiBudWxsO1xuICAgICAgbm9kZSA9IG5vZGUucmV0dXJuO1xuICAgIH1cbiAgICBub2RlLnNpYmxpbmcucmV0dXJuID0gbm9kZS5yZXR1cm47XG4gICAgbm9kZSA9IG5vZGUuc2libGluZztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cbnZhciBBYm9ydENvbnRyb2xsZXJMb2NhbCA9XG4gICAgXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIEFib3J0Q29udHJvbGxlclxuICAgICAgPyBBYm9ydENvbnRyb2xsZXJcbiAgICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHZhciBsaXN0ZW5lcnMgPSBbXSxcbiAgICAgICAgICAgIHNpZ25hbCA9ICh0aGlzLnNpZ25hbCA9IHtcbiAgICAgICAgICAgICAgYWJvcnRlZDogITEsXG4gICAgICAgICAgICAgIGFkZEV2ZW50TGlzdGVuZXI6IGZ1bmN0aW9uICh0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgICAgICAgICAgIGxpc3RlbmVycy5wdXNoKGxpc3RlbmVyKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgdGhpcy5hYm9ydCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIHNpZ25hbC5hYm9ydGVkID0gITA7XG4gICAgICAgICAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyKCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9O1xuICAgICAgICB9LFxuICBzY2hlZHVsZUNhbGxiYWNrJDIgPSBTY2hlZHVsZXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayxcbiAgTm9ybWFsUHJpb3JpdHkgPSBTY2hlZHVsZXIudW5zdGFibGVfTm9ybWFsUHJpb3JpdHksXG4gIENhY2hlQ29udGV4dCA9IHtcbiAgICAkJHR5cGVvZjogUkVBQ1RfQ09OVEVYVF9UWVBFLFxuICAgIENvbnN1bWVyOiBudWxsLFxuICAgIFByb3ZpZGVyOiBudWxsLFxuICAgIF9jdXJyZW50VmFsdWU6IG51bGwsXG4gICAgX2N1cnJlbnRWYWx1ZTI6IG51bGwsXG4gICAgX3RocmVhZENvdW50OiAwXG4gIH07XG5mdW5jdGlvbiBjcmVhdGVDYWNoZSgpIHtcbiAgcmV0dXJuIHtcbiAgICBjb250cm9sbGVyOiBuZXcgQWJvcnRDb250cm9sbGVyTG9jYWwoKSxcbiAgICBkYXRhOiBuZXcgTWFwKCksXG4gICAgcmVmQ291bnQ6IDBcbiAgfTtcbn1cbmZ1bmN0aW9uIHJlbGVhc2VDYWNoZShjYWNoZSkge1xuICBjYWNoZS5yZWZDb3VudC0tO1xuICAwID09PSBjYWNoZS5yZWZDb3VudCAmJlxuICAgIHNjaGVkdWxlQ2FsbGJhY2skMihOb3JtYWxQcmlvcml0eSwgZnVuY3Rpb24gKCkge1xuICAgICAgY2FjaGUuY29udHJvbGxlci5hYm9ydCgpO1xuICAgIH0pO1xufVxudmFyIGN1cnJlbnRFbnRhbmdsZWRMaXN0ZW5lcnMgPSBudWxsLFxuICBjdXJyZW50RW50YW5nbGVkUGVuZGluZ0NvdW50ID0gMCxcbiAgY3VycmVudEVudGFuZ2xlZExhbmUgPSAwLFxuICBjdXJyZW50RW50YW5nbGVkQWN0aW9uVGhlbmFibGUgPSBudWxsO1xuZnVuY3Rpb24gZW50YW5nbGVBc3luY0FjdGlvbih0cmFuc2l0aW9uLCB0aGVuYWJsZSkge1xuICBpZiAobnVsbCA9PT0gY3VycmVudEVudGFuZ2xlZExpc3RlbmVycykge1xuICAgIHZhciBlbnRhbmdsZWRMaXN0ZW5lcnMgPSAoY3VycmVudEVudGFuZ2xlZExpc3RlbmVycyA9IFtdKTtcbiAgICBjdXJyZW50RW50YW5nbGVkUGVuZGluZ0NvdW50ID0gMDtcbiAgICBjdXJyZW50RW50YW5nbGVkTGFuZSA9IHJlcXVlc3RUcmFuc2l0aW9uTGFuZSgpO1xuICAgIGN1cnJlbnRFbnRhbmdsZWRBY3Rpb25UaGVuYWJsZSA9IHtcbiAgICAgIHN0YXR1czogXCJwZW5kaW5nXCIsXG4gICAgICB2YWx1ZTogdm9pZCAwLFxuICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgZW50YW5nbGVkTGlzdGVuZXJzLnB1c2gocmVzb2x2ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuICBjdXJyZW50RW50YW5nbGVkUGVuZGluZ0NvdW50Kys7XG4gIHRoZW5hYmxlLnRoZW4ocGluZ0VuZ3RhbmdsZWRBY3Rpb25TY29wZSwgcGluZ0VuZ3RhbmdsZWRBY3Rpb25TY29wZSk7XG4gIHJldHVybiB0aGVuYWJsZTtcbn1cbmZ1bmN0aW9uIHBpbmdFbmd0YW5nbGVkQWN0aW9uU2NvcGUoKSB7XG4gIGlmIChcbiAgICAwID09PSAtLWN1cnJlbnRFbnRhbmdsZWRQZW5kaW5nQ291bnQgJiZcbiAgICBudWxsICE9PSBjdXJyZW50RW50YW5nbGVkTGlzdGVuZXJzXG4gICkge1xuICAgIG51bGwgIT09IGN1cnJlbnRFbnRhbmdsZWRBY3Rpb25UaGVuYWJsZSAmJlxuICAgICAgKGN1cnJlbnRFbnRhbmdsZWRBY3Rpb25UaGVuYWJsZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiKTtcbiAgICB2YXIgbGlzdGVuZXJzID0gY3VycmVudEVudGFuZ2xlZExpc3RlbmVycztcbiAgICBjdXJyZW50RW50YW5nbGVkTGlzdGVuZXJzID0gbnVsbDtcbiAgICBjdXJyZW50RW50YW5nbGVkTGFuZSA9IDA7XG4gICAgY3VycmVudEVudGFuZ2xlZEFjdGlvblRoZW5hYmxlID0gbnVsbDtcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykgKDAsIGxpc3RlbmVyc1tpXSkoKTtcbiAgfVxufVxuZnVuY3Rpb24gY2hhaW5UaGVuYWJsZVZhbHVlKHRoZW5hYmxlLCByZXN1bHQpIHtcbiAgdmFyIGxpc3RlbmVycyA9IFtdLFxuICAgIHRoZW5hYmxlV2l0aE92ZXJyaWRlID0ge1xuICAgICAgc3RhdHVzOiBcInBlbmRpbmdcIixcbiAgICAgIHZhbHVlOiBudWxsLFxuICAgICAgcmVhc29uOiBudWxsLFxuICAgICAgdGhlbjogZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAgICAgbGlzdGVuZXJzLnB1c2gocmVzb2x2ZSk7XG4gICAgICB9XG4gICAgfTtcbiAgdGhlbmFibGUudGhlbihcbiAgICBmdW5jdGlvbiAoKSB7XG4gICAgICB0aGVuYWJsZVdpdGhPdmVycmlkZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICAgICAgdGhlbmFibGVXaXRoT3ZlcnJpZGUudmFsdWUgPSByZXN1bHQ7XG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3RlbmVycy5sZW5ndGg7IGkrKykgKDAsIGxpc3RlbmVyc1tpXSkocmVzdWx0KTtcbiAgICB9LFxuICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgdGhlbmFibGVXaXRoT3ZlcnJpZGUuc3RhdHVzID0gXCJyZWplY3RlZFwiO1xuICAgICAgdGhlbmFibGVXaXRoT3ZlcnJpZGUucmVhc29uID0gZXJyb3I7XG4gICAgICBmb3IgKGVycm9yID0gMDsgZXJyb3IgPCBsaXN0ZW5lcnMubGVuZ3RoOyBlcnJvcisrKVxuICAgICAgICAoMCwgbGlzdGVuZXJzW2Vycm9yXSkodm9pZCAwKTtcbiAgICB9XG4gICk7XG4gIHJldHVybiB0aGVuYWJsZVdpdGhPdmVycmlkZTtcbn1cbnZhciBwcmV2T25TdGFydFRyYW5zaXRpb25GaW5pc2ggPSBSZWFjdFNoYXJlZEludGVybmFscy5TO1xuUmVhY3RTaGFyZWRJbnRlcm5hbHMuUyA9IGZ1bmN0aW9uICh0cmFuc2l0aW9uLCByZXR1cm5WYWx1ZSkge1xuICBcIm9iamVjdFwiID09PSB0eXBlb2YgcmV0dXJuVmFsdWUgJiZcbiAgICBudWxsICE9PSByZXR1cm5WYWx1ZSAmJlxuICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlLnRoZW4gJiZcbiAgICBlbnRhbmdsZUFzeW5jQWN0aW9uKHRyYW5zaXRpb24sIHJldHVyblZhbHVlKTtcbiAgbnVsbCAhPT0gcHJldk9uU3RhcnRUcmFuc2l0aW9uRmluaXNoICYmXG4gICAgcHJldk9uU3RhcnRUcmFuc2l0aW9uRmluaXNoKHRyYW5zaXRpb24sIHJldHVyblZhbHVlKTtcbn07XG52YXIgcmVzdW1lZENhY2hlID0gY3JlYXRlQ3Vyc29yKG51bGwpO1xuZnVuY3Rpb24gcGVla0NhY2hlRnJvbVBvb2woKSB7XG4gIHZhciBjYWNoZVJlc3VtZWRGcm9tUHJldmlvdXNSZW5kZXIgPSByZXN1bWVkQ2FjaGUuY3VycmVudDtcbiAgcmV0dXJuIG51bGwgIT09IGNhY2hlUmVzdW1lZEZyb21QcmV2aW91c1JlbmRlclxuICAgID8gY2FjaGVSZXN1bWVkRnJvbVByZXZpb3VzUmVuZGVyXG4gICAgOiB3b3JrSW5Qcm9ncmVzc1Jvb3QucG9vbGVkQ2FjaGU7XG59XG5mdW5jdGlvbiBwdXNoVHJhbnNpdGlvbihvZmZzY3JlZW5Xb3JrSW5Qcm9ncmVzcywgcHJldkNhY2hlUG9vbCkge1xuICBudWxsID09PSBwcmV2Q2FjaGVQb29sXG4gICAgPyBwdXNoKHJlc3VtZWRDYWNoZSwgcmVzdW1lZENhY2hlLmN1cnJlbnQpXG4gICAgOiBwdXNoKHJlc3VtZWRDYWNoZSwgcHJldkNhY2hlUG9vbC5wb29sKTtcbn1cbmZ1bmN0aW9uIGdldFN1c3BlbmRlZENhY2hlKCkge1xuICB2YXIgY2FjaGVGcm9tUG9vbCA9IHBlZWtDYWNoZUZyb21Qb29sKCk7XG4gIHJldHVybiBudWxsID09PSBjYWNoZUZyb21Qb29sXG4gICAgPyBudWxsXG4gICAgOiB7IHBhcmVudDogQ2FjaGVDb250ZXh0Ll9jdXJyZW50VmFsdWUsIHBvb2w6IGNhY2hlRnJvbVBvb2wgfTtcbn1cbnZhciByZW5kZXJMYW5lcyA9IDAsXG4gIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgPSBudWxsLFxuICBjdXJyZW50SG9vayA9IG51bGwsXG4gIHdvcmtJblByb2dyZXNzSG9vayA9IG51bGwsXG4gIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPSAhMSxcbiAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZUR1cmluZ1RoaXNQYXNzID0gITEsXG4gIHNob3VsZERvdWJsZUludm9rZVVzZXJGbnNJbkhvb2tzREVWID0gITEsXG4gIGxvY2FsSWRDb3VudGVyID0gMCxcbiAgdGhlbmFibGVJbmRleENvdW50ZXIgPSAwLFxuICB0aGVuYWJsZVN0YXRlID0gbnVsbCxcbiAgZ2xvYmFsQ2xpZW50SWRDb3VudGVyID0gMDtcbmZ1bmN0aW9uIHRocm93SW52YWxpZEhvb2tFcnJvcigpIHtcbiAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMjEpKTtcbn1cbmZ1bmN0aW9uIGFyZUhvb2tJbnB1dHNFcXVhbChuZXh0RGVwcywgcHJldkRlcHMpIHtcbiAgaWYgKG51bGwgPT09IHByZXZEZXBzKSByZXR1cm4gITE7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcHJldkRlcHMubGVuZ3RoICYmIGkgPCBuZXh0RGVwcy5sZW5ndGg7IGkrKylcbiAgICBpZiAoIW9iamVjdElzKG5leHREZXBzW2ldLCBwcmV2RGVwc1tpXSkpIHJldHVybiAhMTtcbiAgcmV0dXJuICEwO1xufVxuZnVuY3Rpb24gcmVuZGVyV2l0aEhvb2tzKFxuICBjdXJyZW50LFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgQ29tcG9uZW50LFxuICBwcm9wcyxcbiAgc2Vjb25kQXJnLFxuICBuZXh0UmVuZGVyTGFuZXNcbikge1xuICByZW5kZXJMYW5lcyA9IG5leHRSZW5kZXJMYW5lcztcbiAgY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMSA9IHdvcmtJblByb2dyZXNzO1xuICB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gbnVsbDtcbiAgd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBudWxsO1xuICB3b3JrSW5Qcm9ncmVzcy5sYW5lcyA9IDA7XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkggPVxuICAgIG51bGwgPT09IGN1cnJlbnQgfHwgbnVsbCA9PT0gY3VycmVudC5tZW1vaXplZFN0YXRlXG4gICAgICA/IEhvb2tzRGlzcGF0Y2hlck9uTW91bnRcbiAgICAgIDogSG9va3NEaXNwYXRjaGVyT25VcGRhdGU7XG4gIHNob3VsZERvdWJsZUludm9rZVVzZXJGbnNJbkhvb2tzREVWID0gITE7XG4gIG5leHRSZW5kZXJMYW5lcyA9IENvbXBvbmVudChwcm9wcywgc2Vjb25kQXJnKTtcbiAgc2hvdWxkRG91YmxlSW52b2tlVXNlckZuc0luSG9va3NERVYgPSAhMTtcbiAgZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZUR1cmluZ1RoaXNQYXNzICYmXG4gICAgKG5leHRSZW5kZXJMYW5lcyA9IHJlbmRlcldpdGhIb29rc0FnYWluKFxuICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICBDb21wb25lbnQsXG4gICAgICBwcm9wcyxcbiAgICAgIHNlY29uZEFyZ1xuICAgICkpO1xuICBmaW5pc2hSZW5kZXJpbmdIb29rcyhjdXJyZW50KTtcbiAgcmV0dXJuIG5leHRSZW5kZXJMYW5lcztcbn1cbmZ1bmN0aW9uIGZpbmlzaFJlbmRlcmluZ0hvb2tzKGN1cnJlbnQpIHtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IENvbnRleHRPbmx5RGlzcGF0Y2hlcjtcbiAgdmFyIGRpZFJlbmRlclRvb0Zld0hvb2tzID0gbnVsbCAhPT0gY3VycmVudEhvb2sgJiYgbnVsbCAhPT0gY3VycmVudEhvb2submV4dDtcbiAgcmVuZGVyTGFuZXMgPSAwO1xuICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjdXJyZW50SG9vayA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgPSBudWxsO1xuICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gITE7XG4gIHRoZW5hYmxlSW5kZXhDb3VudGVyID0gMDtcbiAgdGhlbmFibGVTdGF0ZSA9IG51bGw7XG4gIGlmIChkaWRSZW5kZXJUb29GZXdIb29rcykgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMDApKTtcbiAgbnVsbCA9PT0gY3VycmVudCB8fFxuICAgIGRpZFJlY2VpdmVVcGRhdGUgfHxcbiAgICAoKGN1cnJlbnQgPSBjdXJyZW50LmRlcGVuZGVuY2llcyksXG4gICAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgY2hlY2tJZkNvbnRleHRDaGFuZ2VkKGN1cnJlbnQpICYmXG4gICAgICAoZGlkUmVjZWl2ZVVwZGF0ZSA9ICEwKSk7XG59XG5mdW5jdGlvbiByZW5kZXJXaXRoSG9va3NBZ2Fpbih3b3JrSW5Qcm9ncmVzcywgQ29tcG9uZW50LCBwcm9wcywgc2Vjb25kQXJnKSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgPSB3b3JrSW5Qcm9ncmVzcztcbiAgdmFyIG51bWJlck9mUmVSZW5kZXJzID0gMDtcbiAgZG8ge1xuICAgIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGVEdXJpbmdUaGlzUGFzcyAmJiAodGhlbmFibGVTdGF0ZSA9IG51bGwpO1xuICAgIHRoZW5hYmxlSW5kZXhDb3VudGVyID0gMDtcbiAgICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlRHVyaW5nVGhpc1Bhc3MgPSAhMTtcbiAgICBpZiAoMjUgPD0gbnVtYmVyT2ZSZVJlbmRlcnMpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzAxKSk7XG4gICAgbnVtYmVyT2ZSZVJlbmRlcnMgKz0gMTtcbiAgICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjdXJyZW50SG9vayA9IG51bGw7XG4gICAgaWYgKG51bGwgIT0gd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUpIHtcbiAgICAgIHZhciBjaGlsZHJlbiA9IHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlO1xuICAgICAgY2hpbGRyZW4ubGFzdEVmZmVjdCA9IG51bGw7XG4gICAgICBjaGlsZHJlbi5ldmVudHMgPSBudWxsO1xuICAgICAgY2hpbGRyZW4uc3RvcmVzID0gbnVsbDtcbiAgICAgIG51bGwgIT0gY2hpbGRyZW4ubWVtb0NhY2hlICYmIChjaGlsZHJlbi5tZW1vQ2FjaGUuaW5kZXggPSAwKTtcbiAgICB9XG4gICAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IEhvb2tzRGlzcGF0Y2hlck9uUmVyZW5kZXI7XG4gICAgY2hpbGRyZW4gPSBDb21wb25lbnQocHJvcHMsIHNlY29uZEFyZyk7XG4gIH0gd2hpbGUgKGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGVEdXJpbmdUaGlzUGFzcyk7XG4gIHJldHVybiBjaGlsZHJlbjtcbn1cbmZ1bmN0aW9uIFRyYW5zaXRpb25Bd2FyZUhvc3RDb21wb25lbnQoKSB7XG4gIHZhciBkaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCxcbiAgICBtYXliZVRoZW5hYmxlID0gZGlzcGF0Y2hlci51c2VTdGF0ZSgpWzBdO1xuICBtYXliZVRoZW5hYmxlID1cbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBtYXliZVRoZW5hYmxlLnRoZW5cbiAgICAgID8gdXNlVGhlbmFibGUobWF5YmVUaGVuYWJsZSlcbiAgICAgIDogbWF5YmVUaGVuYWJsZTtcbiAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIudXNlU3RhdGUoKVswXTtcbiAgKG51bGwgIT09IGN1cnJlbnRIb29rID8gY3VycmVudEhvb2subWVtb2l6ZWRTdGF0ZSA6IG51bGwpICE9PSBkaXNwYXRjaGVyICYmXG4gICAgKGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEuZmxhZ3MgfD0gMTAyNCk7XG4gIHJldHVybiBtYXliZVRoZW5hYmxlO1xufVxuZnVuY3Rpb24gY2hlY2tEaWRSZW5kZXJJZEhvb2soKSB7XG4gIHZhciBkaWRSZW5kZXJJZEhvb2sgPSAwICE9PSBsb2NhbElkQ291bnRlcjtcbiAgbG9jYWxJZENvdW50ZXIgPSAwO1xuICByZXR1cm4gZGlkUmVuZGVySWRIb29rO1xufVxuZnVuY3Rpb24gYmFpbG91dEhvb2tzKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCBsYW5lcykge1xuICB3b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZSA9IGN1cnJlbnQudXBkYXRlUXVldWU7XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzICY9IC0yMDUzO1xuICBjdXJyZW50LmxhbmVzICY9IH5sYW5lcztcbn1cbmZ1bmN0aW9uIHJlc2V0SG9va3NPblVud2luZCh3b3JrSW5Qcm9ncmVzcykge1xuICBpZiAoZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZSkge1xuICAgIGZvciAoXG4gICAgICB3b3JrSW5Qcm9ncmVzcyA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgICBudWxsICE9PSB3b3JrSW5Qcm9ncmVzcztcblxuICAgICkge1xuICAgICAgdmFyIHF1ZXVlID0gd29ya0luUHJvZ3Jlc3MucXVldWU7XG4gICAgICBudWxsICE9PSBxdWV1ZSAmJiAocXVldWUucGVuZGluZyA9IG51bGwpO1xuICAgICAgd29ya0luUHJvZ3Jlc3MgPSB3b3JrSW5Qcm9ncmVzcy5uZXh0O1xuICAgIH1cbiAgICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlID0gITE7XG4gIH1cbiAgcmVuZGVyTGFuZXMgPSAwO1xuICB3b3JrSW5Qcm9ncmVzc0hvb2sgPSBjdXJyZW50SG9vayA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgPSBudWxsO1xuICBkaWRTY2hlZHVsZVJlbmRlclBoYXNlVXBkYXRlRHVyaW5nVGhpc1Bhc3MgPSAhMTtcbiAgdGhlbmFibGVJbmRleENvdW50ZXIgPSBsb2NhbElkQ291bnRlciA9IDA7XG4gIHRoZW5hYmxlU3RhdGUgPSBudWxsO1xufVxuZnVuY3Rpb24gbW91bnRXb3JrSW5Qcm9ncmVzc0hvb2soKSB7XG4gIHZhciBob29rID0ge1xuICAgIG1lbW9pemVkU3RhdGU6IG51bGwsXG4gICAgYmFzZVN0YXRlOiBudWxsLFxuICAgIGJhc2VRdWV1ZTogbnVsbCxcbiAgICBxdWV1ZTogbnVsbCxcbiAgICBuZXh0OiBudWxsXG4gIH07XG4gIG51bGwgPT09IHdvcmtJblByb2dyZXNzSG9va1xuICAgID8gKGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEubWVtb2l6ZWRTdGF0ZSA9IHdvcmtJblByb2dyZXNzSG9vayA9IGhvb2spXG4gICAgOiAod29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rLm5leHQgPSBob29rKTtcbiAgcmV0dXJuIHdvcmtJblByb2dyZXNzSG9vaztcbn1cbmZ1bmN0aW9uIHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpIHtcbiAgaWYgKG51bGwgPT09IGN1cnJlbnRIb29rKSB7XG4gICAgdmFyIG5leHRDdXJyZW50SG9vayA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEuYWx0ZXJuYXRlO1xuICAgIG5leHRDdXJyZW50SG9vayA9XG4gICAgICBudWxsICE9PSBuZXh0Q3VycmVudEhvb2sgPyBuZXh0Q3VycmVudEhvb2subWVtb2l6ZWRTdGF0ZSA6IG51bGw7XG4gIH0gZWxzZSBuZXh0Q3VycmVudEhvb2sgPSBjdXJyZW50SG9vay5uZXh0O1xuICB2YXIgbmV4dFdvcmtJblByb2dyZXNzSG9vayA9XG4gICAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3NIb29rXG4gICAgICA/IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEubWVtb2l6ZWRTdGF0ZVxuICAgICAgOiB3b3JrSW5Qcm9ncmVzc0hvb2submV4dDtcbiAgaWYgKG51bGwgIT09IG5leHRXb3JrSW5Qcm9ncmVzc0hvb2spXG4gICAgKHdvcmtJblByb2dyZXNzSG9vayA9IG5leHRXb3JrSW5Qcm9ncmVzc0hvb2spLFxuICAgICAgKGN1cnJlbnRIb29rID0gbmV4dEN1cnJlbnRIb29rKTtcbiAgZWxzZSB7XG4gICAgaWYgKG51bGwgPT09IG5leHRDdXJyZW50SG9vaykge1xuICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEuYWx0ZXJuYXRlKVxuICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ2NykpO1xuICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMTApKTtcbiAgICB9XG4gICAgY3VycmVudEhvb2sgPSBuZXh0Q3VycmVudEhvb2s7XG4gICAgbmV4dEN1cnJlbnRIb29rID0ge1xuICAgICAgbWVtb2l6ZWRTdGF0ZTogY3VycmVudEhvb2subWVtb2l6ZWRTdGF0ZSxcbiAgICAgIGJhc2VTdGF0ZTogY3VycmVudEhvb2suYmFzZVN0YXRlLFxuICAgICAgYmFzZVF1ZXVlOiBjdXJyZW50SG9vay5iYXNlUXVldWUsXG4gICAgICBxdWV1ZTogY3VycmVudEhvb2sucXVldWUsXG4gICAgICBuZXh0OiBudWxsXG4gICAgfTtcbiAgICBudWxsID09PSB3b3JrSW5Qcm9ncmVzc0hvb2tcbiAgICAgID8gKGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEubWVtb2l6ZWRTdGF0ZSA9IHdvcmtJblByb2dyZXNzSG9vayA9XG4gICAgICAgICAgbmV4dEN1cnJlbnRIb29rKVxuICAgICAgOiAod29ya0luUHJvZ3Jlc3NIb29rID0gd29ya0luUHJvZ3Jlc3NIb29rLm5leHQgPSBuZXh0Q3VycmVudEhvb2spO1xuICB9XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzc0hvb2s7XG59XG52YXIgY3JlYXRlRnVuY3Rpb25Db21wb25lbnRVcGRhdGVRdWV1ZTtcbmNyZWF0ZUZ1bmN0aW9uQ29tcG9uZW50VXBkYXRlUXVldWUgPSBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7IGxhc3RFZmZlY3Q6IG51bGwsIGV2ZW50czogbnVsbCwgc3RvcmVzOiBudWxsLCBtZW1vQ2FjaGU6IG51bGwgfTtcbn07XG5mdW5jdGlvbiB1c2VUaGVuYWJsZSh0aGVuYWJsZSkge1xuICB2YXIgaW5kZXggPSB0aGVuYWJsZUluZGV4Q291bnRlcjtcbiAgdGhlbmFibGVJbmRleENvdW50ZXIgKz0gMTtcbiAgbnVsbCA9PT0gdGhlbmFibGVTdGF0ZSAmJiAodGhlbmFibGVTdGF0ZSA9IFtdKTtcbiAgdGhlbmFibGUgPSB0cmFja1VzZWRUaGVuYWJsZSh0aGVuYWJsZVN0YXRlLCB0aGVuYWJsZSwgaW5kZXgpO1xuICBpbmRleCA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDE7XG4gIG51bGwgPT09XG4gICAgKG51bGwgPT09IHdvcmtJblByb2dyZXNzSG9va1xuICAgICAgPyBpbmRleC5tZW1vaXplZFN0YXRlXG4gICAgICA6IHdvcmtJblByb2dyZXNzSG9vay5uZXh0KSAmJlxuICAgICgoaW5kZXggPSBpbmRleC5hbHRlcm5hdGUpLFxuICAgIChSZWFjdFNoYXJlZEludGVybmFscy5IID1cbiAgICAgIG51bGwgPT09IGluZGV4IHx8IG51bGwgPT09IGluZGV4Lm1lbW9pemVkU3RhdGVcbiAgICAgICAgPyBIb29rc0Rpc3BhdGNoZXJPbk1vdW50XG4gICAgICAgIDogSG9va3NEaXNwYXRjaGVyT25VcGRhdGUpKTtcbiAgcmV0dXJuIHRoZW5hYmxlO1xufVxuZnVuY3Rpb24gdXNlKHVzYWJsZSkge1xuICBpZiAobnVsbCAhPT0gdXNhYmxlICYmIFwib2JqZWN0XCIgPT09IHR5cGVvZiB1c2FibGUpIHtcbiAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdXNhYmxlLnRoZW4pIHJldHVybiB1c2VUaGVuYWJsZSh1c2FibGUpO1xuICAgIGlmICh1c2FibGUuJCR0eXBlb2YgPT09IFJFQUNUX0NPTlRFWFRfVFlQRSkgcmV0dXJuIHJlYWRDb250ZXh0KHVzYWJsZSk7XG4gIH1cbiAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0MzgsIFN0cmluZyh1c2FibGUpKSk7XG59XG5mdW5jdGlvbiB1c2VNZW1vQ2FjaGUoc2l6ZSkge1xuICB2YXIgbWVtb0NhY2hlID0gbnVsbCxcbiAgICB1cGRhdGVRdWV1ZSA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEudXBkYXRlUXVldWU7XG4gIG51bGwgIT09IHVwZGF0ZVF1ZXVlICYmIChtZW1vQ2FjaGUgPSB1cGRhdGVRdWV1ZS5tZW1vQ2FjaGUpO1xuICBpZiAobnVsbCA9PSBtZW1vQ2FjaGUpIHtcbiAgICB2YXIgY3VycmVudCA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEuYWx0ZXJuYXRlO1xuICAgIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAgICgoY3VycmVudCA9IGN1cnJlbnQudXBkYXRlUXVldWUpLFxuICAgICAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgICAoKGN1cnJlbnQgPSBjdXJyZW50Lm1lbW9DYWNoZSksXG4gICAgICAgIG51bGwgIT0gY3VycmVudCAmJlxuICAgICAgICAgIChtZW1vQ2FjaGUgPSB7XG4gICAgICAgICAgICBkYXRhOiBjdXJyZW50LmRhdGEubWFwKGZ1bmN0aW9uIChhcnJheSkge1xuICAgICAgICAgICAgICByZXR1cm4gYXJyYXkuc2xpY2UoKTtcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgaW5kZXg6IDBcbiAgICAgICAgICB9KSkpO1xuICB9XG4gIG51bGwgPT0gbWVtb0NhY2hlICYmIChtZW1vQ2FjaGUgPSB7IGRhdGE6IFtdLCBpbmRleDogMCB9KTtcbiAgbnVsbCA9PT0gdXBkYXRlUXVldWUgJiZcbiAgICAoKHVwZGF0ZVF1ZXVlID0gY3JlYXRlRnVuY3Rpb25Db21wb25lbnRVcGRhdGVRdWV1ZSgpKSxcbiAgICAoY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMS51cGRhdGVRdWV1ZSA9IHVwZGF0ZVF1ZXVlKSk7XG4gIHVwZGF0ZVF1ZXVlLm1lbW9DYWNoZSA9IG1lbW9DYWNoZTtcbiAgdXBkYXRlUXVldWUgPSBtZW1vQ2FjaGUuZGF0YVttZW1vQ2FjaGUuaW5kZXhdO1xuICBpZiAodm9pZCAwID09PSB1cGRhdGVRdWV1ZSlcbiAgICBmb3IgKFxuICAgICAgdXBkYXRlUXVldWUgPSBtZW1vQ2FjaGUuZGF0YVttZW1vQ2FjaGUuaW5kZXhdID0gQXJyYXkoc2l6ZSksIGN1cnJlbnQgPSAwO1xuICAgICAgY3VycmVudCA8IHNpemU7XG4gICAgICBjdXJyZW50KytcbiAgICApXG4gICAgICB1cGRhdGVRdWV1ZVtjdXJyZW50XSA9IFJFQUNUX01FTU9fQ0FDSEVfU0VOVElORUw7XG4gIG1lbW9DYWNoZS5pbmRleCsrO1xuICByZXR1cm4gdXBkYXRlUXVldWU7XG59XG5mdW5jdGlvbiBiYXNpY1N0YXRlUmVkdWNlcihzdGF0ZSwgYWN0aW9uKSB7XG4gIHJldHVybiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBhY3Rpb24gPyBhY3Rpb24oc3RhdGUpIDogYWN0aW9uO1xufVxuZnVuY3Rpb24gdXBkYXRlUmVkdWNlcihyZWR1Y2VyKSB7XG4gIHZhciBob29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHJldHVybiB1cGRhdGVSZWR1Y2VySW1wbChob29rLCBjdXJyZW50SG9vaywgcmVkdWNlcik7XG59XG5mdW5jdGlvbiB1cGRhdGVSZWR1Y2VySW1wbChob29rLCBjdXJyZW50LCByZWR1Y2VyKSB7XG4gIHZhciBxdWV1ZSA9IGhvb2sucXVldWU7XG4gIGlmIChudWxsID09PSBxdWV1ZSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMTEpKTtcbiAgcXVldWUubGFzdFJlbmRlcmVkUmVkdWNlciA9IHJlZHVjZXI7XG4gIHZhciBiYXNlUXVldWUgPSBob29rLmJhc2VRdWV1ZSxcbiAgICBwZW5kaW5nUXVldWUgPSBxdWV1ZS5wZW5kaW5nO1xuICBpZiAobnVsbCAhPT0gcGVuZGluZ1F1ZXVlKSB7XG4gICAgaWYgKG51bGwgIT09IGJhc2VRdWV1ZSkge1xuICAgICAgdmFyIGJhc2VGaXJzdCA9IGJhc2VRdWV1ZS5uZXh0O1xuICAgICAgYmFzZVF1ZXVlLm5leHQgPSBwZW5kaW5nUXVldWUubmV4dDtcbiAgICAgIHBlbmRpbmdRdWV1ZS5uZXh0ID0gYmFzZUZpcnN0O1xuICAgIH1cbiAgICBjdXJyZW50LmJhc2VRdWV1ZSA9IGJhc2VRdWV1ZSA9IHBlbmRpbmdRdWV1ZTtcbiAgICBxdWV1ZS5wZW5kaW5nID0gbnVsbDtcbiAgfVxuICBwZW5kaW5nUXVldWUgPSBob29rLmJhc2VTdGF0ZTtcbiAgaWYgKG51bGwgPT09IGJhc2VRdWV1ZSkgaG9vay5tZW1vaXplZFN0YXRlID0gcGVuZGluZ1F1ZXVlO1xuICBlbHNlIHtcbiAgICBjdXJyZW50ID0gYmFzZVF1ZXVlLm5leHQ7XG4gICAgdmFyIG5ld0Jhc2VRdWV1ZUZpcnN0ID0gKGJhc2VGaXJzdCA9IG51bGwpLFxuICAgICAgbmV3QmFzZVF1ZXVlTGFzdCA9IG51bGwsXG4gICAgICB1cGRhdGUgPSBjdXJyZW50LFxuICAgICAgZGlkUmVhZEZyb21FbnRhbmdsZWRBc3luY0FjdGlvbiQ1NCA9ICExO1xuICAgIGRvIHtcbiAgICAgIHZhciB1cGRhdGVMYW5lID0gdXBkYXRlLmxhbmUgJiAtNTM2ODcwOTEzO1xuICAgICAgaWYgKFxuICAgICAgICB1cGRhdGVMYW5lICE9PSB1cGRhdGUubGFuZVxuICAgICAgICAgID8gKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICYgdXBkYXRlTGFuZSkgPT09IHVwZGF0ZUxhbmVcbiAgICAgICAgICA6IChyZW5kZXJMYW5lcyAmIHVwZGF0ZUxhbmUpID09PSB1cGRhdGVMYW5lXG4gICAgICApIHtcbiAgICAgICAgdmFyIHJldmVydExhbmUgPSB1cGRhdGUucmV2ZXJ0TGFuZTtcbiAgICAgICAgaWYgKDAgPT09IHJldmVydExhbmUpXG4gICAgICAgICAgbnVsbCAhPT0gbmV3QmFzZVF1ZXVlTGFzdCAmJlxuICAgICAgICAgICAgKG5ld0Jhc2VRdWV1ZUxhc3QgPSBuZXdCYXNlUXVldWVMYXN0Lm5leHQgPVxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgbGFuZTogMCxcbiAgICAgICAgICAgICAgICByZXZlcnRMYW5lOiAwLFxuICAgICAgICAgICAgICAgIGFjdGlvbjogdXBkYXRlLmFjdGlvbixcbiAgICAgICAgICAgICAgICBoYXNFYWdlclN0YXRlOiB1cGRhdGUuaGFzRWFnZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICBlYWdlclN0YXRlOiB1cGRhdGUuZWFnZXJTdGF0ZSxcbiAgICAgICAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgdXBkYXRlTGFuZSA9PT0gY3VycmVudEVudGFuZ2xlZExhbmUgJiZcbiAgICAgICAgICAgICAgKGRpZFJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24kNTQgPSAhMCk7XG4gICAgICAgIGVsc2UgaWYgKChyZW5kZXJMYW5lcyAmIHJldmVydExhbmUpID09PSByZXZlcnRMYW5lKSB7XG4gICAgICAgICAgdXBkYXRlID0gdXBkYXRlLm5leHQ7XG4gICAgICAgICAgcmV2ZXJ0TGFuZSA9PT0gY3VycmVudEVudGFuZ2xlZExhbmUgJiZcbiAgICAgICAgICAgIChkaWRSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uJDU0ID0gITApO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9IGVsc2VcbiAgICAgICAgICAodXBkYXRlTGFuZSA9IHtcbiAgICAgICAgICAgIGxhbmU6IDAsXG4gICAgICAgICAgICByZXZlcnRMYW5lOiB1cGRhdGUucmV2ZXJ0TGFuZSxcbiAgICAgICAgICAgIGFjdGlvbjogdXBkYXRlLmFjdGlvbixcbiAgICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IHVwZGF0ZS5oYXNFYWdlclN0YXRlLFxuICAgICAgICAgICAgZWFnZXJTdGF0ZTogdXBkYXRlLmVhZ2VyU3RhdGUsXG4gICAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgICAgfSksXG4gICAgICAgICAgICBudWxsID09PSBuZXdCYXNlUXVldWVMYXN0XG4gICAgICAgICAgICAgID8gKChuZXdCYXNlUXVldWVGaXJzdCA9IG5ld0Jhc2VRdWV1ZUxhc3QgPSB1cGRhdGVMYW5lKSxcbiAgICAgICAgICAgICAgICAoYmFzZUZpcnN0ID0gcGVuZGluZ1F1ZXVlKSlcbiAgICAgICAgICAgICAgOiAobmV3QmFzZVF1ZXVlTGFzdCA9IG5ld0Jhc2VRdWV1ZUxhc3QubmV4dCA9IHVwZGF0ZUxhbmUpLFxuICAgICAgICAgICAgKGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEubGFuZXMgfD0gcmV2ZXJ0TGFuZSksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NSb290U2tpcHBlZExhbmVzIHw9IHJldmVydExhbmUpO1xuICAgICAgICB1cGRhdGVMYW5lID0gdXBkYXRlLmFjdGlvbjtcbiAgICAgICAgc2hvdWxkRG91YmxlSW52b2tlVXNlckZuc0luSG9va3NERVYgJiZcbiAgICAgICAgICByZWR1Y2VyKHBlbmRpbmdRdWV1ZSwgdXBkYXRlTGFuZSk7XG4gICAgICAgIHBlbmRpbmdRdWV1ZSA9IHVwZGF0ZS5oYXNFYWdlclN0YXRlXG4gICAgICAgICAgPyB1cGRhdGUuZWFnZXJTdGF0ZVxuICAgICAgICAgIDogcmVkdWNlcihwZW5kaW5nUXVldWUsIHVwZGF0ZUxhbmUpO1xuICAgICAgfSBlbHNlXG4gICAgICAgIChyZXZlcnRMYW5lID0ge1xuICAgICAgICAgIGxhbmU6IHVwZGF0ZUxhbmUsXG4gICAgICAgICAgcmV2ZXJ0TGFuZTogdXBkYXRlLnJldmVydExhbmUsXG4gICAgICAgICAgYWN0aW9uOiB1cGRhdGUuYWN0aW9uLFxuICAgICAgICAgIGhhc0VhZ2VyU3RhdGU6IHVwZGF0ZS5oYXNFYWdlclN0YXRlLFxuICAgICAgICAgIGVhZ2VyU3RhdGU6IHVwZGF0ZS5lYWdlclN0YXRlLFxuICAgICAgICAgIG5leHQ6IG51bGxcbiAgICAgICAgfSksXG4gICAgICAgICAgbnVsbCA9PT0gbmV3QmFzZVF1ZXVlTGFzdFxuICAgICAgICAgICAgPyAoKG5ld0Jhc2VRdWV1ZUZpcnN0ID0gbmV3QmFzZVF1ZXVlTGFzdCA9IHJldmVydExhbmUpLFxuICAgICAgICAgICAgICAoYmFzZUZpcnN0ID0gcGVuZGluZ1F1ZXVlKSlcbiAgICAgICAgICAgIDogKG5ld0Jhc2VRdWV1ZUxhc3QgPSBuZXdCYXNlUXVldWVMYXN0Lm5leHQgPSByZXZlcnRMYW5lKSxcbiAgICAgICAgICAoY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMS5sYW5lcyB8PSB1cGRhdGVMYW5lKSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3NSb290U2tpcHBlZExhbmVzIHw9IHVwZGF0ZUxhbmUpO1xuICAgICAgdXBkYXRlID0gdXBkYXRlLm5leHQ7XG4gICAgfSB3aGlsZSAobnVsbCAhPT0gdXBkYXRlICYmIHVwZGF0ZSAhPT0gY3VycmVudCk7XG4gICAgbnVsbCA9PT0gbmV3QmFzZVF1ZXVlTGFzdFxuICAgICAgPyAoYmFzZUZpcnN0ID0gcGVuZGluZ1F1ZXVlKVxuICAgICAgOiAobmV3QmFzZVF1ZXVlTGFzdC5uZXh0ID0gbmV3QmFzZVF1ZXVlRmlyc3QpO1xuICAgIGlmIChcbiAgICAgICFvYmplY3RJcyhwZW5kaW5nUXVldWUsIGhvb2subWVtb2l6ZWRTdGF0ZSkgJiZcbiAgICAgICgoZGlkUmVjZWl2ZVVwZGF0ZSA9ICEwKSxcbiAgICAgIGRpZFJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24kNTQgJiZcbiAgICAgICAgKChyZWR1Y2VyID0gY3VycmVudEVudGFuZ2xlZEFjdGlvblRoZW5hYmxlKSwgbnVsbCAhPT0gcmVkdWNlcikpXG4gICAgKVxuICAgICAgdGhyb3cgcmVkdWNlcjtcbiAgICBob29rLm1lbW9pemVkU3RhdGUgPSBwZW5kaW5nUXVldWU7XG4gICAgaG9vay5iYXNlU3RhdGUgPSBiYXNlRmlyc3Q7XG4gICAgaG9vay5iYXNlUXVldWUgPSBuZXdCYXNlUXVldWVMYXN0O1xuICAgIHF1ZXVlLmxhc3RSZW5kZXJlZFN0YXRlID0gcGVuZGluZ1F1ZXVlO1xuICB9XG4gIG51bGwgPT09IGJhc2VRdWV1ZSAmJiAocXVldWUubGFuZXMgPSAwKTtcbiAgcmV0dXJuIFtob29rLm1lbW9pemVkU3RhdGUsIHF1ZXVlLmRpc3BhdGNoXTtcbn1cbmZ1bmN0aW9uIHJlcmVuZGVyUmVkdWNlcihyZWR1Y2VyKSB7XG4gIHZhciBob29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCksXG4gICAgcXVldWUgPSBob29rLnF1ZXVlO1xuICBpZiAobnVsbCA9PT0gcXVldWUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzExKSk7XG4gIHF1ZXVlLmxhc3RSZW5kZXJlZFJlZHVjZXIgPSByZWR1Y2VyO1xuICB2YXIgZGlzcGF0Y2ggPSBxdWV1ZS5kaXNwYXRjaCxcbiAgICBsYXN0UmVuZGVyUGhhc2VVcGRhdGUgPSBxdWV1ZS5wZW5kaW5nLFxuICAgIG5ld1N0YXRlID0gaG9vay5tZW1vaXplZFN0YXRlO1xuICBpZiAobnVsbCAhPT0gbGFzdFJlbmRlclBoYXNlVXBkYXRlKSB7XG4gICAgcXVldWUucGVuZGluZyA9IG51bGw7XG4gICAgdmFyIHVwZGF0ZSA9IChsYXN0UmVuZGVyUGhhc2VVcGRhdGUgPSBsYXN0UmVuZGVyUGhhc2VVcGRhdGUubmV4dCk7XG4gICAgZG8gKG5ld1N0YXRlID0gcmVkdWNlcihuZXdTdGF0ZSwgdXBkYXRlLmFjdGlvbikpLCAodXBkYXRlID0gdXBkYXRlLm5leHQpO1xuICAgIHdoaWxlICh1cGRhdGUgIT09IGxhc3RSZW5kZXJQaGFzZVVwZGF0ZSk7XG4gICAgb2JqZWN0SXMobmV3U3RhdGUsIGhvb2subWVtb2l6ZWRTdGF0ZSkgfHwgKGRpZFJlY2VpdmVVcGRhdGUgPSAhMCk7XG4gICAgaG9vay5tZW1vaXplZFN0YXRlID0gbmV3U3RhdGU7XG4gICAgbnVsbCA9PT0gaG9vay5iYXNlUXVldWUgJiYgKGhvb2suYmFzZVN0YXRlID0gbmV3U3RhdGUpO1xuICAgIHF1ZXVlLmxhc3RSZW5kZXJlZFN0YXRlID0gbmV3U3RhdGU7XG4gIH1cbiAgcmV0dXJuIFtuZXdTdGF0ZSwgZGlzcGF0Y2hdO1xufVxuZnVuY3Rpb24gdXBkYXRlU3luY0V4dGVybmFsU3RvcmUoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpIHtcbiAgdmFyIGZpYmVyID0gY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMSxcbiAgICBob29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCksXG4gICAgaXNIeWRyYXRpbmckanNjb21wJDAgPSBpc0h5ZHJhdGluZztcbiAgaWYgKGlzSHlkcmF0aW5nJGpzY29tcCQwKSB7XG4gICAgaWYgKHZvaWQgMCA9PT0gZ2V0U2VydmVyU25hcHNob3QpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDA3KSk7XG4gICAgZ2V0U2VydmVyU25hcHNob3QgPSBnZXRTZXJ2ZXJTbmFwc2hvdCgpO1xuICB9IGVsc2UgZ2V0U2VydmVyU25hcHNob3QgPSBnZXRTbmFwc2hvdCgpO1xuICB2YXIgc25hcHNob3RDaGFuZ2VkID0gIW9iamVjdElzKFxuICAgIChjdXJyZW50SG9vayB8fCBob29rKS5tZW1vaXplZFN0YXRlLFxuICAgIGdldFNlcnZlclNuYXBzaG90XG4gICk7XG4gIHNuYXBzaG90Q2hhbmdlZCAmJlxuICAgICgoaG9vay5tZW1vaXplZFN0YXRlID0gZ2V0U2VydmVyU25hcHNob3QpLCAoZGlkUmVjZWl2ZVVwZGF0ZSA9ICEwKSk7XG4gIGhvb2sgPSBob29rLnF1ZXVlO1xuICB1cGRhdGVFZmZlY3Qoc3Vic2NyaWJlVG9TdG9yZS5iaW5kKG51bGwsIGZpYmVyLCBob29rLCBzdWJzY3JpYmUpLCBbXG4gICAgc3Vic2NyaWJlXG4gIF0pO1xuICBpZiAoXG4gICAgaG9vay5nZXRTbmFwc2hvdCAhPT0gZ2V0U25hcHNob3QgfHxcbiAgICBzbmFwc2hvdENoYW5nZWQgfHxcbiAgICAobnVsbCAhPT0gd29ya0luUHJvZ3Jlc3NIb29rICYmIHdvcmtJblByb2dyZXNzSG9vay5tZW1vaXplZFN0YXRlLnRhZyAmIDEpXG4gICkge1xuICAgIGZpYmVyLmZsYWdzIHw9IDIwNDg7XG4gICAgcHVzaEVmZmVjdChcbiAgICAgIDksXG4gICAgICB1cGRhdGVTdG9yZUluc3RhbmNlLmJpbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIGZpYmVyLFxuICAgICAgICBob29rLFxuICAgICAgICBnZXRTZXJ2ZXJTbmFwc2hvdCxcbiAgICAgICAgZ2V0U25hcHNob3RcbiAgICAgICksXG4gICAgICB7IGRlc3Ryb3k6IHZvaWQgMCB9LFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgaWYgKG51bGwgPT09IHdvcmtJblByb2dyZXNzUm9vdCkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzNDkpKTtcbiAgICBpc0h5ZHJhdGluZyRqc2NvbXAkMCB8fFxuICAgICAgMCAhPT0gKHJlbmRlckxhbmVzICYgNjApIHx8XG4gICAgICBwdXNoU3RvcmVDb25zaXN0ZW5jeUNoZWNrKGZpYmVyLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpO1xuICB9XG4gIHJldHVybiBnZXRTZXJ2ZXJTbmFwc2hvdDtcbn1cbmZ1bmN0aW9uIHB1c2hTdG9yZUNvbnNpc3RlbmN5Q2hlY2soZmliZXIsIGdldFNuYXBzaG90LCByZW5kZXJlZFNuYXBzaG90KSB7XG4gIGZpYmVyLmZsYWdzIHw9IDE2Mzg0O1xuICBmaWJlciA9IHsgZ2V0U25hcHNob3Q6IGdldFNuYXBzaG90LCB2YWx1ZTogcmVuZGVyZWRTbmFwc2hvdCB9O1xuICBnZXRTbmFwc2hvdCA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEudXBkYXRlUXVldWU7XG4gIG51bGwgPT09IGdldFNuYXBzaG90XG4gICAgPyAoKGdldFNuYXBzaG90ID0gY3JlYXRlRnVuY3Rpb25Db21wb25lbnRVcGRhdGVRdWV1ZSgpKSxcbiAgICAgIChjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLnVwZGF0ZVF1ZXVlID0gZ2V0U25hcHNob3QpLFxuICAgICAgKGdldFNuYXBzaG90LnN0b3JlcyA9IFtmaWJlcl0pKVxuICAgIDogKChyZW5kZXJlZFNuYXBzaG90ID0gZ2V0U25hcHNob3Quc3RvcmVzKSxcbiAgICAgIG51bGwgPT09IHJlbmRlcmVkU25hcHNob3RcbiAgICAgICAgPyAoZ2V0U25hcHNob3Quc3RvcmVzID0gW2ZpYmVyXSlcbiAgICAgICAgOiByZW5kZXJlZFNuYXBzaG90LnB1c2goZmliZXIpKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZVN0b3JlSW5zdGFuY2UoZmliZXIsIGluc3QsIG5leHRTbmFwc2hvdCwgZ2V0U25hcHNob3QpIHtcbiAgaW5zdC52YWx1ZSA9IG5leHRTbmFwc2hvdDtcbiAgaW5zdC5nZXRTbmFwc2hvdCA9IGdldFNuYXBzaG90O1xuICBjaGVja0lmU25hcHNob3RDaGFuZ2VkKGluc3QpICYmIGZvcmNlU3RvcmVSZXJlbmRlcihmaWJlcik7XG59XG5mdW5jdGlvbiBzdWJzY3JpYmVUb1N0b3JlKGZpYmVyLCBpbnN0LCBzdWJzY3JpYmUpIHtcbiAgcmV0dXJuIHN1YnNjcmliZShmdW5jdGlvbiAoKSB7XG4gICAgY2hlY2tJZlNuYXBzaG90Q2hhbmdlZChpbnN0KSAmJiBmb3JjZVN0b3JlUmVyZW5kZXIoZmliZXIpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNoZWNrSWZTbmFwc2hvdENoYW5nZWQoaW5zdCkge1xuICB2YXIgbGF0ZXN0R2V0U25hcHNob3QgPSBpbnN0LmdldFNuYXBzaG90O1xuICBpbnN0ID0gaW5zdC52YWx1ZTtcbiAgdHJ5IHtcbiAgICB2YXIgbmV4dFZhbHVlID0gbGF0ZXN0R2V0U25hcHNob3QoKTtcbiAgICByZXR1cm4gIW9iamVjdElzKGluc3QsIG5leHRWYWx1ZSk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgcmV0dXJuICEwO1xuICB9XG59XG5mdW5jdGlvbiBmb3JjZVN0b3JlUmVyZW5kZXIoZmliZXIpIHtcbiAgdmFyIHJvb3QgPSBlbnF1ZXVlQ29uY3VycmVudFJlbmRlckZvckxhbmUoZmliZXIsIDIpO1xuICBudWxsICE9PSByb290ICYmIHNjaGVkdWxlVXBkYXRlT25GaWJlcihyb290LCBmaWJlciwgMik7XG59XG5mdW5jdGlvbiBtb3VudFN0YXRlSW1wbChpbml0aWFsU3RhdGUpIHtcbiAgdmFyIGhvb2sgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5pdGlhbFN0YXRlKSB7XG4gICAgdmFyIGluaXRpYWxTdGF0ZUluaXRpYWxpemVyID0gaW5pdGlhbFN0YXRlO1xuICAgIGluaXRpYWxTdGF0ZSA9IGluaXRpYWxTdGF0ZUluaXRpYWxpemVyKCk7XG4gICAgaWYgKHNob3VsZERvdWJsZUludm9rZVVzZXJGbnNJbkhvb2tzREVWKSB7XG4gICAgICBzZXRJc1N0cmljdE1vZGVGb3JEZXZ0b29scyghMCk7XG4gICAgICB0cnkge1xuICAgICAgICBpbml0aWFsU3RhdGVJbml0aWFsaXplcigpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0SXNTdHJpY3RNb2RlRm9yRGV2dG9vbHMoITEpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBob29rLm1lbW9pemVkU3RhdGUgPSBob29rLmJhc2VTdGF0ZSA9IGluaXRpYWxTdGF0ZTtcbiAgaG9vay5xdWV1ZSA9IHtcbiAgICBwZW5kaW5nOiBudWxsLFxuICAgIGxhbmVzOiAwLFxuICAgIGRpc3BhdGNoOiBudWxsLFxuICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IGJhc2ljU3RhdGVSZWR1Y2VyLFxuICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBpbml0aWFsU3RhdGVcbiAgfTtcbiAgcmV0dXJuIGhvb2s7XG59XG5mdW5jdGlvbiB1cGRhdGVPcHRpbWlzdGljSW1wbChob29rLCBjdXJyZW50LCBwYXNzdGhyb3VnaCwgcmVkdWNlcikge1xuICBob29rLmJhc2VTdGF0ZSA9IHBhc3N0aHJvdWdoO1xuICByZXR1cm4gdXBkYXRlUmVkdWNlckltcGwoXG4gICAgaG9vayxcbiAgICBjdXJyZW50SG9vayxcbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZWR1Y2VyID8gcmVkdWNlciA6IGJhc2ljU3RhdGVSZWR1Y2VyXG4gICk7XG59XG5mdW5jdGlvbiBkaXNwYXRjaEFjdGlvblN0YXRlKFxuICBmaWJlcixcbiAgYWN0aW9uUXVldWUsXG4gIHNldFBlbmRpbmdTdGF0ZSxcbiAgc2V0U3RhdGUsXG4gIHBheWxvYWRcbikge1xuICBpZiAoaXNSZW5kZXJQaGFzZVVwZGF0ZShmaWJlcikpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDg1KSk7XG4gIGZpYmVyID0gYWN0aW9uUXVldWUuYWN0aW9uO1xuICBpZiAobnVsbCAhPT0gZmliZXIpIHtcbiAgICB2YXIgYWN0aW9uTm9kZSA9IHtcbiAgICAgIHBheWxvYWQ6IHBheWxvYWQsXG4gICAgICBhY3Rpb246IGZpYmVyLFxuICAgICAgbmV4dDogbnVsbCxcbiAgICAgIGlzVHJhbnNpdGlvbjogITAsXG4gICAgICBzdGF0dXM6IFwicGVuZGluZ1wiLFxuICAgICAgdmFsdWU6IG51bGwsXG4gICAgICByZWFzb246IG51bGwsXG4gICAgICBsaXN0ZW5lcnM6IFtdLFxuICAgICAgdGhlbjogZnVuY3Rpb24gKGxpc3RlbmVyKSB7XG4gICAgICAgIGFjdGlvbk5vZGUubGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgICAgfVxuICAgIH07XG4gICAgbnVsbCAhPT0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVFxuICAgICAgPyBzZXRQZW5kaW5nU3RhdGUoITApXG4gICAgICA6IChhY3Rpb25Ob2RlLmlzVHJhbnNpdGlvbiA9ICExKTtcbiAgICBzZXRTdGF0ZShhY3Rpb25Ob2RlKTtcbiAgICBzZXRQZW5kaW5nU3RhdGUgPSBhY3Rpb25RdWV1ZS5wZW5kaW5nO1xuICAgIG51bGwgPT09IHNldFBlbmRpbmdTdGF0ZVxuICAgICAgPyAoKGFjdGlvbk5vZGUubmV4dCA9IGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBhY3Rpb25Ob2RlKSxcbiAgICAgICAgcnVuQWN0aW9uU3RhdGVBY3Rpb24oYWN0aW9uUXVldWUsIGFjdGlvbk5vZGUpKVxuICAgICAgOiAoKGFjdGlvbk5vZGUubmV4dCA9IHNldFBlbmRpbmdTdGF0ZS5uZXh0KSxcbiAgICAgICAgKGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBzZXRQZW5kaW5nU3RhdGUubmV4dCA9IGFjdGlvbk5vZGUpKTtcbiAgfVxufVxuZnVuY3Rpb24gcnVuQWN0aW9uU3RhdGVBY3Rpb24oYWN0aW9uUXVldWUsIG5vZGUpIHtcbiAgdmFyIGFjdGlvbiA9IG5vZGUuYWN0aW9uLFxuICAgIHBheWxvYWQgPSBub2RlLnBheWxvYWQsXG4gICAgcHJldlN0YXRlID0gYWN0aW9uUXVldWUuc3RhdGU7XG4gIGlmIChub2RlLmlzVHJhbnNpdGlvbikge1xuICAgIHZhciBwcmV2VHJhbnNpdGlvbiA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQsXG4gICAgICBjdXJyZW50VHJhbnNpdGlvbiA9IHt9O1xuICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBjdXJyZW50VHJhbnNpdGlvbjtcbiAgICB0cnkge1xuICAgICAgdmFyIHJldHVyblZhbHVlID0gYWN0aW9uKHByZXZTdGF0ZSwgcGF5bG9hZCksXG4gICAgICAgIG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUztcbiAgICAgIG51bGwgIT09IG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoICYmXG4gICAgICAgIG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoKGN1cnJlbnRUcmFuc2l0aW9uLCByZXR1cm5WYWx1ZSk7XG4gICAgICBoYW5kbGVBY3Rpb25SZXR1cm5WYWx1ZShhY3Rpb25RdWV1ZSwgbm9kZSwgcmV0dXJuVmFsdWUpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBvbkFjdGlvbkVycm9yKGFjdGlvblF1ZXVlLCBub2RlLCBlcnJvcik7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2VHJhbnNpdGlvbjtcbiAgICB9XG4gIH0gZWxzZVxuICAgIHRyeSB7XG4gICAgICAocHJldlRyYW5zaXRpb24gPSBhY3Rpb24ocHJldlN0YXRlLCBwYXlsb2FkKSksXG4gICAgICAgIGhhbmRsZUFjdGlvblJldHVyblZhbHVlKGFjdGlvblF1ZXVlLCBub2RlLCBwcmV2VHJhbnNpdGlvbik7XG4gICAgfSBjYXRjaCAoZXJyb3IkNjApIHtcbiAgICAgIG9uQWN0aW9uRXJyb3IoYWN0aW9uUXVldWUsIG5vZGUsIGVycm9yJDYwKTtcbiAgICB9XG59XG5mdW5jdGlvbiBoYW5kbGVBY3Rpb25SZXR1cm5WYWx1ZShhY3Rpb25RdWV1ZSwgbm9kZSwgcmV0dXJuVmFsdWUpIHtcbiAgbnVsbCAhPT0gcmV0dXJuVmFsdWUgJiZcbiAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlICYmXG4gIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlLnRoZW5cbiAgICA/IHJldHVyblZhbHVlLnRoZW4oXG4gICAgICAgIGZ1bmN0aW9uIChuZXh0U3RhdGUpIHtcbiAgICAgICAgICBvbkFjdGlvblN1Y2Nlc3MoYWN0aW9uUXVldWUsIG5vZGUsIG5leHRTdGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgIHJldHVybiBvbkFjdGlvbkVycm9yKGFjdGlvblF1ZXVlLCBub2RlLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIClcbiAgICA6IG9uQWN0aW9uU3VjY2VzcyhhY3Rpb25RdWV1ZSwgbm9kZSwgcmV0dXJuVmFsdWUpO1xufVxuZnVuY3Rpb24gb25BY3Rpb25TdWNjZXNzKGFjdGlvblF1ZXVlLCBhY3Rpb25Ob2RlLCBuZXh0U3RhdGUpIHtcbiAgYWN0aW9uTm9kZS5zdGF0dXMgPSBcImZ1bGZpbGxlZFwiO1xuICBhY3Rpb25Ob2RlLnZhbHVlID0gbmV4dFN0YXRlO1xuICBub3RpZnlBY3Rpb25MaXN0ZW5lcnMoYWN0aW9uTm9kZSk7XG4gIGFjdGlvblF1ZXVlLnN0YXRlID0gbmV4dFN0YXRlO1xuICBhY3Rpb25Ob2RlID0gYWN0aW9uUXVldWUucGVuZGluZztcbiAgbnVsbCAhPT0gYWN0aW9uTm9kZSAmJlxuICAgICgobmV4dFN0YXRlID0gYWN0aW9uTm9kZS5uZXh0KSxcbiAgICBuZXh0U3RhdGUgPT09IGFjdGlvbk5vZGVcbiAgICAgID8gKGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBudWxsKVxuICAgICAgOiAoKG5leHRTdGF0ZSA9IG5leHRTdGF0ZS5uZXh0KSxcbiAgICAgICAgKGFjdGlvbk5vZGUubmV4dCA9IG5leHRTdGF0ZSksXG4gICAgICAgIHJ1bkFjdGlvblN0YXRlQWN0aW9uKGFjdGlvblF1ZXVlLCBuZXh0U3RhdGUpKSk7XG59XG5mdW5jdGlvbiBvbkFjdGlvbkVycm9yKGFjdGlvblF1ZXVlLCBhY3Rpb25Ob2RlLCBlcnJvcikge1xuICB2YXIgbGFzdCA9IGFjdGlvblF1ZXVlLnBlbmRpbmc7XG4gIGFjdGlvblF1ZXVlLnBlbmRpbmcgPSBudWxsO1xuICBpZiAobnVsbCAhPT0gbGFzdCkge1xuICAgIGxhc3QgPSBsYXN0Lm5leHQ7XG4gICAgZG9cbiAgICAgIChhY3Rpb25Ob2RlLnN0YXR1cyA9IFwicmVqZWN0ZWRcIiksXG4gICAgICAgIChhY3Rpb25Ob2RlLnJlYXNvbiA9IGVycm9yKSxcbiAgICAgICAgbm90aWZ5QWN0aW9uTGlzdGVuZXJzKGFjdGlvbk5vZGUpLFxuICAgICAgICAoYWN0aW9uTm9kZSA9IGFjdGlvbk5vZGUubmV4dCk7XG4gICAgd2hpbGUgKGFjdGlvbk5vZGUgIT09IGxhc3QpO1xuICB9XG4gIGFjdGlvblF1ZXVlLmFjdGlvbiA9IG51bGw7XG59XG5mdW5jdGlvbiBub3RpZnlBY3Rpb25MaXN0ZW5lcnMoYWN0aW9uTm9kZSkge1xuICBhY3Rpb25Ob2RlID0gYWN0aW9uTm9kZS5saXN0ZW5lcnM7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9uTm9kZS5sZW5ndGg7IGkrKykgKDAsIGFjdGlvbk5vZGVbaV0pKCk7XG59XG5mdW5jdGlvbiBhY3Rpb25TdGF0ZVJlZHVjZXIob2xkU3RhdGUsIG5ld1N0YXRlKSB7XG4gIHJldHVybiBuZXdTdGF0ZTtcbn1cbmZ1bmN0aW9uIG1vdW50QWN0aW9uU3RhdGUoYWN0aW9uLCBpbml0aWFsU3RhdGVQcm9wKSB7XG4gIGlmIChpc0h5ZHJhdGluZykge1xuICAgIHZhciBzc3JGb3JtU3RhdGUgPSB3b3JrSW5Qcm9ncmVzc1Jvb3QuZm9ybVN0YXRlO1xuICAgIGlmIChudWxsICE9PSBzc3JGb3JtU3RhdGUpIHtcbiAgICAgIGE6IHtcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDE7XG4gICAgICAgIGlmIChpc0h5ZHJhdGluZykge1xuICAgICAgICAgIGlmIChuZXh0SHlkcmF0YWJsZUluc3RhbmNlKSB7XG4gICAgICAgICAgICBiOiB7XG4gICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSBuZXh0SHlkcmF0YWJsZUluc3RhbmNlO1xuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIHZhciBpblJvb3RPclNpbmdsZXRvbiA9IHJvb3RPclNpbmdsZXRvbkNvbnRleHQ7XG4gICAgICAgICAgICAgICAgOCAhPT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwLm5vZGVUeXBlO1xuXG4gICAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIGlmICghaW5Sb290T3JTaW5nbGV0b24pIHtcbiAgICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9IG51bGw7XG4gICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSBnZXROZXh0SHlkcmF0YWJsZShcbiAgICAgICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMC5uZXh0U2libGluZ1xuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgaWYgKG51bGwgPT09IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCkge1xuICAgICAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgIGJyZWFrIGI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGluUm9vdE9yU2luZ2xldG9uID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwLmRhdGE7XG4gICAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgXCJGIVwiID09PSBpblJvb3RPclNpbmdsZXRvbiB8fCBcIkZcIiA9PT0gaW5Sb290T3JTaW5nbGV0b25cbiAgICAgICAgICAgICAgICAgID8gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwXG4gICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwKSB7XG4gICAgICAgICAgICAgIG5leHRIeWRyYXRhYmxlSW5zdGFuY2UgPSBnZXROZXh0SHlkcmF0YWJsZShcbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAubmV4dFNpYmxpbmdcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICBcIkYhXCIgPT09IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMC5kYXRhO1xuICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvd09uSHlkcmF0aW9uTWlzbWF0Y2goSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAhMTtcbiAgICAgIH1cbiAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmJiAoaW5pdGlhbFN0YXRlUHJvcCA9IHNzckZvcm1TdGF0ZVswXSk7XG4gICAgfVxuICB9XG4gIHNzckZvcm1TdGF0ZSA9IG1vdW50V29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHNzckZvcm1TdGF0ZS5tZW1vaXplZFN0YXRlID0gc3NyRm9ybVN0YXRlLmJhc2VTdGF0ZSA9IGluaXRpYWxTdGF0ZVByb3A7XG4gIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IHtcbiAgICBwZW5kaW5nOiBudWxsLFxuICAgIGxhbmVzOiAwLFxuICAgIGRpc3BhdGNoOiBudWxsLFxuICAgIGxhc3RSZW5kZXJlZFJlZHVjZXI6IGFjdGlvblN0YXRlUmVkdWNlcixcbiAgICBsYXN0UmVuZGVyZWRTdGF0ZTogaW5pdGlhbFN0YXRlUHJvcFxuICB9O1xuICBzc3JGb3JtU3RhdGUucXVldWUgPSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQ7XG4gIHNzckZvcm1TdGF0ZSA9IGRpc3BhdGNoU2V0U3RhdGUuYmluZChcbiAgICBudWxsLFxuICAgIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEsXG4gICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICk7XG4gIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5kaXNwYXRjaCA9IHNzckZvcm1TdGF0ZTtcbiAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gbW91bnRTdGF0ZUltcGwoITEpO1xuICBpblJvb3RPclNpbmdsZXRvbiA9IGRpc3BhdGNoT3B0aW1pc3RpY1NldFN0YXRlLmJpbmQoXG4gICAgbnVsbCxcbiAgICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLFxuICAgICExLFxuICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5xdWV1ZVxuICApO1xuICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAgPSB7XG4gICAgc3RhdGU6IGluaXRpYWxTdGF0ZVByb3AsXG4gICAgZGlzcGF0Y2g6IG51bGwsXG4gICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgcGVuZGluZzogbnVsbFxuICB9O1xuICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQucXVldWUgPSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDA7XG4gIHNzckZvcm1TdGF0ZSA9IGRpc3BhdGNoQWN0aW9uU3RhdGUuYmluZChcbiAgICBudWxsLFxuICAgIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEsXG4gICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwLFxuICAgIGluUm9vdE9yU2luZ2xldG9uLFxuICAgIHNzckZvcm1TdGF0ZVxuICApO1xuICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQkanNjb21wJDAuZGlzcGF0Y2ggPSBzc3JGb3JtU3RhdGU7XG4gIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5tZW1vaXplZFN0YXRlID0gYWN0aW9uO1xuICByZXR1cm4gW2luaXRpYWxTdGF0ZVByb3AsIHNzckZvcm1TdGF0ZSwgITFdO1xufVxuZnVuY3Rpb24gdXBkYXRlQWN0aW9uU3RhdGUoYWN0aW9uKSB7XG4gIHZhciBzdGF0ZUhvb2sgPSB1cGRhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgcmV0dXJuIHVwZGF0ZUFjdGlvblN0YXRlSW1wbChzdGF0ZUhvb2ssIGN1cnJlbnRIb29rLCBhY3Rpb24pO1xufVxuZnVuY3Rpb24gdXBkYXRlQWN0aW9uU3RhdGVJbXBsKHN0YXRlSG9vaywgY3VycmVudFN0YXRlSG9vaywgYWN0aW9uKSB7XG4gIGN1cnJlbnRTdGF0ZUhvb2sgPSB1cGRhdGVSZWR1Y2VySW1wbChcbiAgICBzdGF0ZUhvb2ssXG4gICAgY3VycmVudFN0YXRlSG9vayxcbiAgICBhY3Rpb25TdGF0ZVJlZHVjZXJcbiAgKVswXTtcbiAgc3RhdGVIb29rID0gdXBkYXRlUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlcilbMF07XG4gIGN1cnJlbnRTdGF0ZUhvb2sgPVxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiBjdXJyZW50U3RhdGVIb29rICYmXG4gICAgbnVsbCAhPT0gY3VycmVudFN0YXRlSG9vayAmJlxuICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGN1cnJlbnRTdGF0ZUhvb2sudGhlblxuICAgICAgPyB1c2VUaGVuYWJsZShjdXJyZW50U3RhdGVIb29rKVxuICAgICAgOiBjdXJyZW50U3RhdGVIb29rO1xuICB2YXIgYWN0aW9uUXVldWVIb29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCksXG4gICAgYWN0aW9uUXVldWUgPSBhY3Rpb25RdWV1ZUhvb2sucXVldWUsXG4gICAgZGlzcGF0Y2ggPSBhY3Rpb25RdWV1ZS5kaXNwYXRjaDtcbiAgYWN0aW9uICE9PSBhY3Rpb25RdWV1ZUhvb2subWVtb2l6ZWRTdGF0ZSAmJlxuICAgICgoY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMS5mbGFncyB8PSAyMDQ4KSxcbiAgICBwdXNoRWZmZWN0KFxuICAgICAgOSxcbiAgICAgIGFjdGlvblN0YXRlQWN0aW9uRWZmZWN0LmJpbmQobnVsbCwgYWN0aW9uUXVldWUsIGFjdGlvbiksXG4gICAgICB7IGRlc3Ryb3k6IHZvaWQgMCB9LFxuICAgICAgbnVsbFxuICAgICkpO1xuICByZXR1cm4gW2N1cnJlbnRTdGF0ZUhvb2ssIGRpc3BhdGNoLCBzdGF0ZUhvb2tdO1xufVxuZnVuY3Rpb24gYWN0aW9uU3RhdGVBY3Rpb25FZmZlY3QoYWN0aW9uUXVldWUsIGFjdGlvbikge1xuICBhY3Rpb25RdWV1ZS5hY3Rpb24gPSBhY3Rpb247XG59XG5mdW5jdGlvbiByZXJlbmRlckFjdGlvblN0YXRlKGFjdGlvbikge1xuICB2YXIgc3RhdGVIb29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCksXG4gICAgY3VycmVudFN0YXRlSG9vayA9IGN1cnJlbnRIb29rO1xuICBpZiAobnVsbCAhPT0gY3VycmVudFN0YXRlSG9vaylcbiAgICByZXR1cm4gdXBkYXRlQWN0aW9uU3RhdGVJbXBsKHN0YXRlSG9vaywgY3VycmVudFN0YXRlSG9vaywgYWN0aW9uKTtcbiAgdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHN0YXRlSG9vayA9IHN0YXRlSG9vay5tZW1vaXplZFN0YXRlO1xuICBjdXJyZW50U3RhdGVIb29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIHZhciBkaXNwYXRjaCA9IGN1cnJlbnRTdGF0ZUhvb2sucXVldWUuZGlzcGF0Y2g7XG4gIGN1cnJlbnRTdGF0ZUhvb2subWVtb2l6ZWRTdGF0ZSA9IGFjdGlvbjtcbiAgcmV0dXJuIFtzdGF0ZUhvb2ssIGRpc3BhdGNoLCAhMV07XG59XG5mdW5jdGlvbiBwdXNoRWZmZWN0KHRhZywgY3JlYXRlLCBpbnN0LCBkZXBzKSB7XG4gIHRhZyA9IHsgdGFnOiB0YWcsIGNyZWF0ZTogY3JlYXRlLCBpbnN0OiBpbnN0LCBkZXBzOiBkZXBzLCBuZXh0OiBudWxsIH07XG4gIGNyZWF0ZSA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEudXBkYXRlUXVldWU7XG4gIG51bGwgPT09IGNyZWF0ZSAmJlxuICAgICgoY3JlYXRlID0gY3JlYXRlRnVuY3Rpb25Db21wb25lbnRVcGRhdGVRdWV1ZSgpKSxcbiAgICAoY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMS51cGRhdGVRdWV1ZSA9IGNyZWF0ZSkpO1xuICBpbnN0ID0gY3JlYXRlLmxhc3RFZmZlY3Q7XG4gIG51bGwgPT09IGluc3RcbiAgICA/IChjcmVhdGUubGFzdEVmZmVjdCA9IHRhZy5uZXh0ID0gdGFnKVxuICAgIDogKChkZXBzID0gaW5zdC5uZXh0KSxcbiAgICAgIChpbnN0Lm5leHQgPSB0YWcpLFxuICAgICAgKHRhZy5uZXh0ID0gZGVwcyksXG4gICAgICAoY3JlYXRlLmxhc3RFZmZlY3QgPSB0YWcpKTtcbiAgcmV0dXJuIHRhZztcbn1cbmZ1bmN0aW9uIHVwZGF0ZVJlZigpIHtcbiAgcmV0dXJuIHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpLm1lbW9pemVkU3RhdGU7XG59XG5mdW5jdGlvbiBtb3VudEVmZmVjdEltcGwoZmliZXJGbGFncywgaG9va0ZsYWdzLCBjcmVhdGUsIGRlcHMpIHtcbiAgdmFyIGhvb2sgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLmZsYWdzIHw9IGZpYmVyRmxhZ3M7XG4gIGhvb2subWVtb2l6ZWRTdGF0ZSA9IHB1c2hFZmZlY3QoXG4gICAgMSB8IGhvb2tGbGFncyxcbiAgICBjcmVhdGUsXG4gICAgeyBkZXN0cm95OiB2b2lkIDAgfSxcbiAgICB2b2lkIDAgPT09IGRlcHMgPyBudWxsIDogZGVwc1xuICApO1xufVxuZnVuY3Rpb24gdXBkYXRlRWZmZWN0SW1wbChmaWJlckZsYWdzLCBob29rRmxhZ3MsIGNyZWF0ZSwgZGVwcykge1xuICB2YXIgaG9vayA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICBkZXBzID0gdm9pZCAwID09PSBkZXBzID8gbnVsbCA6IGRlcHM7XG4gIHZhciBpbnN0ID0gaG9vay5tZW1vaXplZFN0YXRlLmluc3Q7XG4gIG51bGwgIT09IGN1cnJlbnRIb29rICYmXG4gIG51bGwgIT09IGRlcHMgJiZcbiAgYXJlSG9va0lucHV0c0VxdWFsKGRlcHMsIGN1cnJlbnRIb29rLm1lbW9pemVkU3RhdGUuZGVwcylcbiAgICA/IChob29rLm1lbW9pemVkU3RhdGUgPSBwdXNoRWZmZWN0KGhvb2tGbGFncywgY3JlYXRlLCBpbnN0LCBkZXBzKSlcbiAgICA6ICgoY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMS5mbGFncyB8PSBmaWJlckZsYWdzKSxcbiAgICAgIChob29rLm1lbW9pemVkU3RhdGUgPSBwdXNoRWZmZWN0KDEgfCBob29rRmxhZ3MsIGNyZWF0ZSwgaW5zdCwgZGVwcykpKTtcbn1cbmZ1bmN0aW9uIG1vdW50RWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICBtb3VudEVmZmVjdEltcGwoODM5MDY1NiwgOCwgY3JlYXRlLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUVmZmVjdChjcmVhdGUsIGRlcHMpIHtcbiAgdXBkYXRlRWZmZWN0SW1wbCgyMDQ4LCA4LCBjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXBkYXRlSW5zZXJ0aW9uRWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gdXBkYXRlRWZmZWN0SW1wbCg0LCAyLCBjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gdXBkYXRlTGF5b3V0RWZmZWN0KGNyZWF0ZSwgZGVwcykge1xuICByZXR1cm4gdXBkYXRlRWZmZWN0SW1wbCg0LCA0LCBjcmVhdGUsIGRlcHMpO1xufVxuZnVuY3Rpb24gaW1wZXJhdGl2ZUhhbmRsZUVmZmVjdChjcmVhdGUsIHJlZikge1xuICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVmKSB7XG4gICAgY3JlYXRlID0gY3JlYXRlKCk7XG4gICAgdmFyIHJlZkNsZWFudXAgPSByZWYoY3JlYXRlKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVmQ2xlYW51cCA/IHJlZkNsZWFudXAoKSA6IHJlZihudWxsKTtcbiAgICB9O1xuICB9XG4gIGlmIChudWxsICE9PSByZWYgJiYgdm9pZCAwICE9PSByZWYpXG4gICAgcmV0dXJuIChcbiAgICAgIChjcmVhdGUgPSBjcmVhdGUoKSksXG4gICAgICAocmVmLmN1cnJlbnQgPSBjcmVhdGUpLFxuICAgICAgZnVuY3Rpb24gKCkge1xuICAgICAgICByZWYuY3VycmVudCA9IG51bGw7XG4gICAgICB9XG4gICAgKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUltcGVyYXRpdmVIYW5kbGUocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgZGVwcyA9IG51bGwgIT09IGRlcHMgJiYgdm9pZCAwICE9PSBkZXBzID8gZGVwcy5jb25jYXQoW3JlZl0pIDogbnVsbDtcbiAgdXBkYXRlRWZmZWN0SW1wbCg0LCA0LCBpbXBlcmF0aXZlSGFuZGxlRWZmZWN0LmJpbmQobnVsbCwgY3JlYXRlLCByZWYpLCBkZXBzKTtcbn1cbmZ1bmN0aW9uIG1vdW50RGVidWdWYWx1ZSgpIHt9XG5mdW5jdGlvbiB1cGRhdGVDYWxsYmFjayhjYWxsYmFjaywgZGVwcykge1xuICB2YXIgaG9vayA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICBkZXBzID0gdm9pZCAwID09PSBkZXBzID8gbnVsbCA6IGRlcHM7XG4gIHZhciBwcmV2U3RhdGUgPSBob29rLm1lbW9pemVkU3RhdGU7XG4gIGlmIChudWxsICE9PSBkZXBzICYmIGFyZUhvb2tJbnB1dHNFcXVhbChkZXBzLCBwcmV2U3RhdGVbMV0pKVxuICAgIHJldHVybiBwcmV2U3RhdGVbMF07XG4gIGhvb2subWVtb2l6ZWRTdGF0ZSA9IFtjYWxsYmFjaywgZGVwc107XG4gIHJldHVybiBjYWxsYmFjaztcbn1cbmZ1bmN0aW9uIHVwZGF0ZU1lbW8obmV4dENyZWF0ZSwgZGVwcykge1xuICB2YXIgaG9vayA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICBkZXBzID0gdm9pZCAwID09PSBkZXBzID8gbnVsbCA6IGRlcHM7XG4gIHZhciBwcmV2U3RhdGUgPSBob29rLm1lbW9pemVkU3RhdGU7XG4gIGlmIChudWxsICE9PSBkZXBzICYmIGFyZUhvb2tJbnB1dHNFcXVhbChkZXBzLCBwcmV2U3RhdGVbMV0pKVxuICAgIHJldHVybiBwcmV2U3RhdGVbMF07XG4gIHByZXZTdGF0ZSA9IG5leHRDcmVhdGUoKTtcbiAgaWYgKHNob3VsZERvdWJsZUludm9rZVVzZXJGbnNJbkhvb2tzREVWKSB7XG4gICAgc2V0SXNTdHJpY3RNb2RlRm9yRGV2dG9vbHMoITApO1xuICAgIHRyeSB7XG4gICAgICBuZXh0Q3JlYXRlKCk7XG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldElzU3RyaWN0TW9kZUZvckRldnRvb2xzKCExKTtcbiAgICB9XG4gIH1cbiAgaG9vay5tZW1vaXplZFN0YXRlID0gW3ByZXZTdGF0ZSwgZGVwc107XG4gIHJldHVybiBwcmV2U3RhdGU7XG59XG5mdW5jdGlvbiBtb3VudERlZmVycmVkVmFsdWVJbXBsKGhvb2ssIHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgaWYgKHZvaWQgMCA9PT0gaW5pdGlhbFZhbHVlIHx8IDAgIT09IChyZW5kZXJMYW5lcyAmIDEwNzM3NDE4MjQpKVxuICAgIHJldHVybiAoaG9vay5tZW1vaXplZFN0YXRlID0gdmFsdWUpO1xuICBob29rLm1lbW9pemVkU3RhdGUgPSBpbml0aWFsVmFsdWU7XG4gIGhvb2sgPSByZXF1ZXN0RGVmZXJyZWRMYW5lKCk7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEubGFuZXMgfD0gaG9vaztcbiAgd29ya0luUHJvZ3Jlc3NSb290U2tpcHBlZExhbmVzIHw9IGhvb2s7XG4gIHJldHVybiBpbml0aWFsVmFsdWU7XG59XG5mdW5jdGlvbiB1cGRhdGVEZWZlcnJlZFZhbHVlSW1wbChob29rLCBwcmV2VmFsdWUsIHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgaWYgKG9iamVjdElzKHZhbHVlLCBwcmV2VmFsdWUpKSByZXR1cm4gdmFsdWU7XG4gIGlmIChudWxsICE9PSBjdXJyZW50VHJlZUhpZGRlblN0YWNrQ3Vyc29yLmN1cnJlbnQpXG4gICAgcmV0dXJuIChcbiAgICAgIChob29rID0gbW91bnREZWZlcnJlZFZhbHVlSW1wbChob29rLCB2YWx1ZSwgaW5pdGlhbFZhbHVlKSksXG4gICAgICBvYmplY3RJcyhob29rLCBwcmV2VmFsdWUpIHx8IChkaWRSZWNlaXZlVXBkYXRlID0gITApLFxuICAgICAgaG9va1xuICAgICk7XG4gIGlmICgwID09PSAocmVuZGVyTGFuZXMgJiA0MikpXG4gICAgcmV0dXJuIChkaWRSZWNlaXZlVXBkYXRlID0gITApLCAoaG9vay5tZW1vaXplZFN0YXRlID0gdmFsdWUpO1xuICBob29rID0gcmVxdWVzdERlZmVycmVkTGFuZSgpO1xuICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLmxhbmVzIHw9IGhvb2s7XG4gIHdvcmtJblByb2dyZXNzUm9vdFNraXBwZWRMYW5lcyB8PSBob29rO1xuICByZXR1cm4gcHJldlZhbHVlO1xufVxuZnVuY3Rpb24gc3RhcnRUcmFuc2l0aW9uKGZpYmVyLCBxdWV1ZSwgcGVuZGluZ1N0YXRlLCBmaW5pc2hlZFN0YXRlLCBjYWxsYmFjaykge1xuICB2YXIgcHJldmlvdXNQcmlvcml0eSA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnA7XG4gIFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnAgPVxuICAgIDAgIT09IHByZXZpb3VzUHJpb3JpdHkgJiYgOCA+IHByZXZpb3VzUHJpb3JpdHkgPyBwcmV2aW91c1ByaW9yaXR5IDogODtcbiAgdmFyIHByZXZUcmFuc2l0aW9uID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCxcbiAgICBjdXJyZW50VHJhbnNpdGlvbiA9IHt9O1xuICBSZWFjdFNoYXJlZEludGVybmFscy5UID0gY3VycmVudFRyYW5zaXRpb247XG4gIGRpc3BhdGNoT3B0aW1pc3RpY1NldFN0YXRlKGZpYmVyLCAhMSwgcXVldWUsIHBlbmRpbmdTdGF0ZSk7XG4gIHRyeSB7XG4gICAgdmFyIHJldHVyblZhbHVlID0gY2FsbGJhY2soKSxcbiAgICAgIG9uU3RhcnRUcmFuc2l0aW9uRmluaXNoID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuUztcbiAgICBudWxsICE9PSBvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaCAmJlxuICAgICAgb25TdGFydFRyYW5zaXRpb25GaW5pc2goY3VycmVudFRyYW5zaXRpb24sIHJldHVyblZhbHVlKTtcbiAgICBpZiAoXG4gICAgICBudWxsICE9PSByZXR1cm5WYWx1ZSAmJlxuICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHJldHVyblZhbHVlICYmXG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZXR1cm5WYWx1ZS50aGVuXG4gICAgKSB7XG4gICAgICB2YXIgdGhlbmFibGVGb3JGaW5pc2hlZFN0YXRlID0gY2hhaW5UaGVuYWJsZVZhbHVlKFxuICAgICAgICByZXR1cm5WYWx1ZSxcbiAgICAgICAgZmluaXNoZWRTdGF0ZVxuICAgICAgKTtcbiAgICAgIGRpc3BhdGNoU2V0U3RhdGVJbnRlcm5hbChcbiAgICAgICAgZmliZXIsXG4gICAgICAgIHF1ZXVlLFxuICAgICAgICB0aGVuYWJsZUZvckZpbmlzaGVkU3RhdGUsXG4gICAgICAgIHJlcXVlc3RVcGRhdGVMYW5lKGZpYmVyKVxuICAgICAgKTtcbiAgICB9IGVsc2VcbiAgICAgIGRpc3BhdGNoU2V0U3RhdGVJbnRlcm5hbChcbiAgICAgICAgZmliZXIsXG4gICAgICAgIHF1ZXVlLFxuICAgICAgICBmaW5pc2hlZFN0YXRlLFxuICAgICAgICByZXF1ZXN0VXBkYXRlTGFuZShmaWJlcilcbiAgICAgICk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZGlzcGF0Y2hTZXRTdGF0ZUludGVybmFsKFxuICAgICAgZmliZXIsXG4gICAgICBxdWV1ZSxcbiAgICAgIHsgdGhlbjogZnVuY3Rpb24gKCkge30sIHN0YXR1czogXCJyZWplY3RlZFwiLCByZWFzb246IGVycm9yIH0sXG4gICAgICByZXF1ZXN0VXBkYXRlTGFuZSgpXG4gICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAoUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucCA9IHByZXZpb3VzUHJpb3JpdHkpLFxuICAgICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2VHJhbnNpdGlvbik7XG4gIH1cbn1cbmZ1bmN0aW9uIG5vb3AkMigpIHt9XG5mdW5jdGlvbiBzdGFydEhvc3RUcmFuc2l0aW9uKGZvcm1GaWJlciwgcGVuZGluZ1N0YXRlLCBhY3Rpb24sIGZvcm1EYXRhKSB7XG4gIGlmICg1ICE9PSBmb3JtRmliZXIudGFnKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ3NikpO1xuICB2YXIgcXVldWUgPSBlbnN1cmVGb3JtQ29tcG9uZW50SXNTdGF0ZWZ1bChmb3JtRmliZXIpLnF1ZXVlO1xuICBzdGFydFRyYW5zaXRpb24oXG4gICAgZm9ybUZpYmVyLFxuICAgIHF1ZXVlLFxuICAgIHBlbmRpbmdTdGF0ZSxcbiAgICBzaGFyZWROb3RQZW5kaW5nT2JqZWN0LFxuICAgIG51bGwgPT09IGFjdGlvblxuICAgICAgPyBub29wJDJcbiAgICAgIDogZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJlcXVlc3RGb3JtUmVzZXQkMShmb3JtRmliZXIpO1xuICAgICAgICAgIHJldHVybiBhY3Rpb24oZm9ybURhdGEpO1xuICAgICAgICB9XG4gICk7XG59XG5mdW5jdGlvbiBlbnN1cmVGb3JtQ29tcG9uZW50SXNTdGF0ZWZ1bChmb3JtRmliZXIpIHtcbiAgdmFyIGV4aXN0aW5nU3RhdGVIb29rID0gZm9ybUZpYmVyLm1lbW9pemVkU3RhdGU7XG4gIGlmIChudWxsICE9PSBleGlzdGluZ1N0YXRlSG9vaykgcmV0dXJuIGV4aXN0aW5nU3RhdGVIb29rO1xuICBleGlzdGluZ1N0YXRlSG9vayA9IHtcbiAgICBtZW1vaXplZFN0YXRlOiBzaGFyZWROb3RQZW5kaW5nT2JqZWN0LFxuICAgIGJhc2VTdGF0ZTogc2hhcmVkTm90UGVuZGluZ09iamVjdCxcbiAgICBiYXNlUXVldWU6IG51bGwsXG4gICAgcXVldWU6IHtcbiAgICAgIHBlbmRpbmc6IG51bGwsXG4gICAgICBsYW5lczogMCxcbiAgICAgIGRpc3BhdGNoOiBudWxsLFxuICAgICAgbGFzdFJlbmRlcmVkUmVkdWNlcjogYmFzaWNTdGF0ZVJlZHVjZXIsXG4gICAgICBsYXN0UmVuZGVyZWRTdGF0ZTogc2hhcmVkTm90UGVuZGluZ09iamVjdFxuICAgIH0sXG4gICAgbmV4dDogbnVsbFxuICB9O1xuICB2YXIgaW5pdGlhbFJlc2V0U3RhdGUgPSB7fTtcbiAgZXhpc3RpbmdTdGF0ZUhvb2submV4dCA9IHtcbiAgICBtZW1vaXplZFN0YXRlOiBpbml0aWFsUmVzZXRTdGF0ZSxcbiAgICBiYXNlU3RhdGU6IGluaXRpYWxSZXNldFN0YXRlLFxuICAgIGJhc2VRdWV1ZTogbnVsbCxcbiAgICBxdWV1ZToge1xuICAgICAgcGVuZGluZzogbnVsbCxcbiAgICAgIGxhbmVzOiAwLFxuICAgICAgZGlzcGF0Y2g6IG51bGwsXG4gICAgICBsYXN0UmVuZGVyZWRSZWR1Y2VyOiBiYXNpY1N0YXRlUmVkdWNlcixcbiAgICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBpbml0aWFsUmVzZXRTdGF0ZVxuICAgIH0sXG4gICAgbmV4dDogbnVsbFxuICB9O1xuICBmb3JtRmliZXIubWVtb2l6ZWRTdGF0ZSA9IGV4aXN0aW5nU3RhdGVIb29rO1xuICBmb3JtRmliZXIgPSBmb3JtRmliZXIuYWx0ZXJuYXRlO1xuICBudWxsICE9PSBmb3JtRmliZXIgJiYgKGZvcm1GaWJlci5tZW1vaXplZFN0YXRlID0gZXhpc3RpbmdTdGF0ZUhvb2spO1xuICByZXR1cm4gZXhpc3RpbmdTdGF0ZUhvb2s7XG59XG5mdW5jdGlvbiByZXF1ZXN0Rm9ybVJlc2V0JDEoZm9ybUZpYmVyKSB7XG4gIHZhciByZXNldFN0YXRlUXVldWUgPSBlbnN1cmVGb3JtQ29tcG9uZW50SXNTdGF0ZWZ1bChmb3JtRmliZXIpLm5leHQucXVldWU7XG4gIGRpc3BhdGNoU2V0U3RhdGVJbnRlcm5hbChmb3JtRmliZXIsIHJlc2V0U3RhdGVRdWV1ZSwge30sIHJlcXVlc3RVcGRhdGVMYW5lKCkpO1xufVxuZnVuY3Rpb24gdXNlSG9zdFRyYW5zaXRpb25TdGF0dXMoKSB7XG4gIHJldHVybiByZWFkQ29udGV4dChIb3N0VHJhbnNpdGlvbkNvbnRleHQpO1xufVxuZnVuY3Rpb24gdXBkYXRlSWQoKSB7XG4gIHJldHVybiB1cGRhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKS5tZW1vaXplZFN0YXRlO1xufVxuZnVuY3Rpb24gdXBkYXRlUmVmcmVzaCgpIHtcbiAgcmV0dXJuIHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpLm1lbW9pemVkU3RhdGU7XG59XG5mdW5jdGlvbiByZWZyZXNoQ2FjaGUoZmliZXIpIHtcbiAgZm9yICh2YXIgcHJvdmlkZXIgPSBmaWJlci5yZXR1cm47IG51bGwgIT09IHByb3ZpZGVyOyApIHtcbiAgICBzd2l0Y2ggKHByb3ZpZGVyLnRhZykge1xuICAgICAgY2FzZSAyNDpcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgdmFyIGxhbmUgPSByZXF1ZXN0VXBkYXRlTGFuZSgpO1xuICAgICAgICBmaWJlciA9IGNyZWF0ZVVwZGF0ZShsYW5lKTtcbiAgICAgICAgdmFyIHJvb3QkNjMgPSBlbnF1ZXVlVXBkYXRlKHByb3ZpZGVyLCBmaWJlciwgbGFuZSk7XG4gICAgICAgIG51bGwgIT09IHJvb3QkNjMgJiZcbiAgICAgICAgICAoc2NoZWR1bGVVcGRhdGVPbkZpYmVyKHJvb3QkNjMsIHByb3ZpZGVyLCBsYW5lKSxcbiAgICAgICAgICBlbnRhbmdsZVRyYW5zaXRpb25zKHJvb3QkNjMsIHByb3ZpZGVyLCBsYW5lKSk7XG4gICAgICAgIHByb3ZpZGVyID0geyBjYWNoZTogY3JlYXRlQ2FjaGUoKSB9O1xuICAgICAgICBmaWJlci5wYXlsb2FkID0gcHJvdmlkZXI7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgcHJvdmlkZXIgPSBwcm92aWRlci5yZXR1cm47XG4gIH1cbn1cbmZ1bmN0aW9uIGRpc3BhdGNoUmVkdWNlckFjdGlvbihmaWJlciwgcXVldWUsIGFjdGlvbikge1xuICB2YXIgbGFuZSA9IHJlcXVlc3RVcGRhdGVMYW5lKCk7XG4gIGFjdGlvbiA9IHtcbiAgICBsYW5lOiBsYW5lLFxuICAgIHJldmVydExhbmU6IDAsXG4gICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgaGFzRWFnZXJTdGF0ZTogITEsXG4gICAgZWFnZXJTdGF0ZTogbnVsbCxcbiAgICBuZXh0OiBudWxsXG4gIH07XG4gIGlzUmVuZGVyUGhhc2VVcGRhdGUoZmliZXIpXG4gICAgPyBlbnF1ZXVlUmVuZGVyUGhhc2VVcGRhdGUocXVldWUsIGFjdGlvbilcbiAgICA6ICgoYWN0aW9uID0gZW5xdWV1ZUNvbmN1cnJlbnRIb29rVXBkYXRlKGZpYmVyLCBxdWV1ZSwgYWN0aW9uLCBsYW5lKSksXG4gICAgICBudWxsICE9PSBhY3Rpb24gJiZcbiAgICAgICAgKHNjaGVkdWxlVXBkYXRlT25GaWJlcihhY3Rpb24sIGZpYmVyLCBsYW5lKSxcbiAgICAgICAgZW50YW5nbGVUcmFuc2l0aW9uVXBkYXRlKGFjdGlvbiwgcXVldWUsIGxhbmUpKSk7XG59XG5mdW5jdGlvbiBkaXNwYXRjaFNldFN0YXRlKGZpYmVyLCBxdWV1ZSwgYWN0aW9uKSB7XG4gIHZhciBsYW5lID0gcmVxdWVzdFVwZGF0ZUxhbmUoKTtcbiAgZGlzcGF0Y2hTZXRTdGF0ZUludGVybmFsKGZpYmVyLCBxdWV1ZSwgYWN0aW9uLCBsYW5lKTtcbn1cbmZ1bmN0aW9uIGRpc3BhdGNoU2V0U3RhdGVJbnRlcm5hbChmaWJlciwgcXVldWUsIGFjdGlvbiwgbGFuZSkge1xuICB2YXIgdXBkYXRlID0ge1xuICAgIGxhbmU6IGxhbmUsXG4gICAgcmV2ZXJ0TGFuZTogMCxcbiAgICBhY3Rpb246IGFjdGlvbixcbiAgICBoYXNFYWdlclN0YXRlOiAhMSxcbiAgICBlYWdlclN0YXRlOiBudWxsLFxuICAgIG5leHQ6IG51bGxcbiAgfTtcbiAgaWYgKGlzUmVuZGVyUGhhc2VVcGRhdGUoZmliZXIpKSBlbnF1ZXVlUmVuZGVyUGhhc2VVcGRhdGUocXVldWUsIHVwZGF0ZSk7XG4gIGVsc2Uge1xuICAgIHZhciBhbHRlcm5hdGUgPSBmaWJlci5hbHRlcm5hdGU7XG4gICAgaWYgKFxuICAgICAgMCA9PT0gZmliZXIubGFuZXMgJiZcbiAgICAgIChudWxsID09PSBhbHRlcm5hdGUgfHwgMCA9PT0gYWx0ZXJuYXRlLmxhbmVzKSAmJlxuICAgICAgKChhbHRlcm5hdGUgPSBxdWV1ZS5sYXN0UmVuZGVyZWRSZWR1Y2VyKSwgbnVsbCAhPT0gYWx0ZXJuYXRlKVxuICAgIClcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSBxdWV1ZS5sYXN0UmVuZGVyZWRTdGF0ZSxcbiAgICAgICAgICBlYWdlclN0YXRlID0gYWx0ZXJuYXRlKGN1cnJlbnRTdGF0ZSwgYWN0aW9uKTtcbiAgICAgICAgdXBkYXRlLmhhc0VhZ2VyU3RhdGUgPSAhMDtcbiAgICAgICAgdXBkYXRlLmVhZ2VyU3RhdGUgPSBlYWdlclN0YXRlO1xuICAgICAgICBpZiAob2JqZWN0SXMoZWFnZXJTdGF0ZSwgY3VycmVudFN0YXRlKSlcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgZW5xdWV1ZVVwZGF0ZSQxKGZpYmVyLCBxdWV1ZSwgdXBkYXRlLCAwKSxcbiAgICAgICAgICAgIG51bGwgPT09IHdvcmtJblByb2dyZXNzUm9vdCAmJiBmaW5pc2hRdWV1ZWluZ0NvbmN1cnJlbnRVcGRhdGVzKCksXG4gICAgICAgICAgICAhMVxuICAgICAgICAgICk7XG4gICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgIH1cbiAgICBhY3Rpb24gPSBlbnF1ZXVlQ29uY3VycmVudEhvb2tVcGRhdGUoZmliZXIsIHF1ZXVlLCB1cGRhdGUsIGxhbmUpO1xuICAgIGlmIChudWxsICE9PSBhY3Rpb24pXG4gICAgICByZXR1cm4gKFxuICAgICAgICBzY2hlZHVsZVVwZGF0ZU9uRmliZXIoYWN0aW9uLCBmaWJlciwgbGFuZSksXG4gICAgICAgIGVudGFuZ2xlVHJhbnNpdGlvblVwZGF0ZShhY3Rpb24sIHF1ZXVlLCBsYW5lKSxcbiAgICAgICAgITBcbiAgICAgICk7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gZGlzcGF0Y2hPcHRpbWlzdGljU2V0U3RhdGUoZmliZXIsIHRocm93SWZEdXJpbmdSZW5kZXIsIHF1ZXVlLCBhY3Rpb24pIHtcbiAgYWN0aW9uID0ge1xuICAgIGxhbmU6IDIsXG4gICAgcmV2ZXJ0TGFuZTogcmVxdWVzdFRyYW5zaXRpb25MYW5lKCksXG4gICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgaGFzRWFnZXJTdGF0ZTogITEsXG4gICAgZWFnZXJTdGF0ZTogbnVsbCxcbiAgICBuZXh0OiBudWxsXG4gIH07XG4gIGlmIChpc1JlbmRlclBoYXNlVXBkYXRlKGZpYmVyKSkge1xuICAgIGlmICh0aHJvd0lmRHVyaW5nUmVuZGVyKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ3OSkpO1xuICB9IGVsc2VcbiAgICAodGhyb3dJZkR1cmluZ1JlbmRlciA9IGVucXVldWVDb25jdXJyZW50SG9va1VwZGF0ZShcbiAgICAgIGZpYmVyLFxuICAgICAgcXVldWUsXG4gICAgICBhY3Rpb24sXG4gICAgICAyXG4gICAgKSksXG4gICAgICBudWxsICE9PSB0aHJvd0lmRHVyaW5nUmVuZGVyICYmXG4gICAgICAgIHNjaGVkdWxlVXBkYXRlT25GaWJlcih0aHJvd0lmRHVyaW5nUmVuZGVyLCBmaWJlciwgMik7XG59XG5mdW5jdGlvbiBpc1JlbmRlclBoYXNlVXBkYXRlKGZpYmVyKSB7XG4gIHZhciBhbHRlcm5hdGUgPSBmaWJlci5hbHRlcm5hdGU7XG4gIHJldHVybiAoXG4gICAgZmliZXIgPT09IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgfHxcbiAgICAobnVsbCAhPT0gYWx0ZXJuYXRlICYmIGFsdGVybmF0ZSA9PT0gY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMSlcbiAgKTtcbn1cbmZ1bmN0aW9uIGVucXVldWVSZW5kZXJQaGFzZVVwZGF0ZShxdWV1ZSwgdXBkYXRlKSB7XG4gIGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGVEdXJpbmdUaGlzUGFzcyA9IGRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUgPVxuICAgICEwO1xuICB2YXIgcGVuZGluZyA9IHF1ZXVlLnBlbmRpbmc7XG4gIG51bGwgPT09IHBlbmRpbmdcbiAgICA/ICh1cGRhdGUubmV4dCA9IHVwZGF0ZSlcbiAgICA6ICgodXBkYXRlLm5leHQgPSBwZW5kaW5nLm5leHQpLCAocGVuZGluZy5uZXh0ID0gdXBkYXRlKSk7XG4gIHF1ZXVlLnBlbmRpbmcgPSB1cGRhdGU7XG59XG5mdW5jdGlvbiBlbnRhbmdsZVRyYW5zaXRpb25VcGRhdGUocm9vdCwgcXVldWUsIGxhbmUpIHtcbiAgaWYgKDAgIT09IChsYW5lICYgNDE5NDE3NikpIHtcbiAgICB2YXIgcXVldWVMYW5lcyA9IHF1ZXVlLmxhbmVzO1xuICAgIHF1ZXVlTGFuZXMgJj0gcm9vdC5wZW5kaW5nTGFuZXM7XG4gICAgbGFuZSB8PSBxdWV1ZUxhbmVzO1xuICAgIHF1ZXVlLmxhbmVzID0gbGFuZTtcbiAgICBtYXJrUm9vdEVudGFuZ2xlZChyb290LCBsYW5lKTtcbiAgfVxufVxudmFyIENvbnRleHRPbmx5RGlzcGF0Y2hlciA9IHtcbiAgcmVhZENvbnRleHQ6IHJlYWRDb250ZXh0LFxuICB1c2U6IHVzZSxcbiAgdXNlQ2FsbGJhY2s6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlQ29udGV4dDogdGhyb3dJbnZhbGlkSG9va0Vycm9yLFxuICB1c2VFZmZlY3Q6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogdGhyb3dJbnZhbGlkSG9va0Vycm9yLFxuICB1c2VMYXlvdXRFZmZlY3Q6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0OiB0aHJvd0ludmFsaWRIb29rRXJyb3IsXG4gIHVzZU1lbW86IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlUmVkdWNlcjogdGhyb3dJbnZhbGlkSG9va0Vycm9yLFxuICB1c2VSZWY6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlU3RhdGU6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlRGVidWdWYWx1ZTogdGhyb3dJbnZhbGlkSG9va0Vycm9yLFxuICB1c2VEZWZlcnJlZFZhbHVlOiB0aHJvd0ludmFsaWRIb29rRXJyb3IsXG4gIHVzZVRyYW5zaXRpb246IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlU3luY0V4dGVybmFsU3RvcmU6IHRocm93SW52YWxpZEhvb2tFcnJvcixcbiAgdXNlSWQ6IHRocm93SW52YWxpZEhvb2tFcnJvclxufTtcbkNvbnRleHRPbmx5RGlzcGF0Y2hlci51c2VDYWNoZVJlZnJlc2ggPSB0aHJvd0ludmFsaWRIb29rRXJyb3I7XG5Db250ZXh0T25seURpc3BhdGNoZXIudXNlTWVtb0NhY2hlID0gdGhyb3dJbnZhbGlkSG9va0Vycm9yO1xuQ29udGV4dE9ubHlEaXNwYXRjaGVyLnVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzID0gdGhyb3dJbnZhbGlkSG9va0Vycm9yO1xuQ29udGV4dE9ubHlEaXNwYXRjaGVyLnVzZUZvcm1TdGF0ZSA9IHRocm93SW52YWxpZEhvb2tFcnJvcjtcbkNvbnRleHRPbmx5RGlzcGF0Y2hlci51c2VBY3Rpb25TdGF0ZSA9IHRocm93SW52YWxpZEhvb2tFcnJvcjtcbkNvbnRleHRPbmx5RGlzcGF0Y2hlci51c2VPcHRpbWlzdGljID0gdGhyb3dJbnZhbGlkSG9va0Vycm9yO1xudmFyIEhvb2tzRGlzcGF0Y2hlck9uTW91bnQgPSB7XG4gIHJlYWRDb250ZXh0OiByZWFkQ29udGV4dCxcbiAgdXNlOiB1c2UsXG4gIHVzZUNhbGxiYWNrOiBmdW5jdGlvbiAoY2FsbGJhY2ssIGRlcHMpIHtcbiAgICBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpLm1lbW9pemVkU3RhdGUgPSBbXG4gICAgICBjYWxsYmFjayxcbiAgICAgIHZvaWQgMCA9PT0gZGVwcyA/IG51bGwgOiBkZXBzXG4gICAgXTtcbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH0sXG4gIHVzZUNvbnRleHQ6IHJlYWRDb250ZXh0LFxuICB1c2VFZmZlY3Q6IG1vdW50RWZmZWN0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlOiBmdW5jdGlvbiAocmVmLCBjcmVhdGUsIGRlcHMpIHtcbiAgICBkZXBzID0gbnVsbCAhPT0gZGVwcyAmJiB2b2lkIDAgIT09IGRlcHMgPyBkZXBzLmNvbmNhdChbcmVmXSkgOiBudWxsO1xuICAgIG1vdW50RWZmZWN0SW1wbChcbiAgICAgIDQxOTQzMDgsXG4gICAgICA0LFxuICAgICAgaW1wZXJhdGl2ZUhhbmRsZUVmZmVjdC5iaW5kKG51bGwsIGNyZWF0ZSwgcmVmKSxcbiAgICAgIGRlcHNcbiAgICApO1xuICB9LFxuICB1c2VMYXlvdXRFZmZlY3Q6IGZ1bmN0aW9uIChjcmVhdGUsIGRlcHMpIHtcbiAgICByZXR1cm4gbW91bnRFZmZlY3RJbXBsKDQxOTQzMDgsIDQsIGNyZWF0ZSwgZGVwcyk7XG4gIH0sXG4gIHVzZUluc2VydGlvbkVmZmVjdDogZnVuY3Rpb24gKGNyZWF0ZSwgZGVwcykge1xuICAgIG1vdW50RWZmZWN0SW1wbCg0LCAyLCBjcmVhdGUsIGRlcHMpO1xuICB9LFxuICB1c2VNZW1vOiBmdW5jdGlvbiAobmV4dENyZWF0ZSwgZGVwcykge1xuICAgIHZhciBob29rID0gbW91bnRXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgICBkZXBzID0gdm9pZCAwID09PSBkZXBzID8gbnVsbCA6IGRlcHM7XG4gICAgdmFyIG5leHRWYWx1ZSA9IG5leHRDcmVhdGUoKTtcbiAgICBpZiAoc2hvdWxkRG91YmxlSW52b2tlVXNlckZuc0luSG9va3NERVYpIHtcbiAgICAgIHNldElzU3RyaWN0TW9kZUZvckRldnRvb2xzKCEwKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIG5leHRDcmVhdGUoKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldElzU3RyaWN0TW9kZUZvckRldnRvb2xzKCExKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaG9vay5tZW1vaXplZFN0YXRlID0gW25leHRWYWx1ZSwgZGVwc107XG4gICAgcmV0dXJuIG5leHRWYWx1ZTtcbiAgfSxcbiAgdXNlUmVkdWNlcjogZnVuY3Rpb24gKHJlZHVjZXIsIGluaXRpYWxBcmcsIGluaXQpIHtcbiAgICB2YXIgaG9vayA9IG1vdW50V29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gICAgaWYgKHZvaWQgMCAhPT0gaW5pdCkge1xuICAgICAgdmFyIGluaXRpYWxTdGF0ZSA9IGluaXQoaW5pdGlhbEFyZyk7XG4gICAgICBpZiAoc2hvdWxkRG91YmxlSW52b2tlVXNlckZuc0luSG9va3NERVYpIHtcbiAgICAgICAgc2V0SXNTdHJpY3RNb2RlRm9yRGV2dG9vbHMoITApO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluaXQoaW5pdGlhbEFyZyk7XG4gICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgc2V0SXNTdHJpY3RNb2RlRm9yRGV2dG9vbHMoITEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGluaXRpYWxTdGF0ZSA9IGluaXRpYWxBcmc7XG4gICAgaG9vay5tZW1vaXplZFN0YXRlID0gaG9vay5iYXNlU3RhdGUgPSBpbml0aWFsU3RhdGU7XG4gICAgcmVkdWNlciA9IHtcbiAgICAgIHBlbmRpbmc6IG51bGwsXG4gICAgICBsYW5lczogMCxcbiAgICAgIGRpc3BhdGNoOiBudWxsLFxuICAgICAgbGFzdFJlbmRlcmVkUmVkdWNlcjogcmVkdWNlcixcbiAgICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBpbml0aWFsU3RhdGVcbiAgICB9O1xuICAgIGhvb2sucXVldWUgPSByZWR1Y2VyO1xuICAgIHJlZHVjZXIgPSByZWR1Y2VyLmRpc3BhdGNoID0gZGlzcGF0Y2hSZWR1Y2VyQWN0aW9uLmJpbmQoXG4gICAgICBudWxsLFxuICAgICAgY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMSxcbiAgICAgIHJlZHVjZXJcbiAgICApO1xuICAgIHJldHVybiBbaG9vay5tZW1vaXplZFN0YXRlLCByZWR1Y2VyXTtcbiAgfSxcbiAgdXNlUmVmOiBmdW5jdGlvbiAoaW5pdGlhbFZhbHVlKSB7XG4gICAgdmFyIGhvb2sgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgIGluaXRpYWxWYWx1ZSA9IHsgY3VycmVudDogaW5pdGlhbFZhbHVlIH07XG4gICAgcmV0dXJuIChob29rLm1lbW9pemVkU3RhdGUgPSBpbml0aWFsVmFsdWUpO1xuICB9LFxuICB1c2VTdGF0ZTogZnVuY3Rpb24gKGluaXRpYWxTdGF0ZSkge1xuICAgIGluaXRpYWxTdGF0ZSA9IG1vdW50U3RhdGVJbXBsKGluaXRpYWxTdGF0ZSk7XG4gICAgdmFyIHF1ZXVlID0gaW5pdGlhbFN0YXRlLnF1ZXVlLFxuICAgICAgZGlzcGF0Y2ggPSBkaXNwYXRjaFNldFN0YXRlLmJpbmQobnVsbCwgY3VycmVudGx5UmVuZGVyaW5nRmliZXIkMSwgcXVldWUpO1xuICAgIHF1ZXVlLmRpc3BhdGNoID0gZGlzcGF0Y2g7XG4gICAgcmV0dXJuIFtpbml0aWFsU3RhdGUubWVtb2l6ZWRTdGF0ZSwgZGlzcGF0Y2hdO1xuICB9LFxuICB1c2VEZWJ1Z1ZhbHVlOiBtb3VudERlYnVnVmFsdWUsXG4gIHVzZURlZmVycmVkVmFsdWU6IGZ1bmN0aW9uICh2YWx1ZSwgaW5pdGlhbFZhbHVlKSB7XG4gICAgdmFyIGhvb2sgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgIHJldHVybiBtb3VudERlZmVycmVkVmFsdWVJbXBsKGhvb2ssIHZhbHVlLCBpbml0aWFsVmFsdWUpO1xuICB9LFxuICB1c2VUcmFuc2l0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHN0YXRlSG9vayA9IG1vdW50U3RhdGVJbXBsKCExKTtcbiAgICBzdGF0ZUhvb2sgPSBzdGFydFRyYW5zaXRpb24uYmluZChcbiAgICAgIG51bGwsXG4gICAgICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLFxuICAgICAgc3RhdGVIb29rLnF1ZXVlLFxuICAgICAgITAsXG4gICAgICAhMVxuICAgICk7XG4gICAgbW91bnRXb3JrSW5Qcm9ncmVzc0hvb2soKS5tZW1vaXplZFN0YXRlID0gc3RhdGVIb29rO1xuICAgIHJldHVybiBbITEsIHN0YXRlSG9va107XG4gIH0sXG4gIHVzZVN5bmNFeHRlcm5hbFN0b3JlOiBmdW5jdGlvbiAoc3Vic2NyaWJlLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpIHtcbiAgICB2YXIgZmliZXIgPSBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLFxuICAgICAgaG9vayA9IG1vdW50V29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gICAgaWYgKGlzSHlkcmF0aW5nKSB7XG4gICAgICBpZiAodm9pZCAwID09PSBnZXRTZXJ2ZXJTbmFwc2hvdClcbiAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0MDcpKTtcbiAgICAgIGdldFNlcnZlclNuYXBzaG90ID0gZ2V0U2VydmVyU25hcHNob3QoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZ2V0U2VydmVyU25hcHNob3QgPSBnZXRTbmFwc2hvdCgpO1xuICAgICAgaWYgKG51bGwgPT09IHdvcmtJblByb2dyZXNzUm9vdCkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzNDkpKTtcbiAgICAgIDAgIT09ICh3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmIDYwKSB8fFxuICAgICAgICBwdXNoU3RvcmVDb25zaXN0ZW5jeUNoZWNrKGZpYmVyLCBnZXRTbmFwc2hvdCwgZ2V0U2VydmVyU25hcHNob3QpO1xuICAgIH1cbiAgICBob29rLm1lbW9pemVkU3RhdGUgPSBnZXRTZXJ2ZXJTbmFwc2hvdDtcbiAgICB2YXIgaW5zdCA9IHsgdmFsdWU6IGdldFNlcnZlclNuYXBzaG90LCBnZXRTbmFwc2hvdDogZ2V0U25hcHNob3QgfTtcbiAgICBob29rLnF1ZXVlID0gaW5zdDtcbiAgICBtb3VudEVmZmVjdChzdWJzY3JpYmVUb1N0b3JlLmJpbmQobnVsbCwgZmliZXIsIGluc3QsIHN1YnNjcmliZSksIFtcbiAgICAgIHN1YnNjcmliZVxuICAgIF0pO1xuICAgIGZpYmVyLmZsYWdzIHw9IDIwNDg7XG4gICAgcHVzaEVmZmVjdChcbiAgICAgIDksXG4gICAgICB1cGRhdGVTdG9yZUluc3RhbmNlLmJpbmQoXG4gICAgICAgIG51bGwsXG4gICAgICAgIGZpYmVyLFxuICAgICAgICBpbnN0LFxuICAgICAgICBnZXRTZXJ2ZXJTbmFwc2hvdCxcbiAgICAgICAgZ2V0U25hcHNob3RcbiAgICAgICksXG4gICAgICB7IGRlc3Ryb3k6IHZvaWQgMCB9LFxuICAgICAgbnVsbFxuICAgICk7XG4gICAgcmV0dXJuIGdldFNlcnZlclNuYXBzaG90O1xuICB9LFxuICB1c2VJZDogZnVuY3Rpb24gKCkge1xuICAgIHZhciBob29rID0gbW91bnRXb3JrSW5Qcm9ncmVzc0hvb2soKSxcbiAgICAgIGlkZW50aWZpZXJQcmVmaXggPSB3b3JrSW5Qcm9ncmVzc1Jvb3QuaWRlbnRpZmllclByZWZpeDtcbiAgICBpZiAoaXNIeWRyYXRpbmcpIHtcbiAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSB0cmVlQ29udGV4dE92ZXJmbG93O1xuICAgICAgdmFyIGlkV2l0aExlYWRpbmdCaXQgPSB0cmVlQ29udGV4dElkO1xuICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID1cbiAgICAgICAgKFxuICAgICAgICAgIGlkV2l0aExlYWRpbmdCaXQgJiB+KDEgPDwgKDMyIC0gY2x6MzIoaWRXaXRoTGVhZGluZ0JpdCkgLSAxKSlcbiAgICAgICAgKS50b1N0cmluZygzMikgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQ7XG4gICAgICBpZGVudGlmaWVyUHJlZml4ID1cbiAgICAgICAgXCI6XCIgKyBpZGVudGlmaWVyUHJlZml4ICsgXCJSXCIgKyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQ7XG4gICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBsb2NhbElkQ291bnRlcisrO1xuICAgICAgMCA8IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmJlxuICAgICAgICAoaWRlbnRpZmllclByZWZpeCArPSBcIkhcIiArIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC50b1N0cmluZygzMikpO1xuICAgICAgaWRlbnRpZmllclByZWZpeCArPSBcIjpcIjtcbiAgICB9IGVsc2VcbiAgICAgIChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBnbG9iYWxDbGllbnRJZENvdW50ZXIrKyksXG4gICAgICAgIChpZGVudGlmaWVyUHJlZml4ID1cbiAgICAgICAgICBcIjpcIiArXG4gICAgICAgICAgaWRlbnRpZmllclByZWZpeCArXG4gICAgICAgICAgXCJyXCIgK1xuICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC50b1N0cmluZygzMikgK1xuICAgICAgICAgIFwiOlwiKTtcbiAgICByZXR1cm4gKGhvb2subWVtb2l6ZWRTdGF0ZSA9IGlkZW50aWZpZXJQcmVmaXgpO1xuICB9LFxuICB1c2VDYWNoZVJlZnJlc2g6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gKG1vdW50V29ya0luUHJvZ3Jlc3NIb29rKCkubWVtb2l6ZWRTdGF0ZSA9IHJlZnJlc2hDYWNoZS5iaW5kKFxuICAgICAgbnVsbCxcbiAgICAgIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDFcbiAgICApKTtcbiAgfVxufTtcbkhvb2tzRGlzcGF0Y2hlck9uTW91bnQudXNlTWVtb0NhY2hlID0gdXNlTWVtb0NhY2hlO1xuSG9va3NEaXNwYXRjaGVyT25Nb3VudC51c2VIb3N0VHJhbnNpdGlvblN0YXR1cyA9IHVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzO1xuSG9va3NEaXNwYXRjaGVyT25Nb3VudC51c2VGb3JtU3RhdGUgPSBtb3VudEFjdGlvblN0YXRlO1xuSG9va3NEaXNwYXRjaGVyT25Nb3VudC51c2VBY3Rpb25TdGF0ZSA9IG1vdW50QWN0aW9uU3RhdGU7XG5Ib29rc0Rpc3BhdGNoZXJPbk1vdW50LnVzZU9wdGltaXN0aWMgPSBmdW5jdGlvbiAocGFzc3Rocm91Z2gpIHtcbiAgdmFyIGhvb2sgPSBtb3VudFdvcmtJblByb2dyZXNzSG9vaygpO1xuICBob29rLm1lbW9pemVkU3RhdGUgPSBob29rLmJhc2VTdGF0ZSA9IHBhc3N0aHJvdWdoO1xuICB2YXIgcXVldWUgPSB7XG4gICAgcGVuZGluZzogbnVsbCxcbiAgICBsYW5lczogMCxcbiAgICBkaXNwYXRjaDogbnVsbCxcbiAgICBsYXN0UmVuZGVyZWRSZWR1Y2VyOiBudWxsLFxuICAgIGxhc3RSZW5kZXJlZFN0YXRlOiBudWxsXG4gIH07XG4gIGhvb2sucXVldWUgPSBxdWV1ZTtcbiAgaG9vayA9IGRpc3BhdGNoT3B0aW1pc3RpY1NldFN0YXRlLmJpbmQoXG4gICAgbnVsbCxcbiAgICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciQxLFxuICAgICEwLFxuICAgIHF1ZXVlXG4gICk7XG4gIHF1ZXVlLmRpc3BhdGNoID0gaG9vaztcbiAgcmV0dXJuIFtwYXNzdGhyb3VnaCwgaG9va107XG59O1xudmFyIEhvb2tzRGlzcGF0Y2hlck9uVXBkYXRlID0ge1xuICByZWFkQ29udGV4dDogcmVhZENvbnRleHQsXG4gIHVzZTogdXNlLFxuICB1c2VDYWxsYmFjazogdXBkYXRlQ2FsbGJhY2ssXG4gIHVzZUNvbnRleHQ6IHJlYWRDb250ZXh0LFxuICB1c2VFZmZlY3Q6IHVwZGF0ZUVmZmVjdCxcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZTogdXBkYXRlSW1wZXJhdGl2ZUhhbmRsZSxcbiAgdXNlSW5zZXJ0aW9uRWZmZWN0OiB1cGRhdGVJbnNlcnRpb25FZmZlY3QsXG4gIHVzZUxheW91dEVmZmVjdDogdXBkYXRlTGF5b3V0RWZmZWN0LFxuICB1c2VNZW1vOiB1cGRhdGVNZW1vLFxuICB1c2VSZWR1Y2VyOiB1cGRhdGVSZWR1Y2VyLFxuICB1c2VSZWY6IHVwZGF0ZVJlZixcbiAgdXNlU3RhdGU6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdXBkYXRlUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlcik7XG4gIH0sXG4gIHVzZURlYnVnVmFsdWU6IG1vdW50RGVidWdWYWx1ZSxcbiAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgICB2YXIgaG9vayA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgIHJldHVybiB1cGRhdGVEZWZlcnJlZFZhbHVlSW1wbChcbiAgICAgIGhvb2ssXG4gICAgICBjdXJyZW50SG9vay5tZW1vaXplZFN0YXRlLFxuICAgICAgdmFsdWUsXG4gICAgICBpbml0aWFsVmFsdWVcbiAgICApO1xuICB9LFxuICB1c2VUcmFuc2l0aW9uOiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGJvb2xlYW5PclRoZW5hYmxlID0gdXBkYXRlUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlcilbMF0sXG4gICAgICBzdGFydCA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpLm1lbW9pemVkU3RhdGU7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiYm9vbGVhblwiID09PSB0eXBlb2YgYm9vbGVhbk9yVGhlbmFibGVcbiAgICAgICAgPyBib29sZWFuT3JUaGVuYWJsZVxuICAgICAgICA6IHVzZVRoZW5hYmxlKGJvb2xlYW5PclRoZW5hYmxlKSxcbiAgICAgIHN0YXJ0XG4gICAgXTtcbiAgfSxcbiAgdXNlU3luY0V4dGVybmFsU3RvcmU6IHVwZGF0ZVN5bmNFeHRlcm5hbFN0b3JlLFxuICB1c2VJZDogdXBkYXRlSWRcbn07XG5Ib29rc0Rpc3BhdGNoZXJPblVwZGF0ZS51c2VDYWNoZVJlZnJlc2ggPSB1cGRhdGVSZWZyZXNoO1xuSG9va3NEaXNwYXRjaGVyT25VcGRhdGUudXNlTWVtb0NhY2hlID0gdXNlTWVtb0NhY2hlO1xuSG9va3NEaXNwYXRjaGVyT25VcGRhdGUudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMgPSB1c2VIb3N0VHJhbnNpdGlvblN0YXR1cztcbkhvb2tzRGlzcGF0Y2hlck9uVXBkYXRlLnVzZUZvcm1TdGF0ZSA9IHVwZGF0ZUFjdGlvblN0YXRlO1xuSG9va3NEaXNwYXRjaGVyT25VcGRhdGUudXNlQWN0aW9uU3RhdGUgPSB1cGRhdGVBY3Rpb25TdGF0ZTtcbkhvb2tzRGlzcGF0Y2hlck9uVXBkYXRlLnVzZU9wdGltaXN0aWMgPSBmdW5jdGlvbiAocGFzc3Rocm91Z2gsIHJlZHVjZXIpIHtcbiAgdmFyIGhvb2sgPSB1cGRhdGVXb3JrSW5Qcm9ncmVzc0hvb2soKTtcbiAgcmV0dXJuIHVwZGF0ZU9wdGltaXN0aWNJbXBsKGhvb2ssIGN1cnJlbnRIb29rLCBwYXNzdGhyb3VnaCwgcmVkdWNlcik7XG59O1xudmFyIEhvb2tzRGlzcGF0Y2hlck9uUmVyZW5kZXIgPSB7XG4gIHJlYWRDb250ZXh0OiByZWFkQ29udGV4dCxcbiAgdXNlOiB1c2UsXG4gIHVzZUNhbGxiYWNrOiB1cGRhdGVDYWxsYmFjayxcbiAgdXNlQ29udGV4dDogcmVhZENvbnRleHQsXG4gIHVzZUVmZmVjdDogdXBkYXRlRWZmZWN0LFxuICB1c2VJbXBlcmF0aXZlSGFuZGxlOiB1cGRhdGVJbXBlcmF0aXZlSGFuZGxlLFxuICB1c2VJbnNlcnRpb25FZmZlY3Q6IHVwZGF0ZUluc2VydGlvbkVmZmVjdCxcbiAgdXNlTGF5b3V0RWZmZWN0OiB1cGRhdGVMYXlvdXRFZmZlY3QsXG4gIHVzZU1lbW86IHVwZGF0ZU1lbW8sXG4gIHVzZVJlZHVjZXI6IHJlcmVuZGVyUmVkdWNlcixcbiAgdXNlUmVmOiB1cGRhdGVSZWYsXG4gIHVzZVN0YXRlOiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHJlcmVuZGVyUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlcik7XG4gIH0sXG4gIHVzZURlYnVnVmFsdWU6IG1vdW50RGVidWdWYWx1ZSxcbiAgdXNlRGVmZXJyZWRWYWx1ZTogZnVuY3Rpb24gKHZhbHVlLCBpbml0aWFsVmFsdWUpIHtcbiAgICB2YXIgaG9vayA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpO1xuICAgIHJldHVybiBudWxsID09PSBjdXJyZW50SG9va1xuICAgICAgPyBtb3VudERlZmVycmVkVmFsdWVJbXBsKGhvb2ssIHZhbHVlLCBpbml0aWFsVmFsdWUpXG4gICAgICA6IHVwZGF0ZURlZmVycmVkVmFsdWVJbXBsKFxuICAgICAgICAgIGhvb2ssXG4gICAgICAgICAgY3VycmVudEhvb2subWVtb2l6ZWRTdGF0ZSxcbiAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICBpbml0aWFsVmFsdWVcbiAgICAgICAgKTtcbiAgfSxcbiAgdXNlVHJhbnNpdGlvbjogZnVuY3Rpb24gKCkge1xuICAgIHZhciBib29sZWFuT3JUaGVuYWJsZSA9IHJlcmVuZGVyUmVkdWNlcihiYXNpY1N0YXRlUmVkdWNlcilbMF0sXG4gICAgICBzdGFydCA9IHVwZGF0ZVdvcmtJblByb2dyZXNzSG9vaygpLm1lbW9pemVkU3RhdGU7XG4gICAgcmV0dXJuIFtcbiAgICAgIFwiYm9vbGVhblwiID09PSB0eXBlb2YgYm9vbGVhbk9yVGhlbmFibGVcbiAgICAgICAgPyBib29sZWFuT3JUaGVuYWJsZVxuICAgICAgICA6IHVzZVRoZW5hYmxlKGJvb2xlYW5PclRoZW5hYmxlKSxcbiAgICAgIHN0YXJ0XG4gICAgXTtcbiAgfSxcbiAgdXNlU3luY0V4dGVybmFsU3RvcmU6IHVwZGF0ZVN5bmNFeHRlcm5hbFN0b3JlLFxuICB1c2VJZDogdXBkYXRlSWRcbn07XG5Ib29rc0Rpc3BhdGNoZXJPblJlcmVuZGVyLnVzZUNhY2hlUmVmcmVzaCA9IHVwZGF0ZVJlZnJlc2g7XG5Ib29rc0Rpc3BhdGNoZXJPblJlcmVuZGVyLnVzZU1lbW9DYWNoZSA9IHVzZU1lbW9DYWNoZTtcbkhvb2tzRGlzcGF0Y2hlck9uUmVyZW5kZXIudXNlSG9zdFRyYW5zaXRpb25TdGF0dXMgPSB1c2VIb3N0VHJhbnNpdGlvblN0YXR1cztcbkhvb2tzRGlzcGF0Y2hlck9uUmVyZW5kZXIudXNlRm9ybVN0YXRlID0gcmVyZW5kZXJBY3Rpb25TdGF0ZTtcbkhvb2tzRGlzcGF0Y2hlck9uUmVyZW5kZXIudXNlQWN0aW9uU3RhdGUgPSByZXJlbmRlckFjdGlvblN0YXRlO1xuSG9va3NEaXNwYXRjaGVyT25SZXJlbmRlci51c2VPcHRpbWlzdGljID0gZnVuY3Rpb24gKHBhc3N0aHJvdWdoLCByZWR1Y2VyKSB7XG4gIHZhciBob29rID0gdXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rKCk7XG4gIGlmIChudWxsICE9PSBjdXJyZW50SG9vaylcbiAgICByZXR1cm4gdXBkYXRlT3B0aW1pc3RpY0ltcGwoaG9vaywgY3VycmVudEhvb2ssIHBhc3N0aHJvdWdoLCByZWR1Y2VyKTtcbiAgaG9vay5iYXNlU3RhdGUgPSBwYXNzdGhyb3VnaDtcbiAgcmV0dXJuIFtwYXNzdGhyb3VnaCwgaG9vay5xdWV1ZS5kaXNwYXRjaF07XG59O1xuZnVuY3Rpb24gYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gIHdvcmtJblByb2dyZXNzLFxuICBjdG9yLFxuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMsXG4gIG5leHRQcm9wc1xuKSB7XG4gIGN0b3IgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlO1xuICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMobmV4dFByb3BzLCBjdG9yKTtcbiAgZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzID1cbiAgICBudWxsID09PSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgfHwgdm9pZCAwID09PSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHNcbiAgICAgID8gY3RvclxuICAgICAgOiBhc3NpZ24oe30sIGN0b3IsIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyk7XG4gIHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XG4gIDAgPT09IHdvcmtJblByb2dyZXNzLmxhbmVzICYmXG4gICAgKHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZSA9IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyk7XG59XG52YXIgY2xhc3NDb21wb25lbnRVcGRhdGVyID0ge1xuICBpc01vdW50ZWQ6IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICByZXR1cm4gKGNvbXBvbmVudCA9IGNvbXBvbmVudC5fcmVhY3RJbnRlcm5hbHMpXG4gICAgICA/IGdldE5lYXJlc3RNb3VudGVkRmliZXIoY29tcG9uZW50KSA9PT0gY29tcG9uZW50XG4gICAgICA6ICExO1xuICB9LFxuICBlbnF1ZXVlU2V0U3RhdGU6IGZ1bmN0aW9uIChpbnN0LCBwYXlsb2FkLCBjYWxsYmFjaykge1xuICAgIGluc3QgPSBpbnN0Ll9yZWFjdEludGVybmFscztcbiAgICB2YXIgbGFuZSA9IHJlcXVlc3RVcGRhdGVMYW5lKCksXG4gICAgICB1cGRhdGUgPSBjcmVhdGVVcGRhdGUobGFuZSk7XG4gICAgdXBkYXRlLnBheWxvYWQgPSBwYXlsb2FkO1xuICAgIHZvaWQgMCAhPT0gY2FsbGJhY2sgJiYgbnVsbCAhPT0gY2FsbGJhY2sgJiYgKHVwZGF0ZS5jYWxsYmFjayA9IGNhbGxiYWNrKTtcbiAgICBwYXlsb2FkID0gZW5xdWV1ZVVwZGF0ZShpbnN0LCB1cGRhdGUsIGxhbmUpO1xuICAgIG51bGwgIT09IHBheWxvYWQgJiZcbiAgICAgIChzY2hlZHVsZVVwZGF0ZU9uRmliZXIocGF5bG9hZCwgaW5zdCwgbGFuZSksXG4gICAgICBlbnRhbmdsZVRyYW5zaXRpb25zKHBheWxvYWQsIGluc3QsIGxhbmUpKTtcbiAgfSxcbiAgZW5xdWV1ZVJlcGxhY2VTdGF0ZTogZnVuY3Rpb24gKGluc3QsIHBheWxvYWQsIGNhbGxiYWNrKSB7XG4gICAgaW5zdCA9IGluc3QuX3JlYWN0SW50ZXJuYWxzO1xuICAgIHZhciBsYW5lID0gcmVxdWVzdFVwZGF0ZUxhbmUoKSxcbiAgICAgIHVwZGF0ZSA9IGNyZWF0ZVVwZGF0ZShsYW5lKTtcbiAgICB1cGRhdGUudGFnID0gMTtcbiAgICB1cGRhdGUucGF5bG9hZCA9IHBheWxvYWQ7XG4gICAgdm9pZCAwICE9PSBjYWxsYmFjayAmJiBudWxsICE9PSBjYWxsYmFjayAmJiAodXBkYXRlLmNhbGxiYWNrID0gY2FsbGJhY2spO1xuICAgIHBheWxvYWQgPSBlbnF1ZXVlVXBkYXRlKGluc3QsIHVwZGF0ZSwgbGFuZSk7XG4gICAgbnVsbCAhPT0gcGF5bG9hZCAmJlxuICAgICAgKHNjaGVkdWxlVXBkYXRlT25GaWJlcihwYXlsb2FkLCBpbnN0LCBsYW5lKSxcbiAgICAgIGVudGFuZ2xlVHJhbnNpdGlvbnMocGF5bG9hZCwgaW5zdCwgbGFuZSkpO1xuICB9LFxuICBlbnF1ZXVlRm9yY2VVcGRhdGU6IGZ1bmN0aW9uIChpbnN0LCBjYWxsYmFjaykge1xuICAgIGluc3QgPSBpbnN0Ll9yZWFjdEludGVybmFscztcbiAgICB2YXIgbGFuZSA9IHJlcXVlc3RVcGRhdGVMYW5lKCksXG4gICAgICB1cGRhdGUgPSBjcmVhdGVVcGRhdGUobGFuZSk7XG4gICAgdXBkYXRlLnRhZyA9IDI7XG4gICAgdm9pZCAwICE9PSBjYWxsYmFjayAmJiBudWxsICE9PSBjYWxsYmFjayAmJiAodXBkYXRlLmNhbGxiYWNrID0gY2FsbGJhY2spO1xuICAgIGNhbGxiYWNrID0gZW5xdWV1ZVVwZGF0ZShpbnN0LCB1cGRhdGUsIGxhbmUpO1xuICAgIG51bGwgIT09IGNhbGxiYWNrICYmXG4gICAgICAoc2NoZWR1bGVVcGRhdGVPbkZpYmVyKGNhbGxiYWNrLCBpbnN0LCBsYW5lKSxcbiAgICAgIGVudGFuZ2xlVHJhbnNpdGlvbnMoY2FsbGJhY2ssIGluc3QsIGxhbmUpKTtcbiAgfVxufTtcbmZ1bmN0aW9uIGNoZWNrU2hvdWxkQ29tcG9uZW50VXBkYXRlKFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgY3RvcixcbiAgb2xkUHJvcHMsXG4gIG5ld1Byb3BzLFxuICBvbGRTdGF0ZSxcbiAgbmV3U3RhdGUsXG4gIG5leHRDb250ZXh0XG4pIHtcbiAgd29ya0luUHJvZ3Jlc3MgPSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGU7XG4gIHJldHVybiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3b3JrSW5Qcm9ncmVzcy5zaG91bGRDb21wb25lbnRVcGRhdGVcbiAgICA/IHdvcmtJblByb2dyZXNzLnNob3VsZENvbXBvbmVudFVwZGF0ZShuZXdQcm9wcywgbmV3U3RhdGUsIG5leHRDb250ZXh0KVxuICAgIDogY3Rvci5wcm90b3R5cGUgJiYgY3Rvci5wcm90b3R5cGUuaXNQdXJlUmVhY3RDb21wb25lbnRcbiAgICAgID8gIXNoYWxsb3dFcXVhbChvbGRQcm9wcywgbmV3UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwob2xkU3RhdGUsIG5ld1N0YXRlKVxuICAgICAgOiAhMDtcbn1cbmZ1bmN0aW9uIGNhbGxDb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgaW5zdGFuY2UsXG4gIG5ld1Byb3BzLFxuICBuZXh0Q29udGV4dFxuKSB7XG4gIHdvcmtJblByb2dyZXNzID0gaW5zdGFuY2Uuc3RhdGU7XG4gIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiZcbiAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKG5ld1Byb3BzLCBuZXh0Q29udGV4dCk7XG4gIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluc3RhbmNlLlVOU0FGRV9jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzICYmXG4gICAgaW5zdGFuY2UuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMobmV3UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgaW5zdGFuY2Uuc3RhdGUgIT09IHdvcmtJblByb2dyZXNzICYmXG4gICAgY2xhc3NDb21wb25lbnRVcGRhdGVyLmVucXVldWVSZXBsYWNlU3RhdGUoaW5zdGFuY2UsIGluc3RhbmNlLnN0YXRlLCBudWxsKTtcbn1cbmZ1bmN0aW9uIHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKENvbXBvbmVudCwgYmFzZVByb3BzKSB7XG4gIHZhciBuZXdQcm9wcyA9IGJhc2VQcm9wcztcbiAgaWYgKFwicmVmXCIgaW4gYmFzZVByb3BzKSB7XG4gICAgbmV3UHJvcHMgPSB7fTtcbiAgICBmb3IgKHZhciBwcm9wTmFtZSBpbiBiYXNlUHJvcHMpXG4gICAgICBcInJlZlwiICE9PSBwcm9wTmFtZSAmJiAobmV3UHJvcHNbcHJvcE5hbWVdID0gYmFzZVByb3BzW3Byb3BOYW1lXSk7XG4gIH1cbiAgaWYgKChDb21wb25lbnQgPSBDb21wb25lbnQuZGVmYXVsdFByb3BzKSkge1xuICAgIG5ld1Byb3BzID09PSBiYXNlUHJvcHMgJiYgKG5ld1Byb3BzID0gYXNzaWduKHt9LCBuZXdQcm9wcykpO1xuICAgIGZvciAodmFyIHByb3BOYW1lJDY3IGluIENvbXBvbmVudClcbiAgICAgIHZvaWQgMCA9PT0gbmV3UHJvcHNbcHJvcE5hbWUkNjddICYmXG4gICAgICAgIChuZXdQcm9wc1twcm9wTmFtZSQ2N10gPSBDb21wb25lbnRbcHJvcE5hbWUkNjddKTtcbiAgfVxuICByZXR1cm4gbmV3UHJvcHM7XG59XG52YXIgcmVwb3J0R2xvYmFsRXJyb3IgPVxuICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiByZXBvcnRFcnJvclxuICAgID8gcmVwb3J0RXJyb3JcbiAgICA6IGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHdpbmRvdyAmJlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHdpbmRvdy5FcnJvckV2ZW50XG4gICAgICAgICkge1xuICAgICAgICAgIHZhciBldmVudCA9IG5ldyB3aW5kb3cuRXJyb3JFdmVudChcImVycm9yXCIsIHtcbiAgICAgICAgICAgIGJ1YmJsZXM6ICEwLFxuICAgICAgICAgICAgY2FuY2VsYWJsZTogITAsXG4gICAgICAgICAgICBtZXNzYWdlOlxuICAgICAgICAgICAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgZXJyb3IgJiZcbiAgICAgICAgICAgICAgbnVsbCAhPT0gZXJyb3IgJiZcbiAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIGVycm9yLm1lc3NhZ2VcbiAgICAgICAgICAgICAgICA/IFN0cmluZyhlcnJvci5tZXNzYWdlKVxuICAgICAgICAgICAgICAgIDogU3RyaW5nKGVycm9yKSxcbiAgICAgICAgICAgIGVycm9yOiBlcnJvclxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGlmICghd2luZG93LmRpc3BhdGNoRXZlbnQoZXZlbnQpKSByZXR1cm47XG4gICAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIHByb2Nlc3MgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBwcm9jZXNzLmVtaXRcbiAgICAgICAgKSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbWl0KFwidW5jYXVnaHRFeGNlcHRpb25cIiwgZXJyb3IpO1xuICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBjb25zb2xlLmVycm9yKGVycm9yKTtcbiAgICAgIH07XG5mdW5jdGlvbiBkZWZhdWx0T25VbmNhdWdodEVycm9yKGVycm9yKSB7XG4gIHJlcG9ydEdsb2JhbEVycm9yKGVycm9yKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRPbkNhdWdodEVycm9yKGVycm9yKSB7XG4gIGNvbnNvbGUuZXJyb3IoZXJyb3IpO1xufVxuZnVuY3Rpb24gZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvcihlcnJvcikge1xuICByZXBvcnRHbG9iYWxFcnJvcihlcnJvcik7XG59XG5mdW5jdGlvbiBsb2dVbmNhdWdodEVycm9yKHJvb3QsIGVycm9ySW5mbykge1xuICB0cnkge1xuICAgIHZhciBvblVuY2F1Z2h0RXJyb3IgPSByb290Lm9uVW5jYXVnaHRFcnJvcjtcbiAgICBvblVuY2F1Z2h0RXJyb3IoZXJyb3JJbmZvLnZhbHVlLCB7IGNvbXBvbmVudFN0YWNrOiBlcnJvckluZm8uc3RhY2sgfSk7XG4gIH0gY2F0Y2ggKGUkNjgpIHtcbiAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHRocm93IGUkNjg7XG4gICAgfSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGxvZ0NhdWdodEVycm9yKHJvb3QsIGJvdW5kYXJ5LCBlcnJvckluZm8pIHtcbiAgdHJ5IHtcbiAgICB2YXIgb25DYXVnaHRFcnJvciA9IHJvb3Qub25DYXVnaHRFcnJvcjtcbiAgICBvbkNhdWdodEVycm9yKGVycm9ySW5mby52YWx1ZSwge1xuICAgICAgY29tcG9uZW50U3RhY2s6IGVycm9ySW5mby5zdGFjayxcbiAgICAgIGVycm9yQm91bmRhcnk6IDEgPT09IGJvdW5kYXJ5LnRhZyA/IGJvdW5kYXJ5LnN0YXRlTm9kZSA6IG51bGxcbiAgICB9KTtcbiAgfSBjYXRjaCAoZSQ2OSkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgdGhyb3cgZSQ2OTtcbiAgICB9KTtcbiAgfVxufVxuZnVuY3Rpb24gY3JlYXRlUm9vdEVycm9yVXBkYXRlKHJvb3QsIGVycm9ySW5mbywgbGFuZSkge1xuICBsYW5lID0gY3JlYXRlVXBkYXRlKGxhbmUpO1xuICBsYW5lLnRhZyA9IDM7XG4gIGxhbmUucGF5bG9hZCA9IHsgZWxlbWVudDogbnVsbCB9O1xuICBsYW5lLmNhbGxiYWNrID0gZnVuY3Rpb24gKCkge1xuICAgIGxvZ1VuY2F1Z2h0RXJyb3Iocm9vdCwgZXJyb3JJbmZvKTtcbiAgfTtcbiAgcmV0dXJuIGxhbmU7XG59XG5mdW5jdGlvbiBjcmVhdGVDbGFzc0Vycm9yVXBkYXRlKGxhbmUpIHtcbiAgbGFuZSA9IGNyZWF0ZVVwZGF0ZShsYW5lKTtcbiAgbGFuZS50YWcgPSAzO1xuICByZXR1cm4gbGFuZTtcbn1cbmZ1bmN0aW9uIGluaXRpYWxpemVDbGFzc0Vycm9yVXBkYXRlKHVwZGF0ZSwgcm9vdCwgZmliZXIsIGVycm9ySW5mbykge1xuICB2YXIgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yID0gZmliZXIudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3I7XG4gIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IpIHtcbiAgICB2YXIgZXJyb3IgPSBlcnJvckluZm8udmFsdWU7XG4gICAgdXBkYXRlLnBheWxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yKGVycm9yKTtcbiAgICB9O1xuICAgIHVwZGF0ZS5jYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZ0NhdWdodEVycm9yKHJvb3QsIGZpYmVyLCBlcnJvckluZm8pO1xuICAgIH07XG4gIH1cbiAgdmFyIGluc3QgPSBmaWJlci5zdGF0ZU5vZGU7XG4gIG51bGwgIT09IGluc3QgJiZcbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbnN0LmNvbXBvbmVudERpZENhdGNoICYmXG4gICAgKHVwZGF0ZS5jYWxsYmFjayA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGxvZ0NhdWdodEVycm9yKHJvb3QsIGZpYmVyLCBlcnJvckluZm8pO1xuICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yICYmXG4gICAgICAgIChudWxsID09PSBsZWdhY3lFcnJvckJvdW5kYXJpZXNUaGF0QWxyZWFkeUZhaWxlZFxuICAgICAgICAgID8gKGxlZ2FjeUVycm9yQm91bmRhcmllc1RoYXRBbHJlYWR5RmFpbGVkID0gbmV3IFNldChbdGhpc10pKVxuICAgICAgICAgIDogbGVnYWN5RXJyb3JCb3VuZGFyaWVzVGhhdEFscmVhZHlGYWlsZWQuYWRkKHRoaXMpKTtcbiAgICAgIHZhciBzdGFjayA9IGVycm9ySW5mby5zdGFjaztcbiAgICAgIHRoaXMuY29tcG9uZW50RGlkQ2F0Y2goZXJyb3JJbmZvLnZhbHVlLCB7XG4gICAgICAgIGNvbXBvbmVudFN0YWNrOiBudWxsICE9PSBzdGFjayA/IHN0YWNrIDogXCJcIlxuICAgICAgfSk7XG4gICAgfSk7XG59XG5mdW5jdGlvbiB0aHJvd0V4Y2VwdGlvbihcbiAgcm9vdCxcbiAgcmV0dXJuRmliZXIsXG4gIHNvdXJjZUZpYmVyLFxuICB2YWx1ZSxcbiAgcm9vdFJlbmRlckxhbmVzXG4pIHtcbiAgc291cmNlRmliZXIuZmxhZ3MgfD0gMzI3Njg7XG4gIGlmIChcbiAgICBudWxsICE9PSB2YWx1ZSAmJlxuICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB2YWx1ZSAmJlxuICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHZhbHVlLnRoZW5cbiAgKSB7XG4gICAgcmV0dXJuRmliZXIgPSBzb3VyY2VGaWJlci5hbHRlcm5hdGU7XG4gICAgbnVsbCAhPT0gcmV0dXJuRmliZXIgJiZcbiAgICAgIHByb3BhZ2F0ZVBhcmVudENvbnRleHRDaGFuZ2VzKFxuICAgICAgICByZXR1cm5GaWJlcixcbiAgICAgICAgc291cmNlRmliZXIsXG4gICAgICAgIHJvb3RSZW5kZXJMYW5lcyxcbiAgICAgICAgITBcbiAgICAgICk7XG4gICAgc291cmNlRmliZXIgPSBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvci5jdXJyZW50O1xuICAgIGlmIChudWxsICE9PSBzb3VyY2VGaWJlcikge1xuICAgICAgc3dpdGNoIChzb3VyY2VGaWJlci50YWcpIHtcbiAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgbnVsbCA9PT0gc2hlbGxCb3VuZGFyeVxuICAgICAgICAgICAgICA/IHJlbmRlckRpZFN1c3BlbmREZWxheUlmUG9zc2libGUoKVxuICAgICAgICAgICAgICA6IG51bGwgPT09IHNvdXJjZUZpYmVyLmFsdGVybmF0ZSAmJlxuICAgICAgICAgICAgICAgIDAgPT09IHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgJiZcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDMpLFxuICAgICAgICAgICAgKHNvdXJjZUZpYmVyLmZsYWdzICY9IC0yNTcpLFxuICAgICAgICAgICAgKHNvdXJjZUZpYmVyLmZsYWdzIHw9IDY1NTM2KSxcbiAgICAgICAgICAgIChzb3VyY2VGaWJlci5sYW5lcyA9IHJvb3RSZW5kZXJMYW5lcyksXG4gICAgICAgICAgICB2YWx1ZSA9PT0gbm9vcFN1c3BlbnNleUNvbW1pdFRoZW5hYmxlXG4gICAgICAgICAgICAgID8gKHNvdXJjZUZpYmVyLmZsYWdzIHw9IDE2Mzg0KVxuICAgICAgICAgICAgICA6ICgocmV0dXJuRmliZXIgPSBzb3VyY2VGaWJlci51cGRhdGVRdWV1ZSksXG4gICAgICAgICAgICAgICAgbnVsbCA9PT0gcmV0dXJuRmliZXJcbiAgICAgICAgICAgICAgICAgID8gKHNvdXJjZUZpYmVyLnVwZGF0ZVF1ZXVlID0gbmV3IFNldChbdmFsdWVdKSlcbiAgICAgICAgICAgICAgICAgIDogcmV0dXJuRmliZXIuYWRkKHZhbHVlKSxcbiAgICAgICAgICAgICAgICBhdHRhY2hQaW5nTGlzdGVuZXIocm9vdCwgdmFsdWUsIHJvb3RSZW5kZXJMYW5lcykpLFxuICAgICAgICAgICAgITFcbiAgICAgICAgICApO1xuICAgICAgICBjYXNlIDIyOlxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAoc291cmNlRmliZXIuZmxhZ3MgfD0gNjU1MzYpLFxuICAgICAgICAgICAgdmFsdWUgPT09IG5vb3BTdXNwZW5zZXlDb21taXRUaGVuYWJsZVxuICAgICAgICAgICAgICA/IChzb3VyY2VGaWJlci5mbGFncyB8PSAxNjM4NClcbiAgICAgICAgICAgICAgOiAoKHJldHVybkZpYmVyID0gc291cmNlRmliZXIudXBkYXRlUXVldWUpLFxuICAgICAgICAgICAgICAgIG51bGwgPT09IHJldHVybkZpYmVyXG4gICAgICAgICAgICAgICAgICA/ICgocmV0dXJuRmliZXIgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvbnM6IG51bGwsXG4gICAgICAgICAgICAgICAgICAgICAgbWFya2VySW5zdGFuY2VzOiBudWxsLFxuICAgICAgICAgICAgICAgICAgICAgIHJldHJ5UXVldWU6IG5ldyBTZXQoW3ZhbHVlXSlcbiAgICAgICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgICAgICAgIChzb3VyY2VGaWJlci51cGRhdGVRdWV1ZSA9IHJldHVybkZpYmVyKSlcbiAgICAgICAgICAgICAgICAgIDogKChzb3VyY2VGaWJlciA9IHJldHVybkZpYmVyLnJldHJ5UXVldWUpLFxuICAgICAgICAgICAgICAgICAgICBudWxsID09PSBzb3VyY2VGaWJlclxuICAgICAgICAgICAgICAgICAgICAgID8gKHJldHVybkZpYmVyLnJldHJ5UXVldWUgPSBuZXcgU2V0KFt2YWx1ZV0pKVxuICAgICAgICAgICAgICAgICAgICAgIDogc291cmNlRmliZXIuYWRkKHZhbHVlKSksXG4gICAgICAgICAgICAgICAgYXR0YWNoUGluZ0xpc3RlbmVyKHJvb3QsIHZhbHVlLCByb290UmVuZGVyTGFuZXMpKSxcbiAgICAgICAgICAgICExXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDM1LCBzb3VyY2VGaWJlci50YWcpKTtcbiAgICB9XG4gICAgYXR0YWNoUGluZ0xpc3RlbmVyKHJvb3QsIHZhbHVlLCByb290UmVuZGVyTGFuZXMpO1xuICAgIHJlbmRlckRpZFN1c3BlbmREZWxheUlmUG9zc2libGUoKTtcbiAgICByZXR1cm4gITE7XG4gIH1cbiAgaWYgKGlzSHlkcmF0aW5nKVxuICAgIHJldHVybiAoXG4gICAgICAocmV0dXJuRmliZXIgPSBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvci5jdXJyZW50KSxcbiAgICAgIG51bGwgIT09IHJldHVybkZpYmVyXG4gICAgICAgID8gKDAgPT09IChyZXR1cm5GaWJlci5mbGFncyAmIDY1NTM2KSAmJiAocmV0dXJuRmliZXIuZmxhZ3MgfD0gMjU2KSxcbiAgICAgICAgICAocmV0dXJuRmliZXIuZmxhZ3MgfD0gNjU1MzYpLFxuICAgICAgICAgIChyZXR1cm5GaWJlci5sYW5lcyA9IHJvb3RSZW5kZXJMYW5lcyksXG4gICAgICAgICAgdmFsdWUgIT09IEh5ZHJhdGlvbk1pc21hdGNoRXhjZXB0aW9uICYmXG4gICAgICAgICAgICAoKHJvb3QgPSBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQyMiksIHsgY2F1c2U6IHZhbHVlIH0pKSxcbiAgICAgICAgICAgIHF1ZXVlSHlkcmF0aW9uRXJyb3IoY3JlYXRlQ2FwdHVyZWRWYWx1ZUF0RmliZXIocm9vdCwgc291cmNlRmliZXIpKSkpXG4gICAgICAgIDogKHZhbHVlICE9PSBIeWRyYXRpb25NaXNtYXRjaEV4Y2VwdGlvbiAmJlxuICAgICAgICAgICAgKChyZXR1cm5GaWJlciA9IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDIzKSwge1xuICAgICAgICAgICAgICBjYXVzZTogdmFsdWVcbiAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgIHF1ZXVlSHlkcmF0aW9uRXJyb3IoXG4gICAgICAgICAgICAgIGNyZWF0ZUNhcHR1cmVkVmFsdWVBdEZpYmVyKHJldHVybkZpYmVyLCBzb3VyY2VGaWJlcilcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgIChyb290ID0gcm9vdC5jdXJyZW50LmFsdGVybmF0ZSksXG4gICAgICAgICAgKHJvb3QuZmxhZ3MgfD0gNjU1MzYpLFxuICAgICAgICAgIChyb290UmVuZGVyTGFuZXMgJj0gLXJvb3RSZW5kZXJMYW5lcyksXG4gICAgICAgICAgKHJvb3QubGFuZXMgfD0gcm9vdFJlbmRlckxhbmVzKSxcbiAgICAgICAgICAodmFsdWUgPSBjcmVhdGVDYXB0dXJlZFZhbHVlQXRGaWJlcih2YWx1ZSwgc291cmNlRmliZXIpKSxcbiAgICAgICAgICAocm9vdFJlbmRlckxhbmVzID0gY3JlYXRlUm9vdEVycm9yVXBkYXRlKFxuICAgICAgICAgICAgcm9vdC5zdGF0ZU5vZGUsXG4gICAgICAgICAgICB2YWx1ZSxcbiAgICAgICAgICAgIHJvb3RSZW5kZXJMYW5lc1xuICAgICAgICAgICkpLFxuICAgICAgICAgIGVucXVldWVDYXB0dXJlZFVwZGF0ZShyb290LCByb290UmVuZGVyTGFuZXMpLFxuICAgICAgICAgIDQgIT09IHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgJiZcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzc1Jvb3RFeGl0U3RhdHVzID0gMikpLFxuICAgICAgITFcbiAgICApO1xuICB2YXIgd3JhcHBlckVycm9yID0gRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg1MjApLCB7IGNhdXNlOiB2YWx1ZSB9KTtcbiAgd3JhcHBlckVycm9yID0gY3JlYXRlQ2FwdHVyZWRWYWx1ZUF0RmliZXIod3JhcHBlckVycm9yLCBzb3VyY2VGaWJlcik7XG4gIG51bGwgPT09IHdvcmtJblByb2dyZXNzUm9vdENvbmN1cnJlbnRFcnJvcnNcbiAgICA/ICh3b3JrSW5Qcm9ncmVzc1Jvb3RDb25jdXJyZW50RXJyb3JzID0gW3dyYXBwZXJFcnJvcl0pXG4gICAgOiB3b3JrSW5Qcm9ncmVzc1Jvb3RDb25jdXJyZW50RXJyb3JzLnB1c2god3JhcHBlckVycm9yKTtcbiAgNCAhPT0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyAmJiAod29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDIpO1xuICBpZiAobnVsbCA9PT0gcmV0dXJuRmliZXIpIHJldHVybiAhMDtcbiAgdmFsdWUgPSBjcmVhdGVDYXB0dXJlZFZhbHVlQXRGaWJlcih2YWx1ZSwgc291cmNlRmliZXIpO1xuICBzb3VyY2VGaWJlciA9IHJldHVybkZpYmVyO1xuICBkbyB7XG4gICAgc3dpdGNoIChzb3VyY2VGaWJlci50YWcpIHtcbiAgICAgIGNhc2UgMzpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAoc291cmNlRmliZXIuZmxhZ3MgfD0gNjU1MzYpLFxuICAgICAgICAgIChyb290ID0gcm9vdFJlbmRlckxhbmVzICYgLXJvb3RSZW5kZXJMYW5lcyksXG4gICAgICAgICAgKHNvdXJjZUZpYmVyLmxhbmVzIHw9IHJvb3QpLFxuICAgICAgICAgIChyb290ID0gY3JlYXRlUm9vdEVycm9yVXBkYXRlKHNvdXJjZUZpYmVyLnN0YXRlTm9kZSwgdmFsdWUsIHJvb3QpKSxcbiAgICAgICAgICBlbnF1ZXVlQ2FwdHVyZWRVcGRhdGUoc291cmNlRmliZXIsIHJvb3QpLFxuICAgICAgICAgICExXG4gICAgICAgICk7XG4gICAgICBjYXNlIDE6XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKHJldHVybkZpYmVyID0gc291cmNlRmliZXIudHlwZSksXG4gICAgICAgICAgKHdyYXBwZXJFcnJvciA9IHNvdXJjZUZpYmVyLnN0YXRlTm9kZSksXG4gICAgICAgICAgMCA9PT0gKHNvdXJjZUZpYmVyLmZsYWdzICYgMTI4KSAmJlxuICAgICAgICAgICAgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJldHVybkZpYmVyLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvciB8fFxuICAgICAgICAgICAgICAobnVsbCAhPT0gd3JhcHBlckVycm9yICYmXG4gICAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2Ygd3JhcHBlckVycm9yLmNvbXBvbmVudERpZENhdGNoICYmXG4gICAgICAgICAgICAgICAgKG51bGwgPT09IGxlZ2FjeUVycm9yQm91bmRhcmllc1RoYXRBbHJlYWR5RmFpbGVkIHx8XG4gICAgICAgICAgICAgICAgICAhbGVnYWN5RXJyb3JCb3VuZGFyaWVzVGhhdEFscmVhZHlGYWlsZWQuaGFzKHdyYXBwZXJFcnJvcikpKSkpXG4gICAgICAgIClcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHNvdXJjZUZpYmVyLmZsYWdzIHw9IDY1NTM2KSxcbiAgICAgICAgICAgIChyb290UmVuZGVyTGFuZXMgJj0gLXJvb3RSZW5kZXJMYW5lcyksXG4gICAgICAgICAgICAoc291cmNlRmliZXIubGFuZXMgfD0gcm9vdFJlbmRlckxhbmVzKSxcbiAgICAgICAgICAgIChyb290UmVuZGVyTGFuZXMgPSBjcmVhdGVDbGFzc0Vycm9yVXBkYXRlKHJvb3RSZW5kZXJMYW5lcykpLFxuICAgICAgICAgICAgaW5pdGlhbGl6ZUNsYXNzRXJyb3JVcGRhdGUoXG4gICAgICAgICAgICAgIHJvb3RSZW5kZXJMYW5lcyxcbiAgICAgICAgICAgICAgcm9vdCxcbiAgICAgICAgICAgICAgc291cmNlRmliZXIsXG4gICAgICAgICAgICAgIHZhbHVlXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgZW5xdWV1ZUNhcHR1cmVkVXBkYXRlKHNvdXJjZUZpYmVyLCByb290UmVuZGVyTGFuZXMpLFxuICAgICAgICAgICAgITFcbiAgICAgICAgICApO1xuICAgIH1cbiAgICBzb3VyY2VGaWJlciA9IHNvdXJjZUZpYmVyLnJldHVybjtcbiAgfSB3aGlsZSAobnVsbCAhPT0gc291cmNlRmliZXIpO1xuICByZXR1cm4gITE7XG59XG52YXIgU2VsZWN0aXZlSHlkcmF0aW9uRXhjZXB0aW9uID0gRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0NjEpKSxcbiAgZGlkUmVjZWl2ZVVwZGF0ZSA9ICExO1xuZnVuY3Rpb24gcmVjb25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIG5leHRDaGlsZHJlbiwgcmVuZGVyTGFuZXMpIHtcbiAgd29ya0luUHJvZ3Jlc3MuY2hpbGQgPVxuICAgIG51bGwgPT09IGN1cnJlbnRcbiAgICAgID8gbW91bnRDaGlsZEZpYmVycyh3b3JrSW5Qcm9ncmVzcywgbnVsbCwgbmV4dENoaWxkcmVuLCByZW5kZXJMYW5lcylcbiAgICAgIDogcmVjb25jaWxlQ2hpbGRGaWJlcnMoXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgY3VycmVudC5jaGlsZCxcbiAgICAgICAgICBuZXh0Q2hpbGRyZW4sXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUZvcndhcmRSZWYoXG4gIGN1cnJlbnQsXG4gIHdvcmtJblByb2dyZXNzLFxuICBDb21wb25lbnQsXG4gIG5leHRQcm9wcyxcbiAgcmVuZGVyTGFuZXNcbikge1xuICBDb21wb25lbnQgPSBDb21wb25lbnQucmVuZGVyO1xuICB2YXIgcmVmID0gd29ya0luUHJvZ3Jlc3MucmVmO1xuICBpZiAoXCJyZWZcIiBpbiBuZXh0UHJvcHMpIHtcbiAgICB2YXIgcHJvcHNXaXRob3V0UmVmID0ge307XG4gICAgZm9yICh2YXIga2V5IGluIG5leHRQcm9wcylcbiAgICAgIFwicmVmXCIgIT09IGtleSAmJiAocHJvcHNXaXRob3V0UmVmW2tleV0gPSBuZXh0UHJvcHNba2V5XSk7XG4gIH0gZWxzZSBwcm9wc1dpdGhvdXRSZWYgPSBuZXh0UHJvcHM7XG4gIHByZXBhcmVUb1JlYWRDb250ZXh0KHdvcmtJblByb2dyZXNzKTtcbiAgbmV4dFByb3BzID0gcmVuZGVyV2l0aEhvb2tzKFxuICAgIGN1cnJlbnQsXG4gICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgQ29tcG9uZW50LFxuICAgIHByb3BzV2l0aG91dFJlZixcbiAgICByZWYsXG4gICAgcmVuZGVyTGFuZXNcbiAgKTtcbiAga2V5ID0gY2hlY2tEaWRSZW5kZXJJZEhvb2soKTtcbiAgaWYgKG51bGwgIT09IGN1cnJlbnQgJiYgIWRpZFJlY2VpdmVVcGRhdGUpXG4gICAgcmV0dXJuIChcbiAgICAgIGJhaWxvdXRIb29rcyhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpLFxuICAgICAgYmFpbG91dE9uQWxyZWFkeUZpbmlzaGVkV29yayhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpXG4gICAgKTtcbiAgaXNIeWRyYXRpbmcgJiYga2V5ICYmIHB1c2hNYXRlcmlhbGl6ZWRUcmVlSWQod29ya0luUHJvZ3Jlc3MpO1xuICB3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxO1xuICByZWNvbmNpbGVDaGlsZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLCByZW5kZXJMYW5lcyk7XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbn1cbmZ1bmN0aW9uIHVwZGF0ZU1lbW9Db21wb25lbnQoXG4gIGN1cnJlbnQsXG4gIHdvcmtJblByb2dyZXNzLFxuICBDb21wb25lbnQsXG4gIG5leHRQcm9wcyxcbiAgcmVuZGVyTGFuZXNcbikge1xuICBpZiAobnVsbCA9PT0gY3VycmVudCkge1xuICAgIHZhciB0eXBlID0gQ29tcG9uZW50LnR5cGU7XG4gICAgaWYgKFxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdHlwZSAmJlxuICAgICAgIXNob3VsZENvbnN0cnVjdCh0eXBlKSAmJlxuICAgICAgdm9pZCAwID09PSB0eXBlLmRlZmF1bHRQcm9wcyAmJlxuICAgICAgbnVsbCA9PT0gQ29tcG9uZW50LmNvbXBhcmVcbiAgICApXG4gICAgICByZXR1cm4gKFxuICAgICAgICAod29ya0luUHJvZ3Jlc3MudGFnID0gMTUpLFxuICAgICAgICAod29ya0luUHJvZ3Jlc3MudHlwZSA9IHR5cGUpLFxuICAgICAgICB1cGRhdGVTaW1wbGVNZW1vQ29tcG9uZW50KFxuICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgdHlwZSxcbiAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBjdXJyZW50ID0gY3JlYXRlRmliZXJGcm9tVHlwZUFuZFByb3BzKFxuICAgICAgQ29tcG9uZW50LnR5cGUsXG4gICAgICBudWxsLFxuICAgICAgbmV4dFByb3BzLFxuICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICB3b3JrSW5Qcm9ncmVzcy5tb2RlLFxuICAgICAgcmVuZGVyTGFuZXNcbiAgICApO1xuICAgIGN1cnJlbnQucmVmID0gd29ya0luUHJvZ3Jlc3MucmVmO1xuICAgIGN1cnJlbnQucmV0dXJuID0gd29ya0luUHJvZ3Jlc3M7XG4gICAgcmV0dXJuICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IGN1cnJlbnQpO1xuICB9XG4gIHR5cGUgPSBjdXJyZW50LmNoaWxkO1xuICBpZiAoIWNoZWNrU2NoZWR1bGVkVXBkYXRlT3JDb250ZXh0KGN1cnJlbnQsIHJlbmRlckxhbmVzKSkge1xuICAgIHZhciBwcmV2UHJvcHMgPSB0eXBlLm1lbW9pemVkUHJvcHM7XG4gICAgQ29tcG9uZW50ID0gQ29tcG9uZW50LmNvbXBhcmU7XG4gICAgQ29tcG9uZW50ID0gbnVsbCAhPT0gQ29tcG9uZW50ID8gQ29tcG9uZW50IDogc2hhbGxvd0VxdWFsO1xuICAgIGlmIChDb21wb25lbnQocHJldlByb3BzLCBuZXh0UHJvcHMpICYmIGN1cnJlbnQucmVmID09PSB3b3JrSW5Qcm9ncmVzcy5yZWYpXG4gICAgICByZXR1cm4gYmFpbG91dE9uQWxyZWFkeUZpbmlzaGVkV29yayhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpO1xuICB9XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDE7XG4gIGN1cnJlbnQgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzcyh0eXBlLCBuZXh0UHJvcHMpO1xuICBjdXJyZW50LnJlZiA9IHdvcmtJblByb2dyZXNzLnJlZjtcbiAgY3VycmVudC5yZXR1cm4gPSB3b3JrSW5Qcm9ncmVzcztcbiAgcmV0dXJuICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IGN1cnJlbnQpO1xufVxuZnVuY3Rpb24gdXBkYXRlU2ltcGxlTWVtb0NvbXBvbmVudChcbiAgY3VycmVudCxcbiAgd29ya0luUHJvZ3Jlc3MsXG4gIENvbXBvbmVudCxcbiAgbmV4dFByb3BzLFxuICByZW5kZXJMYW5lc1xuKSB7XG4gIGlmIChudWxsICE9PSBjdXJyZW50KSB7XG4gICAgdmFyIHByZXZQcm9wcyA9IGN1cnJlbnQubWVtb2l6ZWRQcm9wcztcbiAgICBpZiAoXG4gICAgICBzaGFsbG93RXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpICYmXG4gICAgICBjdXJyZW50LnJlZiA9PT0gd29ya0luUHJvZ3Jlc3MucmVmXG4gICAgKVxuICAgICAgaWYgKFxuICAgICAgICAoKGRpZFJlY2VpdmVVcGRhdGUgPSAhMSksXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMgPSBuZXh0UHJvcHMgPSBwcmV2UHJvcHMpLFxuICAgICAgICBjaGVja1NjaGVkdWxlZFVwZGF0ZU9yQ29udGV4dChjdXJyZW50LCByZW5kZXJMYW5lcykpXG4gICAgICApXG4gICAgICAgIDAgIT09IChjdXJyZW50LmZsYWdzICYgMTMxMDcyKSAmJiAoZGlkUmVjZWl2ZVVwZGF0ZSA9ICEwKTtcbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3MubGFuZXMgPSBjdXJyZW50LmxhbmVzKSxcbiAgICAgICAgICBiYWlsb3V0T25BbHJlYWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcylcbiAgICAgICAgKTtcbiAgfVxuICByZXR1cm4gdXBkYXRlRnVuY3Rpb25Db21wb25lbnQoXG4gICAgY3VycmVudCxcbiAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICBDb21wb25lbnQsXG4gICAgbmV4dFByb3BzLFxuICAgIHJlbmRlckxhbmVzXG4gICk7XG59XG5mdW5jdGlvbiB1cGRhdGVPZmZzY3JlZW5Db21wb25lbnQoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIHJlbmRlckxhbmVzKSB7XG4gIHZhciBuZXh0UHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMsXG4gICAgbmV4dENoaWxkcmVuID0gbmV4dFByb3BzLmNoaWxkcmVuLFxuICAgIG5leHRJc0RldGFjaGVkID0gMCAhPT0gKHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZS5fcGVuZGluZ1Zpc2liaWxpdHkgJiAyKSxcbiAgICBwcmV2U3RhdGUgPSBudWxsICE9PSBjdXJyZW50ID8gY3VycmVudC5tZW1vaXplZFN0YXRlIDogbnVsbDtcbiAgbWFya1JlZihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcyk7XG4gIGlmIChcImhpZGRlblwiID09PSBuZXh0UHJvcHMubW9kZSB8fCBuZXh0SXNEZXRhY2hlZCkge1xuICAgIGlmICgwICE9PSAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJiAxMjgpKSB7XG4gICAgICBuZXh0UHJvcHMgPVxuICAgICAgICBudWxsICE9PSBwcmV2U3RhdGUgPyBwcmV2U3RhdGUuYmFzZUxhbmVzIHwgcmVuZGVyTGFuZXMgOiByZW5kZXJMYW5lcztcbiAgICAgIGlmIChudWxsICE9PSBjdXJyZW50KSB7XG4gICAgICAgIG5leHRDaGlsZHJlbiA9IHdvcmtJblByb2dyZXNzLmNoaWxkID0gY3VycmVudC5jaGlsZDtcbiAgICAgICAgZm9yIChuZXh0SXNEZXRhY2hlZCA9IDA7IG51bGwgIT09IG5leHRDaGlsZHJlbjsgKVxuICAgICAgICAgIChuZXh0SXNEZXRhY2hlZCA9XG4gICAgICAgICAgICBuZXh0SXNEZXRhY2hlZCB8IG5leHRDaGlsZHJlbi5sYW5lcyB8IG5leHRDaGlsZHJlbi5jaGlsZExhbmVzKSxcbiAgICAgICAgICAgIChuZXh0Q2hpbGRyZW4gPSBuZXh0Q2hpbGRyZW4uc2libGluZyk7XG4gICAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkTGFuZXMgPSBuZXh0SXNEZXRhY2hlZCAmIH5uZXh0UHJvcHM7XG4gICAgICB9IGVsc2UgKHdvcmtJblByb2dyZXNzLmNoaWxkTGFuZXMgPSAwKSwgKHdvcmtJblByb2dyZXNzLmNoaWxkID0gbnVsbCk7XG4gICAgICByZXR1cm4gZGVmZXJIaWRkZW5PZmZzY3JlZW5Db21wb25lbnQoXG4gICAgICAgIGN1cnJlbnQsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgIHJlbmRlckxhbmVzXG4gICAgICApO1xuICAgIH1cbiAgICBpZiAoMCAhPT0gKHJlbmRlckxhbmVzICYgNTM2ODcwOTEyKSlcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0geyBiYXNlTGFuZXM6IDAsIGNhY2hlUG9vbDogbnVsbCB9KSxcbiAgICAgICAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgICAgIHB1c2hUcmFuc2l0aW9uKFxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgICBudWxsICE9PSBwcmV2U3RhdGUgPyBwcmV2U3RhdGUuY2FjaGVQb29sIDogbnVsbFxuICAgICAgICAgICksXG4gICAgICAgIG51bGwgIT09IHByZXZTdGF0ZVxuICAgICAgICAgID8gcHVzaEhpZGRlbkNvbnRleHQod29ya0luUHJvZ3Jlc3MsIHByZXZTdGF0ZSlcbiAgICAgICAgICA6IHJldXNlSGlkZGVuQ29udGV4dE9uU3RhY2soKSxcbiAgICAgICAgcHVzaE9mZnNjcmVlblN1c3BlbnNlSGFuZGxlcih3b3JrSW5Qcm9ncmVzcyk7XG4gICAgZWxzZVxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKHdvcmtJblByb2dyZXNzLmxhbmVzID0gd29ya0luUHJvZ3Jlc3MuY2hpbGRMYW5lcyA9IDUzNjg3MDkxMiksXG4gICAgICAgIGRlZmVySGlkZGVuT2Zmc2NyZWVuQ29tcG9uZW50KFxuICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgbnVsbCAhPT0gcHJldlN0YXRlID8gcHJldlN0YXRlLmJhc2VMYW5lcyB8IHJlbmRlckxhbmVzIDogcmVuZGVyTGFuZXMsXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgfSBlbHNlXG4gICAgbnVsbCAhPT0gcHJldlN0YXRlXG4gICAgICA/IChwdXNoVHJhbnNpdGlvbih3b3JrSW5Qcm9ncmVzcywgcHJldlN0YXRlLmNhY2hlUG9vbCksXG4gICAgICAgIHB1c2hIaWRkZW5Db250ZXh0KHdvcmtJblByb2dyZXNzLCBwcmV2U3RhdGUpLFxuICAgICAgICByZXVzZVN1c3BlbnNlSGFuZGxlck9uU3RhY2sod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IG51bGwpKVxuICAgICAgOiAobnVsbCAhPT0gY3VycmVudCAmJiBwdXNoVHJhbnNpdGlvbih3b3JrSW5Qcm9ncmVzcywgbnVsbCksXG4gICAgICAgIHJldXNlSGlkZGVuQ29udGV4dE9uU3RhY2soKSxcbiAgICAgICAgcmV1c2VTdXNwZW5zZUhhbmRsZXJPblN0YWNrKHdvcmtJblByb2dyZXNzKSk7XG4gIHJlY29uY2lsZUNoaWxkcmVuKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCBuZXh0Q2hpbGRyZW4sIHJlbmRlckxhbmVzKTtcbiAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNoaWxkO1xufVxuZnVuY3Rpb24gZGVmZXJIaWRkZW5PZmZzY3JlZW5Db21wb25lbnQoXG4gIGN1cnJlbnQsXG4gIHdvcmtJblByb2dyZXNzLFxuICBuZXh0QmFzZUxhbmVzLFxuICByZW5kZXJMYW5lc1xuKSB7XG4gIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBwZWVrQ2FjaGVGcm9tUG9vbCgpO1xuICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPVxuICAgIG51bGwgPT09IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFxuICAgICAgPyBudWxsXG4gICAgICA6IHsgcGFyZW50OiBDYWNoZUNvbnRleHQuX2N1cnJlbnRWYWx1ZSwgcG9vbDogSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0IH07XG4gIHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSB7XG4gICAgYmFzZUxhbmVzOiBuZXh0QmFzZUxhbmVzLFxuICAgIGNhY2hlUG9vbDogSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gIH07XG4gIG51bGwgIT09IGN1cnJlbnQgJiYgcHVzaFRyYW5zaXRpb24od29ya0luUHJvZ3Jlc3MsIG51bGwpO1xuICByZXVzZUhpZGRlbkNvbnRleHRPblN0YWNrKCk7XG4gIHB1c2hPZmZzY3JlZW5TdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICBudWxsICE9PSBjdXJyZW50ICYmXG4gICAgcHJvcGFnYXRlUGFyZW50Q29udGV4dENoYW5nZXMoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIHJlbmRlckxhbmVzLCAhMCk7XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gbWFya1JlZihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcykge1xuICB2YXIgcmVmID0gd29ya0luUHJvZ3Jlc3MucmVmO1xuICBpZiAobnVsbCA9PT0gcmVmKVxuICAgIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAgIG51bGwgIT09IGN1cnJlbnQucmVmICYmXG4gICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMjA5NzY2NCk7XG4gIGVsc2Uge1xuICAgIGlmIChcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiByZWYgJiYgXCJvYmplY3RcIiAhPT0gdHlwZW9mIHJlZilcbiAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjg0KSk7XG4gICAgaWYgKG51bGwgPT09IGN1cnJlbnQgfHwgY3VycmVudC5yZWYgIT09IHJlZilcbiAgICAgIHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDIwOTc2NjQ7XG4gIH1cbn1cbmZ1bmN0aW9uIHVwZGF0ZUZ1bmN0aW9uQ29tcG9uZW50KFxuICBjdXJyZW50LFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgQ29tcG9uZW50LFxuICBuZXh0UHJvcHMsXG4gIHJlbmRlckxhbmVzXG4pIHtcbiAgcHJlcGFyZVRvUmVhZENvbnRleHQod29ya0luUHJvZ3Jlc3MpO1xuICBDb21wb25lbnQgPSByZW5kZXJXaXRoSG9va3MoXG4gICAgY3VycmVudCxcbiAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICBDb21wb25lbnQsXG4gICAgbmV4dFByb3BzLFxuICAgIHZvaWQgMCxcbiAgICByZW5kZXJMYW5lc1xuICApO1xuICBuZXh0UHJvcHMgPSBjaGVja0RpZFJlbmRlcklkSG9vaygpO1xuICBpZiAobnVsbCAhPT0gY3VycmVudCAmJiAhZGlkUmVjZWl2ZVVwZGF0ZSlcbiAgICByZXR1cm4gKFxuICAgICAgYmFpbG91dEhvb2tzKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcyksXG4gICAgICBiYWlsb3V0T25BbHJlYWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcylcbiAgICApO1xuICBpc0h5ZHJhdGluZyAmJiBuZXh0UHJvcHMgJiYgcHVzaE1hdGVyaWFsaXplZFRyZWVJZCh3b3JrSW5Qcm9ncmVzcyk7XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDE7XG4gIHJlY29uY2lsZUNoaWxkcmVuKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCBDb21wb25lbnQsIHJlbmRlckxhbmVzKTtcbiAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNoaWxkO1xufVxuZnVuY3Rpb24gcmVwbGF5RnVuY3Rpb25Db21wb25lbnQoXG4gIGN1cnJlbnQsXG4gIHdvcmtJblByb2dyZXNzLFxuICBuZXh0UHJvcHMsXG4gIENvbXBvbmVudCxcbiAgc2Vjb25kQXJnLFxuICByZW5kZXJMYW5lc1xuKSB7XG4gIHByZXBhcmVUb1JlYWRDb250ZXh0KHdvcmtJblByb2dyZXNzKTtcbiAgd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBudWxsO1xuICBuZXh0UHJvcHMgPSByZW5kZXJXaXRoSG9va3NBZ2FpbihcbiAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICBDb21wb25lbnQsXG4gICAgbmV4dFByb3BzLFxuICAgIHNlY29uZEFyZ1xuICApO1xuICBmaW5pc2hSZW5kZXJpbmdIb29rcyhjdXJyZW50KTtcbiAgQ29tcG9uZW50ID0gY2hlY2tEaWRSZW5kZXJJZEhvb2soKTtcbiAgaWYgKG51bGwgIT09IGN1cnJlbnQgJiYgIWRpZFJlY2VpdmVVcGRhdGUpXG4gICAgcmV0dXJuIChcbiAgICAgIGJhaWxvdXRIb29rcyhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpLFxuICAgICAgYmFpbG91dE9uQWxyZWFkeUZpbmlzaGVkV29yayhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpXG4gICAgKTtcbiAgaXNIeWRyYXRpbmcgJiYgQ29tcG9uZW50ICYmIHB1c2hNYXRlcmlhbGl6ZWRUcmVlSWQod29ya0luUHJvZ3Jlc3MpO1xuICB3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxO1xuICByZWNvbmNpbGVDaGlsZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLCByZW5kZXJMYW5lcyk7XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbn1cbmZ1bmN0aW9uIHVwZGF0ZUNsYXNzQ29tcG9uZW50KFxuICBjdXJyZW50LFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgQ29tcG9uZW50LFxuICBuZXh0UHJvcHMsXG4gIHJlbmRlckxhbmVzXG4pIHtcbiAgcHJlcGFyZVRvUmVhZENvbnRleHQod29ya0luUHJvZ3Jlc3MpO1xuICBpZiAobnVsbCA9PT0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlKSB7XG4gICAgdmFyIGNvbnRleHQgPSBlbXB0eUNvbnRleHRPYmplY3QsXG4gICAgICBjb250ZXh0VHlwZSA9IENvbXBvbmVudC5jb250ZXh0VHlwZTtcbiAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgY29udGV4dFR5cGUgJiZcbiAgICAgIG51bGwgIT09IGNvbnRleHRUeXBlICYmXG4gICAgICAoY29udGV4dCA9IHJlYWRDb250ZXh0KGNvbnRleHRUeXBlKSk7XG4gICAgY29udGV4dCA9IG5ldyBDb21wb25lbnQobmV4dFByb3BzLCBjb250ZXh0KTtcbiAgICB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID1cbiAgICAgIG51bGwgIT09IGNvbnRleHQuc3RhdGUgJiYgdm9pZCAwICE9PSBjb250ZXh0LnN0YXRlID8gY29udGV4dC5zdGF0ZSA6IG51bGw7XG4gICAgY29udGV4dC51cGRhdGVyID0gY2xhc3NDb21wb25lbnRVcGRhdGVyO1xuICAgIHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSA9IGNvbnRleHQ7XG4gICAgY29udGV4dC5fcmVhY3RJbnRlcm5hbHMgPSB3b3JrSW5Qcm9ncmVzcztcbiAgICBjb250ZXh0ID0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlO1xuICAgIGNvbnRleHQucHJvcHMgPSBuZXh0UHJvcHM7XG4gICAgY29udGV4dC5zdGF0ZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgY29udGV4dC5yZWZzID0ge307XG4gICAgaW5pdGlhbGl6ZVVwZGF0ZVF1ZXVlKHdvcmtJblByb2dyZXNzKTtcbiAgICBjb250ZXh0VHlwZSA9IENvbXBvbmVudC5jb250ZXh0VHlwZTtcbiAgICBjb250ZXh0LmNvbnRleHQgPVxuICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGNvbnRleHRUeXBlICYmIG51bGwgIT09IGNvbnRleHRUeXBlXG4gICAgICAgID8gcmVhZENvbnRleHQoY29udGV4dFR5cGUpXG4gICAgICAgIDogZW1wdHlDb250ZXh0T2JqZWN0O1xuICAgIGNvbnRleHQuc3RhdGUgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlO1xuICAgIGNvbnRleHRUeXBlID0gQ29tcG9uZW50LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcztcbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0VHlwZSAmJlxuICAgICAgKGFwcGx5RGVyaXZlZFN0YXRlRnJvbVByb3BzKFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICBjb250ZXh0VHlwZSxcbiAgICAgICAgbmV4dFByb3BzXG4gICAgICApLFxuICAgICAgKGNvbnRleHQuc3RhdGUgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlKSk7XG4gICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgQ29tcG9uZW50LmdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyB8fFxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY29udGV4dC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fFxuICAgICAgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCAmJlxuICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudFdpbGxNb3VudCkgfHxcbiAgICAgICgoY29udGV4dFR5cGUgPSBjb250ZXh0LnN0YXRlKSxcbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNvbnRleHQuY29tcG9uZW50V2lsbE1vdW50ICYmXG4gICAgICAgIGNvbnRleHQuY29tcG9uZW50V2lsbE1vdW50KCksXG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgY29udGV4dC5VTlNBRkVfY29tcG9uZW50V2lsbE1vdW50KCksXG4gICAgICBjb250ZXh0VHlwZSAhPT0gY29udGV4dC5zdGF0ZSAmJlxuICAgICAgICBjbGFzc0NvbXBvbmVudFVwZGF0ZXIuZW5xdWV1ZVJlcGxhY2VTdGF0ZShjb250ZXh0LCBjb250ZXh0LnN0YXRlLCBudWxsKSxcbiAgICAgIHByb2Nlc3NVcGRhdGVRdWV1ZSh3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLCBjb250ZXh0LCByZW5kZXJMYW5lcyksXG4gICAgICBzdXNwZW5kSWZVcGRhdGVSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uKCksXG4gICAgICAoY29udGV4dC5zdGF0ZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUpKTtcbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudERpZE1vdW50ICYmXG4gICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gNDE5NDMwOCk7XG4gICAgbmV4dFByb3BzID0gITA7XG4gIH0gZWxzZSBpZiAobnVsbCA9PT0gY3VycmVudCkge1xuICAgIGNvbnRleHQgPSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGU7XG4gICAgdmFyIHVucmVzb2x2ZWRPbGRQcm9wcyA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkUHJvcHMsXG4gICAgICBvbGRQcm9wcyA9IHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKENvbXBvbmVudCwgdW5yZXNvbHZlZE9sZFByb3BzKTtcbiAgICBjb250ZXh0LnByb3BzID0gb2xkUHJvcHM7XG4gICAgdmFyIG9sZENvbnRleHQgPSBjb250ZXh0LmNvbnRleHQsXG4gICAgICBjb250ZXh0VHlwZSRqc2NvbXAkMCA9IENvbXBvbmVudC5jb250ZXh0VHlwZTtcbiAgICBjb250ZXh0VHlwZSA9IGVtcHR5Q29udGV4dE9iamVjdDtcbiAgICBcIm9iamVjdFwiID09PSB0eXBlb2YgY29udGV4dFR5cGUkanNjb21wJDAgJiZcbiAgICAgIG51bGwgIT09IGNvbnRleHRUeXBlJGpzY29tcCQwICYmXG4gICAgICAoY29udGV4dFR5cGUgPSByZWFkQ29udGV4dChjb250ZXh0VHlwZSRqc2NvbXAkMCkpO1xuICAgIHZhciBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSBDb21wb25lbnQuZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzO1xuICAgIGNvbnRleHRUeXBlJGpzY29tcCQwID1cbiAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyB8fFxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY29udGV4dC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZTtcbiAgICB1bnJlc29sdmVkT2xkUHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMgIT09IHVucmVzb2x2ZWRPbGRQcm9wcztcbiAgICBjb250ZXh0VHlwZSRqc2NvbXAkMCB8fFxuICAgICAgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiZcbiAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY29udGV4dC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB8fFxuICAgICAgKCh1bnJlc29sdmVkT2xkUHJvcHMgfHwgb2xkQ29udGV4dCAhPT0gY29udGV4dFR5cGUpICYmXG4gICAgICAgIGNhbGxDb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIGNvbnRleHQsXG4gICAgICAgICAgbmV4dFByb3BzLFxuICAgICAgICAgIGNvbnRleHRUeXBlXG4gICAgICAgICkpO1xuICAgIGhhc0ZvcmNlVXBkYXRlID0gITE7XG4gICAgdmFyIG9sZFN0YXRlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTtcbiAgICBjb250ZXh0LnN0YXRlID0gb2xkU3RhdGU7XG4gICAgcHJvY2Vzc1VwZGF0ZVF1ZXVlKHdvcmtJblByb2dyZXNzLCBuZXh0UHJvcHMsIGNvbnRleHQsIHJlbmRlckxhbmVzKTtcbiAgICBzdXNwZW5kSWZVcGRhdGVSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uKCk7XG4gICAgb2xkQ29udGV4dCA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgdW5yZXNvbHZlZE9sZFByb3BzIHx8IG9sZFN0YXRlICE9PSBvbGRDb250ZXh0IHx8IGhhc0ZvcmNlVXBkYXRlXG4gICAgICA/IChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgJiZcbiAgICAgICAgICAoYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMoXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgIENvbXBvbmVudCxcbiAgICAgICAgICAgIGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyxcbiAgICAgICAgICAgIG5leHRQcm9wc1xuICAgICAgICAgICksXG4gICAgICAgICAgKG9sZENvbnRleHQgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlKSksXG4gICAgICAgIChvbGRQcm9wcyA9XG4gICAgICAgICAgaGFzRm9yY2VVcGRhdGUgfHxcbiAgICAgICAgICBjaGVja1Nob3VsZENvbXBvbmVudFVwZGF0ZShcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgQ29tcG9uZW50LFxuICAgICAgICAgICAgb2xkUHJvcHMsXG4gICAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgICBvbGRTdGF0ZSxcbiAgICAgICAgICAgIG9sZENvbnRleHQsXG4gICAgICAgICAgICBjb250ZXh0VHlwZVxuICAgICAgICAgICkpXG4gICAgICAgICAgPyAoY29udGV4dFR5cGUkanNjb21wJDAgfHxcbiAgICAgICAgICAgICAgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuVU5TQUZFX2NvbXBvbmVudFdpbGxNb3VudCAmJlxuICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuY29tcG9uZW50V2lsbE1vdW50KSB8fFxuICAgICAgICAgICAgICAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY29udGV4dC5jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBvbmVudFdpbGxNb3VudCgpLFxuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQgJiZcbiAgICAgICAgICAgICAgICBjb250ZXh0LlVOU0FGRV9jb21wb25lbnRXaWxsTW91bnQoKSksXG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudERpZE1vdW50ICYmXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA0MTk0MzA4KSlcbiAgICAgICAgICA6IChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudERpZE1vdW50ICYmXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA0MTk0MzA4KSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzID0gbmV4dFByb3BzKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gb2xkQ29udGV4dCkpLFxuICAgICAgICAoY29udGV4dC5wcm9wcyA9IG5leHRQcm9wcyksXG4gICAgICAgIChjb250ZXh0LnN0YXRlID0gb2xkQ29udGV4dCksXG4gICAgICAgIChjb250ZXh0LmNvbnRleHQgPSBjb250ZXh0VHlwZSksXG4gICAgICAgIChuZXh0UHJvcHMgPSBvbGRQcm9wcykpXG4gICAgICA6IChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudERpZE1vdW50ICYmXG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDQxOTQzMDgpLFxuICAgICAgICAobmV4dFByb3BzID0gITEpKTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZXh0ID0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlO1xuICAgIGNsb25lVXBkYXRlUXVldWUoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MpO1xuICAgIGNvbnRleHRUeXBlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcztcbiAgICBjb250ZXh0VHlwZSRqc2NvbXAkMCA9IHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKENvbXBvbmVudCwgY29udGV4dFR5cGUpO1xuICAgIGNvbnRleHQucHJvcHMgPSBjb250ZXh0VHlwZSRqc2NvbXAkMDtcbiAgICBnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHM7XG4gICAgb2xkU3RhdGUgPSBjb250ZXh0LmNvbnRleHQ7XG4gICAgb2xkQ29udGV4dCA9IENvbXBvbmVudC5jb250ZXh0VHlwZTtcbiAgICBvbGRQcm9wcyA9IGVtcHR5Q29udGV4dE9iamVjdDtcbiAgICBcIm9iamVjdFwiID09PSB0eXBlb2Ygb2xkQ29udGV4dCAmJlxuICAgICAgbnVsbCAhPT0gb2xkQ29udGV4dCAmJlxuICAgICAgKG9sZFByb3BzID0gcmVhZENvbnRleHQob2xkQ29udGV4dCkpO1xuICAgIHVucmVzb2x2ZWRPbGRQcm9wcyA9IENvbXBvbmVudC5nZXREZXJpdmVkU3RhdGVGcm9tUHJvcHM7XG4gICAgKG9sZENvbnRleHQgPVxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdW5yZXNvbHZlZE9sZFByb3BzIHx8XG4gICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKSB8fFxuICAgICAgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuVU5TQUZFX2NvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgJiZcbiAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY29udGV4dC5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB8fFxuICAgICAgKChjb250ZXh0VHlwZSAhPT0gZ2V0RGVyaXZlZFN0YXRlRnJvbVByb3BzIHx8IG9sZFN0YXRlICE9PSBvbGRQcm9wcykgJiZcbiAgICAgICAgY2FsbENvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMoXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgb2xkUHJvcHNcbiAgICAgICAgKSk7XG4gICAgaGFzRm9yY2VVcGRhdGUgPSAhMTtcbiAgICBvbGRTdGF0ZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgY29udGV4dC5zdGF0ZSA9IG9sZFN0YXRlO1xuICAgIHByb2Nlc3NVcGRhdGVRdWV1ZSh3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLCBjb250ZXh0LCByZW5kZXJMYW5lcyk7XG4gICAgc3VzcGVuZElmVXBkYXRlUmVhZEZyb21FbnRhbmdsZWRBc3luY0FjdGlvbigpO1xuICAgIHZhciBuZXdTdGF0ZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgY29udGV4dFR5cGUgIT09IGdldERlcml2ZWRTdGF0ZUZyb21Qcm9wcyB8fFxuICAgIG9sZFN0YXRlICE9PSBuZXdTdGF0ZSB8fFxuICAgIGhhc0ZvcmNlVXBkYXRlIHx8XG4gICAgKG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAgIG51bGwgIT09IGN1cnJlbnQuZGVwZW5kZW5jaWVzICYmXG4gICAgICBjaGVja0lmQ29udGV4dENoYW5nZWQoY3VycmVudC5kZXBlbmRlbmNpZXMpKVxuICAgICAgPyAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdW5yZXNvbHZlZE9sZFByb3BzICYmXG4gICAgICAgICAgKGFwcGx5RGVyaXZlZFN0YXRlRnJvbVByb3BzKFxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICB1bnJlc29sdmVkT2xkUHJvcHMsXG4gICAgICAgICAgICBuZXh0UHJvcHNcbiAgICAgICAgICApLFxuICAgICAgICAgIChuZXdTdGF0ZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUpKSxcbiAgICAgICAgKGNvbnRleHRUeXBlJGpzY29tcCQwID1cbiAgICAgICAgICBoYXNGb3JjZVVwZGF0ZSB8fFxuICAgICAgICAgIGNoZWNrU2hvdWxkQ29tcG9uZW50VXBkYXRlKFxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgICBDb21wb25lbnQsXG4gICAgICAgICAgICBjb250ZXh0VHlwZSRqc2NvbXAkMCxcbiAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgIG9sZFN0YXRlLFxuICAgICAgICAgICAgbmV3U3RhdGUsXG4gICAgICAgICAgICBvbGRQcm9wc1xuICAgICAgICAgICkgfHxcbiAgICAgICAgICAobnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gY3VycmVudC5kZXBlbmRlbmNpZXMgJiZcbiAgICAgICAgICAgIGNoZWNrSWZDb250ZXh0Q2hhbmdlZChjdXJyZW50LmRlcGVuZGVuY2llcykpKVxuICAgICAgICAgID8gKG9sZENvbnRleHQgfHxcbiAgICAgICAgICAgICAgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuVU5TQUZFX2NvbXBvbmVudFdpbGxVcGRhdGUgJiZcbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudFdpbGxVcGRhdGUpIHx8XG4gICAgICAgICAgICAgIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LmNvbXBvbmVudFdpbGxVcGRhdGUgJiZcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNvbXBvbmVudFdpbGxVcGRhdGUobmV4dFByb3BzLCBuZXdTdGF0ZSwgb2xkUHJvcHMpLFxuICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjb250ZXh0LlVOU0FGRV9jb21wb25lbnRXaWxsVXBkYXRlICYmXG4gICAgICAgICAgICAgICAgY29udGV4dC5VTlNBRkVfY29tcG9uZW50V2lsbFVwZGF0ZShcbiAgICAgICAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgICAgICAgIG5ld1N0YXRlLFxuICAgICAgICAgICAgICAgICAgb2xkUHJvcHNcbiAgICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNvbnRleHQuY29tcG9uZW50RGlkVXBkYXRlICYmXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA0KSxcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNvbnRleHQuZ2V0U25hcHNob3RCZWZvcmVVcGRhdGUgJiZcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDEwMjQpKVxuICAgICAgICAgIDogKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuY29tcG9uZW50RGlkVXBkYXRlIHx8XG4gICAgICAgICAgICAgIChjb250ZXh0VHlwZSA9PT0gY3VycmVudC5tZW1vaXplZFByb3BzICYmXG4gICAgICAgICAgICAgICAgb2xkU3RhdGUgPT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSkgfHxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDQpLFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY29udGV4dC5nZXRTbmFwc2hvdEJlZm9yZVVwZGF0ZSB8fFxuICAgICAgICAgICAgICAoY29udGV4dFR5cGUgPT09IGN1cnJlbnQubWVtb2l6ZWRQcm9wcyAmJlxuICAgICAgICAgICAgICAgIG9sZFN0YXRlID09PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUpIHx8XG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxMDI0KSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFByb3BzID0gbmV4dFByb3BzKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gbmV3U3RhdGUpKSxcbiAgICAgICAgKGNvbnRleHQucHJvcHMgPSBuZXh0UHJvcHMpLFxuICAgICAgICAoY29udGV4dC5zdGF0ZSA9IG5ld1N0YXRlKSxcbiAgICAgICAgKGNvbnRleHQuY29udGV4dCA9IG9sZFByb3BzKSxcbiAgICAgICAgKG5leHRQcm9wcyA9IGNvbnRleHRUeXBlJGpzY29tcCQwKSlcbiAgICAgIDogKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIGNvbnRleHQuY29tcG9uZW50RGlkVXBkYXRlIHx8XG4gICAgICAgICAgKGNvbnRleHRUeXBlID09PSBjdXJyZW50Lm1lbW9pemVkUHJvcHMgJiZcbiAgICAgICAgICAgIG9sZFN0YXRlID09PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUpIHx8XG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDQpLFxuICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBjb250ZXh0LmdldFNuYXBzaG90QmVmb3JlVXBkYXRlIHx8XG4gICAgICAgICAgKGNvbnRleHRUeXBlID09PSBjdXJyZW50Lm1lbW9pemVkUHJvcHMgJiZcbiAgICAgICAgICAgIG9sZFN0YXRlID09PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUpIHx8XG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDEwMjQpLFxuICAgICAgICAobmV4dFByb3BzID0gITEpKTtcbiAgfVxuICBjb250ZXh0ID0gbmV4dFByb3BzO1xuICBtYXJrUmVmKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKTtcbiAgbmV4dFByb3BzID0gMCAhPT0gKHdvcmtJblByb2dyZXNzLmZsYWdzICYgMTI4KTtcbiAgY29udGV4dCB8fCBuZXh0UHJvcHNcbiAgICA/ICgoY29udGV4dCA9IHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSksXG4gICAgICAoQ29tcG9uZW50ID1cbiAgICAgICAgbmV4dFByb3BzICYmIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIENvbXBvbmVudC5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3JcbiAgICAgICAgICA/IG51bGxcbiAgICAgICAgICA6IGNvbnRleHQucmVuZGVyKCkpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDEpLFxuICAgICAgbnVsbCAhPT0gY3VycmVudCAmJiBuZXh0UHJvcHNcbiAgICAgICAgPyAoKHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmVjb25jaWxlQ2hpbGRGaWJlcnMoXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgIGN1cnJlbnQuY2hpbGQsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICApKSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuY2hpbGQgPSByZWNvbmNpbGVDaGlsZEZpYmVycyhcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIENvbXBvbmVudCxcbiAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgKSkpXG4gICAgICAgIDogcmVjb25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIENvbXBvbmVudCwgcmVuZGVyTGFuZXMpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBjb250ZXh0LnN0YXRlKSxcbiAgICAgIChjdXJyZW50ID0gd29ya0luUHJvZ3Jlc3MuY2hpbGQpKVxuICAgIDogKGN1cnJlbnQgPSBiYWlsb3V0T25BbHJlYWR5RmluaXNoZWRXb3JrKFxuICAgICAgICBjdXJyZW50LFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICkpO1xuICByZXR1cm4gY3VycmVudDtcbn1cbmZ1bmN0aW9uIG1vdW50SG9zdFJvb3RXaXRob3V0SHlkcmF0aW5nKFxuICBjdXJyZW50LFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgbmV4dENoaWxkcmVuLFxuICByZW5kZXJMYW5lc1xuKSB7XG4gIHJlc2V0SHlkcmF0aW9uU3RhdGUoKTtcbiAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMjU2O1xuICByZWNvbmNpbGVDaGlsZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgbmV4dENoaWxkcmVuLCByZW5kZXJMYW5lcyk7XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbn1cbnZhciBTVVNQRU5ERURfTUFSS0VSID0geyBkZWh5ZHJhdGVkOiBudWxsLCB0cmVlQ29udGV4dDogbnVsbCwgcmV0cnlMYW5lOiAwIH07XG5mdW5jdGlvbiBtb3VudFN1c3BlbnNlT2Zmc2NyZWVuU3RhdGUocmVuZGVyTGFuZXMpIHtcbiAgcmV0dXJuIHsgYmFzZUxhbmVzOiByZW5kZXJMYW5lcywgY2FjaGVQb29sOiBnZXRTdXNwZW5kZWRDYWNoZSgpIH07XG59XG5mdW5jdGlvbiBnZXRSZW1haW5pbmdXb3JrSW5QcmltYXJ5VHJlZShcbiAgY3VycmVudCxcbiAgcHJpbWFyeVRyZWVEaWREZWZlcixcbiAgcmVuZGVyTGFuZXNcbikge1xuICBjdXJyZW50ID0gbnVsbCAhPT0gY3VycmVudCA/IGN1cnJlbnQuY2hpbGRMYW5lcyAmIH5yZW5kZXJMYW5lcyA6IDA7XG4gIHByaW1hcnlUcmVlRGlkRGVmZXIgJiYgKGN1cnJlbnQgfD0gd29ya0luUHJvZ3Jlc3NEZWZlcnJlZExhbmUpO1xuICByZXR1cm4gY3VycmVudDtcbn1cbmZ1bmN0aW9uIHVwZGF0ZVN1c3BlbnNlQ29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcykge1xuICB2YXIgbmV4dFByb3BzID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLFxuICAgIHNob3dGYWxsYmFjayA9ICExLFxuICAgIGRpZFN1c3BlbmQgPSAwICE9PSAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJiAxMjgpLFxuICAgIEpTQ29tcGlsZXJfdGVtcDtcbiAgKEpTQ29tcGlsZXJfdGVtcCA9IGRpZFN1c3BlbmQpIHx8XG4gICAgKEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICBudWxsICE9PSBjdXJyZW50ICYmIG51bGwgPT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZVxuICAgICAgICA/ICExXG4gICAgICAgIDogMCAhPT0gKHN1c3BlbnNlU3RhY2tDdXJzb3IuY3VycmVudCAmIDIpKTtcbiAgSlNDb21waWxlcl90ZW1wICYmICgoc2hvd0ZhbGxiYWNrID0gITApLCAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJj0gLTEyOSkpO1xuICBKU0NvbXBpbGVyX3RlbXAgPSAwICE9PSAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJiAzMik7XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzICY9IC0zMztcbiAgaWYgKG51bGwgPT09IGN1cnJlbnQpIHtcbiAgICBpZiAoaXNIeWRyYXRpbmcpIHtcbiAgICAgIHNob3dGYWxsYmFja1xuICAgICAgICA/IHB1c2hQcmltYXJ5VHJlZVN1c3BlbnNlSGFuZGxlcih3b3JrSW5Qcm9ncmVzcylcbiAgICAgICAgOiByZXVzZVN1c3BlbnNlSGFuZGxlck9uU3RhY2sod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgaWYgKGlzSHlkcmF0aW5nKSB7XG4gICAgICAgIHZhciBuZXh0SW5zdGFuY2UgPSBuZXh0SHlkcmF0YWJsZUluc3RhbmNlLFxuICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMDtcbiAgICAgICAgaWYgKChKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAgPSBuZXh0SW5zdGFuY2UpKSB7XG4gICAgICAgICAgYzoge1xuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwID0gbmV4dEluc3RhbmNlO1xuICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgbmV4dEluc3RhbmNlID0gcm9vdE9yU2luZ2xldG9uQ29udGV4dDtcbiAgICAgICAgICAgICAgOCAhPT0gSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLm5vZGVUeXBlO1xuXG4gICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgaWYgKCFuZXh0SW5zdGFuY2UpIHtcbiAgICAgICAgICAgICAgICBuZXh0SW5zdGFuY2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrIGM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwID0gZ2V0TmV4dEh5ZHJhdGFibGUoXG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLm5leHRTaWJsaW5nXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGlmIChudWxsID09PSBKU0NvbXBpbGVyX3RlbXAkanNjb21wJDApIHtcbiAgICAgICAgICAgICAgICBuZXh0SW5zdGFuY2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIGJyZWFrIGM7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5leHRJbnN0YW5jZSA9IEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMDtcbiAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCAhPT0gbmV4dEluc3RhbmNlXG4gICAgICAgICAgICA/ICgod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBkZWh5ZHJhdGVkOiBuZXh0SW5zdGFuY2UsXG4gICAgICAgICAgICAgICAgdHJlZUNvbnRleHQ6XG4gICAgICAgICAgICAgICAgICBudWxsICE9PSB0cmVlQ29udGV4dFByb3ZpZGVyXG4gICAgICAgICAgICAgICAgICAgID8geyBpZDogdHJlZUNvbnRleHRJZCwgb3ZlcmZsb3c6IHRyZWVDb250ZXh0T3ZlcmZsb3cgfVxuICAgICAgICAgICAgICAgICAgICA6IG51bGwsXG4gICAgICAgICAgICAgICAgcmV0cnlMYW5lOiA1MzY4NzA5MTJcbiAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICAgIChKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAgPSBjcmVhdGVGaWJlckltcGxDbGFzcyhcbiAgICAgICAgICAgICAgICAxOCxcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgMFxuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgKEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMC5zdGF0ZU5vZGUgPSBuZXh0SW5zdGFuY2UpLFxuICAgICAgICAgICAgICAoSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLnJldHVybiA9IHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLmNoaWxkID0gSlNDb21waWxlcl90ZW1wJGpzY29tcCQwKSxcbiAgICAgICAgICAgICAgKGh5ZHJhdGlvblBhcmVudEZpYmVyID0gd29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAobmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IG51bGwpLFxuICAgICAgICAgICAgICAoSlNDb21waWxlcl90ZW1wJGpzY29tcCQwID0gITApKVxuICAgICAgICAgICAgOiAoSlNDb21waWxlcl90ZW1wJGpzY29tcCQwID0gITEpO1xuICAgICAgICB9XG4gICAgICAgIEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMCB8fCB0aHJvd09uSHlkcmF0aW9uTWlzbWF0Y2god29ya0luUHJvZ3Jlc3MpO1xuICAgICAgfVxuICAgICAgbmV4dEluc3RhbmNlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTtcbiAgICAgIGlmIChcbiAgICAgICAgbnVsbCAhPT0gbmV4dEluc3RhbmNlICYmXG4gICAgICAgICgobmV4dEluc3RhbmNlID0gbmV4dEluc3RhbmNlLmRlaHlkcmF0ZWQpLCBudWxsICE9PSBuZXh0SW5zdGFuY2UpXG4gICAgICApXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgXCIkIVwiID09PSBuZXh0SW5zdGFuY2UuZGF0YVxuICAgICAgICAgICAgPyAod29ya0luUHJvZ3Jlc3MubGFuZXMgPSAxNilcbiAgICAgICAgICAgIDogKHdvcmtJblByb2dyZXNzLmxhbmVzID0gNTM2ODcwOTEyKSxcbiAgICAgICAgICBudWxsXG4gICAgICAgICk7XG4gICAgICBwb3BTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICAgIH1cbiAgICBuZXh0SW5zdGFuY2UgPSBuZXh0UHJvcHMuY2hpbGRyZW47XG4gICAgbmV4dFByb3BzID0gbmV4dFByb3BzLmZhbGxiYWNrO1xuICAgIGlmIChzaG93RmFsbGJhY2spXG4gICAgICByZXR1cm4gKFxuICAgICAgICByZXVzZVN1c3BlbnNlSGFuZGxlck9uU3RhY2sod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAoc2hvd0ZhbGxiYWNrID0gd29ya0luUHJvZ3Jlc3MubW9kZSksXG4gICAgICAgIChuZXh0SW5zdGFuY2UgPSBtb3VudFdvcmtJblByb2dyZXNzT2Zmc2NyZWVuRmliZXIoXG4gICAgICAgICAgeyBtb2RlOiBcImhpZGRlblwiLCBjaGlsZHJlbjogbmV4dEluc3RhbmNlIH0sXG4gICAgICAgICAgc2hvd0ZhbGxiYWNrXG4gICAgICAgICkpLFxuICAgICAgICAobmV4dFByb3BzID0gY3JlYXRlRmliZXJGcm9tRnJhZ21lbnQoXG4gICAgICAgICAgbmV4dFByb3BzLFxuICAgICAgICAgIHNob3dGYWxsYmFjayxcbiAgICAgICAgICByZW5kZXJMYW5lcyxcbiAgICAgICAgICBudWxsXG4gICAgICAgICkpLFxuICAgICAgICAobmV4dEluc3RhbmNlLnJldHVybiA9IHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgKG5leHRQcm9wcy5yZXR1cm4gPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgIChuZXh0SW5zdGFuY2Uuc2libGluZyA9IG5leHRQcm9wcyksXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IG5leHRJbnN0YW5jZSksXG4gICAgICAgIChzaG93RmFsbGJhY2sgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZCksXG4gICAgICAgIChzaG93RmFsbGJhY2subWVtb2l6ZWRTdGF0ZSA9IG1vdW50U3VzcGVuc2VPZmZzY3JlZW5TdGF0ZShyZW5kZXJMYW5lcykpLFxuICAgICAgICAoc2hvd0ZhbGxiYWNrLmNoaWxkTGFuZXMgPSBnZXRSZW1haW5pbmdXb3JrSW5QcmltYXJ5VHJlZShcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcCxcbiAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICApKSxcbiAgICAgICAgKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBTVVNQRU5ERURfTUFSS0VSKSxcbiAgICAgICAgbmV4dFByb3BzXG4gICAgICApO1xuICAgIHB1c2hQcmltYXJ5VHJlZVN1c3BlbnNlSGFuZGxlcih3b3JrSW5Qcm9ncmVzcyk7XG4gICAgcmV0dXJuIG1vdW50U3VzcGVuc2VQcmltYXJ5Q2hpbGRyZW4od29ya0luUHJvZ3Jlc3MsIG5leHRJbnN0YW5jZSk7XG4gIH1cbiAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwID0gY3VycmVudC5tZW1vaXplZFN0YXRlO1xuICBpZiAoXG4gICAgbnVsbCAhPT0gSlNDb21waWxlcl90ZW1wJGpzY29tcCQwICYmXG4gICAgKChuZXh0SW5zdGFuY2UgPSBKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAuZGVoeWRyYXRlZCksXG4gICAgbnVsbCAhPT0gbmV4dEluc3RhbmNlKVxuICApIHtcbiAgICBpZiAoZGlkU3VzcGVuZClcbiAgICAgIHdvcmtJblByb2dyZXNzLmZsYWdzICYgMjU2XG4gICAgICAgID8gKHB1c2hQcmltYXJ5VHJlZVN1c3BlbnNlSGFuZGxlcih3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzICY9IC0yNTcpLFxuICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcyA9IHJldHJ5U3VzcGVuc2VDb21wb25lbnRXaXRob3V0SHlkcmF0aW5nKFxuICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICApKSlcbiAgICAgICAgOiBudWxsICE9PSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlXG4gICAgICAgICAgPyAocmV1c2VTdXNwZW5zZUhhbmRsZXJPblN0YWNrKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IGN1cnJlbnQuY2hpbGQpLFxuICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDEyOCksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MgPSBudWxsKSlcbiAgICAgICAgICA6IChyZXVzZVN1c3BlbnNlSGFuZGxlck9uU3RhY2sod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgKHNob3dGYWxsYmFjayA9IG5leHRQcm9wcy5mYWxsYmFjayksXG4gICAgICAgICAgICAobmV4dEluc3RhbmNlID0gd29ya0luUHJvZ3Jlc3MubW9kZSksXG4gICAgICAgICAgICAobmV4dFByb3BzID0gbW91bnRXb3JrSW5Qcm9ncmVzc09mZnNjcmVlbkZpYmVyKFxuICAgICAgICAgICAgICB7IG1vZGU6IFwidmlzaWJsZVwiLCBjaGlsZHJlbjogbmV4dFByb3BzLmNoaWxkcmVuIH0sXG4gICAgICAgICAgICAgIG5leHRJbnN0YW5jZVxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAoc2hvd0ZhbGxiYWNrID0gY3JlYXRlRmliZXJGcm9tRnJhZ21lbnQoXG4gICAgICAgICAgICAgIHNob3dGYWxsYmFjayxcbiAgICAgICAgICAgICAgbmV4dEluc3RhbmNlLFxuICAgICAgICAgICAgICByZW5kZXJMYW5lcyxcbiAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKSksXG4gICAgICAgICAgICAoc2hvd0ZhbGxiYWNrLmZsYWdzIHw9IDIpLFxuICAgICAgICAgICAgKG5leHRQcm9wcy5yZXR1cm4gPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAoc2hvd0ZhbGxiYWNrLnJldHVybiA9IHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgIChuZXh0UHJvcHMuc2libGluZyA9IHNob3dGYWxsYmFjayksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuY2hpbGQgPSBuZXh0UHJvcHMpLFxuICAgICAgICAgICAgcmVjb25jaWxlQ2hpbGRGaWJlcnMoXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgICBjdXJyZW50LmNoaWxkLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgKSxcbiAgICAgICAgICAgIChuZXh0UHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZCksXG4gICAgICAgICAgICAobmV4dFByb3BzLm1lbW9pemVkU3RhdGUgPVxuICAgICAgICAgICAgICBtb3VudFN1c3BlbnNlT2Zmc2NyZWVuU3RhdGUocmVuZGVyTGFuZXMpKSxcbiAgICAgICAgICAgIChuZXh0UHJvcHMuY2hpbGRMYW5lcyA9IGdldFJlbWFpbmluZ1dvcmtJblByaW1hcnlUcmVlKFxuICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAsXG4gICAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gU1VTUEVOREVEX01BUktFUiksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MgPSBzaG93RmFsbGJhY2spKTtcbiAgICBlbHNlIGlmIChcbiAgICAgIChwdXNoUHJpbWFyeVRyZWVTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgXCIkIVwiID09PSBuZXh0SW5zdGFuY2UuZGF0YSlcbiAgICApIHtcbiAgICAgIEpTQ29tcGlsZXJfdGVtcCA9XG4gICAgICAgIG5leHRJbnN0YW5jZS5uZXh0U2libGluZyAmJiBuZXh0SW5zdGFuY2UubmV4dFNpYmxpbmcuZGF0YXNldDtcbiAgICAgIGlmIChKU0NvbXBpbGVyX3RlbXApIHZhciBkaWdlc3QgPSBKU0NvbXBpbGVyX3RlbXAuZGdzdDtcbiAgICAgIEpTQ29tcGlsZXJfdGVtcCA9IGRpZ2VzdDtcbiAgICAgIG5leHRQcm9wcyA9IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDE5KSk7XG4gICAgICBuZXh0UHJvcHMuc3RhY2sgPSBcIlwiO1xuICAgICAgbmV4dFByb3BzLmRpZ2VzdCA9IEpTQ29tcGlsZXJfdGVtcDtcbiAgICAgIHF1ZXVlSHlkcmF0aW9uRXJyb3IoeyB2YWx1ZTogbmV4dFByb3BzLCBzb3VyY2U6IG51bGwsIHN0YWNrOiBudWxsIH0pO1xuICAgICAgd29ya0luUHJvZ3Jlc3MgPSByZXRyeVN1c3BlbnNlQ29tcG9uZW50V2l0aG91dEh5ZHJhdGluZyhcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgIHJlbmRlckxhbmVzXG4gICAgICApO1xuICAgIH0gZWxzZSBpZiAoXG4gICAgICAoZGlkUmVjZWl2ZVVwZGF0ZSB8fFxuICAgICAgICBwcm9wYWdhdGVQYXJlbnRDb250ZXh0Q2hhbmdlcyhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMsICExKSxcbiAgICAgIChKU0NvbXBpbGVyX3RlbXAgPSAwICE9PSAocmVuZGVyTGFuZXMgJiBjdXJyZW50LmNoaWxkTGFuZXMpKSxcbiAgICAgIGRpZFJlY2VpdmVVcGRhdGUgfHwgSlNDb21waWxlcl90ZW1wKVxuICAgICkge1xuICAgICAgSlNDb21waWxlcl90ZW1wID0gd29ya0luUHJvZ3Jlc3NSb290O1xuICAgICAgaWYgKG51bGwgIT09IEpTQ29tcGlsZXJfdGVtcCkge1xuICAgICAgICBuZXh0UHJvcHMgPSByZW5kZXJMYW5lcyAmIC1yZW5kZXJMYW5lcztcbiAgICAgICAgaWYgKDAgIT09IChuZXh0UHJvcHMgJiA0MikpIG5leHRQcm9wcyA9IDE7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICBzd2l0Y2ggKG5leHRQcm9wcykge1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBuZXh0UHJvcHMgPSAxO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgODpcbiAgICAgICAgICAgICAgbmV4dFByb3BzID0gNDtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDMyOlxuICAgICAgICAgICAgICBuZXh0UHJvcHMgPSAxNjtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIDEyODpcbiAgICAgICAgICAgIGNhc2UgMjU2OlxuICAgICAgICAgICAgY2FzZSA1MTI6XG4gICAgICAgICAgICBjYXNlIDEwMjQ6XG4gICAgICAgICAgICBjYXNlIDIwNDg6XG4gICAgICAgICAgICBjYXNlIDQwOTY6XG4gICAgICAgICAgICBjYXNlIDgxOTI6XG4gICAgICAgICAgICBjYXNlIDE2Mzg0OlxuICAgICAgICAgICAgY2FzZSAzMjc2ODpcbiAgICAgICAgICAgIGNhc2UgNjU1MzY6XG4gICAgICAgICAgICBjYXNlIDEzMTA3MjpcbiAgICAgICAgICAgIGNhc2UgMjYyMTQ0OlxuICAgICAgICAgICAgY2FzZSA1MjQyODg6XG4gICAgICAgICAgICBjYXNlIDEwNDg1NzY6XG4gICAgICAgICAgICBjYXNlIDIwOTcxNTI6XG4gICAgICAgICAgICBjYXNlIDQxOTQzMDQ6XG4gICAgICAgICAgICBjYXNlIDgzODg2MDg6XG4gICAgICAgICAgICBjYXNlIDE2Nzc3MjE2OlxuICAgICAgICAgICAgY2FzZSAzMzU1NDQzMjpcbiAgICAgICAgICAgICAgbmV4dFByb3BzID0gNjQ7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyNjg0MzU0NTY6XG4gICAgICAgICAgICAgIG5leHRQcm9wcyA9IDEzNDIxNzcyODtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBuZXh0UHJvcHMgPSAwO1xuICAgICAgICAgIH1cbiAgICAgICAgbmV4dFByb3BzID1cbiAgICAgICAgICAwICE9PSAobmV4dFByb3BzICYgKEpTQ29tcGlsZXJfdGVtcC5zdXNwZW5kZWRMYW5lcyB8IHJlbmRlckxhbmVzKSlcbiAgICAgICAgICAgID8gMFxuICAgICAgICAgICAgOiBuZXh0UHJvcHM7XG4gICAgICAgIGlmICgwICE9PSBuZXh0UHJvcHMgJiYgbmV4dFByb3BzICE9PSBKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAucmV0cnlMYW5lKVxuICAgICAgICAgIHRocm93IChcbiAgICAgICAgICAgICgoSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLnJldHJ5TGFuZSA9IG5leHRQcm9wcyksXG4gICAgICAgICAgICBlbnF1ZXVlQ29uY3VycmVudFJlbmRlckZvckxhbmUoY3VycmVudCwgbmV4dFByb3BzKSxcbiAgICAgICAgICAgIHNjaGVkdWxlVXBkYXRlT25GaWJlcihKU0NvbXBpbGVyX3RlbXAsIGN1cnJlbnQsIG5leHRQcm9wcyksXG4gICAgICAgICAgICBTZWxlY3RpdmVIeWRyYXRpb25FeGNlcHRpb24pXG4gICAgICAgICAgKTtcbiAgICAgIH1cbiAgICAgIFwiJD9cIiA9PT0gbmV4dEluc3RhbmNlLmRhdGEgfHwgcmVuZGVyRGlkU3VzcGVuZERlbGF5SWZQb3NzaWJsZSgpO1xuICAgICAgd29ya0luUHJvZ3Jlc3MgPSByZXRyeVN1c3BlbnNlQ29tcG9uZW50V2l0aG91dEh5ZHJhdGluZyhcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgIHJlbmRlckxhbmVzXG4gICAgICApO1xuICAgIH0gZWxzZVxuICAgICAgXCIkP1wiID09PSBuZXh0SW5zdGFuY2UuZGF0YVxuICAgICAgICA/ICgod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTI4KSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuY2hpbGQgPSBjdXJyZW50LmNoaWxkKSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3MgPSByZXRyeURlaHlkcmF0ZWRTdXNwZW5zZUJvdW5kYXJ5LmJpbmQoXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgY3VycmVudFxuICAgICAgICAgICkpLFxuICAgICAgICAgIChuZXh0SW5zdGFuY2UuX3JlYWN0UmV0cnkgPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzID0gbnVsbCkpXG4gICAgICAgIDogKChjdXJyZW50ID0gSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLnRyZWVDb250ZXh0KSxcbiAgICAgICAgICAobmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IGdldE5leHRIeWRyYXRhYmxlKFxuICAgICAgICAgICAgbmV4dEluc3RhbmNlLm5leHRTaWJsaW5nXG4gICAgICAgICAgKSksXG4gICAgICAgICAgKGh5ZHJhdGlvblBhcmVudEZpYmVyID0gd29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgIChpc0h5ZHJhdGluZyA9ICEwKSxcbiAgICAgICAgICAoaHlkcmF0aW9uRXJyb3JzID0gbnVsbCksXG4gICAgICAgICAgKHJvb3RPclNpbmdsZXRvbkNvbnRleHQgPSAhMSksXG4gICAgICAgICAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICAgICAgICAgKChpZFN0YWNrW2lkU3RhY2tJbmRleCsrXSA9IHRyZWVDb250ZXh0SWQpLFxuICAgICAgICAgICAgKGlkU3RhY2tbaWRTdGFja0luZGV4KytdID0gdHJlZUNvbnRleHRPdmVyZmxvdyksXG4gICAgICAgICAgICAoaWRTdGFja1tpZFN0YWNrSW5kZXgrK10gPSB0cmVlQ29udGV4dFByb3ZpZGVyKSxcbiAgICAgICAgICAgICh0cmVlQ29udGV4dElkID0gY3VycmVudC5pZCksXG4gICAgICAgICAgICAodHJlZUNvbnRleHRPdmVyZmxvdyA9IGN1cnJlbnQub3ZlcmZsb3cpLFxuICAgICAgICAgICAgKHRyZWVDb250ZXh0UHJvdmlkZXIgPSB3b3JrSW5Qcm9ncmVzcykpLFxuICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcyA9IG1vdW50U3VzcGVuc2VQcmltYXJ5Q2hpbGRyZW4oXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgIG5leHRQcm9wcy5jaGlsZHJlblxuICAgICAgICAgICkpLFxuICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA0MDk2KSk7XG4gICAgcmV0dXJuIHdvcmtJblByb2dyZXNzO1xuICB9XG4gIGlmIChzaG93RmFsbGJhY2spXG4gICAgcmV0dXJuIChcbiAgICAgIHJldXNlU3VzcGVuc2VIYW5kbGVyT25TdGFjayh3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAoc2hvd0ZhbGxiYWNrID0gbmV4dFByb3BzLmZhbGxiYWNrKSxcbiAgICAgIChuZXh0SW5zdGFuY2UgPSB3b3JrSW5Qcm9ncmVzcy5tb2RlKSxcbiAgICAgIChKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAgPSBjdXJyZW50LmNoaWxkKSxcbiAgICAgIChkaWdlc3QgPSBKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAuc2libGluZyksXG4gICAgICAobmV4dFByb3BzID0gY3JlYXRlV29ya0luUHJvZ3Jlc3MoSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLCB7XG4gICAgICAgIG1vZGU6IFwiaGlkZGVuXCIsXG4gICAgICAgIGNoaWxkcmVuOiBuZXh0UHJvcHMuY2hpbGRyZW5cbiAgICAgIH0pKSxcbiAgICAgIChuZXh0UHJvcHMuc3VidHJlZUZsYWdzID1cbiAgICAgICAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLnN1YnRyZWVGbGFncyAmIDMxNDU3MjgwKSxcbiAgICAgIG51bGwgIT09IGRpZ2VzdFxuICAgICAgICA/IChzaG93RmFsbGJhY2sgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzcyhkaWdlc3QsIHNob3dGYWxsYmFjaykpXG4gICAgICAgIDogKChzaG93RmFsbGJhY2sgPSBjcmVhdGVGaWJlckZyb21GcmFnbWVudChcbiAgICAgICAgICAgIHNob3dGYWxsYmFjayxcbiAgICAgICAgICAgIG5leHRJbnN0YW5jZSxcbiAgICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICkpLFxuICAgICAgICAgIChzaG93RmFsbGJhY2suZmxhZ3MgfD0gMikpLFxuICAgICAgKHNob3dGYWxsYmFjay5yZXR1cm4gPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAobmV4dFByb3BzLnJldHVybiA9IHdvcmtJblByb2dyZXNzKSxcbiAgICAgIChuZXh0UHJvcHMuc2libGluZyA9IHNob3dGYWxsYmFjayksXG4gICAgICAod29ya0luUHJvZ3Jlc3MuY2hpbGQgPSBuZXh0UHJvcHMpLFxuICAgICAgKG5leHRQcm9wcyA9IHNob3dGYWxsYmFjayksXG4gICAgICAoc2hvd0ZhbGxiYWNrID0gd29ya0luUHJvZ3Jlc3MuY2hpbGQpLFxuICAgICAgKG5leHRJbnN0YW5jZSA9IGN1cnJlbnQuY2hpbGQubWVtb2l6ZWRTdGF0ZSksXG4gICAgICBudWxsID09PSBuZXh0SW5zdGFuY2VcbiAgICAgICAgPyAobmV4dEluc3RhbmNlID0gbW91bnRTdXNwZW5zZU9mZnNjcmVlblN0YXRlKHJlbmRlckxhbmVzKSlcbiAgICAgICAgOiAoKEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMCA9IG5leHRJbnN0YW5jZS5jYWNoZVBvb2wpLFxuICAgICAgICAgIG51bGwgIT09IEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMFxuICAgICAgICAgICAgPyAoKGRpZ2VzdCA9IENhY2hlQ29udGV4dC5fY3VycmVudFZhbHVlKSxcbiAgICAgICAgICAgICAgKEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMCA9XG4gICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wJGpzY29tcCQwLnBhcmVudCAhPT0gZGlnZXN0XG4gICAgICAgICAgICAgICAgICA/IHsgcGFyZW50OiBkaWdlc3QsIHBvb2w6IGRpZ2VzdCB9XG4gICAgICAgICAgICAgICAgICA6IEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMCkpXG4gICAgICAgICAgICA6IChKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAgPSBnZXRTdXNwZW5kZWRDYWNoZSgpKSxcbiAgICAgICAgICAobmV4dEluc3RhbmNlID0ge1xuICAgICAgICAgICAgYmFzZUxhbmVzOiBuZXh0SW5zdGFuY2UuYmFzZUxhbmVzIHwgcmVuZGVyTGFuZXMsXG4gICAgICAgICAgICBjYWNoZVBvb2w6IEpTQ29tcGlsZXJfdGVtcCRqc2NvbXAkMFxuICAgICAgICAgIH0pKSxcbiAgICAgIChzaG93RmFsbGJhY2subWVtb2l6ZWRTdGF0ZSA9IG5leHRJbnN0YW5jZSksXG4gICAgICAoc2hvd0ZhbGxiYWNrLmNoaWxkTGFuZXMgPSBnZXRSZW1haW5pbmdXb3JrSW5QcmltYXJ5VHJlZShcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgSlNDb21waWxlcl90ZW1wLFxuICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgKSksXG4gICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IFNVU1BFTkRFRF9NQVJLRVIpLFxuICAgICAgbmV4dFByb3BzXG4gICAgKTtcbiAgcHVzaFByaW1hcnlUcmVlU3VzcGVuc2VIYW5kbGVyKHdvcmtJblByb2dyZXNzKTtcbiAgcmVuZGVyTGFuZXMgPSBjdXJyZW50LmNoaWxkO1xuICBjdXJyZW50ID0gcmVuZGVyTGFuZXMuc2libGluZztcbiAgcmVuZGVyTGFuZXMgPSBjcmVhdGVXb3JrSW5Qcm9ncmVzcyhyZW5kZXJMYW5lcywge1xuICAgIG1vZGU6IFwidmlzaWJsZVwiLFxuICAgIGNoaWxkcmVuOiBuZXh0UHJvcHMuY2hpbGRyZW5cbiAgfSk7XG4gIHJlbmRlckxhbmVzLnJldHVybiA9IHdvcmtJblByb2dyZXNzO1xuICByZW5kZXJMYW5lcy5zaWJsaW5nID0gbnVsbDtcbiAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgICgoSlNDb21waWxlcl90ZW1wID0gd29ya0luUHJvZ3Jlc3MuZGVsZXRpb25zKSxcbiAgICBudWxsID09PSBKU0NvbXBpbGVyX3RlbXBcbiAgICAgID8gKCh3b3JrSW5Qcm9ncmVzcy5kZWxldGlvbnMgPSBbY3VycmVudF0pLCAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTYpKVxuICAgICAgOiBKU0NvbXBpbGVyX3RlbXAucHVzaChjdXJyZW50KSk7XG4gIHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmVuZGVyTGFuZXM7XG4gIHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBudWxsO1xuICByZXR1cm4gcmVuZGVyTGFuZXM7XG59XG5mdW5jdGlvbiBtb3VudFN1c3BlbnNlUHJpbWFyeUNoaWxkcmVuKHdvcmtJblByb2dyZXNzLCBwcmltYXJ5Q2hpbGRyZW4pIHtcbiAgcHJpbWFyeUNoaWxkcmVuID0gbW91bnRXb3JrSW5Qcm9ncmVzc09mZnNjcmVlbkZpYmVyKFxuICAgIHsgbW9kZTogXCJ2aXNpYmxlXCIsIGNoaWxkcmVuOiBwcmltYXJ5Q2hpbGRyZW4gfSxcbiAgICB3b3JrSW5Qcm9ncmVzcy5tb2RlXG4gICk7XG4gIHByaW1hcnlDaGlsZHJlbi5yZXR1cm4gPSB3b3JrSW5Qcm9ncmVzcztcbiAgcmV0dXJuICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IHByaW1hcnlDaGlsZHJlbik7XG59XG5mdW5jdGlvbiBtb3VudFdvcmtJblByb2dyZXNzT2Zmc2NyZWVuRmliZXIob2Zmc2NyZWVuUHJvcHMsIG1vZGUpIHtcbiAgcmV0dXJuIGNyZWF0ZUZpYmVyRnJvbU9mZnNjcmVlbihvZmZzY3JlZW5Qcm9wcywgbW9kZSwgMCwgbnVsbCk7XG59XG5mdW5jdGlvbiByZXRyeVN1c3BlbnNlQ29tcG9uZW50V2l0aG91dEh5ZHJhdGluZyhcbiAgY3VycmVudCxcbiAgd29ya0luUHJvZ3Jlc3MsXG4gIHJlbmRlckxhbmVzXG4pIHtcbiAgcmVjb25jaWxlQ2hpbGRGaWJlcnMod29ya0luUHJvZ3Jlc3MsIGN1cnJlbnQuY2hpbGQsIG51bGwsIHJlbmRlckxhbmVzKTtcbiAgY3VycmVudCA9IG1vdW50U3VzcGVuc2VQcmltYXJ5Q2hpbGRyZW4oXG4gICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLmNoaWxkcmVuXG4gICk7XG4gIGN1cnJlbnQuZmxhZ3MgfD0gMjtcbiAgd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IG51bGw7XG4gIHJldHVybiBjdXJyZW50O1xufVxuZnVuY3Rpb24gc2NoZWR1bGVTdXNwZW5zZVdvcmtPbkZpYmVyKGZpYmVyLCByZW5kZXJMYW5lcywgcHJvcGFnYXRpb25Sb290KSB7XG4gIGZpYmVyLmxhbmVzIHw9IHJlbmRlckxhbmVzO1xuICB2YXIgYWx0ZXJuYXRlID0gZmliZXIuYWx0ZXJuYXRlO1xuICBudWxsICE9PSBhbHRlcm5hdGUgJiYgKGFsdGVybmF0ZS5sYW5lcyB8PSByZW5kZXJMYW5lcyk7XG4gIHNjaGVkdWxlQ29udGV4dFdvcmtPblBhcmVudFBhdGgoZmliZXIucmV0dXJuLCByZW5kZXJMYW5lcywgcHJvcGFnYXRpb25Sb290KTtcbn1cbmZ1bmN0aW9uIGluaXRTdXNwZW5zZUxpc3RSZW5kZXJTdGF0ZShcbiAgd29ya0luUHJvZ3Jlc3MsXG4gIGlzQmFja3dhcmRzLFxuICB0YWlsLFxuICBsYXN0Q29udGVudFJvdyxcbiAgdGFpbE1vZGVcbikge1xuICB2YXIgcmVuZGVyU3RhdGUgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlO1xuICBudWxsID09PSByZW5kZXJTdGF0ZVxuICAgID8gKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSB7XG4gICAgICAgIGlzQmFja3dhcmRzOiBpc0JhY2t3YXJkcyxcbiAgICAgICAgcmVuZGVyaW5nOiBudWxsLFxuICAgICAgICByZW5kZXJpbmdTdGFydFRpbWU6IDAsXG4gICAgICAgIGxhc3Q6IGxhc3RDb250ZW50Um93LFxuICAgICAgICB0YWlsOiB0YWlsLFxuICAgICAgICB0YWlsTW9kZTogdGFpbE1vZGVcbiAgICAgIH0pXG4gICAgOiAoKHJlbmRlclN0YXRlLmlzQmFja3dhcmRzID0gaXNCYWNrd2FyZHMpLFxuICAgICAgKHJlbmRlclN0YXRlLnJlbmRlcmluZyA9IG51bGwpLFxuICAgICAgKHJlbmRlclN0YXRlLnJlbmRlcmluZ1N0YXJ0VGltZSA9IDApLFxuICAgICAgKHJlbmRlclN0YXRlLmxhc3QgPSBsYXN0Q29udGVudFJvdyksXG4gICAgICAocmVuZGVyU3RhdGUudGFpbCA9IHRhaWwpLFxuICAgICAgKHJlbmRlclN0YXRlLnRhaWxNb2RlID0gdGFpbE1vZGUpKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZVN1c3BlbnNlTGlzdENvbXBvbmVudChjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpIHtcbiAgdmFyIG5leHRQcm9wcyA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyxcbiAgICByZXZlYWxPcmRlciA9IG5leHRQcm9wcy5yZXZlYWxPcmRlcixcbiAgICB0YWlsTW9kZSA9IG5leHRQcm9wcy50YWlsO1xuICByZWNvbmNpbGVDaGlsZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLmNoaWxkcmVuLCByZW5kZXJMYW5lcyk7XG4gIG5leHRQcm9wcyA9IHN1c3BlbnNlU3RhY2tDdXJzb3IuY3VycmVudDtcbiAgaWYgKDAgIT09IChuZXh0UHJvcHMgJiAyKSlcbiAgICAobmV4dFByb3BzID0gKG5leHRQcm9wcyAmIDEpIHwgMiksICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxMjgpO1xuICBlbHNlIHtcbiAgICBpZiAobnVsbCAhPT0gY3VycmVudCAmJiAwICE9PSAoY3VycmVudC5mbGFncyAmIDEyOCkpXG4gICAgICBhOiBmb3IgKGN1cnJlbnQgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZDsgbnVsbCAhPT0gY3VycmVudDsgKSB7XG4gICAgICAgIGlmICgxMyA9PT0gY3VycmVudC50YWcpXG4gICAgICAgICAgbnVsbCAhPT0gY3VycmVudC5tZW1vaXplZFN0YXRlICYmXG4gICAgICAgICAgICBzY2hlZHVsZVN1c3BlbnNlV29ya09uRmliZXIoY3VycmVudCwgcmVuZGVyTGFuZXMsIHdvcmtJblByb2dyZXNzKTtcbiAgICAgICAgZWxzZSBpZiAoMTkgPT09IGN1cnJlbnQudGFnKVxuICAgICAgICAgIHNjaGVkdWxlU3VzcGVuc2VXb3JrT25GaWJlcihjdXJyZW50LCByZW5kZXJMYW5lcywgd29ya0luUHJvZ3Jlc3MpO1xuICAgICAgICBlbHNlIGlmIChudWxsICE9PSBjdXJyZW50LmNoaWxkKSB7XG4gICAgICAgICAgY3VycmVudC5jaGlsZC5yZXR1cm4gPSBjdXJyZW50O1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LmNoaWxkO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjdXJyZW50ID09PSB3b3JrSW5Qcm9ncmVzcykgYnJlYWsgYTtcbiAgICAgICAgZm9yICg7IG51bGwgPT09IGN1cnJlbnQuc2libGluZzsgKSB7XG4gICAgICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnQucmV0dXJuIHx8IGN1cnJlbnQucmV0dXJuID09PSB3b3JrSW5Qcm9ncmVzcylcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQucmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQuc2libGluZy5yZXR1cm4gPSBjdXJyZW50LnJldHVybjtcbiAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuc2libGluZztcbiAgICAgIH1cbiAgICBuZXh0UHJvcHMgJj0gMTtcbiAgfVxuICBwdXNoKHN1c3BlbnNlU3RhY2tDdXJzb3IsIG5leHRQcm9wcyk7XG4gIHN3aXRjaCAocmV2ZWFsT3JkZXIpIHtcbiAgICBjYXNlIFwiZm9yd2FyZHNcIjpcbiAgICAgIHJlbmRlckxhbmVzID0gd29ya0luUHJvZ3Jlc3MuY2hpbGQ7XG4gICAgICBmb3IgKHJldmVhbE9yZGVyID0gbnVsbDsgbnVsbCAhPT0gcmVuZGVyTGFuZXM7IClcbiAgICAgICAgKGN1cnJlbnQgPSByZW5kZXJMYW5lcy5hbHRlcm5hdGUpLFxuICAgICAgICAgIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAgICAgICAgIG51bGwgPT09IGZpbmRGaXJzdFN1c3BlbmRlZChjdXJyZW50KSAmJlxuICAgICAgICAgICAgKHJldmVhbE9yZGVyID0gcmVuZGVyTGFuZXMpLFxuICAgICAgICAgIChyZW5kZXJMYW5lcyA9IHJlbmRlckxhbmVzLnNpYmxpbmcpO1xuICAgICAgcmVuZGVyTGFuZXMgPSByZXZlYWxPcmRlcjtcbiAgICAgIG51bGwgPT09IHJlbmRlckxhbmVzXG4gICAgICAgID8gKChyZXZlYWxPcmRlciA9IHdvcmtJblByb2dyZXNzLmNoaWxkKSwgKHdvcmtJblByb2dyZXNzLmNoaWxkID0gbnVsbCkpXG4gICAgICAgIDogKChyZXZlYWxPcmRlciA9IHJlbmRlckxhbmVzLnNpYmxpbmcpLCAocmVuZGVyTGFuZXMuc2libGluZyA9IG51bGwpKTtcbiAgICAgIGluaXRTdXNwZW5zZUxpc3RSZW5kZXJTdGF0ZShcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICExLFxuICAgICAgICByZXZlYWxPcmRlcixcbiAgICAgICAgcmVuZGVyTGFuZXMsXG4gICAgICAgIHRhaWxNb2RlXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImJhY2t3YXJkc1wiOlxuICAgICAgcmVuZGVyTGFuZXMgPSBudWxsO1xuICAgICAgcmV2ZWFsT3JkZXIgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbiAgICAgIGZvciAod29ya0luUHJvZ3Jlc3MuY2hpbGQgPSBudWxsOyBudWxsICE9PSByZXZlYWxPcmRlcjsgKSB7XG4gICAgICAgIGN1cnJlbnQgPSByZXZlYWxPcmRlci5hbHRlcm5hdGU7XG4gICAgICAgIGlmIChudWxsICE9PSBjdXJyZW50ICYmIG51bGwgPT09IGZpbmRGaXJzdFN1c3BlbmRlZChjdXJyZW50KSkge1xuICAgICAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmV2ZWFsT3JkZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IHJldmVhbE9yZGVyLnNpYmxpbmc7XG4gICAgICAgIHJldmVhbE9yZGVyLnNpYmxpbmcgPSByZW5kZXJMYW5lcztcbiAgICAgICAgcmVuZGVyTGFuZXMgPSByZXZlYWxPcmRlcjtcbiAgICAgICAgcmV2ZWFsT3JkZXIgPSBjdXJyZW50O1xuICAgICAgfVxuICAgICAgaW5pdFN1c3BlbnNlTGlzdFJlbmRlclN0YXRlKFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgITAsXG4gICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICBudWxsLFxuICAgICAgICB0YWlsTW9kZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ0b2dldGhlclwiOlxuICAgICAgaW5pdFN1c3BlbnNlTGlzdFJlbmRlclN0YXRlKHdvcmtJblByb2dyZXNzLCAhMSwgbnVsbCwgbnVsbCwgdm9pZCAwKTtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gbnVsbDtcbiAgfVxuICByZXR1cm4gd29ya0luUHJvZ3Jlc3MuY2hpbGQ7XG59XG5mdW5jdGlvbiBiYWlsb3V0T25BbHJlYWR5RmluaXNoZWRXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcykge1xuICBudWxsICE9PSBjdXJyZW50ICYmICh3b3JrSW5Qcm9ncmVzcy5kZXBlbmRlbmNpZXMgPSBjdXJyZW50LmRlcGVuZGVuY2llcyk7XG4gIHdvcmtJblByb2dyZXNzUm9vdFNraXBwZWRMYW5lcyB8PSB3b3JrSW5Qcm9ncmVzcy5sYW5lcztcbiAgaWYgKDAgPT09IChyZW5kZXJMYW5lcyAmIHdvcmtJblByb2dyZXNzLmNoaWxkTGFuZXMpKVxuICAgIGlmIChudWxsICE9PSBjdXJyZW50KSB7XG4gICAgICBpZiAoXG4gICAgICAgIChwcm9wYWdhdGVQYXJlbnRDb250ZXh0Q2hhbmdlcyhcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICExXG4gICAgICAgICksXG4gICAgICAgIDAgPT09IChyZW5kZXJMYW5lcyAmIHdvcmtJblByb2dyZXNzLmNoaWxkTGFuZXMpKVxuICAgICAgKVxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9IGVsc2UgcmV0dXJuIG51bGw7XG4gIGlmIChudWxsICE9PSBjdXJyZW50ICYmIHdvcmtJblByb2dyZXNzLmNoaWxkICE9PSBjdXJyZW50LmNoaWxkKVxuICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTUzKSk7XG4gIGlmIChudWxsICE9PSB3b3JrSW5Qcm9ncmVzcy5jaGlsZCkge1xuICAgIGN1cnJlbnQgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbiAgICByZW5kZXJMYW5lcyA9IGNyZWF0ZVdvcmtJblByb2dyZXNzKGN1cnJlbnQsIGN1cnJlbnQucGVuZGluZ1Byb3BzKTtcbiAgICB3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IHJlbmRlckxhbmVzO1xuICAgIGZvciAocmVuZGVyTGFuZXMucmV0dXJuID0gd29ya0luUHJvZ3Jlc3M7IG51bGwgIT09IGN1cnJlbnQuc2libGluZzsgKVxuICAgICAgKGN1cnJlbnQgPSBjdXJyZW50LnNpYmxpbmcpLFxuICAgICAgICAocmVuZGVyTGFuZXMgPSByZW5kZXJMYW5lcy5zaWJsaW5nID1cbiAgICAgICAgICBjcmVhdGVXb3JrSW5Qcm9ncmVzcyhjdXJyZW50LCBjdXJyZW50LnBlbmRpbmdQcm9wcykpLFxuICAgICAgICAocmVuZGVyTGFuZXMucmV0dXJuID0gd29ya0luUHJvZ3Jlc3MpO1xuICAgIHJlbmRlckxhbmVzLnNpYmxpbmcgPSBudWxsO1xuICB9XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbn1cbmZ1bmN0aW9uIGNoZWNrU2NoZWR1bGVkVXBkYXRlT3JDb250ZXh0KGN1cnJlbnQsIHJlbmRlckxhbmVzKSB7XG4gIGlmICgwICE9PSAoY3VycmVudC5sYW5lcyAmIHJlbmRlckxhbmVzKSkgcmV0dXJuICEwO1xuICBjdXJyZW50ID0gY3VycmVudC5kZXBlbmRlbmNpZXM7XG4gIHJldHVybiBudWxsICE9PSBjdXJyZW50ICYmIGNoZWNrSWZDb250ZXh0Q2hhbmdlZChjdXJyZW50KSA/ICEwIDogITE7XG59XG5mdW5jdGlvbiBhdHRlbXB0RWFybHlCYWlsb3V0SWZOb1NjaGVkdWxlZFVwZGF0ZShcbiAgY3VycmVudCxcbiAgd29ya0luUHJvZ3Jlc3MsXG4gIHJlbmRlckxhbmVzXG4pIHtcbiAgc3dpdGNoICh3b3JrSW5Qcm9ncmVzcy50YWcpIHtcbiAgICBjYXNlIDM6XG4gICAgICBwdXNoSG9zdENvbnRhaW5lcih3b3JrSW5Qcm9ncmVzcywgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO1xuICAgICAgcHVzaFByb3ZpZGVyKHdvcmtJblByb2dyZXNzLCBDYWNoZUNvbnRleHQsIGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5jYWNoZSk7XG4gICAgICByZXNldEh5ZHJhdGlvblN0YXRlKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI3OlxuICAgIGNhc2UgNTpcbiAgICAgIHB1c2hIb3N0Q29udGV4dCh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICBwdXNoSG9zdENvbnRhaW5lcih3b3JrSW5Qcm9ncmVzcywgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIHB1c2hQcm92aWRlcihcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLm1lbW9pemVkUHJvcHMudmFsdWVcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgdmFyIHN0YXRlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTtcbiAgICAgIGlmIChudWxsICE9PSBzdGF0ZSkge1xuICAgICAgICBpZiAobnVsbCAhPT0gc3RhdGUuZGVoeWRyYXRlZClcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgcHVzaFByaW1hcnlUcmVlU3VzcGVuc2VIYW5kbGVyKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxMjgpLFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICk7XG4gICAgICAgIGlmICgwICE9PSAocmVuZGVyTGFuZXMgJiB3b3JrSW5Qcm9ncmVzcy5jaGlsZC5jaGlsZExhbmVzKSlcbiAgICAgICAgICByZXR1cm4gdXBkYXRlU3VzcGVuc2VDb21wb25lbnQoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIHJlbmRlckxhbmVzKTtcbiAgICAgICAgcHVzaFByaW1hcnlUcmVlU3VzcGVuc2VIYW5kbGVyKHdvcmtJblByb2dyZXNzKTtcbiAgICAgICAgY3VycmVudCA9IGJhaWxvdXRPbkFscmVhZHlGaW5pc2hlZFdvcmsoXG4gICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICApO1xuICAgICAgICByZXR1cm4gbnVsbCAhPT0gY3VycmVudCA/IGN1cnJlbnQuc2libGluZyA6IG51bGw7XG4gICAgICB9XG4gICAgICBwdXNoUHJpbWFyeVRyZWVTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOTpcbiAgICAgIHZhciBkaWRTdXNwZW5kQmVmb3JlID0gMCAhPT0gKGN1cnJlbnQuZmxhZ3MgJiAxMjgpO1xuICAgICAgc3RhdGUgPSAwICE9PSAocmVuZGVyTGFuZXMgJiB3b3JrSW5Qcm9ncmVzcy5jaGlsZExhbmVzKTtcbiAgICAgIHN0YXRlIHx8XG4gICAgICAgIChwcm9wYWdhdGVQYXJlbnRDb250ZXh0Q2hhbmdlcyhcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICExXG4gICAgICAgICksXG4gICAgICAgIChzdGF0ZSA9IDAgIT09IChyZW5kZXJMYW5lcyAmIHdvcmtJblByb2dyZXNzLmNoaWxkTGFuZXMpKSk7XG4gICAgICBpZiAoZGlkU3VzcGVuZEJlZm9yZSkge1xuICAgICAgICBpZiAoc3RhdGUpXG4gICAgICAgICAgcmV0dXJuIHVwZGF0ZVN1c3BlbnNlTGlzdENvbXBvbmVudChcbiAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgKTtcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTI4O1xuICAgICAgfVxuICAgICAgZGlkU3VzcGVuZEJlZm9yZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgICBudWxsICE9PSBkaWRTdXNwZW5kQmVmb3JlICYmXG4gICAgICAgICgoZGlkU3VzcGVuZEJlZm9yZS5yZW5kZXJpbmcgPSBudWxsKSxcbiAgICAgICAgKGRpZFN1c3BlbmRCZWZvcmUudGFpbCA9IG51bGwpLFxuICAgICAgICAoZGlkU3VzcGVuZEJlZm9yZS5sYXN0RWZmZWN0ID0gbnVsbCkpO1xuICAgICAgcHVzaChzdXNwZW5zZVN0YWNrQ3Vyc29yLCBzdXNwZW5zZVN0YWNrQ3Vyc29yLmN1cnJlbnQpO1xuICAgICAgaWYgKHN0YXRlKSBicmVhaztcbiAgICAgIGVsc2UgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAyMjpcbiAgICBjYXNlIDIzOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKHdvcmtJblByb2dyZXNzLmxhbmVzID0gMCksXG4gICAgICAgIHVwZGF0ZU9mZnNjcmVlbkNvbXBvbmVudChjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpXG4gICAgICApO1xuICAgIGNhc2UgMjQ6XG4gICAgICBwdXNoUHJvdmlkZXIod29ya0luUHJvZ3Jlc3MsIENhY2hlQ29udGV4dCwgY3VycmVudC5tZW1vaXplZFN0YXRlLmNhY2hlKTtcbiAgfVxuICByZXR1cm4gYmFpbG91dE9uQWxyZWFkeUZpbmlzaGVkV29yayhjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpO1xufVxuZnVuY3Rpb24gYmVnaW5Xb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcykge1xuICBpZiAobnVsbCAhPT0gY3VycmVudClcbiAgICBpZiAoY3VycmVudC5tZW1vaXplZFByb3BzICE9PSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMpXG4gICAgICBkaWRSZWNlaXZlVXBkYXRlID0gITA7XG4gICAgZWxzZSB7XG4gICAgICBpZiAoXG4gICAgICAgICFjaGVja1NjaGVkdWxlZFVwZGF0ZU9yQ29udGV4dChjdXJyZW50LCByZW5kZXJMYW5lcykgJiZcbiAgICAgICAgMCA9PT0gKHdvcmtJblByb2dyZXNzLmZsYWdzICYgMTI4KVxuICAgICAgKVxuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIChkaWRSZWNlaXZlVXBkYXRlID0gITEpLFxuICAgICAgICAgIGF0dGVtcHRFYXJseUJhaWxvdXRJZk5vU2NoZWR1bGVkVXBkYXRlKFxuICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICApXG4gICAgICAgICk7XG4gICAgICBkaWRSZWNlaXZlVXBkYXRlID0gMCAhPT0gKGN1cnJlbnQuZmxhZ3MgJiAxMzEwNzIpID8gITAgOiAhMTtcbiAgICB9XG4gIGVsc2VcbiAgICAoZGlkUmVjZWl2ZVVwZGF0ZSA9ICExKSxcbiAgICAgIGlzSHlkcmF0aW5nICYmXG4gICAgICAgIDAgIT09ICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDEwNDg1NzYpICYmXG4gICAgICAgIHB1c2hUcmVlSWQod29ya0luUHJvZ3Jlc3MsIHRyZWVGb3JrQ291bnQsIHdvcmtJblByb2dyZXNzLmluZGV4KTtcbiAgd29ya0luUHJvZ3Jlc3MubGFuZXMgPSAwO1xuICBzd2l0Y2ggKHdvcmtJblByb2dyZXNzLnRhZykge1xuICAgIGNhc2UgMTY6XG4gICAgICBhOiB7XG4gICAgICAgIGN1cnJlbnQgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHM7XG4gICAgICAgIHZhciBsYXp5Q29tcG9uZW50ID0gd29ya0luUHJvZ3Jlc3MuZWxlbWVudFR5cGUsXG4gICAgICAgICAgaW5pdCA9IGxhenlDb21wb25lbnQuX2luaXQ7XG4gICAgICAgIGxhenlDb21wb25lbnQgPSBpbml0KGxhenlDb21wb25lbnQuX3BheWxvYWQpO1xuICAgICAgICB3b3JrSW5Qcm9ncmVzcy50eXBlID0gbGF6eUNvbXBvbmVudDtcbiAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGxhenlDb21wb25lbnQpXG4gICAgICAgICAgc2hvdWxkQ29uc3RydWN0KGxhenlDb21wb25lbnQpXG4gICAgICAgICAgICA/ICgoY3VycmVudCA9IHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKGxhenlDb21wb25lbnQsIGN1cnJlbnQpKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLnRhZyA9IDEpLFxuICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MgPSB1cGRhdGVDbGFzc0NvbXBvbmVudChcbiAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgICAgIGxhenlDb21wb25lbnQsXG4gICAgICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgICApKSlcbiAgICAgICAgICAgIDogKCh3b3JrSW5Qcm9ncmVzcy50YWcgPSAwKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzID0gdXBkYXRlRnVuY3Rpb25Db21wb25lbnQoXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICAgKSkpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBpZiAodm9pZCAwICE9PSBsYXp5Q29tcG9uZW50ICYmIG51bGwgIT09IGxhenlDb21wb25lbnQpXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICgoaW5pdCA9IGxhenlDb21wb25lbnQuJCR0eXBlb2YpLCBpbml0ID09PSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnRhZyA9IDExO1xuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IHVwZGF0ZUZvcndhcmRSZWYoXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoaW5pdCA9PT0gUkVBQ1RfTUVNT19UWVBFKSB7XG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnRhZyA9IDE0O1xuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IHVwZGF0ZU1lbW9Db21wb25lbnQoXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9XG4gICAgICAgICAgICBnZXRDb21wb25lbnROYW1lRnJvbVR5cGUobGF6eUNvbXBvbmVudCkgfHwgbGF6eUNvbXBvbmVudDtcbiAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMwNiwgd29ya0luUHJvZ3Jlc3MsIFwiXCIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHdvcmtJblByb2dyZXNzO1xuICAgIGNhc2UgMDpcbiAgICAgIHJldHVybiB1cGRhdGVGdW5jdGlvbkNvbXBvbmVudChcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyxcbiAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICk7XG4gICAgY2FzZSAxOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKGxhenlDb21wb25lbnQgPSB3b3JrSW5Qcm9ncmVzcy50eXBlKSxcbiAgICAgICAgKGluaXQgPSByZXNvbHZlQ2xhc3NDb21wb25lbnRQcm9wcyhcbiAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wc1xuICAgICAgICApKSxcbiAgICAgICAgdXBkYXRlQ2xhc3NDb21wb25lbnQoXG4gICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgIGluaXQsXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKVxuICAgICAgKTtcbiAgICBjYXNlIDM6XG4gICAgICBhOiB7XG4gICAgICAgIHB1c2hIb3N0Q29udGFpbmVyKFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZS5jb250YWluZXJJbmZvXG4gICAgICAgICk7XG4gICAgICAgIGlmIChudWxsID09PSBjdXJyZW50KSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDM4NykpO1xuICAgICAgICB2YXIgbmV4dFByb3BzID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzO1xuICAgICAgICBpbml0ID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgbGF6eUNvbXBvbmVudCA9IGluaXQuZWxlbWVudDtcbiAgICAgICAgY2xvbmVVcGRhdGVRdWV1ZShjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICAgIHByb2Nlc3NVcGRhdGVRdWV1ZSh3b3JrSW5Qcm9ncmVzcywgbmV4dFByb3BzLCBudWxsLCByZW5kZXJMYW5lcyk7XG4gICAgICAgIHZhciBuZXh0U3RhdGUgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlO1xuICAgICAgICBuZXh0UHJvcHMgPSBuZXh0U3RhdGUuY2FjaGU7XG4gICAgICAgIHB1c2hQcm92aWRlcih3b3JrSW5Qcm9ncmVzcywgQ2FjaGVDb250ZXh0LCBuZXh0UHJvcHMpO1xuICAgICAgICBuZXh0UHJvcHMgIT09IGluaXQuY2FjaGUgJiZcbiAgICAgICAgICBwcm9wYWdhdGVDb250ZXh0Q2hhbmdlcyhcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgW0NhY2hlQ29udGV4dF0sXG4gICAgICAgICAgICByZW5kZXJMYW5lcyxcbiAgICAgICAgICAgICEwXG4gICAgICAgICAgKTtcbiAgICAgICAgc3VzcGVuZElmVXBkYXRlUmVhZEZyb21FbnRhbmdsZWRBc3luY0FjdGlvbigpO1xuICAgICAgICBuZXh0UHJvcHMgPSBuZXh0U3RhdGUuZWxlbWVudDtcbiAgICAgICAgaWYgKGluaXQuaXNEZWh5ZHJhdGVkKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICgoaW5pdCA9IHtcbiAgICAgICAgICAgICAgZWxlbWVudDogbmV4dFByb3BzLFxuICAgICAgICAgICAgICBpc0RlaHlkcmF0ZWQ6ICExLFxuICAgICAgICAgICAgICBjYWNoZTogbmV4dFN0YXRlLmNhY2hlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZS5iYXNlU3RhdGUgPSBpbml0KSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gaW5pdCksXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDI1NilcbiAgICAgICAgICApIHtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzID0gbW91bnRIb3N0Um9vdFdpdGhvdXRIeWRyYXRpbmcoXG4gICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICB9IGVsc2UgaWYgKG5leHRQcm9wcyAhPT0gbGF6eUNvbXBvbmVudCkge1xuICAgICAgICAgICAgbGF6eUNvbXBvbmVudCA9IGNyZWF0ZUNhcHR1cmVkVmFsdWVBdEZpYmVyKFxuICAgICAgICAgICAgICBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQyNCkpLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIHF1ZXVlSHlkcmF0aW9uRXJyb3IobGF6eUNvbXBvbmVudCk7XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IG1vdW50SG9zdFJvb3RXaXRob3V0SHlkcmF0aW5nKFxuICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgbmV4dFByb3BzLFxuICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgfSBlbHNlXG4gICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICBuZXh0SHlkcmF0YWJsZUluc3RhbmNlID0gZ2V0TmV4dEh5ZHJhdGFibGUoXG4gICAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm8uZmlyc3RDaGlsZFxuICAgICAgICAgICAgICApLFxuICAgICAgICAgICAgICAgIGh5ZHJhdGlvblBhcmVudEZpYmVyID0gd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgICAgICAgaXNIeWRyYXRpbmcgPSAhMCxcbiAgICAgICAgICAgICAgICBoeWRyYXRpb25FcnJvcnMgPSBudWxsLFxuICAgICAgICAgICAgICAgIHJvb3RPclNpbmdsZXRvbkNvbnRleHQgPSAhMCxcbiAgICAgICAgICAgICAgICByZW5kZXJMYW5lcyA9IG1vdW50Q2hpbGRGaWJlcnMoXG4gICAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2hpbGQgPSByZW5kZXJMYW5lcztcbiAgICAgICAgICAgICAgcmVuZGVyTGFuZXM7XG5cbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgKHJlbmRlckxhbmVzLmZsYWdzID0gKHJlbmRlckxhbmVzLmZsYWdzICYgLTMpIHwgNDA5NiksXG4gICAgICAgICAgICAgICAgKHJlbmRlckxhbmVzID0gcmVuZGVyTGFuZXMuc2libGluZyk7XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgIHJlc2V0SHlkcmF0aW9uU3RhdGUoKTtcbiAgICAgICAgICBpZiAobmV4dFByb3BzID09PSBsYXp5Q29tcG9uZW50KSB7XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IGJhaWxvdXRPbkFscmVhZHlGaW5pc2hlZFdvcmsoXG4gICAgICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHJlY29uY2lsZUNoaWxkcmVuKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCBuZXh0UHJvcHMsIHJlbmRlckxhbmVzKTtcbiAgICAgICAgfVxuICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IHdvcmtJblByb2dyZXNzLmNoaWxkO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHdvcmtJblByb2dyZXNzO1xuICAgIGNhc2UgMjY6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBtYXJrUmVmKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgbnVsbCA9PT0gY3VycmVudFxuICAgICAgICAgID8gKHJlbmRlckxhbmVzID0gZ2V0UmVzb3VyY2UoXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyxcbiAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKSlcbiAgICAgICAgICAgID8gKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSByZW5kZXJMYW5lcylcbiAgICAgICAgICAgIDogaXNIeWRyYXRpbmcgfHxcbiAgICAgICAgICAgICAgKChyZW5kZXJMYW5lcyA9IHdvcmtJblByb2dyZXNzLnR5cGUpLFxuICAgICAgICAgICAgICAoY3VycmVudCA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyksXG4gICAgICAgICAgICAgIChsYXp5Q29tcG9uZW50ID0gZ2V0T3duZXJEb2N1bWVudEZyb21Sb290Q29udGFpbmVyKFxuICAgICAgICAgICAgICAgIHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yLmN1cnJlbnRcbiAgICAgICAgICAgICAgKS5jcmVhdGVFbGVtZW50KHJlbmRlckxhbmVzKSksXG4gICAgICAgICAgICAgIChsYXp5Q29tcG9uZW50W2ludGVybmFsSW5zdGFuY2VLZXldID0gd29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAobGF6eUNvbXBvbmVudFtpbnRlcm5hbFByb3BzS2V5XSA9IGN1cnJlbnQpLFxuICAgICAgICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhsYXp5Q29tcG9uZW50LCByZW5kZXJMYW5lcywgY3VycmVudCksXG4gICAgICAgICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUobGF6eUNvbXBvbmVudCksXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSBsYXp5Q29tcG9uZW50KSlcbiAgICAgICAgICA6ICh3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlID0gZ2V0UmVzb3VyY2UoXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgICAgICAgIGN1cnJlbnQubWVtb2l6ZWRQcm9wcyxcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLFxuICAgICAgICAgICAgICBjdXJyZW50Lm1lbW9pemVkU3RhdGVcbiAgICAgICAgICAgICkpLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgIGNhc2UgMjc6XG4gICAgICByZXR1cm4gKFxuICAgICAgICBwdXNoSG9zdENvbnRleHQod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICBudWxsID09PSBjdXJyZW50ICYmXG4gICAgICAgICAgaXNIeWRyYXRpbmcgJiZcbiAgICAgICAgICAoKGxhenlDb21wb25lbnQgPSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPVxuICAgICAgICAgICAgcmVzb2x2ZVNpbmdsZXRvbkluc3RhbmNlKFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy50eXBlLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMsXG4gICAgICAgICAgICAgIHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yLmN1cnJlbnRcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgIChoeWRyYXRpb25QYXJlbnRGaWJlciA9IHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAocm9vdE9yU2luZ2xldG9uQ29udGV4dCA9ICEwKSxcbiAgICAgICAgICAobmV4dEh5ZHJhdGFibGVJbnN0YW5jZSA9IGdldE5leHRIeWRyYXRhYmxlKFxuICAgICAgICAgICAgbGF6eUNvbXBvbmVudC5maXJzdENoaWxkXG4gICAgICAgICAgKSkpLFxuICAgICAgICAobGF6eUNvbXBvbmVudCA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcy5jaGlsZHJlbiksXG4gICAgICAgIG51bGwgIT09IGN1cnJlbnQgfHwgaXNIeWRyYXRpbmdcbiAgICAgICAgICA/IHJlY29uY2lsZUNoaWxkcmVuKFxuICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgbGF6eUNvbXBvbmVudCxcbiAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6ICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IHJlY29uY2lsZUNoaWxkRmliZXJzKFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgbGF6eUNvbXBvbmVudCxcbiAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICkpLFxuICAgICAgICBtYXJrUmVmKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2hpbGRcbiAgICAgICk7XG4gICAgY2FzZSA1OlxuICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnQgJiYgaXNIeWRyYXRpbmcpIHtcbiAgICAgICAgaWYgKChpbml0ID0gbGF6eUNvbXBvbmVudCA9IG5leHRIeWRyYXRhYmxlSW5zdGFuY2UpKVxuICAgICAgICAgIChsYXp5Q29tcG9uZW50ID0gY2FuSHlkcmF0ZUluc3RhbmNlKFxuICAgICAgICAgICAgbGF6eUNvbXBvbmVudCxcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMsXG4gICAgICAgICAgICByb290T3JTaW5nbGV0b25Db250ZXh0XG4gICAgICAgICAgKSksXG4gICAgICAgICAgICBudWxsICE9PSBsYXp5Q29tcG9uZW50XG4gICAgICAgICAgICAgID8gKCh3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSBsYXp5Q29tcG9uZW50KSxcbiAgICAgICAgICAgICAgICAoaHlkcmF0aW9uUGFyZW50RmliZXIgPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAgICAgKG5leHRIeWRyYXRhYmxlSW5zdGFuY2UgPSBnZXROZXh0SHlkcmF0YWJsZShcbiAgICAgICAgICAgICAgICAgIGxhenlDb21wb25lbnQuZmlyc3RDaGlsZFxuICAgICAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgICAgIChyb290T3JTaW5nbGV0b25Db250ZXh0ID0gITEpLFxuICAgICAgICAgICAgICAgIChpbml0ID0gITApKVxuICAgICAgICAgICAgICA6IChpbml0ID0gITEpO1xuICAgICAgICBpbml0IHx8IHRocm93T25IeWRyYXRpb25NaXNtYXRjaCh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICB9XG4gICAgICBwdXNoSG9zdENvbnRleHQod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgaW5pdCA9IHdvcmtJblByb2dyZXNzLnR5cGU7XG4gICAgICBuZXh0UHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHM7XG4gICAgICBuZXh0U3RhdGUgPSBudWxsICE9PSBjdXJyZW50ID8gY3VycmVudC5tZW1vaXplZFByb3BzIDogbnVsbDtcbiAgICAgIGxhenlDb21wb25lbnQgPSBuZXh0UHJvcHMuY2hpbGRyZW47XG4gICAgICBzaG91bGRTZXRUZXh0Q29udGVudChpbml0LCBuZXh0UHJvcHMpXG4gICAgICAgID8gKGxhenlDb21wb25lbnQgPSBudWxsKVxuICAgICAgICA6IG51bGwgIT09IG5leHRTdGF0ZSAmJlxuICAgICAgICAgIHNob3VsZFNldFRleHRDb250ZW50KGluaXQsIG5leHRTdGF0ZSkgJiZcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMzIpO1xuICAgICAgbnVsbCAhPT0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSAmJlxuICAgICAgICAoKGluaXQgPSByZW5kZXJXaXRoSG9va3MoXG4gICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICBUcmFuc2l0aW9uQXdhcmVIb3N0Q29tcG9uZW50LFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgbnVsbCxcbiAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICApKSxcbiAgICAgICAgKEhvc3RUcmFuc2l0aW9uQ29udGV4dC5fY3VycmVudFZhbHVlID0gaW5pdCkpO1xuICAgICAgbWFya1JlZihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICByZWNvbmNpbGVDaGlsZHJlbihjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgbGF6eUNvbXBvbmVudCwgcmVuZGVyTGFuZXMpO1xuICAgICAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNoaWxkO1xuICAgIGNhc2UgNjpcbiAgICAgIGlmIChudWxsID09PSBjdXJyZW50ICYmIGlzSHlkcmF0aW5nKSB7XG4gICAgICAgIGlmICgoY3VycmVudCA9IHJlbmRlckxhbmVzID0gbmV4dEh5ZHJhdGFibGVJbnN0YW5jZSkpXG4gICAgICAgICAgKHJlbmRlckxhbmVzID0gY2FuSHlkcmF0ZVRleHRJbnN0YW5jZShcbiAgICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLFxuICAgICAgICAgICAgcm9vdE9yU2luZ2xldG9uQ29udGV4dFxuICAgICAgICAgICkpLFxuICAgICAgICAgICAgbnVsbCAhPT0gcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICAgPyAoKHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSA9IHJlbmRlckxhbmVzKSxcbiAgICAgICAgICAgICAgICAoaHlkcmF0aW9uUGFyZW50RmliZXIgPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAgICAgKG5leHRIeWRyYXRhYmxlSW5zdGFuY2UgPSBudWxsKSxcbiAgICAgICAgICAgICAgICAoY3VycmVudCA9ICEwKSlcbiAgICAgICAgICAgICAgOiAoY3VycmVudCA9ICExKTtcbiAgICAgICAgY3VycmVudCB8fCB0aHJvd09uSHlkcmF0aW9uTWlzbWF0Y2god29ya0luUHJvZ3Jlc3MpO1xuICAgICAgfVxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAxMzpcbiAgICAgIHJldHVybiB1cGRhdGVTdXNwZW5zZUNvbXBvbmVudChjdXJyZW50LCB3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpO1xuICAgIGNhc2UgNDpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHB1c2hIb3N0Q29udGFpbmVyKFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZS5jb250YWluZXJJbmZvXG4gICAgICAgICksXG4gICAgICAgIChsYXp5Q29tcG9uZW50ID0gd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzKSxcbiAgICAgICAgbnVsbCA9PT0gY3VycmVudFxuICAgICAgICAgID8gKHdvcmtJblByb2dyZXNzLmNoaWxkID0gcmVjb25jaWxlQ2hpbGRGaWJlcnMoXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICAgICAgKSlcbiAgICAgICAgICA6IHJlY29uY2lsZUNoaWxkcmVuKFxuICAgICAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgbGF6eUNvbXBvbmVudCxcbiAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICksXG4gICAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkXG4gICAgICApO1xuICAgIGNhc2UgMTE6XG4gICAgICByZXR1cm4gdXBkYXRlRm9yd2FyZFJlZihcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLnR5cGUsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyxcbiAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICk7XG4gICAgY2FzZSA3OlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcmVjb25jaWxlQ2hpbGRyZW4oXG4gICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMsXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKSxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2hpbGRcbiAgICAgICk7XG4gICAgY2FzZSA4OlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcmVjb25jaWxlQ2hpbGRyZW4oXG4gICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMuY2hpbGRyZW4sXG4gICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgKSxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2hpbGRcbiAgICAgICk7XG4gICAgY2FzZSAxMjpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHJlY29uY2lsZUNoaWxkcmVuKFxuICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLmNoaWxkcmVuLFxuICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICksXG4gICAgICAgIHdvcmtJblByb2dyZXNzLmNoaWxkXG4gICAgICApO1xuICAgIGNhc2UgMTA6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAobGF6eUNvbXBvbmVudCA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyksXG4gICAgICAgIHB1c2hQcm92aWRlcih3b3JrSW5Qcm9ncmVzcywgd29ya0luUHJvZ3Jlc3MudHlwZSwgbGF6eUNvbXBvbmVudC52YWx1ZSksXG4gICAgICAgIHJlY29uY2lsZUNoaWxkcmVuKFxuICAgICAgICAgIGN1cnJlbnQsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgbGF6eUNvbXBvbmVudC5jaGlsZHJlbixcbiAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICApLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcy5jaGlsZFxuICAgICAgKTtcbiAgICBjYXNlIDk6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAoaW5pdCA9IHdvcmtJblByb2dyZXNzLnR5cGUuX2NvbnRleHQpLFxuICAgICAgICAobGF6eUNvbXBvbmVudCA9IHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcy5jaGlsZHJlbiksXG4gICAgICAgIHByZXBhcmVUb1JlYWRDb250ZXh0KHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgKGluaXQgPSByZWFkQ29udGV4dChpbml0KSksXG4gICAgICAgIChsYXp5Q29tcG9uZW50ID0gbGF6eUNvbXBvbmVudChpbml0KSksXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxKSxcbiAgICAgICAgcmVjb25jaWxlQ2hpbGRyZW4oY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIGxhenlDb21wb25lbnQsIHJlbmRlckxhbmVzKSxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MuY2hpbGRcbiAgICAgICk7XG4gICAgY2FzZSAxNDpcbiAgICAgIHJldHVybiB1cGRhdGVNZW1vQ29tcG9uZW50KFxuICAgICAgICBjdXJyZW50LFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MudHlwZSxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzLFxuICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgKTtcbiAgICBjYXNlIDE1OlxuICAgICAgcmV0dXJuIHVwZGF0ZVNpbXBsZU1lbW9Db21wb25lbnQoXG4gICAgICAgIGN1cnJlbnQsXG4gICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcy50eXBlLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHMsXG4gICAgICAgIHJlbmRlckxhbmVzXG4gICAgICApO1xuICAgIGNhc2UgMTk6XG4gICAgICByZXR1cm4gdXBkYXRlU3VzcGVuc2VMaXN0Q29tcG9uZW50KGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcyk7XG4gICAgY2FzZSAyMjpcbiAgICAgIHJldHVybiB1cGRhdGVPZmZzY3JlZW5Db21wb25lbnQoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MsIHJlbmRlckxhbmVzKTtcbiAgICBjYXNlIDI0OlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcHJlcGFyZVRvUmVhZENvbnRleHQod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAobGF6eUNvbXBvbmVudCA9IHJlYWRDb250ZXh0KENhY2hlQ29udGV4dCkpLFxuICAgICAgICBudWxsID09PSBjdXJyZW50XG4gICAgICAgICAgPyAoKGluaXQgPSBwZWVrQ2FjaGVGcm9tUG9vbCgpKSxcbiAgICAgICAgICAgIG51bGwgPT09IGluaXQgJiZcbiAgICAgICAgICAgICAgKChpbml0ID0gd29ya0luUHJvZ3Jlc3NSb290KSxcbiAgICAgICAgICAgICAgKG5leHRQcm9wcyA9IGNyZWF0ZUNhY2hlKCkpLFxuICAgICAgICAgICAgICAoaW5pdC5wb29sZWRDYWNoZSA9IG5leHRQcm9wcyksXG4gICAgICAgICAgICAgIG5leHRQcm9wcy5yZWZDb3VudCsrLFxuICAgICAgICAgICAgICBudWxsICE9PSBuZXh0UHJvcHMgJiYgKGluaXQucG9vbGVkQ2FjaGVMYW5lcyB8PSByZW5kZXJMYW5lcyksXG4gICAgICAgICAgICAgIChpbml0ID0gbmV4dFByb3BzKSksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgcGFyZW50OiBsYXp5Q29tcG9uZW50LFxuICAgICAgICAgICAgICBjYWNoZTogaW5pdFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgICBpbml0aWFsaXplVXBkYXRlUXVldWUod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgcHVzaFByb3ZpZGVyKHdvcmtJblByb2dyZXNzLCBDYWNoZUNvbnRleHQsIGluaXQpKVxuICAgICAgICAgIDogKDAgIT09IChjdXJyZW50LmxhbmVzICYgcmVuZGVyTGFuZXMpICYmXG4gICAgICAgICAgICAgIChjbG9uZVVwZGF0ZVF1ZXVlKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICAgcHJvY2Vzc1VwZGF0ZVF1ZXVlKHdvcmtJblByb2dyZXNzLCBudWxsLCBudWxsLCByZW5kZXJMYW5lcyksXG4gICAgICAgICAgICAgIHN1c3BlbmRJZlVwZGF0ZVJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24oKSksXG4gICAgICAgICAgICAoaW5pdCA9IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSksXG4gICAgICAgICAgICAobmV4dFByb3BzID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSksXG4gICAgICAgICAgICBpbml0LnBhcmVudCAhPT0gbGF6eUNvbXBvbmVudFxuICAgICAgICAgICAgICA/ICgoaW5pdCA9IHsgcGFyZW50OiBsYXp5Q29tcG9uZW50LCBjYWNoZTogbGF6eUNvbXBvbmVudCB9KSxcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IGluaXQpLFxuICAgICAgICAgICAgICAgIDAgPT09IHdvcmtJblByb2dyZXNzLmxhbmVzICYmXG4gICAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlLmJhc2VTdGF0ZSA9XG4gICAgICAgICAgICAgICAgICAgICAgaW5pdCksXG4gICAgICAgICAgICAgICAgcHVzaFByb3ZpZGVyKHdvcmtJblByb2dyZXNzLCBDYWNoZUNvbnRleHQsIGxhenlDb21wb25lbnQpKVxuICAgICAgICAgICAgICA6ICgobGF6eUNvbXBvbmVudCA9IG5leHRQcm9wcy5jYWNoZSksXG4gICAgICAgICAgICAgICAgcHVzaFByb3ZpZGVyKHdvcmtJblByb2dyZXNzLCBDYWNoZUNvbnRleHQsIGxhenlDb21wb25lbnQpLFxuICAgICAgICAgICAgICAgIGxhenlDb21wb25lbnQgIT09IGluaXQuY2FjaGUgJiZcbiAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZUNvbnRleHRDaGFuZ2VzKFxuICAgICAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyxcbiAgICAgICAgICAgICAgICAgICAgW0NhY2hlQ29udGV4dF0sXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICAgICAgICAgICAhMFxuICAgICAgICAgICAgICAgICAgKSkpLFxuICAgICAgICByZWNvbmNpbGVDaGlsZHJlbihcbiAgICAgICAgICBjdXJyZW50LFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcy5jaGlsZHJlbixcbiAgICAgICAgICByZW5kZXJMYW5lc1xuICAgICAgICApLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcy5jaGlsZFxuICAgICAgKTtcbiAgICBjYXNlIDI5OlxuICAgICAgdGhyb3cgd29ya0luUHJvZ3Jlc3MucGVuZGluZ1Byb3BzO1xuICB9XG4gIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTU2LCB3b3JrSW5Qcm9ncmVzcy50YWcpKTtcbn1cbnZhciB2YWx1ZUN1cnNvciA9IGNyZWF0ZUN1cnNvcihudWxsKSxcbiAgY3VycmVudGx5UmVuZGVyaW5nRmliZXIgPSBudWxsLFxuICBsYXN0Q29udGV4dERlcGVuZGVuY3kgPSBudWxsO1xuZnVuY3Rpb24gcHVzaFByb3ZpZGVyKHByb3ZpZGVyRmliZXIsIGNvbnRleHQsIG5leHRWYWx1ZSkge1xuICBwdXNoKHZhbHVlQ3Vyc29yLCBjb250ZXh0Ll9jdXJyZW50VmFsdWUpO1xuICBjb250ZXh0Ll9jdXJyZW50VmFsdWUgPSBuZXh0VmFsdWU7XG59XG5mdW5jdGlvbiBwb3BQcm92aWRlcihjb250ZXh0KSB7XG4gIGNvbnRleHQuX2N1cnJlbnRWYWx1ZSA9IHZhbHVlQ3Vyc29yLmN1cnJlbnQ7XG4gIHBvcCh2YWx1ZUN1cnNvcik7XG59XG5mdW5jdGlvbiBzY2hlZHVsZUNvbnRleHRXb3JrT25QYXJlbnRQYXRoKHBhcmVudCwgcmVuZGVyTGFuZXMsIHByb3BhZ2F0aW9uUm9vdCkge1xuICBmb3IgKDsgbnVsbCAhPT0gcGFyZW50OyApIHtcbiAgICB2YXIgYWx0ZXJuYXRlID0gcGFyZW50LmFsdGVybmF0ZTtcbiAgICAocGFyZW50LmNoaWxkTGFuZXMgJiByZW5kZXJMYW5lcykgIT09IHJlbmRlckxhbmVzXG4gICAgICA/ICgocGFyZW50LmNoaWxkTGFuZXMgfD0gcmVuZGVyTGFuZXMpLFxuICAgICAgICBudWxsICE9PSBhbHRlcm5hdGUgJiYgKGFsdGVybmF0ZS5jaGlsZExhbmVzIHw9IHJlbmRlckxhbmVzKSlcbiAgICAgIDogbnVsbCAhPT0gYWx0ZXJuYXRlICYmXG4gICAgICAgIChhbHRlcm5hdGUuY2hpbGRMYW5lcyAmIHJlbmRlckxhbmVzKSAhPT0gcmVuZGVyTGFuZXMgJiZcbiAgICAgICAgKGFsdGVybmF0ZS5jaGlsZExhbmVzIHw9IHJlbmRlckxhbmVzKTtcbiAgICBpZiAocGFyZW50ID09PSBwcm9wYWdhdGlvblJvb3QpIGJyZWFrO1xuICAgIHBhcmVudCA9IHBhcmVudC5yZXR1cm47XG4gIH1cbn1cbmZ1bmN0aW9uIHByb3BhZ2F0ZUNvbnRleHRDaGFuZ2VzKFxuICB3b3JrSW5Qcm9ncmVzcyxcbiAgY29udGV4dHMsXG4gIHJlbmRlckxhbmVzLFxuICBmb3JjZVByb3BhZ2F0ZUVudGlyZVRyZWVcbikge1xuICB2YXIgZmliZXIgPSB3b3JrSW5Qcm9ncmVzcy5jaGlsZDtcbiAgbnVsbCAhPT0gZmliZXIgJiYgKGZpYmVyLnJldHVybiA9IHdvcmtJblByb2dyZXNzKTtcbiAgZm9yICg7IG51bGwgIT09IGZpYmVyOyApIHtcbiAgICB2YXIgbGlzdCA9IGZpYmVyLmRlcGVuZGVuY2llcztcbiAgICBpZiAobnVsbCAhPT0gbGlzdCkge1xuICAgICAgdmFyIG5leHRGaWJlciA9IGZpYmVyLmNoaWxkO1xuICAgICAgbGlzdCA9IGxpc3QuZmlyc3RDb250ZXh0O1xuICAgICAgYTogZm9yICg7IG51bGwgIT09IGxpc3Q7ICkge1xuICAgICAgICB2YXIgZGVwZW5kZW5jeSA9IGxpc3Q7XG4gICAgICAgIGxpc3QgPSBmaWJlcjtcbiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjb250ZXh0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgICBpZiAoZGVwZW5kZW5jeS5jb250ZXh0ID09PSBjb250ZXh0c1tpXSkge1xuICAgICAgICAgICAgbGlzdC5sYW5lcyB8PSByZW5kZXJMYW5lcztcbiAgICAgICAgICAgIGRlcGVuZGVuY3kgPSBsaXN0LmFsdGVybmF0ZTtcbiAgICAgICAgICAgIG51bGwgIT09IGRlcGVuZGVuY3kgJiYgKGRlcGVuZGVuY3kubGFuZXMgfD0gcmVuZGVyTGFuZXMpO1xuICAgICAgICAgICAgc2NoZWR1bGVDb250ZXh0V29ya09uUGFyZW50UGF0aChcbiAgICAgICAgICAgICAgbGlzdC5yZXR1cm4sXG4gICAgICAgICAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGZvcmNlUHJvcGFnYXRlRW50aXJlVHJlZSB8fCAobmV4dEZpYmVyID0gbnVsbCk7XG4gICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIH1cbiAgICAgICAgbGlzdCA9IGRlcGVuZGVuY3kubmV4dDtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKDE4ID09PSBmaWJlci50YWcpIHtcbiAgICAgIG5leHRGaWJlciA9IGZpYmVyLnJldHVybjtcbiAgICAgIGlmIChudWxsID09PSBuZXh0RmliZXIpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzQxKSk7XG4gICAgICBuZXh0RmliZXIubGFuZXMgfD0gcmVuZGVyTGFuZXM7XG4gICAgICBsaXN0ID0gbmV4dEZpYmVyLmFsdGVybmF0ZTtcbiAgICAgIG51bGwgIT09IGxpc3QgJiYgKGxpc3QubGFuZXMgfD0gcmVuZGVyTGFuZXMpO1xuICAgICAgc2NoZWR1bGVDb250ZXh0V29ya09uUGFyZW50UGF0aChuZXh0RmliZXIsIHJlbmRlckxhbmVzLCB3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICBuZXh0RmliZXIgPSBudWxsO1xuICAgIH0gZWxzZSBuZXh0RmliZXIgPSBmaWJlci5jaGlsZDtcbiAgICBpZiAobnVsbCAhPT0gbmV4dEZpYmVyKSBuZXh0RmliZXIucmV0dXJuID0gZmliZXI7XG4gICAgZWxzZVxuICAgICAgZm9yIChuZXh0RmliZXIgPSBmaWJlcjsgbnVsbCAhPT0gbmV4dEZpYmVyOyApIHtcbiAgICAgICAgaWYgKG5leHRGaWJlciA9PT0gd29ya0luUHJvZ3Jlc3MpIHtcbiAgICAgICAgICBuZXh0RmliZXIgPSBudWxsO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICAgIGZpYmVyID0gbmV4dEZpYmVyLnNpYmxpbmc7XG4gICAgICAgIGlmIChudWxsICE9PSBmaWJlcikge1xuICAgICAgICAgIGZpYmVyLnJldHVybiA9IG5leHRGaWJlci5yZXR1cm47XG4gICAgICAgICAgbmV4dEZpYmVyID0gZmliZXI7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dEZpYmVyID0gbmV4dEZpYmVyLnJldHVybjtcbiAgICAgIH1cbiAgICBmaWJlciA9IG5leHRGaWJlcjtcbiAgfVxufVxuZnVuY3Rpb24gcHJvcGFnYXRlUGFyZW50Q29udGV4dENoYW5nZXMoXG4gIGN1cnJlbnQsXG4gIHdvcmtJblByb2dyZXNzLFxuICByZW5kZXJMYW5lcyxcbiAgZm9yY2VQcm9wYWdhdGVFbnRpcmVUcmVlXG4pIHtcbiAgY3VycmVudCA9IG51bGw7XG4gIGZvciAoXG4gICAgdmFyIHBhcmVudCA9IHdvcmtJblByb2dyZXNzLCBpc0luc2lkZVByb3BhZ2F0aW9uQmFpbG91dCA9ICExO1xuICAgIG51bGwgIT09IHBhcmVudDtcblxuICApIHtcbiAgICBpZiAoIWlzSW5zaWRlUHJvcGFnYXRpb25CYWlsb3V0KVxuICAgICAgaWYgKDAgIT09IChwYXJlbnQuZmxhZ3MgJiA1MjQyODgpKSBpc0luc2lkZVByb3BhZ2F0aW9uQmFpbG91dCA9ICEwO1xuICAgICAgZWxzZSBpZiAoMCAhPT0gKHBhcmVudC5mbGFncyAmIDI2MjE0NCkpIGJyZWFrO1xuICAgIGlmICgxMCA9PT0gcGFyZW50LnRhZykge1xuICAgICAgdmFyIGN1cnJlbnRQYXJlbnQgPSBwYXJlbnQuYWx0ZXJuYXRlO1xuICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnRQYXJlbnQpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzg3KSk7XG4gICAgICBjdXJyZW50UGFyZW50ID0gY3VycmVudFBhcmVudC5tZW1vaXplZFByb3BzO1xuICAgICAgaWYgKG51bGwgIT09IGN1cnJlbnRQYXJlbnQpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBwYXJlbnQudHlwZTtcbiAgICAgICAgb2JqZWN0SXMocGFyZW50LnBlbmRpbmdQcm9wcy52YWx1ZSwgY3VycmVudFBhcmVudC52YWx1ZSkgfHxcbiAgICAgICAgICAobnVsbCAhPT0gY3VycmVudCA/IGN1cnJlbnQucHVzaChjb250ZXh0KSA6IChjdXJyZW50ID0gW2NvbnRleHRdKSk7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChwYXJlbnQgPT09IGhvc3RUcmFuc2l0aW9uUHJvdmlkZXJDdXJzb3IuY3VycmVudCkge1xuICAgICAgY3VycmVudFBhcmVudCA9IHBhcmVudC5hbHRlcm5hdGU7XG4gICAgICBpZiAobnVsbCA9PT0gY3VycmVudFBhcmVudCkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzODcpKTtcbiAgICAgIGN1cnJlbnRQYXJlbnQubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlICE9PVxuICAgICAgICBwYXJlbnQubWVtb2l6ZWRTdGF0ZS5tZW1vaXplZFN0YXRlICYmXG4gICAgICAgIChudWxsICE9PSBjdXJyZW50XG4gICAgICAgICAgPyBjdXJyZW50LnB1c2goSG9zdFRyYW5zaXRpb25Db250ZXh0KVxuICAgICAgICAgIDogKGN1cnJlbnQgPSBbSG9zdFRyYW5zaXRpb25Db250ZXh0XSkpO1xuICAgIH1cbiAgICBwYXJlbnQgPSBwYXJlbnQucmV0dXJuO1xuICB9XG4gIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICBwcm9wYWdhdGVDb250ZXh0Q2hhbmdlcyhcbiAgICAgIHdvcmtJblByb2dyZXNzLFxuICAgICAgY3VycmVudCxcbiAgICAgIHJlbmRlckxhbmVzLFxuICAgICAgZm9yY2VQcm9wYWdhdGVFbnRpcmVUcmVlXG4gICAgKTtcbiAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMjYyMTQ0O1xufVxuZnVuY3Rpb24gY2hlY2tJZkNvbnRleHRDaGFuZ2VkKGN1cnJlbnREZXBlbmRlbmNpZXMpIHtcbiAgZm9yIChcbiAgICBjdXJyZW50RGVwZW5kZW5jaWVzID0gY3VycmVudERlcGVuZGVuY2llcy5maXJzdENvbnRleHQ7XG4gICAgbnVsbCAhPT0gY3VycmVudERlcGVuZGVuY2llcztcblxuICApIHtcbiAgICBpZiAoXG4gICAgICAhb2JqZWN0SXMoXG4gICAgICAgIGN1cnJlbnREZXBlbmRlbmNpZXMuY29udGV4dC5fY3VycmVudFZhbHVlLFxuICAgICAgICBjdXJyZW50RGVwZW5kZW5jaWVzLm1lbW9pemVkVmFsdWVcbiAgICAgIClcbiAgICApXG4gICAgICByZXR1cm4gITA7XG4gICAgY3VycmVudERlcGVuZGVuY2llcyA9IGN1cnJlbnREZXBlbmRlbmNpZXMubmV4dDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiBwcmVwYXJlVG9SZWFkQ29udGV4dCh3b3JrSW5Qcm9ncmVzcykge1xuICBjdXJyZW50bHlSZW5kZXJpbmdGaWJlciA9IHdvcmtJblByb2dyZXNzO1xuICBsYXN0Q29udGV4dERlcGVuZGVuY3kgPSBudWxsO1xuICB3b3JrSW5Qcm9ncmVzcyA9IHdvcmtJblByb2dyZXNzLmRlcGVuZGVuY2llcztcbiAgbnVsbCAhPT0gd29ya0luUHJvZ3Jlc3MgJiYgKHdvcmtJblByb2dyZXNzLmZpcnN0Q29udGV4dCA9IG51bGwpO1xufVxuZnVuY3Rpb24gcmVhZENvbnRleHQoY29udGV4dCkge1xuICByZXR1cm4gcmVhZENvbnRleHRGb3JDb25zdW1lcihjdXJyZW50bHlSZW5kZXJpbmdGaWJlciwgY29udGV4dCk7XG59XG5mdW5jdGlvbiByZWFkQ29udGV4dER1cmluZ1JlY29uY2lsaWF0aW9uKGNvbnN1bWVyLCBjb250ZXh0KSB7XG4gIG51bGwgPT09IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyICYmIHByZXBhcmVUb1JlYWRDb250ZXh0KGNvbnN1bWVyKTtcbiAgcmV0dXJuIHJlYWRDb250ZXh0Rm9yQ29uc3VtZXIoY29uc3VtZXIsIGNvbnRleHQpO1xufVxuZnVuY3Rpb24gcmVhZENvbnRleHRGb3JDb25zdW1lcihjb25zdW1lciwgY29udGV4dCkge1xuICB2YXIgdmFsdWUgPSBjb250ZXh0Ll9jdXJyZW50VmFsdWU7XG4gIGNvbnRleHQgPSB7IGNvbnRleHQ6IGNvbnRleHQsIG1lbW9pemVkVmFsdWU6IHZhbHVlLCBuZXh0OiBudWxsIH07XG4gIGlmIChudWxsID09PSBsYXN0Q29udGV4dERlcGVuZGVuY3kpIHtcbiAgICBpZiAobnVsbCA9PT0gY29uc3VtZXIpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzA4KSk7XG4gICAgbGFzdENvbnRleHREZXBlbmRlbmN5ID0gY29udGV4dDtcbiAgICBjb25zdW1lci5kZXBlbmRlbmNpZXMgPSB7IGxhbmVzOiAwLCBmaXJzdENvbnRleHQ6IGNvbnRleHQgfTtcbiAgICBjb25zdW1lci5mbGFncyB8PSA1MjQyODg7XG4gIH0gZWxzZSBsYXN0Q29udGV4dERlcGVuZGVuY3kgPSBsYXN0Q29udGV4dERlcGVuZGVuY3kubmV4dCA9IGNvbnRleHQ7XG4gIHJldHVybiB2YWx1ZTtcbn1cbnZhciBoYXNGb3JjZVVwZGF0ZSA9ICExO1xuZnVuY3Rpb24gaW5pdGlhbGl6ZVVwZGF0ZVF1ZXVlKGZpYmVyKSB7XG4gIGZpYmVyLnVwZGF0ZVF1ZXVlID0ge1xuICAgIGJhc2VTdGF0ZTogZmliZXIubWVtb2l6ZWRTdGF0ZSxcbiAgICBmaXJzdEJhc2VVcGRhdGU6IG51bGwsXG4gICAgbGFzdEJhc2VVcGRhdGU6IG51bGwsXG4gICAgc2hhcmVkOiB7IHBlbmRpbmc6IG51bGwsIGxhbmVzOiAwLCBoaWRkZW5DYWxsYmFja3M6IG51bGwgfSxcbiAgICBjYWxsYmFja3M6IG51bGxcbiAgfTtcbn1cbmZ1bmN0aW9uIGNsb25lVXBkYXRlUXVldWUoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MpIHtcbiAgY3VycmVudCA9IGN1cnJlbnQudXBkYXRlUXVldWU7XG4gIHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlID09PSBjdXJyZW50ICYmXG4gICAgKHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlID0ge1xuICAgICAgYmFzZVN0YXRlOiBjdXJyZW50LmJhc2VTdGF0ZSxcbiAgICAgIGZpcnN0QmFzZVVwZGF0ZTogY3VycmVudC5maXJzdEJhc2VVcGRhdGUsXG4gICAgICBsYXN0QmFzZVVwZGF0ZTogY3VycmVudC5sYXN0QmFzZVVwZGF0ZSxcbiAgICAgIHNoYXJlZDogY3VycmVudC5zaGFyZWQsXG4gICAgICBjYWxsYmFja3M6IG51bGxcbiAgICB9KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVVwZGF0ZShsYW5lKSB7XG4gIHJldHVybiB7IGxhbmU6IGxhbmUsIHRhZzogMCwgcGF5bG9hZDogbnVsbCwgY2FsbGJhY2s6IG51bGwsIG5leHQ6IG51bGwgfTtcbn1cbmZ1bmN0aW9uIGVucXVldWVVcGRhdGUoZmliZXIsIHVwZGF0ZSwgbGFuZSkge1xuICB2YXIgdXBkYXRlUXVldWUgPSBmaWJlci51cGRhdGVRdWV1ZTtcbiAgaWYgKG51bGwgPT09IHVwZGF0ZVF1ZXVlKSByZXR1cm4gbnVsbDtcbiAgdXBkYXRlUXVldWUgPSB1cGRhdGVRdWV1ZS5zaGFyZWQ7XG4gIGlmICgwICE9PSAoZXhlY3V0aW9uQ29udGV4dCAmIDIpKSB7XG4gICAgdmFyIHBlbmRpbmcgPSB1cGRhdGVRdWV1ZS5wZW5kaW5nO1xuICAgIG51bGwgPT09IHBlbmRpbmdcbiAgICAgID8gKHVwZGF0ZS5uZXh0ID0gdXBkYXRlKVxuICAgICAgOiAoKHVwZGF0ZS5uZXh0ID0gcGVuZGluZy5uZXh0KSwgKHBlbmRpbmcubmV4dCA9IHVwZGF0ZSkpO1xuICAgIHVwZGF0ZVF1ZXVlLnBlbmRpbmcgPSB1cGRhdGU7XG4gICAgdXBkYXRlID0gZ2V0Um9vdEZvclVwZGF0ZWRGaWJlcihmaWJlcik7XG4gICAgbWFya1VwZGF0ZUxhbmVGcm9tRmliZXJUb1Jvb3QoZmliZXIsIG51bGwsIGxhbmUpO1xuICAgIHJldHVybiB1cGRhdGU7XG4gIH1cbiAgZW5xdWV1ZVVwZGF0ZSQxKGZpYmVyLCB1cGRhdGVRdWV1ZSwgdXBkYXRlLCBsYW5lKTtcbiAgcmV0dXJuIGdldFJvb3RGb3JVcGRhdGVkRmliZXIoZmliZXIpO1xufVxuZnVuY3Rpb24gZW50YW5nbGVUcmFuc2l0aW9ucyhyb290LCBmaWJlciwgbGFuZSkge1xuICBmaWJlciA9IGZpYmVyLnVwZGF0ZVF1ZXVlO1xuICBpZiAobnVsbCAhPT0gZmliZXIgJiYgKChmaWJlciA9IGZpYmVyLnNoYXJlZCksIDAgIT09IChsYW5lICYgNDE5NDE3NikpKSB7XG4gICAgdmFyIHF1ZXVlTGFuZXMgPSBmaWJlci5sYW5lcztcbiAgICBxdWV1ZUxhbmVzICY9IHJvb3QucGVuZGluZ0xhbmVzO1xuICAgIGxhbmUgfD0gcXVldWVMYW5lcztcbiAgICBmaWJlci5sYW5lcyA9IGxhbmU7XG4gICAgbWFya1Jvb3RFbnRhbmdsZWQocm9vdCwgbGFuZSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGVucXVldWVDYXB0dXJlZFVwZGF0ZSh3b3JrSW5Qcm9ncmVzcywgY2FwdHVyZWRVcGRhdGUpIHtcbiAgdmFyIHF1ZXVlID0gd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUsXG4gICAgY3VycmVudCA9IHdvcmtJblByb2dyZXNzLmFsdGVybmF0ZTtcbiAgaWYgKFxuICAgIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAoKGN1cnJlbnQgPSBjdXJyZW50LnVwZGF0ZVF1ZXVlKSwgcXVldWUgPT09IGN1cnJlbnQpXG4gICkge1xuICAgIHZhciBuZXdGaXJzdCA9IG51bGwsXG4gICAgICBuZXdMYXN0ID0gbnVsbDtcbiAgICBxdWV1ZSA9IHF1ZXVlLmZpcnN0QmFzZVVwZGF0ZTtcbiAgICBpZiAobnVsbCAhPT0gcXVldWUpIHtcbiAgICAgIGRvIHtcbiAgICAgICAgdmFyIGNsb25lID0ge1xuICAgICAgICAgIGxhbmU6IHF1ZXVlLmxhbmUsXG4gICAgICAgICAgdGFnOiBxdWV1ZS50YWcsXG4gICAgICAgICAgcGF5bG9hZDogcXVldWUucGF5bG9hZCxcbiAgICAgICAgICBjYWxsYmFjazogbnVsbCxcbiAgICAgICAgICBuZXh0OiBudWxsXG4gICAgICAgIH07XG4gICAgICAgIG51bGwgPT09IG5ld0xhc3RcbiAgICAgICAgICA/IChuZXdGaXJzdCA9IG5ld0xhc3QgPSBjbG9uZSlcbiAgICAgICAgICA6IChuZXdMYXN0ID0gbmV3TGFzdC5uZXh0ID0gY2xvbmUpO1xuICAgICAgICBxdWV1ZSA9IHF1ZXVlLm5leHQ7XG4gICAgICB9IHdoaWxlIChudWxsICE9PSBxdWV1ZSk7XG4gICAgICBudWxsID09PSBuZXdMYXN0XG4gICAgICAgID8gKG5ld0ZpcnN0ID0gbmV3TGFzdCA9IGNhcHR1cmVkVXBkYXRlKVxuICAgICAgICA6IChuZXdMYXN0ID0gbmV3TGFzdC5uZXh0ID0gY2FwdHVyZWRVcGRhdGUpO1xuICAgIH0gZWxzZSBuZXdGaXJzdCA9IG5ld0xhc3QgPSBjYXB0dXJlZFVwZGF0ZTtcbiAgICBxdWV1ZSA9IHtcbiAgICAgIGJhc2VTdGF0ZTogY3VycmVudC5iYXNlU3RhdGUsXG4gICAgICBmaXJzdEJhc2VVcGRhdGU6IG5ld0ZpcnN0LFxuICAgICAgbGFzdEJhc2VVcGRhdGU6IG5ld0xhc3QsXG4gICAgICBzaGFyZWQ6IGN1cnJlbnQuc2hhcmVkLFxuICAgICAgY2FsbGJhY2tzOiBjdXJyZW50LmNhbGxiYWNrc1xuICAgIH07XG4gICAgd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBxdWV1ZTtcbiAgICByZXR1cm47XG4gIH1cbiAgd29ya0luUHJvZ3Jlc3MgPSBxdWV1ZS5sYXN0QmFzZVVwZGF0ZTtcbiAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3NcbiAgICA/IChxdWV1ZS5maXJzdEJhc2VVcGRhdGUgPSBjYXB0dXJlZFVwZGF0ZSlcbiAgICA6ICh3b3JrSW5Qcm9ncmVzcy5uZXh0ID0gY2FwdHVyZWRVcGRhdGUpO1xuICBxdWV1ZS5sYXN0QmFzZVVwZGF0ZSA9IGNhcHR1cmVkVXBkYXRlO1xufVxudmFyIGRpZFJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24gPSAhMTtcbmZ1bmN0aW9uIHN1c3BlbmRJZlVwZGF0ZVJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24oKSB7XG4gIGlmIChkaWRSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uKSB7XG4gICAgdmFyIGVudGFuZ2xlZEFjdGlvblRoZW5hYmxlID0gY3VycmVudEVudGFuZ2xlZEFjdGlvblRoZW5hYmxlO1xuICAgIGlmIChudWxsICE9PSBlbnRhbmdsZWRBY3Rpb25UaGVuYWJsZSkgdGhyb3cgZW50YW5nbGVkQWN0aW9uVGhlbmFibGU7XG4gIH1cbn1cbmZ1bmN0aW9uIHByb2Nlc3NVcGRhdGVRdWV1ZShcbiAgd29ya0luUHJvZ3Jlc3MkanNjb21wJDAsXG4gIHByb3BzLFxuICBpbnN0YW5jZSRqc2NvbXAkMCxcbiAgcmVuZGVyTGFuZXNcbikge1xuICBkaWRSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uID0gITE7XG4gIHZhciBxdWV1ZSA9IHdvcmtJblByb2dyZXNzJGpzY29tcCQwLnVwZGF0ZVF1ZXVlO1xuICBoYXNGb3JjZVVwZGF0ZSA9ICExO1xuICB2YXIgZmlyc3RCYXNlVXBkYXRlID0gcXVldWUuZmlyc3RCYXNlVXBkYXRlLFxuICAgIGxhc3RCYXNlVXBkYXRlID0gcXVldWUubGFzdEJhc2VVcGRhdGUsXG4gICAgcGVuZGluZ1F1ZXVlID0gcXVldWUuc2hhcmVkLnBlbmRpbmc7XG4gIGlmIChudWxsICE9PSBwZW5kaW5nUXVldWUpIHtcbiAgICBxdWV1ZS5zaGFyZWQucGVuZGluZyA9IG51bGw7XG4gICAgdmFyIGxhc3RQZW5kaW5nVXBkYXRlID0gcGVuZGluZ1F1ZXVlLFxuICAgICAgZmlyc3RQZW5kaW5nVXBkYXRlID0gbGFzdFBlbmRpbmdVcGRhdGUubmV4dDtcbiAgICBsYXN0UGVuZGluZ1VwZGF0ZS5uZXh0ID0gbnVsbDtcbiAgICBudWxsID09PSBsYXN0QmFzZVVwZGF0ZVxuICAgICAgPyAoZmlyc3RCYXNlVXBkYXRlID0gZmlyc3RQZW5kaW5nVXBkYXRlKVxuICAgICAgOiAobGFzdEJhc2VVcGRhdGUubmV4dCA9IGZpcnN0UGVuZGluZ1VwZGF0ZSk7XG4gICAgbGFzdEJhc2VVcGRhdGUgPSBsYXN0UGVuZGluZ1VwZGF0ZTtcbiAgICB2YXIgY3VycmVudCA9IHdvcmtJblByb2dyZXNzJGpzY29tcCQwLmFsdGVybmF0ZTtcbiAgICBudWxsICE9PSBjdXJyZW50ICYmXG4gICAgICAoKGN1cnJlbnQgPSBjdXJyZW50LnVwZGF0ZVF1ZXVlKSxcbiAgICAgIChwZW5kaW5nUXVldWUgPSBjdXJyZW50Lmxhc3RCYXNlVXBkYXRlKSxcbiAgICAgIHBlbmRpbmdRdWV1ZSAhPT0gbGFzdEJhc2VVcGRhdGUgJiZcbiAgICAgICAgKG51bGwgPT09IHBlbmRpbmdRdWV1ZVxuICAgICAgICAgID8gKGN1cnJlbnQuZmlyc3RCYXNlVXBkYXRlID0gZmlyc3RQZW5kaW5nVXBkYXRlKVxuICAgICAgICAgIDogKHBlbmRpbmdRdWV1ZS5uZXh0ID0gZmlyc3RQZW5kaW5nVXBkYXRlKSxcbiAgICAgICAgKGN1cnJlbnQubGFzdEJhc2VVcGRhdGUgPSBsYXN0UGVuZGluZ1VwZGF0ZSkpKTtcbiAgfVxuICBpZiAobnVsbCAhPT0gZmlyc3RCYXNlVXBkYXRlKSB7XG4gICAgdmFyIG5ld1N0YXRlID0gcXVldWUuYmFzZVN0YXRlO1xuICAgIGxhc3RCYXNlVXBkYXRlID0gMDtcbiAgICBjdXJyZW50ID0gZmlyc3RQZW5kaW5nVXBkYXRlID0gbGFzdFBlbmRpbmdVcGRhdGUgPSBudWxsO1xuICAgIHBlbmRpbmdRdWV1ZSA9IGZpcnN0QmFzZVVwZGF0ZTtcbiAgICBkbyB7XG4gICAgICB2YXIgdXBkYXRlTGFuZSA9IHBlbmRpbmdRdWV1ZS5sYW5lICYgLTUzNjg3MDkxMyxcbiAgICAgICAgaXNIaWRkZW5VcGRhdGUgPSB1cGRhdGVMYW5lICE9PSBwZW5kaW5nUXVldWUubGFuZTtcbiAgICAgIGlmIChcbiAgICAgICAgaXNIaWRkZW5VcGRhdGVcbiAgICAgICAgICA/ICh3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmIHVwZGF0ZUxhbmUpID09PSB1cGRhdGVMYW5lXG4gICAgICAgICAgOiAocmVuZGVyTGFuZXMgJiB1cGRhdGVMYW5lKSA9PT0gdXBkYXRlTGFuZVxuICAgICAgKSB7XG4gICAgICAgIDAgIT09IHVwZGF0ZUxhbmUgJiZcbiAgICAgICAgICB1cGRhdGVMYW5lID09PSBjdXJyZW50RW50YW5nbGVkTGFuZSAmJlxuICAgICAgICAgIChkaWRSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uID0gITApO1xuICAgICAgICBudWxsICE9PSBjdXJyZW50ICYmXG4gICAgICAgICAgKGN1cnJlbnQgPSBjdXJyZW50Lm5leHQgPVxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBsYW5lOiAwLFxuICAgICAgICAgICAgICB0YWc6IHBlbmRpbmdRdWV1ZS50YWcsXG4gICAgICAgICAgICAgIHBheWxvYWQ6IHBlbmRpbmdRdWV1ZS5wYXlsb2FkLFxuICAgICAgICAgICAgICBjYWxsYmFjazogbnVsbCxcbiAgICAgICAgICAgICAgbmV4dDogbnVsbFxuICAgICAgICAgICAgfSk7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICB2YXIgd29ya0luUHJvZ3Jlc3MgPSB3b3JrSW5Qcm9ncmVzcyRqc2NvbXAkMCxcbiAgICAgICAgICAgIHVwZGF0ZSA9IHBlbmRpbmdRdWV1ZTtcbiAgICAgICAgICB1cGRhdGVMYW5lID0gcHJvcHM7XG4gICAgICAgICAgdmFyIGluc3RhbmNlID0gaW5zdGFuY2UkanNjb21wJDA7XG4gICAgICAgICAgc3dpdGNoICh1cGRhdGUudGFnKSB7XG4gICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzID0gdXBkYXRlLnBheWxvYWQ7XG4gICAgICAgICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3b3JrSW5Qcm9ncmVzcykge1xuICAgICAgICAgICAgICAgIG5ld1N0YXRlID0gd29ya0luUHJvZ3Jlc3MuY2FsbChpbnN0YW5jZSwgbmV3U3RhdGUsIHVwZGF0ZUxhbmUpO1xuICAgICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgbmV3U3RhdGUgPSB3b3JrSW5Qcm9ncmVzcztcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgPSAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJiAtNjU1MzcpIHwgMTI4O1xuICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcyA9IHVwZGF0ZS5wYXlsb2FkO1xuICAgICAgICAgICAgICB1cGRhdGVMYW5lID1cbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB3b3JrSW5Qcm9ncmVzc1xuICAgICAgICAgICAgICAgICAgPyB3b3JrSW5Qcm9ncmVzcy5jYWxsKGluc3RhbmNlLCBuZXdTdGF0ZSwgdXBkYXRlTGFuZSlcbiAgICAgICAgICAgICAgICAgIDogd29ya0luUHJvZ3Jlc3M7XG4gICAgICAgICAgICAgIGlmIChudWxsID09PSB1cGRhdGVMYW5lIHx8IHZvaWQgMCA9PT0gdXBkYXRlTGFuZSkgYnJlYWsgYTtcbiAgICAgICAgICAgICAgbmV3U3RhdGUgPSBhc3NpZ24oe30sIG5ld1N0YXRlLCB1cGRhdGVMYW5lKTtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgaGFzRm9yY2VVcGRhdGUgPSAhMDtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgdXBkYXRlTGFuZSA9IHBlbmRpbmdRdWV1ZS5jYWxsYmFjaztcbiAgICAgICAgbnVsbCAhPT0gdXBkYXRlTGFuZSAmJlxuICAgICAgICAgICgod29ya0luUHJvZ3Jlc3MkanNjb21wJDAuZmxhZ3MgfD0gNjQpLFxuICAgICAgICAgIGlzSGlkZGVuVXBkYXRlICYmICh3b3JrSW5Qcm9ncmVzcyRqc2NvbXAkMC5mbGFncyB8PSA4MTkyKSxcbiAgICAgICAgICAoaXNIaWRkZW5VcGRhdGUgPSBxdWV1ZS5jYWxsYmFja3MpLFxuICAgICAgICAgIG51bGwgPT09IGlzSGlkZGVuVXBkYXRlXG4gICAgICAgICAgICA/IChxdWV1ZS5jYWxsYmFja3MgPSBbdXBkYXRlTGFuZV0pXG4gICAgICAgICAgICA6IGlzSGlkZGVuVXBkYXRlLnB1c2godXBkYXRlTGFuZSkpO1xuICAgICAgfSBlbHNlXG4gICAgICAgIChpc0hpZGRlblVwZGF0ZSA9IHtcbiAgICAgICAgICBsYW5lOiB1cGRhdGVMYW5lLFxuICAgICAgICAgIHRhZzogcGVuZGluZ1F1ZXVlLnRhZyxcbiAgICAgICAgICBwYXlsb2FkOiBwZW5kaW5nUXVldWUucGF5bG9hZCxcbiAgICAgICAgICBjYWxsYmFjazogcGVuZGluZ1F1ZXVlLmNhbGxiYWNrLFxuICAgICAgICAgIG5leHQ6IG51bGxcbiAgICAgICAgfSksXG4gICAgICAgICAgbnVsbCA9PT0gY3VycmVudFxuICAgICAgICAgICAgPyAoKGZpcnN0UGVuZGluZ1VwZGF0ZSA9IGN1cnJlbnQgPSBpc0hpZGRlblVwZGF0ZSksXG4gICAgICAgICAgICAgIChsYXN0UGVuZGluZ1VwZGF0ZSA9IG5ld1N0YXRlKSlcbiAgICAgICAgICAgIDogKGN1cnJlbnQgPSBjdXJyZW50Lm5leHQgPSBpc0hpZGRlblVwZGF0ZSksXG4gICAgICAgICAgKGxhc3RCYXNlVXBkYXRlIHw9IHVwZGF0ZUxhbmUpO1xuICAgICAgcGVuZGluZ1F1ZXVlID0gcGVuZGluZ1F1ZXVlLm5leHQ7XG4gICAgICBpZiAobnVsbCA9PT0gcGVuZGluZ1F1ZXVlKVxuICAgICAgICBpZiAoKChwZW5kaW5nUXVldWUgPSBxdWV1ZS5zaGFyZWQucGVuZGluZyksIG51bGwgPT09IHBlbmRpbmdRdWV1ZSkpXG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGVsc2VcbiAgICAgICAgICAoaXNIaWRkZW5VcGRhdGUgPSBwZW5kaW5nUXVldWUpLFxuICAgICAgICAgICAgKHBlbmRpbmdRdWV1ZSA9IGlzSGlkZGVuVXBkYXRlLm5leHQpLFxuICAgICAgICAgICAgKGlzSGlkZGVuVXBkYXRlLm5leHQgPSBudWxsKSxcbiAgICAgICAgICAgIChxdWV1ZS5sYXN0QmFzZVVwZGF0ZSA9IGlzSGlkZGVuVXBkYXRlKSxcbiAgICAgICAgICAgIChxdWV1ZS5zaGFyZWQucGVuZGluZyA9IG51bGwpO1xuICAgIH0gd2hpbGUgKDEpO1xuICAgIG51bGwgPT09IGN1cnJlbnQgJiYgKGxhc3RQZW5kaW5nVXBkYXRlID0gbmV3U3RhdGUpO1xuICAgIHF1ZXVlLmJhc2VTdGF0ZSA9IGxhc3RQZW5kaW5nVXBkYXRlO1xuICAgIHF1ZXVlLmZpcnN0QmFzZVVwZGF0ZSA9IGZpcnN0UGVuZGluZ1VwZGF0ZTtcbiAgICBxdWV1ZS5sYXN0QmFzZVVwZGF0ZSA9IGN1cnJlbnQ7XG4gICAgbnVsbCA9PT0gZmlyc3RCYXNlVXBkYXRlICYmIChxdWV1ZS5zaGFyZWQubGFuZXMgPSAwKTtcbiAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RTa2lwcGVkTGFuZXMgfD0gbGFzdEJhc2VVcGRhdGU7XG4gICAgd29ya0luUHJvZ3Jlc3MkanNjb21wJDAubGFuZXMgPSBsYXN0QmFzZVVwZGF0ZTtcbiAgICB3b3JrSW5Qcm9ncmVzcyRqc2NvbXAkMC5tZW1vaXplZFN0YXRlID0gbmV3U3RhdGU7XG4gIH1cbn1cbmZ1bmN0aW9uIGNhbGxDYWxsYmFjayhjYWxsYmFjaywgY29udGV4dCkge1xuICBpZiAoXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY2FsbGJhY2spXG4gICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxOTEsIGNhbGxiYWNrKSk7XG4gIGNhbGxiYWNrLmNhbGwoY29udGV4dCk7XG59XG5mdW5jdGlvbiBjb21taXRDYWxsYmFja3ModXBkYXRlUXVldWUsIGNvbnRleHQpIHtcbiAgdmFyIGNhbGxiYWNrcyA9IHVwZGF0ZVF1ZXVlLmNhbGxiYWNrcztcbiAgaWYgKG51bGwgIT09IGNhbGxiYWNrcylcbiAgICBmb3IgKFxuICAgICAgdXBkYXRlUXVldWUuY2FsbGJhY2tzID0gbnVsbCwgdXBkYXRlUXVldWUgPSAwO1xuICAgICAgdXBkYXRlUXVldWUgPCBjYWxsYmFja3MubGVuZ3RoO1xuICAgICAgdXBkYXRlUXVldWUrK1xuICAgIClcbiAgICAgIGNhbGxDYWxsYmFjayhjYWxsYmFja3NbdXBkYXRlUXVldWVdLCBjb250ZXh0KTtcbn1cbmZ1bmN0aW9uIGNvbW1pdEhvb2tFZmZlY3RMaXN0TW91bnQoZmxhZ3MsIGZpbmlzaGVkV29yaykge1xuICB0cnkge1xuICAgIHZhciB1cGRhdGVRdWV1ZSA9IGZpbmlzaGVkV29yay51cGRhdGVRdWV1ZSxcbiAgICAgIGxhc3RFZmZlY3QgPSBudWxsICE9PSB1cGRhdGVRdWV1ZSA/IHVwZGF0ZVF1ZXVlLmxhc3RFZmZlY3QgOiBudWxsO1xuICAgIGlmIChudWxsICE9PSBsYXN0RWZmZWN0KSB7XG4gICAgICB2YXIgZmlyc3RFZmZlY3QgPSBsYXN0RWZmZWN0Lm5leHQ7XG4gICAgICB1cGRhdGVRdWV1ZSA9IGZpcnN0RWZmZWN0O1xuICAgICAgZG8ge1xuICAgICAgICBpZiAoKHVwZGF0ZVF1ZXVlLnRhZyAmIGZsYWdzKSA9PT0gZmxhZ3MpIHtcbiAgICAgICAgICBsYXN0RWZmZWN0ID0gdm9pZCAwO1xuICAgICAgICAgIHZhciBjcmVhdGUgPSB1cGRhdGVRdWV1ZS5jcmVhdGUsXG4gICAgICAgICAgICBpbnN0ID0gdXBkYXRlUXVldWUuaW5zdDtcbiAgICAgICAgICBsYXN0RWZmZWN0ID0gY3JlYXRlKCk7XG4gICAgICAgICAgaW5zdC5kZXN0cm95ID0gbGFzdEVmZmVjdDtcbiAgICAgICAgfVxuICAgICAgICB1cGRhdGVRdWV1ZSA9IHVwZGF0ZVF1ZXVlLm5leHQ7XG4gICAgICB9IHdoaWxlICh1cGRhdGVRdWV1ZSAhPT0gZmlyc3RFZmZlY3QpO1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4sIGVycm9yKTtcbiAgfVxufVxuZnVuY3Rpb24gY29tbWl0SG9va0VmZmVjdExpc3RVbm1vdW50KFxuICBmbGFncyxcbiAgZmluaXNoZWRXb3JrLFxuICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yJGpzY29tcCQwXG4pIHtcbiAgdHJ5IHtcbiAgICB2YXIgdXBkYXRlUXVldWUgPSBmaW5pc2hlZFdvcmsudXBkYXRlUXVldWUsXG4gICAgICBsYXN0RWZmZWN0ID0gbnVsbCAhPT0gdXBkYXRlUXVldWUgPyB1cGRhdGVRdWV1ZS5sYXN0RWZmZWN0IDogbnVsbDtcbiAgICBpZiAobnVsbCAhPT0gbGFzdEVmZmVjdCkge1xuICAgICAgdmFyIGZpcnN0RWZmZWN0ID0gbGFzdEVmZmVjdC5uZXh0O1xuICAgICAgdXBkYXRlUXVldWUgPSBmaXJzdEVmZmVjdDtcbiAgICAgIGRvIHtcbiAgICAgICAgaWYgKCh1cGRhdGVRdWV1ZS50YWcgJiBmbGFncykgPT09IGZsYWdzKSB7XG4gICAgICAgICAgdmFyIGluc3QgPSB1cGRhdGVRdWV1ZS5pbnN0LFxuICAgICAgICAgICAgZGVzdHJveSA9IGluc3QuZGVzdHJveTtcbiAgICAgICAgICBpZiAodm9pZCAwICE9PSBkZXN0cm95KSB7XG4gICAgICAgICAgICBpbnN0LmRlc3Ryb3kgPSB2b2lkIDA7XG4gICAgICAgICAgICBsYXN0RWZmZWN0ID0gZmluaXNoZWRXb3JrO1xuICAgICAgICAgICAgdmFyIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IgPSBuZWFyZXN0TW91bnRlZEFuY2VzdG9yJGpzY29tcCQwO1xuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgZGVzdHJveSgpO1xuICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoXG4gICAgICAgICAgICAgICAgbGFzdEVmZmVjdCxcbiAgICAgICAgICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICAgICAgICAgIGVycm9yXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHVwZGF0ZVF1ZXVlID0gdXBkYXRlUXVldWUubmV4dDtcbiAgICAgIH0gd2hpbGUgKHVwZGF0ZVF1ZXVlICE9PSBmaXJzdEVmZmVjdCk7XG4gICAgfVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICB9XG59XG5mdW5jdGlvbiBjb21taXRDbGFzc0NhbGxiYWNrcyhmaW5pc2hlZFdvcmspIHtcbiAgdmFyIHVwZGF0ZVF1ZXVlID0gZmluaXNoZWRXb3JrLnVwZGF0ZVF1ZXVlO1xuICBpZiAobnVsbCAhPT0gdXBkYXRlUXVldWUpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlO1xuICAgIHRyeSB7XG4gICAgICBjb21taXRDYWxsYmFja3ModXBkYXRlUXVldWUsIGluc3RhbmNlKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuLCBlcnJvcik7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBzYWZlbHlDYWxsQ29tcG9uZW50V2lsbFVubW91bnQoXG4gIGN1cnJlbnQsXG4gIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gIGluc3RhbmNlXG4pIHtcbiAgaW5zdGFuY2UucHJvcHMgPSByZXNvbHZlQ2xhc3NDb21wb25lbnRQcm9wcyhcbiAgICBjdXJyZW50LnR5cGUsXG4gICAgY3VycmVudC5tZW1vaXplZFByb3BzXG4gICk7XG4gIGluc3RhbmNlLnN0YXRlID0gY3VycmVudC5tZW1vaXplZFN0YXRlO1xuICB0cnkge1xuICAgIGluc3RhbmNlLmNvbXBvbmVudFdpbGxVbm1vdW50KCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoY3VycmVudCwgbmVhcmVzdE1vdW50ZWRBbmNlc3RvciwgZXJyb3IpO1xuICB9XG59XG5mdW5jdGlvbiBzYWZlbHlBdHRhY2hSZWYoY3VycmVudCwgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvcikge1xuICB0cnkge1xuICAgIHZhciByZWYgPSBjdXJyZW50LnJlZjtcbiAgICBpZiAobnVsbCAhPT0gcmVmKSB7XG4gICAgICB2YXIgaW5zdGFuY2UgPSBjdXJyZW50LnN0YXRlTm9kZTtcbiAgICAgIHN3aXRjaCAoY3VycmVudC50YWcpIHtcbiAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgY2FzZSA1OlxuICAgICAgICAgIHZhciBpbnN0YW5jZVRvVXNlID0gaW5zdGFuY2U7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgaW5zdGFuY2VUb1VzZSA9IGluc3RhbmNlO1xuICAgICAgfVxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVmXG4gICAgICAgID8gKGN1cnJlbnQucmVmQ2xlYW51cCA9IHJlZihpbnN0YW5jZVRvVXNlKSlcbiAgICAgICAgOiAocmVmLmN1cnJlbnQgPSBpbnN0YW5jZVRvVXNlKTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoY3VycmVudCwgbmVhcmVzdE1vdW50ZWRBbmNlc3RvciwgZXJyb3IpO1xuICB9XG59XG5mdW5jdGlvbiBzYWZlbHlEZXRhY2hSZWYoY3VycmVudCwgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvcikge1xuICB2YXIgcmVmID0gY3VycmVudC5yZWYsXG4gICAgcmVmQ2xlYW51cCA9IGN1cnJlbnQucmVmQ2xlYW51cDtcbiAgaWYgKG51bGwgIT09IHJlZilcbiAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcmVmQ2xlYW51cClcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlZkNsZWFudXAoKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGN1cnJlbnQsIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsIGVycm9yKTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIChjdXJyZW50LnJlZkNsZWFudXAgPSBudWxsKSxcbiAgICAgICAgICAoY3VycmVudCA9IGN1cnJlbnQuYWx0ZXJuYXRlKSxcbiAgICAgICAgICBudWxsICE9IGN1cnJlbnQgJiYgKGN1cnJlbnQucmVmQ2xlYW51cCA9IG51bGwpO1xuICAgICAgfVxuICAgIGVsc2UgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHJlZilcbiAgICAgIHRyeSB7XG4gICAgICAgIHJlZihudWxsKTtcbiAgICAgIH0gY2F0Y2ggKGVycm9yJDExMikge1xuICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihjdXJyZW50LCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLCBlcnJvciQxMTIpO1xuICAgICAgfVxuICAgIGVsc2UgcmVmLmN1cnJlbnQgPSBudWxsO1xufVxuZnVuY3Rpb24gY29tbWl0SG9zdE1vdW50KGZpbmlzaGVkV29yaykge1xuICB2YXIgdHlwZSA9IGZpbmlzaGVkV29yay50eXBlLFxuICAgIHByb3BzID0gZmluaXNoZWRXb3JrLm1lbW9pemVkUHJvcHMsXG4gICAgaW5zdGFuY2UgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlO1xuICB0cnkge1xuICAgIGE6IHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBcImJ1dHRvblwiOlxuICAgICAgY2FzZSBcImlucHV0XCI6XG4gICAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgcHJvcHMuYXV0b0ZvY3VzICYmIGluc3RhbmNlLmZvY3VzKCk7XG4gICAgICAgIGJyZWFrIGE7XG4gICAgICBjYXNlIFwiaW1nXCI6XG4gICAgICAgIHByb3BzLnNyY1xuICAgICAgICAgID8gKGluc3RhbmNlLnNyYyA9IHByb3BzLnNyYylcbiAgICAgICAgICA6IHByb3BzLnNyY1NldCAmJiAoaW5zdGFuY2Uuc3Jjc2V0ID0gcHJvcHMuc3JjU2V0KTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuLCBlcnJvcik7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbW1pdEhvc3RVcGRhdGUoZmluaXNoZWRXb3JrLCBuZXdQcm9wcywgb2xkUHJvcHMpIHtcbiAgdHJ5IHtcbiAgICB2YXIgZG9tRWxlbWVudCA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGU7XG4gICAgdXBkYXRlUHJvcGVydGllcyhkb21FbGVtZW50LCBmaW5pc2hlZFdvcmsudHlwZSwgb2xkUHJvcHMsIG5ld1Byb3BzKTtcbiAgICBkb21FbGVtZW50W2ludGVybmFsUHJvcHNLZXldID0gbmV3UHJvcHM7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuLCBlcnJvcik7XG4gIH1cbn1cbmZ1bmN0aW9uIGlzSG9zdFBhcmVudChmaWJlcikge1xuICByZXR1cm4gKFxuICAgIDUgPT09IGZpYmVyLnRhZyB8fFxuICAgIDMgPT09IGZpYmVyLnRhZyB8fFxuICAgIDI2ID09PSBmaWJlci50YWcgfHxcbiAgICAyNyA9PT0gZmliZXIudGFnIHx8XG4gICAgNCA9PT0gZmliZXIudGFnXG4gICk7XG59XG5mdW5jdGlvbiBnZXRIb3N0U2libGluZyhmaWJlcikge1xuICBhOiBmb3IgKDs7KSB7XG4gICAgZm9yICg7IG51bGwgPT09IGZpYmVyLnNpYmxpbmc7ICkge1xuICAgICAgaWYgKG51bGwgPT09IGZpYmVyLnJldHVybiB8fCBpc0hvc3RQYXJlbnQoZmliZXIucmV0dXJuKSkgcmV0dXJuIG51bGw7XG4gICAgICBmaWJlciA9IGZpYmVyLnJldHVybjtcbiAgICB9XG4gICAgZmliZXIuc2libGluZy5yZXR1cm4gPSBmaWJlci5yZXR1cm47XG4gICAgZm9yIChcbiAgICAgIGZpYmVyID0gZmliZXIuc2libGluZztcbiAgICAgIDUgIT09IGZpYmVyLnRhZyAmJlxuICAgICAgNiAhPT0gZmliZXIudGFnICYmXG4gICAgICAyNyAhPT0gZmliZXIudGFnICYmXG4gICAgICAxOCAhPT0gZmliZXIudGFnO1xuXG4gICAgKSB7XG4gICAgICBpZiAoZmliZXIuZmxhZ3MgJiAyKSBjb250aW51ZSBhO1xuICAgICAgaWYgKG51bGwgPT09IGZpYmVyLmNoaWxkIHx8IDQgPT09IGZpYmVyLnRhZykgY29udGludWUgYTtcbiAgICAgIGVsc2UgKGZpYmVyLmNoaWxkLnJldHVybiA9IGZpYmVyKSwgKGZpYmVyID0gZmliZXIuY2hpbGQpO1xuICAgIH1cbiAgICBpZiAoIShmaWJlci5mbGFncyAmIDIpKSByZXR1cm4gZmliZXIuc3RhdGVOb2RlO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnRPckFwcGVuZFBsYWNlbWVudE5vZGVJbnRvQ29udGFpbmVyKG5vZGUsIGJlZm9yZSwgcGFyZW50KSB7XG4gIHZhciB0YWcgPSBub2RlLnRhZztcbiAgaWYgKDUgPT09IHRhZyB8fCA2ID09PSB0YWcpXG4gICAgKG5vZGUgPSBub2RlLnN0YXRlTm9kZSksXG4gICAgICBiZWZvcmVcbiAgICAgICAgPyA4ID09PSBwYXJlbnQubm9kZVR5cGVcbiAgICAgICAgICA/IHBhcmVudC5wYXJlbnROb2RlLmluc2VydEJlZm9yZShub2RlLCBiZWZvcmUpXG4gICAgICAgICAgOiBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGJlZm9yZSlcbiAgICAgICAgOiAoOCA9PT0gcGFyZW50Lm5vZGVUeXBlXG4gICAgICAgICAgICA/ICgoYmVmb3JlID0gcGFyZW50LnBhcmVudE5vZGUpLCBiZWZvcmUuaW5zZXJ0QmVmb3JlKG5vZGUsIHBhcmVudCkpXG4gICAgICAgICAgICA6ICgoYmVmb3JlID0gcGFyZW50KSwgYmVmb3JlLmFwcGVuZENoaWxkKG5vZGUpKSxcbiAgICAgICAgICAocGFyZW50ID0gcGFyZW50Ll9yZWFjdFJvb3RDb250YWluZXIpLFxuICAgICAgICAgIChudWxsICE9PSBwYXJlbnQgJiYgdm9pZCAwICE9PSBwYXJlbnQpIHx8XG4gICAgICAgICAgICBudWxsICE9PSBiZWZvcmUub25jbGljayB8fFxuICAgICAgICAgICAgKGJlZm9yZS5vbmNsaWNrID0gbm9vcCQxKSk7XG4gIGVsc2UgaWYgKDQgIT09IHRhZyAmJiAyNyAhPT0gdGFnICYmICgobm9kZSA9IG5vZGUuY2hpbGQpLCBudWxsICE9PSBub2RlKSlcbiAgICBmb3IgKFxuICAgICAgaW5zZXJ0T3JBcHBlbmRQbGFjZW1lbnROb2RlSW50b0NvbnRhaW5lcihub2RlLCBiZWZvcmUsIHBhcmVudCksXG4gICAgICAgIG5vZGUgPSBub2RlLnNpYmxpbmc7XG4gICAgICBudWxsICE9PSBub2RlO1xuXG4gICAgKVxuICAgICAgaW5zZXJ0T3JBcHBlbmRQbGFjZW1lbnROb2RlSW50b0NvbnRhaW5lcihub2RlLCBiZWZvcmUsIHBhcmVudCksXG4gICAgICAgIChub2RlID0gbm9kZS5zaWJsaW5nKTtcbn1cbmZ1bmN0aW9uIGluc2VydE9yQXBwZW5kUGxhY2VtZW50Tm9kZShub2RlLCBiZWZvcmUsIHBhcmVudCkge1xuICB2YXIgdGFnID0gbm9kZS50YWc7XG4gIGlmICg1ID09PSB0YWcgfHwgNiA9PT0gdGFnKVxuICAgIChub2RlID0gbm9kZS5zdGF0ZU5vZGUpLFxuICAgICAgYmVmb3JlID8gcGFyZW50Lmluc2VydEJlZm9yZShub2RlLCBiZWZvcmUpIDogcGFyZW50LmFwcGVuZENoaWxkKG5vZGUpO1xuICBlbHNlIGlmICg0ICE9PSB0YWcgJiYgMjcgIT09IHRhZyAmJiAoKG5vZGUgPSBub2RlLmNoaWxkKSwgbnVsbCAhPT0gbm9kZSkpXG4gICAgZm9yIChcbiAgICAgIGluc2VydE9yQXBwZW5kUGxhY2VtZW50Tm9kZShub2RlLCBiZWZvcmUsIHBhcmVudCksIG5vZGUgPSBub2RlLnNpYmxpbmc7XG4gICAgICBudWxsICE9PSBub2RlO1xuXG4gICAgKVxuICAgICAgaW5zZXJ0T3JBcHBlbmRQbGFjZW1lbnROb2RlKG5vZGUsIGJlZm9yZSwgcGFyZW50KSwgKG5vZGUgPSBub2RlLnNpYmxpbmcpO1xufVxudmFyIG9mZnNjcmVlblN1YnRyZWVJc0hpZGRlbiA9ICExLFxuICBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuID0gITEsXG4gIG5lZWRzRm9ybVJlc2V0ID0gITEsXG4gIFBvc3NpYmx5V2Vha1NldCA9IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIFdlYWtTZXQgPyBXZWFrU2V0IDogU2V0LFxuICBuZXh0RWZmZWN0ID0gbnVsbCxcbiAgc2hvdWxkRmlyZUFmdGVyQWN0aXZlSW5zdGFuY2VCbHVyID0gITE7XG5mdW5jdGlvbiBjb21taXRCZWZvcmVNdXRhdGlvbkVmZmVjdHMocm9vdCwgZmlyc3RDaGlsZCkge1xuICByb290ID0gcm9vdC5jb250YWluZXJJbmZvO1xuICBldmVudHNFbmFibGVkID0gX2VuYWJsZWQ7XG4gIHJvb3QgPSBnZXRBY3RpdmVFbGVtZW50RGVlcChyb290KTtcbiAgaWYgKGhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyhyb290KSkge1xuICAgIGlmIChcInNlbGVjdGlvblN0YXJ0XCIgaW4gcm9vdClcbiAgICAgIHZhciBKU0NvbXBpbGVyX3RlbXAgPSB7XG4gICAgICAgIHN0YXJ0OiByb290LnNlbGVjdGlvblN0YXJ0LFxuICAgICAgICBlbmQ6IHJvb3Quc2VsZWN0aW9uRW5kXG4gICAgICB9O1xuICAgIGVsc2VcbiAgICAgIGE6IHtcbiAgICAgICAgSlNDb21waWxlcl90ZW1wID1cbiAgICAgICAgICAoKEpTQ29tcGlsZXJfdGVtcCA9IHJvb3Qub3duZXJEb2N1bWVudCkgJiZcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcC5kZWZhdWx0VmlldykgfHxcbiAgICAgICAgICB3aW5kb3c7XG4gICAgICAgIHZhciBzZWxlY3Rpb24gPVxuICAgICAgICAgIEpTQ29tcGlsZXJfdGVtcC5nZXRTZWxlY3Rpb24gJiYgSlNDb21waWxlcl90ZW1wLmdldFNlbGVjdGlvbigpO1xuICAgICAgICBpZiAoc2VsZWN0aW9uICYmIDAgIT09IHNlbGVjdGlvbi5yYW5nZUNvdW50KSB7XG4gICAgICAgICAgSlNDb21waWxlcl90ZW1wID0gc2VsZWN0aW9uLmFuY2hvck5vZGU7XG4gICAgICAgICAgdmFyIGFuY2hvck9mZnNldCA9IHNlbGVjdGlvbi5hbmNob3JPZmZzZXQsXG4gICAgICAgICAgICBmb2N1c05vZGUgPSBzZWxlY3Rpb24uZm9jdXNOb2RlO1xuICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGVjdGlvbi5mb2N1c09mZnNldDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wLm5vZGVUeXBlLCBmb2N1c05vZGUubm9kZVR5cGU7XG4gICAgICAgICAgfSBjYXRjaCAoZSQyMCkge1xuICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wID0gbnVsbDtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHZhciBsZW5ndGggPSAwLFxuICAgICAgICAgICAgc3RhcnQgPSAtMSxcbiAgICAgICAgICAgIGVuZCA9IC0xLFxuICAgICAgICAgICAgaW5kZXhXaXRoaW5BbmNob3IgPSAwLFxuICAgICAgICAgICAgaW5kZXhXaXRoaW5Gb2N1cyA9IDAsXG4gICAgICAgICAgICBub2RlID0gcm9vdCxcbiAgICAgICAgICAgIHBhcmVudE5vZGUgPSBudWxsO1xuICAgICAgICAgIGI6IGZvciAoOzspIHtcbiAgICAgICAgICAgIGZvciAodmFyIG5leHQ7IDsgKSB7XG4gICAgICAgICAgICAgIG5vZGUgIT09IEpTQ29tcGlsZXJfdGVtcCB8fFxuICAgICAgICAgICAgICAgICgwICE9PSBhbmNob3JPZmZzZXQgJiYgMyAhPT0gbm9kZS5ub2RlVHlwZSkgfHxcbiAgICAgICAgICAgICAgICAoc3RhcnQgPSBsZW5ndGggKyBhbmNob3JPZmZzZXQpO1xuICAgICAgICAgICAgICBub2RlICE9PSBmb2N1c05vZGUgfHxcbiAgICAgICAgICAgICAgICAoMCAhPT0gc2VsZWN0aW9uICYmIDMgIT09IG5vZGUubm9kZVR5cGUpIHx8XG4gICAgICAgICAgICAgICAgKGVuZCA9IGxlbmd0aCArIHNlbGVjdGlvbik7XG4gICAgICAgICAgICAgIDMgPT09IG5vZGUubm9kZVR5cGUgJiYgKGxlbmd0aCArPSBub2RlLm5vZGVWYWx1ZS5sZW5ndGgpO1xuICAgICAgICAgICAgICBpZiAobnVsbCA9PT0gKG5leHQgPSBub2RlLmZpcnN0Q2hpbGQpKSBicmVhaztcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGU7XG4gICAgICAgICAgICAgIG5vZGUgPSBuZXh0O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yICg7Oykge1xuICAgICAgICAgICAgICBpZiAobm9kZSA9PT0gcm9vdCkgYnJlYWsgYjtcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9PT0gSlNDb21waWxlcl90ZW1wICYmXG4gICAgICAgICAgICAgICAgKytpbmRleFdpdGhpbkFuY2hvciA9PT0gYW5jaG9yT2Zmc2V0ICYmXG4gICAgICAgICAgICAgICAgKHN0YXJ0ID0gbGVuZ3RoKTtcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9PT0gZm9jdXNOb2RlICYmXG4gICAgICAgICAgICAgICAgKytpbmRleFdpdGhpbkZvY3VzID09PSBzZWxlY3Rpb24gJiZcbiAgICAgICAgICAgICAgICAoZW5kID0gbGVuZ3RoKTtcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT09IChuZXh0ID0gbm9kZS5uZXh0U2libGluZykpIGJyZWFrO1xuICAgICAgICAgICAgICBub2RlID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgICAgcGFyZW50Tm9kZSA9IG5vZGUucGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5vZGUgPSBuZXh0O1xuICAgICAgICAgIH1cbiAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAgPVxuICAgICAgICAgICAgLTEgPT09IHN0YXJ0IHx8IC0xID09PSBlbmQgPyBudWxsIDogeyBzdGFydDogc3RhcnQsIGVuZDogZW5kIH07XG4gICAgICAgIH0gZWxzZSBKU0NvbXBpbGVyX3RlbXAgPSBudWxsO1xuICAgICAgfVxuICAgIEpTQ29tcGlsZXJfdGVtcCA9IEpTQ29tcGlsZXJfdGVtcCB8fCB7IHN0YXJ0OiAwLCBlbmQ6IDAgfTtcbiAgfSBlbHNlIEpTQ29tcGlsZXJfdGVtcCA9IG51bGw7XG4gIHNlbGVjdGlvbkluZm9ybWF0aW9uID0geyBmb2N1c2VkRWxlbTogcm9vdCwgc2VsZWN0aW9uUmFuZ2U6IEpTQ29tcGlsZXJfdGVtcCB9O1xuICBfZW5hYmxlZCA9ICExO1xuICBmb3IgKG5leHRFZmZlY3QgPSBmaXJzdENoaWxkOyBudWxsICE9PSBuZXh0RWZmZWN0OyApXG4gICAgaWYgKFxuICAgICAgKChmaXJzdENoaWxkID0gbmV4dEVmZmVjdCksXG4gICAgICAocm9vdCA9IGZpcnN0Q2hpbGQuY2hpbGQpLFxuICAgICAgMCAhPT0gKGZpcnN0Q2hpbGQuc3VidHJlZUZsYWdzICYgMTAyOCkgJiYgbnVsbCAhPT0gcm9vdClcbiAgICApXG4gICAgICAocm9vdC5yZXR1cm4gPSBmaXJzdENoaWxkKSwgKG5leHRFZmZlY3QgPSByb290KTtcbiAgICBlbHNlXG4gICAgICBmb3IgKDsgbnVsbCAhPT0gbmV4dEVmZmVjdDsgKSB7XG4gICAgICAgIGZpcnN0Q2hpbGQgPSBuZXh0RWZmZWN0O1xuICAgICAgICBmb2N1c05vZGUgPSBmaXJzdENoaWxkLmFsdGVybmF0ZTtcbiAgICAgICAgcm9vdCA9IGZpcnN0Q2hpbGQuZmxhZ3M7XG4gICAgICAgIHN3aXRjaCAoZmlyc3RDaGlsZC50YWcpIHtcbiAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDExOlxuICAgICAgICAgIGNhc2UgMTU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICBpZiAoMCAhPT0gKHJvb3QgJiAxMDI0KSAmJiBudWxsICE9PSBmb2N1c05vZGUpIHtcbiAgICAgICAgICAgICAgcm9vdCA9IHZvaWQgMDtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wID0gZmlyc3RDaGlsZDtcbiAgICAgICAgICAgICAgYW5jaG9yT2Zmc2V0ID0gZm9jdXNOb2RlLm1lbW9pemVkUHJvcHM7XG4gICAgICAgICAgICAgIGZvY3VzTm9kZSA9IGZvY3VzTm9kZS5tZW1vaXplZFN0YXRlO1xuICAgICAgICAgICAgICBzZWxlY3Rpb24gPSBKU0NvbXBpbGVyX3RlbXAuc3RhdGVOb2RlO1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZFByZXZQcm9wcyA9IHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKFxuICAgICAgICAgICAgICAgICAgSlNDb21waWxlcl90ZW1wLnR5cGUsXG4gICAgICAgICAgICAgICAgICBhbmNob3JPZmZzZXQsXG4gICAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAuZWxlbWVudFR5cGUgPT09IEpTQ29tcGlsZXJfdGVtcC50eXBlXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgICByb290ID0gc2VsZWN0aW9uLmdldFNuYXBzaG90QmVmb3JlVXBkYXRlKFxuICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRQcmV2UHJvcHMsXG4gICAgICAgICAgICAgICAgICBmb2N1c05vZGVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgIHNlbGVjdGlvbi5fX3JlYWN0SW50ZXJuYWxTbmFwc2hvdEJlZm9yZVVwZGF0ZSA9IHJvb3Q7XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoXG4gICAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAsXG4gICAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX3RlbXAucmV0dXJuLFxuICAgICAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICBpZiAoMCAhPT0gKHJvb3QgJiAxMDI0KSlcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICgocm9vdCA9IGZpcnN0Q2hpbGQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFxuICAgICAgICAgICAgICAgIChKU0NvbXBpbGVyX3RlbXAgPSByb290Lm5vZGVUeXBlKSxcbiAgICAgICAgICAgICAgICA5ID09PSBKU0NvbXBpbGVyX3RlbXApXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjbGVhckNvbnRhaW5lclNwYXJpbmdseShyb290KTtcbiAgICAgICAgICAgICAgZWxzZSBpZiAoMSA9PT0gSlNDb21waWxlcl90ZW1wKVxuICAgICAgICAgICAgICAgIHN3aXRjaCAocm9vdC5ub2RlTmFtZSkge1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIkhFQURcIjpcbiAgICAgICAgICAgICAgICAgIGNhc2UgXCJIVE1MXCI6XG4gICAgICAgICAgICAgICAgICBjYXNlIFwiQk9EWVwiOlxuICAgICAgICAgICAgICAgICAgICBjbGVhckNvbnRhaW5lclNwYXJpbmdseShyb290KTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICByb290LnRleHRDb250ZW50ID0gXCJcIjtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIGNhc2UgNjpcbiAgICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgY2FzZSAxNzpcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBpZiAoMCAhPT0gKHJvb3QgJiAxMDI0KSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNjMpKTtcbiAgICAgICAgfVxuICAgICAgICByb290ID0gZmlyc3RDaGlsZC5zaWJsaW5nO1xuICAgICAgICBpZiAobnVsbCAhPT0gcm9vdCkge1xuICAgICAgICAgIHJvb3QucmV0dXJuID0gZmlyc3RDaGlsZC5yZXR1cm47XG4gICAgICAgICAgbmV4dEVmZmVjdCA9IHJvb3Q7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgICAgbmV4dEVmZmVjdCA9IGZpcnN0Q2hpbGQucmV0dXJuO1xuICAgICAgfVxuICByZXNvbHZlZFByZXZQcm9wcyA9IHNob3VsZEZpcmVBZnRlckFjdGl2ZUluc3RhbmNlQmx1cjtcbiAgc2hvdWxkRmlyZUFmdGVyQWN0aXZlSW5zdGFuY2VCbHVyID0gITE7XG4gIHJldHVybiByZXNvbHZlZFByZXZQcm9wcztcbn1cbmZ1bmN0aW9uIGNvbW1pdExheW91dEVmZmVjdE9uRmliZXIoZmluaXNoZWRSb290LCBjdXJyZW50LCBmaW5pc2hlZFdvcmspIHtcbiAgdmFyIGZsYWdzID0gZmluaXNoZWRXb3JrLmZsYWdzO1xuICBzd2l0Y2ggKGZpbmlzaGVkV29yay50YWcpIHtcbiAgICBjYXNlIDA6XG4gICAgY2FzZSAxMTpcbiAgICBjYXNlIDE1OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZUxheW91dEVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA0ICYmIGNvbW1pdEhvb2tFZmZlY3RMaXN0TW91bnQoNSwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VMYXlvdXRFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGlmIChmbGFncyAmIDQpXG4gICAgICAgIGlmICgoKGZpbmlzaGVkUm9vdCA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGUpLCBudWxsID09PSBjdXJyZW50KSlcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmluaXNoZWRSb290LmNvbXBvbmVudERpZE1vdW50KCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFyIHByZXZQcm9wcyA9IHJlc29sdmVDbGFzc0NvbXBvbmVudFByb3BzKFxuICAgICAgICAgICAgZmluaXNoZWRXb3JrLnR5cGUsXG4gICAgICAgICAgICBjdXJyZW50Lm1lbW9pemVkUHJvcHNcbiAgICAgICAgICApO1xuICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50Lm1lbW9pemVkU3RhdGU7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpbmlzaGVkUm9vdC5jb21wb25lbnREaWRVcGRhdGUoXG4gICAgICAgICAgICAgIHByZXZQcm9wcyxcbiAgICAgICAgICAgICAgY3VycmVudCxcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290Ll9fcmVhY3RJbnRlcm5hbFNuYXBzaG90QmVmb3JlVXBkYXRlXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yJDExMSkge1xuICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICAgICAgZmluaXNoZWRXb3JrLnJldHVybixcbiAgICAgICAgICAgICAgZXJyb3IkMTExXG4gICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgZmxhZ3MgJiA2NCAmJiBjb21taXRDbGFzc0NhbGxiYWNrcyhmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA1MTIgJiYgc2FmZWx5QXR0YWNoUmVmKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlTGF5b3V0RWZmZWN0cyhmaW5pc2hlZFJvb3QsIGZpbmlzaGVkV29yayk7XG4gICAgICBpZiAoZmxhZ3MgJiA2NCAmJiAoKGZsYWdzID0gZmluaXNoZWRXb3JrLnVwZGF0ZVF1ZXVlKSwgbnVsbCAhPT0gZmxhZ3MpKSB7XG4gICAgICAgIGZpbmlzaGVkUm9vdCA9IG51bGw7XG4gICAgICAgIGlmIChudWxsICE9PSBmaW5pc2hlZFdvcmsuY2hpbGQpXG4gICAgICAgICAgc3dpdGNoIChmaW5pc2hlZFdvcmsuY2hpbGQudGFnKSB7XG4gICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgY2FzZSA1OlxuICAgICAgICAgICAgICBmaW5pc2hlZFJvb3QgPSBmaW5pc2hlZFdvcmsuY2hpbGQuc3RhdGVOb2RlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290ID0gZmluaXNoZWRXb3JrLmNoaWxkLnN0YXRlTm9kZTtcbiAgICAgICAgICB9XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgY29tbWl0Q2FsbGJhY2tzKGZsYWdzLCBmaW5pc2hlZFJvb3QpO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI2OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZUxheW91dEVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA1MTIgJiYgc2FmZWx5QXR0YWNoUmVmKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI3OlxuICAgIGNhc2UgNTpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VMYXlvdXRFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIG51bGwgPT09IGN1cnJlbnQgJiYgZmxhZ3MgJiA0ICYmIGNvbW1pdEhvc3RNb3VudChmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA1MTIgJiYgc2FmZWx5QXR0YWNoUmVmKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEyOlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZUxheW91dEVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMzpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VMYXlvdXRFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGZsYWdzICYgNCAmJiBjb21taXRTdXNwZW5zZUh5ZHJhdGlvbkNhbGxiYWNrcyhmaW5pc2hlZFJvb3QsIGZpbmlzaGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDIyOlxuICAgICAgcHJldlByb3BzID1cbiAgICAgICAgbnVsbCAhPT0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGUgfHwgb2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuO1xuICAgICAgaWYgKCFwcmV2UHJvcHMpIHtcbiAgICAgICAgY3VycmVudCA9XG4gICAgICAgICAgKG51bGwgIT09IGN1cnJlbnQgJiYgbnVsbCAhPT0gY3VycmVudC5tZW1vaXplZFN0YXRlKSB8fFxuICAgICAgICAgIG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW47XG4gICAgICAgIHZhciBwcmV2T2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuID0gb2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuLFxuICAgICAgICAgIHByZXZPZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuID0gb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbjtcbiAgICAgICAgb2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuID0gcHJldlByb3BzO1xuICAgICAgICAob2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiA9IGN1cnJlbnQpICYmICFwcmV2T2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlblxuICAgICAgICAgID8gcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgICAgIDAgIT09IChmaW5pc2hlZFdvcmsuc3VidHJlZUZsYWdzICYgODc3MilcbiAgICAgICAgICAgIClcbiAgICAgICAgICA6IHJlY3Vyc2l2ZWx5VHJhdmVyc2VMYXlvdXRFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgICAgb2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuID0gcHJldk9mZnNjcmVlblN1YnRyZWVJc0hpZGRlbjtcbiAgICAgICAgb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiA9IHByZXZPZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuO1xuICAgICAgfVxuICAgICAgZmxhZ3MgJiA1MTIgJiZcbiAgICAgICAgKFwibWFudWFsXCIgPT09IGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzLm1vZGVcbiAgICAgICAgICA/IHNhZmVseUF0dGFjaFJlZihmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4pXG4gICAgICAgICAgOiBzYWZlbHlEZXRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZUxheW91dEVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICB9XG59XG5mdW5jdGlvbiBkZXRhY2hGaWJlckFmdGVyRWZmZWN0cyhmaWJlcikge1xuICB2YXIgYWx0ZXJuYXRlID0gZmliZXIuYWx0ZXJuYXRlO1xuICBudWxsICE9PSBhbHRlcm5hdGUgJiZcbiAgICAoKGZpYmVyLmFsdGVybmF0ZSA9IG51bGwpLCBkZXRhY2hGaWJlckFmdGVyRWZmZWN0cyhhbHRlcm5hdGUpKTtcbiAgZmliZXIuY2hpbGQgPSBudWxsO1xuICBmaWJlci5kZWxldGlvbnMgPSBudWxsO1xuICBmaWJlci5zaWJsaW5nID0gbnVsbDtcbiAgNSA9PT0gZmliZXIudGFnICYmXG4gICAgKChhbHRlcm5hdGUgPSBmaWJlci5zdGF0ZU5vZGUpLFxuICAgIG51bGwgIT09IGFsdGVybmF0ZSAmJiBkZXRhY2hEZWxldGVkSW5zdGFuY2UoYWx0ZXJuYXRlKSk7XG4gIGZpYmVyLnN0YXRlTm9kZSA9IG51bGw7XG4gIGZpYmVyLnJldHVybiA9IG51bGw7XG4gIGZpYmVyLmRlcGVuZGVuY2llcyA9IG51bGw7XG4gIGZpYmVyLm1lbW9pemVkUHJvcHMgPSBudWxsO1xuICBmaWJlci5tZW1vaXplZFN0YXRlID0gbnVsbDtcbiAgZmliZXIucGVuZGluZ1Byb3BzID0gbnVsbDtcbiAgZmliZXIuc3RhdGVOb2RlID0gbnVsbDtcbiAgZmliZXIudXBkYXRlUXVldWUgPSBudWxsO1xufVxudmFyIGhvc3RQYXJlbnQgPSBudWxsLFxuICBob3N0UGFyZW50SXNDb250YWluZXIgPSAhMTtcbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEZWxldGlvbkVmZmVjdHMoXG4gIGZpbmlzaGVkUm9vdCxcbiAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvcixcbiAgcGFyZW50XG4pIHtcbiAgZm9yIChwYXJlbnQgPSBwYXJlbnQuY2hpbGQ7IG51bGwgIT09IHBhcmVudDsgKVxuICAgIGNvbW1pdERlbGV0aW9uRWZmZWN0c09uRmliZXIoZmluaXNoZWRSb290LCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLCBwYXJlbnQpLFxuICAgICAgKHBhcmVudCA9IHBhcmVudC5zaWJsaW5nKTtcbn1cbmZ1bmN0aW9uIGNvbW1pdERlbGV0aW9uRWZmZWN0c09uRmliZXIoXG4gIGZpbmlzaGVkUm9vdCxcbiAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvcixcbiAgZGVsZXRlZEZpYmVyXG4pIHtcbiAgaWYgKGluamVjdGVkSG9vayAmJiBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBpbmplY3RlZEhvb2sub25Db21taXRGaWJlclVubW91bnQpXG4gICAgdHJ5IHtcbiAgICAgIGluamVjdGVkSG9vay5vbkNvbW1pdEZpYmVyVW5tb3VudChyZW5kZXJlcklELCBkZWxldGVkRmliZXIpO1xuICAgIH0gY2F0Y2ggKGVycikge31cbiAgc3dpdGNoIChkZWxldGVkRmliZXIudGFnKSB7XG4gICAgY2FzZSAyNjpcbiAgICAgIG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4gfHxcbiAgICAgICAgc2FmZWx5RGV0YWNoUmVmKGRlbGV0ZWRGaWJlciwgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvcik7XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGVsZXRpb25FZmZlY3RzKFxuICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgIGRlbGV0ZWRGaWJlclxuICAgICAgKTtcbiAgICAgIGRlbGV0ZWRGaWJlci5tZW1vaXplZFN0YXRlXG4gICAgICAgID8gZGVsZXRlZEZpYmVyLm1lbW9pemVkU3RhdGUuY291bnQtLVxuICAgICAgICA6IGRlbGV0ZWRGaWJlci5zdGF0ZU5vZGUgJiZcbiAgICAgICAgICAoKGRlbGV0ZWRGaWJlciA9IGRlbGV0ZWRGaWJlci5zdGF0ZU5vZGUpLFxuICAgICAgICAgIGRlbGV0ZWRGaWJlci5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGRlbGV0ZWRGaWJlcikpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyNzpcbiAgICAgIG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4gfHxcbiAgICAgICAgc2FmZWx5RGV0YWNoUmVmKGRlbGV0ZWRGaWJlciwgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvcik7XG4gICAgICB2YXIgcHJldkhvc3RQYXJlbnQgPSBob3N0UGFyZW50LFxuICAgICAgICBwcmV2SG9zdFBhcmVudElzQ29udGFpbmVyID0gaG9zdFBhcmVudElzQ29udGFpbmVyO1xuICAgICAgaG9zdFBhcmVudCA9IGRlbGV0ZWRGaWJlci5zdGF0ZU5vZGU7XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGVsZXRpb25FZmZlY3RzKFxuICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgIGRlbGV0ZWRGaWJlclxuICAgICAgKTtcbiAgICAgIGRlbGV0ZWRGaWJlciA9IGRlbGV0ZWRGaWJlci5zdGF0ZU5vZGU7XG4gICAgICBmb3IgKFxuICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yID0gZGVsZXRlZEZpYmVyLmF0dHJpYnV0ZXM7XG4gICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IubGVuZ3RoO1xuXG4gICAgICApXG4gICAgICAgIGRlbGV0ZWRGaWJlci5yZW1vdmVBdHRyaWJ1dGVOb2RlKG5lYXJlc3RNb3VudGVkQW5jZXN0b3JbMF0pO1xuICAgICAgZGV0YWNoRGVsZXRlZEluc3RhbmNlKGRlbGV0ZWRGaWJlcik7XG4gICAgICBob3N0UGFyZW50ID0gcHJldkhvc3RQYXJlbnQ7XG4gICAgICBob3N0UGFyZW50SXNDb250YWluZXIgPSBwcmV2SG9zdFBhcmVudElzQ29udGFpbmVyO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA1OlxuICAgICAgb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiB8fFxuICAgICAgICBzYWZlbHlEZXRhY2hSZWYoZGVsZXRlZEZpYmVyLCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yKTtcbiAgICBjYXNlIDY6XG4gICAgICBwcmV2SG9zdFBhcmVudElzQ29udGFpbmVyID0gaG9zdFBhcmVudDtcbiAgICAgIHZhciBwcmV2SG9zdFBhcmVudElzQ29udGFpbmVyJDExOSA9IGhvc3RQYXJlbnRJc0NvbnRhaW5lcjtcbiAgICAgIGhvc3RQYXJlbnQgPSBudWxsO1xuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURlbGV0aW9uRWZmZWN0cyhcbiAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICBkZWxldGVkRmliZXJcbiAgICAgICk7XG4gICAgICBob3N0UGFyZW50ID0gcHJldkhvc3RQYXJlbnRJc0NvbnRhaW5lcjtcbiAgICAgIGhvc3RQYXJlbnRJc0NvbnRhaW5lciA9IHByZXZIb3N0UGFyZW50SXNDb250YWluZXIkMTE5O1xuICAgICAgaWYgKG51bGwgIT09IGhvc3RQYXJlbnQpXG4gICAgICAgIGlmIChob3N0UGFyZW50SXNDb250YWluZXIpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIChmaW5pc2hlZFJvb3QgPSBob3N0UGFyZW50KSxcbiAgICAgICAgICAgICAgKHByZXZIb3N0UGFyZW50ID0gZGVsZXRlZEZpYmVyLnN0YXRlTm9kZSksXG4gICAgICAgICAgICAgIDggPT09IGZpbmlzaGVkUm9vdC5ub2RlVHlwZVxuICAgICAgICAgICAgICAgID8gZmluaXNoZWRSb290LnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocHJldkhvc3RQYXJlbnQpXG4gICAgICAgICAgICAgICAgOiBmaW5pc2hlZFJvb3QucmVtb3ZlQ2hpbGQocHJldkhvc3RQYXJlbnQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihcbiAgICAgICAgICAgICAgZGVsZXRlZEZpYmVyLFxuICAgICAgICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICAgICAgICBlcnJvclxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICAgIGVsc2VcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgaG9zdFBhcmVudC5yZW1vdmVDaGlsZChkZWxldGVkRmliZXIuc3RhdGVOb2RlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoXG4gICAgICAgICAgICAgIGRlbGV0ZWRGaWJlcixcbiAgICAgICAgICAgICAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvcixcbiAgICAgICAgICAgICAgZXJyb3JcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxODpcbiAgICAgIG51bGwgIT09IGhvc3RQYXJlbnQgJiZcbiAgICAgICAgKGhvc3RQYXJlbnRJc0NvbnRhaW5lclxuICAgICAgICAgID8gKChuZWFyZXN0TW91bnRlZEFuY2VzdG9yID0gaG9zdFBhcmVudCksXG4gICAgICAgICAgICAoZGVsZXRlZEZpYmVyID0gZGVsZXRlZEZpYmVyLnN0YXRlTm9kZSksXG4gICAgICAgICAgICA4ID09PSBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLm5vZGVUeXBlXG4gICAgICAgICAgICAgID8gY2xlYXJTdXNwZW5zZUJvdW5kYXJ5KFxuICAgICAgICAgICAgICAgICAgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvci5wYXJlbnROb2RlLFxuICAgICAgICAgICAgICAgICAgZGVsZXRlZEZpYmVyXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICA6IDEgPT09IG5lYXJlc3RNb3VudGVkQW5jZXN0b3Iubm9kZVR5cGUgJiZcbiAgICAgICAgICAgICAgICBjbGVhclN1c3BlbnNlQm91bmRhcnkobmVhcmVzdE1vdW50ZWRBbmNlc3RvciwgZGVsZXRlZEZpYmVyKSxcbiAgICAgICAgICAgIHJldHJ5SWZCbG9ja2VkT24obmVhcmVzdE1vdW50ZWRBbmNlc3RvcikpXG4gICAgICAgICAgOiBjbGVhclN1c3BlbnNlQm91bmRhcnkoaG9zdFBhcmVudCwgZGVsZXRlZEZpYmVyLnN0YXRlTm9kZSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA0OlxuICAgICAgcHJldkhvc3RQYXJlbnQgPSBob3N0UGFyZW50O1xuICAgICAgcHJldkhvc3RQYXJlbnRJc0NvbnRhaW5lciA9IGhvc3RQYXJlbnRJc0NvbnRhaW5lcjtcbiAgICAgIGhvc3RQYXJlbnQgPSBkZWxldGVkRmliZXIuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87XG4gICAgICBob3N0UGFyZW50SXNDb250YWluZXIgPSAhMDtcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEZWxldGlvbkVmZmVjdHMoXG4gICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvcixcbiAgICAgICAgZGVsZXRlZEZpYmVyXG4gICAgICApO1xuICAgICAgaG9zdFBhcmVudCA9IHByZXZIb3N0UGFyZW50O1xuICAgICAgaG9zdFBhcmVudElzQ29udGFpbmVyID0gcHJldkhvc3RQYXJlbnRJc0NvbnRhaW5lcjtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDExOlxuICAgIGNhc2UgMTQ6XG4gICAgY2FzZSAxNTpcbiAgICAgIG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4gfHxcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RVbm1vdW50KDIsIGRlbGV0ZWRGaWJlciwgbmVhcmVzdE1vdW50ZWRBbmNlc3Rvcik7XG4gICAgICBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuIHx8XG4gICAgICAgIGNvbW1pdEhvb2tFZmZlY3RMaXN0VW5tb3VudCg0LCBkZWxldGVkRmliZXIsIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IpO1xuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURlbGV0aW9uRWZmZWN0cyhcbiAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICBkZWxldGVkRmliZXJcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuIHx8XG4gICAgICAgIChzYWZlbHlEZXRhY2hSZWYoZGVsZXRlZEZpYmVyLCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yKSxcbiAgICAgICAgKHByZXZIb3N0UGFyZW50ID0gZGVsZXRlZEZpYmVyLnN0YXRlTm9kZSksXG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHByZXZIb3N0UGFyZW50LmNvbXBvbmVudFdpbGxVbm1vdW50ICYmXG4gICAgICAgICAgc2FmZWx5Q2FsbENvbXBvbmVudFdpbGxVbm1vdW50KFxuICAgICAgICAgICAgZGVsZXRlZEZpYmVyLFxuICAgICAgICAgICAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvcixcbiAgICAgICAgICAgIHByZXZIb3N0UGFyZW50XG4gICAgICAgICAgKSk7XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGVsZXRpb25FZmZlY3RzKFxuICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgIGRlbGV0ZWRGaWJlclxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjE6XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGVsZXRpb25FZmZlY3RzKFxuICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgIGRlbGV0ZWRGaWJlclxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgICBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuIHx8XG4gICAgICAgIHNhZmVseURldGFjaFJlZihkZWxldGVkRmliZXIsIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IpO1xuICAgICAgb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiA9XG4gICAgICAgIChwcmV2SG9zdFBhcmVudCA9IG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4pIHx8XG4gICAgICAgIG51bGwgIT09IGRlbGV0ZWRGaWJlci5tZW1vaXplZFN0YXRlO1xuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURlbGV0aW9uRWZmZWN0cyhcbiAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICBkZWxldGVkRmliZXJcbiAgICAgICk7XG4gICAgICBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuID0gcHJldkhvc3RQYXJlbnQ7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURlbGV0aW9uRWZmZWN0cyhcbiAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLFxuICAgICAgICBkZWxldGVkRmliZXJcbiAgICAgICk7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbW1pdFN1c3BlbnNlSHlkcmF0aW9uQ2FsbGJhY2tzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKSB7XG4gIGlmIChcbiAgICBudWxsID09PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZSAmJlxuICAgICgoZmluaXNoZWRSb290ID0gZmluaXNoZWRXb3JrLmFsdGVybmF0ZSksXG4gICAgbnVsbCAhPT0gZmluaXNoZWRSb290ICYmXG4gICAgICAoKGZpbmlzaGVkUm9vdCA9IGZpbmlzaGVkUm9vdC5tZW1vaXplZFN0YXRlKSxcbiAgICAgIG51bGwgIT09IGZpbmlzaGVkUm9vdCAmJlxuICAgICAgICAoKGZpbmlzaGVkUm9vdCA9IGZpbmlzaGVkUm9vdC5kZWh5ZHJhdGVkKSwgbnVsbCAhPT0gZmluaXNoZWRSb290KSkpXG4gIClcbiAgICB0cnkge1xuICAgICAgcmV0cnlJZkJsb2NrZWRPbihmaW5pc2hlZFJvb3QpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4sIGVycm9yKTtcbiAgICB9XG59XG5mdW5jdGlvbiBnZXRSZXRyeUNhY2hlKGZpbmlzaGVkV29yaykge1xuICBzd2l0Y2ggKGZpbmlzaGVkV29yay50YWcpIHtcbiAgICBjYXNlIDEzOlxuICAgIGNhc2UgMTk6XG4gICAgICB2YXIgcmV0cnlDYWNoZSA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGU7XG4gICAgICBudWxsID09PSByZXRyeUNhY2hlICYmXG4gICAgICAgIChyZXRyeUNhY2hlID0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZSA9IG5ldyBQb3NzaWJseVdlYWtTZXQoKSk7XG4gICAgICByZXR1cm4gcmV0cnlDYWNoZTtcbiAgICBjYXNlIDIyOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKGZpbmlzaGVkV29yayA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGUpLFxuICAgICAgICAocmV0cnlDYWNoZSA9IGZpbmlzaGVkV29yay5fcmV0cnlDYWNoZSksXG4gICAgICAgIG51bGwgPT09IHJldHJ5Q2FjaGUgJiZcbiAgICAgICAgICAocmV0cnlDYWNoZSA9IGZpbmlzaGVkV29yay5fcmV0cnlDYWNoZSA9IG5ldyBQb3NzaWJseVdlYWtTZXQoKSksXG4gICAgICAgIHJldHJ5Q2FjaGVcbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDM1LCBmaW5pc2hlZFdvcmsudGFnKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGF0dGFjaFN1c3BlbnNlUmV0cnlMaXN0ZW5lcnMoZmluaXNoZWRXb3JrLCB3YWtlYWJsZXMpIHtcbiAgdmFyIHJldHJ5Q2FjaGUgPSBnZXRSZXRyeUNhY2hlKGZpbmlzaGVkV29yayk7XG4gIHdha2VhYmxlcy5mb3JFYWNoKGZ1bmN0aW9uICh3YWtlYWJsZSkge1xuICAgIHZhciByZXRyeSA9IHJlc29sdmVSZXRyeVdha2VhYmxlLmJpbmQobnVsbCwgZmluaXNoZWRXb3JrLCB3YWtlYWJsZSk7XG4gICAgcmV0cnlDYWNoZS5oYXMod2FrZWFibGUpIHx8XG4gICAgICAocmV0cnlDYWNoZS5hZGQod2FrZWFibGUpLCB3YWtlYWJsZS50aGVuKHJldHJ5LCByZXRyeSkpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VNdXRhdGlvbkVmZmVjdHMocm9vdCRqc2NvbXAkMCwgcGFyZW50RmliZXIpIHtcbiAgdmFyIGRlbGV0aW9ucyA9IHBhcmVudEZpYmVyLmRlbGV0aW9ucztcbiAgaWYgKG51bGwgIT09IGRlbGV0aW9ucylcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoaWxkVG9EZWxldGUgPSBkZWxldGlvbnNbaV0sXG4gICAgICAgIHJvb3QgPSByb290JGpzY29tcCQwLFxuICAgICAgICByZXR1cm5GaWJlciA9IHBhcmVudEZpYmVyLFxuICAgICAgICBwYXJlbnQgPSByZXR1cm5GaWJlcjtcbiAgICAgIGE6IGZvciAoOyBudWxsICE9PSBwYXJlbnQ7ICkge1xuICAgICAgICBzd2l0Y2ggKHBhcmVudC50YWcpIHtcbiAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIGhvc3RQYXJlbnQgPSBwYXJlbnQuc3RhdGVOb2RlO1xuICAgICAgICAgICAgaG9zdFBhcmVudElzQ29udGFpbmVyID0gITE7XG4gICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGhvc3RQYXJlbnQgPSBwYXJlbnQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm87XG4gICAgICAgICAgICBob3N0UGFyZW50SXNDb250YWluZXIgPSAhMDtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgY2FzZSA0OlxuICAgICAgICAgICAgaG9zdFBhcmVudCA9IHBhcmVudC5zdGF0ZU5vZGUuY29udGFpbmVySW5mbztcbiAgICAgICAgICAgIGhvc3RQYXJlbnRJc0NvbnRhaW5lciA9ICEwO1xuICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBwYXJlbnQgPSBwYXJlbnQucmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKG51bGwgPT09IGhvc3RQYXJlbnQpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTYwKSk7XG4gICAgICBjb21taXREZWxldGlvbkVmZmVjdHNPbkZpYmVyKHJvb3QsIHJldHVybkZpYmVyLCBjaGlsZFRvRGVsZXRlKTtcbiAgICAgIGhvc3RQYXJlbnQgPSBudWxsO1xuICAgICAgaG9zdFBhcmVudElzQ29udGFpbmVyID0gITE7XG4gICAgICByb290ID0gY2hpbGRUb0RlbGV0ZS5hbHRlcm5hdGU7XG4gICAgICBudWxsICE9PSByb290ICYmIChyb290LnJldHVybiA9IG51bGwpO1xuICAgICAgY2hpbGRUb0RlbGV0ZS5yZXR1cm4gPSBudWxsO1xuICAgIH1cbiAgaWYgKHBhcmVudEZpYmVyLnN1YnRyZWVGbGFncyAmIDEzODc4KVxuICAgIGZvciAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5jaGlsZDsgbnVsbCAhPT0gcGFyZW50RmliZXI7IClcbiAgICAgIGNvbW1pdE11dGF0aW9uRWZmZWN0c09uRmliZXIocGFyZW50RmliZXIsIHJvb3QkanNjb21wJDApLFxuICAgICAgICAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5zaWJsaW5nKTtcbn1cbnZhciBjdXJyZW50SG9pc3RhYmxlUm9vdCA9IG51bGw7XG5mdW5jdGlvbiBjb21taXRNdXRhdGlvbkVmZmVjdHNPbkZpYmVyKGZpbmlzaGVkV29yaywgcm9vdCkge1xuICB2YXIgY3VycmVudCA9IGZpbmlzaGVkV29yay5hbHRlcm5hdGUsXG4gICAgZmxhZ3MgPSBmaW5pc2hlZFdvcmsuZmxhZ3M7XG4gIHN3aXRjaCAoZmluaXNoZWRXb3JrLnRhZykge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDExOlxuICAgIGNhc2UgMTQ6XG4gICAgY2FzZSAxNTpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VNdXRhdGlvbkVmZmVjdHMocm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGNvbW1pdFJlY29uY2lsaWF0aW9uRWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA0ICYmXG4gICAgICAgIChjb21taXRIb29rRWZmZWN0TGlzdFVubW91bnQoMywgZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKSxcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RNb3VudCgzLCBmaW5pc2hlZFdvcmspLFxuICAgICAgICBjb21taXRIb29rRWZmZWN0TGlzdFVubW91bnQoNSwgZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE6XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlTXV0YXRpb25FZmZlY3RzKHJvb3QsIGZpbmlzaGVkV29yayk7XG4gICAgICBjb21taXRSZWNvbmNpbGlhdGlvbkVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgICAgIGZsYWdzICYgNTEyICYmXG4gICAgICAgIChvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuIHx8XG4gICAgICAgICAgbnVsbCA9PT0gY3VycmVudCB8fFxuICAgICAgICAgIHNhZmVseURldGFjaFJlZihjdXJyZW50LCBjdXJyZW50LnJldHVybikpO1xuICAgICAgZmxhZ3MgJiA2NCAmJlxuICAgICAgICBvZmZzY3JlZW5TdWJ0cmVlSXNIaWRkZW4gJiZcbiAgICAgICAgKChmaW5pc2hlZFdvcmsgPSBmaW5pc2hlZFdvcmsudXBkYXRlUXVldWUpLFxuICAgICAgICBudWxsICE9PSBmaW5pc2hlZFdvcmsgJiZcbiAgICAgICAgICAoKGZsYWdzID0gZmluaXNoZWRXb3JrLmNhbGxiYWNrcyksXG4gICAgICAgICAgbnVsbCAhPT0gZmxhZ3MgJiZcbiAgICAgICAgICAgICgoY3VycmVudCA9IGZpbmlzaGVkV29yay5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzKSxcbiAgICAgICAgICAgIChmaW5pc2hlZFdvcmsuc2hhcmVkLmhpZGRlbkNhbGxiYWNrcyA9XG4gICAgICAgICAgICAgIG51bGwgPT09IGN1cnJlbnQgPyBmbGFncyA6IGN1cnJlbnQuY29uY2F0KGZsYWdzKSkpKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDI2OlxuICAgICAgdmFyIGhvaXN0YWJsZVJvb3QgPSBjdXJyZW50SG9pc3RhYmxlUm9vdDtcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VNdXRhdGlvbkVmZmVjdHMocm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGNvbW1pdFJlY29uY2lsaWF0aW9uRWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgZmxhZ3MgJiA1MTIgJiZcbiAgICAgICAgKG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4gfHxcbiAgICAgICAgICBudWxsID09PSBjdXJyZW50IHx8XG4gICAgICAgICAgc2FmZWx5RGV0YWNoUmVmKGN1cnJlbnQsIGN1cnJlbnQucmV0dXJuKSk7XG4gICAgICBpZiAoZmxhZ3MgJiA0KSB7XG4gICAgICAgIHZhciBjdXJyZW50UmVzb3VyY2UgPSBudWxsICE9PSBjdXJyZW50ID8gY3VycmVudC5tZW1vaXplZFN0YXRlIDogbnVsbDtcbiAgICAgICAgZmxhZ3MgPSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZTtcbiAgICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnQpXG4gICAgICAgICAgaWYgKG51bGwgPT09IGZsYWdzKVxuICAgICAgICAgICAgaWYgKG51bGwgPT09IGZpbmlzaGVkV29yay5zdGF0ZU5vZGUpIHtcbiAgICAgICAgICAgICAgYToge1xuICAgICAgICAgICAgICAgIGZsYWdzID0gZmluaXNoZWRXb3JrLnR5cGU7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzO1xuICAgICAgICAgICAgICAgIGhvaXN0YWJsZVJvb3QgPSBob2lzdGFibGVSb290Lm93bmVyRG9jdW1lbnQgfHwgaG9pc3RhYmxlUm9vdDtcbiAgICAgICAgICAgICAgICBiOiBzd2l0Y2ggKGZsYWdzKSB7XG4gICAgICAgICAgICAgICAgICBjYXNlIFwidGl0bGVcIjpcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlID1cbiAgICAgICAgICAgICAgICAgICAgICBob2lzdGFibGVSb290LmdldEVsZW1lbnRzQnlUYWdOYW1lKFwidGl0bGVcIilbMF07XG4gICAgICAgICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAgICAgICAhY3VycmVudFJlc291cmNlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlW2ludGVybmFsSG9pc3RhYmxlTWFya2VyXSB8fFxuICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZVtpbnRlcm5hbEluc3RhbmNlS2V5XSB8fFxuICAgICAgICAgICAgICAgICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5uYW1lc3BhY2VVUkkgfHxcbiAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzb3VyY2UuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIilcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICAgIChjdXJyZW50UmVzb3VyY2UgPSBob2lzdGFibGVSb290LmNyZWF0ZUVsZW1lbnQoZmxhZ3MpKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvaXN0YWJsZVJvb3QuaGVhZC5pbnNlcnRCZWZvcmUoXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdC5xdWVyeVNlbGVjdG9yKFwiaGVhZCA+IHRpdGxlXCIpXG4gICAgICAgICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhjdXJyZW50UmVzb3VyY2UsIGZsYWdzLCBjdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlW2ludGVybmFsSW5zdGFuY2VLZXldID0gZmluaXNoZWRXb3JrO1xuICAgICAgICAgICAgICAgICAgICBtYXJrTm9kZUFzSG9pc3RhYmxlKGN1cnJlbnRSZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIGZsYWdzID0gY3VycmVudFJlc291cmNlO1xuICAgICAgICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICAgICAgICAgICAgdmFyIG1heWJlTm9kZXMgPSBnZXRIeWRyYXRhYmxlSG9pc3RhYmxlQ2FjaGUoXG4gICAgICAgICAgICAgICAgICAgICAgXCJsaW5rXCIsXG4gICAgICAgICAgICAgICAgICAgICAgXCJocmVmXCIsXG4gICAgICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdFxuICAgICAgICAgICAgICAgICAgICApLmdldChmbGFncyArIChjdXJyZW50LmhyZWYgfHwgXCJcIikpO1xuICAgICAgICAgICAgICAgICAgICBpZiAobWF5YmVOb2RlcylcbiAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG1heWJlTm9kZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoY3VycmVudFJlc291cmNlID0gbWF5YmVOb2Rlc1tpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5nZXRBdHRyaWJ1dGUoXCJocmVmXCIpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQuaHJlZiA/IG51bGwgOiBjdXJyZW50LmhyZWYpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlLmdldEF0dHJpYnV0ZShcInJlbFwiKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQucmVsID8gbnVsbCA6IGN1cnJlbnQucmVsKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5nZXRBdHRyaWJ1dGUoXCJ0aXRsZVwiKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQudGl0bGUgPyBudWxsIDogY3VycmVudC50aXRsZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzb3VyY2UuZ2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIikgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCA9PSBjdXJyZW50LmNyb3NzT3JpZ2luXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnQuY3Jvc3NPcmlnaW4pKVxuICAgICAgICAgICAgICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG1heWJlTm9kZXMuc3BsaWNlKGksIDEpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzb3VyY2UgPSBob2lzdGFibGVSb290LmNyZWF0ZUVsZW1lbnQoZmxhZ3MpO1xuICAgICAgICAgICAgICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhjdXJyZW50UmVzb3VyY2UsIGZsYWdzLCBjdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdC5oZWFkLmFwcGVuZENoaWxkKGN1cnJlbnRSZXNvdXJjZSk7XG4gICAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgICAgY2FzZSBcIm1ldGFcIjpcbiAgICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICAgIChtYXliZU5vZGVzID0gZ2V0SHlkcmF0YWJsZUhvaXN0YWJsZUNhY2hlKFxuICAgICAgICAgICAgICAgICAgICAgICAgXCJtZXRhXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBcImNvbnRlbnRcIixcbiAgICAgICAgICAgICAgICAgICAgICAgIGhvaXN0YWJsZVJvb3RcbiAgICAgICAgICAgICAgICAgICAgICApLmdldChmbGFncyArIChjdXJyZW50LmNvbnRlbnQgfHwgXCJcIikpKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG1heWJlTm9kZXMubGVuZ3RoOyBpKyspXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICgoY3VycmVudFJlc291cmNlID0gbWF5YmVOb2Rlc1tpXSksXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5nZXRBdHRyaWJ1dGUoXCJjb250ZW50XCIpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQuY29udGVudFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFwiXCIgKyBjdXJyZW50LmNvbnRlbnQpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlLmdldEF0dHJpYnV0ZShcIm5hbWVcIikgPT09XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobnVsbCA9PSBjdXJyZW50Lm5hbWUgPyBudWxsIDogY3VycmVudC5uYW1lKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5nZXRBdHRyaWJ1dGUoXCJwcm9wZXJ0eVwiKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQucHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogY3VycmVudC5wcm9wZXJ0eSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50UmVzb3VyY2UuZ2V0QXR0cmlidXRlKFwiaHR0cC1lcXVpdlwiKSA9PT1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChudWxsID09IGN1cnJlbnQuaHR0cEVxdWl2XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnQuaHR0cEVxdWl2KSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZS5nZXRBdHRyaWJ1dGUoXCJjaGFyc2V0XCIpID09PVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG51bGwgPT0gY3VycmVudC5jaGFyU2V0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbnVsbFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IGN1cnJlbnQuY2hhclNldCkpXG4gICAgICAgICAgICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgbWF5YmVOb2Rlcy5zcGxpY2UoaSwgMSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZSA9IGhvaXN0YWJsZVJvb3QuY3JlYXRlRWxlbWVudChmbGFncyk7XG4gICAgICAgICAgICAgICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGN1cnJlbnRSZXNvdXJjZSwgZmxhZ3MsIGN1cnJlbnQpO1xuICAgICAgICAgICAgICAgICAgICBob2lzdGFibGVSb290LmhlYWQuYXBwZW5kQ2hpbGQoY3VycmVudFJlc291cmNlKTtcbiAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ2OCwgZmxhZ3MpKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY3VycmVudFJlc291cmNlW2ludGVybmFsSW5zdGFuY2VLZXldID0gZmluaXNoZWRXb3JrO1xuICAgICAgICAgICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoY3VycmVudFJlc291cmNlKTtcbiAgICAgICAgICAgICAgICBmbGFncyA9IGN1cnJlbnRSZXNvdXJjZTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlID0gZmxhZ3M7XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgbW91bnRIb2lzdGFibGUoXG4gICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdCxcbiAgICAgICAgICAgICAgICBmaW5pc2hlZFdvcmsudHlwZSxcbiAgICAgICAgICAgICAgICBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgZWxzZVxuICAgICAgICAgICAgZmluaXNoZWRXb3JrLnN0YXRlTm9kZSA9IGFjcXVpcmVSZXNvdXJjZShcbiAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdCxcbiAgICAgICAgICAgICAgZmxhZ3MsXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzXG4gICAgICAgICAgICApO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgY3VycmVudFJlc291cmNlICE9PSBmbGFnc1xuICAgICAgICAgICAgPyAobnVsbCA9PT0gY3VycmVudFJlc291cmNlXG4gICAgICAgICAgICAgICAgPyBudWxsICE9PSBjdXJyZW50LnN0YXRlTm9kZSAmJlxuICAgICAgICAgICAgICAgICAgKChjdXJyZW50ID0gY3VycmVudC5zdGF0ZU5vZGUpLFxuICAgICAgICAgICAgICAgICAgY3VycmVudC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGN1cnJlbnQpKVxuICAgICAgICAgICAgICAgIDogY3VycmVudFJlc291cmNlLmNvdW50LS0sXG4gICAgICAgICAgICAgIG51bGwgPT09IGZsYWdzXG4gICAgICAgICAgICAgICAgPyBtb3VudEhvaXN0YWJsZShcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdCxcbiAgICAgICAgICAgICAgICAgICAgZmluaXNoZWRXb3JrLnR5cGUsXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkV29yay5zdGF0ZU5vZGVcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICA6IGFjcXVpcmVSZXNvdXJjZShcbiAgICAgICAgICAgICAgICAgICAgaG9pc3RhYmxlUm9vdCxcbiAgICAgICAgICAgICAgICAgICAgZmxhZ3MsXG4gICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzXG4gICAgICAgICAgICAgICAgICApKVxuICAgICAgICAgICAgOiBudWxsID09PSBmbGFncyAmJlxuICAgICAgICAgICAgICBudWxsICE9PSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlICYmXG4gICAgICAgICAgICAgIGNvbW1pdEhvc3RVcGRhdGUoXG4gICAgICAgICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzLFxuICAgICAgICAgICAgICAgIGN1cnJlbnQubWVtb2l6ZWRQcm9wc1xuICAgICAgICAgICAgICApO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyNzpcbiAgICAgIGlmIChmbGFncyAmIDQgJiYgbnVsbCA9PT0gZmluaXNoZWRXb3JrLmFsdGVybmF0ZSkge1xuICAgICAgICBob2lzdGFibGVSb290ID0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZTtcbiAgICAgICAgY3VycmVudFJlc291cmNlID0gZmluaXNoZWRXb3JrLm1lbW9pemVkUHJvcHM7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZm9yICh2YXIgbm9kZSA9IGhvaXN0YWJsZVJvb3QuZmlyc3RDaGlsZDsgbm9kZTsgKSB7XG4gICAgICAgICAgICB2YXIgbmV4dE5vZGUgPSBub2RlLm5leHRTaWJsaW5nLFxuICAgICAgICAgICAgICBub2RlTmFtZSA9IG5vZGUubm9kZU5hbWU7XG4gICAgICAgICAgICBub2RlW2ludGVybmFsSG9pc3RhYmxlTWFya2VyXSB8fFxuICAgICAgICAgICAgICBcIkhFQURcIiA9PT0gbm9kZU5hbWUgfHxcbiAgICAgICAgICAgICAgXCJCT0RZXCIgPT09IG5vZGVOYW1lIHx8XG4gICAgICAgICAgICAgIFwiU0NSSVBUXCIgPT09IG5vZGVOYW1lIHx8XG4gICAgICAgICAgICAgIFwiU1RZTEVcIiA9PT0gbm9kZU5hbWUgfHxcbiAgICAgICAgICAgICAgKFwiTElOS1wiID09PSBub2RlTmFtZSAmJlxuICAgICAgICAgICAgICAgIFwic3R5bGVzaGVldFwiID09PSBub2RlLnJlbC50b0xvd2VyQ2FzZSgpKSB8fFxuICAgICAgICAgICAgICBob2lzdGFibGVSb290LnJlbW92ZUNoaWxkKG5vZGUpO1xuICAgICAgICAgICAgbm9kZSA9IG5leHROb2RlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgdmFyIHR5cGUgPSBmaW5pc2hlZFdvcmsudHlwZSwgYXR0cmlidXRlcyA9IGhvaXN0YWJsZVJvb3QuYXR0cmlidXRlcztcbiAgICAgICAgICAgIGF0dHJpYnV0ZXMubGVuZ3RoO1xuXG4gICAgICAgICAgKVxuICAgICAgICAgICAgaG9pc3RhYmxlUm9vdC5yZW1vdmVBdHRyaWJ1dGVOb2RlKGF0dHJpYnV0ZXNbMF0pO1xuICAgICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGhvaXN0YWJsZVJvb3QsIHR5cGUsIGN1cnJlbnRSZXNvdXJjZSk7XG4gICAgICAgICAgaG9pc3RhYmxlUm9vdFtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IGZpbmlzaGVkV29yaztcbiAgICAgICAgICBob2lzdGFibGVSb290W2ludGVybmFsUHJvcHNLZXldID0gY3VycmVudFJlc291cmNlO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgY2FzZSA1OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBmbGFncyAmIDUxMiAmJlxuICAgICAgICAob2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiB8fFxuICAgICAgICAgIG51bGwgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgICBzYWZlbHlEZXRhY2hSZWYoY3VycmVudCwgY3VycmVudC5yZXR1cm4pKTtcbiAgICAgIGlmIChmaW5pc2hlZFdvcmsuZmxhZ3MgJiAzMikge1xuICAgICAgICBob2lzdGFibGVSb290ID0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBzZXRUZXh0Q29udGVudChob2lzdGFibGVSb290LCBcIlwiKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4sIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZmxhZ3MgJiA0ICYmXG4gICAgICAgIG51bGwgIT0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZSAmJlxuICAgICAgICAoKGhvaXN0YWJsZVJvb3QgPSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRQcm9wcyksXG4gICAgICAgIGNvbW1pdEhvc3RVcGRhdGUoXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGhvaXN0YWJsZVJvb3QsXG4gICAgICAgICAgbnVsbCAhPT0gY3VycmVudCA/IGN1cnJlbnQubWVtb2l6ZWRQcm9wcyA6IGhvaXN0YWJsZVJvb3RcbiAgICAgICAgKSk7XG4gICAgICBmbGFncyAmIDEwMjQgJiYgKG5lZWRzRm9ybVJlc2V0ID0gITApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSA2OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBpZiAoZmxhZ3MgJiA0KSB7XG4gICAgICAgIGlmIChudWxsID09PSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlKVxuICAgICAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTYyKSk7XG4gICAgICAgIGZsYWdzID0gZmluaXNoZWRXb3JrLm1lbW9pemVkUHJvcHM7XG4gICAgICAgIGN1cnJlbnQgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGN1cnJlbnQubm9kZVZhbHVlID0gZmxhZ3M7XG4gICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuLCBlcnJvcik7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMzpcbiAgICAgIHRhZ0NhY2hlcyA9IG51bGw7XG4gICAgICBob2lzdGFibGVSb290ID0gY3VycmVudEhvaXN0YWJsZVJvb3Q7XG4gICAgICBjdXJyZW50SG9pc3RhYmxlUm9vdCA9IGdldEhvaXN0YWJsZVJvb3Qocm9vdC5jb250YWluZXJJbmZvKTtcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VNdXRhdGlvbkVmZmVjdHMocm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgIGN1cnJlbnRIb2lzdGFibGVSb290ID0gaG9pc3RhYmxlUm9vdDtcbiAgICAgIGNvbW1pdFJlY29uY2lsaWF0aW9uRWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgaWYgKGZsYWdzICYgNCAmJiBudWxsICE9PSBjdXJyZW50ICYmIGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgcmV0cnlJZkJsb2NrZWRPbihyb290LmNvbnRhaW5lckluZm8pO1xuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICAgICAgICB9XG4gICAgICBuZWVkc0Zvcm1SZXNldCAmJlxuICAgICAgICAoKG5lZWRzRm9ybVJlc2V0ID0gITEpLCByZWN1cnNpdmVseVJlc2V0Rm9ybXMoZmluaXNoZWRXb3JrKSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICBmbGFncyA9IGN1cnJlbnRIb2lzdGFibGVSb290O1xuICAgICAgY3VycmVudEhvaXN0YWJsZVJvb3QgPSBnZXRIb2lzdGFibGVSb290KFxuICAgICAgICBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlLmNvbnRhaW5lckluZm9cbiAgICAgICk7XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlTXV0YXRpb25FZmZlY3RzKHJvb3QsIGZpbmlzaGVkV29yayk7XG4gICAgICBjb21taXRSZWNvbmNpbGlhdGlvbkVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgICAgIGN1cnJlbnRIb2lzdGFibGVSb290ID0gZmxhZ3M7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEyOlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBmaW5pc2hlZFdvcmsuY2hpbGQuZmxhZ3MgJiA4MTkyICYmXG4gICAgICAgIChudWxsICE9PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZSkgIT09XG4gICAgICAgICAgKG51bGwgIT09IGN1cnJlbnQgJiYgbnVsbCAhPT0gY3VycmVudC5tZW1vaXplZFN0YXRlKSAmJlxuICAgICAgICAoZ2xvYmFsTW9zdFJlY2VudEZhbGxiYWNrVGltZSA9IG5vdygpKTtcbiAgICAgIGZsYWdzICYgNCAmJlxuICAgICAgICAoKGZsYWdzID0gZmluaXNoZWRXb3JrLnVwZGF0ZVF1ZXVlKSxcbiAgICAgICAgbnVsbCAhPT0gZmxhZ3MgJiZcbiAgICAgICAgICAoKGZpbmlzaGVkV29yay51cGRhdGVRdWV1ZSA9IG51bGwpLFxuICAgICAgICAgIGF0dGFjaFN1c3BlbnNlUmV0cnlMaXN0ZW5lcnMoZmluaXNoZWRXb3JrLCBmbGFncykpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgICBmbGFncyAmIDUxMiAmJlxuICAgICAgICAob2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiB8fFxuICAgICAgICAgIG51bGwgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgICBzYWZlbHlEZXRhY2hSZWYoY3VycmVudCwgY3VycmVudC5yZXR1cm4pKTtcbiAgICAgIG5vZGUgPSBudWxsICE9PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZTtcbiAgICAgIG5leHROb2RlID0gbnVsbCAhPT0gY3VycmVudCAmJiBudWxsICE9PSBjdXJyZW50Lm1lbW9pemVkU3RhdGU7XG4gICAgICBub2RlTmFtZSA9IG9mZnNjcmVlblN1YnRyZWVJc0hpZGRlbjtcbiAgICAgIHR5cGUgPSBvZmZzY3JlZW5TdWJ0cmVlV2FzSGlkZGVuO1xuICAgICAgb2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuID0gbm9kZU5hbWUgfHwgbm9kZTtcbiAgICAgIG9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4gPSB0eXBlIHx8IG5leHROb2RlO1xuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiA9IHR5cGU7XG4gICAgICBvZmZzY3JlZW5TdWJ0cmVlSXNIaWRkZW4gPSBub2RlTmFtZTtcbiAgICAgIGNvbW1pdFJlY29uY2lsaWF0aW9uRWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgcm9vdCA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGU7XG4gICAgICByb290Ll9jdXJyZW50ID0gZmluaXNoZWRXb3JrO1xuICAgICAgcm9vdC5fdmlzaWJpbGl0eSAmPSAtMztcbiAgICAgIHJvb3QuX3Zpc2liaWxpdHkgfD0gcm9vdC5fcGVuZGluZ1Zpc2liaWxpdHkgJiAyO1xuICAgICAgaWYgKFxuICAgICAgICBmbGFncyAmIDgxOTIgJiZcbiAgICAgICAgKChyb290Ll92aXNpYmlsaXR5ID0gbm9kZVxuICAgICAgICAgID8gcm9vdC5fdmlzaWJpbGl0eSAmIC0yXG4gICAgICAgICAgOiByb290Ll92aXNpYmlsaXR5IHwgMSksXG4gICAgICAgIG5vZGUgJiZcbiAgICAgICAgICAoKHJvb3QgPSBvZmZzY3JlZW5TdWJ0cmVlSXNIaWRkZW4gfHwgb2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiksXG4gICAgICAgICAgbnVsbCA9PT0gY3VycmVudCB8fFxuICAgICAgICAgICAgbmV4dE5vZGUgfHxcbiAgICAgICAgICAgIHJvb3QgfHxcbiAgICAgICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNhcHBlYXJMYXlvdXRFZmZlY3RzKGZpbmlzaGVkV29yaykpLFxuICAgICAgICBudWxsID09PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRQcm9wcyB8fFxuICAgICAgICAgIFwibWFudWFsXCIgIT09IGZpbmlzaGVkV29yay5tZW1vaXplZFByb3BzLm1vZGUpXG4gICAgICApXG4gICAgICAgIGE6IGZvciAoY3VycmVudCA9IG51bGwsIHJvb3QgPSBmaW5pc2hlZFdvcms7IDsgKSB7XG4gICAgICAgICAgaWYgKDUgPT09IHJvb3QudGFnIHx8IDI2ID09PSByb290LnRhZyB8fCAyNyA9PT0gcm9vdC50YWcpIHtcbiAgICAgICAgICAgIGlmIChudWxsID09PSBjdXJyZW50KSB7XG4gICAgICAgICAgICAgIG5leHROb2RlID0gY3VycmVudCA9IHJvb3Q7XG4gICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgaWYgKCgoaG9pc3RhYmxlUm9vdCA9IG5leHROb2RlLnN0YXRlTm9kZSksIG5vZGUpKVxuICAgICAgICAgICAgICAgICAgKGN1cnJlbnRSZXNvdXJjZSA9IGhvaXN0YWJsZVJvb3Quc3R5bGUpLFxuICAgICAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBjdXJyZW50UmVzb3VyY2Uuc2V0UHJvcGVydHlcbiAgICAgICAgICAgICAgICAgICAgICA/IGN1cnJlbnRSZXNvdXJjZS5zZXRQcm9wZXJ0eShcbiAgICAgICAgICAgICAgICAgICAgICAgICAgXCJkaXNwbGF5XCIsXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFwibm9uZVwiLFxuICAgICAgICAgICAgICAgICAgICAgICAgICBcImltcG9ydGFudFwiXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgICAgOiAoY3VycmVudFJlc291cmNlLmRpc3BsYXkgPSBcIm5vbmVcIik7XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICBtYXliZU5vZGVzID0gbmV4dE5vZGUuc3RhdGVOb2RlO1xuICAgICAgICAgICAgICAgICAgaSA9IG5leHROb2RlLm1lbW9pemVkUHJvcHMuc3R5bGU7XG4gICAgICAgICAgICAgICAgICB2YXIgZGlzcGxheSA9XG4gICAgICAgICAgICAgICAgICAgIHZvaWQgMCAhPT0gaSAmJiBudWxsICE9PSBpICYmIGkuaGFzT3duUHJvcGVydHkoXCJkaXNwbGF5XCIpXG4gICAgICAgICAgICAgICAgICAgICAgPyBpLmRpc3BsYXlcbiAgICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgICBtYXliZU5vZGVzLnN0eWxlLmRpc3BsYXkgPVxuICAgICAgICAgICAgICAgICAgICBudWxsID09IGRpc3BsYXkgfHwgXCJib29sZWFuXCIgPT09IHR5cGVvZiBkaXNwbGF5XG4gICAgICAgICAgICAgICAgICAgICAgPyBcIlwiXG4gICAgICAgICAgICAgICAgICAgICAgOiAoXCJcIiArIGRpc3BsYXkpLnRyaW0oKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IobmV4dE5vZGUsIG5leHROb2RlLnJldHVybiwgZXJyb3IpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIGlmICg2ID09PSByb290LnRhZykge1xuICAgICAgICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgbmV4dE5vZGUgPSByb290O1xuICAgICAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgICAgIG5leHROb2RlLnN0YXRlTm9kZS5ub2RlVmFsdWUgPSBub2RlXG4gICAgICAgICAgICAgICAgICA/IFwiXCJcbiAgICAgICAgICAgICAgICAgIDogbmV4dE5vZGUubWVtb2l6ZWRQcm9wcztcbiAgICAgICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihuZXh0Tm9kZSwgbmV4dE5vZGUucmV0dXJuLCBlcnJvcik7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2UgaWYgKFxuICAgICAgICAgICAgKCgyMiAhPT0gcm9vdC50YWcgJiYgMjMgIT09IHJvb3QudGFnKSB8fFxuICAgICAgICAgICAgICBudWxsID09PSByb290Lm1lbW9pemVkU3RhdGUgfHxcbiAgICAgICAgICAgICAgcm9vdCA9PT0gZmluaXNoZWRXb3JrKSAmJlxuICAgICAgICAgICAgbnVsbCAhPT0gcm9vdC5jaGlsZFxuICAgICAgICAgICkge1xuICAgICAgICAgICAgcm9vdC5jaGlsZC5yZXR1cm4gPSByb290O1xuICAgICAgICAgICAgcm9vdCA9IHJvb3QuY2hpbGQ7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKHJvb3QgPT09IGZpbmlzaGVkV29yaykgYnJlYWsgYTtcbiAgICAgICAgICBmb3IgKDsgbnVsbCA9PT0gcm9vdC5zaWJsaW5nOyApIHtcbiAgICAgICAgICAgIGlmIChudWxsID09PSByb290LnJldHVybiB8fCByb290LnJldHVybiA9PT0gZmluaXNoZWRXb3JrKSBicmVhayBhO1xuICAgICAgICAgICAgY3VycmVudCA9PT0gcm9vdCAmJiAoY3VycmVudCA9IG51bGwpO1xuICAgICAgICAgICAgcm9vdCA9IHJvb3QucmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjdXJyZW50ID09PSByb290ICYmIChjdXJyZW50ID0gbnVsbCk7XG4gICAgICAgICAgcm9vdC5zaWJsaW5nLnJldHVybiA9IHJvb3QucmV0dXJuO1xuICAgICAgICAgIHJvb3QgPSByb290LnNpYmxpbmc7XG4gICAgICAgIH1cbiAgICAgIGZsYWdzICYgNCAmJlxuICAgICAgICAoKGZsYWdzID0gZmluaXNoZWRXb3JrLnVwZGF0ZVF1ZXVlKSxcbiAgICAgICAgbnVsbCAhPT0gZmxhZ3MgJiZcbiAgICAgICAgICAoKGN1cnJlbnQgPSBmbGFncy5yZXRyeVF1ZXVlKSxcbiAgICAgICAgICBudWxsICE9PSBjdXJyZW50ICYmXG4gICAgICAgICAgICAoKGZsYWdzLnJldHJ5UXVldWUgPSBudWxsKSxcbiAgICAgICAgICAgIGF0dGFjaFN1c3BlbnNlUmV0cnlMaXN0ZW5lcnMoZmluaXNoZWRXb3JrLCBjdXJyZW50KSkpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTk6XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlTXV0YXRpb25FZmZlY3RzKHJvb3QsIGZpbmlzaGVkV29yayk7XG4gICAgICBjb21taXRSZWNvbmNpbGlhdGlvbkVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgICAgIGZsYWdzICYgNCAmJlxuICAgICAgICAoKGZsYWdzID0gZmluaXNoZWRXb3JrLnVwZGF0ZVF1ZXVlKSxcbiAgICAgICAgbnVsbCAhPT0gZmxhZ3MgJiZcbiAgICAgICAgICAoKGZpbmlzaGVkV29yay51cGRhdGVRdWV1ZSA9IG51bGwpLFxuICAgICAgICAgIGF0dGFjaFN1c3BlbnNlUmV0cnlMaXN0ZW5lcnMoZmluaXNoZWRXb3JrLCBmbGFncykpKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjE6XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyhyb290LCBmaW5pc2hlZFdvcmspLFxuICAgICAgICBjb21taXRSZWNvbmNpbGlhdGlvbkVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgfVxufVxuZnVuY3Rpb24gY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzKGZpbmlzaGVkV29yaykge1xuICB2YXIgZmxhZ3MgPSBmaW5pc2hlZFdvcmsuZmxhZ3M7XG4gIGlmIChmbGFncyAmIDIpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKDI3ICE9PSBmaW5pc2hlZFdvcmsudGFnKSB7XG4gICAgICAgIGE6IHtcbiAgICAgICAgICBmb3IgKHZhciBwYXJlbnQgPSBmaW5pc2hlZFdvcmsucmV0dXJuOyBudWxsICE9PSBwYXJlbnQ7ICkge1xuICAgICAgICAgICAgaWYgKGlzSG9zdFBhcmVudChwYXJlbnQpKSB7XG4gICAgICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSBwYXJlbnQ7XG4gICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBwYXJlbnQgPSBwYXJlbnQucmV0dXJuO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2MCkpO1xuICAgICAgICB9XG4gICAgICAgIHN3aXRjaCAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LnRhZykge1xuICAgICAgICAgIGNhc2UgMjc6XG4gICAgICAgICAgICB2YXIgcGFyZW50JGpzY29tcCQwID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LnN0YXRlTm9kZSxcbiAgICAgICAgICAgICAgYmVmb3JlID0gZ2V0SG9zdFNpYmxpbmcoZmluaXNoZWRXb3JrKTtcbiAgICAgICAgICAgIGluc2VydE9yQXBwZW5kUGxhY2VtZW50Tm9kZShmaW5pc2hlZFdvcmssIGJlZm9yZSwgcGFyZW50JGpzY29tcCQwKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgIHZhciBwYXJlbnQkMTEzID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LnN0YXRlTm9kZTtcbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5mbGFncyAmIDMyICYmXG4gICAgICAgICAgICAgIChzZXRUZXh0Q29udGVudChwYXJlbnQkMTEzLCBcIlwiKSxcbiAgICAgICAgICAgICAgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5mbGFncyAmPSAtMzMpKTtcbiAgICAgICAgICAgIHZhciBiZWZvcmUkMTE0ID0gZ2V0SG9zdFNpYmxpbmcoZmluaXNoZWRXb3JrKTtcbiAgICAgICAgICAgIGluc2VydE9yQXBwZW5kUGxhY2VtZW50Tm9kZShmaW5pc2hlZFdvcmssIGJlZm9yZSQxMTQsIHBhcmVudCQxMTMpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHZhciBwYXJlbnQkMTE1ID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LnN0YXRlTm9kZS5jb250YWluZXJJbmZvLFxuICAgICAgICAgICAgICBiZWZvcmUkMTE2ID0gZ2V0SG9zdFNpYmxpbmcoZmluaXNoZWRXb3JrKTtcbiAgICAgICAgICAgIGluc2VydE9yQXBwZW5kUGxhY2VtZW50Tm9kZUludG9Db250YWluZXIoXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICAgICAgYmVmb3JlJDExNixcbiAgICAgICAgICAgICAgcGFyZW50JDExNVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2MSkpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybiwgZXJyb3IpO1xuICAgIH1cbiAgICBmaW5pc2hlZFdvcmsuZmxhZ3MgJj0gLTM7XG4gIH1cbiAgZmxhZ3MgJiA0MDk2ICYmIChmaW5pc2hlZFdvcmsuZmxhZ3MgJj0gLTQwOTcpO1xufVxuZnVuY3Rpb24gcmVjdXJzaXZlbHlSZXNldEZvcm1zKHBhcmVudEZpYmVyKSB7XG4gIGlmIChwYXJlbnRGaWJlci5zdWJ0cmVlRmxhZ3MgJiAxMDI0KVxuICAgIGZvciAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5jaGlsZDsgbnVsbCAhPT0gcGFyZW50RmliZXI7ICkge1xuICAgICAgdmFyIGZpYmVyID0gcGFyZW50RmliZXI7XG4gICAgICByZWN1cnNpdmVseVJlc2V0Rm9ybXMoZmliZXIpO1xuICAgICAgNSA9PT0gZmliZXIudGFnICYmIGZpYmVyLmZsYWdzICYgMTAyNCAmJiBmaWJlci5zdGF0ZU5vZGUucmVzZXQoKTtcbiAgICAgIHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuc2libGluZztcbiAgICB9XG59XG5mdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlTGF5b3V0RWZmZWN0cyhyb290LCBwYXJlbnRGaWJlcikge1xuICBpZiAocGFyZW50RmliZXIuc3VidHJlZUZsYWdzICYgODc3MilcbiAgICBmb3IgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuY2hpbGQ7IG51bGwgIT09IHBhcmVudEZpYmVyOyApXG4gICAgICBjb21taXRMYXlvdXRFZmZlY3RPbkZpYmVyKHJvb3QsIHBhcmVudEZpYmVyLmFsdGVybmF0ZSwgcGFyZW50RmliZXIpLFxuICAgICAgICAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5zaWJsaW5nKTtcbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNhcHBlYXJMYXlvdXRFZmZlY3RzKHBhcmVudEZpYmVyKSB7XG4gIGZvciAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5jaGlsZDsgbnVsbCAhPT0gcGFyZW50RmliZXI7ICkge1xuICAgIHZhciBmaW5pc2hlZFdvcmsgPSBwYXJlbnRGaWJlcjtcbiAgICBzd2l0Y2ggKGZpbmlzaGVkV29yay50YWcpIHtcbiAgICAgIGNhc2UgMDpcbiAgICAgIGNhc2UgMTE6XG4gICAgICBjYXNlIDE0OlxuICAgICAgY2FzZSAxNTpcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RVbm1vdW50KDQsIGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybik7XG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNhcHBlYXJMYXlvdXRFZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxOlxuICAgICAgICBzYWZlbHlEZXRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKTtcbiAgICAgICAgdmFyIGluc3RhbmNlID0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZTtcbiAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVubW91bnQgJiZcbiAgICAgICAgICBzYWZlbHlDYWxsQ29tcG9uZW50V2lsbFVubW91bnQoXG4gICAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgICBmaW5pc2hlZFdvcmsucmV0dXJuLFxuICAgICAgICAgICAgaW5zdGFuY2VcbiAgICAgICAgICApO1xuICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGlzYXBwZWFyTGF5b3V0RWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjY6XG4gICAgICBjYXNlIDI3OlxuICAgICAgY2FzZSA1OlxuICAgICAgICBzYWZlbHlEZXRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKTtcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURpc2FwcGVhckxheW91dEVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDIyOlxuICAgICAgICBzYWZlbHlEZXRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKTtcbiAgICAgICAgbnVsbCA9PT0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlRGlzYXBwZWFyTGF5b3V0RWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNhcHBlYXJMYXlvdXRFZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgfVxuICAgIHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuc2libGluZztcbiAgfVxufVxuZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgZmluaXNoZWRSb290JGpzY29tcCQwLFxuICBwYXJlbnRGaWJlcixcbiAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0c1xuKSB7XG4gIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHMgPVxuICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHMgJiYgMCAhPT0gKHBhcmVudEZpYmVyLnN1YnRyZWVGbGFncyAmIDg3NzIpO1xuICBmb3IgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuY2hpbGQ7IG51bGwgIT09IHBhcmVudEZpYmVyOyApIHtcbiAgICB2YXIgY3VycmVudCA9IHBhcmVudEZpYmVyLmFsdGVybmF0ZSxcbiAgICAgIGZpbmlzaGVkUm9vdCA9IGZpbmlzaGVkUm9vdCRqc2NvbXAkMCxcbiAgICAgIGZpbmlzaGVkV29yayA9IHBhcmVudEZpYmVyLFxuICAgICAgZmxhZ3MgPSBmaW5pc2hlZFdvcmsuZmxhZ3M7XG4gICAgc3dpdGNoIChmaW5pc2hlZFdvcmsudGFnKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDExOlxuICAgICAgY2FzZSAxNTpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgKTtcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RNb3VudCg0LCBmaW5pc2hlZFdvcmspO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMTpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgKTtcbiAgICAgICAgY3VycmVudCA9IGZpbmlzaGVkV29yaztcbiAgICAgICAgZmluaXNoZWRSb290ID0gY3VycmVudC5zdGF0ZU5vZGU7XG4gICAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBmaW5pc2hlZFJvb3QuY29tcG9uZW50RGlkTW91bnQpXG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGZpbmlzaGVkUm9vdC5jb21wb25lbnREaWRNb3VudCgpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihjdXJyZW50LCBjdXJyZW50LnJldHVybiwgZXJyb3IpO1xuICAgICAgICAgIH1cbiAgICAgICAgY3VycmVudCA9IGZpbmlzaGVkV29yaztcbiAgICAgICAgZmluaXNoZWRSb290ID0gY3VycmVudC51cGRhdGVRdWV1ZTtcbiAgICAgICAgaWYgKG51bGwgIT09IGZpbmlzaGVkUm9vdCkge1xuICAgICAgICAgIHZhciBpbnN0YW5jZSA9IGN1cnJlbnQuc3RhdGVOb2RlO1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICB2YXIgaGlkZGVuQ2FsbGJhY2tzID0gZmluaXNoZWRSb290LnNoYXJlZC5oaWRkZW5DYWxsYmFja3M7XG4gICAgICAgICAgICBpZiAobnVsbCAhPT0gaGlkZGVuQ2FsbGJhY2tzKVxuICAgICAgICAgICAgICBmb3IgKFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkUm9vdC5zaGFyZWQuaGlkZGVuQ2FsbGJhY2tzID0gbnVsbCwgZmluaXNoZWRSb290ID0gMDtcbiAgICAgICAgICAgICAgICBmaW5pc2hlZFJvb3QgPCBoaWRkZW5DYWxsYmFja3MubGVuZ3RoO1xuICAgICAgICAgICAgICAgIGZpbmlzaGVkUm9vdCsrXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICBjYWxsQ2FsbGJhY2soaGlkZGVuQ2FsbGJhY2tzW2ZpbmlzaGVkUm9vdF0sIGluc3RhbmNlKTtcbiAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgY2FwdHVyZUNvbW1pdFBoYXNlRXJyb3IoY3VycmVudCwgY3VycmVudC5yZXR1cm4sIGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0cyAmJlxuICAgICAgICAgIGZsYWdzICYgNjQgJiZcbiAgICAgICAgICBjb21taXRDbGFzc0NhbGxiYWNrcyhmaW5pc2hlZFdvcmspO1xuICAgICAgICBzYWZlbHlBdHRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDI2OlxuICAgICAgY2FzZSAyNzpcbiAgICAgIGNhc2UgNTpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgKTtcbiAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0cyAmJlxuICAgICAgICAgIG51bGwgPT09IGN1cnJlbnQgJiZcbiAgICAgICAgICBmbGFncyAmIDQgJiZcbiAgICAgICAgICBjb21taXRIb3N0TW91bnQoZmluaXNoZWRXb3JrKTtcbiAgICAgICAgc2FmZWx5QXR0YWNoUmVmKGZpbmlzaGVkV29yaywgZmluaXNoZWRXb3JrLnJldHVybik7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAxMjpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDEzOlxuICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlUmVhcHBlYXJMYXlvdXRFZmZlY3RzKFxuICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0c1xuICAgICAgICApO1xuICAgICAgICBpbmNsdWRlV29ya0luUHJvZ3Jlc3NFZmZlY3RzICYmXG4gICAgICAgICAgZmxhZ3MgJiA0ICYmXG4gICAgICAgICAgY29tbWl0U3VzcGVuc2VIeWRyYXRpb25DYWxsYmFja3MoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjI6XG4gICAgICAgIG51bGwgPT09IGZpbmlzaGVkV29yay5tZW1vaXplZFN0YXRlICYmXG4gICAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlYXBwZWFyTGF5b3V0RWZmZWN0cyhcbiAgICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgICApO1xuICAgICAgICBzYWZlbHlBdHRhY2hSZWYoZmluaXNoZWRXb3JrLCBmaW5pc2hlZFdvcmsucmV0dXJuKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlUmVhcHBlYXJMYXlvdXRFZmZlY3RzKFxuICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0c1xuICAgICAgICApO1xuICAgIH1cbiAgICBwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLnNpYmxpbmc7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbW1pdE9mZnNjcmVlblBhc3NpdmVNb3VudEVmZmVjdHMoY3VycmVudCwgZmluaXNoZWRXb3JrKSB7XG4gIHZhciBwcmV2aW91c0NhY2hlID0gbnVsbDtcbiAgbnVsbCAhPT0gY3VycmVudCAmJlxuICAgIG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSAmJlxuICAgIG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wgJiZcbiAgICAocHJldmlvdXNDYWNoZSA9IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wucG9vbCk7XG4gIGN1cnJlbnQgPSBudWxsO1xuICBudWxsICE9PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZSAmJlxuICAgIG51bGwgIT09IGZpbmlzaGVkV29yay5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCAmJlxuICAgIChjdXJyZW50ID0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpO1xuICBjdXJyZW50ICE9PSBwcmV2aW91c0NhY2hlICYmXG4gICAgKG51bGwgIT0gY3VycmVudCAmJiBjdXJyZW50LnJlZkNvdW50KyssXG4gICAgbnVsbCAhPSBwcmV2aW91c0NhY2hlICYmIHJlbGVhc2VDYWNoZShwcmV2aW91c0NhY2hlKSk7XG59XG5mdW5jdGlvbiBjb21taXRDYWNoZVBhc3NpdmVNb3VudEVmZmVjdChjdXJyZW50LCBmaW5pc2hlZFdvcmspIHtcbiAgY3VycmVudCA9IG51bGw7XG4gIG51bGwgIT09IGZpbmlzaGVkV29yay5hbHRlcm5hdGUgJiZcbiAgICAoY3VycmVudCA9IGZpbmlzaGVkV29yay5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZSk7XG4gIGZpbmlzaGVkV29yayA9IGZpbmlzaGVkV29yay5tZW1vaXplZFN0YXRlLmNhY2hlO1xuICBmaW5pc2hlZFdvcmsgIT09IGN1cnJlbnQgJiZcbiAgICAoZmluaXNoZWRXb3JrLnJlZkNvdW50KyssIG51bGwgIT0gY3VycmVudCAmJiByZWxlYXNlQ2FjaGUoY3VycmVudCkpO1xufVxuZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVNb3VudEVmZmVjdHMoXG4gIHJvb3QsXG4gIHBhcmVudEZpYmVyLFxuICBjb21taXR0ZWRMYW5lcyxcbiAgY29tbWl0dGVkVHJhbnNpdGlvbnNcbikge1xuICBpZiAocGFyZW50RmliZXIuc3VidHJlZUZsYWdzICYgMTAyNTYpXG4gICAgZm9yIChwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLmNoaWxkOyBudWxsICE9PSBwYXJlbnRGaWJlcjsgKVxuICAgICAgY29tbWl0UGFzc2l2ZU1vdW50T25GaWJlcihcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcGFyZW50RmliZXIsXG4gICAgICAgIGNvbW1pdHRlZExhbmVzLFxuICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9uc1xuICAgICAgKSxcbiAgICAgICAgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuc2libGluZyk7XG59XG5mdW5jdGlvbiBjb21taXRQYXNzaXZlTW91bnRPbkZpYmVyKFxuICBmaW5pc2hlZFJvb3QsXG4gIGZpbmlzaGVkV29yayxcbiAgY29tbWl0dGVkTGFuZXMsXG4gIGNvbW1pdHRlZFRyYW5zaXRpb25zXG4pIHtcbiAgdmFyIGZsYWdzID0gZmluaXNoZWRXb3JrLmZsYWdzO1xuICBzd2l0Y2ggKGZpbmlzaGVkV29yay50YWcpIHtcbiAgICBjYXNlIDA6XG4gICAgY2FzZSAxMTpcbiAgICBjYXNlIDE1OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVNb3VudEVmZmVjdHMoXG4gICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnNcbiAgICAgICk7XG4gICAgICBmbGFncyAmIDIwNDggJiYgY29tbWl0SG9va0VmZmVjdExpc3RNb3VudCg5LCBmaW5pc2hlZFdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVNb3VudEVmZmVjdHMoXG4gICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnNcbiAgICAgICk7XG4gICAgICBmbGFncyAmIDIwNDggJiZcbiAgICAgICAgKChmaW5pc2hlZFJvb3QgPSBudWxsKSxcbiAgICAgICAgbnVsbCAhPT0gZmluaXNoZWRXb3JrLmFsdGVybmF0ZSAmJlxuICAgICAgICAgIChmaW5pc2hlZFJvb3QgPSBmaW5pc2hlZFdvcmsuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUuY2FjaGUpLFxuICAgICAgICAoZmluaXNoZWRXb3JrID0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGUuY2FjaGUpLFxuICAgICAgICBmaW5pc2hlZFdvcmsgIT09IGZpbmlzaGVkUm9vdCAmJlxuICAgICAgICAgIChmaW5pc2hlZFdvcmsucmVmQ291bnQrKyxcbiAgICAgICAgICBudWxsICE9IGZpbmlzaGVkUm9vdCAmJiByZWxlYXNlQ2FjaGUoZmluaXNoZWRSb290KSkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIGlmIChmbGFncyAmIDIwNDgpIHtcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVNb3VudEVmZmVjdHMoXG4gICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9uc1xuICAgICAgICApO1xuICAgICAgICBmaW5pc2hlZFJvb3QgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlO1xuICAgICAgICB0cnkge1xuICAgICAgICAgIHZhciBfZmluaXNoZWRXb3JrJG1lbW9pemUyID0gZmluaXNoZWRXb3JrLm1lbW9pemVkUHJvcHMsXG4gICAgICAgICAgICBpZCA9IF9maW5pc2hlZFdvcmskbWVtb2l6ZTIuaWQsXG4gICAgICAgICAgICBvblBvc3RDb21taXQgPSBfZmluaXNoZWRXb3JrJG1lbW9pemUyLm9uUG9zdENvbW1pdDtcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBvblBvc3RDb21taXQgJiZcbiAgICAgICAgICAgIG9uUG9zdENvbW1pdChcbiAgICAgICAgICAgICAgaWQsXG4gICAgICAgICAgICAgIG51bGwgPT09IGZpbmlzaGVkV29yay5hbHRlcm5hdGUgPyBcIm1vdW50XCIgOiBcInVwZGF0ZVwiLFxuICAgICAgICAgICAgICBmaW5pc2hlZFJvb3QucGFzc2l2ZUVmZmVjdER1cmF0aW9uLFxuICAgICAgICAgICAgICAtMFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvcihmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4sIGVycm9yKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlXG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VQYXNzaXZlTW91bnRFZmZlY3RzKFxuICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgY29tbWl0dGVkTGFuZXMsXG4gICAgICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnNcbiAgICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjM6XG4gICAgICBicmVhaztcbiAgICBjYXNlIDIyOlxuICAgICAgX2ZpbmlzaGVkV29yayRtZW1vaXplMiA9IGZpbmlzaGVkV29yay5zdGF0ZU5vZGU7XG4gICAgICBudWxsICE9PSBmaW5pc2hlZFdvcmsubWVtb2l6ZWRTdGF0ZVxuICAgICAgICA/IF9maW5pc2hlZFdvcmskbWVtb2l6ZTIuX3Zpc2liaWxpdHkgJiA0XG4gICAgICAgICAgPyByZWN1cnNpdmVseVRyYXZlcnNlUGFzc2l2ZU1vdW50RWZmZWN0cyhcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgICAgIGNvbW1pdHRlZExhbmVzLFxuICAgICAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9uc1xuICAgICAgICAgICAgKVxuICAgICAgICAgIDogcmVjdXJzaXZlbHlUcmF2ZXJzZUF0b21pY1Bhc3NpdmVFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKVxuICAgICAgICA6IF9maW5pc2hlZFdvcmskbWVtb2l6ZTIuX3Zpc2liaWxpdHkgJiA0XG4gICAgICAgICAgPyByZWN1cnNpdmVseVRyYXZlcnNlUGFzc2l2ZU1vdW50RWZmZWN0cyhcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgICAgIGNvbW1pdHRlZExhbmVzLFxuICAgICAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9uc1xuICAgICAgICAgICAgKVxuICAgICAgICAgIDogKChfZmluaXNoZWRXb3JrJG1lbW9pemUyLl92aXNpYmlsaXR5IHw9IDQpLFxuICAgICAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlY29ubmVjdFBhc3NpdmVFZmZlY3RzKFxuICAgICAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICAgICAgY29tbWl0dGVkTGFuZXMsXG4gICAgICAgICAgICAgIGNvbW1pdHRlZFRyYW5zaXRpb25zLFxuICAgICAgICAgICAgICAwICE9PSAoZmluaXNoZWRXb3JrLnN1YnRyZWVGbGFncyAmIDEwMjU2KVxuICAgICAgICAgICAgKSk7XG4gICAgICBmbGFncyAmIDIwNDggJiZcbiAgICAgICAgY29tbWl0T2Zmc2NyZWVuUGFzc2l2ZU1vdW50RWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFdvcmsuYWx0ZXJuYXRlLFxuICAgICAgICAgIGZpbmlzaGVkV29ya1xuICAgICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyNDpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VQYXNzaXZlTW91bnRFZmZlY3RzKFxuICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgY29tbWl0dGVkTGFuZXMsXG4gICAgICAgIGNvbW1pdHRlZFRyYW5zaXRpb25zXG4gICAgICApO1xuICAgICAgZmxhZ3MgJiAyMDQ4ICYmXG4gICAgICAgIGNvbW1pdENhY2hlUGFzc2l2ZU1vdW50RWZmZWN0KGZpbmlzaGVkV29yay5hbHRlcm5hdGUsIGZpbmlzaGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVNb3VudEVmZmVjdHMoXG4gICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnNcbiAgICAgICk7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VSZWNvbm5lY3RQYXNzaXZlRWZmZWN0cyhcbiAgZmluaXNoZWRSb290JGpzY29tcCQwLFxuICBwYXJlbnRGaWJlcixcbiAgY29tbWl0dGVkTGFuZXMkanNjb21wJDAsXG4gIGNvbW1pdHRlZFRyYW5zaXRpb25zJGpzY29tcCQwLFxuICBpbmNsdWRlV29ya0luUHJvZ3Jlc3NFZmZlY3RzXG4pIHtcbiAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0cyA9XG4gICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0cyAmJiAwICE9PSAocGFyZW50RmliZXIuc3VidHJlZUZsYWdzICYgMTAyNTYpO1xuICBmb3IgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuY2hpbGQ7IG51bGwgIT09IHBhcmVudEZpYmVyOyApIHtcbiAgICB2YXIgZmluaXNoZWRSb290ID0gZmluaXNoZWRSb290JGpzY29tcCQwLFxuICAgICAgZmluaXNoZWRXb3JrID0gcGFyZW50RmliZXIsXG4gICAgICBjb21taXR0ZWRMYW5lcyA9IGNvbW1pdHRlZExhbmVzJGpzY29tcCQwLFxuICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnMgPSBjb21taXR0ZWRUcmFuc2l0aW9ucyRqc2NvbXAkMCxcbiAgICAgIGZsYWdzID0gZmluaXNoZWRXb3JrLmZsYWdzO1xuICAgIHN3aXRjaCAoZmluaXNoZWRXb3JrLnRhZykge1xuICAgICAgY2FzZSAwOlxuICAgICAgY2FzZSAxMTpcbiAgICAgIGNhc2UgMTU6XG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VSZWNvbm5lY3RQYXNzaXZlRWZmZWN0cyhcbiAgICAgICAgICBmaW5pc2hlZFJvb3QsXG4gICAgICAgICAgZmluaXNoZWRXb3JrLFxuICAgICAgICAgIGNvbW1pdHRlZExhbmVzLFxuICAgICAgICAgIGNvbW1pdHRlZFRyYW5zaXRpb25zLFxuICAgICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHNcbiAgICAgICAgKTtcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RNb3VudCg4LCBmaW5pc2hlZFdvcmspO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjM6XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyMjpcbiAgICAgICAgdmFyIGluc3RhbmNlID0gZmluaXNoZWRXb3JrLnN0YXRlTm9kZTtcbiAgICAgICAgbnVsbCAhPT0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGVcbiAgICAgICAgICA/IGluc3RhbmNlLl92aXNpYmlsaXR5ICYgNFxuICAgICAgICAgICAgPyByZWN1cnNpdmVseVRyYXZlcnNlUmVjb25uZWN0UGFzc2l2ZUVmZmVjdHMoXG4gICAgICAgICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9ucyxcbiAgICAgICAgICAgICAgICBpbmNsdWRlV29ya0luUHJvZ3Jlc3NFZmZlY3RzXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgIDogcmVjdXJzaXZlbHlUcmF2ZXJzZUF0b21pY1Bhc3NpdmVFZmZlY3RzKFxuICAgICAgICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICAgICAgICBmaW5pc2hlZFdvcmtcbiAgICAgICAgICAgICAgKVxuICAgICAgICAgIDogKChpbnN0YW5jZS5fdmlzaWJpbGl0eSB8PSA0KSxcbiAgICAgICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VSZWNvbm5lY3RQYXNzaXZlRWZmZWN0cyhcbiAgICAgICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgICAgIGNvbW1pdHRlZExhbmVzLFxuICAgICAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9ucyxcbiAgICAgICAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0c1xuICAgICAgICAgICAgKSk7XG4gICAgICAgIGluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHMgJiZcbiAgICAgICAgICBmbGFncyAmIDIwNDggJiZcbiAgICAgICAgICBjb21taXRPZmZzY3JlZW5QYXNzaXZlTW91bnRFZmZlY3RzKFxuICAgICAgICAgICAgZmluaXNoZWRXb3JrLmFsdGVybmF0ZSxcbiAgICAgICAgICAgIGZpbmlzaGVkV29ya1xuICAgICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNDpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVJlY29ubmVjdFBhc3NpdmVFZmZlY3RzKFxuICAgICAgICAgIGZpbmlzaGVkUm9vdCxcbiAgICAgICAgICBmaW5pc2hlZFdvcmssXG4gICAgICAgICAgY29tbWl0dGVkTGFuZXMsXG4gICAgICAgICAgY29tbWl0dGVkVHJhbnNpdGlvbnMsXG4gICAgICAgICAgaW5jbHVkZVdvcmtJblByb2dyZXNzRWZmZWN0c1xuICAgICAgICApO1xuICAgICAgICBpbmNsdWRlV29ya0luUHJvZ3Jlc3NFZmZlY3RzICYmXG4gICAgICAgICAgZmxhZ3MgJiAyMDQ4ICYmXG4gICAgICAgICAgY29tbWl0Q2FjaGVQYXNzaXZlTW91bnRFZmZlY3QoZmluaXNoZWRXb3JrLmFsdGVybmF0ZSwgZmluaXNoZWRXb3JrKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBkZWZhdWx0OlxuICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlUmVjb25uZWN0UGFzc2l2ZUVmZmVjdHMoXG4gICAgICAgICAgZmluaXNoZWRSb290LFxuICAgICAgICAgIGZpbmlzaGVkV29yayxcbiAgICAgICAgICBjb21taXR0ZWRMYW5lcyxcbiAgICAgICAgICBjb21taXR0ZWRUcmFuc2l0aW9ucyxcbiAgICAgICAgICBpbmNsdWRlV29ya0luUHJvZ3Jlc3NFZmZlY3RzXG4gICAgICAgICk7XG4gICAgfVxuICAgIHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuc2libGluZztcbiAgfVxufVxuZnVuY3Rpb24gcmVjdXJzaXZlbHlUcmF2ZXJzZUF0b21pY1Bhc3NpdmVFZmZlY3RzKFxuICBmaW5pc2hlZFJvb3QkanNjb21wJDAsXG4gIHBhcmVudEZpYmVyXG4pIHtcbiAgaWYgKHBhcmVudEZpYmVyLnN1YnRyZWVGbGFncyAmIDEwMjU2KVxuICAgIGZvciAocGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5jaGlsZDsgbnVsbCAhPT0gcGFyZW50RmliZXI7ICkge1xuICAgICAgdmFyIGZpbmlzaGVkUm9vdCA9IGZpbmlzaGVkUm9vdCRqc2NvbXAkMCxcbiAgICAgICAgZmluaXNoZWRXb3JrID0gcGFyZW50RmliZXIsXG4gICAgICAgIGZsYWdzID0gZmluaXNoZWRXb3JrLmZsYWdzO1xuICAgICAgc3dpdGNoIChmaW5pc2hlZFdvcmsudGFnKSB7XG4gICAgICAgIGNhc2UgMjI6XG4gICAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZUF0b21pY1Bhc3NpdmVFZmZlY3RzKGZpbmlzaGVkUm9vdCwgZmluaXNoZWRXb3JrKTtcbiAgICAgICAgICBmbGFncyAmIDIwNDggJiZcbiAgICAgICAgICAgIGNvbW1pdE9mZnNjcmVlblBhc3NpdmVNb3VudEVmZmVjdHMoXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29yay5hbHRlcm5hdGUsXG4gICAgICAgICAgICAgIGZpbmlzaGVkV29ya1xuICAgICAgICAgICAgKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAyNDpcbiAgICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlQXRvbWljUGFzc2l2ZUVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgICAgIGZsYWdzICYgMjA0OCAmJlxuICAgICAgICAgICAgY29tbWl0Q2FjaGVQYXNzaXZlTW91bnRFZmZlY3QoZmluaXNoZWRXb3JrLmFsdGVybmF0ZSwgZmluaXNoZWRXb3JrKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZWN1cnNpdmVseVRyYXZlcnNlQXRvbWljUGFzc2l2ZUVmZmVjdHMoZmluaXNoZWRSb290LCBmaW5pc2hlZFdvcmspO1xuICAgICAgfVxuICAgICAgcGFyZW50RmliZXIgPSBwYXJlbnRGaWJlci5zaWJsaW5nO1xuICAgIH1cbn1cbnZhciBzdXNwZW5zZXlDb21taXRGbGFnID0gODE5MjtcbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5QWNjdW11bGF0ZVN1c3BlbnNleUNvbW1pdChwYXJlbnRGaWJlcikge1xuICBpZiAocGFyZW50RmliZXIuc3VidHJlZUZsYWdzICYgc3VzcGVuc2V5Q29tbWl0RmxhZylcbiAgICBmb3IgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuY2hpbGQ7IG51bGwgIT09IHBhcmVudEZpYmVyOyApXG4gICAgICBhY2N1bXVsYXRlU3VzcGVuc2V5Q29tbWl0T25GaWJlcihwYXJlbnRGaWJlciksXG4gICAgICAgIChwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLnNpYmxpbmcpO1xufVxuZnVuY3Rpb24gYWNjdW11bGF0ZVN1c3BlbnNleUNvbW1pdE9uRmliZXIoZmliZXIpIHtcbiAgc3dpdGNoIChmaWJlci50YWcpIHtcbiAgICBjYXNlIDI2OlxuICAgICAgcmVjdXJzaXZlbHlBY2N1bXVsYXRlU3VzcGVuc2V5Q29tbWl0KGZpYmVyKTtcbiAgICAgIGZpYmVyLmZsYWdzICYgc3VzcGVuc2V5Q29tbWl0RmxhZyAmJlxuICAgICAgICBudWxsICE9PSBmaWJlci5tZW1vaXplZFN0YXRlICYmXG4gICAgICAgIHN1c3BlbmRSZXNvdXJjZShcbiAgICAgICAgICBjdXJyZW50SG9pc3RhYmxlUm9vdCxcbiAgICAgICAgICBmaWJlci5tZW1vaXplZFN0YXRlLFxuICAgICAgICAgIGZpYmVyLm1lbW9pemVkUHJvcHNcbiAgICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgNTpcbiAgICAgIHJlY3Vyc2l2ZWx5QWNjdW11bGF0ZVN1c3BlbnNleUNvbW1pdChmaWJlcik7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDM6XG4gICAgY2FzZSA0OlxuICAgICAgdmFyIHByZXZpb3VzSG9pc3RhYmxlUm9vdCA9IGN1cnJlbnRIb2lzdGFibGVSb290O1xuICAgICAgY3VycmVudEhvaXN0YWJsZVJvb3QgPSBnZXRIb2lzdGFibGVSb290KGZpYmVyLnN0YXRlTm9kZS5jb250YWluZXJJbmZvKTtcbiAgICAgIHJlY3Vyc2l2ZWx5QWNjdW11bGF0ZVN1c3BlbnNleUNvbW1pdChmaWJlcik7XG4gICAgICBjdXJyZW50SG9pc3RhYmxlUm9vdCA9IHByZXZpb3VzSG9pc3RhYmxlUm9vdDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgICBudWxsID09PSBmaWJlci5tZW1vaXplZFN0YXRlICYmXG4gICAgICAgICgocHJldmlvdXNIb2lzdGFibGVSb290ID0gZmliZXIuYWx0ZXJuYXRlKSxcbiAgICAgICAgbnVsbCAhPT0gcHJldmlvdXNIb2lzdGFibGVSb290ICYmXG4gICAgICAgIG51bGwgIT09IHByZXZpb3VzSG9pc3RhYmxlUm9vdC5tZW1vaXplZFN0YXRlXG4gICAgICAgICAgPyAoKHByZXZpb3VzSG9pc3RhYmxlUm9vdCA9IHN1c3BlbnNleUNvbW1pdEZsYWcpLFxuICAgICAgICAgICAgKHN1c3BlbnNleUNvbW1pdEZsYWcgPSAxNjc3NzIxNiksXG4gICAgICAgICAgICByZWN1cnNpdmVseUFjY3VtdWxhdGVTdXNwZW5zZXlDb21taXQoZmliZXIpLFxuICAgICAgICAgICAgKHN1c3BlbnNleUNvbW1pdEZsYWcgPSBwcmV2aW91c0hvaXN0YWJsZVJvb3QpKVxuICAgICAgICAgIDogcmVjdXJzaXZlbHlBY2N1bXVsYXRlU3VzcGVuc2V5Q29tbWl0KGZpYmVyKSk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlBY2N1bXVsYXRlU3VzcGVuc2V5Q29tbWl0KGZpYmVyKTtcbiAgfVxufVxuZnVuY3Rpb24gZGV0YWNoQWx0ZXJuYXRlU2libGluZ3MocGFyZW50RmliZXIpIHtcbiAgdmFyIHByZXZpb3VzRmliZXIgPSBwYXJlbnRGaWJlci5hbHRlcm5hdGU7XG4gIGlmIChcbiAgICBudWxsICE9PSBwcmV2aW91c0ZpYmVyICYmXG4gICAgKChwYXJlbnRGaWJlciA9IHByZXZpb3VzRmliZXIuY2hpbGQpLCBudWxsICE9PSBwYXJlbnRGaWJlcilcbiAgKSB7XG4gICAgcHJldmlvdXNGaWJlci5jaGlsZCA9IG51bGw7XG4gICAgZG9cbiAgICAgIChwcmV2aW91c0ZpYmVyID0gcGFyZW50RmliZXIuc2libGluZyksXG4gICAgICAgIChwYXJlbnRGaWJlci5zaWJsaW5nID0gbnVsbCksXG4gICAgICAgIChwYXJlbnRGaWJlciA9IHByZXZpb3VzRmliZXIpO1xuICAgIHdoaWxlIChudWxsICE9PSBwYXJlbnRGaWJlcik7XG4gIH1cbn1cbmZ1bmN0aW9uIHJlY3Vyc2l2ZWx5VHJhdmVyc2VQYXNzaXZlVW5tb3VudEVmZmVjdHMocGFyZW50RmliZXIpIHtcbiAgdmFyIGRlbGV0aW9ucyA9IHBhcmVudEZpYmVyLmRlbGV0aW9ucztcbiAgaWYgKDAgIT09IChwYXJlbnRGaWJlci5mbGFncyAmIDE2KSkge1xuICAgIGlmIChudWxsICE9PSBkZWxldGlvbnMpXG4gICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGRlbGV0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIgY2hpbGRUb0RlbGV0ZSA9IGRlbGV0aW9uc1tpXTtcbiAgICAgICAgbmV4dEVmZmVjdCA9IGNoaWxkVG9EZWxldGU7XG4gICAgICAgIGNvbW1pdFBhc3NpdmVVbm1vdW50RWZmZWN0c0luc2lkZU9mRGVsZXRlZFRyZWVfYmVnaW4oXG4gICAgICAgICAgY2hpbGRUb0RlbGV0ZSxcbiAgICAgICAgICBwYXJlbnRGaWJlclxuICAgICAgICApO1xuICAgICAgfVxuICAgIGRldGFjaEFsdGVybmF0ZVNpYmxpbmdzKHBhcmVudEZpYmVyKTtcbiAgfVxuICBpZiAocGFyZW50RmliZXIuc3VidHJlZUZsYWdzICYgMTAyNTYpXG4gICAgZm9yIChwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLmNoaWxkOyBudWxsICE9PSBwYXJlbnRGaWJlcjsgKVxuICAgICAgY29tbWl0UGFzc2l2ZVVubW91bnRPbkZpYmVyKHBhcmVudEZpYmVyKSxcbiAgICAgICAgKHBhcmVudEZpYmVyID0gcGFyZW50RmliZXIuc2libGluZyk7XG59XG5mdW5jdGlvbiBjb21taXRQYXNzaXZlVW5tb3VudE9uRmliZXIoZmluaXNoZWRXb3JrKSB7XG4gIHN3aXRjaCAoZmluaXNoZWRXb3JrLnRhZykge1xuICAgIGNhc2UgMDpcbiAgICBjYXNlIDExOlxuICAgIGNhc2UgMTU6XG4gICAgICByZWN1cnNpdmVseVRyYXZlcnNlUGFzc2l2ZVVubW91bnRFZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBmaW5pc2hlZFdvcmsuZmxhZ3MgJiAyMDQ4ICYmXG4gICAgICAgIGNvbW1pdEhvb2tFZmZlY3RMaXN0VW5tb3VudCg5LCBmaW5pc2hlZFdvcmssIGZpbmlzaGVkV29yay5yZXR1cm4pO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAzOlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVVbm1vdW50RWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMjpcbiAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VQYXNzaXZlVW5tb3VudEVmZmVjdHMoZmluaXNoZWRXb3JrKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgICB2YXIgaW5zdGFuY2UgPSBmaW5pc2hlZFdvcmsuc3RhdGVOb2RlO1xuICAgICAgbnVsbCAhPT0gZmluaXNoZWRXb3JrLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgIGluc3RhbmNlLl92aXNpYmlsaXR5ICYgNCAmJlxuICAgICAgKG51bGwgPT09IGZpbmlzaGVkV29yay5yZXR1cm4gfHwgMTMgIT09IGZpbmlzaGVkV29yay5yZXR1cm4udGFnKVxuICAgICAgICA/ICgoaW5zdGFuY2UuX3Zpc2liaWxpdHkgJj0gLTUpLFxuICAgICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNjb25uZWN0UGFzc2l2ZUVmZmVjdHMoZmluaXNoZWRXb3JrKSlcbiAgICAgICAgOiByZWN1cnNpdmVseVRyYXZlcnNlUGFzc2l2ZVVubW91bnRFZmZlY3RzKGZpbmlzaGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZVBhc3NpdmVVbm1vdW50RWZmZWN0cyhmaW5pc2hlZFdvcmspO1xuICB9XG59XG5mdW5jdGlvbiByZWN1cnNpdmVseVRyYXZlcnNlRGlzY29ubmVjdFBhc3NpdmVFZmZlY3RzKHBhcmVudEZpYmVyKSB7XG4gIHZhciBkZWxldGlvbnMgPSBwYXJlbnRGaWJlci5kZWxldGlvbnM7XG4gIGlmICgwICE9PSAocGFyZW50RmliZXIuZmxhZ3MgJiAxNikpIHtcbiAgICBpZiAobnVsbCAhPT0gZGVsZXRpb25zKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkZWxldGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoaWxkVG9EZWxldGUgPSBkZWxldGlvbnNbaV07XG4gICAgICAgIG5leHRFZmZlY3QgPSBjaGlsZFRvRGVsZXRlO1xuICAgICAgICBjb21taXRQYXNzaXZlVW5tb3VudEVmZmVjdHNJbnNpZGVPZkRlbGV0ZWRUcmVlX2JlZ2luKFxuICAgICAgICAgIGNoaWxkVG9EZWxldGUsXG4gICAgICAgICAgcGFyZW50RmliZXJcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICBkZXRhY2hBbHRlcm5hdGVTaWJsaW5ncyhwYXJlbnRGaWJlcik7XG4gIH1cbiAgZm9yIChwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLmNoaWxkOyBudWxsICE9PSBwYXJlbnRGaWJlcjsgKSB7XG4gICAgZGVsZXRpb25zID0gcGFyZW50RmliZXI7XG4gICAgc3dpdGNoIChkZWxldGlvbnMudGFnKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDExOlxuICAgICAgY2FzZSAxNTpcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RVbm1vdW50KDgsIGRlbGV0aW9ucywgZGVsZXRpb25zLnJldHVybik7XG4gICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNjb25uZWN0UGFzc2l2ZUVmZmVjdHMoZGVsZXRpb25zKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDIyOlxuICAgICAgICBpID0gZGVsZXRpb25zLnN0YXRlTm9kZTtcbiAgICAgICAgaS5fdmlzaWJpbGl0eSAmIDQgJiZcbiAgICAgICAgICAoKGkuX3Zpc2liaWxpdHkgJj0gLTUpLFxuICAgICAgICAgIHJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNjb25uZWN0UGFzc2l2ZUVmZmVjdHMoZGVsZXRpb25zKSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgcmVjdXJzaXZlbHlUcmF2ZXJzZURpc2Nvbm5lY3RQYXNzaXZlRWZmZWN0cyhkZWxldGlvbnMpO1xuICAgIH1cbiAgICBwYXJlbnRGaWJlciA9IHBhcmVudEZpYmVyLnNpYmxpbmc7XG4gIH1cbn1cbmZ1bmN0aW9uIGNvbW1pdFBhc3NpdmVVbm1vdW50RWZmZWN0c0luc2lkZU9mRGVsZXRlZFRyZWVfYmVnaW4oXG4gIGRlbGV0ZWRTdWJ0cmVlUm9vdCxcbiAgbmVhcmVzdE1vdW50ZWRBbmNlc3RvclxuKSB7XG4gIGZvciAoOyBudWxsICE9PSBuZXh0RWZmZWN0OyApIHtcbiAgICB2YXIgZmliZXIgPSBuZXh0RWZmZWN0O1xuICAgIHN3aXRjaCAoZmliZXIudGFnKSB7XG4gICAgICBjYXNlIDA6XG4gICAgICBjYXNlIDExOlxuICAgICAgY2FzZSAxNTpcbiAgICAgICAgY29tbWl0SG9va0VmZmVjdExpc3RVbm1vdW50KDgsIGZpYmVyLCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDIzOlxuICAgICAgY2FzZSAyMjpcbiAgICAgICAgaWYgKFxuICAgICAgICAgIG51bGwgIT09IGZpYmVyLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICBudWxsICE9PSBmaWJlci5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbFxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgY2FjaGUgPSBmaWJlci5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sO1xuICAgICAgICAgIG51bGwgIT0gY2FjaGUgJiYgY2FjaGUucmVmQ291bnQrKztcbiAgICAgICAgfVxuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgMjQ6XG4gICAgICAgIHJlbGVhc2VDYWNoZShmaWJlci5tZW1vaXplZFN0YXRlLmNhY2hlKTtcbiAgICB9XG4gICAgY2FjaGUgPSBmaWJlci5jaGlsZDtcbiAgICBpZiAobnVsbCAhPT0gY2FjaGUpIChjYWNoZS5yZXR1cm4gPSBmaWJlciksIChuZXh0RWZmZWN0ID0gY2FjaGUpO1xuICAgIGVsc2VcbiAgICAgIGE6IGZvciAoZmliZXIgPSBkZWxldGVkU3VidHJlZVJvb3Q7IG51bGwgIT09IG5leHRFZmZlY3Q7ICkge1xuICAgICAgICBjYWNoZSA9IG5leHRFZmZlY3Q7XG4gICAgICAgIHZhciBzaWJsaW5nID0gY2FjaGUuc2libGluZyxcbiAgICAgICAgICByZXR1cm5GaWJlciA9IGNhY2hlLnJldHVybjtcbiAgICAgICAgZGV0YWNoRmliZXJBZnRlckVmZmVjdHMoY2FjaGUpO1xuICAgICAgICBpZiAoY2FjaGUgPT09IGZpYmVyKSB7XG4gICAgICAgICAgbmV4dEVmZmVjdCA9IG51bGw7XG4gICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBpZiAobnVsbCAhPT0gc2libGluZykge1xuICAgICAgICAgIHNpYmxpbmcucmV0dXJuID0gcmV0dXJuRmliZXI7XG4gICAgICAgICAgbmV4dEVmZmVjdCA9IHNpYmxpbmc7XG4gICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBuZXh0RWZmZWN0ID0gcmV0dXJuRmliZXI7XG4gICAgICB9XG4gIH1cbn1cbmZ1bmN0aW9uIEZpYmVyTm9kZSh0YWcsIHBlbmRpbmdQcm9wcywga2V5LCBtb2RlKSB7XG4gIHRoaXMudGFnID0gdGFnO1xuICB0aGlzLmtleSA9IGtleTtcbiAgdGhpcy5zaWJsaW5nID1cbiAgICB0aGlzLmNoaWxkID1cbiAgICB0aGlzLnJldHVybiA9XG4gICAgdGhpcy5zdGF0ZU5vZGUgPVxuICAgIHRoaXMudHlwZSA9XG4gICAgdGhpcy5lbGVtZW50VHlwZSA9XG4gICAgICBudWxsO1xuICB0aGlzLmluZGV4ID0gMDtcbiAgdGhpcy5yZWZDbGVhbnVwID0gdGhpcy5yZWYgPSBudWxsO1xuICB0aGlzLnBlbmRpbmdQcm9wcyA9IHBlbmRpbmdQcm9wcztcbiAgdGhpcy5kZXBlbmRlbmNpZXMgPVxuICAgIHRoaXMubWVtb2l6ZWRTdGF0ZSA9XG4gICAgdGhpcy51cGRhdGVRdWV1ZSA9XG4gICAgdGhpcy5tZW1vaXplZFByb3BzID1cbiAgICAgIG51bGw7XG4gIHRoaXMubW9kZSA9IG1vZGU7XG4gIHRoaXMuc3VidHJlZUZsYWdzID0gdGhpcy5mbGFncyA9IDA7XG4gIHRoaXMuZGVsZXRpb25zID0gbnVsbDtcbiAgdGhpcy5jaGlsZExhbmVzID0gdGhpcy5sYW5lcyA9IDA7XG4gIHRoaXMuYWx0ZXJuYXRlID0gbnVsbDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVySW1wbENsYXNzKHRhZywgcGVuZGluZ1Byb3BzLCBrZXksIG1vZGUpIHtcbiAgcmV0dXJuIG5ldyBGaWJlck5vZGUodGFnLCBwZW5kaW5nUHJvcHMsIGtleSwgbW9kZSk7XG59XG5mdW5jdGlvbiBzaG91bGRDb25zdHJ1Y3QoQ29tcG9uZW50KSB7XG4gIENvbXBvbmVudCA9IENvbXBvbmVudC5wcm90b3R5cGU7XG4gIHJldHVybiAhKCFDb21wb25lbnQgfHwgIUNvbXBvbmVudC5pc1JlYWN0Q29tcG9uZW50KTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVdvcmtJblByb2dyZXNzKGN1cnJlbnQsIHBlbmRpbmdQcm9wcykge1xuICB2YXIgd29ya0luUHJvZ3Jlc3MgPSBjdXJyZW50LmFsdGVybmF0ZTtcbiAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3NcbiAgICA/ICgod29ya0luUHJvZ3Jlc3MgPSBjcmVhdGVGaWJlckltcGxDbGFzcyhcbiAgICAgICAgY3VycmVudC50YWcsXG4gICAgICAgIHBlbmRpbmdQcm9wcyxcbiAgICAgICAgY3VycmVudC5rZXksXG4gICAgICAgIGN1cnJlbnQubW9kZVxuICAgICAgKSksXG4gICAgICAod29ya0luUHJvZ3Jlc3MuZWxlbWVudFR5cGUgPSBjdXJyZW50LmVsZW1lbnRUeXBlKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy50eXBlID0gY3VycmVudC50eXBlKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSBjdXJyZW50LnN0YXRlTm9kZSksXG4gICAgICAod29ya0luUHJvZ3Jlc3MuYWx0ZXJuYXRlID0gY3VycmVudCksXG4gICAgICAoY3VycmVudC5hbHRlcm5hdGUgPSB3b3JrSW5Qcm9ncmVzcykpXG4gICAgOiAoKHdvcmtJblByb2dyZXNzLnBlbmRpbmdQcm9wcyA9IHBlbmRpbmdQcm9wcyksXG4gICAgICAod29ya0luUHJvZ3Jlc3MudHlwZSA9IGN1cnJlbnQudHlwZSksXG4gICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgPSAwKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5zdWJ0cmVlRmxhZ3MgPSAwKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5kZWxldGlvbnMgPSBudWxsKSk7XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzID0gY3VycmVudC5mbGFncyAmIDMxNDU3MjgwO1xuICB3b3JrSW5Qcm9ncmVzcy5jaGlsZExhbmVzID0gY3VycmVudC5jaGlsZExhbmVzO1xuICB3b3JrSW5Qcm9ncmVzcy5sYW5lcyA9IGN1cnJlbnQubGFuZXM7XG4gIHdvcmtJblByb2dyZXNzLmNoaWxkID0gY3VycmVudC5jaGlsZDtcbiAgd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcyA9IGN1cnJlbnQubWVtb2l6ZWRQcm9wcztcbiAgd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZTtcbiAgd29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBjdXJyZW50LnVwZGF0ZVF1ZXVlO1xuICBwZW5kaW5nUHJvcHMgPSBjdXJyZW50LmRlcGVuZGVuY2llcztcbiAgd29ya0luUHJvZ3Jlc3MuZGVwZW5kZW5jaWVzID1cbiAgICBudWxsID09PSBwZW5kaW5nUHJvcHNcbiAgICAgID8gbnVsbFxuICAgICAgOiB7IGxhbmVzOiBwZW5kaW5nUHJvcHMubGFuZXMsIGZpcnN0Q29udGV4dDogcGVuZGluZ1Byb3BzLmZpcnN0Q29udGV4dCB9O1xuICB3b3JrSW5Qcm9ncmVzcy5zaWJsaW5nID0gY3VycmVudC5zaWJsaW5nO1xuICB3b3JrSW5Qcm9ncmVzcy5pbmRleCA9IGN1cnJlbnQuaW5kZXg7XG4gIHdvcmtJblByb2dyZXNzLnJlZiA9IGN1cnJlbnQucmVmO1xuICB3b3JrSW5Qcm9ncmVzcy5yZWZDbGVhbnVwID0gY3VycmVudC5yZWZDbGVhbnVwO1xuICByZXR1cm4gd29ya0luUHJvZ3Jlc3M7XG59XG5mdW5jdGlvbiByZXNldFdvcmtJblByb2dyZXNzKHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcykge1xuICB3b3JrSW5Qcm9ncmVzcy5mbGFncyAmPSAzMTQ1NzI4MjtcbiAgdmFyIGN1cnJlbnQgPSB3b3JrSW5Qcm9ncmVzcy5hbHRlcm5hdGU7XG4gIG51bGwgPT09IGN1cnJlbnRcbiAgICA/ICgod29ya0luUHJvZ3Jlc3MuY2hpbGRMYW5lcyA9IDApLFxuICAgICAgKHdvcmtJblByb2dyZXNzLmxhbmVzID0gcmVuZGVyTGFuZXMpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLmNoaWxkID0gbnVsbCksXG4gICAgICAod29ya0luUHJvZ3Jlc3Muc3VidHJlZUZsYWdzID0gMCksXG4gICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcyA9IG51bGwpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBudWxsKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZSA9IG51bGwpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLmRlcGVuZGVuY2llcyA9IG51bGwpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZSA9IG51bGwpKVxuICAgIDogKCh3b3JrSW5Qcm9ncmVzcy5jaGlsZExhbmVzID0gY3VycmVudC5jaGlsZExhbmVzKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5sYW5lcyA9IGN1cnJlbnQubGFuZXMpLFxuICAgICAgKHdvcmtJblByb2dyZXNzLmNoaWxkID0gY3VycmVudC5jaGlsZCksXG4gICAgICAod29ya0luUHJvZ3Jlc3Muc3VidHJlZUZsYWdzID0gMCksXG4gICAgICAod29ya0luUHJvZ3Jlc3MuZGVsZXRpb25zID0gbnVsbCksXG4gICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcyA9IGN1cnJlbnQubWVtb2l6ZWRQcm9wcyksXG4gICAgICAod29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSA9IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSksXG4gICAgICAod29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBjdXJyZW50LnVwZGF0ZVF1ZXVlKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy50eXBlID0gY3VycmVudC50eXBlKSxcbiAgICAgIChyZW5kZXJMYW5lcyA9IGN1cnJlbnQuZGVwZW5kZW5jaWVzKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzcy5kZXBlbmRlbmNpZXMgPVxuICAgICAgICBudWxsID09PSByZW5kZXJMYW5lc1xuICAgICAgICAgID8gbnVsbFxuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICBsYW5lczogcmVuZGVyTGFuZXMubGFuZXMsXG4gICAgICAgICAgICAgIGZpcnN0Q29udGV4dDogcmVuZGVyTGFuZXMuZmlyc3RDb250ZXh0XG4gICAgICAgICAgICB9KSk7XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzcztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVyRnJvbVR5cGVBbmRQcm9wcyhcbiAgdHlwZSxcbiAga2V5LFxuICBwZW5kaW5nUHJvcHMsXG4gIG93bmVyLFxuICBtb2RlLFxuICBsYW5lc1xuKSB7XG4gIHZhciBmaWJlclRhZyA9IDA7XG4gIG93bmVyID0gdHlwZTtcbiAgaWYgKFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHR5cGUpIHNob3VsZENvbnN0cnVjdCh0eXBlKSAmJiAoZmliZXJUYWcgPSAxKTtcbiAgZWxzZSBpZiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHR5cGUpXG4gICAgZmliZXJUYWcgPSBpc0hvc3RIb2lzdGFibGVUeXBlKFxuICAgICAgdHlwZSxcbiAgICAgIHBlbmRpbmdQcm9wcyxcbiAgICAgIGNvbnRleHRTdGFja0N1cnNvci5jdXJyZW50XG4gICAgKVxuICAgICAgPyAyNlxuICAgICAgOiBcImh0bWxcIiA9PT0gdHlwZSB8fCBcImhlYWRcIiA9PT0gdHlwZSB8fCBcImJvZHlcIiA9PT0gdHlwZVxuICAgICAgICA/IDI3XG4gICAgICAgIDogNTtcbiAgZWxzZVxuICAgIGE6IHN3aXRjaCAodHlwZSkge1xuICAgICAgY2FzZSBSRUFDVF9GUkFHTUVOVF9UWVBFOlxuICAgICAgICByZXR1cm4gY3JlYXRlRmliZXJGcm9tRnJhZ21lbnQocGVuZGluZ1Byb3BzLmNoaWxkcmVuLCBtb2RlLCBsYW5lcywga2V5KTtcbiAgICAgIGNhc2UgUkVBQ1RfU1RSSUNUX01PREVfVFlQRTpcbiAgICAgICAgZmliZXJUYWcgPSA4O1xuICAgICAgICBtb2RlIHw9IDI0O1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgUkVBQ1RfUFJPRklMRVJfVFlQRTpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAodHlwZSA9IGNyZWF0ZUZpYmVySW1wbENsYXNzKDEyLCBwZW5kaW5nUHJvcHMsIGtleSwgbW9kZSB8IDIpKSxcbiAgICAgICAgICAodHlwZS5lbGVtZW50VHlwZSA9IFJFQUNUX1BST0ZJTEVSX1RZUEUpLFxuICAgICAgICAgICh0eXBlLmxhbmVzID0gbGFuZXMpLFxuICAgICAgICAgIHR5cGVcbiAgICAgICAgKTtcbiAgICAgIGNhc2UgUkVBQ1RfU1VTUEVOU0VfVFlQRTpcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAodHlwZSA9IGNyZWF0ZUZpYmVySW1wbENsYXNzKDEzLCBwZW5kaW5nUHJvcHMsIGtleSwgbW9kZSkpLFxuICAgICAgICAgICh0eXBlLmVsZW1lbnRUeXBlID0gUkVBQ1RfU1VTUEVOU0VfVFlQRSksXG4gICAgICAgICAgKHR5cGUubGFuZXMgPSBsYW5lcyksXG4gICAgICAgICAgdHlwZVxuICAgICAgICApO1xuICAgICAgY2FzZSBSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEU6XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHR5cGUgPSBjcmVhdGVGaWJlckltcGxDbGFzcygxOSwgcGVuZGluZ1Byb3BzLCBrZXksIG1vZGUpKSxcbiAgICAgICAgICAodHlwZS5lbGVtZW50VHlwZSA9IFJFQUNUX1NVU1BFTlNFX0xJU1RfVFlQRSksXG4gICAgICAgICAgKHR5cGUubGFuZXMgPSBsYW5lcyksXG4gICAgICAgICAgdHlwZVxuICAgICAgICApO1xuICAgICAgY2FzZSBSRUFDVF9PRkZTQ1JFRU5fVFlQRTpcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUZpYmVyRnJvbU9mZnNjcmVlbihwZW5kaW5nUHJvcHMsIG1vZGUsIGxhbmVzLCBrZXkpO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKFwib2JqZWN0XCIgPT09IHR5cGVvZiB0eXBlICYmIG51bGwgIT09IHR5cGUpXG4gICAgICAgICAgc3dpdGNoICh0eXBlLiQkdHlwZW9mKSB7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX1BST1ZJREVSX1RZUEU6XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0NPTlRFWFRfVFlQRTpcbiAgICAgICAgICAgICAgZmliZXJUYWcgPSAxMDtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIGNhc2UgUkVBQ1RfQ09OU1VNRVJfVFlQRTpcbiAgICAgICAgICAgICAgZmliZXJUYWcgPSA5O1xuICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9GT1JXQVJEX1JFRl9UWVBFOlxuICAgICAgICAgICAgICBmaWJlclRhZyA9IDExO1xuICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgY2FzZSBSRUFDVF9NRU1PX1RZUEU6XG4gICAgICAgICAgICAgIGZpYmVyVGFnID0gMTQ7XG4gICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICBjYXNlIFJFQUNUX0xBWllfVFlQRTpcbiAgICAgICAgICAgICAgZmliZXJUYWcgPSAxNjtcbiAgICAgICAgICAgICAgb3duZXIgPSBudWxsO1xuICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIH1cbiAgICAgICAgZmliZXJUYWcgPSAyOTtcbiAgICAgICAgcGVuZGluZ1Byb3BzID0gRXJyb3IoXG4gICAgICAgICAgZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxMzAsIG51bGwgPT09IHR5cGUgPyBcIm51bGxcIiA6IHR5cGVvZiB0eXBlLCBcIlwiKVxuICAgICAgICApO1xuICAgICAgICBvd25lciA9IG51bGw7XG4gICAgfVxuICBrZXkgPSBjcmVhdGVGaWJlckltcGxDbGFzcyhmaWJlclRhZywgcGVuZGluZ1Byb3BzLCBrZXksIG1vZGUpO1xuICBrZXkuZWxlbWVudFR5cGUgPSB0eXBlO1xuICBrZXkudHlwZSA9IG93bmVyO1xuICBrZXkubGFuZXMgPSBsYW5lcztcbiAgcmV0dXJuIGtleTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVyRnJvbUZyYWdtZW50KGVsZW1lbnRzLCBtb2RlLCBsYW5lcywga2V5KSB7XG4gIGVsZW1lbnRzID0gY3JlYXRlRmliZXJJbXBsQ2xhc3MoNywgZWxlbWVudHMsIGtleSwgbW9kZSk7XG4gIGVsZW1lbnRzLmxhbmVzID0gbGFuZXM7XG4gIHJldHVybiBlbGVtZW50cztcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVyRnJvbU9mZnNjcmVlbihwZW5kaW5nUHJvcHMsIG1vZGUsIGxhbmVzLCBrZXkpIHtcbiAgcGVuZGluZ1Byb3BzID0gY3JlYXRlRmliZXJJbXBsQ2xhc3MoMjIsIHBlbmRpbmdQcm9wcywga2V5LCBtb2RlKTtcbiAgcGVuZGluZ1Byb3BzLmVsZW1lbnRUeXBlID0gUkVBQ1RfT0ZGU0NSRUVOX1RZUEU7XG4gIHBlbmRpbmdQcm9wcy5sYW5lcyA9IGxhbmVzO1xuICB2YXIgcHJpbWFyeUNoaWxkSW5zdGFuY2UgPSB7XG4gICAgX3Zpc2liaWxpdHk6IDEsXG4gICAgX3BlbmRpbmdWaXNpYmlsaXR5OiAxLFxuICAgIF9wZW5kaW5nTWFya2VyczogbnVsbCxcbiAgICBfcmV0cnlDYWNoZTogbnVsbCxcbiAgICBfdHJhbnNpdGlvbnM6IG51bGwsXG4gICAgX2N1cnJlbnQ6IG51bGwsXG4gICAgZGV0YWNoOiBmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgZmliZXIgPSBwcmltYXJ5Q2hpbGRJbnN0YW5jZS5fY3VycmVudDtcbiAgICAgIGlmIChudWxsID09PSBmaWJlcikgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0NTYpKTtcbiAgICAgIGlmICgwID09PSAocHJpbWFyeUNoaWxkSW5zdGFuY2UuX3BlbmRpbmdWaXNpYmlsaXR5ICYgMikpIHtcbiAgICAgICAgdmFyIHJvb3QgPSBlbnF1ZXVlQ29uY3VycmVudFJlbmRlckZvckxhbmUoZmliZXIsIDIpO1xuICAgICAgICBudWxsICE9PSByb290ICYmXG4gICAgICAgICAgKChwcmltYXJ5Q2hpbGRJbnN0YW5jZS5fcGVuZGluZ1Zpc2liaWxpdHkgfD0gMiksXG4gICAgICAgICAgc2NoZWR1bGVVcGRhdGVPbkZpYmVyKHJvb3QsIGZpYmVyLCAyKSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBhdHRhY2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBmaWJlciA9IHByaW1hcnlDaGlsZEluc3RhbmNlLl9jdXJyZW50O1xuICAgICAgaWYgKG51bGwgPT09IGZpYmVyKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ1NikpO1xuICAgICAgaWYgKDAgIT09IChwcmltYXJ5Q2hpbGRJbnN0YW5jZS5fcGVuZGluZ1Zpc2liaWxpdHkgJiAyKSkge1xuICAgICAgICB2YXIgcm9vdCA9IGVucXVldWVDb25jdXJyZW50UmVuZGVyRm9yTGFuZShmaWJlciwgMik7XG4gICAgICAgIG51bGwgIT09IHJvb3QgJiZcbiAgICAgICAgICAoKHByaW1hcnlDaGlsZEluc3RhbmNlLl9wZW5kaW5nVmlzaWJpbGl0eSAmPSAtMyksXG4gICAgICAgICAgc2NoZWR1bGVVcGRhdGVPbkZpYmVyKHJvb3QsIGZpYmVyLCAyKSk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuICBwZW5kaW5nUHJvcHMuc3RhdGVOb2RlID0gcHJpbWFyeUNoaWxkSW5zdGFuY2U7XG4gIHJldHVybiBwZW5kaW5nUHJvcHM7XG59XG5mdW5jdGlvbiBjcmVhdGVGaWJlckZyb21UZXh0KGNvbnRlbnQsIG1vZGUsIGxhbmVzKSB7XG4gIGNvbnRlbnQgPSBjcmVhdGVGaWJlckltcGxDbGFzcyg2LCBjb250ZW50LCBudWxsLCBtb2RlKTtcbiAgY29udGVudC5sYW5lcyA9IGxhbmVzO1xuICByZXR1cm4gY29udGVudDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVyRnJvbVBvcnRhbChwb3J0YWwsIG1vZGUsIGxhbmVzKSB7XG4gIG1vZGUgPSBjcmVhdGVGaWJlckltcGxDbGFzcyhcbiAgICA0LFxuICAgIG51bGwgIT09IHBvcnRhbC5jaGlsZHJlbiA/IHBvcnRhbC5jaGlsZHJlbiA6IFtdLFxuICAgIHBvcnRhbC5rZXksXG4gICAgbW9kZVxuICApO1xuICBtb2RlLmxhbmVzID0gbGFuZXM7XG4gIG1vZGUuc3RhdGVOb2RlID0ge1xuICAgIGNvbnRhaW5lckluZm86IHBvcnRhbC5jb250YWluZXJJbmZvLFxuICAgIHBlbmRpbmdDaGlsZHJlbjogbnVsbCxcbiAgICBpbXBsZW1lbnRhdGlvbjogcG9ydGFsLmltcGxlbWVudGF0aW9uXG4gIH07XG4gIHJldHVybiBtb2RlO1xufVxuZnVuY3Rpb24gbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcykge1xuICB3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA0O1xufVxuZnVuY3Rpb24gcHJlbG9hZFJlc291cmNlQW5kU3VzcGVuZElmTmVlZGVkKHdvcmtJblByb2dyZXNzLCByZXNvdXJjZSkge1xuICBpZiAoXCJzdHlsZXNoZWV0XCIgIT09IHJlc291cmNlLnR5cGUgfHwgMCAhPT0gKHJlc291cmNlLnN0YXRlLmxvYWRpbmcgJiA0KSlcbiAgICB3b3JrSW5Qcm9ncmVzcy5mbGFncyAmPSAtMTY3NzcyMTc7XG4gIGVsc2UgaWYgKCgod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTY3NzcyMTYpLCAhcHJlbG9hZFJlc291cmNlKHJlc291cmNlKSkpIHtcbiAgICByZXNvdXJjZSA9IHN1c3BlbnNlSGFuZGxlclN0YWNrQ3Vyc29yLmN1cnJlbnQ7XG4gICAgaWYgKFxuICAgICAgbnVsbCAhPT0gcmVzb3VyY2UgJiZcbiAgICAgICgod29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgJiA0MTk0MTc2KSA9PT1cbiAgICAgIHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzXG4gICAgICAgID8gbnVsbCAhPT0gc2hlbGxCb3VuZGFyeVxuICAgICAgICA6ICgod29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgJiA2MjkxNDU2MCkgIT09XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmJlxuICAgICAgICAgICAgMCA9PT0gKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICYgNTM2ODcwOTEyKSkgfHxcbiAgICAgICAgICByZXNvdXJjZSAhPT0gc2hlbGxCb3VuZGFyeSlcbiAgICApXG4gICAgICB0aHJvdyAoXG4gICAgICAgICgoc3VzcGVuZGVkVGhlbmFibGUgPSBub29wU3VzcGVuc2V5Q29tbWl0VGhlbmFibGUpLFxuICAgICAgICBTdXNwZW5zZXlDb21taXRFeGNlcHRpb24pXG4gICAgICApO1xuICAgIHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDgxOTI7XG4gIH1cbn1cbmZ1bmN0aW9uIHNjaGVkdWxlUmV0cnlFZmZlY3Qod29ya0luUHJvZ3Jlc3MsIHJldHJ5UXVldWUpIHtcbiAgbnVsbCAhPT0gcmV0cnlRdWV1ZSAmJiAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gNCk7XG4gIHdvcmtJblByb2dyZXNzLmZsYWdzICYgMTYzODQgJiZcbiAgICAoKHJldHJ5UXVldWUgPVxuICAgICAgMjIgIT09IHdvcmtJblByb2dyZXNzLnRhZyA/IGNsYWltTmV4dFJldHJ5TGFuZSgpIDogNTM2ODcwOTEyKSxcbiAgICAod29ya0luUHJvZ3Jlc3MubGFuZXMgfD0gcmV0cnlRdWV1ZSksXG4gICAgKHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmV0cnlMYW5lcyB8PSByZXRyeVF1ZXVlKSk7XG59XG5mdW5jdGlvbiBjdXRPZmZUYWlsSWZOZWVkZWQocmVuZGVyU3RhdGUsIGhhc1JlbmRlcmVkQVRhaWxGYWxsYmFjaykge1xuICBpZiAoIWlzSHlkcmF0aW5nKVxuICAgIHN3aXRjaCAocmVuZGVyU3RhdGUudGFpbE1vZGUpIHtcbiAgICAgIGNhc2UgXCJoaWRkZW5cIjpcbiAgICAgICAgaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrID0gcmVuZGVyU3RhdGUudGFpbDtcbiAgICAgICAgZm9yICh2YXIgbGFzdFRhaWxOb2RlID0gbnVsbDsgbnVsbCAhPT0gaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrOyApXG4gICAgICAgICAgbnVsbCAhPT0gaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrLmFsdGVybmF0ZSAmJlxuICAgICAgICAgICAgKGxhc3RUYWlsTm9kZSA9IGhhc1JlbmRlcmVkQVRhaWxGYWxsYmFjayksXG4gICAgICAgICAgICAoaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrID0gaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrLnNpYmxpbmcpO1xuICAgICAgICBudWxsID09PSBsYXN0VGFpbE5vZGVcbiAgICAgICAgICA/IChyZW5kZXJTdGF0ZS50YWlsID0gbnVsbClcbiAgICAgICAgICA6IChsYXN0VGFpbE5vZGUuc2libGluZyA9IG51bGwpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJjb2xsYXBzZWRcIjpcbiAgICAgICAgbGFzdFRhaWxOb2RlID0gcmVuZGVyU3RhdGUudGFpbDtcbiAgICAgICAgZm9yICh2YXIgbGFzdFRhaWxOb2RlJDEzMSA9IG51bGw7IG51bGwgIT09IGxhc3RUYWlsTm9kZTsgKVxuICAgICAgICAgIG51bGwgIT09IGxhc3RUYWlsTm9kZS5hbHRlcm5hdGUgJiYgKGxhc3RUYWlsTm9kZSQxMzEgPSBsYXN0VGFpbE5vZGUpLFxuICAgICAgICAgICAgKGxhc3RUYWlsTm9kZSA9IGxhc3RUYWlsTm9kZS5zaWJsaW5nKTtcbiAgICAgICAgbnVsbCA9PT0gbGFzdFRhaWxOb2RlJDEzMVxuICAgICAgICAgID8gaGFzUmVuZGVyZWRBVGFpbEZhbGxiYWNrIHx8IG51bGwgPT09IHJlbmRlclN0YXRlLnRhaWxcbiAgICAgICAgICAgID8gKHJlbmRlclN0YXRlLnRhaWwgPSBudWxsKVxuICAgICAgICAgICAgOiAocmVuZGVyU3RhdGUudGFpbC5zaWJsaW5nID0gbnVsbClcbiAgICAgICAgICA6IChsYXN0VGFpbE5vZGUkMTMxLnNpYmxpbmcgPSBudWxsKTtcbiAgICB9XG59XG5mdW5jdGlvbiBidWJibGVQcm9wZXJ0aWVzKGNvbXBsZXRlZFdvcmspIHtcbiAgdmFyIGRpZEJhaWxvdXQgPVxuICAgICAgbnVsbCAhPT0gY29tcGxldGVkV29yay5hbHRlcm5hdGUgJiZcbiAgICAgIGNvbXBsZXRlZFdvcmsuYWx0ZXJuYXRlLmNoaWxkID09PSBjb21wbGV0ZWRXb3JrLmNoaWxkLFxuICAgIG5ld0NoaWxkTGFuZXMgPSAwLFxuICAgIHN1YnRyZWVGbGFncyA9IDA7XG4gIGlmIChkaWRCYWlsb3V0KVxuICAgIGZvciAodmFyIGNoaWxkJDEzMiA9IGNvbXBsZXRlZFdvcmsuY2hpbGQ7IG51bGwgIT09IGNoaWxkJDEzMjsgKVxuICAgICAgKG5ld0NoaWxkTGFuZXMgfD0gY2hpbGQkMTMyLmxhbmVzIHwgY2hpbGQkMTMyLmNoaWxkTGFuZXMpLFxuICAgICAgICAoc3VidHJlZUZsYWdzIHw9IGNoaWxkJDEzMi5zdWJ0cmVlRmxhZ3MgJiAzMTQ1NzI4MCksXG4gICAgICAgIChzdWJ0cmVlRmxhZ3MgfD0gY2hpbGQkMTMyLmZsYWdzICYgMzE0NTcyODApLFxuICAgICAgICAoY2hpbGQkMTMyLnJldHVybiA9IGNvbXBsZXRlZFdvcmspLFxuICAgICAgICAoY2hpbGQkMTMyID0gY2hpbGQkMTMyLnNpYmxpbmcpO1xuICBlbHNlXG4gICAgZm9yIChjaGlsZCQxMzIgPSBjb21wbGV0ZWRXb3JrLmNoaWxkOyBudWxsICE9PSBjaGlsZCQxMzI7IClcbiAgICAgIChuZXdDaGlsZExhbmVzIHw9IGNoaWxkJDEzMi5sYW5lcyB8IGNoaWxkJDEzMi5jaGlsZExhbmVzKSxcbiAgICAgICAgKHN1YnRyZWVGbGFncyB8PSBjaGlsZCQxMzIuc3VidHJlZUZsYWdzKSxcbiAgICAgICAgKHN1YnRyZWVGbGFncyB8PSBjaGlsZCQxMzIuZmxhZ3MpLFxuICAgICAgICAoY2hpbGQkMTMyLnJldHVybiA9IGNvbXBsZXRlZFdvcmspLFxuICAgICAgICAoY2hpbGQkMTMyID0gY2hpbGQkMTMyLnNpYmxpbmcpO1xuICBjb21wbGV0ZWRXb3JrLnN1YnRyZWVGbGFncyB8PSBzdWJ0cmVlRmxhZ3M7XG4gIGNvbXBsZXRlZFdvcmsuY2hpbGRMYW5lcyA9IG5ld0NoaWxkTGFuZXM7XG4gIHJldHVybiBkaWRCYWlsb3V0O1xufVxuZnVuY3Rpb24gY29tcGxldGVXb3JrKGN1cnJlbnQsIHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcykge1xuICB2YXIgbmV3UHJvcHMgPSB3b3JrSW5Qcm9ncmVzcy5wZW5kaW5nUHJvcHM7XG4gIHBvcFRyZWVDb250ZXh0KHdvcmtJblByb2dyZXNzKTtcbiAgc3dpdGNoICh3b3JrSW5Qcm9ncmVzcy50YWcpIHtcbiAgICBjYXNlIDE2OlxuICAgIGNhc2UgMTU6XG4gICAgY2FzZSAwOlxuICAgIGNhc2UgMTE6XG4gICAgY2FzZSA3OlxuICAgIGNhc2UgODpcbiAgICBjYXNlIDEyOlxuICAgIGNhc2UgOTpcbiAgICBjYXNlIDE0OlxuICAgICAgcmV0dXJuIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLCBudWxsO1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiBidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKSwgbnVsbDtcbiAgICBjYXNlIDM6XG4gICAgICByZW5kZXJMYW5lcyA9IHdvcmtJblByb2dyZXNzLnN0YXRlTm9kZTtcbiAgICAgIG5ld1Byb3BzID0gbnVsbDtcbiAgICAgIG51bGwgIT09IGN1cnJlbnQgJiYgKG5ld1Byb3BzID0gY3VycmVudC5tZW1vaXplZFN0YXRlLmNhY2hlKTtcbiAgICAgIHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUuY2FjaGUgIT09IG5ld1Byb3BzICYmXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAyMDQ4KTtcbiAgICAgIHBvcFByb3ZpZGVyKENhY2hlQ29udGV4dCk7XG4gICAgICBwb3BIb3N0Q29udGFpbmVyKCk7XG4gICAgICByZW5kZXJMYW5lcy5wZW5kaW5nQ29udGV4dCAmJlxuICAgICAgICAoKHJlbmRlckxhbmVzLmNvbnRleHQgPSByZW5kZXJMYW5lcy5wZW5kaW5nQ29udGV4dCksXG4gICAgICAgIChyZW5kZXJMYW5lcy5wZW5kaW5nQ29udGV4dCA9IG51bGwpKTtcbiAgICAgIGlmIChudWxsID09PSBjdXJyZW50IHx8IG51bGwgPT09IGN1cnJlbnQuY2hpbGQpXG4gICAgICAgIHBvcEh5ZHJhdGlvblN0YXRlKHdvcmtJblByb2dyZXNzKVxuICAgICAgICAgID8gbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcylcbiAgICAgICAgICA6IG51bGwgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgICAgIChjdXJyZW50Lm1lbW9pemVkU3RhdGUuaXNEZWh5ZHJhdGVkICYmXG4gICAgICAgICAgICAgIDAgPT09ICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDI1NikpIHx8XG4gICAgICAgICAgICAoKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDEwMjQpLFxuICAgICAgICAgICAgbnVsbCAhPT0gaHlkcmF0aW9uRXJyb3JzICYmXG4gICAgICAgICAgICAgIChxdWV1ZVJlY292ZXJhYmxlRXJyb3JzKGh5ZHJhdGlvbkVycm9ycyksXG4gICAgICAgICAgICAgIChoeWRyYXRpb25FcnJvcnMgPSBudWxsKSkpO1xuICAgICAgYnViYmxlUHJvcGVydGllcyh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICBjYXNlIDI2OlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKHJlbmRlckxhbmVzID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZSksXG4gICAgICAgIG51bGwgPT09IGN1cnJlbnRcbiAgICAgICAgICA/IChtYXJrVXBkYXRlKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgIG51bGwgIT09IHJlbmRlckxhbmVzXG4gICAgICAgICAgICAgID8gKGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAgIHByZWxvYWRSZXNvdXJjZUFuZFN1c3BlbmRJZk5lZWRlZCh3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpKVxuICAgICAgICAgICAgICA6IChidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJj0gLTE2Nzc3MjE3KSkpXG4gICAgICAgICAgOiByZW5kZXJMYW5lc1xuICAgICAgICAgICAgPyByZW5kZXJMYW5lcyAhPT0gY3VycmVudC5tZW1vaXplZFN0YXRlXG4gICAgICAgICAgICAgID8gKG1hcmtVcGRhdGUod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAgIHByZWxvYWRSZXNvdXJjZUFuZFN1c3BlbmRJZk5lZWRlZCh3b3JrSW5Qcm9ncmVzcywgcmVuZGVyTGFuZXMpKVxuICAgICAgICAgICAgICA6IChidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJj0gLTE2Nzc3MjE3KSlcbiAgICAgICAgICAgIDogKGN1cnJlbnQubWVtb2l6ZWRQcm9wcyAhPT0gbmV3UHJvcHMgJiYgbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJj0gLTE2Nzc3MjE3KSksXG4gICAgICAgIG51bGxcbiAgICAgICk7XG4gICAgY2FzZSAyNzpcbiAgICAgIHBvcEhvc3RDb250ZXh0KHdvcmtJblByb2dyZXNzKTtcbiAgICAgIHJlbmRlckxhbmVzID0gcm9vdEluc3RhbmNlU3RhY2tDdXJzb3IuY3VycmVudDtcbiAgICAgIHZhciB0eXBlID0gd29ya0luUHJvZ3Jlc3MudHlwZTtcbiAgICAgIGlmIChudWxsICE9PSBjdXJyZW50ICYmIG51bGwgIT0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlKVxuICAgICAgICBjdXJyZW50Lm1lbW9pemVkUHJvcHMgIT09IG5ld1Byb3BzICYmIG1hcmtVcGRhdGUod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgZWxzZSB7XG4gICAgICAgIGlmICghbmV3UHJvcHMpIHtcbiAgICAgICAgICBpZiAobnVsbCA9PT0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlKVxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNjYpKTtcbiAgICAgICAgICBidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKTtcbiAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBjdXJyZW50ID0gY29udGV4dFN0YWNrQ3Vyc29yLmN1cnJlbnQ7XG4gICAgICAgIHBvcEh5ZHJhdGlvblN0YXRlKHdvcmtJblByb2dyZXNzKVxuICAgICAgICAgID8gcHJlcGFyZVRvSHlkcmF0ZUhvc3RJbnN0YW5jZSh3b3JrSW5Qcm9ncmVzcywgY3VycmVudClcbiAgICAgICAgICA6ICgoY3VycmVudCA9IHJlc29sdmVTaW5nbGV0b25JbnN0YW5jZSh0eXBlLCBuZXdQcm9wcywgcmVuZGVyTGFuZXMpKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUgPSBjdXJyZW50KSxcbiAgICAgICAgICAgIG1hcmtVcGRhdGUod29ya0luUHJvZ3Jlc3MpKTtcbiAgICAgIH1cbiAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSA1OlxuICAgICAgcG9wSG9zdENvbnRleHQod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgcmVuZGVyTGFuZXMgPSB3b3JrSW5Qcm9ncmVzcy50eXBlO1xuICAgICAgaWYgKG51bGwgIT09IGN1cnJlbnQgJiYgbnVsbCAhPSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUpXG4gICAgICAgIGN1cnJlbnQubWVtb2l6ZWRQcm9wcyAhPT0gbmV3UHJvcHMgJiYgbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKCFuZXdQcm9wcykge1xuICAgICAgICAgIGlmIChudWxsID09PSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUpXG4gICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE2NikpO1xuICAgICAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICAgIGN1cnJlbnQgPSBjb250ZXh0U3RhY2tDdXJzb3IuY3VycmVudDtcbiAgICAgICAgaWYgKHBvcEh5ZHJhdGlvblN0YXRlKHdvcmtJblByb2dyZXNzKSlcbiAgICAgICAgICBwcmVwYXJlVG9IeWRyYXRlSG9zdEluc3RhbmNlKHdvcmtJblByb2dyZXNzLCBjdXJyZW50KTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdHlwZSA9IGdldE93bmVyRG9jdW1lbnRGcm9tUm9vdENvbnRhaW5lcihcbiAgICAgICAgICAgIHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yLmN1cnJlbnRcbiAgICAgICAgICApO1xuICAgICAgICAgIHN3aXRjaCAoY3VycmVudCkge1xuICAgICAgICAgICAgY2FzZSAxOlxuICAgICAgICAgICAgICBjdXJyZW50ID0gdHlwZS5jcmVhdGVFbGVtZW50TlMoXG4gICAgICAgICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiLFxuICAgICAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICBjdXJyZW50ID0gdHlwZS5jcmVhdGVFbGVtZW50TlMoXG4gICAgICAgICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsXG4gICAgICAgICAgICAgICAgcmVuZGVyTGFuZXNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBzd2l0Y2ggKHJlbmRlckxhbmVzKSB7XG4gICAgICAgICAgICAgICAgY2FzZSBcInN2Z1wiOlxuICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHR5cGUuY3JlYXRlRWxlbWVudE5TKFxuICAgICAgICAgICAgICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIsXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcIm1hdGhcIjpcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSB0eXBlLmNyZWF0ZUVsZW1lbnROUyhcbiAgICAgICAgICAgICAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk4L01hdGgvTWF0aE1MXCIsXG4gICAgICAgICAgICAgICAgICAgIHJlbmRlckxhbmVzXG4gICAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgY2FzZSBcInNjcmlwdFwiOlxuICAgICAgICAgICAgICAgICAgY3VycmVudCA9IHR5cGUuY3JlYXRlRWxlbWVudChcImRpdlwiKTtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQuaW5uZXJIVE1MID0gXCI8c2NyaXB0PlxceDNjL3NjcmlwdD5cIjtcbiAgICAgICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnJlbW92ZUNoaWxkKGN1cnJlbnQuZmlyc3RDaGlsZCk7XG4gICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICAgICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG5ld1Byb3BzLmlzXG4gICAgICAgICAgICAgICAgICAgICAgPyB0eXBlLmNyZWF0ZUVsZW1lbnQoXCJzZWxlY3RcIiwgeyBpczogbmV3UHJvcHMuaXMgfSlcbiAgICAgICAgICAgICAgICAgICAgICA6IHR5cGUuY3JlYXRlRWxlbWVudChcInNlbGVjdFwiKTtcbiAgICAgICAgICAgICAgICAgIG5ld1Byb3BzLm11bHRpcGxlXG4gICAgICAgICAgICAgICAgICAgID8gKGN1cnJlbnQubXVsdGlwbGUgPSAhMClcbiAgICAgICAgICAgICAgICAgICAgOiBuZXdQcm9wcy5zaXplICYmIChjdXJyZW50LnNpemUgPSBuZXdQcm9wcy5zaXplKTtcbiAgICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgICBjdXJyZW50ID1cbiAgICAgICAgICAgICAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG5ld1Byb3BzLmlzXG4gICAgICAgICAgICAgICAgICAgICAgPyB0eXBlLmNyZWF0ZUVsZW1lbnQocmVuZGVyTGFuZXMsIHsgaXM6IG5ld1Byb3BzLmlzIH0pXG4gICAgICAgICAgICAgICAgICAgICAgOiB0eXBlLmNyZWF0ZUVsZW1lbnQocmVuZGVyTGFuZXMpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnRbaW50ZXJuYWxJbnN0YW5jZUtleV0gPSB3b3JrSW5Qcm9ncmVzcztcbiAgICAgICAgICBjdXJyZW50W2ludGVybmFsUHJvcHNLZXldID0gbmV3UHJvcHM7XG4gICAgICAgICAgYTogZm9yICh0eXBlID0gd29ya0luUHJvZ3Jlc3MuY2hpbGQ7IG51bGwgIT09IHR5cGU7ICkge1xuICAgICAgICAgICAgaWYgKDUgPT09IHR5cGUudGFnIHx8IDYgPT09IHR5cGUudGFnKVxuICAgICAgICAgICAgICBjdXJyZW50LmFwcGVuZENoaWxkKHR5cGUuc3RhdGVOb2RlKTtcbiAgICAgICAgICAgIGVsc2UgaWYgKDQgIT09IHR5cGUudGFnICYmIDI3ICE9PSB0eXBlLnRhZyAmJiBudWxsICE9PSB0eXBlLmNoaWxkKSB7XG4gICAgICAgICAgICAgIHR5cGUuY2hpbGQucmV0dXJuID0gdHlwZTtcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGUuY2hpbGQ7XG4gICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHR5cGUgPT09IHdvcmtJblByb2dyZXNzKSBicmVhayBhO1xuICAgICAgICAgICAgZm9yICg7IG51bGwgPT09IHR5cGUuc2libGluZzsgKSB7XG4gICAgICAgICAgICAgIGlmIChudWxsID09PSB0eXBlLnJldHVybiB8fCB0eXBlLnJldHVybiA9PT0gd29ya0luUHJvZ3Jlc3MpXG4gICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgdHlwZSA9IHR5cGUucmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHlwZS5zaWJsaW5nLnJldHVybiA9IHR5cGUucmV0dXJuO1xuICAgICAgICAgICAgdHlwZSA9IHR5cGUuc2libGluZztcbiAgICAgICAgICB9XG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlID0gY3VycmVudDtcbiAgICAgICAgICBhOiBzd2l0Y2ggKFxuICAgICAgICAgICAgKHNldEluaXRpYWxQcm9wZXJ0aWVzKGN1cnJlbnQsIHJlbmRlckxhbmVzLCBuZXdQcm9wcyksIHJlbmRlckxhbmVzKVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgY2FzZSBcImJ1dHRvblwiOlxuICAgICAgICAgICAgY2FzZSBcImlucHV0XCI6XG4gICAgICAgICAgICBjYXNlIFwic2VsZWN0XCI6XG4gICAgICAgICAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgICAgICAgICAgY3VycmVudCA9ICEhbmV3UHJvcHMuYXV0b0ZvY3VzO1xuICAgICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgICAgY2FzZSBcImltZ1wiOlxuICAgICAgICAgICAgICBjdXJyZW50ID0gITA7XG4gICAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBjdXJyZW50ID0gITE7XG4gICAgICAgICAgfVxuICAgICAgICAgIGN1cnJlbnQgJiYgbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgJj0gLTE2Nzc3MjE3O1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSA2OlxuICAgICAgaWYgKGN1cnJlbnQgJiYgbnVsbCAhPSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUpXG4gICAgICAgIGN1cnJlbnQubWVtb2l6ZWRQcm9wcyAhPT0gbmV3UHJvcHMgJiYgbWFya1VwZGF0ZSh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICBlbHNlIHtcbiAgICAgICAgaWYgKFwic3RyaW5nXCIgIT09IHR5cGVvZiBuZXdQcm9wcyAmJiBudWxsID09PSB3b3JrSW5Qcm9ncmVzcy5zdGF0ZU5vZGUpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgxNjYpKTtcbiAgICAgICAgY3VycmVudCA9IHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yLmN1cnJlbnQ7XG4gICAgICAgIGlmIChwb3BIeWRyYXRpb25TdGF0ZSh3b3JrSW5Qcm9ncmVzcykpIHtcbiAgICAgICAgICBjdXJyZW50ID0gd29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlO1xuICAgICAgICAgIHJlbmRlckxhbmVzID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRQcm9wcztcbiAgICAgICAgICBuZXdQcm9wcyA9IG51bGw7XG4gICAgICAgICAgdHlwZSA9IGh5ZHJhdGlvblBhcmVudEZpYmVyO1xuICAgICAgICAgIGlmIChudWxsICE9PSB0eXBlKVxuICAgICAgICAgICAgc3dpdGNoICh0eXBlLnRhZykge1xuICAgICAgICAgICAgICBjYXNlIDI3OlxuICAgICAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICAgICAgbmV3UHJvcHMgPSB0eXBlLm1lbW9pemVkUHJvcHM7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgY3VycmVudFtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IHdvcmtJblByb2dyZXNzO1xuICAgICAgICAgIGN1cnJlbnQgPVxuICAgICAgICAgICAgY3VycmVudC5ub2RlVmFsdWUgPT09IHJlbmRlckxhbmVzIHx8XG4gICAgICAgICAgICAobnVsbCAhPT0gbmV3UHJvcHMgJiYgITAgPT09IG5ld1Byb3BzLnN1cHByZXNzSHlkcmF0aW9uV2FybmluZykgfHxcbiAgICAgICAgICAgIGNoZWNrRm9yVW5tYXRjaGVkVGV4dChjdXJyZW50Lm5vZGVWYWx1ZSwgcmVuZGVyTGFuZXMpXG4gICAgICAgICAgICAgID8gITBcbiAgICAgICAgICAgICAgOiAhMTtcbiAgICAgICAgICBjdXJyZW50IHx8IHRocm93T25IeWRyYXRpb25NaXNtYXRjaCh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICAgIH0gZWxzZVxuICAgICAgICAgIChjdXJyZW50ID1cbiAgICAgICAgICAgIGdldE93bmVyRG9jdW1lbnRGcm9tUm9vdENvbnRhaW5lcihjdXJyZW50KS5jcmVhdGVUZXh0Tm9kZShcbiAgICAgICAgICAgICAgbmV3UHJvcHNcbiAgICAgICAgICAgICkpLFxuICAgICAgICAgICAgKGN1cnJlbnRbaW50ZXJuYWxJbnN0YW5jZUtleV0gPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlID0gY3VycmVudCk7XG4gICAgICB9XG4gICAgICBidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGNhc2UgMTM6XG4gICAgICBuZXdQcm9wcyA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgICBpZiAoXG4gICAgICAgIG51bGwgPT09IGN1cnJlbnQgfHxcbiAgICAgICAgKG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSAmJlxuICAgICAgICAgIG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5kZWh5ZHJhdGVkKVxuICAgICAgKSB7XG4gICAgICAgIHR5cGUgPSBwb3BIeWRyYXRpb25TdGF0ZSh3b3JrSW5Qcm9ncmVzcyk7XG4gICAgICAgIGlmIChudWxsICE9PSBuZXdQcm9wcyAmJiBudWxsICE9PSBuZXdQcm9wcy5kZWh5ZHJhdGVkKSB7XG4gICAgICAgICAgaWYgKG51bGwgPT09IGN1cnJlbnQpIHtcbiAgICAgICAgICAgIGlmICghdHlwZSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMTgpKTtcbiAgICAgICAgICAgIHR5cGUgPSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlO1xuICAgICAgICAgICAgdHlwZSA9IG51bGwgIT09IHR5cGUgPyB0eXBlLmRlaHlkcmF0ZWQgOiBudWxsO1xuICAgICAgICAgICAgaWYgKCF0eXBlKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMxNykpO1xuICAgICAgICAgICAgdHlwZVtpbnRlcm5hbEluc3RhbmNlS2V5XSA9IHdvcmtJblByb2dyZXNzO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgcmVzZXRIeWRyYXRpb25TdGF0ZSgpLFxuICAgICAgICAgICAgICAwID09PSAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgJiAxMjgpICYmXG4gICAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgPSBudWxsKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDQpO1xuICAgICAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgICAgIHR5cGUgPSAhMTtcbiAgICAgICAgfSBlbHNlXG4gICAgICAgICAgbnVsbCAhPT0gaHlkcmF0aW9uRXJyb3JzICYmXG4gICAgICAgICAgICAocXVldWVSZWNvdmVyYWJsZUVycm9ycyhoeWRyYXRpb25FcnJvcnMpLCAoaHlkcmF0aW9uRXJyb3JzID0gbnVsbCkpLFxuICAgICAgICAgICAgKHR5cGUgPSAhMCk7XG4gICAgICAgIGlmICghdHlwZSkge1xuICAgICAgICAgIGlmICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDI1NilcbiAgICAgICAgICAgIHJldHVybiBwb3BTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpLCB3b3JrSW5Qcm9ncmVzcztcbiAgICAgICAgICBwb3BTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBwb3BTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgaWYgKDAgIT09ICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDEyOCkpXG4gICAgICAgIHJldHVybiAod29ya0luUHJvZ3Jlc3MubGFuZXMgPSByZW5kZXJMYW5lcyksIHdvcmtJblByb2dyZXNzO1xuICAgICAgcmVuZGVyTGFuZXMgPSBudWxsICE9PSBuZXdQcm9wcztcbiAgICAgIGN1cnJlbnQgPSBudWxsICE9PSBjdXJyZW50ICYmIG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZTtcbiAgICAgIGlmIChyZW5kZXJMYW5lcykge1xuICAgICAgICBuZXdQcm9wcyA9IHdvcmtJblByb2dyZXNzLmNoaWxkO1xuICAgICAgICB0eXBlID0gbnVsbDtcbiAgICAgICAgbnVsbCAhPT0gbmV3UHJvcHMuYWx0ZXJuYXRlICYmXG4gICAgICAgICAgbnVsbCAhPT0gbmV3UHJvcHMuYWx0ZXJuYXRlLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICBudWxsICE9PSBuZXdQcm9wcy5hbHRlcm5hdGUubWVtb2l6ZWRTdGF0ZS5jYWNoZVBvb2wgJiZcbiAgICAgICAgICAodHlwZSA9IG5ld1Byb3BzLmFsdGVybmF0ZS5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKTtcbiAgICAgICAgdmFyIGNhY2hlJDE0NCA9IG51bGw7XG4gICAgICAgIG51bGwgIT09IG5ld1Byb3BzLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICBudWxsICE9PSBuZXdQcm9wcy5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCAmJlxuICAgICAgICAgIChjYWNoZSQxNDQgPSBuZXdQcm9wcy5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKTtcbiAgICAgICAgY2FjaGUkMTQ0ICE9PSB0eXBlICYmIChuZXdQcm9wcy5mbGFncyB8PSAyMDQ4KTtcbiAgICAgIH1cbiAgICAgIHJlbmRlckxhbmVzICE9PSBjdXJyZW50ICYmXG4gICAgICAgIHJlbmRlckxhbmVzICYmXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzcy5jaGlsZC5mbGFncyB8PSA4MTkyKTtcbiAgICAgIHNjaGVkdWxlUmV0cnlFZmZlY3Qod29ya0luUHJvZ3Jlc3MsIHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlKTtcbiAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcG9wSG9zdENvbnRhaW5lcigpLFxuICAgICAgICBudWxsID09PSBjdXJyZW50ICYmXG4gICAgICAgICAgbGlzdGVuVG9BbGxTdXBwb3J0ZWRFdmVudHMod29ya0luUHJvZ3Jlc3Muc3RhdGVOb2RlLmNvbnRhaW5lckluZm8pLFxuICAgICAgICBidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgbnVsbFxuICAgICAgKTtcbiAgICBjYXNlIDEwOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcG9wUHJvdmlkZXIod29ya0luUHJvZ3Jlc3MudHlwZSksIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLCBudWxsXG4gICAgICApO1xuICAgIGNhc2UgMTk6XG4gICAgICBwb3Aoc3VzcGVuc2VTdGFja0N1cnNvcik7XG4gICAgICB0eXBlID0gd29ya0luUHJvZ3Jlc3MubWVtb2l6ZWRTdGF0ZTtcbiAgICAgIGlmIChudWxsID09PSB0eXBlKSByZXR1cm4gYnViYmxlUHJvcGVydGllcyh3b3JrSW5Qcm9ncmVzcyksIG51bGw7XG4gICAgICBuZXdQcm9wcyA9IDAgIT09ICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDEyOCk7XG4gICAgICBjYWNoZSQxNDQgPSB0eXBlLnJlbmRlcmluZztcbiAgICAgIGlmIChudWxsID09PSBjYWNoZSQxNDQpXG4gICAgICAgIGlmIChuZXdQcm9wcykgY3V0T2ZmVGFpbElmTmVlZGVkKHR5cGUsICExKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgMCAhPT0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyB8fFxuICAgICAgICAgICAgKG51bGwgIT09IGN1cnJlbnQgJiYgMCAhPT0gKGN1cnJlbnQuZmxhZ3MgJiAxMjgpKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGZvciAoY3VycmVudCA9IHdvcmtJblByb2dyZXNzLmNoaWxkOyBudWxsICE9PSBjdXJyZW50OyApIHtcbiAgICAgICAgICAgICAgY2FjaGUkMTQ0ID0gZmluZEZpcnN0U3VzcGVuZGVkKGN1cnJlbnQpO1xuICAgICAgICAgICAgICBpZiAobnVsbCAhPT0gY2FjaGUkMTQ0KSB7XG4gICAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTI4O1xuICAgICAgICAgICAgICAgIGN1dE9mZlRhaWxJZk5lZWRlZCh0eXBlLCAhMSk7XG4gICAgICAgICAgICAgICAgY3VycmVudCA9IGNhY2hlJDE0NC51cGRhdGVRdWV1ZTtcbiAgICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzcy51cGRhdGVRdWV1ZSA9IGN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgc2NoZWR1bGVSZXRyeUVmZmVjdCh3b3JrSW5Qcm9ncmVzcywgY3VycmVudCk7XG4gICAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3Muc3VidHJlZUZsYWdzID0gMDtcbiAgICAgICAgICAgICAgICBjdXJyZW50ID0gcmVuZGVyTGFuZXM7XG4gICAgICAgICAgICAgICAgZm9yIChyZW5kZXJMYW5lcyA9IHdvcmtJblByb2dyZXNzLmNoaWxkOyBudWxsICE9PSByZW5kZXJMYW5lczsgKVxuICAgICAgICAgICAgICAgICAgcmVzZXRXb3JrSW5Qcm9ncmVzcyhyZW5kZXJMYW5lcywgY3VycmVudCksXG4gICAgICAgICAgICAgICAgICAgIChyZW5kZXJMYW5lcyA9IHJlbmRlckxhbmVzLnNpYmxpbmcpO1xuICAgICAgICAgICAgICAgIHB1c2goXG4gICAgICAgICAgICAgICAgICBzdXNwZW5zZVN0YWNrQ3Vyc29yLFxuICAgICAgICAgICAgICAgICAgKHN1c3BlbnNlU3RhY2tDdXJzb3IuY3VycmVudCAmIDEpIHwgMlxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHdvcmtJblByb2dyZXNzLmNoaWxkO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGN1cnJlbnQgPSBjdXJyZW50LnNpYmxpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgbnVsbCAhPT0gdHlwZS50YWlsICYmXG4gICAgICAgICAgICBub3coKSA+IHdvcmtJblByb2dyZXNzUm9vdFJlbmRlclRhcmdldFRpbWUgJiZcbiAgICAgICAgICAgICgod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTI4KSxcbiAgICAgICAgICAgIChuZXdQcm9wcyA9ICEwKSxcbiAgICAgICAgICAgIGN1dE9mZlRhaWxJZk5lZWRlZCh0eXBlLCAhMSksXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MubGFuZXMgPSA0MTk0MzA0KSk7XG4gICAgICAgIH1cbiAgICAgIGVsc2Uge1xuICAgICAgICBpZiAoIW5ld1Byb3BzKVxuICAgICAgICAgIGlmICgoKGN1cnJlbnQgPSBmaW5kRmlyc3RTdXNwZW5kZWQoY2FjaGUkMTQ0KSksIG51bGwgIT09IGN1cnJlbnQpKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICgod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gMTI4KSxcbiAgICAgICAgICAgICAgKG5ld1Byb3BzID0gITApLFxuICAgICAgICAgICAgICAoY3VycmVudCA9IGN1cnJlbnQudXBkYXRlUXVldWUpLFxuICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MudXBkYXRlUXVldWUgPSBjdXJyZW50KSxcbiAgICAgICAgICAgICAgc2NoZWR1bGVSZXRyeUVmZmVjdCh3b3JrSW5Qcm9ncmVzcywgY3VycmVudCksXG4gICAgICAgICAgICAgIGN1dE9mZlRhaWxJZk5lZWRlZCh0eXBlLCAhMCksXG4gICAgICAgICAgICAgIG51bGwgPT09IHR5cGUudGFpbCAmJlxuICAgICAgICAgICAgICAgIFwiaGlkZGVuXCIgPT09IHR5cGUudGFpbE1vZGUgJiZcbiAgICAgICAgICAgICAgICAhY2FjaGUkMTQ0LmFsdGVybmF0ZSAmJlxuICAgICAgICAgICAgICAgICFpc0h5ZHJhdGluZylcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgcmV0dXJuIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpLCBudWxsO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgMiAqIG5vdygpIC0gdHlwZS5yZW5kZXJpbmdTdGFydFRpbWUgPlxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJUYXJnZXRUaW1lICYmXG4gICAgICAgICAgICAgIDUzNjg3MDkxMiAhPT0gcmVuZGVyTGFuZXMgJiZcbiAgICAgICAgICAgICAgKCh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAxMjgpLFxuICAgICAgICAgICAgICAobmV3UHJvcHMgPSAhMCksXG4gICAgICAgICAgICAgIGN1dE9mZlRhaWxJZk5lZWRlZCh0eXBlLCAhMSksXG4gICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5sYW5lcyA9IDQxOTQzMDQpKTtcbiAgICAgICAgdHlwZS5pc0JhY2t3YXJkc1xuICAgICAgICAgID8gKChjYWNoZSQxNDQuc2libGluZyA9IHdvcmtJblByb2dyZXNzLmNoaWxkKSxcbiAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5jaGlsZCA9IGNhY2hlJDE0NCkpXG4gICAgICAgICAgOiAoKGN1cnJlbnQgPSB0eXBlLmxhc3QpLFxuICAgICAgICAgICAgbnVsbCAhPT0gY3VycmVudFxuICAgICAgICAgICAgICA/IChjdXJyZW50LnNpYmxpbmcgPSBjYWNoZSQxNDQpXG4gICAgICAgICAgICAgIDogKHdvcmtJblByb2dyZXNzLmNoaWxkID0gY2FjaGUkMTQ0KSxcbiAgICAgICAgICAgICh0eXBlLmxhc3QgPSBjYWNoZSQxNDQpKTtcbiAgICAgIH1cbiAgICAgIGlmIChudWxsICE9PSB0eXBlLnRhaWwpXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgKHdvcmtJblByb2dyZXNzID0gdHlwZS50YWlsKSxcbiAgICAgICAgICAodHlwZS5yZW5kZXJpbmcgPSB3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgICAgKHR5cGUudGFpbCA9IHdvcmtJblByb2dyZXNzLnNpYmxpbmcpLFxuICAgICAgICAgICh0eXBlLnJlbmRlcmluZ1N0YXJ0VGltZSA9IG5vdygpKSxcbiAgICAgICAgICAod29ya0luUHJvZ3Jlc3Muc2libGluZyA9IG51bGwpLFxuICAgICAgICAgIChjdXJyZW50ID0gc3VzcGVuc2VTdGFja0N1cnNvci5jdXJyZW50KSxcbiAgICAgICAgICBwdXNoKHN1c3BlbnNlU3RhY2tDdXJzb3IsIG5ld1Byb3BzID8gKGN1cnJlbnQgJiAxKSB8IDIgOiBjdXJyZW50ICYgMSksXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NcbiAgICAgICAgKTtcbiAgICAgIGJ1YmJsZVByb3BlcnRpZXMod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSAyMjpcbiAgICBjYXNlIDIzOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcG9wU3VzcGVuc2VIYW5kbGVyKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgcG9wSGlkZGVuQ29udGV4dCgpLFxuICAgICAgICAobmV3UHJvcHMgPSBudWxsICE9PSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlKSxcbiAgICAgICAgbnVsbCAhPT0gY3VycmVudFxuICAgICAgICAgID8gKG51bGwgIT09IGN1cnJlbnQubWVtb2l6ZWRTdGF0ZSkgIT09IG5ld1Byb3BzICYmXG4gICAgICAgICAgICAod29ya0luUHJvZ3Jlc3MuZmxhZ3MgfD0gODE5MilcbiAgICAgICAgICA6IG5ld1Byb3BzICYmICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSA4MTkyKSxcbiAgICAgICAgbmV3UHJvcHNcbiAgICAgICAgICA/IDAgIT09IChyZW5kZXJMYW5lcyAmIDUzNjg3MDkxMikgJiZcbiAgICAgICAgICAgIDAgPT09ICh3b3JrSW5Qcm9ncmVzcy5mbGFncyAmIDEyOCkgJiZcbiAgICAgICAgICAgIChidWJibGVQcm9wZXJ0aWVzKHdvcmtJblByb2dyZXNzKSxcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzLnN1YnRyZWVGbGFncyAmIDYgJiYgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDgxOTIpKVxuICAgICAgICAgIDogYnViYmxlUHJvcGVydGllcyh3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgIChyZW5kZXJMYW5lcyA9IHdvcmtJblByb2dyZXNzLnVwZGF0ZVF1ZXVlKSxcbiAgICAgICAgbnVsbCAhPT0gcmVuZGVyTGFuZXMgJiZcbiAgICAgICAgICBzY2hlZHVsZVJldHJ5RWZmZWN0KHdvcmtJblByb2dyZXNzLCByZW5kZXJMYW5lcy5yZXRyeVF1ZXVlKSxcbiAgICAgICAgKHJlbmRlckxhbmVzID0gbnVsbCksXG4gICAgICAgIG51bGwgIT09IGN1cnJlbnQgJiZcbiAgICAgICAgICBudWxsICE9PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICBudWxsICE9PSBjdXJyZW50Lm1lbW9pemVkU3RhdGUuY2FjaGVQb29sICYmXG4gICAgICAgICAgKHJlbmRlckxhbmVzID0gY3VycmVudC5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbC5wb29sKSxcbiAgICAgICAgKG5ld1Byb3BzID0gbnVsbCksXG4gICAgICAgIG51bGwgIT09IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUgJiZcbiAgICAgICAgICBudWxsICE9PSB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlLmNhY2hlUG9vbCAmJlxuICAgICAgICAgIChuZXdQcm9wcyA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGUuY2FjaGVQb29sLnBvb2wpLFxuICAgICAgICBuZXdQcm9wcyAhPT0gcmVuZGVyTGFuZXMgJiYgKHdvcmtJblByb2dyZXNzLmZsYWdzIHw9IDIwNDgpLFxuICAgICAgICBudWxsICE9PSBjdXJyZW50ICYmIHBvcChyZXN1bWVkQ2FjaGUpLFxuICAgICAgICBudWxsXG4gICAgICApO1xuICAgIGNhc2UgMjQ6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAocmVuZGVyTGFuZXMgPSBudWxsKSxcbiAgICAgICAgbnVsbCAhPT0gY3VycmVudCAmJiAocmVuZGVyTGFuZXMgPSBjdXJyZW50Lm1lbW9pemVkU3RhdGUuY2FjaGUpLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzcy5tZW1vaXplZFN0YXRlLmNhY2hlICE9PSByZW5kZXJMYW5lcyAmJlxuICAgICAgICAgICh3b3JrSW5Qcm9ncmVzcy5mbGFncyB8PSAyMDQ4KSxcbiAgICAgICAgcG9wUHJvdmlkZXIoQ2FjaGVDb250ZXh0KSxcbiAgICAgICAgYnViYmxlUHJvcGVydGllcyh3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgIG51bGxcbiAgICAgICk7XG4gICAgY2FzZSAyNTpcbiAgICAgIHJldHVybiBudWxsO1xuICB9XG4gIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTU2LCB3b3JrSW5Qcm9ncmVzcy50YWcpKTtcbn1cbmZ1bmN0aW9uIHVud2luZFdvcmsoY3VycmVudCwgd29ya0luUHJvZ3Jlc3MpIHtcbiAgcG9wVHJlZUNvbnRleHQod29ya0luUHJvZ3Jlc3MpO1xuICBzd2l0Y2ggKHdvcmtJblByb2dyZXNzLnRhZykge1xuICAgIGNhc2UgMTpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIChjdXJyZW50ID0gd29ya0luUHJvZ3Jlc3MuZmxhZ3MpLFxuICAgICAgICBjdXJyZW50ICYgNjU1MzZcbiAgICAgICAgICA/ICgod29ya0luUHJvZ3Jlc3MuZmxhZ3MgPSAoY3VycmVudCAmIC02NTUzNykgfCAxMjgpLCB3b3JrSW5Qcm9ncmVzcylcbiAgICAgICAgICA6IG51bGxcbiAgICAgICk7XG4gICAgY2FzZSAzOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgcG9wUHJvdmlkZXIoQ2FjaGVDb250ZXh0KSxcbiAgICAgICAgcG9wSG9zdENvbnRhaW5lcigpLFxuICAgICAgICAoY3VycmVudCA9IHdvcmtJblByb2dyZXNzLmZsYWdzKSxcbiAgICAgICAgMCAhPT0gKGN1cnJlbnQgJiA2NTUzNikgJiYgMCA9PT0gKGN1cnJlbnQgJiAxMjgpXG4gICAgICAgICAgPyAoKHdvcmtJblByb2dyZXNzLmZsYWdzID0gKGN1cnJlbnQgJiAtNjU1MzcpIHwgMTI4KSwgd29ya0luUHJvZ3Jlc3MpXG4gICAgICAgICAgOiBudWxsXG4gICAgICApO1xuICAgIGNhc2UgMjY6XG4gICAgY2FzZSAyNzpcbiAgICBjYXNlIDU6XG4gICAgICByZXR1cm4gcG9wSG9zdENvbnRleHQod29ya0luUHJvZ3Jlc3MpLCBudWxsO1xuICAgIGNhc2UgMTM6XG4gICAgICBwb3BTdXNwZW5zZUhhbmRsZXIod29ya0luUHJvZ3Jlc3MpO1xuICAgICAgY3VycmVudCA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgICBpZiAobnVsbCAhPT0gY3VycmVudCAmJiBudWxsICE9PSBjdXJyZW50LmRlaHlkcmF0ZWQpIHtcbiAgICAgICAgaWYgKG51bGwgPT09IHdvcmtJblByb2dyZXNzLmFsdGVybmF0ZSlcbiAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDM0MCkpO1xuICAgICAgICByZXNldEh5ZHJhdGlvblN0YXRlKCk7XG4gICAgICB9XG4gICAgICBjdXJyZW50ID0gd29ya0luUHJvZ3Jlc3MuZmxhZ3M7XG4gICAgICByZXR1cm4gY3VycmVudCAmIDY1NTM2XG4gICAgICAgID8gKCh3b3JrSW5Qcm9ncmVzcy5mbGFncyA9IChjdXJyZW50ICYgLTY1NTM3KSB8IDEyOCksIHdvcmtJblByb2dyZXNzKVxuICAgICAgICA6IG51bGw7XG4gICAgY2FzZSAxOTpcbiAgICAgIHJldHVybiBwb3Aoc3VzcGVuc2VTdGFja0N1cnNvciksIG51bGw7XG4gICAgY2FzZSA0OlxuICAgICAgcmV0dXJuIHBvcEhvc3RDb250YWluZXIoKSwgbnVsbDtcbiAgICBjYXNlIDEwOlxuICAgICAgcmV0dXJuIHBvcFByb3ZpZGVyKHdvcmtJblByb2dyZXNzLnR5cGUpLCBudWxsO1xuICAgIGNhc2UgMjI6XG4gICAgY2FzZSAyMzpcbiAgICAgIHJldHVybiAoXG4gICAgICAgIHBvcFN1c3BlbnNlSGFuZGxlcih3b3JrSW5Qcm9ncmVzcyksXG4gICAgICAgIHBvcEhpZGRlbkNvbnRleHQoKSxcbiAgICAgICAgbnVsbCAhPT0gY3VycmVudCAmJiBwb3AocmVzdW1lZENhY2hlKSxcbiAgICAgICAgKGN1cnJlbnQgPSB3b3JrSW5Qcm9ncmVzcy5mbGFncyksXG4gICAgICAgIGN1cnJlbnQgJiA2NTUzNlxuICAgICAgICAgID8gKCh3b3JrSW5Qcm9ncmVzcy5mbGFncyA9IChjdXJyZW50ICYgLTY1NTM3KSB8IDEyOCksIHdvcmtJblByb2dyZXNzKVxuICAgICAgICAgIDogbnVsbFxuICAgICAgKTtcbiAgICBjYXNlIDI0OlxuICAgICAgcmV0dXJuIHBvcFByb3ZpZGVyKENhY2hlQ29udGV4dCksIG51bGw7XG4gICAgY2FzZSAyNTpcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGRlZmF1bHQ6XG4gICAgICByZXR1cm4gbnVsbDtcbiAgfVxufVxuZnVuY3Rpb24gdW53aW5kSW50ZXJydXB0ZWRXb3JrKGN1cnJlbnQsIGludGVycnVwdGVkV29yaykge1xuICBwb3BUcmVlQ29udGV4dChpbnRlcnJ1cHRlZFdvcmspO1xuICBzd2l0Y2ggKGludGVycnVwdGVkV29yay50YWcpIHtcbiAgICBjYXNlIDM6XG4gICAgICBwb3BQcm92aWRlcihDYWNoZUNvbnRleHQpO1xuICAgICAgcG9wSG9zdENvbnRhaW5lcigpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAyNjpcbiAgICBjYXNlIDI3OlxuICAgIGNhc2UgNTpcbiAgICAgIHBvcEhvc3RDb250ZXh0KGludGVycnVwdGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDQ6XG4gICAgICBwb3BIb3N0Q29udGFpbmVyKCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDEzOlxuICAgICAgcG9wU3VzcGVuc2VIYW5kbGVyKGludGVycnVwdGVkV29yayk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDE5OlxuICAgICAgcG9wKHN1c3BlbnNlU3RhY2tDdXJzb3IpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxMDpcbiAgICAgIHBvcFByb3ZpZGVyKGludGVycnVwdGVkV29yay50eXBlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgY2FzZSAyMzpcbiAgICAgIHBvcFN1c3BlbnNlSGFuZGxlcihpbnRlcnJ1cHRlZFdvcmspO1xuICAgICAgcG9wSGlkZGVuQ29udGV4dCgpO1xuICAgICAgbnVsbCAhPT0gY3VycmVudCAmJiBwb3AocmVzdW1lZENhY2hlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjQ6XG4gICAgICBwb3BQcm92aWRlcihDYWNoZUNvbnRleHQpO1xuICB9XG59XG52YXIgRGVmYXVsdEFzeW5jRGlzcGF0Y2hlciA9IHtcbiAgICBnZXRDYWNoZUZvclR5cGU6IGZ1bmN0aW9uIChyZXNvdXJjZVR5cGUpIHtcbiAgICAgIHZhciBjYWNoZSA9IHJlYWRDb250ZXh0KENhY2hlQ29udGV4dCksXG4gICAgICAgIGNhY2hlRm9yVHlwZSA9IGNhY2hlLmRhdGEuZ2V0KHJlc291cmNlVHlwZSk7XG4gICAgICB2b2lkIDAgPT09IGNhY2hlRm9yVHlwZSAmJlxuICAgICAgICAoKGNhY2hlRm9yVHlwZSA9IHJlc291cmNlVHlwZSgpKSxcbiAgICAgICAgY2FjaGUuZGF0YS5zZXQocmVzb3VyY2VUeXBlLCBjYWNoZUZvclR5cGUpKTtcbiAgICAgIHJldHVybiBjYWNoZUZvclR5cGU7XG4gICAgfVxuICB9LFxuICBQb3NzaWJseVdlYWtNYXAgPSBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBXZWFrTWFwID8gV2Vha01hcCA6IE1hcCxcbiAgZXhlY3V0aW9uQ29udGV4dCA9IDAsXG4gIHdvcmtJblByb2dyZXNzUm9vdCA9IG51bGwsXG4gIHdvcmtJblByb2dyZXNzID0gbnVsbCxcbiAgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgPSAwLFxuICB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDAsXG4gIHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSBudWxsLFxuICB3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3MgPSAhMSxcbiAgd29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmcgPSAhMSxcbiAgd29ya0luUHJvZ3Jlc3NSb290RGlkQXR0YWNoUGluZ0xpc3RlbmVyID0gITEsXG4gIGVudGFuZ2xlZFJlbmRlckxhbmVzID0gMCxcbiAgd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDAsXG4gIHdvcmtJblByb2dyZXNzUm9vdFNraXBwZWRMYW5lcyA9IDAsXG4gIHdvcmtJblByb2dyZXNzUm9vdEludGVybGVhdmVkVXBkYXRlZExhbmVzID0gMCxcbiAgd29ya0luUHJvZ3Jlc3NSb290UGluZ2VkTGFuZXMgPSAwLFxuICB3b3JrSW5Qcm9ncmVzc0RlZmVycmVkTGFuZSA9IDAsXG4gIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmV0cnlMYW5lcyA9IDAsXG4gIHdvcmtJblByb2dyZXNzUm9vdENvbmN1cnJlbnRFcnJvcnMgPSBudWxsLFxuICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZWNvdmVyYWJsZUVycm9ycyA9IG51bGwsXG4gIHdvcmtJblByb2dyZXNzUm9vdERpZEluY2x1ZGVSZWN1cnNpdmVSZW5kZXJVcGRhdGUgPSAhMSxcbiAgZ2xvYmFsTW9zdFJlY2VudEZhbGxiYWNrVGltZSA9IDAsXG4gIHdvcmtJblByb2dyZXNzUm9vdFJlbmRlclRhcmdldFRpbWUgPSBJbmZpbml0eSxcbiAgd29ya0luUHJvZ3Jlc3NUcmFuc2l0aW9ucyA9IG51bGwsXG4gIGxlZ2FjeUVycm9yQm91bmRhcmllc1RoYXRBbHJlYWR5RmFpbGVkID0gbnVsbCxcbiAgcm9vdERvZXNIYXZlUGFzc2l2ZUVmZmVjdHMgPSAhMSxcbiAgcm9vdFdpdGhQZW5kaW5nUGFzc2l2ZUVmZmVjdHMgPSBudWxsLFxuICBwZW5kaW5nUGFzc2l2ZUVmZmVjdHNMYW5lcyA9IDAsXG4gIHBlbmRpbmdQYXNzaXZlRWZmZWN0c1JlbWFpbmluZ0xhbmVzID0gMCxcbiAgcGVuZGluZ1Bhc3NpdmVUcmFuc2l0aW9ucyA9IG51bGwsXG4gIG5lc3RlZFVwZGF0ZUNvdW50ID0gMCxcbiAgcm9vdFdpdGhOZXN0ZWRVcGRhdGVzID0gbnVsbDtcbmZ1bmN0aW9uIHJlcXVlc3RVcGRhdGVMYW5lKCkge1xuICBpZiAoMCAhPT0gKGV4ZWN1dGlvbkNvbnRleHQgJiAyKSAmJiAwICE9PSB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcylcbiAgICByZXR1cm4gd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgJiAtd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXM7XG4gIGlmIChudWxsICE9PSBSZWFjdFNoYXJlZEludGVybmFscy5UKSB7XG4gICAgdmFyIGFjdGlvblNjb3BlTGFuZSA9IGN1cnJlbnRFbnRhbmdsZWRMYW5lO1xuICAgIHJldHVybiAwICE9PSBhY3Rpb25TY29wZUxhbmUgPyBhY3Rpb25TY29wZUxhbmUgOiByZXF1ZXN0VHJhbnNpdGlvbkxhbmUoKTtcbiAgfVxuICByZXR1cm4gcmVzb2x2ZVVwZGF0ZVByaW9yaXR5KCk7XG59XG5mdW5jdGlvbiByZXF1ZXN0RGVmZXJyZWRMYW5lKCkge1xuICAwID09PSB3b3JrSW5Qcm9ncmVzc0RlZmVycmVkTGFuZSAmJlxuICAgICh3b3JrSW5Qcm9ncmVzc0RlZmVycmVkTGFuZSA9XG4gICAgICAwID09PSAod29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgJiA1MzY4NzA5MTIpIHx8IGlzSHlkcmF0aW5nXG4gICAgICAgID8gY2xhaW1OZXh0VHJhbnNpdGlvbkxhbmUoKVxuICAgICAgICA6IDUzNjg3MDkxMik7XG4gIHZhciBzdXNwZW5zZUhhbmRsZXIgPSBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvci5jdXJyZW50O1xuICBudWxsICE9PSBzdXNwZW5zZUhhbmRsZXIgJiYgKHN1c3BlbnNlSGFuZGxlci5mbGFncyB8PSAzMik7XG4gIHJldHVybiB3b3JrSW5Qcm9ncmVzc0RlZmVycmVkTGFuZTtcbn1cbmZ1bmN0aW9uIHNjaGVkdWxlVXBkYXRlT25GaWJlcihyb290LCBmaWJlciwgbGFuZSkge1xuICBpZiAoXG4gICAgKHJvb3QgPT09IHdvcmtJblByb2dyZXNzUm9vdCAmJiAyID09PSB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbikgfHxcbiAgICBudWxsICE9PSByb290LmNhbmNlbFBlbmRpbmdDb21taXRcbiAgKVxuICAgIHByZXBhcmVGcmVzaFN0YWNrKHJvb3QsIDApLFxuICAgICAgbWFya1Jvb3RTdXNwZW5kZWQoXG4gICAgICAgIHJvb3QsXG4gICAgICAgIHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzc0RlZmVycmVkTGFuZSxcbiAgICAgICAgITFcbiAgICAgICk7XG4gIG1hcmtSb290VXBkYXRlZCQxKHJvb3QsIGxhbmUpO1xuICBpZiAoMCA9PT0gKGV4ZWN1dGlvbkNvbnRleHQgJiAyKSB8fCByb290ICE9PSB3b3JrSW5Qcm9ncmVzc1Jvb3QpXG4gICAgcm9vdCA9PT0gd29ya0luUHJvZ3Jlc3NSb290ICYmXG4gICAgICAoMCA9PT0gKGV4ZWN1dGlvbkNvbnRleHQgJiAyKSAmJlxuICAgICAgICAod29ya0luUHJvZ3Jlc3NSb290SW50ZXJsZWF2ZWRVcGRhdGVkTGFuZXMgfD0gbGFuZSksXG4gICAgICA0ID09PSB3b3JrSW5Qcm9ncmVzc1Jvb3RFeGl0U3RhdHVzICYmXG4gICAgICAgIG1hcmtSb290U3VzcGVuZGVkKFxuICAgICAgICAgIHJvb3QsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NEZWZlcnJlZExhbmUsXG4gICAgICAgICAgITFcbiAgICAgICAgKSksXG4gICAgICBlbnN1cmVSb290SXNTY2hlZHVsZWQocm9vdCk7XG59XG5mdW5jdGlvbiBwZXJmb3JtV29ya09uUm9vdChyb290JGpzY29tcCQwLCBsYW5lcywgZm9yY2VTeW5jKSB7XG4gIGlmICgwICE9PSAoZXhlY3V0aW9uQ29udGV4dCAmIDYpKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMyNykpO1xuICB2YXIgc2hvdWxkVGltZVNsaWNlID1cbiAgICAgICghZm9yY2VTeW5jICYmXG4gICAgICAgIDAgPT09IChsYW5lcyAmIDYwKSAmJlxuICAgICAgICAwID09PSAobGFuZXMgJiByb290JGpzY29tcCQwLmV4cGlyZWRMYW5lcykpIHx8XG4gICAgICBjaGVja0lmUm9vdElzUHJlcmVuZGVyaW5nKHJvb3QkanNjb21wJDAsIGxhbmVzKSxcbiAgICBleGl0U3RhdHVzID0gc2hvdWxkVGltZVNsaWNlXG4gICAgICA/IHJlbmRlclJvb3RDb25jdXJyZW50KHJvb3QkanNjb21wJDAsIGxhbmVzKVxuICAgICAgOiByZW5kZXJSb290U3luYyhyb290JGpzY29tcCQwLCBsYW5lcywgITApLFxuICAgIHJlbmRlcldhc0NvbmN1cnJlbnQgPSBzaG91bGRUaW1lU2xpY2U7XG4gIGRvIHtcbiAgICBpZiAoMCA9PT0gZXhpdFN0YXR1cykge1xuICAgICAgd29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmcgJiZcbiAgICAgICAgIXNob3VsZFRpbWVTbGljZSAmJlxuICAgICAgICBtYXJrUm9vdFN1c3BlbmRlZChyb290JGpzY29tcCQwLCBsYW5lcywgMCwgITEpO1xuICAgICAgYnJlYWs7XG4gICAgfSBlbHNlIGlmICg2ID09PSBleGl0U3RhdHVzKVxuICAgICAgbWFya1Jvb3RTdXNwZW5kZWQoXG4gICAgICAgIHJvb3QkanNjb21wJDAsXG4gICAgICAgIGxhbmVzLFxuICAgICAgICAwLFxuICAgICAgICAhd29ya0luUHJvZ3Jlc3NSb290RGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzXG4gICAgICApO1xuICAgIGVsc2Uge1xuICAgICAgZm9yY2VTeW5jID0gcm9vdCRqc2NvbXAkMC5jdXJyZW50LmFsdGVybmF0ZTtcbiAgICAgIGlmIChcbiAgICAgICAgcmVuZGVyV2FzQ29uY3VycmVudCAmJlxuICAgICAgICAhaXNSZW5kZXJDb25zaXN0ZW50V2l0aEV4dGVybmFsU3RvcmVzKGZvcmNlU3luYylcbiAgICAgICkge1xuICAgICAgICBleGl0U3RhdHVzID0gcmVuZGVyUm9vdFN5bmMocm9vdCRqc2NvbXAkMCwgbGFuZXMsICExKTtcbiAgICAgICAgcmVuZGVyV2FzQ29uY3VycmVudCA9ICExO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIGlmICgyID09PSBleGl0U3RhdHVzKSB7XG4gICAgICAgIHJlbmRlcldhc0NvbmN1cnJlbnQgPSBsYW5lcztcbiAgICAgICAgaWYgKHJvb3QkanNjb21wJDAuZXJyb3JSZWNvdmVyeURpc2FibGVkTGFuZXMgJiByZW5kZXJXYXNDb25jdXJyZW50KVxuICAgICAgICAgIHZhciBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSAwO1xuICAgICAgICBlbHNlXG4gICAgICAgICAgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IHJvb3QkanNjb21wJDAucGVuZGluZ0xhbmVzICYgLTUzNjg3MDkxMyksXG4gICAgICAgICAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID1cbiAgICAgICAgICAgICAgMCAhPT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICAgICAgICAgICAgICAgPyBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRcbiAgICAgICAgICAgICAgICA6IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmIDUzNjg3MDkxMlxuICAgICAgICAgICAgICAgICAgPyA1MzY4NzA5MTJcbiAgICAgICAgICAgICAgICAgIDogMCk7XG4gICAgICAgIGlmICgwICE9PSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpIHtcbiAgICAgICAgICBsYW5lcyA9IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdDtcbiAgICAgICAgICBhOiB7XG4gICAgICAgICAgICB2YXIgcm9vdCA9IHJvb3QkanNjb21wJDA7XG4gICAgICAgICAgICBleGl0U3RhdHVzID0gd29ya0luUHJvZ3Jlc3NSb290Q29uY3VycmVudEVycm9ycztcbiAgICAgICAgICAgIHZhciB3YXNSb290RGVoeWRyYXRlZCA9IHJvb3QuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZDtcbiAgICAgICAgICAgIHdhc1Jvb3REZWh5ZHJhdGVkICYmXG4gICAgICAgICAgICAgIChwcmVwYXJlRnJlc2hTdGFjayhyb290LCBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpLmZsYWdzIHw9IDI1Nik7XG4gICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPSByZW5kZXJSb290U3luYyhcbiAgICAgICAgICAgICAgcm9vdCxcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LFxuICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICgyICE9PSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQpIHtcbiAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdERpZEF0dGFjaFBpbmdMaXN0ZW5lciAmJlxuICAgICAgICAgICAgICAgICF3YXNSb290RGVoeWRyYXRlZFxuICAgICAgICAgICAgICApIHtcbiAgICAgICAgICAgICAgICByb290LmVycm9yUmVjb3ZlcnlEaXNhYmxlZExhbmVzIHw9IHJlbmRlcldhc0NvbmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290SW50ZXJsZWF2ZWRVcGRhdGVkTGFuZXMgfD1cbiAgICAgICAgICAgICAgICAgIHJlbmRlcldhc0NvbmN1cnJlbnQ7XG4gICAgICAgICAgICAgICAgZXhpdFN0YXR1cyA9IDQ7XG4gICAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZW5kZXJXYXNDb25jdXJyZW50ID0gd29ya0luUHJvZ3Jlc3NSb290UmVjb3ZlcmFibGVFcnJvcnM7XG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdFJlY292ZXJhYmxlRXJyb3JzID0gZXhpdFN0YXR1cztcbiAgICAgICAgICAgICAgbnVsbCAhPT0gcmVuZGVyV2FzQ29uY3VycmVudCAmJlxuICAgICAgICAgICAgICAgIHF1ZXVlUmVjb3ZlcmFibGVFcnJvcnMocmVuZGVyV2FzQ29uY3VycmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBleGl0U3RhdHVzID0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgICByZW5kZXJXYXNDb25jdXJyZW50ID0gITE7XG4gICAgICAgICAgaWYgKDIgIT09IGV4aXRTdGF0dXMpIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoMSA9PT0gZXhpdFN0YXR1cykge1xuICAgICAgICBwcmVwYXJlRnJlc2hTdGFjayhyb290JGpzY29tcCQwLCAwKTtcbiAgICAgICAgbWFya1Jvb3RTdXNwZW5kZWQocm9vdCRqc2NvbXAkMCwgbGFuZXMsIDAsICEwKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBhOiB7XG4gICAgICAgIHNob3VsZFRpbWVTbGljZSA9IHJvb3QkanNjb21wJDA7XG4gICAgICAgIHN3aXRjaCAoZXhpdFN0YXR1cykge1xuICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDM0NSkpO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIGlmICgobGFuZXMgJiA0MTk0MTc2KSA9PT0gbGFuZXMpIHtcbiAgICAgICAgICAgICAgbWFya1Jvb3RTdXNwZW5kZWQoXG4gICAgICAgICAgICAgICAgc2hvdWxkVGltZVNsaWNlLFxuICAgICAgICAgICAgICAgIGxhbmVzLFxuICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lLFxuICAgICAgICAgICAgICAgICF3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3NcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdFJlY292ZXJhYmxlRXJyb3JzID0gbnVsbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMzpcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMjkpKTtcbiAgICAgICAgfVxuICAgICAgICBzaG91bGRUaW1lU2xpY2UuZmluaXNoZWRXb3JrID0gZm9yY2VTeW5jO1xuICAgICAgICBzaG91bGRUaW1lU2xpY2UuZmluaXNoZWRMYW5lcyA9IGxhbmVzO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKGxhbmVzICYgNjI5MTQ1NjApID09PSBsYW5lcyAmJlxuICAgICAgICAgICgocmVuZGVyV2FzQ29uY3VycmVudCA9IGdsb2JhbE1vc3RSZWNlbnRGYWxsYmFja1RpbWUgKyAzMDAgLSBub3coKSksXG4gICAgICAgICAgMTAgPCByZW5kZXJXYXNDb25jdXJyZW50KVxuICAgICAgICApIHtcbiAgICAgICAgICBtYXJrUm9vdFN1c3BlbmRlZChcbiAgICAgICAgICAgIHNob3VsZFRpbWVTbGljZSxcbiAgICAgICAgICAgIGxhbmVzLFxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NEZWZlcnJlZExhbmUsXG4gICAgICAgICAgICAhd29ya0luUHJvZ3Jlc3NSb290RGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzXG4gICAgICAgICAgKTtcbiAgICAgICAgICBpZiAoMCAhPT0gZ2V0TmV4dExhbmVzKHNob3VsZFRpbWVTbGljZSwgMCkpIGJyZWFrIGE7XG4gICAgICAgICAgc2hvdWxkVGltZVNsaWNlLnRpbWVvdXRIYW5kbGUgPSBzY2hlZHVsZVRpbWVvdXQoXG4gICAgICAgICAgICBjb21taXRSb290V2hlblJlYWR5LmJpbmQoXG4gICAgICAgICAgICAgIG51bGwsXG4gICAgICAgICAgICAgIHNob3VsZFRpbWVTbGljZSxcbiAgICAgICAgICAgICAgZm9yY2VTeW5jLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZWNvdmVyYWJsZUVycm9ycyxcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NUcmFuc2l0aW9ucyxcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290RGlkSW5jbHVkZVJlY3Vyc2l2ZVJlbmRlclVwZGF0ZSxcbiAgICAgICAgICAgICAgbGFuZXMsXG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RJbnRlcmxlYXZlZFVwZGF0ZWRMYW5lcyxcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZXRyeUxhbmVzLFxuICAgICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3MsXG4gICAgICAgICAgICAgIDIsXG4gICAgICAgICAgICAgIC0wLFxuICAgICAgICAgICAgICAwXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgcmVuZGVyV2FzQ29uY3VycmVudFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBjb21taXRSb290V2hlblJlYWR5KFxuICAgICAgICAgIHNob3VsZFRpbWVTbGljZSxcbiAgICAgICAgICBmb3JjZVN5bmMsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290UmVjb3ZlcmFibGVFcnJvcnMsXG4gICAgICAgICAgd29ya0luUHJvZ3Jlc3NUcmFuc2l0aW9ucyxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3REaWRJbmNsdWRlUmVjdXJzaXZlUmVuZGVyVXBkYXRlLFxuICAgICAgICAgIGxhbmVzLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdEludGVybGVhdmVkVXBkYXRlZExhbmVzLFxuICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmV0cnlMYW5lcyxcbiAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3MsXG4gICAgICAgICAgMCxcbiAgICAgICAgICAtMCxcbiAgICAgICAgICAwXG4gICAgICAgICk7XG4gICAgICB9XG4gICAgfVxuICAgIGJyZWFrO1xuICB9IHdoaWxlICgxKTtcbiAgZW5zdXJlUm9vdElzU2NoZWR1bGVkKHJvb3QkanNjb21wJDApO1xufVxuZnVuY3Rpb24gcXVldWVSZWNvdmVyYWJsZUVycm9ycyhlcnJvcnMpIHtcbiAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3NSb290UmVjb3ZlcmFibGVFcnJvcnNcbiAgICA/ICh3b3JrSW5Qcm9ncmVzc1Jvb3RSZWNvdmVyYWJsZUVycm9ycyA9IGVycm9ycylcbiAgICA6IHdvcmtJblByb2dyZXNzUm9vdFJlY292ZXJhYmxlRXJyb3JzLnB1c2guYXBwbHkoXG4gICAgICAgIHdvcmtJblByb2dyZXNzUm9vdFJlY292ZXJhYmxlRXJyb3JzLFxuICAgICAgICBlcnJvcnNcbiAgICAgICk7XG59XG5mdW5jdGlvbiBjb21taXRSb290V2hlblJlYWR5KFxuICByb290LFxuICBmaW5pc2hlZFdvcmssXG4gIHJlY292ZXJhYmxlRXJyb3JzLFxuICB0cmFuc2l0aW9ucyxcbiAgZGlkSW5jbHVkZVJlbmRlclBoYXNlVXBkYXRlLFxuICBsYW5lcyxcbiAgc3Bhd25lZExhbmUsXG4gIHVwZGF0ZWRMYW5lcyxcbiAgc3VzcGVuZGVkUmV0cnlMYW5lcyxcbiAgZGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzLFxuICBzdXNwZW5kZWRDb21taXRSZWFzb24sXG4gIGNvbXBsZXRlZFJlbmRlclN0YXJ0VGltZSxcbiAgY29tcGxldGVkUmVuZGVyRW5kVGltZVxuKSB7XG4gIHZhciBzdWJ0cmVlRmxhZ3MgPSBmaW5pc2hlZFdvcmsuc3VidHJlZUZsYWdzO1xuICBpZiAoc3VidHJlZUZsYWdzICYgODE5MiB8fCAxNjc4NTQwOCA9PT0gKHN1YnRyZWVGbGFncyAmIDE2Nzg1NDA4KSlcbiAgICBpZiAoXG4gICAgICAoKHN1c3BlbmRlZFN0YXRlID0geyBzdHlsZXNoZWV0czogbnVsbCwgY291bnQ6IDAsIHVuc3VzcGVuZDogbm9vcCB9KSxcbiAgICAgIGFjY3VtdWxhdGVTdXNwZW5zZXlDb21taXRPbkZpYmVyKGZpbmlzaGVkV29yayksXG4gICAgICAoZmluaXNoZWRXb3JrID0gd2FpdEZvckNvbW1pdFRvQmVSZWFkeSgpKSxcbiAgICAgIG51bGwgIT09IGZpbmlzaGVkV29yaylcbiAgICApIHtcbiAgICAgIHJvb3QuY2FuY2VsUGVuZGluZ0NvbW1pdCA9IGZpbmlzaGVkV29yayhcbiAgICAgICAgY29tbWl0Um9vdC5iaW5kKFxuICAgICAgICAgIG51bGwsXG4gICAgICAgICAgcm9vdCxcbiAgICAgICAgICByZWNvdmVyYWJsZUVycm9ycyxcbiAgICAgICAgICB0cmFuc2l0aW9ucyxcbiAgICAgICAgICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gICAgICAgICAgc3Bhd25lZExhbmUsXG4gICAgICAgICAgdXBkYXRlZExhbmVzLFxuICAgICAgICAgIHN1c3BlbmRlZFJldHJ5TGFuZXMsXG4gICAgICAgICAgMSxcbiAgICAgICAgICBjb21wbGV0ZWRSZW5kZXJTdGFydFRpbWUsXG4gICAgICAgICAgY29tcGxldGVkUmVuZGVyRW5kVGltZVxuICAgICAgICApXG4gICAgICApO1xuICAgICAgbWFya1Jvb3RTdXNwZW5kZWQocm9vdCwgbGFuZXMsIHNwYXduZWRMYW5lLCAhZGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIGNvbW1pdFJvb3QoXG4gICAgcm9vdCxcbiAgICByZWNvdmVyYWJsZUVycm9ycyxcbiAgICB0cmFuc2l0aW9ucyxcbiAgICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gICAgc3Bhd25lZExhbmUsXG4gICAgdXBkYXRlZExhbmVzLFxuICAgIHN1c3BlbmRlZFJldHJ5TGFuZXMsXG4gICAgc3VzcGVuZGVkQ29tbWl0UmVhc29uLFxuICAgIGNvbXBsZXRlZFJlbmRlclN0YXJ0VGltZSxcbiAgICBjb21wbGV0ZWRSZW5kZXJFbmRUaW1lXG4gICk7XG59XG5mdW5jdGlvbiBpc1JlbmRlckNvbnNpc3RlbnRXaXRoRXh0ZXJuYWxTdG9yZXMoZmluaXNoZWRXb3JrKSB7XG4gIGZvciAodmFyIG5vZGUgPSBmaW5pc2hlZFdvcms7IDsgKSB7XG4gICAgdmFyIHRhZyA9IG5vZGUudGFnO1xuICAgIGlmIChcbiAgICAgICgwID09PSB0YWcgfHwgMTEgPT09IHRhZyB8fCAxNSA9PT0gdGFnKSAmJlxuICAgICAgbm9kZS5mbGFncyAmIDE2Mzg0ICYmXG4gICAgICAoKHRhZyA9IG5vZGUudXBkYXRlUXVldWUpLFxuICAgICAgbnVsbCAhPT0gdGFnICYmICgodGFnID0gdGFnLnN0b3JlcyksIG51bGwgIT09IHRhZykpXG4gICAgKVxuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0YWcubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGNoZWNrID0gdGFnW2ldLFxuICAgICAgICAgIGdldFNuYXBzaG90ID0gY2hlY2suZ2V0U25hcHNob3Q7XG4gICAgICAgIGNoZWNrID0gY2hlY2sudmFsdWU7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaWYgKCFvYmplY3RJcyhnZXRTbmFwc2hvdCgpLCBjaGVjaykpIHJldHVybiAhMTtcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICByZXR1cm4gITE7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB0YWcgPSBub2RlLmNoaWxkO1xuICAgIGlmIChub2RlLnN1YnRyZWVGbGFncyAmIDE2Mzg0ICYmIG51bGwgIT09IHRhZylcbiAgICAgICh0YWcucmV0dXJuID0gbm9kZSksIChub2RlID0gdGFnKTtcbiAgICBlbHNlIHtcbiAgICAgIGlmIChub2RlID09PSBmaW5pc2hlZFdvcmspIGJyZWFrO1xuICAgICAgZm9yICg7IG51bGwgPT09IG5vZGUuc2libGluZzsgKSB7XG4gICAgICAgIGlmIChudWxsID09PSBub2RlLnJldHVybiB8fCBub2RlLnJldHVybiA9PT0gZmluaXNoZWRXb3JrKSByZXR1cm4gITA7XG4gICAgICAgIG5vZGUgPSBub2RlLnJldHVybjtcbiAgICAgIH1cbiAgICAgIG5vZGUuc2libGluZy5yZXR1cm4gPSBub2RlLnJldHVybjtcbiAgICAgIG5vZGUgPSBub2RlLnNpYmxpbmc7XG4gICAgfVxuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIG1hcmtSb290U3VzcGVuZGVkKFxuICByb290LFxuICBzdXNwZW5kZWRMYW5lcyxcbiAgc3Bhd25lZExhbmUsXG4gIGRpZEF0dGVtcHRFbnRpcmVUcmVlXG4pIHtcbiAgc3VzcGVuZGVkTGFuZXMgJj0gfndvcmtJblByb2dyZXNzUm9vdFBpbmdlZExhbmVzO1xuICBzdXNwZW5kZWRMYW5lcyAmPSB+d29ya0luUHJvZ3Jlc3NSb290SW50ZXJsZWF2ZWRVcGRhdGVkTGFuZXM7XG4gIHJvb3Quc3VzcGVuZGVkTGFuZXMgfD0gc3VzcGVuZGVkTGFuZXM7XG4gIHJvb3QucGluZ2VkTGFuZXMgJj0gfnN1c3BlbmRlZExhbmVzO1xuICBkaWRBdHRlbXB0RW50aXJlVHJlZSAmJiAocm9vdC53YXJtTGFuZXMgfD0gc3VzcGVuZGVkTGFuZXMpO1xuICBkaWRBdHRlbXB0RW50aXJlVHJlZSA9IHJvb3QuZXhwaXJhdGlvblRpbWVzO1xuICBmb3IgKHZhciBsYW5lcyA9IHN1c3BlbmRlZExhbmVzOyAwIDwgbGFuZXM7ICkge1xuICAgIHZhciBpbmRleCQ2ID0gMzEgLSBjbHozMihsYW5lcyksXG4gICAgICBsYW5lID0gMSA8PCBpbmRleCQ2O1xuICAgIGRpZEF0dGVtcHRFbnRpcmVUcmVlW2luZGV4JDZdID0gLTE7XG4gICAgbGFuZXMgJj0gfmxhbmU7XG4gIH1cbiAgMCAhPT0gc3Bhd25lZExhbmUgJiZcbiAgICBtYXJrU3Bhd25lZERlZmVycmVkTGFuZShyb290LCBzcGF3bmVkTGFuZSwgc3VzcGVuZGVkTGFuZXMpO1xufVxuZnVuY3Rpb24gZmx1c2hTeW5jV29yayQxKCkge1xuICByZXR1cm4gMCA9PT0gKGV4ZWN1dGlvbkNvbnRleHQgJiA2KVxuICAgID8gKGZsdXNoU3luY1dvcmtBY3Jvc3NSb290c19pbXBsKDAsICExKSwgITEpXG4gICAgOiAhMDtcbn1cbmZ1bmN0aW9uIHJlc2V0V29ya0luUHJvZ3Jlc3NTdGFjaygpIHtcbiAgaWYgKG51bGwgIT09IHdvcmtJblByb2dyZXNzKSB7XG4gICAgaWYgKDAgPT09IHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uKVxuICAgICAgdmFyIGludGVycnVwdGVkV29yayA9IHdvcmtJblByb2dyZXNzLnJldHVybjtcbiAgICBlbHNlXG4gICAgICAoaW50ZXJydXB0ZWRXb3JrID0gd29ya0luUHJvZ3Jlc3MpLFxuICAgICAgICAobGFzdENvbnRleHREZXBlbmRlbmN5ID0gY3VycmVudGx5UmVuZGVyaW5nRmliZXIgPSBudWxsKSxcbiAgICAgICAgcmVzZXRIb29rc09uVW53aW5kKGludGVycnVwdGVkV29yayksXG4gICAgICAgICh0aGVuYWJsZVN0YXRlJDEgPSBudWxsKSxcbiAgICAgICAgKHRoZW5hYmxlSW5kZXhDb3VudGVyJDEgPSAwKSxcbiAgICAgICAgKGludGVycnVwdGVkV29yayA9IHdvcmtJblByb2dyZXNzKTtcbiAgICBmb3IgKDsgbnVsbCAhPT0gaW50ZXJydXB0ZWRXb3JrOyApXG4gICAgICB1bndpbmRJbnRlcnJ1cHRlZFdvcmsoaW50ZXJydXB0ZWRXb3JrLmFsdGVybmF0ZSwgaW50ZXJydXB0ZWRXb3JrKSxcbiAgICAgICAgKGludGVycnVwdGVkV29yayA9IGludGVycnVwdGVkV29yay5yZXR1cm4pO1xuICAgIHdvcmtJblByb2dyZXNzID0gbnVsbDtcbiAgfVxufVxuZnVuY3Rpb24gcHJlcGFyZUZyZXNoU3RhY2socm9vdCwgbGFuZXMpIHtcbiAgcm9vdC5maW5pc2hlZFdvcmsgPSBudWxsO1xuICByb290LmZpbmlzaGVkTGFuZXMgPSAwO1xuICB2YXIgdGltZW91dEhhbmRsZSA9IHJvb3QudGltZW91dEhhbmRsZTtcbiAgLTEgIT09IHRpbWVvdXRIYW5kbGUgJiZcbiAgICAoKHJvb3QudGltZW91dEhhbmRsZSA9IC0xKSwgY2FuY2VsVGltZW91dCh0aW1lb3V0SGFuZGxlKSk7XG4gIHRpbWVvdXRIYW5kbGUgPSByb290LmNhbmNlbFBlbmRpbmdDb21taXQ7XG4gIG51bGwgIT09IHRpbWVvdXRIYW5kbGUgJiZcbiAgICAoKHJvb3QuY2FuY2VsUGVuZGluZ0NvbW1pdCA9IG51bGwpLCB0aW1lb3V0SGFuZGxlKCkpO1xuICByZXNldFdvcmtJblByb2dyZXNzU3RhY2soKTtcbiAgd29ya0luUHJvZ3Jlc3NSb290ID0gcm9vdDtcbiAgd29ya0luUHJvZ3Jlc3MgPSB0aW1lb3V0SGFuZGxlID0gY3JlYXRlV29ya0luUHJvZ3Jlc3Mocm9vdC5jdXJyZW50LCBudWxsKTtcbiAgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgPSBsYW5lcztcbiAgd29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPSAwO1xuICB3b3JrSW5Qcm9ncmVzc1Rocm93blZhbHVlID0gbnVsbDtcbiAgd29ya0luUHJvZ3Jlc3NSb290RGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzID0gITE7XG4gIHdvcmtJblByb2dyZXNzUm9vdElzUHJlcmVuZGVyaW5nID0gY2hlY2tJZlJvb3RJc1ByZXJlbmRlcmluZyhyb290LCBsYW5lcyk7XG4gIHdvcmtJblByb2dyZXNzUm9vdERpZEF0dGFjaFBpbmdMaXN0ZW5lciA9ICExO1xuICB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJldHJ5TGFuZXMgPVxuICAgIHdvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lID1cbiAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RQaW5nZWRMYW5lcyA9XG4gICAgd29ya0luUHJvZ3Jlc3NSb290SW50ZXJsZWF2ZWRVcGRhdGVkTGFuZXMgPVxuICAgIHdvcmtJblByb2dyZXNzUm9vdFNraXBwZWRMYW5lcyA9XG4gICAgd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9XG4gICAgICAwO1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZWNvdmVyYWJsZUVycm9ycyA9IHdvcmtJblByb2dyZXNzUm9vdENvbmN1cnJlbnRFcnJvcnMgPVxuICAgIG51bGw7XG4gIHdvcmtJblByb2dyZXNzUm9vdERpZEluY2x1ZGVSZWN1cnNpdmVSZW5kZXJVcGRhdGUgPSAhMTtcbiAgMCAhPT0gKGxhbmVzICYgOCkgJiYgKGxhbmVzIHw9IGxhbmVzICYgMzIpO1xuICB2YXIgYWxsRW50YW5nbGVkTGFuZXMgPSByb290LmVudGFuZ2xlZExhbmVzO1xuICBpZiAoMCAhPT0gYWxsRW50YW5nbGVkTGFuZXMpXG4gICAgZm9yIChcbiAgICAgIHJvb3QgPSByb290LmVudGFuZ2xlbWVudHMsIGFsbEVudGFuZ2xlZExhbmVzICY9IGxhbmVzO1xuICAgICAgMCA8IGFsbEVudGFuZ2xlZExhbmVzO1xuXG4gICAgKSB7XG4gICAgICB2YXIgaW5kZXgkNCA9IDMxIC0gY2x6MzIoYWxsRW50YW5nbGVkTGFuZXMpLFxuICAgICAgICBsYW5lID0gMSA8PCBpbmRleCQ0O1xuICAgICAgbGFuZXMgfD0gcm9vdFtpbmRleCQ0XTtcbiAgICAgIGFsbEVudGFuZ2xlZExhbmVzICY9IH5sYW5lO1xuICAgIH1cbiAgZW50YW5nbGVkUmVuZGVyTGFuZXMgPSBsYW5lcztcbiAgZmluaXNoUXVldWVpbmdDb25jdXJyZW50VXBkYXRlcygpO1xuICByZXR1cm4gdGltZW91dEhhbmRsZTtcbn1cbmZ1bmN0aW9uIGhhbmRsZVRocm93KHJvb3QsIHRocm93blZhbHVlKSB7XG4gIGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEgPSBudWxsO1xuICBSZWFjdFNoYXJlZEludGVybmFscy5IID0gQ29udGV4dE9ubHlEaXNwYXRjaGVyO1xuICB0aHJvd25WYWx1ZSA9PT0gU3VzcGVuc2VFeGNlcHRpb25cbiAgICA/ICgodGhyb3duVmFsdWUgPSBnZXRTdXNwZW5kZWRUaGVuYWJsZSgpKSxcbiAgICAgICh3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDMpKVxuICAgIDogdGhyb3duVmFsdWUgPT09IFN1c3BlbnNleUNvbW1pdEV4Y2VwdGlvblxuICAgICAgPyAoKHRocm93blZhbHVlID0gZ2V0U3VzcGVuZGVkVGhlbmFibGUoKSksXG4gICAgICAgICh3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDQpKVxuICAgICAgOiAod29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPVxuICAgICAgICAgIHRocm93blZhbHVlID09PSBTZWxlY3RpdmVIeWRyYXRpb25FeGNlcHRpb25cbiAgICAgICAgICAgID8gOFxuICAgICAgICAgICAgOiBudWxsICE9PSB0aHJvd25WYWx1ZSAmJlxuICAgICAgICAgICAgICAgIFwib2JqZWN0XCIgPT09IHR5cGVvZiB0aHJvd25WYWx1ZSAmJlxuICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHRocm93blZhbHVlLnRoZW5cbiAgICAgICAgICAgICAgPyA2XG4gICAgICAgICAgICAgIDogMSk7XG4gIHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSB0aHJvd25WYWx1ZTtcbiAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3MgJiZcbiAgICAoKHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgPSAxKSxcbiAgICBsb2dVbmNhdWdodEVycm9yKFxuICAgICAgcm9vdCxcbiAgICAgIGNyZWF0ZUNhcHR1cmVkVmFsdWVBdEZpYmVyKHRocm93blZhbHVlLCByb290LmN1cnJlbnQpXG4gICAgKSk7XG59XG5mdW5jdGlvbiBwdXNoRGlzcGF0Y2hlcigpIHtcbiAgdmFyIHByZXZEaXNwYXRjaGVyID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuSDtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IENvbnRleHRPbmx5RGlzcGF0Y2hlcjtcbiAgcmV0dXJuIG51bGwgPT09IHByZXZEaXNwYXRjaGVyID8gQ29udGV4dE9ubHlEaXNwYXRjaGVyIDogcHJldkRpc3BhdGNoZXI7XG59XG5mdW5jdGlvbiBwdXNoQXN5bmNEaXNwYXRjaGVyKCkge1xuICB2YXIgcHJldkFzeW5jRGlzcGF0Y2hlciA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLkE7XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkEgPSBEZWZhdWx0QXN5bmNEaXNwYXRjaGVyO1xuICByZXR1cm4gcHJldkFzeW5jRGlzcGF0Y2hlcjtcbn1cbmZ1bmN0aW9uIHJlbmRlckRpZFN1c3BlbmREZWxheUlmUG9zc2libGUoKSB7XG4gIHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgPSA0O1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3MgfHxcbiAgICAoKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICYgNDE5NDE3NikgIT09XG4gICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmJlxuICAgICAgbnVsbCAhPT0gc3VzcGVuc2VIYW5kbGVyU3RhY2tDdXJzb3IuY3VycmVudCkgfHxcbiAgICAod29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmcgPSAhMCk7XG4gICgwID09PSAod29ya0luUHJvZ3Jlc3NSb290U2tpcHBlZExhbmVzICYgMTM0MjE3NzI3KSAmJlxuICAgIDAgPT09ICh3b3JrSW5Qcm9ncmVzc1Jvb3RJbnRlcmxlYXZlZFVwZGF0ZWRMYW5lcyAmIDEzNDIxNzcyNykpIHx8XG4gICAgbnVsbCA9PT0gd29ya0luUHJvZ3Jlc3NSb290IHx8XG4gICAgbWFya1Jvb3RTdXNwZW5kZWQoXG4gICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3QsXG4gICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyxcbiAgICAgIHdvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lLFxuICAgICAgITFcbiAgICApO1xufVxuZnVuY3Rpb24gcmVuZGVyUm9vdFN5bmMocm9vdCwgbGFuZXMsIHNob3VsZFlpZWxkRm9yUHJlcmVuZGVyaW5nKSB7XG4gIHZhciBwcmV2RXhlY3V0aW9uQ29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQ7XG4gIGV4ZWN1dGlvbkNvbnRleHQgfD0gMjtcbiAgdmFyIHByZXZEaXNwYXRjaGVyID0gcHVzaERpc3BhdGNoZXIoKSxcbiAgICBwcmV2QXN5bmNEaXNwYXRjaGVyID0gcHVzaEFzeW5jRGlzcGF0Y2hlcigpO1xuICBpZiAod29ya0luUHJvZ3Jlc3NSb290ICE9PSByb290IHx8IHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICE9PSBsYW5lcylcbiAgICAod29ya0luUHJvZ3Jlc3NUcmFuc2l0aW9ucyA9IG51bGwpLCBwcmVwYXJlRnJlc2hTdGFjayhyb290LCBsYW5lcyk7XG4gIGxhbmVzID0gITE7XG4gIHZhciBleGl0U3RhdHVzID0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cztcbiAgYTogZG9cbiAgICB0cnkge1xuICAgICAgaWYgKDAgIT09IHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uICYmIG51bGwgIT09IHdvcmtJblByb2dyZXNzKSB7XG4gICAgICAgIHZhciB1bml0T2ZXb3JrID0gd29ya0luUHJvZ3Jlc3MsXG4gICAgICAgICAgdGhyb3duVmFsdWUgPSB3b3JrSW5Qcm9ncmVzc1Rocm93blZhbHVlO1xuICAgICAgICBzd2l0Y2ggKHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uKSB7XG4gICAgICAgICAgY2FzZSA4OlxuICAgICAgICAgICAgcmVzZXRXb3JrSW5Qcm9ncmVzc1N0YWNrKCk7XG4gICAgICAgICAgICBleGl0U3RhdHVzID0gNjtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICBjYXNlIDY6XG4gICAgICAgICAgICBudWxsID09PSBzdXNwZW5zZUhhbmRsZXJTdGFja0N1cnNvci5jdXJyZW50ICYmIChsYW5lcyA9ICEwKTtcbiAgICAgICAgICAgIHZhciByZWFzb24gPSB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbjtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uID0gMDtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhyb3dBbmRVbndpbmRXb3JrTG9vcChyb290LCB1bml0T2ZXb3JrLCB0aHJvd25WYWx1ZSwgcmVhc29uKTtcbiAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgc2hvdWxkWWllbGRGb3JQcmVyZW5kZXJpbmcgJiZcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmdcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICBleGl0U3RhdHVzID0gMDtcbiAgICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAocmVhc29uID0gd29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24pLFxuICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPSAwKSxcbiAgICAgICAgICAgICAgKHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSBudWxsKSxcbiAgICAgICAgICAgICAgdGhyb3dBbmRVbndpbmRXb3JrTG9vcChyb290LCB1bml0T2ZXb3JrLCB0aHJvd25WYWx1ZSwgcmVhc29uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd29ya0xvb3BTeW5jKCk7XG4gICAgICBleGl0U3RhdHVzID0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cztcbiAgICAgIGJyZWFrO1xuICAgIH0gY2F0Y2ggKHRocm93blZhbHVlJDE2NCkge1xuICAgICAgaGFuZGxlVGhyb3cocm9vdCwgdGhyb3duVmFsdWUkMTY0KTtcbiAgICB9XG4gIHdoaWxlICgxKTtcbiAgbGFuZXMgJiYgcm9vdC5zaGVsbFN1c3BlbmRDb3VudGVyKys7XG4gIGxhc3RDb250ZXh0RGVwZW5kZW5jeSA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyID0gbnVsbDtcbiAgZXhlY3V0aW9uQ29udGV4dCA9IHByZXZFeGVjdXRpb25Db250ZXh0O1xuICBSZWFjdFNoYXJlZEludGVybmFscy5IID0gcHJldkRpc3BhdGNoZXI7XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLkEgPSBwcmV2QXN5bmNEaXNwYXRjaGVyO1xuICBudWxsID09PSB3b3JrSW5Qcm9ncmVzcyAmJlxuICAgICgod29ya0luUHJvZ3Jlc3NSb290ID0gbnVsbCksXG4gICAgKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzID0gMCksXG4gICAgZmluaXNoUXVldWVpbmdDb25jdXJyZW50VXBkYXRlcygpKTtcbiAgcmV0dXJuIGV4aXRTdGF0dXM7XG59XG5mdW5jdGlvbiB3b3JrTG9vcFN5bmMoKSB7XG4gIGZvciAoOyBudWxsICE9PSB3b3JrSW5Qcm9ncmVzczsgKSBwZXJmb3JtVW5pdE9mV29yayh3b3JrSW5Qcm9ncmVzcyk7XG59XG5mdW5jdGlvbiByZW5kZXJSb290Q29uY3VycmVudChyb290LCBsYW5lcykge1xuICB2YXIgcHJldkV4ZWN1dGlvbkNvbnRleHQgPSBleGVjdXRpb25Db250ZXh0O1xuICBleGVjdXRpb25Db250ZXh0IHw9IDI7XG4gIHZhciBwcmV2RGlzcGF0Y2hlciA9IHB1c2hEaXNwYXRjaGVyKCksXG4gICAgcHJldkFzeW5jRGlzcGF0Y2hlciA9IHB1c2hBc3luY0Rpc3BhdGNoZXIoKTtcbiAgd29ya0luUHJvZ3Jlc3NSb290ICE9PSByb290IHx8IHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICE9PSBsYW5lc1xuICAgID8gKCh3b3JrSW5Qcm9ncmVzc1RyYW5zaXRpb25zID0gbnVsbCksXG4gICAgICAod29ya0luUHJvZ3Jlc3NSb290UmVuZGVyVGFyZ2V0VGltZSA9IG5vdygpICsgNTAwKSxcbiAgICAgIHByZXBhcmVGcmVzaFN0YWNrKHJvb3QsIGxhbmVzKSlcbiAgICA6ICh3b3JrSW5Qcm9ncmVzc1Jvb3RJc1ByZXJlbmRlcmluZyA9IGNoZWNrSWZSb290SXNQcmVyZW5kZXJpbmcoXG4gICAgICAgIHJvb3QsXG4gICAgICAgIGxhbmVzXG4gICAgICApKTtcbiAgYTogZG9cbiAgICB0cnkge1xuICAgICAgaWYgKDAgIT09IHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uICYmIG51bGwgIT09IHdvcmtJblByb2dyZXNzKSB7XG4gICAgICAgIGxhbmVzID0gd29ya0luUHJvZ3Jlc3M7XG4gICAgICAgIHZhciB0aHJvd25WYWx1ZSA9IHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWU7XG4gICAgICAgIGI6IHN3aXRjaCAod29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24pIHtcbiAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDA7XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1Rocm93blZhbHVlID0gbnVsbDtcbiAgICAgICAgICAgIHRocm93QW5kVW53aW5kV29ya0xvb3Aocm9vdCwgbGFuZXMsIHRocm93blZhbHVlLCAxKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGlmIChpc1RoZW5hYmxlUmVzb2x2ZWQodGhyb3duVmFsdWUpKSB7XG4gICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uID0gMDtcbiAgICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NUaHJvd25WYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICAgIHJlcGxheVN1c3BlbmRlZFVuaXRPZldvcmsobGFuZXMpO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGxhbmVzID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAyID09PSB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiAmJlxuICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdCA9PT0gcm9vdCAmJlxuICAgICAgICAgICAgICAgICh3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDcpO1xuICAgICAgICAgICAgICBlbnN1cmVSb290SXNTY2hlZHVsZWQocm9vdCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgdGhyb3duVmFsdWUudGhlbihsYW5lcywgbGFuZXMpO1xuICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICB3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJlYXNvbiA9IDc7XG4gICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIGNhc2UgNDpcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uID0gNTtcbiAgICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgICAgY2FzZSA3OlxuICAgICAgICAgICAgaXNUaGVuYWJsZVJlc29sdmVkKHRocm93blZhbHVlKVxuICAgICAgICAgICAgICA/ICgod29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPSAwKSxcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NUaHJvd25WYWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAgIHJlcGxheVN1c3BlbmRlZFVuaXRPZldvcmsobGFuZXMpKVxuICAgICAgICAgICAgICA6ICgod29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPSAwKSxcbiAgICAgICAgICAgICAgICAod29ya0luUHJvZ3Jlc3NUaHJvd25WYWx1ZSA9IG51bGwpLFxuICAgICAgICAgICAgICAgIHRocm93QW5kVW53aW5kV29ya0xvb3Aocm9vdCwgbGFuZXMsIHRocm93blZhbHVlLCA3KSk7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDU6XG4gICAgICAgICAgICB2YXIgcmVzb3VyY2UgPSBudWxsO1xuICAgICAgICAgICAgc3dpdGNoICh3b3JrSW5Qcm9ncmVzcy50YWcpIHtcbiAgICAgICAgICAgICAgY2FzZSAyNjpcbiAgICAgICAgICAgICAgICByZXNvdXJjZSA9IHdvcmtJblByb2dyZXNzLm1lbW9pemVkU3RhdGU7XG4gICAgICAgICAgICAgIGNhc2UgNTpcbiAgICAgICAgICAgICAgY2FzZSAyNzpcbiAgICAgICAgICAgICAgICB2YXIgaG9zdEZpYmVyID0gd29ya0luUHJvZ3Jlc3M7XG4gICAgICAgICAgICAgICAgaWYgKHJlc291cmNlID8gcHJlbG9hZFJlc291cmNlKHJlc291cmNlKSA6IDEpIHtcbiAgICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uID0gMDtcbiAgICAgICAgICAgICAgICAgIHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgdmFyIHNpYmxpbmcgPSBob3N0RmliZXIuc2libGluZztcbiAgICAgICAgICAgICAgICAgIGlmIChudWxsICE9PSBzaWJsaW5nKSB3b3JrSW5Qcm9ncmVzcyA9IHNpYmxpbmc7XG4gICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgdmFyIHJldHVybkZpYmVyID0gaG9zdEZpYmVyLnJldHVybjtcbiAgICAgICAgICAgICAgICAgICAgbnVsbCAhPT0gcmV0dXJuRmliZXJcbiAgICAgICAgICAgICAgICAgICAgICA/ICgod29ya0luUHJvZ3Jlc3MgPSByZXR1cm5GaWJlciksXG4gICAgICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVVuaXRPZldvcmsocmV0dXJuRmliZXIpKVxuICAgICAgICAgICAgICAgICAgICAgIDogKHdvcmtJblByb2dyZXNzID0gbnVsbCk7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uID0gMDtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzVGhyb3duVmFsdWUgPSBudWxsO1xuICAgICAgICAgICAgdGhyb3dBbmRVbndpbmRXb3JrTG9vcChyb290LCBsYW5lcywgdGhyb3duVmFsdWUsIDUpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSA2OlxuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24gPSAwO1xuICAgICAgICAgICAgd29ya0luUHJvZ3Jlc3NUaHJvd25WYWx1ZSA9IG51bGw7XG4gICAgICAgICAgICB0aHJvd0FuZFVud2luZFdvcmtMb29wKHJvb3QsIGxhbmVzLCB0aHJvd25WYWx1ZSwgNik7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIDg6XG4gICAgICAgICAgICByZXNldFdvcmtJblByb2dyZXNzU3RhY2soKTtcbiAgICAgICAgICAgIHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgPSA2O1xuICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0NjIpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgd29ya0xvb3BDb25jdXJyZW50KCk7XG4gICAgICBicmVhaztcbiAgICB9IGNhdGNoICh0aHJvd25WYWx1ZSQxNjYpIHtcbiAgICAgIGhhbmRsZVRocm93KHJvb3QsIHRocm93blZhbHVlJDE2Nik7XG4gICAgfVxuICB3aGlsZSAoMSk7XG4gIGxhc3RDb250ZXh0RGVwZW5kZW5jeSA9IGN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyID0gbnVsbDtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuSCA9IHByZXZEaXNwYXRjaGVyO1xuICBSZWFjdFNoYXJlZEludGVybmFscy5BID0gcHJldkFzeW5jRGlzcGF0Y2hlcjtcbiAgZXhlY3V0aW9uQ29udGV4dCA9IHByZXZFeGVjdXRpb25Db250ZXh0O1xuICBpZiAobnVsbCAhPT0gd29ya0luUHJvZ3Jlc3MpIHJldHVybiAwO1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3QgPSBudWxsO1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyA9IDA7XG4gIGZpbmlzaFF1ZXVlaW5nQ29uY3VycmVudFVwZGF0ZXMoKTtcbiAgcmV0dXJuIHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXM7XG59XG5mdW5jdGlvbiB3b3JrTG9vcENvbmN1cnJlbnQoKSB7XG4gIGZvciAoOyBudWxsICE9PSB3b3JrSW5Qcm9ncmVzcyAmJiAhc2hvdWxkWWllbGQoKTsgKVxuICAgIHBlcmZvcm1Vbml0T2ZXb3JrKHdvcmtJblByb2dyZXNzKTtcbn1cbmZ1bmN0aW9uIHBlcmZvcm1Vbml0T2ZXb3JrKHVuaXRPZldvcmspIHtcbiAgdmFyIG5leHQgPSBiZWdpbldvcmsodW5pdE9mV29yay5hbHRlcm5hdGUsIHVuaXRPZldvcmssIGVudGFuZ2xlZFJlbmRlckxhbmVzKTtcbiAgdW5pdE9mV29yay5tZW1vaXplZFByb3BzID0gdW5pdE9mV29yay5wZW5kaW5nUHJvcHM7XG4gIG51bGwgPT09IG5leHQgPyBjb21wbGV0ZVVuaXRPZldvcmsodW5pdE9mV29yaykgOiAod29ya0luUHJvZ3Jlc3MgPSBuZXh0KTtcbn1cbmZ1bmN0aW9uIHJlcGxheVN1c3BlbmRlZFVuaXRPZldvcmsodW5pdE9mV29yaykge1xuICB2YXIgbmV4dCA9IHVuaXRPZldvcms7XG4gIHZhciBjdXJyZW50ID0gbmV4dC5hbHRlcm5hdGU7XG4gIHN3aXRjaCAobmV4dC50YWcpIHtcbiAgICBjYXNlIDE1OlxuICAgIGNhc2UgMDpcbiAgICAgIG5leHQgPSByZXBsYXlGdW5jdGlvbkNvbXBvbmVudChcbiAgICAgICAgY3VycmVudCxcbiAgICAgICAgbmV4dCxcbiAgICAgICAgbmV4dC5wZW5kaW5nUHJvcHMsXG4gICAgICAgIG5leHQudHlwZSxcbiAgICAgICAgdm9pZCAwLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lc1xuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMTE6XG4gICAgICBuZXh0ID0gcmVwbGF5RnVuY3Rpb25Db21wb25lbnQoXG4gICAgICAgIGN1cnJlbnQsXG4gICAgICAgIG5leHQsXG4gICAgICAgIG5leHQucGVuZGluZ1Byb3BzLFxuICAgICAgICBuZXh0LnR5cGUucmVuZGVyLFxuICAgICAgICBuZXh0LnJlZixcbiAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXNcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDU6XG4gICAgICByZXNldEhvb2tzT25VbndpbmQobmV4dCk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHVud2luZEludGVycnVwdGVkV29yayhjdXJyZW50LCBuZXh0KSxcbiAgICAgICAgKG5leHQgPSB3b3JrSW5Qcm9ncmVzcyA9XG4gICAgICAgICAgcmVzZXRXb3JrSW5Qcm9ncmVzcyhuZXh0LCBlbnRhbmdsZWRSZW5kZXJMYW5lcykpLFxuICAgICAgICAobmV4dCA9IGJlZ2luV29yayhjdXJyZW50LCBuZXh0LCBlbnRhbmdsZWRSZW5kZXJMYW5lcykpO1xuICB9XG4gIHVuaXRPZldvcmsubWVtb2l6ZWRQcm9wcyA9IHVuaXRPZldvcmsucGVuZGluZ1Byb3BzO1xuICBudWxsID09PSBuZXh0ID8gY29tcGxldGVVbml0T2ZXb3JrKHVuaXRPZldvcmspIDogKHdvcmtJblByb2dyZXNzID0gbmV4dCk7XG59XG5mdW5jdGlvbiB0aHJvd0FuZFVud2luZFdvcmtMb29wKFxuICByb290LFxuICB1bml0T2ZXb3JrLFxuICB0aHJvd25WYWx1ZSxcbiAgc3VzcGVuZGVkUmVhc29uXG4pIHtcbiAgbGFzdENvbnRleHREZXBlbmRlbmN5ID0gY3VycmVudGx5UmVuZGVyaW5nRmliZXIgPSBudWxsO1xuICByZXNldEhvb2tzT25VbndpbmQodW5pdE9mV29yayk7XG4gIHRoZW5hYmxlU3RhdGUkMSA9IG51bGw7XG4gIHRoZW5hYmxlSW5kZXhDb3VudGVyJDEgPSAwO1xuICB2YXIgcmV0dXJuRmliZXIgPSB1bml0T2ZXb3JrLnJldHVybjtcbiAgdHJ5IHtcbiAgICBpZiAoXG4gICAgICB0aHJvd0V4Y2VwdGlvbihcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcmV0dXJuRmliZXIsXG4gICAgICAgIHVuaXRPZldvcmssXG4gICAgICAgIHRocm93blZhbHVlLFxuICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lc1xuICAgICAgKVxuICAgICkge1xuICAgICAgd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDE7XG4gICAgICBsb2dVbmNhdWdodEVycm9yKFxuICAgICAgICByb290LFxuICAgICAgICBjcmVhdGVDYXB0dXJlZFZhbHVlQXRGaWJlcih0aHJvd25WYWx1ZSwgcm9vdC5jdXJyZW50KVxuICAgICAgKTtcbiAgICAgIHdvcmtJblByb2dyZXNzID0gbnVsbDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKG51bGwgIT09IHJldHVybkZpYmVyKSB0aHJvdyAoKHdvcmtJblByb2dyZXNzID0gcmV0dXJuRmliZXIpLCBlcnJvcik7XG4gICAgd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDE7XG4gICAgbG9nVW5jYXVnaHRFcnJvcihcbiAgICAgIHJvb3QsXG4gICAgICBjcmVhdGVDYXB0dXJlZFZhbHVlQXRGaWJlcih0aHJvd25WYWx1ZSwgcm9vdC5jdXJyZW50KVxuICAgICk7XG4gICAgd29ya0luUHJvZ3Jlc3MgPSBudWxsO1xuICAgIHJldHVybjtcbiAgfVxuICBpZiAodW5pdE9mV29yay5mbGFncyAmIDMyNzY4KSB7XG4gICAgaWYgKGlzSHlkcmF0aW5nIHx8IDEgPT09IHN1c3BlbmRlZFJlYXNvbikgcm9vdCA9ICEwO1xuICAgIGVsc2UgaWYgKFxuICAgICAgd29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmcgfHxcbiAgICAgIDAgIT09ICh3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmIDUzNjg3MDkxMilcbiAgICApXG4gICAgICByb290ID0gITE7XG4gICAgZWxzZSBpZiAoXG4gICAgICAoKHdvcmtJblByb2dyZXNzUm9vdERpZFNraXBTdXNwZW5kZWRTaWJsaW5ncyA9IHJvb3QgPSAhMCksXG4gICAgICAyID09PSBzdXNwZW5kZWRSZWFzb24gfHwgMyA9PT0gc3VzcGVuZGVkUmVhc29uIHx8IDYgPT09IHN1c3BlbmRlZFJlYXNvbilcbiAgICApXG4gICAgICAoc3VzcGVuZGVkUmVhc29uID0gc3VzcGVuc2VIYW5kbGVyU3RhY2tDdXJzb3IuY3VycmVudCksXG4gICAgICAgIG51bGwgIT09IHN1c3BlbmRlZFJlYXNvbiAmJlxuICAgICAgICAgIDEzID09PSBzdXNwZW5kZWRSZWFzb24udGFnICYmXG4gICAgICAgICAgKHN1c3BlbmRlZFJlYXNvbi5mbGFncyB8PSAxNjM4NCk7XG4gICAgdW53aW5kVW5pdE9mV29yayh1bml0T2ZXb3JrLCByb290KTtcbiAgfSBlbHNlIGNvbXBsZXRlVW5pdE9mV29yayh1bml0T2ZXb3JrKTtcbn1cbmZ1bmN0aW9uIGNvbXBsZXRlVW5pdE9mV29yayh1bml0T2ZXb3JrKSB7XG4gIHZhciBjb21wbGV0ZWRXb3JrID0gdW5pdE9mV29yaztcbiAgZG8ge1xuICAgIGlmICgwICE9PSAoY29tcGxldGVkV29yay5mbGFncyAmIDMyNzY4KSkge1xuICAgICAgdW53aW5kVW5pdE9mV29yayhcbiAgICAgICAgY29tcGxldGVkV29yayxcbiAgICAgICAgd29ya0luUHJvZ3Jlc3NSb290RGlkU2tpcFN1c3BlbmRlZFNpYmxpbmdzXG4gICAgICApO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB1bml0T2ZXb3JrID0gY29tcGxldGVkV29yay5yZXR1cm47XG4gICAgdmFyIG5leHQgPSBjb21wbGV0ZVdvcmsoXG4gICAgICBjb21wbGV0ZWRXb3JrLmFsdGVybmF0ZSxcbiAgICAgIGNvbXBsZXRlZFdvcmssXG4gICAgICBlbnRhbmdsZWRSZW5kZXJMYW5lc1xuICAgICk7XG4gICAgaWYgKG51bGwgIT09IG5leHQpIHtcbiAgICAgIHdvcmtJblByb2dyZXNzID0gbmV4dDtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29tcGxldGVkV29yayA9IGNvbXBsZXRlZFdvcmsuc2libGluZztcbiAgICBpZiAobnVsbCAhPT0gY29tcGxldGVkV29yaykge1xuICAgICAgd29ya0luUHJvZ3Jlc3MgPSBjb21wbGV0ZWRXb3JrO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB3b3JrSW5Qcm9ncmVzcyA9IGNvbXBsZXRlZFdvcmsgPSB1bml0T2ZXb3JrO1xuICB9IHdoaWxlIChudWxsICE9PSBjb21wbGV0ZWRXb3JrKTtcbiAgMCA9PT0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyAmJiAod29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyA9IDUpO1xufVxuZnVuY3Rpb24gdW53aW5kVW5pdE9mV29yayh1bml0T2ZXb3JrLCBza2lwU2libGluZ3MpIHtcbiAgZG8ge1xuICAgIHZhciBuZXh0ID0gdW53aW5kV29yayh1bml0T2ZXb3JrLmFsdGVybmF0ZSwgdW5pdE9mV29yayk7XG4gICAgaWYgKG51bGwgIT09IG5leHQpIHtcbiAgICAgIG5leHQuZmxhZ3MgJj0gMzI3Njc7XG4gICAgICB3b3JrSW5Qcm9ncmVzcyA9IG5leHQ7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIG5leHQgPSB1bml0T2ZXb3JrLnJldHVybjtcbiAgICBudWxsICE9PSBuZXh0ICYmXG4gICAgICAoKG5leHQuZmxhZ3MgfD0gMzI3NjgpLCAobmV4dC5zdWJ0cmVlRmxhZ3MgPSAwKSwgKG5leHQuZGVsZXRpb25zID0gbnVsbCkpO1xuICAgIGlmIChcbiAgICAgICFza2lwU2libGluZ3MgJiZcbiAgICAgICgodW5pdE9mV29yayA9IHVuaXRPZldvcmsuc2libGluZyksIG51bGwgIT09IHVuaXRPZldvcmspXG4gICAgKSB7XG4gICAgICB3b3JrSW5Qcm9ncmVzcyA9IHVuaXRPZldvcms7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHdvcmtJblByb2dyZXNzID0gdW5pdE9mV29yayA9IG5leHQ7XG4gIH0gd2hpbGUgKG51bGwgIT09IHVuaXRPZldvcmspO1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3RFeGl0U3RhdHVzID0gNjtcbiAgd29ya0luUHJvZ3Jlc3MgPSBudWxsO1xufVxuZnVuY3Rpb24gY29tbWl0Um9vdChcbiAgcm9vdCxcbiAgcmVjb3ZlcmFibGVFcnJvcnMsXG4gIHRyYW5zaXRpb25zLFxuICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gIHNwYXduZWRMYW5lLFxuICB1cGRhdGVkTGFuZXMsXG4gIHN1c3BlbmRlZFJldHJ5TGFuZXMsXG4gIHN1c3BlbmRlZENvbW1pdFJlYXNvbixcbiAgY29tcGxldGVkUmVuZGVyU3RhcnRUaW1lLFxuICBjb21wbGV0ZWRSZW5kZXJFbmRUaW1lXG4pIHtcbiAgdmFyIHByZXZUcmFuc2l0aW9uID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCxcbiAgICBwcmV2aW91c1VwZGF0ZUxhbmVQcmlvcml0eSA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnA7XG4gIHRyeSB7XG4gICAgKFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnAgPSAyKSxcbiAgICAgIChSZWFjdFNoYXJlZEludGVybmFscy5UID0gbnVsbCksXG4gICAgICBjb21taXRSb290SW1wbChcbiAgICAgICAgcm9vdCxcbiAgICAgICAgcmVjb3ZlcmFibGVFcnJvcnMsXG4gICAgICAgIHRyYW5zaXRpb25zLFxuICAgICAgICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gICAgICAgIHByZXZpb3VzVXBkYXRlTGFuZVByaW9yaXR5LFxuICAgICAgICBzcGF3bmVkTGFuZSxcbiAgICAgICAgdXBkYXRlZExhbmVzLFxuICAgICAgICBzdXNwZW5kZWRSZXRyeUxhbmVzLFxuICAgICAgICBzdXNwZW5kZWRDb21taXRSZWFzb24sXG4gICAgICAgIGNvbXBsZXRlZFJlbmRlclN0YXJ0VGltZSxcbiAgICAgICAgY29tcGxldGVkUmVuZGVyRW5kVGltZVxuICAgICAgKTtcbiAgfSBmaW5hbGx5IHtcbiAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IHByZXZUcmFuc2l0aW9uKSxcbiAgICAgIChSZWFjdERPTVNoYXJlZEludGVybmFscy5wID0gcHJldmlvdXNVcGRhdGVMYW5lUHJpb3JpdHkpO1xuICB9XG59XG5mdW5jdGlvbiBjb21taXRSb290SW1wbChcbiAgcm9vdCxcbiAgcmVjb3ZlcmFibGVFcnJvcnMsXG4gIHRyYW5zaXRpb25zLFxuICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gIHJlbmRlclByaW9yaXR5TGV2ZWwsXG4gIHNwYXduZWRMYW5lLFxuICB1cGRhdGVkTGFuZXMsXG4gIHN1c3BlbmRlZFJldHJ5TGFuZXNcbikge1xuICBkbyBmbHVzaFBhc3NpdmVFZmZlY3RzKCk7XG4gIHdoaWxlIChudWxsICE9PSByb290V2l0aFBlbmRpbmdQYXNzaXZlRWZmZWN0cyk7XG4gIGlmICgwICE9PSAoZXhlY3V0aW9uQ29udGV4dCAmIDYpKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDMyNykpO1xuICB2YXIgZmluaXNoZWRXb3JrID0gcm9vdC5maW5pc2hlZFdvcms7XG4gIGRpZEluY2x1ZGVSZW5kZXJQaGFzZVVwZGF0ZSA9IHJvb3QuZmluaXNoZWRMYW5lcztcbiAgaWYgKG51bGwgPT09IGZpbmlzaGVkV29yaykgcmV0dXJuIG51bGw7XG4gIHJvb3QuZmluaXNoZWRXb3JrID0gbnVsbDtcbiAgcm9vdC5maW5pc2hlZExhbmVzID0gMDtcbiAgaWYgKGZpbmlzaGVkV29yayA9PT0gcm9vdC5jdXJyZW50KSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDE3NykpO1xuICByb290LmNhbGxiYWNrTm9kZSA9IG51bGw7XG4gIHJvb3QuY2FsbGJhY2tQcmlvcml0eSA9IDA7XG4gIHJvb3QuY2FuY2VsUGVuZGluZ0NvbW1pdCA9IG51bGw7XG4gIHZhciByZW1haW5pbmdMYW5lcyA9IGZpbmlzaGVkV29yay5sYW5lcyB8IGZpbmlzaGVkV29yay5jaGlsZExhbmVzO1xuICByZW1haW5pbmdMYW5lcyB8PSBjb25jdXJyZW50bHlVcGRhdGVkTGFuZXM7XG4gIG1hcmtSb290RmluaXNoZWQoXG4gICAgcm9vdCxcbiAgICBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUsXG4gICAgcmVtYWluaW5nTGFuZXMsXG4gICAgc3Bhd25lZExhbmUsXG4gICAgdXBkYXRlZExhbmVzLFxuICAgIHN1c3BlbmRlZFJldHJ5TGFuZXNcbiAgKTtcbiAgcm9vdCA9PT0gd29ya0luUHJvZ3Jlc3NSb290ICYmXG4gICAgKCh3b3JrSW5Qcm9ncmVzcyA9IHdvcmtJblByb2dyZXNzUm9vdCA9IG51bGwpLFxuICAgICh3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyA9IDApKTtcbiAgKDAgPT09IChmaW5pc2hlZFdvcmsuc3VidHJlZUZsYWdzICYgMTAyNTYpICYmXG4gICAgMCA9PT0gKGZpbmlzaGVkV29yay5mbGFncyAmIDEwMjU2KSkgfHxcbiAgICByb290RG9lc0hhdmVQYXNzaXZlRWZmZWN0cyB8fFxuICAgICgocm9vdERvZXNIYXZlUGFzc2l2ZUVmZmVjdHMgPSAhMCksXG4gICAgKHBlbmRpbmdQYXNzaXZlRWZmZWN0c1JlbWFpbmluZ0xhbmVzID0gcmVtYWluaW5nTGFuZXMpLFxuICAgIChwZW5kaW5nUGFzc2l2ZVRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMpLFxuICAgIHNjaGVkdWxlQ2FsbGJhY2skMShOb3JtYWxQcmlvcml0eSQxLCBmdW5jdGlvbiAoKSB7XG4gICAgICBmbHVzaFBhc3NpdmVFZmZlY3RzKCEwKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0pKTtcbiAgdHJhbnNpdGlvbnMgPSAwICE9PSAoZmluaXNoZWRXb3JrLmZsYWdzICYgMTU5OTApO1xuICAwICE9PSAoZmluaXNoZWRXb3JrLnN1YnRyZWVGbGFncyAmIDE1OTkwKSB8fCB0cmFuc2l0aW9uc1xuICAgID8gKCh0cmFuc2l0aW9ucyA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQpLFxuICAgICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBudWxsKSxcbiAgICAgIChzcGF3bmVkTGFuZSA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnApLFxuICAgICAgKFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnAgPSAyKSxcbiAgICAgICh1cGRhdGVkTGFuZXMgPSBleGVjdXRpb25Db250ZXh0KSxcbiAgICAgIChleGVjdXRpb25Db250ZXh0IHw9IDQpLFxuICAgICAgY29tbWl0QmVmb3JlTXV0YXRpb25FZmZlY3RzKHJvb3QsIGZpbmlzaGVkV29yayksXG4gICAgICBjb21taXRNdXRhdGlvbkVmZmVjdHNPbkZpYmVyKGZpbmlzaGVkV29yaywgcm9vdCksXG4gICAgICByZXN0b3JlU2VsZWN0aW9uKHNlbGVjdGlvbkluZm9ybWF0aW9uLCByb290LmNvbnRhaW5lckluZm8pLFxuICAgICAgKF9lbmFibGVkID0gISFldmVudHNFbmFibGVkKSxcbiAgICAgIChzZWxlY3Rpb25JbmZvcm1hdGlvbiA9IGV2ZW50c0VuYWJsZWQgPSBudWxsKSxcbiAgICAgIChyb290LmN1cnJlbnQgPSBmaW5pc2hlZFdvcmspLFxuICAgICAgY29tbWl0TGF5b3V0RWZmZWN0T25GaWJlcihyb290LCBmaW5pc2hlZFdvcmsuYWx0ZXJuYXRlLCBmaW5pc2hlZFdvcmspLFxuICAgICAgcmVxdWVzdFBhaW50KCksXG4gICAgICAoZXhlY3V0aW9uQ29udGV4dCA9IHVwZGF0ZWRMYW5lcyksXG4gICAgICAoUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucCA9IHNwYXduZWRMYW5lKSxcbiAgICAgIChSZWFjdFNoYXJlZEludGVybmFscy5UID0gdHJhbnNpdGlvbnMpKVxuICAgIDogKHJvb3QuY3VycmVudCA9IGZpbmlzaGVkV29yayk7XG4gIHJvb3REb2VzSGF2ZVBhc3NpdmVFZmZlY3RzXG4gICAgPyAoKHJvb3REb2VzSGF2ZVBhc3NpdmVFZmZlY3RzID0gITEpLFxuICAgICAgKHJvb3RXaXRoUGVuZGluZ1Bhc3NpdmVFZmZlY3RzID0gcm9vdCksXG4gICAgICAocGVuZGluZ1Bhc3NpdmVFZmZlY3RzTGFuZXMgPSBkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUpKVxuICAgIDogcmVsZWFzZVJvb3RQb29sZWRDYWNoZShyb290LCByZW1haW5pbmdMYW5lcyk7XG4gIHJlbWFpbmluZ0xhbmVzID0gcm9vdC5wZW5kaW5nTGFuZXM7XG4gIDAgPT09IHJlbWFpbmluZ0xhbmVzICYmIChsZWdhY3lFcnJvckJvdW5kYXJpZXNUaGF0QWxyZWFkeUZhaWxlZCA9IG51bGwpO1xuICBvbkNvbW1pdFJvb3QoZmluaXNoZWRXb3JrLnN0YXRlTm9kZSwgcmVuZGVyUHJpb3JpdHlMZXZlbCk7XG4gIGVuc3VyZVJvb3RJc1NjaGVkdWxlZChyb290KTtcbiAgaWYgKG51bGwgIT09IHJlY292ZXJhYmxlRXJyb3JzKVxuICAgIGZvciAoXG4gICAgICByZW5kZXJQcmlvcml0eUxldmVsID0gcm9vdC5vblJlY292ZXJhYmxlRXJyb3IsIGZpbmlzaGVkV29yayA9IDA7XG4gICAgICBmaW5pc2hlZFdvcmsgPCByZWNvdmVyYWJsZUVycm9ycy5sZW5ndGg7XG4gICAgICBmaW5pc2hlZFdvcmsrK1xuICAgIClcbiAgICAgIChyZW1haW5pbmdMYW5lcyA9IHJlY292ZXJhYmxlRXJyb3JzW2ZpbmlzaGVkV29ya10pLFxuICAgICAgICByZW5kZXJQcmlvcml0eUxldmVsKHJlbWFpbmluZ0xhbmVzLnZhbHVlLCB7XG4gICAgICAgICAgY29tcG9uZW50U3RhY2s6IHJlbWFpbmluZ0xhbmVzLnN0YWNrXG4gICAgICAgIH0pO1xuICAwICE9PSAocGVuZGluZ1Bhc3NpdmVFZmZlY3RzTGFuZXMgJiAzKSAmJiBmbHVzaFBhc3NpdmVFZmZlY3RzKCk7XG4gIHJlbWFpbmluZ0xhbmVzID0gcm9vdC5wZW5kaW5nTGFuZXM7XG4gIDAgIT09IChkaWRJbmNsdWRlUmVuZGVyUGhhc2VVcGRhdGUgJiA0MTk0MjE4KSAmJiAwICE9PSAocmVtYWluaW5nTGFuZXMgJiA0MilcbiAgICA/IHJvb3QgPT09IHJvb3RXaXRoTmVzdGVkVXBkYXRlc1xuICAgICAgPyBuZXN0ZWRVcGRhdGVDb3VudCsrXG4gICAgICA6ICgobmVzdGVkVXBkYXRlQ291bnQgPSAwKSwgKHJvb3RXaXRoTmVzdGVkVXBkYXRlcyA9IHJvb3QpKVxuICAgIDogKG5lc3RlZFVwZGF0ZUNvdW50ID0gMCk7XG4gIGZsdXNoU3luY1dvcmtBY3Jvc3NSb290c19pbXBsKDAsICExKTtcbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiByZWxlYXNlUm9vdFBvb2xlZENhY2hlKHJvb3QsIHJlbWFpbmluZ0xhbmVzKSB7XG4gIDAgPT09IChyb290LnBvb2xlZENhY2hlTGFuZXMgJj0gcmVtYWluaW5nTGFuZXMpICYmXG4gICAgKChyZW1haW5pbmdMYW5lcyA9IHJvb3QucG9vbGVkQ2FjaGUpLFxuICAgIG51bGwgIT0gcmVtYWluaW5nTGFuZXMgJiZcbiAgICAgICgocm9vdC5wb29sZWRDYWNoZSA9IG51bGwpLCByZWxlYXNlQ2FjaGUocmVtYWluaW5nTGFuZXMpKSk7XG59XG5mdW5jdGlvbiBmbHVzaFBhc3NpdmVFZmZlY3RzKCkge1xuICBpZiAobnVsbCAhPT0gcm9vdFdpdGhQZW5kaW5nUGFzc2l2ZUVmZmVjdHMpIHtcbiAgICB2YXIgcm9vdCQxNzAgPSByb290V2l0aFBlbmRpbmdQYXNzaXZlRWZmZWN0cyxcbiAgICAgIHJlbWFpbmluZ0xhbmVzID0gcGVuZGluZ1Bhc3NpdmVFZmZlY3RzUmVtYWluaW5nTGFuZXM7XG4gICAgcGVuZGluZ1Bhc3NpdmVFZmZlY3RzUmVtYWluaW5nTGFuZXMgPSAwO1xuICAgIHZhciByZW5kZXJQcmlvcml0eSA9IGxhbmVzVG9FdmVudFByaW9yaXR5KHBlbmRpbmdQYXNzaXZlRWZmZWN0c0xhbmVzKSxcbiAgICAgIHByZXZUcmFuc2l0aW9uID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCxcbiAgICAgIHByZXZpb3VzUHJpb3JpdHkgPSBSZWFjdERPTVNoYXJlZEludGVybmFscy5wO1xuICAgIHRyeSB7XG4gICAgICBSZWFjdERPTVNoYXJlZEludGVybmFscy5wID0gMzIgPiByZW5kZXJQcmlvcml0eSA/IDMyIDogcmVuZGVyUHJpb3JpdHk7XG4gICAgICBSZWFjdFNoYXJlZEludGVybmFscy5UID0gbnVsbDtcbiAgICAgIGlmIChudWxsID09PSByb290V2l0aFBlbmRpbmdQYXNzaXZlRWZmZWN0cylcbiAgICAgICAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9ICExO1xuICAgICAgZWxzZSB7XG4gICAgICAgIHJlbmRlclByaW9yaXR5ID0gcGVuZGluZ1Bhc3NpdmVUcmFuc2l0aW9ucztcbiAgICAgICAgcGVuZGluZ1Bhc3NpdmVUcmFuc2l0aW9ucyA9IG51bGw7XG4gICAgICAgIHZhciByb290ID0gcm9vdFdpdGhQZW5kaW5nUGFzc2l2ZUVmZmVjdHMsXG4gICAgICAgICAgbGFuZXMgPSBwZW5kaW5nUGFzc2l2ZUVmZmVjdHNMYW5lcztcbiAgICAgICAgcm9vdFdpdGhQZW5kaW5nUGFzc2l2ZUVmZmVjdHMgPSBudWxsO1xuICAgICAgICBwZW5kaW5nUGFzc2l2ZUVmZmVjdHNMYW5lcyA9IDA7XG4gICAgICAgIGlmICgwICE9PSAoZXhlY3V0aW9uQ29udGV4dCAmIDYpKVxuICAgICAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMzMxKSk7XG4gICAgICAgIHZhciBwcmV2RXhlY3V0aW9uQ29udGV4dCA9IGV4ZWN1dGlvbkNvbnRleHQ7XG4gICAgICAgIGV4ZWN1dGlvbkNvbnRleHQgfD0gNDtcbiAgICAgICAgY29tbWl0UGFzc2l2ZVVubW91bnRPbkZpYmVyKHJvb3QuY3VycmVudCk7XG4gICAgICAgIGNvbW1pdFBhc3NpdmVNb3VudE9uRmliZXIocm9vdCwgcm9vdC5jdXJyZW50LCBsYW5lcywgcmVuZGVyUHJpb3JpdHkpO1xuICAgICAgICBleGVjdXRpb25Db250ZXh0ID0gcHJldkV4ZWN1dGlvbkNvbnRleHQ7XG4gICAgICAgIGZsdXNoU3luY1dvcmtBY3Jvc3NSb290c19pbXBsKDAsICExKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGluamVjdGVkSG9vayAmJlxuICAgICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGluamVjdGVkSG9vay5vblBvc3RDb21taXRGaWJlclJvb3RcbiAgICAgICAgKVxuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBpbmplY3RlZEhvb2sub25Qb3N0Q29tbWl0RmliZXJSb290KHJlbmRlcmVySUQsIHJvb3QpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycikge31cbiAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gITA7XG4gICAgICB9XG4gICAgICByZXR1cm4gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0O1xuICAgIH0gZmluYWxseSB7XG4gICAgICAoUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucCA9IHByZXZpb3VzUHJpb3JpdHkpLFxuICAgICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IHByZXZUcmFuc2l0aW9uKSxcbiAgICAgICAgcmVsZWFzZVJvb3RQb29sZWRDYWNoZShyb290JDE3MCwgcmVtYWluaW5nTGFuZXMpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiBjYXB0dXJlQ29tbWl0UGhhc2VFcnJvck9uUm9vdChyb290RmliZXIsIHNvdXJjZUZpYmVyLCBlcnJvcikge1xuICBzb3VyY2VGaWJlciA9IGNyZWF0ZUNhcHR1cmVkVmFsdWVBdEZpYmVyKGVycm9yLCBzb3VyY2VGaWJlcik7XG4gIHNvdXJjZUZpYmVyID0gY3JlYXRlUm9vdEVycm9yVXBkYXRlKHJvb3RGaWJlci5zdGF0ZU5vZGUsIHNvdXJjZUZpYmVyLCAyKTtcbiAgcm9vdEZpYmVyID0gZW5xdWV1ZVVwZGF0ZShyb290RmliZXIsIHNvdXJjZUZpYmVyLCAyKTtcbiAgbnVsbCAhPT0gcm9vdEZpYmVyICYmXG4gICAgKG1hcmtSb290VXBkYXRlZCQxKHJvb3RGaWJlciwgMiksIGVuc3VyZVJvb3RJc1NjaGVkdWxlZChyb290RmliZXIpKTtcbn1cbmZ1bmN0aW9uIGNhcHR1cmVDb21taXRQaGFzZUVycm9yKHNvdXJjZUZpYmVyLCBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLCBlcnJvcikge1xuICBpZiAoMyA9PT0gc291cmNlRmliZXIudGFnKVxuICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yT25Sb290KHNvdXJjZUZpYmVyLCBzb3VyY2VGaWJlciwgZXJyb3IpO1xuICBlbHNlXG4gICAgZm9yICg7IG51bGwgIT09IG5lYXJlc3RNb3VudGVkQW5jZXN0b3I7ICkge1xuICAgICAgaWYgKDMgPT09IG5lYXJlc3RNb3VudGVkQW5jZXN0b3IudGFnKSB7XG4gICAgICAgIGNhcHR1cmVDb21taXRQaGFzZUVycm9yT25Sb290KFxuICAgICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgICAgc291cmNlRmliZXIsXG4gICAgICAgICAgZXJyb3JcbiAgICAgICAgKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9IGVsc2UgaWYgKDEgPT09IG5lYXJlc3RNb3VudGVkQW5jZXN0b3IudGFnKSB7XG4gICAgICAgIHZhciBpbnN0YW5jZSA9IG5lYXJlc3RNb3VudGVkQW5jZXN0b3Iuc3RhdGVOb2RlO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJmdW5jdGlvblwiID09PVxuICAgICAgICAgICAgdHlwZW9mIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IudHlwZS5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IgfHxcbiAgICAgICAgICAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgaW5zdGFuY2UuY29tcG9uZW50RGlkQ2F0Y2ggJiZcbiAgICAgICAgICAgIChudWxsID09PSBsZWdhY3lFcnJvckJvdW5kYXJpZXNUaGF0QWxyZWFkeUZhaWxlZCB8fFxuICAgICAgICAgICAgICAhbGVnYWN5RXJyb3JCb3VuZGFyaWVzVGhhdEFscmVhZHlGYWlsZWQuaGFzKGluc3RhbmNlKSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHNvdXJjZUZpYmVyID0gY3JlYXRlQ2FwdHVyZWRWYWx1ZUF0RmliZXIoZXJyb3IsIHNvdXJjZUZpYmVyKTtcbiAgICAgICAgICBlcnJvciA9IGNyZWF0ZUNsYXNzRXJyb3JVcGRhdGUoMik7XG4gICAgICAgICAgaW5zdGFuY2UgPSBlbnF1ZXVlVXBkYXRlKG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsIGVycm9yLCAyKTtcbiAgICAgICAgICBudWxsICE9PSBpbnN0YW5jZSAmJlxuICAgICAgICAgICAgKGluaXRpYWxpemVDbGFzc0Vycm9yVXBkYXRlKFxuICAgICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICAgICAgaW5zdGFuY2UsXG4gICAgICAgICAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IsXG4gICAgICAgICAgICAgIHNvdXJjZUZpYmVyXG4gICAgICAgICAgICApLFxuICAgICAgICAgICAgbWFya1Jvb3RVcGRhdGVkJDEoaW5zdGFuY2UsIDIpLFxuICAgICAgICAgICAgZW5zdXJlUm9vdElzU2NoZWR1bGVkKGluc3RhbmNlKSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIG5lYXJlc3RNb3VudGVkQW5jZXN0b3IgPSBuZWFyZXN0TW91bnRlZEFuY2VzdG9yLnJldHVybjtcbiAgICB9XG59XG5mdW5jdGlvbiBhdHRhY2hQaW5nTGlzdGVuZXIocm9vdCwgd2FrZWFibGUsIGxhbmVzKSB7XG4gIHZhciBwaW5nQ2FjaGUgPSByb290LnBpbmdDYWNoZTtcbiAgaWYgKG51bGwgPT09IHBpbmdDYWNoZSkge1xuICAgIHBpbmdDYWNoZSA9IHJvb3QucGluZ0NhY2hlID0gbmV3IFBvc3NpYmx5V2Vha01hcCgpO1xuICAgIHZhciB0aHJlYWRJRHMgPSBuZXcgU2V0KCk7XG4gICAgcGluZ0NhY2hlLnNldCh3YWtlYWJsZSwgdGhyZWFkSURzKTtcbiAgfSBlbHNlXG4gICAgKHRocmVhZElEcyA9IHBpbmdDYWNoZS5nZXQod2FrZWFibGUpKSxcbiAgICAgIHZvaWQgMCA9PT0gdGhyZWFkSURzICYmXG4gICAgICAgICgodGhyZWFkSURzID0gbmV3IFNldCgpKSwgcGluZ0NhY2hlLnNldCh3YWtlYWJsZSwgdGhyZWFkSURzKSk7XG4gIHRocmVhZElEcy5oYXMobGFuZXMpIHx8XG4gICAgKCh3b3JrSW5Qcm9ncmVzc1Jvb3REaWRBdHRhY2hQaW5nTGlzdGVuZXIgPSAhMCksXG4gICAgdGhyZWFkSURzLmFkZChsYW5lcyksXG4gICAgKHJvb3QgPSBwaW5nU3VzcGVuZGVkUm9vdC5iaW5kKG51bGwsIHJvb3QsIHdha2VhYmxlLCBsYW5lcykpLFxuICAgIHdha2VhYmxlLnRoZW4ocm9vdCwgcm9vdCkpO1xufVxuZnVuY3Rpb24gcGluZ1N1c3BlbmRlZFJvb3Qocm9vdCwgd2FrZWFibGUsIHBpbmdlZExhbmVzKSB7XG4gIHZhciBwaW5nQ2FjaGUgPSByb290LnBpbmdDYWNoZTtcbiAgbnVsbCAhPT0gcGluZ0NhY2hlICYmIHBpbmdDYWNoZS5kZWxldGUod2FrZWFibGUpO1xuICByb290LnBpbmdlZExhbmVzIHw9IHJvb3Quc3VzcGVuZGVkTGFuZXMgJiBwaW5nZWRMYW5lcztcbiAgcm9vdC53YXJtTGFuZXMgJj0gfnBpbmdlZExhbmVzO1xuICB3b3JrSW5Qcm9ncmVzc1Jvb3QgPT09IHJvb3QgJiZcbiAgICAod29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMgJiBwaW5nZWRMYW5lcykgPT09IHBpbmdlZExhbmVzICYmXG4gICAgKDQgPT09IHdvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMgfHxcbiAgICAoMyA9PT0gd29ya0luUHJvZ3Jlc3NSb290RXhpdFN0YXR1cyAmJlxuICAgICAgKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzICYgNjI5MTQ1NjApID09PVxuICAgICAgICB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmJlxuICAgICAgMzAwID4gbm93KCkgLSBnbG9iYWxNb3N0UmVjZW50RmFsbGJhY2tUaW1lKVxuICAgICAgPyAwID09PSAoZXhlY3V0aW9uQ29udGV4dCAmIDIpICYmIHByZXBhcmVGcmVzaFN0YWNrKHJvb3QsIDApXG4gICAgICA6ICh3b3JrSW5Qcm9ncmVzc1Jvb3RQaW5nZWRMYW5lcyB8PSBwaW5nZWRMYW5lcyksXG4gICAgd29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZXRyeUxhbmVzID09PSB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyAmJlxuICAgICAgKHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmV0cnlMYW5lcyA9IDApKTtcbiAgZW5zdXJlUm9vdElzU2NoZWR1bGVkKHJvb3QpO1xufVxuZnVuY3Rpb24gcmV0cnlUaW1lZE91dEJvdW5kYXJ5KGJvdW5kYXJ5RmliZXIsIHJldHJ5TGFuZSkge1xuICAwID09PSByZXRyeUxhbmUgJiYgKHJldHJ5TGFuZSA9IGNsYWltTmV4dFJldHJ5TGFuZSgpKTtcbiAgYm91bmRhcnlGaWJlciA9IGVucXVldWVDb25jdXJyZW50UmVuZGVyRm9yTGFuZShib3VuZGFyeUZpYmVyLCByZXRyeUxhbmUpO1xuICBudWxsICE9PSBib3VuZGFyeUZpYmVyICYmXG4gICAgKG1hcmtSb290VXBkYXRlZCQxKGJvdW5kYXJ5RmliZXIsIHJldHJ5TGFuZSksXG4gICAgZW5zdXJlUm9vdElzU2NoZWR1bGVkKGJvdW5kYXJ5RmliZXIpKTtcbn1cbmZ1bmN0aW9uIHJldHJ5RGVoeWRyYXRlZFN1c3BlbnNlQm91bmRhcnkoYm91bmRhcnlGaWJlcikge1xuICB2YXIgc3VzcGVuc2VTdGF0ZSA9IGJvdW5kYXJ5RmliZXIubWVtb2l6ZWRTdGF0ZSxcbiAgICByZXRyeUxhbmUgPSAwO1xuICBudWxsICE9PSBzdXNwZW5zZVN0YXRlICYmIChyZXRyeUxhbmUgPSBzdXNwZW5zZVN0YXRlLnJldHJ5TGFuZSk7XG4gIHJldHJ5VGltZWRPdXRCb3VuZGFyeShib3VuZGFyeUZpYmVyLCByZXRyeUxhbmUpO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVJldHJ5V2FrZWFibGUoYm91bmRhcnlGaWJlciwgd2FrZWFibGUpIHtcbiAgdmFyIHJldHJ5TGFuZSA9IDA7XG4gIHN3aXRjaCAoYm91bmRhcnlGaWJlci50YWcpIHtcbiAgICBjYXNlIDEzOlxuICAgICAgdmFyIHJldHJ5Q2FjaGUgPSBib3VuZGFyeUZpYmVyLnN0YXRlTm9kZTtcbiAgICAgIHZhciBzdXNwZW5zZVN0YXRlID0gYm91bmRhcnlGaWJlci5tZW1vaXplZFN0YXRlO1xuICAgICAgbnVsbCAhPT0gc3VzcGVuc2VTdGF0ZSAmJiAocmV0cnlMYW5lID0gc3VzcGVuc2VTdGF0ZS5yZXRyeUxhbmUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOTpcbiAgICAgIHJldHJ5Q2FjaGUgPSBib3VuZGFyeUZpYmVyLnN0YXRlTm9kZTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgMjI6XG4gICAgICByZXRyeUNhY2hlID0gYm91bmRhcnlGaWJlci5zdGF0ZU5vZGUuX3JldHJ5Q2FjaGU7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgzMTQpKTtcbiAgfVxuICBudWxsICE9PSByZXRyeUNhY2hlICYmIHJldHJ5Q2FjaGUuZGVsZXRlKHdha2VhYmxlKTtcbiAgcmV0cnlUaW1lZE91dEJvdW5kYXJ5KGJvdW5kYXJ5RmliZXIsIHJldHJ5TGFuZSk7XG59XG5mdW5jdGlvbiBzY2hlZHVsZUNhbGxiYWNrJDEocHJpb3JpdHlMZXZlbCwgY2FsbGJhY2spIHtcbiAgcmV0dXJuIHNjaGVkdWxlQ2FsbGJhY2skMyhwcmlvcml0eUxldmVsLCBjYWxsYmFjayk7XG59XG52YXIgZmlyc3RTY2hlZHVsZWRSb290ID0gbnVsbCxcbiAgbGFzdFNjaGVkdWxlZFJvb3QgPSBudWxsLFxuICBkaWRTY2hlZHVsZU1pY3JvdGFzayA9ICExLFxuICBtaWdodEhhdmVQZW5kaW5nU3luY1dvcmsgPSAhMSxcbiAgaXNGbHVzaGluZ1dvcmsgPSAhMSxcbiAgY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUgPSAwO1xuZnVuY3Rpb24gZW5zdXJlUm9vdElzU2NoZWR1bGVkKHJvb3QpIHtcbiAgcm9vdCAhPT0gbGFzdFNjaGVkdWxlZFJvb3QgJiZcbiAgICBudWxsID09PSByb290Lm5leHQgJiZcbiAgICAobnVsbCA9PT0gbGFzdFNjaGVkdWxlZFJvb3RcbiAgICAgID8gKGZpcnN0U2NoZWR1bGVkUm9vdCA9IGxhc3RTY2hlZHVsZWRSb290ID0gcm9vdClcbiAgICAgIDogKGxhc3RTY2hlZHVsZWRSb290ID0gbGFzdFNjaGVkdWxlZFJvb3QubmV4dCA9IHJvb3QpKTtcbiAgbWlnaHRIYXZlUGVuZGluZ1N5bmNXb3JrID0gITA7XG4gIGRpZFNjaGVkdWxlTWljcm90YXNrIHx8XG4gICAgKChkaWRTY2hlZHVsZU1pY3JvdGFzayA9ICEwKSxcbiAgICBzY2hlZHVsZUltbWVkaWF0ZVRhc2socHJvY2Vzc1Jvb3RTY2hlZHVsZUluTWljcm90YXNrKSk7XG59XG5mdW5jdGlvbiBmbHVzaFN5bmNXb3JrQWNyb3NzUm9vdHNfaW1wbChzeW5jVHJhbnNpdGlvbkxhbmVzLCBvbmx5TGVnYWN5KSB7XG4gIGlmICghaXNGbHVzaGluZ1dvcmsgJiYgbWlnaHRIYXZlUGVuZGluZ1N5bmNXb3JrKSB7XG4gICAgaXNGbHVzaGluZ1dvcmsgPSAhMDtcbiAgICBkbyB7XG4gICAgICB2YXIgZGlkUGVyZm9ybVNvbWVXb3JrID0gITE7XG4gICAgICBmb3IgKHZhciByb290JDE3MiA9IGZpcnN0U2NoZWR1bGVkUm9vdDsgbnVsbCAhPT0gcm9vdCQxNzI7ICkge1xuICAgICAgICBpZiAoIW9ubHlMZWdhY3kpXG4gICAgICAgICAgaWYgKDAgIT09IHN5bmNUcmFuc2l0aW9uTGFuZXMpIHtcbiAgICAgICAgICAgIHZhciBwZW5kaW5nTGFuZXMgPSByb290JDE3Mi5wZW5kaW5nTGFuZXM7XG4gICAgICAgICAgICBpZiAoMCA9PT0gcGVuZGluZ0xhbmVzKSB2YXIgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gMDtcbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICB2YXIgc3VzcGVuZGVkTGFuZXMgPSByb290JDE3Mi5zdXNwZW5kZWRMYW5lcyxcbiAgICAgICAgICAgICAgICBwaW5nZWRMYW5lcyA9IHJvb3QkMTcyLnBpbmdlZExhbmVzO1xuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPVxuICAgICAgICAgICAgICAgICgxIDw8ICgzMSAtIGNsejMyKDQyIHwgc3luY1RyYW5zaXRpb25MYW5lcykgKyAxKSkgLSAxO1xuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgJj1cbiAgICAgICAgICAgICAgICBwZW5kaW5nTGFuZXMgJiB+KHN1c3BlbmRlZExhbmVzICYgfnBpbmdlZExhbmVzKTtcbiAgICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID1cbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgJiAyMDEzMjY2NzdcbiAgICAgICAgICAgICAgICAgID8gKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmIDIwMTMyNjY3NykgfCAxXG4gICAgICAgICAgICAgICAgICA6IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdFxuICAgICAgICAgICAgICAgICAgICA/IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCB8IDJcbiAgICAgICAgICAgICAgICAgICAgOiAwO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgMCAhPT0gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ICYmXG4gICAgICAgICAgICAgICgoZGlkUGVyZm9ybVNvbWVXb3JrID0gITApLFxuICAgICAgICAgICAgICBwZXJmb3JtU3luY1dvcmtPblJvb3Qocm9vdCQxNzIsIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCkpO1xuICAgICAgICAgIH0gZWxzZVxuICAgICAgICAgICAgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzKSxcbiAgICAgICAgICAgICAgKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IGdldE5leHRMYW5lcyhcbiAgICAgICAgICAgICAgICByb290JDE3MixcbiAgICAgICAgICAgICAgICByb290JDE3MiA9PT0gd29ya0luUHJvZ3Jlc3NSb290ID8gSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0IDogMFxuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgMCA9PT0gKEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCAmIDMpIHx8XG4gICAgICAgICAgICAgICAgY2hlY2tJZlJvb3RJc1ByZXJlbmRlcmluZyhyb290JDE3MiwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSB8fFxuICAgICAgICAgICAgICAgICgoZGlkUGVyZm9ybVNvbWVXb3JrID0gITApLFxuICAgICAgICAgICAgICAgIHBlcmZvcm1TeW5jV29ya09uUm9vdChyb290JDE3MiwgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSk7XG4gICAgICAgIHJvb3QkMTcyID0gcm9vdCQxNzIubmV4dDtcbiAgICAgIH1cbiAgICB9IHdoaWxlIChkaWRQZXJmb3JtU29tZVdvcmspO1xuICAgIGlzRmx1c2hpbmdXb3JrID0gITE7XG4gIH1cbn1cbmZ1bmN0aW9uIHByb2Nlc3NSb290U2NoZWR1bGVJbk1pY3JvdGFzaygpIHtcbiAgbWlnaHRIYXZlUGVuZGluZ1N5bmNXb3JrID0gZGlkU2NoZWR1bGVNaWNyb3Rhc2sgPSAhMTtcbiAgdmFyIHN5bmNUcmFuc2l0aW9uTGFuZXMgPSAwO1xuICAwICE9PSBjdXJyZW50RXZlbnRUcmFuc2l0aW9uTGFuZSAmJlxuICAgIChzaG91bGRBdHRlbXB0RWFnZXJUcmFuc2l0aW9uKCkgJiZcbiAgICAgIChzeW5jVHJhbnNpdGlvbkxhbmVzID0gY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUpLFxuICAgIChjdXJyZW50RXZlbnRUcmFuc2l0aW9uTGFuZSA9IDApKTtcbiAgZm9yIChcbiAgICB2YXIgY3VycmVudFRpbWUgPSBub3coKSwgcHJldiA9IG51bGwsIHJvb3QgPSBmaXJzdFNjaGVkdWxlZFJvb3Q7XG4gICAgbnVsbCAhPT0gcm9vdDtcblxuICApIHtcbiAgICB2YXIgbmV4dCA9IHJvb3QubmV4dCxcbiAgICAgIG5leHRMYW5lcyA9IHNjaGVkdWxlVGFza0ZvclJvb3REdXJpbmdNaWNyb3Rhc2socm9vdCwgY3VycmVudFRpbWUpO1xuICAgIGlmICgwID09PSBuZXh0TGFuZXMpXG4gICAgICAocm9vdC5uZXh0ID0gbnVsbCksXG4gICAgICAgIG51bGwgPT09IHByZXYgPyAoZmlyc3RTY2hlZHVsZWRSb290ID0gbmV4dCkgOiAocHJldi5uZXh0ID0gbmV4dCksXG4gICAgICAgIG51bGwgPT09IG5leHQgJiYgKGxhc3RTY2hlZHVsZWRSb290ID0gcHJldik7XG4gICAgZWxzZSBpZiAoXG4gICAgICAoKHByZXYgPSByb290KSwgMCAhPT0gc3luY1RyYW5zaXRpb25MYW5lcyB8fCAwICE9PSAobmV4dExhbmVzICYgMykpXG4gICAgKVxuICAgICAgbWlnaHRIYXZlUGVuZGluZ1N5bmNXb3JrID0gITA7XG4gICAgcm9vdCA9IG5leHQ7XG4gIH1cbiAgZmx1c2hTeW5jV29ya0Fjcm9zc1Jvb3RzX2ltcGwoc3luY1RyYW5zaXRpb25MYW5lcywgITEpO1xufVxuZnVuY3Rpb24gc2NoZWR1bGVUYXNrRm9yUm9vdER1cmluZ01pY3JvdGFzayhyb290LCBjdXJyZW50VGltZSkge1xuICBmb3IgKFxuICAgIHZhciBzdXNwZW5kZWRMYW5lcyA9IHJvb3Quc3VzcGVuZGVkTGFuZXMsXG4gICAgICBwaW5nZWRMYW5lcyA9IHJvb3QucGluZ2VkTGFuZXMsXG4gICAgICBleHBpcmF0aW9uVGltZXMgPSByb290LmV4cGlyYXRpb25UaW1lcyxcbiAgICAgIGxhbmVzID0gcm9vdC5wZW5kaW5nTGFuZXMgJiAtNjI5MTQ1NjE7XG4gICAgMCA8IGxhbmVzO1xuXG4gICkge1xuICAgIHZhciBpbmRleCQ1ID0gMzEgLSBjbHozMihsYW5lcyksXG4gICAgICBsYW5lID0gMSA8PCBpbmRleCQ1LFxuICAgICAgZXhwaXJhdGlvblRpbWUgPSBleHBpcmF0aW9uVGltZXNbaW5kZXgkNV07XG4gICAgaWYgKC0xID09PSBleHBpcmF0aW9uVGltZSkge1xuICAgICAgaWYgKDAgPT09IChsYW5lICYgc3VzcGVuZGVkTGFuZXMpIHx8IDAgIT09IChsYW5lICYgcGluZ2VkTGFuZXMpKVxuICAgICAgICBleHBpcmF0aW9uVGltZXNbaW5kZXgkNV0gPSBjb21wdXRlRXhwaXJhdGlvblRpbWUobGFuZSwgY3VycmVudFRpbWUpO1xuICAgIH0gZWxzZSBleHBpcmF0aW9uVGltZSA8PSBjdXJyZW50VGltZSAmJiAocm9vdC5leHBpcmVkTGFuZXMgfD0gbGFuZSk7XG4gICAgbGFuZXMgJj0gfmxhbmU7XG4gIH1cbiAgY3VycmVudFRpbWUgPSB3b3JrSW5Qcm9ncmVzc1Jvb3Q7XG4gIHN1c3BlbmRlZExhbmVzID0gd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXM7XG4gIHN1c3BlbmRlZExhbmVzID0gZ2V0TmV4dExhbmVzKFxuICAgIHJvb3QsXG4gICAgcm9vdCA9PT0gY3VycmVudFRpbWUgPyBzdXNwZW5kZWRMYW5lcyA6IDBcbiAgKTtcbiAgcGluZ2VkTGFuZXMgPSByb290LmNhbGxiYWNrTm9kZTtcbiAgaWYgKFxuICAgIDAgPT09IHN1c3BlbmRlZExhbmVzIHx8XG4gICAgKHJvb3QgPT09IGN1cnJlbnRUaW1lICYmIDIgPT09IHdvcmtJblByb2dyZXNzU3VzcGVuZGVkUmVhc29uKSB8fFxuICAgIG51bGwgIT09IHJvb3QuY2FuY2VsUGVuZGluZ0NvbW1pdFxuICApXG4gICAgcmV0dXJuIChcbiAgICAgIG51bGwgIT09IHBpbmdlZExhbmVzICYmXG4gICAgICAgIG51bGwgIT09IHBpbmdlZExhbmVzICYmXG4gICAgICAgIGNhbmNlbENhbGxiYWNrJDEocGluZ2VkTGFuZXMpLFxuICAgICAgKHJvb3QuY2FsbGJhY2tOb2RlID0gbnVsbCksXG4gICAgICAocm9vdC5jYWxsYmFja1ByaW9yaXR5ID0gMClcbiAgICApO1xuICBpZiAoXG4gICAgMCA9PT0gKHN1c3BlbmRlZExhbmVzICYgMykgfHxcbiAgICBjaGVja0lmUm9vdElzUHJlcmVuZGVyaW5nKHJvb3QsIHN1c3BlbmRlZExhbmVzKVxuICApIHtcbiAgICBjdXJyZW50VGltZSA9IHN1c3BlbmRlZExhbmVzICYgLXN1c3BlbmRlZExhbmVzO1xuICAgIGlmIChjdXJyZW50VGltZSA9PT0gcm9vdC5jYWxsYmFja1ByaW9yaXR5KSByZXR1cm4gY3VycmVudFRpbWU7XG4gICAgbnVsbCAhPT0gcGluZ2VkTGFuZXMgJiYgY2FuY2VsQ2FsbGJhY2skMShwaW5nZWRMYW5lcyk7XG4gICAgc3dpdGNoIChsYW5lc1RvRXZlbnRQcmlvcml0eShzdXNwZW5kZWRMYW5lcykpIHtcbiAgICAgIGNhc2UgMjpcbiAgICAgIGNhc2UgODpcbiAgICAgICAgc3VzcGVuZGVkTGFuZXMgPSBVc2VyQmxvY2tpbmdQcmlvcml0eTtcbiAgICAgICAgYnJlYWs7XG4gICAgICBjYXNlIDMyOlxuICAgICAgICBzdXNwZW5kZWRMYW5lcyA9IE5vcm1hbFByaW9yaXR5JDE7XG4gICAgICAgIGJyZWFrO1xuICAgICAgY2FzZSAyNjg0MzU0NTY6XG4gICAgICAgIHN1c3BlbmRlZExhbmVzID0gSWRsZVByaW9yaXR5O1xuICAgICAgICBicmVhaztcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHN1c3BlbmRlZExhbmVzID0gTm9ybWFsUHJpb3JpdHkkMTtcbiAgICB9XG4gICAgcGluZ2VkTGFuZXMgPSBwZXJmb3JtV29ya09uUm9vdFZpYVNjaGVkdWxlclRhc2suYmluZChudWxsLCByb290KTtcbiAgICBzdXNwZW5kZWRMYW5lcyA9IHNjaGVkdWxlQ2FsbGJhY2skMyhzdXNwZW5kZWRMYW5lcywgcGluZ2VkTGFuZXMpO1xuICAgIHJvb3QuY2FsbGJhY2tQcmlvcml0eSA9IGN1cnJlbnRUaW1lO1xuICAgIHJvb3QuY2FsbGJhY2tOb2RlID0gc3VzcGVuZGVkTGFuZXM7XG4gICAgcmV0dXJuIGN1cnJlbnRUaW1lO1xuICB9XG4gIG51bGwgIT09IHBpbmdlZExhbmVzICYmIG51bGwgIT09IHBpbmdlZExhbmVzICYmIGNhbmNlbENhbGxiYWNrJDEocGluZ2VkTGFuZXMpO1xuICByb290LmNhbGxiYWNrUHJpb3JpdHkgPSAyO1xuICByb290LmNhbGxiYWNrTm9kZSA9IG51bGw7XG4gIHJldHVybiAyO1xufVxuZnVuY3Rpb24gcGVyZm9ybVdvcmtPblJvb3RWaWFTY2hlZHVsZXJUYXNrKHJvb3QsIGRpZFRpbWVvdXQpIHtcbiAgdmFyIG9yaWdpbmFsQ2FsbGJhY2tOb2RlID0gcm9vdC5jYWxsYmFja05vZGU7XG4gIGlmIChmbHVzaFBhc3NpdmVFZmZlY3RzKCkgJiYgcm9vdC5jYWxsYmFja05vZGUgIT09IG9yaWdpbmFsQ2FsbGJhY2tOb2RlKVxuICAgIHJldHVybiBudWxsO1xuICB2YXIgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMkanNjb21wJDAgPSB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcztcbiAgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMkanNjb21wJDAgPSBnZXROZXh0TGFuZXMoXG4gICAgcm9vdCxcbiAgICByb290ID09PSB3b3JrSW5Qcm9ncmVzc1Jvb3QgPyB3b3JrSW5Qcm9ncmVzc1Jvb3RSZW5kZXJMYW5lcyRqc2NvbXAkMCA6IDBcbiAgKTtcbiAgaWYgKDAgPT09IHdvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzJGpzY29tcCQwKSByZXR1cm4gbnVsbDtcbiAgcGVyZm9ybVdvcmtPblJvb3Qocm9vdCwgd29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMkanNjb21wJDAsIGRpZFRpbWVvdXQpO1xuICBzY2hlZHVsZVRhc2tGb3JSb290RHVyaW5nTWljcm90YXNrKHJvb3QsIG5vdygpKTtcbiAgcmV0dXJuIG51bGwgIT0gcm9vdC5jYWxsYmFja05vZGUgJiYgcm9vdC5jYWxsYmFja05vZGUgPT09IG9yaWdpbmFsQ2FsbGJhY2tOb2RlXG4gICAgPyBwZXJmb3JtV29ya09uUm9vdFZpYVNjaGVkdWxlclRhc2suYmluZChudWxsLCByb290KVxuICAgIDogbnVsbDtcbn1cbmZ1bmN0aW9uIHBlcmZvcm1TeW5jV29ya09uUm9vdChyb290LCBsYW5lcykge1xuICBpZiAoZmx1c2hQYXNzaXZlRWZmZWN0cygpKSByZXR1cm4gbnVsbDtcbiAgcGVyZm9ybVdvcmtPblJvb3Qocm9vdCwgbGFuZXMsICEwKTtcbn1cbmZ1bmN0aW9uIHNjaGVkdWxlSW1tZWRpYXRlVGFzayhjYikge1xuICBzY2hlZHVsZU1pY3JvdGFzayhmdW5jdGlvbiAoKSB7XG4gICAgMCAhPT0gKGV4ZWN1dGlvbkNvbnRleHQgJiA2KVxuICAgICAgPyBzY2hlZHVsZUNhbGxiYWNrJDMoSW1tZWRpYXRlUHJpb3JpdHksIGNiKVxuICAgICAgOiBjYigpO1xuICB9KTtcbn1cbmZ1bmN0aW9uIHJlcXVlc3RUcmFuc2l0aW9uTGFuZSgpIHtcbiAgMCA9PT0gY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUgJiZcbiAgICAoY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUgPSBjbGFpbU5leHRUcmFuc2l0aW9uTGFuZSgpKTtcbiAgcmV0dXJuIGN1cnJlbnRFdmVudFRyYW5zaXRpb25MYW5lO1xufVxuZnVuY3Rpb24gY29lcmNlRm9ybUFjdGlvblByb3AoYWN0aW9uUHJvcCkge1xuICByZXR1cm4gbnVsbCA9PSBhY3Rpb25Qcm9wIHx8XG4gICAgXCJzeW1ib2xcIiA9PT0gdHlwZW9mIGFjdGlvblByb3AgfHxcbiAgICBcImJvb2xlYW5cIiA9PT0gdHlwZW9mIGFjdGlvblByb3BcbiAgICA/IG51bGxcbiAgICA6IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGFjdGlvblByb3BcbiAgICAgID8gYWN0aW9uUHJvcFxuICAgICAgOiBzYW5pdGl6ZVVSTChcIlwiICsgYWN0aW9uUHJvcCk7XG59XG5mdW5jdGlvbiBjcmVhdGVGb3JtRGF0YVdpdGhTdWJtaXR0ZXIoZm9ybSwgc3VibWl0dGVyKSB7XG4gIHZhciB0ZW1wID0gc3VibWl0dGVyLm93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImlucHV0XCIpO1xuICB0ZW1wLm5hbWUgPSBzdWJtaXR0ZXIubmFtZTtcbiAgdGVtcC52YWx1ZSA9IHN1Ym1pdHRlci52YWx1ZTtcbiAgZm9ybS5pZCAmJiB0ZW1wLnNldEF0dHJpYnV0ZShcImZvcm1cIiwgZm9ybS5pZCk7XG4gIHN1Ym1pdHRlci5wYXJlbnROb2RlLmluc2VydEJlZm9yZSh0ZW1wLCBzdWJtaXR0ZXIpO1xuICBmb3JtID0gbmV3IEZvcm1EYXRhKGZvcm0pO1xuICB0ZW1wLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGVtcCk7XG4gIHJldHVybiBmb3JtO1xufVxuZnVuY3Rpb24gZXh0cmFjdEV2ZW50cyQxKFxuICBkaXNwYXRjaFF1ZXVlLFxuICBkb21FdmVudE5hbWUsXG4gIG1heWJlVGFyZ2V0SW5zdCxcbiAgbmF0aXZlRXZlbnQsXG4gIG5hdGl2ZUV2ZW50VGFyZ2V0XG4pIHtcbiAgaWYgKFxuICAgIFwic3VibWl0XCIgPT09IGRvbUV2ZW50TmFtZSAmJlxuICAgIG1heWJlVGFyZ2V0SW5zdCAmJlxuICAgIG1heWJlVGFyZ2V0SW5zdC5zdGF0ZU5vZGUgPT09IG5hdGl2ZUV2ZW50VGFyZ2V0XG4gICkge1xuICAgIHZhciBhY3Rpb24gPSBjb2VyY2VGb3JtQWN0aW9uUHJvcChcbiAgICAgICAgKG5hdGl2ZUV2ZW50VGFyZ2V0W2ludGVybmFsUHJvcHNLZXldIHx8IG51bGwpLmFjdGlvblxuICAgICAgKSxcbiAgICAgIHN1Ym1pdHRlciA9IG5hdGl2ZUV2ZW50LnN1Ym1pdHRlcjtcbiAgICBzdWJtaXR0ZXIgJiZcbiAgICAgICgoZG9tRXZlbnROYW1lID0gKGRvbUV2ZW50TmFtZSA9IHN1Ym1pdHRlcltpbnRlcm5hbFByb3BzS2V5XSB8fCBudWxsKVxuICAgICAgICA/IGNvZXJjZUZvcm1BY3Rpb25Qcm9wKGRvbUV2ZW50TmFtZS5mb3JtQWN0aW9uKVxuICAgICAgICA6IHN1Ym1pdHRlci5nZXRBdHRyaWJ1dGUoXCJmb3JtQWN0aW9uXCIpKSxcbiAgICAgIG51bGwgIT09IGRvbUV2ZW50TmFtZSAmJiAoKGFjdGlvbiA9IGRvbUV2ZW50TmFtZSksIChzdWJtaXR0ZXIgPSBudWxsKSkpO1xuICAgIHZhciBldmVudCA9IG5ldyBTeW50aGV0aWNFdmVudChcbiAgICAgIFwiYWN0aW9uXCIsXG4gICAgICBcImFjdGlvblwiLFxuICAgICAgbnVsbCxcbiAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgbmF0aXZlRXZlbnRUYXJnZXRcbiAgICApO1xuICAgIGRpc3BhdGNoUXVldWUucHVzaCh7XG4gICAgICBldmVudDogZXZlbnQsXG4gICAgICBsaXN0ZW5lcnM6IFtcbiAgICAgICAge1xuICAgICAgICAgIGluc3RhbmNlOiBudWxsLFxuICAgICAgICAgIGxpc3RlbmVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAobmF0aXZlRXZlbnQuZGVmYXVsdFByZXZlbnRlZCkge1xuICAgICAgICAgICAgICBpZiAoMCAhPT0gY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUpIHtcbiAgICAgICAgICAgICAgICB2YXIgZm9ybURhdGEgPSBzdWJtaXR0ZXJcbiAgICAgICAgICAgICAgICAgID8gY3JlYXRlRm9ybURhdGFXaXRoU3VibWl0dGVyKG5hdGl2ZUV2ZW50VGFyZ2V0LCBzdWJtaXR0ZXIpXG4gICAgICAgICAgICAgICAgICA6IG5ldyBGb3JtRGF0YShuYXRpdmVFdmVudFRhcmdldCk7XG4gICAgICAgICAgICAgICAgc3RhcnRIb3N0VHJhbnNpdGlvbihcbiAgICAgICAgICAgICAgICAgIG1heWJlVGFyZ2V0SW5zdCxcbiAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgcGVuZGluZzogITAsXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IGZvcm1EYXRhLFxuICAgICAgICAgICAgICAgICAgICBtZXRob2Q6IG5hdGl2ZUV2ZW50VGFyZ2V0Lm1ldGhvZCxcbiAgICAgICAgICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb25cbiAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgICAgICAgZm9ybURhdGFcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2VcbiAgICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgYWN0aW9uICYmXG4gICAgICAgICAgICAgICAgKGV2ZW50LnByZXZlbnREZWZhdWx0KCksXG4gICAgICAgICAgICAgICAgKGZvcm1EYXRhID0gc3VibWl0dGVyXG4gICAgICAgICAgICAgICAgICA/IGNyZWF0ZUZvcm1EYXRhV2l0aFN1Ym1pdHRlcihuYXRpdmVFdmVudFRhcmdldCwgc3VibWl0dGVyKVxuICAgICAgICAgICAgICAgICAgOiBuZXcgRm9ybURhdGEobmF0aXZlRXZlbnRUYXJnZXQpKSxcbiAgICAgICAgICAgICAgICBzdGFydEhvc3RUcmFuc2l0aW9uKFxuICAgICAgICAgICAgICAgICAgbWF5YmVUYXJnZXRJbnN0LFxuICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICBwZW5kaW5nOiAhMCxcbiAgICAgICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgICAgIG1ldGhvZDogbmF0aXZlRXZlbnRUYXJnZXQubWV0aG9kLFxuICAgICAgICAgICAgICAgICAgICBhY3Rpb246IGFjdGlvblxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgIGFjdGlvbixcbiAgICAgICAgICAgICAgICAgIGZvcm1EYXRhXG4gICAgICAgICAgICAgICAgKSk7XG4gICAgICAgICAgfSxcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0OiBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICB9XG4gICAgICBdXG4gICAgfSk7XG4gIH1cbn1cbmZvciAoXG4gIHZhciBpJGpzY29tcCRpbmxpbmVfMTQzOSA9IDA7XG4gIGkkanNjb21wJGlubGluZV8xNDM5IDwgc2ltcGxlRXZlbnRQbHVnaW5FdmVudHMubGVuZ3RoO1xuICBpJGpzY29tcCRpbmxpbmVfMTQzOSsrXG4pIHtcbiAgdmFyIGV2ZW50TmFtZSRqc2NvbXAkaW5saW5lXzE0NDAgPVxuICAgICAgc2ltcGxlRXZlbnRQbHVnaW5FdmVudHNbaSRqc2NvbXAkaW5saW5lXzE0MzldLFxuICAgIGRvbUV2ZW50TmFtZSRqc2NvbXAkaW5saW5lXzE0NDEgPVxuICAgICAgZXZlbnROYW1lJGpzY29tcCRpbmxpbmVfMTQ0MC50b0xvd2VyQ2FzZSgpLFxuICAgIGNhcGl0YWxpemVkRXZlbnQkanNjb21wJGlubGluZV8xNDQyID1cbiAgICAgIGV2ZW50TmFtZSRqc2NvbXAkaW5saW5lXzE0NDBbMF0udG9VcHBlckNhc2UoKSArXG4gICAgICBldmVudE5hbWUkanNjb21wJGlubGluZV8xNDQwLnNsaWNlKDEpO1xuICByZWdpc3RlclNpbXBsZUV2ZW50KFxuICAgIGRvbUV2ZW50TmFtZSRqc2NvbXAkaW5saW5lXzE0NDEsXG4gICAgXCJvblwiICsgY2FwaXRhbGl6ZWRFdmVudCRqc2NvbXAkaW5saW5lXzE0NDJcbiAgKTtcbn1cbnJlZ2lzdGVyU2ltcGxlRXZlbnQoQU5JTUFUSU9OX0VORCwgXCJvbkFuaW1hdGlvbkVuZFwiKTtcbnJlZ2lzdGVyU2ltcGxlRXZlbnQoQU5JTUFUSU9OX0lURVJBVElPTiwgXCJvbkFuaW1hdGlvbkl0ZXJhdGlvblwiKTtcbnJlZ2lzdGVyU2ltcGxlRXZlbnQoQU5JTUFUSU9OX1NUQVJULCBcIm9uQW5pbWF0aW9uU3RhcnRcIik7XG5yZWdpc3RlclNpbXBsZUV2ZW50KFwiZGJsY2xpY2tcIiwgXCJvbkRvdWJsZUNsaWNrXCIpO1xucmVnaXN0ZXJTaW1wbGVFdmVudChcImZvY3VzaW5cIiwgXCJvbkZvY3VzXCIpO1xucmVnaXN0ZXJTaW1wbGVFdmVudChcImZvY3Vzb3V0XCIsIFwib25CbHVyXCIpO1xucmVnaXN0ZXJTaW1wbGVFdmVudChUUkFOU0lUSU9OX1JVTiwgXCJvblRyYW5zaXRpb25SdW5cIik7XG5yZWdpc3RlclNpbXBsZUV2ZW50KFRSQU5TSVRJT05fU1RBUlQsIFwib25UcmFuc2l0aW9uU3RhcnRcIik7XG5yZWdpc3RlclNpbXBsZUV2ZW50KFRSQU5TSVRJT05fQ0FOQ0VMLCBcIm9uVHJhbnNpdGlvbkNhbmNlbFwiKTtcbnJlZ2lzdGVyU2ltcGxlRXZlbnQoVFJBTlNJVElPTl9FTkQsIFwib25UcmFuc2l0aW9uRW5kXCIpO1xucmVnaXN0ZXJEaXJlY3RFdmVudChcIm9uTW91c2VFbnRlclwiLCBbXCJtb3VzZW91dFwiLCBcIm1vdXNlb3ZlclwiXSk7XG5yZWdpc3RlckRpcmVjdEV2ZW50KFwib25Nb3VzZUxlYXZlXCIsIFtcIm1vdXNlb3V0XCIsIFwibW91c2VvdmVyXCJdKTtcbnJlZ2lzdGVyRGlyZWN0RXZlbnQoXCJvblBvaW50ZXJFbnRlclwiLCBbXCJwb2ludGVyb3V0XCIsIFwicG9pbnRlcm92ZXJcIl0pO1xucmVnaXN0ZXJEaXJlY3RFdmVudChcIm9uUG9pbnRlckxlYXZlXCIsIFtcInBvaW50ZXJvdXRcIiwgXCJwb2ludGVyb3ZlclwiXSk7XG5yZWdpc3RlclR3b1BoYXNlRXZlbnQoXG4gIFwib25DaGFuZ2VcIixcbiAgXCJjaGFuZ2UgY2xpY2sgZm9jdXNpbiBmb2N1c291dCBpbnB1dCBrZXlkb3duIGtleXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFwiIFwiKVxuKTtcbnJlZ2lzdGVyVHdvUGhhc2VFdmVudChcbiAgXCJvblNlbGVjdFwiLFxuICBcImZvY3Vzb3V0IGNvbnRleHRtZW51IGRyYWdlbmQgZm9jdXNpbiBrZXlkb3duIGtleXVwIG1vdXNlZG93biBtb3VzZXVwIHNlbGVjdGlvbmNoYW5nZVwiLnNwbGl0KFxuICAgIFwiIFwiXG4gIClcbik7XG5yZWdpc3RlclR3b1BoYXNlRXZlbnQoXCJvbkJlZm9yZUlucHV0XCIsIFtcbiAgXCJjb21wb3NpdGlvbmVuZFwiLFxuICBcImtleXByZXNzXCIsXG4gIFwidGV4dElucHV0XCIsXG4gIFwicGFzdGVcIlxuXSk7XG5yZWdpc3RlclR3b1BoYXNlRXZlbnQoXG4gIFwib25Db21wb3NpdGlvbkVuZFwiLFxuICBcImNvbXBvc2l0aW9uZW5kIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpXG4pO1xucmVnaXN0ZXJUd29QaGFzZUV2ZW50KFxuICBcIm9uQ29tcG9zaXRpb25TdGFydFwiLFxuICBcImNvbXBvc2l0aW9uc3RhcnQgZm9jdXNvdXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBtb3VzZWRvd25cIi5zcGxpdChcIiBcIilcbik7XG5yZWdpc3RlclR3b1BoYXNlRXZlbnQoXG4gIFwib25Db21wb3NpdGlvblVwZGF0ZVwiLFxuICBcImNvbXBvc2l0aW9udXBkYXRlIGZvY3Vzb3V0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgbW91c2Vkb3duXCIuc3BsaXQoXCIgXCIpXG4pO1xudmFyIG1lZGlhRXZlbnRUeXBlcyA9XG4gICAgXCJhYm9ydCBjYW5wbGF5IGNhbnBsYXl0aHJvdWdoIGR1cmF0aW9uY2hhbmdlIGVtcHRpZWQgZW5jcnlwdGVkIGVuZGVkIGVycm9yIGxvYWRlZGRhdGEgbG9hZGVkbWV0YWRhdGEgbG9hZHN0YXJ0IHBhdXNlIHBsYXkgcGxheWluZyBwcm9ncmVzcyByYXRlY2hhbmdlIHJlc2l6ZSBzZWVrZWQgc2Vla2luZyBzdGFsbGVkIHN1c3BlbmQgdGltZXVwZGF0ZSB2b2x1bWVjaGFuZ2Ugd2FpdGluZ1wiLnNwbGl0KFxuICAgICAgXCIgXCJcbiAgICApLFxuICBub25EZWxlZ2F0ZWRFdmVudHMgPSBuZXcgU2V0KFxuICAgIFwiYmVmb3JldG9nZ2xlIGNhbmNlbCBjbG9zZSBpbnZhbGlkIGxvYWQgc2Nyb2xsIHNjcm9sbGVuZCB0b2dnbGVcIlxuICAgICAgLnNwbGl0KFwiIFwiKVxuICAgICAgLmNvbmNhdChtZWRpYUV2ZW50VHlwZXMpXG4gICk7XG5mdW5jdGlvbiBwcm9jZXNzRGlzcGF0Y2hRdWV1ZShkaXNwYXRjaFF1ZXVlLCBldmVudFN5c3RlbUZsYWdzKSB7XG4gIGV2ZW50U3lzdGVtRmxhZ3MgPSAwICE9PSAoZXZlbnRTeXN0ZW1GbGFncyAmIDQpO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGRpc3BhdGNoUXVldWUubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgX2Rpc3BhdGNoUXVldWUkaSA9IGRpc3BhdGNoUXVldWVbaV0sXG4gICAgICBldmVudCA9IF9kaXNwYXRjaFF1ZXVlJGkuZXZlbnQ7XG4gICAgX2Rpc3BhdGNoUXVldWUkaSA9IF9kaXNwYXRjaFF1ZXVlJGkubGlzdGVuZXJzO1xuICAgIGE6IHtcbiAgICAgIHZhciBwcmV2aW91c0luc3RhbmNlID0gdm9pZCAwO1xuICAgICAgaWYgKGV2ZW50U3lzdGVtRmxhZ3MpXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgdmFyIGkkanNjb21wJDAgPSBfZGlzcGF0Y2hRdWV1ZSRpLmxlbmd0aCAtIDE7XG4gICAgICAgICAgMCA8PSBpJGpzY29tcCQwO1xuICAgICAgICAgIGkkanNjb21wJDAtLVxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgX2Rpc3BhdGNoTGlzdGVuZXJzJGkgPSBfZGlzcGF0Y2hRdWV1ZSRpW2kkanNjb21wJDBdLFxuICAgICAgICAgICAgaW5zdGFuY2UgPSBfZGlzcGF0Y2hMaXN0ZW5lcnMkaS5pbnN0YW5jZSxcbiAgICAgICAgICAgIGN1cnJlbnRUYXJnZXQgPSBfZGlzcGF0Y2hMaXN0ZW5lcnMkaS5jdXJyZW50VGFyZ2V0O1xuICAgICAgICAgIF9kaXNwYXRjaExpc3RlbmVycyRpID0gX2Rpc3BhdGNoTGlzdGVuZXJzJGkubGlzdGVuZXI7XG4gICAgICAgICAgaWYgKGluc3RhbmNlICE9PSBwcmV2aW91c0luc3RhbmNlICYmIGV2ZW50LmlzUHJvcGFnYXRpb25TdG9wcGVkKCkpXG4gICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIHByZXZpb3VzSW5zdGFuY2UgPSBfZGlzcGF0Y2hMaXN0ZW5lcnMkaTtcbiAgICAgICAgICBldmVudC5jdXJyZW50VGFyZ2V0ID0gY3VycmVudFRhcmdldDtcbiAgICAgICAgICB0cnkge1xuICAgICAgICAgICAgcHJldmlvdXNJbnN0YW5jZShldmVudCk7XG4gICAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIHJlcG9ydEdsb2JhbEVycm9yKGVycm9yKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9IG51bGw7XG4gICAgICAgICAgcHJldmlvdXNJbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgICB9XG4gICAgICBlbHNlXG4gICAgICAgIGZvciAoXG4gICAgICAgICAgaSRqc2NvbXAkMCA9IDA7XG4gICAgICAgICAgaSRqc2NvbXAkMCA8IF9kaXNwYXRjaFF1ZXVlJGkubGVuZ3RoO1xuICAgICAgICAgIGkkanNjb21wJDArK1xuICAgICAgICApIHtcbiAgICAgICAgICBfZGlzcGF0Y2hMaXN0ZW5lcnMkaSA9IF9kaXNwYXRjaFF1ZXVlJGlbaSRqc2NvbXAkMF07XG4gICAgICAgICAgaW5zdGFuY2UgPSBfZGlzcGF0Y2hMaXN0ZW5lcnMkaS5pbnN0YW5jZTtcbiAgICAgICAgICBjdXJyZW50VGFyZ2V0ID0gX2Rpc3BhdGNoTGlzdGVuZXJzJGkuY3VycmVudFRhcmdldDtcbiAgICAgICAgICBfZGlzcGF0Y2hMaXN0ZW5lcnMkaSA9IF9kaXNwYXRjaExpc3RlbmVycyRpLmxpc3RlbmVyO1xuICAgICAgICAgIGlmIChpbnN0YW5jZSAhPT0gcHJldmlvdXNJbnN0YW5jZSAmJiBldmVudC5pc1Byb3BhZ2F0aW9uU3RvcHBlZCgpKVxuICAgICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgICBwcmV2aW91c0luc3RhbmNlID0gX2Rpc3BhdGNoTGlzdGVuZXJzJGk7XG4gICAgICAgICAgZXZlbnQuY3VycmVudFRhcmdldCA9IGN1cnJlbnRUYXJnZXQ7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIHByZXZpb3VzSW5zdGFuY2UoZXZlbnQpO1xuICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICByZXBvcnRHbG9iYWxFcnJvcihlcnJvcik7XG4gICAgICAgICAgfVxuICAgICAgICAgIGV2ZW50LmN1cnJlbnRUYXJnZXQgPSBudWxsO1xuICAgICAgICAgIHByZXZpb3VzSW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICAgICAgfVxuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChkb21FdmVudE5hbWUsIHRhcmdldEVsZW1lbnQpIHtcbiAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IHRhcmdldEVsZW1lbnRbaW50ZXJuYWxFdmVudEhhbmRsZXJzS2V5XTtcbiAgdm9pZCAwID09PSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgJiZcbiAgICAoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID0gdGFyZ2V0RWxlbWVudFtpbnRlcm5hbEV2ZW50SGFuZGxlcnNLZXldID1cbiAgICAgIG5ldyBTZXQoKSk7XG4gIHZhciBsaXN0ZW5lclNldEtleSA9IGRvbUV2ZW50TmFtZSArIFwiX19idWJibGVcIjtcbiAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LmhhcyhsaXN0ZW5lclNldEtleSkgfHxcbiAgICAoYWRkVHJhcHBlZEV2ZW50TGlzdGVuZXIodGFyZ2V0RWxlbWVudCwgZG9tRXZlbnROYW1lLCAyLCAhMSksXG4gICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0LmFkZChsaXN0ZW5lclNldEtleSkpO1xufVxuZnVuY3Rpb24gbGlzdGVuVG9OYXRpdmVFdmVudChkb21FdmVudE5hbWUsIGlzQ2FwdHVyZVBoYXNlTGlzdGVuZXIsIHRhcmdldCkge1xuICB2YXIgZXZlbnRTeXN0ZW1GbGFncyA9IDA7XG4gIGlzQ2FwdHVyZVBoYXNlTGlzdGVuZXIgJiYgKGV2ZW50U3lzdGVtRmxhZ3MgfD0gNCk7XG4gIGFkZFRyYXBwZWRFdmVudExpc3RlbmVyKFxuICAgIHRhcmdldCxcbiAgICBkb21FdmVudE5hbWUsXG4gICAgZXZlbnRTeXN0ZW1GbGFncyxcbiAgICBpc0NhcHR1cmVQaGFzZUxpc3RlbmVyXG4gICk7XG59XG52YXIgbGlzdGVuaW5nTWFya2VyID0gXCJfcmVhY3RMaXN0ZW5pbmdcIiArIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnNsaWNlKDIpO1xuZnVuY3Rpb24gbGlzdGVuVG9BbGxTdXBwb3J0ZWRFdmVudHMocm9vdENvbnRhaW5lckVsZW1lbnQpIHtcbiAgaWYgKCFyb290Q29udGFpbmVyRWxlbWVudFtsaXN0ZW5pbmdNYXJrZXJdKSB7XG4gICAgcm9vdENvbnRhaW5lckVsZW1lbnRbbGlzdGVuaW5nTWFya2VyXSA9ICEwO1xuICAgIGFsbE5hdGl2ZUV2ZW50cy5mb3JFYWNoKGZ1bmN0aW9uIChkb21FdmVudE5hbWUpIHtcbiAgICAgIFwic2VsZWN0aW9uY2hhbmdlXCIgIT09IGRvbUV2ZW50TmFtZSAmJlxuICAgICAgICAobm9uRGVsZWdhdGVkRXZlbnRzLmhhcyhkb21FdmVudE5hbWUpIHx8XG4gICAgICAgICAgbGlzdGVuVG9OYXRpdmVFdmVudChkb21FdmVudE5hbWUsICExLCByb290Q29udGFpbmVyRWxlbWVudCksXG4gICAgICAgIGxpc3RlblRvTmF0aXZlRXZlbnQoZG9tRXZlbnROYW1lLCAhMCwgcm9vdENvbnRhaW5lckVsZW1lbnQpKTtcbiAgICB9KTtcbiAgICB2YXIgb3duZXJEb2N1bWVudCA9XG4gICAgICA5ID09PSByb290Q29udGFpbmVyRWxlbWVudC5ub2RlVHlwZVxuICAgICAgICA/IHJvb3RDb250YWluZXJFbGVtZW50XG4gICAgICAgIDogcm9vdENvbnRhaW5lckVsZW1lbnQub3duZXJEb2N1bWVudDtcbiAgICBudWxsID09PSBvd25lckRvY3VtZW50IHx8XG4gICAgICBvd25lckRvY3VtZW50W2xpc3RlbmluZ01hcmtlcl0gfHxcbiAgICAgICgob3duZXJEb2N1bWVudFtsaXN0ZW5pbmdNYXJrZXJdID0gITApLFxuICAgICAgbGlzdGVuVG9OYXRpdmVFdmVudChcInNlbGVjdGlvbmNoYW5nZVwiLCAhMSwgb3duZXJEb2N1bWVudCkpO1xuICB9XG59XG5mdW5jdGlvbiBhZGRUcmFwcGVkRXZlbnRMaXN0ZW5lcihcbiAgdGFyZ2V0Q29udGFpbmVyLFxuICBkb21FdmVudE5hbWUsXG4gIGV2ZW50U3lzdGVtRmxhZ3MsXG4gIGlzQ2FwdHVyZVBoYXNlTGlzdGVuZXJcbikge1xuICBzd2l0Y2ggKGdldEV2ZW50UHJpb3JpdHkoZG9tRXZlbnROYW1lKSkge1xuICAgIGNhc2UgMjpcbiAgICAgIHZhciBsaXN0ZW5lcldyYXBwZXIgPSBkaXNwYXRjaERpc2NyZXRlRXZlbnQ7XG4gICAgICBicmVhaztcbiAgICBjYXNlIDg6XG4gICAgICBsaXN0ZW5lcldyYXBwZXIgPSBkaXNwYXRjaENvbnRpbnVvdXNFdmVudDtcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBsaXN0ZW5lcldyYXBwZXIgPSBkaXNwYXRjaEV2ZW50O1xuICB9XG4gIGV2ZW50U3lzdGVtRmxhZ3MgPSBsaXN0ZW5lcldyYXBwZXIuYmluZChcbiAgICBudWxsLFxuICAgIGRvbUV2ZW50TmFtZSxcbiAgICBldmVudFN5c3RlbUZsYWdzLFxuICAgIHRhcmdldENvbnRhaW5lclxuICApO1xuICBsaXN0ZW5lcldyYXBwZXIgPSB2b2lkIDA7XG4gICFwYXNzaXZlQnJvd3NlckV2ZW50c1N1cHBvcnRlZCB8fFxuICAgIChcInRvdWNoc3RhcnRcIiAhPT0gZG9tRXZlbnROYW1lICYmXG4gICAgICBcInRvdWNobW92ZVwiICE9PSBkb21FdmVudE5hbWUgJiZcbiAgICAgIFwid2hlZWxcIiAhPT0gZG9tRXZlbnROYW1lKSB8fFxuICAgIChsaXN0ZW5lcldyYXBwZXIgPSAhMCk7XG4gIGlzQ2FwdHVyZVBoYXNlTGlzdGVuZXJcbiAgICA/IHZvaWQgMCAhPT0gbGlzdGVuZXJXcmFwcGVyXG4gICAgICA/IHRhcmdldENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgZXZlbnRTeXN0ZW1GbGFncywge1xuICAgICAgICAgIGNhcHR1cmU6ICEwLFxuICAgICAgICAgIHBhc3NpdmU6IGxpc3RlbmVyV3JhcHBlclxuICAgICAgICB9KVxuICAgICAgOiB0YXJnZXRDb250YWluZXIuYWRkRXZlbnRMaXN0ZW5lcihkb21FdmVudE5hbWUsIGV2ZW50U3lzdGVtRmxhZ3MsICEwKVxuICAgIDogdm9pZCAwICE9PSBsaXN0ZW5lcldyYXBwZXJcbiAgICAgID8gdGFyZ2V0Q29udGFpbmVyLmFkZEV2ZW50TGlzdGVuZXIoZG9tRXZlbnROYW1lLCBldmVudFN5c3RlbUZsYWdzLCB7XG4gICAgICAgICAgcGFzc2l2ZTogbGlzdGVuZXJXcmFwcGVyXG4gICAgICAgIH0pXG4gICAgICA6IHRhcmdldENvbnRhaW5lci5hZGRFdmVudExpc3RlbmVyKGRvbUV2ZW50TmFtZSwgZXZlbnRTeXN0ZW1GbGFncywgITEpO1xufVxuZnVuY3Rpb24gZGlzcGF0Y2hFdmVudEZvclBsdWdpbkV2ZW50U3lzdGVtKFxuICBkb21FdmVudE5hbWUsXG4gIGV2ZW50U3lzdGVtRmxhZ3MsXG4gIG5hdGl2ZUV2ZW50LFxuICB0YXJnZXRJbnN0JGpzY29tcCQwLFxuICB0YXJnZXRDb250YWluZXJcbikge1xuICB2YXIgYW5jZXN0b3JJbnN0ID0gdGFyZ2V0SW5zdCRqc2NvbXAkMDtcbiAgaWYgKFxuICAgIDAgPT09IChldmVudFN5c3RlbUZsYWdzICYgMSkgJiZcbiAgICAwID09PSAoZXZlbnRTeXN0ZW1GbGFncyAmIDIpICYmXG4gICAgbnVsbCAhPT0gdGFyZ2V0SW5zdCRqc2NvbXAkMFxuICApXG4gICAgYTogZm9yICg7Oykge1xuICAgICAgaWYgKG51bGwgPT09IHRhcmdldEluc3QkanNjb21wJDApIHJldHVybjtcbiAgICAgIHZhciBub2RlVGFnID0gdGFyZ2V0SW5zdCRqc2NvbXAkMC50YWc7XG4gICAgICBpZiAoMyA9PT0gbm9kZVRhZyB8fCA0ID09PSBub2RlVGFnKSB7XG4gICAgICAgIHZhciBjb250YWluZXIgPSB0YXJnZXRJbnN0JGpzY29tcCQwLnN0YXRlTm9kZS5jb250YWluZXJJbmZvO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgY29udGFpbmVyID09PSB0YXJnZXRDb250YWluZXIgfHxcbiAgICAgICAgICAoOCA9PT0gY29udGFpbmVyLm5vZGVUeXBlICYmIGNvbnRhaW5lci5wYXJlbnROb2RlID09PSB0YXJnZXRDb250YWluZXIpXG4gICAgICAgIClcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgaWYgKDQgPT09IG5vZGVUYWcpXG4gICAgICAgICAgZm9yIChub2RlVGFnID0gdGFyZ2V0SW5zdCRqc2NvbXAkMC5yZXR1cm47IG51bGwgIT09IG5vZGVUYWc7ICkge1xuICAgICAgICAgICAgdmFyIGdyYW5kVGFnID0gbm9kZVRhZy50YWc7XG4gICAgICAgICAgICBpZiAoMyA9PT0gZ3JhbmRUYWcgfHwgNCA9PT0gZ3JhbmRUYWcpXG4gICAgICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICAgICAoKGdyYW5kVGFnID0gbm9kZVRhZy5zdGF0ZU5vZGUuY29udGFpbmVySW5mbyksXG4gICAgICAgICAgICAgICAgZ3JhbmRUYWcgPT09IHRhcmdldENvbnRhaW5lciB8fFxuICAgICAgICAgICAgICAgICAgKDggPT09IGdyYW5kVGFnLm5vZGVUeXBlICYmXG4gICAgICAgICAgICAgICAgICAgIGdyYW5kVGFnLnBhcmVudE5vZGUgPT09IHRhcmdldENvbnRhaW5lcikpXG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICBub2RlVGFnID0gbm9kZVRhZy5yZXR1cm47XG4gICAgICAgICAgfVxuICAgICAgICBmb3IgKDsgbnVsbCAhPT0gY29udGFpbmVyOyApIHtcbiAgICAgICAgICBub2RlVGFnID0gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUoY29udGFpbmVyKTtcbiAgICAgICAgICBpZiAobnVsbCA9PT0gbm9kZVRhZykgcmV0dXJuO1xuICAgICAgICAgIGdyYW5kVGFnID0gbm9kZVRhZy50YWc7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgNSA9PT0gZ3JhbmRUYWcgfHxcbiAgICAgICAgICAgIDYgPT09IGdyYW5kVGFnIHx8XG4gICAgICAgICAgICAyNiA9PT0gZ3JhbmRUYWcgfHxcbiAgICAgICAgICAgIDI3ID09PSBncmFuZFRhZ1xuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGFyZ2V0SW5zdCRqc2NvbXAkMCA9IGFuY2VzdG9ySW5zdCA9IG5vZGVUYWc7XG4gICAgICAgICAgICBjb250aW51ZSBhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBjb250YWluZXIgPSBjb250YWluZXIucGFyZW50Tm9kZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGFyZ2V0SW5zdCRqc2NvbXAkMCA9IHRhcmdldEluc3QkanNjb21wJDAucmV0dXJuO1xuICAgIH1cbiAgYmF0Y2hlZFVwZGF0ZXMkMShmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHRhcmdldEluc3QgPSBhbmNlc3Rvckluc3QsXG4gICAgICBuYXRpdmVFdmVudFRhcmdldCA9IGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KSxcbiAgICAgIGRpc3BhdGNoUXVldWUgPSBbXTtcbiAgICBhOiB7XG4gICAgICB2YXIgcmVhY3ROYW1lID0gdG9wTGV2ZWxFdmVudHNUb1JlYWN0TmFtZXMuZ2V0KGRvbUV2ZW50TmFtZSk7XG4gICAgICBpZiAodm9pZCAwICE9PSByZWFjdE5hbWUpIHtcbiAgICAgICAgdmFyIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY0V2ZW50LFxuICAgICAgICAgIHJlYWN0RXZlbnRUeXBlID0gZG9tRXZlbnROYW1lO1xuICAgICAgICBzd2l0Y2ggKGRvbUV2ZW50TmFtZSkge1xuICAgICAgICAgIGNhc2UgXCJrZXlwcmVzc1wiOlxuICAgICAgICAgICAgaWYgKDAgPT09IGdldEV2ZW50Q2hhckNvZGUobmF0aXZlRXZlbnQpKSBicmVhayBhO1xuICAgICAgICAgIGNhc2UgXCJrZXlkb3duXCI6XG4gICAgICAgICAgY2FzZSBcImtleXVwXCI6XG4gICAgICAgICAgICBTeW50aGV0aWNFdmVudEN0b3IgPSBTeW50aGV0aWNLZXlib2FyZEV2ZW50O1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgY2FzZSBcImZvY3VzaW5cIjpcbiAgICAgICAgICAgIHJlYWN0RXZlbnRUeXBlID0gXCJmb2N1c1wiO1xuICAgICAgICAgICAgU3ludGhldGljRXZlbnRDdG9yID0gU3ludGhldGljRm9jdXNFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJmb2N1c291dFwiOlxuICAgICAgICAgICAgcmVhY3RFdmVudFR5cGUgPSBcImJsdXJcIjtcbiAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiYmVmb3JlYmx1clwiOlxuICAgICAgICAgIGNhc2UgXCJhZnRlcmJsdXJcIjpcbiAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY0ZvY3VzRXZlbnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiY2xpY2tcIjpcbiAgICAgICAgICAgIGlmICgyID09PSBuYXRpdmVFdmVudC5idXR0b24pIGJyZWFrIGE7XG4gICAgICAgICAgY2FzZSBcImF1eGNsaWNrXCI6XG4gICAgICAgICAgY2FzZSBcImRibGNsaWNrXCI6XG4gICAgICAgICAgY2FzZSBcIm1vdXNlZG93blwiOlxuICAgICAgICAgIGNhc2UgXCJtb3VzZW1vdmVcIjpcbiAgICAgICAgICBjYXNlIFwibW91c2V1cFwiOlxuICAgICAgICAgIGNhc2UgXCJtb3VzZW91dFwiOlxuICAgICAgICAgIGNhc2UgXCJtb3VzZW92ZXJcIjpcbiAgICAgICAgICBjYXNlIFwiY29udGV4dG1lbnVcIjpcbiAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY01vdXNlRXZlbnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiZHJhZ1wiOlxuICAgICAgICAgIGNhc2UgXCJkcmFnZW5kXCI6XG4gICAgICAgICAgY2FzZSBcImRyYWdlbnRlclwiOlxuICAgICAgICAgIGNhc2UgXCJkcmFnZXhpdFwiOlxuICAgICAgICAgIGNhc2UgXCJkcmFnbGVhdmVcIjpcbiAgICAgICAgICBjYXNlIFwiZHJhZ292ZXJcIjpcbiAgICAgICAgICBjYXNlIFwiZHJhZ3N0YXJ0XCI6XG4gICAgICAgICAgY2FzZSBcImRyb3BcIjpcbiAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY0RyYWdFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJ0b3VjaGNhbmNlbFwiOlxuICAgICAgICAgIGNhc2UgXCJ0b3VjaGVuZFwiOlxuICAgICAgICAgIGNhc2UgXCJ0b3VjaG1vdmVcIjpcbiAgICAgICAgICBjYXNlIFwidG91Y2hzdGFydFwiOlxuICAgICAgICAgICAgU3ludGhldGljRXZlbnRDdG9yID0gU3ludGhldGljVG91Y2hFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgQU5JTUFUSU9OX0VORDpcbiAgICAgICAgICBjYXNlIEFOSU1BVElPTl9JVEVSQVRJT046XG4gICAgICAgICAgY2FzZSBBTklNQVRJT05fU1RBUlQ6XG4gICAgICAgICAgICBTeW50aGV0aWNFdmVudEN0b3IgPSBTeW50aGV0aWNBbmltYXRpb25FdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9FTkQ6XG4gICAgICAgICAgICBTeW50aGV0aWNFdmVudEN0b3IgPSBTeW50aGV0aWNUcmFuc2l0aW9uRXZlbnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwic2Nyb2xsXCI6XG4gICAgICAgICAgY2FzZSBcInNjcm9sbGVuZFwiOlxuICAgICAgICAgICAgU3ludGhldGljRXZlbnRDdG9yID0gU3ludGhldGljVUlFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJ3aGVlbFwiOlxuICAgICAgICAgICAgU3ludGhldGljRXZlbnRDdG9yID0gU3ludGhldGljV2hlZWxFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJjb3B5XCI6XG4gICAgICAgICAgY2FzZSBcImN1dFwiOlxuICAgICAgICAgIGNhc2UgXCJwYXN0ZVwiOlxuICAgICAgICAgICAgU3ludGhldGljRXZlbnRDdG9yID0gU3ludGhldGljQ2xpcGJvYXJkRXZlbnQ7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlIFwiZ290cG9pbnRlcmNhcHR1cmVcIjpcbiAgICAgICAgICBjYXNlIFwibG9zdHBvaW50ZXJjYXB0dXJlXCI6XG4gICAgICAgICAgY2FzZSBcInBvaW50ZXJjYW5jZWxcIjpcbiAgICAgICAgICBjYXNlIFwicG9pbnRlcmRvd25cIjpcbiAgICAgICAgICBjYXNlIFwicG9pbnRlcm1vdmVcIjpcbiAgICAgICAgICBjYXNlIFwicG9pbnRlcm91dFwiOlxuICAgICAgICAgIGNhc2UgXCJwb2ludGVyb3ZlclwiOlxuICAgICAgICAgIGNhc2UgXCJwb2ludGVydXBcIjpcbiAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9IFN5bnRoZXRpY1BvaW50ZXJFdmVudDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgXCJ0b2dnbGVcIjpcbiAgICAgICAgICBjYXNlIFwiYmVmb3JldG9nZ2xlXCI6XG4gICAgICAgICAgICBTeW50aGV0aWNFdmVudEN0b3IgPSBTeW50aGV0aWNUb2dnbGVFdmVudDtcbiAgICAgICAgfVxuICAgICAgICB2YXIgaW5DYXB0dXJlUGhhc2UgPSAwICE9PSAoZXZlbnRTeXN0ZW1GbGFncyAmIDQpLFxuICAgICAgICAgIGFjY3VtdWxhdGVUYXJnZXRPbmx5ID1cbiAgICAgICAgICAgICFpbkNhcHR1cmVQaGFzZSAmJlxuICAgICAgICAgICAgKFwic2Nyb2xsXCIgPT09IGRvbUV2ZW50TmFtZSB8fCBcInNjcm9sbGVuZFwiID09PSBkb21FdmVudE5hbWUpLFxuICAgICAgICAgIHJlYWN0RXZlbnROYW1lID0gaW5DYXB0dXJlUGhhc2VcbiAgICAgICAgICAgID8gbnVsbCAhPT0gcmVhY3ROYW1lXG4gICAgICAgICAgICAgID8gcmVhY3ROYW1lICsgXCJDYXB0dXJlXCJcbiAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICA6IHJlYWN0TmFtZTtcbiAgICAgICAgaW5DYXB0dXJlUGhhc2UgPSBbXTtcbiAgICAgICAgZm9yIChcbiAgICAgICAgICB2YXIgaW5zdGFuY2UgPSB0YXJnZXRJbnN0LCBsYXN0SG9zdENvbXBvbmVudDtcbiAgICAgICAgICBudWxsICE9PSBpbnN0YW5jZTtcblxuICAgICAgICApIHtcbiAgICAgICAgICB2YXIgX2luc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgICAgbGFzdEhvc3RDb21wb25lbnQgPSBfaW5zdGFuY2Uuc3RhdGVOb2RlO1xuICAgICAgICAgIF9pbnN0YW5jZSA9IF9pbnN0YW5jZS50YWc7XG4gICAgICAgICAgKDUgIT09IF9pbnN0YW5jZSAmJiAyNiAhPT0gX2luc3RhbmNlICYmIDI3ICE9PSBfaW5zdGFuY2UpIHx8XG4gICAgICAgICAgICBudWxsID09PSBsYXN0SG9zdENvbXBvbmVudCB8fFxuICAgICAgICAgICAgbnVsbCA9PT0gcmVhY3RFdmVudE5hbWUgfHxcbiAgICAgICAgICAgICgoX2luc3RhbmNlID0gZ2V0TGlzdGVuZXIoaW5zdGFuY2UsIHJlYWN0RXZlbnROYW1lKSksXG4gICAgICAgICAgICBudWxsICE9IF9pbnN0YW5jZSAmJlxuICAgICAgICAgICAgICBpbkNhcHR1cmVQaGFzZS5wdXNoKFxuICAgICAgICAgICAgICAgIGNyZWF0ZURpc3BhdGNoTGlzdGVuZXIoaW5zdGFuY2UsIF9pbnN0YW5jZSwgbGFzdEhvc3RDb21wb25lbnQpXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICAgIGlmIChhY2N1bXVsYXRlVGFyZ2V0T25seSkgYnJlYWs7XG4gICAgICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS5yZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgMCA8IGluQ2FwdHVyZVBoYXNlLmxlbmd0aCAmJlxuICAgICAgICAgICgocmVhY3ROYW1lID0gbmV3IFN5bnRoZXRpY0V2ZW50Q3RvcihcbiAgICAgICAgICAgIHJlYWN0TmFtZSxcbiAgICAgICAgICAgIHJlYWN0RXZlbnRUeXBlLFxuICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgICAgICAgbmF0aXZlRXZlbnRUYXJnZXRcbiAgICAgICAgICApKSxcbiAgICAgICAgICBkaXNwYXRjaFF1ZXVlLnB1c2goeyBldmVudDogcmVhY3ROYW1lLCBsaXN0ZW5lcnM6IGluQ2FwdHVyZVBoYXNlIH0pKTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKDAgPT09IChldmVudFN5c3RlbUZsYWdzICYgNykpIHtcbiAgICAgIGE6IHtcbiAgICAgICAgcmVhY3ROYW1lID1cbiAgICAgICAgICBcIm1vdXNlb3ZlclwiID09PSBkb21FdmVudE5hbWUgfHwgXCJwb2ludGVyb3ZlclwiID09PSBkb21FdmVudE5hbWU7XG4gICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvciA9XG4gICAgICAgICAgXCJtb3VzZW91dFwiID09PSBkb21FdmVudE5hbWUgfHwgXCJwb2ludGVyb3V0XCIgPT09IGRvbUV2ZW50TmFtZTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHJlYWN0TmFtZSAmJlxuICAgICAgICAgIG5hdGl2ZUV2ZW50ICE9PSBjdXJyZW50UmVwbGF5aW5nRXZlbnQgJiZcbiAgICAgICAgICAocmVhY3RFdmVudFR5cGUgPVxuICAgICAgICAgICAgbmF0aXZlRXZlbnQucmVsYXRlZFRhcmdldCB8fCBuYXRpdmVFdmVudC5mcm9tRWxlbWVudCkgJiZcbiAgICAgICAgICAoZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUocmVhY3RFdmVudFR5cGUpIHx8XG4gICAgICAgICAgICByZWFjdEV2ZW50VHlwZVtpbnRlcm5hbENvbnRhaW5lckluc3RhbmNlS2V5XSlcbiAgICAgICAgKVxuICAgICAgICAgIGJyZWFrIGE7XG4gICAgICAgIGlmIChTeW50aGV0aWNFdmVudEN0b3IgfHwgcmVhY3ROYW1lKSB7XG4gICAgICAgICAgcmVhY3ROYW1lID1cbiAgICAgICAgICAgIG5hdGl2ZUV2ZW50VGFyZ2V0LndpbmRvdyA9PT0gbmF0aXZlRXZlbnRUYXJnZXRcbiAgICAgICAgICAgICAgPyBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICAgICAgICA6IChyZWFjdE5hbWUgPSBuYXRpdmVFdmVudFRhcmdldC5vd25lckRvY3VtZW50KVxuICAgICAgICAgICAgICAgID8gcmVhY3ROYW1lLmRlZmF1bHRWaWV3IHx8IHJlYWN0TmFtZS5wYXJlbnRXaW5kb3dcbiAgICAgICAgICAgICAgICA6IHdpbmRvdztcbiAgICAgICAgICBpZiAoU3ludGhldGljRXZlbnRDdG9yKSB7XG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICgocmVhY3RFdmVudFR5cGUgPVxuICAgICAgICAgICAgICAgIG5hdGl2ZUV2ZW50LnJlbGF0ZWRUYXJnZXQgfHwgbmF0aXZlRXZlbnQudG9FbGVtZW50KSxcbiAgICAgICAgICAgICAgKFN5bnRoZXRpY0V2ZW50Q3RvciA9IHRhcmdldEluc3QpLFxuICAgICAgICAgICAgICAocmVhY3RFdmVudFR5cGUgPSByZWFjdEV2ZW50VHlwZVxuICAgICAgICAgICAgICAgID8gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUocmVhY3RFdmVudFR5cGUpXG4gICAgICAgICAgICAgICAgOiBudWxsKSxcbiAgICAgICAgICAgICAgbnVsbCAhPT0gcmVhY3RFdmVudFR5cGUgJiZcbiAgICAgICAgICAgICAgICAoKGFjY3VtdWxhdGVUYXJnZXRPbmx5ID1cbiAgICAgICAgICAgICAgICAgIGdldE5lYXJlc3RNb3VudGVkRmliZXIocmVhY3RFdmVudFR5cGUpKSxcbiAgICAgICAgICAgICAgICAoaW5DYXB0dXJlUGhhc2UgPSByZWFjdEV2ZW50VHlwZS50YWcpLFxuICAgICAgICAgICAgICAgIHJlYWN0RXZlbnRUeXBlICE9PSBhY2N1bXVsYXRlVGFyZ2V0T25seSB8fFxuICAgICAgICAgICAgICAgICAgKDUgIT09IGluQ2FwdHVyZVBoYXNlICYmXG4gICAgICAgICAgICAgICAgICAgIDI3ICE9PSBpbkNhcHR1cmVQaGFzZSAmJlxuICAgICAgICAgICAgICAgICAgICA2ICE9PSBpbkNhcHR1cmVQaGFzZSkpKVxuICAgICAgICAgICAgKVxuICAgICAgICAgICAgICByZWFjdEV2ZW50VHlwZSA9IG51bGw7XG4gICAgICAgICAgfSBlbHNlIChTeW50aGV0aWNFdmVudEN0b3IgPSBudWxsKSwgKHJlYWN0RXZlbnRUeXBlID0gdGFyZ2V0SW5zdCk7XG4gICAgICAgICAgaWYgKFN5bnRoZXRpY0V2ZW50Q3RvciAhPT0gcmVhY3RFdmVudFR5cGUpIHtcbiAgICAgICAgICAgIGluQ2FwdHVyZVBoYXNlID0gU3ludGhldGljTW91c2VFdmVudDtcbiAgICAgICAgICAgIF9pbnN0YW5jZSA9IFwib25Nb3VzZUxlYXZlXCI7XG4gICAgICAgICAgICByZWFjdEV2ZW50TmFtZSA9IFwib25Nb3VzZUVudGVyXCI7XG4gICAgICAgICAgICBpbnN0YW5jZSA9IFwibW91c2VcIjtcbiAgICAgICAgICAgIGlmIChcInBvaW50ZXJvdXRcIiA9PT0gZG9tRXZlbnROYW1lIHx8IFwicG9pbnRlcm92ZXJcIiA9PT0gZG9tRXZlbnROYW1lKVxuICAgICAgICAgICAgICAoaW5DYXB0dXJlUGhhc2UgPSBTeW50aGV0aWNQb2ludGVyRXZlbnQpLFxuICAgICAgICAgICAgICAgIChfaW5zdGFuY2UgPSBcIm9uUG9pbnRlckxlYXZlXCIpLFxuICAgICAgICAgICAgICAgIChyZWFjdEV2ZW50TmFtZSA9IFwib25Qb2ludGVyRW50ZXJcIiksXG4gICAgICAgICAgICAgICAgKGluc3RhbmNlID0gXCJwb2ludGVyXCIpO1xuICAgICAgICAgICAgYWNjdW11bGF0ZVRhcmdldE9ubHkgPVxuICAgICAgICAgICAgICBudWxsID09IFN5bnRoZXRpY0V2ZW50Q3RvclxuICAgICAgICAgICAgICAgID8gcmVhY3ROYW1lXG4gICAgICAgICAgICAgICAgOiBnZXROb2RlRnJvbUluc3RhbmNlKFN5bnRoZXRpY0V2ZW50Q3Rvcik7XG4gICAgICAgICAgICBsYXN0SG9zdENvbXBvbmVudCA9XG4gICAgICAgICAgICAgIG51bGwgPT0gcmVhY3RFdmVudFR5cGVcbiAgICAgICAgICAgICAgICA/IHJlYWN0TmFtZVxuICAgICAgICAgICAgICAgIDogZ2V0Tm9kZUZyb21JbnN0YW5jZShyZWFjdEV2ZW50VHlwZSk7XG4gICAgICAgICAgICByZWFjdE5hbWUgPSBuZXcgaW5DYXB0dXJlUGhhc2UoXG4gICAgICAgICAgICAgIF9pbnN0YW5jZSxcbiAgICAgICAgICAgICAgaW5zdGFuY2UgKyBcImxlYXZlXCIsXG4gICAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvcixcbiAgICAgICAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgICAgICAgIG5hdGl2ZUV2ZW50VGFyZ2V0XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmVhY3ROYW1lLnRhcmdldCA9IGFjY3VtdWxhdGVUYXJnZXRPbmx5O1xuICAgICAgICAgICAgcmVhY3ROYW1lLnJlbGF0ZWRUYXJnZXQgPSBsYXN0SG9zdENvbXBvbmVudDtcbiAgICAgICAgICAgIF9pbnN0YW5jZSA9IG51bGw7XG4gICAgICAgICAgICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZShuYXRpdmVFdmVudFRhcmdldCkgPT09IHRhcmdldEluc3QgJiZcbiAgICAgICAgICAgICAgKChpbkNhcHR1cmVQaGFzZSA9IG5ldyBpbkNhcHR1cmVQaGFzZShcbiAgICAgICAgICAgICAgICByZWFjdEV2ZW50TmFtZSxcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSArIFwiZW50ZXJcIixcbiAgICAgICAgICAgICAgICByZWFjdEV2ZW50VHlwZSxcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudCxcbiAgICAgICAgICAgICAgICBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICAgICAgICApKSxcbiAgICAgICAgICAgICAgKGluQ2FwdHVyZVBoYXNlLnRhcmdldCA9IGxhc3RIb3N0Q29tcG9uZW50KSxcbiAgICAgICAgICAgICAgKGluQ2FwdHVyZVBoYXNlLnJlbGF0ZWRUYXJnZXQgPSBhY2N1bXVsYXRlVGFyZ2V0T25seSksXG4gICAgICAgICAgICAgIChfaW5zdGFuY2UgPSBpbkNhcHR1cmVQaGFzZSkpO1xuICAgICAgICAgICAgYWNjdW11bGF0ZVRhcmdldE9ubHkgPSBfaW5zdGFuY2U7XG4gICAgICAgICAgICBpZiAoU3ludGhldGljRXZlbnRDdG9yICYmIHJlYWN0RXZlbnRUeXBlKVxuICAgICAgICAgICAgICBiOiB7XG4gICAgICAgICAgICAgICAgaW5DYXB0dXJlUGhhc2UgPSBTeW50aGV0aWNFdmVudEN0b3I7XG4gICAgICAgICAgICAgICAgcmVhY3RFdmVudE5hbWUgPSByZWFjdEV2ZW50VHlwZTtcbiAgICAgICAgICAgICAgICBpbnN0YW5jZSA9IDA7XG4gICAgICAgICAgICAgICAgZm9yIChcbiAgICAgICAgICAgICAgICAgIGxhc3RIb3N0Q29tcG9uZW50ID0gaW5DYXB0dXJlUGhhc2U7XG4gICAgICAgICAgICAgICAgICBsYXN0SG9zdENvbXBvbmVudDtcbiAgICAgICAgICAgICAgICAgIGxhc3RIb3N0Q29tcG9uZW50ID0gZ2V0UGFyZW50KGxhc3RIb3N0Q29tcG9uZW50KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgIGluc3RhbmNlKys7XG4gICAgICAgICAgICAgICAgbGFzdEhvc3RDb21wb25lbnQgPSAwO1xuICAgICAgICAgICAgICAgIGZvciAoXG4gICAgICAgICAgICAgICAgICBfaW5zdGFuY2UgPSByZWFjdEV2ZW50TmFtZTtcbiAgICAgICAgICAgICAgICAgIF9pbnN0YW5jZTtcbiAgICAgICAgICAgICAgICAgIF9pbnN0YW5jZSA9IGdldFBhcmVudChfaW5zdGFuY2UpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgbGFzdEhvc3RDb21wb25lbnQrKztcbiAgICAgICAgICAgICAgICBmb3IgKDsgMCA8IGluc3RhbmNlIC0gbGFzdEhvc3RDb21wb25lbnQ7IClcbiAgICAgICAgICAgICAgICAgIChpbkNhcHR1cmVQaGFzZSA9IGdldFBhcmVudChpbkNhcHR1cmVQaGFzZSkpLCBpbnN0YW5jZS0tO1xuICAgICAgICAgICAgICAgIGZvciAoOyAwIDwgbGFzdEhvc3RDb21wb25lbnQgLSBpbnN0YW5jZTsgKVxuICAgICAgICAgICAgICAgICAgKHJlYWN0RXZlbnROYW1lID0gZ2V0UGFyZW50KHJlYWN0RXZlbnROYW1lKSksXG4gICAgICAgICAgICAgICAgICAgIGxhc3RIb3N0Q29tcG9uZW50LS07XG4gICAgICAgICAgICAgICAgZm9yICg7IGluc3RhbmNlLS07ICkge1xuICAgICAgICAgICAgICAgICAgaWYgKFxuICAgICAgICAgICAgICAgICAgICBpbkNhcHR1cmVQaGFzZSA9PT0gcmVhY3RFdmVudE5hbWUgfHxcbiAgICAgICAgICAgICAgICAgICAgKG51bGwgIT09IHJlYWN0RXZlbnROYW1lICYmXG4gICAgICAgICAgICAgICAgICAgICAgaW5DYXB0dXJlUGhhc2UgPT09IHJlYWN0RXZlbnROYW1lLmFsdGVybmF0ZSlcbiAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgYnJlYWsgYjtcbiAgICAgICAgICAgICAgICAgIGluQ2FwdHVyZVBoYXNlID0gZ2V0UGFyZW50KGluQ2FwdHVyZVBoYXNlKTtcbiAgICAgICAgICAgICAgICAgIHJlYWN0RXZlbnROYW1lID0gZ2V0UGFyZW50KHJlYWN0RXZlbnROYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaW5DYXB0dXJlUGhhc2UgPSBudWxsO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICBlbHNlIGluQ2FwdHVyZVBoYXNlID0gbnVsbDtcbiAgICAgICAgICAgIG51bGwgIT09IFN5bnRoZXRpY0V2ZW50Q3RvciAmJlxuICAgICAgICAgICAgICBhY2N1bXVsYXRlRW50ZXJMZWF2ZUxpc3RlbmVyc0ZvckV2ZW50KFxuICAgICAgICAgICAgICAgIGRpc3BhdGNoUXVldWUsXG4gICAgICAgICAgICAgICAgcmVhY3ROYW1lLFxuICAgICAgICAgICAgICAgIFN5bnRoZXRpY0V2ZW50Q3RvcixcbiAgICAgICAgICAgICAgICBpbkNhcHR1cmVQaGFzZSxcbiAgICAgICAgICAgICAgICAhMVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgbnVsbCAhPT0gcmVhY3RFdmVudFR5cGUgJiZcbiAgICAgICAgICAgICAgbnVsbCAhPT0gYWNjdW11bGF0ZVRhcmdldE9ubHkgJiZcbiAgICAgICAgICAgICAgYWNjdW11bGF0ZUVudGVyTGVhdmVMaXN0ZW5lcnNGb3JFdmVudChcbiAgICAgICAgICAgICAgICBkaXNwYXRjaFF1ZXVlLFxuICAgICAgICAgICAgICAgIGFjY3VtdWxhdGVUYXJnZXRPbmx5LFxuICAgICAgICAgICAgICAgIHJlYWN0RXZlbnRUeXBlLFxuICAgICAgICAgICAgICAgIGluQ2FwdHVyZVBoYXNlLFxuICAgICAgICAgICAgICAgICEwXG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBhOiB7XG4gICAgICAgIHJlYWN0TmFtZSA9IHRhcmdldEluc3QgPyBnZXROb2RlRnJvbUluc3RhbmNlKHRhcmdldEluc3QpIDogd2luZG93O1xuICAgICAgICBTeW50aGV0aWNFdmVudEN0b3IgPVxuICAgICAgICAgIHJlYWN0TmFtZS5ub2RlTmFtZSAmJiByZWFjdE5hbWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIFwic2VsZWN0XCIgPT09IFN5bnRoZXRpY0V2ZW50Q3RvciB8fFxuICAgICAgICAgIChcImlucHV0XCIgPT09IFN5bnRoZXRpY0V2ZW50Q3RvciAmJiBcImZpbGVcIiA9PT0gcmVhY3ROYW1lLnR5cGUpXG4gICAgICAgIClcbiAgICAgICAgICB2YXIgZ2V0VGFyZ2V0SW5zdEZ1bmMgPSBnZXRUYXJnZXRJbnN0Rm9yQ2hhbmdlRXZlbnQ7XG4gICAgICAgIGVsc2UgaWYgKGlzVGV4dElucHV0RWxlbWVudChyZWFjdE5hbWUpKVxuICAgICAgICAgIGlmIChpc0lucHV0RXZlbnRTdXBwb3J0ZWQpXG4gICAgICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdlRXZlbnQ7XG4gICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JJbnB1dEV2ZW50UG9seWZpbGw7XG4gICAgICAgICAgICB2YXIgaGFuZGxlRXZlbnRGdW5jID0gaGFuZGxlRXZlbnRzRm9ySW5wdXRFdmVudFBvbHlmaWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgIChTeW50aGV0aWNFdmVudEN0b3IgPSByZWFjdE5hbWUubm9kZU5hbWUpLFxuICAgICAgICAgICAgIVN5bnRoZXRpY0V2ZW50Q3RvciB8fFxuICAgICAgICAgICAgXCJpbnB1dFwiICE9PSBTeW50aGV0aWNFdmVudEN0b3IudG9Mb3dlckNhc2UoKSB8fFxuICAgICAgICAgICAgKFwiY2hlY2tib3hcIiAhPT0gcmVhY3ROYW1lLnR5cGUgJiYgXCJyYWRpb1wiICE9PSByZWFjdE5hbWUudHlwZSlcbiAgICAgICAgICAgICAgPyB0YXJnZXRJbnN0ICYmXG4gICAgICAgICAgICAgICAgaXNDdXN0b21FbGVtZW50KHRhcmdldEluc3QuZWxlbWVudFR5cGUpICYmXG4gICAgICAgICAgICAgICAgKGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50KVxuICAgICAgICAgICAgICA6IChnZXRUYXJnZXRJbnN0RnVuYyA9IGdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50KTtcbiAgICAgICAgaWYgKFxuICAgICAgICAgIGdldFRhcmdldEluc3RGdW5jICYmXG4gICAgICAgICAgKGdldFRhcmdldEluc3RGdW5jID0gZ2V0VGFyZ2V0SW5zdEZ1bmMoZG9tRXZlbnROYW1lLCB0YXJnZXRJbnN0KSlcbiAgICAgICAgKSB7XG4gICAgICAgICAgY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50KFxuICAgICAgICAgICAgZGlzcGF0Y2hRdWV1ZSxcbiAgICAgICAgICAgIGdldFRhcmdldEluc3RGdW5jLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgICAgICBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICAgICk7XG4gICAgICAgICAgYnJlYWsgYTtcbiAgICAgICAgfVxuICAgICAgICBoYW5kbGVFdmVudEZ1bmMgJiYgaGFuZGxlRXZlbnRGdW5jKGRvbUV2ZW50TmFtZSwgcmVhY3ROYW1lLCB0YXJnZXRJbnN0KTtcbiAgICAgICAgXCJmb2N1c291dFwiID09PSBkb21FdmVudE5hbWUgJiZcbiAgICAgICAgICB0YXJnZXRJbnN0ICYmXG4gICAgICAgICAgXCJudW1iZXJcIiA9PT0gcmVhY3ROYW1lLnR5cGUgJiZcbiAgICAgICAgICBudWxsICE9IHRhcmdldEluc3QubWVtb2l6ZWRQcm9wcy52YWx1ZSAmJlxuICAgICAgICAgIHNldERlZmF1bHRWYWx1ZShyZWFjdE5hbWUsIFwibnVtYmVyXCIsIHJlYWN0TmFtZS52YWx1ZSk7XG4gICAgICB9XG4gICAgICBoYW5kbGVFdmVudEZ1bmMgPSB0YXJnZXRJbnN0ID8gZ2V0Tm9kZUZyb21JbnN0YW5jZSh0YXJnZXRJbnN0KSA6IHdpbmRvdztcbiAgICAgIHN3aXRjaCAoZG9tRXZlbnROYW1lKSB7XG4gICAgICAgIGNhc2UgXCJmb2N1c2luXCI6XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgaXNUZXh0SW5wdXRFbGVtZW50KGhhbmRsZUV2ZW50RnVuYykgfHxcbiAgICAgICAgICAgIFwidHJ1ZVwiID09PSBoYW5kbGVFdmVudEZ1bmMuY29udGVudEVkaXRhYmxlXG4gICAgICAgICAgKVxuICAgICAgICAgICAgKGFjdGl2ZUVsZW1lbnQgPSBoYW5kbGVFdmVudEZ1bmMpLFxuICAgICAgICAgICAgICAoYWN0aXZlRWxlbWVudEluc3QgPSB0YXJnZXRJbnN0KSxcbiAgICAgICAgICAgICAgKGxhc3RTZWxlY3Rpb24gPSBudWxsKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImZvY3Vzb3V0XCI6XG4gICAgICAgICAgbGFzdFNlbGVjdGlvbiA9IGFjdGl2ZUVsZW1lbnRJbnN0ID0gYWN0aXZlRWxlbWVudCA9IG51bGw7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgXCJtb3VzZWRvd25cIjpcbiAgICAgICAgICBtb3VzZURvd24gPSAhMDtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcImNvbnRleHRtZW51XCI6XG4gICAgICAgIGNhc2UgXCJtb3VzZXVwXCI6XG4gICAgICAgIGNhc2UgXCJkcmFnZW5kXCI6XG4gICAgICAgICAgbW91c2VEb3duID0gITE7XG4gICAgICAgICAgY29uc3RydWN0U2VsZWN0RXZlbnQoZGlzcGF0Y2hRdWV1ZSwgbmF0aXZlRXZlbnQsIG5hdGl2ZUV2ZW50VGFyZ2V0KTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOlxuICAgICAgICAgIGlmIChza2lwU2VsZWN0aW9uQ2hhbmdlRXZlbnQpIGJyZWFrO1xuICAgICAgICBjYXNlIFwia2V5ZG93blwiOlxuICAgICAgICBjYXNlIFwia2V5dXBcIjpcbiAgICAgICAgICBjb25zdHJ1Y3RTZWxlY3RFdmVudChkaXNwYXRjaFF1ZXVlLCBuYXRpdmVFdmVudCwgbmF0aXZlRXZlbnRUYXJnZXQpO1xuICAgICAgfVxuICAgICAgdmFyIGZhbGxiYWNrRGF0YTtcbiAgICAgIGlmIChjYW5Vc2VDb21wb3NpdGlvbkV2ZW50KVxuICAgICAgICBiOiB7XG4gICAgICAgICAgc3dpdGNoIChkb21FdmVudE5hbWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJjb21wb3NpdGlvbnN0YXJ0XCI6XG4gICAgICAgICAgICAgIHZhciBldmVudFR5cGUgPSBcIm9uQ29tcG9zaXRpb25TdGFydFwiO1xuICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgY2FzZSBcImNvbXBvc2l0aW9uZW5kXCI6XG4gICAgICAgICAgICAgIGV2ZW50VHlwZSA9IFwib25Db21wb3NpdGlvbkVuZFwiO1xuICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgICAgY2FzZSBcImNvbXBvc2l0aW9udXBkYXRlXCI6XG4gICAgICAgICAgICAgIGV2ZW50VHlwZSA9IFwib25Db21wb3NpdGlvblVwZGF0ZVwiO1xuICAgICAgICAgICAgICBicmVhayBiO1xuICAgICAgICAgIH1cbiAgICAgICAgICBldmVudFR5cGUgPSB2b2lkIDA7XG4gICAgICAgIH1cbiAgICAgIGVsc2VcbiAgICAgICAgaXNDb21wb3NpbmdcbiAgICAgICAgICA/IGlzRmFsbGJhY2tDb21wb3NpdGlvbkVuZChkb21FdmVudE5hbWUsIG5hdGl2ZUV2ZW50KSAmJlxuICAgICAgICAgICAgKGV2ZW50VHlwZSA9IFwib25Db21wb3NpdGlvbkVuZFwiKVxuICAgICAgICAgIDogXCJrZXlkb3duXCIgPT09IGRvbUV2ZW50TmFtZSAmJlxuICAgICAgICAgICAgMjI5ID09PSBuYXRpdmVFdmVudC5rZXlDb2RlICYmXG4gICAgICAgICAgICAoZXZlbnRUeXBlID0gXCJvbkNvbXBvc2l0aW9uU3RhcnRcIik7XG4gICAgICBldmVudFR5cGUgJiZcbiAgICAgICAgKHVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhICYmXG4gICAgICAgICAgXCJrb1wiICE9PSBuYXRpdmVFdmVudC5sb2NhbGUgJiZcbiAgICAgICAgICAoaXNDb21wb3NpbmcgfHwgXCJvbkNvbXBvc2l0aW9uU3RhcnRcIiAhPT0gZXZlbnRUeXBlXG4gICAgICAgICAgICA/IFwib25Db21wb3NpdGlvbkVuZFwiID09PSBldmVudFR5cGUgJiZcbiAgICAgICAgICAgICAgaXNDb21wb3NpbmcgJiZcbiAgICAgICAgICAgICAgKGZhbGxiYWNrRGF0YSA9IGdldERhdGEoKSlcbiAgICAgICAgICAgIDogKChyb290ID0gbmF0aXZlRXZlbnRUYXJnZXQpLFxuICAgICAgICAgICAgICAoc3RhcnRUZXh0ID0gXCJ2YWx1ZVwiIGluIHJvb3QgPyByb290LnZhbHVlIDogcm9vdC50ZXh0Q29udGVudCksXG4gICAgICAgICAgICAgIChpc0NvbXBvc2luZyA9ICEwKSkpLFxuICAgICAgICAoaGFuZGxlRXZlbnRGdW5jID0gYWNjdW11bGF0ZVR3b1BoYXNlTGlzdGVuZXJzKHRhcmdldEluc3QsIGV2ZW50VHlwZSkpLFxuICAgICAgICAwIDwgaGFuZGxlRXZlbnRGdW5jLmxlbmd0aCAmJlxuICAgICAgICAgICgoZXZlbnRUeXBlID0gbmV3IFN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQoXG4gICAgICAgICAgICBldmVudFR5cGUsXG4gICAgICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgICAgICBudWxsLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgICAgICBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgICAgICkpLFxuICAgICAgICAgIGRpc3BhdGNoUXVldWUucHVzaCh7IGV2ZW50OiBldmVudFR5cGUsIGxpc3RlbmVyczogaGFuZGxlRXZlbnRGdW5jIH0pLFxuICAgICAgICAgIGZhbGxiYWNrRGF0YVxuICAgICAgICAgICAgPyAoZXZlbnRUeXBlLmRhdGEgPSBmYWxsYmFja0RhdGEpXG4gICAgICAgICAgICA6ICgoZmFsbGJhY2tEYXRhID0gZ2V0RGF0YUZyb21DdXN0b21FdmVudChuYXRpdmVFdmVudCkpLFxuICAgICAgICAgICAgICBudWxsICE9PSBmYWxsYmFja0RhdGEgJiYgKGV2ZW50VHlwZS5kYXRhID0gZmFsbGJhY2tEYXRhKSkpKTtcbiAgICAgIGlmIChcbiAgICAgICAgKGZhbGxiYWNrRGF0YSA9IGNhblVzZVRleHRJbnB1dEV2ZW50XG4gICAgICAgICAgPyBnZXROYXRpdmVCZWZvcmVJbnB1dENoYXJzKGRvbUV2ZW50TmFtZSwgbmF0aXZlRXZlbnQpXG4gICAgICAgICAgOiBnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMoZG9tRXZlbnROYW1lLCBuYXRpdmVFdmVudCkpXG4gICAgICApXG4gICAgICAgIChldmVudFR5cGUgPSBhY2N1bXVsYXRlVHdvUGhhc2VMaXN0ZW5lcnModGFyZ2V0SW5zdCwgXCJvbkJlZm9yZUlucHV0XCIpKSxcbiAgICAgICAgICAwIDwgZXZlbnRUeXBlLmxlbmd0aCAmJlxuICAgICAgICAgICAgKChoYW5kbGVFdmVudEZ1bmMgPSBuZXcgU3ludGhldGljQ29tcG9zaXRpb25FdmVudChcbiAgICAgICAgICAgICAgXCJvbkJlZm9yZUlucHV0XCIsXG4gICAgICAgICAgICAgIFwiYmVmb3JlaW5wdXRcIixcbiAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgICAgICAgIG5hdGl2ZUV2ZW50VGFyZ2V0XG4gICAgICAgICAgICApKSxcbiAgICAgICAgICAgIGRpc3BhdGNoUXVldWUucHVzaCh7XG4gICAgICAgICAgICAgIGV2ZW50OiBoYW5kbGVFdmVudEZ1bmMsXG4gICAgICAgICAgICAgIGxpc3RlbmVyczogZXZlbnRUeXBlXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIChoYW5kbGVFdmVudEZ1bmMuZGF0YSA9IGZhbGxiYWNrRGF0YSkpO1xuICAgICAgZXh0cmFjdEV2ZW50cyQxKFxuICAgICAgICBkaXNwYXRjaFF1ZXVlLFxuICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgIHRhcmdldEluc3QsXG4gICAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgICBuYXRpdmVFdmVudFRhcmdldFxuICAgICAgKTtcbiAgICB9XG4gICAgcHJvY2Vzc0Rpc3BhdGNoUXVldWUoZGlzcGF0Y2hRdWV1ZSwgZXZlbnRTeXN0ZW1GbGFncyk7XG4gIH0pO1xufVxuZnVuY3Rpb24gY3JlYXRlRGlzcGF0Y2hMaXN0ZW5lcihpbnN0YW5jZSwgbGlzdGVuZXIsIGN1cnJlbnRUYXJnZXQpIHtcbiAgcmV0dXJuIHtcbiAgICBpbnN0YW5jZTogaW5zdGFuY2UsXG4gICAgbGlzdGVuZXI6IGxpc3RlbmVyLFxuICAgIGN1cnJlbnRUYXJnZXQ6IGN1cnJlbnRUYXJnZXRcbiAgfTtcbn1cbmZ1bmN0aW9uIGFjY3VtdWxhdGVUd29QaGFzZUxpc3RlbmVycyh0YXJnZXRGaWJlciwgcmVhY3ROYW1lKSB7XG4gIGZvciAoXG4gICAgdmFyIGNhcHR1cmVOYW1lID0gcmVhY3ROYW1lICsgXCJDYXB0dXJlXCIsIGxpc3RlbmVycyA9IFtdO1xuICAgIG51bGwgIT09IHRhcmdldEZpYmVyO1xuXG4gICkge1xuICAgIHZhciBfaW5zdGFuY2UyID0gdGFyZ2V0RmliZXIsXG4gICAgICBzdGF0ZU5vZGUgPSBfaW5zdGFuY2UyLnN0YXRlTm9kZTtcbiAgICBfaW5zdGFuY2UyID0gX2luc3RhbmNlMi50YWc7XG4gICAgKDUgIT09IF9pbnN0YW5jZTIgJiYgMjYgIT09IF9pbnN0YW5jZTIgJiYgMjcgIT09IF9pbnN0YW5jZTIpIHx8XG4gICAgICBudWxsID09PSBzdGF0ZU5vZGUgfHxcbiAgICAgICgoX2luc3RhbmNlMiA9IGdldExpc3RlbmVyKHRhcmdldEZpYmVyLCBjYXB0dXJlTmFtZSkpLFxuICAgICAgbnVsbCAhPSBfaW5zdGFuY2UyICYmXG4gICAgICAgIGxpc3RlbmVycy51bnNoaWZ0KFxuICAgICAgICAgIGNyZWF0ZURpc3BhdGNoTGlzdGVuZXIodGFyZ2V0RmliZXIsIF9pbnN0YW5jZTIsIHN0YXRlTm9kZSlcbiAgICAgICAgKSxcbiAgICAgIChfaW5zdGFuY2UyID0gZ2V0TGlzdGVuZXIodGFyZ2V0RmliZXIsIHJlYWN0TmFtZSkpLFxuICAgICAgbnVsbCAhPSBfaW5zdGFuY2UyICYmXG4gICAgICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgICAgIGNyZWF0ZURpc3BhdGNoTGlzdGVuZXIodGFyZ2V0RmliZXIsIF9pbnN0YW5jZTIsIHN0YXRlTm9kZSlcbiAgICAgICAgKSk7XG4gICAgdGFyZ2V0RmliZXIgPSB0YXJnZXRGaWJlci5yZXR1cm47XG4gIH1cbiAgcmV0dXJuIGxpc3RlbmVycztcbn1cbmZ1bmN0aW9uIGdldFBhcmVudChpbnN0KSB7XG4gIGlmIChudWxsID09PSBpbnN0KSByZXR1cm4gbnVsbDtcbiAgZG8gaW5zdCA9IGluc3QucmV0dXJuO1xuICB3aGlsZSAoaW5zdCAmJiA1ICE9PSBpbnN0LnRhZyAmJiAyNyAhPT0gaW5zdC50YWcpO1xuICByZXR1cm4gaW5zdCA/IGluc3QgOiBudWxsO1xufVxuZnVuY3Rpb24gYWNjdW11bGF0ZUVudGVyTGVhdmVMaXN0ZW5lcnNGb3JFdmVudChcbiAgZGlzcGF0Y2hRdWV1ZSxcbiAgZXZlbnQsXG4gIHRhcmdldCxcbiAgY29tbW9uLFxuICBpbkNhcHR1cmVQaGFzZVxuKSB7XG4gIGZvciAoXG4gICAgdmFyIHJlZ2lzdHJhdGlvbk5hbWUgPSBldmVudC5fcmVhY3ROYW1lLCBsaXN0ZW5lcnMgPSBbXTtcbiAgICBudWxsICE9PSB0YXJnZXQgJiYgdGFyZ2V0ICE9PSBjb21tb247XG5cbiAgKSB7XG4gICAgdmFyIF9pbnN0YW5jZTMgPSB0YXJnZXQsXG4gICAgICBhbHRlcm5hdGUgPSBfaW5zdGFuY2UzLmFsdGVybmF0ZSxcbiAgICAgIHN0YXRlTm9kZSA9IF9pbnN0YW5jZTMuc3RhdGVOb2RlO1xuICAgIF9pbnN0YW5jZTMgPSBfaW5zdGFuY2UzLnRhZztcbiAgICBpZiAobnVsbCAhPT0gYWx0ZXJuYXRlICYmIGFsdGVybmF0ZSA9PT0gY29tbW9uKSBicmVhaztcbiAgICAoNSAhPT0gX2luc3RhbmNlMyAmJiAyNiAhPT0gX2luc3RhbmNlMyAmJiAyNyAhPT0gX2luc3RhbmNlMykgfHxcbiAgICAgIG51bGwgPT09IHN0YXRlTm9kZSB8fFxuICAgICAgKChhbHRlcm5hdGUgPSBzdGF0ZU5vZGUpLFxuICAgICAgaW5DYXB0dXJlUGhhc2VcbiAgICAgICAgPyAoKHN0YXRlTm9kZSA9IGdldExpc3RlbmVyKHRhcmdldCwgcmVnaXN0cmF0aW9uTmFtZSkpLFxuICAgICAgICAgIG51bGwgIT0gc3RhdGVOb2RlICYmXG4gICAgICAgICAgICBsaXN0ZW5lcnMudW5zaGlmdChcbiAgICAgICAgICAgICAgY3JlYXRlRGlzcGF0Y2hMaXN0ZW5lcih0YXJnZXQsIHN0YXRlTm9kZSwgYWx0ZXJuYXRlKVxuICAgICAgICAgICAgKSlcbiAgICAgICAgOiBpbkNhcHR1cmVQaGFzZSB8fFxuICAgICAgICAgICgoc3RhdGVOb2RlID0gZ2V0TGlzdGVuZXIodGFyZ2V0LCByZWdpc3RyYXRpb25OYW1lKSksXG4gICAgICAgICAgbnVsbCAhPSBzdGF0ZU5vZGUgJiZcbiAgICAgICAgICAgIGxpc3RlbmVycy5wdXNoKFxuICAgICAgICAgICAgICBjcmVhdGVEaXNwYXRjaExpc3RlbmVyKHRhcmdldCwgc3RhdGVOb2RlLCBhbHRlcm5hdGUpXG4gICAgICAgICAgICApKSk7XG4gICAgdGFyZ2V0ID0gdGFyZ2V0LnJldHVybjtcbiAgfVxuICAwICE9PSBsaXN0ZW5lcnMubGVuZ3RoICYmXG4gICAgZGlzcGF0Y2hRdWV1ZS5wdXNoKHsgZXZlbnQ6IGV2ZW50LCBsaXN0ZW5lcnM6IGxpc3RlbmVycyB9KTtcbn1cbnZhciBOT1JNQUxJWkVfTkVXTElORVNfUkVHRVggPSAvXFxyXFxuPy9nLFxuICBOT1JNQUxJWkVfTlVMTF9BTkRfUkVQTEFDRU1FTlRfUkVHRVggPSAvXFx1MDAwMHxcXHVGRkZEL2c7XG5mdW5jdGlvbiBub3JtYWxpemVNYXJrdXBGb3JUZXh0T3JBdHRyaWJ1dGUobWFya3VwKSB7XG4gIHJldHVybiAoXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG1hcmt1cCA/IG1hcmt1cCA6IFwiXCIgKyBtYXJrdXApXG4gICAgLnJlcGxhY2UoTk9STUFMSVpFX05FV0xJTkVTX1JFR0VYLCBcIlxcblwiKVxuICAgIC5yZXBsYWNlKE5PUk1BTElaRV9OVUxMX0FORF9SRVBMQUNFTUVOVF9SRUdFWCwgXCJcIik7XG59XG5mdW5jdGlvbiBjaGVja0ZvclVubWF0Y2hlZFRleHQoc2VydmVyVGV4dCwgY2xpZW50VGV4dCkge1xuICBjbGllbnRUZXh0ID0gbm9ybWFsaXplTWFya3VwRm9yVGV4dE9yQXR0cmlidXRlKGNsaWVudFRleHQpO1xuICByZXR1cm4gbm9ybWFsaXplTWFya3VwRm9yVGV4dE9yQXR0cmlidXRlKHNlcnZlclRleHQpID09PSBjbGllbnRUZXh0ID8gITAgOiAhMTtcbn1cbmZ1bmN0aW9uIG5vb3AkMSgpIHt9XG5mdW5jdGlvbiBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywga2V5LCB2YWx1ZSwgcHJvcHMsIHByZXZWYWx1ZSkge1xuICBzd2l0Y2ggKGtleSkge1xuICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlXG4gICAgICAgID8gXCJib2R5XCIgPT09IHRhZyB8fFxuICAgICAgICAgIChcInRleHRhcmVhXCIgPT09IHRhZyAmJiBcIlwiID09PSB2YWx1ZSkgfHxcbiAgICAgICAgICBzZXRUZXh0Q29udGVudChkb21FbGVtZW50LCB2YWx1ZSlcbiAgICAgICAgOiAoXCJudW1iZXJcIiA9PT0gdHlwZW9mIHZhbHVlIHx8IFwiYmlnaW50XCIgPT09IHR5cGVvZiB2YWx1ZSkgJiZcbiAgICAgICAgICBcImJvZHlcIiAhPT0gdGFnICYmXG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQoZG9tRWxlbWVudCwgXCJcIiArIHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjbGFzc05hbWVcIjpcbiAgICAgIHNldFZhbHVlRm9yS25vd25BdHRyaWJ1dGUoZG9tRWxlbWVudCwgXCJjbGFzc1wiLCB2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwidGFiSW5kZXhcIjpcbiAgICAgIHNldFZhbHVlRm9yS25vd25BdHRyaWJ1dGUoZG9tRWxlbWVudCwgXCJ0YWJpbmRleFwiLCB2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZGlyXCI6XG4gICAgY2FzZSBcInJvbGVcIjpcbiAgICBjYXNlIFwidmlld0JveFwiOlxuICAgIGNhc2UgXCJ3aWR0aFwiOlxuICAgIGNhc2UgXCJoZWlnaHRcIjpcbiAgICAgIHNldFZhbHVlRm9yS25vd25BdHRyaWJ1dGUoZG9tRWxlbWVudCwga2V5LCB2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgIHNldFZhbHVlRm9yU3R5bGVzKGRvbUVsZW1lbnQsIHZhbHVlLCBwcmV2VmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImRhdGFcIjpcbiAgICAgIGlmIChcIm9iamVjdFwiICE9PSB0YWcpIHtcbiAgICAgICAgc2V0VmFsdWVGb3JLbm93bkF0dHJpYnV0ZShkb21FbGVtZW50LCBcImRhdGFcIiwgdmFsdWUpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICBjYXNlIFwic3JjXCI6XG4gICAgY2FzZSBcImhyZWZcIjpcbiAgICAgIGlmIChcIlwiID09PSB2YWx1ZSAmJiAoXCJhXCIgIT09IHRhZyB8fCBcImhyZWZcIiAhPT0ga2V5KSkge1xuICAgICAgICBkb21FbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICAgIGlmIChcbiAgICAgICAgbnVsbCA9PSB2YWx1ZSB8fFxuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgXCJib29sZWFuXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIGRvbUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBzYW5pdGl6ZVVSTChcIlwiICsgdmFsdWUpO1xuICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiYWN0aW9uXCI6XG4gICAgY2FzZSBcImZvcm1BY3Rpb25cIjpcbiAgICAgIGlmIChcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSkge1xuICAgICAgICBkb21FbGVtZW50LnNldEF0dHJpYnV0ZShcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgXCJqYXZhc2NyaXB0OnRocm93IG5ldyBFcnJvcignQSBSZWFjdCBmb3JtIHdhcyB1bmV4cGVjdGVkbHkgc3VibWl0dGVkLiBJZiB5b3UgY2FsbGVkIGZvcm0uc3VibWl0KCkgbWFudWFsbHksIGNvbnNpZGVyIHVzaW5nIGZvcm0ucmVxdWVzdFN1Ym1pdCgpIGluc3RlYWQuIElmIHlvdVxcXFwncmUgdHJ5aW5nIHRvIHVzZSBldmVudC5zdG9wUHJvcGFnYXRpb24oKSBpbiBhIHN1Ym1pdCBldmVudCBoYW5kbGVyLCBjb25zaWRlciBhbHNvIGNhbGxpbmcgZXZlbnQucHJldmVudERlZmF1bHQoKS4nKVwiXG4gICAgICAgICk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfSBlbHNlXG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIHByZXZWYWx1ZSAmJlxuICAgICAgICAgIChcImZvcm1BY3Rpb25cIiA9PT0ga2V5XG4gICAgICAgICAgICA/IChcImlucHV0XCIgIT09IHRhZyAmJlxuICAgICAgICAgICAgICAgIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBcIm5hbWVcIiwgcHJvcHMubmFtZSwgcHJvcHMsIG51bGwpLFxuICAgICAgICAgICAgICBzZXRQcm9wKFxuICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgdGFnLFxuICAgICAgICAgICAgICAgIFwiZm9ybUVuY1R5cGVcIixcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtRW5jVHlwZSxcbiAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHNldFByb3AoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgXCJmb3JtTWV0aG9kXCIsXG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybU1ldGhvZCxcbiAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICksXG4gICAgICAgICAgICAgIHNldFByb3AoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgXCJmb3JtVGFyZ2V0XCIsXG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybVRhcmdldCxcbiAgICAgICAgICAgICAgICBwcm9wcyxcbiAgICAgICAgICAgICAgICBudWxsXG4gICAgICAgICAgICAgICkpXG4gICAgICAgICAgICA6IChzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgXCJlbmNUeXBlXCIsIHByb3BzLmVuY1R5cGUsIHByb3BzLCBudWxsKSxcbiAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIFwibWV0aG9kXCIsIHByb3BzLm1ldGhvZCwgcHJvcHMsIG51bGwpLFxuICAgICAgICAgICAgICBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgXCJ0YXJnZXRcIiwgcHJvcHMudGFyZ2V0LCBwcm9wcywgbnVsbCkpKTtcbiAgICAgIGlmIChcbiAgICAgICAgbnVsbCA9PSB2YWx1ZSB8fFxuICAgICAgICBcInN5bWJvbFwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgICAgXCJib29sZWFuXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIGRvbUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgdmFsdWUgPSBzYW5pdGl6ZVVSTChcIlwiICsgdmFsdWUpO1xuICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCB2YWx1ZSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwib25DbGlja1wiOlxuICAgICAgbnVsbCAhPSB2YWx1ZSAmJiAoZG9tRWxlbWVudC5vbmNsaWNrID0gbm9vcCQxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJvblNjcm9sbFwiOlxuICAgICAgbnVsbCAhPSB2YWx1ZSAmJiBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwic2Nyb2xsXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm9uU2Nyb2xsRW5kXCI6XG4gICAgICBudWxsICE9IHZhbHVlICYmIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJzY3JvbGxlbmRcIiwgZG9tRWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgIGlmIChudWxsICE9IHZhbHVlKSB7XG4gICAgICAgIGlmIChcIm9iamVjdFwiICE9PSB0eXBlb2YgdmFsdWUgfHwgIShcIl9faHRtbFwiIGluIHZhbHVlKSlcbiAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDYxKSk7XG4gICAgICAgIGtleSA9IHZhbHVlLl9faHRtbDtcbiAgICAgICAgaWYgKG51bGwgIT0ga2V5KSB7XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcHMuY2hpbGRyZW4pIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNjApKTtcbiAgICAgICAgICBkb21FbGVtZW50LmlubmVySFRNTCA9IGtleTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICBkb21FbGVtZW50Lm11bHRpcGxlID1cbiAgICAgICAgdmFsdWUgJiYgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiYgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm11dGVkXCI6XG4gICAgICBkb21FbGVtZW50Lm11dGVkID1cbiAgICAgICAgdmFsdWUgJiYgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiYgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInN1cHByZXNzQ29udGVudEVkaXRhYmxlV2FybmluZ1wiOlxuICAgIGNhc2UgXCJzdXBwcmVzc0h5ZHJhdGlvbldhcm5pbmdcIjpcbiAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgY2FzZSBcImRlZmF1bHRDaGVja2VkXCI6XG4gICAgY2FzZSBcImlubmVySFRNTFwiOlxuICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJhdXRvRm9jdXNcIjpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua0hyZWZcIjpcbiAgICAgIGlmIChcbiAgICAgICAgbnVsbCA9PSB2YWx1ZSB8fFxuICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgICBcImJvb2xlYW5cIiA9PT0gdHlwZW9mIHZhbHVlIHx8XG4gICAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiB2YWx1ZVxuICAgICAgKSB7XG4gICAgICAgIGRvbUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKFwieGxpbms6aHJlZlwiKTtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBrZXkgPSBzYW5pdGl6ZVVSTChcIlwiICsgdmFsdWUpO1xuICAgICAgZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGVOUyhcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gICAgICAgIFwieGxpbms6aHJlZlwiLFxuICAgICAgICBrZXlcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiY29udGVudEVkaXRhYmxlXCI6XG4gICAgY2FzZSBcInNwZWxsQ2hlY2tcIjpcbiAgICBjYXNlIFwiZHJhZ2dhYmxlXCI6XG4gICAgY2FzZSBcInZhbHVlXCI6XG4gICAgY2FzZSBcImF1dG9SZXZlcnNlXCI6XG4gICAgY2FzZSBcImV4dGVybmFsUmVzb3VyY2VzUmVxdWlyZWRcIjpcbiAgICBjYXNlIFwiZm9jdXNhYmxlXCI6XG4gICAgY2FzZSBcInByZXNlcnZlQWxwaGFcIjpcbiAgICAgIG51bGwgIT0gdmFsdWUgJiYgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgdmFsdWUgJiYgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHZhbHVlXG4gICAgICAgID8gZG9tRWxlbWVudC5zZXRBdHRyaWJ1dGUoa2V5LCBcIlwiICsgdmFsdWUpXG4gICAgICAgIDogZG9tRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoa2V5KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpbmVydFwiOlxuICAgIGNhc2UgXCJhbGxvd0Z1bGxTY3JlZW5cIjpcbiAgICBjYXNlIFwiYXN5bmNcIjpcbiAgICBjYXNlIFwiYXV0b1BsYXlcIjpcbiAgICBjYXNlIFwiY29udHJvbHNcIjpcbiAgICBjYXNlIFwiZGVmYXVsdFwiOlxuICAgIGNhc2UgXCJkZWZlclwiOlxuICAgIGNhc2UgXCJkaXNhYmxlZFwiOlxuICAgIGNhc2UgXCJkaXNhYmxlUGljdHVyZUluUGljdHVyZVwiOlxuICAgIGNhc2UgXCJkaXNhYmxlUmVtb3RlUGxheWJhY2tcIjpcbiAgICBjYXNlIFwiZm9ybU5vVmFsaWRhdGVcIjpcbiAgICBjYXNlIFwiaGlkZGVuXCI6XG4gICAgY2FzZSBcImxvb3BcIjpcbiAgICBjYXNlIFwibm9Nb2R1bGVcIjpcbiAgICBjYXNlIFwibm9WYWxpZGF0ZVwiOlxuICAgIGNhc2UgXCJvcGVuXCI6XG4gICAgY2FzZSBcInBsYXlzSW5saW5lXCI6XG4gICAgY2FzZSBcInJlYWRPbmx5XCI6XG4gICAgY2FzZSBcInJlcXVpcmVkXCI6XG4gICAgY2FzZSBcInJldmVyc2VkXCI6XG4gICAgY2FzZSBcInNjb3BlZFwiOlxuICAgIGNhc2UgXCJzZWFtbGVzc1wiOlxuICAgIGNhc2UgXCJpdGVtU2NvcGVcIjpcbiAgICAgIHZhbHVlICYmIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmIFwic3ltYm9sXCIgIT09IHR5cGVvZiB2YWx1ZVxuICAgICAgICA/IGRvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgXCJcIilcbiAgICAgICAgOiBkb21FbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNhcHR1cmVcIjpcbiAgICBjYXNlIFwiZG93bmxvYWRcIjpcbiAgICAgICEwID09PSB2YWx1ZVxuICAgICAgICA/IGRvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgXCJcIilcbiAgICAgICAgOiAhMSAhPT0gdmFsdWUgJiZcbiAgICAgICAgICAgIG51bGwgIT0gdmFsdWUgJiZcbiAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWVcbiAgICAgICAgICA/IGRvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpXG4gICAgICAgICAgOiBkb21FbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShrZXkpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImNvbHNcIjpcbiAgICBjYXNlIFwicm93c1wiOlxuICAgIGNhc2UgXCJzaXplXCI6XG4gICAgY2FzZSBcInNwYW5cIjpcbiAgICAgIG51bGwgIT0gdmFsdWUgJiZcbiAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHZhbHVlICYmXG4gICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgdmFsdWUgJiZcbiAgICAgICFpc05hTih2YWx1ZSkgJiZcbiAgICAgIDEgPD0gdmFsdWVcbiAgICAgICAgPyBkb21FbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKVxuICAgICAgICA6IGRvbUVsZW1lbnQucmVtb3ZlQXR0cmlidXRlKGtleSk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwicm93U3BhblwiOlxuICAgIGNhc2UgXCJzdGFydFwiOlxuICAgICAgbnVsbCA9PSB2YWx1ZSB8fFxuICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdmFsdWUgfHxcbiAgICAgIFwic3ltYm9sXCIgPT09IHR5cGVvZiB2YWx1ZSB8fFxuICAgICAgaXNOYU4odmFsdWUpXG4gICAgICAgID8gZG9tRWxlbWVudC5yZW1vdmVBdHRyaWJ1dGUoa2V5KVxuICAgICAgICA6IGRvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgdmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInBvcG92ZXJcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJiZWZvcmV0b2dnbGVcIiwgZG9tRWxlbWVudCk7XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwidG9nZ2xlXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgc2V0VmFsdWVGb3JBdHRyaWJ1dGUoZG9tRWxlbWVudCwgXCJwb3BvdmVyXCIsIHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua0FjdHVhdGVcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gICAgICAgIFwieGxpbms6YWN0dWF0ZVwiLFxuICAgICAgICB2YWx1ZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua0FyY3JvbGVcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gICAgICAgIFwieGxpbms6YXJjcm9sZVwiLFxuICAgICAgICB2YWx1ZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua1JvbGVcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gICAgICAgIFwieGxpbms6cm9sZVwiLFxuICAgICAgICB2YWx1ZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua1Nob3dcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rXCIsXG4gICAgICAgIFwieGxpbms6c2hvd1wiLFxuICAgICAgICB2YWx1ZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bGlua1RpdGxlXCI6XG4gICAgICBzZXRWYWx1ZUZvck5hbWVzcGFjZWRBdHRyaWJ1dGUoXG4gICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGlua1wiLFxuICAgICAgICBcInhsaW5rOnRpdGxlXCIsXG4gICAgICAgIHZhbHVlXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInhsaW5rVHlwZVwiOlxuICAgICAgc2V0VmFsdWVGb3JOYW1lc3BhY2VkQXR0cmlidXRlKFxuICAgICAgICBkb21FbGVtZW50LFxuICAgICAgICBcImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmtcIixcbiAgICAgICAgXCJ4bGluazp0eXBlXCIsXG4gICAgICAgIHZhbHVlXG4gICAgICApO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcInhtbEJhc2VcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcbiAgICAgICAgXCJ4bWw6YmFzZVwiLFxuICAgICAgICB2YWx1ZVxuICAgICAgKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ4bWxMYW5nXCI6XG4gICAgICBzZXRWYWx1ZUZvck5hbWVzcGFjZWRBdHRyaWJ1dGUoXG4gICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgIFwiaHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlXCIsXG4gICAgICAgIFwieG1sOmxhbmdcIixcbiAgICAgICAgdmFsdWVcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwieG1sU3BhY2VcIjpcbiAgICAgIHNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZShcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2VcIixcbiAgICAgICAgXCJ4bWw6c3BhY2VcIixcbiAgICAgICAgdmFsdWVcbiAgICAgICk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiaXNcIjpcbiAgICAgIHNldFZhbHVlRm9yQXR0cmlidXRlKGRvbUVsZW1lbnQsIFwiaXNcIiwgdmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImlubmVyVGV4dFwiOlxuICAgIGNhc2UgXCJ0ZXh0Q29udGVudFwiOlxuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIGlmIChcbiAgICAgICAgISgyIDwga2V5Lmxlbmd0aCkgfHxcbiAgICAgICAgKFwib1wiICE9PSBrZXlbMF0gJiYgXCJPXCIgIT09IGtleVswXSkgfHxcbiAgICAgICAgKFwiblwiICE9PSBrZXlbMV0gJiYgXCJOXCIgIT09IGtleVsxXSlcbiAgICAgIClcbiAgICAgICAgKGtleSA9IGFsaWFzZXMuZ2V0KGtleSkgfHwga2V5KSxcbiAgICAgICAgICBzZXRWYWx1ZUZvckF0dHJpYnV0ZShkb21FbGVtZW50LCBrZXksIHZhbHVlKTtcbiAgfVxufVxuZnVuY3Rpb24gc2V0UHJvcE9uQ3VzdG9tRWxlbWVudChkb21FbGVtZW50LCB0YWcsIGtleSwgdmFsdWUsIHByb3BzLCBwcmV2VmFsdWUpIHtcbiAgc3dpdGNoIChrZXkpIHtcbiAgICBjYXNlIFwic3R5bGVcIjpcbiAgICAgIHNldFZhbHVlRm9yU3R5bGVzKGRvbUVsZW1lbnQsIHZhbHVlLCBwcmV2VmFsdWUpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICBpZiAobnVsbCAhPSB2YWx1ZSkge1xuICAgICAgICBpZiAoXCJvYmplY3RcIiAhPT0gdHlwZW9mIHZhbHVlIHx8ICEoXCJfX2h0bWxcIiBpbiB2YWx1ZSkpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg2MSkpO1xuICAgICAgICBrZXkgPSB2YWx1ZS5fX2h0bWw7XG4gICAgICAgIGlmIChudWxsICE9IGtleSkge1xuICAgICAgICAgIGlmIChudWxsICE9IHByb3BzLmNoaWxkcmVuKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDYwKSk7XG4gICAgICAgICAgZG9tRWxlbWVudC5pbm5lckhUTUwgPSBrZXk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHZhbHVlXG4gICAgICAgID8gc2V0VGV4dENvbnRlbnQoZG9tRWxlbWVudCwgdmFsdWUpXG4gICAgICAgIDogKFwibnVtYmVyXCIgPT09IHR5cGVvZiB2YWx1ZSB8fCBcImJpZ2ludFwiID09PSB0eXBlb2YgdmFsdWUpICYmXG4gICAgICAgICAgc2V0VGV4dENvbnRlbnQoZG9tRWxlbWVudCwgXCJcIiArIHZhbHVlKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJvblNjcm9sbFwiOlxuICAgICAgbnVsbCAhPSB2YWx1ZSAmJiBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwic2Nyb2xsXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcIm9uU2Nyb2xsRW5kXCI6XG4gICAgICBudWxsICE9IHZhbHVlICYmIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJzY3JvbGxlbmRcIiwgZG9tRWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwib25DbGlja1wiOlxuICAgICAgbnVsbCAhPSB2YWx1ZSAmJiAoZG9tRWxlbWVudC5vbmNsaWNrID0gbm9vcCQxKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJzdXBwcmVzc0NvbnRlbnRFZGl0YWJsZVdhcm5pbmdcIjpcbiAgICBjYXNlIFwic3VwcHJlc3NIeWRyYXRpb25XYXJuaW5nXCI6XG4gICAgY2FzZSBcImlubmVySFRNTFwiOlxuICAgIGNhc2UgXCJyZWZcIjpcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpbm5lclRleHRcIjpcbiAgICBjYXNlIFwidGV4dENvbnRlbnRcIjpcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoIXJlZ2lzdHJhdGlvbk5hbWVEZXBlbmRlbmNpZXMuaGFzT3duUHJvcGVydHkoa2V5KSlcbiAgICAgICAgYToge1xuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgIFwib1wiID09PSBrZXlbMF0gJiZcbiAgICAgICAgICAgIFwiblwiID09PSBrZXlbMV0gJiZcbiAgICAgICAgICAgICgocHJvcHMgPSBrZXkuZW5kc1dpdGgoXCJDYXB0dXJlXCIpKSxcbiAgICAgICAgICAgICh0YWcgPSBrZXkuc2xpY2UoMiwgcHJvcHMgPyBrZXkubGVuZ3RoIC0gNyA6IHZvaWQgMCkpLFxuICAgICAgICAgICAgKHByZXZWYWx1ZSA9IGRvbUVsZW1lbnRbaW50ZXJuYWxQcm9wc0tleV0gfHwgbnVsbCksXG4gICAgICAgICAgICAocHJldlZhbHVlID0gbnVsbCAhPSBwcmV2VmFsdWUgPyBwcmV2VmFsdWVba2V5XSA6IG51bGwpLFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgcHJldlZhbHVlICYmXG4gICAgICAgICAgICAgIGRvbUVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcih0YWcsIHByZXZWYWx1ZSwgcHJvcHMpLFxuICAgICAgICAgICAgXCJmdW5jdGlvblwiID09PSB0eXBlb2YgdmFsdWUpXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBwcmV2VmFsdWUgJiZcbiAgICAgICAgICAgICAgbnVsbCAhPT0gcHJldlZhbHVlICYmXG4gICAgICAgICAgICAgIChrZXkgaW4gZG9tRWxlbWVudFxuICAgICAgICAgICAgICAgID8gKGRvbUVsZW1lbnRba2V5XSA9IG51bGwpXG4gICAgICAgICAgICAgICAgOiBkb21FbGVtZW50Lmhhc0F0dHJpYnV0ZShrZXkpICYmXG4gICAgICAgICAgICAgICAgICBkb21FbGVtZW50LnJlbW92ZUF0dHJpYnV0ZShrZXkpKTtcbiAgICAgICAgICAgIGRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcih0YWcsIHZhbHVlLCBwcm9wcyk7XG4gICAgICAgICAgICBicmVhayBhO1xuICAgICAgICAgIH1cbiAgICAgICAgICBrZXkgaW4gZG9tRWxlbWVudFxuICAgICAgICAgICAgPyAoZG9tRWxlbWVudFtrZXldID0gdmFsdWUpXG4gICAgICAgICAgICA6ICEwID09PSB2YWx1ZVxuICAgICAgICAgICAgICA/IGRvbUVsZW1lbnQuc2V0QXR0cmlidXRlKGtleSwgXCJcIilcbiAgICAgICAgICAgICAgOiBzZXRWYWx1ZUZvckF0dHJpYnV0ZShkb21FbGVtZW50LCBrZXksIHZhbHVlKTtcbiAgICAgICAgfVxuICB9XG59XG5mdW5jdGlvbiBzZXRJbml0aWFsUHJvcGVydGllcyhkb21FbGVtZW50LCB0YWcsIHByb3BzKSB7XG4gIHN3aXRjaCAodGFnKSB7XG4gICAgY2FzZSBcImRpdlwiOlxuICAgIGNhc2UgXCJzcGFuXCI6XG4gICAgY2FzZSBcInN2Z1wiOlxuICAgIGNhc2UgXCJwYXRoXCI6XG4gICAgY2FzZSBcImFcIjpcbiAgICBjYXNlIFwiZ1wiOlxuICAgIGNhc2UgXCJwXCI6XG4gICAgY2FzZSBcImxpXCI6XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiaW1nXCI6XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwiZXJyb3JcIiwgZG9tRWxlbWVudCk7XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwibG9hZFwiLCBkb21FbGVtZW50KTtcbiAgICAgIHZhciBoYXNTcmMgPSAhMSxcbiAgICAgICAgaGFzU3JjU2V0ID0gITEsXG4gICAgICAgIHByb3BLZXk7XG4gICAgICBmb3IgKHByb3BLZXkgaW4gcHJvcHMpXG4gICAgICAgIGlmIChwcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5KSkge1xuICAgICAgICAgIHZhciBwcm9wVmFsdWUgPSBwcm9wc1twcm9wS2V5XTtcbiAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wVmFsdWUpXG4gICAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgICAgY2FzZSBcInNyY1wiOlxuICAgICAgICAgICAgICAgIGhhc1NyYyA9ICEwO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwic3JjU2V0XCI6XG4gICAgICAgICAgICAgICAgaGFzU3JjU2V0ID0gITA7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzNywgdGFnKSk7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIHByb3BLZXksIHByb3BWYWx1ZSwgcHJvcHMsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBoYXNTcmNTZXQgJiZcbiAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIFwic3JjU2V0XCIsIHByb3BzLnNyY1NldCwgcHJvcHMsIG51bGwpO1xuICAgICAgaGFzU3JjICYmIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBcInNyY1wiLCBwcm9wcy5zcmMsIHByb3BzLCBudWxsKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwiaW5wdXRcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJpbnZhbGlkXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgdmFyIGRlZmF1bHRWYWx1ZSA9IChwcm9wS2V5ID0gcHJvcFZhbHVlID0gaGFzU3JjU2V0ID0gbnVsbCksXG4gICAgICAgIGNoZWNrZWQgPSBudWxsLFxuICAgICAgICBkZWZhdWx0Q2hlY2tlZCA9IG51bGw7XG4gICAgICBmb3IgKGhhc1NyYyBpbiBwcm9wcylcbiAgICAgICAgaWYgKHByb3BzLmhhc093blByb3BlcnR5KGhhc1NyYykpIHtcbiAgICAgICAgICB2YXIgcHJvcFZhbHVlJDE4NiA9IHByb3BzW2hhc1NyY107XG4gICAgICAgICAgaWYgKG51bGwgIT0gcHJvcFZhbHVlJDE4NilcbiAgICAgICAgICAgIHN3aXRjaCAoaGFzU3JjKSB7XG4gICAgICAgICAgICAgIGNhc2UgXCJuYW1lXCI6XG4gICAgICAgICAgICAgICAgaGFzU3JjU2V0ID0gcHJvcFZhbHVlJDE4NjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcInR5cGVcIjpcbiAgICAgICAgICAgICAgICBwcm9wVmFsdWUgPSBwcm9wVmFsdWUkMTg2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiY2hlY2tlZFwiOlxuICAgICAgICAgICAgICAgIGNoZWNrZWQgPSBwcm9wVmFsdWUkMTg2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdENoZWNrZWRcIjpcbiAgICAgICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZCA9IHByb3BWYWx1ZSQxODY7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGNhc2UgXCJ2YWx1ZVwiOlxuICAgICAgICAgICAgICAgIHByb3BLZXkgPSBwcm9wVmFsdWUkMTg2O1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgICAgICAgICAgICAgZGVmYXVsdFZhbHVlID0gcHJvcFZhbHVlJDE4NjtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICAgIGlmIChudWxsICE9IHByb3BWYWx1ZSQxODYpXG4gICAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzNywgdGFnKSk7XG4gICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIGhhc1NyYywgcHJvcFZhbHVlJDE4NiwgcHJvcHMsIG51bGwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICBpbml0SW5wdXQoXG4gICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgIHByb3BLZXksXG4gICAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIHByb3BWYWx1ZSxcbiAgICAgICAgaGFzU3JjU2V0LFxuICAgICAgICAhMVxuICAgICAgKTtcbiAgICAgIHRyYWNrKGRvbUVsZW1lbnQpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJpbnZhbGlkXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgaGFzU3JjID0gcHJvcFZhbHVlID0gcHJvcEtleSA9IG51bGw7XG4gICAgICBmb3IgKGhhc1NyY1NldCBpbiBwcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb3BzLmhhc093blByb3BlcnR5KGhhc1NyY1NldCkgJiZcbiAgICAgICAgICAoKGRlZmF1bHRWYWx1ZSA9IHByb3BzW2hhc1NyY1NldF0pLCBudWxsICE9IGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAoaGFzU3JjU2V0KSB7XG4gICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgICAgcHJvcEtleSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgICAgICAgICAgIHByb3BWYWx1ZSA9IGRlZmF1bHRWYWx1ZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwibXVsdGlwbGVcIjpcbiAgICAgICAgICAgICAgaGFzU3JjID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIGhhc1NyY1NldCwgZGVmYXVsdFZhbHVlLCBwcm9wcywgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgdGFnID0gcHJvcEtleTtcbiAgICAgIHByb3BzID0gcHJvcFZhbHVlO1xuICAgICAgZG9tRWxlbWVudC5tdWx0aXBsZSA9ICEhaGFzU3JjO1xuICAgICAgbnVsbCAhPSB0YWdcbiAgICAgICAgPyB1cGRhdGVPcHRpb25zKGRvbUVsZW1lbnQsICEhaGFzU3JjLCB0YWcsICExKVxuICAgICAgICA6IG51bGwgIT0gcHJvcHMgJiYgdXBkYXRlT3B0aW9ucyhkb21FbGVtZW50LCAhIWhhc1NyYywgcHJvcHMsICEwKTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwidGV4dGFyZWFcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJpbnZhbGlkXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgcHJvcEtleSA9IGhhc1NyY1NldCA9IGhhc1NyYyA9IG51bGw7XG4gICAgICBmb3IgKHByb3BWYWx1ZSBpbiBwcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgIHByb3BzLmhhc093blByb3BlcnR5KHByb3BWYWx1ZSkgJiZcbiAgICAgICAgICAoKGRlZmF1bHRWYWx1ZSA9IHByb3BzW3Byb3BWYWx1ZV0pLCBudWxsICE9IGRlZmF1bHRWYWx1ZSlcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAocHJvcFZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgICAgaGFzU3JjID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgaGFzU3JjU2V0ID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgICBwcm9wS2V5ID0gZGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBkZWZhdWx0VmFsdWUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoOTEpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgcHJvcFZhbHVlLCBkZWZhdWx0VmFsdWUsIHByb3BzLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICBpbml0VGV4dGFyZWEoZG9tRWxlbWVudCwgaGFzU3JjLCBoYXNTcmNTZXQsIHByb3BLZXkpO1xuICAgICAgdHJhY2soZG9tRWxlbWVudCk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcIm9wdGlvblwiOlxuICAgICAgZm9yIChjaGVja2VkIGluIHByb3BzKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoY2hlY2tlZCkgJiZcbiAgICAgICAgICAoKGhhc1NyYyA9IHByb3BzW2NoZWNrZWRdKSwgbnVsbCAhPSBoYXNTcmMpXG4gICAgICAgIClcbiAgICAgICAgICBzd2l0Y2ggKGNoZWNrZWQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOlxuICAgICAgICAgICAgICBkb21FbGVtZW50LnNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBoYXNTcmMgJiZcbiAgICAgICAgICAgICAgICBcImZ1bmN0aW9uXCIgIT09IHR5cGVvZiBoYXNTcmMgJiZcbiAgICAgICAgICAgICAgICBcInN5bWJvbFwiICE9PSB0eXBlb2YgaGFzU3JjO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBjaGVja2VkLCBoYXNTcmMsIHByb3BzLCBudWxsKTtcbiAgICAgICAgICB9XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcImRpYWxvZ1wiOlxuICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImNhbmNlbFwiLCBkb21FbGVtZW50KTtcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJjbG9zZVwiLCBkb21FbGVtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJpZnJhbWVcIjpcbiAgICBjYXNlIFwib2JqZWN0XCI6XG4gICAgICBsaXN0ZW5Ub05vbkRlbGVnYXRlZEV2ZW50KFwibG9hZFwiLCBkb21FbGVtZW50KTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJ2aWRlb1wiOlxuICAgIGNhc2UgXCJhdWRpb1wiOlxuICAgICAgZm9yIChoYXNTcmMgPSAwOyBoYXNTcmMgPCBtZWRpYUV2ZW50VHlwZXMubGVuZ3RoOyBoYXNTcmMrKylcbiAgICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChtZWRpYUV2ZW50VHlwZXNbaGFzU3JjXSwgZG9tRWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiaW1hZ2VcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJlcnJvclwiLCBkb21FbGVtZW50KTtcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJsb2FkXCIsIGRvbUVsZW1lbnQpO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImRldGFpbHNcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJ0b2dnbGVcIiwgZG9tRWxlbWVudCk7XG4gICAgICBicmVhaztcbiAgICBjYXNlIFwiZW1iZWRcIjpcbiAgICBjYXNlIFwic291cmNlXCI6XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIGxpc3RlblRvTm9uRGVsZWdhdGVkRXZlbnQoXCJlcnJvclwiLCBkb21FbGVtZW50KSxcbiAgICAgICAgbGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudChcImxvYWRcIiwgZG9tRWxlbWVudCk7XG4gICAgY2FzZSBcImFyZWFcIjpcbiAgICBjYXNlIFwiYmFzZVwiOlxuICAgIGNhc2UgXCJiclwiOlxuICAgIGNhc2UgXCJjb2xcIjpcbiAgICBjYXNlIFwiaHJcIjpcbiAgICBjYXNlIFwia2V5Z2VuXCI6XG4gICAgY2FzZSBcIm1ldGFcIjpcbiAgICBjYXNlIFwicGFyYW1cIjpcbiAgICBjYXNlIFwidHJhY2tcIjpcbiAgICBjYXNlIFwid2JyXCI6XG4gICAgY2FzZSBcIm1lbnVpdGVtXCI6XG4gICAgICBmb3IgKGRlZmF1bHRDaGVja2VkIGluIHByb3BzKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgcHJvcHMuaGFzT3duUHJvcGVydHkoZGVmYXVsdENoZWNrZWQpICYmXG4gICAgICAgICAgKChoYXNTcmMgPSBwcm9wc1tkZWZhdWx0Q2hlY2tlZF0pLCBudWxsICE9IGhhc1NyYylcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAoZGVmYXVsdENoZWNrZWQpIHtcbiAgICAgICAgICAgIGNhc2UgXCJjaGlsZHJlblwiOlxuICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTM3LCB0YWcpKTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBkZWZhdWx0Q2hlY2tlZCwgaGFzU3JjLCBwcm9wcywgbnVsbCk7XG4gICAgICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoaXNDdXN0b21FbGVtZW50KHRhZykpIHtcbiAgICAgICAgZm9yIChwcm9wVmFsdWUkMTg2IGluIHByb3BzKVxuICAgICAgICAgIHByb3BzLmhhc093blByb3BlcnR5KHByb3BWYWx1ZSQxODYpICYmXG4gICAgICAgICAgICAoKGhhc1NyYyA9IHByb3BzW3Byb3BWYWx1ZSQxODZdKSxcbiAgICAgICAgICAgIHZvaWQgMCAhPT0gaGFzU3JjICYmXG4gICAgICAgICAgICAgIHNldFByb3BPbkN1c3RvbUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcFZhbHVlJDE4NixcbiAgICAgICAgICAgICAgICBoYXNTcmMsXG4gICAgICAgICAgICAgICAgcHJvcHMsXG4gICAgICAgICAgICAgICAgdm9pZCAwXG4gICAgICAgICAgICAgICkpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gIH1cbiAgZm9yIChkZWZhdWx0VmFsdWUgaW4gcHJvcHMpXG4gICAgcHJvcHMuaGFzT3duUHJvcGVydHkoZGVmYXVsdFZhbHVlKSAmJlxuICAgICAgKChoYXNTcmMgPSBwcm9wc1tkZWZhdWx0VmFsdWVdKSxcbiAgICAgIG51bGwgIT0gaGFzU3JjICYmXG4gICAgICAgIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBkZWZhdWx0VmFsdWUsIGhhc1NyYywgcHJvcHMsIG51bGwpKTtcbn1cbmZ1bmN0aW9uIHVwZGF0ZVByb3BlcnRpZXMoZG9tRWxlbWVudCwgdGFnLCBsYXN0UHJvcHMsIG5leHRQcm9wcykge1xuICBzd2l0Y2ggKHRhZykge1xuICAgIGNhc2UgXCJkaXZcIjpcbiAgICBjYXNlIFwic3BhblwiOlxuICAgIGNhc2UgXCJzdmdcIjpcbiAgICBjYXNlIFwicGF0aFwiOlxuICAgIGNhc2UgXCJhXCI6XG4gICAgY2FzZSBcImdcIjpcbiAgICBjYXNlIFwicFwiOlxuICAgIGNhc2UgXCJsaVwiOlxuICAgICAgYnJlYWs7XG4gICAgY2FzZSBcImlucHV0XCI6XG4gICAgICB2YXIgbmFtZSA9IG51bGwsXG4gICAgICAgIHR5cGUgPSBudWxsLFxuICAgICAgICB2YWx1ZSA9IG51bGwsXG4gICAgICAgIGRlZmF1bHRWYWx1ZSA9IG51bGwsXG4gICAgICAgIGxhc3REZWZhdWx0VmFsdWUgPSBudWxsLFxuICAgICAgICBjaGVja2VkID0gbnVsbCxcbiAgICAgICAgZGVmYXVsdENoZWNrZWQgPSBudWxsO1xuICAgICAgZm9yIChwcm9wS2V5IGluIGxhc3RQcm9wcykge1xuICAgICAgICB2YXIgbGFzdFByb3AgPSBsYXN0UHJvcHNbcHJvcEtleV07XG4gICAgICAgIGlmIChsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgJiYgbnVsbCAhPSBsYXN0UHJvcClcbiAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkpIHtcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2VkXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImRlZmF1bHRWYWx1ZVwiOlxuICAgICAgICAgICAgICBsYXN0RGVmYXVsdFZhbHVlID0gbGFzdFByb3A7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkgfHxcbiAgICAgICAgICAgICAgICBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgcHJvcEtleSwgbnVsbCwgbmV4dFByb3BzLCBsYXN0UHJvcCk7XG4gICAgICAgICAgfVxuICAgICAgfVxuICAgICAgZm9yICh2YXIgcHJvcEtleSQyMDMgaW4gbmV4dFByb3BzKSB7XG4gICAgICAgIHZhciBwcm9wS2V5ID0gbmV4dFByb3BzW3Byb3BLZXkkMjAzXTtcbiAgICAgICAgbGFzdFByb3AgPSBsYXN0UHJvcHNbcHJvcEtleSQyMDNdO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgbmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkkMjAzKSAmJlxuICAgICAgICAgIChudWxsICE9IHByb3BLZXkgfHwgbnVsbCAhPSBsYXN0UHJvcClcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAocHJvcEtleSQyMDMpIHtcbiAgICAgICAgICAgIGNhc2UgXCJ0eXBlXCI6XG4gICAgICAgICAgICAgIHR5cGUgPSBwcm9wS2V5O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJuYW1lXCI6XG4gICAgICAgICAgICAgIG5hbWUgPSBwcm9wS2V5O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJjaGVja2VkXCI6XG4gICAgICAgICAgICAgIGNoZWNrZWQgPSBwcm9wS2V5O1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0Q2hlY2tlZFwiOlxuICAgICAgICAgICAgICBkZWZhdWx0Q2hlY2tlZCA9IHByb3BLZXk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgIHZhbHVlID0gcHJvcEtleTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHByb3BLZXk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICBjYXNlIFwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUxcIjpcbiAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcHJvcEtleSlcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzNywgdGFnKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgcHJvcEtleSAhPT0gbGFzdFByb3AgJiZcbiAgICAgICAgICAgICAgICBzZXRQcm9wKFxuICAgICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgIHRhZyxcbiAgICAgICAgICAgICAgICAgIHByb3BLZXkkMjAzLFxuICAgICAgICAgICAgICAgICAgcHJvcEtleSxcbiAgICAgICAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgICAgICAgIGxhc3RQcm9wXG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICB9XG4gICAgICB1cGRhdGVJbnB1dChcbiAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgdmFsdWUsXG4gICAgICAgIGRlZmF1bHRWYWx1ZSxcbiAgICAgICAgbGFzdERlZmF1bHRWYWx1ZSxcbiAgICAgICAgY2hlY2tlZCxcbiAgICAgICAgZGVmYXVsdENoZWNrZWQsXG4gICAgICAgIHR5cGUsXG4gICAgICAgIG5hbWVcbiAgICAgICk7XG4gICAgICByZXR1cm47XG4gICAgY2FzZSBcInNlbGVjdFwiOlxuICAgICAgcHJvcEtleSA9IHZhbHVlID0gZGVmYXVsdFZhbHVlID0gcHJvcEtleSQyMDMgPSBudWxsO1xuICAgICAgZm9yICh0eXBlIGluIGxhc3RQcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgobGFzdERlZmF1bHRWYWx1ZSA9IGxhc3RQcm9wc1t0eXBlXSksXG4gICAgICAgICAgbGFzdFByb3BzLmhhc093blByb3BlcnR5KHR5cGUpICYmIG51bGwgIT0gbGFzdERlZmF1bHRWYWx1ZSlcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICAgICAgICAgIHByb3BLZXkgPSBsYXN0RGVmYXVsdFZhbHVlO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgbmV4dFByb3BzLmhhc093blByb3BlcnR5KHR5cGUpIHx8XG4gICAgICAgICAgICAgICAgc2V0UHJvcChcbiAgICAgICAgICAgICAgICAgIGRvbUVsZW1lbnQsXG4gICAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgICAgICAgIGxhc3REZWZhdWx0VmFsdWVcbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgIGZvciAobmFtZSBpbiBuZXh0UHJvcHMpXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKHR5cGUgPSBuZXh0UHJvcHNbbmFtZV0pLFxuICAgICAgICAgIChsYXN0RGVmYXVsdFZhbHVlID0gbGFzdFByb3BzW25hbWVdKSxcbiAgICAgICAgICBuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkobmFtZSkgJiZcbiAgICAgICAgICAgIChudWxsICE9IHR5cGUgfHwgbnVsbCAhPSBsYXN0RGVmYXVsdFZhbHVlKSlcbiAgICAgICAgKVxuICAgICAgICAgIHN3aXRjaCAobmFtZSkge1xuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgIHByb3BLZXkkMjAzID0gdHlwZTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBjYXNlIFwiZGVmYXVsdFZhbHVlXCI6XG4gICAgICAgICAgICAgIGRlZmF1bHRWYWx1ZSA9IHR5cGU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcIm11bHRpcGxlXCI6XG4gICAgICAgICAgICAgIHZhbHVlID0gdHlwZTtcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHR5cGUgIT09IGxhc3REZWZhdWx0VmFsdWUgJiZcbiAgICAgICAgICAgICAgICBzZXRQcm9wKFxuICAgICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICAgIHRhZyxcbiAgICAgICAgICAgICAgICAgIG5hbWUsXG4gICAgICAgICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgICAgICAgbmV4dFByb3BzLFxuICAgICAgICAgICAgICAgICAgbGFzdERlZmF1bHRWYWx1ZVxuICAgICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgdGFnID0gZGVmYXVsdFZhbHVlO1xuICAgICAgbGFzdFByb3BzID0gdmFsdWU7XG4gICAgICBuZXh0UHJvcHMgPSBwcm9wS2V5O1xuICAgICAgbnVsbCAhPSBwcm9wS2V5JDIwM1xuICAgICAgICA/IHVwZGF0ZU9wdGlvbnMoZG9tRWxlbWVudCwgISFsYXN0UHJvcHMsIHByb3BLZXkkMjAzLCAhMSlcbiAgICAgICAgOiAhIW5leHRQcm9wcyAhPT0gISFsYXN0UHJvcHMgJiZcbiAgICAgICAgICAobnVsbCAhPSB0YWdcbiAgICAgICAgICAgID8gdXBkYXRlT3B0aW9ucyhkb21FbGVtZW50LCAhIWxhc3RQcm9wcywgdGFnLCAhMClcbiAgICAgICAgICAgIDogdXBkYXRlT3B0aW9ucyhkb21FbGVtZW50LCAhIWxhc3RQcm9wcywgbGFzdFByb3BzID8gW10gOiBcIlwiLCAhMSkpO1xuICAgICAgcmV0dXJuO1xuICAgIGNhc2UgXCJ0ZXh0YXJlYVwiOlxuICAgICAgcHJvcEtleSA9IHByb3BLZXkkMjAzID0gbnVsbDtcbiAgICAgIGZvciAoZGVmYXVsdFZhbHVlIGluIGxhc3RQcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgobmFtZSA9IGxhc3RQcm9wc1tkZWZhdWx0VmFsdWVdKSxcbiAgICAgICAgICBsYXN0UHJvcHMuaGFzT3duUHJvcGVydHkoZGVmYXVsdFZhbHVlKSAmJlxuICAgICAgICAgICAgbnVsbCAhPSBuYW1lICYmXG4gICAgICAgICAgICAhbmV4dFByb3BzLmhhc093blByb3BlcnR5KGRlZmF1bHRWYWx1ZSkpXG4gICAgICAgIClcbiAgICAgICAgICBzd2l0Y2ggKGRlZmF1bHRWYWx1ZSkge1xuICAgICAgICAgICAgY2FzZSBcInZhbHVlXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIGRlZmF1bHRWYWx1ZSwgbnVsbCwgbmV4dFByb3BzLCBuYW1lKTtcbiAgICAgICAgICB9XG4gICAgICBmb3IgKHZhbHVlIGluIG5leHRQcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgobmFtZSA9IG5leHRQcm9wc1t2YWx1ZV0pLFxuICAgICAgICAgICh0eXBlID0gbGFzdFByb3BzW3ZhbHVlXSksXG4gICAgICAgICAgbmV4dFByb3BzLmhhc093blByb3BlcnR5KHZhbHVlKSAmJiAobnVsbCAhPSBuYW1lIHx8IG51bGwgIT0gdHlwZSkpXG4gICAgICAgIClcbiAgICAgICAgICBzd2l0Y2ggKHZhbHVlKSB7XG4gICAgICAgICAgICBjYXNlIFwidmFsdWVcIjpcbiAgICAgICAgICAgICAgcHJvcEtleSQyMDMgPSBuYW1lO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGNhc2UgXCJkZWZhdWx0VmFsdWVcIjpcbiAgICAgICAgICAgICAgcHJvcEtleSA9IG5hbWU7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImNoaWxkcmVuXCI6XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSBcImRhbmdlcm91c2x5U2V0SW5uZXJIVE1MXCI6XG4gICAgICAgICAgICAgIGlmIChudWxsICE9IG5hbWUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoOTEpKTtcbiAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgICBuYW1lICE9PSB0eXBlICYmXG4gICAgICAgICAgICAgICAgc2V0UHJvcChkb21FbGVtZW50LCB0YWcsIHZhbHVlLCBuYW1lLCBuZXh0UHJvcHMsIHR5cGUpO1xuICAgICAgICAgIH1cbiAgICAgIHVwZGF0ZVRleHRhcmVhKGRvbUVsZW1lbnQsIHByb3BLZXkkMjAzLCBwcm9wS2V5KTtcbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwib3B0aW9uXCI6XG4gICAgICBmb3IgKHZhciBwcm9wS2V5JDIxOSBpbiBsYXN0UHJvcHMpXG4gICAgICAgIGlmIChcbiAgICAgICAgICAoKHByb3BLZXkkMjAzID0gbGFzdFByb3BzW3Byb3BLZXkkMjE5XSksXG4gICAgICAgICAgbGFzdFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkkMjE5KSAmJlxuICAgICAgICAgICAgbnVsbCAhPSBwcm9wS2V5JDIwMyAmJlxuICAgICAgICAgICAgIW5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5JDIxOSkpXG4gICAgICAgIClcbiAgICAgICAgICBzd2l0Y2ggKHByb3BLZXkkMjE5KSB7XG4gICAgICAgICAgICBjYXNlIFwic2VsZWN0ZWRcIjpcbiAgICAgICAgICAgICAgZG9tRWxlbWVudC5zZWxlY3RlZCA9ICExO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHNldFByb3AoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcEtleSQyMTksXG4gICAgICAgICAgICAgICAgbnVsbCxcbiAgICAgICAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgICAgICAgcHJvcEtleSQyMDNcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgICB9XG4gICAgICBmb3IgKGxhc3REZWZhdWx0VmFsdWUgaW4gbmV4dFByb3BzKVxuICAgICAgICBpZiAoXG4gICAgICAgICAgKChwcm9wS2V5JDIwMyA9IG5leHRQcm9wc1tsYXN0RGVmYXVsdFZhbHVlXSksXG4gICAgICAgICAgKHByb3BLZXkgPSBsYXN0UHJvcHNbbGFzdERlZmF1bHRWYWx1ZV0pLFxuICAgICAgICAgIG5leHRQcm9wcy5oYXNPd25Qcm9wZXJ0eShsYXN0RGVmYXVsdFZhbHVlKSAmJlxuICAgICAgICAgICAgcHJvcEtleSQyMDMgIT09IHByb3BLZXkgJiZcbiAgICAgICAgICAgIChudWxsICE9IHByb3BLZXkkMjAzIHx8IG51bGwgIT0gcHJvcEtleSkpXG4gICAgICAgIClcbiAgICAgICAgICBzd2l0Y2ggKGxhc3REZWZhdWx0VmFsdWUpIHtcbiAgICAgICAgICAgIGNhc2UgXCJzZWxlY3RlZFwiOlxuICAgICAgICAgICAgICBkb21FbGVtZW50LnNlbGVjdGVkID1cbiAgICAgICAgICAgICAgICBwcm9wS2V5JDIwMyAmJlxuICAgICAgICAgICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHByb3BLZXkkMjAzICYmXG4gICAgICAgICAgICAgICAgXCJzeW1ib2xcIiAhPT0gdHlwZW9mIHByb3BLZXkkMjAzO1xuICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICAgIHNldFByb3AoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgbGFzdERlZmF1bHRWYWx1ZSxcbiAgICAgICAgICAgICAgICBwcm9wS2V5JDIwMyxcbiAgICAgICAgICAgICAgICBuZXh0UHJvcHMsXG4gICAgICAgICAgICAgICAgcHJvcEtleVxuICAgICAgICAgICAgICApO1xuICAgICAgICAgIH1cbiAgICAgIHJldHVybjtcbiAgICBjYXNlIFwiaW1nXCI6XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICBjYXNlIFwiYXJlYVwiOlxuICAgIGNhc2UgXCJiYXNlXCI6XG4gICAgY2FzZSBcImJyXCI6XG4gICAgY2FzZSBcImNvbFwiOlxuICAgIGNhc2UgXCJlbWJlZFwiOlxuICAgIGNhc2UgXCJoclwiOlxuICAgIGNhc2UgXCJrZXlnZW5cIjpcbiAgICBjYXNlIFwibWV0YVwiOlxuICAgIGNhc2UgXCJwYXJhbVwiOlxuICAgIGNhc2UgXCJzb3VyY2VcIjpcbiAgICBjYXNlIFwidHJhY2tcIjpcbiAgICBjYXNlIFwid2JyXCI6XG4gICAgY2FzZSBcIm1lbnVpdGVtXCI6XG4gICAgICBmb3IgKHZhciBwcm9wS2V5JDIyNCBpbiBsYXN0UHJvcHMpXG4gICAgICAgIChwcm9wS2V5JDIwMyA9IGxhc3RQcm9wc1twcm9wS2V5JDIyNF0pLFxuICAgICAgICAgIGxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5JDIyNCkgJiZcbiAgICAgICAgICAgIG51bGwgIT0gcHJvcEtleSQyMDMgJiZcbiAgICAgICAgICAgICFuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSQyMjQpICYmXG4gICAgICAgICAgICBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgcHJvcEtleSQyMjQsIG51bGwsIG5leHRQcm9wcywgcHJvcEtleSQyMDMpO1xuICAgICAgZm9yIChjaGVja2VkIGluIG5leHRQcm9wcylcbiAgICAgICAgaWYgKFxuICAgICAgICAgICgocHJvcEtleSQyMDMgPSBuZXh0UHJvcHNbY2hlY2tlZF0pLFxuICAgICAgICAgIChwcm9wS2V5ID0gbGFzdFByb3BzW2NoZWNrZWRdKSxcbiAgICAgICAgICBuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkoY2hlY2tlZCkgJiZcbiAgICAgICAgICAgIHByb3BLZXkkMjAzICE9PSBwcm9wS2V5ICYmXG4gICAgICAgICAgICAobnVsbCAhPSBwcm9wS2V5JDIwMyB8fCBudWxsICE9IHByb3BLZXkpKVxuICAgICAgICApXG4gICAgICAgICAgc3dpdGNoIChjaGVja2VkKSB7XG4gICAgICAgICAgICBjYXNlIFwiY2hpbGRyZW5cIjpcbiAgICAgICAgICAgIGNhc2UgXCJkYW5nZXJvdXNseVNldElubmVySFRNTFwiOlxuICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwcm9wS2V5JDIwMylcbiAgICAgICAgICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDEzNywgdGFnKSk7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgc2V0UHJvcChcbiAgICAgICAgICAgICAgICBkb21FbGVtZW50LFxuICAgICAgICAgICAgICAgIHRhZyxcbiAgICAgICAgICAgICAgICBjaGVja2VkLFxuICAgICAgICAgICAgICAgIHByb3BLZXkkMjAzLFxuICAgICAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgICAgICBwcm9wS2V5XG4gICAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgcmV0dXJuO1xuICAgIGRlZmF1bHQ6XG4gICAgICBpZiAoaXNDdXN0b21FbGVtZW50KHRhZykpIHtcbiAgICAgICAgZm9yICh2YXIgcHJvcEtleSQyMjkgaW4gbGFzdFByb3BzKVxuICAgICAgICAgIChwcm9wS2V5JDIwMyA9IGxhc3RQcm9wc1twcm9wS2V5JDIyOV0pLFxuICAgICAgICAgICAgbGFzdFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkkMjI5KSAmJlxuICAgICAgICAgICAgICB2b2lkIDAgIT09IHByb3BLZXkkMjAzICYmXG4gICAgICAgICAgICAgICFuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSQyMjkpICYmXG4gICAgICAgICAgICAgIHNldFByb3BPbkN1c3RvbUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgcHJvcEtleSQyMjksXG4gICAgICAgICAgICAgICAgdm9pZCAwLFxuICAgICAgICAgICAgICAgIG5leHRQcm9wcyxcbiAgICAgICAgICAgICAgICBwcm9wS2V5JDIwM1xuICAgICAgICAgICAgICApO1xuICAgICAgICBmb3IgKGRlZmF1bHRDaGVja2VkIGluIG5leHRQcm9wcylcbiAgICAgICAgICAocHJvcEtleSQyMDMgPSBuZXh0UHJvcHNbZGVmYXVsdENoZWNrZWRdKSxcbiAgICAgICAgICAgIChwcm9wS2V5ID0gbGFzdFByb3BzW2RlZmF1bHRDaGVja2VkXSksXG4gICAgICAgICAgICAhbmV4dFByb3BzLmhhc093blByb3BlcnR5KGRlZmF1bHRDaGVja2VkKSB8fFxuICAgICAgICAgICAgICBwcm9wS2V5JDIwMyA9PT0gcHJvcEtleSB8fFxuICAgICAgICAgICAgICAodm9pZCAwID09PSBwcm9wS2V5JDIwMyAmJiB2b2lkIDAgPT09IHByb3BLZXkpIHx8XG4gICAgICAgICAgICAgIHNldFByb3BPbkN1c3RvbUVsZW1lbnQoXG4gICAgICAgICAgICAgICAgZG9tRWxlbWVudCxcbiAgICAgICAgICAgICAgICB0YWcsXG4gICAgICAgICAgICAgICAgZGVmYXVsdENoZWNrZWQsXG4gICAgICAgICAgICAgICAgcHJvcEtleSQyMDMsXG4gICAgICAgICAgICAgICAgbmV4dFByb3BzLFxuICAgICAgICAgICAgICAgIHByb3BLZXlcbiAgICAgICAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICB9XG4gIGZvciAodmFyIHByb3BLZXkkMjM0IGluIGxhc3RQcm9wcylcbiAgICAocHJvcEtleSQyMDMgPSBsYXN0UHJvcHNbcHJvcEtleSQyMzRdKSxcbiAgICAgIGxhc3RQcm9wcy5oYXNPd25Qcm9wZXJ0eShwcm9wS2V5JDIzNCkgJiZcbiAgICAgICAgbnVsbCAhPSBwcm9wS2V5JDIwMyAmJlxuICAgICAgICAhbmV4dFByb3BzLmhhc093blByb3BlcnR5KHByb3BLZXkkMjM0KSAmJlxuICAgICAgICBzZXRQcm9wKGRvbUVsZW1lbnQsIHRhZywgcHJvcEtleSQyMzQsIG51bGwsIG5leHRQcm9wcywgcHJvcEtleSQyMDMpO1xuICBmb3IgKGxhc3RQcm9wIGluIG5leHRQcm9wcylcbiAgICAocHJvcEtleSQyMDMgPSBuZXh0UHJvcHNbbGFzdFByb3BdKSxcbiAgICAgIChwcm9wS2V5ID0gbGFzdFByb3BzW2xhc3RQcm9wXSksXG4gICAgICAhbmV4dFByb3BzLmhhc093blByb3BlcnR5KGxhc3RQcm9wKSB8fFxuICAgICAgICBwcm9wS2V5JDIwMyA9PT0gcHJvcEtleSB8fFxuICAgICAgICAobnVsbCA9PSBwcm9wS2V5JDIwMyAmJiBudWxsID09IHByb3BLZXkpIHx8XG4gICAgICAgIHNldFByb3AoZG9tRWxlbWVudCwgdGFnLCBsYXN0UHJvcCwgcHJvcEtleSQyMDMsIG5leHRQcm9wcywgcHJvcEtleSk7XG59XG52YXIgZXZlbnRzRW5hYmxlZCA9IG51bGwsXG4gIHNlbGVjdGlvbkluZm9ybWF0aW9uID0gbnVsbDtcbmZ1bmN0aW9uIGdldE93bmVyRG9jdW1lbnRGcm9tUm9vdENvbnRhaW5lcihyb290Q29udGFpbmVyRWxlbWVudCkge1xuICByZXR1cm4gOSA9PT0gcm9vdENvbnRhaW5lckVsZW1lbnQubm9kZVR5cGVcbiAgICA/IHJvb3RDb250YWluZXJFbGVtZW50XG4gICAgOiByb290Q29udGFpbmVyRWxlbWVudC5vd25lckRvY3VtZW50O1xufVxuZnVuY3Rpb24gZ2V0T3duSG9zdENvbnRleHQobmFtZXNwYWNlVVJJKSB7XG4gIHN3aXRjaCAobmFtZXNwYWNlVVJJKSB7XG4gICAgY2FzZSBcImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCI6XG4gICAgICByZXR1cm4gMTtcbiAgICBjYXNlIFwiaHR0cDovL3d3dy53My5vcmcvMTk5OC9NYXRoL01hdGhNTFwiOlxuICAgICAgcmV0dXJuIDI7XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAwO1xuICB9XG59XG5mdW5jdGlvbiBnZXRDaGlsZEhvc3RDb250ZXh0UHJvZChwYXJlbnROYW1lc3BhY2UsIHR5cGUpIHtcbiAgaWYgKDAgPT09IHBhcmVudE5hbWVzcGFjZSlcbiAgICBzd2l0Y2ggKHR5cGUpIHtcbiAgICAgIGNhc2UgXCJzdmdcIjpcbiAgICAgICAgcmV0dXJuIDE7XG4gICAgICBjYXNlIFwibWF0aFwiOlxuICAgICAgICByZXR1cm4gMjtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgcmV0dXJuIDEgPT09IHBhcmVudE5hbWVzcGFjZSAmJiBcImZvcmVpZ25PYmplY3RcIiA9PT0gdHlwZVxuICAgID8gMFxuICAgIDogcGFyZW50TmFtZXNwYWNlO1xufVxuZnVuY3Rpb24gc2hvdWxkU2V0VGV4dENvbnRlbnQodHlwZSwgcHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICBcInRleHRhcmVhXCIgPT09IHR5cGUgfHxcbiAgICBcIm5vc2NyaXB0XCIgPT09IHR5cGUgfHxcbiAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuY2hpbGRyZW4gfHxcbiAgICBcIm51bWJlclwiID09PSB0eXBlb2YgcHJvcHMuY2hpbGRyZW4gfHxcbiAgICBcImJpZ2ludFwiID09PSB0eXBlb2YgcHJvcHMuY2hpbGRyZW4gfHxcbiAgICAoXCJvYmplY3RcIiA9PT0gdHlwZW9mIHByb3BzLmRhbmdlcm91c2x5U2V0SW5uZXJIVE1MICYmXG4gICAgICBudWxsICE9PSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTCAmJlxuICAgICAgbnVsbCAhPSBwcm9wcy5kYW5nZXJvdXNseVNldElubmVySFRNTC5fX2h0bWwpXG4gICk7XG59XG52YXIgY3VycmVudFBvcHN0YXRlVHJhbnNpdGlvbkV2ZW50ID0gbnVsbDtcbmZ1bmN0aW9uIHNob3VsZEF0dGVtcHRFYWdlclRyYW5zaXRpb24oKSB7XG4gIHZhciBldmVudCA9IHdpbmRvdy5ldmVudDtcbiAgaWYgKGV2ZW50ICYmIFwicG9wc3RhdGVcIiA9PT0gZXZlbnQudHlwZSkge1xuICAgIGlmIChldmVudCA9PT0gY3VycmVudFBvcHN0YXRlVHJhbnNpdGlvbkV2ZW50KSByZXR1cm4gITE7XG4gICAgY3VycmVudFBvcHN0YXRlVHJhbnNpdGlvbkV2ZW50ID0gZXZlbnQ7XG4gICAgcmV0dXJuICEwO1xuICB9XG4gIGN1cnJlbnRQb3BzdGF0ZVRyYW5zaXRpb25FdmVudCA9IG51bGw7XG4gIHJldHVybiAhMTtcbn1cbnZhciBzY2hlZHVsZVRpbWVvdXQgPSBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBzZXRUaW1lb3V0ID8gc2V0VGltZW91dCA6IHZvaWQgMCxcbiAgY2FuY2VsVGltZW91dCA9IFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGNsZWFyVGltZW91dCA/IGNsZWFyVGltZW91dCA6IHZvaWQgMCxcbiAgbG9jYWxQcm9taXNlID0gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgUHJvbWlzZSA/IFByb21pc2UgOiB2b2lkIDAsXG4gIHNjaGVkdWxlTWljcm90YXNrID1cbiAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBxdWV1ZU1pY3JvdGFza1xuICAgICAgPyBxdWV1ZU1pY3JvdGFza1xuICAgICAgOiBcInVuZGVmaW5lZFwiICE9PSB0eXBlb2YgbG9jYWxQcm9taXNlXG4gICAgICAgID8gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gbG9jYWxQcm9taXNlXG4gICAgICAgICAgICAgIC5yZXNvbHZlKG51bGwpXG4gICAgICAgICAgICAgIC50aGVuKGNhbGxiYWNrKVxuICAgICAgICAgICAgICAuY2F0Y2goaGFuZGxlRXJyb3JJbk5leHRUaWNrKTtcbiAgICAgICAgICB9XG4gICAgICAgIDogc2NoZWR1bGVUaW1lb3V0O1xuZnVuY3Rpb24gaGFuZGxlRXJyb3JJbk5leHRUaWNrKGVycm9yKSB7XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIHRocm93IGVycm9yO1xuICB9KTtcbn1cbmZ1bmN0aW9uIGNsZWFyU3VzcGVuc2VCb3VuZGFyeShwYXJlbnRJbnN0YW5jZSwgc3VzcGVuc2VJbnN0YW5jZSkge1xuICB2YXIgbm9kZSA9IHN1c3BlbnNlSW5zdGFuY2UsXG4gICAgZGVwdGggPSAwO1xuICBkbyB7XG4gICAgdmFyIG5leHROb2RlID0gbm9kZS5uZXh0U2libGluZztcbiAgICBwYXJlbnRJbnN0YW5jZS5yZW1vdmVDaGlsZChub2RlKTtcbiAgICBpZiAobmV4dE5vZGUgJiYgOCA9PT0gbmV4dE5vZGUubm9kZVR5cGUpXG4gICAgICBpZiAoKChub2RlID0gbmV4dE5vZGUuZGF0YSksIFwiLyRcIiA9PT0gbm9kZSkpIHtcbiAgICAgICAgaWYgKDAgPT09IGRlcHRoKSB7XG4gICAgICAgICAgcGFyZW50SW5zdGFuY2UucmVtb3ZlQ2hpbGQobmV4dE5vZGUpO1xuICAgICAgICAgIHJldHJ5SWZCbG9ja2VkT24oc3VzcGVuc2VJbnN0YW5jZSk7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIGRlcHRoLS07XG4gICAgICB9IGVsc2UgKFwiJFwiICE9PSBub2RlICYmIFwiJD9cIiAhPT0gbm9kZSAmJiBcIiQhXCIgIT09IG5vZGUpIHx8IGRlcHRoKys7XG4gICAgbm9kZSA9IG5leHROb2RlO1xuICB9IHdoaWxlIChub2RlKTtcbiAgcmV0cnlJZkJsb2NrZWRPbihzdXNwZW5zZUluc3RhbmNlKTtcbn1cbmZ1bmN0aW9uIGNsZWFyQ29udGFpbmVyU3BhcmluZ2x5KGNvbnRhaW5lcikge1xuICB2YXIgbmV4dE5vZGUgPSBjb250YWluZXIuZmlyc3RDaGlsZDtcbiAgbmV4dE5vZGUgJiYgMTAgPT09IG5leHROb2RlLm5vZGVUeXBlICYmIChuZXh0Tm9kZSA9IG5leHROb2RlLm5leHRTaWJsaW5nKTtcbiAgZm9yICg7IG5leHROb2RlOyApIHtcbiAgICB2YXIgbm9kZSA9IG5leHROb2RlO1xuICAgIG5leHROb2RlID0gbmV4dE5vZGUubmV4dFNpYmxpbmc7XG4gICAgc3dpdGNoIChub2RlLm5vZGVOYW1lKSB7XG4gICAgICBjYXNlIFwiSFRNTFwiOlxuICAgICAgY2FzZSBcIkhFQURcIjpcbiAgICAgIGNhc2UgXCJCT0RZXCI6XG4gICAgICAgIGNsZWFyQ29udGFpbmVyU3BhcmluZ2x5KG5vZGUpO1xuICAgICAgICBkZXRhY2hEZWxldGVkSW5zdGFuY2Uobm9kZSk7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIlNDUklQVFwiOlxuICAgICAgY2FzZSBcIlNUWUxFXCI6XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgY2FzZSBcIkxJTktcIjpcbiAgICAgICAgaWYgKFwic3R5bGVzaGVldFwiID09PSBub2RlLnJlbC50b0xvd2VyQ2FzZSgpKSBjb250aW51ZTtcbiAgICB9XG4gICAgY29udGFpbmVyLnJlbW92ZUNoaWxkKG5vZGUpO1xuICB9XG59XG5mdW5jdGlvbiBjYW5IeWRyYXRlSW5zdGFuY2UoaW5zdGFuY2UsIHR5cGUsIHByb3BzLCBpblJvb3RPclNpbmdsZXRvbikge1xuICBmb3IgKDsgMSA9PT0gaW5zdGFuY2Uubm9kZVR5cGU7ICkge1xuICAgIHZhciBhbnlQcm9wcyA9IHByb3BzO1xuICAgIGlmIChpbnN0YW5jZS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpICE9PSB0eXBlLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIGlmIChcbiAgICAgICAgIWluUm9vdE9yU2luZ2xldG9uICYmXG4gICAgICAgIChcIklOUFVUXCIgIT09IGluc3RhbmNlLm5vZGVOYW1lIHx8IFwiaGlkZGVuXCIgIT09IGluc3RhbmNlLnR5cGUpXG4gICAgICApXG4gICAgICAgIGJyZWFrO1xuICAgIH0gZWxzZSBpZiAoIWluUm9vdE9yU2luZ2xldG9uKVxuICAgICAgaWYgKFwiaW5wdXRcIiA9PT0gdHlwZSAmJiBcImhpZGRlblwiID09PSBpbnN0YW5jZS50eXBlKSB7XG4gICAgICAgIHZhciBuYW1lID0gbnVsbCA9PSBhbnlQcm9wcy5uYW1lID8gbnVsbCA6IFwiXCIgKyBhbnlQcm9wcy5uYW1lO1xuICAgICAgICBpZiAoXG4gICAgICAgICAgXCJoaWRkZW5cIiA9PT0gYW55UHJvcHMudHlwZSAmJlxuICAgICAgICAgIGluc3RhbmNlLmdldEF0dHJpYnV0ZShcIm5hbWVcIikgPT09IG5hbWVcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgIH0gZWxzZSByZXR1cm4gaW5zdGFuY2U7XG4gICAgZWxzZSBpZiAoIWluc3RhbmNlW2ludGVybmFsSG9pc3RhYmxlTWFya2VyXSlcbiAgICAgIHN3aXRjaCAodHlwZSkge1xuICAgICAgICBjYXNlIFwibWV0YVwiOlxuICAgICAgICAgIGlmICghaW5zdGFuY2UuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIikpIGJyZWFrO1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgY2FzZSBcImxpbmtcIjpcbiAgICAgICAgICBuYW1lID0gaW5zdGFuY2UuZ2V0QXR0cmlidXRlKFwicmVsXCIpO1xuICAgICAgICAgIGlmIChcInN0eWxlc2hlZXRcIiA9PT0gbmFtZSAmJiBpbnN0YW5jZS5oYXNBdHRyaWJ1dGUoXCJkYXRhLXByZWNlZGVuY2VcIikpXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBlbHNlIGlmIChcbiAgICAgICAgICAgIG5hbWUgIT09IGFueVByb3BzLnJlbCB8fFxuICAgICAgICAgICAgaW5zdGFuY2UuZ2V0QXR0cmlidXRlKFwiaHJlZlwiKSAhPT1cbiAgICAgICAgICAgICAgKG51bGwgPT0gYW55UHJvcHMuaHJlZiA/IG51bGwgOiBhbnlQcm9wcy5ocmVmKSB8fFxuICAgICAgICAgICAgaW5zdGFuY2UuZ2V0QXR0cmlidXRlKFwiY3Jvc3NvcmlnaW5cIikgIT09XG4gICAgICAgICAgICAgIChudWxsID09IGFueVByb3BzLmNyb3NzT3JpZ2luID8gbnVsbCA6IGFueVByb3BzLmNyb3NzT3JpZ2luKSB8fFxuICAgICAgICAgICAgaW5zdGFuY2UuZ2V0QXR0cmlidXRlKFwidGl0bGVcIikgIT09XG4gICAgICAgICAgICAgIChudWxsID09IGFueVByb3BzLnRpdGxlID8gbnVsbCA6IGFueVByb3BzLnRpdGxlKVxuICAgICAgICAgIClcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIHJldHVybiBpbnN0YW5jZTtcbiAgICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgICAgaWYgKGluc3RhbmNlLmhhc0F0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKSkgYnJlYWs7XG4gICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgICAgICBjYXNlIFwic2NyaXB0XCI6XG4gICAgICAgICAgbmFtZSA9IGluc3RhbmNlLmdldEF0dHJpYnV0ZShcInNyY1wiKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAobmFtZSAhPT0gKG51bGwgPT0gYW55UHJvcHMuc3JjID8gbnVsbCA6IGFueVByb3BzLnNyYykgfHxcbiAgICAgICAgICAgICAgaW5zdGFuY2UuZ2V0QXR0cmlidXRlKFwidHlwZVwiKSAhPT1cbiAgICAgICAgICAgICAgICAobnVsbCA9PSBhbnlQcm9wcy50eXBlID8gbnVsbCA6IGFueVByb3BzLnR5cGUpIHx8XG4gICAgICAgICAgICAgIGluc3RhbmNlLmdldEF0dHJpYnV0ZShcImNyb3Nzb3JpZ2luXCIpICE9PVxuICAgICAgICAgICAgICAgIChudWxsID09IGFueVByb3BzLmNyb3NzT3JpZ2luID8gbnVsbCA6IGFueVByb3BzLmNyb3NzT3JpZ2luKSkgJiZcbiAgICAgICAgICAgIG5hbWUgJiZcbiAgICAgICAgICAgIGluc3RhbmNlLmhhc0F0dHJpYnV0ZShcImFzeW5jXCIpICYmXG4gICAgICAgICAgICAhaW5zdGFuY2UuaGFzQXR0cmlidXRlKFwiaXRlbXByb3BcIilcbiAgICAgICAgICApXG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICByZXR1cm4gaW5zdGFuY2U7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgcmV0dXJuIGluc3RhbmNlO1xuICAgICAgfVxuICAgIGluc3RhbmNlID0gZ2V0TmV4dEh5ZHJhdGFibGUoaW5zdGFuY2UubmV4dFNpYmxpbmcpO1xuICAgIGlmIChudWxsID09PSBpbnN0YW5jZSkgYnJlYWs7XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5mdW5jdGlvbiBjYW5IeWRyYXRlVGV4dEluc3RhbmNlKGluc3RhbmNlLCB0ZXh0LCBpblJvb3RPclNpbmdsZXRvbikge1xuICBpZiAoXCJcIiA9PT0gdGV4dCkgcmV0dXJuIG51bGw7XG4gIGZvciAoOyAzICE9PSBpbnN0YW5jZS5ub2RlVHlwZTsgKSB7XG4gICAgaWYgKFxuICAgICAgKDEgIT09IGluc3RhbmNlLm5vZGVUeXBlIHx8XG4gICAgICAgIFwiSU5QVVRcIiAhPT0gaW5zdGFuY2Uubm9kZU5hbWUgfHxcbiAgICAgICAgXCJoaWRkZW5cIiAhPT0gaW5zdGFuY2UudHlwZSkgJiZcbiAgICAgICFpblJvb3RPclNpbmdsZXRvblxuICAgIClcbiAgICAgIHJldHVybiBudWxsO1xuICAgIGluc3RhbmNlID0gZ2V0TmV4dEh5ZHJhdGFibGUoaW5zdGFuY2UubmV4dFNpYmxpbmcpO1xuICAgIGlmIChudWxsID09PSBpbnN0YW5jZSkgcmV0dXJuIG51bGw7XG4gIH1cbiAgcmV0dXJuIGluc3RhbmNlO1xufVxuZnVuY3Rpb24gZ2V0TmV4dEh5ZHJhdGFibGUobm9kZSkge1xuICBmb3IgKDsgbnVsbCAhPSBub2RlOyBub2RlID0gbm9kZS5uZXh0U2libGluZykge1xuICAgIHZhciBub2RlVHlwZSA9IG5vZGUubm9kZVR5cGU7XG4gICAgaWYgKDEgPT09IG5vZGVUeXBlIHx8IDMgPT09IG5vZGVUeXBlKSBicmVhaztcbiAgICBpZiAoOCA9PT0gbm9kZVR5cGUpIHtcbiAgICAgIG5vZGVUeXBlID0gbm9kZS5kYXRhO1xuICAgICAgaWYgKFxuICAgICAgICBcIiRcIiA9PT0gbm9kZVR5cGUgfHxcbiAgICAgICAgXCIkIVwiID09PSBub2RlVHlwZSB8fFxuICAgICAgICBcIiQ/XCIgPT09IG5vZGVUeXBlIHx8XG4gICAgICAgIFwiRiFcIiA9PT0gbm9kZVR5cGUgfHxcbiAgICAgICAgXCJGXCIgPT09IG5vZGVUeXBlXG4gICAgICApXG4gICAgICAgIGJyZWFrO1xuICAgICAgaWYgKFwiLyRcIiA9PT0gbm9kZVR5cGUpIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbm9kZTtcbn1cbmZ1bmN0aW9uIGdldFBhcmVudFN1c3BlbnNlSW5zdGFuY2UodGFyZ2V0SW5zdGFuY2UpIHtcbiAgdGFyZ2V0SW5zdGFuY2UgPSB0YXJnZXRJbnN0YW5jZS5wcmV2aW91c1NpYmxpbmc7XG4gIGZvciAodmFyIGRlcHRoID0gMDsgdGFyZ2V0SW5zdGFuY2U7ICkge1xuICAgIGlmICg4ID09PSB0YXJnZXRJbnN0YW5jZS5ub2RlVHlwZSkge1xuICAgICAgdmFyIGRhdGEgPSB0YXJnZXRJbnN0YW5jZS5kYXRhO1xuICAgICAgaWYgKFwiJFwiID09PSBkYXRhIHx8IFwiJCFcIiA9PT0gZGF0YSB8fCBcIiQ/XCIgPT09IGRhdGEpIHtcbiAgICAgICAgaWYgKDAgPT09IGRlcHRoKSByZXR1cm4gdGFyZ2V0SW5zdGFuY2U7XG4gICAgICAgIGRlcHRoLS07XG4gICAgICB9IGVsc2UgXCIvJFwiID09PSBkYXRhICYmIGRlcHRoKys7XG4gICAgfVxuICAgIHRhcmdldEluc3RhbmNlID0gdGFyZ2V0SW5zdGFuY2UucHJldmlvdXNTaWJsaW5nO1xuICB9XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gcmVzb2x2ZVNpbmdsZXRvbkluc3RhbmNlKHR5cGUsIHByb3BzLCByb290Q29udGFpbmVySW5zdGFuY2UpIHtcbiAgcHJvcHMgPSBnZXRPd25lckRvY3VtZW50RnJvbVJvb3RDb250YWluZXIocm9vdENvbnRhaW5lckluc3RhbmNlKTtcbiAgc3dpdGNoICh0eXBlKSB7XG4gICAgY2FzZSBcImh0bWxcIjpcbiAgICAgIHR5cGUgPSBwcm9wcy5kb2N1bWVudEVsZW1lbnQ7XG4gICAgICBpZiAoIXR5cGUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDUyKSk7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICBjYXNlIFwiaGVhZFwiOlxuICAgICAgdHlwZSA9IHByb3BzLmhlYWQ7XG4gICAgICBpZiAoIXR5cGUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDUzKSk7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICBjYXNlIFwiYm9keVwiOlxuICAgICAgdHlwZSA9IHByb3BzLmJvZHk7XG4gICAgICBpZiAoIXR5cGUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDU0KSk7XG4gICAgICByZXR1cm4gdHlwZTtcbiAgICBkZWZhdWx0OlxuICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0NTEpKTtcbiAgfVxufVxudmFyIHByZWxvYWRQcm9wc01hcCA9IG5ldyBNYXAoKSxcbiAgcHJlY29ubmVjdHNTZXQgPSBuZXcgU2V0KCk7XG5mdW5jdGlvbiBnZXRIb2lzdGFibGVSb290KGNvbnRhaW5lcikge1xuICByZXR1cm4gXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY29udGFpbmVyLmdldFJvb3ROb2RlXG4gICAgPyBjb250YWluZXIuZ2V0Um9vdE5vZGUoKVxuICAgIDogY29udGFpbmVyLm93bmVyRG9jdW1lbnQ7XG59XG52YXIgcHJldmlvdXNEaXNwYXRjaGVyID0gUmVhY3RET01TaGFyZWRJbnRlcm5hbHMuZDtcblJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLmQgPSB7XG4gIGY6IGZsdXNoU3luY1dvcmssXG4gIHI6IHJlcXVlc3RGb3JtUmVzZXQsXG4gIEQ6IHByZWZldGNoRE5TLFxuICBDOiBwcmVjb25uZWN0LFxuICBMOiBwcmVsb2FkLFxuICBtOiBwcmVsb2FkTW9kdWxlLFxuICBYOiBwcmVpbml0U2NyaXB0LFxuICBTOiBwcmVpbml0U3R5bGUsXG4gIE06IHByZWluaXRNb2R1bGVTY3JpcHRcbn07XG5mdW5jdGlvbiBmbHVzaFN5bmNXb3JrKCkge1xuICB2YXIgcHJldmlvdXNXYXNSZW5kZXJpbmcgPSBwcmV2aW91c0Rpc3BhdGNoZXIuZigpLFxuICAgIHdhc1JlbmRlcmluZyA9IGZsdXNoU3luY1dvcmskMSgpO1xuICByZXR1cm4gcHJldmlvdXNXYXNSZW5kZXJpbmcgfHwgd2FzUmVuZGVyaW5nO1xufVxuZnVuY3Rpb24gcmVxdWVzdEZvcm1SZXNldChmb3JtKSB7XG4gIHZhciBmb3JtSW5zdCA9IGdldEluc3RhbmNlRnJvbU5vZGUoZm9ybSk7XG4gIG51bGwgIT09IGZvcm1JbnN0ICYmIDUgPT09IGZvcm1JbnN0LnRhZyAmJiBcImZvcm1cIiA9PT0gZm9ybUluc3QudHlwZVxuICAgID8gcmVxdWVzdEZvcm1SZXNldCQxKGZvcm1JbnN0KVxuICAgIDogcHJldmlvdXNEaXNwYXRjaGVyLnIoZm9ybSk7XG59XG52YXIgZ2xvYmFsRG9jdW1lbnQgPSBcInVuZGVmaW5lZFwiID09PSB0eXBlb2YgZG9jdW1lbnQgPyBudWxsIDogZG9jdW1lbnQ7XG5mdW5jdGlvbiBwcmVjb25uZWN0QXMocmVsLCBocmVmLCBjcm9zc09yaWdpbikge1xuICB2YXIgb3duZXJEb2N1bWVudCA9IGdsb2JhbERvY3VtZW50O1xuICBpZiAob3duZXJEb2N1bWVudCAmJiBcInN0cmluZ1wiID09PSB0eXBlb2YgaHJlZiAmJiBocmVmKSB7XG4gICAgdmFyIGxpbWl0ZWRFc2NhcGVkSHJlZiA9XG4gICAgICBlc2NhcGVTZWxlY3RvckF0dHJpYnV0ZVZhbHVlSW5zaWRlRG91YmxlUXVvdGVzKGhyZWYpO1xuICAgIGxpbWl0ZWRFc2NhcGVkSHJlZiA9XG4gICAgICAnbGlua1tyZWw9XCInICsgcmVsICsgJ1wiXVtocmVmPVwiJyArIGxpbWl0ZWRFc2NhcGVkSHJlZiArICdcIl0nO1xuICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBjcm9zc09yaWdpbiAmJlxuICAgICAgKGxpbWl0ZWRFc2NhcGVkSHJlZiArPSAnW2Nyb3Nzb3JpZ2luPVwiJyArIGNyb3NzT3JpZ2luICsgJ1wiXScpO1xuICAgIHByZWNvbm5lY3RzU2V0LmhhcyhsaW1pdGVkRXNjYXBlZEhyZWYpIHx8XG4gICAgICAocHJlY29ubmVjdHNTZXQuYWRkKGxpbWl0ZWRFc2NhcGVkSHJlZiksXG4gICAgICAocmVsID0geyByZWw6IHJlbCwgY3Jvc3NPcmlnaW46IGNyb3NzT3JpZ2luLCBocmVmOiBocmVmIH0pLFxuICAgICAgbnVsbCA9PT0gb3duZXJEb2N1bWVudC5xdWVyeVNlbGVjdG9yKGxpbWl0ZWRFc2NhcGVkSHJlZikgJiZcbiAgICAgICAgKChocmVmID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKSksXG4gICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGhyZWYsIFwibGlua1wiLCByZWwpLFxuICAgICAgICBtYXJrTm9kZUFzSG9pc3RhYmxlKGhyZWYpLFxuICAgICAgICBvd25lckRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoaHJlZikpKTtcbiAgfVxufVxuZnVuY3Rpb24gcHJlZmV0Y2hETlMoaHJlZikge1xuICBwcmV2aW91c0Rpc3BhdGNoZXIuRChocmVmKTtcbiAgcHJlY29ubmVjdEFzKFwiZG5zLXByZWZldGNoXCIsIGhyZWYsIG51bGwpO1xufVxuZnVuY3Rpb24gcHJlY29ubmVjdChocmVmLCBjcm9zc09yaWdpbikge1xuICBwcmV2aW91c0Rpc3BhdGNoZXIuQyhocmVmLCBjcm9zc09yaWdpbik7XG4gIHByZWNvbm5lY3RBcyhcInByZWNvbm5lY3RcIiwgaHJlZiwgY3Jvc3NPcmlnaW4pO1xufVxuZnVuY3Rpb24gcHJlbG9hZChocmVmLCBhcywgb3B0aW9ucykge1xuICBwcmV2aW91c0Rpc3BhdGNoZXIuTChocmVmLCBhcywgb3B0aW9ucyk7XG4gIHZhciBvd25lckRvY3VtZW50ID0gZ2xvYmFsRG9jdW1lbnQ7XG4gIGlmIChvd25lckRvY3VtZW50ICYmIGhyZWYgJiYgYXMpIHtcbiAgICB2YXIgcHJlbG9hZFNlbGVjdG9yID1cbiAgICAgICdsaW5rW3JlbD1cInByZWxvYWRcIl1bYXM9XCInICtcbiAgICAgIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMoYXMpICtcbiAgICAgICdcIl0nO1xuICAgIFwiaW1hZ2VcIiA9PT0gYXNcbiAgICAgID8gb3B0aW9ucyAmJiBvcHRpb25zLmltYWdlU3JjU2V0XG4gICAgICAgID8gKChwcmVsb2FkU2VsZWN0b3IgKz1cbiAgICAgICAgICAgICdbaW1hZ2VzcmNzZXQ9XCInICtcbiAgICAgICAgICAgIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMoXG4gICAgICAgICAgICAgIG9wdGlvbnMuaW1hZ2VTcmNTZXRcbiAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgJ1wiXScpLFxuICAgICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBvcHRpb25zLmltYWdlU2l6ZXMgJiZcbiAgICAgICAgICAgIChwcmVsb2FkU2VsZWN0b3IgKz1cbiAgICAgICAgICAgICAgJ1tpbWFnZXNpemVzPVwiJyArXG4gICAgICAgICAgICAgIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMoXG4gICAgICAgICAgICAgICAgb3B0aW9ucy5pbWFnZVNpemVzXG4gICAgICAgICAgICAgICkgK1xuICAgICAgICAgICAgICAnXCJdJykpXG4gICAgICAgIDogKHByZWxvYWRTZWxlY3RvciArPVxuICAgICAgICAgICAgJ1tocmVmPVwiJyArXG4gICAgICAgICAgICBlc2NhcGVTZWxlY3RvckF0dHJpYnV0ZVZhbHVlSW5zaWRlRG91YmxlUXVvdGVzKGhyZWYpICtcbiAgICAgICAgICAgICdcIl0nKVxuICAgICAgOiAocHJlbG9hZFNlbGVjdG9yICs9XG4gICAgICAgICAgJ1tocmVmPVwiJyArXG4gICAgICAgICAgZXNjYXBlU2VsZWN0b3JBdHRyaWJ1dGVWYWx1ZUluc2lkZURvdWJsZVF1b3RlcyhocmVmKSArXG4gICAgICAgICAgJ1wiXScpO1xuICAgIHZhciBrZXkgPSBwcmVsb2FkU2VsZWN0b3I7XG4gICAgc3dpdGNoIChhcykge1xuICAgICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICAgIGtleSA9IGdldFN0eWxlS2V5KGhyZWYpO1xuICAgICAgICBicmVhaztcbiAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAga2V5ID0gZ2V0U2NyaXB0S2V5KGhyZWYpO1xuICAgIH1cbiAgICBwcmVsb2FkUHJvcHNNYXAuaGFzKGtleSkgfHxcbiAgICAgICgoaHJlZiA9IGFzc2lnbihcbiAgICAgICAge1xuICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgaHJlZjpcbiAgICAgICAgICAgIFwiaW1hZ2VcIiA9PT0gYXMgJiYgb3B0aW9ucyAmJiBvcHRpb25zLmltYWdlU3JjU2V0ID8gdm9pZCAwIDogaHJlZixcbiAgICAgICAgICBhczogYXNcbiAgICAgICAgfSxcbiAgICAgICAgb3B0aW9uc1xuICAgICAgKSksXG4gICAgICBwcmVsb2FkUHJvcHNNYXAuc2V0KGtleSwgaHJlZiksXG4gICAgICBudWxsICE9PSBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocHJlbG9hZFNlbGVjdG9yKSB8fFxuICAgICAgICAoXCJzdHlsZVwiID09PSBhcyAmJlxuICAgICAgICAgIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihnZXRTdHlsZXNoZWV0U2VsZWN0b3JGcm9tS2V5KGtleSkpKSB8fFxuICAgICAgICAoXCJzY3JpcHRcIiA9PT0gYXMgJiZcbiAgICAgICAgICBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZ2V0U2NyaXB0U2VsZWN0b3JGcm9tS2V5KGtleSkpKSB8fFxuICAgICAgICAoKGFzID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKSksXG4gICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGFzLCBcImxpbmtcIiwgaHJlZiksXG4gICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoYXMpLFxuICAgICAgICBvd25lckRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYXMpKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIHByZWxvYWRNb2R1bGUoaHJlZiwgb3B0aW9ucykge1xuICBwcmV2aW91c0Rpc3BhdGNoZXIubShocmVmLCBvcHRpb25zKTtcbiAgdmFyIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxEb2N1bWVudDtcbiAgaWYgKG93bmVyRG9jdW1lbnQgJiYgaHJlZikge1xuICAgIHZhciBhcyA9IG9wdGlvbnMgJiYgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIG9wdGlvbnMuYXMgPyBvcHRpb25zLmFzIDogXCJzY3JpcHRcIixcbiAgICAgIHByZWxvYWRTZWxlY3RvciA9XG4gICAgICAgICdsaW5rW3JlbD1cIm1vZHVsZXByZWxvYWRcIl1bYXM9XCInICtcbiAgICAgICAgZXNjYXBlU2VsZWN0b3JBdHRyaWJ1dGVWYWx1ZUluc2lkZURvdWJsZVF1b3RlcyhhcykgK1xuICAgICAgICAnXCJdW2hyZWY9XCInICtcbiAgICAgICAgZXNjYXBlU2VsZWN0b3JBdHRyaWJ1dGVWYWx1ZUluc2lkZURvdWJsZVF1b3RlcyhocmVmKSArXG4gICAgICAgICdcIl0nLFxuICAgICAga2V5ID0gcHJlbG9hZFNlbGVjdG9yO1xuICAgIHN3aXRjaCAoYXMpIHtcbiAgICAgIGNhc2UgXCJhdWRpb3dvcmtsZXRcIjpcbiAgICAgIGNhc2UgXCJwYWludHdvcmtsZXRcIjpcbiAgICAgIGNhc2UgXCJzZXJ2aWNld29ya2VyXCI6XG4gICAgICBjYXNlIFwic2hhcmVkd29ya2VyXCI6XG4gICAgICBjYXNlIFwid29ya2VyXCI6XG4gICAgICBjYXNlIFwic2NyaXB0XCI6XG4gICAgICAgIGtleSA9IGdldFNjcmlwdEtleShocmVmKTtcbiAgICB9XG4gICAgaWYgKFxuICAgICAgIXByZWxvYWRQcm9wc01hcC5oYXMoa2V5KSAmJlxuICAgICAgKChocmVmID0gYXNzaWduKHsgcmVsOiBcIm1vZHVsZXByZWxvYWRcIiwgaHJlZjogaHJlZiB9LCBvcHRpb25zKSksXG4gICAgICBwcmVsb2FkUHJvcHNNYXAuc2V0KGtleSwgaHJlZiksXG4gICAgICBudWxsID09PSBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IocHJlbG9hZFNlbGVjdG9yKSlcbiAgICApIHtcbiAgICAgIHN3aXRjaCAoYXMpIHtcbiAgICAgICAgY2FzZSBcImF1ZGlvd29ya2xldFwiOlxuICAgICAgICBjYXNlIFwicGFpbnR3b3JrbGV0XCI6XG4gICAgICAgIGNhc2UgXCJzZXJ2aWNld29ya2VyXCI6XG4gICAgICAgIGNhc2UgXCJzaGFyZWR3b3JrZXJcIjpcbiAgICAgICAgY2FzZSBcIndvcmtlclwiOlxuICAgICAgICBjYXNlIFwic2NyaXB0XCI6XG4gICAgICAgICAgaWYgKG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihnZXRTY3JpcHRTZWxlY3RvckZyb21LZXkoa2V5KSkpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBhcyA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcImxpbmtcIik7XG4gICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhhcywgXCJsaW5rXCIsIGhyZWYpO1xuICAgICAgbWFya05vZGVBc0hvaXN0YWJsZShhcyk7XG4gICAgICBvd25lckRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoYXMpO1xuICAgIH1cbiAgfVxufVxuZnVuY3Rpb24gcHJlaW5pdFN0eWxlKGhyZWYsIHByZWNlZGVuY2UsIG9wdGlvbnMpIHtcbiAgcHJldmlvdXNEaXNwYXRjaGVyLlMoaHJlZiwgcHJlY2VkZW5jZSwgb3B0aW9ucyk7XG4gIHZhciBvd25lckRvY3VtZW50ID0gZ2xvYmFsRG9jdW1lbnQ7XG4gIGlmIChvd25lckRvY3VtZW50ICYmIGhyZWYpIHtcbiAgICB2YXIgc3R5bGVzID0gZ2V0UmVzb3VyY2VzRnJvbVJvb3Qob3duZXJEb2N1bWVudCkuaG9pc3RhYmxlU3R5bGVzLFxuICAgICAga2V5ID0gZ2V0U3R5bGVLZXkoaHJlZik7XG4gICAgcHJlY2VkZW5jZSA9IHByZWNlZGVuY2UgfHwgXCJkZWZhdWx0XCI7XG4gICAgdmFyIHJlc291cmNlID0gc3R5bGVzLmdldChrZXkpO1xuICAgIGlmICghcmVzb3VyY2UpIHtcbiAgICAgIHZhciBzdGF0ZSA9IHsgbG9hZGluZzogMCwgcHJlbG9hZDogbnVsbCB9O1xuICAgICAgaWYgKFxuICAgICAgICAocmVzb3VyY2UgPSBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgZ2V0U3R5bGVzaGVldFNlbGVjdG9yRnJvbUtleShrZXkpXG4gICAgICAgICkpXG4gICAgICApXG4gICAgICAgIHN0YXRlLmxvYWRpbmcgPSA1O1xuICAgICAgZWxzZSB7XG4gICAgICAgIGhyZWYgPSBhc3NpZ24oXG4gICAgICAgICAgeyByZWw6IFwic3R5bGVzaGVldFwiLCBocmVmOiBocmVmLCBcImRhdGEtcHJlY2VkZW5jZVwiOiBwcmVjZWRlbmNlIH0sXG4gICAgICAgICAgb3B0aW9uc1xuICAgICAgICApO1xuICAgICAgICAob3B0aW9ucyA9IHByZWxvYWRQcm9wc01hcC5nZXQoa2V5KSkgJiZcbiAgICAgICAgICBhZG9wdFByZWxvYWRQcm9wc0ZvclN0eWxlc2hlZXQoaHJlZiwgb3B0aW9ucyk7XG4gICAgICAgIHZhciBsaW5rID0gKHJlc291cmNlID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwibGlua1wiKSk7XG4gICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUobGluayk7XG4gICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGxpbmssIFwibGlua1wiLCBocmVmKTtcbiAgICAgICAgbGluay5fcCA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBsaW5rLm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICAgICAgbGluay5vbmVycm9yID0gcmVqZWN0O1xuICAgICAgICB9KTtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc3RhdGUubG9hZGluZyB8PSAxO1xuICAgICAgICB9KTtcbiAgICAgICAgbGluay5hZGRFdmVudExpc3RlbmVyKFwiZXJyb3JcIiwgZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHN0YXRlLmxvYWRpbmcgfD0gMjtcbiAgICAgICAgfSk7XG4gICAgICAgIHN0YXRlLmxvYWRpbmcgfD0gNDtcbiAgICAgICAgaW5zZXJ0U3R5bGVzaGVldChyZXNvdXJjZSwgcHJlY2VkZW5jZSwgb3duZXJEb2N1bWVudCk7XG4gICAgICB9XG4gICAgICByZXNvdXJjZSA9IHtcbiAgICAgICAgdHlwZTogXCJzdHlsZXNoZWV0XCIsXG4gICAgICAgIGluc3RhbmNlOiByZXNvdXJjZSxcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHN0YXRlOiBzdGF0ZVxuICAgICAgfTtcbiAgICAgIHN0eWxlcy5zZXQoa2V5LCByZXNvdXJjZSk7XG4gICAgfVxuICB9XG59XG5mdW5jdGlvbiBwcmVpbml0U2NyaXB0KHNyYywgb3B0aW9ucykge1xuICBwcmV2aW91c0Rpc3BhdGNoZXIuWChzcmMsIG9wdGlvbnMpO1xuICB2YXIgb3duZXJEb2N1bWVudCA9IGdsb2JhbERvY3VtZW50O1xuICBpZiAob3duZXJEb2N1bWVudCAmJiBzcmMpIHtcbiAgICB2YXIgc2NyaXB0cyA9IGdldFJlc291cmNlc0Zyb21Sb290KG93bmVyRG9jdW1lbnQpLmhvaXN0YWJsZVNjcmlwdHMsXG4gICAgICBrZXkgPSBnZXRTY3JpcHRLZXkoc3JjKSxcbiAgICAgIHJlc291cmNlID0gc2NyaXB0cy5nZXQoa2V5KTtcbiAgICByZXNvdXJjZSB8fFxuICAgICAgKChyZXNvdXJjZSA9IG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcihnZXRTY3JpcHRTZWxlY3RvckZyb21LZXkoa2V5KSkpLFxuICAgICAgcmVzb3VyY2UgfHxcbiAgICAgICAgKChzcmMgPSBhc3NpZ24oeyBzcmM6IHNyYywgYXN5bmM6ICEwIH0sIG9wdGlvbnMpKSxcbiAgICAgICAgKG9wdGlvbnMgPSBwcmVsb2FkUHJvcHNNYXAuZ2V0KGtleSkpICYmXG4gICAgICAgICAgYWRvcHRQcmVsb2FkUHJvcHNGb3JTY3JpcHQoc3JjLCBvcHRpb25zKSxcbiAgICAgICAgKHJlc291cmNlID0gb3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpKSxcbiAgICAgICAgbWFya05vZGVBc0hvaXN0YWJsZShyZXNvdXJjZSksXG4gICAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKHJlc291cmNlLCBcImxpbmtcIiwgc3JjKSxcbiAgICAgICAgb3duZXJEb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKHJlc291cmNlKSksXG4gICAgICAocmVzb3VyY2UgPSB7XG4gICAgICAgIHR5cGU6IFwic2NyaXB0XCIsXG4gICAgICAgIGluc3RhbmNlOiByZXNvdXJjZSxcbiAgICAgICAgY291bnQ6IDEsXG4gICAgICAgIHN0YXRlOiBudWxsXG4gICAgICB9KSxcbiAgICAgIHNjcmlwdHMuc2V0KGtleSwgcmVzb3VyY2UpKTtcbiAgfVxufVxuZnVuY3Rpb24gcHJlaW5pdE1vZHVsZVNjcmlwdChzcmMsIG9wdGlvbnMpIHtcbiAgcHJldmlvdXNEaXNwYXRjaGVyLk0oc3JjLCBvcHRpb25zKTtcbiAgdmFyIG93bmVyRG9jdW1lbnQgPSBnbG9iYWxEb2N1bWVudDtcbiAgaWYgKG93bmVyRG9jdW1lbnQgJiYgc3JjKSB7XG4gICAgdmFyIHNjcmlwdHMgPSBnZXRSZXNvdXJjZXNGcm9tUm9vdChvd25lckRvY3VtZW50KS5ob2lzdGFibGVTY3JpcHRzLFxuICAgICAga2V5ID0gZ2V0U2NyaXB0S2V5KHNyYyksXG4gICAgICByZXNvdXJjZSA9IHNjcmlwdHMuZ2V0KGtleSk7XG4gICAgcmVzb3VyY2UgfHxcbiAgICAgICgocmVzb3VyY2UgPSBvd25lckRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoZ2V0U2NyaXB0U2VsZWN0b3JGcm9tS2V5KGtleSkpKSxcbiAgICAgIHJlc291cmNlIHx8XG4gICAgICAgICgoc3JjID0gYXNzaWduKHsgc3JjOiBzcmMsIGFzeW5jOiAhMCwgdHlwZTogXCJtb2R1bGVcIiB9LCBvcHRpb25zKSksXG4gICAgICAgIChvcHRpb25zID0gcHJlbG9hZFByb3BzTWFwLmdldChrZXkpKSAmJlxuICAgICAgICAgIGFkb3B0UHJlbG9hZFByb3BzRm9yU2NyaXB0KHNyYywgb3B0aW9ucyksXG4gICAgICAgIChyZXNvdXJjZSA9IG93bmVyRG9jdW1lbnQuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSksXG4gICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUocmVzb3VyY2UpLFxuICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhyZXNvdXJjZSwgXCJsaW5rXCIsIHNyYyksXG4gICAgICAgIG93bmVyRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChyZXNvdXJjZSkpLFxuICAgICAgKHJlc291cmNlID0ge1xuICAgICAgICB0eXBlOiBcInNjcmlwdFwiLFxuICAgICAgICBpbnN0YW5jZTogcmVzb3VyY2UsXG4gICAgICAgIGNvdW50OiAxLFxuICAgICAgICBzdGF0ZTogbnVsbFxuICAgICAgfSksXG4gICAgICBzY3JpcHRzLnNldChrZXksIHJlc291cmNlKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFJlc291cmNlKHR5cGUsIGN1cnJlbnRQcm9wcywgcGVuZGluZ1Byb3BzLCBjdXJyZW50UmVzb3VyY2UpIHtcbiAgdmFyIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCA9IChKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQgPVxuICAgIHJvb3RJbnN0YW5jZVN0YWNrQ3Vyc29yLmN1cnJlbnQpXG4gICAgPyBnZXRIb2lzdGFibGVSb290KEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdClcbiAgICA6IG51bGw7XG4gIGlmICghSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0KSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ0NikpO1xuICBzd2l0Y2ggKHR5cGUpIHtcbiAgICBjYXNlIFwibWV0YVwiOlxuICAgIGNhc2UgXCJ0aXRsZVwiOlxuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICByZXR1cm4gXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHBlbmRpbmdQcm9wcy5wcmVjZWRlbmNlICYmXG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBwZW5kaW5nUHJvcHMuaHJlZlxuICAgICAgICA/ICgoY3VycmVudFByb3BzID0gZ2V0U3R5bGVLZXkocGVuZGluZ1Byb3BzLmhyZWYpKSxcbiAgICAgICAgICAocGVuZGluZ1Byb3BzID0gZ2V0UmVzb3VyY2VzRnJvbVJvb3QoXG4gICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRcbiAgICAgICAgICApLmhvaXN0YWJsZVN0eWxlcyksXG4gICAgICAgICAgKGN1cnJlbnRSZXNvdXJjZSA9IHBlbmRpbmdQcm9wcy5nZXQoY3VycmVudFByb3BzKSksXG4gICAgICAgICAgY3VycmVudFJlc291cmNlIHx8XG4gICAgICAgICAgICAoKGN1cnJlbnRSZXNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgdHlwZTogXCJzdHlsZVwiLFxuICAgICAgICAgICAgICBpbnN0YW5jZTogbnVsbCxcbiAgICAgICAgICAgICAgY291bnQ6IDAsXG4gICAgICAgICAgICAgIHN0YXRlOiBudWxsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIHBlbmRpbmdQcm9wcy5zZXQoY3VycmVudFByb3BzLCBjdXJyZW50UmVzb3VyY2UpKSxcbiAgICAgICAgICBjdXJyZW50UmVzb3VyY2UpXG4gICAgICAgIDogeyB0eXBlOiBcInZvaWRcIiwgaW5zdGFuY2U6IG51bGwsIGNvdW50OiAwLCBzdGF0ZTogbnVsbCB9O1xuICAgIGNhc2UgXCJsaW5rXCI6XG4gICAgICBpZiAoXG4gICAgICAgIFwic3R5bGVzaGVldFwiID09PSBwZW5kaW5nUHJvcHMucmVsICYmXG4gICAgICAgIFwic3RyaW5nXCIgPT09IHR5cGVvZiBwZW5kaW5nUHJvcHMuaHJlZiAmJlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcGVuZGluZ1Byb3BzLnByZWNlZGVuY2VcbiAgICAgICkge1xuICAgICAgICB0eXBlID0gZ2V0U3R5bGVLZXkocGVuZGluZ1Byb3BzLmhyZWYpO1xuICAgICAgICB2YXIgc3R5bGVzJDI0MiA9IGdldFJlc291cmNlc0Zyb21Sb290KFxuICAgICAgICAgICAgSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0XG4gICAgICAgICAgKS5ob2lzdGFibGVTdHlsZXMsXG4gICAgICAgICAgcmVzb3VyY2UkMjQzID0gc3R5bGVzJDI0Mi5nZXQodHlwZSk7XG4gICAgICAgIHJlc291cmNlJDI0MyB8fFxuICAgICAgICAgICgoSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0ID1cbiAgICAgICAgICAgIEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdC5vd25lckRvY3VtZW50IHx8IEpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCksXG4gICAgICAgICAgKHJlc291cmNlJDI0MyA9IHtcbiAgICAgICAgICAgIHR5cGU6IFwic3R5bGVzaGVldFwiLFxuICAgICAgICAgICAgaW5zdGFuY2U6IG51bGwsXG4gICAgICAgICAgICBjb3VudDogMCxcbiAgICAgICAgICAgIHN0YXRlOiB7IGxvYWRpbmc6IDAsIHByZWxvYWQ6IG51bGwgfVxuICAgICAgICAgIH0pLFxuICAgICAgICAgIHN0eWxlcyQyNDIuc2V0KHR5cGUsIHJlc291cmNlJDI0MyksXG4gICAgICAgICAgKHN0eWxlcyQyNDIgPSBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIGdldFN0eWxlc2hlZXRTZWxlY3RvckZyb21LZXkodHlwZSlcbiAgICAgICAgICApKSAmJlxuICAgICAgICAgICAgIXN0eWxlcyQyNDIuX3AgJiZcbiAgICAgICAgICAgICgocmVzb3VyY2UkMjQzLmluc3RhbmNlID0gc3R5bGVzJDI0MiksXG4gICAgICAgICAgICAocmVzb3VyY2UkMjQzLnN0YXRlLmxvYWRpbmcgPSA1KSksXG4gICAgICAgICAgcHJlbG9hZFByb3BzTWFwLmhhcyh0eXBlKSB8fFxuICAgICAgICAgICAgKChwZW5kaW5nUHJvcHMgPSB7XG4gICAgICAgICAgICAgIHJlbDogXCJwcmVsb2FkXCIsXG4gICAgICAgICAgICAgIGFzOiBcInN0eWxlXCIsXG4gICAgICAgICAgICAgIGhyZWY6IHBlbmRpbmdQcm9wcy5ocmVmLFxuICAgICAgICAgICAgICBjcm9zc09yaWdpbjogcGVuZGluZ1Byb3BzLmNyb3NzT3JpZ2luLFxuICAgICAgICAgICAgICBpbnRlZ3JpdHk6IHBlbmRpbmdQcm9wcy5pbnRlZ3JpdHksXG4gICAgICAgICAgICAgIG1lZGlhOiBwZW5kaW5nUHJvcHMubWVkaWEsXG4gICAgICAgICAgICAgIGhyZWZMYW5nOiBwZW5kaW5nUHJvcHMuaHJlZkxhbmcsXG4gICAgICAgICAgICAgIHJlZmVycmVyUG9saWN5OiBwZW5kaW5nUHJvcHMucmVmZXJyZXJQb2xpY3lcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgcHJlbG9hZFByb3BzTWFwLnNldCh0eXBlLCBwZW5kaW5nUHJvcHMpLFxuICAgICAgICAgICAgc3R5bGVzJDI0MiB8fFxuICAgICAgICAgICAgICBwcmVsb2FkU3R5bGVzaGVldChcbiAgICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQsXG4gICAgICAgICAgICAgICAgdHlwZSxcbiAgICAgICAgICAgICAgICBwZW5kaW5nUHJvcHMsXG4gICAgICAgICAgICAgICAgcmVzb3VyY2UkMjQzLnN0YXRlXG4gICAgICAgICAgICAgICkpKTtcbiAgICAgICAgaWYgKGN1cnJlbnRQcm9wcyAmJiBudWxsID09PSBjdXJyZW50UmVzb3VyY2UpXG4gICAgICAgICAgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg1MjgsIFwiXCIpKTtcbiAgICAgICAgcmV0dXJuIHJlc291cmNlJDI0MztcbiAgICAgIH1cbiAgICAgIGlmIChjdXJyZW50UHJvcHMgJiYgbnVsbCAhPT0gY3VycmVudFJlc291cmNlKVxuICAgICAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDUyOSwgXCJcIikpO1xuICAgICAgcmV0dXJuIG51bGw7XG4gICAgY2FzZSBcInNjcmlwdFwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKGN1cnJlbnRQcm9wcyA9IHBlbmRpbmdQcm9wcy5hc3luYyksXG4gICAgICAgIChwZW5kaW5nUHJvcHMgPSBwZW5kaW5nUHJvcHMuc3JjKSxcbiAgICAgICAgXCJzdHJpbmdcIiA9PT0gdHlwZW9mIHBlbmRpbmdQcm9wcyAmJlxuICAgICAgICBjdXJyZW50UHJvcHMgJiZcbiAgICAgICAgXCJmdW5jdGlvblwiICE9PSB0eXBlb2YgY3VycmVudFByb3BzICYmXG4gICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiBjdXJyZW50UHJvcHNcbiAgICAgICAgICA/ICgoY3VycmVudFByb3BzID0gZ2V0U2NyaXB0S2V5KHBlbmRpbmdQcm9wcykpLFxuICAgICAgICAgICAgKHBlbmRpbmdQcm9wcyA9IGdldFJlc291cmNlc0Zyb21Sb290KFxuICAgICAgICAgICAgICBKU0NvbXBpbGVyX2lubGluZV9yZXN1bHRcbiAgICAgICAgICAgICkuaG9pc3RhYmxlU2NyaXB0cyksXG4gICAgICAgICAgICAoY3VycmVudFJlc291cmNlID0gcGVuZGluZ1Byb3BzLmdldChjdXJyZW50UHJvcHMpKSxcbiAgICAgICAgICAgIGN1cnJlbnRSZXNvdXJjZSB8fFxuICAgICAgICAgICAgICAoKGN1cnJlbnRSZXNvdXJjZSA9IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBcInNjcmlwdFwiLFxuICAgICAgICAgICAgICAgIGluc3RhbmNlOiBudWxsLFxuICAgICAgICAgICAgICAgIGNvdW50OiAwLFxuICAgICAgICAgICAgICAgIHN0YXRlOiBudWxsXG4gICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICBwZW5kaW5nUHJvcHMuc2V0KGN1cnJlbnRQcm9wcywgY3VycmVudFJlc291cmNlKSksXG4gICAgICAgICAgICBjdXJyZW50UmVzb3VyY2UpXG4gICAgICAgICAgOiB7IHR5cGU6IFwidm9pZFwiLCBpbnN0YW5jZTogbnVsbCwgY291bnQ6IDAsIHN0YXRlOiBudWxsIH1cbiAgICAgICk7XG4gICAgZGVmYXVsdDpcbiAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDQ0LCB0eXBlKSk7XG4gIH1cbn1cbmZ1bmN0aW9uIGdldFN0eWxlS2V5KGhyZWYpIHtcbiAgcmV0dXJuICdocmVmPVwiJyArIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMoaHJlZikgKyAnXCInO1xufVxuZnVuY3Rpb24gZ2V0U3R5bGVzaGVldFNlbGVjdG9yRnJvbUtleShrZXkpIHtcbiAgcmV0dXJuICdsaW5rW3JlbD1cInN0eWxlc2hlZXRcIl1bJyArIGtleSArIFwiXVwiO1xufVxuZnVuY3Rpb24gc3R5bGVzaGVldFByb3BzRnJvbVJhd1Byb3BzKHJhd1Byb3BzKSB7XG4gIHJldHVybiBhc3NpZ24oe30sIHJhd1Byb3BzLCB7XG4gICAgXCJkYXRhLXByZWNlZGVuY2VcIjogcmF3UHJvcHMucHJlY2VkZW5jZSxcbiAgICBwcmVjZWRlbmNlOiBudWxsXG4gIH0pO1xufVxuZnVuY3Rpb24gcHJlbG9hZFN0eWxlc2hlZXQob3duZXJEb2N1bWVudCwga2V5LCBwcmVsb2FkUHJvcHMsIHN0YXRlKSB7XG4gIG93bmVyRG9jdW1lbnQucXVlcnlTZWxlY3RvcignbGlua1tyZWw9XCJwcmVsb2FkXCJdW2FzPVwic3R5bGVcIl1bJyArIGtleSArIFwiXVwiKVxuICAgID8gKHN0YXRlLmxvYWRpbmcgPSAxKVxuICAgIDogKChrZXkgPSBvd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoXCJsaW5rXCIpKSxcbiAgICAgIChzdGF0ZS5wcmVsb2FkID0ga2V5KSxcbiAgICAgIGtleS5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUubG9hZGluZyB8PSAxKTtcbiAgICAgIH0pLFxuICAgICAga2V5LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiAoc3RhdGUubG9hZGluZyB8PSAyKTtcbiAgICAgIH0pLFxuICAgICAgc2V0SW5pdGlhbFByb3BlcnRpZXMoa2V5LCBcImxpbmtcIiwgcHJlbG9hZFByb3BzKSxcbiAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoa2V5KSxcbiAgICAgIG93bmVyRG9jdW1lbnQuaGVhZC5hcHBlbmRDaGlsZChrZXkpKTtcbn1cbmZ1bmN0aW9uIGdldFNjcmlwdEtleShzcmMpIHtcbiAgcmV0dXJuICdbc3JjPVwiJyArIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMoc3JjKSArICdcIl0nO1xufVxuZnVuY3Rpb24gZ2V0U2NyaXB0U2VsZWN0b3JGcm9tS2V5KGtleSkge1xuICByZXR1cm4gXCJzY3JpcHRbYXN5bmNdXCIgKyBrZXk7XG59XG5mdW5jdGlvbiBhY3F1aXJlUmVzb3VyY2UoaG9pc3RhYmxlUm9vdCwgcmVzb3VyY2UsIHByb3BzKSB7XG4gIHJlc291cmNlLmNvdW50Kys7XG4gIGlmIChudWxsID09PSByZXNvdXJjZS5pbnN0YW5jZSlcbiAgICBzd2l0Y2ggKHJlc291cmNlLnR5cGUpIHtcbiAgICAgIGNhc2UgXCJzdHlsZVwiOlxuICAgICAgICB2YXIgaW5zdGFuY2UgPSBob2lzdGFibGVSb290LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgJ3N0eWxlW2RhdGEtaHJlZn49XCInICtcbiAgICAgICAgICAgIGVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXMocHJvcHMuaHJlZikgK1xuICAgICAgICAgICAgJ1wiXSdcbiAgICAgICAgKTtcbiAgICAgICAgaWYgKGluc3RhbmNlKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAocmVzb3VyY2UuaW5zdGFuY2UgPSBpbnN0YW5jZSksXG4gICAgICAgICAgICBtYXJrTm9kZUFzSG9pc3RhYmxlKGluc3RhbmNlKSxcbiAgICAgICAgICAgIGluc3RhbmNlXG4gICAgICAgICAgKTtcbiAgICAgICAgdmFyIHN0eWxlUHJvcHMgPSBhc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgXCJkYXRhLWhyZWZcIjogcHJvcHMuaHJlZixcbiAgICAgICAgICBcImRhdGEtcHJlY2VkZW5jZVwiOiBwcm9wcy5wcmVjZWRlbmNlLFxuICAgICAgICAgIGhyZWY6IG51bGwsXG4gICAgICAgICAgcHJlY2VkZW5jZTogbnVsbFxuICAgICAgICB9KTtcbiAgICAgICAgaW5zdGFuY2UgPSAoaG9pc3RhYmxlUm9vdC5vd25lckRvY3VtZW50IHx8IGhvaXN0YWJsZVJvb3QpLmNyZWF0ZUVsZW1lbnQoXG4gICAgICAgICAgXCJzdHlsZVwiXG4gICAgICAgICk7XG4gICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoaW5zdGFuY2UpO1xuICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhpbnN0YW5jZSwgXCJzdHlsZVwiLCBzdHlsZVByb3BzKTtcbiAgICAgICAgaW5zZXJ0U3R5bGVzaGVldChpbnN0YW5jZSwgcHJvcHMucHJlY2VkZW5jZSwgaG9pc3RhYmxlUm9vdCk7XG4gICAgICAgIHJldHVybiAocmVzb3VyY2UuaW5zdGFuY2UgPSBpbnN0YW5jZSk7XG4gICAgICBjYXNlIFwic3R5bGVzaGVldFwiOlxuICAgICAgICBzdHlsZVByb3BzID0gZ2V0U3R5bGVLZXkocHJvcHMuaHJlZik7XG4gICAgICAgIHZhciBpbnN0YW5jZSQyNDggPSBob2lzdGFibGVSb290LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgZ2V0U3R5bGVzaGVldFNlbGVjdG9yRnJvbUtleShzdHlsZVByb3BzKVxuICAgICAgICApO1xuICAgICAgICBpZiAoaW5zdGFuY2UkMjQ4KVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAocmVzb3VyY2Uuc3RhdGUubG9hZGluZyB8PSA0KSxcbiAgICAgICAgICAgIChyZXNvdXJjZS5pbnN0YW5jZSA9IGluc3RhbmNlJDI0OCksXG4gICAgICAgICAgICBtYXJrTm9kZUFzSG9pc3RhYmxlKGluc3RhbmNlJDI0OCksXG4gICAgICAgICAgICBpbnN0YW5jZSQyNDhcbiAgICAgICAgICApO1xuICAgICAgICBpbnN0YW5jZSA9IHN0eWxlc2hlZXRQcm9wc0Zyb21SYXdQcm9wcyhwcm9wcyk7XG4gICAgICAgIChzdHlsZVByb3BzID0gcHJlbG9hZFByb3BzTWFwLmdldChzdHlsZVByb3BzKSkgJiZcbiAgICAgICAgICBhZG9wdFByZWxvYWRQcm9wc0ZvclN0eWxlc2hlZXQoaW5zdGFuY2UsIHN0eWxlUHJvcHMpO1xuICAgICAgICBpbnN0YW5jZSQyNDggPSAoXG4gICAgICAgICAgaG9pc3RhYmxlUm9vdC5vd25lckRvY3VtZW50IHx8IGhvaXN0YWJsZVJvb3RcbiAgICAgICAgKS5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgICAgbWFya05vZGVBc0hvaXN0YWJsZShpbnN0YW5jZSQyNDgpO1xuICAgICAgICB2YXIgbGlua0luc3RhbmNlID0gaW5zdGFuY2UkMjQ4O1xuICAgICAgICBsaW5rSW5zdGFuY2UuX3AgPSBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICAgICAgbGlua0luc3RhbmNlLm9ubG9hZCA9IHJlc29sdmU7XG4gICAgICAgICAgbGlua0luc3RhbmNlLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICAgIH0pO1xuICAgICAgICBzZXRJbml0aWFsUHJvcGVydGllcyhpbnN0YW5jZSQyNDgsIFwibGlua1wiLCBpbnN0YW5jZSk7XG4gICAgICAgIHJlc291cmNlLnN0YXRlLmxvYWRpbmcgfD0gNDtcbiAgICAgICAgaW5zZXJ0U3R5bGVzaGVldChpbnN0YW5jZSQyNDgsIHByb3BzLnByZWNlZGVuY2UsIGhvaXN0YWJsZVJvb3QpO1xuICAgICAgICByZXR1cm4gKHJlc291cmNlLmluc3RhbmNlID0gaW5zdGFuY2UkMjQ4KTtcbiAgICAgIGNhc2UgXCJzY3JpcHRcIjpcbiAgICAgICAgaW5zdGFuY2UkMjQ4ID0gZ2V0U2NyaXB0S2V5KHByb3BzLnNyYyk7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAoc3R5bGVQcm9wcyA9IGhvaXN0YWJsZVJvb3QucXVlcnlTZWxlY3RvcihcbiAgICAgICAgICAgIGdldFNjcmlwdFNlbGVjdG9yRnJvbUtleShpbnN0YW5jZSQyNDgpXG4gICAgICAgICAgKSlcbiAgICAgICAgKVxuICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAocmVzb3VyY2UuaW5zdGFuY2UgPSBzdHlsZVByb3BzKSxcbiAgICAgICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoc3R5bGVQcm9wcyksXG4gICAgICAgICAgICBzdHlsZVByb3BzXG4gICAgICAgICAgKTtcbiAgICAgICAgaW5zdGFuY2UgPSBwcm9wcztcbiAgICAgICAgaWYgKChzdHlsZVByb3BzID0gcHJlbG9hZFByb3BzTWFwLmdldChpbnN0YW5jZSQyNDgpKSlcbiAgICAgICAgICAoaW5zdGFuY2UgPSBhc3NpZ24oe30sIHByb3BzKSksXG4gICAgICAgICAgICBhZG9wdFByZWxvYWRQcm9wc0ZvclNjcmlwdChpbnN0YW5jZSwgc3R5bGVQcm9wcyk7XG4gICAgICAgIGhvaXN0YWJsZVJvb3QgPSBob2lzdGFibGVSb290Lm93bmVyRG9jdW1lbnQgfHwgaG9pc3RhYmxlUm9vdDtcbiAgICAgICAgc3R5bGVQcm9wcyA9IGhvaXN0YWJsZVJvb3QuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKTtcbiAgICAgICAgbWFya05vZGVBc0hvaXN0YWJsZShzdHlsZVByb3BzKTtcbiAgICAgICAgc2V0SW5pdGlhbFByb3BlcnRpZXMoc3R5bGVQcm9wcywgXCJsaW5rXCIsIGluc3RhbmNlKTtcbiAgICAgICAgaG9pc3RhYmxlUm9vdC5oZWFkLmFwcGVuZENoaWxkKHN0eWxlUHJvcHMpO1xuICAgICAgICByZXR1cm4gKHJlc291cmNlLmluc3RhbmNlID0gc3R5bGVQcm9wcyk7XG4gICAgICBjYXNlIFwidm9pZFwiOlxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDQzLCByZXNvdXJjZS50eXBlKSk7XG4gICAgfVxuICBlbHNlXG4gICAgXCJzdHlsZXNoZWV0XCIgPT09IHJlc291cmNlLnR5cGUgJiZcbiAgICAgIDAgPT09IChyZXNvdXJjZS5zdGF0ZS5sb2FkaW5nICYgNCkgJiZcbiAgICAgICgoaW5zdGFuY2UgPSByZXNvdXJjZS5pbnN0YW5jZSksXG4gICAgICAocmVzb3VyY2Uuc3RhdGUubG9hZGluZyB8PSA0KSxcbiAgICAgIGluc2VydFN0eWxlc2hlZXQoaW5zdGFuY2UsIHByb3BzLnByZWNlZGVuY2UsIGhvaXN0YWJsZVJvb3QpKTtcbiAgcmV0dXJuIHJlc291cmNlLmluc3RhbmNlO1xufVxuZnVuY3Rpb24gaW5zZXJ0U3R5bGVzaGVldChpbnN0YW5jZSwgcHJlY2VkZW5jZSwgcm9vdCkge1xuICBmb3IgKFxuICAgIHZhciBub2RlcyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgJ2xpbmtbcmVsPVwic3R5bGVzaGVldFwiXVtkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV0nXG4gICAgICApLFxuICAgICAgbGFzdCA9IG5vZGVzLmxlbmd0aCA/IG5vZGVzW25vZGVzLmxlbmd0aCAtIDFdIDogbnVsbCxcbiAgICAgIHByaW9yID0gbGFzdCxcbiAgICAgIGkgPSAwO1xuICAgIGkgPCBub2Rlcy5sZW5ndGg7XG4gICAgaSsrXG4gICkge1xuICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgaWYgKG5vZGUuZGF0YXNldC5wcmVjZWRlbmNlID09PSBwcmVjZWRlbmNlKSBwcmlvciA9IG5vZGU7XG4gICAgZWxzZSBpZiAocHJpb3IgIT09IGxhc3QpIGJyZWFrO1xuICB9XG4gIHByaW9yXG4gICAgPyBwcmlvci5wYXJlbnROb2RlLmluc2VydEJlZm9yZShpbnN0YW5jZSwgcHJpb3IubmV4dFNpYmxpbmcpXG4gICAgOiAoKHByZWNlZGVuY2UgPSA5ID09PSByb290Lm5vZGVUeXBlID8gcm9vdC5oZWFkIDogcm9vdCksXG4gICAgICBwcmVjZWRlbmNlLmluc2VydEJlZm9yZShpbnN0YW5jZSwgcHJlY2VkZW5jZS5maXJzdENoaWxkKSk7XG59XG5mdW5jdGlvbiBhZG9wdFByZWxvYWRQcm9wc0ZvclN0eWxlc2hlZXQoc3R5bGVzaGVldFByb3BzLCBwcmVsb2FkUHJvcHMpIHtcbiAgbnVsbCA9PSBzdHlsZXNoZWV0UHJvcHMuY3Jvc3NPcmlnaW4gJiZcbiAgICAoc3R5bGVzaGVldFByb3BzLmNyb3NzT3JpZ2luID0gcHJlbG9hZFByb3BzLmNyb3NzT3JpZ2luKTtcbiAgbnVsbCA9PSBzdHlsZXNoZWV0UHJvcHMucmVmZXJyZXJQb2xpY3kgJiZcbiAgICAoc3R5bGVzaGVldFByb3BzLnJlZmVycmVyUG9saWN5ID0gcHJlbG9hZFByb3BzLnJlZmVycmVyUG9saWN5KTtcbiAgbnVsbCA9PSBzdHlsZXNoZWV0UHJvcHMudGl0bGUgJiYgKHN0eWxlc2hlZXRQcm9wcy50aXRsZSA9IHByZWxvYWRQcm9wcy50aXRsZSk7XG59XG5mdW5jdGlvbiBhZG9wdFByZWxvYWRQcm9wc0ZvclNjcmlwdChzY3JpcHRQcm9wcywgcHJlbG9hZFByb3BzKSB7XG4gIG51bGwgPT0gc2NyaXB0UHJvcHMuY3Jvc3NPcmlnaW4gJiZcbiAgICAoc2NyaXB0UHJvcHMuY3Jvc3NPcmlnaW4gPSBwcmVsb2FkUHJvcHMuY3Jvc3NPcmlnaW4pO1xuICBudWxsID09IHNjcmlwdFByb3BzLnJlZmVycmVyUG9saWN5ICYmXG4gICAgKHNjcmlwdFByb3BzLnJlZmVycmVyUG9saWN5ID0gcHJlbG9hZFByb3BzLnJlZmVycmVyUG9saWN5KTtcbiAgbnVsbCA9PSBzY3JpcHRQcm9wcy5pbnRlZ3JpdHkgJiZcbiAgICAoc2NyaXB0UHJvcHMuaW50ZWdyaXR5ID0gcHJlbG9hZFByb3BzLmludGVncml0eSk7XG59XG52YXIgdGFnQ2FjaGVzID0gbnVsbDtcbmZ1bmN0aW9uIGdldEh5ZHJhdGFibGVIb2lzdGFibGVDYWNoZSh0eXBlLCBrZXlBdHRyaWJ1dGUsIG93bmVyRG9jdW1lbnQpIHtcbiAgaWYgKG51bGwgPT09IHRhZ0NhY2hlcykge1xuICAgIHZhciBjYWNoZSA9IG5ldyBNYXAoKTtcbiAgICB2YXIgY2FjaGVzID0gKHRhZ0NhY2hlcyA9IG5ldyBNYXAoKSk7XG4gICAgY2FjaGVzLnNldChvd25lckRvY3VtZW50LCBjYWNoZSk7XG4gIH0gZWxzZVxuICAgIChjYWNoZXMgPSB0YWdDYWNoZXMpLFxuICAgICAgKGNhY2hlID0gY2FjaGVzLmdldChvd25lckRvY3VtZW50KSksXG4gICAgICBjYWNoZSB8fCAoKGNhY2hlID0gbmV3IE1hcCgpKSwgY2FjaGVzLnNldChvd25lckRvY3VtZW50LCBjYWNoZSkpO1xuICBpZiAoY2FjaGUuaGFzKHR5cGUpKSByZXR1cm4gY2FjaGU7XG4gIGNhY2hlLnNldCh0eXBlLCBudWxsKTtcbiAgb3duZXJEb2N1bWVudCA9IG93bmVyRG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUodHlwZSk7XG4gIGZvciAoY2FjaGVzID0gMDsgY2FjaGVzIDwgb3duZXJEb2N1bWVudC5sZW5ndGg7IGNhY2hlcysrKSB7XG4gICAgdmFyIG5vZGUgPSBvd25lckRvY3VtZW50W2NhY2hlc107XG4gICAgaWYgKFxuICAgICAgIShcbiAgICAgICAgbm9kZVtpbnRlcm5hbEhvaXN0YWJsZU1hcmtlcl0gfHxcbiAgICAgICAgbm9kZVtpbnRlcm5hbEluc3RhbmNlS2V5XSB8fFxuICAgICAgICAoXCJsaW5rXCIgPT09IHR5cGUgJiYgXCJzdHlsZXNoZWV0XCIgPT09IG5vZGUuZ2V0QXR0cmlidXRlKFwicmVsXCIpKVxuICAgICAgKSAmJlxuICAgICAgXCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiICE9PSBub2RlLm5hbWVzcGFjZVVSSVxuICAgICkge1xuICAgICAgdmFyIG5vZGVLZXkgPSBub2RlLmdldEF0dHJpYnV0ZShrZXlBdHRyaWJ1dGUpIHx8IFwiXCI7XG4gICAgICBub2RlS2V5ID0gdHlwZSArIG5vZGVLZXk7XG4gICAgICB2YXIgZXhpc3RpbmcgPSBjYWNoZS5nZXQobm9kZUtleSk7XG4gICAgICBleGlzdGluZyA/IGV4aXN0aW5nLnB1c2gobm9kZSkgOiBjYWNoZS5zZXQobm9kZUtleSwgW25vZGVdKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGNhY2hlO1xufVxuZnVuY3Rpb24gbW91bnRIb2lzdGFibGUoaG9pc3RhYmxlUm9vdCwgdHlwZSwgaW5zdGFuY2UpIHtcbiAgaG9pc3RhYmxlUm9vdCA9IGhvaXN0YWJsZVJvb3Qub3duZXJEb2N1bWVudCB8fCBob2lzdGFibGVSb290O1xuICBob2lzdGFibGVSb290LmhlYWQuaW5zZXJ0QmVmb3JlKFxuICAgIGluc3RhbmNlLFxuICAgIFwidGl0bGVcIiA9PT0gdHlwZSA/IGhvaXN0YWJsZVJvb3QucXVlcnlTZWxlY3RvcihcImhlYWQgPiB0aXRsZVwiKSA6IG51bGxcbiAgKTtcbn1cbmZ1bmN0aW9uIGlzSG9zdEhvaXN0YWJsZVR5cGUodHlwZSwgcHJvcHMsIGhvc3RDb250ZXh0KSB7XG4gIGlmICgxID09PSBob3N0Q29udGV4dCB8fCBudWxsICE9IHByb3BzLml0ZW1Qcm9wKSByZXR1cm4gITE7XG4gIHN3aXRjaCAodHlwZSkge1xuICAgIGNhc2UgXCJtZXRhXCI6XG4gICAgY2FzZSBcInRpdGxlXCI6XG4gICAgICByZXR1cm4gITA7XG4gICAgY2FzZSBcInN0eWxlXCI6XG4gICAgICBpZiAoXG4gICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcm9wcy5wcmVjZWRlbmNlIHx8XG4gICAgICAgIFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcm9wcy5ocmVmIHx8XG4gICAgICAgIFwiXCIgPT09IHByb3BzLmhyZWZcbiAgICAgIClcbiAgICAgICAgYnJlYWs7XG4gICAgICByZXR1cm4gITA7XG4gICAgY2FzZSBcImxpbmtcIjpcbiAgICAgIGlmIChcbiAgICAgICAgXCJzdHJpbmdcIiAhPT0gdHlwZW9mIHByb3BzLnJlbCB8fFxuICAgICAgICBcInN0cmluZ1wiICE9PSB0eXBlb2YgcHJvcHMuaHJlZiB8fFxuICAgICAgICBcIlwiID09PSBwcm9wcy5ocmVmIHx8XG4gICAgICAgIHByb3BzLm9uTG9hZCB8fFxuICAgICAgICBwcm9wcy5vbkVycm9yXG4gICAgICApXG4gICAgICAgIGJyZWFrO1xuICAgICAgc3dpdGNoIChwcm9wcy5yZWwpIHtcbiAgICAgICAgY2FzZSBcInN0eWxlc2hlZXRcIjpcbiAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgKHR5cGUgPSBwcm9wcy5kaXNhYmxlZCksXG4gICAgICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMucHJlY2VkZW5jZSAmJiBudWxsID09IHR5cGVcbiAgICAgICAgICApO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgIHJldHVybiAhMDtcbiAgICAgIH1cbiAgICBjYXNlIFwic2NyaXB0XCI6XG4gICAgICBpZiAoXG4gICAgICAgIHByb3BzLmFzeW5jICYmXG4gICAgICAgIFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHByb3BzLmFzeW5jICYmXG4gICAgICAgIFwic3ltYm9sXCIgIT09IHR5cGVvZiBwcm9wcy5hc3luYyAmJlxuICAgICAgICAhcHJvcHMub25Mb2FkICYmXG4gICAgICAgICFwcm9wcy5vbkVycm9yICYmXG4gICAgICAgIHByb3BzLnNyYyAmJlxuICAgICAgICBcInN0cmluZ1wiID09PSB0eXBlb2YgcHJvcHMuc3JjXG4gICAgICApXG4gICAgICAgIHJldHVybiAhMDtcbiAgfVxuICByZXR1cm4gITE7XG59XG5mdW5jdGlvbiBwcmVsb2FkUmVzb3VyY2UocmVzb3VyY2UpIHtcbiAgcmV0dXJuIFwic3R5bGVzaGVldFwiID09PSByZXNvdXJjZS50eXBlICYmIDAgPT09IChyZXNvdXJjZS5zdGF0ZS5sb2FkaW5nICYgMylcbiAgICA/ICExXG4gICAgOiAhMDtcbn1cbnZhciBzdXNwZW5kZWRTdGF0ZSA9IG51bGw7XG5mdW5jdGlvbiBub29wKCkge31cbmZ1bmN0aW9uIHN1c3BlbmRSZXNvdXJjZShob2lzdGFibGVSb290LCByZXNvdXJjZSwgcHJvcHMpIHtcbiAgaWYgKG51bGwgPT09IHN1c3BlbmRlZFN0YXRlKSB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDQ3NSkpO1xuICB2YXIgc3RhdGUgPSBzdXNwZW5kZWRTdGF0ZTtcbiAgaWYgKFxuICAgIFwic3R5bGVzaGVldFwiID09PSByZXNvdXJjZS50eXBlICYmXG4gICAgKFwic3RyaW5nXCIgIT09IHR5cGVvZiBwcm9wcy5tZWRpYSB8fFxuICAgICAgITEgIT09IG1hdGNoTWVkaWEocHJvcHMubWVkaWEpLm1hdGNoZXMpICYmXG4gICAgMCA9PT0gKHJlc291cmNlLnN0YXRlLmxvYWRpbmcgJiA0KVxuICApIHtcbiAgICBpZiAobnVsbCA9PT0gcmVzb3VyY2UuaW5zdGFuY2UpIHtcbiAgICAgIHZhciBrZXkgPSBnZXRTdHlsZUtleShwcm9wcy5ocmVmKSxcbiAgICAgICAgaW5zdGFuY2UgPSBob2lzdGFibGVSb290LnF1ZXJ5U2VsZWN0b3IoXG4gICAgICAgICAgZ2V0U3R5bGVzaGVldFNlbGVjdG9yRnJvbUtleShrZXkpXG4gICAgICAgICk7XG4gICAgICBpZiAoaW5zdGFuY2UpIHtcbiAgICAgICAgaG9pc3RhYmxlUm9vdCA9IGluc3RhbmNlLl9wO1xuICAgICAgICBudWxsICE9PSBob2lzdGFibGVSb290ICYmXG4gICAgICAgICAgXCJvYmplY3RcIiA9PT0gdHlwZW9mIGhvaXN0YWJsZVJvb3QgJiZcbiAgICAgICAgICBcImZ1bmN0aW9uXCIgPT09IHR5cGVvZiBob2lzdGFibGVSb290LnRoZW4gJiZcbiAgICAgICAgICAoc3RhdGUuY291bnQrKyxcbiAgICAgICAgICAoc3RhdGUgPSBvblVuc3VzcGVuZC5iaW5kKHN0YXRlKSksXG4gICAgICAgICAgaG9pc3RhYmxlUm9vdC50aGVuKHN0YXRlLCBzdGF0ZSkpO1xuICAgICAgICByZXNvdXJjZS5zdGF0ZS5sb2FkaW5nIHw9IDQ7XG4gICAgICAgIHJlc291cmNlLmluc3RhbmNlID0gaW5zdGFuY2U7XG4gICAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoaW5zdGFuY2UpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpbnN0YW5jZSA9IGhvaXN0YWJsZVJvb3Qub3duZXJEb2N1bWVudCB8fCBob2lzdGFibGVSb290O1xuICAgICAgcHJvcHMgPSBzdHlsZXNoZWV0UHJvcHNGcm9tUmF3UHJvcHMocHJvcHMpO1xuICAgICAgKGtleSA9IHByZWxvYWRQcm9wc01hcC5nZXQoa2V5KSkgJiZcbiAgICAgICAgYWRvcHRQcmVsb2FkUHJvcHNGb3JTdHlsZXNoZWV0KHByb3BzLCBrZXkpO1xuICAgICAgaW5zdGFuY2UgPSBpbnN0YW5jZS5jcmVhdGVFbGVtZW50KFwibGlua1wiKTtcbiAgICAgIG1hcmtOb2RlQXNIb2lzdGFibGUoaW5zdGFuY2UpO1xuICAgICAgdmFyIGxpbmtJbnN0YW5jZSA9IGluc3RhbmNlO1xuICAgICAgbGlua0luc3RhbmNlLl9wID0gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBsaW5rSW5zdGFuY2Uub25sb2FkID0gcmVzb2x2ZTtcbiAgICAgICAgbGlua0luc3RhbmNlLm9uZXJyb3IgPSByZWplY3Q7XG4gICAgICB9KTtcbiAgICAgIHNldEluaXRpYWxQcm9wZXJ0aWVzKGluc3RhbmNlLCBcImxpbmtcIiwgcHJvcHMpO1xuICAgICAgcmVzb3VyY2UuaW5zdGFuY2UgPSBpbnN0YW5jZTtcbiAgICB9XG4gICAgbnVsbCA9PT0gc3RhdGUuc3R5bGVzaGVldHMgJiYgKHN0YXRlLnN0eWxlc2hlZXRzID0gbmV3IE1hcCgpKTtcbiAgICBzdGF0ZS5zdHlsZXNoZWV0cy5zZXQocmVzb3VyY2UsIGhvaXN0YWJsZVJvb3QpO1xuICAgIChob2lzdGFibGVSb290ID0gcmVzb3VyY2Uuc3RhdGUucHJlbG9hZCkgJiZcbiAgICAgIDAgPT09IChyZXNvdXJjZS5zdGF0ZS5sb2FkaW5nICYgMykgJiZcbiAgICAgIChzdGF0ZS5jb3VudCsrLFxuICAgICAgKHJlc291cmNlID0gb25VbnN1c3BlbmQuYmluZChzdGF0ZSkpLFxuICAgICAgaG9pc3RhYmxlUm9vdC5hZGRFdmVudExpc3RlbmVyKFwibG9hZFwiLCByZXNvdXJjZSksXG4gICAgICBob2lzdGFibGVSb290LmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCByZXNvdXJjZSkpO1xuICB9XG59XG5mdW5jdGlvbiB3YWl0Rm9yQ29tbWl0VG9CZVJlYWR5KCkge1xuICBpZiAobnVsbCA9PT0gc3VzcGVuZGVkU3RhdGUpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoNDc1KSk7XG4gIHZhciBzdGF0ZSA9IHN1c3BlbmRlZFN0YXRlO1xuICBzdGF0ZS5zdHlsZXNoZWV0cyAmJlxuICAgIDAgPT09IHN0YXRlLmNvdW50ICYmXG4gICAgaW5zZXJ0U3VzcGVuZGVkU3R5bGVzaGVldHMoc3RhdGUsIHN0YXRlLnN0eWxlc2hlZXRzKTtcbiAgcmV0dXJuIDAgPCBzdGF0ZS5jb3VudFxuICAgID8gZnVuY3Rpb24gKGNvbW1pdCkge1xuICAgICAgICB2YXIgc3R5bGVzaGVldFRpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgc3RhdGUuc3R5bGVzaGVldHMgJiZcbiAgICAgICAgICAgIGluc2VydFN1c3BlbmRlZFN0eWxlc2hlZXRzKHN0YXRlLCBzdGF0ZS5zdHlsZXNoZWV0cyk7XG4gICAgICAgICAgaWYgKHN0YXRlLnVuc3VzcGVuZCkge1xuICAgICAgICAgICAgdmFyIHVuc3VzcGVuZCA9IHN0YXRlLnVuc3VzcGVuZDtcbiAgICAgICAgICAgIHN0YXRlLnVuc3VzcGVuZCA9IG51bGw7XG4gICAgICAgICAgICB1bnN1c3BlbmQoKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIDZlNCk7XG4gICAgICAgIHN0YXRlLnVuc3VzcGVuZCA9IGNvbW1pdDtcbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBzdGF0ZS51bnN1c3BlbmQgPSBudWxsO1xuICAgICAgICAgIGNsZWFyVGltZW91dChzdHlsZXNoZWV0VGltZXIpO1xuICAgICAgICB9O1xuICAgICAgfVxuICAgIDogbnVsbDtcbn1cbmZ1bmN0aW9uIG9uVW5zdXNwZW5kKCkge1xuICB0aGlzLmNvdW50LS07XG4gIGlmICgwID09PSB0aGlzLmNvdW50KVxuICAgIGlmICh0aGlzLnN0eWxlc2hlZXRzKSBpbnNlcnRTdXNwZW5kZWRTdHlsZXNoZWV0cyh0aGlzLCB0aGlzLnN0eWxlc2hlZXRzKTtcbiAgICBlbHNlIGlmICh0aGlzLnVuc3VzcGVuZCkge1xuICAgICAgdmFyIHVuc3VzcGVuZCA9IHRoaXMudW5zdXNwZW5kO1xuICAgICAgdGhpcy51bnN1c3BlbmQgPSBudWxsO1xuICAgICAgdW5zdXNwZW5kKCk7XG4gICAgfVxufVxudmFyIHByZWNlZGVuY2VzQnlSb290ID0gbnVsbDtcbmZ1bmN0aW9uIGluc2VydFN1c3BlbmRlZFN0eWxlc2hlZXRzKHN0YXRlLCByZXNvdXJjZXMpIHtcbiAgc3RhdGUuc3R5bGVzaGVldHMgPSBudWxsO1xuICBudWxsICE9PSBzdGF0ZS51bnN1c3BlbmQgJiZcbiAgICAoc3RhdGUuY291bnQrKyxcbiAgICAocHJlY2VkZW5jZXNCeVJvb3QgPSBuZXcgTWFwKCkpLFxuICAgIHJlc291cmNlcy5mb3JFYWNoKGluc2VydFN0eWxlc2hlZXRJbnRvUm9vdCwgc3RhdGUpLFxuICAgIChwcmVjZWRlbmNlc0J5Um9vdCA9IG51bGwpLFxuICAgIG9uVW5zdXNwZW5kLmNhbGwoc3RhdGUpKTtcbn1cbmZ1bmN0aW9uIGluc2VydFN0eWxlc2hlZXRJbnRvUm9vdChyb290LCByZXNvdXJjZSkge1xuICBpZiAoIShyZXNvdXJjZS5zdGF0ZS5sb2FkaW5nICYgNCkpIHtcbiAgICB2YXIgcHJlY2VkZW5jZXMgPSBwcmVjZWRlbmNlc0J5Um9vdC5nZXQocm9vdCk7XG4gICAgaWYgKHByZWNlZGVuY2VzKSB2YXIgbGFzdCA9IHByZWNlZGVuY2VzLmdldChudWxsKTtcbiAgICBlbHNlIHtcbiAgICAgIHByZWNlZGVuY2VzID0gbmV3IE1hcCgpO1xuICAgICAgcHJlY2VkZW5jZXNCeVJvb3Quc2V0KHJvb3QsIHByZWNlZGVuY2VzKTtcbiAgICAgIGZvciAoXG4gICAgICAgIHZhciBub2RlcyA9IHJvb3QucXVlcnlTZWxlY3RvckFsbChcbiAgICAgICAgICAgIFwibGlua1tkYXRhLXByZWNlZGVuY2VdLHN0eWxlW2RhdGEtcHJlY2VkZW5jZV1cIlxuICAgICAgICAgICksXG4gICAgICAgICAgaSA9IDA7XG4gICAgICAgIGkgPCBub2Rlcy5sZW5ndGg7XG4gICAgICAgIGkrK1xuICAgICAgKSB7XG4gICAgICAgIHZhciBub2RlID0gbm9kZXNbaV07XG4gICAgICAgIGlmIChcbiAgICAgICAgICBcIkxJTktcIiA9PT0gbm9kZS5ub2RlTmFtZSB8fFxuICAgICAgICAgIFwibm90IGFsbFwiICE9PSBub2RlLmdldEF0dHJpYnV0ZShcIm1lZGlhXCIpXG4gICAgICAgIClcbiAgICAgICAgICBwcmVjZWRlbmNlcy5zZXQobm9kZS5kYXRhc2V0LnByZWNlZGVuY2UsIG5vZGUpLCAobGFzdCA9IG5vZGUpO1xuICAgICAgfVxuICAgICAgbGFzdCAmJiBwcmVjZWRlbmNlcy5zZXQobnVsbCwgbGFzdCk7XG4gICAgfVxuICAgIG5vZGVzID0gcmVzb3VyY2UuaW5zdGFuY2U7XG4gICAgbm9kZSA9IG5vZGVzLmdldEF0dHJpYnV0ZShcImRhdGEtcHJlY2VkZW5jZVwiKTtcbiAgICBpID0gcHJlY2VkZW5jZXMuZ2V0KG5vZGUpIHx8IGxhc3Q7XG4gICAgaSA9PT0gbGFzdCAmJiBwcmVjZWRlbmNlcy5zZXQobnVsbCwgbm9kZXMpO1xuICAgIHByZWNlZGVuY2VzLnNldChub2RlLCBub2Rlcyk7XG4gICAgdGhpcy5jb3VudCsrO1xuICAgIGxhc3QgPSBvblVuc3VzcGVuZC5iaW5kKHRoaXMpO1xuICAgIG5vZGVzLmFkZEV2ZW50TGlzdGVuZXIoXCJsb2FkXCIsIGxhc3QpO1xuICAgIG5vZGVzLmFkZEV2ZW50TGlzdGVuZXIoXCJlcnJvclwiLCBsYXN0KTtcbiAgICBpXG4gICAgICA/IGkucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUobm9kZXMsIGkubmV4dFNpYmxpbmcpXG4gICAgICA6ICgocm9vdCA9IDkgPT09IHJvb3Qubm9kZVR5cGUgPyByb290LmhlYWQgOiByb290KSxcbiAgICAgICAgcm9vdC5pbnNlcnRCZWZvcmUobm9kZXMsIHJvb3QuZmlyc3RDaGlsZCkpO1xuICAgIHJlc291cmNlLnN0YXRlLmxvYWRpbmcgfD0gNDtcbiAgfVxufVxudmFyIEhvc3RUcmFuc2l0aW9uQ29udGV4dCA9IHtcbiAgJCR0eXBlb2Y6IFJFQUNUX0NPTlRFWFRfVFlQRSxcbiAgUHJvdmlkZXI6IG51bGwsXG4gIENvbnN1bWVyOiBudWxsLFxuICBfY3VycmVudFZhbHVlOiBzaGFyZWROb3RQZW5kaW5nT2JqZWN0LFxuICBfY3VycmVudFZhbHVlMjogc2hhcmVkTm90UGVuZGluZ09iamVjdCxcbiAgX3RocmVhZENvdW50OiAwXG59O1xuZnVuY3Rpb24gRmliZXJSb290Tm9kZShcbiAgY29udGFpbmVySW5mbyxcbiAgdGFnLFxuICBoeWRyYXRlLFxuICBpZGVudGlmaWVyUHJlZml4LFxuICBvblVuY2F1Z2h0RXJyb3IsXG4gIG9uQ2F1Z2h0RXJyb3IsXG4gIG9uUmVjb3ZlcmFibGVFcnJvcixcbiAgZm9ybVN0YXRlXG4pIHtcbiAgdGhpcy50YWcgPSAxO1xuICB0aGlzLmNvbnRhaW5lckluZm8gPSBjb250YWluZXJJbmZvO1xuICB0aGlzLmZpbmlzaGVkV29yayA9XG4gICAgdGhpcy5waW5nQ2FjaGUgPVxuICAgIHRoaXMuY3VycmVudCA9XG4gICAgdGhpcy5wZW5kaW5nQ2hpbGRyZW4gPVxuICAgICAgbnVsbDtcbiAgdGhpcy50aW1lb3V0SGFuZGxlID0gLTE7XG4gIHRoaXMuY2FsbGJhY2tOb2RlID1cbiAgICB0aGlzLm5leHQgPVxuICAgIHRoaXMucGVuZGluZ0NvbnRleHQgPVxuICAgIHRoaXMuY29udGV4dCA9XG4gICAgdGhpcy5jYW5jZWxQZW5kaW5nQ29tbWl0ID1cbiAgICAgIG51bGw7XG4gIHRoaXMuY2FsbGJhY2tQcmlvcml0eSA9IDA7XG4gIHRoaXMuZXhwaXJhdGlvblRpbWVzID0gY3JlYXRlTGFuZU1hcCgtMSk7XG4gIHRoaXMuZW50YW5nbGVkTGFuZXMgPVxuICAgIHRoaXMuc2hlbGxTdXNwZW5kQ291bnRlciA9XG4gICAgdGhpcy5lcnJvclJlY292ZXJ5RGlzYWJsZWRMYW5lcyA9XG4gICAgdGhpcy5maW5pc2hlZExhbmVzID1cbiAgICB0aGlzLmV4cGlyZWRMYW5lcyA9XG4gICAgdGhpcy53YXJtTGFuZXMgPVxuICAgIHRoaXMucGluZ2VkTGFuZXMgPVxuICAgIHRoaXMuc3VzcGVuZGVkTGFuZXMgPVxuICAgIHRoaXMucGVuZGluZ0xhbmVzID1cbiAgICAgIDA7XG4gIHRoaXMuZW50YW5nbGVtZW50cyA9IGNyZWF0ZUxhbmVNYXAoMCk7XG4gIHRoaXMuaGlkZGVuVXBkYXRlcyA9IGNyZWF0ZUxhbmVNYXAobnVsbCk7XG4gIHRoaXMuaWRlbnRpZmllclByZWZpeCA9IGlkZW50aWZpZXJQcmVmaXg7XG4gIHRoaXMub25VbmNhdWdodEVycm9yID0gb25VbmNhdWdodEVycm9yO1xuICB0aGlzLm9uQ2F1Z2h0RXJyb3IgPSBvbkNhdWdodEVycm9yO1xuICB0aGlzLm9uUmVjb3ZlcmFibGVFcnJvciA9IG9uUmVjb3ZlcmFibGVFcnJvcjtcbiAgdGhpcy5wb29sZWRDYWNoZSA9IG51bGw7XG4gIHRoaXMucG9vbGVkQ2FjaGVMYW5lcyA9IDA7XG4gIHRoaXMuZm9ybVN0YXRlID0gZm9ybVN0YXRlO1xuICB0aGlzLmluY29tcGxldGVUcmFuc2l0aW9ucyA9IG5ldyBNYXAoKTtcbn1cbmZ1bmN0aW9uIGNyZWF0ZUZpYmVyUm9vdChcbiAgY29udGFpbmVySW5mbyxcbiAgdGFnLFxuICBoeWRyYXRlLFxuICBpbml0aWFsQ2hpbGRyZW4sXG4gIGh5ZHJhdGlvbkNhbGxiYWNrcyxcbiAgaXNTdHJpY3RNb2RlLFxuICBpZGVudGlmaWVyUHJlZml4LFxuICBvblVuY2F1Z2h0RXJyb3IsXG4gIG9uQ2F1Z2h0RXJyb3IsXG4gIG9uUmVjb3ZlcmFibGVFcnJvcixcbiAgdHJhbnNpdGlvbkNhbGxiYWNrcyxcbiAgZm9ybVN0YXRlXG4pIHtcbiAgY29udGFpbmVySW5mbyA9IG5ldyBGaWJlclJvb3ROb2RlKFxuICAgIGNvbnRhaW5lckluZm8sXG4gICAgdGFnLFxuICAgIGh5ZHJhdGUsXG4gICAgaWRlbnRpZmllclByZWZpeCxcbiAgICBvblVuY2F1Z2h0RXJyb3IsXG4gICAgb25DYXVnaHRFcnJvcixcbiAgICBvblJlY292ZXJhYmxlRXJyb3IsXG4gICAgZm9ybVN0YXRlXG4gICk7XG4gIHRhZyA9IDE7XG4gICEwID09PSBpc1N0cmljdE1vZGUgJiYgKHRhZyB8PSAyNCk7XG4gIGlzU3RyaWN0TW9kZSA9IGNyZWF0ZUZpYmVySW1wbENsYXNzKDMsIG51bGwsIG51bGwsIHRhZyk7XG4gIGNvbnRhaW5lckluZm8uY3VycmVudCA9IGlzU3RyaWN0TW9kZTtcbiAgaXNTdHJpY3RNb2RlLnN0YXRlTm9kZSA9IGNvbnRhaW5lckluZm87XG4gIHRhZyA9IGNyZWF0ZUNhY2hlKCk7XG4gIHRhZy5yZWZDb3VudCsrO1xuICBjb250YWluZXJJbmZvLnBvb2xlZENhY2hlID0gdGFnO1xuICB0YWcucmVmQ291bnQrKztcbiAgaXNTdHJpY3RNb2RlLm1lbW9pemVkU3RhdGUgPSB7XG4gICAgZWxlbWVudDogaW5pdGlhbENoaWxkcmVuLFxuICAgIGlzRGVoeWRyYXRlZDogaHlkcmF0ZSxcbiAgICBjYWNoZTogdGFnXG4gIH07XG4gIGluaXRpYWxpemVVcGRhdGVRdWV1ZShpc1N0cmljdE1vZGUpO1xuICByZXR1cm4gY29udGFpbmVySW5mbztcbn1cbmZ1bmN0aW9uIGdldENvbnRleHRGb3JTdWJ0cmVlKHBhcmVudENvbXBvbmVudCkge1xuICBpZiAoIXBhcmVudENvbXBvbmVudCkgcmV0dXJuIGVtcHR5Q29udGV4dE9iamVjdDtcbiAgcGFyZW50Q29tcG9uZW50ID0gZW1wdHlDb250ZXh0T2JqZWN0O1xuICByZXR1cm4gcGFyZW50Q29tcG9uZW50O1xufVxuZnVuY3Rpb24gdXBkYXRlQ29udGFpbmVySW1wbChcbiAgcm9vdEZpYmVyLFxuICBsYW5lLFxuICBlbGVtZW50LFxuICBjb250YWluZXIsXG4gIHBhcmVudENvbXBvbmVudCxcbiAgY2FsbGJhY2tcbikge1xuICBwYXJlbnRDb21wb25lbnQgPSBnZXRDb250ZXh0Rm9yU3VidHJlZShwYXJlbnRDb21wb25lbnQpO1xuICBudWxsID09PSBjb250YWluZXIuY29udGV4dFxuICAgID8gKGNvbnRhaW5lci5jb250ZXh0ID0gcGFyZW50Q29tcG9uZW50KVxuICAgIDogKGNvbnRhaW5lci5wZW5kaW5nQ29udGV4dCA9IHBhcmVudENvbXBvbmVudCk7XG4gIGNvbnRhaW5lciA9IGNyZWF0ZVVwZGF0ZShsYW5lKTtcbiAgY29udGFpbmVyLnBheWxvYWQgPSB7IGVsZW1lbnQ6IGVsZW1lbnQgfTtcbiAgY2FsbGJhY2sgPSB2b2lkIDAgPT09IGNhbGxiYWNrID8gbnVsbCA6IGNhbGxiYWNrO1xuICBudWxsICE9PSBjYWxsYmFjayAmJiAoY29udGFpbmVyLmNhbGxiYWNrID0gY2FsbGJhY2spO1xuICBlbGVtZW50ID0gZW5xdWV1ZVVwZGF0ZShyb290RmliZXIsIGNvbnRhaW5lciwgbGFuZSk7XG4gIG51bGwgIT09IGVsZW1lbnQgJiZcbiAgICAoc2NoZWR1bGVVcGRhdGVPbkZpYmVyKGVsZW1lbnQsIHJvb3RGaWJlciwgbGFuZSksXG4gICAgZW50YW5nbGVUcmFuc2l0aW9ucyhlbGVtZW50LCByb290RmliZXIsIGxhbmUpKTtcbn1cbmZ1bmN0aW9uIG1hcmtSZXRyeUxhbmVJbXBsKGZpYmVyLCByZXRyeUxhbmUpIHtcbiAgZmliZXIgPSBmaWJlci5tZW1vaXplZFN0YXRlO1xuICBpZiAobnVsbCAhPT0gZmliZXIgJiYgbnVsbCAhPT0gZmliZXIuZGVoeWRyYXRlZCkge1xuICAgIHZhciBhID0gZmliZXIucmV0cnlMYW5lO1xuICAgIGZpYmVyLnJldHJ5TGFuZSA9IDAgIT09IGEgJiYgYSA8IHJldHJ5TGFuZSA/IGEgOiByZXRyeUxhbmU7XG4gIH1cbn1cbmZ1bmN0aW9uIG1hcmtSZXRyeUxhbmVJZk5vdEh5ZHJhdGVkKGZpYmVyLCByZXRyeUxhbmUpIHtcbiAgbWFya1JldHJ5TGFuZUltcGwoZmliZXIsIHJldHJ5TGFuZSk7XG4gIChmaWJlciA9IGZpYmVyLmFsdGVybmF0ZSkgJiYgbWFya1JldHJ5TGFuZUltcGwoZmliZXIsIHJldHJ5TGFuZSk7XG59XG5mdW5jdGlvbiBhdHRlbXB0Q29udGludW91c0h5ZHJhdGlvbihmaWJlcikge1xuICBpZiAoMTMgPT09IGZpYmVyLnRhZykge1xuICAgIHZhciByb290ID0gZW5xdWV1ZUNvbmN1cnJlbnRSZW5kZXJGb3JMYW5lKGZpYmVyLCA2NzEwODg2NCk7XG4gICAgbnVsbCAhPT0gcm9vdCAmJiBzY2hlZHVsZVVwZGF0ZU9uRmliZXIocm9vdCwgZmliZXIsIDY3MTA4ODY0KTtcbiAgICBtYXJrUmV0cnlMYW5lSWZOb3RIeWRyYXRlZChmaWJlciwgNjcxMDg4NjQpO1xuICB9XG59XG52YXIgX2VuYWJsZWQgPSAhMDtcbmZ1bmN0aW9uIGRpc3BhdGNoRGlzY3JldGVFdmVudChcbiAgZG9tRXZlbnROYW1lLFxuICBldmVudFN5c3RlbUZsYWdzLFxuICBjb250YWluZXIsXG4gIG5hdGl2ZUV2ZW50XG4pIHtcbiAgdmFyIHByZXZUcmFuc2l0aW9uID0gUmVhY3RTaGFyZWRJbnRlcm5hbHMuVDtcbiAgUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IG51bGw7XG4gIHZhciBwcmV2aW91c1ByaW9yaXR5ID0gUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucDtcbiAgdHJ5IHtcbiAgICAoUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucCA9IDIpLFxuICAgICAgZGlzcGF0Y2hFdmVudChkb21FdmVudE5hbWUsIGV2ZW50U3lzdGVtRmxhZ3MsIGNvbnRhaW5lciwgbmF0aXZlRXZlbnQpO1xuICB9IGZpbmFsbHkge1xuICAgIChSZWFjdERPTVNoYXJlZEludGVybmFscy5wID0gcHJldmlvdXNQcmlvcml0eSksXG4gICAgICAoUmVhY3RTaGFyZWRJbnRlcm5hbHMuVCA9IHByZXZUcmFuc2l0aW9uKTtcbiAgfVxufVxuZnVuY3Rpb24gZGlzcGF0Y2hDb250aW51b3VzRXZlbnQoXG4gIGRvbUV2ZW50TmFtZSxcbiAgZXZlbnRTeXN0ZW1GbGFncyxcbiAgY29udGFpbmVyLFxuICBuYXRpdmVFdmVudFxuKSB7XG4gIHZhciBwcmV2VHJhbnNpdGlvbiA9IFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQ7XG4gIFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBudWxsO1xuICB2YXIgcHJldmlvdXNQcmlvcml0eSA9IFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnA7XG4gIHRyeSB7XG4gICAgKFJlYWN0RE9NU2hhcmVkSW50ZXJuYWxzLnAgPSA4KSxcbiAgICAgIGRpc3BhdGNoRXZlbnQoZG9tRXZlbnROYW1lLCBldmVudFN5c3RlbUZsYWdzLCBjb250YWluZXIsIG5hdGl2ZUV2ZW50KTtcbiAgfSBmaW5hbGx5IHtcbiAgICAoUmVhY3RET01TaGFyZWRJbnRlcm5hbHMucCA9IHByZXZpb3VzUHJpb3JpdHkpLFxuICAgICAgKFJlYWN0U2hhcmVkSW50ZXJuYWxzLlQgPSBwcmV2VHJhbnNpdGlvbik7XG4gIH1cbn1cbmZ1bmN0aW9uIGRpc3BhdGNoRXZlbnQoXG4gIGRvbUV2ZW50TmFtZSxcbiAgZXZlbnRTeXN0ZW1GbGFncyxcbiAgdGFyZ2V0Q29udGFpbmVyLFxuICBuYXRpdmVFdmVudFxuKSB7XG4gIGlmIChfZW5hYmxlZCkge1xuICAgIHZhciBibG9ja2VkT24gPSBmaW5kSW5zdGFuY2VCbG9ja2luZ0V2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgICBpZiAobnVsbCA9PT0gYmxvY2tlZE9uKVxuICAgICAgZGlzcGF0Y2hFdmVudEZvclBsdWdpbkV2ZW50U3lzdGVtKFxuICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgIGV2ZW50U3lzdGVtRmxhZ3MsXG4gICAgICAgIG5hdGl2ZUV2ZW50LFxuICAgICAgICByZXR1cm5fdGFyZ2V0SW5zdCxcbiAgICAgICAgdGFyZ2V0Q29udGFpbmVyXG4gICAgICApLFxuICAgICAgICBjbGVhcklmQ29udGludW91c0V2ZW50KGRvbUV2ZW50TmFtZSwgbmF0aXZlRXZlbnQpO1xuICAgIGVsc2UgaWYgKFxuICAgICAgcXVldWVJZkNvbnRpbnVvdXNFdmVudChcbiAgICAgICAgYmxvY2tlZE9uLFxuICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgIGV2ZW50U3lzdGVtRmxhZ3MsXG4gICAgICAgIHRhcmdldENvbnRhaW5lcixcbiAgICAgICAgbmF0aXZlRXZlbnRcbiAgICAgIClcbiAgICApXG4gICAgICBuYXRpdmVFdmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICBlbHNlIGlmIChcbiAgICAgIChjbGVhcklmQ29udGludW91c0V2ZW50KGRvbUV2ZW50TmFtZSwgbmF0aXZlRXZlbnQpLFxuICAgICAgZXZlbnRTeXN0ZW1GbGFncyAmIDQgJiZcbiAgICAgICAgLTEgPCBkaXNjcmV0ZVJlcGxheWFibGVFdmVudHMuaW5kZXhPZihkb21FdmVudE5hbWUpKVxuICAgICkge1xuICAgICAgZm9yICg7IG51bGwgIT09IGJsb2NrZWRPbjsgKSB7XG4gICAgICAgIHZhciBmaWJlciA9IGdldEluc3RhbmNlRnJvbU5vZGUoYmxvY2tlZE9uKTtcbiAgICAgICAgaWYgKG51bGwgIT09IGZpYmVyKVxuICAgICAgICAgIHN3aXRjaCAoZmliZXIudGFnKSB7XG4gICAgICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgICAgIGZpYmVyID0gZmliZXIuc3RhdGVOb2RlO1xuICAgICAgICAgICAgICBpZiAoZmliZXIuY3VycmVudC5tZW1vaXplZFN0YXRlLmlzRGVoeWRyYXRlZCkge1xuICAgICAgICAgICAgICAgIHZhciBsYW5lcyA9IGdldEhpZ2hlc3RQcmlvcml0eUxhbmVzKGZpYmVyLnBlbmRpbmdMYW5lcyk7XG4gICAgICAgICAgICAgICAgaWYgKDAgIT09IGxhbmVzKSB7XG4gICAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IGZpYmVyO1xuICAgICAgICAgICAgICAgICAgcm9vdC5wZW5kaW5nTGFuZXMgfD0gMjtcbiAgICAgICAgICAgICAgICAgIGZvciAocm9vdC5lbnRhbmdsZWRMYW5lcyB8PSAyOyBsYW5lczsgKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBsYW5lID0gMSA8PCAoMzEgLSBjbHozMihsYW5lcykpO1xuICAgICAgICAgICAgICAgICAgICByb290LmVudGFuZ2xlbWVudHNbMV0gfD0gbGFuZTtcbiAgICAgICAgICAgICAgICAgICAgbGFuZXMgJj0gfmxhbmU7XG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBlbnN1cmVSb290SXNTY2hlZHVsZWQoZmliZXIpO1xuICAgICAgICAgICAgICAgICAgMCA9PT0gKGV4ZWN1dGlvbkNvbnRleHQgJiA2KSAmJlxuICAgICAgICAgICAgICAgICAgICAoKHdvcmtJblByb2dyZXNzUm9vdFJlbmRlclRhcmdldFRpbWUgPSBub3coKSArIDUwMCksXG4gICAgICAgICAgICAgICAgICAgIGZsdXNoU3luY1dvcmtBY3Jvc3NSb290c19pbXBsKDAsICExKSk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgY2FzZSAxMzpcbiAgICAgICAgICAgICAgKHJvb3QgPSBlbnF1ZXVlQ29uY3VycmVudFJlbmRlckZvckxhbmUoZmliZXIsIDIpKSxcbiAgICAgICAgICAgICAgICBudWxsICE9PSByb290ICYmIHNjaGVkdWxlVXBkYXRlT25GaWJlcihyb290LCBmaWJlciwgMiksXG4gICAgICAgICAgICAgICAgZmx1c2hTeW5jV29yayQxKCksXG4gICAgICAgICAgICAgICAgbWFya1JldHJ5TGFuZUlmTm90SHlkcmF0ZWQoZmliZXIsIDIpO1xuICAgICAgICAgIH1cbiAgICAgICAgZmliZXIgPSBmaW5kSW5zdGFuY2VCbG9ja2luZ0V2ZW50KG5hdGl2ZUV2ZW50KTtcbiAgICAgICAgbnVsbCA9PT0gZmliZXIgJiZcbiAgICAgICAgICBkaXNwYXRjaEV2ZW50Rm9yUGx1Z2luRXZlbnRTeXN0ZW0oXG4gICAgICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgICAgICBldmVudFN5c3RlbUZsYWdzLFxuICAgICAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgICAgICByZXR1cm5fdGFyZ2V0SW5zdCxcbiAgICAgICAgICAgIHRhcmdldENvbnRhaW5lclxuICAgICAgICAgICk7XG4gICAgICAgIGlmIChmaWJlciA9PT0gYmxvY2tlZE9uKSBicmVhaztcbiAgICAgICAgYmxvY2tlZE9uID0gZmliZXI7XG4gICAgICB9XG4gICAgICBudWxsICE9PSBibG9ja2VkT24gJiYgbmF0aXZlRXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgfSBlbHNlXG4gICAgICBkaXNwYXRjaEV2ZW50Rm9yUGx1Z2luRXZlbnRTeXN0ZW0oXG4gICAgICAgIGRvbUV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRTeXN0ZW1GbGFncyxcbiAgICAgICAgbmF0aXZlRXZlbnQsXG4gICAgICAgIG51bGwsXG4gICAgICAgIHRhcmdldENvbnRhaW5lclxuICAgICAgKTtcbiAgfVxufVxuZnVuY3Rpb24gZmluZEluc3RhbmNlQmxvY2tpbmdFdmVudChuYXRpdmVFdmVudCkge1xuICBuYXRpdmVFdmVudCA9IGdldEV2ZW50VGFyZ2V0KG5hdGl2ZUV2ZW50KTtcbiAgcmV0dXJuIGZpbmRJbnN0YW5jZUJsb2NraW5nVGFyZ2V0KG5hdGl2ZUV2ZW50KTtcbn1cbnZhciByZXR1cm5fdGFyZ2V0SW5zdCA9IG51bGw7XG5mdW5jdGlvbiBmaW5kSW5zdGFuY2VCbG9ja2luZ1RhcmdldCh0YXJnZXROb2RlKSB7XG4gIHJldHVybl90YXJnZXRJbnN0ID0gbnVsbDtcbiAgdGFyZ2V0Tm9kZSA9IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHRhcmdldE5vZGUpO1xuICBpZiAobnVsbCAhPT0gdGFyZ2V0Tm9kZSkge1xuICAgIHZhciBuZWFyZXN0TW91bnRlZCA9IGdldE5lYXJlc3RNb3VudGVkRmliZXIodGFyZ2V0Tm9kZSk7XG4gICAgaWYgKG51bGwgPT09IG5lYXJlc3RNb3VudGVkKSB0YXJnZXROb2RlID0gbnVsbDtcbiAgICBlbHNlIHtcbiAgICAgIHZhciB0YWcgPSBuZWFyZXN0TW91bnRlZC50YWc7XG4gICAgICBpZiAoMTMgPT09IHRhZykge1xuICAgICAgICB0YXJnZXROb2RlID0gZ2V0U3VzcGVuc2VJbnN0YW5jZUZyb21GaWJlcihuZWFyZXN0TW91bnRlZCk7XG4gICAgICAgIGlmIChudWxsICE9PSB0YXJnZXROb2RlKSByZXR1cm4gdGFyZ2V0Tm9kZTtcbiAgICAgICAgdGFyZ2V0Tm9kZSA9IG51bGw7XG4gICAgICB9IGVsc2UgaWYgKDMgPT09IHRhZykge1xuICAgICAgICBpZiAobmVhcmVzdE1vdW50ZWQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWQpXG4gICAgICAgICAgcmV0dXJuIDMgPT09IG5lYXJlc3RNb3VudGVkLnRhZ1xuICAgICAgICAgICAgPyBuZWFyZXN0TW91bnRlZC5zdGF0ZU5vZGUuY29udGFpbmVySW5mb1xuICAgICAgICAgICAgOiBudWxsO1xuICAgICAgICB0YXJnZXROb2RlID0gbnVsbDtcbiAgICAgIH0gZWxzZSBuZWFyZXN0TW91bnRlZCAhPT0gdGFyZ2V0Tm9kZSAmJiAodGFyZ2V0Tm9kZSA9IG51bGwpO1xuICAgIH1cbiAgfVxuICByZXR1cm5fdGFyZ2V0SW5zdCA9IHRhcmdldE5vZGU7XG4gIHJldHVybiBudWxsO1xufVxuZnVuY3Rpb24gZ2V0RXZlbnRQcmlvcml0eShkb21FdmVudE5hbWUpIHtcbiAgc3dpdGNoIChkb21FdmVudE5hbWUpIHtcbiAgICBjYXNlIFwiYmVmb3JldG9nZ2xlXCI6XG4gICAgY2FzZSBcImNhbmNlbFwiOlxuICAgIGNhc2UgXCJjbGlja1wiOlxuICAgIGNhc2UgXCJjbG9zZVwiOlxuICAgIGNhc2UgXCJjb250ZXh0bWVudVwiOlxuICAgIGNhc2UgXCJjb3B5XCI6XG4gICAgY2FzZSBcImN1dFwiOlxuICAgIGNhc2UgXCJhdXhjbGlja1wiOlxuICAgIGNhc2UgXCJkYmxjbGlja1wiOlxuICAgIGNhc2UgXCJkcmFnZW5kXCI6XG4gICAgY2FzZSBcImRyYWdzdGFydFwiOlxuICAgIGNhc2UgXCJkcm9wXCI6XG4gICAgY2FzZSBcImZvY3VzaW5cIjpcbiAgICBjYXNlIFwiZm9jdXNvdXRcIjpcbiAgICBjYXNlIFwiaW5wdXRcIjpcbiAgICBjYXNlIFwiaW52YWxpZFwiOlxuICAgIGNhc2UgXCJrZXlkb3duXCI6XG4gICAgY2FzZSBcImtleXByZXNzXCI6XG4gICAgY2FzZSBcImtleXVwXCI6XG4gICAgY2FzZSBcIm1vdXNlZG93blwiOlxuICAgIGNhc2UgXCJtb3VzZXVwXCI6XG4gICAgY2FzZSBcInBhc3RlXCI6XG4gICAgY2FzZSBcInBhdXNlXCI6XG4gICAgY2FzZSBcInBsYXlcIjpcbiAgICBjYXNlIFwicG9pbnRlcmNhbmNlbFwiOlxuICAgIGNhc2UgXCJwb2ludGVyZG93blwiOlxuICAgIGNhc2UgXCJwb2ludGVydXBcIjpcbiAgICBjYXNlIFwicmF0ZWNoYW5nZVwiOlxuICAgIGNhc2UgXCJyZXNldFwiOlxuICAgIGNhc2UgXCJyZXNpemVcIjpcbiAgICBjYXNlIFwic2Vla2VkXCI6XG4gICAgY2FzZSBcInN1Ym1pdFwiOlxuICAgIGNhc2UgXCJ0b2dnbGVcIjpcbiAgICBjYXNlIFwidG91Y2hjYW5jZWxcIjpcbiAgICBjYXNlIFwidG91Y2hlbmRcIjpcbiAgICBjYXNlIFwidG91Y2hzdGFydFwiOlxuICAgIGNhc2UgXCJ2b2x1bWVjaGFuZ2VcIjpcbiAgICBjYXNlIFwiY2hhbmdlXCI6XG4gICAgY2FzZSBcInNlbGVjdGlvbmNoYW5nZVwiOlxuICAgIGNhc2UgXCJ0ZXh0SW5wdXRcIjpcbiAgICBjYXNlIFwiY29tcG9zaXRpb25zdGFydFwiOlxuICAgIGNhc2UgXCJjb21wb3NpdGlvbmVuZFwiOlxuICAgIGNhc2UgXCJjb21wb3NpdGlvbnVwZGF0ZVwiOlxuICAgIGNhc2UgXCJiZWZvcmVibHVyXCI6XG4gICAgY2FzZSBcImFmdGVyYmx1clwiOlxuICAgIGNhc2UgXCJiZWZvcmVpbnB1dFwiOlxuICAgIGNhc2UgXCJibHVyXCI6XG4gICAgY2FzZSBcImZ1bGxzY3JlZW5jaGFuZ2VcIjpcbiAgICBjYXNlIFwiZm9jdXNcIjpcbiAgICBjYXNlIFwiaGFzaGNoYW5nZVwiOlxuICAgIGNhc2UgXCJwb3BzdGF0ZVwiOlxuICAgIGNhc2UgXCJzZWxlY3RcIjpcbiAgICBjYXNlIFwic2VsZWN0c3RhcnRcIjpcbiAgICAgIHJldHVybiAyO1xuICAgIGNhc2UgXCJkcmFnXCI6XG4gICAgY2FzZSBcImRyYWdlbnRlclwiOlxuICAgIGNhc2UgXCJkcmFnZXhpdFwiOlxuICAgIGNhc2UgXCJkcmFnbGVhdmVcIjpcbiAgICBjYXNlIFwiZHJhZ292ZXJcIjpcbiAgICBjYXNlIFwibW91c2Vtb3ZlXCI6XG4gICAgY2FzZSBcIm1vdXNlb3V0XCI6XG4gICAgY2FzZSBcIm1vdXNlb3ZlclwiOlxuICAgIGNhc2UgXCJwb2ludGVybW92ZVwiOlxuICAgIGNhc2UgXCJwb2ludGVyb3V0XCI6XG4gICAgY2FzZSBcInBvaW50ZXJvdmVyXCI6XG4gICAgY2FzZSBcInNjcm9sbFwiOlxuICAgIGNhc2UgXCJ0b3VjaG1vdmVcIjpcbiAgICBjYXNlIFwid2hlZWxcIjpcbiAgICBjYXNlIFwibW91c2VlbnRlclwiOlxuICAgIGNhc2UgXCJtb3VzZWxlYXZlXCI6XG4gICAgY2FzZSBcInBvaW50ZXJlbnRlclwiOlxuICAgIGNhc2UgXCJwb2ludGVybGVhdmVcIjpcbiAgICAgIHJldHVybiA4O1xuICAgIGNhc2UgXCJtZXNzYWdlXCI6XG4gICAgICBzd2l0Y2ggKGdldEN1cnJlbnRQcmlvcml0eUxldmVsKCkpIHtcbiAgICAgICAgY2FzZSBJbW1lZGlhdGVQcmlvcml0eTpcbiAgICAgICAgICByZXR1cm4gMjtcbiAgICAgICAgY2FzZSBVc2VyQmxvY2tpbmdQcmlvcml0eTpcbiAgICAgICAgICByZXR1cm4gODtcbiAgICAgICAgY2FzZSBOb3JtYWxQcmlvcml0eSQxOlxuICAgICAgICBjYXNlIExvd1ByaW9yaXR5OlxuICAgICAgICAgIHJldHVybiAzMjtcbiAgICAgICAgY2FzZSBJZGxlUHJpb3JpdHk6XG4gICAgICAgICAgcmV0dXJuIDI2ODQzNTQ1NjtcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICByZXR1cm4gMzI7XG4gICAgICB9XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiAzMjtcbiAgfVxufVxudmFyIGhhc1NjaGVkdWxlZFJlcGxheUF0dGVtcHQgPSAhMSxcbiAgcXVldWVkRm9jdXMgPSBudWxsLFxuICBxdWV1ZWREcmFnID0gbnVsbCxcbiAgcXVldWVkTW91c2UgPSBudWxsLFxuICBxdWV1ZWRQb2ludGVycyA9IG5ldyBNYXAoKSxcbiAgcXVldWVkUG9pbnRlckNhcHR1cmVzID0gbmV3IE1hcCgpLFxuICBxdWV1ZWRFeHBsaWNpdEh5ZHJhdGlvblRhcmdldHMgPSBbXSxcbiAgZGlzY3JldGVSZXBsYXlhYmxlRXZlbnRzID1cbiAgICBcIm1vdXNlZG93biBtb3VzZXVwIHRvdWNoY2FuY2VsIHRvdWNoZW5kIHRvdWNoc3RhcnQgYXV4Y2xpY2sgZGJsY2xpY2sgcG9pbnRlcmNhbmNlbCBwb2ludGVyZG93biBwb2ludGVydXAgZHJhZ2VuZCBkcmFnc3RhcnQgZHJvcCBjb21wb3NpdGlvbmVuZCBjb21wb3NpdGlvbnN0YXJ0IGtleWRvd24ga2V5cHJlc3Mga2V5dXAgaW5wdXQgdGV4dElucHV0IGNvcHkgY3V0IHBhc3RlIGNsaWNrIGNoYW5nZSBjb250ZXh0bWVudSByZXNldFwiLnNwbGl0KFxuICAgICAgXCIgXCJcbiAgICApO1xuZnVuY3Rpb24gY2xlYXJJZkNvbnRpbnVvdXNFdmVudChkb21FdmVudE5hbWUsIG5hdGl2ZUV2ZW50KSB7XG4gIHN3aXRjaCAoZG9tRXZlbnROYW1lKSB7XG4gICAgY2FzZSBcImZvY3VzaW5cIjpcbiAgICBjYXNlIFwiZm9jdXNvdXRcIjpcbiAgICAgIHF1ZXVlZEZvY3VzID0gbnVsbDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJkcmFnZW50ZXJcIjpcbiAgICBjYXNlIFwiZHJhZ2xlYXZlXCI6XG4gICAgICBxdWV1ZWREcmFnID0gbnVsbDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJtb3VzZW92ZXJcIjpcbiAgICBjYXNlIFwibW91c2VvdXRcIjpcbiAgICAgIHF1ZXVlZE1vdXNlID0gbnVsbDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJwb2ludGVyb3ZlclwiOlxuICAgIGNhc2UgXCJwb2ludGVyb3V0XCI6XG4gICAgICBxdWV1ZWRQb2ludGVycy5kZWxldGUobmF0aXZlRXZlbnQucG9pbnRlcklkKTtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOlxuICAgIGNhc2UgXCJsb3N0cG9pbnRlcmNhcHR1cmVcIjpcbiAgICAgIHF1ZXVlZFBvaW50ZXJDYXB0dXJlcy5kZWxldGUobmF0aXZlRXZlbnQucG9pbnRlcklkKTtcbiAgfVxufVxuZnVuY3Rpb24gYWNjdW11bGF0ZU9yQ3JlYXRlQ29udGludW91c1F1ZXVlZFJlcGxheWFibGVFdmVudChcbiAgZXhpc3RpbmdRdWV1ZWRFdmVudCxcbiAgYmxvY2tlZE9uLFxuICBkb21FdmVudE5hbWUsXG4gIGV2ZW50U3lzdGVtRmxhZ3MsXG4gIHRhcmdldENvbnRhaW5lcixcbiAgbmF0aXZlRXZlbnRcbikge1xuICBpZiAoXG4gICAgbnVsbCA9PT0gZXhpc3RpbmdRdWV1ZWRFdmVudCB8fFxuICAgIGV4aXN0aW5nUXVldWVkRXZlbnQubmF0aXZlRXZlbnQgIT09IG5hdGl2ZUV2ZW50XG4gIClcbiAgICByZXR1cm4gKFxuICAgICAgKGV4aXN0aW5nUXVldWVkRXZlbnQgPSB7XG4gICAgICAgIGJsb2NrZWRPbjogYmxvY2tlZE9uLFxuICAgICAgICBkb21FdmVudE5hbWU6IGRvbUV2ZW50TmFtZSxcbiAgICAgICAgZXZlbnRTeXN0ZW1GbGFnczogZXZlbnRTeXN0ZW1GbGFncyxcbiAgICAgICAgbmF0aXZlRXZlbnQ6IG5hdGl2ZUV2ZW50LFxuICAgICAgICB0YXJnZXRDb250YWluZXJzOiBbdGFyZ2V0Q29udGFpbmVyXVxuICAgICAgfSksXG4gICAgICBudWxsICE9PSBibG9ja2VkT24gJiZcbiAgICAgICAgKChibG9ja2VkT24gPSBnZXRJbnN0YW5jZUZyb21Ob2RlKGJsb2NrZWRPbikpLFxuICAgICAgICBudWxsICE9PSBibG9ja2VkT24gJiYgYXR0ZW1wdENvbnRpbnVvdXNIeWRyYXRpb24oYmxvY2tlZE9uKSksXG4gICAgICBleGlzdGluZ1F1ZXVlZEV2ZW50XG4gICAgKTtcbiAgZXhpc3RpbmdRdWV1ZWRFdmVudC5ldmVudFN5c3RlbUZsYWdzIHw9IGV2ZW50U3lzdGVtRmxhZ3M7XG4gIGJsb2NrZWRPbiA9IGV4aXN0aW5nUXVldWVkRXZlbnQudGFyZ2V0Q29udGFpbmVycztcbiAgbnVsbCAhPT0gdGFyZ2V0Q29udGFpbmVyICYmXG4gICAgLTEgPT09IGJsb2NrZWRPbi5pbmRleE9mKHRhcmdldENvbnRhaW5lcikgJiZcbiAgICBibG9ja2VkT24ucHVzaCh0YXJnZXRDb250YWluZXIpO1xuICByZXR1cm4gZXhpc3RpbmdRdWV1ZWRFdmVudDtcbn1cbmZ1bmN0aW9uIHF1ZXVlSWZDb250aW51b3VzRXZlbnQoXG4gIGJsb2NrZWRPbixcbiAgZG9tRXZlbnROYW1lLFxuICBldmVudFN5c3RlbUZsYWdzLFxuICB0YXJnZXRDb250YWluZXIsXG4gIG5hdGl2ZUV2ZW50XG4pIHtcbiAgc3dpdGNoIChkb21FdmVudE5hbWUpIHtcbiAgICBjYXNlIFwiZm9jdXNpblwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKHF1ZXVlZEZvY3VzID0gYWNjdW11bGF0ZU9yQ3JlYXRlQ29udGludW91c1F1ZXVlZFJlcGxheWFibGVFdmVudChcbiAgICAgICAgICBxdWV1ZWRGb2N1cyxcbiAgICAgICAgICBibG9ja2VkT24sXG4gICAgICAgICAgZG9tRXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50U3lzdGVtRmxhZ3MsXG4gICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLFxuICAgICAgICAgIG5hdGl2ZUV2ZW50XG4gICAgICAgICkpLFxuICAgICAgICAhMFxuICAgICAgKTtcbiAgICBjYXNlIFwiZHJhZ2VudGVyXCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAocXVldWVkRHJhZyA9IGFjY3VtdWxhdGVPckNyZWF0ZUNvbnRpbnVvdXNRdWV1ZWRSZXBsYXlhYmxlRXZlbnQoXG4gICAgICAgICAgcXVldWVkRHJhZyxcbiAgICAgICAgICBibG9ja2VkT24sXG4gICAgICAgICAgZG9tRXZlbnROYW1lLFxuICAgICAgICAgIGV2ZW50U3lzdGVtRmxhZ3MsXG4gICAgICAgICAgdGFyZ2V0Q29udGFpbmVyLFxuICAgICAgICAgIG5hdGl2ZUV2ZW50XG4gICAgICAgICkpLFxuICAgICAgICAhMFxuICAgICAgKTtcbiAgICBjYXNlIFwibW91c2VvdmVyXCI6XG4gICAgICByZXR1cm4gKFxuICAgICAgICAocXVldWVkTW91c2UgPSBhY2N1bXVsYXRlT3JDcmVhdGVDb250aW51b3VzUXVldWVkUmVwbGF5YWJsZUV2ZW50KFxuICAgICAgICAgIHF1ZXVlZE1vdXNlLFxuICAgICAgICAgIGJsb2NrZWRPbixcbiAgICAgICAgICBkb21FdmVudE5hbWUsXG4gICAgICAgICAgZXZlbnRTeXN0ZW1GbGFncyxcbiAgICAgICAgICB0YXJnZXRDb250YWluZXIsXG4gICAgICAgICAgbmF0aXZlRXZlbnRcbiAgICAgICAgKSksXG4gICAgICAgICEwXG4gICAgICApO1xuICAgIGNhc2UgXCJwb2ludGVyb3ZlclwiOlxuICAgICAgdmFyIHBvaW50ZXJJZCA9IG5hdGl2ZUV2ZW50LnBvaW50ZXJJZDtcbiAgICAgIHF1ZXVlZFBvaW50ZXJzLnNldChcbiAgICAgICAgcG9pbnRlcklkLFxuICAgICAgICBhY2N1bXVsYXRlT3JDcmVhdGVDb250aW51b3VzUXVldWVkUmVwbGF5YWJsZUV2ZW50KFxuICAgICAgICAgIHF1ZXVlZFBvaW50ZXJzLmdldChwb2ludGVySWQpIHx8IG51bGwsXG4gICAgICAgICAgYmxvY2tlZE9uLFxuICAgICAgICAgIGRvbUV2ZW50TmFtZSxcbiAgICAgICAgICBldmVudFN5c3RlbUZsYWdzLFxuICAgICAgICAgIHRhcmdldENvbnRhaW5lcixcbiAgICAgICAgICBuYXRpdmVFdmVudFxuICAgICAgICApXG4gICAgICApO1xuICAgICAgcmV0dXJuICEwO1xuICAgIGNhc2UgXCJnb3Rwb2ludGVyY2FwdHVyZVwiOlxuICAgICAgcmV0dXJuIChcbiAgICAgICAgKHBvaW50ZXJJZCA9IG5hdGl2ZUV2ZW50LnBvaW50ZXJJZCksXG4gICAgICAgIHF1ZXVlZFBvaW50ZXJDYXB0dXJlcy5zZXQoXG4gICAgICAgICAgcG9pbnRlcklkLFxuICAgICAgICAgIGFjY3VtdWxhdGVPckNyZWF0ZUNvbnRpbnVvdXNRdWV1ZWRSZXBsYXlhYmxlRXZlbnQoXG4gICAgICAgICAgICBxdWV1ZWRQb2ludGVyQ2FwdHVyZXMuZ2V0KHBvaW50ZXJJZCkgfHwgbnVsbCxcbiAgICAgICAgICAgIGJsb2NrZWRPbixcbiAgICAgICAgICAgIGRvbUV2ZW50TmFtZSxcbiAgICAgICAgICAgIGV2ZW50U3lzdGVtRmxhZ3MsXG4gICAgICAgICAgICB0YXJnZXRDb250YWluZXIsXG4gICAgICAgICAgICBuYXRpdmVFdmVudFxuICAgICAgICAgIClcbiAgICAgICAgKSxcbiAgICAgICAgITBcbiAgICAgICk7XG4gIH1cbiAgcmV0dXJuICExO1xufVxuZnVuY3Rpb24gYXR0ZW1wdEV4cGxpY2l0SHlkcmF0aW9uVGFyZ2V0KHF1ZXVlZFRhcmdldCkge1xuICB2YXIgdGFyZ2V0SW5zdCA9IGdldENsb3Nlc3RJbnN0YW5jZUZyb21Ob2RlKHF1ZXVlZFRhcmdldC50YXJnZXQpO1xuICBpZiAobnVsbCAhPT0gdGFyZ2V0SW5zdCkge1xuICAgIHZhciBuZWFyZXN0TW91bnRlZCA9IGdldE5lYXJlc3RNb3VudGVkRmliZXIodGFyZ2V0SW5zdCk7XG4gICAgaWYgKG51bGwgIT09IG5lYXJlc3RNb3VudGVkKVxuICAgICAgaWYgKCgodGFyZ2V0SW5zdCA9IG5lYXJlc3RNb3VudGVkLnRhZyksIDEzID09PSB0YXJnZXRJbnN0KSkge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgKCh0YXJnZXRJbnN0ID0gZ2V0U3VzcGVuc2VJbnN0YW5jZUZyb21GaWJlcihuZWFyZXN0TW91bnRlZCkpLFxuICAgICAgICAgIG51bGwgIT09IHRhcmdldEluc3QpXG4gICAgICAgICkge1xuICAgICAgICAgIHF1ZXVlZFRhcmdldC5ibG9ja2VkT24gPSB0YXJnZXRJbnN0O1xuICAgICAgICAgIHJ1bldpdGhQcmlvcml0eShxdWV1ZWRUYXJnZXQucHJpb3JpdHksIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICgxMyA9PT0gbmVhcmVzdE1vdW50ZWQudGFnKSB7XG4gICAgICAgICAgICAgIHZhciBsYW5lID0gcmVxdWVzdFVwZGF0ZUxhbmUoKSxcbiAgICAgICAgICAgICAgICByb290ID0gZW5xdWV1ZUNvbmN1cnJlbnRSZW5kZXJGb3JMYW5lKG5lYXJlc3RNb3VudGVkLCBsYW5lKTtcbiAgICAgICAgICAgICAgbnVsbCAhPT0gcm9vdCAmJlxuICAgICAgICAgICAgICAgIHNjaGVkdWxlVXBkYXRlT25GaWJlcihyb290LCBuZWFyZXN0TW91bnRlZCwgbGFuZSk7XG4gICAgICAgICAgICAgIG1hcmtSZXRyeUxhbmVJZk5vdEh5ZHJhdGVkKG5lYXJlc3RNb3VudGVkLCBsYW5lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoXG4gICAgICAgIDMgPT09IHRhcmdldEluc3QgJiZcbiAgICAgICAgbmVhcmVzdE1vdW50ZWQuc3RhdGVOb2RlLmN1cnJlbnQubWVtb2l6ZWRTdGF0ZS5pc0RlaHlkcmF0ZWRcbiAgICAgICkge1xuICAgICAgICBxdWV1ZWRUYXJnZXQuYmxvY2tlZE9uID1cbiAgICAgICAgICAzID09PSBuZWFyZXN0TW91bnRlZC50YWdcbiAgICAgICAgICAgID8gbmVhcmVzdE1vdW50ZWQuc3RhdGVOb2RlLmNvbnRhaW5lckluZm9cbiAgICAgICAgICAgIDogbnVsbDtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICB9XG4gIHF1ZXVlZFRhcmdldC5ibG9ja2VkT24gPSBudWxsO1xufVxuZnVuY3Rpb24gYXR0ZW1wdFJlcGxheUNvbnRpbnVvdXNRdWV1ZWRFdmVudChxdWV1ZWRFdmVudCkge1xuICBpZiAobnVsbCAhPT0gcXVldWVkRXZlbnQuYmxvY2tlZE9uKSByZXR1cm4gITE7XG4gIGZvciAoXG4gICAgdmFyIHRhcmdldENvbnRhaW5lcnMgPSBxdWV1ZWRFdmVudC50YXJnZXRDb250YWluZXJzO1xuICAgIDAgPCB0YXJnZXRDb250YWluZXJzLmxlbmd0aDtcblxuICApIHtcbiAgICB2YXIgbmV4dEJsb2NrZWRPbiA9IGZpbmRJbnN0YW5jZUJsb2NraW5nRXZlbnQocXVldWVkRXZlbnQubmF0aXZlRXZlbnQpO1xuICAgIGlmIChudWxsID09PSBuZXh0QmxvY2tlZE9uKSB7XG4gICAgICBuZXh0QmxvY2tlZE9uID0gcXVldWVkRXZlbnQubmF0aXZlRXZlbnQ7XG4gICAgICB2YXIgbmF0aXZlRXZlbnRDbG9uZSA9IG5ldyBuZXh0QmxvY2tlZE9uLmNvbnN0cnVjdG9yKFxuICAgICAgICBuZXh0QmxvY2tlZE9uLnR5cGUsXG4gICAgICAgIG5leHRCbG9ja2VkT25cbiAgICAgICk7XG4gICAgICBjdXJyZW50UmVwbGF5aW5nRXZlbnQgPSBuYXRpdmVFdmVudENsb25lO1xuICAgICAgbmV4dEJsb2NrZWRPbi50YXJnZXQuZGlzcGF0Y2hFdmVudChuYXRpdmVFdmVudENsb25lKTtcbiAgICAgIGN1cnJlbnRSZXBsYXlpbmdFdmVudCA9IG51bGw7XG4gICAgfSBlbHNlXG4gICAgICByZXR1cm4gKFxuICAgICAgICAodGFyZ2V0Q29udGFpbmVycyA9IGdldEluc3RhbmNlRnJvbU5vZGUobmV4dEJsb2NrZWRPbikpLFxuICAgICAgICBudWxsICE9PSB0YXJnZXRDb250YWluZXJzICYmXG4gICAgICAgICAgYXR0ZW1wdENvbnRpbnVvdXNIeWRyYXRpb24odGFyZ2V0Q29udGFpbmVycyksXG4gICAgICAgIChxdWV1ZWRFdmVudC5ibG9ja2VkT24gPSBuZXh0QmxvY2tlZE9uKSxcbiAgICAgICAgITFcbiAgICAgICk7XG4gICAgdGFyZ2V0Q29udGFpbmVycy5zaGlmdCgpO1xuICB9XG4gIHJldHVybiAhMDtcbn1cbmZ1bmN0aW9uIGF0dGVtcHRSZXBsYXlDb250aW51b3VzUXVldWVkRXZlbnRJbk1hcChxdWV1ZWRFdmVudCwga2V5LCBtYXApIHtcbiAgYXR0ZW1wdFJlcGxheUNvbnRpbnVvdXNRdWV1ZWRFdmVudChxdWV1ZWRFdmVudCkgJiYgbWFwLmRlbGV0ZShrZXkpO1xufVxuZnVuY3Rpb24gcmVwbGF5VW5ibG9ja2VkRXZlbnRzKCkge1xuICBoYXNTY2hlZHVsZWRSZXBsYXlBdHRlbXB0ID0gITE7XG4gIG51bGwgIT09IHF1ZXVlZEZvY3VzICYmXG4gICAgYXR0ZW1wdFJlcGxheUNvbnRpbnVvdXNRdWV1ZWRFdmVudChxdWV1ZWRGb2N1cykgJiZcbiAgICAocXVldWVkRm9jdXMgPSBudWxsKTtcbiAgbnVsbCAhPT0gcXVldWVkRHJhZyAmJlxuICAgIGF0dGVtcHRSZXBsYXlDb250aW51b3VzUXVldWVkRXZlbnQocXVldWVkRHJhZykgJiZcbiAgICAocXVldWVkRHJhZyA9IG51bGwpO1xuICBudWxsICE9PSBxdWV1ZWRNb3VzZSAmJlxuICAgIGF0dGVtcHRSZXBsYXlDb250aW51b3VzUXVldWVkRXZlbnQocXVldWVkTW91c2UpICYmXG4gICAgKHF1ZXVlZE1vdXNlID0gbnVsbCk7XG4gIHF1ZXVlZFBvaW50ZXJzLmZvckVhY2goYXR0ZW1wdFJlcGxheUNvbnRpbnVvdXNRdWV1ZWRFdmVudEluTWFwKTtcbiAgcXVldWVkUG9pbnRlckNhcHR1cmVzLmZvckVhY2goYXR0ZW1wdFJlcGxheUNvbnRpbnVvdXNRdWV1ZWRFdmVudEluTWFwKTtcbn1cbmZ1bmN0aW9uIHNjaGVkdWxlQ2FsbGJhY2tJZlVuYmxvY2tlZChxdWV1ZWRFdmVudCwgdW5ibG9ja2VkKSB7XG4gIHF1ZXVlZEV2ZW50LmJsb2NrZWRPbiA9PT0gdW5ibG9ja2VkICYmXG4gICAgKChxdWV1ZWRFdmVudC5ibG9ja2VkT24gPSBudWxsKSxcbiAgICBoYXNTY2hlZHVsZWRSZXBsYXlBdHRlbXB0IHx8XG4gICAgICAoKGhhc1NjaGVkdWxlZFJlcGxheUF0dGVtcHQgPSAhMCksXG4gICAgICBTY2hlZHVsZXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhcbiAgICAgICAgU2NoZWR1bGVyLnVuc3RhYmxlX05vcm1hbFByaW9yaXR5LFxuICAgICAgICByZXBsYXlVbmJsb2NrZWRFdmVudHNcbiAgICAgICkpKTtcbn1cbnZhciBsYXN0U2NoZWR1bGVkUmVwbGF5UXVldWUgPSBudWxsO1xuZnVuY3Rpb24gc2NoZWR1bGVSZXBsYXlRdWV1ZUlmTmVlZGVkKGZvcm1SZXBsYXlpbmdRdWV1ZSkge1xuICBsYXN0U2NoZWR1bGVkUmVwbGF5UXVldWUgIT09IGZvcm1SZXBsYXlpbmdRdWV1ZSAmJlxuICAgICgobGFzdFNjaGVkdWxlZFJlcGxheVF1ZXVlID0gZm9ybVJlcGxheWluZ1F1ZXVlKSxcbiAgICBTY2hlZHVsZXIudW5zdGFibGVfc2NoZWR1bGVDYWxsYmFjayhcbiAgICAgIFNjaGVkdWxlci51bnN0YWJsZV9Ob3JtYWxQcmlvcml0eSxcbiAgICAgIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbGFzdFNjaGVkdWxlZFJlcGxheVF1ZXVlID09PSBmb3JtUmVwbGF5aW5nUXVldWUgJiZcbiAgICAgICAgICAobGFzdFNjaGVkdWxlZFJlcGxheVF1ZXVlID0gbnVsbCk7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZm9ybVJlcGxheWluZ1F1ZXVlLmxlbmd0aDsgaSArPSAzKSB7XG4gICAgICAgICAgdmFyIGZvcm0gPSBmb3JtUmVwbGF5aW5nUXVldWVbaV0sXG4gICAgICAgICAgICBzdWJtaXR0ZXJPckFjdGlvbiA9IGZvcm1SZXBsYXlpbmdRdWV1ZVtpICsgMV0sXG4gICAgICAgICAgICBmb3JtRGF0YSA9IGZvcm1SZXBsYXlpbmdRdWV1ZVtpICsgMl07XG4gICAgICAgICAgaWYgKFwiZnVuY3Rpb25cIiAhPT0gdHlwZW9mIHN1Ym1pdHRlck9yQWN0aW9uKVxuICAgICAgICAgICAgaWYgKG51bGwgPT09IGZpbmRJbnN0YW5jZUJsb2NraW5nVGFyZ2V0KHN1Ym1pdHRlck9yQWN0aW9uIHx8IGZvcm0pKVxuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIGVsc2UgYnJlYWs7XG4gICAgICAgICAgdmFyIGZvcm1JbnN0ID0gZ2V0SW5zdGFuY2VGcm9tTm9kZShmb3JtKTtcbiAgICAgICAgICBudWxsICE9PSBmb3JtSW5zdCAmJlxuICAgICAgICAgICAgKGZvcm1SZXBsYXlpbmdRdWV1ZS5zcGxpY2UoaSwgMyksXG4gICAgICAgICAgICAoaSAtPSAzKSxcbiAgICAgICAgICAgIHN0YXJ0SG9zdFRyYW5zaXRpb24oXG4gICAgICAgICAgICAgIGZvcm1JbnN0LFxuICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgcGVuZGluZzogITAsXG4gICAgICAgICAgICAgICAgZGF0YTogZm9ybURhdGEsXG4gICAgICAgICAgICAgICAgbWV0aG9kOiBmb3JtLm1ldGhvZCxcbiAgICAgICAgICAgICAgICBhY3Rpb246IHN1Ym1pdHRlck9yQWN0aW9uXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgIHN1Ym1pdHRlck9yQWN0aW9uLFxuICAgICAgICAgICAgICBmb3JtRGF0YVxuICAgICAgICAgICAgKSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICApKTtcbn1cbmZ1bmN0aW9uIHJldHJ5SWZCbG9ja2VkT24odW5ibG9ja2VkKSB7XG4gIGZ1bmN0aW9uIHVuYmxvY2socXVldWVkRXZlbnQpIHtcbiAgICByZXR1cm4gc2NoZWR1bGVDYWxsYmFja0lmVW5ibG9ja2VkKHF1ZXVlZEV2ZW50LCB1bmJsb2NrZWQpO1xuICB9XG4gIG51bGwgIT09IHF1ZXVlZEZvY3VzICYmIHNjaGVkdWxlQ2FsbGJhY2tJZlVuYmxvY2tlZChxdWV1ZWRGb2N1cywgdW5ibG9ja2VkKTtcbiAgbnVsbCAhPT0gcXVldWVkRHJhZyAmJiBzY2hlZHVsZUNhbGxiYWNrSWZVbmJsb2NrZWQocXVldWVkRHJhZywgdW5ibG9ja2VkKTtcbiAgbnVsbCAhPT0gcXVldWVkTW91c2UgJiYgc2NoZWR1bGVDYWxsYmFja0lmVW5ibG9ja2VkKHF1ZXVlZE1vdXNlLCB1bmJsb2NrZWQpO1xuICBxdWV1ZWRQb2ludGVycy5mb3JFYWNoKHVuYmxvY2spO1xuICBxdWV1ZWRQb2ludGVyQ2FwdHVyZXMuZm9yRWFjaCh1bmJsb2NrKTtcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZWRFeHBsaWNpdEh5ZHJhdGlvblRhcmdldHMubGVuZ3RoOyBpKyspIHtcbiAgICB2YXIgcXVldWVkVGFyZ2V0ID0gcXVldWVkRXhwbGljaXRIeWRyYXRpb25UYXJnZXRzW2ldO1xuICAgIHF1ZXVlZFRhcmdldC5ibG9ja2VkT24gPT09IHVuYmxvY2tlZCAmJiAocXVldWVkVGFyZ2V0LmJsb2NrZWRPbiA9IG51bGwpO1xuICB9XG4gIGZvciAoXG4gICAgO1xuICAgIDAgPCBxdWV1ZWRFeHBsaWNpdEh5ZHJhdGlvblRhcmdldHMubGVuZ3RoICYmXG4gICAgKChpID0gcXVldWVkRXhwbGljaXRIeWRyYXRpb25UYXJnZXRzWzBdKSwgbnVsbCA9PT0gaS5ibG9ja2VkT24pO1xuXG4gIClcbiAgICBhdHRlbXB0RXhwbGljaXRIeWRyYXRpb25UYXJnZXQoaSksXG4gICAgICBudWxsID09PSBpLmJsb2NrZWRPbiAmJiBxdWV1ZWRFeHBsaWNpdEh5ZHJhdGlvblRhcmdldHMuc2hpZnQoKTtcbiAgaSA9ICh1bmJsb2NrZWQub3duZXJEb2N1bWVudCB8fCB1bmJsb2NrZWQpLiQkcmVhY3RGb3JtUmVwbGF5O1xuICBpZiAobnVsbCAhPSBpKVxuICAgIGZvciAocXVldWVkVGFyZ2V0ID0gMDsgcXVldWVkVGFyZ2V0IDwgaS5sZW5ndGg7IHF1ZXVlZFRhcmdldCArPSAzKSB7XG4gICAgICB2YXIgZm9ybSA9IGlbcXVldWVkVGFyZ2V0XSxcbiAgICAgICAgc3VibWl0dGVyT3JBY3Rpb24gPSBpW3F1ZXVlZFRhcmdldCArIDFdLFxuICAgICAgICBmb3JtUHJvcHMgPSBmb3JtW2ludGVybmFsUHJvcHNLZXldIHx8IG51bGw7XG4gICAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2Ygc3VibWl0dGVyT3JBY3Rpb24pXG4gICAgICAgIGZvcm1Qcm9wcyB8fCBzY2hlZHVsZVJlcGxheVF1ZXVlSWZOZWVkZWQoaSk7XG4gICAgICBlbHNlIGlmIChmb3JtUHJvcHMpIHtcbiAgICAgICAgdmFyIGFjdGlvbiA9IG51bGw7XG4gICAgICAgIGlmIChzdWJtaXR0ZXJPckFjdGlvbiAmJiBzdWJtaXR0ZXJPckFjdGlvbi5oYXNBdHRyaWJ1dGUoXCJmb3JtQWN0aW9uXCIpKVxuICAgICAgICAgIGlmIChcbiAgICAgICAgICAgICgoZm9ybSA9IHN1Ym1pdHRlck9yQWN0aW9uKSxcbiAgICAgICAgICAgIChmb3JtUHJvcHMgPSBzdWJtaXR0ZXJPckFjdGlvbltpbnRlcm5hbFByb3BzS2V5XSB8fCBudWxsKSlcbiAgICAgICAgICApXG4gICAgICAgICAgICBhY3Rpb24gPSBmb3JtUHJvcHMuZm9ybUFjdGlvbjtcbiAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgIGlmIChudWxsICE9PSBmaW5kSW5zdGFuY2VCbG9ja2luZ1RhcmdldChmb3JtKSkgY29udGludWU7XG4gICAgICAgICAgfVxuICAgICAgICBlbHNlIGFjdGlvbiA9IGZvcm1Qcm9wcy5hY3Rpb247XG4gICAgICAgIFwiZnVuY3Rpb25cIiA9PT0gdHlwZW9mIGFjdGlvblxuICAgICAgICAgID8gKGlbcXVldWVkVGFyZ2V0ICsgMV0gPSBhY3Rpb24pXG4gICAgICAgICAgOiAoaS5zcGxpY2UocXVldWVkVGFyZ2V0LCAzKSwgKHF1ZXVlZFRhcmdldCAtPSAzKSk7XG4gICAgICAgIHNjaGVkdWxlUmVwbGF5UXVldWVJZk5lZWRlZChpKTtcbiAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBSZWFjdERPTVJvb3QoaW50ZXJuYWxSb290KSB7XG4gIHRoaXMuX2ludGVybmFsUm9vdCA9IGludGVybmFsUm9vdDtcbn1cblJlYWN0RE9NSHlkcmF0aW9uUm9vdC5wcm90b3R5cGUucmVuZGVyID0gUmVhY3RET01Sb290LnByb3RvdHlwZS5yZW5kZXIgPVxuICBmdW5jdGlvbiAoY2hpbGRyZW4pIHtcbiAgICB2YXIgcm9vdCA9IHRoaXMuX2ludGVybmFsUm9vdDtcbiAgICBpZiAobnVsbCA9PT0gcm9vdCkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSg0MDkpKTtcbiAgICB2YXIgY3VycmVudCA9IHJvb3QuY3VycmVudCxcbiAgICAgIGxhbmUgPSByZXF1ZXN0VXBkYXRlTGFuZSgpO1xuICAgIHVwZGF0ZUNvbnRhaW5lckltcGwoY3VycmVudCwgbGFuZSwgY2hpbGRyZW4sIHJvb3QsIG51bGwsIG51bGwpO1xuICB9O1xuUmVhY3RET01IeWRyYXRpb25Sb290LnByb3RvdHlwZS51bm1vdW50ID0gUmVhY3RET01Sb290LnByb3RvdHlwZS51bm1vdW50ID1cbiAgZnVuY3Rpb24gKCkge1xuICAgIHZhciByb290ID0gdGhpcy5faW50ZXJuYWxSb290O1xuICAgIGlmIChudWxsICE9PSByb290KSB7XG4gICAgICB0aGlzLl9pbnRlcm5hbFJvb3QgPSBudWxsO1xuICAgICAgdmFyIGNvbnRhaW5lciA9IHJvb3QuY29udGFpbmVySW5mbztcbiAgICAgIDAgPT09IHJvb3QudGFnICYmIGZsdXNoUGFzc2l2ZUVmZmVjdHMoKTtcbiAgICAgIHVwZGF0ZUNvbnRhaW5lckltcGwocm9vdC5jdXJyZW50LCAyLCBudWxsLCByb290LCBudWxsLCBudWxsKTtcbiAgICAgIGZsdXNoU3luY1dvcmskMSgpO1xuICAgICAgY29udGFpbmVyW2ludGVybmFsQ29udGFpbmVySW5zdGFuY2VLZXldID0gbnVsbDtcbiAgICB9XG4gIH07XG5mdW5jdGlvbiBSZWFjdERPTUh5ZHJhdGlvblJvb3QoaW50ZXJuYWxSb290KSB7XG4gIHRoaXMuX2ludGVybmFsUm9vdCA9IGludGVybmFsUm9vdDtcbn1cblJlYWN0RE9NSHlkcmF0aW9uUm9vdC5wcm90b3R5cGUudW5zdGFibGVfc2NoZWR1bGVIeWRyYXRpb24gPSBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIGlmICh0YXJnZXQpIHtcbiAgICB2YXIgdXBkYXRlUHJpb3JpdHkgPSByZXNvbHZlVXBkYXRlUHJpb3JpdHkoKTtcbiAgICB0YXJnZXQgPSB7IGJsb2NrZWRPbjogbnVsbCwgdGFyZ2V0OiB0YXJnZXQsIHByaW9yaXR5OiB1cGRhdGVQcmlvcml0eSB9O1xuICAgIGZvciAoXG4gICAgICB2YXIgaSA9IDA7XG4gICAgICBpIDwgcXVldWVkRXhwbGljaXRIeWRyYXRpb25UYXJnZXRzLmxlbmd0aCAmJlxuICAgICAgMCAhPT0gdXBkYXRlUHJpb3JpdHkgJiZcbiAgICAgIHVwZGF0ZVByaW9yaXR5IDwgcXVldWVkRXhwbGljaXRIeWRyYXRpb25UYXJnZXRzW2ldLnByaW9yaXR5O1xuICAgICAgaSsrXG4gICAgKTtcbiAgICBxdWV1ZWRFeHBsaWNpdEh5ZHJhdGlvblRhcmdldHMuc3BsaWNlKGksIDAsIHRhcmdldCk7XG4gICAgMCA9PT0gaSAmJiBhdHRlbXB0RXhwbGljaXRIeWRyYXRpb25UYXJnZXQodGFyZ2V0KTtcbiAgfVxufTtcbnZhciBpc29tb3JwaGljUmVhY3RQYWNrYWdlVmVyc2lvbiRqc2NvbXAkaW5saW5lXzE2ODYgPSBSZWFjdC52ZXJzaW9uO1xuaWYgKFxuICBcIjE5LjAuMFwiICE9PVxuICBpc29tb3JwaGljUmVhY3RQYWNrYWdlVmVyc2lvbiRqc2NvbXAkaW5saW5lXzE2ODZcbilcbiAgdGhyb3cgRXJyb3IoXG4gICAgZm9ybWF0UHJvZEVycm9yTWVzc2FnZShcbiAgICAgIDUyNyxcbiAgICAgIGlzb21vcnBoaWNSZWFjdFBhY2thZ2VWZXJzaW9uJGpzY29tcCRpbmxpbmVfMTY4NixcbiAgICAgIFwiMTkuMC4wXCJcbiAgICApXG4gICk7XG5SZWFjdERPTVNoYXJlZEludGVybmFscy5maW5kRE9NTm9kZSA9IGZ1bmN0aW9uIChjb21wb25lbnRPckVsZW1lbnQpIHtcbiAgdmFyIGZpYmVyID0gY29tcG9uZW50T3JFbGVtZW50Ll9yZWFjdEludGVybmFscztcbiAgaWYgKHZvaWQgMCA9PT0gZmliZXIpIHtcbiAgICBpZiAoXCJmdW5jdGlvblwiID09PSB0eXBlb2YgY29tcG9uZW50T3JFbGVtZW50LnJlbmRlcilcbiAgICAgIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMTg4KSk7XG4gICAgY29tcG9uZW50T3JFbGVtZW50ID0gT2JqZWN0LmtleXMoY29tcG9uZW50T3JFbGVtZW50KS5qb2luKFwiLFwiKTtcbiAgICB0aHJvdyBFcnJvcihmb3JtYXRQcm9kRXJyb3JNZXNzYWdlKDI2OCwgY29tcG9uZW50T3JFbGVtZW50KSk7XG4gIH1cbiAgY29tcG9uZW50T3JFbGVtZW50ID0gZmluZEN1cnJlbnRGaWJlclVzaW5nU2xvd1BhdGgoZmliZXIpO1xuICBjb21wb25lbnRPckVsZW1lbnQgPVxuICAgIG51bGwgIT09IGNvbXBvbmVudE9yRWxlbWVudFxuICAgICAgPyBmaW5kQ3VycmVudEhvc3RGaWJlckltcGwoY29tcG9uZW50T3JFbGVtZW50KVxuICAgICAgOiBudWxsO1xuICBjb21wb25lbnRPckVsZW1lbnQgPVxuICAgIG51bGwgPT09IGNvbXBvbmVudE9yRWxlbWVudCA/IG51bGwgOiBjb21wb25lbnRPckVsZW1lbnQuc3RhdGVOb2RlO1xuICByZXR1cm4gY29tcG9uZW50T3JFbGVtZW50O1xufTtcbnZhciBpbnRlcm5hbHMkanNjb21wJGlubGluZV8yMTY1ID0ge1xuICBidW5kbGVUeXBlOiAwLFxuICB2ZXJzaW9uOiBcIjE5LjAuMFwiLFxuICByZW5kZXJlclBhY2thZ2VOYW1lOiBcInJlYWN0LWRvbVwiLFxuICBjdXJyZW50RGlzcGF0Y2hlclJlZjogUmVhY3RTaGFyZWRJbnRlcm5hbHMsXG4gIGZpbmRGaWJlckJ5SG9zdEluc3RhbmNlOiBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZSxcbiAgcmVjb25jaWxlclZlcnNpb246IFwiMTkuMC4wXCJcbn07XG5pZiAoXCJ1bmRlZmluZWRcIiAhPT0gdHlwZW9mIF9fUkVBQ1RfREVWVE9PTFNfR0xPQkFMX0hPT0tfXykge1xuICB2YXIgaG9vayRqc2NvbXAkaW5saW5lXzIxNjYgPSBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX187XG4gIGlmIChcbiAgICAhaG9vayRqc2NvbXAkaW5saW5lXzIxNjYuaXNEaXNhYmxlZCAmJlxuICAgIGhvb2skanNjb21wJGlubGluZV8yMTY2LnN1cHBvcnRzRmliZXJcbiAgKVxuICAgIHRyeSB7XG4gICAgICAocmVuZGVyZXJJRCA9IGhvb2skanNjb21wJGlubGluZV8yMTY2LmluamVjdChcbiAgICAgICAgaW50ZXJuYWxzJGpzY29tcCRpbmxpbmVfMjE2NVxuICAgICAgKSksXG4gICAgICAgIChpbmplY3RlZEhvb2sgPSBob29rJGpzY29tcCRpbmxpbmVfMjE2Nik7XG4gICAgfSBjYXRjaCAoZXJyKSB7fVxufVxuZXhwb3J0cy5jcmVhdGVSb290ID0gZnVuY3Rpb24gKGNvbnRhaW5lciwgb3B0aW9ucykge1xuICBpZiAoIWlzVmFsaWRDb250YWluZXIoY29udGFpbmVyKSkgdGhyb3cgRXJyb3IoZm9ybWF0UHJvZEVycm9yTWVzc2FnZSgyOTkpKTtcbiAgdmFyIGlzU3RyaWN0TW9kZSA9ICExLFxuICAgIGlkZW50aWZpZXJQcmVmaXggPSBcIlwiLFxuICAgIG9uVW5jYXVnaHRFcnJvciA9IGRlZmF1bHRPblVuY2F1Z2h0RXJyb3IsXG4gICAgb25DYXVnaHRFcnJvciA9IGRlZmF1bHRPbkNhdWdodEVycm9yLFxuICAgIG9uUmVjb3ZlcmFibGVFcnJvciA9IGRlZmF1bHRPblJlY292ZXJhYmxlRXJyb3IsXG4gICAgdHJhbnNpdGlvbkNhbGxiYWNrcyA9IG51bGw7XG4gIG51bGwgIT09IG9wdGlvbnMgJiZcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMgJiZcbiAgICAoITAgPT09IG9wdGlvbnMudW5zdGFibGVfc3RyaWN0TW9kZSAmJiAoaXNTdHJpY3RNb2RlID0gITApLFxuICAgIHZvaWQgMCAhPT0gb3B0aW9ucy5pZGVudGlmaWVyUHJlZml4ICYmXG4gICAgICAoaWRlbnRpZmllclByZWZpeCA9IG9wdGlvbnMuaWRlbnRpZmllclByZWZpeCksXG4gICAgdm9pZCAwICE9PSBvcHRpb25zLm9uVW5jYXVnaHRFcnJvciAmJlxuICAgICAgKG9uVW5jYXVnaHRFcnJvciA9IG9wdGlvbnMub25VbmNhdWdodEVycm9yKSxcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMub25DYXVnaHRFcnJvciAmJiAob25DYXVnaHRFcnJvciA9IG9wdGlvbnMub25DYXVnaHRFcnJvciksXG4gICAgdm9pZCAwICE9PSBvcHRpb25zLm9uUmVjb3ZlcmFibGVFcnJvciAmJlxuICAgICAgKG9uUmVjb3ZlcmFibGVFcnJvciA9IG9wdGlvbnMub25SZWNvdmVyYWJsZUVycm9yKSxcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMudW5zdGFibGVfdHJhbnNpdGlvbkNhbGxiYWNrcyAmJlxuICAgICAgKHRyYW5zaXRpb25DYWxsYmFja3MgPSBvcHRpb25zLnVuc3RhYmxlX3RyYW5zaXRpb25DYWxsYmFja3MpKTtcbiAgb3B0aW9ucyA9IGNyZWF0ZUZpYmVyUm9vdChcbiAgICBjb250YWluZXIsXG4gICAgMSxcbiAgICAhMSxcbiAgICBudWxsLFxuICAgIG51bGwsXG4gICAgaXNTdHJpY3RNb2RlLFxuICAgIGlkZW50aWZpZXJQcmVmaXgsXG4gICAgb25VbmNhdWdodEVycm9yLFxuICAgIG9uQ2F1Z2h0RXJyb3IsXG4gICAgb25SZWNvdmVyYWJsZUVycm9yLFxuICAgIHRyYW5zaXRpb25DYWxsYmFja3MsXG4gICAgbnVsbFxuICApO1xuICBjb250YWluZXJbaW50ZXJuYWxDb250YWluZXJJbnN0YW5jZUtleV0gPSBvcHRpb25zLmN1cnJlbnQ7XG4gIGxpc3RlblRvQWxsU3VwcG9ydGVkRXZlbnRzKFxuICAgIDggPT09IGNvbnRhaW5lci5ub2RlVHlwZSA/IGNvbnRhaW5lci5wYXJlbnROb2RlIDogY29udGFpbmVyXG4gICk7XG4gIHJldHVybiBuZXcgUmVhY3RET01Sb290KG9wdGlvbnMpO1xufTtcbmV4cG9ydHMuaHlkcmF0ZVJvb3QgPSBmdW5jdGlvbiAoY29udGFpbmVyLCBpbml0aWFsQ2hpbGRyZW4sIG9wdGlvbnMpIHtcbiAgaWYgKCFpc1ZhbGlkQ29udGFpbmVyKGNvbnRhaW5lcikpIHRocm93IEVycm9yKGZvcm1hdFByb2RFcnJvck1lc3NhZ2UoMjk5KSk7XG4gIHZhciBpc1N0cmljdE1vZGUgPSAhMSxcbiAgICBpZGVudGlmaWVyUHJlZml4ID0gXCJcIixcbiAgICBvblVuY2F1Z2h0RXJyb3IgPSBkZWZhdWx0T25VbmNhdWdodEVycm9yLFxuICAgIG9uQ2F1Z2h0RXJyb3IgPSBkZWZhdWx0T25DYXVnaHRFcnJvcixcbiAgICBvblJlY292ZXJhYmxlRXJyb3IgPSBkZWZhdWx0T25SZWNvdmVyYWJsZUVycm9yLFxuICAgIHRyYW5zaXRpb25DYWxsYmFja3MgPSBudWxsLFxuICAgIGZvcm1TdGF0ZSA9IG51bGw7XG4gIG51bGwgIT09IG9wdGlvbnMgJiZcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMgJiZcbiAgICAoITAgPT09IG9wdGlvbnMudW5zdGFibGVfc3RyaWN0TW9kZSAmJiAoaXNTdHJpY3RNb2RlID0gITApLFxuICAgIHZvaWQgMCAhPT0gb3B0aW9ucy5pZGVudGlmaWVyUHJlZml4ICYmXG4gICAgICAoaWRlbnRpZmllclByZWZpeCA9IG9wdGlvbnMuaWRlbnRpZmllclByZWZpeCksXG4gICAgdm9pZCAwICE9PSBvcHRpb25zLm9uVW5jYXVnaHRFcnJvciAmJlxuICAgICAgKG9uVW5jYXVnaHRFcnJvciA9IG9wdGlvbnMub25VbmNhdWdodEVycm9yKSxcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMub25DYXVnaHRFcnJvciAmJiAob25DYXVnaHRFcnJvciA9IG9wdGlvbnMub25DYXVnaHRFcnJvciksXG4gICAgdm9pZCAwICE9PSBvcHRpb25zLm9uUmVjb3ZlcmFibGVFcnJvciAmJlxuICAgICAgKG9uUmVjb3ZlcmFibGVFcnJvciA9IG9wdGlvbnMub25SZWNvdmVyYWJsZUVycm9yKSxcbiAgICB2b2lkIDAgIT09IG9wdGlvbnMudW5zdGFibGVfdHJhbnNpdGlvbkNhbGxiYWNrcyAmJlxuICAgICAgKHRyYW5zaXRpb25DYWxsYmFja3MgPSBvcHRpb25zLnVuc3RhYmxlX3RyYW5zaXRpb25DYWxsYmFja3MpLFxuICAgIHZvaWQgMCAhPT0gb3B0aW9ucy5mb3JtU3RhdGUgJiYgKGZvcm1TdGF0ZSA9IG9wdGlvbnMuZm9ybVN0YXRlKSk7XG4gIGluaXRpYWxDaGlsZHJlbiA9IGNyZWF0ZUZpYmVyUm9vdChcbiAgICBjb250YWluZXIsXG4gICAgMSxcbiAgICAhMCxcbiAgICBpbml0aWFsQ2hpbGRyZW4sXG4gICAgbnVsbCAhPSBvcHRpb25zID8gb3B0aW9ucyA6IG51bGwsXG4gICAgaXNTdHJpY3RNb2RlLFxuICAgIGlkZW50aWZpZXJQcmVmaXgsXG4gICAgb25VbmNhdWdodEVycm9yLFxuICAgIG9uQ2F1Z2h0RXJyb3IsXG4gICAgb25SZWNvdmVyYWJsZUVycm9yLFxuICAgIHRyYW5zaXRpb25DYWxsYmFja3MsXG4gICAgZm9ybVN0YXRlXG4gICk7XG4gIGluaXRpYWxDaGlsZHJlbi5jb250ZXh0ID0gZ2V0Q29udGV4dEZvclN1YnRyZWUobnVsbCk7XG4gIG9wdGlvbnMgPSBpbml0aWFsQ2hpbGRyZW4uY3VycmVudDtcbiAgaXNTdHJpY3RNb2RlID0gcmVxdWVzdFVwZGF0ZUxhbmUoKTtcbiAgaWRlbnRpZmllclByZWZpeCA9IGNyZWF0ZVVwZGF0ZShpc1N0cmljdE1vZGUpO1xuICBpZGVudGlmaWVyUHJlZml4LmNhbGxiYWNrID0gbnVsbDtcbiAgZW5xdWV1ZVVwZGF0ZShvcHRpb25zLCBpZGVudGlmaWVyUHJlZml4LCBpc1N0cmljdE1vZGUpO1xuICBpbml0aWFsQ2hpbGRyZW4uY3VycmVudC5sYW5lcyA9IGlzU3RyaWN0TW9kZTtcbiAgbWFya1Jvb3RVcGRhdGVkJDEoaW5pdGlhbENoaWxkcmVuLCBpc1N0cmljdE1vZGUpO1xuICBlbnN1cmVSb290SXNTY2hlZHVsZWQoaW5pdGlhbENoaWxkcmVuKTtcbiAgY29udGFpbmVyW2ludGVybmFsQ29udGFpbmVySW5zdGFuY2VLZXldID0gaW5pdGlhbENoaWxkcmVuLmN1cnJlbnQ7XG4gIGxpc3RlblRvQWxsU3VwcG9ydGVkRXZlbnRzKGNvbnRhaW5lcik7XG4gIHJldHVybiBuZXcgUmVhY3RET01IeWRyYXRpb25Sb290KGluaXRpYWxDaGlsZHJlbik7XG59O1xuZXhwb3J0cy52ZXJzaW9uID0gXCIxOS4wLjBcIjtcbiIsICIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIGNoZWNrRENFKCkge1xuICAvKiBnbG9iYWwgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fICovXG4gIGlmIChcbiAgICB0eXBlb2YgX19SRUFDVF9ERVZUT09MU19HTE9CQUxfSE9PS19fID09PSAndW5kZWZpbmVkJyB8fFxuICAgIHR5cGVvZiBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UgIT09ICdmdW5jdGlvbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gVGhpcyBicmFuY2ggaXMgdW5yZWFjaGFibGUgYmVjYXVzZSB0aGlzIGZ1bmN0aW9uIGlzIG9ubHkgY2FsbGVkXG4gICAgLy8gaW4gcHJvZHVjdGlvbiwgYnV0IHRoZSBjb25kaXRpb24gaXMgdHJ1ZSBvbmx5IGluIGRldmVsb3BtZW50LlxuICAgIC8vIFRoZXJlZm9yZSBpZiB0aGUgYnJhbmNoIGlzIHN0aWxsIGhlcmUsIGRlYWQgY29kZSBlbGltaW5hdGlvbiB3YXNuJ3RcbiAgICAvLyBwcm9wZXJseSBhcHBsaWVkLlxuICAgIC8vIERvbid0IGNoYW5nZSB0aGUgbWVzc2FnZS4gUmVhY3QgRGV2VG9vbHMgcmVsaWVzIG9uIGl0LiBBbHNvIG1ha2Ugc3VyZVxuICAgIC8vIHRoaXMgbWVzc2FnZSBkb2Vzbid0IG9jY3VyIGVsc2V3aGVyZSBpbiB0aGlzIGZ1bmN0aW9uLCBvciBpdCB3aWxsIGNhdXNlXG4gICAgLy8gYSBmYWxzZSBwb3NpdGl2ZS5cbiAgICB0aHJvdyBuZXcgRXJyb3IoJ15fXicpO1xuICB9XG4gIHRyeSB7XG4gICAgLy8gVmVyaWZ5IHRoYXQgdGhlIGNvZGUgYWJvdmUgaGFzIGJlZW4gZGVhZCBjb2RlIGVsaW1pbmF0ZWQgKERDRSdkKS5cbiAgICBfX1JFQUNUX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uY2hlY2tEQ0UoY2hlY2tEQ0UpO1xuICB9IGNhdGNoIChlcnIpIHtcbiAgICAvLyBEZXZUb29scyBzaG91bGRuJ3QgY3Jhc2ggUmVhY3QsIG5vIG1hdHRlciB3aGF0LlxuICAgIC8vIFdlIHNob3VsZCBzdGlsbCByZXBvcnQgaW4gY2FzZSB3ZSBicmVhayB0aGlzIGNvZGUuXG4gICAgY29uc29sZS5lcnJvcihlcnIpO1xuICB9XG59XG5cbmlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIC8vIERDRSBjaGVjayBzaG91bGQgaGFwcGVuIGJlZm9yZSBSZWFjdERPTSBidW5kbGUgZXhlY3V0ZXMgc28gdGhhdFxuICAvLyBEZXZUb29scyBjYW4gcmVwb3J0IGJhZCBtaW5pZmljYXRpb24gZHVyaW5nIGluamVjdGlvbi5cbiAgY2hlY2tEQ0UoKTtcbiAgbW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2Nqcy9yZWFjdC1kb20tY2xpZW50LnByb2R1Y3Rpb24uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9janMvcmVhY3QtZG9tLWNsaWVudC5kZXZlbG9wbWVudC5qcycpO1xufVxuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgY3JlYXRlUmVuZGVyLCB1c2VNb2RlbFN0YXRlIH0gZnJvbSBcIkBhbnl3aWRnZXQvcmVhY3RcIjtcbmltcG9ydCBcIi4vd2lkZ2V0LmNzc1wiO1xuXG5jb25zdCBTZXF1ZW5jZUNvbXBvbmVudCA9ICh7IGMsIHBhcnRpY2lwYW50U2VxdWVuY2VzQ291bnQsIG1heCwgc3VtIH06IHsgYzogYW55LCBwYXJ0aWNpcGFudFNlcXVlbmNlc0NvdW50OiB7IFtrZXk6IHN0cmluZ106IG51bWJlciB9LCBtYXg6IG51bWJlciwgc3VtOiBudW1iZXIgfSkgPT4ge1xuICByZXR1cm4gKDxkaXYgY2xhc3NOYW1lPVwic2VxdWVuY2VDb21wb25lbnRcIj5cbiAgICB7dHlwZW9mIGMgPT09IFwic3RyaW5nXCIgPyA8ZGl2IGNsYXNzTmFtZT1cInNlcXVlbmNlQ29tcG9uZW50SW5kaXZpZHVhbFwiIHRpdGxlPXtgJHtjfSA9ICR7cGFydGljaXBhbnRTZXF1ZW5jZXNDb3VudFtjXSAvIG1heH1gfSBzdHlsZT17eyBvcGFjaXR5OiBwYXJ0aWNpcGFudFNlcXVlbmNlc0NvdW50W2NdIC8gbWF4IH19IC8+IDpcbiAgICAgICg8PntjLmNvbXBvbmVudHMubWFwKChjaTogYW55LCBpZHg6IG51bWJlcikgPT4gPFNlcXVlbmNlQ29tcG9uZW50IGtleT17aWR4fSBjPXtjaX0gcGFydGljaXBhbnRTZXF1ZW5jZXNDb3VudD17cGFydGljaXBhbnRTZXF1ZW5jZXNDb3VudH0gbWF4PXttYXh9IHN1bT17c3VtfSAvPil9PC8+KX1cbiAgPC9kaXY+KTtcbn1cblxuY29uc3QgZ2V0RmxhdHRlbmVkU2VxdWVuY2VMaXN0ID0gKGQ6IGFueVtdKTogYW55W10gPT4ge1xuICByZXR1cm4gZC5tYXAoKGE6IGFueSkgPT4gdHlwZW9mIGEgPT09IFwic3RyaW5nXCIgPyBhIDogZ2V0RmxhdHRlbmVkU2VxdWVuY2VMaXN0KGEuY29tcG9uZW50cykuZmxhdCgpKTtcbn07XG5cblxuZnVuY3Rpb24gZXh0cmFjdEludGVycnVwdGlvbnMoZDogYW55KSB7XG4gIGxldCBpbnRlcnJ1cHRpb25zOiBzdHJpbmdbXSA9IFtdO1xuXG4gIC8vIFJlY3Vyc2l2ZSBmdW5jdGlvbiB0byB0cmF2ZXJzZSB0aGUgSlNPTiBvYmplY3RcbiAgZnVuY3Rpb24gdHJhdmVyc2Uobm9kZTogYW55KSB7XG4gICAgLy8gQ2hlY2sgaWYgdGhlIGN1cnJlbnQgbm9kZSBoYXMgaW50ZXJydXB0aW9uc1xuICAgIGlmIChub2RlLmludGVycnVwdGlvbnMpIHtcbiAgICAgIG5vZGUuaW50ZXJydXB0aW9ucy5mb3JFYWNoKChpbnRlcnJ1cHRpb246IGFueSkgPT4ge1xuICAgICAgICBpZiAoaW50ZXJydXB0aW9uLmNvbXBvbmVudHMpIHtcbiAgICAgICAgICBpbnRlcnJ1cHRpb25zLnB1c2goLi4uaW50ZXJydXB0aW9uLmNvbXBvbmVudHMpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICAvLyBDaGVjayBpZiB0aGUgY3VycmVudCBub2RlIGhhcyBjb21wb25lbnRzIGFuZCBwcm9jZXNzIHRoZW0gcmVjdXJzaXZlbHlcbiAgICBpZiAoQXJyYXkuaXNBcnJheShub2RlLmNvbXBvbmVudHMpKSB7XG4gICAgICBub2RlLmNvbXBvbmVudHMuZm9yRWFjaCgoY29tcG9uZW50OiBhbnkpID0+IHtcbiAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09IFwib2JqZWN0XCIpIHtcbiAgICAgICAgICB0cmF2ZXJzZShjb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvLyBTdGFydCB0cmF2ZXJzYWwgZnJvbSB0aGUgcm9vdCBKU09OIG9iamVjdFxuICB0cmF2ZXJzZShkKTtcblxuICByZXR1cm4gaW50ZXJydXB0aW9ucztcbn1cblxuY29uc3QgU2VxdWVuY2UgPSAoeyBkLCBwYXJ0aWNpcGFudFNlcXVlbmNlcyB9OiB7IGQ6IGFueSwgcGFydGljaXBhbnRTZXF1ZW5jZXM6IGFueVtdIH0pID0+IHtcbiAgY29uc3QgW3BhcnRpY2lwYW50U2VxdWVuY2VzQ291bnQsIG1heCwgc3VtXSA9IFJlYWN0LnVzZU1lbW8oKCkgPT4ge1xuICAgIGNvbnN0IHI6IHsgW2tleTogc3RyaW5nXTogbnVtYmVyIH0gPSB7fTtcblxuICAgIGlmIChwYXJ0aWNpcGFudFNlcXVlbmNlcy5sZW5ndGgpIHtcbiAgICAgIGNvbnN0IGFsbFN0aW11bGkgPSBnZXRGbGF0dGVuZWRTZXF1ZW5jZUxpc3QocGFydGljaXBhbnRTZXF1ZW5jZXMpLmZsYXQoKTtcblxuICAgICAgY29uc3QgaW50ZXJydXB0aW9ucyA9IGV4dHJhY3RJbnRlcnJ1cHRpb25zKGQpO1xuICAgICAgY29uc29sZS5sb2coaW50ZXJydXB0aW9ucyk7XG5cblxuICAgICAgYWxsU3RpbXVsaS5mb3JFYWNoKChzOiBzdHJpbmcpID0+IHtcbiAgICAgICAgaWYgKCFyW3NdKSB7XG4gICAgICAgICAgcltzXSA9IDA7XG4gICAgICAgIH1cbiAgICAgICAgcltzXSsrO1xuICAgICAgfSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaW50ZXJydXB0aW9ucy5sZW5ndGg7IGkrKykge1xuICAgICAgICAvLyBjaGVjayBpZiBrZXkgaXMgaW4gclxuICAgICAgICBpZiAoaW50ZXJydXB0aW9uc1tpXSBpbiByKSB7XG4gICAgICAgICAgZGVsZXRlIHJbaW50ZXJydXB0aW9uc1tpXV07XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgIH1cblxuICAgIGNvbnN0IHN1bSA9IE9iamVjdC52YWx1ZXMocikucmVkdWNlKChhY2MsIHYpID0+IGFjYyArIHYsIDApO1xuXG4gICAgY29uc3QgbWF4ID0gTWF0aC5tYXgoLi4uT2JqZWN0LnZhbHVlcyhyKSk7XG5cbiAgICByZXR1cm4gW3IsIG1heCwgc3VtXTtcblxuICB9LCBbcGFydGljaXBhbnRTZXF1ZW5jZXNdKTtcblxuICByZXR1cm4gKDxkaXYgY2xhc3NOYW1lPVwic2VxdWVuY2VcIj5cbiAgICB7ZC5jb21wb25lbnRzLm1hcCgoYzogYW55LCBpZHg6IG51bWJlcikgPT4gPFNlcXVlbmNlQ29tcG9uZW50IGtleT17aWR4fSBjPXtjfSBwYXJ0aWNpcGFudFNlcXVlbmNlc0NvdW50PXtwYXJ0aWNpcGFudFNlcXVlbmNlc0NvdW50fSBtYXg9e21heH0gc3VtPXtzdW19IC8+KX1cbiAgPC9kaXY+KTtcbn07XG5cbmNvbnN0IHJlbmRlciA9IGNyZWF0ZVJlbmRlcigoKSA9PiB7XG4gIGNvbnN0IFtjb25maWddID0gdXNlTW9kZWxTdGF0ZTxhbnk+KFwiY29uZmlnXCIpO1xuICBjb25zdCBbaWZyYW1lUmVhZHksIHNldElmcmFtZVJlYWR5XSA9IFJlYWN0LnVzZVN0YXRlKDApO1xuICBjb25zdCBbcGFnZSwgc2V0UGFnZV0gPSBSZWFjdC51c2VTdGF0ZShcInN0dWR5XCIpO1xuICBjb25zdCBbc2VxdWVuY2VzLCBzZXRTZXF1ZW5jZV0gPSB1c2VNb2RlbFN0YXRlPGFueT4oXCJzZXF1ZW5jZVwiKTtcblxuICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWY8SFRNTElGcmFtZUVsZW1lbnQ+KG51bGwpO1xuXG4gIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlmcmFtZVJlYWR5KSB7XG4gICAgICByZWYuY3VycmVudD8uY29udGVudFdpbmRvdz8ucG9zdE1lc3NhZ2UoXG4gICAgICAgIHtcbiAgICAgICAgICB0eXBlOiBcInJldmlzaXRXaWRnZXQvQ09ORklHXCIsXG4gICAgICAgICAgcGF5bG9hZDogSlNPTi5zdHJpbmdpZnkoY29uZmlnKSxcbiAgICAgICAgfSxcbiAgICAgICAgXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIlxuICAgICAgKTtcbiAgICB9XG4gIH0sIFtjb25maWcsIGlmcmFtZVJlYWR5XSk7XG5cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBtZXNzYWdlTGlzdGVuZXIgPSAoZXZlbnQ6IE1lc3NhZ2VFdmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRhdGEudHlwZSA9PT0gXCJyZXZpc2l0V2lkZ2V0L1JFQURZXCIpIHtcbiAgICAgICAgc2V0SWZyYW1lUmVhZHkoaSA9PiBpICsgMSk7XG4gICAgICB9IGVsc2UgaWYgKGV2ZW50LmRhdGEudHlwZSA9PT0gXCJyZXZpc2l0V2lkZ2V0L1NFUVVFTkNFX0FSUkFZXCIpIHtcbiAgICAgICAgc2V0U2VxdWVuY2UoZXZlbnQuZGF0YS5wYXlsb2FkKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VMaXN0ZW5lcik7XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoXCJtZXNzYWdlXCIsIG1lc3NhZ2VMaXN0ZW5lcik7XG4gICAgfTtcbiAgfSwgW2NvbmZpZ10pO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJyZXZpc2l0X25vdGVib29rX3dpZGdldFwiPlxuICAgICAgPGRpdj5cbiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB7IHNldFBhZ2UoXCJzdHVkeVwiKTsgfX0gZGlzYWJsZWQ9e3BhZ2UgPT09IFwic3R1ZHlcIn0+U3R1ZHk8L2J1dHRvbj5cbiAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiB7IHNldFBhZ2UoXCJhbmFseXNpc1wiKTsgfX0gZGlzYWJsZWQ9e3BhZ2UgPT09IFwiYW5hbHlzaXNcIn0+QW5hbHlzaXM8L2J1dHRvbj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGlmcmFtZVxuICAgICAgICByZWY9e3JlZn1cbiAgICAgICAgc3JjPXtwYWdlID09PSBcInN0dWR5XCIgPyBcImh0dHA6Ly9sb2NhbGhvc3Q6ODA4MC9yZXZpc2l0LXdpZGdldFwiIDogXCJodHRwOi8vbG9jYWxob3N0OjgwODAvYW5hbHlzaXMvc3RhdHMvcmV2aXNpdC13aWRnZXRcIn1cbiAgICAgICAgc3R5bGU9e3sgd2lkdGg6IFwiMTAwJVwiLCBoZWlnaHQ6IFwiNDAwcHhcIiB9fVxuICAgICAgLz5cbiAgICA8L2Rpdj5cbiAgKTtcbn0pO1xuXG5leHBvcnQgZGVmYXVsdCB7IHJlbmRlciB9O1xuIiwgImltcG9ydCAqIGFzIFJlYWN0IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0ICogYXMgUmVhY3RET00gZnJvbSBcInJlYWN0LWRvbS9jbGllbnRcIjtcblxuLyoqXG4gKiBAdHlwZWRlZiBSZW5kZXJDb250ZXh0XG4gKiBAcHJvcGVydHkge2ltcG9ydChcIkBhbnl3aWRnZXQvdHlwZXNcIikuQW55TW9kZWx9IG1vZGVsXG4gKiBAcHJvcGVydHkge2ltcG9ydChcIkBhbnl3aWRnZXQvdHlwZXNcIikuRXhwZXJpbWVudGFsfSBleHBlcmltZW50YWxcbiAqL1xuXG4vKiogQHR5cGUge1JlYWN0LkNvbnRleHQ8UmVuZGVyQ29udGV4dD59ICovXG5sZXQgUmVuZGVyQ29udGV4dCA9IFJlYWN0LmNyZWF0ZUNvbnRleHQoLyoqIEB0eXBlIHthbnl9ICovIChudWxsKSk7XG5cbi8qKiBAcmV0dXJucyB7UmVuZGVyQ29udGV4dH0gKi9cbmZ1bmN0aW9uIHVzZVJlbmRlckNvbnRleHQoKSB7XG5cdGxldCBjdHggPSBSZWFjdC51c2VDb250ZXh0KFJlbmRlckNvbnRleHQpO1xuXHRpZiAoIWN0eCkgdGhyb3cgbmV3IEVycm9yKFwiUmVuZGVyQ29udGV4dCBub3QgZm91bmRcIik7XG5cdHJldHVybiBjdHg7XG59XG5cbi8qKiBAcmV0dXJucyB7aW1wb3J0KFwiQGFueXdpZGdldC90eXBlc1wiKS5BbnlNb2RlbH0gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VNb2RlbCgpIHtcblx0bGV0IGN0eCA9IHVzZVJlbmRlckNvbnRleHQoKTtcblx0cmV0dXJuIGN0eC5tb2RlbDtcbn1cblxuLyoqIEByZXR1cm5zIHtpbXBvcnQoXCJAYW55d2lkZ2V0L3R5cGVzXCIpLkV4cGVyaW1lbnRhbH0gKi9cbmV4cG9ydCBmdW5jdGlvbiB1c2VFeHBlcmltZW50YWwoKSB7XG5cdGxldCBjdHggPSB1c2VSZW5kZXJDb250ZXh0KCk7XG5cdHJldHVybiBjdHguZXhwZXJpbWVudGFsO1xufVxuXG4vKipcbiAqIEB0ZW1wbGF0ZSBUXG4gKlxuICogQHBhcmFtIHtzdHJpbmd9IGtleVxuICogQHJldHVybnMge1tULCAodmFsdWU6IFQpID0+IHZvaWRdfVxuICovXG5leHBvcnQgZnVuY3Rpb24gdXNlTW9kZWxTdGF0ZShrZXkpIHtcblx0bGV0IG1vZGVsID0gdXNlTW9kZWwoKTtcblx0bGV0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUobW9kZWwuZ2V0KGtleSkpO1xuXHRSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuXHRcdGxldCBjYWxsYmFjayA9ICgpID0+IHNldFZhbHVlKG1vZGVsLmdldChrZXkpKTtcblx0XHRtb2RlbC5vbihgY2hhbmdlOiR7a2V5fWAsIGNhbGxiYWNrKTtcblx0XHRyZXR1cm4gKCkgPT4gbW9kZWwub2ZmKGBjaGFuZ2U6JHtrZXl9YCwgY2FsbGJhY2spO1xuXHR9LCBbbW9kZWwsIGtleV0pO1xuXHRyZXR1cm4gW1xuXHRcdHZhbHVlLFxuXHRcdCh2YWx1ZSkgPT4ge1xuXHRcdFx0bW9kZWwuc2V0KGtleSwgdmFsdWUpO1xuXHRcdFx0bW9kZWwuc2F2ZV9jaGFuZ2VzKCk7XG5cdFx0fSxcblx0XTtcbn1cblxuLyoqXG4gKiBAcGFyYW0ge1JlYWN0LkZDfSBXaWRnZXRcbiAqIEByZXR1cm5zIHtpbXBvcnQoXCJAYW55d2lkZ2V0L3R5cGVzXCIpLlJlbmRlcn1cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJlbmRlcihXaWRnZXQpIHtcblx0cmV0dXJuICh7IGVsLCBtb2RlbCwgZXhwZXJpbWVudGFsIH0pID0+IHtcblx0XHRsZXQgcm9vdCA9IFJlYWN0RE9NLmNyZWF0ZVJvb3QoZWwpO1xuXHRcdHJvb3QucmVuZGVyKFxuXHRcdFx0UmVhY3QuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0UmVhY3QuU3RyaWN0TW9kZSxcblx0XHRcdFx0bnVsbCxcblx0XHRcdFx0UmVhY3QuY3JlYXRlRWxlbWVudChcblx0XHRcdFx0XHRSZW5kZXJDb250ZXh0LlByb3ZpZGVyLFxuXHRcdFx0XHRcdHsgdmFsdWU6IHsgbW9kZWwsIGV4cGVyaW1lbnRhbCB9IH0sXG5cdFx0XHRcdFx0UmVhY3QuY3JlYXRlRWxlbWVudChXaWRnZXQpLFxuXHRcdFx0XHQpLFxuXHRcdFx0KSxcblx0XHQpO1xuXHRcdHJldHVybiAoKSA9PiByb290LnVubW91bnQoKTtc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QUFVLHVDQUF5QyxzREFDakUsTUFBTyxDQUFFLE1BQU8sT0FBUSxPQUFRLE9BQVEsRUFDMUMsQ0FDRixDQUVKLENBQUMsRUFFTVEsR0FBUSxDQUFFLE9BQUFkLEVBQU8iLAogICJuYW1lcyI6IFsicmVxdWlyZV9yZWFjdF9wcm9kdWN0aW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJSRUFDVF9FTEVNRU5UX1RZUEUiLCAiUkVBQ1RfUE9SVEFMX1RZUEUiLCAiUkVBQ1RfRlJBR01FTlRfVFlQRSIsICJSRUFDVF9TVFJJQ1RfTU9ERV9UWVBFIiwgIlJFQUNUX1BST0ZJTEVSX1RZUEUiLCAiUkVBQ1RfQ09OU1VNRVJfVFlQRSIsICJSRUFDVF9DT05URVhUX1RZUEUiLCAiUkVBQ1RfRk9SV0FSRF9SRUZfVFlQRSIsICJSRUFDVF9TVVNQRU5TRV9UWVBFIiwgIlJFQUNUX01FTU9fVFlQRSIsICJSRUFDVF9MQVpZX1RZUEUiLCAiTUFZQkVfSVRFUkFUT1JfU1lNQk9MIiwgImdldEl0ZXJhdG9yRm4iLCAibWF5YmVJdGVyYWJsZSIsICJSZWFjdE5vb3BVcGRhdGVRdWV1ZSIsICJhc3NpZ24iLCAiZW1wdHlPYmplY3QiLCAiQ29tcG9uZW50IiwgInByb3BzIiwgImNvbnRleHQiLCAidXBkYXRlciIsICJwYXJ0aWFsU3RhdGUiLCAiY2FsbGJhY2siLCAiQ29tcG9uZW50RHVtbXkiLCAiUHVyZUNvbXBvbmVudCIsICJwdXJlQ29tcG9uZW50UHJvdG90eXBlIiwgImlzQXJyYXlJbXBsIiwgIlJlYWN0U2hhcmVkSW50ZXJuYWxzIiwgImhhc093blByb3BlcnR5IiwgIlJlYWN0RWxlbWVudCIsICJ0eXBlIiwgImtleSIsICJzZWxmIiwgInNvdXJjZSIsICJvd25lciIsICJjbG9uZUFuZFJlcGxhY2VLZXkiLCAib2xkRWxlbWVudCIsICJuZXdLZXkiLCAiaXNWYWxpZEVsZW1lbnQiLCAib2JqZWN0IiwgImVzY2FwZSIsICJlc2NhcGVyTG9va3VwIiwgIm1hdGNoIiwgInVzZXJQcm92aWRlZEtleUVzY2FwZVJlZ2V4IiwgImdldEVsZW1lbnRLZXkiLCAiZWxlbWVudCIsICJpbmRleCIsICJub29wJDEiLCAicmVzb2x2ZVRoZW5hYmxlIiwgInRoZW5hYmxlIiwgImZ1bGZpbGxlZFZhbHVlIiwgImVycm9yIiwgIm1hcEludG9BcnJheSIsICJjaGlsZHJlbiIsICJhcnJheSIsICJlc2NhcGVkUHJlZml4IiwgIm5hbWVTb0ZhciIsICJpbnZva2VDYWxsYmFjayIsICJjIiwgIm5leHROYW1lUHJlZml4IiwgIm1hcENoaWxkcmVuIiwgImZ1bmMiLCAicmVzdWx0IiwgImNvdW50IiwgImNoaWxkIiwgImxhenlJbml0aWFsaXplciIsICJwYXlsb2FkIiwgImN0b3IiLCAibW9kdWxlT2JqZWN0IiwgInJlcG9ydEdsb2JhbEVycm9yIiwgImV2ZW50IiwgIm5vb3AiLCAiZm9yRWFjaEZ1bmMiLCAiZm9yRWFjaENvbnRleHQiLCAibiIsICJmbiIsICJjb25maWciLCAicHJvcE5hbWUiLCAiY2hpbGRBcnJheSIsICJkZWZhdWx0VmFsdWUiLCAiY2hpbGRyZW5MZW5ndGgiLCAicmVuZGVyIiwgImNvbXBhcmUiLCAic2NvcGUiLCAicHJldlRyYW5zaXRpb24iLCAiY3VycmVudFRyYW5zaXRpb24iLCAicmV0dXJuVmFsdWUiLCAib25TdGFydFRyYW5zaXRpb25GaW5pc2giLCAidXNhYmxlIiwgImFjdGlvbiIsICJpbml0aWFsU3RhdGUiLCAicGVybWFsaW5rIiwgImRlcHMiLCAiQ29udGV4dCIsICJ2YWx1ZSIsICJpbml0aWFsVmFsdWUiLCAiY3JlYXRlIiwgInJlZiIsICJwYXNzdGhyb3VnaCIsICJyZWR1Y2VyIiwgImluaXRpYWxBcmciLCAiaW5pdCIsICJzdWJzY3JpYmUiLCAiZ2V0U25hcHNob3QiLCAiZ2V0U2VydmVyU25hcHNob3QiLCAicmVxdWlyZV9yZWFjdCIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfc2NoZWR1bGVyX3Byb2R1Y3Rpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgInB1c2giLCAiaGVhcCIsICJub2RlIiwgImluZGV4IiwgImEiLCAicGFyZW50SW5kZXgiLCAicGFyZW50IiwgImNvbXBhcmUiLCAicGVlayIsICJwb3AiLCAiZmlyc3QiLCAibGFzdCIsICJsZW5ndGgiLCAiaGFsZkxlbmd0aCIsICJsZWZ0SW5kZXgiLCAibGVmdCIsICJyaWdodEluZGV4IiwgInJpZ2h0IiwgImIiLCAiZGlmZiIsICJsb2NhbFBlcmZvcm1hbmNlIiwgImxvY2FsRGF0ZSIsICJpbml0aWFsVGltZSIsICJ0YXNrUXVldWUiLCAidGltZXJRdWV1ZSIsICJ0YXNrSWRDb3VudGVyIiwgImN1cnJlbnRUYXNrIiwgImN1cnJlbnRQcmlvcml0eUxldmVsIiwgImlzUGVyZm9ybWluZ1dvcmsiLCAiaXNIb3N0Q2FsbGJhY2tTY2hlZHVsZWQiLCAiaXNIb3N0VGltZW91dFNjaGVkdWxlZCIsICJsb2NhbFNldFRpbWVvdXQiLCAibG9jYWxDbGVhclRpbWVvdXQiLCAibG9jYWxTZXRJbW1lZGlhdGUiLCAiYWR2YW5jZVRpbWVycyIsICJjdXJyZW50VGltZSIsICJ0aW1lciIsICJoYW5kbGVUaW1lb3V0IiwgInJlcXVlc3RIb3N0Q2FsbGJhY2siLCAiZmlyc3RUaW1lciIsICJyZXF1ZXN0SG9zdFRpbWVvdXQiLCAiaXNNZXNzYWdlTG9vcFJ1bm5pbmciLCAidGFza1RpbWVvdXRJRCIsICJmcmFtZUludGVydmFsIiwgInN0YXJ0VGltZSIsICJzaG91bGRZaWVsZFRvSG9zdCIsICJwZXJmb3JtV29ya1VudGlsRGVhZGxpbmUiLCAiaGFzTW9yZVdvcmsiLCAicHJldmlvdXNQcmlvcml0eUxldmVsIiwgImNhbGxiYWNrIiwgImNvbnRpbnVhdGlvbkNhbGxiYWNrIiwgInNjaGVkdWxlUGVyZm9ybVdvcmtVbnRpbERlYWRsaW5lIiwgImNoYW5uZWwiLCAicG9ydCIsICJtcyIsICJ0YXNrIiwgImZwcyIsICJldmVudEhhbmRsZXIiLCAicHJpb3JpdHlMZXZlbCIsICJvcHRpb25zIiwgInRpbWVvdXQiLCAicGFyZW50UHJpb3JpdHlMZXZlbCIsICJyZXF1aXJlX3NjaGVkdWxlciIsICJfX2NvbW1vbkpTTWluIiwgImV4cG9ydHMiLCAibW9kdWxlIiwgInJlcXVpcmVfcmVhY3RfZG9tX3Byb2R1Y3Rpb24iLCAiX19jb21tb25KU01pbiIsICJleHBvcnRzIiwgIlJlYWN0IiwgImZvcm1hdFByb2RFcnJvck1lc3NhZ2UiLCAiY29kZSIsICJ1cmwiLCAiaSIsICJub29wIiwgIkludGVybmFscyIsICJSRUFDVF9QT1JUQUxfVFlQRSIsICJjcmVhdGVQb3J0YWwkMSIsICJjaGlsZHJlbiIsICJjb250YWluZXJJbmZvIiwgImltcGxlbWVudGF0aW9uIiwgImtleSIsICJSZWFjdFNoYXJlZEludGVybmFscyIsICJnZXRDcm9zc09yaWdpblN0cmluZ0FzIiwgImFzIiwgImlucHV0IiwgImNvbnRhaW5lciIsICJmbiIsICJwcmV2aW91c1RyYW5zaXRpb24iLCAicHJldmlvdXNVcGRhdGVQcmlvcml0eSIsICJocmVmIiwgIm9wdGlvbnMiLCAiY3Jvc3NPcmlnaW4iLCAiaW50ZWdyaXR5IiwgImZldGNoUHJpb3JpdHkiLCAiZm9ybSIsICJhIiwgImFjdGlvbiIsICJpbml0aWFsU3RhdGUiLCAicGVybWFsaW5rIiwgInJlcXVpcmVfcmVhY3RfZG9tIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2hlY2tEQ0UiLCAiZXJyIiwgInJlcXVpcmVfcmVhY3RfZG9tX2NsaWVudF9wcm9kdWN0aW9uIiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJTY2hlZHVsZXIiLCAiUmVhY3QiLCAiUmVhY3RET00iLCAiZm9ybWF0UHJvZEVycm9yTWVzc2FnZSIsICJjb2RlIiwgInVybCIsICJpIiwgImlzVmFsaWRDb250YWluZXIiLCAibm9kZSIsICJSRUFDVF9MRUdBQ1lfRUxFTUVOVF9UWVBFIiwgIlJFQUNUX0VMRU1FTlRfVFlQRSIsICJSRUFDVF9QT1JUQUxfVFlQRSIsICJSRUFDVF9GUkFHTUVOVF9UWVBFIiwgIlJFQUNUX1NUUklDVF9NT0RFX1RZUEUiLCAiUkVBQ1RfUFJPRklMRVJfVFlQRSIsICJSRUFDVF9QUk9WSURFUl9UWVBFIiwgIlJFQUNUX0NPTlNVTUVSX1RZUEUiLCAiUkVBQ1RfQ09OVEVYVF9UWVBFIiwgIlJFQUNUX0ZPUldBUkRfUkVGX1RZUEUiLCAiUkVBQ1RfU1VTUEVOU0VfVFlQRSIsICJSRUFDVF9TVVNQRU5TRV9MSVNUX1RZUEUiLCAiUkVBQ1RfTUVNT19UWVBFIiwgIlJFQUNUX0xBWllfVFlQRSIsICJSRUFDVF9PRkZTQ1JFRU5fVFlQRSIsICJSRUFDVF9NRU1PX0NBQ0hFX1NFTlRJTkVMIiwgIk1BWUJFX0lURVJBVE9SX1NZTUJPTCIsICJnZXRJdGVyYXRvckZuIiwgIm1heWJlSXRlcmFibGUiLCAiUkVBQ1RfQ0xJRU5UX1JFRkVSRU5DRSIsICJnZXRDb21wb25lbnROYW1lRnJvbVR5cGUiLCAidHlwZSIsICJpbm5lclR5cGUiLCAiUmVhY3RTaGFyZWRJbnRlcm5hbHMiLCAiYXNzaWduIiwgInByZWZpeCIsICJzdWZmaXgiLCAiZGVzY3JpYmVCdWlsdEluQ29tcG9uZW50RnJhbWUiLCAibmFtZSIsICJ4IiwgIm1hdGNoIiwgInJlZW50cnkiLCAiZGVzY3JpYmVOYXRpdmVDb21wb25lbnRGcmFtZSIsICJmbiIsICJjb25zdHJ1Y3QiLCAicHJldmlvdXNQcmVwYXJlU3RhY2tUcmFjZSIsICJSdW5JblJvb3RGcmFtZSIsICJGYWtlIiwgImNvbnRyb2wiLCAieCQwIiwgIngkMSIsICJzYW1wbGUiLCAibmFtZVByb3BEZXNjcmlwdG9yIiwgIl9SdW5JblJvb3RGcmFtZSREZXRlciIsICJzYW1wbGVTdGFjayIsICJjb250cm9sU3RhY2siLCAic2FtcGxlTGluZXMiLCAiY29udHJvbExpbmVzIiwgImZyYW1lIiwgImRlc2NyaWJlRmliZXIiLCAiZmliZXIiLCAiZ2V0U3RhY2tCeUZpYmVySW5EZXZBbmRQcm9kIiwgIndvcmtJblByb2dyZXNzIiwgImluZm8iLCAiZ2V0TmVhcmVzdE1vdW50ZWRGaWJlciIsICJuZWFyZXN0TW91bnRlZCIsICJnZXRTdXNwZW5zZUluc3RhbmNlRnJvbUZpYmVyIiwgInN1c3BlbnNlU3RhdGUiLCAiYXNzZXJ0SXNNb3VudGVkIiwgImZpbmRDdXJyZW50RmliZXJVc2luZ1Nsb3dQYXRoIiwgImFsdGVybmF0ZSIsICJhIiwgImIiLCAicGFyZW50QSIsICJwYXJlbnRCIiwgImRpZEZpbmRDaGlsZCIsICJjaGlsZCQyIiwgImZpbmRDdXJyZW50SG9zdEZpYmVySW1wbCIsICJ0YWciLCAiaXNBcnJheUltcGwiLCAiUmVhY3RET01TaGFyZWRJbnRlcm5hbHMiLCAic2hhcmVkTm90UGVuZGluZ09iamVjdCIsICJ2YWx1ZVN0YWNrIiwgImluZGV4IiwgImNyZWF0ZUN1cnNvciIsICJkZWZhdWx0VmFsdWUiLCAicG9wIiwgImN1cnNvciIsICJwdXNoIiwgInZhbHVlIiwgImNvbnRleHRTdGFja0N1cnNvciIsICJjb250ZXh0RmliZXJTdGFja0N1cnNvciIsICJyb290SW5zdGFuY2VTdGFja0N1cnNvciIsICJob3N0VHJhbnNpdGlvblByb3ZpZGVyQ3Vyc29yIiwgInB1c2hIb3N0Q29udGFpbmVyIiwgIm5leHRSb290SW5zdGFuY2UiLCAiZ2V0T3duSG9zdENvbnRleHQiLCAiZ2V0Q2hpbGRIb3N0Q29udGV4dFByb2QiLCAicG9wSG9zdENvbnRhaW5lciIsICJwdXNoSG9zdENvbnRleHQiLCAiY29udGV4dCIsICJKU0NvbXBpbGVyX2lubGluZV9yZXN1bHQiLCAicG9wSG9zdENvbnRleHQiLCAiSG9zdFRyYW5zaXRpb25Db250ZXh0IiwgImhhc093blByb3BlcnR5IiwgInNjaGVkdWxlQ2FsbGJhY2skMyIsICJjYW5jZWxDYWxsYmFjayQxIiwgInNob3VsZFlpZWxkIiwgInJlcXVlc3RQYWludCIsICJub3ciLCAiZ2V0Q3VycmVudFByaW9yaXR5TGV2ZWwiLCAiSW1tZWRpYXRlUHJpb3JpdHkiLCAiVXNlckJsb2NraW5nUHJpb3JpdHkiLCAiTm9ybWFsUHJpb3JpdHkkMSIsICJMb3dQcmlvcml0eSIsICJJZGxlUHJpb3JpdHkiLCAibG9nJDEiLCAidW5zdGFibGVfc2V0RGlzYWJsZVlpZWxkVmFsdWUiLCAicmVuZGVyZXJJRCIsICJpbmplY3RlZEhvb2siLCAib25Db21taXRSb290IiwgInJvb3QiLCAic2V0SXNTdHJpY3RNb2RlRm9yRGV2dG9vbHMiLCAibmV3SXNTdHJpY3RNb2RlIiwgImNsejMyIiwgImNsejMyRmFsbGJhY2siLCAibG9nIiwgIkxOMiIsICJuZXh0VHJhbnNpdGlvbkxhbmUiLCAibmV4dFJldHJ5TGFuZSIsICJnZXRIaWdoZXN0UHJpb3JpdHlMYW5lcyIsICJsYW5lcyIsICJwZW5kaW5nU3luY0xhbmVzIiwgImdldE5leHRMYW5lcyIsICJ3aXBMYW5lcyIsICJwZW5kaW5nTGFuZXMiLCAibmV4dExhbmVzIiwgInN1c3BlbmRlZExhbmVzIiwgInBpbmdlZExhbmVzIiwgIndhcm1MYW5lcyIsICJub25JZGxlUGVuZGluZ0xhbmVzIiwgImNoZWNrSWZSb290SXNQcmVyZW5kZXJpbmciLCAicmVuZGVyTGFuZXMiLCAiY29tcHV0ZUV4cGlyYXRpb25UaW1lIiwgImxhbmUiLCAiY3VycmVudFRpbWUiLCAiY2xhaW1OZXh0VHJhbnNpdGlvbkxhbmUiLCAiY2xhaW1OZXh0UmV0cnlMYW5lIiwgImNyZWF0ZUxhbmVNYXAiLCAiaW5pdGlhbCIsICJsYW5lTWFwIiwgIm1hcmtSb290VXBkYXRlZCQxIiwgInVwZGF0ZUxhbmUiLCAibWFya1Jvb3RGaW5pc2hlZCIsICJmaW5pc2hlZExhbmVzIiwgInJlbWFpbmluZ0xhbmVzIiwgInNwYXduZWRMYW5lIiwgInVwZGF0ZWRMYW5lcyIsICJzdXNwZW5kZWRSZXRyeUxhbmVzIiwgInByZXZpb3VzbHlQZW5kaW5nTGFuZXMiLCAiZW50YW5nbGVtZW50cyIsICJleHBpcmF0aW9uVGltZXMiLCAiaGlkZGVuVXBkYXRlcyIsICJpbmRleCQ3IiwgImhpZGRlblVwZGF0ZXNGb3JMYW5lIiwgInVwZGF0ZSIsICJtYXJrU3Bhd25lZERlZmVycmVkTGFuZSIsICJlbnRhbmdsZWRMYW5lcyIsICJzcGF3bmVkTGFuZUluZGV4IiwgIm1hcmtSb290RW50YW5nbGVkIiwgInJvb3RFbnRhbmdsZWRMYW5lcyIsICJpbmRleCQ4IiwgImxhbmVzVG9FdmVudFByaW9yaXR5IiwgInJlc29sdmVVcGRhdGVQcmlvcml0eSIsICJ1cGRhdGVQcmlvcml0eSIsICJnZXRFdmVudFByaW9yaXR5IiwgInJ1bldpdGhQcmlvcml0eSIsICJwcmlvcml0eSIsICJwcmV2aW91c1ByaW9yaXR5IiwgInJhbmRvbUtleSIsICJpbnRlcm5hbEluc3RhbmNlS2V5IiwgImludGVybmFsUHJvcHNLZXkiLCAiaW50ZXJuYWxDb250YWluZXJJbnN0YW5jZUtleSIsICJpbnRlcm5hbEV2ZW50SGFuZGxlcnNLZXkiLCAiaW50ZXJuYWxFdmVudEhhbmRsZXJMaXN0ZW5lcnNLZXkiLCAiaW50ZXJuYWxFdmVudEhhbmRsZXNTZXRLZXkiLCAiaW50ZXJuYWxSb290Tm9kZVJlc291cmNlc0tleSIsICJpbnRlcm5hbEhvaXN0YWJsZU1hcmtlciIsICJkZXRhY2hEZWxldGVkSW5zdGFuY2UiLCAiZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUiLCAidGFyZ2V0Tm9kZSIsICJ0YXJnZXRJbnN0IiwgInBhcmVudE5vZGUiLCAiZ2V0UGFyZW50U3VzcGVuc2VJbnN0YW5jZSIsICJnZXRJbnN0YW5jZUZyb21Ob2RlIiwgImdldE5vZGVGcm9tSW5zdGFuY2UiLCAiaW5zdCIsICJnZXRSZXNvdXJjZXNGcm9tUm9vdCIsICJyZXNvdXJjZXMiLCAibWFya05vZGVBc0hvaXN0YWJsZSIsICJhbGxOYXRpdmVFdmVudHMiLCAicmVnaXN0cmF0aW9uTmFtZURlcGVuZGVuY2llcyIsICJyZWdpc3RlclR3b1BoYXNlRXZlbnQiLCAicmVnaXN0cmF0aW9uTmFtZSIsICJkZXBlbmRlbmNpZXMiLCAicmVnaXN0ZXJEaXJlY3RFdmVudCIsICJjYW5Vc2VET00iLCAiVkFMSURfQVRUUklCVVRFX05BTUVfUkVHRVgiLCAiaWxsZWdhbEF0dHJpYnV0ZU5hbWVDYWNoZSIsICJ2YWxpZGF0ZWRBdHRyaWJ1dGVOYW1lQ2FjaGUiLCAiaXNBdHRyaWJ1dGVOYW1lU2FmZSIsICJhdHRyaWJ1dGVOYW1lIiwgInNldFZhbHVlRm9yQXR0cmlidXRlIiwgInByZWZpeCQxMCIsICJzZXRWYWx1ZUZvcktub3duQXR0cmlidXRlIiwgInNldFZhbHVlRm9yTmFtZXNwYWNlZEF0dHJpYnV0ZSIsICJuYW1lc3BhY2UiLCAiZ2V0VG9TdHJpbmdWYWx1ZSIsICJpc0NoZWNrYWJsZSIsICJlbGVtIiwgInRyYWNrVmFsdWVPbk5vZGUiLCAidmFsdWVGaWVsZCIsICJkZXNjcmlwdG9yIiwgImN1cnJlbnRWYWx1ZSIsICJnZXQiLCAic2V0IiwgInRyYWNrIiwgInVwZGF0ZVZhbHVlSWZDaGFuZ2VkIiwgInRyYWNrZXIiLCAibGFzdFZhbHVlIiwgImdldEFjdGl2ZUVsZW1lbnQiLCAiZG9jIiwgImVzY2FwZVNlbGVjdG9yQXR0cmlidXRlVmFsdWVJbnNpZGVEb3VibGVRdW90ZXNSZWdleCIsICJlc2NhcGVTZWxlY3RvckF0dHJpYnV0ZVZhbHVlSW5zaWRlRG91YmxlUXVvdGVzIiwgImNoIiwgInVwZGF0ZUlucHV0IiwgImVsZW1lbnQiLCAibGFzdERlZmF1bHRWYWx1ZSIsICJjaGVja2VkIiwgImRlZmF1bHRDaGVja2VkIiwgInNldERlZmF1bHRWYWx1ZSIsICJpbml0SW5wdXQiLCAiaXNIeWRyYXRpbmciLCAidXBkYXRlT3B0aW9ucyIsICJtdWx0aXBsZSIsICJwcm9wVmFsdWUiLCAic2V0RGVmYXVsdFNlbGVjdGVkIiwgInVwZGF0ZVRleHRhcmVhIiwgImluaXRUZXh0YXJlYSIsICJjaGlsZHJlbiIsICJzZXRUZXh0Q29udGVudCIsICJ0ZXh0IiwgImZpcnN0Q2hpbGQiLCAidW5pdGxlc3NOdW1iZXJzIiwgInNldFZhbHVlRm9yU3R5bGUiLCAic3R5bGUiLCAic3R5bGVOYW1lIiwgImlzQ3VzdG9tUHJvcGVydHkiLCAic2V0VmFsdWVGb3JTdHlsZXMiLCAic3R5bGVzIiwgInByZXZTdHlsZXMiLCAic3R5bGVOYW1lJDE2IiwgInN0eWxlTmFtZSQxNyIsICJpc0N1c3RvbUVsZW1lbnQiLCAidGFnTmFtZSIsICJhbGlhc2VzIiwgImlzSmF2YVNjcmlwdFByb3RvY29sIiwgInNhbml0aXplVVJMIiwgImN1cnJlbnRSZXBsYXlpbmdFdmVudCIsICJnZXRFdmVudFRhcmdldCIsICJuYXRpdmVFdmVudCIsICJyZXN0b3JlVGFyZ2V0IiwgInJlc3RvcmVRdWV1ZSIsICJyZXN0b3JlU3RhdGVPZlRhcmdldCIsICJ0YXJnZXQiLCAiaW50ZXJuYWxJbnN0YW5jZSIsICJwcm9wcyIsICJvdGhlck5vZGUiLCAib3RoZXJQcm9wcyIsICJpc0luc2lkZUV2ZW50SGFuZGxlciIsICJiYXRjaGVkVXBkYXRlcyQxIiwgImZsdXNoU3luY1dvcmskMSIsICJnZXRMaXN0ZW5lciIsICJzdGF0ZU5vZGUiLCAicGFzc2l2ZUJyb3dzZXJFdmVudHNTdXBwb3J0ZWQiLCAib3B0aW9ucyIsICJzdGFydFRleHQiLCAiZmFsbGJhY2tUZXh0IiwgImdldERhdGEiLCAic3RhcnQiLCAic3RhcnRWYWx1ZSIsICJzdGFydExlbmd0aCIsICJlbmQiLCAiZW5kVmFsdWUiLCAiZW5kTGVuZ3RoIiwgIm1pbkVuZCIsICJnZXRFdmVudENoYXJDb2RlIiwgImtleUNvZGUiLCAiZnVuY3Rpb25UaGF0UmV0dXJuc1RydWUiLCAiZnVuY3Rpb25UaGF0UmV0dXJuc0ZhbHNlIiwgImNyZWF0ZVN5bnRoZXRpY0V2ZW50IiwgIkludGVyZmFjZSIsICJTeW50aGV0aWNCYXNlRXZlbnQiLCAicmVhY3ROYW1lIiwgInJlYWN0RXZlbnRUeXBlIiwgIm5hdGl2ZUV2ZW50VGFyZ2V0IiwgInByb3BOYW1lIiwgImV2ZW50IiwgIkV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY0V2ZW50IiwgIlVJRXZlbnRJbnRlcmZhY2UiLCAiU3ludGhldGljVUlFdmVudCIsICJsYXN0TW92ZW1lbnRYIiwgImxhc3RNb3ZlbWVudFkiLCAibGFzdE1vdXNlRXZlbnQiLCAiTW91c2VFdmVudEludGVyZmFjZSIsICJnZXRFdmVudE1vZGlmaWVyU3RhdGUiLCAiU3ludGhldGljTW91c2VFdmVudCIsICJEcmFnRXZlbnRJbnRlcmZhY2UiLCAiU3ludGhldGljRHJhZ0V2ZW50IiwgIkZvY3VzRXZlbnRJbnRlcmZhY2UiLCAiU3ludGhldGljRm9jdXNFdmVudCIsICJBbmltYXRpb25FdmVudEludGVyZmFjZSIsICJTeW50aGV0aWNBbmltYXRpb25FdmVudCIsICJDbGlwYm9hcmRFdmVudEludGVyZmFjZSIsICJTeW50aGV0aWNDbGlwYm9hcmRFdmVudCIsICJDb21wb3NpdGlvbkV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY0NvbXBvc2l0aW9uRXZlbnQiLCAibm9ybWFsaXplS2V5IiwgInRyYW5zbGF0ZVRvS2V5IiwgIm1vZGlmaWVyS2V5VG9Qcm9wIiwgIm1vZGlmaWVyU3RhdGVHZXR0ZXIiLCAia2V5QXJnIiwgIktleWJvYXJkRXZlbnRJbnRlcmZhY2UiLCAia2V5IiwgIlN5bnRoZXRpY0tleWJvYXJkRXZlbnQiLCAiUG9pbnRlckV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY1BvaW50ZXJFdmVudCIsICJUb3VjaEV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY1RvdWNoRXZlbnQiLCAiVHJhbnNpdGlvbkV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY1RyYW5zaXRpb25FdmVudCIsICJXaGVlbEV2ZW50SW50ZXJmYWNlIiwgIlN5bnRoZXRpY1doZWVsRXZlbnQiLCAiVG9nZ2xlRXZlbnRJbnRlcmZhY2UiLCAiU3ludGhldGljVG9nZ2xlRXZlbnQiLCAiRU5EX0tFWUNPREVTIiwgImNhblVzZUNvbXBvc2l0aW9uRXZlbnQiLCAiZG9jdW1lbnRNb2RlIiwgImNhblVzZVRleHRJbnB1dEV2ZW50IiwgInVzZUZhbGxiYWNrQ29tcG9zaXRpb25EYXRhIiwgIlNQQUNFQkFSX0NIQVIiLCAiaGFzU3BhY2VLZXlwcmVzcyIsICJpc0ZhbGxiYWNrQ29tcG9zaXRpb25FbmQiLCAiZG9tRXZlbnROYW1lIiwgImdldERhdGFGcm9tQ3VzdG9tRXZlbnQiLCAiaXNDb21wb3NpbmciLCAiZ2V0TmF0aXZlQmVmb3JlSW5wdXRDaGFycyIsICJnZXRGYWxsYmFja0JlZm9yZUlucHV0Q2hhcnMiLCAic3VwcG9ydGVkSW5wdXRUeXBlcyIsICJpc1RleHRJbnB1dEVsZW1lbnQiLCAibm9kZU5hbWUiLCAiY3JlYXRlQW5kQWNjdW11bGF0ZUNoYW5nZUV2ZW50IiwgImRpc3BhdGNoUXVldWUiLCAiYWNjdW11bGF0ZVR3b1BoYXNlTGlzdGVuZXJzIiwgImFjdGl2ZUVsZW1lbnQkMSIsICJhY3RpdmVFbGVtZW50SW5zdCQxIiwgInJ1bkV2ZW50SW5CYXRjaCIsICJwcm9jZXNzRGlzcGF0Y2hRdWV1ZSIsICJnZXRJbnN0SWZWYWx1ZUNoYW5nZWQiLCAiZ2V0VGFyZ2V0SW5zdEZvckNoYW5nZUV2ZW50IiwgImlzSW5wdXRFdmVudFN1cHBvcnRlZCIsICJpc1N1cHBvcnRlZCRqc2NvbXAkaW5saW5lXzQxOCIsICJlbGVtZW50JGpzY29tcCRpbmxpbmVfNDE5IiwgIkpTQ29tcGlsZXJfaW5saW5lX3Jlc3VsdCRqc2NvbXAkMjgzIiwgInN0b3BXYXRjaGluZ0ZvclZhbHVlQ2hhbmdlIiwgImhhbmRsZVByb3BlcnR5Q2hhbmdlIiwgImhhbmRsZUV2ZW50c0ZvcklucHV0RXZlbnRQb2x5ZmlsbCIsICJnZXRUYXJnZXRJbnN0Rm9ySW5wdXRFdmVudFBvbHlmaWxsIiwgImdldFRhcmdldEluc3RGb3JDbGlja0V2ZW50IiwgImdldFRhcmdldEluc3RGb3JJbnB1dE9yQ2hhbmdlRXZlbnQiLCAiaXMiLCAieSIsICJvYmplY3RJcyIsICJzaGFsbG93RXF1YWwiLCAib2JqQSIsICJvYmpCIiwgImtleXNBIiwgImtleXNCIiwgImN1cnJlbnRLZXkiLCAiZ2V0TGVhZk5vZGUiLCAiZ2V0Tm9kZUZvckNoYXJhY3Rlck9mZnNldCIsICJvZmZzZXQiLCAibm9kZUVuZCIsICJjb250YWluc05vZGUiLCAib3V0ZXJOb2RlIiwgImlubmVyTm9kZSIsICJnZXRBY3RpdmVFbGVtZW50RGVlcCIsICJjb250YWluZXJJbmZvIiwgImhhc1NlbGVjdGlvbkNhcGFiaWxpdGllcyIsICJyZXN0b3JlU2VsZWN0aW9uIiwgInByaW9yU2VsZWN0aW9uSW5mb3JtYXRpb24iLCAiY3VyRm9jdXNlZEVsZW0iLCAicHJpb3JTZWxlY3Rpb25SYW5nZSIsICJsZW5ndGgiLCAiZW5kTWFya2VyIiwgInNraXBTZWxlY3Rpb25DaGFuZ2VFdmVudCIsICJhY3RpdmVFbGVtZW50IiwgImFjdGl2ZUVsZW1lbnRJbnN0IiwgImxhc3RTZWxlY3Rpb24iLCAibW91c2VEb3duIiwgImNvbnN0cnVjdFNlbGVjdEV2ZW50IiwgIm1ha2VQcmVmaXhNYXAiLCAic3R5bGVQcm9wIiwgImV2ZW50TmFtZSIsICJwcmVmaXhlcyIsICJ2ZW5kb3JQcmVmaXhlcyIsICJwcmVmaXhlZEV2ZW50TmFtZXMiLCAiZ2V0VmVuZG9yUHJlZml4ZWRFdmVudE5hbWUiLCAicHJlZml4TWFwIiwgIkFOSU1BVElPTl9FTkQiLCAiQU5JTUFUSU9OX0lURVJBVElPTiIsICJBTklNQVRJT05fU1RBUlQiLCAiVFJBTlNJVElPTl9SVU4iLCAiVFJBTlNJVElPTl9TVEFSVCIsICJUUkFOU0lUSU9OX0NBTkNFTCIsICJUUkFOU0lUSU9OX0VORCIsICJ0b3BMZXZlbEV2ZW50c1RvUmVhY3ROYW1lcyIsICJzaW1wbGVFdmVudFBsdWdpbkV2ZW50cyIsICJyZWdpc3RlclNpbXBsZUV2ZW50IiwgImNvbmN1cnJlbnRRdWV1ZXMiLCAiY29uY3VycmVudFF1ZXVlc0luZGV4IiwgImNvbmN1cnJlbnRseVVwZGF0ZWRMYW5lcyIsICJmaW5pc2hRdWV1ZWluZ0NvbmN1cnJlbnRVcGRhdGVzIiwgImVuZEluZGV4IiwgInF1ZXVlIiwgInBlbmRpbmciLCAibWFya1VwZGF0ZUxhbmVGcm9tRmliZXJUb1Jvb3QiLCAiZW5xdWV1ZVVwZGF0ZSQxIiwgImVucXVldWVDb25jdXJyZW50SG9va1VwZGF0ZSIsICJnZXRSb290Rm9yVXBkYXRlZEZpYmVyIiwgImVucXVldWVDb25jdXJyZW50UmVuZGVyRm9yTGFuZSIsICJzb3VyY2VGaWJlciIsICJpc0hpZGRlbiIsICJwYXJlbnQiLCAibmVzdGVkVXBkYXRlQ291bnQiLCAicm9vdFdpdGhOZXN0ZWRVcGRhdGVzIiwgImVtcHR5Q29udGV4dE9iamVjdCIsICJDYXB0dXJlZFN0YWNrcyIsICJjcmVhdGVDYXB0dXJlZFZhbHVlQXRGaWJlciIsICJzb3VyY2UiLCAiZXhpc3RpbmciLCAiZm9ya1N0YWNrIiwgImZvcmtTdGFja0luZGV4IiwgInRyZWVGb3JrUHJvdmlkZXIiLCAidHJlZUZvcmtDb3VudCIsICJpZFN0YWNrIiwgImlkU3RhY2tJbmRleCIsICJ0cmVlQ29udGV4dFByb3ZpZGVyIiwgInRyZWVDb250ZXh0SWQiLCAidHJlZUNvbnRleHRPdmVyZmxvdyIsICJwdXNoVHJlZUZvcmsiLCAidG90YWxDaGlsZHJlbiIsICJwdXNoVHJlZUlkIiwgImJhc2VJZFdpdGhMZWFkaW5nQml0IiwgImJhc2VMZW5ndGgiLCAibnVtYmVyT2ZPdmVyZmxvd0JpdHMiLCAicHVzaE1hdGVyaWFsaXplZFRyZWVJZCIsICJwb3BUcmVlQ29udGV4dCIsICJoeWRyYXRpb25QYXJlbnRGaWJlciIsICJuZXh0SHlkcmF0YWJsZUluc3RhbmNlIiwgImh5ZHJhdGlvbkVycm9ycyIsICJyb290T3JTaW5nbGV0b25Db250ZXh0IiwgIkh5ZHJhdGlvbk1pc21hdGNoRXhjZXB0aW9uIiwgInRocm93T25IeWRyYXRpb25NaXNtYXRjaCIsICJlcnJvciIsICJxdWV1ZUh5ZHJhdGlvbkVycm9yIiwgInByZXBhcmVUb0h5ZHJhdGVIb3N0SW5zdGFuY2UiLCAiaW5zdGFuY2UiLCAibGlzdGVuVG9Ob25EZWxlZ2F0ZWRFdmVudCIsICJtZWRpYUV2ZW50VHlwZXMiLCAiY2hlY2tGb3JVbm1hdGNoZWRUZXh0IiwgIm5vb3AkMSIsICJwb3BUb05leHRIb3N0UGFyZW50IiwgInBvcEh5ZHJhdGlvblN0YXRlIiwgInNob3VsZENsZWFyIiwgIkpTQ29tcGlsZXJfdGVtcCIsICJzaG91bGRTZXRUZXh0Q29udGVudCIsICJnZXROZXh0SHlkcmF0YWJsZSIsICJyZXNldEh5ZHJhdGlvblN0YXRlIiwgIlN1c3BlbnNlRXhjZXB0aW9uIiwgIlN1c3BlbnNleUNvbW1pdEV4Y2VwdGlvbiIsICJub29wU3VzcGVuc2V5Q29tbWl0VGhlbmFibGUiLCAiaXNUaGVuYWJsZVJlc29sdmVkIiwgInRoZW5hYmxlIiwgIm5vb3AkMyIsICJ0cmFja1VzZWRUaGVuYWJsZSIsICJ0aGVuYWJsZVN0YXRlIiwgIndvcmtJblByb2dyZXNzUm9vdCIsICJmdWxmaWxsZWRWYWx1ZSIsICJmdWxmaWxsZWRUaGVuYWJsZSIsICJyZWplY3RlZFRoZW5hYmxlIiwgInN1c3BlbmRlZFRoZW5hYmxlIiwgImdldFN1c3BlbmRlZFRoZW5hYmxlIiwgInRoZW5hYmxlU3RhdGUkMSIsICJ0aGVuYWJsZUluZGV4Q291bnRlciQxIiwgInVud3JhcFRoZW5hYmxlIiwgImNvZXJjZVJlZiIsICJ0aHJvd09uSW52YWxpZE9iamVjdFR5cGUiLCAicmV0dXJuRmliZXIiLCAibmV3Q2hpbGQiLCAicmVzb2x2ZUxhenkiLCAibGF6eVR5cGUiLCAiaW5pdCIsICJjcmVhdGVDaGlsZFJlY29uY2lsZXIiLCAic2hvdWxkVHJhY2tTaWRlRWZmZWN0cyIsICJkZWxldGVDaGlsZCIsICJjaGlsZFRvRGVsZXRlIiwgImRlbGV0aW9ucyIsICJkZWxldGVSZW1haW5pbmdDaGlsZHJlbiIsICJjdXJyZW50Rmlyc3RDaGlsZCIsICJtYXBSZW1haW5pbmdDaGlsZHJlbiIsICJleGlzdGluZ0NoaWxkcmVuIiwgInVzZUZpYmVyIiwgInBlbmRpbmdQcm9wcyIsICJjcmVhdGVXb3JrSW5Qcm9ncmVzcyIsICJwbGFjZUNoaWxkIiwgIm5ld0ZpYmVyIiwgImxhc3RQbGFjZWRJbmRleCIsICJuZXdJbmRleCIsICJwbGFjZVNpbmdsZUNoaWxkIiwgInVwZGF0ZVRleHROb2RlIiwgImN1cnJlbnQiLCAidGV4dENvbnRlbnQiLCAiY3JlYXRlRmliZXJGcm9tVGV4dCIsICJ1cGRhdGVFbGVtZW50IiwgImVsZW1lbnRUeXBlIiwgInVwZGF0ZUZyYWdtZW50IiwgImNyZWF0ZUZpYmVyRnJvbVR5cGVBbmRQcm9wcyIsICJ1cGRhdGVQb3J0YWwiLCAicG9ydGFsIiwgImNyZWF0ZUZpYmVyRnJvbVBvcnRhbCIsICJmcmFnbWVudCIsICJjcmVhdGVGaWJlckZyb21GcmFnbWVudCIsICJjcmVhdGVDaGlsZCIsICJyZWFkQ29udGV4dER1cmluZ1JlY29uY2lsaWF0aW9uIiwgInVwZGF0ZVNsb3QiLCAib2xkRmliZXIiLCAidXBkYXRlRnJvbU1hcCIsICJuZXdJZHgiLCAicmVjb25jaWxlQ2hpbGRyZW5BcnJheSIsICJuZXdDaGlsZHJlbiIsICJyZXN1bHRpbmdGaXJzdENoaWxkIiwgInByZXZpb3VzTmV3RmliZXIiLCAibmV4dE9sZEZpYmVyIiwgImNoaWxkIiwgInJlY29uY2lsZUNoaWxkcmVuSXRlcmF0b3IiLCAic3RlcCIsICJyZWNvbmNpbGVDaGlsZEZpYmVyc0ltcGwiLCAiZmlyc3RDaGlsZEZpYmVyIiwgImNyZWF0ZUZpYmVySW1wbENsYXNzIiwgInJlY29uY2lsZUNoaWxkRmliZXJzIiwgIm1vdW50Q2hpbGRGaWJlcnMiLCAiY3VycmVudFRyZWVIaWRkZW5TdGFja0N1cnNvciIsICJwcmV2RW50YW5nbGVkUmVuZGVyTGFuZXNDdXJzb3IiLCAicHVzaEhpZGRlbkNvbnRleHQiLCAiZW50YW5nbGVkUmVuZGVyTGFuZXMiLCAicmV1c2VIaWRkZW5Db250ZXh0T25TdGFjayIsICJwb3BIaWRkZW5Db250ZXh0IiwgInN1c3BlbnNlSGFuZGxlclN0YWNrQ3Vyc29yIiwgInNoZWxsQm91bmRhcnkiLCAicHVzaFByaW1hcnlUcmVlU3VzcGVuc2VIYW5kbGVyIiwgImhhbmRsZXIiLCAic3VzcGVuc2VTdGFja0N1cnNvciIsICJwdXNoT2Zmc2NyZWVuU3VzcGVuc2VIYW5kbGVyIiwgInJldXNlU3VzcGVuc2VIYW5kbGVyT25TdGFjayIsICJwb3BTdXNwZW5zZUhhbmRsZXIiLCAiZmluZEZpcnN0U3VzcGVuZGVkIiwgInJvdyIsICJzdGF0ZSIsICJBYm9ydENvbnRyb2xsZXJMb2NhbCIsICJsaXN0ZW5lcnMiLCAic2lnbmFsIiwgImxpc3RlbmVyIiwgInNjaGVkdWxlQ2FsbGJhY2skMiIsICJOb3JtYWxQcmlvcml0eSIsICJDYWNoZUNvbnRleHQiLCAiY3JlYXRlQ2FjaGUiLCAicmVsZWFzZUNhY2hlIiwgImNhY2hlIiwgImN1cnJlbnRFbnRhbmdsZWRMaXN0ZW5lcnMiLCAiY3VycmVudEVudGFuZ2xlZFBlbmRpbmdDb3VudCIsICJjdXJyZW50RW50YW5nbGVkTGFuZSIsICJjdXJyZW50RW50YW5nbGVkQWN0aW9uVGhlbmFibGUiLCAiZW50YW5nbGVBc3luY0FjdGlvbiIsICJ0cmFuc2l0aW9uIiwgImVudGFuZ2xlZExpc3RlbmVycyIsICJyZXF1ZXN0VHJhbnNpdGlvbkxhbmUiLCAicmVzb2x2ZSIsICJwaW5nRW5ndGFuZ2xlZEFjdGlvblNjb3BlIiwgImNoYWluVGhlbmFibGVWYWx1ZSIsICJyZXN1bHQiLCAidGhlbmFibGVXaXRoT3ZlcnJpZGUiLCAicHJldk9uU3RhcnRUcmFuc2l0aW9uRmluaXNoIiwgInJldHVyblZhbHVlIiwgInJlc3VtZWRDYWNoZSIsICJwZWVrQ2FjaGVGcm9tUG9vbCIsICJjYWNoZVJlc3VtZWRGcm9tUHJldmlvdXNSZW5kZXIiLCAicHVzaFRyYW5zaXRpb24iLCAib2Zmc2NyZWVuV29ya0luUHJvZ3Jlc3MiLCAicHJldkNhY2hlUG9vbCIsICJnZXRTdXNwZW5kZWRDYWNoZSIsICJjYWNoZUZyb21Qb29sIiwgImN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyJDEiLCAiY3VycmVudEhvb2siLCAid29ya0luUHJvZ3Jlc3NIb29rIiwgImRpZFNjaGVkdWxlUmVuZGVyUGhhc2VVcGRhdGUiLCAiZGlkU2NoZWR1bGVSZW5kZXJQaGFzZVVwZGF0ZUR1cmluZ1RoaXNQYXNzIiwgInNob3VsZERvdWJsZUludm9rZVVzZXJGbnNJbkhvb2tzREVWIiwgImxvY2FsSWRDb3VudGVyIiwgInRoZW5hYmxlSW5kZXhDb3VudGVyIiwgImdsb2JhbENsaWVudElkQ291bnRlciIsICJ0aHJvd0ludmFsaWRIb29rRXJyb3IiLCAiYXJlSG9va0lucHV0c0VxdWFsIiwgIm5leHREZXBzIiwgInByZXZEZXBzIiwgInJlbmRlcldpdGhIb29rcyIsICJDb21wb25lbnQiLCAic2Vjb25kQXJnIiwgIm5leHRSZW5kZXJMYW5lcyIsICJIb29rc0Rpc3BhdGNoZXJPbk1vdW50IiwgIkhvb2tzRGlzcGF0Y2hlck9uVXBkYXRlIiwgInJlbmRlcldpdGhIb29rc0FnYWluIiwgImZpbmlzaFJlbmRlcmluZ0hvb2tzIiwgIkNvbnRleHRPbmx5RGlzcGF0Y2hlciIsICJkaWRSZW5kZXJUb29GZXdIb29rcyIsICJkaWRSZWNlaXZlVXBkYXRlIiwgImNoZWNrSWZDb250ZXh0Q2hhbmdlZCIsICJudW1iZXJPZlJlUmVuZGVycyIsICJIb29rc0Rpc3BhdGNoZXJPblJlcmVuZGVyIiwgIlRyYW5zaXRpb25Bd2FyZUhvc3RDb21wb25lbnQiLCAiZGlzcGF0Y2hlciIsICJtYXliZVRoZW5hYmxlIiwgInVzZVRoZW5hYmxlIiwgImNoZWNrRGlkUmVuZGVySWRIb29rIiwgImRpZFJlbmRlcklkSG9vayIsICJiYWlsb3V0SG9va3MiLCAicmVzZXRIb29rc09uVW53aW5kIiwgIm1vdW50V29ya0luUHJvZ3Jlc3NIb29rIiwgImhvb2siLCAidXBkYXRlV29ya0luUHJvZ3Jlc3NIb29rIiwgIm5leHRDdXJyZW50SG9vayIsICJuZXh0V29ya0luUHJvZ3Jlc3NIb29rIiwgImNyZWF0ZUZ1bmN0aW9uQ29tcG9uZW50VXBkYXRlUXVldWUiLCAidXNlIiwgInVzYWJsZSIsICJyZWFkQ29udGV4dCIsICJ1c2VNZW1vQ2FjaGUiLCAic2l6ZSIsICJtZW1vQ2FjaGUiLCAidXBkYXRlUXVldWUiLCAiYXJyYXkiLCAiYmFzaWNTdGF0ZVJlZHVjZXIiLCAiYWN0aW9uIiwgInVwZGF0ZVJlZHVjZXIiLCAicmVkdWNlciIsICJ1cGRhdGVSZWR1Y2VySW1wbCIsICJiYXNlUXVldWUiLCAicGVuZGluZ1F1ZXVlIiwgImJhc2VGaXJzdCIsICJuZXdCYXNlUXVldWVGaXJzdCIsICJuZXdCYXNlUXVldWVMYXN0IiwgImRpZFJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24kNTQiLCAid29ya0luUHJvZ3Jlc3NSb290UmVuZGVyTGFuZXMiLCAicmV2ZXJ0TGFuZSIsICJ3b3JrSW5Qcm9ncmVzc1Jvb3RTa2lwcGVkTGFuZXMiLCAicmVyZW5kZXJSZWR1Y2VyIiwgImRpc3BhdGNoIiwgImxhc3RSZW5kZXJQaGFzZVVwZGF0ZSIsICJuZXdTdGF0ZSIsICJ1cGRhdGVTeW5jRXh0ZXJuYWxTdG9yZSIsICJzdWJzY3JpYmUiLCAiZ2V0U25hcHNob3QiLCAiZ2V0U2VydmVyU25hcHNob3QiLCAiaXNIeWRyYXRpbmckanNjb21wJDAiLCAic25hcHNob3RDaGFuZ2VkIiwgInVwZGF0ZUVmZmVjdCIsICJzdWJzY3JpYmVUb1N0b3JlIiwgInB1c2hFZmZlY3QiLCAidXBkYXRlU3RvcmVJbnN0YW5jZSIsICJwdXNoU3RvcmVDb25zaXN0ZW5jeUNoZWNrIiwgInJlbmRlcmVkU25hcHNob3QiLCAibmV4dFNuYXBzaG90IiwgImNoZWNrSWZTbmFwc2hvdENoYW5nZWQiLCAiZm9yY2VTdG9yZVJlcmVuZGVyIiwgImxhdGVzdEdldFNuYXBzaG90IiwgIm5leHRWYWx1ZSIsICJzY2hlZHVsZVVwZGF0ZU9uRmliZXIiLCAibW91bnRTdGF0ZUltcGwiLCAiaW5pdGlhbFN0YXRlIiwgImluaXRpYWxTdGF0ZUluaXRpYWxpemVyIiwgInVwZGF0ZU9wdGltaXN0aWNJbXBsIiwgInBhc3N0aHJvdWdoIiwgImRpc3BhdGNoQWN0aW9uU3RhdGUiLCAiYWN0aW9uUXVldWUiLCAic2V0UGVuZGluZ1N0YXRlIiwgInNldFN0YXRlIiwgInBheWxvYWQiLCAiaXNSZW5kZXJQaGFzZVVwZGF0ZSIsICJhY3Rpb25Ob2RlIiwgInJ1bkFjdGlvblN0YXRlQWN0aW9uIiwgInByZXZTdGF0ZSIsICJwcmV2VHJhbnNpdGlvbiIsICJjdXJyZW50VHJhbnNpdGlvbiIsICJvblN0YXJ0VHJhbnNpdGlvbkZpbmlzaCIsICJoYW5kbGVBY3Rpb25SZXR1cm5WYWx1ZSIsICJvbkFjdGlvbkVycm9yIiwgImVycm9yJDYwIiwgIm5leHRTdGF0ZSIsICJvbkFjdGlvblN1Y2Nlc3MiLCAibm90aWZ5QWN0aW9uTGlzdGVuZXJzIiwgImxhc3QiLCAiYWN0aW9uU3RhdGVSZWR1Y2VyIiwgIm9sZFN0YXRlIiwgIm1vdW50QWN0aW9uU3RhdGUiLCAiaW5pdGlhbFN0YXRlUHJvcCIsICJzc3JGb3JtU3RhdGUiLCAiSlNDb21waWxlcl9pbmxpbmVfcmVzdWx0JGpzY29tcCQwIiwgImluUm9vdE9yU2luZ2xldG9uIiwgImRpc3BhdGNoU2V0U3RhdGUiLCAiZGlzcGF0Y2hPcHRpbWlzdGljU2V0U3RhdGUiLCAidXBkYXRlQWN0aW9uU3RhdGUiLCAic3RhdGVIb29rIiwgInVwZGF0ZUFjdGlvblN0YXRlSW1wbCIsICJjdXJyZW50U3RhdGVIb29rIiwgImFjdGlvblF1ZXVlSG9vayIsICJhY3Rpb25TdGF0ZUFjdGlvbkVmZmVjdCIsICJyZXJlbmRlckFjdGlvblN0YXRlIiwgImNyZWF0ZSIsICJkZXBzIiwgInVwZGF0ZVJlZiIsICJtb3VudEVmZmVjdEltcGwiLCAiZmliZXJGbGFncyIsICJob29rRmxhZ3MiLCAidXBkYXRlRWZmZWN0SW1wbCIsICJtb3VudEVmZmVjdCIsICJ1cGRhdGVJbnNlcnRpb25FZmZlY3QiLCAidXBkYXRlTGF5b3V0RWZmZWN0IiwgImltcGVyYXRpdmVIYW5kbGVFZmZlY3QiLCAicmVmIiwgInJlZkNsZWFudXAiLCAidXBkYXRlSW1wZXJhdGl2ZUhhbmRsZSIsICJtb3VudERlYnVnVmFsdWUiLCAidXBkYXRlQ2FsbGJhY2siLCAiY2FsbGJhY2siLCAidXBkYXRlTWVtbyIsICJuZXh0Q3JlYXRlIiwgIm1vdW50RGVmZXJyZWRWYWx1ZUltcGwiLCAiaW5pdGlhbFZhbHVlIiwgInJlcXVlc3REZWZlcnJlZExhbmUiLCAidXBkYXRlRGVmZXJyZWRWYWx1ZUltcGwiLCAicHJldlZhbHVlIiwgInN0YXJ0VHJhbnNpdGlvbiIsICJwZW5kaW5nU3RhdGUiLCAiZmluaXNoZWRTdGF0ZSIsICJ0aGVuYWJsZUZvckZpbmlzaGVkU3RhdGUiLCAiZGlzcGF0Y2hTZXRTdGF0ZUludGVybmFsIiwgInJlcXVlc3RVcGRhdGVMYW5lIiwgIm5vb3AkMiIsICJzdGFydEhvc3RUcmFuc2l0aW9uIiwgImZvcm1GaWJlciIsICJmb3JtRGF0YSIsICJlbnN1cmVGb3JtQ29tcG9uZW50SXNTdGF0ZWZ1bCIsICJyZXF1ZXN0Rm9ybVJlc2V0JDEiLCAiZXhpc3RpbmdTdGF0ZUhvb2siLCAiaW5pdGlhbFJlc2V0U3RhdGUiLCAicmVzZXRTdGF0ZVF1ZXVlIiwgInVzZUhvc3RUcmFuc2l0aW9uU3RhdHVzIiwgInVwZGF0ZUlkIiwgInVwZGF0ZVJlZnJlc2giLCAicmVmcmVzaENhY2hlIiwgInByb3ZpZGVyIiwgImNyZWF0ZVVwZGF0ZSIsICJyb290JDYzIiwgImVucXVldWVVcGRhdGUiLCAiZW50YW5nbGVUcmFuc2l0aW9ucyIsICJkaXNwYXRjaFJlZHVjZXJBY3Rpb24iLCAiZW5xdWV1ZVJlbmRlclBoYXNlVXBkYXRlIiwgImVudGFuZ2xlVHJhbnNpdGlvblVwZGF0ZSIsICJjdXJyZW50U3RhdGUiLCAiZWFnZXJTdGF0ZSIsICJ0aHJvd0lmRHVyaW5nUmVuZGVyIiwgInF1ZXVlTGFuZXMiLCAiaW5pdGlhbEFyZyIsICJpZGVudGlmaWVyUHJlZml4IiwgImlkV2l0aExlYWRpbmdCaXQiLCAiYm9vbGVhbk9yVGhlbmFibGUiLCAiYXBwbHlEZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCAiY3RvciIsICJnZXREZXJpdmVkU3RhdGVGcm9tUHJvcHMiLCAibmV4dFByb3BzIiwgImNsYXNzQ29tcG9uZW50VXBkYXRlciIsICJjb21wb25lbnQiLCAiY2hlY2tTaG91bGRDb21wb25lbnRVcGRhdGUiLCAib2xkUHJvcHMiLCAibmV3UHJvcHMiLCAibmV4dENvbnRleHQiLCAiY2FsbENvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMiLCAicmVzb2x2ZUNsYXNzQ29tcG9uZW50UHJvcHMiLCAiYmFzZVByb3BzIiwgInByb3BOYW1lJDY3IiwgInJlcG9ydEdsb2JhbEVycm9yIiwgImRlZmF1bHRPblVuY2F1Z2h0RXJyb3IiLCAiZGVmYXVsdE9uQ2F1Z2h0RXJyb3IiLCAiZGVmYXVsdE9uUmVjb3ZlcmFibGVFcnJvciIsICJsb2dVbmNhdWdodEVycm9yIiwgImVycm9ySW5mbyIsICJvblVuY2F1Z2h0RXJyb3IiLCAiZSQ2OCIsICJsb2dDYXVnaHRFcnJvciIsICJib3VuZGFyeSIsICJvbkNhdWdodEVycm9yIiwgImUkNjkiLCAiY3JlYXRlUm9vdEVycm9yVXBkYXRlIiwgImNyZWF0ZUNsYXNzRXJyb3JVcGRhdGUiLCAiaW5pdGlhbGl6ZUNsYXNzRXJyb3JVcGRhdGUiLCAiZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yIiwgImxlZ2FjeUVycm9yQm91bmRhcmllc1RoYXRBbHJlYWR5RmFpbGVkIiwgInN0YWNrIiwgInRocm93RXhjZXB0aW9uIiwgInJvb3RSZW5kZXJMYW5lcyIsICJwcm9wYWdhdGVQYXJlbnRDb250ZXh0Q2hhbmdlcyIsICJyZW5kZXJEaWRTdXNwZW5kRGVsYXlJZlBvc3NpYmxlIiwgIndvcmtJblByb2dyZXNzUm9vdEV4aXRTdGF0dXMiLCAiYXR0YWNoUGluZ0xpc3RlbmVyIiwgImVucXVldWVDYXB0dXJlZFVwZGF0ZSIsICJ3cmFwcGVyRXJyb3IiLCAid29ya0luUHJvZ3Jlc3NSb290Q29uY3VycmVudEVycm9ycyIsICJTZWxlY3RpdmVIeWRyYXRpb25FeGNlcHRpb24iLCAicmVjb25jaWxlQ2hpbGRyZW4iLCAibmV4dENoaWxkcmVuIiwgInVwZGF0ZUZvcndhcmRSZWYiLCAicHJvcHNXaXRob3V0UmVmIiwgInByZXBhcmVUb1JlYWRDb250ZXh0IiwgImJhaWxvdXRPbkFscmVhZHlGaW5pc2hlZFdvcmsiLCAidXBkYXRlTWVtb0NvbXBvbmVudCIsICJzaG91bGRDb25zdHJ1Y3QiLCAidXBkYXRlU2ltcGxlTWVtb0NvbXBvbmVudCIsICJjaGVja1NjaGVkdWxlZFVwZGF0ZU9yQ29udGV4dCIsICJwcmV2UHJvcHMiLCAidXBkYXRlRnVuY3Rpb25Db21wb25lbnQiLCAidXBkYXRlT2Zmc2NyZWVuQ29tcG9uZW50IiwgIm5leHRJc0RldGFjaGVkIiwgIm1hcmtSZWYiLCAiZGVmZXJIaWRkZW5PZmZzY3JlZW5Db21wb25lbnQiLCAibmV4dEJhc2VMYW5lcyIsICJyZXBsYXlGdW5jdGlvbkNvbXBvbmVudCIsICJ1cGRhdGVDbGFzc0NvbXBvbmVudCIsICJjb250ZXh0VHlwZSIsICJpbml0aWFsaXplVXBkYXRlUXVldWUiLCAicHJvY2Vzc1VwZGF0ZVF1ZXVlIiwgInN1c3BlbmRJZlVwZGF0ZVJlYWRGcm9tRW50YW5nbGVkQXN5bmNBY3Rpb24iLCAidW5yZXNvbHZlZE9sZFByb3BzIiwgIm9sZENvbnRleHQiLCAiY29udGV4dFR5cGUkanNjb21wJDAiLCAiaGFzRm9yY2VVcGRhdGUiLCAiY2xvbmVVcGRhdGVRdWV1ZSIsICJtb3VudEhvc3RSb290V2l0aG91dEh5ZHJhdGluZyIsICJTVVNQRU5ERURfTUFSS0VSIiwgIm1vdW50U3VzcGVuc2VPZmZzY3JlZW5TdGF0ZSIsICJnZXRSZW1haW5pbmdXb3JrSW5QcmltYXJ5VHJlZSIsICJwcmltYXJ5VHJlZURpZERlZmVyIiwgIndvcmtJblByb2dyZXNzRGVmZXJyZWRMYW5lIiwgInVwZGF0ZVN1c3BlbnNlQ29tcG9uZW50IiwgInNob3dGYWxsYmFjayIsICJkaWRTdXNwZW5kIiwgIm5leHRJbnN0YW5jZSIsICJKU0NvbXBpbGVyX3RlbXAkanNjb21wJDAiLCAiYyIsICJtb3VudFdvcmtJblByb2dyZXNzT2Zmc2NyZWVuRmliZXIiLCAibW91bnRTdXNwZW5zZVByaW1hcnlDaGlsZHJlbiIsICJyZXRyeVN1c3BlbnNlQ29tcG9uZW50V2l0aG91dEh5ZHJhdGluZyIsICJkaWdlc3QiLCAicmV0cnlEZWh5ZHJhdGVkU3VzcGVuc2VCb3VuZGFyeSIsICJwcmltYXJ5Q2hpbGRyZW4iLCAib2Zmc2NyZWVuUHJvcHMiLCAibW9kZSIsICJjcmVhdGVGaWJlckZyb21PZmZzY3JlZW4iLCAic2NoZWR1bGVTdXNwZW5zZVdvcmtPbkZpYmVyIiwgInByb3BhZ2F0aW9uUm9vdCIsICJzY2hlZHVsZUNvbnRleHRXb3JrT25QYXJlbnRQYXRoIiwgImluaXRTdXNwZW5zZUxpc3RSZW5kZXJTdGF0ZSIsICJpc0JhY2t3YXJkcyIsICJ0YWlsIiwgImxhc3RDb250ZW50Um93IiwgInRhaWxNb2RlIiwgInJlbmRlclN0YXRlIiwgInVwZGF0ZVN1c3BlbnNlTGlzdENvbXBvbmVudCIsICJyZXZlYWxPcmRlciIsICJhdHRlbXB0RWFybHlCYWlsb3V0SWZOb1NjaGVkdWxlZFVwZGF0ZSIsICJwdXNoUHJvdmlkZXIiLCAiZGlkU3VzcGVuZEJlZm9yZSIsICJiZWdpbldvcmsiLCAibGF6eUNvbXBvbmVudCIsICJwcm9wYWdhdGVDb250ZXh0Q2hhbmdlcyIsICJnZXRSZXNvdXJjZSIsICJnZXRPd25lckRvY3VtZW50RnJvbVJvb3RDb250YWluZXIiLCAic2V0SW5pdGlhbFByb3BlcnRpZXMiLCAicmVzb2x2ZVNpbmdsZXRvbkluc3RhbmNlIiwgImNhbkh5ZHJhdGVJbnN0YW5jZSIsICJjYW5IeWRyYXRlVGV4dEluc3RhbmNlIiwgInZhbHVlQ3Vyc29yIiwgImN1cnJlbnRseVJlbmRlcmluZ0ZpYmVyIiwgImxhc3RDb250ZXh0RGVwZW5kZW5jeSIsICJwcm92aWRlckZpYmVyIiwgInBvcFByb3ZpZGVyIiwgImNvbnRleHRzIiwgImZvcmNlUHJvcGFnYXRlRW50aXJlVHJlZSIsICJsaXN0IiwgIm5leHRGaWJlciIsICJkZXBlbmRlbmN5IiwgImlzSW5zaWRlUHJvcGFnYXRpb25CYWlsb3V0IiwgImN1cnJlbnRQYXJlbnQiLCAiY3VycmVudERlcGVuZGVuY2llcyIsICJyZWFkQ29udGV4dEZvckNvbnN1bWVyIiwgImNvbnN1bWVyIiwgImV4ZWN1dGlvbkNvbnRleHQiLCAiY2FwdHVyZWRVcGRhdGUiLCAibmV3Rmlyc3QiLCAibmV3TGFzdCIsICJjbG9uZSIsICJkaWRSZWFkRnJvbUVudGFuZ2xlZEFzeW5jQWN0aW9uIiwgImVudGFuZ2xlZEFjdGlvblRoZW5hYmxlIiwgIndvcmtJblByb2dyZXNzJGpzY29tcCQwIiwgImluc3RhbmNlJGpzY29tcCQwIiwgImZpcnN0QmFzZVVwZGF0ZSIsICJsYXN0QmFzZVVwZGF0ZSIsICJsYXN0UGVuZGluZ1VwZGF0ZSIsICJmaXJzdFBlbmRpbmdVcGRhdGUiLCAiaXNIaWRkZW5VcGRhdGUiLCAiY2FsbENhbGxiYWNrIiwgImNvbW1pdENhbGxiYWNrcyIsICJjYWxsYmFja3MiLCAiY29tbWl0SG9va0VmZmVjdExpc3RNb3VudCIsICJmbGFncyIsICJmaW5pc2hlZFdvcmsiLCAibGFzdEVmZmVjdCIsICJmaXJzdEVmZmVjdCIsICJjYXB0dXJlQ29tbWl0UGhhc2VFcnJvciIsICJjb21taXRIb29rRWZmZWN0TGlzdFVubW91bnQiLCAibmVhcmVzdE1vdW50ZWRBbmNlc3RvciRqc2NvbXAkMCIsICJkZXN0cm95IiwgIm5lYXJlc3RNb3VudGVkQW5jZXN0b3IiLCAiY29tbWl0Q2xhc3NDYWxsYmFja3MiLCAic2FmZWx5Q2FsbENvbXBvbmVudFdpbGxVbm1vdW50IiwgInNhZmVseUF0dGFjaFJlZiIsICJpbnN0YW5jZVRvVXNlIiwgInNhZmVseURldGFjaFJlZiIsICJlcnJvciQxMTIiLCAiY29tbWl0SG9zdE1vdW50IiwgImNvbW1pdEhvc3RVcGRhdGUiLCAiZG9tRWxlbWVudCIsICJ1cGRhdGVQcm9wZXJ0aWVzIiwgImlzSG9zdFBhcmVudCIsICJnZXRIb3N0U2libGluZyIsICJpbnNlcnRPckFwcGVuZFBsYWNlbWVudE5vZGVJbnRvQ29udGFpbmVyIiwgImJlZm9yZSIsICJpbnNlcnRPckFwcGVuZFBsYWNlbWVudE5vZGUiLCAib2Zmc2NyZWVuU3VidHJlZUlzSGlkZGVuIiwgIm9mZnNjcmVlblN1YnRyZWVXYXNIaWRkZW4iLCAibmVlZHNGb3JtUmVzZXQiLCAiUG9zc2libHlXZWFrU2V0IiwgIm5leHRFZmZlY3QiLCAic2hvdWxkRmlyZUFmdGVyQWN0aXZlSW5zdGFuY2VCbHVyIiwgImNvbW1pdEJlZm9yZU11dGF0aW9uRWZmZWN0cyIsICJldmVudHNFbmFibGVkIiwgIl9lbmFibGVkIiwgInNlbGVjdGlvbiIsICJhbmNob3JPZmZzZXQiLCAiZm9jdXNOb2RlIiwgImluZGV4V2l0aGluQW5jaG9yIiwgImluZGV4V2l0aGluRm9jdXMiLCAibmV4dCIsICJzZWxlY3Rpb25JbmZvcm1hdGlvbiIsICJyZXNvbHZlZFByZXZQcm9wcyIsICJjbGVhckNvbnRhaW5lclNwYXJpbmdseSIsICJjb21taXRMYXlvdXRFZmZlY3RPbkZpYmVyIiwgImZpbmlzaGVkUm9vdCIsICJyZWN1cnNpdmVseVRyYXZlcnNlTGF5b3V0RWZmZWN0cyIsICJlcnJvciQxMTEiLCAiY29tbWl0U3VzcGVuc2VIeWRyYXRpb25DYWxsYmFja3MiLCAicHJldk9mZnNjcmVlblN1YnRyZWVJc0hpZGRlbiIsICJwcmV2T2Zmc2NyZWVuU3VidHJlZVdhc0hpZGRlbiIsICJyZWN1cnNpdmVseVRyYXZlcnNlUmVhcHBlYXJMYXlvdXRFZmZlY3RzIiwgImRldGFjaEZpYmVyQWZ0ZXJFZmZlY3RzIiwgImhvc3RQYXJlbnQiLCAiaG9zdFBhcmVudElzQ29udGFpbmVyIiwgInJlY3Vyc2l2ZWx5VHJhdmVyc2VEZWxldGlvbkVmZmVjdHMiLCAiY29tbWl0RGVsZXRpb25FZmZlY3RzT25GaWJlciIsICJkZWxldGVkRmliZXIiLCAicHJldkhvc3RQYXJlbnQiLCAicHJldkhvc3RQYXJlbnRJc0NvbnRhaW5lciIsICJwcmV2SG9zdFBhcmVudElzQ29udGFpbmVyJDExOSIsICJjbGVhclN1c3BlbnNlQm91bmRhcnkiLCAicmV0cnlJZkJsb2NrZWRPbiIsICJnZXRSZXRyeUNhY2hlIiwgInJldHJ5Q2FjaGUiLCAiYXR0YWNoU3VzcGVuc2VSZXRyeUxpc3RlbmVycyIsICJ3YWtlYWJsZXMiLCAid2FrZWFibGUiLCAicmV0cnkiLCAicmVzb2x2ZVJldHJ5V2FrZWFibGUiLCAicmVjdXJzaXZlbHlUcmF2ZXJzZU11dGF0aW9uRWZmZWN0cyIsICJyb290JGpzY29tcCQwIiwgInBhcmVudEZpYmVyIiwgImNvbW1pdE11dGF0aW9uRWZmZWN0c09uRmliZXIiLCAiY3VycmVudEhvaXN0YWJsZVJvb3QiLCAiY29tbWl0UmVjb25jaWxpYXRpb25FZmZlY3RzIiwgImhvaXN0YWJsZVJvb3QiLCAiY3VycmVudFJlc291cmNlIiwgIm1heWJlTm9kZXMiLCAiZ2V0SHlkcmF0YWJsZUhvaXN0YWJsZUNhY2hlIiwgIm1vdW50SG9pc3RhYmxlIiwgImFjcXVpcmVSZXNvdXJjZSIsICJuZXh0Tm9kZSIsICJhdHRyaWJ1dGVzIiwgInRhZ0NhY2hlcyIsICJnZXRIb2lzdGFibGVSb290IiwgInJlY3Vyc2l2ZWx5UmVzZXRGb3JtcyIsICJnbG9iYWxNb3N0UmVjZW50RmFsbGJhY2tUaW1lIiwgInJlY3Vyc2l2ZWx5VHJhdmVyc2VEaXNhcHBlYXJMYXlvdXRFZmZlY3RzIiwgImRpc3BsYXkiLCAicGFyZW50JGpzY29tcCQwIiwgInBhcmVudCQxMTMiLCAiYmVmb3JlJDExNCIsICJwYXJlbnQkMTE1IiwgImJlZm9yZSQxMTYiLCAiZmluaXNoZWRSb290JGpzY29tcCQwIiwgImluY2x1ZGVXb3JrSW5Qcm9ncmVzc0VmZmVjdHMiLCAiaGlkZGVuQ2FsbGJhY2tzIiwgImNvbW1pdE9mZnNjcmVlblBhc3NpdmVNb3VudEVmZmVjdHMiLCAicHJldmlvdXNDYWNoZSIsICJjb21taXRDYWNoZVBhc3NpdmVNb3VudEVmZmVjdCIsICJyZWN1cnNpdmVseVRyYXZlcnNlUGFzc2l2ZU1vdW50RWZmZWN0cyIsICJjb21taXR0ZWRMYW5lcyIsICJjb21taXR0ZWRUcmFuc2l0aW9ucyIsICJjb21taXRQYXNzaXZlTW91bnRPbkZpYmVyIiwgIl9maW5pc2hlZFdvcmskbWVtb2l6ZTIiLCAiaWQiLCAib25Qb3N0Q29tbWl0IiwgInJlY3Vyc2l2ZWx5VHJhdmVyc2VBdG9taWNQYXNzaXZlRWZmZWN0cyIsICJyZWN1cnNpdmVseVRyYXZlcnNlUmVjb25uZWN0UGFzc2l2ZUVmZmVjdHMiLCAiY29tbWl0dGVkTGFuZXMkanNjb21wJDAiLCAiY29tbWl0dGVkVHJhbnNpdGlvbnMkanNjb21wJDAiLCAic3VzcGVuc2V5Q29tbWl0RmxhZyIsICJyZWN1cnNpdmVseUFjY3VtdWxhdGVTdXNwZW5zZXlDb21taXQiLCAiYWNjdW11bGF0ZVN1c3BlbnNleUNvbW1pdE9uRmliZXIiLCAic3VzcGVuZFJlc291cmNlIiwgInByZXZpb3VzSG9pc3RhYmxlUm9vdCIsICJkZXRhY2hBbHRlcm5hdGVTaWJsaW5ncyIsICJwcmV2aW91c0ZpYmVyIiwgInJlY3Vyc2l2ZWx5VHJhdmVyc2VQYXNzaXZlVW5tb3VudEVmZmVjdHMiLCAiY29tbWl0UGFzc2l2ZVVubW91bnRFZmZlY3RzSW5zaWRlT2ZEZWxldGVkVHJlZV9iZWdpbiIsICJjb21taXRQYXNzaXZlVW5tb3VudE9uRmliZXIiLCAicmVjdXJzaXZlbHlUcmF2ZXJzZURpc2Nvbm5lY3RQYXNzaXZlRWZmZWN0cyIsICJkZWxldGVkU3VidHJlZVJvb3QiLCAic2libGluZyIsICJGaWJlck5vZGUiLCAicmVzZXRXb3JrSW5Qcm9ncmVzcyIsICJvd25lciIsICJmaWJlclRhZyIsICJpc0hvc3RIb2lzdGFibGVUeXBlIiwgImVsZW1lbnRzIiwgInByaW1hcnlDaGlsZEluc3RhbmNlIiwgImNvbnRlbnQiLCAibWFya1VwZGF0ZSIsICJwcmVsb2FkUmVzb3VyY2VBbmRTdXNwZW5kSWZOZWVkZWQiLCAicmVzb3VyY2UiLCAicHJlbG9hZFJlc291cmNlIiwgInNjaGVkdWxlUmV0cnlFZmZlY3QiLCAicmV0cnlRdWV1ZSIsICJ3b3JrSW5Qcm9ncmVzc1N1c3BlbmRlZFJldHJ5TGFuZXMiLCAiY3V0T2ZmVGFpbElmTmVlZGVkIiwgImhhc1JlbmRlcmVkQVRhaWxGYWxsYmFjayIsICJsYXN0VGFpbE5vZGUiLCAibGFzdFRhaWxOb2RlJDEzMSIsICJidWJibGVQcm9wZXJ0aWVzIiwgImNvbXBsZXRlZFdvcmsiLCAiZGlkQmFpbG91dCIsICJuZXdDaGlsZExhbmVzIiwgInN1YnRyZWVGbGFncyIsICJjaGlsZCQxMzIiLCAiY29tcGxldGVXb3JrIiwgInF1ZXVlUmVjb3ZlcmFibGVFcnJvcnMiLCAiY2FjaGUkMTQ0IiwgImxpc3RlblRvQWxsU3VwcG9ydGVkRXZlbnRzIiwgIndvcmtJblByb2dyZXNzUm9vdFJlbmRlclRhcmdldFRpbWUiLCAidW53aW5kV29yayIsICJ1bndpbmRJbnRlcnJ1cHRlZFdvcmsiLCAiaW50ZXJydXB0ZWRXb3JrIiwgIkRlZmF1bHRBc3luY0Rpc3BhdGNoZXIiLCAicmVzb3VyY2VUeXBlIiwgImNhY2hlRm9yVHlwZSIsICJQb3NzaWJseVdlYWtNYXAiLCAid29ya0luUHJvZ3Jlc3NTdXNwZW5kZWRSZWFzb24iLCAid29ya0luUHJvZ3Jlc3NUaHJvd25WYWx1ZSIsICJ3b3JrSW5Qcm9ncmVzc1Jvb3REaWRTa2lwU3VzcGVuZGVkU2libGluZ3MiLCAid29ya0luUHJvZ3Jlc3NSb290SXNQcmVyZW5kZXJpbmciLCAid29ya0luUHJvZ3Jlc3NSb290RGlkQXR0YWNoUGluZ0xpc3RlbmVyIiwgIndvcmtJblByb2dyZXNzUm9vdEludGVybGVhdmVkVXBkYXRlZExhbmVzIiwgIndvcmtJblByb2dyZXNzUm9vdFBpbmdlZExhbmVzIiwgIndvcmtJblByb2dyZXNzUm9vdFJlY292ZXJhYmxlRXJyb3JzIiwgIndvcmtJblByb2dyZXNzUm9vdERpZEluY2x1ZGVSZWN1cnNpdmVSZW5kZXJVcGRhdGUiLCAid29ya0luUHJvZ3Jlc3NUcmFuc2l0aW9ucyIsICJyb290RG9lc0hhdmVQYXNzaXZlRWZmZWN0cyIsICJyb290V2l0aFBlbmRpbmdQYXNzaXZlRWZmZWN0cyIsICJwZW5kaW5nUGFzc2l2ZUVmZmVjdHNMYW5lcyIsICJwZW5kaW5nUGFzc2l2ZUVmZmVjdHNSZW1haW5pbmdMYW5lcyIsICJwZW5kaW5nUGFzc2l2ZVRyYW5zaXRpb25zIiwgImFjdGlvblNjb3BlTGFuZSIsICJzdXNwZW5zZUhhbmRsZXIiLCAicHJlcGFyZUZyZXNoU3RhY2siLCAibWFya1Jvb3RTdXNwZW5kZWQiLCAiZW5zdXJlUm9vdElzU2NoZWR1bGVkIiwgInBlcmZvcm1Xb3JrT25Sb290IiwgImZvcmNlU3luYyIsICJzaG91bGRUaW1lU2xpY2UiLCAiZXhpdFN0YXR1cyIsICJyZW5kZXJSb290Q29uY3VycmVudCIsICJyZW5kZXJSb290U3luYyIsICJyZW5kZXJXYXNDb25jdXJyZW50IiwgImlzUmVuZGVyQ29uc2lzdGVudFdpdGhFeHRlcm5hbFN0b3JlcyIsICJ3YXNSb290RGVoeWRyYXRlZCIsICJzY2hlZHVsZVRpbWVvdXQiLCAiY29tbWl0Um9vdFdoZW5SZWFkeSIsICJlcnJvcnMiLCAicmVjb3ZlcmFibGVFcnJvcnMiLCAidHJhbnNpdGlvbnMiLCAiZGlkSW5jbHVkZVJlbmRlclBoYXNlVXBkYXRlIiwgImRpZFNraXBTdXNwZW5kZWRTaWJsaW5ncyIsICJzdXNwZW5kZWRDb21taXRSZWFzb24iLCAiY29tcGxldGVkUmVuZGVyU3RhcnRUaW1lIiwgImNvbXBsZXRlZFJlbmRlckVuZFRpbWUiLCAic3VzcGVuZGVkU3RhdGUiLCAibm9vcCIsICJ3YWl0Rm9yQ29tbWl0VG9CZVJlYWR5IiwgImNvbW1pdFJvb3QiLCAiY2hlY2siLCAiZGlkQXR0ZW1wdEVudGlyZVRyZWUiLCAiaW5kZXgkNiIsICJmbHVzaFN5bmNXb3JrQWNyb3NzUm9vdHNfaW1wbCIsICJyZXNldFdvcmtJblByb2dyZXNzU3RhY2siLCAidGltZW91dEhhbmRsZSIsICJjYW5jZWxUaW1lb3V0IiwgImFsbEVudGFuZ2xlZExhbmVzIiwgImluZGV4JDQiLCAiaGFuZGxlVGhyb3ciLCAidGhyb3duVmFsdWUiLCAicHVzaERpc3BhdGNoZXIiLCAicHJldkRpc3BhdGNoZXIiLCAicHVzaEFzeW5jRGlzcGF0Y2hlciIsICJwcmV2QXN5bmNEaXNwYXRjaGVyIiwgInNob3VsZFlpZWxkRm9yUHJlcmVuZGVyaW5nIiwgInByZXZFeGVjdXRpb25Db250ZXh0IiwgInVuaXRPZldvcmsiLCAicmVhc29uIiwgInRocm93QW5kVW53aW5kV29ya0xvb3AiLCAid29ya0xvb3BTeW5jIiwgInRocm93blZhbHVlJDE2NCIsICJwZXJmb3JtVW5pdE9mV29yayIsICJyZXBsYXlTdXNwZW5kZWRVbml0T2ZXb3JrIiwgImhvc3RGaWJlciIsICJjb21wbGV0ZVVuaXRPZldvcmsiLCAid29ya0xvb3BDb25jdXJyZW50IiwgInRocm93blZhbHVlJDE2NiIsICJzdXNwZW5kZWRSZWFzb24iLCAidW53aW5kVW5pdE9mV29yayIsICJza2lwU2libGluZ3MiLCAicHJldmlvdXNVcGRhdGVMYW5lUHJpb3JpdHkiLCAiY29tbWl0Um9vdEltcGwiLCAicmVuZGVyUHJpb3JpdHlMZXZlbCIsICJmbHVzaFBhc3NpdmVFZmZlY3RzIiwgInNjaGVkdWxlQ2FsbGJhY2skMSIsICJyZWxlYXNlUm9vdFBvb2xlZENhY2hlIiwgInJvb3QkMTcwIiwgInJlbmRlclByaW9yaXR5IiwgImNhcHR1cmVDb21taXRQaGFzZUVycm9yT25Sb290IiwgInJvb3RGaWJlciIsICJwaW5nQ2FjaGUiLCAidGhyZWFkSURzIiwgInBpbmdTdXNwZW5kZWRSb290IiwgInJldHJ5VGltZWRPdXRCb3VuZGFyeSIsICJib3VuZGFyeUZpYmVyIiwgInJldHJ5TGFuZSIsICJwcmlvcml0eUxldmVsIiwgImZpcnN0U2NoZWR1bGVkUm9vdCIsICJsYXN0U2NoZWR1bGVkUm9vdCIsICJkaWRTY2hlZHVsZU1pY3JvdGFzayIsICJtaWdodEhhdmVQZW5kaW5nU3luY1dvcmsiLCAiaXNGbHVzaGluZ1dvcmsiLCAiY3VycmVudEV2ZW50VHJhbnNpdGlvbkxhbmUiLCAic2NoZWR1bGVJbW1lZGlhdGVUYXNrIiwgInByb2Nlc3NSb290U2NoZWR1bGVJbk1pY3JvdGFzayIsICJzeW5jVHJhbnNpdGlvbkxhbmVzIiwgIm9ubHlMZWdhY3kiLCAiZGlkUGVyZm9ybVNvbWVXb3JrIiwgInJvb3QkMTcyIiwgInBlcmZvcm1TeW5jV29ya09uUm9vdCIsICJzaG91bGRBdHRlbXB0RWFnZXJUcmFuc2l0aW9uIiwgInByZXYiLCAic2NoZWR1bGVUYXNrRm9yUm9vdER1cmluZ01pY3JvdGFzayIsICJpbmRleCQ1IiwgImV4cGlyYXRpb25UaW1lIiwgInBlcmZvcm1Xb3JrT25Sb290VmlhU2NoZWR1bGVyVGFzayIsICJkaWRUaW1lb3V0IiwgIm9yaWdpbmFsQ2FsbGJhY2tOb2RlIiwgIndvcmtJblByb2dyZXNzUm9vdFJlbmRlckxhbmVzJGpzY29tcCQwIiwgImNiIiwgInNjaGVkdWxlTWljcm90YXNrIiwgImNvZXJjZUZvcm1BY3Rpb25Qcm9wIiwgImFjdGlvblByb3AiLCAiY3JlYXRlRm9ybURhdGFXaXRoU3VibWl0dGVyIiwgImZvcm0iLCAic3VibWl0dGVyIiwgInRlbXAiLCAiZXh0cmFjdEV2ZW50cyQxIiwgIm1heWJlVGFyZ2V0SW5zdCIsICJpJGpzY29tcCRpbmxpbmVfMTQzOSIsICJldmVudE5hbWUkanNjb21wJGlubGluZV8xNDQwIiwgImRvbUV2ZW50TmFtZSRqc2NvbXAkaW5saW5lXzE0NDEiLCAiY2FwaXRhbGl6ZWRFdmVudCRqc2NvbXAkaW5saW5lXzE0NDIiLCAibm9uRGVsZWdhdGVkRXZlbnRzIiwgImV2ZW50U3lzdGVtRmxhZ3MiLCAiX2Rpc3BhdGNoUXVldWUkaSIsICJwcmV2aW91c0luc3RhbmNlIiwgImkkanNjb21wJDAiLCAiX2Rpc3BhdGNoTGlzdGVuZXJzJGkiLCAiY3VycmVudFRhcmdldCIsICJ0YXJnZXRFbGVtZW50IiwgImxpc3RlbmVyU2V0S2V5IiwgImFkZFRyYXBwZWRFdmVudExpc3RlbmVyIiwgImxpc3RlblRvTmF0aXZlRXZlbnQiLCAiaXNDYXB0dXJlUGhhc2VMaXN0ZW5lciIsICJsaXN0ZW5pbmdNYXJrZXIiLCAicm9vdENvbnRhaW5lckVsZW1lbnQiLCAib3duZXJEb2N1bWVudCIsICJ0YXJnZXRDb250YWluZXIiLCAibGlzdGVuZXJXcmFwcGVyIiwgImRpc3BhdGNoRGlzY3JldGVFdmVudCIsICJkaXNwYXRjaENvbnRpbnVvdXNFdmVudCIsICJkaXNwYXRjaEV2ZW50IiwgImRpc3BhdGNoRXZlbnRGb3JQbHVnaW5FdmVudFN5c3RlbSIsICJ0YXJnZXRJbnN0JGpzY29tcCQwIiwgImFuY2VzdG9ySW5zdCIsICJub2RlVGFnIiwgImNvbnRhaW5lciIsICJncmFuZFRhZyIsICJTeW50aGV0aWNFdmVudEN0b3IiLCAiaW5DYXB0dXJlUGhhc2UiLCAiYWNjdW11bGF0ZVRhcmdldE9ubHkiLCAicmVhY3RFdmVudE5hbWUiLCAibGFzdEhvc3RDb21wb25lbnQiLCAiX2luc3RhbmNlIiwgImNyZWF0ZURpc3BhdGNoTGlzdGVuZXIiLCAiZ2V0UGFyZW50IiwgImFjY3VtdWxhdGVFbnRlckxlYXZlTGlzdGVuZXJzRm9yRXZlbnQiLCAiZ2V0VGFyZ2V0SW5zdEZ1bmMiLCAiaGFuZGxlRXZlbnRGdW5jIiwgImZhbGxiYWNrRGF0YSIsICJldmVudFR5cGUiLCAidGFyZ2V0RmliZXIiLCAiY2FwdHVyZU5hbWUiLCAiX2luc3RhbmNlMiIsICJjb21tb24iLCAiX2luc3RhbmNlMyIsICJOT1JNQUxJWkVfTkVXTElORVNfUkVHRVgiLCAiTk9STUFMSVpFX05VTExfQU5EX1JFUExBQ0VNRU5UX1JFR0VYIiwgIm5vcm1hbGl6ZU1hcmt1cEZvclRleHRPckF0dHJpYnV0ZSIsICJtYXJrdXAiLCAic2VydmVyVGV4dCIsICJjbGllbnRUZXh0IiwgInNldFByb3AiLCAic2V0UHJvcE9uQ3VzdG9tRWxlbWVudCIsICJoYXNTcmMiLCAiaGFzU3JjU2V0IiwgInByb3BLZXkiLCAicHJvcFZhbHVlJDE4NiIsICJsYXN0UHJvcHMiLCAibGFzdFByb3AiLCAicHJvcEtleSQyMDMiLCAicHJvcEtleSQyMTkiLCAicHJvcEtleSQyMjQiLCAicHJvcEtleSQyMjkiLCAicHJvcEtleSQyMzQiLCAibmFtZXNwYWNlVVJJIiwgInBhcmVudE5hbWVzcGFjZSIsICJjdXJyZW50UG9wc3RhdGVUcmFuc2l0aW9uRXZlbnQiLCAibG9jYWxQcm9taXNlIiwgImhhbmRsZUVycm9ySW5OZXh0VGljayIsICJwYXJlbnRJbnN0YW5jZSIsICJzdXNwZW5zZUluc3RhbmNlIiwgImRlcHRoIiwgImFueVByb3BzIiwgIm5vZGVUeXBlIiwgInRhcmdldEluc3RhbmNlIiwgImRhdGEiLCAicm9vdENvbnRhaW5lckluc3RhbmNlIiwgInByZWxvYWRQcm9wc01hcCIsICJwcmVjb25uZWN0c1NldCIsICJwcmV2aW91c0Rpc3BhdGNoZXIiLCAiZmx1c2hTeW5jV29yayIsICJyZXF1ZXN0Rm9ybVJlc2V0IiwgInByZWZldGNoRE5TIiwgInByZWNvbm5lY3QiLCAicHJlbG9hZCIsICJwcmVsb2FkTW9kdWxlIiwgInByZWluaXRTY3JpcHQiLCAicHJlaW5pdFN0eWxlIiwgInByZWluaXRNb2R1bGVTY3JpcHQiLCAicHJldmlvdXNXYXNSZW5kZXJpbmciLCAid2FzUmVuZGVyaW5nIiwgImZvcm1JbnN0IiwgImdsb2JhbERvY3VtZW50IiwgInByZWNvbm5lY3RBcyIsICJyZWwiLCAiaHJlZiIsICJjcm9zc09yaWdpbiIsICJsaW1pdGVkRXNjYXBlZEhyZWYiLCAiYXMiLCAicHJlbG9hZFNlbGVjdG9yIiwgImdldFN0eWxlS2V5IiwgImdldFNjcmlwdEtleSIsICJnZXRTdHlsZXNoZWV0U2VsZWN0b3JGcm9tS2V5IiwgImdldFNjcmlwdFNlbGVjdG9yRnJvbUtleSIsICJwcmVjZWRlbmNlIiwgImFkb3B0UHJlbG9hZFByb3BzRm9yU3R5bGVzaGVldCIsICJsaW5rIiwgInJlamVjdCIsICJpbnNlcnRTdHlsZXNoZWV0IiwgInNyYyIsICJzY3JpcHRzIiwgImFkb3B0UHJlbG9hZFByb3BzRm9yU2NyaXB0IiwgImN1cnJlbnRQcm9wcyIsICJzdHlsZXMkMjQyIiwgInJlc291cmNlJDI0MyIsICJwcmVsb2FkU3R5bGVzaGVldCIsICJzdHlsZXNoZWV0UHJvcHNGcm9tUmF3UHJvcHMiLCAicmF3UHJvcHMiLCAicHJlbG9hZFByb3BzIiwgInN0eWxlUHJvcHMiLCAiaW5zdGFuY2UkMjQ4IiwgImxpbmtJbnN0YW5jZSIsICJub2RlcyIsICJwcmlvciIsICJzdHlsZXNoZWV0UHJvcHMiLCAic2NyaXB0UHJvcHMiLCAia2V5QXR0cmlidXRlIiwgImNhY2hlcyIsICJub2RlS2V5IiwgImhvc3RDb250ZXh0IiwgIm9uVW5zdXNwZW5kIiwgImluc2VydFN1c3BlbmRlZFN0eWxlc2hlZXRzIiwgImNvbW1pdCIsICJzdHlsZXNoZWV0VGltZXIiLCAidW5zdXNwZW5kIiwgInByZWNlZGVuY2VzQnlSb290IiwgImluc2VydFN0eWxlc2hlZXRJbnRvUm9vdCIsICJwcmVjZWRlbmNlcyIsICJGaWJlclJvb3ROb2RlIiwgImh5ZHJhdGUiLCAib25SZWNvdmVyYWJsZUVycm9yIiwgImZvcm1TdGF0ZSIsICJjcmVhdGVGaWJlclJvb3QiLCAiaW5pdGlhbENoaWxkcmVuIiwgImh5ZHJhdGlvbkNhbGxiYWNrcyIsICJpc1N0cmljdE1vZGUiLCAidHJhbnNpdGlvbkNhbGxiYWNrcyIsICJnZXRDb250ZXh0Rm9yU3VidHJlZSIsICJwYXJlbnRDb21wb25lbnQiLCAidXBkYXRlQ29udGFpbmVySW1wbCIsICJtYXJrUmV0cnlMYW5lSW1wbCIsICJtYXJrUmV0cnlMYW5lSWZOb3RIeWRyYXRlZCIsICJhdHRlbXB0Q29udGludW91c0h5ZHJhdGlvbiIsICJibG9ja2VkT24iLCAiZmluZEluc3RhbmNlQmxvY2tpbmdFdmVudCIsICJyZXR1cm5fdGFyZ2V0SW5zdCIsICJjbGVhcklmQ29udGludW91c0V2ZW50IiwgInF1ZXVlSWZDb250aW51b3VzRXZlbnQiLCAiZGlzY3JldGVSZXBsYXlhYmxlRXZlbnRzIiwgImZpbmRJbnN0YW5jZUJsb2NraW5nVGFyZ2V0IiwgImhhc1NjaGVkdWxlZFJlcGxheUF0dGVtcHQiLCAicXVldWVkRm9jdXMiLCAicXVldWVkRHJhZyIsICJxdWV1ZWRNb3VzZSIsICJxdWV1ZWRQb2ludGVycyIsICJxdWV1ZWRQb2ludGVyQ2FwdHVyZXMiLCAicXVldWVkRXhwbGljaXRIeWRyYXRpb25UYXJnZXRzIiwgImFjY3VtdWxhdGVPckNyZWF0ZUNvbnRpbnVvdXNRdWV1ZWRSZXBsYXlhYmxlRXZlbnQiLCAiZXhpc3RpbmdRdWV1ZWRFdmVudCIsICJwb2ludGVySWQiLCAiYXR0ZW1wdEV4cGxpY2l0SHlkcmF0aW9uVGFyZ2V0IiwgInF1ZXVlZFRhcmdldCIsICJhdHRlbXB0UmVwbGF5Q29udGludW91c1F1ZXVlZEV2ZW50IiwgInF1ZXVlZEV2ZW50IiwgInRhcmdldENvbnRhaW5lcnMiLCAibmV4dEJsb2NrZWRPbiIsICJuYXRpdmVFdmVudENsb25lIiwgImF0dGVtcHRSZXBsYXlDb250aW51b3VzUXVldWVkRXZlbnRJbk1hcCIsICJtYXAiLCAicmVwbGF5VW5ibG9ja2VkRXZlbnRzIiwgInNjaGVkdWxlQ2FsbGJhY2tJZlVuYmxvY2tlZCIsICJ1bmJsb2NrZWQiLCAibGFzdFNjaGVkdWxlZFJlcGxheVF1ZXVlIiwgInNjaGVkdWxlUmVwbGF5UXVldWVJZk5lZWRlZCIsICJmb3JtUmVwbGF5aW5nUXVldWUiLCAic3VibWl0dGVyT3JBY3Rpb24iLCAidW5ibG9jayIsICJmb3JtUHJvcHMiLCAiUmVhY3RET01Sb290IiwgImludGVybmFsUm9vdCIsICJSZWFjdERPTUh5ZHJhdGlvblJvb3QiLCAiaXNvbW9ycGhpY1JlYWN0UGFja2FnZVZlcnNpb24kanNjb21wJGlubGluZV8xNjg2IiwgImNvbXBvbmVudE9yRWxlbWVudCIsICJpbnRlcm5hbHMkanNjb21wJGlubGluZV8yMTY1IiwgImhvb2skanNjb21wJGlubGluZV8yMTY2IiwgInJlcXVpcmVfY2xpZW50IiwgIl9fY29tbW9uSlNNaW4iLCAiZXhwb3J0cyIsICJtb2R1bGUiLCAiY2hlY2tEQ0UiLCAiZXJyIiwgIlJlYWN0IiwgIlJlYWN0IiwgIlJlYWN0RE9NIiwgIlJlbmRlckNvbnRleHQiLCAidXNlUmVuZGVyQ29udGV4dCIsICJjdHgiLCAidXNlTW9kZWwiLCAidXNlTW9kZWxTdGF0ZSIsICJrZXkiLCAibW9kZWwiLCAidXNlTW9kZWwiLCAidmFsdWUiLCAic2V0VmFsdWUiLCAiY2FsbGJhY2siLCAiY3JlYXRlUmVuZGVyIiwgIldpZGdldCIsICJlbCIsICJleHBlcmltZW50YWwiLCAicm9vdCIsICJSZW5kZXJDb250ZXh0IiwgInJlbmRlciIsICJjcmVhdGVSZW5kZXIiLCAiY29uZmlnIiwgInVzZU1vZGVsU3RhdGUiLCAiaWZyYW1lUmVhZHkiLCAic2V0SWZyYW1lUmVhZHkiLCAicGFnZSIsICJzZXRQYWdlIiwgInNlcXVlbmNlcyIsICJzZXRTZXF1ZW5jZSIsICJyZWYiLCAibWVzc2FnZUxpc3RlbmVyIiwgImV2ZW50IiwgImkiLCAid2lkZ2V0X2RlZmF1bHQiXQp9Cg==
|