"use strict";(self.webpackChunksrsrfl_react=self.webpackChunksrsrfl_react||[]).push([[787],{3584:(e,t,o)=>{o.d(t,{Z:()=>c});var n=o(1354),r=o(7078),i=o(9617),a=o(606);const s=(0,o(1588).Z)("MuiBox",["root"]),l=(0,i.Z)(),c=(0,n.Z)({themeId:a.Z,defaultTheme:l,defaultClassName:s.root,generateClassName:r.Z.generate})},2574:(e,t,o)=>{o.d(t,{Z:()=>w});var n=o(3366),r=o(7462),i=o(7294),a=o(512),s=o(7925),l=o(4780),c=o(1796),d=o(948),u=o(1657),p=o(539),h=o(8216),m=o(1588),v=o(4867);function b(e){return(0,v.Z)("MuiButton",e)}const f=(0,m.Z)("MuiButton",["root","text","textInherit","textPrimary","textSecondary","textSuccess","textError","textInfo","textWarning","outlined","outlinedInherit","outlinedPrimary","outlinedSecondary","outlinedSuccess","outlinedError","outlinedInfo","outlinedWarning","contained","containedInherit","containedPrimary","containedSecondary","containedSuccess","containedError","containedInfo","containedWarning","disableElevation","focusVisible","disabled","colorInherit","textSizeSmall","textSizeMedium","textSizeLarge","outlinedSizeSmall","outlinedSizeMedium","outlinedSizeLarge","containedSizeSmall","containedSizeMedium","containedSizeLarge","sizeMedium","sizeSmall","sizeLarge","fullWidth","startIcon","endIcon","iconSizeSmall","iconSizeMedium","iconSizeLarge"]),g=i.createContext({}),x=i.createContext(void 0);var y=o(5893);const Z=["children","color","component","className","disabled","disableElevation","disableFocusRipple","endIcon","focusVisibleClassName","fullWidth","size","startIcon","type","variant"],S=e=>(0,r.Z)({},"small"===e.size&&{"& > *:nth-of-type(1)":{fontSize:18}},"medium"===e.size&&{"& > *:nth-of-type(1)":{fontSize:20}},"large"===e.size&&{"& > *:nth-of-type(1)":{fontSize:22}}),k=(0,d.ZP)(p.Z,{shouldForwardProp:e=>(0,d.FO)(e)||"classes"===e,name:"MuiButton",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`${o.variant}${(0,h.Z)(o.color)}`],t[`size${(0,h.Z)(o.size)}`],t[`${o.variant}Size${(0,h.Z)(o.size)}`],"inherit"===o.color&&t.colorInherit,o.disableElevation&&t.disableElevation,o.fullWidth&&t.fullWidth]}})((({theme:e,ownerState:t})=>{var o,n;const i="light"===e.palette.mode?e.palette.grey[300]:e.palette.grey[800],a="light"===e.palette.mode?e.palette.grey.A100:e.palette.grey[700];return(0,r.Z)({},e.typography.button,{minWidth:64,padding:"6px 16px",borderRadius:(e.vars||e).shape.borderRadius,transition:e.transitions.create(["background-color","box-shadow","border-color","color"],{duration:e.transitions.duration.short}),"&:hover":(0,r.Z)({textDecoration:"none",backgroundColor:e.vars?`rgba(${e.vars.palette.text.primaryChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette.text.primary,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"text"===t.variant&&"inherit"!==t.color&&{backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"outlined"===t.variant&&"inherit"!==t.color&&{border:`1px solid ${(e.vars||e).palette[t.color].main}`,backgroundColor:e.vars?`rgba(${e.vars.palette[t.color].mainChannel} / ${e.vars.palette.action.hoverOpacity})`:(0,c.Fq)(e.palette[t.color].main,e.palette.action.hoverOpacity),"@media (hover: none)":{backgroundColor:"transparent"}},"contained"===t.variant&&{backgroundColor:e.vars?e.vars.palette.Button.inheritContainedHoverBg:a,boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2],backgroundColor:(e.vars||e).palette.grey[300]}},"contained"===t.variant&&"inherit"!==t.color&&{backgroundColor:(e.vars||e).palette[t.color].dark,"@media (hover: none)":{backgroundColor:(e.vars||e).palette[t.color].main}}),"&:active":(0,r.Z)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[8]}),[`&.${f.focusVisible}`]:(0,r.Z)({},"contained"===t.variant&&{boxShadow:(e.vars||e).shadows[6]}),[`&.${f.disabled}`]:(0,r.Z)({color:(e.vars||e).palette.action.disabled},"outlined"===t.variant&&{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`},"contained"===t.variant&&{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground})},"text"===t.variant&&{padding:"6px 8px"},"text"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main},"outlined"===t.variant&&{padding:"5px 15px",border:"1px solid currentColor"},"outlined"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].main,border:e.vars?`1px solid rgba(${e.vars.palette[t.color].mainChannel} / 0.5)`:`1px solid ${(0,c.Fq)(e.palette[t.color].main,.5)}`},"contained"===t.variant&&{color:e.vars?e.vars.palette.text.primary:null==(o=(n=e.palette).getContrastText)?void 0:o.call(n,e.palette.grey[300]),backgroundColor:e.vars?e.vars.palette.Button.inheritContainedBg:i,boxShadow:(e.vars||e).shadows[2]},"contained"===t.variant&&"inherit"!==t.color&&{color:(e.vars||e).palette[t.color].contrastText,backgroundColor:(e.vars||e).palette[t.color].main},"inherit"===t.color&&{color:"inherit",borderColor:"currentColor"},"small"===t.size&&"text"===t.variant&&{padding:"4px 5px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"text"===t.variant&&{padding:"8px 11px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"outlined"===t.variant&&{padding:"3px 9px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"outlined"===t.variant&&{padding:"7px 21px",fontSize:e.typography.pxToRem(15)},"small"===t.size&&"contained"===t.variant&&{padding:"4px 10px",fontSize:e.typography.pxToRem(13)},"large"===t.size&&"contained"===t.variant&&{padding:"8px 22px",fontSize:e.typography.pxToRem(15)},t.fullWidth&&{width:"100%"})}),(({ownerState:e})=>e.disableElevation&&{boxShadow:"none","&:hover":{boxShadow:"none"},[`&.${f.focusVisible}`]:{boxShadow:"none"},"&:active":{boxShadow:"none"},[`&.${f.disabled}`]:{boxShadow:"none"}})),C=(0,d.ZP)("span",{name:"MuiButton",slot:"StartIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.startIcon,t[`iconSize${(0,h.Z)(o.size)}`]]}})((({ownerState:e})=>(0,r.Z)({display:"inherit",marginRight:8,marginLeft:-4},"small"===e.size&&{marginLeft:-2},S(e)))),R=(0,d.ZP)("span",{name:"MuiButton",slot:"EndIcon",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.endIcon,t[`iconSize${(0,h.Z)(o.size)}`]]}})((({ownerState:e})=>(0,r.Z)({display:"inherit",marginRight:-4,marginLeft:8},"small"===e.size&&{marginRight:-2},S(e)))),w=i.forwardRef((function(e,t){const o=i.useContext(g),c=i.useContext(x),d=(0,s.Z)(o,e),p=(0,u.Z)({props:d,name:"MuiButton"}),{children:m,color:v="primary",component:f="button",className:S,disabled:w=!1,disableElevation:z=!1,disableFocusRipple:M=!1,endIcon:$,focusVisibleClassName:E,fullWidth:T=!1,size:P="medium",startIcon:I,type:B,variant:N="text"}=p,F=(0,n.Z)(p,Z),L=(0,r.Z)({},p,{color:v,component:f,disabled:w,disableElevation:z,disableFocusRipple:M,fullWidth:T,size:P,type:B,variant:N}),V=(e=>{const{color:t,disableElevation:o,fullWidth:n,size:i,variant:a,classes:s}=e,c={root:["root",a,`${a}${(0,h.Z)(t)}`,`size${(0,h.Z)(i)}`,`${a}Size${(0,h.Z)(i)}`,"inherit"===t&&"colorInherit",o&&"disableElevation",n&&"fullWidth"],label:["label"],startIcon:["startIcon",`iconSize${(0,h.Z)(i)}`],endIcon:["endIcon",`iconSize${(0,h.Z)(i)}`]},d=(0,l.Z)(c,b,s);return(0,r.Z)({},s,d)})(L),W=I&&(0,y.jsx)(C,{className:V.startIcon,ownerState:L,children:I}),D=$&&(0,y.jsx)(R,{className:V.endIcon,ownerState:L,children:$}),j=c||"";return(0,y.jsxs)(k,(0,r.Z)({ownerState:L,className:(0,a.Z)(o.className,V.root,S,j),component:f,disabled:w,focusRipple:!M,focusVisibleClassName:(0,a.Z)(V.focusVisible,E),ref:t,type:B},F,{classes:V,children:[W,m,D]}))}))},539:(e,t,o)=>{o.d(t,{Z:()=>N});var n=o(7462),r=o(3366),i=o(7294),a=o(512),s=o(4780),l=o(948),c=o(1657),d=o(1705),u=o(2068),p=o(9674),h=o(4537),m=o(917),v=o(5893);var b=o(1588);const f=(0,b.Z)("MuiTouchRipple",["root","ripple","rippleVisible","ripplePulsate","child","childLeaving","childPulsate"]),g=["center","classes","className"];let x,y,Z,S,k=e=>e;const C=(0,m.F4)(x||(x=k` 0% { transform: scale(0); opacity: 0.1; } 100% { transform: scale(1); opacity: 0.3; } `)),R=(0,m.F4)(y||(y=k` 0% { opacity: 1; } 100% { opacity: 0; } `)),w=(0,m.F4)(Z||(Z=k` 0% { transform: scale(1); } 50% { transform: scale(0.92); } 100% { transform: scale(1); } `)),z=(0,l.ZP)("span",{name:"MuiTouchRipple",slot:"Root"})({overflow:"hidden",pointerEvents:"none",position:"absolute",zIndex:0,top:0,right:0,bottom:0,left:0,borderRadius:"inherit"}),M=(0,l.ZP)((function(e){const{className:t,classes:o,pulsate:n=!1,rippleX:r,rippleY:s,rippleSize:l,in:c,onExited:d,timeout:u}=e,[p,h]=i.useState(!1),m=(0,a.Z)(t,o.ripple,o.rippleVisible,n&&o.ripplePulsate),b={width:l,height:l,top:-l/2+s,left:-l/2+r},f=(0,a.Z)(o.child,p&&o.childLeaving,n&&o.childPulsate);return c||p||h(!0),i.useEffect((()=>{if(!c&&null!=d){const e=setTimeout(d,u);return()=>{clearTimeout(e)}}}),[d,c,u]),(0,v.jsx)("span",{className:m,style:b,children:(0,v.jsx)("span",{className:f})})}),{name:"MuiTouchRipple",slot:"Ripple"})(S||(S=k` opacity: 0; position: absolute; &.${0} { opacity: 0.3; transform: scale(1); animation-name: ${0}; animation-duration: ${0}ms; animation-timing-function: ${0}; } &.${0} { animation-duration: ${0}ms; } & .${0} { opacity: 1; display: block; width: 100%; height: 100%; border-radius: 50%; background-color: currentColor; } & .${0} { opacity: 0; animation-name: ${0}; animation-duration: ${0}ms; animation-timing-function: ${0}; } & .${0} { position: absolute; /* @noflip */ left: 0px; top: 0; animation-name: ${0}; animation-duration: 2500ms; animation-timing-function: ${0}; animation-iteration-count: infinite; animation-delay: 200ms; } `),f.rippleVisible,C,550,(({theme:e})=>e.transitions.easing.easeInOut),f.ripplePulsate,(({theme:e})=>e.transitions.duration.shorter),f.child,f.childLeaving,R,550,(({theme:e})=>e.transitions.easing.easeInOut),f.childPulsate,w,(({theme:e})=>e.transitions.easing.easeInOut)),$=i.forwardRef((function(e,t){const o=(0,c.Z)({props:e,name:"MuiTouchRipple"}),{center:s=!1,classes:l={},className:d}=o,u=(0,r.Z)(o,g),[p,m]=i.useState([]),b=i.useRef(0),x=i.useRef(null);i.useEffect((()=>{x.current&&(x.current(),x.current=null)}),[p]);const y=i.useRef(!1),Z=i.useRef(0),S=i.useRef(null),k=i.useRef(null);i.useEffect((()=>()=>{Z.current&&clearTimeout(Z.current)}),[]);const C=i.useCallback((e=>{const{pulsate:t,rippleX:o,rippleY:n,rippleSize:r,cb:i}=e;m((e=>[...e,(0,v.jsx)(M,{classes:{ripple:(0,a.Z)(l.ripple,f.ripple),rippleVisible:(0,a.Z)(l.rippleVisible,f.rippleVisible),ripplePulsate:(0,a.Z)(l.ripplePulsate,f.ripplePulsate),child:(0,a.Z)(l.child,f.child),childLeaving:(0,a.Z)(l.childLeaving,f.childLeaving),childPulsate:(0,a.Z)(l.childPulsate,f.childPulsate)},timeout:550,pulsate:t,rippleX:o,rippleY:n,rippleSize:r},b.current)])),b.current+=1,x.current=i}),[l]),R=i.useCallback(((e={},t={},o=(()=>{}))=>{const{pulsate:n=!1,center:r=s||t.pulsate,fakeElement:i=!1}=t;if("mousedown"===(null==e?void 0:e.type)&&y.current)return void(y.current=!1);"touchstart"===(null==e?void 0:e.type)&&(y.current=!0);const a=i?null:k.current,l=a?a.getBoundingClientRect():{width:0,height:0,left:0,top:0};let c,d,u;if(r||void 0===e||0===e.clientX&&0===e.clientY||!e.clientX&&!e.touches)c=Math.round(l.width/2),d=Math.round(l.height/2);else{const{clientX:t,clientY:o}=e.touches&&e.touches.length>0?e.touches[0]:e;c=Math.round(t-l.left),d=Math.round(o-l.top)}if(r)u=Math.sqrt((2*l.width**2+l.height**2)/3),u%2==0&&(u+=1);else{const e=2*Math.max(Math.abs((a?a.clientWidth:0)-c),c)+2,t=2*Math.max(Math.abs((a?a.clientHeight:0)-d),d)+2;u=Math.sqrt(e**2+t**2)}null!=e&&e.touches?null===S.current&&(S.current=()=>{C({pulsate:n,rippleX:c,rippleY:d,rippleSize:u,cb:o})},Z.current=setTimeout((()=>{S.current&&(S.current(),S.current=null)}),80)):C({pulsate:n,rippleX:c,rippleY:d,rippleSize:u,cb:o})}),[s,C]),w=i.useCallback((()=>{R({},{pulsate:!0})}),[R]),$=i.useCallback(((e,t)=>{if(clearTimeout(Z.current),"touchend"===(null==e?void 0:e.type)&&S.current)return S.current(),S.current=null,void(Z.current=setTimeout((()=>{$(e,t)})));S.current=null,m((e=>e.length>0?e.slice(1):e)),x.current=t}),[]);return i.useImperativeHandle(t,(()=>({pulsate:w,start:R,stop:$})),[w,R,$]),(0,v.jsx)(z,(0,n.Z)({className:(0,a.Z)(f.root,l.root,d),ref:k},u,{children:(0,v.jsx)(h.Z,{component:null,exit:!0,children:p})}))}));var E=o(4867);function T(e){return(0,E.Z)("MuiButtonBase",e)}const P=(0,b.Z)("MuiButtonBase",["root","disabled","focusVisible"]),I=["action","centerRipple","children","className","component","disabled","disableRipple","disableTouchRipple","focusRipple","focusVisibleClassName","LinkComponent","onBlur","onClick","onContextMenu","onDragLeave","onFocus","onFocusVisible","onKeyDown","onKeyUp","onMouseDown","onMouseLeave","onMouseUp","onTouchEnd","onTouchMove","onTouchStart","tabIndex","TouchRippleProps","touchRippleRef","type"],B=(0,l.ZP)("button",{name:"MuiButtonBase",slot:"Root",overridesResolver:(e,t)=>t.root})({display:"inline-flex",alignItems:"center",justifyContent:"center",position:"relative",boxSizing:"border-box",WebkitTapHighlightColor:"transparent",backgroundColor:"transparent",outline:0,border:0,margin:0,borderRadius:0,padding:0,cursor:"pointer",userSelect:"none",verticalAlign:"middle",MozAppearance:"none",WebkitAppearance:"none",textDecoration:"none",color:"inherit","&::-moz-focus-inner":{borderStyle:"none"},[`&.${P.disabled}`]:{pointerEvents:"none",cursor:"default"},"@media print":{colorAdjust:"exact"}}),N=i.forwardRef((function(e,t){const o=(0,c.Z)({props:e,name:"MuiButtonBase"}),{action:l,centerRipple:h=!1,children:m,className:b,component:f="button",disabled:g=!1,disableRipple:x=!1,disableTouchRipple:y=!1,focusRipple:Z=!1,LinkComponent:S="a",onBlur:k,onClick:C,onContextMenu:R,onDragLeave:w,onFocus:z,onFocusVisible:M,onKeyDown:E,onKeyUp:P,onMouseDown:N,onMouseLeave:F,onMouseUp:L,onTouchEnd:V,onTouchMove:W,onTouchStart:D,tabIndex:j=0,TouchRippleProps:O,touchRippleRef:A,type:X}=o,Y=(0,r.Z)(o,I),q=i.useRef(null),K=i.useRef(null),U=(0,d.Z)(K,A),{isFocusVisibleRef:H,onFocus:G,onBlur:_,ref:J}=(0,p.Z)(),[Q,ee]=i.useState(!1);g&&Q&&ee(!1),i.useImperativeHandle(l,(()=>({focusVisible:()=>{ee(!0),q.current.focus()}})),[]);const[te,oe]=i.useState(!1);i.useEffect((()=>{oe(!0)}),[]);const ne=te&&!x&&!g;function re(e,t,o=y){return(0,u.Z)((n=>(t&&t(n),!o&&K.current&&K.current[e](n),!0)))}i.useEffect((()=>{Q&&Z&&!x&&te&&K.current.pulsate()}),[x,Z,Q,te]);const ie=re("start",N),ae=re("stop",R),se=re("stop",w),le=re("stop",L),ce=re("stop",(e=>{Q&&e.preventDefault(),F&&F(e)})),de=re("start",D),ue=re("stop",V),pe=re("stop",W),he=re("stop",(e=>{_(e),!1===H.current&&ee(!1),k&&k(e)}),!1),me=(0,u.Z)((e=>{q.current||(q.current=e.currentTarget),G(e),!0===H.current&&(ee(!0),M&&M(e)),z&&z(e)})),ve=()=>{const e=q.current;return f&&"button"!==f&&!("A"===e.tagName&&e.href)},be=i.useRef(!1),fe=(0,u.Z)((e=>{Z&&!be.current&&Q&&K.current&&" "===e.key&&(be.current=!0,K.current.stop(e,(()=>{K.current.start(e)}))),e.target===e.currentTarget&&ve()&&" "===e.key&&e.preventDefault(),E&&E(e),e.target===e.currentTarget&&ve()&&"Enter"===e.key&&!g&&(e.preventDefault(),C&&C(e))})),ge=(0,u.Z)((e=>{Z&&" "===e.key&&K.current&&Q&&!e.defaultPrevented&&(be.current=!1,K.current.stop(e,(()=>{K.current.pulsate(e)}))),P&&P(e),C&&e.target===e.currentTarget&&ve()&&" "===e.key&&!e.defaultPrevented&&C(e)}));let xe=f;"button"===xe&&(Y.href||Y.to)&&(xe=S);const ye={};"button"===xe?(ye.type=void 0===X?"button":X,ye.disabled=g):(Y.href||Y.to||(ye.role="button"),g&&(ye["aria-disabled"]=g));const Ze=(0,d.Z)(t,J,q),Se=(0,n.Z)({},o,{centerRipple:h,component:f,disabled:g,disableRipple:x,disableTouchRipple:y,focusRipple:Z,tabIndex:j,focusVisible:Q}),ke=(e=>{const{disabled:t,focusVisible:o,focusVisibleClassName:n,classes:r}=e,i={root:["root",t&&"disabled",o&&"focusVisible"]},a=(0,s.Z)(i,T,r);return o&&n&&(a.root+=` ${n}`),a})(Se);return(0,v.jsxs)(B,(0,n.Z)({as:xe,className:(0,a.Z)(ke.root,b),ownerState:Se,onBlur:he,onClick:C,onContextMenu:ae,onFocus:me,onKeyDown:fe,onKeyUp:ge,onMouseDown:ie,onMouseLeave:ce,onMouseUp:le,onDragLeave:se,onTouchEnd:ue,onTouchMove:pe,onTouchStart:de,ref:Ze,tabIndex:g?-1:j,type:X},ye,Y,{children:[m,ne?(0,v.jsx)($,(0,n.Z)({ref:U,center:h},O)):null]}))}))},9062:(e,t,o)=>{o.d(t,{Z:()=>z});var n=o(3366),r=o(7462),i=o(7294),a=o(512),s=o(4780),l=o(917),c=o(8216),d=o(1657),u=o(948),p=o(1588),h=o(4867);function m(e){return(0,h.Z)("MuiCircularProgress",e)}(0,p.Z)("MuiCircularProgress",["root","determinate","indeterminate","colorPrimary","colorSecondary","svg","circle","circleDeterminate","circleIndeterminate","circleDisableShrink"]);var v=o(5893);const b=["className","color","disableShrink","size","style","thickness","value","variant"];let f,g,x,y,Z=e=>e;const S=(0,l.F4)(f||(f=Z` 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); } `)),k=(0,l.F4)(g||(g=Z` 0% { stroke-dasharray: 1px, 200px; stroke-dashoffset: 0; } 50% { stroke-dasharray: 100px, 200px; stroke-dashoffset: -15px; } 100% { stroke-dasharray: 100px, 200px; stroke-dashoffset: -125px; } `)),C=(0,u.ZP)("span",{name:"MuiCircularProgress",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[o.variant],t[`color${(0,c.Z)(o.color)}`]]}})((({ownerState:e,theme:t})=>(0,r.Z)({display:"inline-block"},"determinate"===e.variant&&{transition:t.transitions.create("transform")},"inherit"!==e.color&&{color:(t.vars||t).palette[e.color].main})),(({ownerState:e})=>"indeterminate"===e.variant&&(0,l.iv)(x||(x=Z` animation: ${0} 1.4s linear infinite; `),S))),R=(0,u.ZP)("svg",{name:"MuiCircularProgress",slot:"Svg",overridesResolver:(e,t)=>t.svg})({display:"block"}),w=(0,u.ZP)("circle",{name:"MuiCircularProgress",slot:"Circle",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.circle,t[`circle${(0,c.Z)(o.variant)}`],o.disableShrink&&t.circleDisableShrink]}})((({ownerState:e,theme:t})=>(0,r.Z)({stroke:"currentColor"},"determinate"===e.variant&&{transition:t.transitions.create("stroke-dashoffset")},"indeterminate"===e.variant&&{strokeDasharray:"80px, 200px",strokeDashoffset:0})),(({ownerState:e})=>"indeterminate"===e.variant&&!e.disableShrink&&(0,l.iv)(y||(y=Z` animation: ${0} 1.4s ease-in-out infinite; `),k))),z=i.forwardRef((function(e,t){const o=(0,d.Z)({props:e,name:"MuiCircularProgress"}),{className:i,color:l="primary",disableShrink:u=!1,size:p=40,style:h,thickness:f=3.6,value:g=0,variant:x="indeterminate"}=o,y=(0,n.Z)(o,b),Z=(0,r.Z)({},o,{color:l,disableShrink:u,size:p,thickness:f,value:g,variant:x}),S=(e=>{const{classes:t,variant:o,color:n,disableShrink:r}=e,i={root:["root",o,`color${(0,c.Z)(n)}`],svg:["svg"],circle:["circle",`circle${(0,c.Z)(o)}`,r&&"circleDisableShrink"]};return(0,s.Z)(i,m,t)})(Z),k={},z={},M={};if("determinate"===x){const e=2*Math.PI*((44-f)/2);k.strokeDasharray=e.toFixed(3),M["aria-valuenow"]=Math.round(g),k.strokeDashoffset=`${((100-g)/100*e).toFixed(3)}px`,z.transform="rotate(-90deg)"}return(0,v.jsx)(C,(0,r.Z)({className:(0,a.Z)(S.root,i),style:(0,r.Z)({width:p,height:p},z,h),ownerState:Z,ref:t,role:"progressbar"},M,y,{children:(0,v.jsx)(R,{className:S.svg,ownerState:Z,viewBox:"22 22 44 44",children:(0,v.jsx)(w,{className:S.circle,style:k,ownerState:Z,cx:44,cy:44,r:(44-f)/2,fill:"none",strokeWidth:f})})}))}))},6574:(e,t,o)=>{o.d(t,{Z:()=>s});var n=o(6137),r=o(8216),i=o(948),a=o(1657);const s=(0,n.Z)({createStyledComponent:(0,i.ZP)("div",{name:"MuiContainer",slot:"Root",overridesResolver:(e,t)=>{const{ownerState:o}=e;return[t.root,t[`maxWidth${(0,r.Z)(String(o.maxWidth))}`],o.fixed&&t.fixed,o.disableGutters&&t.disableGutters]}}),useThemeProps:e=>(0,a.Z)({props:e,name:"MuiContainer"})})},6720:(e,t,o)=>{o.d(t,{ZP:()=>d});var n=o(7462),r=o(7294),i=o(1657),a=o(6294),s=o(5893);const l=(e,t)=>(0,n.Z)({WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%"},t&&!e.vars&&{colorScheme:e.palette.mode}),c=e=>(0,n.Z)({color:(e.vars||e).palette.text.primary},e.typography.body1,{backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}}),d=function(e){const t=(0,i.Z)({props:e,name:"MuiCssBaseline"}),{children:o,enableColorScheme:d=!1}=t;return(0,s.jsxs)(r.Fragment,{children:[(0,s.jsx)(a.Z,{styles:e=>((e,t=!1)=>{var o;const r={};t&&e.colorSchemes&&Object.entries(e.colorSchemes).forEach((([t,o])=>{var n;r[e.getColorSchemeSelector(t).replace(/\s*&/,"")]={colorScheme:null==(n=o.palette)?void 0:n.mode}}));let i=(0,n.Z)({html:l(e,t),"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:(0,n.Z)({margin:0},c(e),{"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}})},r);const a=null==(o=e.components)||null==(o=o.MuiCssBaseline)?void 0:o.styleOverrides;return a&&(i=[i,a]),i})(e,d)}),o]})}},5097:(e,t,o)=>{o.d(t,{Z:()=>n});const n=(0,o(1588).Z)("MuiDivider",["root","absolute","fullWidth","inset","middle","flexItem","light","vertical","withChildren","withChildrenVertical","textAlignRight","textAlignLeft","wrapper","wrapperVertical"])},6628:(e,t,o)=>{o.d(t,{Z:()=>h});var n=o(7462),r=o(3366),i=o(7294),a=o(8052),s=o(2734),l=o(577),c=o(1705),d=o(5893);const u=["addEndListener","appear","children","easing","in","onEnter","onEntered","onEntering","onExit","onExited","onExiting","style","timeout","TransitionComponent"],p={entering:{opacity:1},entered:{opacity:1}},h=i.forwardRef((function(e,t){const o=(0,s.Z)(),h={enter:o.transitions.duration.enteringScreen,exit:o.transitions.duration.leavingScreen},{addEndListener:m,appear:v=!0,children:b,easing:f,in:g,onEnter:x,onEntered:y,onEntering:Z,onExit:S,onExited:k,onExiting:C,style:R,timeout:w=h,TransitionComponent:z=a.ZP}=e,M=(0,r.Z)(e,u),$=i.useRef(null),E=(0,c.Z)($,b.ref,t),T=e=>t=>{if(e){const o=$.current;void 0===t?e(o):e(o,t)}},P=T(Z),I=T(((e,t)=>{(0,l.n)(e);const n=(0,l.C)({style:R,timeout:w,easing:f},{mode:"enter"});e.style.webkitTransition=o.transitions.create("opacity",n),e.style.transition=o.transitions.create("opacity",n),x&&x(e,t)})),B=T(y),N=T(C),F=T((e=>{const t=(0,l.C)({style:R,timeout:w,easing:f},{mode:"exit"});e.style.webkitTransition=o.transitions.create("opacity",t),e.style.transition=o.transitions.create("opacity",t),S&&S(e)})),L=T(k);return(0,d.jsx)(z,(0,n.Z)({appear:v,in:g,nodeRef:$,onEnter:I,onEntered:B,onEntering:P,onExit:F,onExited:L,onExiting:N,addEndListener:e=>{m&&m($.current,e)},timeout:w},M,{children:(e,t)=>i.cloneElement(b,(0,n.Z)({style:(0,n.Z)({opacity:0,visibility:"exited"!==e||g?void 0:"hidden"},p[e],R,b.props.style),ref:E},t))}))}))}}]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,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TSxRQUFTOE0sRUFDbEMsRUFhQXhPLFFBQVNBLEdBQ1JwQyxFQUFPLENBQ1JSLFNBQVUsQ0FBQ3FSLEVBQU9DLElBQ0ksZUFBbUJ0UixHQUFVLE9BQVMsQ0FDeEQ0RCxPQUFPLE9BQVMsQ0FDZDRMLFFBQVMsRUFDVCtCLFdBQXNCLFdBQVZGLEdBQXVCM08sT0FBb0IzSCxFQUFYLFVBQzNDYyxFQUFPd1YsR0FBUXpOLEVBQU81RCxFQUFTcEUsTUFBTWdJLE9BQ3hDbEUsSUFBSzZMLEdBQ0orRixNQUdULEciLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Cb3gvYm94Q2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9Cb3gvQm94LmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbi9idXR0b25DbGFzc2VzLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkdyb3VwL0J1dHRvbkdyb3VwQ29udGV4dC5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25Hcm91cC9CdXR0b25Hcm91cEJ1dHRvbkNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uL0J1dHRvbi5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL3RvdWNoUmlwcGxlQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9CdXR0b25CYXNlL1RvdWNoUmlwcGxlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvUmlwcGxlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0J1dHRvbkJhc2UvYnV0dG9uQmFzZUNsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQnV0dG9uQmFzZS9CdXR0b25CYXNlLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NpcmN1bGFyUHJvZ3Jlc3MvY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQ2lyY3VsYXJQcm9ncmVzcy9DaXJjdWxhclByb2dyZXNzLmpzIiwid2VicGFjazovL3Nyc3JmbC1yZWFjdC8uL25vZGVfbW9kdWxlcy9AbXVpL21hdGVyaWFsL0NvbnRhaW5lci9Db250YWluZXIuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvQ3NzQmFzZWxpbmUvQ3NzQmFzZWxpbmUuanMiLCJ3ZWJwYWNrOi8vc3JzcmZsLXJlYWN0Ly4vbm9kZV9tb2R1bGVzL0BtdWkvbWF0ZXJpYWwvRGl2aWRlci9kaXZpZGVyQ2xhc3Nlcy5qcyIsIndlYnBhY2s6Ly9zcnNyZmwtcmVhY3QvLi9ub2RlX21vZHVsZXMvQG11aS9tYXRlcmlhbC9GYWRlL0ZhZGUuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5jb25zdCBib3hDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQm94JywgWydyb290J10pO1xuZXhwb3J0IGRlZmF1bHQgYm94Q2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IGNyZWF0ZUJveCB9IGZyb20gJ0BtdWkvc3lzdGVtJztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgeyB1bnN0YWJsZV9DbGFzc05hbWVHZW5lcmF0b3IgYXMgQ2xhc3NOYW1lR2VuZXJhdG9yIH0gZnJvbSAnLi4vY2xhc3NOYW1lJztcbmltcG9ydCB7IGNyZWF0ZVRoZW1lIH0gZnJvbSAnLi4vc3R5bGVzJztcbmltcG9ydCBUSEVNRV9JRCBmcm9tICcuLi9zdHlsZXMvaWRlbnRpZmllcic7XG5pbXBvcnQgYm94Q2xhc3NlcyBmcm9tICcuL2JveENsYXNzZXMnO1xuY29uc3QgZGVmYXVsdFRoZW1lID0gY3JlYXRlVGhlbWUoKTtcbmNvbnN0IEJveCA9IGNyZWF0ZUJveCh7XG4gIHRoZW1lSWQ6IFRIRU1FX0lELFxuICBkZWZhdWx0VGhlbWUsXG4gIGRlZmF1bHRDbGFzc05hbWU6IGJveENsYXNzZXMucm9vdCxcbiAgZ2VuZXJhdGVDbGFzc05hbWU6IENsYXNzTmFtZUdlbmVyYXRvci5nZW5lcmF0ZVxufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBCb3gucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSlcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBCb3g7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvblV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQnV0dG9uJywgc2xvdCk7XG59XG5jb25zdCBidXR0b25DbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQnV0dG9uJywgWydyb290JywgJ3RleHQnLCAndGV4dEluaGVyaXQnLCAndGV4dFByaW1hcnknLCAndGV4dFNlY29uZGFyeScsICd0ZXh0U3VjY2VzcycsICd0ZXh0RXJyb3InLCAndGV4dEluZm8nLCAndGV4dFdhcm5pbmcnLCAnb3V0bGluZWQnLCAnb3V0bGluZWRJbmhlcml0JywgJ291dGxpbmVkUHJpbWFyeScsICdvdXRsaW5lZFNlY29uZGFyeScsICdvdXRsaW5lZFN1Y2Nlc3MnLCAnb3V0bGluZWRFcnJvcicsICdvdXRsaW5lZEluZm8nLCAnb3V0bGluZWRXYXJuaW5nJywgJ2NvbnRhaW5lZCcsICdjb250YWluZWRJbmhlcml0JywgJ2NvbnRhaW5lZFByaW1hcnknLCAnY29udGFpbmVkU2Vjb25kYXJ5JywgJ2NvbnRhaW5lZFN1Y2Nlc3MnLCAnY29udGFpbmVkRXJyb3InLCAnY29udGFpbmVkSW5mbycsICdjb250YWluZWRXYXJuaW5nJywgJ2Rpc2FibGVFbGV2YXRpb24nLCAnZm9jdXNWaXNpYmxlJywgJ2Rpc2FibGVkJywgJ2NvbG9ySW5oZXJpdCcsICd0ZXh0U2l6ZVNtYWxsJywgJ3RleHRTaXplTWVkaXVtJywgJ3RleHRTaXplTGFyZ2UnLCAnb3V0bGluZWRTaXplU21hbGwnLCAnb3V0bGluZWRTaXplTWVkaXVtJywgJ291dGxpbmVkU2l6ZUxhcmdlJywgJ2NvbnRhaW5lZFNpemVTbWFsbCcsICdjb250YWluZWRTaXplTWVkaXVtJywgJ2NvbnRhaW5lZFNpemVMYXJnZScsICdzaXplTWVkaXVtJywgJ3NpemVTbWFsbCcsICdzaXplTGFyZ2UnLCAnZnVsbFdpZHRoJywgJ3N0YXJ0SWNvbicsICdlbmRJY29uJywgJ2ljb25TaXplU21hbGwnLCAnaWNvblNpemVNZWRpdW0nLCAnaWNvblNpemVMYXJnZSddKTtcbmV4cG9ydCBkZWZhdWx0IGJ1dHRvbkNsYXNzZXM7IiwiaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuLyoqXG4gKiBAaWdub3JlIC0gaW50ZXJuYWwgY29tcG9uZW50LlxuICovXG5jb25zdCBCdXR0b25Hcm91cENvbnRleHQgPSAvKiNfX1BVUkVfXyovUmVhY3QuY3JlYXRlQ29udGV4dCh7fSk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBCdXR0b25Hcm91cENvbnRleHQuZGlzcGxheU5hbWUgPSAnQnV0dG9uR3JvdXBDb250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkdyb3VwQ29udGV4dDsiLCJpbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG4vKipcbiAqIEBpZ25vcmUgLSBpbnRlcm5hbCBjb21wb25lbnQuXG4gKi9cbmNvbnN0IEJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dCA9IC8qI19fUFVSRV9fKi9SZWFjdC5jcmVhdGVDb250ZXh0KHVuZGVmaW5lZCk7XG5pZiAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09ICdwcm9kdWN0aW9uJykge1xuICBCdXR0b25Hcm91cEJ1dHRvbkNvbnRleHQuZGlzcGxheU5hbWUgPSAnQnV0dG9uR3JvdXBCdXR0b25Db250ZXh0Jztcbn1cbmV4cG9ydCBkZWZhdWx0IEJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dDsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjaGlsZHJlblwiLCBcImNvbG9yXCIsIFwiY29tcG9uZW50XCIsIFwiY2xhc3NOYW1lXCIsIFwiZGlzYWJsZWRcIiwgXCJkaXNhYmxlRWxldmF0aW9uXCIsIFwiZGlzYWJsZUZvY3VzUmlwcGxlXCIsIFwiZW5kSWNvblwiLCBcImZvY3VzVmlzaWJsZUNsYXNzTmFtZVwiLCBcImZ1bGxXaWR0aFwiLCBcInNpemVcIiwgXCJzdGFydEljb25cIiwgXCJ0eXBlXCIsIFwidmFyaWFudFwiXTtcbmltcG9ydCAqIGFzIFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgY2xzeCBmcm9tICdjbHN4JztcbmltcG9ydCB7IGludGVybmFsX3Jlc29sdmVQcm9wcyBhcyByZXNvbHZlUHJvcHMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCB7IGFscGhhIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IHN0eWxlZCwgeyByb290U2hvdWxkRm9yd2FyZFByb3AgfSBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCBCdXR0b25CYXNlIGZyb20gJy4uL0J1dHRvbkJhc2UnO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgYnV0dG9uQ2xhc3NlcywgeyBnZXRCdXR0b25VdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2J1dHRvbkNsYXNzZXMnO1xuaW1wb3J0IEJ1dHRvbkdyb3VwQ29udGV4dCBmcm9tICcuLi9CdXR0b25Hcm91cC9CdXR0b25Hcm91cENvbnRleHQnO1xuaW1wb3J0IEJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dCBmcm9tICcuLi9CdXR0b25Hcm91cC9CdXR0b25Hcm91cEJ1dHRvbkNvbnRleHQnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHVzZVV0aWxpdHlDbGFzc2VzID0gb3duZXJTdGF0ZSA9PiB7XG4gIGNvbnN0IHtcbiAgICBjb2xvcixcbiAgICBkaXNhYmxlRWxldmF0aW9uLFxuICAgIGZ1bGxXaWR0aCxcbiAgICBzaXplLFxuICAgIHZhcmlhbnQsXG4gICAgY2xhc3Nlc1xuICB9ID0gb3duZXJTdGF0ZTtcbiAgY29uc3Qgc2xvdHMgPSB7XG4gICAgcm9vdDogWydyb290JywgdmFyaWFudCwgYCR7dmFyaWFudH0ke2NhcGl0YWxpemUoY29sb3IpfWAsIGBzaXplJHtjYXBpdGFsaXplKHNpemUpfWAsIGAke3ZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShzaXplKX1gLCBjb2xvciA9PT0gJ2luaGVyaXQnICYmICdjb2xvckluaGVyaXQnLCBkaXNhYmxlRWxldmF0aW9uICYmICdkaXNhYmxlRWxldmF0aW9uJywgZnVsbFdpZHRoICYmICdmdWxsV2lkdGgnXSxcbiAgICBsYWJlbDogWydsYWJlbCddLFxuICAgIHN0YXJ0SWNvbjogWydzdGFydEljb24nLCBgaWNvblNpemUke2NhcGl0YWxpemUoc2l6ZSl9YF0sXG4gICAgZW5kSWNvbjogWydlbmRJY29uJywgYGljb25TaXplJHtjYXBpdGFsaXplKHNpemUpfWBdXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRCdXR0b25VdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGNsYXNzZXMsIGNvbXBvc2VkQ2xhc3Nlcyk7XG59O1xuY29uc3QgY29tbW9uSWNvblN0eWxlcyA9IG93bmVyU3RhdGUgPT4gX2V4dGVuZHMoe30sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMThcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbWVkaXVtJyAmJiB7XG4gICcmID4gKjpudGgtb2YtdHlwZSgxKSc6IHtcbiAgICBmb250U2l6ZTogMjBcbiAgfVxufSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIHtcbiAgJyYgPiAqOm50aC1vZi10eXBlKDEpJzoge1xuICAgIGZvbnRTaXplOiAyMlxuICB9XG59KTtcbmNvbnN0IEJ1dHRvblJvb3QgPSBzdHlsZWQoQnV0dG9uQmFzZSwge1xuICBzaG91bGRGb3J3YXJkUHJvcDogcHJvcCA9PiByb290U2hvdWxkRm9yd2FyZFByb3AocHJvcCkgfHwgcHJvcCA9PT0gJ2NsYXNzZXMnLFxuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ1Jvb3QnLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tvd25lclN0YXRlLnZhcmlhbnRdLCBzdHlsZXNbYCR7b3duZXJTdGF0ZS52YXJpYW50fSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXSwgc3R5bGVzW2BzaXplJHtjYXBpdGFsaXplKG93bmVyU3RhdGUuc2l6ZSl9YF0sIHN0eWxlc1tgJHtvd25lclN0YXRlLnZhcmlhbnR9U2l6ZSR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLnNpemUpfWBdLCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYgc3R5bGVzLmNvbG9ySW5oZXJpdCwgb3duZXJTdGF0ZS5kaXNhYmxlRWxldmF0aW9uICYmIHN0eWxlcy5kaXNhYmxlRWxldmF0aW9uLCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiBzdHlsZXMuZnVsbFdpZHRoXTtcbiAgfVxufSkoKHtcbiAgdGhlbWUsXG4gIG93bmVyU3RhdGVcbn0pID0+IHtcbiAgdmFyIF90aGVtZSRwYWxldHRlJGdldENvbiwgX3RoZW1lJHBhbGV0dGU7XG4gIGNvbnN0IGluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXlbMzAwXSA6IHRoZW1lLnBhbGV0dGUuZ3JleVs4MDBdO1xuICBjb25zdCBpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IgPSB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdsaWdodCcgPyB0aGVtZS5wYWxldHRlLmdyZXkuQTEwMCA6IHRoZW1lLnBhbGV0dGUuZ3JleVs3MDBdO1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHRoZW1lLnR5cG9ncmFwaHkuYnV0dG9uLCB7XG4gICAgbWluV2lkdGg6IDY0LFxuICAgIHBhZGRpbmc6ICc2cHggMTZweCcsXG4gICAgYm9yZGVyUmFkaXVzOiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhcGUuYm9yZGVyUmFkaXVzLFxuICAgIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZShbJ2JhY2tncm91bmQtY29sb3InLCAnYm94LXNoYWRvdycsICdib3JkZXItY29sb3InLCAnY29sb3InXSwge1xuICAgICAgZHVyYXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmR1cmF0aW9uLnNob3J0XG4gICAgfSksXG4gICAgJyY6aG92ZXInOiBfZXh0ZW5kcyh7XG4gICAgICB0ZXh0RGVjb3JhdGlvbjogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGUudGV4dC5wcmltYXJ5Q2hhbm5lbH0gLyAke3RoZW1lLnZhcnMucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5fSlgIDogYWxwaGEodGhlbWUucGFsZXR0ZS50ZXh0LnByaW1hcnksIHRoZW1lLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eSksXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICd0cmFuc3BhcmVudCdcbiAgICAgIH1cbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbn1gLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gYHJnYmEoJHt0aGVtZS52YXJzLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbkNoYW5uZWx9IC8gJHt0aGVtZS52YXJzLnBhbGV0dGUuYWN0aW9uLmhvdmVyT3BhY2l0eX0pYCA6IGFscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgdGhlbWUucGFsZXR0ZS5hY3Rpb24uaG92ZXJPcGFjaXR5KSxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogJ3RyYW5zcGFyZW50J1xuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiB0aGVtZS52YXJzID8gdGhlbWUudmFycy5wYWxldHRlLkJ1dHRvbi5pbmhlcml0Q29udGFpbmVkSG92ZXJCZyA6IGluaGVyaXRDb250YWluZWRIb3ZlckJhY2tncm91bmRDb2xvcixcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbNF0sXG4gICAgICAvLyBSZXNldCBvbiB0b3VjaCBkZXZpY2VzLCBpdCBkb2Vzbid0IGFkZCBzcGVjaWZpY2l0eVxuICAgICAgJ0BtZWRpYSAoaG92ZXI6IG5vbmUpJzoge1xuICAgICAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmdyZXlbMzAwXVxuICAgICAgfVxuICAgIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uZGFyayxcbiAgICAgIC8vIFJlc2V0IG9uIHRvdWNoIGRldmljZXMsIGl0IGRvZXNuJ3QgYWRkIHNwZWNpZmljaXR5XG4gICAgICAnQG1lZGlhIChob3Zlcjogbm9uZSknOiB7XG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICAgICAgfVxuICAgIH0pLFxuICAgICcmOmFjdGl2ZSc6IF9leHRlbmRzKHt9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdjb250YWluZWQnICYmIHtcbiAgICAgIGJveFNoYWRvdzogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnNoYWRvd3NbOF1cbiAgICB9KSxcbiAgICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXTogX2V4dGVuZHMoe30sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1s2XVxuICAgIH0pLFxuICAgIFtgJi4ke2J1dHRvbkNsYXNzZXMuZGlzYWJsZWR9YF06IF9leHRlbmRzKHtcbiAgICAgIGNvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5hY3Rpb24uZGlzYWJsZWRcbiAgICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgICAgYm9yZGVyOiBgMXB4IHNvbGlkICR7KHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZH1gXG4gICAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkLFxuICAgICAgYm94U2hhZG93OiAodGhlbWUudmFycyB8fCB0aGVtZSkuc2hhZG93c1swXSxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYWN0aW9uLmRpc2FibGVkQmFja2dyb3VuZFxuICAgIH0pXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ3RleHQnICYmIHtcbiAgICBwYWRkaW5nOiAnNnB4IDhweCdcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAndGV4dCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdvdXRsaW5lZCcgJiYge1xuICAgIHBhZGRpbmc6ICc1cHggMTVweCcsXG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkIGN1cnJlbnRDb2xvcidcbiAgfSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIG93bmVyU3RhdGUuY29sb3IgIT09ICdpbmhlcml0JyAmJiB7XG4gICAgY29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW4sXG4gICAgYm9yZGVyOiB0aGVtZS52YXJzID8gYDFweCBzb2xpZCByZ2JhKCR7dGhlbWUudmFycy5wYWxldHRlW293bmVyU3RhdGUuY29sb3JdLm1haW5DaGFubmVsfSAvIDAuNSlgIDogYDFweCBzb2xpZCAke2FscGhhKHRoZW1lLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpbiwgMC41KX1gXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYge1xuICAgIGNvbG9yOiB0aGVtZS52YXJzID9cbiAgICAvLyB0aGlzIGlzIHNhZmUgYmVjYXVzZSBncmV5IGRvZXMgbm90IGNoYW5nZSBiZXR3ZWVuIGRlZmF1bHQgbGlnaHQvZGFyayBtb2RlXG4gICAgdGhlbWUudmFycy5wYWxldHRlLnRleHQucHJpbWFyeSA6IChfdGhlbWUkcGFsZXR0ZSRnZXRDb24gPSAoX3RoZW1lJHBhbGV0dGUgPSB0aGVtZS5wYWxldHRlKS5nZXRDb250cmFzdFRleHQpID09IG51bGwgPyB2b2lkIDAgOiBfdGhlbWUkcGFsZXR0ZSRnZXRDb24uY2FsbChfdGhlbWUkcGFsZXR0ZSwgdGhlbWUucGFsZXR0ZS5ncmV5WzMwMF0pLFxuICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUudmFycyA/IHRoZW1lLnZhcnMucGFsZXR0ZS5CdXR0b24uaW5oZXJpdENvbnRhaW5lZEJnIDogaW5oZXJpdENvbnRhaW5lZEJhY2tncm91bmRDb2xvcixcbiAgICBib3hTaGFkb3c6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5zaGFkb3dzWzJdXG4gIH0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2NvbnRhaW5lZCcgJiYgb3duZXJTdGF0ZS5jb2xvciAhPT0gJ2luaGVyaXQnICYmIHtcbiAgICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0uY29udHJhc3RUZXh0LFxuICAgIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxuICB9LCBvd25lclN0YXRlLmNvbG9yID09PSAnaW5oZXJpdCcgJiYge1xuICAgIGNvbG9yOiAnaW5oZXJpdCcsXG4gICAgYm9yZGVyQ29sb3I6ICdjdXJyZW50Q29sb3InXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzRweCA1cHgnLFxuICAgIGZvbnRTaXplOiB0aGVtZS50eXBvZ3JhcGh5LnB4VG9SZW0oMTMpXG4gIH0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ2xhcmdlJyAmJiBvd25lclN0YXRlLnZhcmlhbnQgPT09ICd0ZXh0JyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAxMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnb3V0bGluZWQnICYmIHtcbiAgICBwYWRkaW5nOiAnM3B4IDlweCcsXG4gICAgZm9udFNpemU6IHRoZW1lLnR5cG9ncmFwaHkucHhUb1JlbSgxMylcbiAgfSwgb3duZXJTdGF0ZS5zaXplID09PSAnbGFyZ2UnICYmIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ291dGxpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzdweCAyMXB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdzbWFsbCcgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzRweCAxMHB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDEzKVxuICB9LCBvd25lclN0YXRlLnNpemUgPT09ICdsYXJnZScgJiYgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnY29udGFpbmVkJyAmJiB7XG4gICAgcGFkZGluZzogJzhweCAyMnB4JyxcbiAgICBmb250U2l6ZTogdGhlbWUudHlwb2dyYXBoeS5weFRvUmVtKDE1KVxuICB9LCBvd25lclN0YXRlLmZ1bGxXaWR0aCAmJiB7XG4gICAgd2lkdGg6ICcxMDAlJ1xuICB9KTtcbn0sICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUuZGlzYWJsZUVsZXZhdGlvbiAmJiB7XG4gIGJveFNoYWRvdzogJ25vbmUnLFxuICAnJjpob3Zlcic6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmZvY3VzVmlzaWJsZX1gXToge1xuICAgIGJveFNoYWRvdzogJ25vbmUnXG4gIH0sXG4gICcmOmFjdGl2ZSc6IHtcbiAgICBib3hTaGFkb3c6ICdub25lJ1xuICB9LFxuICBbYCYuJHtidXR0b25DbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgYm94U2hhZG93OiAnbm9uZSdcbiAgfVxufSk7XG5jb25zdCBCdXR0b25TdGFydEljb24gPSBzdHlsZWQoJ3NwYW4nLCB7XG4gIG5hbWU6ICdNdWlCdXR0b24nLFxuICBzbG90OiAnU3RhcnRJY29uJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5zdGFydEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogOCxcbiAgbWFyZ2luTGVmdDogLTRcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpbkxlZnQ6IC0yXG59LCBjb21tb25JY29uU3R5bGVzKG93bmVyU3RhdGUpKSk7XG5jb25zdCBCdXR0b25FbmRJY29uID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQnV0dG9uJyxcbiAgc2xvdDogJ0VuZEljb24nLFxuICBvdmVycmlkZXNSZXNvbHZlcjogKHByb3BzLCBzdHlsZXMpID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBvd25lclN0YXRlXG4gICAgfSA9IHByb3BzO1xuICAgIHJldHVybiBbc3R5bGVzLmVuZEljb24sIHN0eWxlc1tgaWNvblNpemUke2NhcGl0YWxpemUob3duZXJTdGF0ZS5zaXplKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGVcbn0pID0+IF9leHRlbmRzKHtcbiAgZGlzcGxheTogJ2luaGVyaXQnLFxuICBtYXJnaW5SaWdodDogLTQsXG4gIG1hcmdpbkxlZnQ6IDhcbn0sIG93bmVyU3RhdGUuc2l6ZSA9PT0gJ3NtYWxsJyAmJiB7XG4gIG1hcmdpblJpZ2h0OiAtMlxufSwgY29tbW9uSWNvblN0eWxlcyhvd25lclN0YXRlKSkpO1xuY29uc3QgQnV0dG9uID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uKGluUHJvcHMsIHJlZikge1xuICAvLyBwcm9wcyBwcmlvcml0eTogYGluUHJvcHNgID4gYGNvbnRleHRQcm9wc2AgPiBgdGhlbWVEZWZhdWx0UHJvcHNgXG4gIGNvbnN0IGNvbnRleHRQcm9wcyA9IFJlYWN0LnVzZUNvbnRleHQoQnV0dG9uR3JvdXBDb250ZXh0KTtcbiAgY29uc3QgYnV0dG9uR3JvdXBCdXR0b25Db250ZXh0UG9zaXRpb25DbGFzc05hbWUgPSBSZWFjdC51c2VDb250ZXh0KEJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dCk7XG4gIGNvbnN0IHJlc29sdmVkUHJvcHMgPSByZXNvbHZlUHJvcHMoY29udGV4dFByb3BzLCBpblByb3BzKTtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogcmVzb2x2ZWRQcm9wcyxcbiAgICBuYW1lOiAnTXVpQnV0dG9uJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2hpbGRyZW4sXG4gICAgICBjb2xvciA9ICdwcmltYXJ5JyxcbiAgICAgIGNvbXBvbmVudCA9ICdidXR0b24nLFxuICAgICAgY2xhc3NOYW1lLFxuICAgICAgZGlzYWJsZWQgPSBmYWxzZSxcbiAgICAgIGRpc2FibGVFbGV2YXRpb24gPSBmYWxzZSxcbiAgICAgIGRpc2FibGVGb2N1c1JpcHBsZSA9IGZhbHNlLFxuICAgICAgZW5kSWNvbjogZW5kSWNvblByb3AsXG4gICAgICBmb2N1c1Zpc2libGVDbGFzc05hbWUsXG4gICAgICBmdWxsV2lkdGggPSBmYWxzZSxcbiAgICAgIHNpemUgPSAnbWVkaXVtJyxcbiAgICAgIHN0YXJ0SWNvbjogc3RhcnRJY29uUHJvcCxcbiAgICAgIHR5cGUsXG4gICAgICB2YXJpYW50ID0gJ3RleHQnXG4gICAgfSA9IHByb3BzLFxuICAgIG90aGVyID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG4gIGNvbnN0IG93bmVyU3RhdGUgPSBfZXh0ZW5kcyh7fSwgcHJvcHMsIHtcbiAgICBjb2xvcixcbiAgICBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZUVsZXZhdGlvbixcbiAgICBkaXNhYmxlRm9jdXNSaXBwbGUsXG4gICAgZnVsbFdpZHRoLFxuICAgIHNpemUsXG4gICAgdHlwZSxcbiAgICB2YXJpYW50XG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIGNvbnN0IHN0YXJ0SWNvbiA9IHN0YXJ0SWNvblByb3AgJiYgLyojX19QVVJFX18qL19qc3goQnV0dG9uU3RhcnRJY29uLCB7XG4gICAgY2xhc3NOYW1lOiBjbGFzc2VzLnN0YXJ0SWNvbixcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNoaWxkcmVuOiBzdGFydEljb25Qcm9wXG4gIH0pO1xuICBjb25zdCBlbmRJY29uID0gZW5kSWNvblByb3AgJiYgLyojX19QVVJFX18qL19qc3goQnV0dG9uRW5kSWNvbiwge1xuICAgIGNsYXNzTmFtZTogY2xhc3Nlcy5lbmRJY29uLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgY2hpbGRyZW46IGVuZEljb25Qcm9wXG4gIH0pO1xuICBjb25zdCBwb3NpdGlvbkNsYXNzTmFtZSA9IGJ1dHRvbkdyb3VwQnV0dG9uQ29udGV4dFBvc2l0aW9uQ2xhc3NOYW1lIHx8ICcnO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKEJ1dHRvblJvb3QsIF9leHRlbmRzKHtcbiAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgIGNsYXNzTmFtZTogY2xzeChjb250ZXh0UHJvcHMuY2xhc3NOYW1lLCBjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSwgcG9zaXRpb25DbGFzc05hbWUpLFxuICAgIGNvbXBvbmVudDogY29tcG9uZW50LFxuICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICBmb2N1c1JpcHBsZTogIWRpc2FibGVGb2N1c1JpcHBsZSxcbiAgICBmb2N1c1Zpc2libGVDbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5mb2N1c1Zpc2libGUsIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSksXG4gICAgcmVmOiByZWYsXG4gICAgdHlwZTogdHlwZVxuICB9LCBvdGhlciwge1xuICAgIGNsYXNzZXM6IGNsYXNzZXMsXG4gICAgY2hpbGRyZW46IFtzdGFydEljb24sIGNoaWxkcmVuLCBlbmRJY29uXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbi5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBUaGUgY29udGVudCBvZiB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IFByb3BUeXBlcy5ub2RlLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKi9cbiAgY2xhc3NlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBjb2xvciBvZiB0aGUgY29tcG9uZW50LlxuICAgKiBJdCBzdXBwb3J0cyBib3RoIGRlZmF1bHQgYW5kIGN1c3RvbSB0aGVtZSBjb2xvcnMsIHdoaWNoIGNhbiBiZSBhZGRlZCBhcyBzaG93biBpbiB0aGVcbiAgICogW3BhbGV0dGUgY3VzdG9taXphdGlvbiBndWlkZV0oaHR0cHM6Ly9tdWkuY29tL21hdGVyaWFsLXVpL2N1c3RvbWl6YXRpb24vcGFsZXR0ZS8jY3VzdG9tLWNvbG9ycykuXG4gICAqIEBkZWZhdWx0ICdwcmltYXJ5J1xuICAgKi9cbiAgY29sb3I6IFByb3BUeXBlcyAvKiBAdHlwZXNjcmlwdC10by1wcm9wdHlwZXMtaWdub3JlICovLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnaW5oZXJpdCcsICdwcmltYXJ5JywgJ3NlY29uZGFyeScsICdzdWNjZXNzJywgJ2Vycm9yJywgJ2luZm8nLCAnd2FybmluZyddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgaXMgZGlzYWJsZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlZDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIG5vIGVsZXZhdGlvbiBpcyB1c2VkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUVsZXZhdGlvbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSAga2V5Ym9hcmQgZm9jdXMgcmlwcGxlIGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZUZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBFbGVtZW50IHBsYWNlZCBhZnRlciB0aGUgY2hpbGRyZW4uXG4gICAqL1xuICBlbmRJY29uOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIGZvY3VzVmlzaWJsZUNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJ1dHRvbiB3aWxsIHRha2UgdXAgdGhlIGZ1bGwgd2lkdGggb2YgaXRzIGNvbnRhaW5lci5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZ1bGxXaWR0aDogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBUaGUgVVJMIHRvIGxpbmsgdG8gd2hlbiB0aGUgYnV0dG9uIGlzIGNsaWNrZWQuXG4gICAqIElmIGRlZmluZWQsIGFuIGBhYCBlbGVtZW50IHdpbGwgYmUgdXNlZCBhcyB0aGUgcm9vdCBub2RlLlxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzLnN0cmluZyxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIGBzbWFsbGAgaXMgZXF1aXZhbGVudCB0byB0aGUgZGVuc2UgYnV0dG9uIHN0eWxpbmcuXG4gICAqIEBkZWZhdWx0ICdtZWRpdW0nXG4gICAqL1xuICBzaXplOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3NtYWxsJywgJ21lZGl1bScsICdsYXJnZSddKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogRWxlbWVudCBwbGFjZWQgYmVmb3JlIHRoZSBjaGlsZHJlbi5cbiAgICovXG4gIHN0YXJ0SWNvbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICB0eXBlOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydidXR0b24nLCAncmVzZXQnLCAnc3VibWl0J10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIEBkZWZhdWx0ICd0ZXh0J1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydjb250YWluZWQnLCAnb3V0bGluZWQnLCAndGV4dCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uOyIsImltcG9ydCB7IHVuc3RhYmxlX2dlbmVyYXRlVXRpbGl0eUNsYXNzZXMgYXMgZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IGdlbmVyYXRlVXRpbGl0eUNsYXNzIGZyb20gJy4uL2dlbmVyYXRlVXRpbGl0eUNsYXNzJztcbmV4cG9ydCBmdW5jdGlvbiBnZXRUb3VjaFJpcHBsZVV0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpVG91Y2hSaXBwbGUnLCBzbG90KTtcbn1cbmNvbnN0IHRvdWNoUmlwcGxlQ2xhc3NlcyA9IGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMoJ011aVRvdWNoUmlwcGxlJywgWydyb290JywgJ3JpcHBsZScsICdyaXBwbGVWaXNpYmxlJywgJ3JpcHBsZVB1bHNhdGUnLCAnY2hpbGQnLCAnY2hpbGRMZWF2aW5nJywgJ2NoaWxkUHVsc2F0ZSddKTtcbmV4cG9ydCBkZWZhdWx0IHRvdWNoUmlwcGxlQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJjZW50ZXJcIiwgXCJjbGFzc2VzXCIsIFwiY2xhc3NOYW1lXCJdO1xubGV0IF8gPSB0ID0+IHQsXG4gIF90LFxuICBfdDIsXG4gIF90MyxcbiAgX3Q0O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IFRyYW5zaXRpb25Hcm91cCB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBrZXlmcmFtZXMgfSBmcm9tICdAbXVpL3N5c3RlbSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IFJpcHBsZSBmcm9tICcuL1JpcHBsZSc7XG5pbXBvcnQgdG91Y2hSaXBwbGVDbGFzc2VzIGZyb20gJy4vdG91Y2hSaXBwbGVDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCBEVVJBVElPTiA9IDU1MDtcbmV4cG9ydCBjb25zdCBERUxBWV9SSVBQTEUgPSA4MDtcbmNvbnN0IGVudGVyS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QgfHwgKF90ID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMCk7XG4gICAgb3BhY2l0eTogMC4xO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiBzY2FsZSgxKTtcbiAgICBvcGFjaXR5OiAwLjM7XG4gIH1cbmApKTtcbmNvbnN0IGV4aXRLZXlmcmFtZSA9IGtleWZyYW1lcyhfdDIgfHwgKF90MiA9IF9gXG4gIDAlIHtcbiAgICBvcGFjaXR5OiAxO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgb3BhY2l0eTogMDtcbiAgfVxuYCkpO1xuY29uc3QgcHVsc2F0ZUtleWZyYW1lID0ga2V5ZnJhbWVzKF90MyB8fCAoX3QzID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gIH1cblxuICA1MCUge1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMC45Mik7XG4gIH1cblxuICAxMDAlIHtcbiAgICB0cmFuc2Zvcm06IHNjYWxlKDEpO1xuICB9XG5gKSk7XG5leHBvcnQgY29uc3QgVG91Y2hSaXBwbGVSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpVG91Y2hSaXBwbGUnLFxuICBzbG90OiAnUm9vdCdcbn0pKHtcbiAgb3ZlcmZsb3c6ICdoaWRkZW4nLFxuICBwb2ludGVyRXZlbnRzOiAnbm9uZScsXG4gIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICB6SW5kZXg6IDAsXG4gIHRvcDogMCxcbiAgcmlnaHQ6IDAsXG4gIGJvdHRvbTogMCxcbiAgbGVmdDogMCxcbiAgYm9yZGVyUmFkaXVzOiAnaW5oZXJpdCdcbn0pO1xuXG4vLyBUaGlzIGBzdHlsZWQoKWAgZnVuY3Rpb24gaW52b2tlcyBrZXlmcmFtZXMuIGBzdHlsZWQtY29tcG9uZW50c2Agb25seSBzdXBwb3J0cyBrZXlmcmFtZXNcbi8vIGluIHN0cmluZyB0ZW1wbGF0ZXMuIERvIG5vdCBjb252ZXJ0IHRoZXNlIHN0eWxlcyBpbiBKUyBvYmplY3QgYXMgaXQgd2lsbCBicmVhay5cbmV4cG9ydCBjb25zdCBUb3VjaFJpcHBsZVJpcHBsZSA9IHN0eWxlZChSaXBwbGUsIHtcbiAgbmFtZTogJ011aVRvdWNoUmlwcGxlJyxcbiAgc2xvdDogJ1JpcHBsZSdcbn0pKF90NCB8fCAoX3Q0ID0gX2BcbiAgb3BhY2l0eTogMDtcbiAgcG9zaXRpb246IGFic29sdXRlO1xuXG4gICYuJHswfSB7XG4gICAgb3BhY2l0eTogMC4zO1xuICAgIHRyYW5zZm9ybTogc2NhbGUoMSk7XG4gICAgYW5pbWF0aW9uLW5hbWU6ICR7MH07XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkezB9bXM7XG4gICAgYW5pbWF0aW9uLXRpbWluZy1mdW5jdGlvbjogJHswfTtcbiAgfVxuXG4gICYuJHswfSB7XG4gICAgYW5pbWF0aW9uLWR1cmF0aW9uOiAkezB9bXM7XG4gIH1cblxuICAmIC4kezB9IHtcbiAgICBvcGFjaXR5OiAxO1xuICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgIHdpZHRoOiAxMDAlO1xuICAgIGhlaWdodDogMTAwJTtcbiAgICBib3JkZXItcmFkaXVzOiA1MCU7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogY3VycmVudENvbG9yO1xuICB9XG5cbiAgJiAuJHswfSB7XG4gICAgb3BhY2l0eTogMDtcbiAgICBhbmltYXRpb24tbmFtZTogJHswfTtcbiAgICBhbmltYXRpb24tZHVyYXRpb246ICR7MH1tcztcbiAgICBhbmltYXRpb24tdGltaW5nLWZ1bmN0aW9uOiAkezB9O1xuICB9XG5cbiAgJiAuJHswfSB7XG4gICAgcG9zaXRpb246IGFic29sdXRlO1xuICAgIC8qIEBub2ZsaXAgKi9cbiAgICBsZWZ0OiAwcHg7XG4gICAgdG9wOiAwO1xuICAgIGFuaW1hdGlvbi1uYW1lOiAkezB9O1xuICAgIGFuaW1hdGlvbi1kdXJhdGlvbjogMjUwMG1zO1xuICAgIGFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb246ICR7MH07XG4gICAgYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudDogaW5maW5pdGU7XG4gICAgYW5pbWF0aW9uLWRlbGF5OiAyMDBtcztcbiAgfVxuYCksIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVWaXNpYmxlLCBlbnRlcktleWZyYW1lLCBEVVJBVElPTiwgKHtcbiAgdGhlbWVcbn0pID0+IHRoZW1lLnRyYW5zaXRpb25zLmVhc2luZy5lYXNlSW5PdXQsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVQdWxzYXRlLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uc2hvcnRlciwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRMZWF2aW5nLCBleGl0S2V5ZnJhbWUsIERVUkFUSU9OLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkUHVsc2F0ZSwgcHVsc2F0ZUtleWZyYW1lLCAoe1xuICB0aGVtZVxufSkgPT4gdGhlbWUudHJhbnNpdGlvbnMuZWFzaW5nLmVhc2VJbk91dCk7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqXG4gKiBUT0RPIHY1OiBNYWtlIHByaXZhdGVcbiAqL1xuY29uc3QgVG91Y2hSaXBwbGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBUb3VjaFJpcHBsZShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpVG91Y2hSaXBwbGUnXG4gIH0pO1xuICBjb25zdCB7XG4gICAgICBjZW50ZXI6IGNlbnRlclByb3AgPSBmYWxzZSxcbiAgICAgIGNsYXNzZXMgPSB7fSxcbiAgICAgIGNsYXNzTmFtZVxuICAgIH0gPSBwcm9wcyxcbiAgICBvdGhlciA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuICBjb25zdCBbcmlwcGxlcywgc2V0UmlwcGxlc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gIGNvbnN0IG5leHRLZXkgPSBSZWFjdC51c2VSZWYoMCk7XG4gIGNvbnN0IHJpcHBsZUNhbGxiYWNrID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyaXBwbGVDYWxsYmFjay5jdXJyZW50KSB7XG4gICAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50KCk7XG4gICAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gbnVsbDtcbiAgICB9XG4gIH0sIFtyaXBwbGVzXSk7XG5cbiAgLy8gVXNlZCB0byBmaWx0ZXIgb3V0IG1vdXNlIGVtdWxhdGVkIGV2ZW50cyBvbiBtb2JpbGUuXG4gIGNvbnN0IGlnbm9yaW5nTW91c2VEb3duID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgLy8gV2UgdXNlIGEgdGltZXIgaW4gb3JkZXIgdG8gb25seSBzaG93IHRoZSByaXBwbGVzIGZvciB0b3VjaCBcImNsaWNrXCIgbGlrZSBldmVudHMuXG4gIC8vIFdlIGRvbid0IHdhbnQgdG8gZGlzcGxheSB0aGUgcmlwcGxlIGZvciB0b3VjaCBzY3JvbGwgZXZlbnRzLlxuICBjb25zdCBzdGFydFRpbWVyID0gUmVhY3QudXNlUmVmKDApO1xuXG4gIC8vIFRoaXMgaXMgdGhlIGhvb2sgY2FsbGVkIG9uY2UgdGhlIHByZXZpb3VzIHRpbWVvdXQgaXMgcmVhZHkuXG4gIGNvbnN0IHN0YXJ0VGltZXJDb21taXQgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGNvbnRhaW5lciA9IFJlYWN0LnVzZVJlZihudWxsKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgaWYgKHN0YXJ0VGltZXIuY3VycmVudCkge1xuICAgICAgICBjbGVhclRpbWVvdXQoc3RhcnRUaW1lci5jdXJyZW50KTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbXSk7XG4gIGNvbnN0IHN0YXJ0Q29tbWl0ID0gUmVhY3QudXNlQ2FsbGJhY2socGFyYW1zID0+IHtcbiAgICBjb25zdCB7XG4gICAgICBwdWxzYXRlLFxuICAgICAgcmlwcGxlWCxcbiAgICAgIHJpcHBsZVksXG4gICAgICByaXBwbGVTaXplLFxuICAgICAgY2JcbiAgICB9ID0gcGFyYW1zO1xuICAgIHNldFJpcHBsZXMob2xkUmlwcGxlcyA9PiBbLi4ub2xkUmlwcGxlcywgLyojX19QVVJFX18qL19qc3goVG91Y2hSaXBwbGVSaXBwbGUsIHtcbiAgICAgIGNsYXNzZXM6IHtcbiAgICAgICAgcmlwcGxlOiBjbHN4KGNsYXNzZXMucmlwcGxlLCB0b3VjaFJpcHBsZUNsYXNzZXMucmlwcGxlKSxcbiAgICAgICAgcmlwcGxlVmlzaWJsZTogY2xzeChjbGFzc2VzLnJpcHBsZVZpc2libGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVWaXNpYmxlKSxcbiAgICAgICAgcmlwcGxlUHVsc2F0ZTogY2xzeChjbGFzc2VzLnJpcHBsZVB1bHNhdGUsIHRvdWNoUmlwcGxlQ2xhc3Nlcy5yaXBwbGVQdWxzYXRlKSxcbiAgICAgICAgY2hpbGQ6IGNsc3goY2xhc3Nlcy5jaGlsZCwgdG91Y2hSaXBwbGVDbGFzc2VzLmNoaWxkKSxcbiAgICAgICAgY2hpbGRMZWF2aW5nOiBjbHN4KGNsYXNzZXMuY2hpbGRMZWF2aW5nLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRMZWF2aW5nKSxcbiAgICAgICAgY2hpbGRQdWxzYXRlOiBjbHN4KGNsYXNzZXMuY2hpbGRQdWxzYXRlLCB0b3VjaFJpcHBsZUNsYXNzZXMuY2hpbGRQdWxzYXRlKVxuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IERVUkFUSU9OLFxuICAgICAgcHVsc2F0ZTogcHVsc2F0ZSxcbiAgICAgIHJpcHBsZVg6IHJpcHBsZVgsXG4gICAgICByaXBwbGVZOiByaXBwbGVZLFxuICAgICAgcmlwcGxlU2l6ZTogcmlwcGxlU2l6ZVxuICAgIH0sIG5leHRLZXkuY3VycmVudCldKTtcbiAgICBuZXh0S2V5LmN1cnJlbnQgKz0gMTtcbiAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gY2I7XG4gIH0sIFtjbGFzc2VzXSk7XG4gIGNvbnN0IHN0YXJ0ID0gUmVhY3QudXNlQ2FsbGJhY2soKGV2ZW50ID0ge30sIG9wdGlvbnMgPSB7fSwgY2IgPSAoKSA9PiB7fSkgPT4ge1xuICAgIGNvbnN0IHtcbiAgICAgIHB1bHNhdGUgPSBmYWxzZSxcbiAgICAgIGNlbnRlciA9IGNlbnRlclByb3AgfHwgb3B0aW9ucy5wdWxzYXRlLFxuICAgICAgZmFrZUVsZW1lbnQgPSBmYWxzZSAvLyBGb3IgdGVzdCBwdXJwb3Nlc1xuICAgIH0gPSBvcHRpb25zO1xuICAgIGlmICgoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID09PSAnbW91c2Vkb3duJyAmJiBpZ25vcmluZ01vdXNlRG93bi5jdXJyZW50KSB7XG4gICAgICBpZ25vcmluZ01vdXNlRG93bi5jdXJyZW50ID0gZmFsc2U7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGlmICgoZXZlbnQgPT0gbnVsbCA/IHZvaWQgMCA6IGV2ZW50LnR5cGUpID09PSAndG91Y2hzdGFydCcpIHtcbiAgICAgIGlnbm9yaW5nTW91c2VEb3duLmN1cnJlbnQgPSB0cnVlO1xuICAgIH1cbiAgICBjb25zdCBlbGVtZW50ID0gZmFrZUVsZW1lbnQgPyBudWxsIDogY29udGFpbmVyLmN1cnJlbnQ7XG4gICAgY29uc3QgcmVjdCA9IGVsZW1lbnQgPyBlbGVtZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIDoge1xuICAgICAgd2lkdGg6IDAsXG4gICAgICBoZWlnaHQ6IDAsXG4gICAgICBsZWZ0OiAwLFxuICAgICAgdG9wOiAwXG4gICAgfTtcblxuICAgIC8vIEdldCB0aGUgc2l6ZSBvZiB0aGUgcmlwcGxlXG4gICAgbGV0IHJpcHBsZVg7XG4gICAgbGV0IHJpcHBsZVk7XG4gICAgbGV0IHJpcHBsZVNpemU7XG4gICAgaWYgKGNlbnRlciB8fCBldmVudCA9PT0gdW5kZWZpbmVkIHx8IGV2ZW50LmNsaWVudFggPT09IDAgJiYgZXZlbnQuY2xpZW50WSA9PT0gMCB8fCAhZXZlbnQuY2xpZW50WCAmJiAhZXZlbnQudG91Y2hlcykge1xuICAgICAgcmlwcGxlWCA9IE1hdGgucm91bmQocmVjdC53aWR0aCAvIDIpO1xuICAgICAgcmlwcGxlWSA9IE1hdGgucm91bmQocmVjdC5oZWlnaHQgLyAyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qge1xuICAgICAgICBjbGllbnRYLFxuICAgICAgICBjbGllbnRZXG4gICAgICB9ID0gZXZlbnQudG91Y2hlcyAmJiBldmVudC50b3VjaGVzLmxlbmd0aCA+IDAgPyBldmVudC50b3VjaGVzWzBdIDogZXZlbnQ7XG4gICAgICByaXBwbGVYID0gTWF0aC5yb3VuZChjbGllbnRYIC0gcmVjdC5sZWZ0KTtcbiAgICAgIHJpcHBsZVkgPSBNYXRoLnJvdW5kKGNsaWVudFkgLSByZWN0LnRvcCk7XG4gICAgfVxuICAgIGlmIChjZW50ZXIpIHtcbiAgICAgIHJpcHBsZVNpemUgPSBNYXRoLnNxcnQoKDIgKiByZWN0LndpZHRoICoqIDIgKyByZWN0LmhlaWdodCAqKiAyKSAvIDMpO1xuXG4gICAgICAvLyBGb3Igc29tZSByZWFzb24gdGhlIGFuaW1hdGlvbiBpcyBicm9rZW4gb24gTW9iaWxlIENocm9tZSBpZiB0aGUgc2l6ZSBpcyBldmVuLlxuICAgICAgaWYgKHJpcHBsZVNpemUgJSAyID09PSAwKSB7XG4gICAgICAgIHJpcHBsZVNpemUgKz0gMTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3Qgc2l6ZVggPSBNYXRoLm1heChNYXRoLmFicygoZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50V2lkdGggOiAwKSAtIHJpcHBsZVgpLCByaXBwbGVYKSAqIDIgKyAyO1xuICAgICAgY29uc3Qgc2l6ZVkgPSBNYXRoLm1heChNYXRoLmFicygoZWxlbWVudCA/IGVsZW1lbnQuY2xpZW50SGVpZ2h0IDogMCkgLSByaXBwbGVZKSwgcmlwcGxlWSkgKiAyICsgMjtcbiAgICAgIHJpcHBsZVNpemUgPSBNYXRoLnNxcnQoc2l6ZVggKiogMiArIHNpemVZICoqIDIpO1xuICAgIH1cblxuICAgIC8vIFRvdWNoZSBkZXZpY2VzXG4gICAgaWYgKGV2ZW50ICE9IG51bGwgJiYgZXZlbnQudG91Y2hlcykge1xuICAgICAgLy8gY2hlY2sgdGhhdCB0aGlzIGlzbid0IGFub3RoZXIgdG91Y2hzdGFydCBkdWUgdG8gbXVsdGl0b3VjaFxuICAgICAgLy8gb3RoZXJ3aXNlIHdlIHdpbGwgb25seSBjbGVhciBhIHNpbmdsZSB0aW1lciB3aGVuIHVubW91bnRpbmcgd2hpbGUgdHdvXG4gICAgICAvLyBhcmUgcnVubmluZ1xuICAgICAgaWYgKHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9PT0gbnVsbCkge1xuICAgICAgICAvLyBQcmVwYXJlIHRoZSByaXBwbGUgZWZmZWN0LlxuICAgICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQgPSAoKSA9PiB7XG4gICAgICAgICAgc3RhcnRDb21taXQoe1xuICAgICAgICAgICAgcHVsc2F0ZSxcbiAgICAgICAgICAgIHJpcHBsZVgsXG4gICAgICAgICAgICByaXBwbGVZLFxuICAgICAgICAgICAgcmlwcGxlU2l6ZSxcbiAgICAgICAgICAgIGNiXG4gICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIC8vIERlbGF5IHRoZSBleGVjdXRpb24gb2YgdGhlIHJpcHBsZSBlZmZlY3QuXG4gICAgICAgIHN0YXJ0VGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgIGlmIChzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQpIHtcbiAgICAgICAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCgpO1xuICAgICAgICAgICAgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50ID0gbnVsbDtcbiAgICAgICAgICB9XG4gICAgICAgIH0sIERFTEFZX1JJUFBMRSk7IC8vIFdlIGhhdmUgdG8gbWFrZSBhIHRyYWRlb2ZmIHdpdGggdGhpcyB2YWx1ZS5cbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgc3RhcnRDb21taXQoe1xuICAgICAgICBwdWxzYXRlLFxuICAgICAgICByaXBwbGVYLFxuICAgICAgICByaXBwbGVZLFxuICAgICAgICByaXBwbGVTaXplLFxuICAgICAgICBjYlxuICAgICAgfSk7XG4gICAgfVxuICB9LCBbY2VudGVyUHJvcCwgc3RhcnRDb21taXRdKTtcbiAgY29uc3QgcHVsc2F0ZSA9IFJlYWN0LnVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzdGFydCh7fSwge1xuICAgICAgcHVsc2F0ZTogdHJ1ZVxuICAgIH0pO1xuICB9LCBbc3RhcnRdKTtcbiAgY29uc3Qgc3RvcCA9IFJlYWN0LnVzZUNhbGxiYWNrKChldmVudCwgY2IpID0+IHtcbiAgICBjbGVhclRpbWVvdXQoc3RhcnRUaW1lci5jdXJyZW50KTtcblxuICAgIC8vIFRoZSB0b3VjaCBpbnRlcmFjdGlvbiBvY2N1cnMgdG9vIHF1aWNrbHkuXG4gICAgLy8gV2Ugc3RpbGwgd2FudCB0byBzaG93IHJpcHBsZSBlZmZlY3QuXG4gICAgaWYgKChldmVudCA9PSBudWxsID8gdm9pZCAwIDogZXZlbnQudHlwZSkgPT09ICd0b3VjaGVuZCcgJiYgc3RhcnRUaW1lckNvbW1pdC5jdXJyZW50KSB7XG4gICAgICBzdGFydFRpbWVyQ29tbWl0LmN1cnJlbnQoKTtcbiAgICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9IG51bGw7XG4gICAgICBzdGFydFRpbWVyLmN1cnJlbnQgPSBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgc3RvcChldmVudCwgY2IpO1xuICAgICAgfSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIHN0YXJ0VGltZXJDb21taXQuY3VycmVudCA9IG51bGw7XG4gICAgc2V0UmlwcGxlcyhvbGRSaXBwbGVzID0+IHtcbiAgICAgIGlmIChvbGRSaXBwbGVzLmxlbmd0aCA+IDApIHtcbiAgICAgICAgcmV0dXJuIG9sZFJpcHBsZXMuc2xpY2UoMSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gb2xkUmlwcGxlcztcbiAgICB9KTtcbiAgICByaXBwbGVDYWxsYmFjay5jdXJyZW50ID0gY2I7XG4gIH0sIFtdKTtcbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsICgpID0+ICh7XG4gICAgcHVsc2F0ZSxcbiAgICBzdGFydCxcbiAgICBzdG9wXG4gIH0pLCBbcHVsc2F0ZSwgc3RhcnQsIHN0b3BdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFRvdWNoUmlwcGxlUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeCh0b3VjaFJpcHBsZUNsYXNzZXMucm9vdCwgY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIHJlZjogY29udGFpbmVyXG4gIH0sIG90aGVyLCB7XG4gICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KFRyYW5zaXRpb25Hcm91cCwge1xuICAgICAgY29tcG9uZW50OiBudWxsLFxuICAgICAgZXhpdDogdHJ1ZSxcbiAgICAgIGNoaWxkcmVuOiByaXBwbGVzXG4gICAgfSlcbiAgfSkpO1xufSk7XG5wcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBUb3VjaFJpcHBsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGUgc3RhcnRzIGF0IHRoZSBjZW50ZXIgb2YgdGhlIGNvbXBvbmVudFxuICAgKiByYXRoZXIgdGhhbiBhdCB0aGUgcG9pbnQgb2YgaW50ZXJhY3Rpb24uXG4gICAqL1xuICBjZW50ZXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogT3ZlcnJpZGUgb3IgZXh0ZW5kIHRoZSBzdHlsZXMgYXBwbGllZCB0byB0aGUgY29tcG9uZW50LlxuICAgKiBTZWUgW0NTUyBBUEldKCNjc3MpIGJlbG93IGZvciBtb3JlIGRldGFpbHMuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgVG91Y2hSaXBwbGU7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5cbi8qKlxuICogQGlnbm9yZSAtIGludGVybmFsIGNvbXBvbmVudC5cbiAqL1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmZ1bmN0aW9uIFJpcHBsZShwcm9wcykge1xuICBjb25zdCB7XG4gICAgY2xhc3NOYW1lLFxuICAgIGNsYXNzZXMsXG4gICAgcHVsc2F0ZSA9IGZhbHNlLFxuICAgIHJpcHBsZVgsXG4gICAgcmlwcGxlWSxcbiAgICByaXBwbGVTaXplLFxuICAgIGluOiBpblByb3AsXG4gICAgb25FeGl0ZWQsXG4gICAgdGltZW91dFxuICB9ID0gcHJvcHM7XG4gIGNvbnN0IFtsZWF2aW5nLCBzZXRMZWF2aW5nXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgcmlwcGxlQ2xhc3NOYW1lID0gY2xzeChjbGFzc05hbWUsIGNsYXNzZXMucmlwcGxlLCBjbGFzc2VzLnJpcHBsZVZpc2libGUsIHB1bHNhdGUgJiYgY2xhc3Nlcy5yaXBwbGVQdWxzYXRlKTtcbiAgY29uc3QgcmlwcGxlU3R5bGVzID0ge1xuICAgIHdpZHRoOiByaXBwbGVTaXplLFxuICAgIGhlaWdodDogcmlwcGxlU2l6ZSxcbiAgICB0b3A6IC0ocmlwcGxlU2l6ZSAvIDIpICsgcmlwcGxlWSxcbiAgICBsZWZ0OiAtKHJpcHBsZVNpemUgLyAyKSArIHJpcHBsZVhcbiAgfTtcbiAgY29uc3QgY2hpbGRDbGFzc05hbWUgPSBjbHN4KGNsYXNzZXMuY2hpbGQsIGxlYXZpbmcgJiYgY2xhc3Nlcy5jaGlsZExlYXZpbmcsIHB1bHNhdGUgJiYgY2xhc3Nlcy5jaGlsZFB1bHNhdGUpO1xuICBpZiAoIWluUHJvcCAmJiAhbGVhdmluZykge1xuICAgIHNldExlYXZpbmcodHJ1ZSk7XG4gIH1cbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWluUHJvcCAmJiBvbkV4aXRlZCAhPSBudWxsKSB7XG4gICAgICAvLyByZWFjdC10cmFuc2l0aW9uLWdyb3VwI29uRXhpdGVkXG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KG9uRXhpdGVkLCB0aW1lb3V0KTtcbiAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgIGNsZWFyVGltZW91dCh0aW1lb3V0SWQpO1xuICAgICAgfTtcbiAgICB9XG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfSwgW29uRXhpdGVkLCBpblByb3AsIHRpbWVvdXRdKTtcbiAgcmV0dXJuIC8qI19fUFVSRV9fKi9fanN4KFwic3BhblwiLCB7XG4gICAgY2xhc3NOYW1lOiByaXBwbGVDbGFzc05hbWUsXG4gICAgc3R5bGU6IHJpcHBsZVN0eWxlcyxcbiAgICBjaGlsZHJlbjogLyojX19QVVJFX18qL19qc3goXCJzcGFuXCIsIHtcbiAgICAgIGNsYXNzTmFtZTogY2hpbGRDbGFzc05hbWVcbiAgICB9KVxuICB9KTtcbn1cbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IFJpcHBsZS5wcm9wVHlwZXMgPSB7XG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqIFNlZSBbQ1NTIEFQSV0oI2NzcykgYmVsb3cgZm9yIG1vcmUgZGV0YWlscy5cbiAgICovXG4gIGNsYXNzZXM6IFByb3BUeXBlcy5vYmplY3QuaXNSZXF1aXJlZCxcbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZSAtIGluamVjdGVkIGZyb20gVHJhbnNpdGlvbkdyb3VwXG4gICAqL1xuICBpbjogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBAaWdub3JlIC0gaW5qZWN0ZWQgZnJvbSBUcmFuc2l0aW9uR3JvdXBcbiAgICovXG4gIG9uRXhpdGVkOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBwdWxzYXRlcywgdHlwaWNhbGx5IGluZGljYXRpbmcgdGhlIGtleWJvYXJkIGZvY3VzIHN0YXRlIG9mIGFuIGVsZW1lbnQuXG4gICAqL1xuICBwdWxzYXRlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIERpYW1ldGVyIG9mIHRoZSByaXBwbGUuXG4gICAqL1xuICByaXBwbGVTaXplOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogSG9yaXpvbnRhbCBwb3NpdGlvbiBvZiB0aGUgcmlwcGxlIGNlbnRlci5cbiAgICovXG4gIHJpcHBsZVg6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBWZXJ0aWNhbCBwb3NpdGlvbiBvZiB0aGUgcmlwcGxlIGNlbnRlci5cbiAgICovXG4gIHJpcHBsZVk6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBleGl0IGRlbGF5XG4gICAqL1xuICB0aW1lb3V0OiBQcm9wVHlwZXMubnVtYmVyLmlzUmVxdWlyZWRcbn0gOiB2b2lkIDA7XG5leHBvcnQgZGVmYXVsdCBSaXBwbGU7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aUJ1dHRvbkJhc2UnLCBzbG90KTtcbn1cbmNvbnN0IGJ1dHRvbkJhc2VDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpQnV0dG9uQmFzZScsIFsncm9vdCcsICdkaXNhYmxlZCcsICdmb2N1c1Zpc2libGUnXSk7XG5leHBvcnQgZGVmYXVsdCBidXR0b25CYXNlQ2xhc3NlczsiLCIndXNlIGNsaWVudCc7XG5cbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuaW1wb3J0IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlXCI7XG5jb25zdCBfZXhjbHVkZWQgPSBbXCJhY3Rpb25cIiwgXCJjZW50ZXJSaXBwbGVcIiwgXCJjaGlsZHJlblwiLCBcImNsYXNzTmFtZVwiLCBcImNvbXBvbmVudFwiLCBcImRpc2FibGVkXCIsIFwiZGlzYWJsZVJpcHBsZVwiLCBcImRpc2FibGVUb3VjaFJpcHBsZVwiLCBcImZvY3VzUmlwcGxlXCIsIFwiZm9jdXNWaXNpYmxlQ2xhc3NOYW1lXCIsIFwiTGlua0NvbXBvbmVudFwiLCBcIm9uQmx1clwiLCBcIm9uQ2xpY2tcIiwgXCJvbkNvbnRleHRNZW51XCIsIFwib25EcmFnTGVhdmVcIiwgXCJvbkZvY3VzXCIsIFwib25Gb2N1c1Zpc2libGVcIiwgXCJvbktleURvd25cIiwgXCJvbktleVVwXCIsIFwib25Nb3VzZURvd25cIiwgXCJvbk1vdXNlTGVhdmVcIiwgXCJvbk1vdXNlVXBcIiwgXCJvblRvdWNoRW5kXCIsIFwib25Ub3VjaE1vdmVcIiwgXCJvblRvdWNoU3RhcnRcIiwgXCJ0YWJJbmRleFwiLCBcIlRvdWNoUmlwcGxlUHJvcHNcIiwgXCJ0b3VjaFJpcHBsZVJlZlwiLCBcInR5cGVcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IGNsc3ggZnJvbSAnY2xzeCc7XG5pbXBvcnQgeyBlbGVtZW50VHlwZUFjY2VwdGluZ1JlZiwgcmVmVHlwZSB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHsgdW5zdGFibGVfY29tcG9zZUNsYXNzZXMgYXMgY29tcG9zZUNsYXNzZXMgfSBmcm9tICdAbXVpL2Jhc2UvY29tcG9zZUNsYXNzZXMnO1xuaW1wb3J0IHN0eWxlZCBmcm9tICcuLi9zdHlsZXMvc3R5bGVkJztcbmltcG9ydCB1c2VUaGVtZVByb3BzIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZVByb3BzJztcbmltcG9ydCB1c2VGb3JrUmVmIGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHVzZUV2ZW50Q2FsbGJhY2sgZnJvbSAnLi4vdXRpbHMvdXNlRXZlbnRDYWxsYmFjayc7XG5pbXBvcnQgdXNlSXNGb2N1c1Zpc2libGUgZnJvbSAnLi4vdXRpbHMvdXNlSXNGb2N1c1Zpc2libGUnO1xuaW1wb3J0IFRvdWNoUmlwcGxlIGZyb20gJy4vVG91Y2hSaXBwbGUnO1xuaW1wb3J0IGJ1dHRvbkJhc2VDbGFzc2VzLCB7IGdldEJ1dHRvbkJhc2VVdGlsaXR5Q2xhc3MgfSBmcm9tICcuL2J1dHRvbkJhc2VDbGFzc2VzJztcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyBqc3hzIGFzIF9qc3hzIH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgZGlzYWJsZWQsXG4gICAgZm9jdXNWaXNpYmxlLFxuICAgIGZvY3VzVmlzaWJsZUNsYXNzTmFtZSxcbiAgICBjbGFzc2VzXG4gIH0gPSBvd25lclN0YXRlO1xuICBjb25zdCBzbG90cyA9IHtcbiAgICByb290OiBbJ3Jvb3QnLCBkaXNhYmxlZCAmJiAnZGlzYWJsZWQnLCBmb2N1c1Zpc2libGUgJiYgJ2ZvY3VzVmlzaWJsZSddXG4gIH07XG4gIGNvbnN0IGNvbXBvc2VkQ2xhc3NlcyA9IGNvbXBvc2VDbGFzc2VzKHNsb3RzLCBnZXRCdXR0b25CYXNlVXRpbGl0eUNsYXNzLCBjbGFzc2VzKTtcbiAgaWYgKGZvY3VzVmlzaWJsZSAmJiBmb2N1c1Zpc2libGVDbGFzc05hbWUpIHtcbiAgICBjb21wb3NlZENsYXNzZXMucm9vdCArPSBgICR7Zm9jdXNWaXNpYmxlQ2xhc3NOYW1lfWA7XG4gIH1cbiAgcmV0dXJuIGNvbXBvc2VkQ2xhc3Nlcztcbn07XG5leHBvcnQgY29uc3QgQnV0dG9uQmFzZVJvb3QgPSBzdHlsZWQoJ2J1dHRvbicsIHtcbiAgbmFtZTogJ011aUJ1dHRvbkJhc2UnLFxuICBzbG90OiAnUm9vdCcsXG4gIG92ZXJyaWRlc1Jlc29sdmVyOiAocHJvcHMsIHN0eWxlcykgPT4gc3R5bGVzLnJvb3Rcbn0pKHtcbiAgZGlzcGxheTogJ2lubGluZS1mbGV4JyxcbiAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICBXZWJraXRUYXBIaWdobGlnaHRDb2xvcjogJ3RyYW5zcGFyZW50JyxcbiAgYmFja2dyb3VuZENvbG9yOiAndHJhbnNwYXJlbnQnLFxuICAvLyBSZXNldCBkZWZhdWx0IHZhbHVlXG4gIC8vIFdlIGRpc2FibGUgdGhlIGZvY3VzIHJpbmcgZm9yIG1vdXNlLCB0b3VjaCBhbmQga2V5Ym9hcmQgdXNlcnMuXG4gIG91dGxpbmU6IDAsXG4gIGJvcmRlcjogMCxcbiAgbWFyZ2luOiAwLFxuICAvLyBSZW1vdmUgdGhlIG1hcmdpbiBpbiBTYWZhcmlcbiAgYm9yZGVyUmFkaXVzOiAwLFxuICBwYWRkaW5nOiAwLFxuICAvLyBSZW1vdmUgdGhlIHBhZGRpbmcgaW4gRmlyZWZveFxuICBjdXJzb3I6ICdwb2ludGVyJyxcbiAgdXNlclNlbGVjdDogJ25vbmUnLFxuICB2ZXJ0aWNhbEFsaWduOiAnbWlkZGxlJyxcbiAgTW96QXBwZWFyYW5jZTogJ25vbmUnLFxuICAvLyBSZXNldFxuICBXZWJraXRBcHBlYXJhbmNlOiAnbm9uZScsXG4gIC8vIFJlc2V0XG4gIHRleHREZWNvcmF0aW9uOiAnbm9uZScsXG4gIC8vIFNvIHdlIHRha2UgcHJlY2VkZW50IG92ZXIgdGhlIHN0eWxlIG9mIGEgbmF0aXZlIDxhIC8+IGVsZW1lbnQuXG4gIGNvbG9yOiAnaW5oZXJpdCcsXG4gICcmOjotbW96LWZvY3VzLWlubmVyJzoge1xuICAgIGJvcmRlclN0eWxlOiAnbm9uZScgLy8gUmVtb3ZlIEZpcmVmb3ggZG90dGVkIG91dGxpbmUuXG4gIH0sXG4gIFtgJi4ke2J1dHRvbkJhc2VDbGFzc2VzLmRpc2FibGVkfWBdOiB7XG4gICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgIC8vIERpc2FibGUgbGluayBpbnRlcmFjdGlvbnNcbiAgICBjdXJzb3I6ICdkZWZhdWx0J1xuICB9LFxuICAnQG1lZGlhIHByaW50Jzoge1xuICAgIGNvbG9yQWRqdXN0OiAnZXhhY3QnXG4gIH1cbn0pO1xuXG4vKipcbiAqIGBCdXR0b25CYXNlYCBjb250YWlucyBhcyBmZXcgc3R5bGVzIGFzIHBvc3NpYmxlLlxuICogSXQgYWltcyB0byBiZSBhIHNpbXBsZSBidWlsZGluZyBibG9jayBmb3IgY3JlYXRpbmcgYSBidXR0b24uXG4gKiBJdCBjb250YWlucyBhIGxvYWQgb2Ygc3R5bGUgcmVzZXQgYW5kIHNvbWUgZm9jdXMvcmlwcGxlIGxvZ2ljLlxuICovXG5jb25zdCBCdXR0b25CYXNlID0gLyojX19QVVJFX18qL1JlYWN0LmZvcndhcmRSZWYoZnVuY3Rpb24gQnV0dG9uQmFzZShpblByb3BzLCByZWYpIHtcbiAgY29uc3QgcHJvcHMgPSB1c2VUaGVtZVByb3BzKHtcbiAgICBwcm9wczogaW5Qcm9wcyxcbiAgICBuYW1lOiAnTXVpQnV0dG9uQmFzZSdcbiAgfSk7XG4gIGNvbnN0IHtcbiAgICAgIGFjdGlvbixcbiAgICAgIGNlbnRlclJpcHBsZSA9IGZhbHNlLFxuICAgICAgY2hpbGRyZW4sXG4gICAgICBjbGFzc05hbWUsXG4gICAgICBjb21wb25lbnQgPSAnYnV0dG9uJyxcbiAgICAgIGRpc2FibGVkID0gZmFsc2UsXG4gICAgICBkaXNhYmxlUmlwcGxlID0gZmFsc2UsXG4gICAgICBkaXNhYmxlVG91Y2hSaXBwbGUgPSBmYWxzZSxcbiAgICAgIGZvY3VzUmlwcGxlID0gZmFsc2UsXG4gICAgICBMaW5rQ29tcG9uZW50ID0gJ2EnLFxuICAgICAgb25CbHVyLFxuICAgICAgb25DbGljayxcbiAgICAgIG9uQ29udGV4dE1lbnUsXG4gICAgICBvbkRyYWdMZWF2ZSxcbiAgICAgIG9uRm9jdXMsXG4gICAgICBvbkZvY3VzVmlzaWJsZSxcbiAgICAgIG9uS2V5RG93bixcbiAgICAgIG9uS2V5VXAsXG4gICAgICBvbk1vdXNlRG93bixcbiAgICAgIG9uTW91c2VMZWF2ZSxcbiAgICAgIG9uTW91c2VVcCxcbiAgICAgIG9uVG91Y2hFbmQsXG4gICAgICBvblRvdWNoTW92ZSxcbiAgICAgIG9uVG91Y2hTdGFydCxcbiAgICAgIHRhYkluZGV4ID0gMCxcbiAgICAgIFRvdWNoUmlwcGxlUHJvcHMsXG4gICAgICB0b3VjaFJpcHBsZVJlZixcbiAgICAgIHR5cGVcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgYnV0dG9uUmVmID0gUmVhY3QudXNlUmVmKG51bGwpO1xuICBjb25zdCByaXBwbGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVJpcHBsZVJlZiA9IHVzZUZvcmtSZWYocmlwcGxlUmVmLCB0b3VjaFJpcHBsZVJlZik7XG4gIGNvbnN0IHtcbiAgICBpc0ZvY3VzVmlzaWJsZVJlZixcbiAgICBvbkZvY3VzOiBoYW5kbGVGb2N1c1Zpc2libGUsXG4gICAgb25CbHVyOiBoYW5kbGVCbHVyVmlzaWJsZSxcbiAgICByZWY6IGZvY3VzVmlzaWJsZVJlZlxuICB9ID0gdXNlSXNGb2N1c1Zpc2libGUoKTtcbiAgY29uc3QgW2ZvY3VzVmlzaWJsZSwgc2V0Rm9jdXNWaXNpYmxlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgaWYgKGRpc2FibGVkICYmIGZvY3VzVmlzaWJsZSkge1xuICAgIHNldEZvY3VzVmlzaWJsZShmYWxzZSk7XG4gIH1cbiAgUmVhY3QudXNlSW1wZXJhdGl2ZUhhbmRsZShhY3Rpb24sICgpID0+ICh7XG4gICAgZm9jdXNWaXNpYmxlOiAoKSA9PiB7XG4gICAgICBzZXRGb2N1c1Zpc2libGUodHJ1ZSk7XG4gICAgICBidXR0b25SZWYuY3VycmVudC5mb2N1cygpO1xuICAgIH1cbiAgfSksIFtdKTtcbiAgY29uc3QgW21vdW50ZWRTdGF0ZSwgc2V0TW91bnRlZFN0YXRlXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICBzZXRNb3VudGVkU3RhdGUodHJ1ZSk7XG4gIH0sIFtdKTtcbiAgY29uc3QgZW5hYmxlVG91Y2hSaXBwbGUgPSBtb3VudGVkU3RhdGUgJiYgIWRpc2FibGVSaXBwbGUgJiYgIWRpc2FibGVkO1xuICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChmb2N1c1Zpc2libGUgJiYgZm9jdXNSaXBwbGUgJiYgIWRpc2FibGVSaXBwbGUgJiYgbW91bnRlZFN0YXRlKSB7XG4gICAgICByaXBwbGVSZWYuY3VycmVudC5wdWxzYXRlKCk7XG4gICAgfVxuICB9LCBbZGlzYWJsZVJpcHBsZSwgZm9jdXNSaXBwbGUsIGZvY3VzVmlzaWJsZSwgbW91bnRlZFN0YXRlXSk7XG4gIGZ1bmN0aW9uIHVzZVJpcHBsZUhhbmRsZXIocmlwcGxlQWN0aW9uLCBldmVudENhbGxiYWNrLCBza2lwUmlwcGxlQWN0aW9uID0gZGlzYWJsZVRvdWNoUmlwcGxlKSB7XG4gICAgcmV0dXJuIHVzZUV2ZW50Q2FsbGJhY2soZXZlbnQgPT4ge1xuICAgICAgaWYgKGV2ZW50Q2FsbGJhY2spIHtcbiAgICAgICAgZXZlbnRDYWxsYmFjayhldmVudCk7XG4gICAgICB9XG4gICAgICBjb25zdCBpZ25vcmUgPSBza2lwUmlwcGxlQWN0aW9uO1xuICAgICAgaWYgKCFpZ25vcmUgJiYgcmlwcGxlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgcmlwcGxlUmVmLmN1cnJlbnRbcmlwcGxlQWN0aW9uXShldmVudCk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KTtcbiAgfVxuICBjb25zdCBoYW5kbGVNb3VzZURvd24gPSB1c2VSaXBwbGVIYW5kbGVyKCdzdGFydCcsIG9uTW91c2VEb3duKTtcbiAgY29uc3QgaGFuZGxlQ29udGV4dE1lbnUgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25Db250ZXh0TWVudSk7XG4gIGNvbnN0IGhhbmRsZURyYWdMZWF2ZSA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvbkRyYWdMZWF2ZSk7XG4gIGNvbnN0IGhhbmRsZU1vdXNlVXAgPSB1c2VSaXBwbGVIYW5kbGVyKCdzdG9wJywgb25Nb3VzZVVwKTtcbiAgY29uc3QgaGFuZGxlTW91c2VMZWF2ZSA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBldmVudCA9PiB7XG4gICAgaWYgKGZvY3VzVmlzaWJsZSkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKG9uTW91c2VMZWF2ZSkge1xuICAgICAgb25Nb3VzZUxlYXZlKGV2ZW50KTtcbiAgICB9XG4gIH0pO1xuICBjb25zdCBoYW5kbGVUb3VjaFN0YXJ0ID0gdXNlUmlwcGxlSGFuZGxlcignc3RhcnQnLCBvblRvdWNoU3RhcnQpO1xuICBjb25zdCBoYW5kbGVUb3VjaEVuZCA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBvblRvdWNoRW5kKTtcbiAgY29uc3QgaGFuZGxlVG91Y2hNb3ZlID0gdXNlUmlwcGxlSGFuZGxlcignc3RvcCcsIG9uVG91Y2hNb3ZlKTtcbiAgY29uc3QgaGFuZGxlQmx1ciA9IHVzZVJpcHBsZUhhbmRsZXIoJ3N0b3AnLCBldmVudCA9PiB7XG4gICAgaGFuZGxlQmx1clZpc2libGUoZXZlbnQpO1xuICAgIGlmIChpc0ZvY3VzVmlzaWJsZVJlZi5jdXJyZW50ID09PSBmYWxzZSkge1xuICAgICAgc2V0Rm9jdXNWaXNpYmxlKGZhbHNlKTtcbiAgICB9XG4gICAgaWYgKG9uQmx1cikge1xuICAgICAgb25CbHVyKGV2ZW50KTtcbiAgICB9XG4gIH0sIGZhbHNlKTtcbiAgY29uc3QgaGFuZGxlRm9jdXMgPSB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAvLyBGaXggZm9yIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC9pc3N1ZXMvNzc2OVxuICAgIGlmICghYnV0dG9uUmVmLmN1cnJlbnQpIHtcbiAgICAgIGJ1dHRvblJlZi5jdXJyZW50ID0gZXZlbnQuY3VycmVudFRhcmdldDtcbiAgICB9XG4gICAgaGFuZGxlRm9jdXNWaXNpYmxlKGV2ZW50KTtcbiAgICBpZiAoaXNGb2N1c1Zpc2libGVSZWYuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgc2V0Rm9jdXNWaXNpYmxlKHRydWUpO1xuICAgICAgaWYgKG9uRm9jdXNWaXNpYmxlKSB7XG4gICAgICAgIG9uRm9jdXNWaXNpYmxlKGV2ZW50KTtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKG9uRm9jdXMpIHtcbiAgICAgIG9uRm9jdXMoZXZlbnQpO1xuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGlzTm9uTmF0aXZlQnV0dG9uID0gKCkgPT4ge1xuICAgIGNvbnN0IGJ1dHRvbiA9IGJ1dHRvblJlZi5jdXJyZW50O1xuICAgIHJldHVybiBjb21wb25lbnQgJiYgY29tcG9uZW50ICE9PSAnYnV0dG9uJyAmJiAhKGJ1dHRvbi50YWdOYW1lID09PSAnQScgJiYgYnV0dG9uLmhyZWYpO1xuICB9O1xuXG4gIC8qKlxuICAgKiBJRTExIHNoaW0gZm9yIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50L3JlcGVhdFxuICAgKi9cbiAgY29uc3Qga2V5ZG93blJlZiA9IFJlYWN0LnVzZVJlZihmYWxzZSk7XG4gIGNvbnN0IGhhbmRsZUtleURvd24gPSB1c2VFdmVudENhbGxiYWNrKGV2ZW50ID0+IHtcbiAgICAvLyBDaGVjayBpZiBrZXkgaXMgYWxyZWFkeSBkb3duIHRvIGF2b2lkIHJlcGVhdHMgYmVpbmcgY291bnRlZCBhcyBtdWx0aXBsZSBhY3RpdmF0aW9uc1xuICAgIGlmIChmb2N1c1JpcHBsZSAmJiAha2V5ZG93blJlZi5jdXJyZW50ICYmIGZvY3VzVmlzaWJsZSAmJiByaXBwbGVSZWYuY3VycmVudCAmJiBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAga2V5ZG93blJlZi5jdXJyZW50ID0gdHJ1ZTtcbiAgICAgIHJpcHBsZVJlZi5jdXJyZW50LnN0b3AoZXZlbnQsICgpID0+IHtcbiAgICAgICAgcmlwcGxlUmVmLmN1cnJlbnQuc3RhcnQoZXZlbnQpO1xuICAgICAgfSk7XG4gICAgfVxuICAgIGlmIChldmVudC50YXJnZXQgPT09IGV2ZW50LmN1cnJlbnRUYXJnZXQgJiYgaXNOb25OYXRpdmVCdXR0b24oKSAmJiBldmVudC5rZXkgPT09ICcgJykge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICB9XG4gICAgaWYgKG9uS2V5RG93bikge1xuICAgICAgb25LZXlEb3duKGV2ZW50KTtcbiAgICB9XG5cbiAgICAvLyBLZXlib2FyZCBhY2Nlc3NpYmlsaXR5IGZvciBub24gaW50ZXJhY3RpdmUgZWxlbWVudHNcbiAgICBpZiAoZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzTm9uTmF0aXZlQnV0dG9uKCkgJiYgZXZlbnQua2V5ID09PSAnRW50ZXInICYmICFkaXNhYmxlZCkge1xuICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgIGlmIChvbkNsaWNrKSB7XG4gICAgICAgIG9uQ2xpY2soZXZlbnQpO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG4gIGNvbnN0IGhhbmRsZUtleVVwID0gdXNlRXZlbnRDYWxsYmFjayhldmVudCA9PiB7XG4gICAgLy8gY2FsbGluZyBwcmV2ZW50RGVmYXVsdCBpbiBrZXlVcCBvbiBhIDxidXR0b24+IHdpbGwgbm90IGRpc3BhdGNoIGEgY2xpY2sgZXZlbnQgaWYgU3BhY2UgaXMgcHJlc3NlZFxuICAgIC8vIGh0dHBzOi8vY29kZXNhbmRib3guaW8vcC9zYW5kYm94L2J1dHRvbi1rZXl1cC1wcmV2ZW50ZGVmYXVsdC1kbjdmMFxuICAgIGlmIChmb2N1c1JpcHBsZSAmJiBldmVudC5rZXkgPT09ICcgJyAmJiByaXBwbGVSZWYuY3VycmVudCAmJiBmb2N1c1Zpc2libGUgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIGtleWRvd25SZWYuY3VycmVudCA9IGZhbHNlO1xuICAgICAgcmlwcGxlUmVmLmN1cnJlbnQuc3RvcChldmVudCwgKCkgPT4ge1xuICAgICAgICByaXBwbGVSZWYuY3VycmVudC5wdWxzYXRlKGV2ZW50KTtcbiAgICAgIH0pO1xuICAgIH1cbiAgICBpZiAob25LZXlVcCkge1xuICAgICAgb25LZXlVcChldmVudCk7XG4gICAgfVxuXG4gICAgLy8gS2V5Ym9hcmQgYWNjZXNzaWJpbGl0eSBmb3Igbm9uIGludGVyYWN0aXZlIGVsZW1lbnRzXG4gICAgaWYgKG9uQ2xpY2sgJiYgZXZlbnQudGFyZ2V0ID09PSBldmVudC5jdXJyZW50VGFyZ2V0ICYmIGlzTm9uTmF0aXZlQnV0dG9uKCkgJiYgZXZlbnQua2V5ID09PSAnICcgJiYgIWV2ZW50LmRlZmF1bHRQcmV2ZW50ZWQpIHtcbiAgICAgIG9uQ2xpY2soZXZlbnQpO1xuICAgIH1cbiAgfSk7XG4gIGxldCBDb21wb25lbnRQcm9wID0gY29tcG9uZW50O1xuICBpZiAoQ29tcG9uZW50UHJvcCA9PT0gJ2J1dHRvbicgJiYgKG90aGVyLmhyZWYgfHwgb3RoZXIudG8pKSB7XG4gICAgQ29tcG9uZW50UHJvcCA9IExpbmtDb21wb25lbnQ7XG4gIH1cbiAgY29uc3QgYnV0dG9uUHJvcHMgPSB7fTtcbiAgaWYgKENvbXBvbmVudFByb3AgPT09ICdidXR0b24nKSB7XG4gICAgYnV0dG9uUHJvcHMudHlwZSA9IHR5cGUgPT09IHVuZGVmaW5lZCA/ICdidXR0b24nIDogdHlwZTtcbiAgICBidXR0b25Qcm9wcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICB9IGVsc2Uge1xuICAgIGlmICghb3RoZXIuaHJlZiAmJiAhb3RoZXIudG8pIHtcbiAgICAgIGJ1dHRvblByb3BzLnJvbGUgPSAnYnV0dG9uJztcbiAgICB9XG4gICAgaWYgKGRpc2FibGVkKSB7XG4gICAgICBidXR0b25Qcm9wc1snYXJpYS1kaXNhYmxlZCddID0gZGlzYWJsZWQ7XG4gICAgfVxuICB9XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYocmVmLCBmb2N1c1Zpc2libGVSZWYsIGJ1dHRvblJlZik7XG4gIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL3J1bGVzLW9mLWhvb2tzXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmIChlbmFibGVUb3VjaFJpcHBsZSAmJiAhcmlwcGxlUmVmLmN1cnJlbnQpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihbJ01VSTogVGhlIGBjb21wb25lbnRgIHByb3AgcHJvdmlkZWQgdG8gQnV0dG9uQmFzZSBpcyBpbnZhbGlkLicsICdQbGVhc2UgbWFrZSBzdXJlIHRoZSBjaGlsZHJlbiBwcm9wIGlzIHJlbmRlcmVkIGluIHRoaXMgY3VzdG9tIGNvbXBvbmVudC4nXS5qb2luKCdcXG4nKSk7XG4gICAgICB9XG4gICAgfSwgW2VuYWJsZVRvdWNoUmlwcGxlXSk7XG4gIH1cbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNlbnRlclJpcHBsZSxcbiAgICBjb21wb25lbnQsXG4gICAgZGlzYWJsZWQsXG4gICAgZGlzYWJsZVJpcHBsZSxcbiAgICBkaXNhYmxlVG91Y2hSaXBwbGUsXG4gICAgZm9jdXNSaXBwbGUsXG4gICAgdGFiSW5kZXgsXG4gICAgZm9jdXNWaXNpYmxlXG4gIH0pO1xuICBjb25zdCBjbGFzc2VzID0gdXNlVXRpbGl0eUNsYXNzZXMob3duZXJTdGF0ZSk7XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeHMoQnV0dG9uQmFzZVJvb3QsIF9leHRlbmRzKHtcbiAgICBhczogQ29tcG9uZW50UHJvcCxcbiAgICBjbGFzc05hbWU6IGNsc3goY2xhc3Nlcy5yb290LCBjbGFzc05hbWUpLFxuICAgIG93bmVyU3RhdGU6IG93bmVyU3RhdGUsXG4gICAgb25CbHVyOiBoYW5kbGVCbHVyLFxuICAgIG9uQ2xpY2s6IG9uQ2xpY2ssXG4gICAgb25Db250ZXh0TWVudTogaGFuZGxlQ29udGV4dE1lbnUsXG4gICAgb25Gb2N1czogaGFuZGxlRm9jdXMsXG4gICAgb25LZXlEb3duOiBoYW5kbGVLZXlEb3duLFxuICAgIG9uS2V5VXA6IGhhbmRsZUtleVVwLFxuICAgIG9uTW91c2VEb3duOiBoYW5kbGVNb3VzZURvd24sXG4gICAgb25Nb3VzZUxlYXZlOiBoYW5kbGVNb3VzZUxlYXZlLFxuICAgIG9uTW91c2VVcDogaGFuZGxlTW91c2VVcCxcbiAgICBvbkRyYWdMZWF2ZTogaGFuZGxlRHJhZ0xlYXZlLFxuICAgIG9uVG91Y2hFbmQ6IGhhbmRsZVRvdWNoRW5kLFxuICAgIG9uVG91Y2hNb3ZlOiBoYW5kbGVUb3VjaE1vdmUsXG4gICAgb25Ub3VjaFN0YXJ0OiBoYW5kbGVUb3VjaFN0YXJ0LFxuICAgIHJlZjogaGFuZGxlUmVmLFxuICAgIHRhYkluZGV4OiBkaXNhYmxlZCA/IC0xIDogdGFiSW5kZXgsXG4gICAgdHlwZTogdHlwZVxuICB9LCBidXR0b25Qcm9wcywgb3RoZXIsIHtcbiAgICBjaGlsZHJlbjogW2NoaWxkcmVuLCBlbmFibGVUb3VjaFJpcHBsZSA/XG4gICAgLyojX19QVVJFX18qL1xuICAgIC8qIFRvdWNoUmlwcGxlIGlzIG9ubHkgbmVlZGVkIGNsaWVudC1zaWRlLCB4MiBib29zdCBvbiB0aGUgc2VydmVyLiAqL1xuICAgIF9qc3goVG91Y2hSaXBwbGUsIF9leHRlbmRzKHtcbiAgICAgIHJlZjogaGFuZGxlUmlwcGxlUmVmLFxuICAgICAgY2VudGVyOiBjZW50ZXJSaXBwbGVcbiAgICB9LCBUb3VjaFJpcHBsZVByb3BzKSkgOiBudWxsXVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEJ1dHRvbkJhc2UucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQSByZWYgZm9yIGltcGVyYXRpdmUgYWN0aW9ucy5cbiAgICogSXQgY3VycmVudGx5IG9ubHkgc3VwcG9ydHMgYGZvY3VzVmlzaWJsZSgpYCBhY3Rpb24uXG4gICAqL1xuICBhY3Rpb246IHJlZlR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSByaXBwbGVzIGFyZSBjZW50ZXJlZC5cbiAgICogVGhleSB3b24ndCBzdGFydCBhdCB0aGUgY3Vyc29yIGludGVyYWN0aW9uIHBvc2l0aW9uLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgY2VudGVyUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoZSBjb250ZW50IG9mIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBlbGVtZW50VHlwZUFjY2VwdGluZ1JlZixcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGNvbXBvbmVudCBpcyBkaXNhYmxlZC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGRpc2FibGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIHJpcHBsZSBlZmZlY3QgaXMgZGlzYWJsZWQuXG4gICAqXG4gICAqIOKaoO+4jyBXaXRob3V0IGEgcmlwcGxlIHRoZXJlIGlzIG5vIHN0eWxpbmcgZm9yIDpmb2N1cy12aXNpYmxlIGJ5IGRlZmF1bHQuIEJlIHN1cmVcbiAgICogdG8gaGlnaGxpZ2h0IHRoZSBlbGVtZW50IGJ5IGFwcGx5aW5nIHNlcGFyYXRlIHN0eWxlcyB3aXRoIHRoZSBgLk11aS1mb2N1c1Zpc2libGVgIGNsYXNzLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVJpcHBsZTogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSB0b3VjaCByaXBwbGUgZWZmZWN0IGlzIGRpc2FibGVkLlxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZGlzYWJsZVRvdWNoUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIElmIGB0cnVlYCwgdGhlIGJhc2UgYnV0dG9uIHdpbGwgaGF2ZSBhIGtleWJvYXJkIGZvY3VzIHJpcHBsZS5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZvY3VzUmlwcGxlOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIFRoaXMgcHJvcCBjYW4gaGVscCBpZGVudGlmeSB3aGljaCBlbGVtZW50IGhhcyBrZXlib2FyZCBmb2N1cy5cbiAgICogVGhlIGNsYXNzIG5hbWUgd2lsbCBiZSBhcHBsaWVkIHdoZW4gdGhlIGVsZW1lbnQgZ2FpbnMgdGhlIGZvY3VzIHRocm91Z2gga2V5Ym9hcmQgaW50ZXJhY3Rpb24uXG4gICAqIEl0J3MgYSBwb2x5ZmlsbCBmb3IgdGhlIFtDU1MgOmZvY3VzLXZpc2libGUgc2VsZWN0b3JdKGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9zZWxlY3RvcnMtNC8jdGhlLWZvY3VzLXZpc2libGUtcHNldWRvKS5cbiAgICogVGhlIHJhdGlvbmFsZSBmb3IgdXNpbmcgdGhpcyBmZWF0dXJlIFtpcyBleHBsYWluZWQgaGVyZV0oaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvZm9jdXMtdmlzaWJsZS9ibG9iL0hFQUQvZXhwbGFpbmVyLm1kKS5cbiAgICogQSBbcG9seWZpbGwgY2FuIGJlIHVzZWRdKGh0dHBzOi8vZ2l0aHViLmNvbS9XSUNHL2ZvY3VzLXZpc2libGUpIHRvIGFwcGx5IGEgYGZvY3VzLXZpc2libGVgIGNsYXNzIHRvIG90aGVyIGNvbXBvbmVudHNcbiAgICogaWYgbmVlZGVkLlxuICAgKi9cbiAgZm9jdXNWaXNpYmxlQ2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgaHJlZjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8uYW55LFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIHRvIHJlbmRlciBhIGxpbmsgd2hlbiB0aGUgYGhyZWZgIHByb3AgaXMgcHJvdmlkZWQuXG4gICAqIEBkZWZhdWx0ICdhJ1xuICAgKi9cbiAgTGlua0NvbXBvbmVudDogUHJvcFR5cGVzLmVsZW1lbnRUeXBlLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uQ2xpY2s6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Db250ZXh0TWVudTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkRyYWdMZWF2ZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIENhbGxiYWNrIGZpcmVkIHdoZW4gdGhlIGNvbXBvbmVudCBpcyBmb2N1c2VkIHdpdGggYSBrZXlib2FyZC5cbiAgICogV2UgdHJpZ2dlciBhIGBvbkZvY3VzYCBjYWxsYmFjayB0b28uXG4gICAqL1xuICBvbkZvY3VzVmlzaWJsZTogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbktleURvd246IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25LZXlVcDogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbk1vdXNlRG93bjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbk1vdXNlTGVhdmU6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Nb3VzZVVwOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIG9uVG91Y2hFbmQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaE1vdmU6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25Ub3VjaFN0YXJ0OiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIFRoZSBzeXN0ZW0gcHJvcCB0aGF0IGFsbG93cyBkZWZpbmluZyBzeXN0ZW0gb3ZlcnJpZGVzIGFzIHdlbGwgYXMgYWRkaXRpb25hbCBDU1Mgc3R5bGVzLlxuICAgKi9cbiAgc3g6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0LCBQcm9wVHlwZXMuYm9vbF0pKSwgUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3RdKSxcbiAgLyoqXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIHRhYkluZGV4OiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogUHJvcHMgYXBwbGllZCB0byB0aGUgYFRvdWNoUmlwcGxlYCBlbGVtZW50LlxuICAgKi9cbiAgVG91Y2hSaXBwbGVQcm9wczogUHJvcFR5cGVzLm9iamVjdCxcbiAgLyoqXG4gICAqIEEgcmVmIHRoYXQgcG9pbnRzIHRvIHRoZSBgVG91Y2hSaXBwbGVgIGVsZW1lbnQuXG4gICAqL1xuICB0b3VjaFJpcHBsZVJlZjogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgY3VycmVudDogUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgIHB1bHNhdGU6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWQsXG4gICAgICBzdGFydDogUHJvcFR5cGVzLmZ1bmMuaXNSZXF1aXJlZCxcbiAgICAgIHN0b3A6IFByb3BUeXBlcy5mdW5jLmlzUmVxdWlyZWRcbiAgICB9KVxuICB9KV0pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgdHlwZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm9uZU9mKFsnYnV0dG9uJywgJ3Jlc2V0JywgJ3N1Ym1pdCddKSwgUHJvcFR5cGVzLnN0cmluZ10pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQnV0dG9uQmFzZTsiLCJpbXBvcnQgeyB1bnN0YWJsZV9nZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIGFzIGdlbmVyYXRlVXRpbGl0eUNsYXNzZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCBnZW5lcmF0ZVV0aWxpdHlDbGFzcyBmcm9tICcuLi9nZW5lcmF0ZVV0aWxpdHlDbGFzcyc7XG5leHBvcnQgZnVuY3Rpb24gZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyhzbG90KSB7XG4gIHJldHVybiBnZW5lcmF0ZVV0aWxpdHlDbGFzcygnTXVpQ2lyY3VsYXJQcm9ncmVzcycsIHNsb3QpO1xufVxuY29uc3QgY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMgPSBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzKCdNdWlDaXJjdWxhclByb2dyZXNzJywgWydyb290JywgJ2RldGVybWluYXRlJywgJ2luZGV0ZXJtaW5hdGUnLCAnY29sb3JQcmltYXJ5JywgJ2NvbG9yU2Vjb25kYXJ5JywgJ3N2ZycsICdjaXJjbGUnLCAnY2lyY2xlRGV0ZXJtaW5hdGUnLCAnY2lyY2xlSW5kZXRlcm1pbmF0ZScsICdjaXJjbGVEaXNhYmxlU2hyaW5rJ10pO1xuZXhwb3J0IGRlZmF1bHQgY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2VcIjtcbmltcG9ydCBfZXh0ZW5kcyBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kc1wiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwiY29sb3JcIiwgXCJkaXNhYmxlU2hyaW5rXCIsIFwic2l6ZVwiLCBcInN0eWxlXCIsIFwidGhpY2tuZXNzXCIsIFwidmFsdWVcIiwgXCJ2YXJpYW50XCJdO1xubGV0IF8gPSB0ID0+IHQsXG4gIF90LFxuICBfdDIsXG4gIF90MyxcbiAgX3Q0O1xuaW1wb3J0ICogYXMgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCBjbHN4IGZyb20gJ2Nsc3gnO1xuaW1wb3J0IHsgY2hhaW5Qcm9wVHlwZXMgfSBmcm9tICdAbXVpL3V0aWxzJztcbmltcG9ydCB7IHVuc3RhYmxlX2NvbXBvc2VDbGFzc2VzIGFzIGNvbXBvc2VDbGFzc2VzIH0gZnJvbSAnQG11aS9iYXNlL2NvbXBvc2VDbGFzc2VzJztcbmltcG9ydCB7IGtleWZyYW1lcywgY3NzIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgdXNlVGhlbWVQcm9wcyBmcm9tICcuLi9zdHlsZXMvdXNlVGhlbWVQcm9wcyc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHsgZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyB9IGZyb20gJy4vY2lyY3VsYXJQcm9ncmVzc0NsYXNzZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IFNJWkUgPSA0NDtcbmNvbnN0IGNpcmN1bGFyUm90YXRlS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QgfHwgKF90ID0gX2BcbiAgMCUge1xuICAgIHRyYW5zZm9ybTogcm90YXRlKDBkZWcpO1xuICB9XG5cbiAgMTAwJSB7XG4gICAgdHJhbnNmb3JtOiByb3RhdGUoMzYwZGVnKTtcbiAgfVxuYCkpO1xuY29uc3QgY2lyY3VsYXJEYXNoS2V5ZnJhbWUgPSBrZXlmcmFtZXMoX3QyIHx8IChfdDIgPSBfYFxuICAwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMXB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogMDtcbiAgfVxuXG4gIDUwJSB7XG4gICAgc3Ryb2tlLWRhc2hhcnJheTogMTAwcHgsIDIwMHB4O1xuICAgIHN0cm9rZS1kYXNob2Zmc2V0OiAtMTVweDtcbiAgfVxuXG4gIDEwMCUge1xuICAgIHN0cm9rZS1kYXNoYXJyYXk6IDEwMHB4LCAyMDBweDtcbiAgICBzdHJva2UtZGFzaG9mZnNldDogLTEyNXB4O1xuICB9XG5gKSk7XG5jb25zdCB1c2VVdGlsaXR5Q2xhc3NlcyA9IG93bmVyU3RhdGUgPT4ge1xuICBjb25zdCB7XG4gICAgY2xhc3NlcyxcbiAgICB2YXJpYW50LFxuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmtcbiAgfSA9IG93bmVyU3RhdGU7XG4gIGNvbnN0IHNsb3RzID0ge1xuICAgIHJvb3Q6IFsncm9vdCcsIHZhcmlhbnQsIGBjb2xvciR7Y2FwaXRhbGl6ZShjb2xvcil9YF0sXG4gICAgc3ZnOiBbJ3N2ZyddLFxuICAgIGNpcmNsZTogWydjaXJjbGUnLCBgY2lyY2xlJHtjYXBpdGFsaXplKHZhcmlhbnQpfWAsIGRpc2FibGVTaHJpbmsgJiYgJ2NpcmNsZURpc2FibGVTaHJpbmsnXVxuICB9O1xuICByZXR1cm4gY29tcG9zZUNsYXNzZXMoc2xvdHMsIGdldENpcmN1bGFyUHJvZ3Jlc3NVdGlsaXR5Q2xhc3MsIGNsYXNzZXMpO1xufTtcbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NSb290ID0gc3R5bGVkKCdzcGFuJywge1xuICBuYW1lOiAnTXVpQ2lyY3VsYXJQcm9ncmVzcycsXG4gIHNsb3Q6ICdSb290JyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5yb290LCBzdHlsZXNbb3duZXJTdGF0ZS52YXJpYW50XSwgc3R5bGVzW2Bjb2xvciR7Y2FwaXRhbGl6ZShvd25lclN0YXRlLmNvbG9yKX1gXV07XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIGRpc3BsYXk6ICdpbmxpbmUtYmxvY2snXG59LCBvd25lclN0YXRlLnZhcmlhbnQgPT09ICdkZXRlcm1pbmF0ZScgJiYge1xuICB0cmFuc2l0aW9uOiB0aGVtZS50cmFuc2l0aW9ucy5jcmVhdGUoJ3RyYW5zZm9ybScpXG59LCBvd25lclN0YXRlLmNvbG9yICE9PSAnaW5oZXJpdCcgJiYge1xuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGVbb3duZXJTdGF0ZS5jb2xvcl0ubWFpblxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmIGNzcyhfdDMgfHwgKF90MyA9IF9gXG4gICAgICBhbmltYXRpb246ICR7MH0gMS40cyBsaW5lYXIgaW5maW5pdGU7XG4gICAgYCksIGNpcmN1bGFyUm90YXRlS2V5ZnJhbWUpKTtcbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NTVkcgPSBzdHlsZWQoJ3N2ZycsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnU3ZnJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiBzdHlsZXMuc3ZnXG59KSh7XG4gIGRpc3BsYXk6ICdibG9jaycgLy8gS2VlcHMgdGhlIHByb2dyZXNzIGNlbnRlcmVkXG59KTtcbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUgPSBzdHlsZWQoJ2NpcmNsZScsIHtcbiAgbmFtZTogJ011aUNpcmN1bGFyUHJvZ3Jlc3MnLFxuICBzbG90OiAnQ2lyY2xlJyxcbiAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgY29uc3Qge1xuICAgICAgb3duZXJTdGF0ZVxuICAgIH0gPSBwcm9wcztcbiAgICByZXR1cm4gW3N0eWxlcy5jaXJjbGUsIHN0eWxlc1tgY2lyY2xlJHtjYXBpdGFsaXplKG93bmVyU3RhdGUudmFyaWFudCl9YF0sIG93bmVyU3RhdGUuZGlzYWJsZVNocmluayAmJiBzdHlsZXMuY2lyY2xlRGlzYWJsZVNocmlua107XG4gIH1cbn0pKCh7XG4gIG93bmVyU3RhdGUsXG4gIHRoZW1lXG59KSA9PiBfZXh0ZW5kcyh7XG4gIHN0cm9rZTogJ2N1cnJlbnRDb2xvcidcbn0sIG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2RldGVybWluYXRlJyAmJiB7XG4gIHRyYW5zaXRpb246IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnc3Ryb2tlLWRhc2hvZmZzZXQnKVxufSwgb3duZXJTdGF0ZS52YXJpYW50ID09PSAnaW5kZXRlcm1pbmF0ZScgJiYge1xuICAvLyBTb21lIGRlZmF1bHQgdmFsdWUgdGhhdCBsb29rcyBmaW5lIHdhaXRpbmcgZm9yIHRoZSBhbmltYXRpb24gdG8ga2lja3MgaW4uXG4gIHN0cm9rZURhc2hhcnJheTogJzgwcHgsIDIwMHB4JyxcbiAgc3Ryb2tlRGFzaG9mZnNldDogMCAvLyBBZGQgdGhlIHVuaXQgdG8gZml4IGEgRWRnZSAxNiBhbmQgYmVsb3cgYnVnLlxufSksICh7XG4gIG93bmVyU3RhdGVcbn0pID0+IG93bmVyU3RhdGUudmFyaWFudCA9PT0gJ2luZGV0ZXJtaW5hdGUnICYmICFvd25lclN0YXRlLmRpc2FibGVTaHJpbmsgJiYgY3NzKF90NCB8fCAoX3Q0ID0gX2BcbiAgICAgIGFuaW1hdGlvbjogJHswfSAxLjRzIGVhc2UtaW4tb3V0IGluZmluaXRlO1xuICAgIGApLCBjaXJjdWxhckRhc2hLZXlmcmFtZSkpO1xuXG4vKipcbiAqICMjIEFSSUFcbiAqXG4gKiBJZiB0aGUgcHJvZ3Jlc3MgYmFyIGlzIGRlc2NyaWJpbmcgdGhlIGxvYWRpbmcgcHJvZ3Jlc3Mgb2YgYSBwYXJ0aWN1bGFyIHJlZ2lvbiBvZiBhIHBhZ2UsXG4gKiB5b3Ugc2hvdWxkIHVzZSBgYXJpYS1kZXNjcmliZWRieWAgdG8gcG9pbnQgdG8gdGhlIHByb2dyZXNzIGJhciwgYW5kIHNldCB0aGUgYGFyaWEtYnVzeWBcbiAqIGF0dHJpYnV0ZSB0byBgdHJ1ZWAgb24gdGhhdCByZWdpb24gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGxvYWRpbmcuXG4gKi9cbmNvbnN0IENpcmN1bGFyUHJvZ3Jlc3MgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBDaXJjdWxhclByb2dyZXNzKGluUHJvcHMsIHJlZikge1xuICBjb25zdCBwcm9wcyA9IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDaXJjdWxhclByb2dyZXNzJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgICAgY2xhc3NOYW1lLFxuICAgICAgY29sb3IgPSAncHJpbWFyeScsXG4gICAgICBkaXNhYmxlU2hyaW5rID0gZmFsc2UsXG4gICAgICBzaXplID0gNDAsXG4gICAgICBzdHlsZSxcbiAgICAgIHRoaWNrbmVzcyA9IDMuNixcbiAgICAgIHZhbHVlID0gMCxcbiAgICAgIHZhcmlhbnQgPSAnaW5kZXRlcm1pbmF0ZSdcbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3Qgb3duZXJTdGF0ZSA9IF9leHRlbmRzKHt9LCBwcm9wcywge1xuICAgIGNvbG9yLFxuICAgIGRpc2FibGVTaHJpbmssXG4gICAgc2l6ZSxcbiAgICB0aGlja25lc3MsXG4gICAgdmFsdWUsXG4gICAgdmFyaWFudFxuICB9KTtcbiAgY29uc3QgY2xhc3NlcyA9IHVzZVV0aWxpdHlDbGFzc2VzKG93bmVyU3RhdGUpO1xuICBjb25zdCBjaXJjbGVTdHlsZSA9IHt9O1xuICBjb25zdCByb290U3R5bGUgPSB7fTtcbiAgY29uc3Qgcm9vdFByb3BzID0ge307XG4gIGlmICh2YXJpYW50ID09PSAnZGV0ZXJtaW5hdGUnKSB7XG4gICAgY29uc3QgY2lyY3VtZmVyZW5jZSA9IDIgKiBNYXRoLlBJICogKChTSVpFIC0gdGhpY2tuZXNzKSAvIDIpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hhcnJheSA9IGNpcmN1bWZlcmVuY2UudG9GaXhlZCgzKTtcbiAgICByb290UHJvcHNbJ2FyaWEtdmFsdWVub3cnXSA9IE1hdGgucm91bmQodmFsdWUpO1xuICAgIGNpcmNsZVN0eWxlLnN0cm9rZURhc2hvZmZzZXQgPSBgJHsoKDEwMCAtIHZhbHVlKSAvIDEwMCAqIGNpcmN1bWZlcmVuY2UpLnRvRml4ZWQoMyl9cHhgO1xuICAgIHJvb3RTdHlsZS50cmFuc2Zvcm0gPSAncm90YXRlKC05MGRlZyknO1xuICB9XG4gIHJldHVybiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzUm9vdCwgX2V4dGVuZHMoe1xuICAgIGNsYXNzTmFtZTogY2xzeChjbGFzc2VzLnJvb3QsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IF9leHRlbmRzKHtcbiAgICAgIHdpZHRoOiBzaXplLFxuICAgICAgaGVpZ2h0OiBzaXplXG4gICAgfSwgcm9vdFN0eWxlLCBzdHlsZSksXG4gICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICByZWY6IHJlZixcbiAgICByb2xlOiBcInByb2dyZXNzYmFyXCJcbiAgfSwgcm9vdFByb3BzLCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAvKiNfX1BVUkVfXyovX2pzeChDaXJjdWxhclByb2dyZXNzU1ZHLCB7XG4gICAgICBjbGFzc05hbWU6IGNsYXNzZXMuc3ZnLFxuICAgICAgb3duZXJTdGF0ZTogb3duZXJTdGF0ZSxcbiAgICAgIHZpZXdCb3g6IGAke1NJWkUgLyAyfSAke1NJWkUgLyAyfSAke1NJWkV9ICR7U0laRX1gLFxuICAgICAgY2hpbGRyZW46IC8qI19fUFVSRV9fKi9fanN4KENpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUsIHtcbiAgICAgICAgY2xhc3NOYW1lOiBjbGFzc2VzLmNpcmNsZSxcbiAgICAgICAgc3R5bGU6IGNpcmNsZVN0eWxlLFxuICAgICAgICBvd25lclN0YXRlOiBvd25lclN0YXRlLFxuICAgICAgICBjeDogU0laRSxcbiAgICAgICAgY3k6IFNJWkUsXG4gICAgICAgIHI6IChTSVpFIC0gdGhpY2tuZXNzKSAvIDIsXG4gICAgICAgIGZpbGw6IFwibm9uZVwiLFxuICAgICAgICBzdHJva2VXaWR0aDogdGhpY2tuZXNzXG4gICAgICB9KVxuICAgIH0pXG4gIH0pKTtcbn0pO1xucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ2lyY3VsYXJQcm9ncmVzcy5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAvKipcbiAgICogVGhlIGNvbG9yIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIEl0IHN1cHBvcnRzIGJvdGggZGVmYXVsdCBhbmQgY3VzdG9tIHRoZW1lIGNvbG9ycywgd2hpY2ggY2FuIGJlIGFkZGVkIGFzIHNob3duIGluIHRoZVxuICAgKiBbcGFsZXR0ZSBjdXN0b21pemF0aW9uIGd1aWRlXShodHRwczovL211aS5jb20vbWF0ZXJpYWwtdWkvY3VzdG9taXphdGlvbi9wYWxldHRlLyNjdXN0b20tY29sb3JzKS5cbiAgICogQGRlZmF1bHQgJ3ByaW1hcnknXG4gICAqL1xuICBjb2xvcjogUHJvcFR5cGVzIC8qIEB0eXBlc2NyaXB0LXRvLXByb3B0eXBlcy1pZ25vcmUgKi8ub25lT2ZUeXBlKFtQcm9wVHlwZXMub25lT2YoWydpbmhlcml0JywgJ3ByaW1hcnknLCAnc2Vjb25kYXJ5JywgJ2Vycm9yJywgJ2luZm8nLCAnc3VjY2VzcycsICd3YXJuaW5nJ10pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBzaHJpbmsgYW5pbWF0aW9uIGlzIGRpc2FibGVkLlxuICAgKiBUaGlzIG9ubHkgd29ya3MgaWYgdmFyaWFudCBpcyBgaW5kZXRlcm1pbmF0ZWAuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlU2hyaW5rOiBjaGFpblByb3BUeXBlcyhQcm9wVHlwZXMuYm9vbCwgcHJvcHMgPT4ge1xuICAgIGlmIChwcm9wcy5kaXNhYmxlU2hyaW5rICYmIHByb3BzLnZhcmlhbnQgJiYgcHJvcHMudmFyaWFudCAhPT0gJ2luZGV0ZXJtaW5hdGUnKSB7XG4gICAgICByZXR1cm4gbmV3IEVycm9yKCdNVUk6IFlvdSBoYXZlIHByb3ZpZGVkIHRoZSBgZGlzYWJsZVNocmlua2AgcHJvcCAnICsgJ3dpdGggYSB2YXJpYW50IG90aGVyIHRoYW4gYGluZGV0ZXJtaW5hdGVgLiBUaGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuJyk7XG4gICAgfVxuICAgIHJldHVybiBudWxsO1xuICB9KSxcbiAgLyoqXG4gICAqIFRoZSBzaXplIG9mIHRoZSBjb21wb25lbnQuXG4gICAqIElmIHVzaW5nIGEgbnVtYmVyLCB0aGUgcGl4ZWwgdW5pdCBpcyBhc3N1bWVkLlxuICAgKiBJZiB1c2luZyBhIHN0cmluZywgeW91IG5lZWQgdG8gcHJvdmlkZSB0aGUgQ1NTIHVuaXQsIGUuZy4gJzNyZW0nLlxuICAgKiBAZGVmYXVsdCA0MFxuICAgKi9cbiAgc2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgc3R5bGU6IFByb3BUeXBlcy5vYmplY3QsXG4gIC8qKlxuICAgKiBUaGUgc3lzdGVtIHByb3AgdGhhdCBhbGxvd3MgZGVmaW5pbmcgc3lzdGVtIG92ZXJyaWRlcyBhcyB3ZWxsIGFzIGFkZGl0aW9uYWwgQ1NTIHN0eWxlcy5cbiAgICovXG4gIHN4OiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdCwgUHJvcFR5cGVzLmJvb2xdKSksIFByb3BUeXBlcy5mdW5jLCBQcm9wVHlwZXMub2JqZWN0XSksXG4gIC8qKlxuICAgKiBUaGUgdGhpY2tuZXNzIG9mIHRoZSBjaXJjbGUuXG4gICAqIEBkZWZhdWx0IDMuNlxuICAgKi9cbiAgdGhpY2tuZXNzOiBQcm9wVHlwZXMubnVtYmVyLFxuICAvKipcbiAgICogVGhlIHZhbHVlIG9mIHRoZSBwcm9ncmVzcyBpbmRpY2F0b3IgZm9yIHRoZSBkZXRlcm1pbmF0ZSB2YXJpYW50LlxuICAgKiBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDEwMC5cbiAgICogQGRlZmF1bHQgMFxuICAgKi9cbiAgdmFsdWU6IFByb3BUeXBlcy5udW1iZXIsXG4gIC8qKlxuICAgKiBUaGUgdmFyaWFudCB0byB1c2UuXG4gICAqIFVzZSBpbmRldGVybWluYXRlIHdoZW4gdGhlcmUgaXMgbm8gcHJvZ3Jlc3MgdmFsdWUuXG4gICAqIEBkZWZhdWx0ICdpbmRldGVybWluYXRlJ1xuICAgKi9cbiAgdmFyaWFudDogUHJvcFR5cGVzLm9uZU9mKFsnZGV0ZXJtaW5hdGUnLCAnaW5kZXRlcm1pbmF0ZSddKVxufSA6IHZvaWQgMDtcbmV4cG9ydCBkZWZhdWx0IENpcmN1bGFyUHJvZ3Jlc3M7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgY3JlYXRlQ29udGFpbmVyIH0gZnJvbSAnQG11aS9zeXN0ZW0nO1xuaW1wb3J0IGNhcGl0YWxpemUgZnJvbSAnLi4vdXRpbHMvY2FwaXRhbGl6ZSc7XG5pbXBvcnQgc3R5bGVkIGZyb20gJy4uL3N0eWxlcy9zdHlsZWQnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuY29uc3QgQ29udGFpbmVyID0gY3JlYXRlQ29udGFpbmVyKHtcbiAgY3JlYXRlU3R5bGVkQ29tcG9uZW50OiBzdHlsZWQoJ2RpdicsIHtcbiAgICBuYW1lOiAnTXVpQ29udGFpbmVyJyxcbiAgICBzbG90OiAnUm9vdCcsXG4gICAgb3ZlcnJpZGVzUmVzb2x2ZXI6IChwcm9wcywgc3R5bGVzKSA9PiB7XG4gICAgICBjb25zdCB7XG4gICAgICAgIG93bmVyU3RhdGVcbiAgICAgIH0gPSBwcm9wcztcbiAgICAgIHJldHVybiBbc3R5bGVzLnJvb3QsIHN0eWxlc1tgbWF4V2lkdGgke2NhcGl0YWxpemUoU3RyaW5nKG93bmVyU3RhdGUubWF4V2lkdGgpKX1gXSwgb3duZXJTdGF0ZS5maXhlZCAmJiBzdHlsZXMuZml4ZWQsIG93bmVyU3RhdGUuZGlzYWJsZUd1dHRlcnMgJiYgc3R5bGVzLmRpc2FibGVHdXR0ZXJzXTtcbiAgICB9XG4gIH0pLFxuICB1c2VUaGVtZVByb3BzOiBpblByb3BzID0+IHVzZVRoZW1lUHJvcHMoe1xuICAgIHByb3BzOiBpblByb3BzLFxuICAgIG5hbWU6ICdNdWlDb250YWluZXInXG4gIH0pXG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IENvbnRhaW5lci5wcm9wVHlwZXMgLyogcmVtb3ZlLXByb3B0eXBlcyAqLyA9IHtcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gV2FybmluZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvLyB8IFRoZXNlIFByb3BUeXBlcyBhcmUgZ2VuZXJhdGVkIGZyb20gdGhlIFR5cGVTY3JpcHQgdHlwZSBkZWZpbml0aW9ucyB8XG4gIC8vIHwgICAgIFRvIHVwZGF0ZSB0aGVtIGVkaXQgdGhlIGQudHMgZmlsZSBhbmQgcnVuIFwieWFybiBwcm9wdHlwZXNcIiAgICAgfFxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBjaGlsZHJlbjogUHJvcFR5cGVzLm5vZGUsXG4gIC8qKlxuICAgKiBPdmVycmlkZSBvciBleHRlbmQgdGhlIHN0eWxlcyBhcHBsaWVkIHRvIHRoZSBjb21wb25lbnQuXG4gICAqL1xuICBjbGFzc2VzOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIGNvbXBvbmVudCB1c2VkIGZvciB0aGUgcm9vdCBub2RlLlxuICAgKiBFaXRoZXIgYSBzdHJpbmcgdG8gdXNlIGEgSFRNTCBlbGVtZW50IG9yIGEgY29tcG9uZW50LlxuICAgKi9cbiAgY29tcG9uZW50OiBQcm9wVHlwZXMuZWxlbWVudFR5cGUsXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBsZWZ0IGFuZCByaWdodCBwYWRkaW5nIGlzIHJlbW92ZWQuXG4gICAqIEBkZWZhdWx0IGZhbHNlXG4gICAqL1xuICBkaXNhYmxlR3V0dGVyczogUHJvcFR5cGVzLmJvb2wsXG4gIC8qKlxuICAgKiBTZXQgdGhlIG1heC13aWR0aCB0byBtYXRjaCB0aGUgbWluLXdpZHRoIG9mIHRoZSBjdXJyZW50IGJyZWFrcG9pbnQuXG4gICAqIFRoaXMgaXMgdXNlZnVsIGlmIHlvdSdkIHByZWZlciB0byBkZXNpZ24gZm9yIGEgZml4ZWQgc2V0IG9mIHNpemVzXG4gICAqIGluc3RlYWQgb2YgdHJ5aW5nIHRvIGFjY29tbW9kYXRlIGEgZnVsbHkgZmx1aWQgdmlld3BvcnQuXG4gICAqIEl0J3MgZmx1aWQgYnkgZGVmYXVsdC5cbiAgICogQGRlZmF1bHQgZmFsc2VcbiAgICovXG4gIGZpeGVkOiBQcm9wVHlwZXMuYm9vbCxcbiAgLyoqXG4gICAqIERldGVybWluZSB0aGUgbWF4LXdpZHRoIG9mIHRoZSBjb250YWluZXIuXG4gICAqIFRoZSBjb250YWluZXIgd2lkdGggZ3Jvd3Mgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgc2NyZWVuLlxuICAgKiBTZXQgdG8gYGZhbHNlYCB0byBkaXNhYmxlIGBtYXhXaWR0aGAuXG4gICAqIEBkZWZhdWx0ICdsZydcbiAgICovXG4gIG1heFdpZHRoOiBQcm9wVHlwZXMgLyogQHR5cGVzY3JpcHQtdG8tcHJvcHR5cGVzLWlnbm9yZSAqLy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5vbmVPZihbJ3hzJywgJ3NtJywgJ21kJywgJ2xnJywgJ3hsJywgZmFsc2VdKSwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAvKipcbiAgICogVGhlIHN5c3RlbSBwcm9wIHRoYXQgYWxsb3dzIGRlZmluaW5nIHN5c3RlbSBvdmVycmlkZXMgYXMgd2VsbCBhcyBhZGRpdGlvbmFsIENTUyBzdHlsZXMuXG4gICAqL1xuICBzeDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmFycmF5T2YoUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLmZ1bmMsIFByb3BUeXBlcy5vYmplY3QsIFByb3BUeXBlcy5ib29sXSkpLCBQcm9wVHlwZXMuZnVuYywgUHJvcFR5cGVzLm9iamVjdF0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQ29udGFpbmVyOyIsIid1c2UgY2xpZW50JztcblxuaW1wb3J0IF9leHRlbmRzIGZyb20gXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2VzbS9leHRlbmRzXCI7XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHVzZVRoZW1lUHJvcHMgZnJvbSAnLi4vc3R5bGVzL3VzZVRoZW1lUHJvcHMnO1xuaW1wb3J0IEdsb2JhbFN0eWxlcyBmcm9tICcuLi9HbG9iYWxTdHlsZXMnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmltcG9ydCB7IGpzeHMgYXMgX2pzeHMgfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmV4cG9ydCBjb25zdCBodG1sID0gKHRoZW1lLCBlbmFibGVDb2xvclNjaGVtZSkgPT4gX2V4dGVuZHMoe1xuICBXZWJraXRGb250U21vb3RoaW5nOiAnYW50aWFsaWFzZWQnLFxuICAvLyBBbnRpYWxpYXNpbmcuXG4gIE1vek9zeEZvbnRTbW9vdGhpbmc6ICdncmF5c2NhbGUnLFxuICAvLyBBbnRpYWxpYXNpbmcuXG4gIC8vIENoYW5nZSBmcm9tIGBib3gtc2l6aW5nOiBjb250ZW50LWJveGAgc28gdGhhdCBgd2lkdGhgXG4gIC8vIGlzIG5vdCBhZmZlY3RlZCBieSBgcGFkZGluZ2Agb3IgYGJvcmRlcmAuXG4gIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAvLyBGaXggZm9udCByZXNpemUgcHJvYmxlbSBpbiBpT1NcbiAgV2Via2l0VGV4dFNpemVBZGp1c3Q6ICcxMDAlJ1xufSwgZW5hYmxlQ29sb3JTY2hlbWUgJiYgIXRoZW1lLnZhcnMgJiYge1xuICBjb2xvclNjaGVtZTogdGhlbWUucGFsZXR0ZS5tb2RlXG59KTtcbmV4cG9ydCBjb25zdCBib2R5ID0gdGhlbWUgPT4gX2V4dGVuZHMoe1xuICBjb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUudGV4dC5wcmltYXJ5XG59LCB0aGVtZS50eXBvZ3JhcGh5LmJvZHkxLCB7XG4gIGJhY2tncm91bmRDb2xvcjogKHRoZW1lLnZhcnMgfHwgdGhlbWUpLnBhbGV0dGUuYmFja2dyb3VuZC5kZWZhdWx0LFxuICAnQG1lZGlhIHByaW50Jzoge1xuICAgIC8vIFNhdmUgcHJpbnRlciBpbmsuXG4gICAgYmFja2dyb3VuZENvbG9yOiAodGhlbWUudmFycyB8fCB0aGVtZSkucGFsZXR0ZS5jb21tb24ud2hpdGVcbiAgfVxufSk7XG5leHBvcnQgY29uc3Qgc3R5bGVzID0gKHRoZW1lLCBlbmFibGVDb2xvclNjaGVtZSA9IGZhbHNlKSA9PiB7XG4gIHZhciBfdGhlbWUkY29tcG9uZW50cztcbiAgY29uc3QgY29sb3JTY2hlbWVTdHlsZXMgPSB7fTtcbiAgaWYgKGVuYWJsZUNvbG9yU2NoZW1lICYmIHRoZW1lLmNvbG9yU2NoZW1lcykge1xuICAgIE9iamVjdC5lbnRyaWVzKHRoZW1lLmNvbG9yU2NoZW1lcykuZm9yRWFjaCgoW2tleSwgc2NoZW1lXSkgPT4ge1xuICAgICAgdmFyIF9zY2hlbWUkcGFsZXR0ZTtcbiAgICAgIGNvbG9yU2NoZW1lU3R5bGVzW3RoZW1lLmdldENvbG9yU2NoZW1lU2VsZWN0b3Ioa2V5KS5yZXBsYWNlKC9cXHMqJi8sICcnKV0gPSB7XG4gICAgICAgIGNvbG9yU2NoZW1lOiAoX3NjaGVtZSRwYWxldHRlID0gc2NoZW1lLnBhbGV0dGUpID09IG51bGwgPyB2b2lkIDAgOiBfc2NoZW1lJHBhbGV0dGUubW9kZVxuICAgICAgfTtcbiAgICB9KTtcbiAgfVxuICBsZXQgZGVmYXVsdFN0eWxlcyA9IF9leHRlbmRzKHtcbiAgICBodG1sOiBodG1sKHRoZW1lLCBlbmFibGVDb2xvclNjaGVtZSksXG4gICAgJyosICo6OmJlZm9yZSwgKjo6YWZ0ZXInOiB7XG4gICAgICBib3hTaXppbmc6ICdpbmhlcml0J1xuICAgIH0sXG4gICAgJ3N0cm9uZywgYic6IHtcbiAgICAgIGZvbnRXZWlnaHQ6IHRoZW1lLnR5cG9ncmFwaHkuZm9udFdlaWdodEJvbGRcbiAgICB9LFxuICAgIGJvZHk6IF9leHRlbmRzKHtcbiAgICAgIG1hcmdpbjogMFxuICAgIH0sIGJvZHkodGhlbWUpLCB7XG4gICAgICAvLyBBZGQgc3VwcG9ydCBmb3IgZG9jdW1lbnQuYm9keS5yZXF1ZXN0RnVsbFNjcmVlbigpLlxuICAgICAgLy8gT3RoZXIgZWxlbWVudHMsIGlmIGJhY2tncm91bmQgdHJhbnNwYXJlbnQsIGFyZSBub3Qgc3VwcG9ydGVkLlxuICAgICAgJyY6OmJhY2tkcm9wJzoge1xuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICh0aGVtZS52YXJzIHx8IHRoZW1lKS5wYWxldHRlLmJhY2tncm91bmQuZGVmYXVsdFxuICAgICAgfVxuICAgIH0pXG4gIH0sIGNvbG9yU2NoZW1lU3R5bGVzKTtcbiAgY29uc3QgdGhlbWVPdmVycmlkZXMgPSAoX3RoZW1lJGNvbXBvbmVudHMgPSB0aGVtZS5jb21wb25lbnRzKSA9PSBudWxsIHx8IChfdGhlbWUkY29tcG9uZW50cyA9IF90aGVtZSRjb21wb25lbnRzLk11aUNzc0Jhc2VsaW5lKSA9PSBudWxsID8gdm9pZCAwIDogX3RoZW1lJGNvbXBvbmVudHMuc3R5bGVPdmVycmlkZXM7XG4gIGlmICh0aGVtZU92ZXJyaWRlcykge1xuICAgIGRlZmF1bHRTdHlsZXMgPSBbZGVmYXVsdFN0eWxlcywgdGhlbWVPdmVycmlkZXNdO1xuICB9XG4gIHJldHVybiBkZWZhdWx0U3R5bGVzO1xufTtcblxuLyoqXG4gKiBLaWNrc3RhcnQgYW4gZWxlZ2FudCwgY29uc2lzdGVudCwgYW5kIHNpbXBsZSBiYXNlbGluZSB0byBidWlsZCB1cG9uLlxuICovXG5mdW5jdGlvbiBDc3NCYXNlbGluZShpblByb3BzKSB7XG4gIGNvbnN0IHByb3BzID0gdXNlVGhlbWVQcm9wcyh7XG4gICAgcHJvcHM6IGluUHJvcHMsXG4gICAgbmFtZTogJ011aUNzc0Jhc2VsaW5lJ1xuICB9KTtcbiAgY29uc3Qge1xuICAgIGNoaWxkcmVuLFxuICAgIGVuYWJsZUNvbG9yU2NoZW1lID0gZmFsc2VcbiAgfSA9IHByb3BzO1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3hzKFJlYWN0LkZyYWdtZW50LCB7XG4gICAgY2hpbGRyZW46IFsvKiNfX1BVUkVfXyovX2pzeChHbG9iYWxTdHlsZXMsIHtcbiAgICAgIHN0eWxlczogdGhlbWUgPT4gc3R5bGVzKHRoZW1lLCBlbmFibGVDb2xvclNjaGVtZSlcbiAgICB9KSwgY2hpbGRyZW5dXG4gIH0pO1xufVxucHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gQ3NzQmFzZWxpbmUucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogWW91IGNhbiB3cmFwIGEgbm9kZS5cbiAgICovXG4gIGNoaWxkcmVuOiBQcm9wVHlwZXMubm9kZSxcbiAgLyoqXG4gICAqIEVuYWJsZSBgY29sb3Itc2NoZW1lYCBDU1MgcHJvcGVydHkgdG8gdXNlIGB0aGVtZS5wYWxldHRlLm1vZGVgLlxuICAgKiBGb3IgbW9yZSBkZXRhaWxzLCBjaGVjayBvdXQgaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQ1NTL2NvbG9yLXNjaGVtZVxuICAgKiBGb3IgYnJvd3NlciBzdXBwb3J0LCBjaGVjayBvdXQgaHR0cHM6Ly9jYW5pdXNlLmNvbS8/c2VhcmNoPWNvbG9yLXNjaGVtZVxuICAgKiBAZGVmYXVsdCBmYWxzZVxuICAgKi9cbiAgZW5hYmxlQ29sb3JTY2hlbWU6IFByb3BUeXBlcy5ib29sXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgQ3NzQmFzZWxpbmU7IiwiaW1wb3J0IHsgdW5zdGFibGVfZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyBhcyBnZW5lcmF0ZVV0aWxpdHlDbGFzc2VzIH0gZnJvbSAnQG11aS91dGlscyc7XG5pbXBvcnQgZ2VuZXJhdGVVdGlsaXR5Q2xhc3MgZnJvbSAnLi4vZ2VuZXJhdGVVdGlsaXR5Q2xhc3MnO1xuZXhwb3J0IGZ1bmN0aW9uIGdldERpdmlkZXJVdGlsaXR5Q2xhc3Moc2xvdCkge1xuICByZXR1cm4gZ2VuZXJhdGVVdGlsaXR5Q2xhc3MoJ011aURpdmlkZXInLCBzbG90KTtcbn1cbmNvbnN0IGRpdmlkZXJDbGFzc2VzID0gZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcygnTXVpRGl2aWRlcicsIFsncm9vdCcsICdhYnNvbHV0ZScsICdmdWxsV2lkdGgnLCAnaW5zZXQnLCAnbWlkZGxlJywgJ2ZsZXhJdGVtJywgJ2xpZ2h0JywgJ3ZlcnRpY2FsJywgJ3dpdGhDaGlsZHJlbicsICd3aXRoQ2hpbGRyZW5WZXJ0aWNhbCcsICd0ZXh0QWxpZ25SaWdodCcsICd0ZXh0QWxpZ25MZWZ0JywgJ3dyYXBwZXInLCAnd3JhcHBlclZlcnRpY2FsJ10pO1xuZXhwb3J0IGRlZmF1bHQgZGl2aWRlckNsYXNzZXM7IiwiJ3VzZSBjbGllbnQnO1xuXG5pbXBvcnQgX2V4dGVuZHMgZnJvbSBcIkBiYWJlbC9ydW50aW1lL2hlbHBlcnMvZXNtL2V4dGVuZHNcIjtcbmltcG9ydCBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSBmcm9tIFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZVwiO1xuY29uc3QgX2V4Y2x1ZGVkID0gW1wiYWRkRW5kTGlzdGVuZXJcIiwgXCJhcHBlYXJcIiwgXCJjaGlsZHJlblwiLCBcImVhc2luZ1wiLCBcImluXCIsIFwib25FbnRlclwiLCBcIm9uRW50ZXJlZFwiLCBcIm9uRW50ZXJpbmdcIiwgXCJvbkV4aXRcIiwgXCJvbkV4aXRlZFwiLCBcIm9uRXhpdGluZ1wiLCBcInN0eWxlXCIsIFwidGltZW91dFwiLCBcIlRyYW5zaXRpb25Db21wb25lbnRcIl07XG5pbXBvcnQgKiBhcyBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgVHJhbnNpdGlvbiB9IGZyb20gJ3JlYWN0LXRyYW5zaXRpb24tZ3JvdXAnO1xuaW1wb3J0IHsgZWxlbWVudEFjY2VwdGluZ1JlZiB9IGZyb20gJ0BtdWkvdXRpbHMnO1xuaW1wb3J0IHVzZVRoZW1lIGZyb20gJy4uL3N0eWxlcy91c2VUaGVtZSc7XG5pbXBvcnQgeyByZWZsb3csIGdldFRyYW5zaXRpb25Qcm9wcyB9IGZyb20gJy4uL3RyYW5zaXRpb25zL3V0aWxzJztcbmltcG9ydCB1c2VGb3JrUmVmIGZyb20gJy4uL3V0aWxzL3VzZUZvcmtSZWYnO1xuaW1wb3J0IHsganN4IGFzIF9qc3ggfSBmcm9tIFwicmVhY3QvanN4LXJ1bnRpbWVcIjtcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZW50ZXJpbmc6IHtcbiAgICBvcGFjaXR5OiAxXG4gIH0sXG4gIGVudGVyZWQ6IHtcbiAgICBvcGFjaXR5OiAxXG4gIH1cbn07XG5cbi8qKlxuICogVGhlIEZhZGUgdHJhbnNpdGlvbiBpcyB1c2VkIGJ5IHRoZSBbTW9kYWxdKC9tYXRlcmlhbC11aS9yZWFjdC1tb2RhbC8pIGNvbXBvbmVudC5cbiAqIEl0IHVzZXMgW3JlYWN0LXRyYW5zaXRpb24tZ3JvdXBdKGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXRyYW5zaXRpb24tZ3JvdXApIGludGVybmFsbHkuXG4gKi9cbmNvbnN0IEZhZGUgPSAvKiNfX1BVUkVfXyovUmVhY3QuZm9yd2FyZFJlZihmdW5jdGlvbiBGYWRlKHByb3BzLCByZWYpIHtcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICBjb25zdCBkZWZhdWx0VGltZW91dCA9IHtcbiAgICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlblxuICB9O1xuICBjb25zdCB7XG4gICAgICBhZGRFbmRMaXN0ZW5lcixcbiAgICAgIGFwcGVhciA9IHRydWUsXG4gICAgICBjaGlsZHJlbixcbiAgICAgIGVhc2luZyxcbiAgICAgIGluOiBpblByb3AsXG4gICAgICBvbkVudGVyLFxuICAgICAgb25FbnRlcmVkLFxuICAgICAgb25FbnRlcmluZyxcbiAgICAgIG9uRXhpdCxcbiAgICAgIG9uRXhpdGVkLFxuICAgICAgb25FeGl0aW5nLFxuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0ID0gZGVmYXVsdFRpbWVvdXQsXG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QvcHJvcC10eXBlc1xuICAgICAgVHJhbnNpdGlvbkNvbXBvbmVudCA9IFRyYW5zaXRpb25cbiAgICB9ID0gcHJvcHMsXG4gICAgb3RoZXIgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcbiAgY29uc3QgZW5hYmxlU3RyaWN0TW9kZUNvbXBhdCA9IHRydWU7XG4gIGNvbnN0IG5vZGVSZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gIGNvbnN0IGhhbmRsZVJlZiA9IHVzZUZvcmtSZWYobm9kZVJlZiwgY2hpbGRyZW4ucmVmLCByZWYpO1xuICBjb25zdCBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrID0gY2FsbGJhY2sgPT4gbWF5YmVJc0FwcGVhcmluZyA9PiB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjb25zdCBub2RlID0gbm9kZVJlZi5jdXJyZW50O1xuXG4gICAgICAvLyBvbkVudGVyWHh4IGFuZCBvbkV4aXRYeHggY2FsbGJhY2tzIGhhdmUgYSBkaWZmZXJlbnQgYXJndW1lbnRzLmxlbmd0aCB2YWx1ZS5cbiAgICAgIGlmIChtYXliZUlzQXBwZWFyaW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAgICAgY2FsbGJhY2sobm9kZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjYWxsYmFjayhub2RlLCBtYXliZUlzQXBwZWFyaW5nKTtcbiAgICAgIH1cbiAgICB9XG4gIH07XG4gIGNvbnN0IGhhbmRsZUVudGVyaW5nID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkVudGVyaW5nKTtcbiAgY29uc3QgaGFuZGxlRW50ZXIgPSBub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrKChub2RlLCBpc0FwcGVhcmluZykgPT4ge1xuICAgIHJlZmxvdyhub2RlKTsgLy8gU28gdGhlIGFuaW1hdGlvbiBhbHdheXMgc3RhcnQgZnJvbSB0aGUgc3RhcnQuXG5cbiAgICBjb25zdCB0cmFuc2l0aW9uUHJvcHMgPSBnZXRUcmFuc2l0aW9uUHJvcHMoe1xuICAgICAgc3R5bGUsXG4gICAgICB0aW1lb3V0LFxuICAgICAgZWFzaW5nXG4gICAgfSwge1xuICAgICAgbW9kZTogJ2VudGVyJ1xuICAgIH0pO1xuICAgIG5vZGUuc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnb3BhY2l0eScsIHRyYW5zaXRpb25Qcm9wcyk7XG4gICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBpZiAob25FbnRlcikge1xuICAgICAgb25FbnRlcihub2RlLCBpc0FwcGVhcmluZyk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRW50ZXJlZCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FbnRlcmVkKTtcbiAgY29uc3QgaGFuZGxlRXhpdGluZyA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sob25FeGl0aW5nKTtcbiAgY29uc3QgaGFuZGxlRXhpdCA9IG5vcm1hbGl6ZWRUcmFuc2l0aW9uQ2FsbGJhY2sobm9kZSA9PiB7XG4gICAgY29uc3QgdHJhbnNpdGlvblByb3BzID0gZ2V0VHJhbnNpdGlvblByb3BzKHtcbiAgICAgIHN0eWxlLFxuICAgICAgdGltZW91dCxcbiAgICAgIGVhc2luZ1xuICAgIH0sIHtcbiAgICAgIG1vZGU6ICdleGl0J1xuICAgIH0pO1xuICAgIG5vZGUuc3R5bGUud2Via2l0VHJhbnNpdGlvbiA9IHRoZW1lLnRyYW5zaXRpb25zLmNyZWF0ZSgnb3BhY2l0eScsIHRyYW5zaXRpb25Qcm9wcyk7XG4gICAgbm9kZS5zdHlsZS50cmFuc2l0aW9uID0gdGhlbWUudHJhbnNpdGlvbnMuY3JlYXRlKCdvcGFjaXR5JywgdHJhbnNpdGlvblByb3BzKTtcbiAgICBpZiAob25FeGl0KSB7XG4gICAgICBvbkV4aXQobm9kZSk7XG4gICAgfVxuICB9KTtcbiAgY29uc3QgaGFuZGxlRXhpdGVkID0gbm9ybWFsaXplZFRyYW5zaXRpb25DYWxsYmFjayhvbkV4aXRlZCk7XG4gIGNvbnN0IGhhbmRsZUFkZEVuZExpc3RlbmVyID0gbmV4dCA9PiB7XG4gICAgaWYgKGFkZEVuZExpc3RlbmVyKSB7XG4gICAgICAvLyBPbGQgY2FsbCBzaWduYXR1cmUgYmVmb3JlIGByZWFjdC10cmFuc2l0aW9uLWdyb3VwYCBpbXBsZW1lbnRlZCBgbm9kZVJlZmBcbiAgICAgIGFkZEVuZExpc3RlbmVyKG5vZGVSZWYuY3VycmVudCwgbmV4dCk7XG4gICAgfVxuICB9O1xuICByZXR1cm4gLyojX19QVVJFX18qL19qc3goVHJhbnNpdGlvbkNvbXBvbmVudCwgX2V4dGVuZHMoe1xuICAgIGFwcGVhcjogYXBwZWFyLFxuICAgIGluOiBpblByb3AsXG4gICAgbm9kZVJlZjogZW5hYmxlU3RyaWN0TW9kZUNvbXBhdCA/IG5vZGVSZWYgOiB1bmRlZmluZWQsXG4gICAgb25FbnRlcjogaGFuZGxlRW50ZXIsXG4gICAgb25FbnRlcmVkOiBoYW5kbGVFbnRlcmVkLFxuICAgIG9uRW50ZXJpbmc6IGhhbmRsZUVudGVyaW5nLFxuICAgIG9uRXhpdDogaGFuZGxlRXhpdCxcbiAgICBvbkV4aXRlZDogaGFuZGxlRXhpdGVkLFxuICAgIG9uRXhpdGluZzogaGFuZGxlRXhpdGluZyxcbiAgICBhZGRFbmRMaXN0ZW5lcjogaGFuZGxlQWRkRW5kTGlzdGVuZXIsXG4gICAgdGltZW91dDogdGltZW91dFxuICB9LCBvdGhlciwge1xuICAgIGNoaWxkcmVuOiAoc3RhdGUsIGNoaWxkUHJvcHMpID0+IHtcbiAgICAgIHJldHVybiAvKiNfX1BVUkVfXyovUmVhY3QuY2xvbmVFbGVtZW50KGNoaWxkcmVuLCBfZXh0ZW5kcyh7XG4gICAgICAgIHN0eWxlOiBfZXh0ZW5kcyh7XG4gICAgICAgICAgb3BhY2l0eTogMCxcbiAgICAgICAgICB2aXNpYmlsaXR5OiBzdGF0ZSA9PT0gJ2V4aXRlZCcgJiYgIWluUHJvcCA/ICdoaWRkZW4nIDogdW5kZWZpbmVkXG4gICAgICAgIH0sIHN0eWxlc1tzdGF0ZV0sIHN0eWxlLCBjaGlsZHJlbi5wcm9wcy5zdHlsZSksXG4gICAgICAgIHJlZjogaGFuZGxlUmVmXG4gICAgICB9LCBjaGlsZFByb3BzKSk7XG4gICAgfVxuICB9KSk7XG59KTtcbnByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IEZhZGUucHJvcFR5cGVzIC8qIHJlbW92ZS1wcm9wdHlwZXMgKi8gPSB7XG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIFdhcm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbiAgLy8gfCBUaGVzZSBQcm9wVHlwZXMgYXJlIGdlbmVyYXRlZCBmcm9tIHRoZSBUeXBlU2NyaXB0IHR5cGUgZGVmaW5pdGlvbnMgfFxuICAvLyB8ICAgICBUbyB1cGRhdGUgdGhlbSBlZGl0IHRoZSBkLnRzIGZpbGUgYW5kIHJ1biBcInlhcm4gcHJvcHR5cGVzXCIgICAgIHxcbiAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICAvKipcbiAgICogQWRkIGEgY3VzdG9tIHRyYW5zaXRpb24gZW5kIHRyaWdnZXIuIENhbGxlZCB3aXRoIHRoZSB0cmFuc2l0aW9uaW5nIERPTVxuICAgKiBub2RlIGFuZCBhIGRvbmUgY2FsbGJhY2suIEFsbG93cyBmb3IgbW9yZSBmaW5lIGdyYWluZWQgdHJhbnNpdGlvbiBlbmRcbiAgICogbG9naWMuIE5vdGU6IFRpbWVvdXRzIGFyZSBzdGlsbCB1c2VkIGFzIGEgZmFsbGJhY2sgaWYgcHJvdmlkZWQuXG4gICAqL1xuICBhZGRFbmRMaXN0ZW5lcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBQZXJmb3JtIHRoZSBlbnRlciB0cmFuc2l0aW9uIHdoZW4gaXQgZmlyc3QgbW91bnRzIGlmIGBpbmAgaXMgYWxzbyBgdHJ1ZWAuXG4gICAqIFNldCB0aGlzIHRvIGBmYWxzZWAgdG8gZGlzYWJsZSB0aGlzIGJlaGF2aW9yLlxuICAgKiBAZGVmYXVsdCB0cnVlXG4gICAqL1xuICBhcHBlYXI6IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQSBzaW5nbGUgY2hpbGQgY29udGVudCBlbGVtZW50LlxuICAgKi9cbiAgY2hpbGRyZW46IGVsZW1lbnRBY2NlcHRpbmdSZWYuaXNSZXF1aXJlZCxcbiAgLyoqXG4gICAqIFRoZSB0cmFuc2l0aW9uIHRpbWluZyBmdW5jdGlvbi5cbiAgICogWW91IG1heSBzcGVjaWZ5IGEgc2luZ2xlIGVhc2luZyBvciBhIG9iamVjdCBjb250YWluaW5nIGVudGVyIGFuZCBleGl0IHZhbHVlcy5cbiAgICovXG4gIGVhc2luZzogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBlbnRlcjogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBleGl0OiBQcm9wVHlwZXMuc3RyaW5nXG4gIH0pLCBQcm9wVHlwZXMuc3RyaW5nXSksXG4gIC8qKlxuICAgKiBJZiBgdHJ1ZWAsIHRoZSBjb21wb25lbnQgd2lsbCB0cmFuc2l0aW9uIGluLlxuICAgKi9cbiAgaW46IFByb3BUeXBlcy5ib29sLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcjogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkVudGVyZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FbnRlcmluZzogUHJvcFR5cGVzLmZ1bmMsXG4gIC8qKlxuICAgKiBAaWdub3JlXG4gICAqL1xuICBvbkV4aXQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0ZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAvKipcbiAgICogQGlnbm9yZVxuICAgKi9cbiAgb25FeGl0aW5nOiBQcm9wVHlwZXMuZnVuYyxcbiAgLyoqXG4gICAqIEBpZ25vcmVcbiAgICovXG4gIHN0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAvKipcbiAgICogVGhlIGR1cmF0aW9uIGZvciB0aGUgdHJhbnNpdGlvbiwgaW4gbWlsbGlzZWNvbmRzLlxuICAgKiBZb3UgbWF5IHNwZWNpZnkgYSBzaW5nbGUgdGltZW91dCBmb3IgYWxsIHRyYW5zaXRpb25zLCBvciBpbmRpdmlkdWFsbHkgd2l0aCBhbiBvYmplY3QuXG4gICAqIEBkZWZhdWx0IHtcbiAgICogICBlbnRlcjogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24uZW50ZXJpbmdTY3JlZW4sXG4gICAqICAgZXhpdDogdGhlbWUudHJhbnNpdGlvbnMuZHVyYXRpb24ubGVhdmluZ1NjcmVlbixcbiAgICogfVxuICAgKi9cbiAgdGltZW91dDogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICBhcHBlYXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZW50ZXI6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgZXhpdDogUHJvcFR5cGVzLm51bWJlclxuICB9KV0pXG59IDogdm9pZCAwO1xuZXhwb3J0IGRlZmF1bHQgRmFkZTsiXSwibmFtZXMiOlsiZGVmYXVsdFRoZW1lIiwiY3JlYXRlVGhlbWUiLCJjcmVhdGVCb3giLCJ0aGVtZUlkIiwiZGVmYXVsdENsYXNzTmFtZSIsInJvb3QiLCJnZW5lcmF0ZUNsYXNzTmFtZSIsIkNsYXNzTmFtZUdlbmVyYXRvciIsImdlbmVyYXRlIiwiZ2V0QnV0dG9uVXRpbGl0eUNsYXNzIiwic2xvdCIsImdlbmVyYXRlVXRpbGl0eUNsYXNzIiwiZ2VuZXJhdGVVdGlsaXR5Q2xhc3NlcyIsInVuZGVmaW5lZCIsIl9leGNsdWRlZCIsImNvbW1vbkljb25TdHlsZXMiLCJvd25lclN0YXRlIiwic2l6ZSIsImZvbnRTaXplIiwiQnV0dG9uUm9vdCIsInN0eWxlZCIsIkJ1dHRvbkJhc2UiLCJzaG91bGRGb3J3YXJkUHJvcCIsInByb3AiLCJuYW1lIiwib3ZlcnJpZGVzUmVzb2x2ZXIiLCJwcm9wcyIsInN0eWxlcyIsInZhcmlhbnQiLCJjYXBpdGFsaXplIiwiY29sb3IiLCJjb2xvckluaGVyaXQiLCJkaXNhYmxlRWxldmF0aW9uIiwiZnVsbFdpZHRoIiwidGhlbWUiLCJfdGhlbWUkcGFsZXR0ZSRnZXRDb24iLCJfdGhlbWUkcGFsZXR0ZSIsImluaGVyaXRDb250YWluZWRCYWNrZ3JvdW5kQ29sb3IiLCJwYWxldHRlIiwibW9kZSIsImdyZXkiLCJpbmhlcml0Q29udGFpbmVkSG92ZXJCYWNrZ3JvdW5kQ29sb3IiLCJBMTAwIiwidHlwb2dyYXBoeSIsImJ1dHRvbiIsIm1pbldpZHRoIiwicGFkZGluZyIsImJvcmRlclJhZGl1cyIsInZhcnMiLCJzaGFwZSIsInRyYW5zaXRpb24iLCJ0cmFuc2l0aW9ucyIsImNyZWF0ZSIsImR1cmF0aW9uIiwic2hvcnQiLCJ0ZXh0RGVjb3JhdGlvbiIsImJhY2tncm91bmRDb2xvciIsInRleHQiLCJwcmltYXJ5Q2hhbm5lbCIsImFjdGlvbiIsImhvdmVyT3BhY2l0eSIsInByaW1hcnkiLCJtYWluQ2hhbm5lbCIsIm1haW4iLCJib3JkZXIiLCJCdXR0b24iLCJpbmhlcml0Q29udGFpbmVkSG92ZXJCZyIsImJveFNoYWRvdyIsInNoYWRvd3MiLCJkYXJrIiwiZm9jdXNWaXNpYmxlIiwiZGlzYWJsZWQiLCJkaXNhYmxlZEJhY2tncm91bmQiLCJnZXRDb250cmFzdFRleHQiLCJjYWxsIiwiaW5oZXJpdENvbnRhaW5lZEJnIiwiY29udHJhc3RUZXh0IiwiYm9yZGVyQ29sb3IiLCJweFRvUmVtIiwid2lkdGgiLCJCdXR0b25TdGFydEljb24iLCJzdGFydEljb24iLCJkaXNwbGF5IiwibWFyZ2luUmlnaHQiLCJtYXJnaW5MZWZ0IiwiQnV0dG9uRW5kSWNvbiIsImVuZEljb24iLCJpblByb3BzIiwicmVmIiwiY29udGV4dFByb3BzIiwiYnV0dG9uR3JvdXBCdXR0b25Db250ZXh0UG9zaXRpb25DbGFzc05hbWUiLCJyZXNvbHZlZFByb3BzIiwicmVzb2x2ZVByb3BzIiwidXNlVGhlbWVQcm9wcyIsImNoaWxkcmVuIiwiY29tcG9uZW50IiwiY2xhc3NOYW1lIiwiZGlzYWJsZUZvY3VzUmlwcGxlIiwiZW5kSWNvblByb3AiLCJmb2N1c1Zpc2libGVDbGFzc05hbWUiLCJzdGFydEljb25Qcm9wIiwidHlwZSIsIm90aGVyIiwiY2xhc3NlcyIsInNsb3RzIiwibGFiZWwiLCJjb21wb3NlZENsYXNzZXMiLCJjb21wb3NlQ2xhc3NlcyIsInVzZVV0aWxpdHlDbGFzc2VzIiwicG9zaXRpb25DbGFzc05hbWUiLCJjbHN4IiwiZm9jdXNSaXBwbGUiLCJfdCIsIl90MiIsIl90MyIsIl90NCIsIl8iLCJ0IiwiZW50ZXJLZXlmcmFtZSIsImV4aXRLZXlmcmFtZSIsInB1bHNhdGVLZXlmcmFtZSIsIlRvdWNoUmlwcGxlUm9vdCIsIm92ZXJmbG93IiwicG9pbnRlckV2ZW50cyIsInBvc2l0aW9uIiwiekluZGV4IiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0IiwiVG91Y2hSaXBwbGVSaXBwbGUiLCJwdWxzYXRlIiwicmlwcGxlWCIsInJpcHBsZVkiLCJyaXBwbGVTaXplIiwiaW4iLCJpblByb3AiLCJvbkV4aXRlZCIsInRpbWVvdXQiLCJsZWF2aW5nIiwic2V0TGVhdmluZyIsInJpcHBsZUNsYXNzTmFtZSIsInJpcHBsZSIsInJpcHBsZVZpc2libGUiLCJyaXBwbGVQdWxzYXRlIiwicmlwcGxlU3R5bGVzIiwiaGVpZ2h0IiwiY2hpbGRDbGFzc05hbWUiLCJjaGlsZCIsImNoaWxkTGVhdmluZyIsImNoaWxkUHVsc2F0ZSIsInRpbWVvdXRJZCIsInNldFRpbWVvdXQiLCJjbGVhclRpbWVvdXQiLCJzdHlsZSIsImVhc2luZyIsImVhc2VJbk91dCIsInNob3J0ZXIiLCJjZW50ZXIiLCJjZW50ZXJQcm9wIiwicmlwcGxlcyIsInNldFJpcHBsZXMiLCJuZXh0S2V5IiwicmlwcGxlQ2FsbGJhY2siLCJjdXJyZW50IiwiaWdub3JpbmdNb3VzZURvd24iLCJzdGFydFRpbWVyIiwic3RhcnRUaW1lckNvbW1pdCIsImNvbnRhaW5lciIsInN0YXJ0Q29tbWl0IiwicGFyYW1zIiwiY2IiLCJvbGRSaXBwbGVzIiwic3RhcnQiLCJldmVudCIsIm9wdGlvbnMiLCJmYWtlRWxlbWVudCIsImVsZW1lbnQiLCJyZWN0IiwiZ2V0Qm91bmRpbmdDbGllbnRSZWN0IiwiY2xpZW50WCIsImNsaWVudFkiLCJ0b3VjaGVzIiwiTWF0aCIsInJvdW5kIiwibGVuZ3RoIiwic3FydCIsInNpemVYIiwibWF4IiwiYWJzIiwiY2xpZW50V2lkdGgiLCJzaXplWSIsImNsaWVudEhlaWdodCIsInN0b3AiLCJzbGljZSIsIlRyYW5zaXRpb25Hcm91cCIsImV4aXQiLCJnZXRCdXR0b25CYXNlVXRpbGl0eUNsYXNzIiwiQnV0dG9uQmFzZVJvb3QiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJib3hTaXppbmciLCJXZWJraXRUYXBIaWdobGlnaHRDb2xvciIsIm91dGxpbmUiLCJtYXJnaW4iLCJjdXJzb3IiLCJ1c2VyU2VsZWN0IiwidmVydGljYWxBbGlnbiIsIk1vekFwcGVhcmFuY2UiLCJXZWJraXRBcHBlYXJhbmNlIiwiYm9yZGVyU3R5bGUiLCJjb2xvckFkanVzdCIsImNlbnRlclJpcHBsZSIsImRpc2FibGVSaXBwbGUiLCJkaXNhYmxlVG91Y2hSaXBwbGUiLCJMaW5rQ29tcG9uZW50Iiwib25CbHVyIiwib25DbGljayIsIm9uQ29udGV4dE1lbnUiLCJvbkRyYWdMZWF2ZSIsIm9uRm9jdXMiLCJvbkZvY3VzVmlzaWJsZSIsIm9uS2V5RG93biIsIm9uS2V5VXAiLCJvbk1vdXNlRG93biIsIm9uTW91c2VMZWF2ZSIsIm9uTW91c2VVcCIsIm9uVG91Y2hFbmQiLCJvblRvdWNoTW92ZSIsIm9uVG91Y2hTdGFydCIsInRhYkluZGV4IiwiVG91Y2hSaXBwbGVQcm9wcyIsInRvdWNoUmlwcGxlUmVmIiwiYnV0dG9uUmVmIiwicmlwcGxlUmVmIiwiaGFuZGxlUmlwcGxlUmVmIiwidXNlRm9ya1JlZiIsImlzRm9jdXNWaXNpYmxlUmVmIiwiaGFuZGxlRm9jdXNWaXNpYmxlIiwiaGFuZGxlQmx1clZpc2libGUiLCJmb2N1c1Zpc2libGVSZWYiLCJ1c2VJc0ZvY3VzVmlzaWJsZSIsInNldEZvY3VzVmlzaWJsZSIsImZvY3VzIiwibW91bnRlZFN0YXRlIiwic2V0TW91bnRlZFN0YXRlIiwiZW5hYmxlVG91Y2hSaXBwbGUiLCJ1c2VSaXBwbGVIYW5kbGVyIiwicmlwcGxlQWN0aW9uIiwiZXZlbnRDYWxsYmFjayIsInNraXBSaXBwbGVBY3Rpb24iLCJ1c2VFdmVudENhbGxiYWNrIiwiaGFuZGxlTW91c2VEb3duIiwiaGFuZGxlQ29udGV4dE1lbnUiLCJoYW5kbGVEcmFnTGVhdmUiLCJoYW5kbGVNb3VzZVVwIiwiaGFuZGxlTW91c2VMZWF2ZSIsInByZXZlbnREZWZhdWx0IiwiaGFuZGxlVG91Y2hTdGFydCIsImhhbmRsZVRvdWNoRW5kIiwiaGFuZGxlVG91Y2hNb3ZlIiwiaGFuZGxlQmx1ciIsImhhbmRsZUZvY3VzIiwiY3VycmVudFRhcmdldCIsImlzTm9uTmF0aXZlQnV0dG9uIiwidGFnTmFtZSIsImhyZWYiLCJrZXlkb3duUmVmIiwiaGFuZGxlS2V5RG93biIsImtleSIsInRhcmdldCIsImhhbmRsZUtleVVwIiwiZGVmYXVsdFByZXZlbnRlZCIsIkNvbXBvbmVudFByb3AiLCJ0byIsImJ1dHRvblByb3BzIiwicm9sZSIsImhhbmRsZVJlZiIsImFzIiwiZ2V0Q2lyY3VsYXJQcm9ncmVzc1V0aWxpdHlDbGFzcyIsImNpcmN1bGFyUm90YXRlS2V5ZnJhbWUiLCJjaXJjdWxhckRhc2hLZXlmcmFtZSIsIkNpcmN1bGFyUHJvZ3Jlc3NSb290IiwiQ2lyY3VsYXJQcm9ncmVzc1NWRyIsInN2ZyIsIkNpcmN1bGFyUHJvZ3Jlc3NDaXJjbGUiLCJjaXJjbGUiLCJkaXNhYmxlU2hyaW5rIiwiY2lyY2xlRGlzYWJsZVNocmluayIsInN0cm9rZSIsInN0cm9rZURhc2hhcnJheSIsInN0cm9rZURhc2hvZmZzZXQiLCJ0aGlja25lc3MiLCJ2YWx1ZSIsImNpcmNsZVN0eWxlIiwicm9vdFN0eWxlIiwicm9vdFByb3BzIiwiY2lyY3VtZmVyZW5jZSIsIlBJIiwidG9GaXhlZCIsInRyYW5zZm9ybSIsInZpZXdCb3giLCJjeCIsImN5IiwiciIsImZpbGwiLCJzdHJva2VXaWR0aCIsImNyZWF0ZVN0eWxlZENvbXBvbmVudCIsIlN0cmluZyIsIm1heFdpZHRoIiwiZml4ZWQiLCJkaXNhYmxlR3V0dGVycyIsImh0bWwiLCJlbmFibGVDb2xvclNjaGVtZSIsIldlYmtpdEZvbnRTbW9vdGhpbmciLCJNb3pPc3hGb250U21vb3RoaW5nIiwiV2Via2l0VGV4dFNpemVBZGp1c3QiLCJjb2xvclNjaGVtZSIsImJvZHkiLCJib2R5MSIsImJhY2tncm91bmQiLCJkZWZhdWx0IiwiY29tbW9uIiwid2hpdGUiLCJfdGhlbWUkY29tcG9uZW50cyIsImNvbG9yU2NoZW1lU3R5bGVzIiwiY29sb3JTY2hlbWVzIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJzY2hlbWUiLCJfc2NoZW1lJHBhbGV0dGUiLCJnZXRDb2xvclNjaGVtZVNlbGVjdG9yIiwicmVwbGFjZSIsImRlZmF1bHRTdHlsZXMiLCJmb250V2VpZ2h0IiwiZm9udFdlaWdodEJvbGQiLCJ0aGVtZU92ZXJyaWRlcyIsImNvbXBvbmVudHMiLCJNdWlDc3NCYXNlbGluZSIsInN0eWxlT3ZlcnJpZGVzIiwiZW50ZXJpbmciLCJvcGFjaXR5IiwiZW50ZXJlZCIsImRlZmF1bHRUaW1lb3V0IiwiZW50ZXIiLCJlbnRlcmluZ1NjcmVlbiIsImxlYXZpbmdTY3JlZW4iLCJhZGRFbmRMaXN0ZW5lciIsImFwcGVhciIsIm9uRW50ZXIiLCJvbkVudGVyZWQiLCJvbkVudGVyaW5nIiwib25FeGl0Iiwib25FeGl0aW5nIiwiVHJhbnNpdGlvbkNvbXBvbmVudCIsIm5vZGVSZWYiLCJub3JtYWxpemVkVHJhbnNpdGlvbkNhbGxiYWNrIiwiY2FsbGJhY2siLCJtYXliZUlzQXBwZWFyaW5nIiwibm9kZSIsImhhbmRsZUVudGVyaW5nIiwiaGFuZGxlRW50ZXIiLCJpc0FwcGVhcmluZyIsInRyYW5zaXRpb25Qcm9wcyIsIndlYmtpdFRyYW5zaXRpb24iLCJoYW5kbGVFbnRlcmVkIiwiaGFuZGxlRXhpdGluZyIsImhhbmRsZUV4aXQiLCJoYW5kbGVFeGl0ZWQiLCJuZXh0Iiwic3RhdGUiLCJjaGlsZFByb3BzIiwidmlzaWJpbGl0eSJdLCJzb3VyY2VSb290IjoiIn0=